diff --git a/.idea/go.iml b/.idea/go.iml index d1513990f..ef3c3f44e 100644 --- a/.idea/go.iml +++ b/.idea/go.iml @@ -5,6 +5,7 @@ + diff --git a/certs/server.crt b/certs/server.crt deleted file mode 100644 index 746b3cbf3..000000000 --- a/certs/server.crt +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE2DCCAsCgAwIBAgIJAMb93LazWApIMA0GCSqGSIb3DQEBCwUAMBcxFTATBgNV -BAMMDHN0YXNoLnNlcnZlcjAeFw0xOTAxMjcyMzIxMzBaFw0zOTAxMjIyMzIxMzBa -MBcxFTATBgNVBAMMDHN0YXNoLnNlcnZlcjCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAKLLRxjZ/K0zO5GaQPIEFYOkRMJs/HG0CRP7z+5ZF2E8Z9USkDO5 -bDlJTTTt1oal2m0g3phijXc0lqTmH873iHK5RqLAGZxJhmEAtEfaPeNyM7T+9MEW -3JJIgrunjylu+4eYwcbaTY7mlCOxAwfwuRft8ypfZkofJjcVGM5xdydMCtNur84q -DoHhembcYMZAbaWp4u9mu+1HhpkNZ/qCHbSeYcbsvHUmMS/2tgASn/7fvajUCGhf -BRTSX1cYpZCn0JyNaOZj2pgMXao0qOTD4SEVlZFG70jBwZJW1Lqxtbvwfl5EFxH2 -D01qFU0jKzGcyCaye1v/eSIIq/qQsqGStqSqRhmeWfEgNE/Ke4+tXfUEpUGSI2ps -40aPnSipkO/MA+uNT7jLZR4ASPZocW6wq5NVyn4jfrh1hJZhcOEV6Wj/9j0yKH1F -L223tZ0UbjQauTFQou30ga4PlkreElQe+OSlryDO153DKqcFIkHg70awCuCWbvLq -3QF+s09JvdWpJl960UUK9sXpSaY/Y+sEHbN0xJOekw5jTWOoRschfyWZXAYlVbgF -H9QDvx+Cap7lJJEsDT/er/8N30WIlgG/wWaHrJUZkATRw3g9wTQiXaTGbMT/4GVR -mCpYgpk17i+nHJqmHQOHMB7Q6HlQiOtPTse/GJyY1+OGkoYM0SrQC7UvAgMBAAGj -JzAlMCMGA1UdEQQcMBqCDHN0YXNoLnNlcnZlcocEfwAAAYcEwKgByDANBgkqhkiG -9w0BAQsFAAOCAgEAd8W/VUR6eAcs4QBUHzWHzxbO5CFuq9akVkI4REbaEcgsho8I -j6g9EYIDKBnPKRVE1YBeQv4ZGWQq8wL9EEJYqMqhZ4jaVZTqfoOkeaFPxgxtXDkb -KIt0xPGLQiX4nuNKMjT9mDR0VHXNpcsZHpnz+t4ra26Aw/rMuH6ycyGia6eTZ4tN -frEjf5Fgu0EQXbF5/PdiveqIoUaOlUr5vCM1Nqn0sZF9CF9fe/i2BLl3GxmAMh5u -WQ16mu9Se+gD+kJ9o6JynuKMXosgxFkmryPPkwi6UlDMk9RnXX19G15vlY9Tdbv3 -0vXoga7Tn+hCJyAd8WMnxGbgtOf1BE/6fZkbWXB5kPfs1GAaVnl6J4WlQTzQdr5P -kl8uxGsWefM0ahZElhcJPZSL90QfFplpw0l+AHZ8jbl6uGxmXSMF+4JPsPHem/GA -LY9DuQoNAvHHYLvHbVu67nN+9kbOKNQH44PwVo9b8zzX0A1l6SBLuxog/s9Egbtw -9IRPls66b/znYj2YZE89zNyHiZxnrzweslrEC9as5cSUL8wraxgUYUZ3Ry7jXgaX -H/ImI7HkkZoAb3ku/q+fl4gpc0ZB5lCa1wXIktjKCKZ0xGBZbehm0vBJGJCn+OCb -IJ0OEhPH7deV4iT11jLJqbfvdlfg/tmfcTvLcnbuf+0kxOsHHUVqEXiRQ6A= ------END CERTIFICATE----- diff --git a/certs/server.key b/certs/server.key deleted file mode 100644 index dd3ea1933..000000000 --- a/certs/server.key +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIJKQIBAAKCAgEAostHGNn8rTM7kZpA8gQVg6REwmz8cbQJE/vP7lkXYTxn1RKQ -M7lsOUlNNO3WhqXabSDemGKNdzSWpOYfzveIcrlGosAZnEmGYQC0R9o943IztP70 -wRbckkiCu6ePKW77h5jBxtpNjuaUI7EDB/C5F+3zKl9mSh8mNxUYznF3J0wK026v -zioOgeF6ZtxgxkBtpani72a77UeGmQ1n+oIdtJ5hxuy8dSYxL/a2ABKf/t+9qNQI -aF8FFNJfVxilkKfQnI1o5mPamAxdqjSo5MPhIRWVkUbvSMHBklbUurG1u/B+XkQX -EfYPTWoVTSMrMZzIJrJ7W/95Igir+pCyoZK2pKpGGZ5Z8SA0T8p7j61d9QSlQZIj -amzjRo+dKKmQ78wD641PuMtlHgBI9mhxbrCrk1XKfiN+uHWElmFw4RXpaP/2PTIo -fUUvbbe1nRRuNBq5MVCi7fSBrg+WSt4SVB745KWvIM7XncMqpwUiQeDvRrAK4JZu -8urdAX6zT0m91akmX3rRRQr2xelJpj9j6wQds3TEk56TDmNNY6hGxyF/JZlcBiVV -uAUf1AO/H4JqnuUkkSwNP96v/w3fRYiWAb/BZoeslRmQBNHDeD3BNCJdpMZsxP/g -ZVGYKliCmTXuL6ccmqYdA4cwHtDoeVCI609Ox78YnJjX44aShgzRKtALtS8CAwEA -AQKCAgBiW0b9cNcFHisjcXtDvcvx2VHh1k8/s3K4rC+Y5iMGEKT7S1fsqF8GzY7k -J76xY4tw26chkom+N/u8bX1SYqQCDIbs1fujPZj/Cpnhv64cuWccN95QuytRBpZW -IoqQkglOh7CsIEEz0YQ3fD9EkOCD4LRGKZV3uxIvvYNbV5qSF5OC4yE9ApP5TO3T -L9sYbNzSdq4xznREjC56Ums8I1knQ3n34hiK/yRAwmJ78MTSDQRd+J2L0b0UM3Z+ -/NkraPjVXWq/qBzuOKpup5pTfTWL86qGN8FiyA3YCLZGhhAzGL6A3crCg1QDhdCQ -5mq2cu9K0hNOJjBdq7ecj8gdbrMCG13McfQk+eZY9L7yi43HwmD1ziZ1KQuMLhaQ -C92aZWd1EaMWfMjq+WzAMJzVel1sotcVbiBH724f1TSdIu03hoIHtL1OgSP5m5f8 -IHC64mOzQi/1RUreBfjEUs3EPYf5eETjgBf4G5bzmmtn+lkDQUkAKqBbL5cxrt36 -hWx+YESm8ohZIowjB6N21EGz01SmV5f7B+j5Wt8XpBqOzNeh/arFOAfVJE1JH7iJ -IPMQf+kUZ40k4pk4ImRdSSb/CxogUxUtCMs7vJJ0k8aQ61IhuMK62wYSmxNisn3Z -vjuem7d6aJg/6RMDBeqhKuBTHx6jYqZX8IyjRFAwg84LBUEwoQKCAQEAzZwfpOIQ -lGMQsSrWqlP8fTNQvPtGhJZN8iiQLA29VYMfZvig61xKnJ8IIW6Sth/V3eJtKwZr -UhxK6PJh5XlVehmpjtCGrlUj34OrvD+MWL/vazkRYORhd6nWjz52EUrUfv0dqU+N -rN41qai3QWiQrZED07NBiZAEah5H7OcGGUFHD0p6ktOUtOZiAK/GXHWRDgx2GQ7r -oo4H2jZVNiUFuYs0urgsNkHic7hq51D+oZoihHZZBVgGrwFEOmGjj43ylcNUa6B7 -jbdVSnPvjyUFHmS9eIoajeG5IQ9tMJ6qljiG1mKaHdzUywviIPMoRMfSFvgBceJe -TxVNLpfbV5hFzQKCAQEAyrDokk3cDxfa3eMMyTYRj8spI2Kd7HxQqW/z5NfaIKHH -xauHfi32xzSP7UrECVHX5ZXt67wzEnR67ijhkXQsHmGDywi0HDPudC32QV38VFtx -FKQhYptJVFstWPpAaHoqhysR7tAIgztnzkDP+LcPoTXdJqhPpqUkJLIjtdwWd/Qm -1HnPi5Otn9MtimVek8rUTIG89N/bdGBhSu8KFyvJ7dp4scdUirT/AQDHHOVtw3dE -XhT45tr9wJFNiNR/y1WyZFZVnUDkYEYO5L9c7JPoLac7wccCrpI5oPXE/Tutxpqk -yfGl5GffwNPUXR3vHLjbAuo0Bl7G0goH8E9nSxAq6wKCAQEAr5HzS35mne8B3+cu -qv9QiTB6bwU6MBmQsYmForiQxiZTeEAyWQfUBm2eKb4btTz2CKRCiAzRM6pJJSVk -BulW3g5vxS2288JsAX6T9QlmtJogvTRb7JrXx7DVMDgr5ZQ6Y72LyHnQBp8wv5D7 -+vRpJmzAEdPt0KOTwXHeBSM5B/O/1ATLKflV8CsR4Hg4L9eMZ6yoY7lj6MjTV7gx -hyyR+OAvxIlj52jXD+2YC7IT3LabZvUQCwohmuq/8gJSAlE5pjzHJ6hAGMFGKW9a -TqdT+aIYUIfNKP5ocRyVJoE2NVRLf2FvLLTXWBLroys/ZYwjj81ynmaoFWuhHno5 -qFC0uQKCAQEAxC8RHLLhwXYccNHXyVVdECnbCpXkN0ZoKGfk0GYgiZ8tJmWNApNo -nY2BlXLdZgvihSRmIdqKMF2vsp69HbUtEsbd8oHdGsMlFSx7gu9+UQQk4o6uhau6 -AT0zGkE2YCmGykfk1ppi8upn4hmXcqt1JFtnT4hvd+O1pRMLP3XkBXy6rMOuH/Hz -hpO3K5JMRY53iAm3I+kcl3rGEOpngN/wVhk04xYE/TCM9aKUFqL2Z9Ajy1BPTds+ -6sl5G2xauSucPEPYIBn0Mj79IWkbfxz2CGIqk7eVH/UGdIYNgfHmlCmQQKp1ICtu -RkyB6xMTImDGEv8vFc9cb2YoIvAoEV53uwKCAQAz2wA/UOU49TPtvlDHJKA+9FpF -runF8DIfk5Nxl729YbqmI4b/bS2CGk5bv1jl3g3LTaQ+hTDmBC+MbnLplzBYq8m4 -z4vBB3ckCySBhFEjwt7Or0sxlNVixKk50zX+jQ0aoJEGnKnGNmmqsfV234ZIKkLx -WKh65Uj0Z1A1pSsfPIVGPx2WfKttGPO1QtAY1DRKS6EP9Ri6sZ2QpFvUEfkzMQ2G -e1cGQQxP4tiJTyxLptIBDCtDoNSzmi9+y5ZoS2BgDCnYdn0Hxjfyxx5Rd17ES5xH -zvodt4WKqtqdxPbmEYa09k5wCflcVnYoAQiUayyRRtj3zKAuxJQ6oTF6Fgzq ------END RSA PRIVATE KEY----- diff --git a/go.mod b/go.mod index 9d181b6c3..e865c77a8 100644 --- a/go.mod +++ b/go.mod @@ -1,23 +1,24 @@ module github.com/stashapp/stash require ( - github.com/99designs/gqlgen v0.8.2 + github.com/99designs/gqlgen v0.9.0 github.com/PuerkitoBio/goquery v1.5.0 github.com/bmatcuk/doublestar v1.1.1 github.com/disintegration/imaging v1.6.0 github.com/fsnotify/fsnotify v1.4.7 - github.com/go-chi/chi v4.0.1+incompatible - github.com/gobuffalo/packr/v2 v2.0.0-rc.15 - github.com/golang-migrate/migrate/v4 v4.2.2 - github.com/gorilla/websocket v1.2.0 - github.com/h2non/filetype v1.0.6 + github.com/go-chi/chi v4.0.2+incompatible + github.com/gobuffalo/packr/v2 v2.0.2 + github.com/golang-migrate/migrate/v4 v4.3.1 + github.com/gorilla/websocket v1.4.0 + github.com/h2non/filetype v1.0.8 + github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/jmoiron/sqlx v1.2.0 - github.com/mattn/go-sqlite3 v1.9.0 + github.com/mattn/go-sqlite3 v1.10.0 + github.com/microcosm-cc/bluemonday v1.0.2 // indirect github.com/rs/cors v1.6.0 - github.com/sirupsen/logrus v1.3.0 - github.com/spf13/afero v1.2.0 // indirect + github.com/sirupsen/logrus v1.4.2 github.com/spf13/pflag v1.0.3 - github.com/spf13/viper v1.3.2 + github.com/spf13/viper v1.4.0 github.com/vektah/gqlparser v1.1.2 golang.org/x/image v0.0.0-20190118043309-183bebdce1b2 // indirect ) diff --git a/go.sum b/go.sum index 24f148aca..f24b92937 100644 --- a/go.sum +++ b/go.sum @@ -1,42 +1,66 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.28.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.36.0/go.mod h1:RUoy9p/M4ge0HzT8L+SDZ8jg+Q6fth0CiBuhFJpSV40= +cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw= contrib.go.opencensus.io/exporter/stackdriver v0.6.0/go.mod h1:QeFzMJDAw8TXt5+aRaSuE8l5BwaMIOIlaVkBOPRuMuw= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= git.apache.org/thrift.git v0.0.0-20180924222215-a9235805469b/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/99designs/gqlgen v0.4.5-0.20190127090136-055fb4bc9a6a h1:oTsAt8YXjEk1fo7uZR7gya1jrH48oPulx5oF6zWTHRw= github.com/99designs/gqlgen v0.4.5-0.20190127090136-055fb4bc9a6a/go.mod h1:st7qHA6ssU3uRZkmv+wzrzgX4srvIqEIdE5iuRW8GhE= github.com/99designs/gqlgen v0.8.2 h1:xOkDPWn/MZjkQ32pu6Axx15mNah0NAq9WalFqT+RavA= github.com/99designs/gqlgen v0.8.2/go.mod h1:aLyJw9xUgdJxZ8EqNQxo2pGFhXXJ/hq8t7J4yn8TgI4= +github.com/99designs/gqlgen v0.9.0 h1:g1arBPML74Vqv0L3Q+TqIhGXLspV+2MYtRLkBxuZrlE= +github.com/99designs/gqlgen v0.9.0/go.mod h1:HrrG7ic9EgLPsULxsZh/Ti+p0HNWgR3XRuvnD0pb5KY= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PuerkitoBio/goquery v1.5.0 h1:uGvmFXOA73IKluu/F84Xd1tt/z07GYm8X49XKHP7EJk= github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/agnivade/levenshtein v1.0.1 h1:3oJU7J3FGFmyhn8KHjmVaZCN5hxTr7GxgRue+sxIXdQ= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/ajg/form v0.0.0-20160822230020-523a5da1a92f/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andybalholm/cascadia v1.0.0 h1:hOCXnnZ5A+3eVDX8pvgl4kofXv2ELss0bKcqRySc45o= github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/aws/aws-sdk-go v1.15.54/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/aws/aws-sdk-go v1.17.7/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k= github.com/bmatcuk/doublestar v1.1.1 h1:YroD6BJCZBYx06yYFEWvUuKVWQn3vLLQAVmDmvTSaiQ= github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= github.com/codegangsta/negroni v1.0.0/go.mod h1:v0y3T5G7Y1UlFfyxFn/QLRU4a2EuNau2iZY63YTKWo0= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cznic/b v0.0.0-20180115125044-35e9bbe41f07/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8= github.com/cznic/fileutil v0.0.0-20180108211300-6a051e75936f/go.mod h1:8S58EK26zhXSxzv7NQFpnliaOQsmDUxvoQO3rt154Vg= github.com/cznic/golex v0.0.0-20170803123110-4ab7c5e190e4/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc= @@ -51,6 +75,7 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dhui/dktest v0.3.0/go.mod h1:cyzIUfGsBEbZ6BT7tnXqAShHSXCZhSNmFl70sZ7c1yc= github.com/disintegration/imaging v1.6.0 h1:nVPXRUUQ36Z7MNf0O77UzgnOb1mkMMor7lmJMJXc/mA= github.com/disintegration/imaging v1.6.0/go.mod h1:xuIt+sRxDFrHS0drzXUlCJthkJ8k7lkkUojDSR247MQ= @@ -61,22 +86,35 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v0.0.0-20180713052910-9f541cc9db5d/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsouza/fake-gcs-server v1.3.0/go.mod h1:Lq+43m2znsXfDKHnQMfdA0HpYYAEJsfizsbpk5k3TLo= +github.com/fsouza/fake-gcs-server v1.7.0/go.mod h1:5XIRs4YvwNbNoz+1JF8j6KLAyDh7RHGAyAK3EP2EsNk= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-chi/chi v3.3.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/chi v4.0.1+incompatible h1:RSRC5qmFPtO90t7pTL0DBMNpZFsb/sHF3RXVlDgFisA= github.com/go-chi/chi v4.0.1+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs= +github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-ini/ini v1.39.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobuffalo/attrs v0.0.0-20190219185331-f338c9388485/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= github.com/gobuffalo/buffalo v0.12.8-0.20181004233540-fac9bb505aa8/go.mod h1:sLyT7/dceRXJUxSsE813JTQtA3Eb1vjxWfo/N//vXIY= github.com/gobuffalo/buffalo v0.13.0/go.mod h1:Mjn1Ba9wpIbpbrD+lIDMy99pQ0H0LiddMIIDGse7qT4= github.com/gobuffalo/buffalo-plugins v1.0.2/go.mod h1:pOp/uF7X3IShFHyobahTkTLZaeUXwb0GrUTb9ngJWTs= @@ -94,7 +132,10 @@ github.com/gobuffalo/buffalo-plugins v1.9.4/go.mod h1:grCV6DGsQlVzQwk6XdgcL3ZPgL github.com/gobuffalo/buffalo-plugins v1.10.0/go.mod h1:4osg8d9s60txLuGwXnqH+RCjPHj9K466cDFRl3PErHI= github.com/gobuffalo/buffalo-plugins v1.11.0 h1:yZ6USaSdAKpogRS8DZJgeG7/CTPGmyhplwifphmmegw= github.com/gobuffalo/buffalo-plugins v1.11.0/go.mod h1:rtIvAYRjYibgmWhnjKmo7OadtnxuMG5ZQLr25ozAzjg= +github.com/gobuffalo/buffalo-plugins v1.12.0 h1:5rvYQ7mwfPwUW9zqcMd9ahWtPVOOouMKZjv88q45Z7c= +github.com/gobuffalo/buffalo-plugins v1.12.0/go.mod h1:kw4Mj2vQXqe4X5TI36PEQgswbL30heGQwJEeDKd1v+4= github.com/gobuffalo/buffalo-pop v1.0.5/go.mod h1:Fw/LfFDnSmB/vvQXPvcXEjzP98Tc+AudyNWUBWKCwQ8= +github.com/gobuffalo/depgen v0.0.0-20190219190223-ba8c93fa0c2c/go.mod h1:CE/HUV4vDCXtJayRf6WoMWgezb1yH4QHg8GNK8FL0JI= github.com/gobuffalo/envy v1.6.4/go.mod h1:Abh+Jfw475/NWtYMEt+hnJWRiC8INKWibIMyNt1w2Mc= github.com/gobuffalo/envy v1.6.5/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= github.com/gobuffalo/envy v1.6.6/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= @@ -105,6 +146,9 @@ github.com/gobuffalo/envy v1.6.10/go.mod h1:X0CFllQjTV5ogsnUrg+Oks2yTI+PU2dGYBJO github.com/gobuffalo/envy v1.6.11/go.mod h1:Fiq52W7nrHGDggFPhn2ZCcHw4u/rqXkqo+i7FB6EAcg= github.com/gobuffalo/envy v1.6.12 h1:zkhss8DXz/pty2HAyA8BnvWMTYxo4gjd4+WCnYovoxY= github.com/gobuffalo/envy v1.6.12/go.mod h1:qJNrJhKkZpEW0glh5xP2syQHH5kgdmgsKss2Kk8PTP0= +github.com/gobuffalo/envy v1.6.13/go.mod h1:w9DJppgl51JwUFWWd/M/6/otrPtWV3WYMa+NNLunqKA= +github.com/gobuffalo/envy v1.6.15 h1:OsV5vOpHYUpP7ZLS6sem1y40/lNX1BZj+ynMiRi21lQ= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= github.com/gobuffalo/events v1.0.3/go.mod h1:Txo8WmqScapa7zimEQIwgiJBvMECMe9gJjsKNPN3uZw= github.com/gobuffalo/events v1.0.7/go.mod h1:z8txf6H9jWhQ5Scr7YPLWg/cgXBRj8Q4uYI+rsVCCSQ= github.com/gobuffalo/events v1.0.8/go.mod h1:A5KyqT1sA+3GJiBE4QKZibse9mtOcI9nw8gGrDdqYGs= @@ -115,6 +159,8 @@ github.com/gobuffalo/events v1.1.7/go.mod h1:6fGqxH2ing5XMb3EYRq9LEkVlyPGs4oO/eL github.com/gobuffalo/events v1.1.8/go.mod h1:UFy+W6X6VbCWS8k2iT81HYX65dMtiuVycMy04cplt/8= github.com/gobuffalo/events v1.1.9 h1:ukq5ys/h0TuiX7eLJyZBD1dJOy0r19JTEYmgXKG9j+Y= github.com/gobuffalo/events v1.1.9/go.mod h1:/0nf8lMtP5TkgNbzYxR6Bl4GzBy5s5TebgNTdRfRbPM= +github.com/gobuffalo/events v1.2.0 h1:YovlMNcwNTfIm/3OdB+KemDOm8yUz4XIH+4kbMhGXWw= +github.com/gobuffalo/events v1.2.0/go.mod h1:pxvpvsKXKZNPtHuIxUV3K+g+KP5o4forzaeFj++bh68= github.com/gobuffalo/fizz v1.0.12/go.mod h1:C0sltPxpYK8Ftvf64kbsQa2yiCZY4RZviurNxXdAKwc= github.com/gobuffalo/flect v0.0.0-20180907193754-dc14d8acaf9f/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= github.com/gobuffalo/flect v0.0.0-20181002182613-4571df4b1daf/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= @@ -128,6 +174,8 @@ github.com/gobuffalo/flect v0.0.0-20181210151238-24a2b68e0316/go.mod h1:en58vff7 github.com/gobuffalo/flect v0.0.0-20190104192022-4af577e09bf2/go.mod h1:en58vff74S9b99Eg42Dr+/9yPu437QjlNsO/hBYPuOk= github.com/gobuffalo/flect v0.0.0-20190117212819-a62e61d96794 h1:HZOs07hF3AmoaUj4HJQHV5RqfOuGnPZI7aFcireIrww= github.com/gobuffalo/flect v0.0.0-20190117212819-a62e61d96794/go.mod h1:397QT6v05LkZkn07oJXXT6y9FCfwC8Pug0WA2/2mE9k= +github.com/gobuffalo/flect v0.1.0 h1:EJvbvZlo9exJk5UK02lz5pTs3XEpIM5/4o691KfvtkM= +github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= github.com/gobuffalo/genny v0.0.0-20180924032338-7af3a40f2252/go.mod h1:tUTQOogrr7tAQnhajMSH6rv1BVev34H2sa1xNHMy94g= github.com/gobuffalo/genny v0.0.0-20181003150629-3786a0744c5d/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= github.com/gobuffalo/genny v0.0.0-20181005145118-318a41a134cc/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= @@ -152,9 +200,18 @@ github.com/gobuffalo/genny v0.0.0-20181211165820-e26c8466f14d/go.mod h1:sHnK+ZSU github.com/gobuffalo/genny v0.0.0-20190104222617-a71664fc38e7/go.mod h1:QPsQ1FnhEsiU8f+O0qKWXz2RE4TiDqLVChWkBuh1WaY= github.com/gobuffalo/genny v0.0.0-20190112155932-f31a84fcacf5 h1:boQS3dA9PxhyufJEWIILrG6pJQbDnpwP2rFyvWacdoY= github.com/gobuffalo/genny v0.0.0-20190112155932-f31a84fcacf5/go.mod h1:CIaHCrSIuJ4il6ka3Hub4DR4adDrGoXGEEt2FbBxoIo= +github.com/gobuffalo/genny v0.0.0-20190124191459-3310289fa4b4/go.mod h1:yIRqxhZV2sAzb+B3iPUMLauTRrYP8tJUlZ1zV9teKik= +github.com/gobuffalo/genny v0.0.0-20190131150032-1045e97d19fb/go.mod h1:yIRqxhZV2sAzb+B3iPUMLauTRrYP8tJUlZ1zV9teKik= +github.com/gobuffalo/genny v0.0.0-20190131190646-008a76242145/go.mod h1:NJvPZJxb9M4z790P6N2SMZKSUYpASpEvLuUWnHGKzb4= +github.com/gobuffalo/genny v0.0.0-20190219203444-c95082806342 h1:ewzWZ+TT9/3wYSnUPQRU7YFzqWAx4dgUXdgvJVTVLCA= +github.com/gobuffalo/genny v0.0.0-20190219203444-c95082806342/go.mod h1:3BLT+Vs94EEz3fKR8WWOkYpL6c1tdJcZUNCe3LZAnvQ= +github.com/gobuffalo/gitgen v0.0.0-20190219185555-91c2c5f0aad5/go.mod h1:ZzGIrxBvCJEluaU4i3CN0GFlu1Qmb3yK8ziV02evJ1E= github.com/gobuffalo/github_flavored_markdown v1.0.4/go.mod h1:uRowCdK+q8d/RF0Kt3/DSalaIXbb0De/dmTqMQdkQ4I= github.com/gobuffalo/github_flavored_markdown v1.0.5/go.mod h1:U0643QShPF+OF2tJvYNiYDLDGDuQmJZXsf/bHOJPsMY= github.com/gobuffalo/github_flavored_markdown v1.0.7/go.mod h1:w93Pd9Lz6LvyQXEG6DktTPHkOtCbr+arAD5mkwMzXLI= +github.com/gobuffalo/gogen v0.0.0-20190219194924-d32a17ad9761/go.mod h1:v47C8sid+ZM2qK+YpQ2MGJKssKAqyTsH1wl/pTCPdz8= +github.com/gobuffalo/gogen v0.0.0-20190224213239-1c6076128bbc h1:GjmMs2PLx+rH9In421AR1RkHV5AG9lLnRpIPhWauvoI= +github.com/gobuffalo/gogen v0.0.0-20190224213239-1c6076128bbc/go.mod h1:tQqPADZKflmJCR4FHRHYNPP79cXPICyxUiUHyhuXtqg= github.com/gobuffalo/httptest v1.0.2/go.mod h1:7T1IbSrg60ankme0aDLVnEY0h056g9M1/ZvpVThtB7E= github.com/gobuffalo/licenser v0.0.0-20180924033006-eae28e638a42/go.mod h1:Ubo90Np8gpsSZqNScZZkVXXAo5DGhTb+WYFIjlnog8w= github.com/gobuffalo/licenser v0.0.0-20181025145548-437d89de4f75/go.mod h1:x3lEpYxkRG/XtGCUNkio+6RZ/dlOvLzTI9M1auIwFcw= @@ -170,6 +227,8 @@ github.com/gobuffalo/logger v0.0.0-20181109185836-3feeab578c17/go.mod h1:oNErH0x github.com/gobuffalo/logger v0.0.0-20181117211126-8e9b89b7c264/go.mod h1:5etB91IE0uBlw9k756fVKZJdS+7M7ejVhmpXXiSFj0I= github.com/gobuffalo/logger v0.0.0-20181127160119-5b956e21995c h1:Z/ppYX6EtPEysbW4VEGz2dO+4F4VTthWp2sWRUCANdU= github.com/gobuffalo/logger v0.0.0-20181127160119-5b956e21995c/go.mod h1:+HxKANrR9VGw9yN3aOAppJKvhO05ctDi63w4mDnKv2U= +github.com/gobuffalo/logger v0.0.0-20190224201004-be78ebfea0fa h1:26mAf6lQ2m1PSrYlsC16sFAaocXAM+jnCkpj3qKmDmU= +github.com/gobuffalo/logger v0.0.0-20190224201004-be78ebfea0fa/go.mod h1:+HxKANrR9VGw9yN3aOAppJKvhO05ctDi63w4mDnKv2U= github.com/gobuffalo/makr v1.1.5/go.mod h1:Y+o0btAH1kYAMDJW/TX3+oAXEu0bmSLLoC9mIFxtzOw= github.com/gobuffalo/mapi v1.0.0/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= github.com/gobuffalo/mapi v1.0.1 h1:JRuTiZzDEZhBHkFiHTxJkYRT6CbYuL0K/rn+1byJoEA= @@ -181,6 +240,8 @@ github.com/gobuffalo/meta v0.0.0-20181114191255-b130ebedd2f7/go.mod h1:K6cRZ29oz github.com/gobuffalo/meta v0.0.0-20181127070345-0d7e59dd540b/go.mod h1:RLO7tMvE0IAKAM8wny1aN12pvEKn7EtkBLkUZR00Qf8= github.com/gobuffalo/meta v0.0.0-20190120163247-50bbb1fa260d h1:cP3lJDiGboBok8q6axF0rqWjlg/MOCfgjuwuNp5TlhE= github.com/gobuffalo/meta v0.0.0-20190120163247-50bbb1fa260d/go.mod h1:KKsH44nIK2gA8p0PJmRT9GvWJUdphkDUA8AJEvFWiqM= +github.com/gobuffalo/meta v0.0.0-20190121163014-ecaa953cbfb3 h1:JzhweLavqD8ZNLOIBRvE5IPyp+sw/wYQmL9c5XwZuHI= +github.com/gobuffalo/meta v0.0.0-20190121163014-ecaa953cbfb3/go.mod h1:KLfkGnS+Tucc+iTkUcAUBtxpwOJGfhw2pHRLddPxMQY= github.com/gobuffalo/mw-basicauth v1.0.3/go.mod h1:dg7+ilMZOKnQFHDefUzUHufNyTswVUviCBgF244C1+0= github.com/gobuffalo/mw-contenttype v0.0.0-20180802152300-74f5a47f4d56/go.mod h1:7EvcmzBbeCvFtQm5GqF9ys6QnCxz2UM1x0moiWLq1No= github.com/gobuffalo/mw-csrf v0.0.0-20180802151833-446ff26e108b/go.mod h1:sbGtb8DmDZuDUQoxjr8hG1ZbLtZboD9xsn6p77ppcHo= @@ -199,6 +260,8 @@ github.com/gobuffalo/packd v0.0.0-20181124090624-311c6248e5fb/go.mod h1:Foenia9Z github.com/gobuffalo/packd v0.0.0-20181207120301-c49825f8f6f4/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687 h1:uZ+G4JprR0UEq0aHZs+6eP7TEZuFfrIkmQWejIBV/QQ= github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= +github.com/gobuffalo/packd v0.0.0-20190224160250-d04dd98aca5b h1:QlU2UkP7c/XJ994sM1Z8YN9tHsKeIOp7dyMqiLvyNt0= +github.com/gobuffalo/packd v0.0.0-20190224160250-d04dd98aca5b/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= github.com/gobuffalo/packr v1.13.7/go.mod h1:KkinLIn/n6+3tVXMwg6KkNvWwVsrRAz4ph+jgpk3Z24= github.com/gobuffalo/packr v1.15.0/go.mod h1:t5gXzEhIviQwVlNx/+3SfS07GS+cZ2hn76WLzPp6MGI= github.com/gobuffalo/packr v1.15.1/go.mod h1:IeqicJ7jm8182yrVmNbM6PR4g79SjN9tZLH8KduZZwE= @@ -214,6 +277,10 @@ github.com/gobuffalo/packr/v2 v2.0.0-rc.13/go.mod h1:2Mp7GhBFMdJlOK8vGfl7SYtfMP3 github.com/gobuffalo/packr/v2 v2.0.0-rc.14/go.mod h1:06otbrNvDKO1eNQ3b8hst+1010UooI2MFg+B2Ze4MV8= github.com/gobuffalo/packr/v2 v2.0.0-rc.15 h1:vSmYcMO6CtuNQvMSbEJeIJlaeZzz2zoxGLTy8HrDh80= github.com/gobuffalo/packr/v2 v2.0.0-rc.15/go.mod h1:IMe7H2nJvcKXSF90y4X1rjYIRlNMJYCxEhssBXNZwWs= +github.com/gobuffalo/packr/v2 v2.0.0/go.mod h1:7McfLpSxaPUoSQm7gYpTZRQSK63mX8EKzzYSEFKvfkM= +github.com/gobuffalo/packr/v2 v2.0.1/go.mod h1:tp5/5A2e67F1lUGTiNadtA2ToP045+mvkWzaqMCsZr4= +github.com/gobuffalo/packr/v2 v2.0.2 h1:Rlh39nDGlfG0wGSrfFi72JknkNdjRpEr44ZFymEOY80= +github.com/gobuffalo/packr/v2 v2.0.2/go.mod h1:6Y+2NY9cHDlrz96xkJG8bfPwLlCdJVS/irhNJmwD7kM= github.com/gobuffalo/plush v3.7.16+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.20+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.21+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= @@ -222,6 +289,7 @@ github.com/gobuffalo/plush v3.7.23+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5s github.com/gobuffalo/plush v3.7.30+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.31+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.32+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.33+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plushgen v0.0.0-20181128164830-d29dcb966cb2/go.mod h1:r9QwptTFnuvSaSRjpSp4S2/4e2D3tJhARYbvEBcKSb4= github.com/gobuffalo/plushgen v0.0.0-20181203163832-9fc4964505c2/go.mod h1:opEdT33AA2HdrIwK1aibqnTJDVVKXC02Bar/GT1YRVs= github.com/gobuffalo/plushgen v0.0.0-20181207152837-eedb135bd51b/go.mod h1:Lcw7HQbEVm09sAQrCLzIxuhFbB3nAgp4c55E+UlynR0= @@ -254,40 +322,72 @@ github.com/gobuffalo/validate v2.0.3+incompatible/go.mod h1:N+EtDe0J8252BgfzQUCh github.com/gobuffalo/x v0.0.0-20181003152136-452098b06085/go.mod h1:WevpGD+5YOreDJznWevcn8NTmQEW5STSBgIkpkjzqXc= github.com/gobuffalo/x v0.0.0-20181007152206-913e47c59ca7/go.mod h1:9rDPXaB3kXdKWzMc4odGQQdG2e2DIEmANy5aSJ9yesY= github.com/gocql/gocql v0.0.0-20181124151448-70385f88b28b/go.mod h1:4Fw1eo5iaEhDUs8XyuhSVCVy52Jq3L+/3GJgYkwc+/0= +github.com/gocql/gocql v0.0.0-20190301043612-f6df8288f9b4/go.mod h1:4Fw1eo5iaEhDUs8XyuhSVCVy52Jq3L+/3GJgYkwc+/0= github.com/gofrs/uuid v3.1.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang-migrate/migrate/v4 v4.2.2 h1:m9WF3B3yge1mKm5+/q6C3qPETMWqphrod3+osb+sP8A= github.com/golang-migrate/migrate/v4 v4.2.2/go.mod h1:JRwdki93/aFawDXMUM4GcRu/FAIfyw+1Kuyd9vkbaeA= +github.com/golang-migrate/migrate/v4 v4.3.1 h1:3eR1NY+pplX+m6yJ1fQf5dFWX3fBgUtZfDiaS/kJVu4= +github.com/golang-migrate/migrate/v4 v4.3.1/go.mod h1:mJ89KBgbXmM3P49BqOxRL3riNF/ATlg5kMhm17GA0dE= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/gopherjs/gopherjs v0.0.0-20181004151105-1babbf986f6f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/mux v1.6.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/pat v0.0.0-20180118222023-199c85a7f6d1/go.mod h1:YeAe0gNeiNT5hoiZRI4yiOky6jVdNvfO2N6Kav/HmxY= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.1.2/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= github.com/gorilla/sessions v1.1.3/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= github.com/gorilla/websocket v1.2.0 h1:VJtLvh6VQym50czpZzx07z/kw9EgAxI3x1ZB8taTMQQ= github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/h2non/filetype v1.0.6 h1:g84/+gdkAT1hnYO+tHpCLoikm13Ju55OkN4KCb1uGEQ= github.com/h2non/filetype v1.0.6/go.mod h1:isekKqOuhMj+s/7r3rIeTErIRy4Rub5uBWHfvMusLMU= +github.com/h2non/filetype v1.0.8 h1:le8gpf+FQA0/DlDABbtisA1KiTS0Xi+YSC/E8yY3Y14= +github.com/h2non/filetype v1.0.8/go.mod h1:isekKqOuhMj+s/7r3rIeTErIRy4Rub5uBWHfvMusLMU= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -295,6 +395,7 @@ github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NH github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmoiron/sqlx v0.0.0-20180614180643-0dae4fefe7c0/go.mod h1:IiEW3SEiiErVyFdH8NTuWjSifiEQKUoyK3LNqr2kCHU= @@ -303,16 +404,24 @@ github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhB github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/karrick/godirwalk v1.7.7/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/karrick/godirwalk v1.7.8 h1:VfG72pyIxgtC7+3X9CMHI0AOl4LwyRAg98WAgsvffi8= github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -320,6 +429,7 @@ github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kshvakov/clickhouse v1.3.4/go.mod h1:DMzX7FxRymoNkVgizH0DWAL8Cur7wHLgx3MUnGwJqpE= +github.com/kshvakov/clickhouse v1.3.5/go.mod h1:DMzX7FxRymoNkVgizH0DWAL8Cur7wHLgx3MUnGwJqpE= github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= @@ -327,6 +437,7 @@ github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czP github.com/markbates/deplist v1.0.4/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= github.com/markbates/deplist v1.0.5/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= github.com/markbates/going v1.0.2/go.mod h1:UWCk3zm0UKefHZ7l8BNqi26UyiEMniznk8naLdTcy6c= +github.com/markbates/going v1.0.3/go.mod h1:fQiT6v6yQar9UD6bd/D4Z5Afbk9J6BBVBtLiyY4gp2o= github.com/markbates/grift v1.0.4/go.mod h1:wbmtW74veyx+cgfwFhlnnMWqhoz55rnHR47oMXzsyVs= github.com/markbates/hmax v1.0.0/go.mod h1:cOkR9dktiESxIMu+65oc/r/bdY4bE8zZw3OLhLx0X2c= github.com/markbates/inflect v1.0.0/go.mod h1:oTeZL2KHA7CUX6X+fovmK9OvIOFuqu0TwdQrZjLTh88= @@ -348,6 +459,8 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-sqlite3 v1.9.0 h1:pDRiWfl+++eC2FEFRy6jXmQlvp4Yh3z1MJKg4UeYM/4= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-sqlite3 v1.10.0 h1:jbhqpg7tQe4SupckyijYiy0mJJ/pRyHvXf7JdWK860o= +github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= @@ -357,8 +470,14 @@ github.com/mitchellh/mapstructure v1.0.0/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mongodb/mongo-go-driver v0.1.0/go.mod h1:NK/HWDIIZkaYsnYa0hmtP443T5ELr0KDecmIioVuuyU= +github.com/mongodb/mongo-go-driver v0.3.0/go.mod h1:NK/HWDIIZkaYsnYa0hmtP443T5ELr0KDecmIioVuuyU= github.com/monoculum/formam v0.0.0-20180901015400-4e68be1d79ba/go.mod h1:RKgILGEJq24YyJ2ban8EO0RUVSJlF1pGsEvoLEACr/Q= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nakagami/firebirdsql v0.0.0-20190310045651-3c02a58cfed8/go.mod h1:86wM1zFnC6/uDBfZGNwB65O+pR2OFi5q/YQaEUid1qA= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/nicksnyder/go-i18n v1.10.0/go.mod h1:HrK7VCrbOvQoUAQ7Vpy7i87N7JZZZ7R2xBGjv0j365Q= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= @@ -369,46 +488,87 @@ github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zM github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20180920065004-418d78d0b9a7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.0.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.1.0 h1:g0fH8RicVgNl+zVZDCDfbdWxAWoAEJyI7I3TZYXFiig= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.2.2 h1:J7U/N7eRtzjhs26d6GqMh2HBuXP8/Z64Densiiieafo= +github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/cors v1.6.0 h1:G9tHG9lebljV9mfp9SNPDL36nCDxmo3zTlAf1YgvzmI= github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= github.com/shurcooL/highlight_go v0.0.0-20170515013102-78fb10f4a5f8/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= github.com/shurcooL/octicon v0.0.0-20180602230221-c42b0e3b24d9/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= github.com/shurcooL/vfsgen v0.0.0-20180121065927-ffb13db8def0/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.1.0/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.3.0 h1:hI/7Q+DtNZ2kINb6qt/lS+IyXnHQe9e90POfeewL/ME= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.0 h1:O9FblXGxoTc51M+cqr74Bm2Tmt4PvkA5iu/j8HrkNuY= github.com/spf13/afero v1.2.0/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= @@ -426,27 +586,45 @@ github.com/spf13/viper v1.2.1/go.mod h1:P4AexN0a+C9tGAnUFNwDMYYZv3pjFuvmeiMyKRaN github.com/spf13/viper v1.3.1/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.3.2 h1:VUFqw5KcqRf7i70GOzW7N+Q7+gxVBkSSqiXB12+JQ4M= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/tidwall/pretty v0.0.0-20180105212114-65a9db5fad51/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/unrolled/secure v0.0.0-20180918153822-f340ee86eb8b/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= github.com/unrolled/secure v0.0.0-20181005190816-ff9db2ff917f/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= github.com/urfave/cli v1.20.0 h1:fDqGv3UG/4jbVl/QkFwEdddtEDjh/5Ov6X+0B/3bPaw= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/vektah/dataloaden v0.2.0/go.mod h1:vxM6NuRlgiR0M6wbVTJeKp9vQIs81ZMfCYO+4yq/jbE= +github.com/vektah/dataloaden v0.2.1-0.20190515034641-a19b9a6e7c9e/go.mod h1:/HUdMve7rvxZma+2ZELQeNh88+003LL7Pf/CZ089j8U= github.com/vektah/gqlparser v1.1.0 h1:3668p2gUlO+PiS81x957Rpr3/FPRWG6cxgCXAvTS1hw= github.com/vektah/gqlparser v1.1.0/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/vektah/gqlparser v1.1.2 h1:ZsyLGn7/7jDNI+y4SEhI4yAxRChlv15pUHMjijT+e68= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= +github.com/xanzy/go-gitlab v0.15.0/go.mod h1:8zdQa/ri1dfn8eS3Ir1SyfvOKlw7WBJ8DVThkpGiXrs= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b/go.mod h1:T3BPAOm2cqquPa0MKWeNkmOM5RQsRhkrwMWonFMN7fE= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.17.0/go.mod h1:mp1VrMQxhlqqDpKvH4UcQUa4YwlzNmymAjPrDdfxNpI= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181001203147-e3636079e1a4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -455,6 +633,7 @@ golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20181024171144-74cb1d3d52f4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181025113841-85e1b3f9139a/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181106171534-e4dc69e5b2fd/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181127143415-eb0de9b17e85/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -462,11 +641,19 @@ golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190102171810-8d7daa0c54b3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc h1:F5tKCVGp+MUAHhKp5MZtGqAlGX3+oCsiL1Q629FL90M= golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734 h1:p/H982KKEjUnLJkM3tt/LemDnOc1GiZL5FCVlORJ5zo= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190118043309-183bebdce1b2 h1:FNSSV4jv1PrPsiM2iKGpqLPPgYACqh9Muav7Pollk1k= golang.org/x/image v0.0.0-20190118043309-183bebdce1b2/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180404174746-b3c676e531a6/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -480,19 +667,35 @@ golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181017193950-04a2e542c03f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181108082009-03003ca0c849/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181207154023-610586996380/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190424112056-4829fb13d2c6/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092 h1:4QSRKanuywn15aTZvI/mIDEgPQpswuFndXpOj3rKEco= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -508,17 +711,31 @@ golang.org/x/sys v0.0.0-20181024145615-5cd93ef61a7c/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181025063200-d989b31c8746/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026064943-731415f00dce/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181106135930-3a76605856fd/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181206074257-70b957f3b65e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190102155601-82a175fd1598/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190108104531-7fbe1cd0fcc2/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190116161447-11f53e031339 h1:g/Jesu8+QLnA0CPzF3E1pURg0Byr7i6jLoX5sqjcAh0= golang.org/x/sys v0.0.0-20190116161447-11f53e031339/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190426135247-a129542de9ae h1:mQLHiymj/JXKnnjc62tb7nD5pZLs940/sXJu+Xp3DBA= +golang.org/x/sys v0.0.0-20190426135247-a129542de9ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180924175601-e93be7f42f9f/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -529,6 +746,7 @@ golang.org/x/tools v0.0.0-20181013182035-5e66757b835f/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20181017214349-06f26fdaaa28/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181024171208-a2dc47679d30/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181026183834-f60e5f99f081/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181105230042-78dc5bac0cac/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181107215632-34b416bd17b3/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181114190951-94339b83286c/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -544,26 +762,55 @@ golang.org/x/tools v0.0.0-20190102213336-ca9055ed7d04/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190104182027-498d95493402/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190108222858-421f03a57a64/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190111214448-fc1d57b08d7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190118193359-16909d206f00 h1:6OmoTtlNJlHuWNIjTEyUtMBHrryp8NRuf/XtnC7MmXM= golang.org/x/tools v0.0.0-20190118193359-16909d206f00/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190124004107-78ee07aa9465/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6 h1:iZgcI2DDp6zW5v9Z/5+f0NuqoxNdmzg4hivjk2WLXpY= golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190131142011-8dbcc66f33bb/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206221403-44bcb96178d3/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190219185102-9394956cfdc5/go.mod h1:E6PF97AdD6v0s+fPshSmumCW1S1Ne85RbPQxELkKa44= +golang.org/x/tools v0.0.0-20190221204921-83362c3779f5/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425222832-ad9eeb80039a/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190515012406-7d7faa4812bd h1:oMEQDWVXVNpceQoVd1JN3CQ7LYJJzs5qWqZIUcxXHHw= +golang.org/x/tools v0.0.0-20190515012406-7d7faa4812bd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.0.0-20180921000521-920bb1beccf7/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.0.0-20181015145326-625cd1887957/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.3.2/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180924164928-221a8d4f7494/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= google.golang.org/genproto v0.0.0-20190108161440-ae2f86662275/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922/go.mod h1:L3J43x8/uS+qIUoksaLKe6OS3nUKxOKuIFz1sl2/jx4= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.15.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= @@ -575,12 +822,19 @@ gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkp gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.39.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mail.v2 v2.0.0-20180731213649-a0242b2233b4/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20180920025451-e3ad64cb4ed3/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= sourcegraph.com/sourcegraph/appdash v0.0.0-20180110180208-2cc67fd64755/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67/go.mod h1:L5q+DGLGOQFpo1snNEkLOJT2d1YTW66rWNzatr3He1k= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/packrd/packed-packr.go b/packrd/packed-packr.go index c4bd192e1..14a64b54c 100644 --- a/packrd/packed-packr.go +++ b/packrd/packed-packr.go @@ -15,31 +15,31 @@ var _ = func() error { g := packr.New(gk, "") hgr, err := resolver.NewHexGzip(map[string]string{ "01f0a81e9c050b27da52b68f123ba68c": "1f8b08000000000000ff9495dd8edb361085effd14535e6501c73490022d169217459a022dda6e506f9a16c8cd981c4bc4f247e08cec759ebea07eb2d945133b178644ea70cee1e711557df7f3edebbb7fdfbe815682df2caa72018fb1a91545552608ed66010050051204d36266925abdbbfbe5e58f6a7a244e3c6db682dc567a1c2cc627dec57bc8e46bc572f2c42d91286833ed6ba5f53e45e1559352e3093bc72b938236cc377b0cce9feabfd22e49ba7eb55e2f5fadd74ed03bb3fc61bd2ebf713427f8ba8fb17195f1d838191c2299e491754c39a0771f696598754016ca4f272f2acf247da783f3de3519c32ab838adadf4c8afda257bda2c16957507301e996b6552147491f2ecb14f39001a7129d64abbe84441206993add5dbdbeddda41bb58ebc6592c7a93126eec8c33ee59213b9559bf72d6502c7704a7d862ee5083e1914b2f02274df2fe1180e4bf8e8ba259098ab9b4a0f359ed575b1eb0522069a0b839c3aaa95d08328e83c1a6a93b7946bf5e69f6b787dfde1e02c258617ef5db4e9c8579032e8774c590f6df253d7e9bf27494073bb050dbfbbd83f5c29d053f3fcdfb61a8a944b7cb5f93542ca963248822ea762085da683a323c36002b39ac1056c8801a38531d90ae0ae750ce839818bc6f7961824636493caed3e65e823f75d9772c1b5779eca6440298b47b0c7d47b5bd88277f75492301ee893efb88a2fa0fab8afb364873fe0c3a3c5d7100f5afd99f65b589717dea2e0dc455fd8ec2cbb01f863ba2d0dc79232594086dfb6b77f8e2006fe0623ec084ca62152cf2e36202d013d14d4b0eb455204178149c4c58657e7f97dca7a21be597f01bd47e9b7c033685a9ac9d934603b6294826d6cce99dfa0040d42a14b19f36962e504826b5a8148648b7a247641338dde179218edcf63987467198c415a672dc5298f4dc7e8135a567040df53add4f355d61d9e6ee8b35ad38139f5c57879b9f368eee73d72bf0be5b89caa6fc7e13342fa8947a59f9ea1952eef7639b207d9a2d2e3995de9e1d3f85f000000ffff8562c06d2a070000", - "0206cd3a197c6fc2ba8a16d657170af0": "1f8b08000000000000ffbcbd0b98235979187afef3a8532555492a951efdee92d492ba7b66ba5bad56abe75d3b33fb98196667d9855d0ceca0651fec2cec32c3126f78242ec04e0c7ec1b7490c76bc88188871c2fd36d91802896d39899d408c2ff6fac285cba31d733d611d12c7c426fe62d4f73be754954a8fee19f8eebd332de9d4a9f37efce77f9f672edf71070284103cf53c4acadf479086089af0eff27deb9b08818e10ea88cfe7b33fb6fcf0930f5d43081e47087e5c7c6eb45ef5d9373cf4f43584f07f4108e9c127f38637bded3184f0ff40f0e086f8fcc2bb3ef62f1e7ff4a1471074961042dbe2932d5f7be0f1c71f7d0841e7b5082111bf447e89bce9f127dffa3711747c84f85de2f36154ebbce9cd0f3f84e00dff0121f271f1f906f9a98f3ff9d0dfbc86e08dd71042aef8c037e17d4f3df4e4a308def87e84f0f7c5e7d77eeb2dad6b6f7efaad089e7a7f984ef696c01ebc1f3184e065f01842e8cee0f72fd034faf1f828f808bd2b837a2f0d0d8d87d0b7117c68ef17d063f02124f241ecad2bbf49f0994310fc12996a0e51317ee87ee421860a08908b96d021749afc3db7ecfed3d2d1d287cad90aadac56de55f9e9ca872aff7be5cf6b50d36aa9da46edd1da07ea463d5577eac595dffc93bd1be91b176f3c7ae34d37de76e3c3373e71e333373e77e30fbf8df6bebfb717b46309adc6ca7d7f395bc19595a172d98472d10db891bf71f9c6e337de7ce37d37fed18de76ff46e7c312817f6fe786f77efffdafb0f7ffdd66fdef8e6956ffcc137def90dfaf5fcd7fefbd77ef16b1ff8da4f7ced9eafad7dd5fdeafc570b5ff98baffcd657fec15716bf32fb95e257725f7a72e6c8cce199faccd24c79c69dc9cca466f4193cfdd753bf1f8ccaff17ff00c1de1e4ac7cac708b58f021a9aaf9bc575f6baf061e8a27f8450750dea637f15f9dddada6e9f02f5d7dc2c1417a0d8dcaa0dd2b5b66a95b2360f658da740fde57332d9d85f3e374853290fca6855e219f2b9427373fb246c0eea6d6dd5eaf08b843366726e1bd43274c7306c9d1b90b0b9a61142758d25b9666ad9793369e1739aa6659289294b3335c74a65b524b38a8984ad691ac6983366197adecc9753a9a9a496648c61226375dd49261dc3c8709ea0949ee35ccb269333299ee2d994e5f0b4969a4e26b39c6b185fe316177939018a312598628c89c1b474423319e5845000ac733e63a766124987eb490a182a96e358158c4942e376223125cae696a6998ce984e99470d9944c8225183328d530c1aacd26d7b3097bde3273ba6e521c14552640139cdbc9e44c86a774b1ebf6bab00b5d7416a16abbdeaecbf1ab94355ee7e164d5f91a54ca9a98285ee4453965cdcded76b11d8e7eb1bd00cdcdedd6560d7e1f3ef841e0ba633183c0cf3a96e5fc2c1083598ecef77d730c1e7d14684ab71c42e0751f150dfde8eb8010c7d253f48077625d7a7bbbd0830e5a44a85a095bac5a7b1cc2f6056debfaa2565f9411857ac38f2a2420d55e1723e8a259b4885e871094c54ad4f239b1e80acd4db1d4b65b5b6249d648a5d56ca7200d72adce43a5b5b17d1aa2b528072f58c7f572ad15df1cd14a07d45a5fbb2397cbe5ee585b6fc5c279cf3b45135a993000bc436899718c31a3ccd4b9c5280720649b60625ba9a582994b1819ae250925844077acb020dcef781fd0d3fa11c209d135be94656b5a923283719331ca28b37482758a738b49539465685a5ad7b309c3d6155408c6068b93c380123825407b08a3fe6eb7df836e1f41a7df5370a38b3ce80012a76c35a755cab5d6d67673b3009d9de5e51df1e9aa9f1d84912be7d2476f437f1b21273e48ed08cc4490239ce39cf8c9874f1bb94638ac4d0513b6361bf58d5c65048ea8157108b6447b5ae1930221c5fcc656e3f7cd79dbcc19469a538d368846ccb94cba9c9d5a751cd7b2723c25160b0080f84df19c65b98eb33a95ab643273266c02cf188982a93620d5f14f88647f1fe0d7c4efc708a73c67fd3738c6354288ce88411b98113d45193374bd984a951cb10ea94ea94e45089c522a55d4755dd3989d8043c04d42a9a6713bc92c6d38ad66b1a4ad7d06008dace39583d7316fe62b4ea5d56c555acd7c73df15f94acfebf8aedb71f75f601d6f0fb95db727e1cb2eec4247e035d5523b842e62afe473854508e1c63a94e46f057afd2f5c65ccb1b849bb9431daa526b71cc6ae42538c5def096a6aa92ca35d09c26937487b55406e090f7a720d89fad47a09ea6a6e6e9f065bfeb6ec62586f1d3ed5a549ce93a2a09cc993f4896c2a957d8226792acbd897ba8c31d60d9eaef6bf90ca6653d0bcca5836c59374a47ff5104e2e4249fe364b7c507770327da91b74e06afff754694f50d1852413dd659fee52964d69a66887e55c0d3a2ff2f0241be99fe89b2dc7336fc7ea967d0beaab4037de2733a77aa3fa9b4d75e5b89ab99c29475d0e40accb0a17c0083c747ca47f074ee558af1bf0977e3088e7fb5f3d1f0c9f2f6a8ae2a13614ff293f68cf850b41c37dd5703f4825e345ce207e80a774a18b8e85e3531cb46b7c39ec3b6afe840a0e6c5067bc0707f7387676cd235485100689f32b38b6a221854ff7fff259b1fa772d0917c06049b12e8a6088c720fed9fef7e46648a2e1b2a3e330ea793b3a19c5a9389c9905654247fcf4bfa76aa290081ba0c6392c7f41c0146d1e20c211a2ea54f915e84e2cc6b10039d6b39008567fff7b515746dbaf1012084f7755b61c2c3805d01bcd2e4a3518034f54383e7041fb910f3dd44396804bc1660db0847e4fb6ce13d8812a54767a70eee5c56e68e73772f330070dd11c01304577ebc508c51d073e03a0e33956c7ef584eef7b6d51f85526d611db0d46e2739f0b06abe36653eed4b2e574bb8ed5ed5ddd7e5a3446c00b467783349fff5c306d08908f3ae0034253085577a0111c970db51b833183775ec39a4014af616cf05d6ee077f89810ec1346b86170c2d4f8f8c8031fedcab2d4b21473bb038de0646db44f01f8aa043c28f28baa0c129619e0002e78e08ab204e6bf0341938a416172196ec4728996801b2f575624caea21173ae0a269d9ae7ad0c960cbb47740b4ab059d788744b1dd788f65b908236faf2bd7d8ac381959b05c65610251193c158ac32b049d7d5000d4f6ca4a5bfc3ef8dd7e57d4041d6e18ee83677b02acf756daed15153afba06b709140f440ada31e46e0a324da41a8ad8a9625b72b0781d5e666219fd30e415e45f833b5dacc4cadf63bdf5d099640472c8c4eb03056bf2b102bdf3f73e58a27d3cdccd47657c295a5565c2758712b0203f3ae9c397305214411dafb4d8ce0c79081e65109adcb1da80053498c84da81ad523e983a5e693579a5550946e82454c077ac9ee500eaf4c52eb25cf05dcb718e785ea7e7898d6f391ebc4e0c8eeb66533dcbe9741cab97ca76dcdd8ec2c2e5387510822e7828274ebb7669021467417354bd5b355f14cda8afbae753e680b58714b0b11cc797bdf5c530f972245cc77265034770fe3a3a75139c3f4464f339ad3e004cf1e9da17816a5dbe7efdf2e5ebd7d7c5de67d40be6a47d00c2eec90c972f5fff8204013e4f322f98bbed8066dfdbc5083a72bfae0a6a5c40e13908a8b560e1fa00907cd5b13357607ee9cc1a645a172feeb6cf5f394318b1b6cb6b672eb65a1765596a1cc4865b045eacf376bd0de89ee7fdf95ffaa579ff79e8feeaf47b3e7bfffd9f7dcff4105c34500ea1ea3aa4a1c8db32d7e9203f46ffecf2e57fe62f3cf7dcc21f3bf73cb5d978f33dcec30f7f7df6577e65f63d9f7dd5ab3edb79ebbdf6d5abf6bd6f6db755fdf07df8257422e4350c08a810818f331a149155af893471d4bf0edfc76f2498119260da8ca09831c564abd59a654c4b6a92940780db302df063d300875ff5d44f31fbe57942a903a7010363aca2d294d6d68febc460cc6034a131836246f09b8062ba785726fba1573c3ebfb0c50b54ee1db5b72d0955da08390162ab40080c4192fa014f2ec863486e20f882da47b1a8f13078e161d58f8e2d7f2ca0d68a6ae3610943c5e086cb25df9883e21ce4150da506f804b4b6b75a8d13d0c2e8727be5b64ce6b695f665c0a6b9f0e4ab5ffde4826962f8fef6a5d57279f5d23626000400436ea5d0ba72d75d575a851507630c188060440298db45169a1650d711b86b80946fd5ea315858cc6fcb7dd76e6972763b025c48624bfd36a7cbe54bcb2bd5a595e54b950a78d954bf2bc7a293ca76c2940fdd98a6acc879fec694a64d691c05f04ded1541bf66c49a75ec76b5542ccaf5b50ebc546f176d8e9e03af7fee1bb69c76b2fe1cfcebe7cacf3d07a7faffeeb9de379a8452b2fedc73e5e7e0c47382ce72f77af04df011453aca23d42eb6eb9cb7eb1c04ac2a8a55ba5dab3c7ef94b97bf74d73b2e1f869f3473fadae5355d8752f15522f68347ee7e07f40c2e227366a184244714c12e78684e9e9b6918c556db21b6dae349f6edab011c09801f200120c063f4a590c090800f904c2771e500be8a75103b7862d5f009d8cb3ac091abc1897335acf489f1986e140aeb9f901aa111b8dbbc75b84b62abe5a6c0f672c066b815200b6ec89c4023edaba1c64dda271b5784356815cbb53a48ee4e45b46efd7651ddedebebadd6dafaedf95c2e7ffbfada5f5cbb677167aaff17b6d373778a90b49deb97450b4792b554f63d74cf35c7eeffc5d4ce62cfb12159dc712f5f8fb52f8b8aa886102bd9a57629d8580298d8dce1c5760b0adbededad089c42afefc394d7ffc9108278473e7deeeff4fd9d87571d27396d5a53466ec905df8ba0cc9407faa7cefddda7fbefa1e6b2733c67241246a123c6888dc1bddbc7f0ea2138581c7a624329d980141210b3db97280188effed343604f9eecf27c1f8290fda642222cc74121dc1b40c74e1870c34037028e13fbe1c41b57a91e00cfdb434f3cde0dd524d5e27e370edb3f19eb9f13ebc527c33e58e08e357900e27be3bd50f3f15b18c1bb643f56d10ebae3e0f9189e814a7e40c38d1d4cb01b9f90e6d03115c3b5ac680e860ea9107e0b80ad60b41b46f5c240270c8cf463e507ed477da457a3fd882f991ff8b81def893fd681a84b128e74f676a10b1de4a215b48950f514b44e88bfc656adbeb1d55803b956ecc1b887187fb1d25241f851c6009bc76bef3773d954b775b1f0794f54e0753ae27cec25664cac130c02e9595acfa6fa3d3377b135bff97241a7f89ef816b4ddde2ef8b21d0886f6da712043137f081c38561355f9e26b662b1e065714273e7b280c41b0f6143c7a0d7a037a1afd18fa29c98be14ab6508f6405a14c4101a448f2104a17148918c91e02d259e56e475288d6568dc8a151ac6536743e0cc2a558189e378bc62571165e4a14ccd2fa7aa9b4ceb54b3c6318197e49e3e279bd742b69727373b9dcdc5cff5f0481f0032f0b02de01e51ac51fa06ef0c2c23b61a0df1daa33979b8be3e20df42042d5469dd7255623f0e57abbde5098b336e1006bcb742103ec16f0803afc43d304ab9c5bdec958609a6686e08dd5d55376569daa9b870f9f2b14989ed67395dcd1e0c03f7a3440018e1da32331b2b4ccce72ae2c4ab32a393dadb342e1dce1c39bea80cedaa756573730c974a342f62f56e27901ef3289a61566314c6bc7573a5163741c1445174bd70dc8ec8ff7ce5cb972467db52e5e6cc9afe0dd6e486077040d2d3efd5d414b894f2f7c8786f6461215d159f472394bb1da78bc85658d0f445ab17dd06e4682ad7032b8da00b65ae39521cc489d0ad1e78542592b0be4a6ac950ba26923cfbf1036d80b328c5313ddd9fcfb0582f4fefcac4838fcb42b728327bea3136940535e95b86c6cdf57e2db7f1fe0704b20211a8b4121d09ba9e95a81595aa1ac2d69e54232afcf13cce8799e31542707e1f0dd4aec9d080759c392666a3570c3d4b3f9fcac8a3632fc3c656ae806e1e8dd4aecdd0a65225f5846b8360663f4ba005e8e0d462b06238bf93188393630f91894acb7e230137ad694fef4d3fa94a5ba0af8e9702e9fc6a09a7ad314d712c6d9b34642a5663a3dfbd860453d7696ea4ce5bcb55431d8751ffac78af28f84d1712e40c4688eab0f449cedb8e82f5a10219b6034bb2a73a422b51047b2ab32472a9261f86dc2a9985d23c3f58c8197a6a797b091d1e52a629472325d2e4fdf429aa340208aa0faa2e32cea34ca863164f2f9cc2da4f9e60f53f98434cffc30954f4833beb6a3652c367f7d7851a78047a0ae38bc7e4f81d8e3378f842f8a855a286be7d8941dae597b8a9d93eb4e6dbd306a24c5e071214c1d651c2a52048763c7d30dc520640cc1fe0a5a47c7d19de83ef43af4c6e193a9be4f98c561c13e699c7de2e3e78a179c5aa31f786c24e2abe1d137f21c7edc30d41b0bf8d12132f6aaefef9f0d29cdb97dc6696894e23daac646a67a0ba351bcc5918946a4ff0b21b37d24c5df19798e30816ec4738f708330b087c6fadd993012b7380ef1be432c9eec330efbad3467c2388cf77f6664498c2e8d8f8f8e8337de6b8816407f7c703ae3ef10425a8cc7f138fa49f4efd18be88f10aa4a244861ae75012f7205ae70dd8d4da5fd730c1ac5c2667b7b6b1db6364fc2d676bb790cda3bd0d8de6c6c6d349aed35a8575a1b9bade61ab42aa7a02d11e49680260172bcddaea7a0de92356d6c35ea910832c4c11a9bdbadaa3823b6b60534da8186649a8ac7f8e97c0cda4a40754a049aa7a03dc0a4eb31eaa43890263437b76126af691ab7b896d200b43bcfbf811000c229e022668071012849618201609e6838030900871a1400d68e66323bd5eaa10bd752d3ecd177528dafe5344dd374436306e3f0f015cc30600a58e4bef7f8b17bef3dc6120c303083315904d5e9156a688934252fae9e38b17ae8c4094e31218460ea706d5d03f10f4343e3f7bfe1bc594ca69856c018535c04209412d12ccdd2528468e28f2535c2c8cc95a387aad59d4ce6ca9d73e73a570caed9b0ae6b4d8d6f699c6b8b9a76e1755497f54b96bb6c9176ecde7b8f1fbb0f000888fe124aae109a4eb004b94b36ecd0ea89f7da9812626342023eef60ff9c4617f7df37c5e1c37f3069b1d35ee49a042be08e20f0f6f5d254cd48af4e53f68a13275ef18a134c670067d6eac71389d974697d23a409c720c3fb4bebd34e760acc294be43bf10a00a6b3b5331b4b4672bdf4fe017917932f6ca363e814ba1b21a8d4d7a0be211add48413a92be73ad10291294c2b57a025a81ea13abb49ae2d32a95a5d643b3b429d9caf0adf2142b5ade6db779e6149b2a276d3b69ea00763a6d8327be753369dbfd7fe679803cafdfa3048a98504094e02210d0cf99456a59b4689ecb9a966dda65ab9bc96432ae2bbebbd652dab42d33fb2b9ee77973748bea3adda2734372a4a3e824424c20b0f576f5149c04a5a9257aa62620a0dbda4ebbd89233d3dc0c66456c5ea8b49a1831068f3cd9ef03043a7d821271ac8f138a5f3bfb084d72b972219906e8f73a1d8f27293c32f35a4cc9c7c3b4522310a0df7ff211600c209d5479c0ed8472dc8fc8f6de0519258d0ef149f15dae297c55a19a0a4d8d56924253f31b85cae6763d576b4472ac53d0e2eb2027b455d3f21b858638eb6b958d5aa3a615cb85c6022c62c9544e6331dbc5355897bab7ed5350dc28340adbeb5093ef0448949070bbb55de31b62717059ae28684b14340f4ae08125cc3b1d88d54e63a978b7186a294afd8120db66a1b1b1d9480535c948b978e402da2c042de318159ce49d6bc942c22a670b358b6864b1a1cf950540982958e5ac594858d59c39953467d3d365039c19524c6458611a2061d6594e4b02c173027c1038932219389398d1d280b1936198a41376c198cd5096c81a87f51ccda5b554ce2a251b09c349a667758d646c3b93e106218c34d259bb61248d94614de91867b254b482cee61340cb45aa932433e633899c9ed4759be6339a0d794c00185ea41473cd020c53895cb2baa3612d6d33fae2d46a6aed38a5a954ce86fa62a2b168640d3d9b98396259694dcbd81a374c3cb70369330f175926611d996126b35cbbc40a7c26e9420a6c9767381070814092db9825597641c79a61617267ba6a53d0588d73d0e8bca611337148e73c6d6d24329004734a4f524b271497928b0694b4022f5096343018f3599ee2baaea5f47c999164711e00275236e7499d7320d4a5d4c81aae688c51943d9ba674a3aa537d216364f440d6f1bc5cd32be82ef438424e5cdf432cd0a310d72cd981a3582d6e269f2396517134dfc1af2bd95d418070b2ab2792c637092784e35d2399d0e1f728277ff0078453cb49e883548eb55f3cd06b18637c8d648c4486743000ee904cc2c8908f62fcf855c08e65644894c672ae61fcf8e3782c7a58f673085d46af41a85a8969b1c7b45063aae882225198e53079394e46165310c7c06097249e382fe0cef9ab49226010495e8d3fff1e644d330b1be712a66d9b89731b23cf978393a817e50fcb7b2231f4fceb93f347cf2fc6f17140fedec7c187ae94435656a151d928879cead3b0bdb9080529bdadc06314a0074093e9247fad9ee7afd513e9247433c9fe7282e95774fd8ace12f07f26330a7e9610823f820e2aa1b3a1965774ee86e140b82646af7af06b31827f74b4bebcb3b3cc0c661d9a4d65b3a9d2fcfc214beae9f6bbfbbd390a4849fb000e6f8be1c9da275756d698c1087f789f78a2648318b97b2fc217c04739d11b47711017a1904b83561680fc243463535c71abb3cf9a53c6271de7d96ccbf9a491b826ce76676ece016fb69a303ee9b4b2cf3ace278d29f359159f53676327909b67d0921aaba65a5d4db1109bed4abed2aac4457e5b35e83816d7e7b3d9799d5b4ed773775d254c92ca7d962306c1b15cd7f31c6b20d141c8143886b4092088a302aaa2bbd0cbd03de815e855e8b5a8831e11bb20dfac57f24d27ae33556856861fab957ca04835080c37b10281ba7171e49757f24d40aeebbbeeae922ce4cc5d339733c5073c37a2145c19d11569fabb9d4ea7e3475faeeb7aaeeb829b3365aaa12fcf150bdc55df39b3efcb727c33d7f73b6e6737f8b8ee906ecd1a42d5522bc0dbc739e5e91077b4e332a64e2750efeb059ce94f04cfe71577540a93dcfb3a571963b417b0b17f55eaf85d90ca3e4a1d51c1238adc00ff4ba3457444e049d54077222e3b3a09034dd261ddb56a73f82da050ffc9f96414bad4efc89675a5c4358a7683c563f5a536652ff88a0b2743991f1aa2d92c348b0ea1757406dd83507b48e234f2541a5e1fa4d49292ec7968b64af94a3ee8eab0d0ea9ac70d83cbaf6ef8f5bd980ee7913d04482a757a805c11d37f4f4724145f5ea8991705bae1888bccfddeeeae6379eeaea7fadeef0c34f9684cefc98ef4e42ab2b92529792c6dd58a233de239ed10889dd0cc375b4de8a9cac0f7f6909451df1793303ea986b7e78252a2f30329af1a7ed11cd94ecff362e7d412da44f723541d5fa4c38aa9e2f819516b14c9238b9ec95ad3608c6a0e8a36855a85ffbedf11d00cbab9b9b9fe89d1b7b19c9f18d6547c5174e3c5d5707f84f40ea0e8dd040d47097b95ed92868e48fdcd562557682bc5cd7a8cfacea740a9740ee970ced4fcda572de7421ba47a40fb42b01dc51296a0a5eb58feb1572503130fa539e70fe428b1faa704ec1fb23e8aeb249614693f0ff09ba72fb65a176fb3b259514d2ed7ff1f92e5f3faad0b17b65e9fb1be6e4d4f5b5fb732af9fa956675e1fe399d6021deb91820f4158f24099db6f5d94005376c3ea5467676ad994e55c84eec556279b922b673795edcc56abb36a63b72e46b4174017bd1d7d79a0e13207c55c21bf10ea83edf327de1e93df9b05258409181c5b9b4d45d8849a7a237fad80ecd96e9d8296d2e1abd88d72c0af6f6f6fb5d6a0ded8da68ac414b4a00943a5a636bbb1daaff452642a2954a714dd90de634be9113344fa4cd9682480f0706ffb0fc23001803c5004028065c3c5d0530b20920d870120947050c80eae902609944322182ace15ff02f97bb637dadb571ef5ca69a996300890cc398eb802900a792bac898e6623abd689a19064030e54001738e314b2780cd65963273f7ae879a409ac9312544a7580bf82898c96f2abf09269c0086c5750b30c3b22b8029016b7d1130102e93681453f9cdc232344239c59468266fad8961e96f2d978c3437b3098cb1514c814865726cea090303986e9268343565180923614ca5a846cc4553743891e026d14c4c3402a9a28e094e644d9e364acb4332cf2a6aa0d3e892c0a39944d8d4948fa8536d0f1863d5185f6c585e5b1f7ae2434ff0e7f7db01aeb6beb27c326bdbd993cb2beba59333f76bd9446e4eefffe7b30f3e78f6cc952b297560688984362194ba7fe664295ec2dacaca493bebd8f76bfa5c2e91ddba724695d333b8c8280f1115f0c340b0b714fe30870e210482665a03714e70494cf1486fbacee52e97475bbb54acc0afd374a2df4b64e8996c4a1c09674fa6b23dc73ad386c2f66d70494f26f55ffce76217fff35ffc6436e5baa9acef4b2beb0e466837e01ba376ccee8ec5c23c16f6abb30224cc56210af5c24057fd8c7d909269285c31851aa8253937b7a1dbd179f42a8460181d6cfff0e86075b824e8289c309beac4304109f6ba02531cc504fbbb617af072a64c380905547033951d42013b830c013da8e63289665119a13817710c7ba9f33a6f9514284e65b34ff5a5ae8e3cdb8f74dd4e07fc483fa89b4d8558472adbdfed787e777788fecca113e83184dac367bae24fb6792552f268b403797acc50b7d16ec82cedd0b237203fdbf9538151016fa62124c845daae66d25e6059d7a32c9b7ac753a0172d41a13ca5dbfaec9a0d2e6473175b336b59d7ce933fbed80ae3307eb35148cdd49206b877eb1943a57019eb05766f3d69d376db537ab23663158da708ce65c1057b6db675316fbbd9b51923f3ef5b17c3483da33f0546b236932aeaee654c5492217e611635a4d663b31d5b5027813b112f74a0be32307caa40a7bffb41ef7fca39e9588ee74b32e2be5f0d0cf07e55a975b9e046bac5ffd3836511fb0985b9b04fdc2762bb0adfc5313d51ef602d518707aac66bc111be181de5ed684af6551abdad434d8d9bb413347455346925b014dc5f7bb4fff90e638c75826958f9e7a2b72f48ac4b33298aec6104beee045663d16a2625bb996f821b61c6de1ef27de8462a715e7f177c7f18ef4fa26954454d741bba34a27b33a4b31797540debf6f161047502f7fdb11845f274c891ff3b030c398e2d3bfdfbc6f475227dca81e06e4cb11222595e6c8e2bd206ec16906c26e981985027c0debe3db051b1426af07c6825f78ce5f4fd187db832305961f4c27745fc772f845ad5820490d85ef035b416553b6f01b5dfaf9dfe68e3e2c6354f8eb473376add79c6468d6dbae30d1db47341d0b230328a31454469d675f07ec66860099c4d49a8dbbcca58bf27217b64667b3544f4a511ee669436957d829ada1e8adbdd5e6d0e08da01bf5fb6b57d4043e55176605b7b131a2a5669d4d4810db063f98c060d5187c555b985c195e100140d5a3ad07b3351039d440f0defbd4a316e5136d4e698d5d990a47da00738a1538ab7e9099c406c921f271ad11204573f2b10a0cf56313138d1b04730c6de5f07a93e8c35c20d8cab9f11b8d667aa982434ca888731c6bbaa9cd9eaf1206b55e051d52087471815c51d0f539dc358a51218d75250b9a7106584788c07318f8ea086c44e5ea974d00676273c368992641b79e69556333f21ae3a120728304e79d20f67169a51d0f2fd78385897329138fe03c25f5aafc8b0d2ec0d421daf1b7f70070f8a47eb4a3ccc47b308053ae98bb1293a192dcb5e5faefb9f97ebcb63ec1fc875e7cbc79f7f31b4477bf6e7e5121b3ad3ee4208f6319796362ecad42144288b120f997804d6ea1c0ac129e451336ec5ffdebf05f8fae57bae5dbbc7a9da1bb3274be347a0a6b5a118ec0f4f99aaaba2ded76649edf275919df38d5466fc1cccd5b3ed81fd5307dd29b5cca2b55d6f8e2eeb7518b5e83f2efa3961fdc3a7825618d5ee6f1bf1e679e18bfecf4af4e24b2cc99b46d05f4f40c76702c0647403b36e390531133f6990fd65ca465e4bda2ae441148393f6be68fe8f43747a07f285d0ac555254c5039eda9580bb56090f05f8625ff2cc320287b69c8c9648f45f1a53778f029e2f97a69fca42cf0157eccd10bd15bb3960204aebd84921f1a5e899c07fd147600fbae8b50831e5bee384e41d6c6c3542568294816fb562be86229bc17c4a7206c44a0cdd89ec40beb1200ddd942f11add02869db75f8cbe40395250d4c87630c7a026306603049e7b37c3abdec38cbe9749e0126443300340c090330e63913f44ae5816412431f4872757a29932e5898e2e4bc0d54a790d1493a619a1843ba9e629c66179349d34c2617b394b3543d0d00d8341369a267647a7b210914ac623ab3343d3d07f3cace124b5b8887d06bd0bf8c46620d1a6b50dfda6e9d903c12c536898664ab56dfaab546d824d247cac0bd92120d476c9282d6a8d40b5aa3b4516b4706806b506f480b85facdf83052ac9dcbcb82423ecc7005f029a0c4a8d74886e90430016610e006a114401383ad99cc9c368c9464ca108d886800006aea400b85b6c6e142d5c0fd27b061dc3e37a74122c30043c460211803b593a69b4ebba6695331b898720026592c002c63009d9fbbdd586496969fcd00c70463460003c658b70d1069127a3669d8dc9c4d802851e7dc4912868da90460ae6b066606104a20e16840404f2512854cc636f3c5623eb760999267a44f854c1462ea460203588b26e124356d188984614ca78946cc450b00270cdd24dc04c209a4a6744c2099b5acf95c8ccf3c8bdae84ef4c0cd2ce4e44f6b4b46363765927c4e666887dce740d39d8f3c036aadad2bb3384136c4c2abd5ea8e9dc9d8ed5a753516bedf367fc7b4e557c7363511d44c5bdad88d14a0c2fd66c6dea98a226aede1e23e1fe4b5cdc782026d334eff5a6805b510aa0e73816ed152103a118479721fa2aa250e9dcbd7aff742639edd7de9284f9d5097afc7f55a0942ed4570d09f7affc77ff4fe140fd1ee8be876f47284aa07bba7aa147f609e1820d152852748b02b7941b7cafdda1dc9e889c2feebad32bd86e6a6894e87586630353f446ffce814b8f52e84b375ebcd8ee134cbe8dec0fa421c7ef5091e58443323ac45c4c7901a851d4b5c67d4e3c96e2a7bfdf2a10b33eb31a4bdf2f031b59644732b8f1c558b49bcb976cfea8599b50833ec655397af57e663c4c1cef2865a80a9ec6e36d55e5e574b53bcbae75a79212012c461399893c3e82ef48a014575539b5e811fdef276f225f272fe4280da9c3f1f203c17ce0774d3f9f38cf937d969025966f4c285497907e5efcfce886dc3d89c76d09b022d0da9f4592ba741696ca8794d01af8b382db718a86f28fc7d018a5cc415364f07ba1c6a364f41bb28e244594ab143ce308f8fc69f1c279c1de67c49cff3c37ac648279b898c611b2b7a8e57385f653a399e48a713c7894e0f735ee579fd906eeb9944339936b2fa2acfe9655d5fa13a399e4ca7937f12582affa16eeb87f43caf727e98eaf88428e204e16c95f30acff355dd36541119fd30cfeb4b9c1f665c15216a5a11c972fa8a618b0625d37f2f6ed30c687eef37e03fc17b24a747933635bcc8dbc56d693dd3aec31193a4fe71f584f596b77cf8ba959d79f7cc61f3d7e03dd6e1e9774f67adebcf5dbf6e9ea8fe638b9a9f926b4ec9a467d0022a23c41aa4a1f0af1d689046dc03453d60e8c2ffdaa529c348b15d8c1547947cddf33c2f03bec032fb3ee54c2c6ac6739edb1df56356b9b93f3e59c97e0cb4bca8ea004659c77377957cf73f610467908166d032da569875800f870c92d286402e738d7668ab29574665e80976fb5e2a8b91d3775467fbe8f948d4f023ae08b9dc30e08c63b9aee5f4d561b5b070d7c2824497436182f88daff5027a30900c0e7b1e11e0b755d6f804ee44c45d6c041c63c5bb8e00f3c676733b3e96ca9f4ae4a2c4b18e3d5c51fc130999d6672fac5ebe7ed74edab52f5f17f1caf44fcfe800eb2bcb276c5b468037e2b3e469cbe96c2cef44e558ce7ce5fae5d30fe518bf7e5944288b3f00d00a8573870e35d473acef55c9f3fdc14fcc5b970dddfa89129f93223a8e50b162c754140606bd710f6afbb15276bbddb8768503891139795c16ee42c07deb07c67a5f9e289857a2f7407f44d18b1574046d4bdee044b6e53081df6e55f24d9e6fb62a4eb1492aa4d96ed61bc54abb1712a703ca54faa913f3fcdfffc195c73e72752777e2f5c71f3e967bfd46e95cc5653421555a9e36823e48fa57adae85f2d23b4a4b903f0a680f1dfdc92b5750d4de9ed46b7807faa7e837f76b6fa850183678dc5fe4b0a7d9c0426c8293d94a4cb2dd1c712b3bc121ad52391ef1791bbaf5ccd79bad4a984764cb37f313c62c22f6ff0c3442135cb313dcd45882528d48df298c50436349c6938ce98a9ec18c109d314e0985121041275183b1846664342e72ca8c4b40404a8929d1a4d89a08428a60a0249025532cb5ff61f3e891a01a8bf334bf53ce9580434f27c6b919c448732dc92825987046931ab7384bca167342302658d780ea8c1994714208156dd544e3099126078c26394f1b86ad1bb6615386a5fb5b419a61d12e2e5b2c63a5603d6c2dd5c8cfed718b8a722806a87f2c265ff65165205fbe9555ed0ca9111547ed81f79536770f98c1fb948685e538df894293be0edc0a037f0f91d38a3d34c1934fc8f7fb26f8281f3bc737b446ec243f6c52eb63d5e3e6b523afbe666567de357dc87c017cf3f0b43f9db5aefdc8e16bd6f1a58fa788f942cc375907e5d06184c48a2ec921aa87ce09da0da60437a15f39710c4a35de332493848e63bdb8cd92bc633967e0371cabdf4d668807e058d051a1cf274cd772da024cf57ffbb7572dc74cf43023c1ef501b326811a1e2e8492b0d1e027764adad1a0a8f54d8fd6e9b9a828ac0c891a29fdd4ae515950a78db62883ba18f2f55760a1d41e725ffaf152baf7d30d73e0d0341ebc0dd990207309514dd920d80a9ff309191efcd297b79cbfc2bd56a3da33baef5476629db16293b9d892cfd1bf3567a67395b52cbe7314252c9213f46ca37c6a951cf180779972a0ef9cd0b3604784a521e0ace26863fa140400412dc9004eb8e053e21cf7b7fb04586da5c461be36dae8e7abe13e3de3ec0e50aecc6dad67f3ae4a97a929870ee8b351fd662292332df536d539d915454e48f448982a45fd9010fc6440b6847d08d433295f0a130665a17b05f54acc454f67f130951a4c6c1f28ea8feca191156b887782e16efde6a1d1771e73def75737322ae54ba7ef1656e2811f145d4ceb268f9d907e583c25f44c489add6ddc5828c9c9d7bdd6dde791179ffcb5e76bde4c670ec345a425b08399518f2626fd5d8a435531f49e44bdd8c8e405cae8eac947f35783524eff8f6e832f9aff1b781ee7337685724970e2be493560c0c9af1859125315c77776cfa239fb7aed4ea2b6bbc52e7c561f70bbc38f03600cfcf1f66abfed4e34fb0c3f3a5f5f5d2fc61f6c4e353feaa7adcadcefa538fcf56d74ba5f5eaece353be0a8ec8c915f7fe34babcbf25f0819b206e253ce212b113c8bc57952391f537c7bd26c59d23f623f9f963b1d8c8c6f78bca354969fd9e711f44030979cfb1142f29b49f50faca8256d946f721d41ee77b09d07b33d7ed5231aa348254873dec1a7cc3e0dcd8101492cf0df0e4f9a9d41bc3d025cbe9ef0e306b104be38bdcb826f25c934abdef1dcea0425dc7ea86c7713fcc3ed0e9f2d1223a2ad6e44d9bcf875750b47a7627b4f56fcd1f663f3e584d4110bc490d945a5a6a71052b6b408bb8521a3469c4e3cd2d0eb4b1940b1481d01e20bc937a94926f38603dcad017d7cae5b54c796dad9c21e6746a9cfb4b712267823b922d9bf272e63d2a9f2c81a718a6e31ce4949be61a8acb744f481e5707bd09fd5df4aca0065b02c5e6ad35a8e7eb2db55d5ac553d0aee7d742b051cc072683ed7c683c284ff06a04cbcbda90aa4aa3be008b902f8e9a908f3adf1890df43cca15d5fcfe8be91e192ce7d1433f20ca6981b947631c598e20ffe3c11cf3c63f4236d9440e3dff9d31ad580b8f45f07cf0f264c655a9aaf67eea60af9bcf4f6b53367d6d6ce9cd9ba743726e72ffdba6e1bdfbcf47745fabf77d248f3bb0083e2a860e82874fa35af91716fa32c708bec445acdf3c544c18437b97f9ff26a18f70f33f5bcb24b35139702f2f2d292ac736ded4cec6c5c462df472f466849417a6f600738afc4bc50dab95eb2625289618f8641f846ab602ea6b224ba30548714c237ec2cef286e2448887998ddcfac25d75cb711ee906cd7fefca10eafebf117c0297e6860b70af5f5ebd30bb1ee351541e3ea6f81012e6f929733d5f9044773728ed7da10ebb387066ad19f344fdf6e9b5e112e478fd1b8ce0dd288d1c548c24f671d39dc838b7551a7653f6a2ef03daddedfbe0c3bb1d2b545ab49cbedfebf5a461ea40477116eda04bc37edb47b90dd5fd9c0d8bb96897354e72e10a77944a3d7c2fe4475c381fe344f43f36ee825824f04d1b7be058c1cfa743fec4f9f343bc89bb27782596493ae964bf07045b4e3a099e0c0cd9769f4417d0fde86184a0510f346b95a961f420777da3289e4315c7c1831cedba2d230a9b79bbbd913b0adcded83a0a6d479651dea8db451bfefcfd82bcd6c9cffd189577966823cffd5fe95c01e8fabe7f05a003c73b9810fcca576222ce0d3dc562cfd0d153fd7fe581730aa0ff9d8bf032c8c3cbfaffe43480e3f5bf13c3c30a12c2a17d0e15e707677eb9fed009f2db112f2cc02f65b87472f695dc56bc30e5ccea8a3a0195da963cf9ffe095b3274bf14cc3cc31bb15fac10aeca73e2ecfcadb430d9260bd852c9bedad80275f2c6cb61bededcda2b49fabd56b5b6299aaa7e0a52254be94df9e9b6be5ff342dfed572b97afaa56c36bb95fd379aa6d9dabfd56c4dd35ecab6ec6cf6a58507161616be25e3bf95cfe7e1fe7c3e9f7f4964aac9dc2f39cd6c36abb2fc5b99ec4fb360675bf64b0bb0b0f0c0c2b7349b69ec5bf9d6dc5c6b887e294a7ef7d0de3d09bc644b43a57cb3de2a32b17d3b81e243cf72bcbedcbc7ea7d3ef82d7ef096a59bded750179aeeb763a1d77d807ca223a824ea00be83178353c0e3f26f1c331ff1327d531b6038d7a256e51b50075250409641bede29022f5cde53dedcd8d46e06cac19f9d1d86eb4023f1a9b1b8dcdade60e34d41c6a69a8b4360af1eb5436361b31838fa6e29049331151676563ab51d62a5c4eee69d8d86e3473b579908cf3003b9983c6e0906d34db51339a324b73b3d0c86fd41ad1fd2f9b8d7c0a0ec9a1106b6a23d788cb7822b94ebbd9682acf02f5a67a97cf69ed98e44f6a4ea8634b2bc637decf6a9c6b0943d3129a4e396f16decde5954b40009f07c8480b0cf1fd7a20043021b5fd3dd352028433c0308d19c6780a284d632a6d489a94528b26b238472825f34ca7c0921ae194ea8ceaccc82672551b30d6924c33d90a60b00130c516e8446326d30921ba00c69860c830539aa7243861262516609c14c52631d5d8428a5ad43234c3d0e6f524e5da94a6cd0360a2d194a159185f3f8329c584d29f34345bd3312594908c667c4cd776b87e54d375ada269099d3bcdbf3d3086613883316690c1789e40428c5102e30f1ee47dd79a36d38cc3b4c887a70128a5540e854929d06406282184524e282358714609c63a174da53a03b08101400a2800d6349d3142b0c62865405249e9392429cac4ba288932a6a718b340d716349d26f46dd193ad39ace105ca89c60dc7b87cfdbd14670921248be9ef8b990780b41856aa87b8a8927d65500e4da13979dbdcf2f8891e993648c1543cbc1b5a05281b565ffe136042fc037f609860e6fabee77aaeb787e40f1af20712d63f5e3329b5a2ffc3b5b9028d083f13ab1abeaf6009bd0ca1f6414a72d14d2303a34d79075cbe9202dee0cd7c29ba2640b6ed0523b81825602eab7b558c6745339e8523fd8e99f3a0f3710733fcbef761869d8ff7bb5e68f0db490417ac78ea1e162f282b213d91ba39b3eb790ed1b18775e2785e2734f11d92d7ccddec56a48a1d3b412bfb6bc8847ea60f507e891c4cabfaa58ffb1c3a13dc543332ac95fa09683544131a555e0ce576a12b4fee2c40b3513c16b1b3e1eb0a73ca993cc13a62245c9718bcdf4d7c962698333f9b2fcc50fc99848f2dde156047a6f218eb0483d89183ef628cbbba49fcc467309d779cf9798719ecb3897e979bae4a34ec17c195763f28e692720289992b34272c4bbbd41d2722b329f0c6d6a83f4a30aa19cea60629fb1ef871da90208e92b1fd28cee44abed9aae49bcea4a6904abed9aee49bd0f5d4bfb146ec7a5e473abdf1bdae27fdcd0f55dedff53c6f5816b829b57eca9272a96835e9644539605ddd87bc3e0182846dddc46e65d72999b5c4a25d5eb38cd55496626ab1f1e5c6d309c5840e6fab7a229b3273d9d4f3d954cd4ce223657bdeac99258767f9f88a6516c5f4cf72a6990baf8dbada94fa2872fb20823424ceb913c8449ea4318634cc077a98b57224fc12a77c281b1b32046db46a1b2d3eb4cb2074f6bf47b0359776cf2f17d78bf91567a13dc574aa69e67c4ac64da9386a48abcabde59d9de5fad1a3f5df0a59b88b986838336fcd1d3634ca32497b6d862518cff0cc9c357738c180513b691f9961090d6b84003ca40a58de4131594105ed489bea4868beddae8c094056a151aed5aba7e0388ec914f276bb513d703ae123f35645ca04de36242a5902c896ccfe474826f92fc1b49a9154e5396530306ccef023a18860204d79c232af274c4b8a16a4ace547c3bb86a40bfec85e8044367c73e8a8bc1340b92869a8f93c11d8de06fb98c7dc690e546c55d20653974884f2d150341b737c247235602391e5e5159c335359767c032f49e6e1f3b6c95717b969a72967474e24ecac741637335bcdad4dcd6fe5998253f3170f2ddd3ec32ce936145cc672676ba69d4d618c8fbd7666aa2c1d6ad97346b96de3b469e6004fbd622bb1688be4b5da0c6138957632724ba4d8cc5c2147a03633bba26ea95576130e7251132127ceb153fbb61158ce05ce6acb1a579ab451df5e34a753671f7cf06c6ada5c5c5a5a3c325fa9cc8b4f2788085ec336630f9e3dfb20633377afaddd3d53289cabd5ce150ab7adacdc5670199bbb7ce8d0cb67549ab8ff4c1f9d0eee8208acfc469ccc851e72e32e32d55cb506e30fbde92a3e69551c6b3a794fe0eb554bb27b08c9d9d9c2bc883078b6de86533c9b50ce7c2bd38b568af3b38411c5e7c5f8ac9e318a756b9b558a22ca2ce8dbb053271a59649ab4952291ef76018537032ee9a181257bb3259d20e49ba25187a0d5742a2de9c7243fb84868b72339ae1dcbe9783dafe3585ddf0f4282a2ea4029545df45dd715f4adbb87444002ab182c56374b6c68f54008b351e00a02f38deda202c2c58d5a5bc1e13830c2e891e39ab65cabdd76864c57ab77cc4c93c76444d53b43a7abd5db67a6bf1fbafd4667c94cb57ac7f40c7954e589928411f70c9cb9f18896546755c40d2a36ed8a137c48d3ae94eca64d8267e4793de9d7a4eb79e0bb22ec79ee008b1bfd481c31949f18c8919eb0513124832a4ea4d1c4f3cd56bb540c3d0a484ca32b21446f37704ef19d9ed7ef45f2e7e066a79e525adaedf57c3fe0fc3bd6300d2bfae7a045e903e4b858c1d566ab52aae49bfbf9ae2cc5bd22355b95213f95cd56451cd2fd9ee74167d43fe5c063e5eff47ae1db3b7a3dafd7db1df7441979a474bd48ced117582f8e6081ad6e7f1ddde83c7ef3d0c8df51e9bf6dab51ae55d686fd76ab3f65b6106aceb74e411b3ad6b4b9b0b4b4604e5b67ae5cb9aa343c04c58629010cca19a266f2c4948919218cf0343f73e5ca199ee6443ce3fc524a25c38461f0289dbffbc891bbe729bd72e6cc95dfc5141b59c3c81a98626e6a98606e0ab25333996e5290de0c4442ac9c18f0a98c20e04c8e09d64c3e62db5aba89f65dbbd2e6fbdf1efa37dc4ecfed1c740b4b77b71b5b3bb3680d5d446f406f473f83bae8d711aaee477bf0145487a54ad2fdcd810cce1125d8317bc861c55e32ca88939cda518e747b12ff3aba58b233aaecc1e8ea0a63d23d4d681bf93393d3b83cc95656c6754ee0482caffa527a23fd6703fd1111f7c23eb9c5cb318b2391f04361312285bb4f22eeaab68db6b817cfacae920c9bd88f19815a4e6772fe40f72baedf707e4c5760487f67f8e68ff6cdee82f6e292cfef0eb4ede212d16727c8e6dc31f3e04847c79f249f0bedaa05fc153050dd2623f74d632394a9c595abffecfc1b66e7cecccec9af379c0fa4b6d07de4cecab1634f2d2f2f2f3f75ec58e5ce47f65028908df1c37d7907db127a2006e3793b3f08f2282c91b481be4b3d50d96df1c895f6404216c7579104f1be12f4babe2b7fb54c62ddf6e4943a6f7b9372c6e7074efadef216c2294fb2f7ca719273ff4273e379f1db757d578aa0be85b12b07f46d2d09f83ca069c3723086a347016346dfe758a1cd301ba1f166d5dddff9a62dbd92d963a4a620efa02bfef57c1f504c9c72441c91dd2e78bedfefc58cd97b62958ac393463480389dcba8a1d6605cbece2bad66708a4617220e3f821b5b53477ac1712a1d6f3d390876a52301f9d5ed00722c57c574a2d0902f3282105850c7a88f30f2a1d3ebf546df1f812217ef7dbf2bde0edfbd56472892cfa9a5103b8beb436f24db62feb193271ffbe580c9713d8a79f3cf8953f3e7f23333bf131ea0e9284afaf80be4ff45e422e44cbc78a4d26adb257578ec2e572a5ba974d63eb9bcb276a85a3beee4d8f75d404a8bf86f694eee58adb6aa840de9d456a5b2f2fdca5e70d40cfb999f152785acad32c9200aa3fd0ea0ee3e0757ec0c4c4badf949ab6c7774714d58548372242e041535ea019660ef43288e586ddb4a7c2a597abd4864ec584f8732b92193fd0b4f4b9fb697fa3df0943b12a553184b21c9c1662c3720e5176137e069201723798f7b31ba114bb621eedef05a208afef3e0175028258ea4c5715c62465005edb82398b0d7ea325d27ba6c34bc27566da8de4c4d811ad1d4fb9fb59cd95f5416a5cf3e2085e2ca83575729b9c85b801f70acea2c7852f7f201717ca9a0829bd26e7a0a2da10d746230afc721d618a9fe1403d2cd7dc2d0eb87e72f4fb21f7d411c2ebf1c50076f1af9055f39a790e7ef33ca45c5eee8953e31dfcf24e6d3417ab39ec0771db34bbe65939e62886828add421876bcfdce46e3d28eeaf74cebe7df3fbf626f4ad7a939b707f30ebbfa727df90fbb4b2073cb06fbdfdaecc155dddfda1fa367e0ff9d826ffc1e66d3f7f7cb7326f23c33198f91f72de6e41effad6e7ed001782379db7a843a14e466cee6f69dee234cfe99bf8f329d7d62154a3e2219330f48aad848bfb5244870ee8e5fe74d21e6274f505894c4de8201af10173dfadcd4c7bece660257868867e8a04092cbdad2b0ed88133e4c42e1b5e9aa7db55a040c8cef2f20e214061694b5b58bae831ba2a2f687f76c2168ddd4d5cdeb6961aa0678ce59d9d6523a3c39172e6f852cc77a1f27d794fe8d1e1c0ddb50e133a1a38418f4f19579d3c688b75aec67a595d009cb63a562597ab581d2b0db0b074f1d3437b6ca4af57633d6c5b2ca9a98caa10caa97d4cf57180d7dc1968f4c504f9a3ba7ac5cd42236eb85a892c5c1be13c4a6307699535a2d964db279657d601f48c3e5075ba7ed976d33b7785fa50b1eb1d233dabc6a143e70a054d393f0cf4ae2e5fe72cf7d069a59a15efc333c33a4995d63e24b89abd834f82fc7e94b65cee631e3de07b21459d787a3f6f1b934c326e39fda7ffdf2966dff4ea3e7d041d752ff09833b8f8e07ce7eab813a6f8c5bcfeb00baaabf1b2670fd61b8307fcd1bb7c45259ff647affaf543d33379dfb0075d40a2ddd5fad844c72e16fcf9d19685a53d33dc93b0eae1b227de951c3160fcf1d6a97a00c5ae2a8ed5332cef5c42af408f200407fa8a51d2a162311643c2eb3dc5e6751a139dc8c49c1bb41bed3a87372f4d5e134ddd64a7567e227c5cfa4b66ea92c8688850732853ffd50d8991ca2c27c1dd6ff9717677f39de1036c312ed1ffdf657c2483b47ce2ecd2d6a5213dbc79741cfd88d8d9ce0433fac1d4f203bd66b191b3691ff6db4439da93cd989e6538bfc581bfaf819b2d702688c1c204c36235e88c6616ef9e19ca1716e6c6520cea54f70e8f4bddc67cb455276b520c2d92c8a1a11d334893aedec7bc29c78e535fd28603b3d2eebe87194b829af6984fb7984c7da0df72186d845aef11b9d46a86feb959a0dbe28cfc4a698e5278ebf88260ebbfd0e9743a5de9a853da64a3e8be60df571451b7e375f650c7ebf47dcfeb0cefc52c2a4bdfc8e31ec2f964e23ce603fc67463d840b4a7de0e8db1ff6020e233cf09be88c3843b789ee8ff90dd88efbf3c377e3f67e34b23b70237a351435a721a6e9268d0cd4c610b3518ca1d5c3574edcd7a6492e60e2b6f46579efcc85d5d50b33f74a7b10cfebaa3b4ca38b4ec16b0b98d296d4f37c451cec82827527dd760a910c653180c9b1e5a2b867c581c1ceaee23a0c065d71261c7019bd705f64b162dd2759143de97f3be475a55176820e75ab38ac3afd424cdf52ceea6e4faea74434a6c5c0bb405d4aaa9aa82df625c4ae56882ff2b81257b8c89d9138d8edfa8aa9277ffacf06ba255ecff7fd300cbebc81a16b39e2173a62fb49e52bd7db43dd40d9cbf562f707ead2e3f82a6aa2b3e865e8b5e851849c00a48eb9a9ab862fea612004ca9551ef75247c511f757517be507cfcd0c0c781a7e5b3e43f79ca42d5835ef4fa928cf0479e03cfe4eec05048890de5534f4d723766461458ddc4d24b568f17bbc77a2a585f95617691d2bb1324cafd7201dda7b843628c2547c80f7841e005f0d8dbdb859e2caf764089c54014189040ee78f96f69666c3bd32c4c4d4da869ad5edc5e58d82ed6172facac5c08e0d9bfc3087e5cdedebf25b96b136b6e0f555c1f7eda8d37c3d45259e73f36e71617e736cbf55af943617b0af008650f48b732f74bc77f5e2aebd6eb57b69a57eacb1b6f3975fa2deb7fa3b8bd30df2ed4172f2caf5c581ca23d96e5a8541aac9182bc1d136c9e846a3e7ef7acd81ebb9840bf974c735b0f6e574151d0812e78d836fb5fc358018cbf6c7e320c4227b46df611120995c4516054add16b2e02dd1259a1af25e84fab9b2ac4d74f3343136bd4a3e4da0303f8f1c03542152b5ed5e12104bbe0a123b13ac2bb8d94eb926223a865a8ba0af4547d5a827619e7ac2beb0b6ab5c26a29f199a9eb26f345b5439563a96b23fa979672a111bbc6e6c8f3605fbd30d8809e139757c5c201be1d963f0e1dfd58bee1620663ef8327f65655dec4c623630aa968d2ae9f02f0750e3d2086f2d56210e801d7bb7a8a820f84a84209011f682a3ed68755998d40e6340f41202cbcd18e1c57cbfb126197b32e4d88e195df72d0a3a1ef0e8faea83336f6a3eb68dffa225cca7747eb7183311aad203e5ee1582711aac6dc604237b484e806b614313ca284aa717e331fbaa1e210d49be392850f669607d3bd9cf9e0909ca11713467a71d40511f4502083b4d0acc0ddd890478391bbd003b5ad2022a09bdcc8276956a1cba96cf6ee330fb6b9c17f991bbcfde0d948341ad9b141e7dea347374e69baae9dda387af45eb1060219d434428ebce277a8ea43d03a0527c17bed392f448d2cefdc6ba1ebdff9c6e47bc262df937ce39d3e02f4babd1e74c1470e42ce86c2c602424362617f3d357d7c6a1a5ee7790fcd4c9f9a9e01bfe4bea6b1e19eed74ce9536365ee3baf2ec1fdc51b38ecea207d01bd1dbd04fa00fa00f23d48e59ae49dd8d98f1041fe159c80b5526e8f14ef2d85e1c214ea59ad68867bb98ffdd18f2c6874c14fc9143d4729cb707b8fc46f07b274fb28d00d917bf2f8e3c2f8da45f8980cb77023f54cbd6f0fdf1dde0f7670695d763058adfaf0cca53bfddd1884f8ce4f844b46e4337557e6c354526c5031fe512f31f789a8afc4cc9eddc0c01b518d762057ea34b3389448676011c2b91a19bdd4d9a49580efcd5b1636f6d41cf304da3ef11a93769fcd44f19a66311f62f3ff211b95e7bd09376be08621eb203d0115dad29214737eea743c9cf1cf043d24bddb1a5c2e0877c85b03f0be8b094868dda3d36db95c16dd9dc99e094fdcb31fadc4853f040de6597a6707865d85dfb3303ebc484ee0757e7bd0a2e8c3b7127317f460a4a4922235f1abd648cc8db6d4a9b853ca9e49b8abbe6eea14e8876b3e38296142de8781e3ce051d6eb45d5f93cd97f4a3511f9b1b935c4a9e3d821a15bade4ebbc55b1832a3da570061dd7f33aeafcf245811839ceaee7edf65140b8a281afdf67d09a80fd8244abc59d0185bb2dba7c73ab560f1d18c217ff30b180e9b296b96771fd6e7769e1d5a7a7d345c6cc34d78ca495ccbd5b5e768452870a553b55f5ecc2e1d76c9e71d2a9e9ac9e66b49836b21acb59568129011ea095c0f7d29af22b10bf2d34c6ccadd7b4b8f721a5f2fd6b138a4c1d2ad432c3157f95d1644617cd4b38b279a20ba43edc85c06f4c17be1cb425e62929002eedf85da5316f88c5c2761dbe7cb3beaa867df4c0717b31312f1a36344747a46c2ce87f000e71fc0655f92d41b1c2bddfb3784f46ab13bc90f84351e6bb73492b69687a264959313d7dfad50b4beedd00b6574d656a854329d13656b0ac1cd3ec44ba48595acf4ea7d2ced9c66b0ec7ed5c5e2e6f7a5c837ab956d9de6c9e0a7d493576a051ae29dde6c0c16e4d2b16349e5f90773a1f836643b6ad2e17539071a3dc906747bd5a09354230c2b336d529c66017309eb5f56c42333573d63428183ac0542e93a3a9879acbefbcc8120c0098a9d92e64929aa5d9050cb336e632d4f724e1f4a6541603e06c2a65073a7c09adb03e952f63eca4d61f5eec4d4dab9b892c4bbad5b553a92c017052afd81dbabfa217e810bd46e0a3616bd9b6546454a67cdbb5babca0a9b52d35bc1bab50a9952b3539065c2bb455929a546e3c06cd1d380ac16d4eb57aad5c510eb554a3e1055cb0358b637b1664484b66c0b535537638c12ebe73b9f990c57299dc148851a14672ced44c2d91d5ed598c0b3610a03ab567317454377e3ae50010350a405296a56e7a9a9aee2d3eb29672302ee7a7d60b5a22bcfb294809904dc5f58a2c49fdefa013a3b7d555a3db4f4b21895011a4d0001ed69bc54abd99afb4a1d42af522be225cf468465de5731aa48a7fcf72e09b4fd43ff0ab4f7ca00e17040a17614d3fdd359249a34b3412de5d41b467e43d36feee10cf5540e655697df103b5eb663213e8dfacb1ddfd84e2ddff7240dbef9b20a86474f53e14f7a7d140db08552bf5a1b3af548f73cf8b0342b319dd1bd2e4953af43e97fc178323b0ffbb299249caa3e8fcc5adf8fdfafdfffc92fb6bf98e1b9e82ab09538af3e33ac15dcf1bf63f3c8b4e21e48c7861892babb783094843603a31fedd5157f94926141cd9430196eef92ece9a7ddfb471694c3779704749b7a398499d47cd74da7c74e44afe19054b83bb9f9603df350ab04f703e32f04152815ea1ac9dd3ca85e047142682ac226358596af8efcee6f3b3e2236a8b8787604712ed0c5b03b527f0f35b217f744cace4079d79305a1edf157493ef0ba4f0bb711971748dfac0e5a1a0af24fe38e6f770e0a3b4824e0be816b745885b250cd1c8e18d06c13d3da723ef99696031297f7d708b8f92f4ef7a125b0dbe071cc89726adff0bb01a052fc41284ee5e4255d218e3f27b9377dff9e23ece15c4fc84bcb21c5a89a0dab0b4b5380924747b23157d6134a237da256f823202461e72a107aeaabf3ad193d444474e9f56654465feafe1b21de55022d6a8a786c7a517e9122bdc6b49de027242dad147dc9efd15222abcd96e169b75de6e14db95c80f668f9bd470ac5436317c8f85c798f3b9c3170ea7cfa78f5cd89899bef3d99ffbfdf7fcecaecba8f196d099e2a83ccfeb1d3ad4fb1b77dcf17f7ff4f0fa470faf0ff9bc7c3bfa27e8376ee2cd30748ae0dca2cfcbc60fe4f37282cb4b650ab58fcb4b1ea456ce2e9bad4a4ee307b9bcfc6f44675ac6484ca5938eaea735cd209448b7925a4ad7338661736e69188012c21933393729d3601328a506d32cce337a6a2a616434ae1342f05190ee2ea9a1319d528d1012b990e4841a941994f2c0b124a409a734c158426bad962939d0e725ac27f38691d2984644e95a5ad7b3869ee2baa9690625e25f9233936b16d30c4a296534a9e929ae25658558d358da48e4cc64d14c1693547ac294ff3442f4c0aa9f0c6219a19c8af6eaf425aa614c0116ded9d30c123bff1d544767a58de990e1b0da47f5497c87763dee638717e3bec0873d8ab9a1183cfced0e3f3a3fd39dce048f99e9eef4f341f8f9bf8a3116bd50c61efc7e68e8895b8edf9dce0411b29020fcfc876242afb86fef37fcffe7db1bfe648d185a59d7977881971379339dd84aa4cd42d2e5795ed675574b90b5643a9d3c205985735733e85a229d4efe49ebe2c5d68bc942a2cc0b7c49d7cb9a11e64f68aeae97799ebbc982ca3f3199c145323da792259b89f40b175b523d28e6f3e71cfa51f42e84aa3bd0da8146f8dd50864ac136e6e336b822c9466363ab11666a6d6c35ea31ce83dcf7136c797933e2bb34a1c22205238e11c1e66cea51d8a9f3143f932898a1096f91e914134869ba633183c22bed723630e5dd9e124b9e99f32966d0b310a6801ef45fc0b0534fcf263ff01100ca487ad63a5fdbc6789dea449af126a4192fc39a74710b3fc12cdd72283e69a458f07e6d3ab2fda51add081280d7e526afef18fae3f1bb3a2de422043cf01cc61b3c5fca97ecf1fbbd7ff909010c12f465e087febbe4610f977ef91e20949293ef74032794b17bbc71ccf7df2184aa4d75fb6d5ddd5f1b708f5b1325ccf0ce7731e7ffe1ed4fe02439ea3b513c7e1911197954d69555953dd55776d774551fd347757575f51cea49f58c46734933cce8185da3d289461a46331a0949204b2510206404329784c0a20c1873acf8e08505bcebbfb7ec3f8b590c3cd6181e8fb5d95e1e9ffd801ff0bcd8c65e9bad799f88c8accaaaaeea1909eff64c55454646664644c6f13bbf3f7b673e3f335eb47cb5eb06ad7163269fdf69dbea9bf4e29a54ccd6362a985158473b2165f2e5a0c165e66b3f1652c536625a791514a4b375c2572cb2cef470baae0bc1bf82b102351ad5c387420310e6b15e8bee43f7a3f3c2162c10fd6e800ed898089c79362602f79e8d89e0ae6c8339420781e5cbadab6dff1df722e7d7dbd60baff0ca0de7ab819943786c2ca163522bd576f31d82742b1c9bd3f6d429b5c59d61c0c1427915cabbc0f7fdad3802cbcb61d0504d7a9ff0fcbd538d6ad97c321a4de6b3c961edddda70329ba7e4c0e044fe457e4c222c9ae485c415941c00a42837f86ec0a0c01e4c4217cafbe87156e3f75e4f465984f033b2a0bc909f0df155113484762054298f09bcfc32e7f3263a117e737453c31fa420db6ac04aa101eb7fbb4c4d5613b240abb91eb6da11e1f62cdb6e78eb965d9d5ca90baff8aa6bd9eb9d063a7ed48db65caa864e495eca970fb61da9e55b6061168b15ba71017d8fecb07ab4759380157342fedad0a03a19d30d431f233a952c8e4cfbdc993c2db99f8b17753559d4536059772ccbd197c157b4ca34e7e2e439dfb3fb12cb75e197e6846fef959df8a52c940e47f9a47dca84b51e5e377bdbede1fbfdae132deebd658302b50d59d50d3921fc70e96728f0c33b7d0b3ba5409db8e1ec12ecaa3bb56d80da8e9a6eeb2b70feb28f6f422d43a98520def23f6c294adaba874dd1c5dd106df5aab1d33bd1d2ed8e23b6c9b9cdb0d3cfb73ae37cab33ae6a75d5f94bc34e77bbf42fe10e6a67053a6e176ae00a7d746fecc9deb17260b6e52775a01b0bb19d533fd0cdd6f728edeb8edd4bb75d7d7b276f4feb81edea3361e901a987fc0002ded742f362b70d69312be950d8c64a3904cf19588f4b55b365dbaf1bce9d5c5b3b991bde7e6518f3efca7a3b58c5a70ea5f714d64e9e5c2bac650e0d9ede134608dc73ba03af6a13eccb44c9f63f9d065cef11003ceb8d86f09caa057ab4664d60e9894f276d1543677bf8e9e5f24bedd80d228a60f912a208f291b0904a4781a5da51048be98e288229964b8c253a9d0029807e797690001851e172cf1420002a11eefd38614446a2d111d38cb7c2d41150980a0ad0980e74307bb90e40373a122a44b1072366424499cb440038e11b519508d37505c01c36b18a2d47d3755dd71c0babd81c8e00806ea811859980550c5646030c463c1219b415a240ad59ebb0f7b902a1897c1860d29f0e7c36b7adc3fc4091f9b20f9b274502529514ac78ff594ba5766c9d989c9cd8ba2395d212a97c369ff5da8a5dcfb22ddb3212af29975f93302cdb72b3f9d477b64d4c2cc763b1f8f2c4c4366b797c6e2d9b6f2d97fc5fdd8ce3ed070e6cc771b36ed96b73e3cba843d667a19dc26b5c20a9065ebb1db1595848ac1cb2a9adb43483b68f1b1578f2aeaf07ec6dcd27dff43863713d4cd0b5734a9e2bcc26aa354fcc0f575a0353c2676a00a01d1c81ebf9c502fd1c9fb30783185eacb8902ab25c6557c09309993f6b93c685c0a1255d7472a125647b204dabac02acdb9611c745738b6d45924a56e50fc6234a2262d99370984635cb56946ae6f289b593ab007cee1b3a9cfe2060b0ec58e477e51afc7133665b80e19f1fe00c1ad1f01706dd936bf6ef60b56d3b54953cc5c6d8d82dcdb9d3c351e154b0409fdae0ac706fd808b455bee3795b7d1d7def053ca4a8f7420fe87c347f41c7efed763b90cff68d7db0ef335a4733c8e3e30b2ee2ab9809596c04032ed19e3ff3c01912099b572bf531f897bdb2f2df25792bf6414aaa53753e87a0da3f6eacdc3e27574e090c281976956f11cd9fac7b02fb2918677c3ddeedc7570c599de15cb9547905ed03d4b2699eadd5ea1769ce7ad8eeec026a342ede1019bbac0edf15d87308f2cb95829a2f44a1c046f8dbf6d7e696ce11fe1519888d4ddfbd75e2eee9b1d800d65607cdb991fcd178ec687e64ce1cdcad8235b82d9d4f1b4343463a9fde3658b9fdb2c1ad4c1f9e9919d6d9d6a15db757c23a37155928c5f72d3b5d2ae7c65569159c839c8031c2d24e16adcb5e5887f5c6ba1099af43adb16e374b3ce5ae8b7825b6d508e94dee42dff12d14a4c75d2a236313b560725b7033e12d29c74aedf434940b4bdde5c2d757566137942a4e20b4ed7dd73928c4a025d7ed14fff6bc67a54b745c08cb8b57a10264424b47b418df6c04ae0d2658c4062298523511b1c763f1a1283f8eea7aaea4ea0a36185609484928c65853994908a194c6ccc408674e8c9431bc55ff0c31a8226ea5ea98108289a9aa11954635d58ed078e47a85e8583509b3234684a83ac12a51744634cc0c422821c460aaa9aa96ae3951d51052634bd3e29a913635661245c5bc6cc2d0e30cb4d1b9a8ae036f042558c57e642362a89a4929310d73eb16cdc40a1efaf29661558baa7287574015519178514d8a86355dcf26933ba6ce0d2d0841b442083654fe7c8c156ce9da403233998c1a0054d596b645e244d514053056005362a8e226182ba6ae0d261359a64530c15465034962588a02846ab313f10c95f4bd94679982b7d98e0e07f216b942b21040bba0073ba9c36e0bf11e12b0803c6c53ef3f0b0cc4dacc4d87682cccb9040440a3cd0a55db61929a8d2ed199e6c793a8092cab613486665019ed4157895d5236a2e4c849c8f9b6565e21972e157a94703620cac87cbe0ff0ba544585ae9207f56ab51ecefe9974f60761db7f5e64815ca7d66dab5a0d2cd5ddaa84caaa490aa1c5a1b8d2ea3d6ca754439ed07eb340ea887db182bfd9b729149151b14b2d48f3528b66c9c1fafc3290a866c4c9f236501211238e4fcc88ba18715c9e9359e4e0302f24ea563f064c8be8cf8161c64dfdebbc76a6fec6e64fcd7844ff0fdbf82e1ff01270a10ebf12b1b81f9336324128ee2e22ba2800947b84e29644742b14776a81d3279da1b81796f975f6c5207cb60e5130625401604c01da0afd1c8f44466331376226c4124265e4674dd0d47103d4a1a12b744d81f728babe77e84b227e5120898b26dd683269584943c1a00f58e0476f562c66188a12712358c5b18ee0cd2ea7bd0d8345308b8868d5d1011d44f0e6c8484a04831eb6e0baded040217e681bda81f6a3eb4484945eb1597bf3a69b0585e90c5a86da904d019e5457ce34a1ae989f92cf806f84d9987a369fcff2af6affabdb392d9fa5768898967426b497c6d028ba0d9ddb68fbdeed80427bf874ab33701188880e3c852ed41ecfed94be0813ef7bbba88e95c97ef4cbdac9805271427e64d0a1a6afb56ffdf6ceab2757fad13927d75a4ffc8fedcbdbf82b6e1b7ba61b83a893ed6c347865025aacd169d3a9a134ca213451712a05e63087892e2dc89dbd13470bb67a4eed0b35c77bfa47356652f78c40257839f4a8552ff3e4179f742e7ffb6594ba676e1341965c5b06ceb23b31aa2d114575afd057b60cbec7d54a6b008f86ac4104bfe26c2258e20d0ce444be6397c05191fdf930a1d57a875c4d7c05c6cb9ff34d0a5effb9e0359c7f9898ff6383057b87bd1545dbd00aaf3f2c2c1798e38cab0cd44c71a370372ccfcd857163c6c2f016f544e237c7ef336cbdf9f344e2f537e829435a3e5372f810a59542a1522934ffc8af3094ad6452baa4ce273e32fd2021b03f31ff3baf25441a4c9b69fdeebb8d94d9653cddb31d1194405b5101a11073e654800f06672c51aa74484c18ad14e0bf336d246326b5998333cd5ffde9c13f3df8ed66edcfbce677ac566483faf9837025b3cdcc88c65aa5ee00ced1fa8365c6fbf4d401590fb191545114e5d1225aedc4149f838274038e02eb0aac5d0809d60ba19e7cf7d3fe9c793aea6870b5651fd39ce8b10031cc7e363029f721e7ec7fffb43ffddeae39d151dbb28f451ded981dc0d5557dc377addd7961dfcfc2c5e2ef87e3b3f74329f1fd2a37f1fbac052e95bcbb223e1de709ccb3284aa22d2d4f5cdf4fb1522ae79c523a37213911be248c75b028bc40c22fe41340e55239c74ae51caad7dd6a151ab53aa75b9a6e5d1a2ed61bb55aade67a5ead66d9f57abd5eab55abaedbe0f48ce77a55bbf96d411535eb55d77505a553ad76c5259c43bbbae77ba1e3886ea4293b85ef2d988a9a58538324b81d4465f33d2d4971f09a8ffbbf2f7712916187da406ffe04caa267d02710b2398b14369ea9b4ac5d9c6ebee67f311b65fb0e7ec1a5310887a27ddc1c4ad0c1597bcb846598ae4b0cdd34cca1c4df68ccc49862c2b0cad916957348aa08c42a0c6b08d1996a52ce2125222416390e92195293a6666155c7824352f9e5821d118c498472ae282358349d528b693166a48c63c4d0354d8d1b464ad79d68a836b0333e14891883897471c8591898be66da72a653236bb9dcce816f50238241a1449bc9c55394709e10b030e631a4e94f446703f1542111d50503b4381589119509060814c170515e52c18aa169d9447c80b36a98a894390948f0276557469c9974ca35cd8c6e9983f14c7170606160faf874d87ffc0574185d2b22680b3b6e26cd1b8a8921611cb12cde4d2a531c0147bee515fe5fda47482befd22a5416972a0bcbe5557032cb95e5a572310173c012cb192751c9ab2cb10a8e82c032af7c70dbb607af34393d99b176df3a2ecd8f415184d896538d326c0628e3d5dd560643737dfce85ce9c8c8fadcd1f191232578cc88e1d8c0c4c4404c891bcd9a4214cbc2d6963cf4fccb6fb170342245ba4fa56214f63067a4f98d111a4b4169c4611d34988d1c54e98567571e2b8f25c6e84590fd3762def1cf05d4033bb35b865d7501d57b52c62414ff467a625f34c2402f3c3ede8246af8accf6aa73cff87ac2673c0ce087dc2abab4fe4b8cd9b944e915f5dfcb1710a05ab5daec59eb0d5882222c411fd6a2571f4e5ca42edd911140a06926c6a0d7dbfc5987737db50aaea87ccf4e747bd51c6decc789cdc661c7a6d067d4b52dee7b8db5d6ca7f49cf95e3077ebde7f2f1b211c321b0291f96de559dfae57e23a9d67ec8eb7a8c99b69ab3776f5f429b83f7cdfab7b9fda61bfddb2c0766870d9fe7fbc70ea1ed17412d2a6dc6d63ddb17d2e815211df547400afcb21b0203a9b20197a5c362bdb2194292db03a8a846e8f33d8193ea7d6a37d21f5029f01f9771fed06658d695fe604bf37d01913ed6afcfea5d75f79be9f48466aa89f8bdebed775fd9e07112eac44db1b37fd2af42cff77ba56fefa8520bdbc9e90bf404a88aa44ff1e0e618557d21aafea127421512f17e5d1167a3e65bca1c47d7a33ba4763210c8b62cddc2b66d616b364ef985e20085798d70dae9827c819aeb4aa6c677afed3af409e5bfede419edf7785e404bd77a5f181c36360a7c42f6175ea3d3ee22c0d918e9eee39dd0e2f6fc6efe623d64e5201901cfb2e917eb6d1b07b90cc95e6edb6f66d09a5cdfc28b88bfccb1b663476f378e4adbd103d69bebf2f9f2798297b88e6c2afe1239509517b44c343ccbfe497fe95b2ba7bb0d13be5751b04efbb3e115b5e11f784502872cbf353fba84367c51d45c4a56645b765e4a0ba4cd891ceb2368b7589b3620188720c2da4628855ca6074b5df02cfbedfe639e69036f0978c81d274c4fb5533b273a61a11bb6557abb5f21093cceaff9ff7902aaf140652a80999e9a9a9bce4fec4cd9aad0b9afc33a54d18caf47be2419e3529e6f7a2b939feb8d31fbb9b5938286ac767b25d190db92403c315afecf816d4c188ba8871d4b27f6d08634a75dea21e9e4cf24dc5035f413e05e8537ef7088b90ba8ee7a617ab786626818cda2cb24ce5b58735468a9f60504d8060965a744b7d6b2e60ab874f89c44fa111a946fb404760209dd9783d66cabad7109698cea615169c8ae4be0c25f448950151619411019996a741eca94b82fa7a31ac8f2f5e46d5164b5a5f56e2f756d2cf6ed084d8c955beb787881dbe08256de6862deac56855755cd27a9bde0c80bc93f5ccfb62403e34b45aab26cbd4b7f56bfd080aaf0d36bdb6c1e47b776da6d86b1e0711f1bce8e982c7df2c3e58398d6e7bb7ebb3ffdf25be4ede67b8dbdc118b24716d2908b3c58f7f1ccfbf64347c0ef3efde3f429dfd7aeb54f7bbb37df67fb1cd736b4ab1d9167436293c208b7e202c5640c850d2b4c8882a870ce208c191454e778a33b70421b0606fc58b6c1bad6bdaaf9a8129d4f65a5b4f05416348cff11c12b73e5127c911356ad258dfee76039ab8aff7c39f33c70044d16405a3073d1f3bc86282670d4a0a54b590cc556bef40018b07e29712e64c8e44b0867d1599f89b6fd122b07754a7785adef948ac3badc1d832a58b6746b260c9f7eb425046fd896fd0ca1bc0a2b013e8827a30c2d3fda127da38e1812b37cddaa889e58ae14a250a814d8d272a520a33838ac873b4cf3a91d69d7bd6a6666bab0f3f4f0dfa7fee98857981d1f9f5655737f78b5da16c964d2a30b330bca1f66ff387bd3fc82bb35b77764245d01dbeaf2952121fbd54134c57932bb63afe9dc799c0e849ccea346d75cfadbae39b84181d71ed6eb6dab04afad4fead66ff9f5eb54c4e2cdaca33bb56d614efb67ad2df2aad66ef89eb0b671b3b52e64eadcb6ff1de67444a5d51b2dcbc710eb6ab723b325722c20991b760f14d453b586657bb5da3fee203ae53572ad8d00acf7c255b655abd62ea01d0ae1150feb5246391d4105880d1f569539281772617cc828e4d2f6e6d113bd0ba8e6c62d188e586eab6facb164bd179cab0bb55a6a9c171e4bb68424ff57c4aa43c3ee131bd10df9ffcf748fbcb18e23d6a5c50e567a788f9f78b9a5a2e85c32c3692f30d3e38c46cb96b5fdfc4d14fed04972e5fa6af39be783077072abb59dd6c383a7da5a11daf68e92f643ddb891b029e5e7079daf89384bad1e69b7918fd9e0619d922b2f5c0b14c20e2b07d8b3ad508201bbdc1919bd35cecbc168a98b09222bd42da81492ac6a905b0d9ebf2143ea10dc962cad679f748e13d6dd27d5569f044bcfb3afb847c26343d4a17334d01e78821d6fad43aaf7edd6d0fc76c7206d2d2ba1eab55470e1bda2ecd3dabd30153a19fb6e167f7dd3dee6198df60bb27abec0964ea7d67a1f5ddcc9463b2fde2701ed015eabd12f77cc9356b6db6e7507c49ed42cae77c6a5da82265011dd81ee0f22e5b43df538312811f5fac96e68080f7b138bdbd00dc3f870d5c995ad43435b572683df2e2a128eaf4c967a73aa25cbf62fdc1514aead4c8e168dd34671747225946c56c3a26699faf85bfb33b8b6f5d6d62dceda6d197cb02fcda2ede80a192b5965b9f17cd887aeabeb466067ab27a09ff4ab43f2355a34d4c26acc196ef709ffddb236a1ca4a35bfd7d547c12ab5be75687a2c323be4b7fd1ded6e587106e57d42706fde06fea4837659421e3a8c4e08c98284b212fe07e5be4d5d8536d0558e86847e76a8797647532757c6b2cc4d7949371a1e02932b8ead6522dedc3e7d38bf327901f5692f7fdd230b6622a3eb27da6d0d9abd65da62fa8e197dd19d5c69bdf5666de34808c78b72a5bdc4440043e32f062d7ceaaed10beb779a7b6767f79a77f25b85d23ff37dfc1a53958a842cf77fab6dbc69128a0bc7f98b43d22682f68e2ad1e18430914b9726da40e6428292184bb47c3ff85a51735d707b870192e3fe02725df0e4f251afd5aac05913be76acbbb50d93ad0dd2fe0dd7176b78fc01cd759773f2500ff63ce3c2e7e1a7f04eb1a6152acbf9ca2a1417962b7935a6a82987e5c77d6883caf252a19259dc0d8e4cc34f7f99d30c9a3911d5ae3e35f03a47d7334656378c593d6be8baa3678d2ddfb057ec54cafe464e4bc4979ca83e56489f75f421ddd17563d098330c6390a7077f994aa52aa94bc238dd73cb2d7bd64e9e7cc5d8b322907a1b7bd6c7aac975e2c4b29c0f36e0e49c4a60f75a5c05a861a54aa4bf7955fa9b57411e57155c271aa9335d673c41355207a66bfca013b735d7b97f854889d6662576cd5a08d5a79d5c6f1db723d47b420614dc7f00a1896260cd9bc3a556e870be907de809ce207296ac2690ab785728738034c3d02e20cc08bf2561e1fa6e917e41725b7372812170c9cead4219fcd8678a0235c031c3909ef88adcae08c317c4ad81df5afa7bc13fc30785ff219b874a9e33786d6c904ab19211a876f0cfb7dfe4dc3e797c34974c7c49378467f01fccdc927353064cdf9eb9e97623e5e66e99f903cd8966f386fe0789646ef4f864e0f71ff048c3680ccd73cabf0b5bad87d6b353e7eb741c9d95e8034cd7e1e10d3ad9cfd6f849f1550fbe1a3ae349a637babc07512d38e305894e3fc2617412a1caa67c8833aeb28d9ee19dabfb3c74f986d3d07adfe862aefc9579403b7f5e1bf05dae41391fa06f0d5daff891bbad010d32fe41ad27171337f43d7b5a1ee31ad973771be3ebee7889682dd7f18fb4d21df6a2c3e84e74ee623d30512cacc07625305c6f1f7076d2e1473b80271796b64325b190da0e2c5d11f92d4c6d2c2e1a5f28249c44cffe8089e7884ea986dff504d1a9657b2701dc9a3b2f8fb4959300d5de7df0efaa7c5db8f65a05db56e3a9ddb0772f1c6efe3f903c3424b2a0aa459b5fd90d607bcd9ff9b1abe578dde2ebe8a7046e547943d48b7408632f9d2b3bb9726982ef1ae552dae15c748fd0173efffe72ad56ab5d40d56ad5add5aad56ad5f70be713b71aac8faee735aa55afea793521bfea782f77a1df403fe5ef451aa3ed00e7557a0d2d5c82d7d044201948c808ed2d0fb18b78fffc0b5bc9fdff07695c5745f46a19b75ac1aa0058c284104b8f66cd48dac40c6393a9d93c551545230ac52d832b8511aaf1c29844342b631809c6625a26cb6078ddb2bd7a5d4686b4ff6fc230d630315435a26a714d5535ac1005ab9846742d4208230a258461c2301f5a58a35423c454695427117d0d888af98613d599a150861582154631c5fce9fc8f090f2883d1e49f655c5355450d3156a882554551040416d508c61ad3b624850350fa1d8934510da2c8b6101f2c4ae05da918635565b6654d0dbd26fd1ddbf2dc66cd6d4b65ffc44a88266042683242345d406aa96e3612238ae81efe44429982f93d75469391f850d4640084b08951ddc444f5c392f3d60a9f267ea0a92c6c4f33832ae84a74f52bf38ac4a155b3d2ad392ab0022b97e062be84df932bb77e7d88539df55ccf5bbf14ffc8e67ab0f4d7da82be3f9b71abd73ed469b3d36a5fefb04fed4685d10d9d8bb7ef8b5eb78f80a4a74b3e62dc0ffa36ef27ddad5a990cd856bfddbfbb69dbdafed283e81c7a68730c02568c024be7a41564ae3c07923a2be4c645899dfe5caecc41618137b81885585bc6aeb65ffa58b073ec8232a3628564263dd015a09c93d9535ad2705d23a9792c82df4a30380a268f5a13e9e49835a85accbbfc722f324007c6cd44c28c680089582c011eff1e6afea5e78147c9c1e930ee9ea4c2bfcc2258557184795ad218224b448b25acc8a0aa2b96459cc8de64c44a44e2e3d17a3c1e8fbb2effae534b1d1af2daf44c1d6d4797a1cbd1fbd007109a282f2d575a1d519e864b6a3f27a319df358a2b3d300758ba1482e992cb64d828b855aabcda09e8152cb5057e0e8e02fc826018004c9e238cf6edb0478ce8673d0faa6935a6eb4ed4b4753d26e1ed60bbbf3e314c74955984f0b58712cc08d13051158ca11c60ef11a211a2f295495134f53eef9eb30a5144177bfdbaf66cd4d0bc831fa2d2ea98182a8be99a6d00d529d1b1581209a196aeea98af752a16d07d2a8d69aa305566224facc02adf20986aa95ff13c14f6814ca211348d968555c546abf342d82d3294ee970feb1d06e8c37eb0dec35d617e83e32e14b056a4df5a90f036e484f7fa455446db11a2b942c51168d3d2d32e98a33444ac3b1d7124721315e6549c1caccfdc77644e3155ce1fe534bc752d330aca50f37d5ac4b6b08ac72645d046900ae34fdeb43a73e4c84beedf8cbe96f2fd41b9c2b39fcc26894a2e7b0716d0f960bdab25fbd9faec65bffffb2db9a8afab49a15d08d9cbf972a925bc70a4f9b4ddc6eceb2425fda02ec136f1c5f97d37c797268787268f7eeb79c16b3ddf16e7b77df8c1cb9bf3c579672a9fad36ffe1fd3208cefb3b5cf70397fecef861d7a13bd09b119a484bba7349ac67e3f9425a50a70941a94af3ff1039cb478c536c13aebcc34354ac80be64b490109999c574c2be980170e324808215d5526b6b00e9c4433e39ab7612bbaac534db6cae574f02f4320ffecad756e1254ea2289f82c390860235e840c1da2708dc665d8bd2100d0c7905eb51f21d0fec5580e6cf60bea71971180faf8050a72dac9de3fc6c3ba861db033524df7ef6cc17382f2e8edbc9b6b4e80282052610819adf92bfddfce2209a41db05b2d466ce605dd2ee4ec4a54e57c8460fbf30b05bc9e6b77b9cdfa83fef04a1e9a15f6fd30c0aa2684ad2440e2e15f0066954a02968fb2b8a4822c112d5170fc805f0000e9288aa467a86f4a37fdd9d512511954588280c756882027f21f6441fc876aaf94dd1a6c5291f02f50b944cc1a25814be19e455db57a08e76e6653b7743ae32b659804c29b6a0a5321bdb8c4af45730a4285ebb42d58dd585af83d7b376adbaff7bf07af540d03b35b8bce37497804fb4f177441b13e82c7a12bd5bca16435b702e5dc2fdb6e08d4842a59e00ba01f716fe9f2e95257b57812e054e2ed19d71626a0408268cf28dd1542b36d52935f87fc2774d4590f62a2511c692a691609ac5971705e715b1b30bd45cbe97f2920098609d525365111ab11963f507c4cd097c50d290d16432da4e35d6a9ff0c00186efe86c214ce8571ea80f03a4454d5545553b23418635d552d4d8bebd4a4fe8512f556e11761d5543977a461a2612d691803968b19dff8e12dc9a85c9fa2c9e67a3b8d50284e650cb968015d8e8ea1dbd179e95ddca19beb0e3fbac1dd785c4d773a1eb629fb720bd4ac0318c1df72db96066d95bd5c1078455f0e2d37961de44a980471dcc63d0b408e7c355c902f055dfe05a1fc9a5fd6b7926b5d1cf691955e0856cb4e4e0bc9cbbb227b5672e9523b2e55bae29443410f4574cfb1c418f5c5e3e55cba546f8bbeab9eb7eea37581d76834eb506daebbe2af26f08f9a55cb7685bf20a7359a559e06d775ab6ed5edb4f7184557a31bd1dd5ddade1e567cec52b52952b450e8a34de9b9ad9e67a3fd352a57e86a8c19b6fefd6e355bb5d776fa6222dd5fb5b27d465188f2e246cd0aea904769288586511ecda025b4822ee7eb90bf2f4e849c7927a4136f609de6547213cca9141c164458ae14d844ce3f721ff1bec4ebfc574c1f7322296dee48f3d67ff49a5f958f8f99ab2bb0fadd23df3df2f4ea0a3f6cdef8d89159a8cb8bea42ed55d35211674c677347663d5f051689e3dddfe4571dd92d0e9aff75db9137cad21d18635b027c2b89479d63a35029577ca06a050da58c043bf73fdd3fbafd66b7eab9b73feedd7a4ed5e06c6a4853cfddea3d7ebbeb55dd9b6fff23f77f9e63092324b3bd0cbdb1239a52ae5c4a8f80537436c41014fc536e63a8f082443fe14b6fb974b128e43e2b1c928b7d3160e58f5723193ddd9e87693d13a91eef0082ff492bbbb78c237c8b7f08d8fcfa8262e8e937582df39137a4355359a877093b7ed2ef84d7e346e1b849b21fcf75a18b77c83bcaa5b4dcbf7c91e8b0cffe5f4a7fc9a9980e99fa8c0b092a7f0f50eb1508bdcae2ba1e67928792e96abfa0e9adb2e07594adf6ec800a26048b807ed7f354a57f57f52ad9b1964a7bd28ab025bd4fc4c3ee63131ab621657ea6b0762fca5076f625fa98db218d423a74ff00e960d6eab4712b0951bf316018e2cbebe7a17ee4dcb92347ce9d2b06cb906587ec1aed3046425bf39dcde7b36a36bb3de33899edd92cdcd8d7bbdd13373f72e41cb841bdc2eb5d3b2edafde83be87f08a482ffad98554c069f698171155fb9587d1e2e2656af3817d14b8ba5fa2daf58d44c15ac52ac2abea859e1e5394dc812e666526d16a17f90c9b2572f600f8a53f1e04e09fba10da2d736062c4cf69240ab3469c5872ca34b022d9ca685fc5c7487a2289aaadad626e2ed3daf49675c83a9220c84828942a840151302764c3611b02b8460218a0f0bd823d343673a576721610816a21696531d155b3659bd10cb036140a93301df6a56534343a9cf9ee5df6717f8779d7f2dc88ccfa68686a03e944a0d555b5f9d47c1fa2dfc6fb62034c107b65837ca4b9c046a2d29cbb03ef286ab96e666afb053c7d6cc482ab5776e6e69706969ed58cabe62766ee9aa378c0c2c0d2ecdcded4da522a803fbd041839c270f62af075aa1b6774aa204978260e48f7b6888e8a5d5aa17c464af569b9bb84bb57c9538755cf59a35af157250f89ffee412bc9b447b46859dca184aa273e8c708d9217e2e5d4a700ecff935d9ba742f896d9bad9b9030edafecb6ed1baae3b9f40e1fa2a07542ae63e5dcc6e02fad07dd8035213f8da82b939c6b7c87888342a941a894dd8ad024849a1a4b98464263bd7945ac623e7709e6bc6284af2a115b0df18a711a33b48880ab13dc24532da6c7981aa14227360100843f07eb943f812a58a1048b302d9c3314825d05ab4c8d194682aa74ab0c0d13615ac2d06222f80a6728a90a11a2628500c0d8bf01a4eaf493582c9884af7c9c8d55a3fcd92c22d1f3882f62d66d43b5a81420fbd15888309dd778aec0cdd0a896362383f109ce8e3252d40d05b0c158dcd0a2cc679715c1d1d228d3e20615423b914b29b134dae2a847002b0a23c4d48cb8aaaa1ad3921123c9b4a84a75be4efb116ed4b81e4969216cc86de8066189df0da5da522638dd2213dc05831a583ff6b6a15e6fbe1cccb003c12e7ca0e5c778bc2ba3f9b29869c73b2fa906d3eaa050c80929772980b99e0a78d1ce9c0d9774e0154abf9c7d01fd299b1c16c63b7df2e918146083783f27174dfe79ce17c96fedce803b9b4fc393c9e6a9905cdffa967f72a8bb742ba30676b6f903485b1d9e0b6d5ee424ba4dc4aa0dac7f5841c4f50c16fe168472c0da0afb097ffe169d4e7f14d68e732b225385e2dcc2af5a6644b99d9a33147883b9be3d41231ac96422516fc8d1aee61b99aa935b8eef0e9c419c171cdf4be56bdbb62d4adba37ddbd4c4f2a81b907f829b8d0feaf1b83e181f5d4ea83b8088202a18f6ed7ec2773d999b93fe30d79e38c1d7578a8818c343e871f42c42139b797f3b4b0bc515905168ca5d416b728193ab2f91df18896663441b19ce467e2f2df0ff74515ccf0ab213e1409713772004dcfd45ac6871ad62e55280c128ba932b5b522a5394841b1fa90c108d526a0dc5dcfd53cebc9399b4799e4e140c17504444941c3763b6f5354a29ad91882a141162035223c49be2a48eaa1809bd62c560686265323b13311d4b2097ea89d9acaaab2cc6e2c3d6d0368302a171333197a506c532b6cd58cce43f3981dadcd33fa6d2e1f5d21933bad26199de797431ff98464f27987a5fa7995ebe31f626365d9dd873131dbe0e6e5b36d6728ce9f46a2885832b6e74816b6ce057baf50cbc7e57487cd4442756756bb9edb223ef3897ebb80e02f78fd7f9bf5775d8dbfb9981f7abdb19c23f686b182bb41d34226c758e90d18189eaf8d64a2574393a84ae0d2ce1396d865bf8a7e95cba54e9389ac8a54bac55b20b03b055d26ee3a3d605dce9711f0eb5858b5a6d36aa554f42a13e1b8647fd5c1838d595f0a8b28baa6ed5c749f5bc6a4d62a2b6a338885b781790c44e6dd9e5c1afe043680ddd8ad04481ef7bca1ccc8088fec51715250a816a51400a8e2a23b0d3df25778b2f45000c2e2f15fce5c50ff1d8e939cfe057599d6dcb929856dec6926c5b498f912df34ccb724a21abb3597eaa342be2b7916d4b7a8c64b7312dab92a79e944a068fa822f6cc746090f6d9d9921ea55be698962544dc9c46f5f236ff0e658ddf416bdf7f0b8d698b732ca16505ac8427d015299d0acce25a98ac629fb919d536c164dd152ca8fd30595bd4e242aa2f266b8f609e1b804fb60d5330e2029755034e923119ec80262211371e1b8b4404302b261a100534060aa87103d4e1e17dbaaec04b8aaeef1bfe9ae72b708ce3d164327a4c0f45e4db80cfaae288c6c932b05c93a8241a00b44631db04a035620da70380d6ab7a32a65e1b6be57f631f5fc4706af95fac8f3fef33ad7c9cb6195aaaf345e97f411f5fd7df0c2bf0676ae3064e6deeeb56e838eaebe91676b20beb9c83543d24745250f582c47e1912783a9b522afd91610a7d616ae6fa9cf88fbd516a8ef5c4d309d7f3a2b83f7433389d7eb83fd01721a9d11bf8c7eb0ba7c3df2942b00e1e72d014da29a3998563118fb435382d7f023f64d6783b2cbfaf9ef13293c9e46466ede4c9b556ea3fb0189b5c59996431168dc57e4bfe4465267811c3889c5c5b3b19fcfeb38257262757b062cf6fd9323fe0ffda3257e89e82797e1c55d1bde8c160ae17f85c5f2ecab9beb05c9644e8e6d0d60b99be533c24a7cd313f60e21cf0265746209d5161db10053ec1814f5c4d81e96505888ee3ae1569a35a07335bc25afb53fbc38aae5f397cbc7cf87079f9d0a1656f62508f6b2708f5f80f259097335bd106a201b835d8478a5a948122e633d90cd43a3c9fdf1f2094d6b2794aae67f18af8d6b37904a871611daa501568c5e32ac32daec5969b846726f0ad00b6e5ff42d5329a7fac506cd99601bb4582d36701268bf4ebdb898e22540961c7ec0401057b19884e1c86944abb54b34c68fafc02690921db559d463eeb66f3e2eba86f660953414e3e1b584fba82516af80c534351d6458c324f9671792197e99e9fe365f367fd2c9dfd8d65ebacf9c744a33c01bb894665fc34f825bc1f25500195d05e742dba1ba18a2fd8cfb4cca60add3942965709a333e49776c3f2e22864523150c7e7a1103ee0279dee8caa8cd5c7f7d6f2217170cb1e7e303f357959322154fad16472c8309ed3b37adcffb9d3c8ea7b0c63c8ff59ef3cacf18b6410c043659ede730b4f2792974d4ec5c4eda2d1e48d7a567fce30e2fecf5f1ac61e3d6b0cf93feb9d87c2e7b7010d81231460350450588952c0b8f87b627d9d0f47fe108f7fb9915412048a6e3d9a4c45a0daf47ff9c9c0ee152e400ded4147d0ed1269a95059ce4b85422eb4520541fc5431aa76fbfe6b8eb4779a87559080d5cbf942d89bada0e60bf9e5caf2a223229314f2e30c7e9ad246d39662b2d4562b353fb0f38e51a293e496a8018a3ba82b492b69c6157016870697328a12376c2ba9e8b10ccbea16b6f4d3fe6bf953234d2933dc35d76094a68df464fa3fd1c185d476cd04256e31bd340dca163b9a56b5843e79e550c94a47cd881131cd88194d5b8bd19cade2b85931134a71d8b687f9e70eaa1a468ac4e324ad1b2a350c698795bcf03bf073781e4da13de85a7416bd49fa6489d05921498ccad73fac669c0c27b0252f5ec085e525de6a9533e91927b3c833f385fc526599e655b950ca902d95e57c253fced3192793f22f58ac2c730a3d5fa079dfda511458ae2ce76154e80bf8ce2d58620f5b96e5e0e448123b966561ef13baa10fea13c9643239a10fea3ae84356341a05c718d434621a8a652a9a9e350a744c9e1e8c46a3d14171d5569b5fd5fc6554310da26959739ce68dacae295f153a11056b84130d44c38ad0915c409683b165eddf6f59183b16a08ff07b1a130bf377ce2f4c18ba3ea80f6ddd7a78ebd6147ff4a0c6769a7ad63015cd7df4f5a1b343e1abfecadcc9b441c3245af65157534c238b42b6ac1ec2c846a7d163e81d08d9e9b1f2c4985cfd726372ad73649c6e499eae407169b9b2b85c59e21b17e797f8fb0b93a8e2fd8908caa94c5ae0dea657c0dfbd8a819ca5585a582a54f8d82ea6d41918cf978b4bcb4ed7b10ffec857c026fffe3fc9a0692a44e53d854101a9285229b104ae30cf07102730288c80629a8304d7f19e203248e80bd0faba97cfaef39baf67f3ffaf6652a21100acab8a021403c184009008050caa4e849787ae020662f17c820960790e031046a9a969baaebd6b834a53f6752057b1d1289a463bd16e846ca93b292e04e1f172e3aa134cf8dc78dec9a54b656916d3fd4a4a4eba54aec7625b6331f12560f482079e3deabaaed75c076151d8f41ddce1507278b8924aa55295e1e1646e7171ce17177cbb5e73dd6ac8b8c7add7252f685cf8b0d8531c348410f5e3643311137baceccb5a2aac507118287f67182f1a4346f30786f1af41f818fe31def7b6b73dfdf4f0cf8d41fd79c368fe3763d0f80c24a3968d95a7defce6a73a7d2106031c1f1aa89744af9416451fa55362d88425b395c01baa2f2efad1b3678f1e3d7bf6ac00f5e9a73df64499a347cf7a9e5b0fd56719ed40abe82442302486ec783e0ccbcf67c2f2626904fc8ae5ba2a9d710248b5cad2f24e5f1a30ecd39e333e409db0d78763901ad5a8a9ca5a40324b4464bf8df5cd4cd98b027868832d906bd9f01e50806493209ba39a541b4d813d95d9d862a6369ff5dcbadb6d9c64b9613bd322da8f0e730a298c601ea0468a6dab6fd39df13ca70b2a9c4ce03b162715a2900b4226c39496605a841c7c2dafab88a93faf1b1bdb6ba68c63cca4b3065f479d157d50378c23d4546fe29d00bf4d0c4d4b9bf4cc61dede881351603e53cc6e6cae02bf47e9acb83ab3a2f315f208a5dfe52fdbb7f35b17f22e8c18324514919cb44e4efb2669f2d38d668c83a8925ed5ffab3785b32e34a2c9e4cf1b8d46bd0eaeff075e32ca09866414aad164b30e6e733dc0b30a9edf8dd3d717a30f274a8952c81bb0ecc7eb683f9cf74fa3ea7a8dbaf8835af8e9028def02e2550840ac50674c8295cde7a0bd6954d17e93f150bf68a37d272654fb84219518449f17f10c6f40684298e365c428e3fbbd30df9348963c51e0046a2127a6dd1c94137c3a2eb65599bef293f3bc4ea51032c6988134dc824d759aea8a828fde8015ac9379d5c0e5656caa53c23ee0fa87a74c7d8b6e9afa1db1a14824a3eb514a69c4d49de83800cccf7f319661e22f13dbf73eaa1242347af339621042547ac5157eced9e7efd70cd035b84ce3674cc6928699b1ecb1a819576740b96cf13e55a569d3b4a9aa564373f4003a811e414fc888b33efc590c0a0bf979d8a004eeb4532b3952d72149503f215cfd73e5b056f86290876c088ae521801d471550b0a64e3103cf2f008c471ddd8c504aa3ba9eb12283b13b782f6dd1cda987afc7bce02433f172191b6c8ee858c1cdbfddb7cfef2b2d0d877a984ebe3c7333d544bf2d5ea6c08c1a37ad71dbca98469289786e86d6fcb26618da99e7cffae5fcfe3508ecbb55a56ad234d3bcff7a1953ba0004c09f0781ffdab2c010e93bd671ff48337dddcf5ed733b40c2507a7e806973229c2df1056265cc72cda17f6dcdf500ffbd2031117840bc286ba5db509346b9023c5ea1b2adafcd34de2434d75c89c83f13c25ac407c7ff7ee4ab66c065b721e3c9e2f2c8c1783115e58817220784fa754a8ae9d8c5a7f1eb6d4083a787aa73d3bb076f2e49a6a50a00689394c6c43028718ea27d70666edff14aa6aeb1d4eedb4a227d7d64e5e4082c8644e8c883ba812b91885e2984751162da32bd10de83184ecc58cb30a2d0bd23094e526a241c761b9280870de4c67acf34cfb7256a8ccb52f692dd5c1563d0785ea96e2004e5aa36b39cbb66d1ffce46fa8c9d4087942be07726adad72c7e6904884e9d013e2bc69a4ff2372bbd474fbe113cc05419dc3eca33253e2e3f911d886e31a0ca5862c83422c2dcb8150ffdcf28a5f4095ff87e6a8ad0247f17474708c3f9130bfc3ebbce18c2e356600bad9d1c160fc1a6500f4b485d7e62f6580e470dc9b30801ba87e228855c114309d9638b99744212c77c812f39e9b172385252a94f3a2ceab55ca84977d89026ad8527eb85838b7a8dc68698482162bf330eaab349348046dbe7c79e0dc24ef702fdbf947bcac8069776cfaa0b81ee6b5df8a114856517eb3458da00221b060f4f2ce5e14f80602c5c3254539560405dbe4b7555a7615b1a40b625430f482daf4c832775cf6d1b87d3e80de87184a8ac50299d0b592db5ec8eca3d0d9c723ddd617a7abafa72bc84b4dfb73b8e0aa5740e7e97308c293c50678cd9111a11e16e744c3000561495f8f13385c32a40419a475a1a4b186682718eb265fbe49b0e1994eab479d3063572ad561b11309b746b7c3062a635aa51a2536aa8d4d2c40982e5bd7c57554b356c5d8f31d5909c29cf622ca26a9215d639334b18262a8197dadd1d526a5b0dafc3370e231b8da3557415429574a95cf025a09c84e20ce74498355f5a2ef868e0bdf49d766751cf6b3bf0c16c4bf17e3e440806ca9ba903d47c5bab042763db4869618d7ba01b08ac26a7ef25b4d9810bdfde2327d17e6129e204ba59961e930c76b05af086cab1320a958d0c5a39ccc0c175c648e284acf5a9aaefdfeab58d9a7876a30781f1512b816f2094d25355df3659be8af71ce4edb8f7db1be91dcbedf4a7afa00704a527b68bd2f2a250d52c2f562eb15d9536c47b14d8825a8c82d85cc6d5e2781b7d299d52e57f9696521a4e1a8799ee1294b498460c2a0c7d090305d8f5523d7dea567fa4adf9dde167a7fe146353274cd98f55a260860133020a6164dbeedddbb6ed16b18a30804294fdf5e1e9e961fe7993023eca06b0eb6967bf714ec6efb7b48519d12244d9af6001c8212eda3dbbcddb3d4b185f7488781e06202adebf3a3d3c323535323cdd313ef6be82f161fbe3be3df82ff371f277024cb18198bbf9d8f83f341d2b376365506184993729d8647ff5fae80073fb8f0db04d469872e21aa2e21cc6a6f6f0097171471b0ebf8236ec6e8dea10c2ff48a849e5a565b8d61c4e5e649cdfabbf47bc0a9dd2548499429b4e3d62b268927ed44a2a2768df36bddd4846a349439615d7c8eb935166867caab7a1670516c208947640e912077a6be1e26337d0524481a583c56c0e0a2cd05c08b489bc44d858854a21d07dac42a52c39c5611801a712683c781f872c0561353e96c08c9cf0c77a9f9e1a797e846a1a1d0182331827b189d344a74cdd4235a2933431498290b4829511ca181d518892c638410c92a23ad1e81695518d64b0499284643086b704c682a755f5fafe2367f49b1acdfa8f30c42330816159138c3384248941324423ad62d8c4498cd30a51fc62440915cbfab68a1d38c59c1e59441e4234781d3e35c6a99c89c58c53f4f7de624b2d5b2956e4c8730279981c731bc32135ba9d7184e5751bfad6f3091d21e404ef025adf6010e0f31c210f3805d52ed4a126645c4b027d8e15d90a6c57a4adb308862ceb57295678bea42344be33020556821a28551c378c38ae2a104ed72e7b431d33659d73bbff45f8acb6d2ef7897c488f37d510e099cd77c215d600e1b0121dc15ab096b5b2716ed1c2bb68e7295d22aecf4510482701c7e17e6a0ee1186c722b3c044a8c9a9ede0432bdcbb32100086bb4062fa5dbaaa71da7cd489cfad88bd565120b14bc46f167d79ffe0fb7d180748f9f697d8d38c012d6d72aa7e2047a61ddbeac4abaea363e83a7423ba97b7ca1982746aa19852d345166ca46341a2505cca978bbba05c095621a905afec027fc6a58738cf531c81515f5e2ac24ad2523917842fe1eb54696c310f3f8a6830dab6c218052d622612e6f8001d88b86342d00f63632d7c92a73cef02f23cf01c05930b8860c5014cc023f8eb1116d740c1f0dbc362ef153bf0f06f83b0dc8c24ac48726fc4211adf5fc4100550343c20c1474e7b9e575d229a4696089f1c6d597f126550168da0718468ce19132d4eb4a8cc42a99ce31fec8bf1a0eebacd86eb66f36fbee59637e76ff43caf566bf02fd7f3f259109ae066239be7145573ddabd6249df35d310fa7044665418e8e72d1e73587205de46f23939664b0e8fda5e5dd30117877327fe5f73d13c45b28e79697caffb00818c396c4cc40e5088015c9de78651a289903fd486578d1ce6c078c29290d5c755b3662f18e79ea20609d2a181eb762572d2bd80f4a684f65e68f6f3f014461269d7d74f9aa8c7df65a5e9299b454bdec44313d65f39d5b0120803a78bc041a46536817a7e06ca9350d5976e0c076379dcac86f4770059596aabb65f1e1af40e2f8dba35bb78e46b644f7dc72cb9ee89652c2b6130b7bf77e6838971b1ecee5f6c8ec885fc84cdaa94471ef5e58ce5e3d37777596d25bf6ecb98536ffdbe0e5b9dce583e4c0e2e2817fceeccde7f76632974f4d5dbe2c4ed3ec6b66668e0c513a162ad68e55eb09ec98a2887b12365f91ed715e41535acd10f59dbd581bfcda53d996cc2baf77f03e7ebdb7f18adec0abec79e9771ad87b3c2b5163f9ea31e7133ddd2c62a92545ea6227a5915d1b6c762333e93bfac948f5b9a0440f37993928f89403343ead2798a6839150992ac11122aa6aa989115333f19540891a378d012b3a1cb7b296e51846425555c149eee60bd08fd408e5bca88a15858988aa76c448697a9c1352fb158ad5a46966635137111d8e46b7986692a94cc140946d82f75388a26045a76acc6026259ae0d0158dd1a8a1c554d3669a49448857436509c31888b22853232a5f6415f9c8b8414d4225f3cbf952e16d026a448da4352de25fcc58c234b37116e5044c983793f4dd3e7487b4e82977a328cc40cb6ed61f649201099ccd2a0bcba5e5b0176bced95c2db1e38e9cdd8e3b303f7860e6c8b9fd2b313771e41ccf978a072dae01cc4f4dee4a2464463564c71f1016358976b230b962b543140ce7ce1dd97d5b8ab273477886afc100503399bd333345795c0f0cf703aaa6c3b6cdef932bd121740421e8d0b93001fed576bc6b49002bc5406ec8dab454cb8069155a119c02c54c22b16b726a1e408b6b3283d7fedc91841b5bd97feec8cc81c1f950ab7277ec7085b2cd8f2c5d9c99d99bc9a800208f79a923e7184dddb6fbc8b9dc70a8835726179a355fc70668af4ff34c2004a940b9b09c2f4485955a2ae3e4a515d272c6c98b970a856462e7ce2bf72d99e515a2dbae3e16cde5c68b866125a70662a0e4c6c7a13eb6949a3bb573edf6b11d070f0c2fe4b16eed1a364646f60c0e5155b5762e2e1e73bb78e8047239a53ae1c3dba6037dfa5861cca73d46a194ca381795025c6114ddd1a2a14a521fae986dfed8b63c66d2e5e396f9d51efc7f6368ebd621e96ae00ab7f14a724c0657dac8f5637fbd751145164a22343166979c9253c8159888b29fab9414d4ac365ccf8dbbae573deaba1f796a477d0481eb9d3dea3db7e0ba6ea3118ad561a35184a83f5fc679bfe7e44cb247c09101585802d0caf4f44a343a71f6d0a1b313d1283f5a389e23116b6a78385f9d9899b96bfb76af52a954bceddbef9a9981e7c7b619b39393fb5d77181e4561ccfa349a40657485f01848e7ca39ff23bab0942e2d6668977469aceb38d7756c771dc3ba57f36a9e6dd53d0164d2b6ea78b695fc5c0fa38fba88f053b56ccfb39fed3ed9f905b5763a2c27537de4b739842a4ec5a9b0313b8400c242e9b1501ac6d2634253ec361b81337de0b601dff013cd67c16b36d6bd5acd6bc0468ff8e0d36c78c808e96bc7d102aa08c9ddb5e86674073ab7794c7987ef8123c0522acbc9adb0340285c58c935b151b1affe1993e3af61c949dd208387350e093b514151b1affc9c95d4d1841f48f4e7ff66a1a3572956b14e511be4d3ca2285e7c443fa38f4c1b317275a272874a6fe0276ea0eaa02c9af8dda040945e9da89c084eabfd03dcd70767e2e6ece3c9d1586c3429be3fb33837b768c4670647663f9d7063313721bfaba2e448b57dfabed6b9841bc2aaa8213421ccc7c6e7859420cdf911ff385817983a2e2406ab5029e7a21003ffb8255ff18d20387d519e83965144b08eb48d230434e36ef08f83a51cfed590ae1b597dafa2c02228b0571c0df24130240c1af602862571821f0d09d7c76256184cec05803260d82b8e86f8358302ae7d2f285012d7f0a34171cd52ad7dbf0de7c275e873bf4debd0516f9f2e93eb5254ae0facc2ff3905a7e080eb351edb75fb78b53a7efbaec726def2968977469f31ea75e399e83bdb988017a08e54b41bdd8c105d5c2ee752199b75edfc95b689eb984fa30a20d5ca5248d439020eeb1de552527580b2f95afe6d9635969c5c89599eb5d54e8ef9e0484d7f8f3c5801e15be414e25b3ddf2b6ffa1491de0f4ff8f85f0270fbdf5891c84a2195b33c2b6645b2e1495ddb71c26cb3963415fbd46e4e1a2429993ae5fbaa3c4129a521ec9eb68fd971749b880e1296a5949c4b3e8257795dc3da006cd7f30b2eb9e02601e63a90f22e5a281c076d5960fdc9f928a9fdd25c5bf0d9a2e6dba2cfdd20053085b7dc6d2593d6dd7cab5f346e4d6fc1fedbc50b739c78bb4dbe6352bcd5581c758b86783adfe69369ec2b537171960835eb6df2523ac5cf7762e25c27e8114e10397c2d5e16e4111374af345fe1dbf64e28c83a75b684372c28201ac2f87d544e4d5d060caea52a25a728d5b33aa540388bf1a41a213a1824a22e9f329c885b34dec2bbec2d46d13552fafd2badd34faa26251428d507754aeefd86e144640193ea60883b9984124a8d419d90fba8ba7548b69f907b2835b29a7ca2a9be4935a9063a35d5cabde1f77214a1ca2b7b1f39a7adc308f1702d3681953e6e144747178ddde92d8af095338377252d2a54b2b05bbecddd0bf2bcb42b9a5bc0449e57b6a4bdc645dfe1c4c4d01495676f13139ccc165b83239d0cdeaf9ca7a77dcc0cbffe618519df384a7e6b4b1bdfa8e80d61472bde68a5ccbac7092789bac7095c25dfeb0d338442ca340d7c6b68b4d2e91b8ca26ba6f4ab575493e8a0d3885a53238412a084bf4a0a87f8a83940a9b145e74b8e7c85a2a8a9560e1ee26f7a5adc8c61096fc87b06446f4f0d6d9597f2d7df7169445d3e6838910d0fa684a8e2b9e45028ce8bd0ea4f84b86c5f02ba0aada9dc35663ac2f42cd3d04ba5140fa4ff1d9fc9ff2e3c2c66ef95261b2b5f906f971797ef57490bb3868e11f07a19a15ab8f584f8578662084dc4601476430182df5afec61bf3f91b6f6cfed3c2d9b30b0b67cfd66f28f0ac02dc200e1716a49d88949bb6b1f2f623345112cefc959031c34e707c2b4456cea52bfe87967369d84c17e555b763e226a3d22ef0371ff23ccfadf13fa8ad43ac8716aa7a2531e94dc3cd9785a1602d92ba37e3b97e2cccaa887909f53e8a28d469f73284a6d176742dbaad35f299dc920b1529132ac8815cf05d9e1c31f47d377ac71783d99768050cb3662612c99899d87832391ecb1cdaa5aaaaba8b107224c812055e6ce59347fad90b0f4e4c0c0e4e4c4cf242b2f8a13ef7e8bcb7d9fc763fc2b421ee383838e1d32e9f8475781e319444c308012b0872d09fc9312857c69cb458bc97962bf095af7ce50b5a5cfbc20080ce1adf6ceefd6683e90030ffd863f710728f8329febe1e23677efee4933f3f4362faf731c501e6e127fd9888f3e8323eae7a191e8738dab4dff7999423aae43869591df9de2642956af4329ffb503c551806d827eafb2d9d35f659854c72cc6aaef955eec5e99a56c1714b3a60d8c6dbf35fde22dab22d6e5b66b5a341417b9e4716ca88782f68c2ef3959eda0b6a55045273a554b870f8bbaa5e2a999b1f7eaacf1d04dadbaadb6ac137e38cf2b12b10a4e6e89292f8bfa1c5869d7657f588724ed76eb682bf210b239739063be8db7ef11eeb4e40b62659ed864ba7e53a1b8fc4265cdb2ff3c3e1ac183863126450b7b70dc3803633de62b5431c3a59a6db99108de6a0ec5a6aefa7d5ebbdfffa06e7a7d27aadeaaf718f2d0d5e866742f7a3ddc01e7e06d52aa1b3462058a3b7c3abadd889223d6a31528b6065368405d069569282f08394a31355ecc4d438e73403ba0c4475687635d1835d3097053f3e59cbfa7e58ab90e7d6d4b472bde3aaf5679058ac1205e816279215fccb128cc83d03e4d43b19063b9d4785064612918eed2fe7561b19c5b81229b869c54f9161753455f06bc345e960bd3b82a4179f9f78a705d0906556abc98e64bb5e0d616c68ba985e2c278715c289d87f9d98073e4b9bc77c4e59c25a9f87e1cb24185f09c1c5ff485507f46d5437c2c34f49836b1b6a53d12fe2bc6665640de528c29c5f84a0061b9aa4c81029ab097d060419a4e405a3a541e2a4fae00304c9804468b621c11a04b51815ca4625561318c419817a9fc4755144c0198a28180475388c02f531502c2e203c4a352bc122a56f4a44175aa1045a18ac05fe2e5a3fc6606e85451158cb7889a314581884859800928cacae40101c0a6289713ac891410ac6302d5989be0433bebfc5630a6afc0346b6042314ef0a60f113c245aaf01e69f1800e58714e070e04ababe32497542b0829518608866312178905085e018ef0e85112c9e2a545558dc4065320a8af0cd221883e8040d001309478c89b04a11e741f40c280aa3bca354658bef7f648922118c991a61932b7b41d179e374054ef1fb288aa20126a4eda75e478be875e80d720e0e81134cc3f2d2727971b9b40a95453efa9d910d737227d07f21d39ecf2b18768a7107582558a50a01854c9aa30955a7ed41780dec7b15063d5035332635287fabae42a4a18e32654615381abce2df7f95c63c28bc1e4f08a43c5f78d5ee4561dfdeb52277108d98bfa0778ae6dbd65a62240aed267ff4b77d6211aa5a5cd3e25a4daa884d83b4d6dc5a8b44144a4ce4d7aab21d7c7e00a987bf91f8dad70ede1adbf5f7c8544481ef3d7eeef7dabf173eac00d4855788e2df0110820f5c78510641bc704181d0dd65813f57c247f2a1554550d2c853fcf0890a42753f0f85ce85cb54fd74f7879fabf91f7e8f46d77daba174af8f177aa67b09e5abfeb3362bf34a3efc5e633d9eed7695737be45d4abbfa7ddcae342808299770dfe18bdcd3ed53ff5efdd8afadbfee477d05cf465d63ae5f5f8efd9a75aafb9fea258cb15e63c4eb715c0d8d47cfff0dee7d9b9f776ba80de13913fc4ebdc2feaf85e6e6ab7d6fb5d01ad0eb3dd44273cced31e682ebe05f78dc84df77b5ebd33d3edcaebc709deba1f9dc3da6bae787dbf5dc7e7d12ce37bade7df5558eabeee7bfd232dd6d1bed3aa63dd699e0bd05ef2e5c6ff0d76fb7ebfec9d0f5c6ab6ccb2b19afe179d4ef7d04e9bd1779fe2b79aebb597924f1cf5268040cb817deaf6c55762847957fc23bf003f853f887244b1e205f25bfa4797a1d7d2badd3bf5133ea2ef576f569f5cb2cc54eb0e7d8cfb594b64dbb46fbd73ad1d7f4a7f4cfe8df3334e3b0f121e3a7e69cf96ef397911b230d8b584bd62fa28f44ff24b61afb56fc686235d1485e93fc9e7d32f548ea87e9a3e94f3849e7c581a181fd039f1af8c196d4960f6df9617625fb89eccf07ef19fcc4e0f786a2c3bb86ff70f8ef46a6473e32f2fdd17b463febc6dd25f723ee2fc70e8ed5c7fe6efc0de33fcf65734fe5fe7aebcd5bd727fe327f63fe53f92f15260b4f157e3179664a9dda367572ea85a91f4ddf3efd991965e6c66da7b7fdf56c72f69ad937cdfe786e6deea5f9f8fccdf3ef9dffeac28e858f2ffc5df1cec56d8b5f5efcbbd2dda5bf58dab5f491a5ef2e7f6af9af2b4395b756beb2925f7960e5f3dbf3db5fd811d9f1dc8e1fec5cd9f9869d5fddf9ab5d2bbbde7fd9c865d7ad9e58fdc3d59fefbe73f78bbb7fb8fb171ef276780f7875efcb978f5cbef7f2672e5f5fbb7aed0ff74cef7961cf3fee3dbdf707577857fc685f729fb7efccbe97ae9cbef2abfb87f6dfb9bfbeff8707560edc73e01d07d60fde73f0b9835f3f3474e8c4a1670e7df5d03f1ece1cf60e3f76f83387bf7cb879d5da55f75cf5ccd5b75ffde2d55f3b923972f4c81b8e348eaa470f1f7dee35f1d73cf79a1f1dbbfad88bc77e717ceef8e3c79bd7ac5ef3f8357f71ed8faebbf9ba9f5fffeeebbf72c238b176e22f6ed877c30b374edef88e9b8c9b9ebee9eb37fdeae6b59b1fbc2575cb83b77cf7e4d2c9d3273f76ab71eb9db7be74ebd7aaff74dbedb77df3f6f1dbbf76c7de3b7e7027ba73d79d1fba0bddb5f7ae97eefac1dd4b773ff3daa7ee51efb9ee9e8fdff38fa70e9e7aeba92fdf8bee5dbdf7bdf7fef8be5df7bdfbbec6e9bda71f38fd17af5b7edd73affbd69991330f9ea99ff9d2fdcafd6f3dab9ddd75f6a9b35f3f973a77f3b97f75ee570fec7de0c507be7f7ee87cf5fcc7cffff8c1e907cf3cf8d987f63ff46f5fbffcfab3affffec3eec3cb0f5ff3f0330fffdb877ff848e491d5475e7874e0d1f73ffaa337cebdf1a5c7228f7dfc371efb8def3fbef8f8534f649fb8ee892fd5b6d55e7af2ec9bb4375df3a61fbc79df9b1f782af3d467de72dd5b3fffd65fbe6dfc6dcf3cfdbdb71f7bfb979ed9f1cc4f7f73c76f3ef39b3f7dc79deff8e9b32fbdf3e83b9f7be78fdeb5e35def7e6ef9b91b9ffbea6fddf85b4fbf3bfbee1fbee785f7fce2bd5bdf7bfabd3f7ddf9deffbd8fb7efcfed5f7ffd1f3a79fffa317f22fbce303bb3ef0ce0f7ce9033f7c71fac51f7df0e8073fffa1ea87fee4b7e75e422f9d7ce9431f261f7ee787bf5c9fabbf58ffe5ef1cfbc8c8473ef1d1cc47affbe8673efae71f333ef6c8c71abf7bfae3231fdff5f13ffcbda3bf57ffc4d0279efbe4f4271fff64fd53daa75efcd4373fbdfce9daa7fff2e58f7d66ff67def999177c9af8cfe169140968ec0d7f29f44b9f4e0694f0c9625e92c1393f8d51024c3f4d5002deeaa72932d15ffb69152560d54feb288d3eeda70d94853ff0d3264aa1929f8ea014ba1f6104444780c651c24f2b280a8ff8698cc661c84f13340ecffb698a32e8effdb48ac6e1889fd6d1346af869032dc1b7fdb48926d1957e3a8226d19bcf3e387bea8efbcfdc7ffeb6871e78e8fc6c71199d450fa259740add81ee4767d0fde83cba0d3d841e400fa1f322fcecf23d0f3e7876c7fcfcd9db4edf76e6c1530fccdd71ffebe6d13de841f4203a8b76a079348fcea2dbd069741b3a831e44a7d003684edced7568fed7b9f6a87f917bcd5d77dc73e6fed3f7bff6d45de7d1d1aee22eba06dd85ee40f788ca9f46f7a3d7a253e82e74febabb1e387feafe33eef25c095d87ee420fa0f3e89468a38b96d11c2abd8aae7815971cbbebb50f9dbeed01740cdd855e8b1e12757fe055dc67dffd671e745f7bd799bb1eb8edc1bbee746f7fd43d70c7fd57dd7fff9939b44f5cf32072d16bd15de88c68eb6de8417417ba13b9e876f42872d10171e7abd0fda2ec5c0b27adffdfff170000ffffcd33b2d4b06e0100", + "0327d3a95dd7f5fd93163c3f99c4c918": "1f8b08000000000000ffecfd0b77db36d3280aff159a5f975ef20d898a3751b2cb27db719cd88d6ca7b6e3b68f1f7f5e34055b6c2852252925bee8bf9f35039084245076dabeebec7d76561b590007b7c1606e98a1b42f713acabe902ff4661a469f7f2eb2741a48ea9e9e2eaf74329d1563edf2d2be322e6f676954c659aa51a33452fd519d155429ca3c8e4a758712fa759ae56511a49ad577f585b1113c2523ad34d4486dc0f4c79c96b33c55a2856ef0e7a1ec79d63ca7b2e771f3fc46f63c6c9e8f64cf8b85be330f73250fc425548fb53c38b9f98346252968f931cfcaacbc9fd293dba7a7c7ebeb2994afafb72faf16715a94611ad1ec56d9cdf3f0bed359ee8d921a3c28174f4fcb4f6fb35c8339a44a9c2aa55e9271589c7c493fe6d994e6e5bd96ea9d8e462fd3aba0bc4caff4858ecd163b552f4ac4fba9cab0be721c1724cad2a2cc675199e5015de408665032ad5612a4b3240982a07ccd9719e5342ca956eadb5a2a8095cd7723a55f94545fc084b3600da15a56612c2c8af82e15d7daacb434d2c032f220ccef66139a960549687a578e77d29ff29df4d52bbd028c10250d1cac9ff75fcf68055d240a93442b8d88612d02ac4557fa0edf70bad049389d26f71a60c8a87b16f119337ce29e048f8b9d6a3639cc86be6c02d4c8f54ea724713aa25f4f6eb55cffa9dbe968e9657e15d0cbfc4adf896f3540ff56403b1db51a5b85ddb89f0225f161ee6829747e763fb9c992824d2e0aba38b79a4aa5b01ad577a29ff20ac5d1ab57ba302dc04d35b3cbe80a27077ff5054758baa8f112b2e36de4f5f149e9172d7d7ad2d2e0639e4de282eaba566f7864640251c64000657eff58683949e9d752a3babe88c2321a6ba5fe9869a5be581aaa812ec779f66523382cf291925196d2d79146c93c4c6654df465a6d2654ea8f65fd70a193724c532d36427d51685a1ee49c30a851223fd4d934757da12f8d54d386911b91911971f098843734d9ee1a054dcb6de150c4b79ad5892ebb573aae41892eadab8a12e1fbc228f3fb62fbf2cac8a6f067513dcc8247187c3bd4baba816db743cdd20df6783bd46c7d61c8a8866d7aa7a36597ec2b894b9a8765965fad9f5605cec04237b21d01f159fdb4860fd7ab325c5ccad705883ebf9fd2fd3ccf724d7d4f5336a612174a98e4341cdd2bf42b8d66659cde115547b2dd897774d862e807d841a7a34581ddc92ebb57af73c257ca4b38ccd393a64541f548ef742276d672dde8eadb8caaf44e674b8b82ea89915d5ab09340197a85f89de24b0c7494075d23025405976c582362c471a51b50d41fa3b0a04a771bff58db5190eddce434fcbc8315ee76258408eeffab57c62336df86410d18727bcb5a30606fbb81ca0304c882cbeed54e94a5659cce2803f3b7b32026d9b420d36caae9464c804058a1011dd1db709694dbf1ad068bd5a280c1e9fc90ffabdbe94497112f99d615f0c25e1004b0aaa7279b7fd3f5c738e8d6dd2ee25bcde18f3a1d6d2b7a7a8279fe2bc2327cfd29ba74b0155b0a2e836104daf6eab6fcf94f40e20d34948c1a87d0221241ed2550fbcae07800a524d3792378008d9ec1d0220bca8a0fc715db08f5c72cb8ec19e1959107ddc56d9c864972ff980651d085d97848039ca2b3e6a4d69bdabd7a0dd5dbf32c1e295dbec1ddc542bbcc8cf04a5f2c16cf6a42b956d60ac9eedef9e1c57e8b5652030d0fdf1f5f0ff7df9dcb009355c0d3c3f70752c85903f976f7f4830c642c801c9eedbe19eebf9581dd3660ef0e874319c85404f94ddecd7c05e6fafce4a30c6ed4c01d1e0f0f8fa5089b8840e7fba7eda8bd6f2087bba7efa5300f02ccc9eedbc3e3f732a8bb06eae8f0f8f068578a8a1b01ead3f0fcb06d05470ddce9c9a76329caf61b98b3a35d39ea0f1a988bfdd3f3c33df9b4f61ab08f276787e78727c76d1b7021017d73727e7e7224833e9140b751ef5002db4ac05f1ae0fde1fec52e42776590d732484b06792683b46590e732484706b92b837465909f9789f6f8fcfae3e9e1d1eee9ef32e0c335e0b34f7b7bfb676732e0af6bc0bfee9e1eb7d0f1f11af0dbdde3f7fba732d88fc2a13dd9fb7476bd89519c36c09f0eafcff77f93eeeb1f02e17f3a8649b682be15ced2c9f1c9d9c7ddbdfd56e0770d30805cb79ef64f2b80ad47ebcd0ae0d1a773f9c2ff5c01dc84a45f57604f2ef64fdf0d4f7ebdde1f0e0f3f9e1d4af7f743d3e8cdf064efc32f9f4ecea56b7bdf00ee9dbc9582fcb20c728d1dca007f6f000ff65bb9e20f02ef3c3c93eecc6fcb20d79f8ecfce7f6f41cfcf02759c4b77e5dfa208dc3f958e48e90ad0f59b93b7d26356ae41ee9de0a190ee43ba06fdeee4e45c7e747201f6cde9feeedbbdd34f476fa43e1129e4f5dea7d3d3fd63e9fa32690be9946339e8f5dec970b8fbf14cbe0ba1d8e8d3f9f9c9b1546b5983ba7e7f7af2492a549275d8b38f87c7c772dccdd6a1db8efd5800dddb1d0e4f3e49c16ed7c1ae0ff7e4eb9a2ec19ecab5191186a352aacd48e05a8971b20e7cf866b87fdd76b0ee97e08f1993da3ffe24d5715a60af3f9e7c041e747d0efc523accdd4ad3d39361fb46df5051abdc1d9e48b9c6d11a149ebbddc31682d85f876f43e281a4ebe10960bd9590f7d69bb49feb8b36e06b50424f8ea5a7f064bd11f054f908c325e08bc316b02f22d8e9eeaf72a8eb35a856cc9dad83b6a3e17c1db87d45bb02f0fedbc373908ead27fa731b70c59aa5ea526b2328b5c8aeafad8d0e8f3fcaf9c8716b938fc3ddbdfd8393610b0a3e0a0ddf0df77fbbdeffede3ee710bf0a9007c707e34bc3edb1feeefc9d52901b41deaed6a873871a91a2585bc7e7372fa76ff542e2d3ec99bec9d1cbfdd3f6e91306fe46dcece4f0f3fb6285954d45b5bb6e7d755a0ebf7072772e6f9611db48da7bd5f0365475daa5ead334ba97225e1a987c76f0ff776cf4fa424f1c3a606d77b07874329d67e139b1decef7d7873f29b54ef12e04e77df1e9e48552f91d67e3d3cdf3b902a5fe52ad4350afad6035f964b1e86fdf6d3974a21af0f76cff80969d9947cb5dda78f60e8b70f14090d3eec4bb965b60c72bd7772f4468ab5b814cd98b787ef0ef74faf5b3a0d05d88393f316a8620dea7ab8fb665f4a68c93aecdec9f0d391144fb375e076193e2e45d74acbf0b722e64f4e8fda0fd974157203b79fafc21eec0f3f6ea0b091b8052d0ad26405e6faf07c5feaf1b89701b66fc0c32af8d9a7376d73b85b85dd20fe6f5661dbc5ef91007abc7bf16657ae63ad41b56fd6c13aec061b716f1d7ac3c22e44e893e3ebc3b7fbbbc3ebb3f35db9c97bd20e7e7d7178f649ee0f1b8aad3e1ded9f1eeeb573832f02706dafb729e5d76dc0d7e8bf902ef96ca5cd70577aeecfd7c1aedfecee7d787b2af7e4ed4ae037aad99f5b1ab4295d12f0769fed5709f4c9c77d29233a96c09eed9d9e0c879b17f05168f771f7781f0941eede3895836e38467f6c6c813b21d5bd5a9a5d1ceeff2ad5c04478669c49b5ae75b0ebddd3d313699f6f24c09b28e74f09fc0642f8b51dfcfaecf0df2d6ce183a4d5dbc3b3a343b993f37d3b387ad14e0f5b1c5e92766d74f7bb04b6dd30fe4102fdebe9eec78ff21dfb4d003f3fdd3de61ef08d04fdb338c4e9c9fbd3fdb3b3eb1606fe6f19ecd17e8b01475309f4f10957c1a53b50b634d93d3e3cda6dd3bd52b1d1c9e9b99c1fe702d4d987fde17e8ba91e8970c3361192ad415deffe2677ad86eba007bbc76fe5c651b10edcae78adc39e9fb6b088d93a6c855fa9e625829fefca7da0b702d0befc7e692af6d3ee8d9baf836ddef291a4013049a9da2581052afc7828edfa5e02de8ad60701f87c57ea7bbd5b06d96c83ddb4016f3af5472b8ddaf486fd1538141552dd6b19504a217b4b3052ee7bb10c727dba7f7422bf423d59816cd5938632c05637eb1729f4c5eef0939cfb5c8bf027bb722c9ead026d66afe76be047fb6767bbf28ba3dd25e093e1f9a154767e5e07db4c56876283d37db9f2b402737ddc72bd732c03bcdedb3d958bb08fede0cc6d2abfe9dbd0eaf844aefefdb1a14d9b387e2b6fd3ae88bc9336e0ae36b9f34adaa28d66df48a15b65c09f72f0160ef0ab14fa6c7fefe4f8edeee9061bff434bc3e1fe5ecb8de5fbd516a72727d239fd2200b621e5f71518d06f61c6d2917f58056ebda7fd4d80bca3e55e1216c57138a1c5348ca4b1c13f0b0dc224be4b273465cda4da92004d133a0fe1712b34cd1be838da00588a8069b96906a9003acd8a78e304f2bc8e5c4eb5de4037a220d53c4b3732285bba1107a9e6747523e4c1a1da23a3fde38b6d759a67a31976a81a1f3fbd191eee5d7f3a1d6eabea42276f869ff63f9e1e1e9f5f1fef1eeda38dfaf4a4de4c1dd52882f0956a865119cfa96a24ac048835137a5baac64ca8c9e3bb71a91a63ac1a85f967d5b865dfe322bc49e84835a658be8d934435e6fcfb5778306a0a66994d55638215719ac429558d7b5e2a695ecde501ab9230bfa3aa71c70a59388ad33bd5b8c1e2244ee34998a8c6112bce923266dded63459ecdd2916a1c60a1988430a93d2ccc695ec61134bd08f25c8b4948ce4f3eeac6495562c130ba31ac2a86fbefce75e34b55c49016ddb80e68ae452424ffde3f3dd18db3aa7872bcaf1be755e9fcd713ddd8ad4b07a7fbfbbaf1b92abf3bf974aa1b87419a6b1909098f17d18daf550d0f0ad18de3aa86477ee8c6c7aa868577e8c629437316cd0a6157fec0da596c96f46ba91a6f197666691aa777bcee1d4361966678f678ed27ac85efd546bc696a3846ff6c6a26b31286fbb5a969e6f0a1a9cce634bf4db22f264d92785ac4856abcc7a73749167dfe73969554357ec19a281b51d5f8bdfece4054e307ac19534e0fbf31f2888b52357eaebf9bb3b428ef71f47fb32597896a50ca499ae6a56a9434a01486ce46f7aa91f25294e1b12e5423e735b75956d25c3522d6fa26a7e128ca67931bd5c8681061a3599ed3b4548d985514aa11f26f66942549382d602a05ef6156967056131a14d0fa2ecf6653d598f162318dd314061cf30ab621b7ac71142649362b55634a835b780afc4a35e6d5d31c4e1c2ff0915563428351b3d4fbe5c71c790f556dca3694a633d5b8a3c103349c6653d83ab304522855e3a601ceb3a45ac111e53c214cb23bd5d8a7c15185d230c6251df02a3691bd0a20c90a5aa3e582d756783f592a23c3cad2423586bc1e4801e0be54a3cf632c5ff3721e7e81e2190dae9ba1cf79a91a649797abce3eb3c674149740c57c0f0e69f0592012d5f8ca2b000ec9f19857c4e91436e9232f4e9330a2e32cc1be4f59dfb709fd6ad2afd330c5da3f58edb89c246641131ac171657555f19d0082d3528d4f3478c756958f680e44f686d744593aa229d2dd9fbcaa28f3788ac79472a68b93fc40835f910ec71910c2fbaac836f5175e0cb984f97d69eb55e3071afcce563c8aa3b0cc72d5f88d063fe014c67132528d9f798b318d3edf645f55e3dfac220f4771a61ab4648bc4286ed528cb8096d85f0a0487784fcb4ab8d06ad2f96a95390e0b8e299c672400cca6203faaa6197bf299deab465c065989cb99dc64aa11969c198ee2db98e60ca66095e3acc46252064589f2e98626aa31e3c5284b66935435c6bc5c9d82db924b33849ef25965f9a442f05ca8aa096b24548e6932ad5131e133c4e3795f0613c4554927aaf15006f7c2c4ee385e67370cf88603d707e488575434bfcf1aa4e1fc2684b35a06fb6543077bbc5873de0b5e51f777c2db67a9198f6898984519023f1f96c10900cee3620682f70b879b4d681e47d5ae5cb3da5a4230ae745606d72532c5308231ce1ba824bc578ddd323887e73761f479948376f199d7085ce750a862c79657543ac8312f67530a3a142f15519e2589d8d1291b7d1aa6145707f2e88f323815b1f876a98c13538d77bc721ed32faaf18977c398aa6abc29834ff034ccf3ec8b6afcc98bcd9a7ee535f5023e94c1af38c5f801f7e23d0718c5c5240615f39732785f7244e5314a520ec2d6f8032f550cfd375efe9287d329cce96736c7320f53a6bb8a78f8375f409edde5b4284ca4179a2e574e2872d632e554c1d94fa11a695d15821ac7ce6bce9b6779094412b162f1992614c542c62b12466c611a6429e0ec2b2811052f8dc374046c31e1e5ea8cf26299e36e8c79b19aaa6adcf2cecb103483292b515021e7fc492594476930c7719b994f7815ecb86adc37eb9dc6a96a3cf0a77cec3bf6b80c6f54e3260deed265d679940637a9b80ffb1c861d87035e420a548d3d562c54e3a2eaf64e354ed2e00280723ac9409d1ed6cfaab3f6250d8669ad3b5cf312264614aa71c6e1b310863c4f83b374f93cedf2aa092d8a1054c3cf558b2c29e3a96a1ca6c1e795857de5203985f3d614cc14f5bc8f69709c320506c8f1340d3ea69566006a2c2fa7191cd7b7bcc448f95dd5b43a1c9f780597ad2013790d5bef9fbcc489e3d7aa8818fec04b0505011ae6f715d8fbfa018818e8f5176115799695aaf13bab61c3fc9006bfa78ca8a0a3916afcc66b9842dd6469fd2c7aac9be4b47f639625cf6ea23c7d29e7164995ad94ecd4d5689954f5b33aad885508e9753487de9a84c52a930a69beb2954df5156d9a942d4dba4110d03afdb05abba9eaafe97653127b4a577aea74e856108021730ca6933015665f436b5266c3ec0bcdf7c2826a42f65ebe612195c98da3af27f2a0adbdb32558e24ba93d55b2e84a32a898a4dbe4bfd2e0f2ca2883ee4ef9d35a0a6cf9ea151f4c487b2daf76e25b2d670fb22ad72f874a156690dea94110644f4f6a3a9bdcd01c4b3a65c953b9be4393822af1ad86d9c9242ef0af96eb9d4e9517caba8e8388274102828c5cdf893b1dde4dac2faa6ed40c5d0a6c946a51a112a74aaea755e65d08bd5f86577507a1bea8924a29f9238b534d55547d516793bfd622c24930888c26c93cd279c65510045a2ec9628c16554aaf7179a5eb4f4f5ad338d717daf309eadfd3b2eacb9d1598ef69597518dcf7b42cd9ad8d70abf83d2deb7b5ad6f7b42c6cf43d2d4b1481dfd3b2bea76509f4fc3d2deb7b5ad6f7b4ac65e5e87b5ad6f7b4acef6959129dea7b5a96a877fd9f9996f55c7a55fe7c7a55f4d2f4aaec1bd2abe217a557ad2761b5875e4952b1dad3ab24b958edb278f692f4aaf18bd3abd612b13670edb554ac67d2abe62f48af5a4dc16a4daf92e661b56fc05a36d686f4aab554ac0d627c2d15ab5d8cdebc28bd6a3d09ab7db324a9581b6c3d4932d68685ed7d5b7ad5866cac0de95527df925e35fc96f4aad65cac0de955ab29592de955922cac8d4932b274ac8dea725b3e56cb31946563b5fb5e65c9586d71b5b254ac97a4571dbf3cbdaa25136bc331da9c90d59a5ed59695d5965ef5f665e955922cacf6f42a592ed626ca91a5636d20840dd9581bd2ab6449591bd2ab3664636d4caf92a565b5d19d2c15abddc09525636d48b4f8e12fa457fdf60de955d254acd6f42a6932d6e6f4aab68cac8db936e58bd2abd217a657e52f4aaf5a4fc26a4daf926462b5a7574972b1da15af6f48af92a4626d4aaf9abd24bd6afc7c7ad5edcbd2ab2459589bb75c968fd5965e254bc5da905e25cbc66a45ebfdf3e9550fdf925ed59a8bb5e9d4afe664b5e90dab6958ade955fb2f48af3a783ebd6aefc5e955ab8958ad7a92340fabd55d2a4fc66a4faffaf292f4aab51caccdec753d1b6b437ad5f9cbd2ab2459589bc9eaf30bd2ab5653b05ad3aba47958ede9551bb2b136a4576d4aca6a4bafda9492d5268e5b52b2da1511793ed6a6f42a7942561bcdca93b15a65404b36560b07902763bd20bdaa2d2fab3dbd6a2d21ab2dbdeafd0bd2ab5653b036a657ade562b5deb7fef0ade955bf7d537ad5cfdf945e2526636d4cafa22f4faf2abf25bd2a15d3abfa3d965ed5b3797a95c3d3abacefe955ff687a55ba945e95aea657a5cbe955e94a7ad5bfd3a5f42a5ee4e955bcc4d3abaa52955ec5cb557a55b9965e55aea557956be955e5f7f4aaefe955dfd3abbea757fd5f9f5eb59c3d1509d95359194442f6542ccb9e0a97b3a78a32088524a58417abeca9192f57443e5eca9eba5dcf9e9acab2a7e66dd95323317b6a5206a3267baacaa5e2433dac644fdd71e09afe6f784545d247cbd953fb657024644f1df062cd58f77845dddf454bf6d449195c88d9534369f6d41769f6d475197c11b3a7ce56b2a7cecbe06c39d36897d7084ce5b35085d83de415958af19597593ac6312fad674f7d94644f9d96c147118b7f2c9579f6d45b5ec9b2a7dead644f7d2a837742f6d41b5e6cd6f427afa917f06b19fc29664f7de00075f6d4fb32f8b09c3df50b07616bfc9d972a7efd032fd7593bbf6dca9efa59963db59a52c5b3a7e87af65429cb9e4a97b3a7f2d5eca968397b2a4b83a8c99e0a79a9ca9e2a78b93aa3bcc8339866bcd8644f8d97b2a76e85eca9e94af6d43c0da62bd953235ec5b2a7262bd953f7fc291ffb41c89eba4b83879524a32aa1aade87230ec38ec33e2ff1eca903562c308faace9eba48833d317bea642d7b6a9806274d36d1175eaab2a7ae97b2a7ced2e07a257bea9c57d5d953bb2bd9539fd3607765618762f6d4d7b5eca9e334f82a644fd5c9543c7bea949759f6d41fbcc448f96dd5b43a1cef7845933df589d7b0f5bee1254e1c7f5645c4f0afbcb4963df5a17e50654fbd5fcb9efa45cc9efa3d0d7e59ce9efa81d7ac664ffd26fa989be4a09fff87b2a75856d637654fb5255c7d7bf6d46a1ed6dfc99e5acdc4fa86eca9a57c9bbac35cfcb1c5e6b7c5d820cbb94a54af46a30b8deaabbfa1c8d2af2eaf8c3cd8ea1a51b0651959c0b28676cafcbecebc8a8d30a06bbf8ca6e93b5b5a1e68711056bff9c67e31acd3d1529efdc47f36ced82a9f9e529e34b51504a5be0343ea3bfc47a60afd318229644151ffc2144c207f7a623fb618f29f2f7b7aaabe018a39647cab45d50f502d9a5fe0c3350a4bd61fa53fbb7698cec3241e296159d2c9b454ca4c1951f60390b39c2aa828c0926f12aa543f59a9627e54e5c691de012d9ecb9fd2c49ddbd495905420fdb54e218749fa6ba142ce8bf4d73c859c01a9cb4ac800b895fae9041798d4d7dc3c1f4b5dcb82334a7aa3d13cff43ea4e6f9e7f965e2234cf13a9cbbc793e91de0134cf53a9cfbf799e49fdf782074d7a09d63cff53ea326c9ee7d2bb96e6b9d42b27646395522763f37c26bd296b9ecfa5d75dcdf32fd2dbb3e6f957e9f556f3fc5eeaba6d9e3f48bdb5cdf35da95bb4792ebd5e13d324f6a46e4d311c58ea42176e31a5fe7b21124c7a79d93c975e83097977d2a8442173f2507ac7d83cff59eac516dcb6aecddcb61677dbf29762599eab1b619092548bf5461615cd8f9bc6b74b1c8d75ad1ea6e50588001565f0e7381d2db4545ffe815b0efa2ec94219b04e2f4bfe0b93c13126ea6a29972b758aaea4bb375996d0307de9e8679810fcccf07cdc4dc332c7b6ac1f9e86fcb8d849c96d4c93514126e154d28752689941491a4ea8c17f78d5c8f5856e0833c9161be67011e6313a56241388032d7f7a7a5ce897298ec03bdc11fa8e37f53d8c8be7368963697d79f56f03d7eb4c8dd280c51969dd7cb17157f7d3d9e41b3609a8724bd2cdf12c4964dd341a424442cdf275112fa08a081a6a222a51f06c8792519c5374ff17a004058f0b43ac23b759be1f46e365d17f49c58d606dea24f64e4728acb7cfabdf34ce19b96441ce57dfa078b97ffcf1dd525fe80bbd3ef430f74a4f6c1b9ae96e9d8e96afcc50ba2886144ec351405727951ba911e1347463ac8913347283ff50f62cb854a32c4dab370da9711a2533b0c3d4e23318706a94c4684ba93905ab4865e9ebea55c39fc695ea05fa77a79392a6c3e512f94cef199458791b2725cd57205965fda3b1d57b072430af2575db97573b3929b2bcd418fea3a03432e150e452846697f42a882ee17818abf37ea56aeaab9fcf4e8e097bab417c7baf65fa2b55576b6578a5c5827102ba13df6a9c848b20d474add477e25701f4572cb5ef74f88f657fa6f78596ead2399a561004b3dad06286c025bd5a697c49afaa9fdc7d0d83fd2ff515952d01016116db1514f0c0b83980b7ec00c6b7da3354bbce795e42bff906fa65bf620df46ba43592803dd4939b0afc9c923089c3e235ffcb3adb16a9be693717252248098143d540a325099bc4297d978777b01c19f4449c4aa7a3c6bccff27e0ac51b2628859fc3a6e48efd1635157ab95f323beb774b949d8e56065b966ef02bdd8c84baf6083d6dc34846ddd576b93084f76e5463bd7e8c47dbd48022e083bfb562b14d051bfa415841f3f3efcdfb34aabe3a1df58f82fdb2375b5ed3c59d402c22975ee2cfede4f28d4c9c91663b75dc6c42e6e3423734e09ecda046faba6220da812e15ac652010f5ce124be53b13911b5d2b3b1d38a6255fab61ebfc2d2ce565f76a478464fa01d0cb2d205454170ca7961dcb27436c9f773ada922a92235d3e3dada966ec816eb8baf158af799b1af1ed2e5fd076ba58e8db97573aa1739adf4b654dddd28093dbb435b260cbda91a8465c54e2e0afb52c282fab1a515e8a4b621bb515049961e9fa762d6d3956985c5ac1d5ebad6c3be30a76da50c051ab17876de6e5d50a4e739800351edfd608121b95cce1224e5d5f2c74a35c68a54e8a6c42977ed1bfa6eb8a5997fabf4c4bfcc9fefd65a671a45d56e2f6ca00ce0e1595bc35c4b37a201264339b6a032a14954f4fb5408762d3c19ea85795462ea0829211bd8d53f499c90f627caba9275360387196bead811bb6b8a2e279fa8e5af14e1978a79373ccc2695667294e808e04ae93763a9a48241692163f5e3ddd4883fcb27b256ecc32ab5c18d47814d6b57df908236f4bd7616455e5b6fae78ce6f7aa51bf8cf18c96dbbce999502740347d576b3e9be6782180ac973f3b0e27543598904a178babc5e20af487282cb5a50dd0457ab900ec570e43205f230dac9d74fd554de9ab577a79999ad695f0aaa6b4dee2727d5b4bfd5140fc568df8b2d361c200f8a6a8629412fd24d51fe9657a159497e9d5028da966ee273077710b81ebbdcda2d9b24435faec1403612fd121e3cb3293769db2b66af9bccec6db8877ab8578077a7d3016ba8c05575cfea7c032aceed29a87c2f986f51b2f5dd3c6d3b5d02fbb57cd205f9694a07fa07f90d740aa12e4d5c3085a15cc86b9909b395dff85396de210e221386b781fe057ba259d0e3fb82885ebe36c583670ebbaabf3baab1dd89e9dea68a54117e59b30f19df4a75c3c5ddcd190c3a9dac00f334652dc2b903553c146f51ce3a72775322bc3aa19948bd94d11e5f1b4aeabae19b2450bcd675cf6974f4f5a1964fa022d8feaccefacd8dd3d01a7bb88884a43a29d8e4683cbabea248a3a9a4c1e942b8a195d2c61f9333f7614086bce758366e6454bf592a2580672985672626417ce12e64891d0f26ab7461a2cb731f225374a6e94cc544975236f58c1057fc31bc39e71f9d830f252d7b966fa28b8340e97dedb177437e0363522d03af0b575e5382ed0a047938f5ee6af5e5d05a9be80e9508eab2037289a9d5f834a04a175d32a79d4ebebca2650178bc6a43f1610d95cfd6938ed5a868832b12914abda63b976c2b93cc4b3c9198e965e964b1a610a824f1bae5ca82d4b1099f8b01c7d499b5ce63e02a776a57206f473094369614e251fd3431d90eac6ae069c4fd75f033bdc1624c14709429774c465ed7195d5562c19c76cd0f4f44449498b121ec35f0d7d4ecda8a7a296c7857794d3b0a47851aa1b11e810b1f451088f8ae0581355e3d278ac94fbed479a9634df5eba7fcbf5c75afb5fe64d39dfe9555759b0d5d5170b03e974adcbb2e21be5b2d36f13ba58acc3425f6d249658f38fb855357f14dd1be533ae8b15ef6f63e2743a1153651ff1c8d1355b07d5a2e5b3d3e98847acb931de593a55328d4d9b6ba5fef434024e0393167b7d4db5e50ab93fa9765ed50af89ade2a9c530e0664b6d3dc01bf649c70192d2b08615e5f6379e0750ad31fe335ea592c8cc65a9313106c34a048f4122c167abd84a2d339d422631d2d5b15b15e2df4c6395b04b21b7e0952bfe9a0730f78a7b3445be5126d950239e131a879c22a99493803b20641615a3bd912154686d065f6589957a5f12891cfdbe58ba476ddebd6738c902f9675b942458b8d8ca4f2363ecf398417da464117ddb7cfb08394f961a3578105d40cc669b4426d46ed659151f5ad960a712435812eb4c82874dd40020d65041abf84406bf65273d497605944eed2ccdae8477e7ad3e658afd355ca5619b2553682eb0fd17012464123eaf16cc9189788217617b1953e3db5997aa9a0972355d48c96ed3e34cf5bb13467fb2d6a4f2807c4f3d75da92149589487dc13a45e5fab46178e64456768106c69732dd2418688922b5a935c12eb89bb8956065d34f26ddd1d22782cf24a65bdfc7a85e708c80f35c9b7c123f08fed75cd59bc375a19b6f633743ada96e03105aed49ca4b6a57ca6f7927518a5a8a0be1376e354bb7c7b6500690816cd27a1c3dacc027baf31c15ed3ed15b7df4b38e01a610a185df31b212a8559bd4115169830c3e1a976b98e5e3e6bee095cc584c1d8d4f65677716534dc9c79b55b4ee4e6e53086b0a490d0972af7ab6762c39158acf337a3441afb3350ab0e0597dfaf34fc7c144e3b9d2d6dfd16220de7f15d586679a7a39ed2302a8f434c080b82a07e4478b69b6efc5a69b8d33c2b33e88294190b466848eac3069b87875efeca4d319d8560aa976c5e0a06025ea9db78b5390e0b51d9207714a42f77e597a448e2886add467f22050018b96e486e254bb000f3cbe82a603359e846beb334365bd90b068f56d47c5ebaa3e5c70a2be8a35e9b59545954ed8ebf5c7f8c2e739ce465ce8c37235a893b554a503f8c947e518ec2a97028de37f25f93fa20e96b3171715b1dd1394db2295a7efab25ffb973ae0660b18f07b4d6c298cf9fb1a1c1c4311e207f46ce4f7b564d4741e4859ea8f519616594209cd7320c1a52268c74d37bf2d095704408707fbc665b610e9dbdca0c1c2f46a8e201d9ad0c8ec56791b966017ad56d5a1a8b0afe7f1846a88a0a6b42306dc4a6ff7d8d352f6b46cbccfa912a70a0539b976b4967f67801d196aa43a13ca2f020752afd66ea164fc59a397e995515ea657cd93c5d26cca17cf06baef745e3615ba34956a3f16cd14aaadfb37e7a55a45514b64faf4f4bb0646da9626e3752cecb7d359bfba654f34556d24f9b2b5b8248cc86d4ee903d41bcdf116968469d36dae7b16058ccefba7a76af3859b80cbf4aad36966bffce4e9890f1817eff2ec81a61a6ed5d313655f16dc45d238d3f1e726e83a676efb998a927ec3ef54d0cbf26af9572aea38434dbc48c362e50a4447f6e3021d81bc2f382dffb22a3d116cf220a3c8ad6b677114583bd14fe9ceab57915e06113ca597d1959157ce3f45e04f395dbb656f39884d9b88564a6d15bd021bdce9605fafb51aeffb5f4b9a16f14d421bda166b99d24a610148d42fe1ea3c78e632472f37a5d599c8eb503b0acfa2ad20c8985bf20a5090512d3352dd88601c16e9c61e2d7483eadb02427032e5cb5002067013f8f2531757b31a8cff9ad622767b4943bbbe461abbbede964b3eaa2f0caa1bd525afae1b74b12c311fc1c614bdb19a6febcfff84477bd479f44cd4792cc48c5aba1105ea9b6446a7799c968e6a64c1a55ae5c1b3f71c9c6362a05a27e89cd25b155f6a00a7801558d6bdca125354cc02620f629e33a356a9702a4fe656eb847a35a1b7e5216b59a7d5ab59ba378e93514ed3a36c863d64e9294f385279661b9ce64235547c39c03e9b4f55e41df23c7c95278cab98e4284499c52b8760259e23d38dba26c5b8c02d4b37527c5656d64d062a27c9e9681689968721fa6796d90f1eb4114d6809145c5e19a0809310f57d5d7f2e9d84ff7ccb92ab8007e117c7d988eea7d260ef5008d62fde55fc56f66a291190a9c1d0eb645a4a83bc8510669a16b39cd63bb10e3b5beb7a03f078e9051d6fe3629a84f7ec9e611df856ec99777a727b7e3f95420b61db45784b0fd379f6590a3897019ee42cfe6573c43c3f2087c549bec78e8e34c65f88c10f81d90c5144ec659369984b871042c2c3e934cfbeeeff8969afeb9042787e948413690a8390a211c1417b4b2338811f9330a2d2f90a11ede538cfca32a1fbf3961d3c5a87659b0e0df6c22461d9abeb0df7d71b4adf432570b22e0f7ef779f0bb63eb3b225e8b56346544381ac5384c92ec0bc7ff077a2f45424684c48211a5d367e16f9688f98c8df229a530a90ff4fe82e746ca9a8e96cf01a5d397b58b38763009c07184d8ff50b83e939a465550c60bdff2d2e9884f976da742703e487454ba1695dd1ea6c85449faf4a4a217e0e969cbe27fcb4e675562773a1a7396319debe989b67b1960e4adaebe105d3db34db3518b6998aae28c24a198af59a36d59e42425651e4f34bd8e457e9d737d80f32ead34501a6c579d343f745675f2f4a416a8c72fc57fc297a7a735fda5adfb312a3755e866bdfab1b06bd2604d29d95471a9f2875310d74b31c0e2b57ac3de61ab52fcab7e4a3fa7d997545d0ace5d53ec6af3b29a8058127bc67b8b953a346485f24a3cefdf898b8a6fb5424ce45cbed32ff595a8e07f2004ab60aaeaca38e295f164593161e17c9470e50e34f667e386eb400e63e554405575decc72cd0bf1d0a66b31cdcaa2a6a71b47613926e14da151b3d47f0ad29530e02a21809dbb1ab36851fd540a41562c453422a3da36c49e2771aab12fe1575c9d91ea4bb1bdcc9d1017efe2342ea9b07bdd9d667f2c230dba3bd80f2a981afdef52ffb1041363472fff3bb0ba46faea557397590f70b41ca5b1b77459c5c8322ca331ca470d96b1372bca6cc2cb065eb70981f0a3113e19c64549539a737fdf5224e8e658e53d8d2ee9916031d339f3ed86b3047db6cb35cb3f2e281ce029cd8bb880e7ab11a51c646fc944de5bc644ed04510449d6d8c2975746167477b2f50391bd7aa5479799781cb2ab9d0235ec72f92044ba913f3d6998315d68a9dee9a4eb00f4cf192dcaddeaed0beff250bc4e804d5a6b126c592039166b7ae21145962d33c140e5587cabd1d7d8fbb53f6f6bd97f578a795042a6f45e98a659a9c0784aa8444958144a5828618d6df5efe644576a98a075b574c4ddc6a9e6f46b58a99d5ae92fa0ce35a0d244e94c36bf6a4a8e35d0c934cc0b2afe3ae9f21d2dbe1f49fbf1f23f8571f5eac73b4355549d8be84595fc67c4c1e3026714065bdd1d967ab365ed880a4ce5f581fe81296597e5551d6177595ef1887dd8c047fa754af31868364caa3b95ea96bed82ed895315e37d61149cd1de32aa7538fb35209159610ff3e0fa7e35f86ca88b7236ae37e0f566f21189a5aaf32aacb090c2d5cb99a0882206f225d9642e10419c3af18963aa8ee17b6a087b5b57c4a01375149470afa1260fe299ce7248b6ac3194b06afd3c44a82ef5939cf3ed3d458aaa7e9086b390d1a9911d72f34ac1c56c8e623254e95500f57edf608d4ca2c282fc3cbe8eaca902d478b9fc365a683c2bc82ca2d0ccfd478cf01d532d0489b6b9372a12d4783d4d2c8c064c5bce191b2e034e4933c5b6c39342d6391a6f250b442b8d04e8242cc23990591a695410188d54991cdf288929b6c744f8ad90dd378b592ed845102e6757d275ec567a2773a5bf165727539bb7aad85cd9dc797304f35f5d7304fe3f46e5bb9e5b353bec4e558815928eaabe495aa84494ec3d1bd42bfc6455990ffa47740fa7f266619de2934bdcdf288160ab0bdba0b685d2861946745a1dc67b35c018e1e4721f30767ca0d556669fce78cee28d0b932c972aa8437d9acfc4f0acc1a6f05c6144e57b1ad8ccb72bafde38f233a27e1344b926c14962189b2c98f5196d31fab610b322e27c9ff8f756ce21c54dde04b0fb6bafab604394f4f1a4020ef69208df47276f5f4a4a5ac6cf03487a2f289d6e5e6d787850dc7684e2dd50db0a8802505a9918a668fe80e67664443c8e80365545ccb5bdd604e6e230dd62d9df275b95dc2c33cb076f29f6a0f788edef4fcaad3814f1e88b41c7959d5bf4e5fb1029eec86ceb679bd91be62aee4da984bf5c5acfe65e5993123392d68b91746635a883fa75c33f5853123fc7591d539e0a4b7041f82a4376684a600b9bf897d8bcd8a60ab2b8cf02dedac85f0bbd0b37feab524e1330ee262cd417c986274545a2a177196f0f7526515a32b965cde461cd49a66f6bac51f5abbcd83d2a08bedcc0897995b7d3da3a54208393314a26a765450a0d6ede3f475f44add56d457e92b55d10a4af1a816db3ffe781797e3d90d9e51766439d3f831ae96694ec3e87378470b5ddd4ef5a7271842c8f205a5b038cf3e66d3c03258fe761019310673d7870534f1d560a348d74abc0e586828ea56dfc7c0743a2a48c470c9224b6471808dc2c498e725bde24a2aaf309ab3ba582ce5d433461b249a0a7f5530dff00a196af08baa2fb4e2e9492bc05c60789f058f349d6f3f2e163bcb3f8d5e19fafa2ce0ef5928f3fbc7cad3aca94539bb510d759a67112d0a2550b042d766d515f8587f5c7cfb55c8aa565c094c4c5768ae6dea8b297e99c94bcc51c1796e4c61171ef3f0cbf6230b655fbd00c5c8b2bfa7297f77df7f77df7f77dfb7b8efdd6ee5bef7bebbef45f77defbbfbfebbfbfebbfbfebbfbfeff2ef77df8dd7dffdd7dff7fa6fb1e06ab4c7711e5f1add69c4581e44fe92dcd691a553e7b74358dc322fdaf52b9a13455d08313267141478aa914b329cd357d0902264447aa100ef937c2c8c67ff3e5a553f1d5847da6de31ed8ea45ac4de4de877f1d5849a3bd08d22d052cdebeb46aa39035d379220d5fa8e6ecce0b9af1be3360fc1b22f7495c48c3c00ec32499ac234ba185819bd7aa563087c437951c588d1700464726aa1c625ec469d829debdc27a093715c94597e5fe5488424d4b592c94a30f3571d0061e500109c6a394d47340fa49aed8ad88fc98df1c887dc860954e31b118f9663b5383ea9eac0242d17f8632da0e866294d4b7d67a9883b75db8ee115198844df7815183216ababac5e4fd4acb54902606f52df4be2e8f34a5e9926ac204b11a2d359afab5f7c016ced23637274f4f4d4c5576eb0dff260f3e2edd8abe83b1df5baa0c92daa36ab0f65af97dcdad22899d032fc40ef31d32829f9b7a8cc13feb518c7b750ad2f40e43c3d69eb7cd710d7c52f9c5e97d5b76d1620aa8b4065062c2595d00773cee22694c22a0cc035be47fe94de1a79a0d5dd1b25f46654c91a5ac2b6e852ada0f14d7c08aa1a6a99a957350f9111e188ec6569319bd01c55684314836515b3adcd60902dabb262d6f5e8fc757d6a225de37de1075ed72007d7b7732309e2d76545e97c320739bdd5627d5b55db270a7c8d8f50f074aac878e4f4d3242ba54b719a355982c0ae06d517c638a7b7db89019fe902d35e25674ad4739b007035cce3b0fe8d1e500e1b59fe5a9d867754dd2ef1d5202cf0b6fe2d32236a20f3d75558ee766e8435ec59799f506306fcaa6e350e40f28451694c030a56047bb7d61cac298e56631450c2a48031c1afd0cd3d28dd99f1b04426d4585980a1ae4cb3aec1c9e0db1d9b273811d550ab6960e86fc45dc82a1744f0853545da33ee8275b3e5fef53d9986e51873bdef8d9be0aed3b96bae6eb54bf2eabf5f07ffffaded1f1e179a7ef99faba7fffcf89fff5ce93fde19ea7ffef383a56e24e9d07884ceb76f0c9cf0f6d86053db1e19d574b7e70d9715f944f5c2871ab7b0931350048d38d8dad2a6afa75a0e7a7cae23294b5424ba2eb64a416c511d35d6f4275a5910ad6f606a7f73c942277f6471aaa98aaa2fb49911e9db33631cc4af578ec8c408f5ed493bae6e97cfd4326d6cc79d4ecadedb63d454b09d18b8bddb63a3ccb6ef17c603e85b2f88736e7ff379f48cf291095eb69618f88dca4df8cc9bd18b67de7c9e3cf3e6f4d9336f261f3ff3e6f3db67deac3e7de6cde8f367debc3e7ae6cde89367de8c7effcc9bcf1f9e7973fadd336f26bff99b6f4edf7fe6cde907cfbc397def9937a35f3cf366f49367de8c3e7ce6cde85f9e7933faf5336ffe3f7be69703ce6be55dbdacb343ae54230af257aa82eee86d65127e55221659744395841685528ec35499c4783b08903fed26342fff0560114ddea056764ebf964a988e942cddc36aa51867b364049d14b454caec8e96639a13d588573bd92fa2704a3fd07bde925dc58e302e209b954d97590edf93aca00a93e9d05db8daddc9ac2ce21193f7758f37e1cb7b2c588f07f8db5dc5bf942c4dee95308ae8b42caaea7f2995d820aa916083ffc51b9ca3da698e6894e18b56796816c7473c99329eab3015903722aa310bf257ffa5a8eddd542a49a14c6605b4675c4d29e2f42ea1cacf67bf11cecf615d61aad0c9b4bce7e390ff32c66c5dc7ec37b40ed3e9acfc9702d6759cd3023698074aa4997287d221e75b1f7e55e25be5262bc74a9853853b12896adc3ed763969f95747a163fd096be0bfe98a8c6746367c5e67e26e11fcd584435e6df3c3326a192fbe57e1f689e11d5186dee4e1cfc25dd4dbe65a91b7bbaff969e9a8d7b60cd3eb29c2ba105b39914303d90884a25a161012786328a57f81d1a518dbba54e947158bce1bf3e163c96f98c2e847eeb9f62cdd20f713a0a1e79abc3e57ab2373cdcfbb020aa71b332c3623645b70bce24cb95f24b561fc11d251c8d3012264cea4a24d5f82ecd723a22cabb382f4abe82b8c0501fb6544361bfdab4fc8cff2e14517ecf66ca24bcc7784c1a8e701ac93dc01414e710160ab3ec54e36865ca18d724ce934fa7a8bac7963b0ae8473406ee58e35d602efbb25ed77a14f6edb90e0fb0c3b718b812a777ab5d23d3f8f1cb382ed9cf26d7b8204435f696b77c56d08ff8db6bc1e36d9814b0e3d584046a508d8b953564a9b0ef8073be4fca97314d9559ca7f0732415a3da91ac340ff52f86f892a379504630f6ac38531477e6ed23bd518b2f667ecd7d8fea520242dc8d9d1ee70f823fe96b4482bc0ea0a383388bab800f14554e30bf6729e854549ab8b1b4d87e7202a3975626c23081f05ef549524bea5d17d94506542cb7136c23033f6c8ea11e58c526556847754a15f43900b4ad644a129455c0227bb6e1998e399e560b2c9868512974a987c09ef0b8541164a888ec8e6d49e3174bcc59f9afc971247598a68137621be55cab84cb02e9bc46589fb70bed2b040b9c9c4ffd938fb92d618dbd8cfc2f89e05fb3d0b7673c0b9fbf28073d77979c0b9e5fe8588f3c6e19f6ab6ebeada7330fee05ba39b8497c9eea43f956b2f8fcdf14d0b3b39a1f8fba7a01d0762e1e969cb32f0c54cb7f1dd8c3ddfea1a2a863ba971aae49d8e96932f39fbdd618c3795854add6bd4c8c9677a6fe4e28b49a2154a2a3b9d1c9da1dc018c577658876f18dd184a153d1b4a55c7b2295463ef60965d5d5f5f9feeefee9d5fbfddbf383f39199e5dbf1f9ebcd91d5e1f9c9c7cb8be165f3e11bcb00dc19f127ebbb7af97f9fde30b6135daf6aa178c2bd37443240dabefbd34e5c262772bcecadd0a5ead3c86a3d1f6a57a6475c960a0f4c8603036edb969475d93789e495ccfb4e0bfc2b4142c28d6dc1e9b76048f956e535b10d7532cf86f6ccfeda8ab10cfabab0acbc4efa63537edb11d615ba5ae2c9a711e26a663fa91e912d756ba665f7188d737fb4abf802f0affcf6405937d31f1bf874957b1dcc8748863295db367daa437307b66af605f941efc53a0a040c126bd3eab7b50af0c351c8df84f289bc06955448aa7740fac3d986557e92aecaf35b7dc95e58d2d77754917d62a061f26a6a758ee817d618ffb73cb7e98b84a776c3a17f6d881e291ab0cc6d6dc6a45ddc5606c6dc0dc817fd1dbb46bd681bb61d3567180d20191d0ff7bd31a9bd673f3ea6f9ad7c43707ffdc1e1cd55b80389f0c94ee41afda900a0579f6c5bcc9ca329b20027a8a656dc4c0dcb436efcce0a2bf1903bd8d18189896f54f92a1c570d01b5bf61c8e8d39408c58f6dc59c241994dff478e011b7f6e3a6cc849d774ab09f41f8e7a8abf99defce790edfe0d6457eb2f3333cccbf8368c382b70159774819ae7e6da9a96fa1f9bd626e6f8cd84a4c060bd65043a8a3dee6d42c2a6293c4cfa4a6f23c4b8fffc2460d3fe661f02ae6fb3644473c434e95a8a7fe11d58bdb9cf305577601d0c48b7ebcd4d9b0c067b7d32f05da54f1cc7567cd2735dc5573c3218f414ff8074ad07a05bfbc027aed51b7ac4eff6883d08e139c20025774de25b26b1650cc6195bd0d9851391aec5b7db352d930c06c847c860e02b83838d82d0225e7f30248e62b930b645ba5d47619f38bc628194838fc42176df371d620fe616f1062b24a210cf1dc0e40683016003ff5a73d3ddb548177ae8dabc47868001e0368cf36912a614c9b7a758c4dbb5883be82bec93cfc021ae4b5c773820034b71c8c0576c1cd1493c3270a0c61b3aa4df57acee819598f848b1155b71b83827fd7ee290ae67c2c7d07214cb4b6cd3823df24d9ff5ea3920a89d88d8be496c1f30497a1e229474b9fc051bca8cf03d914807aeb2495ead939748feeec391a538127ef4f233020be93eb3bd9b1519cb7ce6946d9c1eaa0bdea6f96fe263635740ea1fb3a28c6fef2b5e6ed964d0ff7b33b35cd3ea7e337a8180bd9e8863577986893c3391aee9fcbdf6cf31c2cded1b14372aa3a358cfcd6923d9fc6dc2ed2acee6c3f10cddbbca66906770726429963dfeebf36f70daa8a035d13a7fe338fe83446b1df87f953521cd8dcd8daced7f94e66bfc4e685a8a6aaed5858d73d634387f55db199bebdb305fd5051f26207cff0e1d39f2e9ac59a612a298afcacf95558fb33c7ec8d2324c448163798a2fb556a40b067bcb79c95c9ee3706ba8932c7a30b6d7d44629d826cd78050935cb1a2883036f7ddeceea786bdb3537d71000c7bffbbca5506c341040bd7dd18c066b18589fd0f2a2059e622903c931fe8bcb9eb8e6404223dfb66ed3556c89c6f14fac7bb329f7f243d953dc979c37096d7aebebf5d1fff13c2f79516fcbeb9dd3bc8ca395f30d64355847fc998f78f0f1504ba6b34e11735ba27cadc37db3a927a1ac83c185bf4e82f2fdc6480b1689865b4d3c5bb189ef47c4012387b87d93f8f06911cbdbb37a0af1415b27b60f7dbbc4e92bdd0887e89aa4ef118b4112b79f9816715c053f6ce2e03f8b380e547b0f473e7115ab4b06498fd896891f3671e0dfd02396d227bd84b77a00439a7b607ac47113dbb4ffaa6bc123bd5e62da8a7d61b9282e9c04bd8116b107a6cd3ffc213c40ec342f7100f43804d8bd1f11bb8f22de24b60d9f5e01df4cfc6a126f6c028f00189378ec01f10a8485ffd0c894a90d736bd5072a5bc29a3063de11fbc0bef0b83b04e639000a589de7994ffcbed2577ce2297da651b44f73d255ecb1f7fc62bd8dbd2c63b1a8d0685963fbf9aeed6726684a2778d667abecb3556e9e1f307599b89d5bddb5cde8be844341e3ee817de18ffb73ff61e299962b134cf6983975417d984bfcdb32472422ce01d6f61ce29ce7f6440df3c665299822aee2acfb1c4c0b7d1ebe35c433eb0d367b67fd55c4f99bd4678fb856d287a3071f11b10626b1fac07e5c073e7d6b7dbe8248761409725de20d1293772a5f50e544e9134701c0cda6f1da0ad63120cc72947d49abd9f52393386c230085c4190e14cb223d7e8e4de20a08e49291f4860ef1953e71f660cbfbc4521c98a6c2bae393ac4d0d8758c4230ef113b4fe6d6213178ac42960008bf8267112cf846726b111b588599856af9e81b000c134adae780e5ce25a439ff88a43fc168ce247627a8a0700c0b5f1b32b78ae12fe50e2d4c2d6431846e9c38072b5a2075325dde5f90af4e0125ff1893d484ccff44232e879f04f74dd55238bb327bea50091270eb1078a83ee3d325857cf049218208dd5f01b3d75887bab8f846d0f90b2e18f0f2bb2e078da266e88b0a4329b2e6d034c1004d410ce0b70ac3566546cb629564f65214a457e04157e04fbc41ae0f123be253b3f0a20d25a3e9a30e1a573295378448b957883212a05b0acc8842101450e711d134796a2d487ff8796adc0a42fd69874f1ac7e8b939d4d6bbc2a3de220b1ec81bcb050f770144be92b80d1ead4225503538523e41017670888e891dadfea709ecc0edcd0575ce25e30b5a407da4e3d3f9c9e4bdc044eb5439ca5334b7a7c532bffb763c21cbc550a29049394ebe948fa4e62ba4cb2e3ff2e6b879fbd36c631b46cd253fc0387b809d7c264bca2e1562b3c2d3199e775093b45cd96e0e1cb97387488ab0cc6036227265701e58877e5884f60f92bb32fda705829fd0c83b6627565fcda26bd0b8e1bc5fea6fdc2cd00cae274d555fa4ab7780673cfd19543dc79851e93a3676db3ab73b72e2556b7a3d88cbb752981a16071f199335ccf058966f513bcf5e8dac301e92bfdc425be673ac4f24d5ecf5cf9960f4c9cb83dfcd367573cc2293589cdd03820ddbe493c177a36ebae951eb19c8d0699472c676803e381c1b129e95abb64d01bc03fce496c659d47229a3c60443d1726d8b7abd6c31eb1957e62c29ab05bac46f5d4c715f2e54023e6fe132f626cd6f3c024dd3ef15c93e30ad6e32b03d2f72f2c6fc35d39e9fb890b259b0c7a352e2d8f58604fc174014903c9d599031b3b3049cf3519b6f985f5accc26611947e66c3a0a4b5af04b7b69280453ffc07080673dc5360137171b26bcb6399bbd07c477777d32f014fca894857ed45530a04388e1d8e465e82b76e8918102ff505200b63cd2b7128bb83ee816feae4ffa0347619f7c14b45edb3ddb36c8dd1e2806a04d6cd07a865657e9a14680a6a4546a0a5aa7add84cccf6992e0062cd1e14c403e661f11bc68723aba7d45100dd1ee83da043c0971e0cd4f715f8d80515a7a7b04fb676e0643671bd0b6be3c5f39ac9bcc9933336a55b057304aaba094777940b55a7a7807807a1ee9916b11ce29936e9828e05667edf1f5a20e689e744d0a94dfa7dd325c0663dd3233de05e8e69110f1b00dd0de09b6be143e2d9b078c4ad1d919e45fa3df80ac2db775182c31026f26ab4e85d4f71e1945ac4b1951ee9f57171041554173e068a4d7c1bc0158b783d983f0c03752eb17a8a4d3c070e9105a7db267038ac1e3e326d647fc4eef3f17cbc9ec4fe4cd69f055f3c9cb1e912a78fd3307ba4c704d14d989a519c4709e5a7b0bb87240fb8e55f5e12c8e42c7964ab5d2bf84e9b5673f7aff0ed2e9a3bf26a229fcd30c2573e550a85d35380b12526e9d92601fe401cd0fc40691df4010d1ed221deae27202388ef87c47580aefb9572ed0e4ce28132d8f748170e470f8e8d4d2c173a217d105b36eb877848201effe20e94aee9921eecb5e59b1e19c02ef5d1443449171af64ce8134f0efcf519c3725cd2b32a0f94cb2f641ca0a2ae033016b1a1a1471c6c07c2af3b80a7e8d70212f12d64f470c21cc5258e9b00b3572c46d7dd0176e86113d2674dc7c4eb478cc311a0070767ea0f1236533f22036469b6826694d523d09f05d2c126b66312dbc16ad01b706e7e0403b93e713de20f487f40fc011bc443a500b0e759300a0c8f138463e346b85d3d5c2e923dccd361fb95c0d4ac4104ca022c1c68c5c73f03e7c2276e8468747de65180bd81be06ee03a847607ef61881f96888796716e0d7038ee315162c0c46f5ce50a3ec4375ffe1a80722d025031098ae05fac5c0029c3042822db42dd45e004ffd3e71f01401724082f540f2f90e7e7149175d1fd00bf1fab0518ecf96496c0bbaf0e10463cfd831d094eb700f860bea121c29c6b0f2281b21cbea2a963bb62fec832e4678f594eed8bab00f7a58b2798905e0999ed24550168067798a3db76c001857f17a55a96e6d43d1e6e1623749987edebe84039764d1673a32a7342f32e630181087a99b03608c36e78388158fb17f142f4c09e08a9505148c2a9b0b7ab90f6a17e9fb6480528f99dfac81c3feb8a40b7a81831b6df7b0036780ca59b7c7acaf1ea8843da76ee6a0ea82cdec3d105b2045951e19b84a8f745df60d63a81c1ba7dbb3b1f701700de8d761ca086a7416fbdbf3d849f5099efd3ef1e0180399e2eca1b20b74ebb1395b401e3e9be50097da65ee6964e3707af08befce49b7c7cc4918c5e9611397f4fab814c7023d7880870f966bf789ed40856781d68703c15a41af73603710794c5b639f73d2b52274a60d888707980ce0fcbb3d84eda1ca0874ddb5d8da5de262973e234b856b08360b71e152d1214e1f2491b767228c473c14713d85fd195ba0fd15c07099df0f5007eb747c240e9bb9de5d1b7b32a1a78723cb22035fe9ee0d406ded82d446140dd837b7b0485fc120354771cf2ce0f5b60543ba05ec08982e28b41e8e4073c6fdc5d59ac084bb96692b70f8ba0a48700b998d4dec3e98253e3bb211db7de06c7da685da7df4de8066d5b5141be78ffe172014f4ec0025f713e8c2c42ed01908dbd47389dd57d856309c81dc667a053b5959c2e2922d3084d18c010b062c28e0547393b8cc618bbab18d669a333789b5873ccc21966275417b40cfb1cd625f052baa72095786e7d88b40c27715540c14d77491a0d10f6be3988ee93c1cf5146f0c7a0a97bd95e8e5d169bd0b0f8477efa07731183b6d606c79195a5cb6fcb2e3a22bf1fa3c4c2ca6b9cdfdc4b4e13fc5bee81e7873abb71e72207139f3612761fe9963d6c68846bc0cb2184701e30f63c94090a10e02a586dd78a46b1db8044407702393f419cd92be3db7c0a08ad02c20b60722d5f3890d8636d329dc08f40d602a7d1014a84e394a179f2bd573780ccd2ce28114702f48dfd9b38038fbe86a75f92461ea6c455f798c6e7773d0c93321b664800a9d3f47cbd47240baf79c3dcb217e9fd83d8c9343bc380adb1b0c4f670f41da929e330471e6919ec50d4d7b0fcea2077a6c57f160915da5b77e552ab916427f348a02386d3d261e1cffe168a0d86387387662115b710e0617f6c391437a7dc53ef0e7ce814ddc3e3c32857b367f6cd973d44e6ff298de466141f945b04306fdb1e94882fda5771cb27b1577eccc4d6b6ccfad71affae2cccdb5005c266a0f10c69d5b70487ccc33b0807c0fa09383eeba05b38e9ab9e9c294d9d6cf62ce233c2e69b953bb977055c98a8803ca9acb3cb33d07fe80b608368a0d0aa103c2c7069daafe56a0aae13035cab781dfbae8dbf0c170f01c300d51111d4277a00925a8a8f8c80007e8b74115d2636e630f1e574fd1f5827c11feba16fa8f56c0b11ebe45d81d63c538228043270cda44683e4d192c6a877db0921c90123d3f227d387c0a6aebf817036149df32f189854aa5d285d38a5199519844b3242cb39cfb81657c49c6c0d66fd72457603da050173342e6360b6c7231d4a52ef4580158aabf04e78b70be0037366d7c84378a58ea891ddae33e0b728fc284a6a330e7a12015b3062151cfb6b77ca1c3e5c692d878983826530fa3ae20c614bb30413106267d6181eeb9e9b1152dbb73f9dd71ed141d5bcdf4dce6deb807b2a9496b705848bdd344d4f758c1555c3879c2a39ef0083940f36c6c3afce191fb1c56ce1c906dce3a5210bf139a8715a71983aa3e185a5d3492ecc12e19783df857f91dba0ae3d0fc9ed301fd81f95186a0d029b290b7f5bb491b2c530b443fb181ba7bbe0207d47515bb70900df87d2c9bf681b5165bbb9e37f0700494675d78c0d81e269ed28b4c9bb934d13a1e805655b02fa832708dcc55d863568794082600b4b315a672154009ec3f4e149c1e4ce6d68bc29c96c2e5239c62d47740f95a8e4f08893bf0e05f65a23b3ee9632c84820620016c10cb877acb2fb087ae8f72dbf201cc04b03eeae020746c664438c23c9a5831ecd444c10de219cd08c721163abf1d0282c3426bc1f2719a386c81ca7e9f1512845b99b442fa30a63f377dc92285992c0570a13f0d9468b418fb5c41453fbd43bcdd9521d08f355f45178c8cb382261161a688851633ef4e18bdba6a4277dd00b1d9b5583f898998dceb030d7b60f0f681977a4a5fc11bfd3e17e2e8c6c6bd599b08eedb787d82a861f1eda0496296d9171ed2d40793a0477c383a4c3f636637ee66af3127b19edd65a0dde731e72333c41cfc74fbabce7bc1b90807cdea8389e5a04de532fb8b75cb7a65fb60b33a8fcf00e982791a2c8779b64144f531f088d8564806030ffed55782369c7b6708b256b19c3119b809f17a8a4d6c37645e7d0637c029831e8c31323e6893fe9e8b67df012b6800a7df21407767c009d02704260d71224c5550501bc06f7d168301968398206231898ccaff004f7e1f3504f60d6c51407a9ff42cb4ce7a8a43d029023845531f355810d37821e4e013db656e26741ee3bdac8d6b2503d0f35cc546a3ddc57188db47b790e5a044278e070f067dd82cacc0071ebaa831206b60ba849180473cff4135d8b528bb565ad73e60c3404766e69ec9dcb0ae0d9610e00a83bdec015892808e3eb07e6780fda07d0b1480cbb00a2c386c5678a5c1334240b4c2b73e479605937c380251e1131b75099f39a85cb0112c740f9880038e46f4050e7ae856700b13b1847e14406564729f2f6a7b3dd8771b1d4f0a2c9f2111552be2f099590ec3abcdcc767e46e0190aad7198ded1829d2c1b7426df4a1cc579debd9f3866db2501bf5270407f94441f8a2efc975f3a3ce05d1d9c10d3022cf61d7cea01a15b78f5ed9dc10160793fe87270228482b2898fd08f0dbc89b5a9fe3d1c594a1388252e72e8a096bcf9a21e94f01e20cf25feb7441f24a6633a7b2e93fd8acbc677d9fdaaa00e24a6a338bb926002c5e33b9897dc0bb87aab2589cb1a107708e77eee3e4c7a7066d62fefd65bcd4d0ff3a04c87a3cb51fca44521598fa6277de086760fb983d7478b44617609301d1353a7c062b2417ddd98f0002a551f5d773e881cd7533c625973d2b5f63ce2582085b0aaa7801c829d762ce4cfae4b2cebc22316086df481ed111b081491ee939ec52fed96af3e2d34161cc6eee178b2c1869ee28325d48799f6c9004c682b42d71b1002d08f8bf79b3292c2bc4ad7da7405b91e24c936baac0cff5ab7aa546aa9b6b8ba9eb9bd21260503732c4712993387c1fcc44485a5ef1cf4303fb72b0b085e23070c65c36b48f888401f02ae622357818f55f27c9957478dc6749e67a97913469fbf84f90875031f83af30080a239b64d1789bc2037b7807ba39997615a74b37ddae1081f52d9c60c866beb4325111f6e47602c688f2282ed379e6ce16c3269e65ea2e4bb05ca5115bf19626779be535d6adae2416616ebf7866a0f90c14b0521c74737d6b30d54019208b6e7f0383c4cc111753abfa7f937e3018660fcebde213d7578049f836e8c3303330062cd83f443d6cc7c640420945088640174e148b13744d49470276fb0cbbde5fc32e8ba891c5fe29dc680172f430dabe0e76ad265cd90e78fe07d56cf7faa0fd219a98e5c0ed856599d78e1fbe2cc0f15f3c6ec84df1cebab9b2eef11beb1ebfb0ee09f7d53d7e5ddd5b7bed060f35f1f94b377ce19d1b3e7fe5862fbc71830d6aae86d95a8a2f3fe0033ce0eb61da2243725e1eb6f162bd4ec6022cc57ff8cbd7fbdffc9e92411bd69aa0524bf131d57dd827bee231e9f26dc7d55140fdaa8eabcb8eab2b3dae8e2cb07cf5b80e0eac8dd968ff1ba04f78c9091c4a7992fe2af7f025de714129030a1cfac05fbadfce5f1cd3f916fe823af3ff0e88e4bcadc622e36a6ecdd55c9068324d7e2357f391ab61d853ebbb4080ed416fe856fc667be3ff1ddc45f152965617541a20b35e0f835c6062a6539868d1bb88251b3d1276f3e20ae4cd3619b87b964d409cf83d8cdb748135595db4cb37a59d463606d72868a33b8a67fafc1ab56b334741d745eb0463125c2cd97dfce3da0f13d3b24c8cf6ea81c5f2b279bad5341d3e4bfb7f74924a83508f2114319fd030e56a2426b56182dc0036a8afb012fcb506fed0b215ab87976936e977fd2158d218a58b611b5df7e1c853ba438778403560aaa21b0bbef708985b56370183da21ded0ea2aacd661aecc2889a7375998f30b6e65cdc01913dbde1b907e9fb8a029b8e87cf194ee19d859c465069f2c097d6e8dbd0b1ea8625a73fbc0bbb025af7d9224a7bd30a5344ab2d9a8724847e831ea9a1868857e5f6b17965e05e5a2fd63e125bf0dbb4d1c67d7211ebe10c46a3249bac4dbebe2f51d7ab37cc5420fb162b90716faa22c7e2dcf1cea45ed7937d94b2e704ea840245938aac4215296548bb0401bdffc4626cc67f0304fc322ceee72e6096cae4c943679277f4fb3b0f0dd21fe73d8f55e84dd3ef1f0eac9b548df058684070f43d3fc3d8c69ecf27bd09e32503c6510912e9af996037d5a03d2b5f7b83b1b94f83e717a4c8967c7bf3afaa653303ea0c0eabb0a8be5f3896f729faf5df76bb28e4dee3cec63c41c8bfbc2385fc526aebfeb90410fe8003e9be0d4a88b17307212984d6b02e857260193447e2d897ca5aff87f4112595d1445ed6e8ab989d6fddf9145968d772bdfbaeba18397058e7865d0c55418a421cfc4802a0c04e4f195d8751f6fc42c60a0ec36dc462726306f47619fccb1e622076254edb9f07f1f9925302805dae1b6f6705b1d9b3987fc3dcbc380cb2eb2aa9e32402f64db0656b17b96d79872ed1e55857b54d1964b4ceeadfe9f56b680e1cbc3c6450dba56a0bb4c81eefe2505da467b577137e8f20f1317bd83ecdea6efa35f7bd0237d2b3179ea4b9739b8bb2e8b60c3db97559f1e1e3f1661eda173bd6f25b66975d95bafba3d14a7168b0384e632cf4136a226c63faac27defbadb4ef6d6487c8dc67afc894c64bd30af773d9a46168d5227c8ad6d83259888e892c670b80170111b84711ffe149c362a3d5c46ab96c03f301172c0538eecc1c3043dee7d39e3b1c46b030b887c506507c9e6db908d2878ec412d7b0a93d19ec98aecbcddf1e3660d303c646c5aa48f97b7168b42b47d9660e962a8aa9b58c0d0314a91057159f8a7cff42ccb49f0133f42d2ef3af0af3e1f18e5858d952aced16177b53dbfba2a03a5cdbd20fe0036cbe5b1e07df63f4cae27469cf530e26c6e917e8fc5dc007dfb1e0b48b488ebe368f02fc28045383003136bba03a53bb478f00b50141e2707740b38805de0e028c8308f0ba3877a20c4f0c6ad3b388019ca66d2c3c03717a0fbf0df18f189593d3eb17d603998a7d07557306155f8ec637819e092dfeb590e0b8883472cdc1d1129ee84035bddf3d9ed1fc6a632a4accda517b1e861c2a26801ab7313415191b63044938564620c798d0582e26bc0126d07383c46fd770711431ce216b7b93b68d08e0ccbf11041b074dc188e13d9447a21e95bc0bcea17f3f581a90e1e26a64f6cc525bdc6dca88da4a2513e9446f960890258c7d9539284d3829a619270c726de69225b7d810778e3b55e5f71bfc9e9fc30c1a24dbc3ed34c06b5663250facae02f78fe2ceb2fbbfe924681e26fbe0defb359f3cead7ff0bd16472e46285d38637b6e751f268ed23df0ea92af740ffa17ceb80725e44f93094d4bfe1603e93cd6e228edb95ca632bf781f2f746c4922ba6cb298a9bf870144c0eff18061040e861228cccec3ff58118c3b1780f07dc54a1fdfedbbd763ed7bac3ddea79cf558031fdb0f58fb01b6efb3f67edd5eb8d615ef68cfac2eeb0398bae215ecd657a96e7d2d9bf5834ffb1c99d3308f0be670f0c900730ebee96d4573d39249510724bd4456af9188248e53f2ea13ab0b66eb3fd75f17a73737edb18b1180ffec6c577a37adaef94ff65f6d5c5154fe0ad4fc5d8cb8c1c4893e71d074e9b1971b581e0a6ecf62393e36e9d985497c90e51e4bdee8a1a101e078507a0afb645a4417939bd8e33d9fd80eb1914c073ccd99f83eb13dec17f4571c14c37e1cccb0e8c1a7fb708407c01df64058f4c70ee9038b82aa6a41392d0a5a85ed0e1c3801ceff0783ae3d7ee7f7cf5e456c944503d0520738b6cfb09ddec6f9849bc3ccbbfdcdefd0785172eb7309b589e9b288106758cde461e211db561c0c15008a76481753e3ba3ec1bc6e07f4a2c66f5a8859cc8d93356229da2c0bc8576cb0fc7a09e794bbc0eb80a30e0675fa62d7c2f27a4272d1387aa32ebbdd4785b6c774511b0f9bc5f1c2d15b6449154c6f798290aa8e71255a9ac4cd86eeaacccd5aa00a199c4047de813def8f2dfbc203d9d96b027218da01ebc2deb4abfbf886ac8d3686cb4d0ca6bbd98335af94a5b84aef61e2296ef3263649e2e9c16043ca2ac758998745c90f3f0854778c215c113b79ae8fc9a3c8ac3ce60c1f5a2e7002f72f9a1d43ab4b06ae62b38c151be3f148bf67b2c5837aeff52e485f62741cf83c986f55d3c7d97ac889073de642613aa0852ffe969b1b4ebbb9a1a0a39205d4b81e1998b01d16710f96b36c36591aae1b011f767de2d8c0a13de6971bb21c6afb2f9a192c491d2c079bd82ee9f718bf725ce2f5181efe1ff6dea4b78d2cdb16fe2b07357eb171fa666868c2813c4a40b36f40d3cc0cdf242d439459b7f4eb3fecb54e0429314449ceacba0f0f1799162536c113a7ddcdda6bbdd7cdd0f625c4e85b1ee8ac68cff3e63fea610c6e83132d069d5cd2887f8cbd1b5e7efd5d11afbe45d57fe7be45d5b34afbe61aa0fb58e7797bbf9b48a056f598c67407e6fcb4aac738a6bbf0b4f743f83790f48315dff9a7cfc58455383a3bc6bbeed73c6cbf7e7b1c3633f2244a6b08a08e835b0aa08c2e2f70d7eb5725f39e40ca71c8e3e0f251b70249cfe8da3a1dd961e6307bc1257742731f108c4c8475ab05694777fd32eecdcbe8103ddcd3506a7f11f5543bf3c3bbb03a996892f08b589d6afe0248aacd9098cdc3fd3fbfb39830efd44f09833ac2ea03fbc199bc0ab75ef7efac873441cdf8e9cd04a806780eccd357dfb077d1d8eb970068dbd9a35f85232b19363fbf6cfbf4742dd23a245cc538a916e40c510d4d1bc5d7b03e5d505af3c6ee92e4a67dec537ada4b49e8d3d39b6cca12c2314b3d01c4dd80cbd55c6fc103a59f8977557c29bb2c31a216d617282948add5d85bb85dfa86639118ca6e0091fea00668fe74fa3a2484a2bf8b92ea8b569c4a267e7ed90eebafd3aa347e3c6fb035ac173a6bac37f64e0fc2f5b3ce1cddddf933ded8a37bfadcc4852c39ad83580b70f55480c0fed235e437625d159baad850c5b92416f691ff58cf4bd6cd9d1c97ea11a46314f7ce6ef6e22ad80a72f9e4a5e10cd69f7d050453375272652c03d51bcdf8414a8e4f9f9d76a75a89e96f1f96076aa375d858c8eac1b7107ea95f1686c08947f587af01bd968f49a27f4f87dd3a2f2ea2dc28fd3b7a0079e631be9c88f1f99ceb1df570dc7e1d1ed6dfffd80e00549f48d857419c3a42d5b128c2b192c33a93c8da110c4af5e125aa35a96656bad1be066556919a4d93508c4e62c0e0d4c203b07c87dab23a143597b2d8c0a2964e1ea1e6b9531f229601ac504d9c37fe264960a2244888a057d46e0313d3ad273be34526fbf0c114c20b12edcdcfc78916efc0fdd8ab7de26fab80bac7965da73b0800fefba73d12a8b3035b3d4d1c35dcf32d41249b417243f24997baf13bb89849ac1fbc14bd3d1f3f5de22b742d21c1db73b126e87f87531414a66d6660bfb6a1d31594db0a12b3041e34a483717a5584837d43893633999d44059787f60764417e73d9b888a7d54f3f0c3030c3a0afaa271ccc990d72e90e9c1c8833b767ef2cd29efa3998bdad0eb4f12a3e1b75d8f477831a9824ade2f3517feaef3a385fd787710657a4ab1a22a72f7f1ea8bc46eebff8997d1cae690f9c91929d959c0fde6456854ea58087a91410f3554fefa4ff0e83e7b4f726fd0f0096406dfefa02320b5d03bae18f7622c6ee71fda517a85713376cadc9da2d79f007b6da6bf36fa2e0f4f086bd77809c9bd77b78da0feae0d5bbcaeee55de1a5c374a9bb20c9df38df0b420142c913f8364aa9ba17a9ff13d17599d48faf5dac9d2ee6ec7c3507de4977713dbd51885af652c2d6001eba9a5a9e2ab26ed3af4772a634f92961be803fd1eb3b2765f7fc9d6631f7789eb2863d5ac09ee298b65e4eae3fed87a8aec17f5ae0efeb76f7b8ee08e75b8b8aa87c5b8d55cf2aed12789e6f4b47f67fdd3e7c3b6ebb161e45e0c4aa6b90cb38488d1bc411e06983010b08321bf0ac07c5ba44a64f59d70fc21d07dc463c80b427231faf478f654857f767963fda2cfc1d3fda04c649ea84bb84a49fd8263ea8431d1aca38cb5c99033a2e71e593a43a6d139658029c05ea41d946fc9c67311d52b188bf44c0ebd43df6084358722f81a52e91a12756866802598c90c94c0de167bd9c6ff8fee825b60352807a63398adbc139ca690444c1f130074405fc6a0c0bb88c12772688d99d194740cc086b5b96d1aa9f84c2d5192d937b012c0a53770ce25ae42cace71f9965c91d13d1ff8a9d37c94cb1df8e96415dac5f4b96392119f51d9b99d1920c4a499b7c005d954f64ad42981ee1704435a3761f607bdaea829f9df0ab4d959de48d70b8d992c1a634315834d07f46bd7927515a4425fd4eb2da58298c52fd4ec06df14471874b31c54e4f9e8eceafda7170ab729992b8e4c45ee06b5003ae81a745efc193134d6246c848fff76a300b2892b4638a20fbed74e8f427808c2090b315a41a9e946d1e484d9dacae1b7c6d47163182f8100a96883c58f292ca9a9a65934d8d62ba0da8962c237c08dd7726b21ef4531ba8a90d04a6a34162c3dd5587cc77cba85f760e8caf192e890e22216b05d026ac5a87851b1cd9b5f0ccb3b587d584f5cbc9ec13e7346629406ff9047f889d98449788271b24ba471f09b6098520d788d9a90d6933bf574e90d3f3e45bd3c53e9045125b491ad0a911e6691ef408720407cd4c7951bcdbb06e3b90152076582d9890f0e55540e6e3c19a9258f40bd857608039147465d6454ee2a7ca0008622d880ea2a29ef8210e0cd9ce707f40a645866611c3cd59ff4d6b8e1fd639c0bfd07bb189ab6b3076b5e98d4ee7e1a68f5596e07bc242372f07f455d62ed249883be3cd260eb99bb2696034c8095fd1b7725d8d4894e916e869a56c0f7f3edeffb8a68c79e153442969379c98a87e453a6ad416e02acbf415af4411ed495b1347dbb7f51f0febfdf0f8b0dd4e7e5d3d02b1d556ede857e5aeadc2d1afdcddb923a9df9f4084e1c7b47ee67776c92ffffcd9e3b9dbeb8c5b9d473c98f37c7ef9a7bd03bfdef5cb8c837ff33a437efb3aabf2d6653e978f5fe559c466c2c77dfdf6b08548f359b98e4ea9d67683538b457f0c71c82fde7d56e1966159e9db876ca2bebb1b35df0eeb2fcc419df2fabf62590d8466c2b43ab3a61cf8aaf52c67b22c627bf1bba14a0062216d4051ddead0b951c1cc0a5e85589ef6d900b7134029a43b5be42b78cf4e3f8f2b6da4c07f83474f9e4ed7bf0e8940ffd296bbdffc9cf021ed2f7012a5db6680457111dc40f118c738ad93fe1dc3fd8fedf74907f84a55e5059efc0db13af0e1fc22637e9ee0c85ebd33b708f10707e674472b351ec1326c9cd44db7484212b560c52ff60d78f49f77c5615c3f6c67b138a627f41bdca6e3896127263d673d0f71585e41da20eda602fd18d5c972528a3edc96f72a0b5f36b08a878f19882ef3418f386fa4d463a254cb1b327bae07fac39b9a0fb7a848b85ea5be5899fdf57eb7eb1c535eaa5a4f492d1a471a4535677a84a3466ef458246a9014a612d5b24b033b1695fbdd4ac099197a54076f0323a77e380c5db8c9d3a800be6f80bde526ce0b351f4237976170a8b91fbb1310f8b7faac24c94814b580766b80218cfb1cc01b0d2b005c0681e42d1ec6b31aaedaaa88ebc64c3220c7505483a5a0d622797b132dfb52ba6588be57d72181b11784ec6a4e97a47f5590d2e651bfa81352f51cf040b64ced54cf91806b523beb8983ad83f505865cdcb3639777bb7132c038082e5ee7eb70622b0d549de7919c0eb9a22534d91c2d47e44061244570c748c992f9aa6107fb4ed60a224232c22532fdab9dd204890ab87df0fc52d60b56df0db358758bae500080b1561ad9588203a770021728588e2bd9df121877e17ed84ae067f2685d2217ab7e4b6efa2dfa15e46504594d83bdeb3b0b0498a4c1f2ad6d7318d5408de2448708466d81f75f1dc963e0b89540c269df470581d108178c7e307cb0d26735c707eac71d91efc93e1b098e83dfa45f151cdf9a6b27df717e050d67dd3b1d83b2ac34aa510dbce4d53b6de41a77f0deb3b6b0353a24d9a9d3e68bd8a2fda7eb584dfaeba5203aa6c85edb8051b755e822a789cd47b7808821012f61a4eb5c433737419fea48451ed1cd3aeb3cf02830853b9353eea67eebdbcd23231c691d4ce8517e6bb239fb6b3233ee7f7ed96d07d25abd141f09cfaa3016a244cda463fe3b4b2bb2898be55a2caaf07355856755857fadaa62a1adc5b8d7f4029f75c233f59064cab87483cfd96ae0c9fb19c1eb4d35fe9d7c35c9c03cf2ab25e0d4df5549d69edde54b2a8dc21a88bf0907fdfeb43970d01301f922918773ff31268fbad445b39d4e012b908ac65fa9a98f26be77f2be4581c1a63ced93b17f9193a3cc0d2a6c50f9a5069d00082fbbefe4b83452f42d55aebfc5d4f1d7b0153b526b54704604d36688fdd33e9e3ae38d26b0f8a65243ea3fc416f2a22b7b617d347599910bd98bbf82fe7fdf1e16cdd2f289e7ddf9be42cbb7cb197e1d1273aa66f87afff38ff1fbcfc7f3ec359445ca18c5a61b87533b4cfcfc6afa9866c49663145b3e451327179e9f7a9af0d773e922993d0f67a83173428dddbd3b4337b2c153edf25ff6e34997dea4e0d8d9ccd1b879e6e9d6d863fe6e9836c7c543de2115a44379aa69bd0b80ce3e83b41e4e48d63415c02223be58a9868581cda610a6ea0953e5b03dacff18c6f5f7afbbed4b93c49b6bfa7dcb49597bd5fd7b2591fbf184f1befe42f2f717f2a3fb2e05f7c14ef8850c785e90e17c3b79fb6cf89e1953f917062f0ef9a39dfa391b772de6f2da2cb9cc98fc7b66d67fe67becc7bf4777a087f53f271029a9135e6802723b79bfb21d5d806bb2834f7bc65dc5ef0607b0a89bd0d319ff97dde0dc80ef0a2649d57f1b6645a35e17b90f22c890b5ee0550c852a97d63da81b55373e9146c11143822b0728b84b9dbf11ba2deb738bd3dc95224ef9271a3f8cd3beeaccfff6fc7edf0f86d3fc5d5490f5ff2087f70071fd50bf0d8aeab1c953c2bc1682b9121b3149512a014a33e42bccae2cffe2c8230cccbdad2314810428afa350565f92b524df602f10a5fbd5669f18044227f1f25d45b526ea9af4a583a526bfe080f372366307bb821ceeae596b4df8b6fb8e331913b820bba207ec78c7328faa59ba9f4bc2228a20f8d738eda870dea41142b42763edc5532b95763c7c14f7fd9818af4ae4e79605607eca4a07c23dc006d0ff058d0d7808c1deb069f30885034f5ef43b9850031727a90c501ce15abe32745afb773cee7ef1181deabbdf0efd0abce6365187bfbf5db2365ba7d022355de79b822fa2323d00f488d449d9ab10e1922aae5e933901c515adb05a9a8c538bd0df12cedcdf0b4775e7c22e09c33ad7990f5fa280979fed895d94edfebfa15e28631428f404e49fa800f5a37484b285e7352e2e9076ee9bfb69b471ac56dacefb36fc36c96a244f3ddf66dd3d9b64c47f072802e32774b587b6dfef7aff70fa70a38352f45f786ca929cbbc86d2ae4aef6d823b49535ed85c52978afebfb48703d12d67a694b5b35a9ed1642a5712d2dea429f8a1f5cafc56f525751d229a1a59b4496d8b42dc651b62b46a9a8a1c717c5d6bf476a393ac9697eeb06212e4725aa805caec47640a69984e16dd7df8a0f9220067810462ecbce611770d305114046f0525fd676adb2b81d1b0ec14cdb90e68dc8ebc6038a796c62f8167c05da1da3ee0067c4e1bd837653179adea708d6a99fd1067ea7f6f85d9316a6b7fab554edd6e942503cb358c308975754b95967228b6bdf67797b7062c04744c510ab9016dd789acff05c7b71be7a308bf191d9d296962671477732b4b7df8fdbddfd8fae9616c4e663935a6f1106ad864f8161ba45e3574e6c06bb6a8ba63ff7b41f32b5bd13f6de4e24ef599f11c4fb4367e8aaddc3f5b7d93461cd69362e8e0868df3a8b67b14f606328f0616c36958c5bd2e29d36e7b63f8bf63fac0fdb07d6355a548936b72b92c350580384131ec8875927e5d6599d462822759d07bd761ef466ecad04671a013e11f60549d1675196a4de569218c72ace778ae3d7d5868ab4bc030ce4698fac286e01c5de52d32e6a47c54e740d5d4a374cbf79dee2033557fe5a5ad78121dc9f4ba7e0cf32764da0edcf877bc2db92d75d527731d7b5117556472460d09d382d1b870f8a6a15e01eaf4bd8376919989f0a501ac9eef500705dfd13d36482ba04c2d0a0b3e3d749b24309ef295aa567bf7e22ab8d0794d900fe135a888dc0b48a15e6d5008129d524248cb5543ff84ef89e18736f6c34cd242f36afaef95fa3d8b839d77ceb709934a1817083fac41b9789a0c24279c02c39b7cea87cf4a79281a42d0264b2ffe02bb8858d94ca4c412e92909c47474f65af4010312ea13b6a2e5d6100c945f5da0bd54a773d158b042df4023a41903b21e40229f40039cba1cb15020d20905c451e297599bfd40359aeeff7439f280766d68057c39b09cd6acccae8261d3b1355c9ab0bd6b9f33514092f00bbdf243bd8cbb39177042c0b29463cf5868a3e4e32ea9b507830c1909192696c47ce3a33b51a1ba06e7af5084a8aed7f531d00e7b64ec184b2fbb7555dea24ebb28f3da199cf153e3037ca2005d05ebde898a4b439dc37d7c21d9e49a2ac92e8994949def4e282c8971554fe9ef45832936a19125736432c3249483b0a003eed0b119df55d5a35f35d7dd60dcd54581a097a0de11cbde5d2853a4dd21db0e7e25c1a8724678900de230afc500b2809dd01c0283f70d97952767a8ee2366d8319e299550cda6b4878e7a13fa1576ab597ba6cff7bb3fbf9753b3cdcfff31f5d35c05ec15d0446277f89e3ad07f01155cb1fcf25dc861792d40bf6eac46b73dbe3d6fa7713df6ec86005344d232999b3e018bc5eebb2e0999c6be6b9a8cec6b5f7bc514ab31fdc5056af2fa23141ccc9ced3eef05c2369fbdf3fd6dfbfcebc3e113a918b41f2f07704c9ddec4400d8ff6e27a2a813e15fcd75bd9f1bfeafe6ba1af7b11ff70fdd7fcacbfd55baccc715de5d74e88978ef973a74ee4e128cbcb73bf3d3deb98508e5d1affc0291ca3376f0f714392ff29efe63fbafed70fffbef67703c4a4576d8394869d7928bd77f332a1530e40d8fbcdc25811c2c9a9c2096ae030f4d729fd75e5aa9863f69b17b69780205fc8650174438d45f48b70932d75ec2068a1e4d5a27162b12b581e2a12b04fe46f002d8c48f16431b2b45a8a1b3788a47baf1141884781254a64b827fe209f525b344570476f35e8b1b9d3ae4bc53c2663631ce558b9ff60072a859c16a7e4c696068f4e1428b4abf05207c9aeda988dff56f014b88de11f81572eb202035fe10d980e152d61942299317ec8105b73a8b684602e59180ae0f6a726b774801ed076c2f6afa9226cd5584410b0dcc80c2044f3fcf0762611c8a43dc04e69825ed03d244582e59020c67407900cb06e88746192921ba03190120977a41dee83de5b3e17d432f753729eac6c1d9a983404ea4a70f4a56d56d9c594008204345217fd07dd45f31fb36923b5f44238408c6f62d4465aad4d3d2f83ed5d4f20c7adf36b561e5c9f3ece8b543100e53aaa651d11d42824d5da43203539e650020d978eefe07584d7ab34f7d19e7a5651c65629d3d5bc484bee5c4a82d21acda341dd20d3d0d18c79d4e158fa820602fcf76acbfd1d120f36e320d4ab8ba1342d8f653100b6d326bbbdf6eb244f53c218fd8617fea5a13273650ab9a4510718ad8ab5d4bc7a940bfd83ac6f07cc69c863ba19ea2aeffd287800ec434a5e1a2714a7b7686b48019ddd1b98e4e2266341079acdfd10da4aa43e3920e55d00d269df6a2f46c2f8201f46c2f02c66bda8b741eaa839e1b72b5ba17d5177b51a4b2f9692f0a5db4efda5ee49e6f494f9fd1f76db34486bae6b84ecb85950bbbfee9db22d514562a47f63c8ba44aebcaaabab8130ba4114f383b4c265871156bbd5ec52e1d9b568d73d4125fbc32e015b5db5badd28a5f3c9092febb98cb49bb2c2342eeb0fbf98c082ba27e15c50e816c9a45fdee8ab8af4b6988923c84f7635e6729565dd962fd695bd59183667badad6faca14a82b86e8a595af3377a41a30e99cea00cd682aabf407bde322226de4d33729a927e2d257afd37778eb4e0379c96d09306d7b4cfc8c60300597b1d36d0e545a7638d19d31372901e13544fcb5ca7e3b24c7334a98b5f4fb334e8c943f6465413b5808c8b8e377cf00095fe5c23a62b24cf4b793661a7193b1f9f916786c3b1f5ca013aefe367ff3c88315badd8cc2b589bb98d9fd90e2d0dba8f4ccf9fbd6ade7e359b575e1dce5ec56cfe7d7d787c2e3de522b385802a46d6d8652f3ecc67f62d4e097fc9cdbbf42944db764332b1cbf7df78c1e61d1d305528fcad073d5253d353b594a37ea27fa0cb911544a6c06c970117bfd082f37517f5940f3885dff9b1653525f4c9335d2872a6335892894bd6f954ca6e1ad534c4be397d925675745f39d5264da982907340c8efb8f0b1b0f4b14b59b75e9617e13cd396e96604e038be5eaa495dfb90e9f7c1fef32c090bc4b1f28eb5877edff61448af18fe682cc55d4d8d6fc8157bc60a6b5e736540488ec4ac8f4342cdc31b79f74d20ada05ac82e9862caab175f373395a8b5a1bd7961141903b919a5796a015c6b383617843b5de0ff9c7cdbedd7e1f0f3cb61f3f0edcb96f32f18bf71ac67f4c8d56005671c5b883d4882bdd0f1e84e4abe49009827d36b2d0399195e8b077cf6a0d37abfccf11e95c45942584b6b93f189783b308e4d27b69aa06781127f02127480bfdaea048677f79a2aa21dbd8c941f79a12758d2f9771158decc29070692170294884f82fdbaf3a8d77ada07294192ee632dc002e37ebd61d5270d8710069efb37e064334dc095a1b3dc7afcf2d20f7d311b13aa3822c6555a1ab2d4a7cfe12aaee32f4e7894ec480389268a19bc8e2083c29d147c0edc330a1bc2a72acde8bf69b3f99bd60c9425d4064bea7465c7887582e39bd910d67a0088aae7694599d2efdf76fb89a7661cd2d1aff2dd3283f145ee367516d7f1b2a8f25526e36772f4676804fd239dffd1df964d5ee5bb34c6637ada47b3909639bb86fe959efdc577f2361fb75d8e9f53791cdc8294e509441ea9ca54dc9d5b065f12ad8a10ea125a15224bb72e2238b0e49e9d2bc9fd83ed1bfedc6e7fccb4417639f8a55ec4339654f873cfa4569c7d436be57dfca4af20e413e2a043182e8bf7ae7de9addaa928bffba5eecc0c461637840ebea75a7a9b74893b9ea8f7e4eedbe10c4cfd62e25e2d17be8c913dedc390ff6fbbd77d3075a9b187f7dd676762fef5cf9ff5f5393d98bfd465fa1fef29e8824059aaaf978f66111c74e912495a9c6997e246ce99252a9a79c1117bd0bfdefc022a7e4a60985f4ba3b8482677ec85bb35742ce6f0d53b36fb67655a0b902c7b5573791973091ee37084a2b9174b25739360c349496a03de05980901a9de2193c8c386a119dbef64bf257fa577c558900d855cf59ff11233bc5b1b61cc906ba84493c435c865150935e92f4ddd5b00d50b93e10510c49a07edb664b238045a5c4e3d0e5423429b2832ad4306da3020e14049ea6270cc36bd47d0486452d233055fb4ef7094c722551d4535df20dce4d5514430578d3cdbfc90a4807ab155fd2297a21490742086941aea4ff58c4925497437417f316a4f05a3ae3863bc208dd32eeadd7618a702898bc57a6d47b880e73ded11907c0bb3f75b01e2b82cf0ba3f7d06d230895f9efe33197647a35e4df57434ebd35e175ee22a5b2a8febefbb5654b17bfdfbe6937b5f8665cdf72b1f7e7e47afb462da374e37f29edb7e57ff9197724955e8da38bf90204d37590de6041107fc520f271ebd3335913369c6e7a8faf792db2d0b435fd99d163501fef1fbeefec78f7f0d5fbf1d26b925064a3b9aec6540dc054a01e655bc7b67a9fde52a08cb455ce4bb4f2b7ff7b228e40cae3a5787647050ba550335c17c33ff1cbe3cacbf6fc6297f902333dd3a1df5b8ab126294daa23eeaa608df4d22d0652d4a459971c6711290e4cdd042035b148abe4b5a4b2b41fff5f89604870ae133571011ec5ac5462083b378092ea316588a4bea18d966a258755653d37f534c38e04ac5ebbfe9b9dcaaf89c01094c411ba26d903e2cfa0630846bff8905e9b60d679c9d98e8cfaf69f49a032e0a1cbab56a29049bf4675a080046f1f07b730a2b69adbd60978de272befc98de6246d036ed82c4883ac3ccfc589aeea3e9bff94e82438c5e0d1b505a55f57d7177590a8af27751acd74fb78df858c4da2ab10571da0d127a7ffb122526a703286587a878141bf3fa65e706076e4ced33fee0f3d821c4a6e7838d2e1ba4dca9a595c0f780f8ac3d9b81dbef0c923484b28b0404fe32fef916243a3ce41ab52d59ffcd17af41724b1be0d12a4ea8c14b6dd497aa4310ebc0118b82a7d2c4e5d85900740a363dcff5aa2d413fb45fb53590aab060a144712468d06678522c788836650f3206d4f6bb08934c071b918280b450c3095df88b4344176748e10a6a2df32dade531490594b7027b8d78100ae841e4cbeb070b17f259bff746d97493887f8d09f9aa68a20173bfc7d0213263abf696f8163fa500c0137ef630e7dcfd4f9f1d4a2ead454429a7320b3f15dd81f53e40bf1b0d7f72eef295b2e99fe8d11094bfebf3979f18c2791c5ba7c2eedbf7edfaa117ff42b7d05abf9256ca8dc4c83f29ab193c34fe5a6304587b14d92b69a5eae3a8f3fa938e3f542ee6649e0e3312b1cf9ef7524343ae278e9e235875bd17300c46a08d5d037c0f4995e096c621601cd89e2a11e9b4aa7b9ce72fbed058f3ae0f853a183abdaa38c0069df71400d0a6a1ab9caebf2c6dd2899956824e1bfd775a0851877687195f39e375b5e81be3695b8cfa469c83a11f9eb1208057c92582c95e74b2a77e3f300a98a36a61d5a442e7f4b25741b8f9f285d3189e86f8617bfcb625de2b892b09b9b788c9c1e910cec6044936b7d1999f4885e4b2d490f022c6cb8d0e4b55072c9f06cc9d0d587a75c0fc8b010bd380e1717d8edfd60340b7a3b8d11e9ac76b1e2e5b395c1fdcb93860611eb0671b91eeeb6a6b5acf9d484dcfac8313a79d6837dd9f6f7e04b4eeb2237543448f59973f5d76338442b9ce74c9f08a700cfdf936ec75aae0b1f8a5766a2b6fd53b323ab13f3dbfddf3a5cadbd039662be758aedc8e6aaa667aec514d09a05b8dcf4622c0c0523b29143239828db8e998018707121e2fc98343c7eb18abf1d4e776f692c03cc3fb0c98412dbd9ca12f0ca3d00019c8d0c6d55d28f4bd880b00808cd6d22a48807c5fe77f5173460f8c52c5d7820951bde44a944a52072c79885773f36a20dbc462cca0122a831430b4b7a8ddebb47babda9929ebbfe7fdabb3cce9bfd36e014babec80fcd149562facb1dc2038a9dd99019d6955624de84d27d6bb1757d5b624bde86d2093786b65f452dafab263a238da330e954f0e716fd61505ecb6e7f980d92ef3d8c54f48ac6e9385522f8d1c90b87723c72125af464e556b6732722a6c9c041b27e854f15937cb76eb74d6982cf6a5890adb501bb368e50042552f3a2527dd61db5d4470550f4193255bbf11ef1a36ae1041d919c07f131a7378096cb355a76a61fa3cdc325d912bec5e2203d6d2aa9e4cb33d1a7ca011fdaca7d04b6223a23ae5b9191d793994c8e8a0d6a0ffceece8e65eda7a456f0b6634c48b2d3e764a729e460c952540b65957e6518b84825d9ad2607d4da36e1c01eaaa2ee94f661276f7ff3cf4087b326a24ebe6358128406186bd0e6cccd1a0e4324949b7557c3275048ef3f4a13e4063401dadf80c310b7e045d31c4d15d7c42bf66e8f9bcfbddd7edc3b0d9dd1f189b1c08f17a87e756a0d8529ef6ba47db1522f98928bf6506e94505bb30bafc0a854e6fdbf77ea03a2b2e27532e0e01bda1ea8bf1e6955706bfd296bed4c25ab973adc2e9cbefca08f4547afa5ca56493577662f93ff341752359d0cdba4d125d316a67a582907a41090b22574d4a4ec63fedb37814fabe2a7735ea7ed9a642c0d3f37a3c82dbb4cdf4f5ad0eeeae4bd9bc1634185fa885e9c5f5e1a55ad8a82f9c77fd0c2482c27a96ac2b4f7d0cc8463614d2e6362e9120ad1074d6d58d1df265ec00c55f0bca9b52e3ceeb8e98c5a551ac0396ee3200175fe45a9b6e7a3bf0dea39c0678fd2c1e3fc3cb4cf7e8dc2ce7c4e235dec9ce0f7943d6ec466c3f39759fcd473015ce52f0d9249ad4b1f4b2eb426d0afed2da3848aa7d61bcc6adfecacad0cbef66a025668dc715dfcd3d185e74936f54c37f8d5b6b22ffb97b990e3abc44a5640e066ab0a76a4535d1a0e6b21ba4499b911a60ac0380d157e02c74bdd476a9ba8b0e2950378b059c8b2bbdc0b474df00578bab9423032d3820aece207950a662715d328829c0ffa997c37a9af22e20a56ec5fbbff176fe4df316f71c24781435a15abdc3a109372aa5d72a523aaedffd1bcb3a9d4d3f306caae74dbaf7a20f7fe3124fcbfaa9bfcca8896cd99b73f8c581f3fbfd6e77ff4f26c0a123e3bc760d50f5bd620d88809956619a129d20de756c9d23e17a284074ab45c17a6706479f61d541b4e742678ac71542235f76eeaa811893802f718ea5bc0d30afd2a93a3ba13e315f19e8d4b2e96407243ccc203c7452e21a740fe47ce004b4c814c245e38f296c6ee945dc14a9508831457498a0278cfac9c80abd8c644e2d680261587acb7ee83a3589370a067c56c7a9f1ca9fa8a73624e3c72f251d89f09cf8bc335a1f51ab6e031637282bb3808cdb834b3235c034415ee12248270baac51b3b9cc591fc79ecd0317ca8502285c733de9b599ae9cf2b34232e093a0d829391a0d419816880134704bf93966ec8c1982461f7c8860fa3f3d2f20138624acd4d1aed1533ca933f1514c6005eb7a41b7e0840d723fa7e35b721ba28566d294d799eb090a456b76f6faca0d753c9afb38b71f17cfbfec7ffae9eff5d3dff17ac9e49b3721c30eb596eb0a44a430e7fa4b8cc04b6ab141b99746ecd2583e192f0ed3983a1039c027ec035de7dae9cae461fa405085f95db0ac3a08cfde82d3aab4d05936d2f682b9ce82d4c6fdb0dc9b838d240d1a1e48ce1437889d933bc16c4647d655975d10fab07d38c73a30ec1ce69d3a3045e1770e52a4972c617e71737863200df55ae4397ca084f9fb378c352c9069202d3565988b2b87ff873a28535cbdbd2f92e879d6be59c6e896948631657feda8676b8648f7c73af652bdede6bdb2eebe4c9cb34a8dda2f9bb1b0f51b7deb57bd2db3970061d07bf8210671b2f85a2e3a56f7ce14f1e87f8c20d7edab7219f00508b8e6cba26dcfc399b25329219103404136f8224dd372b0a6cab292674f2c70bba9345b292694506032965df8b616f52571c0019a137ce64032a3567ffca1dc1a1f8b9db0d9b6f0f9b1d432ad5d87505f9490fd7e44fa73f2bd126fcd0e171bdf973fbf59c5b3218e7c70b3e90bb3a0ee1a2e6f4e9b3b30bc8b205d99e30863b0facc1aae08ffcb44fc385557c1e563823a3ea9f0dda06fd2b3d7d4e10150ff8633f785316dadc56fe12d8b2d743e13ad5850b57811669e19697e0106c76d001be681ba58b5ee2b9b08c7eee7687cdc376fb9d5c57d119bfba86f95b0042bc8ca6bd2876be4dcf2a1bdf095663539e3a03e20204b62360ef2e9168e775cb1791beab55fb73b1fbab14c12fab6b9ff6cd2c01a5a151615f030adaeb40c1c90d5cb9ab40ac8520c1a5e3b7b783b3fff3720ebffffc0e69168695c8eea71e76ab1bb80138371290f506dced5e2ac96342910cb179f09aa559590a561bf479612a5318ae81828eba718976026d68df092e22ffaae4d9c2852a2d08f11233f89868493664dddb8b4ae1cca2b3445610360fc17c4443fa9ead371fe22025de380b6e7cdb4c83a2bc5a011133a6541ebbfa0de03604034d8e8c3bb11ba03b653cab0748e553694a837bae8bb9452a70d52440dbf82c7afada0ab897ae3cf0267a06f829fa890455028811f63f9a1ba846903d6a081c98f63d7b30823dc425f6ed5cfe6c9196007bd8c6ce3438b6126491a929c7bf08bc20b2c2d53331af7626e6e5d985b54b6ad479e1b3761d8586b8b0eb12681e0f1485f35e80fd0970023c54d412f205ad206b80898c2a3294371606bae04721593610754aad0096a897d44b49322b6b83e4b093a6367d8aa31347cbbbb6a77da23442f224da4c54a59b4bdc2d29138376524c62db0115f9ea6740afdfe31ea23f15a4078a9965b2fff021d345cd5d7fa4cb8a644f8a16d0b44ccfe55e7492480ea3fd5d3cfb3450b5c4d1c1c8d42bc9e02e8ae46c437615f0304abf211c48188c2ed20453ac80d4109e56c34ddb48d5894cbf2e530117aa63e8d100913b702d811a8c55cf81d4960d3e69ceeaf148d7b39b844e6244cfa85786ecb0a53c1cdcd3ced1e3fafad3977495d2a0643f853ebf2001033916d449564eaa4c160516216937b03758b9addf5221e5110512762e4d258d11cc05b9530dd944fd18ee0a9d9f3944acaf0c7e2dd0f7a096cba9ef851ef1a88a8aa49dd2d17592ea01b5e7ea33c3b406210f15fe6bd09f80cfa09ade31d61922c301c844b2a21cfe79d84df43d0c1c478aab14b4a882dea89084827293da7c33555ab2bb4257bc89132f55a10e8e972a0402b2123a20bf1a4822fec7fafbe33306713df23e72102f9d576a0a5c04caaf9ee69762c47a5aa795ff7b65ad3f4793c66b36dc55dd3aedb03fb6f7bbfbcd7a3a1f11e3ce92f34e970c4a00e1e2ea5383cbfd1387edfa6133f23cad3086e228394f3b0918a40a1ee211eab9bb6ecee02c20f117b785ca0052df6a331d5ce8c940bd118128ca878a0bbda21587a0404435aa071c8d1e0e9f9224e8999f64df4d1394cd44669c5aa70c899d4983c734b777eb46b1f5289142a00ded8fba5f80a80cef2e8cbd202280acce06ad2c8c0961391ea8734a91c4bc23a3973fd733a5e8904d47c8645aecd616b5e638d1c328d16ffa8eedd83e68bfc651acbee04f97f23cf1e2337a04d7ebd077fd11225e1b6a4441e9350e7d7b18a48e83684362af56475fa77e8e8e1210ee085d62359ff6fe80cc9bdad4195ba25e0bc4b15dfad19f294476d5abc2000637d6d019e03e651440f0a79de184f9c61a28931a0f65cc0c2e0d973701b452498d15afb6116270ddf2d07304c4c91e08309c14d5a04c3649e46fc8a315889d1f75ce8d6a9d4c73b651fd0a853b47ddab0ebd43118c54a7a014d324a651b723e847754559843eab7ecc499e26688439a0cf8ee2b3bee2fa4bc047431e88de2d8217ba1fb8e320adaca284cd54a84d5351bbf569ef1c6b5402686750894254192b8e40e20cd9d913694f17d0ed49578639a0b64461af943a23a6a5bc97e3ede80ca9e7292efd3015a3107ea2a45917325a4789d0e2a61f41a6eb7893498818719ab6825fa2c443ff234eff3610e6ed36aea7ea92ce402cb8c60517f192679c9532b410649a2267ccebe9e9ef280eeafb02e9a2c18c62ab3d5e712f7a1e3a1ef961e7c18c2a2daea54e3c43064c4561ce07a2c3747eada5b6a4ffe6a4aff65579fadc1086ce37450db122d9e89c75c564dc232ab90a8fde201e553641fc417f770c72e349940f21b7cde7a6373fed9d1acc6a8fe8cce47e42bd3330f1e8afe530c7a6b17b1df13e03c70306863e79606795fe111e98df1e9f41d6bc7a0853be95c779d7a182219b8d67b939e8624af9e4c5828a7042e9345371fa95401f435d09af67da9d9a203780bc258946a74130c504744fce67951abfd18c304e5f34e0e60111b51e4752fd9102d40eeab0a00c4d6ec04b64d7047bd3540b7238d5826c7af680299396488209994c98480e995fc0b2036cd4d16f9cdae5d00341643c99400bdca54f24d4e0cfeeaa7a8323d95f09729d425be62cd8675184ffc1d2943ab48f7e661af0cdfd7effed71aaf42da3de11b8c0c96f3678c0b56b1ec26f51fdb8a4277414174db95ea085ebd0bc866692cee39a7518baa67135bcee8214ee7392419d19132d41671f38909d40ff193214747602e3e73bdb6f1ffe984b41cf654cd5aad0d9633cb90bb307a0405a8667858df5260baad65cc6f4c4c387e7a7c3fcbc71faa4b3928da3b6be2383c01bf393e68fd7898de6de5589e1936e3a269d78ac9b7176145797266132edb2c94ffba19e5111bc73ba7c8ebf50315501b8f8a569f9fd057c3602b1f7869ae35224f53cc074117b3c072b5cc62b9fcfc2a00e7b947ae3acee0c20f36d3a8beaff7b1b1df6b9882a5f2cdb3630e639298556d2ce353c44d84574721d5dfbffdcd637cd971f3f3b896830eea6f7a4d5034acfedb8d8a541d7e6bc342d97a6fdb5a599759cb15ba881aaa31d503ab3b0faecb9c8cdbb6b0f3fbec18364535cbdcb97ad58cd34b8af16a12f8946328d4649c72ca8d6886ad904dde171bb4b928e6f8bd0a5957397d9b25736b5a0f6ffc496320f8b591a1656217d78df3acda9c3d88969f3e8eed22a1ee1bbbf524d4949c92609e70662acd524d34c5a92947c4345ad8289e04a7cbb5e27327e591cfd3999a0ed1fdd5d78da3babc7ee652de905bf6a4242f338b851ddf755b8f3a373c7360efee846fd37f8a3bf0c3b2c47dfd1a90fdb1ff75da1b3f5063534a8bdab41e1e8767e70c61b68d894777cf3ccf78216eb7719bbaafa673e6269f9f9be5e749335b1ff51f83efe018cf91fbbf5e1c0d4af457e07c2babe6ff5c12493a4b93b1717a466cecea46b2259ab76d7a4b98d4718443d57387a260db8b45d7936e4fecbb66b5d2653c8bbef73275bf58e7a08ea77164c278f0062cc7c7a14dff425c4b47c52e75dfd51f56e0f00bf74d9f774e79cf8b17382e5893bcc31e6178f838411065f7f0dde210961d55169cf5de81d459e9d6475a1dbd3e7aa675090368af79b29b7e24f40973269032150533a02a28c0335c43b49a7ef182704631c1cde0c1f479f818e03f8e7d386119cf232449306496b543db889838d5db999df0d8f0921d9bc9324e932f0f3b4072f576d1b34dbd06b65b200c21301539417eb1907bc74a05fcd4c88f347bcd14cd7f77cf6e97335ef56277c262561b113061211e701b20079c84c258aa3109547bd5b19c5b9a3444e8a2e14119afeec01b0caa181abbe93527502213857c5773deae96d8c6f7b82da765d1cbd4e81b01eb642171db5171008cb449b419948421e25e68dd846f50646c290ee398b84b93912964ee0b5e54818cca7862938433ec0d48bcec850722fcc63e42436505f2c22d275d485f83c4606ddf65172dc88f34c01514cdb0fe2011f1928ac8dbf5751267298c47c1739b062dc9d38f71c5756427e2157e4f71002249f8c4b5875bec3bf0ae3186476eec82a9bf824e9a15d5e67b109854a73095cd4cf6d700b5e7037c89581b7d841403ce228697826c366c43329add4643ad8a107573acb988d44eb612d06765c524b75cdbcc61cd8434485abd31123178cdd21b9127b0cd38fe2b15db91e01eed10a7f0474909d8c2c08423241b7825037d3720e9d0fb74a3c8ad31721e9c359d88b0e5c3d8a4fba8580220d5b0c4fe9d0e7af0344cf67c18f6935ebec82bda4f3499bdb0531467165c765b261cc0d93df4f1bd959d0970d41b412025a6924fd624318b2a398aa7e7fce7de2ea178e12370cafe0ca0c87a72345e318c21e3b3f2c33519ed953d7436bce51e49dff8f12dd9159191727e9778c4192a85b7d8b9db8937b7c5ceb9489f3c6a816d80ea5f0311cc5ba55957c3a7a2826af07493e4af3fde4f1613e5e46699b2e2e95a07a5f744b3a3ac9753aa60a536e12e328c5cf670be3a4daa2bbb6030971cdf3eaf73d821ffa26df55ada82a11105865b0bd76b9794f01ae98578e32f35ee70ebe362366cb287cd7ca29b997ec26169782bcbc19dd48f3d31e89dc281e8a297d00b0fb39ccb684990b5d78f0e362a467317e4e59578f88a85b06f55c4f40e351cfc900063ef075786646316479e09825c8b023db1a9967c5f860ca04e4da7a1e65dade5d628a1473a21cf84d94a3f1badbb9384a9aa3d0441c2046dd032d6a7d0cdfb78fffbc7ff8730262fdd2f9842ae234429e0ec1fb81078c3aba687beb7ded48a96e3c33950890a23a590d096749b25670d01baa88396ffc4a07ee061b6093d04c3655fdf56ceaa1d786eae21bfc18a4649cea79a6c9c605f4e4f51bc93d810f5e78f267879576e00d92b5411cd364d061469aa17ae64f2216736176556f074d5e79a94177678fedd99ff6e79006de93676956a1484fc076ef474f864f1b4d96ec8d9a7ef037f47ec0b3a28e98f12b2f21dd7871c10030eef5bef5e7d35e6a3061447f931b5e8f106d950d53eb3e5d360c75f30edc3b70ad72e9206b1d2f149a0e610ca43b073f7443ae16be9a76d6d3de21011ddc06b9db4c79cf3a8d2f1a74d921c3f92007c9c9383b8208930b3d7b124bc2ff84d208d0e1816e1abb0b59ec8c0ba98ba4d73b100ccd7324317af8c7c3fac778a24126ebea0045808a308acec10a604b0bd28a7aa9dab42919602ad52df82970b50e60228de116e85cb5266e8234509b42ce1258a41e177233c3ea61a66135130debbc120bcef80c08d1cef7716b3a21501dd63021b2fa21580f4d4dfe89e91d8215414f9f9441e0bdd1e9487c77a678823e0f9f1be8737ef7610ab2c2c57284659481aa8fc1ef04cc09b97d7aae46004a3acc60d7b9b161bc2197b573a8836a6503f139d0009087be3fbc2e1e83517a4ef847b9780716549a7e3afcfc878799ec75ae2d2b82d23279a5b0ac066a92a5ccf7eda66b9c5d1957ef055c859334155320bca60f608d8e9ca409165bcb9f2aeaa8ebcc648269b3b1062271679b2522edd6143d5802a2eed2f2d0a96a3157b2efd7a45006232109d379f03d4ea76bcefa214a763bc89c3b28547d887a7047dd74279590c24540e182f8d239f3203edfbf1ebfbd417b76fed66bef9f79c5c073d4b888bf75894e734da46c7c33f4fb76d879d5aed2ccb9555c78dde3758fd7df885a87bffc86ab1c8a63f88bafbfd57b6d74483a8455bc6b633886a7bd1dd22ade45fe914c5ab5f3575a7f85cbfcdbd761e67bb1c61df3589698d0ba87fb225e94efdaca82ba2c19bb6ac73296a51051332e5fc662ee9a7ea237e3fee78fe1fecb7f6d378f871ebf7a97ceda4c969d87b0d283d847e4501337f27ac03349ff1bf3464f297d9110d434a4c3735e73d35669a34fe9d7a25eaa0d718807fe62e210711198fb91cb269a78e02a8afa0eede10f357cbefbedd7e1cbfae105a0ea5225f92aaae965b5e8d33e984b61e40b86dbf34bbc8c893eedbd796b09bda162d68605ecff4774a89ef6c3d27d5cd5b26a0b38f871fd7ddab42e6afda7444b2106b339494dddaec354b007c27f35e18aa970037752ea10a5c61be7a9a08c47358bbd9944752901094a947c84b083b86aea1b7b1aaaa11a58d48724ae7e3a49f4247359674088d5e482aa01729ba077aefeaa8db7b029d5dbbbf16ad9156d825a28462dd54b00dda4e21925a8e524b1ec82496a3b8a75105200d39d49338f0cf3060ea148b539b4d58803327062897465391f66bc8ec4f0f5fe9fbd4c3d4af1a648450e0e1220000fa94d001d9e32046909386b87223bd3a0866e32cfef289d7daa387a2de0979b547802dc09108f1a8710ee51cf67c02b6189012a0cab15748a005e46b4bcb28a4e5de52ab9229da54f54b0ecaa23043fd730fc10bdde662892611b025f9e8324fa34161ef224de837894e4708cc0551bb585f2acd2afff0e10e7e773da2d77455dfa5429bd9b4001e526c570242a52610d25d0ccb64c5a9dc19ffa7cb7fdfd7132e7acda3f0d7deee13a0d413cc87913fa5b3bfea648ad9064cc6a1a994cac7a829ca4dae7e0206a905bf612ebca49bad146a70e20c320a5dff4b78a3baba3def10e15adf0dba21aba2501eb5e12a5c04887e7b3da5dbd2781d7f5708d815e8219c378699e46cf4f03c43a33aab5263e54c49c4a22229eef47bbd3a8b3c153c92b126f0d1d4ad7b1e2505f6f9850da3991bf454aae055a51e8ad8679aa2fd576eaf2876f7f8c8fd33cd7c3b8207a0d2529e8ca91c25f9ba2de79b94120b015b5b575466361a05e62334d8788854119321d29a3238575d1a10b3d9cd6a492edd8365d1741bd79cfc20c10d9f9286003d5a1f4b865691edd2199d2ceae0e7d891095633bd05a2de3c8d45cadc45c17e451b048487e6da9258d4ae5daf5086ce8e075562114cafe31aa08ab9aaad40315ed3de609424e5826b0bfcd8b75f19b4b00931876efa9e37ffe984830c0f4e4a013181984a6e5ce5a4435ec63a5967c6f3ba1b1fd44e81ea60d8805b11e646021071b4f2ab0444fdd26de844f52e2ad4ea494ee745554a38dee75ac5992b1bf25c3a5e2241db3649cb2752080870e943aed20690a375c7eb9885e045c9aa8a77561a333422fd41dc3ac8eaf6e7b2ddd603eb8d8a3d3c078eaa4304eed18db9108013507f154a3824e883a95fbdc18746e1c076c9bd478cb43f768e1c039ccf771bbfe3a692f2c154ca9517af5d0be10d239cbc8b6b15e1827876b4214980768d170ff7d3b2d409b81ceb191107e8a1c03968fa83aca03a0f01c2b672fc118810ceeb997e9848eb9c5995674b33dea04199d9478e7f2caa5bb8a10efd3e7425998fcac27e2ca5f1a0017efba00a91bbce3197f55bca87ebb7813bf282e77cde33fefa755e20ab4e2432f20d7e38a3555914c048ec52a284e00bc3cb631607667200c6ca7ac81921e3a56fdd203564a436004b44265c36aff8ac07ec84859a538cb5cf6271d652c1d8aa2c8f20f69cdc4ba2086d41341db9501ffd8e31f8de1fa983aaa3a13c5197ab437a6358b19f44777a219a0da9cbdb9f08220f98bb3ec56c095539baac388da41f14ec5f6c0a4912bac307128dbb1893199821a922aa58c58339bd3156be8fd76402946263542cbcc56f9840d2a66d4ba67cf5b49943387bfce3d15ae9a541ced8837aa3902ddaf843e0d9251ed162578493aa94b633e11a9ac88030779c040ce868c51af14d7e6d014a839bac40c90e739e6253535fa9115cb0eb5437ac2c7b461783eceb416a948f44fea6a4e95d8b183454e10956ccea73fabd93a77d8843481c4e49d7bda6763ff960b7df6268df1e8579e08045d1f87ed63df36889e8f372ed2782ede3827a0b7acc6fee6807794d27317782bc03b007b310dd1c85d87f87a5383d94f60a8390438bedcff2ef9d98fc3c5beb15003b3ba44e5980bee3b4c3fb02901a6067b0781d382f323c1d433d5f84324c962315d2b07041dd14dd25811001d69f162831edd2c510dcf490f144a234464813dcf910499dfdeeb545f06d0c3b60439268fc3b0aabb656b50d3abffe624575a61ba73e53804a16be3d751bccd863fb9c883547018fa1bc7f3d322a10ca3d14edf66c4e62c166530f0a55a5c89b57123565dc048e843cb62752a44a8ba0571c86215a912ba0c6c900a99c454c28d175b202c12082e0fa8e4b1ea081a9736410afd9dea218a91872839ea29ef621cb2d41425e9e6da6ceabcd32567a9149acc5e5bab9b4cd21ba2c3c5a2c22816793bdd63101cae555bab6b5a1d439b37fd0d7ac73cffc85e93a613e2e171f8f270ff67a7132b3afa556ab925e65e529aaa5f3e49b359fff534463699308c5ed782f3d2b5714234c050bec914f50d94ea001da907e1810e0f8726f4a199b01a6e1e971556352a27846e2f8b19ce9f98c684cabc58a3a07c8173847a04484446cc769d7135ee60087a292804d226826adb659341b95df1488c5a87a84d08b53956fa344ddf1be4022a28519c2740b912f7ef8196f67a2604a69488df308180d1a2f61cf3d3acbe40656e854f5ed589011a700626100fd8530b7aa682ed7813a4cf1280ad87c8ddc94360a4ea71d47ac96729ea367ad45e9f0a521cb11dac189c0aa05a9f2c1dae645d2f2223c0460fe069fa3c0e7f3c7cfb3a8516ed98eecaca1ec3d3de0d7e0c47b77277f569efe290c6211ec3981648cdf6d6f8710888593a3d37204476b714944504efa27af038849585c4d850c67817561981507544f5a53cb5c71fddaa1ca17462fc52ddbd1f87c4186ad43be97f0dc9d831de155c883bd8e37efd63a22df95010d3b9a1bcaae97f99ad7ada8310e4d33302564356d60d54cb2d13a409755ca1e76be98fb99e58c29893c609c651c36c6e8de8d5146e40bb4e0e7138c8eab8583ec73ff16bc3afc87ac07e284063a4aec8de311dbd7ac86649f926f12cd46d440d4f53251938333960e937e09d91aac541a1162548968c40ee2707c9fee5bd67bdcc133d6d0081a78c8dda4a5360e545a0e5a54339f4f7ce422a18d5dd8fbf927e77c6059d5d5dd10e31b22cc9131d42940a3ceaeca595db06a65c820d9da7747324ff13cdcc894f0bae8a6d92fc1df86b9dbfab52997487754c5dab2ad1a8fd47c1519f61a7c506b33e57c25f1a4bf359c99fea4475c0e5e8ebd0b5dd4fd5fcbeb352ea63403e2fa1b4ad74b7bab160af0bb4c3c6b0440075316a7191d48be2617a4fec69bdfa11b83db6aaa20add31d66591258e8817c4dab1f520354364cd134423ad87c09a787fd0a7815a97d436c0a0002793923a14b501eb84eaebe2191a0160d092c00d477a5741d089b07d18f6ebefeb3fb6fbedf799e22611acabd6e3de9adcff3a0eb346215eac4f7b3f54a4577a76c59c6466507d3987d42727eee4c36937ce5175675c847ca2f34707bde321acd2fc9d0128dcfe974ee06f7f8cbb6f7f8c8fe4b673b05f6dd979d02d913bd5441049df3a0bbcd66e001575e48b432f3e8bea0a45091434955674abbc50460a3b32aa0e81946631514b226c663ca0e7f4d383cb9f317b9d6981efe1a4d9a5f48358f71bde0e0b3f2fe420c44e6988337e5774c4e1f1fee15f5ccc0b1c3b4b30fbb798d29a2992dae2e135847591964c99f10b839a04652969f93adbce5b8c3629de4093df4ba906803f18ee1be2510dd03c4d8d32ecac100dcda8157583da5e991ad21bf86cbe33b584aa270ee4931741ad8b219c851cfb1451c78960266301a65a3cd58eba1b9d4c6a0fa304190672369d37397212cddba90ee33d05e1bc71f6d2ed08c70152a297d8f9e3906eab893b22ca1c14053d85f34cd241bc1ea092d46e2beb0c6e2acb0e4cc7e392d3ee792542310b82a0cf2a11d481de6592277d4cea8fdbd1fdc3b7a7fbef8febdd8bec61346901be7f913d5ca02db8a490faec16e98f5e97e95d88c6ed5d34f93ddf36ba77640b9ff64336e95d97bba87e5cf0a05fedca617dd8708337e1aa4ae6d50c294a1d2e47e3fd1f47dffd851cac0ee0b9e8d8875bf06aff7cdd4e1d94fe5a9af87335edfae7aff51ff8dae2f5cf5f2f834d7a2a5f6dfeb5de7bd9415fbf1d1e1fbe7df9f9f8edbe93cf2f88835f8acb5d25d8d2d3f0af5f6448c62f048c2ef2e50b5547179b07eefadbd7e1fbcffd97ed43bfcf742ca3f3776905c347cd93c9a3e97e0b98d089c36349f1cabfac3f06153fe2622c437efac7fff9c7e722cd382b1130f44862a91a3b6d51a079aa96a607236ea002366837ecc4a041133a300795f2cc80db0b193abe394d585eb02d9187849fa717e33be10341678efc2aa0b5f527e315216e48ef1d81dfb76898ed0445964e4677b5fb27cfa2d59ddf09186f32fca63a4867808a95af16642278e6e857aae91abada6ce46d823f22d5f3ca8d6e85a3d8a7937411ee982597632f35e8611b30b0ba443e12a4862c68350869665d43432189ba27bd6623f46a8744a25d5b272e0ed074a48c12035eafe07aa403c5e8810dcd651a56414a3a74efa63f8007d2ba8953c6919b21792093f378ad28f65c08f3b2521117687fe502580bfbf51fdbe1e1fe71fdb83d4bb507eaa1a43651f87e181be88dbf21e0589d9b1e80ae2866fea0adba23dd535bb90bf18e0bdccdd94e92162bdd135dfe6efd2347a06ee781d53869fe9f7f92de4a1f12ba7b89e1e05226e1025eb8680d38932584db629cdf6140fc10e0b1e472d7c6728c12c2e5109d52f389f2ab94a0be29646a4dc15412b6d6d7ab52df476b1e58354d8a0b18c4e9adee7e21d602a2ddb7a81b9f3e3b2fc9a809f54b83924c59e5bf7b50a0637f7554beed7fdc33ec0f6c357cc877c8d6c76141b07f3877cb2ac843af21add0af20d4f54bd6f6d9404613d1430b7c9d4754f15ef51c2e4a6d17e53f964ed86fdfbfdcfff744ae8dba819ea68436991b90ba6e5e1fc7c1d9cd8c5b28888734f5f76eb16b1689e99824bd4b194962ba9dbf91c228de24094b22e2e39097f2524e5adc61b4e25825d71d830ce3a0871157a3dedb4075f9ae4793250620f16d43f592b794050b3e4a68f1b6ea80c455909c6f0179a9ab4b2e68376649a96c24b7d00b4a40cb053e1d3dfc4bc83b7138e4ac27a3bf8b6b2f094e74ca136c5cb2ef59a6bb2436d55b97b51bf3dde4fd9cce8705ba69edc5bcf37a3a47a980a70684a9f43b1a585bfc18f4869ff60d6a5c7e3329a600fe943cd1633cafc1dee80a144bbc54c411c2d14b465b2ede02c63856e60993c840bab88e6e9f20377ab8eb632a7781b14257a4d54f9272d67f3da3534daf9b0aae7fa47f6accd2dcd968feb1bdef0319a233fe1334dcd2a95c21bf63f4ca3a41332dcdca69d680edd0d7bfb5e743744ffb0021392f2e26965124b108fb05f1161b681a25c4b493d2a46ec4f62acffe8b3e1cc5337988a06c4ddd7ad3c751cd2914024e2f37f1fdc5a3a4c0e73dab493d8acea2eec9d8b05111d61fbd4f778925952e325e4a4d50dbdf84b686e320b5a4a7bdde31650512d8e560e86aaf59188208caa7496507b593697a7614c03902ef2eeb27f0d09f980a2dd3d09fd516513bc96518b3698dd56bdbac6caabecbaed7d4bd7c752a687df61c3f819af9cbf71b70ccc1e88991b7c75b8111de6bd859f19c66d2daa9bd78e9c02854c2433ef27de67947e82b7aa01a7b1df37d86143727a4b83afd94da4d339546ea5c1a3a2834fa41b386d58452597736acd37d702ae155d4c3a3cd2e2598e749a7d85d10e647331303ac6556133c2147977ac50e6b585327084e282cad6713b3303b20decf75aebd2d8ea018d659eb0c8b6bc9bee8bf1941a3271248fb38390369db50be9d4e53f8a866feb4ccd0525d667831ecd80c4b6c096f9794ce9ecc7a8173c273494675eb3aee5927b6b3a92f2007a70f3d6ad35a9ccdfa6f9e8bb6bfd921bf34cdb7feec28aeeeba1e37c823910808d3c402c60857062b728236a50f3a0c336b7208fa59beaec38bf59176c00b15bd298c41ff47d59192e8a361e8f4aa54cfe265305b5cc56056b03f47ee307897c502c054e66712fbbcff42e1e07edd4e211c0e62412ddba9b3a3ae78de2c97cbcc65e8587d6fd39dd71961fb951bd3373a254671ed340eb5cf3c94fda73bb50058ce9fb8aedcb40e477cd98ec36d7b19b55f63f3b4f58c809a7bcef9b3b81fed4f8fcc544a134741ea1d8e6e9d7e99f7e8e94f7d1c25eb691f3ca41ecf2631ae5812e4257dff79fedab49b0e7da852c798818b0122c91e99779f4e3e1c98020a3ed7f91d4b1f1c9fc949aacf83131b5e2d9fed6b987e789a497c09a9ef3187d0975088dadb53676242b83ec2553f0db49ef7a34474d6ccad1eb9062cdcec345d1cab6090405ac3d227579c1e51113f8aaf3aa3716ba7651afaca0a7eeafed6ffefe49fba6a4a4bc0b1d9ae5d89213a3db869f1780e953e75b1c49c9f9621e215b5937d90df581f2a6484a6e20d7fe273dd492830632746f9c8227177e2ca20a7978b38b20248477591bba0ffa616106fb31938f5a72dbda6d3723d628446bcf553106748ab4a5a39926665e2bef5603028def51d814fea08b48bdcf7786847edf6cdc4a89bc88ecd9750906dfbee86f6933a0304ac5cd5d396d0a6d740daa26d0ee2cb740cb869ffd5b317e74e9a5821b84d056d5edf41834e1d3759149c4041d77d8e8823a5a9a2333dfb11cd6468d5d46d21eef823f0a12e4c3cea30a5c49fdb97e444ee5e7b0ecdf8b58ea733fcd957ab8bd1f8b7bd843b8030098cc2ca8c620318d513f3d1606d011f0b396b6da8e292ce157079902c3522255fd46a059629cceec34ca4a28b85fcc2901006d5bc3ab9d1cf222e590aeaef6b2cfadb4cd8da571e285b8bfb1bed5ff51c9afab4ea291449012823c4e57c81ef8dcc1d58870bbe3f3bc96e4ddb7f5a08113bd78e9574bea7f219910419d220b11f5633b2c89f8718193d2577bb279b08d715996f3d097563ec6204bc48e546dae149bce40994ad0619cebda9be98f5edfaa3fc5605e83de32ce8fd367cabe975eb89dc00409dcc8e979ff0b091f43853e2b2308cc91d86e701a10f12e3b16f6e899ba463f0a810bde1e6fda8d3e974ee23723ef98ee6ddf501f311b136a87fb6b87194ab208b0410ff281340398a4357a3720a68fefeca6f55323c1ca3bfe8bd61fbf1bd62c0033c01110a7fb6d27efef8ba7eecfa3fe2b0ceac0f863fa7b2ea772fb2f3709647354701fbb6939050b58ec22d44c663fa37f8d9491c18ebf2bad3ecc292c8867fd1afc8fdee7fbf1f0edffef8fe5718373e1713467ff4ab721728d9b3ca28e7bd2bab7c97c770cca33bf608cfb87df8f6b8febed9b2f4b55e72248e116a334e8269142a3d2b0e77c6b905b51916860f9d28700aa84115ee5c14ee258670893ecf9dc26a3b274408acea666045ed90e63ada955b4fc58a8ec8ead3df18fa7cfeb771c77cfe7ee356e9e9b337fe18c778e757d36cfcbe7d18feebfedbf71e58c014be49123abb35ca7bf0580f524de064371150f5247e70066dce80bbd5a9c1dade031e4d1a5247dc088947b290c5bc6508fadf04d48259907a48324d62c62ff5a0fd428ca7aedf20adde78c91dca9a50f960eac1a1d1685b34faa6a7cfd544004199e502f16864f39df106ebbce7c824183fc4c3203ac3dce0d5bb0c03a8eb58122ade24c36a66bd151064901f43ed21bdf34100ff43a2cdeb3504218f214ae9d745b040ffde206a0c47c6f0934f7b6e8ed66fa404d3a5435009973c7fd35b3aa02aafd378f4e736642173bc73ed50fec2f7ebe503bebd3fc5e570d8321a9c4c1bbbded68c8d3acc9828a46bce515287191fb56a0ca19f10538cc5f660eddc3dfda9c374f133aac4bf179e85db7adc3e1cb6b34292b3801f356edb051cfb5e92e476a396002453800737c1a87d78adb67d43f66c473c9ece7eaa2097d8056baa641defc487ab55f04304c94e45e9468365d9eb5df0f382c8e33051970f610a5e66b003eadb6f589ba7cb4817698ba4d0097a3b36620e566683105667543277495572b1a5324825854869e009413d4ad0a5ac538bcf6c26f5a7c44fe1a799884ce78df470a234edf9a01fc3faebd787ed61a21df092f34d223348dfdf0fe4e8366148a801b1e4a8f1a6f1f215a57c0e8b503f8ebdffc5917758a0423d1d60da0392f48ca8c734bae31047305f80067408e320d816dbe82e329413f8e9ec80bccc531e87971925c804f2bbd20ac7deb7c3e1e79607de99ba9f3327e93f9e912e23b1ff896832eafff935ff9ae8d981a83ec3bbda21acca5d1cfdb1c7fdf5bb86cdeefed0a3fe4d7ccbe2ac7ae5cfd86d069c419211976fb5f49f13f749af173eb52593403da91b6123c2796df2a69b380f3771e72402f41cd3f99d4e8d40f43405af2b6dfd4c115c0f5378e22dde36fd55cf80f6ec4883c18e9f3b7d03dea4eb12dc29b9cebc00fdadf8996ec124889a01b7f08d7a6807d068bcdda9df3b97874ea85c2522a638dbaca48bb4501a768354301f823f2950e4a76a8fc656d6a72e4de20b7ee8a205135272a7c463cbf854dcf01b404809c844ff0aebcfbbf8d4aaabb7b37743be4881deb957d7d4f18c26653175ef8e082bbc5c2a87331b329ef39bcf0b5317c6e37af76dc3595a4d249bf2f2b1037b63e96019a5b238a392b076f13df1b5eb8e83d49d9e95c420ab25343caebf746d4e974c1a877009ba5bcaafbfa408192f253817a04e979c21ea910c7a96e6bb3822d89d5719f5a84006c731a0940eafa4bbc23f75d3893ae0513ff8b4afc68e4338a21864c24987bb8abffef1fffd9f3fb780e93a67ec4de5a197790c66936022c3330397961a605e4aba450239be2571888a9cab14cf2f93cd1fd413bfcde069d06f803954c3462aada5127b63a7465fe7a4a9b304ce54d09a3bc6a8f3fdfa892474e881d45efeda05c9d52270eb20161699757136e873271b23bfc9f9956eaa583db6633255977e00e91a2120e674de1f4e07ebcb73f5cfedbf862febcd9f871febcd3c4d3dc005973a9f3b35596fc421455d40c8054c785dc0b7c0dab95422be44245c26d3f748f483bfed1507a7eb5f5a03e2f40a6e2dcb8257ca0f4d689d05ac004b281d53a8a9192c787a4a57457d1dd800da33bef84a0df93060320e4bdf362b0cab53a88d55bf0c5379eeffcdfd7ebffefe7512e968232ac6dd25bdfbe10cd673a6457374ba212faa29f46a8a7838f3507537880b923667ef39fbce4e187e550de039b3ff903faa79006ef25f5003f8b07ec73e99b82a77852759f8b898c769c8be3f3edcef268a168092747dc421026f4eb56720ced532731788f368163031cf10e7b3fead09bf8238d7567eddeeb68fd3aa26450916f1903e3d335e405ae7978ea14bfdbdb65045e2db0e8ef9fbb75de8d92c88689fadeeccc51d7f7571c78f2cee8cb5dd2923257c7469975756f6567dc959ba65411bbb2fabb35d791529d35c7473751f462006f3a274678a17998fab52441e8d2b672f19d95e4119e3a60f9bf58f6d87195fd636e0fed0d1f58332d4684f585d150b58e8e49730aaa77d1992b4a3ff944ceaf66e10a7fbaedf48d4f516f0a342b5ac41da03be4c4101bb294341cc3af901453a6a420c79c8721af8fb1f33a4dc39133f2cb0795e55104d1d872031dc26828922ebb33f492b49ff9d28c7ded2a28a6197a8839ddcccb3aeb30b45765293a4ab4d9defef307e9b51b3cf3616ee7e7edefd484cb060462c28ab048491deaea9ba6be31276f662fb7b5c7f996b1eec695dd58fafab5baf5dd6aed3e1e56bf4906a39c0aaf11fdcccfb2af46fe9839d6be3bc903e77dca72e994a9d59bae9738325b5b7ca35d45384bc7ac024e8b8f6aadbe6b4792e6e32c5f56a2e5d3d772fdd9d371983fefc7effcfefc3713b7edb9cdcabf0dc27b78802a84f7eebbc49926adee128e081f09cfb6ff2f12390d92f8f47bc6c776108671c7ffa8d4ffb416aa1b0377871912202723eb820c13604f812e8209c8b52acbf73761ca4b5ba725e5d5e9d88109b9b8a1120290aaca33a0685cade58b0a82e274984f39f3c60777e06df3970064693572407ca935e48052d8edb317690c34d90d2c0a0ee756ff36ad0451356454abda9123cd8399a6900767898071b299979a098d17deacfd522a5eca4c638e80fb840a8aa80aa2ad8e9f50e1affbc416502841f2da2f4c5d33c4282c2432ed386a2af9efd2609f4f5a8102dba7841db95c1ac15ca6e9092b9e39415154f6345deba56893ee0b1857690d0b2fed2ff1e259474ebc0ab6843945cc9a416038a2f19aecba948a86711ed10c3ccf76a59c4f6da7bee1aa6032a5eb477d48d2ce9e973128bace64a3d684f0f7ab7feb2ddf5c3e29d76d8121678475f14492c7f17c77af4ab70746339ba311ee3d37e0843ba8b7af08f5d022f8ccede357d17dbf1af4e0cc6824e92c03972ae2537484d933ec750869e5d753760630ce0ec4206c154130ea47bcea85fefd036b8aec544d33f271e34f11e9e24e804ea01644c55cfa73ae1e19ce99fe9e715e02a01441bb8f601a96f9b4170e3d0427c880de48708b74d50d2ee7732df30048cb433a3d4b643ac70d349493ce4d281bf39ccc965e489776a0c24dd28aafe9b6b9410664325bfd88a9d0fb49333bb0d889b7603681ab05f79fd377f1c84d98e0076bb9945c01917443b6eab71304ea8da6e891c8e5d919895361d8f7ac9171a5a97394fe9c3f7baa11679c6669cf0b3b69735c6880e497aade58d8c3e31992cd95d78216a852ff29cfefbdbcdc970ffb3334931e777ce0842be7980aebb483c3968a4b94f0ed26cee4ca00dac064dd2aa480b379d9127eb69d7747990dd2e426da575c2b52851afd8b0dc3642616897fa021a98c125e159a781f215e5f2bb8e46f26523017229118e27653c5ee58f9fef6c0322103a73d3076f832ea124bede74f716554da1a899699291d6a9439b2edec38998bf933a404a86024531eea441d06410e21eb070f100afe2e2cb714ae3e385dfeefcfcf54ebfc7f9b7f95a36af7456d7cd5fee2ce9750805c49906fc1f4ed2e8a8ea0534bfeb64243801d38bee45fcaf90ac92fc1b9828d8409bdb604839a0105179f9f117ecfe9c91c3fae7e3fde44536395755c8a401889e05ef4d3dde20a90d5e6cfbe4c1fcebcff97fb389925e1558e85aef60ff84ac74bcad0226e2701c82f88d54300b9282a513b1b4609e5fefb76ce035e1722db023cba9db8e41fc6d609d0a18bb804ea4923a8196299a776840903fb1432ce9b76a37149db975a74b1f9c384bfd0082b7b4795dd80134389d42942dba2d02ae97a2cddf406dc77b72d50cf38478fd822d0c4cacc3ae67bfa14f7740a5683b3b0c897a3d811c8420905abae6e244f9b2deedee27bf333257ebbb1214f44fb3d876ebbc447568e28668f08cd25375fe7489c4696bc4dd59d6b43a893b127448465924f8530b12b985ec60efd86452e2dcb19194baa095b18071b41be7e0710379e7c483be8bfc48a17b621d988065b7d28df426ebb482e24cd2e791bc5ebce5806a24896af856b0a5406f44cffc77ea8d609f027a986c497acda4edcd3781dafb2d1bd077273580debc5d8f235c5f042cc441ccf11d34549b5f189dd77635ffeaaeb670bfbbb9ed1bacd3c0e2a29a0672b57d68a26ebe3dcc7e5ba4602c1449406d9459ec54805904a16fa77b05e526c8af91777e366afa39437d20d262151697bbce014cc662b8fb9fe0b8d07de9bb4135f62693fa250bf4613215f2e098858c86156d160986c34d94d2c14b211b6f10debb3418f493029826b8e50b9a141c5a04c4870d37fc3626c5d102c2ca6ca24c0da1a668ad38af57f459caf4695c14d5cae068e6373d1f09839e31da9fa4b8f705ec74e03f0fa4e7d63bd2363810fca11dea025064d6d2336a436f904eb81a314ece83166a66560f9d861da3c461583820f1490c308792956ed011d336f551bf61639af64056832a4d3c33acf9afc059a22dfa4b55575c8d6a29d34e9a11a106096b01e7c0341f80941d1c7fbe3e688665f520c427f0358b2b374d178a9758f538809c4035ce1f405f061268ca0b9589a6b6ebab39d29852051035c2680ada7065323b43d282aec58815d2c9b075eb49084d99c8b644037457ed470c0ccbea36447d675224fbfee193f9530cbee4ad917266925fec94ccb8999b2cc9a01d10058da622dd943ae91746c981d901658f1ec67a9ee977397331208cc62c4f5c83c1624915960187f486e39031226c800ec781df0debaa7b54679bcf4c76f83e43f28cf8cf0ef906a68d9d2863dff37684f3f4e10d56418209dfcf2a682ff79c6b5ff0b96f7248cfd340bb2ed5f2c1def95c3fa805633ff6fe672378fff3c7f0e55f7d143f3628267d8cecd17f8cec516795b6879319d4ed57af5fd415fcd81cfcd0fb13d5dbfe03a3327edb3eac1f36e3bf4e2a0ad01cbe5303e47daec36bd65eeb7ce7157b11a298d0ccc051115159f9ce6f78d339815184adb77679007e0762832bfda29b309b9d9e66a79f56d43c05dfb8fadfe03cf45e2d037551c0a9c846a2b9ddb873550a9ff7c9ccb7f1ff5e33cee7e1eedbf7ed7a4ebbbeee4268cb6fda3c969563594d3e5cbef7bde37e160979dde8565bcbab6513b22988f9a905eaec61f9ddef0a3cdc38262bf57854df29f62289de27873fb7ff3c3ff83eb4653aedf80f6e811f3b3abcb11f3829b3691f151dfbe041f6b12df383ed391f96fb87c7edd761b3fb7978dc3e1c7eed3cfbd07efdc1ae76fe8397af1f1c9b5fd061db6d7f7fbc2c33c9bd7233e9df13127f02e24f38fc0986df4b4806d6900cbd4ac539148440b66a2e53197a99ca10a5fc6f31c86bc520bb6fbf6f0feb23b3474da2056d7489f9a64acb88743467aac49626876933486c8836b58ce26a3d30504a98e26e9042ffbbe8c8a688a447852a9a4fd500f4af074b892ca888c9a3a455fb07fe5ae525d4ff29f169ef2544edc00030692d415fbce9d76ca81f47d59d5e4f7f81d470e435877ef950075c7dc78bea1536a0ef8f415b15a5e9f18634326b826363753eee6f7ee5a9f74fc48dce8d0c9f120212e95958427b09f7c846a0396884dee1dc47f1a6880dde44b1e0b8b5897ed8863d6cb4058cd2459bf46b9f3ee3db817a4ab7884525a96da90dbe4b49477c39bb5adfcfaec0b7a3a73f05694d97606b13c8bef763042b088659bf74e8bdf0aefa85bca6538e4b0ed1f0afce34c389f7c7f8f8e5e7ee0b279e75c6c5730ab805c8c28558c78181fa4edf3884eb889c6584cca9a4c80fcedd24cab4072a7240facb0613053c324c6408d2d63ceca349ac16057f3828d493c4384252e1c411e61afcea7843511324115d301989745e1e127f88df5829d03d01fe985df5fd4f70cee2634eda2b58be3ce46b7c5de0e45d46acc0dc79da07a9097cd5b7a8c502772ee55c7a3a1621b5901174467d07f545cea8251984161f11e5e49ba61c32e199502eea32e9810ce8b90c930658ff0597d42518f3e07b5ca6cdf2c50479827540975990e2872e3707d3d2a1eec9f522de995406fc327cd6427609efc2fb77bc1a71ae5d67190490949c4171141bc1e680af8221a28c8c98365e9d42fd5557217555dccc5c03129b0fdd957ffdae74146c96dc783658bf9b3b95023d5dd3a267096aa2c85cec5a736764a1a6176cf8681895c6fb7a269e947214b58b6903de9526b94cdf7a96067b4f87ae913a0ad2e6a4d6d49d9ce487c78909f82a95edffcfdd9b34b78d6cd9e35f25c3eb9719c83973e9d0860b6ae508ee7ac1a25986ba40c97f51e67b4f9ffe1ff79c043841945caeead7fd8b2a93e2042490d31dce3de77d2e5fdbfd92a06aa7df834efdadbf87a5f4b07fd19ba7e1c7ee91b66552b7ea6f664ab68f78e81e550e5785e3ff777e5ef57555de59f151fca5f3ffaffffd3420be6e5fd60fc3514e3abd47e9fc0ef2f0d7189da55b4edbfeb6cae0f58166c081f749c55fba9af766ddcd9fcb02f4b459bf6c1b22910ac19f93a945e161e495b16686f6f984f072ee57b246ce91b19e34ce58f955420a278d4c7e5959b14d57f66d5dc6c36c33e567aaf6e696b4f9eb4e2355160db32eda347e6731f88a3675af4df5b267d462eae7683a9b151f69e989e75464a73324e6a090217e8dca3a847bf072e6c79028f0d2c02e8ac5944cc579f6f855600b36d6d44c4c373c1f58636d0bd126a2d1956d9693cacf3cfe5c5f9d504f3ffce9703787c61f23436892ae742b0a263b0a49d98e643245755f02df8243165779614d9d185f4da5324c4da61e92a924d32750586c446091ec691532f7e4c83fe433a8148fc34fee6ecb2657994019cd62a2ade2a39a210d57f3de29538ac26dccabbc6841a6a76ffa6182bb97b73878bdbe49ddbacca8c1b83dc2c5635926039db69f851b0fa87d9fab5279dd055d16d708ead3797fb0eef637ae95f3e7150ce46e3dfd207c3e8ffc03b7550b2e65feafe9e4afcf7e36498bd87ee943bd601dbbe19a60f8a21b08a66659e65fd40f6f540b7dfaaf7fecd68f3fd6432b65425d3f4ac6c0d46ee901e44c05e392efac0384c043463718eba16a2d1e934df2ca1bf15a7d8208522207bbe9c40120c8c1fa45d7362090df009f04aa57b93b166a44b4e8a5d18ec2c2e2d2c70aee283217017d01327630f5810e29d1a0c59bc134c6ce8097957251e05c8ae33bb1a11c0115a13c3bda9a7b60a7ac9be8abc8238f1f93b3a8320b4e495312c3f1cd30f2484e6c6b646c1a9942f926f5c050c09ac6aa2084da2ae487718d908b8422a91de54d9b7b03b95d863f184bc2934b74e2ac7b95a1efc407a5ca64f11afc4a606791b5cdafb0e491b7c9412b392264664d48876a627edd656d2a02cd952cfc104ed551c9afbd096ed3d244a0da28f0be82423c271da0528ff9c8a135b472aded57fd75fdb26e7222a5f726a7c1e9dbb535e22fc83a1ae82f31cd0e41f244fd3617eea03f9f219de3a03118900c01601d8bba03adbe0b9065b5049986402ef9a61f1f98f47abdb72af4f9632d43807806531b8a0ca4924c31352d51e1251ecfebae9a1a7532c10f3a418f886c24632b12e485e4c1511b34e4d75d208b53c84bebc50b2c33f52ac046167abc25a1cca126240be2e0e51dcbb105af3684a57cf0bab35ec75ea317a04271bb0e062bc5f7b64c44d9e86d1e34fac65f164c55404fe232b26409133a2663f34c6d12d65cecb31ef28e49565e53fc105031b6be38b4e5ec924fa1c704996f2845ce153ec9c8689a8abe89b7a5268c5cfceb7d54d69b9064e576075d4c1a9ca9081ba5cdb89a8469953914935e77513be341896a27e98c6582e8a05f0553d27ed467404465693bf49efc388373c45410ae57847fd3e6a4eabcc93793128dedf1ca1d8a89b54da7ef7af3bc1d29c950e253dc218155f2fd23ae92716ed32ae747d04b222bbe6b7276a80a09fc4eaef2f921fecce50e6074b3c6a1825e0cbae0a82160470d815a647037e815c2f97590f5453ad12dffa30345f69e0d88c241fae3b0c41772cd7b046bb2a736a23325bcee34a670f899f1c3aac56b99a693baacd0df720bfa39eb677f4e46ffae94918ca4ddfaf98f56435b4c48aabb8b269057af465629e1af48b2a21a597788ef426612cffb28cb30e80af097ed4cca77b4c3710c6bc1e9c15380ce617d2a5929a38aaf4ede5191cbcdbf1e760fafa48403021b9bda2c7dc254cecd8ac05bf7e767a5e5825d2603176246ca6caa8a1677bbbe13dea68685376225a142e548f283c26175c3ae13834d1e566fbb9a6d5824b6fe5cf46fb7fdfab0a61721274d0851bf79d527dbd9c97687edc2ce498e7da086eaa06d37ab9081ea56afad72daeba0bd8a079d7beb0e99ed7efc417b21fc6ad0f13d79abf76286ef043fde8f19cab59c523ed93076453f5362ba376f8b8d9c47090022989f164d0b07159823f1c9588afea6500e2b730f7a46cdd1ebdbadb97d21afbbaacaaf5ceb74179fbe3745ee3a655c7ee91e7632b4ff83bf6fea3bfe6d351d2c0387796a0b2e116ff2f3ece7bcbe4fbbedf3b7ed59083b8e6c1b1f90f311c7da1fac89b255410f0b82c9603131290e262593d2f546f521877b46b1d09be206cda336947c842a6eacba9d73057fbff6ee634a41479da3429d23ee6e6fc75800c2b05175b331553410c444296dd03871015037431e1869a1dcb3d86bf7972861652a61652a61cd31057d58092b48ab3cb64eac71aed10fa2857a6cfe1233cd96eb70e74cfc783e40c341373c3cfeb16fd4b2d74a7cc749733cdc4554fce77f73c268f3d1df24b253ce02dc2cd9952e698162d3f257fe10fe4a68db229206f86da2a055412d5d973f04693b2986dbe9a02ef508f7471d427fae43b89f340c2d12dfbb87c7c94443f4c8d4f9d563625119edb415b2e47f9999669d09834c1f7fe48fba8a446adbc9fef3ae8d3651a8959b4c42ac55b0ab1b0294070a74a114c44d37a33bb1cb1e1e7fec9b465e5e5cab31ff94fee6eee9b78761abbff74f8fdb91f3aa9bd588bdbab9e50313f8be287b2b13364f0ce5b55fc495efd3a19e36f2f0f0b5c924d988097d6dbe2c110a9b9395fe10afdf0c895f35c1de200bb9fc7a9c5bc3764f8dbd16382c5f3e67537c547c1c7327252a8b1a122bae52878182a96e20e711c413b5b2f780a83b40cf7f83626e5973c54b85032e33c5af71b86ccae8d94eaf3796877374df23beae0d0de7a7e7260f9d4ce74fb13e6ac4fa34e4cf2b0309ef7da9bcff1d9cf6c7e3cbfae1b1511d58bff043d2b5c766d4dbc1ab0c16baa8bd8983b6f267afb9bb6ab913b2cb94818b32983665f97a15ff2f28c49bac732a2dba21ead49bda4e7ad85e52717d4c95b0ae40068612b89f228fc1093e2280fdf61edcda0141d6555e8c0df9d346c1c7d803df53729766a8bac8074f338a0dba24b849caceddde11a834602f7b57bef0ed3e1aed13578d5fd57e6acbcf27447e92b512c3e9c7b77dfff4d22679f72193758634644e7b98183a63270d9ddaa44a46d15c68d920f4e6b84d78ab5121674d016d4d4b2a267c07f1ef16ea4b7cb6edb50c9e02a69054b5298cd17bde9dc671d942846c806ba2bdac644b68491729248c0c6eacac75e3ad4f881ea6a6b4023680caab15d337b98386fa4c13fb456614fac1623235bc916d81499ca9b483241e04917d648f19bbbeabc625d0ea50bf01b144d8d6507c480d00e6dbfda673007164646cfd496ea65d1a6f4f5749680114af6f7f240be91ca65618fa73b84893a876025270e466a249c833b9649c45a238e34679dcd00cc941db8aed103aa50888e91cb581f923b01a76d097b4a669cc458a2e1fb597bb6082957667c0f0103bb528f993b192113ce258919d851d5ba76a4d68b59cd3b17fdafd185e1ef47e3b6c372fa3b9e04d2db316430f5eee6bc7ec7a8fc48e3f23b0fd3387d06956effd70e5785cd92df387b32a2ec0239e0e9e537c4f426399e0d0e91935f83c96972eac4ce7063118a5a7dc1d00a04ec647837907e50fd5006b0d6694ccd92033958f2309a8a9da2bb76feab75efe89a1edb55b21702fd33a1da209bf72a4796febb155a6e88797edae0192e696b33fe5ceeda2b25786d9591cfa6a8dbc297f3f8f95fa40db667bbcce3889b76ceb9970e5cc300a3acc05d76f04f36f467d82aeb3b1843fd71f1df86d6f7810b758f4de1c3fe2ab4f2c70fd1c30ec27720fb7f31e338bc379a0d39ba8d259f6a0d34ebee97a310c4f3e6938f9fefa5df9bef6d3e53dfdf6dfe3ea57d485c8c5dbc21bf16de18d7e9c8d6f286fd4a3f246a48394d8be15bdf0d06a52a26eedfe52c18e027e1a950fdac445bdcb06bcaaf8170daa0d54f892010e8e00c1c5de4436048af7491eca5d85b84b314db4014231ddf45cf6f27cd4f449aae8d2ae05b688c69e235694fc5dd0586fc27437bf6f9ff74f636016aad720b5a0e06ef4747d2936cc2c617dc378a9861b6e96d36466364398355ea8e2d8d5a38616abfa13ad437297254fe385000a5fb127661a2f418c515ca35804a9403a13839c3ce22cbd84a6416ef954181291240bc05537f6837691f82e211c4eba0a5226238f49122b4c8c97c4da13b12ec4ba4328d3848a5694682a6848903977a7c8129768b6f0b1369bc58dc64b0ea3f15247de1f1076541025751ef46ed0334926c37429d03faf269a845c65e3fe023026bc69b8f02791a5a440b1d0c8493458a8f105c69d6002003a19f50344356148c8cd720c50590686aca92d709a517345963c3cf73296f6b03a478e1608b4b2d601b8197a0e9e87af51fc5ab8d8bf9a31fd956ced716a3c6ff79be787237b6d052c4236f7c18995ec4cc91bdc3887aef64416d163a279ed9b56b57c27f5bac1c31c6c9750f1abe48d87447840a91df846cada8422e73892e189dfb304d22a9928bb4b3ea93020e90c861fac4b13b38c7c2b6322070826aa363d2c83c4bedd7b301acab4030fa0a6d361ede7003a9791dd339ae08c0b7728ebea8a0a940bf4705a1726d93b96f8400111f50fe9504d81c2afcc1669b249d6c4d89bb269d67522ab9b3cc5b44aa6d685377ef0267b15d8ec6c9537016469ce601693842ad0659719e39be6b84b3d89cca08cca4b7520d3f061b044e88cea3aad0edb8931efc54e34c9191f7b6b821fe98d2a29a7a841eee859542e38405cc40136bcec70a820b345c58535b5ae9ce95cef20319b5890d715ce745f648c884f8caaa6c4e29286aaa3d2ad2c9c7c978ae70c0fa14088bf4fc868fc6767087378b2a00314c86526e031ad9ca1ac78e7ce7407d334af5eb6ff7ad1bf3dfdab891725708f8d8b9afcc750c6c59b7b2e22f21857b9b7269ed482b5f7bf54938b4ad87713a3c62d4609c44c34f17fc1cddb69a7e62cc8855f85dbc8d7193e6f7b6db25f9dfc9aa959bae2f1e1f1bfd72de687c25b68075bab8369f48d77d6b24eaf54653bd24e2a71be50094912c248e88c0af2fd600ae580f04583d0131a285f8f894849e85eca626f3a9ed0a4cca2bdd810f7b159899d4c599448d6a0032596a85b29df073324e4b974321d42dda4032c4cff444dd80fb434bf6463334c2ef0e3ecad6c9db9a559e297223f82d1268fb83b4f2f0fbf3f6cd6b2f6ef4781a98bb2ff453ae7cc7bdda599b213c8d038524064af41c7190c487d41bcd98549385b56994b2ece631904e654201a1585629f03d852c39133556c95310b730ce8efe7b0212778f837f7c0d37bd08435bf7efaf0cdf0c6d7aaad3729e5416c366f02799a4fb5b260f9d6ba1e152dc56b0612b653a690912bc6624ac6aa6dc340e642f9cdf5b1acf4a22d6175056f9993329bd11c3bcd8c4cd367ec403575a03aefc086d84bfab40ba7231d4fcd1e3c028a9db16be415f0c044843301d589ce7b08ac41fb456e20264d3d8520d9160155a762952c64e51688d985d8fa844d17b356fc0457a6102b8c806ac82a3755548903c5134d6a9b90abcd03cadc11753a6f0c4c4f0e9c1fbbdf801d1e1ef674d400a89545dba515f8bea1b41c607c5887cdd645a0182d695e1bc15d2864dd6a7b2f9d800453c01da5731301d6e9606a2fe6f42abfee34252c40b6557892cc93206eb9b61da8b2dbd3188076005f6f0c39723d99d8e4c2a325f6b2e26ef88acf92a51343d061a0166e46153f6593095b055d5e0b16a76670d10341996b39da60721fb2a3b9e849649cf831ed737c0fe32b67e2c3bb226df56c412ce0562b00943907d3c193e139548456ad1df97f591e0c6abddec256810e5320751d094813e1f38e414d59ffc554a3e766b9a5bacc98354593bb4accaea7a2a1a75188c305b173ad03f319f45c11ed36c0f5cbdb11765631beeea1480cd87fa00c9ccb932de6b0f05b8e1cef0ccc6ddac20eb7324446e369063b06bd2389ef32c590235e14b8578d130dd707b73204900e0740eb4b1f0fda2e681676b4cfe4468fa3d353fd98f9099770745fa04e8d92875a7b3d1756bddcb3af84414ec33be12c5af4971d4e36b91fbbedf3c38695240e05dd26594a613796498f3918989d68a300906c8eae9349983909f3418c064e43eb38e3c3e98c6f7479c87e9a645f770144cac6db365303676ac14c0d6e403d49106bcf62e4b2c2856e83dd7392164ed2bae1e241e16a190ad22a4ed208672bd22987d036b30a81d34da6570359a3335b664426645dcbd05278189366e2b76d1ac578a4ba19c887519fe14f676969b3945c97c89614b6ab92eacfd1db2f6330a136a6464c50d4f1609ebad3694a21f2c88a944cb7b325820275e913cb5b6cc134f50ed33438e674384be3a83b7a9ca511b334345a79b1bea521a8b1a9ed7d4edd809a1c99cc11b4e6d8ee64ae7a2a9d4bdf3907349565a77b84f1a4cd8913198b59e22db69cc209234066ab2ce9dc1048ae5ac4b21f67abe3f8c022ea1be97120b91826acb171918e7396ebb227c76473ba6d6c695224ca4278dd155a8ae855cf9c184e9f35221c291e4860e039e313127539c17f0724bf62f748bef1349032b251d14b47dbca02504f52ec08bcd0868b3a4828233ecb2457990255dc14356fa51fc93053c150ad095b61e1d8f658dcb323fb002f2371f9cfa6f8e3f25f306061677441c615929b32b0f0e899378c85f7af36265afa5064e439aefe794a2dcaea4f1f1d11104f310304ae64b07bcc4b192dd2ebe08f40b880494beaea47eae1e27e32d6e823ee8625bedf73004706052dcba93cdb19651a1c40c086835ae64ab08b3919709d9309208313b4ac302ae488cecb4a1e104f285c6130f35818c4eeced8f58109da7306278d42da040c08b50c46c20dc71ee6946fe5782de26233a438a57162c6e7dcf61f740d4219c9a2b7226e80977b159c7c2f06ac1f1e5c11b505152ae33054578c5c3a92614f63466559d442e662cd0d8eacff990ba1cb08a482a80941a9c8d8557518bc32d764a778fafdf787cdf654b8f3cfc144fd41873e1cc2f51635a3d6791fa9dd917b7ff0847313c3ea5f77514568d74d9fe4f19300edaa1385d6d06b07953bdfae647878dcfe8a487e52360c56c7451892cedaaad8fb4127853bf5e9e961d0bf3f6c87af93dc52e8b5acb82823083a538e1615d6641042a9cd060b2ea860a43b90019015b630111c3805900667ec18553725eb601a9d6e46fd8b0e2621a29af8d788864c455e597abd1efe8145ecd8611ac83e4b1a68b724ff5f970fa6b39f51415e26147abde851652ce27dd84a596fc31f0e4deb628932211b668217a7f1147f33dc045ade628a5dca5aaeb281b62f0835cb80a27859dc5fef13e21161595ba90b42dc362ce47d76cee3889ffe345556c852d1eb6b1cdfdcf09d31ac6620f73a21c0f33f80ee9701fde3058e791bd19bc08aa0a2a681dc2968cf78d993b2091a92e619539cbb1442770c41d0b642813c6c3aabe491c73c9906b75c5c6f3caa802b14ae93e242da0c9aa8b0bd2123e1b03216a702db167484f08d06f9b5436525fe43a528de4eb2100790e22ce2cff19fdc546236397cce321f730b3f9183eb75676fcb577f5f7fdb6ad2178ed3ddd4b9aa9319028fd9829b6b0e8f9d86e6b43be8d487030588a545a9cf07b08265c2246c5be03e7d5f3f6e07bd7f59bfec9ba836948d658c43b43e9dbe28a72f6c37befaf40f2e5db8927422fcdc028ec78cab5cc5695a95c9e66326151054b7700d4eba4baa5bd495ef63c396b2b567c2d07fd1592bb49da76e4be83647a0cacaf7fe5029eedcb5de6de2ce8b2aafe3f8b3bacaa72f025e7cfaaf7f7c5f7fdf3e6f8687efad2c284125cc7e0eb204054a55601cc1dc6165b78d886b8a0524431ebbb8774b1972d52424183dbc1d6e0cdc219c71658d624c4f420cee56cecb83db20dc49dd4cce3bfc7cc83285b2f1502a838b805c5e2d104e3319f2b900ae26791929c3d46525eef906ce84038515d052d6d4bdfce122f23f76c0da80aff26b11f1047c4c8f3db6ff131570dc208da1c0d506a67d0629da98e6e1ca9363fbe7350b31d1d4b4acc6718fb4b4ad5d50a8ef472d7b80af4174553879f0cc320593e4dc2444f7e757868c4529782bd07297979dc50626df975ffacf81daabc11e2b4fa38996387bb80f2830d6b0aebd69e3e379fded79fdbd6f4871bb4877de14651508269553716f4d21855a13583b452d343de8de5d8efdd30fdf1475670b5efa897bbaebb5f577ec0ed8c41834f10b8a6c1107f78b7cf00b6fe21d2a6f51f4800a5f954dfc82f7401a43a4e9229ec5da5ba81d870cd8f0a3dc2265631fa7218a887ca3a28efbd3f03c0a262a51a3f35fff22ee840788d54495b884bcfde548dc242fbdad332fbdde6fd7cf9bfe689899e4060d8eb75535193a85749b133c1ab16eca41fcf341837a6005b94cfa67082839b8fe403ea64332358f87bb02b99dd8332b6b7c193cb391455c7aa23e115749f0a16a5e6252341b2cd424ff46407354dd1d1912c5f2a293d536187160e048441390f71fa2f207cabe914aa305e0a2e9ca9ee6a56ff04a7cbdcdc812918295a11ac79f9380a3e0e75044ba4cbf1db4384a1be0579a3a49816483dcc404baddb74b61e74a595f77e9661e6ebe0a2863119135a7916f10d84c543378a6d101602009076f7c1dacb22ba41c198f6d4e9bdc96e0b035deb25ee75be10d53671bb8901918d0684d46f5fc1da8673bcb3a48d02f44d57d897c13dc290ad24d159fd48d29949b4c08342a86ccf3202e1d52069be6d1068758fe7c21dd0912de800036bcde23eb75974dcc8a12bf41665940ca2c6605795cb944af1c5e03f08f5dcd335ba60a179b1ffb2de18a7e0e8c7a55ea71957dba2e1981b130475ffae78e26addc3e7d1fb68d752a556541f0db80418101f7066fcea901551263ef32ab6893baa3c260acfc72e293b30cd9206531a25e9813c223c965bc3db5b90bd1539ea1c78e886b020e18e168e1bb80703cb2a15d3ccd1836921a464b9c077a3b6634ada69107814cf42d919008646f18765c686e3ca14036b02d0d5d8d05359c60be46183851b78ef8ec4060b6ac878038a926da83c8650888f820ea9fb2c906327c19ee2d62fde07df07c0486a9360e1def0fa66bda8609b10a8b2415a04d8e043fa1251c82e6b11823665808cd7270a5a361dbfc91f882573c0907c96f82479c2c0324650f80898c5c42d5c42adb8d859801e69d77a6c8444e9489aad8373255aeda732ff3fd75d70075be6ce412c1f12fd7373d2f4c97f66d008e5029809729b7e029d9549175cd9a6977e8fe20858342018caac8e144d41ea28a96b1ccdc78666a067932d6f4fdc8213bea916e5a6983e33876a949ecd4c634c2fc01d5ae18d4ecd271b0fada465473fd2d03d1789f183dc6784624611a117a0da0d7f07984e77107e180077606a881889d1e81381c1b7250da2420ac49b75482491b240e0b3079564d98bc23a514ce62021e8a81378e2c1e52bc07d46472a393a36254268c57efda40606c9e4eb3438a8ee98a02fb5d46f611fa8704e7e9b00bd3936c9c4513942756408b081d8c2d9b49ba732c15c0bea510a48c8dde03e83c38dc80cf61897bde6c1f5fd6dfda6a9cb0129e8a7e2caef8fc019a3dc9ddf7f622b9ff7a0f1cef31a6c10427f77ccbeaeb1161a301d569b01de6a65c994c042070bc2ac0d7fc642b0e50bc38bd94d71d027757e7d8ff54135f5145315bd65464ae0d1a5426b5ed151420b58144cbc1c4f9a04dc9260e280ec40fc7a4694b4560a2bbd661fbb13c51bc483930e8e01321b78e69ca1c7590d9e580e00d6445b24dc833727bb28c9fb78a04ac00b1c5f53dd3002346354f04cce504a1db902891b33a4e0a5991897872a745e0d3907ecb85b04426780252d172c71af125371dc6c20bca8b503d8c09221717919c012cefb3370958bf942727ab93736777570da8d2554184b3b3aa34daec5cc7c8a68b74ab9196b3e42ac274c1fa0945d3928e8292955d87b5c43a40a5e13b60c99455371e262f188b51c4c48fd81b641528480938e36425873ea58caeecc4e4959b12b0bd557474e476780ec9f5c34827ed3258a9594564b91dc0ac6617d2d4e06ad745a42f09ad06693a981464cd896279e3181825106340ecb3ada98a2a7bed8fde4650c5b536c1ef18456113707aa8471e2bc45933bd69fb7fd2c0608aa30b086c17d726d720ffc6ec2856498036239360acd8cbf8c0794c43702e6108c20d0a4cf82038c89bed781856f9441a1eaed183db9302b558101804804d9335ae8aa51640be33d6ada221b695cad9f10cc86181484e762b6c388e192fe416f14efb16d7fec05645b6cad20c42df880be7ee2291e3411ee043caf2544d57e44dcc1f785404c4c117a38504930c907359d0e01306621814a29de8d46c6abc2b604fa7998172640b9fd82a9b36062cb7ccba7a9004e2fa99f9f6b498ca98926640fcfbc3566ffaf5f344c0898e83e42d38d7b3349c7f24928c7b53e44deb55263d6e26956c27be839c2f5979dfeab4c82b391c8289457587d2974d8758f2693a45461b8b8fab7402c665e46404856b44d0d8c4b404e85816a03b678a9c6d52cfee643cab6422047f21661a00cc5541764979d0d30778d8c0cc8d1e451205e47b32a0dd8050b9ec0d1b280a47994b5d206858ee645cb666b2e107169d061912d9746e49e5949fae794505843c6c34114a54f8d7d4730c405791cbe49a15e380525b71cff0b0c18c838aad270fa5e59d0cb6d1995abbb037d33157798ed515ef034aabe609353c0935e2fe487ba18eb4178d2bf8e7280938540f4f2f279162374bb53dc76c75753533d567a0babece60be7fac99b22e944bab605cbd43325cd19df1b21305b8d07fb6e6bc364691e96e2abfc8bf5885ceaa59c0d02a862a6abfd59fe7a6a91b472d73d9955d5051c755fe859a7d52f82ce658d13f4020315b27f77d58ffbb95cf968969b2d2a591c5b8b8a1b9443ae966aebbcfa6a67a42251ed54cd2f03234a118b49fea0940ffcadddfa9766c024b5c261c332161cf56b0ad27742315f42e6f33b0dce6230957142d27b0f57a93ae8553f069f8f7b7a747fdfbc3f0b29d44e590eb0c147b87bd91c43e5a567237fab0997c52cf80882c8797a2e6675284ad96a0b02e69e94c29329dec1d769720fba96cc460b308f2bb40860ed984a8cf6302827ce0d4c9ee104c84a214d6552546393eb810d653006fe28788a8432ca4c76f512322bb1d0f88a72b7dd851609fa6d4d20655376341f81b443ef24986de0a2bcb32d7fa6c955d7893479d47df6a749a459ddd2a23ac09141250bf0508dcec264472334a58a337c0217514d0c98897a0fcbd00e1e502f15f30319358f47ef0ac9ea67c70bb085a6e9d6fa013c66a32ec6bd97f5ca50ad1f7a77f52faaaa80f70d49cf0fca78bc109fe42e3dd01a3488c6071e79df47d542c7c87bd831c16171a15f79acb8e8e9aaced62938b2dd825e5805d5e894b7507b5210fc11895103a00b8e1d4bcc92aefb3e60b9d8102cf62b126b1886cd54127e35998fffd79fbf561f3f270d8eaf5e37af8f7fea1255f115265aaa823f0b719f0aed24865654015cba9cb4066cbc64a00636a54c8b0d8c4c90877c514f8fbe013eb54465f6cb4a12f24033fc8e523c4968ee599ae81d43d437896514800a24a232370c6e63b710859d5a582298112e01e655c45bcbf9c1aa9b5bb136336230b9bd911c5f8560460a9e28f185e24253848138063cc7287c1f95d72f38d2a1cb18611f0690d1bd91de9731cf5343b59a05a45157c6f055f4f2e22d406cfca64f64f953a6f5d18c5de18a8f3d35fad3415384260772b25a22cd1ae08b650565eb56226a42591f6f12d8b6be13ee4085c41cd9475d0145680130a9a08f04227b29784167b2d8daf97ce4774480fc8b13016102f748c7a0d47d6df0459a70db181ae6103eb287befebc09a5f38c7f0c1ebf4b1a9960306f1507257b427b263881f2cd306ece167c5bd8e4b10c9b0b46b0e982336d0f2e8b83d16b740ee3828858db51b00ee9aec3f32b4556c74b9d791952c71834492252618ada0cc75d0a3d13ac62b721c34b3578843583a985cab09682cc5e43010e46b41c9e45ab24eee5c9d3472934c362bdfb40d5489b000e89c9a4f5734f5c211ae298365fd9d2d8d27d0221410024b299b8064a286b803be12e058c492191da979d0c063591af00d2be83da575336ecc38629a30be6bbc89a8f288806e1b42a713b74f200c11f7116b3fadaab1306d193dcd44a9b759c4a28200c7ca471880b19d1cd19baac59becd8f1e27dc7e9a9a1e8039a60622128d9f21fbc63225d910f443ed84fd5d4be01221b87b75cc0588fd0cec635620cd2f22f9449a2403217306d99ae1e38f67da0a546d03d282c110f1f95f0018d936e4c7e6834daa905c4c286edf0a105cdc6d819765fe349e4c128d6c0828bb8c4f201f97adf261e097bf12daccf32ba2c42774df1be0e230cbac3d9d632a75153d78a64913b802e7d199072a6fded2d8757c2b0aa63d4a66616d29b92b894b9666d27e31302f903b0171c2e843967b8d9a654d483774d0eae3d8dcfacd42fa92da5884d35c42ccaf260b33972db3024355a72c472711c6037e010b3992cf278b45c073b692556155bc6e125a3a9d6e3336e13a9006a68534d6ea2ec8e0471cb7272127b1db040e4b431945328be05b7dc18e58a0cb2203f02921c942ba63ca0082172c9d998847d15761d1e4da6149c3696769c1a69ff4eabc109aba288a7d8b796e12b4f5078827ddb230ad0d2f3013b13aa94896f46d4d0b74a66e4632144276b56ce2d42611db1eba82b27a8dbb634124239d1b8d88365612dfb5d9aaac212a6f852fa5e2c3d082840b500386feb593c93c8112ad6dc221a843b613d86163f66cd3a334123d955c306463fa010c79b5096b2b2b7e2edce1fbc099955df583722ebb562ea354ee15b403ab53a8956fc6d2252434040cb1b582963ea3d369156450d7a04058b3300029ea0fd3332d8d6b537b606c5c7560f27d68a3311164cb19a8adb803f37c23ecfc45f0932989bbfddd9651697231b06e23ad02b744808d9015139f1192c63f431bdde47947f9fd47b376a0719c1a8f8666ab615263174b9e7f82f59b777ee1253fb289205420865270b676a3d403cbc8e0371fbf8b29e0662547671159f399ad53739b0af53e9dec4baf4b25b879f0e632d33d419de51d702a7fadb948e37c2014bdbc12a708b19f2b69b10e29d76aa2efccaf7b6234df9f7e787c7971603803ce4259e7d2eded09703b01d6a4e67e4ca7fe9ed08cc9c632b4aa7d4ef13e9950778ddf6ee00fa1c9516f1a0fdc25f93abcef06805f9b1e7d53dfdf776f3b26f2efa55d060264e70b0bd752b0fd1d6390c473fc706ef6705e60e9730f139b2bd6bc03faef7b27a793153525d7b7b707de273bbdcefdbe79787edfe4f888607ed6f727ddf147f021befcfa97c5bafe36d41a97798cb55fa859fff9ce6f9f1de225ee67f52cb7ea74dd4c9c47306a826f97df68e8eaff759f9eb517dda11b798a75f7745d9eee6576e1efcf5deabeecee29688312046dabb6af073a4795740efeb20489ee5eefafee3b7e161dfebdf7f3c6e26ce1994cc8a4b9e58db68c1e964596b2a76443a2a7279c0642c34b4bc259f92e9d25a4cf638d67018d9910174abba712536a4483831ea0bf7fcd0f67e5b19e0e2ee1f9acf3416653bf0df8d556716fe183c1296d6aea1f11447c462a759ca9791b4e8985b452d38afb063f043ae811c90ae059bba626233ddc4b2401400fa7b34362aecaf5071812c132ec4a5003d832c6e3a6a70551839b4f93b5c1eb04ce277c2295c9bda05f9376535f1633193f88a6587b239ae41ac34e982c866961a1853ac5fd7d08716f5f88e256678e495f1622393d196b5ce80dc047a4d750f73888a85704ab9698a77e661e233d50dcb2e20a201cd6c80ac1053b4096e691a237d8c4567d6e0e2e611401e69ee82f46968958976c3ec27f271864e61cc6ba0bac2c443904c071fc94d518ecc3be648d5e55a60bd8265c82912bb5644300a59ba6a7abd4fac052e7e30a96831dc7abc90cb0f6242860d0e55c5ec8221616a02ef2af99433222b01bd1f46af8561646bbab0872987f9712463601ea6a5d841ba068656b02548277a80c750fbea8158ab28cf0a288506ce4b3a913fc6d0a12363598fee32cbd211ca9b32c50d3718dd5d45dd625644a615946b1d695231fb799d81710ea0833d09d980649d6a7899bf712d1cb687970f572f1871106d3529f6a6d8258831b34930f9596fea5bb830b4e043bb9d89a971193d6bd48197b1c3bd3588321175964ee2cdf0ba819390456614d44b74236cc3108c6818a2cc48e4a947f79d4117c7347f6d6f793a2670c22915deaa3ea5e19f3128471214a7aa81b5d4dc2c98de18fed6992033278706a2ea14fd504f0882af8ce92516f69e4c38c36c313c7d5f893088f575e7908733217d36b58af79b5b238a7a4bf7e883a9be9b26f42847f1a7d269b2a7ff18f6633967810f99c4494402b90926a2f42fc8bfa99205999ee059ec8a55bf7a19540c41c0c70ce401f645cb50954f9c1ca7cabf2311f5e6a440de01ab6d925de25ebe23f9e3362cc340e8c101ce6492f86480c014c24d5531c9f748aa7505c9b42c0e5ec56340af67920f567141634f15346f754208c391aa8b04564056cb4c48d02eb326c46bb8f145a2ec79fdf8f569d72a0c4351a8b1b6ff3374d81fe551c7c2eeb15ec746ae988d2fc388075d02df1f4c191a822a2ddbc5c8a877e2f37f4476a6d7bcf46cb2ae266148c8d0aa49fe4db445b7751b7b6ba21bb2916532b9d6400c7c99da5166a434be36b9aeffb1dbfc7a8f65c7bed37ab7994ae1274e07df92c0406ea266c42d033900936a47c550da6e9e9e5b71a75f47754295da7d3ebe2ccaf3db5f9f9a4f6baf009637ad59ffb39ab86111ef90756392089645dd330f27fff5e1a09d386f2319f20412d9f30fe5b5efb38955c6958706c0dfaf9cfbbcfdfd79bbefcfb5bce61441a71a54957452a841cdad06558f45a8daf5b272de14d79aa985b8a53d22a6d0fabc1255564c6772982a7ba7aaf44bae305483cef8f533c7d428fb0b9ba9b4571192a558d233cb8bccc25cc5c25cdc16de14d50a73095573dc4e6ec210662217b31ed1f3f6dbf376bf7f787a3c01a9593f5206167f42e286da33a0e4c49a21d72eebc022ebc0a2b260a543114b32f1f5bec8bb6f94905548282af98a53d0a0cc44ba818e4b457c125fef51a033db98fd55551ad8fcc54b25d39c6c5399153eaff701753891df6857818bf8d2ae8197d0ae001700b8ac2af804a443b21079e3d26061759151068e985d92b834df868f7c4415f072abdb4e521edd511befb65cf63b94d13286af86e5fbbc0cbb4ed9b0e118e5f86601f9fe64c0a6a9301db86abed7869a5cc71939409857e2f17d5352738b284b9c3ff83f05431aa5257c3bdaeb4e1706d5df5441a3de072a518b8a90f0cef627315f4b8c9da6572e6bf28cb4aab83e09f15659e90b5ed777c4d9965e41aba751cdf9ebbbaa87edef9cc241dd061bcddcf6336548abeb5f29f11147ddf9826e08aa3be995ebcb787ef8d64fe5fe7fa1d6c8fdd40e0e87aaba451a5b755fdebb67b7e4d24eafe2f9e99ffab7a79797a7dddf700d1cd40bb74abd75079994ba8e1a165e46b84ab7afe266acf5e22a5e9ebeff8d9730912a001bdaae01f42ff9d72ee179fb7dbb7e69d40c57c2011f68e2fe6273ff7c6930cc32db6cc803a2461e1035f1808c49dec6e00b1a2f4fd433a0174a1edfb53e4e5ab5b9b69f68958d99633db180dc71db74a658e5646b4cf25c3e6a6cd08d39bfdbbcc7fba781fb52a250ff5d325679636503956d549c0ee3c03a1a11882b62bcd2766de412880589e7a38d97ad195b28b6db6a2ab7ddbd21ebbe335607935f21490094034c6e13b453616f0aceec14506ccdf8365e391df61a47b0dae900b1d691fac2588079127033c0cec849943348e4aa60b2fc546c00dd5e6f0c487114be2dbf73a824011c4e450d925fa7a3fc875bf4f06d9210f563e95502bcce06e5eeaae9c494b772cb6bc233606cd0f709597b8068b45f44fc18e2d10441e088e225463516baecbbd35a432a281408c6a1f6b95e87c46743eb00c904a2abf3668af0ba4a42c16af25b0c3ab29ba15222b81931cc2b871e2196324cda87b736642e4bb229e8ff7e7aa0f1300eba882a703082a8846ee2a0516dd0b4eb88c6c9657a76b846c711c728bdb5c7b374e13430392e5b65694d624a963b8fd04527062d881a58878213a23203f500d265a602ffa802c60b8b2455d95b341a6d0b4057fe15c3b90d42d526d77e1c8d0826a511058ca1ae39d69b9c862c1f759c58edb8500dd01ceb9019e04fe4971cd28fdf7e81d94b2c48b79106ca5a85dad4aa830e7bfea182fc5360ae9317fc43dee308787a59bf6cf5d7a7cd8fddf6719267823f745b3c76c602ab8c6150262e13bc12321c912cfe88ff15ed5877c99c7465c1eecf6b252e6a3c5e8fbac39761cff8c17cf035ff5b7d4bc41727248518f97cae26efe1ac03beafbf6d1b4b759aa34cbf423c5cf92333f939310acac2af0a3998a2b6ff2ff6eba7fffac77efdb21d8687972dd3bdacd8240b53a3cc6a345f67b8f9d4ce3ad27031758fa9d466529189f47adfdd38226871c62df8ed637a609d81cbd659e7d75d56d3a6d90870f6e3e1a7034cbf7fdd592eb01b3020e07f5a26610826ea60224065a1fdc604d50d065433c1a0ac80f75eb62138e5721c1c8385b9aa1b58752c93c4197f7d30eee2f6ea78a69a7a7530a0ab1cb8662f5b6baa3655ae3effe23906cdc5d6be79128c8b0339e6408c39ef0c9ec47e65cc5e2c0d58a65d66b05d87beb1ca24d20d5bd2988281f9d2b224c416cca6ce03d418d3a21ae41c7c6101c098b7f4aff7e2377d88ce6fc64d8fcbaabad79d97e526ac1cb82ac301558a9ff69bf5cbcbf6597f1f9e26f78fd4667f654c0590897c93d8c831a0e5c8cac28096ecf320079dc25d80d384b70ee41a9d9215c3448c3b903dd94e653950c7c8143ead28f57377457e21ef420ea9aa08e104ef158a3255006d0c98a3228c1d04cce4937cb3252de405c34879c6c428c640cfc036c2190c42f037b5bae4880b0e404f2640eccb1a2e0d1ec63167ad067842fc89c2620e593574de6bd67968c6f5c6828f8d259e1b65f7329c3d4797b58323c95bca6b6b02c0a201750fd428b30095338a83dc74081bcd42b8938a943dffa001a4c668f949f90a471aae53af9f9f7e3c361e51f42f765644b76b21358b2fd8016099351a20c0430bf2be640790e1c5fca31edf19460220bb2180c394c4b9ebb309ee12aea3e3e7f377a8fd81816d81f72dedd785dc42b2abdd15caa8436cd7cbb8282aed9106b52c5330ae1ca9885800d760cb999b9b2f17d2715175172d718ce14624052b9882c7022e77a447ba4b94da7515b1d52443bfeca96b3b827c8f2d4766ac12ed5d926e6d41a1c93590e9a23d189471d42203c0b98c472867b71d650281d1b28e5abb00adb02c43ba6a386d90cbc443bbd624f4d5faf2e49dbad4da832addebaed3b2da8d33f054fc044c168a5061799221efbd022c127ae9090a131880620759e5efc0232bfb0abf0ad13b72cbf2473093f11538813c81fc196064dbb7645a788cf1cc97322d3c192fcfc6d79db5c04acc1d697fc248373e9f1cea7405825af5c9ac7bd9eebe0feb97918e72669dc91b2aba56ae2f0e85866da56192e84fac34722f0141e64a93fffe95461c749d2867792193b49f6497fa1999a5fd915b45736cb9bfe2282afcfa51cefaf15fdca691abbcade674c34e4eefa8398123a09a104ec607cabeabaae47391e5afca73bede85be741c119dcafbbf706888bfe47e61fbf9261eecf6abde3c3dbe3c3f0d93e8ffc750cfd721cc7981dfb428abd427ba6f14351e45e8e3e40d8e7228569b540782321c05b63d2b3b82054d42215b4e499ba6d33db2ff9302e55a05757165b77d39f218df80cc5fd991d1b80daa815ba11cb9fbe3d276cc450ea644edd98fac4571ed3a3640255503bc662a406d8689fd85cc656e3f0a3ee107ad140808c4a24d399320caad5e6f7fa629f57a9f5402f8dd131dce7bddea077e2158f273e9b6160a464ee02e359208d5fe28f36c1117dee9a7fdf6f1ab7e791a0764260be9b8fe07ed34bc02d91d41a284259e659594e10e7075a4bfb935c2d9c8083a797e6d09db73436d504dbd76db2abca543b2bc5e94bb0f08b11e34a27b4dce1521bec6664060c0a9aaecfe486e6cd2b21aafa2015f2daaeb804e6371521cbfa84866175bad925f5a40d156e764b2ea8c22b62513ce8862c79baac157db44a7eb3b84ed26d6e59f2c128924145a5d3964fb9b80805d51e8edc8a061975aa99f6bf427e47a0acb626a55208281227ffd4cc5303eb696208a7f4126b69f8032c00e4212bea18ee5a01104c207ed65b217082cd182687644e3d97f83d1a022a6cac27e981cd51fbc718306f90c988b60afe449b3a429c1ca53bc244b3836558d31980dee4b134341e9708022cee09ada2c8add03d77c124e812aa64b13275623390ce7a408fbd9a28069ccecd6dffff78e982aaf0127d60184509f4dcd51fe4de138d42b2e2319f50aba54eec84ce8ae93bdae772b674a1e1c09ac6a22ffe62af776154c49fb5642d9307416ead5f9205e2dd8165901c992cd5a4d2c0771c407d6b117c8aa617b8f330dc0be486253f09594a9aad614ff7a6f61c25bd8a96018a869d3b6057bb24500617fd0c5a4c12b772826d6d6a1cf0fdbbd5e7f6d0e6727c60b2ae042687c930d1a99e1b150ff14d0a474a490992058e2cf1ca570c5b1f14b8862db417be557d69f883e7c90c13fbccde01fc69a32b1c6ef8209999e6730d9a924dbccbe49c6a2694ba06eea6049ae972a56e55bede9f54437737c737fd2b8782a197a4d6bd44f32ecb30204bd3ded84cdd3e3ef0fdf7e3caf4fa4872ba08161031e76cf9a477084b2c0165a124d9d1b53aab3cb6a90590565f54cff1ce1c9e79d548f9d147a0b31c69feba7f853fd94a77eca2aaa3c99f867bd653bc4da6bd0a6c6d75d30d9eb6442e84d7553912dea2c4c381884f81d958e02820abd36d573b9a3241524968289713029991437203cc4ff8110381209803706efa3ac3ef262074ebd840fb361392db4aba271e160aa9d6bc1498d2da7af7c72682d83e9d84887a1e6e4e4cb03d87452e33a0044bfd1de65469a512ebb36c166f9d7ca5ee5f6679450f0a75d2be7b1addc071e931befc95c93c08a344aeae1cd1eca4ad85d1a2b026a04709f702fc2daf8eae4df492be24015adb806b15fab1f50d8650619cab8f3059a64147a441551589930d38272ddd5d56fc63a9b48364eb96be3a537ea8c46e9c19b0676e4ccfe4ee86facd8314ff7ba9568db8482646722aafc5067fe21a4df25b5fd062a279744f9a713feebf6f9e1b03daebc20fb73e74b2fc86d51f4b4044197cc8e630a7ccc3919ff7f63d94dd0227abdb78e96ee20cdf70031cd66727a0839e04b1b56149115899a6960383023835cb38bc52c367e8071e48c1353430c8dbd0cb6d8b44cc97f061b3be048f270da80c9ec8ff8f8b4d3c882d57aad1223e737c69be44871ed26749c3825ea8d65f8ff407fb51c27842d43517603a74f3542031484c1fb656d4fa3d34640b5c040f0076792dfcc7d8536176e8db19469cc5ce4f248954e69403ec7bc0a62111652b6d6f2d9c494e45f5b590a0ddbae11a8900b1d3fec93a967bbec891a44157fcdd4b00ea67ae8f1fa63daaa38561b9088d51d4b13cbc09a4131da1b495c231c87c13540e510a63dd2bb1f9aacc1d4d2fa1fc2c61c0262d1fde428f010517e6f20148d1ca5cd5752c0d34030ae0ea02ef432b4413ef3baa31820120e8da7c2517f80cc60acc5035f9135c9aed90b63f118c4fe10fa7720ab6aac1414c8e526c71bdb4a3d1adf7d6eac4fdc84586517e4dc7d23ef918fa81d2c870aa1f5c344b4ef5881e6587a06b77a542f458a3a12e08f35dbf22f7101bf142aa27716e01a99c8fc325468485a83bffc28ac467167cfb3877cc6fa9d8f2384d4ca1d097eac09e13072378da5be8880211942c640de1316c9e248d4b6b481c427de04e95446f65e773a32295a81d37188103a4844f30fc7ad9f0440b5ea365adb275f0ae040885f8abfec33b2feae896e3b8783e02fc6945e5e1e1ebfed5b99f8dba13500a851c63e1b4ebc86777c8439c0ba6bffef340beb70cefb3ad3b013fe397ec9aa9bb57771610f11fe429815a7f8c005cc85439dbad2f23f2367d4ee90e402ca876aceafcf39c7e0ea54be5564b8c86457d8f7ebe71388bff5c0f8d783ae7d30390d4ebbc55c19cde1ea8a7a7b4da09a8d0bd8880fc164b1edb56d8980b70baa4caccb4c6d7457d6a3fe79c740827abb6208534d1e569751ebfd25deb611736006e9910468df3f6c87af93047e3029652dab48515967e3bc3c5bd90f417e85509537a580e73a78a05682ab5a56564c9d927434212070e72a1245c1d53bab8ac98999382f3e5c8d4eb6b6f47a0f623d6737ce741d539d60ec435acc7701a431dc74c13d85047607764124e58bd7fc46359d2f2b1c8b57f6f49d53d7cde022f63799434eb1f960170e07ed17ee7005b3bc3ef041477296ec8246096a270bafcd7736984a0d2f1b4ca8ca2b1b9447882954d26e4182b598e29760d15c749bf9c0d55ff2360d87fee9fbf787c76f7a33152305904e980c1896d77621e61ae51e3279c34b0595d1cfc35e16919c7e60076231adbd0b302d1d78c10313adef141f3291ecbdca8bf07e49609fdeb801c7f0df7d92b114fb6cbc17bbd62d12af3fe5f13e3dece4164dd085c6863ce8a0c32562f097d03af398c1d7fbac1224fdf22abdde87f622acd2ebcea922c3b3e9397a6a291e5f9d4bc7fa4558d5beb417bd762b1c09f36558b732c28e5027ea386111aac964dfecb76a6a9a89e56565c306ac00ca14320ad6a4e567ae4946ccfd4acec51bbc5b0f83de3c3fedf79f46ea745546cbfea779a097a5d5048daec1cdfacfc4a220303a763f1fcc2d0c30fd3902285ee8c93dd83d3cfe6854abb206dcdc366e169e1d0ff97d383d62bddeadcf0c8bdba7bc86ab9e6deaef1592b716bd3c6cfe18f1c4f3cab2cb4c4fed433d3878c5a8c9a48a4647b4b922040ad521ead928b4639678fff8f4cfdf87f51fa39c964f41d5c1945ce55fdb93e176984089078b14794b515f8363615dc754545dd48335a90be2568128b62bde7429cacf8ced648e58989fd6d969f33f3d515c56129185958d27df70aa3b80113889e339db52d2ed479c02a048b7311dc5a5c49f003b88cd6088a9ab2a4b34026cbe90d9a2c897c0fe96e56bbc6036f5f37422990aa0fc2865e94c94cd78618fed90f5b9b726b295b2a495132387a4a8ad99cb685cf02a9952366c04687a9de972953b2517b1c82b69e5d58080da092e242f83c9d0a8985ad9811519118cdce5a538b0b1a4d5692be566b295d23eb4f4a291add7979594762eb0d6102a13dd18abac2a1a1fd22af7639f8386c749876bf4bc85dbe7ec499fb8d933c5253b5de5c569b78bdfd3b3db39a79e360feb41efb65f1fd66df58c4a56e39658b7acfcf177d6117be890c7b35e6543b3d1401545997a26427bd0c839bba6d113753050a1d0901c028eb50209ede4712687275b5521782c23fc0431576d5b7e1a2a55da911f403c538451a07a2b0ff528ff3991141148031f50a1b254b956b014ef4c50d990439aeccdf12dd3675768745c29362116574c42765d969d82e63acadc6a5cbe63e69211bb16aed35394ad09fc22686050d162ca5d30b4fa54324ed928866fdc58e4b1bd06ea1a1c23c619dba27c9774ec245947198a33b46f9f9e012e8900c6cc12b38042eada4f3a5dedfdc82fa159fb90a2fc1b574665e78837e89110c7ff8155d76937b3ea4ab35f775ed7ebca890fd780eeb27237bf71f3d8e2b0975ffab90ebff0734edce717bd1ebef7ebdfb62f0f9bf5d032cf7f5b8fba0ff56865e06bead1298175d1adf35c15e7b6631330ad50713e807e7c518d8b076bacd8f235c8d6164c4d2b9bfa683a77002eac8702fe0042676f4a405d58703a9812063228e7b2901512ea8a9d5dd8ced86556628af7d6143b988492a6d2cb5e8bdf47f9bd0bbde9dc604d07cd39bfa8a6e2651603d7cf778cfebadd6f3eb1bcb056aa9cdee8235757650a577ea09fde2b3d9899663fd7296a3e02706f819ce87aa079a527226f9f6c82e07ef6be77c60fa464f31e779cbfe11da5c6d9209b8071b8b1a4de6fd544af3b6f8ace88690613f3000940317c56dda2181f0ed684d207e93ab22d44b1957cedf32a8d29257446bbfd45e56b359f8faf189d0e37e18feffd5c953efef99f6b8f9cc9ffcdb5da76eaf6f57d70bd3bcea4ffcb3b5778ef66dc06d906fdced6736b9421d0f9cede739b3cf8ddd37fac2b1f7fecb6cfa7fbd63bcba2ffb955b18108985fa4a12566eccf77ec5b6be54cefb68bc09e659beadf8462c81a7978ef21af86b4882bd4c98996624ba99559e0bba0de6b4ac4e033e47d61c227177cc9f12e05328593a0d066f27c52ecb69a94d7ce848a82e53a918e420a0494f409f819796cd185024493df006f604d00322091a233358c65170da80bf6848e240ac80d48c8342d452a2b9f0a6576bec90e07b43292dcb3ed384de52100c35e7109d1d8ba36c99b34f96801eab24d7f8044f34443834012dbf8861aee065a90167a99d638b9189f8d2f86408700344390fbe965ec8af52c3ef569b8b2abe043747952a3aa48c626e900de7f0a2e2416c4d486534c48c66547a56c8a36faa633cde36a48014207599a00a561923e564a6f27e3c35a7a394f2493d20cf966a38d6c6a9cbe9aaeae4d8ea6c1f82c8754574dce59fe4dbf872ef786b8e82667024c4e6c44f4fe847732357d639251526e325199a031c67ab25106c268028f4a5c4de1b9c29ef9e1114cb9196159690493565e0c303450a40d6b6b3c8a7946d88c0cf14cfe4a5231527ad9044b1322895f9917d6af608704c78c215981c568f116f4953278a9f581095750344161e250f15166b329bc9c703d555ab772a6f4ce387b88c69699f5ebb829fde58bd8dad4e2e4df71a9628dffdfb2399d2c5f25e96a02464b6db34e9c6a60c08d2b5fac78b7b100896a7cbcb34e213e629bdc79674a42391209328b6bd4a1d938714753c498003b7120db6f2ca654a6ad91306753d528d4e3218e9e585f277eb9c7aa93659283f8d001ed14bc29518e055561a8e15a52233bcb90468650faa8058b81e2b114f9081ecc944e5631374acd06e2ca3d13d4993ff24068648a5a8f8cbb01c26f8951605e1ea47fa371710d49a469462325c280711336b30c0ac8f29f16c5d8b8c1600eb816f85495f4b6f25e005b6eca18c7b2ae79e9946041470bcd9dc8ca48563134210647611659a502e66ff6146caa2030c514208148712ca8821e12e8766da18c7e4199d59e6b04363344e0e867654b7447d3178682334e1412253b3c5e398aa27b3bc918b57533162e4d041b558275c107ed8fd21bc00834957550f43a6e07e43f39322c133ede7886a33e02c80193f347507953724a44f359f459c34c80489a574005e8a447c1120b9d5d74bf2512af0b804cbb896ed74221d5632b95550e7b0608540136e7f208a839b07c4d52ae501f31beeec0969c8dc7a6478c84a3ca7a08e40f6acce3b9090023b8e488e520042465d3c583a9ae973deee04d29e2a5f9157db70ec8684f666122e59d4c092e75df878797c6f5b51fa3eeb6fb9f6768ad640203c59b67af24ecffd8dbecde240aa228e36648a2e6926aee63c792d3c685ff455dd13b96dc868c102324e5cacfb35b2c51375517f9101701fc98a8cee5a4920502803f27067702264be38266387ee692cfeec3870b8bbaaabd7f875f1691c6ffefc70897f87ba8d54044d698e9f62febcd1fdbafa7f4989dbaae749b110df6bd5f21e769bb1955dbd2eb6b5ec3d79dd357d428a7b0f713b88d5f4532eb2d324e955eefa3ba26799a9521f1ab0c659139d51439de25aa041420ef549fdc74f0a06b317317eae23a7f872e7e593781cb6e40013a30acd1141d1414da5534655994f5c6832ac9a6c1541dc982020eb2a84d197bf0596f77df5ffe7d148cb476d0112b46094bd0279928677099828c76c0799610b5b449e14c0e60ff1aa8088ed4ac1d70bad7fb00f8b0376e30b16a6f925b7ae8550f1e1b7df4cba2e463086735d6ab8026b47a72247df1c3d26c9ee998ed32b6dff56febcd1fff9cf2fe0e55744d1996b67b72c6f923c534082cddea0ab935a7bd7345db33d35dc6952150fa3c1e59a2470d2de7c59a72fef267f3dcb3b8a0936945ae8f837633ead8b977d75ac43355b037a31cb36032820e3e727ffe722292e926fcfef47cd6a9f3331e1010d45578130f8d3f3ecbbf2910f431b9644a5404b851093b73e39023579c2b2b7b0577bb1e0bb39dba7f21c849ae628edaf56a8c5d4bb7bc71dce7873fb62ffdf3d38f6f8d5b5ae545617d082c9b4ae15e4be97dfa16be49264064c553cd536cb130028269d9d16e473948a61842b30e510b0313835a2691c26ed9ed617ffa802386b4a1d36b698e561ae1a179bc387097c1492e4f4d00398da2a962b67967207e1fc5bba8e219bacdb9764c6a8a0dd5312e119afa28d4eba1378bfa19cf8baebc588b2bcf5f8a2c2d8efc95c729609af6424208859a339486c42f23c646a0779c9349fc74f47228c5e12b5a0489b8c81ca358ab55cc9f0239370719e40851871c6fef21d9c82ee2a2dca700ed8f0c38ac83311be09365783f9072f54e7ac43b03a8d3e45611c29c5ae403d2bc24f668023a4d888396646912722c3cf6e47ca1494cbc5801324153bdc48631124211ea4075c5d02c4fc7b05b607d0abcb8b120715421977f0bf123d7de24100196c920f315aabd1b8c8880221ec802389303dd54aafb22b856db728b5fbae67f624083901a25a932c63d8272093a84811226452cb1a41a4b4c034187088350d12c84fca969919bd468569aebd32613b46750e634a315b7bf9cbeff1eb6239aaf31018fb8d63f69bea511d4bab2e175674dd0c04164154d1ed9b99610764aabaed70630356b4d751ba8fad808c255794eecf5688ad3a6787902c6bbd384cc4b7fca1a538b46269eb724faa6882a77c18ad10e41795351d09e95e74aed00716896c83fd7df75fff4fcf0faf4f8d282d41dac84a5e9a2ca8bee603a2746a08c83bea264aad13dbb3a0715b2268be94f4cdb4f71f5133d472102842ef2693c888c3d6f048496e25de486153d9fcc47a430d01b2c68a980df4048d50dac1770aca6954d67114cf043e3ca9ebdca60bc2a66c4fbf90b2ca03839735e0fbffb0ecdb757d6bf397ca1622f8fc7ce3b6c9f8f79f1aa3ae8af2cab325d5875200549bdbc9391b88c2b2bc30eb5e074b64fb207aead212c4f3a0dea210dfc1e15b834fe56b9f66abaadca4e18c02980377fa3b3c972b30730cfb2f350c03d0f88b3a0eb8d33bc1fa746d17110e3e1a2f370036ec51e792f3e9a4261bbe7a741d35d86dc524b378f36d8bf77bf3d0d7af3f0bc1946624b6f3a7b2106a24e5e6adb9dfd74c2895aa792e92c51ae1f62dc9d3393661838df2f4000ac76e6cd2b15cc93867f7d58ef9e1e27cbb3883d3f2ad7357d314480ec30ee615ec75660bfd12d5fc1606ea0354265ac9421df1c4c106fbe95c87b15154b8e3647a5e14421aa64a2ddcbbeef135f60660dfcc9891a4d4588120159305019d74e3a8abdb4f6351038e560904e70ed4a4e2f9f9184c9eec66af4678cd6832eb7eef2cbf3c3faf1dbb0d55f9ffef9384a6c8476afcf06c8f5d95593d98a88a1581382980f4350a5e74d410daddc9444dec6fd0c2c3ee8720a8b0fe7b0f8d9a6fef83eaa2316d214a6417b5911cb540c966992465e034e17f767249271918d1df4d858926104165e51ad0c5bfeed9b8bc86a8bbbfa269f1880c47859838cd82abf766accee38ed7ad971c3c97b40499a58d2104d804849b0eee47350a3babaaca688931f4cb0c74f353e53ddd202495a4cade5f3c9b15596b3adfcebce9b50c43aecc81d05ae503025720971a696a2ce3f1949e46aa189f0b2fe63abd747754ab9f73702a3418737e29c8db936a8702c8a95d94321c76c81dadfccaea24187d9cda111eb0635f77150e975175418a24c40314473c5d0b8dd3e134d0489878a2a0ff29b5c7544c467e69727226e91b0cf6501f227abf00bc2a4184aff7a68747458c293efc5e85b3669fa0e48d18e86b132b5acb028a0429019bf2e185bb1f7379a9083a937d82c0e32d96ff25d1cb491b5b3161d0c0e7c07845881692f2b7596a7454bfd794f0d7aec6a03bddfbc30a5dc01e5896c776246219a54f7f06d03b8716ae8c136221eaa831c3812e58d961382e0000d388e57200ec0f623f3d1dd254a6c7560399516a6b104f048cd71c59b0c0617ded1aec9e1157263522c3a1a3f3d930113b9269a05d4a10f03c951ac43f337cc1242ad53d62cd0052938df01ac16a5981a5eefad55b6ebddaac8160d8a3f85970b7f00a648c7019104f18bef9884f1c65605b54905d646463628b62fde24f3f93e2f3d6a07bad4ec0f02b91116b798665d1a790a38d7b7ff7ad1fdc3b77e98f44eaab21db43df2ea635470e5008165c48c56332ad8fbcb38b2cfe4e3b28cc3176dc608832779a93c2eae4b0dcfd8fc6cf7ce3736ad5037936e139b8d373623d8c02c48790791e4344a325d6f0fa1d72830fd4099a74ce57e126db71714600706b6d291092c6cce10e6cd963db277dd27f11010950c63c9920349f9f422f2455189954e79fc28afcae98bd8b76acf4f2ffd191f453449d96ed0c6cff391a5b7f8c89817732de74c7a853d801891e82424c2ee52934648068a570af22933d8f008c60669c5e98d0be7dc69413c69dc5c773c0c6f6eece56658b1698b29834926a17a1dcc10de84850d07b7a824d500641d6c13a0cd4e26f1637fd06e31f2459ad3ec42eba738db4fedb69e314658b1da7b718232d0a02e9db8a7885d241757e2f08897d79ca93411992f2e49cfdb494f0833bcf7cb2a2ed32a2eb28cd083c5b38768392e454670c0105895d317717c51546a95c07d7efdf48f4f8d02a2fb8f5240f89102629600e25dfe87975e0f0ffb635cff2f988848ceb5fc8075a753f1f455e42bb6e1c7eeb7fdd1e476ca2dba439e5945ae82faaf3b54604bc7960d73f9a555898ea1d616056dbe0642bc62f38e640a58ede3918f00f3d582530ae5b5629002c7853d01474fda54e259c60876a4e7848307da545d93258ff47a9c29d488059ea1e03b40f79117a76bd8bfae0526711404f5fa5169dbf3d3d09e132ee4ae181f4d15230c71c2d0788665ff81764dab8fcd503f91bf1c326e54048f55c614226380a6f0ae40b20cf8272801cb9c042904c58a7817b523c691b2d91d3961187787a2f618d3ec465966c4973149c81d02208ea363144800016897b223122e8f4d91ee163b227806f14e7ab9f5c3d8c95deb64db42088d7cc2b25f3d9498d9be48285e69971a28968bee3c1d92a36b1559be9a5c2390420712ca39b54b378c9a6e22ee7a3c1325a15ba3c63621ca0183cdb7cb3b5ec59b27009a32341821ae1cb76a74f3a0356edb799d6ef7983e3f6703bb6cec91232e31d81338aa6fe82ca425aa3debec12195805551c2646ce0ca1b33d0931fa5a4d2d7785a3aea27a0e1ab9a0c70ff5903696c3b513e79abc21493e02630d14f615c13f96e35c064a65eea663eea6f3231e2b4fc32c8011fe38a1e4ca2241553223db04e4342324358c53753a08a0431885e3e41ea77d6ea3ad2d071a6bc771ccb5c503ac738ee8563fae3238ba9fe9ecd77b8758f2dc5a371ba77879d8fcd1a2f37e3ed6971a3f1cb413b57fa7fa559ccef701834597b99076a0d0ee2769d4794ccea6a36ce54494bb1ff52b21ad3a92ea1e35d40af82ee6ab1cfee76b7a5f1e76dbff0c25b0d5c98499eceafe5237f727d14355e591e0522e6e7878dceaf5f3767d9ed9079f4895599ba10a6a928a206745d0ee0ed2085156e6649c57e24ac65964c301a806afc44f5c59db5bb7824cfcdfa314727651bfad9f4faea9cce3593e040cbad46a7add45350711baf26e667101972ee1ebcefd3d589d0f618b2e1312e7f7707bd83ebeecc71b08a4516f0fb0ee82ea167e7a9975b930f82f6895f727a6e499abf07a1f40333af7db9190c82b13c595bffca9b8ff6ee421251db07260f198d8395676916e7f6c2fdda206a6f8b82f731f9bcf493af1a68e99f822a8b048671fa5938f7aed4f3febb51f3fd4b65d5a6f57f9bc57f07005c4598144c26bbf2c64decb573c12976b5fd2e956b4afad15c74de40ea8ab602ca4ce8a0a2aaa70910e5b3ad4e0fde513fbe5e111e5cad994a2ec5e0783c507d136554cdd98ce92b0d8813f1d4a82b5e20f073ece4e5add794d7ec50eb43f081955b94e9b150fdd9e70cea726ae13af09b0e634bbed221e30196c9ccb4bd8de76f32ab7f990fab4ca83d361e107a7822c0adddb6475ee16ef2e46cbcbf3fae1b1652e6ce8b51dac720bf19c9d2c03ad6c7d9c05eece2a08784278a1a86e9fe575568e5d753a795e77f2931e8e1d4272f755e53eacfca21ec2eb4e2715f12103749d8ef8cc53d3e0e579fdb81fd62f0d0d8a5c45782b57e1b908a496ab48e7b98ad493d217c4506307fac64068c5f0f45989fb454205abaa0aef44dc16d74be635aeec36b910171b9407a188459c4278f3c9924d15755e62dbdf05f946342eaaa08258c2b254906dc95b933c85f02841e90620fcf3d29aa0aabce4462c16aaaaf0ca6b93a5b99c5acaa0ac8b94791546bfb363f6cd9115000cdbca9a0adef60aa9cb31039409ba774d7ca2111a9e9de00d76a765419d7520279ac9b0cb623f62103d444c22134f1fc92185d7fb8a23baa585e25a509652336e211fb401d658884892056236eb6f8aa89838b720cd80a36dd79b0fe8b6e862a2ba9d4c486fcfed04daa5ffd8af1d841cafccce392c26251bae17b970d0d7ab1cfa66bb1d7364a6c4bcb288c00663835f5a65fde04d296009094bafea004ac7605ccdcba8e2e035e4fe9be325ef5af996b6f895fc48b6423fe8447239ee9acfdbc7af0f8fdf4e72b94c115db41b1b9d9c4b07e3af29b99041488a51b46e2c0c590563a5698679421071d80327a6970d88a18c0465a8f95cb1af40c939e6830fc8fe2a776819748fd2b8c244b2b1764f8c6444d883a75a162306ba937961221212f6a635798dd62db378dfe9ce4df10fd82bb70e2d5e8334a79a5c142653196f0896e0029e3403807654657f71370b93cfaeb17e7a8f7d20266e03b2595cae3c36b130ecf29e40b1cfba01d0666b72196f68c00dad6351ab9d4ba82e2d221476750924d8bf93c9f8f4f2cfa7b33a196c6a80977c88d0edaa670edace8838a0a1b2d9bd5d37836cf36126d7fc7e89cefe9a3caefe1d97f1e9bffef1e3f1ebf659acd9e66084cd854037adc874ee4584c98da28c8d575e7be5f7d4c6d15efb777e7626abfada940463cfa84363089a3689b64758bb999239c755ff4c66ebc7e3d727b9900039b7f768058fec81bbac336a8b9681bcc8f6a78b8bbcf27764ad4671516071519c090ff8773076282e4a0b6b199ceb148515146ef0a841a43cd21fd25d398dfd152645f5709454fff4e3f1dbf3d38feffae9b7ffde6e5ec6591155bc03263122cd8d4c4981da5dccd4db139f466599c5c1ab2c1fca7a02957a4a7956d5ddd98ec7a83c869882a09ecff852fbf7c5a6761859760cc44071208b4295d6ca3f1e9ffef9a80fdbfe618c5fc9c1c14996e3413705c3ae54d3c1beccb26e2137d3ebdc3411202d66ba64c5e483428d183d15a9e986e4c9d97435a252cf89899bfb60e26a446789d5d8a122b1699430aa0825e44e07d3f96442e74efe32b12bc646ee89d2c100b3268694c55aac625be69816a614d9f54261316e3101867431d5d7bdf1b2ddf9da5ef7c6e7b494015288a6f0c124f03b5b13bcf478a3324d514cee705c1dbddc664cf8de76cd14c677fccc77bc89bdf626c78bdaf58c5a59b03547dc60b72a24a0b45676e70e64c3c607535c5a3b533a9936e58888ad8039d5825a8306892b8041206c1b42e49f260464d74b94db07cc84f5c621069e9cb1b206a66c7c0ada54974cf209de8238b83c83a9c9afbd89e0ba96c711e46ac1771fe071985cc43d05890358b7655a232520a67229a643c143f5c6bac0533b701974c958907387601c2a686325fc5df62e86efb3f1a1b01639b126d93b62b40af22772b0ec8c2d281076399a90f0547c950e360ef1746f4d40f9be4d26c6b8b626416721c530510af868828c08f0a44d6f87e88c478a586e99434543a27469f22650b13482a22da6f1fef8124cc27a2b5bb05c924c8de8b1ba965257a9b7268578d0247340814621dd6090c50cf5d1b618ebd0bfa4fb968bf058338bb1095e4b9166cb8d8b26a232b1f8b503a68c8f23df452ec88ce40defb87cdfc656892ccf35c7cfb2b481a3384c98e971148208a9ebb2425679957bf2befe781c9e5aa8deb63df4a8a6af4611fd83eff58c457ac944dddb19b4e84cf5a13f684f252fee3ddaed4746bdab9aac53766bb1d951ec3eaafcebc06bf8ce484245d9c8061b6313d6969b231deb972832cb26863b674a94f598dc2289b82790a9b6059945f5484505b0efb5e761fc7bfc1e09453cb8ed641a5770fc9521c88fc58adc5854af48133a19aa8ad8a3b06453d9fae7edfe69386c1b7de9d1804132b74262ccb8b44e26249548404b006035a16c4ca4ae42e78c437a49beac6eef7bf7307f2b82114ce96ea6e276cfaa158fd1d6aae7330bdba166a9db2fd691d101ef8eb8796d721d1a6907d9fd751bf64c3acb7e94d3da6433ad8428f76f49414cc9caafe6a24d6e9555639952c4dd477b46f4f006e0142c5ccd176f876cf9738a3db40c62fd8ca060a449dd0adcee70873c606c00a495fd28b2a9e2089948d405a8441993d31f69ccd48ecc56b06228b011c311355c4a43a5cb3a0dd30e63ab12b1e6997a65857c437f051c37d476cb98e12373cb08b66d240511d718817cc9489bfcf8fe75fdb26d94e7dd1a455a78e02dc7e008d761be2fc77a992b83f956ec73e1655205932052d73c3da78a721ba6954e12481448b59a4ac3a6581d5404502c79de14578dcf6295fa7c9d95baa4db3e89d86e3a54dfa8938c97d882d27799594dde4002299ab00332de08b016051529d4e18e15ba9b0ec9c1b374997f9bcc175423918ecf5fc777370f9db59676e18fefc3d3faebafe4ffbc2a9b395531579762b4063b956ecec77213957238bcaf2d777b02cdf5dadf815cc09366203be55551fe4cbf46ecff399ee14621fd63bf7d66909d9bd567f903a277759cd3c4b46659d22c2465615774e0ee817e07662856d79029ecc19a2b506104c26fe1842703b5f62e40fdb500e60482267907e851072915efd6c9c4e2151f5b333c84b220f741b50f3905b8373091c125ef1037cd6476b25ee66af68a8f5debca4299433046754496382aab10dd0ad616c0b140d86e58f127b65332b90223e48cdd33c94f425a630772786c085f602da945055f6071ea39941653685d4ce7659c7793d28eb44e8fad6321167947b094a10452ae1eba752c0a74674b99e75e31bd886490824e0dbf58f819a5635c3a63e1a70ee6c8f544ca158b2f7a9ec6f2c82ef0cd3c91426562d62089d6f9235d15bf8f4140c617f2bccbf743e672ce7b8311a539a4d82ea03a087b29d87b8209567b59ed305871a20ce6a20e1e9e78e03268e16088b31d64937308ad63c752acb64dc024b372b809c9a16656b69240c21c1471a275a9018bf894099991ad44f6529828541f67b4e9b290d41e052709d921840f37afeac66a454493675c0145b189cb06ad57e28b123b2560b4894f50c45191b332b86b5b096c202b4fa6bab2f5632970630d4374adcac2d4b4b9208e132a6e0c25dcc55ea8907cc2579363e5ab032d5371f25e28d2f72598da2481b0f5068e049e4d2626be482c9ae57376074845d9422e1d701a6593c80d06627194c626328fd0a97016b09a501af68db732b73b4941bd76dba78d284c3fa3769c7454606d0250de406461fa5bb43c30e1912371f2e8ff14b908876c38624c8d6234a21e551eb91e07536541f1303e0febe787f56faca4f5724a0f3aa7905b3d6feb246509ddcf7e2019d98665be2152a4c4320880e19859f25d64544a0701068352a87827eb54a2659ae94e1793c9619d810cf414daadc83ab573b90d475f0d28501f7b5a8c0216cccad20292ed20132718b4cb121e856c6a92db92834cb4d75d36d12aee5ae4c842c13fe64974488ba5c4d2faca3581cce25ccb622b626e35d93221c40f462210e5884eb77b91da988f3234b05754b29231721639a11cb35d2856008218c83f8fad05c665a59831dea08ce24454e858546e9930f281291e840b00f4ccad8dbc5bedbb9cb8402a3751c90689216e3471ca3962f002055b8ac3ea219666018d205d51b857eb04193a86f318dac8d2e1900a8ba4e802191923861dedda2e11fc377235862ca32985718a05e95adb263825d8b17c6339245c2d67707a393f72740544e08165bde61e44d14073510094f3ad743637f7c08d55607c46ad36e8af0a7142612afb7324b47281a5f2d282ae80d5c08bef453d520f7b2235ae015c6239f25192dc816b98c3704e91d4921e9b470113310ac32b8e536939dacafafd4804a395d3445079259a2241eea413ef186c06745d4824517978eeee72ca9cc7329c905f7760519391363085ea6041d438aeade07b60ad12418bc8c802ac2d9396bbb1748834bd700d50848f06073826859a11fdb3900124859b5c6e968dcf421cc77837c066089b3606230b83da01c14e9139b1c9015a40956f6549f3da8f59965aa957c967ae13192c05da93f6b942558a29b8b108fb08c99ad898d35c2aee6d09ae994cd5bd53333a5b37e5ca6684d467d4b5ae73c237d33fbb309b0dbd51f03d9b239dbb5927dc9273a7f8a966de3b5032fe523377e5977b6d17d40cb7cfcff5dad9ddfafab07f797ef8edc754886995bb0d2aba26b23865da06dbc16da8c76dc8d23d7dd94bf6a24bd7bfbeafe5b7c02c3a3c7cdd3e8de8ccb952b38f60aa664a27eea3b2761587a4bc4e0dca7b781a7eec4eaa9fab9ae7d95e62018b1fc11542a16e90256bcc70511df3ff67ef6f7adb489aae41f8af24aef593898cfcce17781786365cd0ab06b419cc824db15dbabb6819a2ccbe6f0de6bf0fe24456b1c82a5194edbeaec633035bfcaeaaacfc8c8c38718e1be80d6e48f2f0880e99107accdd905ebce395cda9c8cb0535f3879c84960bcf5a55e6366f7ce8274779606b24373128e88207f82490f9113dd4030475cf4bc0b45a9efef86310437aa35ab254cb42fbff0dd53229590bd4732595f406036dd35e5deadbef95ee8d68329ffaa8c96e97191bf609f64d0550030bac739faaa9055c15250e2e88a03297da2a49fc4f80a34551218d26977e3c7adb9c1eb52d92419ada259d55330f09dc06d03465134127d06380783598e8eeaa749a50145949b725c8bea4ebfd662b6a2e55f2509c9812ad8ba8b7face7abc2cb7d55f9bfecf86cb2b02aa196025a7dd9f80187a495fc2f2efa54d61b5c1590bf1d32d445f335b52f2bf8c6df806f6c79b00514136cd0b2a57b1590f28dda72933ad8a80efb71e329c60a08216cfa8787e0586978daf2aada2490ef9b802f56a027dd9f186045c25d0495365f9cca34740e05e204e20ed06c4184cac010a0290993794849133c7bb2256135f01c8b902dac7a530c856c28c5ef6b5243b989a7b007c05b7173cc6c835a5698cbcbf36cf5f1fbf7ed187c72f03ba081b356f4627bace9adc39078797749c28a934f144c0114d1c1ddb1aa1f0f1b8818023cad6389a1913c37cbe57033748929d0935805a92ebd285b81fdec6ce1d63bbb797ddf31fd0d59be0e8af31fb4fa04d93b55407b5209a31b70a6e615679dd673d53ad7b076c3c3b45d0cb947df388db2db9875672c07f35e0f9afc7872fbb9701c24bc8d515c95bafe24ab4792342e2b45dd27a927f73452d07d58c0fc0530826e3ed077c8eca77e99e56f188cbd93b23fc4178ba7e2daf2876c8af8d2d2d54aa41fffefde565b4ecfca4f646ec62b99cf86e51827fdd9372c7d491bb8f2b5c3fcc0e3a8cbf3e5d6d320b006ff96f386652197f3c3dbdec9e07b955bb903cb2c4c9364f2e7b935217490964878c057feff85d9996a1db6d1efede32dc27b9e8deea3a1401f6e95fcfbbafdb6e986cbdf226f71accaf70700ac350e6ffce14bf2618539437d158c801f3a3b853021fde92632b6266fc38c493a0d1e7d3ba91dc47e0492424190bdcbd30488270fa8d3271aadda2385b9de40eb321154dce9a1fb6f02124c093c978afa268ac93c81e00d3d65c6a20d2603ba2480f787d7adaeb471908595c79b52e50579d4b7d2f80776f94e45c24a93ae76885d30f899b90b34c5ceda96c92a941e161301589b43799f737de94ace1bacdfcef0099677ea7e485e2175c4d40963b00e645b83949989c3fe2cf85b847487aca480dd4143505892d1ef9ad9698bd8e63a4fe202f54e43f3544a5c7907e8386a1c29fbebf8c784ed4f88f8aaa763a01bff9bf797dbd3ce93f1e5f865dd2bf952a7e2d286870327bf5262df967523385a4fbeb5d7d81f972ce071ed4fb34f034f2c0b7382dfd380f3cdbef208d5e048dbeeed93a58c43817253cf28d19e0239ac3c252524c94fc7e55842206695997bb4db52c320200675aa249bf3e552d408b972c324d8b58e55b65881772b48407f59d8976e6ddb92ea295f41bd9dba541f913f89308f90867f264699165ecd728c09055c46bcdfffdbf0effffff6bf3f0d09859ec5d00cd09e0c57841f610da0e7af8afdb079aec6fbc4371723e0b23b9fc583678d4b5d3e1bae674b8ae391d669e8de90217aee26f30a96d1e1e1aae5ff7bb3f64620b30ca7f62e95c95798aeee11da6c9898bf233d5653185392ffc9cb47bc9eaca8a8a8829d823a5d77d52b6d3f1de7591df5e54c3f3488185fef2b336c43b35717d5678dd574d4bd3f30f56c5e7b12670e77b22655765ac98a1269e9ffed2bf3fbdbc3ceda51e7e71739014a274948e64655293e649c78832869fadf5f7ecc6ab147d67f5f0f234b81ecbf5a9b5bcdb13ae321ebc53a43d395d7e7d231c75945adf5b9d8636688cb25c032f4f7af3fcf2f8c766fb32b085d2928ffe706d2774a12cbc442777f3f19f49a57968e1cc9679a71a17630cb7973fe9c06df9b76d4beed3d57e346d993f9efa61a30a748abd4f2b67478fccc45f504dadc8f5a8f5ae62b5e5b5d73b554cf2513cc5b564457625dab7559df90721ec7ba4951dee7bdcd077fc5d3e1962231e6f5d21cfee57545f3fb7b30f37666aad0d6661055a3304c8a6ce5dfe9544d6f905147c5a266361db70012a39010dae8389b9b26943a6967ac525d105532b1c009bc7e76ffd4672b69c1d7cac2797d308af1e88d6a915a804c50f6b87c6f47d16099714d601186bbfa21ebe8f805d7418924428f7c035f0c39a7fc8960b69c074aac972569c7f0bec80cfa2b490053412c48fb4e91fbf7cd5dbddd7c1731217e273d30e3ecbff9d0e9ff82a6ea86b34a5ef8fb1ab83e83a3f2ac85bdd42e4ede600e51e53e5d5e3df23616d95fa5fdf0f2f8f7ffccfc939f733b552d01b7fbc58bc4ebe3777bd738277e7debff5f853bd8ea626a9fc4e7fbc5ea910adfe994609ef37caf5be167eaeaf7d26f8857ff80e4e753ab15baba27c7ddff04e84ff57f475dbe9f936f846679238677f6eac84778861aff5ba53b5ee775f5fce6c61a7282de83dcd423e8b1402976198d77d7ed71cb9de7dc272716ee1739f7bb12f6efba40f325d5da8aabab8af59bc63b75a20cc592a4cba5e0d6e4e38bc40539396e409167e777dff70510d93c9cabe6f7f5fc71711295a94f49a051466c1c8e39cba02ec54379d6d0130b32c8576baedb3f9640959f5b13bd7801d2d7090fde09ddbc579f797dcf9b0e52b2adc346c96e4df969a9ea7b4b79159efcd68daab70d3a4725371ceef78049b4dc77956bed36921dfaba2f015a3fb1680545adcdc2e60723ebae75fe8183c33d5f9dab2dce69baf5f9f5e362f8f4f2d0b3440e430509f4d8a1a0fae25aa78bc5559723125b5c683a68d171218e7498cf3d48c7352b76d1f90de4967e795843f3229bd7ee6a5b4349daaeadfd2a9bac50b908dcd4da7aac8c2d10761fb0428be201dbfaef90b54ceb76ffde376ac1d6fa2aabcf3bece11d4e97a8d91886d48d7bdcb34d4e978f52c307116a182b35562a122667b7771872450db513a12bde276c977f9fd92e6ab253dafc8438339c6c5b2cf9cec4b6263cb651ff9a7c9b6b2db9f2f3bdacabf7f96ab1c54bfb0c5edd252e73b77efe5cedfe2e65f86236f9e4f6ecec91a5f966844c630178f8e6062bdeed5bd8573eb6ccfcd730e39e33522facb51c379a1272b745e0a396513ebda0bc6f17a62e91a37c543e0ead67c7e17f37a9814f3c44b95d49481866bd2f835db42d1a44bd2c9299fa6370942a3fcb745aab6130d79a020fc35f180044d1903057fbedc6122569074ba142b5042ab33bf8969cfa82b9e30d705e2643f40662382070b12386a1e234d6a81c1f25c320eb6e40d5b6edcc7a4b340bc441474dee6c96cfd0238e8fa1e89eb483106bfdc5258fa4a9c1cad717b9c7c724f2f4fdf26ed9311244c82de0ea4c2ea2abbeca21ef5b58c036e7a9c5ef1a53e1256be28f2d9b8bdeef7ef30861d2e9a1607f1448a8f12e4a4ee670bc9e13d94b5946d60434b907204db5c5a187587d3181ebaf48250c88942f14c28042215e1be192c6642b0d3ec3413fa60409b7e367c071add30803ffd545de47413874b554baa26abca458db2c4cce690f4d61cc2ad9d545d79137a1ede1e655a9a36dad47531c3f55a3cb167b573186728d0444c6f315dbbc5b53788cb42d95b8bd8f807355ab802ae69b44c6bf14c5e12e4838bf37732e9be558ff2974d76f57ede6a8fc33bf577f516d7d0323f8e75a4fd1bebc69b6d3e6b95c3f50a5433f197cde165f7fc78f8b34db5d1b1c540b961a6dd9a08f967b64f6ce4075155c0579f4ccd666466a4aa66db366dc0c9efb388403b3eaf3e9d5815e3aeeed7b2716bd7988e63e33ce7cb3ac77fedc2ee2d3ec7649c49c984628a1f0e5e17c82ad95ef3ede0bce359a73733a719560679a95ec4a8a3d3ad9244c6946be99e2ef9c9a7fbc16c5c0f125ca146401d6c9146892c6e543d1e67b871e80523a54fd208253568f3fde569bf7979dc6ae141398c1880257807a4f2904f4f458bfe884ec6b9fbb733bd169c72d7a384c6a63b3289948756978066acf0e00282720e5279277400518a00ee058a22ea8f8503592090e008fe53352555258f236866eefc39f3f5da965d045619e15932314070784dd994a08a099fb2a909c2df69942b8c58d3dc3d5d47c07c8453a6d35c6b5b870fb8d6402cc1c69abc02e6365f33f0a13dfa8b9518b2ce6fdbf4bf6f1ebeecdaba5b838a267b1850e221486ee867a2b65fb94aad3729de519044d69c305a007d4477b0aa08e0361415313c459fae6693e29a0430c97bcb9c54d35c8e5941550eb9d37c993be02a21d7ce7da0b10af05466d9e094ec2064d12a677ce66957355e811a4d48dcbb4c059bba82dc1a74af40f81c35f2aea27108812ae21514a94948d245ce7fd0ed64400a0724c06beeb5f08ae862bc60327fdf7c9d2a73fc3c9a2b9efb6717c2c5a74dd05b9933bf6fbefea937dbedd3f7af8303d540d1160944e80677542050c8559a0d14270a8f065b54e8a148e3ca5692859cec933352e8a18d4310f6430a440cc0d90e19d936e10008e74bca32f4d6f905f1fc154d863ebece2023135eeb969dd532d841b547772683c15b541a01a8859b313b51d8f74e5845c0542102fce40cef86a4ab0af816c4b6dc637803ca7d31961e0291ced8200c79d909104052f6e5e0ce64873e2663dc0dfaf0d6f57287654bdca522a4a00cc0e6111c1d0d24cc75e5f1a936b54701519b6c96a2cbcb29f14a2e066c3c09bfc1a847efa5b4a05bd90ab15811e12c321994151e58e21ecafe5b180a0e095c48e322e3ee2b52eb50afa269086200f02038910ab12769b7ace18cfb8d82092af3fc980fa40cb8cf07623af442135f3f67ee84d1943311722935e865261f2ab9b22f5b27858f3c3c73d60dad4d58de03980162818610eeb30aef6082ac1038d47c9553258821f1f875c2b0a285e3ac4d68cfdba7879da475f3a4563a77d41456e94801092290d608ab8af73a29db7ee0e5033f7e60f1018dbfe8b4939f84e124109208502608470ae387af7b1dd5e43dff88cbd66fbefef9fffb3f7890f64fdb3f770ffadbeef930a4df10d729455391461440c321534f63344167003be5a888a44703ce099f4188c24a807915d3782e8d5f8a9ae4fc289b056b4514a123985ffc89a6230419efa5f1e480cac78b605e727764792081e0a198eaa01020afb09a0a214e1442a5d23407404a9185a3a75679ce150b5a2a3231fb46774026e4f126fc901a5a405c2ffcf515a7246add1e1cb0c2d420d98a148ebc568c7c1a21822d23545384f1c95750d178e34c01b1958fdc71b333c98b261b0f725cc73425c2963328d2ddc6fa46f68f6cd1ec44dd1eac36e0f051832eaed49d25a1d903f705998ac506b418f5ce73478d09e41660f6f14e5169f9888aaad07929070e38e56c0751fd0316759e0391159b4043dbe66127fc2d39b2899fb533815e3f5380498c148482f9d87a25c907fc0a8908e00fc4bbdf1ce86e125f567818c1c208810f1e26f8114c2fcc593e6a9ef4acd35e095bb2a932cb39ec7f0344c925c503d2ffd809716348fbbeee7146b63e843c16ec2722986f7c0f1bdb8ba87de5c663abd4b424239e3cc19be1d910f6c82fc6787bea1f9a66815775cbd72c60fa49c8618a77145550e49583ac9772587ba7bbb3e6163fe9332613b70eee80c00b251e833802a184c6758b7c658f6952c50e8c9bb0044c441f0183e76f48a32872ddb2caf7f175cfe7a9ab7cd4be0b8b071db4bcd6edbddce313367b7e3110e3eeed4210f175cf460d4f67a56fe98cfcc37ce4ae35f7b22e7ab0f9bafbcdf39f32d15e8bd07a36e646589ee7292ef3b291f86fb0c611b1eaa1a2c80f5beef21ea9fadc56c6d5a3e69d4e5cd8c62429ce7f375ba780b53ab1095dab9634ea3b4a2271a2a0a1c7974c4a6a86df9deb9f203d5a7b05ad8d3b083a1b6c4812ef26acca8392d13b01afed1b5a1b44ca7581d777a7c28ae8debd7e0e2639e556f51856ce24d73b1d4ec1b701aa2c625b57b937e611ee73b4ceefcf8fbb3fb69bc3ae45d663a7c38258d7823bdf2f058d62178e9a3a778400b3bc088b5122aeee7cefbb7444362854a73534a4567c8a959d232ce6757ae4e60c47b993ef8f6d7057e1203729afa1b8994da1bead2031890026b2ff230f7f501f2421a0432a1688fe9cc89cb657b0b74dc8226a082e8c5a34bcd6c9804a908da1b206cb61322ef688bcf2c2cdcb28d661d8301e23b884bed1056d5b7ebab089b71739287b981dd18cbc12b6724a18d9f28c03840ec80b4750097d2bebf2affb26ac18aa2abc69220b82b80c5a0fa76483068233939396cfb583972163786d37fdf67bbf79797a6e1195a5696529107c4b3c4cf202e224633e5cbe1b88ca832aab7af6d5c5bbc90fd1c552e78e09788d09ddb99c127907a1ddddeeebc3e679888f5e97e09d8488cec57b5f3fffc4b17bf2ef6aaef955befef54c8abaa1454e9a6be942122e9c4bc2a12df2ca237be70889e6b8f2d0f90ebc3d8dab72f655997cc54373f21dcf2cf2256a78bf7bdeb44d72d98ad160b588204065625043e07fa3208296aff9dfebbe42c70d4e080fb215573f991a13ff0dee22df221a0bc95f88312e8ac9cf03a6c140a8c18966a9c2ecc06b7da9ca1d3c48e8307394aadd8ae65c430bfc50dc73dd7d920e98b80e7e301174bb79debd9c45376f51d7428c0f2483092470830b95203239523e1398dbd85866d3cff87c00bd232fd9491b9f077daba8d389279acd5bb65b03b8d1f829f949514f3132610168d47d893b71f2c68513334752f144cce11c229c3e633646810ee0e7c8f266bc8376941e04b0284839e4ecb7a191a4a893d85880a7b3addc5104c17dd650dc1a4aabe320dc99c5e90412e5a078ff7c0ba39812ea6e6c7249a80dc350c3ede4725360deab22a61c5b3126c53e092983a5a9b5130e6f0d051b08aa1e095b0acb0b6542eac5410b01a096063f3546eb188d5d2508c562100648501dbe8b3240083508ef64d2673d63d7f7fae5e9af01edc5066d31de6d51df5e34b44b63def3ee02cc7418f93250a164e05dc46ae7dd3a8209bb9884ad4686231ede962afc8c2e1d682057946538f975816789ad75e77b90fa0514478ecf01aba6815685701267ae022ce3ebb1f4af9fc9c233e557d5d8d49b2aac09a682883fbc7e865a135993fdd40216a2030f6ea388cdffb0db77458b60b425b67e03b64da5695637b7c0c0951b10a2115fba964d20f25baa38f45404c13b32a41304f683416f71bcff2443ca299ee532e40ac854de6e29de5a4751e6f158538c93f37b5933b01909dab83b02752d57ab0a08aee42d2422412dc6178797369962f8ecc138938c93081aba3fef094187890d2169b91064841c046b92ec0ac0343bf8c0091b62de003b436cc4d8a2635341d77ca317d52c7b449e05b7247e266a9ebbc682cf858f329171470fe2a66b02d3c1a1ded8d634b0e5f4505654fa295008da0a14f08ee723e50d292a0a54be05be4ca7f94ae0d4524d15c96b93b8fe701c578d89269862a4360dc8a2136aba70a572dd390b8a3587cab6c0d171a7d1d1f06639e864905ab4ed365fbfec0e0d474269f536514d8748cd32eb8d70ef2d66bd4764bd5f8ffd0b78e547d2e2bdf67749567368932253dbce92e29738d8adf22abeee335f3736a1a61b62265ebf1579d10d992242e0736b761a3caa305648002fb3647322b5048b1a92cd5bc33dbf34eab99189e72ab6bc0063a98376c83cbef190a4fc31be7ea6ac32aa7126cdbc9473603256f324cb63410c404924a062ef30900f396cdbae62785051d614554c86124e8467f8286b2b3675161f25a1e4b854b8cb86e42e7e5ae12eabfa1302773cc60370926f0d8339fc53daf965cc755e002bcf2dd428c22f99e7961bf80dc13b74e3566c2e637ba3d54cc7650d3400add61993695a80451d3514585dcb561424c8b6db1d9f9fbeeadf37db3fffda3c3f08261ee7b07d340e3cb8f5832038d1bba8d773a167de9d335203211cc26c2258c95ba7b1752bfcd9dd4dcdf86566c935780010136e777d3d260ce4e1bbf35bd26989a222a97456bc3f9e9ec7ba27af96e0f6b7972c421fba359c54dfc7a07ac355ee6738ebc37be915c30d8d7b919fed49bf164eb9d435267b117f3364f2e72bf947f090439127103e82652905c6cec3f3ce03b6af2b939dc7d902fe76353588a1555c533f36fe30cf22583f89d5c716aa8f43a43e5e04eae3244e3f275d69a09cd42857d284712535c295d4f856504fb8bcbec4270789c32e8d7d12c69aeb2c2d40694a9ddb454e9b059ea813a74d50e18609e30d411f2efaeb7f92c66656ad276f0382296c74d62b4c4e5787781079e29b867850cbaab0c310cf03627a468f759e671575fda754e564068aa71928e8851b9df184d5eb19c0790439c18ff7c1392ae8f0a139ea1fd5418749f23f48fd842991ebb8cdcce13433f38056613633bfddbba5d1ab083bcf609687690258a0fed4e21fda0036c9c4ede3295f2e28ba23008a0474c3167e3ce093a0644ec32885f7cb6b63dd1d808cc067425b5111c453af513d6cbd29595995a515b2e69a9f893922c364417ff27a69289e8a4361288fff1505e2aaea779bafb273b4ebd8f4806b2d2aaada3b159583a3994cad715d21d71c01a4254863840af816f80cab1a5e15def73adb9389fcadcd6b6715c55e7b8949db76e9c76fbf3f6d9e1f9ad538dbf174dae4b2818c140dc4d8567b13c2f2eec775f97ef0bc28d76977f4ab78bf98fdb990813797655fcc42d8f64fdf1f2632f640ac013de2915d69c31d21de17406b0d767cafaa02d54a45dca2bdc0ded9c641c78d0c854f9eefd38f378b500528d9a12a32f4928ee806e9679414e643ffb4791825e4af95994e65b60a234522da5e240ebd4ab795d92e94d964c46935940280f06a4a91c28235c04310e5d1fe70d2bd3ebaad29a581371ad5bca9e58e32f771424f77d8fca40a4fd756e291d3fad86b27c95d6f184f093e9aab4e1ade49af257b27ceada7ac285eb39e6e76272d594f5ed1b44945167110c91673ce0d78196066c6258d9f97fc5fef4cd2245eba6bc07638161ae0eaa3d3b4d7fef53fd917a139ed1bcab0985240bf0a679e33150262fc28909380e00b37e0c0216fa2e3ff05182ee97e98a8858713f393f4c7e0deea8f3c918ce8c3e59ddac4b884b67c15b45415312af1aa7cd0b674b27d54f12a6569820f2ea4a196489b1a4df65c140a4d3db80ac42e37fdab99db0c3abe02db4264818f0f9ac256bce45554f8b27034e74be5d3d77d1e9446df35245b568fab9a1ff0ea6f361331129f1e761ae8cc7f9d20320b24f43f4737b22c34730baa688eadf95cdadcf52625995427d7f71d5ce804ebc763875ef07c68553190012f350d4d66126438d2a9895ef73cd462593614cfd4549116d51a150fe733ae68a62e5ebc0d9cc97e155b3219230701830e1b3419885f5a13960ed8d226ed1c92e05145eb4293f1bde8ff5da0d25a6f845e88a067e8e2078d68a16fe25e00609200e64b90801ce2644ba8b505712d67bc1704117433834c643e9b58d6c003948da9d9f1df787d9f945d4b3b9a043c5b0606db670160f32fd6de54954c7202870d02ef2d8304a55fa432997546d42034ce92f15ea0727cf45afcb671567988cf017984575b89a989e6379e5177adeab710dd44b014bff7a8b5591862818403b506581505a82d0283eb21c189384d06c6de0335508b48be70b5f54dadcea791df8e9f206eca9f821c0332266e2b727d1e4884520d0e2b4bc88fba807d0323f3b03b18edf4c3b04de0bf7111d3f2823f6bf351df6fbe1d767ad34b362488a58b4cf2377879af47b1ac08c8dfec597eddcbe2279cfd379a25ef78f546b7aefa21b71e3c8c4355814878f33f03adfc2fe6e9f8cc9d69e5ee7d27a902bc5d49e3bbaa6ca7cbbdef4a43fb6f9ff6fbddd797ab05998d327f5c5eeadb8a6632d2c9967ade4279c5b1781ecc390caa3da378c908250335f1dff97ba9946f9be7c7836ce293ba6dee9953ca2f8c33f23a754b8283379c6e517ec6773adefb0e722b6999a9ef86732f9001f3e9164d801f2b6958e07bfd28415655147eb0f2966eb0d5de513b54dfdeeafaa34db3d0d2ad696ad7c46cd0a90e03bd8d98d0c8b9f022fe5c4de8913ca00a143c91c3c1eb15f1df68a314c76bf9a027ed45febaf24c679b9cf4202d8d8c9283e87549924b5843f33639550134ba38bb6a67974babb12c5b49a6e3439aa0335cc0c9c4b0ce80efd82e9a423c557be076e46e9f7787c3eee17f63c47b4664f1df10d5b8be400ef1172e90c4e7b64f5fff787cdecb522c89a457c96d6e4fd2bd5e12a7f25962306fa544129bad136f721464534cfceca4cd031f7ff2fc1e266ee24d863b501e07cbdb149d8d454a36e44a12efd9b387a547065b679ab8ab6ff45b6f5b720c0a9eb9d3219527c2d9884496d6afbf1e9efa213381ea92ced48c00fad40d47c1aa61759fe4c572c74a2b7724ea28dd27a0711758a3a7fa0e6fef2d80b0798ffdb92ac2c641929b66ce1f52011a0c2a74d7a4f056d7a8a35b9dbd3c6f0e2fa78d0e199724831b558d2c8100093c24a7f730916bf8e1ad0eef4b2a4f232942379f24db37f3d9b3366581b26f69afd38a9993c0fc32b28e89b7153fb4d5296dabd39b924dc998e54415bdb6cd40a98a2f70d3aa8bc2b1019abda465400c5aa1fe5a05fce06ea7d5fe16aae192f06112708bc9941b373c52ba9c1a5290373ab835bec7de94c2f77fcb76a75c6e779042c20707487b67d97c96aaa5e26eddece4ebd0f6d33cfaf2fcd4371e22b29dcec7dce5a3ce2049e0b7a9cbf7fef573551eb9b95dba17ce43ff37c84188f440db483cef1e1e5ff47644be700996fa4de7ec02dee433afb53794a6aca0c296b8eb4fe8f21aebdc61a4aabba0ca3b11d71d06a63a119f0cca7277b9761af7ee69b8659e9f9a2d450d241378ea0e3f00b702606360e7d2e1fa06730dbe07e245c52bfa012aafe122eac405f6117cd670bbad0efec20ec5a9d207e51477dea0a20ada695279e5d78e27f0c23b6cc16f4b20b23d0bd8d8410eebea0ff65494bd7e0a36e13a0a47b7f2472df6eef7df65993415d1db50a8cf3c7107b0d0789e641c45530a9e151997a3b2fc1b0b4a046cfdab242a0fa778ddf3c29c4d2aeb0ad88bb1251eab7185ebdc139c3dd41236b5219e7a6d0abdce2613a8844afa44c609aa9e46c317ac1d311f419b010bb17a6343c10c4410fd0bf9750f374d51766b6c298652e2ef8ce7d5d9b3399c8e72bc32011c03219bc2eb5ac204cd1333caa1500e36d94334d6f126a092b1c8b0f0850b7cd4b8a7be180f06a4eadaa8fffefb4e6f1e1e4ef4b36e336909093c4e3ed24e5948876ecedaab73f734f9c429cbfb1fb677a0bc1c7c5ca8fb9b5a0f8b4576f4c91b8b5c6a7e1c234959363d0589e65cc39ef862af7be3a9f23afac9ab71c054958f995be517d6a713e1e394ebeb67e24653d1503af5a5f46feb4b636b3eeff64fc7dd90615213f0fec5bd51819dc9f967db064ca1bfbc6ed7144d0e2a43cde43f5bb7808176e97264a4f341d09ae0f9b87bd0cf9baf5f7613a56302d3a737d6f54ec87572d882798084f98ff7b9d88b786c687be1002013b7609451cee4a0010a4770b1f0bec41baa3d595e880b52b590a2573440faaa18ae652135069350d28d1ec856ae9675058d8ba5ad0e26296f62d0897f5078d72fc10e6b22ad9da2686278479318c661193756f60d03e0822973fbfda50181dd417876b0523bf1ce22cd58b59c9518d6fcb3d73d787b4eb9f7c6662e30ffc078de867842667e96d822fefac0974f268296876f3be7bb0857833304420328fd07c8195fc3b44c9cd55c1d0981bf96d82c0458bd132aae94953381af05920a37508cf0708ced8590f6b84617159437950b81e082c53bb91a5e05d514e8257f5af345aa0ef078960f7930c9711dc28b69c512ae49438dbe263eb4148dc920b52710fdd4c4e72845412d3f8967f36173e846d84bba2a8273ea03e7deda6b92118bc720a6fb76b79aa47f4e28d3ac8eff29e059d21fbf455d54dc9e09011f8606447ea6d74e17fe3b68a73276a23f782934e2cbe6f7468fe090e86ae8184d40017cbb2b6722b4f0e3a188b830829ff7d1d05672ec415a132421b16aa09c3476925623232567cd47d6d77d51a66ea526d5f46407a955b6dcdb2308aa342efb5b34090e30e489a286d2cdc53cf27cf6d17272cdecfaddcbaeb958af211b4e467f0bf1de66f44736fa7f20c83f5c449d50023f62f4f7633c7a193ca1a34eff3904e9c3ae7f19b2e7edda2a673b67d738efe7aa52cf33f6caaf6b4bdf78d83d3f1e774d52b2495a839eb3d360d001a51435ce9ceaa46b39f8bb0af8a02278ce00f3608b12aa69f064900732c7e37fe4f5c646407d94b101bc4a246e4d17372605a17c8463965c33df2922930a4e362161e29f6743098955a9117326505185aa8d3b20b192902589a58657181eb88d4dd58bbb8b845003a1da1a5bba71f36e081556895cd7709182544bdc3320d5e2be0fee283ea30fa06ca820dbe2f22237157c55c190ebc1b69573d77c981e514b24c379905409495d059391307621190229b4816fc264d0ba5a5891882cf82801066098466e2f6d2c12f54159c5776e9dbcc906a69dfc52dee0d103db024eb0d8302ea037145f3c812a4ad6dcf6ec2292f18350ba56ae6392a238e90dce37cc0f21b0e113966f0cd16042e6f297c48fa9c9b52721ad42b38484c0bc27a00dc05fe790302c49cd2988a103c3dcf2f023ea4d01b754676aead186390bff7eb730a38380df75f948a9d3f9a8ddaaced582e78eab2547500198d89b50c1e3ea0a0f04ee03ce24c2fd3a241bc22b4875f0b364e42e73250bf71dc4e8c5ed086bc81377176eee20a60f92f88b49a0394b554053494bfd4a5a237798308094105d72d2e95d8bb4c7a0e567956de480ca8c952d5c53c15a43684590ade14b87bb75c602d1c59d88c79e2d0740f38a8920d63ca3c4e59f13ca0dff90177ec228b03e279d3480ca36fa83206af835d701c81bd0af84082e79e96b864622b61cc105e7c0c809ee3364b4c323ba497c99249327268f4ada8133d80d89d9361a1705ddc5f7e2258d33ca1742aa0056e56af80ae016ac42e681009c3305c33c04a4ae661eda707f3ab94d5f300345872548324d1db2cb79a4f29380c85ab02b60fad9b43b187695d26e024ff5f25686591642878820a593e23b2f9d944b603317c0918904e205fe0537613288e8f1cd05dc29373821efdc56dcbdab985a62c516e26cc46d659036a774323180b54d9697c39f2f4fdfaea9edce0615b75faf4d54fe1dadb76bda131d77549c462f3a98df70d8fad1612ba0bd87c7cd97e7cd5ebf3cef76e31ed31e23188042a7d3113c4161e58f6145471d27bb552e45be8f9d3b862e4f3f57228f97cedc4070fb4e7c40a46845d3f708879f9f7ea090bc7e9a3347d21be7d1e5fdf3acea7ba7f95c3f7e96339fd69054f9f0f8bcdbbe3c4ed32a9d050760af9d55c24ba0a3ce17bf3ee51539b0fbcaef7556917faef0f387c7c3e6f7b354bd1f37bd3e3be17281ed3531b7d820c0de324693bcb0339854d71ed37730f55336d58236dabad19f4796cd76ec32f970b6d430c5818414c753e275381a5a381eda84db596416b7fcb4fd3e02862431a2d30b92650ba18e798e43125cd49e37c49d26ba775d3ac62e8e43a65d4c3f7ddb7d6d7a6357b2778e7a9681785545bd7340df192fc2111fb3e945a71fe944affba8292e29ef242cfcc33dadd2519b9cd601d46cd5b8ad419e3e1bb1bc6b2f57eae8ac3a0edde6b9cd2141f017c672f13d01d19032aff800a66777df22475c083254b66259392c5042344904fe801e94e00eec2eb298d7c6a91cb1ece197eb9b85cee7b7528546a900f42e26a21faca6abd3b36b14151ea0ec0fb61315a1fdb8928ebdc81df9f0d4f703db9a8919ec3310eeca62c1b3e958417133fa938258186cd7f3a6857f9505bf8b0032d869f98b2c41ada4c5b54802d801132aecb32804b438b5f0a6c6460f080e88ac611894f683c4964d200d1b3e9026f138c0f44ab0ce4abb8604d97d8245c7667116d040c65612ee62276c130136924d461e7323ff616380372110668b6c285612d2219b4075dd79e3e12cae822ef6d8b820c40df21ba1a74ae054c5d682e43e42946a02bd101863b962d8622d241b27dbea466c136d96b4021643f88da5cbfa93a507562f3690bd1036e3aab5c0379004d06c2b586a82f0e52252cfe58bcd5611d7852d424668c80bcf0f2ac783d5d099d408c05135aeb05deebda9203432d1e48a2a847f4350313918defb491df394840f9df1e500730befa3984901ccbfa5194a95efc9156e90e0d9920d7261de8a05b01a37c26fc20ed839e9af153bace2c12e1fd03fb3d055db2abb6c4995c85e3ab995bd5cc9c2874c4dccc04bd74bdcb7d8dc2f43d35a002ed2ca6fb92055688c12043f1c5f10b88266ffd1404c9c409e06772bf6290a1b810aee638c6912624ce3169284e6fc2147c82e6cd168165b669b814b208f4d1018fdb91a4252b0fd4bc4d046c502e20e5fb646a60bb8c144bcd057d1047415bb60ec95d19db0e32053da72f9d2ac83b441ee4fb34f8a9abcd3a54defdf7fef775ad8d22e247aca3f93946e4fa4d2ed0474bc600a031d39a1a0a3252595bf8383eeac72cf947ba2aab7b2c2bd4d584727c23a2439d10d84757742c51741c527f184cb5514d221ee1fc09438cb919ad6e9254d0cd0ff480efc35f0fff231f8ff674aaabe4d53f30132989fa4a9a94bb534ee42e23f8adca5950668f97f4891a65097cb5a9cb03e50e3c09ce7cabdafdd37f8f5bd307eff3a1e9ad77d3cd5c93f910de7a23e1bdf435044cbdc79087efc28ab0deae093a935f3df507aabfce228452f5a18515cb8d77d1a4eba70bee551ffef4bee7978fafea5fbfafd650a2448b295462a2b72871317e7a09bfc01bf9317fcc5fd477d089d0eaf7b98dbd405a42f57fe2e20041fd9788c4e112963e37d30f4094235d19cd0d4d15492896ac8d5ff35bc1fd093229a33d48c9d73c8c2d2ada5f49bf9b6349914ea39d7d088333e9ca0d580a03704faa8145bc781a4171a93d494d0f05f0fcf9b2fbadb7c7de877978658365172f98b909a47117a11b984049d215ecd233fc153efbd9232abc2af89e45b89d6c53be243922225c7f297bfe1b38ad06865a3808f9393e27409dfa4d7bd45fc7ea920d40ae2a420a1152448417c2b886b05a1a8dd16e711119d34ea37fc4645ae487cf504ee357c9de42e929414df56e8c9b8e5121dda49a77fd30be9f6dbe1ef751f010af925a7d26475bc4b52d3ed0e7003bfb5f2a3f8aa4a4dcbdb76df596afacdc2fc46adb1485a8b5a730d9da03518498b5df6ad333b1497faa952bedd1f3ed631df3b8f5c9bb82cd40a436369c6ae01afd89bfd4afaa05c1fe9d4d265874ec96f5a6f9564237fd70648526dc8b8a13c725b7c57eda64ef724458164d92feb4d6fd6ce0f9c4abf55ac0ff7ab87e7cd5f83c42f7f2c694e3000b089f1bd7600688307181169fccf6ba09a7a6d92896b3e386ff95ba81579458d2718c02c81b61c4660d2085ee26b85a648aa698d5b70bde63b5a072e4fdc1a625bc644934dea33325824c887b8f7a50c2b48110615d128caab7b523381ec616d99c99fc637155ecf4efda6b0f503b0092f8ffb5d0b010827356a3509ab74f3dde1450702f05e0b8d75047e2c68097542148b44148b84cb4f138068818d0e89cc1df855689ff0f3560292f0344453d210ff8fb80877f1bc224377466072caaa2c71531452c14d0107065a0f653481b7a13e984a92639f902eaec41f19bc72261ca3f1f0a914a121871f096844b862603469934476903f3d72f7edc8997234c52f1f79981f2497d12695a6e3983352b49d0928a33695b8c0db3162cf262c0db2731038a36442166d4ee8ac51da0a58c12178eb6be3c8eeaa495bc47aa1e006553ce32b0e53c36142acdd88e393f175e50d94b99c6c8cb948d8d30039f1ba3735a99663340cdfe9f83e4cc6f2f02c0802bcdc367a9274ae94b4273a5b68de3f635e9a6806d5a587efdffac7ed6604442d33e4cec443694ea3bce0f9e18303c422c81dc961b62f4b31108718087ed469bcbd4dbb69f7f008df99e4a93931ea0af7d2e255e60184072710dce2f1165f209656fa205962f0d21536be735df3177010b8091e3582090a3e6d007993b821d5e972243190143f39632d52a16c3a6df401addcfdd76efbd236516e41530673711c31410ed09289972c9f7b943cc6ae35e040b1ca378752d0924439f5fce5890282002a5c948e1c05db74e152726a99efe57d5d9ca52c6abef5af0f4fcf93545fafaaf1654d90f1c926dd4793649188020f2960e2829bb817ef818857f26bdeaa098a388e5b65a8f28972adef054d8bb5a0b4d301a4a1e590be494faea249886409e3526c8eed6212ad11d3f406c028c07a90a95764d2769818938397f9e88c4d6b435955d3f438e112c946bc64890ea2ee296f7a53a137eb701cc0f51180ab28cc63b6f4240e6feb869f2233d6f3b439fc86ef954cad4d5f097e3c784370115cca8920a5688b2640ab7aa9978e2b698bdb56a868e7d55083fd58c9425543db568738450a43a31c35999ac75f972d42455c411955692137cba6b5e04c78971705892add70bed73bedcccf377c5e34f3ecdcc131d9f6f5d01110cd7b5a4cd1a2c11b22cc5400b3c5b6e3932e7adcf54fdf3015f28ed6d291c854ea13df133face5e3d73d1553510d7e45c68ad3d07275e0f36c2a763a860adbe849d8054d75f77c748f53a96892473e8d039dd716d106128012779f688837bf8262422c9090358dc5ad549d60de19ef3bcaa6941e1fc843d30929d8b3ef9e3787dd739351cfa40a624300f5f1230115892597db277a1d4d761b5353e6bf93274ad9b5b0a93984cb7c852985d05294453ff68147179f16799c3c05c6ae1a97b7c60ab4d28bd8073fbeadfd564d483d8c1e1b3bae3004f82080ed8b2e2615e8b63ade51d4d0ebc0065414cc3f322212f1ba1b55144955c4139234f1f37353fefa69ef0538e0a7a25d7e55ef43e78e52ebdf9f9f849e1bdabd6ca52076895c150f40658b37e671188a4ca843c6633014e08e47902e9b34845e3cdbb099ed349830489bd70dac2866bbd32d5625e136883d7b99019d645520c5560b9e2a418805ead82d5e8c0892838c289b4c08c06953ab0941b82580227382bb2e4e4314110722722772b80e0623d820d0b1d9cc72a65c976a6f93ac0542960dadd2c2ccaac16d3d582abc09eebd1379da027dc6d74e985dab0450ad138d6fa08551d09471071238950863bbb95c4d2d62f5dacaabbdd4461c18a900aa554205109290c9f159a2e639d935dc6443ba4a5cd9264c86164339081a70db567541c5ba111c9b9a4270488a7f18030f17c10103f50a611c2fad2d9d4b30188245f5d0dc0de2dde59a9438ae16b51fbf9aafdcd331c81b066c0f03384404c0e9b480be8d14d3575c3e96052984f373d5d0202549ec76d9e7b822784f6018a18c0ee4838bc29f41c697233cfbbbff16e117496688aa6c1c52c5070e0dabe4dde413cd96b2e5b6f486e2c6841af9afe57599cc9b5a78f4fd2a9a78f2090f29c48796766c62974d86c90730b0b45669d056ec0878549e5dc1b6e1ec63cf1b5fe122ac821c9544211f0fc2c5e286711b7b11a61127c94df7f7397391aa2997b7a778179b8572a4a0f8a3bf7e4ca23e9cd2a6b5892bfe6d4fa229c93b71e9a302eb1c24932f6e512c34141c96b215d82f45a914be7d983dd055415d880dfcafdd7f6ffbef0f3bfdfcf497b8bf95bf9e54b6b0259988817eb68aaec97504105dfe2063f310f352f07a7c9c7a7d1d5a6472603b59885970b9f8d46bd7224d46180d17433c6c7a68c9a37f4bf828bfad7bb42755afd6e6fbd97dffdafdf7b7cdd78791c62da8fa6634c8ff5c34a8917ad389d4fb1437bf291654b191716fc77913a4145b186246cdc33de71a35cf4f867e05c0b8fbef6f4f228d14555eaec9da34a9ae7092a3a67f2871a89710836daa5452cf62e3ccea39aab8702b51e5d73d05b54078ed57eea8afe698ce3d0b0b62b9cb5228bbffd9e9a73ffe18f0b7d5d4746c904121be023756ae81ff86b6735096dbcae9202d2efe338060f92183600b1cbe6ee34d4d49c9a34088f935524d4ff2dec8471113cb855ee8ae09d917b1e581da28867213b275c4f67f4b5302070c9bd0e2bf722476036fcabd1810401ff1fa5e44c01362ddceb369267914b07a4da84844c87123d431e3ec823b3e0e35d26ac7df93e5cf101a0c89cde7203b38eecd49ec52bea6bb847568c9a495b40be4005119c9c6d6c45677485b413846ae577e011676c043dd8657c2a2e4515ac5c3d56991cd47909797ad72d05ed4f049ac4a5382081cb355efbcc2fcebbc705a4a864eca8059b90c43c36521212743c8d16912792444330073455ea01c214302165fa2359065d1506a34679f06c8b88cdc39f0088b2eb2390a2c5d2a03411a977ca87387e49c9479386f9ba3c7b5a8bb9866ae4deabcb1e73d1ec9fe1fe6262c48d7007b16164916ddbf810eb611b67a2dbe2ac9ba16405d2edc733398a7e555cbeee0fdad50962752a04d422551390db1af83768fbf95ae33702f5d621b9f0037824ae0d91d83b09b73095c2d6ae9ea3a65f9eb95915fd8ea77fe6ce483383a4887aec07022a704ae7387c2b08980e941007d7e20df163c3292cc60cf51b38d8927890c4eef5cc649a224a40fa860accdedb1e520f06e2a8b9bb0f22cd0c009bc31b74e4581a960afc0438b1b74f43f3aec04795458a79ab516334f5cd8a260540435a6e138b1b8a38c8aa40783db95c14f4f8e8745695e78402e29cb43a3bb0fa41a57412c2a1acc8602569d4c6248888f97931850e13c89214913a30e9e21e5f946308905d95f2ecc6249f2fce4342eb7d65b9ac5b6cdc9d93e91279ed62a660a63e3968c6d72e47c6a8ca882b4fed6967538de41c89268cb2b141c2d394b742667394a12a38884860b6fe42a9335694844a01611aa25c0270c38b01db8148ab1e4b8ef56490ab7a2526a51bbb5ca8fd3667e20bed5f8168474c41dbfca077af2e5f5b191f9ef7c6c38e19630051e3d8f3a8a1400cac620409a6d8a003ddb00128b04baecacb96ba063c6b229a616a7e4f134c123c36c98e131c1179302618a9739de6392e70d8dc3340f170925f4ea34ebd6a1b67e8d64d06a7c6c2f72f6ad7307f46e8c15f46fa01d28c13b85de9d80d50e36a093a3976778e6b0fa5a4172db6a5c2674f5625c2174f6345bb2d1dda1909ab16a57b80252e52eefb07003e94c091d3fbdd9f3238d5d3f57be231401edf3f622defa1a854f01336598383d93b114d0d136f32fbda9956bd812a937be556f7cab27dfa2f3ffb139bc9ccb1c5211fcd6983458253797c6d0c49a489539f7d8d231eb6ab8555cafcb091f4bcdedae485509fe933dc07890e57cc4bc9633cc6b461ab72cfc158f9726679f4c50c1949b8f7943b00f9572263f5807416e2f791aa278cc651dc235e50c3a8c5c2fc9e07143a46741bf70edc0f8e2863bbe73e3914e0e744bc7cd0851d5909929febb88a490060206b46a66b35f3b4295296c1868e98adbe5118cbbe65afa63278121003be26dde1d13af26048dfa33a3febc7a6bf7b4e509aa648d648fccff5e3f7b65af9dbcb45d5254c964c7cff4f6f9ef9c5519f6556333f542a370b5f8275ff3c425fde6151ab29c8742f22a422b18bd6fb77bd087efbf1fb6cf8fbfefa4037ea0923f7be5b62415e9919c22e11bde6158f83ec4e9e8235bddbc85ba4ba6262e489435f77a3d8a8f8e4d8104cd02b1741bf0525936248b0ea0176e11352f79690d91311d6d67c7234945e8fad8fc82acb62bbaf1719efd4e8ba7054584979b4dc3aaa6686411a3ed0783ad82caee6afff8a9ceb727cfc6a93389a7afe2e06497897fc0b1701d64c9e2a34f04132e9811b05914e5377d05b8601284844e7c21b6e87435a98a2ef6dfdd29ff78ecf76d22749d8e47bf4af7cb3a2233e7403c6adf95a3bf894efc7300cbfd5984e6e2dd7d9dbe49d3375ede90556595ee73578e48420d48c53e9d63fe76724e7e97cedec959a5125e86a89ca2d59c86f7b4cf81d66fa07b9aab89dc201173df844633e9d8766f92ba013606f9d162e6869450ffb9db7d1ba4b96681fdd535ffd83a362dbd65607563bdd1fe8d7243662f70b9c35be54656f05ba25951dc7b23ebdaa5404b93adbae6e09bb0287f5c51b42af2d38aec1f0f2fffdc8ad4f3c4a22e5f253c98bbfb5ef745e5a52f0eb79d934749f899e327b53d654cfc27d6b733951479137b10d21182341f4ca469be9a76381eae26919cff5e2dff5e9dfffef4d36bbf1700061b00f83d26b87e03d5a245b1ed6baeecb919cd93e787d9d6e07b294736d4b65ef6f68154110abf1478f0db7bfec91d0153930df0b3bc895211c7b6bbd8ef1a8f41724ed96deb012001b4d8b886ccd722ebef28199f82e2bd69e255b802570312006fcb56022220224b0e19165e47534a66ebb082cb850d01de69460f0f27a2f7e5ae089c5740befc24b87aeca62d58ce1c5c7d51c37a33a900d2096b258201d429300b3ab8bc5cd2c590f33a73df4cbc6dd52881a9053046f881109a842c7ff0c144f2c8454c26a5cc5bca84fc5cdee4b69a69d575e804905793623bf07a87711a0b1fbc91f9340ab5b0435e999709089b0a76f0c5a049df4efd96037299fbde9e723c3e131be8efa2107fabc829a98a66744dc87598b34d5c0dbfcde2e8af7b0a3cdb5e1b00f3a3ce95982b1f7d2301e6547d756f55fa10076504698549d73326972bfebc57a0fa6901297a59c953668f0545191d789b4d8dae7321edebedc2b4c22e76a3a914fbbffee89fbe7dfb1ffdf078f8739441efb43fc6cedfb7243f2512f25efb59465a52b6d374ccab787f2369c69c803d2ce736be8290beaefc519799dc849bc94d94e16efed2bf3f6fbe6ebb813d24385e106bf49b73f54a5226621ab021aa8bafb48900c6dab226a499a54cf7c4330cca1a8ab135f3f49650d854782c231f1d2e7f30e28960415276235205c3455df12655c05b054e18103ce0220e5e76e37232a99a1a23ff0d9fa66a5cf61d20f57c4c26fe1bbf2d40200a995e6a8fb64146c804ca67520ea4c091e16ae74cb6aee76d95875734a3a6a43ec60a89987e9d09fe8c690954dbc9909b1fc24b44e2232ca878528acaf7d81606dcfab9b2c4780328bfe0c67c9c96dfc5f37a4c153101df4740f2c44183a934d46c2c6a992b922b37f0dfd800197bd3a1faa39b55a5ab5c185461698f43f82310a25917454727a8f7c178e721c38c3059f2a73eb9fbdafc67709a535da82f59e3b632d59db4e8f82779a14542f36f2e7cc327a2740682c4aa6412b97536a9445e893337412cfc776a82645cc1c4e5937814109ca4f60a239fbba7370458a7630b856d3d1b7a8731c0c6825b895e53f41263ce49007d78516b3a208a5579c9964f5c974dca69cd57e7f539953c1f13407f1551def4c984587453ff08f2c2658182235e2a77d20763e143b10e202ec46d115f4d11cd6ce3a98dfac7afbbcd734b5d2787fd7fad79c5a5bc33c1d7f6017c087273cd198af2a0147eb825df0543a1c0692d91b461dc6593a353b6f326e7b486c28287d2d3862d2b5857e32d47bee52c97c812e9b396e0f5a63688b89d4f63a218cff76c6104222b2927fcb9eaa1ed58bd49c5cf069fcc4a1e14e7164ae870699d267bcc3fbc59c89386ade098f6ed55ade79d83b70d68b40a787326c87f964e7b934b9ed78ce69a11534c1ae479777cdc09cc0a0c34d5582b3102dc9e1db54a2da251694b821cf08d5c0581cd5284633ef2449710b3f531a0287c8bd9d48b2e56696cd2c4f641e5658a9ff8d6a48365be43ae2f4c40810b03a99ed3c9789e0f62954ee2c2982ab8019c08a1511bdda6069edac2a9a6b957b8b1a685a303a5c8f3cb8c350c722b573b08bfc4cdaca2e0ab8b0a96b25afe161085422b6f7ca86835a858d932bb2cf717d9c1b442579e9e0b2fa295ff868f336149a735fa3959936afd745e2b32a02ccdefadf51e30ccf3c385362c2993ad34dcb60d481423a4c0cf8ae60dcca55ef3dd496fe24e512f7bdc9905e161167a13402d9b9a7a8f752622ac68235e35ee9b217e5e1002aca846e9fcd870d0643c168f0d354a24f39670ba38c4404d2da0aedf98ea23ff9dba06eea372753a546701f4eb340b206c5a917ce67218c662196a33a036235767e0eae119cb9f26109c9d8d340fba592e46c8fc0413122d14f9efbc4a0357a997b069e099ada4538da8e622b6366d4d6e4c5ba13ae3b055e3aaacb5e75533c2fee0bd20c0d316f354e0bfd3ed378fb72fe31f7123f0cf61827bfa7466285030e49ca23e98521377f7d9a4695cce5b082df09fcb2670cbe46625f020999b5bae54a197b5927de226fa632455775151b011103bb45e374afe1879194f6e6b7c24136b321198415709af9cb13e0805178f2261e1caf9649f06aeb7ca066cac713cb358a975b05273bb78ab3081c01b5f24ffa4a2ea66562a1b4960f5192bc065fe3bd9a8bc66c7790361b093c787542f46603ad978aa011b70bdd678eefc74838dda3b31f7f8fed8ae7262a7caa6fde9af43cb0b86a1efcf6343a0fb836a0c92698d65fbc8e4c84b8d370e41c7d8e964a6c7b556ee928139d77ed58e9273746e7604d8059bcdf7d43fec9ef5b67f3a881bcfce831a8bda8d2b7b240bcac0b0aa4d0a2e2fb281e465ed52df39bb90cd3829d4d7b6a4f27ea60628d690495000f4212891e72f8a7701162299c3026df14dd57ee5ecc8603551c96b197a175a81b9c3c649a2fc39a9b4b243b8e3b4a183f9ba2005b8ce2650545cdb31236d37a7221d28a4caab1cefdc0b00855704fc3a41960c0980a72f0e9382c6f6ab2b5a7fc859ab831f453e4695f066f27c3feae4b7d38a1fa135ceaa99661b124b036003b902cac88642848a68afbd2a9dd4ae0dd8275bd0d82149e4323a87f4d6004b452018a6f2c42fc9485e974ea2d936c0e16485fe999f7c7cfdccaf5436c9df799e9eb3f4fd581458083a0af3beb52a57fbe91b1abbc4cb618f0bf38e645a4f20ff7c18b88f7e781c701f2a7720d58ca039649b27cbf3ebbe68ba8993d319b63b7f84933399006dbe0fb88a35e8e3b2c9fdc9e3b47130775c337ab81f027b16c010578a36a5acec9c516e118b1c0d15a151e54e9422e06d4a406e3cca2144c0fb3a94840d9d79c39cfaf13b9d05447c8d6a7f861744cbfe929eb367e32cc3a13da9b64fe7d5661bfa1edbb50c1607b66b72d1eedf34f21cb8f1401e2a381942e34955035b5c31effb7f5cb7e455f6a9ef9ffe6a215f42325734bc4121c12d235bab0c8854382d63c3998e2a0a8dc4d079e17a8da22504f7b91024881ba2412005321085933fa2e6bd30e1870274b41de48b90d99b8bd0c1b7b8430126390ba96a14b4726ec9660548b43a105d0076184535492ec057a62c294ebe25f3c60de8a8bd08328b4b1881d992ee60082279b498a25a1c06bc09428451f9f28e8b9f252f2e806a3489f04b13932a4018ca756bbb2cd266c15322287ac20b67281c8d2d227421e03ac99bac804f83e3818fcbde38605dc02cea8ac9ce248faa02b72aaec3952b6e33209e00cf66c3ac21a0b640a13b9307f25288b2c9ef259f5f70c4c22e1181fa156c32ec4c64ca856260d967c94fd441c0ebe14e83e994cd528801f039f9a9e3be150f82c1758d1f183e7071808058ac089b709044c2406c0550d45c5d1ebeea0f23b2d7949034bfa2ebe10a00bf2599f8077472de0abc5e32d9f981c84e86dee3d72fc3d88bffdfd89b8ebd3c0e3d92b12784abb9cae02b6df0d1f9e0cbe3e0ab93c1977e62f0957fe0e0bb03f17b4c307b32685f1c18ad48d46164e805197ae1d6a157c7a19765e8b5650b23e38457591804f0b9229684b83a6501c81761d12ccb2c9a73e5f645adf78998546423202e28591c2e57b546f30f0d772a06fa8c9aca1d6f558a7159098275cc28cb653410f8a7d0925a300c92bac498e224a0a81eac82b04ec8cef45d36c43bdc9055822c3481cd3622e907575ae059212fb078903eb3ed9e90515b1491e42e66706715a78856b965c4fcf1f4fca75036b6a4c17734f3211cd01c8a947b5d74e9c81aca5cc53f42557ffbf437f09bf2447e8ddfb425415e8f4b835a071cad55302d199dc90d9d497ef0f7cfe9939b6acdb1177163f2c7d085a30e2bf7bad7a45d976601ce999cfe8230ff51a78b9df5eb9e48e713f06871739cafc9db7f2e6a89b9648433e8a8d29d37d12bb045202bb02aaf96b82f97e2d153ee4baf007a0b8dadf42e0b3d3d98fbb253a48a22c0e6fccfdc117634dffb5e6f1f9fb7fdae313af33661336042c501e4ac3afb403b7b3af8f0b2d9feb97b9832a146e8d42cecba3a1d8e97a0a1d7cfc8eebd81e13f74e1debdee930a7c1edf85fb04b0d9e5b1222c3edb07e3609d545c9563ecc27d863c7c5d2aa85fb90520481245f31951d2aacc189500397d0725723d49fb735aa894051056bb2fabc2cae1b64012c82d73d83eef765f657f1a48b955ba9a9d3f032dbc93a8bce6194315933f94892f45c1607a03f2e904f1794fb3769d661c5f166e8e259ededc98c2fe26d7f50c3cfbcf542bd95bb560951fdd94e97c0122ebdec9811f1891577455456756c70b3a3cd2fbbe425aa9a5cf5150d114b72a26fb2d88015312687c4186a2c6da1ec476d498e0508d79d0dda000b1c7da041e45e951e4854f46606caa8bc6e7833c273c458c4d3652c56e8a06a01133e428f0b55d1c7dae34f0478a900ad6ad909bb88a644c4bce6816e99cdab859200d38c8bef0a53d02fd58a44b92f4d8145beea28930f8255d533be3781f0806af96455690ff9c07a516b67262962d8a4da09082056b28aea2c1925dabca0690052fc68a96844f68c364252a4094455bc6838b4912f6dcc6e4604e818b28b9c89224db920d615ec75e8baa26e2f08d09874e527aed656a828e58f4a148d234867c937319c8521aa59be8ee697891840a5338dc44c6c661cb85e1e484f0d3556122e2fd458e8d6829c576dbbc992848ea01df1158b93ce27d60a00c487a45665f96846adec8a0d52bb042881b09a9900e26a51e7b8b60625855537a918ca1f8ba4f48b8ad51f4469c487d56b16c6ba33cade03d4a4d51d416403220f4029b13fdcda1bf81d4b4d157a3c7453c65d422f661c830e34a111e4dd3f8a1f0495370f2c8f24fa20b58252b11ce000caf2a9ad204c5202fdd79c89c0eca6dd824744a1e07ebd293f6c621481f64339d8dcf4d6225a200b620db94b77708d02564e39780fd6004a1521069336a922055b224859600ba91f08740b2d20f39dbdc27212728b473de4992bda8938a1a2542a345fc192d6b9e9ac661129d1aa810c1a12989c845f84207514587ec53ef84b818ce6008a7989c79e063d857c3b62caa56c9563dc333ec6488d1845bd5c2058dbe2aa23cbcad86840de04000b8f03e0611a6847c2c08de40ac892b2a7bbeeb0a4a25aa5c9302bb0ad819828ea8ed57c5c11030f1628b0bcea8303077215e891cf1c6f1069a8c02d5534cb9bc6322991b5cc6ec124450566432655bc5358840299649c82f53a39d42f4511c1949180e0468e24f78ca2f9baf2f537afca0f242becf2d326e479a19575eb9d9a7ddccbcb99f0797e6fa752097f19d4eef5f777e85a35e5ca2c3cabda7c9ff7e90e2628ffe65f7d43f6d37c3b26ac112dd57c9f497e82bbf593b2bc8a12fbba7c36ef3bced9a985e31a56cb5177f50e285056e1bbc4a9832e115829a9373ad29ebc0f52799acf0d777c6d6a389b1adaaadf70624f9a293b6447c1066b8de54beb0f04a89ab0883e9209d0f83137cca8597cb415358149cf0948fdc1b416256a0182c4b43a0ce44dfb8a549aee8c40c1888041a57617b234ffeecfc74f65d2baf3c0f6e31585b98479c7069c7b6ecd78ea7d5231baf28b5887025f11576c68b43448e95194ca6a7d269ecbd314d894a9bd0f78578c7668e4ac656058b098f51f8dbc46d5984bdcddf9149fc4b482157a977a4008746f5501574bb813811c6689e8272661bc1e96442e8d93ad14d340de1aa2c2c962854e2099b5f211607d2e5c42de16307663159bc2087edf114fd91a798a12a50b360d970eb819909770e0437f07141848742e663c54663eb19e25bfc5967bc3f3a63e5abc2ff23e863221d4468cf8b501b84bf9c6be1dcb6ac8ae9c7b58ab8189883aba07b0b1eb6032d9acb92880917b2b47e68768e58388d1f403236655d4ef5d882c7587c64062d70d866dfcbf49a25b4ec02ba441055e51cef3060d90e61a382db0d54e1bf25f9347193ab821f907c07a1963418a7d68104c4a65efcc327c133a8fec2bb4bb91b13b5d9eacd42605ba507051903f9e4b003632e7867a5c009cb4acfd5a45a5d5d788aae6cf15ee19c57d5c453bac2988f7018f2167438217b4f790b2abceec954de8c787428e9fd240b926b6aea60a66bba5d328d04e3e8885f2bb417a6257c8a1f2a49596f074b78994cca9d297eeccb496413b9471d61b3f76241b92da8d42127589bda5d90219d5a38052b3d26953228d127e8a91b4af720e223387c4d8482b7ac8f8f2f67f03a086a80aec56a0f088af64a2830bc70460585e42277dfa846c6940dac6ad937783b88977871b9e74dd75d6613249aa08a0ac6f39400ba119080f035f8df6f0e1704b5c0c2058fc5f87ce760c805939483e00c3f35cc4c92c3b9bcfe00032128afe542887a64ed06722ec76320618df36c69a37cc40523df8511f53d76897b9eb1ee083fcb2628446e918f15e737f2fa99abf16d87d8c90da6269e41b041bded273b9de974a2576eb00f1f34b4fbf669bf7f7c1978246aa783a18da497b3dd5d4d51f6baefe8ec00d50eb8eae6dfebaac2a9878d957618ba1abadbd08e631b2a3f967abf7bfe32e6624270d80bac4c08bd0af744a2ad70ca5aec99b8c9a1440c5223021601b8db9161332a7be765eb70b513d24f7542afa58c413b2d43c894749711d868dc233c9b4140891cd47367b8098b1c405aee74740d2db5dc81e2440ff1c66390c7fea39deeeb059e37b3d54bf73327e3999ddae9eb2ecc998d3cf15ec5b944e77987f42a9892fedf379df1bce165979e20ba4fca503888468605be9dc2bf6f2a1b3ac8b7ef8d0c9432c0c2e53e6f2d96f0493a61a7e16b1ca39b1f4e77f6ca7323222335abacbcc94e6515b68b01cfebb28196adddb822bf3d17ae39e637067052ce6e650a9cce714b5304b4237e60580745778e4fccdfb71761b11b66ee86347643926e483f36a1251e1cc940b62ba8ac1097e40bcf66ab3d20b81fbfadf8e3fdea30da38983fdf8a05dea1f1157a07010e0490629e3198bedd3186782d7aa79fab064f134dcbd091152db1adce527883a6a530c98c49b2cb47ed84a3241d35adc2bdeb281c893a1d8ed485a3e3176ec11b3277267c8eaa74ee3eade2d1bdee9d8efca273f7a755f979f7ed4954c5941fbfdc5b95da9b2a5428f226bdeec9e974d35d84a3eb9d269e17f956e6c2b94be1093df0e9d32a1e492a81d2c0c732d6041c14fde6d000eb2adddb954764170154d05826133cd4d12a94ede7fe99c93a74cd79d2697f8478c5d68b5e4255a06d833ea3a94ecaf2f4fbae49b3417a226f9b471b9b632b0cd9989f5311692d1a355ec4714d72806cd47cec4d2ab2733210030070c5beee3d302fa9337ecbfb7cdeaf34df4a6a2a5e709f64b9067c09da781073e32a49704cc9d0418220fcf2756f6a518df3bb8e1e91d2e8968ebcc1ddb65393e08ae49b031cce56fcce948ff89d026738b67cfce1eb5e2713e1b8dd0e371b456d3e2693788fee01e9f7913750c9e163d7195f8fce605e6f02e004927e3a88cb3fe32961f71e42075ea406254d280fefc4c2515c3d5486efa20065228039476d0a2df91c9201c621779a5bf817e84458ac054198f30b203eba6878cd721092c9900c443b4267ac1f76a3ae20e2c4135814890df1a23590574fc24068a19b46d496405fda0f9bef41c20065edf9fa3c6f4d223036b6ade791fb05a65771967b40d442ed4cf25b03afbe046408ce289bdff69439f1127871fccd3c65fecc5306c09a13b790f80f4e4ad225e9c68e28382aee7625191b7a0d157d9ea5b4496168c32cffb521d799c2a310311f7157fbc175840edcd60e3cad8229e52e09976956852bd571cbb983875b1d222200b8759a005c6c103f1e5918e0e4e4cc52b64c269fd8f0e1b96c21824b47660f27546a548e9df1e8f1185e28238fd0a311b11a0414a1026762a74d84ef4d0694041aa3e32e6f9cefb840f03c4a2aa9c89d65e3c2d178fe167a218d5d513a5318ba0d373fc07601946ecd438a300222a23ddc94121f8bb533cef7e89e5b717c2119c20fd312fa41689e4c94654d5e2543b133def520b84c5b7865235bb3d0e890ee21919a152625f43092902d3ff25d34f184133eb3d32287d72e54a48d4b73d0f04407cb109f74a0e606f9f1800194a723887f5b18cdc3ad8939297780871eec28a705583b269258362639270c2812192f15528991679ac300082529a40fe344982432ccf39a3ff244df2642efc6e9ae23e3dc167a74d5e462424126583872930ff3a63789af953ab0e4b5992ec0dbcd4fe9c876784f628ba3939e6446a8e37e8cd902f15297845beebe701d352d32e7843239381e9a9d89855b05424fd5c40c15c1dc41548837328daf9cfb01109459a64de49b15c5135f79ddb3b9a99bf69684e45c95f9aa1a178f266359e0ad8484692b16c2a0da50a02616c53340ce834c0935a4ac7c8564a9c87b05b8967d0bb64ba36ab4aac9680e5c3f661c1bb38942b61d215b239e793a62a251063a303e21ae978c1bcb2324163ef144cab326b704867da251392b66b1bcd860d05f772f7f3d3d37be909f5e6232db24b94362dfb6e9c0d4ca0b98f662c367a703ef8c21f49fa278fb41101ab9cff077af9fc98b0e35fcbdb6e9b1b049ed563cf8365440ded09e066289d0456e0409e7ca5ce9219be878a3aecbb671fb389eb01ce65793a38a9d8e3c73f00250a3c41fe52b1de167e55927cbae1d6e9ec4861a04c4927141e5150f94ada0413cdf4cd5c1d8821bd27243ae65aba42aebac87f1e13a6f8a5fb81b54ff0a83ab31b34aa741341b47beeed9bef41d2a5ac49c6a35d5292f9b2e304165ff2963eb98279933c2afee85d7062e30ae141e9b1129d05aeebc13311a78baa0ce54947ca5e2eb5ed65697b7c2cb050436df7d0e6a6c61146d33bbbe3e6b669ea3c82dd7800ea89ead10f04b1cd9634be50e5a74c53c684394e30e57b09ff8f2bcf9d68d29a4e1d3399328585231bfc9f2410ea01ce4005453c21dafd0504ac3e60d5ad7a01e1a452e5bfe078fa4b20ea6121b95618b51ea4840e40db0122e9257a3b217c5811eeeb6e1890bb59b42a4ae7726571e176c12109b0399771215fd4f06073c4b184909e804a810b0891f4575f8933301e4dda196d153c9d57241b81a9524520504f8081b8c22aea15e403ea9053f794645b43f1bcbd7bdf00b61f67482650e4156c4147b99e2eb16dbd26090170d6d2a1367dcafba0516b815cf98f3324f13e14c28fd43ea37c852899092ce0b022be495bdc6c347d0f584c6335b0e1f07cac1e1f7a3d23fedee5f1b63f3a9374640b4a4bf493aba47ed4b2621a01ca5dc927438fe5c04c2eec81a8f1a8b98f1a12a6a15b6293e4ac38a68224fee83f1d9f253404dffc16504b67333a4a6271a921b43bb5803bf7f797e7c1818acaf39683bedeee31cef7af18b990fe0702608abc355b235b78a0bdf7b7ceff1fd753cfbf13dc0fbfb3fb844ee4e3d44ae0b3ff9fd3bd577d4a173af9faba2c81ba1d0856378dd5b9d56f13eca9ba452a7c3f43bae54f95286fbe3831ee961ac9ab9bcba72d475658f051a5bc7d2d5258ab2d73d552e5239d6ae2e7a768a7276ee6839ead2e92a6a89fffaf2fcf4fd9b7efafdbf76db9783d0d5a8bc10d53c9c1c9b1337ec9993b268bf4a5bed7979b61a027f5527950efc4264f33b7874781a956c1c95743a485e4ee27fd8b4139f45789c35169fa0a38e0779a178ad2e739ae783c8ff448d05dbeaf243f730d6c8ee41ffbe799e02e49da2348f8eccd1504be1977986f3eb3eff1cd69c2d3c5a284fb9a93c977c0e0835daf9e916c0c2ab05b5a9597ec09e57c785d2dd048fa7198cff5fffe7ffea365f1f9ae71139cfee22e739f09ae5797a0564a547a32693d83ec6967eb058780df11b536b69b4634df6070eb5ae2923f0ee89ec8aaef34ef2cfdd3a497638d8daa639e05a801d615ca7b667ce9aa64c1996b04ee1d8d2b6e7e294c337eeec1b6f4eabe8b8ed9537781c4effc66fcecb70eb8f2ebff9899f1d1b66e8a2b8f7e809e2826b0659e845bdde1a17d7c813cb5c256b446aaa0992fbfec970f30e66a057f3cc14259bca8494c76c224e564c087719e9cdd50481f448228db3f3890b909341241c3a5fa9470e63347949ae8dbb2e6618eecbfae1e9afaf83ad978a12733cb2850dae5936c6a185eaf9768381fcaf6c1d45a490801103542c227aafbca991a7452f5b3d68a47b36d89de2dd66280a58e17a14e51b039a1c36abe12e80745a69fe282092a07aeae103494d161b88e02cc26a016e3e101fb2159fc52306d9ff9c9be25782ae97a814bb265acce66305e2cae47c8c2660831f0a6f322ac16845361af185e19629fcd8199bb602fbbd50d43fea02d38edb81c77b89e25a87d02cea03ba70a509cb5215883d09fc3c80a5349c1aa6dffd31e44481763702821181bed6415079103baea151057b6aa9ccc569517fc50e257803d223cff7852822b52cb3b0aebc77cc2b32f18eef44007fe03b2c261e9b3ab987fb2c855607a0fe3379aca1583baebd1e89b998e4a538d503d25ee5eee096aa2df560681604b39bf7120d871684dfa4365cf0a4bd0549874c4db8707c92f153a26cbe5bdfc1ab8e3b5790a112058f2c14cfba9d8e3b4c45f7e47a0cf22a88d202d4c3412a01fc3e6fac2befa09b0707cdf3fcf8a57b19a8688a602d8be424b4fec07f9df4094955b0b4c5fc0e407b8654939392782001cb40e30d056fc0c5d09c01215b39c68ba26de022560f1dc03b8cc5e6b7428fb7d0e8e6490b6e3af43dd04bc3f153dc1d8f45c0fa643c82a99a9ba4a0daa0f9a75a6abc8c4c493969c879a4b078c957691197c687d54627884104a829ca7615241d703fe2a304720f0c4f7865e00f8d5ae4c879d70a6e11df9b0c881cfad7b6a579576a6af5bc358955321a68606fe0a71207c12b7f6aafef4dc420357a1811f3c7eaed1b9002ceae8a6c893c920148aefb989652aa6937129da8f7f20d65a4e6b4ec1dbeb52492ea4eee287853fd9aac4aa6867b92ce125a120bdf0f381ea8dc5503d9f4c2ad855e95945d1513efdaa0cc4a4629cf36ad63d9965c5e821651b32adafde85322148f5ec5d585a4a8c66f80bc83849e98b9777981ffc249e4b863418f193378105572ccfed1c482174ea6688f94869cd0af244f290751006f2ae145cea3b3216e1761d52bd4c4375bd7c22bd857bbcd43e348496ac9625cc57770476f27c51d75eec8ce8ccec315bb50fa0fcaa49fbeee4677ed2cb57880e52ff362d5959b271f4f7f401739c78749d27297675fbfee8167b4f0bbf29227b2024d5d3be715d5235ba05895b2215a1190a92e6ca7f9281e69f456c80c6cc2e2422263ee9a70bb43fff6f084c6b3ea78f9eb69185149c155b295f861d6266020c424c41449c66836414b30b70bc6957b675770e1117787a6f0e94c4420d4230725713f2159bdc0ef138b24cc21868a042150478b7bd6619ae70fa3c03d20af8d71163d6eb8486c4a14e412825a8db349dc27bca634e28c980583ef046ee26b93cb4e0719f55eda4e5276821c9ff966cb2935d5096e9b0d880380c048ef31115126492472320d44ac94361a698e243a5a1581a720e920c1d82cf8611edf5170e359e6bb6c20c9e7a4644122dc905dcd05774415230e7815695ce0c74dadd015431ca90e36164fb67cce1cb0de82e02221a5a90ae74644ee5281650637008a8ebbc7a8cfb83d2ff1a4046541f8b948b649585141e4d142be42fd813c216ea78366730bf56962da4a5e60c687d2b051bce8fff141d8a6abc34e18300a6fc0ea8aeaa7aa46152b553b63fd1d4faed5882ea105fd08722e882b19932fdbc6dee4748ff9eb02c2d55dee441773c96fc8835fcd9158eaddcc270021ee3cef454343d7e421440ea44dc3dc54a7d28a1692a166f8209a02e972551e4e6cacfc81b4932c4bdb1c21dd6e23f2d88ed74f17ef9c95758a0d9828eca439f25a71e25f8b3c3e1d772061cb092d209f8430457a26802e410c85f65d40b2643111646261101e86206742765bc19481152e43ee04f9ab12536dc16881f6d8b2117b1a0e6d64136e1be74890859f24d10e688e81b6a71d2ed94bc6ba860fe5293022ff4e455e89e9139ef03004ae520b21b70d6a46e6405cd979d8e5307d73c7e7ce6cd784a0aae87080a0444403c9f1f62418218125b63d9289b2fd3715152f3b9a18417b19125cff10ce04af2c39e590fc87482cdb0349455e4e025b8b8957202488203b90b284f35ccb34f4a6c9b9e6a6b78b5a12f969dbf04cd4088f2489c74a6392e03180c11a16ade717fdfbf3d39f8d78af0825468877807c64de1f14c1e0162569ca227147e21d11a78cebb907f0eee0533414d91ea2380c76691af5f737cdb62936c7222c35c1c0a4e5fb29bed762fd954ee4e246904498743fd17c95541489a7441893aee9db827d19267be65608e5f596e1872d8233d5f17607c9d47c7c8fc0499065bc4490500d049a1963eeff61ef5f9a1bc7b56c71fcab206adc40106f6098e18906ce51456876072aa62be93e949d6139d57dfce9ffb1d702295aa2653babceb97dfbff8baa94f5e003c473ef8dbdd6c22a631de3c964622a049d1729578b324183d799940ca9b7730fe632e6e349ffc10c03e5e462ecdfd9a1ca9439870e15a70ef5acbf3fdd7f9b253fdc90b665d0e918102ec7c74d770c2f7babfd108e6e63b715798e1734b6f1a8c3a63bfa99bdf01886b42a8424bf866d90cbc95dc2d10f69eb5722b82ffbacf85b962248cf592361f02cf05e67d50d498a9197252e473dd3e96c0b7ee394fcbcdffd6094bedb25954e84bfeecbe96352ddcb6ffff11b1331ca2e2017f0440e5cd5d937baf2f064a2ca3b8fec8dd3e1599d7da3f30bc4f3d24e56cfe9302449cf878417ca5d860b6ae2a5dca56d9ba0bc75f7a163510fe38fbf2581e32b771ac1629d20fcdde8d28a78ed90fe770df287206b6190ccc154b332ea19d3a25de6319e9061c9d4800e6afa5e4c7ab9902393c1013dbb0086080476df3830c444cbbeedc25ab08b3a791b911611e8701480bb3d0dd82e62cdb2962b9a35e9686aded4a376079ad305797cc54e894829107c885006a199e2b81c28641ff027656e7cd2044f5e37effe004e3cdf365cb1ae524c216562f5c93f47283278c0a0c001be8dce33b98c9142270e01b21062e3449f77411bf616484fb26854cf193151ac5a66156ec0854126ec5b3b2530bb36418c3fee9ef47ef7b0fb7eb7bf7b789e0112dda0fdd10ffec894faf0eaa32eede336bdeca784ebb6dda6168240262cf7671affc629b75aea7c99595d366e8b7c6a9b2008153669be6750cb1249bfbeff3e8cf7df87e7c697e8a066d1d5d1730eed7cdb5fc79a2033fc2c2fa92101252f3c8452f51000402e89bc9001c39b6a07bd622f2ef79eaef10ec983452dce64175624c03c3320f0e2c547f3726660496011da326512046612c8e21b33993e80e3c65ad839d6c9e1f9f1e99ff3704f64daf364a2480a321cefc4262ea0fbe13af3504e3711cacd628ee593d9dd33991820ed08b4f661915db7c831be52981e7151a75ecd5187eb79cc2b9b64e957c037e20bc5ba4e933b3c526fcf29eb2e4235b250e6211c57f8208e9aec7acc2fb4620e8907606f6d0623da3bac0aa063ea90127203651a2405754de599cc85af9124555d154fbcb560b3b76321d7d5e7724f38833c3eddbf3c3e3cefc6f34de0b5c8d895c0d74a5c6bef551c2e93382e6b698d55e392b2aca8f29103d7920056ca9675fad0d5ec250ee6c27b7db326f5eed0b7daac6b35913f20dcb7c22fd2e9385ca06957369c3f743148477ee4d055a6f2154c9098eba0d87ef7d80f15f0cdbafd7637556e278be2479ee0a2d25619529c8e1fab8f951c8295cbf98f5eeea2ca2efbc7cb3e7cf46a97aa156f449e4f75fbedfef0fc74ffc7cfe7fbc7872913c4ad90d2ac10c45c967d452bdbaaee7dedc1eb0473b6ac68bd7ff222f2d4f7dff4c3cffd1f77d411732a1e6d37d8b48d1b80c1c48c39476db6cccc0512d89d0b576e09fab7937e255c8d0227d59173452c42ecd7600717346b494e266548e0968db8a51169f5a6ab27557a79060484d31cf39973234606974adf2867115426d3adab8c3f4502acc802ed9b976e1bd6d171170d5bfb9eba3474d52341bf88ede256a985915cbb40d50dfdc1c4f8e8f80cf9467c0350bb801121ab04a864221d73c9c665b23333981f18a1cd7ca6442b9a4ccd2d8886fcd3c4a8b9f8e7dbda226e7e8eb8d9ca6d0678295d6cb4661e3c56e25400a302ff1cf91030d4917b5f186c22139a03ab6fc82695c621dd39835c716982680df71db0f5e52b0379314923cafd2bf9a85dfb33448aecb5748f063882b3e1c02d9a4f63679523f51a0c1f17b0f6af5c018361bffb7ea79f1e9f77cf778b9c800e8ac0eb890887f35d686c18f02bc5b7aabd957f2f5f2d72005686eee5cc75a1347b99e94587a31b75d45e5b196a3a00b01fb7b2d01e8b4cbb165231b18e446b7c1e0cee943b99f0ae92febaaed35fbf2b38dba06097f3cadb6ab3db748970bf6cb0539640143330acf3dfbc529bbd691cc0d1ab1315f05bd0e7b7458e793de30171bb4198ddc15f417e407aefc91613e58076c2b6597df92a3ec1dfd8f3aaca2bf8dc7f59cffbedfffcc7fdfec72337142a36c462d3687f47e43fea784d4e1adebf03f9ec954c3dcbaa04b9b55f7300164d1715eb678557f5e8376e45edf8aaabb96620ae3a60f70f7f3cfe77dbd805b025a609f2e8264233aa1224262fd0560f88a1e68485a65ac3934ce76eb1e515ea319970b913b4522a394eeaa82b3a99eac197633b5357c4a0ed26ad9aaea6961141e834885387f72a6d2c43b77842fde7fdf87c378b2475c625a7fc68a1e58ad7a3e9e226981421b99b558492693c9bce4dadf5884ce9f3fdc14196b2515655e491b86412f69d7d0ff54ce3a33711f94026636fd7957aeb288c1aa254575c6c574e1a59b5d675d6721362bc456cd09be4c6a9c548981ad15e6cae21c9b3beecabe94ad17e675270f28f2005c5f087450b78252f472795df296e9267e418881f8bc81912b4183a23e63dd368a00e4b833a86a6dd17e4df3618eb6fe568842c97f76fd52ab3cf90273798cdf5fdae711598e0b2f2bb6c424250e46470056b95335d57cf5b2dbdd96a5b99566c8a4036333322aa4e2e5e549e02ba88946867c27612a03bade07fb52dbc3c0e35c26550d5b433d68b753569211a5b3df0a41e48a11cce0e40f242f5675fb6b38ccf7ef51c1cf0b2b7260769613fb3f64a97301d6c3cbc8bfc369a0e9ca9314ddfa741eaad9fb2624b91b3f837c60940d979f9c88be11c993fe2cbde445f4d0210b99105132c1ca677351cc518ebdbbd23bf9b7f9ce0f0801707fead403ff7d39da398d4bc9ebc79d943ef10b9a85d184c4492ac45f0cef52c7b7b94f6c71e4de084650b50e5c9f860b5f16248063b4841cad138c763aa1895c0c462af57fe0eb848ae8e1781ba817433303c1779739077e082aded9df748d4f16ed0c661ea474b6ae3198daeed9d0f761b4d86db68ab33165d2ba4e9d724569df4e51b9b9b10a943402a41aa249af87bfbc1620b2f2a6bbf44133ba7f8dab217e4d34d6d275a8b3f1d4f4048b09ada43d29c1b1fda9a0a25a7a08369b85eb80dd4db943a038c3fc8e3f9040bae90a838b5b6f74838b240aadb0abb5fdad0796b1ce0f3561eef6872c73dd5d64d89ecb704c077ce61f9b1ad2b3b71c5e0d4259302e0d696ade6d943b05f501301f291d58e4d520fb3d4e7f6cefb6d32ced99da948929e408626827fd896412c20bb383fa1d97c7be77ddc8646768966cba9355b62b38d2c53d7c57643b7333e38f937cf8f0098b31fa2eb4edd76f96f3019c8ee44ea86ccad1df65f71242de10005c7caacbd6bd2deb3e8b085fd93b8019a4d9740be2d87006a5d07e320eeeaab54f25626b2839e46bdb8814847970af15806bb944d97d3d9e3886359a5717004670a9925721a8dc31657ed4de72cdb105bd624b8c08c5ae4eb766957f4340d8dd29890dec18ce3c0699cbcf1a0bb847bdd49df93e7c78520328471e8db1b52b7386ac3b8f6ae0d452baeabf463f44720cebb3a4899a5620bf952a42409ec9396c3d67a3bc8231e710162d63d7f72351b07be8b9a07e3cadc6ee8d291fe7b8e5b3791b1d8c409ce66f93b575a6962b3f203e609404cacf8f1eeb49ee48c304d176a9b72f1ce7213dc663b1a2f6b932f605fc86df84cc3089b68ce8dbc8f738329a97e0950b9e66bf36930a718bb0b2640a33c4c12a8da99c244315b0699157ab92a791aa2d410feda580fa87b52d9c837d29821239cc485c0d7168da8a858e3a31d4c70e25422f92fca920bf65c27560b3a70342103de2203cbbbb6eab74531643f221397f9c5aecd21d09b68036b9a56626b066b7768237b9a0b3a1fe4faf33969669791133a19025d957fa72649d35009199b907c405bb2b1a1f08dcb476967c253d01a796a9e6cbae047139335b1c878219db04c8accf3735dddb5ee36f703d7359e8a0c5684b233c145f9371dd015d71eddc63695b7d8521b5c01acbe1443c5542e13690e6cad8c29075d2013fd1f0897e7f230fd7bd97be3c1286dbbdc9b0ec722d52291b603cc42f0663a248317cfe9983f1eda4e6d6a8c473e6fc56760fa8e0c6a24f0e4e9475801d67a1d4ca1162ed7f6188cb7c84e95695716279fc3511ea89fe69a686c2d2d99b54cb7c59a8eacf1b2b58c25b167128f8d7e56a67734a5d0a60031b8d86eeae2604207311452d604db7aac952316463069b99b1d6c7d527e978c0746c7bb53e011f0f34fd9c12bde8b95d91a1a06482cd83993130166790e5bd41c4ce9526f5ca1ed0c432d38a2eaddbfc45eb63e49a771808778d23426924e2867aa3fbd1c1c8104ed073d7fd4a78ff38b9a7fc0c12f7ba6399ae047674a85c806084e2c5423c8bc02654402d199c29b0b651cc8aee3187e45f8d88d102dc14bd36da39d88a82514c45b6a529a53120343c2f0a350173192c198f39e67ba43cc4d6483890b4d7583894db8944c8fa8c22eca440df6cbc9bc938e7f237e98d44067aac79eb797237a87b40a1c6e093699ce658e966b99bf8dee27f20f287c58a2601c53b9286d18cb496bc5934402b9ff33e4f0441ad538c8280806ea963aa59f7324fcfcf16df73ce5e3cb38c750e8824aa4342772b0fbb443f8b61b1f914f5677d1545ce4340a0a535becbfc979ef8a07c364d905159ad3dee9a2f8892b596955f5e7a33edc7f7ff87b6866be56150677749bba0d9010739b7cd47670dbb229db3cf86319dcb1059186bba7fbe7dd437fc72c316cd038e61191b95b85014a657a269778cd0e216ec99af610a92110fe0c2a4c913b4480970160ea4f4e41e15107152e2f758adf8d0e0c6cae6e6c77c28ecf90f08dddd929c38db9e2a7cfe82465f959d963591eafec26bd7c75ca1dd390b66ee35aeb3cdc3de9ff7cbc9f1252b30a26df6413c05d08257efcb5dd018cfece80ada7d7a620b29a8d4c27f28af18ae26629ed017f55d2a9b79ca78d5338120ba00faa1ac7701ab3ae8b9c1a99deeca15e39e74ff38b5dc060e2eb94d69a4dc5de41e8717f95c0a09614a0f4596eaf52af1bae591b87e25189130cd0ce388dcc77e37434fea08dd801e80b90ae133308b051eb5590de105ef606ca271cbdd6209b584a2e7f5170cdd93e473d7dd5e3e61ee02660ee12dfc96fbf23df2f0149188cd47a07de2878bdc514954c564515e35469cd208f0a73b6b74482293c97723a20fe2d8fe0b57c0a1c08873b469b6d55ddbf2099eb6bc4261303be69ba10a2f92dc83b84dea4e66b4d394653667fd3a24ff3578c2133840cb4406a01d7969975daf8bf7f78be7b3adc9dd4ba3c49c231721c76e9bcf67402c2179930396d9ea4c9c37592869ed75214480a5e79f47a1b4cc530772d8018d47417f50ea90331939550a5648dcf28af89d2e7baccbf6fcb0ef4247b005da3936e8b533060b398028d2e28a3a780af373069db53e1d533960f4209ca0538e4a7652d97b1c019f024d77890e44d87f6021615d81ab9d80d05c4510c0bc2093047a799347a9e650f4b8104cc3a3ff4eedbb7a7bbc3c4b2e14d4a37c8c9af98ff29f26e0f41c6a055418b217a63bda952db29cca86f59137e4ffc8e9779f95a1a6ff0bc797498b6d2e69df979431e7387f5266ead27bfad3fba413bbc919ef3f2d58352fd62077545c8d37f48c83300ca233f6df2cbde2b7b8c03c525d9a50f879f776da974582b73568e0c56263aa2777ee7d72d2bcc6225cdf9b474e2bdc647642bec8a2a73da30d005659e416d7ad95bed90342a2b2bb96eeb569659f2a2a048ba1f1f0fd34e45343e051949af791e644584a448f52374572c5e5d5b87306c4d00fe3990bd00867db0e1166969cea498978bd8e980511a03b0e3e8d3da5dc5218476472ec6c6bcf3a663d26777d2030b3e33fdff541dd95815c52f1ac56780e3009c3756e4ecbe545363557c6d246a1d0d09b4c65965fffeaa95d4b2957a933a0abb3948f8607848518b947acadabdd6000f8d2447ecff944db46ee70cdcac89dd81919ee830c203e2b1cc40003b0371d1cbbe904c96618b5787fa7427ce0e1eddce3cbb91929bc8dda47e503d7fb17676e7d7999ff17aedec93b6dd604d5cf49a4eb98dcdc7575f6aa7ba2db7fb97476ab7b171fbfa4b391219c8f7cfbbf1be6fe9c759052045d7173110c1acae528333ee368bf712df5eca86fce685ab29a34c64249dfe4d2c35fdbcfba3c9ddda0a7aa50fa6f65dec6787952ddacb2deecb2433b1a5ddc66deb108ec8170f1b074e27ffb2cfaa8a45ee8734fd94b77548247f8a9bbc8dfc254238e4088c070f5c7cfcedfffcc73feefed9402dddca128dee098027a4dc09e9e9fc2d56ae6c82d8d901cc176122b6910371b41b89fcafa60653c307f6dd3fad0c8d34ff0a4ca558976279c86c3987259575ef933fd55f963bf9c7dd3ff51fbbfe1f871fbb7eee281e9df452b17694fabc314888068f493599eed64a5ab5984497f535d80b2ce81a7008be8d98fd97f92776a905eeb1c963e99591328f5936f59497b392b840816a08c24e8e949ede5c95ab06db41acaf180609159ee8fdf4daedd492223020e9c3d1a3a8732bf48ffbfdee615e35235269c3b6c89475231d15521b956cf11660a4dff935f414302a01bf811d164cdca64dd906f10cf82d4f0480c9fe6edb91f888b7056fcb261dc346ce9aae84f80a0e95bbfcceaf8985b2558a34152d8a691486700463448bd1c8d1130eca9b78a051cc2ff5f4414f1fc48ada77ba9ed275162938e2fd782fa6a33cadb8408a5aa881850972ace7af5e3c0f4b0376a2415c26fbfcee71e1e9ccc3d99d78ddcc5fb314c9da1b9c921425bb14f2747819bc559e56a51c221f23cb2a6fd3cb3ecb9f4dd91672db496dc4378a76582420ad24222df397909474ea3f0fcf4f8fe36f27b9ffcc21ab132102945527488056f3054820a9f41e4860169856f157400252d26f77e3dd140c6b1afdada05f5e73818993b006163cdacbdc7ab782a971754c3a7d663e06a3dbda7c71aa83cc294751eccf833dfd3333ce6d041551377e6cc6c998705045e2f97f76be296f4d3777e20fb30d8a5a51918f2d00b670c8363277dd2693a19dfbe914c8a0c2875320d7c25f4b4c0e67d1b0b1fe72715c49179f1ffad0ef7edcb53cedcbac76b9ea9858d39f245fa51ce5265f4348bd51cbaf3114558375c71b0b150f8878280fbe61950c09cb8acc98d6abacb3c2e4e9a0740a328264e5023a6d2c98bf6203ad022e5ec4d028bb13df43d5b5172f3021f4a18b78ed45cb6173953dfe38a5f07b152e95615ff17c5e83c7bdecc5161c202d719b4c819cebd812cfbf989af3ab70cb3b8ca8729531b7313849a1a2c93c5407a0451eafabe5cf0f7918eea74ce50c0c6a078ee4646ad5e5c4e8877934c18cc42113ad0472b82da59cc1addc78f76551e5995f4c8d66968273ead2c0f69742ff2b22bc71b830ba5537ebb3809c2569934eabc2f3ee8fc9aab31e03f8d7d991dd9432da5d4be57c1b3f71a4a2968c7131777f6180d9f89ef65fa7edca3073c0cb71c65ea1750e6aedb94f361b66ec35accc12fb19700f6f3ce6eacf323f237fcf6e2f184fdf657bfac7c3e37f3de8e3dd70df9f3cbd704eaad9c21efed606594f4aa2c5ccf5c7cf2e2d85e8a6388a577e77be20e3e76e8c3a7e994f8239d838f00bac0edb33ed20e32b637dc05fd7c95ac77cea6959c527503161bf3970ef19aa07411b1ba2362e57d395d8b60ea33625cb708ba0ac461c62f2dc1147322557a86c29d38149a2cb5fbce99cd89c5ddb76b64a96a1a0ca266cf368b51f6c37823931810a0409ae1e800d26c04548da42c70e342109ea786e1a2040db142d461fc027e5c0f7a76fe55d4fcc772958c482292900a00df87ce76ef12861e36f9dca8b2d1c4c1983f1de8f40b297702b6bfa319bb8a84ec07b55b7b579b0eef8eaa76efaa91b89b289104f2f481d2ee9e52bec5cffea62b671002f5a4bae227d6edcfd71374a4f6bf1cea3b61b7fb42f7b6b75fda0b976b9f8d2026c1b756e1b076b8f5eae3bd8ee6887788c2f7b1d74da46b10e06c217c6dd3f1bfd5aa52cf8a8ab467722610d5e65723c68ec39998843607c73335b7e8da61e8c3359de8cf2a371c61a6f405c75e016b25c64946b037cc1b3a236f5807b65dca5ce4582dc17f66afeda05fff2e390a1a282ca95197eed34b1e5ad37e0c2918abbb13273296b9cbce2f865000a7b40bf5a47ead59ecd5424088e5f9629cb5317034d0c3e39f5c81d9edcfd0b8b85b67bfcd9e8b1b01948489ee2f600925d329d8bc6f4c9c803c887a4b0fe4c878352e62015e53a6a30e2e9186f8aa9a802ee68dae60022e9234e1c11d9520aa4933bde4242b28a25024d8c224b944ce83ecb9f493706ba120d0358c3084915b1207b086390724359c2d9544310b5fd8e43dbec90ffda533759b3ae9a948c0ba606eefc27e3dd0d94d613a365418c369594a908bad1582d07eea728d7333d03c604142c5839e3b2fe6c361442620de2a0c39b152e77b7ca2648bec8d52d244e2fda6d2ec2fc98a8a9ac9beb3b3716ca82ebf7c62f054550fb68c5b69b0fa65ab6d4e020ede1b0b96bdb8c59a7a97359b9ea57eefa660361f56787d5bb9fcf8f932f876115d9e1ba465fe241d56cad0cf7cea49e196815730a5ed38110cc40bdbf3406931d946ea4d9a4fd4be41eb62ffcfb815ee3c0ff17ac01bca6e9f95450e4354e31309d6890ba84b2f5321e28a4e618e250d390c0d3d8f936bf17e96585b7018f39da65aefc23e45690b084c1e06116976c828ca1aae26a1d9cdde4701af8a73e1cd907d077614cca441d6f0b54f8a8b1d624d180de34e97056070e52393753e2924320ce2b0b67c27faceb3a7bd95a480b4b3d180abd89c1043e2faae2a6a08ae0da2262d7896b82dd7c6c7ef20e87e53daad79cacf269623a6acad878267c250f623ab6deb86c5fe060510978c586d8da8d563bf31fbb717c9c5cce4299df26ba559026169ce9e238937dc51e0250249e9312a3f7d820e6a0f806692226e657e3e23c1b806f2e20e676645afe40c74e24e8b29e7cc32c0b429a887034b83352299b1059772ef303f63038c3f64cee271a688e5f3eb2ccbb202697de931b455950de2479ed3fd0799b225961329c142bde4a8baa62c28d3721a982ed11554d720a1976f14080556a290b5281a8792535f885a2bef2327bb61f9c7e93266fa2f58d5a374ac3209a11d8300e0f1ff8ecbb734da410b58338fce50feb8f1ac665230587a19baaa98d353a7ea68ff6f74fb3bb558c4783e14803f532348533d1509c521b59d7ecd9fca28938c906b4965e9b82bc19a919d0d9f1604bebc4640d7abbdf8b71a62850d5f5da54e42665838428320af8c97ef41a9f2e6d9860e4148fac1db9a95c2c3137c8c41bc304a20e4122261159fccb52afce54f04ba2ff2b185390abf4b823f7ee4f95c8bc21f90982c9de149432196c49e048dbf6fa411664f2c1b24478d8de349a7c6929d5aa440c5d165f21d3f37c850d9813f9fcb0fd8a9948312d6b09a59146c2ab431694c5bf4cfa38535434a59fea327dac2e130e70a8ca2a4f21ed8eb6f3c828a396353a41e2844a7a5bd025e05d60e65999bb4dfa48b7f128616aa971f3cd5bde9a6d7feb61ea5d4c042b3dba09eee9db6952b3e9a3359b780f18e453b1a9ea8d2603cef2408203d51ebf3719bf7990faa398adf3a48f741e6fc0dd8c01d0eec8cc3ca91efead0776b0a910328fca1510d2d0d2c996a378e64374aabb4eca87c483eb47940f1c51de3de23d764010d4bc4320f88123de2b48f7ce11af2af1f1e70ffdc73f5b45baff11d5e440a1f8d7eac02bfbdec37875fd2e8b6a1aeeef9e764ffdf0cf69d188628f7579b2a93e62f6bee1480eba99bb60f586d88135ae4931c8cbbfc0b2cea41a7691770b54cdd8c88dc43ab10a1627f009453955d67ce92b972f49dc62cbacd2c9a3fa356355e60f4c46516a46cd9532f0675b4ce6f72eaaf941fe179663d919c7fb87bbddd3b4551c557ec33a75e7f6950ee2d59fffd0f2a1868bc3150fbf3c1af6dbab221dfe71f75f9f9990ff6df3c8df3097be3b8f741f9f470e8f4fcf77df743ffe3c3cdf3d1de6bdcc778dee931dbbef3e77bcb4c64d4b49c29feb57b7e993c5d185a9d81f2fbffed40d507b777f3effbbc10bff1fd8e03ad860bcfff3eeb03b32805f00f6943b85700b7c34338b7a536d353e519a0ad947ced42c6f0ef2b462a2439abf66c86403100b99fe5cd297606a498aaf2db3a25336ee2ebec77608906b093b5919d8b75cf2ca25e224d31c93b110e570c5638b0817b94521f1085fb2a9b928bece1e32c9dfbad80ade453f3fd58862f3115ef62c463271fd39622f4560a270f10081a300529471590b97a5002d2bb5a53acd2238b0cfb26679b6c2d92ffb64dadb1ea1256c724363a7fd2d911a5831e956085780316ce5e14321fd28f6a40e90368522019b94373ee85608b4eaf4eda817a7733af53baffc3c3d26c54f2d7140a6b7fc3724c3a3837e1f9efff839fe01e80172c2bcf1b545c45d86f2bd497648c6fa59421da432e291d91bc4975485d0545255dc100ca48a50b5c90e179cd10981df01152877f14db23b83845e41db209ba67c1e5724250f579207cea888955f61633c7c8ceb9775f3f08f06672c51597018491502268dbd991eca673ec17ac1ae69b0fcbbe43954043dc0bae922a5a5906116828e14164c5555d32579f4a4aaca4c77b504ee74d504998c418d62cb29f9423a454bdb40080b727200fa174436d225c28f19721d85eea062680ae6b132364947affd7403248304e95dd29c93e084fc8ffc23df70dee04b8910fb802841b8e461fbdcc3c8212a50f130cab35412f47b80d053353682057a0cd4830bc813ef295f97e00460df374cba174b0639d5802a70133a50fc2826d84a5b280a9bb5dda0dceee4f9f73335570907ea2ac95d2cc00001e0b0f5bc2f64498c45976ba46623f13aa77febe966ecbd076ef3c9f86c1d84e90d894fe18fa6c69b4e31949ed0373aafc260b3fcc02700378d1c41b29a9a8fdad470e3da8578905594dab11bb902b4166426bee914e4227820af6e2b2fdf9b36ad43233df18da55a66a5b46c6a81edf6035e70033e0b4e4f7c1a9bf9384de7a1dd7b7a30db9ecc86bfebdea8c85693d62deedd1e7b7aeaf6d0f55595a2479456a57959a5e954a5a955693add953b8eb8e7fcb8b0fbee0fcfba7f1c7fee1f0e4d375a6a004fe3d30d5baab407257d7a557683a24a312c60e738484101d365b976ba01e761705256b1c0e404abc25420c8c077ed90764b5998e27cdf34dd379dee9b96f7950a4aedbe7979df72ba6f6df7ad8bfb564af1e1bef9f2bef6f4c0cb277efdc878e6e9a1edaba7b68bc7b6d373dbe58323f46ea747b72bcf6ee787b78ba7b7af1edfa2834c15605fd5805d54819deac02e2bc1628a9faac1b67ab056db560a76e4da3a32f5561cc8747d1e92a9c1b143da0654423930cae772b8a97de54058e165ea040eeaf8b6f5036ba703ed454ff87839a0a99ba672e457e5288b72d4a91cf57539b04895a91ce73de3fd72f406661ebe47295aabcd05418e0f76e2783654b1a623581631383277a6918c0d6ba0ddc7e5ff69c599e78f6f77cfbbfbf1a43d5fd4c738c22fb281d758b8bbd5ccc20f5c6c9521fc6fbddad7b2aab6fe91075da1c9978561d02b3ae81752001fba9eace28ffdee7942c07e2ee650951d0050ee71496f9215e7d481db02449ef2725dc8dc9aaede44e3655d88886e2166806502d27a57f345e5def2516e2d96be53104f935b2bdeba5ec9a4957bf79e7285b28684029a563597fcbd44591d941b0cf8418a8a135c133abdb02eb7f642c37e99e56baafd72762a65d7ece65ac6f5a04dbd384f6ed8d5ed79fef3f271d76e67a3a952cb9744ab875794ffe363ff8f06aaaa5e4e08db405dd7333bfca00944d741856d452c7bbab4a9945da9ded43aa738fb96a583307c6717d836a0e443939794df8e27759328fdb0121d6f6a955156a712ad41d1b775437e94f1f1bb6e012c8b28ec55072e1f6d5a1b6e872bf2166b34f95229dd5b84ce6fd30c37c010923fde1b0a9d89f5b618847f3e9b3a3d461dd7113e739d3dfe7cbe001bbd5bf0c4825fd7fbe9667e6426b4ff4d257f039bf4b54e5c1a576126f67d6184cb963ff3eef7bb879fbbb1c95882f5b6e624ffa67cf20239ab1b4ba2278aeb836b17a125065441dd12a06f1bbc29d067f5d940902971f1b647f19f2df9d240a51698b4261e66742659caf2d908e14d5c2b61a6a4f221141c3b0810761e544c116279fc26e0ff64badcbcd01d450979af6ec21dd57ea2d4b7e48026c3135e33fc5b5c8787f0c7f0fa1067da693c04af72c8c6763d099e0ce8f3284360a7033d0f3c314a59324a6143ee74bdf6cbebe3a86e60f5b268170734dd83cc94b4f9be0dcfe24e7f1c2fdf18ade2ab43c8ca055d0830d5f6e7bfba1319d8e913b8b6949515ca8188cbca2adb5555341a2d066af942c600d1bd482d725c8734be953c055b6bd8f99349c89083dcb997b5ca2295c16b2026e3d6f5ccf4f3594513adacc55939e3e3d13a287921d128f5da418bcd150d763417343095711b8c0fbd35a14ec1f01c20cba4b2e665bce9381973848c0d4877f74d7fdb3def26b92337c88546a7af83985ef63631e7a986b125a9a538876a625986ce2ef6827955c4915d0baed551b754ad24f648f188c3bc7cb52a0cd67da8485f3b652f90486f9ff9b2b73a0fe5834f5b94036b242235ef427990e5ffc1a3bf0665eb189aee760569a7b45cbd951fc02eecbc580f61d45002cdcb2af2f8881fe44c8f17ce833f2674814c650c6721bd2fe9361edd0d82c25039f48d6ac643800b5f420bfb14ca73b759a631f4366373639db75f4c4d156493dd84b5b89cc5c1c0e02354af0394c3ddc45aaf920a6a41c366acf19e7aa49069f564a803176e0bc9113d9f8c1b633343fdab0bf00a1557a8e776429ca50e1b4f7a80e823e81eb2b17ed401f4755b674a1e8392f7941378d903a99947cd6fb7d1c430f2e8f908d58e78eb1a1c803f74ff7437d3ea1559d9dd319b6ae733e51b7027913b4c660daf21d9ec66b2f70abd592b1573cce0dd5b160c139a351e0f3c0bd6f8f6b7329b8be2d78d6b0149f8987e1385c06b961e82288af4902eb51ed24f4aaeff8bfb89dcbbd7c65bcad444648d286381d42e55530734656d15f529dfef3f5fad53175c24ee426d6d019c8b97fae3af5c127769f62e5d1d37e84b48e1dc05f7bba77f342075856fd26b6f4a569dc6965ed159255a3bdea4a232767cfcf4f79075c56ca4f1b1efc41305bd6cd0729acef82393a1ed7e95e463bffbeffbfdfdcbddc971b8e6320d044b5ae301e5fb3c90d19b0051968fab687d2d0ac4bd978c23b70e02de756b2f48420e5760d45751bf9b99c240c73750b06a25d8b0bffb76bfa31fa96aff6e9ef89c76fdb20f7a5daee803a2272b587650eaf951271de128061d7550651bc0b0d78afaf09396485ab9e6e12af7cfd97abd46bf70b856e2c3fbd1a80f9f8f3176f7f073492856e4992ed4f296cf74cd2b163b21bdc16de395ff28b78d57fecbe51888cafab5089f8daa5cdf6cbdfa406443fa0be7cfd5f8f8e36e16e37bcf277fa744ef36ec7b4f64bbbf740120ff23db4daf35868d2a1fd7d94ce87d7f92a9a9d5e2d3f7bb57db49205a49ab3a598b68420b2688eb1e8f0eda7ac1c9ea599a10b635799cdcaa524c59d165fa905fbf12d60d26a751e3aa65da81e592ec2d001091f92626dbad2d1b07c95a5902a28157ffe9b0c6a729b0bca692fc7a7418e547d94ba111d4a3e4dec27623184d46312a378bcb10eb088e6afb2b4a6d1ebac11fa32979573ad883b5c06ec4b61c743c6a343e3141e2f09626e18807988c3c0a854b1f388f00af04c6d73529d951c7fb877f1c665dd30f80cb1601f20223611db86ac376258d01e49ab98a89798c267e3c177801115d87586ed2762d5de31066729aa38e406276f94348ccc332fb302ae2e020a139d94d878591b52549e82b33ff70b2b68e601e84dcf4a77212f7f70fb3592606d0e652affadc2a9311593e6f946505dab199df7e35c47e11ee47baca5542102b1ef57b5ad59fb2cd0652845c35ce5addfd3c307d59d515f1e5c36b66a877d6c6c73feec73bfd63787c68be6454dd664dbfed62beb5dd8742e851d97a4539f344157ba28815b3d16fd2d60fe568fdb29cc7fb6f4d5ccc12f9bf62368bc9212d73d1a8ab86e839e9c80ab523186eaf71b75c787e6bf3d2feb1912f57a44bc52fd5d4a0f0d2b682e42db96ce3297b0f57eee83927d37980cd9d894945249fedaa2930dc8ab57380ba605709fca2011a1e519dee869739dba7044d6425e4640b4bfa8481e94d54e522d59d9f16dfe8f8f2d5e64f1cdb7df85814e6e7c3f3eefe618ac7a74d18b3b6768056e860c7a82ac83180448dda0fda8eba21076f656e3171f4040e28f6382fb630c5cfcaad9359d4a64d37665d062bdff2b6c7bbf37d13afafca40cefb26d66ee1665988567e92ec07b7f9a0aefddb4b300b54e98f56787db7c164957f85bcec73cec155a360b209aaac92f5961c56f19296282bbbb64735d112c97d3e4648faae10283d6c3bc416419e9aec5f6af7a187fdfc7e181e5ff3cdbf67e2ae38c96b53ae555037c3067f47e210eb68783907bec5965c12b533a0c3c95107639376c0440670fd20b79b47317668e2b44591f9d746fe759ebcefd154a4b202205bb159c107eada5e8de3060bd49d5025de710f8dca215d262b4240d43253621bd16b1ce2c896d051d29458226d42d6a6386a7c771ac0fc0e82e0118424bc01229699514cdf84a3e38e0c96271df066389774032a630f3852678a251ebc73621b59938adcdc89159e3de9e9439e9fdb4f9da8703b09ea43b5dd157c2cce480560d7058a5220556b12d98e13710806644a159b8d5d004d8333d91b670ad5b8a38cbdec4cf2a8a9606ce67da46e211872b6a7374e1e84cb721ef016004b10b28a6dc826faad1b7b06b29283b1a6022a8b902c92948bf40fdfae81aea32031631d95d08a81589a37a92e0410b090ff1c9feff5e16ebceb9f5f73ee9eafcc8375c7345cb8c2ab94b9693d2be952c4f6c2209ab9e7cf4650126f300cb63b063147d60cadb78b781908c1803f349eec4a5537982e961a42d2ee712bada4ad53fe683a7783ac7b2f759b28322dde8545405e632c62ef0b0255513bbe364d04e9880ec1fcf83b05a501acea7a4b7bc3a37444c238ed36659b4d2ea3851cc43173eaf8f02d0ebc8589000fc5b76ee2ba373cb687067fd3f7cf77fb16e95a9b10cf4df80fb984fb0e4ee865ebbd7fb5a35e8968259587d594b15771f38b20fdd5884ed4792dd0beb4e42f12cf5e710bae3cb5d8486b31855fab440ded9295325ed97c386a7b39365e3fb75af334067d353ab63284d7e901a55b8df70fffe034039e37f706d833af623a2fbf6dd84d781f8376d7bdbfd5cd93c307376ef2f52e333ddfe31fff394fa46d6f289d48f58feed5176a12ac098bbd21f58a50ff7c63e8a467f39a7c6c7ab8f65ddb0fcf8a226f60107c154c10ab16e90bd316ceb483c3900272acc0b3409637304e80f5cce38b9bd09a8c7f218515cf94b022f14b13198cd38ed7f21b5be7fafa71f77498f8752c69354d051c2ca4c9e849b3d163df317a68f3d879ed2f9fb47998a02276a1d83cef9b3ce1af9a3c3400e51a20da0e9cdc61f25413c56d74e23d6766f53bb016e7c6db9168f588d5e117464f9a8d9e7c66f4944ba3a74c464f7965f490aa2a781a3de503468ffb35a3076c37b47aec47ad9e345b3d89560f8361307baccc0837202cb2d57829922cb5fc33d868723cc02f48ae71fea496758bec1fc71e47ebdbca6c645fbeda624a56fed7f6663f3abd5cdf173e0d97a7bb43ff74bfe041b6a6c228765063a7c303bfa2a9240d621df606daa426a0d5221bc810e3c5fa4d6061cd4007945b1b90ea56a1dae8ac01f601a9729536a5456281a784a2b71be91608e4ab06ca919e2e6e4d18012a76ecdf50884c6042a1346f70f0e6b238759b4819d046be9a9b02646dc3056e13ba25d160298de8a6c1f8781b8c4baa6efc51ec74a965c835a3b8596c5e940e794ba0b8213745aa5b93ea0dbd66e4bf65d581ccb967885d3a1b486b6a305eaacd717f2480a389a466417a592ee49eeac028538d4387f58d980b7f734308d8462688b03a920930d022ba360642d5e0c5a8783cb1d5c84b2143ddbf7c0ddce4e9c25cc620c319f05624605390bb809d9f1a3a2e1e74cbfed0ed8b9e19339e53339c4f9e3d48f73f7a13a4e3642cacfe5c43ea708a0c0e7aeed5a72f0fa7b8e2362e07c565b47198c7d4fcd5e1a455e50637f7fce7bbff7ed67f3cfef7eca3fc5f1d8f5fa3ca26d2067432e24c94ff0e9cd141ebb92d833be6419b4558144313c74d670c27ad80f9cc035705ae3171537125e858bc75af66fd4abf5e9c490af4b35b43ffb25e5a79053cb79fdca03f5ea6e7d98b90fa11c4ee17e6e0c3fdc37fee5a14114c04906a0a5e370a4f5b6fac6f30068b94de08ee82ae6fdc6a5635ce65e098adbb91294525199d449b0161db8eae48f5f47220b899eb0d446a6d90252833d2ab2c5cb2668702812e33974d52247f63c12a2865220c0b49540e286f6dbb05456bdb59394cd9f3ea42c80dcffff87cffe77dbf93a9fc302ba79d25736cce68115ff6799130338fb2821db064b19ee9206339e868920756659553e7687cbe890cb8d8aa02d12241954b85b8c5a0528b867e0f95fddbab276cb2b3df7efbf8a33a6db3293e7c9186a0d4d7c4ed279651c58e64113304a0d518b3291994f8368cce345db03366ee0ee9bfc174d96d2fb25e0e2b9b1f2bfa78cbdd9279c698da40cd6da05eb7c10598e2686c4a2f7bb1705532d186112c03e8773b53b3977f0d0ac340e53455062ae2ca2b48c44d7408b31a07392019480ec6a314c4e59da90b8d32ac80f57c523f937ef5268f3ac8989497571710cb4b756ce19ffb3f90703cde1f9ad36372002bf02006e816209bd853d098f128b0a8271860d663597215a1ef4c0ed10acb38d04af330bc1d73b8c504c908b677f928c6a42c51f1184d8a2f7b19dc19d4529616bbcf5c060ba3bf165f22e44ab6d0d004a1136d05e297c092680b4ef605f0985861be3b445fe52cf92dc312711156aad8a6419b1227f903296c6c41de42330653b325cbac97a62ccc57954a09f037e806c0dc69cccd4593390bbaf171b65fc486d3a04c96baf154f98f2c73632b66d44f1ea0226859131ab689bf535f1e36f7601be480ec9e1e3b1a52de9c0f8c51b39692ebf1c4cdbaf464530dbcb765f62d081360d8a5c9d694ee2fd56e93989aae4a2d7ab80d5dc5f751beb4456ed3791c26b33d2850a989ed2d9340b1b2511b9d3dc9b327454f7a69675858d42d749ca4934957881639ec39a0ee2349202af3f611f44555c1de0ce010080d2d95ea461656034071f03dac4e4bc570ef69be56e4dfe231e68b90cd493ccd9544a94bbce2e5b6ed14cb4aafa366f56fbc9cac3f3ff7774ff77d43d6c8e42fde1189af61df1754669235f820fd19ddad346c91a70d6ed159aaf499a3352e0cce84bab551bc0e00c9cac631288f86c5c5416d134cce2f7bb915c48b7acdfa0cf0f9b9f7863105afdaf54c5249263b8ce6ea2084e7004d7054c5638e4d5eaac7434ebe0d20c8817b7261483f4d1c9b2eb57119c9874d02610dc79769c21a7dbc16fe0d48aa2e8e63d0c20797a791df92478d950cbfc38569e7498624c869a04a1f0c4768c1c426fec2203e43dfa218911cbb95539d23260539b8e26b4051c51fd86703464098805b8de6396376b3595a14db9832e9d6647c3e807b5b268ab676423a3f32c33a4138c28244d371940476685b1826a1ae54b28d311b1d40a6642952315d3cca78eac9736bd9074d9169fa60a2216dbaf8fd14402c989bc18cef317ad1c14887c2b84982bb12e6114a7e52baea3673f0130ec9d47f4b16efc29e24551198bce481598167e331d79928534a4d8d35bb18a446c98c92736b28695708e7272957f520aacf52a8625c006da8830a8cd430b2f6c574a12c3f66d9803ee03da6de5838ff53112161c6aa6e77a20a922a95f2237a844e8287d48490246c8fc70289635421777422ba7fc62408d51d387df2156fe340881be8322346d496532822cb042d3d2573a97519c32326fc56ca1c1a4b140a490caa751c1a18fc9105a557eedb16a0ac5aa1f99a8e6a09b18d2f195bd2c9a46fc9e8a355c3d50343a536742bc0119c5233ed804ac46bc4bae9e8e386c815b390f9551a512e8c1a87073db4695b1e2462f025aedb35e30138aa5a45653eb174c50418043a983b607546d681c65209862439a9937a6e8904c03349b942945163d143c58c48f0d012cc1f39c357798d8c7091905ca63480ce10208ce0a0e524993c2709163006346589145ab3dc3aa6fb5f2aea3d4d812c99ae184dc580f091c60da2130e8cfcce583f248081419629731669e85deb790e959cec015bc1624b484f4632c6e39f7fdef7772725d7f88b19a2e1a8d3108e692d75e96df9d6a65bd8e984ad4c7c484b4543f9a59c7eb1f6b5626b1c746887f259c6fb8709b88f6c9fd2dc8450a6d0762867b16d7ca16df73b08bd5a3ec8cbd7ac6c199dce9b38162de67e1ec2a88b62bcfbf17ed47fdedf8ddf66152c9988312f818fdf475d1bfb9ac53e1df2fc82b13de6e58c0959d604cf254d3a95e39c0df662c4b4a1d7273e4447e16471416ea4ffcafa6e41cce149c8d3cd14548dffbf56533c49780a3c235b11f52dc61ab0b879cac4df822cac03b54de71058437932279becb8ddb86c6a05570f0b0848eeb5e9929c3cba89d609d0147f3defd05e2512fb1a0d8a55462f6b8265fe44f1d07abf9d7e7cd93be3a3cac6561e574c2a202054f26ed0d9b4d67a98b2aba7fd2a79aa41afed3b5ff6ec0fede1956bf9ffeb89bf870fe4fe239cb19afe2ffdfde733fcf0a9c3f7a70e7ceae78745175f2860b72ca337c2753daee010418654793914cd0f9a6f34febbc9d2da4e45e3e4609b953739a978226b5809342e824f73d4c35d891c9a2ede78729789739d275ebb97fd3ba2e53f76dfef34f94de761ba1af9bacc65b84c06badc0795292263128bc74a1e124c5cb6938f8022b8ad1f6ce2ecf4db8fddc3dda80fcfbbe7c304e81d6c598acd230ab7900c47652d3f4b3996270006a2dcd1ca6db67e0306926eb0f285b65bffb297794b46843bda8df547ba1fee235fe9b4f86a5ba0e2bffc265d7cb37ccc570ae1acf5577b9c8c369ef653a5c69702e4db49cd21cc438c7452db3af893ae77e4075d54d9caaa6051075175b248f8a3dfe4992046bec9b3d0b75c67f929e2d36fffe73f7eec7edc3df5e3fd8f4984210225f8259a9482e26b4b500ba06ec4066740a0b100f520b32f2247a3ae06fc8c2edfc85389fb049026373265bef60712bb586c71ca72d18bf99291e4e4a62f4be43b4bd0bf834381f34a166373140f5c5748fd88c95493fc71060e8887590139f0a839ad5729a49479d459e66c580cb4cb211150282383d08bf8ed62fb8332d27a99e8e51c4d2ba321265aa6ab6d10d67696fcd0e42f12ea22a02e7af29d4861623095a22930995a2191d222e391a5aff278491e2ff6d88895250ca8696c218baf0b720085ef2dcdfe185560f42202a75a4069c835ceb3d8f0686c5371375e1c4f3e839852a6b36391c55bce91c60f51f1b5f1ad763215511e459ccc288f834dcd1475305d625f7ada7d7fdafd1866466cbbc937a0d755325f3ae5543a801358fe3b26ee0c1433cb32cbbf0376796775664c70d67ff0506b628fbdd8d7bffc6e2975c142b1accf43033c771bf7062ff3908f61f336a9f2108f61f3b650cb50dec4370eda1f7518e29503e469f29bbfb7a9e779d087bbdd533f60ea09ea1a4fcd69723f43d5596b12b85c9c8947edc10e01ffc9027ced1c82b5f5e88d77a3061b723eeadcf6e2a84043101100e0f5588c6d97db5e9ac70bbb672b6366f46469473671730fc4df717084abbb4528217e313188bf3f754813557723cb309d50526eb6a5cdc1ab49e2a7873026259e54c6163f784c9c239b098952b8550f659b240eb198b02a320badf61375492041045ecff6bc8e3a18d7b06090e10900f428e3ecd11bb026742bc949ef358cbf9abab47e0ea34c153bd7d89c86d44cf0602cadb08bc4604754c66ea3b956aaa335358d56d92dc6de9cfa8b062f0816ee350875a389a9474d3a3b6d8d7be4fd32652590c6849eabb5b3b3ca102d7ce4236587659e7701b5180a37e2fd88d8aecd3daee298ffc2d79c6e90f20afe4d1341980805a2df13bf4d94816a7c9af8cddabe45792399563218664726b8f8be45c1b16e30f460f3c0b48f80782ee24a2d4e56f8646ea68961468263ae8af8fd2e20d8e0cb48937852f0ef9b9b1d1cece155e4e332919f70f6945ff63a88115d4a3fa74fcee0b1c344bba5c9c24b84d7427a9c13dfcf037cc6acfc6a26ea45c2e1058a652d6f16b8c34b17e8172f27e5bc7bfc31deb59544bc82bc0bc823929796c38f54f22e310dc654e48a81c306acef01d2f06c58e94a496321ccb9c548b9dbe14ebb1cd8a945040c3f5474b240121d92f958a641205c16197e0d2dec8ae06f65e008042a08e60314ea46c64f6dbfc61854c696d245c61a970ce35619ccbf9ec8818c985271dc56f1a73c2e0bf3810954ce31572b4e595cd21fc1ed132b4336b98565540b85a64954ce25839dc8ecd156c9f8688a291194bb060c50620c650cc082f4246c7d584fbb097f93d811b9c76648e6448e000e68a410b1ad0c9046d4968c1484bd90b596981ee7191fc80c0b7203a4c13917ec4d613a2d62262c9530c24e11dd84964424ab635358caa3004c00930754ec996cb59ea5177b28a009a11ed2fe0cda9b4ea6ba6882f4aa2ef516f147d01a31052cd06c45e4ad51d26758c4d3df8de9c2a1b1bcb839796b424ea81939a126e4849a9013aae1253a8a46d202ec389b7247891a8adcb5c328401cadb03b587362bf06f58a9d8851da5fcfb161639bdc5ddb2ba84d0335357549cf6d87dcf60431d98726958e7d03f447643c9adcc27d5e66f5c2c030b32041c282a4c29d3729c86c98c24c44683060d34d321e8a0d5165083baaa2208155e4ab869590f33d58544e67cb6f0901a7d43011ae4122e2d1741590d6ae627572d284056c679e796119a2b6c890cc787497899fb57ce8f00a7d11f1e453bfe4b4d1fe4ce795a9e938ae981f885704b0b80d310d87ca8696cec2b9efa9bf7b78de7dbf6b38ca256bc90c9f4512d00ca8057dbf3f9c584b98cb3c037235f264c57f8e57b29ee604e8d5d0c4cbd7a232d0906797fd5dcc7b1f9453f19d52bd88953a012a576f72a574e01e5ea136d74c4a0be536227f3299b0b69e5ae99ab58e190908de54312a0ab369db7e34a694d60487096589d4886c2a0c322c32321300c060ab8ef202321f0b62bdc209774afa453dd529f3b7fd4534f1b4a11f1b735beb03010225cdb49db27e9da6d5ca3c034fb9d58ac8b9a38e283454b1ccd562b861e970806b530237bc1c97c16a354b094e728be921371627281f390748d79740e732ce3affce54531db4532cb48f6d03965ad51d3484a31da303d5edcece86cabb58d694f8c47e0f51434088602a3c1a6caa329b423a89666e0a26ff00cb309ada149eba622c5219f155aef2ec320163ef3058b0372d7279c935181a271348f8ab3505d3343271dacc03aa4126f352fc5226b62ecb24c4254f6a294bc16bfdddd444f41f6828a4a3dc3041b97294338f37228fb74255dc37332440ad00fd6d787c9860a215b9e411e602275cb8140e6adee87631ef20df5f4e54926260f48d4c0be90d406362c7b6348dd0ac1a271f1dae7480998d8d6b8aee1246d4fa2636cbf241739f267b2984f624209461a8418b184c80f906be29ee3ee17ad3ae61c6b220ad9b094473a1a5abc888cde5609071025941f44184543c9d4a19f837d958b1fabcbc24878c2f849c7bddd0a7b4802cc072c6deb05f14070128a9f6604aeaa553148ce4686251b2bc5753bd787a2a9a60559529ab7d8d082fe8a7c4564722b90accd8b608ce20c580c9fad24fe4cef4c8efef743fec9e1880ad0a69c10142e972056f7551857b0c414cab266cd20555f927704513c7557be95772b4cea6a64ddd9a5aa8fa2e2b79d9da6eb0dd0de0588871a301f91b7a1491ced6d2d081007061b22c8620347111c0be4dc642055d7c0af4ec90c80ae9746094c79631c82a252f1aef2069046192f907bcf43201c25285f40f3a5ec565466f8a8e26555a50c877abc194804298ce8d3acbf4232f7c802341add114c8bfc45bc021e3bab734839547e405442ad4226523138621d3f30cd94582b05d0b8f3736dae2f1d2735333698625bb306d4f06db60da365e674fbedc5239ea35e461d4eb7420817420f9b09058397975e4a0fe6406e76fa8db45d4dabf4178eedf459fad50148069e97217f57d24dbda5693f51347d18d54b7a7d0894dc61515954d2a7e1acc0e5a8760b7b2e8a9b9bee9226fca84b7ffbfcf7b53d0d1f2c6dabee91b01e75155d2695bfe1a2f00a9825688992f9be992c6621d7cf963dcfdb3918970afad654b00242e0e4198c899b4ed743a7131565945ed4cfff5912882c242a7e81e660281d22492335d9d4125c7d422249394561016f7c47d8270eb55fa95ebec28f1829fe51527cc55b2168ec7c7f19fdf1f1ff49ff7e373e341b405e15ce685453a17391a1b472d9d5f07534a2311ae8c9195b6709e8b9166990232c5483b381fc80037b68e32cd57e56f20b6164d27ee92ab2a8a252f6745ec28202d5dce16d74e11be2d16843b661365ea4b62964c89bdb6edfb2c3588732028a55044383b6d079c8b0081a9d305e9a39f2926232d49c6976b69379dbbc5c32a6bbf506e0903a7a80c475dd6d49e2968c8c7892d19a92abbf12643d008facb309da5c9337200b605115359de833495948a66dec45aca784a632d1d032cff1ec113d7983b0b4c8429b519a67b868f3726263697d2a2402dda51985780137c46a4c29926b0710bd91745bcfb8fc7ffa2c61f36b6df1f920b8985f34dfe97bdd7d90490a8a5de1198265616c293014c6cb07d4a8695a7b2ce2a1f343fe90c3033e94e4c92a5d66615a457d6ad3331de0068e0f1bbca20a856d6ee28aad35aaa03496785556b35f236932e26440e87a7bb6ff7fdf3fdf14eef1e76e33f0ff74da2534c238432186a002d361460213c61dd8dcd4db05181172e436a4756d01ef9561819c1b03b1857bf7813018d8f7e9a26ab3c4d775388dac852710a210931847b3d23229b9d8a6c5f94c08b77ce8d398b9d3c88d3d91b1a7a202449eda22661a3221419bb35322217384f312e27ee19bef5b58d1ce9878e7c5e85ec418812027025bd05b07940b960e67664cea0aa5826a7462a2daf00c109e5a8940b1822e50f1baeb278dd68e303236ba6588013e09a188aea2a67a4e290b24fed4bae3248d962563a7667b1e728de8e538dffcc4fe1cf4a3f717e8311230f2f3e04163658f5ad461953286050b37ce711cb9fdb22c1652895396832d6c4154770c099004d7ad4902b231d07473facc8e48e14dbdce0ac761280268c41375c6a9cde3459ba1c96c75a6f6c68f4f6f0126562687fbb00445e34399be640d2b9b3a71ec5f86d4393cb235837bdf1ccb1978744b01387027317473904ca89b1f53e5709dc4b32978c905724997fea0db2b16c40282e885d0d0569065269ad7b710e40a14c627c7162c96183906453a433d58f4caf0ce228392660cb1139e989b3a56a103f93869a41c696b48c8de9d842f0b56ab67480ab3512f51d4a8fc1006a47e012620b5b87b6599b012993571097b826b7565db3deecc88825ca8f0d1bcda8ac14c905a99ca92f25664e7ae484059815d5b7cd77668062ea402c544a5ac9d27244e4a9274a0d2b86f8f4b33202c2dc2d8d3a6036c5ac032c786edad2d263d80dc40bf7f31f8f5dc918e07a6424a52261df3744466454d6c76680023b0ec039df15a6a962072222ca946cd317d4447bb22395d33bc4fda517989ae934fa74e4e0089e90f142855bc72a4a3435fc940e2b6329d7b121dc4b8b77c59d3301a1dbe0e20cc4f100b3c179f00507e63045aa46e6bc5bdd100bd3821d1a578f9e0ee47c2eeea3665249019b4e1e49c1cd54f4e0770d7317a64c226c2e53e5b7d9915506482c10b9088603cc972fe727564651fc49a1a630c01b4d94011142837ff01fb2429866e891e861a2274d686cfc6a814d5a983a8d99973a97e8f5d384ec6a139d28d8c4e66b13be6078ab4efb0181486ae066b066b51d728bc1c3c23a59c6dbee8283b42507a69bbae29c943ebf41451696cd5666ebc691b920dcb8ed123ba86b2ed388790552880d2e2083582c2b4285c224bfee99c222c60716362f7e02c034327fa2f704f49ee64f5a05543bd58f97b0721847fe5f822a4f9f459587bf01559e7f1d559e882a8f6fa1cadd1558b90cc9804dc654f9eddf832c0f4096a7966895a65d91bf802ce73cfe32d107ff9b90e5add7dd3d3cefe65e0721b4f2b609fe0e4bf3d15ea0a1401e1c7e91aa949a8fef889fb9eb5494572208b788ad23f07549f9e3df61ead15e59b709729c3b5221fac7d3fd03e9eb82b269938e3a6cc225e5e91a402c0eda1d0310b7170c3aabe4a383755bffb2f76a4d66e592d2c81db51f6c38fa8f45beb45561d06e9b91a28b477bfccfbbfef9d03cfa8b20c34adaf8d10d366dc55c75fae3cf244edd1b828a9748bbcb7cdf8bbe0ba2a67cbe19b7a0575b6c190e52e6d4deb4a7fe71f7f47c7f87e776cac64fb126773a7feaf8a8c37582daab22df2f52c01b539b76313cdfabb7b35995ebb2e1d7d972f79dca7fe5fc5305ffb3c56e3f25a410f53bbcf0ef70fffbcf36a74cc47f89b95f5b5d36f5ed44cbb78524a4b47965effc70da9c5e087d2c37ca1186f8f9c7787f18f49f3f1ffa99b72633c468a4ccb25ea4c0541d8aa756ec8e8da6201430989a465ace791047a72711a69df6851d5d5b24e93980378976257151684108eaa259640c74107e6b026dc0c54cea674c9cb37453c52e6d081b82233d2f14910109ba537222119f630100b3c9b8455415c48b07e34ece08f200e9650746d0c4b168492370de83268a2d200502de018d484a7051ef91b6bba52810507095fbd51e6654048ab441b2c5e6e193e560ac1b01e0cc793035de4642f6917de93c18a3e02dfa49af3636f30c10e748c03bc271ccf96258c1c7864962624db380351814992183e79e14dc32f6d63d8fcc6da3dd4eb61e7cf9d8f2c9b051c8d8a56d3b9a9135075c3eed3aaa1c4560822d8be2d8199c27b532d04c1519add9409048ecfc2ce52f495ea7704f6ae19ec4842aa081dbe62bcc7e6c7fc9e267c831d6ebc634abdb3e856e7cb7bfc00fdcb8d1af191cb3a4c02f6e59ec217f974c2e3d4c37ebb9c540adfd96d1db927a4c570e10f32fc0ccf6ad63b3cd7038064b58f46e783f08ac646ca72393ee406bdb357c6e3f7949a1c1c83d9bd230c0e61d62f429b30d0966a57429127c76496e93084882038808a88de26c34d87a17c5169d02c320766b9c02d138849782382be2b400eedce27faed9da0e591c3e207612c9b096117a7093574b24393d0dfa0e0ea870604da53fa836cc81939621040510ab9af4613721d52937e45bc601ba7126b02fb714b169cb9f986a870d735fe44d6c79832024009415575228b73860616a9e8e885657890eae0786ebcba947f7063c6e1492cdd033c7a806c79b78b8930a2601af0191facc483db3b9a53771fec0887511b10cc420b121eeedc8d8830d3d11c7f4871183a6fa19d3453154d1a5403a1126d666386aaea1f6db58837f0354af971500d78c8518eb642068411ff7e7789830abb61bd0556e6d30557a521c9a14896d79adb141966bb3e7d03cb9a214d59b947002bc5b5041e5db8c9d0e539cfce2be989a8bfc3b11682328867005ca5d83f88472955bc47fdf13a1f13d4e57865ba28cee0e520824d745861c1d34f29d1d9098d3211ac52cbd9ae435f809b2ee0a420b29e11a6048293c4e5612c7746d2b4e1f5a5e7c7713d365e2f1994df5b47bf8f6b86f88c990551c9cb1eed6460320e6bf43c0e503a4f07e832ed8220b99829fc9f83c277a6a6884f8069a064ce8b63dd1cb5e1c66b59e6f7ebad5c8f35c95be66dd6d30392b0facef69d3b6c8bf8998e83d852b67a21fab2c3b16d9a06d6f5606a023330d1f02021dff36f2f4b6130e4664fb8e14939f01f458be994e3e29e24296452357c8228010d36dbb2a7ad65dfff834e156fd2eab7ca2860d6af15173c03fdd7d7b3c4906509f29bc91f8f8ba77c44dea35930580d449552760ae525549fe1be251bb4dba8e1e685ad236180fc1824fb642d0e1738acc62b4bc0db35ad77d79bafbf3e9ee304cd3e28a176dba74631303a8093071ec6ada05447e81957fd36ee9819a27385803114c8d7a39372722151300c19f4d035a93f78702ffd935584c37239221fe0b7325b4dd96a281d3f25755e3d76203973462cbf850971a1219025b88b23954a05b80af9780eb35eee4a7bbef4f7787c3fde3c32235ce4229c31b7b6b6bdb3dac23254633e40adf57c4f988f0df6b2fb2eacf290eeaa8c2a74eb09d76afa9e00e177d773eaf5dffc387a3cfcf62227f95f061df298bdcc420fde804723f2cba799901f18baef7b28fbaae44a10ed7e274e7e92e7c90572405755d2c280c947b6358d06fc245975da1f3bb226511dbd55ebe22c9c1be39954d4958480eb59dcabfa679721b202124e696ab62b9adb01e4841e4d2b70ea6bcf829bf2219771b1488a847d852cef8cbaad6e3dd9fcf0d2b6aed708d94e26ac2d3cbdf2e349227517edb49ebec130456a7c6ba7c90a7fbefc3f36f7fbfe4c9d7b920b8f1447330974b179dafd61ba94bdfacb8c5933c3dfe97fee3f1f9f991420559d970bd45ae0731ff15d22fa07bb0e9683bca004c0a1cf1fc399e1f7fb487287fe119f6d6e9f2f73fc35147167a66dee1236146fd71b79bb61e2e78313eb0621f5e5b1cf16471bc67705c9babafdca5bf30060e8be97b61a5f46273d34a41b4278b9512d6ad1456c5e171e4ea02da76936fb2a92a18a7b20a2aa900cbb21996b9d995996665df62e7da2002a17132187980b877c6f24d7730154a1f4edcbe17a97531fc98c100a27da6348506e86ab401065cbab2f8aaa0dba7de14b000c8093c8d294849a3541accbc5927f90f49d2d6c49b62c458cbb2a619a70a0a5470a2936aed2d7244ac424994d3019cc652bf1ec9f034cfefbfb3af07e36e32c8075511273663a100da292405fdfb1b2400056c4923ef5f7ac386328c9999ef526f4959b99acc37402a06d3552886cb92b0ad0dbef76a23688552511a7fd4914e43be1ab0cb626205b7228eb992ad8eeb06e9cde1eddcfb29abbe13c70299a933ee669231587c220b2b6671fd9f8ff734024efd4efa9b7498cc20476ba730f5845e4be36b343efbccd435a7363fb42eaae7aec99e693260eb1e71630e048df05f018348c01b6f6a3c304325c7e98b5d305d0779bbe9114858d43a71eb7caa0d89c3d40bc1aeccfe4d25894c5e0a6c366020b41eaed9c3a5af01ff259f01b2c210b45e05194ee1efeeca0fdfff367b328a579993ea40fee0828e3a1ef84645f9a7107d900f7c23dfb11f3c3eef9eeff4b7c7fee7feeee179ea0cd404fe626acdf24f4d0cca696dd7f412695e2f7b72e9df0804041d5ebe5aac17615b067fbc403ef863022b03d201621d71ea2f20049c7237b5e93d6425865a76aa42eee41c20e094bb36d846ecc0b8bab1b39b32f1339f97fef07ad7fa0c64b26c831fbbef8dc82828f7bff051f7daa9b8da7f2eb6c92ffacfea2e39540803f89500023bec9eefc6f1fef98e10b099e94991fce9d0189f94edb51440ca5535507b8964510d0edb88c9bca9ca1b8b2851067fd3dbd77348538c9c3d70f5f56b5ace40dcfd7cd9474c9fb93781d76aab6f377a939437a937c120f19f2d02761179d36bf9ba915ce104ed8d4c96606468ff73ee0b23256202642064f1fed8bd6e0b82aff9e256b71ed9c7f6f24eb7b801565279da8b1bc1345b79285966122851ceee5419055b79a664a29cf622cd3c4b18350eafc354f1734bcd0dc55e726c4c764e75ab3c1c9736ef250e278db46e82cc5be22da56314c705147d326ad35b43748af4aecb5f1a4f429d3ab36efb32853a655a3f057003a37c1efb4a0e3401e751208dab918e3c8105dc9f5809b06e637fd711e3eae8231dfaddf3f3dd93fe313e4e60cacf056fa2729f3a3ee8cf65515845c2bbbf3344f535ca22fa8952484702ff538b16c7a400211889db94972fc5745d507c6db36a52a5453517e486bf770cf7748a41201221f696a296e4a18f628c00a70e3c6850f2b2b326600329603f80e266486ab0600cb0e11492d60c496b86a469a02906aac56a9ae16d8a3e3f1f4eef9e1e7f3e907bb4c220ac8d81988658528b4f3a214325cc1261aa49831de6198f191f53c2c7448c0092a68fa328bf7ad5ddd8067ae0dfbffd1636ff3b1ec466d5fdeb6f2276e26d54f1b7fff8ed6b343e8b2f91b21da3e9c4a4ef9c36b9cb267745e393bcb4d3c6a8719a0d2639dbce7b75f4e902786928699caaa2b82472bffafefd4ee78969fab5e27ef503f73bf5d5e7bbfd8f71f7dc6c28afcaf558e9f59075a7fc5f3a5da7bf727ac27ce2309f807f5b5ebe14537d557c9de15cb5a1bba43f70a66eba9d195c6e2ad20a4b79946bc86ce2af4f1b5559ec6415e99527dcd9816f084823738f7c3881d45e37c57f4f21c2c5ccf8ffcc93ecbd4cb54d7af34c0b8928ddb7f49bf2e08ee95dfd26ffae7e93ed70a977049cdc8a80536b86efe2cddd7dd3fde3c3f3d3e338cbedaf6d457d24c6b79e715b065db67928c7c40571bceb9f4fdba7d8849405d145bcdc5201a95a124054e33db9e52cf9e7f8c7fbcba57d135650960e514a27abfd7b49de1709cda96ff97b4058f8a65c7dcbd2393155ad2ce231504d313031e8e3c471b2fa8a3f1b26ca70d6cd94b4fe7f6f0fa9cdb36917549897f1a2169f74695de8e19b7e7e9c03fd0334a496d4ba879346a92117b90a08108161d08bc1ee0d32c316e2a5be757b6ba4a96fc1cb17b68cff9a851fb9882c9fe44ba168b208ea809045d6c6a563140df89110cab1c8e579a557ca641ac04679c8e41fdd58929355256e33680b019132164c3eb2d402280a0910cbd095fd9ca6a9612acf7cfae2dac62d6b5d83ccb5a928dbb554f5d7191ef5f617e10a79ca1e3c4fbf7f85a25fe186e81470841e4dd135bca8cf26c65b6ba50e3b71f45a5e96256712bb0f518884f3e1bb31104f52632f57f0c19448c8a12ffcfb8e55deb704b700da21f6c5eca52941951e98f715e94352ac65eb21fb54522341429da22f557f0ee29fd4cf7a00368903ceb631e1567f0c4c4df314404d1e9966259b506eb3492a93d63420fb3022aa10dfaa9be57d0f975e47cf7d8586db416223a8a76ec5c4aa696bbbc174e9d64aef05e94320254fc452ea0841f3b2a87589112592b031ac716d33fc65afa131863ca424edb7b1f668baf0aad7ee773ffe27f759a04893296e9ca8f8926eb486eec6b6dc556c1e2134e15577d0fc927a5db3efec6ec56e800e6e34362f72b392b4c36cd3a8ee6243ad9ef1af0d76eb4cc923b057795b07b78d26863100a876b4e8ce56c97b67c2e8c8548667f6d2d7589e1ef9cbc0d21516f57cfd467df8d8a8102157a54d71909d0283d4a879cb6571e4f6b1b6267ebabf3be8ddb72644811d366428196f92436510f5d8c21baff958e644a429c5b9f14a48ef9706ed4cb0b0fcb7360f2768d32aa9ffee550a1cf98cc3dbb476480280ae52309e0a8ec558ab92c94e1595553930e5ba655c375c1676089037f0f2d53ac5fe34459606d768e3e75093898bc8e0d1cdaadca758e1b9fa699abf7a1dbedaa6852a77fb6ed904fde3c39ff7df7f3eed5ee9f9021891a4e220870e6c2e524b01cd1eb563ae1cf3552fdbe4a42871b561128014ffceb6992de595160276a1a20f1bb1d1d26081446c08d3681c3259c3d150b98ad24614fc0e71d0389a94a7540a439a7036c98d267b933d4dbe4c720818327664da31d37e297a13a8bc675537922b20d308a224a123f3683a5ad3c5d562987a829a466d1a9b6888db42263aac9789c6476cd9f07144ee69ce8b72249603d1600cf1147626a428ffa6f948be1c9141c9531b935bd52df95a9b58e78a5929d3514a0bc5c2c622cdaf5bc5c38aa7fc53a09c202a8c75b233c155f9b7288b1d9178966c83159084c366d6e6d40844d380791612dc696b4d883b40bec3044c863a551c4c7dddfe52c2ad331122625d32d00f8c456a70aa86f9d689b7960a3429981496ed0f38480a73bd1bea35111c124d2441b4ccffcd4ec871a2366c2fc45c3367bdfd083294837cd4f3c7d30b530cdbd9cb29e0dbddd3fd71924505b3483211ec36c446901b0f8cdf53dcf94440cbdda1c94c0f5448f3afe71b3519be9096cab73699a4d2c6dab742ed43c43ac5bdd51e1d86442d01af59bd9e2ce9058813603c03e1ce3859fd65ed3f8845129b9ca829c594027221285065fbff070bcea2a9494b35b5b503c96a07fd3e07460d500900e30f3b56c69be59729febf5d1bb629da8597af32caa2b23b9382937f8a223694dc04497be795bc1ce145748a181ed209db6a02faa62b7362bb252a8cf3662480839b76811bd39c3eb7d1582ffe8c8574caf2fead76a4804316877fd1660b6108cbdb4e301668faa12dbcf137c0cba032b21cc5ca788dffba752d11e52a479a0dbb3358c0bb3b1e1b77e40e73d451bd0d453fb4bed2d069a39389455eb8ee74e45c07f53989851a2f4969143aa0e2f02f7b206d12e98b018e68580947044ef5077c84facbe987f9e3d9c17abe005e5ef6e8560e78246b4f6aa4ecf5b191457ba20813319bb5717c102b189bd02ed5ec4c93ae248eabb3330bbd9ce548fe0dd66a280256e2d1c01de41b87af4cabd33ff956ce06a540fb1194a407789bed136227f43c0ca50d126f1b9694b8fcc531665528739b67b8569a742423c587f1bc960e1bbdd38ec28d5d9d86469cda15544245d635509c78df5408dd8cff214c2d833c7667aa2ff26f5a5ee06183b9a34807299141afe7e7fb87ef8796f67a25821707b7251cfc1a8c316ddc31bdecabb657081f8e05d7da67752d99efe879c77afd8e7e538f1e770cb4cacff3be7e89a5533bb52223bec8951127a180b07bf36b375d4997c8ca6f5634fcdfbfd8f1920b018d3bec9e6696f4b271db381493d3e8f42abfc34754ffb7d9b800f3646bcbcb3e685b18837f1bd9810cef6cfc1bc8aa25f728428da89ab7b25656c9350fc3fdddf8eda4409fb437c5aaaaabe9425155db68b20d204c24cb6dd5b2d8b992906f5962d648582c4957febd81b756a353a04c07b8503966facaa2850c52e48e661f90469ae44245259320be1fc4620f202d06d96ff24915e3a3d73c42969d2aae7c8adcaa1e1e29330699bf2634742147402d9ef6a1cee8c642430ef15644ccc475420a8a6bdae28e0c4bc9de76aa983898ceed1c82a971e616edd42f7d03cf15949bf9e5ab07cc760576f02a0bdcaee6cf8739d3d92b19ccd61db58ce94be291cbcb1f7526d90916f9e1f1c78ffb87efba9f213545d9b029603533294bffcf6f022f9d260cb42773685b70ba34030b5f518e109c1340c70390a8bd09a610b309ef47bad0da787b156b7365f420b807d0e33db0d750df83c6bc7c059d621a2c443e19930a9b6c7cbde52faca9fbbd5452b35dd3095117753c4f2d44b6ffc79271de9862d7e06d55e5c11dfda66ef3cbd7d43ea46d7ed93b652d702df2d5cbdeab6e53979fa4bda78f9d0e3cb4cc3a7ee49981a57e18770d0c47b72a20c85d0849afd9e4709b6515b74ca6eac8edc7053b344f6849af4b4fb344505254c81f635f2a8955dcd3fe683a2ca0f55a857e1df6bb71d4fdd3e3e130d9a100d38ccdf8fc744ae1aded1a9c66325faf62224bc3d344b179fc2fc049db4dae98a6575992dae32eea627ffff0f330a557d615fae58f6ece9f2ef9635c5c71d0fe72a97f65705cbfe765deeb2b3be45d0c752bd3f37dff8fdfdaaa1c5785626fe18f2c8151bf90a676ee17649d57e055b665191f1e1effebcf71f70f9a0bd003cb391d9d297674b4f15d703b534b967f53800854ef2007abd578d00f87c03741d69e5b0b759060c3d656f1804c6dc1256d6a4d0a60e984b78d4350d97a04616c1ab5a9560c5ee851d6325ddf4fd7b7aabb281008e8232937a24f4730f18ec85e4712829705d2cb02dd6185b52199288676ee2229f05d282677f9dc8736997cab2e8cc643d6c07aa4df9a5cd13ca857af660ac72a4328a5e5332be3c185ea531ae501a42c966a44324d38b77253fc1ac5e68fd249bcc932a514d27d1664d88cded8ea490e1712f61fa8a8c9027aa851386f0ab2881184e89a820a1e09eace5d7a7d6f353f70bcc5967bc6ee0a827cf2c4afdb727e2e755613209c81325e7b643cb1f160fa397f5e353fafba282875a7e4694dc11e9df5eeb68a4905b5be60c36d3229205bc4d9f57e011610efdbeb745974a45b300497341998d0d207a94717347ae9a915a54f8b0dd68145c7275332a46d60dcae5f5ead0e9c20c3231a9fc251aab88c8d023388490a410d8f345231e87cf8ff71f726dc6d1bc9fee85781f0f76580a801635f28c33c8ee344cec871c6ce2899501c1d080445c620a8004dda92a9effe4e5535802609cb4e6eeefdbff78e2da21b4bef4b752dbf8221daf63c76d9fe2055c8eb0a8c516862289ea3881e73f6c728f5ccfe10c5ae54688822c0a06f8608de64fbaee95a6e4f8ed835682e4293c9dd994c31f6198d40682404b546bb1ecfc736b7023a01e02036ccc83b1ca44a9bd0e1fca0cc0b9a44308794664e1ecc3ca57784d25ced2a8cbe13a3c6856ddf94a40a7b8763b49b4cc8167543f489e69eb5eb29ed02ab6c9116c6329f2ed266e7879d40b8660d0cd3531c03151cd0c4cb157f3efa63212d0c046433e3c64db2d882c8371019b1988e11a09d8c6d8466f0dc76cdd08cd0efb0d2788244a02ec55210c8052d10fcb778cba717fcbba54f0061e4d21865564647ff23166c481897047b0ce71c1c709e18788818878aef269c108038158c679f44fdf82b36dcc69edf44081fa0219e2371122921e48dd48a1d678e49f8028e61468a6f46a844e2e027501c5be0ba92de898d5787bcdcc68aed0837b70eea135b26f9eb826e8564803441b4195433409b3df24919181ef1e191e7e3c30f5a25f8ad536ac324e8a3465f841cd539d812f47da804a6f71c7d6ec608a51e5017f8d421d40bb64bf8ecee5b9f6e5229718b5e55bc8507981b3d8c82cf1b696c8c1e4b50cbf0ffc6e45e8568ecd447d6f8e409eadc3ef86ac79d04c26ba0fe866fbacfcc38f0e1af639bfa3dd410a97b90df902f20865ca3d7c3be62fb7702aff42fb5473f68c55f6ddd7e4fff2a8c03232d6ee6e955ce17595a340a1d9f6875e17f6b63f8a67fc074da6bf8e8cc691a7e0fffcc15b288ffa9b687f2df2d2301c8b6c1f5fcd4b64d77639beedc357d1b97d1c80ca373c79afb668c2fb973f49450b86664c31c458b4313ceac7398c2fe198243a36bd2b96d467161c6b060c4cedc33ed10620ac66c33462020f8f26e89f0af4a60066e619b3eac5ca1776a7b053a1487c81cbd5df5778731cdeb4c58e941deff6fe8168428c31dcbf664b69bf5695420643a61993cf45c1dc36046e434df0cfc22303d2334a3e8dc3a85056a639b4108bd82c7d0d8f4bc0d34d63c3e8f4dd79f1b81e9fb774bdb7442f46b097de9587332a02318f660ee984154903a991fcc6d14e5a2fbcf107a0fe512774b842ef64cb720d1821fce4dcb294cdcbdc239ba1994ba4574049c8c0ffdcc1c1e064983f2331395a6f401b66fcf5ad8c719ed4bceb0ad1ecfbf3dc9f559e61d2407bbdcdfbc9e7b9f5ccf118ae6419b7c793df77ad7f33eeca6bf6b3df7bac1d04e4bdb556cff8b1af3b0577a375023407fe4ff5f6d21a13cfcd7f6a8bee6f01089ef0ba6d2e19cec6d5f0708942f984a8793b247b4d38e8772bdccab76ff448e411cf77763886b75846b75fcb99e248436fc4977bb52acd5ca9feecc56c36aaf47fb576ef9e463510b46661491ab0f848c15fe5442c25d24a45787c03cbdd0206a1dfe0b744f8473137e33dcd4315d171ddcb8120712d53e3a18cd10f155e1cc1611c02ee9ed10fa654c58a4e880da47984bf498ed046443e199a8b4e3d8c8488cd05578ea98b6e728f4dbf2211dd4ab44e449873077c959891f158848eb9037299ba4aae4a23e7089b54bc0bfe8f6c0464c525490361d12dabab1e9c309d2691caadba423864a391e41d3525b0a6fe7b67063e084e4da0dbd1da09e161ce1214344d7f403f4ad826104b2853a7ae865019d67a252566406a1d059b22274d4ec9811fea273173336f090e390231474fc813e9e101959f897143e1742f2731a0a073ce4fc145960e4ad42e88fb9a4ee1df9c225ba13a03f20cf1162289ffcd3d008407fa4564c83a6c9c9096ba18fe4c5e47e34144ee849911c9ac7ae49d51b7539500420c6238231fba2214987df12aa7496684bd4ae0b094498741a0889d627aff43e4e5627c2514c28a3360ae11dbb716f60133e31020ddba4c486c02f70de74717ca08331db139edc51cc673a516a9b2efac0755bee0d24876e5385ab2287ea19985e74f70a8834145dd8e13912a1c81ab17c12e7d32440057a5282107e611d544bf7d17b0be910a23b7be82817bd53907b624244f54c2bded8a667cf1dd3b5cfedbe45addbeee24f92a0e19f2241ddbffd64f0a965ad67a38af1784078c12e6485546233353dcff45ca167892c2c1c463e195d3b2485f1487324084d0ba8552b040a333877ac533bdc18811993566590d1fa10d0a2129153dee06e4933c6a2eaa31373e1d8075e45a014582631428ea4a3b871366f47cfed00fd1392301959303e8a916053f3c842c3256fb95e40ce4ec8fd5d189368d18a6915c691e63be4463d24cfd8b86e10a2708c88c2e4820c5ad61358e21e29a0c110f7d1054968464209cdc615c7458f58407b2bb0aeba31b4252c24e8660dd66621f4c2f55ca15abb0210188974185a38380bd2e3215d4797741d434f78dcb14965c6233cef08bb5c2147d236ad57ae8fa9053655063d74238031424593fe8cc0ed0d85c7318bb418516d97e0a9a1fda9dd508938f03298a51e2ab1456e9327ce711f2a1b043030623b754d0b8f2896d3883d1d287fd4397831c8cb11ec9de4e9de25e75504771992a765179bc347b69843beac4272011478c26f5044d79834b0a02e16ea2620b23bfa1abe7b05e31985c8b850d2da15a3e2a58723c0f6e595de17a8f42e2ea83e362a2917ba8da71df4cb16d12a8b1ad5a2e51a3ce4983c2d39c2879647a8c921c17e3bc2d524fae5b7d11b0d0a75850332ba4750d74e40cb434cdf53a2e4452ea09cc8f39098627648a50a5b1859e8e988d013f0251ca450417470eee08074a1e2412c6807024cb185776bac12d017b4dc47e21c70532cb840c9ab1b199cdd8fdefe3f0a541c9fda36c2e839991986741a0f119dc80ca3439aba0f92c535c3e839c29879248475c9f931261b9ebaa6679f797f0d971115759fc33c8f71d35562f4f3298060ffa4a35e17e5bcf669bc094fbd0d6a6885a482485e1210aebc076aab4fc703ea8c366d306a6c726d67609b6d9cb9e16f8c70ee7f1e231999a97fac1bdda8ff196840c2d1131c7f9e66eff2a90cf18a36717b9ddc7300f3e6deb973b7447d981ead2f7f6e1cba024220a683f366bf6edcdc3b07520f7d906cfcb9771ede2d8d58897b55cc4e0ff18484ff92876d7b1f86f50894831355bfdf1fef3c869608fbcae69c4607be99b19b79dab885b50a1781f602253063c5367cc527325a094d176525aee99db966a43896e2379292d00c0a849b6f3ab232f2e50dbf6d3caec27343e0d19f21986180201c81f8167311a9162213254099808716a6a1e928bee19b02cfc12fd01cd5313d3386bb0d689002b42064e09a8861aac0d4f615842c0b14d70cd166d139c3344459f31be32acddebd6ff57bc87d74e7932026d71a760b38731629d1a11e73af5ba5cf3b2cdf185e11989ee29951078913c26aeea2630ecc7a7f461dfa7e6febb20f908cda3f872894d1dc3d74d3ddc3fb3b2c70fd19569b3737dc439e7c9f9b70efef06bf691b61b6aa76fab3775a7b673e0e0aa7317b7cee9384d5c241e22aee177b12176e27c8d3848fbe4805d611dab03a8788c387ba5fbd7d5a73a1ef18286eaf56d9a1abf52f4eb95abccbf9bc5aadafe742f92f9e1b9ee905a947208acdf1c4133e2b9043e093d355bbf1d243c9e2068f5495610bfa5478a921129f1ee0b1dfadc9cb2e9c32f07497093b0edf3063df200a164dae02a2ab9c8848ae80ae68c480aee1c94c3940223baec9658f8b89fa61466713a141ee21ede9d6c4d788d1f783156766449e9103970c2360a285e84b008e2161405e4ddd68de9cf01b174586194782294476413eb2109092266f9770b6487d3271953940b1614650e3905cc97a685c44fe2ed11f85f0864a27a23840278336e9aea32b61248163f4d022cc65d0e1ac6b63c1c88ec41781a8f1086ef9e8f908cf31267a5f7422533839b11c24dad0e4dc0b81500cfa74b577b0b9613820ebc846c57ea4fde1788f140f50806684ee811d1f484e97383568b462134f0bd9003eb1bb4232f042af263169e77ae46a174df3fc905ce902d55ea315954d7a4da68d9480230cf7b17784d7c6b01b939127ce9f78d4f56a0288f789771713cfa173346b0b368b139d7ae89dcb423d3d07394b1e9d865c18620210179d60935b499c84b85392ba45ec61379188df27ab2837849145c673c419435e1d398b112726e42ebac2936518e3f8750374701cb9f41c7d61ba1e7a06c2c393e3c3d5414f5fe4811a4f303e5608ce56291c0f50e7a799d3e81d373efdec7a5af3db226f748305c5e6982e29c73f6f5cc37a1231d86264cc5bdc42015b771e9a61a7148fe0a2516110b400ea85c3df9963c15e786ecd0d132d076cdf8c33f4adaaf808c11a998ed16a53e0d5453f067683b0013329028a39aa51f5cc4564e0e8392a611071837e29286dda35dea737c67c552dee562517bc6e3b40c7a316b247c9f2905aefd40ee6082de528c1dc26c45c0198eec4a9adb40e8e8817f47739b9f802071ebee9478af7e0f4bd5b3a8a875e7a4ebdbba5ed29dea9677a4e217428e50a287404ea61c4774720045f6eacf360febae4668926faee19c8537a8a2f9d811005c60e3e3f28a9bb3679d509f6859b13b4fef7f675b25151ae5ff6843578d0dcc243b0ecf383938e646ed136a0b2df80a1dd27c890d07590568d31ed06ed18de38f736d045888fe334dee3a441786e071b7c1e1b828bd4c3b88443078c888721c7a5012cfaff01255ae8ee2fe4503e38bad143a14f0b376e9ba25f6f9757abc2c8165556e48d4cda332d3b0d9440691dde388a14356c67e7db4e55dc57221489bb3d863fbd16447d24fc0181d583ebdb770cec138a523f04fb83990a3e5da4cb55d9d2acb62510bbd16a1e852db43ff95ed158bb7846404e051bf3162495c2061303ae35f1d222e439797e079ae92981d27d2b3cff75d6747e6d5ae4df31821c45368af84a1c5322d3098168f0c8bb565093cbb558e45d341f5131c547c88845568327ea23b702711c9a4680aeef3d57edfbdae975ec2b8ef79f686f5e2dd2f2bac88de9eabd809f089403b4959edcd19d6220fc8ba39004888502ba6cde1cdf5cd7f4d16d586cfa01799b735c72a8462ec77cc3b61af39900fd100ad10c822d78bd055ddf887641bad4438b150f554eac1d0f6e2e01a805c2831b8c81d041263f16e73436d1465a14b773bb6e8b4d4758fc3cdcbc484408077fe866bf2d374fafc965af973a4aa39bea18cedc33fd2892eea172afe947411102e9043fd2530ba80127c2937e14297b1f1bf030562ca01f3c1b7f9e49b92911bc7eeedd2d5dd38356b0ac0031f67c857e9bb5c431e358d97d406b1e3cc05ee0e9bbdc483be7adbe1266bd0b9e6ff87d22195c1f63344aef79ec2be1dd3250820798abbed1a7ca27e15a938144cf1e7cb78c147ffe651a37ff3defbab1111481114832fd074a0c676258c2a3ce93a7112a0f3a1b28422344ae8d4323ecc3427038e2390cf8028dc204ca200a44917d6b85a6e7cdf1141e2a2846dc980e9ac945ae100cc11e84423220157d837ceae3cd733b3c0d449287afbf45c827d7555c48d8df18a6131664320da7ab6666f9423e4ba687a855e09fdb564dcb61402f34185a21018e84380d234fe217366d5d4b704b856db838ed37b48ca000c8234d6d985b5413416ea0ab5aa5912d341cd92e356f1f2961639bb69b112e94871f9a6ed05ce13c87105c9e634608858d6d73ee9dda61612b92fbf61ee005c4d6b59b76159f367f6f112dd4759540285793b59f22c0e85c02075228853b58b1a1d50df7d43ff39490dc9887774bc324ce4d4418687ed318d0cf7b392aa2db9bce958700fcd11a907fe0c67c713d2f3a9f4181621f7a32ef0190686adecd1799b70fa77fea1f1fbd3513f70019f62483fad49494bbcad9f7b12ed1774afb85244331e0380ae993904011420212ac3c38d13dc33b75cec3b96d9d7f210427d03d77cbd0888010730856d4d9383daa7cbd5a48bcf5cf776a77b88d820c10708bf281d39774fd05e1dbc12ebe82658058a27e6310b9173b0f2862db4a741aa1eb7eab79b81f3d0f28864364be836623ec05ff1c8a24c9d15061c46d106d6a0437f24981000567cfc9ab091c645d25540225dcc3b3dc310e38c3e3ae2537de1ee8658378a3d80811062d8d5c4fb9a583b98d26006103ee6cb84a638981ac0ddb8c0bd336edd378634685add8e7c13cdab8732330a3cc744da087b024a77673bb806adb86199bb1b8196d605b2f2047587de10c04bb52839b09077938a29c36fc54b31d6441b663e471d0f1a2877641684254ceb2ad822cde6c33741cf9f0e6b80e82a77866e41750d0e610d8029e9d4a384234ff9d5d78b500d284fd0ed2380f4ea19adec6c6ab6d6d70050f829006a6101ecdd1cb94b71b3b0f9a080c4c784649100e2ac2ca58fffbb0325e072b637f01ac0c9f1bc5a2eea4137fc38c4649a29072d8c1ce9c96a230518376a2ae9757b544f5e38217987e9009252a9b38d3162a4d887d1a272ae28fd80d86092a792056516498014c1f84b97243dce74342386b1c4ce3139718da962b32f051611cd5d710bc4c2157da3eaaa0231d85f190deb34db4548c42b4d23308ead7a5bec0a4a0ece1bcf1a91dd199cbf7e88aaa138ee1a2be8815192190888111c3b68ee89fa1193a99433b611028be1923141d9aba074ad8b8bb0f03e120bfc36b0a0490a74d6a4c86608c86e84524122c71426773b0a601942314c5761dd1e2a454192183d6f2840f7e54cc8909e1d321e4326cfc182b4fe72d1fdb54c1ea133b0975011b1d9c0072245d14f2e92d3ac76f3b0751097cc973bf00917008a406e12548bae351e9824fa76ec522f980c07d6c9a052efa14704fad4dd4b3f3f5cbf3c44815c73e5789fbbfde183dc82c887088b22c42c70b6980d8a623dcf5da2d8826d454f485a81cb50381f4d8a215b0c2c8ca468840a9d52075af37756c321f0543a4b4853d239c878b2ea4f5dd227b5ca1dd83fd4d3c7c18e0be4ddaa2627ca024c4469a0e71f1bad184305b541c87948cc41824390095c1377da31db9e8f8cd8384fc48f12169df747c1cedcd84c0114850a51e024f2a04e265c66ee34c9fd6039a6173941b38a4f0e887386668666213d2787650d423cd65cba325a1618935d39fe6386ade5a7eb35844cdbcf0718d51a4e5a55979a276e5116b12ce104b60deda46b386b954ceb0997262b9c302fb2207ea6d318881225b64ef68ff543e61f11002e9e3c3f00b1120e640591f76dd871421fbd98cfbcafa8846dd67ad1f2ac4408192ee31131d8157ee90597f0345feb6c52e57acda1650e6fbd0e58a6ddd2d7de353761e11219cfdb7e0087a190b9fc42410ddb16ce008e2cf02ac057f413549247cf77f15ed1d7b7399178b3237d22a4f0ff51cfe6657cf9661bb082618c2ae023f8881e692e04ea0244bd6ea1690e29dde7b80e2281761a01ab51157894dcb3db7fdb91d9c3b0d20715badabb4daab55f8df52194203d8436d802fd2a8b20f559802c5fa1250b05e558b7db535e401f415ee8b949cf69dacee3663bec94b5e0b569dbf27816cc8474f1a21129fbf3d992130bcf5973f3662253ef5f0b46b907b1c77435ed3ecd6a14ddde2109dbba7e1c38f9dfdf398dd7300daa193bd5d3a79de1e7edd8d41be1c9696e19fbae711457cc587e3adf428921ecde138d23d9b1b5ef3d00814e7346e6abaf4e1219cee9df3bdd18d3f3dca497f01bb31347a7885c6ce82655b3b103f845019b60895e809af07a1d2fe0297f17f1aa19216e9929398320a14e7ad6bc691129b88e416e3be6187cf5d6445fba8f91646e84806bdba461929b95b70e2b710dcdc8510d02a51f0dc06ba0056165fa1d4c505b35d09c75e8119878700817d8e5a9db9116c9cbba5e11ab65fb88ab789e6c17954b806628de170f834486a1f27aae58dc577cbc088e7068ad40f14176da71fb68e57e9a26c386ed1dc700a47714ebd82ec619cb3001d6eee7b92c2c90ab7706b7194c870eac6ff01cd1e79b2ddbdc2a9e467c831dc6709be0d900be928f81262dde139c94332079d492142102601ebae7bea6d82b97fee2278e3dcf09b183221e3bf8f31c9abb4ac8b940b155d940b457f552e24e872db0c5dc50592d241d408970e60b619a06711cf5342d3f550088b54b4a3f8e7defc21f9c0698faef6db00c74cf079a737311930226076248c2010a5c4f7ce4225025a02bd6404a6ef3df7e01d749fed29703280cba983bdedb8a68f1c6c34fcf0e06c141636897f020f314814c7f449ab094fd034eddc080f226e847e69f715ffe800801cbcc085ddbfd1fb0b15db2e04d33c0c5bd54e34b843ad291748798463953c1bc3532020dd002bd588114212d0d15106dd691d94041d501d0a1a913be3287638f7cd3028105dd9417cf14652890e997c1c02fe97c9f810bed9516cffccf610a1111569a288ec854d0270e1558326172a6831fe79aaa3d7a52ad24a87e75b13b53aed07dd539dba7d64df21d1e1cf1156fd414756b87b060fad6ed103d0d1774b4fb1feef7c8c5d91b78065bee97bceb98320819ee9f9116c7b61e199be01f3c53f83995db866e0c30d2f72cf02252c3c0356bb1011b9d12cc545e5121caa6877e49fa1fb8dc2c003ad2f08f62a2fa78bf25ae2b5c54adfe20fe7d0c2401ba6b0c5fa05fa3ab4e1afd9686d0282fbb4623650e7880c13193e79a6448646bf4b93436d5ae49bfb407a041ee934349ac14aa078ca8e8b12f25112a3656efc80feaf825e7460c69da11b54c5f6fabce7d70feec99f600f35cddbe805c48a37377a3143dbc16f866161f8668c5a703ebaf5b12d49033ac4f3a9655a31104a287a0ba9cb1cc2d2ef73226388d62153622724a3a64068a2084ba3dd6593da5af03ed1012cb517ecb19e8d1da7b49dd9e9c5e3c1d50d4dc70c4c47084f48cd37f40cd36d175f04430adcf34f23229f1ffad5c1367dbfda317cf2bfd0eae550c1bec7e8058a692ba40dd06fbf69fb4ab8794817e04f1a5add916fe01e3fff7fad0aea84adcb695e01312f182a76d8f8ad6fdcd59fbb881765c23e2d132c6f11b529546c84e9427823a857e31a5471ebceb919a4f13c244ff868f005c495f3d6c33b5ef73de9d5a2bb7c25b87b45a8554062c256e28a7da1d91684d342dbcd5ab95bb7d4eff81d5c97d31575bfed7d1e6756722e151b31d994f9c859fc0b36659ee2a14d994f36653ed994f5f16d3ea74e892665e1a9ed650e4d38f4f7152b9ee2d5068520373cbdf919b9d795fce7d6ada35d83ecb3d6e575b55adf18ababdff34c9cb03dd35782e70e2d9116eadb09b8aeb70ec1fa90e81e01cd51d72626302f644f07f830409996f5dc762919dba674c431ae261d32d397ff8ce6a6e109d032480d7637a529ecbb72f5be3436f97cd1b2ff506d208ee09c7bea6d0c52a108ce1d68bed485d354a8884b830a615ab05abba68feed47cd3751dd38b222984ca10c86ff51ccf8cd08a3508a1ad7dcb450044cfb4acf8d42d0c5b714f6d216114ea4773d3755df2a8802c6a3891069bd0f425e36d1b39a6d6c680c1eb6cfa9f79a63f37fc567cd948c7227873e77d5bf8e8954cc3210d744e11e16c8a9cd431dd180845376e35c6fdd831ccc8478936d9707bc201176218922d86fbdc0ecd0095a9ac98fc71399067607a7ea8209d4ffb771c07a615a1bf4258ca7c37754ddb475c4abf6d7d78c30c49bd3516e6c28e19c0921fa0b7540b2d48820079e88e0fcd6f63c95040e5ce8148204c652f302dd28e847c81668113333aebf40835d4a31af98169dbe4b4dc81c751687a90a11bc171c0871dde373dd4d7f15ca83105d081801984a1690329ed9a0e1ae0ba0e3aad834beca23085841ae46fc8767d3340ffe7a68d92559884b091c54030a491e9c79142bfc284df775055ce357d977e9acef16030a21a580847a410e56a9e4dbe8d8210edf443d381f672ac803ad3713d338ebc0d94616e9bb1e3c110b3e3ccb4d0603d44ffb2b0828630cca101d0a427724c179d4d78aee923e444e4a57814c61f21fc0df089e365d0c4b8477ba80665c3960e0d6d3bb5e9c2e9d383c203f1143a9e69635e9e8301dbb44272d344424eb4e14013e808c6a287ae8a7c4f094c2b8e378e695bd0e78e1b9e476614d9a7d007312de8c54a482d3c1886b4221ab422c22ab8e9d39aefd166e951f53dc084981bceb9404c6cfc59d78defc3037de23d92c42107945028f84765bf110c105b989d0499614636e20284b0253a11504e70f23a0b4c583d43ac224ac0bcc0f0d08509f97387c1517824db45f85bb40bf1714bf528da3ecd5a9c9410f6f690ac682099c23561090ce20c759810d53ff6ccc8c342e019362421b3155115aabc5e159bbc81f00ed129749091d39280c815cf74d15c0539e816898561f11442c91871233d2c117ad4718216624600fad3ed90be17e4a96734d641948400f5c193bdd10839c5fb8ee440c04f7d33f6149f9c375be4e60b6114b21d2f54cde76960ba56a4d06fa3438a7d190adb395b52e28e0904830e3ba2740ebe8268fa024b00f5331c323ab34361ab6477af41d44b3d139d2bb86d3951201e67d2fba28298063a2f82add7122c1c0f36e2cec1bed2f8d5af1b9ffa4a9035471c52380f22f4b020d2cb5a7c178f0cbb8483199fa4c828c1a4a2121fd34769ae2d0cc00a9245bad0dca1abd06f032a11444667fe201a5bb4b74968d0d8ff41d0f48de8776a58977adfbf83590f07a338268fbb28a876cc1016f034347d5bc19f6633b42d338832d469776085f0cc00d938f0baf25942697d334d793e6dfd2307640de3c241c83603056698e53f6c9471c0b678c853c4294cbae7bee9a08957a884e844085d7164246b93a46ab524569344700f1426032ad477941d315ffd9098cf53c27e11698c2c769824e220f4778948fb75af6d8fbcb9af6f8a553afd7b1c567be2387ce065d289cf6c52623f6f5cc4f4b36b42142b0a73a143d1ab2da976cb3634ad56b72144e19dab314ff10e6a6f2be8610dab5fe7d50395cf04b6135056a86510e2b47560fe382e4e57645722dbd2230e074e690f263b1c4aa0a8045292210a5660a20d2b82f7e00d17be72085607cd0d02b8e7a2c5ad875c501b364b74b948fe8785b742c4cc32b158700fefa25da98db6988e83c8341eb26d31650bcf48285051845e5ae0a0f31a0575953d33c4b9e016b844b9198a6a7d54e620e521342c8e08b50aabed23ec556c22ae36697cf9a6edd46221128c7aa00cd08cb445bb7268c943ed90988ca56da19ee406cdaa97a1ca38ea34c3a6800e50a18c30319be58bd0bf48de11d0454062115c962f9c25468d718d4ff858a4521e0be431f21fe6b7da7d6428ec12120d7c45cba943e064f822229539e2512c6388b98d99b1d060270d77070b071dea926fb1904c5a885d47ba8608551637cc3b8b74b52c227e91cfecb75a61e804142f7188872fdfc17969e0bc346ca15090a22fa0b0d9a76d232068a028cef04ce5019517a145143a0336c4b8000a1cb19d50cf0f03c8a788a95f89676f7bc24735a921c137e8b60dedb3511dafe53eee9005ad3ba2d4230985d722e461c34599807d0b85e6b747da57612cc0de84b36f84d6422fdc64798f544348a32a7237f032faef75c9fc19dd3803dde18bfd9eda9bd6608241c25d4cb899772010050404459226337414923384701424155f548a023a10bf26bd52cb6f1c57a202601488a96f45949f899334a089e823881c946b8386f730d371aeb9c278ccf2883672d0c9aa83f6fa4241157245b8f030221a2220bf6f4800d122d69004380de8e2041dfa17da4c131e15bd4dd33bc00319ae70c88344524f584ff83150d8a81b09675074238dd2a7f85968c67ea4d0af58696118c24abb49ab457a4506d39e19c3192d8cd3d884cdae212f1c843d77c2b3108d5f3283dcc3a36ea428ac0b7bbd633ace73872835976c94901b0487f4906011e16c88d0f46684640bf44766d1812072150f124438c4c08c82021bce8733a217376606e8d40f056aa8d982db6f10927347e818cff005161541afe3031f2a61870610fc77cb18cebe11f9774210c10ca1e57cd468c37e04ba2785411b36331401161d248b91ab2ccceee13c8ee01136e90ea2bb0c5fa0c7b9266988463e4c66f28b43580001ad86764cb3254666b0432d4ec05b62b774023409c22d22c05f276c15f009a98e76db9810d268d90cfd16a331165e8b4301ab2630c23ca1151d12d89d603cc638b9a3c0741c841d208049cb31e390101b10773224ad3b88216a401ac3495ba1df862272d03989870a0d1e1e1eacc074812aa70d02cf4021493b42a128ebc7b07821e904b3cc6fbd68bbb142abaa1722ff26244e8a81ca0684c310a19eb28f8e364c8148ead11a4f4240b253a4931a10f388f119d292e5d001a5f1f21c0ab001b2fb25e8c11032a8b111101bce36f1a4ed22829fef233c050a62a04f1115340c10300ebb34206d4ac8ae26444f47a82e464186ac20cf33633cdca156367a5e83346320e46cd30f044443683a087be12177dd8c62426443a9126ef64e28183bd8db1e41d7418bc2e8c6c5c10ad1ff099e3e621bb1e87c727c82a2b60c669f8d68a60800110be1ba4f9c5a579865017110c084c5c55af442880047be21e0c051d913710ff0a4431580f9010904b869a3571b0b3334a8afd1931b9409080d170f9e08010ee3cda3441da10b1b1b628d467915e41ddb86a7083d695850507b1bae2e5029c8ab8001ee1a9ee9a38c2b36820658bc31ceefb4da5a98f148094ffb608a0f708a0f740a7abc41a25af417689c1d26b6310e94cdee96366a37f5797d3c14241fca910fd3f3516be68bbcc17d99f8a5af615b0c5357b1fadae2af65b6f415afb79ffe624ba0bcfeefeaf6a5af38bdc9fdb57edf69d8e9a2e6d5e26add5afcda8af3191fc40722c25dbc8d1e0bf6c346ecc1e83a54862424b9ff16941c90298b69be1222e37e1fa75fa02d7ba8274720f8e74111289e11081deccdaa582f65237bdf8c1dc53563171d7ca3420f90541e92545e4b52057432b591840f5ce24fc22ead78661417eda7b119859142bfe2d41fe1a7a4860d7b329296e87d13f6ffbb57b6ad7c0231234487165fa2734a0e5bd1df8410f38578487770b3829f2f32f110adb39acd1aff7b9fc2f2b0a8683d306affb34513ca05318ae33f01a1e2086167df50fa4ce93e21eb86a43786ed08efae58b840208510523b9ad690cf4e74c4ed3c876a7a0a9c41c8195210d350303db706d240f18991edda4a68ba61d17d1823c273a8389662bbc82fb0e8bbcc3250090ccf942ef1f922d30fee96860b7414ec790f0f63af49e84b4672ec2971cb6ea62940851007321cca913494d5097b9f16ef1aed488b94af1b0d1941b0923a4ac339458b2501b0066541eb6e6491044e4628a008028abab7cd32d5cbc8daa058f42cc6d309da6d3aa8d267fa7eab76e811d181b62db1c066db319846153387bc901355ead2d767b1e9b94a38371c139b184698efb7676dd280202296d04ef07298b8630bf494063ca54942710c5720a03c87430e8c1c386105bee22b81e2cf51c785c0c702715a0782cd17c877d889beb7e31fd8567cc57ab67bc7764c0268b002aaac60c9a37d5e21d813767486beca95e81455b93f693c0f33f37d5a958bf2daa817d78d5a159ae187a6ef140d0b2236eca0d1eab12d9c0cc87fb2f0a08147d61aa5a040ae47017cdab22f603e28ad1ea4450ee46db447b605dbf0339b03d63412c0f41eb13310f6dd56ecf034de18cedcd938774bcb704fe3f360ee90a69afa3ee579354397af9daa782f9ae9218dd16b7970e8f8c58895a88f2a3804f4ecc15bdcdf17ef969ef13046e683b81a774bdbfe04c1f97942a68fcab214dbf9bc29cc5f52617fbf985ee75c40c179192ac5b42a3075ab03d3eac9288d9e0c7ac30ffe941a8ded1bf6dc39475b02db0222df3fb537b605f72039ebb9498a7c7879382d5771e7b6756e9ffa30e0e044e8fe99b2bc428522dbda180ea680a3149bc2b85a73de92889ed4821d32c381de660fa8c7f9be3efdddd2569c4d34b783f3e0d4b95b7a1201798804d265272d13a832fabff08dd41ab3d58ae795b0ac57ac5e65dec383c81729ce115a349aa0d84e639fe22114e1c6de29c43c4fa7ffb385380f45ae4bcbb09da61448ebbeaff2329b370b3222d29fa1a44389c80a1f1224da06d9fb88d7e7990e0aeb2d52dcf3908542b61d646d6b13c44a244eea9e19908c3c3023f70cbd5307a61f3f371d74da48d046a13886748049160ceea69ac42045291b3a602990631f9916aa8ab9c4dcf5cc38348310f241e7375008641ca016bd151a2e31af7ccff0cd106911f56eb55a1a8b7653f27153f2bc82740fe0e759645a96a7d06f4be7c049c7238d5d12471ad15b8b44969642e6810afecb106b061e11475e2127942eea347850660f619ed02816d7370292b21dd46db87b15a1465f23ea6e25b77523f3863fa5917bb7225e25b85bba46781a1faeb9f2caeaf4a085c9feeb1f52fee80113df473dc4d65dadc5ae682be1c3d9050fda3746d83bd6ff4f7aa76d1ebe32660bd142caa1a32be76141faa1aaef216c3ce9d37d5a81939ce77f1922a6a3389f43c4b4c9fb7c485a3d3ddaa4774bc7707a11c9cec890d9ee60b6fe8ceff902b63f201d7dc47741d2d189845e417d7004549c5e7795c1dd2b34d0727a08ac1ddf399fc522df1dbdc6435ad2d8207f0658d5317afa41d24420741c016df6698f094bdfb09d3e976eb27aff010d593fbced7cdab1a04d16ec310e8d5ea778d1679ce2e19ef0593b7bc7e8eb5bdb516cef6e19f611af9fb343e87168d7a78f7fcf8aa4d46c4b67eba4d442fda434a71a676aaab2d9ba44483e4dff58e57c5d95cafc5e3fd9a495324fda67b9feb1092bbc7bb35c17c55192e483416ea63737c5adc6e78b9aa5d5f57a9997bcd6b75bb8712f5eafcc4ce32cd719376faa155ff1db9bdcacf2729a5789540cc83b4fe04378eda63617d9aa3c59cc34c82e49f2ed56bd5aad8a3c2dd524492091d54cc975a94cf0b25af36a515eab4787afe458bd52ca8265496966455ad73fa6cb9ca5105b15ab8ad54969cef9b2f879c18b1c1a0f0bf3767197b379b2592da68a9524c97ac4cdb72f7f7b71f9f6e7673f7efbeccdb7c3359bc1bb25cf4bce6e92d2e498c0a6fbe666940f6fd8141ea5d798ebb27b381da9f54d5aaac329bb4d2a33d74a3656dbf2a94cc5d2a94c6dcba632b5291904316395a95c3c1379a8139ddd25f3a78928efd9b337dfbf18c991e15e4dd835351375d3dbcdf54f299fd7da1d74e355b2d274ad3053f3e5f3d73f320840199e4339b55ca71b5812ba35d359a6b357890aa35e3dbe3b56e1f744f4cac2ccaa3ce5f98b2287c1a32d5965a6dac77b76cb3eb6551f5e31acd2b0bed7d9fe176abdb956d9c7d9a228862953a7294f0d28903acce1d0c5e7c3399be78beb391fced96691bfff66f561f8ea9e6d068383a45014c06030b18dceae75fdbe67d436cd214d1456d200ae122d87d1b9db9aa37458ebe37272220dd624a946701d56e632bdd1a4a4783bd10e8a7793f2b9ca3ebecb6f879c4d8739834abf5917f950cd3779b99a4ed57bfd1e0b3d5dd437457a0bad97accdf458355f429bb0bda22576c0e481903816e3f7dac2fc695de5cf57cb9b5599975cbf677201a1b672892baa7c76a2edcde7155b248e65b13451ff55d6eb9b9b55c5f3a992adaadcf8bd56d6756e2a3f57b7ca9cf39b7af8f87179b3accdc5ea719da755361ffd91dcacca5ba8a3a9b23a515f7cb8c9334820559a8c545624eae565b19aa6f5fc720e3feb729acf16653ebdbc54d93af12d8bcda5776e8a34cbe7ab629a57f0c22cb1d94de2b04de2b16962b365e2b0dbc4667789c3ae138f5d25117b05adf422711d769a041e7b9ed84ec4ce13c70fd8ebc4b71d7696b8167b9fa8a669aaec32892c8bbd856f7e4e6cf62c71d8bbc47e6cb197496c59a11dc78eef859e15c736fb90d866188741ecdaae17058e6bfb61ee5a11fb31f931fd91fd94784eecc541e8c43e7b93fc64d8ecf7e4a7a74f9fdaecdb643c56d3ea5665cf276cac5e2dcaa9ca6e9be03ff25b95dd412c5b57f0d2551b7e83108cec15dc98158b1b95bd86e04d5af1455aa8ec851413ef9ec2ad2a4fab6b959d4f26ecbb441d93158bf2ac59f4272afb977cbb4a6f272afb46ba55df96d977a2db262afba37bf40dadeb1395fdd2ddfc36e5f94465ff90eebc7ef5e24396df8804beef9ebca8aa553551d93fbb5b524effeeee7e9f977995f255253d7ed43d7e95de4c54f66b77e3c7f5f22a87947f90ef15c54465bf75775ee365a2b23cef6efe54ad3e401370e9de9bfcfac507c8a2946ebecde1d34abe837bd84465997c13d18c272a5b4937ffd58cf589ca16d2fd5ff2f41d5526ddbb4bb9d5f95e5f7db39ecdb0a245bed305e9f9227f3f51d95abafd5db14ab9eb347d3cdf7f1478cda399f4e865c9a3e6fecdee7d3b681e6c761f74994ce54a2fa4a496fb0f9e17e9f2269f36cf6ff79e7779dded3de932bbce93c71757979737cac571a27cf5d5c9e36b7685f734715357befa4ab9387e7ccd5ee5c963edf232bfd0ccaf4717fa16bee317baae5c1c5f94f4e98b3c793cd046c37479b32df8f69a6fff58aff8f6ffb8b10e8f4ff3e4f178f0e4a9fad5e4f1357b9e27344ab417b959afd65596ebecbcbd79dadd7c9d278f9ffc97a18d2fea8bb793e391fe5f4f1f5fb333bcbb77f33dde4cf6ee5e4295ccedc5581b0dc7ff195f4c265f6fb5b1fad544d746436d747461ebe3ff5c5c4cb61717a6fef5e8c2d62f268fd9db3c79fc9f8bf75f3f7acc7e8692ffc7842f8f2919cd185d4c8fb5d1f0c2bc981eeb23bd4950a4e8eca4a85f38fac564ab8d12fc627b31bec0bc4570fb48d71f5fb36790cbc5c57f1e995f1f8f347d7c31f978bf85a67ad7b6cab3ae555e62f1eae3ed457dfce8f135fb20e28fd98f505db8c97e82d047c8a8bc787cf1b572317e5fa53737f95479bfe073c53cbe9828175f5f3cd64717e5e8317b83aff7bfab99c73abefd98fd9e278fd94819288fd9b7d830171f2ccbb8f8e0cc2e3eb8a971f1c1b32e3ef857c6c587c0baf81042209c4d600c7d07195c681717fae8f135fb17c41e5d7cd4a0a9ee275f43392f4c11d1bfd62fee1f5fb36fe025ec843fa08263e378627d185b469c1ab3c9f1a3c70bf60bdcb7aec6964df17f60433403de3c1e3d5f9535afd6195f551793478fd9f7f8c16a6c19217df14fb8a18d86d6766c1bf1e462fab5fee831fb3776c7870caa360d2e3e4c23e3e2c32cb8f830c3c0ec626dd950efb5658733e8a64730431efd477fcc7e854fbfba282faa8bb5633911fec61717f0d60f79a25e5cac2d17be856b30bbb858cf7207a3b3dc81a8634d31ea58b399ca7ec34f3ea4d9c5c5872bfbe2e2c334bcb8f830831f4c045a9e9a1edb9e1a1f5b9f9affe2c315256a894483997271c1e1f3ab8b0bf836b530efd9ece2a2bcb8a82e44b19b72afed208237ecc8ca454274b1e9e2d0c5a58b47179f2e015d42ba509a564c979472a0c2f970712dcb5259ce13757c71b19e4654e2e96c36831d066eabc7bfe5c72a6c2d14fb81621587369a1eab2c131f3ba1a86e78051fafe0766adc41f3cda04d66c105f52574266c2bf0c27ff672c5dc2a7eacee25f8c9849e19bf5dd0a0c15143c3e6e2c314b6f814cbb89e466e36a6f4afa4dad57df9c346c51315a746f7e1340ff085e96c36d13f3af72a5befb7d8d56c36c11bd94e627378efa132ce2837f578c58fd5ad7abce0c7aaaeb29be6f67ce7f6a6b95dd2ed146f1fab23954d458966398e99596ecd2623f578c38f35511dc7b2a6f8f1b8e6ace06ccd27e6efab45a9a95b553f56f5feaf55fd6b5567cb26e371d6fbad7a3ce5ecb67da9e658c2118c1a7a9de5fb5fb03bde2cb3eaf82b289e1d4f54a65eab3abb6e1f959cee5cb577a0ceda281195dfaac7b71c32c7b75eb56f8de7983f362bec1b6d0eda6838dd16c576b9adf26dbde5db4daeeb234c70cc399b73a63e52f78b7ad393cab7dbb3b3edabed9b17dbb7db9fb7e72f7653399ef526244a35fbb252d1fb5f90b1ca6032c28a6ebffd79ebfcf8edd67df3ed561b1d8d6dc79de81717d39f4f756d945c5c5c6d61525e4e74e9939a6f9d72ba75abe9ce277cde7ef2ccf80d3fa9385bcafd48adfe42ea4831ce0ea6352c1b7be34bd5d9294f1e43792690c304f3997c74eef1d616769d0904e99908e0ddedf83f14b58c58993c66cf79325691ca52994a24a7cad486cca460ae3215e97995a932a5d944057509d1f60ca8b6c4258505914791eefb57e90dfec2215a25a25d65ea4fd56ab9a8215b6a1d95a96f73784064380490f45699faf3ed4dde94ada3429b884c798a7b5d41240a5365aaa0cf55a65eaa4ccd8a3cad7e5e2cf3d51af25dd4df2dca0536c44d5ad5f94be4e9d4396f5e99b0739e18367bcd938ff727aff9789d4f92d77c3ca7cb8c2e3774d9d0654a97255d6ee972974f92238bbde6e3ef30fe2ffcade9e11ff85b50e417fcfd1e7fff89bf8ff0f757fcfd0d7f39bd5ad2a5a2cb02b2b091f57686c53dc3ccce30b333caec8cb239c33ccf30b333aad41955ea8c2a7546953aa34a9d6119ceb00c675886332ac31995e18cca70c6c7195da67459d2e5962ea209ceb0726758b9b39d52bfe7c947f5e2421dc20f53bf5287ea5730294b75a8c2d0bba8d4a10a0382880375a8d255dc88c58d58bd67973cc10ec571ccde8ad8cb92b39f79a21265a6768ccbc10059ac34509324a1c06090b3673dafd779311b0cbadfc3efe02e7bc7939ff976fb8c6fb7cdfcd154c16fe2f345adea9ace5ef2840f0647dc2c57d31c06fd60c0d9079ebce483c141c6d560500d064795f472c57ee4c9073e187ce066fee16655f13a4992979cfdc4931ff960f03332d5b2bcaed91b2e338179752b18c1e2eb2aff63bda87239aca96bbe2854dd84fceb86a7966fb73ff1c1e0276e5e2d10d6470e379fdc6729cfe61ad73fdedf6b3afb9d276ff860f0869b8b5a3a05b36fa5fbb022b1efa41bafd21bf62f294e8b06fb46baf536e7ec0f290e8d42cbc249cb4fff85379cb4fafd020a559a455e5ef3b9fe314beb5cb1864dc5cc2c2d0a8deb2778dfdebfcfcab135110f9dde87ac1cdbcd1beea7df60e5d899e8f7ed73c1da67a57edf96fa1fa2d4acd23fce5695866c3f588a568960d38fac612e6a72727c9c3d599d102b7091e4e36c72c2b58a2d58a92d7496b779555d06df73e2803689979078d59f78f904c69d7d94245ccbc7e584952cd74ff4764474a9fef320d59e044bc3f8c2e4fefde70a79a22f66da9194a890481cd922ed23ab4bfbd197a6cdb2c462ab643c6932699bb984665e604e8381b61a67c7c79364d1b6f6aacbec572ef39b8f8eb4c36cf4c1a026a6afa53f35eceedb1fda01dc14b582a266fdcd503dc9b0194a8db37c5c4dda36b09a369092feed4fb4014e2badd29b56c8c6e564a70345adb32ef9bcec4d9e7789eef75f3ece8e215989872f0d075e7693e2e10901395683c16a30d0ca241f1f1f6713bd992565c2b592c124619954eeb2cba73cc8e7d35964220bc3802c32c3f8920caafe8679705cf70c6ba94bb19865322b3595be54f56e09ec8409387ada0269b92c6d2859a67fa48c30dc88f3aaa46447f6bdcea4d5232dfb96a776b4ac92f258ab46f6d0b0f5936ab4328ce1f1f14a8c4ca8c86ac2565d45949528923cecebb6d0cda69924091fed8b47683e94382176fa469a0b300fe0e3b6465d7622992156685deeacc1456f254b1c73fb4bef62a6551a76396f6b95f5d46a8dc2de66681f258934bce762547c72e16cfa6d34a5371f97c31fbbcf6772d26d33f11d6932b4e06ac8c7f9e4befbf0e68b3ecc47ab613ee6f2879bb68160e834b5de1d55195be91fcba41a69557264b35c1fe2e4c0fbf73a9326c5747f5230b1ceedaf6e62fde5d8affac9e2284968a2974992ac468b6179dc2dc25206cbfe59470b5b4e0b5b7ea257b4b095edc495c6fded679a2ad7b82e35d0ddae98f137ae71d6f71534ab34f0ae773fcbcd795a43c2ed0b57fd35d9dfb26bda04ca096d29277d4bd1ab83a476f7e907d280d75f94c94da97d542f3e64963a549f0135fe21b3bba0d305dd2ee87541bf0de690424a41bb0b3a5dd0ed825e17f4db6016aa43f539dd856086c129a4fb2d0667109cd2bb70827841c1b80ba65df0aa0de6f06e4ec1b80ba65df0aa0d66993a545f5270da05f32e386b8339bcbba0e0b40be65d70d606a7d0243f522dece648f4610aadf39a826e17f4baa0df05832e18b5c119a4b0a2a0db05bd2ee877c1a00b466d700a4df22f0aa65df0aa0b666d7086c7340aa65df0aa0b666d700a4df26fba0bc15b0aceda6006c579267a00c22985a7d0803fcfe97508730a4fe1d3bac613a3655bed80858823473c39d20e4588b872c497234133f42012c991548e6472a41da31089e5c8951c99ca91bc19cc6bcbb62d2962cd9ab10d4f6c39e2342319229e1c09e44824475239e236c31b22be1c09e5482c47aee40854fbfb26924b11c792238efc1a54fbba89cca48863cb11578e40e54e9b482047a0d4f32612ca91a8998f1049e54826477229e25af293b899a410b992235339329322ae2d47a0d43f341128e8ef4d04aaf08f2602a57ed74422390225386b225772642a476652c4b3e52750eda28964722497229e25471c39e236ab13447c3912ca91548e78cd320691408e4472e44a8e64cdc205915c8af896fc64daac4e10994911df96235082374d249023911cf15bce9365fba11c89e50854ee6d13c9e4482e45024b7e02956b56247f2a47665224b0e50834fccf4dc49323811c812ee14dc49723a11c899ac51922a91cc9e4482e45424b8e38f26bedfa0e912b39329523332912da72c4952350b95f9a0854e17d13099abd012261b3254024929f40717e6b225772642a47a0da774d249323b91471a1a62fdb890a255d3433d5c78db859ef7cdc499b9807a5f8aa19c22175ecbdce4e05f1345087ea205dde9ca84c7d02e18243f02904af21f895fad5501dfcb15ee1fdafe0feff71e313f55e3ae43d974853f5e2423d7e8f647efbfc5c265d5f7093e735d77289a87c8d2f0051873cefb2218ccd7a71d79d627373b6aa5ea4d97c4f2fad1c1f1ff34932ae583ed9a5ebcf76a9d9f6b352a69ab5529709e7f70f13b80fb264e03cc00703b8ccb75b3c35277326b833651f77e6f22fd7bcad77be5be7b7fffd14c7f9414bfe2c7721f6e748fe90b2bbe26691d6fc6539cd3f24161d85afdaee3ed18f8f79933fbfd7727d98953bc3e0d9c399b4455f2287f78aebdbed788209f5be56df140baea9aa0eafe091e15d33ea71c40fd581ca68c40fd52710bcc6e05308d2881f7ea57ec5c4881faa5fa9427ffa6599749c26ad3d376b3c694ebaeff8f065694ef359ba2e78adbde38255afe98cb397a579b3c8de69ef387bce755d37b18b903d85ace82ce1268aa0d80f79c2cd8687cf7e83d8ab94cf59ce932645c6212c38d4258449a6c52a08b7d22c96f1a4ecd45cd98a273fe4527cc1935c528365294ff858bdbc147a9c97f53cad50dd72c26a9eacb8c957229f82270b0ee7c4d7efcb9faad54d5ef15bb6e689c5e6fc50f9fbf1f83fe6e4f8d16333ff90675aca0783949beff2dbba0d982f5f5cfef4e6f5cfafb75b55ed06ec4888e8b4bacaf44bdb548ff3a1aade6b3a9b6101daf2dcf0a4e6c4f9ceb9ce363c79c7cd4b36e509e79afa1ff5b8795a70ddac72d415d59ee54cbdb8783450bb5b8f77abb46d678a6e7e3d4269ec85a66f95d9aa52cc637163a23fbe66ea23dbfc7aa4eac7ea2312d7ffc847dc24b9c370c56eb18fb02eec0ac29d9491bde0c9928f96dc4c8b6295fdabacd3593e5cb1f73c81a58c9bd739ffa9e9a2d73306f5fb193b8e9488d9336c8a1b51e497f58b72bdccabf4aac8d94b9e641ce74496b30f3cb9e5a35b6e2eeae7ab324bf9db9b2a4fa788cbb5623fb54f3969520e57ec4d73af69e79fd3ebe18a6565bf68e7cd4acb39534973b16942a937b58ff74c55d9c77b9de57b129b9b32e1a62c2e3d4aa007e53b83c16e9c7d28936a30a8cc72f59ede867904317193fd088976e2557aa98b43825d8cfd5426bfe566962f0af60683b362b5aad8ef65427d200d0beac89a7d5b8a9e5bd46d4f7f079936925ef6af123ae0f7d5a264df94a23f61bc632ffe81d92cd30fec170a2d4af68f32a1c27f0fe9b472c47fe20b555a4e574bf66f4cb4ca377955e7ec51090dcf2571bbce7e6deebd4a6f549dfdd0441b91b8ce7e6b6ebdcdb9aab3bc12d14680ad335e351d4ae34cd559592579351894f97b25af5855251fef595625eb85f6a8d4d90a43bf963a5b60e887526729867e2b75566328af7456546254b50bcf70c5d6555254a3a2323769b1ce5fcf862b366f6e35a36fb8eac88f5905cbfe62a69da55aae0f06474b71d5726551d63c2db37c355396958e6feddc9c569de9c862a615cdc2c1d4cb4ba1047879a9b67cd5f942eb445a50f769d5ec2d373b962ed2f6a07fbcefe1da2d66dad1eb546b59b61fef21ff9f5b46f1cf5ce3fa89b442275cd8b6609377fb78f7c28a953081ba86d9549079c7e5ac88b241ab0fa97a49cec4ad145fac2f2f93f1a4b997cdd3457979991c1df1e6d60236f8cbcbc46a6e6047c1671265b3c45ef973794d17d5e5656237d1c61539e4dedea43529cf77bfe4e9bbfcf96a5df2cbcbe4a7b6588bfc3dbd26b151ab3df2e813f2154c02d7184d3f393ee64fca9386e39f8ff9e4049fd739d7aab13561d5d89eec705fff5772b9fe5fc9e5eacfe47279394d797a7989a3f4ba6a72c367e974aa417e12c5f74a4afbf07b6c4551bac51d103f70e9be7e51c9520b9cf5ac4a8ecac1608ae10cc347d5607085f1551b3fca06830f786f9194db6db5dd66dbed8aa5c962b42cb596d62fb93e1c4f589da4724521bb4259944aae1ff1c1e0a85b340a7dbb5d0c06ad202c498aed36831babd9acce39dd506fd22a2f31a26fb72b787c457a52f4f8ea96e767520278e3759b80beddfeb2d20a56ebfa769b9a37eb7aae15edce9a76cd732a35eebe20878ff2f155a6598c1bb63e194af3f679b573664a171a5f4143bdab34ce2cd6ca8ca55e3caf24babbf9403ede55ad4511ca49b6db598a238195ba3e1868e511dee4d4a6dbedcfcdfbd249aeda95bae1b8ed1a9eeb83c12cd52a567e617aefab87640f2854c332961398129d60adec11ac5d569db04ebcf6a6ea114571ad62392b7124eabb42cdb7bb8d9e0f06256cc155ad7154a2e8ce616d3ba89797b8f45f5eaa78e8ccca514642b18fd9aa9c2daed748f70d8f2c96b75420c470b11e96ec7db5e0e2debd8ef2b5443af03ddb6b2021106b05e88ba4d4329da5cd6ad0ca3cc7d5244947abe10f29248062b2c6d4ad4bfd5db52761cd133436a5ae1b0cb43cc99f24e5281f963ae3ddbda7091fe543ae03d5d826f6b2ea64816c4123246575c2073356247c70c3d6091f6cd0ce7430d0d2241b21e700df1e427fe82c853c9a4e4e4fc4eedc89897361378b8b0c3c9ee3169e2687a7e06ef5a0addacc3a257cd8d39b1938183486ac9d3ad8d89a0c061211823bad8a63dac47092d39541fc66cd317eb3e670588781755437258649c852fd3e2fea1c4b364dbec389bc4ca649f2cfed769a24ff869a5cc9f5fc77a6e5acc61a4e93e4377cebbbed76094ba6a871b1dd2e471fef87dfac76332c46bd068e2594e35b7c97c3499cf5bed58cf8ac19f15aca725d3ed8ef27f9bb94e4db8a5ea7ca42e79df1f174d24ac347f9f0e3fd89dc59d25a82625ea98f4e84b216175a5a75dee8533dcaa0f3f1e61f43bcfc329468c14c3b6e1e17ed37bb1510d6c92348c9a4455f1f36a11329addd5153b2dcec360111a12d02eb5f8a6cd739156b2eae3371bd11d78db84ec57529aeb7e27ad716fbd74c4af6d14e2de9deaff44595efb640d300bca7019a097258bfc6b4877d93135f20d7bb7922f194f22ecc9083449995794f01b3f66695e46c5d8d72aead2b9a5995ae0f3fdedf43d34d59addfdf2fb65b6d81057b55118be73659c0494fccf6db6628dd426c81c412cc2ef66c67913864aa55fac714099f97955689452a670b1dd67f5c66de7f2e019641129061c6da4432291128ed5d321fad86da7a548c7e5e0ddfae86c528ab8755ad6b1dcbef7baedd6db7d2fcc3a4ef06030db6d32ca9263a3b8389d49f4fb7de7ed8db8b1bad46c990bf5113aa9060ca136ac80a76d646ad695c4dd822e1e36cc252d21bc4d50597fa232d6bf6eea3859676ca74f787ca743fb6a559cc34b5b5193eeab001f8bc5abdc7a15171adee742b16b22973a30bb9023281c91a0f3f55bdaa5fbf7296264716abbb05bf8003c9badd237117e996c713d87c78829a18b7a556eabaceaa91b64a7ec0946c7dd87cf834012272955c97f880d194b982dd433fc98742c5287b528bd69c63fbb199d88bcbd17c586a73daa6926abbb58e92643e9a0f2d960e06b3244966ddbe7e93ac4f6e04c5c3c737137c9aad4abe28d7b9929f144460ce696d55608d9eb14adf6ebb074d05ef6795c9f3e54d91f2fc6dcef9a2bcae938f799da537f9f075ce72a03c529e0fcf72b628795eddacd02ff3fbbc03855755b658a232f1f0e3e57056dddfb359259d71375264e789bc9e24b38a4de5af6e2a4dfe50df79baf3e5b462cb07bf5c7eeacb65c56e779ec1796b8739b673bee1d58857385d602962dd21c7badf4d679a1739cf7be80cfc649ed6c8eba0b7949d3cc679abc9d8266f247c640f2dc6f772b9cef9a7b2689283e1c4ab760f935207a2be18ad86653b1478a3799ceb237873b8dacb6f9ed69fcdaf297b85490081369413de4bb1dea981b4d9f6a6d9b4c7b1dc8c236b68b3729c4f125e0d061c55ba8a21b13deed9dd9fe8dd8631d1f4e8dd97f76893062b93f71556b451b5d4ca2716928249bbc418f6889b37ab1b4d1fbe6c9ba664b6ce0ca32d003bb2f4bd227c41771fe4af944f2cd4e02b27637bb297e07e7f8a4fdeefb105588e0ac6bbdf7e51cfb10a8a236bfb564fac91767cdc55b3a415699c333ed1f521ec30637b9234fd77fdf9fea3ee62bb7df9719ed6f321acc0b7155ba63710d47e2db7dbbb4a6744c18ba7f77b997cb2a37f5c119c4eae8b77a46dba6faa5e3fd477e23b294da25bf63efb440f499fd124d8fbec539dd37dc780028002b7e34490475c67d23ca37792a4c259465d7225e7944ea7c9ce0de8cdbe22ef748fc8abd0fb92fc449d771368aafdea4fcc6fe24eedcef1577f698ef30746806078b1722ff14f8c80dd6a3583e0d5dfd3205fb6bc020528b3d7efaa8e48945f3a82f9538945ecc9c2b05bfd68790e4bed7b7c4ce3076f9d943dccc2eb4aab3ad67ccf104ca414ee916a7e5325ab95f68f4a67bf63e8fb0a96ca8e7ffeed0e7fb1d5793fe0eec83ac8657274c4c5bd5d11fa77d5278c293ea1649c03859c265c5be80d657d94a4838156e3c604a4723a181cbd4cb5541f965aca6a5dd7e1d33a4959912c24baac29c2bf762a349e3c58a1a61683815858f3bd0a7d53c93ad8880504155aec2ac397dbad56267fac74966db75a968cd11c62f564212a0ac4ff6a72c29f5a8341a9a5fa883fb547dfc039841bb6487c98975ac6527d584112e34ca43f49d2b6c73314c2fc51258b95a6b35ff0bad399ff3860b1fd41e5af6a89d8fffee0ad5f7adefae7ee5b8f3ea15c7d9a0a7eb7f4e9bf0f188f16ab128d27bf10829adeb221b1bff3c180ac53927c5c2c343e2e8f8f277a47790d06252ca9b9ccc17db4773ee3d2da82fcab51050d5a212b522adaaf321bb761f2e738d856f9f08721d9bae1c18cf72b80749cab375c6765928fdff0c909af6e3f6228599d50898e2c21f35de81fc97e2499359f76fb3b1c9746f4613914042e4675967d4aeba34be67e47b5e487bd7e7dca2553a4dd676dc3cbec65c9b228eb7fbb6b18c96a28a3b1231b7154a31ff8f0570ed3646c4d9aa363da9d2269fac254606bc4949ac34caddbb3f32cc9c7f5e4a41e0cf860a0cde040398303258703e53af9a5d4664d526b9d15e37a921c615b6eb78ba789ed5883c1ac3d68da8ea58fc4e9b21e0c663a0c242cd9099d0e0d9b6d9202e2edc1f3e6c9623098378bf75a146b9accc63713b64cf8886b537d38251ea2387e4e47d3a1c58eb4cde8bad4366ca90f336dce96acd2756a9c3a494f0ca339d1de26506edc29b45bf8e4963e819a8bafba33eafd6630d8d012b5d4d99c4253fdbe591ae6927955b6c7bac051aee549be8007ed24d447f91027dc8b05b4eb01aadb6af88be0e64bbd5d65d24014b2689c5349f25df75696f558ae20a01c2c940d0ea2d023da6e8f1aa1f659aa717d941328233f4a123edc6567eeb0bf8534ac862bd75991a4a37f0d89ffbb4e6a0a739dcd13ad488a24f96ef4dbb0d093e437364bb475b2a63b6bbc73032faca12f6e84208da4d75792f4fac83e4166c83c39b2efe9cda379b3a7ef30d758badda2e46df47eb553eebedaaca03e8dedac60c716f97031d36416e851c2a5d8762bf34a9b6714eb4a9b270dd79571788518b0bbfcdea30773395a69386f60c633118229b8c71f16ccd266794ab5e39c1d3786bedf7796ba65bacce15c07d7c1203797795da7d7784b045bc6ea1ee315de3956d586554bddffba6c59a3441254039c90e976aba5c965a93352083c1234e660d072aa844d7cb1c3002d5a365692f0936a9b2cd9a2a5b1f0fd75f27ea5e1a0c311d7745f8701d9d2b96cdd726817336ddd6a6034dc5998304d98371bfc9130982bda0143ab433998ea34e637c97c4776b2a3c0c16e9359f794ef3d85a436dbed2d2574976c4639299f68fa3067d7c9ed88b7f1568571775867da1dbbc6b22dda95e7e8e86630d076df7b68ce968329ab93b7384b8ba46e5771b8c57589ab581c25ebc1e028ed7aacd95fe649713297b68a7a3c17cb683a9ac10ec5251eca4c9738abb4dccb7d7e331850b4137fde24420d6503e4703702c460406e41539465929e1c1fcf9f1427fa4751105adaf3f16cc2ee123e9e61d12a245aaf9374546977ec96cd1847aef3b0d26ed91d9b3168a9a6bbaf911cb94d92e46ebbcdf0056af3e1350c83e4c83eb9aaf2f4ddfd72bbd596892a71e8d42499e9b0386d0683a32535d0d5aee887bd4af88e28e8ea28793518eca4b240aa70ff161f0c8e24ee732bd1bb1a0caee403d1d560d0f3d6abc1e095fcd62b7d30d0a0322d792b4f9f36cc75b6b9df1948ba14cd58265377abecc0b2b893e5662c4d8eaa1e06fe6287819fb523ab4eca86653f18d4636732aac7f60436a7713db62693e191065764e27763ace55c37c47f916894923eb6266c0d44ee84cd13484b4a1bf79b75231a10aa175daaad847326665937aa6e924a5bb3392b7010cdc420bac141940105b266d3ed92556ca60f6fa4247be40c0b69773f12d2e1ed56e349cee67c309823fdc7519fe114f7b7291ffe23d749fb79bd40911652c99229b39464cfa8c847f9b021c32febe12178c888a8f91ba08bac09cbc7f6441fce20d1e19b7a8710ad33a12277f46825c99bbe01d2994a0534667b26694959bd5b4f4b7d6fd41f25e560c089daea2c56a5ea156da63ba2f4c363c378d21d7073bda7143db97405c71ab152ae40454344db2b6fb5dd1e71798fa8f4ee745bf599a8ae7789fdfc8954bd79d61da6c549fe0efba35320d2879f3e63976ca57fccc6c7c715621960fc1e4e369d5e63d635d14f2be96464770ce0c1808fad09ccbf1f561a06ad09c32b8e854383873241fa7295a129f48ec9f0cd6e65bf5f11050b7b0fa45e2c48e0be932a55fe877497334b53b542abf9dfe8d93003d2ba82e926e7b9d9a18673b29ff8a392cfd30b96e2287a9d6a0b5d2726c243bb29bc4e4b145fe0b865058480ea67eb24c51dadc09560ada36652c9d6fa49bb88cc93c568a1d540681cab2aae1ba93e5cb15932876ac17733cae00688eb42679be48828e34267530c1f6d50bdacd04fe649c16eb6dbcd763b85d95aeba379520faf4588afb45a1f6e46da2c39b2d93cf977a615ecc8d2f5e1b4bdf76b7b0fce81c3b790ec763b85cb489b27359b8ac4be81ebf035fc0e0647a770dd6eb579f2cd4a2b745d1f427af7b3c140236972c1e640b5c0da5861a3b1b4d9570a5d67a265e6fa3d6d29292bd926c36eeadaaa4eaa51a56133a73a24d2b458a60f5727350d03ad4e1622bd1485ed2c937929d34ce649e5b22cb959317e5969fc38e14fac5139b458a98ff231dfd1595bee1deb0cbb5d2850de2a121df1e1f8b29ec061f9c34a83e3721f4773877b959bf5aa42555c540b438b1ef82172b0030ad1e6590fa48550edcdaa05cfab453afc94153e27de1a6af60c8f8f2ba1a395dfdfef17b147aba497a3d864c95640d134914592750c8752663b2eda7dfd874ccbc6d584ad08e160a6d538fbaaa749436e2ab5382094e3aa5ddeeaaf05b27a921423c31edaddf95ba82c199cae0df085cc15bbcd3e5113dee17a7cbcdf476120062972d416fa49a9a56ca10f06e799b662bf64da82c159a4cfe8eaee8014aa464539ac4b2618985c62cb08020817268dc394e5bace48910c416c842cbf616a3615a8130b169ef10ae89a72546a853e2c4eb43ac9b494ad590d9b0fa21aa474a46fe47729ab99adb397ed2605d11e449aebec408371d4947b68310426a1412bea88c83630ad12d808335478135cdbece4979596e9a32ed38cd9faf027c822933a52520adedb188fdf94da3f4b4dff5ae3467e6ccb84e7ab9d09aeaa4883e5db2d7f626fb7fce9cb4eb572bafac8ffcb190cb4f238c975a6f1e44da9f1c70e125539dcbb7f3f5f14b9a44527edd52f768b942db4df88c37059eb2c3f5655a94ca732abe6b4d266f52e2bf4f94e99f169ab60bbd0ca4619b6ec53869506578f1ae10ea2d6a287f1cbd26461d8ac4e72c102ae07835d9219f9c0d9043d7e4063664749da2882d4e36272a2ad715d86a5bdd6872b5dacc3ebe475aacdf5d17c080bea383bb627fa683c197ebcd7efcf2adcf2d63aab318daecb21ddd75952569f50efabba43607e3fbcacd959966465ffcba8a0aa36361ceac39aaab658055fa34ae08eb62ae4d371f6df67bbeac7fb9d79d9726125f59d7695e74f2c9cd8067fba1a59c3d531d7995625d5d3d56835ac747c5a1d272b1d96d2a7d5c81a56067ffaf4a9c5e0579839d282546aab16ea6931ce60a7c88ef9a447fff5ad3cbebe40ac74a49549238f819de2e848b6cddcdbfd2c09a0ab1aca3baa5a22d67d7784e0a4e6c00783ec49f23b2d2627dd1abb4aaae30c5d112c484a23dcc22c48eeb4406d84d1e249c2878b275c1f55c9ead81e66c9aa93ca88c0b34c4cc51d8ee93369aef0047644697e586cd107079626c8fc64b578987056242f91e7b44e5067e3a49b2c735841b4ec78a13f7674364b4a2d1fcf273abb4966b0feb14d93c88c4d13d48c624b488c4e8aa94e0c8b6abb9d22d1a3dc26ebd11406c4767ba30f6b08df50f468a30f0b1107f20fef2df5e111721b203e9a413bcd9e70fde4769425f3637bb848e64d03fd0284ee1ba96dde1dacef5f6c870c6d34e2da421f2e70b12db7dba3594a1242b1cba727c22ad94a926431b2868bfb9e8df2a57c40dd1f3b703c7d89079e1f87c7d2d6f0a139f61daa37efd85a2de5851177d20f997e4cfbc34bf9d9bc1acd5bd6e05055c5b90f96743175548b74e0edc7799218ef46aa61a943e9a8f6e3017dc8b2e4572e2d038d2edf78c28aa426ea1375efb2e4074e7dbf9869aba78960d6ad134eae5d5eac04b76cdd14f7b2d4d6fa89f8f8ba6485d0de2305ba22e1b0e6d69d38a56af113e724f39d61efcdf5e19c34f8cacf69f015cd146f14f98a1e453e38f8d24977a6b37a57ab0f8e183356c27901a677ddfb6a4b49d5926ee4a130ac579cb2ddb6f2bb4ea8d225f3263bb0a068b6514d084c75564993e3f7ec332070d5281b1af6892621c0e9838184ff26a1498d708380957dc5aa11ae60fa50dc8398c520b59594fdb7bb679636a55d734302066b18c73ae3a54cfdcbedc64db8dda0719a7cbea89f55d72c2fb5713e61dc4cabeb5ad7ef77d6ceeff67635799dcf9e389deefb8fc41e425e44d35682ce2db58ce8d6aca35b491ecf6a38441d1fd7f0a83e42fa61315e4d929f2abc6eb72943611c94a06dca1f33ed9b4a5b00fdca77faeb5f9fa2eff38e072911dd7ba47e9d544f162320f7872b24f3719ad4ed80947493bf9169816b5c9df2a16cfff7c7e7796e97d200ff6577802f458adf2365a98fc6f964582fb43f70b94252e91f59f222eb6893eff7569e03403d811c570d4b76c40783f2294af32f9bcf30cd7f66c94db9ddf688bbf7eca2e118d9e5fd6f51f6ff87bd77ed6edb561a46ff0aadd3479bdc025991d4950ea295b8499dd6a9d32675da6aebf5a229c86222910a0929b1239ddf7ed60c4012a428d969f7733ebdab8d4c82b80e80c1cc602ee14ce7858679ba0803a61ba765669724f4051fbde07a647835f6078adf88205edde949c97ae9bbe0b872bf62ada0da38e08519528ff9459a4114acfd47f0df359a90b4baa214500008254ff98646da20bb1da60cd629fe0de92b71c38534485ca6419090226b418b08ddef66f364dd6c9e84cd267bcad134d06f3617cda6f8b2dd262261bb3d89c49f209b271b2b484461a8843de1dbedbad98cd0efa7f8b2dda62261bb3df1c59fec9ececc54e5354584fd9744194057563081720e2685228269c3b88a7ba84f911e9a3e691b644e237dd15a034d7512209e589c1af3713aa17c9c4e322f98f113ffd4d067db6dfc0469c5f93819c79309621841ea9daee1c89a8f53a045d8386eb5727259b9b667f1633a8e5c535228e39bb6a28c4fe6a2f729f41e08c139f47e257a1f3f999f1a33406f48e5664d6c687cda6a2d9eace1e3a6b580c12df2c1f94fd253435fe583832cc9d89f64e3c8d7fa4c510889f764c6651b5abc5100b46c641810d01ed2053512f628ae0a324ea253a170f57567289c8969c39a2d043e214c4c26251d8740f400c718014647b49ea2b7572f3e5d48e671815a27060946ef606ba564617817d9538dc7cb243ee07aa7e8ebd2d72363f433f7ae13e0ad465c37bcafbbdc992f0aa8bfc47a421c349854542862d59f5050987154493cf586eba93d8ac681694fbc98f83478ea8ca2b103070a40a958474fddda1bba70a407a64942034a379b3fc77ae153db87d90f69f0c41dc55e48020ac71fc57bd3ca318602b3b4d9643a27a9b82ace2755bdaa3b06bbfc8e2e2a0427802bee019a399ac7bc0a331515a41147d208b60e7a1ad579894442e7d8e28c17f7f78aa845b90c8b6b9d91d63a0d4740909026f0c7a761b60a7de532311cb391efb55ae24af1c4a6149869b11063c31057ba39a8941bb4fa7e6488fc2ad239fd847a2aa36790ee215a1fc1dc79dc0ae67ef28ceb6d0396cae8475871b621236a340c8fcbb3b210bf256336d18d56a0f4203dd483acb7917e9eead354579ccddc73d268180661f047a96b515b5776b2e6b1577303c503dee4858388b227794cc30ba2aa1bf9e20be1353ee42b9f091f3b599eceb13c848fdd2c63f7c18c848f3b59eedee372133eee6645fadf5084f0716f22e8aa88ae803c51ac7b8040135478440a21e3a5af27069068ca5cad8fed004991f38c10b8c7252839f42fb11e11d738e554987747751ad9a11e00e92fc4af922c97b5e782c8a7a63d0ac64018fb13cf9f78b1d2bdb9dabdeb58dfdf1bbca0fc2212d09245149f276b21f76e3673ef32ba6ac027a4efa7f52677e19ec91df024cd2610290da176933428fd18eba1d058f6a9f4a5329ea0b10a3a38a73e801c316894cb3ea10c366d903555ea5a8c9e416d5e7cead375b3f96bacaf61ad379bebb13da1543fdbde6c5f6caf00c1adc79d497e7b6a53ba1e0f27237ffc511699c805e09335ac60cfa639cac27a4363e48f1713ddf07c84935e20f1ca9665c5968585356e673a0d36cd8f9b6673098b2bb73cb7560b3fe27a62646c63492016d368c4c7c1440dc9cc0c2f41a163746ac4684f29d57be0639caf9678a79e30b39ca02221f1098a7ec93c531ae2cd33b2a2bc7947369437efc994f2a67eb37d6d9025e5cd4b724b37a3d85ba857d2c54d8e5e1c00f70500b2c5764323fdde20afe9fde96b584c37e3d79322d7f83582688a8be2057d15eb770639afd81decbb6c20096d2bf773280a6ab592c289b67e435e648b50bfa17f05fa0d8e7c6a18709aeb3794c5fa0d020292ee4d7a4ea6cde6fd13099233fa391275c82a6f04fc6631b9b39460b3242137e44c00d3bc1748e68aae468987b3714937a32b60197389c13dbdc9e9d5d1cd6306fa3ecaf13e89e0e0e271d9b456ee4c743cff3ed64312198025003d14b7953740be2d9bcdfba776b37953ec70326b36d74fee0124b211ba162614cd26fca2df2cf1a8ca3aee9a4dfd92de6eb78b58bf340c722917e815b92929181ca36b6a6f36950f3f1f72a9810e3582cca586506b0006f5ebaea468f0203d2aefc632cd85dc1b04c70fd2074540238324e2ee0cd6939a3139dd937846dbed5e5a32d223fa25d0a122f89b1886a747f4954c798529c01860df0a49ba72dd7d04b997eebd959b6e954c2e2c03e661115ca7249cca2b7a2fae1df0bab67c651babdcb9ce85ec7dd4d01ade97008e3bf526bf904745a3d74228e871690c80ef6f229d7dff4e28b1673d02eacd00b2ec5904f3d9264c21ce12499cb54bee51ee0f9ccaa52801cd6626cbce4fac00497a2eed5df48406340622fe83d065c591e909e584d3b6e125905ed53ea9634e3f45fa9b48d7b9c98ceff564bbb50d03d84f9f4668d4037bd61f07a310a8ef096584b5685238f211fda1b8c646fc89086ae17df0f5003d642857c18768915cd0555d8375ce4722e43d7ff7054df23bb2138489e040cac56f5cd6b511674726bfe6cd9b53bea5f3d10bef9ce8bc49ff5f7d3e3af75e1846f316aa8784bbedbd54859bd1312a8b90f928f462321ff9f80b4c14fccaba2718653fb3ce9fe5cbe357a19f1485fa8acc0cb25211314d480ce965d38dd77121a7fa8b2906ccaade861007c1f851ab2c33a96f7bef23fd07000a71868e91ed2021fa6b3558c3c8fc8db2dccd614bd7450ee1590b72b5f45632b627adc830f64a19e53c665488dc51b227a21ec4f4afa8d9b4bfbf8e506cf657a48f89d99e1806123a1feb3ca6ca7cccd879af947bd3f3e3cc135a082826dedf8d2e91858a288dd8e82d3ed74ab30f68b98c3961633e99ec0c58d90cb6bab2aececa1449bea6801ab947227aa632e647dc3b883b916014e4ca10a8cc9c2dbf17db73c0ae216c70b47d4023ef4f38b90bdc9e68ff40e3d1dafbc1d7d7065999341c85856a056f9e671ae70199d2f0146bdb099de7d928f69ea146e2a558dd62441b3215a3420267d96cd66a1e01cb9250e45c021a6d1312d3e0096c98ed1972d0949ea1c1d7cd769b3f5f359b6cdccf28da27948f0713fcac9f21bdcbab1f450d08d2b8d93c098b4bb9a40907391b3b138a8c53b0a551f36ed4f66e05547d0aac94b819958c3b8304f8a1e9e8af404f892f5839cf276cdc81d4cf910edfc9dcf0e0cb4e875aba409aeb50bc3b21f043d3118b65f19e2cdecb8b7765f1dec42058be8fe561dcd43748d23cc3b7c124bb301e0f2623182b6c5a7821f0621824fb3c9c6081210c7438310810e794674ab434d8e997646910462f9195a49762662e112af412c613d24b60294ff435bd848af00796cd4cb9ad8675051fcc15691b3019828e6e36c55a84678370b4e7b9332ee008bdd96e39a5afcbc1867296b29ee60e159adbdfa7b953614cb6a03e59034d1d1aa70b387ad2f142a5bd1713e9e3ca7fe2369be9b83d39a1c04ba563df44d5eef5683cf13e477a4ad6591f74dfa4992598f1241915747158a28b6392923989494c12d337bcf75c7f90a60c4781278c75516910eb5d1b1e3fa12f105efaddf685b1dd66fb72348bf333e2b2624ca4d8a70253131e00232f8111a5c97bb09452e5a0902a47faba951a64461f1c111f851ecb04ca73007e908b935321065fb45aea94b45a7e7e46bde7fa8cc4192b91eb65e60a991a74fba2dec5150efbd0ea8161cbd97cc410028f1912d0c928129dc93b9c77aa603b435d5f8e2e032f0a0dfd825c1a9523f92ade23f459e12290847c1cc156cf7d2c02253ae29ea26e70593623fb5ac86c803a4017abcda65ed8a710a9721c93cb9884256b8a9257b90bf5747c8bf77eb1da6ec57cad64c2a37804529d01a52774d16c9ee87eb3b9789a1a657bab75c9f666bd6f7bb3ce6c6fe6b00667f4a40d84517329cd37334976ad4d4eab35cfbd056d281bcf27e48e72691b244c25eed100e78e6cc8bc30c0d9903b32570c70ee73cee73ed72d389d15563770d00ab5b764ffb21b926f237d85de1af58d50440ff40d61d286a73033123a07dcd819c657a5fa5da688b139a1f4aed93c09b087b274296726473b6037a3dcc95cab139d690dc6e42edcd31a7cabe6442beb24251f54c580777b398294fc100b49c0b3b8ac45a7ead0496f0d25faec23569661244e859160abd120114d9231871329df1709e1c6282a489e3d5f5b310d50cba030f289b7dbb830f5d102ac7eb77fcbf44a1954ee217996908682e11bc66896006a50d21495a0381789cd122bf3e0bbddbe2db84fbc617d9b8e7cc0fa55b43b627a8114db93e23b5a39289bf297b8acc95df5fba3025f003523234ff738a5ed565179023e5e4488162f3771bc603e5e108d144f9c279466363b94ed807d8dc6fbccd7284bf21a733f9d37265e642dfd95a2565399f92415cc082ff928cd70fb3802a204af08e1998e0123fd11eb8131a999cddf4a20aad7e92c47dd13369ed9860af4c818459ea0773fc4f44354bba46515e38997598f91efb8fe01853535f28a67aaadbd61ecbc97b06faa951710194f4ed9a9c100c9a02348a0d53eab8e0e3856f132a67f24c58efa3d3ea08652a3861b0332292b9ca3e2add48a3fd145f44fe1a20135d0e53dd529a36c1ce6a08fb7db562b39a1c128f64e4ef4ba809e46b379055c7db389023b14412c857dd9d42febb23e8febd4570a6e48d580d86ed1346af475e7ad121da1a3d4f44945556a6bdbedc989fe858bc8d4e32f257fcdef4b8ba7b2774e4e940018af3cc4f2c5168a8a2d849663bfb22c3088d16cb2a7a6dd6cb2ffb1296da3ae43d1e4cfb1e2dfefe452b9e594076792efaba21f45b3c9082f4611b4bc50d8f68a5d9948df0d91f0211c016255654a52d7e76b456551b6be0f05bd902e45cd6669cc39dac0b77cf99c0875c7edf66d0e93edf6e45a791159614ea4519c4a43fdaa88353e4a63b8199c0f07ae67a2edf644c721abceec9471a100a4b8603e694b383f8b0b4da09393a4d9845cc9b83dd9e9df45cde64b6111ff9d104c28c1b675db308c13ba60dbed1f45be3f22e3847eb7ddfe0480190be3464d462598344ee8cb58ff29b21296c68b0dd3013c7f1585ff82c211db6e5992a7b1c438a12106447e19d7b85e425f0c804529fd6b54da29f25a781dea112a982251246f591379bd1a24d925e3425eaec679ca772221cc12f6872332f8497151299d0de429a172f40a76fbcf98fa7c74ee7bbf2b44c177ca64a3a300d55c59a1a0eb8c9131cc453ee1db6da8aea23f547c20dd310be3054561ea9010bde20e0516f7984d32a319e18e3b5bbae5704bd246235124d79f225dc89259eee5cee3a8b653dcaf15b762c51d5b2174cdd833932be256699fe38f6360bc782b9e9c4289d3c26027d279cb161939b0c798312e4c9cc67c421360a54560f78c352dd494c28a56a714bb3823e6a11aeb7580662366c93e8687397e29511285ce1e1cc2886b421a86fa65609024a4bf94340295664b814dc4814a022c7911a89199c30a8b58a85303155cf5d35cbe34166ae565e7d8c2e2281bfb3899503d7a6a8f1a4dade1351a460bcdb538152150f4e8a9336a10f8a4350cc272dd88378c34befe27fafedfda583a68d03e877cae355abcd59868fffefe3f51c3d8e949bd22ed8f5cff81ecdf7334aead462b1ab727a7bc198ded49b3798261d113387a32f3df1dfac48813ae1b3b7d1f7b6461a77e53688c111fdb1329c1fdc00c6f3cd9e9894122439ddf302c2a699388b6f788d1ac9b3f47ba4102fad6d41333124ebf684282a76d5c1cad167f4aaff39b62851e166c112f6a2e9cd9aaac79a13513aa735a352b48e49ec86e74128fa38d01cfe9a09b408f083a7f0742e7147e84dd015ebffa85dd9fbc42e4449811a5610d560efdd25a2b3089f41748d7cd669445af2018ec8c02b118cc99620dbe5f6f6179dde90136436d9fb378ca50e327b75c6f9456dfbb8a0da770842657c828c8f3bd64a4f19ddd30bc68bb45d34daec6c3434be97a0b88edf6d5be5bf96fb26558679567f6f2187529435185fbab22a892f21dda51c32dc9261b8ae248567d35764e3ea9c1228e3205629e296e3035c80b6145dc18c58fb71af385c758244f30085702cbb0e219d3f3f8324c79211c17d52ca4eadda68a0d84fe37fa6f7e9ee89cd8e4d617a6d4e3c9ce20ab9a92624ba081c269518b882a4163831caa92a0568f9355bdf96f561d9348545bacb06958e7c7aa1492058530b936f0a99404e4b759789595e37bb4720be0e84c5a01691b06c1a8f45f8066760d1228e86cf9379b4e8ac3a1b84c17176a018d9eb44779e3defb480f4802a764a51b423928bf810e2b0ce789a088a4cc00dd13da4649fbff5e2da26666e3f644f2b4b795b9cb6f0ce1c4781ea88ee915170c8062c6edc988073a978be0e640452f424187ee5548297c8b8c11a7b11709bfbe39cb022455a99948c0255f73afbfad399dd33a1271c4bd5838c578a8f598f0eab27ca11c7535eb223f36d998a3222ec2fb1cfb7d16aa0145c3aa17c6425f0a8958396bc290dbf0c4f1721552551942d9743566840995114ef2bd087595af2e152d8818af86472de6b19d21a8849f02c320893afccbea8244078ade9f518e945146bf374fb284b09e61059ada19e4f3b14955d00832db1cd048b5967c95ec0c72fd98da0eaf8bfdba6314d71410789b9d1e276cbb3dc9e51bf2027822cf8c824ea1dff1cae91fcef45bf5844476209f356e9093f6ce20cba8de9102aef119aa91a8ba2aef0a12fb48c722fa56854326c988bcbfb81e1dd08de1684cb69302de471d45197af878681dbc0c7404cbad8f93f6ea9b978052813afb5ffee1ecabd58a8927bf60956f43410dbc39d0801211873fb5f3dd5fe816d434198d7496e120c38bc93be1cb455d6cbf29d8066300aaa4461eb6aead9a147da87068d99efca1823aea7a2ece8836496835a81d09689d4853784fdfe57221fed4de6eabd1ef0a116052b51e7c1fc359a0eb09cd949d22d28a5a3aba05370ca3540d92a81876d0fb1002d99f7ae34078a17f96dc7af14e38299c62648f52643f43a8b1d62c44de6c9e148857324a3112e106defc8992812105162f439a9411309009aa0ba951ab053c82f74e7897b1b392bf87741debd3d020cff169a99e069f4a93268470a31fb9f75b6214c4812aa4accbff2bf73e94f343bb3f3fdc63f4f622afa3b27e0ba7bed8f31ff7f67cc5d140dd7622e1b7b88a32be86e3562b98d078841807f8562fcacc3f7706097706f9b57624b2bf6524fd671d7cfee2de3cd883cf77b5b5b2315090760e969d2a999128753c21e3c94402e98f1ac4b8e76b2ec7c2bc6a23f9d446f53c460a2b851130785ef4d4118a7b65f304c48363489c18047d030982da20639837f25348bfa8d213557492058ed5554bcabf729a37c792d128f63841195c7650e44a1f9ca036d3192a3cc402571642225f75fd502fa1e58762d630a09899b10f6fd3644fdbc849705539bc60ff0dc29e503b3b2122a14cc6fdbdc59bd3f518e9289797cb15fd39d223f22ad6b96f18a7c996bec8787d1cb08c19846ec28fd5bcbd3f5677545337c7b049a2ee625a125f2f07f2ca54c7c89cb609facf5ac18f7056f9c8e840058f55a8c22524a441e1dd2ca03199538e4e9b05b0c39269f6323b4022caccf569717f4fe3ed367a4af9761b3d696fb7ab669399f3a754710c72975f94fe14ea28025a2ac4d03d1c720b9a84fa1da91e5611e5a6cecc5c35475b8dde034443489d1b868701e2545d5905d32f684c36cd66329aeaccf084fe2bf195ccb7a57e91882ea5a242a20860033c19c99a666a940b553dbae680995346e470b84166a2757fa7af85ffd1c2e76c9665aaaf8b7843b965a2fc6a905cf424f558b7db36b9943cf68c9e9cc092f3a761744b42aaaf6863e97f79ef87bc81b73fc080feeeeb912553b13437bc906c6883277eb808a35bcc3a829ab2146f63905b2b80737ba1068c580826f7d7405f18b81e13baa6015dd078476eadd9a214dc429908f4edefddeb006763476e857ff4bded54700d822047722caedd756ac61c2c65522af40b1974cd26512ea01e85adca77cb5a21e12cad95510955258687e167631a49e95e38d3630c4611e41b2046458940b410e6db4f56500420c10a682cc3a685c6761b937057fd1eb1cf7ae85b67f0b2ddde26a5e806be9f09f11e8335ea45ba8f37da3b6185d58e51b6dd533f911a0bbebdef75767cf599c471b9cbb328d0e4c66e97c186de2608f0d4a73fd74bb5744e4b4e2997beb0351c01430dade58608c04c65a7719e68544e7c7511ef1b94be8ff4a43081c91c2e25e36052357f82344351a0939736099a329045cda612c3f90cece5ab585ff88535029e702fe030c7bd43d60f965e574b9f17a5e7febeac42cd7a55500eca369df965b988f01aaffa84176e9c7d7a1beb3f2506d9e0536d33ec29e53b834c7d9a04fa3e22ca17ee4e378c5112d4055b90aee9159fdbf097b186d16c9e3cdb4fdd91a54f230b3892c4bf23773efdc0477791fe81d7c67228bbd04f99429021f5bc27fabbf27545a5e2e4bc7c7979ebefd78df520cc6e7cfa43b4ddfe9e92d73efd01bbf5c363baf55ee9d58b0c6508a7fd65450179ffac08fb7e4455df9f6b4c8472f7ef753162a58bf893b7e5e19dfb75de760f36fe2b36fe27fe3ec75fa6e8519df9c71c3fe1c5ff0fe5e6af1e2a51d1f0a0af14154effa03e5631b9bae2ff78bb2d71556a9ce8da85b1ef3a19e7fcb34f5fe24cbf3c3ad3183681d2ef9499be3e3adaedb6bc46fe505408cb4b64bbc52c27f4afea7c7dce3441330f2365658c882abeec552fc778b3b5af1350276169364b0e8ba26633bb3e8a0c4a570297bcf3e9ef08a3df1fb31b381391959ef9f439967afe18c846ead6fea882b6e6feec6429ca961b4ed478d0a51a72adbd03931388b5f0c5a79fb0c79f8ef6b882624e2ef918eb998871ff82f8761d18e4cd11ccfb8496ae0b7fcbd784c20a8733fd5e9583225846cfa04b1ecf7c8ebde1cd261bbfe1933a1a3b579613beb14f74d420655fb86e18d6348ed8a9215d5fcbe0068aa7071d6bd53397e5227274717180b6401e4743a0ebc89b619c5945caa66e4236caaca90c4ae9c7ed164e2df3e348674fdac251ecbfbf78a86f32625edb6b674f8ab72d053d7c906659fc7f6cf5da848fa21137238fabe55e96bbf131d105f3dc266f0c35dfef39a5b7b7934b0eeb4a37b7bf9c0a97d4ccc8ba56e74d4a00f67236ca9f74c363a78ca25efa88b71a0d8fef949be293bda63380b418062dc96ea05fa1f308890bdee7aa62f9146eb73fe689a3b75ccf1c3f390689468e3730bc4fc5f7b203bfe7251c1aa312734577b08a65a18b0d34fc94c7e97b9f06d5e51fcef4ef62643f843f8452887b61c350f2fdce8d02c7010b77218559e308a5383fd734518e216e901ff7f2085303359f90a1fd7a2c67a2e6fc1349b767324ef477356460162e41d1afe08a7ec55367c40bd733414582250d50510f091d3b165e7cb8f0ed18a47a6864de99fcc2a90ffa6092de09fd713a2173cac6ebc9a93ecf2d2ae624e4e375c9a28291b5f0af3b5e4f68081f0b3b7183fce11fb8a4c8a4c1e432467da830953721055efbc9afbf298ebd3fcb576fc2be36f2148df1bffc3d8d643cc9a5062f0bc43263295dedcb278f32ab56e67e16656159bc3034fe18f3098d76e432d5af53c320fcbf59b91a4c0cfd9767210d50c79a8ea3c98e7c890d12a500f048d5d442edef0c12426efc02ce1c0fa33a286e91eaf39193b6e12df29d19a7fb0bddf8bac91dce1924acc98142edc2e9e2ce207e7ae8b6f5eb6e3f90881665a1dfec53699b5e7365926b619364bbd58b5df3d4460d1b82c8e89d5071358870b0f82ad12332dbaeb61b72111baabf8c5c8e8c614bde043ae00e85218ca4743aad194905b77dddd59bba4abfe5c55014790b2e61b49b975aed8a82507a4006fe752791c65f5c17e3dcdf7a6336d92994fc170ce4851d894aca4bea2d1789801b97d794eb949ec77a921a648e4f812af59ca5f55afcf7e89138cdfd1cae529aee2fa3bc57b0132ee2cf2c39f3d1af046be9d1680368d42b8362a3b6f72215f6d4e5c26ab00025b7cea8f0bbd86c16c7e29f8cbc880a4f4bb7e8694998e61eeb3076af614a45c572f33b83dc3d5c563b54f63ea57eac379464796cdf3e5ce9f5814ab1fccda33bf52245532a2cf5fa9b86f2fb6aa50ce54536943cb9a1cce4795aad4dcc0fd1e56d8921cc63f7cf92739e5122bb6a5cc9fcb411ca97af817a184f0e457fccb2fdc08a6c599a2c0930384bf7cf6c45490e0545287a119a72c5885ef8c2f825629fb5408f8cddce205787b1c78f5534c7d184c420ef44844e2ee2831286d7f3aca44a92d6bb02cb8f66a14a92d279ac1be433fe2d853bbd562b5088bbb76aba1fd4a989a36367bc82947bfd5d0dbcaa5d5354c08bd0320679f6ad45e575a50a8b8f69998e10d458407f4d743435953ae7db6d66ec99a97f6fb72799a0d040a78878614798b8a6c82a4885d3113c1be9892eef0b1a783b2e6e06b6db9393c8c204125214b49c16531cd4281c63ac05d4864d4808c455a1760f897b62e2f28d3c4abeb7dbc28e4daf6a1ce4bc5854d5aaacea171886aa1a9008cd80420c9fe907a05eada236c1491ecc3f91626186fe88b17ee99b6aa2de2feec41a2eb8f05497c15dbfa47419eb7f7183fc824f7f7283bcc1a72452d960756562f0a1d12c125187ea43bdeed30f7f4a958b5d46ec7c48e93d6c901ff06f6983bc4c8bcb6a4543f0f7225906c57b9ed2cd214ebec577a46d904f297d1deb8d80858b8641de1f29f03ddf11db203f8b02b3451c27f238f8f148a97f8b52bf8a5249bc8ea60d83fc79a484891dcbaf2512cb9f7196d03d86ec1f5e3e8733dd34d9933c7cf781cbe7dd8e4017923bfa57884f691ade46f4bd5fbcbc8ae8cfa5d7f7219fd31f95244cf8552470fa273edcb0599c30cac44b184d29cf1f9f2d16f42acdde7e667734c26f819f721440d3f2404eaa56a765bd04c59bdbb83d29c753661e10655839ec1ffa5b289ed7d1c7b2413ec639d093d1cf99d58b873af6c6c8961e48b801d3a62aebee69d606183aa5e85cc11fb6894fdbe8eee14da407df73c3380dd17ff7d86fb526149d4a87246cd182f54a45afe3e5ca0fca41e50b5b4bd326075428db2410110878eea22fa670a49da27aef38816663c58795682c0a7c5ec5816ccfd7c2694522567428d299691b2429cd08092813943e4737afcac7209f2e86ea2e8931e2b19e18de389964aa2146d6b7698d8d42cde02320bc95adc1477fd5a832d6dd1d8eedc9811d368e84a776744232d919de7852f5dba5daada2752acfadbc9974c8f89eeb014a13600f162e6131d9ce9377bb7cc4b33859a6754e28f70191a4351e249403fc4b929ffd7a4e42c86652ee479c5ea6e2751df1e777f4a5d82809f339a375bce42aa9d5c87c9ba0834e51f53a498abdacb1b2134e541eb9c93571621261f86645f7bde4378a95dc96044503bf85b7737ebc95d7ffa89529bb89d751c068e28bd799bf5ef0947e577afd81b115fd234b62090de4f3c2bfa3b1780e67339630a86a1696139edfd1552509b1ea462426f1ea80ff90c3cadc89889e00343ede22d178647b88c88c27ed51db43243716c8111a28c3f11b5b69433b8959d7986c6dbfadf7f370515d5bd9ae550c0030a244666870d246a18952d5dfab25af62162e16b446a27208cf67ab66a44735deeaa24c1d8e48eb91364968b01f0d712f3404600f3d12561722b25144cde869306a7b412b12718f84ac30791a8c02006d62e421900240b91186407a091f4e513cc9c6116079aec4c2cb9a5787bf4f7d480a569ca0df71eff7b27a26965bf8fcb5bfaa87fbf344979a8cc42e65c73df250918f95222b3edf5b9519da91311a6c613443945aa2a216ce227a172a6f956e3c64a9f2b1805656bedaa787aac82cf6b23d515418d6f604350d2eb321c49fe9459a3d8a6dfa59bc27f1f28d1f26e937d30718c7a3a00d02411b2463389f26148ea39cc9109d90f5d79e468a30ead7a4104695cabdaa75a65c2d1914256f9378bd7a7e477fc6990ba39087fee271b326319269e7700e23ce929461517a1b56939edfd19bbd44c4bfaf65f286259cb2b478797e4779f61a7f64b0177e1479a50f15fa163f7f6477cfefe8afa17c4e6992250348027c59fa2bfa67289f7e864c0784b725d12220b2aaeb55b48ac43000594c3271db12ed64ed5768a2f75fa83f216ad4b3ac7e1ecc593dc11294a90e99f54d12af58c2efea371386bd7d958878e8a2185bc6e13da3a12fde925b46e3347fc6290be53b9fc753fa4e79b99cd167e235fc1246f4233e47ec16281c1f2b8cf8fc59725bd7ff8cc32ac534c8bf4e856c5c126ef132e4d44fb3c7e7074687a266dfd7514c2cc717236d50d3bcaf3bd000e649a62ca9545a72d3a57a78590aad42c5fdc778e28df9c4204b5fcf482194c0640688f03dcab4b301d9ca56372ca15fd2ecf159729bd2d4cf5e5f6c5872477fc93fbf8d978cbec1d7959fe0ce5df8ca9b4062eb220937e677b8075661f091a669f6f8fc8e2ec44bb6567e2bbd5ece8e12c875be73e42597e07d57907c1e668fc09b9ea96f7b907eacf15b6178ca764a7db846ff668d686faad4c6e9157635f1a35b463fa4f9b380ef0f2281f9c92d9dfbe2f9030bf8a38e7bb932e1c4172b2061cb7853cf0b08ad883a03aefc76099df98c276a7c4761ca2e1b29855b0ba5cf243d240941b721521f223448907905c899d75b110c5522a184a5d5017ea3aaa808572a4f6c2e4f6c59377ae3a69708f5d45fae16ec2de0a383b72d7a34ca09c242a220c40912e267897786f61d926b4ad93e155e59c2ccbbca6f0565919a65a5a084a44e072219255e4cf6eb2489ac75be9ecd1675f848f6fc2af13e07a86082d91761b00f8987f9870709e9912edc332486a7e0b1b6846211a74b10cf248fd0959ffe698ce7f51f61f6c2a6bf47e1a75a44ab90111f315ebf52872876089f578b968c80b18ad5223c3cb50f73139ca235ba9e8df88d173d7dfab46d8c94fbb67dc7065c51113f79876bb9d93c818d1788e7ab08adb6d09937eae0008e91ae33b8347017dd4f983ffd675b4b9d3e45ac56ef031dfd3d0514a3bfb455a5846693a11dbaeaee25c84e5fee878b47098a0aa3675c3136295854ee7f3cb8a76b08cdc32c76a9c67fc4603fc45e2bcc7cded6df628d6d953b86aafe462d4af903fc1eba9d1327192c15ce178750c7499b04df6225241bc88c4b12da9096258581884cf012121cb51f01b65a68ca7c2d8a481b148f93225fb6f4e6c99a7e402cc36321c8fecd176f824b5ba7cadbab88cef3f712f2cea1941900ea8c2c4243c6741db389c7633d0f6e28db8edf2cfc30ba44755afa5c349bf8513a8b93e501d062f524a0c9767b23745ebff8527f519ecb9dcc317394cb90ab9ead221a8c12f4741a7be38927bdbb9efb7a6c8c72e7765eeed1440f463f72ef672431aa8c45be3622225272ce621df9c95d1d84d0fe4f0a19d61110911761fefcfc8e7e2edef084bccede1fc4febfa8d87ffd48bcff4b1dde87c27bc7b342231c34ebdeab395670d43aaa120a553261bb95416065fefb7045df86f93376e99d785f4dab62de5aaa434683fd14e8195b204afe17880fb5ea8c00d94866352d5e1e1423a0368c2246f81cf279bce6f4190ef4739c4c537a8e157e4e0e21a785af7f0aa4a622e4fc1227f463289f9edfd157d9338efb0bbe01707fc99ee42eacadfcf74067dbed784238fe5ec8b1e6a50ecbc82a25af82bc24f6e30db6ce229e842c4335f22d4735ec0b67d154dee78997ec36ef63aacf12324b0cf8e44fa7f43996f03967cb15a767e276c05fb2c5999f32ba92efab90fb0b2081372281850bfa493c2efce5bed43a97dc09134171f31f1b24f33c13513d0b7141811d8dbcb641b8fcc8691607c340d5620e1f3f26ba08099193c3e807a96e9da00862a3643a240914b28a6d35ebe15d9c1520477cb714753d50cf236a917743efe26318806fb75f843e8b50a5c86e33d64942a729292e2f8e57c3a421137af7c652e1269c32fa5e2eb1695acbd3664a4692d2947ca0e2ceaca0dc85027804c46752285098b99ea0f1144d53725f0b814129c7aeb04f742616731af8ab5a5ea5208eaf0abdea422fed9c91f39cab16b5fcc66e5f7ca95b174a5d1febea7ac648e33ffff9aed9c8eb43b9c891d377f427f77e2842e55609fed820c99ee83d8ca6f4f7307b7c154dd9173acddf7f6607cea95875d8f473525476e1a79c3e0fd55751e9b294f6b88a7f4c72a9759cd09f85983a4e5ef8c19c7e0a9537410dbfcf925e3de0f198799f12d5e1542a9b8192fb84754df1f7078a5f7e3ed0326b367fde073e1638d2206b367fdc2b75cb38fd0997e92da72bf9c0e8069fe67e551e5b156c4bd5eabf2468e73e20f4bf446160c9ee85e079ca221ef23b7a2de5d2c1623dadc87ac5b9cca48f0be6cda4fbeaa8d93c4946b807bdf669e56e2aeb8ebc96fa14e9412b425764c2f4257a4203d89de817ee72864ce353d3f64e4e826633cd56fd53d396a278ccf5783ee81fba4b931d90876518fd86b2b283029b0f52a88071a5a22cae5404e951f51eaf98f4a718fd0d772d7bf2493ceef25845f9c124ee0a682426287d96e941d0a99fa500d3b054df84a35e7aa7a65d841f610e2b2992eab895e9cf8547e31a3476d2161efe319aeb9ed9d5a79d2c2f1abe91d5fd0014e26bf9f262c1a0e37547a7ac0cabb6a278cadeddad0aa348597cb9e265727e4fdf5a707cf7a2b2cce7769dd559ad714fba8293a2ccd6642ebbb306f205a61a5221eb43bf43263b6245d634bc474b2374f29b25a396bf2acdcc0d649811ce74d5594d6144980d2f03c5a7b5bfa8dfff8142bdcb8cb507add839fa01674d9117a3371b601de2b25d47a048954f4e92aca1248913fa42cef4cb300a79ddb95a674afa322ae6f8a52c41cf654daf22ce6e5942cfe4bb883b4fafe4eb6b7f453fe7cf3c38402049cbea5874fd4d9cd335b2d431f1fa610811b5be7cb7a6bff8bfd42df16bb12ad9096db13c270f37acbaa4ffc4d552482802dd57ddf5e7b0fa253c78b34969dec47a712497920da6855e4b504aa470597a45fc71219354b9c15b992629a077f2f5ad3f63d9f4d5dd564b783ca5e62b69412ccb314e9f6575e0d6a51fb357b4fea4afe42b2089a9c07e5f64d2efd194cdc2884debefe3288d652bef99ffb1ac8b504546d29a35644a89b7ec18fa92b8d017253ec4e103e449a3e1fd1e29811208def1def837c82c2d11e12f80ce7a11668faffe2b0761b2efba33f3de691c72dd29ec32abed160a6c51cb16514ac2998ed14a0b23674d8ddd2ace550f3d81ae23e9041487979944d0bb347f7f192629a7f72281d35f7cf1c0e81b7199eb7f794824f3123d75a7e4a7c4f062798dfce531629997492196514bd71f8fda3cc2768c3cd3a136e69122ee11b9c3da1aeb46b10ef27e84075b38388aa274cad73762e7bc4cb3f797fe2265f4f7fcbd2a90c8eaffbacbab90fb732f4ba391677997acd97e0679942dd70b1eae1677f44771af7e88c355473405ac2b3562c460a2f82c8e668bb0aeb3da476e5dc35ac458583abe6db808822b0bc72bfa4a341f7fa63f896bdcca9d85c29a4a9654e754f461f40e8db891f238e1db6df25471f52ef79bcecdc4f8dec976c15dacff16e9019c192dd6ba8b51bf373f4156fef445f4edcd67c468b3993ce123ac969b8972f7eb4fdf723fd9bf4bf8b68af36ad177aaa8384901d11f3c40c55d128a5e68dbc31002b4c50df26324cdc3324ef80b1a4113bedd4a9490f8d134de174403dd578abe71f4ea2b931aa9417e32d9482e4af2f6bf32645c186134c67834588bb846d1196d134e6dc3d399b461971f84414adbf024536010f69467e8999d326c2ed9c108b65bf63ff676cbffc7ced4a97e8d0a15e4f791ce5ac1bf756eb2d635d71b36331b2d5d0f5a8d8691c75130002fe757da370ae997b0e9fae0c5aa1022f0c8db4424d853d47ee2e6d83a431d1d8300a6fe2d512b3f7633255a88beb9850f790b2be61f5c51c76fc85f07ba9421e575c1ea3aa2a14e386e01f4c594eddcbcab23eef17c8562484f865e9644d5e97a710806072211092bf1ed560fa88d6bab1295488dd69445289a9c867211273420218d603d9efb7a688cc2cc19b1171686ded8b7781d4de9af429b631dbd8acee288b32fb040733584c3b7f4e78977aedcd297d5156a382fad7dc0c585c022b56c533e9b39eb34123c93a7f248a20391ff91216d702b8ea778797c712791f736f8260999b8ab1732acda33e89db2bd94cc87557d9e95357aaa052b54dc61e7d6687e9d0d4ff6027df53d8930c411c3481c39dc935d46ed292d16f2b92363cb49b14a99c70ef150f9bd9116e10e8a733d1b7fd115134317e10023758051658070aae1dab849f3f77ae972ce077cda0b07ad4893f31e655268520891a3562e5ecea4c9e9fa86277ec0e99fa2f9f5f221626e2a4945af2d2b583e86929baa74a32ccad972b5a8bb85138b45c9f196711e46b7e969dd6628a4ee3ffafad71dc621bd8aa5e11209899fa55be17215273c2549fe74151b24a5492a62d2de47ba4f5283ac699bcc2917bab1ab187ab0dd7ec7c88c36aeaf575a8b6aff6a9015e55cd7b914a0c377c34ae37512b05663db68cdd517f47af1998d7e675e251b54b0f1176bd984f2edbb0669dc360cb2a18defbfff7f3491fefb6f17b4d1d21bf95b23c4d02f569ee03516f1d44fe705ecf04b3a6eb4b456eb8ab71a9386d16afc276a9c1652fc55c96b0049484c0010f975263a40880d326bd16c35ad495ad03e7f30721619244266eca40df91affd25aff89aeaf99de6845ad86016fff6a18c46f36f530cf73fa9fa8d1f25b8d53c82a212b9c29e455e8faf535d7a8a6375a49ab61181aa5c8836a23ed5fffd23cedfa9ae795af699a2f7174d2903782ab614ab9b5f193d0bf59b0d3e976abcf680303fae8f1cd0743fb0a9d99016c76ff891a0699513d1ccd0afb7d24f0bc5931ec1b1979254f788d09a7583617bce88d963edd6e1bf1cd0780bc6c479f02070d89da768b1dd0a8f6756740678d5603ba7b7dcd890660a1dabffed568e9c1a801ef4ca3dab55c76c23a5e0fc517a802f9a2c2c21719f9d3ff445967b45512465c37b4af9a04f8f5f507710a171485f6af7f191ac0c06b88eecc5a8d4c1074bdfa4fb413e05cd2b3b4c65bdf4f4c4fc9262fd168cd8c3c04d0c2d80947b272c1d21979e1ebcb4c62b4cc4d19058208977b9adbe14cd7a56ab2f1c4de6ed9d357559fcd6f48428102256f8cd3cc270533e91bc51dc732d21338885aade8093b35b82a5097ca25520cf841aab364c2a01fe4bb94e5bdcc5e81dfaf439d353e246403526cf5bbace1018993e233ca7c455e198a732a595e70b39f6475e816e1588754770a5824096b991555d52e53c52a6206557d40654ab1b9b65d352e9750b90be06fa1dff663a027e406e62430c86bf1b7651b223a57a35174b08eb77c7c1f7ff9963e96fad616bdc24ed7f7ac9e3d7d7cdfbefcedbedd143ddbebd73a0a0e59335e90847e968ec3b89171718d94adfcc4e771929f2c5982179c46b42190abf8082c4bee323e22096dc4cb304dc33812df610456966478c94e300939441412115532b3c0d5628c61ee4f0a39cea7342cc322a591f92ed213045a5ad87d0bffb00bea8f7e0c749fb4e1a0cac0e265c717a442b940f50abd682590064754daa28b8c534d0df2ced7034384a29215a48695323f09e6f8015dd990395d0806c9ba5dc437fe02f924cef540623bf2c9d79f338b7d6101946ac1f96e90a0908dd2f6e99a0622c3dc38c558d833ba163788a70bbac87b3f438e3df566461188bab88ffc02f593d438a1a9e8db0a465350b47a609caed009a6ae56ba2a34cc17ad44ea503d46cde0ac4e35e005231f7301ce3a0a3fadd9ab3a83e6566b9d1bec61852d2e15ad2482a2afd3fc5d88545f083d8ce2869d55afd785e435cc747caadc7361f9f37352ca508ab93053429212341a418f195c7897d00df2154decbd137b873a44572f7e7bfbeaf217dae85876dfb2ed06f991ebe3c64d184d1ba4212dff1ba48146bcd95fec768334a49d48f1243e4c4a66dcb364cc2625f3dd59b2334433d3245e354883fb1f59a9146c7935b8ea98294e3f22e36b615228f493a3dcec3f8f2e226c26d9f4fabad93ce1a8fab84c847f68117b238bc3966dc1529911bc42b7cee275c4afaf29fa82af241a1e246c42f6b9882082ec34667e6310e8bac75a3a649b86c9f5f593f6a821600444d0ce20c98e94c7d992df95f12a5a88d06f69dea01b6336d1b951bcef32a88a61344863e967d045f5e03d100bacca5b364900a0efb65b97d2e8f420e459c9df4a058018804e9ad515f0c852bc2fc003b91226d14e04ac2b004ecbafdb6d42783ea039f361350236383006b1845a3a57e17b782025888ea3896e1b995396717b92b72bed191186e1e250d3b888b1e986275b7f6cd3e535b7b74645cfa03b6a75fbee26ca758a1a75bc1a2995439da41af24a2dc50cd456d1ebcaa20ad2a1f2f932c4ac28c82a555058601e706854eb49697fdb2efd55c90a219351e45e938c2ab8f6cca96a072e2ca984a676a9f8bec58cf15552f359c095799816bef1cba847674fdbdb2d7fd236b2b1448687be5b231a154600bac90c4f08c0233498c798ecbc50b7cc6e09a060619caf9bdcf044353a37a14854edfe413b8343d397a30b71539021974aadf19e0b18b536ecd01b63477e4e74b55ced06fafeffe8234fc06c0b6b67bbf4575b3169c6167bf2ddf7e2ace60649447658a35bc00786f22da0b3649c8c325c20f005a5259ce0f1090969b2dd7eff7fa0adbcf069000cbcba69f9613f5345e42a9f26a3b13d513c42a5949703519105f5c7ed0930fadb2d5a7a92790d4a0d24c3394bd04f149b10c5fd7dd26cce467cdc9e787c77ba6e3623d57d66be5d16cda67d92d3804011d2353db1c5329d559c6491153d3939104d8b6c68d86c9eccc894a6cde6c90a49fcb0d95c1b5f399d8eb8a76e4bc957e7d10f48a13db17c30c4d6bc36c4d692cc72aa6ed36c4e47a5d00abee1e94b5ac4cf9a1b64334a464b05837bf98bb7141801f1f90aa90de8478334d279380322268d13fc83ca480dd25847e2cb642f440ca7018789914b16ead942e9ad2c92af4566c0225c35bc0674b0912dda55bcda56339ece0e1f14955b1314410331530e3f26b920d5b15871240bb02d81151805de1823f3578ebe1a64aa94437f7da21c1e448fd9d079f0fc424f029deeb71a8d533d49c6c964bb157fe978923b58831c9ef0f707f401349624e359acc7e4dec0f2133a16b91a6203260d913bde4d2a076459b53c83a4b26aeb9cc169ec41677018991729b96c37e10b26abb44cf568c70c0a71a454aea48aea55aa53e65192308b2439955a640a5a6b550e3f610cab00239ce97b1dac0191715a0cd6b4ab433c69230fa7b3122d686425fe4d8b70b5d52ee122dd9f9deab4648b99f032ac2369119550fea44d021a1581c3da24de1367a81e9f2077e1efb9b8048c69344ee05c88850aa18c35135bd05f11694650791e6bd1f0f42661fec7d33c551e2edc2c7fc253c8e342e794b542a3fa51966318a19370333432f3abaf78a5e231c2a2a9c7773bbd4d02529d69ec2de4233e8d2d164d494a7d33240b9a8c7c2f346db2a6fb6b8ccce93ac3f233da262be85f4af6179a90eb44dbed49d26c06140e8215a5692677f82190369da5fd8167c1868e27a7cc03c09fa6a6d96cce9eac4e8b8998c2442c291b2f5a944f4e5bade993b99c873bba1e4f27e49edee50e3ac82dbdc3692037f45e5f62af6e297d662ce9cd69264538b911814f297d670471c4c368cd3426e08dbe3ec7b3566b4297f99922f428f215e973fa43584e128ee8f6c99bdf42b1392a3504f17219d651e4f24453b173357e64a5aa887d295594cd7b16c35b1ad954527ff34b6d48879cf9ae92d1c09fd24ab9b2f6f8d7691c318f11fceab151ec55b28fcbd5b55a935da5f7ab851f1d70844724a55c8a9ab1494eb343621ea2485b8963de468e3b1f634cf8285051044d3c4e935cc70e6867e56bee36af5484115ee9720d8aacc748a73561ddb340a7a765aeae4a5109ed1805b9a25b5f5ed0d70f4723bd0c6b6925beb79c4a843810489761758df1f8a7b797bfd0d91e5abe9cd524d62ceb1f82bd63741f1b541a1502ae521290f1e40daf92de6ff821861985563bdd3845bdb25711d1839a9cafa25d1ef800dd441ac22b979e58ec0bdea2d2c0d8194ac830f585447ab76d9048b70703439a28560e95c63a655aca9330e00dc5d1bc22684ca8d0e6b352c6df6403bb9c8d64ea6d29b5de17f3f53542e4fa7abbad2d053c366a8c44d654e7a4e137f6e35a6ac9ee6f765fe52f320643a803379b455498f21789b5e3a4ce07751e3aa876b46586a6da60c99899529aa79f64cfc5ea1965bdf3f216cbe15502659cc163c799e89521d6fad90610feff37be245f019288d17b1d3528a12a5d39e1e23a9705bc714269809e9e5553fd42474f2c363db67c03a3e51c5d5fe137ad2fc591cd810da284952de96514bb817282335a8a0a1bd43abac8c72482cc4282a2e7ffee6ec5d08c426fbc5daf58a2b12fab84e1c58fb65ca75c63219fb344bb61e2f23e4e343f7759d400f2389f936c2cc213a78e4e810a1ee9ab32b9de5779b892cf49c8fd9b05f34eda2488a35978bb4ee43bf03ebcd9940e908e813f7810fc0f20072934fffafcf2ddbbcbd75ee326e63c5e368878bfbe78f1f25d96682e1830ccf2cb6faf7e3c2f3e25e246406417f9e0f93aab1692ccac6efcf2eef28d4ce6c095cbea643df89617c6c4bcb4f886c5c5072c8fefd993ec368f57b2cf90265b8044d1caeeff42ee7f097292e9d7edae6d20cf15e98961f9045054bf6764909dd641768d9ed40f43febef81ed47dbf2dbedf1cd83132fa691da2d1c34368e96b8e80bcf164a7108128086d362b0262155fedaa48ad12a6895b733fbdfc1c657ef6844f14716f2782350944702aae9af7c6a4fb59a785a76fb5b932fd6dab4e9f33da3f7a929c46ad561e2829c05e29fe9fa38921eb5728b7528f336a2b101d9791440bc1cace38e0d85cde8a97fa9be174e1d82853e556e3af1adbad2a734fac45187da411c93431b50ab8b31a73764a3d6dd94e3a2355f1791635705441ec86a7474a3615cbc39112193b117f87ef743c5ad4a03525e22e619fd62ccd54119e50bb38cbd6aad918daa3a95781dc627866a1402e2f3357e56fa83a58685cc821083bad7c8d71d24819973aca0df29545eb259307902d3940755a64b511a9a363d88861282694da1d6ceff6d1ede5e3176d1eaf96c77845fdc81a6b88b312c1637d5ab3e4ce404d4760922c61cd1aceee74966be2a5e23bb3a0173e54f78bbf643b5d04ed10911fab3ab819193ce2405505563cd38d1da93388ab87302c857bd4edde91cd0149c37d7d3803d998b123b5f77fa8969569bd6e7411f365a5af0c697870204682f4448fb17176a4c67d511c4eb1ee48dc6b89fe19d9c1b9d2b94162ba52f4d8167a62349b0b3d364695d128cdeadc1825d9fe41bf9962785e5c93b833bc6a4daa5e72a52e5498d8af4d498691565587a5a7756998bcd00b9ff18066e205b33efb49a4433f52bdf167bcd6fc846980cec2e8561340d4e248f335ce926518f91cd201a511edf33c0ce6dae770b1d0e6fe866951acb1d90c8878121906891458aa40ac824f4128f9b0584d6c2cad000653c67c189a252bcb47574d786de53b72afaeeb1cb931a88565422f590b2d6e32987a5b5b76df57f67194afc8042d3b602c0c5624c90e0558ce4b59c8d8a927c25ed8856260f254639502593fcbb02ad80fc97ac86c5a986a51ccb570b91256fb6cdac00a195ae16f08433fd2744ab2312e8950cb5a73466f51b7a7386b6e2b3b3583fc5cc7e0b680826b6eb7bee6e8cd5350dd760ba7c917ce22e08ce053f182df4a38d0abe04482e8d49368b5705e5cceb5ddea95145a44f42ca203621d23f9579c04e89336bfc4afc1a59759ad3fe4d91b88ef3e86d11438ef0830b751d62b504f6af82ee4603b63dc9e08e33a0fede6767a2da145c70dec6183344a636a90460ed5066914606c600c623c182744b8a397a7dd4776872123a227494eaeb55ad99d5f328ef09e8de75a7481f1a46decadb170b160b7fe220f4aee698d56a0c4a9443dcc6223fe03be28ccf9a24817b4bfde3690ee1f1824fc563a0f116f99d2e3e192c56bfe6a9ad2f1842456b0607ef24e24a6955b2e35771609b15dcc93b02954339db22779d043968139a27ccc26a79fc3681a7f2eb5a747c6aed2a3dd8ee4d44498fe124fd98b6863e88d55124fd75270b0dda29fb470ea73a463525df8494e8d82804d2c19c89157f47ee28845fc7db858fcc602166e440525b83ea2fdeca640e90260af836dfd1e2de375b47f2b5102be5ea921655c7eaa3d2f253c8b5cba1ad25408af8bd993c13e6b56dc817929f7a534d612b476b08b03ebcd3a6167d9902b2215e0e632b171756364dd457722a37a12155d530a7234222a91ba27f75165423b19d93422ecd1ec76db812db717ad3d658b59b359fc5ad2d09c4a2c2352494c13cbdf6e83ed36f30aa23794e96818ba71ca2d1f3d3a3c5ee087b6390189492882040a1e968de38988c2eb4bdc2a62052eca6775a42f8c9d8fd1b6475c4f0def4d122fc3140eb4345e6c50a599cf99d0beaf95f06ab53a3c2452d42a14fa59565fa0f580c4b9b3eb5cc1458dba262239eb210ed127296944c8dfa802e7742f0f6268cce4eb822841f58a7f26e9abe05d17f1ae8596eea1c0c33efdea4fa7deb8f1da6e5bc3a1d6b386c3b9e96c4c27689b56b76b5a9dae69c37fa9696bf8a2d91b676e3a017cd6da456a6a75ba9a0dffcd9d8d13b435abdbcd9352dbc467d3de98cedc09b0ac9627a6453bf74bd335fb81d9b13a8ed636079a6b7507e6401ba4f0a0c9ff4cf1628a0713ffbb5fb635bb1398aee5da5adbec998ed51b9a3db3978a07ad07ff3478d1e0c5b17a039176df9890863f9d9a41bc582f2321e842a074b5f6b97d06bd6c6b6d4dfcb53776a732bcb9dda90ee9caae42f07e697635bb73ee5c39f3c1c676ee971dad3d37dd2b67eec2ebeb8e369cdb1bfb20e8ae8673fb08e4cefb57bd63b3669f778e4c5a150642ae074018fcb36ecd4dfba17e0d8ef56bd93787ffbd39789d4f01c27c39d4dae7bd6c42321024f1e74c440a00e869b67d14021bd33e3e33c3abc17108f48e426068daf67f7319da0206bdb9ed6c60db98438488ed6cdc120c78bcfa5fd906a2fd8de98a26976db393756070ffbaa7f58fafb7fe43c0eefc036067e3e7b1e9273c9cf98144051dad63b561356fccbd3195ea9f9bf631e4f8cd0b4983c67a6500ba9a33ef1d03c2b12edc2f075aef688ef9e0e14ec0a4fdc33a1458cfd01004216db56dad7fd53db77b9bbe80545e817d3eb4daedeec674ace1f06c600dfb1d6d60b9aea3f5ad5ea7a3f5b5ae351cf6b4feb9d5b6ef61dd3ae77dab63f72eba56bfddb39ca10fdf310face4b669f56dd372ea108c3bb7a1b22b37b0dab69cee8e699bd6708878c41a0efbdaf0fce841685bddc1f0c27235bb036ddb56bbed6ae2179bd76c38e5e067e15acea06fba9633dcd856775859229ad5ed0ca173c3e110a0817fed8dd979665b6da8a1edc81a050086005b3f4c560b3f62b87c7b9a6d759fd9566738d0c4afec816b753a56a77331b486b6e65ac3bee6608beea26b0d5d48e95eb8d660a0d9ed737b61e227cdd11ccd95c7b935182c5cabdd35e1e7c27635bbbb704c1be6a86ff645ad5d170e6a37b09cbe69397d80a4d5eb2240adb63c7f17e16d64062ce2721d74b463e7d5fef252977fe7feb5adb935f8e8f17b0406d27e607a8f1332b6f9c02e3bda3d2417bac7fa7f0c8fcd3b0a503fac531eceee325c6e3bd670f0cf7a66774cbbfdcde08505dceda930ee680f2091073ad236dd7f56fe214478bc7c01e282647435fba13e1d5d36ff78e1b635f7f8e67860dd77b4e3591e80c96b5bb39df9dfef7f01d38204cd17adfb0fb6e37f71d1dae7fdbf8b9a70cdcdcda3a8ed7f75cde7f0055e572573ed364c9cbb47c1f5abd4cedcdc9f864d9516bc5fc2e1fb4fd6915bdf9d3dceb466516caae76765d4f33809efe388fb0bf5c0b1bb5abf965ba91d30f05bee63faf21086db035dcda08773678f6caccd768c32ae00214759436d78deddefb75b6d6f6fba36e61e0060fbb71fe614d2a30c0290b78fead1700f02fb1d2a0f5ac129b636acd9c67f73d8cb8e39ac5923df366eb3a3393514c77f63dcc759b9c76fca9ed679cc7eab599bddfdf1f651fef1302e79546de5f16e58c2c3a0b2bf61590df701ffb68f70e8e3a6aee9cefe8ad83835c4d77ebe6f66f56a56d6f9f0aabfbf04ebe7db8fa298e3e592986aabeb688ed5ef07960b4c8ed51998561f7e6dcbee9ed93dcdea03b56e397da8bb63b903ad1d60136dd31a742d5be4b43a8385695b6e47c31fc772f19f6db92e2477ef5ff7ad8e66b7ade1a26739b6893f8ee5c2bf8bae656b03abb790a5ee81919612989ee576168ee9fc5dd142d7eaf516a6a3395776078f0b7781d240db7286a6237ffa17f001a1b35a2dc220078f6b01baef079633c023deb41c077ebb293c99f8685addb9093802f29856577cb0ba29e685ff90c9ac231b367655065a3784bdc34c48479c73e7aa2bc521d0cf21ac806a3fdff6adfe401b687dabab0d044571b89bcbb6e6ccbb0f0fb67bb4963214d30c8cb63d771eaeda79a083666d07df0ec428076294c7fb0748bdeeb8ddd8edbdc9683f064341e1f6b973d59f0f36fdfb65d7b43b7507933317425d201f3635f2ed3a412402ce05d4f610e0dc87e6a4e12785c85261453a9abb2f73306d9479f4ed0bdcb3dde171e96cbf0ab8fe31f2b96b75ecc500b61efc04963d342d7b00e8a7e3c26fdfdeefaf7224bb5a0d703b5677b83065a5f503ca842803cbd520e371d6786f04fb10507a398d3f4759ef068169b962220084967b31d46cdbeac97d6c5a1d0580f264b47a17aed5d706967b06533eb06ccd856e6aa23ad9c99cd5702ddbea5aaed55f20f7ef588ed58157cb4da101dbea9b96bbe89af0cdb41c042d4216bad5cb7ba00c40614db32b9ef38ed5b12ffa565f73adfe0188e2cfc2ec6a5dc800581b7fdb8ae46a213fd608b5b0f40534a30da0c17ab2a2075db5dae5fe2aeba163f5b5bee50c1766d7ecfad6b0d7857faae82e6b59edbdd5b73558e40bd772869a8be23d6bb84f9e294b62886b2ccf7f545287b0b707b8b09d21ae6cf8d38711d9b03d1d1327441952ae3d2da7013a0807d405ec17c0587bc8283dce53547765aa9e8a720b6a720b0e2c7b88dbcfeadb75fb470340dae5ad596876e784d3716993d51d5e205100c30a4c681240e45a1dd7c4966b41da87ff2f6c47834e5fed21e9f441fa163bbb5ee570d57a968b8be50cce0b1b690f57b3b5810610cd762dae6a40aab0855cab833d0440f4ac5cdeea4a9c2c36dc455feb589d2b4196f480dac9fb87ddeb589d05ec6ad7724b7bd6eac949cde4dfae097de8565748aab0a4924ec7a5ef2ecc8e38d9f1ff8e2887bfbd4388e3c276ac9ed63f77adce42526175b8a2c056159cb63085e4b5049d34474bf0f1f143bc70ad8e369c0f2d67614a12b01ef09d7ac02f60f895dea787609811fd02828e66b7ebf0b563f5ae246c34e79be60b270356965c576d6da0b5d30720f7d0ba72adce26038f29c1b337d9d9bedb3f25aad3911e87ddfe29e1a79c2561fa5122dc6e074e347bb0c05b8fb67331b406da60d1b1fa5dd3b5ecbe29d38528dfee0312b73a3dfc3310573cca2e352d47807168b507a6d5ed40cd665eb5d6b36cf72843d6b56cf7c201c4038d6351ab6d3fb386bd21fc9398c4d1f6712482a90b88a8d7810e0e9cacf445cf72b4c1c2843161b5988ce4691f472887038584f84fbd887144cd43d36a0fac6ec794b082f1f4b5a135e85fd9dd2377e5d6a0bfe8c09b630d7b392cedae65033f05dd05200d6baece5c98d8a169f53aa680b6bcb05ef378e9f330304550cf545edad7aa4208f20f1807f8d6d31c13607375a4c37b93735c7a60f53bcffad6b0abe14f462c0c82b6860a1d8a0ec73129c34073fcae35d4e01f9e1400adae35b017b6d5e9036dd17fd6b706435713bfb215e45e0f4bb61d38777b401800357184eab9b0db5a0f290264256b4f4d85ea7434471cb303410bc0b1e60c53ab0bc8c396378cf7afed9e966b01b47b40f7000d010f3d6868d0d7e0e71990383d4dfc8ab1032673ac4ef7ca3e7af1bcc7321f93e4cccddaa9823ec2aabaf1a7b74c1eaa6e4f83e31d0ef5ae695bb66b754dc76a038d056cfea07f61c3316f75dd002a75acc1c0ec588066bb66d7ea01f6724ddbea620158774378ead8f8d1ea3a307884ad13583ddb1af4e0110eef7e074f7068c2445c8d1c7da7ab756097da96eb683dab37c0c15948a076e067a83956df81ec9a6d757bd07f6806d23a96ddd31cabebc226b261773b166c0ebb879f4c07d19fe50c647b7dbc9ec4fa4c519f0d0f5decb1d9b1dc0176c3ec593d7110ddf891198449b0607217b6cf70c9036ce5c3631499dc9244369bb554ceb4691777ff9a9ceeb4b823cf3af2d1f483205e47d9150a000210dbc2b47a8e69017eb05ca0fc80681d0e000c5d5c8778bbbe8033c2eaf77dabe3c2ba1e64c47567685a5d2006075dab0d9ba307dbc6b1ec0e54620de0d872443d56171748573e74865adbec583d986bbb6f76ad21ccd2005944d36a43c19e0975e2ce81bf7d81b0dc8ed5b3330954475ec8b8b08ada2ee4b12d070a762d17cbc1e1d71ec257946bc112e9db88e86187b95ac7723b0b40f69a2dd6757b881576b188351045e7567710080c67c17a70b1a7fde142f4b41f584344698e866c94ddb3a03e1b4e07c7725cd3725c4c06ba01fbd60fa0a14edfea74adfed01a0cadfe5034d245a200a0d7b5a115681e3b08dba613e074f570b8b8eca19fae98af0574cd1e06402cc0c061adf4f1cfd0bdea5b9d00c1d8e90b8902cc0dd435ecdc037904ec674f2cb03e3262ddb736c0b70b18a79bda303068b5fb1629ca01240fee5ff7e008ec584338303b36d017431b602216124ca16323f502701a0c2c17771100074eb01e9c7c7d171f3a561b451f508bd51dc044b97d314ccbb1a18a3eec60ac192b8635d571a504a303e4126c2981b092209e22ca6a6b7667ee5c39e76dd4f0ea69edb97de59cf7f0cd916f4201cfec6a6dcc2a14f0ecaee66c6c0732cc337dbdec2d2fedc0ab23d5c56e167ef4d11bc3865bc4c1473635572c49632130185aae20378780181d8907112a5d81fef17811448024ac6c58c148b275802eef03d9650dfad6104f3dc17e8b02aef8d3b1da4017b838d14e0f2b7087489cb57b82fbea0149d873f3622e922e58cc3983630b4e51ad670d3b5acf6a77c413ea50b90e76b7e760ed43c01a50af2b8811a4e86cf1b7d7153bb56fe1de1f585dd8c6b04cb1f790d88675db157db66179f4452f8738d4b6104f231a87dd830ffdcec66af7043b09adb83d2cd2b17a031c8a6b031d3cc4cd07c3750696e34242d706aa0f1b82b1025de7c26c20f004b5267e3756db0e509836b4bab881ad21ecff4e0ff3f690648475ddb6c5d83b5607abec8b65a9490ac1112a2ef254742d77002751f7ccc43c5dab8b475c4f137fe636507f29205c21f703d0c138dd3e2e0e4788de3b0ed664424df7af6ddb1af6b5f6d910c8d6369cda08a2a178eaa4b635d05049cdd53a6f6dc0f58e0d4d76529811605df0d0ba7f0d9433ce2f8ed60424dcb64d4783cdd7d6e004b711d938963300b6a42fb66c20661f30db4050a1ce00a5374059b56dcdc1fea3fc05160a4a7660250f1650858955a03010a6a9d7b19c8126a642c00cce6d4157889d152f845eb20d8c30b231c0c1000705986a635a1d21b045dad84136cddd98967d8638ccb56ccd6e03f580926347e8be2a5c542612ce18cf79378013bead2161a075cc0e2e6894c33ad8a66bbaf7af7b5a770e748a3c7bb3a3576aa7f5aeba7078f7ce7b57c3b97b289b185e8c1c97537fd971d5ae91fadc2f6d41b96dfa0bd381ff34e7aa7ddeddd8bd7d95831a91b36c76e9271f25641dd468c4cb205b601460fe50970c0e32a441e0ad40375dab6d9f772c383a001b99d640ac596be06c6c60a802640b2ca70b476ab76f39c0680b9aa21300bd0148650007059253aed6c6ef5af61d3e4331dbeac229d0b9b206ee990d8b7380a2d68eec24745d8ce88bd4d16d1f573a7940c5d61a2241d7df20676abb70baf7dc33dbb5fa03cbe9a19e1cc2c5d5c4dca07abaf808a7add5732fe038eb5a3d5b329ace19ecc52ed0b16dad0b836c6bbdfdabd29a6b219447e35100bbad278e07b77fff7aa83973d7729d856d399a7b3ebc72ee5fbb566fa039e7fd8d7bee589d017c32957bb6fedc7636489dde24219b057ecae445b06b0d0773d3ad51f6afbde3a8bb57e9ccdd8d69cf9d8d3def650feec6dc53c01547ed39e6e96c6cd8247db433b061f99e4325e7ed7d0e661f341bb3035d1653bf0e258ee8ca93560ab57b0b492ad981e502b1d61192d99e0b7f805a041ec50182d085c3c7019a2a7f4a91d4700519d57700df7650b6d107c6a1eb026b8884e805540794d00209953e22c021ca6d9084ec0ab171173e675f51f4827811fe766c941f55b2633a3c05589d40c5d82264874a446e1373cb6ed6e545ea70005c920ba744af1f5803d87c1a52ebf8171561ad816de2171b894aad0dbb15b532037f11ac17183841c881ebf0521d02dbbf5dabb902ebc10aeda045c8c6118a4d1d5475c95f7ae205506abf94afafe6eb2bf9e6a6839ff04611df7a6a85ce7c2094dc037fc1a2a99f4855900c59c32191f7b657bed091e746e9d8b85fbaa6200f83b6728c694e6a02610c48faca06daf3d8673b288b73e5dd712e149ddb45f73ac5bd710fcea6c2acc1152af56ea151df132f1dad033b4ff9d4533e210628becd4d577e7cdd79082a6f5d38dbdc7da0207c972cf1334c3307527d7861b791497286cfac61b707ff32b9435b13185ade73ba403f0839ca0510745a9dcadbfedda4039ca90d47bfe5c0eaeef535d8a09d8ee6a42ea281fe00df4de7dcded3adddb71bb87f0d2bcfbeea0262bb5f76b55e603a42a489dcf110a8aa543c20c92029b28e263e8b345c89c0024039471324570a2b41fc2717855c0fa610eb057ec2b872f908bb18e91d20becafa09bed51976e15fc6a2bb7d6b80ba101a32801640c3b2fb906ef753aca1ddc773dbee433613b20d90068743c7114c84abf4a3d015c34a4d3cb8e1784636c2752d1b85dfae0507878ddc82ddc76e62b32912fb03f1b2c07c954e6bd600daec6fcc7ecd20959e9414b8509e064434728c0349a0a29cdeb5bacf2a4da01c6b530517b48cbd8222812558111b3966599dd27a76d584e2ba2142b36d8b7a162642f26c006bb80b0cef007069571b6878a33f9087388ab1716ef63a82f336dfef205258723ad86261f2f8b354691a004bd0b3fab075047d26d86e9ccd5ec14e62bab8cb40beaf2b848f821173f1b733a80aef15e1226c347b002c968b3c5547f05fa25a51ab980747a475650f705d084983ed0ac9361c5103543cb21cdbb786c32efccbaf041dd8f7ee059cb59aedcead616761757b9a63391d5f48f545be217619e860d491e90335d93febe0de77810b1ac2ee772d58776f0113a04c08581acb0dd05441436a009f064207033807d540c416273212ff43dcf903a410c413f0a200f481d5b3913beb69ae8542118029b2fa48c1c2318d17422e7e713a42cc84c263bc977570acd610e8bc8ee620d3dec176acce00c542b68b27bae576e1c37000938509f8a18b226a54c81a9a1d4b2c81aed5eddf3788b81615d74afbd4074c18d0c882dd338518b6e3002704b042652f67089c24806300a8df1d623dc8dfc20ac061d829beb8a25778a5212d42e06885a78104960d9dbc7f0d4745df729096e80b01550778041bc50326c04082116581c31e8a153aa9895042390a803230a5cc17a9bd1eccbb8382270d862f8088a495e5ca9ed9ae80ab23d876b947e01b1e5a733fba65a9d8590ed04c7d7be16aeec3e2fd856b1eba2490570a2ed08f35da87aa08fff1970ef77857073bc4b4018a0317bf7661a1db78f5dd7d0b1b40d8fda0c8c10d3017bc9bf809e5d8809b4499ecdffd6b5b2b14b1d4415eb848251fbfa80722bc07c0eb58fd6fd13e5898aee99e75c4d9af7544fb1d71bfaa90030bd3d5dc6735ca045a57ce60c2a514b07aab55a39735b43a17b0ef379dfb650ff6ccfee5dd7ea98dd9453b28d395e072b5fee20041b2af4d6f0d001b3a3dc40edd0172249ae04b00e998683a051c9303e4eb51830720a90628baebc391d3e96a5dcbb63756db3eeb5aae0da71026f534388760a65d1bf173a763d9f655d7b2e1d04619d899e5c00245a0f7ad9e2d2fedca579f36320bae40f7b03d4563175dad0f9cd0007a3ab086c042db018ade6021c0fae9e0fd66dd9242bbca8e7dec0a725f49524c34cf18ff9cb6ca48ea5a6ab13a9e8d7344270515736cb7463367038df51726122c03f7bc87f6b9ed3a85e0bde580aa6c780d093f0106d81a0864040755f5d6f76a5fcfbb56aad308e66c93c49179e3071f3ffbc91469833e2a5fa112146a36d569e31d530fece11de87163da2a4c4b37dd1d4503eb5b30c185e87969642a21dcade7135047546a7199ee0377b6a836f12052ef0803cbea1a71b46ea973b338c9a16eb76b741136cea37b0694cf50032ec54531d7b72a530db521a2e8c31e186ad81c753039a9ff0fd70f2ac39cc1bed7fa56a7af0192e83b400f43cf8019b061fe10f4301d4715096b5684c208b46147093dc18e59539102dd81806ef7ef415768d4d4e9fe69926981e5d8456dfb5cd935eb70c63be0fe1f66bd3d1b00f58760129c83e417ca67de61f8fc7fecbd4b6f1bc9962dfc5702677c632376bc636868c2813c2a80b36fc0a25995ee93b40cd1e6e9e6afffb0d78e4c52648a925c75ba1b1717b6f86632339efbb1f65afdb2a48d7f71ba613545cefa9cb2ce3d639d7bc23a5fe4ab734f57e71bda8d0e35299d74a35c706e944eb9512e1837f447ed35cc964d599ee00d13fc16a67db92085f7c336de6dd72d2d016ccae997d3fb1fe62969afb5da1954caa6a0d4fdb152314977978f4dd760c4fc9aa66bd4e91a17a76b5802965f4fd7b6e2bbd568ff0b9aef82e44426e57291fef5ea5116a2e31746998cc0c722eb8bfbf8fa126cf8c8fa029bf97f4343f6b56d6e455dd5e2bcaa45d9d1962cf9bbab5ac1aa06d8d3ab5c20b2ecc9d11056fcb0bff13fd376dbaf2faab49c983432cc7206c8454ecc868385471fd14a1e11097f26aec0daeca9c507f624db49c9c06d46599ad8c12fbf5776baf500d718f8e8c1245b7a1ad5790d14b808ef0498848867bee22efad3de325ba0bdb2782cef3bcf389d66e867e9ffad2769ce0d9ab441d1f2e36ef3ad9b91286a43815c930eaa469fc93db7f2c8de704632cd5375e5513c69a07401db70f1f43919f71828c9a8115715612c799c49dc2d76a338d481d2233ba3af060d656ec7afdf7f7fda3cf704b7b9717006f2fea151ad14c5528808be24e37e133f8ba23a7c4b45e8471ed2ba03552c1ffd2aadfd02edd34271da3b4b4ab7e3d3cf2f53407a8b8891b3005a21eecb9fe4d227502efc1f4692df4b6f53089f02251082f0b992c4517a7048df219a550c23426c38ae18b128ee69790da81fe6c8bb55920b9c130c88f169f365da0e31b216ad08166bfc3e2313ea1912ea3498c2a7979527d2b94b5be9b9eee4af59160cee90f256eba677b56ea584d45364aa5116244c3c40d3ca03308daee741b3692699b62507379f831c931b39ffd0c3d962c4570a598d789dfed3d4b7e1a0eb8091ab7746b17c858aed315f3f1fd7ea816d0f1e5620e614f7059caff114cba7402dcb3890db333875eb9080591e023fbfcf03a04e2e81ee4465de898aa9a6fcc24ec40e5bd1eb618aa38577ff57f622f6c8ad7cb4d73701c982709932702885c1184a16802a00013bbe1287aec888b12ca09a0df70862cae21d8cde6a602d6205d2519da2fcaf582c658132f23d746b46b706afc1a1f2c009804b87a52a9b8628e46b1d3861f7389d5db9d723aaa64754e1cb8db647abffddc6962cf8cbb0f14b0b7a36a09d1ad0ee970c680f7fd7c43bb6fc691f111dd4bc4d2d886bb74c9547db4b5f9c06b85d54041bb22fd7313d4c3f45582704d72b8fdeb253d62b97b19db2e200e5eb4b9183a72f3b0bfce33f2ef2bdb761bb25d648d068dce24f96b6ac77d6f5dea26996d0287381dc4d37f0858b889034e0704d56112f9b7195bb431f1b931dbe3456f962fd402164eb2547be9df688b8d7e585872fd3062c83bc4dd5414be77b1e36971b8f6ff3de73b03af6ac3ed5f9f6679f6edc000f192c5345f2961585e88b1658464055e3c8b2a003a5a8202ec65d553b8bc3885bdc6ca8ba207ff3fc00ca0b5f3613ce3168ae3697295526465b5c5369d259b163c1abfe9793cb9788b30cc4d991a966c5dcc8f82e4901894cb1e0d7e46f0bc0a24c9866f18a6bc63d7207bfc888c2740a625bc80474b2826323431d17d04359363164dc5c5bc9192e9d4906f02dcaa7abfc1bd09ea8ea29e48b2c39a85370f1aa25786acf0a7899b465cfeb7150409cbca5707734e4654f04e9ea5c34fb076caa36cacdb9e4ada2874951b4d2aa478b8fc2906640341592090cf9dc0a84edab69a16dc3cf03f5efda561b0e6d8b6e76eddcec58b0424203c9a5a3637a9b2c9d48de506559bc6662be2a8b6a3bed6d216f22e5b3bb313b4987b3f161cec687160ae0b5be3c8de3e6fb616737e3d8039bc86962597d4704f86e5aaf9af8a1a0f3698fa79e5255cba4cd964933d5b45f88fc31ff72e86f3c1b509df976f35f4f3fcf9c5b7f23afc5e70884d23a0cfec8eeb40fc6add2fcac18b7aaeb30647986f5690f5a7a6531583c8f1b1ca53f2eefa91a17af48e8f88542f4a59345a5fe030044b2de63820181032881513f0ffff4a93877513e04be6253c1edfb90f5fb59bf8f7cca6f59bf50f0fda6df6ff87ed5ef97f9fb1769ddcb1ced6fecf418b2a89b74d0acaf99b2beecf53878b7f6c6fcbe79fe7ad08043a1869a830fb1151d2d2feda24176fa85bdfa66882ce03817a84fd889dbfaf71dcfe1f48ed60f1108c0bff76caf8e6ed9d9bff3f853c71d0e53bc02967f04e206851395025c97ace4069cb07127d61a1f4fd91f2c15d9cb93166f64381af2714c946cf456ad0887e2267dfba1900fe4314c5b2f73a652c8271c57ec57fc28603f011516596ee3e93326407cccb259d4215095254a5e9a2ee8797738ec26d86e0b3203c2ff85a0ebd4737e7f6f2ae2ee5ed4c44a6df8eda2adfded8fafcffbee0e6b74fbc31c1aef2a6e7daba076b4511121e1713a93d33e91f726002a20233a9043699c2b84baee2076d1396e7ab8ac623e0759b75aa2ad5540c578f1fcf2d857ca4fb2d6c98adada5cbee818cf6f0b920fe740efd669761f066d565bd463b2716f97debc87a77102d373bad8a4a6693c6d2de7c2cdf3b89b2a37e70df5a28253c6515af9631dd8af93ec9df90cc8d1669756bfe89bd7cd7d3064ddf531627731d476f3ed262ac5269a7cda2713cf4c6c0b85a7ab76a764b5b7d88fe7cde1479ffcb2a1c60110aeadcebc58503c8ac52a6930fc91a3ac04f117dd8e4776d4a2f15ab1e281c7a39aad5ebc98f729afa92e381dabd2c17cd7963ece3661256e5943286a033288bf97dd8df0babb6110a854404d4cd4ac7407535cbdacb2b9e769c4b8957538160a5e56e8a471b947ada1f6bfe8666891ba780e9e7ca49a75bd0a9152d67678af9b21e79710a36fd9aab3222daf17ff510fc3f2163b5a0c32b8a829fe31f666b8fef975212fbe4595bf4bdfa2ca5e256d730fd07dacf3b87d1a2712a8553da621adc19c9f56f51887b40ea7bdb7e1df40d20f567cf6a7cfc5845538b21be2bafb35cfbb2f5f7fd8ed8c3c89d41a02a883e5a500cac07981bb5e7e2a99f704528e360f96f35196024a2fe8da3a1dd961e630bbe2923ba3b90f08462685758b05e906be7f187ef330d245cf4f6a28b5bf887aaa9df9e15d589dac6892f08b589d6afe0248aacd9098edf3d3bfbe6931611ec54f09561c61f181bd659357e1d1cbfa9d65935650336ebd9900d500cf8179faee07f61c8dbb7f0880b6d91dfd2a1cb59261fbf3f75d1f9edca25a870a57314cd5819c218aa1e922f91a36e703526bdeb831516ed2c63ea5d39e4a429b9e3fe452a6108e99ea1920ce1687abb93e82074abe13d7957c2963a618510beb0b9414a8d66adc23dc2ef9c0b1500c65b420d2b76280e64fe79f434228fa75a454afcee25c32f1f3f79ddd7c9966a5f1c3e5093ba3f5421727eb8d5bcb46b879d19803af2f5ff1c61df9f4b911874c396d02390770f55480a0ed2573c86fc97125972ab950893991837de43fd6f2946571578e4bf108d23112bfb3993d71055b412e9f3c35ecc172db674030754b25578d65a07aa3196fa9e478faccd29c6225a6bfbd5b9e77fba7e36e828d852c1e7c0be197da65a10b983caa3f7c0d68b57c4c14fd7b1aec913d7144b951fa77b400f2cc43bc1e88f1e598eb0df57cdc7db1cf9b6f7fee2c00d56712f655201647a8b21645b05672383649593b8241a93ebc44b126c5cc4a0fd2d6a0cc2a54b369148a91410c189c587800968fa82dabb688b994c9052d6ae9e411629eb3f810b158b04235626ffc43a2a089924021825e519a0d4c4c8f5ed9196f32d9870fa610ae48b4b73f7f4cb478075d8fbdd827feb112a87b5c193bdd4100f0df9ff648a0ce0e6cf56ae288e19e1f1544b2b5941b924f32d58d1fe1622672de7a2a72793e7ebac557c85c4282b7e7624d907f87731414a66dd6c07e6db6d31594c70a12b3041e34a483b17b5584837d4389b666323b890a0e0fed0fc882fcc6d970c4cbe2a71f2c0ccc60e55df18483b9b0416edd81b30371e1f6ecd921ed29df83d9dbaa551bafe2bb51ba4d1e1bd4c0246a15df8f722b8fa573be6c0ec30cae48773544ce3ffe3250798fdc7ff13bfb68ef690f5c90925d949c5b6fb256854ea58087a91410e35576ef247f07eb75d87b93fe07004ba0367f7d029985a601ddf0471b117df763f37b2f50af266ef56c4d9666c9d61ff4acbd9cfe4324ec1ede68eb1d20e7e6e51a4e7b2b0e5e5d576d5ebd2abc75980eb50e94fc03fb5e100a104a9ec0b7914a95b548fc9f88a6cb4afdf8dac1daf960ece6a3317827f9e67872a1bb71f763d74b095b0378e86e6a79aac87a4cbf1ec999d2e4e784f902fe448ecf4c657cf949b3987bbc4c59c31e2d604f614d5b2f27d74f7b1bc535f8ef16f8fbb21b7f6c3ac2f9d1a1222a3f56e3c4b34a6302cff363e9c8fe2fbbe7afc75dd7c253113872e21ae43258aa718b38023c6d30600141e6025ef5a058a7a8e953adeb07e10e03b7110f20edc9c8c7cbd6e334a42bebb3963fba4cfa18376d02e32471c23921e947ae910fe250878632ce3257e6808e8bb87ca254a765c22996007b817850ae297ece6b311d52b188bf44c0ebc43df6084338e55e024b5d52869e5835441394c50899ccd4107e96c3f986df8f9e623b200528179623f108e728a7011005d6cd1c1015f0ab695880334adc3541accd99b105c48cb0b6d3325af19350b83aa365722f804561eaa8415c879c85f3fa246b5972c744f467b1f3269929f6dbd132a88bf51bca342724a37c623b335a2a835292533e80aeca2765ad42981ee1704435a3341f607b72d605b79df0ab4d959dca1bc1b8d892c1a634315834d07f46b978a6482da2927ea42c36560a03553f12b82d4e2aee702ba6d8e9c9d391fdaa1d2dafca6d4ae296137b81af410cb8069e16b906af9c6814334246f2df8bc14ca04892862984ec374bd7c92d808c20907315a41a5e29db3c909a3258b91b7c6d54163105f121144c1179b0e429958d6a964d36358ae9b6a05a721ae143e8be3391f5a09fd8404d6c20301d598a0d57571999ef9651bfcc0cc6d70c97443a51216b05d026cc5ac6c40dacec5a78e5c5dcc36cc2fcd5c1ec938e698c5280def219fe103b31894c11af6c90681eb957b04d280a728d189d72226de6f7ca09727a5ef9d664b25b6591c452922c1a35c23ccd56b6205670d0cc9417c9f356ebb683b202c40eab0513127ebc12c87c3c58539216fd02f61534c01c0a9a32cb2457e2a7aa0110c45a101d4445bde287b46394ed0cd707645ad4d02c62b839cbdf34e7f4cb3206f4195a2f36e2ba0163579b3ec8320eb7bdaf3205df1316b27831d057599a480621ae4c2f366997f3944d03a3414ef889be94cb6c44a24c9640af56caeef0cf1f4fdfef2963def814914a1aed9989ea57a4a30639031c6599bee29528a23b6b6b626bfbbaf9f379b3b73f9e77bbc9afab4720b6daaa1dfdaaacdb2a1cfd8ad7978ea4fc7e0211861fd2e685dfd925bffccb578f976e2f1b5e5d463c34e7f9f2f0a73d835feffe6106ebdf3c8ecd6f1f6755de3acce7f2f1a3bc88d84cf8b82f5f9f771069be28d79121d5da68592c16b9b1d1e6ab4f5f54b8655856f2719b4d944f77a3e6eb01eae02ff2fabf6259598566c2b4bab0a6187cd5b2976bb22c6279f1a3ad148058485b5054b76a3b372a9859c1ab10cb699f0d703b019442b2b2457d079f19e5fb38d2960afc3778f4cad3c9fde79008f4d7b6dcd3f6e7840f697f8193283d36032c0a477003c5631ce2344ffa6fd8a7efbb6f930ef09daaca1b3cf91b6275e0c3f945c6fc3cc191bd7867bc08f10707e674452b311ec1326c98eab65b24219158b0e417db063cfa2f9be2306c9e77b3589ca627e41778dbf1c4b01393ecb35e3771585e819aa5f650817e8ce264319522778fe5bdcac2b72758c9c3c70c8a2ef341b6386fa8d46352a9963764f6b807fac39b9a0f8fa848b85fa5be5899fde5691c3bc794a72ad653128b86954651cc991ee1a851177a4c1231488aa612c5b24b561b1695fbdd4ac09e197a54071f0323a77c39d82edce4d5a800becfc2dee289f342cc87d0cd65181c62eec7ee04047d2e3eab92642415b580766b80218cebb4e08d8615002e83a0e42d1ec6b318ae725611c78d59c9805843510d9682588bcadb9bd4b22fa55b86687b711d12187b41c82ee67449f2ac8294360ff2439d90aae780adb2654aa37aed09b826b5b39e306c1dcc2f30e4e29a599bbcdb8d9301a69dc0f13e5f0793ab6aa0ca388fcae9902bce444d3656cb113950184911dc315432657dd76803fb4ed60a224265844bcaf42f764a23242ae0f6c1f34b590e587d37cc629525ba420100c65a69cac612189cc2095ca06039aecafe96c0b80bf7c355057e268fb34bcac52abf929bfc8afc84f23282aca6c1def59d05024cd260f9967363f46a508de2a40e118cda02efbfb292c7c0712b4109a77def150446235c30f583e183953eaab57fa07edc11f95ed967a382e3e037c94f05d68fe6dac977d8afa0e12c6b276b50562b8d6a14032f79f14e9b728d33bcf72c67d89a3a2499c569f3855c91f693792c26fdfd5210e95364af5d40afbb4aea22a789cd479680882e012f6154d7b9866e6e823e95958a3ca29965d479e051600a7726a7dc4dfdd6979b1f1ae1489b60428ff23b93cdc5b3c9cc78faf9fbb8b34a6b752d3e125e54612c44899a49c7fc779656641317cbb5b4a8c2cf55155eab2afc6b55150be75a0cbfa617f8a2115ea887245386a50b7cc956034fdecf085e6faaf1efe4ab4906e6915f2d01a7feae4ab2f6e22aafa9348ad640fc4d38e8f7a7cd81839e08c817893c98ffdb983cea5213cd76ba0a58815434fe4a4d7d34f1bd83f72d0a0c3d95d33e19f7173939ca7c42454fa8fcd2099d0108d7cd77765c9a52f42d55aebfc5d4f1d7b015a3526b54704604d36688fd691fcf8df1c62968f14d550da9ff26b690aba6ec85f5d1d465462e642ffe0afaff7d6b58344bd3275e36e7fb0a2ddf2e67f87548ccb99ae1cbd3cf3f876f3f7f5c66afa12c5286482e3d3076ed30f1f38be9639a21578e915cf9144d9c5c78fdd669c25fcfa58bcaec79b8408d99336a6cfdee0cdda0273cd52eff653f5ee9d21b156c3bdb391a378f3c591a7bcc9fedb4382e6ef28c549074e5b9a6751d009d7d01693d9c91ac692a8045467cb1520d13038b4d5198aa5798aa76dbf3e64f3b6cbe7d1977d7268937f7f4fb9693b2eeaefbf74a22f7e309e37dfd85e4ef2fe447f75d0aee838df00b19f0bc20c3f976f2f645f7bd30a6f22f745eb4f9a38dfa391bbe1773796d94dc664cfe3d23ebbfe777dcc77f4756a0e7cdbf2610a952275c6902ea72f27e653b7501eec90e9ef61a77253f5a06589427f474c6ff325a668bdf0a265195bfad6645a31c17b90f4590216bdd0ba090a512fbc6b483d64ecda553b04550e088c0ca2312e63cea2f44b96e62b93cca54288fc9f0407efb8e2bebe3ffeb71677f7cdd4f7175a5872f79803f38c247f5043c367795a392672518394b64c89c8a4a11508a51ee215ee5f0b4bf8a208ce6655de91824082145f99982b2fc95524df602f10a5fbd566af18044a23e1e28d447a5dc125f5561e948adf9233cdc8c98c1ece18638ab973ba5fd5efcc05ab789dc115cd005f1a3669c43911fdd4ea5e7154111b96b3ae654fbb0413d48c58a909d0febaa4ceed5b8c1fae999b3aa48cf75ca036b75c04805e51be101687b80c782bc0764ec50b7f8864184a2897f1fca23048891d3832c0e70ae981d3f55f47a37e77cfe1e11e8bdd80bff0ebdea3c540d63efbe7cfda132dd3e81912a8f1eae88dc6404fa01a9a1284333569b21a25a4e9f81e488d4da18a8a216e3fc31c4b3a435c369cf9e7c52c0b98eb4e641d6eb2325e4f96357663bff2ef723c4adc6083d023925c91dbee8d8524b285e632af17c834bfa8fddf6871ac56da8efb36fc36c96a244f3ddf66d93d1b64c4770dd413799bb25acbd9cfeb72f4fcfe70a38312f49d686aa2539eba8cb54c85dedb14768abd6b4172d4ec167b9af23817b24acf5d296b66a54db23844ae3865a94893e153f70afc56f545791d239a1258b44a6d8e45c0cab6c578c5451438f1f8aadff0ed57264ca69fee816212e5625aa805c2ec57640a65909c3dbd83f8a2f2a410cf0201ab92c236315e0e98008202378296fcb79ad32f1a8270ec14cd790e68dc8ebc6038a795cd2f02df80aa4390659012e88c37b038d53139adea608d6899fd1acfea6b4f8ba510bd347fd86aa34eb7420289e39cc6184cb2baadc1c9ba8c5b5efb3bc3d3831e023a26248ab9016dd78359fe1b9f6e27cf16016e323b3a54d2d4de28e7c36b477df8ebbf1e97b574b0be4f2b151ad8f088356a32f8161ba45e3574c2e835db545d35f3bed6d566def84b5b713c97badcf08e4fda13374d5eee1fac76c1a69cd69361c0704b41fd9e155ac1358180a7c18974d55c62d6a712da7f3d85fc5f93f6f0ebb67ad6b74a8126d3c16cac116ad01c20e0fe4c3ac93f2c84e86118a48b9f3a0d7ce83de8c7ba4c0a629c027c2be5052f459942589b79528c6a112fb4e71fcbada50a19647c0404e7b6445710928f6a69ac6280d153bd1357429d94e8fbc5ee2b36aaefcb5b42e8321dc5f4aa7e06919ba26d0eee7f393c2db929755525631eeda8832aa231230684eec964dbb0f8a6a15e01e2f53d8376a19989f0a509a92ddcb06c05dfd13c36482ba0485a14167c76f12654609ef395a257bbf7c238b8d07949905ff895a884d81691533cc8b010253aa5148e86baadefa4ef89e34e6def4a4d54cf2e4f2ea9eff35908bdb4bcdb70e9749131a0817282fbc7198082a2c9407cc92739b8cca477f2e19487246804cf61b7d0797b0a5523553900b2524e7d1d053d92b10441a9790153597ae3080e4a278ed45d54ac79e8a4582167a019d2088cf08b9a0147a809ce5d0e50a81062048ae228f94bacc5fea812ceeebbded03e5a09935e0d5f061856635cdcac8221d3b1355c9ab1bd6b9cb3914155e0076bf4976b0976723ef085816528c78e90d157dec64aa6fa2c28309860c95acc676d45167a6b3c602288b5e3d829262f79faa0e807d5b866042d9fddbaa2e759275d9c79ed0cc970a1f181bc55201b4570e3a242a6d0ef7cdb57087179228ab44b267aa246fba3a20f2650595bf673d96ac49b50c892b9721169928a45105004ffba288cefa2ead9af9aa3ecb82662a2c8d04bd867089dee274a34e936405ecb9384e834d749108d06b44811f6a0129a1390018d52fdc361e9551f6515ca66b3043bc661583b41a12ded9f617e448adf65297dd7f6ec79f5f76f6f9e95fffe8aa01ee0eee226874f29738de7a001f51b5fcf15cc263b892a45eb057275e9bc71eb796e78d7c7b50062ba0699a9292b103c7e0fd5a9705cfe452338fa3381bf73ef34629cddeb22dabd727d19020e6e4e6617778a991b4fbcfef9b6f5f665e9f089dc8c52079f83b82e43c3b1100f6bfdb8928e244f857735defe786ffabb9aea6ebd8f7a7e7ee3fe5e5f62a5de6e30eef2e1af44cbcf74b0d3a37a7128cbcb739f369cfbc10a13cfa955f205279c10efe9e22e745ded37fecfe6b679ffef8e3028ea752911d760e52da0de5e2e56f46a50286bcd52d2f77492086459313c4d2a5e3a149eef3c6532bd5e8ad5aec9e1a5e4001bf51a80b221ce22fa4c704996b4f610b458f46ad138b158a7282e4a12b04fe46f002b8a45f2d466dac14a186aec553baa51baf0283104f82ca7449f04fbc427d9559a22b02f3bcd6e242a706b96c94b09d4d8c4bd5e2d31e400e312bb49a1f431a181ab9bbd1a2925f01085fcdf654c88ffd57c0122257047e85dc3a08488c3f443660b8944d8650cae4057b60c19d8c22352381f24840d70731b9a539a880f603b6976afa2a4d1a5784418b1a980185095efd3c1f140bc3280ee109cc314bda07a489305d320518ce80f200960dd08f1a654a09d11dc8080039d51bf246ef553e1bde37f452c74951375a765303819c48761f94ac8adb38b38028800c15857aa3eea33cc4e8db52ee7c114d214430b61f212a53a99ea7c6b7a9a656f7a0f72d535bad3c79991dbdb709c2614ad53455748790601317a9ccc09417190048365ebaff0156935ceca94fe3bc348d234dacb3179358a16f3969d45621ac726ad2a55bf534601c773a55dca382405b79b663fd83f48632ef26d3a0842b2b21846d3f0572d02673aefbed265314cf13f2881df627aeb5e2c4ac6a556b11449c22f662d7aae354a05fec5863783e634cc39d104f51e67fe95da00ec434a4e1a2e990f6da18d402467447e7b23a8918d140e469fd8e2c20551c1a4ed255411698745e8bd28bb50806d08bb50818af692d9271280e7a6ec8d5ca5a54afd6a2a8cae6e7b52874d1be7b6b11bf5c924e9fd1f66dbb4486bad17e9da68b562e8cfddb8f85aa295aa91cb5e5b548aab4aeac2a933b698134e209179bc9042baee49c97a3b8a56dd389718e5ae29b772cde11bbbdd54aadf8c50d29c9dfcd584ed264191172c6eae73322ac88fa55143b0465d32ce27757c47d39251b297908efc7bcc9549cb8b2c5f9f3b22a3d07cdf65a5b5f5843a50471dd1433b5e61fe480461c32194119ac05551e407bde69448c3c4f23721a927e43257af99b1b875af05b1d96d09306d7b4cfc8c60300597b1d36d0e54586638d19c31372901e035476cb5ca7edb24c6334898b5fcfa334c8cea3ec8da8266a011917e96ff8e0012afdb9460c57489e97f262c04e2376de3ea3ee198c6deb950d745ec72ffe3c88315bad58cc2b589b7519bfb01d5ab2b28e4caf5fbc6bde7e379b57deb517ef6234ffb139fc78293dc551b385802a46adb1cb9e7c98f7ec47ec12fe969b77e95b88b68d3699d8e5fb1f3c61f18e0c4c150a7feb41b6d4d464572de528dfe85fe8726405912930db65c0c56fb4e07c1da3ecf201bbf03bbfb6aca6843679a10ba59ce91a2cc98a4b96f154ca38f56ab2b12f4e9fa855e9dd5776b54953aa20e41c10f23b2e7c2d2c7ded56d6ad97e54538cf6acb743302701c5f6fd5a4ee7dc9f4ebd0f6f35a121614c7aa572c2df4c7aea7407ac5f04763297c3735be55aed80b5658f39a2b03427224667db409350f6fe4ddb7416905c542e6608a29af1e7cd3cc54a2d66c7bf3c0283206723352f3aa0570efc4b1b820dcc941ffebe0dbedbed8c3cfdf0fdbe7afbfef74fc05e3b7acf58c1eb91acce08c6d0bb1074ab0173a1e9da9e48704807932bdd6322833c36bf180cf1e745aef9739dea3923853081b6a6d323e116f07c6b1c9c01613f42250e2cf40820ef0175b5d81e1ddbd5615d18e5e46ca4f79a12758d2e56f29b0bc99730e0c242f0a50527c12ecd7d1a35eebb40f54022559c75a8005a6ebf556ab3ed57008c1eabeff004e36d3085c1932ca9dc7836b3ff46a3426547144f42bb56433d5d3e77017d7f117073c4a76a8814413c50c5e7a5083c29d147c0edc6b1436844f959a91bf69b1f99be60c9425c4064be27465d6887582e39bf544b4d6034054d94f2bca94fef83aee279e9ac1a6a35fe5f53283f14dee367516d7e1b6a8f25526e31772f417680479922e9ff48f659357799d86784ca77d340b69998b63c8b3f4e2997e522ff3c7aecbf1eb501e2c2f48599e41e45155990aaf79197ca96855845097d0aa10597ae488e0c0927b76a924f70f3d3ffbcfddeefb4c1be496835fe245bc6049853ff7426a85dd1b5a2befe3277d05219f1007b5c1de16efddfbd147b153517ef74bcd99351859d8860ebe57b5f436e912773c516fc9f1ebe1024c7d3570ef960bdfc6c84efb60f3ffb66bdd0753974ef6f0beebec4cccbffefd8bb6bea407f3b7ba4cffe32d055d10284bf5f9f2d12c0243972e29490b9b762b6ec46c96a868e609a7d883fef3e61750f15302c3fc5a1a85a332b9632d1c37d0b198c357ef58ec5f94692d40b2dc5dcde565cc25788cc3118ae69e9c2a999b041b8e4a121b701d602604a47a6d56220f176c33ae5fc97ea7fc959e8b71201b0ab9ca9ff11433bc5b1761cc28d75089261137c865150a35c98326ee2d80ea4593e10510c49aad345b3299188116cea9c7816a44681345a6d566a00d03120e2a495d0cb6d926d7081a89ac94f49a822fd276d8ca63a12a8ea2986f106ef2e22822982b469e6bde262aa05e6c557e8853a402920ec4905243fda9ec31a9248afc10e481117b2a1871c535c60bd23869a2de6c87612a90b899acf756841b78de698f80e45b98bddf0a10c76581d7fdf41948c3447e79f8cf64d81d8d7a37d5d3d1aca7bd4cbca4b36ca93cae7fee5e51c5f8faefcd3bf7bed865cdf73b5f7e7945af9cc5b46e9c2fe43d97fdaef6535eca2555a17bfd7c25419a1eb218cc09220e78500f671ebd0b35910b69c697a8faf792db2d0b43df599d163501fef1c7f8f4fdfb7fd92f5f0f93dc92064a3b9aec3a20ce41a500f32aaedf596a7f3b0bc2721197f2dda7955f5f17855cc055e7ea900c0e4a5e355013cc17f32ffbfbf3e6db7698f207396aa65b86a36c7795428c545b947b5914e1bb5104baac45aa2833ced84e0292bc195a68608b42d177491b6a25c85f8f6f516054085fb8828860d74a2e02199cc953e08c5a602a9cc43172cd4472e2aca6267f534c38e048c5cbdff45a6e957cce8004a6202722e740bd5be403600897f62307d26d172e383b31d05f1ed3c8312d0e0a1cba7362290497e4362d04002379f8bd398515b5d6aed8652371ceb75f934bcc08daa631508ca833cc9a1f4bd37534f99baf243062f462d880d2aa8aef8babcb5450943f46725ebeddb6e46321e72ac51688a51928f4f6f625524c2c1d486544543c928b7973ddb881c18d296da637fa3a560872e96567a3c92c95b5585a097c0f88cfba8b11b8fba64192865076a180c05fc69f6f8122e32ed728e792e56f3e780d945bda028f56b143594fb5a9be54b5811c832316054fa511e7d85900640836d9cfe5a82d413fb41fb53590aa68c14289c44ad020a7e19562c143b4297b9031a0b69f234c32e96c440a02d2420d3b74d1078c882ef690a233a8b5ac1f692d0f892aa0bc15d86bc48350400f225f3d7e7070215fb47b3f29971e92e25f6342be2a9a68c0dcefd17588ccb82aad45bec54f2900f084db1ee69c9bfff4995172e91c224a399559f8a9c80a2cd701fadd68f456c7aebe53b6fd1b3d1a82f27779fdf61b365cc6b165288c5fbfed36cfbdf817ba85cef915b5521e28467daab29ac143e3af358d004b8b227b45ad54b91f645c7f92fe87cac59ccc936e4622f6c5eb9e6a68c8f5c4c16b0f5699ef050c831168636e80ef21a91278a91f02fa41cfa752443aadca1ae7f5812f6aac79ee5d210e860caf4a0cd8207baf0200726a682a96f997a94d3a31d34c9061237fe78910a56b478cf8aa235e668b7c309e97c5281fc43e18fae6190b027855b94430d88b0cf6d4af074681e6a85a5835aad039bd6d55106e5ebf71eec373173fef8e5f778af74ac42521f71631387438848b3e41928db732f293522171a61a12de447ff1c098aad261f9dc617cd161e9d50ef3571d16a60ec3fde612bf2d1b802c47712b2d34f7d7dc5dae6a777d70e5d20e0b7387bd5888645d175bd3795d89c4f4ccd239715a89c6e9fa7cf303a075b70d290b225acc71fe74dbcc100ad5792653468f08c7d05f2ec35e860aee8b5f3a4f39cb47f18e8c0cec4f2f2ff772aaea65c8187355c758aeba1cd554cd74dfa39a1440b71a5ff444808125765228cae40836e2267d061c1e48783c250f0e1d2f7d2cc6531fdbd95302f38c5e67c0086ae97a845e1946a1013290a18d2bab50e86b914e0000325a4bab4001f27d9dff45cc19d9304a255f0b0644f594aba254923860c943bc5a17af06b24d4cc60c2aa162a980a1bd45695e96e6ad6267a62c7f2fdb574619cbdf79b580a55546207f6490d51b6b2c37084e4a736640675aa558135a93c979be3aaa9c4b92833e0665126fad0c9e4adbdc364c24567b8651f9c4887b6b5d51c06a7b990f98ed328f55fc8cc4ea365928f5d6c801897b37721829793172aa583b93915361e324d83841868acfb258b64796516332b96b1315b6a19ccca295030855bd69949c64856deb88e0aa6c822653767e4b9e1b16ae1041d919c07f139ae6f012d866ab0cd5a2e9f3f0a8e98a5c61f72a326043adcace34dba3c10735a25fb4145a895c4454a7bc34a3a31e0e2532d2a935c8df851dddf8dad62b725930a3215eecf0b57392f3dc63a82c01b2cd71997b2d2a14ecd69406eb6b1a64e1085057e524b79a49189ffe75e811f664c44896c56b025180c20c6b1dd898a341c965a2921e2bf964ea001ce7f94bbd8386803a5af2196216fa1534858d03df7c437ec6f67cded3f865f76cb7e3d341639356215eeff0dc0a145bca692f6bb45b21929f14e5b7cc20bda8601706ceaf50e8f473fbd6375476c4399972b309c805555f8c37afbc63fd4acef45a0b6bc5975a85d38fafcb00f4543a7dae54b2c92b37b1fc5ff8a0b2902ce8663d268a5c8cd859a920a45e50c282c855a39293f1a77d268f42df57e5ae06592fdb5408787e5db647709bb699bebe55cbeb2e65f35ad060b8520b9383cbddb55ad8206f5c36fd0c2482c27aa62c334f7c0cc8463614d2e6362c9120ad107496d98d15f23a7680e2af05e54daa71f4b22266e234906360e96e0370f12ad7da64d11bc17b8f721ae0f53379dc86eb4cf7c03ccb3969f19a5ec9e86dde2a6b76536cbf72eabe188f602a9ca5e0b3496a52c7d2cbae8b6a53e883d6064ba9f689f11ab7fa2b33430e3fce404b8c1a8f23be9b7b305c35936faa86ff1ab7d644feb3be4e071dae5129593b0335d853b5a298685073192d356a3352038c750030fa0a9c85cc97da6e5577d12005ea66b1807371250798a6ee1be06ae2aa7264a00507c4950d9207652a169729839802fc9f7adbade721cf01297547deff8d97f36f1ab7b8e640c1a3a809d5ea1d0ead70a3527aada24ac7f5ab7f635aa78be107864df1bc95eebdc8dddf38c5d3b27eea2f336a225bf6e618beda70fe781ac7a77f69021c3a32eca56980aaef156b4004ccb40ad390e804f1dcb175ac84eba100d12d1685d63b6b70f405561d447b1c3a533c8e109af265e7ae1a883e09f811662de56d8079954ed5d909f515f395814e2ddb4e76a084871984874c256e40f7a09c0f3a001d328570d1f4660a9b3bf5221e0a5528c49842d24dd01346fd64d40abd8c644e2d38058561c9257bdb756a925e2818f0b53a4e8c57bd453db551327e3c28e9a808cf89cf3be3ec236ad55dc0e40665652690717b7049a6069826c82b388274b2a05abc69836b71a4de1e3b740c5f2a2a91a2db333e9bb534d35f5668461c12741a0a4e4682524604a2014cac087ea6961e94833151c2ea918dde0deca9e50370c42a353769b4578c28affca9a03006f0ba2559f04300ba1ed1f7bbb90d9249b16a4b69cacb840525b1ba7d7b6306bd9e4a7e9d5d4c27cfd76f7ffebfd9f3ff66cfff82d93369560e16a35ecb0d96546994c31f292e3381edaa8a8d4c3ab7e696c17049f8f692c19001a7801f708f775f674e57a30fd40284afca6385615086bef51619d5a682c9b617b4151de82d4c1f1b6d321c073550a42b75c4e85db8c6ec193d16c4647dd5b2ea225f160fa619e641ba606439f548418f0bb872a54439e387f3d585a10cc07795ebd0a532c2e973266fb454b281a4c0b4552645593c3dff73a28535cbcbd2e52a87956bc52c4b62b269c8c4e5af2d68875bf6c837d75a3d8bb7d7da3666193c799906b55b347ff7c943d4ad37ed5ee9ed189c4147eb5710e26cc3ad5074bcf58d6ffcc9a38d576ef069df6c3e03a0161dd9744fb8f973364b64243320c806131f022559372b0a6cab292674f2c71bba9345b292694606032965df8b611f52571c0019a1376cb201951abbbf724570287e8ea3dd7e7dde8e1a52a9c66d2ac84f7ab8267f3a3fad8a36d12f1d7e6cb6ffdc7db9e4960c86fd70c307b2ae830d3735a7a7cfec1690650bb23d61086b0facc1aae0493eed93bdb18a2fc30a176454fdbb41ce419ea5d3e70451f180277beb4d5938e7b6f2b7c096bd6c0af7a92e38dc055aa4854b5e8243e86907e9e09b7353e9a26b3c17a6d1cf713c6c9f77bb6fca7515d9f8d53dccdf0210e23a9a7655ecfc985e5436be13aca6a772ea0c880b10d88e805ddf22d12eeb966f227d77abf6e762f7572982afab6b4ffb669680d2d0a870af0105dd7da0e0e406aef82e106b214870ebf8ed9d65f73f2fe7f0c7cf6f9066d1b092b2fb8987ddea166e00f68d0464bd0177bba7aae431a15086d83c78cdd2ac2c05ab0dfabc30955518ae81824e75e392da096a43fb4e7011f559559e2d1ca8aa05419e62061f935a920d59f77655299cb5e82c292b889e1e82f98886f4355b2e3e444b253eb00337be6ba641515eac80881153aa6ebbf20be03604034d8e1a77d26680ee94f15a3da0543e554d6970cf7531b7a80a5c3511d0363e93ecbeae02ee25330fbc895e03fc2afa890455028811f63f4e37a81a41f6a8216030ed7b6dc108f6104edab673f9b3435a02ec615b37d3e0b8aa208bac9a72fa4c81178aace07a21e6d52ec4bcbc3661ed921a759ef85abb8e42431c98bb049ac79d8ac2794fc0fe0438011e2a6a09f982569035c040461519ca1b8b06bae0472159661575aa5a015aa25e522f25c95a591b2887919ad8f4290e4cac96776da77d526984e4956833a92add5ce2ee9432314823c544ae1d50912f7e06f4fa3dae21fa73417a5031b3acec3f7a97d545cd5d7fa4cb8a64af142da069995ecbbde82429398cb477f1daa641554b581d8cac7a2519dc455139db905d053c4ca5df100e54188c4cd20453ac80d4109e56c345bba8aa1359fdbaac0ab8501d438b0688dc816b09d4605af51c94dab2c127cd593c1eea7a7693d0498c6819f1ca901d762a0f07f7b473f4709f7ff296cc523528b59d421f5f9080811c0bea24ab0eaaac2c0a5a8424cda0ada195dbf22b15521e912061c7692a698c602ec89d6ac825d58fd155a1f3338788f995c1af05fa1ed472b1f85e68118faaa8a8b453d2bb4ca91e507b2e3e334c6b10f2a8c27f0d720bf80caae959639d216a38009948ad28877f1ec689be4703c751c5550acea882dea8280985ca4dcae99ba9d2529b2b74c59b38f15215d5c1f1544981805a091d905f0d4a22fee7e6db8f170ce2b2e57d64235edaafc414b80994dfddcd6fc58865b74e2bfff7ca5a7f8e260df76cb8bbba75d2607fee9ec6a7ed66da1f11e3ce94f328530625807071e525cbb97fe3b0db3c6f07dd4f2b8ca13850ced34a0206a982bb78847aeed8cd19ec054afca5cb42d500525f6ab33ab8d093817a2302512a1f4a1c7a452b364182886a140f381ad91c3e254ad0333fcbbe9b46289b899a716a9d322476260ddda67579773c90ab478a2a04da70fe51d60b1095e1d345632f880820abb3c559168d09613a1e54e7544512f3a88c5efe52cf5445875c3a4226d361b576a835c78e1e068a7edb576cd6f383f66b1cc8c91bfe7c28af3b5e7c418fc0bd0e7decf710f1daaa4614945ea3edcb83a53a58921389bd5a1d6d9dfa3e3a5040b8237489d57c5efb03326f6253672c89722c10c776e9477fa110d955af8a063074610d9d01ee53460184deba194e981f9c8132a9f150c6cce0d2e0bc0da0954a62ac78b18d1083eb9687ec23204ef6408061a7a80665b289a23e421ead40ecfc28636e10eb641ab34dd5af50b87394b5ead01b14c148710a4a318d621a6439827e54579445e8b3cad798f2344023cc017975209fe51dee6f011f0d7920f56e11bc90f5808f965a59450adba9505b4d4569d6d39e596b540268675089a2a832ad380289336467cfa43d5d40b7275d35cc01b52515f64aa933623a95f762bd1c1921f532c5255f56c528849f54d2ac0b196d22456871ab1fa14cd7f1212b2162c46eda0a1e448a87fe244e7f5b08f3761bd7abea928c404cb8a6132ee22daf715695a18520d31439d3bc9eecfeace2a0be4f902e1aac516cb1c72bae45f643d62d3f8c1ecca8d4e286eac43364c05414e67c201a4cc6d7866a4bf237277da5adcae97343183a3f1431c40a652363968bc9b846547215dd7a037954d904f20779cc1ae4c68b281f426e5b5f9b3e7cdab318cc628fc8c8d4f544f5cec0c4230fcb618e4d63f53ae273068e070c0c79f1a08d55fa5774c3fcfae30564cd8b8730e55b753bef3a543064b3f15a6e0eba98523e7972a0229c503acd54ec7e25a88f21ae84973d6d2d26c803206f89a29161104c3101cd93f345a5c66f6a461896370db87940442ddb11557f54016a863a2c2843135bbca5ec9a606f9a6a410ee75a906dcf1e68caa42525c1844c264c2446e617b0ec001b75f05b16bb1c7a20888c2713d402e7f4490935f4b6bbaade604bf677825ce7d096b908f63914e17fb034a5daf6d1ef4c1dbe7ddaefbffe982a7dcb2057042e70e537b31e70ed9a6df82d8a1f9764878ec4d194fb055a388e9ad7d04c92715cb37443d734ae468fbb2085fb92645046c6444bd0d9070eca4e207f46190a3a3b81f1f395ed77cf7fcea5a09732a66255c8e8315eb90bb307a0805a86678585f52113aad6386378e2eec3e393313e1f585e6447d9b06aebb33208bc313ed5fcf132b071baeb4a317c9245c7a4338f7533ec06e2ba34089369b7a77cdadb7a4145f0cee1f239fe42c55405e0e29786e5b72bf86c0462ef0d35c7a548ea6580e926f6780956b88d57be1c85411cf648f5819dac0c20f36d328aeaff7d0b1dd6b9882a5f4cdb6635e639298556a59d6bb88bb08bd4c96575edfffb96be69bc7cffd9494483e187de924e3628d9b7e3629306999bf3d4743a35ddaf4dcd2cfd8cd5420c54e9ed80d29985d9e72e456ede5d7bf8f1051e249bc4759d6fcf6235d3e0be5a84be241aa969349574cc846a8d28964d90151e97bb24e9f8b6085d5a31df66cb5e59d482d8ff135bcadc2d66a95bb40ae9c3ebd6794c1d864e4c9b075ea7553cc2777fa59a5225251b25ec1b88b156934c33694952f20d15b50a26823bf1ed7a9fc8f8ba38fa733241ce7fe07538edd9c9b67b5b4b7ac3af9a90d03c5a1ec47d5f85b51f988f6db0fec883fc597ff4b76187e5e83b1af579f7fda92b74b67e420d27d4de7542e1c8a3b76cbc81864d79c72fcf7c2f3863f92de356559ee623a6969fafebaa999c89fd49d1cfe91360ccff1c378783a67e1df23b10d6f57da90f2699448dd71c17a4662ef6a47b2259abb66ed478eb110611cf158e9e491687762baf27f2f4fbae6b5d26539477dfe74eb6ea59f510c4ef2c184e1e01c498f5e5817c93b710d3f2499c77f147c5bb3d00fcd265dfd39a99fcd039c1f2c41dc61af38b474b6180c1d7df8377a884b0e2a8b4972ef4a822cf4c595ce876fa5c650f0ad406f27e3be556fc19e852266d20046a4a474094c1aa867827e9f41de384600cc3e1cdf071e415e838807f3e6d358253ae4334c952daa0ea81270e366dcaedfc69784c08c9e69112a5dbc0cf690f5eaedab6386da35eab260b203c113044f5603de380b70eea576b2684fd111f34d3f1bdbe7afa5ccdbbd5095f484938ac84418988b3852c40b6595389c42a44e551ef5606623e52d441d185224293db1e00abda3570d5472a5506108273957cd7a39e3ea6f16dafa0b6b18ba3d72910d6c35668a2a3b402026159d1665026a290078a794baea97a8346c290eeb98884f11c094b67f0da72240ce653c3109c211f60ea45636428b917cd63e4442ea8be5844a4eb2813f1658c0cbaed03e5b825f69a0252316d6fc9033e6255581bcf5791267298a4f92ee5c08a713c73eeb1ceac84fc42aec8ef2104a87c329c30eb7c877f158d6328b3734756b9a42f2a3d34e74d269750a83497c045f9de1697e00957835c19788b1902e2115b49c32b1936235e49692526d3c1d91e5ce92c632e2a5a0f733168c325b154379ad798037b88a8e8ec64c5c805e3462457628f61fa813c962bee11e01eadf0474007b5919105414826c85210ea769acea1f3e1568a47627913923e3a0a7bd101d723f9244b0828d2b0c4e82e1dfaf86540f47c26dc4cb3594617ec25194f72ba5d1063202ea34e93adc6dc30f8fdb4905d047df54410ad8480561a947eb1210cd9514c557e3fe73e70e507078a5b0dafe0c81a0e4f47158dd310f6d0f9613513e5357bca3db4c6ac22effa7fa0c847cdca709ca4dfd10789a22cf52d76e24e5de3e346864c9c1746b1c04694c2c77024c7ab4af9bcf5a898bc6c24f948cdf79dc787797b19a86dbbb85482ea7d9125e9c894ebb44d154db9518c03153fef2d1a2795335ab71124c435cfb3dff7087ee88b7c57b552558980c0aa06db6b979bf72ac015f38a5566decbd8c1cf66c46c350adfb5724aee25bb498b4b415ede8c2ca4f9b44722379287624aef00ac7e8cd1963072a10b0f7e5cf4f42cc6af4396eb111175a7413dee0968dccb3e19c0c007be0eaf99517459b6da670932ecc8b646cdb3a27f306402726d3d8f322def9c34458a31510efa4b2a47e365b5e338509aa3d08a38408cba075ac4fab0df763ffef5f4fccf0988f54bfb13aa88d300793a04efad6e30e2e8e2dc5b6f6b564a75e33553890029aa93c59060a7246b051bbd511531f6c6afa4e31eb000360acd6453c55fcfa61e7a6da84c3eeb8740256357cf334d360e203bafdf52ee097cf0c22b7f765849033e20591b88354d061d66a419aad7fc49c4642e9a5d95cbc129af3cd520abb3c7f2eccfeb734856afc96b695651919e80e5de0f5e193e5d3499b23762fac1df90eb01cf8a3862c6af3c85f4e089830160dccb75cbed694f359830a0bd951b5eb610392b17a6b3fb747b62a89b6770efc0b5caa583aca5bf50686ac31094ee1cfcd00db95af86ad258a73d23011d788bdc6d5679cf3af52f4ee8b641ec652707cac9b01b4084a9133d7b259684ff09a511a0c383ba69da5cc862671c485c2439de41c1d0ba8f248d1efef9bcf93e9c69909575d54211a0228c2263b002d8d202b5225eaa9cda940c3055d52df45be06ab560228de111e85cb1261e0235509b42ce1258a41e17e29961f530d3b09a8986759e89057b7c068468f4bddf9a0c085487350c882c7e08e64313937f627a87604590dd276510786f65382abe3bab7882bc0e9f1be873fdedc31464858bc50acb2856551f831f09cc09b97d7aa946004a3a8c60eedcd830de90cb1a197550ad6c213e071a00e5a1ef77af8bc7a0975e12fea95c3c8305554d3fe97efdc3dd4cf63ad79615426919bd525856836a92a5ac9f1ba7635c1c1947ef055c4507692aa640784deec01a1d759026586c2d7faaa8a3ae33930986cdd61988c45d2c9688b43b5364630988ba53cbb653d562ac64df8fa942191a094918ced6f7389dcc39e76da4cc2364ce190a551fa21e1c55379da92aa4701150b820be74c93c88eff79fc7a33768cf2e3f7aeff333af18788e9a4ee2af5da2d3dc13291bde0cfdbe1d765eb5bb3473bc8a0bef7bbceff1fe1b51ebf0973f70974371087ff1fdb75aaf0d8ca44358c5751bc2319cf6cea6555c477d924c5ab5cb775a7f47a7f9d72f76e67b71868f79284b4c68ddc3bd8a17e5755b39509725e356ed5886b214226a86f36d2c66dde41bfd349e7e7eb74fbfffc76efbe3d0e357efd2599bc9b2b30d2bd9887d440e35e9425e0f7825c9bf216f6597923715829a6c3abce435376d95b6f292fc2ceaa59a8d361ef4818936e22030f7a34e9b68e2416751944f480b7fe8c4e7abdf7db1bf6f9eaf0055b72ac977514dd7d5a2a77d30b7c2c8370cb79787b88e899ef6debc3585de50316b7601fbff111daad3de2e5dc75d2dabb680831f36dfa645eba6d67f4ab414c56036a6d4c4ed3a4c057b20fc1713ae980a3770a4526da41a1fd8ab8232eec52cf66612d555094850a2e423841d88aba96fac69a8866a6051b789b87e3a4bf424735b67a010abc9051503e43141ef5cfc55171f61538ab7f7e0c5b22b720a62a118b1546f0174938a67a4209613c5320693c47624c7105200d39d49338f8ce60d18a148b139e4ac1107d4c08953a4ab96f361c44b4fd82f4fffea65ea918a37852a727090000178486c02e8f0141ba825e0ac194576a6410ddd64ddbf2375f6a9c2eab5805f6e52e1097027403c6a1821dca3eccf8057c212035418562be81401bc8c38f3aa5574e22a57ca15e92c79a18265571c21f8b946c30fd1cb65864219b621f0e53950529fc6c1439ec47b108fa21c8e11b86a23b6509e55fae5ef00717e7d4d9a655dc4a54f55a5771328a078520c47a22215ada1049ad99549ab33f8739b8fbb3f7e4ce69c13fba7a1cd3d5c271bc8839c37a1bda5e11f0ad50a49c62ca691c98a554f909314fb1c1c440d72cb9e625d31a50739e9d40164e8a4f49b3caab8b23ac8158fa86885df16c5d02d0958f792540a4ce9f07c16bbabb724f0ba1eae31d04b3063345e9aa7def35307699d99aab526bdab883995a48878fd3cce3b0d321abc2a7945c55b4387923b561ceaeb0d034a1a27eaa3a8926b41ad28b456c33895b76a3b37f9f3d73f871fd33897cdb8207a0d2529e8ca2985bf9c8a78e7e50181c056c4d696118d89817a89ed341c222686ca90494f19e929cc8b0e5de8e1b44655d98e5d937911c49bf75a9801223b1f096ca0d2951e974ccda33928abb43357dba788a2725c075a8b651c353557ab62ae0bf22898244a7eed544b1a95cab5eb11b8d0c1eb5a855054f64fa38ab0aa5595daaaa2bdc73841c809d304f6b7b99a17bf710298c468f39e1bfee7f78904034c4f0c9dc0a84168b5dcb516510cfb58554bbe9fbb4263fb8ed03d4c17100bd27a10ab851c7af24a0596d45377492fc2272af15106524a6b9915d5c849f73ad64cc9b8df92d1a9c2948e993276d96a15c0a30e9438ed20690a0f3afd72213908b834514fcb612b23420ed41dc32c8eaf2c7b2d3d603c70ecd169603c655018163bc675244240cd413cd7a8a011a20ce53e36ac8c8da3c5b2a91a6fd9768f160e1c63bc0fbbcd97497b61a9604a8cd2bb9bf68d90ce4546b60df5c63839dc13a2c038c019d9a76fbb6902ba0c748e8b0ae1579163c0f21155477900149e63d5d1ab608ca00ceeb997e9848eb9c59e5664b13dca0019984a5c735e715a5784784f9f8bcac2e4172d1157fed600b8f9d40d48dde0132ff8abe24df5dbcd87f487e272d3fcf8d7d3344bb8402b3ef40272d9aeb4a62a2a13016bb10a8a13002f8f6d0818dd190803d7296ba0a4878615bff48099d2101801ad50d96ab57f45603f64a4ac529c652efb8bac32968ca22865f987b466d2ba200da927056d570df8c71eff681aae8fa9a3aab3a238438ff6c6b4d16206b9e94eb406a8b6171f2e7a4090fcc559762be0c8a94dd5618ada41f14ec5f2a049232e5a61c228db71496332053524954a193067b6e723d6d0dbed80528cacd4082d6bb6ca272c5031a3d63d7bbd94a472e6f0d7754d85ab46155b3be28d628e40f72ba14d036554bb450a9e920cead2349f885456c486833c6050ce868c5eaf2aaead5d53a0e6c84933405ef7314fa989d18fac5866d40ec90e1fd356c3f371a6b54885a23f89ab395562c70e16394354b2b91cfe5acdd6b9c326a4092426d77cda67e3fe96037df6260df1e8575e1108323f0ebb1f7dd950f47c7ce0a8c673f18699406f598dfb8d8177a4d27317f828c03b007b691aa229771de2eb4d0c663f81a1e610e070bdfeddf2b31fedcdbab15003b3ba45e5981bee3b0c3fb02901a6067b0781d382fd23c1d433d5f8435492c562ba560e083a224fd25811001d6af166811e7896a886e7241b8a4a23446481bdee230932bfbdd5557d19400fd712e4983c36c32aee96ab414caffe882957b5c264e5cad10652d7c66f2279978ddeea240f54c161e81f58f74f8784328c4637fd9a2197333994c1c0976a7145cec52d397101a3421f5a2627432142d52d10238b55a852e832b0812a641253090f9e5c81b04850707940258f1347d070da062aeaef540f518c6c23e528bb3cc76833d51429c9e2da5ceabcd32567aa2a3499bd9cad2c32492e481d2e2d2a8ce490b7933506c1e15ae56c654e8b63e8f2b67f40ae58f73f65af49d30ef1fcc3fefefcf4cf4e2756a4f72bd5f2a8987b4a69aa7ef944cd65f9eb698c6cb2c2307a5d0bf64b6ec3846880a1fc9055d437a85407e8483d080fa47bb46b42ef9a09abc173bfac30ab513941eaf66a31c3e50b539fa8322fe628285fe01ca11e01129111a35d465c8d230c414f058540728aa0dae66c3228b72bee15a3d6216a13426d8e959ea6e1fb805c4005250a7b052857c5fd7ba0a5bdec0941534a8adf304101a345ec39cd4f6bf5052a732b7cf22a4e0cd080333041f1803db5207b2ad88eb781fa2801d8da465d9d3c0446aa6c47ad977c96226ea347edf5b9208515dba11583530154eb83a5c3951cf7223205d8c8063c0d9f1ff6cfe7af5fa6d0a21bd2baacdc319cf66cfd108ebce2753ded39da34d8780c435a2035db3be3071b10b364d9372044b65e0aca228277533d78b461e5203166cb10d761951108154754decad3f9f823afca114a27c62fd5ddfbc1268da146b992fecc26e386b82e3890ae603ff69bef136dc9878298ccb6bcaae97f9bad3aed4108f2e90501ab5156d62d54cb9d264813eab842cfd7aa3fc63db1843e571a2718470da3b93545afa6f000da75e51087832c8e8bd3d7f4291e363c44d603f643011a237545f68ee9e8d5432e53ca0f49f7425946c4f034959281339303a67e03de19a95a6c1462518264c910e47e72a0ecafaf3dcb614eea6903083c656cc4569a022b5781966b87d2f6cfce422ae8d5f1fb5f49bfb3e120a3ab2bda21469629794587284a051e75f6d4ca630353ae820dd9ab747354fe273533273e2db82aae51f26bf0d7b25f57aa9a748775acba5695a211fb4f05477d869d161bccfa5c15fed2b4345f2bf9539da80e743afa6abbb6fbb99adf77564ab90fc8e72594b695ee56372dd8eb02edb0319c2280ba18357154ea45f230bd27f6b45efd08dc9e9e5545153a6baccb214b1c112f88b563eb416a86c89a57100db51e026be4fd415e066a9d52db0283029c4c4ae250d406ac13aaaf8bd7d00800834e09dcb0a57715041908bb67bbdf7cdbfcb9dbefbecd143749c1ba623dee9dc9fdd9d1ce1a8578b39ef6de56a4577a76c59c6566507d3987d42727eeecc34933ce5175361c219fc8fec8d03bb66195e6df0c40e1f6673280bffe398c5fff1c7e28b71dc37e7565f4a05b52ee54134124fdc80e78add1828a3aea9bb6179f45718522051534a55664a9bc51460aa332aadaa0946631a99644d8ce7840afc34f362e7fc1ec75a105be8793e696d20fe4f8377c1c167e5ec841909bd21017fcae6888c38fa7e7ffd2c9bcc0b1b304b37f8b29ad9942a92d6e5e366c0ab564ca8c5fb0621294a5a4e5eb6c3b6f31daa4f8004d7e4fa51a00fe60b86f158f6a80e6696294616585686846ad285bb1bdb26a486fe1b3f9ced412aaec38904f5e04b52e86701672ec53441d3b82998c05986af15c3bca0f3298c41e4609320ce46c3a6f72d441342fa7d28d4f2a08e70dbb5bb7231c2da4446fb1f3479b1eab89a322ca188a825e85f34c924ebc1fa0a2d41eabd6193c542d3b301d8fab9c762f2b118a5910047d5189200ef498953ce963527fba1c3d3d7f3d3d7dfbb119afb287d1a405f8fe4df67081b6e09642ea332fd21fbd2ed3bb108ddb7334f93dbf36f03bb285a7bdcd26bdeb7037d58f0b1ef4ab4d693787ad2ef026dc55c9bc9b2145a9c36d6fbcffeb68bbbf9083950ebc141dfbf019bcda3e5f765303a5bf9626fe5c4dbbfffd7bed07beb678fffbf7cb6093ecca774fff5eeb5d37d097af871fcf5f7ffff9e3eb53279f5f1007bf1597bb4bb025bbe15f3f884dc62f048c6ef2e50b5547378b07aefaeb17fbede7fef7dd73bfce742c03fb755ac1f011f364f268badf022674c5e16949f1ca5fd71f838a1f71312d433efde3fffce373a166d851040c3d2ab1548d9db628a8792a96a607236e50056cd06eb88941434de8a039a8946706dc5ec8d0f1cd69c2f2826d497948f4fbeac5f84ef8a0a033567e15d0dafab3f18a1037a4f78ec0ef3b9c98eb04454e9d8cee6af76f5e44ab3bbf1330decaf09baaa5ce0015abbe5b9089d03d477e524cd7d0d566a35e26f82352bdacdce856388a7d3a4997c21d33e572eca5063d6c0306564eca4782d49003ad86429ab5aea1a19044dc935eb3117ab54352a25d57272e0ed074a48c12033d5ec1f1940e14bd073634ce6a58052ae9d0bd9b7e071e48c713a70c2b3743f24026e7e15e51eca510e66da5220ed0feca013017f69b3f77f6f9e9c7e6c7ee22d51e540f25b589c2f7c3d8406ffc83028ec5b9e901e88a62e60fdaaaa3d23db515df8877dce06e2e5692b458e99ed4e5efd63f7204e2761eb41a27cdfff5a9d25bc95d42732f311cdcca24dcc00b17ad01369942782c86fd880ef136c063c965dd86728c14c26d179d53f349e5575582faa128536b0aa62a616b7dbd2af57db4e641aba695e20206717aabb9afc45a40b4fb1675e3e9337b4a464ca85fea9464ca2affdd9d021dfbbbbdf275fffd49c3fec056c3877c876c7db40b82fdf6d22dab200fbd87b442bb8250d72f59db171d194d440b2df0751e51c57bd773b829b55d94ff58da61bf7efbfde93f27726dd40df43425b4c9d82275ddbcdc0f96dd76c62d14c4439af87b8f58350bc5744c94dea58c44313dcebfa8c228de240a4b22e283cd4b7929a61647f4561c2ae53a6a9061b0b219e96c946bb3aa2edff56832c50024be6ba85ef24e65c1828f145a7cacd221711528e747405eeaea960b9a874c29952de5167a410968b9c0a7239b7f097924c626e7bc32fa73dc784a70a2539e60e3947dcf32ad13b9541f394b33e6f5e4fd9cf78705ba6969c53c7ad99d2355c05303c254f21b0dac2d7e0872c1a77d831a97df4e8a29803f25afe831ddafc1dec8058a259e2ae208e1e829e35c6e3e02c638adcc234d2203e9c21ddd3e416e647397fb54d64163855ca8d54f947296bf9ed1a9a6d74d05ee5fe9df1a3235bee8cd3f774fbd234364e33f41c32d9dcb15f23b7aaf6c1234d3d2ac9ce60cd80e7dfd5b5b3e443eed0384e43c714c5a4691c821ec17c83b2ca069a010d348a551dd92eb559efd81dc1dc96bf21041d99abaf526f783985328049cde6ee4fb9b474a415ff75a4dea517416654dc6828d8ab07eef7d5a272da9e4a8f152d50475fd4338d770b4544b3aede58a555620815d0e86aeb49a832188a07c9a5476503b99a65707029c23e8d565f906eefa0b53a165b2fd553923d54ee20c63366d307b5d9b954dc577197b4dddf5bb5341eb8bd7f41ba899bffdbc01c71c8c9e18f5f2f4526084f71a76ad784e3369ed74be78eba051a884bb7cd4cf99970d21efc8866adc7dccf70552dc9c91e2e2f4abd46e9aa93452e7d2904e51a31f346b984d2895e58b6e9dae438712de453d3cce995382799e6488ad03697e346b62406b99c5044fc8d1a55eb1a335aca91304271496d68b8159343b40decf75aefd5c5841315a672d232c6e28fb227f338246762490f6e9e00c4adb86f2ed741ec24731f3a769863395698637c3a8a7e1145ba297ab94ce5e99f5828e09af53328a5bd771cf32b0d9a53e81184e1f5ad4a50db1cbf2378f45d73fccc82f4de3adbf3a10d7b1eb71833c128980300d2c608c7064b022276853fa20dd30b3268720dfd5f7a57b313fd208bc50918b421ff43f551d29497d34749d1c55d5b3f430182d5cd19915eccf5157187cca61026028eb7792b6797fa0c2c1fdb89d42381cc8815ab653674799f17ab13a5d662e43d6ea7b97d65e4684eb476e9abe91213110b7733fd43ef250f69fd6620168397fd279c5d33c1cf063a376b7eb65d47e83c5d3d50b026a5d732e5fc5f5487b7a64a6529a380a526f7034ebf4605ea3a7a7723f5096dd3e78483d5e0c621cb124c84bfa7e7bf9deb49adade55a963ccc0c50091648fccbb4f671f0e4c0105dfebfc8ea5778ecfca492aaf83131b5eadbedae7b0fae16926f155487d8f39843e854294d69e1a1303827b0f57f936d07ade0f14d15833b77ad439e0e066a7e9e098059682d21a963eb8e2748f8af8817c95118d4b3b4fd3d06756f053f3b7febf937fcaac292d01c7e6ba7625bae87cc7d3e4f1da55f2d2cd14633f4d43c42b6a27fb507e63b9ab90119a8a37fc99cf75a45060c64e8cf2518bc4f9cc95a19c5e1cb16505908eca24e7207fd31928de666b75e84f4b7a4de7e97a440f0df8e8a7406c94565569e594342b2bee5b360683e25ddf11f84a1d81f352ee7bdcb5a334fb7662d44dca8ead6fa120dbf5d50de7afd4192060d5593d2d096d7a0fa42d72ce817c99b6019ed65fd97bb1efa489154297a920a7d757d0204387278b42075090799f23e24869aae84c2f6ea2990cad9aba2da42bfe007c288789471da614f94bfb523991bbd79e43337e23fdc9466ffb6ce5188d7fdb4b580384a9c028cccc482e80513d693e1aac2de06351ce5a172a7192b1022e0f254b8d48c917b15a81650ab3fb3013a9c864517e614808836a5e9cdce86711974c05f5f73516793413b6f69907cad6c27fa3fd2b9e43139f563c854229006584b89c2ff0bd91b903eb70c1ef67a6cc1bb5fda78910b1728d5a49e77b2a5f23922043b214fb6635238bfc658851a3a7caddee954d44e79532df7a25d48db18b11e841aa2ea41d9ea4873c83b2c520c3be37d5176b7dbbdc94df2a01bd67d881de6fab1f35bd6e3d2937005027b3e3e5273c6c547a9c297159348ca92b8cee070a7da0188f7d714bba48b2068f8aa237785e8f3a9d4ee73e52ce27dfd1bc63ef301f116b83fa678b5b56b90a659100e21f650228476134352aa780e6efeffc5629c3c331f240ae0dcb8fef15031ee0098850f88b99f6f3fb97cd8faeff438c79e67c307a3b9555bf7b925d86b33caa390ad8b7994242d53a0ab710198fe9dfe067276230d6e54da7d98525918d3e53bf22f7abffe3c91ebefef9edaf306e7c2e260cfee857651d54b2679551cebb2eabbcce4338e6818fd3c2f66df76cffe3e9ebb7ee39a38f1e12d4f52390559918f7f540d504ed4d1381c54ee42d1b88a266e0b9aa711635ae36d974c0bd493675480929b34626a5e96e198af50f815440bf06b948d328663ca80719b20a6294011aa8d5074fb9633513a0fda61e18278d738b463e74fa5c4d04d251d33860d68c7afa6cbcc140ee49200ac6db78b0244dc8d68bfb142cb8d9b4e691bc4946cb75e552c000a10410b2e1cb955b02be0d99242fc720f8f43652e9c785372ccfb7088bc25237facdd35e67bff35b2ac1746d0c947a25af8fe4920e283beb3c15fdb5add26cb15eb934a83ed0cfcbe1037ebdbfa411bdc34ec39dc9b4a10b4acde09fc30cfa413ee2120674980140aba631e2332448838d3d1a39374f7fe9301dfc820bf0efc51fe1b27eec9e0fbb5902881df0354dd7a50212794f89727b90ad0e9a20003c9b60c400ba57bcbd557a6856c0998c7e95f92db12bb254cad2df49efee9679db0816998ada8406d3a91774e0f686a9e2307173db3045e732e8efe4e30f5a7c26d34826698bca1113e4725cc418ac9aee40dc58c36eb96b862ad9582a96aa72649406220c145c0499ca32b4f495ed246f94f45bb8351353e7cca67a387376f684c777bbf9f2e5797798eaea3de5fc9094faa22f600725a136c1261439382561f1a6e9e12b6ad5189350be8ec5ed6a4d3f2c707d9e576869014ab208d6631af868e3006a07f05cda30584aa7cfdeb4816f527013bae76207b84dc41ded75ca043a78fa5b698575fdebe1f073a72bfa857c1d9bb3b69d6e029c91b9fea4702915b8f31b7d36f18f03327c01e87436acca3a0efed803dbf25b763b3e1d7a58bb916f99d889dbf982bec522db401981e7564bbf9dc83d7a41ecf95cb2328427b1935d44bcaa4dee6223f6f08346a608546f4c97573a9d04c283297899699b1792d76ca9c0d56cf1b1c943d9035ade4c05e8a08482946ce438ca07f02199972007c9752e7cef1fc56d7a04551e40f1bcf08b957c0be08978bb51bf75b20a1950b95244d06c36ca940fd1414a972d5550fb812028a88a4d95168dad6cce4d9ac817dcc8a405d54fe27366ad657c2b76517d302e0213d07fc2f9cb263e9fd5ddcbd9b3cd3739be35bf3aa78e173c208bb9693ec26fbe9e2a870b23295e1278cf135326c68fcdf875aba3b49aa874c1cbdb0eec8da58d65a0aad507551959173f135f3bee60a98eb2572ac8562c21fb63f37b179fe464d260c32daa6c29817ccd8131dc6a4c2e60796e4931c4e4b6b297e6751c10cdcdab8c824b405fe310502b8677d2bae8535974a27478942f9ef6d5b8c18623aa1d26207058573cfbc7fff77ffeb9030e95d9b887aa9b5ed66d309b040b1dae07c8a2c400f354d22332a4f12d0d3f949cdce530becea67e5030fb318388407e01e6500d5baa6a2d95d84f763ae9fba42b75d678992a367307d174425b3fb160da1e29ecf59d5d715b2c02de0472b0c81c4f4907145faa8607f7bff9480f959c6cdb31992a533f80554c310ee6bcdf1fce1bebf5befacfdd7fd9df37db7f1ebe6fb6f330f5c89edf0a598e62b23e1023075bc03805d0735d0070c0dab995dabd4db9df668bf7c86483a0ec5647d65e083c3a0366f00af228a7159daaaf33c1511692e15a23c89a234ccd60c22b58f8ae6a2da3dcbdbd2044af2a921e2c06a35dfab55942f79119273b32ec75dfe6f6df3eedf79b6f5f26158a36a0249a6ff9cb0f17b8950bb19523cb82bc2817d0cb05e2e14c533fc86a1017345b2e3e73f19b9d11fb2eddfd4bea7a9b3f4aea0ff2ed5fa0bbffb040c53e99b82aeba23b59f8b85ac5b9cbbefd787e1a270e12a06e647e441b01a856396340aac532e31b4875340ba08f1790ea59e0d5845f8154cb597ed98dbb1fd3ac560e0e4c629b3ebd305ec0cae697b6a15b81b9b65026e1db08c7fcfdcb2e045b1654a22f6677d6c91d7f7572c78f4cee8cb9dd3911297c746a975766f64e7cc9599b6441fcb94fab8b5579155587b8c8e2ca1f86d80573559b724739ff2dd985a85be38add2de5d82b305a5cf461bbf9beeb38da5bf03eae0f0d5d3fa8b38cf309abbb6cf80b8d7c8d133aed8b4dd48efe5332a9dbbb8158d65dbfa528f32de0a64296ab41bb02be4c4185b629b620289bbc45158a981036db4ce78e7ffa3e63a6994dfcb082e4256c3e9a3ad840313c2645cb442d40fe44ad24f93b736abd25b614c39854e839f14c242ea30b55645413a5bba73a5fdf61f83ac3425f2c2cbafaf979f5d3cafb053362413a24208cf476d1d0ba0d4be0d09be5efc7e6f719d4efcef3aa7e7c5e3d7a69b2769fef2ddfe33f9c04efc52efed062de67a17f4b00eb52fce54adb9b759dbaa5e2e405cdff33152768e2da5bf508e229423f3c601074e0769565735a3c171799c2bd5c4966cffadadd799312e79fdf9efef5cd1e77c3d7edd9bd0a2f7d72872880f8e48fec4da254f388ad40378497e476938f1f013dbede1ef1b61b830d172476f28ba7bda55a54b91ac4afc881001a1e3850700d01be04be03e648c5f935bbc1526b75c55e5c5e198850539bd0f6d0cc04984f1c83a2d2d598b0289f561604f69f3c70657e46973148f1a2c92b65bfc993204605ef0b8f1a3bc8e1215069a008f7b2b67931e8a209ab42a53e540a1ef413cd3420173ccc832d95ac898e98d17ce2cfd542a58c5463b4720317086503900d05fdba5c41d3a70f80de43d9d0214a5fbc9a475b4834430fd28522ef5e3ca2047e7694401699bce0a5caa08e0a65b454b2ae3865a5929eb122315b2b451f70df423b5068591ef4e70385921e19c4812e44ca55a9c2624075a186eb722a14ea45443bc430139a3aadd27aed33eb86e180920e691d71234b3a7d4ee490b65b8907edd5831e37bfefc6be59bcd30e5b02bb8eea8b224be3d771a847bf0a471eca9187788ca7bd0d36ada36cfc43d7780b03bb75934fe979fc5767bed28a4565396325154b6ca9a64980c216dbd387fc00bac100522a64104c35e1a07cc61905da1dbb05d7b59868faf7c88307ddc39344bd7c3d806da8cafe5427c0179bfe9dbe5f018f11c02481631f90db75190c2e8c33c497f404f54b8a274d908aee57325f30147aa43123d5362256b8edac1b1e7ae000981ce6ec2912a1a3180349168a2a7f73110ec26c28552757b1f2815771a66f0133d168c14380f5cacbdffc753042b322b4dd7656b9d6b820cee3b11a8671a2b2e44ea1b1b14bee6a2949075cde126286d675bc53faf0b56e556c3b63314eb8adedba8816d1214aaf9d7953ca9a984ca6cc375e8858e18b449efffef3d6c1f0f4b3532569ceefff67ef5d9a1b37b2e5f1af52d1eba90ad4bb6ad9a10d17ec9523b8bb0b9a4d373486a4fe8b6ace8c3efd3f4e660184488892dcf6cc9d1bbfb05b2f9240a19ee79127734e79414275a08a9b0a3a49564cb59f2db4c7ec4c810c65fbd5c45536d5df34ca9924a75d95e541fab6003991da18c5820972c58ae5b633543eb6b12d206db89d83d1abf11cb9827af0a1c16d5cde190f3d9000c7933a15af12a44f4fb603d3059db9f1836b2f4b281a576e9a7b8bb21d9fc5cc545199dab831ab2cdec38979beb116402b850a3c210ca642b1431b26f6b170f10d5ec5c5cd714ae3e39977b76ebabd95fb58f73621c9ee95ce6ac2f0cb9d651ad03e83195281e0c29ad85bca5601ae6e1bdb064ec078d6bd88ff65b23192600213051b68b53b0c2907142a21e71f3fa3afe78cd4db1f4f0fa31759cd5c3620b1ce3d38567457f178bd89553bd3d5cf0ed4b66e4e709b5430f155058126660e7a4be826877531a0daf547ed8ddb9902ea3c728c34a691ead5cbebfd9214bc265cae7a76643e75dbd11bb7f62cc4002515e077940a27923006f50e91031204360c21fd56e9862c33b70cb2f441fab2d40f60308bbbd7950bc0f3d23832d9a275362033c9d2fc1de4649c23198b9e26c4eb17ac5e33b10ebb9efd863e1d00bb9076369c0d05693c49f6c090b474cdc589f2eb76181e46bf333057eb9ad411043e93e9eada3a13c4a1093bc29d136a2bc5f983dcfdb835e2e93a166d5a130632509884ba3f108466247233e9afdeb1c9c4c8b9d30572c68237a5038ca3de580b8f1bd0326b1cf8a94800e49b27d6800958762bd9486f924c2b48aa44f93b92d78b8fec516e638218be05742010d49033ff9d821ad8a7008f251d905c334a7bd38da7b87c4d0afcd4510ca0371fd7e1089717010bb1502b7c07cfd2ee0f8cce6bbb9a7b75575b78de616afb0eebd4b37aa6444d32b20f4dd4ddede3e4b7052aa2427203dc3d89d53c19a03c30d6363e53704a82dd1979e717a3269f5314c021ef5366f5b46d24b7a4e485bbff198e0bdd97b61b14d5dd24729b2403019444093838663ea161599a45065d7f134c6ee0259f945308ef5d1a0cf249031c22c8d3339ae42d5a04c447e76f783726c5d182c29c59a40e0bb19468adb10e5afcc9e4f1d314f3af84367acd3bbd1c09859e51d29fe4707719f46b20f8f6e49f962792365830d8a11de2025045b5a36754756b904cb812304ed681f768a20ef78d671ca3c461583820f1490c308792a55c10ca9236b551bf6163aaf44012832a8e442a2c6a2f0012a22df24311575c8c6a93c79d3421420d96d18ca2fa713e000aaa2dbfbe3e688a75e3607c27b233199b6faa2c14674291e3007cf9455977003f17588ea99f93471ed6262066c9d349993b14c1a22968c395c96c15abf29bd8205648637b96ad272234a502db1214d05da51d31302c8bdd11d69cc801ecda874fe64f56b8c95b2365d5a82fd83887f13037c94408de2ba85e0655906e8a8dd50aa364415d80ba3e07633d4dfcb29cb9181046639627aec260b16608cb80437ac371481811364086e3c07bc3ba6a1ed56cf399d8fcde6748ce98ed3a9d6e60da742327ea7bde8e709e7c7b83368f60c2f7d3e675977bceb51b7c699b1cd2f334d0ae6b917cb077be940f8a9d741f7bff8b117cf8f15dfffaaf368a1f1b14153fc666e83ec66628b34adac3c90c6ef2abd7cfe20a7e6c0e7ee8fd91f264ff8651e96ff78fdbc75dffaf934c004475376280bccf7578cddaab8dd0bb602f421413a210382a024a07df7987379d131845d87a4be3bfe73d101b5cc98d6efc64763a9a9d6e5c51d3147ce3ea7f82f3d07a356b0a7f8034908d44739b71678bc9fcbb8b6a7a8cff7bcd98cfc3e1f67ebf9dd2aeafbb10d2f29b3a8d65e15816950e97ef7defb8cf2221af1bdd626b39b16c7c5219313fb1406d77587ef7bb020f3796c94a391ec5770aad0aa0f5c9e1f7fd3fe607df87b64c2b1dffc12df063478753dd074ecaa4ea4755b53e78907d6ccbfc607be6c3f2f0f8b4ffaa77c38fc3d3fef1f0c7ceb30fedd71fec6aeb3e78f9f2c1b1f9034263c3feb7a7cb3293d44a13a3fc3e22f14720fe88c31f61f8ad8444b38644b72a156b5110025da6a94c45b732151d4cfe7fc520af15830cb7bfed0fdb23b347d5840ebcc839a49b626a42a4a35a554ca871749876da848a68534da81e960303b572310cda64fadf59463606243d0a64bf5c2c0aa07f395872604145880e359bd23ff0d70a2f21fe4f0ecf77cef8201de801262dd9cb8b37ed9a1505d2282b93ebc90fd0d20dbca66e97f745e3ea032f2a57d8819f3e78695530558e37a49159f41a2acbcff17cd32bcfad7f021e746aa4ff1c1190882fc212d24b78463602cd4123e409a73e0a37d974dea9603a90b876917ed88e3daca4058cd2852eca6d9fbfe0ee403dc5356251d194bad406d7b492036eceae96f7b32b7077f4f4676f6a952558eb08b26ffd18407b8161969bead60befaa5f485b3ae5b8a40e8abf352a154ebc6ffdd3af3f865f39f13aab6c98739c2d40162ed4280e0cd4377e42edaf2372961132a79222a7adbd89d421f7949c80b655e75530204a6122c3206dcdc33ea8c87248106483233c9a107a68069c48b06c855f1d6ea8da8124a2f52a2191cecb43c30ef19bce64087b007fccaebaff1da4aaf89835f5152c5fd2e91a2115486797112b30779eefbc291184cc6bd462811c967a252d1d4b39fe84a033ea3b28a031e34e6410dab8802827df34e69009cf84344fd301f7a4f84e598f2257ed075c52966048dab5b84c9df47909f24459bd2c336fb2d34d4f0da6a545dd936d55aa136b0a0854f8d70eba427817de3ff06ac4b9362161301c525305c5516c049b0342068688123262d278710ae5475985140eb113350b585a3ef454eef5a79251e89249956743e786a953a940d3441b5a96a044aaa88526a63663c354ad60c305c5a834ded732f1e44ca36a5b883b108b5493f278d7591aec3d1dba45eac89b3a25b5c6eee4243f3c8d54b757b95adf26abb5dd4f298676fa2de8d45ffa79584ab78727bd7b187edcddd3b64cea5afdcd424df2090fdda3cae1a232fabfe7e3555f56e5bd283e8a3f75fffff59f9f26c4d7fdd3f67638e925a7b7388bdf401efe1c65b10ccbbcedafcbe85d5e68011cf825a9f8534ff3d6aabbfa71d9801e76dba77d43245202f77332b5287c198953ac59e0359e313a2e7d4af6c825b6d159e38c954f25a470d24855979515db74635f171e3c2e36533ea66a6fae69773fdf69a4caa261d6459b46602c065fd1a61eb4a95ece8c5a4cfd1c4d67b3e2575a7ae2391539e90c9927a8d4874fa3b20ee11efcbaf06170f07b696017c5624aa6e23e077c2ab0053b6b6a26a61b9e0facb176846813d1e8ca36cb4de5631e3f6e2f6ea8a70f7e38dccda9f1fb4881996428dd868ac08e4a49b6235b4a51dd2f817f8243163779654d9d284d4da5f4494da61e93a9648b2750586c446091ecbc0a996772e40ff21a6478c7e927bddbb2c955165046b39868ab78a966689fd57c70ca94a2d08d7993572dc8f4f04ddf4e70f7f21ac9acd757b949d7193518d767b8782ceb642044f651b8f180daf7a52a95e7bba0cbea12413d5ff747ebaebfe3521a7e99a25f7aebe107e1f379e41fb84ecb7fae637fc9977e79f7178bb488ed97de350ad671182e1974cf8681606a9665fe49e3f04ab5d0a7fff9dbddf6fec77668a54ca8eb47c918a8c82d3d809c29d15bf28d75801078e8c406633d649bc563b2497ef346bc569fa0f29348326e3a71000872b07ed5b50308ec2ec02781cb547ac7426e8716bd34da5139575cfa58418e446a1ea02fc0360e2a3af0fd241ab4f863308d9232e0d74a3d24900ac5f12fb1a11c0115a1fe38da9a7b60a7ac9bf89948948e0f9394a7320b4ecd4e329ff18f61244a9ce8c44849345261f28f14bc42016b1aab82106aabd0d7c533420f11929b76d4ef6cee0df46419fe602c09df5ca21367ddb34c7d273e2865148bd72010023b8bec6d7e832d8fc4440e62c01121336b423a5613f3f35dd6a622d05c49330f65501d957cda9be0762d4d04aa8d02ef2b28c473d21132ec588f9c5a432bd7da7fd55fb74fdba697517a6f721a9cbe5e5b23fe82eca381fe12d3ec50dc4e142873e10602eb19da300e227a01c91000d6b1a93bf0c6bb00dd514b906908244b6f02e98149afe72f56853ebfaf6508102f606a439189549229a6a6352abcc4e379beaba6469d4cf0834e10dc211bc9d88a04fd1cf9e2287e19f2f35d204d51c86bebc50b2c0bf52ac046167abc25a1cca126240be2e0e52f96730b5e6d086b79e1f9ce7a1d7b8d5180ccc2f53a18ec14dfdb3611e5a0b779d0181b7f5e3055013d89ebc892252ce8988ccd0bb549d87371ce7ae81726d9794df14340c5d8f6ecd296ab4b5e85e01074ac2185b854f82433a38906faa64e969af26ff1cf5fa2b2de84243bb73bea62d2e04c45d828edc6dd244cbbccb198f47c17b5331e9c9f76d2865827a8eaf94d30251d4601024454d6b6c3e8c9873338474c05a37845f837ed6655e74d9f989c5f6c8f57ee584cac6d397dd7bbc7fdc8b985129fe28e09b4896f5f71938c73bb56393f825e1269df5dd36b435548e07b7295d78ff1238f3b80b2cc1a870a7a31e8822349be1d49f26b91c9dda05708e7d741f6171944b7fe8f4e14397b7660c206e98fc3165f48a6ee11acc99ee27fce94f07ca7b184c347e60fab162f7588667559a1bfe616f44bd6cfe125dbfa9b5a3d3293eeb68fbfb71ada624252dd4d3481c47135b24a093f459215d5c8ba43bc173a8af87e88b20d83ae003fd9cea47c433b1cd7b0169c1ebc05e81cb6734d469955fc6df617aaf4df6dff797b77fbbc279363ade2ccd457e813a6726e56045eeb9f8f6aa705bb4e062ec48256d754152dee767d23bc4d91066fc44a4285ca89e40785c3ea8a5d27069b7cd95cd1b8e7b4486cfd4b55bbbbfdd7db2dbd08b9694288fad5a79e1d67b3e30ec7855dd2d47a470dd551db6e510202d5ad5e5be5b4d7417b158f3af7d61d33db7dff83f642f8d9a0e35bfa4d6fc50cdf087ebc1d33946799533ed9300e45bf50627a30afab69bc8c120044b0bc2c9ad80b2a3047e293b114fd55251856e61ef5825ca1d7d75b73fd419eefaa2a3ff3ac532f3e7c6f92d375cab8fc541f7632b5ff839f6ff232fe75b9186c03c7656a0b6e11aff2f31c96bcbe4f77fbc76ffb1721ec38b26dbc43af461c6b7fb426ca5105c127280283c5c4a43898944c4a9707d5bb1cee05493e6f8a1b34afda50f211b2afb1ea76cf0dfcfddabbf749e19c847c0a857c78babd1e630108c346d52dc654d1401013a5b443e3c40540dd0c7960a485d267b1d7ee4f917aca947aca947a5a620a7ab7d4539056791c9dd8e35ca31f440bf5d8fc35569a2d97e1ce85f8f1728086936eb8bdfffdd0b8532fa5e64e8be674b9b3a8f8c73f3363b479ef6712d92917016e96ec4ae7b440b189d52b7f0c7f26b46d15c973fb3a51d0a6a096aecbef82b4cd8ae1ee7450e7827b8793d09e7f29b4779844fa2c12df77b7f7938986e891a9cbbbc7c4a232da691b64c9ff3433cd3a1306593efec41f751189d4b693f3e74d1b6da2502b57998458ab60375714168f54a04229889b3aa39bd965b7f73f0e4d042eaf2ee5863f243079f7f0ebedb0d7dffb87fbfdc879d52d8aa05e746e79c702fe5294bd96095b2686f2daafe2c6f7e958e78d3cde7e6d3a403662415f9a2f6b84c2967493dfc5ebb740e2574db057c842cedf1e97f6b0bb87c65e0b1c962f9fb3293e2a7e1d7327252a8b1a122bae52878982a56ea05711c413b572f680893a40b07e87626ed973c54b85032e2bc56f71b96ccae8d94ebfef2c2fe7e8be47bc5d1b1ace0f8f4dff3899cecfb13e6ac4fa34e4cf3303096fbda9bcfd1edcf6c7fdd3f6f6be511d58bff243d2b5c761d4dbc1ab0c16baa8bd8983b6f263af79ba6ae9093965cac04d194c9bb27d3d8bff1714e24dd6399556dd1075ea4d6d373deecfa9b8de27bb573720034309dc87c8637083f7283cbf7e06b77640717493576343feb051f03ef6c0b7a4caa519aaaef2d1d38c6283ce096e92b24bdd3b0295069c656feaf3bd3e46a37de2aaf19bda4f6df97842e483ac95984e3fbe1dfa87a7b6c8bb7799ac0ba4214be2bac4d0193b89c4d4a6c531aac242ac05a137c763c25b8d0a396b0a686b5a5231e13d887fb7505fe277db7e97c953c01492aa3685317acfde691c972d44c806b8a64acb4ab6849674914ab9c8e0c6ca5a37767d42f430352911b001543ead98bec91d35e4559a9a2d32a310c81593a9e18d6c0b4ce24ea55d24f12288ec237bccd8f54d352e8156870205aa49f3b356d5a50600f3adbfe91c40fd17195b3fcbcdb44763f77495841640f1faf643b2d086616a85a13f87873489721e2005476e269a843c934bc659248a333acaa3433334f56c2bb643e8942a17a67314bfe587c06ad84140d19a26a216a92a7c1217ee820956da9d01c343ecd4a2e44fe64a46f08873454e160e6c9daa352146f2928efdd3dd8fe1e9561ff6c37ef7349a0bded4b26831f4e0e55e50cb5f0a12f82505e98f5c42a74541f34b21ff0bbb65f97256c51578c4d3d173891f48682c0b1c4234a3c89cc7f6d2858de9dc2006a38c94bb0100d4c9fc6830efa0fcb11a60adc18c92b91a64a5f2eb48026aaaf6ca1d9abcab977f62687bed3608dccbb24ec768c2cf5c69d9dbba6f9529faf6697fd700494bdbd91f72e7eea2b21786d9e1aa70ff557df765acd43bdab638e275c149bc665b2f842b17a651d06129b87e25987f35ea13745d8c25fcb1f1e8c06f7bc583b8c6a2f7eafc115f7d6281eb9780611fc83d5ccf7b2c6c0e2f039dde44955e640f3aede49dae17c370f64ac3c9f7977f95f76b3f3ddec3af7f1f77bfa2ce442e5e17de88af0b6ff4e36a7c4579a39e9437221da4c4f66de88587569312756bf72f15ec28e0a751f9a84d5cd59b6cc0ab8a7fd1a0da40855f32c0c11120b8d89bc88640d23dc997725321ee524c136d80504c377d2f07f97e12ad49aae8d29ec552441f58256d82fc5cd0586fc2d49bdff78f878731300b5967905a5051367ababe54d36596b0be62bc54c30337cb6d32339b212c1a2f9429ecea49248a55fd89d621b9cb92a7f1420085af3813338d9760a19c9f50866252813624263979c4597a094d83dcf2a930246213f5afc0d281fda03d24de4b088793a18294c9c86392c40a13e325b1f644ac0bb1ee10ca34a1a215259a0a1a1264cedd1c5902ad7df48f7cadcd6671a3f192c368bcd491f707841d1544499d07bd1bf44c92c9305d0a04beab89262157d9b8bf008c09af1a2efc48642929502c3472120d168a588171279800804e46fd00514d9812d2598e012acbc09035b5054e336aaec89287efbdcca503acce91a3050aa4ac75006e869e83e7e56b14bf162ef6cf664c7f265b7b5a1a8ffbc3eef1f6c45e5b018b90c37d7062253b53f20e1de730d49ec8227a4c34af7d136396f7a45e37789883ed122a3e95bcf1d0c00e28b503df48d99a50e41e27323cf17bd6405a2513e574c9b30a0392ce60fac1ba3431cbccb73227728022a06acbc33248ec5bdf83d150961d7800359d0e6b3f07d0b98cec9ed104675cb84159575754a01e9e87d3ba32c9deb0c407127fa87f48c76a0a246c65b548934db226c6de945db3ae1359dde45b4c9b646a5d79e3076fb25781cdce5679134096e60c563149a8025d765931be896abbd493c80cd29f7c5407320d1f064b84cea8aed3eab09d18f35eec44939cf1b1b726f891dea892728a22db8e9e45e58603c4451c60c3cb09870a325b545c5953ebc699cef50e1aaa8905795de14af745e688f8c4a86a4a2c2e69a83a4ab9cac6c9bf52d29be1211408f1f309198dffec0a610e4f36748002b9cd047c4d1b67a89bddb917c27a695a574ffb7f3ee95f1ffed9c48b12b8c7c64d4dfe6328e3ec8f076e22f2356e726f4d9cd582b5bfff524d2e2ae1dc4d8c1ab718251033d1c4ff059d77a79d5ab220577e13ae235f17f8bceda5c97e71f34ba666198afbdbfbbf6f5bcc0f85b710c7b55607d3e81b6fac659d5ea9ca76a49d54e27ca11292248491d01915e4fdc114ca01e18d06a12734b083003f9192107694cdde74bca14999457bb121ee63b3123b59b22891ac41074a2c519851de0f6648c873e9643a84ba49075898fe899ab01f8845fe928dcd30b9c08f73b07274e6966689bf14f9108c36f98ade7978bafded76b795bdff300a4c9d95fdafd24bcebce7bbb4507602191a470a88ec35e8388301a92f8837bb302943cb2e73cec5792a83c09a0a44a3a250ec73005b6a3871a68aad3266614e01fdc312366486877ff50c9cf741538efcfae9dd9de18daf555b6f52ca83d86cde04f234cfb5b260f9d6ba1d251bc56b0612b653a690912bc6624ac6ae6dc340e642f9cce5b5ac8ca22d6173016f5992325bd01c9b6746a6e5330ea09a0650bd1cc086d84b7a3e84d3954eb7e6089e00c5ced82df20af8c244843301d589ce7b08ac41fb453a108ba6ce2148b64540d54cc94bb390954720561762eb13365dcc5af1135c9942ac3002aa21abdc5451250e146fd442aeb061bcc903cadc11757ad918989e9c383fee7e057678b83dd05103a056366d9736e0fb86947080f1611d0e5b178162b4a4796d0477a19075ab9dbd7402124c0177d2864d0458a7a3a9bd98d39bfc7ca7296101b2adc29b64de0471cbaded4095ddbe8d016807f0f5ce9023d793894d1e3c5a622f2b7ac357bc962c9d18820e03c55e73a0d47ff3541a4b5963ce74a9195cf44050e65a4e3698f4437634173d898c135fa67d8ef7617ee54c7c7857a4ad9e2d8805dc6a058032e7603a78323c878ad0aab523ff2fcb8341add75bd82ad0610aa4ae230169227cde31a829fbbf986af4dc2c8f549719b3a62a705789d9f55434f4340a71b92076ae75603e2b20c62b3067205ded703940447d3d407217b0ff40193897275bcc61e3b79c39de1998dbb4851dba324446e369063b06bd2389ef32d57e237e2970af1a271a9e0f6e6508201d0e80d6973e1eb55dd12cec689f49478fb3d353de97f9099770755f20bf8c92875a7bbd14563d3fb32f8441e6e19df0225af4a75d4e0eb91f77fbc7db1d2b491c0aba4db2d47a6e2c931e6b30303bd1660120d99c5db34598b908f3518c062e43ebb8e2c37cc537ba3c643f4db2cf770144cac6dbb65203576ac14a0d6e403d49106bcf62e6b2c2856e833d7091162ed2bae3e6416566990ad22a2ed208672bd229879234b30a81cb4d9657035963305b66441664ddcad452f83226cdc46fdb358af1487533900fa33ec3cf576969ab945c97c89614b6ab92eacfd1db2f6330a136a6462c50d4f1609dbaf932a5d27664454aa6dbd9124181c2eb89e52db660997a87651a1c733a5ca571d41d3dadd288551a1aadbc58dfd210d4d8d4f6772edd809a1c59cc11b4e638ee64ad7a4a79cbd839073495e5a07b84f1a4cd890b199b5962175b2ee1841920ab55b6741e0824572d62d98fabd5717e6013f58df438905c0c0bd6d8b84aa735cb7dd99363b239dd36b634291265213cdf155a8a1855cf9c186e9f35221c291e4960e0b9e213127539c17f0724bfe2f448bef1349032b251d1cb40dbca02504f52ec08bcd08e9b3a4828235ecb24579902553c1435bbd28f6498a960aad684a3b0706e7b6ceed9917d808f91b8fd6753fc69fb2f98b0b033ba20f30ac94d9958f8ea99378c85fd571b132d7d2832f29c76ff3ca51665f7a78f8e0888a79801025732d93dd6a5cc161975f047205cc0a42585e323f570d19f8c35fa88deb0c4f77b4ee0c8a0a0653995673ba32c832308d87051cb5c094e312713ae73b200647282961546855cd179d9c903e209853b0c561e0b8338dc19a73e304107aee0a451489b8001a196c148b8e138c25cf2ad1caf455c6c8614a7344eccf89cdbf983a1412823598c56440778e9abe0e47d3160fff0e08aa82da8501987a1ba62e4d6910c471a2b2acba61632376b1e7064fdcfdc085d462015444d084a45c6aeaac3e495b52627c5c36fbfddeef673e1ce3f0613f5471dfa700c9747d4825ae79748ed8edcfba3279c9b1856ff7c17558476ddf44a1e5f09d0ae9a29b4865e3ba8dcf9f624c3edfdfe6754e093b261b03aaec29074d656c5de0f3a29f4d4a787db41ff76bb1fbe4e724ba1d7b2e3a28c20e84c395a5458934108a5363b6cb8a08291e140064076d8c24470e012401a9cb16354dd94ac836974ba19f52f3a9884886ae24f231a3215f9cdd2ebf5f00f2c62c70ecb40ce59d240bb35f9ffba7c349dfd8c0af232a1d0ebd9882a6311efc351ca7a1b7e70685a176b9409d9b010bc98c753fcd5701368798b29762d7bb9ca06dabe20d42c038ae265737ffe92108f08ebda4a5d10e2b661257fe7e0dc8ff8e94f5365856c15bdbec4f12d4ddf05c36a0172af13023cff0674bf4ce81f4f70ccdb8cde05560415354de44e417bc6cb99944dd09034cf58e23ca510ba630882b6150ae461d359255f79cdd932b8e6e27ae351055ca1709d1437d266d04485e30d1909879db13815d8b6a023846f34c8af1d2a2bf11f2a45f1e7241b710029ce2a7e8cffe4aa12b3c9e17396f5985bf8891c5ccf77f6ba7cf5f7edb7bd267de1b8dc4d5daa3a5920f0582cb8b9e4f0b8d3d09c76479dfa70a400b1b428f5f90856b04c98846d1bdca7efdbfbfda00f4fdba74313d586b2b1cc7188d6a7f92f65fe8bedc6df3efd8d5b179e24cd849f5bc0f1947195a798a755996c3e65520141752bd7e0a4774975abbaf17d6cd852b6f68530f49f74d70a6de769d81286cd11a8b2f1bd3f568a3b776d749bb8f3aacaef71fc58dde4f92f01bf7cfa9fbf7ddf7edf3fee86dbefad2c284125cc7e0eb205054a55601ec1dc6165b78d886b8a0524531ea7b8776b9972d52424183dbc1d1e0c3c219c71658b624c4f420c9e56cecb17b743b893ba995c77f8f890650965e3a154061701b9bc5a209c6632e473015c4df26ba40c539795b8e73b38130e1456404b59530ff2838bc8ffd8017b03decab745c413f0323df6d8fe4f54c07183348602573b98f619a468639a873b4f8eed9fd72cc44453d3ba1ac733d2d2b67641a1be1fb5ec01be06d15561f6c533cb144c927b9310ddbf7c32642c4ac19f022d77f9b5b338c0e4fdf249ff39507b35d853e56934d112670ff70105c61ad6b5376d7e3c6ebf3d6ebff70d296e57e9c69ba2ac02c1a4722a1eac29a4506b026b73d442d383eeddf9dc9fbff8aaa83b5bf0d44fdcd35dafadbfe170c026c6a489bfa0c8167170bfca47bff226dea0f216450fa8f055d9c45ff03790c61069ba8a2f62ed2dd48e4b061cf851ba48d9d8c7698a2222dfa8a8e3611e9e47c144256a74f9edbf883be101623551256e21afbf391237c9476ffbcc53af0ffbede3ae3f196626b94183e36d534d864e21dde6048f46ac9b7214ff7cd0a01ed8402e93fe19024a0eae3f908fe9984ccde3e52e406e337b66638d2f836736b2884b4fd427e22a093e54cd6b2c8a6683859ae4df08688eaabb2143a2585e74b2da01230e0c1c896802f2fe4354fe48d9375269b4005c345d39d0bcf40d5e89b7b715592252b03255e3f8711270147c1c8a48e7e9b7a316476907fc4a532729906c904e4ca0db7dbd1476a994f5f92e5dcdc32d5701656c22b2e734f20d029b896a06cf3406000c24e1e88daf835576839423e3b1cd69936e090e47e335eb75b915de3075b6830b9981018dd66454cfdf807ab6b3ac8304fd4254dd2f917f04778a827453c52b75670ae52613028d8a21f33c884b8794c1ae79b4c12196bf5c483743c21b10c086e72fc87add6413b3a2c46f90551690328b59411e571ed12b87df01f8c7a9e6992d53859bcd8fc39e7045bf0446bd28f5b8c83e5d968cc05858a22ffd63579356ee1fbe0ffbc63a95aab220f86dc0a0c0807b8337e7d4802a89b1775955b449dd49613056be39f19bb30cd9206531a25e9813c25792cb783bb7b90bd1539ea1c78e886b020e18e168e1bb80703cb2a15d9c670c1b490da325ce03bd1d339a56d3c8834026fa96484804b2370c3b1e34379e50201bd89686aec6861a6698af11064ed4ad233e3b10982dfb21204eaa89f620721902223e88faa76cb2810c5f867b8b583f781f3cbf02c3541b878ef747d3356dc384588545920ad02647829fd0120e41f35a8c11332c846639b8d2d1b06dfe447cc1279e8483e433c1234e960192b247c044462ea16a6295e3c642cc00ebce3b53642127ca44559c1b992a57ed7b2febfdf9ae01ea7cd9c92382e35f9e6ffabe325d3ab4093842a5005ea6dc82a7645345d6356ba6dda1fb83140e0a0530ab22a713517b882a5ac63273e399a919e4c9d8d30f2387eca847ba6ba50d8ef3d8a526b1531bd308f30754bb6250b34ba7c9ea6b9b51cdf5b70c44e3efc4e831c6332209d388d06b00bd86cf233c8f2708273cb033400d449cf408c4e1da9083d22601614dbaa5124cda21715880c9b36ac2e49d28a5701713f0a51878e3c8e221c57b444d260f3ab92a6665c27cf5ae4d04c6e6e9343ba4e898ae28b0df65669fa07f4870cea75d98bec9c1593441796205b488d0d1d8b29ba43bc752019c5b0a41cad8e83d80ce83c30df81cb6b8c7ddfefe69fbadedc6093be15cf46375c1e70fd0ec2c77dfdbb3e4fef317e0784f310d263879e65b565f8f081b0da84e83ed3037e5ca64220081e35501bee683ad3842f162fe28cf7708dc5ddce3f0a1263ea38a62b1aca9c85a1b34a84c6a3b2b28406a0389968389cb419b924d1c501c880f8e49d3968ac042776dc00e6379a278917261d0c127426e1dd39439ea20abcb01c11bc88a649b9067e4f164193f6f1509d801628beb7ba601468c6a9e0898cb0ca1db902891ab3a4e0a5991897872a745e0d3907ecb85b04426780252d1d2638df892870e63e105e545a81ec60291878b48ce0096f7d99b04ac5fca9393d5c9bdb3bba90654e9aa20c2d959551a6d76ae6364d345bad548cb59721561b960ff84a269492741c9caa1c35e621da0d2f01db065caae1b8f93178ccd2862e1479c0db20b14a4049c71b293439f5266577662f24aa7041c6f15031d791cbe84e4fa61a4937619acd4ac22b23c0e60567308696a70b7eb22d297845683341d4c0ab2e744b1bc710dcc12883120f6d9f6544595bdf6436f23a8e25a9be0778ca2b009383dd4238f15e2ac99deb5f33f696030c5d10504b68b5b936b907f637614bb24409b91493056ec65bce03c962138973005e10605267c101c64673b5e86553e9186876bf4e07656a0160b028300b069b2c655b1d402c877c6ba5534c4b652393bde01392c10c9c9698503c731e385dc22fed2dec5bd3fb05591adb234833036e2c2b99b48e478902ff021657baaa62bf247ac1f785404c4c117a38504930c9073d9d0e01306621814a29d18d46c6abc29604fa7998172640b9fd82a9b76062cb7ccba7a9004e2f999f9f6b498ca98926640fcfbed5eeffaede344c0898183e42d38d7b3349c3f24928c7b53e48fd6ab4c7adc4c2ad94e7c07b95fb2f277abd32a6fe472082616d51d4b5f761d62c9f3748acc36161f571904cccbc8c5080ad788a0b189690dd0b16c4037ce14b9dba49eddc97c56c94408fe42cc340098ab829c92f2454f2fe0cb0e666ef428922820df9309ed0684cae56cd8415138ca5aea0241c3d29371dd9ac9861f59741a644a64d3b93595533e5cf38a0a08f9b2d3442851e15f53cf31005d452e934b568c234a6dc53dc3971d561c546c3d79282d7b32d846676aedca5e4dc75ce4393617bc0f28ad5a26d4f024d4888713ed853ad15e34aee08f511270aa1e1f9e669162b748b5bdc46c75f1340bd567a0babecc60be7dad85b22e944bab605cbd41325cd19df1721205b8d07fb4e6bc364691a937955fe59fac4267d52c6068155315b5dfea8f73d3d49da396b99cca2ea8a8e326ff44cd3e297c564bace8ef209058ac93fb3e6cffd5ca67cbc43459e9d2c8665cdcd05c229d7433d7dd6753539d518947b590343c0f4d2806eda77a02d0bff2f477aa5d9bc0129709c74c48d8b3156ceb8c6ea482dee5750696eb7c24e182a265065baf57e95ab8041f867f7d7bb8d7bfdd0e4ffb49540eb9ce40b177d81b49eca3752577a30fbbc927f50c88c876782e6afe428ab0d51214d625ad9d29459693bdc1e912e43c9583186c16413e17c8d0218710f5794c40900f9c3ad91d83895094c2beaac428c70b67c27a0ae04d7c1011758885f4f82c6a44e4b4e305f1ed421f7614d8a729b5b641d5dd5810fe0a918fbc92a1b7c2cab2ccbd3e5b6557dee451e7d1b71a9d665167b7c9086b028504d46f010237bb0991dc8c12d6e80d70481d057432e225287f2f4078b940fc174ccc2416bd1f3caba7291fdc1e82965be71be884b19a0cfb5ace1f57a942f4fde11f94be2aea1d1c35339eff743639c15f68bc3b621689112ceebc93b18f8a85efb07790c3e246a3e24173dbd15193b55d6c72b105bba41cb0cb1b71a96ea036e42118a31242070037cccd9bacf2216bfea23350e0592cd6241691ad3ae8643c0bf3bf3feebfdeee9e6e8f7bbdbddf0eff3adcb6e42b42aa4c157504fe3603de551aa9ac0ca862397519c86c395809604c8d0a19169b3819e1a698027f1f7c629dca188b9d36f48564e207797c84d8d2a93cd33590ba6708cf320a094054696404ced87c230e21abba5430255002dca38cab88f7975323b5763762cc6664613307a218df8a002c55fc11c38ba404076902708c597a189cdf2537dfa8c2116b18019fb6b091dd893ec7514fb3930daa5554c1f756f0f5e421426df0ac4c66ff54a9f3d68551ec8d813a3ffdd44a5381230476b75222ca12ed8a600b65e5552b66425a12691fdfb2b816ee438ec015d44c59074d610538a1a089002f74227b4968b1d7d2f87ae97c4487f4805c0b7301f142c7a8d77062fd4d9075da111be81a36b08eb2f7be0eacf985730c1fbc4e2f9b6a3961100f257745fb46760cf18365d9803dfc4571afe31644322ced9a03e6880db4bc3abac7a20ba4c741296cacdd0170d764ff91a1ad62a34b5f4756b2c41d1249969860b48232d7418f46eb18afc871d0cc5e210e61e96072af26a0b11493c34090af0525936bc93ae9b93a69e426596c56de691ba8126101d039359fae68ea85235c5306cbfa3b5b1a4fa04528200496523601c9440d71077c25c0b18825333a52f3a081c7b234e01b56d07b4aeb6674cc38639a30be6bbc89a8f288806e1b42a7138f4f200c11f7116b3f6daab1306d193dcd44a9b755c4a28200c7ca471880b1dd1cd19baac59bec38f0e27dc7e95b43d10734c1c44250b2e53f78c744ba221f887cb09faaa97d0344360e6f7980b11ea1dd8d7bc418a4e54f28934481642e60da325d3d72eefb404b8da07b5058221e3e2ae1031a27c398fcd068b4530b88851ddbe1430b9a8db1339cbec693c88351ac810517718ded03f2f5be2d3c12f6e25dd89f65765984ee9ae27d1d46187487bb6d654da3a6ae15c92277005dfa3220e54cfbdb5b4eaf846955c7a84dcd2ca43725712b73cdda4ec62704f207602f385d0873ce70b34da9a807ef9a1c5cfb367e67a57e496d2b456caa21665196079bcd91db8621a9d19223968bf300a701a798cd6491c757cb7db093566257b1659c5e329b6a3d7d4737910aa086b6d4a413e57424885bb69359ec75c00691d3ce504ea1f816dc7263942b32c882fc08487250ae98f2802284c82d676712ce55d875f86a32a5e0b4b1b4e3d448fb37af0627ac8a229e62df5a86af3c41e109f66d8f28404bcf079c4ca85226be195143df2a99918f85109dec5939b7088575c4aea3ae9ca06edbd24808e544e3620f9685ad9c7769aa0a4b58e26b197bb1f420a000d502e0bcad67f14c2247a85873ab6810ee84f5185afc9835ebcc048d64570d1b18fd80421c6f4259cbcede8ab73b7ff42664567d63df88acd78aa9d7b8856f01e9d4ea245af1b789480d01012d7fc04e1953ef7188b42a6ad02328589c0110f004ed9f91c1b66ebdb135287e6df57062ad381361c114aba9b80df87323ecf34cfc952093b9f9db9d5d677139b26120ae03bd428784901d1095139fc132461fd3f39788f2ef59bd77a37690198c8a6fa6665b6112439707ceff9275fbcb4d626a1f45b24008a1ec64e54cad478887d77122eeef9fb6d3448ccaae2ee23327b3fa2a07f6652add9b58d75e4eebf0e130d63a439de10d752d70aabf4ee978251cb0b61dac02b75a206fbb0a21bed34ed595dff8de76a429fffe787bffd4620090873cc7b32fc51bfa7204b6432de98c5cf82fbd1d81994b6c45694efd3e915e7980d76def8ea0cf5169158fdaaffc25b9ea028f56900f7b3eddc3dff7bba74373d12f82060b7182a3edaddb7888b62e6138fa253678bf2830773c87892f91ed5d02fef1bce7d5cbab8592eadadba3eb13bfb7c7fdbe7f7cbadd1ffe806878d0fe2ad7f755f127b0f17e4ce5db7a1daf0b4abdc15caed24f7cfc639ae7a7be45bccc7f50cbfe4e9ba893892f19a09ae4f78bbfe8f8fc252b7f39abe703718d79faf9ae28db5d7dcbd58b3f7ff1aabbb1e8123106c4487b530d7e8934ef02e87d1904c98bdc5ddf7ffc3adc1e7afddb8ffbddc43983925971c9136b1b2d389d2c6b4dc58e4827452e0f988c858696b7e453325dda8ac91ec71a0e232732806e5537aec486140933a3bef0cc0fedecb795012e9efea1f94c6351b603ffdd587566e18fc1236169ed161a4f71442c769aa57c19498b8eb955d482f3093b063fe419c801e95ab0a92b2636d34d2c0b4401a0bf4763a3c2fe0a150fc832e1425c0ad033c8e2a69306578591439bbfc3e301cb247e279cc2ada95d907f5356131f163389bfb1ec500ec72d8895265d1039cc5203638af5eb1afad0a21edfb1c40c5ff9647cd8c864b465ad332037815e533dc01ca262219c521e9ae29d7998f84c75c3b20b886840331b202bc4146d825b9ac6481f63d19935b8e83c02c823cd5d903e0dad32d1ee98fd443eced0298c790b545798780892e9e023b929ca91d9638e545dae05d62b58869c22b16b4504a390a5aba6e72f89b5c0c50f26152d865b8f5fe4f183989061874b5531bb6048989ac0bb4a3ee58cc84ac0e887d16b6118d99a2e1c60ca617d9cc818988769297690ae81a1156c0932881ee031d4be7a20d62acab3024aa181f39241e4873175e8c858d6a3bbccb27484f2a64c71c30d46775351b79815916905e55a279a54ac7e3e67609c03e8604f42362059a71a5ee66f5c0b871de0e5c3d50b461c445b4d8abd29760d62cc6c124c7ed69bfa162e0c2df8d0ba3331352eb3678b3af0320eb8b7065126a2ced22cde0caf1b3809d9644641bd4437c2360cc1888621ca8c449e7a74df1974714cf3d7f6274fc7044e38a5c25bd5a734fc3326e54882e25435b0969a9b05d31bd3df3a1364e5e4d040549da21fea0941f09531bdc4c2ded98233cc16c3d3f7950883589fef1cf27026a4cfa656f17e736b4451afe91ebd33d577d5841ee528fe503a4dcef41fc3612ce72cf021933889482037c14494fe05f93755b220d3133c8b5db1eb572f938a2108f898813cc0be6899aaf28a93eb54f97722a2decd0ae41db0da26d935faf20dc91fb7631906420f0e702693c4270304a6106eaa8a49be4752ad2b48a66571f02abe068c7a26f960151734f65441f3562784301ca9ba48600564b5ac8404ed326b42bc841b9f25ca1eb7f75f1fee5a8561280a35d6f6df4387fd5e1e756cec1efb756ce48ad9f8328c78d035f0fdc194a121a8d2ba3d8ccc7a273eff7b64677acd47cf26eb6a12a6844cad9ae4df445b745db7b1b726ba211bd926936b0dc4c497a51d65454ae36b93ebfab775f3f3176c3bf68dd6bbdd540a3f713af8960406721335236e1dc8019854bb2aa6d27ef7f0d88a3bfd36aa19556af7f9f46b519eeffefad07c5a7b01b0bc6acdfa8f6ae28655bc41d68d49225816f5c03c9cfcd787a376e2bc8d64c81348e4c01f94d7becf265699571e1a007fbd72eee3feb7c7fda17fa9e5b5a4083ad5a0aaa493420d6a6e35a87a2c42d5ae979df3aab8d6422dc435ed113185b62f2b5165c7742687a9b277aa4a3fe70a4335e8825fbf704d8db2bfb09b4a7b1521598a253d8bbcc82ccc552ccc45b7b053542bcc2554cdf138b90a4358885c2c7a448ffb6f8ffbc3e1f6e17e0652b37ea40c2c7e46e286da33a0e4c49a21d72eebc022ebc0a2b260a543114b32f1f94b91bfbe52425621a1a8e42d4e41833213e9063a2e15f14a7cfe82029dc5c61c2eaad2c0e62f5e2a99e6e498caacf079fe12508713f98ef61478885fda33f011da13e00100975505af80744836226f5c1a2cac2e32cac011b36b1297e6ebf091f7a8029e1f75fb49caa33b69e35d97cb7e83325ae6f0c5b47c9b97e1ae5336ec384739bf59407e984dd83415a60357cdbfb5a926cff1821c202c2bf1f8be29a9b955942dce1ffd1f82218dd212be5dedf94e1706d55f5541a3de072a518b8a90f0cef68398af35e64ed32b973d79415a555c9f8478abecf405bfd737c4d9d65e41aba751cdf9cb5ed5c3fe372ee1a0ae838d16bafd8532a4d5f5cf94f888a3ee7cc13004d5cd46e5f2311e6fbff553b9ff9fa835f2656a07a74355dd2a8dadfa52deeab36b7269f3a7787cf887fef5e1e9e9e1ee2f78064eea95dba4debaa32c4a5d470d0b2f335ca5eb4f7135d67af6144f0fdfffc247984815800d6dcf00fa97fc738ff0b8ffbedf3e356a860be1807734f17076b87f3e371816996d76e40151230f889a7840c6246f63f0058d9727ea19d00b255fdfb43e66adda5dda4fb4cac6ccb19e58406e786c3a53ac72723426f95ede6b6cd08d79d9dbece3c3c3c0732951a8ff2619abbcb17280ca312a4e8771601d8d08c415315e69bb367209c482c4f3d1c6cbd18c2314c76d3595c7eec19075df19ab83c9cf902400ca0126b709daa970300577760a28b6667c1baf9c0e078d2b58ed748058eb487d612cc03c09b8196067e426ca1924725530593e2a36806ebfef0c487114de2d9f73a824011c4e450d925fa7a3fc872ebafd364988fab1f42a015e67837237d57462ca5be9f29af01d3036e8fb84ac3d4034daaf223e0cf16882207045f112a31a0b5d0eddbcd6900a0a058271a87dae9721f1c5d03a403281e8eabc9b22bcae9250b09afc1a838e9c66a894086e410cf3c2a14788a50c93f6e1b50399db921c0afaef0fb7341ec6491751050e461095304c9c34aa4d9af61cd138794ccf01d71838e21865b40ef82e43384d4ccecb56595a939892e5c62374d189410ba206d6a1e086a8cc403d800c99a9c03faa80f9c22249550e168d46db02d0957fc6746e9350b5c575186723824969440163aa6bcef526a721db471d1756bb2e540334e73a6406f811f924a7f4fdb79f60f6120bd2eda481b257a136b5eaa0c3813fa820ff1498ebe417fe207fe30c7878da3eedf5d787dd8fbbfdfd24cf047fe8ba78ec82055619c3a04c5c26782564382259fc11ff33dab1ee9c39e9c2823dbcac9538abf1783ee90e9f873de33bf3c197fc6ff535115fdc901462e4f3b958bcc71703f07dfb6ddf58aad31265fa05e2e1c21f59c8cf895150567e53c8c114b5fdbf38ae9ffee76f87edd37e186e9ff64cf7b262932c4c8d32abd17cbdc0cda776d791868ba97b2ca5b6928a2ca4e72fdd952b8216673c825fbfa607d619b86c9d757ebecb6a3a341b01ce61bcfc7481e9f3cf77961bec0e0c08f89f96491882893a98085059689f3141758301d54c30282b60dfcb3104a75cae836bb030577503ab8e659138e32f2fc653dc5e5ccf54532f2e06749503d7ec796b4dd5a6cad3e79fbcc7a0b9d9da576f82797124c71c8831979dc159ec57e6ecd9d6806dda6506db75e81bab4c22ddb0258d291898cf2d4b426cc16cea3c408d31adaa41cec11716008c794bfffc45fca677d1f92db8e9715d55f77ce765bb091b07aeca704495e2a7c36efbf4b47fd4df8787c9fd23b5d99f19530164225f2536720c6839b2b230a025e73cc841a77017e034e1b50bb946a764c53011e30e644fb653592ed4313285572b4afddc4d914fc85f21875455847082f70a45992a803606cc5111c60e0266f24abeda9216f28261a43c63621463a067601be10c2621f89b5a5d72c40307a0271320f6650b97065fc63967ad067842fc89c2620ed935743e68d67968c6f5c6828f9d259e1b65f7329d3d6797b58323c95bca5b6b02c0a201750fd428b30095338a83dc74083bcd42b85945ca813fd0005263b47c56bec29986e7d4dbc7871ff78d4714e38b9315d1ed5a48cde20b4e0058668d0608f0d082bc2fd901647a31ffa8c7bf0c230190dd11c0614ae2daf5d904770ed7d1f1f3cbbf50fb0313db02ef5bdaa70bb985e454bb29945187d8ae977951543a200d6a59a6605c395111b100aec196330f375fcea4e3a2eace5ae218c38d480a5630058f055cee448f749328b5eb2a62ab49a67e3950d77604f99e5a8ecc5825dabb24ddda8242934b20d3597b3029e3a84506807319af505e743bca0402a3651db576015a6159860cd5306f90cbc443bbd6248cd5f6fce69d3ad7da832addf35da765b71b57e05cfc044c168a5061f92653de7b055824f4d21314263001c50eb2cadf804756ce15be15a277e496e5876026e32d70027903f931c0c8b6afc9b4f01ae39dcf655a78333e9e8dcf77d6022bb174a5c38c916efc3ebbd47c07825af56cd53dedefbe0fdba7918e72619fc93b2aba56ee2f0e85866da76192e80fec34d297802073a7c97ffd4e230eba4e94b33c93493a4cb24bfd82ccd2e1c4ada239b7dc9f7115157efe2a2fc6f19f3ca691abbcaee674c54e4e6fa8398123a09a1066f30365df5555f2b9c8f657e57bbe3c857ee938233a950f7fe2d4107fc9fdc4f1f34d3cd8fd57bd7bb87f7a7c1826d1fff7a19e2f4398cb02bf695536a94f74df286a3c8ad0c7c91b1ce550ac36a90e0465380a6c7b5676040b9a8442b69c92764da77b64ff2705caa50aeaeac26efbe5c4637c05327f614746e376a8066e8572e4ee8f6bdb3117399812b5e738b216c5b5e7d80195540df09aa900b51926f6173297b9c328f8840fb4522020108b36e58504516ef57a87179a52cf5f924a00bf7ba2c3d9d7ad7ee02782251f4bb7b55030720237a99144a8f64359668b38f34e3f1df6f75ff5d3c33821335948c7fd3f68a7e115c8e90812256cf12caba40c7780ab23e3cda311ce4646d0c9f36d6bd89e3b6a836aeab5db56e12d0392e5f755b9798710eb5123bad7e45c11e26b6c060406cc55650f27726393d6d578150df86a515d07741a8b93e2f8464532bbd86a95fcda028ab6794926ab5e50c4b664c20ba2d8b15335f86a9be8747d83b0ddc4bafe8345229184429b0b87ec701510705714463b3268d8a556eae71afd09b99ec2ba985a158860a0c85f3f53318c5f5b4b10c53f23133b4c401960072109df50c772d10802e1a3f6b2d80b04966841343ba2f1ecbfc26850115365613f4c8eea8fdeb841837c06cc45b057f2a459d29460e55b3c274b3835558d31981dfaa589a1a07438401167704d6d16c5ee817b3e09a74015d3a58913ab911c8697a40887c5a28069cedc6dbfffef9d31557e079c580710427d363547f93785e350afb88e64d42b1852e99185d05d27675def36ce943c381258d544fecd4deeed2698920ead84b261e82cd4abf351bc5ab02db20292259bb59a588ee2880fac632f9055c3f11e171a807391c4a6e02b295355ad29fef98b85096f61a78261a0a65d3b16ecec8800c2fea88b498357ee584cac6d401f6ff707bdfdda1cce4e8c1754c085d0f8261b3432c363a1fe29a049e944213341b0c49f3949e18a63e3d710c5b683f6ca6fac9f893ebc93c13fbccee01fc69a32b1c66f8209999e6730d9a924c7cca149c6a2696ba06eea6049ae972a76e56bede9f5443773fae361d6b838970cbda435ea2719f6450182dece0761f770ffdbedb71f8fdb99f470053430ecc0c3ee59f3088e5016d8424ba2a973634975765d0d32aba0ac5e189f133cf9e520d5d32085de428cf163e3143f344e791aa7aca2ca9389ff62b46c87587b0ddad4f87c174cf63a99107a53dd54648b3a0b138e06217e47a5a380a042af4df5dcee28490589a560621c4c4a26c51d080ff17f20048e4402e08dc1df51561ff9b003975ec28bd9b09c16da55d1b87034d52eb5605663cbe52baf1c5bcb603a36d261a8393979f300369dd4b80e00d16fb47799916694cb6e4db059feb5b257e9fe8c120a7eb46be53cb695fbc06372639f2c3509ac48a3a41efed8435909a74b6345408d00fa097d11b6c65727ff66ad880355b4e216c47ead7e40e19419642aa3e70b34c928f4882aa2b03161a105e572a8abdf8d7536916c9cd26be3a337ea8c46e9c14e033b72e678278c3776ec98a7be6e25da36a120d999882a3fd499bf0be9774e6dbf83cac93951fe7cc17fdd3fde1ef7a79d17647feee5d60b725b143dad41d025abe394021f734ec6ff776cbb095a44cf5faca3a53b48f33d404c8b999c1e420e78d38e15456445a2661a180eccc820d7ec62318b8d1f601c39e3c4d41043e320932d362d53f29fc1c60eb8927c99376032fb235e9e0f1a59b0daa85562e4fcce78931c29aedd848e13a744bdb20dff178c57cb7142d83214657770fa542334404118bc5fd6f6343a6d04540b0c047f7426f9ddd25b6873a16b8ca54c63e6269747aa744a03f27bcc9b20166121656b2d9f4d4c49feb59da5d0b0ed1a810ab9d0f1c13e99fae2949da94154f1d74c0ddb60aa871eaf3fa5ad8a63b5018958dda934b10cac1914a3bd91c435c271185c03540e61da23bdfbaec51a4c2d6dfc216ccc292016dd0767818788f25b13a168e4286dbe90029e268271750075a197a90df299e73b8a0122e1d0782a1cf507c80cc65a3cf0155993ec96a330168f41ec0fa17f07b2aac64a41815c1e72ecd856ead1f8ee73637de221c42abb20f7ee1b798fbc44ed60b954086d1c26a27dc70a34c7d233b8d5a37a2952d491007fecd9963f890bf84ba1227a6701ae9185cc37438586a435f8c98fc26a1477f6bc7bc82f58bff36986905ab923c18f35211c47eea6b1d41711302443c818c83e61912cae446d4b1b487ce24d90416564eff94e4726452b703a0e1142078968fee078f49300a856dd666b7be597023810e297e22ffb8cacbf6ba2dbcee122f88931a5a7a7dbfb6f875626fe7a680d006a94b12f86132fe11def610eb0eed2ff9b67611deef9a52e346cc63fc7375975b5f62eaeec31c25f088be214ef7880a570a853175afe2fc819b53b267980f2ae9af3cb7b2e31b83a95af1519ae32d9150efdf67106f1b71e18ff7ad4b50f26a7c169b75a2aa3395e3c516f2f0954b3710107f131982cb6bdb62d11f07a419589759da98deeca76d43fef184850af570c61a9c997cd79d4fa708eb76dc41c58417a24013af4b7fbe1eb24811f4c4a59cb2e5254d6d9382fdfad9c8720bf42a8ca9b52c0731d3c502bc1552d3b2b964e493a9a1010b8731589a2e0ea8d55c5e4c44c9c171fae4627475b7afe02623d6777ce741d539d60ec435acc7701a4313c74c13d85047607764124e58bd77c47359d2f1b5c8b4ff6f09d4bd72de0220e579943e6d87cb00b87a3f62b77bc80595e5ef8a823394bee8246096a271bafcd3736984a0d2f1b4ca8ca2b1b9447882954d26e4182b598e2d760d15c75bbe5c0d59ff2671a0efdc3f7efb7f7dff46e2a460a209d3019302cafed4acc35ca3d64f286970a2aa38fc35e56919c7e60076231adbd09302d1d78c10313ad6f141f3291ecbdcaabf07649609f5ee98053f8ef4b92b914fb6cbc17bbd6ad129f3fe5b19f6eefa48b26e84263431e74d0e11c31f853689d65cce0f397ac1224fdf2263d7f09ed97b049cf774e15999e4dcfd1534bf1f4db4be958bf0a9bda97f64bafdd0657c27a19b6ad8cb023d4893a4ed8846a32d937fbad9a9a16627959d9b0032b8032858c823569f9986b92114b9f927bb183efb6c3a0778f0f87c3a7913a5d95d1b2ff300ff4bab49aa0d135b85aff9958140446c7eee3c1dcc200d31f2380e283cefae0eef6fe47a35a953de0eab171b5f0ec74c9efc3fc8af5f2b47e61585cbfe5255cf5c5a1fe5621796bd1d3edeef7114fbcac2cbbcef4d4de358283578c9a4caa6874449b2b42a0501da25e8c423b66890ff70ffff86dd8fe3eca69f914541d4cc955feb533196e87099478b04891b714f5253816d6754c45d5553d5a93ba206e158862bbe24d97a27cccd84ed68885f9699d9d0efff98de2ba92882c6c6c9cbdc3a9ee0846e0248ee7624b49b71f710b8022ddce741497127f02ec20368321a66eaa6cd108b0f942668b226f02fb5b96b7f181d9d4cfd38d642980f2a394b533510ee3953db543f6e7de9ac856ca965666460e49515b33d7d1b8e05532a5ecd808d0f43ad3e52a3d250fb1ca1b69e5c58480da091e24af83c9d0a8985ad9811519118cdce5b538b0b1a4cdbc95d2996ca5b40f2d3d6b641bf57525a59d0bac3584ca4437c62aab8ac687b4c9fd38e6a0e17132e01a236fe1f6393b1b13b778a7b8e6a0abbc9a0fbbf83d3d879d6bea6177bb1df4ddfeebedb6ed9e51c96edc12eb96953ffec63a620f1df278d6ab6c68361aa8a228535f88d01e3572ceae69f4441d0c54283424878063ad40423bf9ba90c393a3aa103c96117e8298abb62d3f0d952aedc80f209e29c22850bd952ff524ff3991141148031f50a1b254b956b0146f4c50d990439aeccdf135d3e7aed0e8b8506c422cae9884ecba6c3b05cd7594b9d5787cc7cc2523762d5ca7a7285b13f845d0c0a0a2c5949b6068f5a9649cb2510cdfb8b3c8637b0dd43538468c33b645f9cee9d849b28e32146768df3e3c025c12018c5924660185d4a59f34dfedfdc82fa159fb90a2fc1b774665978837e89110c7ff8e5dd769b7b0eb4ab39fefbcae979513efae01bdcbca5d7dc7d56b8bc35e7eeae33afcc4c7b9701f9ff476f8de6f7fdd3fddeeb643cb3cff6523eade35a29581af6944a704d6d9b02e7355bcb41d9b8069858af311f4e3ab6a5c3c5a63c596af418eb6606adad8d447d3b92370613d14f007103a7b5302eac282d3c194309041399795ec905057ececca76c6aeb31253bcb7a6d8c1249434955ece5a7c3ecae75de84de7066b3a68cef9553515bf663170fdf2c0e8affbc3ee13cb0b6ba5cae99531727553a670e53bc6e9add2838565f6b14151cb11802f16c889ae079a574622b2fbe41004f7b3f7bd337e20259bf7e8717e863d4a8db3410e01e3d0b1a4de6fd544cf77de149d11d30c26e601128062f86cba55313e1cad09a50f3274645b88622bf9dae74d1a534a188cd6fd45e54b359ff7ef189d0e57e18f6f7d5c953efef18f6b8f9cc97fe75e6d3b75fdf9deb9df9d56d27ff3c915deea8ceb20dba0df387aaecd32043adf387bae9307bf79fbf70de5fd8fbbfde3fcdc7a635bf41fdb151b8880f9451a5a62c67e7c605fdb2b1746b73d04ce2cdb54ff261443d6c8c37b0f7935a4455ca14e4eb4145b4aadcc02ef05f55e5322069f21fb85099f5cf026c75e0a640a2741a1cde4f9a4d86d35296f9d091505cb75221d85140828e913f033f2b545170a104d7e07bc813501c880448aced430965d34a02e38103a922820372021d3b414a9ac3c17caec7c931d0e686524b9673b719aca430086bde211a2b1756b923769f2d102d4659bfe0089e689860681248ef11d35dc0db4202df432ad71f2303e1b5f0c810e01688620fde965ee8af52c3ef53c5cd955f021ba3ca951552463930c00fb9f820b890531b5e114139271d951299ba28dbee94cf3ba1a5280d0419626406998a48f95d2dbc9f8b09551ce13c9a43443ded968239b1aa7afa6ab5b93a369303ecb29d5559373967fd3e7a1cbbd232ebac9990093131b11bd9ff14ea6a66f4c324aca4d262a1334c6584f36ca40184de05589ab29bc5738303f3c822977232c2b8d60d2ca870186068ab4616b8d4731cf089b91299ec95f492a464a2f9b60694224f12bf3cafa0dec90e09831242bb0182dde82be52262fb53eb0e00a8a26284c1c2a5eca6c368597139ea74aeb36ce94de19678fd1d8b2b07f9d0ea53f7d13db9a5a9cfc3b6d55acf1ff4b0ea7d9f65592ae2660b6d4b6eac4a90606dcb8f28b15ef361620518d8f37d629c4476c933bef4c492847224166718d3a341b27ee688a981360270e64fb8dc594cab43512e66caa1a857a3cc4d113ebebc42ff7d875b22c72101f3aa09d823725cab5a02a0c355c4b6a646719d2c8104a1fb56031513cb6221fc18399d26c1773a3d46c20aedc33419df9210f8446a6a8f5c8b81b20fc961805e6e341fa371a17b790449a563452220c18376133cba0806cff69558c8d3b4ce68067814f55496f2b7f0b60cb4d19f358f6352f83122ce868a1b9135919c92a8626c4e028cc22bb54c0facd9e824d1504a658022410298e0555d04302ddae2d94d12f28b33a708fc06186081cfdac6c89ee68fac25070c68d42a26487c76f8ea2e8de4e32466ddf8c855b13c14695605df041fb93f40630024d651d14bd8ec701f94f4e0ccb848f379ee1a84f0072c0e4fc0954de949c12d17c1663d630132092e61350013ae951b0c4426717c36f89c4eb0220d36ea2dbb55048f5384a6597c39901025580cdb93d026a0e2c5f93942bd4478ccf77604bcec6e3d02346c251653d04f20735e6f1dc0480115c72c472100292b2e9e2d154d7cb1977f4a614f1d2fc86be5b0764b427b33091f24e9604b7baefc3ed53e3fa3a8c5177dbfdfb195a2b99c040f1e6392a09e73fce367b30898228cab80592a8a5a49a7bdfb5e4b671e57f5257f48625b72123c40849b9f271768b35eaa6ea2a1fe32a801f13d5b95c54b24100f0e7c4e04ec064693cd002c7cf52f2d9bdfb72615537b5f76ff0cb22d2f8fffd18e1127f0db51a88c81a33dde169bbfb7dff754e8fd9a9cb4ab705d160dffb0d729eb65b50b52dbdbee4357cbe73fa821a650e7b9fc16dfc2692596f9571abf4fc25aa4b92a7451912bfc9501659524d91eb9da34a4001f246f5c955070fba160bbd505797f93b0cf1d3b6095c76030ad081618da6e8a0a0d0aea229eba2ac371e5449360da6ea4816147090456dca38828f7a7ff7fde95f27c1486b071db16394b0067d928972079729c86807dc670d514b9b14eee400f6af818ae048cdda01b77bfe12001ff6c60d2656ed4d726b0fbdeac1e3a08f7e5d94bc0ce1acc67a15d084564f8ea42f3e589acd335db33dc6febbfe75bbfbfd1f53dedfa18aae29c3d2764fce387fa2980681a5db5c20b796b4772e687b1686cbb832044a9fc7134bf4a8a1e5bc5853ce9f7f6c997b160f345b56e4fa386ab7a08e9d7b77a945bc50057b35cab1082623e8e03dfdf3a713914c9df0dbc3e38b415d5ef18080a0aec29b786cfcf159fe4d81a0f7c92553a222c08d4a38991b871cb9e25cd9d80bb8dbe55c581cd4c313414ef2144bd4ae1773ec52bae595eb3edefebe7fea1f1f7e7c6bdcd22aaf0aeb4360d9540af75a4aefd3b7f04d3201222b9e6a9e628b8511104ccb8e763bca4132c5109a75885a189818d432891476cbee00fbd3075c31a41d9d5e4b73b4d2080fcde3c585bb0c4e72f9d60490d3289a2a669b7706e2f751bc8b2a9ea1dbbdd48e494db1a13ac62542531f857a3df466513fe3f9d0950f6bf1e4f997225b8b237fe5690998a6bd901042a1e60ca521f1c988b911e81de764125f1dbd1c4a71f88a1641222e32c728d66a15f3a740cecd41063942d421c7eb674836728ab828fd14a0fd910187753066037cb20cef0752aedec988786700759adc2a4298538b7c409a97c41e4d40a70971d0922c4d428e85c79e9c2f348989172b402668aa97d830464228421da8ae189ae5e918760bac4f81173716248e2ae4f26f257ee4d69b0422c0321964be42b57787191150c40359006772a09b4a755f04d76adb6ef149d7fc4f4c681052a32455e6b847502e41873050c2a48825965463896920e81061102a9a85903f352d72931acd4a737dda6282f60cca9c16b4e20ee7cbf75fc37e44f33526e011d7fa07cdb734825a37363cdf59133470105945934776ae35849dd2a6ebb5014ccd5a53dd0eaa3e36827055be278e7a34c56953bc7c03c6bbd384cccb78ca1e538b46269e5d127d5344955eb062b44350de5414b467e5b9533b401c9a25f28fed77dd3f3cde3e3fdc3fb52075072b616dbaa8f2aa3b9ace891128f3a0af28996a74cfae2e4185acc962fa13d3f621ae7ea2e7284480d0459ec783c8d8f34a40682dde456e58d1978bf98414067a83052d15f01b08a9ba81f5028ed5b472e8ac82097e685cd98b4f198c57c58c783f7f8605142767c9ebe17bdfa0f9f6cafa57a72f54ece5eb69f08efbc7535ebcaa0efa2bebaa4c17361d4841522f7fc9485cc68d9569875a703adbb3ec816b7b08cb93e6413da481dfa20297c65f2bd7de4cddaaec84019c0278cb1d9d4d96ce1ec03ccbc14301f73220ce82ae372ef07ecc8da2d324c697b3c143075c8b3db22fde9b4261bb979741d35d86dc524b378f36d8bfee7e7d18f4eef671378cc496de74f64c0c44cd7ed5b67bf1d109276a9d4aa6b344b9be8b7177c94c5a60e07cbb0001b0da853f5ea860ce1afef5767bf7703f599e45ecf951b9aee98b21026487f10cf33ab602fb9d6ef90a067303ad112a63a50cf9e6608278f3ad44deaba85872b43b290d270a512513ed41ce7d9ff80b56d6c08fccd4682a429408c88281cab876d351eca5b5af81c029078374826b4f327f7c461226bb1bbbd11f315a8fba5cebe5a7c7dbedfdb761afbf3efce37e94d808adaf5f4c90cbbbab26b3151143b12604311f86a04acf4e410dad744a226fe36101161f7499c3e2c34b58fc62537f7c1fd5110b690ad3a0bdec88652a06cb3449239f01b78b8717249271958d1df4d858926104165e51ad0c47fef5ce4564b5c55d7d934f0c40623c6d41466c95df3a3566779c76bd9cb861f637a0244d2c69882640a42458377b1dd4a8aeaeab29e2e40713ece9558dd754b7b6409216536bf93cbbb6ca72b78d7fbef32614b10e3b7247812b144c89dc429ca9a5a897af8c2472b5d04478dafebed7db933aa5f4fd95c068d0e195386763ae0d2a9c8a6265f550c8315ba0f6778bbb68d061f17068c4ba412dbd1c547abe0b2a0c5116a018a2b9626a5c6f9f892682c443459507f94cae3a22e2b3f0c999885b24ec735d80fcc92afc843029a6d23f6f1b1d1db6f0e47b31fad64d9abe0352b4a361ac4c2d1b6c0aa81064c6af0bc6569cfd8d26e468ea15368ba32cf6ab7c17476d64efac4507830bdf00215660dacb4e9de5dbaaa5febca7063d4eb581de6f5e99526e80f244b63b31a3104daa07f8b601dc3835f4601b110fd5410e1c89f246cb09417080061ce72b100760fb91f5e86e1225b63ab09c4a0bd3580278a2e6b8e04d06830b7bb46b727885dc98148b8ec64fdfc980895c13cd02ead08781e428d6a1f93b6609a1d6297b16e882149cef00568b524c0dcf5fac55b6ebdda6c8110d8a3f855f57fe084c918e032209e217df3009e38dad0a6a930aac8d8c6c506c5fbc49e6f37d5e7bd40e74a9d91f0472232c6eb1ccba34f21470adeffff9a4fbdb6ffd30e99d54653b687be4cdfba8e0ca1102cb88196d1654b00fe771649fc9c76519872fda8c11064ff252f9baba2c357cc1e667bb37deb16b85ba99749b386cbcb119c1066641ca1b8824a75192e97a7b0cbd4681e93bca3c6529f79368bb3da3003b32b0954e4c6061f70261de6cd9137bd797241e02a292612c597220299f7e89fca5a8c44aa73cbe943765fe4bec5bb5e7a7a7fe051f453449d96ed0c62ff391a5d7f8c89817732de74c7a8503801891e82424c26e52934648068a570af2290bd8f008c60669c5bce3c24beeb4209e343ad79d2ec3ce8dbd7486159bb69832986412aad7c10ce14d58d97074ab4a520d40d6c13601daec64125ff647ed56235fa4996717da38c5c5716addfa8231c28ad5de8b139481067569e69e2276915cdc88c3235e5e73a6d24464be3a273d6f379d116678efd7555ca64d5c6599a1478bef1ea2e5781499c101536053e6bfc4f197a252ab04eef3f3a7bf7d6a1410dd7f9402c28f14108b04106ff23f3cf57ab83d9ce2fa7fc2424472aee507ac9b2fc5f96f91bfb10d3fee7e3d9c4c6ea7dcaa3be6855de422a8ff7c870a6c19d8b2632ebfb42ad131d4daa2a0cdd74088576cde914c01bb7d3cf11160bd5a704aa1bc560c52e0b87026e0ea499b4a3ccb18c18ef49c70f1409baa6bb2e4915e8f33851ab1c03314bc07e83ef2e2740dfbd7b5c024ae82a05e3f2a6d7bbe1adaf78407b929c64753c508439c30349e61397fa05dd3ea6333d44fe427878c1b15c163953985c818a029ec15489601ff04256059932085a058117b513b621c299bdd9113867177286a8f31cd6e9465467c198b84dc2100e2383a468104108076293b22e1f2d814196eb1238267106f36ca6d1cc641eeda20db164268e41396e3eaa1c4ccf64542f14a7bd440b15c0ce77c4a8eae5564f96a728d400a034828e7d42edd306aba89b8ebf14e94846e8d1adb8428070c36df1eeff414afde0068cad06084787274d5e8e6416bdcb6fb3addfa983e3f5703876c1c91132e31d8191cd5377416d212d5be18ec12195805551c1646ce0ca1b33d0931fa5a4d2d3785b3aea27a0e1ab9a0c70ff5987696d3b513e79abc21495e02630d14f615c13f96f35c264a65eea663eea6f3231e2b4fd32c8011feb4a0e4c9224155b222db02e4322324358c4b75ba08a0439885e3e21e977d6eb3ad6d071a7bc769ceb5cd03ac738ee8563fee32b8ba5f18ece72f0eb1e4a5bd6e314ef174bbfbbd45e7fd72ac2f357e3868276aff46f5ab389d6f03068b2e4b21ed40a1dd4fd2a89731399b4eb2951351ee61d4af84b4ea48aa7bd2502be0bb58ae72f8f7d7f43edddeedff3394c056271316b2ab8773dddc0fa287aaca23c1a53cdc707bbfd7dbc7fdf665661f7c2255566d862aa8492a829c1541bb1b482344d99993715e892b1917910d47a01abc123f71636d6fdd0632f17f8d52c88b87fa75fb387ba6b28c67791730e85cabe9f92eaa2588d08577b3880b3877099fefdc5f83d57917b6e83c21f1b20ff7c7fdfdd361ec40208d7a7b84751754b7f2d3af59973383ff8c56f93033255fb80acf5f026846973e3b12127965a2b8f2e71f15f7df8d3ca4a403560e2c1e133bc7c6aed2f597edb95bd4c014eff765bec4e673924ebca96326fe125458a5172fa5d94bbdf6f3d77aedc717b56d8fd6db4d7e392af87201c4d98044c26bbf2e64decb173c12e77b5fd2e95ab4afed15a743e406a8ab602ca4ce8a0a2aaa70960e5b3bd4e0fde90bfbe9f61ee5cad994a2ec410783cd07d136554cdd99ce92b0d8813f1d4a82b5e207073ece4e5add794d7ec50eb43f081955794e9b152fddbee19e0f4d5c275e12602d6976db553c6231d8b89497b0bded96556ef331f5699307a7c3ca0f4e05d914bad7c9eadc35de5dcc96a7c7eded7dcb5cd8d06b3b58e556e2393bd9065ad9fab80adc8d5510f084f04251dd21cbef59390ed57cf13cdfc9477a387608c97da92af761e357f5189eef7452112f3240d7e988d73c350d9e1eb7f78761fbd4d0a0c85584d772159e9b406ab98af43257917a52fa82186a1c40df1808ad189e3e2b71bf48a8605555e18d88dbea72cbbcc4955d2717e26683f22014b18853086f3e59b2a9a2ce4b6cfb9b20ef88c6451554104b58b60ab22d796b92a7101e2528dd00847f5e5b1354955f79108b85aa2abcf2da6469ce97963228eb22655e85d1efec987d73640500c3b6b2a682b7bd42ea72cc006582ee5d139f6884862f6ef00abbd3baa0ce3a9013cd64d865b11f31881e22269189a7f7e490c2f3978a2bbab585e25a509652336e252fb409d658884892056236ebaf8aa898b8b4212d80a36dd79b77e8b6e862a2ba9e4c48afafed04daa5ffd8a71d841c2fccce252c26251b2e37b970d497bb1cc666bf1f7364a6c4bcb188c00663835f5b65fde04d296009096bafea004ac7605ccdeba8e2e035e4fe9be3257fb5f22e6df129f9901c857ed089e4723c351ff7f75f6fefbfcd72b94c119db51b079ddc4b07e32f29b99041488a51b46e2c0cd90463a5698679421071d82317a6970388a18c0465a8e55cb1af40c939e6838fc8fe2a776c19748fd2b8c244b2b1f6408c6444d883b75a172306ba937561221212f6aa357989d62d8b78dfa9e7a6f807ec956b9716af419a534d2e0a8ba98c1d822db88027cd00a01d55399cf56661f2d935d64fef710ec4c463400e8bf39dc72616869df70914fbac1b006db62697b143033ab48e45ad7629a1bab68850d8cd3990e0f04626e3d3d33f1e5ed4c9e05003bce45d846e172373d47641c4010d95c3eef5ba19649b8f0bb9e6b74b740e97e471f5af788c4ffff3b71ff75ff78f62cd360723ecce04ba6945a6975e4498dc28cad878e5b557fe406d1cedb57fe3632f64559f9b9260ec1975680c41d321d1ce086b775332e7b4ebbf90d9fa71fff5411e2440ceed2d5ac1137be05dd619b545eb405e64fbe1e222affc0d59ab515c14585c1417c203fe0d8c1d8a8bd2ca5a06e73a456105850e1e35889447fa43862ba771bcc2a4a81e4e92ea9f7edc7f7b7cf8f15d3ffcfaf7fdee695c1551c51b601223d2dcc89414a8ddc54cbd3df1695496551cbccaf2a2ec2750a9a7946755dd8ded788dca6b882908eaf98c37b57fbfd8d42e23db8e8118282e6451a8d25af9fbfdc33feef571dfdf8ef12bb93838c9723ceaa660d8956a3ad89759f62de4667a9d9b2602a4c54c97ac987c50a811a3a72235dd903c399bae4654ea393171731f4cdc8ce82cb11a3b5424368d124615a184dce9603a9f4ce8dcec2713bb626ce49928030c306b624859acc52ab6658e69654a91532f1416e31613604817537d3d182fc79dafedf7def89cd632410ad1143e98047e676b8297116f54a6298ac91d4ebba3976ec682ef6dd74c61bcc72fbcc79bd86b6f723cab5dcfa895055b734407bb4d2101a5b5723a77201b363e98e2d2d699d2c9b22927446c05cca916d41a34485c010c0261db10227f342120bb5ea2741f3013d61b87187872c6ca1e98b2f12968535d32c927780be2e0f20ea626bff52682eb5abe8e20570bbefb008fc3e422ee29481cc0ba2dcb1a290131954b311d0a1eaa37d605deda81cba04bc6829c3b04e350411bebffcfdebff4368e745b83f05f099cf11701c63de2037a90f04403795480273d52c9aaa2dfa2d209cba93ac78dfeef8dbd5690924c5ab633f3799ec2db8d4ceb4e3218d71d7bafbd16e1efb276d17d9f8d0f85b9c88939c9de11a355103f919365676c4182b0cbd18484a7e2ab34b071f0a77b6b02d2f76d3231c68d35093a0b29868952c04713a44780276dfa3844673c42c452650e190d89d2a5c99b40c5d2088ab698c6faf1259884f9569660b925191ad163762da5dea5de9a14e25193cc01091a857483412633e447db62ac43fb92ee5b6ec263ce2cc626ec5a8a145b2a2e9a88ccc4e2370e98323e8e7c17b9203292b7ac71f9bd8d2d13599e6b8e5f646a0347719830d3632f041152d76585a8f25deec9fbfafdebf0d85cf5b6ada127357d358ae81f7daf172cd2d74cd4bd5d408b2e641ffaa3f654f2e2daa3dd6164d49be5649db35b8bcd8e64f751e55f07dec3377a122ad246b658189bb0b6548e34ac5f23c92c9b186e9c2951e663728b24e29e40a6da266426d5231415c0bed79e87f1f5f83b128a7870dbc930aee0f82b439083c58adc5a64af48113ae9aa8ad8a3b0665159faa7dde17138ee1a7de9c9804130b74262ccb8b44926249548404b006035a16c4da4ae42e78c4378497eacaeaf7bb7307f2b9c110ce96ea7e476cfac158fded6b2e73313dba166a9db119b48ef807727dcbc36b90e8db483ecfeba757b069d653dca6963b2996642a4fbb7a0208664e54f73d126b7ccaa314d29a2f6519e113dbc0538051357db8bb753b6f839c51e5a04b17e815330d2a46e096e37a8210f181b0069e5308a6caa3842261275012a51c6e4f4471833b533b314cc180a2cc470420d97d250e9324fc3b443dfaa44ac79865e9921dfd05f01e70db55519237c646e19c1b68da420e21e23902f196193efdfee37cfbb4679de6d90a4850756393a4798bbf97e3be5cbcc0ce66bbecf959741154c82485ddbe9395594db32ac741640a240aad5541a36c5eaa0228062c9b3525c353e8b55eaf33c2af59a6efbcc63bbed907da3ce225e620b4adb6546355981045234610744bce1602d0a2a52c8c31d3374b71d828317e132ff36992fa84622373ebf8eef6e193a6b2dedc2efdf86c7cdfdcfc4ffbc2adb25553157d762b4063ba56e2efb72139572d8bde796bb3d83e67aed6f402ee04933909df2aa287fa15f23f6ff12cf70a390fe7ed83dd1c9cec5ea8bbc80e85d1dc73431ad59a6340b4959d8151db87ba0df81118ad935640a7b30e70a541881f05b6cc293815a7b17a0fe5a00730241937c02f4a883948a779b6462f18a8fad181e425990fba0da875c02dc1b18c8e09277f09b66323b592f63357bc5c7ae3565a1cc2118a33a224b1c9555886e056b0be058206c37ccf813db29995c811172c61e18e42721adb103393cb6842f3097d422832f3039f5124a8b21b429a6f3d2cfbb4969474aa7c7d231118bbc2398ca900229770fdd3a2605ba8ba9cc73ad98de44324841a7863f2cfc8ed2312e5db0f0530773e47a22e58ac50f3d2f63796617f8619e48a132316b9044ebfc89ae8abf472720e30b79dee5f721733a67dda047697629960ba80ec25e0ad69e6082d55e663b74565c2883b9a8c30e4f76e0d269b1c190cd769045cec1b58e154b31db360193cccce12624879c59594a02097390c489d2a5062ce2532664469612594b61a2507d9cdea6d789a4f6243849c80e217ca8bcaa1bab15114d9e7e0524c5264e1bb45e892f4a6c9480de267b82221b15b92a9dbbb6a5c006b2f264aa2b5b3fa60237d63078d7aa4c4c4d9b0be238a1a26228e12ef64285e4137e9a1c335f1d68998a93cf4291b62fc1d4260984a537b027f06a3230f14362d12c9fb33b422aca1672e980d3289b446e30108b2335369179849b0a6701ab09a561df5895b9d52405f55ab54f0b51980ea3769c3454606e0250de406461f85b943c30e0912371f268ff143909876cd8634c8d6234221f551e391f07536542f1303e8f9ba787cdefcca4f572490f3aa7905b3e6f6b246509ddcf7e2019d99669be2152a4c4d20980ee9899f25da4574a0301068354a87823f354a2659ab99d2e2693c33a0319e829b45b11756ad7725bf6be1a90a03eb6b418054c9895a90524db41064e302897253c0ad1d424d592830cb4977d36d12aae5ae4c842c23fc64974088ba5c4d4faca3981cce29ccb624b626e39d93220641f8c4020d2119d6e75915a9f8fd235b05654b292d1731639a01ca35d4856008218c83f8fa505c665a598313ea08ce24454e898546e1930f281211eb80b00f4ccad8cacadf65b0e5c20959ba86483c410379a38e41c317881822dc561f6104bb38046905b516caf3609327474e7d1b591a5c121151649d10532327a0c3bdab55d22f86fe46a0c597a530ae3100bd2b4b60d704ab063fac67448b85acee0f4727ee4e80af0c003cb3ae71e44d240dba20028e75bea6c6edb03376681f119b9daa0bf2ac4098529edcf91d0ca05a6ca4b09ba0256032f7b2fea917ad813a9710de016cb898f92e40e9cc31cba738aa496f4583c0a988891185e719e4acbd156e6ef472218ad5c2682ca2bd1140952934e76c76033e0d685441295a7e7ea2e97cc794cc309f9650f1635e9690343a80e16448de3dc0abe07e62a11b488882cc0da3268b91a4b8348d10be70045f86870806352a819de3f0b194052b8c9ed6659f82cc4718c77036c86b06d7d303231a89d10ec1499039b1ca00554f956a634affd1865a9957a957ce63c91c152a03d699f2b54a518821b93b04f90ac898d392d85e2de96e05a8854dd3ab5a0b37555ae6c41487d415d6b1e13be1afed987c568e89584efc518e952659d714b2e5de253c5bc75a064fca962eecb4fb7da3ea8056e9fcfb5da456ddd3f1c9e9f1e7eff3e25625ae5ae838ae64416e74cdb603bb80ef5b80e59bae55ef6357bd1ebad7f7d5fcb6f8551747cb8df3d8ee8cca554b38f60aa1652276ea3b2f62e0e49799d1a94f7f8387cdf9f653f57b5ccb3bdc604163f822b8442dd2053d618e1a23aa61be90d3e90e4e1111d32210c98bb21bd78232b9b5351960bdbcc1feb185a2e326b55ce6ddef8309c1de581ad616e6250d0050ff04920f3237aa80710752f4bc079b53cfef1c72886f446b56456cb42fbff0baae5ac642d502f9554d21b0cb44d7b75a96fbf57ba37a2c972eaa3b6dd7699b1619f60df540035b0c03af7a59a5ac05551e2e882082a4ba93bc5c4ff04385aa40a6934b90cd3d1dbe6f4a86d910c6c6a977456cd3cb4e03680a6a998083a811e03c4abc1447753d9694251b663baad85ec4bbade6fb65473a9cc437134255a17516ff59df5745969abbf37c35f0d975708aa196125a7dd1f410c03d397b0fc7bb629ac36386b217eba85e86b164b8affcbd4866f607fbc09101514d3bca0729598f580d27d3967a65511f0fdd643c6138c54d0f48cd2f34b185e36beaab48a2639e4e312ead504fab2930d09b84aa093a6caf299278f00e15e204eb0da8d8831985823140420336f6c2223678e378556935c01c8b902dac7a530c8966146cf7dade50ea6e601005fe2f682c718b9a6348d91f7f7e6e9ebc3d73ff5e1e1cf115d848d9a3793135d676ddd250787673a4e642a4d3c1170441327c7b646287c3a6e24e088dc1a4733636298cff76ae40649dc99d806504bbcae7d25ee87b7b177c7d8eeed79f7f40774f5ce70f4d798fdcfa04d676ba90e6a4134636e157c8459e5659ff54cb5ee1db0f1ec14412f53f6cd236e1fc93dec9803feab01cf7f3fdcffb97b1e21bc16b9ba94bcf52aaea8cd1b1112b7db25ad27fe9b2b6a39a8667c029e6261327efc80dba87c9feeec2a1e71b9eec6903f084fd7afe5958d3df26b634b0b6535e8dfbf3f3f4f969d3fabbd09bb585e4f7c1f51827fd95be58ea9b7ee2eae70fd303be830fdfa74b5b3590078cb7fc3316795f1c7e3e3f3ee69945bed1692479638d9e6c9656f52ea2229c17663c682bf73f2ae9c97a1df6deeffb565b84bbce8bed3752c02ecd3bf9f765fb7fd38d97ae54d1e34985fe1e024c35096ffce14bfb630a66cde44d3410e581ee94e0972784b8ead8899c9e3184f82469f4feb46721f812761483216b87b61900472fa4d3271aadd229dad8eb9c362484593b396872d7c0809f0646bbc57911aeb96b207c0b435971a8834c48e28ec012f8f8f7bfdc08190e9caab7581baea52ea7b01bcfb4149ce4592aa4b8e5638fd90b80939cb24d59eca26991a141e4653d15aed4d96fd8d37256bb86eb3fc3b40e659de29be50f242aa09c87207c03c859b13c3e4f2917c4ee21e92f494891aa8296a12894d8ffc563366afe314a93ff0858af2a7c6a8f414d26fd03054f8e3f7e709cf891aff5151d55e27e037ff37afafe747fdc7c3f3b84bfab752c5af89820627b3576fd292df5a355348babbded517982fe77ce041bd4f036f271ef816a7b53fce032ff63b48a31741a32f7bb10e1631ce459147be31037c4673982c25c544e6f7ab428a18a465bdde6daa6591110038d3124dfaf5a96a015abc649169bb8855fea80cf1428e167950df996867de9deb225a49bf91bd5d1a943f813fc9221fe1429e2c2db28cfd1a0518db292b6bcdfffdff3bfc1fffd7e6febe31b374370134278017e385ed0ea1eda0c7ffba7da06df79bec501ccfd7c1482e3f960d1e75ed75b8ae391dae6b4e879967e37c810b57f13798d436f7f70dd7af87dd1f9cd8028cf29f583a57659ea27b788769f2cc45796bebb298c29c177e4edabd647565650bc514baa34d2ffba4ba5ec73bd74779fbaa1a9e260a2cf4979fb521dea989ebb3c2cbbe6abb343dff6055dc4e35813bdf5babba55992a66ac89a7c7bff5ef8fcfcf8f7bd6c32f6e0ecb4294dea6a3ed38a9b179d231a28ce1676bfd3dbbf12a45df453d3c3f8eaec7727d6a2deff684ab8c07ef14696f9d2ebfbe118e3ab2d6f79d4e631b344659a981e747bd797a7ef863b37d1ed942ed928ffe706d27f44a5978894eeec3c7df5a95e6a1850b5be69d6a5c8c317cbcfc490769cb7fd9b6e42e5ded47e72df3c7e3306e54814ee9eed2ca759347e6cc5f504dadc8f5a8f5a662b595b5d73b554cf2919ee25ab2b2dd8adab7555df80721ec7bb4ab6ebcef6943dfcb77f964884d78bc75853cbb5fd9fa72dbce3ede98a9b53698454768cd18203b77eecaaf1859971750f069998c456cc305a8e41968701d4ccc554c1b6b6aa9575c127d30b5c201b07978fa366c98b3e5bad1c77a72394df0ea9168ddb60295a0e461edd0987ec8947049611d80b1f62b3bc0f711b08b0e639288cd03700df2b0961f8ae56235603ad5649e15e7df023be0339516324123817ea4cdf0f0e757bddd7d1d3d2771213e77dec167f9bfe7c327bed00d758da6f4fd317675105de7470579ab5b88bc7d3840b9c75479f5f8f748585ba5feafef87e7873ffee7e49cfb995a29e88d3f5e2c5927df9bbbde39c1bb73efbff4f853bd4ea6a655f99dfe78bd52215afd338d12de6f94eb7d2dfc5c5fbbb5f00bfff01d9ceaf4cc6eadcae6ebfb867722fcbfa2af77bd9e6f833fe84ca273f6e7c64a788718f65aaf3b55eb7ef7f5f9c21676caa605bda759c8679142e07518e6659fdf3547ae779fb05c9c8ff0b9cfbdd8af6efba40f72bebad8aaeae2be66f18edd6a813067a930e97a35b839e1f0024d4d5a922758f8ddf5fdc3ab6a389bacbaf7edefebf8226b955d94f49a051466c1c8e39cba02ec541f3adb026066590aed74db17f3c912b2ea7377ae013b5ae020fbc13bef16e7dd5f72e7e396afa8f0a161b324ffb6d4f432a5bd8dcc7a6f46d35e850f4d2a1f2acee51d4f60b3f3719e95ef755ac8f7aa287cc5e8fe08402a2d6e6e1730399fddf32f740c9999ea7c6d596ef3cdd7af8fcf9be787c796051a207218ec904d8a1a0fae25aa78bc5599b9984cadf1a069938504c679a2719e9a716ed5c7b60f48efb417e765c29f3529bddcca525a9a4e55f56fe9547dc40b904d979b4e55e1c23104b27d02145f908e5fd7f2052ae7dbb7e1613bd58e375155d9795fe708ea75bdc6482436a4ebdf651aea75bc7a1698388b50c1d92ab15011b3bd3bdd2109d476361dad7dc1ed5adfe7f74b9aaf96f4b2220f0de61817cb3e73b22f898d2d977de29fb65d2b7bf7f365475bf9f7cf729583ea17b678b7b4d4f9dedd79def95bdcfccb70e4cdd3c9cd79b6c697251a9129cc25a3239858af7b753fc2b975b1e79639c73ae33522facb51c379a1cf56e8bc1472ca26d6b527c6f17a62e91a372543e0ead67c7e17f37a382be689972aa973061aa949e3d7620b45935e934e9ef3697a9320342a7f5ba46a3b6ac80305e1af89072468ca1828f8cbe50e67620549a7d762058ab43af39b38ef19752513e6ba409cec07c86c2878b02081a3e631d2a416182c2f25e3604b7e60cb8dfb38eb2c102fa182cedb3c99ad5f00075ddf23719d28c6e0975b0a4b5f8993a3353e1e273fbba7e7c76f67ed9311244c446f07abc2ea2abbeca21ef5b58c03697a9c5ec9a53e13567e55e48b717bddefdf630c3b5c342d0ee233293e9b202775375b480eefa1ac59b6910d2d41ca116c736961d41d4e6378ecd20b4221270ac50ba110885484bb66b09833829d66a799300403daf48be13bd2e88611fce9cfd5454e377178ad6a69abc9aa4a51239798d91c92de9a43a4b593aa2b6fc220c3dba34c4bd3469bba5ecd7083a627f6a2760ed30c059a88f35b4cd76e71ed0de2b250f6d6141bffa4468b54c0358d96f35abc909704f9e0e2fc9d4cba6bd5a3fceb26bb7a3f6fb5c7e19dfabb7a8b6b68991fa73ad2fe8d75e3cd369fb5cae17a05aa99f8cbe6f0bc7b7a38fcd5a6dae8c462b0b961a6ddda5ae49f754312233f5055015f7d31359b8999d15635dbb669034e7e9f2902ede4bcfa7462558cbbba5fcbc6ad5d633a8e8df35c2eeb9cfcb50bbbb7f81c93712625138a297e3c785d20abd40d5a6e07e79dce7a7e33739a61659097ea29461d9d6e95441953a9a53bfb9a9ffc7c3f988d1b40824b6a04d4c1166994c8e246d5e371861b875e3052fa9846c8d4a0cdf7e7c7fde6f961abc983729830004bf00e48e5219fde164dfd119d8c73776f677a2d38e5ae47094d976eac49567968751134d391071710944b90ca3ba103885204702fd848517f2c1cc802810447f05faa29a92a3e4ea099b9f3e7c2d7dbb5ec22b0ca9067c9c400c1e1b5cda604554cf8924d4d10fe4e935c61c49ae6eeec7504cc6738657a2db5b675f8406a0dc41262acf11530b7f99a810fedd15facc490757edba6ff7d73ffe7aeadbb35a868b28701450f4172633fa3da7e952aedbc49f1c60626b2e684d102e823ba43a70a01b7a1a888e1497dba9a4d8a6b4bc0a4ec2d73524d733966055539e44ecb656e80ab845cbbf481c62a205359270627b3839045ab9cf159a65dd578056a342149ef32156cea0a726bd0bd02e173d4c8bb8ac62104aaacaca0484d42922e72fe836e2703523820015e4baf85574417e389c9fc7df3f55c99e3e7d15cf1d23fbb102e3e6d82deca9cf97df3f52fbdd96e1fbf7f1d1da8068ab648204237b8b105028552a5d94071a2c868e88a0a0314695cd93259c8719f9c91420f6d1c0b613fa440c4009ced9891dd251c00e17ca62c436f5d5e5899bfa2c9d0c7d7196464e4b56ed9592d831d547bf6c664307853a511805ab819b3a3c2be77641501530505f8ad33b21b625725f816c4b6d26364032a7d3196010291ce74810c79d91108c0947d1edc9becd0c738c6dda80fdfb9817758b656ba5484149401d83c82a3a38184a5ae3c3ed5a60e28206a53cc5274799e12af783160e32df90d263d7acfd2826e654b62b142e12c6b32282b3cb0c40394fdb730141c12b890c6658dbbab48ad43bd52d310c400e04170940ae94ed26e59c319f79b0d26a82cf3633e5865c07d3e12d3a1179af8729ba51346532e44c8596ad0cb9c7da878655fb68e858f323c73d60dad6db1bc073003c4020d21dc6725ef6082ac1038d47ce5a912c49064fc3a32ac68729cb509ed69fb78bf635ab74c6aa577476dc32a1d6d408208a435c2aae2bd4eaa6b3ff0fcc04f1f74f8c04ebfe8b5e34fc27812084904281384a30dd3872f7b1dd5d97bf991946dd87cfdebffff7fca201d1eb77fedeef5b7ddd3614cbfb152a7369a8a34a2001a0e4e3d8dd1049d01ec949322929e0c38473e8310c94a807915d3782e8d5fca36c9f949360bd60a15a123985ffc89a623048ef7d2787240e5e3299897dc8ded642081e0a198eaa010c057584d49881349a8549ae600482932397a6ae573ae58d052e1c4ec1bdd8135214f37e1c7d4d002e27af2d7579cd2dad6edc1014ba606662bda7094b562e2d308116c19a19a42c6275f4145e38d3305c4563e4ac7cdce244f4d3619e4b88e694a842d6790d2dda6f38dec1fd9a2d951dd1eac36e0f051a32e2eebaeb3a4d903f78535158b0d6831ea8d978e1a13c82dc0ece39db2a5e5232a5b49e7a51c38e094eb7a88ea1fb0a8cb1c88acd8041ada360f3bf2b7e428267ed6ce04fb726b034c62a42014ccc79d574c3e90574844007f20defde6407793e4b2e461040b23043e6498e04730bd3067f9a865d2eb9cf68a6cc9a6729673d8ff06889233c503d2ffd8094963b07d5ff638a3581f248f05fb0905f38d1f60637b8ada57693cb14a4d4b3292c913bc195e0c618ffc628cb7c7e1be69167855b772cd02a69f841ca67863a30aca7ae520eba51cd6def3dd59738b9ff41993895b0777409085128f818e4028a149dd225fd9639a54b107e3262c0113d147c0e0f91bd2280aaf5b56f92ebeece53c75958fdaf761f1a083e66bdddef31e1fb1d9f38b811877d72d04115ff662d4c874568696ce283fcc47e95a732feba2075baebbdf3cfdc589f65a84d68b3137c1f2bc4c7159968d247fa3358e88d500154579d84a97f748d597b632ae1eb5ec74e2c23626b138ffdd6c9d02d6ea242674ad9a69d4373651e24441434f2e99146b46de5dea9f203d5a7b05ad8d1b083a1b6c4892ec263a954725a377025edb37b436ac55ae0fb2be3b1556d6deb997db6092536e558f61e54c7283d3e1147c1ba1ca14dbbacabd318f705fa2757e7f7ad8fdb1dd1c762db21e7b1d16c4ba16dcf97e296814fb70d4b677470830f345588c124975e73bdfa723b241a13aada121b59253acba39c2625ea74769ce70e49d7c7f6883bb9283dca4bc86e26636c50e6d0589890298c8fe8f32fc417d90484087542c10fd39ca9cb657b0b74dc814350417462d1a5eeb64402528c6505983e530191707445e65e1966514eb306c188f115cc2d0e882b62d3f9d6ce2ed450eaa3bcc8e68465e095b9e1246369f7100e9803c39824a185a59977f3d3461c55055914d93ed40109741ebe114376820383339697eae1dbc0c19c36bbb19b6df87cdf3e3538ba82c4d2b4b81e08fc4c3981710cf32e6c3eb772351795065552fbe7af5eeec87e862a977c704bcc619dd394f89bc83d0ee6ef7f57ef334c647af4bf09e85882ec57b5f6e7fe2d8bdf5ef6aaef955befef54c8abaa1454e9a6be995245cb89484435be49547f6ce1112cd71e5a1f31d647b1a57e5e2ab72f6950ccdb3ef6466e197a8e1fdee69d336c9654ba3a1d3144180cac4a88620ff264104cdafe5dfcbbe42c70d4e080fb21557bf981a93fc8dee22df221a0bc95f88312e8ac9cf03a6c140a8c151b354617690b5be54e50e1e247498394ad56e65e75c430bfc50d273dd5d62074c52073f9808badd3ced9e2fa29b1f51d7428c0f2483092470a30bd5426472a27cb6606e1363594c3fe3f301f48eb264276d7c1ef5ada24e279e68316fc56e0de04693a7e4cf8a7a8a919105a051f725e9c4c91b174ecc1c49c5133187738870fa8cd918053a809f23f3cd7407ed283d0a60d9c072f0ec1f4323b1a867b1b1004f675bb92305c17dd650dc1a4babe328dc99e97402897250b27ffe08a39822753736b996d48661ace17672de1498f72ac594632bc659b14f42ca60696aed84c35b43c10682aa47c296a293853221f5e2a04900a8d9e0a7c6681da3b1ab04522c06324082eaf05d940142a881bc93495ff48cdd30e8e7c7bf47b49718b4c578b7457d7b6a6897c6bce7dd2b30d361e2cb40855a03ef22563befd6114cd8c5246c35321cf1f0b654f233ba74b023b92297e1e4d7059e25b1d69d1f40ea17501c1e9f03564d03ad0a721267a9022ce3eba9f42fb7b68367caafaae9d2602a59134c05117f78b9855a93ed4cf6e71630890e3cb88d2236ffe36edf154dc1e8ce8af51bb06d2a4db3bab90546aedc80100d7de99a9b40e4b7543af45404c13b32a41304f683416f71b2ffb4c62aa76496cb902bb0a6ca764bc9d63a5299c7634d318ee7f75c33b01909dab81b0bea5aa95615105cc95b4844825a4c2e0e2f6d32c5c8d983712619c7081ababfec094187890da1d5bc1064841c046b127705609a1d7de0161b62d9003b63c588e98a8e4d055dcb8dbeaa66ee116516dc5afa996cf3dc35167c297ce444261d3dd04dd704a68343bd89ad6960cbe9b1aca8f453a010b41528e08dcc47ca1bab6c51a0f22df0653a2d5702a7966aaa485e9b24f587e3a46a4c34c114c3da34208b4ea8e922952a75e73a50ac395476071c9d741a1d8d6c96834e06a945db7ef3f5cfdda1e1486c5abd4d54d32352b3cc7a43eebdc5acf788acf7ebb17f82577e242dde6b7f93b89a439b1499dadd2c297e8983bd535ec5977d96ebc626d4f4819889d76f455e7443a650087c6ecd9e078f2a8c154bc0cb2cd9dc5ab5048b1a93cd5bc33d3d37eab98989e72ab6bc0063a98376c83cfee02149f9637cb9b5596554e34c9a7929e7c064ace689cb63410c40311250b17718c9871cb66d57313ca8a8ce14554c86124e8467f8c8b5159bba0e1f255272bc56b8cbc6f22e7e5ae12eabfa13027732c60370926f0d8339fc93edfc3ce53a2f8095e7166aa4f04b96b9e503fc86e01dfae0566c2e63fb41abd91e9735d000b45a674ca669011675d45060752d5b9148906dbf3b3e3d7ed5bf6fb67ffdbd79ba27261ee7e886681c7870eb274170d4bba8d773a167de9d0b5203120e61362156f2a3d3d8ba15fee2eececdf86566c935780010136e777d3d260ce4e1bbf35bd26989a222a97451bc3f1e9fa6bab75e2dc1ed3f5eb2087de8d670acbecf41f5c6abdccd70d687f7d22bc61b9af6223fdb937e2d9c72a96b9ced45fc8721933f5fc93f82871c8b7c06e1b3b02c5960ec3cbcec3c60fbba72b6f3b858c0dfaea60631ec94d4d48f8d3fccb308d69fc5ea630bd5c731521f5f05eae3599c7e4ebad24039a951aea433c695d4085752e35b413de1f2fa353e39300ebb34f62d196baeb3b400a5c93aef16396d1678a24e9c3641850f4c186f08fa48d15ffe933436b36a3d791b104c11a3b35e6172ba3ac403e5893f34c4835a56851d87781e11d3337aaccb3caba8eb3fa52acf66a0789a81825eb8d1194f58bd9e019c279013fc789f9ca3820e9f9aa3fe511d749c24ff83d44f9812a58edbcc1c4e33b30c68156633f3dbbd9b8d5e29ec3c83591ece13c0821d4e2dfea90d60934cdc3e9cf2e582b237168022826ec4c28f077c1214e7348c5278bfbc369dbb019011f84c682b2a0bf1d46b540f5b6f4a569dca6c85aca5e667628ec83059d09fbc5e1a1b4fc5b1612c8fff150592aa1a769bafdc3976ebd8f4806b2d2aaa3a38159583a3d99a5ae3ba42ae3902486b218d112ae05be033ac6a7c5564dfebbac19a28df7679ed3a65e3a03d63d25dbbf4c3b7df1f374ff7cd6a9ced787a6d72d94046ca8ec4d89df62684e5dd8febf3dde87951aed7eee857f16e31fb7321036f2ecbbe9885b01d1ebfdf9fc9d803b106f488477665176e2ce27d01b4d660c7f7aa2a50ad54c42dda0bec9dbb38eab85963c3172ff7e9a79b45a80294ec5015197b496fed07a49f5152980fc3e3e67e9290bf56667b2a73a7305218d1f69438f42a7dacccdd42994d469c5643290008afa6144916ac111e82288ff68793eef5d16d4d290dbcd1a8e64d2d37364b1fb7e8e90e9b9f54e1e9da321e795e1f7bed98dcf586f194e0a3b9eaa4919df49ad93b716e3d6565e335ebe9c3eea425ebc92b7bdea494451c45b269ceb9112f03ccccb4a4c9f392ffeb9d49dad24b770dd80ec742035c7d769af6dabffc27fb2234a77d431916530ae857e1cc73a642404c1e09390908be48038e1cf2263af95f80e162f7c3444d1e4ecc4fec8fc1bdd51f652299d087cb3bb533e312daf29568a94a312a7a553e695b3a6e1f55bc4a599ae0830b69ac25ab4d8d267b298a0d4d3db81262979bfed5cc6d061d5fc2b6105990e383b6614b2f79a50a5f2647737ead7cfab2cfa3d2e8bb8664cbea7155cb035efd8bcd448cc4c7fb9d063af3bf4e10990512fa9fa31b59169af908aa688eadb92d6dee7a93928cd529f57d0317ba85f5e3b1432f783eb4aa18c980979ac69ecd24c870b4a7267ad9cb508b65d950bc5053455a546b543c5cceb8d44c5dbc781b3867fb556cc938460e04838e1b340ec43f5b13961ed8d226ed1c12f1a8d4bad0d6f881fa7faf5069ad37422f84e819fbea078d686168e25e00605a02e64b60400e71b225d4da82b89633de134104ddccc089cc6713cb1a7880b231353bf99baeef93ead66c47938067cbc060fb4c00b6fc62ed4d55c92447386c20bcb78c12947e91ca64d6195183d0384bc67b42e5e4e835fdb671567988cf017984575bc6d4a8f98d67d45dabfa2d4437112cc5ef3d6a6d16865820e140ad01566503d41681c1f590e0449c260363ef811aa885922f526d4353abf369e2b79327889bcaa720c7808c89db52aecf038950aac1616509f95117b06f60641e7707939d7e18b709f2372d629a2fe4b3361f0dc3e6db61a73703b321412c5d38c97fc0cb7b3d8ad55140fec39ee5973d173f72f67fd02c79c7ab37b975d50fb9f5e0611cab0a44c29bff1969e57f314fc7ad74a695bbf33d530564bb92a6775575bd2e77be2f0dedbf7ddcef775f9faf166436cafc7179a96f2b9ac948275bea790be5a563f132987318557b26f192094a066ae27fe5ef5929df364f0f076ee293fad8dc33a7945f1867d6ebd42f090e7ee0748bf233bed7f1cef7905b49cb4c7d1f38f70219b09c6ed104f8b1928605bed7cf12645565c30f56ded20db6da3b6a87eadb77bafe68d32cb4746b9ada37311b74aac3486f43131a39179ee2cfd58401c903aa40c113391cb25e59f99b6c94e2642d1ff5a43de5afabcc745d93931ea5a5915172a05e17935cc21a9ab7c9a90aa0d1abb3ab76765e5a4d65d932994e0e6982ce70012713c33a03bed3f5d1142b53b5076e8777fbb43b1c76f7ff1b23de33228bff86a8c6f505728cbf4881189fdb3e7efde3e169cfa59889a457c96d3e9ea47bbd244ee58bc460d94a51125bac136f7224b2292679766cf320c79f3cbf873337f126c31dc8c7d1f2364567d321251b722549f6ecd9c3d2b3065b677be6aefea0df7adb926350f02c9d0ea93c11ce4624b2b47efdf5f0388c9909b62ee94ccd08a04fdd7012ac1a57f7b3bc58e95869e58ed6f636dd25a0711758a3cff51ddede5b0061f31efb7355161b072637cd9c3f56056830a8d05f93c25b5da38e6e75f6fcb4393c9f363ad6b8c40c6e5435b2040224f0909c3ec044aee187b73ab22fa9328da408dd7ccb6cdf2c67cfda9405cabea5bd4e2b664e84f965641d5bd956fcd056a7b4adce604a36256396a32a7a6d9b8152955ce043ab2e0a270668f64ccb8018b442fdb50af8c1dd4eabfd2d54c399f06112708bc9940f6e7858ba9c1a5250363ab835b9c7c19422f7ff91ed4e79bddd410a891c1c20ed9db9f92c55b3e23ebad9c9d7a1eda779f4f9e971683c44b6eb753ee63e1f75064982bc4d7dbef32fb75579e4e6f6e98e9c87fe5f200741e981b69178dadd3f3cebed847c91122cf59bde750b78935b596b3f509ab2820a5b92ae7f4697d758e70e1355dd2baabc1371dd6164aaa3f864509d74976ba771ef9e465ae6e9b1d952b68164824cdde107e056006c8cec5c3a5cdf60aec1f7606551f1cafe0095d7781175e202fb0c3e6bbcdd56077f6387e2541982724a3a6f505105edb45579e5d74e26f0223b6ce2b719886ccf041b3bc8615dfdc1de16d55d3f859870bd0d47b7f2474d7bf7fbef5c264d45f436143b6499b8035868bc4c32ce46530a9e95352e47d5c96f3a502260eb5f99a83c9ee2652f0b7336a9ac2b602fa62bf1588d2b52e7dec2d9635bc2a63656a6de2e854167932da8844afa628d23aade4e862f583b623e8236031662f5a60b05339085e85fc82f7bb8698aeab6a62bc5d894e43be36575f6620ea7238f57268063206453645d4b98a06562463914ca21267b88a673b209a8d674c8b0f0450a7cd4b8a7a1180f06a4eadaa8fffefb4e6feeef4ff4b36e73d6120c3c9e7da49dea201dbab968afdeddd9b34f9cea64ff23f60e9497838f0b75ffa1d6c362919dfde24d875c6a799c2249999b9e824473a9616fe5622f7be36d9575f48b57d380a92a1fb3b4ca2fac4f47e1e394ebcbad954653d1d874ea4be9dfd697a6d67cdaed1f8fbb31c3a426e0fd8b7ba3027b93f3cfb60d98427f79ddae6d3439a80c3593ff6cdd0206daa7d723235d0e82d6044fc7ddbd7eda7cfd7377a6746cc1f4e94de70647729d1cb6601eb064fe937d2ef6221e1bda811c00d6c42d18659433396880c2115c2cb22ff1c6d6c176b21017a46a2145af6880f4553152cb2435069350d28d1ea8ab522deb0a1a97ce6e7530497913834ef28322bb7e063b3a13edda291b4d0cef6812c3382cd3c6aa7bc30078c594b9fdfedc80c0ee409e1dacd48ede59a419ab96b312c35a7ef6b2076fcf29f7de74590a2c3f305eb621de22333f33b688bf21c8e59389a0e591dbcef926c2d5e08c05a10194fe03e48caf615ace9cd5521d0981bf96d84c02acc1918a2b65e54c906b81a4c28d1423321c637b41d21ed7e8a282f2a64a21105ce8f08e57c3aba09a023df3a7b55ca4ea008f67f99407d33aa94378313b5ac23569a8d1d7248796a23119a4f604a29f9ae41ca528a8e5277a36ef37877e82bda4ab2238a73e70e9adbd2619b1780c62ba6f77abb3f4cf33cab44ec7ff14f02ce9cfdfa22e2a6e2f84800f6303223fd36ba78bfc1db453193bd11fbc141af179f37ba34770487435f6184d40017cbb2b6722b4f0e3a1505c18c1cfbb68ec9639f620ad094c48ac1a28278d9d64a7919192b39623ebcbbe2853b7ac49757eb2036b552cf7f608822a8dcbfe164d82030c79a2a8a1f4e1621e653efb6c39a56676c3ee79d75cacd7900d27a3bf85783f66f44731fa7f20c83f5e449d50023f62f40f533c7a193ca1a34eff3904e9fd6e781eb3e7bb75a75cd7bb6e8df3de56950699b1577e5d5bfac6fdeee9e1b86b92924dd21af49cbd06830e28a56ce3cca98e5dcbc1df55c00715c1730698875894504d8327c37a20733cfe47596fba08a88f325d00af92a55bd3c58d4981948f70cc5ad7cc771b914905271b4998e4e7d9d884c4aad4883913a8a842d5c61d905869912589a546561819b88d4dd5d3dd6549a881506d8d2dddb87937488555a2d4355ca420d5a27b06a45ad2f7c11d2567f401940d15645b525ee4a682af2a18eb06b06de5dc371fa647d412c9701e245524a9ab6032226317922190421be4264c06ad6b072b1291051f1960008669e2f6d2a643a23e28abe4ce3bc737d9c0b4e32ff9068f1ed8167082c5867101bd217df11654515c73dbb38b48c60fa474ad52c7964571ec0dce37cc8f4560c3272cdf18a2c1842ce52f491e53936b4f24ad42b38484c0bcb7401b80bfce21619849cd29d0d08161dec9f0b3763005dc52bda969401be64cfefd7e61460701bfebf3d1a65ee7a376ab3a570b9e3bae961c410560626f42058fab2b3210a40f38932ceed721d9105e415b473f4b46eeb25432b9ef20464fb723ac216fa5bb4873079a3e48e22f2681e62c5582a69266fd32ad513a4c18414a882e39767ad722ed3168feac8a8d1c5099b18a856b2a586b2c5a11646bf8d2e16e9de980e8924e2463af2b0740f38a8920d6bca0c4959f5b941bfe214f7ec248589f63270da0b28dfe40448dbc963a007903fa1589e092675f33762262cb115c700e8c9ce03e43463b3ca29b2497499c3c317954ab1d3883dd9898dd45e322d15d722f9e699c915f905401accad5c815c02d5849e681009c3305c33c04a4ae6619da707f3adea62f9881a2c312c44c5387ec7219a9f24410590b76054c3f9b7607e3ae92ed4678aae75b0eb34c42878820a563f19d6727951274590ae0ac8916c40bf20b69c26410d1939b0bb85369708bbcf3aee2ee5dc5d4122bb61017236ecb41da9cd2c9c400d6362e2f87bf9e1fbf5d53db9d0d2a69bf419ba8fc3b5a6fd7b4277ae9a8388d5e7430bfe1b0f593c396a0bdfb87cd9f4f9bbd7e7edaeda63d66778c60000abd4e47f00485953f86953dea78b65b9552e4bbd8bb63e8f3f9e78af278e9c20d04b7ef990fc82abbb2e7ef110ebf3cfd482179fd34178ea437cea3cbfbe759d5f74e735b3f7f960b9fd6985479fff0b4db3e3f9ca755ba0e1c8083769d222f818e3abffaf529afc881dd97bfd75945f9b9c2cfef1f0e9bdf2f52f57edcf4ba75e47281ed75666e894180bd658c2679b2339854d71ed37730f54b36b5036d74e7267f9eedc46cc72e530e174b0d531c484871bc4db20e4763178e8736e1761699c52d3f6ebf4f80212646f47a41b26c21d431cf7148c445ed6543dc6b6bef5c9f8eb18fd3906917d38fdf765f9bded895ec9da39e65205e5551ef1dd077c65338e273363d75fa914ef4b28fdac625e59d84857fbca7553a6a93d33a809aad1ab735c8d317235676ede54a1d5d54c7a1df3cb53924107f613a29beb74034a42c2b3e80e9d9ddb5c89114c21a5bb6b4ac1c1628124d5a0bfe800194e00eec2e5ccc6be3548e58f6f0cbf58785cee7b75249a354007aa789e847abe9eaf4ec1a45850728fb93ed640b693faea4632f7247de3f0ec3c8b6666206fb0c84bb322d78311d2b286e267f52a0852176bd6c5ae45799f85d0490c14e2b5f6406b592a66bd112b0032654d8679104b43835795363a307040744d6300c4afb4112cb26580d1b3e586de97180e995609d95760d06d97d8245276671266820632b0977b123db44808dd425c3c7dcc87fc418904d0884d9a2188ad59274a84ba0baeebdf1701657a28b3d362e087183fc86f454099caad85a58de4788ac26d00b8131562a462cd662b971ea5addd036d166492b603184df58ba3a7fb2f4c0ea2506b2276133ae5a0b7c038980e6ae82a526902f17917a295f6cb60a5d175d2119a1b19e3c3fa81c0f56436752230047d5b82276b9f7a682d0c844932baa10fe0da2627230b2f7631dcb94840f9df1e500730bef23cda400e6dfd20ca52af7e48a3448f062c9065e58b66201acc68df0db6207ec1cfb6bc50eab78b0cb07f4cf4cbaeaae7297cd5489ecd9c93beee54a261fb26d62069e5d2f49df1273bf8c4ddb017091567e2b05a9a4314a10fc707241e00a9afd674762e204f234b85bb14f51d80854701f634c5b12631ab7902434e70f394276618b46ebb065ee327009d6631304467fa98690146cff1231b451b180b8c397ad91e9026e308a17fa4a4d4057b10bc65e19dd093b0e6b4a5b2e9f9b759036c8fd69f6495167ef7469d3fbf7df879d265bda2b899ef2cf24a5db5babd2c709e864c124039d75a4a0b34b4a2aff0a0eba8bcabd50ee89aa7e9415ee6dc23a7b22ac439293fd0061dd0da9f822a8f8184f78bd8a423ac4fd039812673952e775fa9a2606e87f2407fe1af87ff91cfcffd62655dfa6a9f90419cc4fd2d4d4a55a9a7621f11f45eed24a03b4fc3fa448e75097d7b578c6fa601b07e63c57ee7dedbed1afefc9f8fdeb78685ef6f15427ff44369c57f5d9f81e82b276993b0fc18f1f65b5411d7c31b566f91b4bdf29bf384ad18b16469414ee659fc6932e9c6f79d4fffb927bee1fbfffd97ffdfe7c0e2448dc4a239515b9c3498a73d04dfe40def1857c71f7591f42afc3cb1ee6b6ed03d297ab7c1710828f623c46a7ac55a68b77c1d82f10aa89e684a68ea65a4e5463aefeafe1fd809e94b573869aa9738e5958bab5947e33dfd69e4d0af5926b68c2191f4ed06a40d01b027d528aadd340d20b8d69d539a1e17fdd3f6dfed4fde6ebfdb07b6d88651399cb5f486a1e29f442b984049d2159cda33cc153efbd62995591d7d6f25b46ebe28d954392b28ac7ca97bfe1b38ad06815a3408ee34971ba846fd2cbbe43fc7ea920b615c4b120a11524b020be15c4b582d8a8dd16e7a1884e9af41b7eb38557b472f504ee357c9d78178925c5b7157a326eb9448776d2f3bff30be9f6dbf1ef651f010af925a7d2b6d3f126b1a6db1de0067e6be547f155654df36dbbefcc9a7eb330bfd9d65896ad655b738d9da03598658bbdee5b1776282ef553a57cbb3f7cae63be771e5edb4a596c2b8c9d4a33750d78c5deec57ec83bc3ed2a9d965c74e296f5a6f65b291bf690324a93664dc581ede96dc55bba9d33db128902cfb65bde9cddaf98153e9b78af5e97e75ffb4f97b94f8958f99e60403009b183f6807803678801191c6ffbc06aa69d02699b89683f356be855a9157b6f10403984568cb6102264de025b956688aa4daae710b6ed07247eb20e5895b63c59631d16493868c0c1606f910f77e2dc30a52845145345279756fd54c207b5c5b66f2a7f14d85d78b53bf296c7d0f6cc2f3c37ed74200e4a446ad26b24a37df1d5ef420001f3469ac23f0634133d409512c4b512c4b2e3f6d01440b62743032779057a17d22cf5b0624e16988a6a431fe1f7111e9e279658dbd3184c9a94e65c64d51480537051c18683d94d104d986fa60aa658e7d42bab8a23f3278e54c3846e3e15329a421871f096844b86260346993283b289f1ea5fbf6d6997234c52f1f79981fc4cb68934ad371cc1929dace0494519b6aa5c0db29622f26ac1d65e7207066930999da9cd059b3694bb08243f0d6d7c691dd5793b688f542c10daa78c6571ca6c6c348acdd88e393f175e50d94b91c37c65224ec69809c78d99b9a54cb311a87eff9f83e9c8de5f1990802bcdc367a9274a994b4b7f662a179ff8c7969a2195597eebf7f1b1eb69b0910b5cc903b130fb5731ae505cf8f1c1c201661ddd13accf6652906e21003c18f7a8db71fd36edadd3fc077c63c3547a3ae482f2d5e651940787084e0168fb7f802b1b432046689c14b57c4f8ce752d5fc041e0cef0a8114c50f06903c89be88654a7cb59c64052fce24cd72115aa4ba78d3ea095bbffb5db3eb74d945bd094c15c1c274c9003b4e4cc4b962f3d4a1e63b733e040e9946f0ea5a0994479eef9cb670a080454b8c88e1c896d7ae552726a99efe57d5d9ca52c6ab9f5aff78f4f67a9be5e55e3cbda42c6279b74174de22211090f2960e2829b78a0f780e295f25ab66a4411c769ab0c553e2ad7fa81685aac05a59d0e200dcd4386263db98a26219245c6a5d81cdbc524bb464cd31b00a300eb41a65ee1a4ed303126072ff3d1992ead8dcdaa9aa6c709974836f492257ba0ba27df0ca6426fd6e13880eb23005791cc635d192c1dde9d1b7f8acc582fd3e6f81bb9576b6a6dfa4af0e3c11b828be0528e8294d4164d80560dac975e2a698bdb56a868e7d55883c354c9a4aab1db568738450a63a31cb535354fbf2e5b848aa48232aab283dcac98d6c499c82e2f1289ca6e38dfeb9d76e6971b3e4fcdbc6eeee038dbf60dd011a0e6bd5d4cd1b2a33784cc5400b3c5b6e363173dee86c76f980a6547dbd9a3b5a6da21c93dc9c39a1fbfec6d3115d5e057d674741a76521df83c9b8a9d8eb1456cf444764153dd9d1c3de0542a9ae4914fe340e7b545b4c112a024dd271a2b9b5fa298100bb4c89ac6e256aa4e30ef8cf7bdcda694011ff0a1e98414ecd9774f9bc3eea9c9a867ab0a624300f5c9a3052a124baeb44ff43a9aec36a6a62c7f274f94ead66453730897f90a530aa1a5c8453f0e4146979c16799c3205c6be1a97b7a623b4d253ec431edfd67eab26a401464f177ba93004f82080ed8b2e2615e8b63ad951d430e820065424e61f1911c9caba1b55a4a42ae209894dfcf4d494bf7eda7b010ef873d12ebfaa77a17747d6faf7a747d27343bb57ac14c42e91abe201a86cf1c63c0d43ca843a643c066303dcf108d26593c6d08b171b368b9d06130669f3ba811569b63bdd62550cb741ecd9730674ccaa408aad269e2a418805ead82d5e8c0892838ca8984c08c06953ab0981dc12409139e2ae8bd31045c48188dc510ed7c160041b043ab69859ce94eb52ed6d92ed80901543abb430b36a705b0f960a6f827bef44de6e813e936b27ccae9501d4ce51e31b6861143465dc0103a78c30b69bcbd5d442abb7abb2dab336e2c8480550ad22154048249393b3442d73b26bb8c98674655cb94b980c3b0ce54034e0b6adea44c5ba091c9b9a4270484a7e18830c17e280817a85308e676bb3731183412caa87e66ea077576a92715c4db51fbf9aafdce76350360cd81e06708810c0e93441df86c5f415978f65410ae1f25c35344849a2ddce7d8e2bc47b02c3086574201f5c247f8635be1ce1d9dffd37855f98cc1055d938a48a8f1c1a9de2bbb34fb458ca9db4a537366e4ca851fe5a5e97c9b2a98547dfafa289279ff098427c6869c726f6d964987c0003b3b54a83b6624720a3f2e20a5d1bce3e0eb2f125176125729489423e1ec8c5e2c6711b070ad3d049f2a1fbbbcd52a46acaebdb53b28bcda41c2928fee4af9f92a80fa7b4696de24a7e3b586a4aca4e9c7d94b0ce5132f9d52dd24243c161297784fddac84a91db87d9035d15d4056de0ffdafdf776f87ebfd34f8f7fd3fdadfcf5a4b2852dc99918e86da7ec35b98e00a2cb1f646c1e635e0a5e8fcf53afaf438b4c8e6c270b310b29979c7aed5aa4c990d17031c423a687661efd5bc247f96ddda3bd55f56a6dbe9fddf75fbbfffeb6f97a3fd1b80555df8c06f99f8b0635526f7b22f53ec5cd3f140baad8c8b8b7e3bc09528a2d0c31a3e6919e738d9ae72743bf0430eefefbdb23a591a2cacb35599b26d5154e72d4f40f250e0d0c31744d958af54c1b6756cf51c5855b892abfec6d500b84d77ee58efa6a8ee9dcb3b02096bb2c85b2fb9f9d7efce38f117f5b4d4dc7061924f115b8b1720df237b69d83b2dc96a783b438fd6700c1ca4306c116387cddc69b9a92e22321c4f21aa9a627796fe4a3d0c4726120ddb545f6456c79a05da4a1dc846c9d15fbbfa5298103464c68faaf9ca5dd209b724f0302e82359df0b053c21d6edbc9866cca380d56b424522428e1b52c74cb30beef838d648ab1d7f673bf90ca1c190c47c0edcc1496f4eb44be59aee35ac433393966917c801b265221b5b5bb1ba43da12e118a55ee50558d8010f751b59098be2235bc5c3d5d9219bcf425e9e5be5a03dd5f02dad4a5302058ec5aa775e61fe759e9c96ccd04919302b976168b84c12726b2c72749a449e25d10cc05c511628679121018b2fd9359065d1d8d468cebe8c90718edc39f0088b2eb2390a2c5d5b46823429f958e70ec93929cb70de36478f6b51779a66ae4deab2b1973d9ee5fe1fe6262c48d7007b1d2c924cddbf910eb611b67a4d5f15b3ae09a8cb457a6e06f3345fb5ec0ed9df92b23c5905da2454922da721f675d4eef11fa5eb0cd24b97d8c6cf801b4125f0ec4e41d8cda504aea65ababa4e59fe7265e417b1fa9dbf18f9208e0eecd015184ee494c075ee50183111303d10d0e747f26de2919164067bce36dbd8ca2491c1e99dcb34499484f401154cd7e5f6d87210643795e926ac320b3470826ccc3ba722612ad82bc8d092069dfc8f0e3b4119159d53cd5a8b59262e6c51302a829ad2701c2deec85191f46870bb32fae9ad9361519a171e904b9bf9d0e8ee83558dab2016150d66438255cf263124c4c7d7931850e13289214913a30e9e21e5e546308905ee2f1766b1c43c3f9ec6e5d67a4bb3d8b63939db277c9269ad62a6305ddc5ad335397239354654415a7f6bcb3a1eef206469ed565628385a72667426671ec5c4286b49c38537bccad99a342622d81611aa25c0270c387037722914d359277db73229bca34a6987daad953f4e9bf981f856e35b10d259e9f8951fe8b32faf8f8d2c7f9763c3915bc21478f43cea28da0050360601d26c5304e8b90b20b148a0cbce5aba063a662c9b626a718a8fa7091e1966e30c8f09be98142ca678cef11e93bc6c681ca679b8486c42af4eb36e1d6aebd74806adc6c7f62267df3a7740efc65841ff06dac12678a7d0bb13b0daa10be8e4e8e5199e39acbe1d91dc5d352e5b74f5625cb1e8ec69b664a3bb43213563d5ae7005a42a5dde61e106d2d92674fcf466cf8f76eafab9ca1da108689fb717f1d6d76cf81230538633a767329d0de8689bf997ded42a35dc59abdef856bdf1ad3efb169dff8fcde1f952e6d016e2b7a6a4c1cadc5c3b8526d6d6aa32e71e5b3a665d8db48a1b7439e1636d73bb2bab2a83ffb63bc078e0723e615ecb05e635238d9b0b7fc5e36b93734826a860ca878f7943b00f9572213f5847416ecf3c0d2a1e4b59c7704db9800e23d78b193c6e8cf42ce817ae1d185fdc78c7376e3ad2f140b774dc8c10558d9999f4df452485341030a055339bfdda11aa9cc3868196aeb85d19c1b86ba9a53f760c0c01d8113fe6dd31f16a42d0a43f33e9cfabb7764f5b99a04ad648f6c8f2efe5d6abeedac94bdb2545954c76f26cdf3eff8deb54867dd5d84c3d6914ae16ffe46b3e7349bf7985862c97a190bc8ad00a46efdbedeef5e1fbef87edd3c3ef3b76c04f54f2ad576e6b59911ec9290cdfc80ea383ef834e471fc5ea962dd44d3235494122d7dcebf5481f9d9802099a05b4741bf052756248161d402fdc226a9e79690d91713eda2e8e47920ae9fac4fc82acb62bbaf1715efc4ed3d38222c2cb2da66155e768648ad10ea3c156416577b57ffc54e7db5b2fc6a93349a6afe2e064e7c43fe258a40e32b3f8ec170b132e9809b05994cd6ffa0a70c14484844e7221b1e87435a95217fb5fdd29ff7818f66d2274bd8e47bf4a77cb3a2233e7403c6adf97a3ff109df86d00cbfd4584e6d5bbbb7afe269dbff17c633b5556e92ef7e58824d48054ecd339e66fcfce29efd2c53b9e9595f03c46e5945dcd69784ffb1c68fd067b67e76a221f9088b96b42a3d9ead8766f4cdd001b037fb498b9c112eabf76bb6fa334d72cb0bfbae61f5bc7a6a5b70cac6eac37dabf516ec8ec05297778abdcc80a7e4b342bd2bd37b1aebd166869b255d71c7c672cca9f5714adcafaf38a1c1e0ecfffdc8ad4f3c4a23e5f253c98bbfb5ef645e5a52f0e1f3ba78c92f033c79fd5f63963e23fb1be9da956596fe200423a8b20cd2713699aafa61d8e87ab492497bf57cbbf5797bf3ffdf4daef09c0100300bfc704376ca05ab428b67dcd953d37a365f2fc34db1a7c2fe52886dad6736f1fac2aa4f04b41067f77273fb9b1c0d46403fcac6ca254c4b1ed2ef6bbc663909c53ddb6f500900076d8b8862cd7b29dbfb1c9f81494ec4d93acc215b81a9000f8ae6c191001115972c8b0f03a9a52b25887155c2e6208c84e337a783811bd2f3785705e827ce589b87aeca63bb09c39b8faa286f5665201a413d64a0403a8536016747079b9a48bb1ceeb2c7d33c9b655a304a616c018e107426812b2fcc10713ad472e62322965d95226e4e7ca26b7d54cabae434f405e4d4aecc0eb1dc6692c7cf046e6d328d46487bc322f5b206c2ad8c1178326433bf55b0ec865eefbee94e3716bc5407f1785f85b454e49557646d7845c8739dbc4d5f0db2c8efeb2b74166db6b03607ed4a5127395a33f488079aebebaef54fa14076504698549d73326972bfeb257a0faed0252f475259f337b2c28cae820db6cdbe83a17d2bede2e4c2bec62373a9762ffaf3f86c76fdffe47df3f1cfe9a64d07bed8fb1f7772dc94f5142de6b3fcb484baaebb53de655bcfb2069c69c803d2ce736be8090beaefc519799dc849bc94d94f16efed6bf3f6dbe6efb913d243859106bf49b4bf54aab4cc434d085a85e7da54d0430b62b6b8b34b394ed9d951906650dc57435cbf49650d854642c231f1d2e7f30e251b020a96e43a982f1a2ae78932ae0ad841306040fa488a397ddb89c4caaa6c6287fe3a7a91a977d0f48bd1c93adfc4ddf16201049a697da63d72023d6049b2fa41cac024786abbd33b973836cab3cbca21935c5fa982a2462fa7526f80ba625506d2763ddfc105922921cd1818a27a5a8fc806d61c0ad5f2a4b4c3780f21337e6e379f95dbcacc7541113f04304248f0e1a4ca5a166d3a196a522a57283fc4d0d90b1371dab3fba5955ba2a85411596f638863f824534eb55d1d109ea5d30de79c830234c96fca94feebe36ff199ce6b62ed417d7b82da7ba93169dfc242fb44868fecd856fe444365d8020b12a9964dd3a9b54a2acc4599a2016f93b354132ae60e2f2891e0504276d7b85912fddd31b0b58a7130b456cbd2e0c0e63408c05b7a25e53f48c31e744401f5ed49a0e88625559b2f989ebb34939ade5eab23ea792e76302e8af42e54d9f4c884537f58fc0172e130a8e7829ef6408a6830fa5730071216e8bf86a8a68e62e9eda6878f8badb3cb5d475ebb0ffaf35afa4943726f8da3e800f8137d79ca1280f4ae1c75bf27d30361438ad19491bc75d36393ad5f5dee49cd65058f0507ada886505eb6abae528b79c7989cc485fd75978bd6d1b44d2cea731518c977bee6004222b2927fcb9eaa1ed58bd49c5cf061f67250f8af30e4ae870699d267bcc3fb259c8670d5bc131eddbab5a2f3b876c1bd06815f0e66c21ff597aed4d2e795e335a6a86a6181be469777cd8116605069a6aba8e3102dc5e376995768846a5ad2572c037721504364b21c77c94892e2166eb634051e416b3a9afba58b5539326b10faa2c53f224b7c60e96e50ea5be300105290ca47a4e2793793ed02a3d8b0b63aa9006701442b36d749b1a646a0ba79a965ee1a69a2647074a91e797996a18e456aef6107e899b5945c15717152c65b5fc2d200ac5aebcf1a1a2d5a062d595d965a5bf7007d30a5d657a2eb28856f91b3fce164bba5da39fdbcea45abf5cd60a075467e7f7d67a0f18e6e5e19536ac5526776cb86d1b90284648419e959d37b0947a2d77c7de249da2beee711716848759e84d00b56c6aea3d9d331161c52ee255e3be19e3e70521c08a6a64e7c786c39e8dc7e2b1a14689386f91d3c521066a6a0175fdc6541fe5efd435701f55aad3a13a0ba05fa7590061d38ae43397c33816cb589b01b519a53a83548fcc58fe3481e0ec62a479d0cd4a31429627989068a1287f97551aa44a3dc3a64166b6924e35a29a8bb8ebd2d6e4c6b415aa330e5b35a9ca5a07593523ec0fd90b023cdd619e0af277bafde6f1f665fab3d208f27398e0de7eb930146c30d6396587604a4dd2dd6793a671396f21b4207f2e9b202d939b952083646e6eb952492fdb31fbc49de98f5956ddab8a828d80d861e775a3e48f5196f1e4b6c6476b624d260233e8aac52b673a1f48c125a3882c5c399fecd320f556c5808d354e67a6955a472b35b78bb70a2304def8c2fc938aaa9b59a9622481d567aa0097e5ef64a3ca9a1de70d84c16e3d3eb4f5d5084c271b4f356003aed71acf5d9e6eb4510747734fee4fec2a473b959bf6c7bf0f2d2f1886bebf8c0d81ee0faa3148a6359dd8472647596abc71083ac65e27737e5c6be53e199873ed57ed289ea377b323c02ed86cbec7e17ef7a4b7c3e3816ebc6e1ed458d46e5c7547db813230ac6a9382cb8b6c207959bbd4f7ae5bc8663c2bd4d7b6a4ca7ea60628d65893a000e8435094e72f4a76011d4432c705bac33755fb95eb2606ab3395bc96a1f74a2b30f7d83831ca9f934aab6e0c779c3674305f17a400d7d9041b95d476cc48dbcda9b00385546595939d7b01a0f08a805f4f64c9980078fae27056d0d87e7545eb0f396b75f4a3f06354896c262ff7a38ebf3daff8095ae33a35d36c436269006c20574019c5508850111db457a567ed7601fbe40e34764812791d9d437a6b80a5420886a932f13319c9ebd2339add05389c3ad23fcb938f2fb7f24a6593fc8d97e939b3efc7a2c042d0db30ef5bab72b59fbea1b16b65391c7061d9919cd713c83fef47eea31f1e07d287ca0d483523680ec5e6c97c7ed9176d3fc4c9e98cd89d3fc2c9994c8036df275cc51af471d9e4e1e471da38983bae193dd20f813d0b60882b459b5256dd9c516e118b1c8d2da451954e9422e06d8a203719e51022907d1d4a2286cebc614efdf89dce0222be46b53fc30ba2657f49cfd98b7196e1d03eabb62f97d5d635f43db66b192c0e62d7e4a2ddbf69e43970e3813c9438198bc66355035b5c31effb7f5cb79455f671181eff6e215f8b64ae68648362895b46b6561911a9705ac686339d54141a89a1f3e47a8dd41282fb9c040974433408242103919cfc1135efc9841f0ad0d1dd285f84ccde5c4807dfe20e0598e44c52d548b4726ec9660548b43a125d007618a99ac40bc8956d668a936fc9bc71033a6a4f4166ba8411982de906862092478b29aac561c09b40228c2a977752fcccbcb800aad144e1972626558030e4756bbb2cd266c1534214bdc50b676c389aae50e882e03ae64d56c0a7c1f120c7656f1cb02e601675c56467924755815b15d791caa5db0c8827c0b3c5306b08a82d50e8cee491bc14a26cfc3df3f9892326bb4404ea97d864d899c8940bc5c0b2cfcc4fd481e0f570a3c1742a6629c400e49cf2d44bdf8a0762705de307860f9c0e10108b15b209072612062b56808d5aaacbc357fd6944f6da2624cdafecf5700580df4c26fe019d9cb702afaf99ecfc4864c7a1f7f0f5cf71ecc5ff6fec9d8fbd3c0d3dcbb147c2d55c39f84a1b7cf672f0e569f0d5b3c1977e62f0957fe0e0bb01f17b4c307b32685f1c18ad2cd56138f402875ef8e8d0abd3d0cb1c7a6dd9c2c838e1551606017cae882521ae6e3301f2852c9a65994573aedcbea8f57e262615c508880b4a1687d7ab5aa3f98786bb2d06fa8cda961bd9aa14e3b2228275ca28cb653210e4a7d0925a300c927a8d31c54940513d5a05619d909de9fb6cacec70435609b2d0166cb611493fb8d202cf8af584c583f4596cf7848cdaa2ac65ee6206775671cada556e19317f3c3efd45cac69634f88e663e84039a43d1e641175d7adb199ba58a7f84aafee3d3dfc86f2a13f9357ed39604793d2e0d6a1d70b456625a323a931b3b137ff0af9fd3cf6eaa35c79ee2c6d61f431f8e3aacdccb5e5bedfa340b70cee4f41784f98f3abdda59bfecadd5f9043c5adc1ce76bf2f6b7452d31974c70061d55baf1267a05b608640556e5d512f7e5523cfa9cfbd22b80de42632bbdc9a4a707735f76caaaa22c6073fe67ee083b9aefc3a0b70f4fdb61d7189d659bb01931a17400b94e5d7ca05d773af8f0bcd9feb5bb3f67428dd0a959d875f53a1c5f83865e6e91ddfb0186ffd0873bf7b24f2ac8797c1fee12c066af8fa5b0f86c1f8c83755271558eb10f7719f2f075a9a07ee5168020898ae633a2a45599312a0172fa0e4ae47a92f66d5aa894051056bbaf4e8595c36d8124505ae6b07ddaedbe727f1aac72ab74353b7f065a782751792d33862a267f2a139f45c1607a03f2e988f8bcb3b3763dcf387e5db83996f8fce6a614f637b9ae67e0d97fa65ac9be530b56f9d19d339d2f4064dd3b39f02323f2ca5e55d199d5f1820e0f7bdf57482bb5f4391b5434c5ad8ac97e0b62c094088d2fc850d458db036d478d090ed59847dd0d1b20f6589bc023951e292f7c320263535d343e1ff89cf0143136c548a5dd140d402366cc51906bbb38f95cedc81f492115ac5b21377115664c336734533aa7366e1648038eb22f72698f403f16e992981e9b62cb5d3411063fd335b5334ef68160f06a596405f9cf79546a112b27666e51ba040a2958b0c6c6553458b26b55d900b2e069ac68267c421b262baa00d94c6d190f2e2626ecb98dc9c19c021791b9c84c926dc98630afe3a0a9aa89387c63c2b12729bdf6323541472cfa5024691a43bec9b98c64298dd28dba7b1a5e24526192c38d32360e5b2e0c2747c24f57c94424fb8b1c1bd1528aedb665335190d403be23b07279c4fbc0401990f48accbecc846ad9c8a0d52bb042881b9154480793d280bd453031acaa290325636c7cd92724dcd648bd1147a9cf4acbb636cad30adea3d41445bb024806845e6073a2bf39f437909a36fa6af4b888a78c5ac43e0c19665229e4d1348d1f0a9f3405278f2cff445dc0caac44380330bc2a35a52d14833cbbf398391d94db8849e8141f47ebd25bed8d43903e70339d8dcf4d6225a2005d41b6a96cef10a04bc8c62f01fbc10842a5406933db24412ab324494b00dd48f8432059e9c79c6de993901324ed9c774cb2a73a29d528111a2df467b4ac79db340e13756aa04204872613910bf94247514587ec53ef485c0c673084534cce32f031ecab115b1655abb855cff00c3b0e317bc6addac1058dbe4a511ed95643c2067020005c641f830853423e16046f20d6241595bddc7505a592ad5293845d05ec0c4147d4f6ab7430044cbcd8e282332a8ccc5d88572247bc71bc8126a340f51453aeec982ce7069731bb040aca522693db2aa941044ab14c427ed936da29441fe9c848643820d0c49ff0947f6ebe3e9fd3e3079517f27d3e22e376b433e3ca2b37fbb49f993777f3e0d25cbf0ee432bed7e9fdebceaf70d48b4b7458b9f734f9df0f52bcdaa3ffb97b1c1eb79b7159edc0123d5466fa33fa2a6fd6ae2372e8cfdde361b779daf64d4caf9852b6dad31f94646181db06af12a64c7885a0e6e45c6bca3a72fd319315fefade74f568626cab6aebbd0149bee8a42d111f84196e30552e4c5e29ba8a30980eec7c189ce0532eb25c8e9ac25470c2533e4a6f0489598162309786607b137de396b6bca2a31930120934aec2f6864ffee2fcf6e2bb565e3e8f6e31585b98471cb9b4635bf66b2fd3ea518c57949a225c89bec2de783a44782c67304e4fa5d7d87b639aa24a1be9fb42bc11334725d355058b098f91fc6d745b16b2b7f91b6b92fc1252c895f58e14e0d0a81eaa826e371027648c96292867b1119c4e268441ac13dd44d310aeca64b144a1924cd8f20ab138902e2769091f7b308b71f1821cb6c753f4479962c6aa40cd8265c3ad476626dc3910dcc0c7050a0f852cc7d24613eb19e25bf2596fbc3f3ad3f1ab22ff23e863a23d5068cf53a80dc25fceb5706e5b5669fa49ad222e06e6e04a746fc1c376a445739989987021b3f543b37368e1347e00666c725d4ef5d882c7587c388316386cb31f38bd6686965d4097085455cef1060356ec10312aa4dd4015fe5be2a7499a5c15fcc0f23b08b5a4d138ed1c4840ba34d03f7c123c83ea2fbcbb36f753a2b658bd9904b6953d28700ce493c30e8cb9e09d658113969541aa49b5ba7ae529bab2c57b81735e55134fe90a533ec261cc5bd0e184ec3de52da8f0b2b7a6ca66c4a343b1f75b2e48aea9a98399aee976711a09c6d9237eadd05e9896f0297ea898b2de0e6678d99a947b53fcd497136513a5471d61b30fb4a0dc1654ea9013ac4ded2e7048a7164ec14a8f49a58c4af4097aeac6a63b10f159387c4d848237d7c787e70b781d043540d7d2690f088af68a14189e9c514121b9c8dd35aa91296503ab5af60dde0ee225595cee64d37593c5048926a8a282f13225806e042420720df9f79bc305412db070c163313edf381872c124e52038234f0d339378b894d71f602004e5352f84a847d66e24e772320612d6382f9636ca67a560d6f761427d4f5de24e66ac1b8b9f65131422b7c8c78af31b79b9956a7cdb21767283a933cf20d8a0def6939dce743ad18b34d8a70f1adb7dfbb8df3f3c8f3c12b5d7c1d80dd3cbc5eeaea6a8eebaefe8e200d50eb8eae6dfebaac2a9874d957618bb1abadbd88e531b2a3f957abf7bfa73cac584e0b027ac8c845e457aa2b55b72ca76d8334993438918a446165804e06e2786cda8ba1bcfadc3d54e687faa137acd3206ed34879029e92623b0d1b84764368380927550cf9de1263ae400dae54e67afa1a5963b503cd343fce031c863ffd14ef7f5159e378bd56bef664ec60b3bb5d7d75d98331bf9cc7b15e7129d971dd2ab604afa7fdf7426f386e72e3d4174df2a63c3811a191df0ed36fcfba6b2b1837cfbdec8406d0658b8dce56d8725fc2c9db0d7f0354ed1cd4fa73b7be5a51191919a5556de64a7b20adbc580e775d9c04eacddb8b27e7b295c73cc6f0ce0a45cb7e514783ec72d4d11d08ef881611d94bd717262f9bebd088bdd304b37b45337b4ec86f6c726b424832319c876059515e29272e1d96cb50704f7f3b7157fbc5f1d261b07f3e75bb1c01b34be42efb0800301a498670ca66f778c315e8bdee9e7aac1e789a665ecc8ca2eb1adce527883b64b61921993649f8fda91a3241db55d853bd7db70b4b6d7e168fb7074f2c22d7843e6ce84dba84aefeed22a1eddcbdee9282f7a77775a959f76df1ea92aa6fcf4e5be53a9bda9a442e19bf4b2b74ea70fdd4538bac1692bf3a2dcca5c3877293ca1473e7dbb8a47cb4ab069e463996a020e8a617368807595eeba954764170154d05826133cd4d12a94ede7fe99b375e89af3a4d7fe08f18aada75e4255a06d833ea3a98e6579fc7dd7a4d9203d91b7cda38dcd7147866ccccfa9505acb4e1a2f745c5b1ec08d9a8f8349853b270331000057ba97bd07e625f5c66f659f2ffb95e65b494dc50bee93cc6bc097a08d073137ae9288634ac61e180491972f7b538b6a9cdf75f2889446b774940deeb69dda1257c46f0e703877f43bdb7cc4ef1438c3b1e5930f5ff63a9908c7ed76bcd948b5f9984c923dba07a4df47d94025878f5d6f7c3d3a8379bd09805b90f4db035dfe194f09bbf7107af02235286942796427168e74f5d8327e1709948900e61cb52976c9e7900c300eb9d7d2c2bf4027a2c35a10c89c5f00f1d145c36b96034926433210ed08bde9fcb81b7505112799c0222536e8456b20afc19281b0836e9ab56d09f4a5fdb0f91e1806286b2fd79779eb2c02d3c5b6f53c4abfc0f44a67b907442dd4de24bf35f0ea332063e18ceaf2db9e32472f81a7e36fe629f3179e3200d61cdd42f41f9c94a44bd28d1d91382ae97625992e0c1a2afa324b6993c2d88699ffb5b1ae37454621623e7457fbd175840edcd60e3cad8229e52691cb34ab2295eaa4e5dcc1c3ad0e111100dc7a6d015c6c103f195918e0d6f1cc2c5bb6269fd8f0e1b96c2182d78ecc014ea8d4a81c7be3d1e331bc504619a14743b11a0414a1026762af4d84ef8d038a81c6e8a4cb1be77b29103c8f4c25a5dc59362e1c8d976fa117d2d815d999c2d86da4f901b60ba0746b1e52841110111de0a6647c2cd6de383fa07b6ee9f84232841fa725f483d03c9928cbda7a958c8dbdf16e00c165dac22b1bc59a854607bb0723352b4c4ae86196215b7994bb68e209277c66af2987d72e54d8c6a5396864a28365884f7a507383fc78c400f2e908e2df1646f3706b624eca3de0a1876e92d302ac1d13492c1b939c23030a23e3a5422a31ca4c731801a19685f4619a081323c332aff9a34cf46d22f46e9aee7a6b9cdb428fae9a5c4c28c8040b4769f271def426c9b5520f96bc36d30578bbe5291dc50e1f2c6d7174d293cc88eda51f63b640bcd42572cbdd15a9a3a645e61c29938393a1d99b58a45520f4544dcc5011cc3d44856423d3f8caa51f004199396d22dfac2899f8cacb5ecc4dddb4b718927395f355352e1e4dc6b2205b0986692b16c2a0da50b04d2c4a66809c479912db90b2fc0ac95251f60a702dfb166c67a36ab4aac9680e5c3f661c1bb38924db8e90ada167de1e31d128031d189f10d74bc64de52189854f3291caac292d81619feca49c15332d2f3118f4d7ddf3df8f4f8d2fe4a797982c3649ee91d8b76d3a30b5ca02a63d6df8ec74909d3184fe53a4b71f04a151fa8c7cf7726b3d75a8e1efed9a1e8b98d46e25836f630bc81bdad3482c11fa288dc0702ee74a0fd944271b755db68ddbc7c984e530bf9a1c55ec7594994316801a197fe4573ac2cf2ab34ee6ae1d6e9e24861a04c4927141e5950c942dd1205e6ea6ea60ba821bd2bc21d7b25552e53aeb617cb8de9be217ee06d5bfc2e06accacec348866e3c897bdd897be474553cca956539df2dc7481092afb2f195bc77c9639437e754f5e1bb8c0a452646c46a4406bde794f311a78baa0ce5414bf52f165cfb5d5e52d79b980c096bbcf414d2d8ca26d66d7d717cd2c739475cb35a003aa674b027ec6913db654eea0a92be6411ba29c74b882fdc49f4f9b6ffd94421abe5c3289822515f31b970feb00ca410e403525dcc80a0da5346cdea0750deaa149e4b2e57fc8482aeb60aa15a3326c314a9d2588bc0156c2abe4d5a8ba57c5811eeeb6e1898b6d378548dde04cae322ec424b0620e64d94954f43f0e0e7896309212d009502110133f5275f88b3301e4dda196c95329d5f28a70352a26520504f82c361885aea181209fd4829f32a322da9f4d27d77de517c2ece988650e812b628a03a7f8bac5b63418e445439bcac419f7ab6e810569c50be6bc2cd344b8104aff94fa0db25422a4a4f382c08af5aabbc6c367a1eb098d67b11c3e0f9483c3ef47a57fdaddbf34c6e6536f8c8068b1bf311ddda3f69949082847291f493a9c7e4e81b01bdb198f1a8b98f1a12ada296c537c64c352345126f7d1f86cf929a0a6ffe43202dbb91952e7271a931b43bb5803bffff9f4703f32585f73d0f6daddc539def5d52f663e80c38520ac0e57c9d6dc2a2e7ceff1bdc7f7d7f1ecc7f700efefffe03572f7dc43e4faf093dfbf537d471d7af7725b958db2110a7d3886977da7d32ade45be492af53a9c7f2795ca2f39dc1feef5440fd3a999cbab2f475d57ddb14063eb58faba4451f6b2b7558a548eb5af8b9e9da2fe1ff6fea6b9715cc91e87bf0aa2d70304f10e2c2bbcd1c2b5ea08ed66a166a98b9e4bdb15a64b33d79ffe893c07a4648996edeabe777ecfc43fba4b9225be8078cd4ce439c775978196832e83ae544bfcedfbd3e3cf1ffaf18fffdaf7cf13e96a545ed9d59c8e81cd9330ecab2065d17e937aed6579ee3404feaa4e2a4df281b2f903223a328d128da3924e13713949fe83d36ee52ae471d6587c828e3a4efca064ad2e9734cf13e57fa2c682dde9f24bcfb0d4c8fe9bfe63f7749a20ef944d97bb2397d9506bdb2f9708e797fbfcd772cdc5c2b32be5291f2acf399f03b61abbcbcbad240b6f56d4a62ef001f7b23aae94ee43e9f1f6228dffb7fffc8f61f7f0ad451e8179766798e7206b9697e915292b231a359924f6315cfad9629135c4ef4cada5d18e35d91f04d486a68c20de93ed36f63aefa41cee6e13d1e1606b3bc5806b267684659dea5f056b9a326558cb750a8706dbbe14a79c7f71af7ef1e6b88a2e6e2fffc0eb7cf9378e795d868f1e74fecb5f38ecd07286ce8abb454f6008ae196461a47a7d675cbc054e2c4b95dc62a7a69a40ecfb1723cd3b9b815e5d2253149dca04c8633611172b26849b0c78733581293d04d2b8ee72e242cac92c120e9daf3402c3184d5e936b93ae8b1946fab2fef6f8df0fb3ad978aa2391ec5c206d7ac18e3d042f5f2b8c140fe97ae23450a2d72c4902a16b17bafbca951a6454f570f1ae95e0c76a7c4db0c452157b81ea87c634093236635c205904e2b2d1e858c24a89e7ac4405293c5464670a6b05a40980fc48762c56746c420fb9f7353fc4ad0f5a24ab16ba2c5623e56645c999c0fd10438f8a18893512d8c56a0d1acdc18619922af83e952cfb4df3345fd832e30eda41d64bc97c8d03a8466511fd0852b4d58d656a6d85ba69f07b0948663c38cfb3f674c14687723523022b2af7560561ec48e6b6854c1de362873719aeaaff0508237203df2f25cd845b40d65166eabf88e79634dbc912761c21ff80e8b8987a64eee113e4ba1d501a8ff4c5e6a28d6416a6f043017933c8b533d52da2b9f0e61a9daa00773b36033bb452fd1706841c44d6acb0b3e696f66d201a989108e4f1c3f25d2f96e7d079f06e95c814325321f9914cfba5d4e3a4c45f7947a0cfc14a8b400f570904a207f5f1ceb2a1e748be0a0799eeebe0fcf33154d61ae652126a1f507f937b04f10aad0d91ef33b12da33a49a1c4be2910958661a6f2878235d0ccd19b065cb733c156d8314b17ae800de602cb6b8157a7c078d6e99b410a643df03bd34023fc5ddc858445a1fc72398aaa5490aaa0d9a7faa41e3393209396999f380b078e255da8e4be3c36aa313c4204cd4a4b25d054907c28ff82a81dc03c3135119c443a3a61cb978ade016f1a3c9489143ffea1bccbbdaa6562fae49ac4434d899bd41de4a9c05affcb1bd7e361183d4e86128e68fd5dbb7440a04bb2ad01279210320d67d81a5946ada834447f55e79a00c684e43efc8a3254aaa3b3e51f0a6fa5bdba9646ad85a7696d0402cf23ce078b0e5a61ac8a617692df4aaa4ba4d31f1a60dcaac384a65b6691dab6be0f2123445cd2ab5fbd1a728148f5e25d5055054e33700ee20a12766e95d9ee9bf081239e958d063c60c1ea84a8ed93f9a58f0c1718af68034e4847e459c520e54006f2ae185d7d1d9586917b2ea15dbc4375bd7c227d857fbddb7c69192d49ac5b889efe41dbd0d8a3be83cd8eec2e89caed885ec3f28937e7cd82fe1da0b68f19c96bfce8b5537ee127c7c7a803dc31c4f27a0e5215ffcfc728f7cc60e715759f2282bd0d4b573ded87a100b14ab5236d66e2c32535de84ff1281e30fa8e64065dc2e2622963ee9a70bb43fff68884c657d5f1fcdf8ff3884a0aa1929efb87599b80811013892912c768364173337708c695adeb3608e159e90e4de1d399888d500f0c4a927e62b97a81df271602e6b0870a8010a8a3199e7598e6e5cbc8740fc86b639c458f072edc9ba2825cc2a656e36c62f844d694469c113373f01dd34d7c6d72d969e2a8f76c3b427602cfcff2b0e5084d75ccdb160362422230e03d266297894022c7692062a5eca2617324ea68556c3c05c24182e932f387657c47e68d67ce77d94092cfb164813bdc905dcd054f642b461cf255d8b8c81f37b542570cfb4875b6b164b2956be680f51604170990a64ace8d08ec5281658630008a8ea7c7a8cf783ccffda4046541c4b92cdd24aca820f2685bbea4fe004e48da69d2626ea13e4d4c3d7181195fb26123a3e8ffeb83b04d57d39e0c18451cb0bab1f54b558b8a95aa83e9fc8d4caed55097b003fd083017562a1993afd8c6dee4b4c5fc7596c2359c7ba2ab58f20fe0e037979958ea5de41312216ebcf8a2a165d7e4798b1c99362de7a63a953676050c75911f644f13e972551e416cacfcc16a479465d70221c37e47796c27eba78b37aee33a25064c243b698eb2561cf9d7a28c4f271d886c39a16dc82712a6b06722d125d05068bf0580258b8920130bb3f030043913d06d05530656b80cb913e057b9a7da36a399dad3951ded6904b48126ec1be748e0c26f09b44336c74cdbd34e277ac974aee587ca141881bf53515662fb056f789937ae52db426e0e6a0672206ebacb6d97e9f48f1bb97616bb260455a9c30182128a065a27ee49302481b5627b2413e9fe9b8a8aa7471323682f4342e81fc299e095b54e3980ffb0132bf6405251969320d6629215080011a0036de6769e6b48436f9a9c6b6e7abba825ca4f772d9fc936c22382783a36a6653e0672b0e645ebe959fff1f4f88f46bc57488911e20d523eb2f8078539b84511a64c893bcbe80883326e941e20dec197686c147bc8c679b0b369d4bfbe69faa6d81c0b596a8281492bcf53fca869fd958172714b924438e97ed47c251485fb2911c6a46bfab6605f86c99ea5154279f9c8f0838be04c75e2ee004c2de78fd838095cc64b0409d54ca09931e6b0ca58c7783299980a41e745cad5a24cd0e075262543eaeddc83b98cf978d27f30c34039b918fb7776a83267cea143c5b9433debef4f77df16c90f37a46d19743a0484cbf1e7a63b84977babfd100e6e63b715798e1734b6f1a0c3a63bf885bdf01086b42a8424bf866d90cbc95dc2c10f69eb5722b82ff759f1b72c45909eb346c2e059e07b9d55372429463e2d7139e8854e675bf01ba7e4e7fbdd0f46e9bb5d52e948f8ebbe1cff4caa7bf9ed3f7e632246d905e4021ec981ab3afb46571e9e4c5479e791bd713c3cabb36f747e81785edac9ea391f8624e9e590f042b9cb70414d7c2a7769db26286fdd7de858d4c3f8e36f49e0f8ca9d46b05827087f37bab4225e3ba4ff5d83fc21c85a18247330d5ac8c7ac6b46897798c2764583235a0839abe17935e2ee4c86430a16717c01081c0ee1b07869868d9b75d580b7651271f23d222021d8e0270b7a701db45ac59d67245b3261d4ccd9b7ad06ea2395d90c757ec9c889402c1870865109a298ecb4421fb80b794b9f149133c79ddbcfb099c78be6db8625da59842cac4ea937f8e5064f0804181037c1b9d67721923854e1c026421c4c689beec8236ec2d909e64d1a89e3362a258b5cc2adc800b834cd8b7764e60766d82187fec9ff4fdee61f77d7fbf7f785e0012dda0fdc10ffec094faf0ea4f5dda9fdbf4723f275cb7ed3675220864c2e9fe4ce3df38e6564b9d9f6656978ddb229fda260842854d5aee19d46989a45fdf7d1fc6bbefc373e34b7450b3e8eae8398776beedaf634d90197e9197d4908092171e42a97a08002097445ec880e14db5835eb1174ff79eaef10ec983452dce64175624c03c3320f0e2c547f3726660496011da326712046612c8e21b33993e80e3c65ad839d6c9f4fcf8f4cf65b82732ed7932512405198e77621317d0fd709d7928a79b08e56631c7f2d1ecee994c0c9076045a7b3ac9ae3bc931be52981e7151a75ecd51d3f53ce6954db2f42be01bf185625da7c91d1ea9b7e7947517a11a5928f3100e2b7c10074d763de6175a3187c403b0b7368311ed1d5605d031754809b981320d9282baa6f24ce6c2d74892aaae8a27de5ab0d9dbb190ebea73b9279c411e9fee5e1e1f9e77e3f926f05a64ec4ae06b25ae75ef551c2e93382e6b698d55e392b2aca8f29103d7920056ca9675fad0d5ec250ee6c27b7db326f56eea5b6dd6b59ac81f10ee5be117e9741c2ed0b42b1bce1fba18a4233f72e82a53f90a2648cc75506cbf7bec870af866dd7edbcf95dbc9a2f89127b8a8b4558614a7e3c7ea63258760e572fea397bba8b2cbfef1721f3e7ab54bd58a3722cfc7bafd76373d3fddfdf1f3f9eef161ce04712ba4342b043197655fd1cab6aa7b5f7bf03ac19c2d2b5aef9fbc883cf5dd37fdf0f3fe8f3d75c49c8a07db0d366de30660303163ce519b2d33f30409ecce852bb704fddb59bf12ae468193eac8b9221621f66bb0830b9ab5242793322470cb46dcd288b47ad3d5a32abd3c0302c26989f92cb91123834ba56f94b3082a93e9d655c69f2201566481f6cd4bb70debe8b88b86ad7d4f5d1abaea91a05fc47671abd4c248ae5da0ea86fe60627c747c867c23be01a85dc0889055025432918eb964e332d99919cc0f8cd0663e53a2154da6e6164443fe6962d45cfcf36d6d1137bf44dc6ce53603bc942e365a330f1e2b712a8051817f8e7c0818eac8bd2f0c369109cd81d53764934ae390ee9c41aeb83441b486fb0ed8faf29581bc98a411e5fe957cd4aebd0d91227b2ddda3018ee06c38708be6e3d859e548bd06c3c705acfd2b57c060b8df7ddfeba7c7e7ddf3fe2427a08322f07a22c274be0b8d0d037ea5f851b58ff2efe5ab450ec0cad0bd9cb92e94662f33bde87074a38eda6b2b434d0700f6e35616da439169d7422a26d691688dcf83c19d724713de55d25fd775faeb7705671b14ec725e795b6d769b2e11ee970d76cc128862068675fe9b576ab3378d03387a75a4027e0bfafcb6c831af673c206e3708b33bf82bc80f48ef3dd9c94439a09db06d565fbe8a4ff037f6bcaaf20a3ef75fd6f37efbcfffb8bbfff1c80d858a0db1d834dadf11f98f3a5e939386f7ef403e7b2553cfb22a416eedd71c8093a68b8af5b3c2ab7af01bb7a2767cd5d55c3310571db0bb873f1effa76dec02d812d30c797433a119550912931768ab07c45073c24253ade149a673b7d8f20af5904cb8dc095a29951c2775d4159d4cf5e0cbb19da92b62d07693564d5753cb8820741ac4a9c367953696a15b3ca1fef36e7cde2f22499d71c9293f5a68b9e2f560bab809264548ee6615a1641acfa673536b3d2053fa7c7f7090a56c94551579242e99847d67df433dd3f8e84d443e90c9d8db75a5de3a0aa38628d5154fb62b678dac5aeb3a6bb90931de2236e84d72e3dc62244c8d682f36d790e4595feeabe94ad17e675270f28f2005c5f087450b78252f072795df296e9267e418881f8bc81912b4183a23e63dd368a00e4b833a86a6dd17e4df3618eb6fe568842c4fefdfaa55669f21cf6e309bebfbbe711598e0b2f2bb6c424250e46870056b95335d57cf5b2dbdd96a5b99566c8a4036333322aa4e2e5e549e03ba88946867c27616a03baee07fb52dbc3c0e35c26550d5b433d68b75356b211a5b3df0a41e48a11cce0e40f242f5675fb6b38ccf7ef51c1cf0726f4d0ed2c27e61ed952e613ad878f814f96d341d3853639abf4f83d45b3f67c5962267f13dc61940d979f99317c339327fc4977b137d350940e446164cb070983fd5701063ac6ff78efc6ef97186c3035e1cf85e817eeee73b4731a9793df9f0720fbd43e4a27661301149b216c13bd7b3eced51da9b3d98c009cb16a0ca93f1c16ae3c5900c7690829483718ec754312a8189c55eafbc0fb848ae8e1781ba817433303c17f930c92770c1d6f6c97b24ea783768e330f5a325b5f18c46d7f6c907bb8d26c36db4d5198bae15d2fc6b12ab4efaf28dcd4d88d42120952055124dfcbdfd60b1851795b55fa2899d537c6dd90bf2d74d6d275a8bb78e272024584ded2169ce8d0f6d4d859253d0c1345c2fdc06ea6d4a9d01c61fe4f17c82055748549c5adb7b241c5920d56d85dd2f6de8bc350ef0792b8f7730b9e39e6aeba644f65b02e03be7b0fcd8d6959db86270ea924901706bcb56f3ec21d82fa88900f9c86ac726a98759ea73fbe4fd3619e7ecce542449cf204313c13f6ccb2016903d393fa1d97cfbe47ddc8646768966cba9355b62b38d2c53d7c57643b7333e38f9b7cc8f0098b31fa2ebceddf6f4df603290dd89d40d995b3becbfe2485ac2010a8e95597bd7a4bd17d1610bfb277103349b2e817c5b0e01d4ba0ec641dcd557a9e4ad4c64939e47bdb8814847970af15806bb944d97d3d9e3886359a5717004670a9925721a8dc31657ed4de72cdb105bd624b8c08c5ae4eb766957f43c0d8dd29890dec18ce3c0699cbcf1a0bb847bdd49df93e7c78520328471e8db0752b7386ac3b8f6a90d452baeabf463f44720cebb3a4899a5620bf952a42409ec9396c3d67a3bc8231e700162d63d7f72351b07be8b9a07e3cad26ee8d291fe7b8e5b3793b1d8c409ce66795f2aad34b159f901f304202656fc78775c4f724698a60bb54db9f864b9096eb31d8d97b5c917b02fe4367ce661844d34e746dec7b9c19454bf04a85cf3b5f93498538cdd0513a0511e660954ed4c61a2982d83cc0abd5c953c0d516a08ef36d609754f2a1bf9461a33648493b810f8daa21115156b7cb483094e9c4a24ff455972c19eebc46a41078e2664c05b646079d756fdb62886ec4764e232bfd8b539047a136d60cdd34a6ccd60ed0e6d648f7341e7835c7f39272dec3272422743a0abf2efd824691e2a216313920f684b3636147e70f920ed4c780a5a23cfcd934d17fc6862b22616192fa413964991797eaeabbbd6dd967ee0bac65391c18a507626b828ffe603bae2daa3dbd8a6f2165b6a832b80d59762a898ca6522cd81ad9531e5a00b64a2ff03e1f25c1ee67f2ff7de78304adb2ef7a6c3b148b548a4ed00b310bc990ec9e0c5733ae68f53dba94d8df1c8e7adf80c4cdf91418d049e3cff082bc05aaf8329d4c2e5da1e83f116d9a932edcae2e47338c803f5f35c138dada525b396f9b658d391355eb696b124f64ce2b1d1cfcafc89a614da14200617db4d5d1c4ce8208642ca9a605b8fb572c489114c5aee66075b9f94df25e381d1f1ee187804fcfc5376f08af76265b6868601120b76cee44480595ec216350753bad41b57683bc3500b8ea87af72fb197ad4fd2691ce0219e348d89a413ca99ea8f2f932390a0fda0973ff5f1cfe5452d3fe0e0977ba6399ae047674a85c806084e2c5423c8bc02654402d199c29b0b651cc8aee3187e45f8d88d102dc14bd36da39d88a82514c45b6a525a52120343c2f0a350173192c198f39e67ba43cc4d6483890b4d7583894db8944c8fa8c22eca440df6cbd9bc938e7f237e98d44067aac79eb797237a87b40a1c6e093699cf658e966b99bf8dee27f20d143e2c51308ea95c94368ce5a8b5e2492281dcff057278248d6a1c64140403754b9dd3cf39127efef8b67b9ef3f1659c6328744125529a1339d87dda217cdb8d8fc827abbb682a2e721c0585a92df6dfe4bc77c58361b2ec820acd69ef7451fc8b2b596955f5e7a39eeebe3ffc3d34335fab0a833bb84ddd064888b94d3e683bb86dd9946d1efca10cee30b7d2c3fe49ffd7e3dd9c6d995530f9269b00623ec8cce3dd7613e8ea9d01154daf4d41d8301b192bf28acea893fca5934e13de55d2a9b79c848c533812b3bb0faa1ac75811538a4b82a03f3e7848332ec9c1fc6217d053f83ae76c665311180f3deeaf12e8c192024e3ccbed55ea7503ed6ae3503cca4c82ded819a791d66d9c8ec64fdac82207160de8b2c91a0f4ca4f52a280bfe7203590f764d6b902a2b259777145c732acb51cf5ff5b8b907720780b2c44ff2dbef48664b80c90523b5de8114092e5d314525935551c538555a33c8a3c256eb2d614e0acfa59c0e08eeca23782d7f05860aa73d43a9b6aaee5f90a9f435620785d1cc345f08a1ea16c11c426f527324e6049a396dbd09ada7e52b0648191f452a7c6ad1c4967674dcd5be7b78de3f4dfba3149527033628051cb6a0bcf6b470c317990d38271c75b7c37506829ed75254ff095e79f47a1b4cc526866bd1b1a0e6bba877180b0808acc4e1246b7c46794d943ed765bebfcda9df93c9005c844eba2d4ec180cdb2ce352e9c8c9e0232dac08c644ff952cf4035d812c885ef907c258e7fbdb148a2e749ae91fcc8870eed05a025802372b11baa63a318166c0aa0454e0b23f242fe3f9db2ff63d6f9a177dfbe3deda79942c29b946e90705e31b951c1dc4e41c6a055418b957563bda952db292c906699f07e4ffc8e9779f95a1a29eeb23332cdfb44cbb6f3b2db8cb9c37a13b7d693bcd51fdca01d3e48cf79f9eac1177eb13db8a252e93fa452198053919f36f9e5de2b7b88039513d9a5a7e9e7bead030e0b41ceca919ec9444768caeffcbaa53c592c13391fd7057cd6f8135bf1bba2ca92138bd4f9b2cca036bddc5bed901129cb06895ceb56d610927ea048ba1f1fa7390c1f8d4f4146d26b1203ab112237aefa11a22216af6e47043d86ad0900f70642f361b5061b6e9173e54c8ab91ddccd07f37594c600a636fab47657f176204c918bb131efbce998d1d81dc5ae82cfcc6d3f564736564531fa473188611503c48ceda2ecbe545363557c6d0c61d4d6475a9e3fabecdf5fb5923a6da5dea48eaa650efa34181e52d422a59e5352af35c043638011e3366513addb39031f62a62e6018233a8cf0806023b7d7413d40d0ef695f4826cbb0c5ab437dba2321058f6e679edd48c94de46e523fa89ebf583bbbf3eb2ccf78bd76ee93b6dd604d3ce9359d721b9b0fafbed44e755bee659f1ea9ddc6c6edeb2fe548a4d7de3defc6bbbee5d6661500835c5fc4c072b2ba4a0dceb8db2ca6797c7b291bf29b17aea68c32919151f937b1d4f4f3ee8fa6e56a2bb8833e98b776b1591b56f61f2ff76f2f33a8beca22b171db3a840392a1c3c681b0c8bfdc6755c5dcf4439a7fcadb3a24321bc54dde46fe12a18a71008081079efcf9db7ffec73ff6ff6c888d6e658946f7047a113ae5c4ab74fe162b573621ec2c88dd6ca377e31a6e71b41b096bafa60653c30736953f2d7b8c1cf60ac0a058976279c86cb9c4dc9475ef331bd55fd6f2f8c7fe9ffa8f5dff8fe9c7ae5f3a8a4727bd94631da53e6f0cb27d41d2514da62fb192332c26d1657d0df602e8b8868a01359d98fd97c915f654e8da6307c38efac807c714927a4c3a59d995a7fa32d44e1d789a4186c70f57b59801e58ff5157d1e71b033779d5ebb9d3ae5bf0bc86870f428ead20afde3fdfdee61593523f244c3b6c89475231d153a129554e816489bdff935c402302a812d811d164cdca64dd906f10cf82d4f043ac7fe6edb91f8131f0b3e964d3a848d9c355f09c1031c2a77f99d5f13e863ab14692e5a14d3280ce1003a84168090a367908f3771a251cc2ff5fc879eff102beabed3f5988b72925f22de8ff7623acad38a0ba428f419589820c77afeeac5f3b03460678ebfd34c96df3d2e3c9f399ddd89d7cdfc354b91acbdc12949518f4a21098597c147e56955ca21f2676459e5637ab9cff2b629db42e236a98df846d1a693ec9a952c9bd3e41c64dc1cfbcfc3f3d3e3f8db51cb3e73c8eac4fc776a8633039e56f345067c52e9bd0cf8453d59c55fc98097927edb8ffb39d2d304e85b41bfbc26ba1227610d0977b09789e36e0530e2ea9874facc7c0cbab2b5f9e2580799538ea2929d0735f867669cdb089e9d6efcd88c9331e1a08ac4f3ffec7c53de9a6ef6e20fb30d8a5a91488fe09a69c97074c8363277dd2693210cfbe9fcbea0c287f3fb820a5701279c45c3c6facbc57125177a79e8a9dffdd8b724e4cb946db9ea9858d39f6416a5d6e2265f83ffbc51cbaf0102558352c61b0b890a2854280f325d950cd9b88acc98d6abacb3c2e4e920e309a47db272019d3616b456b1213281852e626894dd91cca0eada8b179810fad045bcf6a2e5b0a5ca1e7f1cf3d3bd0a97b2a7af482caf61bf5eeec5161ca09b709b4c8156e9d8b2aabf989af3ab70cb3b749f729531b73138eb7ca2c93c28f521b41daf4bc12f0f390d77731a6e06c0b203017032b5ea72a4abc33c9a6046e29099330109ca963ac5200e6ea4f2b2a8f2cc2fa646b3e89c39756960fb4b15fb1585d9385c18ddaa5bc447c03c92b449c755e179f7c76cd5598f01fcebd4bf6ece87ecaee529be0d0e38502e4ac6b898bbbf30c06c7c4fd8aed3766598519b9f33f60a677150d704f16f2d66ec3520c829b031e01ede78ccd59fd7ffcf26d8ed059de7bb5446ff7878fcef077dd80f77fdd1d30be78c912dece16f6d90f5a4245acc5c7ffce2d252656d8ea378e577e70b327eeec6a8e397e52498838de0bdc0eab03df7d433be32d607bcbb4ed63a260bcfcb2afe02cf10365303375641e91fb4b1216ae372355d896d5f2c6a53b20cb7083e66c42166cf1d71245372858494321d6812bafcc59bce89cdd9b53d55ab64190aaa6cc2368f56fbc17623680113782e90bde98146607657845e2b44dac0819120fde6e601022849d162f4015951267e3e7e2b9f7a029a4bc122164c4901e86360c33b778b47091b7feb54ded863abc8943118effd08987609b7b2a61fb28927d509ecaaeab6360fd61d5efdd4cd3f7523212411cae00579b125bd7c859deb5f5dcc3682db93d692ab489f1b777fec47e9692dde79d076e30ff6e5de5a5d3f68ae5d2ebeb400db2e94dbc6c1da8397eb0eb63bd8211ee2cbbd0e3a6da358070373f3c7dd3f1bb758a5e6f5a8ab4677221b0b5e65729c34f69c4cc42130beb9532bbf465327e34c960fa3fc689cb1c61bb0324ddc1f958b8c726d200b7856d4a64eb857c65dea5224685961afe6af5df02f3f0ee9172a784a99bed64e135bde7a03a217a9b81b2b3397b2c6c92b8e3f0d40610fe857eb48bddab3998b0435edcb326579ea6220f8c027a7d8b6c393bb7f61b1d0768f3f1bf7133603893753dc1e402647a673d1682c197900b38e14d69f894c50a71b8c995c470d463c1de34d311555c01d4ddb1c406434c49900215bea5c7472c75be82356b14420f85064899209dd67799b4551209ad0006e358cd00b110bb287ea03f9249425564b35784cdbef98da6687fcd79eba697675d5a4645c3035705b3b19ef6e20239e182d0b62b4a9a44c45d08dc66a99b89fa25ccfdc031813906760e58ca7f567b3a1ca0f6b10074d6f56b8dcdd2a9ba0672257b7d0efbc68b7a508cb63a2a6b26eaeefd258280baedf1b7faa9681da472b2a5a43a061654b0d0eba150e9bbbb6cd98759e3a4f2b57fdca5ddf6c20acfeecb07af7f3f971f6e530ac223b5cd7b8393c7888ad95e1de99d433bdaa624ec16b9a882f0c14b34b6330d941c6459a4ddabf44ee61fbc2f70ff41a0772bb600db0234daca682ffad116681c64383b12494ad97f1409530c710879a87049ec62eb7f9bd482f2bbc0d48bad12e4be51fa025826c1c0c060fb3b86413640c551557ebe0ec26d371e01ffb70641f40df8531291375bc2d9098a38058d3fb0234d1a4e9ac0e1c74606ee6ac1c87409c5716ce84ff58d775f6b2b590f3947ad0ef791383097c5e54c54d4115c1b545c4ae13d704bbf9d8fce41da6d37b54af3959e5e3c474d0d468f1cc664a1eac6b6cbdf1b47d01f24425e0151b626b375aedcc7fecc6f17176390b356c9ba254410e5470a68be3c264157ba81b91552d68929bc827877532a49975975f8d27e7d900f06e01ebb4238df0073a7622fb94f524d3655910d24484a361799127d854b6ba730d1b5063c119b6675a3690fc5f7b649977c1ba2dbd2737feada0bc49f2da7fa0f336b9adc24c2f2956bc951655c5841b6f425205db23aa9ae414d2c7e244f4506a290b5281a8792535f8858ab5f2b278b61f9c7e932629a0f58d37364ac3209a11d8300e0f1ff8ecbb73c19f10b583f2f9e50feb8f1ac6d3460a0e433755531b2572fc4c1fedef9e1677ab188f06c39106d25c680a67a2a1f2a236b2aed9b3f945134e910d381bbd360579335233e06ae3c196d689c91adc6dbf17e34c51e061ebb5a9c84dca06095184cbfbd97ef41a7f5dda30c1c8291e593b7253b958626e9089378609441d82444c22b2f897a55e9da9204f44ff5730a6a0c5e87147eedd1f2b917943f213d480bd29286532d892c091b6edf58309c7e4c9b24478d8de340e786929d5aa440c5d165f218df17c850d9813f9fcb0fd8a99191f2d6b09a59146c2ab431694c5bf4c6e34535434a59feb327dac2e130e70a8ca2a4f21ed8eb6f3c828a350333a41e2844aee567001e05360e65959ba4dfa48b7f128616aa971cbcd5bde9a6def759a7b1713c14a8f6e827bfa769ad46cfa68cd26de0306f95c6c4a56a3c900229c88de57edf17b93f19b07633d8ad93a4ffa48e7f106c4c41800ed8ecccc93eae17b9dd8c1e642c83c2a574048434b273b1dc50bd99f53dd75c639241e5c3fa27ce088f2ee11ef51df817de51d76bc0f1cf15e41ba778e7855898f3f7fe83ffed92ad2fd3f514d0efc807fad0ebcb2ef3d8c57d7ef72524dc3ddfe69f7d40fff9c178d28f65897679bea2366ef1b8ee4a09bb90bca6a30f95be39ace80bcfc0b2ceb4c1e5d1779b74049888ddc48ac13ab607122f9be28a7ca9a2f7de5f225895b6c99553a7b54bf66accafc81c9284acda8a55206fe6c8bc9fcde45b53cc8ffc1729c76c6f1ee61bf7b9ab78aa3ca6f58a7eedcbed241bcfaf31f5a3ed47071b8e2e19747c37e7b55a4e91ffbfffecc84fc6f9b47fe86b9f4dd79a4fbf83c323d3e3defbfe97efc393def9fa6652ff35da3fb68c7de779f3b5e5ae3a6a524e1edfad56dfa647174612af6c7cbaf3f7503d4defecfe77f3778e1ff031b5c071b8c777feea7dd8101fc0224a3dc29845b807f9959d49b6aabf189ba4bc83e72a666f930c9d38a890eddf99aa1010db42734e873495f82a92529beb6cc8a4ed9b8bbf81edb21806525ec646500bb72c92b9788b306714cc64271c2158f2d225ce41685c4237cc9a6e6a2f8ba78c86436eb622b7817fdf254238acd4778b967319289ebcf117b290213858b07c2190590a28ca7b570590a708e5238a9d32c8203b52a6b96672b9cfd729f4cfbd823b4844d6e08c8b4f71229f014936e85700500ba561e3e14d28f624f5cbcb429e8f6d9a4bcf1a45b21d0aaf3b7a33e399dd3a9df79e597e93129fed51207647acb7f43323c3ae8f7e1f98f9fe31f801e2027cc1b5f5b44dc65c8ba9b648764ac5ff4c1c198221e99bd417c4955a8282555c50dc140aa08559bec70c1059d10f81d206f7217dff4a83318d61588fbb369b2de71452f71ba923c70c6b3abfc0ad5e0f431225bd6cdc33f1a56af446541d02355080c30f6667ac87af904eb05bba6c1f2fd94c44f11f400eba68bd44d428659083a52352f55554d97e4d193aa2a33ddd512b8d35513643206ef872dc7e40be9142d6d03212c68a501c55e10d9482dc169c19e008662699d407e5a9aa8601e2b63d32bf4dacf3740324890de25cd39ab29c8ffc83ff20dc40c329008250b30ee874b92b1cf3d8c1ca202e5fca23c4b25fbbc07c23a556323288ec740b1b3803cf19eda6c094e00f67dc32cea704a8fa61a50056e4207fe1ac5045b690b45d5aeb61b94db9d3cdf3f53739570a0ae92b9c4020c10000e5bcffb4296c45874b9c6d83512af73fcb79e6ec6de3b719b4fc667eb204c6f487c0a7f3035de748aa1f484bed17915069be5073e018857e40832b1d47cd0a6861bd72ec483aca28e8cddc81520242033f14da7a085c00379755b79f9deb4691d02e0891f2ca5202b7553530b6cb71ff0821bf059707ae2d3d8ccc7692206eddef383d9f66436fc5df74645b69ab4eee4deedb1e7a76e0f5d5f55297a4469559a4fab341dab34b52a4dc7bb72c711f75c1e1776dfddf4acfbc7f1e7fdc3d44491a506f0343eddb0a54a7b50728357653728aa14c302538d8314e41d5d966ba71b10fa052765150b4c4eb02acc0582c679d70e69b79485292ef74df37dd3f1bee9f4be5241a9dd379fdeb71cef5bdb7debc97d2b75e670df7c795f7b7ce0d3277efdc878e6f9a1edaba7b6278f6de7e7b6a70f8ed0bb9d1fddae3cbb5d1ede9e3cbd7df5f8161d64ae00fbaa06ec4915d8b90eec6925584cf17335d8560fd66adb4ac18e5c5b47a698880353accf433235387648db804a280746f9520e37b7af1c082bbccc9dc041faddb67e60ed7ca0bde8091f2f070463d35c8efcaa1ce5a41c752e477d5d0e2c52652ec779cf78bf1cbd819987ef518ad66a4b4190e3839d389e0dc9a7f90896450c8ecc9d692463c31a68f771f9ffb5e22cf3c7b7fdf3ee6e3c0aab17f53102ec8b6ce0358ae96e35b3f003175ba5bffe5baff6b5ac4a897fe4415738e0656118f48ac8f705cffd87ae27abf863bf7b9e11b09f8b3954650700947b5cd29b64c53975206e004ba5bc5c57e9b6a6ab37d178591722a25b88196099806edcd57c51b9b7fc29b7164bdf292883c9ad156f7d2ede7f9a492bf7ee3db5f8640d09051ca46a29f97b89b23a283718905f141567b8264468615d6eed8540fb6996afa9f6cbd9a9d414b39b6b19d78336f5e23cb96157b7e7f9cfa78fbb763b1b4d955abe64119d5ef1d98f8ffd3f1aa8aa7a39216c03454bcfecf0491388ae830adb8a58f67c6953a92952bda9754971f62d4b0761f8ce9e60db80920f4d3b517e3b1ca53ba2f4c34a74bca95546599d4bb40645dfd60dc93fc6c7efba05b02ca2b0571db87cb0696db84d57b41bd638e0a552bab7d88adfe6d06d8021247fbc37143a13eb6d3108ff7c36757a8c3aae237c963a7bfcf97c01367ab7e08905bf2e66d32de4bf4c68ff9b4afe0636e96b9db934aec24cecfbacff972d7fe6dddfef1e7eeec6a6d1084ad79a93fc9bf3c90bb49a6e2c598ca81c0f22598496185005754b80786bf0a6407cd46703b5a1c4c5db1ec47fb62403034f5860d29a7898d19964a9396723542571ad849992b27e9027eca0aed779f00c4528c1f19b80ff93e972f3427754dce3bdba197754fb992fde92e098f44578cdf06f711d1ec21fc3eb439c69a7f110bcca211bdbf5642f32e08623c7be9d0ff43cf04897644997840db9e3f5da2faf8f2375bfd5a745bb38a091fa67a6a42df76d7816777c73bc7ca36b8aaf0e21e514440f40c3da9fffea8e4c57c7bf4024a5acac500e2c535656d9aeaa02957bc8dfc21883a62f9a9842dbb80e396a2b790ab6d6b0f327939021072d6f2f6b95452a83d7404cc6adeb99e9e7b38a265a598bb372c6c7837590a942a251eab583d0982b1ad45f2e68602ae336181f7a6b429d83e13940734865cdcb78d37132e608191b906eff4d7fdb3def662d1f37c88546a7af83985eee6d62ce530d634b524b7109d5c4721a3abbd80be6551147762db85647dd52b592d823c5230ef3f2d5aa3058f7a1227ded94bd4022bd7de6cbbdd579281f7cdaa21c281111a97917ca832cff0f1efd35285bc7d044a52b1829a5e5eaadfc00ea5ce7c57a08a386cc653ead228f3ff1839ce9f1c279f0c78c2e90a98ce12ca4f725ddc6a3bb415018127ebe51cd78a84be14b083d1f4379ee36cb3486de666c6e94eaf68ba9a98249b19bb11697b33818187c84a473802cb69b29d95552419d708c196bbca7d82634483de9d740f4da427244cf27e3c6d8cc50ffea02bc42c515eab99d10171dbf46021ea06808ba876cac1f750037dbd69992c7a0e433b9f25fee81d4cca3e6b7db68621879f472846a47bc750d0ec01fba7fda2f9c7145567677c8a6dae54cf906dc49e40ed354ca87cedfc2645e21a66aa5620e19a472a705c384668dc7032f6a2cbebd57667351d9b9712d20091fd36fa2ca75cdd2431045911ed2a5d643fa59a6f4ff703f917bf7da784b0d9688ac11652c90daa56a8a5ca6acada2f8e2fbfde7ab75ea828bc45d48899d00e7e2a5b8f62b97c45d9abda7ae8e1bf425a470e982f7bba77f342075856fd26b6f4a569dc6965ed159255a3bdea4a232767cfcfc3e655d311b69fcd977e289823b3568394d67bcc96468bb5f25f9b8dffdcfddfdddcbfee8385c7399068225adf180f27d1ec8e84d80e2c8c725a2be160556da4bc6915b0775eabab5172421d31518f555d4ef66a130d0f10d14ac5a0936dcefbfddede847aadabf9b27bea45dbfdc07bdaec5f301458f152c3b28f5fca8938e7014838e3aa8b20d60d86b457df8494b24ad5c73bacafd73b65eafd12f4cd74a3cbd1f8dfaf0f91863fb879fa78462459ee9420aeef499ae79c56227a437b86dbcf21fe5b6f1ca7fb91c035159bf16e1b35195eb9bad571f886c487fe1fca51a1f7fec17a5b9f77cf2774af46ec3bef744b6fb4b1700f23fb2ddf45a63d8a8f2619dcd84def727999a5a2d3e7ddfbfda4e02d14a5a15813a8926b46082b8eef1e0201c179cac9ea5a93c5b93c7d9ad2ac59415d1a10ff9f52b61dd60721a35ae5ae61d582ec9de020011996f62b2dddab271d0639525201a78f59f0e6b7c9a02cb6bcaa4af4787517e94bd141a413d4aee2d6c3782d16414a372b3b80cb18e2060b6bf2243e6218afb319a927775713d580bec466ccb41c78346e31313240e6f69fa847880d9c8a30ab6f481f308f04a607c5d70911d75bc7bf8c7b488767e005c7612202f3012d681ab366c57d21840ae99ab98988768e2c773814f20a2eb10cb4ddaaea56b4c6121a739e8082466973f84c49c4eb30fa3220e0efa90b3dd349d18595b9284be32f3a7a3b57500f320b4943f9593787ff7b0986562006d2ec598cfad321991e5f3465956a01d5bc8db5743ec17e17ea4ab5c2504b1e251bf27c4fc29db6c2045c855e3acd5ddcf89e9cbaaae280b4faf99a1de591b1fffb81bf7fac7f0f8d07cc9a8bacd9a38d9c57c6bbb0f85d0a3b2f58a2ce4912af648112b66a3dfa4ad1fcac1fad3721eeebe35e52c4be4ff8ad92c2687b4cc45a3ae1aa2e7a4232bd48e60b8bdc6dd72e1f9adcd4bf78f8d7cb9225d2a7ea9a6068597b615241fc9651b8fd97bb87247cf3999ce036cee4c4c2a22f96c574d81e156ac5d02d405bb4ae0170d10a888ea7837bc2cd93e2568222ba1955a58d2270c4c6fa22a17a9eefcebe41b1d5fbedafc8963bb0f1f8bc2fc7c78dedd3dccf1f8b40963d6d60e10c21cec185505390690a851fb41db5137e4e0adcc2d268e9ec001c51ee7c516a6b257b975328bdab4e9c6accb60e55bdef6b03fdf37f1faaac6e1b26f62ed166e968522e327c97e709b0f8ab6bfbd04b34095fe6885d7771b4c56f957c8cb3ee71c5c350a669ba0ca2a596fc961152f6989b2b26b7b54332d91dce76384a4efaa5cd2c3b6436c11e4b9c9fea5761f7ad8cfefd3f0f89a6ffe3d1377c5495e9b72ad82741736f83b12875847c3cb39f02db6e492a89d011d4e8e3a189bb403263280eb07b9dd3c8ab14313e72d8acc771bf9ee3c79dfa3a948650540b662b3820fd4b5bd1ac70d164817a14abce31e1a6531ba4c568480a865a67e34a2d738c4912da1a35e27b144da84ac4d7114b0ee3480f91dd4ae2308497803442c33a398bea922c71d192c8f22d7cd702ee90654c61e70a4ce144b3c78e7c436b22615b9b9132b3c7bd2d387bc3cb79f3b51e17612a4756abb2bf8589c910ac0ae0be49240aad6f49f1d27e2100cc8942a361bbb009a0667b237ce144a4d47197bd999e45153c1d8ccfb48dd420de36c4f6f9c3d0897e53ce02d0096206415db904dd15a37f60c642507634d0554162159242917e91fbe5d035d47413fc53aca7c150325306f523d1140c042fe737cbed3d37edcf7cfaf3977cf57e6c1ba431a2e5ce155cadcb49e9574a9d07a61102ddcf367232889371806db1d8298236b86d6db45bc0c8460c04f8d27bb52b20ca68ba5408eb47bdc4a2b69eb943f98cedd20ebde4bdd262a288b77611190d7188bd8fb82fa52d48eaf4d13413aa243303ffe4eb56400abbaded2def0281d91304ebb4dd96693cb68210771c89c3a3e7c8b89b73011e0a1f8d64d5cf786c7f6d0e06ffaee797fdf225d6b13e2b909ff2197f0be83137ad97aef5feda057225a49e5613565ec55dcfc22487f35a213755e0bb49f5af2178967afb805579e5a6ca4b598c2af55a28676c94a19af6c3e1cb4bd1c1baf9f5bad791a83be1a1d5b19c2ebf480d2adc6bb877f709a01cf9b7b03ec9957319d97df36ec26bc8f41bbebdedfeae6c9f4c18d9b7cbdcbcccff7f8c77f2d1369db1b4a4752fd837bf5859a056bc2c9de907a45a87fbe3174d4b3794d3e363f5cfbaeed87674505333008be0a2688558bf485790b67dec16148013956e05920cb1b1827c07ae6f1c54d684dc677e83cc53399a748fcd24c06e3b4e3b5fcc6d6a5be7eec9fa6995fc79256d354c0c1429a8d9eb4183df61da387368f5dd6fef2499b87092a62178acdf3bec913feaac9430350ae01a2edc0c91d264f3551dc4627de736656bf036b716ebc1d89568f581dfec4e8498bd193cf8c9e7269f494d9e829af8c1e5255054fa3a77cc0e871bf66f480ed86568ffda8d59316ab27d1ea61300c668f9519e1068445b61a2f4592a5966f838d26c7097e41728df327b5ac5b64ff38f6385adf566623fbf2d51653b2f2bfb637fbd1e9e5fabef071b83ceda7fee9ee8407d99a0aa3d8416a9c0e0ffc8aa692348875d81b086f9a80568b6c20438c17eb37818535031d506e6d40aa5b8524a1b306d807a4ca55da941689059efa80de6ea45b2090af1a28477abab8356104a8d8b17f43fe30810985bab3c1c19bcbe2d46d22352e1bf96a6ef286b50d17b84de8964483a534a29b06e3e36d302ea9baf107b1d3a596a1458ce266b179513ae42d81e286dc14a96e4daa37f49a91ff96550732e79e2176e96c20ada9c178a936c7fd91008e26929a05e965b9907baa03a34c350e1dd637622ebce78610b08d4c106175241360a045746d0c84aac18b51f17862ab91974286ba7ff91ab8c9d385a58c418633e0ad48c0a6da74013b3f35745c9c74cbfed0ed8b9e19339e53339c4f9e3d48f73f7813a4e3642cacfe5c436a3a460607bdf4eae397d331aeb88da783e232da382c636af96a3a6a55b9c12d3dff79ff3fcffa8fc7ff597c94ffd5f1f835aa6c226d402723ce44f96fe28c0e5acf6d19dc210fda9c8445313471dc7cc670d40a58ce9cb82a708d899b8a2b41c7e2ad7b35eb57faf5c999a4403fbb35c41deba59557c073fbc90dfac3657a9ebd08a91f40ec7e610e3edc3dfcd7ae4511c14400a9a6e075a3f0b4f5c6fa0663b048e98de02ee8fac6ad6655e35c068ed9ba1b99525492d149b41910b6ede88a544f2f07829bb9de4081d50659823223bdcac2256b762810e83273d92445f23716ac825226c2b09044e580f2d6b63ba1686d3b2bd39c3daf2e84dcf0fc8fcf777fdef53b99caa74539ed2c996373468bf8729f4f1266965156b003962cd6331d642c071d4df2c0aaac72ea1c8ccf379101175b55205a24a872a9107732a8d44943bf87cafeedd513364dd56fbf7dfc519db6d9141fbe484350ea6be6f613cba86247b2881902d06a8cd9940c4a7c1b46679a2ed819337787f4df60baecb617592fd3cae6c78a3edee96ec93263cc6da0963650afdbe0024c713036a5977bb1705532d186112c03e8773b53b3977f0d0ac340e53c5506cabdca2b48c44d7408b31a07392019480ec6a314c4e59da9271a655801ebf9a43e5314227a8cf8eaa8838c4979797501b1bc54c716fe79ff07128ec7bba9393d2607b0020f62806e01b2893dd57a198f028b7a8201663d96255711facee410adb08c03ad340fc3db31875b4c908c607b970f624cca12150fd1a4f8722f833b835acad262f799cb6061f4d7e24b845cc9161a9ada71a2ad40fc1258126dc1c9be001e132bcc7787e8ab9c25bf6558222ec24a15db346853e22c7f20858d2dc85b68c6606ab66499f5d29485f9aa522901fe06dd00983b8db9b968326741143d2ef68bd8701a94c952379e12f691656e6cc58cfac90354042d6b42c33665738aa7c3e61e6c831c90ddd3634743ca9bf3c418356b29b91e4fdcac4b4f36d5d0e4f3997d0bc204187669b635a5fb4bb5db24a6a6ab528b1e6e4357f17d942f6d91db741e87c96c0f0a540a3e7bcb2450ac6c14fe664ff2ec49d1935eda191616750b1d27e964d215a2450e7b0ea8fb481288cabc7d047d5155b03703380442434ba5ba9185d500501c7c0fabd3520edb7b9aaf15f9b7788ce5226473124f732551ea12af78b96d3bc7b2d2eba859fd1b2f27ebcfcffbfdd35ddf903532f98b7744e26bd8f7059599640d9ea43fa3bb95862df2b4c12d3a4b953e73b0c685c19950b7368ad7012059d93806e5d1b0b838a86d82c9f9e55e6e05f1a25eb33e037c7eeebd614cc1ab763d935492c90ea3b93a08e13940131c55f19863934fa5d1a195de0610b4ae3db930a49f268e4d97dab88ce4c32681b086e3cb34616af0d7a6c51f90545d1cc7a0850f2e4f23bf258f1a2b197e870bf3ce930c4990d340723d188ed082894dfc85417c86be45312239762ba73a474c0a7270c5d780a28a9fd86703464098815b8de6396376b3595a14db9832e9d6647c9ec0bd2d13455b3ba10b1f99619d201c6141a2e9384a023bb42d0c9350572ad9c6988d0e2053b214a9982e1e643cf5e4b9b5ec83a6c8343d9968489b2e7e3f05100be66630e37b8c5e7430d2a1306e92e0ae846584929f94aebacd1cfc844332f5df92c5bbb027495504262f796056e0d978cc7526ca94525363cd2e06a95132a3e4dc1a4ada15aaf049ca553d88eab314aa1817401beaa00223358cac7d315da8398f5936a00f788fa93716ceff54444898b1aadb1da982a44aa5fc881ea193e02135212409dbe3b140e21855c81d9d88ee9f31094275074e9f7cc5db3810e206bacc8811b5e5148ac832414b4fc95c6a5dc6f08809bf95b284c612854212836a1d8706067f6441e995fbb60528ab5668bea6a35a426ce34bc696743268f36b4ce618b438150b5543b7021cc12935d30ea844bc46ac9b8e3e6e885c310b995fa511e5c2a87178d0439bb62d54ee65f025aedb35e30138aa5a45653eb174c50418043a989bb03a23eb4063a90443929cd4493db74402e099a45c21caa8b1e8a1624624786809e68f9ce1abbc4646b848482e531a406708104670d072924c9e93040b18039ab2440aad596e1dd3fd2f15f59ee640964c578ca66240f848e306d10907467e67ac1f12c0c020cb94398b34f4aef53c874a4e76c256b0d812d293918cf1f8e79f77fdfea8e41a7f3143341c741ac221ada52ebd2ddfda740b3b9db095893fd2a9a2a1fc528ebf58fb5ab1350e3ab443f92ce3ddc30cdc47b64f696e422873683b94b3d836bed0b6fb1d845e2d1fe4e56b56b68c4ee74d1c8b16733f0f61d44531defd7837ea3feff6e3b745054b2662cc4be0e3f751d7c6be66b14f873cbf606c8f793963429635c17349934ee5386783bd18316de8f5890fd15138595c901be9bfb2be5b10737812f2740b0555e3ffafd5144f129e02cfc856447d8bb1062c6e9e32f1b7200beb406dd33904d6509eccc9263b6e379e36b582ab87050424f7da74494e1edd4ceb04688abf9e7768af12897d8d06c52aa39735c1327fa27868bddfce3fbedc3be3a3cac6561e574c2a202054f269d0d9b4d67a98b3abe7fd2a79aa41afed3b5ff6ec0fede1956bf9ffeb89bfd30772ff11ce584dff97fefef3197ef8dce1fb63073ef6f3e9a48b9f2860b72ca337c2753daee01041865479998ae61f9a1f34febbc9d2da4e45e3e4609b953739a978246b5809349e049f96a887bb1239345dbcf1e42e13e73acfbc762ff7ef8896ffd87ddf6bf29b2ec37435f27599cb70990c74b90f2a5344c624160f953c2498b86c277f028ae0b67eb089b3d36f3f760ffb514fcfbbe76906f40eb69c8acd230a7722198eca3afd5bca717a026020ca1dacdc66eb376020e9062b5f68bbf52ff7326fc9887007bbb1fe40f7c37de42b9d4ebeda16a8f89f7e932ebe397dcc570ae1acf5577b9c8c361ef753a5c64f05c8b7b39a43588618e9a4b675f0475defc83f7451652bab82451d44d5c922e10f7e93178218f9262f42df729dd3bf22fefaed3fffe3c7eec7fea91fef7ecc220c1128c12fd1a414145f5b825a007523363803028d05a807997d11391a7535e06774f9469e4adc278034b99129f3b59f48ec62b1c529cb452fe64b4692939bbf2c919f2c41ff0e0e05ce2b598ccd513c705d21f52326534df2e60c1c100fb30272e051735aaf524829f3a8b3ccd9b01868974322a0504606a117f1dbc5f60765a4f532d1cb399a5646434cb44c57db20aced2cf9a1c95f24d445405df4e43b91c2c4602a45536032b54222a545c6234b5fe5f1923c5eecb1112b4b1850d3d842165f17e4000adf5b9afd31aac0e845044eb580d2906b9c67b1e1d1d8a6e26ebc389e7c0631a54c67c7228bb79c238d1fa2e26be35bed642aa23c8a3899511e079b9a29ea60bac4bef4b4fbfeb4fb312c8cd876936f40afab64be74caa934811358fe3b24ee0c14b3c832cbbf09bbbc8b3a332638eb3f78a835b1c75eeceb5f7eb794ba60a158d6e7a1019ebb8d7b839779c887b0799b54798887b0795ba865286fe21b07ed0f3a0cf1ca01f234f9cddfdbd4f33ce869bf7bea074c3d415de3a9394eee67a83a6b4d02978b33f1a03dd821e03f5980af9d43b0b61ebcf16ed46043ce079ddb5e1c156808220200bc1e8ab1ed72db4bf3f8c4eed9ca98193d59da914ddcdc03f1771c1ce1ea6e114a885f4c0ce2efcf1dd244d5ddc8324c2794949b6d6973f06a92f8e9218c49892795b1c50f1e13e7c86642a2146ed543d92689432c26ac8acc42abfd4c5d12481081d7b33daf830ec6352c18647802003dca387bf006ac09dd4a72d27b0de3afa62ead9fc32853c5ce3536a72135133c184b2bec2231d81195b1db68ae95ea604d4da355768bb1b7a4fea2c10b8285f71a84bad1c4d4a3269d9db7c63df27e99b212486342cfd5dac5596588163ef281b2c332cfbb805a0c851bf17e446cd7e61e5771cc7fe16b4e37487905ffa689204c8402d1ef89df26ca40353e4dfc666ddfa2bc914c2b190cb323135c7cdfa2e05837187ab07960da47403c1771a516272b7c32b7d0c43023c1315745fc7e17106cf065a4493c2bf8f7cdcd0e0ef6f02af2f134919f70f6945fee751023ba947e499f5cc063d34cbba5c9c24b84d789f43827be9f137cc6acfc6a26ea45c2e1058a652d6f16b8c34b17e8172f27e5dc3ffe18f76d2511af20ef02f288e4a5e5f02395bc4b4c833115b962e0b001eb7b80343c1b56ba52d25808736e3152ee76b8e32e07766a1101c30f159d2c904487643e966910089745865f430bbb22f85b193802810a82f90085ba91f153dbaf310695b1a57491b1c625c3b85506f3af27722023a6541cb755fc318fcbc27c60029573ccd58a731697f44770fbc4ca904d6e6119d542a169169573c96027327bb455323e9a624a04e5ae01039418431903b0203d095b1fd6d36ec27b123b22f7d80cc99cc811c0018d1422b69501d288da929182b017b2d612d3e33ce3039961416e803438e7097b53984f8b98094b258cb0534437a12511c9ead81496f2280013c0e401157b265bad67e9c51e0a6842a887b4b7417bd3c954174d905ed5a5de22fe085a23a680059aad88bc354afa0c8b787edf982e4c8de5c52dc95b3372422dc809352327d48c9c500d2fd15134921660c7d9943b4ad450e4ae1d4601e26885ddc19a23fb35a857ec4c8cd2de3dc7868d6d72776dafa0360dd4d4d4253db71d72db13c4641f9a543af60dd01f91f168720bf77999d50b03c3cc8204090b920a77dea420b3610a0b11a1c1804d37c9782836449521eca88a82045691af1a5642cef76051399e2dbf25049c52c344b806898807d355405abb8ad5c9491316b09d79e6856588da224332e3d15d267ed6f2a1c32bf445c493cffd92d3467b9bcf2b73d3715c313f10af0860711b621e0e950d2d9d8573df53bf7f78de7ddf371ce5296bc9029f4512d002a8057dbf9f8eac25cc655e00b91a79b2e23fc72b594f4b02f46a68e2e56b511968c8b3cbfe2ee6bd0fcaa9f84ea95ec44a9d0195ab37b9523a700faf509b6b26a585721b913f994c585b4fad74cd5ac78c04046faa181585d9b46d3f1a534a6b826946592235229b0a830c8b8ccc040030d8aaa3bc80ccc78258af70c29d937e514f75cefc6def88261e37f463636e6b7d2040a0a499b673d6afd3b45a9967e029b75a113977d41185862a96b95a0c372c1d0e706d4ae08697e33258ad6629c1496e313de4c6e204e523e700e9fa12e85cc645e7df996aaa83768a85f6b16dc052abba494338da313a50ddeeec6ca8bc8b654d894fecf71035048408a6c283c1a62ab329a49368e6a660f20fb00ca3a94de1a92bc62295115fe52acf2e1330f60e83057bd3492e2fb90643e36402097fb5a6609a46264e9b794035c8645e8a5fcac4d6659984b8e4492d652978adbf9b9a88fe030d8574941b2628578e72e6f146e4f156a88afb668604a815a0bf0d8f0f334cb422973cc25ce0840b97c241cd1bdd2ee61de4fbcb914a520c8cbe916921bd01684cecd896a6119a55e3e4a3c3952698d9d8b8a6e82e6144ad6f62b32c4f9afb34d94b21b42701a10c430d5ac46002cc37f04d71f709d79b770d33960569dd4c209a0b2d5d45466c2e9341c6096405d1071152f1742a65e0df6463c5eaf3f2921c32be1072ee75439fd202b200cb197bc37e511c04a0a4da8329a9974e513092a38945c9f25e4df5e2e9a968825555a6acf63522bca09f125b1d89e42a3063db223883140326eb4b3f913bd323bfdbeb7ed83d31005b15d2820384d2e50adeeaa20af7188298564dd8a40baaf22d704513c7557be95772b4cea6a64ddd9a5aa8fa2e2b79d9da6eb0dd0de0588871a301f91b7a1491ced6d2d081007061b22c8620347111c0be4dc642055d7c0af4ec90c80ae9746094c79631c82a252f1a9f2069046192e507bcf43201c25285f40f3a5ec565466f8a8e26555a50c877abc194804298ce8d3acbf4232f7c800341add114c8bfc45bc021e3bab7b4809547e405442ad4226523138621d3f302d94582b05d0b8f3736dae2f1d2735333698625bb306f4f06db60da365e674fbedc5239e835e461d4eb7420817420793a9158397a75e4a0fe6406e76fa8db93a8b57f83f0dcbf8b3e5ba12800d3d2e52eeafb48b6b5ad26eb678ea21ba96e4fa1139b8c2b2a2a9b54fc34981db40ec16e65d1534b7dd345de94196fffbfcf7b53d0d1f2c6dabee91b01e75155d2695bfe1a2f00a9825688992f9be992c6621d7cf963dcfdb3918970afad654b00242e0e4198c999b4ed743a7231565945ed42fff5912882c242a7e81e660281d22c92335f9d4125c7d422249394561016f7c87d8270eb55fa95ebec28f1829fe51527cc55b2168ec7c7f19fdf1f1ff49f77e373e341b405e15ce685453a17391a1b472d9d5f07534a2311ae8c9195b6709e8b9166990232c5483b381fc80037b68e32cd57e56f20b6164d27ee92ab2a8a252f6745ec28202d5dce16d74e11be2d16843b641365ea4b6296cc89bdb6edfb9c6a10e740504aa1887076da0e3817010253e70bd2473f534c465a928c2fd7d26e3a778b8755d67ea1dc12064e51198ebaaca93d53d0908f135b32525576e34d86a011f497613a4b9367e4006c0b22a6b2bc07692a2915cdbc99b594f194c65a3a0658fe3d8227ae3177169808736a334cf70c1f6f4c4c6c2ea545815ab4a330af0027f88c4885334d60e316b22f8a78f71f8fff4d8d3f6c6cbf3f244f2416ce37f95feebdce2680442df58ec034b1b2109e0c606283ed5332ac3c95755679d2fc4b678099497762922cb536ab20bdb26e9d89f10640038fdf550641b5b27647519dd6521d483a2bac5aab91b79974312172383cedbfddf5cf7787bdde3decc67f4e774da2534c238432186a002d361460213c61dd8dcd4db05181172e436a4756d01ef9561819c1b03b1857bf7813018d8f7e9e26ab3c4d775388dac852710a210931847bbd20229b9d8a6c5f94c08b77ce8d398b9d3c88d3d91b1a7a202449eda22661a3221419bb35322217384f312e27ee19bef5b58d1ce9878e7c5e85ec418812027025bd05b07940b960e67664cea0aa5826a7462a2daf00c109e5a8940b1822e50f1baeb278dd68e303236ba6588013e09a188aea2a67a4e290b24fed4bae3248d962563a7667b1e728de8e538dffcccfe1cf4a3f71f98011230f2f3e04163658f5ad461953286050b3fce411cb5fda22c1652895396832d6c4154770c099004d7ad4902b231d07473facc8e48e14dbdce0ac761680268c41375c6a9c3f3459ba1c4e8fb5ded8d0e8ede125cac4d0debb00445e34399be640d2b9b3c71ec5f86d4393cb2358377ff0ccb1978744b01387027317473904ca89b1f53e5709dc4b32978c905724997fea0db2b16c40282e885d0d0569065269ad7b710e40a14c627c7162c96183906453a433d58f4caf0ce228392660cb1139e999b3a56a103f93869a41c696b48c8de9d842f0b56ab67480ab3512f51d4a8fc1006a47e012620b5b87b6599b012993571097b826b7565db3deecc88825ca8f0d1bcda8ac14c905a99cb92f25664e7ae484059815d5b7cd77668062ea402c544a5ac9d27240e4a9274a0d2b86f8f48b3202c2dc2d8d3a6036c5ac032c786edad2d263d80dc40bf7cb9bc7ae640c703d32925291b0ef1b2223322aeb633340811d07e09c9f0ad354b1031111654ab6e90b6aa23dd991caf113e2fed20b4ccd741a7d3a7070044fc878a1c2ad6315259a1a7e4e8795b194ebd810eea5c5bbe2ce9980d06d707101e27880d9e03cf88203739823552373dead6e888579c10e8dab47cf07723e17f75133a9a4804d278fa4e0662a7af0bb86b90b7326113697a9f2dbecc82a032416885c04c301e6cb97f3132ba328fea8505318e08d26ca8008a1c13ff80f59214c33f448f430d1932634367eb5c0262d4c9dc6cc4b9d4bf4fa794276b5894e146c62f3b5095f30bc55e7fd80402435703358b3da0eb9c5e061619d2ce36d77c141da9203d3cd5d71494a5f3ea0220bcb662bb375e3c85c106edc76891dd4359769c4bc0229c4061790412c9615a14261965ff74c6111e3030b9b173f01601a993fd17b027a4ff327ad02aa9deac7a7b0721847fe5f822a4f9f459587bf01559e7f1d559e882a8f6fa1cadd1558b90cc9804dc654f9eddf832c0f4096a7966895e65d91bf802ce73cfe32d307ff9b90e5add7ed1f9e774baf83105a79db047f87a5f9602fd050200f0ebf48554acdc777c4cfdc752aca2b11845bc4d611f8baa4fcf1ef30f568afacdb0439ce1da810fde3e9ee81f47541d9b449071d36e192f2740d201607ed0e0188db0b069d55f2d1c1baad7fb9f76a4d66e592d2c81db41f6c38f88f45beb45561d06e9b91a28b477bfcaf7dff3c358ffe22c8b092367e70834d5b31579dfef8338953f786a0e225d2ee32dff7a2ef82a8299f6fc69dd0ab9d6c190e52e6d43eb4a7feb17f7abedbe3b99db2f153acc99dce9f3a3eea709da0f6aac8f78b14f0c6d4a65d0ccff7eaed6c56e5ba6cf875b6dcfb4ee5bf72feb182ffd962b79f125288fa1d5ef877b8fffd679b5326e2bfc4dcafad2e9bfa76a2e5db421252dabcb2773e1d37a74f843e4e37ca1186f8f9c778370dfacf9f0ffdc25b931962345266592f5260aa0ec5532b76c74653100a184c4d232de73c88a3d39308d3cefbc28eae2d92f41cc09b44bb92b828b4200475d12c32063a08bf358136e06266f53326ce59baa9629736840dc1919e178ac88004dd29399188cfb10080d964dc495415c48b93714767047980f4b2032368e258b4a41138ef4113c516900201ef80462425b8a8f748dbdd52140828b8cafd6a0f332a0245da20d962f3f0c97230d68d0070e63c981a6f2321fbc8be741e8c51f016fdac571b9b7906887324e01de138e67c31ace063c32431b1a659c01a0c8acc90c173cf0a6e197beb9e47e6b6d16e675b0fbe7c6cf964d82864ecd2b61dcdc89a032e9f761d558e2230c1964571ec0cce935a1968a68a8cd66c204824767e96f29724af73b827b5704f624215d0c06df315663fb6bf64f133e418eb75639ad56d9f4237bedb5fe0076edce8d70c8e4552e017b72cee217f974c2e3d4c37ebb9c540adfd96d1db927a4c572688f9176066fbd6b1d966381c83259cf46e783f08ac646ca723936ea2b5ed1a3eb79fbda4d060e49e4d691860f30e31fa94d98604b352ba14093ebb24b7490424c1014404d44671361a6cbd8b628bce816110bb354e81681cc24b419c15715a00776ef13fd76c6d872c0e1f103b896458cb083db8d9ab25929c9e067d07075438b0a6d21f541be6c049cb10820288554dfab09b91ea941bf22de300dd3813d8975b8ad8bce54f4cb5c386b92ff221b6bc41101200ca8a2b29945b1cb030374f4744abab4407d789e1fa72ecd1bd018f1b856433f4cc31aac1f1261eeeac8249c06b40a43e3352cf6c6ee94d9c3f30625d442c0331486c887b3b32f660434fc431fd61c4a0a97ec674510c557429904e8499b5198e9a6ba8fd36d6e0df00d5eb6505c0356321c63a19085ad0c7fd394e3366d57603bacaad0da64a4f8a439322b12daf3536c8726df61c9a275794a27a93124e80770b2aa87c9bb1d3618a935fdc175373917f47026d04c510ae40b96b109f50ae728bf8ef7b2234bec7e9ca704b94d1dd410a81e4bac890a38346beb30312733a44a398a55793bc063f43d65d416821255c030c2985c7c94ae298ae6dc5e943cb8bef6e62ba4c3c3eb3a99e760fdf1eef1b623264150767acbbb5d10088f9ef1070f90029bcdfa00bb6c842a6e067323e2f899e1a1a21be81a60113ba6d4ff4722f0eb35acf373fde6ae479ae4a5fb3ee36989c9507d6f7b8695be4df4c4cf49ec29533d18f55961d8b6cd0b6372b03d09199860f01818e7f1b797adb090723b27d478ac92f007a2cdf4c279f157121cba2912b64114088e9b65d153d6bdf3f3ecdb855bfcb2a1fa961833af95373c03fedbf3d1e2503a8cf14de487c7cdd3be226f59ac90240eaa4aa133057a9aa24ff0df1a0dd265d470f342d691b8c8760c1275b21e8f0394566315ade8659adebbe3cedff7cda4fc33c2dae78d1a64b373631809a0013c7aea63d81c89f60e5dfb45b7aa0e6090ed6400453a35ececd8948c50440f067d380d6e4fda1c07f760d16d32d886488ffc25c096db7a568e0b4fc55d5f8b5d8c0258dd8697ca84b0d890c812d44d91c2ad09d80af4f01d76bdcc94ffbef4ffb69ba7b7c38498db350caf0c6dedada760feb4889d10cb9c2f715713e22fcf7da8bacfa738a833aaaf0a9136ca7dd6b2ab8e9a2ef2ee7b5eb7ff870f4f9454ce4af123edc77ca223731483f3a82dca7936e5e1640fc49d77bb98fbaae44a1a66b71baf374173ec82b9282ba2e161406cabd312ce837e1a2cbaed0f95d91b288ed6a2f5f91e460df9ccae6242c2487da4ee55fd33cb90d90101273cb55b1dc56580fa42072e95b07535efc945f918cbb0d0a44d4236c2967fc6555eb71ffe773c38a5a3b5c23a5b89af0f4f2b70b8de45994df76d23af70902ab73635d3ec8d3ddf7e1f9b7bf5ff2e4eb5210dc78a63958caa58bce57eb8dd4a56f56dcc9933c3dfeb7fee3f1f9f991420559d970bd45ae0731ff15d22fa07bb0e9603bca00cc0a1cf1fc399e1f7fb487287fe119eeadd3e5ef7f86838e2cf4c2bcc347c28cfa63bf9bb71e2e78313eb0624faf2d8e78b438de3338aecdd557eed25f1803d3c9f47d62a5f46273d34a41b4278b9512d6ad1456c5f4387275016dbbc937d954158c53590595548065d90ccbdcecca4cb3b26fb1736d1081d038198c3c40dc3b63f9a19b4c85d28713b7ef456a5d0c3f663080689f294da101ba1a6d800197ae2cbe2ae8f6576f0a5800e4049ec614a4a4512a0d66deac93fc8724696be24d3162ac6559d38c5305052a38d149b5f616392256a124cae9004e63a95f8f64789ae777dfd9d783713719e483aa88139bb15000ed149282fefd0d128002b6a491f72fbd614319c6cccc77a9b7a4ac5c4de61b201583e92a14c36549d8d606df7bb511b442a9288d3fea48a7215f0dd86531b1825b11c75cc956c77583f4e6f076eefd9c55df896381ccd4057733cb189cfc451656cce2fabf1eef68041cfb9df437e93099418ed64e61ee09bd96c6d7687cf699b96bce6d3eb52eaa97aec99e693260eb1e71630e048df05f018348c0076f6a9c98a192e3fcc52e98ae83bcddfc08242c6a9db8753ed586c434f742b02bb37f5349229397029b0d1808ad876bf670e96bc07fc9df005961085aaf820ca7f07777e587ef7f9b3d19c5abcc4975207f7041471d277e5051fe29441fe40f7e90efd80f1e9f77cf7bfdedb1ff79bf7f789e3b033581bf985ab3fc533383725adb35bd449ad7cb9e5cfa370201418797af16eb45d896c11f2e900ffe90c0ca80748058479cfa0b0801a7dc4d6d7a0f5989a1969daa903b39070838e5ae0db6113b30ae6eece2a6ccfccce7a59f5eef5a9f814c4edbe0c7ee7b23320acafd1f7cd47bed545ced3f17dbe417fd6775971c2a8401fc4a00814dbbe7fd38de3def09015b989e14c99fa6c6f8a46cafa50052aeaa81da4b248b6a70d8464ce64d55de58448932f89bdebe9e439a62e4ec81abaf5fd37206e2eee7cb7dc4f4997b1378adb6fa76a3374979937a130c12ffd9226017910fbd96af1bc9154ed0dec864094686f63fe7be3052222640064216ef8fddebb620f89a2f6e75eb917d6c2fef748b1b602595a7bdb8114cb395879265268112e5ec4e9551b095674a26ca692fd2cc8b8451e3f09ae68a5f5a6a6928f6924363b273aa5be5e1b8b4792f713869a4751364de126f291da2382ea0e893519bde1aa273a4775dfed27812ead48575db9739d429d3fa31801b18e5f3d85772a009388f02695c8d74e4092ce0fec84a80751bfbbb8e1857471f69ea77cfcffb27fd637c9cc1949f0bde44e53e757cd09fcba2b08a84777f6788ea6b9445f413a5908e04fea7162d8e4901423012b7292f5f8ae9baa0f8da66d5a44a8b6a9e901bfede31dcd32906814884d85b8a5a92873e8a31029c3af0a041c9cbce9a800da480fd008a9b21a9c18231c08663485a3324ad1992a681a618a816ab6981b729fafc7c38bd7b7afcf940eed10a83b03606621a62499dfca5133254c22211a69a34d8b4cc78ccf898133e66620490347d1c45f9d5abeec636d003dffff65bd8fcef78109b55f7afbf89d889b751c5dffee3b7afd1f82cbe44ca768ca61393be73dae42e9bdc158dbfe4a59d36468dd36c30c9d976deaba38f17c04b4349e35415c52591fbd5f7ef773c4f4cd3af15f7ab1fb8dfb1af3eefef7f8cbbe766437955aec74aaf87ac3be5ffd2e93afd95d313e61387f904fcdbf2f2a598eaabe2eb02e7aa0ddd25fd813375d3edcce07253915658caa35c4366137f7ddaa8ca6227ab48af3ce2ce267e20208dcc3df2c711a4f6ba29fe670e119ecc8cff7ff324f75ea6da26bd79a6854494ee5bfa4d797087f4ae7e937f57bfc976b8d43b024e6e45c0a935c377f1e6f6df74fff8f0fcf4382e72fb6b5b511f89f1ad67dc9641976d1eca2171411cf7fdf371fb149b90b220ba88975b2a20554b02886abc27b79c25ff1cdfbcbf5cda37610565e910a574b2dabf97e47d91d09cfa96bf0784856fcad5b72c9d1353d5ca221e03d5140313833e4e1c27abaff8b361a60c67ddcc49ebff7b7b486d9e4dbba0c2b28c1775f2972ead0b3d7cd3cf8f4ba07f8086d429b5ee74d42835e42257010122300c7a31d8bd4166d88978a96fddde1a69ea5bf0f2852de3bfe6c48f3c892c1fe54ba1687212d401218bac8da78e5134e0474228c72297e7955e299369001be521b37f7463494e5695b8cda02d0444ca5830f9c8520ba02824402c4357f6739aa686a93ccbe927d736eeb4d635c85c9b8ab25d4b557f9de1516f7f11ae90e7ecc1f3f4fb5728fa156e884e0147e8d1145dc38bfa6c62bcb556eab01347afe565597226b1fb108548381fbe1b03f12435f672051f4c89841cfac2f777acf2be25b805d00eb12f662f4d09aaf4c0bcaf481f92622d5b0fd9a7921a0912ea147da9fa7310ffac7ed603b0491c70b68d09b7fa43606a9aa7006af2c8342bd984729b4d5299b4a601d987115185f856dd9cde77baf43a7aee2b34dc0e121b413d752b26564d5bdb0da64bb7567a2f481f02297922965247089a9745ad4b8c2891848d618d6b9be12ff71a1a63c8434ad27e1b6b0fa60baf7aedfdeec7ffcb7d1628d2648a1b672abea41bada1bbb12d77159b47084d78d54d9a5f52af6bf19dddadd80dd0c18dc6e693dcac24edb0d834aabbd850ab67fc6b83dd3a53f208ec55ded6c16da389610c00aa1d2cbab355f2d999303a3295e199bdf43596a747fe32b07485453d5fbf511f3e362a44c85569531c64a7c020356adef2b43872fb585b133fdded27bdfbd68428b0c3860c25e34d72a80ca21e5b78e3351fcb928834a738375e09e9fdd2a09d091696ffd6e6e1086d5a25f5dfbd4a81239f71789bd60e4900d0550ac653c1b1186b5532d9a9a2b22a1353ae5bc675c36561870079032f5fad53ec4f736469708d367e0935997812193cb84595fb182b3c573f4dcb57afc357db74a2caddbe3b6d82fef1e1cfbbef3f9f76aff47c018c4852719043073617a9a580668fda31578ef9aa976d725494b8da3009408a7f67db2c96f24a0b01bb50d1878dd86869b04022368469340e99ace160a85c4569230a7e8738681c4dca532a85214d389be44693bdc99e265f2639040c99ff1f7bffc2deb6b1ac0bc27f05c2da1f17b0d4e8a0710714449fa3384b7e961c6762477bce51b43d1008895806016e00a4ad0be7b7cf53550d1024a14b9ceccb9939714412b746dfbbaabaea7d45416ec7e4f64ba4370e31ef09c52c082bc027218828092d421ef556829bee683678b80935750d2ed1441df73c20243a5c2f3d123e5ce90def16e87beafb837c78940fb406e310f79c843b9e0b7fdd7c04270bf4a0a44725925b6848e76b83bb615f3123795a416e91b150a248d36959f128c513fd93437482586154270977ac10fe067911053a9e79428615100887f0a936bb46a0681a449e450a6eef5c70c74d30e4dbe90293919dca9df170bbfd2187e716779144ccf438f207ba01d460570dfdab3d7a355420f71cee39c3f6c77010cfe9eb9d135f130587b8dc25806898ffa59ce0bb1db4a1fca0986bf2599717110ca58143a33fdc7c908ba17c7a38054cb33a5f75b4a8882ce27117d16d283682b0f110f1bbb33b6f00686977a813d31d6248b3b7e71ba5137c915aca3f131ef714ef5488c74ced3317d729da5b4db1c310508b839fbeb23d599216004a00b7c9106e710b567f58fb1b90485c4927ca83800701820b2103952ffe3fb0e00c9a9a60a9bab6b61064d544fe3e0b1135104a0063fc518e85f126e8a4e7feaf5d1b4232da39776f6194b98a48b8e758f0a710890d516e2248bb692bf0b1422dc254288687e08445c81dec9b56d03bb60b8a0aa379d3a5000edab47368639aa6cf73970b1bf41981d429c3f7cbda810cce7c50f8076d36208610f4da2e8c0539fdb02d6c6e9f60bc0c56860f7751656cc77f9d59d211e5498c34e1243b6101cfee789c5a2bda61760d57793c14bd917d4546a715164c2cf041eb8e4998eb087d4ec04212972490103a08c561dfcd31d2c623f8620c8e90b1121645e084768387c8feb2b9d01feedc6cf409e0c7dd1cbb9585f148426cd848a9d7bb122cdaa628428f62364389f141b182ae24da25363b2ea92b298ecb143d0a3d3c6511f837a25623236048f168881d644b0c5f9856bb3f380b4f23a480bc8890a40d6a9bf2086d27a47970a236f0e8b5ce101297ae5864b30a88e6d6efc3b5bc8e47d225f2612caf20858db45393881bcdb01b1a6ed7ae082514c0ba861027b62d5908ad3efe87c2d47c048f4d786807f0d72d2fa861237247001d2470c9e8d5b67979d348b7d7272c78eecc3aa770f0a7c218bd536be5ddcd43433c01f8b00a30adb9af3ce5ccb7b2e98de1d36fb44fc3958d6f74482adff5fbfa2a944ec3524668c407be32a0240408d87dfa752f1d7197f015fb7484c3fff9c456fb5808d8b8b3a4ee51d28353ebdc9d05dcf70acb18c5777809ebffb9cf2d07c5937311dccd1d430464837f3cb2033dbc7d6e3f125935c41e45532356cd635e2ba3e09acd2ccf8ae98681de336c1e082534426e3a81121ac2e5be70103091506e4303163b2bf0d0df32707d031d1603cf08e9fb04b5b5d0b514844cc7e042c5224f5f58b4d083147d477ddb4137520f120a148f7b48beef80c4ee20683182fd7ab6a704dc766d83ee8065270455de7369ab7a5611cd18d2fc49a2a13d3a02e2e29107611fdd18902087f656b49881ea842e2896e416b70861c91367a6127077c64d2bb1d098eaf6d8a2a6f25567507345c84dffeead8d61b62361075b5ee062d47fdee93d9d6d0506b3b056068ce97de091fde457864f6027b8c8cfaac5222f6f8cb40fa90914e19c06886ac63d1ffabfff68e0a5655018684ac8a172c131bd3eb0700b728482731c84e3c1205171e2f080623651fb812e3436deb66c6d5650d808708f811ecf057bcdc2e74263eede229ca2371348f2493629e7d4e776784657a8a6f2395492945dbd4d449d6bb8bbae85e8edff32679c47a6d8b1f0b650f167d6ca3e0dcffdbbb79e3cf0cefdbbb9a50881712d70ea6e6e2be669383c82f6ee0e4dc3a15b839ec78f706650526f8a4406c3915ae5a0913ba090f4d0e7be73e6c32a2ec899ca246c3f5ab01da9090de17549d30c5c84a40891fe18f7a53c908a53923f240f0bc27a8d867e35f3a4288cb4ae9aa693433198a690c2e7ef76293c13a60ca7e9c4d727632203194fe382cc637f4538a97cc913a2e9932849b2b883ba98e7e5b2e9dc2bc311f8e5976ece6f925c1483146786bdbfd46f091c4fbf73dfef754b0e7936865ae6a9cdd34faa5c95dd51a2d833d4478681515fe1a6b6ab17f8863f125e25a4977153569faf8be413890bc807e6fbdecae281282c92f12dc74a7818f8f0d7198810ea1dc1c1c290db083fec38f4c381b5e74c203b88239c73118206c443695c3278187a0a064b7bf85362082a225c2160ac57183c1420f0221f651874e9db5dfa4231f7328400f42e416eb8b6b74224de02bdd7d109c18605d28605dac41556381e7741d0f64d9720f02d27e0bee9efead0dc27bc55cb29b88db406c246f75bee87d83c58afb6d243388630843c6f586685db88856a7b5e010580bc0862238269c2b2465e8a575d90f95de82436f7614a0908ee33400f9bc2e622b4091ccef170ff811835298336b25158360fd08b188d10a66450c12221bbb3e96dbf5be90bec9ee196bb8fbb2b68e483126fb7655f2e65a72610700699f16491b1c4dc46a49fddf22a7d7995bd8c12ef14949607b847276ceb2c04910ad9fa1ce19c79dc73d05bc412e3fd0251406c5b7e76c962473a4384e0c0eb044ce4d247500fd331b0976e5a11fa34c86026a2e8d81e0f7ca4b641e1763c796574e038303c5c6e7bce0aaa38282404a6032229126ad8e8460a029ded4017ed5b1e9b6cb7932ac4ba027d14aa18b26729b2c5acdd3e4a2db3db45b12915eaa20830e8721fc19b846b73dbb447de884d83e1223498ecadc114629b510f844a42506b8ceb715cac73d3230d003bb1c10367bf932a7d42fbe3835e5ed0208231a47463726fe429a33d94c6eaa6c0c89d187414b66343920aececf7d1cd6042b3a8ed23279a7dd6cfa7b40a54699e14c63c9be649b7f2c34a20a9593d833b8a65a083038678d9f2cf453e16f2c24040361e7634c97209226e200a62e196e1619c8c307cee9d089bfb3c40de61a5638244a02ec55410c8052310dcf778caa51bdcbbb94b006144698c7b56c646fe472c589f302e09f618f41cec708eec788818878eef1c3404104ea5e1d9a5ad7efc940b6e17cfcf11c207648813144e02c58777a3b422c2d4e2842f60193c505c1ea01389858f407684c47525bf1381df16b1dc868ab024cdad85fec42627be2e685648064413449b4137038cd9234e4acf70c80e8f361f173e302ac1ed49a90d4ed0479dbf0811d5595813f4bcaf78dc3941cecd10a1d43d6a02971a845a41d884cf6ebf77e924e51297e8aa6e7b788099316228783e4863658c44829a86fb2726f7d6c760a731b1c62526a873b1f7d4169d04c26ba0ff86cbed573cf45cf8db984ddd116988dc3d8837e405c2906d8c32ec2bc2bd9378a55f551fe3a0155f5bbbe34cff2af403232916b3e42a6bf334293a878e476a5df26fad0c97bb7b46a79d8a0fceacaee277f0cf6cb917f11f55f790ffbb792001d956389f9f0ac1ed95e0f6cce6aec06934e07e706e9933978778933d43a684c2e68180318a11871c74d6190c61f70cc1a1919a74267810163c840923b4660e173e1c29782478884040f0e4dd1ce15f158f7b7621b80b3397ef9c0aa7404271389821dbd5787318d3ac4965941ebcfbbf43b3204419ae58c2199addccc75181d0e884797290b93a84ce8cc8692ef7dcc2e38ee1f32038374f61825a09eef9d02aa88686dc71565059b3f03ce4b63b333ceeba7773c12d1f792da12d2d7346017404c3eecd2cee0505b993b9de4ce0562ed27ffad07ab82f713747e86287db056d2db8fe8c9b56c171f5f2674833386816d910a019eff3ccec2b83e441f9cc40a521bd87ed3b32178e5946c792338439c2fc3b92dc5864de5e72b0cafdc9f3b9f3e87c8e50344fc6e40fe77367743e1fc36efab3e67367d319fa61296c45b82faaccfd56195d400d0ff9c8ff57ad21e93cfc756bd458753888c4f782a1b43f2647ebd70201e50543697f508e6cedf4fda15cceb3ba5f3fd1621086e3cde8e35c1de05c1d3ed79284d0861fc97653cab95af9dd8dd97b58edb4e8f8cc3dd47c4caac1800701517d2064ace453f1097791905e2d02f3747c83a475f85fa27b229c9be4cdb0138bdb3612dcd8030b24ba7d6c60347dc457059d2d20805df2db21f4cb90b0489180da45984b64ccb63c8aa170383aed58020d890152852716178ea5d0676f87b4d0af1291272dc2dc25b21237281091d622362941bbaa4451efd964da25e05fa43d1088498a0ed2dca24d5b3be42e68905647a82ec8470c9d721c82a6a5ba946ce742d218583e51bb21db01fa69810a0f2f44744dd7436e15fc8d40b65046075916903c139db202eef9d267c90c90a8d9e2017e22b90b0f0d54722c224241e20fe478426464c92f2939177ce239f525010f919fa2098cd82aa4ff984deede812b29d12d0ff9801c4b6e43b9c44f433d00f948cd903a4df726cb6fa43f921312fda82f49e8c9911caa4734e4ea8dbe1cb80520fb238231bbb222c987df94ae74a6ac4bf4aef30944987c1a0889d625567a1707ab15602f269451819bf096e8e80d04e11323d0b0202736047e017dd3c6fe810463c2914ceeb8cdc7ad2011dc460e5cbbb7de4072489b2aa98a2c2aa7c79de0ee2d0869b87521fc731442d13462bab49d4f83001de8c90942f2c25ae896ee227b0bf910229d3d34948dec14444f4c88a80e37c395e08e9859dc16e7626c52db2c77e1a322a8ffbb4450fb4fd70c1e9bd64616aa10d503c20bb6e15528257643d371b8634b3f4b346161377229e8daa25d18873c473c9f9b20ad9a3e4898deb9659e0a7f65783c24af4a2fa5f9c1a3492520525eef6e4e23c6a4e22389b924f6815b112805a6493c2022e920ecc8e64570223ce427a4cd6434c1b8b88d048b9a43111a36b1e53a1e919d10fd9d1fd2d6a219d22c8c3dcdb58846dd27666c9c37085138444461a220839a752496b8430e68d0c55da420f179209dd004ce3836326281ecadc0bc6a875097309120cd1acccd72d30be773854a6d4b406014d2a16b61e72cc88f877c1d6df275f41dc9b823c865c6213cef009b5c21226941f395ed626a9ea0c22043370218235434f9cf48dc5e5f328e99e4c5886ebb044f0df54ff5864ec49e93c22875d0892db0bb77e21877a1b09e071d231489cd4d54514cabdbf6b420ffc186e0c5209623583b89e9de26f22a82bbf48969d9c6ea70d12c661197954f14409e23798302fa0ec9030bca62a26f0222bb23d7f0dd5be8cfb8898c1325cd5d213a5e3ad803843b9ce95d894a6fe384ea62a59273a1dd31ed202f5b40b32c7a54cb9aebf09043625ab224879643a8c93ec17e5b926a1279f905b2d1e0a6ae2420a37304756d79343d84f43c254a2c721ebd899887e410133ee5caef6164a1a503424fc09bb093420191e0dcc20e6943c1bd50ca0e04982224bb351609e40b9aee03a9072c8abc9528794db70727c6d1dbff43818ac353211046cf4ab9ef9336ee233a11f7837d997a0c92c5e67e708230660e6dc2da447e8cc9faa73677c499f375b88ce8a87b02e33cc445570991e75302c1fe4ea25e1bf779c569b8f24f9d157a68f9e482482c0908573e02b535e6e30165c69836e83582a8ed0cacb3953533dc95e1cfdce73192d198faefcbce37ea3f061a9070f4a4c5bf4dd24fd97408f18a31713b8d3ca2803933e7dcba9ba33fcc88d7973b33f6a9801088694fdf1cf78d9b39e720ea2107c9ca9d39e7fedddc089570d4c5ec741f4f48f2973c1ddbfb34ac87a7ec6954e3bc3fce790835e18fe5cd3a0df6b899b199dba4a385350b1b81f63cc5e3a1220c5771498c567c6ee35e89cd9d339b078a652a6eb753e273af40b8f9ae216b239b2fdadb8e7115ae1b128ffe0cc10c3d04e1f0e4b3f816996a215fa278b827e06084a9cf2dc5355c2ef11cdc02c3512deef010ce76a0410ac882f0029b2386a90243db5510b2cc536cee63cca2758669c8bc660be32a493f7deefd7b883e7ac3491012b586e80167ce0225d8f7631ea5557a9eb07c653885c71dc5e1c10612c787d9dc46620e7cf5ee88dae77eefcbb20b908cde3ffb2894c1ccdea7e91eb1fded67b879c6d4e6cc0c7bdf263f4613eefcd9e0377d255c57f5567b8e0e6be7ccc54e6175618f272eedb09ad8496cc57e3193b8a49d20a60917b94825d611c6b05afb88c3fbbe5fa36ddab4d2dfd153ec51afb27daaf517a75ce79fb2765657cb9b9974fe0b6786c31d2f710844b1534f1cc95981160297485745c7d243c9e2028f529521a47c2a596a48c4a70ba8f6db0db1ec829681da5d2ae3385c8387ae41122c865c7924575901895c1e7d63100352c35398b2874276d810658f8d89ba7e4aba89f4207750f6b41bb26b84c8fd6086290f8819d9b3293002069a8f5c02a086f81eb19adac1acd3f03b8a22838781340a515c908b260494a489ed12748bc4a510d7a1052834780025f6894ad6c1e022e2bb443e0ac9864a1a51e821c9a020df75a412461138448616192e8384b3b6c08c511c892b7f041d23b8e922f311ea311cd917ad804b9213d342a10d43ce1d1f04456fcc577b0b9b1bba039a8e043af6a3ec0fea3d4a3c2001f200e9812d17444e9b2c3518b422c8a685660097cc5d3e057821ab4948deb90e51ed62689eeb13952e48ed0d465109f26be20225014b06ee63eb48d6467fd3270347ea9fa8ea3a0d01c4bb64bb0bc9e6b0219a15d2cc6205a70eb27399e8a767a165c9216dc8862e26017191049b68257110e24a49ee16a183cd445bfc2e4545d93ef42c0a9e23cb18daea882c466a4c685db42593a51f62ffb53d24380e6cba8e5c98b683cc40a83c592e7c5bc8f4450cd4a8c1b85820d0ad12500fd0e7a71bd3c88e1b9e3e3b9f36ed6d9175bec15262b3b84dcef1271d35ac3310067b8c8c598f5b2861ebce7dee6f9ce2115c34280c821640bf70f83bb34c580bcfcd99c1317240b83c4c915b5571118235e096d17b53e0b78d3c06a243d880911480c41c34e87a6623327070824e1824dc202f05a54dabc6e76461ccaa3abfabca56daba8587c4a3269a4729f2906aef5478338496b2146f2608315702a65b6122949ee0886c417f16c9c50b083c5cee068af3e4f0bd9b5b8a832c3da7cedd5c388a73ea70c72aa40fe5b0000aa9402386f88d0a84e0cb5d741e8c5f9b689668a06feb408e3292fd810e842830c27bbe535273adb27ab3b12f694e30fadfd9f5c94647b9f1bd272cc193e1160e82659fef693a83708bbe0295dd0af4c5d846c6005d0765d510d3eed08ee18e7367054d84f83856c71e37e884e7c25be1f5d09056a411c325281dd0239e861c1f7460d9fe4f38d14273bfd042f964ef46864297266e5c3665bbdeceafaac248f33a2db26e4fdae1a6483cc5537ac21b4b191c1ac2da7a76e32aee2a016e89db23813fa311446322fc9e803582eb3ba6068e6d8a523b78bb9d99323ecd937955f632ab3025623746cde3660bad4fae5374d12e8ee111a96017de82a292df6162c07743b6b4006d4e8ebb01cd74144fd93c2b99ff36d1746ec34de2770ce08df2358a7c4aaa2901b77c101a1c62d7f21aa25c0be5bb8bee21caa67c080db1686a70647986b5401687ae12a0e947f5aa5dae9d51625fa9de3f52df6d9d27e54d9119d3eab3849ff0943db49591b7239da227f9c57193048485029a6cd6a96fb6cd5da40d0bb9eb11db9c6513a11a518eb98630bbf0190f7908e5d60c822d38a3195d2e64bda05cea60c48a832e27e616839b4d006a9e6470833ee05b68e4c7ec9c861c63a4657637b4eb422e3a32e2e7e9ea45214212fc21cd7e9fef36b921ca5e27b194ce37d532ac99c3dd20189c43e75eee065ee183e8041f83ab26480356809a7e10283b0f1b7031544c901f1c811faf066f5302b8fddcb99bdbdc815a304d0f31f65c853ebbb9c4e261a86c5fa0390f2e602bb4c9a7cc4836e4adaee2a7a3139e6bb8635b32383f8618943e72d955fcbbb9a7784f18575d63cc956f806b4d0112236bf0dd3c50dcd9cb3c6efe18bb6e6878856778833dfd27720c3a314ce1c186c9d3f09527c9060adff0d16a63510ffb924b0b4738830e5f6050984419c40d5134df9a3e779c196ae1be82db882b6e61985c60cb8d21588370930c4445d7204e7d3c792efc534f26b97ffb7b847cb26dc58684dd95c12dbfa09069d0aeba91e5cafd590a3d44af02f75c980d4d871eddd06168f90438e2e3300c9c81bdb0abeb6600b75408c3c661bfa2690437801cf2d486b1452591e20652d52addde426791dda4e6ec2225ac0417764ab8500e3ec86daffb067d0e21b81c8b0708858d7573ee9c0abf10ca80be7d047801b1754557aff2d1eeef3da285dab6e249e76a8af65324189d4de0400aa570073336d4ba619fba678ee2138db97f373738596e02c24073bbca8076de79a3229bbd6bdc6117803f9a03b22fad31cb6f66c58633c853c43e93f908804457f2cd7819daf641fba7f67191ad99ac0768b0a73da8c786e4b0a9ac5d8ef5817ca7f44f0cf6500c5047217dda2450e426016dac3c39d01dc339b5cefd9930cf5f08c10972cfdddc370210c42c8215b556d6882bdfa81752dbf3f39d8a0d6ea3140324dce250e17407befe52f0ddc02ebe8569804ca26e1710b97374eed181104a701a2075bfd95ddc3d3cf7e808bbc86c0bcd46c60bfe3e1449da47438711bb43b46910dcc8250702dc383b21561350646dc5573cc5dfc1b3dc0a0e384375d71c56de0ee8658778a3088408839a46abe7b0a6bd99c01000bf0377366ca58bc440d386e061c10517a7e18a078550c4b9370b56f6ccf07890729b833c84393915dde9028a2d0c1ef2509e0c56b0ac17f046987d41078255a9c3cd04451e5494d3ce9ecafb4ee6a55b411e7b0d2f5b681b84c647e72c611614f126b86f5943e5cdb22d044f7178e01690d14e09ec01cf4e07384234fead6d78350fd284f50ed238f74ea198ce4ae0b7305738837b9e4f1d536e1ecd9065cad93e3af7ba03e898708d92201c54849531fff361659c0dac8c7801ac4c3b338abcd9ec4efc09231a7712e52e87f0b6c6f4e01006aad70fd4e5fcaa1948fd38e179dcf552e94425c8326da2d3845ca771a022fe88e8304cd0c903b18a02837b307c10e6caf6719df709e1ac2398c62b3619b44d5bbec0458771745f43f03285a8b45d744147390a8f7dba4f708c540c7c8cd23308ead7a6b6c0a420effeace3d40e48e7721dfa46d709cbb0d15fc40c0c1f4444cf08615947f44f9ffb566ad14ae8798acb4384a2c350774ff13bba7bdf9304f91bbc264f02790a726332a461d4471691409ac4099dcdc2927a900f5f66dbb6648d93536580065ad3911cfce8981312c2a745c86558f921169ef42d17eb54c1e29339097d013b1f1c0fde48be28c4e92d1bc7ed1b075109dc0173bf0491b008a406e1256877c7a1dc798fa76e8632798fc07d048d021b3905ec5373158cac7ce3fb79b2a74ab5cf56c2f1a757c608320b221ce25e16a1e3f9d44104b7245dafe84134a1a4b22d64e1a81e08a447c85ac002a3291b210207b506a93ba3a96395b9b831444e5bd832923c5c3621cdef26c5e34aef1e6c6fb2e143077705798bcafe813b2102653ac4c5dbf42684d9a2ec58e46424fb20ed03501e5cee1a7dcf45e23707127203c585a45d6eb9d8dbbb01813d90a04a1d049e5408c48b877647a64ff3018db019ee1b58e4f0e8fad86768646215527fb670ab6730964d87a684ce24d60d7f1ae3e8796bbadd641174e3c2c53946194c2fddcc13f4338f9c9370849812f35618dd1c66533efd6ec8c9e90e33ecca37506bcb4e0c12599e7ea2f5537924e2c107d1c785eee72340cc9eb33eacba4f39428e9b19779df5118d7a2c5adf57c8800239dd31265a12afdca2b0fe0e8afc7d8f5dae988d9050e6bbd0e58a30efe6aef1589c474008677f088e60d4b0f02826816c8e790747103e0bb0e67d856b924cf8eebf14ed1d5b739e15799919499d25fb7e0e7f32d5b369081bc1047d5855e00331d06cdab89328c98368751344f18ddfbb87db5136c240756e23b61272d33e17ee4c78e7560748dc17eb2aa9774ae5ff2197210c80ddf70678914795d87761f214f325a060a3ae16bb6e6b680318cbdc8b9c9c764956b7ab315b6565db48539dbbb303d9898fcea0870cecfcbd6686c0f0e6573f6c844a78eaa0b66b103d8ebd22d634d113da343d0ed1b97dea3f7dd9dad5c7c48802b425273bdb72f2ac577eed95415c0e73d3704fedf3800e5cc505f5767029185c9a813ab2b936339ceea2e129d669d89574eec245d0eeadf39dde8d1f23ce495f81dde81b23b642636bc212e616c40f2154fa3d422532e18d20548a1750c6ff6e844a9aa4cb96b629034fb1dedb3c0c949023925b88eb86f04f6c3445bbe8f9e607482483acae414a4eee2668fc26829bdbf00b6495c03b112017c0cce22a94bafcc2d75692d8cbe3a1bf0f103846d46acd0c6f65ddcd0ddb106e612bce2a9879e741611b883586dde17190d4314b546f1b0befe69e11ce0cdc52df735c14d6386c5d5b2779d959dc8299611596629d3a05c5c358671e126eee3249e1608553b8b4584a60584dc77f40a36738d8eedee2507253b418ee9a04df7b6885b414bc09b1ee504f7250cc4132294408c22460deb54f9d953773cf6d046f9c196e778446c8f0cf334cb675523645d24a175ddc170abe765f48cae582fbb662834869216a844d0a98e01e328b388ee273dbc14d5894a22dc53d77664fed0f9c8ef86abff7b0cf78cf93de8414c08880d9810c82409412d739f39500640964c9f0b8eb9c38700fd2673b0a6806f0756a616b5b3677d1828d811f0ee8467e2168fbc773108344b1b84b5e4da841d3b0b3035444ec007969771dff4801400b9e67c3eadff9fdf98a1085349afb7eefda890177e8356583288f70ac036663b80a02a4ed61a1ba6d049f36e84895413aadbd9c2001d5fe46235a672c45f83397fb5e81e8ca16e28b773b9548c8e46217705fb6c787f0cd9622dc33e12042233ad20401c50b73027069eb0e4dce573062fc79a96394521565a57dfd96a357a778929eead41e13fbf6850e7786b0ea4f1259e1eae93d35bb054f4047dfcd1dc5fcaf79189b22eb01cb5cee3ad6b98520810e77dc00963dbf70b86bc07871cf60641736f75c38e104f699a7f88563c06ce723223786a5d8e85c825d15e38edc33a4df280c54685d29b0d75939cdcb9b81ad2d54c6267fd0430b036398fc1eeb17e46b5fc05fb7d00a02827bdc311ba4734486090c979829d1a0314e69b2ef4d8b767317440fcf219f86ce3358f11447d9a228218e92102373c327fc7f1564d18111778634a88a70c6d8f39b27d7e447cc435df5767e01a1e2cc8c51ccd0bef373df2f0c9787e805e722ad8f30071ed03eeaa7263743109470ebcda726b3084b7f8c44c690b543a1c4964f414d9ef444919146dbd326d5b5b47d22012cd517acb18ec08653fac6dcf8c5a3e26afbdce21eb7e4e609b9f9fa8ec1ed7ef2453024cf3e7f1c11f97c9f5707ebf473b515f8e4be30ea65dfc17e24e805b22914f206188fdf14aee2af9ef205f89d815677c40d3cc2f3ff7545502fd9b29c663508f3d2a022fc8eb7bea3ab3fb7112f8ac33a3d1458de236a93af0884e94278232857470daad8cd86dc0cd238f189091f03be40b8b2de3b78c6d93c4f7eb54897af78776f09b50a444c584a6cb92e74cb82242d1476daefbb6da6fa2ddec16539ada8f985f33cceec805c2a34428a2973d1b2f81531658ee2604c994b31652ec5948dd96d9e73a7c49032ff5438a945030ef9be42c5519cc6a05ff036d4dedc94e87507fcb94d4fb46b507cd6b2bca9abe5c2a8aefe99a552c376b8ab7827164d9126fadb49b8aef716c1fad0d63d029aa3af4d48605e689ef6f0a2877b5ae689b0291921281da9c635e443c6dde19fd19d341c095a06a9c1eaa67499fd54569f4b6395cdf2defc876e0361007aeea9b332c885c23bb7a0fa121bb4295f915f1d2a043761b6b6b98b746a2eb76d8b3b4130f885ce10686f752c870718c5eaf950d7ae692300a2c34d333cb50b4328f6a9903b8cd2fd68c66ddb26460534518346eaad7cee0e82b7055a4ccd95019dd75a8d5f73b83b33dc7efbb2db1d0be0ceadfb85e4e81d8486431a484e11e0680aacc4e2760882a21df61ee36e68193c7071479b62b81d49c0851886148b619f089f7be84c6586c4c765c13b3deeb8be82723eaddf61e8713340be4298ca5c3bb1b9701197d2ed6b1feee03eb9b786325cd8e21e4cf91eb2a59a1841e2796843b75ca87e8139c30d2a7b064202612a3b1e37c93b12de0b320b68cc48d6e9106aa84325723d2e0491965b7039f0b9032fb40350075c58e15deea0bf8e634389e907120870cff7b90051dae61606e0da1692d6c15768e3660a6d6a10df90b05dee21ff3917b8b30a831016b210048624e06e1828f42943f85d0b5de56ceedaf4d1358e039d11ddc07c50917cdc577304711b793ec6e9fbdc82fab24c8f1ad3b21d1e06ce0af230133cb41ce862224cb98901eb3ef2cbc20cea4337870ac0909ec0e236924d38367711722270125485f1436efe7a78c57252a8625ca31d748312b0a443450babe136689f0e641e8427df72b8c0773916fe10dcf489a689363931860343a003e88b0e5215b98ee271330c57161726b4b965fbe7010f02710a6d10d2845e5472d7c2816e4833a2413322cc82ab31aff9116f961157df3d4c8899619d4bc4c48ecfbae9b80ff7fc897744128b08282153f08ff2be90061021c34ebcd4e081405c001f96442b00c90934af338fc3ece963117107ccf10c07294c88cf1d3a47e1d0de2ec2df625c888b4baa4387fdd5b4c749f1616df7298a0692296c0e53a017a6e8c384a8fea1c3030733813aac4f9bcc664045a8b3a62a565907e1ed2329b49712698947e28ac36d0c57410bba49dbc23079ca4dc91071231dcc1132ea585e0f312301fde9b44fcf4bf1d431bae8204a4282faa0666f749b9cf27e6b4020e0262e0f1dc525f2669368be104621dd62a1ea1e4f3c6e9b81429f9d0f29b6a52f63e7c4c0893b24100c527664ee2cbc05d1f4259600fa67581474267c19ab2436b7c1a193381cc915ec3e9fb8211ea683fb6501310d242f82a5d794261c0716e20dc1bed2f1ea371da7bee2a59d8a430ee75e800c0b32bdb4c7777128b04b12ccb8b48b8c3b989455b263bab89b2b640058417b913654b76f2bf4d9814a7881b1097f90952deb9b131a34b6bfe7756d23db9d2ad6a6d677ef60d483621486c4b88b1bd516f761024f7cee0a053fbac55098dc0b52f469b7608670b887661cb85d7956505a2ea6499b4d7b7e648fa2616c508404f7141861a6fb7450c69ed9e229a688531874272eb730c4cb577c2411422a8e94f6da06bb6acd605b6db005f744665290425d4bd9dae66b9edae673147f7c8b3444133b0c12a908fd595ba4e3bed7c22136f7e5a2a892e99f4358ed4875788f65d20acf0439b19f771431e3e61a1fb71565b8d0fed6ab18b8760f63687aaf6e436e856fa8c61cc5d92bbd5090610d8bdf64f513854f25b6134856e865e0e3b0b560fc58360e573457a2d9d2210b070e6907063b282590550229491105cbe318c38ae03d78c286a72c82d5c170030fced91871eba01554c06289948bc43f2cd90a11338b63b6e01c9ec5b85281b1989685c8340e9a6d3165137524dc5051a45f9a6721798d82beca0ef7712cd8054e51768a5bb52e3a7390f310061607845a85c57611f62ae488ab4d1e5f2e175623272269a807c900c3487bb42b8ba63cf40e0929585a48f724dbeb66bd145dc6d1a71916052440853cc2c0eca62f42ffa2fd0e8fbe242416c165b9922c31e8826b5cc2c72297f250228f117f98db7bf751a0b04d4834f0144da7168193e18d885466c94be11043cceec28ca5073b79b85b983968509bb8c57c0a6921731df91a225459d819ef4cf2d53249f8453bb3db7b852109287e853e2a5fae85e3d2c0716908e95090201790dfadd3c2f0081a280853d4a91c90f2028c8842326043f60b90c011db09fdfcf007da29426a57b2d90b477254931b123c83b46d189f8dee78bdf5714b2ce8e988128776289c1e210f2b2e4825ec9b2f3dbf1df2bef24309f626c9be115a0b59b829f21ea5069f7a5560afe066e4efb529fc19699c41ee70e57a4ff54d7330c120e12a2669e62df811780404453b4ddcb714da67f0411524175f748a0239109f26bf52d3ed882bd10130f0e4d037037a1fc741ead1407411440ef2b5c2c07b18e938d66c193c663a241b5948b26a61bcbe745085b7225cb81f900ce111ef1b0a4034897522010e03fab2bc0dfa17c64c131e15dd4dc3db43850c6738b441a2a827a327dc10246cf48d041d1469a471f7297ce5f3d00d14fa94332d7443986957499d27571430edf01074343f4c420e8b5d275e58087b6ef9673e06bfa406d1c3a36fa4ccac0d6bbdc52debc42249cda61825b4068192ee132c22e886084dcf03145ba03d52931482c0561c4810e1103d1e7805569c0b3aa21376610648ea871b6ae8d982cbafe713b923348c63b8128b8aa0d7f1820b8510be0102ffdd3c04dd37207e2704114c115ace458f366c47907b12e8b47e37421160d142b118adca32ec1ef471048f10e43b887419ae448fb3397988062e0c66e2c5212c008f664311d26809d1186c518d13f0965c2d2d0f43827089f0f0d3f27b077c42aaa3d5362484349a367db7c7680c256bb12f61d524469823bda27d02bb9386c7100777e071cb42d8010298342d1efa84d880b8933e79ddc111a206242168da0a7d76129185e4240e3a3438a83c981eb7412aa7050275209f763b7ce928eb863079a1e804a3cced59b4ed50a159d5f1d17ee39325c5406703c26108d04fd945a20d2e11491d9ae3691390e214495303611e313e7d9ab22c52503a96675f820d50dc2f410ffaf082062b01b1e104474ddb46043fd745780adc888136455450df43c0386c528fbc29e1750d217a5ad27531f0523405390e0f51b943af6c645e83344310e404773d09d1e0730b612f1cb4aef320244436dc55c2c5def2a561075bdb21e83aa851e8dd3839983ef29fa0f6110ac4a27389f804b7da52187d02d14c110022949beb2e596a6d199605c281070316276bd90a3e021cb986840347674fc43d404d870a00e30312f070d146561b135f68505b23931be409040d1b154f840087fee650a296f4850d0d3947e37e15bc3b1486a3483f699850d07b1bbe6d9052d056011ddc361ceee21e5768781db078179cbff16aeb61c603c53f1d8329dec329def32918618344b7e817789ced27b632f69ccdeee602bd9bc6581ff73792f7f791f7d373d16be6456c702fdb7e19abd81ec3d456ccb1baf8ba97cd5dc5196da7afac09dcafffb39a7dee2ad668725fd7ee5b153bcd9bb6ceaf967dc4af50ac673888f7b608b7f1364622d8f72b7104a36bdf199290e4fe10941c8829f934abe496f138c7e90bbc65f7fde40804ffdc2b3cc5313ce983bdaa8ae57c1864eff2d0526c1eda48f08d0e3d205239285239bd48e591662a5084f76cb24fc22aad383c088bfed190077ea0d0a7d4fa037c94dcb0614d46d112d93761fdbf7b2b84f20862868f84162ff13925c256e49b90db7c3e2ae9162e56f0f1a2100f593bd5f575c7bff718968749591b8151fb8fcd9a742e08713bfe1108154b6e768e75a56772f7c85e3724bd328425d95d31739e440a21a4760cad21ce4e24e2b64ea0988e023a08912179217505eed80d88068a4b866c5b283eb7fd62f3608808cfbe62998ab0d15e60d273a969a01318ea9436d9f902ee7a7773c306390ad6bca7bbb1d325f4929e1c3a4ad89b9b69085026a442865d39187465f5927d4e8a4f9d77a449ced79d878c1458c91da5b39c62c492045883bc6074379a483c2b251450040145dfdb6e9a1a3564ad705bf42c44ed04e3362d74e9e3aedbbb1d3a2474606c4b28b1d9b602a6d1c5cc221672924a6d7afa2ce48eadf833c3e258c5d0c35cb7d7b5c903828458423bc1affdc42d21d1533af0942e09c5326c898072024a0ef41cd0b03c5771154f7167e8e342e0639ed4d641607325f21d36a2eb6cf1030bc555cc57db6784c509a0c1f4a8b0d2248ff17985344f88e00cb9ca95e0145db91f0d9e8791f939a9cbbcbc319afca673abc2307c9fbb56d199204243789d578f307130a0fdc944450355d6067741415c0f3c78b4375fc078507a3f489308e405c6230b69367c6671c092061298de217306c2be0b45f8a7e1cab066d6caba9b9b867d1a9e7b338b3cd5d4cf499bd5d748f9ba71151f4533dd973146230ff6895f8c5009c6a4827d40cf11bcc5dd75f16eee184f63643e89ab713717e21181f37941664cca3215613d1f0af3552eec9ff3e94dd64a28382745a798de05a6e97d607a3f19a5f39341367cef77b9d108d71033eb1c6309840942be7b2a56c28473909c79c2c9910fbf9e4ecb56ec9930cfc5a90b1d0e3442fbf7e4e52d3a14097365589802f652ac0ae36ad9b6bd88e80c6a7083ccb0e7b73902ea71beeb4f7f37178ab50a66c23bf74eadbbb9331020f7914036af1b4c13e832fa9ff0cca036aeabaacd6a1959af98a3cebcfb8ac88b1ce7082d1a435084d5c5a7380845b8125b999865c9f43f3613e7be7cebdc3484d5e50265ddcf7556a6b36e424644fa33dce950028ac2870449b641f33ee2f539dcc2cd7a931cf71c34a1506c0745db0a825809a4a6ee708ff6c83d1ed867c84eed71373ce116923612b4912fd5900d6092099dbb2b26194871970d09580ab4d807dc4457319b8cbb0e0f7deef9f01e24bf814ca0e100bde84ddfb0c978e53a86cb7d9445d4bbaa9a1b79bf28b9b828394e41be07f0f12ae0a6e928f4d9cb39a0e938e4b14bdb9146f0dea42d4b53a1f04005ffa588350397c822af1009a58d3e0d0ee4d94198270c8ac5f98d80a48485be0d776f03f4e8ebb6bafb9ddba6dbf3863fa5dbf7eeb77815ef6e6e1bfe69b83fe70e67566b042d6cc85fff94f3c70898f82eea21d66eb594aba250fca75fe73d19df1860eb98ff2f699dbe7adacab8ce650d29fb4457d6d31be9fbaebefbb0f1e44ff7b8032791e7bf0c11d352ace7103105b1cffbe4d533e24d7a37b70c6b1491ec8c0299c50666ebf770cf17b0fc81e8e822be0b8a8e5620fd0a9a3d1550b146e92abdbbb718a0658d08585bdc39cf62916ff75ee3292f69ac90df03ac6a1923ed30f04420741c096df63863c2dc35843546e93674efdf93219ba7979dc789050545b087d8354649f1826748f1704d7836cede32c6da56588a70eee6fe98f0fa5c1cc208a1dd983ffe9a1571a959a6ce9671a989503f2af9546b999aa8ec7a5922269fa6dfd759bbac4b65b6d68f5649adcce2fe5aa6df77bf95767367b92c8a8338ce26938c278b4571abb5b3bc61497db39c6765dbe80f0f70622d6faf79aab52cd359cb1775d556eded22e375564eb33a1e6403de9dc5f020dcb668789e56e5517eadc1ebe2387b7850afaaaac892528de31812a9ae954c1fe4096e569bb6cecb1bf560ff960c8b570e5ec1d2b8e4699134cd4fc93c63091c554555b3262ef9ac9d171ff2b6c8a0f63033eff3bb8ccde255954f15338ee3e571cbdfbff99faf3fbefff0eaa71f5efdf243b464d7706fd96665cb1671c95b4c60b57966719c450b36854bc90dbe75beb9383d569b4552aad194ddc635cfb4925da87dfe54a662ee54a6f6795399dae50c7ee28b55a6b6f29a7c877aa9b3bb78f65d2cf37bf6ea97bfbf3e1e1e443b256137544dd44cef57373f27edacd1eea019afe24ad3b58227fccdc9bb9f18fc803c9c403eb54ca71398133a75adb354676f6315babd7a7877a8c2e7916c959ca77596b4d9eb2283cea3cd59cd13ed7ecd6ed97d5ff4e88a6191a266adb3dd27d46675a3b2fbebbc28a284a9d3a44d0cc8901a65a075b5b368c666597e336ba3195be5d9e7efab2fd1db355b4d267b49e15e0083cec4563abbd1f5f548afedaa63305058491db88eb50c7ae7766d1e2751a35f94974783ce1ac7f5317c47359f270b6d9054db0fb4bdec2d9276a6b2fb4fd96dd4b269943128f42fcb228bd46c9595d574aaaef535667a9a378b22b985da8b973c3954f91ba813b693b558786cd81162cb64ed5acbf9cfcb3a3ba9e68baaccca565fb36106a1b4eab2c914186c69ab1e95bcd65a9dc9e9e5fb5727ff78fff3ab93d763d34cbdeeeffbf0eafbb13bd2cd1daf7ffaf0fa97b17baacd3def4fdffcf861ec9e7c90cefb93573f8f66271924f458969bcd3daf7ef9e5ddbf7e3c7b3dfec662f7c65f7f1ebb6db97bdb2f6ffe7e3a9ae06cf7ce1fdefdeb4f63375e6f6efce1f5d9eb0fa3e5586c6eca9b7f64b75755524f4f8a3cfd3476f74aae07751cb0340e59150b9be5d05f92d8f25913db162b62db67cbd80ed82cb643761d3b265bc48e77d42f1b2b5844ba09388ee3eae101be9af5333daa4fa0ee73a4d5f13b8c9de149d3e437e5c3c3d64255d51a64b78dc551fb6dbf16f1222b6fdad9517b784823b48cfb6b17ede551f758ade4a552eaf2059b113f4b9a779fcb9feb6a91d5ed2d4f93a2d04a56eb9389965dd4977179515feadd4a97adf5f10571fdd4c25baf9f1f5e8f3f3d182de93323e5ea9951327b66804c9f191cd93363e2fa99c170f3cc10c89fe9f9ff7ca6d33fd3cdd58bef8b65b6a8f3b2bd54591ad787aa9216c97c1129f3e48b92266559b5ca55a61459d328ed2c2995795eaaacc23bbffdb95a54abacfe4ea9b37f5fe675d6286d52df64ad02a28652d54ad22a459634ad52959992cef262aa6434b17395e55b8928b3a4f93e493f4deb6a11dfb7f5325b0fd285c5b52648e57fe4e534be974fbdd93ecf4fcede9cfc63cd5596ece4b0592e1655dd369893aa56dacf1565a8ceca2325994e73482329fa934a52674a7e53567536e5ca8f79ddb4b20439d444268bca94264bab72ba7d2dad5018e0caffa896ca3cb955f2b269b3648ad9286ee19e26c33c248d42a29fca9a9d2c7fcedbd9563e65769a2e797cf248816193e5ed2cabfb7aef9ee02a2bc652dd4b71d06ecf25b8c4047fc89be4aac8cb9bdda491c5eb9bcfb3bccd9a45926eea827395cdb69b7cd9643f57759b14f1fd755234d0e25d8606bd4165d73b65a8ca41bb439dcb76523ecfb2525996f0caba2a8a6cca55b6e81e86177d47d9f9d22a575dc7a70b279ddca5cc970d76792955b3153dff7e919725bc1cefcc1afefeedabb3b36f508218f61525bf569afc2ea3aacb1ba5c95aaefe81d9ae7866365a3e33dbcd9e992dafd7fa664988ef8348bd4ad24fd8762a0b23b54dae5426ec48cda0ce556699919a268ba6a86011b5fc484501d2b622553e64db91ba486eb2e54265b643bf71379fd92e24335599ed45eaac0201dff623b5c8ae5b95d941a4e22361a4d6889acc1c3352e949c78dd4bc6c54e678913acd0a953941a49a2a73c248152a73cd48b554e68a48b555e65a91eaa8ccb523d55599eb44aaa732d78d545f65ae17a981ca5c3f524395796e04d5ee7911d49ee74750495e10415d7b610413bc6f46308ffb2282e9dab72258357c3b82c9d9772298837d3782a9d6f722b55099ef47ea5c657e10a9a5cafc30522b950566a42e54168848fd77950556a4d62a0bec486d54163891daaa2c702375a9b2c08bd495ca023f523fab2c0822f58bca8230526f55169a917aa732617a91fa37f8f623f510bec3483554268419a91cbe45a47ea33201691dc1b71fa9317c0791cae05bde1fcafb43797f6845eaffa5324b84917aa1320b1afbb7dfe08788d44bf8b622f5afea9aa5f1bdf022b599e5d07402eaadad0b48395293a25519a438cfda4465a1ddfdb22c47fe5cb32abe4f8a36120c9e8b2c06a72387618251b066797c9fcea7dd9369359f27657f983569b2c864cf9be7e5b2c1e2ccab69b4d0f463baabcb52b5800e2fb3b528e0de439551efef7bf5e7bcecb396c4f7eaffad6245a8072a762ff5ffaf62ff52ffa26207fb17ec5feaff4fc50ea6fe9b8a3d4c9da8d8c5d4bfa9d8c7544dc54ea6ea2af6d58f984bf550c5c650ef55ac6475ad62ddaa0f2a55b61aa9d86a7f55ff0a95cdd46f556c35f53b155b4b3d56a1b5d6ac89c551f36d2caca3c3c346af2f841087cd65ac5eab870d8ee92636e186505e0f3dbc5c2ee7ea61c3dbea3d4e719abe113d8b2d652ce3f36a9a5fe759dda086d71f4d2619ff94dde2c94fd9ed1ae68e653c2e9b9aac8c51bbac6393a53168948b224933ed9bdf9a6f6e98aaeabcadceaacf597d923499a6732493d5d443553faabf4d3b69b6eea4d9264e2fea4b347ca82056ebedacae3e2b65f659795dd755adfdf5c7242fb2a9d256ca22a99b4cf994dd2a6935bfaa14f5af87d9e15f55fe5ba9ecfc779e14f9747367a31455f54929f24f99a2a6f3a972a840cf5199425dfe70a1325817d503f5affa115987f28be67232d11afca1333a595d3497c7ed217e47742a81531a9ce398162bf1941e9571b35d1552c8beefeb3d6a1928c2e57acdb66d5654d558cd659cf1cfb33c9dc96ca517e5e5c38346570fe2faa2bc3c868f885a9f5fd7d5fc6496d427d534d3ca9dc62041318fcda3be4b2445fb8fec7632d172284152b43acb388cb4c1593884d330a006a7e1104e63b107e7f158678372e658ce1654a678d44e30d68d361d67c7bed0a9415d3b6597c7f01165b25434f0e3382e8f175aab1f438b77d34754aef5f566802cb66bfb20ce8eb3485d96d3ec3a2fb3e9c0085726abfc2669abfab8ffc51745d25e57f53c22fbd7d19675b19d4cbe799ba40ff9cfd5f421ff795695d943fe7332fd86b759d36aadfe9c02f99414f1029d48ea04a516ba3accef6885bab8643f5429ea74d1858aa54449b9512fd9bb45562770f0437f3aba504bb2db75810d3f0c1e61ea34afb3b4cd57191c3459916136de67ad7ac9cef79e882efa6454a642bd4212d975b22cdaf3a45866db296e92e8b271c9de0fde115d6c5e0977ff9867c534ba5093224f203f32e7bd0efb4c7e5fc9fb8665863c5db21febe406aebc5fd4194611caeb5b797d5316799975b7461758be93aa244de49977778fbdbce67f4fea6f4aaa5e68fd1f8b2ad91cd19cd11f7e4fd6e9fef8a76551f407afcbe5bc3f38cb9b2e15aa26ec40687ae84e5f43736c4e77adb353b73f74f9de5cda34d825834e3bfd70bb18740178b53c835de892fd549590d3ed93efd359364fb62a74ab8eaaaeb7c3635bdd1f4e6c3dd7a7981449bd77759a35699d2f643b8c750daa80973d889af17592667bddb5af4facc9e7531af6fb6eac6d77d8c5921aebf9b45e3056df7419ffdd153428daafe558fd3f9f402bdb10fae8573cdef7e0be8fffce16c6bafc3dcd3c5efc7e30fcbed62daa34e92641eaf6afbfb459d9bca4d76f3af5f099a77bf1c89d2fe8b65b1de4e9978df588e79ed8ed02cfdddfb7f94edbbd3467a8f20c24899ce4991d03ad1477bfb3261392110ee281f5d6ba3c1e1e4429cbe5561a2be257759ddcf2bcc16f2dd3d932bec82ed92c3604bb8e2f2ed9a2bbb7db9c63d3eec71caedfc2c75d9c1d4d2bccd64d7c78388be3782933c5aee29bc9047274dd49e5f9b576a3dfe7d7da2a36e338be95e78f29d9687e3197670c01ef9fb2697ccb17d542d3d9153e57e88b78c19b224f334d3fca8a26eb5587b7f1fd9abd8e4d76da19c13f65b78db6d08f5e7f7bda65e075a7169cc4a717af2f8fde5e9c5cc68b8b93cbf5227ebbee923a8f4df62e368fde7ddbe7fc5df7e0597c7df1eef2c2bc649fe997b83c2a2613edcc88cf75564c26b475157f3ed6162862a69976c684cece0f0ff568717176197f5eaf6771cef3729a7d61cb38c78cb2eb38e7d9346f1b56e0456c1796c7395fd4d96a8d65c59a9b1e17c7b3687931bb94722193afd416f1f4787ab1ba8ceef48787cd86aa9e56659b97cbec683a99ccf962d9ccb4958e5ad847d9a2d03207db3d62a1638d1f24f06b576952df942b54815ebdffa0fc544db348510fa9dab59a273a3c8302e2fbb8d15ab6e09ff272ca6e7478cf7b4c57fb18bfa7cd82962dd88a4dd99cddea7a1cc7957e5567c927cc9288e3f823e5e346bf9f535f38eacab3c65a51a056baceff7132d1aea988172bf6f1526707377d413eea23692ce28febf5baafad8f93c9d564b2496271a9b39b63f954a4e5f1bd6c9aa860d882d10c948f265a326cbde89a417b45f99a2d636d77982d74fd781195175421970f0f17c311379d4c6ee9c5539d4de385befe3ccb8b6c53ba5cef7480e1b09a4cb4bbf8fae27a33762ec4a5ceeed6fde4910cf698a410a6659349e70a30f016c07ce99b279b4e7520693fbb685197aea94acbc944ed6e1da452770e0535f681342e8f6b5e64c92a8b6a8e1614d4c7479e4cf57ed3063b3c3c5ec5e571261fcf368f579885b144aa2e914aaaa395ccf5d8cdb9deab34ebe735a6ffbd89fbbf3771ffcc4ddc4e87168e034a74a95961a0b32adedb65edac6f5b0241f74af5822013159c642ea1775734b766faf824b0715052e9d1e11cb035faf7def1a3bcf8d86ba44d50ba25c9978c593c321d86a47cfde0f464a265208ae80c8aa8778b72199bac8eb36e412ebfad8fcac343bd953bcecba260d94579c94a969164a0744fa64a5e2ad9cb76ae3396ea93c976a2e9254b59a6af339e7dc15dc1f85ecee751cee4afef97d7d7591d0d8d48636d43b7ed541dcb1bf978caf2e6c7aa9eff90b4c9585a63d5d8dd3f9964b86f9894e9f0f47a3b87e779f6f9a5290f1e9b4c06073c6f2099e3fd535aa647e8f476259fea7e0d7336780c3247fd7a2c4ffbab13dcffd3727e355ed3255ed9bd9f9a3d4a58defcda15f2e91ad849e087a4cd9e6a58b8bedfa23fe6c5934fc1f5917e5054574f3d05d747de251f881aaacf2c998f248213c064d268195fe40b7af2d75fcede67499dce7e4eea64debcb467ec3cb6d3f576ae522327e534a9a7dfd7d5e726ab5f97ab686f2ad6469ba0b7863e3ca8bf6449dafe9480aa049919184aeb6aba4c5bfd9199e6735e4eabcf8f5c9c4a7be59a5d57f5eb249d45059b67f5cda6f5944ceb8cb8438dac443797fbfd09b4bda82fc726d6f218aec499065facd4233c2cd79bed5493a57bbadd51fd6d8adb1985b651e6f0f94e166cd72c03ad72d8ad69ade9166caddd2c432d4bf57b98d4e247a4b7f6b8d65accde5a67d99ab5753eda9d0636f57ffbadf9db3768541f98d9fff62f786a4caadacca4a526c240d79ef3efe9d7495a254d58234bcdd7591e979aada3636aa9e53a83142d1ddd7aed80dc7a039dcde0acabb36b48c2f575b678dc857768ad7fd683b76f02deb4499be1c240e6c603b1662dafb3ebd3a49c1659ddc4f714ceb555952da793bf64d771264d20da9237c975f6a65c559f325d6ba5b3aff484f925bb86b508124f97759d95ed3fb2db1faacf72d7ace5337c5f7772f8b282efc8439adcfa415f2d5433c9469c2c8b56d399bc0a4365e75db0423659fb1ecaac0dca6cae757d3f63329da78b5795f27628ddb018bf2e5e5e88f15c893564aaaf689ee2636339c52a7c3e9bbf2e28934ffa6fdf64ed49359f57e5f7f86210339a3d6f6ed60e9dadcbb8e54991df941fb22f2dabe3965fe745c1d2b8e54552df64ac825f5532cdcb1b96c72d9fe7653e4f0a56c42d6fe64951b065dcf236b97a83b685d9d0597c8a2e38d9f4e1a192bd76e03d9c68bad6f0ef7ffdf0e1dd4f4cd3b2f87ead5f34fcd5c98737e7af2f2919ece1bcab56eaff32ed044fb1eca2e13fbc79ffeafbb3d73f5cc6333cfef1cdd9d9655ce36ff47eb98c533a78f7ea87373ffdfd32aef0f0ed9b9fdebc7d757619e77888ee32977101b5da50a5cc7b7fe912ce0d1da8873ef1785a6783537d3175d6554234635589dd27eaad4f8327e435d6774abab835b498ec0a3b977e5db03abb8ea46f783ffa65f7635ddb44b3634344cbf598f7f489f49e7acaf79fb571c63b372bdcc4cdd3aa24015976902ace383ac6bc812b799cf136fbd2cab6bfa8279374c779fa9a27e439adca2454b6e9215deff8f8fee7373ffdf4fa17d6e4775934e3c9c0357aadb3dd34679b34b3eb961cac21a751b9d69976d08fb5bca1c5bd9a66afe78bf656d772fde1e1a9ebadaeef1781a203e41ba1b8a345f8f0fafffcb066396b9fca6f5f7532c3d55abf8431afa53b9edf474f6d94ae36cae8e846eb54aa9fabffa29892ce18b15b8f32f498420de0d9a83bb5ee26c88a5fe983912787dcd8b48773ed2658a2ebdf9abee7875fa11ffef7f2e5ed5a5be86cfadf24dc0687dcacceae71b8f5936cbe894e298fcda86449fc44451c3d56e189acebba2a5e52d709bb87ac44493faff7d3d8668e195c344494af7f5f2bbc2ad359556fb5c58ba4b4039062d1405ce749d92ad7e85fa31eb53cd971cec8afb5834cda96ebe38d7539d5a3c1c1a11a29eaa1d63e3ca8aafeac57c3c02d1edf916ddab8b3aa50cd6b83d6075967d315d2aa6cda7a99b6551d672ce31f3fe2b58f1fe3f60fbaa97762ac1d0e9ca8d281b2f50dc8e130b127f5ab56330766958a8ab3b1868080501e0af4911a680ae5612c587d180b3dbb282fe3eca2be3ccac87abd266be8be23d0de769218dd4e12c3ed247119a92a8c041874d295e61b55478b761db728216e9fcde15e282c8c10f8d582b89e3f3c2447f9b526af1dd77119951bc3762db77feab886764993562b759d1dd4f216bdaf38acdc62b09fd1df724ffe66f545bdb1901f15b1caa1b2970f0f2aef7fe137ed2a14f181e83d5d67b1c9aee3eef9a3ebef62f3e8da3028e9455c5f5c5f1e517a8be34aabd9b51ec95417c71a9d60b3c3433d823275c786a1af61083468e33a9a19c6d14caff9b24407270d12d08f0e1a99adfac2bc7c78804fa829f8d61f1e0677abdd4252f37f567989f5decd36c564a27e033aef8a37cbaba6ad354380bcbc3a8ce136b65ab3241ed305dfdfceaf2a78bac11f7b5778de66357a2d8d2888bd1165547b1c573ebb176e8fc238eecf1f74bf3703f6b8cb5dd4bff1885cff061a3c0ec6fc5a6b619e96bde6c0dc444fb60f0ff4a3bf28e0e2f6f64dab77bb05dbe74bb41952e780f4fbfedbf26c95d5b7da40fbae37550099c2e8983ec062cc02d21e0f4e4789d6e22e5a7d10c78f584c76ee2f757dab4803c3444d1d18140cdcaf7e77ada166bd398207d203ac9eea6053394aa6a5aceadcfd86fbad38a8872736768a7c53434d5f43f96e0d6dd50f1a3aa88ad65d192868d7f10753e8f28929f4388bd46fd4c381557bf6e4dddd08117a3478e67acb9d70d4c71096ac5fb29bd75f169afa6fea617ba86abffdf6cdc36fbf1d3ffce5e15f7495a9b9aa93735ea6aff1d1cddbbadeb3f5d2c5a319cdfa990cd3c05d669319db795e6d66f88c2f92765626f30c859706cd73a82dcc9266061ae6c303cca15d512613f5184d6c9389961ec6ea31ba3b0eaaa98cd463f5b0d4593d99a87f815b6b79eb5fb0630d6ead23f52fea61adb37493b5292d8f2ca50c564723c6de63ad1a59ab32cc282b635565357c40e7c58dd877d79afa17553f32c4411ca7b07680564cd59beaa0697747264be5f674357cf8b89f3031896a32d1cacd43d54e1295aeb3fbae56a396519d46b2aa8e55352a19546e246b04ced4ebb596e9ba3416b591d68b8e5ab7e743dbe7f76b06f775c9c3a2d11fc4aaaab34ab6e131b55377b8a9767c844e42f31d76077ab439adb20adbff985a900e76928053d0a887f4131ea7532aeb4584b61317d0308d85a3d7533175fda8ad6fef072598666935cd7efde5cda058fa3a4dda74a625fa3d4984c9b64df90d8a8328257607da5f7f960f2bea5f0f37491dfe5555d26a594c15198f46ef9b72e5c32c6f94bc414fede256499365934d95ab5b2529955cba342cb23acdcad6c8cab4022d98ff558f92f5666468153ab3973a4b8f37ef3ca605767362a71efbb2e78303966e8a0f35dbdfb4393f38fbf0b0d50b60e1ae36436abee3f0dcdf18c7eda02375831f4fd34f38896d0aa7e0c78ebf3eed1960633269e81c08a6b7bdaa840803344a2fba48eefb266b7faeabf9a2dd0801835cc6ed508ec6bce2f61f2405a27e5a95d7793dff50276583fe6a1faa413aac64354c21fd5ea39c25aa5159263b262920ca46669bea78d491e1b8d62a96ea51aa1d98f88913834e12229e5cb364b1c8cae959deb459b9b3314592fa81b91dac5b6ef454e9c0338883ed0dcae80752ebc3fa29e3038193d0755eb459ad8d89553013afa1eacaaacdaf6fbb6c35c3fd964eaacdf6247f56c630c07a9fb03a368fea6f33dc7f8075381e6e411cb55c6e998ce664bb88252ce1eb27f5a7d3679cce3f3f13daf6fe99d0b5e93381b6f36702753b5781bbf8605cf2a27da6878703fac1bbada5fd33dbdaff4092b9a151dc6af201390060d540f5ed2a5617d502c7a0cadec62a0cd774969437d940f57dade9f730e376f54649cdf2a6adea5b1ac00f0ff76b39e1f64d76bf5e6f86f529f6df6e56a74df9fbb5ceee1e1ee44255c04275207439e4b7dfc246ac97f28ecdb6ddb2c9ea573759d919253543a090d3afc8afca690d59b0b8aa4f268f5d75b8092ae6eee5b7d5555e64cafbe43aa973bae160eb8693595dcdb3b12bff8a396d148caa50757d32d92edd64a2c2f0c49d0635dfade1b5a6b3343ea0d23c5ee8cdeb3ed4f9342b5b5507e13b63795cc1c04ab35fb2eb3a6b662c89371e609349ce9ab8e23759fb6b93d527d43fd0e77688bcd21cdf440d9bc7b8569dd1d83edd5c9e1f7bd19c9dc419bf4a9a0cd7af85b6d43687ba1ea9831e75be2580ddaf71abe253768b9b14b432a45d513b7761560d96b1c3542e3687292e319da479028b637cad55ec44d7d954ab580d5345ffe2779be1f7366967bc4eca6935d7f44d389aede99d5066b1531a2567f1ed304ced33e47e285efdc0329dfdd0a9239deccdcef8cea4a9fdb029cd0f9c02880799fb08e96e070ef503a613839e6cf8933a7ff75ed5d7ba96e90f0fafb4f36e9dd5076f79afe9f770e9b5a6cb49e0039a26baebafe0c5f9b5f64187f3ec73e7187bc647564f2d63eacfef7e56d98c0dd7e3f6f8b3764fe58be87a57ee285beb7b6b5a1b0f2aa68cdff425c24e0122784cba43199b9d6ebbb9291bdc54a39c2e6f4ae3d2a88f4074ff101f98ec272dd54151c29503ae7f8aa916d89bf8e2132472b9a9852f83a5e7e470b5e592f4136db5de54701612fa391e2cc9bfc055c88bf6f3619ce99309ce23c7dd0c9c4ca7af5759d9769d42bb621f7596f653c2def5b7ecbdae47d0097e9e4cba54ea6c5eadb227131abb05d3c22cff13da1c7efc10df53778dfa7e3bde709f182d32a775761d7d6130610d1d047add1f74b19abdd37044c887f5a3f1de9332f5e75fdf9f6e751fea7d59e722fa05942d18fa303de4714a1d1a0d2d7a0e3da49f3935dc68a918de10e56b4215aa7596e83b53099adde3faa8f7096d06dd69936bec57ac88df0c34629c0bcda83914fa514142554af7bd890b36ecf558aebef6d2b594f2c6b3b25eeb6b269d1dfe8c5afde5f5cf67e897f9072a5666e7f7d66de7b251eb2faa5fd2af9bc9447b73d15cc6b2320715d917e5f9badcbc1aebf3a68a7e6237d5f749fa6928aefea41902affe58d59f937aba7d0d2e5d21f9eaf8448c92cb464c39e3bd46a265bd69ea9f0f0fda2f9ad0d93fe303531f91fdfe3999683004d92f90199db51ac8d8058ed391e9f18c6f6b058357e16b062fc00429bd7577cf0f6b8a51188a77ec3cbe87c3aba4bc89ee5139cd40fd1df3d93a18b1811d7ca31eced0618cb4e1973fbb651103c5a2299266b69587d930d1e59aeddfb1dcbe63e047f56e5740dc1a6ab8ebb665dfe94c3420771fab6ad4e50f8481f6500ce6fdb34d838c25bd9dec637d73f4c96e7e69bf8bcde33632f543f52feae170cdf9fc87e567ed25a2e38f799d5d575f541d249a342e47e5c26a23f8a5c737180654a214f6e17691f5d2651cc7f9b18a2da74620643e2d1cb2597c7e915cb2ab78c637edccdec633be69e96d9d845af9adf64ed3fbe1d060cd5c6b196b5000942bf4e9d74970a72f93e028f4e540b0f764b4e8dff3a1cf25ccdc6d7c05031726e183386ef533ad1dcc9165fc1a37a6366fc090958f93c95c0321569aca31e4258ee395b63945afdd9de93fea1fb704b8d32705b8ea4f14e0bef02269da37b253adb4561f97e176efcbf4a7c5b88f7b629c564a59ee15d6f0a7f84a7ba51fbd3a88e34f93c999f68952788355fb25be58696ff48190f75582dc6372da09fbd08b694f886070db574a606f8612d8c854fb17f5f04a6b5058d5d77b025a1fed07a244178a475f439162bc97949da0563d224fb4d821591d430e684be99da61fe09ed0fba1592ed3eff7a6c0a499c5d91a24066aefdd7e31c81f882c5fb6e5b1f4d88c5290c72a92c75a68eaea0959acece5074d7f4cf0faa3b5d54b2d2fad30595b938906d575a6d5faa636f2d19ad8ec4c7cb9482fe3f619a9094afd9f25159dfea74845a77f542a1a6ade5b1ece681b98e7a5463f922fd823b62c09efc717645901195a34c6164fda5fcadb3c295e976d9d67cdf67a7aa17ea352686d7f1f39066dadab26aea8edc01a530c8d355ed4b0e5f69237db5df2ae105ab65bf2ae7846b9e9a6a0e5ded277b599e2aff68d17d7bfcfb252d024b8883f6a093359b5d980442bd32e824a6772dd0cc6b11dbe6b4d8fd01af0f070ade93a8847f16acb18da759d8fda158daac38c996cb7f0908b7a532517ede5d17274a0d772f12cb70679763c7b6cf1ac659067bbd6a399064b185961bb1560fef40a30bf585cca14164ce62e9a0f9785bbc7e6fd3aa64dd26b0d5bbd9fc11e2f184e9ae5a3d3575781829583de236766fda8735af8ae3d2ebbc0e59675678d96d57a54f6bb12b34727ebbec6faf27613d9e3b3f6ef2e6b3f5bee34e464a26d7a812cf0655c0fb3bb3fd1d66b5d9713edcdc8447bf3c4447b83136d9a947faf46e6bbbecbf66102dfc5e664d27ebbdb7fc7e6ea6ed3616fca66cbadc97a74beed4230f727dccd747ab5e34a2717d0a372c43f14dd2735dac72de3f2e1a1cc3ef791809a3ab84bd5b56e27773438a68bc5d14aa9f10ce3eaca3f005954f75e34f7fff3f52fef2293bdfbe97524d8877f7d1759ecc3e92faf5f4736fbf1ddafbf44ce1f81469a0da08f64388a4d4e33a59652408a8901299a30291ec597f12836c5a3848ecefebb40c8a3765d24571901816d90de534457cfd8858a5755364059bf8462559aae253ce1a7ef3efce3f5ff60432f9f5dc4f07ca50e91ca9bf53e40f9ee3d9b943f9ebdfafef5d91a56f3dda7963ce9a0d0537d17881cf7f29336db89bba039f1c0c4fd9e9ba2ba4a7ac8868cdfd4d572b18f755056a541b72adf9e56eda7ecf6bb86703f690b5049147c52dd73a46dd091969e51e11ac5d6509eee93a2a83ebf291120243a109be08403c1e87df06b3b2c07ce346db58024921b9abf30d4688df68417fa9f5a8e27c38d5d194a65b90ef55dcb75a9f75aae3790469a2def82566afcc72da7a48f2b0cfd2ca55b47ef1c8f67f76283fb54c850709cefdcb61c3a2e8dda7e0e3a47818df353abeb6cd7c98bd2d0b278896e37a39e3e033312ad795b26a4eba16ab137c31f359f73dc42e5495d27b73f562034eaf769d2642abe4c8df63dc6306ab08dbff9ed42fb6dfa37fdb7cb7ff986675f32f48ccdb6000f2f7e9bfe0d2e3355d5597bbcf116aa2fb24bd0b82fb24b342ac18f8bf6425c5ec6a51ee1e9727d84d9b8aa93f453d63e9511edb78bdf2ef52772b1c942bf0f09ef38c6175d5c768eb970c8baf75f9497db19414cceb16c0ce025f665c4a123b13a6841a6eadf19e2b8bfc6543d6a8f4a7861bd3e92e3ecd19775a580fb8fcbed52c0216bf5084fb7ebf55a6bb751d5b57beab6d181c906cd1ec13c91a96bec88e98eaf39fab33cc3be91a2f908fb745be720896fe22b2f8eff32b9c446d037b793abcb81c97250c19acef519d6e8cec363c96671ef9e3d51f58b1db7dd4b4d3f3ad0aa585bc6335e665f5a4dd7f9b42a33fd0852a676b98e97e410ca1671a25d0fbac6e137374c55549da9b1aab3555c6b0b66e96c1aaf2ecc4b368f5717e2f2683edc76464287429ba376a615da147ecc59aa77de08b7fa7d0e656ae2dbf5755e2645718bbe0c55e79f3be354010f0fdd2f4defefccafb55c4ee0cdba5b1b87dea8a9ce9baa6eb172a7cb34d3c64c08292810f2e10e2ea5d447437a2793835d57e0e3eca2bddc723dee67bc5d6f62e8bf989b68248af838d3b61d6b65d6479d4f292a5ecb7443fe6af5f53eae6537f15e64976b3d6ad75aa94798db92655dacc95697d5d72dcfbeb47592b6f10cd6d7a46eb2f89ad1bc5fdee4d7b7a3311dd2c0a51eed4f9cbf7fca1cf1bb2dbb8db6aa77b63eda1598ebe332da0ceb542bf50e28a93ebeb868485c522f545631f552bd945ef3aa7e196d5d6db40a7f5ec6f0bb66993eb815c4e9a7a7d9c732ff95b97d34a34f67ef91c9773c732cdd9242210b0338a9fae101bf3aecae329276903e2f6339892e2eca9db34cd52fd78fcfd57f4ac551968615f548358d4df324cec0344f42ce53137ebde5f3dedbb5d05f9006f96452d3f8a5439dedd0daf43bc718b2b35bca141d8aa95ce93194a0d5a3ede924d58fd36e5683e4d8c5a52ecb3851f5889e395463f5b0d15286f3c3137e849d35c05c0f12597753c0af75310ab47bbfac8b0884ad6ecd3956758c5b5155f6efcbacbe8dae3590cce0f52f54c2465d0117cfb8fabd34ecf27925ce72488903650eb4382104a971ae45b802c237115820fbac0d5d2c37d3ff50eb3a42d52bedc463a90890b04f6a42f377502522f5efa470cce824f4320c33a6c3ff63992db3f8e2924ee6cd0f79525437ef67d5e7bcbc4127510cd89e559f87ca5fb67fa7c93a2d51d3bb57e4d3ec99a7c4f0a9f5c6e3f809c55306d950e9cb36c9cbac9e4cb4ed1383c0497946d3759674ef1a062ff60a868c69ecd3d0d75bb17ccb725e2dcb76372b07fb5949ba7bfbb45f61b8f14e1e77df27f78cb4ff87ba77716fdb461647ff158b5f2f0fb146542b7d6c4b15ab933a4993dd24ee2669ba5d45c787a6208b1b195441c8a92df1fcedf7c3e041008464a7dd737ff7b7df361641108fc16030339807c273baa2821e1d1c0e65bfcaa5d34bfdb4e68f95b4e89d90bd95565a378ab0310a5dd182bfadae68bd11995d6a5df0b6fe4019c2d16273c9dc50d1fb1c8f4e82c14a4c78b410943fa6de10ed85507f1cf293c838c2e27de390f5fae3a81a837971c55488a0fed72e3a451ab81f62c6ed7695dea28711a0c67851356258cce759332c863f9ebd7efbe805c2b6998b7a7ea37573e0871b2259d8a63fa5600f446615aa4a569daa2442815ccd4b0d9120acf6e5f1f3472fce7e887de48655a89ab335d5411282c580380b754373bbc0b104753d1dd1b018aaaecfbf3f7bfc4beb3a2eebcd03d69011b0e8d771ad9789b7016967544dd86159c02b5b99b4248313f083f0754542e98a2634044a8494ebbafbf463568ba542f56381b7503f2f412dbdefb3e5b050365d222431c1d4f6a8ff3cfa1295852c5dd7ac95ec683aeba20ef55ad13753275296a06d86901b07bfe3e6bafd9ca1c0596db197407af69c7379c006e429bb6fbcfb283f51dfc12fb8f1ee475f9d28531bc9647553ac8d6eb1cc5046919f535304ece13e21d4bdd3145336237546a76c86b068f1b64386bfbe397bd549607265ec309cb08047419f873ab32a11d99da47fca79bcebba7759607b74c0e468f2ffff9f890eb33da9e8ee7f1fd14b1a01f871f250e24727d11b458f6a344ded8f81fe3564f51cc256db77b826a5ab6fe8622352f999fb01ae489da6b51d335818f061210153d2a6c1854b0104bfd154003ed219d39c9f59b211d52a414308786df378ec76559a56c38b8acd2b76e9fc34f5b5fa46a06d0b1745c382142dd2117e258059f6ed08294b9710a66e38b0875f7f757738b07b6f552f5cd80854dc7b2e5edc20b7cea865b11fea8b0f8562599ecf1bc982738f0df2ce1d0842d0d5b62295eb81758205712b8de977c6aa684cbb8d20a674368eb15d0cb5c1885a276a48d540c41c768db24407c9ab6a9640e400ef8624e326b2083f78a5648fbb9fabd5ea352d69751db962b947ff707cf843a0c1158ed7d74f7d465e31252ef0b3a0858ebf24313d5f9f0b952fbd03ce593d60c259cc0c66cfbadcf7422a1a55e85e3739db166212737578719cbcfce9c5dbe76f9ebc78721a0db46b8e39bfe6f98f673f9ebd8b4720aeba2fce5ebe7afefda368ada257eb5c36f8e2d12f87020d739cec1fea2aac7468949bd65a1e660f4fd0b000aedf709390670e021b94c7c983abcd4a540f540a934412cfe3e4c15aa50a4c700155ea2b565d143cc10d29e4e335e5abe226c12b786b3edd9095f3e95d77d3ff9e9bed5767af9e68bd13fef1f5f3978f5eff92276b5e5d15fc26c16f7e3a3d7df2e64d9e349b5292fe04fffce8f5abe7af7ec8938f056710d1ebf1a3573f3c799d27f3825d529efc919bf0ffaf6edcff4fcedf9e105cb3779d3d867351fc9a2e28a7aca4fac658928ea365d1b0ff10471794b2236d185635747ef4e0a8d9ac29cf9057431e3974de856ca1ff96504345264fd42fe1464afdfe335864cadfa32f47481e88f0fb8b6f5d76bdf003b5d0e1f9396d5ed6f3cd8a4e68be352a5bdaba31913b1b9dbc3237ddb82b54c2506ddfbc56b748ce57a57d77fae68d53ce4df9bda3697ff54dc7a1c3d1ffd5d7a0d41bb2ac566abd3f7f036abd21cb0aadd7fb0ad47a4396ad945eef8b2f41ad3764d912e1b5e222ae41017882f01cbef816e12ba8314719cab60d151611202782b67ce391c216e19b3b6290da73c86548f4c9891719ca36fa3f81104ec2ce93d0304afb690e7546d3a1372a6569e284cf74d5f09a03315fdae891ea31af328857c1f0d69f2855665f08dbe0a8e68b3ea4a067af280e3527e86623677eef0077eb3089fef0475e5f5773caf116ee367327c6a51e67eb0591d4e1d220ee67b61e762735be2511057a985e6542a727b39cb6f832344689c62a7085a4834efae22fa3897830ca4f10e66434e6df09e3acff6014b8ebef75cc6ff105d9ae6bbddd92e2a2a9571b41132cea757e82577421f2135caf8bb21237f9095ed7908f07ece41b7b0da213b0ec456a3b21dc4f6083b933252637efc9b8fc8e8dcbe363c4a7a53b9172166e0c3d1f8aa772bd3a7304b47fb328fff9edbc1085d9a5408d20b79adda1bdefd6f57a4df9731d96c44440d95b51ed43b848ed572938af3f1eacd150f1a3d34e6f3f779da8ed9b5dda30b5907c58850ac66e4542b1186ed6c0877a7351d6b7b1213ceac6e929a987760284c63e55bd003579a9133526784b9936713ac1359f539e7f7b7282177d637146e8d0ae881365d986f785a5a3ceaa3188561d1bc925156790deaa891ca5dbae05033c5b82c1f2aa79a2c76c2331bba5d8ec9ba7d56f4e1daf143b992a15b134d5ec0bbc0570ee7d0febed17a90570403a70d604eb70d1b953d6220c3be58db859d1bcfb6ed4e2c862e50651bc52a0e951102b7c82b6631c8b8b85dd612457710273b6e4c77d35ac178b868a467f6ba1da62af56233b6d507e7170683f9a658d0fcf199079b80f49b8d43be4c0c4ed0204f3f6e650d8469afce53e2cde88b3c5f7f586cd0b5ed146859fb8ef64a09765e57220bd3ee6b411bcbef9312073aecc3df4692004ddf68b86ba95ac233de6958eebb3975a1cec383ab84c89069438ad3998065e1d6adf587e42b3006306cab4def0e120ba1e1619c3925876c4032e1c6234b25c52c919ff0453b8035a3d60f95f67c02fb586b7191bd6cb723836425ba71d795ccdd5c7818ec3615e2c2283d9ab7df2627887f081aa61a1f78547e354cb6ec904aac60f1b37d8b6474ea119af244d55dd1edaed696112a93e54b4ce73ec6bec2802ec5556b8615d4066078c0ebb688bf5507b4b8ad99dbaac4b3f86b93ebd1563006ff660bf6c7b2fd37b9bc518d86c6b03947b1c0606329a9b3b78879e67c83967fdf796a86608d73e79b23563642b43d807531e011d06a2080ab3dc1bb4e54982317794583b0a06acfa586ede2736d128b49c608705482e6a21eaab2438f9078e10a77782651bbde37f306ad1f87a587438d17452f533d7ac396c0f33021747789a84af92eed2ad2fc69cd6acd95c518e7b1ec54699ed0952fb1a7a82e114de334b89ef1391f31633647ca04ea508fcf509c2ef40043e45f8ecff0adebf0bcaef33b471e6b92bed09a854d1eadf258ebecb50662c4b9d3d1af68170f2dfb6e0bf8f9aa51bd4104217d61bd154737a542f8e8aa3ff7e59b0e292f2ff3eb2e46698207c2719e84012dd3366215f38e2edbd11d1d11f84b3db878b670a177b4a020641315bd41ebac97d76c74deecd1d96632feed4ace97b47e5fb616e1b657b9d922c314a85c149a7bbb4c61cf9f6a2283f5c724911f3845f5e14d9093ed2ff1f7e83127cb91142d65bd6bcba959fadf2d109bea65c5425fc6ef1ad0af1fef0e464d4e2252de6509f56974b917f79d2e2128c2eb68b6ab5ca938fcb4a48117d51d7d06e59af6a6e8a71290f235b08e379f8d557f8a8fbe764f8e7af50821735136faa5b9a2727c36fbea25789ec59f7181bb333e4afda168be5e6ea8215d52adfaa8421df830878ea0d06d24a7c659b7bd8aa43c087995200bb733303193d3c69dbb1f5b421fc8edbc6870fff4d9af95348e298272524a84cf08b274fdfaaa4170986c4873aa3c41fd2b85fdc1121717e07729fdd1141f1dabd3b3d19054ad42fbf712d234dbea58c655f7d8330cbbefc1621139a192c24472365223964d946e55efae25b84d7f28b877ffe527ef2cd1708e16b59f0cd37a87778093811bbfb38abb2f37cace871625f2458583ad4ab645e402e83e475bd91eb840ee497b01e91dacd80f937c3fa8431d17cb7d69f54d8508ba6487269e755f3526e343a2783917c5e53b8407fa1eb98fc4db2b5aa3c552ac8dd2e63c30d531e9ec469180a3cf303b787097334255e209048bfb44508b3d6ded916f62093a7c846d0d7752d5e16a25c46f49c1001394f3e4ff086afe0ef5a6592dbb6b86a9efc569422d7b1abdbf6bee2cccbe84daf0bc013c5148773310c787feed1eaedbd587325c6e835d03d98c73b18f062580467dbb5a3773647711e399e95b70b56a7c8562fbb5bd1c409f267a80412ebf67f25572def2f6416a9dc4522c61e0aba9d7a2f0c832d27e9b00bde63f024d7ff8a6c5b7c4346f44b7ceb466fd1914fedfd9a90321e78b745bdc2e43bc03dd15a31597292300da05b54229f8dd5a0226fa8d0478ad446c26aca6d03b74ed7d4c66750c1ce8cf987e3edb6c7a0aa5a64c2187f094d4d63c60749722c8694cd8f8d0fa5fc617be7e46aca66bb5d26ff409c8a6a010e7636b5f294cef49df774866bb2e5f492feb6ce9720449458209596bab4fedeb7dfdd189fc11adf1e1f235cb719c35bcae610280e5c1c0a6cc790af5a047ec0aa655c11ae329537a434ae826395bfc2b1a585316d48333d99e10531f1054692ee5342c8c68ca64ed3c15ab983a975648682a8b0432a15c724f93cc9379692ac0d75a962268b8e391b9d8aa1c4e519594cd90c5363c2a6f44f2a84c35e6125b82739e8771da19af7f3bf1e1f2011fb5969118f1e06da72d8a16637ef76a22303dcbed684600e5460122dcd4da95c95c965d61106acdfa05c0c81b25837c76ca183d60bdc915c437e780b616db5c37945ea2e6f59231f0c75c01b526b908d83bc1b154a5388a3d22586a9942e11c7737aa7a9135abf22555622d47d840e013fbc172c5b5ca5e92072c5271b07faa6a73304461a923b546852e5a582d2a499f4fb697089f2cd6403b98ee426d09ad11845b5c8f9f293d25c3ce93be46982c4c84b27f40e48f75dd87ae362cbd044e4fde5ed321e749fe82031c6134f4ec3577ae8314722c050d34533a4c833f23d7520edeca000fd9d88d5ef32b46dfbe7cd01adc4ff851b1d7348f8b47fb3bbdd59c43461da69c06584b16294713b4f53f975d5bc2b56d5dc8c9622b465846aaf639748ec76e669c1ebab3127f5e432eb423fe300890c255064bf6e91a5276d8b30579b6555330b27e6109512fbc48ab76aff4477ceef4a2afbcdb79ea94864dff78b06833d99d421e3f2a02fd8eccdef6ed23aeb65b4899f55621948fd2c76bb7eee69e15b585bccfeec3335164846aff2ce20931de950fe25ed27bea8f9a4fb99259c16a530a96813947f7d323af9a223505e7c07edfb084b99a66258352f29bfa4c5c58a6a8ca068b2cca458857b3ed4d3592e593fd95cae708e79f121fcd3be7351d8e7f22c47c63cc2b4348d6410d066db22e5910c8324cc79d8ed3698f5874f2265bb5da1d12a74f5b6e6c384909e6d089fb8fde981f5b2395b9b4f2b34c5409aa681d97f2f47835ca1a998915546a7620660c1bea779ff9b520a98fdeec4b49ca134a5d37236015ded32837cf9b25c858228653ffa516eefd6cc6e05ec72bb1c16abd097541e59218cfa615916156fc491a1d746397a418f0a7604c0748ce922ec62873e4b888521c9856412c72ae4c1126cbebef9068cbe864c25a2d45a1163f405556ffa82eaf9bc10c5f9b975d06caa5b4a4e5a9d3cc29fab19a1dac3c6104bee1c55ff32a8df2500b469ffd8830763542db25bf015918c7797a78cd938272dbed088e7d84743982fe8e76524d792371bccc8a5ba94d4db3b63df416e1b466cfc5588c80109fbf20bad2ac10c8f107ef0c002020f4e34909f7c6a9747ecbb139be6524e7534532d3d8b91697da5661ba3e82f0f46aafe695422f3ab73729931a76ffeddc9243b3eeee6a183a14d291633847236e5724044c09ab7d1dc090f4658e97908a19393dcaea05cd4ce9a3d43e3e363f11d1bdb3b9ca9988d8d660352ff613e1dcd50dbbe73cde5e5b7e406bb65ca2795bcf40a2fa9204fbc9265d190675e49430539d5fcd33bf8fb623f9ecb4d79d647f58ff7585fa187e8f0a35d3b42035a35771e5b64af3d39337bbebdb9bbfab2504e076f09cbbef80ae147e4edb018aaf30e7fe81dd2f839f9103819e1dfc8077b76e357e4d1e4917d7c5b5ceaebb3b10a55db87c6737ddce357083342a7af6610bd45fe20cea79c0c4eb47f4d8db6ad8932eab30a47e0b63a816f59ae9d91e513c2658b5fef6739c62ab86d045aaf4d172d7e4c2ccff16ab35acd12fcb42bf9c9e4c29925f8a74330f83ed68bd90f9d65f5e469fe38ff294d7f3aaa2ce34dd1e4c78ca2fc5f76817f8da19766bcc64edb03b08d737ca9763b97f39174ffe76e2e8f9a1b569ac876b304ffad7be594fed095fe40998aa5e3bcfe7bf7fa475eff763353cce62fbd3864bf769e823ab8b020dfbb7b8190bfed7682901fe0df9fe1dfbfb7f83389a9d3e4fcbcac397df0afe6bc59169ccecfcf9319fe475f0ef97cfa5fc3d9b189f0f4599a7e0627bdf93b7cfee4fcc7d7676fcf20c5ae3d342789da0a59c34b743e1a26c7344f92569bdcfc35b29683c13fd2f41f72d5688bff490c44f6211da521406c1a2f277dd13f2d16762e66ce6b7a9c24aef399669c93160b4a3effaff7662186c793d32ea528c4b462343244cc697fe7835950b7d16b4a78e86f882b4a9cf48fa5be2ba8a913c769fafefd7f7d36fcd3f12443d3f7b36dbb9b7d7e8993f7ef3f4b13a796dfeece322d68f8a7493621efdfbfcfd0ee6851733927553043b2a1cf46c33f4d12749c7ca693c11634b6480aed76bbbf4ae44bd3ec17b9b92a9a0b6ad25352f0d3536242685614ddb51045487db00a3f50876b433de7aa824a2e9f195b34bca16445b3b7c302272f8b7582f0120ad442e04409ce7a560bbaff285ad2c952c72eca8db3bb7b26ade9be43491d0669ea867130cd4ee9ac773a3d206232ca4fb068f13525c9f9f9aa9e17cdf27c29ffb1d9c1cecf133cef2354803b4a31be77686618e36a912da9e71268568310726d178319a5c5dc5c58618a26b2be85f7cdfdc6747bf7980c134dbbe070d0d38dd3778b2f0f8208faba88234eb437bb0ac7eee24d4ef21186b86d4beaa4a414934b9af7d8b297f47f912f7b497b8cd98262af54b366eba058326757419964cf6e8332c9a05d28d6fd09252fd5af67fd9da1901ffbbb041289a81ceb145f156bf933dbd0ddee0c61a5a4d32ff59ddd69140dfcb3b6d3eec90396411432fd609347cb870b65f69240d8459b5a3d91828f0970a4f337bf8b2304ed61c329cd049ab0a933049b3a5917e5904a2599e56c7855ac55fb67b159bd53015f30450738d36eef2bd63846668f9c965cbef4e35d953557aa78de3808bada70e52587d42905242e42f4736793a83a8470d822c14e78f3bfb913def477c2338adf4476c259502c77c28ba04cee848f4199dc09e70affdf52f286e247943c3c510ce787fbd014c977b8b966cfac2fbf5767203788097bf6dd23fa6064efe25c49d039738e8f15dca1681c740b52d35bc87d7460e988d382b364cfe91e72ac643189b3a118d53eefafc40bfc3cb2101ffd52b90ee77e915c86377e915c850f6a157ea3e4b9faf52a047fa7bd783092a8db47b4e363f61d4f53a53c0485060629dc718cc43fd27848038761f0adb31ca636dbb63849302817839805b291d7fe884167dc1129b895fe914e7e543aba2d4427bfdcf0e2620571e228db5c51fba4ee8f18fec82ba1cb5a136fb1c5ffbadf09fcb83f2067cbfd8b1a0952a034bd85bc33f6ee6b4008dbed04b0e368b77b6d148b8ab43c0d1bee72970dd898ed7619837b67b364b55cb2caaa7ac6c7c7f5779526000511d37a861bc2273c63d36286a9fca780a5b302a04d7790a65943640d84cbc96b9a315ce006e58fcd2fbb21d4487fba038b8c8a1070878e119fb219114ee279aedaf93e4a79ad88d88fb6d1e25fa923199a9b212dcdfd1c6dee7b0a5ca414e208f995b6f86f1171e2074afed6931ffe0e856bfdf8bc79629109ff42c9cf348bd8979821b51942939f692c06bc1ed00f1653127035a6094ad3c1dffba52dfe8cfa1a6afc0f0a9acf2f10fe2b25df9e9cfc79f4edb70fbffaf2cf5f9e7cfbed08ff538a59d9243fd94d470fbe9dbd9fff097df6b992efe2611702c66130c884a60462f2579a4b4cce3a0682750cc480b034fd273539f4519ad2bf3c18a529fd7f46849ca429fd4eb45888de10d5fd81882c97c3a7741156823689102de60214ef62da6903567521be7808109a2533d27bf7f597d177cf99f866df8bd1d7fbdeece9e8a76a5f6bf0e674555cade97c6f853dfdc9574e878313ecbe75f681ff59b42d28fc7eb358501ebed206d061f1e34214ef2afa31524ec332b80ae841df2a62fcf297c53a2c52c172c352b55fc3527305e797bea1bd8a4a491096fe4c8b0f7a045ad553c630d2ec5726327326ca8d3ae0622a698a16b2ebe8a7de0d8f39ef046a5b5c09c2b2affe8c7021482586459aca7f8755f3f6c6e0076e0429c4a4165921505e0abc8a5c53460ea83db1553ea32a7ff880a5e92ff0bb84df036e2ea8b27fd06181e49bdabe1994690a7b1b5772e3f3ddaedced6a5c906af213b500c10ac2289fca33a7707954d040a8136f20d274b01286c0ad10c430ca12553b2164b5db95a0190427435590ac0b4e193ca0ddae96af2f0079f5eb8b1b415f380d40c1996d00ed7654642bdc20b4db158a2d5c754a8f162ffb40553a0d11914520f442d929adc6ce6591e736ee064bb7edee764ba1cffa75b84621c2301761328624ce5c0bb2166e086a7d4988f0fc7e9871257aface857042a35d43ae2935d56917de8b795a5f34b72b0821b81d70a8f34098c03c564a5373be896e117bda07fbeb172b72dd46bfbb010df406121a5c75c2dce51ec0d2347d4a33816f45261036b52f628b3c9d8d1dc5e71e204426895fde6f159ef457c1d13a1f5d388b00ab8399bb185ceda52c803bdfede4f67a69d786cbd3d8a6071afb0cdcb33b408a0727287fd241f5f40ea83e3350c5ef0444e07da86670162745c024fa92ec6e9709cd3772a418473e4636e85d804a2fc276ef146370494e702d01a99b86a154aa719155c018a769564fcbe3e319a92ccb5b6b254124a8e774d6e2f3c89a4739c637b6e225150e4a288d7e83df0af2464c0edcc64c677966385789152f44f6067e440e9973d149212d426dfe51995e3ddab38e4fa524f256e838d04a50bf03c4a203ac2f2a8e119d96c792e177d68db6f8b94bbd2e215f9282d7d9c2d2b1df0e03c9034f178e633a1bd331fa2032a1e6803025cfddb479c202e0d52100fce601e047b147ce735b864375c2f30f424a7a9d92fe757483fd28b7d6ad1ca5aef6affdd59e09fc9b402d7e2cac1edef06109c24fbbd21f797d55353441f8a7aef00d1509c2df77059ad94910fe55104ab3c702e19fe1d78622fc37f8f55420fc03fcfa4920fc77f8f5bd40f81741be1f678f459a4658c201f945648c7e3c7aacfe38ec653642f2d4dd50e74360b8ec371b29063f751bd6b3d1759e8a21a74dbdbaa6996ce927b726f079b6a59f04daedbe77df5bf6ced6f95ea8db9518d1ff5e11da1ec7294520efc8b73184089b509a319427099882239d4781abdc0947bf9a08fa11a0410e80a39f7b3560bceae5df7a2f2d6854851f7a150022eae5df7b2f2d385abb29148dfe4c905f04fec7fdceaebf46b9223f0c8e072ec7d04a2e4ea80fa6d393599afec3922b9d7102ac5894e1ab493884e5f37aa31210ad370261d6e27f0a3010e8842e25e5461203454646871defd81d90f4e3d13fc16eada10a6bfea9488a3e79048b4bd013ca648380f72837bfdc56fdce1956dd2b4e157b63693163e4f3f71fffa4a5767edff934f58697143366bc011c572d9b0f16f28be9df58b4b86460206097dd2078cd48c92625539966ce16aed940c16274ab66136394cbcc1531cab7facaa2f9df829cb171c62b67ff5a51166f9c5225b1e2a553047b022f18e989a078ed141a59135f3b85b0e1f0dc2dd19226be720be1f49a25f88691b8188e6ffd416a32812f9d625fbd812fc25756bb815f3aaf1ce5067ee2975b5d037ee6bfe83a39755eb89a0dfc2e7ce12b36f059f0beebeb45f0c676a6d82cb64fb9ea895d9ad4ea34354737cc242b91b88414095cb11cfe6eec4b894b3c3b36156eed0ba1cc0f55f1a5feee42ff7da9ff3ed17f9fe9bfa7faef3bfdf74cff7d619b6ddc6697fe3054e1427f330fc66886b8b6e5bc9bd875aca52b5b5830482a89cf999ff20abff1f248da9b0b9aa16d1bd15728b9c41a2e6e5b79ca9d3323a69c33c8bdded10d625c1960cb76869e5d0513dfcceaf6dfc6c84827460fec29e12efe6e0752d164dbe66f58067c1e6af1a3704b2b26364aa7b442e733012ae147acc5cf99af847959acf16f8c3c67935a64cf19ca3f30fc2adcf88a4bbc470faf588b5f073dbca102ff8b91d7d0c36b86f21f197eccc8083f65e421fe89912ff1f72caaeac6bfb2a805d4cfecb009d4df22dc0dfe81916d3bfe814dbf6733f2038ba80e7b859dead07de5ea08dd7247a51854a76159a8bfedbd73f4b7ee3b4f7f1bbc70f4a9c19b3d1d6985a05bd4a9247f60d3bf0570ea74906ea9d6417a455607e995eaa3c12ff595c8bd37a11239acb067d27d25b2fbd62a6e7f60d35f8349f635a57f675e3e350c6e30b8c695be7ec20d61e963865784a54f19de1096fec4804d4ed3ac20f58467427f90730803626fc80a43618a714082b4b3d4927c463395207f0964aa207f05fd43e7f7782665c142e5a8d719f33e832a6bb220e457b6db2d08f91906e4a93ebbae74f13ba1dc8b1ae86e41c8dfd4b7dfb3dd6e9da6835a0f60b5dbad25457acbfc81ac26afe4504e4556608150fe483e5dea27353c39c91fd874611d49eb89c8b7edb8201f5926f00237a86dabdd2eab80b2fea69543d7a4022b0605886babc2934f1530af1202f85fcc855fd48da080ac28342bf52a0a5c415c2d80ff6f777d8f6bd982ecafc6a68dda69438e754e3693d5e45f227f2df2d5e403bd699eb3fc56e02bb23416527347507845b3abdd4e60bf93ab34cd4a22a6352967083fa65981a33db6f81746be54a24d9438ff5d1ecbbf985bd77f846ce97d5449465165341ea5bae0ec2ec77557658bff1a6104a1e37f460fbfce32471f7dbb9d7781f957d662ca49f2e4b7352d059d1f15f6d07662230b6efd3662c7a9f2651f102991f55f0bc7b3e3edcd5a8750a61c05b9038f8c392bef0202e192888970ddf738cac1faa426522628975462550d3635a545ac1a50b9543d5484fa0d3831096403a406742b718576bb1a576df89ed18f99e0c353f9b0dbbd95827d6b9ec95bedbcc489e09873f295364c293918e54edfcf66c7bbf7d36c92670f26efe7c7d9247f3f7c3f3f4613b4cba6c97fcc5026df4d06ef1fa2e97fbd7f3fdbbd7f3f447f9aa0f70fd1fbd92e9b10f86207295cbb9fbbcf10fafc12d79c7cfefe7df6fe3d9a7c7e892b1e13ece4dac5f480da6288709ea6cc98fd60da22b0da57b0b5b27d2f1106a8c9f4eb2fbfb6aeaaa7f59c82bbaad5db2709c25db6d992bb2e7b3a17a1aec921bd9daa57739c7c364a50ce763b1d8709e18293d1e70abc0def45d9ede90276bb7fb248a2167a9c24c6a4ed44597c8c3ea7843c28f824797092e4a2c52be8096f785c965d72b2e1930db706c3ae30bbe0de59161f9c1341a05a64700099927f3030a93c567aa07fba0473c9274baead2e4151a465de60464cce4810f260a567a4d5f46b7ec83c3f49f205b72afaeb685da59ffc875cbb86a31ce03b99d2597e26b28a676bf9bd649fe79c8cf015d774f386e3db6873403ae77c77c5513b3e14d7e603bf23ead36ffc8ec839af4c289f4b4eb21b4eae200e2b429d3bf8052737dc7aec3a76a4bcc3f9886e5c9feca5effb8bb28bd0e997ddf989f5a4e59d3bf6a2e657d5879c41aea81692b83b716f763b0a6110e45f47a609ae157595c43ace269d1ee7675eacd774dee51aa3418af3e4298ce0b4664c0e2d3966c7094af0b50e8706ce2a4f62ab1b0d7bdde2677b9150b9c6c5bc6cf169f423b5f7b29785580e17abbae699cd928b109899e277d191854c3421773becb6f82c3a08f0e86bf18be84bc8ec19891f803f46ab3fe370343fe1191d8a25c4223f8f779aa6baee33a85bf04b2a906bf2c91d9b2f9b49354d334e4e3a93af925c834695a629ffae34d72e88123a2da7fcf878d6cf534a27cccde4fe961bbd8abd50249f31650dc0714d4e70a5fba8bfabac13e1b836896f0a5229c33218706593bdd7c723049c68834a524e8b996cb54163cb81afe487c7a3d958bf3ee5d90aa5a9468015fa0b39513ec6c6612493a3af27342fd154f6392384b009cdbb38126ca25d034a5521d77f09c3f0ad6371ceac1b01577530773c8f1fc580cfc0935232415afc31328a5d18d7184f5d2f062967cbef6ab346a5016045ea6939c305a1d36a367ec6b3024d18b03f0582e05292b729f0e004613ead66816b72a11db1f1232e650839e469354392c7aa66c4c63ee4b0cb3ff0bb026945e36775ecd4b2543cd3b6c56cb8bc701e38bdac1a41f9d38aaee60103cd860b59daa874ed980d376c5f75b4d5abe27c23bf68a800aed34fcbe3c6d0a2f01a521aa8fa6feb4db9a4f3bd1f08f53ea7ad7bd8301d27c1e4023a63dfaf36c05ff10d7ba70a21d430d3c1994019de20dbed3b78dedbabaa7e67a7a7cb825dd248b7b4eb49b6b8d9df5303af1d8000000fc3cfa9fd6673715509e1e5f4844fe63afa971c5cf779d5741f9856cc74fa8bec9a53db06cc34d92598e16298fb9b8a5dae540b2fe8355d75b0c8287ec38365c01421a0bb59e49cdf37748d396fbbc654098436c0feb8468a916def1adc1e8f2cfad15cda7959a5cd26cd1cac0f5042f2906d3837e73869631202b523ed46f6a65cd2ab68d08ce8e8446769ef0dc8b6844bf284671c4d7886723ece2216cb3e018540297dbaa968e6b6edac99955d4bb5c8c28bc7ac4686746a06a246e352d2bb049c54a6d56c22ff31ae5486559ab24962e0f9e68695496e1f935956e26d715173f1a4e0ab9b7c30c226170a6f510b11bb42f0a3ad901ca80f7a1111b494aa1c0e5f15bad65c51e991bde592135371d1e8f08a364d7149bba3849113308f814fc7ec3b6ec30a9833a4241ccc56a62aa6cb0c8c67a0d552475bb3ada2eeba3753b15afb38e213958e7348d30cdc1d5cc2d7edf31ac8a47dc8accd520f1e839189d516c539c01aba17d7c5844b72715ab092aad0cf2dcae18e23b60778262641ed1c88a897264e90c1493b6b333d96a13c03a70095d8ee6ec03660cf869844375c46c1db31a4f45e65aa43fcaabab3c86ed7f2eff46406cee8a399c48be943cbe42dd4c061e3cd2061850e58923f072c46981321bf2e89988e3adfc46ed54889f95ec8efa1a0115a5b49e1c2d251a4a3c8d9331a5c3bd0503977ec275c4b80873a0b2368d4bf3d2e714d401e3f0711c298748dabe19af2a66a449ada9f1a3f0b5269ee1b0c55c1f87f450a90b8f08614c36a8e97a418964b5a7ea0f3713184b0a4cfdebe7c018a2b2276bb6cb5db6d24c36c9a529b037fae6cd7775c4ee0736514dfe8612d08a4e9877b8cccff0e8d4b72c6b3050289befd1cbabea87fb32d80e273a9d4c54725a1e33abe1e619e592b96526c1811c9fe9bc3b3c625f2c8d92771266f7b87b16c4f3628e1f4ae5b1039603dac27f21bcd544ecb99e277bbe7687c08a0c4c01e74155b2593010c60c30217e6df1c970e252b018292a5be0ba57b32bf01217341c82cff01f675f70461795fb652ed03c560793001f3e3358750f88f553ce57e492667d9c0c74f6b7ea502a276cf91a0a80771c932ce8f1cd491a0f458c0c149c0399d60d5e52984b2a643e7e978d41a76ef0028fa54693f2f1ab26c279d7ec0c45c5247e84459c66c84866e86f27b71b8b255b536dee724b2ee35d34d07bb03643ca59a79540a9dbea45b6d2976dc8be6f11ec5931bacec285e1950bc9a9486e255a45684ae20f5b09a8f6b87b87152ed76457b3f5c0032a21f308700426def88bcbf3015500c1e520c25794eb9a118f6791fc5e09a62d88a3d8ad11717039aa122da4a448f92914f231d0edc9885dbbd888782e0bd4987995e28fc29b9fcd306ed0a4a8e88645948dad080a2742ccb6ec76cee0648b4a9e4e431f39f89c007f65c288c613da26d8b0d40e5e10692ac56f46b2938e85c89ce581370e191a61397e6be9673727775b5c8ba8d0d6f4d0497a0f85edb7dfc9143e24145db1c104a32641f327dd2fb457a71a14500d71e99b303272c962b97876b757fb1dce7853f95618c5068cdf18530ea1f4e5b0b031744b83bcf72f770c3ee5c737fead8d34fe481be021b8d49de294f6c59e31436d8db6379b0e7704060f21ec9c11ed392074c0cb69a9edcd1fa604f4393071a1bdca9bf72571786ad7e2a777455d847a33cc4abd65b98531ddc3348921dee82aa796ef77535c7820ca44810ec761c902c93b7745e7171930bb3dd7331f135332ad4b07ba0fbefcde99e838f3a55fa7834a166eba29c626f207930307fcadf1797112629a48f6a04d17dbe177e19c25b4f159a079a541ca84af39ef21477ec42eef20ed8159e725f96c20e71cb3d52875d5633f7394f1c72b0f93ed616fbc755a49e2c0e76bc8e597f1f48bb2b2341188ae061879db2ca8ca037a43bf001d9052686ed177e95ddce1c3de17974d721e61d3ee6c012fe51d53a828a4a4ea114854af91e1ca19181b13684651909927c7786876e0c276dfcd343291adc194081a339f29fe5f9b66f64bd547a5e223d9547ee3535f9bc6f699a02eda101edf1b2b9392f90c95c1740754f75acf3339983796fb3c18cf6a996f64473c2cca377d08b4201345c542b41795455a6eba4a9e834cbde43b00d8054ee7f0df161898922fe979309f3a3f932a7e7c3ca7b86e1be109295e553a37633be3dc9e3b3f357676fcf1f3f79f1e4ed93f35fce7e3afff9f98b17e7df3f397ffafcf593c709b2ba2b5763c70f28c8a3e908aceefdce0e214815cd33013a50b83465530e715cc1cd71abb8e0608503c5de9eb51d1f52c0775e66e18d0075f5e813966d5b947f54aaf89ea29af515d5a0314539cb787fe40782a5ebd0e090ddcde60560c47c048a6a1bbcbc2626ef9f4bafaba05453fe2e8fd03ef38a4b1bf2bf6ab198ecab26708d723661598d723e31b71335ca5fc04fd0453a77fa355bdd641ce9f8fed866a6521cceb677eaa9b831eef906ca0e97df01d9a44788208faf68b3329a3ae0390f1d1cd455bae3b2d38f132d25d46a912536549b6375c1a7e54c35561360849889f41d8d138dc6100aba9e2cb23032b6be6286a0d0c2c822b1265484e9858e302dab3f18e95b0f95b240a034d5b198840a362dc7f71b272f7dfa75efab6961f04e7458273accecdc9cff3de79f0ea20f68eb736a2ee107950a649efabda7986c0112adca1f7e2a55dd79c00666aa2ac2bf6b98de6706b9a1ffee60f877ceff10937070964127bf876e65dda4b0019a43bf6a977e551e9533d9880821d52401a7c324af7043a81e2e5e118b5f54650ab5178c38915d253851fd243831bdc89fd6ae0b27aaa96486f086640e831ae166ddce1abfb3b06e3243082f35f39a27bc9857b5a415aba10a4491984b86ae70b2527259fe86ab7100b783b0ca2d826b430f1b5fb6a8154d6c1c59a4c50bb2059e225f6239bf7c032a3eeb3bc4b205d80a3d9164dada00ebc27e5292422dec9aacba4ca0d71ee857789a98574e72d67d2746e1dbed71bac8d72d5ee26b270558dd7677a7f76ca7c50bbc0a9b084f00845ff5c89f71a3d5680579e51c21adb6cf5a32ab7a7867b1e8aea943cdc41fb75661e50c1be5755eb7ca9c7efc8af78d0bb5e713dfe3aa97d1dd6e3a43e63cc325e153611938ae63dc67028f10b64f0c9fe0521e10f8f5ef6c772a66702d8e21da58299bfad73d9b8a8ced043318cde34f6d0282c961de8e9d45c77b7efbe950f4c1a713ca9894985bc748b006a219645d68a8785b5dd17a238e9645a373d15276643804c7cead8a7d0f86e4f76da13061a109215dc7660b772519c527b09ba166bddb0d184ad3fe17cc6905879f3b31a5199474e101dd578a4f00db5dbf925f41c5e79415da76e09e42fc66cba2a957baf14cba9f79ad3b903c35a955e0ebe8e72e6027ee435e754d70525977c806afc8748637525e5e9207a36ee11719da6ed2b449d30cde9a4ccd9315694caa9515cae54778655372ad33e42cdd5aa9b3071b734c1692e06ec8e064dc85d2301f8fc5585988366405a31a1f1f2fbf1363d4a469335dcea4b493a13174d87dd5362a67268c3130f7e7841017080603dc329dbf0eea56bbdd80a3348d7dc3bd9670d8042c89179edc4117eea24b1f59b88b2c1255c099d602f1dac9e4bfd830a2f81e952a8688aede3c43dbb61c32fa9b785b951ff6f8ef6b9bce20fdf6831140212cfecba88b45444663f65d5801ec83c4943d18b919bad96cbcd2b18ae8473d7e84a57c60566db7dbec7645b6462dbef6e5d91eb3b6d830ed9aa372a3dab9a316974351891525c905af3f3692e52987fa27199ce07248d935d9ca7a05bfbc96885e0eaf296faa9a9124e91e1a55a966642eebcee726e73f3cd7aca4eac762017f39bdaaafa95747153d5aad4c6903c5f4aa12f063cde99a32bf5d5d76c64abfad956da2af6598cee4402f2a48611ab0f601915df3baa44d632a1f558acc369bb5a4f2406371392c3fcefbfad0e4f304de2de781bbd0de4ea0ea9e2e365745f321a2743db92b0bf2ef4cb27d28a555e7ece6bf195642792fc7c221591f8358684dea3ab4f53bf49c2c0821b67c607e77f83f31a3cb3baf06935d7158344d75c9fc0c5f1d111d8d457f730a63bce7e4db97ec8b17d78ba13b82b068e2852565cce0069c4df9cc32aad4cdb46d8911ed84ea3e513146f203e28c6b349bb80ff9b6c53529c1c325e030f57d4c3c4195e31ac233a63253c93f692aa6e56c524fcb19a13a17957c9b4389fcd9225cff91bcdc73838090486ea412c97dadb2657ff110d26567a3af1e22dcc81f0f759aec878e7e66e3a2d5777f6ebd9c71744a87abba807d3f9a9144ff4eb07c01376dbc2a2e56b4210f6724710b54950515e5f265cd29f9624612fba45e720a05e4cb1949f46ff5625daf56e4eb1949e40f53b798df903f43cd627ea30ae15a827c332309fc4ada8cef76caee16690fea3dca97887bcfa7e4622c636a9669312c66118a03df7b1593fffccffaa2a1fc5a422a39f04d9b55c30be4b247dd5a8569cae40c8cfe1ab44f6b7c1d398ead439e6c6c78c98bf5f2ef2fd4852f34e195f491dde680a0136bd19b2750fb483f02355ed41b361f2663714c921f549347ca80e1081cb5deb3a445980e19151f6bfe011a48d34c567fa58abaea7e2dd32bb481b020a2cb5ff29e7df6394ee401b037b53aeb0cbfbda9aa84f34e3fe0c80b6378a93a84dc8cf437c18be76c51e3c253dcd5814f49e1b74eb814a270e1f5404a9d6bbb30739202c47556205c741d910a17431b08dc4d618e8bfd68d966d0051af7b633abf955b182ddac7efa9bf16174337e6136639bad77bb6cdd6db1ab3b5d6fc4f0d70de5372f0b565c82225d0ceb35dc09e19288a1ca9ef76673d194bcba9050eeec9076bb328073e42c2c94299afa1c94ff7a298aa1da6592a991dcc31b2a700129634b5ea91138e555f3b6e6ec71fd9149a6be3063241c17c36b4be678f71b2e200b35b9e773894f2a1809fdbb2ac9e43206b32395ce806993ba5ea18cab369cdcc0f00c7a0829866865a9faab4d700b0fa8841dc2054f93d8b82766345d6cdc5fc249032999fddcbdc891bb0ad30eda267f05f74b9bea16fc41dd916b1e16409651034ce48ac8ce60cbe1863576a9512b855c6d17c55ad026746ffbd73fe58673cac4eb0330185e5271ea56eb141e9dbbc0705e8842b225f083a880fe5e4f612b81a595ba86b5f8e60d605534fa236b355288221fd8979a54c289255fed76da244cc1c1af87f5819d0f4658931e6d74c3156d6be1a81098e1dadc5f79cbd3cd049648030574e0b820158c0037a41aae0b2eaa42cad0fd46e0e18da83955913c6c05b9d24bf581de6e8a63f8b15e55e50d5e93440ffa41cd563792bd5aee7609ab1f401000789612e44a41f09aac86de2441174b569d616356fb9d010854671013559244461384c1a5c723d6d02f833eeb345d64c1f1816cf828582ebd247ba17f6db0967e3c9a675bafa97c159c4cee30f29537aa16b5e3554792cc8d8a995f47b72c55d0fedbd15ad8690a194b06d342fc137900ab291776b69bec1a85f36d7130ab344d8a951289f6ac889c8c367c22c1c74ec09b2bb2deed646b80120a4f06122ffae3ba0a067535e186b9cdb9e2308d4fee51a3ce90e106aeb35ed84d998580c4db46142bb803452699adfb56ef8bbc09a951d53cae160b2ab7d6535e5f755decb94d7728c31b56ac9b652d6c3e5401f440f8d80fa4ca2b915560b4f00a7ed990e8f550a04ca8fdac084b68d97149456c907e86cb6e90d18f0373ddfeb70aabc333cbedd933ce7353a6755de378b1015befb5229501552670abed8d4371487b962742c04ce80b0735c1dea2330b01d04b22d00c8bec0b84f2aca36e03b0cdd61f176cfe40afa57e9189803a5aec534be9ed5e4cd16e1794456982fb45a4c13ec9f0bfb2bdfc5e0a1434a7a990779a008015c3e09e24bdbde77480b7ceaae4a245786d9633c4f24e62dd63d4a2bb69861728a39a3ec068f0972670503012cdd64c687e6888e0bba4e71dade82c8d03a116f993f37102ec9a62a77ac0a97a79c6f6419b6386d75a7ec0de211ed8e5948eb99403a098439d07c14ce8b948f8ab3d9b978a2475a061dde4c1dbd1172f868da8d77ab8907eb6af483cf4010da9b4e527dfd6079002b308901b5170a165df378ed0916da15a4e87f3ba042d83333beacecee166fb4cb7b1a671e037e692c24721deb91212d175612ff3328ab7ae60f4589e9ccc1957a9ecc014d7e2ae231dd6ccb0a4e62764fe0872d7b95217c46163bea36a50434b100c62fbfb4c7fb040549cad0f59184609b3fbe2106592f29312819f3341f975b19aa8e9c8b5fdb15ead2a7699f91550ae8404b74c5b994854331f195a412307c691c96767b5697ba9ef40b99f8747cc6e9734a260f30bfb1832d220b141d7fa580d11df55ee85eac95024d23e4423c787483bc59fa0c8b98a29a19abfeaa632103e2f42c3b34041de1727d3944d8ca12a486b79687289f2f0d8db733ee9fefcf627f73f7edc6623c308c0eb6cd27d78eb694d18815401f0c1cf9558fec8e975556f1a4720eb442a15d5c0ad00daad0ed615611df1293a65c45f5124d517cdb87b3401251817c09d4bd2ace4baab827ff8a99b931e56854b5c48127dc1eb625e160d4ca0a24d0f1eced6e85dc6f5c8b5aed85f04e4b315ee162426ffacdf6bb78dbd65b8d422eefee6688433719b730667688937d2183a7c8a0c308e73dd665c7dae377242154db3b9a2cfafae3642d9740221e8f8947ab8802c49012fefa8dbf63149263322e44c7529fbf0dc6cb0314bd381d6b082b4adb4f937e6aabad4f9e639194436a637fdee1504f8547ae5df84a6ba1d28e411255f6441b9fc408fa3a766512f32bf1c6153b5a1e227cd3e04e7594f1b46519a0e448f8089a1a00597945137d33fe0740f719515de432e1c64d319397d55a4ecb998cfcfec4584ea9ee13b303f4d33bb3beec27886ccf5a8cb32dc668e5610ebbb1b4c3bf01281dab185943bae8ea1eff1431050c536b1db1d90b0338642fec97b099a44d353454a05475c90d2a1a10d297d96622878c19a45cdafb20a72e99eae2acac41365df3401fafda22e95eb0bcd9084be7a49e7dd415fe122c24eab880e0e7338a6eed11539ce4a3c6046bb91a6bca7200165803762b52000ed341db84771814b34b1027086f26005e55a2498a176ff1bc33a721b1e830724d0db057bb4b32e8e8f7b7cc509a6f73a1e7c4e3376c5d509271ee719fddec627d5aaec7043f903a08ebc113bb92c71d0cdc225e0d2b902bc91e3ebec6f6e7d63bde96c4c0fce682a66d6525db9bddc553d93ebda7578e9da71c6586b573ed638b7a878237c7d86414381bf52911a2ff6c6ec37ac33a7646bf573419a606042f6e995e05b2986fb9985633617b63ac46773bfa858255e6e443f0a9604bef71dd95ee97ab92bd931b82fb21a61a3af679bd5aaf5bb92bc94e92ae6df7edd6592367d8e95c2da5cd583271d35a4746fe387790ddb3670f76edb5a2d4bb467090d95753d0eceae1ea66d86f0cbff0bd6fa206bae3f339b77e621fd40ec76c2b2d7eac2483fec7681b6d5f0e05d158447df6ad9109712d81580794c55a786ef7fd7a9fc454ff33b208477b43ff3fb8cab91763b88f80069965df51b23e5847bc2602e0f564962271cf802787ead8e86093787446e07a0a3114d018f447809901524283344360031d91a08dda938c1eb104879e55fa2c0adbb7fe9520497030c5f5151c00d021d9a9f2dee1bed3b2ac3a735d71ab54ee0e79e194c576366ee6a0ed50914fabcab14d9d58ee0758040f9230b4731f30d143ae347fbde376b58d82b1a3431bff2e92cf8a6b71eb186c3a9c27d4c04decc9b010b66c0f63484f601ac4f60ff00bcc41d7302001d9853b08c8a81cc181e9cec1dbf5bf38e732298cab87fc9a9d685ed5d30f783c3f0b55c4e2c08ea01d21b9c1f31d5bbe3290c6d444cf218da76be790c7d7732110edfc5502ef6a38b265ba0ed3406eb4ff61c580e2b046c0d385c95b016e030aab53f605d44870b5e5c4aaaf552f2bf86815591fc05dc38ab02b594ac93318bf9fcb56908b4da9decf9d46f322b51ecd0741bd82bb16b2d9aaee53f02eb121a9c4de29ca6705ab127cff7f2e4e9a0011eba418f5e5def150ea95d43457c3e41934699eb01306cec32da98cf267880081076c30ec1d639ab9433de552db4a205eb645f82fe26c03dcfd5cf5170df7dbd614f6b5ed26ef8d6596f404895a655cf0dea42414f2b62cd9ffebcec0773b4d7b24a4ca60fb10b80c77a2e99c04cddcb404612592340eebe14db0bda57761198f431ab94b82d6ad12c9f3ec46ca62f1dfca50f70be8f00c150489f1fdcdb84bfec41437e336a9ff6699c3fc97ad8a06c9aa8cac90c72effa2835a14a0608a66965f1bdbc6bd782edeb31ca28ca83f9ae395d179cf6e290f443a09a78b59acbf5326d84779a780baf73812fa980e8637fa33779e00b23247e2faacb2eaf8e7a06dc793e7fcaeb2b9be7d7e7a14778f467d486ab1fd398dcf37262dbf62e2764d1bf71df74018fe9de7da3b5b3179b6a357f5dd72a5291040340108e6da0b550cb5fb88c212ceebda9a448414350998d15d645b18d06da42a03e87e89b0d796b06b0827b71bc7d5c715a8aea9ae65bca04e5216a982d418c37b8326c043b6c637c0d0be73c0f9bfa2a16ae2f29561f8b9ba6df56a2b3b20198d56b7833fc50b1799a0e4e9c22f8b7b5765c47ab61d1b61016db83cb9ea58b0729ebb6d1705e2d16e6e6d7eed739a8d73b214660f5e18fca68086e610727b85e8beaaa6a4455829991a19321e3e4625ab02b30c7152efa7ba3db08fdd0d55d5195a659d527921036cd562a40981b8c3e654f696740bcc14bbcc06b7c8de7f8aa47717a3bed467d796b6a3accc30a20baea0afe05059baee012652b8497a419d66bca410f82176439c96ec91241aa2048133414f54feb35e5a7454333747cabfd5f47284f802c27f89a646b209448337f73b236ccdf15d97687c73adfd8a0dbfdb34f91d16bacbecce7ad8b101c0767505e61edf6726646fff6664df305eeed76706689321179d1e28042bda12b0ac07d4325096e9c472cf0d55ebab355b898d348ff577d0ad4b6315a1319c33eaafe69b80558aff0cb3371de8f5a8bce419230870158c39da9e1d60aef367545a662863707b80018eef2f058377879f7f0ca3e7ff18324b705ea98800d82dc47fefaea601a00cb7e26019014c74eb49541970f2a4db55b65a628c5d476f454763493b20b8293a553347d84216c08cdb30de1539728cfb07bce6ff0e81b84f0264d37109be1b466f34a8e2a4db32509ca5cfb7716326799c04b5ca1dec43dc4de8488dd030645db55a71d97a7e50cc97f14d24e1f62372e13ed9a6b2060d4a697a6a1bf5ea792fe1cda06fd54237f10ff3d0a7bcf7d507afbc0974c5c3704e263036e483520a4c02b22a6c56cb713d34a6e8dd01c628530db23e1a4e9c0b9aef419900ccc1897440ccfcf25c854fa28368c91449c2d022936e4bca7cb194ad36c4d16d36652e5053cf5c7bace44670809cc0d97a337b440070001d601490cd9eccdd411b0a42b84255fa0f9a4060cfaed5354b64e1441bd83697239a6682b458c55522927f6704a19ebd3f2a9c739cd888a988ba9b7c7262a899b9888bc177de9daeed1cd85daa63ad7abc6f93c68ea3abaa7697f4f6bf3fb5c1c3c6d824ef784bf70b78bbbf7851f214e0459eb889a797fd2fc1327cd3f71d2108a051457564ff5cc77c6971f3075a9e078fc2c63995bc0422093e84ed86e47f7db2382dea71fc6cb69481b6428fb0b1a3326bcbb0d63a3a16d32542b657db55e514173cffae2e0adaef944394aabdf996c2c489ed1f93181e586363883dde05d0c6b7082bc2ae17cda4fdae67b37e377772b145715fb003a2390191ed3f966bdaa4ac5aff24e09c4d29429cf275173aa3547df1b732b3fb693d367ab033c350d7f59cf295e752d3669dae08d55643efa5870ca68d3e065d7d666b26df30d5ec8715a9306bc96c25ad4a648a917cdbda8bac1935877e1184575a52fb1a309b5fd5b755e3587a0a2949351f7794595339f64d594f2c6dae9bd0633fba72ca8608d1f4e6d32d57a48273a095a0e89d0547fece9aaba5c8a1715fbd0ddee07adad95d1c173b6a8bfbff9bbf109746bc805353704fd3525da01c19ad491529b0474ab498a386096ba03bb1264b1db41bc844c8b17e5d068691c3306b5f4c484b7882e1c190cd631957223eaf51e3742774962a1fd40396fb5f1af6a3b3db034d8bb78d12d4dadf3c4d7a847e801dd62266ad462226cb08ebbe1daa64109dbaf69b3ae59a3365567b059d1069c52f54da7295a75bba3984c6779017ba8f85854e2b55f73d9ed35c9f8c2b651cde36b425d17287cd5357a3d510e68f935bef1ad86f1ada348beecbeb8959bf4f6d335c4b096b8c09b7b738bb768db7cac44b9cc6e87abe282aed0b62c1a7a7492fb9f02cf2ff09f9127040c6e02a7be1bfc0dc2d6213374aad5dac9ce7649a04ec96e2e46b443695f81d75d238b56651456bdb8b6d69821dcefa367d135fd32dc7771932e8119be94b2c417f8e16c0c8019e58cdc0e1bca4486b0861979a8de3d34402bfa1b6c6b734057697a7dc72e33f1556bdf2209b2d3dbfc5a9daff1b84cd353e56a5de152c5dd6033b255a8c9f36a5aceb052605d872e9d4c9f9e5493688fd27bb6339acd09889d6796f29c5522b34634cfe739c5dda2b91635d8db947991215d92af717f1be7dc5097be3532de285bcae9431c757fae70a37d4cf1ed7823a7dc1d04605b58b10f9d9860b43b9778bb67180c0f4607dc3b38da5a89e35704fc87f53ebd9adc92a8dba8be5e6e5a94679b6005fa563f5258f37ccd6ea40c1e5f10fd85bf245af1c33f7d6d5a84af098f7a931c1ab74ecf8e05c2fb067a6a98397fa87b16611345847b520f65b7857093e9c5f00c4c04b0e131d6b45a64b712d277cff3f67f759eb7a8c96e75dada5828a1559a662bb2caae91b9139acec60b4865bb8a1ec5d18896146df6132927144748a2789a3a94495d509964ec9d1d2a6a9dbcbb8c58bf2a65ae1bb70d3ae02b37b6a728b0f8fa7777b6422805390435a79b8c21207aae58b89c887cda4b712711fbd3d02aa92e59cdd5864fd36bc735e657945d239be5f7da64aca9b26ba0c1707bdaf6a5de8ea3ea5d0dfc4ee592af5abac657f806dfe24b7c815fe227f8193ec5eff0d93d1988179681781167202a22ac15962fd480982d8519e1f1440e3bd64c3c3bd45c4a37c2324c31a9263cfc75800ec7ee2cc2362cb0e8b9cf776d2cfe000321a1bb0c19886bf2c230102f4206a25a64a2e7d6e63af15cb708df929b7e7c8555c08aadf0cd6e975d92e0b8eea409ef626be16cbaeb7bdd65e10b72696570fc925ceacb2d7c4b0617bb5dc4fb190675455e22fc84dcf6ec8921da9af67c938fd8bf875f55d73499e185e46e9e8077da33e2cb94c7c7f8947807a376f9733cb67e56412df1020ba376f914c6738195ebc9af1bda88e7f3fc19ae9809713c97302a21a9677edab65602b5d1f1390a45e6ce5c552f83cf312d70dc70347fe22d96b2e9cc1921640dc22cb6569dba5093ddce2eb2c0119bc5835cd6133826de914ec6d350c8b6dc01477416dad63c17fb7a0dd36e8acee137c8b39b788c53822622cf9efd859c590f3b48a4e7ae519a66672ec87df3419d73019fb90b458367781ff183c37bf90784e3ceff2b7d453d7d88dfcdc6efc279a36ddb25c30d50256e6048f1e0491fd3e87ee40bc95aa0c2b777300e6173eda432772fb82651b9b204ba6aed7de9d243d23dd79983935e0a69e7c6249c74463133eb15c151065759fb3078fa109b31ce50e4983d6c888baddcc5bcc3aaee79673a4a80b14790cbc9dd9486d18f406ecde5ac0eeb61d9d1c189e413f28808e605f9c1e68cb37bc29e7f35e62e8b52ed76269a4b15000490cf441a7d5af333ede17248dd6e15a2a5b2a6a816199bd2198208c6533acb847112e4a87313e8d61ed72a12af87cd52e232fd5484bbf3824846010b0a418dec7c57a49814317797dce33a7458f7eef851dd2dc926b49b45784d8a342dfca82a99948c06d960bddbad7bc15c7a2d5c41e8bbe08cdded069035b767c2bbdb5d83febd16d5e2e68cbd72db5221eeed71eb3203f103584e74b0dcedaed4046f483f2012be55138c44f6d9ed84ffa8845b809e11736fd3f466b7f3cd936d28e5cc380d4605e130b29f6ffa1fc44f42d657d568cef085fe01799091cf0b4841dc65995419bfdf7e34ccfd25a90d9b734106b5e57f3a61e6a5871cea90910c8f02cf00c093bd4cd39701d0211b8a572427b14ed3b50e5a3678822e897a907d8fba2e9f117e3783d77881382238e6d2b13bf9bf93168d2fc9330716cf2c2c5a7d937291a6832c8ae721b222fc4e877c3a9dd819e797d6e56a197a78f8fb09ab384ea7edd890328982699abd3341a87a185e66dac1f19da1476768db434e0ffdcee4c10efff3a8a43d50f7791cf99715b0fd80adb1b964d97e161de201d8063a5b4464e3fc66f5f009ca9c4a4f6b0e2a2d8e6c5a23e72c774c5f254b50f42a38e6ab598970e338ef701c8a419d391c47b2b93e3f91f7da8fd90670849d814991b01b455e18b3a97705777a5ca2cc8bc488508b57612a6a0b69889f452503d1a076bc024b33d9ed2aabe43f45c77681523462691eb75add6bc4e9f35af200ee268143cfbe8f4554c28fa6faf59c349d03cbbf57f816b93e621191d7a85a5c4f321c4dda440f1d3c104bf1c07b3218ed0bad84dc3bec2b4da6b48730a08d951b180e1ce025931de155ee4866e6877f52d31f8510357b4c1952402530a4c0a35170f541fb940d8f1ef62ab90ef878f4058a6ba91dfe5238e8a0789fb188deaa497c4e14714f8e4b1bcd446e261b5445a7f1c5bd3c746e42be48dbfafabcdf3cea33cec13d4fc4245f19a864a1b8becff1e8390b1c4569e7d6e5d5706f20e95ed9f5702f4e1bf10e3d9f74da97e13befa488d8151292623effbbcb5607fb7daf80e0da40d878ff60e22110de7a4a8851cff63ed47f1c60e071497aa283d2698ccb342d83706351a603b0d7701d221efecbe725b01ff1260fb49542fbb6f99c7fec6e8c75325ac09ccbd16782a890641db16f7159ac561745f9c1bbcbb883290c743e8647146d1bf57b08c20adc77c96d77c144553f815d54247cc13e7e24b2b49f3e06c30f8b3415e10e83f8073d57efdf691c30fa12ee0ad41dea74d68b76b7ff0eb5777b9aa6546719b1c60ace3606f745bb85fd3b1ef5ae77f3a98b236e90bdd9f763356b731003aa6c2f81964d3e9570f3d75791b65ee7f19afb4ec6c08ba83bacef0b698e4b93d091c776646da4f63a1a71a2ee8508cdaceacc4807d56e37a08e6e581531b594b573a5844587c3e53d6439e112ea12b507b49fee3d110b60eec6bad967fb6b7c193dda9fb981a8227a16dd46cfae4667cda76134acdf3502166f3ea699c434d269244ae2fe488b86ebe201b75a7af171587889c31cf55519e165192e15de56518fbb3d77fe0c8333dc60847c7b5095bf94c3bd7da7bce3bb5d2f6a9a3b697dd09498a9c0ed3175b17b115822d425c7e9e9414a6b1060b661d9224850d8074d2894999043f7ba9f92a05384a7427b6c4aa97b0a7781eef7296d05618e7584e27fa88abc15613e21eaa51f23d29ece95dc94f7704df759c33fc413dec90cdec57d7a31f1a3a7f49ef1df8709a7074cec4c5df76ac6f9c43df4ff6810257318d8e0683d59b91f77fe4eb9d6c6d434c1bb7ce705c9d229da51070af88ab088205610dad3cf3621ffd305c1d54783dc6090b6c1a8b2bcc8f02654253681c107a3562b3e3b3a51470276d6b100f36e2372eeab7b5ed4969e8f59c039179362e87672971e4fb4086fc8ca4c6c49569d46d31df372b7ab269bded0976d6fe9f784b9ec9f09f13caad453891d62f75d319be1d157080bc254266841e8d85ad0d97c25dc153f8cf59c99650047d37b2c81029c184164e3b2bbeeac039884b4e790e9ad63309c059b6d1f8febc822929676b2619f55435b9ea6dca0bd6b018885d90151f1de897db73700bcadd1fbb87ff4eeb95a2bf40e1d070ead7bccae91bb6d3c559ba33d74724c6cc8219370633a02b6fb6b6390b4f2ece2acd7e9abe2ca89b4c950b642369787b9fe14113ff0be5dc7a2e6a5e2d9f3016f913ee3c9dadab8709320034c17a1236d9a3e06c3a46c85af1524e6e4af6fce5e0dd596aa163719831c8d83ac20d7f0ed1c21b4bd868fe6b820cfcc70aa6189b2055ea37e5e20595f93f939c2d73a0fccc694ad10be09f3badc90a2671d79a5ed05afba8bcc2b292bc36e8d8ec4bc5a0eeb45a668d01618741283ab5003bf8de082a35736bccb2db83b47b5b801ebe398b9c979c029446d86296bfb5291135c40ced330c30e45dbe3e36a8fca0f6d59263907d4bb02a768fbe04185c1944e67d3a30817eec924411dd62fd3b4eceac7fd74823a5143c702c289ed76759ad6ba2e6a5bbcf292f434965fec9384559fa7cb8a9832eb3e7606b7be9d01ed7698bb3925dd42b88858ce6966a87f0261a6a50908e162ad58c067c028530b370c8c13ae138011b166c11be246c65e12eff614af3b8bb5a5710a58e26b12cb3d11cfe644f112e9ec29e51ec1a6c08d251f1b846f48c81456e372af42f9062fcd6672d6355e5f53811b84cb4ef2aebc75a6f1e0f097809d97e4ca17bd942d6afd173535dd5edf9ea7ec193c5498e206afe440f69bcc402da8e3c8fd55f00cef63c29bbdde5ea7e922a326769ab9d85e6651418e5a414e258ed7f7936b08de601bc1a1edde35123a595577cbcbb5f6720f77d8ed858d36f52f7c8bbd2833d8227c0581c0203075c62d7dd9ed9a3e5b8d805bbf921bdaa5f17d2a739b210c7ed851fa22df524dd505d6a1e7d8a184572aa25c97aea76dd1f8de3857cce70ae1fa8ccde1303d86f7523782bbddd67257b9f1c6f435efd83306c6aec229301c1ce19846157b03379db4bd384ad1abc228db8c7978efc6300451f67dbdd4d5284761304d33b9bbaf256917d9ec7e8af3be16fb77473b72ce908031a0684f102481b7812b5e1ef3cf0b87582e69f9e1b9e6200f46ffefd8eb6e0c7bc27d0272c75fa9446f7dad9b7b2775e836a70eb259481ae40a4e351e7d8df0c0752a340adbbdae912a111c1a573a0f44b48e4428812b0846530d2b137abfc6d5bedc1df470321c1d8bb4273cf1836394e8c2fd55cb049aac3294fbe9207077b22b1b5acd92adf02a302cb87fc77ecef7a1d009e2b1fd499c548905a6164c520c605d04415f650b2e58abccbdc30a55597bb0436b9aa2c37675396d86f0d97e2f6761232311ba27ce6f1057291254e9d34c2fe192c1a61695a0b557151519b86a550a377d7e8949b708a19024ad1af034ad347c5588a78fbc1234b311719478af229de5c9ebb3b3b7e77fffe9c9eb5f121cb9d58cd991f635c3bd5dea8f51efa5fb8ee6cd4fdfbf397dfdfcc7b7cfcf5edd7b50ae935e8c1b56c277cc8d56a52c8bb81ac52a4f6285996b6792475d751d00705ad67c7e66ebbc95125da1c6ebea33cc65af0a77a7ff120e7681ec4e3fb861f7605ce2344fd2e2fb472cf69de5426f63ed38678a5bd42e2a56ac56727c6ab4251cefdd5062e162ef15f51b847d0fab345b67cdcca61d4aa91f11cc7af9d3db472e56dd99ea6a8679e8633de6660baa80af3c9e7a5d9bf34ecb1958f1fe6a6d77b5db2a5e111109c156c446547c8af1e2c8d37a828aa8d3f86ab3dfc389759a6c832d2ebdf6818aadf39ba722ea86dde98aa0e6bbd8242053cf12ac8137cdd2d282e501a274175cdaee865301754df9a2e657d1cd25d0961dba1a109a48517339df2141b7fafba0c7e1bcd5c8097cf97e9437fe920763013c9fef215b1e4d011b095b298b85d7efe5418a87978e9169165d1a3740a0de5091a036746f524e3376636820cfe617247938fc7a7892e08f77c522e954cb36ce9262be8c896267ad70aa0d611a62828077c609ee3b7b51a322e771271249d94547e069ca81fb6c1afed4ea381fd35571e3fa00d69393bc065d4a5933464bf1b67e4cafdfd6f54ac531890450719dfe763b15c8c49fdc816026f8ba1be23a4dd778ee857abe2214e2963da68b46856a0842e3deead04bf892d0a1fc448ee842877c01027c91a6f334cd2e48352c86f46a2d6e3284f0e062b71b30e7c6174c5bb41006d1452e9c9d4998138c1c3cc6cf32eb775f35723edad412a04a1b52ee76c55f4ef60628d15146021c5874f14acda4c9156819a319bcedce8f0f61306a2161986cceb1670d9e8717159bbb19ba7eed6afd1aada0438138bf7b551c939be03952758f81ccc1b74e33f1507be0729da6d1771f2b36af3fa234cdd4afe1f9f9a31fcf5ebc383b3f7df1fcc9abb7e7e7c419a0462af2a21718c68b0ac34cd04910f32c06e7f35ed4c99b369289151a7b976d25eae5ddbd07205cdee11eeee352bec47abbe7250e45e8addc1bf92dd693c82f5bdc4d203405c7f12d0abe62f61acc0f0d35d7b4e1595d7f38bd9022b35f926dd539966f5bdc409f5bade1c8c5a1bce6da020b9bf3a457dd3707ebbe6881e8ff5c89e5997bfac03c0cef427f13bc28453638519136ee1393a7b7605023345b889a8dfbe787bfe59d2f408f12335adffb05a4151eec2742e1c5776893be2f21b25769b7eb0f2bd40cb81ee16d34cfb06b407da7a1f80170fdfa2990fad502299247e9d09cf1c343b43d745b223db0fe3b20f66b145891304c07a0a56adf175caa36c0ab3f1cf5b2379e269abcb0e7307b671adfbe654e318fe954e3c11f0723e40babfae3885d9e7c6722d6ffdeb6cdf791e681033d68eceb70aa663fec4f181d317c14910e2313dad76737f63fdead94e4eed1a5acf607bb3b3f57c7883c549ed6dc70a47d559a7ffa84d90acecff59de2ebe2e38108c370e9dd9dc1216eda1001e6e8de2329b873fc7d16c9bdc4b7fb2d923d80ba46ccbdab6cfb911f7d372277f4ae024d6fb2d5030d7f8a7d74dc34fdff2c282262d65da0080c90d9ebc80a475da0f6c97c266eb21f4333261c464b878b6a25288f86fe94a75d4fc2afd9696425f60f3906a3e89063326bb4f493877c2fd3fabd44672f8a86db5d738b7b5bf579cafe41d6f4401a5527008a469c930e24e7f14d89f767e5399ce2c77335157f2cb78fd3965bbd67ddeb1ab0dd9982c61f6098a5c95c908cc5f0827c744d70947a28d934f4a811bc2a453266c3792670522411cbe7aa4558bfbf88bd2fac5e8d6527082c8f58c611ae49392c8625a785e8d28b6c562b276870e525b752590d4061b3ac56734e993529b70d3d595138a5ebe18fbcbeaee614d286af3634172d664e0ad1a26b5a9f5e7cb869cc405056839583319b3dd2dece8ede43f9c3ffc769bd59cd8f582d8e16159b1f998c2247955c597aa4ad578e6a7eb42e9a86cee58ba2392a8ed6bc5e0f8f7ee6c51a2af2ba1647657db5ae1965026ab1a3ef1eadebd5aa3653f90b36edc897ea9d32983faa58230a5652f9e175a55a6f86ffd1310fed1f58e1da59c12f1fc21266df7eedac53dde705b84ec1b2a2c535cd2b1d94b8225b5027474db455f2136cb4c8914ac967c9b1525bb5f8b18dde1231c6ca409326190e50a325efd97b96a0e3e43d4b5a6c23b43fb655f2984eb64bcdc18cb28c934d9664096e9c5ba0c76e47f8284138418904128cc2c652c7897c058a44276ab6b590daedcadd8eef76ca441e942e93269b0adc645386f90ce112d7336824af3b20dd3105334698812421a0e5b40edcab0d058f956e94165f8e93fc283966c79b2c39224709e6087ecaa997300ad462371a786c19fce404a8c59055203ad06255158d0b67277e7c30c4bd306cb2e9264b122cb01c3b528387c5e2eec298091870b6f891ee298e9672400a1a16450d2d7db396624d0c5187c3a141550bb71e36a0163f67ab8a59521e058d977e0240e434c3f7c302c680375952b3a3040b8812a926cecdc44dbf7760112c09eb0d8593f826b8df722546bd77940ccb9a9585c80432bfa20b27c77c0cb331d5d47c9c8f3af454003eae258815a61f243a4f5775718f6a4e7e823c66b4a42b8eed7717abbafc3071631a329ccca915e0e1067a92247972247776cfeeb9c56ef6a803639b24826f6892278b62d5d0a4c5af36ab55f091c54e79cc262d7ec2365777cff945d5ec854c324d8e152d5c6da8267fc7c94c125998f2deefb6ea3b485b61bf6bed777d4271683b7669be223dfda7bb0f35e9ee484b875e2d9627d35c2532dad7b182c69e3a12186a8f2810bcaa995c84fd2daaaa83a4c56fca25bd2aeed886ce9e62eef1243b68dc8ddf406b72aa42ed8555c690d9f35e7e923d3dda11da3e0cc4e590e5708b55c183068a989ca786236b275813920821d46333fac6830df78812d81a2d8a525343a769c8770a18e642474e411e129b2ca9aed68a5f6c80404b72924ab2a1288f825cd98d0eb0f2fe03ebb08c9bd377df619bad3386261241dfb3042f33188b645990fc8312941be4650eca22b52abc773223fc9cad376af7dd7fbc9fc21f48d644b30812908a43b023b0107b6ed6e6d3963438e0fa6b68d75c2ea43dd75619efbafe89f571fcd3ba15e1bedac826bd1e799a9ea844e7945d8ae54402e25821cf4ed2f324b1e391c4f60f0d47d158773c946daef603c052f77becd17b6c4dc0a8dfb33fefb198eb8dd83f0f4bdd7fefce937230702686f3b0233afacfe4f80f6cbe23c98b38cbdd224dc89ffc26286bfe301da7b299f9d14172de91e278a7b1e6ee498e1d6a7c7842bf9b14eb11fd5e8aec93977b8ef14e74d483ba93c47414e6f7f5dc232fbae33f40652c91f97d238a501835a4438426240cfff66538401cdab1afcf09ddb8848bff62e8f0dd986642b622b779db69851aef468b4e684fb9ea70472d1afeabae582676bb0456a16b67e5d653ab47edea6ddfb3e4589219aac9cc71f29eb589d7c0260c7a31a19252b17e574bbf2b29471cd321a7eb5551d2ecf3f7ecf34bd98d142fba8f16dd470f46303893a85e41c4565cfbad539dfd16dda54eead167e6aa3eab451635307959ac8dc2ed65b11ebb76609d8cf560d48957412e5e278c3c9d9eccf45d24231c83c90266bd30ad8eb19930d60ae7e794095ed1e6fc9c4c67ada7d7526a256aa3383be9b570d254b734c1db4b2afa32d751d8b4468716cbcd453968bc06e074bba82e37e61982bb78ba64e262b7963ab3b07129ee6b7763a774ca6c2c1c9ea67c3a9ab55eeb9ef59ee380116d7ffc3f7cd2eb80cfa6a31961796fb270c5311598cd90dfa732d78f4caad7a51c07531da7291b366bc885cbf12868715934a44f010683ff894ec3ff16ae577ae62bee4474b727c187dac0f4b07791d66ed73c53533c89acd1987d67e8fc981d1fdb143972eda8726115b89c8e66b89c9ecce43e146d865a08b079c0686b8f4597b1b34d536dd1650a08214ea09ae8b7400e5e16624908917f26348fd66be86a91a6f25fafb62c887f6046ac87e47ea48af2a706ca89b3b91294215c478dfbf5edf523565d01a7f594175774122d550672258a325187ac0969f6b81074c8ea8f19422d1ed12f3eff5a6249451e6a8f9f8727b821d344d4eb0427bcba5c8a042717b510f5558293155dc8e78fd55c2c139c2ca9aea0884af2513dcff02abe1ac6cad8845c7253017b16b5c6f05759a9d2f939198cfc48614fae25fff5683e8fbd6c4c07e72a969d8af6a0cb9a736b725b33b0c60676fd099b2bcbc05e69c4aa71c169d3db47b05d0623cce53f253971cf7db45509c407234c3304dcd22a43ee998eb6755620f7743637e5dd92e9a07bd522a30fcaef2a7d0c8d39199c280f7e460627aa7f070d1a498fcace7b68d566ee34dce9155173391b542fb8c0fb9f00aef67cb60e36ce3b737f1c2cacf1c45105e7fdf06e5da8bda077c71ea5eb0633229c618cff8741285a450f191e213c109a721973753b145d30af9afda309165ee3a9b2c43fb3a3c890cda00b1f84ed84f5e3d6112ef40e7078c3cb422c297f048c6a86301c2ee6a98b68450f871eb2663add97d870837f3909cc3a3478bc8b62938dd8856766c83344c3923bd6fad525c2ee31cae6497c3f22acc96bff734e15cd71c18cfe5ff6de85bd6d5b5914fd2b12eeaa4a541023d979b454107d89e3343eb5e31cc749f73a8a96174d41165724501b84ec3812fffbfd300048f021dbe9ea3e779f7bfab55f2ce28d01309819cc832c46de4e44c06e6af8c72bd7de51d5ae433e1bb209a514f1e55ab214c8a179bc98aaa1e98f50849164c29ac2a4eb4b2998a693707017485e9f9e7cd0854f92693c8bd9b43abf3b5060bf76b4545a79e19cad5d59bb3b964e1fc17f67f51a5b685ec01d4b6006d8b036c594bc3bc0d3e9dc3d9def847ce3fd72e7cd54bac96a0a45955ba889275d1962fe9de64d0ba26d845020876995cb70484aee20c4ac11335d317964dee677297fd8b7fb8bedd62b27c0c92a7cf19ad40c0c6cf3220a4a604d53bd35cb84a66bc626f15d646633a7c34894ab528ca349896d19901b114bfbbbc6c2e4175f46664d0a3d404926379c89d7393d5a49c865d231bbd96ea38cace895d727f09fa38870edb4ba0a45cae05d0f2ecd7e71ff4f55290b1da948164e0743febc8858ee40468e796f30a1799ec344a91d3f5d47ace2ca2a97ea5f7b6c8c2e133165a287babc8b7a9aba533c50dfa14796753597df5541adeb02df6f81fcd34a289d4e9b5b3679651433d406047be564b95a4b36fd206f174c7bd777015e4c7a9311bd2fee264827776c1492503646ab703a8df9550f75a3c950ed0c7aed258e4db755f551cd75231fba21318d7c99acba91afbb2321bdf6840fe0c124850f4d016b6723068897c957f060e95f265f3fc4df627ed5e9788a31f045b2e6532fec26b8adb9adb047a79ec8c96a3d3bdc4d3071caa7dd18ebf0d55e6aca6b601820e06e8c3169376d594a35cc73e4677f180da42c0f8ab0a09511f62459d3ca287a7c38686b26c70f2f530871a8e6b0c0a494bec67aaceb1cc2579e862d01889290a45ad5e6b6994ff8f0e957d0238fa3d48c74d434bd5ca1289981b0c8afd7cb1a9f0c9b2a9a0a9d4eb3e1f51593af5e255f1d61de37a74531baf5181e35216e53b170e5ad5182d4fb8848bb85d45a04ea9005abe2d05d55230f6ebe068cdc069240ed80135d3b103a0ac8e53d7e04722a0f8e2eed57fc75ea036c93412d8ccb3320170a44664cd84271c564b34b82d8909f75b2f69be7542e2b8d977a638469f8a83d511ff876cb0cd86af97a0a3b7c02aac677d0da6ef7a5715540c6ecba3501ce8e0a5cf7aadbeea4e13a6de21a9b36ce57c0acda7bafee332a3a489a0fceebd313358333164e4ff9e27654f93616d224b617add647f4920258f9a2ccbd986cbe0692dc06dcec3661775b4464b20a38018415c8ae201a170551971375cec1d3659ca93b7cae03586ef49a5b7f621ad2e0382183783d3bf62d841fdb5847bc216c2ba3d50b8498c3cb9752154dc24971941d8990a31e094f01a02289cee7ac659dd3b7565a9771da0a537543874b2699680d5a710a4a9461be863e3246a5b6aadabaf97e12c962a16844494a650ee4d70b2a9a0e8e61344adb41dda6d53bbf790a83962d07b2a458b029695dae652be18bdb56bfb5122c559700d2d755d3fec991a0f9e1224abd65f480bc3a0a353570e3d87e6c8062328337b516323591ff63c9cd5069418736b20cf885d6fe935417975e6ed1e440dc9558b8821bb7484e005735cfd7fcaf65b877193a1d4f165e6c8834ae2a1ba0ecca6ff45a54015eb07035c10a88ba73c9467d3cba80d7b8bcf58e2b2aef8ed8e42e2fb1f78ea1ee2b163cc5e63218c52734602e2d119335fb928a24a6f22405fd3b029ef225e66018ebbbb3a9e71df62e2022f198b99e49e5e2d451a4cbd84ecbfa1596ce257b2eb4b20673a0faac760ed379c660e5b7937a23ee95ddd49623c95217cedbe6fbf377167e390957230509f33bd057c9c11d37798b79f640aafedd33c99a0f223a08b93a7c0a7cadb0152d405d3eaddc2cff253847131c6b97e7d781cfc0de5d119b7056866fb55331b077874b7a384606312282722489082ace2f9a340a190f8ac51bb349f5ac595d5b4fd2b7da9f172089319bf8e16ab5b8f524c981009e0855a54fcdeb17f9672056b2e77e544d080e86d20fe9270882bb58e8f971ef491fe3f26331de309f690fffb49a9ecfa64246396f6db82a304da55847321140da5e5c40dec505fdb74c1e16f718b5ac8bfca8297f5ee44f9bf2678e49c5405b54ec63f0c5cbbd089358dbca84947b7b8e78a3ac9e90b7ea040b82ed0e82ac90729fe97be78ccd484a85cf3c4ec6282f82082a0aa0494e9ec6155b1a46841f7a9b8ca46493570e120f7b92449808360b428828a8b9ddd443f30122a1fff6f0e5eba377bf62b2a69e4adc2b25aa947d37059339d47d5c2a36d3759fd4ea3e2dd51da61e025debff5c2792a9ac57c7a707bffdcf8fa7e787503e4aa6907c70fa5a27ac44fe7d016521156298abf4e397af0e8f2129d1df471fcee1735d7cdeb3bf2aebdb87f555cb1cc332277a7d1f6392aa42bf38ebbcb8739d933f699da307ad730ceb9cb8ebbca8adf0a2b6bc8beaf242cae35a4a696187dabbf9a2babc644ebdc55d0bbca82ef0a2718117f5055e941778515ae09233d692a288bdd6d78b451b7c79328b5115d62b90aaa6db2c4322fcc8d3f779e9e58b4fcbc6d00ed901765c44cb05ed8a83ae6e2c17b999811a05a57c545d50b48851752943ffe4f0ddc78bd7479f8e5e1f9e11452305df514fad88ae46aab5d644bb8ac5a01a318dd3d52204993a4dfdb08bfc13c6d7af6330644344665ee41f587337acce39f7f60798acd4df67985cab33d17f82c99472ef979f31294725fddfbc18c43a15340ba28ea02685d4e175d666a1be8c752259536e3d614cc99c723f8e12ae660a8a925caa49fab0210d0cc992727fb95ec8781173466ea9c7fd55b24aae99780ffd721375f4759c2ee3347daff330b9a2dc072fd997e6c7413ea21395125ec1efc3e271e3648442149c90b739bed0f341a48438ec5c342d02334104a979a83f300b44903b0744503e0344903b7c4450d3f011411222d8a2d2c8d5b71e379a607240f5f22ec8271a1af841516f86c92975b6e8d1f9e109f9443ced5d771cfa2f0fce8f3e1d4e6842d838f48fde9d1fbe3bbf787f7674f2f2ecef139a743afafc7c82ecd7471f5ebe3a3e7c3da16bf87e7ffafef4d3e1d9c5eba30f27471f3e4ce86da7d35e773aed03b575524c8e69f5201c5a3cfa96ac47df824de69ea5d30cd74ececa0fc946c1349837e44e556ef530be393a3e269798b0c5225e292a2c682f3372651fd3c2db4b76065bf9582d8d778dc901b8cbdfd12f8a42c1644f4bc9338cc90d40d4f3a4812140f6c3c757eaef841e1089775e2355ec7193d5066516de3bd63e6965c9775d79e8bbf412f439e454ea034484fd95ef9f0a76b4cbcc46ea6f1de7a5ab90efc27a6a4b5dc085019ea575bc811da33673ab50b6f1ccd3ddcbc2a2d8d1732bb04a8e2f145e710fcf2e705ffba1de6fe15a266f92689dc21b5cb8926bc1cc410387dea6e120218ceb601db6f05c7572b04852066eed823e01e567ed3ae4b7984f836bffd27fabce0159ea475c9106b76495a4c676c80ffdb3a35fdf9e5f9c9fbe27eb94bd4f84d411818098d062c91accaff48d213159c63c5eaa0a7d62e67cd0b40e660392d4af96c2c40a413373ffe8f742001ddde4936f0f488e9dd4870b61f0b5d5809fd4a8204c0342bb6fb623c996e65a7bbf16acb8dac82dddcc16f12ad85c266b3e0d45ccec0b4a80ae6376a3182144cc335ab0d7cf48329ba54c061bf3b7f72483e8488ccbd36b26668be4e6e18d65e41bddcc15ed663c7526fc6011475f8acf93649db2d7c90daf241daa3d50493b066b6e9326c3cb233e655f83de202357ffdf5ecf55a450dcc889fab237720a58425c31f0c8ba5e288a790d37a0ac50cccec507151463bed0f433993bd78d73cf1cbf3cfbf57042533568be1b3d2afad25c106b17dfcc81c2568c677207058588f40d1545e744fa6adfd165959e527480b7d7c7eaf6f706fb8f3139543f1eef61f2167eece33bd9df03c39e1eec5a55573bd861f755b25ec6a1f0059bbd0df974c1444a37b164cbf47d287698590bdf2970c6669465191186da3998b3e88b964ba9e91ef14f66a7834aa0cfbeae40ffe31dfb2a8b525a3142982da3528ee3a6d8295438db06ec8bc2c5814658b07778623d6ec654f8717a00aba9dad3f89e4d3dacaf948484d697c4891f628f9198700c1cd98e6a767445a645251ef8fc92c6290f0edc8885fa2209ed8596365f685764031b366015d066fa8db8049a467d4b3304f0d811e670855b4a7b888b6d11a343c7a6aa40eae8c4bc8078421b5ddb3a113e54c03150d7633bfccf75b8b0cee6deaaec08ab5394a3ed1bfd5ce5d4796db23059824393f4bd60d3380a250be22cd772772a18b00b8f91cd1cb6a5c6830dc622c2d705d46cb48f03e3b10c261648e7120c8d2fdc2473205a5fcec66da741e740368f2cff161c69e528e4d28ffc349cb1237e9d7c6139e8f47abf6337ceae1284114e4a737226a307a62703e3ad6635ee838774ff46244beb5b71a8313def74bc1d55135e809670305628c26d2044da2033ac2f43d5f19caa549c788f61f2900e99ee50e7800fa853aeb33a9dda388a61bc0fd38a07c15c9b06227a6b2c0242b866c8a883a30792425b24a6e30909d53f29ed930565c3f4f9c22adba456d9664d17e37442e6f4d45bdb6183003bf7ff3bc792ce49a85f3de61802edb4e29927fc28e4c5664ced93c6acbaa41159e361dedcacd3316dcd4cf4b2587fae71e6c027d6d64fda22b23dc0246fc0c2d1591a595b9a84840e707f63b78a04697cadffc26e0f9229d3f1e428bdf42ffd976767a7bf5f7c7cbfdd96535e9ffefe4e8b91815c7aad8940cf8ae621ec7af99aa83539ea0d8281b387ab33e138dbb9c9cc2c803d7066f671b5fbdad1b53eae086fc008c37cf2669087efce0fcf3a1daf3e4362d89cedd6c5215cdd31b5f35fba5b08c34103c2e3e0cfb23253599a196c838379c8af9a3c9f596e0ba1c03e7b59e718c51eaa6f8b022c4ef3f008a6838baa2bd9de3e8ef36d84e0faad8e77d7518cd5b57cecc5a440b20628f6b252e583c209b819559137aa2705175e4a64e5762a0d200849e9a60c52737dc419110d846f323bbf5d35bec565ffbe08116e5e507c11f6ee484cb2a294f20ba50467a3e0ea9254007848d7e4424abdb00c7745a379a122b0dd54347164085e93e85992eab60ccc1b6d39959470885bc61e48e72856b23fae8883dedd4c8da36b5bdd2de26e510bb72076e602300e38295360815513b6e4b14ba19102ba4105dae031b16ab16669fedfe3c5e28c452cbe669ae92d1d49bb915decd2e9e827ef7b896ca3b406ce1215fe708f88db6086351a6a5b7ff7b5485a16e5d86bd7920c3be6f43a9eea3806bb3c2bc2799f878b4572a3989f50a8254d3d67df33b28979b4584f593046006644905dab9c663469c5f724b3763605aecab7b821cac943a0d7e9788d76668dfee8d348248b85db8c4c544345c4eafb19a20a2c7735594716ed81d5f8d3884dd73c4f8aba44e6218a8086770aef20e3a144337f86eb05ab0855471abca30da3fcbeddb66b61e37421cb0c69f32ed89a5a97be741e3527d5a64e90542d7a394f5640d0e9afb7563fb0a10912d3c4a914d22487df8aa43429a97193453ecca3a295f75a68e3e9882e4684a3aacfa9e846dd3ce915e803f66232a3a2b7eec5c3f90b1a76d351c3a88a31d07937eaa5c1ecb9e21bbdbb8bce7a11ceb29a69f08e106d651357671ddd236e8943aa95ad5da967fe0ebee3ae1e3e10470df51338b39bd839a9c3a8d3a95006bc4260306ca88b638f29a63d36cf0da2d341e0e67c243c860d4130aca0c3f21d1f57eef8a40897620c41cb7b1464685e0251ddb7dbf0797fbbbdf16a67a34a1a6212125ea635d434d302e53a34eb8597540b57d044f5c4eca0256a04ea5dc70aa4de2e35caf218a34d1bd04adc20dd9d7459b86074755c3dba0a28cbcacf77f782b31d7080a6ee8adcb86b80a591ed8217554b5d66f6b175c7e01a880ff9736b2938ec76392e007a070266633e2179832deb25b537a84db58e7deaeb5e332a695a69202f0b9495c7a2773156f0c963651c86495125f8d4b818157c5f7b54f19af04f753f5803aa46211cee743c53bf3750abab79ca7bf65f6fd0e940e91cccf96a5ee262075eecdcc7a4b276f6601256734a503acb7537bf3bae4656a0dcc6cbf5cfa1fe32ecdce370c447551eace83ce1450f06efc205deeee3e0bb6a3152a3739a16777728aab254c4e0f8eab561cd6e6f00405001d60e3c287f4896ecf06b9cca985f018eadd2b0a53e1a46e2a0cdbbe4699636d955d0b269e5de1f34e4bb1dc7ef3c00656b485975fc0b8889d5b19224cc34571a3f08229b1e3bf258a1a8f69ae7521641bb9f555f3f0a45aa4fae0aae1148f403b00c3ce2d2637eaad560496f0f93816b93775a8a456c9865617ee57c82c2e76ae7c669ee9242606c117844fbc3e839b7083cb212bd84f27134517585c748422210789a61268e3ba2e3070d824426a5c4d2b8c2636778111e4540e204b5718f78dd95bc63cf280cc997e1801743bca9382acae5668611344260a7238e471a7f07edb6baaa1ca05f143659b97c332719070e1129145b95bb54ea0d30818bd91207ce58345948121293900a087c6f2b0da789ea26a62969df786c1c522fa26197e3e75e42fb781407d18b789404d18484ce7dcac6e124bb99c70be6856d4a0576df65eed3397d98cee7d3275a2970ef31260bd001256b55fa674ce6947bcfb4bad4cf5a5b6a00da5296319b39a0c69e4516fa3d1e9329dd5c2ed66c25622e755af1cedea8b0d0a66c2c279d0ed24e695d639fb19c6047bb5dab4baffc5b758bdfa1ac5548071ff0185c58da1ae1dc3c4c4f9235d741cad5c1ffbed76253fa7abb75749c69cd1d8e62280bf457f4a95fdaca4075afaafc9d59a741beb51ad92de280c66b5afba6c584cb30e64cd8ebbad4a8314dc85de843c99ce7254ded2868333e3d50236d6811572f7b17e0fd8c94eee503335d2880c9b5e13dd63c3561d014f8df25064e3b2557cd521ef7da7347a8764c2e222c4b2cf2e44660e96c85238d058be73484c9ed9d55485337f8fe39df21acfbc897d585df3d67efbad351bd4095fca67b29df2553b67b19cb9331b3aead43e3f6a91307b9a573459f611a5f23c7154a01e5703af516fefbd3b3f397c70abeec3e701267fe267042a7d350cfe4f9bb501926ac3cc5e6d571a758ace085c61ac667c51197490e1a8da3aaeaf100005238ab28a382a695a8513c73a078f4a814b96326080e41e9b446ffe487b9d97f965da851be6297c9f416540880548a1b49251df4cb6e414b12037e9e4e0d8e66443bfc919ef6337c970ac93723eef8b6eb2a806bde086d5c8b11222ac83f2a6b9214b36fd023890a4c6737721ec36e16f3e9ebd313756414a39265247215f7009b550d130dd158a328244509b4eb5ab28f623f5a24dc51a8afd84bb0ea96270bfff4d3e1d9f1cbbf5f1c9c82622a2ed4aafa190e6a9bada6a6586b2103fd231a1901384833f9e98af1985f8156a1fe6253d04f4ef8c1224955d63cff625350522e1cd1bc5e9b4018ab52b2ab65591d68e81f7cf850385f71469c062b9270d02e8bf95520ec079b06a9fafd35560c4ab036bfd9349813a9fd6d05b3cca89eebf7975761f4652a9255aec2d6f04e1039ea3d97a6fc7b0319a9d8b4d3b54ce3a9d60681d983da8fab2349622a2d689c98d0338761c55eacc09e743a917fa9e605158fb86af9f49a894578ebe59c72b9a2827a3e01780bb1d3b3ce4f6068b5a9959778c744b81fa76ab5c1e6c44c81843437444cd5cc568c7f9061f42557dc8930e8c715199a4d4a71dd154eeeb6a472ec72caadd3913633f542ac986a3f4e3f844b06775788333c4c3a1dd1e9b4177780b60e158070092a061ea5b5b38c481d31743aed7a6231540b22dcfcdcae239d1e2d976c1a2b5a5024abf02ad42890dcb1079c89ecd67970f76c14f2c3340a57aab85e3ee1ec46e6dfcce3684e295dfb871f0e5ebe3fec7414bbd40847418cf15c792e30a482be3ebc66422388c0ee9e8c44df4968db771bbd208bf05b2e4dc969eaa29f1a76adbf5c5bc29a979eb12154bbd53686a76cb3db531a8d62dfd2a760942b6b5ae8908d83f16408b7ff3c9e49af5ac662180f1be32432a70a93e7589778de1af43f0b3c7cfafef0dd844664eda41dbd3b3e7a7738a16d41d69870c5c0d53166812e7f15c97a45368a560f41ffd85513cda9c840931eb9de49d3cbb7687a6ece777d46d2420162541dd1b2f4185f2ce7aa4c6e91e246ae172a7a9a6140df7f8009d28b6a28ed449f244541abd43b49ec9defe17526c7d9f5bbb6e9766bf757f67dac0ccb67d0aecd6a549d149c6b0f076d569ef7bf098a066e6347cfe5467620b2bb6587f7be7817d28506b4ac730a677eeebb94a247cb9068d79b289078732378f7b565c269835a49223c340ed73299a9e94f10d6d8e7be1a32bc847b7482ac16991c491fdaf0b422af968fd9a4acba9b1ad0cfbdaa3d96b23928a9f894e91df07113a6b64d9085197cb95614419ddc9b97925d722fea74d21abeb88be69b932fec36401717764c2827ead6d90e9ecae8d1f02a195da0d5572f0f7e7b7d76fa9e48c25d46d2b56a7090628d5e2c886d97756b20a5467dcd3f618c2d23e53a97a91c2277b9eef68e087bc038446c206f48bb8fc9dd2d2cd55ca6c90d6f6c056680eda55a5074265c8326f724782588671ef882375e704b9e5d0b77a5564542fa574c1e87a9d4b8d1c343d1487ddde193d3cc5dec9a78a665ba77f967d53de62440811d9c7d9ee1dc2b6d8921aecb83ca5778f535b2826d1b8e6401de6101b0fbfc63da1d5085e7ceedc08c7793c2f78e79dab3f65fe676d8cd863895be77b1eedca8f79ca1f2f5e7acd09d1d3f647f935ded3ae9ce26d9b50db4c0aabc071a25350694f59729c706af4f4ad837d864a446ca0365d70029955e36d2eb13675eea5323eea03d208ab80613b51afe0ef6fb6e72595ce09ae9f5d534f3cd0b7ebfcadbb1e925b5a830765945fbba3231b2a6b2355cfd79a4c64de6ae4aaf983cbde1d601e96b13bc2311e976dbecd3d275710a32904d4604ed0fc573eb987a28ba5dccc7722c2693fbba51031c8bc25d82e282e8a31fc6e9f45f3f4c1e5d0dd59d2e96a1acf9b2ba05d78f15ffa2fd9dfe45f5710e3dd7c368a1192b8d967d0be18cd3423944141e49499287862131d5210a3d86f3182011a98c10fdf003a285540bfd80402fe5054d0ae3d4f4269611c41689c294a11f5214983cd38118f36e7782873a7b9a67bf5b2f2f99a864ff0b0552dcdaad538972688a6651a87a944538bd835844eb4528262833c72cc83dc966605835e693217f9e0cd5cf6e974ff0d44bf176dbbef4523c8abb14b550370dcc8fd02b989d58db88ae048b4ad4ba7d7bdc15f1a0adef249ebc3675e384178a36e58a8e6410d7e38ee4eb9b8f023a6f7e0dcb8c765b3b8f7d5226a6db91b9b4c185913bb66ac062818740d345cc29358a129e260b93e1091cd804662a9188b6fb5606c0770cd268e893986eca91790a63c14dca180fc61392cadb45fc8d058bdc58ab7a3a5ed0fd4ec7130a3e72eef8dfdd9b60522ffb18ca46c92211a953787f82c9b5368348e7c9cddb783a659cf2007cd75fe818439e500cf937cf2d82a139a74a7ba08bc068b033b03d9dae7bc6ee286c95689dca6479c4d3158ba429e1268183715b4bf7ab8143534cd69e208cd87e6b918ab42030841a2c1dcbdc37311fa1cf5f079763d40d4dcb633e19f7275db4445dd66dca1c4066c0b21d7e6858393c913d2aac3c1b903fbdf5b81fe713ce7faba3647f773a5e9bbbee9bb6dbd2674179014d5ab83832f5419a65677beb4578bbf522ba063fd5026312655ad5a2f6acfdcd73def22da8dd734b9cdf4016df7a9665e414fd88ba15fc250b54fbe81f688bfef6e88a20e424fe0821983effe8a67dfe8c1e5d911fd18fb88b7e44c3da7838b14fee388b67deb279d0a82b09e28071f550afef2877a923c9ea82d3e682101996e83f388393ab4ae7174302473c2e5db51c93b04188b9c9ee8a8fa050821cb309d5318e322fd601d79d33d7e97871f3250d2ca5c73126871e1cd5b8885fb564691a5e31845fd0fe76eb64b8517755663efdb9a727a9507b6c5548d44e79ebd97d97520ea1cb463ae425fc0e50c3b2a1b155be40ddb48b268820b55be370a1d7f14a3559ab75c6ae0ebfae1c5e4326fa96d5ef621c1324d815fbbad26b77d2d808c432b9ab896928996ee0d06940cd5e7bee229714217240db03f2898ed1061194a1c910c223763ade016df721638c089aa00926009f4ec7bba4a8e5ccdb6b8415c405763c35735b1375ef9d3e26276ef9da4c3f9e1f542b1cba15e690d46f17ebbbdd1e405836ab9c3512cffb2335a8d11f5a95c0dd017acb96963e8048e88c6b5a8f63b2a007a332254c04890aaa315154630cd6d339ed1a3f0f87dd6e8c8f3d6902517b31c6a3c4d86ae6cde479a05616987c841c9704b5f318e14de48325b5f7e81f9fa7ddbf3dc2db6dad65ada896619264fa02202189711097bd5e3a9ecbf252921ce8b0271a0ac9cac3354e008e7fd5a3be7b01f5892cc7a97b41fb9d4e9fb0ae7410ebbadf1f5c7e1e7f9e7e9e8e9606156b08760719e9e3174ffb39c5a62e440fe541b865177de6108a1a82e819fb561d3c0fd2f87850dcb0aab22c1775cb65de825c924f18079f54c9cbee2795985fa1f372e068a0ce76ee35a6a36ae795dd2549348a8a49485275b8bdf45ece4612755d3ad11c32081e300a2948c547ee6efe9549c9c4a30ff0a7bca9ebc5caf9d058a7e385d42dd9d01226c79e8031793155d08800599070bbb507c7ae7baa8d48f1f3fec80be954476e65c424831a060e4a29bd01c6956dd31bc0a8925168d51954f20edfad3aa2a20df6a84ba6ebcb540a6f0f07eabbfbc0666aede0a00c9a82e12901e79b3ae7ea78c0f372f994daad1c0ebd9856081384ba11c67905e48dc3deb797bdff7531b13ffabd5f263f61f4b74778e4c534b6f31a108b277b7b98c4ce186382143e5743870a0fa4718a340f2824ac4aff886a6d5b92278f6e10eb20d3617344ca974284b77e9cc25f8f39e4b1130824a77b1c7eac120ba4a4214c5925328769c690598daddc3ae5cc1c1acbb9810d0a7b925250823cff127c41a3b1d63369e9db68a2da3d284df5d2e9bbae93629f53dc5e4e76f7a2aed6863e0e6b35bcbc0a60aebcce765b729c0d994e436f9dc1dac466501d385d1a7cb61b3b668d1adfecf9a03f427d885b6f2a7883bec25bee67a658f0cbf5d52271ac5fb861151235d5c4ea106dde9dbe3ebc387cf729402b914cd77af8e4fdc757c74707171fcf8e038432ec43a9d787af3efe0ae15a09a75c1129ab15130761ca3c4cdaf1984f703cf31463ae57d6439f3f5f429418f597a018615fb2547a092e3cedace2e950556d123e6b69548363df619999473fa4ad1fa641eb8714c10dc27066bc3c541acee9779591919c73a321b16c23dd5c268b69301e90bdbd098965b888a360bc4ff6f62744315102fc6c8d1f93bdc71312f36b2652168c9f91bd671372338f250bc6fbcfc8fe2f137225d86d30fea50f1f978b30fa128cf7edd75a957b0c1fd16dc883f1fe535b89a9af3df85a86578ccb3018ef3f816fc1a6c1787f00bf6fd96291dc04e3fd7df59911cb31d38dc1b301522d23a24f79807405440cf2281272de30406acc5af32f400a0e88e8b30f398c23a228ee00997121a2a9c5000936054f620671d115fc7ea57ba2d7f0f54ee1a269fef3547cb4fd364550326a6a9929afa64097f0a1f739bdd51fb7cbcb64d1d0004a21a77412a146d1eb37f8d67b955ec1873e15f4123e14e6a027f0130e3d3d84df962da06fe1f3bd889771d9c1781dff6eb74d387bbb6d40c1db6d03be5589b5f9ec50f936f37cb59ecd98a0dcdb7bf24c3f979dd231fa1f6a47a0374c9dc7935020825eae04fcbe4504fd8f35877f15c3fc727d8508fac05688a0d3482282de25d788a0d72c429361d5a063175a9b87a943b0e51ee0158a2a6127bcb1477a915cc181eec171ae6105855ed4c21049c79f3cb0a87b9bac45ea614cccf749ccd792b9291f5894f0a94a99185a25c879873194504d7a989ceaaf9384cbb98727444e1c61b587c91d38096b7c3267229660e9f0e46755de48e4ea429bb604a9ae23b370cc24cba1cd401dce8afb7bbd2166630ef27ea9ffe64cbb1657deec8893041b68a4ff78682de3855aa8659cc6b35b23f142b94170d982458f3857d32b84afe83db4c05a3761da12ec5f60b7d7ba89e5bc15b666e122bd6d01d18af090fb828569c229238ce671aba5baeb643190eadbc3c3a3b2fc783e672d9488f82ae6e102154eee97eb54b62e591ebcc21ee01f417270d3e9b0f1cdc4ba976feed293140addd171333c1f348af2e1a9c6e326377994baef0951476456b252715c3b1907fe66e92ad1c625658453916112298e3da1fd61527fe749ba5d1c99779e5c349d4cf0d02496db6423b59c81f404448510b79b928d4c645f4a62bce15e9c93caa212a93c65f2bdc52ca7334f92822b74d319c6e4c62a5efe69e06c6a2e66a92789503d9a97f5d2ead31b22f3f017a5bd2d77ee6df9a7eded7cf5b9e7464e1c4fcc0b626d4de125b1baa6628287564e0d428e1d27a415ed0e95b4085379ff90917558a06d121a1e6823b36992d23b9274b712c7be9c335e12dd309fb3aff23c8ebe78b1f5cf9a911d252e8824312e223c366f3dbe63eb49bc7ba37022209f67957812cff6aaf1246a4676f95a8a8af35dfb0eb7d1a81fe427749391a4f2740c778b5ef7a4b4de34198b892385e25acaec458a740663c65cc676a77184c870466a9328c262706f6fff31f6ee9be83d5d186bc3cd01b80d0b50c4b8640291e3c337e781898c086e7b03131ff161d68b4d8c5be9ba54d7be87783265ff4a7dc0f48673a8dd9bd20fa978a0c9e4deb3a70acb6e4017f8c0b190012d8ae2bbf209d9ae96067c172a1dea53913495129024e26b36051dd1372259c219dd9197d75bc65f630ebf562259e503907a606aab6db8e9556f2c53541f0aad10b25868a7c3f00bd2f213ac3f62a9ed9e63baf9dbdff40ae859830ba4074cb8796c61e9dd362dbb674d4fd832f1181ec5413866beed77b2dd46593816fe9b44dc84627ac66693f2a8b472f8770e4a1fd0056dbc96c8fa8e6721326fced45b3325b3fba4a364451bd115b9a655827d580f64d3625e61c15cb79ad572856bfb9ab9f238b86d89da945e773aaa6e44847e8f89e95ae5cee1192cf6a38447a1f4e02903e7c46f4881e49d5278865bd2fe70f93c2e3c862c7547b7341e2fc1e0bc9d8c6f279d8ed716db6d5b8c6f27587d4cb7dbf6d47e84db6d3b541fbaee37aa10f8ad2644169e24b7e49ba540aef026cb8a50aff98f079de892f08e442e0a2e10f22ede88c4cd64bbb53ed91561c8d14229af983659a0945a758e761f9c4fc173762157b37447439ad17108494a16644dd5f545e65498c7c575a7a31f15bd347fd1c1c5fb93ed542bf884341df6db94868a7d015ec293e37042f8389ce0a2a81d68a6da6f53a711ede5b314dc0ed8c015e5d53435b8599bae8aca2aa1d359e5be7ad439388f97ccc394f2e2033ab92e77a2c503645aee46a7c2f3749b4e4b1d5d773ad3a2a35c2c073d155fd0d592469e0e07eca574598090461ec70f0363625eeec8b20cc878e6c59d4e692685367a436a3e62b55f1abbf2d005c4af565bd35b50e86fbb6dcb1c6fe24e075675a15675d1b8aab6136d87c9db94f24c8b03f4e9d37b96fbe6c5bbd3c97f5a917f2ac3e8cb56b0682dd238e18f62bcddf6f6068f9ffebcf7f3de5370ade06b998a9d91952bdc84827be8f750f0985f052dc1c248f666612a7be692694d13a6a31c6a85cc5664de2e5a82cd98603c62a98f887efe25f9c830690f8686f4cdb20a0dd41c18cc70d3fe0dbb5c85d197f7c9e276162f1656cda01c278ce161e1ee1d025ada0f3a9e34539b8acb418b249cb229221b97c9819b3e68d2d95a643b781c682c7e7843f19d0d1960545b53ec6a151c74f060f4bbb3bb8b0b969e24d3f58221cbf599cecccddde81ebaca193da77bdb6dfeb8e1ea6d8d1a5f75595766815baca6e256f630a28e698b8d7645a99776e89c9497a0c2a43a0c6c3fc3011bcb09e58465de26238c8c51ef865d7e89650f11d45b26dfd45f34d919ded1f8d486708a760be7607b38bb528d9b9c2b43ed22395d579785dd92353ca1acd3295c7f16aee1b4d993fb6c12d5ada25c96cff1adf8a05131c7b1ae190a7786c2475c5b51f897319fdad0a5f96092e2aeaec548118e9ba661916e63036b334663eb77710178eb48713d3c5c7ce0e12a9d27f2cd22bccadd5aed28933b12b309afd82c114c1b7781a266368b79b858dc3a866a94bb83108e239fd835952dc8472bd8d492f5302a3c3bd4f436d141c875c8c99539f126b4656ee595a29dd206b673a5dc98ec8e5865d7ccabc16b403ea07d259210fe9487409d264be66860ee37e214d55351d05cffe3bb0f2fdf1c5ed42b807720b4331b61f28001b9a682a3b8322e37f37b86e7d60332be7194a5d61f3458bd18a3b0324c9dfc3d03d4354019a27168a645eb9983f2edd6fc8af35fa1559163aea5c476cbf4d5bf689417ecde9123b413ab6014a05d471223435698e3f291a7e18cb516ec2a8c6e5b8b78c6a2db68c1d2d68d3a3a8a6eb9d451c9d9b4354b84738c5aeb34e65770f4f2c4d6cbf747a9ff997fd66a7dad75cad216ea2eba0842c1868b346959a3c3969cb3d62c592c921bd54e6d0401ea7a169c2304ca455d0e0a723639b6c9712939b4c9a156a753c3399fb35678995c33778adaa59f9aa0b6389afaad63160ade5a26028aaf25b8776bdd68faae356782059ff95cca551a3c7a34bbf497ec91a6f9c2f49647bd1c10bdbc9bde3c49bea45aabf1fb5618025cd7cf2915e48e3349a35d276317aada29336e30d76d44b76a93e4c876e7beabee1e390f656b9ac016d3c449abde9f875b09878d925f060828d7fae1a389898ad934ee615362dd47afb6d8bbe74a1cdd5520e0c3b5238685682c3867fd59c67de0778d40d242ad492e19679808ffe2225daf5682a5a9638660d80d753747f79648ee2bf16fc84e1f1e9d77d0d79eda9e19476d4fb4a7b6c703c5fb6fc2850cd01776db4bb4da318996539d1025cb65c8a78844522c6c1284584744c77ed789fa3722d3e48607281422b9e969633890e5ea4246acbb603369cb68e1ee92c9b0d21f087a6d292df525e0fa4097839f88ac57b6c87a853232fbd3ddb969a1e06fecb691a5988fd984080a23425d598d735ab316fe72392df9c409fdd0ffedf0ef60722c32c21afce854ab2410d14b57537f4f4e5f1fbd393a3cbbf8edf0efd836546d65910750e41926a8858c2b7b3dbb131dd4eeae495667c66a0375bad016d406266034fee7c7958d92e565027e354c48be5c30e7ad7540915d2cd0c071c03862657da78065ba9e70034814f071031dfcc66e7746a2ae7b3f7296ede2e0f4e4d5a9f60fb4c3a7e86fecf6404d1055dd60fd1bb8227470c5cfcf9c87c4a8008e17ddf168d2e9d4b555cc3b4a2c99086522460df0cef5579adc603197aeaf77580e9b4e699edeb6bf8b7d34b2a30bf21ec17b967e7d1cf4494cf74ac65ef920141b389ed46d968c6961046692601f68c4e441b37d20335684f984722b40636730ce7b40564c6e884f34413828f22748b76444b74183a001c806b083974e1c335c37491cda0762dba5246336d1462c56bc5f378a61636b3ee98778b29359ca058cbb4ab0dcbc2a878549c814bcdce85091914bd3c86a4baaecb0ed1880d654a8c25118a45e48b80d0035f3aabab63593460bbc064fac683c0113532bf87e11e719d0dc0439da3c27a19c2bece325b9db014c1c67af5cab5a84b43f0c9ff361b71b5add8ad463e3105c9f0f15361223938e7cdf6f0d34f51b4bb64438102f069d8e9b9def1c4150513245b9252ea8a597f4fc27c818483542a2ae9ac4722ba38ad41f6db25de041ddfa1eba571bd63147fb6cb5741f954dd2267f8304d85ea785d27033da28a10b3bb352229cb6a1f3e2459d67117bc715024a63cf6021bb013ba1d2bd9253ad6a4dc19d7d7e556a8d70912bd21ba38bccac86ed25b783d632f361c582b8c8be4f5cea6a1314421cadf0ffe8b3f8ccb7e3cffcb3983cbac28437c787d302124e07ae3f7f6edd410bd01c20098d3ca1aded20e294755ae119e5052ab7dbe4b9c49d8eda429ea409c6f852b0f04b56d69f94a37e2033f35602e2365c588d0faad6f0722c2654fd639cbc71fdb838948e078bc493e3fe040fb1f4b59bac1d656461fd0f85b50a4c4ef415860f15c16301a8fe50e610ea743cd40243f5b19c6cb7e8b3b41faaf16e376fb824392cf45f3c861d54d4288cabd9110f1c296521931e4c46ee478010a9cbbd5fec35d6dd9b743aee171154c71928dba49088dac9f6ddc9f6d5c6f811fd081f85efea0989695b6cb7c976cb49487353c476bcdd8a4e27da6ebdb04bc13845621276a91c31c7308383b50664068cc49d8e2d8dc98f08a11fbb61511821b0e2f8fc5965e02ee4dfa7dc6219c1cb1d1ce0771d39e6dded6954dcdbde5db5170fe6f51e6b566ff08be2f5fe6c86c8f8df8b53137bd6467a8ef955d01e40fc699363c250ab943336d3a8e56e4ee07e3f6b6b239578b85bb33b2bde1da6997070a157044e3e3ffc8ff38bd34f87676f8e4f7fbf383c3e3e7affe1e8c3c475ed9cc7b987b9353a0f166e79195e69d77445f03a3102af5281d8c55d442e63a13de735d1dd39e45946642c17cc7518d7b47e2327df5d473db2acd16b70c57f710df8e5b83b664496c36bde454dd0344f42a6be8901f57b3c95f317a50c1dbd0a324a5bb154c8c9c886b5a7a6668eec9c7d95e8618e62fe0b4ef49e23bcf9eb40ff75a0ff3ad0ff371ce8f2bbf47d27fa8fc8d8881b080fbcf8868bf88a2bd840b09642e69652e9cfe2c502fc2d5b91db9a4a7f118a2b46e654fad74cc8380a17644685cf3c49c6286f0d1194b78508d2327764da4104412b8820db069a60b2a25a68f6eae3f9f9e9bb8b5fcf4e3fbe27c5d97d73747c3ca12961e3d03f7e79f6ebe184aee1e3e4e8ddd1c9cbe3095dc0e7a7c3b3f3a303f53d575009f514b54fb6300575c468b720cff5ef38738fe92ac33bcf4f7db7bd5a4b69bce5fe914d27fd42e5c586101434f1d47e52fb4cfdda7bfa0b76a47a4959cac69c16462cd8582e936559a13523ec2f27d602fb2ab7dbc866fc01ad919adf344e6b2a896a806a8cc6508f1ad141a7c340f39a5754eb9ff4ef55ad6ff0d6c6bdfd27fa500e9e0dd4b1ac0f434fadd3c97fb4cd2f9f2753767ebb62791e8969d2a05ca967d2666e0512d2b8d38973c8519a8c841ffada96cf606308473c0a73133f938c15f04380425a81c22f03ac4d54be8345a9498000a1d744662ea34bb46198c9cbc31a16ecef506a5f751360790b2f7419585957baaa088c5b711e8f4b15ce6db55f5ae406f6daf70a9270c9ce7e2692a596a7b8fd2bbaa1c192e5885f878b78da0aa564cb956cc9a495ae040ba72d9ef01e8cf37251988a83c1e0bfc9e53d30b6d2537d473cf9453fd93d362f767d1d5b49717733f5f7b189aeb4ff14936b1393696a62322d55857d4c6e77845d9a56c22e7dfbaf0ebbb4f6ffa52ee4abffde61976effadb04bd3bfc22e35865dbafd3f3aecd2e51f0abb74df9cffb4b04bb79dcef4ffe8b04b977f30ec5243bdff82b04bd3ffbe6197befdef09bb74f907c22ea98d71f2df24acd2f4afb04afc4a11164558a5b4145669ed86559a3787559a3d38acd2f51d2ef667bbc22a854e58a5b408abb4ce3df0cfff0aabf45758a5bfc22a3585555afe1556a90813127e5f58a5f0c1619552b2ae85554a7784554a9bc32aa51056695e0bab74fdb0b04aeb3f37ac52784758a5ab3f35acd21c03fafe2bacd25f6195fe0aabf4df21ac52e886a16b0cabb4be2bac5258c31777d17cebdd6195d2bfc22a35048cf92bacd25f6195fe0aabf45758a5ff7f85552287947bcf9e61f2f64f7f016046dea3256d7e72993271cdb44fbc433f6c42208d5c92cce5d767cce87d80dbbd3ff492e03021095fdc363d067cb7e4dfcc2c97e37f172ddad4822bb4d739ef43a160ace05f49fa4334a6590a7592a2847305f34a3be5119559e2dcfdb4e2c4697b808d04ce5abee78000d5f4262f28e0ce46dac700b351b65b700fbd7b84c42d6d4df5f392e687274bd8a7022c5c580b487f0589563e6208c1216e6e966b6fcca53adac4e1a1202d20535a90c2af50b36014ee15e3b8a5ecf1b6a648a391a13e251f184f13d1a8db400efef4b3be4a56099cedfb55d0eeb22eababbfe4828608cc6a24e312225b980e0f1c7d18abe362ab208274054450b5389ae05c70707e7a7a7c7ef49e2c4cfb5a0b25c20e2b5e2587df6952589517214ce3b7984f83affe5b85cc2fce5f9efd7a787e71faeef8ef1949897b0b0d9a2e9d41e57229ee90eab88335a9f0f177b0f865bd35e9926966b964966152457882ad127d41ed7cea82daf636d75f4e356fc72d7d9e240b19afeab7f45ccf3149d96bb6086f833e811475d5e98441bff13a1df4fb8d975af1485272ea6e9f427a088ffb4e408dd3a21010dc63e3e1d0f8369c38e65c45a56355a912eb4e262b6b1a862e132993a5311b83f66c8e6e55679852364b3550b137d1751d8f20376ec7ee940693dc282e144577505ff7c6f8b43a8a4a67c6d1a3d3dd452105fde4311f54fb01870f8bd7181f2c7e2b2eae4e3d8947c79ed4714d6e3c89831bfba59287d61ac8ad6cd40bdf3235ba477b20504c66b394c954971b36b6ee095f26ab2ec75db4fa8a02e1ab4977b9fa32bdc1d3d7871daf498de367432b936818a0d67fe4159010414f417d8d8a11ba51455080e64cdb4a272a516f045867126b833591acf9d4938ff61ec167fa9f427a7b85f1982a4ac17f86aeac7e8fbc022aab64b562629c4c7a34ee3e2615708d9309ad958d263dd98d21b450ad95eeae567a3126cc71f278defc20d7b7f11f3f15469aceb1e8fdd2af9f88d6e0e77ed37168fdd2af1a5ff53358c8974d06927aaceff3ab43b01988e6c15f3f085bf295ba5bbbb0f498f7fef43de0f4976767a7bf0346e51082900571fa2e7ce775f566c3a34dd664e88dd2eb2b4436d731bb79957c0d50bfd56fedabff91696503786d968865804402e24fd43df722dc4553768551d6d0e62a94f3bb86d945bdcb444c9940641aa0939ffdc1a0f5d4dfefef4503bf3f78d2f37fd97fda1af83ffffcacb7e7ffb2b7677e3ff6f77e7976bdf734eaf706fefeb39f7bfecf4f7feeedfbfb4f9ef554899f758963ff97bd27adc133bfff4bd41bf87bfb2a77f0187eeef7f6fdfefee356bff7d81f3c3b2e7afe8632fc8726a23553f5349efdfcacf5ccefef3f8d06fede9eea75ef496bcfdf1ba8413e7baa7f3ef1fbfb9ffad7fbfdde9edfef3f81c93c7df2b8e7fff2b31add2fbdbcd4a2f7cc1ffcbcdf7bea3f1d3c8d7afecf839effecf1d39eff735f35fecbd3966ae3d9a228f5584d03e36cf8b2511d002ec2976a176a9db22f947bfb03e73a3aaa5f1aad2f7ee89f9fbebf00dfbac5a1ef692c3e74cb94ae895265ed8cd7a9ad507d5104b22f9c1600fbd7ba28b5e25c534e1baf4ecfcf4f4fcacd94fbd225ca23d2e7bab160d37de9b6e382c534531db62a5219983a9295eedc868a3bb168c0810ed4767a418a804341fed3e43909cecdda6255a45566f72aee623e72f675a5ddf95bfa2968a1aed696ccb2bbcce1be16e6728d8a8fef8cf6fb57ba39383e3af82d40d1228ebe20025f2e956a727afa851511206303045498f92a17871c5b3c23effe0bd5075f87e28b66df14616cc42c200e3982df563e80498e494fc181bbb18e8953902e1ff17318eda930e794b60744fa8b24d502b353fe215cb2f7e115030f6f65151743e396145c721ec432758cb8728b5c6c614a9db199f6f101a3d8614e0279797b99f608d2448ddb9d55e9106ef10fd19c4dd70bebcda8702b62275e575c30632511e5cefb6d0831534b2c0ee82718fb9532b487cddd53e6a7a504e39368937010af05d20810df5b4e278ebe64432fa4941a766abb6d479d8e93e06e45dce9786babb0016a2bd4b6582491bcc4310baf59b90424e983322733c3139a5b8878dedc3c26bf7e79f6dbc402ca0620517bf37cce96acd391c50b65b163c97cbc28cc1f6c656bad31378c71b1490a8db8efa050cecf5ebefb70747e74fa0e348e5e1ebd3b3c0342850109a4c90c1d2c8dd58989b76463056b81bbdbee7c032aba9fd5c81873f8d22c236b6c63152537873cbc5cb0a9873b9d6ac32fc9a620dd82121d97536c8143bd355112bb09b75c0b4bfa10582a95a151a7158c7b58ebee718931768e8ac615f79c9464c5f8a9412b5ae8ae4e8c3ec4ae60c2a6e929ad0b3bb454118da9d6ed8212e7c6566d959f32f31e784d1520dfaa3d72543e911e26537a3dda24fcd5622df2e3a447a59248c2b558a19ca507ec1e9ca0e1e0b8c726a81f9b2ca89de373337d38c6d3e20db07cb0cc11269eb734e7cb6668658d155962b276344b424ca66a3b53d8d4daad33b925dfe8cc673c5d8b4276dabcca4677885cd16fb95da07e69249754f330579d4ed4e95c8ffac11539a115d5c16fd537cf6f35d541ef966e32723b5ef82f0fce8f3e1d4ee8aad3695f935b8cc9344e61fb076dafbdda6edb333f4e4dd3a7b3f3db15f3be91038cb75bdbacad503c885e663b91c2c3cff0dcbee1aec9149313bde56bdba2ca26e712f8ea8657686fd7b62c31d8822d42c9a6ba2aa89c355cbc86871cd6f7a12285567e980fc43d4fc8ec6feb42abbaff69e5d2fefe9980dbc17cbd8eb8b9aabccab4140d533b211025a799ccb00a17a546c81dd354b329cfd2b9f5cab3dc4df4f4f33b27bfe88d1fd986f9c96262f6de2bc1a6dd782717c56b601ec9cafe56655306af5a5af7a7dd272c1f62590c881b3090c7f05d202b00d400384d0c3c14708a5a4cb50bfb642d5de599ddb5eab31b546757883d7176ff5460c8e5a9b88453c385956b968252aaea2c951ef251b740b9af8f3e9c1c7df8d045a4d5940ef6d86747af0fc13a0a36ade87484f34e9babf7d4ea8225957e58293a0f72e4a6fb7b7df4e1e5abe3c3d778d88ec03189baf6f2b02aa01ba9080770ca5e8366414345e14aae057b1da7cb384db5ea414db1d242cdbc1857b4436a501b7aed997d713a4a4fc5819d698558271c6bbfb5a0d5a43a759fbd7e63b7974928f44b3a065ab1368d2aeaaaaf67d3d1b9fbd41af42b2b0a6e0d9eba732e6463dfb173d5ba4c1dbbf278cb0d1285e2eed8b8079ae9d453d4f6eb66acd05c533c47678835c2f2c283f75ff65fe2c530df998232ff46848aa139cf1d0894acfb8d9e9606718d0ad1364677909bd6ed4ebaddf2edb63da09446dbada20bde255376c8af3d37522cde6e4b0116d6feac4e04877ea8cd5aaa19a2aeb065cfe9ef672fdfbf3f3c032dfe7a7b11d9c49c03f35a575ad5cb6c4ccc5cb2b93eb213f70dac494586d4f4e51c0a3e572a2b2b7038ed54f4ea6a2f6c6545988afa76a3c287abe259bef3800f05090a7990326ee9696f87a64f4999a45977c64a3ea24ea7ade8766798758c66f3a741d9fe4fdb92e42626f5dc985f116b8e52ce35262ab9e54a3d57d56d78a4735d71d4351a6bda3096f32eb4619a7486bee315b4695f5fdeb5af0d2feef09e475ea9793d5e4c96c9349ec54c986555380f242027361d1e428bd361b09ee534bfdf2b4b2158f8035ad61024e501351cd3affc91cececf4adc7245da5ceb975b650e173d8e3cabd75d5c1ebc66b16a3636cf300e6a4d68ed63eaf42473245d84a570efd23feab9663770c11eddd894d47823cbe1b8c355547dc21d3ea2d3a960ef181356d68c6b335723ae52fcaa569c3592e280966a2ec9d7fea555d171d49f22b5d13ce6183e725a84fcb0f714116ea2218a8c334ac5c88986de223c942ff66a939863225ff4c1b2a892c330d9d3edd521356d7480532cd66e2317079cb56d958739763ce7b8f49c5dc77a4e85867efdf2ec373cac9b2f38526b96553557eb84c1fd644ac9e0265f9b9cba8fdca59589760e2115f91d8dfb1312d2683cb0ae2036a67ea0f76e38e24168e5d23a29198920c96aea4bfaf837106c6de61ccadc92c02001fb236056ed43b753578faaa0cffb95ec93359f86e2168092636390cdcd16f18a2485a82d1a6db22002ab3bc315588748242c4ac5aa549c5b4de4eaee20913c8527f160c3b42453e3aaaa7493cc78f081c0e36bf064d0cf881a48002d99d1c6ccd2ec81cc488249653c77140e31a9d3cfc580da7dd5bb83d2dc62664cbff4fb35fb061781de110260587e6d00c36ec5e080f6b5618b31e12ffaa3e63c6a4f49030b9d43bc84cc213412e138b08c4cb3b14eed2a61190eea83b5b48a839715338e095374f7aed29a9e92d52bbbbceef7ee542bf22f6dd492464b5b9a93a363a5f866516bdd56f9bd5de1f0cbba5a395a6b48744c2c6bbd3509c49a748fefa696cd33ce434a9575e79aadee57fa59b2aa4566b14180b4f3328d7e1129cb0582f68094d01024e4e2d94159af7b40aaba69fbfdba76da933ea93e08814a784d3d50b30d6633a8d60b127293919ab44c6b009a4761fd084d4a0f0581313fdfa16aee6a949332376b6a82fa5cea874d4185ffadd06fc6a74ec39365d56bcd2ef7e0e015fa2eef44cd7ec49de8dbed3e89687b905f031088d42a00c724a46c5c697fe2e161db13d48b6908b1aa3d8cfd69c24131d9c4ec8e7d9825266da9cea956af57d42f1eaa2ef1d0e8eaa6781341b8119a1611bfc4eda62d3a9dd0d7632f7e794558b078e6d920df491e28c504701c3ed465d294690fdb6bc176fa4dca3c5c444f0dd334bee265f75085d3a9c150d603994beb87da71693c9693dc233b2c17c7f70464b591350518768fc584f2b198e022420c499a705cd93f7ad90778aeea3a96848de5649241fc72ed20e23c791fc622a5c950aa5aa797ffaa04d968d0dad040d86485d79459220ec368dee04b4d788cec81a854bb60e68af092e3684213305bf0123b5e75a90ca53f5ba8756b22ab5acc176cba8e5c419d1bff300f208033889730d4d17f1f79e397bdff35c18fae48481ffd6399f61e0d15a42ec3cb7876fb41de2e18e0d3860e778c413b748e09eafd6d80b02f93e3e4c686e8c85cbff12141bd65da433031133ef49a9d3071c52a818e759425e3b3a35d0f60c00d0689140956387177979de3fa324478232a1bcc8bf04828f8334f2d03e1e368820348513f334c84865c4a37a1b5903d028c1027fc40b149603d0404d4d132bc62a76ba928c172e287451cb14a1aa889eab4af6f16ecabf3132ccacdf7a998aab39f2745c962bd2c7a9e999a335dedc6fe7e0f57c335b3df1fe622e65fecd73b7615bab9a7c204d3be12f1f44cb7a27e1e4067502ae1f277d0568520e33167078b70b9b21f6ff3ac6415463a92b8a12ae1c76a1eeaf8e532bcfc107fd3a132e369720389dff42ba6fa95244be80e0cf7f296668b24993adfa94c56a54f917c61afc3741eaa8ba29ca4b5558bb41385ee16f13276d26a6dd9c5b111c3c7e87708dc89085aa688a093e41b22e8144d86eea64b1b361dc39b453d55e24d3a6e3eb85de947f350bc945e1f9703de74a59fae2fb5f3366f8033906b4f683a660a89e1a12cc29b7c52d75023ee423a34af1b1764a45a1821d49581d44ad2328387d6746e7c3cde830d8abbc09a52124e150bdacf3deb0ee50bfa7888233a78f2b8fff8e7fdc7cf9efde43d7df264ff49c78be8de93271d06d33e48a6eca5f404de7ab5c46e5760fcfcf9cfbbb3064f77e7ed3dc6b8eb796effd18b172f064f7107c601d531e10d23e4d58abc5ef11f5ef3dcfe41552f0feb1c13d9a38f49b72baca6b4348aa0fb01ff07ad4f4d74f7f4b4b5bee2deae5203809b2e34089aa6e8f17f34ad426dd40d33cfc9901dcd4295fd87b444bcbcfc13fce2c50b380026a6c6fe539c79b5183ee65e5bd347fff0c6ff0826ddc0ff6984bd563b5e82a8974b3c1afe4d5d7179423cbbdd759dea7b6a5da3762d27d3454ec34304b29b3f95326e0c8a9cf75fa586c1c48ed9802508e70135f350dd36dcf016820d6fd5f5fbe80f4513aec5ed15947b8f1f1b9f98fd3e2609dd20e3d6b9a7c84f14a070b55ac43a80dea3afbd9b9b9bde2c11cbde5a2c188f92299b22c76620d648aa2dfc38fd681da1c1242b29e37237134d1a5612a9b1ea08e9269c862be9ea671a36dc1a5134795dfb8f93e3b752aeceb46b8c1103d79d4f70b38b3609eba04b60c214e59cbf4b9a1682665c1fa9ad501a38266ab66f12b17c1dca107ca20abbe2dad56c9e56f9fc20050b97f9e79b78c18aa28be4d26378c4824a639f62760319fea5f6630bb03e3bfec04211cddf87225c2a0a7ae4c5a0487cdf7a0e15ee4899a46b39ebfd8c30614eb87d0c8de71c5a439bff4a135e6ba27ee403964d5c08a7ab84a7cc05b1a61f6b418318563c16a3d0e44a75e3316b3d29f1a6e02a26b9bb8b3ef99a8ad941927c8999668dffe3c3d99bdef9e96f87ef10e4bd65e1940993d7737397e157b3b6c7702706bd01b1cf051f6428d7696390b51774afdfef74d8f3fd7e3f2373683e0d3651b25c263cd8bc8c22b692410d70a425d957f968b508634e5a3f3dfa096559361439e9314636ea2302356ea45a4613e20e21f44d776336a19b0c626a16f557490ae6926bf85741edaeeac25f2acade4be0413e473861c52ff2b3bdeff30e5dd8e8369ec59b984f939b4ee74e5f8a44d0313a9c820ff373114fb519e89b58b059f2154d48441567de1f26cf6dbca461d2a5031ccf3cdee9f0f03abe0a6522fc75cac4cb2bc68b986e629c4cf00bda57ecfd60a8c32869be8b773a7a6cfe7b912ce3948dea3c647b500bfa853772bbf5240572d9adee0b96268b6be6615fce192fa91cd1f68028e60be3ac1cc7ef21ddec5063b26d9248b5da1c9a8f753ab94f68ebb6185c426fb29a13e85afcbe78e60de0eab2beb80db3379ee4c680c90d67c23a93b017974261fe15033faa6bc9a6c0c27a0caec2224ad4888fe524e045af8b62dce8edf9c931c44582bed5511eb1801973ee77c914c24ecf93d40909b53648a69d1bb795fc540c731b4cdba2317783aeb46dc8abd3d77f77820e9627078d40b1ffc736ec9455b9995e4c859ec1a22db14f16c2f9f80f308db65f7f37e078e4856b996cb524746b5ca5e047be64a9f47837ea0a7555ac3d70d60dfdccd5fe6d7b6db3074f3e1cf1d55a9e30394fa6b9dff9760e02fbe3249932707cdde93c3af97074d81af46d2ff543e49842addc08a010d66a340f06e05660340be6dbedac5889ebdd2b617f582bfe824d5979833e6e70a90a3278cd306a09b18e473ee4d4b84fe5ecab6dee437cb988f9d510730a64583d0b979ab29ec43b1d9eef8afc35a9d3d1fba14da9fa0ddb44fd1e19a3e3f3b70a57bd56ffbc7c757ce8d81d178d61f0ec1dca38529b39f5384156408cf0e8dae338e0011bd5ce51194ac12ef015209fd69e13a87b5a4653cffd54f7755e75991ff636db6e1dcffbdb6d1b3c75578fffeed52c02062e5567763eefada1b9c41dd5bdfffaf4e0e3c9e1bbf38bf7a7c612e2cde9f1f1e9ef47ef7e2502a2e34a45c58e64c04852758c7c16f22be6e161621e9284f40451d4aefa3ee4532f227d6c446b89afefe8973c62a94c44ae6502d13bdb94c69d8ed441ee45f1ae1235c8aa0bb3d5ca46c93789a23973bc25b7db6b8ff9b358a4163ada5da23a3038f3623c8a836b2fd6030da95a3fbbf342406ca3a5a77f108903b546534f62487010f56d31306b79ecfdd15077aa3e1e99c798f36485ecc3cc3158d77377ea8a9683791b53673bedfc01f29e1d6da6ea558be90e637e75687d8c083c96939c0c54bff3c97f735f10d05700fb081d6b936d350122a8fe04236c74061692017a654c174da34075be5924a1543c8b31c4edf22e0281139a90411f779b0b8952a16264579a6822223f933ad669f8d59363a43110eab20991630363f8e263a4cdd5ed975392974a6a6409833ae2d22b15358355e9628c96a1b88a39ea7a48cb03e1521d21bdbe001cfcb01a066a8101239ee0c09df2a57b4414f2d6fa99e5652742a3f94ea7461de4d15537da003fb8cafb37a02460a1afd235cc4d7256f3926db199c75ca55e8971e3638c89ffaf68a056d80215c15698b6c2fcec239c9143f765cc118c435f05fddb1ff222e6a613f6538ef964287cc6d74bfdac43dd8fedb63d20807e66f1d55ae7b7fb04810c02c5701579c2bf11b13479d61372558ac188f0bfb05b37627f212428ed47dee9189347fdc843382602d214a425bc35bdad291758d2ad15f3161bed1a83b4e2134e8a496a39793143fdc4a967047296401d6eca09cbc8c17fff47ae66972507de26238c6c74ec7da6dd5a301f362ed1d6d00103d717ccd7db3cc315bf26f9d395e28be39907e74511fba071f32a59f369ccaf0e004d9c81d72273eb2ac86b1c4e84fe00ab693c94d021e544eaf150411479a506a35361b45d2a8c7ba4dd3d19be7c863799f63bbf510d06ba5d229355007d99836a1aee996c73ac6dd73d289a918436d1fa97d59b01079b8ca8fb1cda56c4bfe3d863bb8d4c5f91ee2ba489816f51f2adf98eec002218eb22a72ea1a95e0c4e3b758aaed20bd575b7d86ed77a75e640e00f173dfacd9b13f41561b236bf6f1126911e628f2e486406d1a36bbb733e7951d9294d7183fdf130b3b04748544052e690240955db8ac4f4d4939884547149644153f535a7ceb5b6f0f5ad769eacb4b714d5e6aca984ba35f222430e66785eaca049f36b0e3e155516c38ab819b0427de30ffa9a7ef2366ae724aa420faaf5e604f65502457bba466f66b695d902763f25f9418258e8bebebdce9315ed13fba5064cfba42d3a1d13237d5a9e575e0926bd6cca546dc07caf618874de9b926bbb95cc178c93ce7a4b726df6a3f92806352d0f6a69f685273a9d361f953cbd0792521a3a5c48e8b215de356d52a4f8e39b0864e01a7f44fa43e30f92503eea0d8241f1980ef844fc941096e311fda5f14b04bf0d56818fccbb261263725d718b54f01c253f6ddbedcac3dfc13a56aa0f65a78378c299e6b9d4b4ac6412e12196355772f65adb6eef67b42e0ad24ee3c01ac41f3742fc7109e28f2724a1b0effb7aaff715768b460a2a8166c880c6be8ed9cd2a114083099c34b8d17930b5ef763f989006e14d8d563b8638eb242a4e2f2ff95332a20750cd3788185e1d6ac535222d95b7e858a10808647eeb71859fcccffcf6caf126402bee69cf51c239b200bfb0679c4809f7bc6a8c11e5b822539c1789f050dd741bcd7999b7d0b2129a0e3a6a391c4fa1cd852731c6f911ec74bcf03e10e220a4484f5ab7781f9f2fb45b037aec8504c6a9f680153c14c7bf20885acc9385a9fb03d833a3bc388022b3f8ab0ecf0587a4104cd852364ea29aba557b6c0395288085c5099d17a09cd1faad4d5674661034b9a6338dba8789c620738dec9da54c0c3ea1ab2e6492c4a094b9c6ad737771138d62e87557e76a46604a6bafe91e5740e8e77bc9363a1df180c3efedb64fcca074a24c563acda0719d2acc96cdc76933f417e41498e283c514c45c3a49fdb03e693cac4f5cd6fcc924e86bdfd2e558f2a05e88cbdecf627aa188569290489d2538321b7d08e2f2b5298beb36239a5ccd0b5ab20dfeda0ab1bd672d1ddbdc6e5c9077fa47a6cfe7c6d284ce955e6b3a2329757537c28a9e5889d0fec26e03969170cc2664130a16069ea4f025f5907e92a65d6cd41b6586fd3411b2593b4bfaaa911e833f19d0484daeb3ed8da3672da825e4f34be4052d21c94e4714296f0da942d674913bb81e2dc6fd899a70909a1f644e2b9e026debebae371fa11eeace03841c42f2bcacfe5ddb67fb8dfb6cdfdd67fb1310b7da9e8ed5461a811bc025e87f29a632efefa50b8aef7903c084bbd4952c0ebf3aa1dd86ac57f66c29bea621ff589fdfc6ba67f68eb1b205bd0b4b147f57d87d5826fbbbdcf1aaf8c561cd603f1b775be6e8180794e664687781eaec592f598e22a2d568780478476314833e64b27a74459acc6bb53691eb964caf36a7bcec24d3206cb53c24a266baa27c44457e92136a44d966327a1a8e1c5bddcdc9483b0434730c5582eb16315509c6696260bc2892854aac7854cc431f8ce30995e378d295e374f268af27e00f89c6e1847245f38ee4389cf4c4783109e4f88b17e209898ad97f2d1d5bad8051f0f1b3984f47fa8fdabbb9fb7b59f621faae2cd2f07293120eef4c3a5e53bff6089aeb3f973b045d395c289bdaa446a7fb633951fde43ad76a3e7797cb1bcedf3471a6187c0ec1a0b9224b9a74dc986fbf2a565ae89f568f3d2ff1cf569cb6a66c2558144a3625ad75ca5a4e31fecf362a5c80da5a8abb9ef121b3d60f9d4ee871ed7fa3eca9927eaa256152a408366382f18895cae5a99848ca41b34e7b12cf57f17d45bfb631ba1608ae9d871d67b4f086e49eacb3b28469dc1e18e5c25cd530d732d4965d3bb402ed0e1a28a4d51f8a422a28ac7c2aa2722c141b108d10ea465d1e68baedae5772ed701f3c388d933c3a6c92390f3fc55cfeb51347174fb025741d6852b568e175c1eb7063a20462212a886abc21d88000a73688948a93cd2a4c53adda6a767d047288ea9bb7d6347609a69c8a75241a0a25c9dd974e2087717d64aad5d23048b2dd326fedc5eeb398e99c44c67400675e44acdcbd3229eebb1c438af304eb0f2e22dc074bb1d45a1db5fbc479ee7e5304911f3a068fa52a9d8ea7edb22aa18074f9b2e3385234423d63d1941f21eba91bb2f5ea3546d3b00b28ddb9aaa35a9aec0e74d3d8a2855eb945d0ab73b794893a50ea4607522843d594ab007600165f39683f3a9a0448fb316c6bf7afee3b0ec69d4e9cbe89792c5949fde195462b2e292a1b506c4e6e21343417a9b9fe7227c2fa8accef57430e345cb49dce474f8e3968ce098a565f910e91a74e3a9fc003425764fae5ff3fe1f1dee8c63c8a1ff27aff7b993edc75e5009ed438914454f37a75a45a2dcd55a91ca7321f8484cf85feabe572ede244ff13756517fd1391187e73f57b58ba9ee22e6ad99b475d4b82fde73a166cdababc6da16e52cae52de8a52593d64d22be90d6256ba56bc15442cca3c57aca5ab16c5db2592298aedd46b91c3f0278fe46c7ae9b50622cb70a4fa1c471f06a97d43a6d2525dfacc55217ae5689eb4ed5d90325efa8a470814aac3b73c7ade984fc4a7f3377cabeb3aefff3cf1004fdea384c2782fe6afae1dd01b6162bbfe61411c78e068ff005bb6602e2ad0980e5dfe9e6cdf1d1fb00cd16f10a9183e3d383df7e3ffa7018a06891445f6ee294217270faf1ddf9e1999b0921b04551c67960f95b55e236ee13b0d4b99b78158a78b56cd423ef7377fbb9871fede428992f45bcf414620a699cb7f2d58b1b4e4a4fab45a5a092e93d22dbcfe9239c613c8cc7e1a4d301565dfd2cb87582709508d3f6c9692b65ab5028a24bedef9b792c592b5d85102eb4150a56a3cac256942c9761cb2318de375938f50d6d96d2479fd39fc8e7f4a7ede7b4fb882c348cc2d138ce1730cc17750c43d4004a15793cc1a49236984c6c69db42d81d603c09c6b1654abd055d54a05aac953700c1573b09125c67136247f1ed4edb2904ef43635644c7515086e5ef22827aceba4b3cf24a25a954fdf409c3415cc9eaeabc81caab5a67edda286596c08dc16c14bc3d6f147cee6d3f77f1e8f3f4a7cfbefa177bfe4ff8112609ed46ead0c5341aef4d00332625034ab06a2fb6cd0fc8c4dacbe594468b2d36ca6b3fac501052aef51ab576da0f4699ed078102ebd938a4a278810af1584e1e0dfafd9f920c84cc7305dd78bb45d720a78ccd88f29c512ed0dd251f7f889c3778682b770897b11e762ec9536c5004375ba6ce5f035d42c08f4afdee560bf751332bd1584eba94ffa49868d866a23798c09307866689be26fe836e0a1733391ab752d337f1576d8f5ca24c82769f68aae894bf66a914c9ad2a93f00350657215e03392704dc995531d936308b11a6cb40dd7a0df27654f024d62aa7cc4a0905892156867fb252953acd066be9f0d1fa6581487908c69643838125a149cdf69ea6e2cc90f521a96c5050b95508db5b0a61bb8e782b7de26232949c6e90413c6a76e4237192f26bd78bc98e06c580d8540e1e93d26ebf2337d468ca99901dade1d40238e245dd702f15e01c12a4c0c14e21278422a2a604eedd135a34ae947afcbf168dce5a43f09fee6719290988498e41123c29167c4d12918a59a9745755f632b7ada55ac6b8b197d30286433a014bc5f9a4266e5f44b634341d31a6116ce09613950fb59cd198681f3fe03e15c739ba1d5e6acda8e15150c9da442560094a7c7e9b5c7b115a69c79ee639f0e695c6eccc497500b289315ac9ed11988c6623284548a10d1c9f06b2c268ac6d737ec457d7ca4697844faab703a8df915e1003e074f60d34d627b897527217141425363e928fd95881311cb5b4739c1ee7c32a79b958897a1b8ad61004ed76356088fc76cf23c1db309387465e055edf758cecfec90019a399656c5892a8e3179ab155b38ce48caa244fb6da8f7566c4d563ef582ae4105aa18c88b7b0622cc4062eea9aa30909ee776b0d662cd606dc5fc769c5a2bcc76d660e999e3c772f8a032f26278840c5c5180f259a3e15ae39a35998fe5c4d332a91a3a5aab6362572da84428b23c84397c1362364af084d4fdc8941f2633f285b1d57972c5e49c097bdc1e3fe82eb0b88b53ebfb1dae8062c79662ae54b09879d59d2d9244a13c03b9f23cdcf8f7218d4766bac56599aac4f26d10ef9413f37138799e7842dd051043be12fc269d5093dbe3ea52207c9c4e5ea8a4f0ce0ae1044cc23202ee5c2c089f3c046301c1f6bb8b000a2f46089a4304b90b547da053f036ee49878df650c2a82e8a06c4550e942c70d1b6d6dc026d8a5aad5ca344e4e5cb7cc8ef2fcfde1dbdfb3568fd136660c7f7cfd6729d2aceb905beac5ac9ac15cbb4a55b6d99426d84091b5a8261f7de29365f4c93827c489ccdb7a07707f38ae0d5acce43cc55a2a3ce4a66f0b0ec783c202b55c4dd76d72ac1062fb287724a5f7a028fd7936138be9ef4a6cfe3f16cd2b48f66931e55793d4f17c49884e3d9a43b7d118faf77d4e8525da4a78afcbfe4bd0b7bdb36b230fc5724be5d85a8604672aea582e838b6d37aebc459dbbdada2f5a129c8e28606551272e248dcdffe3d185c7991e3f664cf39eff73edb8d45dc31180c66068399167af173a3923cd1ae65bd68b29a3edcdd993ddcc5b7a4683921f167f76eecd65af12ec034195fd5b2b505f3a262c18c2fc9f54edb7c3fef5ce96d79694f0843a193c96aba33c39708437c5d370017c9ebd1a988ff83cfc8bac473ec04d4ba04eacdf0127b1e04f8a725a69a044e3eed40d5a9a71c74a94dfbf40b9b3699fbefb6ec56902bbcaaf71a0a6ec896528b659019aedd3370661ba5ef4cf0b0cabe667f862d68617f1a8c429505adedab987cf07304dbabb5c870bad97842ca9e4ccde3f5e0922ea29b24cbd52bf6df02d0d7246492e378eac8919ddf02aba049c8dffc1cd572eb5a1c2884bb035d4e0b9f09b1bd96c6257ee3548e70012b96770989369b4489e98490a23fb4e0fe324014d7d460945cdec9aec7c23dd8e6c4f0e079afb7f0536904815e2efc958c1bb6d9581e441581f417a2842cbcd968de5b1590944636c2b3a52860f96e5546a4431baa305e12b76d69a782f00da90c4ad9a4203c234e2360bf82f035a976ce4cdbb795692e6b73baa94c60561fed35fefc85e33f17f4a6dbe5b09d7e8ef2046e2e8a5ecfff2cdf434983b60cba164994cd54c2cd66d3ad179aa9345bea1a8dfcf96673bbd95cc9935eed5bd21d60c8906af46452f485f07225449b96d7fbba453ad631186dbf742cc32fd2d2cf10c83f861ee47d3f03238c2cf4bc165a2eadc0ebd877d44a209af8e80628449892b7ed048c62a96245cab9b6de605af37a274b69cc0a4b0c7450d3d3672e3d1dfe399d823dea6392eb896624afa810ee3eeac1101094a81ac51af7258e3141e5689f926cc2c4c93c869c1a6b390d07d5a5fce0f3d6c338961ce22299510d9be777f2d8773186a2150f7b3551b9ce1af256eac4c8a7f6565bb0b9de8134a98fae69899c9306823c2b4af04259ba49b3ac97c6c20dacc35e5abb36650bf6425121982d3cfd0cc4dcec3ce437285b8388f33cb95c715a4cbc4f3bd98aef64f31d3b0c4f88d4c0b7426bc33b5a1bdeabb5eed055fbc4d2ece84c063b522bf8e47e4a894f2016ddbafa1e8bc7f75f0e889b0603a8acc4d572b517c73455feaa46e68e26ab5f1058c6bc56e73f3bd9523eddcc6ee8acc3b3ce7fbaf3fd4f7b3f16b159e76392a61d96717935b614fb9ece3a09ebcc57e06eee86e68520cf82c3971e5d837f16dada23b1ee84b37116f2faf07144da1436b820277e84704ad6c621621cd83837ab56e3754b3a72c234c863c29cfd90394158754456797447ad1e644a5c90cc576f32c478323fd71fab2f90a14aa8d80551973e96f7305afa1d0fe139e1e3d566b3d86c8abfec1242d2bfec8eb3300923bc247c9c8591364103f3b1b92f4b0d7bbd54ffe82e7a3d3e9666cc3b43151417811dd95206cc45dac24c7cebb35c5aa0cdfd5cb10265e953ad3c9fd19b24a6ef924f343d15cbf56277b3e9fe2e26e31ce94c1b7869297deee8716c0c5c25252deb2ab699c2107cadf59cc9dcbf763b588c8d01b2b5611eef44954b83bee67cc29d4229746c12b04d78e68c6b7e779bd2b24f3164a2c58f9504c9cbe1a4d75ba274b29c1239a334e2f4d1ccf7fab3beb7fc843b5eff5afe18200fa793c5940c703a99c39f406cabfd45c4ae2871e061cda16fab20d8198643fcb93203785401cd5e7f7b2b1b9e7dfbb9daf4a2ef8971cce106e28aacbd4f3b0601bd4a90357b8f6669a56445ae2af4d3d815a8dcd47c1bd1edccc9ae096fd522c079d4288220ad9f2c32dd6acc29b125889a227ff765bd15667a62af5a19283d74de54988085969d38fe922f428ad65db1c7d9844e65d4953d5dd9a758a42208d725a8ae9323f57faeccdbeb55bc5d5620a6a49a5eef955fadd402d98c1d67d12cacdf385af3a8733fc61c53ccea526342ce7ce6306a992a667d190b2eb145fe6c14517c2472427dba70a9e0234e107ee5736c697e6d6063f5e420f4a2cb224b579c7a25c2ac89439292946589ffbae5e56dcdd9356e7988b3ede9d3d8fd08d7e5e88df47c634ca8aa11319dfeb56b08e941aa6693952b7b261d44427e91c477be824bb04b5d2405529dc993dc6c3615fba8c071c59e6b9d14eafa5072e649212f10e1a36233154ea6268885be28e1bd1e0ffe09eac3319f0ca621c7daafb46077c1fd85ca66229b5586663182accbca26aa8dd975e96e7fb7ddca72b4ce9bcd4ff8b40e864ae666b32edd96c771253b5cc3652d0cdd0eb962c4d53aabbb1e19089e2da4256e1b2d9da23b1f142843a81dae0da16a43db6244e798d2d2405200045655f0d377e528235e99e161910828634021114f3d13ce48050695bbea51a6dc8dcb1154ccf80adf45c79af59db13f3df4299ec0c30c4ff6ea61f910bcb9859c14c1fe57023e184cd7ced9d79ab083b37c19c1143c703b04133e0dad175f4a2700f7edf2080bd7a57b736c37c8b9ef18473a5b03d78d285de0d548ae2b569e5551cdd2e13611efbefd7d9176df555a9371dca2caac88f4350524d93ee5a6dcace3eedc4fb9d1a86f9abfa3d39613047424d5ad852bd6b081a196e34ac3dadec2a728f4db8a43f4c56a0d9903b77ea5759a86ca124bbc9f49dcbd17e2eb13b515f745dfefead372654a30b3b7e06ef025959319b9582679260b6dcf6bc955b7e0cd0c7d2bdecc91cff15ab3d4b3bed63c97916ec99f54e58d29f1f46c5414807642a597ac667d63232a00c219d36f550e7cf4b86095adb52e751b99bcd7ba6f23a49b8d8385e4c0bf8318e03abdaad982a376e46c03d8f621bfaeb431957e34477f0d7ee2495a90f6970a52f01ccb3f214581d4284015fc57bbfb0bf223feab39e6c9af980711f96bcd11e193c1171d11de154f7f669ed8307fa8dca2c273f680f9b1e091993f403812c98f102e08f377114e45e16708af08f39f094999f98f9f82c334ffd977082f45a92708df10e63f1f0ae9b7e29b44f3a7dc6f78e3fa4228fd3f181bd15ca35443a5dd04918e18ec443471a20916c1c9cf87a7c77bbf5d9ced9f9e1c1f3b21c82b813406f709da5d0407477bc727dfdb46b64521afc533d415b11be8cfc4525721ca9d3c150b5d52c3e8f6929e0240a49f4fbde355333a3c563d02ccf6a8603a24184f784add784871e3e5541accb5475f3827d2aca0af569c67ec6c917d6c96a6f55138a3772a37571604d14afc9c7a5fe346ace8e012afbd284fa29d34baa4a9177a50c7c36d2b767c727678f1eaa7f3f393b7584c34ac37b70c22bc861cafb88ed27427ceb3a2f0a030b88b5f06517076f4f7c38be3bdd3ef0f4b64e3a40cb08932de08cd53222ddc6d838b5cd52f86e811e300091f966da442bb75cd1bf72f87e237c0f8e170efa00d772d08f81dd3aed79a07b10ceba943e7b5afb90a6f5b8d89d31adbb23bd0c124bbc37a8c9d15c4d83948a234bbf2302ffd0882c3d469a62683bbcf1ea191f5fcbab45e60a5f35d9239297176bd4cd27697f59dc8cf7c1567c9d6e0d907ca8af34c7b1a25514be629bd3afcb424736536c2e8c78e4cf2279efffefdfbf701f2b0e74fdebf7f184cd1d81f87fe387cff3ef4dfbfffd847f0db071b6b517433f987f8eba329eaa3f7ef111a6feeccf627fd6fc75334def8efdf7f8b903755aeba371ec2de95e73cadc86acebd704e26539c91014ec8004782575949c97a46217401cd371befa1a7422dfa8cc401fd4463c12b8eb4e720883132871823e228912a6481bb519fe83783095e8ac369096e0dc071ff1c457d329f0ca756bb7843e82499e2196193dd29be266cf2688a6f099b3c9ee2cf844d9e4cf1156193a7537c49d8e4d97414810f3178d6162118be3c1cdfa8987a331d42efa6d7bbe91232c387c4eb7b8490abcdc6fb167ee01f8837ae25edc308369b15fe99dc6e369f47aa13293a5f6f3659bf8f97399d279fc2199823187085fb58b233511afe8073baa4110f0ff132ca7912a5e11b1c159ce649f121ec762ff132e29ce62cfc799cfa3fa3f072ec05df7aa137f987d72ffc7dd4f7a6fd31b87fd7dbff0535ba36055e08d4e02708e1a8d7b3c0c8edcbafc4bd3b0007da3f9d1eb901531e4ede3f1cff9f69eb3b6def2f5ebfe2abdff5953f7c5a7b23ea3e3b8daacf4ec596500ee5d5141096cee5a8eb5c4e476371bc694fd8548805133675f795f70f7f1c7a7d911b2830f63df48d871a2f307d86633b924c20794418285e0ae2c7e2070a9639e5fc769c840642fb3a68274ec96094da61a6fab5eb8ad0493a756dde2ccfa8fd6ae13989262bb8279b8e4ca8ce39680856814615b45e050a457a3d3feb935520d10b8de28cf184ad68d9e6e8efc1e1a7258d399d75bc077dd94bff81d7e159e792761423fb0095c9dccffd39926a895520b1b2d573e0f60659c63bb222ee5caec46f08d73aebfce7837ecd77fa1cf5bdfff4907efa31d7eb5d9bb39e596b3ca9bb0772493bf47ac96f1fa052afeb920c46cb17baafd1522c5232f717a4f0e793e514e12e9fa453f9ae70d1ee36d1f619a569a35f7809235335be3df0be088b858245d627008ce5582f6db8b24416f517a5b9375e8803505189b1ddb07377c37eaded1a16fefc8f81e6cf80c57bd05ff41f780f000c7afe7aca1d91569ac72f1587dd2d51331efa93a0ffed98fca31b7eb32e7d34793fddbc7ff8fe3d849af2debfff66e8fa1049b7b541bae137ef1f8a33b4addaaaa6f4fc406f0bc2b1e360785169b8a04c86411a7b5ee8259e2d37373e197c190d9ff0cd86614e265364bc7dc544baf31184480a813823f2da26a070270c346b308a2c158a34154a099d44d376cbdb14257d52f829723d1a157eaaa90b5e120fc868ead0506fc4e53192229c2a62d1ebf9cbbe2a3bef2ffb1efad64338e9932549cd8e1ea79a888de77dcff7a0dcd80b75359d24d2ec97277d1cdd90c26735b64388a2fa89dece8d262384901b632ab3d9f809f16763fb16d0160c13d4977ddf88bfe41bd1338c3a1b7bdf7861dcebcd60c1fc3181329b6f9087577ee594f1fa095ef80c21ecfa285ed6bc87b6ac2e564b8a2b1e5b65bbe3764b81225be5b17973f7def7c7ddf763f4f00a482943c6dd27785f60aef705ee3228b9e64d8063b7ac097c1aeea43bd4ec497768f893eed0615086863f01270ce66095bb4306030c739fa2719d35b7239d409883516c1137eef791e253963e9dc453a8a2e6eef4e1ae022c626ed95a8136765554afe116cfae73e0ea85e0829929dc1251a7117b86395245e5960e6e2b1da65a5b7976c1105f2affe197dc9f9ef1ba6b3626ebf5a4e17dd1eba526dc9c1f81a56932f71323f0a934c96fd808d7dac5ef3c61b3ce3544f8e93cf0fa51df7be0e9088dab409c1dc47b7372f0d3f1e1c5db93f38bd7273fbd3df0f04a79db17e3256b3547b84910e39e0ca65265b5d0d3c7cd6731507038759ee2643edb6c282af102db8a02b6025c46153489a63ad39cddc9361029a217bb442ff363015be7b9e47a58897b03cf202b175015ed9abc81cfc112eacd8ac365e7c96541f31b417568f00bbdfc31e1f59c1144c45457d4425c124b11fb2b21765897d04a6a3ea79f4001eb0b81240932d9861fe1b53899a398d3fc20e2910ac5e46a05a26016f18864a4dfcffeb25b9a37101020f9e8fa9ace9288d3cdc6d1533a9c72f08616457445f717116334459c7826aa4322e366642ca7d1ec16b4ac3128a821a73e03a35f28e23c5972cfd9e2d666f24b75463c6876e7ce76e583c39c6619e510639b2a1b7ce70892849d41d4dfdd46cb2555c1cd7d8e4a5717ecc41e59e1012aede958c0bad601392a0281b0c32063d73283acaaeb260bec06cbace0aaae3f506ebc5332998e1cd6c27a48c9497730b29eb65323088d2409e524c5a236a6646738eaf7e90b36427c42a73e1ad9e2654ebac392354895c07cc143a492d84290a6cd86fba8aca8a4db634d8d797b10aa82a6f3b1f8a73dbbaa2a5f97a8c4eb728a77ab81a91a1a6fe55fdf1f3aba8ad8572e9933026e9227dee9e15f0ff7cf0f0fbc298ec8c47bfdd3f1eba3e363f82ec8c47b77f8f6e0e8edf79e03ec54c76832e4a5eb46696a739daee2dde4e6a590eb34ddf16943d47dc5ef2bbaa2e0d405ae32563cceaea9361fa35d42e25e6fa96d316a1ca68083d6005e27052514bb84d00dfc255b67af57e93c49533a23ea6a54aca39308a5f84230f84e3a6a6d96d9664fe93f81bb27ccb66ad2aa8dea6454e185358f5ba3123978fcce09f79976b41d9b73390b722a8374c1f900f6e94e5abb4b7bb53c1d05b1cec7842f3a091718e9211466265e11c579451d3177acbd7b3d0ad18ce07d4cafe7b7281d369b369041ec93b6156ac4d6406bae6e46a8732d52d638487d9876871667052bb966c04c76c15ba70648c51b50dc28a5a7cd552c9d84dc54222bf9314064e4510150f0810098bc2a7abddc4494ae04bcb10354bedb992c45a8a0c14c55275eb18a635a149e5a6270ada5f3646f58d7cc6d30696e28568a53476d0e8db419be022242142a381f04abe1d61339cd8809ad5b5fdd98ca8d0c2f73da8af15a31c3948954f5444a60a9dc321993d1aeb3dc974e6e6ddd2e21856bd8653b1ed3908f16e0c9cba51f48b9ad3704469270d1d9ca671816d93c292df1aa023d9720b850b448e2d21c00a3db40937c545a59546bd7e952a3b90a29a90f0730fb7ea3696da37d30ba28346666dd6a9d7de3cfb55b6ab32d34eea2269d52586cae60e5a77431b10492235909aa5638c2d41c09dc11f77786e0c7472ead3af4fbfdf84532422a75124fab4b2978186b00aec744ea4e4164bf496bbf4cf49b37fb652f72db2f9b5696cc7a4916dda62dc0b46a904a649245528ca9438ff5468167284836d588f96b55c5aae8a8be065c558ed2b4a5266c4cb1983a3c1c689ca7624f378263d423c5b99b5bf7563b830c4bc03a1000da43d67da4bad610bc180876acd69e8482abf5491c9d38bc0e1ae042ac505a0140bf5f08ae6fe5d34931c58581483aaaf012b13870cc21500fd627b820883e8efbfda80bfeb3f3cdc6cfab67478a93aa6d025a574a014852e9b1b284158c62fa7ffd2ac0b32c5cd4801e09a027a05ac316b0490b605b0059008cbe004859c8ac675196783d0c87e5143fba4b9ce535d6b9f5e0d2d11bc16be93bcd5cfabba2c3ff4ed67f37dc2da7f8f1bdb8ff36beeaecf6fa324b7b3daf801f8d9c208110f9593e6e6317d4615fb6863f6d67e47487d43dcf092126bdab7f5b1c1eebd185a6471cbbc2a18a7ad30a35b82ca5b3835746e1a313b63a4e95b1968fea156bc95bab5f679f1b75ddb4ad154f1ad54eeed15bd1eccc262986d12c4b59facddb6a4ae86623042cc2371bc5886ade877eecc8a0c3986b0123936c9f2118623019dc5828812f1b7d21b8ab68f1d52a4967341f3bbfdbd1fecd995bbcf2b5a542f6b952a3f2194aed93938273a04caca9462543942b2d07e8510d29c921d691000b0f44a7a82c5bf545864880ff457924a9b44ae055b1085ccb4c15dac72d275e4da615d9ab30dbbe5dba552df3ad72aa120a8414d976b5d3bc7e1594af62b644fb5e6755d0990c83f681deca2baa84779202ae14a38e6c24f010a644dd9851f0aa52d1dd24f34630c27652621f64d4cbef0c8d9be33b0b2925ad97667194eeccb33cbaa23b33ca69cc772ed3ec7247bd7cf4f05c2b1c96645de29bedc72cbc37a3d12c63e9ad87afe5c7c73ce1d4b34b7eeb40f632cb521ab9f39a8f1373d0cd511b6d15f89a34b5e9840660f31ac9e405be463827993ff1bc291ab140320b673ccba9bf40c172c5fd1c7b1fe8ad2764cd8c4597595e651769a09e072b9b4b5fbe03cb96eff26c195d4592fe62ee7787a88436e2ec7a99d2ea03186989d5166e595dc4ec2ff2ec9abe7fe8bf9ff5d143b8d8d95ef8707645df3f7c8846dc679b4d976e36260e219d0cc123c94bf2f89152c271f7a984b5932b51d9cac4692d03a1eef6fa6c59afe544bec99d6290d999d12cd5d604f63433dcbc906c143bcec18bf18cce699ed3d9c952bd5e2a94040a9997a7349add8ecd2f627e3582446b94d003295168abd9543397abf6b9b48f285bfaea6acc7463c255e396c62f5dd1cf362f04b9bb9acf9121ac5a0a41386f36ffa6726b5c8338b071c9dc37ddda016c366bb9b98b7032c5b34b756f2781a42ff1eac383375134985daafb267b890489238114901fc4690697fd5297aa3b1df15e2f539ae1403d97d687401c644bca94fe2ac6191285fd24c8d86a79954733ca289db9a2b8012a908655ca95b6485e0c9c381b1bf6672e037e611e64e9ec67d9f70b32ecf5da6a2c90552b89837d1f18b32861dc1cefb97bbce755c7cb0fce17b4338b78741915b4e33de85363bdb0888ace25a5aca36635ebccf3ec5abf1def3ce8bbe3eb83b583cef3fa3c60f4a3ce7b204f13be104c2d2ca5ecc9cc557417a570cfd1a19f928217c1034102b0002a681ebe44d8723f09a0202aa192d2b9b9848cf91afc088b7d54ba44e2d0a11f0251054934993fd433dd28a8fb4e2c65815a8a480d94d005892ef116f32dac8baeca8ae7c420db0ba8a73ee0364efd7ee966c0fe0377282a410625bed7127befbd4e1cb107202dceb28fac6d95bdbedb5d7d95a9cd00c6407f12b712c2f166230369307d4558697438ca5e9aaaee6448a6953add416988bf81fccf9618562cf29d20714ae0655697f06a359f436c10c539fe9430fedc68192417c9e52d3ca8045c6ba1d8d12afa11178c355c485a6d63e64ff814af052f1052e02e1bd13ead8445838b0b605e2e247dbb90d64cb30bc1bd542246baaa0320f717094b381040bf7e0eea137b39e1c1c5ecf288cd336b5f07bd2ad2698397a80447da062d2a456eec828f8ef7631d3905a2d49221027aa65dc2cd2e2b8c8c83e098a391d24ec75579247f39e8f5e406da6cbc230696fb673ce24a48215a48d96cbcb7197f9dadd8ac9683ac11b839e51aa0d1bb747b33bdde1fd9b1029c7ac35691de016e05a5ab988ff00f200c6c630c5cbc1647961b3cbf72feab1312b718bfa88561d2d5a946091896fba90f42ec26c23db2d5acea147cd8e4bf5c83b0d925e178dfa7682ca617f2c6047341c44529f14feea87ec5f663ae2d0c9bc453774079933114f2179c6d9281c1bc953f446b83c13b4370f26ca4a611f333751b7d41d617b33cb911e26954dcb2f84c1e581e862da7be5a7c24a9adb956fc4909bb0d5542105324d68050b11072b6cb09537b33de6cfc98fc5946c7b4432092896a45b22f02200ebdd86c7cf7139c8146b35bacfe9263fd6ad8bd958fdce7476677190395820c46c50bdbaf5abec2dae099bc49311da5f29052ec555a2566724d22754bb7b235b5059b21524910a5a99f6ddd3b4ca04b1ccc2ef1a1908cb7cb0b5090e27d9f0948a9d719fb10b8da6ce7f10f3e43216d6bc5f44328362497b051d51e6dd5d8921959094cc82434fcacb2edc4b06d8a261ecc8c47302ff84249b861539bd68d6ddc47791eb46a5b04237ba058835eefa17f16cda33cd924ef1619a39be45d34db24efb2197ab83de248afd75522e0170abd4aa3f8c32b9ae7b78d82cb34e2f32cbf4698b72a3ae794c70be5fe1f7e5bab5d647df24c58c4931bda1187a809230ad166c500eed62f6ec93f3a78f523bd3d8dd8152d35b5b06268e9232c55acb4ddaf94a009795db8e432b852bee5f4fee833bdee7866f54642ce58839595b1a98cedb99b90aca220304db8dc654412905cf6577991e53ec205198ea27666594e20d2f28ae5ddecb5de899f4b9f7b3ffb39d2319ea89f6306010dc5eeb79eaee2b1609f421668b3765f5fe2faa8c45193cd47ebdc8f344baf609f8ac414705f138adcb92388fc5c90ffbcc457941f717abd75514694a4bebda7fc5fb43e57948b81ddb12ad4ae8ae1c3a86031e4598d0593099f3f837e0e948df7057021128b7b00b8680170d53b8b0be2b80e6266fcd98cf2ad80d62c35c90dbccd95d9ab34bb9c0a0271a3ee6bd0f8d61794733b95a7631efa8c70dca6ebb188f03a49e9293c471ce506681c8bdf692664fba65c9f934b9e453e0f78945f51ae5667b3f13c34a2fefa0e263fec0eb01020c21c83c8c0b4c8802558f68a57098bf25b45eb18049c01342edbb82a2eb0d342ebda62678613c04e137924f6338b9d40181ceccc5bb073249fe6c051c5953e5547a089401bc9310573ce762da24655595fa22a83c02b89515eb648fb1ae70b89a963f5372c5c1943a68d6210ea0da9886ba422ae60720c61ae4b15aae3bf855a5c7f756a31a302ce626cd916b80379cdbeb0fba1404d7f6c898d04bcfa1b462d80cf1dc0df9b84c4298df2ed8c746397327985bf0dccbc0dcc6089eeaa2885e461c09c91b80266de0666b11630541f8de22d401687198e0d0ce3ed68ac945463f5374c5aa0c91c684668cdfca8024d56812693523a96cce5bf039cb3af0fce6cc5b82f6945cb2147ad9eae6c53004a4d5ef5e0ba379c3ed0db3fcaaad11783b1bcc913fccbff045bd01de2a2c6bb8d8abbf8b64273086c0cec8118bf60ca5018d99f7e04d12983687613b1181cdc846a9e252eda4946f16739b20ff4b6f8bf033b2b1c7224c4e02d782a676055fa633f521237c0177387d7452115e8795f742e4462710f749ee5d9f2487bcaaae23527ab76e72323fdb65d1b66ce932b7993e353b2c51e94cad7775203e7ab3090547dcbfb05ece8c588f35be43b209695ac1e580594cc95f20dc664056108359d542d336d2e0adbf5506d37584a8b3002699dd7344e79e5f5554de36463e79668c4dca98d8b66dfe06af97eca43eb7ed86ac23f5b46c38e5fb0c07afc5cebe9cc14e423a0acf1f2b120d9249a8e8aba3a0f174dbd827a89d146fecce65952a6561e33c970346f66e49ec8cc9e304a45601180cfd87247d652577237dbaec7646b5b8524d30e3563e0f2d2c746096a8a0aa0c57194ac8311b790e51ab28c64133e1d3117b2145f59f2dd767dadb594bed4526e368e26ade5aebb947acc12852d4866b0641b9637b12423835166113dd37389483ec9a6a3a88e25a57def53c10823e4c56a7db4fa48e10672c426f1eb32cde20f35bb6409dbdcac74af671105b81f10b7b62eada908b7195b56b70e35ada8abaf6ede58dd98e46275afac76fceb2da7527ac89b60b82bd7971dd6d6c5abd0792ee87c89cf88b7f76affe0f0f5f73f1cfdf5c7e3376f4fdefdedf4ecfca79f7ff9f5b7bf4797f18cceaf16c93f3fa4d72c5bfe9e177c75f3f1d3ede7c170f7d1e3274f9f3dffaeffd0c3e7c4fbd7bf2ac2a8a0f0fff2f01e79f88fb61c7ff28f7f4dfbe85f0ff107e25d5ca4f322beb8083d7c443ee8abb54fc48bf2cbb987df124f88b41e7e47bc22193cf7f029f156f0e39fe247fcdcc307226bf8d4c3afc58f47bb1efe8978ab5ca4bc126544caefc49ba7e2c72fe2c7d3c71efe911cf53fe9febedf6ebdd31623573acfc5194e48f0ecc9b7e64630b2978305198c3cd2126dd44f767670236777daeb253b3b3ae448fd6231013f62d58bc5546e438970d188f7c963c4c899f53a3ee15384f36a0a84b1886b69bb5384b35adaa329c2ab49d1ef4f097bf1627793bf7cf95827f8c327bd1cbd78f17813bf7cb96b521ff562f4e2c5d3cdd3473d1358d30923ff9b03befa5ce096daf39c0931bb83c82394f7c9d9844df8f4e5cbdd29862fff514f24c030184cece5cbc73a6ff8a427d390183b8339be7cf954653f85aafddda97946ab7bfbcb2342c8ee581019e9e4256157fe00e7660151df235e58293e0475e5960abba202f104b72aa6fe0d5917344fa234f9dcaedcf53cfd3e8a91ef8d7d3686075315cb6e8918a0ad629b0d0d2ee1bbd7db5a4ab7a64a22c528e438261f469567044ecdb19f138ae33ef984420825262b5b95d9915e42399271dc27ef42936b57d8669fd6b2f7d3e87a4967b552ff0cdd2e864f6bd907d5461af93f55aa3fdaad65bfae566fe4bfb2f910e8aa51e0f75a81a78f6b057e09a509bd329f7f1d25a90cb0704539184977e659de917ab83d65502f4e9bb8ff9b9f2364de20377593c6daa1a657cc942eb129b79df7a5d140dffb97d7ff4d7b83045178c4fd0ffdb77da6deec44b3bdc2253be64d547ebbe67ecdcb0a45fab63d416b6d1b42d5c3c16c95ced803de8933764373de01e57e27613ceb441dd190b2fc0c3b1ef82894f7f7092a4b3ca36d5b0478605ad96447a84bc8072d97c1e8c0ec4fb3311cbcbad91a3f4a53189b70847f94b6668490b7bdde9eba4042e6725bd917eea11127b18c71ce9cfaf16430d57e2fd4f3bfbff90ce910593a32d6a750df2dca88576f436bd79168bb0e210640eebbd0b16533dbcb4f54f6a99bed50509dffcf46bebbc14cb1835a2f6a0799fc9feacdd40bbcae35a0b688c97f556fa05ee077b780bbcb4c895f1a25d4361325744c30fb9e586db59fd887eca37c881076bcbe107fb15caff34ca275f8372cc9d8b93ae2c3df9c28f1bf5a8b140a7ed7569c9efd9efadefee9e1def961e77cefd5f161e7e875e7edc979e7f0d7a3b3f333b04cb366675ec74f669da3b7e787df1f9e76de9d1ebdd93bfdadf3e3e16fb8f381de76562cf97d45b1dc12c8c393a90c346a46f057eb9f1f67b551c854e7e448d03a912e27084982b3dfde9eeffd7a71787a3aae0efeecf0f870ffbc2378e9ceebd393379de2f734e1f4e21a3c8f747ef9e1f0f41060461ef0e832a50f3a7b6f0f6471d2197b78e24c70eaf61fa17514e4d9477d3f3fce6050a104a3ab806b4e23136407fe1fca5af02936d2df1d83898ff4f2ec6fc75fdf62a2c5807d924fc7e21fe72238740c2b1a0aa55cde8c8308e05e7afbd27002eb1b166bb4c6821995ae1a928c611614c967da7ca59dfb312a59dde6c9aaffd0fa573fc6cc05af63238041735ce52e729f23b80172143e2c30843627dfe0d8b9fa6fbb2e7727f8f52fa835c555b318c55b67cfd0faaf3ec331d648fdadc468af1f3b466113074b61335b9135077c05b59ce1db07a3e84552d1720409a7d732f450619f9ca6bd9e9f92d8815ce09c577e8a1036b7d37e4aa89fe2022eaea3fed0c6598522dc4f51c9b72ed5ffe46df4575e8cbea7088c207fa433ee1c1fbd393aef0c3d3ca91213c71ac02529ea0b166480e462c0ee1e4953c1adcb91034f95ff59106fbb8fae99d1c920226e3815803f27a9cff565660dfe89a09bd976f8eb7b4d19971cb4e7ba219c1263c2334add99db793317f75768bd1a47fe0a85e9d665a46219294eb177f4f6ecf0f4bc7372da393d7c77bcb77f280eb2938ed74fab271cbce6914758e7e7bde39f0ecf3afe1877c6e240e3984d5dda94f84563092245905c4c4ae63ed367190bfef6d3c9f99e38cae455c7cb4165f724bef6829d890e0b01fe9de114a151e44b4326bbba5165750b9c235c94ae1a7b220fdce114fddbaf6effccd63a383c3e3c3fbcc7c6aa6d287551fba770ffab5ea42a030e33e97ceba4b99834c7797dd2f916d2aeae49ab5364f529fe77dc6efe99392a9a090170c58e429da8e8c45f9a336fd0494d19e3116da176f704c79fb8c4fcb79c200297ef40f564563f42fac33f718888d9c211f25f381fbee6f5e37f017d1c80dd89322d0e022b2072bd04bad08a015ae8bf825b7ffe46b1769ff8272f13d9172e13996b93a4d56240eaeda2abc6c6ed2f2df3516eef1d657763d7e63dacc807eac6cbf3c47f03e40e6ccc7d21bce4d8a414e1c4c99f9628e4ad06c72d972ab41d8572b4cebf9678f8e265e7c1c5857c42ade727e67c2eca5d5c3cf0b6b3e2b172840e57482e2266fd3e8a2522e60e2266485d06491051174471b90d372bafa4997c258d4ad0b2dd61bddd0acc6d5b32773c53c65f68a50af883d3937756a560d409f543aee51c373bcf0a3693a97268e2a08b8169f4a290ae1c255c63f7dab398448273da6afb2eba6f5c3f5968b6431885775e47491aea285e28ad3a6695cfc91e7a361ea519afd8f8f64bf0c87d77ce7d7063ebbc32e2d4bef375a7659d1ac02d95d22a048aeff73d6963a9eeae946c7cc169c13ddc1d205ca964f9c6bbea21dc1dd61d30740765e9a3cda6d29c0a3d38007508a38e3ec42df64b1e2d9734ffa256645dd38330a90701ffee74c2a63628e3077afb0e1cd912b91ed236c27dbd80b000e7b862364138e6556d827b716911e18ee705eaed7b9bbdbc3be35ecf53cbe325ac96d3edb62d6303dcf737b1df7a5a3b2ef68dd19038bd0df42066b9d22e64a465657142864aef90b97a874ad10ff4d68f8c4ff7c2898baf9fc0548a2b95805f20abaae07f4c55e128b7114efa7dabb348cbf22ba821eee47faad06c9d9a03e2be755c2cd5005ba79a2331d4af6070beddacbccd12593330a3f6d30094bbf2d6c098468f9276819ee32ae30d066999af5c9fc1fd4c2b054b5c708949c7d6296484d6dedf56198f0e3fc56036639e7647ca6cca7b7b26e4ef93d38b83933717521e3f3ddcdbffe1f0c016db6c323f4238d386925fc71cfabe7832da4683ab88f22724dcedacbadefcd4b2ebcec6676dbb7d6738622fc960c47676347635363a432378fd6aafe151afb76d7a392affb0482b6397def19641fbb6751a9611c4be2c1cdebd5e5042af185c2636a7efaac195a7617d28c196e20e6dca2dbcf5fd1b58c2fc5111ed0fad71fbca62579a02094ae9001b138ce5fa664e5878330b64c2c864ce3469cb348d4fef3f286625737faba485bbf712abdc35b712d99f97b4ca3f2c6855c5246050e23a7722a423cb3cb6f2f8f6f46edfaa5c6c55aeb72a6b2e25974bc9eeb555411b792f5e18e7758799d66996836ff0167b044beac7f0f0171142fc8c70b4d9786c757d4973e7de26eef59a8959af97146fa3b77e8cf4af0c592f1379bf0fab13636dc9d31d9638a604ee5f83445a096c364d2a52f73f48eee17fb0c419057fd3f06f44c9fae8edc1e1af870707afc20bfccbe1abb3bf1d877fc7c727fb7bc767e727a77bdf1f868c8ae39b4c221a98c281e29171440359cb4d71abebf4294e299978eebef1a67825d2e078f0b0a7380f0f7b8a63f4a47f24f8b7f0b027d7c5c39e5d730f1b26752a764a1c713fa5082f28593bf77fa1e761c5d5173a6817c2104ec27324080f17c9671a3efeeef9e0d9a3a756e80dc5084005bf8c1288bf296f19c3a12355cd955445277cdaf21453e3a015b2bef0704eb4639c2c33704a69fa5ad20ae51c8ee88bba87ad11d514923ba1d4a51b095e154f38e2c1222a4e3eb27779b6a439174764afe7c714e2522127fafa602a041991aaa118b6651ae2e966ca4028745b7478670f8a4135886ad7afba606d0fe5a33d690b84ef441d081d28bda219aa8b4a133c3ea22899fb116d4e5f330f9110da40c650880c4ed2c53c639cd1493c95b14003294b1d4011c133b488736449fd7589173ad2f145ec26b7540067083219da3da35cc50e80442188ca0edd54e906a03bc415a9d129f0318f96c7c9651ee5b76f285f64b3e297842fd4fb7d159a96aa867d77a0811c45ab75ac7531e1f84696d3ab591639dec8fdf6380f63271902b0c8d05ecef490c3e7db657fa0565d1f989d68ce69de71f6b7e313a9a0b3c073fc7148317d2de30ca96def29290376346c471362e9fd2f0fafb077e121843d450c54697d02b8c60e7cda3262adc233fe78ac4b7ed944a03df22bf8eb5168573abe27174405bfa07a7d1446debd8865d5b7a00bfe4a9f741abadf257657d8457ad22edab529e6f49b1ec17fe86323ae447f59153cbbeec82cf05f08cff69288f151a7a0b4b3e07c59840f1f5e679f93348d82ab842f569741923d84d57e0dabfdf0ff282c92500251bd6b7aacdc7132c1335af5de8aeab3c473d53d1ec20519c0b5b07691f122b56e3256249b1453bc20dd9cfa29c52bf92867b1d9d0c96a5af1adef22c76ada184ad96dd580b448124d79cd4251eeee8ed7a77d4ffb814cae973280089d752e6fc1a557bcca73ca784783093bd6edbcc2fadeedf311ecdc1919e09ca436e8e18b1c021faa6baa145460926c82574fc2fd1821708c7a03e1bbdcdbaa4c705cd61b56c2e699ef9d5258d5845d758eed5aabd14b3b340c1509c509fc6598fba81c795a1f06fb654c03fdddeee0d2e63b45cd690d0199fc6ed766c1f7408b564bb466feb2f2a041484a424acf6b7ba8b67baaf10014b26e363a208cad78a5f7f7969d97d1099d3a8fafe0db618f5d526437da3c5b314119bf38ee2bcacfac1ab229f8d98ebf71dad2522ead84ca1627d61da2a33dfeb6fa8a518fdbd5f9008ea1d549c8dd83d247e04d27dfea2eab32b0e20b1006690a5e5e0a6c2602bc4a7d25d74e804822079dc9860af001a5999e4c4ca0469849ae7ef8f560a3c64be305fdc4c12b2ec2998f70ae679a072eb1f24dcbb6887e2626e39bd7588b71ed7b9bffce8a0b21894fea6bd482b98267a9bfd4d20f81e2c9606abdfa5658153329f56590bddd71a8eecd39501468eee676f20a17751ffa3aa8c75fed681a3de2d67db1a677e2b83650e9f7f1bd6719ab5946ce6d6fe6bb364e6aebbecd3ad14d94a4d1656abd335e4bcaaff7b20b63b328860e1400069351fa821cc7ee4db303043d06fa75c7406b6340b8f06b582489502db1b65fe5662b5a16b2db4d04f9ab96571ba9527c494d34a36ad996cdbcc56de164aa8ec16da7201c829247532306e5808a7268a3c9d5a677172e93568dda0073624361d0171c84c2b99ae20a0e846a1fd241a996d02bae521c0e9682e30f5afa08cf2426dcd0910d7833a3255e3f0a1f95d312af4b3c793c45fee3aa6f7ee63f19a096a8e715cff92c98f91c7b91879b44282d8d06db1f22c13efa8f10ce080b185ca810e60f108e08f37705d7c6fc670857636ad83bcbea39d225328452ab024ff2d6463518c4ea44ab1c67ec3ec1f04d507b783bb18c184dad67b42f84c1cf7ce447c1f9deab8b777b6f0f8f41a995a534f47874992605f74acc5a42d5cf92426cd159d81de264e604f577c3d317109efe3cba84d8f449f06e9553132cfa4b2b76bf1579fa542ec9a347624d608556a2d233841772a5e684f9cf115e8a5451ea467c0f119e89ec67085f8b5a8f11beddbea28a1dbedf82da5b592a61ae63f4a9e086528e9905519b365f6addfc795044737ac46eb20f14f95c2e35c4eb2992cf10fa47703e7f0c730c4240a0bf9cb220636a0eaafd5865c072bbb2b75ab18364f6265bb18a6718194848ce4ce3d81df57f5ace225e8d84d2d682332895f30e021c1602feb5a46dbdfd92a4e94fecfaae01e7025be38c3175cbedb6531d5195a5acfadaea0ed5cb25b92daf283780000599ab695239520dcc35e3a41065b301775ddb4788ddd23aae9d29a983676a4d4f1bfc90d5d6111d35528d6924f19b8d507bb30cdcb957eb38c1b7ee01520b997acc8f2af65f07f384cd0e4edebccd6602fd174981eaf600405ecb3ac15900c191bbe48cb222cb5b290ffefcd5f7fa325b66567bf6a7893ae62e6d176ba437258e090f12c629e33822a6c37d43fa0b9207d4e778e2e92a1ef664050f7bf5e2de54104a41fcd3e0fce4e4f8fce81d4e55fb5048d0d9086d3b46ce701e44fe5a94cfa55dd58f099b8517c10f273f1f9e5e9cef9d7e7f787e71f2f6f8b71217781dad78f63a8b5785382ee2881d1671b4a43fd2dbfd342ba848a46c9ee5313585d2e8f36dd81de0fab8c315168c4194ee4b371a340f1d64af65e19ccec316be839ae5e26589709de0e574991589a85371cd0228213b93b5958b12f5e5549388df44ccf32c4b79b2f41aa7e942ce312be8014da3db708021e56449994c180e06188cd8a0fd8395f4f82a92cb3604b772e15535fafa324db8efed7868329856bcfdeb42e05773e2a5742eb0264fae16dc9b3a3766151ffe68ad1e4d52f968d2e3d9d253efffbccb8cf3ecda835781b23d9d235b9519aa94ce120d9857822a0dea9635ffecba63774ac3a91a46c1a3dc7607f5656f94cdeaa3a875165381d26e773f582dc2954f0350da020d074f98a02ca04194e7d9474ddc15b82f7d8ec66f7c8efa5ec7eb1ffa1c8587faeb8d7e64c26a9583384d28e33f5031ba87bbc0f967f379417921cb8d5a5bf7f38067cb3e437d6ff9c90bf3404cbacfc497ea0de4f5fdba06fdaef15375aab50ef0976406ced4ab20c139b994bed3f3b1f75114f1426f0173f17026122522c03ae384bc89f822c88558e7f387bb0fe1b3f83de7feae511a4151f95e5e5686c7dabe85ca325b2e693ec9a63b24e93fc635704db22969948da73bbc9fa0b0ad95feb656761284a97347f77315841a6a03fd901862e234b6c5ce7783e68ee80c9f0fdab643e7bb410d3f3b03e99bfaa445c7a5d6e99d393a723a07fbb682dfa614e2069895bab7789006ef4ede014ddf3b3d3df905282ac3d062286fa0fb12d9d0785d8679891b2d1637571e5edf24f4e3abec53e80d3a83ce23f19fa75a59035d9b67f975e8e5198f38f5bdfecf7e8cfade8c5e21af6c697319f1c55dc3ec7b3b97593ea3b98767a1f7e679301c769e068f06bbf130180c9fec04df3d7ada1906cf9f3fdbd90dbedbdd55bf1f07bbdf3dbbd97d1a0f7686c1a367cf7782e74f9fef3c0a1e3d79b6234a3c97258e83ef769f7486cf82c177f1ce30d87d2472878fe1e7a39d47c1e0d1e3ce60e771307c766c7bfeec410c8b3f3e917992a67a1acf9e3feb3c0b068f9ec6c3607757f4bafba4b31bec0ec5209f3d953f9f0483473f0f6e1e0d767683c1e0094ce6e993c73bc177cfc5e8bedb31a5d29d67c1f0f9a39da7c1d3e1d37827783edc099e3d7eba133c1f88c6bf7bda116d3c4b6da9c7621a0895a39396e3ed9d3c08f704164af9ed58486603e738fad83c343ac741149c9fbcbb383e7c7dee9c033b928a8fdc329563a252f9f4e8fb1f2ab505a9b74520fbc26901a87fa38b4a2bce31e5b4f1eae4fcfce44db5996a5fb2447544725fb7166c3b2fdd765cb0a866eac316456a03135bb2d69ddb903d136d030e74a0b6d38b2718382f343f559e93e09cac1d5a275a5571aff1f49f7e5a4204d58ee69fc28ed7a7e0b8bf2c95e2e6b24d717351c2dbecad8a9d33a5d8b920ebfde3a3fd1f432f4e93f88387e1cbe55255ce8e74dbeb616063430fb830f5552d0e39ba7889cfbeba4021c3d3ae17517110e51fa4f806ca964270852107e35af8adf503081b4a7a922757090b3d4ff0a149f1265b15f4889dc3684f72b54fe1623f48b38203d77dc2cea26bfa2ebaa2a43b801800f31f22364b695e90b5e2712b46794606d1421dc5aedec2a82d54a9533a074da884595b3434ed35d9b407f25d3b37ae31abd6219ce267f182ce562995ca06241b1132979e78fdec0459188ecd98b06055d0772047e0088cc52a220e2e885a9ba006ed517bf7840645256124ef77d719db172817f26001607ea7259d24fe508efc8810a2c4a9cda61bf77a4e828b8aa8d7f35741c6608d0fc560896ed1266153e2984637b45a0292e44659e0b99209d529847d7f41d6259aa4c1c1dee98f530da820610b9a275ce0e6f98282bb4605960ac6e2c5240dde1cbd3d7ab3776c2b5f272cb98e52bc5082b1451223e76d953c5b3894f3d3bdb76747e747276f2ff64fde9eef1dbd3d3c054685020b24d90c2ad9a02633718bd75ab116bad8d6c27640d720f8daeee70d36466dbea22cf10ac1fe8313f19081c2d447bd5ebde113bcb6ac5b58e1e30cc7163adc5b1b27b19d711330397c7b2eb6c14aec8282476ca695803e028794827917e7bad92a92567c61a7644bca4e1459011a023b466e625731a1d3e49456c428d00ac1341678614a9c47575067697699a477f8860840fe2070e4a8ba237d8467e466bcced8ab74959bed2447259270c6a45aa19a2507ec6e9cb065e3b8db266c6e9b326cece373357dd8c633ab9baf6e2cb585b1ef5fabfda5334ede1dbe9d9225be4678e568f6238467029d092035ecd66b7c852fc93ca0ac58e55677dabeca12be08bf21976acbf1e812c2cbe24322659837bd5edcebdd8c07e11bfc03498238cd9869f6b27e69a09bb143f4afc8bac4579334d8db3f3ffaf9704a96bd5ef7065f2184ed7d81df5d6e36dd799014aae993f9f9ed92fa97f833429b8d6e5657c07a98e161b99528dc7f0f2fe4fe2df10acf10fe41a27c032dea62b2d1c0d7115e90bd6d685911b0739a469cce64d55eafdb7af02a1972d4c443c10a2d83c80cc4dd4f9ec26f4f1eaf0dfc27b543fb8fcf046c20cc7a1d317554f9b569091ea6b14364e489563643f244b546f01dd314b3a9ced239f5aab3dccef40ccc99630efacda6bb657edc4e4c9f7b15d8745bcf645bbc01e631afe1b7285b502e881c0439f3bb034ccd10ab6a40d442817c8aee029905500be02433705fc00de1b5203f4fae69b6e29597a65b6b356737accfceaa3d51f9e5a9c090ab537119a796034b2f223c67010fb105f7bdc0eb5b927b7074f6e6e8ecacefe14e5bfa85f8383d3a38849b4840dabcd7cb25e53b4e0a6e7d3a37eac2ada5bc58b19d8786b8c9fe0e8ecef65e1d1f1ea05137de6cb2cd461c7b075a430ce12d05e300f1ba1ad0b43c541c2df92aa70749719d14859034eab1311da89ddcd03c8da402fe0ea88dfcee5cdf381d1527f9be9e698d59c70c8961cbb04b87a253f7daeb477a7b9945f90c32c03ca1398d3ae96aae67dbd6b97bd72af26b362ff01263e85df6dc9442d64ac0ea6ad6a38440bcd5f1561bc482c4dd81b8fb52e894535c8110a0c60acdb5d90a39436c3096324c20a6e57fe19e69abf180c1cc9cd0e0a37ca8ac9932658b56e1cb0ac53b34b81051f24e76533f5129361bb6d97487849078b3117cc1db6c460fd98def2df36cb65286f69b4d2592e92a583599e02888b0744959cbc8ebcc8bdda7bf9ceebd7b77788a6584897a7b315e278c81f01a2a179c462a56cbaccced5db6b939b29b20726fc19c2b2b93882fa3f8c32ccf96fb2d3cfcabbdfd1f0f4e4fde9942525470daa964b4dcb1b9f7fcf54c51fc64c58b644601571b356aa71e48a2a043c116accd6b38835895cb3da79c9b8e1751f14acdc12de3246bdd47dceb7505e7ee0cb349d374fecc6d4ca7a9cc845d357313768533263aaad795692ab3515725b65dd339e59ab94e85eaa263c39fb80d58edc4fdef41db30fbf22ecc56d2b8237d7ef42bcdcbf1227c9dcd92794273b5ac82ea810ee48d4e87ab50bb3f14ddd3b2e61f31329184d3aa16b69a99fc92a4e9298d697243e5f56af531e23d6a38c665bce2d1c6d1b921652fc11525ecf59836e77009a4f2b850393e987d1aa348bc426c562214369ae8f5f429a6bfb921d3ea0aba769afe01039c7b02171e3f8a73ab0ad0ea25a23b5cc1d767cc91246a91a857c12784a9bbbb21daaec1ee46f19b4671daca8c035942752df32af85d1be938065032fa10b5864f9811e35d81ea930ae76ea2628b94770721cae52dbde568c45fee3626f11161fe72d0ebe58d1c8ef0ae6caf09a9ba89537db1dcd5d48f9b6ac442e38983569a1d70ec1a2a1c9d5ec7664e8d8b3ed83bfd51bd2eb2185dd55bd31295b5393458832f332ada128655d6c6f0f7b1bbb43c934e87b960c0e3c9608a237006adb88eb5aa1f4adc8dc62c8cb4665a2665e33cccca860193dcfe6d56c1d4d994bede028a08e81f21d5861fb29da681548d7c7e112897d98acda2fc168062a83168e7e669b2c49955b6c5e37519c638214ccb05e2bc9ca7d9471cd95289289558136b509630a5a03c814bf1704da52e53d2aaba7e13cf59b88fe1fa357c321c94580c248496d46813aab9f690973843b8369e3b0a47083739683ba0ee40f4ee9034b7981ad377830184cce5d5e7198680def542a37adf004fea8588938aca4a304698bd1c8cdbf388de252d42b48178859853604c190ab528e330654a9a693d4a6889c2e66035afe2d0650c1e46a8e0bcb79596fc14af1fd9d575ff22a66aa57f05512b362d5dae760e587bb0402d6aa3dbbac4d7264035adb50c596b49748232357a6b53896d7b62b59d5b561739f72955b59e6bb32353f36eda91696a107a459c67692ac9af87ab9a81b03bc4153204098e41b7cb8a8bcf9a75daa341d33eedc900d7af84c4666c1a084ab141218368ddb290eb1237f465d206505d0bcb6b685cb92a08bd621931af8ded16e3b43c747780abf2acaa0906744510ddcf1e5db945b8a2dc79e37d767b7d99a582ea36bc26541f83e3ac5962a9f28e8a43b6baa6b9588511350f206a96b2c9dcefaa26a2a248ae583db6b7e0429407732fba8ce553553a793225de8c7ad87be23877a8ce027ccaf9144d0653dba87d8ab286179923f662388007287ce25d787de513629e67d7fb8b28dfcf6682bf9d1226baf56ccc21af7b67af1c05d7d1b2cd229e4fe8b444c13fb384f99e87aad3cdc9bad476626d918f3c6d1ee8a1609ee58751cd155e3ea153424b84db6b5b4881139e0adcc5b198233bb0ba3b78e9b06c5ca9136ef11382131cb533d5846e36d6dcbcdd4b41a58b4e2c7d165c5278c04e679d8f095f0039ec6479c7be86377729cae85ada5b401cf0a2e900021e26ebf1a69d847598028d6f5ff216538462293b319ca25ecf8f26e994b0493a95113bd03a21b9cfecf3e815198c562f12ddcb0a3c1daa0612f9d0d98f26e2976806fea2d2f883289b3bd63c1af96e8002b92d9dbd947f618b2b484a1019070e1c7b1717b47893cd5629f5f05a7a32ef0eccaba116b384bac3898a07169f226b6399cc7d39ce407a2ac920da815914d4daa2144927530cf71931e90e0da3079e9a347c055ed149adfda98f465d3f277e42a280d14fdc472898650c1e1f30f9702c91feda11ee727112cbf511f22d1a892ed1c846a78cc510325294f38445697a0b64aa9bf77a5120c76e7ff9c8148238a8129d33b3a2ac84e98d5ad1dc78e0e19c5e2f7987679d192d78be8ac5d1d66119db81195ea6d6b78707cfc1e1fdd070f00c74f1fe70f81dc209594b85488b1d8a3fc0b1a0462797ff443ec54d43cbdca77857c88a5cc81519e156ae9830bcbe005f30ac2fc823b4b5888a855c50e467085fc847e7704465e514023cd0c5edacead8d0045dae6dc51764e09004d727ca7832ad385019f9039c05d16c760aaa173a330ab9028169158ec85aaa6504ef98c4edb080e88994231f61f802d32f19932561572279bde0d7694805a08b2234a215949ea7ab62a143b688c2796330b2e015e56de344655996b820eb62b55ce6b428cef86d4a8f9880a600a003affb8c55399093497b6c764a8bd535bd679b6539320c175943a5b305a53c4cb0fd3883573061e4249dd382ffc493b4080b8050ebfbcafa3a634e4c943579ee5275ecb2a9b3ecc60b288c348139ecb1d9f78e0106f2bb03214594d85242338f7f0b45840db73b18880de7e724064769b6c6380fd7c642b084d77cbb835df99e0fb6a9bc54c02959cf33c65f47d7496a1dd949ff3e8a6254e92a47630e7c04d5e732f650e8788951fe18f8d8bff179601bc7de7f888f9d7914530f4ff8147787083ff01ef4dd52fd07de030442a8605e8dc2768b531ac72f47dda2defb406fe779744d2585882a1402d6dbfb0f5da4e8787ddef7d65ef5bc961c096d616b385ab33ef1073809ae2803e757fb6767c8e77842277c3ac5a9985c89f0d2e798f589577a08f3b2c42bc1e22d88e7e1b9385096a4e9366935a153f96b2ee7dae6746796c5809c0db598f6a724b878013f71d0df766454276053b215ef44a6be87467371b600662b7c41fe352a177dc2b1180ae90eca12dfd40476e56a530d563e936e0307c329ced168e9531ccbbd2db70f6cdc1316537233e272f3bb473c4008603597d1b865c4225e233635a5dc7c2b34f4fc17494a3b510a8ff85562c2ae14104ac09c8adc297a573cff42e3068c8d8ac154e82e99497ba1a68c3e035f80da6d71afd7ca84165a03ed17442f4ef0fb8ae6b76734a53117930123b8c92ce2d14eb45ce4d92ce174eae97885dcd65bd068b6d9984fab552c5edd2ac1ccf7442178a33472bbac3f2c105d7a0841983ce271fa893f8c8bc2c3a00ed9e33c4f2e579cfa5e75541ef604c207421454da47bf406521ed0381608fdd8f202e8a73fa89f7090d8b4aaddac044a1b742fea148da2ebbcb709bd2f3e88a5c8f78fb49d7c244ba1b7d05adb59ee515c181b68a397aaf208be4b53382b4f1973c982729a779abdbd1d27838d6eca1a2729e79babd4da4a301b04846aadbc92e4e76ac4072e3e7d80bbc7e8eef6ac1325125c2547a62fcaa471976cefa5fe8e58784bb4f55ba8386b57533e9d796b4df44da65147f1067cdcf49915c2669c2e55b479a174bc183dcd0da674b0f80522dedff5da49903aaf2215535959424573c8f9bfa3a49d337d98c568b6aad8a9b7804224592b1fd6cc578250b8e4637e15d1add4a6dad9b7a9e5c27eceab55a38c85a2e69948333d42ee86f72496540b79b31fe23cde1f2554c9d7ee287d7cb455424c53bad24aaa5d7bf2ddc9cc4fd2ccd725898ecd3018d3339a957398d3e88d4384d96ef22be10bfafa3e2c3d1757445f5878694f87d4a9734e2facb1d92f8de4f93a5fe6d57547c9d259f4d1bf08ab348b849d07f5f81fafa2c5be531ada6b94350a5d2a45e085eec55934e56bca0bc9a569d824cd35f421ad3a0b360aa40d449fe20675b4d3d4e584b59037f4970f452bfa69190edce28e709bb82a5bc146bb2375785e0eb159d6739359f47ac482438e22c5d5d5bd4949f02b9edd7f7d1d27e9cae525afd32e3b24966b636c940562615f6e7d93262f6cb949ba7f493fefb4a23a9f8a8ec4791f07d9e7dd4bf5fa7f6f7d9224fd807fdf54b2ea711a5c915db57e297fe3ee2f4ba305f67349d8b8f7fae0a9ecc6f9dc266a5ad26b5fa65c8478baab592aa896b35b5b9d3b5c9ca6bb3e8526b7dc6a2a546359bf22e4b182f7e6d4bfcad9a78400b9e3033309bb19f65f94ce4c8a617d192c2563e5fe4b45864e9ac9afc26cad51eb569ca4c46242e6e970bcad4da651f8f18cff4efd7790647444eaf043dcda3ab6b056581f762b7efcdc40a888306bfc93e87ebbba8de65f6e92cf9ecd0bc3db192c751c1ffbd9b9147979a30b973fdffefc62cf17511ae5b76e7f0aedd39dcba3b8777ecce6165770edddd396ceccea1de9d43fcb558902a8a7dcca3a59e81f87dbec8b3d5d5427f3a3be1bf7387f26c152ff60cc8efb1e1daf0ae8a94160b9b9bf32a4f66e7f47a990a21d1a28c9b7c9a7d6ca4ede5346a24eaefbd15cf6a6d8924b71df1ad812fbef5dfd3ece3999029f5b76ca692749a7d3c646e856ad9ea975372dfdd64aaaaf32566a47fabe426e1faefd027394c78ab18102fa27c8ffb0314f0eca7e592e6fb51417dd4d78eb987e89ea394d1c05c5fa98dcbbf9874db151e1f1336cb3e6e365df923d0726133a52ac2229c91751cb19f0a7a70f2268cb1fcfd4b967fa07911b646d59199aa2498531f2705a74c54887bbdaeafbb8c66b34a76af6772388fe28534c5560dfd9cd08f10de4734a1cb15714e292b4746d9ecb75d7564a5b296c30c734c11f8afb4372ea8ac07c1fa8a38216fbdd5bd87d63cba2a12ab32ac39e61f8cd80b6e5cea69777a39381c1fe5013537b1c4fdd86cba439c2b67d42b99df1d600fc6e6252aa44df0314fb8ca43b87d761443340c9cdbeb2cabc0932a2c7d27d2eba9a7b4f2be18dca7421ace416fe7cb6b8d011af939c96aaa56fbf23eb15a3cf71ef194ce694e59ac6f59f822293a8ba8600fb8f46e0d42769426059d75763ac56a49731f554ac87b4623bf77f966d3d481f27697c57c4c430e1e2d2252376688b406072c034021237e95b8b8fbb13515f073b6f2bfcde93bb7179971537f9f29fd7d8c54c4a85846729b44aefe3e323e3d19c949221bf62180c905acf9c5c566632fcedf69343899fb1c492f88c6b1ff445436a10b328410ce830c8efc2835fab082ac4b271dd826484bfc1c33d440470dbed6e5d3468284b703f34ce04b877e82ab1be3989c267c41f3ce2535f7d216ba185c077b7ddd031a3926bbfa3a5e92519f83a34bb333d671c6e4856096878a60506cb7af609ff4de94cc9fddc770a021cc7b3d7dcd5f54a03d6e4d05e084d4ae15e102397056773816fb1c4fd61fe86de8352c9d3d2c877a4f8760765b58e72e05780753769015933f73f25c66b3db301e65dac19c69e6477a5b54cc1c8c79b268b9919bd77315be1b0b539ddc7631416b6837e15392c93a0abb813cfe2ce001a69b2aafb07982ee4df8143c2036e6511d4b35ebeef1d8ed21c774e56a9021448b27465349c54c0e049525aeadade37cf0fecbab1790d905e4b505e423a617f04f2d006b0568cbb2fc5be13b6675486e298842a682f2b88be1425c5e27b7c0b8e226702a4e4a1f8d8aea111339ec65f1f5b91465d57a2ea4983759eda565f3715e897910a569f6715b8582cbe73dd155c48d9739d5ca11a3394fa23390a4b6d8624a31eb3c5b6aac9309d2d7186684f6a5274730f295a9103149857130d5c930643a685e3583eec8b70749017338a037494c9b4ca366317b3ddfcb184879d2a14cc20c33cda29be42ae2591e5c479fa035294942fb825644b359f39aaddbe0bdad5f2e0989659417f48871bfb2b182a56cee1440311ca0cd66809d5b2b51a6ba155d3f68a1f1e4ad5867785903593bbc4f371bf08c1b47d7343dcf7ea497d165bb34634282f89368e7f314f993bd9dbf4fd1c32bec7d33dcf966d71362ce71f6518b390a14bf40a772c19a4b5f674c5e0e7a3df39ea1623fe27e84c35132f7f532b9d392fda09609cb9c6fa91ad68102577360c9dc40bfd7ab405537db066ad90ee0bc58c336104a8f64148d6948c113ded7be14aa5a814a93bb6a402d6b30391cf1a6211dd7b28613c669c2a7869104eb2f86be6047aa6de472042165f2296193dc464aa2258ec9ca67fee327484807e2e70049bfc94f9f0b7e54a43c7d86102ee0e7b34708e1147e0e779f22c761d7ca45d05e8fba661cd49a7150c761e2a27a87c817f45a7a9f9b69fd195e111a2471c6f0029e09c1a343bc243400f7c637adb791ebb20a248ab8135af52519183ef96ea851093506613d04d446aef5d9c433a3f4b027c6e8394f783d313e6f8af08c24c19973452cf9517f800b6ba930c7cc86be30160cf55beccb15e7a293dc5f8b218726c1beac04e385b828903f93f6f27836f1e0c7c58519edc585d78fa778d9ebd94c315a91be9c22acdd942c70c6809c1eb259b828f10dc2dbc696ea74bc9e8372b6cb64ffbd9efa1188f4cd26320dd8540cb35989b37a01ec8d900ac071b856a2c6a656c6042f5df73a8ab000bf534cc6173233b119025d82a438a5bfaf929cce64e4b566f3d77496ac20ccdb7594a6de1439754abca8899fd088ae23b2c1aeed1357f300b4763b91b8e7b4a8a2d0c89733e1fa328a3f5c81afcbd06319a31e962e0aab5fa7d12c5915e1631caff222cb436f9925d27b43b6e269c2a82eae0eac7058b18fbf2cb274c5a98779b60cbd2783bf7858de5dc392ef0bf662c575138e0a58a694b8823872eee15a3af00cebab2c93f135e886cfb3e596020f777631b8020d1f0fb0f71fa2d1a8e35f276c47a6769e3d7dbefc84bc702dbf9f0dcada3860b95a86c117abeb4b1625a9241b6d03a916b14379d43e942783813b94c7ce509c8d06f819aef3da7062fddc36b85a714ef36091e5c9679198b6b522903d5cc3bff76bc3b53e5cfcbf7baea5f65c4bcdb9267eedee8a532c52bf1fc3e1267f3f714fb4f4de279a72d4064b772cd629310411d24eab0880e15964585825f3a2d54b2b5047f0b071bba4aec2f27fe0b093ce453d511f082e593971e5b79e59f2c54deeaf6711bba279b62ad2db33ca8f80093c7f731cae2f2ec02638f1c1ee3446a81c554e01384f1a941d8e8c3addae9a41a126a186b6bc8f8b8453cf0954f1c53da2df0aec3e7a8a46dc4103e923a879ef001139add797b1f33b8866339fa310ecbd0d07206a6c367e4b603ceb7563ecfc76bd71805b671ed29a2d1be47bd8774a0a1c361fc16554d09fa374b3f13ce91a9a0be04b1d652e76c3a367088dfef8cd8dd93fb90444436891dae4abc34f4bdff3ffb179ffbe4060b9ea8fc3f7ef8bcd37c8c3de95878428e32127fa61d117f24dc74dfbc7fbe2dbcdfbe2db6f448e87ca96d750772e86541988f5b83fe87317a452abd70af9fc5ea087d7925f80e87694e3c1e1af47e7476fbf17bfde9e1f9e1e1ee85f2af1d7a37348fbe9ed9b939fde8adfee2d48fd2d518dccd5cd91d7a57665de25b41ace15629ade93d2d840a7ada74fafd7fafeeb4045d6cdf2f117f2a18b705d8e20b8d566032f65c7db4e3a718884602c4f276c6ac220191853cc4b9ff9cfc5491293489d2419fc82c343084bdf3d4223e60f2b2e8ca33f747e14c45b493d209d8925b70b568c6404358f7e4a54a65ad654b908f5c017bd40df91b3fa2be9a953e5aa8a0a4916238b3ad02e54ae4543d4471166eea6766e41734187ac070c70ed04af9f6f647069c21c3726dfe7d96a891392f57add4cfa0163a2db310fa872aa286d5b9c27e5f07dc623be2a74709c848d93b11f9314d7f257288cc9228c090f14204fd8e1a7846f363cd09fa29f71118abaca6d6e0195c3b8c4393c71129caf60c05574b492118a7d4e72b4f56e81d91c54f3a6612e1908c7ce3d0d6100a084e4b6b47558784539580def4b29a2a9145bd7601aaa082732941bcd931b3a03fbc9d779765df7c351a1c809d3de58578574b2a9c09196b251214eded3df8a5c057841022a5f676950bd9d96e03ed6f9313c43edba0fd82b91e9a5670a39ce51e595f49875095949f72a8b5ecfe70225dcb4cdc6e716db55b8e4eae887dabdd37d8203c957fb6f1dacf1a1f29579b6df74cb20df1d5474f9b2a809d14d386124c7c67d5c33b66f0ed184f240cc0473b878e634775d92e8ad31d63f428ef05a94877b2ed86dca7e3664e037df0543f33d4733901136d779db61a11ce258eed089d62383f58c38216425b5c64b9acfb3fc5a7ab164982a07373af953c27d869c3842ca7189bbd52bce4b0c5aa7d6f78d727da0b0bc2861b9dc8edbcddb0575abac9904b87273a6c4fd3aa91bdf95e9d0bf90e3cc380dd278e38b63251e677af932d9e5489c66e3aad305e5f613c7fabe2d9ad3b3fa5457a5ebf59c552b27ec4ad66741c6cecd400fd9cca738a9566c6d7d7157eb7426dfcdc0ffb4d7a23fd50aaaaed7a7a4e976d8067075164b6c93bc05c4235607a540327a171c0df5a88c95575a00708aa3a0094cb5672b555bfb49ef685f83e20be0bc4f1382d235366e339691849d7b3cea1b1d374d35a5a38f354e53e8ce1d6a6db359a7271532c2eb4eb0a8a2d1b582db71a13ba8048965ad9572b466420096ee4b9bac00f573a45d94b5ccba0234d21db6941463aea144c3834c2b0498893a293dbbf47a5dd72fe06c76c866da7a6b447bbd6e9544540b68b7262d596210f5416b42cf7b3dc71b4da3981063c23b0b0c60cdee74355939da0517207812e4dccfbad1f35a029fd5a97723e6ce5acab70c0bdabd2ead930df54612542939198cf21726da7adeef2346b2493ec556b3c2a466c58fb5d860d42571598dac261d1acc684a39ede441c2b0f9ed32a536b572a0d964790ed86f5aad452b85154be1d4aeacb34dcfeabddb13a191466795a44a8786f0d593e80cb7c53967665541f104ab9211abd0a9469e6416ba56d1e4ba1ccf708e4a9c97bed3424b88b3a58fd6e5bcae9eaf31d3b952d097782e316bffcee20e260b31de555d89cfaa022a61d28f8d5d77f15d5971b0f096673e04bb5316c9c0ba750758ad45b8c476a5ec079dc9dfa2b0fe610ac06a844b312a2b5b0ef05c0b9343f153cb8ebbfae3f0803c526544fa6358aa1bf94c7699a5b7f3244d913f478ecaf9e60fab338c66a4385b444b4ab8c660f5edaa2c467e4ea4345e3360ac570282d16c5bca357f52df52d19d446d5a015005c897ea8fbefb53ca0053a530129f5ffcef57b8a3f6683565559d5e9125feadd6a51daad4f26a627085515421d7fe50bef294d41197271c5c70b4e8eab72948704cfc6d3a12a45cd1ca7d195c266ce6a77e2ab80c276eb909ee638b86319e2779a19e06c363947fab9a226b5353647f424db176649eaea324a0b3b22c71760f4d832e4fb49641e9cb880042763fa1dd5419fe018d89365170580d5e593fe32d52150885b06b1669acbc0af02389c500b837d17209be46c40918ea12c0f8d5b2c5aeabaef91000e60ea075c0bad16a83ae8367edcf744405fa032500b3fcaab0203dc457c407cd952b70d6456c77ffc8b114fe1a6c9b4c8fda8047320c6c022398620b42569682e3ceeeed9f5c2fbff4fb299a791d09b4befddfc21952c119ea517ad873c7e84da5018ec3091b5801496a80ec7e4ca1720fc6c799736156bda6e338c7d91d0cd4e23e8c507e8781035e54f9a2fac59c814928a313b970698bff454b6d33012e3f2c1fb270f990f99f787654bdbc12d9dad7803eb5a490d8ae5015702e91023935ee98371b7565623ce58a0d25b1485431c6b234a03734bf751c19b8ef3b445f70e63a876aac876931da74ab3de00d9cf8b372284e2658efd59d8e6d3675773995e22a4c85e6e10b3586aa6980da38d6d52124186ffeaad63a6171ba9ad1302f51af574b8bdd9966ce4c01d06dd3fb77ce5da1440602dd0a4aae9c5c18530b74520d1d316ef7b0ed8a9577beab0e0be33a1c932d7094ddc51ab5925e0f7c6dc406a9c057affada6c723fc609eaf5e4b062e44038a9f9c693501bafcb90aad824828caccbd0e8aa977e8e33bc807f953bd6f19a7e92ab37999621438deda6a96175a9276c5a56103bdab6ffa4067a5d226c6ddf41d9bf064f45504b0da5ed48ac4135af4115c764ee33fd322647a8cd99528ca4fbb9906d9b9d445641fddd3915b5520bf55ddff5ccb9a2a972e13e4340301aa9bd9e386b449e84a4cb7557fa645fa5b3cc17dd615e9fa16304aaaf2d9c0bf5cda6e5967db3f12eb32ca591ab1fa0352351b5ef5b8e821a65a581c2a8d267666b329d783f0a853332f7738d03b1c5011628dc6e77115a399c33f0468add96330750f39a39f76c15bb31667055ec10fc2e2df1da05f5d2fab032c3ab7be1316bdbd5c75959136f4c097824c1e4eb88bd1056177ebf82abf1b244e55df153731b5f95b6e5c736bf353e6b66f3676df989cd8fdbf2a3f24b6f47ef1a7d6cccda98ffdc91d9e3fa63d0c914c76477143785ec58f082937867d77db2174f5d7389b514a6c47a8e8cad849f0749a15d5d203f33389b29715a1239b1725fb21269b22ecaed12952eb8cc81606e09ad164e4d9f2a0ca233f036203de4fd7fecbd0977db389628fc5724be1e0d508219c9d9aaa8427912c7a9b83b8e3376929e796a1d3f9a822c5628520d82761c89fffd3bb858082eb29dee9aee99f952e7544c8120d68b8bbb5f4d7ecb127c479c273dcdd2615e8d1bc1010fc47de0f39d2efb4e977da7cbbed365dfe9b2ef74d977baec3b5dd6a4cbc64ffec712661dc250efe2e22ac92ec3e4a248e3bf16ec229e5f5c78ddc91c8ce982c42348febbdd8ef0705c96d8d12ba4e8e9083f2c31458af69f3dc6df10ecfebbf9f17f03f3e3a73f3ec0fcf8c977f3e3efe6c7dfcd8fbf9b1fff73cc8fcd89f86e6afc3fcbd4f89f6055aced99bfdb167fb72dfe6e5bfccfb52d26ecbbb5f0776be1efd6c2dfad85ffd75a0b4be6f9bf83b5708b8977ac859ffdf8dd5af8bbb5f0776be1efd6c2dfad85bf5b0b7fb716fe9f602dfc50e5d5fea8a9bcead4a05b4308f3901e084a691a703f72b45110b612ee8d404cd94cd698b2d9379807599c7b717199146ccde3541cc21ebf6337c782ad5ef2309d079e7db9a720602f65377bb1602bafac59ba749c106d2d219a0743cf795c33aff1ee1c073002d3d16c30b8634060e6746733358b959a9a1a565e4ee340fe0a5879974694dfa3f17434aa9d6091ddab11dd15c34837e03459e93f2551a4cc629a041d260a0fa5353c2429b28abce33690173364d943f49a06ba9f3c5189931f8fc68aa67d3cd244ede3d11395acf5f1e829246b45e327cf30496867c68a460cd94b9185b51f8aead1c17ab75bd9ea33dcb95cd5f6b29bde7b9eade2dcbd6448a1ee842565fe3c1421595006e92619cf27a0f7cdf8ea552842b4c4838146908ba9a7b3ecec7d80206830ff352cfd7f9cbc7d23c45a6230960b724dbd2c85f49c8099a365985e318f482a62b22b176a3335c87fbcca56619cea26b75bef2616cb43cee62c953441eec5696fbddd8688f9054ff0768bd4503a3f57234ab2700ea31891b59fa56b9e5d7196d7740425bcd19c51ed0526cc0f0bb1542bb7a2ea975fe48ca7e18a4128ab5b53ba0ef3fc26e373593a59f82f0a01d109211835f55e86791cf5bc618256432ff086b7b88c1768ed676b9622e6af985866f37a9a1692a97912e6af431eae72fb70ceb824f4bf328e497f84c9daf0759459c1c67a7a3d6b44155e0f06e809a574edc33e0119b2ddce25bb32eacb622557da6e65857c9da539fb78f656196dd58aec55ee2de284053691694abd2b265e24c999aefb46c117ecdb418cd67ee76b8471a0547f7423413360b63309758301642f9587a6fee2a01a54503d7e605f04d122dbf1fefe635acdec607ff424303f741d59bd55cf7b97f534e07bf60368589f9820d5f9110246b882b7605d4e2279ce2429baa65a4128418b4986cddd8b02e5c87bc7c44dc63fab7cb71e6140869035b61fef024bf85a97f7b245cf1bda5d1f7aabbcc7be448ccdd95cb6e91d1d9ebe7bf7e2e5e9d987a3575ead7579e6cf4598ce433e7fc9b39b9cf1a3f41ae9adfc0a08ec3926571431bf710eab238825ddfb25e78bc32cfb1c33881bf715c00b35cb71a045035783015a4cd56b0501f2f58c5ec191f07226f409562f017806035ed93991fa1dd1895ae40dab53adef41fc46b87c6bf1c10f2c921333b9c98d7e91200c030a68cc7e3040eb661924b3a9432716fc76b3ae1535e0b78c42112dd1a54a20f25bae9287345b0101c065d92523647e96beca6e00c9bdd7986d3058b7b21b21cfe03d8f747d833b2590b2e6c775b3ed024aaaa77b3bab3721574909f83f649f590a2102ab9f920696f7962f962cad19b4ad61d5c3cb8c0b844981980164ec1a5f2e0703b454c544ee683a474b5cde1b6bd05cea8f47fbdd772b68902392a9b311d32a4f7545de7114db6af77578d7fddd477db6ddf6256577f8e2dde1d1db8b8b7bdb732dc50d13cff23cbc6294958e6cc21726e7758b48f30e611bbc21723f3ff0829e37744b02cf937c90d366354e300d7cb089d5b54d863f36499a80801a3f57f4d38f8a7a7aba2f89a7143d196352c8df4f305952efc0739318e10df3df9e1ebe784bbd248bc24482deaf6f4f5fca026574e695886fb788d34d8971d3eaa69e0ccbd5762973873ccae4e9d566165031a7d399faad640c7f62b7f258b5245fc6ca1725fe2596e002f91fd817719cae0b0196db7d5b23c4c83ecf25af4652ac8da85021bfc7dbad64a4afb3cf8053e7467774bc38cc5697d9198bb2ab34fecae628255e96ea417984e1a0d64cd5688891f32ec2489809ee4e2f0d0285d26aefec027c5cd7a6ffb70dbcbe5c7a161fd7720e361b18ab09e71a322c573569a6a2f88092d43e4c58c8db0234bbbbf5da39136f322159badd7ad1e96c92558a19735f55520ad2b13aa11fe75aca70ba008c8f18c9fd100f061252ce25e41969131e0c527f5de44bb489e4aa052eb018f913bcc1047e0476af6cc21a3dbdb43ebb87ec4c4bb76ac5e34acce482752ab9a39131bcd09d4ea24a321419917b4cb369349bf4111f0cfab151ba2690c112dada6e4de93ccec3cb844982d53d31b19a326192903575ebe96360dd1a096588a9da481c3318a0d48f73a7e45c64ebb512a9a6ed3433c6ae1a85a08b3f8695c466205331232944bbad2db7dad70eec8f98aff0d501d7082ce00ab381fdbb4546cdf6ecd27706d556a9932af7132b6c012d61ce72511761a4d50be4c5b259d2933478c859487a534d58b1b9cee42778c1661eaeda4f6b5e2daa050f92e18bf00aa201d72831ebe50141bfe19368c9a2cf97d917f915df6e3d1ecee30c7ed8a63532e8a7406f9ea6c96d4958896adacca606038e5b65e1ecaea112a1ea338eb7db284bf32c61fe4dc85314fb312648ec4ead57f300a0a0beea54f628cd466995b51190990d6d8323a36f49f98d6bc15df5b5307ae7fb4adba2b102dc997aea40cce540e22c90813d554d4166773d05ac3ae952abeb2e7dc51d3331d5774cc4bc76e76173e2b4e9d1cfec760eb7e0ae49d4aff0fbda2ad60f69e9e37ad75aec50bddcb3b1fa8b3bb656d7e85c1415f3fb775b975dcd3d786976d7825b19ed844bf3bebeb6ddea0f7b2fb78fb9b3486dacd54b6519184c7f0a93786e940095134f0337483acdf1a2a8e31898481db9d87caaad570886b36bee150d82b8a608762fe4ceca5d8b2a0107e15f466a645195628fdbe47b97c7e99c7d391805cd2249a56b1d534273ffb3821652a8e78feb4a215ab34849c9c6b41044c4d2aa356586e81a6c0d2811f3d350c41a1877dcc589a41d892624bfa1838feb07355f00695a51a76949448918c692625927e12d84d0f774271fe02e46ded0b675c5c4abaaa2a47a871ef68850da843b7d9dd65d9275eb3ef4e34f4a483dfee989e2b0c63f3d933c9637550a287d29ce3c125203b04ec6506b5251152534b43c24ec70dd04822c69a28e96fa7297a41a8e17f03e9261edd3b8a9418924a7640fa6eb42abc893c2a455f61cddbc0734b353a021cf156e18ebaac12075d3dda683811e788a295d76f0dbd544e4323ec7fee965cef8b5a47f1eec0a051ed4d64f038d9f3ec693a85b2f90b3647120ffe94e74ad24de07ea4f771576c002ae9d1e34a865925c8e240b1ad2b8ed4a4552f4d35882dfb738a65bfb0ecafcf3dbd5659674acba5df683d4cfecba1d08eafe0c90a029f2aa020fcca8ed4f2a7020a8f76fffe6d4207faf8ffd2ec59300c7854dd92d1ad34ebed16a1d08adf24c09a71dcea3c28f6ea384e50099f004c968a3d51a6c63e1897430d98ee2c6c00c05b748a1937982ad0dc95421b7857c565a0f51a44451f2e84fadb6cb1174282d3fa40916d91fcf4fdfb959a8dd2998b74850f343f23d36a6824e816c9d6c6d7662e36093bf8ed318b2931e78de50049e3cd71e10faed5cd8e62bd98dce7d132f6e9130eb1cb73de50556dca8446d1ee948602eb9ba78483de261120f29039f42bcddea8198710ebd9957b6d14e35dcbd719fd2ccea3f64bff102f11d43f62e2e60cf2f2e3c3ce94ea79da5d78c8b38bdea45318f8a24e43d85bd0ace7a2283163dac7380678af917786f4cf286a3b09f675ca0683088e4a8267a35cc62e4ad6cee09cda7e98c14b016c90c4f0ab944f5656a4c27c1a0ba2aac495be6e7eb248e180ac918136fe30de3a1577aa5bcfcfe8b724bee10d9fd6fce5f1fd1cb2aa99796925ea24c0949c7631093ca1afbe3e790a7f2d264af2ce071bc2fbf5caa2afbcf30260bfdfc1cb441eaf947799ef5f34f1893b97a7e3cc698acd4f313f97cab9ff731265ff5f3638cc9153c3f7fece612bbfc7683ce13576a91f3e89c89ed169e7266ddb59a67ff40f8bf65718ab04e967fb48b4d6778f38f497cafc0b0ddd57fad3d675f6cb71df8d4c5ea4ef1010b841e31fa867cfaea0be6062280648f148dc85595dcabca8ec9d47b7997c3aab19c86ddd9419dcfdf10dd2cc620730313cf78155eb1b7593867f3a03f2ec96d65aca52c6fa7de5526b277ec8bf0083cbee7ecda231e88b25e86d1e739cfd61ef12c817f99857c0e62335b7a5c75e2cd3049bf67fcff5d32fe3bd9fe7995edbf6121bb3351b9ce270aec2b3c96eda4f24628d4d188ebb29a9fae99cd126fbc0de58c6be0606d70ee932675801226ed7023ae4169c1394b05c099f534624916cea108eda8ea76e7c0e8aef4fa672c62f1355c49796b451407f6d51e3708436046218f0f74e00a51ba060426a44ec1704c78a3686f4c8c2c6102a22bf7e52fe220a269d02aff59025d443926d1417b79221ca07629d7b28d5a618ac1a260c7f841d5ee166cb7fd0e4061fac944cc6875033653cc07e4944feb4dce76edda246b39cdbad84d196a274cb01297778d0ac274fddee0db7f68eb0f902a7675d071781df9e5dde7f7bf64387a34eeaeb6cf8c638ed80d03ee36696098911dcdcb0fbabb881795e6585e1eeaac717ae2981aa4d6a84880a3b16c161e731e29ba49129128d574933c4a69b5e8d51dd9460bddde83eea9e754e8e94d1c3b6c077895e3bf0984b7371e0c1078b5b71570ac4b9956f31f8654d672acc8c173d5c57efff86b63df3960e061ffee71ca31b9e36c501dedc17a497cb51497d9175b09709252d6f9f17c30f05e1ffffaf1eca856ae35684a91e48c20cb19aa3aef2471da43d000f5f839d8127f66b787d9dcb8c69a75460cac0c83c73feda8041ba42bedd75aaadfb37694b26663a42ed9b5030174a34ac91bdab6942cfd05e7d94d2784d8098f28dd0525ca203adee108505459dfab5ced3a353b2464f76c4264cfe662af2d2711b148342da37a975fc3983fc837a496e8be7b729dc7b7899e9a13ab4f599d617b4aff9659ab4cf4eeb4cf54496bde72bced79c3f70f9ef8ab384cb2ab8e59777aba5cea2305102799ce50659556171b102af932bbf96032a0e744624e486c6eac165a8802b4425649b46bad74fe670707cc3d2dbe48a8759c97f839a11541dbc8c53e74deb4b29e83c4280a134c768d6159ed170c235bb3d4d9164d7bd41014c952c8827f94cebb2b943b7b531e2960be7a77958df5340dd088847e94e75a3fa639435f5b1660924b0631d8a8acf52f3321b255909055f8e5cf907b3e2a4b624828ad4053469b1a31ebf0ad00e3f5b2f3759ca650b1fefdeb2c13b2b8595e4148eb138b67badfa87bcbbd28f4cd721ef12c4906835d8b6573a4c39a62dc3c096a5a0f3d092d9a5d9d7c38021a22d4bba87d26ee3e09db6ddf7858b44210e4349d8a1949e809ca31296872e08d47a3eb1b4f597a2fa9a6edbb803f1891857b3494cdb5bf64125fb82763017b665e2c1f746886defa4b25f0dd05aec007b38740acaa89ef381df1eaea210dc1f25a38aa956aa6c11e604ee432e54141c24404b91f2682e43c0a7220fd94d82c48cc198a0a9e673ce007de3a8b53c1b817786121324f1ea737b0768117854984e40e2d7b7b3d6fb8187ad803e7c23ae855b0f150f0d3d0d664165df0b38d7683a0031ea78b45aeec98a2fbd0f0758502dd7e8394a811058264d05a9091e63802deba7db42dfa43cf1c204eb8c8d4d5a6a69f8b6c7598a582674975feb2bc3a7a87d577f781e8da9d9fdb709012ddac84937aa341449a430b446bae0a15fe1ef8051e0f255777ced6210f45c6ed5c8fedbb49250c37f8e460d7b417ceb4c335d02112d1f8fa07014b864335a4400cc7aac0f61e7055f02113611298ded432c9f2202ab189ede62e89be351eba26b9aa0ecba19f0fb324e38aee5005e7f15766425cb510acc4bcf722a907dea96630fda8815bf48b179188afefc26019d94472f4410a78479e8e26c8ec264677353aaf5d72ee0dad083de0a466988812e1c991eb1cdb41da397ebb975996b481bc7aafd459a48613aab74a70471a27aa7a1f721ede9e2e1c27e0349b334c3ac412cd31759c85f6b0346ebaabc37c19ae19da487cdffcdc712836b74055254b99323046d3f66adcd51f54c1334ccc81fbd63699da72b99916c336ab9718bba357647a7309eb8c527bf55c72c6792b819238c2841daf2425d7f54a62d27ab13bd2a6d4b439e61acdd77cd9e080da336ae1effaf7753cdaf5b6ba495b6fd5e96fced845571de3a97057fbd428217dd4f072278ddbbbfddd8d22e91bc525396afac0374fb5074bd343477984bdfa911e751ec9fea8f3187ae046d7042f4f02449c15790f4976be071c6eef33bbc596953a5f2a325ff5d91fb5a141953910d01fb576dd93d57b0898e75a2fcdddef8f9a3b2e4bf43eae2c42ad6da177b38c05f36a3b371e8df4666dcad6f6ecebfd188ff69fc83de80a6cd0b9d16e3803e001ded08de6e782cd3a539110e4859180459d5712453b1b2e2f18956a77828db69b0bbccb248b3e7b64a9a95443b642756fd4b364ace20a258bf12f1ef933bbfc1c0be0660fc324c90a11786996328f1439e3e72c61912dc9d661148bdb6044aa680d925f86d2dec87f9c7b7a545adeb4315f8c4bbbf4ceecc2cb3c4b0ab9e0225b07de53391e0957fa113a59647c1578f0988482a1bda7a37f213df92f7ed08088a6e395b9a29e891d8dbacedd71964ec487a307bac28dc072d04f11575607fb6370cef2536378f0fcb9a3e9cfff3b5b602c9cf04ab52014028268ef08520d1921145193d674a62d3da9ab432d311866d19430371181f5ee28fe1744a95a7edb589542dc1df181fb43a2a07a1684144fbaccd03a03902b8bc35c8205b55912eeaa89d2bbf2f9dc17e43c250c3bf05a628c096f27601078a3616d2a2027855d5cbb884ece05b4a077aad8eb86189dc15eee37df60b8c4f21fd737a6d268a175f7105cf8ac45b17614fc84c9968970dabe7e4808a196daeb9f136e48e0ca72bf1b648ce6f74eb0faf601b5cee95a37799c1f5908abc2f70f06ce0cacff50b5e6f37f4aecb81535e2252b5c2ac96da70f1a4c1f38624d3c0133bc5e662203218fbad5494c996f750c24a4cc17d99ae494819a8424d4500b19695009e5c48bb2a45801d288070394f8e65ea6cebd9c40433427896c99864ee4ccb0537457a08d92a4a5074bb42949425638484ac2c9c608e4dcf43e7823417a03130b388169839045c915302ec9571afba161e424170d3f3585cd23e7a7cb6928b24cbe5304b2fb4e1348dd2fc344b83d283d4cbd4bc92aca1287a1732ac847600c67584b1e1f54b7c4935b9771574bd13d46b392f22df0216afdbeba75f4c6570d008dd5b06a7160c001a4ae90ee0059d8099a630e47b6eec5792fec71dd714f7ddabb59b2b4679b947572267a22ebfd3fd5e7fff370a988bdbf634cf2fb8e41c9e2bf635495d6aeda2a8560afba232e29fbf71126efa01774128aa5cfb3229d2336f498371478e8b13df9b724979d075e29d352083324a1d39cb32b241ea5641f9793bad9a7924d2986c13ad7e751c699f14da1ac3c718cdf36eb225fd6dd799c2694adb4093e7e595c5e26ece31ad5aa18ed272ec93a5bef10ebe9cad3d18c085aef215b235c0b855d6ff897915180576d50a12716a79fc181698431612551c62b41373dd8d1b6b17207eada5839996ed21935397e78d790e56d4ba9d81be34bcec2cf93e6c7bcb168296e0c3ac513f8b22c9548708712ba3ee49298061f30cd299b99a8f3351840024fd82fa389991d00e622c9328e101b8ef1a37d0c5667b5b6b8ca7df44b577b11ee5a046e37aa1a0f8d08a31ca6ac96e19b76ab3939de3598144f26c6dd63ff079810c968b43796cc974ed491fdac234686f536b319c9bbda0cf124ff59724e31cdc0202e320d24f506a2d9a4e3f304ffac49b3f880073938d9d308576e1271d7fab159bded78461abf258f44e352c7293c6a4517e8b4bbad65bfe2544cf804eb90081c13c9ce48aac209ee96fa9c5d330eb631a8db516e531a0a73534e32c9bd8d2655989793ee10183780d24aed68a18332c4f34010f52618957812833a13e189d9af589d3f92d3d08f9516359ae633b31b0ce578bbdd9496a52b244b276bd031494cfcb650773e4ca6c56cd21d592d9b16b3ed56fefbcb52ee987ca24be20cb430035d969870f93ac76559ee0ad59649b2b32228f5adf461c93893574e9af5d6a158f6163c5bf53cc38809e2c98bc8c3a6207502f7967a17488a4bf266c7f623b1679293fe80f67f48317e744f86bae1259257d20897e4b019c187bb317c989f83ef0a8c21a46f500c313ecdf800afacb31b75f38597390af7222caf2df2a9f3bab31ae73fdb7b2f8957b17897cdd9390b79b404825759719d65374af30aea304dfa66861ece49dc31f4f691b073d99493783a44191d665882af819f9066c3f124b4811087e3c1a08fc2bdec178e27c36188e369e5cf89f08c1ea294642424823012d9b588cb12712248465212c9c53a4231f1461e318c0e9e8434dc112f66c8f429516601e349fe7368f8a3e130b729cd129ae91d09a7f9de78464279324841dfa004b2839225556f26cb9fe5bbc970b8c4d97439539406bd42c50f9748166022d1a67ca3280f5a581fe4929cee0ee2a0b205c1624ffe318e2266f2196d8a5048ec04b80499db6812fe9c4d4279dd4f4337946568b19dba53484411a395cb8616e83032956f67e630c6189394f6a32ea791a8db69243a98238e838824688ee6f238130f74971e381b38f02ff19f5b4b59f9018def35e2b7692a453388917526cf68a48fc3048d4864d8462cb92bc54a70cd250083bdd6d27af96b6f3c53114e48cabe0859323425100a272d8d6c216bfa45fea3fd3bbcbfdba1e37e170e25eb29912092c7755c31522a08e274fa70578a8a2e56f77d98c62bb0897dcdc3153b7e452b6dae72d3651ce038f4c38e88d792203624c1999c379ce40933d19d6b20d557f9ae59bb4f6bff0de1fb5ed45e2367f0ccb1216d80ab4346a62a1390899864a6611e14a57d71152609e3b73bdc2feeb165b76dcee33ccad294450261a2a7a1e2e13566d1b9d80fd0c257fb659897aea5054ac4b29d1d8210656ac099237eac8903f56a505196c4fbcb9770e459af6892b9d61131cdcc7517d2cc8a82729a39521f7915e88bb0905c0a380af3ecc6836c371b15bccd69744d17adbb764e17cdbbb653ac0c8105e95a22cb4e57eff96080e6740eefad6c4d7d3426e217fae4e9087eec0ebb54ddf5698b4ca878e2f4917834f69fe2e18f650b380569b414cc41f49cd24a53b648d8178fc87fffccc375e0ddf070ad7ebf722c76b31baf249c7e6a755190c60206eb76a75602a3f06e1e486c5a976fe42656ae6b840c6ff3cee55f0d06684557f5e55585b0bc4f4723f8b18fe5af9ff4afc7f06b6c5e3e516bd1a963ace75bad98344b6aa94d81112affa53a1d57a3cf10dfdbff21fa21c58f521253d1a2784cd38aec78a465203fd84b06e4878c6c9428ef0a659250d1b2bb2b24c818500f092577030106133a9a243fa7936438c4e13499d12b94fc80b2e1fe0f111039b92c1b559642dd03cabb486687c76254fc9c4fd9ec200d98249d27201aa310bc4c49a468289f6501940ecd14e540b4b7eb033af9a5d689c51e76c5159c29c77456e2f6412888dea960d5058b2435041f9f560e28b36607a50a70eb5aa25776b5e4b20a7ef3f5e036f87a8778b86980e5711646620f06b4a751e29e79f04af27721566dce99968437f2af54acac5042f20cc234ac494211e84b88682e01b9861c5cca6fc113e015fb99dd7a104fc5ade8cdf01d02f24b75fd4027dbad00f353bb2f8a464b358d963832c85c494995fcd69a5f06e101f31d3a3130e49ab2041b0c7237430be160749d4b86455b899dbac2660d15561c7dba405f6b26465d22d1b618dac05b87c01bde57c2e8196e21cc077dd4c4bb0ffaa82d0a7740d88ebe24a70d131afddd3e99d72f85d6d01f8f4625117e484fff8e7410d76e2e731d2f1fcc09fc14452ad8eb48c7ca7fac82bdea58afe3e72ad6eb73c9f44124d8057df294aca977d27b3a224f47bd556f44f69e3ced85bd274fc993a7bd516fdc1bf746e4a751ab68efa79147ae7fefd07dfcced07ddd0977994ab1544bb4ab8ab465e622e311531f3e2cc419ab65e6249ca655362f60a562a0ade51aab8ee4f21a17325254a82e3900541424c6f4fe8a8973105e916b9a218c72fffcfdf1bb77476724d78d1eca8ee43e22c4e8a6c4535be5e2dde9857c9c19e5bf5c278ec95c496b57718ac6cfc8931f847f7efc7f8f2edebe38fbf5e8d1029315ddff71b4b7ffe3e8072d5a0c0ffcfda726cae9524e6db5c628242332aed052dc74567251f235a4e4dcfdbe1af38b77c7272f3e1c9fbe6b7fe1e5d7579eb9b517e6c25e905cf0ec335357d3dc17d9ebf80b9b4b18be8ed9cdcbec4b6056f293fa8de6b8a3f17528965ef7983e9cbd38fc139907eb127fd3776f8e5ebc929f1159e72ddc83c1fe8f233de05761be049c1878fb3f8e7afb3f8e3ce78db68a5f49bcdb80c1eb3089256c36f33f3942300b7c69055be2c0f3023131010ef3f82b534156b5423cf7cf4f5ebc7dabd4e26e3100862cc683412de45ee27f6d0c4d83eb9d1990d2da007935c0540e305596e9f1579bc14bc16074c0bb467aa081170a02de35ea0317be0353ffc38b77af5e9cbd521ce72afc82c62312b567a341a663951743f6689fa4143d1ded09ec821da768ff875a919dcad0eb7943f52f57ffca1eddf874851f0e3ddf1ababbd3a3fb23d2183e7d6a8b607a146c0a4b14fa6123e4961b3aedbf83cdc7b76536d4f757a6b31746f0b4fff42737ce4df6e03837951d1e6f98c56b03cbed367202a77c6b6aa65688a472f2f070ecbfcf45beafeef1c7237591eb7b7cffa9bac8c7e3a7f22a4fd14f3f41fc7e347efe04ff83eee65d17a8a85fa1f2d20cc18412e25a56f8425e9c3690f792a6361cb59c881f47594aaeab0b774e533f092f59a2d135b9a5a9bf2a12112771cac8572a69d96c9d5d33fe5e21273f5f6645327f15e7ab38cfdfab77985cc9fb9a7d11e4523f1cda119d3857f95185cd4e0ebcd00b4ec81bca7d065171d47c20108efed66456e32cf5886766e2114fce43fe51b94f88e7cec1239e9d81473c77f81ef1ba862f790b158da73672f95b8ddb9b6172a8a984847ca2618db6b8c6e414888fd03f397af7f1e2f8c3d109f964e98dd07f71f8e1f8d3112866a7a17ffceec3d1bb0f17efcf8e4f5e9cfde78c464a5a4be92778fdeaf8fcc5cbb747af667409bfdf9fbe3ffd747476f1eaf8fce4f8fc7c46bf0e06fde560d03f94a09363f29636efdc23c2fd50f2f06fc8f260156c4af7fa3dedb8a40b3f241b7090eebac217f26dd5809ae9ebe3b76fc925262c49e23528d7fbb725b932c904c3db4ba6721cbe955b83e6981c0e06bbfbf5a29033b1a77cb54b8cc90dac2852d10da77a65cf3fbe947f67f49088dd949597c43582e3a66c0d4a6f3c7a4b9226f5d01cfa8e38fa4ee009003e8838014f167eea17746ab6d9baee773b643717da82d4c5db172f8fde4282e41422c5ee18b59edbae5bccca4f9989a15ec72a165f484ce21e9e5dcbbdf443056f6121b2d75954e4417f0c5e380567faa0c912d370101196020b612b2f6527e042f08a25e16d302260a4a702f2ff294ee7c1d2bff4dfc8734056d93c5ec48ce7c19c58515aee87fed9f1af6f3e5c7c387d4f8a9cbdcfb8081388bf95106bdfdf1cfada0fb55f1726ab388d5721783ee8591f76ed84064192f8cd5a86b10e98ca39d1e069edf4fb6362f193fce1aeb13cab5d184a8e4ae2a6c0f39a04510204d1094b8b63c1569ea46e62ff7dc199a34099d3cd2289d7c1e6322bd279c863669239049e6402e4d5eb9175389fc7e955b03f2a8dd3e946ffdd7b5a1a0791d36bc6174976f3f0c64ab2a29b25670b9d5ac98a2feccf93acc81998aad48b548aec7ad95b165e3353664333ef8defa398ee221c96df4a383c57748324180a3a1e355209b7b4b5823e9034b0565a26981c2044bdbc5ab8280180b3c51b1041f1bc5ea7cbee5af86e0dcaca9288bf8d066985dc71987861688a021021bf626449859fafc204b87590f91d4bfa634d85b2d1d33cbbbc12df7ffc70f1ebd9e9c7f724dcc5b7bb57a32398b0f84a5e9640e4cf68013f802930d7e8d9e9c777af66742de79aca13a1af48a725905c928d865cf0730a1c5d546b2bcadd375053e4dac1df27f6ee5b74b1cd2a198542ac2ae2089028a589ed9dfb976e0260ecf6a61794c823e7c652914d9eb18516d1ce4bdcbeadcf9c49a2e6d5787f5ee7028442e0c5064bd4140fdd25797a60133b067b174b5ddb3a13afbb6ff9b9f6f6b5ae6203a292923b7d572dac730e6b9d94ad0bba39ad46d2433522d5a6d34e6d2eee0b3f4a620387136bfbc3f6ee8257fccb7e2b9c5b1bbfb012972cc959efde9a45899b97510e9711cc129209775e477f07a24efe2644fd4fe5db5a38d33067510d814af67911270949a8b051404801cc912053970f72d923f989473cf3816454961aa91e9ebefb7076fa56a3d50a8b4aca7d4673c08a9f8ece3e1c1fbe783ba3899c50740f46d338b3269a5c96ca36ae0b10b46bfadf0c0a7f63f465e31788f69fff28a1a34dc12fe35c64fc76ca6693eab1aae768aa3ae14136ce6e7ae0d9889a59822a3d94bac353633121d72714d1527d1661c2cb7212f9717e086779304019f2d645be8413e76192218fb37512464c97606df1d9bee43782c757578c070c1286b2404f4b8d812829942dd4b65bcb305f06491681b1862f7f9165960ba728cb0514a572a76bc5b2840051571573b620198fafe2b42a54bf41c25b6fc49410492f3ac51917048e5594254eb12e21b9523fd917ea77cd79b45ad283d6a5c0fd2257ab8962e441da5d790b52361dcd484ad9745c59a9c9aa478b85bc6d5bedb451532a1b5c67eb5c6f5549bad2bda95a45beacaaf15dd5f4dedb9a156065a9ceb54caa1ee1fcd6ded85e247b537b556b9970ec62dac8cf168b9dcdbbaf9aed3bef9a1d94259942948caea0b91a72d56e18501ddf9be3fa7fd53dd10ecd536928e415c0e41560f1feec2178ba294878f7e2d3cb176717af8e3f1dbf3a3a2312f9a67807e27e175e5f86fc557c1d83bdd6ef7b89170fde9c673fd5f4ad20a6fd6fb44961125fa54a5f535deaeede8576efa06a5d9ce96e2749b4f6526f92bab373d5c3ca7243e2815774b5f54949c2aefb3971b6d95ccf0d8105f41d847ee8bf3d7afda1fcff3b25d73aa166cbebfabaa83aaedd5bfdb79fdc37472f5e1dbffb157633c27080779fdd372c945cec3f90ea7216cc6ecdfffa9c1700a5195d29985da114fdf81396702b1ff77f1c6109bceaf947487ba19e7f82bc17f0fcd308f25ea8e77dc87ba19e1f43de0bf5fc04f25ea8e7a790f7423d3f73157cab072bf8e49adf7e4f3ff10f4d3fa1057ae1fc4d98bf4fc25b25095e367ebc8e399b079bb224a90fe2562be683b06936f3448a49ea1769fcd7829d43d887e339f57ebbd993b880f13d150ac2234cd2b0274522e275c2a023aeaae760da506f6048bd3d6fc87cd5c6f15c76210980ec8c2d94c17cea5f98f5feca68ed977f19a77335ac8b9c894ff6bbdacfaad6f78415bf43c28a6847c28a87bb48f4fb9a39fded466d3b11d4e6cfbc6246e0f3f2f678aea48d7590c135adf44e609ba4db6d9f1da4838150f1541dc041381007c284874723925750ae7d5b9dda384023b2ac6a28d5ce17119841932c7d9b85363d74d06c80a8a371ce235734ba76464bea530c3aa65de256bb4e5073a5c0b13ba3e49c0f0a03bf881395f0413e9094f6d1a80a77e88a7b61c0499c0bc2ec63e5e2bddda69d8947768c046f1a306053159802d5b3c105584b11bb67ff40071334228bc6cc4cfb5a5e5235e974f4d0d09606874deec48023b2ee0025cdc49a26aadc79f4ee65215c826fd2b55f788246a4a8f5a557090049f715a4fae1742df25a745717877641526d20a0e17958d8cbeca1413b5d3f095358927b3e8fe7ed33763cafa4e7eeac4a3790e66d9d15a982e4ded673959eb130127ffcb3da568fb8613caac09d9560e8f6ee7c99fb3f3dff7b389a0eeba3918a4af6b811946c3caa69111f3f56e64763d78e3845cfb5f1d1d3fd7fb2ed118dfc43cdcb8049bf0b0b8609ea503bdaa4fe13a6b2fe757b42ebacc094526172ca33ff4ab2a42ae92df02d2197b43894ca7b50d7db1b0763c76b576822854e6724a323925336c9aa9c82999b53309b918226aac549a1136b6817fda865ff12999c1eb2fa9e374c6da88802a48785247b3abf5d1be308f97df519844b577ef231b078a1ffe6f4c39f8efef3e2f0f4edc79377a4ebbc3992e57b4eebb2d42cff438c629ddd3521c258f7c64ae2dc5a39c746ebaf5c00306264ed87b8e57d5ff8577897a248e71a6ecb1eac5e7f047287a465aed9611019b6e5a8fd7bad025a6e48f2f43e7e2a8faf6112aaa8370a530c06f6a1af9f20bcae5c05fb8e64341a0cda4d0c064c7ee67e40629a0d06994544ca9637f45f168b4565fd10d2f820f6c324c9a28f691e2e8c09447de28688ae8c7cb4b3bab9c14c9802c2697810a2140772a7989b8e18a535a7a7f52de2a0aaa827e27d580ade063e7cae133c3fde57129e670ef71a3aca8ccf713a0fbc579aa4f30830f160e9930753fdf674cd38a8005ed9971ec94c61e0fdb560fcd623a074d09f289d99ba0bbd5f592aebb2b95215fc7ba19c9f7288bb1967e93913418e182e674e6cc6dc844a6aa54e63db6d475e5d59aa7c761a855dc12b9872fda695a571cf0453a9e7926436c37b8ed87434c33a1d75953eb76e90dc0efd574515512bf33a66c97cf762a5ed75518969150c961361829b9498e8efcf9d0fbceaf33c104afe909082feee1b0d17c075c863c96bbd721a8317da9be89ae5c174569fd17d839ed6172a4ce25037ba13c02e2ee4becad75e59ddc3b2e73bc601ce64b3b29c9564b943a28637a57bc36afc6e43b69ac5ec5012f658493abf799df1b771faf9019f7016cee1a874c7e3aa9c29200d737f6c939a8473b4819d0a980f7fed36e581bc9df433c9d6225ec5b988238846d7eafc350faf1ad3fbc6fef50d16fb9f3162fe42b747aa4765ccd73d3c9e659227647e3cbf73a892ff67cd85d2743abc439b7928c2e379e09d9d9e7eb8f8f78f4767ffe911ce7210d1f9f22579c07a75f6dbb1469d5dc32cea5d76cffa5b16ae7344af4211b6d5f04465388ae7a03691fd4fea817d2a091037e12d01230a7ebbd1fefa6a67f5b670774ffa633deea2c465148a68899678532a0d3adcb8d509dd6ebd8b0b7511a89c77493d022eda547583b824119e54eb69961b02167162562340824a6a34260f4273a61517cbc92e0fb374ae8c5c1d243397b4c31df81ae6f33afc0c348657967fef3528e4358889dc22f0a6af0c842a4037e72b4491ae19012c48862ed96e5142379a43d2d2c435dd94e49a8ec99cc2bd4656743ef5feed86df3e32acf87992096fe6c477edd0bfd750238c299ed3a997cb4fc9f570485e8542125c370813151f304ce7d90ae12aa4d0e36758d349fb78a6b2347b8187bbf0ec32cc3fc995ab8d4033208c2e266cc228f325c3920a1bf02e9e430c675f8e29773247cb9f535d0362bf094ae95a072a339df7295d0c0668d1a84e0526fd9115a376d55863d21fd74fe31513ade19b519aa9214b5e345b6c9cec582c1b8de928503a361cc9284211dd58b1a5f695ae46c808e84d169305dda8350b62027d065909c7dcdab02aa6964bc66611a76192dc6e16342ee5902ee374dee581d60a9a6302ba2cdca61754e2b01dd1a46d4f909952829176816a450293ccd1a222bb557ba9d173f0669f7002dc6a4e5fbcd4c7467ed1adc79a938e83629472dda788ee96518f1b32ea71590dc7d20172402b586bb2aad6a122e06f91c6ae5fef520556817f0703c4e8f8d1c889a8a16eed5b6b96fa85ea84c29275cc7266821daec2b58a7a17ae5541ca6e582edca83ec9dc14ec38c55dc48e695cbe97a47ff3e8ecf205b962e22815fcd6497e0a3a03d88e562b50755753b2f72b26644bf25c0e06c2f861ab39da984430450e6e27f20d9f281d2894d2149314041af08a724c747db72953a62bc9dfeaa95a46bdae82089396512dac0918aa97995b5429eab3cd599350737c4e3a562d3dd00ee0540428a5203561faaa120446a7a86e1878e08cb174076c86a77e9959e13aacd400c579de6e530b65720210d79ae87135602292fc5ef32a98d416aa6a2afeca7e31803dc10aae59c20473d752f26c8d4e54a507008c167af4d531aa814d7d450cf4e07bf6552f1d3690215fab27034db61df500156a40655b3063d55336116ff5c946fab01095a055e13f7205a77c452e1b0a394838484ee874468ee43f6fe87834aa30d161b72e59c9a3c476eb8579ce38545d84715270e62969dca71d980b10bc0a7d901a1c14f2abdc0091baba7218ed3933115997713287fb31af23ab79ccc5ad91b939870dca697f645896285bad0b11a757b43f5665ea685c92e190f99020ac0bb7990f9b777c1b7eae2c39a082ed3a52233d233f9ccf9190dbebcc4663c7edb65eaa8eca25266f11c307e7205e0e3e6829b3d2a1e3edb6ff593de1c6dd2c575991226a1dccfb53a442dfbf45020374d556af53b27188dac34db1ba4d194a0d33c0f106f4acaf648308835a56f75debfcd0c0669fd2cb0abf6be4ae66d3c27ad068cbb7015adf6e51c7769badbd510d92777a991aa840df839deaafc9b1fac62eca67db4c0d4c3b3341b84b41bec0ae294e0ee08c8e14416277eb5442d121ea33174e891726921fbbed39851e26ac0ecc232dae3a96482095bfe5ce5c55f42462ae7a458723a1cc5fa4865ed2c413bfca214e22ed8f2dbdc29a2727dd6efb0d297657882fe6e7c5651ef1f89261399e777274cc2f525b4c9d2a5d035160e5aa369c25ed8ff559ed8f4a793edc97cd40ecccc0c618ce9286c6c9852449e4ff16049d8dd6ab54892adfd654311af2fa72c76a2768bb6d96c045e5a4c9b8513161ee021eddcdb9011bfbedc583bffdd0faf6dc62f143a390700eb4c0981c02569073af4dc05d433b29fd8dea4df1af8d2af448853dde6e351a9f34dbd0c8f0a696a1e4831ae6ee31f6619056feee5692f7b6c09394527a79c05ad85452648aea085249059a203c35c07a01fd03a06cb717b5a1bd7049aec664268a3e340408261061c4443d39d26a829fdf0c06474ab69bb6d699aabcbf557f9f1d900312df6ebc6ab6fbd871b6ceb838e5eb65980e067df5a15b889c2e8eabdbebc4d152b80b27c92c88682f2983fabbf66d2179d52f08c27439326cb96d4614df802d22aac17c51eb2bec342bdaa6de6fb5ca2f1a3968deb961691c5cd319851092ffd730927183455a9df87e17eb65e47f2cfc9cb23ca7ac8b7248b2ec73b1ee966c4c6744d0d1ae244a904daa96eec9e5a854bb467751bfd19c773b28dc6a9b5bdbe7706e14cc95609b3ef098412621799f872294172e3c7451916d26cfb6415d34e5f02d661107037720f94d0ce85f8335de4461ce8c0230b0eef79469f10ebcb69b1cd8cbc16a2e91c007b63f4334c867a026ffccc2cf27e11a1b0f559ea557a692fa65884e0cf1b634aa31eaffed36d5284605be65a836358c09d7320839f133a8f3bef3de3403a96883df7e0fc0396b428d6dfe554390a0b89daeadd538578efd2b1292edda6e6dc0f47d327e86bbed160c4f224188d37e5fe892f032519eceabf0333b0ca325fb13bbdd6e7f7363ec28b6836fb757ae3c4d0baf23976ca8c44c10d7366bc98e1a9594e05a69021d5a3389239d7fc9f14f0bf58e6778121e848a57890314c25a7c428cc492a3950090911093b0226ca8a89e89e4e7c21a2eeef25532e82d939853a7550f2b3604b946b0a6477775242c02238d30e1076a5f83dcda67679a1aea304be95c2822281b0c52c3148320c621f3490698f2354dd1781f938fe698c84df808031c937ddca7f4a3eae72585d2c949b8de25d8f81dc0fda52b80d4bcb1d293fed5709572807f051ae4b11cde5fd5f0fe4ca16c72ce5c6b8f703eff5d87f7e79dc3fb13dd947725c25b70c6e4dd5ffb89fea4b831b5de7f227fc20686fe64c8e84ffa0ef8b55329e9a05e7901dba60411b8ba6d5b324c754e4e75c2575c96e5a4362efa2baafdb65e04390b93eaa5fc655fe9b018475f044bf3384bf3aa5eeb95baa4ff9df6c715caf8cfca16f7dfebea7b14fb5fb13c1ee8dfc1a341e532fbc337a985599a179c9d49a6ace3e8bee7d92ace25b59567c9350473ac49b7c2f4e5ed3accf3e334ee7066ec8fead55772e35a72716d02e2e722e34c1d4a3f9e5737d10177f4708381fb4b02d3768bfe1361e22d59c141afe7e19aca1448b478ae0546ff41d14e020808e738153ccbd74ab7056aab33d07fbe0a4578a02ddbb23c8f2f13509de527e19a1ade3967c7eed7ea4374779b9af38e73b505fd91beb06dc1d848c6e4da558fca505ec916ee5f630d2faf6d4c08dd3c198fac4d626b03e09ed2974ec78a56f90655bbeec690f11893e64e610315d0a34e6dd45ccc0aa7f4fb281a0c221b0ccf6d0eff02c9aedc89ef5aff0ea271535624e3c5451e2dd92af465231d0c00c31befe3bbe3d3771ed85d7f8ed3f960e01dbffb7074f6fac5e151552a69ab29f3e5e86692b171e7b523a5484f55d741fac161e89eaca798fc713701dfd09cec24788493f700a85ea343616b96cee9ab4ef2196a4ed9ac249b8ad609fa23e2923a9d493dcbb2534f2a3235c00eac634776b77ea5561bc65e098dcd60efd63558d589ae6fa4dbfaa791e4aac61595a16cdaee91beff476509a7ac26181e0c90aad8737b7848fb92f2e12d49a176a056fbdab4828157bbb82576801e60fd0524114a89cad36901133eb133e8fef43faa6c9fdbad30b76d2a89bfe0a1cd487eb4e296ad998005f8ffeb0080247ffe286bc12db94bf56f17a13a26079b32602ae68606e0b32c13f588aa8aaf897d86031591435dfc0ab7e424d375fb944a6445542e3393c08c7d615121d8b944ac80f749527fe1185190a2feaab8546fd91c287a755c6b9dd38c74f7d27d8473cd0440e499cdce636b640dcaa628a5cce759a69400ca7959a9755541462b2b2025ca80c4a7c6c2e5445e468ccb9b2252d78beb23f8476c6dcd152b672a114162f2c7f3d3773a9c79bc80d441a9bc954a93cfa46309bbe79d7cdbbc5dc3968ee9cb6e8d661ba6e5aec7c3e6d8fe8208123517adb9005163a177ad47036ebad7a4f8b63559c42c99c36240bce5ffd28548ef9d38de71a358d3c3d73c5bc169d87d5dc48b05547d7115ca41426d43cd703fc43ac185fae67dc8451c26925c03d307ec2b9bb8a6eaa5a3cdcee8d26aaaa93d649cbab67472714d122875d2e198b58642c20a4f65db6d06c985959d1b49aa57f9814bbb053929da07d42449244b75c017f11531d9bc51ec67184cbeab8208d6c7fe5c62b4c0842bea624d3730bf40106545287743550d9683c1d26f96ea0c578082cf98327dcd55d57ad976bb294b72bd03b51aebb294d8031be8c068f1dc23f13c48c895b165837089c65ccf33366d2e3c066b52073bc7704faf5a509498cce9b5bf8af33c4eaf0603fb6813a71a42733e18f443b742d78d07fa685f648932c17134d3affd10edcb6b38328c328a7d815144ae352c4a02c33cd3084bd005b34d5346a26cb596d769d09f9775c06ddf1f0fbd0f78f33e88daf741d606b71ae41ea42c90b06ba7956024b0b5af44b1ff1b1414546fb070f6615dd99c5e6194e0fa16f2e61646ad2d0ccb9a20bae352419bbaa963fd82a8602d250e4654a1cfba16d9bdaeba093458e35a27516dd1b33af285fc53ce8a400eaadaa624346b6e4a410d7c80011459d2e98c2c68eef08091bc5dc89a2e068345dd10b6ce0aca7a83813e43c6e0bf22d4aeede42a9ecb9e175498676a9fb6dbe98c2051156050bb18f912b19f63a5370644ecc80f8d457ee7090379afc3b8c6feaf18319260ec9615e0b902950b7a8d84d93cb0ed470bb2268c64184f3a0d910b89b8405184500a11d56cbbaf65bb335a40581d96e40cba98ebc3501bd60d0c614ed90434911060614e43cd602a3ddf0c3730c46385815774eed70c839d6fc86d0d5ae010a088ac881232dfaa597fa5e2014761beeb2844b5a3909578e2486728a5b783c1570708bed2c6c5fb956cf4dbc0d6dbc542b7ef6c8b3f21f60824de217a47aed157493d9498140655da153fc468a949a93a895f741e6480855d76ad94b7b120af1fca704752d74c0fec4fec163633ac32ca5d33c958a413c4b7db50e27b0769ae31ca0927a166f11307a6d860d0e54d8412caa6f90c0f0651e39e1d0cda2e49c21c8766e5a900bbe4c264f52da6e96cb21c0c50429788114e36574cdc251fb05338c6601f1fb50804e0eacd65cd1c5c544a4a10ef4ef69b987c0c1ad725c480d574a3f46e012340dbaabc23c4019d713933b25f14fb5fe4e502934afcdff2cc3ac0d9964b9d06d83d6af6eb4b8c20e16c666e65b9142e5648b1ebf263dfc4eabb2a8c6cddcb2b3457bfd20246d9ea324ed9d1171669d045e19dac01dac0dc8394a82c2aa6bddae9e5926b4f6b27fd4027b5d1d50fc2e081fdef4625e92e54b27b4c48309412bb065d27376c4a525a23fc7d74205a8b5824c9ddaa68f7e64b692a6fbadae5963a975b5991704c999d989530309cee20e39a0ce01d5486e2ebf82ebe8e686f1a7b99c735d96535994c32208dc964ce645a1735a77c1742375a701504bfe9d7781057d7f17df0cc6a40137500b2dbd8df009c1d1d28a86498309b78b50e936653b9ddc7ac6c0ab70473ec536b9d3bd4ffb5a48a1b04c013470b9e32570f0332febb4463f7cb8e892330fe0708741f28c1ad896bef15ccd6aa6bdfd407085b77d986dc2f7775d6cc86846ab4606c281a5f56d0f0b7c788875045de9f792c541c24af8aeb6ee9a6085b0b5ca8a30693edf6a0eadafbcac9eb43b65beee1b0900a95712b0c892a8e901ffc5f84035e932d2ab162933020e16e51468dad83e1a913a8c777a777654a4cb0a0401025cc881cc7c7ac2dd8889b8ca519461076ba3bd6c6d2b956aa8be662d92046915db9ac5ab908562e8265a9562eef5ab9e40e21505191952b8c38aeb959d9e57411a65dd46a01d5ea8aba9f60d1e06b35e6d402a38cac7916b13c677310b56d4a67d1ef903d159884b8bd27f94e39812b59e018efdcbba4741d4315aaed725691e83762c883f3d393ab13a7573db5163d91f594307491f19e9260fc25ed79c3869453b8a1e0562ccfc32b36a4de5f526fc8cc6f0241e2a2cfb0f761f499a4255aaae0b92d08ebd89ebb280117c614e4454d294456097b40e6e04258a68131a9cb229c48d777f3e52d8e3cdcc99147b4ce4f4b96681acd763a06e758682f5c491c348f3fd7be43b9e20302668152b2ad96472f687f4c96b43f5626bf9a529778b8faa569c4c10015b4569e676efaf6a6f67730f0e66ca14245b8dc7d89411afb2deda890ffed8630e9172a27548bf737b05e56f28885e11debc288830565015a50946cb79b12d72511c43504589067d8c882fbc082eeec763058d445156a8faf69932bf472962cbc8a0dd4773764ae51d8431e42b9b1b2629096b82950de409a999d2341d764b15b6a32c7d56adc6284c99af6fbab723d18888760c31a125cd48f95054407f0ca1293bccb6fdf01e14e6ff948895b81ac57b7801c7d750300de3787b8a08973889734695f130b9ae893bdaeb6e40d461929b0dad83a75aa299410b7429284d86c6d3ef47c6fb89e54810125ce875acade2f24d7a4de30496af232dd025969f08a199ae3ed16cda9f7076f38c764a9fabaa54b14da9d03d8ecdf6eb7fd98a15b4c9e63826eb7db76a496dbc140dea6b7a0b3a7b7b29b312e4386e62423895fbba434c9750710e8fdb57114c23a3464dd57a2897efc95868ec06392b60ec6bc3a135f4bb2525f5d5114d1058871738c078368ba060479d58734632e0f71a5f7e5b252645ff9d68ce7a42afd4a8ee8e56070321854ef65717d7957dbed956fd52cdbed11f911d79043ff72bb3d213f61e2541b0cd0d1c16abb5d188dff951fcf2ba717e55f4722e5fd45294d8d25d17862cc66b5f5b29298a99fa93135ed8f27aed941d6616e60aff26c2a6684439af889bb4c291e0c628640e55a5f408e0783beab9349892c52750987e0154a58d71fe1124fa2cafc508bea1a22cc8c84b8260b161825f242347afc49a46d3312ebd1392a61cd40254c16182b74ae85127d1aba91a60c9887075a3df65b9ea51e91ff06611984933aecd4a7262109cb9d9223c84963e81131f9f8d6339a12819bb62cadc3be53825a37ecafcb0a48e6a4ab6bc4425210200043647745468a3a300f23218cc1000e6017de428b264a5cfb0d6278920c0628a409c9016de8de4289d652c25bd823ba1f758436044b231490c516dc1ae8548821dc2133257987390df843687ac2fb035010d3d1ac122684cc8d62e09c3fb90d533653fb3165336bad2720dfb1b5f883772083173a38882ca18eb5df18641439a39ba68e4edeec7f68d3f72d9f38c73c501658cc05d68c8ec19fa935f402495c2b4b46a7f6c59dd52fe279e9005c49c239045b8195ee8ff45e1d86d1324eaf64414dfe13f4c72a397062852cbb6cfd48b15320503b29cc09bbd625b7a90b0522bf8a80733ca78244da3989a62452019f545645ca49b45b58f030b94f033d383ea6f62be4c895dad9a3bbc443096b5bd71db8829dc0ed4719f9439040ce3059ee5ed396c7c8a6749cf24c8f663953ff06c0b3f2e94eedb568e2f880dac3ba76a7352b335a199649b62e4e581ab1973c0be751980b704bd59618cdfb2107773ef3d68f8a5c64ab3365a0cd55d86ef3aa4601d35d9fb88da92fbea5adda17b229e73c54d59c42922a81987d573b316070f7474dcd93d481d657ea23d8716dac0c922de59f94315378c6c2b92e640c6ddc450fea7bd0389a0ddb3ebdfb114d89a43020ad9cdda03fcbcd7718f6f6cb6ec3ab4c41527a8fe19592fc567387909075a3a0ea1e932b5233b53a886ad33406574600d7903c38b2228c0d63553a11d8ef3cfd9ce5bb2cad988e6d21c767ed558d6f48ad11f645f030ea3ced0dc1747f8c0962eab8d7412370cc492be45236061bce3b3ae988c0a80da9ba55a795845a5bcbabca58a92cb4879d85c40ebb34a47956778bef9e938e5406bf5b91fccccede1b934e5b87ed927769351e1cca461de55740ea2018b40cd5d4c76e4365630b80da698bc89de37c97b4d6f2b15635a60557dd13afc4b8f7ac9bb658b3abdd2236dca56973c97feb7a1a15d1650d73b0bc09b7f378b1d8a9297141addbaef11f0c6d2d9bc92ee3c5fb20e96f87d107c060c347a6cb995871f56a3bc0a78ed592a009fbae32526fe0b4eb386a0658747575e3166e6ab80c36b5614a378576820ce970d6aa77b0caaed9a9ddf23a216443644f6724a523a20341d52164c2dd7ba66013ccebe424a5ec60384c03eb2a4f38e59a14035ee19791eaaba371ca27a2b29bb47ca0527e2bf3f735e312123f54542aaad1aca44edde272d7e9aaaf4cbbd9dd31a9e078e8c569526d93ce524844d436a8717d4dbad61a089882991417f59790394685ab512e60c691b17b04dcd1dda63b17a5012d51c6e715b4ec5e1c174e3b3688e93c540f8d446b820d3a14632d9c5527915d0f70d513db2d724cbb426c1d83babf569189c4bd75041118573a54569f5773497704e1e9dc222346d448e58e3828ac8bd8945c75571ae406495a374689740a14644de21f1681f71ed43d18344b1076c3aebad7904a845fa225260b4653f4fc1926eb8ee499a84ab9a3e2ad3a113f5dec45523a269cb6ec76d29f3924133315a35e9cf68463c593cef03decb8660195308f4da31915d3a8cad6c64abc234424b96674b314621d6ce2344a8ab9529407fd11d1bf2bffdfa03f2ec912eef23cd88451c4d622f07e78f483473c10f6a4624f8ecd0b3cd959ac729c3e02095e098b2c1bd9ac985866f3c07b7f7afec12b4b326fcad9acd7ad8d7a964a142bef270e7a0fea9d337ecdb8361b90446cbeced29c514638a4aa2af2c36cce942a5214b9aa5224820ac24bb2625d281450564a9b0c8851b246ed6179ef98b8c9f8e71e677f2d582e201e1b9bfb3d6f28865e2fce214b53ce38647f01d3bd9e378c8cc6b49a14b887429b3422dc4a704a72db1ca986b85b0b71f5544bdbad13ae743a2b9d0b1124896ed00fd95c2d2953e9c26d2df11d0024160da003b933c452870478b8c40a9f2add40d741f9fa3ff7a028d54543b15567ff8c480682e1f098a495f18338f01e5df170bdfc6be2054a93bd60400f52e6b70e1ad8931439fbf5e8c3eb8ccb0319b39c341325a87b7f53da0c221cc2f43e6c0518e80144e5bf8c7f1e0d06289df21965533ec34ea2f9eed047550a39a7f1f3dbd56596e4863e1ac1d88c6f4e775d7933463f73b3c7d170889d61c9cd31239b4633189cfc8bab4302e92a0b1e7bc48335f588d75a518f78cdf5f46678d28cacd6df618edc8386cd4def15a9ea489ddfce0f54ae2590d4796936677bea0b4c1cecf117d58cc1138bac48e73d951c26b9ed85e9bc9766aa67c67beb30cfd99cf444d65bc45fe0672f546f7b8b8cff25bdcd0ade63e975cc33c8b9da4be2cfac27517b1e3c7a747373e3a7ebd56f6009fb681d469fc32bf608f094ff97f42fe9eb8cf7d89770b54e58f097345ead332e4ceb3c5bf5fe15aafeebc4bedbf4941cf78d10ebb771fab957ea8ae13a4b926c2f89d3cf7bb277f9cd5f52c8d0d193853ddaf8126d7a058f83debf9a13f2af44f51ce8019478e2e1b204827dbb459caaddd07a90faede5dc565175e784eab49daa9f24e26cce52c9edc957ce2f7bbb85be7eb21e3820c6f3c38e38945da7528562520a10842536b0ed6cb79d8188c481a41103b1dd569802972a7a6bd4688f84f2d82bbf46b0aa787123991896e746f9d37a01fa7495f59c26fe35e3728d26c56080c2a9a7b64cf7baa7bedc83d40f335a60b2bca3966ec99bd1a572715e9035fdcad0a6242189cc2a6272adf729f2e51fbb31d1ee8d893a37665d9239dd714b49ee90d3fd096f9b46f3e110a753beb7ef1a47f39996a1ae61bcc2d7a3221bd39b3013a88d4cb8232b31c9a880594d3a027a32bc31ed4784b57bd0af6c3fcc2e590961d8aa8e0603545b125a7b2b47a1daca641b42ac7169822ec96e75be119dd719849ae6b2c96b06798935852ce8a6f65d103b24777530b2f6fd05be53550f34c4c4d602f2122a402f860f5a30c9082518938d850d7299cd6f8302bc17ae19c9c935262b3ab78b784be7beac02b14056be2428c2c4f80839c4c72e0f8c1797198743c5b3246126980824d25325417f4c54ab5633a634268d2f27ed2f99f990e971952a22f057bfaa442ee957fd768216f44a9224661af41297f102c5205b8795f29db40bbbacad3ab3cd502734c8aa10615568b7b7545d2bca9c7abf1e7df030813f945253ae56f6a413dfc1c9abbfd029c5d8d0a3de90a55136671fcf8e6d5e4924302e273afd4d0c11c73932d9708416e24d441d74a14eadc4238d2a2a14b0a335d0a488c937c56f37115d31b70af13e99c7de2a5c7b86e27f63333a55f479f0a62c39f2ecb71e8960a38403ef265e9ad365a6ba744e9d571d978776ca1c7226c33a1588e7c9f30c87d8104ddefff1f0646fdca7549ec458077e151c416835fb6b4472eb90b537a69486550b071e3ef00ebcc01b7806b85376f3f1ec380887c930d54926061e1ec6658904b9c5e4889ef8aa0e79434f1c96466ec81b5c57d764fe1ca3377822e891cec6c16f372b38cd72a56e89f73ebc4db270de5e97461365ed7ebe6c25898a6ca82624c80afb62c9d26ec9455eddb01bc350060282dfe8cf50445977cc3d7dcfb71a778c9381af845541c209e2acce0fafb4752e83fbde2ea2475297cb4d3bb9dc1416f003fb22f9dc4ae00acb95e2b2bc73f6d0c42ff4f1683418cc95458577a67b547c6c11452ccf174512f4ce58c4e26b36efa9cf7af274f7bca1690693ba618b80582b0deed19b8722f43adf3039e55cbe332351ebd1334bd0bb09f39ef651a96c972595da30a989f041b43bc0510d739438881ab864e8fdabef010094b8b9788e53909fcaed674a55ad1cd911260c72ce8966bc26b83bd49ef68d2d2c4446e55640a59e7cb50a4e815cb0c1c074679dcb52551382f3d4f400e01d1dcafe204078a9b9d8cbbbcc0ceac1e6800bbe9210eb6b19472313678314b3fe3dc639c5c9cc475979ab7c875cab2baa0da5c441236b350e50ea54abe5b26737bd1452482bd790cc0f3139d9212a39f96f2f2a39ea5450b7180e908cedc27655d21a12eb4b4e9eef2a1a26da48a8a9f4f811de4416c2e425813640dafffb5b804d497fabb7c4e2c2c8c95b27c822e337219f076989f14146e356571ce0548582e398406b0157adda521bf881dba363de95583781225ceacfdde1ab41bb434a95384edd991169cec71cb0a87ec0fe41335167544ec5d67469d4edb6fd9d3ab50a87847803c3716618eeda0f627a0b71eb9ce20dc4ad73c230234cb256914217e40da3e80e93a45df64716314a869f1e41ece8b444df862c4e7e5764d1691d0218ed0e8d911cbea9a60eac4636291a8f31997afa9d47b400cae1c83ce26956ce114cb9dcaeac0e4cf4b980bce65e96eaabdeabdb3399028f78c09413cf70ddc4e3c6b8c9239e9cd42bb680feeaca676f86c9e1371a9759774e1d0f0dfb8b38118c77dc80403dbea90850864b6c386fad9d34ab08197f0a1e43b43297c18f69c56c875468f1686e9e8c8420919f55ab460a131fcdae165952e1eba5240b2a94d4634d85917a906b188e5e3732a7ca1551ae1c59410cb57a3c985bd345db56bf20634c6eb75b744b0bb00d5b1a9baecab5a3285596da253346f3470c2deb926f2335ae61ac09f3dde3ae4201374999cafd8a41c269b54acc5f876259d95f4bbae08af6fbe960d096633940bff35a99ec08b9caeea08a1418d45fe34d4425a5f45f80622db5d5f8aa4611b5711f203a72096cbd1c4dc1e380bb4238a264912171e13080784f7579d576ebe5e18aed653cbe8a53cf8aac62080d85c909cdfcd05ff06c85a65fc915b99ced3e51fd3e78461dd16bf286cec9215d991d4806036493f4e783c16d95a252192205d5db52b69038b0fe862615ac1fd2a409eb2072b2749f82e4e0964834189ca82c8c0ba28f51b026b6e1e08898668337ad304687658368ec72ef8dfc4b0cd9a00fd9b765657e0c49997d49124056e691ca52bf5f4b52fffc274c8a7f6a167ae34eb4ce893ce936db3938388a58246c528b31901ec4cd3ce9495c4b939e41eaf593a3771f2f5e1d7f3a7e7574262f281c7cc3776f8e5ee8cf48f3abc49f13952118ef487f7ec2d2e2557c1dcf19b86ea3d8b7c21d4c9672839e8df124f5e748102ff448db7a6861336afe13778608776f20dea6dd1bb8a44c2e7979172521bf62700915c9195b9082729f2141a69efd48ded6fa138f78f081240f6475790d2f69b5fe0429ade134f4dfbe38fbf56846213c7995c1bcb59545e2a984fc25296a29f309678b20293189eed82d8f085fef182d88f08f055bd1a51f3677af24f6bf879dc4f1334839dfa1d6504abec140fdf5171927198d0eaa9fc8e32c8c84cfd4143d1c3c1b8d478f49dc596b9d711126bad23312765632f847577b4ef2ce6a6a1617ab6cce74cd1f49d2dd2bcf1671c2b8aa367e428a5dd5d46950adfd44969dd5b45f8c6e6c4416bb6a4505e72c7547381e9375f79415f17fc1d942d7dc27d7ddb32ef2354b73d3e06332efacb662ab4c57794a569d5592f0ebadaef28cdc3e64f76321d9958c57ae3d5febe67d4dbdcdde98a4d4333a4ce8f6b7dccff8d5a37916e58fe09edf9bb3289b33ee2fc52a39885310cda6827a4346381d4df8cf42a97f86d41b84fc2a9fceba05d28e626838ae2b87ab18582426a1c9cd078e3d26894d45416346b582f7244ee345cce63df625624038f4b20876753ee915908398f5d22cdd5b998a73765dd3e12e320e95164592f460ba3d4def817e389c2b6fe030e92d59b25e1449ef26e4699c5ee5bee77888e774ea8c7f46123a9a20334c61cddf1ffd4bfee8aa034fe7d364389c9518632d9d3c36abdcfb146789d22894ca98052237ac58fe217b9fade998b0b244fd31a9d6e24ceea29ecbfff1866ce84d7ad7711e8bdebfe4f5f99a9966fce18b552d547eef0af53c922a31fa15ddc4f94956a482cd83d6fc210b71fad78215ec75c623f6713d0febdcbb7d7fa656127893ce0ae74cb45f96e412ec38cca93831d8b6ba984c18748d3c4cf06fce1639bd54cf050c8bd374bbbdaa9ce38e6407f6d79bbfbfe513e74a8540fd91b067886e4a72520f8903b36db0d8c6ddb38a8350b331a9155b1b94afc8fbf1a9876b23f21babaa337c10413cd3b587eb435a543bd836f46f34ebecb669d973be974d1f395207a71bb81a0fe91b5774c16e7a4793c39a90e30de1e8d01d1e26877e9cbf57492fdc85d579093ed18dbe15746cccd366c1db7b3df76e54625af0065cc83f17171096403d65058f203861058e1775b33c8df022b9d9b14a001aaa505cd66448808916d82359d745896616e07d0a4f266f32bcf9cc6e4108e9794395429608fcd6986a810ff34d53a02a4b5134e5332ac05c49a1b9d605b22f0735a694e638b2a41c4d6de0caf1cf797501252a3f11ca25b3309a143fe7936238c4c9b470cd068ae1fe6ce23496942a8e21337c971c635ead00043870df542171a67c666691c32cb4aeed0f7f500720c880af0a18913b16c38685048e6d10918bec26653c38f5350494b5ec835627dcf2adb6a74ad1d3a6334aa94a2ef4813efacba3e1a32bf2824e6715187caebca0e3057aa157d8e8575f685378ebf8a50d2e1989e48ebee76c117f018f4ed920f8731a8cc3e159e5e9345e9d36bc1cb11f0702ae26d7b398c067c1a86ca4d833ba1193a7bc1a802e506350cf6618f6a71ac978f4cb0b1b35e5855666e346fa3c57240f6c1b3b1835430370a24d47436bebd308ce1a0e06de6596252c04e40729df547ac22a4840e5522e30387f0304ebb46da1ced7a60df903f8a143470450dbc9da6692ba99946f16005423bd0c3eefc5f021c4afcc6d78741449dcea41f201cff786ef9020231ca498c008733a92049b7d1fa4432ff05aca405c1db8d124f9d938564c92e1d044f24c87ef24a698263392e0493ea40c85a480b52ccdd92dac3878bb6d5f292a1264d04196a282de0e06627a3bdb6ec5d4fbb77f3374a937c30785cad0dd45cd16306e41757c7a88033d9af401a3819e02637f9ea56c82d57869a8439ce8e910393f98026c9e733043b8de1e8f3de24d55a99691cce45bc40131e203fd45ef2616cbde67769bf736deb021a4559a79d2f3f0d02bbd8013cfb387322f11239e07605b4be2588900efc116fa3696bd1db405981b8f7a8147471ef102f9b0ef192b21ef0fde1079de90e18ad89cd260e6929b8ee7d894cd4a5c22e80707c217d93940367afccc19f87ba3989325daacd5c68f11e6280f87ce2767f5abcc7ae845d4411213c8d67b4f9ba415fcf13788289b761a089438b0840c92c8190c86bb64b06ddc0f123bb800045c0072d00b7d09302db6d05701f3d503984c4543d487596db7203afecc6e952910bb3df0bc00b60316d86ec907e2fd61f048428efc27c5987083f79c35fcade2878ca58be74dd4f45288b7299b4e77344b24de3c23827e468264d00826c748d452241aa1d92773b54d1af137d579d91f7b26afd86bba31494e83cd2a5c074dc185c59f362207d3f28ba9cd13a77710529a931492486a83be07352767f61e66a60467a61d3d3f7d597580c7977acae85a00071d88516400671d0930eac317aadb6e1824a224599a74463a3e870cbc5f91377ef2185615a4dba160676cd16689ea4467492ca11a9c1049bd56bfdfe8664c20d24ebd4343fda412e42346abc3b0241751984445229b5a86e9159bbf8c451e0872a18762a29ed67eefcb02b1e42c9c1f2a5281bcd7521a85e70fb3342f56fa57897df3d6e9ba201786e0602561bef984b2d2285d6b6bc4da47794d94f03190cb9a845fbb76a0aabd2217923b904357e634c1de985cb821f14bb262abac732dab66e686768cb2d53ae4262c19a84f952f785992226787dad3aa7b6b5e21ec3b95b4c79c2cb96b43cd57da9eca7e74b458d4a3a3b4bf5155aa4f8e574ac97dcdde84e93c61ada358ffbc595dd782a65eb1cbe24ac1498d372f72f636bccd0af180e1b915ab419eecda0ef399ac50553f63f32262fc9ea9e85aee0cba01adfa0074afb26243c8d0aaaad86559f9b596960621390789e8493667414eceb5a030b8263521747041a2244bedcfe61c6ce423936e01a22001c2de7ff6dc23cc44aed07c644c39c4c6573799b250fccc6e55c218b600836475abb9fce5a6c557e6ea8924d432441d3c6658f198139d4241e784c838027f2275df4ac648c7e9ad38371d3db1555e6357a34e7615fc8de26934737c82a6d16c30b0232c0e8a69340bc01da9d44c2b8a3a385a8ce36e4e36c29b821ab337eb15b4a4a3c9f2e768b21c0e71315dba9cec5272b24e6345793f0d12020d926bfa2336944762ef8bd7a1445e5d37d58552c92a3e0b370201337939c5f9a73089e706b4ceadaed11b3ff37ff49f79a44873115e26ece2d0cac7015e17d59bf75a5a1f24e4e2e2fce8f0ece8c305a4447cf7e2edf9c5abd38b77a71f2e3e9e1f5d9c9e5dfce7e9c78b3f1fbf7d7bf1f2e8e2f5f1d9d1ab60a3042faae95771bed64acc4fc47d71aa386fa2dcd8025e96e423dd6898085e97e425fd3818bcde6e3f4e98cfbeac332e72fad200cd76fbf2813ace91d271828225930f3f3ec38d88e7dfa5e7dfa5e7ff3ce939df6e63e4edef3ff74c7cc3fe98e44a9692c867c5a49325dd689b9c1a6208697f24317de9881b170d88494801156dbbbb208b58f7a787a419278f55900261f31b24c6d6aed0e2603d6254e0b2d4b596ae4fa88a220b63baae09f0e7caeb646d051d0c44a136c9e394cd484ad78ec194bcdbf6c63fa7b09c3f3d93d724e9df4ed319ae79770a138de8e85a0e41d5864b95dc82712928b0216f33e476ad7b3ffc7fdcfd0b73dbb6f32f0ebf158bd3e100c7b02ad9499a504135491cb769736b2e4d52d5274353b0c598021410b2e3587aefcf60712140514ef2fdfece79cefc673c160980b82c6e8bc5ee67f5123291c724a78ad4548ebeb677a91aa7a9cef15e426a4cbe4eea632aac8580e82f6679cda6afd85959ab4647bad635afcc3204fb6785abaecd6f8eaa49710c9d342a686f60a438a22f5bf98dd11c6d86c277a4000fc405ed0d478569fadd8448c2f03a1000cedd827a063e534b940c0703a0d099f19a7a023f019126fcd87a3965bc2859bd36f0ac9363f2955eafc999fe7702571ba6af1f9b9fdf5bfe271eb5650b7ae8ad56c9929f7371c9f7a0c064c41c77f22697674cd1df11c7dd437a4616e40206d269b7d2835d4c73eca06747c134b16232940cefdd4dc0159c6174aad50a557ada2de914ac2a89b2cb2f788668d50e72f24dfc3bd61603464f018d0f0609264e04aa363d63b4458063c4427f1c46d11367361499b78d8f26ec182ec6738514ce268ca80006f285a3ff46e18dc3131d9fb1345501d299a6ddd3565f5e3adcc64637efe3d432034fcb5a31cea4c126f7c14facfe78bd89eb19483ced9eea05cb3dd62f6b3d51f23318ecaf95582cd81461d8756148e919cbe176c058caa4a91b69a3ae5a3939f666c55c4c59bfd46c954eaf105ead587827d597ac62796d3083748d3fd2eb927f6276c979592dcf4afe424e59bc902fec4c1b26982c6e5a7f19265384d76423cffa21a8ab6cf28d8483c779bdd71a0377c0d36c2d310afb79074e6f36e3d3f462a28e29a572b542fad1d6783fd1630fe2a42e6a80d73c4d751d8305fd756cdcab8fe5ecb998b2518838da60bc4afa0cf1d847b989e454eaea312f7cb7827bc11f5565716e25f7f6ed51be504bc97ce0a1589e542c4e1884b5933f13fac82b2ef9664867d267e2a223a433e9db45fbdd274392f6647f5a820b6e00be96b4879293a55246988e985d1af16a95947cb13498f0ab5562f063dd9b625f542e590eef1813467bd25c63ecb091e3b419ed0d3de08d916a20de7d97cca1bff70f860951c485e14812fec6cefa46de8d9ed2bfd15362ca7f4a9eda2994a648af3697983c351be6ed0493ca39bc617419f13e4642f9803ecbd5ac2f733e1573842399b69920681f93739a7cfc08acfa13ae98e479e5a6ef4fc9ee03f2c447c3cc31220e59ebb85178336516afc9f9b1974e4ece8f610e8d7af0e8501c0dfa951ecad138d57dd444390adfb6dda7f3edabfc6cb5ba031265959f8d59166f15cf036556f7cd6a75bb67d3a7e91df768ba8d45727da8de6d9779500e8e0cd6ec1c44c9c141124bf91bb1e7e4c9b171e21a49b0f1f5545c33efb9767d392b2b86589afa1a369820edcf0fbda84351bd30f0be5b6a1f19e8b72d9cd2441d630cb0a51dabf6df9dc1064cb563298f92fb601209ea8fdc3830ae20bea78ae17192f53f2a600274f684d3c9f1488d30f71bb4a29f9032720645b9bbc31bdc577b7b237c88f8441d93a430ebc214e43e26e960a4eef3d067994b7bb23cd16b46020c9d6fc55b476d96a63c4d3788dd66154182dcd92ded94ff573be321dc4b77f4c466fddfa216e98dc0a4c9ebb3ce4b2f4047867b79a757d8ed2824ab55cf3c780f3d9b21b1a2692063f8b30536e3568909eb2bf1545c32f948730b58b3d45100e193e41d3b392f55b2cb8e6972699f958e7826be9ad0b97e5084433b7ea3d7392fe7400ac6a7d99f2879e0de13d23c3fe6d304139fd45cdf96826ffde0894b117e56ab5caaad9fbcd6b1092680075706357ae3031212bc409dd6e42f7d4ef8101d067fb2d3f0af09f3cbb17e06f6e0b720d05c48e9a9a6431b8e876b8e8777713410fd21cc94f206b57c87addfa529fa40bb3b1925d3f222c1fd5a5d552ca42e9c534aee470f3228923bbff5c3de695ec866bcef921b53410f34af38a267bb16fef3a84782372380784f7f424958cf04933fa2b032180cff4431b5ed73c67470548e1e098c26604cbb53e47c51e557ee57effacbb3d9ce7469f22de07e6a87cd170ac457bc90570b054f53fd1f843795c8a76c0ae8c8e671ce54ee5fa1263b8b7c59b31d284aff2bf9d9ce428a33c9ea7a47e68ad9826ac6ced9147e74925ae555a5df41803fdd51e59c19c5b69d0b512de7eeb3cb1c5c4125fd7a51950a253b804e645816697f0bd63a180966441b85e7170a336c6191a69211e9f70252d004142074377236e6d6e54bc68dc1fc2383190700d6763bd0639ed1c188dd97690a20fc94167a32b0dd5d076722f798dd498623759f963aa1dc5326a9d853c7b0a9784524460bcb5e3132bcafc6c33d656fc28215b58cfc11fae09c854aa03eb8668d2a548c4566b00ac3f5dda957060bba53b1e4704d05039d72624d44c2a318b080a779c1f0c67907ee1390a26c521c1b8079c032431c67892909dc5f1b245d134065e6d2f110f30c9294f5a1bbd00039059b52cb06f3e6aac3c68c3783b2de9052ca2d3705576c785cb22cb7adef3ae3521bd9d0b562918a9971cf0a274421aa96be592b32523e3384d4a7cd82b80c1b7f019c5d420a5f56538125789a60218eac4e69649cbfdcd34b437fca5cff204c86835f3b6b69c1c583fab5d5c766a6a826099d1c138079d22f6c4a2b068e49e1304e976c5da03ab08425d70b437bdb6de185a61985edeeb41aa4769805636f64e007e2fcc6ed00843327c90a1574c31eb72806fe1df0d0b78dae92e135a99558040323ebb69adaac6bebbbf146c8b6da16ba57ab87c068424e61803efbdf305ca1c60b2339d920772853a1255b9330404f8366d86cb4d25920754e7db3245a54013d7df51eaf97e48d25647399e9588d8c52cad6366eeb2d378f3b98df383c164381ab30d634861aa73ea6125051f31cc91c37b54dac2a8c992afae062be32e785da66011d09189b26fb72ce5eab7cbee8ba04677d1fbd5a1de68af5b9b844784d36d635c8abacdfc865ed5ed7ba4980c533dd6eb716b8ba6d9a21b7604b1a9191c1df0d34c6654b9f5c800eb9d7852a90203c541d0f2de0a3a848e79c131e744881aed724186e607fe65a27ed039931c431e16bfd50db0bfc53463d1dace5a9d1a1218bad31178c4eee91e101d9ff851cec1f9329a3efd234815bc44eb68fcc2d03a2933936f69998024be1ded314cd59c3e486c94c55af4c316fd817d5ca3f4d7b7346be423cea4dd96aa50f6077efebffc3e1af74ce303963d4486ac076f7d12c978fc494a1837d4c4e18bd3e61a742b2277cb154d9f5966375766dcfb65922f8c3e68384b8f3712bc289d3f4886c2e26b2495234a4d25c2949ced9d542338409018999cd3659e4b562c9b1019b10fe88f27d357c147d1357328edb52cfe4a45aca9db8ae3be7ec6a2a2ef98eabb17e582e76e66259331d1132a251bde128f6c3353707b86d7587d8efadbde1c6ffe3fa5b7ba11f6d803532d9d60213fdbd4db007801f6ac39a3c63207af7b644d6f5b7155e332bbc863c92cc6141f428bd68b02040d7e6114c4597180ab2c977f6f7ef39f51c9dca273283da48999bea9977dd3897416fe085c19e510fec9dd80d861020899e32959715d6cb4bae72bd32b0b171e461162d30e4013280fd0da3d7cdc56176c248741f9bb5eff136ee5fed255c798aa60cb3ac4dcaf6a04bb2829eb07e7b32783978fb23bd266c7cf2984fb77e60c6c5e6376674b9cfd6ae05e652f1111bc3500050a38ed270e6bbd928ebeeefdf83e381ede48eafa059cda16d8cbeb2344dce85e6de38205b00c3f688ad56458f767d3c2e683bfc319fa6e923063ac9fae08a3324597326459c5189b71e4b1f01438849414f03be1c2c20e04021c6c6bb111556b79b22417fd73b2590c5c661f21915589f7171260cfb8518bd62e3585b70fb38802eb574f91d1c33b6a6888d3bd8877974392b8b99bd09d1d37740cedcd46bf607fb0d62d4808a614ae9194bd367f60e85b5e69461c00c1a6d4bcdb13c458f9c2ca05d6d7393d3d31d6e978e3162d013a4605432eac40d30c108334af2a3162dcc5616d6a44d81f214f590ea174a567f82ba7b3faf947d9a3395ffc9ae0066ce26485397c01c33fbc52c97693abc6f9edc41d3eba7e940832a09c475115d4c814bb2dea8ed961e0d86b9b2c3dc2ae742c7dcd00f78accfff8b70689eb07ec08dd8718aad877ff219298c336be7649534c5d870e0a0142cb28920ea78bd262f6cbf3cb5bf976d31d047e6ee16e863707edd75e3f682992bb7bb83c401a33f43c1c50d1ebd60e13bb16a862a14ffbf86929eb2f1a5fe73e7e8ec92d1093bce9e321a5c1cbdb1c2a9a7cc9d1f9feac3d5255cd35eea37d39c8fc6d3176ea44dde0489edeee28f0ca9093b0e6bf180459a0f2cb25738672dfd5db0fb0a123cd1f5829de44bbca13e677e127d690c09f41cd70907a16f7b5b03ef4b057222eeaaf2a9bda4ea517a09c625ba48a2e9616ff15f327a5d884ac8ac3720c08ed85f7d10d2cf897bd9835198e83036cfcb4a3fcc055733fd606ccaf4d322afeb4b21a760479af333c8a466b92c20a16295f9f9a2e0d796b294107cc9d8796c63fa8a05ba1669aa0f645366ae439ae7f882c19916f93b6435eef55eb2891945c7597483ac82dbbf80273097d170ec5cad58bf9685158eaf56e68080fb859006016f5af2b3b7b5939e83010fdb168bc98171742ea64cb30ae3f03a35bceb3c7413a9f72ef61bac286234113cd9653838eb844e6490ba59b28ffb35530f9492e5c952e9e193988f470926aa13af01863d09687514760bd0751410cef58be69e9a9bfcb897d21425c58c15e727e24b626df5643e2d05bc0493e4ad15887d84cdf88dcc8b7326572bd40ae9f08c05951c9b52d834c9ec064f78b7df81435617b25c283df923994b235c539880cd1de892988bf28edb974e8ffebcdb5b02d795d8165533e518454807804635f39d6d9b610af355d06bceb5f121b69420f880cdbe4b7e5204107d6b52b396151234958800fa898197f71bca657c3967a654de6f5ed6985c9f31b56163e1042050782bd6d7c0c803a19f4b7e167ede1e03b08adb0b21dd47ebb5de14a3eb563faf587b5eb53283fe558d33600758e79a81cc58f0776a698aa41d72ac6fc7dc385172c9922c39cdab9a2599e528c1864962e3d71c0100a975e58c496f60e43e9f1995fd1fd7531f7dde189249b7e67a82572bf499f5bb635bf001669f7ec7e8cfff1bf5ff179efcfbefbf3f1fff4cfe64df0beef31ba37fb2ef80f7f96b4bba16c0cf872dc936207e7eda92b00be4e7fdb6b2db303f7f6c4f1803fdfcb325611bea87a9ade93ac17ed496f45d703f7c4bda0dc01fb9256104f9536c491481fe88ee5de49ba83fa50a7102bdb950072cc8761b6e46854a533611ea78b5626d2beeb63652ae02d5aeb657f6f2b4d32347c39085705a9a4de0f0ebbfdd74d0dadce8c767991de638f924b65f49e090b0f381b96867956523fef2112fcd0431c1ef9b6037764dc44f3ea2b1e9b251dc57c15978256bdd8a4dc36fec2adf4608f88705add003dcdb44da32fed848e0ec2a6d02a532b7181bcb48cfd75015535b596a270969f5034a60a48c93236f8489c04b0d4eb2202c31a7df1de90f517a30180d441353a80c4e3243e05eaccde598f543934b1c7c1b9dee825b61d5b02449329a8a6bafe66914ca0cf10e0cbcc22df373c7fcfc627e8603f37b2f33bb50926c683c3ae5f28f5376b23c033b24b05e37efaf01be85081ab491db2bfd34455c874b13aeb73541044d12528c054d7650aec03b991e47c06d3bc396778c2409060ff345bf2a397b0ea70020b431f84e76906140a73b27573bc92ed77198709afccb777676764abe93ec22b95a256feda51cde156bb50bd7de6d1dbce61a1736c84ad19ffff7247bb0f7cfc77cefebbfcbc1e0d1604fff1cde81ff77e1e5085e8ee065ffe8e8dfe5e0e0174876f0cb21fc3fdafb77393cd231fb83c1a33df839d4ff21d9fef0ae8e79348097a3c747ff2e0f0683e1debfcbc35ff43747f720e6e8f0917e393c8297a3a3c3e3ff572bf6ef5e7fb0774f17fdf0175dccc09479078a393882626e0d8effd74f3f93a5fa2664d00c909d4e55a4d7b450211080718b093e01eb8706cba4a6fb86e13f303fb7f48fb947ccdda904100a654760bd80eb2913335fd6ea6ded5950ca89c7afd2ef90096bfc635233722ea0be1e8d7167aa8fa9522cebeaea35534f3867f2f737cf9eeed8a905ac997b796418bb9dd2a7aa970b103759f1e0e36909e686ef8c3d948ffefd6a6a64fb3e425d552c94ab773a09ba5070b1cb2e0d5907a43724cc1aff6332992486b48f66b9ac994a887ddf2b6cc0711b82523f43e84ccdab2340953ed57b2384a8c5e3cfcbf22221f0bcc7e0e5f8b8bb66669d9e0c8e47176aa27c251519422527c3e3a69ece0fa4a34e4292a9cccfceec73bd605505a44d883da56d293426c73e94d4d62ff485e64b255eb10b266b5d08fb6214a75f31036655bfd2ed031dd4e45414cbda564677179317ec41b598e53f520f5f72925795b83c5a56d5eb4232c677f2fa8a173bba3a47ba20787a099a62c6e94fed8697fe6572c7a9c9ef9c0a397f2ec0f835576c67564ea78cef54422c76b87826a6cb8aedf0265e2c180795b0fa09d70bf28e64f9f405afaec013a56eeb8e34f498eed485588076583eaf585def948acd5febb01f1d93073777823b7e9364beac54b9001acf970a828c6a3f9b7e1f990f486f108e7ea745ac4793b8e4e017e6bb32bad59a46492100985d8a4bfd53975fcda8ccf9f7e577a79d9f1497aff5d72431d735df95cbed1b0809e7afa9a23f4ffeddcb8ed124dffb7a8c7f3e6b56ddb98a94db87c77d25de2e162e9f861db9521b97501b5e29141ec39c367277274c2cc6004e064b69d6d37cc37e60b1841223ba990c8e57abe4857b06418f619f27431df3dc3d63ac4fa09b376301a21558c96daa2fabd8cb46f49939540fe05a09f8197fca77a635360f7b8be0197c738558c3d924b84434178b1684cb0503cf640b1bf7787b7fcbe0ce704fb3a1469018f6a8553a1c90db18a76992cbd2a464b8e3c2d237af914394a748368d0a5aedd872db6ec755daa46a64d94bf7a926a709bbed18e0b27e9e3f7737493b77dac1abd5f057e746ba375c03885901307c885b6c16698e3fa062b8a95fd3eb2dad81dda9220caf56fe7da6dfd31455aaafc0a7021e9fc2e4e80d3234b34fa437c4780d22363742f8d8b9886fe4990a672c96702a02c043382bda1cc3984d8a885d38a63ee7839e1bec699a2419cf90a245cc8c10d90e01f684dc5c3bc4e9810171289cc19366818a34ed0d0c425a92e90a13398e1bf2fc355865f28e06728c4331d757580de211efeecdfc608ed0e02208b84dd0b8661a66fe0c1b0fd72409ee45ce54e483dec9c31a15a5eb3551e43a66aaacfa2d09f92e177611bed8dcecf52a1ff38cf53f5eca5c2f770060d2071f777965335e079439896a664d55fb61919afc71083192c55ed390b17f6a92dac2469c7e550e8fc4c8fbc6cadd2463d2aa29bd8eab9a4962034cf30da821f8059c66b1c0dcd9113752730819b7aa9a455509fae899a5848947aaf904a729ec12cddeadf4dc0bc063eda7360b2b1bfdaa9072024e696bd32c501cbbb14629956304435dcf2c385dc367ab957dd0a9410d13de28ccdeccc7c17b3bdae39d24f5f2645e82c0421f2c3533675e70082ab539312ddf89479b6ec76cccf81134d75c46729c75782e0b064d82d334fc00a81326c0ce30dad3dde1e8b58714b4350ea2bd5e3b55d03fbfab008f6c6b7b3a7daf452d70b6b34d5ff63c7d7b94ca34b5f4ed01b103549d0ba3f86bf726372c6c178c14c8f5bbe7ac99717cb552e1c0f09dad8cae75534baad620f041dc3a4d3323c7406a24416a4fb976484792decd0b0a811279535078abfbc8133f18f0e0bf0d20710eddd55c5e808eae11801b49a7ddd6f4be1135f11bd4cae2e4e10c6967c3315ec31991abbd192bcf666a27afca3380fad83bc96b06c7865ce62765b1a74f1f3b2e70af9e95a76aa7c817eec3a22a177b8b5ccdcc93d48711b84bde2bb9627261314cbac2f68c8793dac65909bb7d33923f7d469e8a79c9f3b0668ceb83d1de495e9c9f49708c7d5a56d59e58e445a9aecc0b54e4b41262ba0719da679f4670b5779acfcbca3e6b76bf79dacba79f96b5b2014a5a4fdaf07255d9840ea8055e2e0d39ceaaabc50cdc23db47214bc68d5fd5bd9990e557c1555e75445e30a9ca22af7620d55e3ebdd8fb629f8dd398bd2f3be53c3f6301692aa614937b9adf80575d85929fd916cf7379cee41ee353f7382ffda3515b14174c42bf3af5932644cdcae29ceb43e1222fb9da13720a9ec6b9a8d9de706721a02f0d7045bde3eb045dccd54e3dcb1761556b2516b65ef0e83a423318e7cc5a4935d588839bbad44a8a73b637cdeb592e657e150688d3d39a2917a21b51e48bf0f59328b97b9f974a37745efa0f821ae9d7cb72aa663b8a7d517b392f66429ae7292b8491e198f7a6859a3b6a11b3096a5ab0e46521a66cefa49c96fe059424f49baaf7169aaaf39d8bbdbc5accf213a6ca62e7626f96f3335dcac55e3965c6d13684cf733563f3dc0c9d0b562821f71800d0ede81105e3e8ca3cfa6114be5ded5c0a39f543e85282ddd7de5c4cd9ce9779c5ebec0b3866ff6227fcb705035e746f04c45345e69a3be8120f35c2122824cb0bb5cc15dbb16fb290a2726f33c94eed63105acfc4a57d043f39eef9ea7b44183f52531086595ff99707009435bc77efdecf505e620efc5fe655a617a984c06395f333fb0827826d0280ffb21aef9f3dd555b9fb3377470f5b1d959f3ce153f6055ccf89ba7e617c4f7d971862f82d31c4df8a5e1b5bc1efd45d86b42d856508bb594bd998231655599cef80806e0794494265e5e562c78890bc7965aca9dcc8475ea858190b813142a323f737e8f3f133662cc3303612e3c4e64a5e83a9c367c41cb2ec53ab3177a9da3a7070f67a135975bd76f78c0f197a8918c6fe2630d052535ee9cb954a832b4923bb7ea02245b17385f0f55395a6e8a90295e562061ac72811dc1d6b5d0b9e28ac2b6beb1daaa141e52c57084c5778224ed3d70a5dea43f773863e2ac2e80bfd4e180185a9f0d4f9a5e17ca0bf20b331d295043211f4545185f589f91b15c5660c5835619d418020e16899b4bbde5e171bbdf3e6c52b1c371a9aba4101b0444879805169a50e13bf0a124730251d7d663e7d97a6e881a287cc7d80c1a8a4cb2e65b5ba77bfdb60c54cbd4f2ad233ff5b918f650d5a9d40cdd7cbc54248c5a6d903f59d1ae86afc12299c59b31ad1a06fda879c1681ce5db14de7aee90ec02d0f215cf2344d34779778e1e158d0372a7bc55081c70fd458d0572a43823e57a4a45f14ce505868a44496dfac44566c9c89ad84056e235f2af0688a043590ab7e12be5048004d46659a96889182284cc21188182d62061c6b86be399ba769c0ec3ba9d123850ae2c249610f41eb353954a125d445c92e33abbaa4f2b2725651478a5e3fa8549618a5e4843c32c5658955584ec833a6f22cb1bacc0979ad59f42c014e5d0704ebdfdbe0167ac37ad2ab349f313ddacad3d2b672bc198418ce7a3dc4e8116805a669af07b8ec8d8a55e09fedad59b53e2b3a20eff4bf3ff5fa457e83ff7f297aa83c156ab82a796f08615e3e58133ef0ebf93e7cb1318bfc8cbd6f1e5d7a431d9b93a58579339434cf966ae6a5ddcaeca122069bc8d914ea676b532859952b366d9b25867684511238be9e4a310f0e7b814ee9584f26876d1a25c46b321717f0f83e2a474f371f03c6298d528a0fb77a6d9f7dff7ed6bc86a533f9538d8d018d4e6f15348d46aa4db1a7b2418674870dc820a8c987ad35f9b0a5261f6c4ddef99abc6b6af281fcf68d9a7c3035f9cdd5648dc90745ff6a868e3d903cb16699c0be9b47c3b8da1122595d2fa53733e567c645e7cb38bcacdc50d38f7648a9cbb276d998c2de7883d5b27e29cb792eafdcbcfd49d16b68cf639d30bb6e23b9640e1e0be293b6291f7c2ac05acf3c5e30991c6bfa2f6bf694e517ec862c21febbb3b46db9a19e2f83141bd9dacf4dc6ee25cefa86fabe0c52fc48d66bf23ede057ffadebd2e68bcddb3c39c751011b421562b8d0dd15b5d010041ad39cea399bb5af5449af68ab646594165df6cb620069519844492213c2ebcdca66497ab556195c4dfc1777eaf1e23411551146096362ae397143cfea2777860fa9ca9910025eb363c5db0e9db87da3d54ce426d833c314dc7a8a47f2992d39f54bf19b0a4f6ef30924865c99ce02ca4af01578b7aa567046325fd60730d0796c9371cc53a67fb9e38246f235413e3227b8904369d6025af10a6401fb70c0e033911d646060e01d56e529951ea8c02e892b4d6785a10c4a34c6a6f68e332616616719749415afd46974452a59914895966b053a96e9366c81415a37254d24fa8c4b8dadd05048092ea4e2a46f5a8a69f508d7169234683fbd55e39c2068d8b547b7b2eb8dcab46b8a09fc031ae0bd6f1465aacf917237c2dfa79052a138a61a76e66b3339faf558028ea8e4150673d2c27c72391a6a207375beec20e555404d9ae5670b18c475819131e8189a09f7437e98c0478b14853b99189eccc44984c2426927e42d26412436b027ee65b04e89921b2984d2a1abc32a949f2160948d9e095792fac1346f87178c4fc43c5c640d66fc5c00ce1e1cf3a60f8b35e1a9819e8aa47ad4ad23fdfd4b56a8a618d859d2d31ba1ceed096f597b29dcab4ca47ab5825dedb49800f21b8d4899d0ac1e58e25588fd296859c05e734e4e721f9cb53d4fb4739607cc0305dad7aba3113fd724c94f9c54d4e9b183c2a94a08c00fbb3191230a6955520d493c03f037a77790abd82f653d53712b337f9993f0e987a079f37c9519313eefad269801e98ebb8fc6cbc9f1d04980f506730c8e4e0eca744c9f0eedd10a3503aaeaa8758874d4bd0c8c840014ad4b5d369838cc9b0f1ebc13cf63fa74c2f34a351635e62b20127bcc1bccfdcb6d52bf48666960158418d77004aa9304f0de2913ebc41d028374b4a4e296db050c12137543e0f6fe54cb81ae534efd7e54955f2b3b5a70e8c333b04f438b33dc069412415a64f7387066ba0d95d1d6a53871aea6070c5dd67d098b58d943652ea55d947d6b46e6a738a7ab96966ed5add9dbdd0b96ccb5ee8f23bb2cf014d6878f75e82d76bde7481b96703bce641e2558c0fc0fe1900337d57f3c664d2a1351b25844cad4399935fa7dde41979584dd5c06aaa1056538dac41acee69fb6b7b01d67a1be467171c71ec6831e8a2ca35d4428cba69b45ab927dad6bf6fe6dada7fed0b7503562772248cf4af6160f3f09cedf1dc8003053e8855f9a266d337a50b58d46c39f58731cbd08b289ba22a17272297d3c35ce51da7bf244ae09003e2af2cca6214a8cf35390f8fc4f139d31ae2347ae5d1b2e070125c1dace5b1297ee0f0755d304ed3e181dd9f181d1ee08c514586032fed181e6072b07f1f362e30591cb36c60f4ae39bd7e5c1759f2b82ef2054bc8eb455eb0935c66c94e429eb25395250fa41497fa31216f17f6f5ed2221afe03466dee1392187e292db10c0242687acca9243b0e14ac8bb9267c98bd70979c6f832735603c667f983c5a26e05bd2ea4a8aa2c31bf4f45719e9067e2eb4b5972503bd5c7fde42d2fa7fae4775ab269b2264b4eafef66c9c3bc38371274722f4bdee4270919ee67c9a38ae53221c3832cb167a0e19d2c01394b4286bf98f2a5a81232bc9b250f2a1d7a2f4b5ee69ab925fb832c79942f6a5393fd5f1aa21dec03b90e0e74da33a6897370cb3c1b321cdcd6254e137270274b7e1773fdcd2f11650fee06943db81793f5d62022eaaddb59f284d74ceaa83b0d7d87ba8d4743fd70902547fbfae156961c1de887db5972744b3fdcc992a3dbfae1972c39baa31fee66c9d12ffae15e961cddd5a41a64c9d13dfd30d4190ef41364adf3ded7790f75e6b76e65c9f3e5dcd063a86b1576d5fefead2c79c6549eacc92c9a09e7ecaa2d75303eeaecf8aff804de8f572bf8054628eae85e70e0714a6c0d5440237480d18e1885d985c7b6d7b32ea37ed6c2b370c2c746fe6cb25cdacae98f8ec1d621a85796246b5289c2009dfdc7f22bc9162cb7120a0317b05daee51681aeb5ab832240896cb026b6095b3efb26193c0d745e0087f04315f8e132d6989cf2504c34cd550e40a2a7deaf1b5944c34c89653173c861e690f6260c3222fe6914b6b54b6ee8c68e5e596372116d33e11dcc8f6c56d3b8cdac52f9fb2e429b180f6c63d2259733c6aac3206a8ff58330dd7590f4c3d62c3f44597e08b3fcd0916594a023de97f88f1391572a07d74eb6bd734e271303c09a10fb7b4c26ef4983dfaad7d16332f923086a907f8fc9e49f20c2c04381d98441714df4e18fbfd44f41a8554f6822dfd8009d662af3336be1e0dfedd91f9ecd9ae263be94ca45e847176e450ef06c84642e06042326e2c585cb290299d5b136c0debeea3416793621fe09421d0ead0ef7cf26666a43a72e444a301931bf3ae44c282b6f6994f1cf84b2c23d77c1ab53827a3e313feedd20ddda506618a626ce41dffaf8672ec0a531daf526bae9b94ad49b95d2811db56a04cf56360aee0e7c4c20347db15441b8e90213e1fac082f126c43f41a829d49661df7c295d824e575228076b227d6916f2174c56eca30eaf61474d887b803083010c1617e609420d22b0b15280270835f8c03ad43ee9d0062d3821f06261c8204e9c9d8159877d3061cb6266db0ccfaec58c910042d94ecdc4810e13ff04a17a19d061f07b7c4cae38bd5e93af3c32383be391178ec9e09848039181c0c3c0f0184f062d7b885deb7c040d311e29fa6d3d06d9a82fc8dd641b0e1f3f26650da08946bb2f536b72c58d7fa1af1c3c31ad271373b3682f18eda2524043ed83b1da2ac11ccafc9a10511b1b2efd7becacaabea83930bfee0d586113bb80d54bffc03b8cb1c20eae7cf9c515912fbf3cf2a54c4f2a173e0d1c8b34ebd8d4af62531feae6a17e6ee6e1548a05048a05bc1ba5006b6d0521a5852534bf26e422afca298499271deaf67ec0350496d6863a8c43e3a4d9ce00c31540e0db4533676d0e73efffc4c740eab9f56002730bb0a53c5c228400476f7fdd6cb7533d9cadbe2f176eb1f15d6a436c3dec9baf897d87bad8675b9b06d33b21f012ace946ff96d85f37d7ad71153c98390d3abbc43df819ea6b0b6f415d0d2b049d0d8faeb7e1c57537bc34fd1dc28827c4bebaba76eb1ec1dced0d306ce437a4183ae5a3131eddfd5cf178c2bd118ba7ec82558f5d92aeeb59afa78c18fdcaed2d369c7dfb5166ebefbc57823c8c942c12606ce22136c064bab89a231e4b656228c4104591d1190fbdf51bac4363c204d32963348f529859accbda076b287385bd599c5f084c6e7efe77632c36fb65f0be5c846f7a2f0b5f2fbc7d49b85e658cfea5c2fa02bb94f9470359d8bc299f8b679a9a57c32b35ef4199cdf2e4de0590f33422563819b226a4a944b39f05ef365f461761663bef8db5fe1fe6e79f8cd1228a672c63f4222adfeed519a3871151ccce97313a8dfb56afe996a69eda16108f5111a5dde4d04cf20e2ec9e6132d645158301042b6260a69ba3fe45fa21033a03fb896365e9b6aef53e83352b40b5e1113b55e93679c9ef0fecd339f3c06df348d5144242f8b5cd8a8d1545c1b975dd7ac0ff8d54ac8dadc26716ca5b5600b61ef34f848faeb01e925d2c64242d20390527b1f463214cc0aaef29233f9849f0a6c45a41d65124ebf20892df80137f7539c0e46fc7e98dadeaaf0dd5d7c0db7032e66c28fad3fe54f0cac14bcb60f1e8113424b2e4d292f0c16344a494a735b9cd3c128bf7fe50acb756146ca7e35c98f47357859ae63179460a9264801a09725fd1b95a4c678fd06951679ee11a7bd41d33b7f37b75abdcd9b694ed133dd7de3a73cbbe4387618acfaf9740aa53a9471c4088f2d965efccf671ffa89786ab33f67e8921303c8e7e22e03444ceeb8d44fccdd9fd92b4ddddd1ce3d5cae98b05d06146280fa0097ac758adbcbde5631eb93f90f431772e0fa21ea68cc818149ec8600a00de8634f7b88c5e875f668c04df658a345f659cf8e1964d8ed7004bf89ca1dfc17da203248c879af33518f9b8304161754c487b98d301190e7ef56d4ed3c7dc3b50b04e09e17cf09ad30179c369625ca279ecf92787c92e4a92ddc8e15ae364ad198c0f426ee11b17b3d67d2179031dc3266ff8317dcd7777c9473e81b7637abdc6cd5b800fe915a83a8c9cf5c965b5429d58724e3174ec1e9ce3929899085022596c6db45ab1fe89985e59bfb6c19db5090e7483b9f3253d02c8c5d352d6ea11dcf56046a3f74d8de62fe1c18c480a99795f2ed2dc041d50bd563a404463c74dd9ae0c31779de318769faa34e5bf7a51eeb5fe2e93c4d87f646a8fad478cf2b5559e7065c83e675fd46b734d84aff5821d047834631d1e7ab773e0c6507319e27e3ee7a8b9f064d46ae4287ace111ea9d04f08ebfffee6d9d32747329f3bea8ff0b5ee1a0be5b3811265e1c19cba4fdf0987fb33c94e6d8f497ccd696fb8367b96d944a07480ee8dbec75e8fd85f1e06408e2ff97f8aafb9a3d234d080863700350be5b306f8330a52ac8ade97327e7700a24d206e797d54fa5d3a5df516b248a8a91db44d7718f865056699812b79a2f741af43fe4a1f53e09ad398f6814fb9482f2b4d1b1d0c149812f4504fad563d3059851bd7d50a420ec0f2d18fec34453c4d0f80176ff03f7546a1b7c52cb11c429d947c478d95e3186ac471d6eb2900b2ce2573b57a692d8ed2b4d743c33be9d604c8d888a356abfcf0b0a393701c8229c8347d099fc2ad2e703252357ed911a3b2cff8148c2ea9c2a451ca37e742f053c6fb7128d58df6418ff9d4f8c09c971cfcf3819eb4dbd8bc612f6246d32daafd6ae547779aaa586dce21b59e31f5da9585c1b9631882f0c8e94074ac38a2a9996b7ba119284f0068fd58644132c6a7a4c0a4e764f9692a7e95806d2e2db656814941bf70c48970deabe04de25191a6659aa221b89b04dbb0476269566c638ba64709201370b01770c12f60058408b318ea2818ecf683d27f00a13e7d69d35bc7510e3216a6033258b1d067c894485cfe98781beaaa82d435c244fc2ac788698ec96400c9ec6584a901f105e2cc605f3eee8823511e18af8d67afc9316194b7dc908ef03002d5d50301d8826be694aa49c54e55060ac5a2aa9eb253459458f8803762b1361b5337102b504caf07f0002b8966c455c87eebe13fe1c7d8415a0665513d984f95a64414f7462c0c276e98974f9cdeecce6438fcb5db9d0939e4f4dacca7ef33c932a33f36c93261df701ce1cfef3bf68c6e2db3629b2c2f34d8b1e2819badb4c891c5a27b6b7f1fdadfcf3cb2767ac7635409af47ab9749cf0bdda3e1b23b56998a970caf0dcf9de2db115fad8e788fea0d94630b92bfb990214e8ff422ffd2a4a2d7c653647b71238c4fb378795b679c5e37d337439cb697e18ddde6db6b999e9d4da6245c07321e2d0bc42f04196f1605122c042edcbcadc9439ea68ca3879c7882e84e216db3b943d750f2d69c7b9cdd9c35066a34668fb8b59ec306e0f6cf589077c8bf4fd846444b813aeef886931ccbaca5576d4ee705ed098caf59762de8038e845e8a4ffa6ef8fba3704907a3f2be774058ba336f4e8b4969847da28d9e9083d6f7243fc6d7420f5cc757ae05ed0dd6ba60cdb075ca0845cb10cbc90cad6c0fbd6248e080ef111b7c4f9aa2234e859e43ca4d20bc29317cc8e95b3d8e8db66e101d08fa3ec3d13c12370572bb0eb19f97d7f9a9457b43f2ce6d6920e06a2d0059798a3e39d675bbd8d3d98b98ac2205afe006e837ded2bc2dd0b583f7b367a335519820d5a152d96038cbfe23fb91974433127e6078227025bc4b195e63a2d64e2d4e32e3e083f957c0aa68d8d1bf62b02abd8789858ea975d50d86a2731a4907a3a2d1992d7677b19a243f25bb7c521c1f83dc249006059b504137213d7e4a76d9841f3b64167876b86b56af3a0a03ee244da50bb7ebd06b17dd1b6090145c9b3a24c9ee57853826f6d86eeacec2ba1ba7e385ad42a80d0aa17593333096c8145d74168d470e5364b532692c56de6ae5dc5eae5d0a0bae1dd4bbe98d0ff190f1c02bdd5890c69bfb30c1c441174580445d88457efc7d03bc230427faa9b5c14121230b0a02305b2d60a208bbc70e428f4d663cdbdfdb4f307920657ed52f6bf835085ac35fa9e35f40f3f4de01c0ff03661b81b11b969b24783b769169378c8280c2efa3c6c4e0409b6038235f67640615c73d8fff1280fdf0063527fc1e1c68c718281d0028dc62eef4a8ec4447097d7efe118b8b9ba3c1c8d8ef6defd1a0b60aaf3ff64bfe89d96ded65b53c2bf90b39651225af8c83082683a89dd7e57c51b130e4b137770943cdb55af4250cf43024701c170487bc1726cfe82bf2983e27bfd397a4a3aaf543504042d71bf5ca4e38e9ac5af65e918dda659f14d9a860f62727dd75ccfe66f6beef1f4eaf676a5e655b5118746c42e6b99a6d4d75f7677d3c837fcf9e26a4be38eb4ab83f180c7eae2fce42b35926032035b729eb340ef5ec866cecbe9aabd90da9376ad78655bbb1d9c1745372634133061f376660547ba5e63c6e6a8ad10b4e74579567fc4503093ebe39fbcc60257049a43b33934252c4437f1d56386ea0944007f7edab273d4affe1fdfae20c4cc9ed326cec4bf56cb301548dfc5684a4a4523602812dbe4f9a6f93fbf5c5d9af000d7eff6778248a4a19ca345b024f7be0855714c66167321227d70b049f9ae4619c3ef3744a769fbd7eb058a429fcf4d91756bce5757eca9e8a22af8e2cc1c69b9cf18de9d1a6bf0d6ec6ca1aaf332e03b9b790be371a7d9ab04de529e2690aaafafd2ab7a16da15608b4864cf0df6e358c56526bfc54cac0bfbf57cc03b147d61b9013801f7a32cfcfd88ba5d2679538f0755516ac15f60e4c8021eccb51c5be048fbf49b15cd8f717725af2bcf24185a896f3a664f35aebc7539bc9a9c9e1d23d1be1da0573efaf67b2e4e7eeed393bcbc35858f8c11d8b2ca70f24cbddf32b93a37d7ccca7c1dbeb45cec3573874daf74750c3f82df8da048419d81097c7a9e0ea9db191ee0d485572f6a8cae70bf7f2bb8fb20849f0e81a21e462961bf2a8fce475f915da79594ec525047e05081a7812620ec59555f5a2c90970b982f75a8945f42ac5393b74784f719095f8fbb0671ed4a909dbc8cb0d8b35c9259d24efd8c93968c5cceb8424cfc4d784242f92e0cab8962d0f5e96f558ad3c8a66844a9bd83531c978d7459e5aad06467e5dca369b0ed66072c28ec728497615ee2b59ce11ced46eb2f89204bed0ed14f5a65c3b7a4da4ac0fe86444e12ec43fee91fc0c30ae73c299eced699696d61271a226fc581fd792d34ae4b0ba5bd6afa8eb2308c20e91b4c9981438d3a7045aacd7a1716029bb819772b9190ca71fb56bac531e2834c09bba7acb13734f8286989472a28e29106bedd48296529ff9f401b5546c0e5d7c9ddb097692d7667d9076521b1f66270ce6c90c42cbf919fc80bbdede809cb3ab33c6ed3c80f93c672a370ece640e83d9a088c3e8977901692ea188d0486766bb4b9f4596bac69e3b6f3876e7a26debe9c3daf31dfc921070b940be795ad9280372b8334830d974e871433ec9c78fb08f977c7b2a383ddc1926b8a9178cc534edb0357551fa93fd44372660b94f9bed67cf88749b819ab8bbcdae0bb3b26eeb5ae59c0b8baef7655e79f5a3006cd02b4f011a60b1f1be57cb62236c29cb8db05321e7b9da08d6cc8c139694755df2b33d40fef320d2c336def320e0e616323c3c3de088d17b91907bb51a0e5baee4b216c2241e297a3251c75eacd06109ed508026d2c8b4787be928f06ad5e3fa58edb8e0c271c15665e905475ee7984512272bbc0aa44f3aadd5026598e837a30a0bdec5f52318501a51645b0615aa231915d8ec90a102a7e90b8e8a56d14e79d442191bad47f3623425b358f508c69b6a069ccef66f93ed5ab79eeade69bae7423acf8d53eb756c2e5b306057b2d383abd1c2b35531b7a759202073da65eebad38d8d9eea7bf7010d047783f71c31ffd16d29d87c2fdc95867ee3c238ba73ef5d37d07e690a314c3b627f6431f160b0df48b13541dfac4640f733d9e963aa66ea4d396762a9c6cda313c99c747f53542c97eeabf0c57df74c52d15ff21a04ad1feb62c6a6cb8a3dcaabea242fcec9e328da8c531719a89f49a749012e1203f50396a6e6baafb9c03a88de8daa45f8c9a6aec5a328fbf008f35fe4ced9e5ce6ba60cea9fa49363f242d2bde046e629943af8f585f1c8e8ac8eff969317f298981f333f5ec8bdbd5029ca0ed8bfe564775727f21f93261b733cf82841a7277049f751aec99be0bd375c9307927e0c5c899d47eba7d123706ed7e0c2c1ac76eea8f2518e9c0325afaa0748fb692afb1f8d1a11e81af2bc7ac6e6a2fccaa66ff93cafcf9939de5933d4105665eb87cf363e1bb9ab0d2b032e76e0da5ce885474d8a632fa04e533069087ce5fe50ed3471bfbb52546022024d20d972ced6f336c5cd37405a9ca65ec33ad406820c9e4af44662f254a2d7a1b4edf94d912f3d1bfe5abac1d1a3f4a3b58bbf7337c1e4527f43143cbc91919bdd57fef3ce3e668e4d0adb40ba1c17cbfe19532189fc4d4ea341a97b4ed28d9408638862c6ca7f703721b9029f0adef5151138c2c7870b0fdf884f321447360d68fca3a5a9dadab94c9ec59dbb5a7d947ace34046d53f08d8fc124c4dd38bc819ad2b4eece3dcda38e91a296f40f2426dba7c346e5a822d148f055c3990df79daceb7064b7e0b7ed2df8613864a3e346a0198714b64a551c5f877bfc67d908588c0ba9fccc79933a67ded994051f30a07a0614031e1d5001a47114a2812f2afd64f5011acd48080526840e88cde734885a30f028acd9b3da39cdb2cbda61705f6f729f5b0a1b693d041913aebf966cc9e23426c7a6a0b9aead75c0e5814e5c9daabc568f21d06402db4d18a07713fbde6409c479fc65511a018fde642d15e2305b8847c03020438d1640d02f6efeb1cbb0bb9ab47f0623a007902aac51e4d49c2deb97b5f1802ae60bc1414baeb9566c6d220df44a240ea07c8c10a7ba5e7a8c10bdca9eb32bc280881847bdccc237627cb5d8fd2904f008a71509d04028232ca40cce106f0f0a1e7518dfe80c1ef5970d0abad4a816f3cefe625da1bac47632d64e61a686fd9ef0d6c063f17b106f062f8bdf098f46320bdf74591d338275856a92dbf9cbdc13b1f21177fc0490ae5340693e253cb8cf958d9f3b229c76c03eb00d94916ed7a13020d314e57418baacd8f4149ad3db26be7116695dfa7867a03b1f24e29e19d79520ce778ff727baf393449c1cacc248ef04d444ee4791de7528627a440ff709278adc5a15ad71fcdeb9e5374fadfe1784b5bc8adaec0e20bb7666c0f529ffd491993ba7757b24f5678bedbe49ff60594e8703ef37d3392ccde9bd384c299d7018074a08bc1507161078c77a87f1da1e20aa1924f69a529fcb5d3549e2017c90d2e4c83ba9e15c86e8e577931681f2ee878d95d050f917c2086c97edaf79a88ff0d3e63a0a5fdfb55f1305d242344c151effc4321628b0413d7da775f45954d27bb981bdfd4ea23b1604fe9b15fda3fd39d0ee16717deea7c0b879cc26c77615eecc5d052bed75649293b54c74885d5c9d6688c5fc9c2f0c210c6c07ebc701ebb097feb1bb08eb4fcbe9632985a41e608df5592eab92d5eaa52946d76f34b0bea33ae2e0de45b5c254c6efab2de955d6f1c5af80fbd3951326bc408a846ad4ace8a83ff15f978088a133a551ae3e9c0ef04dad052dec8d9a8c3848d2bbdb246ddc66fd0799cca4c335ea88e74609dc656a3c1d4f4d3d838ac4e1edee8862bbbfd9e89276ac8cbaa015dbd109aa885991ae61e39812c85ae9b602bfd359056c13311c0e555ec4fa27dbe8a43ae954045f841d2c7cfa6650c01847051d805fc122137a531c188194bc0f5b64412526d64ab7c069ca7f35d0541c1365789a6856bf11ef843c7fc169b1b96a068b892c9a0be7406904b80e1c5daa286a747d30f8228ed279ed6f35e1c79a8e137e4cd9841fb77c141705459a3795fd86bdd46c441d5cb916cd2aecfc9151c4294792a836db83b173b204435265561b09fc8ac50c1377cba3664642f6081bef88ed153b4d91ec9fe435b39f9ba35559d0ebb27e26965cb169872975cfb0d4f1c1eea83c6112a7a9355863784d18ffaccb7e0dbae48ab5943b8d527e47265628f338479814f4278124fd50224918c6a3a2bfc8af2a914fa93347b0761bde09242ac036eb242fcef5a07958224cfe10889102933f4ac4f449c1d5ec95f1c0f13f583b7d5afc2cc8ff6c358f842c2cf246162b50dc54476eea28751db9ae23873a82852a7d279a7aa946480be3c1d74b85f592b65e3c72b09117213b4c4a2f8cdee483db22ac7a2696faf06fa78869df9875872309b967bdc0246fb50adffa65fd7229597cac5bad508f192d527dece348f3ecc1025b17b158a3372405fd2861f10ae4860e5f6f8307159e74622ce85b8104ce50419f48a4f0f881cc02418bd073b2999d51fe91f04ce231c8310b9c7d94a060c92e7714588d6cce77275c07ba0699d890b1fdb5d856764590b42c080be51344750d23cac87f2b7b2c7e54f618ec4b55b04832d7a2ce1396b17e821e7f5756d52b56b0f202dc7dd6697a43240c8c2d39be7dfefac1d1e38f3766fcad34267f5b7383fe5b16fd8ec5072997cafadcf14458166ddc8950f466dc98d69493c2846e1c990bd87968518c8ca9773cae6f1ed1854beb46b6e81cd94d3218b7c25f095324367621c4f52222ac13d96dd5eeec14a46b7fc6d42193e5854d7824c5dcecce698aecae2af4cef82319ef6ccf76b5eabc3b028b0c9e2fea99504697d12c5361f25e90bc6ba0c0fe9aa6dd1f6ca6044de7e28649d0f5519a7685a26e2adc58cd1b221126c604cd2e425b8678e1fa845851d37f3b46b6b5c2d7f0b09cdada23d648c756f496617366058d34a49b5dedb4083c6936b71e2012c2dd5dd6a9f8600d9bfb1fe1861e583dfb6cb9080bafcfaded5f83ed7b30b897e8bd3b100e829fe51225c35bbfc095bbf56e90ec4682c9783fd7150eeb1b0e7988829ffe47238a7ac54ec187330466a8d36e421a4e1690e20b384c981030777780e3e329208deea849719ce97f94ad71584a41145e3b015844c41225fb776f01aeb1a114b479ffde40b779bd7903bab09c7d73fbdd7316c48690c3842413d333d6a8ff589361c3be5f098bf66900caf1d876e7ce65a9663be7ecaadeb94e766328f4fe27517294909d04ef26eb245320eb69f4050ab89df5a739e486146b5cac36125867e220c7d672dd0966898ae4b43853b1e83d8aed94fc3692e1bbc15587e18b001c836da044fbda8cb032db98a4d2a339871639cd21abd15163c0b43ccb17de6e6384fd983c675746a10c292babc9dcab11bd82144ab50b0b3abdd8902c59a13df6b7285eb06b61259a8f058ac55fb6542a89f3a26cf8b306577e8c74db2115becfc728808fa7fb84e34c669b6181cc380fb116cce4046b455f0298ac04df476c50bd79f1e11de5dfe939c4793d5bdf4bcde3c3fd0378a0b097519a30309b0be3323c0c0fb8adce62cc72a22209a073b23f46489a3c0d1702399f52bf7812d99424750d24fd4b5a47f58443d7db2f8985fe086abe359f8035ba8130b77a1ed65c6dc3e18105370a8913c7d23d481d0701d1fff81ea207ca3393e36d3d30f34729d1d1a25fa2aefe1096aa59ae1febecd3607febd004ea5400c25e0efb5e82b6aa2b3f2e65d429ac0ff6a4c6437d5b5aff9bbf85e07aa45817da7691e818293c1c2956a84c7853176e24f67ff96ca1b7b6d47b5d9ea2590197f3a542debd86a175f38d615ea206db2d68ddb9282edaecbb23c318dae55d2d6cf642a71a5684e406523430d3356b4492ec1a7f765d3d10481f7c0ff0ad3db003f313b8017b5b49e90736b643d4f445730925f561b55940320f33d7d03ec8701927b484e786f031345ed3c26672181357203adf42f48b4628b16588cb2ee27ab714b5ee70831801f582b19524bb3abf6eea4a4f5de9a92bb753d7676ea6b7843d9167f0ebca9311dd156144b6e95e10f3455699785dbd16d99761536e2a8d14d8f684343d217d4fccbac82149d174856a9be9faae98a28294242775a3bc5e992dd9b86822335a92292de980cccd8d9aa5e32c4da7f773a7b53addddc5d733b307ff3a1da3399d9199b9b3cee674e679059dff155da082cc483e991e933ac4dbba32c6bc147247333a77206f2c4d677e63be0a3766a5b3c2a4a4025d91924c3d93bb1c57f42a5b7a36e38a2ce91599d1b9a6e214bc56468e7176b8c9a90aea33b3204bad86a2193d4585abbf81521368b651fc2c287e469674e605d1152067cca8843237f29fd30b34230599866534f7a9f39000b3be61e65d9de7307aa619fc1ac2cc376a360f6a36274b4de886ff9975da08386ecc68df62128ca1b92606a94965d6d0252d15aaf1a8eb18b634ca61b70789ab0faae9d2f0f4b57391737b9860afbb35a376204e694ee634a703726502be52a3d282bcf5f1344d7b5ffb53c1d968bebb1b24c0d7533b36e7637445a7646ac7e6159d4663f30cc6e6947c35a6a2a40a87e719be9eae56684aaf827139f5e3f2ac3d2ea798e454a0339293b927ff6cbca467999f11f48ccce81999d22b3d2e4de5c31139c5641954c17af4196d69a6e38fbfc2006d1a61941b04faba5195af4155be9219fdea47c212c6e814c6e8147fbbc40b34250599b74a6d46edd7903cd3d6a8fd0aa3769e7d35a3f647eb0a397ecfa85daedb8a67c09fe9e5cf2c7d374adcd254348bbeef7701be2d2ae3c3b6b505386f773766abfb77e9742444c7ae6481d396a6285251e9467c65a0d42abb792fe1ed174a6905ac6850ddac6a1d124c1cbed624a81c5d3181334345822fc7ed466562f3405111111d0418955ef7024a705346c10ba9a82f731d96a54f211f246a17e9f8bb9a000942068f5138bcd49a25353999344474b0a4519d35634eea30a7daef923962cd5e6de95fd9ae6e8ede06c6ced0be82b75bd4828ca6e95680518f14e243e2c4f1290652c741a6d364abd324115bcf31edee906177c4c28335929a0d1731c99a7c420aad3b9937d1c5bc09b7aa099a24bbc28917659ade71241ba32dcddaec6ed3069de0fd0d55c504bad1b04dc2f34b533fe97554a982a87914b54c53e06305265d68907a0ef7aa46b949e56776ce0e0dc8f02083ed6c3f21a876b079fd69592faa1c0cf857ab1accab57abc45f8935dec44c1b0d0ad5b4a01705ea0d30999ba721265705c0ee178dcafd55b12667adf793f8bd11a23e2b42dfc89aaf2accf6fbcbad248248796c457897129d145615f94cafa7fae16b41ae0aa74ad2003c39cb2f6e0972cf106438cc9401c668e1dbe1b18a0ccd332591e5ea710b8f58512591a288d3bbe6be3d001dcb148eb2b1bc3037925b705cbe7eaa2bedea1e1eba7f2facb6bb8e7eaadb083f274590e611a47956a093c22b625b3fcacf0af4b509241caa6995b1f0c8e217a216ed7878dbf937647e56047ee2589aa2a8464634fea2a003f2b4a0fbe4b2a0b7c8c782de25af0b3abc43de14f4609f3c28e89d5be4bca0c3fdbbe449413fb3beb97835191f96f52257c58c49f245e7f4dc1c7bc94bfbfbcafe7eb2bf87f6f7c8febed51f3db42f9ff5cbbb82f686e44f1bf45b410310e1bf0a84af4b941cec0f43e9eb8746e7836f78ba6c7c2286906e69da42d6294f91f55009ee296ff64df95311ab8696a7e84b41856ebd724dee816e607c91612e679f34dd62abfbaa1857225b0aa2402fa4c0e45d81afa7e2da10e3b762970ebf9def51413f159a98870575f40fca0ab2b7a8d3ef0a3c0a09ed968be0a35a10c4e8f302b7aea33f159b3a816f7558a8b6fb101235b7319f0be22fb25f169e6b7959000b6806d01154ff53415f41239e6f1d2756e83fd0fc7f20437daf8748dc801fcb7773fc059a8a3a7303097bddd1015ebdc6bcc2c5581363d53acc32c2be58874e2d55f3c362fc096acab243fd0b94a18c1c1681c221cc027f5d7554e0a382a2c3423f194a364305bdd42dc6634b6323af01480d3ff4ece5c9c0fa53de689acda275dbdcb4f565d1e815d936bf2cfaf010b6db26336f21010e9db766db78dd72d76ce82c78716333240413915564d7ddd7582186b3607c28d1dc706942ead5d55436381b714b9321dc4e5579ad5e313e65924d5fb1e9b2007d89c1fddf0a77b9c3612bd6ebe0a8e9973f0b2708fcb3b002151deb15370a7cfd67e10f2fd8dfda47741e4dc5b5a00c095200c4b3e09814d492c462c75be9993fc2fca19020ad7cf06a851e0baab7fd560cd5699b9e0199bf6e31dc54340a63a24d09f7f1441079ec5c734e5a99eb2869331c1905fab0304d0f4183621c2f978f037c5a7b4966ed1624cde115675ec9468e6533ba49239db39e62cd4caea8244bda1b6a8a1a6940d55ac046b3fb5f8a315aae5668497b0352d39c14bae1b35fdf16698ade1674867126f487f919936e2ce805d9069919a1bbabf2dd95d30ace289b5d56a5a9a9e94897e98bfbeffaaf2661b715ddbdb6adbb9a811ce09873d1a1487eadf2b38c1183c193293265b592e22ae364ca1675268319ee0ede0f8b317a58d0ebe612d3fa780baf35999dfa99fd0829fab00812e071f4daa407f03458fd945b3d6c1c27ad4f229e548ab6dc5eaff2a3cfc58a3252b4b5b0cc95a2b51b6e4082ad1f8880272936b2d5ab4d842c6c3fb213df2a0834ebc74bbb7e947a098c1705983665dfd23c38007dd0871c1da18fd4014c8feec31705e144e873c08d6d13d1cd9bf88e251631ca10267aa5250116919142e3b591fd9bebc5466bcd7fe5776a167d1cb1486bec501e7dc54a81f07570f12adc3dd7feed5f7f2b4095e06030b47b9a6cfbd5d6cbdcf3c2017368ca4908d16ca066000684d1eb7875c8be14c44ce98c9370fe5be78dcdf46fedf06ef8ffa9d710cd5798fb721c806c73b745288cf19f85b922270c37e0578a727fc10ea3da383d872737de0d6ae3c3d2235e8356a8d86848413f9420c5fa0fdb935b458460c3ccb13095b0cebacdca6b166a57ef3a4d914d556392dbf46bc0b3d1d95141b6282ebbdb0c03af235b09b067249153b368edd6183b3cfeaa95c0ac7a4b2a5145ccf62ce2b55d1211acec74a917e725a9dce4b296a5337cbd0695d9c21eb26b41af25cb9dba63f6569065ed1105b2bf0a78b591e6cdae88e6e5c97c01305917ecf79c4f2b66839fe65762a9a294cfd85cd847d77feeedd43e995e34cf87ec647966f01cff2ad6a4bab99eb10ab2632f0ad43e0d4c583398ad337a754cd83a6ca5c9dad6bd336329d0ede11d725eac1e14c6c74a2729dadadb8e8176dc000f96193e867bff225768c28eb1f5a52bd02d7259acde144488c0178c029812536a44e96db575b9f8ba4267c4a9cdd113b6146fcabd412b62d6c2b651e484114f46d7b9edd69be5ad2b7fd37ca470a6886ce51c9a02e8d201e61fb860b33d5b5fac9617b06e87372756c6c8c66ccad41a7b2e82e621819fc3a233695586b0e3b51bb01d0277d6089dd89a740c3e439fb666bfe3f103ca745a6c82c909437893af0ad9286668a4fe231a890e22b16f11a9cd99592205f3b7146bb2fc91f96b8622b0211d6370e48e3231ab115fd1cbd080e003dc064f86c7782c2783e30c6d19bff807d781e2ffd23a50fc8fac03c58fac03ff07897fe31282a33544898df9e69bf3cfc604db32bddc6a231013b86b6cce8439789ddadf8588c0fe2f4448987712dd26fef8460678c4a34ba6e4f0f1d3c76f1e1f26cea43e0c08cd1b42a5a0501bb2b1266d4e026314bec59a98aca589c9224dcc3836b8bf1631285420c8bf9d855835adae458a0e236f32ab158fbdf2f8d84d873d760c1970f29016bd81bd78ba936d149718ef3a21b440dba3cdb7f31d1e642d8cb361a0757a25acffab8570abf129dc5036168880d2638966f45391a2bf4be329cd47b89d209425ee9bf16400c56782323cba106826f4c4d5af7ad83d924861ebf5aceb5b9d2ea8ef5711422c99421df3cad2f4b65137cecf1cc0123c0eefba6783b3643f83ac7dce678e12ac47e94c34a265dde285bfcf820a40dd06c49a102b375eca53e42bb05a2533961b5cd9344d4ec4f4ca3ef7be5a0db6106c0163738238152335c276de11a0b3f25c8329fb54d09918ff2ec30eb7ab6528ff3e11e01e8bcec2a90d8cef33d1be217871c999248fe3c9ff7b703ab6e83c4e08c8c673506884b580489c4dc156d6e14a44a7d3472254ffe2a0b6af77592f4b93ecd435f0481f6f0bb0926ba4f74287b88257abc72252f95dd121b13505a1bcad29f8b5d90e4f116490d2bddbc35f3624e5f70d28ff062e0a26e7a6b422bacb111b970daec64e40c0c335a54b59a65cadfe94a8f4e6a5e017283479f54761eedc4b05497994748c100bd57b8d8a98d939cde5a9b057e3407fc23c548e2320654042959fd1e16d0786509217a6a1a56da8bfbd2c3daa48715f80e170d94213417ed3d74fae0578cc33c6312a88c4690af81ed45a4ae0b1a5b4c059bbc78d8e79e9b5936f6845e07fb2d549f17acbc0d94a1b0365a356690a32bea16e6758c34b11e80b074e29456ccdad07bb1f1a8d0ea8ef5a668b03c5d058117d4587fb7743f8b6686299d9f4442fcbb141d8c85fc49feb754760e26619ff8f6619ffffdf2cfb285a9aa4d05cd7f6de60f4a9d94c602d2b4f916fac53f36fd6cc86e488b5908e88da0c0837274ceac21a2e90a57d320b576fe02165da2b405036c867a291362aadf1603e328299d2d9f1918af26f9809567e2455e38abe15a8c25965fabbea1a134e4f896fb5b423b34e98c665b7055eb9cd026f34ebb6c12bbfc3a0b3fbbbad1fac5628ef8100aad674c0695ae98ed12b5585c96fc2017e9c6e5cdf685a1b9bb65348b1a0d1a076ecc5c298c229b2209294bab7eb765698d82ae8f95baf560d7edb6af59b18777a365b1a53493d84967a3875648a72fa9b58ad72932a27929c82fe251ea31fa2ef0d368e65b78d6377677765da15bac5b2f1c6cadd1089b6d818969d36862ab631c4d9b71ab3fd5bd29aab000a149fe16a4cdc0496c40da79af8494c2b2269fe5f5542d2ded02e6edf584b7c559453b58b4c86c679260b67cf91eb11d7ac351b6b0b6aad3ef847971a823a971274d3ea837f7099c1ff2fad329b33989cd266483826a8b5cae08dd56563a1f2ab8b2efaf43f5b5d3a3245cbf6ea5293d3ff6075315df15d1475e6d9dfb3beb86c3b839184aafec032d364b73dd6e6fa3dab8dcb6e63b6fed0f86d7fbf7ffb4ebc607552d217bf5ae5202888168134ada340e8edd5ea868af6be5dd1ffbc24dda4ef58474fbbd6d1d3d63abafcff226d607977ccfa6b1131e60d0bfcba7586b1e70bebc016909aeedc4a83dce1c2ac27d3b4573a114691a68712267b6fe8196d814732da559e890603daaa8594dd93bb731d0790327b7b6e4ffcc1f5477cb26818f172ec5cf9d158a4a05970e1cf1d261202737d0acdecd9243769daf72806e72068f6c0e7d450f68de806f7554efe6685e3e397120d483b742300a47476d0e2cc3fa6a9fddc6db8ba0b8cca6dac231ef4f903115f24d9137c4155241a249b8a49e529e079b58704be3632213b6a7a437764ba56e59c4d5f2cd503e51402c458f483d0c19a94b437681dedeedc1e85e79df21495de5367ffd4c1b033b09335a28881859d70e88606a6b571ddd860e9442d1adb6e33ff33770c256045a0b72e6b111a189c4b8238655e53dc1b2d28d3684e256d8459456382c02d36a89749c71541b941f53215f0b8a5e518f1a0cda4a0bf4924898c7aaaa3d9a8fcb1166b46c03c1af02aa0598935250adff4df0cba65debe8c279c16aea98fdbb8bf7c935238d3548239279d94272414ce50eee53fe51895210550b1d9edd85638df2444f11ff53f0a9bfd0124438d71702455fee1a64bca4dd3f356a32300cb2e38f00e1d30db36229bd97d2e36d14d0c43f0dd08ba7e358b5b743f324f1e45d9db0f1ae84e6b8b77e03ddb3844766c7d8cfe261b9476125f4a6c887570d0544f54af64e2e7a691c6bba90362c160e8b26f968283ac238089b5ef82d622ff6463296da9170644b20ef1a2ed1cc812dfc70418eda0fce7c53ff27e63da6d44862ab86a3ac8de08a430391128749ab2733b7b542015050db327cefc1ea729c8b8c2e85bd9e3a241acdab43f8af31a649f04a48eda65bd8246290fb28618ed4383a5efc0a3a73593f2715bf147fe4af9d8ef615973bde5473e1e7b78912cec3e9f606dd66a7341e1f10a3621cb03faee67323ef592ff4adcc75afd6eb5b7e0dc1bcad59cc41154807f2adc65b5248c1404503323ce675394d7a8dc17dd504185e5a6dccd39a5b4088c0841550ba4f6e47d8130792291bc4944da5ea55ce11b187636645c041876962f945b0ff2a3ae16e4690a47524972c23029421cbc704dd50b75170e9e3222574d537079fc5a3464ee0d0070cc34d01062407ef7094c1fb801eb576a3be2ef3898efe27f72e888369fc63a809c0038b25e56ca3bd1ea7fd49458d6dec62caeecbeb3395333292e779437986a7f4f0704811516eb7f2c94901861dc5733c623e76f46abcf7e024052deb72f69b21a125f4faaf09adc9443f3d57efc15265bdbd650c1b6d134ce07af5bef5411b55e23b8903020fec015eb5e0f495c9e760a1afc320680f0e361368874ff4344739d05dc38fb89a6b3f1be478643a7b02a9bb05b6e19db5f23a68781b4c685b9f7c26adb3fc8727ae9c72860adb536809c7ebc295e27787453825b594eff0e12e8aa58e359ac59a5b6d51d68e6deb1aeeebc09e8c8d6d669d759f9e2e649e4d25fc8d23658911c17992c8c0115772a0adfcef1e38fe578e072349bacd353971b32370038db07078c6e632a3676bb71e18ab47ab6252c3fad2a9a28e0455b19b8af3100ae20bde59370fbcba0cce6e88d0a8a9aab38f764d9b1342dfab3aba9d4154b53645528b66efe6426a822055d18c384a275adb7ef39b5e610244d9dfcad3a375c4ab07062a21cb762e90c4c0b692e36af80eedbfb5374d9c9419421b13e387a66fbab84de1de7f0913f99a6294488cd7bd23b9858c108191a2d3377c400ea95d32933c0612d47289de782a1f5aadf90248f76114f8c4883272403f7003c433f303d43e498381bfe0d5e0e48ba31ec4025635336a2bb2e0bbbd1ed7b6ed5f8e6b47bf463d3ee1797a32db45dd5560dee5a33e1fd1b3f0b0f5dad160c32968151be6d40ffa313ab6cb464f39204f860410be711df0eab1c7bcd78e3fadf095104fd43a19a083c1e64836ed1b5ec7f2cf2aa5856b962c6fdfaf461a9eaf19670c82d1b0e7e39f8e5d6f0eefe0136fa55b96f31f0768dfbd05e70d6b80e16106feb6fd81e38afd9c5acf6a3344d51e310c963a8d4230785d1e9c328380f55f83aa7b633bcc1ee925646e7cee5b73428094b2faf05954838272cfbe2a466f2c2b43d15185f0f29a5b5d1d1426809d0d89a393188d87f08549325c6a4ed9ce83e87b6b41d4a3418a64b1a782ec269baeccaa01da83358521e20d1d42dfdb299a5d5299dc5962ab3ced3f7127786d3a5abe7699a9e767fa9d7f5ee6fadb90968e17d331b8ccdaebe25aff58cce6c13d76d3b3b20513b90baa1b65ed2a5b19533232ea7c341d3957573eba8bc8aa21b39cd80ca71eec6633df20337a7b5a3776ec6520eb6e2d779e0e1651d00c1ea89ea2024f0b51fe22e6fa233341fe53e705dd37cbdb6ab4d112f306ec2ac637efb9e5ba30ab7584a8adaac3d6eb272a74049252ae85b810a1238a80c6702de38156e5fb2fd3601dca4af4aab16c4aaa31586e92c624ecfe4e477ee176ecdedc829fce0976fef16dfd824fe9b43943bd3c271768c18ed0d081c6571c6686fe8c95d9b936181dd19114e7cad132240d581b8eb4e621016be88c682012410e4b9559b7c697f5f899663bb4fa2c3bba5db7f4697127d1184f73fda5cffb67b4c1c4003a3e7c3e0fee18bbf7b193dd51961d2ca7f7b3647b65acf0565bad22f03513fef161f8e1a65fcb61331e34fc61ab5767edc720cf736b245dc79254c8ff78646f7d53a38401d809669da6c843dc0d844af741b140d3648a28cab20f645658c84b328531de67c2fc5d831d2cf85c522b89b60dda98a3c179dedb986fd2c53a465913758e3eca5a6a7318a53708c0d7b0106d2434107e4b3a043f24ed07df2a7a00756f7a801c8108d6afe7563a2cf08141c22105479fc6e3ccae60bb5946cda4ed8151ea8c33709c3f728c776c28ef04013fbc396660486e26183ac6ebe8516085a66d4f46df8ff532dfc296c616b3430a2f2b3eca120d6b388b55671463d3c32c7248dd542bb8cf776bef8435e438c7144b2288aaa0c85ef764892384d7085f887d8e64531005468bc89864a9c45830349ada97f9c82ea01dd0683377c41475eb197409be9d83e14e3efc9bc9d8d4ec3db15c8da197d10a8c0ce62bd001565de4e2031760d2d562b09357a2f9024ca7f290312fbb37911761bb25f90f77ad3d73b940f29b6f5cf3fadfe69ab1f5a7f44ced5e537499431e31cc698edc713676c7d4fc6a11600a215a832d415eec65bf737a1dfb2f23bbc779aad4701aa45d02ee31babdd450a475032aa0c1425ca004ab7b909f82cb2adb685e046c04e613c660699b2041deecc7a18fc536481610adddb1fdcba9786a62a776e99840f45d64c26243a95de6e2a2ef42b252ce7ee784e74bd8654a6a47722d37b8ac7020a6e137919aa48db9dc7f94506297069a1d99b65da5c3d939c0e40752d5aa7a9689f14f5e1aa7569b6bc5ff87db6047cd49a085a6192c35126a74b3d092a0a9d3520353156238e23acbd8fa3b66b88837db2e9c7963b4deec048ec060cfe3a436a8b05591d63f9d7581f362dd8e5da403042899e2af1486f5366b649995940194d8a25f5029b1210242baca934032acdfe8f5129dee7c6add644546b057aeac5e15d546c7f19513368b40a1741ee9d8f0056adea5a50e0fcd86e719361405e187411220e89c6332d49674fd2e5265256bee1de2974ae50ba7b647f41da91ad8545e8b96e0894fd36f6eeaeef4944aa2edae02dedd94a474c8a1245b3c51c32b7bbb000bec67f137772f0edf70ca6f8a850948d870aaf1a306af60a37dc039101c7d72c70d4e6ce3592aa4ef861031135bc374c7445b9596e255e338b4863aa157063a20c4f2fd720ffcb18a9c552162c53a4569ab9ab155238f8aa2c359f18fbb481c3405eba9b9eda3f55fe69e99e4679496343e4060fcf1dff1d018c48e436b5de6956ab3bee11b37ebed0e718f0e1854257355e25e156e3d5867b5332a3e4611f9cf884038aa2153d08ae4abe64207501618c152bb98e832a789d8ec0f8cde97eac565e0ba4c1fd1b711fbff69ffbf29df826500a59af351d0373e8b5a6666c626edc3518bd36d6b6b0394565033a9587572eeed6b585ea68851116d63229f962a992aca4670ae5a4c4449a27a9534e8e831bb7442c602c6625fd8dbbb4f0d491b666152b205fd8e74b62079e85d3019d2ec300b423da3979af3b59493ff8723f6c96ebeef9ba155c057f54957a9fe99671fb6894f7052ff433bd90783d93c6354d4eb91bd94692ce9d1b1bf0e959028ea3eccff2fac525d75dc3a4ba421ca769d91568466a39e1c7d8e0cf5e552c69ce2b154441f6b9cebec2553b971c84df00df75bdc6a49ee4c73449cc192599e6fc8c49b1acabff1f7b6fc2e6366e240cff15894f5601b6218ed4870fcab03e8fedc978e36bdd9e99dd287afb4553500b690a5440b00f4bfcefdf838b040f75b7273399bcbbf324e3a6401047a150a82ad4717b4ae51bcea9f8fef3bbb781e14a03a7d073bfb37cb31134cbb4992797af174c6bf47e2282dbec497eadeff5451d4b79e33dc965fa5d1ae7992d0017ed994fe96e07d49a411d3840c7f80d3779b602ceb2ad82a970bc9950b060da6bc3806daaa063310675023d3751ce2c8dcd9d2b62029be056cd1ada6401ddef80f46e970f06795779c70a54ab96c38e6f06836446e67d8cf31999b79750955a4153bd29c185a80353a659907c72e7426b890ae4389fe6e1d9d94aae1307ae0427d3a45166a164a2c2e52632496d6982e040b1bb15e2e8f63587b2dbb5936ce583815386f57d37bbee76a35f06ff3ad10d9453db08a0b3f6d1ddce8edb00b6031173088bac05058b35288328c514359c4453b5d3993e43d521d824e070cb4d200d5347d39015eb7447fc8992cb532aa7f66f744aa597368ed55d6fcd298eac957b7ce9a9342a2914089ce9b427a82a23d2fa519bdb0113efbed2668f711968804850460016b7db38e5599ad0900a916ab32b13892a86db8c4ac564a6b9047e40356ddd12173e73b161be9190a04b8f1d92708f658bd4c1b45c7037d32b87dbffb41963ad71542d7a5b15f3837564dbabfb6efb2614531e36546eb08cb8894df6b3c922d5f63326503a857d8c3f947137858b9037299f702d749fb1848b012c6c03d23460b2538726b821aa3e8e013401cebd588e42f38e1e54171aaaf6d0ef82e00f6230f84100aa35efa52a6154c6b576d731ee32c52d90afb8f116aa0a7f5667af61899e2e509c8d7ca9e3955ac0f8464955de518d6102b8e54df5f2c6288545e100ef22596a54296a06456c0934667566f694f50cb3750f29be4e736e11cc7aea349de6e59eeca7b2b3a9c614a89a42cd20560fb46ef1fa451579ebb9665eb89b135cc6e038aa1e8fdda317fcc430ee51c96fcb564c1169f8d9b5224555441477df2eb547bfe66095a0f148e739b1e85b58c9c4b1421d9aa99348fa2925b50b903fcfa3c84eb756ad6e11625cce5bd65be347e30016e347032fc08e129005d05911fdb83b033c1c3f86131ac9c8587ad3c9c493ca1ec0dcaf19703fa0cba05ee51fa8b87cddfc4338fdc94925a83caa1e751c176ee2b8a8811cfab3834e4ce9f9410fad0c6396dfc0deabb75fe829f40d7bbd0313bda492194aab0b873eb1019d15d0e24a40d38f8a586b264a38735ca9cd9caaf5cf309f3cd10920caf03ea917ee3e643ca3c2fa9c01823218a5ed3247dd6b2ffc5e9c638b98028225ca6a4378a2532595dd8314136f04b0de6a86884e434c604df4cc2a4b0c828935e1fd94a6f2a5435c3fc13629635fa44e9ad8ed40ea4b163092b50ee27db26d5c936d6327dbc6f5658e7574e6b66c1b6be7a5b66c1b77a27f5ca27f5cc9b6cea4741297ef8bb889f1ee8d1e4629db56218e980b71644912e2b83f46a2b41a7514c50ca7cf155e3a3a34a17a13ab778ee0f8e1b22d89aad1a05a5a5b149734a8471b5448dc4185e2920ad5b73cc7fd51613784ac3684b5d43783ad36433a99a80db2608054f658ce3fe558ff50df91fa7a12445cadd23a86784a747f2d49e75a92722d49b596f6f31e9d788623a4b9989e9d49f9ae88d5c611a8a6624077ed6c41d7e91535d84dd4b6ae1740ed435995f8514c8a72035470f51d37ec1ea83977762c9e3334f142e894caa77293947d2d98b36bf4fb7848134cb117ddfb4c76ae8d2cd74676ecb3636c792a7bfc586332ae6325c8e662b96a7e425b6fe75db05a6438f930ce8f81eb189dc5a8e9b453e3614a21a43c3dca35f2fd3a6bfa2abadf465658ff136b8993362296d4e52dee455c4f078396c22c865b3a7b33c731b21a2e432e0241162c0dccf1a513389b36629d736530782775305db4142e23b17e8aa177e1349aa4653a8f497a800fcb5838b374aef6c72c3d18cf279596814d1301a83a57ee92d7d93476b57c319b4d535b7cabc6c610410216f5dc344e89f7da8cbe5b7bf65fbcf5d229e9b41fc5b550c79189371c5e93ec5d9e48b64928bae31deef7e370ed2a1a506a5f51637e3afd4fd567bd0eea8f6124fbb8f669a9a9899d8386b63ee9f8be5e01f54730eaaae41ea7b3791404aa4f581480a314c548a724f210f951c45b7194ecc17218d43c2235a1b3d6490dbc6e73b8e3c3a8ed79d68aa2519e803a86a4bb0b574c7304848907eefc134786db2bfd9615d0bc9f3aea36f44dd2f6e9df7d86ce1e9b4e3cab6d650945a891d8257cc2014f390dcc8154af6e33cf363cf0f4d79318fb522f2f3dc1e2a6c226b0fd04701abb3e6de8e4c640325155d6c1af1d11afae0e78f7ba4d8320e24da2640fd8f1116edf25d48d10b6403876bab4d0f4596d51bf59f8191712ee46a2eb34f98a1b09faf36f244c62b24a3952f72f51476293124fda970f8e0bd1b7c0be071ca7d7bd15530c5b57b64383a15d216c69a37167dc671399e8c892ffcd80d907a8b27d0714ff97b50f180cc05f4c167734327a8b96fbed60f03d31958b4664de0951e80a74460c1292c5c22a52569403ed3b5dd4d5118fa30e01f628b081dacff72bffde91cdd4fe8dde918d97eeacd46201eedb95ff3945a50506defa5e3d85bb4ab466ffce40a5ba6ff434752f081010590d6381bce8b2aff7765c6639d0969cfb42664cf6a8f44ac58f1b5f358d768060015c90fbb4cb33bde205ba7a4a6b51545e1219af34f9ec8243d7fd91a8b2017c62d34f4c63f129956026572c9bc3e813d328a17ec12a979c51abc6a576d60217a96aed11018eb665e1a97436773a43751c0541010be82fcbf7bec2af9ebbef8d704adbc1e0460058c6742d257f07b7c3d1f193818e48dcb40792bb47c788faa9b64b479fef6300d17b01ec3e7a746ccc9a3cb582f5423b0920dad772c3db4aa78eeb742bd2436c74f0b0018f9ff8ee4b0daf243d09af6ee903a8ad96cd9b7a946193785ae3e04b764746ba1f5b2f4d30da0facb2fb3d446f991281afada5d299fd7bcaf0087d667838462f74854bfbe28dfe75637fbdb77f3fdabf9f58d3949bd592755d33e818008aaf5933caf0a454c74f3a048571c9eaeb6dae0fac9755f834dfd8ba8add6a11afc6189578538f0ef063333ac0b1aed9f0f17f956a2fef529d59ec059985a96787ce40dd26e3924d5c42b54be66d0ac5043c1ad0c12015e09279826e1040343e7c3228ef2d2e9967f857a9c481af131774a9ce9c7d09c2f4c54254bfb380256f3f3e569d599fe15b062e1944fe5807787834a9b1b17b2aa10b555e8d165db206b0efa9f044aba6b16abb8c46cb4d46da2aae49cbb2c816ee13dab4e7b1efd004fef1b66171c9d4c274dac17cd789036c090e4f1e0d7c98411a55a85101452d79d7e6684ad15a7a7e1ba30f95f4ecb44efa8a4275e7471af21cb21da3d308d7dbbc7398489313c2bbced813be0b347d579cf792172c91436d47119ed5c31274358765d1a5453b892c025a74aaf13f3ddac101ddb14c3f74585095bb95b776ebd1a341a96ba82d578c2f194a71197b20be6fc94e63f439ae0bc896f0d514daaad3e341eca14bc5880b48da512f01f45313c58d05316a88a968ea424a0fa7c61bc586b603c281ac99690591872c282c7899c1286e78910b06464820d220e1de056af31bebd9e6ef72a7ae2e17c1c83fbeaab6f48a6ede425471025a158a7270f55bb5b4a6f7afeec26b0b3618dc0a07ddb801ddc1200d97699c67f5d3a781da364ec5f828ba8fd5574706f74e058595ee584871fd84e98a8b328d410aa32aab680a213a191fea366f18a68adaefdd4adf2a8a677b7ecf0683d702bc67a55cf4910d061f19f00cdbff6eb7de1b86dfea8068d44be32b6d66e5c7012cfdaecae870eb3593754fccc9a8d4cf1f3e1a6b2ef08eda7834e98e5da479e70e474f2d15d7a5441dd868c1165ae2505c80ce73026948894818cde447d3bf8dab43c384c88e5257fb34cfb403d5a2517f5ff947c62f5ca1d9f0f259fb9d3ee6da1f54206d0d6a629929c09fcb69f7643aa71275d67d2e8da1f5c35a8136a89b1a58275ce0d4cad35135d95a8529f865208a6c3f3092cff960607f153c0623446101288a9f6bbf4c887e643586aad2b08d9f79c7eeb466c4ecd2b2ec33aa97dac2c6b3278691c0326a14a285c02f395a0b5f9a349cc47b0e741ca58f1c583a6995af2ce5a792081930dea3d0b096db4c954434ac5741942ffcc2d77c51989b42cbb070ec82e2a44adc7865f393c3c1a08c7bf323a3d7bbdd35e38bf4da700dae3555c9ff6dc6cb8d7b230f05e117f4a5b692d84acc43c2e3552a4ad59f288b3e2c971995da9d491352a3af71bfccdb8931b470d746282e1fadd5c44677e2dfb85bd53bd25c3e51ff647884123c4239a668652acbf29ed0c93acb496efc2e47c6fceaa88f71ee25bb010ca7070222552b36b578472d82d3030ed111f6cb15093fb0bfb572d1de09549aa725cead21b93e042770857394e3e5c40d932d415ea9facc25ffca10db8383ccbaa6319d0ad638781d1cd87b4f35a47a470a5d4f9dcfb8398f5618e47805bd4bb922c7cb42e2e11863cc763bfd971867768b754ca319b11a556b482515086d8591ae30aa55b0ca84ad5e63ba789dd075445189a99f14f244b22800442fb9156a458dbb8b5d287b174848e388e2d92d4a24bace08119c1471a58db964f65c7a1240f49f4a8e41d535ab7a099a072484dab6a17304a8d6fbab5faff74f1cac0554a442d3280594fe422802e2841f17a6b61b54f581fe606de07ef9b156dc5e655178c35c3491fa01fc91e1f70c5b05853dd062328909ee8facb99c625dfca0ad9671ef8f2b0300973153b1ee570c5c6a412a85e88a810f317aa18dc1cc3c33b8d5372431ce0a3118fc27d349310a677566d9a15ae26309d570b8d15af1bdda5f0e514e76bb98ec76d70454aedaa83faea985291270f29e612f0882c8f94f4cae3e0a960a266f81f7ea7d2ad624716f505bc3f94e800c16107d64382bde326c343e5d7ce1776230f8ae1621c9e4136f304f2373910c643713059ff3a98c744a16ab3ef2f2e8ea256d39104944c325e32c5bd1c54fa930fe2a85398c4b3ef2a7d2d86352e9953cd18c972a1c2ddbba2b0d1793663c3a3c1ed49489db6b86e9c49e72c6aae294a14c9f75b01ec2b0434077dcfaa3da7ddc898b35b73728e51dea2ba463d078f2773d4eb20ee5e282c564cda8cacd02cf5fcc28b04bd3216be6052e74c4a57a78e2238832d6509b394d9a7121781783f3b816c591b8bbf5665ffe5c1206521d0f2a430944a94ddce3f204b572f794b64a9933d7affb9ba87ef5f8e136d5a17b60e3d670854d6c15b4c45943f3b1c1895bd0747639c7194a676fe67859459b4bf0ca5d812f0559d320329e2a260265f4230741929245806a1143832bb6a0a9ad4bf2054b03cd39acf068b27a26dd413e591d1cc01f399074b69a375a3086d7a6076d0addec82ad2f6c076c4d2edcc012c62f1b1fa17d835ca6626dea0a9a5159d6cdf2f33593cdda0b2a094b32f3814c2f2e12da1a92b112389720454bd316e3572461ba6bb411608382949b604e41a7a5405ab705c05bcf1820eaf797e5c57bf155cd57560a7fe00f1b5c517a59ac0448d4172b9bf5112e3b5d6572bc9c9139aad95690a9f35df0924b4cd3500dc7fa22588788159e555fa27c0ea376b48f7c30687e1a0407edaf55e11c462d770552fa051977850d22103afc4fea961e3f509042f4bd5e499d16b11398a6d67f7090762e66cda96b9f0f5535bfa5e7245533652c085ea1aca68d258a423a63b7d235c26415c7126d304129ced00a3fc51827950159122575e10529fef82f3c5cc975a257910ab081d02f9e06592cd8469bf86ca600a478652de85f1b551b0816ec2a803064cede0607cfcc37cf9ffdf51bfb14a015aedba8a53ef30ea336aea421cba6ab56771bb46559a45e1630021def21726b804d0aa60d5ea1b4325ad9948fb83f8ad230635f94b4b1d10fd8fc861046ada6df9f821c6d205230808a622e0dc5cc103154bd3fd6c1f937d8dcdc5ee1042df052513ea2e86f896e0fa4aa1b8812bc7c00654df0689278943529296b32471b3869b4d2415ddb5d3d90c26e7c0adb6ea5456537752adbfea293d2760cafa4b61b459e127c619f6aa46da349dbd53ec2e8766782ffc4f5d75dfb78f370a29c18afcb65cbebf26b0655a3d67672ffcdbf6a728ece247859ac0458295623f71d2cd778856ef1067dc1c6cb3257a4fe0b644bf0a5493773ebc4708ebfcc72dfee2e9f2602dca2f3bbedee72ab0a02e7f87c7a5ef78c838341ec9af00f8ebce3e0389f820a327d8cd7bb5da0fe9e437d9b681a691d1ae7f665101c9c3fc8132ebfc7132e6f7a62e65dae7139b4b33ed747cd15ca5d10f3f3c1e056825b94a373b4a86e2357adf367a3cf9f8d3a7fc6fbcf9f8d3e7f369d486d3a5c1a2b89c160136654be9052b0f35c5210e8627d5c7e91c0d6829d1b002478033d9ae9a1bc334adcb87eb45162826a7536da28d10dc737301c0cdab5972d13c4bd0ec85e3643eff0dcd40e4f90e15ba1bd1cdc39590b189e16a5a6720f075e94293d3a6d181f058dab8c2eae7f9a9bf3216d70e0198c40dbbf33abb40a9dfd419436a40fd47042d71281ce375297081457d01802319cbf8e8958aada94f0e2c0a533754855013c6d98a3476943156a8fcbcff446abc34006f5312911f1409ec16624ea9621673b1d5a579a22b86d85e325e89a79ce5625939421823b24c07a1f55857e361810ef5e2975d2626994e8bd4c1abaeb693d58064e51ea2bbb139d01756ff08c466d23bca67eca73a8e4e3dd8eb462181fd7e0fa386a04cc6d1980b4255c6706e2973d2dcdd7ebe67777c9f2e3271d57763a72a2b31dd136fd148d31c6a76cb71b573e010d258a56746478a43d236a812dc8046a5fa38692e9b9da3e194e210289f3f1682a664c9504fa1e1893ee50ce5951b3f2b1baa46be619e5546a15dff5abdac4dc5f6d6d1757cf39ef234f573efb0ad778a374cf7d4ab3491fbffc86211a3fa33567bf8e7ea67b7b891a1369746423baf93ec1146ba3baaed4ef033c1e1d1e21dff8b40128de8a31c36bb47a74785cd3a8ba4e442d609dc14b8a79e11b9d95cab53f7bbed36f523fea28a2e89495e9c81a56248d94fb6528251d904c2becda37675e48b23fd9abe1b746897c787c1440f42d03505bb18dacb6f765d9c0a47ac4596525aa17a786be9fd39f5271f9814f84de688301c5189fb192045eb3dd0efc4d7574cab050c4f34f0280338629741d94d9b1eebc60ae3c38f455c3046ea5b8d59945a06f6a72cd0683fe0702e0045e33fc6706ae19ac02f956b5bcd7561d7dabaf734c74521768f5bf9c8921d67b53abe55f10706b4d42ca3706a88fc7f66e3dc5d70c112d8d6a2b3d3fbef0d6aa41334c518209ca718a56f8d6a8f74e19ca9b2887f21a92e66d24b591a0078376e69655b739ed4a9b3d9791a3272b9cd82cc3c331bac2c3b1d5f76b83fa55e562b0684699b67d2f2a5ff2055e34c31e6eaff078f4ef951efe70b8f0fc1e5cf8e6166f0d546fb5a0eb6b72f32a3748a1a8dfe8395e4c377814017d0fb6d9ed16cf36508be38af3f52249d72e115650cfd7060058606f9283015854ce0eab8637c4b28c7566177ed50c02b9f0cdfa418257f5b0040024cef0186a73e32544b52aeaec4edc1b9b866c65d290c1edcac78c47c73ea60cf070fcf4e4b13eed72e76e664390550b36cd4dc0e2c7110004ff21057e94772fc2798e088410b5829157d54bfe27b1a9c1d73ac0390c376aff927855fa0faca7608df3aa5ccfff9ca18503045a2bb1012c95b01295b106c102afc30b550ecda274d4460b6dd09fc0dd0e2c34d0b410fa07e6ddf0e42615ebd298f9e73a74bb419669e6cdc762d0d560005ab82a63ed530c8727f408a20c5f1d6c201a3dc3d960f0993d5307fd678633b5907e74e8d1f11355d2601e4bb8dd899bda02060022416ef89fdd2e78d1d3e6c8bdd2762c8007412f73a6173ddd4acf646162fc02f5ce73d9e369cfe16cef8737bd6b92f5b20d8dd992d145f857fe57fe62b1e891de3363c1a168a433a70fc3f079d5576fc52e565428115eae684f0a4a7b32ed6d447ac516b4477a494ad42eed31be603191a9e8a5a2b749484c5769b2a042d5b6ee3e6170904925f3172fb48dd20aa70cac50ae40ab37a51558b35a5eb2ac05dc56ac7d82fe92aa95c2ef18c8d04a2b5fdbd69b1bbc4257eec622c79927bab8ac94599dc7eaa29f577b5d254ac7f1bc9bf2e6dd8e0cce3561b7eb7fd201a7148474e8f887cffbb59af7c69f77516465c2803a9e659a51fe898114569e4bd5f1561465487b63e5eeb1031c759c913174c6dc1df78be51553c5e5eeabe5934f1d6fcf745a3334d68e09e3009626f72f9826bb719709144a71a79d1222b86da7845c609767c2d892a48341ea9ec960409e953c1f8d8d9795a658eff4a53312ad808d683836b96e2bcbb6c14056cc6965ee364277f35758a0b6b79347c11a0391aae7420e064325f87c6653e0060c640781536f207cf699196aa67db11ab5b4772292f8331b4ab47fc2a3e7723a8ab4507f3743275a98e2c74ef94fd6727a6cb83cf04967605d63f1db7285ecda8afc6ea7a7ee74efe2a1fb575442c87fa48023aaf6a7fa9332201185c83f7ccdeafd87aae015d72fafeb8dbdfbdac6fc000847557428a0a37073ac7dd378777bffa1def9255ec0f55a3c2bcf58e2823ad7196730f1965ed104c0d29eafb217709956a1f0590c473494c8d27fc3a0c0a7ccd088baf374cfebf5cd7a4d178c48ea3a8d448b6b99343ffa21a3e2db248d2f359fd9feee70a8b7c201f0b7033d189fc06fc6a3dda8ae6cda6b2f526ff1f0a4a3c593d1087e73787247936fd3ebb2bdd6dc17496dda1dd9d3c647416931ae643427b30d87a21456b506ee4ed828ce1b634cc86e279e11ad2522040be82790fd03abe734a50dced0182409cff9d31bd629d34ed496bc47c673accb0855d3cc2ee26e533af067fadfe7da0caf6e5c0cac6d4dfb1080bb9d7cce61b7a52f8788c76ae7c1fb6d90fc7d623d585b0639cfac3d6fc34aa7b2276ef9287524c478665435dd8d88ca58c746cdf7fc1d06839214c0b8e695d91299857559c6c2d35888ce1c3f6a389d6fb0f443d8f1bd1f77bec1552e37970ad90c5f58f2ef92aa571e088528ab3afc8ebdfc03ac4a73d0f233ee2bb2a39658ed0ff95cfdabb518ceffd852a5c1e08c998c787ad1db39876fc9f335190cc02dc123c440307e7212d430e32fb5e0e82e93ce830cd25ad4aec3268d02d77661b2ca50ebe0219da3871a98a8d23f12b53b52fb92a997440761d7e5892dcff5af95fe7769cb36c4271c3cbd06105d119fe8810d3114132d08be22684df0c90869c87c210df7c70ba26daf6b9f8366fbc30db134b882e73929dd09b4353031e9679f7102eb0c84208381d7604c784c939756000282c082132cd519dbee5501cc2bcee2155de4092dbf7e4b904e5b9fe6326a725b70480b6fbc9a95aa629e3477b1303ce96ef78100381d3d8b35bdb06d7f4ff822a1f8a2ee4a817444eabb782fdee4bd2452f0b6cb7266c857dd50d2640fbe9fad6b37edcd55f1900e3163325d9008bc24d6099991c160acffee76a01a8dfae3b5609dfbabd424da6ada827ff1294d8d2774d3e8d1694bc914508225c16aabb63ec5144640aaf79defba0a098ce4f36687dd241dc56a663999ae143d48d51818f139f8535263b374d0132f119f1affb465ce1a9dbb7007258c5e92d26d6164d344fa611f09f42279137584129fc6bb0898ed1ce43aabb3c93aeb94dd65b21149ac60767c1c28160fdb58973570c1ad017ec7ab461e35d5002590121c77d5469d2b14a3bd0d3bd15298a16ed52af3ee05dddf88191def78dd35c47dcd14027734515e64c4cf35fae01849cd5299011b568e2d410d1d5c8411251c8aae411445aa481823d83860fc486a499f3e54dbb1dfff91ec76fdbe4fd456699e2cfe9bd16401d489a83ef609ed5bf5b5d5c16b8d7be5094be056ede08941424a5c00d1b6043bb19cda15d1ac1ab8530456d48076ed79abdba0a6efe29a8011d263659c24c9ed56cfdb932eafab3342d31f738550111db71f52627800459be833fda70f7e246ab8cf198113784a404a1023c81420dd9ad74e8b8b6ab5e8b5d11f9b0674e81ec505d993d95c8fb8afce6d75583b38cbf48d667753bc24e5c12cf168a2ddbb8ce9963c38283d956772ae0df6797896f297e97aa3b971772322e03653344b9dfd2375f60ba8a3db6404da9cd73821254f6038045a41f9cc42392686349c1c051039ba270db9937ad66d23fdb2115bcb44fe752d1d9f0450732a235fc2f08f9d92a24d3fab0674b224d0a174425a3fa2133cd5ce54d871cc0ec7e85c27ae477f32fe1aa5fb4eb377f5b53eaf1b3d8aa81c0df4cc3e3a9bf8ad065e8d507b7e8caba5f84c9a329dbe97fa56e1caa4e66822c2b366ca3e5e69499664ba247826e6d19298d0dc8ad085670bbaa4c2bbb96d70288a416d9fab2338e9820ec5187f21d35b727010812f0ae7d46e81e81760acad97adcfc3bd2080963c49ea90f49146f7d680517d4f51af9d4be26b537232c9b5ef8d0eaa5cb2f3155903b93ac5f6f9b954cdbea9c85dae48d88ac0edeace96578660d65eb9d66e4a34703e364e1b00ae0920868e2999c1c99f5df378d83a74691ff6c9387a413cc0880700e67d8df7b6ce29e51538d5bef2702ba3eda13a86b98e335e77caff8e9debc8b1e32af989f6d11ad99b6082b977a7416a771ada34a416fd92de38cb22e95d59bc11eac3db0d85705bffa61121e09dbd8c7c47c5053561695fd65b2dfc7cb3b50b0102277ae0e30096de198ad68feb31e6326cb4a61333ae4cc71ffe240047591969a0478b826362e91b3e13937a0a72e9e63a2d9f308f64cbab0629960ec4f80f3a075e3b40162d4a3ae6025a6b1e592b8da4228471151f4a5a7387ff48418a62add34c515d67f59154d1fe5d582b870b760625c2c4f8bf19d081ca628884b73b3e6952a00335d3eafec2e6e0857e30a332ee533ba442236a116d854fa8fafb1ba9cc49eed62faad1d6548cf239fea0735fe10f6c38b641ad1a841b7f6058da374233c8f687036c86cd6fee1ca1ecfb15c95eba84e1a664c1168ec3508c826dc6d5f13ed5e700ee8fbcf03f9ad56cf4eb7fa19b5e335935acd9195552ff69645a1de5cb8b2c5352345a65dc95f827018e50c95c21393d8a4610d5a2d4461439acb51331e10e4b65a7f9d9e1ae1f29e22f5b659d6aceb26e7769a59e8c46c8e938a3fe18dd21a74723e41f9a669835ae211a8e91cb6a6be654db9ea66ca50d9869c4d17eb65dcdaaddb7631caa5ca4358edea6cc358bc72c7dd332946f5beb319b3f902ad87e1ff4a9b1f8a39eb3f7d3c6ef71b30278522bd8ed829e26af439d1160b8491997437736f582b2b249a3ece1d3b71dc70aef0a39aea8686aa20974050f717169e349dc8e48f08980b40e1a3861269b188585d5f2d3691a26f482c4b767c634e0343f9782d2375ca6e5284c5a6e13e059d5316eb84e20dd3374dc0ade21773b20711ff481c474fa14fbb09cd270614d785f3beaed39e798141dce48b35a80be0c5724f34cca174492a11e8c2246018410f565a5cf98706b7da85b9dc07a0c6b5edad6717a6d36bd2217b030a182ef5802f2f02520d512bc217e1e957f7841a063c73abaf562c0d458c8c367445c68b06756fcf383dcbb57b3c3f9d4ff6102f0d9de7e204042cdd51c8e4641ddc1b892058e1ed6d191dfd151ada3ed1ffe60801efd274597f4d606f5356978a3203810c81d16116d506189983a5854b39aca445c074195967ac3e203c5cd713b47e3461ab525d0419875d27dae834aa32ae634afc59cb6d7d31c9bb8972e44c304725cfb6d2af1f0ef3915b7263e472a5e2409309dce54273838f88fd30fef4363aacf96b720080e243cf8e37ca6bac4760cf33f422bcef396382f3057e23c5beacc32544961cb54acf53e540f8ea9f904049cc47a459faa05fd962af9ebb5d409f18ba2d81f7c9a773a6f186000052ee3a0a17d2e28eaf779e573210de78dfe46c28d4865aa6fde0d76633f7cacc701189c3b51436cb314fd519381a0364466c5abd4f708727c48c3604168d3b257a4c9e269cc5162a9631d14af581fbf5c515e1bbda2824d5e07523f80981b5fc9c64c6a86bc4d1e673687481a1999b6c0171b06a74596f64240b644760fdca5f64e5ac08fbb005fa69be900a56e5035a0b8ab6deb531d01bf93c794ad45d1d51cf1abad33acec806dac8d18cb496cbb9d406133696886d4cba6554e49585ed556411efb6a822338f8e8068b1a4b3a767723487a6c2f6a72c09554526f4f07f2a9834496b3f4a66823b374f2d56e240d5cf0d4773e422839a48d91db0e867c34f191a742cf4aaf436195fea3a55004234467720e81c2d2575fb349d4cefa25b7c8ab36581abba4091435826d4b90f80701e26b581f900656c1ad40dfdd491dbdbc712db6b845c6ee968c85b18795107d34965cdc0469af13bbda707293180b37837dcbaed1f03da3a1d568a8198d3a2eb8190dd5a331b86ee9af3f20de18d0bd6c54ebc8b721eadac38df70c9757c3e566b81c0e06b18d19ae872b914014c5fe40e3c6408dcb9aa1012d62ad3afe1b3112a926d04d52b86fb53b94af3a82a5ff425f735624c4ec31cb8ea8df776a6ca56264ccc59221a6ae29e1d970006e0b69c99ed202bda0f892a04b8a6f087a53234877a90b4db0f39f08de1a887d4c852449f477a244d5c5ab0fef1437153548899937ad6956acdaaa123f4a9d721946bb438be716bfda2f7b8c7fddd69c6a738e27018c7490c42701faa0dd2fc24b7a9b6927249bab176bcc176abf418bf59e2ea714a29be8ba8701ff965477f2fa02a440663c3fab81b16ea052c6eedd4d513b2566d53ef7db776bb2db559b7d8fda9481e0e889199269b53f46428f47139b97ced4f2856cad7dd539359d1fabbefb7dda25ad0e06a02e8d39185840f4c7be5ab9b30973790b0ba86f162b88d570b5ad9bfe3b09c96693dcda6c89a8147ffc36ce75dc711b0b368b2e49f54a6f7b124b7645ddeb1b8296499ead4e6f791cd58f077b41367e5245f9ecd2beffc55e61387d794e30efb8846bcd526b66ea3db696e1f0e9d300051d1f06105572b7cb592b0783bede6ba1dd053e58f42cd502883449e8226a1f3db5c9fd45e75ff4ef00e4fe3b00747676fafae5a7d79fcfdebcfffcfad3fb176f4fcf5e7d387bffe1f3d90fa7afcf3e7c3afbef0f3f9cfdf4e6eddbb36f5f9f7df7e6d3eb57d1f6f5955ab968f61e7d449fd059c8b8daefbaf463925f309e7d7bfb5e898c5fd0df913fda0f80a26f61814e29fa4cd135479fe74531e9b727a4efb2167a7b7c7bfb7d9ac9370a183ca613d0207c41ce1774c9385d78a4e9ececd3eb172f3f9fbd7afde3e70f1fde9e9efde9ed876f5fbc3dfbfec3873f9f9d59326803f5497c776dcdce872c7bc532b51a0bad8ec9f2cd261532331bd8b657057de3585aa0000a27df09fcad001d9b5686eeb4d4ed28ecd0369505443f3cf01b97a7d37c565d581705043a440645dbf48a0ac116d4846436c24233d6ff27ba8cf62702508be1afc2b7b7baf32e425423f4b493d0ef59daaed6e45441d068410b080bb0ddf7f10d3acff922d1e75c34425754642ce551307e143e091f05f66ca0e223892fc90555e8190546afb948d74161e8c49f09deba5b879f4881fe44f09fc960f013d9edfe4c26fad6552d3bfe1371c11376bb3f91a2a50d0af28cf63229582c03ef330ec64f1ec37baad756dd1ea506c5cbb01712056767347b972ef284062e084a7f54386a67f8581390f008a57838761147fb6394d5ac5f122b0a9092156bdaa664d3ef018c32dc1fa1d760896ac95df38a83339a22c521d9cc3f12728fdf72fe081b41af589a67136e4d75b054828b2dc5a230862d9856657636b4bcc6eaf001d116311bdfc6debaa0c68860368931450ccb72876658808a48c638450c93628f063a833a54c2d6751f65a8d653449baa7da955f9f6c2c04ec3eaf29dcd18e4383333cdaa9966654e2a737bcfad7b6673b6cfb13a73b0b3ef75d6409e011087a5d43f159847c2c65be538430980da0146941d1b1b30af0067c88e4e206f7c7e58ee95411ced3198fa79bacd5d690d42705b1e4f8b749b0358bf75ddf351b93e1a6d5ddd6962b0715c788359aacd429cb81a633111360db3825ecd359a4faa3beeba45ab76516a59903fc3a90b44bb67ec5d5f140d672f0ef77cdc7f096063a602c7edd9a215b0798336e80a2df02b22295a77665faa32984fab479724ffb6f39338a144b88ffc1feeb32f9d9f09faf79c66f205676b3dfbef0459d36967a96be8a2bb7f6d76dc68a7abd03653d1af73b5f21bfca5229b126e6fc11544da5e03a22bbcf659de0bb0d1af1a6b0f0b341e8d745c83b6fbf8868a652ad66a38ddee8c5e8590a7d706c1de61af7852efb02331d4bb500fc40524beaffac256d708ff1a7d8f5ea21f4b23578f2baa742d265cf6f4476c1ea2ce4a7430003f620ad18f83c18fa131e97e97c697664a1fb05f36798d3fcc4673f43dfe301bcfd14bfc617638478d917f981dcdcbcdd0c9ad99e1f87e66d570ded12c2317f4e58a70aec8881ac45b431daf9bea34bb65deeafce76f7d26d87c511493d7b56fdc07de2e01afd108511881b79822aff81a8d4cf645f4bdbf16b661f4b2bd408a3e6962de09e638e559aa134676cdfacb60602b843afa1b083eaf58d63b17e97546456f91d28cff51f62c17dabd0bc3de3b72497b592e684fae88ecdda6b97650ee91de264d6e972c497a8cf78c63b26d3a0b7b2b293759f4cd37cbf3704dbf311c92ab9f05fefd6035de8baf1b6fd7befe95866b18a2339b604991d1cf3abf920edeadfe798347e8061f1da1f7f8e868d2b18ebd37cf5a0785d9741fb5d6aa8ea1e813fe18aa491e4eccdf7198f2b5a9e2b77deae284537c8638fe3cb14354a32b734834bc4874c00fb604a3e7f8cd5058eb1a6dffc8b58f576534f862b7032f14bf760efe06213ac3d4980d7e566c416cd33e97eadbeda53b9b2988ab4d73698e583d9abf9563d75670de6e3b835b45815daab8e19b83f713feecfd6070f3ecfd143c796e788e2710bdc7fcd9cdf426e230bac11cbdc1f2e03d3addedc0a91ae8a7709366d2c2d22a099c6da85aacfad65512b79ad4672cd1e56e377a2ea79d0d44754034366f132b8a42de61fb88c73e65eb32c9c3877e8dbadb233ef2dff93e8af8c47fe37936e263ff45c33cd00746758b4b4bef5f3f62f4512debcb49236214c5478541b818319c6a4eb98335f2d426bcc6390b94626698931ae957bca34f6c5dea9c3d4334f873d4f0d6e4386e0c8edf3338fa90c1351d957c680a676ea277563a4da32e36b1cd23543787623068074814ce18190acc0eca5fc634be051b556738f6bd5f0f75d9e1c9a81e285b15767bf61e9b77f4b80152557a428f1405a09e48431b224ddc1469c483449ab6f04695b8613d4ffc24ab4eb4695a063f5794cd8508d1769a9e64436a920d9b32cc23564a36d44a3602b3a664c3fc01d94132447db9b3d2dbcb7dee701db73eb412795d6cfe6d9947dd977f69394ccf23b51486bf4614aee3f2b5209bbde3e33876fafcc695cb57ec28abb9952b96f97adbce5d561bda1ee7f78e3336ae6fcfcae5a683af125ef8b40ed98bed765aa2aaada20dedf1fa86c6b9aa895b1649aaad04d43fdb903cebfea639cdefb40d975d056d93d79e232f0a68aca23424393851275c57a602ad2bead086d1f09a9e6f487cf9d13238bb1da0e1826e048d49fdc6bb50b84de42ac3b3b9cb412828d71f94b622b33944dd0a268a74a061ba08d096f27c4d859a69d41fa10b2a3bd4fb344c8ae28ec6d8c31b62aaa1d64cf118225ab4356756ab04c6e3c78a41e260fcf410a2543f1c41c470303394baf73e4f9279804855f283e3cbe701cab0988a50a6a7daf0e833b97072e69d0b626f78a6de6d2e8958940d0699e2550d380085d3185018a5e6667eef149e8ed514aa93a594e693e56050fd1b9a6631c6e6c194a2148bdd2edeedbe73cd074e87ba625900150d2ea792b64751139f0de9688d440e06eaffed01485fc7792f9677ac9b459cf2b218a5b899551d311c970b84c8d7ad97a1d5a9354ad40963309d11e3f5a51efc98cddae8bacccd521885526953eae8a9224372aabfe59189dfd053bf208a8be6ae36f06c4eb21cfe3d48569952de813b2710d8f62fa8fce8baf8b0b47bd25f7df110a2e35d6a9585dc7735011c6a7aff15f4cbda7efa01fa9cd6a1636e35a5f8cfd283d7129879024c23a4ce68c29f4967b4c22b3b4239e3f389082bb285fd1fbb5d7f8c4418a77cc92e72f3be3f4236dc33330822c26b61425fe3fe683f7d14e125bd450296ae46d566ac5d31f3c180027f9b7088842e4302229d98aa528cc5a549721fd01eb317256a1b43ebb7a8c4d7cfb71b6a02ad052f09e7a992ce93a4477a7142b2ac47b21e294713409bbfac45b7bb7462a7b7ebf3342910eb428514c0c1e0db344d28e1c0d49cd1392c10e9aacd140d2d6b45c1fff7ff0507b498e846fa4c31e31915570acc011c0c6c7b61558a4d49bda2c1910c131030490591a908204ad46fbf1aca55898e1747b3c083efaa96d5dfda9c1a14e70d6376cfdea913f4fc20e8b1aca7a0ef437b52710e7545b7633de3946752e4b14c1b661b36ee8bbd8b9358cef2b90e636ce99c0d8ea4eb4d65f4ba6a7fe3f31b3ed67875aef418c224bd98ea7fd5e1e6e9ca3cecb0feb1be93e0427dfc51a46b96d150d02c4dae2880c696c8ff52ab23dc8da6823390b0f01b5afb90388b1526e51bb5063e0840f5ca85f650e86fee053a135ac35aa65b8e578acae43ccbcfb358b0731ac08909daa2cf38585477ae5740f85763b76a7c343c33c844cbfc8d343cfbbb0e7259fdd697a338889334a38ba06ae24b15c7c2d51139d721f24b11a26cbfbcdb8af10a0824cb2418ceb65bc91241140f06c61f0c888625b3493411b125504347fdd8e1ea64cf07b1359b0c22fd81d772099654812585859b9b3182d17399aa058cca09796fccb2b90953b2b80dbc75bff03ca15db3fdea63537e9e2f97d4857b2f5f5962659af45e4cbdfeaa2fab959a6d157644129903861773b37f16a0cdc1768988a6196d49a0d772cffa9b714dba4fa6c100687498f1b989daa89f8ca939ea82c3e4e080c3495128cec1c51475083571833016a3cde9d98ba6f33de7a7867e6c183ceaaca39bbbccf89b39dc77d6c1b5999b223b79c6996424615f3cecd6fa55631468726dd67ab27bd03626608572c2aaa115e2d5dac5187b9d2a82e80fc1a19ae3f00045b3ed25bd8d6afbdf42c9038d07fd7aebb7d6a0716dfe2a0eceb4673fe81682bcbde23557147325020188deed5b96f6a2d851eb441558764c4cd384e68c28dc5e807603c8d6a6d53c6c6e9a877e6fab7b0d9424a40dd5ee26ca0f7e3630bde65aa07d8d957453b20d7be1cc96a002755f3ff96725ddc361554df762c36c9d53cd6fd14593d39aec6120e4bd2d97084f456f9d67ba8f5acb35389cabcdd98118fbf1bde40fda3a505ac53ed9ed00c55bad32a448af7b54b93c8de7c8ad63e47b5c15c636ee1c50d41c64b5dccb54bc26f1aa6b5c9521b6efe266998d8a566b967acff96f9217c7588665dfc04cc317900d7722ab249e4a34021ca238f44885563b9bb98b6ac2bcb091d805a82f22ede6023d96330570dbe8c1d8cc57d05993cd3d90d98358b413b1f68cc9032f585ae2063ae4c4fba128b1bea62f99a852e835145c401b694855b2b0ac5de1da7a141615847de55e1857e15c0ae8016ac912493b69d7bf2cac74045d20dd35df6f0034411779dc49127e69a01906c8c20b09dcf4ab7c3ed6f7a128c53e59f1b73dff7a209b8b9f7e3cd16194fb23d467bb9dd0e2428a29485189a9a40574626f2b532c7f0eccd5dac68341bf8cacec3ee816d2cd42f408efd1f546def632faf79cf2588bb576ed5388f62f649cf298b44ffe4a2d623c7e906c011e71fc4208720ba45a96d1443c9313717000f94cccbdb510736b896597d05f99b8a56c2c85a354b55867a47b1430b81598ed5f3a0ab726638a066f1bf8f21ee0a7daf8cccc6f0acac1480f7c30a2200e97225d033e4b0f0ee6504354c93d3ecfa1753e7502ed9aab91e96542e4bb7f0ea9aeeda43d1ba40cf5319bebdba0bb368936a86b91ee6a43886a43389f7f0d3609ef5c4071d7028a7b16d0606c1c32bea0371f96208513fa1c8f94409a6d12165340d11822a6b7c12436524ffab3bab26d94d8c914fe8486cb34298ae2526213fefe6bdfc3c5a1e565ba0cbd698393b0419b7cdea244a7a4bd8f3de57f51cc1d57a716a2857395c2bf4b1fb262d954fd13d1cabfaa9b09951e02f29e650e9d267605244a34572baae08a5687a24aed5d490cfb18c79dcdc7ddcddb896e40ac7dd23c959876578ba306aa57108e3d7cd4d6f36c0998af0c549b590f3cab8298b75bab29014c907b830d0eac3ab7bb3eaabcdcf08ece32442a40ccace6d20d610ee0a40f3806cc5e830308c345ca299ca8665d2c2266d400136d28acab651095a3b0cc4223ab7e8a93f206578da7cf070352c613764f9e31853a12edbaa445419b278bea5c9f0b21cbdcf9f0b360b6472f7f70c061353f39e3f3d61427ed41dd83a6be9eb724cde9f28e63f11f390f3d3ef09e9d06bf16588d60080707d203169fc98700cb0120df73356b498991948deebdfb3ee33572ea767a2329cf58cab300badb996da65f46095aa599fc4437a9902654cf9522b8d56d8abec7b9e75aa8baff7a5abbf980dba226341569a8d3e2da04a326054f8c3a6eab9a174588a318a5c8a4d6603add998d85a2b0aa64ca9284f10b25696e14a2653d9d39566de1acb76082c632b9754867ad20e9a2777eabf3c8fcdf8d4837438505d9ffed6d8c7f4ad8fb21a3557b61bca2f165f913c09e4ccd458d5cd175d8fb44c9a2b74e05ed11a94d224b8bc83ca343fdf1b0ea25701b838426e8c61b7e4504235cf67e6469a26d2902443c5db6f46ee80b1ab2ec13fd7bce045dd878131c6f89da041145e7699a44542f5b4491b1838a2832f43aa2c884f6500f060f28225c7da7bfffb08c242a039bb927edd3439153b0e84a3c5dd0b2595d92725afdfd6c149ad98ae8bff486c43292a80ec628452dac88e2a2dca861591373c4efbba2ac9029b02e75d691eee38bd3d3b3cfdfbf39ed74a70b1e88e287236d1ea019b4d91c312cc235b9a49f8cedafc2c0ef44bafeccd65434e8456ac982a3de61b6624ba9588a6acb54e1d32640961ccc340e37e906407d8666309424bbc414895a20c4cc0525d36fb58152050aa2bd474a177092d4ac7f4a9daefad41c828e9fa4704bc2946b5e6c5a3e010a2390ba30078a9fab0ea8fa18503c73b3989b1016f7ad5f4d282967a729b06b69b7030268cfd75af3d49b30370be6566a8498ce5ee743da90ed49faccb530710c6caa23611de0318a67746e0182d2e7ac46e9112f1768982ab2af232dc43339c7f14c1ea4f349f91aa76a0c45e10ab096b0507f5c18cea1d3365d4e65a44d4a129c85ef72134be883d5e4ef7659f8133dff3393cd37d514738fc96a30e9127b1785028d20e2aa443b445f9104087432f2d052282ed9f3465187acfe5d7ec021d20758213ad9d764da16adc6362e43a25048601791ab995337f05437f62e990281b6f18a08124b2a5e1149f421e54b80120f2512e182488265510002a31c10258a5b2bfdef923c5b6181f8deed8bf30799d0fcc2f611adeb2b6b3c5067ea68159856e16a835fad193dc1ce16cd69319b23713f5f4cbbf961d1c10feb100c9a2c307727d697bb9de388b45de64475092795698f6584b33a232cbe8a112eafe8f5f43a194e7dbc266cd12352d2f546ea2c70d44829b9a03d9ef2a19ea1d1de9b434e31a4367478acedd90e47da9e0dc43a63741c560b3b8da3d269352e1051fcd0e8319cc8f082720538faf2f414d7efefea31f98c3609a8c9c6b9c8d815d5b153557fdb0225ea9f1c6fcb83d18fef90c24e213688f485ee6c349fe6333ac7a9b1db280b93b290b9a702a20c48c4f4d00efc3e7218aec9a64b84cb803ca048f560737b847f4b19575bb7d640d268a0d207f283601b1c2890cc92199f9b660e8222f09a2aaca1487d0356f0eb42f06e60d10e6009b8d546758dccf6024eb5042167620ee84ccc61a47fabc702225ee85b5894613042cc392343904294a822122e13856e1c02fdcbf0499fd38f84890c82ac0d51431b05a0e8501165391bcd518ce56c3c6f8b76316ccddd1d61b3399278560a3b1d2a0e0eb73a924ca9ac0986019cda9b680e23e99eb41d68960a09742a79f3b0bd8ab4dd4b4cd461b0072f661c297cd23ba8d3583f856500e62bbb8567338ee2f9bc800f034daa41a336e448275db7f1ea4c104cc0516ad7868497f49c9cb3e5eda9bc4db4df39041c1e045170c00e82493071ee6218e3789a45fa1bb656dc04e1922d6fd56a79d8e8209b4ca9c6dd44616b1404457dbf7fca13c5dae2ac7d70f8fee887a3e35ffa6841d2a163c369c8df09b26327f0d22f77c6e793d4bf507586a6fd3a1ea670aaea620a5218f9cd8b7247745227a3e72f2bcde87cc2667c3e180039a3076084e26a477138c729d4da84fb2640e176362f917346e75d9344026ed79d6460af014953e5f00c8fbda032fefdc7745bd4ae59ef1d7215c55ec1bc0e5d01a7fe7478d77464a5cc73db59c249fc7c381e0c54934efd1aa33144ba406f6e090b18a99f7aad0ba8a89930d9c20a036b7bec8e505a2d85b4a458e005e0607c38824a2232cf630851aa9f0f4727509d5ce6f9318488d8e727506d4af3fc142a4aa99fc7aa9ddc3eab7656f6f91042b4b4cf4710a28d7d56ed5fd9e747fefdecc2d7df0e06d43fa469754853635eb3c6b39272a332a004cacaa7bc7c5a954fcbf269533e5d954f897b9a7be268b91f7ffd8deecdbf71ee69f25d3f29bb96587172fde6aa4f87e3a8dfaed7aa368e460574cc4c85a25e0c28432d667c8e6481b685c327ed3970387aa45008081cebd070deda896aed44f19b43d69958846bcdc87ef37fc04ff4fc92c9ddbbf4cbeec36e9dc16f60817ea3515aa921d8a41973b2181d0c824cb2f8f2561fc1f6ecddba2ad12c185eeb190c6d2de4aacf8bdf7c22e668f7f5b40643631ff5140357b23331496210c0e7c3312c515c78a88b24eada083d190aaa9345836f54137f05df5c207ae09a2b9115a78083a7879af6a9c7b1a26bbe8dc84369d06f0c582569a4c2e2079bc939ec240848d676a971efb97f939a237e1b7c49d3f590f120ea8f90f991e652ffba10e4dcfd3d67fc428df8b7dadb0e263639b8058aa880b2b56fbcbd729ede042818aed32fe563360c0ee441607fda7ac18144725e38ecd92e137aa3a1c178c2381daadfc1bfc0e495203818905f0911d6e4e67bca2e56524d7d4d6e7e620bb952cfd7ee6155be8ed3245ff3b2c69ad59ecb6694a8bd0dd68c0f7582006ed02a58939b7ac19225c9905c1196e89b265b26eb956c24efe1324989ccfe15d6e3a194cff9bddae388c17d54ef1727606669bf51584cc4f0429005a35ceed45f9278bfe98612c9f8c5b055b37cd3f8e69b7f45d86b0f19a35f68b8c9b02568b247ed589f8a1397e01b04a6fdd9ff0170feef601afd1598c7bf4238fd2b84df5c94e2a5ec106fd4943507e5f37695f2a19bf332e241300c0e7828d3b7e935152f4946013c0886419792a46cb05be228a5c43a7e699bf6cafc430b20412a1654042681bd0e43ed0ed814c507293c085070a06304c9c284dd9356cc46811249b4efcf03e1161a7bc22e251577493a2dbfa649f64e51eb6f2ac11e55927d358fc030769a979866269c5f0e2390018eb70572af1b122b85288728031c194f4758d27ea2459663bdf388273611b70b11b3e523d8bc1c7ad08ef42e85eac157658ff11e9dee7380936e637054f7126e5c0823e74ea777504467728e3932591d13bc958270cb53f647a8fae57a52a506669f6b359b655efd9f4385792840e9e4ffcdecc5f02ff36f2e508cbff93f6acd518ab7856f3f5419540f83035adf2445b724a06ff51a1ac36acfa7333a2fb7bd437981588961aa028e434933a9e426d5af8ce42fed837917818b152debb820d024e657c495728f156a37c55a713c93f3ddae3a9db641b621311d1291e67c11448a29b399579460a2df9d53794d290fa2e06f7926d952892c8a8f1a669208194481f96b0ba96e46fd5ba0186f49c22ef84b73f847c13afb2ea1376fd51c497c1920fdf694264bf7ea8da4eb17aad0be53bf33f7d2beb0a368346a1ad444d0157dd01411a961fd49a4d7654d2d8a5d51f3e6742518bf74efded30b52bdfb96644cf7fe51d02515822e4ed9171afce6cc8a1adb2b6d6951133a9ba7a863a7cd8eff36bdf920984e73e5896f9afb333437b8a242b298244114ac52c1be282e2d0950f979d9a5df82a0575464d436e17e4501d721818262f2ffd806a870fc1fc37e145c0bb219560071795102a45e78bfab7d62b1bd04f81e842fdf1b9c571dffa49b2c5fa81d96fd53f0b432d9183f81fbbfb69d3f2c3006a058a03bcf5ee86663c28a15f7da4efdcc69d9cf4896b10bbedbf9a75265a3309ec85626243f1f44a5a396f32a9189427b0e5b6112eae79cb919e748e814af3331c77c26e67ed8fdf87fa1dbbfbe221e29fe6d055268ee800f0f21d2773ce3a71025bae458b1b42bc5052aceafe6cbfe1532d7128fd0a6c68f74198ab568f42f1886c058464888da9df8c6f19fd4114579ec9ad67e7a2ba283119e53ca4b5fb98c2e7ac35e966fa800b056c378e795cc795fee76ee3ab1ef0b679dbe7a531a493b5620c3b333bd826767bb5d67a80e2021ec8eb5d4361eafcebd8e6e2b99bc1bc2a76a9e3d7ab31134cbb42b7d9ec91e65724545efdc2463eea5c20339d2968bc141798c4e68858e8e2418fb19a06fb32b5cdd7a16d9912527b476708dfd83aa6502aacefdc1c00537c96a109b76966ae044b4823796fa82290d3fe68296c914208a817486f1b12b7dc516efd29c77bac61c1c2012c684ff90d1571fde39ef618b43462d6463ab868c732a4c51ddd95577f2134b121bb9bda31fb6044bfc8ec855b8263760391ca311f43b7657ededae86ed014de860602b66b14893e4730a46c8966cc805fdef0fcb6546e50185c583a6e3f982f14587035d2dfdd646a49b2c2471aca6fa5d2a4ef510ce89c80683e5b3f1741b6cc862a11530aaed20022394e86d618a218007c1e62628a26d8124766f5f59932d0b605bc9b136a502c162a44db508b2f054e7c7fb9c5e5c24146d33799bd02c12601b9ca737c3ccb88847c1b9e6988d5235bda26299284679c5160bca0354de5a0482269631b6aa43ab45d046d2b20070525ed1e9d0fb78db0508ad48ac385b30aaaefd20d8fc4a87b83a0046bf146fd24b8128b98fc2f6a163711d1efd2cbddede61f9ebf7e0b1c5fed87e1d7032a00e5f1b80ecf0489dc60cc4b053c87fc0f94a3ae30cb2ec85ce7f82f83e8ba31a234561259108f81c8fca53e76ece8a1aceaa3436f2a2d0008a66811b4650bd9153b167cb952a49c46d168709a9ef89b8f6d3db08f76555f83d22d4432342dd7999bcc7e8d952712491f0f3b3fc5a9c1cafd219c66d0f9b143bb333c4f068c29ec513767000d319f33d6c58697426b0359d0514f3fbd92e0e8db9ade5bd289aa98f4bcb971442882416488409cb24e5547cd0d1237446888dcc85e661364a22ba528f054a74fc9ddf99b67f9869e38ac717807f0d9ba663cab698258f1d91691eafcc01fc99880b2a91ac8cc0cfd3c5ed446ae3922c64d96755f715bd6231854047d00ac962a1531dbdb5c80002dde03a559c80c99541b9d41fbe4baf6c248b06e64064821ced69cbea4fcac6de702a242366ccfb1abc6f602449d2eb7b866542fa7d2db7faab82dba4aefec520bebfb99f07f4fb87f7b570dfcb57dfc3dedaa635d00d0fca0bd094790acfa27cf415f6e44e97303e3c867eeea07f5db1fbd7629cc7e3a796d11b3f5167ab36eb3d5d512a71ecfd40fe9b5313042b6e15d56a7da699fc41b224ab552c4b910ce3aceea958c66a681d99123b7f0d64d819aaf9187d7b5b1d997c3ef1eeea4dc6b2177cf1272a5faac3da182b9be4f0ff4c0bb73f3ecbae2e7a3aec6ff0c7037af0c7a067f379e1601c8e83decd3ae1190eaca3e3f5f575787d14a6e2e29bc3d168f44d767561ab443709e3975d15c74f9f3efd46bf0d7a3738186d6e82deadfdab2d4270301e8dfe2de819d1cefdba62f4fadb547dd01bf54ec687ea3fdd57a435e33850a7b35ad9e0f95ff95fe55fe5b30d91abde0207ef0ec747e1637478f2e86dd7d3d19351f8143d19874fe3e3f070781c1ea1e3703c1c8fc3e3e1283c1c8e4fc227c9f0f069f87478340a1fc5aac6f0383c5635d4c389aa71a2aabe1d1f8dc3313a3c7e1c3eedc5c3c3f0101d8687c3a3f0109da8bfe849388e87a3708c8e90eaf3247c8a746172383a5695c787e1633508a406311eeb8743e49a4faa31d821203b8c13e406daab26f625f84643e2995a95e77ffc1d8dfe61347afa243c32c8d3f164d65ea3d1d0e2d1d0e151b93c1d4be8b0c85be60a197ab145226491c8e04bac71686871c820d6dbf1e347e16374fcf851f8448f4021d1d021511d478fd0f1b187c80e8b861e16b979fd8e450fc722add5c201e58a171f9e93f8f242dfe3691f5eafe6e48108777c7c143e42474f1e87e3b747e3c3f0181d9e9c84c7895ac293e1f868149f84c7c393f018a9bf63b5e6a3e1f869f828191e3d0e8fd53f8f14197aa4ff7b148e87c7c3a7e193e1713c543462347caca84b78a20ad171efede1c923347efa387cf2767c781c3e458f9e84470ffffeeda327683c3a51f8ef86a4fe9a61213d2c3d70343e1abd7df4243c3633d384f211523d1c8763a47b09c7e869f8241e21d58dda3f8f3516ebd2444d0de9a91d2a42173e468faab7ea6f7ca408227aac365f7884f488c3b19eddd1f8281c27e3a3916a576dd8ded735925470b560d167c5a370acff3e0d9fbc3c3e7e1c3e46474fd5863d3e56ad1e3d79aa3666b598bff29efa7fe8b630011c1c9f6843a8c42af218e6e0d11388882e79f4583b8ea8c7c747b0ceff7ead61545e4b601fca155d53ffc6f29fafd19bab69328fe3743a012d9395aae815e2b03220da2383040b76152001b66c1105892256e7e9cdb724be5c887413a0d8719591f65a8cb30c2ae1d1e59686058a212c725d426fa409bdb0d5308a4a45a1f565f4825018a16685b7654b51cd7820a65c87faab88e1cb34494544aa59b80fc3aa0e3a4f6f4ef59d40fd4ac059626beb8652f76f6872cb2ec1759dd0a58c46c8de767c9b4a99ae3bfbbfc8a5a422747627ee8bb7eafb3bea57c629ee8b4f7a585ff5c9e774f3b0319557204b7643170192e9267296d416105fde284ced6ccebc2a0a4f3199ff4e7d7e4bea43c39898f8ba444795cfb94bdc831257704a37443be1a3dc157d4e15f22c310db3557afd5215d5ec02fef99713761a010afc49b89fe5145c819e40808272f8c1dc24818d0783fe127af6bb1aa1ae1e4a26d1022fa777d3c86d172dbc0a97692aa9d0638105222841398cf6b6946d080f74faad8753e6bbfa8505da4014ef1ffa925d9420be7b06a696a6e80f1a3f5a28c2bf2903ee6c6d3f3edd77817dc0ac2a34267e95f973686306cd21f251c06bc6842442758c88da2d9608d2feb6c417efd5799a2605faf96797815bb4dd73eac48d13cb540f753132ae5451407299b60ea8e69154b7e1732753c238b59e2d8ad5dc7750d96e1f764ad52bdf7f44dd57bf7e3e750fa540de168ab67bc196736981b74cb93c655fe8be5aee7d6d92c198ae83b22f8baac6b52a18f7c6bd51f0fbf966ceb7bc3adff2d6f99657e75b6ecf3794e8c7f161cdb33afffab36eb5f7accb3399aed57e106992e9e32ce52f9334a368e5ce32f5ebdb5cca94a30db6a1f3ccefcf4c26145dfdb6c75c6d06010aecf8dd51568d36b0a921bcb10773753edd7f922dbf8ae1ef3a0c16e18a92853e56ae208a77bb071d04fdfe6a30d85bf3dc4e6b2bd55ca24da74cb1300b0691820b8b2fa3bc40fb5a2c5de6d176c99224eaf7b9f95a2779510fa149b5e7b1b26529d289330c8883024258ac6a67586d9dbc634007bb4376d5bc728554dee1801aabd93a6e563fefb859e2ad599968fb75878515762a50986642535e200d8868eb699d029e721aa073eb85607eb9f36a9332231ea5b95407907bdf656365640c47e6b519b83a21d5f9544a1b6337c0e3115a1371c1b8396286e352f48ac64e50391ed548f4ea7f2f89fedf67138352bc74e7123357a1042f0133979cea6c4a7485c323131b64a94fa4131d1b6469cfacea705a7e9575d706671db477bb21178c1349179f57f9fa9c1396648a19d4fcd7ea0142b9c5fcaaaa74ed8499c7bd44c1a87732dadcf89b8c9c6769a2dd9b1429b15bcb692eae574cd2534506d4eebc16646379c6e044c9f9dac96e998a7514e8c78448fa5f607832fa3718140544578ad4dc39b283c37fef7a65e657ed55b4d867714ee1f69f60a224cb48eaffd34cceab5083147a210f4d52a4ed8a642ff531f6915c18eb261e5ea432fd28e815ae1ec373c6178043fbf63dbd91b87aacdefe6e14f50b58b2b3f01e2bf69f58927ca23165579a80665d79061423ac65e3376b72415dee2a63b3e3bf190cf48b8cca53a929550b232a0b77970af90156e1482730f4fa415c31e2da187de2859c367818d63ad561b2c33821eb8dee0e781597aa0046ad1a435e0d33db374c5f6268343931f643d638e895a1574087a893e94641995c10335788b8c93e7837e04648371c491f80763b752d986bcd4cc89afb38880338f4d6cf80b1deecfb3da9beee69f6e08e662bf8de9dc8c2aeb812c3985aea0c097cf8efd2b677302e9d129f8da6a3881e88e765360ef73014eafcac9948bd1022bdee04562d66b937976778345524c1574bd784812ae2d676517a7606eab80b903aaba2205b932409108bf5c1a946f056bf759286e9d1ae22d297b1d11532c24af0d1a671ef01f5514f7fdebba4b730b08284956e6a1977caa9762ee09e8d6520abb7940ff10ad4cd5516cfab0c283f0344c67d632f8c3e99d72d20a9293581a4ca7a407ff115107a28602c347893f8c4560bc0e2cb920143293efc775a6229627836477995a14696f1f8d229c33202396e8015312cc34c47c0cb517e904288f6c1b54b2d9c19717613763087b0303bb5b117549f8d00965e88a97d9d5742b0002609c0812c10455badbd50bfcab58b11d1f6ffaa1063cc0ba803673486f2de04e7ad5c612a416b81167519b95a054f536c35ad66b9bc722b39eb2569576faea057a3215aff4af7dd99932a62fd3882c6335349144c973c320109b3d66d4ef6f51aaea49681d8689a90c034cc448c18a615378d324c43b36efa46c7c209ad4ac5d812b3dd4ea00d4ebb1543a4520ce56855f189f157a073ead0d91bd760e0fd3c3b3363ac14377586e521872f4a008785252a9e26c220d81f739180e08f07cb833f06f08f45018bc447468bdaa2a666416613883dc8e6bd68a96f44ecbdb5170be56c5baf0a9474ea73c47dfa9c5cd574ad7a73fe588a78ed2b70adf20ee2f44a176bf5cc27b26079161dea9bef1559a4d751c07846a5b61b1af5c69b9bde2a4b0818a1d1bfa1f168f46f283c841dea9c52a964438c9d27697c596a8fd83e11d5a86c3adf5b69b0ed8e67e4c37d4d16a8855be686a56376879b9b5e70d0d592f9f05b0d236d3950531c25bf3b2afd424a99da6581b54fcf9d3bfbe19173673f76770487c7a39f774760aedcf63ab0fff3b409f47fb036017a01ad7434ebc49e0d263f07fd5d13f08bf8b47b9a00f175feec06011be92f6ae7379cd41c7542b2d950be78b962c902b81cd3f5a5b5e2a3dffd0f9b053149a69a8e45e5cb8ec169eed7309410ec7379f1ee6eecb969e57ef3a340fb3e34dc89c6c3bd553407612b05c62a56fd2f5c92051deae3b4b7eda51b1233791bf546e1683ce9159df5bcc7a1394bfc2fc7939e17b7cc95f70e47a375d6d1624249ebfbee4ade6347b766c0f7f71cc0bd2022611532ed4f22cd379e07d21d1fbd3c3dadbe435b6952bb445b0da0e8703442f48649f55054b77b5914a8e90405f2d5540a1305e550bb68b6b0f1ab232f68a4cbcdeb725fbdd0e96020e8681fd5b787f10533dbe3aed1dce7e1a51da53b24a7d5cfb8ef7b5076291d17f0e8a88c0b7878f4a48a0b7834f6e2023efd797101aba04b5b2ff25e15fdbc814795d8863e99f075de57e56c510d912a2ef9be394b6f9c8aefa9006cf3d0f41ba1f61a736b86d6dc162e33661f53583267c600a04c6d79ef953f878e7bebe4b5ca6c7b17547a5fbfa2269b7d2aa6f7bcd75d44db62225495dd4ea823664f9031c3bb4565b8742f0c212d00074f4e20f470677cf8d88b2959e1cea881390a9b46ff6860c9322456f6af7fb9ba279e8f8d57d9a9a2a18381e6364cd8d1a01774675dd81b63171628ff655a8edb2dafda912910afa7eb2a018f78db2d51e8c45bc635912b8c194de2677c121f1c40318b7dd7c4b8744dd4f704fbddf30584bb9de637c394bf5647883ffb32bf85de17a5576306f83450dc0c113a369d925a61581e3613e776ac3fa019a028506752009131ce41d269c44d97963dac0a74d70592ee37e3173f7b58e6ec7e591b9c12825ff0c58bc54297770e8af18bd6b818bf680e8d2e1e34b272388b943706538754c714f6408d2e5ae3a30b7f78374cb6108e778c4c2fcdddcb6787a4c6d05e5a6f94bc36ca1b266b43bc612643b51b5d7d59ef1be0c316b23582e63a9aa2da38e8e22b8671df02faa8de1a4c63cd74891d4aadb7cef158aeadac840476313a2b518f4ff98cce237ea0c3e15a2ae02912056ac031dad3c641e022d544e220b02c70806ad3dfffedab94bb2fd51741512059704c119058c0bd9222afde58d0b9dc975e626a893c61daa68c8cb1a86a57dad5dae2741a1dba2b076fa5752a625e011ac59837b10fa5983750410c06b9d9a8b1798a214acd530a0b14b7d1b5312025d4ea73dc851adb20a3a3b65f2bb6b79d324c07b6f66217b8c92f684225ed511f61f659f155aca40d93bdb504c50884f6072aa94cad982e50451e6b6f18bf4006cbcbe21b2651b909fdd2aaaed7bcfe55a8f98ba28a86e409ed939ac1a033cf5bf9417b7e46069432cad7d1c9ef79917fcf8bfc3f202fb29fb6ae238cd5ddd2c3cf1608bbf9684390deb24c4efb7da97a2e0b9c819ea2c1d170dcc75831da07c02362e139c9e88f24d9edbc4278a0f9f13284744f2772e9053f2b91d3bd022eab8b707ef8bac36313bdce0afebf60083b5f5060bfada0b0227c91d086b070673c15ee8d87ba44fff4ee44ffd2f6f3962d697c1b271404f65809d0c832b9de486abce43f71308afbe91a8fcf53fe13874317add1d4c4807fd250140b8cc6ad71fc168b64baed1acd6fb044bad7722c8e2166bf02434c306b33c4a43928dca4843a390c62b8434d8c4895f3337c690b43991ab8303893f30931dfe85c5420c5f6279cd1b9252ba99689cac675c5da4fa055274bc617af3ebcab54c78a07247b79e0a65da41bb1b1eb680508b0fa468c9d32d2728e3aaf33de1628c5f5fc8b5ab165963d753a30bdfa389d8939aadc94b8715302b153fd55961ed6f7c80e2d4001e3c11c22761750a50e2e301bcd5186d96c3c6ff0f671c999370b1437dd2ca38b5a91e2c41bbf9b5f696c45f747278d11f763982629afee2bacd27e69cc1c6b6285472d5b12449db237258f1a9d2d60b4a7f3ac34588d53bee8eedd0a245d9d57524947df9568c20a20ba4413d2164d324c3cd124fb45981325bb2abc7947361b455f6324c3351517d42fcd706aaabe3137deb52f3ad9b41878fba8acc16baa531fd810702d355a01ce9aace749a2363cd379828c12296280970a254421321757bad49ad9a84225349a327d965093d9d64ce23dbd917b67e0a818c1fe1420ca700a2422b02b6956d6a1cb2d13946b26c9e4081321cb7e54325839e9d45e3b2438ee31de9328370f04adb09cc573b4c49ddfade060d05f590acbf8a49fef76c960d05f4ef3ddae9fec76cb693e18243ab463f7d7408d0b77ac43eaad03f7d621d5eb50f5e9609c56302ed722f5d6a28030baa32fb5b6e3e2ce2a770ca73f7af8308a02a2ac28a5f3514d36f7543a8d13d4f7efa78381a8c8ec9a6c00455df250d19d9f9acfa8429879970c25f7ac15855309288c6801749234eeeb108c4192fb5d4badafd14927e8d6a99e0b8ae96ea7e3b84bf5b7cce5d8315b94e2597519c3ec559a69d09d5f830188676c8e535d1946a9492dcda0e51e3c67dc4c7f69134f6573581d86eaa77f1ebaad30cbe68a152233fb34c71c24b020b34c3d65b0d8739e92596a6ba7bedf2e297c39aa9619cddc1bf2999c4fd53f11b58c849cff3a26aaff5bfdfdb461196218081df0747fc6506d6d3682f6b8db6b24f67b9693dfb39cfc2b5a84913dbe618ecb7a690c48eef199b18293b5a37aa8e10aa94ea694db056e9aea54862d59cd0dc0da6fb13b6c59906de665870d4cf33b3fa746f6eb657db0b6feac6eebff4b267ee8b2c74f00fd872cf065986d744a177d2ff3333e176cb349346355d4a504136fa565f3aefd829a06f44ea2d806a37f0ba2ad4c37d6a7d8732f36e6dd6572e61172f66be302994863e6c3918b63530b42568fcde63e1d15054a3a536c9880304ae6560376578f16565eac84ba597b57b402330cee46c00b6440166dbbdcae5d7484e3cd4d2f4b13b65044a89a6add3cdf008670b6d617127a6db2eaf7ab5c10d3fe38f3aa7d666bc62fbeb3938e82383f67f1f09c7e61548011ea8dc243f5cf13d41b43efb337929ae64c3c9d80f1a53a4d6850d46ce07fe9641d7b22b2561e8513dac9de3a1236a373acfe31dcbab65df9f546d80741cecd870b2fd7a4499db4dbf56d0e25672bd82ea9efbcfb72d494777bc7bfdfedfd7eb7f73fe16eaf323a5258fdd85d443d31e7e9e1f15338e9bafcf3743d0250b8db19197ab74b4173bbefbb3d644ba0f59421cb9c72bcb4ee7c501395cc3e9b23a1449d18f7c72875376d52dc9632154304d3d9a946819069c29a8a3980933e1018304c426ebc26b559860e006545da50d31d88145feebc7435e33b515dc24911ebcce219dcc66a0829ce8a25e324496eb76a0062b733da62129ac9ed76ee09c0b2a6128e2d279d96225713033aa100b79d0cb8da61ea2c2352d2f546aaedbba08649ce05edf1940f3514ce934a620aba08f5ffcfdebfb0b78d1b8be3f05791f9b65aa28219c9b173a182551d5b49dcf5adb6936d8fa2e3d22464b1a14895849c3816bffbfb60702178912fd964cffefb73f23c160980c000180c660683198d1b5b3d891b5b1b1237b69e36e3461d337e335e1826a5ddf2818a9c11d467afa86960cae57942476c5cb8efba7ffb153c69854ae1075db146820ab4b695f834e65b4fcd5e9525a7407ba491b1c66ed1bb499acc6c7aaf41b9ff1c67f39453e6fb4fef0a8ad2a4d58afd24a0ef4ff6b4886353a4239c3f19adfd64a3bf8c9f5c3668c4ac3f5bea20983afed44b7792806e33bb8bf418d9bd67fce5fd7caea2afdf836f90b80962f8e5f0cbdcb6fe3cf2d627ddf597e39b8ddcc2d6656801d21a256cb308eac842fdaa560d96ae3a2ea977dcf97712c6b665212497bf8f6ef27062f708211a25b5a93a28dd7a7d755758dc49ef427825fdcab44c21d0a37456e77b4c20d1688c133b4638b15384f2b2a47307c806a4c562a2ce0c12538463d2ab6a9d18b129e8bd635474587f5144b3ce572ea4ba851f6d56180cbfcca9cf79947f093c0bde9fecfd8b63f4056d259316ffb8f52f51d9bf70eb3261ad7f695d01ed58ffe22c46d17f6ac4de7ff2b1f3e4125b2d0be1db86853568954c95dc8df5e737c33fbf7963b9d6c7c5643209c45f0b5b7f7ef3e6cf6f86d5f41ca7c477e817cac95f3fed8bf98947e9a83b1e9306487886018c383d0845723fe18ce0a83b168e09a18a04e5460b793cb2febcb3618d8904c3d20a58af741c096719dd7ef6ca53339d15aa576f948dfbe6e0192b27c2d6a585703c8a4c237ba060df40569472a98e1fcb653d71859649230de76ab52e6b05d658e05dd80221412ecd111df74b17f8414326f17a9dafe57830a2637754acd918eebdc34bdc518b0555d5c5771b4c290d5f21b25053c367243b7e32bf5e953709a368551edf09deefc5ec450db8a6f2250ddb60d59451073498e784e15bd473df553797bb770353f50e866ef2be61fb404c884cb8393ec5664ac930a2ca85de759c6a9c2d619fd821a7aaa11ddb1bcfba0815965dcf11ea8ba717df66e3655ee1f9fe8a6fe3b6cf1f57e3ad818c1ef5d40fd5530ba715bdeef3a7cf377b2f369e36c628d5b2150ef19458e7e7a24beb29f57cb62e15c6eb56071493faaa12ea58e7e7169e349fdc288b1b86d3bef723628f3292924c7ad3bb33aa68ead059c8ca579694966ba4aabc49e2b2bf2e21145294e36432296711c6c931a369c38dae165b2384e6285f112999e6383333e0888d9218b35bae89b5185c18e07c726ea752d72fa5d5ac140535b2634c113648a2533992a8594529c34e4a6e72349a8e8595941c324cf352652b7ddf55f941e3500200e5a32241366f5418258045164fbe12ec6d3b213122840bee291a74d7084996cbde938410d27b12ba9c5b4adaed708d90100d7cd2756d9f346d7a6cc060a8dd05e695d8fe9274913429935de52bcad61020b17c121c9607a06e5ad670a0234f61721cf3e9326c7d260d472bb61dab91bfe58a315f40c2afa9891eb515477fd48aa3c58a63e68a63cd2b4ebab514a40faec27ee08f36ca71ea24b1704850a14230317677993ac90584c90a5e872c436d0607c98583bf864a510eeb8096d60143df80ba4a5a3241e88b7b26468ac44f8e5f4aeb43d860e1b215ab45f987284bfa850f85d154d93716090e9f6271c1450c97726662ba0abc2794544349070bf7b6352dafed3f0cd0c9a402695ea5403051ab564d51d5a05af5256536aa02bc6a0ddab4d11eb5aa631ad05177ec2a5f03c2f9a4a04c6280ebcb56023b2ffb05b0ed70d5c2c521c237c76972150634752778278933bef9bbf3fc9e570d8a429cadec21fbde0716cf361e0f2c1e0f2cfe4b0e2c4ad5ea39489b42eb1bd3928b4daf2425fa0e9b7aec048a6424c5a5f7375e945192da6b3d54ce384b1790deada41f726a9a4a33baf217d3305b41e8f27249a5546e541c9864c27f74b5f1a35d6d6cbd78a8ab8da7d2d5c6e6a3ab8d47571b8fae361e5d6d3cbada7874b5f1e86ae3d1d5c6a3ab8d1fe96ae3d9b347e9f651bafd6f946eefe54fc2905356f893d87cf427f1e84fe27707e7d19fc4a33f89477f128ffe241efd493cfa9378f427f1e84fe2d19fc4a33f89477f12bfc594f4f9a329e9a329e9a329e9a329e9a329e9a329e9a329e9a329e9a329e9a329e96f37257dfe1053d2e78fa6a48f876dff0d876de62228ade1b28d9dbcc45edcfa4fbdebb1758f0bfff7ef055f555b772dc06f7495d5c4ad080707edb674743049b8ec9e0e8a57db02f6dc91586121f759b7d77d8a93c65222d69e2cf40c878d8526a97769d4f51c7b8dc5446fcf67494065c917386b6e354d2661445351acb789a355c5804acada5ee2456331497965655d3c6d2ce565d7b16f00d7ebe1c9aaea6474f572e979f3d824e9672f0dce533a912537f055f3f02cb2398d3355e1531c34169bd159228b6ce1596391c8fb7a2d8b3c2be8f9b5bab9df7441594ac00617f3a73f89dc7ef6399437d77d2fa32ddf9509945007ce8b44fad4859f89f809c54f267e3cf173e56ac363a5a928ea6ab78b3665950bf1d95cfc44f5af152790e75062260a06e22731b20b1afcd5d0a0f01121844c72e60851985c63e66c73443848024aa698393b7ab621692292383ea98d992c8a34b56f93083347456ff53173de083438a11332e7af72c590103367dffb7a4d669839077496900033e718561de8d28fe552209c793e8515048078fc55620cb9c2aca20fe4f4b6417ba88cc548e9567e0319a1cb25258484e267227e32f1e3899fab4221d3884aedb65dcc282164b65c96de83ca7b54795f54dee7a0960fb3627e1ab4a35fc18f8b9cd8a9f8a032855f556269121bea92b52c72f3033dc3ab3f88c4076afa1b66e1f6612bf5da179519f8b3bae1b92cab906b75c9509404cc5b5d6a264a015aae2e158852126757974b643985d0ab4b66a2a481edabcb7ab2ac5a0aab4b5e3d6cd37efeb8693f6eda8f9bf6e3a6fdb8693f6eda8f9bf61f75d3fe060fb361b613857ca8eb532a5cc8c2ad94f2f194be8c371a4b7f6ab51b79e0576d14aff74c2d785c68c11d2f0886573466fb61c6684c537df0c4c44598c9e4fbb7296e5fac6c76955748138e9aaa90e1b8a62181eb1ae5bb85b8f93845ec7c720374c108ced7fe18974bebaf7f552f160e892fb6f83d33bf9462618ff85a3f73e65d4211e3ddb8469c4955a4543efaa47cf66a1e8e0703e606857d9e3cabf54d2bc9107497fb76ba5c8e0a1b82c4390fe3abe453b3c9634a16fdea3d661f27b0c5a79c661b27d0522bfa96cf99f05599b5bc28a55e70dd4a1771ccb704f07c96029d052e01bee683ad7d8eaae6ce6d610d113b33caa649407c1c3b5e7a49927e5fc01692d80968442f3d4679b5a152d1eed8218ea1250f5af1f8ba449c410be34561f399e71c8298336d8410d50e8a9d8cafb5d83997bf5e7ad9a71167374c80757935140bd98394cc05a4fdd809c26cee317f3afce2d3b93803e53928e7f559924e1b95b5dbb1e35da48b39b355aea80bf5533291a672919c2070221727e9cc8b781d99e493001c71d1683077a73883516b18014964201fee68b9e2ab3c2f7a292a6db76dd12b3915325f4e4826ba94e736c5310e114e2a960c1c990a978837bc4657018ebdf4d215e7dae0dd31977e07755c0f595cb6c84ba7799e53e773eacd49d617e7fe96606b031a9c322f65169e1a49ff0c69145878422cfa85fa0b61f53c27969fcce61105bbe32b30eb514007a5838459e9ed9abff146bff24fbe8e92f1aabbf400da25698c7e812fc865bb7d695fda9fedd11821d4bf68b72fd60889dbed540cc6054e50bb6d7f251742103b2086274e12ac34cff86a9c880c39391c0914c76a0815628d1b0fe1e988355b714dc34c510a9b618af2dcb0aa79a78f13fb6641621cfdfbc6114b520c15271cc769320b336ac0c129cc9a710ca14f63c4028f6c3a8ac798625f2c02d1b335423cb906a44d2960f682c84377b5f0174d3e0f177ae0177c2bf63e7b21b3d04082e6a4344ba22b6a2f1c99871c36a571c9088e49628229c09ae34aa61c7f998bdc5add0d754ad009c5899d55aad4f612d59af3d0f6c49a8481e3a399ebd36246d8808986129c2017bc21eba1de312f2453bdcd8dd4d21f2bfa2dadc535012660bbb8823c1615497fd3e0d45a119312a1230c0b189aea527e20aefa2b4851c510ea6c4a5bda7372905071122705fa96d7fa093efea925eab2f4185d49ff1c919de202764589cbfb96c0387d76d408960f88581dacabbeb0a3855cbd1d0f1241baed7804a8b188d8a137a3639248738d18fc83130a3ffb89af17f49ab98f18e32b90528e2eaa8381dcc4b5ef37a07a300560ea6cd38b5b724135555f60d787c2ea806f08fb89efd251779cf77b608ad96edbcc01f2bf9ff8848e7a6384378a1ce9a15ce46d8c3173bc09a3a9787f3a96d727587a3d8c591ad24c583531a3fda372940f20ff611283d9a890ce89de97a4bd3f83a9334b13c3506f1f9676b95932527db3d22461563ec645948a0f00a404154e21edb5ae01e167e50045590ed151026b2e2e504c1ee9f54be681a6bb553ee185cb947062af85d9a17758782857ece47a0f87a46457c339ae7ea7e3171ecc115ff0ca638a8f0a3024611af9632cf806b2d6c371bf92cf746617c7fa8c3514381c2a07f337fcd53d3708d1b9de22249bc2048bb2d6d54ee967c61e7850baf7738daf4bef337c3df2c664e6c8d02d8770fcad1955150ec5e28b3dab2537d8cc348e3b44002f5a5576a06b8c63af504d34b44908b19909d872c9e07c1e41d0ef99977e6ada8f1f662f798d5cdb3498bcc61eacabe5d2a67c641ae042e816bfba07088303200fb8b03a7837729774699ee3a1fdce14438c9751b8927bc254a8c894d844def1e6788a611486e16292ba8fc069d53b3bd3c985717bd3acda311a246e22832dd4775efd2d50636935a3cbe788f7eb00e183f2f059f8e01696101f68c1af5e449feaebcac6161f864ff4bac96ccb3064978e8fa419678c8aab7629bda26946ed22765cb1cab57ff5c2ffc83c99db4242133556d6726a2e741d1ac258de1c5c289a91cf78dfc09e9291f0be30bf709bad28e915e90af20824423e832826584bf128921534e2a5b4ef4052790b8424c16354b70a459f8f105eab789402826d4919d19f7a29840bd0eca2b43f6cb72591edc4d229770f71fe9d678fe2316128c7194be66ed5d84c8e9e69ef56c035ea8e8d9da7cc7948bdb8103aa9c94388cde5ca8b725c13401b471d028dc88afa85c5aa695a05eb4cdf96145ba592c9604c35639262ff36f6636dcdcfd5f826d5fe4a945ceff5939f49b7bfbe9e2851bf3a30c9187b24ac0e0e6cb88490d0115b30d297b62c1a0742fba0f25e118d714a6090531a624b712116c291915cb020a2aeacdd8ecac8fb2ad41c4cd1789186d7baf0a159bea8d4fcc248cd95f6217b705bf029dc7688ea9a1a965eb7c024704663d6fa1cb269b2602df8bc95a42d0981f50d00e7798e851ec32d5b3915510c56ce7c2c663ed63aafcaccc7c00ff9f559d44bd22f4f94be484baf5ef9269872dff0fb1729f53ee579d26edb163c5bc28ed4521a137847ed7652b4da6eb3572431aa838bbde252954059ceca17f8097ee014f703eb87e25052a36460af2257b0a4cc6638bf2e2d4785fac2e6a2a67aa90cf7fd0886d1672852ed38240e0a70e05bd7505fc912b6263c44935a285b26c64ade2b2a148bd335945954ea9d9824a1a21c43f82ac793300eb3a9dbac7a5e89564ca055d9898f81564cb0d9a69451dc836e95473c36e69553362986207c64c71cc41cc322fa51200a1c24fa20153c0fadd825524323e29314669d4399ebebd7798d2e8411df48234909644c1f0be558edb0a0513351cd8cc35bde8b6f94c8e87e0617015aa075632c055837cdb156c31a98a2a65e6e1c7c58696e6ba3071566e552b14b278b9885334ad222bc8c66f6ac14145fd5b22dd24a2d64a7df3d2ea0b49d58d8b1bdf1a2074e50c4f306dc9913cf4fc159a378de44087bf2790b219cc9e76788ef40e2f9b979b36e71ef9b75cd4114f555a0ede038f2ae8dabe2701595229cc4afe924492964fb0dd96f165174eaa794c66ed2907db0606640d622032af41a32cec21975b3868c0f614093fdc40bdca89a7b67cc97ef1474d230a0f782775ec63b418381794121de0e4e68b698519b22d7aee4f0f2bc33929d55173c8cbaa0f51f19a1b2bc37182eeb78fb5198b13d466736ea1b5d9d2ae0848f9bfa009807fbc615c5a2ef72c9d1e394a64914bd4f232ee07261773bb06f2d67c7bfd368a01bea4c165194012e97a7145c1c1488ce67b69cff2564a5ecdf0de2d982d132ac7cc1d5007c1fcf44f2ef0498e52d5892c1290cece37ca64fa89725b1e40f0adc9f96301f9717cc824bca5eca6c8a90bbd68c92d6c56232a1ca9b207592288032edb635f716190dcac983f29a5cb122cb50554653afefdf69340d8e41f7fe8db823c7c756061186eb84818cf80ba127fb25a8395db52170a4c3a629a5a7e0f7236bb7e39f9faa5d5697350ad81c2cf30b19d9b22baaa2b15151af5bab49e78b7af46bb9966998b26b13a27a45661109939152aeee338dd9f59bf08a1ed3d4a7316bb7e327e95f7addeecf1b5bb58aab8545e5d5d452039370c2ae6b756fd5807e6394836acd0f4b3566f46a25cccf6b309fd64a43edf54a4a6dc4614c5734f1b2d6c461b530b450aba268c09722566911019abaec87c65cae6fd075086ef22a6dd1dcc4efb58e8bed963a491c255e605ceb41856068a4c57cccedefcfddf44b0ecfffb87ebc1befef1787375e36a73e3be1040f28a1bfc85832832baefa463504cdbbc9dd182704e2d3511c12dac068608f50279c79971467fc29e39b0fdf037004af7c5f0df08250270a7d1a67f4177a8da7726fe37c139e90b5b510cf4931958b76db9e3b9fe83559203c1dcc7559327513c8e3009104bc1f58613ca569281c4540a6e81f10742efb4c44627045531666617c496e7c300973adcb24b90c679e85bd6046b3ccbba4aeb51db43e2e36babdcdd6972f592ba2136661be2d7318bc20e30c81dc738d90e505f79689d6d43e4ed6d6b215252328c9eb236b6b11c21ebcc350120fe1d49e63ff07c956c2ade4cb1e17a7ec94f8a0913564a0b49081d2bbb049df0a16bb2adffd53d853c5e3d19c65fd98d396c5dc4e91741e7c93f74d5749d2d772b37f1cb15eca6e2528eac7e06c261e2b47cd233a4639c2bee381b840980354fd1d78d64a0b3902fbce0588663b5223410a07d147317db788839406924cebc250658962d6aa2f043ee914dc3718e306700ace17fb020dea65f8eac13e0c6543aeeccedc90401a4a698a8d7d0764fc7a11cee3607342fc15ae8a1c40435f8cf577c7cd5b100d1433895498a9289e1ba8d81a44da06c229b119a95ee66668c05c23603303ad423aea8e7142527de8a0747a56c77758b29f7c56518c3b898e9c9b1b4e827e574696aa6b12586c857c4a77bc28baf0fc4f22023184ce384d7dec13ea2ce2f03f0b7a0a697b014e48d5d59e25ca5ba89f3861407c9c3859ea931427729f05672353ea058e379fd33800ef2076f2fb4bd9fffe2c6849bb5d3c4b12104ba3d75a58f21f8a8d95b91010ed053825cc393fffdbafe7c7fbdbff1c9e9cef1c1dbed97b7b7a7ebe2a1d9c6f71448cc77d7f50f44e359d11df4d0591ab65fd20eec6e4adb04f6e0c6ec1d57b2de61bb06b59b8d8ef5dc13860b9e5abd74247860b1d8f7c39fd14cee734906f8a1ebbda71a3a1234b71555d0049a026e30f4252173529e917de8c0635183b51925199eb05220dd4b71292632eff8a4ff453a145e36fb58d02524df14f2468b14de61b929748a98a4b906a8a3f9050975b20b9266b883a43d9dfd720e01b8f3b532fbee4796ac7e033b8c8e8c12262e13c82bd8ba6826464ee5acfdcfaef0a53f41b1891ad17f7e343c4c95009210bd529b830b04705865a3db7c7ff3e735f5a63848b880cc537e2aa0d36f85fb342e1a00310bdf6499d0f36caf071c2c0c7d53f34d68ba1f64d9248af9b4a72c135d72b2b70b5d2b85e740de9724134e4a8e5d890a5d7663d4fafb65a56750dd70bc09aab2797d7792dbfb43c6ab940126aa9f5a5522b525fd3b5222b06bb79a8056d69486e1eff86355e2b63d0937a5e89b834641bb4a99e5ba343b52292c2d6d20bc258cb92046845baa446955cb597d6b0ddf471353708d59d0581d05508c5d9f59cdaa3fa82d209e05a658c5653c7f232352965784f073c9b9bc2bd7f6f13fcfb7381ec255c34b17bdd97d5b06382ed88e9e75662538463e2db49c9d3d17f163463b8f041943af40ba37160c7d8288819b8b953390ce13897f6de7688fa99b3fd254c3292e04c328b4de6739e9d0a67c07688c1d22e7376bcd8a71174e605d2ef67c9271a93d87eda7bca13c3cc28f69ca77851e3753465dc2dddafe0ccc9e629e50ca9fdb4b7890c1f4486b7e3c20372d53b8c61bea5db585b2bd91bae0edaaf8b386126f0b662aaa8d339a84d31ee2b6e4569bb6dc77007b25ea41908def53751e2b1fde12a38418069b763bb108eba08e5d00cefeab902f24e36596127c741404f859d4fbb2f04763ead63a73cb6962c2b151ac390937f9fce599266e44662a80b288c539acd9338a3e235cfbd3a2e970f46eab762db6d9b125f22e2cd228ddc42a5d61de745fcba516f8c10360aa7f8461c92bbd62565568e4be0739456e616543e9485411948711462c1e38e714caaf711a47bf7da40a8de358ad7cc59c4d9349c301bced4266114d100f34a392b4203a494b1951ac558aea852b8a75c559f61c9189358587232470001aa71f1a4c94a0c6a0dd9d0c81286de168681c41617162d6c25602d9759e3d2950b638e47745cb2442ddb3fc821b2d57c818db99e338af95c3338ed452560e649c681982fe0afc7fce9fd21a8da605461489b60c081c73c3796a0146bdfbbff0ed06fa218e0315d77cc70262dc0148aced461c9fbf95c21255f19e514500eb3318995393e052df1fd29c0e6b355e0616d60163bc227ad23bdb7d153e6b10568fce0a1ddf6dbed35df56ef68c0ecd4b64ec4f0b6265e18d100cce75aa240cb4f02dab23aea03ac5ac0c2efbbdeea62845c6ac70ff0ce552e864dab4c2a1b210cc7702b9e434162840b7294c2b3586ac4c7f4bec3c827d9b005350c4f62dec8fb933ded40d0a6c849e93cf27c6a3ff9f366f7c96588adbf5a66e2d36d48744b891b9b4f2eb1f5a772da0e14c4e5c42e2fd829a56dbd8682a372e22e248eade62d4d74379cd86bac1c5e3611d72df87ec190bef8c9f7c8f727fba7d44bfde9b1977ab3cc66082580b1c2a4db16a5a5c1ea68dc2ff09f55b6f3e21a7ea35a1d2e5c9a5e1c598758a3b1e55232a263dcb8aef8a43861b6ebc161ff00fc66247ba7470a3697e70a09d7a6b0b0c8df4e8f0e25db184e783b088782d6fa36431d8b581d3ed9881307f0f42d1588ed428398f08a3ac45eef81565385fbb006161a5803cbe5653b097a10aa619f8c2cef9293646fc1a6491a7e95be09c12c91c66c5dd07b23810f9c852dcabc4bfef3651ea634b3b03549931927ea82ac8693f5591284939006eb5918fb54a42de25a6ae4654c97e5ef89af6098795fd6a5bf15dec23c4dbe5caf57014dc19fb8303a63e9f53a98085a9877395df72e69ccac71e3b2d651ad708243e33c890e6c63da5544d98fb18570c5a23b31e7c1b510662475581acef8678b8b8ca5761727089519021cd74a259d1e42d28a341cb171bbedeb8a19fa9974e5bae9f34c626594adfb49f22904a35136806f06fc8f3b1a23e53377148f91ab733a16e674d28df9e61322377c08452a862f053f0e5e1c7869f03a4d3e67341dc657361a188a40e131989127f62c0be992a5614063869e840ee39b64ec5d85977043914fd1369f213e2641e2030756d53b7b569522ca2b93da061f6ce033cab6194bc38b05a3b6354de9c4c2a90815c95f105e59e4863fb9a218862ddf4f22577a86f59368503c1634cffdd3136c59c8b52ccc319e7f9e640c6740b45cde167f18a887e2c3fffd3828bef4325e96ff0cc48f51eeff576a20063b4e473d623e1b1cc6246578eeb129e45b4fc4d5099550dca1181489bc54a778d577bc28f16de1e3c2514b508edcc4b8b42c94eca9f4e6115fda0c0d38097359711d4d8d96304a922fedb6801e12f9439edba8eec97cad7b3fbcb4b65fefec0edfbc7db7f7b75ff60f0e8f8eff7e727af6fec3affff8e7ff78177e402797d3f0df9fa2599cccff93666c71f5f9cbf5d76e6fe3e9e6d6b3e72f5e769e10abecce565ac3c2b12eb144e75a9ce679619cb5bcb815c6c0b4b4f8987a3ea731b9e1f3a170568bfd9213e48092ad5252e110360a831d55197c6a35f9cba5a5407b382172e0c1cd8465618f747146d27ea2677be9a1e5d2ce88452cecfdb987fa6187642af7d9d336fbf9e717ebde9f7b7f798180e2d831111fef2401dd66b6d721cef32d847eded8da32ae32f87d46d8ab572f96fa42d2f7a621379fd3b062588f2bf7d14710e00b8414d8351bd82206aec2c3ec103ce3da316ab7e5276ab7225687770836f09853e7b707676af316dfca37dff8962f18be4d970a244681209979614c2cbe09af750921619197517f91520be182ca01fd269edce8fb2d0be598cbee6efdfca8f2913303a36b114ce372f8656e5bf6ff2efb1f3f667f41b6d5a11d0b117bf4bffdf15f9055c8626c10d0fa588d9e8e910b8793581c8db935431f98149b62cbc27cc49c38f96ca3f517cf36e916ca73b73a69e8a6da8f924aa3de0ebab9d3f46605772c019ccaa369321a9b4b926f2fcd81a54a5f8919bad112af4bb19278b9dc88cb85d50d82bcb4a6a17cdd444a7d2562d15593c40d96724592ed28eb830aded6aca14496559492769bda229a7db1dcee3a8ba96a189ff6ba4287036a37a561c41e64f510cee0c174071e093359bf50e381d6ab7875808aec4da4204703fb0ee517af1153e7c2cbe8fb93fd767bcdb3a9b34823e0a6f903c96c9d8d4516ff604abd8063827e02419c3a5cf486605cfca12887a9c3522fce26493a93b099b528c5a54e71fc643613b7d88b6223a5f71997d3f91b32248855fa8f064504e7b67943a64682a11b1d345ab5ccc639c23675bcc09b339a2e97a17a445c3a2cdfb465e5d1656a50c4833cbcaf0d8a106111369dc917352536e37b8da8b0dd665ae60537025ad7a45b2aa560e3fdb6b611c285c20ca42af600c5c46ab589a1492a66a91c698e124139f27bc855b721f493ffb547defad731fff331f8d8f9b8fed119ffc545838f4f3e3e518cf1437c8737d3b5012d18c88f4f3a8247ed70868f991ce8938ee02def2d2af6365f5499f015119368739c24e10e2849457ca40b6a0444722ca922d586d47ca649a3b71a089343e571b0bc394b2b36472958c02f97b67a84aa52c0509dc6c5ecd25e512550a66183ba93293f151d34523809cf9245ead35551706e18a782a0bef6cb3e8008df6204a584e9b83fd9be957e362c552a9dbb892bdb60eecaffddda46eca436431a0d5e6e891de2c573031b92824fa95ab0fedc6bb785d27b8d1053c33e305f5cdae04dbf5f4efcdbe9d12161a69b04278ce1649f30ec3b1e6c0b85bad6773cb807ae810c8b5864af9324a21e1facda355d19dccac3753a01d37d9104d7eabc02d878b65c5a6f536f3efdfb7e4b6afee4654b25421d4d261965846f19511853b787fd245acc62b79737157478a19fbbcb656877b1c55f5a61dc2a97698559abb70eea011ab4bc38d08b4a5c52b8e27c6653dda2655dbb78fdb6faf3d2e65fba6e8c53f2e463fa315e8e3ec61fd3f1934bec931e4e08ebf4fa36171d392de09b77125c23c4c54268ea15eb23bfa34aaedb32b9138fba2abe9f6265c548fa6a2413c397c9a26c01de3800eb3d9c92a91da38e0002fb448cfb7a0fcc971b6604bcb788c74e823dd203fd397f1dc42e17bf54dd1d0f2eb10b9d5179180a7341a5a011b220b65ab6a59536525b2bdf326ca18fb1853a4d3665d560619c071b75c7f2bc891ab17af51ae4c426265d9cca0b05bcc33226164baff51c86d8236c24fd10ab5ba5631bf5d7ec94d821f1a46b0e24dc19f47975ea627f287d274524e3c0c4e4c0635367e67db1631ca98954aee716e8c6e7a0246491cbdbc0c27d9d0a2ce4492f56cba57ab2912e194e6cedcb50ab311884d4ac6bf952c20707fba58199daf1bacd488a14601dd6f1732465323ef2b93d1a153316aef7b0e5b62c84a391bfde1b8fb1995964890c3cb5b3f51eea58ff6b950b768c5a3abdf1786c50aaa941c5a552bad35310b5ccf88a93a2a43db9d577b82522c1d472f4dc0e1ab610b5a1e76e43266d3e5a560d96638313a2d3d7d47341ac070a3a57b7c899d7a29ff3e204c6d404d44c7601c1e5440e98b42874d960c4c6cabc302370677b2d6bb73d51cf82781c4d33b268b7177ce9cb1fb9a1c37e30c55724edaf5db5db7c9fb902a40c16bec978984c98a8854a9f58a232e6a50c1cf98cc608e1ab76bb4b08b92ae2a05ec9658870da6ec78329173d2a68ac79f71822d1ba1c96e98360891434d0356c82a66103ea1190b0af039407ca95b174103223893009c9c224cefa226f5672f437b1675c500bc80ce54d967e219531df6ed43d8ac668965d339a658e155dce54e9e97229e7d5f84a6def539483625415f66f2beca31ce21de9aa3d553ac762b454465664a82b81faa3ab222f49c34b4ea584cd9acc4f725c0c9c4a0c6e832b80a3e2a4dd4ef83cf99f062bec26f9585a50425b4dca2f6e0d088a5c80cff1bd395ba4f4947f70967a3e1dac48172dcd917b7f38046785ee034db1e4afaa2176e9e7d6dcb64eaf63e67d11cc9adbd2f43446580d211eb131ca3d92e17bc452303c01b7dbcd3d326c0070fd2b7cd31c8d53859bd3463f42d18ef07ca59b2f31e0b7c77a9de71814f8f255719e42759c630598caafc355e72246e0e7823a80fc8a6f5a0306a157c4cb347983046e7641f9660e21267642c20a87106b0ec153de15fb9e204ed2e664617b26718acaaf9e49ab34fb708d6e2427735d621f62c53e849a7d081bd98754b20f7e9e6bcf3f54b6c9c9a626398abb519978cadb9df0519a378dd2150e0c4e72c5484d897d4582ca484df548cdc8951c293d44199e957a3fe150cc2bbd9faade07baf74163ef9547e979aeb9a72e31f650aace43dc917ed4113959c1250187cab9a51c2800172dd53e12db2f9f19b2e2cc64cff9a23eb02f9dd3a337b82bff9b91d26f24e5a5585a08b90c475ec6ce842c8da54c8da55cc57f846971177bc11517a9dd6b1c25c9276f4abdc0fd9a975d0b9b6b55572b1dc1f0475c3c12294dc9aa6c64869f9092bef1a558529fc2385823e4d2191ebd41417243a51fd1e5d2160fe49d0c358c50fe791a46547e44f8473b470707c3c3b3c2b15e5ef2713c4929fd4aed9bd3a337aef5eaf4e8cdcf161ec2f3109e5f6f1fbe75ad350bef1eedef6f9fb8d69f2cbc7d70ec5a6d0b1f6f9f0c0fcff75dcb56cf27ae852c7c7a7c32dcde752dc7712cbc73b47f74e85aae85877f7fbfbd7fea5ac4c2db67aef5570bbf3ed9def96578c6ab18156f27ae35166f439e7363e1e3bde3a16b2d55e2896be5163edc3e18bad6a137a316de3b3c73adbd9859f8cdfe11af1cec162d7c7a76b2c7e117f4ccc2aff78f767e3957a9afa3c4ffa4b2e438b9d64e32839035b9816e17a6b854724ccc06a618c6471dffd4b27ed28217c33f593f21576415b37d50654561d261d2a45a405ce3945eef680cb7a20079c2989214cb9d818b8ac4176fc2e15f880ba77c89e1af098e4c74fb438311948e46d10030cca5af7a1bcf07153b131999709226b31d79be074e1e7eb23e7e5cfca43a6b5bddaed529742f76ef192a1b87216927babe8960604aeea84d815b52c794c44ab44e8bd0c04d36612951ee4fb9180e56907dff55da571ec3a87930297c50bf2410aef9e986f8dddc14bfcfb6369e4316ea747c6d4cd4ebaa24dce9c4300d58fc00ad20a224a786bda76bbc2438e8eac367e5b63b3d34f03b64c35d5d575eb87ab253ccf8fc6338a6a5a2b0477a9d649d169ff0ee243f13eddc4d91c4e1d11bec631f87d8c352ff062ef30a7012a4e2f86432b8ced3a76ea5164e047082934e4f55240a6eb9357e00971d7c02c830811e61fd20b9e13bbad17aa7e3299a257d318207f5e4e7a7bde5524c4261032aa1912b1533ecc915144aac629d1ef610b8d04eca903eab764990b3a64ebda816dd3e386e28b7d9ad9693e4b0a96cafb96c53fb9bcfdc70626f3e033f60e63c757aa8dd6e4adf40d5591704182a7faa2a17e8084d6cd5ba0844ba01986735c005116f2aba591bb7b386622f6b35ea4da0a9741d15d526d150bab7d1587cd858756fa30630df661a4b6e3557db04c3b32d1163ead933f9fb5cfebe90bf2fc5eff3aefcedc9df0df9fb54fe6eca5f59df7359df7359df7359df7359df0b59df0b59df0b59df0b59df0b59df0b59df0b59df0b59df0b59df0b59df4b59df4b59fea52cf752967b29cbf5ba5df5d0530f1beae1a97ad8540f5beae1997a78ae1e5ea80755734fd5dc5335f754cd3d55734fd5dc5335f754cd3d55734fd5dc53356fa89a3754cd1b1b77923245c84292a88dc6239ce264a42bb61b6f0d4c352421cb2ab630e05af6e596889695fd4c365fb4dbd92bb2f51cde9e6dc1dbcb2ebcbd7c0e6fbd8d0dd4479d8e5725819cf731e85fa2e85f33f5db9463b3290762538ec3961c862d390a5b7278b7e4e86ec9c1dd92df6fc9a1dd7abe7ab0b0f6feaae97e8c33c27044d67afd4dde7dafddb6bdea369021d892375ff002c298a8a98c18368f0f9b9439b8849f616506d51251ac716b11d32f73b0bd6805e165c85a60cdd9ea1ad2fed0f610b61c0b4967ad19d981ba3c842b4d67a80f8497431e7149a901347cdbe7a8ffece51a7cdfebf6d620509aa86893f30a8d3d6db737b764c9a66ca3b9ca06190d2e1dc1055f3a7bb04d668acdd468922934c9ca7b9f26894f379bf79fa6f40dc366f3363c609da738231e8e48172f8865c945f32ad4da4bb972a2727f790f0123a0f14802512e520057492f36c74587a8018049d2b4dc9009f89aea3c953d9086d781e3217b21d0337af574a3dde65319f1a994bf7c0e23031dbd021db58d1fdc3508e396d4ac985818492c14bc6234e04c11ee7412c1ea25065fe821b7f7549481b2b531187882af5cfdfdcb8d6f19c3e6f4a768605746b5f39365593ff169ee904dc421c94be3f23e66349d85b1c717a6bc376999240b535435db6b22c1c0e99190d35e1c695c0a5f25555caa50e1902f2c98b84c4e5c66e056a67025ea1045533d1c16b8a2b124ecf4249644c2a9b4468ccc4084f06188902944082776a7136298ab0cdd48febc0cd43a1850553b77a3d671d4213f593f995cdfe6739e683db1ccc4971b90f8f16339f58548bd28a5f28d1d9227e5e45e5724c795e44d919c56929f896456497eee8a53147b5ae954a787f0a49ab681f0bc9af614e1a09ab689f0077b8a5ebdea6d2c3fd813f4ead58be5077b8e5ebdda5c7eb00331d68b57ddbb268d66be37a7ad8cfe6741639fba2dabc3255f3d796a62385e849d2d359151873449ce0b84c30ed99403a05c0d3c14848f1f75f34d8d286cca3dd2e984b93c809ae0390efaa5a6ee5c9348af619e54b9ba4035e653b9b2a85c59ca11b3b5e3c571c2940d748b4d69dd06da5c075440cea7e6e94bc3a3b3f5bed8d4b330be8c68eb3f8b8451a316fb27845b4118b4ae93456b46bdb8c592d622a32daf15248b0bfd85fdd14203ab5f0670eea51905f00ceee1360873beb597033195f411ca280027e2b83011ec4b02eccb0d48c3697967f795345c2adad7da8062e2fc3acf53e1782e16ac7599b0128949145268a03f9887b1a251ca1b1dd0f5cd172e159c297d459e7707747d6b8ba770ee94be22bdeec680aebf78eeaef7f2c43ec0b563829b4f611cb85ab385655018adab120a57add5526618866a4be97f8faaea4a53f9b77bb4f35ea8ee76a579b3858f8e8727db677b4787e7bbc3377b877bfcd1b58ee654f8dbdca593300ec5bd9f0fdb277bdbaff787a5921fbc34f42e226a163c1dee0f77a0ced3e1996b9dd288427f4f29b3f09bbde1feae6bbd1171ebb64fde4a90b6a57d9285df9c6cbfe569e74a3daaa2b19ec225730bef1deeef1d0ecf5539d7da8bf9b0a862460d26a42abba94b453f0a15e9073ef2653da94c2a2b4b65e2eba3a3fde1f6a16bc99344997cf87e7fdfb50e175124138687ef0f5c6b182f6632617feff4ccb5f6c34c557ff4fa6fc39d33d71233594a3c97a327b2e418eeee9df0e1fe3074addd30e5437d4585d677f7fcec9fc772fa8333b845c65b93a9bc499178787478ce0155c59398032cf24e77de0d0fb64b2379ea4fe9cc33c7b1c0225e43332af1ea4a58b2b3bdbf7d52ffe0d4f7222fad9696fdaf570f23512d0dc3549e7d3e566691bdc3e3f767e71fb6f7df972bdc8be70b31e8e5d267c39337db3bc33a047b7c5798783ead02f1feb07140dec70d83c1b1a25e94634963c93ad81aa1ea7d5c3574d0d3e6f1d32855fa406357791a013f86ff381b1e9e1ae83154e7eee5992e9553136d94358135ca16601a652b9362142fcd89f185312546693d2346c962428c826a3e4a305487b8044669848bcf7284f7ab94faefef8727ff742df8b1f0c1fbb36d31eaeac9c2a7ef5f9fee9cec1dcb7562bc156495ffac2280f5c426625b4e68a2b6e584551b433d51218b6b895f8519fc9dff1aa40f7e1bd77125a5d8424ac51a120d7ce17d908f12275c0b7e34793e7c7f602e3591229ecb73ceab2ade545e1deee6f4d2d9d967f360a7c1a1c6800b57994d912be2ded9b119233943cd76e0078bac880a790a87454eeb84fa34bca281c1f248213ee5427c8c0a5d49931da438733579972347311738d0c4217387d4a6589c376f63712e8ba3c477e75446bcb667768c19dcdb40667c3c632466f6ed63213fefcfa81d8bb694f9f4af768cd7b4d3c8962c0040a44563a7dfa7b17f18b1c956b474568ce14c0c0cdfa45165204165293940c5fe9943a6abdb96824560d485a4082ce7487c2f845deb3f0b9a5e5ba099b4660b266e738bd76c71219c4d164913c54d294dd7279b0aed97950181579f0215972f70535d3c868a04cbf7455cd44de3c54c179b2f987c0e34f7a2dafc1fdda6708964d5f5a905561ad60210d4a938da87a19123c34a63a2ba7227b27f85fb78120a84c5abfc5a5d8ef8a74df15a17e194c82991872a68302cbde3b8783941aeb008028fce5a29d305eda1349115ebfa029cd69471a5baf9623d84991be3c464bd3237ad2cbd623ac50c7eeb18c0d76a0cce20108e1a0ad5b17b75a5814910d657b1d9ad55bd10a8f76d7d806f2b3d4821a880af2735213e958149cd1e89a9f24b6fc9ddbd6d6418546ff5d2e1bd35baeee309e7623337593106c69afbb681282a689e4fecdf67146ee9f72a96ad71a2656ffd15bd9514e5db7a2a3e5ed9cbec37f5b289cd6cec218385b9aa83824c7e5bffe0db95dd8b7e53f71a78e3c6de8968992bbb2749ffb7622aff786507a7bf114b5732f50f43d4bc68832781073a69fc52d92290b9cb86139b82d990b10d1a55199cd2a71fc503c896f7f46cd5f881d513164e6c3149fa1b84a9234d0a1dfa654ed390277b91d2c928ed8b3a575013d120b28809f80f9ff0ab9aee29730fe1d6e1f59cee24710069ae04862f77fc377004644c1ea04c0fe1cc5052b9ffe6959873d97f0858dfbd758d37add5780313d588227b8d13d45c8dde9e1ab482053be14a34127d9686e04d93311a9b9d1d8def1a65759bed4bb1245b2666b7dbb658eb08df13d254add795b8f2f0d9d023fb65053fdfc869ca952715e9e2ad5f5987325327f4572ecc726285cc68000f0d95b51c47697ba55952658b75ac9f81232dea38be4bf06b10f4f568bb276a41b8b61c22b0a042f81f622988131d505cb9d7a280309c42835f053157f8559da7eeaa59395905704b42202cda0a14521d10a872b67abeff7dd7509414df051a693958f1ffbb06fbbfa2adddfad409850c1aac26bcb35241b9375e6afa035a83b8dd2e6d162b289bb48c2ba85ac33ab98542567444159a180f38255c35b3f7a287759f2d58440a1396e43e9089feb58973039b111f4b02e2c6c4af52f5bde1fe2ef6a2d0cb5ca6e886be36edbe91b0dd056e55f6fbb7d155dd8b5452753ddf6f4a111506afddf7fdfb2ddc78d5c27d5fc30fd9f7ca72900b528d82d29c158493afcd5f1ba6bc68eaf55d0ba35ce999d8bc79bd15aaf016a8427323ff513e1054941193bba9f372a06d29befeb56c352d8094843a064d81340930ec2c9b8cb72a55e094b0c15bf7ef95feeeef9d9e29f6f7a0c00761bd991a6fe6fa8f0127b48d9146a17b80d1285d2ab6f4a04c7c6ebba4d4d4bfbb51c63c9b12339c1a68c39aba983752c0da08ec1d9eb985330571c5c42e1ade3b94a3ecc6554d598c72558938c1bba51a28708f8ae4b99f9a1df38a84acfd17c52eb7047955bb354b45b46959fb72694dbc28339306761364f25051c256ada6042472ad781145775679f87e7fbff26163392ee4dd3226ba9bf2ba4bc9d7e8c94a79e597959b73130cd28aa8ac0cbd8812ff936b68f74a7669cdb4e3adb19b4abea2c8fc7b35b36764feb31ada7d34ee4b8abc7d86fa281617c5fe04c50c2fccba823fad5eae6a396d9f155dd6276f06a92cef41d5f5a45bfa87b115565bbaae1021d80cf9077856ce39419811938c81fc2b583856c11b46f8368e55dddb876fd140a39979a4dcf4b9cb0ac8ff76d7fe511c66dfc9a4fd8f519770166b2a865d4304fa110ae2951ae1db34c0cd4a5d839dfe915a5d1c1370aadb6f50e70ae25f28416f51d99ad0522d99b8b1da0f4a6accdfa2c1adc06ba86e35b442759be8d10fa5d272b50af62ee80d8dac6f7625517b6cf8db35b2958e5555b1d5b9d00ae95b15ac0f9a963bb4cbf7d4b756fa612a5a1bfa90ddae3e7d10fc429bba0afcfb69532bd01b6ad406e0a35b95a30f825d328bab35fbf7d295d670a8509236803fbd97eaf37ba250fd84efbe5d29bed45b16df7f4b3d0b8df21ae79292b32eb9571def1d0f759888713f48541c8609a85da569a159b870ea99d707adc95ca679b08aaddc37bc6bd4876b954607b6b4aa5e00381fb45c2ac9d3e0878c4f61346faaaae55f4aec594c9be601d47125d65f8efbdf1aa8ea2a4b304329170b7e205db183a7b4ea2d41a830c2d95c78a8ce2ca46772fbe01819f3f7b7faf4f112cb65a17ff6a228f9bc4f2f3dfffa74777f4f57aa6d86b28a8644fb392a40f4cd695855f5703667d7607756d4a8b402c2d581664b0c6656f00465dedd7c1e8d514dc550612e92caf1720177d238bf8019b8b28ceaf39d0886315cc10d546d5bee5e008005894940c215281136a0fd2a858847576944bc3b7bdfd06b1f8b7ef7cbeac976dbf609a82b64d8bbe64169b6326c1e1a351ca64ed4bfcfe864b5055386b542f66e5d2d82d835a07cd43005ab1070b1120117f741c0e6a16c347c7c28b35938fd7a4077bc95dd993476e74c9ee1692770fb2329428ff505e4fe0a022f2105bf89056189937db959983798afa8cd302d5c6960e50dc0f4eb434bfe1485b3042a7e0b9709e2e27c514278e6a0ba80f4d4214b08c79b868c1bd0920f2ca59a9344cd40a2196d9286c3895d14460dfa80b8b887a1fc1dc4b20bd650d9f25b8527090bb726c9220e5a855fbf0b306a33fc917c2324861f923b6b101b48bb2d27ff1b7af753d1bb9f4c4719aa7f3fadecdfe57783aea8f3a25427e39b6a49c9d0343dc64d146b15ac07545d604337124374c47d9f53b4b56ba133ef235f102ef0255a5cf628bc75dc5e13ffeceeda6227e03804975cac0675e9e71c61b38cb4d0af173caf141406f5f572a795723b49ac2f03d44bbf6da8f50422b2407497fa07ffa87c60dc06a817fe5b8e70625fd1864b2a30a36e412430559756681ce439bac37bae04c16b6a759a172e6f7bd2273a78447762db171ed1bbc21ffaa6f086de7b8970c44b3d4778417a5d5c76e05e30bdb60ecda8a31229b7bce00a48f32368b904e7c66ae783f05694dca4e1e594c9d028bf86019bba8b1cdc684f547cf6729926df8dcc314b109ae798a92d36757c4ec51166a5107b7140d39a6f63cc88f2d83ccff8bee9e8a8b9e052358478417841981379e925c553c29c6ce645119e8093a909dbf39318cf0973524e40f015496c647b924f797b72f4fe187bb29e1d5e371f7edba6e4264723cfd9dd3bdd7ebd3fdc1d1b70384198791710b86ee439fbdb276f8763b28097d383edfdfd3199c2cbc9d1fbc3dd3199f3bec6080724753cfb26c7464d19bb8e28be997b4110c697277ccc34be31ead4a622d7ab36acc6b009c22b0bdf144185af725c2d13391ebe09fd24762739aae54ae1190394c09a598c7e6156aeae3b67ce05b20be091d99a1c509cd2896bf40faa3ca1130c1d75831c49b7c133effa829ec0a49f189db411ca4b78e1ab3012bb6170902c6266a208d4b498071ea370f10086c8bea586f750f6c155ac00b686ad268e9853a71c5daee9fb8af5e9cbe65e6c358ce8f9369caf17036bacc3522339a615b0abddaaf81b1710893a8d7a4a7d31331c3f0a151ef6c1e3ae7791d974fd367c453f6fb4dba20065a7bc8cdd405f682ead7dee2cb9c8a18f4198cd23ef9a8f13c91caf6339d0cbb769b2985b98e576e81c2f52aa6390a07bf9215f4dad13835a3fdfaac40711656c5f5d6ff1b22cbc8ccbc15475741dd2ebb357551fe67dd6e92826a3f05acec67a274f5b61dc8a916ca098e1a9971d7d8e952749c7f7a208223242a0c5744c6288afa8789c1c35ef0386b46cb23b829987e05f37b90b3755250ae0b0121b403b7255f87da34d9bb04f6e729ca8c1f944af33158a3425dd7eaaefe5f7d34e07c52419a563cc7464b218fd4cbacba5ed8fe231a1a3786cb02d768c479680c81af3cd52dfe8b8407652bfcf51f0eb9e031647d4f6ed1b657be4d21c8798217467a498db30253330a52bf6f5e75b22d4c94b19e9646bab14ac562390f75f8040d96d089491d849e253c38e6bd7631ee76a145e2dfe38785507d4c206b24d15b2f91cd922842705f62d32ce9e22001de1792903281bb26fa2c4e33b3ef8a4c557643eea8e7140e6a3deb8e4c912ddc88f13c743b6816e814d51ae6766e2f88b34e55b5286cdd6869309f559e9432e6673097de1649fc2b9e215a78e34afbba036f0280b7c03167b9c362323b3aebdbe8190b32aea0db8cdd5b63fb28fbdbc3fb319c21acc765b3fda376250dd29ce2a03eeb2328b8d6e66c6c0f544acdb2bb361be91d4d77df93b3ee010d658f70956fc88e285f2d06b877c5217688cf0d56f2106d1bd99fc0dc1e46f6c71267f255faf3421f763ec7f04bfad39df8830878a9d99b3779c019f845104fc37e7308fa18289e6cb39033e0be370e645f88a30a5e7c1414125ae06a3b17b85672475a8cd80b4cba62d6ca9862d6c15cd5ad8e28d5ad8d24d42b0cf14a28dcae6cce8cf085f4bf6ffddd9c1feb9b05e6ce4f67de0e0dfec716e7e61f2f9137839d83bdc3bd8de2f98fbaf24680e0a400c9fe5fa7a5de18c3c5fc9cf0ba0253b9e63866f3ed16b6d13e24fc3284869ecf201bea0d172297320baebbd8584ebba906009db3ed9b01a77d7070e34caf10cdfcc16110be711e52b1be1af78e62870ea5245e678a226903b2ce16a63ddf752cad6af68ca42df8bac1c4f1170fe4d9cdbefb7fc9eff1faf3e73ed31700d2a4615ac5b646cdc1dbd1e53884016cd697a46bf30ec132a500167eae94d92e248bdecc593042f40137a1dd17b63088074498b766d2485b9458efd76bb560134569164f6b75f0ff7f194cd38486e96631f5b2dab01f5ea42d0d9f01f67e707efcf86bb398e5083d45a0558acef37472707e73b4787676083c9510ba70dc0563f961fbe1bee1f0f4fce79db394e5155283587e34124343549a8d05f807b9350ab32d4bc18bd68d25184cd3a8a1488933045061a8644df1b04a637493abb4d5efae65537b9f7aaeb758d6517db2f105ec83d70cad9e5979ca9fade3aae243e81d0903b51e87f2ad5ee39be937913ba175f259fa8cda41caf3ec014cb24f4dd74591e1cd90022e8a59e951066a2f6d5b9dc5761f3945aaf403ea6b29e99de6daf8dddf62b7fe6041b30ed921463802f88d4d3818eec40ebc8868439ccbbd8e3bc327e57ecd0c341d71de21dbd417bd2f38aa5a00716b9d8b48dcdd912f63d31930fa9feb6be5d6b68f9d62d61b5b0a521e5cf1c4e0b5b0a4abeb57f207c0ac3ec8d1af74b848fe476ef3967db6f31ff3557d195b98a3c671b2c1ac6248655a476ff897c033b2355249089922998c957cd165ccb04a9023ce0289221bc4f66cbe5911642740d5c18c19fc987418d405d2c18e33d960a39f56a522ce8dbf9c9f0e0e8c310273160b620db2564afeff40bad0eb44065baeea749965998279d865fa9bb3f58389e73baf73fc37300d3d5afa767db87bbdb27bb3912915d576e2782a24b1e66c724b547584d9e1b0cde4999a1412d594039cf115e931c7ae484d909f57c76980414ec0e1044d2ad7e3de55f97478b4f2ba65114ce33dec9b5af987997902ba0cdb17f1b141739c29f5710d533eff27b93d3ec614ccc1f4a76b848d280a672ab2b889a0865160734ce9a250993a89515fa7cc4e634c0734d83541b15d2a3ebaf0a0c65e20335f35f512f272357a6847006d7a40a2251249ebf3e3ad91d9ef05d57d00b236be7e870777878caf3b26adee9d9c9de31cf99c8bddaa02ad5330484fdd5ac3c13cebbe4d29ae31be0cfb17900f0fd59eafb6fee1ba5bdbdf76c4beceebd67cfc4f6de7bf6fcd6fdfdff44d6559b701d5f27e1171a9c2567c91c82ef490175d5b6a7ca727c5a487c3adcfef07afbc4c0a5377bff18ee9e9f1d1d0396dc3ad7c0a6c24c17d3bbe0fcf04af6eed0bbbaf0520b336737bc0a79f723c7c3cc01968f2ce0f91d059508e134f20f2d79fdb6f34c3e4022a0f5ced48b2f693986b664f32ed3e4f307298e46d7ed36338e21a614cee5a8c338abc29ccc4f93287a07a939c2f21c45f38ba215083a544ab1e9f7e31ccb5a19e01033209cf2b82dbafb6cb4dc6383a2367170b25e938b537c9b22a1e5fa4c4a2a4e06cbac57844a2b81133cffb6e35479823a9727a6b382290d0637b91b68a59f8a24679c4a89f96bb7ed993a819d6135a9b5621d6bfec5ca9b044d46bf302fa59e49730d6a8bd53cbb4608759102aa934c8acd3341969bb807fa856d4303df77355edd7f354a89acd7dd92d6063d41b69ff29ca934439890d87ed64578ce85b62e9fe71fb472c3ec684e63b7bcc0e6c93cb9a22968fb8a4566a63ae2bbe572ad272faad2608fd199cbb8e4be17872cf4a25323439cf79e5dcf69f0f7054daff7c38c91b9e339c98427da08cba545446063e73fba944c2819474051b74c65c4e71497a5cc033abba0a99635a190d09c1a4b8e930ddd60b3b145010f585a483a52f4a5aa958cd5687264309bf58a75e5f375e5f3492f0dae8e45460899f22253104961c67040aee4e0f315ea98838faf09958be2177abd9b7c8ef15733e5fd1c5f12cf81f8e1d3240a688a2f8a962e07d629f5527fea388ee55ee203321b94460d8c87c4113d4ded19722d0b0f49d06e1f0c0edc0bfc8e04032a86c93d582ef588a734a3ec28de89928c0e2ccb956556eec45a9be92d58f226f11799bbd6c3349e24a94ff5bbc4db40876f7423c7735e1f9d9d1d1d9cef0fdf9c5568072793d4a0e9f3e219e124de532c6b12bb6a2b3b1653626461394b3ba56a275c620335f7f9f1d1f1d187e1099e3bd592bc110e71185f561b90c9b2000d9af269b0426c2b6b9059c57a26c75ca49268ee96d69098d382a22a3c018c96343589c5782b80c002009270124b14132bfe0cb66d99249bb0af9128f67e5e29f47eae8a7c45d8404757f9a87bd7b83b084d62d1f2b5aefe6b8ea913323ae34b51d07eb13038bd2725720dd1bdb7e3700627d26f526f46cdb33b4508617438ed8307e054d47dfc13e034ba8a608933011d121915bc50315c157ea880cd4658f330731a1fa9be2d97267724911dced5ee4ddde4e459d2664582c4e84c74c43c06564eb3fbaa1e9f2fd6a358941cd82b06e5225aa436822093c85d5568c281806e967a0db1a671717cad8cb50c7236681882b4bcdbd01cb94da56ae364e81a8b21c054f2f6abd67b5348fe6fc4a0354202e91f5bea24255a97f96035d3bdbb66bab45f58250206335eef9724338dacb949a339407ab32bbd7038813cd89605b7bd1e04a16cbf8c8f251257024d0de32a504040d88691e433ba17b3e443483fdbdf00150d14502b2859131ee824ed713e763e4f437fda4f09219e73e10c4f77b68f87cba57a3fdb7e7dd7525a810ac86d2412ed76ba26aa7ebdbdf3cbe9f1f6ceb048da3e3939fa1576c26adac9dedb7767cd68270eee05af2ed2daedca42e26be6214448c26ac1b572bc621fb86b80bf3f4cefe70aa2066951f0a4a4cee6b3fce1678c36358c594d40681919b96c48f1c83c862f0a5bd8320b5b63b4927f82c6cb8cb671c06dd23f538a32a862a319e47f8aba2407a8ca94d8e07ca571e9af6114490fc1d08532c3ac2eb5d0d20ec08519f37d8d983267b964c5aeb1bc4d94cae60fb05e051329a34d85806b4c3f1ab2b049ab4aefb790abdab16783f0d480897ac44c4be7d2e6d99cee367d286f879daef8be211b04c6aa883d0511fb74717949336661a63e14f37d53622adcb52e2e1133ced49bdb10277cdf59485f3cf8d8744388e8701fe07b0be0068fd8a0345bcdbe141f7062b5a25c4139b46e0cff30dd98266f9e52944584f72fd32cb33c72d0a46faa15661362b34aaf98c3e8178656a8cb0cf2283567664355a2a93468a5162c2caceeb5fe2c73deeced0fcf85124de9ccccc4f377dba7e7da11db9844988eb28a295326756c1e3c4b1d9b54abadd43a4b4b8e466dd75df707c082b04923561a4c38d39c8411b5706168d4285ed52c43e408bc3fde3fdade150391e3495db516096b8750b65c5ff9e60c81f0aea7c8e5bb12fdc25c6b679a24196d71481dc7b1feefd6be54976ff5eeb3f6ffefcd056944af401091dae9e2582f6a5c3fba7ce5a0ce3846d9d93ed93554c7a5f3b34c101d5d8bbecf730b92af3c5a5981493b5e1ad4914837e9668ee7fccff0e4081bf0ff80ede2fffbb66d1a51e0b2a63881c77ea1f28b0730372ec71dc57e9ab8223fe1b81149dcd8ddfbb0b73b3cc16ce574fb8a3a65262d8956aae4e5e1d9f7d6c8ebdb7f30713d713fe0294c9b13db899838b9cd3f7d2ad6fa86d0c43f47fd35731ae9883a47c7c3c3f3d3b3ed9333d21d13ab78b5b0cade3b7c4b7a326feff06d91413664aa48dad93f3add3b7c2b6b7b3a265629a554886c16d945c670976cc9f4e1ae95dbe97269a77cb58a2effb06b8b9e527a0093ad8552c1090f52e8ac9b4a10b13cfeb1baf32f1648fcf04eba982943cbec444b1815b5842a40a83cfba3edb6adab28f2e5ad06715058129fbf09565639a1321826bf6921de4fba312feb41f320e828f941086c7e44bdf42c9cd164c1405d56c81ce59e80eb7101f572a96a19ac2cbec68bf3bef2b9564d5664a5ca50a506b2e7c8bdab700979b179e6571bcbfb92b0951d91b3c50815182a47f513a5f31d692800371869c0499eeae86db5ed1dbec53eb1bc054bc07cbc7a568913a20fa707b55c750d830be69328f9fc4fd71f585761165e44d452992cf5627946e10fac388975568e337203d993249db9f1c08297c863f49f761759aef9be6e752aa38aacdbeaeeeb8b580dfa01a9e655e86b52ead04676e4ec1cedef6f1f9f0ecd9bb4c6898938674d725cadbd66ee5b5475fefa68f79f8576a14e0364ad19b6bc34f4d6a76110d0d872d7d444ae9cec1c33535ed586fb703be8c1b75de1a0492802d4422cd18efbac1e4dfc00b1eeb98a86bb0f514d982ba66f2821d4b8b6db5aca6fa4968af2289abab2e07d88912600aad68c3249cdecfade4cef414fcadb07ca1514b7d79bc4bb34f2ae6900b549a31054ba0f5e2c99dd85f01d85eeea61410f8deedd36fd06fc754af8233b52469fa64a4c0452ce2957755e7a2fd67dba138b9b50df0c34ac67f7feeba1ca342e848890449137cf688396492d19579022ad46c70d848327d787d1dde8764198c81ceff77140b151b7d2afdd720226de8bc2cb782f0e42df63490a17520cb37693e58f388ba10aaa6ec3e5147921624a6861cc34d1375be6ea4952747c0509e925c581bad982675c9eb89e53b0380037ecbaddaf86a87159881a5f0752d7e17ec5175ad8287767b5957bad239026edd70dcb29a94eb1cc0e9876541c784bfaf7143f3bcde2ce8112858f0ecf4e8ef6f135b66d56bb0b7251a8be98712964016f52037485191798a1a7336d9b15239cad94a02ecdfdf340fb75b84b1b7421ec53a742e733bb9f8e4777f17cef70776f67fbece8048c1e27788e7d94e329b1bf9b44fb1b44d9308e69bacf6775674afd4f82bf3352b1af71aa56145044a5f1c94d48bc5cb2c1688581c1277aed5abefaf6d6a13adf79b7b7bfdb3033f54b4fa7bfee9dedbc3bdf3b3cd4b79ed87219afb673003016f1ef01488cd0f8d63b060b8563beba2501605d245f2c5c5a45ba7e5c5bb26eb25205700afb905597fff1ef8c7b7775dfc04a390ea91784497d104eb677f78e56f6f7043e7a48777fa3915f1c501d65be1085cdd4e592954f7bf6cab9a05e5b6de3ab3d8209f3dd52d57de15fa0b1d9ca317409ce3847585f4529ce38905db5fa2d5bb8c8dd80341b07de5aa1de0ebff9a8a47ef4db309a700c6cbeeba3df86c262f733de6f39fa5d1807bd85d557e56080f7ef163bdabb96f7cebbe1ce2faf8ffef1ad27bdd2ad611d43d608ab69262a887b9b7874bbe722a39adfe0bce8965a1a8a90ba5110af4c5a7ed8c54b79304c1d4429630531d929a6aa4e517e0bfb1a7ceb2dd3a74fe54594e7c2a0f985b067de7c26ec997bbd1ec257f21a6af083ce5577bcd8a751935d893c2489bde89d2c1945179eff29b3d77a254ab293c493309d3db08eeef7221ed4f1bd7898f9de9cfe42af457fc42d752f3e5ab02c0cc4a54399739728e0278afb872b0b5351914fa3d770df11eeb707e20e3cefb5913ae3742c11a7f29a54d561e32c7b1364b770f5954bab5578c41db3323470960ba0dc4608e7ca3216ee21542fae7bcef6fef0e40c670897ba0166070c577b01c93196cd9648a618fa7992322fda4962e685b1328c51e666a5aca623dd3a8726e1037d599da5bbd2d724a3e21ae966178b6174170f6b43dedf3fcdb17f9f9bffc5876f8e8ece862775f026ce05df7c042ce26c37285f992dadae1ce169fd4a295402df4e1bbf8571cf6b4e03aebc28e464b8beed4817470a8d85d50e6958036b84d84661c845edb69fc4591251e7b397c6f6c2f1959f777938a18b2e97460a6fa9dfb48cdbed3556abd34378c5da6e2c7e51e9fb0a825431659237130a3a9382c3284d4362bdd013f12c66a92fd9a669896da283c44db978db98eb631193a9a6a0a90d87bbd6ab2dba22a34a015cebe81743add3bc296e473465b0234677eb701e767107eee944ea06cf42dee0312fee6c8a7d6ef3a9d8e67a9b7c9b136e456724b6b75e227ccdf3bb087f259b5bf8925807adad2edeeab666ad2e5edfdc6a79adcd2dbcb9d5eab67aad5eab8b5f766b49eb2fbb16bef85dce9b6fb59043375498c0976dca20493274258dfabdce81700d494dab8758ed629e8e5a959158ab9da242ed94c913ee0c2f8872b3c209a6cd674c5cde383d0651184f567928d545ce0f8fcef9e3582e7b8f8f53ca271b5c35cec2d8ee3dc39b7f61c67dfe270b3ef91b2fbaeb1b2fba7f91a4c51b381b5bae5c3557bc6bb339b23ddcc5bdd57b5a64d2e16983e75133bf8079fb70ef00622734b921babab4f0cd67e1f651e96d17386369f2890a6f907387256fc22f34b03710be0ae9e7d7c917edb0e68378b7e7a8a1f2b9c7a656334c6727db3bbfe0c0bd6cdaab6ef9eedd707b977f8679997db870e16ebce84a8077bd6ceaa5a977ed5a1b2fbaad8d175dcbc84926938c32708f7aff6d43492ba62585e172cfb25cd657043f0bbfd276db8eb5eb8989b85b29bce099c9da1f457563b9763ed5ed4139badeca2ac62500d3927987e5c6c01972e0fa064520c41fa44d900e24f242829b36413d30f1db65656f15ae580ade17bbd7050562a53712651a46f96b873ed9c031b1b7baeb0c996897127be32fa524dd958ed5b23ae26f2afeae304a9d830ad0c266f7c8461757c0275b3a09ba477add2edf45667c7b3ef8719730b70d23a6f24d47e18ea472d551249ed049a1d1b86ad468185e1fa8384b913e01a5d5adba5c59ba3558eae6dc09b35fe8f545e2a5016ccd3615f71cc081a5334fe915df18c4160f614520976f0695b6aa570e549fbbe0b1b80a98ace7f6eee9eb0525c10dccfbefdf8966a87a7015420fb4e3c3674d90c210de0de6fbf93d24c34bca7692d92c8905bf53a148abbd1c45e1a510d6526582eb6b13db903f09d78c60a1abbc1665faae7a643a235a34b9e15e2e431539c3af5c7e7cfdfeecece8d0d82d95a960c96c5e0c6bc96a439a29d2d1c4385259c0bbb0a44de1599ea3f8e2e5687b77eff0ed9884f0aa9d0179f02aefb2838de2a4e1c8a5bcc59b27fb908c56183b68bbd9851646160341654d594fe69957230b9145e1a9be1059ca7a3f6fbe7521d0aff0e2b318acf7dc286f62a1949afd611eef402d9012aa11846f1685bfaa845030c696733f6af0ef76214f2a6405e63985c28d73c5628133a0a0e4efa8810308b8802bea94bee585bf245008db6b7aa5d5bd132568b9bc2d9fa106f745ea4c0c5a04bbf0a62e888392844b3babe135dc6701c07e8ec68d56a978f87f6427baca445739bd321cd3cba4bc90ee2aaee91517582358b632a82863a65d3f0e119bf36bd938cbed0384dffd314e1ca7299d48bb5949184b86b35d97af8e5b8660a535b4726e9126d17d4639c1371c1437d1b458939e822e1899eb3d8e760f1affedd89f26a99c059803703e81f08ef03e71ab96f883d4127ff8c11e2a046b547120b1f3ff8c03894918319af2292e3990582e85fb086d873021fa82d7b4dd9ee279d9f9c455f1ed7c7093bb731c549d4fd4fcbee06bb2d24783a2d0ae9581ef08ab749ddf7a03503b8e63e152381366c67bd889a827b1cf56ce21727cf55b1c1748cfbfa232ce5e7ead79c6b82c7bc65829753fc41b45f99a6ac1374c0a2f158baa978a9a7eda14e666dfcf4bc5bbba978ad9f7f75221b5e40ddfcbe4d5da69d3a384398c83afbaaad2dd6cc3b744a9f8a536ae65157bd07b34fd55d77a99636f70ad6c78abde251ae0a9a8c4941454dcbb7e7fcc495f3d7df7e8d7c3e5b249965a7145fb3efe1ceee754e03bb845686888fe56e705f7755d40afc26491c12aa4818a18d3ec6601af727500efc2abc11fd5a1c19d2e27240353dba1fa6bbd35426c4dcf29a7e714399a96e9dbcb2bbc763c7422cbde149ad67fe534f5ae8ee9cbca2b661bc4f7e62cc3f3c80a4c11b53fb893b227aa97050235390cb8a72b8ddfc70f81c144dcc7134151fcbfcc17c11fe0a27f33ffd3646ba05c0bfddcadb92e1e2adfc2d2abb0d4ecc0dd7af3d4b440d11c19bb63839a54c62578f8553c1dba69531ca275c585bbe75b2a94ad8ee522bab093c470cb5b4670f164f01eb0227926ced7b6e4b70b12d3cfad5fa9f7e9c09b17a15ba685ea78c165b0226cb4d4700371806f0fbc395ef02507d38cb0113c7462aaf9611a71fcc78890c35720006415c93a4a9c876c863ad65fff6a75b445db05b26333e86b11f668fe5f10f6e8eaaeb0475996e28571f2b75c72712786183c3a06ca1a2157edf6159ef18c4536a731176f74deacdd9ee1af201145117025575e842f49ecc4090b27d747f121659f93f4136778169994362e8a0a2edbed4b7c50445b1af24781eaf81d899d19651e04d3d98193cb34e4d435c31fb88447993f3d4ea2d0bfc647247620dc8e7cdf57f927345b442cc39f890e5a7481b8c47e5e2cb04556acae10e153b268b7cff119099471c279bbbdb6c0db64ed74b9b462d1a1f5248eaead35423eb4db96eff953baeec5c1bacc858cc10757e64cc2346316fe546af380ce12d4709745e3a787ec1b3916ee101bdd738fb0d179771b9b5d75f7b11a34f71dbe651adc0b6cce9afb15cbe84a588fb3bb93230843f4155fe0a10e45044b6788f0bb72ca3b8477ca293b086fe323bc3f4678ef5e7d6f32be988ab0d4139b01a504d2955648970f91c0a9f3d963fe54f0090ce11848580a963a7e6e7fc69f786f3ee34f6384bf94e09121b0ba081f922fa3ee181f932fa3de189fdc0eb5e01a6e60f80f9294ba7b8e7e762ec238b0f738370a69ee9e239f740e04703d4ea2888b7f7b8ef96a9449e66611fda64b084b4ae8b4bbe7186faa448e19d9538730024b6c04c7201c49e440da4c2ca0e5523e649cf2c4640ebc87086865eff1c1dff7325dcb72799323c8440843518acf0622fc9692049bc36fe1d8c448b5c9bae2d3587ea540e1aca0782af676be4f016b74997af3e9dff78790af3f014777f028ea2a723410c5294f19966bad30744a1978eea52cf4229739f20956c7193ec47b6388356e22cb8a3867670a6b8c74f9995789a7766c3771379d5e2ebcd5913d23061ac5b41e64ac7911f56327a01165d44e915814a696b2290cd919ef1fae6df25c1cd4c44f90382e792011489bcf0fcc896dbde158df9a03b56a591dd6b15a61d68a13d6ca16f37992321ab43e876c9a2c58eb27b9cbb8ad891765f4270be5f635de46f8440d3ab47d2d5be18b4aa062ffb4dd3e77527a19668ca67691a137cd93fc0e8fc4dfd5eca9e6af78eba5b07ada94464f4fa575efcb66aba7972f10befe7f3dd64ca44e67172ad6ccb4f0223ea9f86f993fc69a7958ac99e97d62cd444db16626e55833f37bc79a99ff8162cd0477c79a299fbd1647b1df37d6cce4b6583305940b23d64cd3696d53ac99d9778a3513dc116b667e6bac19fc95acf7f0e50f73b322b40730965f71e17bdbadbbe35e2e2d0b8759e16918ee34d78c88569e76e9e8f1f86aa51b39c378c80b8233ef32abfa0ed6c7a2c062a96b4c96ba3e529c63a506e83821a993c4db4180437892d294475261d39901f1bca4a23817ac714440a3598235c1198e51bb5d1c8af5af4cb21172c64f7e18da1e17c77c8fd91942ed76847054bd82a647dbb2c47d23435573e65d56face79201d711c960eefb3affb9c105f12718ff80ef32e858a2d2325183d34f0a03ed75bb5f4aee53194304f8ac167b2bcb35fa00bb638bfb9cebccb75204a961be34ff4daa51debfcdceac418407113ac4849cd63f880f7411fb8884267de65cec95de5728cb8d250d9792bfe8f0d27c7e6bbd62fd7eb7b1d2dd2c6ab8592e117672efdbbdd3083dced857166379f0820c347bd170447316f59a1d15a31bc054600a654d23403cf33e5f2b0ebc5b075112d52ab7ca45359e7b5558ceeeb4dbc387f295701818fef740f291cbad7ee5036467259097cb16c2a33a542a6360352f3677937b8abee7c361dc335e20e989367ca1fe1300e400cbf9234a969558524e1e2903cbc23844c9c21671fda6d5fcf3f2aa6dfc7060984a0fbe1c4e694292d8269080a577c5da9bef0debc5cd6d3c183b3e89d2748e421fdc2b60b881bea826f063d77bd87fade1a2109986f82009e2673efd213eb0687c45b89a41e4749e89059bfe17c5a4dc86bcfff94cd3d9f9efdffd9bbd6efb66d2cff7dff8a8a3ba392152c4bf5b4d3a5cbe87812cdd45bbf4eec349d75bc391405596c285007849cc891fef73db87810004159c9a4ddfdb05f128b2fbc2feebdf8dddf2d8508097174cc45001fd69ff1fa8ae2aa52312aa1c9128d51ee195807cef9c4975e2d0350ef1b03e97ef92aad982f8eb966a35fa61488362860acf32520485fa42ce59dceff17396b82e8d81225f06141c043e51877bbb003916e770857ab6591b39044fab6ff0058cd298a8225ff68609efe6af1ec6943cf5d87cb94ff5002f81eb313c6683e59311cbabb066f0d856f43b7fd9d960bb9079327ada53dc28059f411eff386701a83cec434bce79766a88925a1dd00624379b2d5263798f88b91df5636d7ad374f1464ed96d81930f4cca42c0f09531ad0020c9eb9ccef3407d3c0a6a99dfbf1b6e64680f0eddc21ab9d1b64b57323215484e66e0e29c2edf6853672e6cac47944f75c112b17d8e3d7e974b8c89f24c29db9dc6cee4795d9c6b81570d308395ca012b6662778b0d6165aa20b0df5a4c55632c269ea8e7d7bfafcf242c03767b5e9b4dec3747a3a7ad22ce69793b357e3eb2d7a809ce650755bd1b4d1c8ca9fb0930346c09eacf87135e3818e53e773712801544a97dd54c25e5cb3b9f5fac0cdb50447a5108b8dbb70d5c28d4dfce7be02f865a3a5e4d278fb8f9f2eaf6f901fb69d6da3c8ea4d138bd60c5171f6524fa88a4998553fa8ed38a03bc23f0e0453dc2c2753fe49b131bb11724a054007c3287e8c7d6f4855a7aea375df39ac54c772a4118b57f14dacc78e29d755e98fa4de97c82dbd3b8e682fd1a9b1654c5a48d100119ddaa611cb039f6deb1f670b557ef9ce108eed6ef15d8ce526c8a2a891d85f1f7e339a2fc2681b49f082ff21a546b932bd451bd97f485d9a32431952d85f57f53a186ab2babcfa252df2a91cc7a845e392f3dcb7ddb2266da6e7b19d23005b96d69aa9e92fccf43e736ca9dd1465b7f84e68e38691ca8d6c12668d8100cfb2b2803b49821bc00bbfb696b8de695bf7d72de0756188c0aa922719c435141c65e04abfe7d6c418112fd8a293248fdd2efeb16d9db63a8a5aa8cfb565197786a8d60de3cec06141d70b253ebc456fc81b7a778894bb20fe08894a4490f844a6063cdf039c3d96e0ec1de1065f049cfd5989033d78eef33f1ecfcde4d0fdf1906ebbe4665ac0958bcc9ed78facf8232b34d396ac48cb61a50e9c8d6eefe21960204ced72aa81cf62e35d34a0d1ebfda0d1fe447d4d468dce604fbc747b2abff92e90f4fccb81a427fdb47ffeeaece6d4414acf5b91d29f90aecf83736ecb9cb788dad0cd6b8ddf6ab206c260987ad403e4ffcb7635912f8eba4d3b11f7968f4740a5c07d1bdb1a88b4531300604d2123afe5e56907ec57f15228c3f5d254e9262350e1be4c8fae9bc9029f00533f91daeed331d546d39fc66dd7eacd66d3f12602db85eb367bf9ff42be3b5f56bfce70db92e2ec33f3207e5e76bcffcf40b72303ddff52aab93f28439b35e95c3c3476b66a858fb65e7251d140275bbff4bba2a4ad556e3e632efe2f00a56e2abee7ab82e51a35ece8be5628589d5bf873f2b4ec8755393ab2d2761dfda0f279983474c3a36f150fdd5f7e8fc4dad201d500a4e807ac68f1fa8c63fae588e3b44f1242bca7e0bd16eedfd3a9a003913ae3134e38c1c39f9584d1b2a882781a52442249cfaf1371c54c5ec11f962999f22b99bca2cae1576c35a4e2c2a825de5eb9a32707f9348809caa7f14294ac3d7d56f8bdd1e34844d5b27412d47804fdf4c0e64fcf59817d4eb6c65c5f49236f72c35ff142026a5cfa54a841b267a19d6faf4e2ec667bde06dd0c3f0af01405f341fef05075037e3f15d46debd34f27cf1274fba24abfedfcfc6bfbe1dff7a7572f162fc92ef8c8f49d00f7a62805a310ecc385c33bcf4723110db3863e9a46831a2b8190437351261bb4564071f8958957edd42e42dae58f808f045b9d3d5bb236cae13f97015eef0290580d6e34a2c768e4aecb91f6d23096b10de71260493d8bf9f9753fc22a7587d9bd7297b960c8c43e6521c85d8c73e326282ead881db30eb95bd3cfa737ea74fceed6e02c78a97ba4832f21a3da3c9568b4fa476619a04a52efb269db8a28e4f67930a2e240dbe5e449c1c9e37e9e4748a9891119af4ede495f044b74b3c393ee1568cb7502d2afde793ab943804a0aa4b14a9987b94b3e46fc0394e3e85631bb8a04d3e3e7c7ae0b2681fd1093cf4059e4ed641bcd0fd904f511a39494ed20e6fb2af533c7253c81344511171e13875befc0eafe3b49684d00a804159fd03b2ccea9f7c169e8738723aaa9fb76e130f4a4d517dfa51ed32b1512325b4dd29a35379c72c6969fc3632424424b2867892a4c2c335e70251ee297b86645b443e0fe9a9e8e8e0b3801fd0f4e6af69ba5c627a0d791132c31f23462f4df2be2260a84f7a9c431d43e55203c33518e561e61da6391c94cc328f33e04d6189a8897f498af5c8eb2b57e3922449b68d1b5b0657cceb8adaab29b2c98144d20edc44393637193e696bb2fad72f4faeaec62f656603ba076dbdf305855394247e70f7dac8dcf9cbf8e5cde9f393b33beb14045396676901a3ee553c66f5d7de9e9d5edfe8a40f3a9fa7f19e38c865ed6a7df3f86f8f86cef6a00f0261efdc856b7e1d5f6eb0b540e0bf822d5a7159517c32a5f6a27cc03a9ba7ceddd1caaabd171bb8b5668e6b08566b5a67b1a07712827b233cf39999edc6fa9a807c9957a29dedd5c81e6550dbef7eecccfa69e859c2821f06d7fc398d7b119af57124dbdedadd4f258e866a3c6d2ad8b99d85d0228d2131b73ea2e18ed665a62e3305fbf4892fb558000e25151ca59ed3dbc19d164f8de6b90a95cfb89a841815863f42ff7875158d0e86b1791f7c13fad78bcbd717d168687347d485bb63e42bbc0eb3e7ea53e2a34a32bb02ef38f484d7dcc96dbfff8935307621569e509aaec39a0a4c6f2ae7de2295c2bc4791411021197dcb0bb775fbd1ed5d0c45f767b45c849e27843f424cc6929e1445f8d8c3ee69a27f452476609211ac6d1761e592933b985a1b8fbdaf6f0ddb3309beeeb5498bded7c1ddd70a1bb4ab117ca593e4a334276391a36feb314f989dcb32d317808815908982c3f40ccf1890fa899f37e5f298e8248514d5f904ebec81bf86410f8839674559d2b08c207de057467641eb7e1ec9f482821a36db6e1bb02a8ff6131399ae6b2cfc00345923c6ade664d94f9b07a3a2ebe3ce40829221ffbb5f91e1f7d4eeeda17cd6e67905a679da4f0d737c62c738dfde21920c8f4933d099f47a11bb2507c33b23d099dc1d1b94ffc2c65346d2b364509bf1e7c69a98f7f34ace854b719889d1b29ff2cef9639c5cc18a4cf12c27780a116ceb252e675f91f421bfe76336d27ff55715a627f7902c2d40cbe4635e8da7f7383ee4ff1ef61937186711209319a604b3f1876551524ce3c31b9a4f31611bfa100f87e6a3aff1e45dcee2c393e5b2c0aff1e4e79ce9db5bd3dda6bb6bd917c56ed1b4e5ae5bfc76e7a1f742fa4316adbe0ba43de696f70211edccb3fd17322da2edbf10b880da6d819a47d07a91032390b4dc8f95d2f360e0c78f454a4425d55e42ba3f6a99c027457129f05b23e07e8b50db7d201312c7135c5624ea070812f01c50c97b3f9ee6cc22655192904a538741f2b74a82d889aaf531b53cfaf233b04c05046d1b212214382f373c753d026d24f2c68382a29e45bcf6acbcbf2fb0a7f6f92ca4fa5041de77daf4540b747381c7e8a95a09767a84252e9a3678535bca01a81295fabb83eae793eb733e73833ff850fb8e2748345f6cd2b46f91b59b85d403b9ef08d615f919afc70f983401100c521872554eb056335af0bfb304033302ffbbe4d3759ecfe0a15cd100f3fd32ef244921cfb434f87db3219b4db6d994c77902b7052e3f0cd9665346ddaec78da5aa2e330b5c9231172f3fe335ef00714b872c8e14bbb7e8bc6e371d851d5f4032b6230aa879e19aa594412345dff349fa2c198857cb2483b8674673721f0e10e5c2debc44900a3288c037a505067c2c09825ed963bd1cb90526b49722bb5afcd2761baad6a0e00d0922cff4097114c5ce2a0bf915a777badd4ecaa7a6f3a05e0b96900923edc191f9c0a00123ad182898b65c9fca4fa373982d5752378a25764a30d40f90b91e202e4a5fe87605dcb03e11a95777266555b645f4cbc4ffea42a815a3ab1bec40cacc74d20672d77882eff730ffb26e37e05b7926f3f057fdf18bd39b93bf9d8d819816554f111b87e14a3a326a1c3841ab5be7436ff92fe057b6c0e4b2373dcf5f9d9d3c1fff7479f662fcf22ee9a4f004a04b44264c8a562dbe96639cd0d1473347ae53980c4473b0cc62026c63df9bf57dc4fb5dce15c310683c37f25f863cbdc2bfb4c88998654623d435319d5768eeedaccd8688260cf6f60f15c803d016d86c7d963597475806561c0e99434f906b33dba73b7c32fb8fdf6f24b51ee9a5c35b948e322bb7517dbcfbe949b655beb4e58abdc81798547949aa4f49cdd624ecaad7bc2501bcdb173369bbf9a3c85d8c72de7e5a3df770767ddcea8c1172d70da5c84b74c9ea01a315a1d126f34e84426ca8092a7591ba6259bbea62e47cae33ac73528bdddf85cdbab3ed69c4f122fd20127480215b0b436ec642e6e0d40e7a39b63d738ef256243b26b18887d10542aaae3a60c4da9bbc310ef5bed7ea7b056dc60a5148e5b2d85f10656a745a64d10e7907024919e3a3603818fc39683c2a6492a2bed5e9ffb3a67b9ee10f2ca5581351b7c65a6c511145f1ce90931d811a407150c237b6fe6489d6a26a77e09886568b1b938f7e4eb04886b2c889f841c50fe1400125d39c87eea7519e9476941c4a9312f8ef9f2b51e879ab482a695fc9315fe90ba2e059223023763b8e33e5dc76c5d7e11bf2276932a710bbde4b66119a3d1b401cbb1667326b5081c83733c4be9945112a129d7da540cd252a88ca972b86a7e0b00971d49f950432ccc8e912006e7334889729adf0296121eb57459ee170800ebe8dd070106d3d8de90dd13acca3083d84d168d54bbe8ba721affaaa971c0d5ce162a97285a9cae9daaf108593f5b62e521f6ccfa09f8b4ce532f37e52c8dcfb2de9e4f987b9681419069b29e51d43819b8996d21a0475b4516788d46c8c878703a466633cacb5891f06484f45fe82859482c3d1af58f915af552013b24294e9b6e9de5ad7c3ab87cc37ceb52072c7134cabea22bd0859a4ac190daff02914d1311199b77fba393f4b821f27f45980001c85c914bccc2151d40f583a2945d1cd17e165691638cfaa6017f545c492ec406beaeccb38d354e6d22399d3edaf32a3db91cce8f65789191b0c644eb7ef25bbd1f74782de68f8fdb782dfe8077750da1de4b8cfca6b61dc455b5ecf47749f1cfef7ed180f0efee34defcdc19bfedd9f0e1d17a602fb08c180a39d90a0f1d6ce258d6f71ffc5e5eb8be460789704fcaf00f16bafae127ee1d555b00d1f379bf0911b0962ecce93db202d8af2fdc56a81699e3d9fa734cd18a6d52529d60192dc355712b32fa882164b580f22e2c5610f5aa4bf95f49ae12517378220c8faadf227c0f487dff02db133072870bd5cf6a553925195eebf521fbddb9567e35f0b7ca9e6e5aa980a87ddc98c612af453be9879f1e7e9872b8ab3bc125108f75cf6d95715f02f923bf63ab4a80124066d0a311aa07efce7aa629759b6a249670822aa606932400e918b8c8dc9250be2e9b4be223b48f4b2766e42e5c4352846dd081ffbafae2228e8935f84c33455b3965cdc35f34c0b74dd4ec6ad42f9ea29e292d0c84314a15bbce0bd13126eca6789d178985221adc908c41c53fc0119aae199465150818a954bae07e464552ace49cbac3186242b704ae5e654851182df8a9932348727425ad60a71077d7996570c134cc36051ae2abc5a062d15701854daeaa608c29d7e90556eeb0dbca337f6e624695b28acc579bd2b96a185a9a44119c36d893daa20737c69d78425bd1a39ed8547868a797f9d929ce58f782a3a92f02e747da7543ac1a900d937fb971afd6bc8ba68dbda0110eebe17f3493e0b3b2eb70f58c60a32944eb91c97ad044df99d386007f76462272e1891848b83d8bece9739303ea9152f842969c534669ef579dc9895d98e0e30d2bd353ba10982d4a41cad1b59b7dbf1a152a519fd0eaf379b4e27d4aeeacd4639b0f95fd2671d6d369d7098c81794b376b399847021da86d8ef89ded54c01e8698c7593b2a47d9b18b4172042fff6e1fc695905e4789fbe6dab1b3820da773720e881d0f020d0d88449d4ffadcc09bf64afb61d5b71bd103f7105feeb2427e4d3494eb4d6bc0e8972056509e126ac4d78b2c80968b38bf4837323fd80f224db6c4a942614104dc033f1767c7e75f3cf9182a138d24b44f9f38fc227a3d87a4b19bd3e1d8644c779b79b762ca786706e872e72cbd58a2a393aa98e96f70c508a2c4f9d394651bc6f09f4b3a95e6c1dd7031906c29742d3baac343fe5c5abf3f1cbd3e70e598bc13159c8e4c1d27b2caa2476d91dd9c31e6cde9215e21500606b922415ff3a4461cd4d48a9f00f47fa111994e5123aec72b65a9ed696f526ad728be6ad79a63d68385afdf4124fe7e4b5ec09e1f7493f28978ff0f69816863858943f6af80d55791d48b74b9f9106d9efbc4f742c4192949efb4bb85ffe980c3c374b01faef7633fffd05dc67dd2ef3df7fa7df7fe62bbba85ff7ddfecd3befe524db050d548445cc9f0bd4c21e0b45a26dc2ce7c849dbf8e5f00485dda9007f7b4e42a6e0df1f184372ffb13e171d48e168664f28b397ea02539e09f10f58ef1568914afede209257efaf35308f2730a68318e1a29a6a9cf77aefadda4983704d039ea0c5a05c1d40cbe7f5e2e960566380ecad92cd8228c3eca7a3687b40ef1d6ab951b590283d58037ebfc6ee61dc55bf5149d90cbdaa495f52f4535d400425b9ae01384437642bab9971c08351895249b611327e9b1845b4e495422ddba91a6d2c0d56b372c8728dd3c3228f66a832c14e98f4b72ce8dc5c617dbde10e1b794b986a3082e329be77dcc2f3f8eebc8ace9b4d59615fde93167d10ecf2e36bd1aef73322ddff327b5598d5b0c61c4facf2f2f6e4e2f5e5dbeba7efbfca7938b7f8cdf02fdf32f27673090cddb2fc66727fff4b2d858fa89731ce9aadba8871be44db6b1e3a3087126db66a3d4b1ff1abfbc4435aedab5410dca7c57336ab3c1e7064f53d39566aacf6d0a1a6d57d010f540d4e5a7c1fe6b1200d5b8f19a31d8dee74b7ec5dad7730076c97d5db55fedead9087f93c53a795339c2df9431fe266f66d9b73ad3f22d218ab2a63b57701d0f8c88356ed550474d376e8b9c1eb6b26e7b69adecb6b8dbc507e0d2ff7b51a62cc4516ff82c19705b72e4ef3779623662f1c1f0702061279d848c483c3c1c38298416eafc0843f3b6a10fd404e731cbf27d381c20a627175c05c6f6107f43a243b20ded7a1253c773b5f208ca333ce0b6b5d11c18e77d1f085d9d975b1363c4576356aef864cbf2455a5c156986abd0792c8a5b9f53b32af29d5e3667701de22d34037e5fad557be283674d83dc98f42844a87ed13da62ae0984a5ad99a6acae8b724a82f70399104030f1955aba91e7706c83676626d2a20d73526509212b36d2dcf7808e75dc685fe10b91e3ef0917bc48df29d8b0fa9add79d1c2db23a391a0c760afa64c81f101c5a5f2631c65fe4d1d191383afa561c1d0d2510fb48d20d1cc993a3bf8a83a31fc4b1d10f43716a04074b6b79b0f4c8bff25df43b10cb8b8df104bed36426d01cfc164246b977e0319ddc1ed40646f3fb7b4c5fe4d522afaab03334ddd04559b9ec0706f981ff555030e4966ffbd45d4fbae606129704eff6ce93e066998368eb7ee74b312fd4de012bbbbed4bd05ceb5aad27bbc3728ac0ca3b0e8df5c9e5cdfa0c282f9d108b1c852b3cd6eb4b573ab1b95a608c7d93bee9fe1f4017bbeacc1681e33ed512756203e0aac06224d36ededf9f8fafae41f636fb20648fa50e7366c22e0c4c49629a49befaffb132751a28f3156cfdb6dc37a7b1ace66f6cf27a1d8b85a2be7a0edca9317bbddb079f1d960e429d53392616b4b5ee745f18a2cbc8d713ed10a0533bb7da73741c8103bc51956517fcdd14a7558b9b66365be2dcfb81942ad6196d90bdff69a7b1a8afc82d0d46fe5a7a456efc044f4a40e02249739ff530e5afc1d3e6a618f2cd34a24ddacfae96e42c7898c6d99fc5ee7da8cd7a58a6fef7855e1c7e9148e34ef31938ddf93920a5a0a02174e41249793b9da7c19b39324994b8c3f97ec3042618b7416f3667732126d8e4ecae95ac526e21a28b9aaf05549595a6c36462a1ac842431ea23058d272ba82cf07d1669395a42a0bdc7f9f5212aefa7f53c75a6d78192eccf9809ad8984cbc5426a9dc54c2061f9431ff75fd040d17ca767a2357fd13ada6978e0d3f2fdf273e255fac04a8004cc4cb25038c2b3654fe3adfa674fee5d5057e0f8fff8cd7218b46b6c5d99c1a7a62913b9581058bf95545dbadebcb6f7f5fbdd41e3bfb0eaf01c30679c8b7db0881f7c4ee8c694322407fe85642e6d8262cd69cde76b588aa96cb286370b3898ad5910d1a9a6ccb1b62881916a10e855638629c2f8b16f7fceefef116898d223b357d71ed40a8a582274018eef9943db74efb51b3190a0fe0d34f4e2fc62f7504b5324f4005c255d8165eb0c36d6af0959a7b94bae86130358bb06ee294f2c72f57accaa7427b909ca74383b70537f84fe769f5b7347b37a5e5d2a4436d0c624dfc68c0611df21091901c37741911080c9df5624581bb313efa6e605c361530540b1aa3107d718bfc33cc38668279008f7999eb1b44cc8600f1f2a435cac30f98ae0dda6943c37f87d78278da37c5a0145f112d0caa2077f582d03cdff6ee17e2a8995fbc2144fdfe0147ce04d0be83a027f1eab0e7f67a91519b7778dd24bb68ae86b645a88827c5c3ea68fd2068652068acbf5e7010f4f8489c95ef317d9e5638942c9a2dea0ca61ef7433b4f304e69dc19d40cc0b37edabfb9bc326625e8fd4243dadedd45c7ff7678f8ef5f55e58a66f83c5d2e7372ffeae559f26d7f301b7ef7fdb733dccfe62bf2aeff1bccd3ff090000ffff95e9411d89c41600", + "06a21337db3d9c8f818606bc28d2fce0": "1f8b08000000000000ffbcfd0b9824577d188a9fdf79d4a9eaaeeaeeeaeac7bca7ba7bba7b667677667a7a7a7af65dda5d21edae562b249030a0a5851e68059276596c059bc465b0131b631b3e2536c4b1dc24988013fe9f62c510486cb793d809c4e48fad042e5c1ee384eb0df22571ccb549be989efb9d73aaaaab1f33bbf0dd7b67b7bb4f559d3acfdff99ddffb7ce15940f4594080301afe03f47e10bff7dc87c69ea8bfdff8c50f4f8d3e43a88caea177a023e82a7a143d8b9e41cfa21be811f4c3e8ede887d10d740435d036422885ee478fa3b7a01f466f438fa0b723840ae841f4387a3bba81aecaf75cb48dd6d0d66d9718342c897c44d0c6e507d6373f97fdf16584d0bf4008751e7dfa916b37dbaffb0c42308710fce45b1eb9710d21944108771142fa5bdef6ce279e3f7af8a710c21f43f0f01f3cf9f8238f653ff5853f43d079074268fbc9271f7f84fc0a791a41e71f2384969e7cfa1d7fedc3a8d641d0f90242fc9eb73dfbe8235fbffbd8fb103c398710f9d8d38ffcb56bb00bef45f0d67f8d10729f79e4e9c73ff9bb375a08defa4d84f0f7ae3d7be31d8888363ff34df11c11d883f7238610dc034f2084ee0a7eff024da39f8c8faf8fd04f6450ef95a141f710fa16820fedfd5df4047c083d119b24244b177f24f8cc21087e89cc3587283c89107a107988a10202e4a22574089d267fdb2dbbffb874b4f4a172b6422bab959fa8bcaff2a1caffbff2e735a869b5546da3f678ed0375a39eaa3bf5e2caeffcc9decdf4cd8b371fbff9b69befbcf9ab373f7ef3d3373f7bf33f7e0bed7d6f6f2f68c7125a8d95fbfe72b6822b2b43e5b209e5a29b70337ff3f2cd276f3e7bf3bd37fffecd176ff66e7e212817f6fef3deeedeffbef76fffea1ddfb8f98d2b5fffa3afbfebebf46bf9affef7affef2573ff0d59ffaea7d5f5dfb8afb95f9af14befc175ffedd2fffe29717bf3cfbe5e297735f7c7ae6c8cce199faccd24c79c69dc9cca466f4193cfd57537f148ccaff1b7f80606f0fa563e56384da47010dcdd7adee75f6baf0abd0457f1fa1ea1ad4c7fe57e4776b6bbb7d0ad4ffe666a1b800c5e6566d90afb555ab94b579286b3c05ea7f3e27b38dfdcfe706792ae54119ad4afc857caed0dcdc3e099b837a5b5bb53afc32e18c999cdb06b50cdd310c5be706246cae6984505d6349ae995a76de4c5af89ca669996462cad24ccdb152592dc9ac6222616b9a8631e68c59869e37f3e5546a2aa925196398c8bbbaee24938e6164384f504acf71ae6593c999144ff16cca72785a4b4d279359ce358caf718b8b7739018a312598628c89c1b474423319e5845000ac733e63a766124987eb490a182a96e358158c4942e376223125cae696a6998ce984e99470d9944c8225183328d530c1aacd26d7b3097bde3273ba6e521c14552640139cdbc9e44c86a774b1eaf6bab00b5d7416a16abbdeaecbf1ab94355ee7e164d5f91a54ca9a98285ee4453965cdcded76b11d8e7eb1bd00cdcdedd6560dfe103ef841e0ba633183c0cf3b96e5fc3c1083598ecef77d720c1e7f1c684ab71c42e04d1f110dfdc89b8010c7d253f48067022ebdbd5de841072d2254ad842d56ad3d0e61fb82b6757d51ab2fca8852bde14b9512986aaf8b1174d12c5a446f4208ca0212b57c4e005da1b929406dbbb52540b2462aad663b056990b03a0f95d6c6f6698860510e5e00c7f572ad155f1c11a4036aadafbd2a97cbe55eb5b6de8aa5f39e778a26b43261007887d032e318634699a9738b510e40c836c1c4b6524b05339730325c4b124a0881ee586141badff13ea0a7f5238413a26b7c29cbd6b4246506e32663945166e904eb14e71693a628cbd0b4b4ae671386ad2bac108c0d163b870125704a80f61046fddd6ebf07dd3e824ebfa7f0461779d001b143a26a4eab946badadede666013a3bcbcb3be2d3553f3b082357cea58fde89fe06424e7c90da119a89304738c739f1930faf36728d70589b0a276c6d36ea1bb9ca081e51107108b6447b5ae1954221c5fcc656e30fcd79dbcc19469a538d368846ccb94cba9c9d5a751cd7b2723c2580050040fca678ceb25cc7599dca55329939133681678c44c1540b90eaf8a744b6bf03f09be2f7d708a73c67fd3738c6354288ce88411b98113d45193374bd984a951c018754a754a722054e29952aeabaae69cc4ec021e026a154d3b89d6496369c57b358d2d63e0d8046e078e56038e6cd7cc5a9b49aad4aab996fee0b91aff5bc8eefba1d777f00eb787bc8edba3d895f7661173a6809a16aa91d6217b156f2b9c2228478631d4af2b702bdfee7af32e658dca45dca18ed52935b0e6357a129c6aef71435b55496d1ae44e1b41be4bd2a30b7c4073d0943a23e052f415dcdcdedd360cbdf965d0cebadc327bb34c9795214943379923e954da5b24fd1244f6519fb629731c6bac1d5d5fee753d96c0a9a5719cba678928ef4af1ee2c94528c9df66890fea0e76a62f76830e5cedff7b55da53547421c94477d9a7ba9465539a29da61395783ce8b7778928df44ff4cd96e399b76375cbbe05f555a01bef939953bd51fdcda6ba725ccd5cce94a32e0720d665450b60041e3a3ed2bf03a772acd70df84b3f18c4f3fdaf9c0f86cf173545f7a13674ff937ed09e0b178286fbaae17e904bde176f06f707744a17bae858383ec541bbc6c161df51f327547060833ae33d38b8c7b1bd6b1ea12a843848ec5fc1b6150d297caaff97cf0be8dfb5245e008325055c14c11097c1fde7fbdf958b218986cb8eb6c3a8e7ed686714bbe2f0cb2c28133ae2a7ff5d55138544d80035ce61f90b02a768f300118d1055a7caaf407762318e05c8b19e874400fdfdef465d196dbf224820dcdd55d972b0e014406ff47551aac11878a2c2f1810bda8f7ce8a11eb2045e0a166b4025f47bb2759ea00e54a1b2d3837d2f2f56433bbf919b87396888e6088429ba5b2f4624ee38f219201dcfb13a7ec7727adf6d8bc2af3201476c371889cf7e3618ac8e9b4db953cb96d3ed3a56b77775fb86688cc0178cee06793ef7d960da10201f75c00784a610aaee4023d82e1b6a35066306efba863541285ec3d8e0bbdcc03fe66342b04f18e186c10953e3e3230f7cb42bcb526029e676071ac1ceda689f02f055097850e4175419242c33a0015cf0c0156509ca7f0782261583c224186ec4de122d01375eaeac4894d5432e74c045d3b25df5a093c19269ef8068570b3af10e8962bbf11ecb721146de5e57c2d8acd8195900aeb23041a80cae0ac5610841671f1608b5bdb2d216bf0f7fa7df153541871b86fbf0d99e40ebbd95767b45a5ce3eec1a5c64103d5070d4c3087c94443b08b555d1b2e476e520b4dadc2ce473da21c8ab1bfe4cad363353abfdfe77560210e808c0e80480b1fa1d4158f9fe992b573c996f66a6b6bb12429682b84e00712b8202f3ae9c397305214411dafb1d8ce0c79181e65109adcb15a81053498c845a81ad523e983a5e693579a5550946e82454c077ac9ee500eaf4c52ab25cf05dcb718e785ea7e789856f391ebc490c8eeb66533dcbe9741cab97ca76dcdd8ea2c2e5387510822e78282776bb7669021667417354bd5b355f14cda8afbae753e680b58714b2b11cc797bdf5c530f972245cc77265034768fe3a3a750b9a3f2464f339ad3e404cf1e9da97806a5dbe7efdf2e5ebd7d7c5da67d40be6a47d00c1eec9172e5fbefe7989027c9e645e3077db01cfbeb78b1174e47a5d15dcb8c0c27310706b01e0fa00907cddb13357607ee9cc1a645a172feeb6cf5f394318b1b6cb6b672eb65a1765596a1cc4825b045eacf376bd0de8be17fdf95ff99579ff45e8fefaf47b3ef3e0839f79cff4105e34500ea1ea3aa4a1c8dbf2add3c1fb18fd93cb97ff89bff0c20b0bffd9b9ef99cdc6b3f7398f3efab5d98f7d6cf63d9f79ddeb3ed379c7fdf6d5abf6fdef68b755fdf03df815742294350c18a890808f0b1a149355af893c71d2bf0edfc36f2598119260da8ce09831c564abd59a654c4b6a929507803b302df063d300875ff7cccf32fbd57942a903a7010363aca2f294d6d68febc460cc6034a131836246f0db8062ba787726fba1d73c39bfb0c50b54ae1db5b62d8955da08390161ab50080c6192fa01572ec86d482e20f8bc5a47b15be369f0c2cdaa1f6d5bfe5842c18a6ae3618943c5e086e0926fcc41710ef28a8752037c025adb5badc609686174b9bd72472673c74afb3260d35c78faf5af7f7ac134317c6ffbd26ab9bc7a691b1300028021b752685db9fbee2badc28a8331060c40302201ceed220b4d0baceb08da3520cab76af5182e2ce6b7e5ba6bb73439bb1d812e24b3a57e9bd3e5f2a5e595ead2caf2a54a05bc6caadf9563d149653b61ce476e4e5356e43c7f734ad3a6348e02fca6d68ae05f3302661dbb5d2d158b12bed68197eaeda2cdd10be0f5cf7ddd96d34ed65f807ff142f98517e054ff5fbfd0fb7a93504ad65f78a1fc029c7841f059ee5e0fbe013ea248477984dac5769df3769d83c0554501a5dbb5ca9397bf78f98b77ffd8e5c3f0d3664e5fbbbca6eb502abe4edcfde0917b7f0c7a0617377366a184a44414c12e78684eee9b6918a556db21b5dae349f6adab011e09901f208120c063f49590c190880f90cc2769e500bf0a38886d3cb16af804ea651de0c8d560c7b91a56fad4f89d6e940aeb9f901ba111bcdbbc7dbc4b62d0724b647b391033dc0e920537144ea091f6d550e316ed938d2bc21ab48ae55a1da474a7225ab77ea7a8eecef5f5566b6dfdce7c2e97bf737ded2faeddb7b833d5ff0bdbe9b93b4548dacef5cba28523d95aeaf53d74df35c7eeffc5d4ce62cfb12159dc712f5f8fb52f8b8aa886102bd9a5762958580299d8dce1c5760b0adbededad089d42afefc394d7ffe9108378473e75ee6ff6fd9d47571d27396d5a53466ec905df8bb0cc9407fa27cffdad1bfdf75073d9399e331209a3d01163c4c6f0de9d6374f5101e2c0e5db1a19c6cc00a098cd9ed4b9200c477ffc610da933bbbdcdf873064bfa98808cb715088f706d8b11326dc30d18d90e3c47e38f1c655aa07e0f3f6d0158f77433549b5b8df8de3f64fc4fae7c47af189b00f16b8634d1ea0f8de782fd47cfc2e46f013b21fab6807bdeae0f9189e814a7ec0c38d6d4cb01b9f90e6d03615a3b5ac680e8636a9107f0b84ad70b41bdeea85894e9818e9c7caf7db8ffa48af46fb110799ef7bbb1def893fd681a84b128f74f676a10b1de4a215b48950f514b44e88ff8dad5a7d63abb1061256ecc1b887147fb1d25249f811c6009bc76bef3773d954b775b1f0394f54e0753a627fec25664cac130c82e8595acfa6fa3d3377b135bff96ac1a7f89ef816bcddde2ef8b21d0886d6da712043137f081c38561355f9e26b662b9e065714273e7b284c41007b0a1fbd01bd05dd403f8e7e56ca62b8d22dd4235d41a853500829d23c84da05c52246ba878075566fb7232d446bab46e4d028d1321bda1f06e9522c0d2f9a45e392d80b2f250a66697dbd545ae7da259e318c0cbfa47171bd5eba9d3cb9b9b95c6e6eaeff4f8344f8817b82847740b946f1fba81bbcb0f04e98e87787eacce5e6e2b478033d8c50b551e77549d5087ab9deae3714e5ac4dd8c0da325f2800bb0d3aa00e7fcf34c12ae79677321698a69921786375f5949d55bbeae6e1c3e70a05a6a7f55c257734d8f08f1e0d488063c7e8c81d595a6667395716a559959c9ed659a170eef0e14db54167ed53abab1b9864ba5121fb172be9bc40769944d38ab218e6b5e3904ed4181d07c5d1c5f2750336fba3bd3357ae9c515fad8b175bf22b78b61b32d81dc1438b4f7f57f052e2d30b9fa1a1b59144457416bd5ace52ac361e6f6159e30395566c1db49b91622b9c0cae1680ad60bc324419a95d21fabc54286b6541dc94b57241346de4faef860df68217c6b989ee6cfefd82407a7f7e56641cbeda156f8327bea31d69c0535e95b46c6cdd57e2cb7f1fe4705b28211a8b4121d09ba9e95a81595aa1ac2d69e54232afcf13cce8799e31542707e9f0d94aec994807af8625cdd46ae086b967f3f95975dbc8f0f394a9a11ba4a3672bb1672b9489f7c23242d8188cd19b027c393618ad188e2ce6c730e6d8c0e46358b2de8ae34ce85953fa8d1bfa94a5ba0af84638973730a8a6de32c7b58471f6ac9150b9994ecf3e3180a827ce529da9376f2f570c773d80fea1e2fc2365745c0a10099ae3e60391643baefa8b002214138cbeaeca1ca94801e2c8ebaacc918a641a7e8f702a66d7c8703d63e0a5e9e9256c647409458c524ea6cbe5e9dbc87314084437a8bee8388b3a8d5ec31832f97ce636f27ce307a97c429ee77e90ca27e41987ed088cc5e2af0f03750a7884ea8ac3f07b0ac41abff54df88200d442593bc7a6ec1066ed29764ec29d5a7ae1ad911c83cb853077f4e2509122397c773cdfd01d848c21dc5f41ebe838ba0b3d80de84de3abc33d5f749b3382ed8278fb3cffdf8bee205bbd6e8079e18b9f19570eb1bb90e3f6e98ea8d25fc6813197bd4f7f77f4dc08abeef380d8d52bc47d5d8c8546f63348ab73932d188f4ff6e286c1fc9f13747ae234aa01bc9dc23da204ceca1b17e77268cc46d8e43bcef10bb4ff61987fd20cd99300ee3fd9f19018951d0f8e8e83878e3bd860800fae383d3197f8610d262328e27d14fa37f835e467f8c505512418a72ad0b7c912b7045eb6e6c2aeb9f63d0281636dbdb5bebb0b57912b6b6dbcd63d0de81c6f666636ba3d16caf41bdd2dad86c35d7a05539056d4920b704360988e3ed763d05f596ac6963ab518f5490210dd6d8dc6e55c51eb1b52db0d10e34a4d0545cc677e763d0560aaa5322d13c05ed01255d8f7127c58136a1b9b90d33794dd3b8c5b59406a0dd75fe2d8400104e011731038c0b40490a130c00f344c319480038d4a000b0763493d9a9560f5db8969a668fbf8b6a7c2da7699aa61b1a33188747af60860153c0e2edfb8f1fbbfffe632cc1000333189345509d5ea186964853f2f2ea8913ab874e9ce014134208a60ed7d635107f181a1a7ff02de7cd6232c5b402c698e22200a1948866699696224413ff5952238ccc5c397aa85addc964aedc3577ae73c5e09a0debbad6d4f896c6b9b6a86917de447559bf14b9cb1669c7eebffff8b107008080e82fa1e40aa1e9044b90bb65c30ead9ef8191b53426c4c4820e71dac9fd3e8e2feeba638bcf90f262db6db8bb726e10a785590f8d1f5d254cd48af4e53f69a13275ef39a134c670067d6eac71389d974697d23e409c730c3fb4bebd34e760acc294bbc77e235004c676b6736968ce47ae9fd03f62ea65fd846c7d029742f4250a9af417d4334ba918274a47de75a2132242885b07a025a81e913abb49ae2d32a95a5d543b3b429c5caf0cdf2142b5ade1d7778e6149b2a276d3b69ea00763a6d8327be753369dbfd7fe279803cafdfa3048a98504094e02210d0cf99456a59b4689ecb9a966dda65ab9bc96432ae2bbebbd652dab42d33fb31cff3bc39ba45759d6ed1b9213dd2517412212608d87abb7a0a4e82b2d4123d531310f06d6da75d6cc999696e06b322162f545a4d8c1883c79eeef701029b3ec18938d64709c56f9c7d8c26b9845c48a601fabd4ec7e3490a8fcdbc1153f2d130afb40804e8f79f7e0c18034827d53be076423dee87657bef868cd24687f4a4f82ed714bdaa484d45a64690a4c8d4fc46a1b2b95dcfd51a911eeb14b4f83ac8096dd5b4fc46a121f6fa5a65a3d6a869c572a1b1008b580a95d358cc76710dd6a5ed6dfb1414370a8dc2f63ad4e43381122526dc6e6dd7f886000e2ecb15056d8982e641293cb0c479a703b5da692c0def16432b45693f10bcb659686c6c3652414df2a6041e09409b85a0651ca38293bc6b2d594858e56ca166118d2c36f4b9b240083305ab9c350b09ab9a33a792e66c7aba6c8033438a890c2b4c0324cc3acb694920784ea00f02675224036712335a1a3076320c9374c22e18b319ca1259e3b09ea3b9b496ca59a564236138c9f4acae918c6d6732dc208491463a6b378ca49132ac291de34c968a56d0d97c0268b948759264c67c2691d393ba6ed37c46b3218f0900c38b9462ae5980612a914b567734aca56d465f9e5a4dad1da73495cad9505f4c34168daca1671333472c2bad69195be38689e776206de6e122cb24ac2333cc64966b975881cf245d4881edf20c07022e1048721bb324cb2ee858332c4cee4a576d0a1aab710e1a9dd73462260ee99ca7ad8d440692604ee9496ae984e25272d1809256e005ca920606633ecb535cd7b5949e2f33922cce03e044cae63ca9730e84ba941a59c3158d318ab267d3946e5475aa2f648c8c1ee83a5e9430bd82ee464f22e4c4ed3d04801e85b865c90e1cc50ab899bc8e4446c5d1f70e7e5cc9ee0a0684935d3d9134be4138211cef1ac9840eff9e72f2477f4438b59c843ec8e558fbdd077a0d638caf918c91c8900e06c01d92491819f2118c9fbc0ad8b18c0c89f258ce358c9f7c128fdd1ed6fd1c4297d11b10aa566256ec312bd49829bae048146539cc5e8eb391c514c42930d82589a7ce0bbc73fe6a92081c449257e3d7ff1eb2a699858d7309d3b6cdc4b98d91ebcbc14ed48bde0fcb7b2a3174fd5b93df8fae5f8ed3e380fcbd8f820f5da987acac42a3b2510e25d5a7617b73110a527b5b812728400f8026d349fe463dcfdfa827d249e86692fde504d3afe8fa159d25e07f4b6614fe2c21047f0c1d544267432baf68df0dd381724d8c5ef5e0c76204fff8687d7967679919cc3a349bca6653a5f9f94396b4d3ed77f77b721490d2f6011cde16c393b54faeacac318311fee83ef789d20d62e4eebd0c9f071fe5446f1c25415c84422e0d5a5920f293d08c4d71c5adce3e6f4e199f709ce7b32de71346e29ad8db9db93907bcd96ac2f884d3ca3eef389f30a6cce7d5fd9cda1b3b81de3c8396d45835157435052036db957ca55589abfcb66ad0712caecf67b3f33ab79caee7eeba4a99248dfb2c470c8263b9aee739d640a3839029680ce91340104705544577a37bd07de835e875e88da8831e13ab20dfac57f24d276e33556856862fab957c604835480c37b10281b97171e49757f24d40aeebbbeeaed22ce4cc5d339733c5073c37e2145c79a32bf2f4773b9d4ec78fbe5cd7f55cd7053767ca5c435f9e2b00dc55df39b3efcb727c33d7f73b6e6737f8b8ee906dcd1a42d5522ba0dbc725e5e99076b4e33aa64e2730efeb0592e98f07d7e79574542a93dc073a571963b41788b17f5ddaf85d90c63eca1c51e1238adc80fe4ba3457444d049d5c07622ae3b3a09034bd261dbb56a73f829a0d0fec9f94494bad4efc89675a5c635baed06c063f5a535652ff88a2b27439d1f1ae2d92c348b0ea1757406dd87507b48e33472551a860f526a494df63c345ba57c251f7475586975cde386c1e55737fcfa6ecc86f3c81e02248d3a3d40aeb8d37f4f4764145f5e68991725bae1888b97fbbddd5dc7f2dc5d4ff5bddf1958f2d198dd931dd9c95564734b52f358daaa15477ac473da21102ba1996fb69ad0539581efed21a9a37e20a6617c5a0d6fcf056544e7075a5e35fca239b29d9ee7c5f6a925b4891e44a83a0ea4c386a962fb19316b14d9238f9ec956d3608c5a0e8a36855685ffa6df11d80cbab9b9b9fe89d1a7b1373f3e6ca9f8b2e8c6cbabe1fa08f91d40d1b309168e12f72adf250d1d91f69bad4aaed056869bf518f79d4f8132e91cb2e19ca9f9b5af58ce853648f380f68560390a1096a8a5eb58feb1d72503170f6539e70ff428b1faa704ee1ff23e8adb2496146b3f0ff03ba72fb65a17efb0b259514d2ed7ffbfa4c8e7cd5b172e6cbd39637dcd9a9eb6be6665de3c53adcebc392633ad0536d623051f82b0e48131b7dfba2811a6ec86d5a9ceced4b229cbb908dd8bad4e362521673795edcc56abb36a61b72e46bc174017fd28fad2c0c2650e8ab9427e21b407dbe7bf787a4c7e6f1694122610706c6d361563135aea8dfc6f056ccf76eb14b4940d5fc56e9403797d7b7babb506f5c6d646630d5a5203a0ccd11a5bdbedd0fc2f721112ad54866bca6f30a7f18d9ce079226bb61444763830f8c3f23f01c0182806004231e0e2e92a80914d00c1869348382a6100544f1700cb2c520811bc1afe0ffe72b957adafb536ee9fcb5433730c20916118731d3005e054721719d35c4ca7174d33c30008a61c2860ce3166e904b0b9cc5266eefef5d012483339a684e8146b811c0533f94de537c18413c0b0b86e0166587605302560ad2f0206c265168d622abf5958864628a79812cde4ad35312cfdade59291e666368131368a2910b94c8e4d3d616000d34d128da6a60c2361248ca914d588b9688a0e2712dc249a8989462055d431c189acc9d346697948e759450d741a5d12743493049b9af21173aaed8160ac1a938b0deb6beb43577ce80afefc413ba0d5d657964f666d3b7b727965bd7472e6412d9bc8cde9fdff72f6e187cf9eb97225a5360c2d91d026a4520fce9c2cc54b585b593969671dfb414d9fcb25b25b57cea8727a06172fca4d4425fc3011ac2d453fcca1430881e099d640ec135c32533cb29bae73b9cae5d6d62e152bf05b349de8f712197a269b125bc2d993a96ccfb1ceb4a1b07d075cd29349fd977f43ace2dff8e54f6453ae9bcafabef4b2ee60847603b9316ac7fcee582ccd6369bf3a2b50c26c15a2542f4c74d5cfd807299d86a21553a8815a52727307ba139d47af430886c9c1f60f4e0e56874b828ea209b3a94e8c129468af2b28c5514ab0bf1be6072f67ca8c934840853753d92112b0337821e007d55c26d12c2a231497228e512f755ee7ad9242c5a96cf699beb4d5917bfb91aedbe9801fd90775b3a990ea4865fbbb1dcfefee0ef19f3974023d81507b784f57f2c936af44461e8d76a04f8f39ea36da0df94a3bf4ec0dd8cf76fe54e054c09b6908197291b7ab99b41778d6f528cba67eec19d08b96e0509ed16d7d76cd0617b2b98bad99b5ac6be7c97fbed80aef61fcac5148cdd49206b8f7ea1943e57019eb057e6f3de9d376c7337ab23663158d6708ce65c1057b6db675316fbbd9b51923f36f5a17c39b7a467f068c646d2655d4ddcb98a82c43f2c22c6a48abc7663b065027813b912c7460be32707caa40a7bffb41ef7fc839e9588ee74b36e2815f0f1cf07e5d9975b9e046b6c5ffc3836571f7e38a72611f7f40dced2a7a17c7ec44bd83ad441d1e981aaf055bf862b495b7a329d9d768f48e0e35356ed24ed0d055d1a495c053707febd1fee73a8c31d609a661e537446f5f925497665214f9c3087add09bcc622682625bb996f821b51c6de1ef27de84626715e7f177c7f98ee4fa26954454d7407ba34627b3364b317d7540ddbf6f161027582f4fd891847722394c8ffcd01851ca7969dfe0363f63a913de5407137665809912e2f36c715e903761b443693fc404ca913506fdf1af8a8582137783ef4927bce72fa7e8c3f5c19b8ac307ae13be2fe772e8456d5820590d45ef035048baa9db741daefd74e7fb47171e79aa747dab91bb5ee3c63a3ce36ddf1860edab92078591819c59821a274eb3a783d6334f004cea624d66d5e65acdf93983d72b3bd1a12fad2097733ca9bca3e454d6d0fc5fd6eaf36070ced40de2fdbda3ea0a1722b3bb0adbd090d15501a3575e003ec583ea34143d46671552e6170653a404583960eecde4cd44027d123c36baf528c7b940db539e67536a4691fd8014ee894926d7a8226108be4278946b404c1d5cf0802e833554c0c4e34ec118cb1f75741ae5fc51ae106c6d54f0b5aebd3554c121a65c4c318e35d55ce6cf578f06a55d051d5e00d8f302a8a3b1ee63a87b1ca2528aea5a0724f11ca08f1980c625e06ed11d4c96b950ddac0ef84c72651b26c23d7bcd26ae627dcab8edc031438a73ced87330bcd2869f97e3c1dc0a5cc24b6ff80f197de2b32ad2c7b8354c7ebc62fdcc18592d1ba920ef3d12c42814dfa626c8a4e4660d9eb4bb8ff25095f1e63bf28e1ce9797bff472e88ff6fc2f49101bdad3ee4608f67197963e2ecad52124288b920e99b805d6ea1c0ac12ee45133eec5ff337f1df0f5cbf75dbb769f53b537664f96c6b7404d6b4331581f9e72555745bdb7cd92dae5ebe275ce375299f17d3057cfb607fe4f1d7497b4328b60bbde1c05eb7518f5e83f2efa3901fee193412b8c6af7f78c78f3bcf041ffe72579f14596e44d23e8af27b0e373016232ba815bb79c82988b9f74c8fe1265238f256f15ca208ac14efb4034ffc721dabd03fd42e8d62a39aae20157ed4a205dab849b027ca12f65661941435b4e464b24faaf8c99bb4709cf97a0e9a7b2d073c0156b33246fc56a0e0488d23b76524a7c297e26885ff461d8832e7a23424c85ef382165071b5b8d50942075e05bad58aca1c867309f92920101896138911dc83716a4a39b8a25a2151a256dbb0e7f997ca8b2a481e9708c414f60cc000c26f97c964fa7971d67399dce33c08468068086216100c63c67825ea93c944c62e80349ae4e2f65d2050b539c9cb781ea14323a49274c136348d7538cd3ec6232699ac9e462967296aaa701009b66224df48ccc6f2f248182554c6796a6a7e7605ef95962e90bf1087a03fa67d148ac41630dea5bdbad135246a2c426d1906cd5ea5bb5d6889844c64819845752aae1484c52d01a957a416b94366aedc801700dea0de9a150bf951c46aab573795950288719ae003e099418f51ac9309d0026c00c02dc2094026862b0359399d38691924219a211711b00809a3ad042a1ad71b8503570ff296c1877cecd6990c830c010095808c640eda4e9a6d3ae69da540c2ea61c8049110b00cb1840e7e7ee341699a5e56733c031c19811c08031d66d03449e849e4d1a36376713204ad43977928461632a0198eb9a819901841248381a10d05389442193b1cd7cb198cf2d58a69419e953a1108598ba91c000d6a24938494d1b46226118d369a21173d102c00943370937817002a9291d1348662d6b3e179333cfa236ba0b3d742b0f39f9d3da92379b9b324b3e275f6887d2e7c0d29d8f5c036aadad2bb738c136c4d2abd5ea8e9dc9d8ed5a7535967ed0367fdfb4e557c7363591d44c5bfad88d14a0d2fd66c6dea98a226aede1e23e17bc6b9b4f0405da669cffb5d00a6a21541d9602dda6a72074220cf3f43e4c554b6c3a97af5fef85ce3cbbfbf2519edaa12e5f8fdbb51284da8be0a03ff5fee3bff3fe140ff1ee8be84ef46a84aa0787a7aa14bf6f991820d152452748b42b6541b72bfdda1d79d11385fdd7db157a0dcd4d139d0ea9cc606a7e80def8d12e70fb5d0867ebf69b1da36996d1fd81f785d8fcea1322b0886646548bb81f236a14752c699dd18827bba9ecf5cb872eccacc788f6caa3c7142c89e6561e3baa80493cb976dfea8599b58832ec655397af57e663ccc1cef28602c05476379b6a2faf2bd0148feebb565e089804b1590ee6e430ba1bbd66c051ddd2a757d087b7bd9c7c49bc9cbf109036e7cf0704cf85f301df74fe3c63fe2d569a209619bd7061d2bb83f2f71767c496616c4e3be86d81958634faac95d3a02c36d4bca680d7c53d2db718986f28fa7d018a5cdc2b6c9e0e6c39d46c9e827651dc136529c30e39c33c3e1a7f729c707698f3253dcf0feb19239d6c2632866dace8395ee17c95e9e478229d4e1c273a3dcc7995e7f543baad6712cd64dac8eaab3ca797757d85eae478329d4efe49e0a9fc1f745b3fa4e77995f3c354c7274411270867ab9c57789eafeab6a18ac8e887795e5fe2fc30e3aa0851d38ac896d3570c5b342899fedb719f6640f37bbf0dff09de23253d9af4a9e145de2e6e4bef99761d8e9824f50fab27acb7bffd57af5bd99977cf1c367f13de631d9e7ef774d6bafec2f5ebe689ea3fb4a8f94909734a273d8316501921d6200d457fed408334e21128ea814017fed72e4d19468aed62ac24a2e46b9ee77919f00595d9f7296702a819cf796e77348e59e5d6f1f86425fb09d0f2a2aa0304651dcfdd55faddff84119c41069a41cb685b51d6013d1c0a484a1b82b8cc35daa1afa6848ccad015ecf6bd541623a7efa8cef6d18b91aae1875c9172b961c019c7725dcbe9abcd6a61e1ee8505492e87ca04f11b87f5027a38d00c0e471e11e8b755d6f804e944245d6c04126325bb8e10f3c676733b3e962a9e4a14a2c4b18e3d5a51f2138999d6672fac5ebe7ef74edab52f5f17f795eb9f9ed101d657964fd8b6bc01de48cc921b96d3d958de89cab19cf9caf5cba71fc9317efdb2b8a13cfe00402b14ce1d3ad450d7b1be57a5ccf7fbdf316f5f3774fb3b4a7c4e8ae83842c58a1d33511838f4c623a8ed274ad9ed76e3d6150e2446f4e4715db80b81f4ad1f38eb7d69a2625ea9de03fb11c52f56d011b42d658313c596c30c7ebb55c93779bed9aa38c526a99066bb596f142bed5ec89c0e385319a74eccf37fffc52b4f7cf8ea4eeec49b8f3f7a2cf7e68dd2b98acb68429ab4dc30823e48fe5741d74279e9c74a4b903f0a680f1dfde92b5750d4de9eb46bf831f48fd1efecd7ded0a0306cf078bcc8e148b38187d88420b3959866bb3912567642405a65723c12f3360ceb99af375b95f01df15abe999f306611b3ff67a0119ae09a9de0a6c612946a44c64e61841a1a4b329e644c57fc0c6684e88c714a289480083e891a8c253423a371f1a67c710908482d31259a545b13c148110c9404ba648aa5f53f6c1e3d125463719ee677c9b91278e846625c9a418c34d7928c5282096734a9718bb3a46c3127046382750da8ce984119278450d1564d349e10e972c06892f3b461d8ba611b36655886bf15ac1916ede2b2c5f2ae54ac87ada51af9853d6e51510ec500f55f8be9977d5419e8976f07aa9d2133a2e2a83ff0bedae6ee0133f880b2b0b01ce7db516ad2d7814b6110ef210a5ab1872644f209e57edf001fe563fbf886d688ede4874d6afd5af5b879edc8ebaf59d9999f983e64be04be7978da9fce5ad77ee8f035ebf8d24753c47c29169bac8372e8304202a24b7288ea617082768329c54d18574e6c83d28cf70cc924a1e3582f6fb324ef58ce19f86dc7ea779319e20138167454ea7309d3b59cb64053fddffbbd55cb31133dcc48f03bd4860c5a44a838bad34a8787201c596bab86c22d1576bfd3a6a6e0223072a4ea67b752794da502deb618e24e18e34b959d4247d07929ff6bc5ca6b1f2cb54fc340d13a0877a6d0014c2545b7640360eadf4e14e47b73ca5fde32ffa76ab59ed11dd7fa63b3946d8b9c9dce4491fecd792bbdb39c2d29f07982905472288e918a8d716a3432c641d1a58a4371f38205019ed294878ab389e98f2b1410a1043764c1ba63898fcbfdde1f2c91a13697d1c6789baba391efc4b8b70f08b902bbb1b6f56f8432554f3213ce03b1e6c35a2c67c4e67baa6daa33928b8ae2912855908c2b3b90c1986801ed08be7148a7125e14c65ceb02f18bba2b2995fd9f444a146971b0bc23aabf7246a415ed21ae8bc57bb75ac7c5bdf39ef7a6b93971af54ba7ef11e37d488f8e2d6ceb268f9d987e585a25fc48d135bad7b8b05797376ee4d7778e7c5cd07efb9e77ac98dd1d869b484b610722a31e2c5deaab14930531fc9e44bdb8c8e205cae8e40ca3f1f3c1ad2777c6b144cfe6bfc6960fbdc0dda15e9a5c30af924888141333e3f0212c37577c7a63f8a79eb4aabbeb2c62b755e1c0ebfc08b836803f0e2fc61b6ea4f3df9143b3c5f5a5f2fcd1f664f3d39e5afaacbddeaac3ff5e46c75bd545aafce3e39e5abe4889e5c49ef4fa3cbfb7b021fb808e25ec22321113b81ce7b550512597f361e35291e1cb11fe9cf9f88dd8d7c7cbfa0429394d6ef1b8f4134d090f71c4bc99242ff0965af2c78956df40042ed71b99740bdb70add2e0da34a234475d8c3aec1370cce8d0dc121f9dc004fee9fcabc314c5db29cfeee80b206011a5fe0c635f1ce3569d4fb33c32fa854d7b1bae176dc0f5f1fd874f968111d153079cbe6f361088aa06777425bfffafc61f69303680a92e04d6aa0b4d252c01540d6801771a53668d288c79b5b1c5863a9102882a03d407927ed28a5dc70207a94a92fac95cb6b99f2da5a3943cce9d4b8f497e244ce0477e4b56ccacb99f7a9f764093cc5301d9720a7dc34d7505ca77b42cab83ae86de86fa1e70537d81224366fad413d5f6fa9e5d22a9e82763dbf16a28d623e70196ce743e741b98357235c5ed6864c551af50558847c71d4857c34f8c680fd1e120eedfa7a46f78d0c977ceee39891e730c5dca0b48b29c6147ff09788b8e619a31f59a30416ffce9fd6a806c4a5ff22b87e38612ad7d27c3d732f55c4e7a51f5d3b73666dedcc99ad4bf76272fed26fe9b6f18d4b7f4be4ffdb278d34bf1b3028890a868e22a7dff00679ef9d940561919dc8aa79be982898f036f7ef505e0deffdbd4c3daffc52cdc4a580bdbcb424eb5c5b3b13db1b97510bbd1a3d8b908ac2d41e504e517ca9b863b50adda414c592029f1c8350cd56c07d4d1469b400298969244fd859de5092087131b3915b5fb8bb6e39ce63dda0f93fb33244baffff083e814b73c305b8d72faf5e985d8fc9282a8f1e53720889f3fc94b99e2f48a6bb1b94f6ded0865d6c38b3d68c79a27ee7f4da700972bcfe2546f06e94460e2a461afbb8eb4ee49cdb2a0d87297bd9f701edeef67df0e1dd8e151a2d5a4edfeff57ad2317560a3388b76d0a5e1b8eda3d286ea7ec186c55cb4cb1a27b910c21d65520fdf0de51117cec72411fd5f1b0f412c32f8a68d3d70ace0e753a17ce2fcf921d9c4bd13a212cb2c9d74b2df03822d279d044f26867cbb4fa20be841f42842d0a80796b5cad530ba90abbe5114d7a189e3e0428e76dd96370a9b79bbbd913b0adcded83a0a6d479651dea8db451bfefcfd82bdd6c92ffc389567966823d7fd8f75ae00747ddfbf02d081e31d4c087eed6b3111fb869e62b16be8e8a9fe3ff7c03905d0fff645b807f2704fff1f9d0670bcfeb7637458416238b4cfa6e27cffc22fd71fda417e2f928505f4a54c974ecebe96db4a16a682595d513ba032db923bff1fbd76f66429fed2b070cc6e8571b002ffa98fcabdf2ced0822480b75064b3bd15c8e48b85cd76a3bdbd5994fe73b57a6d4b80a9ba0a1e2a46e58bf9edb9b956fe4fd3e2af96cbd5d3af64b3d9adecbfd434cdd6fe95666b9af64ab66567b3af2c3cb4b0b0f04d79ff9bf97c1e1ecce7f3f957c44b35f9f62b4e339bcdaa57fe95ccf6a759b0b32dfb950558587868e19b9acd34f6cd7c6b6eae35c4bf14a5bc7b68ed9e045eb2a5a352be596f159958be9dc0f0a167395e5f2e5ebfd3e977c1ebf704b7ac9ef6ba803cd7753b9d8e3b1c0365111d4127d005f404bc1e9e841f97f4e158fc89936a1bdb8146bd12f7a85a80ba528204ba8d7671c890fad6fa9ef6e646230836d68ce2686c375a411c8dcd8dc6e65673071a6a0eb534545a1b85f8712a1b9b8d98c3475349c8a49b88a8b3b2b1d5286b152e27f7346c6c379ab9da3c48c179409dcc4163b0c9369aeda8194df94a73b3d0c86fd41ad1f92f9b8d7c0a0ec9a11030b5916bc4753c915ea7dd6c345564817a533dcbe7b4764cf3272d27d4b6a515e30befe735ceb584a169094da79c370befe6f2c8252080cf0364a40786f87e3310029890dafe91692901c2196098c60c633c0594a631953e244d4aa94513599c23949279a65360498d704a754675666413b9aa0d186b49a6996c0530d80098620b74a23193e984105d20634c30649829dd53129c3093120b304e8a6293986a6c21452d6a199a6168f37a92726d4ad3e60130d168cad02c8caf9fc1946242e94f1b9aade998124a4846337e4dd776b87e54d375ada269099d3bcdbf317086613883316690c1789e40428c5102e30f1e147dd79a36d38cc3b4780f4f03504aa91c0a9352a0c90c504208a59c5046b0928c128c752e9a4a750660030380145000ac693a6384608d51ca80a492327248529489755112654c4f316681ae2d683a4de8dba2275b7358c30b94138d1b8e71f9facf509c2584902ca67f28661e00d26258a91ed2a24af79541393485e6e46973cbe33b7ae4da201553f1f46ee815a07c587df927d084f8037fe09860e6fabee77aaeb787e40f1a8a0712d63f5e3329b5a27fc3b5b9828c083f13ab1a3eaf6009dd8350fb2023b9e8a49181d3a63c032e5f49016ff066be141d1320dbf692111c8c120897d5b92ac6f3a219cfc3917ec7cc79d0f9a883197eef7b31c3ce47fb5d2f74f8ed248203563c750e8b179495909148dd9cd9f53c87e8d8c33a713caf13baf80ee96be66e752a52c58eeda095fd2d64c238d30718bf4401a655fd32c67d0e9d094eaa1919d64afd04b41aa2098d2a2f867abb3094277716a0d9281e8bc4d9f0354539e54c9e601d3112ae4b0cdeef263e4313cc999fcd176628fe74c2c716ef0ab42373798c758241ecc8c17731c65ddd247ee2d398ce3bcefcbcc30cf69944bfcb4d57651a8e8be04abf1f140b493981c5cc159a13c0d22e75c799c86c0abc3118f547194635c3d9d42067df033fce1b12c45132b61ec59e5cc9375b957cd399d41452c937db957c13ba9efa1b6bc4aee77564d01bdfeb7a32defc50e5fd5dcff38675819bd2eaa72c39978a569341565400d6d57dd8eb132058d8d62dfc56769d92594b2cdae535cb584d6529a6161b07379e4e282174785ad553d99499cba65ecca66a66121f29dbf366cd2c393ccbc721965914d33fcb99662e3c36ea6a53daa3c8e58308d290d8e74e20137992c718b2301fd861d6ca91f24becf2a16e6cc811b4d1aa6db4f8d02a8330d8ff1ec1d65cda3dbf5c5c2fe6579c85f614d3a9a699f329796f4adda386f4aadc5bded959ae1f3d5affdd5084bb88898633f3d6dc6143a32c93b4d7665882f10ccfcc597387130c18b593f6911996d0b04608c023aa80e51d14d31554d08ef4a98e94e6dbedca980264151ae55abd7a0a8ee3984e216fb71bd503a7133e3c6f55a44ee09d43aa9225806cc9ec7f986492ff0c4cab1969555e500e03c3ee0c3f14aa0806da94a72cf37ac2b4a46a41ea5a7e243c6b4886e08ffc0548e4c337878eca3301548892869acf1381ef6db08e792c9ce6c0c456656d30758844a81f0d55b3b1c047e2ad066c24b2bcbc8273662acb8e6fe025293c7cd136f9ea2237ed34e5ecc889849d95c1e26666abb9b5a9f9ad3c53786afee2a1a53b679825c38682cb58ee6ccdb4b3298cf1b137ce4c9565402d7bce28b76d9c36cd1ce0a9d76c25166d91bd569b210ca7d24e462e89149b992be408d4666657d429b5ca6fc2412e6a22e4c425766add3602cfb920586d59e3ca9236eadbcbe674eaecc30f9f4d4d9b8b4b4b8b47e62b9579f1e9043782c7b0cdd8c367cf3eccd8ccbd6b6bf7ce140ae76ab57385c21d2b2b77145cc6e62e1f3af4ea1995271e3fd347a783b320022fbf9120736184dc78884c3557adc1f8436fba8a4f5a15c79a4ede17c47ad592ec3e427276b6302f6e183c5b6fc3299e4da860be95e9452bc5f959c28892f3627c56cf18c5bab5cd2a4571cb2ce8dbb053271a59649af4952251ec768185370329e9a181277bb3258320e49ba25187a0d5742a2d19c7243f384868b72325ae1dcbe9783dafe3585ddf0f5282a3ea4029345df45dd715fcadbb87444222ab182e56274b6c68f54009b351e00a03f38deda242c2c58d5a5be1e13832c2e8b1e39ab65cabdd71864c57abaf9a99264fc81b55ef0c9dae56ef9c99fe5e18f61b9d2533d5eaaba667c8e3ea9d284b78e3be4130371ef1926aaf8aa441c5a65d71820f69da9592ddb449708d3caf27e39a743d0f7c57a43dcf1d5071a31f492386fa1303393212362a866c50c5892c9a78bed96a978a6144014969742586e8ed06c129beddf3fabd48ff1c9cecd453464bbbbd9eef07927fc71ae66145ff1cb42863801c17105c6db62aa54abeb95fecca523c2a52b355198a53d96c55c426ddef791e7446e3530e2256fe7eaf173e7d55afe7f57abbe39128a38894ae17e939fa82eac5112eb0d5e9afa30b9dc74f1e1af97f54c66fdb6a946b95b5e1b8ddeabf725b082de75ba7a00d1d6bda5c585a5a30a7ad3357ae5c55161e8263c3940006150c51337962cac48c1046789a9fb972e50c4f7322ae717e29a5b261c2307894cedf7be4c8bdf3945e3973e6ca1f608a8dac61640d4c3137354c303705dba9994c3729c86806222356410cf85446307026c7046b261ff16d2dddc2faae5d69f3fd4f0ffd61b7d3733b079dc2d2ddedc6606716ada18be82de847d1cfa12efa2d84aafbf11e3c05d561ad920c7f73a08073c40876cc1f72d8b0978c0ae2a4a4765422dd9e24bf8e0e96ec8c1a7b30babac2980c4f13fa46fedce43c2e4fb29595719b1338127b577d29bb91fef381fd88b8f7d23e6f8b87631e4722e387c262440e779f4cdc556d1b6d712ffeb23a4a326c623fe6046a399dc9ef07b65f71fb86f363b60243f63bc3277fb46f7516b417d77c7e67606d17d7883e3f4137e78eb90747363afe24fd5ce8572df0afc081ea3419b96e1a1ba14e2d6e5cfd67e7df323b7766764e7ebde57ca0b585ee6377558e1d7b66797979f99963c72a773db68742856c4c1eeecb33d896d043311ccfdbf94192476949a40dec5dea81c96e8b47a1b4071ab238bd8a248af795a2d7f55df9ab6512ebb627a7d479e7db54303e3f08d2f7f6b7134e7992fd8c1c2739f72f35375e14bf5dd777a50aea9b18bb7240dfd99288cf039a362c0763387a143066f4bd8e15fa0cb3111e6f569dfd9d6fda322a993dc66a0af60ebae2afe7fb8062ea9423628bec76c1f3fd7e2fe6ccde13502a364f1af10062772ea38682c1b87e9d575acd60178d0e441cbe04370653477ac1762a036f3d3d4876652001f9d5ed00722c57dde944a9a158640421b0a08e511f61e443a7d7eb8d3e3f02452e9efb7e573c1d3e7bad8e50a49f53a010db8beb434fa4d862fe8993279ff8078190e37a74e7d95f10bbe62fe467667e3fdc40d3d12d19e32fd0ff17918b9033f1e0914aab6d97d4e6b1bb5ca96ca5d259fbe4f2cadaa16aedb89363df7301292be2bfae39b963b5daaa5236a4535b95cacaf72a7bc156331c677e56ec14b2b6ca2487288cf6db80bafb6c5cb13d302dade62741d9ee28704d00aa41399216828a1af5804ab0f7611447bcb66da53e9522bd5ea43276ac1ba14e6ec865ffc20d19d3f652bf079e0a47a26c0a6339243bd88cbd0d48c545d80d641ac8c5489ee35e8c4ec4926d888737bc16a8a2ff3cf805146a89236d719c9698115c413b1e0826ecb53a4cd7890e1b0dcf89550baa375353a84634f5c1e72d67f6979547e9f30f49a5b88ae0d555462ef214e0871cab3a0b9eb4bd7c486c5f2aa9f0a6f49b9e424b68039d18cceb718835469a3fc59074739f34f4fae1fecb93ec475e129bcb3f08b883b78dfc82af8253c8fdf73915a26277f4489f58ec67128be920a3594f90bb8ef925dfb64b4f3124349455ea50c0b5e76e71b61e14f7373a67dfbaf5797b13fa56bdc549b8df9ff7df8dc927e4de50fe8007f6adb7df91b9a2abbb3f50dfc6cf211f5be4dfdfbced178fef76e66d64380633ff03cedb6dd85ddffebc1d1042f096f3167528b4c988cdfd6dcd5b9ce7397d8b783ee5da3a8466543c14128651b19572715f8ee8d001bddc9f4fda438caebe2489a9091d442331601eb8bd99698f9d1cac140fcd304e91608165b47525013b70869cd861c34bf374bb0a1408d9595ede2104282c6d690b4b173d4657e501edcf4f58a2b1b389cbdbd65203f48cb1bcb3b36c64743852ce1c5f8ac52e54b12fef0b233a1cb8bad66142478320e8f129e3aa93072db1ced5582fab0b80d356c7aae47215ab63a50116962e7e6a688d8df4f56aac876d8b2535f5a22a84726a1f537d1cd0357705167d3145fea8ad5e71b3d0883bae56220fd746388fd2d9417a658d5836d9f689e59575003da30f4c9dae5fb6ddf4cedda13d54ec78c7c8ceaa71e8d0b9424153c10f03bbabcbd739cb3d725a9966c5fbf0dcb04d52a5b50f0bae66efe09d20bf1fa72dc17d2ca2077c37e4a81337f68bb631c925e3b6f37feaff9962f6cdafced347d051e7028f05838b0fceb7af8e07618a1fcceb0f87a0ba1a2f7bf660bb3178c81f3dcb5754f2297ff4a85f3f743d93e70d7bd00524da5dad8f4d74ec60c15f1a6d5958da73c33d09ab1e2e7be259c99100c61f6f9daa0750eca8e2583dc3face25f41af418427060ac18a51d2a1663774878bca758bc4e6362109958708376a35de7f0ecd2649868ea263bb5f253e1e5d25f3253974c4643a49a432ff55fdf9014a97ce524b8fb811f67f736df155ec016e392fcff03c6475e909e4f9c5ddaba346487378f8ea31f122bdb99e0463f985a7e60d42c36b237ed237e9ba8477bba19b3b30ce7b73888f73508b305ce043558986158ad069dd197c5b3e786de0b0b7363390675aa7387c7b56e6331daaa932d298680240a6868c71cd264a8f7b168cab1edd497bce1c0adb4bbef66c692a0a63d16d32da6531fd8b71c461ba1d57bc42eb59a617c6e16d8b63823bf529ba30cde3abe60d8fa2f753a9d4e5706ea943ed9283a2fd8f71547d4ed789d3dd4f13a7ddff33ac36b318bca3236f27884703e99398fc500ffb9d108e182531f04faf687a380c3880cfc163623ced069a2fb537e03b1e3fef2f0ddb8bf1f8dfc0edc885f0d55cd698859ba492703b530c46c146364f5f091130fb469920b9cb82d6359de3f736175f5c2ccfdd21fc4f3baea0cd3e8a053f0da02a7b425f73c5f111bbbe060dd49a79d42a443590c70720c5c94f4ac3870d8d9555287c1a02bc984032ea3171e883c56ac07a488a227e36f87b2ae34ca4eb0a16e15874da75f8ad95bca59dded49784a44635a0ca20bd4a5a6aa89da625d42ec68853890c78db842207746eec16ed757423df9d37f3eb02df17abeef8769f0e5090c5dcb11bfd011cb4f1a5fb9de1eea06c65eae173b3f509711c75751139d45f7a037a2c7117202943a16a6ae1a3ea8878910295746a3d791f0417d34d45df840c9f143071f076ec86b297ff29487aa07bde8f12579c31fb90e2293bb034721a53694573d35c9dd981b51e07513cb2f453d5eec1ceba900be2ac3e22265772758940725003da0a443628ca544c80f6441e005f8d8dbdb859e2caf764089c5401518b040ee78f96f6f666c3bd32c4c4d4da869ad5edc5e58d82ed6172facac5c08f0d9bfc6087e529edebf25a56b136b6e0f555c1fbeda8d37c3d45259e7df35e71617e736cbf55af943617b0af018650fc9b0320fcac07f5e2aebd6eb57b69a57eacb1b6f3f75faedeb3f5cdc5e986f17ea8b1796572e2c0ef11ecb72542a0dd64841de8e29364f42351f3f7b562c8f5d4ca0df4ba6b9ad07a7aba028e940173c6c9bfdaf62ac10c65f363f1126a113fa36fb08898c4ae32828aad6e83117816d89acd0d712f47deaa40af1f53e666802463d4aae3d34c01f0f5d235489e2551d1e42b00b1e3a12ab233cdb48852e2936825a86aaab404fd5a725689771cebab2bea0562bac96129f99ba6e325f543b543996b636a27f69a9171af16b6c8e5c0fd6d54b8305e839717d552c1dd0db61f9e3d8d18fbd375ccc60ec7df0c4daaaca93d878e44c210d4ddaf55300becea107c450b15a0c023de07a574f51f08110552821e0034dc5c7fab02ab311e89ce62148848537da51e06a795e22ec72d6a50931bcf25b0e7a34f4dde1d11575c6c67e148ef6ad2fa2a57c77b41e3718a3d10ae2e3158e7512a16a2c0c2674434f886ee04b11a3234aa81a9737f3a1132a0e41bd39ae59f860667930ddcb990f0ee9197a3165a417275d10418f043a480bcd0ada8d0d453418390b3d30db0a6e047c931bc524cd2a723995cdde7be6e13637f83fe0066f3f7c36528d467e6cd0b9ffe8d18d539aae6ba7368e1ebd5fc040a0839a46c89147fc0e557d085aa7e024786f3ce785a491e59d7b2374fdbbde9a7c4f58ec7b926fbdcb4780deb4d7832ef8c841c8d950d458c068482aecafa6a68f4f4dc39b3cef9199e953d333e097dc373436dcb39dceb9d2c6c61b5c57eefd83336ad6d159f4107a2b7a27fa29f401f4ab08b5639e6bd27623e63cc1476416f240950976bc9322b61747985369a63512d92e167f3746bcf12117057f6413b51ce747035a7e23f8bd8b27d94640ec8bdf9747ae9746f2af44c8e5db411caa656bf8fcf86ef0fb7383caebb102c5ef9707e5a9dfeee88d8f8fbcf1f1086ec330557e0c9a2297e2418c7249f90f224d4571a6e4726e86885a8c6bb102bfdda599442243bb008e95c8d0cdee26cd242c07fee7b163ef6841cf304da3ef11693769fceccf1aa66311f6cf3efc6109af3de8493f5f04b108d901ea888ed69498a31b8fd3a1f4670ef821eba5ced85269f043b942d89f0574586ac346fd1e9bedcae0b46cee4c08cafea5187f6ea4297820cfb24b5338bc321caefdb981776242f783a3f35e0717c683b893583c2385a52493912f8d1e3246e4e936a5cd429e54f24d255d73f7502724bbd971c14b8a16743c0f1ef228ebf5a2ea7c9eec3fa39a88fcd8dc1a62d771ec90d1ad56f275deaad841959e3238838eeb791db57ff9a2408c1c67d7f376fb28605cd120d6ef73684de07ec1a2d5e2c180c2d5161dbeb955ab87010ce10bff21b180e9b296b96f71fd5e7769e1f5a7a7d345c6cc34d78ca495ccbd5b1e768452870a553b55f5ecc2e1376c9e71d2a9e9ac9e66b49836b21acb59568129051ea09520f6d29a8a2b103f2d3426ccadd7b478f42165f2fd9b138a4c1d2ad432c3157f85d1644617cd4b38b279a20ba43edc85206e4c17be14b425162929402eedf859a5b16888c5c2761dbe74abbeaa867de4c0717b39312f1a36344747a46e2ce87f800e71fc0455f92d51b1a2bddfb3785f46ab13bc90f80fa2cc77e79256d2d0f44c92b2627afaf4eb1796dc7b016caf9acad40a8752a26dac605939a6d9897491b2b49e9d4ea59db38d371c8efbb9bc5a9ef4b806f572adb2bdd93c15c6926aec40a35c53b6cd4180dd9a562c683cbf20cf743e06cd866c5b5d0253f0e246b921f78e7ab5125a846084676daa538cc12e603c6bebd984666ae6ac6950307480a95c2647538f3497df75912518003053b35dc824354bb30b18666dcc65aaef49c6e96da92c06c0d954ca0e6cf8125a617d2a5fc6d849ad3fbad89b9a56271359960cab6ba7525902e0a45eb33b747e452fb0217a83a047c3d6b26d69c8a85cf9b66b757940536b5b5a783756a1522b576a720cb85668ab2c3569dc780c9a3b701482d39c6af55ab9a2026aa946c34bb8606b16c7f62cc89496cc806b6ba6ec70825d7cd772f3118be532b92910a3428de49ca9995a22abdbb318176c2040756acf62e8a86ebc2fe50010350a405296a54e7a9a9aee2d3eb69672302ee7a7d60b5a223cfb29c809904dc5ed8a2cc9fdefa013a3a7d555a3d34f4b218b5011acd0001fd69bc54abd99afb4a1d42af522b9225cf468461de5731aa4897fcf72e01b4fd53ff0eb4f7da00e17040917514defeb1ac9a4d1251a09cfae20da73f21c1b7f7748e62a30f3aaf4bef8beda752b9d09f46fd5d8ee7e4af1eeff7940db1f98a0a86474f501148fa7d140db08552bf5a1bdaf548f4bcf8b0346b3199d1bd2e4953af43e9bfca7832db0ff07299249caade8fcc5adf8f9fafdfff28afb9bf98e1bee82ab0953aaf3e336c15dcf1b8e3f3c8b4e21e48c4461891babb783094843e03a31fedd5147f94921141cd9430195eef92ece9a7ddfb47169cc3679704649b7a384499dc7cd74da7c7ce448fe19854b83b39f9683d8350ab14f083e32884152815ea1ac9dd3ca85e047142692ac22efb0b2b4f0df9dcde767c547d4164f0fe18e24da19f6066a4f90e7b742f9e8985ac90f3af370041edf117c93ef0ba2f03b711d71748cfa20e4a1e0af24fd3816f77010a3b4824e0bec16f745887b250cf1c8e18906c1393da7a3e8996960312d7f7d708a8fd2f4ef7a925a0dbe0712c85726c1ff05588d92176219c2702fa129694c70f9ddc9abef7c719fe00a627e4259590ead44586d58db5a9c8412babd918a3e3f7aa337da256f823102461e72a107aeaabf3a3192d4c4404e9f52654465feafe1b21d155022d6a86786c7a517d9122bda6b499e027242fad147d29efd0d222abcd96e169b75de6e14db95280e668f9bd470ac5436317c8e85c798f3d9c3170ea7cfa78f5cd89899beebf95ff8c3f7fcfcaecba8f1f63098e2a83ecfeb1d3ad4fbe157bdeafff8c8e1f58f1c5e1f8a79f9a3e81fa1dfbe4534c3302882739b312f1bdf57cccb09212f952bd43e212f79905b05bb6cb62a398d1f14f2f2bf119d69192331954e3aba9ed634835022c34a6a295dcf1886cdb9a561004a0867cce4dca44c834da0941a4cb338cfe8a9a98491d1b84e08c1474186bba486c6744a354248144292136a506650ca83c09290269cd2046309adb55aa6e4c09897b09ecc1b464a631a11a56b695dcf1a7a8aeba6a6199488bf246726d72ca6199452ca6852d3535c4bca0ab1a6b1b491c899c9a2992c26a98c8429ff3442f4c0ab9f0cee32423915edd5e92b54c398022cbcaba71924b6ff3ba88ece4a1fd321c761b58eea93e40eed7a3cc60e2fc663810f471473433578f8db1dbe747eae3b9d092e33d3dde91783f48bff332658f4421d7bf0fba1a12b6e397e773a13dc908504e9173f14537ac5637bbfe5ffbbd8def0276bc4d0cababec40bbc9cc89be9c456226d16922ecff3b2aebb5a82ac25d3e9e401d92a9cbb9a41d712e974f24f5a172fb65e4e1612655ee04bba5ed68cf0fd84e6ea7a99e7b99b2ca8f7276633b8c8a6e754b66433917ee9624b9a07c562fe9c433f827e02a1ea0eb476a0117e3794a352b08cf9b80faec8b2d1d8d86a842fb536b61af598e441aefb09bebcbc19c95d9a5061918111c788607336f538ecd4798a9f4914ccd085b7c8748a09a434ddb19841e1b576391bb8f26e4f099067e67c8a19f42c8439a007fd9730ecd4d3b3c90f7c188032929eb5ced7b6315ea73a916ebc09e9c6cbb02643dcc24f31ebffe6ed4fe0e438ea3c513c7e1911197954d6955595adea2bbb4b5dd587faa8aeaeaed6e156ba25cb92255b42f2215f72f9c4b2852c5936b6c16397c180f160f060c06018531cc372acfd61161698ddf9cfd6cc9f65580678ec7ae0f1d859b697c7673e300f78b3cc0c333bc396de272232abb2aaab5ab299dd96aa2a3232323322328edff9fd69964d944bf428f5cfcf6d69f9fe12952cf805c0abb3082bace8dadde1589d16721102e62387b1224b8fa5c7121be37b7fe21ebe1818e410d402fc2eb1d9c3959f380298107cc9a3ae0f42198ae3ad84b0ff66109a28c9e8b70519bfd6971e977b6a98e1d127a86defcce767c68b96af76dda0356ecce4f33b6d5b7d8b5e5c938ad9da4605330aeb6827a44cbe1c34b8cc7cedc742aad8464c2baf828274b64ef88a45d6991e4ed77521f8573056a046a37af8506800c23cd6ebd1bde83e744ed88205a2df0dd0011b138133cfc644e0deb33111dc956d3047e820b07cb975b5edbfe35ee0fc7adb7ae1555eb9e17c353073088f8d2574546aa5da6ebe43906e856373da9e3aa5b6b8330c385828af427917f8bebf15476079390c1aaa49ef159ebf77a8512d9b4f46a3c97c3639acbd571b4e66f3941c189cc8bfc08f49844593bc90b88292038014e57adf0d1814d88349e842791f3dce6afcdeebc9288b107e46169417f2b321be2a8286d00e842ae53181975fe67cde4427c26f8e6e6af88314645b0d58293460fd6f96a9c96a42166835d7c3563b22dc9e65db0d6fddb2ab932b75e1155f752d7bbdd340c78fbad1964bd5d049c94bf9f2c1b623b57c0b2ccc62b142372ea0ef911d568fb66e12b0624ec85f1b1a542763ba61e86344a792c591699f3b93a725f773e1a2ae268b7a0a2ceb8e6539fa32f88a5699e65c9c3ce77b765f64b92efcd29cf0edbdbc13bf9485d2e1289fb44f99b0d6c3eb666fbb3d7c7fd075a2c5bdb76c50a0b621abba2127841f2efd0c057e78a76f61a714a813379c5d845d75a7b60d50db51d36d7d05ce5ff6b14da86528b510c45bfe872d45495bf7b029bab81ba2ad5e33767a275abadd71c43639b71976fab956679c6b75c695adae3a7771d8e96e97fe25dc41edac40c7ed420d5ca18fee8d3dd93b560eccb6fca40e746321b673ea07bad9fa1ea57dddb17bf1b6abefece4ed693db05d7d3a2c3d20f5901f40c0fb5a685eecb6212d66251d0adb582987e03903eb71a96ab66cfb0dc3b9136b6b2772c3db2f0f63fe5d5e6f07abf8ecc1f49ec2da89136b85b5ccc1c1537bc208817b4e75e0556d827d9928d9fea7d380eb3901c0b3de6808cfa95aa0476bd604969ef874d2563174a6879f5e2ebfd48edd20a208962f228a201f090ba9741458aa1d45b098ee88229862b9c458a2d3099002e8976607098011152ef74c0102a012e1de8f134664241a1d31cd782b4c1d0185a9a0008de94007b397ea0074a323a142147b3062264494b94c048013be115589305d5700cc6113abd872345dd775cdb1b08acde10800e8861a51980958c5606534c060c42391415b210ad49ab50e7b9fcb109ac8870126fde9c06773db3acc0f14992ffbb0795224205549c18af79fb5546ac7d689c9c989ad3b52292d91ca67f359afadd8f52cdbb22d23f1ba72f97509c3b22d379b4f7d77dbc4c4723c168b2f4f4c6cb396c7e7d6b2f9d672c9ffd5cd38de7ee0c0761c37eb96bd3637be8c3a647d16da29bcc605926ae0b5db119b8585c4ca219bda4a4b3368fbb8518127effa7ac0ded67cf24d8f3316d7c3045d3ba7e4b9c26ca25af3c4fc70a53530257ca60600dac111b89e5f2cd0cff1397b4510c38b1517524596abec0a783221f3676dd2b81038b4a48b4e2eb4846c0fa46995558075db32e2b8686eb1ad4852c9aafcc1784449442c7b120ed1a866d98a52cd5c3ab176621580cf7d4387531f060c961d8bfc9e5c833f65c66c0b30fcd3fd9c41231afed2a07b62cdfe1856dbb64355c9536c8c8dddd29c3b3d1c154e060bf4c90dce0af7848d405be53b9eb7d5d7d1f75ec0438a7a2ff480ce47f31774ec9e6eb703f96cdfd807fb3ea37534833c3ebee002be8a9990c54630e012edf9330f9c2191b079b5521f837fd92b2bff5d92b7621fa4a43a55e77308aafde3c6caed7372e5a4c080926157f916d1fce9ba27b09f8271c6d7e3dd7e7cc590d519ce954b9557d13e402d9be6d95aad7e81e6ac87edcecea346e3c20d91b1cbeaf03d813d8720bf5c29a8f942140a6c84bf6d7f6d6ee91ce15f9281d8d8f45d5b27ee9a1e8b0d606d75d09c1bc91f89c78ee447e6ccc1dd2a5883dbd2f9b4313464a4f3e96d8395db2e19dccaf4e19999619d6d1dda755b25ac73539185527cdfb2d3a5726e5c9556c139c80918232ced64d1baec8575586fac0b91f93ad41aeb76b3c453eeba8857625b8d90dee44ef45ddf42417adca5323236510b26b7053713de9272acd44e4f43b9b0d45d2e7c7d65157643a9e20442dbde779d83420c5a72dd4ef16fcf7b56ba44c785b0bc78152a4026b474448bf1cd46e0da6082456c2082295513117b3c161f8af2e3a8aee74aaaae60836195809484628c35959984104a69cc4c8c70e6c44819c35bf597894115712b55c784104c4c558da834aaa97684c623d72944c7aa49981d312244d5095689a233a261661042092106534d55b574cd89aa86901a5b9a16d78cb4a93193282ae66513861e67a08dce45751d782328c12af6231b1143d54c4a8969985bb7682656f0d057b70cab5a54953bbc02aa888ac48b6a5234ace97a3699dc317576684108a21542b0a1f2e763ac604bd7069299c964d400a0aab6b42d1227aaa62880b1029812431537c15831756d3099c8322d8209a62a1b4812c3521420549b9d8867a8a4efa53ccb14bccd76742890b7c815928500da053dd8491d765b88f7908005e4619b7aff796020d6666e3a446361ce2520001a6d56a8da0e93d46c7489ce343f9e444d60590da3313483ca680fba52ec92b21125474e42ceb7b5f20ab974a9d0a384b3015146e6f37d80d7a52a2a74a53ca857abf570f6cfa5b33f08dbfe73220be43ab56e5bd56a60a9ee562554564d52082d0ec59556ef613ba51af284f69b055247ec8b15fccdbe4da1888c8a5d6a419a975a344b0ed6e797814435234e96b781928818717c7c46d4c588e3f29ccc22570cf342a26ef5a3c0b488fe2c1866dcd4bfc96b67ea6f6efecc8c47f47fbf8deff2012f01e7ebf06b118bfb5169231384e2ee22a28b0240b947286e4944b74271a716387dd2198a7b61995f675f08c267eb100523461500c614a0add0cff148643416732366422c2154467ed6044d1d37401d1aba4cd714784ed1f5bd435f11f18b02495c34e9469349c34a1a0a067dc0023f7ab36231c35094881bc12a8e75046f7639ed6d182c82594444ab8e0ee82082374746522218f4b005d7f686060af143dbd00eb41f5d2b22a4f48acdda9b37dd2c284c67d032d4866c0af0a4ba72a60975c5fc947c067c2bccc6d4b3f97c967f55fb5fddce69f92cb543c4b4a433a1bd348646d1ade8ec46dbf76e0714dac3a75b9d810b404474e02974a1f6786ea7f4459878dfd34575ac4cf6a35fd64e04948a13f223830e357dad7deb77765e3db9d28fce39b1d67ae27f685fdec65f71dbd833dd18449d6c67a3c12b13d0628d4e9b4e0da5510ea1898a53293087394c746941eeec9d385ab0d5736a5faa39de533fae3193baa7052ac14ba147ad7a9927befc8473e93b2fa1d43d7dab08b2e4da327096dd89516d8928aa7b85beb265f03dae565a037834640d22f8156713c1126f602027f21dbb048e8aeccf8708add63be46ae22b305efe826f52f0c62f04afe1dc43c4fc1f1b2cd83becad28da865678fd6161b9c01c675c65a0668a1b85bb61796e2e8c1b331686b7a82712bf3d7eaf61ebcd5f24126fbc5e4f19d2f29992430729ad140a954aa1f9477e85a16c2593d225753ef1f1e9070881fd89f98fbd9e1069306da6f5bbee32526697f174cf764450026d45058442cc9953013e189cb144a9d2213161b45280ffceb4918c99d466ae9869fefa4faff8d32b5e69d6fecc6b7ed76a4536a89fbb022e67b69919d158abd4edc0395a7fb0cc789f9b3a20eb2136922a8aa23c5a44ab9d98e27350906ec051605d81b50b21c17a21d493ef7dca9f334f451d0daeb2eca39a133d1a2086d9cf0426e53ee49cfdef9ef2a7df3b35273a6a5bf6d1a8a31db503b8baaa6ff8aeb53b2fecfb59b850fcfd707cf67e2825be5fe5267e9fb5c0a5927757c4a7e33c8179164549b4a5e589ebfb29564ae59c534ae7262427c29784b10e16851748f8857c02a85c2ae758a99c43f5ba5bad42a356e7744bd3ad4bc3c57aa356abd55ccfabd52cbb5eafd76bb56ad5751b9c9ef15caf6a375f115451b35e755d57503ad56a575cc239b4ab7bbe173a8ee8469ab253f8de82a9a88935354882db4154369f6b498a83d77cccff7da993880c3bd4067af3c751163d8d3e8d90cd59a4b0f14ca565ede274f335ff8bd928db77f00b2e8d413814ed63e650820eceda5b262cc3745d62e8a6610e25fe5a6326c614138655ceb6a89c435245205661584388ce5493720e291121b1c83190cc909a34350bab3a161c92ca2f17ec88604c2294734519c1a2e9945a4c8b3123651c2586ae696adc3052baee4443b5819df1a148c4184ca48b43cec2c0f4d5d396339d1a59cbe5760e7c8b1a110c0a25da4c2e9ea284f3848085318f214d7f223a1b88a70a89a82e18a0c5a9488ca84c3040a008868bf2920a560c4dcb26e2039c55c344a5cc4940823f29bb32e2cca453ae696674cb1c8c678a83030b03d3c7a6c3fee31f4487d0352282b6b0e366d2bca1981812c611cbe2dda432c51170e45b5ee1ffa57d84b4f22ead426571a9b2b05c5e0527b35c595e2a171330072cb19c711295bcca12abe028082cf3f207b66d7be07293d393196bf72de3d2fc181445886d39d528c36680325edd6d653034d7c78fcc950e8faccf1d191f395c82478d188e0d4c4c0cc494b8d1ac2944b12c6c6dc943cfbffc160b472352a4fb642a46610f73469adf1aa1b11494461cd64183d9c841955e7876e5b1f258628c5e00d97f23e61dff9c473db033bb65d8551750bd27654c42f16fa427f605230cf4c2e3e32d68f4aac86caf3af78caf277cc6c3007ec8ada28bebbfc4989d4b945e55ffbd741e01aa55abcd9eb5de802528c212f4612d7af5e1c405ead21d1901049a66620c7abdcd9f7738d757abe08acaf7ec44b757cdd1c67e9cd86c1c766c0a7d465ddbe2bed7586badfc17f55c397ee0377b2e1f2f1b311c029bf261e95dd5a95fee37926aed87bca1c79869ab397bf7f645b43978dfac7f9bdb6fbad1bfcd726076d8f079be7fec10da7e01d4a2d2666cdd337d218d5e15d2517f04a4c02fbb2130902a1b70593a2cd62b9b2124b93d808a6a843edf1338a9dea77623fd019502ff7119e70f6d86655de90fb634df1710e993fdfaacde5577bf994e4f68a69a88dfbbde7ef7950d1e27a14edc143bfba7fd2af47cbf57face8e2ab5b09d9cbe404f80aa48fa140f6e8e51d517a2eaef7b22542111efd71571366abea5cc31741dba5d6a2703816ccbd22d6cdb16b666e3945f280e5098d708a79d2ec817a8b9ae646a7cf7daae439f50fe9b4e9ed17ecef3025abad6fbc2e0b0b151e013b2bff01a9d761701cec648771fef8416b7e777f397eb212b07c90878964dbf5c6fdb38c86548f672db7e3383d6e4fa165e44fc658eb51d3b7abb7154da8e1eb0de5c97cf97cf13bcc4b56453f197c881aabca065a2e159f64ffb4bdf5a39dd6d98f0bd8a8275da9f0dafaa0d7fcf2b123864f9adf9f145b4e1cba2e652b222dbb2f3625a206d4ee4581f41bbc5dab401c1380411d6364229e4323d58ea8267d9eff41ff3741b784bc043ee386e7aaa9dda39d1090bddb0add23bfd0a49e0717ecdffcf13508d072a5301ccf4d4d4dc747e6267ca5685ce7d1dd6a18a667c3df245c91897f27cd35b99fc426f8cd92fac9d103464b5db2b8986dc9604e289d1f27f0e6c63c258443dec583ab18736a439ed520f49277f2ee186aaa19f00f72abc798743cc9d4775d70bd3bb351443c368165d2271dec29aa3424bb52f20c03648283b25bab5963557c0a5c31724d28fd0a07cab25b01348e8be1cb4665b6d8d4b4863540f8b4a43765d0217fe024a84aab0c80882c8c854a3f350a6c47d391dd54096af276f8b22ab2dad777ba96b63b16f476862acdc5ac7c30bdc0617b4f24613f366b52abcaa6a3e49ed05475e48fee17ab62519185f2a529565eb5dfab3faf90654859f5edb66f318baa5d36e338c058ffbd87076c464e9931f2e1fc4b43ed7f5dbfde997df226f37df6bec0dc6903db290865ce4c1ba8f67deb71f3a027ef7e91fa74ff9be76ad7ddadbbdf93ed3e7b8b6a15ded883c1b129b1446b81517282663286c586142144485730661cca0a03ac71add8113da3030e0c7b20dd6b5ee55cd4795e87c2a2ba585a7b2a061fc8f085e992b97e0cb9cb06a2d69f43f07cb5955fce7cb99e7812368b200d282998b9ee735443181a3062d5dca6228b6f2c507c080f58b89732143265f44388bcefa4cb4ed975839a853ba2b6c7da7541cd6e5ee1854c1b2a55b3361f8d4232d2178c3b6eca709e5555809f0413c196568f99196e81b75c49098e5eb5645f4c472a5108542a5c096962b0519c5c1613ddc619a4fee48bbee953333d3859da786ff2ef58f87bdc2ecf8f8b4aa9afbc3abd5b64826931e5d985950fe30fbc7d91be717dcadb9bd2323e90ad85697af0c09d9af0ea229ce93d91d7b4de7cee37420e4741e35bae6d2df74cdc10d0abcf6b05e6f5b25786d7d52b77ecbaf5fa722166f661ddda96d0b73da3f6f6d9157b676c3e7c2dac6cdd6ba90a973dbfe7798d31195566fb42c1f43acabdd8ecc96c8b180646ed83d50504fd61a96edd56affb083e894d7c8b53602b0de0357da56ad5a3b8f762884573cac4b19e574041520367c5855e6a05cc885f121a3904bdb9b474ff4cea39a1bb7603862b9adbeb1c692f55e70ae2ed46aa9715e782cd91292fc5f11ab0e0dbb4f6c4437e4ff3fd33df2c63a8e5897163b58e9e1393ff1524b45d1b96486d35e60a6c7198d962d6bfbf99b28fca193e4caf5d5e637cf050fe0e4566b3bad87074fb5b522b4ed1d25ed87ba71236153cacf0f3a5f1371965a3dd26e231fb3c1c33a25575eb81628841d560eb0675ba1040376b933327a6b9c9783d15217134456a85b50292459d520b71a3c7f4386d421b82d595acf3ee91c27acbb4faaad3e09969e675e758f84c786a843e768a03df0043bde5a8754ef95d6d07ca56390b6969550f55a2ab8f05e51f669ed5e980a9d8c7d378bbfbe696ff38c46fb05593d5f604ba7536bbd8f2eee64a39d17ef9380f600afd5e8973ae6492bdb6db7ba03624f6a16d73be3526d4113a8886e47f7059172da9e7a9c1894887afd6437348487bd89c56de886617cb8eae4cad6a1a1ad2b93c16f171509c756264bbd39d59265fb17ee0a0ad75626478bc629a3383ab9124a36ab6151b34c7deaedfd195cdb7a7beb1667ecb60c3ed89766d17674998c95acb2dc783eec43d7d57523b0b3d513d04ffad521f91a2d1a6a6135e60cb7fb84ff6e599b5065a59adfefeaa360955adf3a343d16991df2dbfeae7637ac3883f23e21b8376f037fd241bb2c210f1d42c7856441425909ff8372dfa6ae421be82a4743423f3bd43cbba3a9932b6359e6a6bca41b0d0f81c915c7d632116f6e9f3e9c5f993c8ffab497bfee91053391d1f5e3edb606cdde326d317dc78cbee84eaeb4de7ab3b6712484e345b9d25e622280a1f11783163e75d7e885f53bccbdb3b37bcd3bf8ad42e99ffb3e7e8da94a454296fbbfd536de3409c585e3fcc5416913417b4795e8704298c8a54b136d20732141498c255abe1f7cada8b92eb8bdc300c9717f1eb92e7872f9a8d76a55e0ac095f3bd6ddda86c9d60669ff96eb8b353cfe80e6bacb3979a8077b9e71fe8bf03378b758d30a95e57c65158a0bcb95bc1a53d494c3f2e33eb4416579a950c92cee0647a6e167bfca6906cd1c8f6a579d1c7883a3eb1923ab1bc6ac9e3574ddd1b3c6966fd92b762a657f2ba725e24b4e541f2ba4cf38fa90eee8ba3168cc198631c8d383bf4aa55295d445619ceeb9f9e63d6b274ebc6aec591148bd8d3deb63d5e43a716259ce071b70724e25b07b2dae02d4b05225d2dfbc2afdcdab208fab0aae138dd499ae339ea01aa903d3357ed089db9aebdcbf42a4446bb312bb662d84ead34eaeb78edb11ea3d21030aee3f80d04431b0e6cde1522b74385fc83ef2386710394b5613c855bc2b9439409a6168e7116684df92b0707db748bf20b9ad39b9c010b864e756a10c7eec3345811ae09861484f7c456e5784e1f3e2d6c06f2dfdbde09fe0c3c2ff90cd4325cf19bc363648a558c908543bf8a7db6e746e9b3c369a4b26bea21bc233f80f666eceb92903a66fcbdc789b91727337cffc81e644b37943ff834432377a6c32f0fb0f78a4613486e639e5df85add643ebd9a9f3753a8ece48f401a6ebf0d0069dece76bfca4f8aa075f0d9df124d31b5dde83a8169cf18244a71fe1303a815065533ec41957d946cff0ced57d1eba7cc36968bd6f743157feca3ca09d3ba70df82ed7a09c0bd0b786ae53fcc8ddd6800619ffa0d6938b891bfa9e3d2d8f718decb9ab8df17557bc44b496ebf8c75be90e7bd16174073a7ba11e9828165660bb1218aeb70f383be9f0a31dc0930b4bdba19258486d0796ae88fc16a63616178d2f14124ea2677fc0c4b344a754c3ef799ce8d4b2bd13006ecd9d9747daca09806aef3ef8b755be2e5c738d826dabf1e46ed8bb170e35ff1f481e1c125950d5a2cdafed06b0bde6cffdd8d572bc6ef175f4530237aabc21ea453a84b197ce959d5cb934c1778d7229ed702eba47e80b9f7f7fa956abd5cea36ab5ead66ad56ab5eafb85f3895b0dd647d7f31ad5aa57f5bc9a905f75bc973bd16fa19ff1f7228dd17680f31abd86162ec26b6822900c246484f69687d805bc7ffe99ade4feff8334aeab227ab58c5bad6055002c614288a547b366246d6286b1c9d46c9eaa8aa21185e296c195c208d578614c229a95318c0463312d936530bc6ed95ebd2e2343daff3761186b9818aa1a51b5b8a6aa1a568882554c23ba162184118512c23061980f2dac51aa1162aa34aa9388be0644c57cc389eacc5028c30ac10aa39862fe74fec7840794c168f2cf32aea9aaa286182b54c1aaa22802028b6a04638d695b92c20128fdae449aa80651645b880f1625f0ae548cb1aa32dbb2a6865e97feae6d796eb3e6b6a5b27f6225441330213419219a2e20b554371b891145740f7f22a14cc1fc9e3aa3c9487c286a320042d8c4a86e62a2fa61c9796b854f133fd05416b6a79941157439baead57945e2d0aa59e9d61c155881954b70215fc2efcb955bbf2ec4a9ce7aaee7ad5f8c7f64733d58fa6b6d41df9fcdb8d56b1eecb4d969b5af77d8a776a3c2e886ce85dbf765afdb4740d2d3251f31ee877d9bf7d3ee56ad4c066cabdfeedfdbb46d6d7fe94174163db83906012b4681a573d20a32579e03499d1572e3a2c44e7f2e57e6a0b0c01b5c8c42ac2d6357db2f7d2cd83976419951b14232931ee80a50cec9ec292d69b8ae91d43c16c16f27181c059347ac897472cc1a542de65d7aa91719a003e3662261463480442c96008f7f0f35ffc2f3c0a3e48ae930ee9ea4c2bfca2258557184795ad218224b448b25acc8a0aa2b96459cc8de64c44a44e2e3d17a3c1e8fbb2effae534b1d1af2daf44c1d6d4797a04bd1fbd187109a282f2d575a1d519e868b6a3f27a319df358a2b3d300758ba1482e992cb64d828b855aabcda09e8152cb5057e0e8e00fc926018004c9e258cf6edb0878de8e73d0faa6935a6eb4ed4b4753d26e1ed60bbbf3e314c74955984f0b58712cc08d13051158ca11c60ef11a211a2f295495134f55eefee330a5144177bfdbaf64cd4d0bc2b3e42a5d531315416d335db00aa53a263b12412422d5dd5315feb542ca0fb541ad35461aacc449e588155be4130d552bfe67928ec03994423681a2d0bab8a8d56e785b05b6428dd2f1fd63b0cd087fd60bd87bac2fc06c75d2860ad48bfb520e16dc809eff58ba88cb6234473858a23d0a6a5a75d3047698858773ae248e4262acca93839589fb9f7f09c62aa9c3fca6978eb5a661494a1e6fbb5886d61158f4d8aa08d2015c69fb97175e6f0e117ddbf1e7d3de5fb837299673f914d12955cf22e2ca0f3c17a4f4bf6b3f5994b7efff75b72515f579342bb10b297f3e5524b78e148f369bb8dd9d7494afa415d826de2cbf3fb6e8a2f4d0e0f4d1ef9cef382d77abe2dce6ffbf0839737e78bf3ce543e5b6dfefd0764109c0f74b8ee072efd9df1c3ae45b7a3b72234919674e79258cfc6f385b4a04e13825295e6ff2172968f18a7d8265c798787a858017dc968212132338be9847d2103e0c60900052baaa5d6d600d289077d7256ed2476558b69b6d95caf9e00e8651efcb56facc28b9c44513e0b87200d056ad08182b54f10b8cdba16a5211a18f20ad6a3e4bb1ed8ab00cd9fc37c4f33e2301e5e01a14e5b583bc7f9d97650c3b6076a48befdcce92f715e5c1cb7936d69d179040b4c200235bf237fbbf9c5413483b60b64a9cd9cc1baa4dd9d884b9dae908d1e7e6160b792cd577a9cdfa83fef04a1e9a15f6fd30c0aa2684ad2440e2e15f0066954a02968fb2b8a4822c112d5170fc805f000ae2011558df40ce947ffaa3ba34a222a8b105118ead00405fe5cec893e90ed54f3dba24d8b533e04ea9728998245b1287c3bc8abb6af401dedcccb76ee865c656cb30099526c414b6536b61995e8af604851bc7685aa1bab0bdf04af67ed5a75ff77e0f5ea81a0776a7069c7e92e019f68e3c7441b13e80c7a02bd57ca16435b702e5dc2fdb6e08d4842a59e00ba01f716fe9f2e95257b57812e054e2ed19d717c6a0408268cf28dd1542b36d52935f87fc2774d4590f62a2511c692a691609ac5971705e715b1b30bd45cbe97f2920098609d525365111ab11963f5fbc5cd097c58d290d16432da4e35d6a9ff0c00186efe96c214ce8571ea80f03a4454d5545553b23418635d552d4d8bebd4a4fe8512f556e11761d5543977a461a2612d691803968b19dff8e16dc9a85c9fa2c9e67a3b8d50284e650cb968015d8a8ea2dbd039e95ddca19beb0e3fbac1dd785c4d773a1eb629fb720bd4ac0318c1df72db96066d95bd5c1078455f0a2d37961de44a980471dcc63d0b408e7c355c902f055dfe05a1fc9a5fd6b7926b5d1cf691955e0856cb4e4e0bc9cbbb227b5672e9523b2e55bae29443410f4574cfb1c418f5c5e3e55cba546f8bbeab9eb7eea37581d76834eb506daebbe2af26f08f9a55cb7685bf20a7359a559e06d775ab6ed5edb4f7184557a11bd05d5ddade1e567cec62b52952b450e8a34de9b9ad9e63a3fd352a97e96a8c19b6fe836e355bb5d776fa4222dd5fb5b27d465188f2c246cd0aea904769288586511ecda025b4822ee5eb90bf2f4e849c7927a4136f609de6547213cca9141c164458ae14d844ce3f721ff6bec2ebfc5f983ee64452dadce1e62dffe035bf2e1f1f33575760f57b87bf77f8a9d5157ed8bce1d1c3b3509717d585daaba6a522ce98cee60ecf7abe0a2c12c7bbbfcdaf3abc5b1c34ffdbb6c36f96a53b30c6b604f856128f3ac746a152aef840d50a1a4a190976f67fba7f74db4d6ed5736f7bccbbe5acaac199d490a69ebdc57bec36d7abba37ddf647eeff3ccb124648667b097a734734a55cb9941e01a7e86c882128f8a7dcc650e105897ec297de72e94251c87d56382417fb72c0ca1fab46327aba3d0fd37a26523dd60104ffd356766f1947f8167f1fb0f9f505c5d0d36fb25ae6236f4a6ba6b250ef1276fcb4df09afc78dc27193643f9eed4217ef9077944b69b97ff922d1619ffdbf98fe9253311d32f519171254fe1ea0d62b107a95c5753dce240f25d3d57e41d35b65c1eb285bedd901154c081601fdaee3a94affaeea55b2632d95f6a415614b7aaf8887ddc726346c43cafc4c61ed5e94a1ecec8bf431b7431a8574e8fe01d2c1acd569e35612a27e63c030c497d7cf43fdf0d9b3870f9f3d5b0c9621cb0ed935da618c84b6e63b9bcf67d56c767bc67132dbb359b8a1af77bb276e7ef8f05970837a85d7bb765cb4fbd077d1ff104805ff5b31ab980c3ed302e32abe7ab1fa3c5c48ac5e712ea097164bf5db5eb5a8992a58a558557c51b3c2cb739a9025cccda4da2c42ff209365af5dc01e14a7e2c19d12f6831b44af6d0c5898ec25815669d28a0f594697045a384d0bf9b9e80e45513455b5ad4dc4db7b5e97ceb8065345180805138550812a2604ec986c22605708c142141f16b047a6874e77aece42c2102c442d2ca73a2ab66cb27a219607c280526702bed3aca68686529f3fc3bfcf2cf0ef3aff5a90199f4f0d0d417d28951aaab6be3a8f82f55bf8df6c4168820f6cb16e94973809d45a5296617de44d572ecdcd5e66a78eae9991546aefdcdcd2e0d2d2dad1947dd9ecdcd2956f1a19581a5c9a9bdb9b4a455007f6a18306394f1ec45e0fb4426def9444092e06c1c81ff7d010d14bab552f88c95ead363771976af92a71eab8ea356b5e2be4a0f03ffde945783789f68c0a3b9531944467d14f10b243fc5cba94e01c9ef31bb275e95e12db365b372161da5fdd6ddb3754c773e91d3e4441eb845cc7cab98dc15f5a0fba1e6b427e1a51572639d7f82e11078552835029bb15a14908353596308d84c67af38a58c57cee12cc79c5085f5522b61ae215e334666811015727b849a65a4c8f313542854e6c0200087f0ed6297f0255b0420916615a38672804bb0a56991a338c0455e956191a26c2b484a1c544f015ce5052152244c50a0180b17f0d48d5e967b05830095ff9381bab46f9b35944a2e7115fc4acdb866a512940f6a3b110613aaff15c819ba1512d6d4606e3139c1d65a4a81b0a6083b1b8a14599cf2e2b82a3a551a6c50d2a84762297526269b4c5518f0056144688a91971555535a625234692695195ea7c9df623dca8713d92d242d890dbd0f5c212bf1b4ab5a54c70ba4526b80b0635b07eec6d43bdde7c29986107825df840cb8ff1585746f32531d38e755e520da6d515422127a4dca500e67a2ae0453b73365cd2815728fd72f605f4a76c725818eff4c9a76350800de2fd9c5c34f9e7595f24bfb53b03ee683e054f249b2743727deb3bfec9a1eed2ad8c1ad8d9e60f216d75782eb4799113e85611ab36b0fe610511d73358f85b10ca016b2bec27fcf95b743afd51583bcead884c158a730bbf6e9911e5766ace50e00de6faf6048d6824938944bd2147bb8a6f64aa4e6e3eb63b7006713ee8f85e2adfd8b66d51da1eeddba6269647dd80fc13dc6c7c508fc7f5c1f8e87242dd01440451c1b06ff7e3beebc9dc9cf487b9e6f871bebe5244c4181e428fa167109ad8ccfbdb595a28ae808c4253ee0a5a930b9c5c7d89fcc648341b23dac87036f27b6981ffa78be27a56909d0807ba9cb80321e0ee2f63458b6b152b97020c46d19d5cd9925299a224dcf84865806894526b28e6ee9f72e69dcca4cdf374a260388f2222a2e4b819b3ad6f504a698d4454a188101b901a21de14277554c548e8152b0643132b93d99988e95802b9544fcc66555d6531161fb686b61914088d9b89b92c352896b16dc66226ffc909d4e69efe31950eaf97ce98d1950ecbf4cea30bf9c7347a3ac1d4fb3acdf4f28db137b1e9eac49e9be8f07570dbb2b196634ca75743291c5c71a30b5c6303bfd2ad67e0f5bb4ce2a3263ab1aa5bcb6d971d79c7b95cc77510b87fbcc1ffbdb2c3dedecf0cbc5fddce10fe415bc358a1eda01161ab73848c0e4c54c7b7562aa14bd141744d6009cf6933dcc23f4de7d2a54ac7d1442e5d62ad925d1880ad92761b1fb52ee04e8ff970a82d5cd46ab351ad7a120af599303cea17c2c0a9ae8447955d5475ab3e4eaae7556b1213b51dc541dcc23b8f24766acb2e0f7e0d1f416be81684260a7cdf53e6600644f42fbea8285108548b0252705419819dfe2eb95b7c2902607079a9e02f2f7e88c74ecf7906bfceea6c5b96c4b4f2369664db4a7a8c6c99675a96530a599dcdf253a55911bf8d6c5bd26324bb8d6959953cf9845432784415b167a60383b4cfcf96f428dd32c7b42c21e2e634aa97b7f977286bfc0e5afbfe5b684c5b9c63092d2b60253c81ae48e9546016d7c26415fbcc4da8b60926ebae6041ed87c9daa21617527d31597b04f3dc007cb26d98821117b8ac1a70928cc96007341189b8f1d8582422805931d18028a03150408d1ba00e0fefd375055e54747ddff0373c5f81631c8b2693d1a37a2822df067c561547344e9681e59a4425d100a0358ad92600ad116b381d00b45ed99331f5da582bff1bfbf8028653cbff6c7dfc459f69e5e3b4cdd0529d2f4aff0bfaf8dafe6658813f531b37706a735fb742c7515f4fb7b0935d58e71ca4ea21a19382aae725f6cb90c0d3d99452e98f0c53e80b5333d7e7c47fe88d5273b4279e4eb89e17c4fda19bc1e9f4c3fd81be08498ddec03f5e5f381dfe4e118275f09083a6d04e19cd2c1c8b78a4adc169f913f821b3c6db61f97df58c97994c2627336b274eacb552ff9ec5d8e4caca248bb1682cf63bf2272a33c18b1846e4c4dada89e0f79f14bc3239b982157b7ecb96f901ffd796b942f714ccf363a88aee410f0473bdc0e7fa7251cef585e5b224423787b65ec8f49de221396d8ef90113e78037b93202e98c0adb8628f0090e7ce26a0a4c2f2b40741c77ad481bd53a98d912d6da9fda1f5574fdf2e163e54387cacb070f2e7b13837a5c3b4ea8c77f2881bc9cd98a36100dc0adc13e5cd4a20c14319fc966a0d6e1f9fc8100a1b496cd53721d8b57c4b79ecd23408df3eb5085aa402b1e57196e712db6dc243c33816f01b02dff17aa96d1fc638562cbb60cd82d129c3e0b3059a45fdf4e7404a14a083b66270828d84b4074e230a454daa59a6542d3e717484b08d9aeea34f259379b175f477c334b980a72f2d9c07ad2158c52c367981a8ab22e629479b28ccb0bb94cf7fc1c2f9b3fe367e9ecaf2d5b67cd3f261ae509d84d342ae3a7c1afe00328810aa884f6a26bd05d08557cc17ea6653655e8ce11b2bc4a189d21bfb41b96174721938a813a3e0f85f0013fe974675465ac3ebeb7960f8a839bf7f083f9a9c94b9209a1d28f26934386f1ac9ed5e3fecf1d4656df631843fecf7ae7618d5f2483001e2cf3f49e9b793a91bc64722a266e178d266fd0b3fab38611f77ffec230f6e85963c8ff59ef3c143ebf0d68081ca100ab2180c24a9402c6c5df13ebeb7c38f28778fccb8da492205074ebd1642a02d5a6ffcb4f0676af701e6a680f3a8c6e93484b85ca725e2a1472a1952a08e2a78a51b5dbf75f73a4bdd33cac8204ac5ece17c2de6c05355fc82f5796171d1199a4901f67f0b394369ab61493a5b65aa9f9819db78f129d24b7440d50dc415d495a4933ae80b33834b8945194b8615b49458f655856b7b0a59ff25fcb9f1a694a99e1aeb906a3346da427d3ff910e2ea4b66b2628718be9a56950b6d8d1b4aa25f4c9cb874a563a6a468c886946cc68da5a8ce66c15c7cd8a99508ac3b63dcc3fb753d53052241e2769dd50a961483bace4f98fc12fe0793485f6a06bd019f416e9932542678524312a5fffb09a71329cc096bc780117969778ab55cea4679ccc22cfcc17f24b95659a57e5422943b65496f395fc384f679c4ccabf60b1b2cc29f47c81e67d6b475160b9b29c8751a12fe03bb760893d6c599683932349ec589685bd4feb863ea84f2493c9e4843ea8eba00f59d168141c6350d388692896a9687ad628d031797a301a8d4607c5555b6d7e55f35751c53488a665cd719a37b2baa67c5de84414ac114e34100d2b4247721e590ec696b57fbf6561ec58803eceef694c2cccdf31bf3061e8faa03eb475eba1ad5b53fcd1831adb69ea59c35434f7913786ce0e85affa2fe64ea60d1a26d1b28fb89a621a5914b265f51046363a851e45ef42c84e8f9527c6e4ea971b936b9d23e3744bf274058a4bcb95c5e5ca12dfb838bfc4df5f984415ef4f44504e65d202f736bd02feee550ce42cc5d2c252a1c2c77631a5cec078be5c5c5a76ba8e7df047be0236f9f7ff49064d53212aef290c0a4845914a89257085793e80388141610414d31c24b88ef7049141425f80d6d7bd7c769ddf7c3d9bff7f3593128d00605d5514a01808260480442860507522bc3c741530108be7134c00cb731880304a4d4dd375ed3d1b549ab2af03b98a8d46d134da897623644bdd497121088f971b579d60c2e7c6f34e2e5d2a4bb398ee575272d2a5723d16db1a8b892f01a3173cf0cc11d775bde63a088bc2a6efe00e0793c3c395542a95aa0c0f27738b8b73beb8e0957acd75ab21e31eb75e97bca071fea3624f71d01042d48f93cd444cecb1b22f6ba9b042c561a0fcad61bc600c19cd1f1ac6bf02e163f8c778df3bdef1d453c3bf3006f5e70da3f997c6a0f13224a3968d9527dffad6273b7d2106031c1f1aa89744af9416451fa55362d88425b395c01baa2f2efa9133678e1c3973e68c00f5e9a73df644992347ce789e5b0fd56719ed40abe80442302486ec783e0ccbcf67c2f2626904fc8ae5ba2a9d710248b5cad2f24e5f1a30ecd39e333e409db0d787a3901ad5a8a9ca5a40324b4464bf8df5cd4cd98b027868832d906bd9f01c2840b24990cd514daa8da6c09eca6c6c31539bcf786edded364eb2dcb09d6911ed478738851446300f5023c5b6d5b7e9ce789ed305154e26f01d8b930a51c8052193614a4b302d42ae783dafab88a93faf1b1bdb6ba68ca3cca4b3065f479d157d50378cc3d4546fe49d00bf4b0c4d4b9bf4f421dede881351603e53cc6e6cae02ff82d25971756645e72be4614abfc75fb66fe7b72ee45d1831648a282239699d9cf64dd2e4a71bcd18075125bdaaff576f0a675d684493c95f341a8d7a1d5cff0fbc6494130cc92854a3c9661ddce67a8067153cbf1ba7af2f461f4e9412a5903760d98fd7d17e38ef9f46d5f51a75f107b5f0d3051adf79c4ab108058a1ce98042b9bcf417bd3a8a2fd26e3c17ed146fb4e4ca8f609432a3188be28e2195e8fd08430c7cb8851c6f77b61be27912c79a2c009d4424e4cbb392827f8745c6cab327de527e7799d4a21648c310369b8199bea34d515051fb91e2b5827f3aa81cbcbd854a7847dc0750f4d99fa16dd34f5db6343914846d7a394d288a93bd17100989fff722cc3c45f26b6effd54258468f4a6b3c42084a8f4b2cbfc9c33cfdfa719a06b7089c6cf988c250d3363d9635133aece8072c9e2bdaa4ad3a6695355ad86e6e801741c3d8c1e9711677df8b3181416f2f3b04109dc69a75672a4ae4392a07e42b8fae7ca61adf085200fd91014cb43003b8e28a0604d9d62069e5f00188f3aba19a19446753d63450663b7f35edaa29b530f5d8779c14966e2e53236d81cd1b1829b7fb36f9fdf575a1a0ef6309d7c69e626aa897e5bbc448119356e5ae3b695318d2413f1dc0cadf955cd30b4d3cf9ff1cbf9fd6b10d8778b4ad5a469a679fff532a6740108803f0f02ffb5658121d277ace3fe9166faba9fbda16768194aae98a21b5ccaa4087f435899701db3685fd8737f433dec8b0f445c102e081bea76e526d0ac418e14ab6fa868f34f37890f35d521730ec6f394b002f1fdddbb2bd9b2196cc979f078beb0305e0c46786105ca81e03d9d52a1ba76226afda7b0a546d0c1d33bedd981b51327d65483023548cc61621b1238c4503fb136306bffc750555bef706aa7153db1b676e23c124426736244dc4195c8c52814c73c8ab268195d8eae478f22642f669c5568599086a12c37110d3a0ecb454180f3663a639d67da97b34265ae7d496ba90eb6ea392854b7140770d21a5dcb59b66dfbe0277f4d4da646c8e3f23d9093d3be66f12b234074ea0cf05931d67c82bf59e93d7ae2cde001a6cae0f6519e29f171f989ec40748b0155c61243a61111e6c6ad78e87f4629a58ffbc2f793538426f9bb38324218ce1f5fe0f7d975da101eb7025b68edc4b0780836857a5842eaf213b34773386a489e4508d03d144729e48a184ac81e5bcca4139238e60b7cc9498f95c391924a7dd26151afe5424dbac38634692d3c592f1c5cd46b3436c4440a11fb9d71509d4da20134da3e3ff66c1076ba17e8ffc5dc534636b8b87b565d08745febc20fa5282cbb58a7c1d20610d930787862290f7f020463e192a19aaa0403eaf25daaab3a0ddbd200b22d197a406a79651a3ca97b6edb389c426f428f214465854ae95cc86aa9657754ee69e094ebe90ed3d3d3d597e325a4fdbedd715428a573f07b84614ce1fe3a63cc8ed0880877a3638201b0a2a8c48f9f291c56010ad23cd2d258c230138c73942ddb27df74c8a054a7cd1b37a8916bb5da8880d9a45be3831133ad518d129d5243a596264e102cefe5bbaa5aaa61eb7a8ca986e44c791663115593acb0ce9959c2305109bcd8eeee9052db6a781dbe7118d9681cada22b11aaa44be5822f01e52414673827c2acf9d272c14703efa5efb43b8b7a5edb810f665b8af77321423050de4c1da0e63b5a253819db464a0b6bdc03dd406035397d0fa1cd0e5cf8f61e3989f60b4b1127d0cdb2f49864b083d58237548e9551a86c64d0ca61060eae354612c765ad4f567dff56af6dd4c4b31b3d088c4f58097c3da1949eacfab6c9f2553c77056fc73daf6ca4772cb7d39fbe82ee17949ed82e4acb8b4255b3bc58b9c87655da10ef51600b6a310a627319578be36df4a5744a95ff595a4a6938691c66ba4b50d2621a31a830f4250c1460d749f5f4c95bfc91b6e677879f9dfa538c4d9d30653f5689821906cc082884916dbb776fdbb65bc42ac2000a51f6d787a7a787f9e72d0af8281bc0aea39dfdc63919bfdfd21666448b1065bf82052087b868f7ec366ff72c617cd121e2791880a878ffeaf4f0c8d4d4c8f074c7f8d8fb2ac687ed8ffbf6e0bfc4c7c9df0930c50662eee663e3ffd074acdc849541851166dea86093fd9737460798db7f6c806d32c294e3571315e73036b5878e8b8b3bda70e855b461776b548710fe47424d2a2f2dc335e670f202e3fc1efd39f12a744a5311660a6d3af588c9a249fa092ba91ca77ddbf44e23198d260d59565c23af4f469919f2a9de869e1158082350da01a58b1ce8ad858b8fdd404b1105960e16b33928b0407321d026f2126163152a8540f7b10a95b2e4148761049c4aa0f1e07d1cb21484d5f858023372dc1feb7d7a6ae4f911aa69740408ce609cc4264e139d32750bd5884ed2c4240942d20a564628637444214a1ae30431488aea44a35b54463592c126491292c118de16180b9e52d5ebfa8f9cd16f6b34eb3fc2108fc00486654d30ce10922406c9108db48a611327314e2b44f18b1125542cebdb2a76e014737a64117908d1e075f8d418a7722616334ed1df7b8b2db56ca5589123cf09e46172cc6d0c87d4e876c61196d76de85bcf2774849013bcf3687d834180cf73843ce014543b5f879a90712d09f43956642bb05d91b6ce2218b2ac5fa558e1f9928e10f9ce081458096aa05471dc30e2b8aa40385dbbe44d75cc9475ceedfe57e1b3da4abfeb3d1223cef7453928705ef3857481396c04847057ac26ac6d9d58b473acd83aca554aabb0d3471108c271f85d9883ba47181e8bcc0213a126a7b6830fad70cfca400018ee0289e977eaaac669f351273eb722f65a4581c42e11bf59f4e57d831ff0611c20e5db5f624f3306b4b4c9a9fa811c99766cab13afba8e8ea26bd10de81ede2a6708d2a985624a4d1759b0918e05894271295f2eee8272255885a416bcb20bfc19971ee23c4f7104467d79a9082b494be55c10be84af53a5b1c53cfc38a2c168db0a6314b488994898e3037420e28e09413f8c8db5f0499ef4bcf3c8f3c073144cce2382150730018fe06f46585c0305c3ef0e8bbd57ecc0c3bf0bc2723392b022c9bd1187687c7f11431440d1f080041f39e5795e7589681a59227c72b465fd499441593482c611a239674cb438d1a2320ba5728e7fb02fc683baeb361bae9bcdbff5e69bdf9abfc1f3bc5aadc1bf5ccfcb674168829b8d6c9e5354cd75af5a9374cef7c43c9c12189505393aca459fd71c827491bf8d4c5a92c1a2f7979677c344e0ddc9fc95dff74c106fa19c5b5e2afffd22600c5b12330395c30056247bc3e569a0640ef4c395e1453bb31d30a6a43470e5add988c53be6c92b00eb54c1f09815bb7259c17e50427b2a337f6cfb71200a33e9ec23cb5766ec33d7f092cca4a5ea25c78be9299befdc0a0001d4c1e325d0309a42bb3805674bad69c8b20307b6bbe954467e3b822ba8b454dd2d8b0f7f0512c7af8c6edd3a1ad912dd73f3cd7ba25b4a09db4e2cecddfb91e15c6e783897db23b3237e213369a712c5bd7b61397bd5dcdc55594a6fdeb3e766dafccbc14b73b94b07c981c5c503ff94d99bcfefcd642e9d9aba74599ca6d9d7cdcc1c1ea2742c54ac1dabd613d8314511f7246cbe22dbe3bc8aa6b49a21ea3b7ba136f8b5a7b22d99575fefe07dfc666fe355bd81d7d8f3d2ef34b0f77846a2c6f2d563ce277aba59c4524b8ad4c54e4a23bb36d8ec4666d277f49391ea7341891e6e327350f02907687c4e4f304d0723a1325582234454d5521323a666e2cb8112356e1a035674386e652dcb318c84aaaa8293dccd17a01fab11ca7951152b0a131155ed8891d2f43827a4f62b14ab49d3ccc6a26e223a1c8d6e31cd245399828128db04efa71045c18a4ed598c14c4a34c1a12b1aa351438ba9a6cd34938810af86ca128631106551a64654bec82af29171839a844ae697f3a5c2db04d4881a496b5ac4bf98b1846966e32cca0998306f26e9bb7de87669d153ee4651988196ddac3fc8240312389b5516964bcb612fd69cb3b95a62c7ed39bb1d77607ef0c0cce1b3fb57626ee2f0599e2f150f5a5c03989f9adc9548c88c6ac88e3f202c6a12ed646172c56a872818ce9d3dbcfbd61465670ff30c5f8301a066327b67668af2b81e18ee07544d876d9bdf2797a383e83042d0a1736102fcabed78d79200568a81dc90b569a99601d32ab42238058a994462d7e4d43c8016d76406affdd9c30937b6b2ffece1990383f3a156e56edfe10a659b1f59ba3833b337935101401ef35287cf329aba75f7e1b3b9e15007af4c2e346bbe8e0dd05e9fe699400852817261395f880a2bb554c6c94b2ba4e58c93172f150ac9c4ce9d97ef5b32cb2b44b75d7d2c9acb8d170dc34a4e0dc440c98d8f437d6c29357772e7da6d633bae3830bc90c7bab56bd81819d933384455d5dab9b878d4ede2a113c8e594ea840f6f9b0ef4e96385319ff61885522ae35c500a70995174478b862a497db86cb6f913dbf29849978f59e6d77bf0ff8da1ad5b87a4ab812bdcc62bc931195c6923d78ffdf5d64514592889d0c4985d724a4e21576022ca7eae525250b3da703d37eeba5ef588eb7efcc91df51104ae77e688f7ec82ebba8d462856878d4611a2fe7c19e7fd9e9333c91e014706606109402bd3d32bd1e8c4998307cf4c44a3fc68e1588e44aca9e1e17c756266e6ceeddbbd4aa552f1b66fbf7366069e1fdb66cc4e4eee77dd6178048531ebd3680295d165c263209d2be7fc8fe8c252bab498a15dd2a5b1aee35cd7b1dd750ceb5ecdab79b655f7049049dbaae39956f20b3d8c3eea22c24fd5b23dcf7ea6fb64e717d4dae9b09c4cf591dfe610aa3815a7c2c6ec1002080ba5c74269184b8f094db1db6c04cef481db067ccb4f349f01afd958f76a35af011b3de2834fb3e12123a4af1d470ba8222477d7a09bd0ede8ece631e51dbe078e004ba92c27b7c2d2081416334e6e556c68fc8767fae8d87350764a23e0cc41814fd652546c68fc272777356104d13f3afd99ab68d4c855ae569487f936f1b0a278f111fdb43e326dc4c85589caed2abd9e9fb89eaa83b268e2f78202517a55a2723c38adf60f705f1f9c899bb38f254763b1d1a4f87e79716e6ed188cf0c8ecc7e2ee1c6626e427e5745c9916afbf4bdad730937845551436842988f8dcf0b29419af323fe71b02e30755c480c56a152ce452106fe714bbee21b4170faa23c072da388601d691b470868c6dde01f074b39fccb215d37b2fa5e4581455060af381ae48360481834ec050c4be2043f1a12ae8fc5ac3098d80b0065c0b0571c0df16b06055cfb5e50a024aee14783e29aa55afb7e1bce85ebd0e77e9bd6a1a3de3e5d26d7a5a85c1f5885ff730a4ec101d76b3cbaebb6f16a75fcb65d8f4ebced6d13ef8e3e6dd4ebc6d3d177b73101cf431da96837ba0921bab85ccea53236ebdaf92b6d13d7319f461540aa95a590a873041cd63bcaa5a4ea0065f3b5fc3b2c6b2c39b912b33c6bab9d1cf3c1919afe1e794505846f9153886ff57cafbce993447a3f3ceee37f09c0ed7f6d45222b8554cef2ac9815c98627756dc771b3cd5ad254ecb3bb396990a464eaa4efabf238a59486b07bda3e66c7d0ad223a48589652722efa085ee3750d6b03b05dcf2fb8e8829b0498eb40cabb60a1701cb46581f527e7a3a4f64b736dc1678b9a6f8b3e778314c014de7697954c5a77f1ad7ed1b825bd05fb6f172fcc71e2ed56f98e49f1166371d42d1ae2e97c9b4fa6b1af4cc5c55922d4acb7ca4be9143fdf898973ada0473841e4f0b5785990474cd0bdd27c856fdb3ba120ebd4d912deb0a0806808e3f7513935750930b886aa949ca454cfea9402e12cc6136a84e8609088ba7cd270226ed1781befb2b71945d748e9f7adb44e3fa19a9450a0541fd429b9e75b861391054caa8321ee64124a2835067542eea5ead621d97e42eea6d4c86af289a6fa16d5a41ae8d4542bf784dfcb11842aafee7de49cb60e23c4c3b5d80456fa94511c1d5d3476a7b728c257ce0cde95b4a850c9c26ef936772fc8f3d2ae686e0113795ed992f61a177c8713134353549ebd554c70325b6c0d8e743278bf729e9ef23133fcfa8715667ce328f9ad2d6d7ca3a237841dad78a39532eb1e279c24ea1e2770a57cafd7cf100a29d334f02da1d14aa7af378aae99d2af5a514da2834e236a4d8d104a8012fe2a291ce4a3e600a5c6169d2f39f2158aa2a65ab9e2207fd3d3e2660c4b7843de33207a7b6a68abbc94bffe8e4b23eaf2158613d9f0604a882a9e4b0e86e2bc08adfe4488cbf625a0abd09aca5d63a6234ccf320dbd544af140fadff299fc6fc3c362f61e69b2b1f225f9767971f97e95b4306be818016f9411aa855b4f887f652886d0440c4661371420f8ade56fb8219fbfe186e63f2e9c39b3b070e64cfdfa02cf2ac0f5e2706141da8948b9691b2b6f3f421325e1cc5f091933ec04c7b74264e55cbae27f68399786cd74515e753b266e322aed027ffb41cff3dc1aff83da3ac47a68a1aa971393de38dc7c49180ad622a97b329eebc7c2ac8a989750efa388429d762f43681a6d47d7a05b5b239fc92db9509132a1821cc805dfe5c91143df77a3777c31987d9156c0306b6622918c99898d2793e3b1ccc15daaaaaabb082187832c51e085563e79b89fbdf0e0c4c4e0e0c4c4242f248b1fec738fce7b9bcd57fa11a60d71c7c1c1099f76f90cacc3f388a1241a460858419083fe4c8e41b932e6a4c5e2bdb45c81af7ded6b5fd2e2da97060074d6f87673efb71b4c0780f9471fbd9b90bb1d4cf10ff41839fd8b279ef8c56912d37f80290e300f3fe3c7449c4797f071d5cbf038c4d1a6fdbecfa41c5125c749cbeac8f73611aa54a397f9dc47e2a9c230c03e51dfefe8acb1cf2a6492635673cdaf722f4ed7b40a8e5bd201c336de9efffa36d1966d71db32ab1d0d0adaf33cb25046c47b41137ecfc96a07b52d852a3ad1a95a3a7448d42d154fcd8cbd4f678d076f6cd56db5659df0a3795e91885570724b4c7949d4e7c04abb2efbc33a2469b75b475b918790cd99831cf36dbc7d8f70a7255f102bf3c426d3f5db0ac5e50f56d62cfb3fc5472378d030c6a468610f8e1ba761acc77c852a66b854b32d3712c15bcda1d8d495bfcf6bf7fb1fd64dafef44d55bf51e431eba0add84ee416f84dbe12cbc434a758346ac4071874f47b71b5172c47ab402c5d6600a0da84ba0320de505214729a6c68bb969c8710e680794f8c8ea70ac0ba3663a016e6abe9cf3f7b45c31d7a1af6de968c55be7d52aaf403118c42b502c2fe48b3916857910daa7692816722c971a0f8a2c2c05c35ddabf2e2c96732b5064d390932adfe262aae8cb8097c6cb72611a5725282fff5e11ae2bc1a04a8d17d37ca916dcdac27831b5505c182f8e0ba5f3303f1b708e3c97f78eb89cb32415df8f4336a8109e93e38bbe10eacfa87a908f85861ed326d6b6b447c27fc3d8cc0ac85b8a31a5185f0e202c579529504013f6121a2c48d309484b87ca83e5c91500860993c068518c230274292a908b54ac2a2c863108f32295ffa88a822900533410f0680a11f865aa4240587c8078548a5742c58a9e34a84e15a2285411f84bbc7c94dfcc009d2aaa82f1165133a6281011290b30014559993c2000d814e5528235910282754ca01a73137c68679ddf09c6f46598660d4c28c609def421828744eb35c0fc1303a0fc90021c0a5c49d75726a94e0856b012030cd12c26040f12aa101ce3dda13082c55385aa0a8b1ba84c464111be590463109da0016022e18831115629e23c889e014561947794aa6cf1fd8f2c5124823153236c72652f283a6f9caec0497e1f455134c084b4fdd4eb6811bd01bd49cec121708269585e5a2e2f2e9756a1b2c847bf33b2614eee04facf64daf34505c34e31ee00ab04ab5421a090497334a1eab43d08af867dafc1a007aa66c6a406e56fd5558834d451a6cca802478257fcfbafd1980785d7e3098194e70bafdabd28ecdbbb56e40ea211f317f46ed17cdb5a4b8c44a1dde44ffcae4f2c42558b6b5a5cab4915b16990d69a5b6b91886dfa7049f8d4a7329b59da4869516b81f3978742ba54aeaf4c3ed73bbae6736b2784685272d6b57aff689927d6fc520dcb6ed46a82ff927f0a4295ede0f32a48bdebae818f7de05fdd12dbf577c8544481efff8774a1fd7bfea30a405d78ac28fe1d0021f8d0f9176480c6f3e71508dd5d167845091fc987561541e5234ff1433b2a08d5fd3c143a172e53f5d3dd1f7eaee67ff83d1a5df7ad86d2bd3e5ee899ee4594affacfdaacccabf9f07b8df578b6db55ceed917731edeaf771bbd2a020a45cc47d872f704fb74ffd7bf563bfb6fea61ff5553c1b758db97e7d39f61bd6a9ee7faa1731c67a8d11afc77135341e3dff37b8f7ad7ede2da13684e74cf03bf52afbbf169a9baff5bdd5426b40aff7500bcd31b7c7980bae837fe671137edfd5ae4ff7f870bbf2c275ae87e673f798ea9e1f6ed773fbf54938dfe87af7d5d738aeba9fff6acb74b76db4eb98f6586782f716bcbb70bdc15fbfddaefb2743d71bafb12daf66bc86e751bff711a4f75ee0f9afe6b9ee85ca2389cf96422360c03df00165abb24339a2fc23de81efc79fc53f2259723ff93af915cdd36be9db699dfeb59a5177a9b7a94fa95f6529769c3dcb7ea1a5b46ddad5dabfd289bea63fa9bfac7fdfd08c43c6478c9f9973e67bcd5f456e88342c622d59bf8c3e1cfd93d86aec3bf12389d544237975f2fbf689d4c3a91fa58fa43fed249d17068606f60f7c76e0875b525b3eb2e547d995eca7b3bf18bc7bf0d383df1f8a0eef1afec3e1bf1d991ef9f8c80f46ef1efdbc1b7797dc8fbbbf1abb62ac3ef6b7e36f1aff452e9b7b32f7575b6fdaba3ef117f91bf29fcd7fa5305978b2f0cbc9d353ead4b6a913531f9cfaf1f46dd32fcf2833376c3bb5edaf6693b357cfbe65f627736b732fcec7e76f9a7fdffcd717762c7c6ae16f8b772c6e5bfceae2df96ee2afdf9d2aea58f2f7d6ff9b3cb7f5519aabcbdf2b595fccafd2b5fdc9edffec11d911dcfeef8e1ce959d6fdaf9f59dbfdeb5b2eb03978c5c72edeaf1d53f5cfdc5ee3b76bfb0fb47bb7fe9216f8777bf57f7be7ae9c8a57b2f7dfad2f5b5abd6fe70cff49e0feef987bda7f6fef032efb21fef4beef3f69ddef7e2e5d3977f7dffd0fe3bf6d7f7ffe8c0ca81bb0fbcebc0fa15775ff1ec15df3c3874f0f8c1a70f7efde03f1cca1cf20e3d7ae8e5435f3dd4bc72edcabbaf7cfaaadbae7ae1aa6f1cce1c3e72f84d871b47d423878e3cfbbaf8eb9e7ddd8f8f5e75f485a3bf3c3677ecb163cdab57af7eecea3fbfe6c7d7de74ed2fae7bef755f3b6e1c5f3bfee7d7efbbfe83374cdef0ae1b8d1b9fbaf19b37fefaa6b59b1eb83975f303377fefc4d28953273e798b71cb1db7bc78cb37aaff78eb6db77efbb6f1dbbe71fbdedb7f7807ba63d71d1fb913ddb9f7ce17effce15d4b773dfdfa27ef56efbef6ee4fddfd0f27af38f9f6935fbd07ddb37acffbeef9c9bdbbee7defbd8d537b4fdd7feacfdfb0fc8667dff09dd323a71f385d3ffd95fb94fbde7e463bb3ebcc9367be793675f6a6b3fff2ecafefdf7bff0bf7ffe0dcd0b9eab94f9dfbc903d30f9c7ee0f30fee7ff0dfbc71f98d67def88387dc87961fbafaa1a71ffa370ffde8e1c8c3ab0f7ff09181473ef0c88fdf3cf7e6171f8d3cfaa9df7af4b77ef0d8e2634f3e9e7dfcdac7bf52db567bf189336fd1de72f55b7ef8d67d6fbdffc9cc932fbfeddab77ff1edbf7ac7f83b9e7eeafbef3cfaceaf3cbde3e99ffdf68edf7efab77ff6ae3bdef5b3675e7cf791773ffbee1fbf67c77bdefbecf2b3373cfbf5dfb9e1779e7a6ff6bd3f7aee83cffdf27d5bdf77ea7d3f7bff1defffe4fb7ff281d50ffcd1f3a79effa30fe63ff8ae0fedfad0bb3ff4950ffde885e9177efce1231ffee247aa1ff993df9d7b11bd78e2c58f7c947cf4dd1ffd6a7daefe42fd571f3bfaf1918f7ffa13994f5cfb89973ff19f3e697cf2e14f367eefd4a7463eb5eb537ff82f8efc8bfaa7873efdec67a63ff3d867ea9fd53efbc267bffdb9e5cfd53ef7172f7df2e5fd2fbffbe5bf78f92f055dfc0a3c8522019dbde12f857ee5d3ca80123e69cc4b3238eba7314a80e9a7094ac0dbfd344526fa2b3fada204acfa691da5d1e7fcb481b2f0077eda442954f2d3119442f7218c80e808d0384af8690545e1613f8dd1380cf96982c6e1793f4d5106fd9d9f56d1381cf6d33a9a460d3f6da02578c54f9b68125deea7236812bdf5cc03b3276fbfeff47de76e7df0fe07cfcd1697d119f4009a4527d1ede83e741add87cea15bd183e87ef4203a27c2e32edffdc0036776cccf9fb9f5d4ada71f3879ffdcedf7bd611edd8d1e400fa03368079a47f3e80cba159d42b7a2d3e8017412dd8fe6c4ddde80e67f936b8ff817b957df79fbdda7ef3b75dfeb4fde790e1de92aeea2abd19de87674b7a8fc29741f7a3d3a89ee44e7aebdf3fe7327ef3bed2ecf2da16bd19de87e740e9d146d74d1329a434bafa12b5ec32547ef7cfd83a76ebd1f1d4577a2d7a30745ddef7f0df7d977dfe907dcd7df79facefb6f7de0ce3bdcdb1e710fdc7edf95f7dd777a0eed13d73c805cf47a74273a2dda7a2b7a00dd89ee402eba0d3d825c7440dcf94a749f283bd7c271ebfff7ff050000ffffbe8cc94bd06f0100", "0c20371f8d677feda9e3ab30d0ec3df3": "1f8b08000000000000ffc45a516fe3b8117ecfaf60b358783727299265c9897c59b4bd97b6d82d8a43fb74d8075aa42c622951a5a8d83941ffbd1049c5a24cc909eea108125bc399e170bee18833ccfddd9f6ec01df8462825070e0bf01c78a1e7f7b45c88aa4eeeef8b61cc3b1091377b8fb01b70d773fcc2aa174e0eb9009fd2cf60ed075bf0cb3fc0bfa06084f63ce02b49715963049a12610e448ec1b7bfff1b5045be0177f7373777ce5d023381b97397ec71c6386ef7ece4d6e477521e1252e69813d1e5a2a063fa9e7184b9bb67a75dc64ad1937112afbde863b767e8a54d19653cf910fb71ba8d154b060b425f92d5af6ccf045b3960f5374c9fb1202904ffc40d3628fdc35f388174e5801a96b55b634eb2d15c8117e3423d1f71ef8324f4fd1dc54260eed6154c7b2b3d3fc0c58e9212bbb9620abcb8db5396fef86fc344bf52b90c8a3391f85ec871016a4609021f50d0ffec0ac80fa4d40cc393f479e2ef2a88503f4dd0cb055ec47131520eee120a6be1a639a1a8d5a27b26042b12bff3f68d10ac74f40729ab46fc265e2afcb452a4d57783c8718dc5845637fb8288d5f7760fd31f07ce9a12b9daf18ffb0d4ae14ead2ff1bd60b43463cce51091a64ebc0dc7c54e4b6759b64b1b5e339e548c9402f31d227545e14b424ae94eb94c038e7e06038fadefefb4d743efa11f9da22345c6e868bec1af3e083dbf27087c122ea4e450262996e6480ac229e350105626252bb1220a0ecb3a63bc489aaac23c8535de1d7322b09c1727253b72580dfe4f329636b5333ce5ec1973c71832466c30693eebd0a594c6d122348c5cca0c385b845e87a4942510f40ed4609bc411daac113d10e7c0fc0d911aee2946df9d0b826da933c37a5133a383f5e7e156871dc2196ca8d8b13e56c44be245978699d88de863142fd867b897d7b480f1a2a68be5cfe3bea8e7d2510bb130d5742d3d98c4c1cffac3d591e1d8a9368f2cf1e8c52eb10ccb98f05cae42eef40a725c8add5b9660c6cb74701c3476c125b937f8612186aeebb4fb6d3e9aae6b9c71f3425c59752ec3b29476d4d30c5673bb7c9e6d01bf991c704dd71b907a538678cf3c76f8de923fde33cb0ca26fca2e57e6690dc8f5f171797ba614c329728ab6e4cd4b8e89232e19a64b901cef08e037271ca9d81eb86ac816ac63a17999ab2e794320cee9b339f07ac0cd69b37afb0d8135d2f7c7b0b12718a9fe5a7a9932cde27525b5d8f55cc5e65d69e5fa1c36c0de9352aecf60c5f05de9c43a476beeb294a1f13120f9906db2288bad95ccb93479883feac22df181b71e1718f209c8c2cd5623547c693a4bd1a88f55bde9196547f725c90942b8ec357d51d61ba6faaf6595aaa72c05a56157c571970f2936f1074b04ab26259eb6542f5b5551c0efc600e002123a2928cba6d8633e2156b0ae8f8ca369f189214ff30951e0a9cabe269b901ade33f5039063e8d498e254b4ee11ef7f10e1c2aac290c352c250e29d5bb0df2f88d3e737e4898987747d6f0b1dd9e6c8216247adfca21db2b3d7ab5eac709335eb9120912781ef7fb4b9ddb22306e75b86ce10d8769206c23224e1b0d24ff6725242a3e90340fa51c1a41e5a5be130aa2135a4a3bdd370fa6985a0800929e001dfd7cf879f4e05dd35227b707eae9f0fe054d0b27ebacd85a892fbfbe3f1e81d438ff1c3fddaf7fd9eff1628af3fdd069b5bf04cf0f1afecf474eb031fac1f414f932e7fba5d3fde7ef9b982220719a1f4e956637d0bd0d3edb7472fdc6ed75b107af13aa291e73f04d106c4de6318adc3afc1a3176dfc3056c3b7f75f7eee67feb2fa0c54df01a8765bc95c8e2b0cc500bd6e09a98dd699ae3a87a65cfaffd7150aaa3fe48a6e088cb620e5d0b98955f78bc23da60ec5075ca2d6cc6d46ebced62b323b644a5f463045351643c0a94d75eebc99292dcd71fa63cf4ed3d6194484adbeb7660babf3a4b1ae7a6ae7fb5bdac492f10252a321a86cf452560a484accdbd7d70c6c04db15f0a40d0e82b54a0ae7ced6406035910d2c8e2914e4198ff386c7d9f1d5b08ce2d3aeffe322c2712a8552469ba23c6b9d0af7bf6ec95ccdd09edd6619fde2297536aefe75d8cac9fb6f89eaa00d838255ad6cceb944e0a29696bab5805c9c7914aa976cb8446726b5c70c26453ab3d4826391e6068fa68d26833596a08eb906a26403c35a27314af129094030e067f67e5fd1f4fd8f534f0f0af587cbb2acc6c20dfc76ac2558e65e9bdceb2bdc91c91d2d7287a1b334ba317485a1178661b8a830328d8d968d8de3a5e9e3ada12b8ebd388ee345855b73f5dbe5d53f98c63e2c1bfb68723fce7007bedc12499f7603ffa311217689f548626d48cc61bd8e4612912131b3e219a0c3cd59d100ef48db22e29b91d91bc3eccd8cd9d148223224e6e2241e49c486443c27610fa9783b52a40369ac6d29b6b6236f6f0d6fcfc5d7c3c8ec07c3ecb9187b1c493c1a12d3381b3e4709b6c6349be6d70b7623d79e2586547bc1afd3ae5bd4ee8113e4f629d4b86c1969d2f9f8cf054604824ffd0940190f36fdfbec732bdf5993d71467472399bac611398534fdd42752f0937e2b7e3673b47930188ee0e757a9d2d675d02c17ad7744dd709c856685a97b05883a8c3a0d6d29a9855b8b17aa0b0c6d83acb45e0f7deacdd0210a107510054cfe6d7a1d406aea294c521a496924a5e929edf93ca4a2409e1c54cdd7e713f5451f28996110c229292005a4ac09c29d696d4a784af13036b96544c841c2a164e252edc0e1b0a50e4ffac0ef9c4f7b1399c975a783a8939143c3b193315ef47eac9c8a6347f4157def5353c15a2990a3c3f16eb819340e320239226f5f2f9cd5fda951cbe1a0ff3957cfaaacd7f5f3e8eeb0c7ab1328c9081fee651d918f1fdb09b4028dee707bded18dae79f4f7bbbd530bceca433b3e35ee19455dd58ec3a7cb03275f3b79e8e41b278f9c3c6eaf5c63bbeaa674ea3f7f441c348fc26aa38ed9e6edf7bacbd7239ed0ca13757938625aebdb5b8329ecf28dc1b3b6dcf0ba9e6f138dba3c6ac7f580ed76d8f5fce85236ea06778d4b8989a83f11da74a438b4e601aef364c7292327f5df0fad6a3bee99c877fd811e97225981d56b8346c669e765944121a3a3955f554c69b28c044d97dfbb9b9bfbbb0fa0660d4ff1375855a43cfce7d7af4fe77fe92848e9a575ed15b00277f7ff0b0000ffff73b4c1130e220000", - "0e008f6818d129d6ed41c25ec2d4e27d": "1f8b08000000000000ff8c56ed6ee3b6127d155917104484a6e564efc5c6167dff2f506c81f44f21080b9a1a464c685220474e0347ef5e50b2ecec76d33608227ecc397338331ca65c344ee26b07498b07b32be3dfc408fbc853b0e9ae6c4134bbf2002812d90a1f0079daa35a7e4e57bbd268fb9c78303c0dadf3287b4cb474364d5a0f8aa72b258e71ceb474d17c64b1e2003c3d6a78e99cc73491ce2258e4e98b6eb0e50d1cb584e538a1da6ad4c22c831406f89a86d66bfbbc44b7541ab9fd91145b38c0523ae3fc3bdeff14e3cff77a0fc26a05012f52e705f6149c8db6a8d1c0ee014568cbd53499f0674040815aae6408ab5b7677ffe96e5dfc77cd64dbdb67264348cf71c15703a105c0f443f84168cbeeefff77d7c8e6f3df33aca674ec5df3ba2bad0bd2eb0e77bfbb3eb1004d822e012bf606922fe2281ec6ddb8e87b9b60ab4322ba8e95ab0bb06cf431d10d4fbd73237da38fbbf2bcb950bd95a89dcd0d39cde304722027e57c7e143ef114a9e5501535751caa754d7b0ed56d4d152fa8e655bd55a56506ec23b65b75734390db4ad5b4abb0ce32cdba3eb4799c54454dc6555e6c23b94fb44d1cf9ba7f0289acf30e5dac51d68af0f5c5feea5d071e5f9914c6e48e7a9265b9a97ccd5de56b3232842c0b3990ad9edd13cd42ab15e624275b0fd87b9bc85101135d675e7349fbb7b7aa2654e464b89c57e4d7e302f5bcd8fa52ce9cfee6e6ba8b5c56bea6962f0aeaf87aeb4a9ced5cb48b363dc7cad5db62c17957f57596e5962fd664b059964b163aa325e47eb9a46b4281ab5cb1c03106870c67c9304cbe4e03edf869bd29062ac740cf82554c90563956509333288e19fc112f5cd88e89e371899ff406a8d92cd6f4bcb9390dc31c1c13416384fd8ca59e5ec78a50cf4c3ced656d50ecc00d554c72a48a35fc5242403d457252ccc521797b3ba7b601a52dcc091dcd4e60fb03f858c69b45411f01373890812ae6dff19153dadb09dda40b1eabc3a9e4e1f5b07726cba62f43f7805edbc7dfc463967de4f1afb6f47414a6874dfa8b6b7a03e940e847e0f4db370867b319b62826b97895ebe99494750659967bae724f08fd9cc19c21bfd52aff14775337ba4af97c269f65f1975d3d5d41532d9cc5490f0221b7bd3124d229e673fc483ad2b401257a83e98f119f4ee107426f4741618ccb35c89ecc256fe335f544b126476ae9fbeccc122ba807b6d7b61975514b2e970f638cec77299d4a13b20cde9df6ff178b0b2bb0b3f661f393cd4b05475d9ea622a59e501fddb9ef2af202f9577d26022247c7d3557abe452fda36ee85bdc0be13f2f94b70b6fbd95aec2bd4723fb59b311a9e6ca7298f5dc5b3305efda977456ec78bad2bfdfb0e02b9af5c4d46d781db6dec537955937235b7f3e99b042faf2fcc537c9feed7c5fe568af97d7a0ab1d9ff036a7c96ee40149fd4dddd4f81abe91d5a8dff39fc190000ffff5bd8795d49080000", - "16853f11e67cbde49411b853091d5797": "1f8b08000000000000ffdcfd0977db38f2288a7f1544ff39bee20d8921b8d31e4d7e8ee36e7b5ab633b6e3ee198fff3e34055bec50a49aa49478d1777fa70ae022099293ee9e77ef7927b1240285ad50a80d05b0ff25c946f917fa85df4da3f8f33fca3c9b0e14692f2fd7371a9dceca71fffadabad1afef67595c2579d6e77aa567da736f56725256451257bd3d4ef9d7695e54e520eb33cfd716fa56f08c8efa95de8b7b2d98f65cf06a5664245f68bacc8f54f9499bcf55f9719b7fa7ca8fdafc912a7fb6d0f6e651418a4177087576bf189cddfdcae38a96bcfa58e4555e3d4ef9d9fdcbcbf3eded149e6f6f77af6f164956565116f3fc9eec1745f4b8b3b35c1ba70df8a05abcbc2ce7dee7451ffa909124239556d171549e7dc93e16f99417d5633fd37676fafc3abb1954d7d98db6d0b0d862afae85e4b29efa19c6578d9392c6795656c52caef262c0170582e99c4eeb910cb2599a0e0683ea9d1c665cf0a8e2fd4adbed671db0aafdad67fc0bc9b405743819ac21b49fd4188bca3279c8ba636d475ae9d980e9c5202a1e66139e55254d79f6508df7b2bf157bd9dbb75a0d98234a5a3818bfacbfe9d10aba681ca569bfd27381b51cb096df687b72c2f942a3d1749a3ef601437a5373179fb1c027cec9e079b157f7a680def06feb00d70b6d67a7a24936e25fcfeefb85f6377367a79f5d1737037e5ddc687bc97d1fd0ff66c077767a75db3d988dc72950926ce681579dca2f1e2777795a8acee50313fbd650a912b6cfb5bdfc6f458de2fced5badd32dc04dddb3ebfc063b07dfda42222c5b347889c4f2d68b66f964fc4b3f7b79e967838f453e494aae69fd66c2733de910650c0450158fcfb37e4133feb5ea734d5bc451158ffb95f69cf42b6db1d4540b5d8d8bfccb56f01980733aca33fe2eef733a8fd219d7769156db0e55da73d5642e345a8d79d68ff5485bccfafd625048c2e07a85fc5013ddd4b485b6d452431b7aa1e77aa2c783e734bae3e9aea9973cab763b8b22b9efb39dfcdabcd1700c24bf66373525c2ef855e158fe5eef58d9e4fe16b5167268367687c37ea9b9a8e6577a33ed37491bd1bf52d6da1aba8464cface4e3fb9163f6952f122aaf2e2667db51258030b4d4ff63a884f9adc063e5a4f4a7070991c1720faf271ca0f8b222ffabd1f7926da244949a2b4e0d1e891f0af3c9e5549f6407b1a92ed5ebca7c114433dc00e7676faf9c0da49aecd9b77059523954fd8cccb4bbf9f0fea2c6d6727176badd07453db1554a5edecbce9e7833a474fae19cc24508656237eaffc92001d150353cf0155836bd1ac9e0be2b8d17478d49ee3a8e4c4dcc52fb69b0f92bdbb82479ff730c1d9ad8510c5f97ffb567fc6e2bbd0a80e4deebe610b01eceeb650c5000192c1b579b317e7599564332ec0fcdd6410d37c5ad2693eed6b7a4c8140c4430b3ae2f7d12cad7693fb3e0cb69f0f049c2617f9dfcd9d9dfc3a974f06bb015ee80d060318d5cb8b257f69da733c309b6a17c97ddf96593b3bfd37f9cb0bf4f3ef393ec3cfbfe5d736961243c161088c4059af292bf3ff0624de42c393dee0104ae45d506b09d4bad1251e40294934590832a0d02b185a2483aae6c371cd3622ed39195c7b7a74a3170373719f64519a3e3e67837c60426f5ca40149d149bb529b49356fde41f2ee3c4f46c494136c2e16fdeb448f6eb4c562f1aa2654f4ab4621d93fb83cbe3adca0953440c3e31f4f6f87873f5caa00cb55c0f3e31f8f9490690bf961fffc2715c87d07e4f862fffdf0f0830a6cda82fd703c1caa40c65d905fd4d58c56606e2fcf3eaae0e62ddcf1e9f0f85489b04917e8f2f07c336a1f5bc8e1fef98f4a98870eccd9fe87e3d31f5550772dd4c9f1e9f1c9be12154f1da84fc3cbe34d23386ce1cecf3e9d2a5176d6c25c9cecab51ffa585b93a3cbf3c3e5077ebb605fb7876717c797c76ba69020e14a0efcf2e2fcf4e54d0270ae84dd47ba180dd48c0972df0e1f0f06a1fa14d15e457152453417e56415a2ac8a10ad256411ea9201d15e4d532d19e5ede7e3c3f3ed93fff970af8780df8e2d3c1c1e1c5850a787f0df8e7fdf3d30d747cba06fc61fff4c7c37315ecc7cea23d3bf87471bb8d51fcda027f3abebd3cfc4539afe71dc2ff740a9ddc08faa1b396ce4ecf2e3eee1f1c6e04fea1050690db8dabfdd30ae0c6a5f57e05f0e4d3a57ae0bfad006e43d2cf2bb0675787e73f0ccf7ebe3d1c0e8f3f5e1c2be7f79f6da1f7c3b3839ffef9e9ec5239b69f5ac083b30f4a901f97416eb14215e05f5ac0a3c38d5cf15f1dde797ca19c995f96416e3f9d5e5cfe6b037afed1a18e4be5acfcbb2b020fcf952d72be0274fbfeec837299556b900767b82894f390ad41ff707676a95e3a4507f6fdf9e1fe8783f34f27ef953e1125e4edc1a7f3f3c353e5f812650965976335e8edc1d970b8fff1423d0b51b7d0a7cbcbb353a5d6b20675fbe3f9d927a55029d7612f3e1e9f9eaa7197ae436f5af6f71dd083fde1f0ec93126cba0e767b7ca01ed77809f65cadcd7461242a95da8c026e23314ed6818fdf0f0f6f372dacc725f853c1a40e4f3f29759c0db0b71fcf3e020fbabd047ea96ce66ea5e8f9d970f3443ff1ae56b93f3c53728dc335285c77fbc71b08e26c1d7e1312bf28aa1e9e01d63712f2ed7a91cdebfa6013f02d28a167a7ca5578b25e0878aaba858b25e0abe30d60975db0f3fd9fd5505fd7a03662eef33ae866340cd781378fe8a8037cf8e1f812a4e3c6157db509b866cd4a7569632178da20bbf637163a3efda8e623a71b8b7c1cee1f1c1e9d0d37a0e063a7e00fc3c35f6e0f7ff9b87fba01f8d70ef0d1e5c9f0f6e2707878a056a73aa09ba13eac56881d57aa514ac8dbf767e71f0ecfd5d2e293bac8c1d9e987c3d30d12e6bdbaccc5e5f9f1c70d4a16efeaad1ba6e7e755a0db1f8fced4ccf39feba09b78da4f6ba062a92bd5ab7566a954ae143cf5f8f4c3f1c1fee5999224feb5adc0edc1d1f15089b55fbac58e0e0f7e7a7ff68b52efeac09def7f383e53aa5e5d5afbf9f8f2e048a97c55ab50b728e8372ef8aa5af2301c6e5e7dd92ae4a78f60b06f2e50740afc74a8e47af932c8edc1d9c97be5e893aa6b8e7c38fee1f8f0fc7643a57107f6e8ec720354b406753bdc7f7fa82498d93aecc1d9f0d3899208cb75e0cdb238adba2e920dcddf77317f767eb279b14c5721b770edf12aecd1e1f0e3164a1975a76083a2335f81b93dbe3c547a2e262ac0cd13f0b80a7ef1e9fd46656b15768b18bf5b85dd2c469f3aa0a7fb57eff79550876b509b27eb6c1d768badf7651d7acbc06ebbd067a7b7c71f0ef787b71797fb6ad3f56033f8edd5f1c527b55feba45bead3c9e1f9f1c1666e70d1016eecee4dcaf5e526e05bf443a895ad9532c37db5a2b50e76fb7effe0a70fe76a8fdc5001bf555d3eda5060c332bc52806ff6bd1e2ba0cf3e1e2a19d1be02f6e2e0fc6c38dc3e80d34eb98ffba78748086a37c54735e89665f4ebd61238134a4d6b43b1abe3c39f953a57175e18594a856b1dec76fffcfc4c59e72705f036ca79af80df4208bf6d06bfbd38fef706b6f0b3a2d487e38b9363b5b3f29f9bc1d11b767eac765cfda428b789ee7e54c06e3670ffa280fef97cffe347f58cfdab037e79be7f2a3dd95b09fa976e13e7673f9e1f5e5cdc6e60e0ff50c19e1c6e30c4fead823e3d93aab4720678a62eb27f7a7cb2bf49b1adba85cece2fd5fc38eb405dfc74383cdc6072175db8e1261192af41ddeeffa27691c6eba047fba71fd4464eb40ebc59f15a87bd3cdfc022ca75d81abf4acdab0b7eb9aff665de77800ed5fb44d36e3d9bbd6ae375b0ed533e52140026a954bb14b040851f8f95554f14e01bd1fad801bedc57fa501f9641b6db52779b80b7adfaa795429bf486c3153814154add6b195049215f966094dcf77619e4f6fcf0e44cbd157ab002b9514f3a51016e74975e28a1aff6879fd4dce7b20b7fb6afc6e2d755a0edecf5f31af8c9e1c5c5be7a0368b8047c36bc3c56cacea375b0ed6475d52d707ea8569e56606e4f376cd3ecab006f0ff6cfd522ec7433b8707f2a17edc72da54ecfd4eadfaf5bca6c12c7e7ea329b15910fca02d265a61cca0fca129b68f693127aa30c78af06dfc0017e53425f1c1e9c9d7ed83fdf62e3ffbca1e0f0f060c3cee33f574b9c9f9d29fbf453077013527e5c8101fd167aac6cf92fabc01bf75bffd5817ce0d5411a95e56934e1e5348a9531bebf740a4469f2904d78268a29b5a50e344ff93c82ec8dd0ffee4027f116405e7400b36a5b0faa0ee8342f93ad1dc88a260239ebbbbea6e783acef789a9ec0b3a3e9f120eb5b96a64732c8b3ff2c68fff46ab7372df2d10c2bece91f3fbd1f1e1fdc7e3a1feef67a0b8dbe1f7e3afc787e7c7a797bba7f728836eacb4bef6e6af7f4d9207adb33a2b84ae6bca797e209106ba4fcbeeae96927a5481ec6554fbfc7a451547ceee953f13b29a3bb948f7afa189fef9334ede923f9fb2b64ccdb07a3caa73d7d820949962619efe98ff2a9e245dd97074c4aa3e281f7f43bf19047a3247be8e94ff83849b26412a53dfd503cced22a11d59d614291cfb2514fff820fe524824edde2c39c17551243d1834156f4631ad1cbb38f9a7e523f89a0164dbfa81386873f5c6afa65fd88a1299afe75f0efac9fd388fefbf0fc4cd33fd78f67a7879a3eac9f2e7f3ed3f4a3e6e9e8fcf050d3afeae71fce3e9d6bfaf1a02afa098da88cfbd0f4fd3a45067768fa699d22233834fd639d22c23434fd5781e63c9e959d5939c7d4596254fc6bd5d33f08ecccb22cc91e64da0f02857996e3da93a99f30157ed713f1be4d9118fdad4d99cc2a68eee736a5edc33fdbc47cce8bfb34ff62f0344da66552f6f49f30f72ecde3cfbfcdf28af7f41f3125ce47bca7ffa5f92d407afabf3065cc253dfc22c82329ab9efe8fe6b731cbcaea115bffb7187295f674ce2549f3a2eae9151f700e4de7a3c79e9ec9a738c7655df6f442a6dce779c58b9e9e8bd277058f4671319bdcf5f4840f722c342b0a9e553d3d1609654f8fe42f23ced3349a96d09599ac615655b0564b3e9841e987229f4d7b7a2a1fcb699265d0e0bd4c1013321585e3284df359d5d3c77c30855ce0573d7d54e716b0e2e4836cb9a74ff860de0ef571395b22efa14ecdc484f26cd6d3eff8e0010a4ef3294c9d510129543dfda9052ef2b41ec121973c214af3879e7ec60787354aa30487f44526898edcd600695ef2062d0732b5c6fbc9d23332ac3c2b7bfa854c075200b8cbbaf57982cf5fe573117d81c7cf7cf0b56d7a289fea468ee4735dd99528cc474905542ce7e0980fae3a44d2d3f76502c021399eca84249bc2247d948fd3348af9384fb1ee5f45ddf729ff6af0afd328c3d473913aae26a951f294c7b05c455afdf8430704bbd5d33ff1c10f6254c588174064ef654a9c67239e21ddfd2693caaa48a6b84cb964bad8c97ff2c1cf4887e31c08e1a7fa514cea8ff2319212e62f4b53dfd3ffc5077f11231e257154e5454fff850ffe855d1827e9a8a7ff439618f3f8f35dfeb5a7ff5b2414d128c97b3aafc420311abba757d58057585f06048778cfaa5ab8f0bad34527693605f150e7e422e7337fece94935c82becede42eefe9712579dd28b94f782160229138ce2b7c9c5583a842f173c7d39e5ecac7384f6793aca7a7f2b926f2fb4a0a2b849eca5ee5c5a4c6dfb893d4d0cda89338e6e9b419e95cf61057dfa41acc1115159ff4f4c76a30e974ec41a26d762797aa046ee8ff4926d4247d280a64d1fc2e2a7afa593538acda69fe221f1bc67a2b139afa0e64f93c3392118f52a3ac2260d727d5e00000e7493903b97a21e166135e24713d2b9722b5110082e97cad069715f2bc28c645da42a5112cd36af019f2efa2f8f3a800e5e148a67498ca552709b17b2c136a15635f3ee7539ef5f453f954c6459ea6dd8a3e8ad6a751c67174206e7ead061fbb583c5f7ac68ef5f40f32719ef02f3dfd07598de0993dfd5335f80172a3a2c8bff4f4f7f2b11dd36f32a519c0cfd5e037ec62f28473f14f09304aca49021ae44fd5e09f9544549180a0fc51828831fe453ed5fcfa5ff2f94b114da7d0a75f441fab22ca846adac5c33fe4008afca1e0656920bdfc7b2571c29171f24c5285e42e654faf9aa408b434c136b24c22a5a880480af1587ee62947ae9fcb8454105b9c0df20c70f6157484483e8da36c045c6f269feb352a1fab026723958f75577bfabdacbc8a40f04fc513070d712c736a993bca06636cb7edf95c26c18cf7f4493bde6992f5f447992bdb7e10d95574d7d3efb2c143b6cc199fb2c15dd69d8743092396c3997c420aece95fc463d9d36feb6a1f7afa4136b805a0824f72d0964f9abc7aad5d648393ac510d2ee5139e5f287bfa57099f47d0e4e76cf0355b5e4f439934e1651981e6775497c8d32a99f6f4ab6c70b432b063095270586fed8391a11a779a0df633a19f00397ecc06a7592df8473dfd57f99ce5b05ccfe59320e50f75d17a71fc2013a4e81cf5f44f32458cf7bd7c92c4f15bfd8818fe593e951ce463543cd660ff6c3240d642ad3f754651e479d5d37f1429a299bf64831f33415450d1a8a7ff4ba6087db93d4cf54bd7c7dc9e21fb071e86948790b83c65544883a33e5454ee35c96878d4e96973fa4724744ec1fd1beb6dcf15d6079e90e66b53d8e8bde56d115ea88b9883c18037a704ebb11b3ded1ddf6d9fba35552b35edecf0378301d829a7601975ba22cc67284dab7c987fe1c54154f27ee7905db6a157828f48b605adbf72dea6a9b0e89eea6d0fb18946f0c82e4d4afcee73ad6e8d2ffa5c5b3dac2b0e855edfe8c5e08da9e783374c4f06e240d05e553c36475c633d1af0b523787d6def4dbf18f4e341541f2e1447d37676fa9938ea14cbf389fa9beae5259347b8de0c0695b6074d6a7bf234d34c7bcea10bc960d61c65820e142f2fe2546f24cfc9bdbcd4bf00c51232b9efe7f549a7457bd413c7d819b2f6ac3cdf779ccda3341991a8aaf8645a912a27232e4e1acf0a4e50518021dfa59cd467a37bdaa2af2d6a378e720f68a138498eae91bd371de8a519aecfe8ae9cc1ed9e8d6e8f1d7398b76a60ee557f5b3b795cbd7d2b1beb9c36ae6ef692fb7e213292fa886501893de841f6d01b0c06c9cb4b2f9b4dee78814f1a171359687b3c2d3959a3b042dbd9a98fe38aaae3412ecf9ec2d4e985b617efecc86a626d5157d3cbd103245aa907159124238596d5071e23a8fd3aba692a88b4668239fd354fb27e8ff4b4457388ff5d3fa792a50c72bd3ddb9f6bf2a0db6030e8178ac3a3f9a23e49ad5fdf68dacb4bbf2d5ce06c6f5f9db5d7cbd2f65e218b3d71da39eb5b7e03ab3cee9f4bd86490f55b50e5cd03898ada96fad7eff20959d558b97fd4895a526e15b5f94a1f60e7ec57a1dc196af37f55ee0ab5f9a972a3a7cd9f28776cdafc4cb943d3717d2a3767dafc5cb91bd3e67f566ec0b4f9f7ca9d978ec358b9d1d2f10f2bb71bda7cf55e419bafbc24a27342e840b91dd0e62bb7e43aa734a7ca2ddd365f49d59d13974a8f7ae7b8e54cb96fdbe67f51eed5b6f973e5e66c277a50b91fdbe67f556ec6b6f9caa5d8398ca8dc00e89c917a546e66b4f94fca8d8cced68472efa2cdff4db963d1e657ca0d8a367f5fb9c9d0e62b37ab39efec01d8aed8036096d80360620b8039a6a647838c66fd586bc5dbacbd9221b95f6258a2eede71565d813ed14385ee73928d16fd4c5bbe964382fe90e6910a58e3d7953c173f384539d7cfa492d248384575eff33ce551f6adad5fa03c7da579d9eeb666c52e89aa1e29c59f177b19bd4f783a2ae9249a2aea20b37ea2739a4513aecbeb22f4425b687aa727c9624b1faea222412f9da203f1a05fbcbc3c2fb4eb0c5b9015ee75ea8eb7d53d4ccad7264962697d78cd8d26cd3833bdd261707ad6145f6c9dd5c36c36f98e4902aa7ca3a8e67496a6aa6a5a7533a7511727a018754c9db2ab8d43de1ea7a3a4e0b88f5482363d785ee8dd347a9f1787513c5e96ead7bc3b09a24ca3ff810ad52a8a6be58bfa169642904a3228e4c85bf42ed78fd78554da425b68cd8287be37ead986a685aeb8b3d32f567aa81c94408aa4df7cc0573b55e8999e633734fdbedfeda05ee8f26a9f7470dd8bf32ce3d2f7db4bb2389d8141df2b3f27d39ede8bd3048df25ec1c1bcee09cdaf77d3f2a6fb5aab02436e6727a36d85cb4ff4337f1450ddc4fb24ad78b10229129b6b2e6a955d01f34e91b67b7db357d0322faa7ead53567ad259108512a1c935bf19e4d7b034f4d57ebfedf57b6fff7171764a854190dc3ff613ed6d4feb3556d54a8985e0021cac0849c2b341d4d7fa95b617bf1d407db3a5f23b3bf27a9fcffcb1ec679ab28f061b0c066963b10b8bf29adfac14bee637f52521efa0b1ffe9bde5aa212020f462b78602fe17b70b702a16600204b4956ad7b9ceb7d06fb1857ec5bd3b40bf7ad62009d843d3b9718797731aa54954be93dfa2b2dd2ed5b7e5465d690812a2c39d1aa0f992744d938cff50440f301c15f4a4db959d9d5e22eb045b7267a777278464e7021f4e1fc4ed39bc53cbe392ffa231cbaa9d9d7e3578c3345dc6062434d2facf50d32eb4a43755ed560bbd63b2d66dbd7b4e46bb5c8747c08734f816bbbce38c79e88ca0bdb0aa3545ebba76767abf96e22e2231bcb68abb0eb174b9f4127fde4c2edfc9c405696ea68ea7a6372b887c5e68fa9b6e73d213f4c6947e8637e637770a5d04c029111d6df75e5e1a56ba92d3127eb33c5e5eae6ff464096a4fce744eefb43eacf9c693b027f84a716dde2c01c5581a48ef1e9a8cbb4d629908cb4809301bbc617bd1cece9afa162161bf9b0d22b984fadd4696541e01aae9b341751d2dc9bf6e1181fc3783c14cd3f40657c9ce4e7f367833d3f419de2bf686690b9cca66fa0e37faf2f06ab9c17573c3966cad80d6b8fefca19eb1dd6ea14a78499666025aac16fd4aa3653ee14b178835f35f73da4afbbbc1ba37849d2daff8c3fe752d2b6f7460cb90500b4bbdbbd0be74759a4a2f3a23e174c4ef930c1d9f9be9ed6c0a8b3dc9b30f0d70cb925654ab5ecdb454b03b3b85c40a2ca3de2cc3d6f9a8b3dcb39d9dfe4652d43341521d942e73a885cef5e7ce9076af9fa1dd5de510f4bc4edcedfd36e3c5634f17befa24cf2e78b52b8b5e74d23a106dddf5882fa6056ee820c79379a7d184f77441d8d96271b358dc80d88ea3aabf84fba5bbe06e97ee341c5cdfe8d980ed65ebcec5eced5badbace0c76b37495613dbbd5fa8c56da7307ed6f1ab4573b3b820703cbea4af64aa11664da73736de402ed97b6ef07d0f793be6401d56085c2505d529a57db686c67a7379955519bd8ccdc4203b6b4bc2e916e2a58694dafa043cfdd6ce05b1ff278b62c5ebfb7d30a5a7fd3886a6dcd4cdab496de6c584bcd7e81a61ca1a482bf0dd8d20c5c74f8048c5bff53a60011dd3672b9a409fd29532c38a5026d4d331dd54ac30be796e5efd7dfd1a76ddcaabb243fb77200f0ab9c8f9d1dc946809bb524ba4488c3a69e3d5c24cd1dad03532f96e96e2f6b2fd7ccea5d846450c002dfc295134149d22790b4fdc0424d07e39797a53505cfe5ecae8c8b64daa4698d4f7b03a98bc65e5eaa97977e3548b405da1e35fbd95b22e716094788845a47e23b3b7d3eb8bea9175f57435349a46a452de38b250c5fc995c681a2e6527b687b5d6e485e5213ab811a66231d097a8b66a970a1288878b55a3d1b2c97d18b25074aa157c250c934bd6819c0addc1a9157055e3fb7f2a4d2eabb559f3b0e8de3a50daf81b905b7999e83da22eeb91d27259af35c5c775bbc7d7b33c8b40574874b5c0d0a9da3d1b93fa82521da361b0560eff6b6b6087a8bcebdb8a71d44b63bc87dec7623cabaa2b97d28299ff3e251a14aad8a655c9492d3f4b3eb6a497fcc40fef62f56f6659745864a5e2c299ecb3ca765ce2aa1b2416a6de047956cad5a003f3fea03a7d3b477c0fe763b9cffa3028f4bbae5b2d6b9ca5a6b168c0d762d0b4e2b5e56900ddf7d7434b5adfeda552f97ef7b860e6a7a0e1a4caccc8a206b3638ed7755ea4a7faeb5fedd679e55bcd85dda4f2bb4e7c62c586647859ce055ffd8e08da92d163a92e75a9555cd2eaa654fdf367489489985b65aa8fb248a7fc4a96a5862d7a751bde2af5871f7e250e40073a1463fe34aabb3bae21178e2d29269af0e8795d5c61bec2d2d26a5be2856f59b76fdacba279aac979737cbadbedbb20a655c42a5edf2fe7229b527aa717b351644cb16b3c53755112da36d0561c215ac2ff7789d02b5e7788dba160bbdb502d5040684003cbaeb3a582cb46608b39d9de37eaeaf8ff84d4dcc370badf5d8ce562e9617f3a9c0d7773102e916dfd959a2bd6a89f6aa0eb9e1326978c62a192a3807b28e8e02b5b6f2155a8d0aa1cbbcb336fe2afd5921b677ab6f12e64dad6f5e639472b0a2ca152a5a6c6534b527e675ced20910c90726fa745f61179970cee66f070ca8190ce77c85daf47d59838aaa93fb7ed689526a0874d1cff599a6e948a0918a40e36f21d086fd341cf75bb0dc45ee52cf36d18f7af566edb25ea7ab4c8c3212a36c05db79a74bdd56d0a87abe58721528c494d8a07893bdbc6c32fab28eaa8e54d1306231fb50bcd884a55547f2ce4ebfab5fadb907cd95149a4665752c9d4dbddbdb9e6ec2ead4d42b8bebcf1dcf4751eb9cd7fb3748f18b85d8def930788685bebbaef976777d567ad2b82b909b6c70fa6fc2c267feb85adf427b7989f3accc534ebf4445d6ef9dc3a24ab2071265e47fda8e904658133ee719a9c6f9ec614c928a8c725e922cafc8389a731291cffc91927fe53332891ec99728c3d0b459c94935e69049a6511161fc326494531e27f78f242265951708407b1aa86f1da5f7870e75fddabffe70a39fe0ab081a804f9d5136661bd88fad49f78eefaef822bf857dae51756792d75c6238bb9d5ebd5ff1effcdabf5e9f72d96be99e5c9d1e5df0b8dd37e6e2466f4581f0956f58cedb8723b8c992b6c3bfd560d8b2a0b6aca7c53a9fd42b5c02bf0dd6dee351e52208a19dfc9fb7583c327ef737698869228eb7772d7646c48b606e7abbb8ad398ecaae4e411f380859b9055cd1324d62de375b35899600a0179aaed891acc0fe2baef39b81e8c942d38bbda5b6c5c8bea1f17c45db6fdf23d279db0d145eed595e9b549bbd8f85f69ce3db4efad575214c373d5f095e26156819f84e999368da21df7fb662beaf7484f277ddd3afbbbd119ff3349fa29eab81486aebfaa989b47903ccf59ffd6ec94e9b3faec1c182e942fca57e2b492d00fb9d5792d4ac8c17455eecec2c3d2ebfade45f4b321401908b8a5f5234b7e0bfb4bb6730b076530a5248e7dd431fa20acca3d5a4269e19e6f53299f03e22a87d5a7e158d6a674fe456aadcd51718711087dff88a9c4c13b2f71b5fe993d544fc864197dffc826f45d2f1ad484dce62e5754adfda1ba87e67e7dbbac297ba52cfc7a2e90234ff8f75feb22946f9dfdf11a3ccafab9be508e52688acdfdd4cc2c7da9b854ed8e705fab2645d30e57f67b54e03f6e5a0e0c8721a5f673e607bf9dfb2bdb76f73ad1a6490cbaff31bbd68de0dd45964155fdb26de404d9d307f5e2b60757d60f2eeec605defea694bcac3af15cfcae42ee5ed0475538542cd61003833dfc29a64f4c775814eda7fb42f6daafdb71cb2f2376247121e000305ef277aa6e9393423a2b4302b5f683ad7763bf8c0be54df8691ee7ba2b8781b131fac9e4a78c71b31b1bba40fb46f2253736fae2d74aee9f53ea7a6e97cb1ccf59fc11ceafa13fbbeafbdfe56377c97c99265236384cbd37cc40f33652c69e7856c49f983cc56deb3d4053ce7515c61ad9369a58c01edc4d8f2ac9c15fc30e5280c54f72cad55bd05f87ee9b68a0f49394da347e12d5d079e766b96959edd5f3e4e95d09db8dd32bae7c7d93cffac041ca900cf0ab137bf3da0978b4e1c9767c58138e8a50c41ef84f846407043e41207f9641a15ca263a31bfd1745ae45f0f7fc333a0eb90dde8df349a2823a03b11f4713e0335324e2651fa318d62aeec6f27a4be1a177955a5fc70be61060fd761c5a4438183284dc551cef58267eb053784df37d1bba60cde95177830cb6e0f37005ecb8d684a68676994e3284df32f12ff3ff147251212dab98077c4f9f455f8bb2562be10ad7cca3874ea27fe78250f0aaa8a8e96d701e7d36f2b172feac8144087a3755f35d66e022855bc7a87fb1baf3cd9d9e9e62eeb80b38efd5027aa8552f95aa895385dc55f5e7a686cbcbcbc61f2bbdad959e5da3b3b7d61d00bb1fbf2c237da35d8f21b136cfbb637e9b6def4ca6994f5ba3d528493bd13857655d15f9c564532e9b7af0d7b5748992079179876203d76eb4ada734e75252f2fbd124fb92dc5b0c18f97973519b6a9fa7b147075f85933fafbceac2903ce946453c7d6a933a7453e2d97e218bb9b832d7b87a9caf0bbf729fb9ce55fb2de5280e19a706fd4e4ba03dda76ecde8665d494385bcf3bc1293f847824c92fbfeac7baa717967b2d256221bff84789699505756dae9ee804d96f087a3077ccba3c8a0b4bd1afbd86c47eb2bab0292eaf566546bd6d4c38aced994ce306a9c71c3d5f493a81ad3e8aeec73a3d2fe36c8564219eba066b1ee1acca252fdb7aa131d22ce4be674d418d058f324c9fae247f455bc9435d396e213855994943f245982da70732e77af9d1fa66703730febc15b8ffafc7f57da5f2b5033f7b4ea7f0f98a9676fdfb65b2f4d0387cb7bcdb74bbe75419660d4a27cecc3300e6665954fe4b38ebb039d60ded10873864959f18c17d26fb11410b799873d2f34fdb6cf97f448b099f85c7893a2598a5ea2e594e5b3859d053ce545999490bf1c58d79e355ab2926e9731d11873a423c95a73088331cdbd647d41246fdf6af975d25d0ec9cdde4c5833cb0b21d7f4e2e5a58fc78767f86edf6c1d80ff36e365b55f5f45f0431175bdaa30496b45066f18488ec59a9e78c29165abee48059563f1fd8affe69376f92b27d9e28eaac44055eabd4f677c5a245965f7f46470ddab6f021337bd5de2d528bde68a82737edf6b745af120ee1deb89a3f93dbc07416424f2d6805e7d19484f5e67d56bae14eba5fcbe3a16259b8bc57a7976304ed251c1b313d04531e55c5eb9d093777b80115ff6f41e5e8fd6580fe25156286f22ebc92bb37a78cdcbcdca5b86558c482c8ca4c3d8046b42e503f3aadaaf9f6860d8157c348bbb5ef72e6f5d7d9b3490e488a7bc02d3b5bad1f9422f68846e65209fef3b508f2f205df241559afa95b0075196e515015a231189d3a82c495492a85969bddf7b387c90f56dd3d6e8342a4abef452eca5ed3abc88a9ffd7ebff94facddbbf3ee83dd2d3a4fab3a80f86e9f1e0792163a265d037c6437795c3daa902f503c34faeab9b26feeababa91a1e280a067fe75ca8b0468234a6b0f79bd615beecec4ee21ee3c35312bed76d3aa14e99de61589883879ff63114dc7ff1c92912c477bad8b76b0eaa91668dae8eeae1dd81878b6e2be1e0c06451b14b1142cd5a131e9865eaaa0f641bf811ad6c6f22903dcc4151f115cb2d0ff0c78659ac70d7de2932ed3fadd448a17ba5ce69f79a62fa5f36c84a9d2bdad277adcdc9c58fb835084e29bc5232d5a5d1ef8daf064505d47d7f9cd8dae1a4e3f7e0d978906c6c80a2adf60f05e5fd63ce0fd04b4fdd6b55e2dfacb8101ddb7a53f2f301e5cca1f550413ca20799a68398429117188ea90a559676fb31cccba87c1d241deef5783192056a3653e2b624eeff2d1232d6777c29ae8576226f40a30af697bf12a3e4b6d67e74d7c5dde5ca737effa51eb17173b7e3f474596640fbbe45ef68e7c49aa31815e90dedbf26daff3fae8a4ac4afa9fec0148ffb7d4a8a207c2b3fbbc88794980ad345540e992447191972579cc6705016999c491f054e6e48e935996fc36e37b042a2793bce024bacb67d57f321084e8391e73585de52e1957d574f7af7f1df1398da6799ae6a3a88a689c4ffe1ae705ff6bdd6c49c7d524fdff898a0dec434fd3e5d0076f4c6d57819c97973e4020ef6921f5ec3abd7979e967e25997d1f8b3dae7d83c2fba618df58463bc5f3fd3741018c0920659f7fc44bae46d16265a4bc8e8631454dcbe1b5f173e643d1bac5b91d5bb6ab782cc62c0f68abf350ee6029dd5c5cdce0e7cd63b754bb17975fabbecad78c095ddd2d9ae4cd7b3b7c253db18ca99b6489b4b2b523da5052f797510c5635e766faa6898fa424fa9bc97b25e0792f496e023d0a2f494f20c200fb7b1ef6eb1d9e08dd969e17bcab145e7ca8df4f7dd6723a27a5bff70e300bf2f387f6a76f584352c892fe12548a822fab22bdf6fbd5ca6d230dae2bb45f237ab8ad12baae26c4d553cce309627abc85592a7f28eaea4e6c5e592d75b8f078df694bcdba019359ef341a5f3c56ea247cbfcb7d9dbe8679d3868a18ce575ef78577fd65e5ee047e7382968eee565fe319f0e982e0e0a0f723dc6b8e166d581b9b41ac0126bfd0afdf68b3ecaccd543ff42f9e21dd11ac1a42d1db6165c76a030667ef73653977d4b234426e9b8d1203631ff2b4d62cdeb6d2efab39797fe0c2c496da1ebcb73ddaead953884d68fd0c1e039bfe705cfe25a694559308ecaec7f55e48ef38c208b8dd2a4e42362907236e5455f5b820062e0a3561b7bf58eaa6d6be43b2e06515eac31eeac21c716ae69133dd334ebe7e2620937c07b25fa8ea3e9b3413febdb9ea6677ddbd634bd1c647ddfd4f414f22d4dbfdfb43e969595d5e9d58b016057780133e886891b8bf9dbb71ac631b4b39ed7b38e0c0d9029279cebd7301b4d147da1c9b5a6d171525679f15887a44434d2fa95f0f3c1f2595d5851bdb03a52afe0d988abee384a68b4e2b28ce99dfe2c9bdc850ed4edebb1b41a452ab64feb346095d502af6d3ec827d33ce31928dcdd479ca9e9660caff8ef90e1b4225a2063b13a4a698d74c6da4672883b150fd224febc1203d8ef8c20cf106267673dad39b40462f8a370d0f0d1cb8b8907a5c4adbea25fb29cb8947267a7775bf2f41eddb2ab99aabb41debce9733ae155f4137f7c79e1344a2bf92bae8a54fe2cc7c93d246b8b3e979751adfa8cf4eeb8a445f8aeaa7fed8a1d52ad0b54e5c05332057d088e8693507546a103aef146c9737eaf17837e53bd5e416d7a1d71d32fc5145df76a68bc4a01417b7aafca7b370d0f5111e1881ee459399bf002ddff7ad72cab5e5e64232934f286d53b30ebda5bf1ae5935b1d69775e107da53e260d46ea19783f85d5553baeccc51c1effbb1b6dbeb6dee28f035d9c24c46afe5fab3a49f36362c5bf2573464d9cff4a6516da18f0b7ebf5beaf0992d304459b1a6ba3efa3600a2079a43735b3768b2adbbe55d6f1a3df0de6e8527bb8403aa792b819eb790c5bbda3db55be851037b513da6602d711a37a5ee072079a2b8d2c7034e93721f21f5d1803768d5e7a0b2a114d027f813aa791c8031a93f2c9109d75706a0f756bad9a46067f07a8e36073bd2d37b7537d005164b05aa270511fc104591f6f4bbc1fa96cbe3bb473a8daa31c6e53fea4f83bb9d9dbbd6b7d2bfa66ffff7bbc1ffffcdee5f9e177dedfa3f372ffff9eb7ffe73a3fdf541effde73f7f61bdad241de9cf50f9ee938e1ddebdd745d776e77adddddd51cb65d763573bb885999c44553cd6e3c19b37fdf1bb31685cda6ea121292bd59335b15575c416d7d0db9efd8dd7bb1f1bcff26e3e7cb6d03a17f0f5533dd77653fd7e10bf5b5922133dd276279b71355d5e53cbb4b11befec64e2cca5de50c16ea9e3f4eedeeb55befbb8d01f3450f0bf513951de8a96bfa27c24afdcca16bfa2dc44afdcfa367be556ba4e4488f2d6bef4955befee5fb9556ffacaad7ce3576edd1bbd722bdefc955bf526afdc2af7f8caad820fafdc7a76f7caad71df71aba1322ce3ec955bebbebc722bdded2bb7ce1dbc726bdcc92bb7c65dbc72abdbe52bb7ba7d7de556c3cfafdc7a376c94f7de75b34b72d3d3f341f1b647309466974ca2af2416aef53b4e525e96a41a47199924681b03e4dff6535e547f07b098a7ef512bbbe45f2b126523926707984cca713e4b475049c92b52e50fbc1af382f6f478b592c3328ea6fc27fe284b0a5fc9081d77f9ac6aabcc0bf89de6252742a64375d16a7567b3aa4c4642de3735de45df5ee34cd47884b7f8977f2779963e92288ef9b42aebe4bf935a6cd09e5e6281ff91052e51ed34463ccef1a61cb93721f1914ca682e712a102ca42b4a7a783e2edff22bdcdd5d42a494926b312ca0bae46ca247b4839f9c7c52f54f273185794113e99568fb21dfabff47b31ae53719bfe71369d557f2705ff6d9614bc8409969ecc2c270f281d0a39f5d15792dc93bbbc1a93a8e0440641d09e3e7dadc6bcb8a8f8f42279e21bea2e6536ede9e3ad9595dbeb9944bfb66dd19e3efaee9e0909953e2ed7fbc48b9cf6f4f9f6eaba8d7f4b7593ef19ead69a1ebfa7a676e21e44b18f62efb15342d84c044c0f24a28aa43c2a61c57041f144ee95d29e7eb754091947e57bf91e82c17355ccf8a2536ff352a63cfb29c946836759ea78399d1e0c8f0f7e5ad09efeb4d2c3723645b70bf6242f48f5256f96e01e894623745547699388a49a3c6479c14794fc90146525479094e88b1743d589b8bf7d394fde10df1efd49b2b2e2d108bb913e024cc9b10f51498465d7d30f57ba8c1b0fdd7ecaee9475f558720f8f13f104b86383f70e733953d5ba566367de5eabf00b56f8013dcb49f6b05a35328dbf7e19279578815a830b4a7bfaedf294cf4afe11dfc23078be8fd21266bcee50871a7afac1ca18f2ac33ef8073394fe4cb98676496c937c2a448ab27756168e8ef44be5588dcd5124c6434868b608e72dd640f3dfd4294bf10ef65f83b41485ed28b93fde1f0aff856b92ead00ab2b61cd20ea9212c417ede99758cb651e9515af83cefa1ae483a894d4899b8f207c08c6839234b9e7f1639c7232e1d5381fe13e90c8621e25179c9359193d70c2bf46201748de6e139132a980937dddd0b0c4b38845109d8d4a9254244abf448f2511902589d011d9aedacf021d1ff0a5337f27499c6788b6ce2c24f7a44aaa14d3f2495255380fc3958225ca4d21fe2fc6f997acc1d8d67abef10e6f265f5cb7e25cc43b6b9fa3d168f7ba77c24c1a86c4a3613836acb961c5a6415dd7a08e6b30f8571a8ce00361736b6c58316413b34d2da9e31206ffc6d6dc8a4d425db7492a9981bf0d3637acb1156359d224966d3b4f13c336fcd870a86311d308884dddc0084850c20f22ff19e2c1103f0cfcf73431097362c3a63623a6e11916f542c333bc52fc201efc117820f060512f10694fbd1bbd178d46f26d42e2457b8814979847ec007a691293886f3667cecaf0c6cc591dd2155bc5e0d3c47009738eac2b6b1ccc99f53471883936ec2b6b6cc3e38943c2319bb38da8bb0ac76c0be68efc2b6fdbacb12367cba4ade240bc5a109010fcb16e8d0df65abf826dfd9af846f8e7cdc149330588f34948cc23af9e901a0545fec5b8cbab2a9f20023cc2d8560ccc0db67d66c2ab603b06bcad18080dc6fe4c32640207de985973583646881861d6dc5ec241954fff2bcb40b43f376cd1e4c4349cba03c1d38947fcedf4e6bf866ce70f20bb1e7f951b515125f7512c5981431c6a0235cf8db5312dd53f36d836e6f8dd8444a0316f198136b1c6de36246cebc2d32420de568871f07a2760d2fe601d1d5cdf8b97f001a6a9c9887fe51e316fee0b4c3515b0a3909aa63b372c1a8607010d7d8704d4b62de253cf71884f5c1a861ef18fa8c99e806ead239f3acc1bbad4373d6a8511e4230c50b269509f19d45231187bcca0b22b3ba62693d3ed18cca061887c8486a14fc2a3ad829051370887d426cc81b619354d9b884f6c9e309072f091dad40a7cc3a6563867d40d57488450d709a17361180236f09bcd0d679f51136a302d59a3404008b88d92629a461947f2f508a3ee3ea34e1810f1297b6053c7a18e330c69c8884d439f58d8a29dba34b421c51dda340808338f586a6016b188456c29ce6910a436355d033e86cc26cc4d2d83c11cf9862f6a756d10d4764c2ddfa0960f98a49e8b08a5a694bff846db18cfa5231d38649bbc5a27af2ef93b4f278cd80a7ef4ed6b040662be32bddb151966bcb2cab6760fd505775bffb7f1b1b1d341eaafb3b24aee1f6b5ece2c1a067fac67cc3198f9dde8050276bd2e8e1df20a1379a523a661ffb1f2af31c2ede55b14b72aa34dd86b7dda4a367f98704d626f5f1cafd0bd43b683bc829313469835fefdfd6f71daaaa00dd1da7f6039fe8944cb8efcdfcb9a90e6c6c656d6f65fa5f906bf60c376d55c66c2c4d96b1a9cbfaaed8c8df56998afea824f1310be7f848e6c7577d62c530551cc57e5e7caa8c779913ce55915a55d81c35ce22bad15e580c1deb2bfa52faf71b835d429061d8ead35b55109b64d335e4142c3b242121eb9ebfdb657db5b9baeb9b1860058fee6eb9642b9d54000f5f69b7a14ae6160bd43cb83eef0144642c532fe9dc39e3846a8a091ef1bb7e1104ba171fc19e3de6eca7dfba2f488f32deb4d419beefa787df47fbcce4bbea9b6e5f1ce795125f1cafa06b20ad7117fe1231e7c5cd48aeeac53c4dc52285feb70df6dea2928eb28bcf2d749503ddfb8d528423170aaa96b118bfa7e4c6d3072a81318d4874f46997bc03c427dd0d6a9e543dd0eb50362c6d88469d0c0a54c405227480d466d87e087456dfc63d4b621d97d3af1a9439849c3d4a31633f0c3a236fc0d5dca4840bd54967a02435a7a603c6a3ba96558bfd7b5e052cf4b0d8b5857cc417161a7e80d64d40a0d4b7ef843c840ecb4c70c003d360576efc7d40a50c41bd4b2e0d32de197813f0dea8e0de011006350576450b74458f88746a64a6d98b3551fa86a086bc24c7847ac23ebca95ee10e8670814b0dacf0b9ffa0109884f5d12088d6273372726b1c6eeeb8375b7d6b28cc5b246236363ebf5aaad573a68283b78118851066294dbfb074c5d256ee7cc5c9b0cf35b381414368fac2b7f1cccfda7896b30472598acb170ea82fa3057f8b7558e48449c0daced35c4d9afcd490f5f612e75b98e29e2107bdde76030f479f86c886bd60db77b67fd55c4f9dbd467973a2c0d60e9c1474c5968501600fb716cf8f4d97a7f3b22d9260ae43ad40d534356aa1e50ed4409a84d0070bb69bc3682750c747a39cabf6475ef82d8a0b698084021b58721618c7a721d1bd4e920504a46ea0d6dea9380da0730e50165c4866e12519dec64636ad8945197dad44fd1fab7a8451d78a476090d30ea1bd44e5d03f20c6a216a11b3d02dafe94167001dd3b4dee23972a8c3863ef5894dfd0d18c58fd470890b00c0b5f1d3ec78ae5299a9706a61e9213443026850ad5678d0556a2ef7b7430f0ef5894fad30355cc38d68e8b9f0d775ddd52d777b4f7d4680c8539b5a21b1d1bd47c375f5ac431221d25803bfd55387b8670112b6152265c3970f2362b03c2d0327a433a42a9f2e4d03741004d410d60b70ac3566546eb729565765d9958a720912b90403ca425c7ed467aaf54300916c7969428797d6a54ae1e95aacd40d87a814c0b062039a0414d9d4b10d6c5989521ffe0f9945a0d3576b4cba7c55bfc5cecea60d5e89476d24960390170c750f9b301210c068bd6a91aa81a9c212b2a9833d044478b4f1b7da92278b0537f489439d2ba19678a0ed34fdc3ee39d4496155dbd45e5ab3d493935afbbf6d03fae0ae5248d93149a59e8ea46fa78623243bfe774439fcf436318e21b3a847fc239b3aa9d4c254bca2e5562b3c2d3584e775093b65c39620f3db8738b4a943c27148add4902aa01af18e1af1290c7fa5f7e5261cd64abfc0a04598a9e2d716f5ae246e88f55df38593019425e9ca240131cb5730f71a5dd9d499d7e831247ad626bb5e77eb5262753acaedb85b9712180b91949f25c3751d90682c4871d7c3b486210d48903ad4770d9b32df90e9c295cf7c60e2d4f1f02b105b3c9d556a504ba031a4666050d7819a8da66ae251666f35c85ccaeca1058c071ac7a2d464fb34f442f8939cc422eb3c12d1e40223f21ce86060d5a5871eb548901a3026ac1693513df5718472385048b8ffba1b3196a83934a81950d73124ae603c3e0969e05f3177cb5e390dfcd481278b865e834be65206f614741790142ab6ce6c98d8d0a09e63086ccb0deb59954fa22a898dd9741455bc949bf6ca5008a1fe81e100791eb10cc0cdd5960eaf4dce76ef01f59d7d9f862ec18f5a590862936040472786639b97212056e4d290c01f4a0ac0964b039632eaf8a05bf8fb3e0d429b884fd90a5aaf9b3ddb16c85d0f1403d026b6683d4366120f350234259552b3a3755ac412623610ba0088352b2ca90bcc83c91dc6a713e691260ac0f440ef011d027e78d050e013f8d80715c723e2538c1d3899451df78a6ddd785e3399b77972c68672aaa08f405577d1e8814ba16a7b04c43b0875d76094d9d4352c6a828e05667ee00f198879eada31546ad120301c0a6cd6355cea01f7b20d465d2c007417c22f876126752d183ce2d68aa9c768e0c14f10debe83121c9a309057a345efb8c48155caa86d118f7a010e8ea282eac047482cea5b004e18753de83f3403690e651eb1a86bc32262b0ba2d0a8b8379986558c8fea815c8f67cdc9ec4fa0c511f831f2ef6d870a81d60370c8f7a4210dd45991127459c72b90acd032479c0adfcf12d814cf69247b69eb552ceb4c1dabd7f22a7bb6cf7c8eb8e7c36a218ef6bac150adb23c0d852837a9641813f501b343f505ac300d0e0221de2ee7a0a3282fa7e441d1be83aa8956b2734a80bca60e05213168707cbc6a2cc814a680062cb12f5501709c4953f9c909886433d986be61b2e0d61960234110d6a4241cf803a71e5c0b72f1896ed508fd51e28476ec8d84045a60d308c5a50d0a5369603e16786908b7e2d20119f21a38715661387da4e0acc9e3041d7668815ba588406a2e898ba412c381c057ab0b1a77e988a9efa310d91a55904cd28e651a88f8174b0a8651bd4b23119f406ec9b1f43438e4f1d97fa210d42ea87a211179502c09ecba015681e3b08cbc68971ba3c1c2e923df4d316f39542d7581883b20003075af1f12bb4af7ceac48846c7171e05981ba82b749e403d02f3d31304e6a321e65e30c0af0b1cc72d190c0c5a752f50a30c2039783af140043a340481e930d02f420638118404536831d45e004f41406d5c45801c90601e483edfc61f0e35d1f501b550378089b27d314c6a31a8c287158c3563c540538e2d3d180ea84bb0a404c32ae27c842ccb24cc195b57d69189115e1e31c7ecca3af2f0c9924f2200cf708989a022008fb9c49a330b00c675bc5efdd494b6e0d192e1627769947ddebd860597e6f1673e32a6bc2873e13008a92dd4cd1018a325f92062c515ec1fc58b5002a462c58082516573402ff741eda2814f43947ac2fc16056cf1e55013f4021b27daf2b0023b44e5ccf484f5e5814ae8d94d311b55172c661d80d802294a3c1a3ac4a3a6237e610c956d61773d0b6b0f816b40bdb6504650a363e2db73c54af529aefd80bab08c814cb1f7906802ddbaa2cf0cc8c317bd0c71a8a6704f231b87d5833f7c674e4d4f9893d08aed6111877a010ec566a00787b8f860b856402d1b125c065a1f36046305bdce86d940e4096d4d7ccea9c96274a685d4c5054c4358ff8e87b01eaa8c40d726136377a88355fa822c89d4102c11e222a5a24ded0024917b60208c4b5d14711e115f6306da5f090c57f8fd0075304edb47e2b084ebddb1b026036a7a3a618c863e310f42505b4d90da88a250fc724a460382416a36712e18f07a8b41934e093302a60b0aada713d09c717e71b406306193191681c5671290e00c998d45ad00cc125f2cd958cc3e70b64068a15680de1bd0ac4c462cec3ffa5f8050d0b303941ca450858155a03310a6c973a815103115026720b7855e2156569e8ab8640686309a3160c18005059c6a6e5047386c5137b6d04cb3e7066507c8c36cca0833417b40cfb125625f3b5654ed12ae0dcfb11b838437092a06c4311c2468f4c35ad8a66dd84f271e71c7a0a748d95b8b5e199de65db920bcbd23ef2a1cdb9bc0c4f072b4b82cf566c795a9f0fa3c4d98d0dce67e6a58f08f5857e6913b67de7ac881c2e52c9b9d44c56789590b231a713388098e02c61fc6928120431d049e5a76e352931d391444077023830682666960cd191854319a05d47241a4ba3eb5c0d0163a851383be014c25004181ea944d4ccc27753e644331465d9002ce150dec0306c419a0abd5919d84ae8b117d9531bae6f6a09357426c69880a9d3f47cb94d920dd3dfb80d9d40fa8e5619c1ce2c526626e303c5d6482b4a59e3d0471e6528f4943d33a80b5e8821e6b12170669126f7dab54b12d84fe681405b0da3c211e6cffe92424d6d8a6b695326a11fb28bcb29e4e6cea05c43af2e7f691459d00b28cce3e9b3f66d61cb5d3bb22e1f7715472b9116cd330181bb622d85fb9c7a1da5771c6f6dc60636bcec65efdc39e1b6b01b842d41e218c3367b0487c3c67c0807c8fa0922373dd825947cddc70a0cb62ea6789e411ae94b4d2a9eda552556231b54159738467d6b3e10bb445b0512c50086d103e16e854cdaf12550d5ba851be05fcd641df860f86836b8369888ae810aa034d284545c5470618a2df06554857b88d5dc8ae73d1f5827c11be1d86fea315704c875f3156275831b608e050898036105a7653058bda610056920d52c2f3631ac0e223a8ade33706c2d2801998c350a92426ac568cca8ca3349ea5519517d20face24b2a06b6bebba6d802f380421d3c1132b744609383a12ecd83271e80a5fa4b707e17ceefc08d0d0bb37047119fbc6e85d6381041ee7194f26c14153214a466d620249ade7acb1b3a526e2c898da7896d08f530363b628c58a5018a3130e92b06bae7b66c162fbb73e5de71e3141db3b67b4ebb6fec816c6a8f35d822a4de6e23ea3df1e01007565e27cbeb64210768f3c6862d334f9cd7b07261836cb3d79182f89df022aa39cd1854f570c84c3492ac709f86ae077fb5dfc1248243cb7d4e1bf407e1471982424754216feb7b931658a60c443fb580ba3d9fc002751c629536b2013fc067c33a626bb1b5ebe7069e4e80f2d8950b8ced69e2122f362ce1d244eb3804adaa143f5065901a994344b648434a041300ca5944a85c255082f8278942d28321dc7a7154f0aab3f908ab18f51d50be96e31322ea842efcd526baedd3006321081a8014b041990fe9cc2fb106d347b9cd7c0033002c401d1c848e258c08bbd38f36560c2b35507083784633c2b62943e7b74d417030b416988fddc4664b54f603f19022dc4aa7090da04d7f6ef88a41767ab214c085fe3450a2d1620ca4828a7e7a9bbafb2b4da01f6bbe8a2e68197b0545622a4c118616b3acaed37abdd584eeba10b16932514f6a20260f02a061170cde0078a94b02823bfa8114e2e8c6c6b959eb08cedb78bd83a861c9e9e0696a54f91719d2148049e0511f968ed0cf84d98db3e9b5e624a68bbd0cb4fb5ce17c1486988d9f4eb0eabcef381761a1b1004c2c1b6d2a47d85fa25a51ab98074ba4b9b2074817c2d3c06ce1d906111560e011b55844c3d085bf664bd082756f0f41d612668f69e8a4d4f588452d27125e7d01176297410fc618191fb449ffc0c1b56f831514c2eab729d0dd057002f409814943ed188f2a10d406f057206230c072e81e10614222a3f21fe2ca0f504310bfc01605a407d463689d79c4a6e814019ca2a98f1a2c8869dc10b231c772849b099dc7b82f6be15869087a9e432c34da1d6c873a01ba85988d129dda2e6484014c162660868b2e6a0cc80a0d870a1270a9eb3ff574b12d2ab695d6b50f9830d09185b9670837ac63812504b8c2602f2b044b12d01100ebb743ac07ed5ba0001c062bf1c116bdc22d0d792204442bfc0a24b21874f2e90444854f2dd4257ce1a072c04660e81e300007128de80b0c3d742b38a58158423f0aa03236a4cf17b53d0fe6dd42c71381e10b24a26a456dd933660bbc5ac26c976b04f250688da3ec8197626559a033f92cb589fdba7b3fb58d4d9b04724bc106fd51117dd875e17ffba6c313eed5c10a31186031b031d7054267b8f5ed5ec00210e77ed0e560c70805cf0666a11f1b78932853ff3d9d30d20662750739b4514bdebe510f4ab807c873a8ff3dd107a9611bf68123643f7144fb8ed85feda803a961137b5f114c405c39834525bd80abbb5a8ab8ac903a4358f773e769e2c19a59dfbc5b2f35375c3c0765d8125d36f1d30d0ac97a343d0d801b5a1e720737408b8408bb04988e8147a7c062b2407ddd7ae00154aa005d773e881cc7252e656c4e4d76e0529b8114c2248f801c8299b619f267c7a18c5db99481d0461fd801b5804011e93ef598dcb45bdefa64682cd882ddc3f2148d0d5de2832514404f031a8209cd6274bd012100fd38b8bfa922293c57e9b06d5b90eb419262a2abdaf06f74ab5aa5566a8babe3995b5b6252303087d98ac89c3934e6a7062a2c817de4e1f95c531510bc460e18ca86db90f011833e045cc542ae021fabe4f96d5e9d5e3ce6f322cf8cbb28fefc252a46a81bf8187c85415018d9a48ac6db161ee8e11ee8f6c3b4ab385ddae9763a1158dfc30986a2e74b23eb2ac2aeda4ec0185119c565d8afecd962d8c4ab4cdd11072c5769c422ee52e7eef3a2c13a3315b10873eb9b7b069a4f48c04ab1d1cdf5bdc154210991456fbe814161e67407d3a8fa7f907e3018e600d63df1a9e3136012be05fa30f40c8c0106f387a887e9d81a48a8a0888e2160c28a1271828ea1a8a883dd4060d7fd7dd8151135aad83f228d16204717a3ed9b60d7bac3b5ed80eb3fac7b7b1080f68768129683b4179665de66fcc861018e7fe772436e8a7bd6ed96b52777ac3db961ed75f6ab3db95dedad5dbb21434d7c79e986dfb973c397576ef89d1b3744a3c66a982d23be7a8187b8c0d7c3b4bb0cc9fef6b08d6fd6eb542c8011ffe9776fef7ff73d25e126acb541a58cf878d47d18509fb842ba7cdf72b509a85ff57275c4727594cbd5560596af2ed7f0886d3d8df67f01fa3a979cc0a2541fd25fe51ebec23bde51ca8002873ef017f3fbf98b6dd8dfc35f5067febf019192b73558145ccd69b89a03124da5c96fe56a3e72350c7bda781708b03da80ddd8adf6d6ffc9fc15d9c2c9dd23241a50132f33c0c72818e197669a045ef20962cf44858edc515c89b2d1a3a07cca2204e7c0fe3361d604dcc44bb7cdbb1d3d8c2e01a8236ba4d5cc397dba8a6251c05a683d609c62438f86405f8e5584f13833103a3bd3cb058bead9f4edd4d5bf6d2faaf7692b40875054211f3298f32a946e2a1363c2017c20405443cc1370bfd21b308f37033cda281e90fc192c6285d0cdb309da7139798439bba403560aaa21b0b7e7b14cc2d66a66050dbd41d329388545bb832e33499dee5512137b8c99a8133a6967510d220a00e680a0e3a5f5c625e809d451d61f0a90ea1cfd9d8bd92812a069b5b47ee95a5b8f6497138ed1b8f94c6693e1bd50ee9183d46a6818156e8f765fb30f43a2817ed1f869bfc16cc36b5ed7d9bba7821086b4f9298d43d3071fb0ebd593e61e82126cc3962e88b62725b5e38d4cbc6f36e884b2eb04fa840a47934aac5215296528b60a08d6fbf9109cf33b8784e83517b7ff9e4094cae4a94b6e74efe9866c1f0ee10ff35ecbadf84dd80bab8f5e4301a38c09070e161689a7f80318da6dc07f548485c12c6d444339fd950270ba9691d48773628f101b53da1c48be55f2f7dc32e051f20307a9388583e9ffa86f4f95a4dbd86a8d890cec30023e644dc17c6f9128b3afebe4d430fe8003edbe0d4d8c40d183509cca60d0104b549202491df48229f04c4ff1d928899288a36bb29e6065af77f4416310bf756be77d6231b370becee968189476190865c0303aa301050c65762d501ee883160a06237dc422726306f9b884fe15873900309aa761df81f20b3040645a01c4eab87d36a5bc239e41f3017032e4d64551e09d10bb96902ebd83de6b6a6dc668f2a911e55b4e552437aabffdbca16307c75d87857836e14685328d0e6ef52a02db47789b345977f9a38e81d14fb36818f7eedd0a3014b0d79f4c5140e6ed311116cb8fbb2ead3c3e52722ac5d74ae072cb50c668a5baf4c0fc529137180505ce539c847dcc0f8c75e67bf77dd6da7ba3512afd1588f3f5189ac6f3cd7bb1e4da38a46690ec8ad4d03eb9888e892c670b810b88805c23880af52d246ad87ab689575f8071e840ce591232b7c9aa0c73d50331ed6dd366040e4617d3a48d5df966cba82c70a1bd9531a82f60cf128d6db835c6e2cc4f090b1c168809bb74c44215abe3860e960a8aa933260e818a52882b8187e0542cf62768a9ff811d1c0b4e1af591f18e58585491de7688bbd5acfafb7ca406973aea81fc2643932163c10ffa1735e37e2ccc388b339a38127626e80be7d57042432eaf8d81afcc518b0080b263430c50c89396432f805280a97930dba052c401338380a323cc785d1431e0831dc7133c323e8a1aa271e06be39001dc0bf31e2134ff5f8d4f281e5e03905d359c104abf119607819e052eeeb315b04c44196087747447667c286a9f67cb1fb87b1a902296b7df162113d4c45142d60756e20282ad20c4334454826c6903758a028be4271d036c4e631eadf0c638138c42d4eb319b668478665bb8820183a4e8cc489aa235e440306ccabb9982f00a61a3e4d0c9f5ac4a15e6b6e344652d92a1fa4553ec441014c93ec294da369c98d284da56313f73491ad7e830778ebb65e409cef723a3f4df0d1a26e203493b0d14c421290f07778fe18fbddaebfb455a0e4cdb7d1633e6befdcfa13efb538713042e9ca1e5b73663e4d6c621eb9cd934fcca3e0ca1e7bf084fc6932e159256f3150f6632d8ed29aab65aaf08b07b8a163290ea2ab3a8b27f50f308008f83d2e308cc0c1500222ec3cfc271ec1b8730008ef2b2601deed7be089f29e288ffb29179e28e063f950940fb17c20cafb4df9ceb66e778ff68299a20e60eac42dc5ae2fa9777d9925eac1dc4022731a1549291c0e3e0df1ccc177dd563437984a8ada20e915b27a8d4414719c8aab4f980966eb9f579f89dd9b1bd6d8c108c03fb7b72bb51bcc34feccfaeb892bcbda5f819abf831137787022a0369a2e9eb8dc80b928b85d26cef858d4b34a83fa20cb5d7178c3434303c071a178447c0a2dc2c4c34d22fbc0a7964d2d24d3501e73a6be4f2d17eb05fd151bc5b01f1b4f5878f0e93c9de00270861e088b606cd300581424d5032a7859f23a6c37b46105d8ff1f0cba76e59edf9fbb15b1551685a0a586d8b62fb09ddd27c5449ac3c2bbfddd77687cd3e1d6d70ed4a686232242ec61dd93a7894b2d8bd8182a00146d53138fc6993ec573dd36e845addfb4ec9e626e9dacb138a22d4e01f9c402cbcf4b25a7dc075e071c350c9be38b26c3e7f503c965ebe88d4db1bb8f0aad2774510b171b937891e82df3b40ea6676e4748d5cbb8162dedc1cd96eeea939b8d40ed9ce0043a728fac793066d6950bb2d36b037204da01eb9db9d9aceee30d595b6d0c479a184277b3c235af14230ef19e262e71da9bd814074f8fc22d475625c6aa222a2bb9f841a03a630ce18ac5ca737c3c3c8accca15cef02173801338bfd3ec183293860eb1c489150be3f168e01962f0a0debbde150d1446c7912f83f956357decad8b9c38f4840b45e8800c2ffe569b1bf6667383a0a35204d4382e0d0d980e469da3e55336db2c0dc789810f3b3eb52de0d0aef0cb0dc5196aeb779a19e2903a580e16b51c1a78825fd90e753d81876f3533a07f2efae843cf10c60a605e0cfe7b2d0c83c528d11c1b888b8622fed19168586dfecaa716d81601fc756d8b006415e0665b40f73c68e8364feb4ba08e82b93b76aff0e67cf728983b63f7ca7e9a5886fd5fb8a41f6fc567d6d3894fec237bceccb17325ed9a828f92ca889bc8138786213a50c706533950c6cc53dc5d0f4db9e45b1c2973c31b1bcc9b032ba0eed2756df23ab2b2b9c36ce52eb9369abb4467a42bc2ba418334c76c7b35ecd56a608a8a5c284ae11f8c7a0ae4cd0fdf14abe3896812fb77c6ea04e40f0449854d484c5ce45f327198d04bc14eb10d3084c106b60c46bc237b6801fff640488ba066fcb4481d508dc17378f3f45680097388b9bd0a0cda66e6dc3ab2e7e224433cbbe3923c59e808ed5084ab104603132f677040d1341d6a0576d45648c3d02266ea522f041c5baefb34a1be8b386d814cd7a3b63df768d006883303ab0bbc6088f7404119e72aa096efa71e751c3c0b6bf9f826051a04013187687601c0dca78eeda7065ea46f8002eaedb7cde18690635d39d40d567ad11e9998dd71231ad5ab9258e36e874d22ce0b753a6b11f30a0461b484cc31bbeaa658c49cb3a7939032dba39e1bd9d43431b8ba3e8020f0056bc88aa9c9026aba0135ed8032e65213f523ebfb304f3d60eee28e4bb008dcb943d937a2d9a22cc0db0a3c7fdfa221ca60f8942bc026414c7d2f10be0c3cbd1112cba0bee73c9d3040276889ee9f3e2d059fe4735e878dd91e58f0a16dff2ebc28a680510b4f7f58818d58f3e62e75ac6f41d89059943978dcc8fd6f6000f799c7ce2a213acb34271155ccf9c828a2ec811b1850dd5ec27e6453068650c0c4a108264e72988cb8e2d60e9be0517db412419b0435cb3d005ce395593e0d3c1252db2740c41806071a1e0696a778b62c307c50973c6adae2508bbc3c02d473063684e31b782b54489945ac0397da62a3c4a6b683d72b02daf026a6a1256e675cdbc92ebf730b61e512ed7856d5d7e295821f5ba09f58c380e2d53da69fcaeb0e6c0cfcb79e26b881da18b08125541c50dcbda10822890dea85b8f9044b9d58299a982e352dc3a23e0ccf72f6d7e32b602de106afdc8b2536fc2b5b2f28aab69e70ec07a121af2bf087015e62e6e23d68b81d8cd22b4077b015e2116db193292f51c1eaf1dd1ff85a900be611e66032d8e9a5810aa66d402e58c236e9e820ebe6406b4074cc9e093371db13caa1da1b0686d0f1022cebc0b4c16f8267605c1a0658de814ff80d93338aca71135ce16e7d8748dbf8b2a372dbe5feca3213c7d8f6ee81cea5649d23e786453c712ab43e0a58d64701915e417abbf0571a96207b8bb8ff070296f06af3cd0b88285083d70d7f2f1271eeaae84e1e500f88138bde120fd0e21956297a6d41f70f1c8ad2c322027b25bececd82313c4d0c30f082ab40a0578c0ab3cabaaa2b9bbad601b3e481500c42f1eae05b87fa01f022b07f1c449d27ae7edc5459d856c6cca63686f74eb2b5fa60a03ce515974709c3108387b66e2dd727b286eeeff7e4d4dbe4ed86b922fe04ea678cfae9322451ee3d76b7ac511ff5f1f61426b6add59beb4f13c301d3e0ffed17fc8d785a4532c27968e289286f1810132c2b3775f19ee7a12f23fb47bc48e65cbe0b4fbc048e9a601a78fed8a08113a31f012d6dbc010b23c84c1b532dbc629d3a62fb549cebc70b7718c66d38255edae3e17e3c881e53b874813f8be38fa647c56ffc08eb601c178c70e6e2a61f35436ad96050db211ee3f49b9339781d1765fe3e75839a4d98229600650158506628e2e72c71980eb762d1ffe260781d98c716ba214c71f712de52e78a1b7a9c40b8686c718b11ee64ba21ba9fa13a2bc4f61d8b3a61895b803030cfa12c45e3c873c718a2c08430c71015bc5f4db805988747dcc506b140a78722c0f1d0ad6d8a63b46027e1c1d5265ac6930760f1606a2a9cb826ee59989678f0c4b1641913219f1c796f12a97dbf325a06cfc55a11f568b321e90044dcdc68296e5072a1cb255e5765b9e2d62a74d3a33b1cbd9a0ea00fc3f6a0d73e7eca0bbfc2fa64a7b837e2ff61ef5d9adb46b66ce1bf9271c6173b90efcca183130ee451456876072c9a55701768394499a70f7ffd177bad0448891025d975bafbbbd1516551e2034ce4733fd65ecbe26673029bd2c4605141ff19f4e6ad04a90195f4a324b5b1a21fa4b851c06d71a2b8c3b59862a3278f47ebd6f5d8d975be4e495c73622ff035a80157c1d3a2f7e0c88926212164a4ff3b3598051449da315990fdb63a74fa13404610c8f505a41a8e946d0e484d9dacb6197c75248b18417c08054b401e2c3a897943cdb2c9a64631dd16544b3d237c08dd3726b216f4531ba8aa0d04a6a34e42c5dd158bcc774da85fb6168caf092e890e22216b19d026ac5a8b85eb2dd9b5f0ccb3b587d584f5cbc9ec22e7346629406fe90c7f088d98449788231b24ba471f09b6f19920d780d9a90da933bf578a90d373e45bd3c5de9145125b49ecd0a901e669eaf408b20407cd4c79419cddb26edb93152034582d9890f0e54540e6e3c09a1259f40bd8976780d9677465d2454ee2a7c20008622d880ea2a29ef8210e0cd9ce707f40a605866611c34d49ff4d6b8e1fd639c0bfd07ba18a2d1b3076d5e98d56e7e1b68d5512ef5ac242372f0bf455d22ed249883be3cd460eb99db269603448115fd1b6725d8d4894e916e868a5ec0e7f3d3d7cbfa58c79e55304c971ecce4c543f231d35680b709565fa8a57a288fd595b1347dbd7cd9f8f9b7df7f4b8db4d7e5d3902b155d7f5e8d6f9beaefdd1adedfda523a9df1f4184e186b879e67736c92ff7fcd9e3a5db6b8d5d5f463c98f37c7ef9d3de825feff66586cebd799d2ebd7d9d757eeb329ff3c7aff22c6233e1e3be7c7ddc41a4f9a25c47a754ad6367d562d11f5de8d28b775f54b8255856faf62e99a0ef6e460d94c777cff3fa3f6359758466c2b4bab0a62cf8aaf52c67b22c607b716357c403b110b7a0a8aea56bdca8606605af42c8a77d32c0ed78500ae9ce16f80ade33eae771a5ad64f86ff0e8c9d369dbd72111e85eda720fdb1f133ea4fe022751bcab0658141bc00d148e6108d33a69dfd13d7cdf7d9b74806f54555ee1c9df10ab031fce4f32e6a7098eecd43bb38b107f70604e77b456e3112cc3c64ad9368bc447510b56dc62df8047ff79571c86cde36e168b637a42bfc16e1b9e187662d473d6f11087e5e5a576525705e8c7a04e96959cf5e12ebf5759f8ba81451c7c4c4f7499f37ac43923b91c23a55ade90d9b32dd0efdfd47cb84345c2ed2af5c5caec2f0fe3d838a69c14b59ea25a3496348a6aceb4084709dce8b148d420c94c25aa65173b762c2af79b958033d3b7a80ede06464efdb0ef9a7093a351017c5f077bcb4e9c176a3ef8662ec3e050733f3427c0f36ff559499211296a01ed560f4318f7d981371a5600b80c3cc95b1c8c67355cb55501d70d89644096a1a80a4b41ad45f2f6465af63937cb107dafae4304632f08d9d59cce51ff2a20a54d837e5123a46a39e08e6c99daa98e2301d7a434d6130b5b07eb0b0cb9b867cb2e6f76e3648071106cb8cdd761a52f3450759e07723aa48296d064b3b41c9103859114c01d233949e2ab861dec1a592b8808c90817c9f4af764a15242ae0f6c1f38b492f585c33cc42d12dba400100c65aae6463f1169cc2115ca060392e647f8b60dc85fbd117023fa343eb22b958f55b52d56fd1af202f23c86a2aec5dd75820c0240d966f6d9bc5a87a6a14473a44306a33bcff62491e03c72d7b124ebb362a088c06b860f483e183e536ab393e503f6e887c47f6d940701cfc26fd2a6ff9d6541af98e756b6838ebde69199465a551096ae045a7de6925d7b885f79eb485b5d22149569d3697a5cfda7fba8ed5a4bf5d0aa2638aec75ef31ea7d11bac87162f3d12d206048c04b18e83a17dfcc4dd0a75a52910774b3ce3a073c0a4ce1c6e4949aa95fdb76f3c40847dc78e35b94bf37c95cfc3599190f3f7e1f771d69ad5e8a8ff86755180b51a26ae231fd9da515c984c5722d1655b8b9aac2b1aac2bd5655b1d0d66cec6b7a81cf3ae1997a48347958bac1e76c35f0e4dd8ce075a618f74ebe9a68601eb9f51270eaefaa24abcfeef2259546660dc4df84837e7fda1c38e889807c91c8c3daff32268fb2d445b39d4e012b908a869fa9a90f26bc77f2be4581c1a69cf6d1f4bfc8c991e706653628ff5483ce008497dd77765c2a29fa962ad7df62eaf8356cc5486a8d02ce086fea0cb13fedc3b933de68028b6f0a35a4fe8bd8425e74652bac0fa62c3372217bf12be8fff7ed61c12c2d9f70d99def2bb47cbb9ce1e72131e76a862f0f3ffe1cbefd78bacc5e4359240f41fab8b238b5fdc4cfafa68fa946fa7c0cd2e74fc184c985e7a74e13fe7a2e5d24b3e7e1023566cea8b1fb7767e8063678aa5dfe653f9e74e955328e9ded1c8d9b679e6e8d2de66fbb69735c3ce42d52413a94e79ad67b0fe8ec3348ebe18c648d53012c32e28b956a5818d86c3261aa8e30550edbe3e6cf6ed87cfb32ee5e9a24cedcd2ef5b4ecaf637ddbf5712b91f4f18efcb4f247f7f223fba6f52701fec849fc880a70519ceb793b7cf86ef9931957e62f042973edaa99f93b1b7622eafcd92eb8cc9bf6766fdd77c4ffff1efd11de871f3cf09444aea84179a80dc4edeaf6c4717e096ece069cfb8abb8b1b3008bda093d9df07f1e3b6b3b7c9737518afedb322b1af4bac87d104186ac752b8042964aed1b530fac9d9a4ba7608ba0c01181953b24ccedc86f087adf62f5f62449963446630771db77dc599bff5f8fbbeee9eb7e8aab931e3ea701fee0081fd509f0d8b6a91ce5342bc1682b9121eb292a254029067d8478558f3fdbb308c2302fdbe78641821052d0afc928cb5f936ab2158817f8eaa5480d072412f9fb20bedc91724b7d55c2d2915a734778b8093183d9c3f561562fef49fbbdf8867b1e13a921b8a00be246669c7dd62fdd4ea5e70541117da89c73d43eac500fa25811b2f3febe90c9bd987ee8dcf457df5191de96290fccea805132ca37fc0a687b80c7bcbe0664ec50b6f8844184a2aa7feff31d048891d3832c0e70ae581d3f287abd9b733e7f8f08f45eed857f875e751a0ac3d8bb2f5f9f28d3ed2218a9d2e8e08ae88f84403f203512746a86d22588a8e6d367203982d43a7a29a8c538bf0df12ced4d7fda5b272e1270ce99561dc87a5d90883c7f68ca6ce7efb5ed0a61cb18a1432027477dc0077bdb498d285eb392c3f9076ee93f76db271ac57528efb36ffd6c96a244f3ddf66dd5d9b64c47f07280ae32774b587b6dfeb72f0f8fe70a38352f45f786c2929cfbc06dcaa7a6f6d822b48535ed99c52978af6dfb88b72d12565b694b5d5729f50e42a5612335e8429f8a1f6cabc5af52d641e239a1a59b449250b52dc652b62b0429a8a1c71785dabe474a3e5a49717eeb16212e4b252a8f5cae847a40a69984e1756c6fc5074910033c08239779b4d805ec7441049011bcd497b55deb247664c32198d957a47903f2bae180629e3e327c0bbe02ed8e4177800be2f0d641e3d485a6f5298275ea67d48edfa93d7e5fa5fae9ad6e2345bb75ba1014cf7aac6184cb0baadc7a6b028b6bdf67793b7062c04744c510ab9016dd789acff05c5b71be7a308bf191d9d2961a2771477b36b477df8ebbf1e17b534bf3d2a7639552ee10062d864f8161ba06e3d656fa0476d51a4c7beeb4ef12b5bd23f6de4624ef589fe1c5b94363e82acdc37577c95461cd6932360c0868dfd91ecf629fc0c690e1c3f4c914326e490df7da9cbbf62cdaffb839ec1e59d7d8a34ab4da314bf25d660d104e78201f669d943bdbeb344211a96d3ce8a5f1a057d3df89b7a612e013605f90147d166589ea6d45096128625da3387e5d6d284b4d236020a73db2a2b805147b4b8963d08e0a8de81aba94b69b7e73bcc5476aaefc5a5ad78221dc5d4aa7e0cf3c344da0dd8fc707c2dba2d35d527731dbb4117556072460d09d382d2b870f8a6a05e01ea74bd855a909989f02501ac9eef500b04dfd13d36482ba78c2d0a0b3e33651924509ef395aa567bf7e22a98d07945907fe135a8895c0b48215e6d400812955c5478cb514d7b946f81e1973af6c34cd24277d5adff2bf06e9c3f652f3adc165e28406c20dea136f5c26800a0be501b3e4dc26a1f2d19d4b06a2b60890c9f683afe016b6920b3305294b44721e1d3d95bd0241c4b884eea8293785012417d56bcf542b1d5b2a16095ae8053482207b46c87952e80172967c932b041a4020b98a3c526c327fb105b26cdbefbb36510eccac01af8637139a559995d14d3a3426aa9cd657ac73976b28105e0076bf4976b0956723ef085816528c78ea0d157d9c64d437a1f06084212339d1d80e9c75666a353640ddf4ca119414bbffa43a00ce6d9d821165f76fabba9449d6651f5a42335d2a7c606ee44e32a0bd7ad1214aae73b86fae853b3c93445947d1339392bcf1c505912fcba8fc3debb12426d51224aefa04b1c8283e8e14003ced33119de55d5a35f35d7dd60dcd14581a117a0dfe12bd65e3953a4dd41db0e5e26c1cba28178900de230afc500b2811dd01c0283f70dd7992473d47719b7d8519e29855f4da6b4878a7ae3da157aaa595baecfe733bfef8b2eb1e1ffef98fa61ad0dfc05d7846277f8ae3ad05f011554b1fcf25dcf91792d40bf6eac46b73d7e2d6fa7715575764b0029aa69294ccf6e018bc5debb2e0995c6ae6d9a0cec6adf7bc514ab3ef6c97d7af2fa22142cca99fa7dde1b946d2ee3fbf6fbe7d99797d0274221783e4feef0892dbd98900b0ffdd4e445627c2bd9aeb7a3f37fcafe6ba2af7b1ef0f8fcd7f4acbfd959bccc70dde5d74e89978efa73a74ee4e128cbcb73bd3696fed4284f2e8d66e8148e5193bf87b8a9c17794fffb1fbd7ae7bf8e38f0b381ea5221bec1ca4b41b49d9e9bf19950a18f296475e6a924016164d8a104bd7818726b94b1b273517c39fb4d89d543c81027e43a80b221cea2fc4bb08996b277e0b458f2ab5118b6509da4071d015027f237801fac88f66431b2b06a8a1b3788a47ba71141884781254a673847fe208f525b3445304b6f35e8b1b9d3ae4b253fc7636312e558b4f7b0039d4ac60353fa6343034fa70a545a5df02103ecdf698c58ded5bc012a277047e85541b08488d3f443660b8e44d8250cae4053b60c17b9d45342381f28840d77b35b9b53b2483f603b617357d4993660bc2a09906a6476182a39fe73cb13016c521760273cc92f61e69222c97241e8633a03c806503f443a38c9410cd810c00904bb9226f748ef2d9f0bea1973a4e8abaa1b3fdd4412027d2d30725abea36ce2c200490a1a2903fe83eeaaf987d5b498d2fa212420463fb0ea23245ca79697c9b6a6a7906bd6f9bdab2f2e47976f4d6210887291653a9e80e21c1aa2e529e8129cf3200906cbc74ff3dac26bdd9535bc6696919079958672f1631a16f29326a4b08ab364d87744b4f03c671a353c5232a08d8cbb31deb563a1a64de8da6420957774208db7ef2d2439bacef9bdf6e9204f53c218fd8607fea5a1327d651ab9a4510618ad8ab5d4bc72943bfb8b78ce1b984390d77423d455dffb90d011d88694ac345e39476ec0ca91e33baa1732d9d44cc6820f258bfa31b485187c6461d2aaf1b4c3cef45f1d95e0403e8d95e048cd7b417e93c54073d55e46a752f2a2ff6a24065f3f35ee49b68dfadbdc83edf924e9fd1f775bb4486bae1b84ecb85950b63fbf45d9662322b95037b9e4552b93665555ddc9105d288275c1c2613acb848df3bbd4abf746cf66a9ca396f8ea950eafa8dd5e4b919adde28114f5dfd55c8eda650911728bddcf25445811f52b2876f064d3ccea7717c47d6d8c5d90e820bc1fd22649eed595cdbd3b6fab3a72d06c2fa5b68dd5178910d78d2149ad6ea51734ea90e90c4a602d28fa0bb4e77b46c4c4d969464e53d26d2407a7ffe6ce91eadd96d3127ad2e09a7609d97800204babc306ba3ceb742c21617a420ed26182ea6999ca745ce6698e4675f1cb79967a3d79c8de886aa2ea9171d1f1860feea1d29f4ac07485e479cecf26ec3463e7e333f0ccb038b65e3940e77dfce29f0331662d059b79016b33b7f10bdba1c64ef791e9f98b57cddbaf26f3caabddc5ab98cd7f6c0e4fcfa5a76c60b61050c5c01abbe4c4f9f9ccbec329e1aeb979973e8568dbd845139a7cffca0936ef6081a942e16f39e8911aab9eaa391ff513ed034d8e2c23320566bb04b8f895169c2b63d053dee3147ee7c796d594d027cf74a1c899ce6049222e59e753cee334aab10b6d73fa24b5e8e8be72aa4d9a521921678f90df71e1637ee963d7b26ead2c2fc079a62dd3cc08c0715cb95693baf521d3ee83fde75812e68963e51d6b0ffdb16b29905631fcd1588abd991adf922bf68215d6bce6ca80901c895917ba889a8737f2ee5b4f5a41b590ad37d9e4572fbea9662a51ab5d7df3c228320672334875d402b8d5706c2e08775acfff39f976bb2fdde1c7ef87ede3d7df779c7fdeb8ad653da343ae062b38e1d842ec4122ec858647b792d32a02601e4dabb5f46466782d1ef0d9814eebfd32c77b541227f17e23b54ec627e2edc038569dd86a825e044adc1948d000fe6aab1318dedc6baa8836f432527ee4859e604997df45607935e71c18485e0850223e09f6ebe850af75da7bc95ea2ee63d5c302e37ebd65d5270d07ef3b9efb2b70b2992ae0cad059de3bfcf2d20f7d311b23aa3802c6556aec9294d3677f13d7f18b131e253b5241a2896206a723c8a07023059f03f78cc27affa94835fa6fda6cfea635036509b5c1a23a5dc932621de1f8263684b51e00a2ea795a50a6f4c7d7713ff1d40c5d3cba75ba5f6630becaddc6c6e23a5c1755beca64fc4c8efe028da07fc4cb3fdadb9249eb741f87708ca77d300b69998b6be85ff1d95f7c276ff369d7e4f8399587ce2e48599e41e481aa4cd9dedb65f025d1aa08a12ea15521b274670382034beed9a592dc3fd8beeeafddeefb4c1bd42f07bfd48b78c6920a7fee99d48aeddfd05a791f3fe92b08f9883868e7bbebe2bd5b5f7aa7762acaef7eaa3b138391d976be81efa9965e275de286276a3d397e3d5c80a95f4cdc9be5c2d731b2d3de77e97fdabdeebd294b8d3dbcef3e1b13f3cf7ffea2af2fe9c1dcb52ed37f7b4f411704ca526dbd7c348b60a14b1749d2624dbd1637b2d62c51d1cc0b8ed883f6f5e62750f15302c3fc5c1ac50632b9632f1c37d0b198c357efd8ec9f95692d40b2fa9b9acbcb984bf018fb2314cd9df454323711369ce4a836e0bd8799e091eaed12893c7adf55d3b73bd9efc85fe96c363dc8867c2afacf380909de6d1f60cc906b280713c556c86565f125ea2f55dd5b00d53393e11910c4923aedb6689258045a6c8a2d0e5402429b28322d5d02dad023e14049ea6c70cc56bd47d0482452d233059fb5ef7094872c451d4535df20dce4d4514430578dbcbeba2e4a06f5622dfa453606c920e9400c2956d49fea1913739460575e7f316a4f79a3ae3863bc208dd32e6add7618a60289abc57a6b47b882e79df60848be85d9fb2d03719c1778dd4f9f81348ce296a7ff4c86ddd0a837533d0dcd7adaebc28b5c654be571ed7db78a2ac6d7bf6f3eb9f7b95bd67cbff1e1e777f44a2ba67de37c23efb9ed77f51f79299754856e8df30b09d2b84a6a30478838e0977238f3e85da8895c48333e47d5bf97dc6e5918fac6eeb4a809f08f3fc687efdfffd57df97a98e49618286d68b2970171eb290598d6e1fe9da5f6d7abc02f177191ef3eaeddfdcba2900bb8ea5c1d92c04169d715d404f3cdfcb3fbfd71f36d3b4cf9831498e9d6e9a8c75d111f82941af4513745f86e12802eab410aca8c138e138f246f82161ad8a250f49de3466af6faafc5b7c45b54085fb882886097227d00323889136f136a8125dba88e515f4d905e9dd558f5df1413f6b85276fa6f7a2ed5222e254002a3d786681ba40d8bbe010ce1da7fd28374bbf7179c9d98e8cfaf69f49a1d2e0a1c7adfaba5e0fba83fe34200308883df9ba25f4badf505bb6c109bd2f5c7f4161382b671f41202ea0c13f36371ba8faaffe63bf116317a356c406955d4f7c5dd25c928ca1f83f44e3f5db7e24296be2f12aa17abdd20bef5b7cb4142b43a80924744c583f4216d5e76aeb7e0c6d43ee30f3e8f1d42faf87cb0d1659de47bb5b422f81e109fed2f66e0ee1b832415a1ec2c1e81bf847fae7a09160fa9046d4bd27ff3c58b9754e31678b48213aa73522af5a54ae7a5b7e08845c153ae6253682c003a05ab9ee77ad51aa11fdaae5a2b485558b0908358123468331c29161c449b920319036afb6d8049a6838d4881475aa8e284cefcc522a28b33247305d59af8965ad310a500ca5b80bd463c0805f420f2e5f57d0f17f259bfb746f57115897f0d11f9aa60820173bfc3d02132d317ed2d71357c8a1e8027fc6c61ceb9fb4f9f2d4a2efb1e11a514f32cfc947507d6fb00fd6e30fcc9b9cb57f2b67da2454350feaecf5f7fa2f397716c9d0ae3d76fbbcd632bfe856e61dfbbb5d49c571202ffa4aca677d0f8ab951160ed5164afa4e6a28f83ceeb4f3afe50b99893793acc48c43e7bde49f115b99e30388e60d1f59ec130188036b615f03d2455bc5d1a078f71607b8a04a4d38aee718ebfb84c63cdd93614ea60e8f42a62011bb4ce5100409b86aeb2bafe92d44927665a093a6df4df7921041dda1133be70c6eb6ad13786f3b618f48d38077d3b3c434600af904b04933deb648fed7e6014304755fdba4a81cee975af8270f3e50be7313c0ff1e3eef87547bc57149b23726f019383d3c15f8c09926c76ab333f920ac926293ee2458c971d2c96aa0e583a0f98bd18b0f8ea80b91703e6a701c3e3e612bfad07806e4761ab3d348fd73c5c7de1707d70e7e280f979c09e6d44baafabadd93bee446a7a261d9c30ed44e3747faeba01d0baeb8ed40d113dd6dbf4e9ba9b2114ca75a64b86578463e82eb761a753058fd92db5535b79a7de91d189fde9f9ed5e2e55de86ceb1be708ea5c2eda8c462a6c716d5140fbad5f06c243c0c2cb5937c269323d888ab8e19707820e171121d38749c8eb11a4f6d6e272711cc33bc4f8f1954e3cb19fac230f2159081046d5cdd857cdb8bb80000c8a835aebd78c8f735fe173567f4c0c8455cc99810c5492a44a94475c0a283783537af0ab24d2cc6042aa1dc4906437b0ddabd56bbb7a89d1993fe7bdebf3acbacfe3bef16b0b4f208e48f4eb272658da50ac149edce04e84c2d124a446f5ae99d7d71556d4bd48bde793289d79a0727b96eae3b2688a53d6351f96411f7665d91c76e7b990f98ed32875dfc8cc46a3699cfe5dac801897b33722c52f26ae414b5762623a7c0c689b071bc4e159774b3ac7756678d49d2bf3451611b6a6316ad1c40a8ca55a7a4a83b6cbd0f08aeea216892a4de6dc5d98a8dcb0750767af0dff8ca1c5e04db6cd1a99a993ef7774c57a402bb97c8808dd4a227d36c8f7ae769443feb29f492f401519dfcdc8c0ebc1c4a6474508bd77f177674b52f6dbdacb705331ae2c53d3e764e729e470c952540b6f536cfa3160805bb36a5c1fa1a07dd383cd4556dd49fcc248c0fff3cb4087b346a24ebe6358128406186bd0e6cccc1a0e4324a8e77455c3465008ef3fca1364083471dadb804310b7e045dd185c15e7d42bfa66bf9bc87f1cbeeb1db8e0f07c6263b42bcdee1b96528b6e4d35ef7e87e8d487e24ca6f99417a51c1ce0f36bd42a1d3daf6ad1da8b6179ba2c9578780de5071d938f3ca2b9d5b6b4b5f6a61adeda556e1f4e5f779007a2a9e3e17c9c9a4753fb1fc5ff8a0ba912ce866dd4509361bb5b36246483da3840591ab2a3945e34efb240e85beafca5d0dba5fd6a910f0fcbc1e8fe036ad337d7d2d9dbd6f5236af050d86176a617a717d78a91636e80b975d3f0389a0b09e24e9ca531f03b2911585b4a90e4b24486b049d757563877c193b40f1d782f2a694303add1193d838486f81a5bb0ec08517b9d6aa9bde08de7b94d300af9fc4e1a77f99e91eac9de59c58bcc63b195d97b664cdaec4f69353f7d97c0453e12c059f4ca4491d722bbbced4a6e02fb50e9dc4d216c66bdceaafac0cbdfc38032d316b1caef86eee41ffa29b5ca51afe6bdc5a13f9cffdcb74d0e1252a25713050833d552baa89063597b1932a75466a80b10e00465780b3d0f552eab5ea2e3a2443dd2c64702eaef502d3d27d035c2db6508e0cb4e080b85a83e4419e8ac575c920a600ffa75c0feb79ca5b8f947a2fcefd8db7f36f9ab7b8672fdea1a809d5ea0d0e4db851cead5691d271edeedf58d6f162fa8161533d6fd2bd677df81b97785cd64ffd69464d64cbde9cc32f0e9c3f1ec6f1e19f4c804347c63aed1aa0ea5bc51a100133adc234251a41bc6dd83a4bc2759f81e8568b82f5ce0c8e3ec3aa8368cffac6148f2bf84abeecd4540331261e5f622d4b792b605eb9517536427d62be12d0a979dbc80e48789840786825870de81ec8f9c009d8235308178d3fa6b0794f2f6295a54021c664d161829e30ea27032bf412923925a3098461e92dbbaee9d444de2818f0591da7c62b7fa29eda908c1fbfe47824c273e2f34e687d40ad7aefb1b84159990464dc0e5c92b102a609f20a1b403a99512d5ed9e12c8ee4cf63838ee1439912293c9ef1dec4d24c7759a1197049d069109c8c04a5ce084403ac5822f8add4b82207639488dd23193e0cd6494d07e08829353769b417cc2847fe54501803785da36ef8de035d8fe8fbcddc86e8a258d7a534e565c242a25addaebeb1825e4f25bfce2ec6c5f3f5db9fffbb7afe77f5fc0f583d9366e5d061d6b3dc604995861cfe487199096c57283632e9dc9a6b06c325e1db4b06430b3805fc805bbcfb5c394d8dde4bf510beca770586411edad19b75569b0226db56d09639d1ab9fde3676d1d830d040d1a1e48ce1837f89d933bc16c4645d615975d60fab07538db5830ec168b5e9413caf0bb872912829e18bd38b1b4319806b2ad7be4965f8d3e724ceb054b282a4c0d47512a22c1e1eff9a6861cdf2b674b9cb61e75a5bab5b62ece290c4e65fdbd00ed7ec916feeb56cc5db7b6d1d934e9eb44c83da2c9abfbbf110756b5dbb27bd9d0567d0b1736b0871d6e15a283a5cfbc657fee4b10b2fdce0d3be76e90c805a7464e32de1e6cfc92c9191cc80a0ce9bb0f21275df2c28b02d261bdfc81fafe84e16c94aa615e90da4945d2b865dc5a63800324267ac4906546ab6ff953b8243f1631cbbedd7c7edc8904a31fda680fca4856bd2a7f39f8568137ee8f0b4d9feb5fb72c92de98d75c3151fc87d193a7f55737afa6cfb0564d9826c8f1ffcbd03d6609df1473aed637765155f86152ec8a8da67bdb641ff8aa7cf11a2e21e7fec3b67f2429bebda5d035bf67a28dca6bab0fe26d0222edcf2121c82cdf63ac0576da374d14b3c1796d18f713c6c1f77bb6fe4ba0ad6b8f52dccdf0210e26534ed45b1f35d7c56d9f84eb01a9b726a0c880b10d88680bdbf46a25dd62d5f45fa6e56edcfc5eeaf5204bfacae3dedab59024a43a3a27f0d28d8df060a4e6ee0dade04622d0409ae1dbf7ddfd9febf5fcee18f1fdf20cdc2b012d9fdd4c3ae650b3700e74604b2de80bbdd4921798ccf9220360f5eb3382b4bc16a833e2f4c650ac35550d051372ed24ea00ded1ac145e05f853c5bb850a105214e42021f132dc98aac7b7d51299c587416c90ac2e621988f6848dbb3f5e67de8248795edc18ddf5753a128af5640c08cc985c7ae7e03b80dc1409302e34eec06e84e19c7ea0152f9149ad2e09e6b626e810a5c250ad0362e899ebe7d01dc4b571e78131d03fc14fd44822a02c408fb1fcdf55423480e3504164cfb8e3d18c01e6223fb762e7fee9196007bd8b69f6970fa429045a2a61cff22f082c80a5b2ec4bcea85989763179626a951e685cfda75141ae2c2b649a0393c5014ce3901f6c7c3097050518bc817d48cac012632aac850de9819e8821f85645947d429b50258a29e632b2549acacf592fc28556dfa18062b969677a9a77da434427424da8c54a59b4bdc7b52267aeda410a5af0754e4ab9f01bd7e877b08ee5c90ee296696c8fec38744173535fd91262b921c295a40d3323d975ad14924398cf67776ec534fd5124b072351af2481bb2890b30dd955c0c328fd8670206130ba48234cb10c5243785a1537dd07aa4e24fa75890ab8501d438f7a88dc816b09d460ac7af6a4b6acf04953528f479a9edd247412027a46bd3264877bcac3c13d6d1c3db6ad3f7d4957290d4af6936ff30b12309063419d64e1a44a645160119276037b8395dbfa2d05521e41206167e354d218c05c901ad5501fa91fc35da1f133fb80f595c0af05fa1ed47259f5bdd0230e555181b4533aba566239a0f65c7d6698d620e4a1c27ff1fa13f01954d35bc63a7d60380099485694c33ff7e344dfc3c071a0b84a468b0ae88d3249282837a9cd3753a525bbcb37c59b30f15265eae038294220202ba13df2ab9e24e27f6ebe3d3d6310d723ef2307f1d279a5a6c055a0fce6697e2d46aca7755cbbbf57d6fa733071b865c3ddd4add30efb73f7303e6c37d3f98818779294465d322801848bab4f7536b54f1c769bc7edc0f3b4c0180a83a434ed246090ca780847a8e78ecd9cc15940e22f6e0b8501a4b6d5263ab8d093817a230251940f15eb5b452b0e4181886a500f38183d1c3e4589d0333fcbbe9b2a289b09cc38d54619121a93068f696eefbd1da42f47091402ad687fd0fd024465787766ec0511016475b66865664c08cbf1409d538a24a6918c5eee52cf94a2437d3c4226b3c76edda3d61c27ba1f24b86ddbb12ddb07edd73048af2fb8f3a51c4fbcf08c1ec1b63af4b13d42c46b4b8d2828bd86ae6d0f9d94a1136d4868d5eae8ebd8ced1413cc21dbe49aca6f3deef9179539b3a614bd46b8138b6493fba0b85c8a67a9519c0e0c6ea1b03dca7840208feec6738615af506caa4c6411933814bc3a6ad07ad545463c5a96d84185cb33cf41c0171b203020c27453128938d12f81bf2681962e7479d73835a27d39cad54bf42e1ce51f7aa43eb500423d529c8d9540971d0ed08fa514d5116a1cfa21fb392a6091a600ee8b383b8a4afd8f612f0d19007a2778be085ee07f6d849cdeb207e3b156ad354d46e3dedad658d8a07ed0c2a51882a63c511489c213b7b26ed6902ba2de9ca3007d49628ec156363c4ec29ef65793b3a43ca658a4b3f4cc528849f2869d6848c364102b4b8e94790e93aac120911034ed39af14b9070687f84e9df16c2bccdc675545dd219880557b9e0025e728cb3528616824c53e48c793d3dfd2dc5415d5b204d3498516cb5c70bee45cf43cb23df8f0ecca852c346cac43364c054e4e77c203a4ce7d7464a8dfa6f4efa6a5fe5d3e78a30745a6535c4b224a373d66693708fa8e4ca3c7abd3854d9787107fddd32c88d27513e84dc369f9bde7cda5b3598d51ed199c9fd847a6760e2d15ff3618e4d63f73ae27d068e070c0c7df2c0cecaed233c30bf3e3d83ac39f510a67c2b8ff3a64305433619c77273d0c5e4fcc9490f2ac209a5534dc1e9973d7d0c75259c9e69f76a82ac00798b128c4e036fb2f1e89e942e2a357ea31961acbe68c0cd03226a3d8ea4b82305a82dd46141191a6d8797c8ae09f6a6a916e470ae05d9b6ec01532635920413329930912c32bf80657bd8a883db5ab5cba10782c878349e16b88d9f48a8c19fcd55750647b2bb11e43a87b6cc45b0af4711fe074b534a573ffa9969c0b70ffbfdd7a7a9d2370f7a47e00227bf59e700d72ea9f3bf05f5e3a29ed0416c30f9768116ae43f31a9a493a8f4bd261689ac6c5f0ba0b52b8cf490675664cb4048d7de0407602fd67c850d0d8098c9bef6cbf7bfc732e05bd943155ab42678f71e42e4c0e8002a9099e1536d6551254add984e989870fcf4f8bf9b9b2faa4ed25194b6d7d4b068137e627cd1fa7131bcdbd2f12fc27dd744c3cf3585763fb416c599a84d1d4eb269ff65db9a02278e774f91c7ea262aa0070f153d3f2db0bf86c0062ef0d35c7a548ea6580e92af6780956b88e573e9f855e1df62065657bdd1940e65b751695fff7363aec730155be58b6b563cc73520a2da49dab7808b08be8e45abaf6ff755bdf345fbeff6824a2ded855ebc95e0f283db7c362977a5d9bf3d2ecb934fb9f5b9a49c719bb851aa83ada1ea5330babafbf14b97977ede1c73778906c8a2df7e9ba15eb9906f7d522f425d148a6d128e99804d51a412d1baf3b3c6e7749d2f16d11bab8b6f63a5bf6caa6e6d5fe9fd852e661314bc3c22aa40fef5be73975181a316d1aec7d5c87237cf757aa2929295925e2dc408cb59868aa894b92926fa8a8153011dc886f97db44c62f8ba33f47e3b5fd83bdf7a7bdedf5d8bdae25bde2578d48681e3b3ba8fbbef6f76eb0f65887ce1deda0ff3a7774d76187e5e83b3af571f7fda12974d6d6a08a06d57735c81fede83a6b9c81864d7ec737cf7c2f68b17e97e9d745ff4c472c2d37dfd78b6eea4d687f64be8f7f0063fee7b8391c98faed91df81b0ae6b5bbd37d144a9f6de8605a9998b33e99648d6bade57a976eb100651cf158e9e891d2eddaf1d1bf2f0fbae695d4693c9bbef52235b75967a08ea77664c27870062487c7a1057f525c4b45c54e75dfd51f56e0f00bf34d9f7786fadb8a17182a5893bcc32e6178e9df801065f7b0dde210961d551a9cf5de89122cf5692bad0f5f4b9e819e4a50ee2dc76caadb833d0254fda4008d4e48680c843470df146d2e91ac609c1180b8737c1c7d167a0e300fef9b8650427bf0cd1c44ee206550f76e26063576ee777c3634248368d12255e077e4e7bf07295ba45b30dbd56260b203ce1314579b19671c04b07fad5cc845877c41bcd747dc7674f9f8b79b73ae13329891e3ba1271171ea200b90bac454a2580a5139d4bbe541ac3d4ae0a4684211beeacf16002b1c1ab8eaa3e4a21308c1b922aee9514f6f637cdb11d4363671f43205c25ad80a5d74d45e40202c116d066522f1699090b6d257aa3730128674cf4524ccce91b07806af2d47c2603e554cc119f201a65e744682927b661e2345e93df5c502225d475d88cf6364d06d1f2485ad58c71410c5b45d270ef0918ec2daf87b1d64228789cc7791032b84f1ccb967b9b222f20ba920bf871020f9646cc4aa730dfe9519c720b3734356f5914f921edaa64d923ea250692e810bfab92d6ec109ee06b932f0165b0888071c2515cf24d88c7826c6b59a4c87be6bc195c632d607a2f5b0163d3b2eaaa5ba615e630eec21a2c2d5698991f3a61f915c092d86e90671d8ae6c8b00b768853b023ac84e4616042119af5b812fdb6939fbc6875b241cc5ea8b90f4e12c6c4507b61cc545dd424091862d86a7b46ff3d702a2e792e0c7b49a7576c15ed2f9a4cd6d821883d83c72996c1973c3e477d3467611f4654310ad8480561c48bf5811866c28a6a2df9f529bb8fa8583842dc32bb832c3e1f148d13886b087c60fcb4c9463f6d4b6d09ab51479e7ff83047b6456c68649fa1d631025e8565f4323eee41e1f363a65c2bc31aa0536a2143ef8a3f4765d249d8f1e8ac9eb41928e525d3b799c9f8f9741eab6894b45a8de67dd928e5652998ea9cc949b84304876f3d9c238a9b6e8be8e20212e695efdae45f07ddbe49baa1555253c02ab0cb6972637ef28c015d2da5266dee9dcc1d726c46c19856f5a3939b592ddc8e252909757a31b693aed91c80de2a098d20600bb9fc56c8b98b9d085073f2e467a16e3e794b5e588887acfa09e6d09683cea39e9c1c007be0ec7cc28862c751cb3081976645b03f3ac181f4c198f5c5bcba34cdbbb8d4c91624ee403bf8972344e773b1b068973149a8803c4a85ba045ad8feedbeee99f0f8f7f4d40ac9f3a9f50451c07c8d32178dff1805147176dafadaf2d29d58d63a61201525427ab21617b92ac651cf4862a62d619b7d6815b6103ace2ab49a6a8bf9e4c39b4da505d7c9d1bbce484533dcd34d9b8809ebc6e2ba925f0c10b4ffe6cbfd60e5c2159ebc5324d061d66a4198a63fe246031676657f576d0e4b593e2757776d89edd797ff6b1e33d399666658af4786cf76e7064f8ec8349929c51d30ffe86de0f7856d411336eedc4c79513eb0d00e34eef5b7f9ef652bcf103fa9bdcf07a8468ab7a3fb5eed375c350376fc1bd03d72ae506b2d6f142a169e7074fba73f04357e46ae1ab69679df61609686fb7c8dd26ca7b96697cd1a0eb0ee92e07d94b8ac6f6038830b9d09323b124fc4f288d001deee9a6b1bb90c54eb890ba487abd03c1d03c4722a3877f3e6ebe0f671a64b2ae7650042808a3e81c2c00b6542f35ab97aa4d9b9201a650dd829f02576b0726d2e0ef80ce556b62e5a582da147296c022b5b8909d19560f330dab996858e7959871c627408846d7c6adea84407558c58448ea87603d5435f927a6770856783d7d620281f756a723f1dd89e209fa3c7c6ea0cff9dd8729c80a17cb1296913baa3e7a370a981352fdf45c8d00947498c1b67163c378432e6bb4a883aa790bf139d0009087be3dbc2e1e83517a4ef847b9780b16549a7e3afcfc878799ec75ae2dcb82d23279a5b0ac786a92c5c4f78dd3352eae8cabb702aecc491ab3c9105ed307b046074ed2088bada64f0575d4656632c1b4d9f6062271179b2522edbdc97ab07844dda5a6ae51d562ae24d7ae49a10c464222a673e75a9c4ed75cefba20c98e9039b750a8fa10f5e048dd742b8590c24540e182f8d225f3203edfbe1ebfbd417b76f9d65bef9f79c5c07354b988bf36894e734ba46c7833f4fb76d8795d6fd2ccd9755878dde17587d7df885afb5f7ec34d0ec5c1ffe2eb6ff55e1d2c920e7e1deeebe08ffeb4efbbb80ef7817f4413d7f5f295da5ee132fffaa59bf95e7a638f69c84b4c68cdc37d112f4af775dd83ba2c9a7e5d8f79c84b21a26a6cba8ec5dc57fd446bc6c38fefddc3efffb1db3e1d5afcea5d3a6b335976eafc5a0f621790438ddcc8cb01cf44fd6f485b3da5f445425063170fcf79cd4d5dc7ad3ea55f8b7aa9da852e1cf88b095dc04560ee072e9b60c281ab28e83bb4873fd4f0f9ee775fbadf378f2f0055d72ac937514d2fab454f7b6fae8591af186e2f2ff132267ada3bf3d6127a43c5ac760bd8ff8fe8509df6ddd27ddcd4b2aa0b38f861f36ddab4ae6afda7444b2606b35a8955ddaec354b007c27f35e1b229700347c9a50b52c2ca3a2a28e351cd626726515d4a408212251d21ec20b698f2c69e866aa80a16f52e8a2d9fce123dd15cd719106235b9a06a80dc45e89dabbfda873bd894eaedad9c5a76599ba0168a514bf51a4037a97806f16a3949c8a337516d47e92d8414c07467e2cc23c3bc814528526d0e6d35e2800c9cf444bab29c0f335e47a2fbf2f0cf56a61e243b93a520070709108087d426800e4feebcd4089cb545919da950433789e77790c63e952dbd16f0cb4d2a3c1eee0488478d4508f7a8e733e095b0c4001586d50a3a45002f035a5e5845a7ae72915490ced2270a5876d511829f6b187e084e6fd36749b00d812f4f5e227d9a1e1ef224de837894247f0cc0551bb585d2acd2afff0e10e7e773da2df7595dfa5828bd1b41016527c570242a62660d25d0cc7d9eb43abd3bf7f9b8fbe36932e77ab57f2afadcc175eabc3890f346f4b776fc2a4b2990644c6a1a9944ac7a849ca4dae7e020aa905b7612cada4a5c69a36303906190e26ffa5bc19d9541ef7844452bfcb6a0866e8ec0bae7482930d2e1b9a47657eb49e0751d5c63a09760c6305e9aa6d173d300b1ce8c6aad910f0531a71c8988e7fbd1ee38e86c7054f20ac45b4387d236ac38d4d72b2694764ee06f81926b9e56147aab629eea4ba59ebbfcf1eb9fc3d334cff530ce885e43490aba72a4f0d7a6a8779e570804d6acb6b6ce682c0cd44b6ca7e910b0302843a6236574a4b02e1a74a185d3aa14b21df755d785576fdeb1300344762e08d84075281d6e59aa437748a2b4b32d5d5b2244e5f40d68ad9671606aae1462ae33f228582424bfeea9258d4ae5d2f4087adfc0ebac42c894fd635411563555a93b2ada3bcc13849cb04c607f9b17ebe2371b012631ecde73c7fff83e916080e9c942273030084dcb9db5886ad887422df9d6764263db89d03cccde2316c47a908e851c6c3ca9c0223df53ef2265c941cee7422c578afaba2186d74ab634d124dff5b345c2a56e23149c2295b3a0278e840a9d30e9226bfe2f24b59f422e0d2443dadf55b9d117aa1e61826757c75dbab7185f960438b4e03e3a993c258b563fa8644f0a83908e71a157442d0a9dce646a773e3d861dba4c65bea9a470b07ce62be0fbbcd97497b61a9604a8dd29b87f69590ce4546b60ee5ca3839dc12a2c03c408bba876fbb6901f609e89c3e10c24f9163c0f21155477900149e43e1ec2518c393c13db5321ddf30b738d3b26eb6479d2083951cee6d5adb785f10e23d7dce948549cf7a22acddb50170f5ae2b90bac13b9ef15785abeab7ab37f18bc272d73cfdf3615a2536432bdeb702723dae585315c8446059ac82e204c0cb431d3c667702c2a06f943550d243c7aa5f7ac04aa9088c8056286f59ed5f10d8f70929ab186699cbf6a4a58ca545511459fe21ad195917c4907a2468bb30e01f5afca3325c1f62435527a2387d8bf686b8613183fe684e340354db8b37675e10247f6196ddf2b872ac537518513b28de29d81e9834b299152616653b7d644c26a386a448ce03d6ccf67cc5e25bbf1d508a91488d5013b3552e62830a09b5eec9f15622e5cce1af734f85ab2605473be28d6a8e40f72ba24fbd2454bb05f14ea24eea5c994f442a2be0c0411ed093b32161d40bc5b53934196a8e363203e4788e3989558d7e64c59245ed909ef0216e199e0f33ad45cc12dc495dcda9123b34b0c819a292cce5f467355be30e9b90269098bcb7a77d32fddf72a1cfcec4211cddda1181a0ebe3b07b6adb06d1f36165038de7ec8cb5027acb62fadf2cf08e925bee026f057807602fa6212ab9eb105faf6a30bb090c3587008797fbdf353ffbb1bbda37166a60d6d7a81c73c57d87e9073625c0d460ef20709a717e44987aa61877082459cca669e580a023d8491a2b00a023355c6dd0839d25aae139e981426984802cb0e3391221f3db7a9deacb007af435428ec9e1302cea6ef5c5abe9d57eb3920aad30ddb952e8bcd0b5719b20ae4f863fb9c8bd147018ba95e5f9d923a10ca3b19fbecd489f92f42883812f55c35afa3e6ca557173010fa5093f43a150254ddbc5864b1b214f14d06d64b814c62cc7ee5a4cf1016f104977b54f2f4ea081a1bb75e32fd9de2208a91ba2029e8296f43e892941824eae65afbd878a7734a522834999cb6563799a83744878b4585417ae4ed748f4170b8146dadae69750cfbb46d6fd03be6f947f69a389d108f4fddef8f0f7f353ab1aca35fa4e43b62ee25c6a9fae593d43ee9bf96c648261186d1ea5a705eda3a4c880618caab44515f4fa90ed0913a101ee8f070687c1b9a09ab61e771596355a37242e8f6b298e1f289694ca8cc8b350aca173847a847804464c06cd71957c20843d049462190361154db369904caed824762d41a446d42a8cdb1d2d3347d57c8051450a25847807221eedf012dedf44cf04c2911bf613c01a359ed39e6a7597d81cadc029fbca8130334e00c4c201eb0a516f44c05dbf1d64b9b25005b7781bb9383c048d1e3a8b692cf9cd56d74a8bd3e17a458623b5831381540d536591a5ca9b7ad888c001b3d80a7e9f3d4fdf9f8f5cb145aec87789fd7fdd19ff6b673833fdab5bd2fa7bd0d5d1cba70f4435c2035dbf7c60d9d47ccd2eab90121b2fba5a02c227857d583c7ceaf7b488c757908f77e9d10085547545f4a537bdcd1aef3114a27c62dd5ddbba18b8ca106bd93f657174d3f84fb8c0b71077bda6fbe4fb4251f0a625adbe55735fdafb355a73d08413e3d2360356465dd42b5bc678234a28ecbb77c2dfd31db124b1873d238c138aa98cdb512bd1afd0ab4ebe4108783ac8e4bcfe7f8277eadf815590fd80f19688cd814d91ba6a3550ff549625a459e85ba8da8e1698a44036726792cfd0abc3352b53828d4a204c99211c8fd242fc9bdbcf7a49739d1d3061078cad8a8ad3405565e045a5e3a945d7bef2ca482511dbfff4afadd1aeb757635453bc4c89244477408512af0a893939aef2a98720936b48ed2cd81fc4f3433273e2db82a7d95e8eec15f6bdd7d91c2a43bac63ea5a150946ed3f0a8eba043b2d5498f5a910fe52599acf4afe5826aa032e4757baa6ed7eaee6778d95521f3df27911a56db9b9d595057b4da01d36464f045013a3161b48bd280ea6f7c49ed6aa1f81db63ab0aaad02d635d3db2c401f182501ab61ea46688ac398268a4b6105815e70efa3450eb12eb161814e064625487a254609d507d9d1d4323000cf62470c391de54107422ec1ebbfde6dbe6cfdd7ef76da6b88904ebaaf5b8ef4d6a7f1dbb59a3102f96d3de7505e995965d31679919545fce21f5c9893bfb70da8d7354dd1a1b209f68ddd142efb8f3eb387fa7070ab7fda513f8eb9fc3f8f5cfe189dc7616f66b9f4707ba2572a79a0022e93bdb03af3576a0a20e7cb16bc567415da1209e82a652b36e9557ca487e24a36ae749691622b524fc76c6033a4e3f3db8dc05b3d78516f81e4e5abf947e90defe86b7c3c24f0b3908e9a734c405bf2b3ae2f0f4f0f82f2ee6058e9d2598fd5b4c69d5648975f1f0eafc264b8d26cff8854e4d82bc94b47c9d6de72d469b1856d0e477928b01e00f86fb96785403344f55a30c3b2b4443136a456da7b657a286f4163e9b6b4c2dbee88903f9e44550eb62086721c73e45d4712298c95880a916ceb5a376a59349ed619420c3404ea6f126074ea2793bd5617ca0209c33b6bf763bfcb18394e83576fed8c5bb62c248449985a2a0a3709e893a88b7035412eb5d619dc1aab0ecc0343c2e39ed9e572264b32008faac12411de831913ce963527fdc8e1e1ebf9e1ebe3d6dc617d9c360e2027cff2a7bb8405b704d21f5d92ed21fbd2ed3bb108ddbdb60d27bbe6db0efc8169ef65d32f15d97bbaa7e5cf0a05fedca6e73d8728337fea64ae6cd0c294a1dae47e3fd1f47dffd420e5607f05274ecc32d78b57fbeeca60e8abf9626fe5c4cbdfdf95bfd07beb670fbf3b7cb60a39eca379b7fabf75e76d097af87a7c7afbfff78fafad0c8e717c4c1afc5e56e126ce969f8eb17e9a2710b01a3ab7cf942d5d1d5e681bbfefaa5fbf663fffbeeb1dd673ce6c1bafbb886e1a3e6c9e4d134bf054ce8c4e1b1a478ed5ed61f838a1f713196219ffef17ffef1394b35b69700187a20b154098db6c8d33c554bd38111d753011bb41bfdc4a04113da330715d3cc80db0a191abe394e585eb02d9187849fa717e31ae103416796fc2aa0b57567e315216e48ef1d81dfefd1b0be1114f574329aabdd3e7911ad6efc4ec07893e137964e1a0354287c352313c13347bf524d57dfd466036f13fc11b15c566e342b1cc53e8da48b70c724291f5ba9410bdb8081d546f2912035d48356839066d635541492a87bd26a367cab768824daedcbc4c5019a8e985062c0eb655c8f74a0183db0a1d944c3ca4b8e87e6ddb407f040f676e294b1e466880ec8e434dc2a8abd14c2bcae54c405eaaf5c006b61bff973d73d3e3c6d9e7617a9764f3d9458270adf0f63039d712b028ed5b96901e88262e60fdaaa23e99eeada5e89775ce16e2e7692b858e91ee9f237eb1f3902753b0facc689f3fffc93f456fa10d1dd4b0c07d7320957f0c2456bc09a24dedf6563dd8801719d87c792f27d1df23188f7d743744ecd47caaf52827a95c9d41abd29246c2daf57a5be8fd6dcb36a9a14173088e35bddfd42ac0544bb6f51379e3e5b27d1a809f55383124d5ea7bf7b50a0637f7354beeebf3f30ec0f6c357cc877c8d6876e41b0bfbb74cb0ac8436f21add0af20d4754bd6f6c5400613d0430b7c9d4754f1def41cae4a6d17e53f964ed8afdf7e7ff8cf895c1b75032d4d096d32db21755d9d3e0e9dedb7336e21231e52d5dfbbc3ae9925c46394f82e652409f16efe460aa33813c52f89880f5d5aca4b59a961c46885a1482a23830c43a7871157a3de5b4775f9a64793247820f1fb8aea25d75316ccbb20be86bba20312d65e52ba03e4a5acafb9a0ed9024c6bc95547d2b28012d17f874f4f0cf3e8d6271c8f58e8cfe366c9c4438d1314db07149ae6599eea3f4b1dcd9a4dd98ee27efe77c3e2cd04d6b2fa6d1e9e91ca4009eea11a6d2efa8606d7183d71b3eed2bd4b8dc76524c01fc293aa2c7785e83bdd166289638298823f8a39384b65cbd058c71accc1326918174b10ddd3e416ef470d7c798ef3d6385364b2d9f24a6a4ff5a46a7985637e56dfb48fbd490a4da8bd1fc73f7d006d2076bdc2768b8c573b9427ac7e8e54d84665a9c95d37a03b64357fed69ef7c19ef61e42724e6c882ca388d223ece7c5f5d840e3203ec4517295b295be5579b65ff4e1288ec94304654b6cd69b3e0e6a4ea110707ab98a6b2f1e257a3eef584dea507416744fc6868d8ab0f6e85cbc8f2ca9b481f1526a82f6ed4d68ab3f7652723cedf58e292b10c12e0743577bad872188a07c9c5476503b19a76707019cc3f3ee927e020fed89a9d03276ed596d11b5936c82311b3758bd7d9d954dd577195b4dddcb57a782d667cff113a899bf7ebf01c71c8c9e10787bbc1518e1ad869d15cf7126ad9dda8b970e8c42453ca423df679e7784bea207aae96f63be2f90e2e68c1457a79f52bb71a6d2888d4b430785463f68d6b09a502a6b2f8675ba0f4e25bc8a7a78b4d9c608f33cea14bbf7c2fc68626280b5cc6a8247e4e862abd8610d6b6c04c11185a5e56262666607c4b9b9ceb5b5c51214c33a6b9d616123c965fd372368f44402691f27a7276d1bcab7e3790a1fd5cc9f96195aaacb0c2ffa91cde8892de1ed92d2d99159cf734e382ec9a06e5dc33debc4b67d6c0bc8c2e9438ff67123b64ffa6f9e8b7d7bb3457e699a6fedd9416c199b1e37c8239108f0d3c402c60857062b728436a5f33a0c336bb2f7fa59beaec38bf51147e085b2de14c6a0fda3ea488ef4d130747a55aa67f132982db660300bd89f037718bcabc702c054e66722fbbcfd42e1e076dd4621ec0fd2835ab65167075df1bc592e9799cbd0b2fabe8ff74e6744dfae5c99bed1293188ade771286de6a1ec3fdeab05c072fec87565a77538e0cb460e77dfcaa8dd069b675f2e08a8b9e75c3e8bfbd1fe74c84cc5387114c4d6e1e8d6e997798f9efed4c741929ef6de41eaf16212e38a39425ed2b59f97af4dbb69d7862a368c19b8182092ec907977f1ecc3812920e3738ddf31b7c171899ca4fa3c38b1e1d5f2d9b686e987c799c49790fa1673f06d09f9a0bd3d752626846d235cf4d340eb3937484067cddcea816ba0879b1da78b631574e2496b98dbe40ad3232ae207714567346eedbc4c7d5b59de4ddd5fdbff8dfc53574dae1138b6be69576288ce0f765a3c8e43a54f5d2d31eba66588784569641fe437d6870219a1a978c39df95c47f11966ecc4281f58246ecf5c19e4f4b201479607e9a82e72ebf5dfd402e26db61da7feb4a597785eae478cd080b77ef2620d6955492b47d2ac44dcb71e0c06c5bbae21f0491d817691fb1e0ff5a8ddbe9d187523d9b1f9120ab2fbb6bba1fda4ce00012b57f5b425d4e93590b6689bbdb83c1d0376da7ff5ecc5b9132756086e535e9bd77650af53c74e16052790d7759f02e24871aae88ccf7e0433195a25365b883bfe007ca8f5138f3a4c297197f62539919bd79e7c356ea3e3690d7fb6d56a4330ee6d2fe11e204c02a3b03283f41e8cea91f968b0b6808f859cb5bd2f62a3ce157079902c3520259fd56a0596c9cfeec34ca4a28b85fcc2901006d5bc3ab9c1cd222e4932eaef4bc8fadb4cd8da561e285bb3fd1bed5ff51caafab4ea2964891e2823c4e55c86ef8dcc1d588733be3f59497643db7f5a08013bd7c84a3ad752f98c48820ca993d00eab1959e42e438c8c9e92bbdd914d84eb8accb78e84ba213431025ea470236df0245ef20cca56830ce7de545fccfa76fd917f2b02f49eb13de8fdb67cab6975eb91dc00409dcc8e979bf0b081f43853e232338cc91d86e701a10f12c2b16d6e919ba465f02813bd61e7fda8d1e934ee23723eb986e61ddb80b980581bd43f6bd85aca55904502887f9409a01cc5a2ab513905347f7be5b722091e8ed15ff4deb0fdb85631e0009e800885bb58693fbe7fd93c35fd1fb15867bdf3863fa7b2ea772fb2cb709643354706fbb6151f51b58ec22d44c643fc37f8d9512c18ebd2a6d1ecc29248867fd1af48edeeff78e80e5ffffcf62b8c1b9fb3f1833bba75bef794ec592794f3dee775ba4f833fa6c11ea78deddbeeb1fb8f87afdf9ae78c315a45a8eb0720ab92583c968314e3399a26008b1dc575d640143501cf554cdfa1c6b58b5d3ce0d1c42e3648899059230969ba6b8262fdca0b05f48bd79b345542c22fe5a0539620469da05e6a5939490dab1901ed37e560d168b42d187dd3e97331014847a671c0ac19d87c6b9cc1446e4920f1c675e1d08976a1ed9cba4fbe03371b6b1ec5996858aeabb70206081240e881af77de09f06dc82439bd86c0a7ef82e4765d78c3faf716615158ea869f3cedb9fa7bb795ec4dd3c640a95774fc4d6fe980b2b3c653d19edb9266cbf2ceb543f90bdfaf97f7f8f6f614237a871dc39dd1d4a1094acde09fc30cfa413ee2120674980140ebca18f11912c460638b46ceddd39e3a4c17bfe002fc7bf147b8ada7dde361374b00d91ef89aca7d298344de499454577ad44113048067e38d1a40b78ab7b7a487b6049ce9eca7cc6f0e4d91a548d2f18e7cb859e6dd05b0c814d42654984eada0033faf982a0e133777e7a7e85c02fd9dbe7dc5e2335d46ba486b20478cd7dbe903e66061ba03716386dd52d30c25d958cc9d147264e40a220c145c785dca3ab5f8cc7692378afc147e9a89a97366533d9c393b5bc2e37bb7f9f2e5717798eaea9da4b48aa4be681bd88124d4c67711450e3d49589ca9bc7c41ad9ac522d48f63737bb1a71f16b83ecf3bb4f68044dd04cb310ef6d88501d40ee0b9ecfcd0493c7d76a60ef62a0537a17b2e4e80eb44dcb17b9932810e1ebf2baeb1af7f3d1c7eecb8a35fc8d75973d6b6e321601332d79f0897a2c09ddbf0af897f1c90e10b4067dff975be0f833bb6c0b67e57b71d1f0e2dac5dc5d524b657b7f3197d4b876c8324049e6bc9ede744eed10a62cf6d4964088f6a27f701f1aa3ab98b55ac831f345a0940f5867879a75323101e8cdee94adb3c93bcb69d64b89a35dc55fd55cf809a3653013a28a120251b6c18f50d7893ae4b9083a43217beb7b7e267bc03551e40f176e11b8bb8eac113f176a77e6b64153aa1529180a0d96c94910fb18794aeeda480da0f04419e2a36457b34d4bc3977691497f143172da87ea23d67d66ac2a74213d507e3223001ed2b7a77d9c5e756ddbc9dbdedd2558eefdebebaa68e173c208bb9697b84dffc72a91c2e8ca47049e03d2f4c5d184f9bf1eb96b3b49840bae0e56307f6c6d2c1324861f5412123ebe27bc26bd71d3a29a39e9504d9aa25d43d6d7e6fe293369a3874fe1a55b694407ec981315c6b4c2e6079ae4931d4e4eef42c4df761403437ad130a2e017d0d8347ad185e89f7997feaa61374c0837ef0b42fa61f3a7f44b5c30404f6f7057ffde3fffe9fbf76c0a15a6bfa55e1a197780c261361a1c3f50059941a604e72bc438634bca5e18792939b1cc62fb3a91f14ccbe4b2022d06f803954fc560aada51c5a63a746df265d29b3c6cb54b1991a88a611daba8905b36b91c256dfd914b7d522b01b2f3d2cb2de4e4907145f52c3c3b67ff39556457a3db643344597be07ab18310ee67cde1fce07ebcb73f5afddbfbadf37dbbf0edf37db799a3a64cfaf852c47355957629183cd609c02e8b92c003860ed5c4bed5ea7dcafb3c57b64b2415076ad23db5d083cf606cce005e4513d2b3aa9af33c1511692e1ac11b4cc11c66ab0e00916bea95a6b51ee5e9f11a2178aa4fb0e93b15bfab65942f7ce5a3476b4b0d75d9dfb7ffbb0df6fbe7d995428ea8092687bcd5f7eb8c0ad5c88ad1cad6ec88b7201ad5c201cce34f583ee066141b3e5e23d17dfd918b16fd2dd3fa7aeefd24749fd41befd1374f71f16a8d84713d6f93ef324f31f57ab380fd9b7a7c78771e22001ea46d747e80200d5943306a45a2d337b05a90e6601f4f10c523d0bbc1aff33906a6de597ddb87b9a56353938b088bbf8e999f1025636b7740c5d0bccd5853209574738e6efdf7621d8b2a0127db1ba131777f8d9c51d3eb2b813d676e34414ffd1a59d5f59d93bf525676d9205f1e7b6ac2e76e575a00e71d6cdd57e1862e7cd8bda941bcaf96fc92e041e8d6bdb5f538ebd02a3c54d1fb69befbb86a3bd06efe3fed0d1e5833acb688f5fdf64c35fe8e49738a1d33e7751ead17d8a26367bd78bd57dd76d25e87af3f85120cb55a15d015f26a342dbe42e23281b5d872a143521bad425390ffcc3f719336dad091f5690bc84cd075386ce4bf077916899c002e44f5273d47f674eadb7c496821f23859ea39d89c47576a18a4c4a9478b3a9f3fd1d86af332cf4d9c6c2ddcfcdbb1f2bef17cc8805e9108f30d2db4543f7755802875e6d7f4f9bdf67507f7f5e57e5e3ebeace6997d5db7c6fe916ffe12478af76f18736f3b60add5b025897e22f2fb4bd2df7a96b2a4ebba0f97fa6e2044d5c7dab1e413d45e8877b4c8206dc2eba6d4e9be7e226936d2b57d2d573ffd2dd799312e7af6f0ffffcd61d77c3d7edd9bdf2cf7df21e5100f5c9efac33516249238e021e08cfc9ed261f3f007afcf278c4cbfde83b7f4162a7df78da77523295ab41fc8a1c08a0e1de7af17d45802f82efc0da20b977f7b61f3aa9b5acad5397572722d4d426b43d343301e653c72053ba1a0b16e5d36441b0ee9303aecccde8320b52bc60d29aec376912c428e07db1236307c9afbce40a8a70a77b9b53832e18bfce92cbaa8877a09fa8a602b9e0601e6c2527263a4242f7a93f57b2e43c4a09a1d31f7081503600d950d0afeb1d54feb902f41eca863da2f4d9d13cda42a2197a90bdcffaeac56f12c1cf8e12c8ac8b17bc5409d4513e8f9de4c41d27af29e9190a12b3a548701e8fd5d783f89af497f6f7203ec73b0be2c0de0749855461c1a3ba90e1ba14b3f87211d1f6c1cf84a63dabb45e7bcf7dc574404987f68eba91399e3e47e991b65bab07ede8418f9bdf77633b2cde69872d815d47faa2c8d2b8fb3094a35bfba31df2d10ee1184efbce77f13ee8c13f348d373fd8febeeabbd88e7f35e62b562c92e5cc92542cda4e4a9c0428badcb5f4a15d816ed083940a1904538c3f90cf38a140bb61b7e0ba66134cfb9c38f0a03b7892a8972f07b00d153d9fca04f8b2a67da69d57c063783049e0da07e476fb0406178b16e2436c203f443c69845474bb93f986a1d0a39d19a4d411b1c26d63dd70d00307c0e430674f91081dd51888ba5114fd3717e120cc865275e90b763ef02acef42d60261a3bf01060bf72fa6ffe3818a12d11dafd7656b9665c10edb82bc6c238a12c794f686c6892bb2c256980cb6b424c5f9b8e778c1fbed72dc5b61336e3889fa5be2ca2457448e26b2dafa4ac09d12449f6ca0b512b7c91c8f3dfdf6e4e86871f8d2a8939bf4bca0b12aa0355dc54d049b222d57eb2d01eb3170a6428dbaf12d759aa5f35ca99a4a75dd5e541fab6003991da18c58204bd62c572db0a958f6d6c0ba8136ee760f46a3c47aea01e7c6c701b97b7e2a10712e07852a7e25582f4f9ceb660baa033377df0ceeb128ae2caaab9b728dbf159cd4c138dd4c68d5975f11ececcf38db5005a2954e00961940ac58e4e98d8c7c2c503bc8aab2fc7298d8f677ebb75f3d75bfd1eebde2624d9bed2594d187eb9b3a401ed3398210d082eacc4c152b60a7075dbd8367002c617dd8bf85f261b2309263051b08156bbc5907240a112f2f2e32fe8eb3923bbcd8fa787c98bac72291b9058e71e1c2bbaab7abc5e62ed9cf4f59303b5adbb24b84d26487c5541a0899983de12bac9e1ae08a876fdb1f3e2b652409d478e91c63452bd797ebddf9281d784cb55cf8ecce76e3b7a71779e8518a0a402fc8e52e14412c660de21724082c08621a4dfaadd9075e69651973e485f96fa010c6671fbba7201785e1a47265b7497056426599bbf859c8c732463e9e609f1fa05abef9858875dcf7e439f8e805d683b1bce8682349e247b60485abae6e244f97d338e0f93df1998ab754dea08029f49fa7a679d047568c29670e784da4a75fe20773f6d8db8bb9e459b56c248060a49a8fb03416846223793feea1d9b4c8c9c3b7d20672c78537ac038eaca5a78dc80965971e0a72201906f9e58032660d9ad75235d259d56905489fa3c92d78bb7ec516e23410ddf023a10086ae899ff4e410dec5380c7920e48af19b5bd69e5292e5f93013f755403e8cddb7538c2f545c0422cd40adfc1b3b4fd89d1796d5773afee6a0bf73bce6ddf629d7a56cf94d8918cec431375fbf571f6db02155121b901ee9ec46a9e0c501e186b1b9f293825c1ee8cbcf3b351d3cf190ae090f729b37ada36925b52f2c2ddff04c785ee4bdb0d8ae95789dc2649208092280107c7cc27342c6bb3c8a0eb574172032ff9649c4178efda60d04f0a7088204fcf6892b76811101fbd5ff1db9814470b0a7366913a2cc452a2b5621db4f893e4e9d314f3af8436fa8edff47c240c7ac6687f92c3dd65d0af81e0db937f5aef48db60c1608776a80b4015d59e9e51ed5a8374c2958071b20ebc473375b86f3ce318250ec3c201894f628039942ce5825096b6a98dfa8a8da9da03490daa3811a9b0a8bd004888b6e82f455d7135aa254f3b6942841a2ca31945f5d37c0014b4b3fcf9faa019d68d83f19dc8ce2436afaa2e1427a1e87100befc62ac3b809f0b2cc7d4cfc9130f6b1310b3e4e9a4cc1d8a60d114b4e1c664b68655f94d6c102ba4b13debd613119a32816d0906e8aed28e181896c56e096b4ee40076edc367f3271b7cc95b2365cda42fd838877133ab241182f706aa97c114a49b6263b5c228595017a0aecfc1584f33bf2c672e0684d198e5896b3058ac19c232e090ae380e0923c206e8701cf8ddb0ae9a4775b1f9cc6c7eef33242f98edfa2ead60daf41327ea7bde8e709e3ebc419b4730e1fb69f3faeb3de7d6177c6e9b1cd2f334d06e6b917cb0773e970f8a9df41f7bffb3117cf8f1bdfbfd5f6d143f3628267e8ccdd07d8ccd506795b6879319dce437af9fd515fcd81cfcd0fb23e5c9fe0b4665f8ba7bdc3c6e877f9d650220aa7baf06c8fb5c87d7acbdda08bd0bf6224431210a81a322a074f09ddff0a67302a3085b6f69fcf7fc0ec406d7fa452b3f9b9d8e66a79b56d43c05dfb8fadfe03cb45ecd1d853f401ac846a2b9cdb8b345329f77d1ccb7f1ff5e332ee7e1f8f5db6e33a75d5f7721b4e5ab3a8f65e15816930ed7ef7defb85f44425e37bad5d6726ad9f86432627e6a81dafeb0fcee77051e5696c94a3d1ed5770aad0aa0f5c9e1afdd3f2f0fbe0f6d99563bfe835be0c78e0e67fa0f9c94c9d48faa6a7df020fbd896f9c1f65c0ecbc3e3d3ee4bb71d7f1c9e768f879f3bcf3eb45f7fb0abadfbe0e5cb07c7e62784c6c6dd1f4fd76526a9952646fd7b42e24f40fc09873fc1f05b0949c71a92ae55a9588b8210e832cd652a5d2b53e982e4ff2d0679ad1864fcfac7eeb039327b5425f4e045ce21ad8ad4844847b5a648a8717298b69d848a68534da81ed60303b572318c9d64fadf59473606243d0a64bf5c2c06a07f3d5872604145880e359bda3ff0d70a2fa1fe4f0ea7bd131fb4033dc0a4257b7d71d5ae5951208db232bd9efe022dddc06b76edf2be74b8fac88bea15b6e0a70f5e5b15a4eaf18634328b5e4365f939ee6f7ee5d4fa27e046e746fa4f110189f82c2ca1bd847b6423d01c3442ef70eea3b0cad27b6782f42071ed23fdb02d7bd8680b18a50b7dd4af3d7dc6b703f514ef108b8a52ea521b5cd34a0ef87276b5be9f5d816f474f7ff252ab2ec15a27907debc700da0b0cb37e69d77ae15df50b6943a71c97ec82e15f8d4a8513efcfe1e9f71fe3ef9c78bd35365c729c2d4016aed4280e0cd4377ec2cedf46e42c2364ce2545aeb37615a943ee2939016dabde9b20204a61224390b6e6611f4c64392408b2c1111e2584019a0167122c5be1578715553b9044b4de2424d2797968d8217ed34b86b007f0c7ecaa6f7f8154151fb3525fc1f2a52edd22a402e9ec326205e6ce69efa5441032dfa1160be4b0d42b69e958caf127049d51df41018d0bee4406a1c5054439f9a629874c7826a4799a0eb827c577cadd2472d57ec125750986d4b91697a9b33e2f419e28abd765e625bbaee9a9c1b4b4a87bb2ad4a75664d01810a9feda12b8477e1fd23af469c6b131206c3213555501cc546b03920646088282123a68d57a7507fd55548e1103b53b380a5e54377e55ebf2b1d853e49aa3c1b7a37ce9d4a059a26dad0b2042552452d3431b50b364cd30a365c308c4ae37d2d134fce34aab685b805b1489594a76fbd4883bda74337481d79a973526bea4e4ef2c3d344757b93abf56db25adbff926268dfbd059dfab77e1e96d2d7c353b77d187fecbfd1b64ce656fdcd424df2190f3da0cae1aa32faff3f1fafdd7555deb3e2a3f84bdfff3ffef3f384f8b27bda7c1dcf7ac9e92dcee2379087bf4659acc372d9f6d765f4ae2fb4000efc9c4cfca5bb796bd5ddfcb86e400fdbcdd3ae21122981fb29492d063f26e2142b0bbcc6178c8e4b9fd23d72896df4a27162f55309299c3451d56563d536bdb7af0b0f1e179ba91f3375905bdadda77d87545914665d3a6904c66af0954eeaa193eaf5cca845eaa728bdcd863f69e9a9e754f4a413324f50a90f9f46651dc23df873e1c3e0e0f7dac03eaac594a4e27b0ef854600bb6566a26a61b9e0facb176847412d1e8ca36eb97eac73c7edd5c7d61377ff0c3e16e4e8dbf260acca443e9eea908eca894647bb2a514d3ff16f8141cb2789fd756ea4c692a95d22735493d26a9648b2750586d446091ec651532cfe4c85ff435c8f04ed34f7bb76593ab2ea08c6631d156f152cdd03eabf9e08c9462d08df93eaf5b90e9e1cfeeeb0c772faf91ccfaee2637e95d460dc6ed19ae1ecb5d1208917d146e3ca2f67da94ae5b40f5d595f23a82fd7fdd1badbefb896865fa6e8d7de7af841f87c9ef8076ed3f2bfd4b1bfe64bbffef6678bb4a8ed97de350ad67118ae19745f0c03c1d42ccbfc9bc6e1956aa17ffcdfffb3df7cfbb1195b2913eafa5132062a724b0f20674af496bcb20e10020f9dd820d643b6593d269bf42f2feab5fa04959f449271e9d50120c8c1fa75df0e20b0bb009f042e53ed1d0bb91d5af4da6847e55c75e963053912a97980be00db38a8e8c0f79368d0e2c9208d9232e0cf4a3d24900ac5e999d8508e808a507f1c6dcd03b053d6cdfc4c244ac78749ca539905a7662799cff864988812673a3152124d54987c92825728604d535510426d15fabab847e8214272d34efa9dcdbd819e2cc31f8c25e1c1253a71d69d74ea3bf54129a3587c070221b0b3e8dee6efb1e59198c8410c3822646625a46395984ffbdc4945a0b992661ecaa05d34fa692fc16d5b9a08541b05de573088e7a42364d8b11e39b5c656aeb5fbd27dd93c6d9a5e4619bce434baee766d8dfa0bba8f06fa4b4cb343713b51a0cc851504d633b4611c44f402922100ac635377e08d7701baa39620d3104896de04d203935ea7cfd68421bfaf6508102f606a43d189549214a9e90e155eeaf19cf6556aec92043f7609823b6423995a91a09fa33f1cc52f433eed03698a42beb35ebdc0b250af026c64a1c75b12ca1c6a42b2208e5e9fb19c5bf06a43b8d3174e7bebbb38741805c82cdcae83c14ef1bd6d13510f7a9bc70e63e35f164c55404fe25d64c91216744c62f3426d12f65c9cb31efa8549775e297e0ca818dbbcb8b4e5ead2572138041d6b48212e153ee9cc68a281bea993a5a6fc5bfce97334d64b48ba73bb6357248d4e2ac246693bed2661de658e45d2691f3b271e9c9f76d686b84b50d5f3f7414a3a4c020488a8dcd91ea3a71fcee01c910a46f18af06fda5e549d377d62727eb13ddeb8639158db72fade6d1f7713e7164a7c8a3b26d026be7dc5fb24ce6d5be5fc047a49a47d774daf0d552181efc9555f3fc68fdcee08ca322b0e15f46ad00547927c3b91e4d7a293bb41af10ceafa3ee2f3a88eeeebf75a2e8d9b3051336487f1cb6f84232758f604df614ff7352c269df6109878fcc1f562d5eeb105dd46585e1965b302c593f87e76ceb6f6af5e84cda6f1eff6a35b4454232fd2a4a20715c8dac52c26f91644535b2ee10ef858e221e0f51b761d015e037db4bca2bdae1b886b5e0f4e05780ce6173a9c9a8b38a7f5d3c4395fefde63fbfeebf9e766472ac559d99fa0a7dc25ccecd8ac05bfdf351edb460ef92c08558d0ea9aaba2d5ddae6f84b729d2e045ad2454a89c497e50386c6ed8756ab0e98ffb1b1af79c1689ad7fae6ab7df7df9baa117a15f9a10a27ef5ae2f8eb38be30ec7855dd2d47a470dd5b1b3fda20404aa5b7d678deb7c173a6fe2b1cb8375c7cc767ffb417b21fc6ad0f12dfda6b762866f043fde8e19eabd5c523ed9300dc5b050627a90d7d5349e47090022585e164dec05159813f1c9548afeaa120c2b738fdd825ca1ef6eb7e6f68d9cf6d5945fb9d7b9171fbe37c9e93a675c7ea90f7b9ddaff8d9f6ff232fe75b9186c03c7656a0b6e11aff2f31c96bcbe7fec778f7fee9e85b0e3c4b6f10ebd1a75acfdd14ad4a30a824f5004068b89a4384a4a92d2f541f52e877b4192cf4b7163c7ab36947c84ec6bac5dfbce7bf8fb7570ef93c2390bf9140af9f0747b3dc60210c6ffc7ddbf2c378e644ba3f0ab84d5b8230c718f18fc83344d38a04665c6d91eb098aa84768352fea292d5ad63e7dd8f2df700089110a5bc54ef6f7f56959428926020aeebe2cbdd46d52dc654d1401013a5b443e3c40540dd0c7960a485d267b1d7ee97483d654a3d654a3d2d31057d58ea2948ab3c8e4eec71aed10fa2857a6cfe1a2bcd96cb70e742fc783940c34937dc3ffcf3d0b8532fa5e64e8be674b9b3a8f8f77f66c668f3d1cf24b2532e02dc2cd995ce69816213ab57fe187e25b46d15c973fb3651d0a6a096aecb1f82b4cd8ae1f63aa873c1bdc34968cfbf16da3b4c227d1689effdfdc364a2217a64eaf2ee31b1a88c76da0659f25f66a65967c220cbc79ff8a32e2291da7672febc6ba34d146ae52a93106b15ece68ac2e2910a5428057153677433bbecfee1dba189c0e5d5a5dcf077094cee1fffb81feef4d7fef1e16ee4bcea1645502f3ab77c6001df1665af65c29689a1bcf6abb8f17d3ad679238ff79f9b0e908d58d097e6cb1aa1b025dde40ff1fa2d90f85513ec15b290f3b7c7a53d6cffd8d86b81c3f2e55336c547c5c7317752a2b2a821b1e22a75982858ea067a15413c512b670f98a80304eb7728e6963d57bc5438e0b252fc1697cba68c9eedf47c67793947f73de2eddad0707e7c6afac7c9747e8ef55123d6a7217f5e184878ef4de5fdf7e06bbf3d3c6fef1f1ad581f52b3f245d7b1c46bd1dbcca60a18bda9b38682bbff69aa7ab969e9053a60cdc94c1b429dbd78bf87f4121de649d5369d50d51a7ded4f6a5c7bb732aae8fc9eed50dc8c05002f75de431f8828f283cbf7d06b776407174935763437ed828f8187be07b52e5d20c5557f9e86946b141e7043749d9a5ee1d814a03ceb277f5f9de1ea3d13e71d5f84deda7b67c7f42e43b592b319dbe7d39f48fcf6d91771f325917484396c47589a133761289a94d8b63548585580b426f8ec784b71a1572d614d0d6b4a462c27b10ff6ea1bec49fb63d97c953c01492aa3685317acfde691c972d44c806b8a64acb4ab6849674914ab9c8e0c6ca5a37767d42f430352911b00154dead98bec91d35e4559a9a2d32a310c81593a9e18d6c0b4ce29b4abb48e24510d947f698b1eb9b6a5c02ad0e050a5493e667adaa4b0d00e65b7fd33980fa2f32b67e969b69b7c6eee92a092d80e2f5ed9764a10dc3d40a437f0e376912e53c400a8edc4c34097926978cb3481467749447876668ead9566c87d029552e4ce7287ecb0f81d5b08380a2354d442d5255f8242edc0513acb43b038687d8a945c99fcc958ce011e78a9c2c1cd83a556b428ce4351dfb6ffb6fc3f3bd3edc0d77bbe7d15cf0a696458ba1072ff7825afe5290c02f29487fcf25745a1434bf14f2bfb05b962f67555c81473c1d3d97f88184c6b2c02144338acc796c2f5dd898ce0d6230ca48b91b00409dcc8f06f30eca1fab01d61acc2899ab41562a1f47125053b557eed0e45dbdfc1343db6bb741e05e96753a46137ee64acbded643ab4cd1f7cf77fb06485adace7ec89ddb47652f0cb3c355e1feabfaeecb58a90fb46d71c4eb829378cdb65e08572e4ca3a0c35270fd4a30ff6ad427e8ba184bf8b1f1e8c06f7bc583b8c6a2f7e6fc115f7d6281eb978061df917bb89ef758d81c5e073abd892abdca1e74dac93b5d2f86e1ec958693ef2fff2aefd77ebabdc73ffe7bdcfd8a3a13b9785b7823be2dbcd18fabf10de58d7a52de88749012dbb7a1171e5a4d4ad4adddbf57b0a3809f46e5a33671556fb201af2afe45836a03157ecf00074780e0626f221b0249f7240fe5a642dca59826da00a1986efa590ef2f3245a9354d1a5dd8ba5883eb04ada04f9bda0b1de84a937bfde3d1d1ec7c02c649d416a4145d9e8e9fa524d9759c2fa86f1520d0fdc2c5f9399d90c61d178a14c61574f2251acea4fb40ec95d963c8d1702287cc5999869bc040be5fc843214930ab42131c9c923ced24b681ae4964f8521119ba87f05960eec07ed26f15e42389c0c15a44c461e93245698182f89b527625d88758750a60915ad28d154d0902073eee6c81268eda37fe4b1369bc58dc64b0ea3f15247de1f1076541025751ef46ed0334926c3742910f8ae269a845c65e3fe023026bc69b8f02391a5a440b1d0c8493458286205c69d6002003a19f5034435614a48673906a82c0343d6d41638cda8b9224b1e7ef632970eb03a478e162890b2d601b8197a0e9e97af51fc5ab8d83f9b31fd996ced69693cdd1d764ff727f6da0a58841cee83132bd9999277e83887a1f64416d163a279ed9b18b3bc27f5bac1c31c6c9750f1a9e48d87067640a91df846cad68422df7122c313bf670da45532514e973cab3020e90ca61fac4b13b3cc7c2b7322072802aab63c2c83c4bef53d180d65d9810750d3e9b0f653009dcbc8ee194d70c6851b9475754505eae17938ad2b93ec0d4b7c20f187fa8774aca640c256568b34d9246b62ec4dd935eb3a91d54d7ec4b449a6d695377ef0267b15d8ec6c9537016469ce601593842ad0659715e39ba8b64b3d89cc20fdc95b7520d3f061b044e88cea3aad0edb8931efc54e34c9191f7b6b821fe98d2a29a728b2ede859546e38405cc40136bc9c70a820b345c59535b56e9ce95cefa0a19a5890d715ae745f648e884f8caaa6c4e29286aaa394ab6c9cfc2b25bd191e4281103f9f90d1f89f5d21cce1c9860e5020b79980c7b47186bad99d7b25ac97a675f57cf7af67fdc7e3bf9a785102f7d8b8a9c97f0c659cfdf1c04d441ee326f7d6c4592d58fbfbefd5e4a212ceddc4a8718b510231134dfc3fa0f3f6daa9250b72e537e13af27581cfdb5e9aec175f7ec9d42c43f170fff0dfdb16f343e12dc471add5c134fac61b6b59a757aab21d692795385fa88424096124744605797f3085724078a341e8090dec20c04fa424841d65b3371dbfd0a4cca2bdd810f7b159899d2c599448d6a003259628cc28ef073324e4b974321d42dda4032c4cff444dd80fc4227fcfc666985ce0c73958393a734bb3c4df8b7c08469b3ca2771e9fefffbcdf6d65ef3f8c02536765ffabf49a33ef659f16ca4e2043e3480191bd061d673020f505f16617266568d965ceb9384f65105853816854148a7d0a604b0d27ce54b155c62ccc29a07f58c286ccf0f06f9e81f33e68ca919f7ffb706778e36bd5d69b94f220369b37813ccd73ad2c58beb56e47c946f19a8184ed942964e48ab19892b16bdb3090b9503e73792d2ba3684bd85cc05b96a4cc1634c7e6999169f98c03a8a60154af07b021f6929e0fe174a5d35773044f806267ec1679053c3011e14c4075a2f31e026bd07e910ec4a2a97308926d11503553f2d22c64e51188d585d8fa844d17b356fc0457a6102b8c806ac82a3755548903c52f6a2157d830dee40165ee883abd6e0c4c4f4e9c6ffb3f801d1eee0f74d400a8954ddba50df8be21251c607c5887c3d645a0182d695e1bc15d2864dd6a672f9d800453c09db4611301d6e9686a2fe6f426bfec35252c40b655f825995f82b8e5d676a0ca6e3fc600b403f87a67c891ebc9c426371e2db19715bde12b5e4b964e0c41878162af3950eabf792a8da5ac3167bad40c2e7a2028732d271b4cfa213b9a8b9e44c6892fd33ec7fb30bf72263ebc2bd256cf16c4026eb502409973301d3c199e434568d5da91ff97e5c1a0d6eb2d6c15e8300552d7918034113eef18d494fd5f4c357a6e9647aacb8c595315b8abc4ec7a2a1a7a1a85b85c103bd73a309f1510e315983390ae76b81c20a2be1e20b90bd87fa00c9ccb932de6b0f15bce1cef0ccc6ddac20e5d1922a3f134831d83de91c477996abf114f0adcabc68986fb835b1902488703a0f5a58f476d57340b3bda67d2d1e3ecf494f7657ec2255cdd17c82fa3e4a1d65e2f8555cfcfec0b6190797827bc8a16fdb2cbc921f76d7ff774bf6325894341b749965acf8d65d2630d066627da2c00249bb36bb6083317613e8ad1c065681d577c98aff8469787eca749f6651f40a46cbc6d2b3570a516acd4e006d49304b1f62c662e2b5ce836d8031769e122ad3b6e1e546696a920ade2228d70b6229d72284933ab10b8dc647935903506b365466441d6ad4c2d85873169267edbae518c47aa9b817c18f5197ebe4a4b5ba5e4ba44b6a4b05d95547f8ede7e198309b531356281a28e07ebd4cd972995b6232b5232ddce96080a145e4f2c6fb105cbd43b2cd3e098d3e12a8da3eee8699546acd2d068e5c5fa9686a0c6a6b6bf73e906d4e4c8628ea035c771276bd553ca5bc6ce39a0a92c07dd238c276d4e5cc8d8cc12bbd8720927cc0059adb2a5f34020b96a11cb7e5cad8ef3039ba86fa4c781e46258b0c6c6553aad59eecb9e1c93cde9b6b1a54991280be1655f682962543d7362f8faac11e148f1480203cf159f90a8cb09fe3b20f915a747f28da78194918d8a5e06da5616807a926247e08576dcd4414219f15a26b9ca14a8e2a1a8d9957e24c34c0553b5261c858573db6373cf8eec03bc8dc4ed3f9be24fdb7fc184859dd1059957486ecac4c2a367de3016f65f6d4cb4f4a1c8c873dafdf3945a94dd9f3e3a22209e6206085cc964f75897325b64d4c11f8170019396148e8fd4c3457f32d6e8237ac312dfef398123838296e5549eed8cb20c8e2060c3452d732538c59c4cb8cec90290c9095a5618157245e765270f882714ee3058792c0ce270679cfac0041db8829346216d0206845a0623e186e30873c9b772bc1671b119529cd23831e3736ee70f8606a18c64315a111de0a5af8293f7c580fdc3832ba2b6a042651c86ea8a915b47321c69aca82c9b5ac8dcac79c091f53f732374198154103521281519bbaa0e9357d69a9c148f7ffe79bfbb9b0b77fe184cd41f75e8c3315c1e510b6a9db791da1db9f7474f383731acfe651f558476ddf44a1e5f09d0ae9a29b4865e3ba8dcf97627c3fdc3ddcfa8c02765c360755c8521e9acad8abd1f7452e8a9df1eef07fde7fdddf079925b0abd961d1765044167cad1a2c29a0c4228b5d961c305158c0c073200b2c3162682039700d2e08c1da3eaa6641d4ca3d3cda87fd1c1244454137f1bd190a9c8334bafd7c33fb0881d3b2c0339674903edd6e4ffebf2d174f6132ac8cb8442af6723aa8c45bc0f4729eb6df8c1a1695dac512664c342f0621e4ff157c34da0e52da6d8b5ece52a1b68fb8250b30c288a97cdfde536211e11d6b595ba20c46dc34afecec17918f1d3bf4d9515b255f4fa12c7b7347d170cab05c8bd4e08f0fc07d0fd32a1bf3dc3316f337a17581154d434913b05ed192f6752364143d23c6389f39442e88e2108da562890874d67953cf29ab36570cdc5f5c6a30ab842e13a296ea4cda0890ac71b32120e3b63712ab06d414708df68905f3b5456e23f548ae2cf4936e200529c55fc3efe93ab4acc26874f59d6636ee1277270bdeced75f9eaafdb2f779af485e3723775a9ea6481c063b1e0e692c363afa139ed8e3af5e14801626951eaf311ac60993009db36b8dfbe6e1fee067d78de3e1f9aa836948d658e43b43ecd9f94f913db8dcf7efb07b72edc499a093fb780e329e32a77314fab32d97ccaa40282ea56aec149f74975abbaf17d6cd852b6f69530f42ffad60a6de769d81286cd11a8b2f1bd3f568a3b776d749bb8f3aacaf3387eac6ef2fc49c093dffeeb1f5fb75fef9e76c3fdd7561694a012663f05d98202a52a308f60eeb0b2db46c435c50292298f53dcbbb54cb96a12128c1ede0e0f069e10ceb8b24531a62721064f2be7e5c1ed10eea46e26d71d3e3e645942d9782895c145402eaf1608a7990cf95c0057933c8d9461eab212f77c0767c281c20a68296bea417e7111f91f3b606fc05bf9b68878025ea6c71edbff890a386e90c650e06a07d33e83146d4cf370e7c9b1fdf39a8598686a5a57e378465adad62e28d4f7a3963dc0d720ba2acc1e3cb34cc124f96e12a2fbd777868c4529f853a0e52e4f3b8b034cde2f9ff49f02b557833d559e46132d71f6701f5060ac615d7bd3e6c7d3f6cbd3f66bdf90e276956ebc29ca2a104c2aa7e2c19a420ab526b036472d343de8de9dcffdf98b6f8abab305cffdc43dddf5dafa1b0e076c624c9af83b8a6c1107f7ab7cf42b6fe20d2a6f51f4800a5f954dfc1d7f03690c91a6abf82ad6de42edb864c0811fa58b948d7d9ca62822f28d8a3a1ee6e179144c54a24697dffebbb8131e20561355e216f2f69b237193bcf5b6cf3cf7fa70b77ddaf527c3cc24376870bc6daac9d029a4db9ce0d18875538ee29f0f1ad4031bc865d23f4340c9c1f507f2311d93a979bcdc05c86d66cf6cacf165f0cc461671e989fa445c25c187aa798d45d16cb05093fc1b01cd517537644814cb8b4e563b60c4818123114d40de7f88ca1f29fb462a8d16808ba62b079a97bec12bf1f6b6224b440a56a66a1c3f4e028e828f4311e93cfd76d4e228ed805f69ea2405920dd2890974bb6f97c22e95b2beecd3d53cdc721550c626227b4e23df20b099a866f04c6300c040128edef83a5865374839321edb9c36e996e070345eb35e975be10d53673bb8901918d0684d46f5fc0da8673bcb3a48d02f44d5fd1ef94770a728483755bc5277a6506e3221d0a81832cf83b8744819ec9a471b1c62f9cb85743324bc01016c78b945d6eb269b9815257e83acb2809459cc0af2b8728b5e393c07e01fa79a67b64c156e36df0e77842bfa2530ea45a9c745f6e9b26404c6c2127de98f5d4d5a79f7f875b86bac53a92a0b82df060c0a0cb83778734e0da892187b9755459bd49d140663e59b137f38cb900d521623ea8539213c925cc6dbb9cd5d889ef20c3d76445c1370c008470bdf0584e3910dede23c63d8486a182d711ee8ed98d1b49a461e0432d1b744422290bd61d871a3b9f18402d9c0b634743536d430c37c8d3070a26e1df1d981c06cd90f0171524db40791cb1010f141d43f65930d64f832dc5bc4fac1fbe0f9080c536d1c3ade1f4dd7b40d13621516492a409b1c097e424b3804cd6b3146ccb0109ae5e04a47c3b6f913f105ef78120e92cf048f38590648ca1e011319b984aa89558e1b0b3103ac3bef4c91859c281355716e64aa5cb59fbdacf7977d03d4f9b2935b04c7bfdcdff47365ba74681370844a01bc4cb9054fc9a68aac6bd64cbb43f707291c140a6056454e27a2f61055b48c65e6c6335333c893b1a71f460ed9518f74d74a1b1ce7b14b4d62a736a611e60fa876c5a066974e93d5d736a39aeb6f1988c6df89d1638c674412a611a1d7007a0d9f47781e4f104e786067801a8838e91188c3b52107a54d02c29a744b2598b443e2b0009367d584c93b514ae15b4cc04331f0c691c5438af7889a4c1e747255ccca84f9ea5d9b088ccdd3697648d1315d5160bfcbcc3e41ff90e09c4fbb30fd9083b36882f2c40a6811a1a3b1653749778ea50238b7148294b1d17b009d07871bf0396c714fbbbb87e7ed97b61b27ec8473d18fd5059f3f40b3b3dc7d6fcf92fb2fb7c0f19e621a4c70f2ccb7acbe1e11361a509d06db616eca95c9440002c7ab027ccd77b6e208c58bf9adbcec11b8bbf88ec37735f10555148b654d45d6daa0416552db594101521b48b41c4c5c0eda946ce280e2407c704c9ab6540416ba6b037618cb13c58b940b830e3e1172eb98a6cc5107595d0e08de405624db843c238f27cbf879ab48c00e105b5cdf330d306254f344c05c6608dd8644895cd57152c88a4cc4933b2d029f86f45b2e842532c113908a961e6bc4973c74180b2f282f42f5301688dc5c447206b0bc4fde2460fd529e9cac4ebe3bbb9b6a4095ae0a229c9d55a5d166e73a46365da45b8db49c255711960bf64f289a96741294ac1c3aec25d6012a0ddf015ba6ecbaf13879c1d88c22167ec4d920bb40414ac019273b39f4296576652726af744ac0f15631d091c7e16b48ae1f463a6997c14acd2a22cbe30066358790a60677bb2e227d49683548d3c1a4207b4e14cb1bd7c02c811803629f6d4f5554d96bbff436822aaeb5097ec7280a9b80d3433df25821ce9ae95d3bff930606531c5d4060bbb835b906f9376647b14b02b419990463c55ec60bce631982730953106e5060c207c14176b6e36558e5136978b8460f6e67056ab1203008009b266b5c154b2d807c67ac5b45436c2b95b3e337208705223939ad70e03866bc905bc45fdabbb8f707b62ab255966610c6465c387713891c0ff2001f52b6a76aba227fc4fa814745401c7c315a4830c90039970d0d3e6120864121da8941cda6c69b02f6749a192847b6f089adb26967c072cbacab074920ee9f996f4f8ba98c296906c4bfdedfe95dbf7d9a0838317090bc05e77a9686f3974492716f8afcd17a95498f9b4925db89ef20df97acfcddeab4ca1bb91c82894575c7d2975d8758f23c9d22b38dc5c7550601f332723182c23522686c625a03742c1bd08d3345be6d52cfee643eab6422047f21661a00cc55414e4979d0d30b78d8c1cc8d1e451205e47b32a1dd8050b99c0d3b280a47594b5d2068587a32ae5b33d9f0238b4e834c896c3ab7a672ca77d7bca202421e769a08252afc6bea3906a0abc86572c98a7144a9adb86778d861c541c5d69387d2b227836d74a6d6aeecd574cc459e6373c1fb80d2aa65420d4f428d7838d15ea813ed45e30afe3e4a024ed5e3e3f32c52ec16a9b69798ad2eee66a1fa0c54d79719ccf7afb550d6857269158cab3748862bba335e4ea20017fa476bce6b6314997a53f955fec92a7456cd028656315551fbad7e9c9ba6ee1cb5cce5547641451d37f9276af649e1b35a6245ff0081c4629ddcd761fbef563e5b26a6c94a974636e3e286e612e9a49bb9ee3e999aea8c4a3caa85a4e179684231683fd51380fe95a7bf53edda0496b84c386642c29ead605b67742315f42e6f33b05ce7230917142d33d87abd4ad7c225f838fcfbcbe383fef37e78be9b44e590eb0c147b87bd91c43e5a577237fab09b7c52cf80886c87e7a2e6afa4085b2d41615dd2da99526439d91b9c2e41ce533988c16611e473810c1d7208519fc70404f9c0a993dd3198084529ecab4a8c72bc7026aca700dec40711518758488fcfa246444e3b5e103f2ef46147817d9a526b1b54dd8d05e16f10f9c82b197a2bac2ccbdcebb35576e54d1e751e7dabd1691675769b8cb026504840fd162070b39b10c9cd28618dde0087d4514027235e82f2f70284970bc47fc1c44c62d1fbc1b37a9af2c1ed2668b975be814e18abc9b0afe5fc71952a445f1fffa2f455511fe0a899f1fca7b3c909fe42e3dd11b3488c6071e79d8c7d542c7c87bd831c16371a150f9adb8e8e9aaced62938b2dd825e5805dde884b7503b5210fc11895103a00b8616ede64950f59f389ce408167b158935844b6eaa093f12cccfffa74f7f97ef77c7fbcd3db87edf0efc37d4bbe22a4ca545147e06f33e05da591caca802a96539781cc96839500c6d4a89061b18993116e8a29f0f7c127d6a98cb1d869435f48267e90db47882d9dca335d03a97b86f02ca3900044954646e08ccd37e210b2aa4b05530225c03dcab88a787f3935526b7723c66c46163673208af1ad08c052c51f31bc484a70902600c798a587c1f95d72f38d2a1cb18611f0690b1bd99de8731cf5343bd9a05a45157c6f055f4f6e22d406cfca64f64f953a6f5d18c5de18a8f3d36fad3415384260772b25a22cd1ae08b650565eb56226a42591f6f12d8b6be13ee4085c41cd9475d0145680130a9a08f04227b29784167b2d8daf97ce4774480fc8b53017102f748c7a0d27d6df0459a71db181ae6103eb287befebc09a5f38c7f0c1ebf4b2a9961306f1507257b41f64c7103f58960dd8c35f15f73a6e4124c3d2ae39608ed840cbaba37b2cba407a1c94c2c6da1d00774df61f19da2a36baf47564254bdc2191648909462b28731df468b48ef18a1c07cdec15e210960e26f76a021a4b31390c04f95a5032b996ac939eab93466e92c566e59db6812a1116009d53f3e98aa65e38c23565b0acbfb3a5f1045a84024260296513904cd41077c057021c8b5832a323350f1a782c4b03be6105bda7b46e46c78c33a609e3bbc69b882a8f08e8b621743af1f804c210711fb1f6d3a61a0bd396d1d34c947a5b452c2a0870ac7c840118db97237a53b578931d075ebcef38fd6828fa80269858084ab6fc07ef984857e403910ff65335b56f80c8c6e12d3730d623b46fe31e310669f91bca245120990b98b64c578f9cfb3ed05223e81e149688878f4af880c6c930263f341aedd4026261c776f8d0826663ec0ca7aff124f260146b60c1455c63fb807cbd6f0b8f84bd7817f667995d16a1bba6785f871106dde1dbb6b2a65153d78a64913b802e7d199072a6fded2da757c2b4aa63d4a66616d29b92b895b9666d27e31302f903b0179c2e843967b8d9a654d483774d0eaefd187fb252bfa4b6952236d510b328cb83cde6c86dc390d468c911cbc57980d38053cc66b2c8e3d1721feca495d8556c19a797cca65a4f3fd14da402a8a12d35e944391d09e296ed64167b1db041e4b433945328be05b7dc18e58a0cb2203f02921c942ba63ca0082172cbd999847315761d1e4da6149c3696769c1a69ffe6d5e0845551c453ec5bcbf09527283cc1beed110568e9f980930955cac437236ae85b2533f2b110a2933d2be716a1b08ed875d49513d46d5b1a09a19c685cecc1b2b095f32e4d5561094b7c2d632f961e0414a05a009cb7f52c9e49e408156b6e150dc29db01e438b1fb3669d99a091ecaa6103a31f5088e34d286bd9d95bf176e78fde84ccaa6fec1b91f55a31f51a5fe15b403ab53a8956fc6d2252434040cb1fb053c6d47b1c22ad8a1af4080a166700043c41fb6764b0ad5b6f6c0d8a8fad1e4eac1567222c98623515b7017f6e847d9e89bf126432377fbbb3eb2c2e47360cc475a057e89010b203a272e23358c6e8637ab98d28ff9ed57b376a0799c1a8f8666ab61526317479e0fc2f59b7bfdc24a6f651240b8410ca4e56ced47a8478781d27e2ddc3f3769a8851d9d5457ce664565fe5c0be4ca57b13ebdacb691dbe3b8cb5ce506778475d0b9cea6f533a5e0907ac6d07abc0ad16c8dbae4288f7daa9baf21bdfdb8e34e55f9fee1f9e5b0c00f290e778f6a578435f8ec076a8259d910bffa5b723307389ad28cda9df27d22b0ff0baeddd11f4392aade251fb95bf24575de0d10af261cfbb7bfcefbbddf3a1b9e81741838538c1d1f6d66d3c445b97301cfd121bbc5f14983b9ec3c497c8f62e01ffb8dff3eae5d5424975ededd1f5893fdbed7ebd7b7abebf3bfc806878d0fe2ad7f755f127b0f17e9fcab7f53a5e17947a87b95ca59ff8f8f7699e9ffa16f132ff9d5af67b6da24e26be66806a92dfaffea2e3cb6d56fe7256cf07e21af3f4cbbe28db5d7dcbd58bbfdc7ad5dd587489180362a4bdab06bf449a7701f4be0c82e445eeaeafdffe18ee0fbdfef3dbc36ee29c41c9acb8e489b58d169c4e96b5a66247a4932297074cc64243cb5bf229992e6dc5648f630d8791131940b7aa1b5762438a8499515f78e68776f6dbca00174fffd07ca6b128db81ff6eac3ab3f0c7e091b0b4760b8da73822163bcd52be8ca445c7dc2a6ac179871d831f720fe480742dd8d415139be9269605a200d0dfa3b151617f858a1b649970212e05e8196471d34983abc2c8a1cddfe1f6806512bf134ee1d6d42ec8bf29ab890f8b99c4672c3b94c3710b62a54917440eb3d4c09862fdba863eb4a8c7772c31c323ef8c371b998cb6ac7506e426d06baa079843542c8453ca4353bc330f139fa96e587601110d686603648598a24d704bd318e9632c3ab306179d470079a4b90bd2a7a15526da1db39fc8c7193a85316f81ea0a130f41321d7c24374539327bcc91aacbb5c07a05cb90532476ad886014b274d5f4729b580b5cfc6052d162b8f57822b71fc4840c3b5caa8ad90543c2d404de55f22967445602463f8c5e0bc3c8d674e100530eebe344c6c03c4c4bb183740d0cad604b9041f4008fa1f6d503b156519e15500a0d9c970c223f8ca94347c6b21edd6596a5239437658a1b6e30ba9b8abac5ac884c2b28d73ad1a462f5f33e03e31c40077b12b201c93ad5f0327fe35a38ec002f1fae5e30e220da6a52ec4db16b1063669360f2b3ded4b7706168c187d69d89a971993d5bd4819771c0bd35883211759666f16678ddc049c826330aea25ba11b6610846340c516624f2d4a3fbcea08b639abfb63f793a2670c22915deaa3ea5e19f3029471214a7aa81b5d4dc2c98de98fed699202b278706a2ea14fd504f0882af8ce92516f6ce169c61b6189ebeaf4418c4fab277c8c399903e995ac5fbcdad1145bda57bf4c154df55137a94a3f8a1749a9ce9df86c358ce59e04326711291406e828928fd0bf26faa6441a6277816bb62d7af5e26154310f0310379807dd13255e51527d7a9f2ef4444bd9b15c83b60b54db26bf4e53b923f6ec7320c841e1ce04c26894f06084c21dc5415937c8fa45a57904ccbe2e0553c068c7a26f960151734f65441f3562784301ca9ba48600564b5ac8404ed326b42bc841b9f25ca9eb60f9f1ff7adc23014851a6bfb9fa1c3fe288f3a36768ffd3a3672c56c7c19463ce81af8fe60cad0105469dd6e4666bd139fff23b233bde6ad67937535095342a6564df26fa22dbaaedbd85b13dd908d6c93c9b50662e2cbd28eb222a5f1b5c975fdc7baf9e516db8e7da7f56e3795c24f9c0ebe258181dc44cd885b07720026d5ae8aa974b77b7c6ac59d7e1bd58c2ab5fb747a5a94e7bb3f3f369fd65e002caf5ab3fe7b3571c32ade20ebc624112c8b7a601e4efeebc3513b71de4632e4092472e02fca6bdf6713abcc2b0f0d80bf5f39f7e9eecfa7bb43ff5acb6b491174aa41554927851ad4dc6a50f55884aa5d2f3be75571ad855a886bda23620a6d5f57a2ca8ee94c0e5365ef54957ece15866ad005bf7ee19a1a657f613795f62a42b2144b7a1679915998ab58988b6e61a7a856984ba89ae371721586b010b958f4889eeebe3cdd1d0ef78f0f33909af5236560f1331237d49e012527d60cb97659071659071695052b1d8a5892892fb745fefa4609598584a292b738050dca4ca41be8b854c42bf1e516053a8b8d395c54a581cd5fbc5432cdc9319559e1f3721b508713f98e7617b889dfdb3df016da1de00600975505af80744836226f5c1a2cac2e32cac011b36b1297e6ebf0918fa8029e1f757793944777d2c6bb2e97fd0e65b4cce18b69f93e2fc3be5336ec384739bf59407e984dd83415a60357cdbfb5a926f7f18a1c202c2bf1f8be29a9b955942dce1ffd0fc190466909dfaef6b2d78541f53755d0a8f7814ad4a22224bcb3fd4eccd71a73a7e995cb9ebc20ad2aae4f42bc5576fa82e7f51d71b6b557d0ea695473feb257f570f727977050d7c1460bddfe4a19d2eafa2b253ee2a83b5f300c4175b351b9bc8da7fb2ffd54eeff0bb5466ea776703a54d5add2d8aadbf25e9f5d934b9bdfc5d3e35ffa8fc7e7e7c7fddf700f9cd42bb749bd75475994ba8e1a165e66b84ad7efe26aacf5ec2e9e1fbffe8db730912a001bdaee01f42ff9e76ee1e9eeebddf6b951335c08077ca08987b3c3fdd3b9c1b0c86cb3230f881a7940d4c4033226791b832f68bc3c51cf805e28797cd7fa98b56a77693fd12a1b33c77a6201b9e1b1e94cb1cac9d198e467f9a8b14137e6756fb38f0f8f03cfa544a1fe9b64acf2c6ca012ac7a8381dc6817534221057c478a5eddac825100b12cf471b2f47338e501cb7d5541ebb0743d67d67ac0e26bf409200280798dc2668a7c2c1147cb35340b135e3db78e57438685cc16aa703c45a47ea0b6301e649c0cd003b235fa29c4122570593e5a36203e8f67c67408aa3f06ef99c432509e0702a6a90fc3a1de53f74d1fd974942d48fa55709f03a1b94bba9a61353de4a97d7849f80b141df2764ed01a2d17e15f16188471304812b8a9718d558e872e8e6b586545028108c43ed73bd0c892f86d60192094457e7dd14e175958482d5e4b71874e43443a544700b6298170e3d422c6598b40faf1dc8dc96e450d0fffd784fe3619c741155e060045109c3c449a3daa469f7118d93dbf41c708d81238e5146eb809f3284d3c4e4bc6c95a5358929596e3c42179d18b4206a601d0abe109519a80790213315f84715305f5824a9cac1a2d1685b00baf2574ce73609555b5c877136229894461430a6bae65c6f721ab27dd47161b5eb42354073ae4366801f914f724a3f7cf909662fb120dd4e1a287b156a53ab0e3a1cf88b0af24f81b94e9ef017f91b67c0e3f3f6f94e7f7edc7ddbdf3d4cf24cf087ae8bc72e586095310ccac465825742862392c51ff13fa31debce99932e2cd8c3eb5a89b31a8f9793eef079d8337e301f7cc9ff56df12f1c51792428c7c3e178bf7f86a00be6ebfdc3596eab444997e8178b8f04716f27362149495df147230456dff6f1cd7dffeeb1f87edf3dd30dc3fdf31ddcb8a4db23035caac46f3f50a379fdab78e345c4cdd6329b595546421bddc7657ae085a9cf1087efb9a1e5867e0b275d6f9659fd5746836029cc378f9e902d3e75ff6961bec0e0c08f89f96491882893a98085059689f3141758301d54c30282b60dfcb3104a75cae836bb030577503ab8e659138e32f2fc653dc5e5ccf54532f2e06749503d7ec796b4dd5a6cadde79ffc8e4173b3b56f7e09e6c5911c7320c65c760667b15f99b3675b03b66997196cd7a16fac328974c39634a660603eb72c09b105b3a9f30035c6b4aa0639075f580030e62dfdcbadf84d1fa2f35b70d3e3baaaee65ef65bb091b07aeca704495e26f87ddf6f9f9ee497f1d1e27f78fd466bf32a602c844be4a6ce418d072646561404bce7990834ee12ec069c25b17728d4ec98a6122c61dc89e6ca7b25ca863640aaf5694fab99b229f90bf420ea9aa08e104ef158a3255006d0c98a3228c1d04cce4957cb5252de405c34879c6c428c640cfc036c2194c42f037b5bae4881b0e404f2640eccb162e0d1ec63967ad067842fc89c2620ed935743e68d67968c6f5c6828f9d259e1b65f7329d3d6797b58323c95bca5b6b02c0a201750fd428b30095338a83dc74083bcd42b85945ca81bfd0005263b47c56bec29986fbd4dba7c76f0f8d4714e38b9315d1ed5a48cde20b4e0058668d0608f0d082bc2fd901647a31ffa8c7bf0c230190dd11c0614ae2daf5d904770ed7d1f1d3ebbf50fb0313db02ef5bdaa70bb985e454bb29945187d8ae977951543a200d6a59a6605c395111b100aec196330f375fcea4e3a2eace5ae218c38d480a5630058f055cee448f749328b5eb2a62ab49a67e3950d77604f99e5a8ecc5825dabb24ddda8242934b20d3597b3029e3a84506807319af505e753bca0402a3651db576015a6159860cd5306f90cbc443bbd6248cd5f6fccb3b75aeb50755ba977da765b71b57e05cfc044c168a5061f92153de7b055824f4d21314263001c50eb2cadf804756ce15be15a277e496e5876026e32d7002f905f26b80916ddf9269e135c66f3e9769e197f1f66c7cd95b0bacc4d2950e3346baf1e7ec52f31d086ad5b355f77cb7ff3a6c9f473aca857d26efa8e85ab9bf38141ab69d8649a21fd869a42f0141e64e93fffe9d461c749d286779269374986497fa0599a5c3895b45736eb95f7115157efe2aafc6f15f3ca691abbcaee674c54e4eefa8398123a09a1066f30365df5555f2b9c8f657e567be3c857eef38233a950fbf706a88bfe47ee2f8f9221eecdd67bd7b7c787e7a1c26d1ff8fa19e2f4398cb02bf695536a94f74df286a3c8ad0c7c91b1ce550ac36a90e0465380a6c7b5676040b9a8442b69c92764da77b64ff2705caa50aeaeac26efbfdc4637c05327f614746e376a8066e8572e4ee8f6bdb3117399812b5e738b216c5b5fbd80195540df09aa900b51926f6173297b9c328f8840fb4522020108b36e59504516ef57a87579a522fb7492580df3dd1e1eceb563ff013c192ef4bb7b55030720237a99144a8f64b59668b38f34e7f3bdc3d7cd6cf8fe384cc64211df7ffa09d865720a7234894b0c5b3ac9232dc01ae8e8c378f46381b194127cfb7ad617beea80daaa9d76e5b85b70c4896e7ab72f30121d6a34674afc9b922c4d7d80c080c98abca1e4ee4c626adabf12a1af0d5a2ba0ee8341627c5f18d8a6476b1d52af9b505146df39a4c56bda2886dc9845744b163a76af0d536d1e9fa0e61bb8975fd8345229184429b0b87ec701510b02f0aa31d1934ec522bf5738dfe845c4f615d4cad0a443050e4af9fa818c6c7d61244f1cfc8c40e135006d84148c237d4b15c348240f8a8bd2cf60281255a10cd8e683cfb6f301a54c45459d80f93a3faa3376ed0209f017311ec953c6996342558f911cfc9124e4d55630c66877e696228281d0e50c4195c539b45b17be09e4fc22950c57469e2c46a2487e13529c261b128609a33fbedd7ff73674c95e78013eb0042a84fa6e628ffa6701cea15d7918c7a05432a3db210baebe4acebddc69992074702ab9ac8bfb9c9bddd0453d2a19550360c9d857a753e8a570bb6455640b264b35613cb511cf18175ec05b26a38dee34203702e92d8147c2565aaaa35c5bfdc5a98f016762a18066adab563c1ce8e0820ec8fba983478e58ec5c4da06f4e9feeea0b79f9bc3d989f1820ab8101adf64834666782cd43f0534299d2864260896f83327295c716cfc1aa2d876d05ef98df533d1870f32f887b719fcc3585326d6f84d3021d3f30c263b95e4983934c958346d0dd44d1d2cc9f552c5ae7cad3dbd9ee8664e7f3ccc1a17e792a197b446fd24c3be2840d0dbf920ec1e1ffebcfff2ed693b931eae8006861d78d83d6b1ec111ca025b684934756e2ca9ceaeab41661594d50be3738227bf1ea47a1aa4d05b88317edf38c5ef1aa73c8d535651e5c9c47f355ab643acbd066d6a7cd90793bd4e2684de543715d9a2cec284a34188df51e92820a8d06b533db73b4a524162299818079392497107c243fc1f08812391007863f07794d547deecc0a597f062362ca7857655342e1c4db54b2d98d5d872f9ca2bc7d632988e8d74186a4e4ede3c804d2735ae0340f41bed5d66a419e5b25b136c967fadec55ba3fa384821fed5a398f6de53ef098dcd8274b4d022bd228a9873ff65056c2e9d258115023807e425f84adf1d5c9bf592be24015adb805b15fab1f5038650699cae8f9024d320a3da28a286c4c586841b91ceaea77639d4d241ba7f4da78eb8d3aa3517ab0d3c08e9c39de09e38d1d3be6a9af5b89b64d28487626a2ca0f75e61f42fa9d53dbefa072724e943f5ff09fef9eee8f77a79d17647feef5d60b725b143dad41d025abe394021f734ec6ffefd87613b4885e6eada3a53b48f33d404c8b999c1e420e78d38e15456445a2661a180eccc820d7ec62318b8d1f601c39e3c4d41043e320932d362d53f29fc1c60eb8923ccc1b3099fd112fcf078d2c586dd42a31727e67bc498e14d76e42c78953a2ded886ff178c57cb7142d83214657770fa542334404118bc5fd6f6343a6d04540b0c047f7426f9ddd25b6873a16b8ca54c63e6269747aa744a03f267cc9b20166121656b2d9f4c4c49feb59da5d0b0ed1a810ab9d0f1c13e99faea949da94154f1d74c0ddb60aa871eaf3fa5ad8a63b5018958dda934b10cac1914a3bd91c435c271185c03540e61da23bdfba1c51a4c2d6dfc216ccc292016dd77ce020f11e5f72642d1c851da7c21053c4d04e3ea00ea422f531be4332f7b8a0122e1d0782a1cf507c80cc65a3cf0155993ec96a330168f41ec0fa17f07b2aac64a41815c1e72ecd856ead1f8ee73637de221c42abb20dfdd37f21e7989dac172a910da384c44fb8e15688ea56770ab47f552a4a82301fed8b32d7f1317f0f74245f4ce025c230b996f860a0d496bf09b1f85d528eeecf9ed21bf62fdcea719426ae58e043fd684701cb99bc6525f44c0900c216320fb8445b2b812b52d6d20f1893741069591bd97bd8e4c8a56e0741c22840e12d1fcc5f1e8270150adbacdd6f6caef057020c42fc55ff619597fd744b79dc345f01b634acfcff70f5f0ead4cfcedd01a00d428635f0c275ec23b3ec21c60dda5ff37cfc23a7ce76d5d68d88c7f8e6fb2ea6aed5d5cd96384bf1016c5293e70034be150a72eb4fc5f91336a774c7203e54335e797dfb9c4e0ea54be5664b8ca645738f4dba719c4df7a60fceb51d73e989c06a7dd6aa98ce6787147bdbd2450cdc6051cc4c760b2d8f6dab644c0db055526d675a636ba2bdb51ffbc632041bd5d3184a5260f9bf3a8f5e11c6fdb8839b082f4480274e8efef86cf93047e3029652dbb48515967e3bcfcb4721e82fc0aa12a6f4a01cf75f040ad0457b5ecac583a25e9684240e0ce55248a82ab375615931333715e7cb81a9d1c6de9e516c47aceee9ce93aa63ac1d887b498ef02486378e8827b0a09ec0eec8248ca17aff98e6a3a5f36b816efecf12b97ae5bc0451cae3287ccb1f960170e47ed57ee7801b3bcbcf051477296ec8346096a271bafcd3736984a0d2f1b4ca8ca2b1b9447882954d26e4182b598e2d760d15c75bbe5c0d52ff9330d87fef1ebd7fb872f7a37152305904e980c1896d77625e61ae51e3279c34b0595d1f7c35e56919c7e60076231adbd09302d1d78c10313adef141f3291ecbdcaabf07e49609fdee88053f8ef36c95c8a7d36de8b5deb5689f79ff2d84ff77be9a209bad0d890071d7438470cfe145a671933f8729b5582a45fdea497dbd09e844d7ad93b55647a363d474f2dc5d3b3d7d2b17e1536b52fed49afdd0657c27a19b6ad8cb023d4893a4ed8846a32d937fbad9a9a16627959d9b0032b8032858c823569f9986b92114b9f92ef6207efb7c3a0774f8f87c36f2375ba2aa365ffdd3cd0ebd26a8246d7e06afd67625110181dbbef0fe61606987e8c008a373aeb83fdfdc3b746b52a7bc0d563e36ae1d9e9925f87f915ebe569fdcab0b8fe959770d55787fa7b85e4ad45cff7bb7f8e78e26565d975a6a7f6a1111cbc62d4645245a323da5c110285ea10f56214da314b7c7878fcebcf61fbcf514ecba7a0ea604aaef2af9dc9703b4ca0c483458abca5a82fc1b1b0ae632aaaaeead19ad40571ab4014db156fba14e563c676b2462ccc4febec74f8cfbf28ae2b89c8c2c6c6d93b9cea8e60044ee2782eb69474fb115f0150a4db998ee252e24f801dc46630c4d44d952d1a01365fc86c51e44d607fcbf236de309bfa69fa22590aa0fc2865ed4c94c378654fed90fdb9b726b295b2a59599914352d4d6cc75342e78954c293b360234bdce74b94a4fc94dacf2465a793121a076821bc9eb6032342aa65676604546042377792d0e6c2c69336fa574265b29ed434bcf1ad9467d5d4969e7026b0da132d18db1caaaa2f1216d723f8e3968789c0cb8c6c85bb87dcecec6c42d7e535c73d0555ecd875dfc9e9ec3ce35f5b8bbdf0e7a7ff7f97edb76cfa864376e8975cbca1f7f631db1870e793ceb5536341b0d545194a9af44688f1a3967d7347aa20e062a141a9243c0b15620a19d3c2ee4f0e4a82a048f65849f20e6aa6dcb4f43a54a3bf20388678a300a546fe5a19ee43f2792220269e0032a54962ad70a96e28d092a1b724893bd39be65faec0b8d8e0bc526c4e28a49c8aecbb653d05c47995b8ddb77cc5c3262d7c2757a8ab235815f040d0c2a5a4cb90986569f4ac6291bc5f08d3b8b3cb6d7405d8363c438635b94ef9c8e9d24eb28437186f6ede313c02511c09845621650485dfa49f3ddde8ffc129ab50f29cabf716754768978831e0971fc1fd8759d760bbbae34fb65ef75bdac9cf8700de83e2b77f51d57af2d0e7bf9a98febf0131fe7c27d7ad6dbe16bbffde3eef97eb71d5ae6f96f1b51f7a111ad0c7c4d233a25b0ce867599abe2b5edd8044c2b549c8fa01f5f55e3e2d11a2bb67c0d72b40553d3c6a63e9ace1d810beba1803f80d0d99b125017169c0ea684810ccab9ac648784ba626757b633769d9598e2bd35c50e26a1a4a9f472d6e2f3513eef426f3a3758d34173ceafaaa9789ac5c0f5cb03a33fdf1d76bfb1bcb056aa9c5e19235737650a577e609cde2b3d585866df37286a3902706b819ce87aa079652422bb4f0e41703f7bdf3be30752b2798f1ee767d8a3d4381be410300e1d4beafd564df4b2f7a6e88c986630310f900014c367d3ad8af1e1684d287d90a123db42145bc9d73e6fd29852c260b4ee2f2a5faaf97c7cc7e874b80a7f7cefe3aaf4f1c73fae3d7226ff3bf76adba9ebf7f7c1fdeeb492fe379f5ce1bdceb80eb20dfa9da3e7da2c43a0f39db3e73a79f0bb5fffb1a17cf8b6bf7b9a9f5bef6c8bfefb76c50622607e91869698b1df3fb06fed950ba3db6e0267966daa7f138a216be4e1bd87bc1ad222ae5027275a8a2da5566681f7827aaf291183cf90fdc2844f2e7893632f05328593a0d066f27c52ecb69a94b7ce848a82e53a918e420a0494f409f819796cd185024493df016f604d00322091a233358c65170da80b0e848e240ac80d48c8342d452a2bcf85323bdf6487035a1949eed94e9ca6f2108061afb885686cdd9ae44d9a7cb40075d9a63f40a279a2a1412089637c470d77032d480bbd4c6b9cdc8ccfc61743a043009a21487f7a99bb623d8b4f3d0f5776157c882e4f6a5415c9d82403c0fea7e04262414c6d38c584645c7654caa668a36f3ad3bcae8614207490a509501a26e963a5f476323e6c6594f3443229cd907736dac8a6c6e9abe9ead6e4681a8ccf724a75d5e49ce5dff479e872ef888b6e7226c0e4c44644ef67bc93a9e91b938c92729389ca048d31d6938d321046137855e26a0abf2b1c981f1ec194bb119695463069e5cd00430345dab0b5c6a3986784cdc814cfe4af241523a5974db0342192f8957965fd06764870cc189215588c166f415f2993975a1f587005451314260e152f65369bc2cb09f753a5751b674aef8cb3c7686c59d8bf4e87d22fdfc4b6a61627ff4e5b156bfcff96c369b67d95a4ab09982db5ad3a71aa810137aefc6ec5bb8d054854e3e38d750af111dbe4ce3b5312ca914890595ca30ecdc6893b9a22e604d88903d97e6331a5326d8d84399baa46a11e0f71f4c4fa3af1cb3d769d2c8b1cc4870e68a7e04d89722da80a430dd7921ad95986343284d2472d584c148fadc847f060a634dbc5dc28351b882bf74c50677ec803a191296a3d32ee0608bf254681797b90fe8dc6c52d2491a6158d940803c64dd8cc322820db7f5a1563e30e9339e05ee05355d2dbcadf02d87253c63c967dcdcba0040b3a5a68ee445646b28aa10931380ab3c82e15b07eb3a76053058129960009448a634115f49040b76b0b65f40bcaac0edc2370982102473f2b5ba23b9abe30149cf1452151b2c3e399a328bab7938c51db3763e1d644b0512558177cd0fe24bd018c4053590745afe37140fe9313c332e1e38d6738ea13801c30397f02953725a744349fc59835cc0488a4790754804e7a142cb1d0d9c5f05b22f1ba00c8b49be8762d14523d8e52d9e5706680401560736e8f809a03cbd724e50af511e3cb1e6cc9d9781c7ac44838aaac8740fea0c63c9e9b0030824b8e580e424052365d3c9aea7a39e38ede94225e9adfd077eb808cf664162652dec992e056f775b87f6e5c5f8731ea6ebbff3c436b25131828de3c4725e1fcc7d9660f2651104519b74012b59454731fbb967c6d5cf99fd415bd61c96dc808314252ae7c3fbbc51a755375958f7115c08f89ea5c2e2ad92000f87362702760b2346e6881e36729f9ec3e7cb9b0aa9bdafb77f8651169fcff7f1be1127f0fb51a88c81a33dde179bbfbe7dde7393d66a72e2bdd1644837def37c879da6e41d5b6f4fa92d7f065eff40535ca1cf63e83dbf84d24b3de2ae3abd2cb6d5497244f8b32247e93a12cb2a49a22d73b47958002e49dea93ab0e1e742d167aa1ae2ef37718e2e76d13b8ec0614a003c31a4dd14141a15d4553d645596f3ca8926c1a4cd5912c28e0208bda9471049ff4ddfeebf3bf4f8291d60e3a62c728610dfa2413e51b5ca620a31df03d6b885adaa4f04d0e60ff1aa8088ed4ac1df0752fb701f0616fdc6062d5de24b7f6d0ab1e3c0efae8d745c9cb10ce6aac57014d68f5e448fae283a5d93cd335db6ddc7dd57f6c77fffc6bcafb3b54d1356558daeec919e74f14d320b0749b0be4d692f6ce056dcfc27019578640e9f37862891e35b49c176bcaf9f38f2d73cfe28666cb8a5c1f47ed16d4b173ef2eb58817aa60af463916c164041d7ca47f7e3911c9d4097f3e3ebd1ad4e5150f0808ea2abc89c7c61f9fe5df1408fa985c32252a02dca88493b971c8912bce958dbd80bb5dce85c5413d3c13e42477b144ed7a31c72ea55bdeb8eed3fd3fef9efba7c76f5f1ab7b4caabc2fa10583695c2bd96d2fbf42d7c934c80c88aa79aa7d862610404d3b2a3dd8e72904c3184661da216062606b54c2285ddb23bc0fef401570c6947a7d7d21cad34c243f37871e12e83935c7e3401e4348aa68ad9e69d81f87d14efa28a67e876afb56352536ca88e7189d0d447a15e0fbd59d4cf78de74e5cd5adc79febdc8d6e2c85f795a02a6692f248450a8394369487c32626e047ac73999c457472f87521cbea24590888bcc318ab55ac5fc2990737390418e1075c8f1fa19928d9c222e4a3f05687f64c0611d8cd9009f2cc3fb8194ab773222de19409d26b78a10e6d4221f90e625b14713d069421cb4244b939063e1b127e70b4d62e2c50a90099aea25368c91108a5007aa2b8666793a86dd02eb53e0c58d0589a30ab9fc5b891fb9f5268108b04c0699af50eddd61460414f14016c0991ce8a652dd17c1b5dab65b7cd235ff13131a84d428499539ee11944bd0210c943029628925d558621a083a4418848a6621e44f4d8bdca446b3d25c9fb698a03d8332a705adb8c3f9f2fdf77037a2f91a13f0886bfd41f32d8da0d68d0d2f7b6b82060e22ab68f2c8ceb586b053da74bd3680a9596baadb41d5c74610aecacfc4518fa6386d8a971fc078779a9079194fd9636ad1c8c4b34ba26f8aa8d20b568c7608ca9b8a82f6ac3c776a078843b344feda7ed5fde3d3fdcbe3c3730b5277b012d6a68b2aafbaa3e99c1881320ffa8a92a946f7ecea1254c89a2ca63f316ddfc5d54ff41c850810bac8f37810197bde0808adc5bbc80d2bfa7a319f90c2406fb0a0a5027e03215537b05ec0b19a560e9d5530c10f8d2b7bf12e83f1aa9811efe7cfb080e2e42c793d7cef3b34df5e59ffe6f4858abd3c9e06ef78f774ca8b57d5417f655d95e9c2a6032948eae52f1989cbb8b132ed500b4e677b963d706d0f6179d23ca88734f07b54e0d2f86be5da9ba95b959d308053006fb9a3b3c9d2d9039867397828e05e06c459d0f5c605de8fb951749ac478381b3c74c0b5d823fbe2a32914b67b791934dd65c82db574f36883fd7bffc7e3a077f74fbb6124b6f4a6b36762206af654dbeed547279ca8752a99ce12e5fa21c6dd2533698181f3fd0204c06a17fe78a182396bf8e7fbedfef161b23c8bd8f3a3725dd3174304c80ee319e6756c05f63bddf2150ce6065a2354c64a19f2cdc104f1e65b89bc5751b1e46877521a4e14a24a26da839cfb3ef10956d6c08fccd4682a429408c88281cab8f6a5a3d84b6b5f0381530e06e904d7ee647efb8c244c763776a31f315a8fba5cebe5e7a7fbedc397e14e7f7efceb6194d808adaf5f4d90cb6f574d662b2286624d08623e0c41959e9d821a5ae99444dec6c3022c3ee83287c587d7b0f8c5a67efb3aaa2316d214a6417bd911cb540c96699246de03be2e1e5e9148c6553676d06363498611587845b5321cf9d73b1791d51677f54d3e310089f1bc0519b1557eebd498dd71daf572e286d9df809234b1a4219a00919260ddec7550a3babaaea688931f4cb0a757355e53ddda02495a4cade5d3ecda2acbb76dfccbde9b50c43aecc81d05ae503025720b71a696a25ebf3292c8d54213e179fbcf3bbd3da9534adf5f098c061dde887336e6daa0c2a92856560f851cb3056a7fb7b88b061d160f8746ac1bd4d2cb41a5977d506188b200c510cd1553e37afb4c3411241e2aaa3cc86772d511119f854fce44dc22619feb02e44f56e12784493195fe75dfe8e8b08527df8bd1b76ed2f41d90a21d0d63656ad96053408520337e5d30b6e2ec6f34214753afb0591c65b15fe5bb386a237b672d3a185cf80608b102d35e76ea2c3f562df5e73d35e871aa0df47ef3ca9472039427b2dd89198568523dc0b70de0c6a9a107db8878a80e72e04894375a4e08820334e0385f813800db8fac47779328b1d581e5545a98c612c01335c7056f32185cd8a35d93c32be4c6a45874347efa49064ce49a681650873e0c2447b10ecddf314b08b54ed9b34017a4e07c07b05a94626a78b9b556d9ae779b22473428fe149eaefc1198221d074412c42fbe6112c61b5b15d42615581b19d9a0d8be7893cce7fbbcf6a81de852b33f08e44658dc62997569e429e05abffbd7b3eeefbff4c3a4775295eda0ed91371fa3822b47082c2366b45950c13e9cc7917d261f97651cbe683346183cc94be57175596af88acdcf76efbc63d70a7533e93671d8786333820dcc82947710494ea324d3f5f6187a8d02d30f9479ca52ee27d1767b46017664602b9d98c0c2ee15c2bcd9b227f6aedb241e02a292612c597220299f9e443e292ab1d2298f2fe54d993f897dabf6fcedb97fc547114d52b61bb4f1cb7c64e92d3e32e6c55ccb39935ee1002046243a0989b09bd4a4119281e295827cca02363c82b1415a31efb8f09a3b2d88278dce75a7cbb073632f9d61c5a62da60c269984ea753043781356361cddaa9254039075b04d80363b99c497fd51bbd5c81769e6d985364e71719c5ab7be628cb062b5f7e20465a0415d9ab9a7885d241737e2f08897d79ca9341199afce49cfdb97ce0833bcf7eb2a2ed326aeb2ccd0a3c54f0fd172dc8acce08029b029f327717c52546a95c07d7ef9ed1fbf350a88ee7f9402c28f14108b0410eff23f3cf77ab83f9ce2fabf60212239d7f203d6cd97e2fc59e433b6e1dbfe8fc3c9e476caadba635ed8452e82fa2f7b5460cbc0961d73f9a555898ea1d616056dbe0642bc62f38e640ad8ede3898f00ebd582530ae5b5629002c7853301574fda54e259c60876a4e7848b07da545d93258ff47a9c29d488059ea1e03d40f79117a76bd8bfae0526711504f5fa5169dbf3d5d07e26dcc84d313e9a2a4618e284a1f10ccbf903ed9a561f9ba17e22bf3964dca8081eabcc2944c6004d61af40b20cf8272801cb9a042904c58ad88bda11e348d9ec8e9c308cbb43517b8c6976a32c33e2cb5824e40e0110c7d1310a248000b44bd9110997c7a6c8708b1d113c8378b3516ee3300e72d706d9b61042239fb01c570f2566b62f128a57daad068ae56238e7537274ad22cb57936b045218404239a776e98651d34dc45d8fdf4449e8d6a8b14d8872c060f3edf64e77f1e617004d191a8c10778eae1add3c688ddbf6bd4eb73ea6cfcfd5c0211b47e4844b0c760647f50d9d85b444b5af06bb44065641158785913343e86c4f428cbe5653cb4de1acaba89e83462ee8f1433da69de574edc4b9266f489297c05803857d45f08fe53c97895299bbe998bbe9fc88c7cad3340b60843f2d28b9b3485095acc8b600b9cc08490de3529d2e02e81066e1b8b8c7659fdb6c6bdb81c6de719a736df300eb9c23bad58fbb0caeee1706fbe5d62196bcb4d72dc6299eef77ff6cd179bf1ceb4b8d1f0eda89dabf53fd2a4ee7fb80c1a2cb52483b5068f73769d4eb989c4d27d9ca8928f730ea57425a7524d53d69a815f05d2c5739fce76b7a9feff777ff3394c056271316b2ab8773dddcef440f559547824bb9b9e1fee14e6f9feeb6af33fbe013a9b26a3354414d5211e4ac08dadd401a21cace9c8cf34a5cc9b8886c3802d5e095f8891b6b7beb369089ff7b94425eddd41fdba7d93d95653ccb878041e75a4d2ffba896204217decd222ee0dc257cd9bbbf07abf3216cd17942e2751fde1def1e9e0f63070269d4db23acbba0ba959f9e665dce0cfe335ae5c3cc947ce52abcdc06d08c2e7d762424f2ca4471e5cf3f2aeebf1b79484907ac1c583c26768e8d5da5eb2fdb73b7a881293eeecbdcc6e673924ebca963263e092aacd2ab97d2eca55efbf96bbdf6e38bdab65bebed26bf1e153c5c0071362091f0daaf0b99f7f2058fc4f9de9774ba16ed6b7bc5e910b901ea2a180ba9b3a2828a2a9ca5c3d60e3578bf7c613fdf3fa05c399b52943de860b0f920daa68aa93bd35912163bf0a74349b056fce2c0c7d949ab3bafc9afd881f60721a32af769b3e2a5db0f7ce76313d7899704584b9add76158f580c362ee5256c6fbb6595db7c4c7ddae4c1e9b0f28353413685ee6db23a778d7717b3e5f9697bffd0321736f4da0e56b99578ce4eb68156b63eae02776315043c21bc505477c8f23c2bc7a19a2f9e97bd7ca487638790dc6d55b90f1bbfaac7f0b2d74945bcc8005da7235ef3d434787eda3e1c86ed734383225711deca55786e02a9e52ad2eb5c45ea49e90b62a871007d6320b46278faacc4fd22a18255558577226eabcb2df31257769d5c889b0dca8350c4224e21bcf964c9a68a3a2fb1ed6f82bc231a175550412c61d92ac8b6e4ad499e427894a0740310fe796d4d50559ef220160b555578e5b5c9d29c2f2d6550d645cabc0aa3dfd931fbe6c80a00866d654d056f7b85d4e59801ca04ddbb263ed1080d5f7dc11bec4eeb823aeb404e34936197c57ec4207a889844269e3e92430a2fb71557746b0bc5b5a02ca566dc4a5e6813acb11091240bc46cd65f1551317169435a0047dbae371fd06dd1c544753d9990de5edb09b44bff639f761072bc303b97b098946cb8dce4c2515fee72189bbbbb3147664acc1b8b086c3036f8b555d60fde94029690b0f6aa0ea0740cc6d5bc8e2a0e5e43eebf395ef2572befd2169f920fc951e8079d482ec753f3e9eee1f3fdc397592e9729a2b376e3a093efd2c1f84b4a2e6410926214ad1b0b4336c158699a619e10441cf6c885e9e50062282341196a3957ec2b50728ef9e023b2bfca1d5b06dda334ae30916cac3d10231911f6e057ad8b1103ddc9ba301109097bd59abc44eb9645bcefd47353fc03f6cab54b8bd720cda9261785c554c60ec1165cc0936600d08eaa1cce7ab330f9ec1aeba7f7380762e2312087c5f9ce63130bc3cefb048a7dd60d80365b93cbd8a1011d5ac7a256bb94505d5b4428ece61c4870782793f1dbf35f8fafea6470a8015ef22142b78b91396abb20e28086ca61f776dd0cb2cdc7855cf3fb253a874bf2b8fa77dcc66ffff58f6f0f9fef9ec49a6d0e46d89d0974d38a4cafbd8830b95194b1f1ca6baffc81da38da6bffcec75ec9aabe3425c1d833ead01882a643a29d11d6eea664ce69d77f25b3f5ede1f3a3dc48809cdb7bb48227f6c07dd619b545eb405e64fbddc5455ef91bb256a3b828b0b8282e8407fc3b183b1417a595b50cce758ac20a0a1d3c6a10298ff4870c574ee3788549513d9c24d57ffbf6f0e5e9f1db57fdf8c77fdfed9ec7551155bc01263122cd8d4c4981da5dccd4db139f466559c5c1ab2c2fca7e02957a4a7956d5ddd88ed7a8bc869882a09ecf7853fbf7bb4ded32b2ed188881e24216852aad95ff7c78fceb411feffafb317e25170727598e47dd140cbb524d07fb32cbbe85dc4caf73d34480b498e99215930f0a3562f454a4a61b922767d3d5884a3d27266eee83899b119d255663878ac4a651c2a82294903b1d4ce793099d9bfd6662578c8d3c13658001664d0c298bb558c5b6cc31ad4c2972ea85c262dc62020ce962aaaf07e3e5b8f3b53def8dcf692d13a4104de18349e077b6267819f146659aa298dce1b43b7ae9662cf8de76cd14c67bfcc27bbc89bdf626c7b3daf58c5a59b0354774b0db1412505a2ba77307b261e383292e6d9d299d2c9b7242c456c09c6a41ad4183c415c02010b60d21f2571302b2eb254af7013361bd7188812767acec81291b9f8236d525937c82b7200e2ebfc1d4e4b7de44705dcbe30872b5e0bb0ff0384c2ee29e82c401acdbb2ac91121053b914d3a1e0a17a635de0573b701974c958907387601c2a686325fc5dce2e86efb3f1a1b01639b126d93b62b40af22772b1ec8c2d281076399a90f0a3f82a036c1ce2e9de9a80f27d9b4c8c716b4d82ce428a61a214f0d1049911e0499bfe1ca2331e2962e932878a8644e9d2e44da0626904455b4c63fff8124cc27e2b47b0dc922c8de8b1bb965237a9b7268578d4247340814621dd6090cd0cf5d1b618eb30bea4fb969bf0d8338bb1095e4b91664bc74513519958fcd60153c6c791ef22176446f28e3d2eefb7b15522cbcf9ae327d9dac0511c26ccf4380b4184d4755921abbcc93d795fbf3d0c8f2d546fdb197a52d357a388fed1f77ac1223d67a2eeed025a74a1fad01fb5a79217cf1eed0e23a3de454dd69cdd5a6c7614bb8f2aff3af01ebe3292505136b2c3c1d884b5a5736460fd1a4566d9c470e34c89b21f935b2411f70432d5b621b3a81ea9a800f6bdf673187f1fdf4742110f6e3b59c6151c7f6508f261b1227716d52bd2844ea6aa22f628acd954b6fee9eef0381cef1a7de9c9804132b74262ccb8b44d26249548404b006035a1ec4ca4ae42e78c437a49deacae9f7bb7307f2b82114ce9eea6e276cfaa158fd9d6aae7330bdba166a9db27b691d101ef4eb8796d721d1a6907d9fd759bf64c3acb7994d3d66433ed8428f76f49412cc9cab7e6a24d6e955563995244efa33d237a7807700a36aee68bb74bb6fc39c51e5a06b17e425030d2a46e056e37e8210f181b0069e5308a6caa3842261275012a51c6e4f4471a33b52bb315ac180a6cc470420d97d250e9b24fc3b4c3dcaa44ac79a65e5921dfd05f01d70db57519337c646e19c1b68da420e21e23902f1969936f5f3f6f9fef1ae579b74591161ed8e5981ce132ccf7fba95ee6c260be16fb5c795954c12488d4354fcfa9a2dc8e69a559028902a9565369d814ab838a008a25cf4e71d5f82c56a9cf9759a973baed59c476d7a1fa46cd325e620bcad8656635d981045234610764bc11602d0a2a52a8c31d2b74771d9283afd265fe6d325f508d443a3ebf8eef6e193a6b2dedc26f5f87c7ede79fc9ff7955764baa62aeaec5680d762add5c8ee5262ae5707a5f5aee7606cdf5dadf805cc09366203be55551fe957e8dd8ff4b3cc38d42fadbe1ee8941761e569fe41788ded5714d13d39a654bb39094855dd181bb07fa1d58a1d85d43a6b0076bae40851108bf85139e0cd4dabb00f5d7029813089ae42f408f3a48a978b74d2616aff8d89ae1219405b90faa7dc857807b030b195cf20e71d34c6627eb65ad66aff8d8b5a12c9439046354476489a3b20ad1ad606d011c0b84ed86157f623b25932b3042ced80393fc24a435762087c78ef005d6925a54f00516a7be86d262096d8be9bcccf36e52da91d6e9b1752cc422ef08b6329440cadd43b78e4581eed556e679564c4f2219a4a053c33716be46e918975eb1f0530773e47a22e58ac51b3dbfc6f2ca2ef08f792285cac4ac4112adf327ba2abe1f93808c2fe47997f787cced9c7d8319a539a5d82ea03a087b29387b8209567bd9ed3059f14519cc451d3c3cf1c065d2c2c110673bc821e7105ac789a5586d9b804966e570139243cdac1c2581843928e244eb520316f1472664468e12394b61a2507d9cd1a6f342527b129c246487103e745ed58dd58a8826cfb8028a6213b70d5aafc417250e4ac06c139fa088a322dfcae0ae6d25b081ac3c99eacad68fa5c08d350cd1b52a1b53d3e682384ea8e8184ab88bbd5021f984b726c7ca57075aa6e2e46fa1c8d897606a9304c2d11b3813f86db230f14662d12c7f66778454942de4d201a7513689dc60201647696c22f3089d0a6701ab09a561dfd895b9f52405f55ab74f0751983e46ed3819a8c0da04a0bc81c8c2f2b7687960c22347e2e431fe2972130ed970c6981ac568443daa3c723f0ea6ca86e2617c1eb74ff7db3f5849ebe52b3de89c426ef5bc6d909425743ffb8164643b96f986489112cb2000a66366c9779159290304180c4aa1e28dec53899669a63b5d4c2687750632d05368b722ebd4becbed38fb6a4081fa38d26214b06056b616906c075938c1a05d96f028645393744b0eb2d05ef6d944ab786a91230b05ff5827d1212d96124beb2bf704328b732f8bad88b9d564cb82103f18894094233addfa22b5391f656ae0aca8642563e42c72413966bb50ac000431907f1e470b8ccb4a3163fc81328a1351a16351b965c2c807a678102e00d033b736b2b7da7bb97081546ea2920d1243dc68e29273c4e0050ab61487dd432ccd021a41baa270afb60932740ce731b49165c021151649d1053232460c3bdab55d22f86fe46a0c5966530ae3120b32b4b62d704ab063fbc67648b85acee0f4727ee4e80a88c003cb7ac93d88a281e6a20028e75be96c6eee811babc0f813b5daa0bf2ac40985a9eccf91d0ca0596ca4b0bba0256032fbe17f5483dec89d4b806708be5c447497207ee610ed33945524b7a1c1e054cc4280cafb84ea5e5682bebf723118c56be2682ca2bd11409d2934ebc63b019d075219144e5e579bacb57e63c96e184fcb2078b9accb4812954070ba2c6716f05df036b95085a444616606d59b43c8d6540a4e9857b80227c3438c03129d48ce89f850c2029dce476b31c7c16e238c6bb013643d8b539185918d42e08768acc854d0ed002aa7c2b5b9ad77eccb2d44abd4afee43e91c152a03d699f2b54a598821b8bb04f90ac898d392da5e2de96e05ac854dd3ab5a0b37555ae6c41487d415deb32277c35fdb30f8bd9d02b05df8b39d2a5ce9a714b2e7dc57735f3d68192f1a79ab92f3f3d6afba016b87dbe6fd45ef5d6e7fbc3f3d3fd1fdfa6424cabdc7550d12591c59c691b6c07d7a11ed7214bb7f465cfd98bce5dfffabe96df0aabe878fff9ee7144672e959a7d0453b5503a711b95b59b3824e5756a50dee3e3f06d3fab7eae6a99677b8d0d2c7e04570885ba41b6ac31c345754c37d21b7ca0c8c3233b644218b077437af1464e36a7a21c17b6993fd631b55c64d7aadcdbbcf161987dca035bc3dac4a0a00b1e109340e547f4500f20ea5e8e8079b73cfef9e72886f446b76476cbc2f8ff0ddd326b594bd44b2795f406036dd35e5d9adbefb5ee8d6cb25cfaa86db75b666cd827d83715400d1cb0ce7daaa61670559438862082cad2ea4eb1f03f018e16a9421a4d2ec3f4e95d0b7ad47648060eb54b3aab661e5a701b40d3544c049d408f01e2d560a2bba99c34a128dbb1dcd642f6255d9f373baab954d6a1389a126d8aa8b7e6ce7afa5a19abbfb6c33f1b2eaf105433c24a4ede1f410c03cb9770fc7b8e29ac36046b217eba83e86b164b8aff97690cdfc0fe7813202a28a67941e72a31eb01a5fb3467a65511f0fd3643c60b8c54d08c8c32f24b185e36beaab48a2639d4e312ead504fab21387045c25d0495365f9ca534480702f102758ed46c4184cac110a0290993736919133c79b42ab49be01c8b902dac7a534c88e69464fbfd6d283a97900c097b8bde0b146ae294d63e5fdb57d7ab87ff8a20ff75f4674111c356fa620bacedabad71c1c9ee53891a534f144c0114d9c02db1aa9f0e973230147a46b1ccd0513c3e57eaf466e9044cfc436805ae2f7da33713f3c8dbd3bc6766fcf774f7f42576f86a3bfc6ec3f8336cdce521dd48268c6a555f0116695977dd617aa75ef808d2f2e11f43265df65c6ed23b5871d6bc07f35e0f9affbcf5fee9e4708af45ad2e256fbd8a2b6af346a4c4ed6e49eb89ff5d2a6a39a8667c073cc5c264fcf8076ea3f27ddad8553ce2ebba1b43fe20fcb8fe5d5ed9d8a3be36b6b2507683fee3dbf3f364d9f959ef4dd8c572bef17d4409fe656f953ba6deba4d5ce1fbc3c5870ed3bb4fdf36db0580b7fc0f7c66d6197f3e3e3edf3d8d72abdd42f1c81227db6571d99b94ba284ab0dd58b1e0374e9e95791bfabbede7bfb70d9bc42fdd77ba8e4d807dfad7d3ddc3ae1f375bafbcc98306f32b029c6418caf2bf33c5af2d8c299bb7d174900396478653827cbc15c756e4cce471cc2741a3cfa77523b98fc0933025190bc2bd30480239fd269938d56e91c156c7da6131a4a2c959cbc30e31840478b235deab488d754bd90360da5a480d441a624714ce8097c7c7bdbee742c80ce5d5ba405df55aea7b01bcfb4149ce4592aad71cad08faa17013729649ba3d956d3235283c8ca6a2b5da9b2cfe8d37256b846eb3fc7780ccb33c53fc45c92fd24d40963b00e629dc9c9826973fc9df49dc43929e32510335454d22b11991df69e6ec759c32f507fea2a2fc5363567a4ae93768183afcf1dbf384e7448fffa8a86aaf13f09bff97f7d7f3a3fef3fe79f492fea354f16ba2a0c1c9ecd59bb4e4b7565d28246dae4ff505e6cb4b3ef0a0dea781b7130f7ccbd3da1fe78117fb1da4d18ba0d197bd58078b18e7a2c823df9801be4773982c25c544d6f7ab428a1894659d7b9b6a59640400ceb444937e7dab5a80162f5964da2e62953f2a43bc50a3451ed47736da8be8ce7511ada4dfa8de2e0dca9fc09f64518ff04a9e2c2db28cfd1a0518db292b67cdfffb8f6fffbfff67fbf9736366e96e02684e002fc62fb63b84e6418fffebf6076dbbdfc54371bc5e0723b9fc583578d4b5d7e1bae674b8ae391d2e221bf3032e5cc5df6053db7efedc70fd7ab8fb931b5b8051fe1347e7aa5c96e81ede619a9c85286f6d5d1653b8e485bf24ed5eb2bab2b285620addd1a6977d525dafe3c6f5519e9e75c3d3448185f9f2b336c43b3d717d5778d9576d97b6e71fec8adba92770e77b6b55b72a53c78c3df1f4f897fee3f1f9f971cf7ef8c5c361d988d2db74b41d37350e4f3a46b431fc6cafbf67375ea5e87bd50fcf8f63e8b15cdf5acbbb33e12ae3c13b4dda5ba7cbaf1f84a38eecf57da7d338068d51567ae0f9516f9f9eefffdcee9e47b650bb14a33f5cf384ce948597e8e43efcf95babd2656ae1952df34e372ee6183edefea4838ce5dfe6966cd2d579341f993f1f87d151053aa5dba495eba688cc2c5e504dada8f5a8f5a6e2b495b3d73b554cf29191e25ab2b2dd8adab755bd8a0f42d8f76857dd78df9343dfcb6bf964884d78bc75853cbb5fd9fa72dbae3ede98a9b53698454768cd98209b0777e55dccaccb2f50f069958c456cc305a8e40c34b80e26e62aa68d35b5d42b21893e985a1100d8de3f7d1db6acd972dd18633d859c2678f548b46e5b834a50f2b076184c3f644ab8a4b00ec058fb951d10fb08f0a2c3582462f3005c833cace58d62b9580d984e359957c5f577c00ef84ca5854cd048601c69fbffb1f72ecd8de3dad6e05f419cf105021b6ff42cc3130d94a313e149c73750c9aaa46f517686e5549deb5fdfb1d706294aa46539b3ce3d15dd1d5569bd4910c4633fd65eab7ffcf6a4b7bba721721217f273d3013eabff9d4e9ff82661a86b34a51fcfb1ab93e83a3f2ac85bdd42e6ede604e51e4be5d5df7f44c2da3af5bf7f1c5e1f7fff9f5370ee577aa56034fe7cb3789ffc68edfae0001faebdffd6df9ffa75343549e50fc6e3f54e8568f5afdc94f0f14db93ed6c2af8db5af84b8f04f5fc1a94f27766b5594affb0d1f64f8ff8ab16e3b3d77836f0c264970f6d7e64af88018f6daa83b75eb7ef7f47a660b3b456941ef6996f259a410b84cc3bcedf387e6c8f5e113969b730b9ffb3c8a7d71d9277d90e9ee4255d545bf66f18add6a813067a931e97a37b839e1f0024d4d5a922758f8de75ffe1a21b268b95fdd8febe8e2f2252b428e9354b28cc9291c7397505d8a96e3ada026066590aed74d967ebc912b2ea7357ae013b5ae020fbc92bb78bebee5f72e583cb5754b869da2cc9bf2ddd7a5ed2de47667db4a269afc24d8bca4dcd39bfe2116c369de759f94ea7857aaf8ac657ccee5b005269d1b95dc0e47cd6e75f1818bc32d5f9deb27ccf374f4fcfaf9bd7c7e756051a207218a8cf26458d3fae15aa78bc54596a31a5b4c683a68d371218e7498cf3d48c7352b7b90f28efa4b3e34ac11f9994debef2565a9a4e55f5efe954dd1205c8c6e6a6535564e3e883b07d02145f508e5fd7fc013ae7fbf7fe713bf68e375155f6bcaf730475ba5e6324621bd2751f320d753a5e3d0a4c9c45a8e06c9758e88899ef2ee190046a3b4a47a2375c2ef92e7fdcd27cb5a5e71d796830c7b8d8f659907d496c6cb9ed23ff34d9d676fbeb6dc7bdf21f1fe52a07d55f78c7edd256e73b77efe5cadfe3e65f86236f5e4e61cec91e5f966844c63417cf8e6062bd1ed5bd8573ebcce7e635879cf11a19fde5ace1bcd1931d3a2fa59cb28975ed05e378bdb0748d8be22970d5359f5fc5bc1f26cd3cf152253565a0e19e347ecdb65034e9927472caa7e94d82d028ffdba254db89863c5010fe9a784082a68c81823f9fee30112b483a5d8a1528a1d5995fc47464d4152f98eb0271b29f20b311c18305091c35cf9126b5c060792e19075bf206971bd731192c102f11059df77932dbb8000eba7e44e23a528c212eb79496be9227c7ddb83d4f3eb9a6d7e7ef93fb9391244c82de0ea4c2ea2abbeca21ef5b58a03bef538bce2537d26ad7cd1e4b3797b3deedf610e3b9c342d4ee289141f25c849ddcf3692c347286b69dbc0869620e508b6b9b430eb0ea7393c0ce905a1901385e2995008442ac27d3358cc8460a7d96926f4c18036fd6cfa0e34ba61007ffaa9bac8e9220e97aa96544d56959b1a658b99ad21e9bd3584ef765275e54de8797a7bb46969d9684bd7c50ad76b89c49ef5ce615ca1401331bdc474ed12d7de202f0b656f2d62e39fd468e10eb8a6d132edc5337949900f2eaedfc9a4fbd63dca5fdeb2abd7f3defd387cd07f572f710d2df3e3d847dabfb36fbc7bcf6777e570bd03d54cfc657378ddbd3c1efe684b6d746c31506e9869b72642fd99ed131bf9415415f0d11753b3199919a9aa99dba60d38f97d161168c7c7d5a703ab62dc557f2d1bb7768de93836ce733ead73fcaf9dd8bdc7e7988c332999504cf1c38fd705b24ab6d77c3938ee78d4e9c5cc698695415daa1731eae874eb249131e55ebaa74b7ef2a93f988deb41822bd408e8832dca2851c58daec7df196e1c7ac128e9933242290ddafc787dde6f5e1fb75a78500e23066009de01a93cd4d353d1a23fa29371eefefd4aaf85a0dcf52ca1b1e98e4c22e5a1d525a0192b3cb880a09c83543e481d409422807b81a288fa63e3401508243882ff524d4955c9df1134330ffe9cc57a6dab2e02ab8cf02c99182038bca66c4a50c5842fd9d404e1ef34ca1546ec69ee9eae23603ec329d369eeb5adc31bdc6b209660634d9e01739baf19f8d01efd8b9518b2ceefdbf4bf6d1ebeeddabe5b838a267b18501221486e1867a2b65fb94bad3729de519042d69c305b007dc470b0aa08e0361415313d459fae6693e29a0430c9be654eaa692ec7aca02a87da693ecd1d7095906be731d058057829b36c704a7510aa6895333ef3b2ab1aaf408d26241e5da6824d5d416e0dba57207c8e1a7557d138a44015f10e8ad22414e9a2e63fe876302085030ae0358f5a444574315e3099bf6d9ea6ca1cbf8ee68ae7f1d98574f1c9097aaf72e6b7cdd31f7ab3dd3eff781a02a8068ab62820c230b8a3028142eed26ca038517836d8a2420f451a57b6522ce4c44fce28a187360e41d80f25103100673b5464db841f40385f4a96a1b7ce4f88d7af6832f4f175061999f05ab7eaac56c10eaa3dba33190cdea2d208402dc28cd989c2be77c22a02a60a11e02767d81b92a12ae05b10dbf288610794c7622c3d04229db14118f2b213208094eccb8f3b931dc698cc7137e8c35bd7cb15962df1908a908232009b477074349030f795c7bbdad41e0d446fb2598a212f87c4333919b0f124fc06a31ebd97d6826e652bc4624584b3c86450567860897b28fb6f6128381470a18c8b8cbbaf28ad43bf8aa6218801c083e0442ac49ea4ddb24630ee9f144c5099d7c77c2065c07d3e10d361149af8f635f3208ca69c89904bab412f337953c9997dd93a697ce4e999b36e686dc2f61ec00c100b3484709d557807136485c0a1e6ab1c2a410c89e7af1386152d1c676d417bd93e3feca4ac9b17b5d2b9a3a6b04a470a281081b4465855bcd649d9f6052f6ff8f10d8b3768fc46a79d7c250c07819044803241385218df7cdbeba826aff94bdcb67ef3f4c7fff57ff324ed9fb77fec1ef4f7ddcb6128bf21ee538aa6a28c28808643969ec66882c10076ca5111498f069c133e8310859500eb2a96f15c1abf1435c9f951360bd68a28424730bff8134d470832df4be3c901958f17c1bce4eec8f24402c14331d54121409e613715429c28844aa5690e8094220b474fadf2982b36b4546461f68dee804cc8e345f8a134b480b85ef8eb2b0e49d4863d386085a941aa15291c79af18f93442045b46a8a608e393afa0a2f1c69902622b1f79e0666792174d369ee4388f694a84ad6650a4bb8df58dec1fd5a2d989ba3d586dc0e1a3065d5ce93b4b42b307ee0b32159b0d6831ea9de7811a13c82dc0ece39da2d2ea111555a1f3520e1c70cad90ea2fa076ceabc06a22a368186b6adc34ef85b7264133f6b6702bd7da5009318250805ebb1f54a8a0ff8190a11c01f8857ff74a0bb497c5ae161040b23043e789ae04b30bdb066f9a879d1b34e7b256cc9a6ca2ae7e0ff0688924b8907a4ffe109f1cd90fbfbb6c711d9fa10f258b09f8860bef13d6c6c2fa2f6956f1e5ba5a61519f1e209de0ccf86b0477d31e6db73ffd0340bbcaa5b3e6701d34f420d53bca3a88222af1c64bd94c3de3bf5ce5a58fca4cf984cdc3a8403026f94f81b2410082534ee5bd42b7b2c932a7660dc84256022c608183cff89328a22e72dab7c1fdff67c9cbaca47edbbb0f8a38396e7babd966b7c86b3e7171331eede2e2411dff66cd4f07256fa56cec85fcc471e5af328eb62049bcfbbdfbcfc210bedb50cad67636e84e5795ee2326f1b89ff0dd63832563d5414f9cf9687bc47a93edf2be3ea51b3a71317dc9824cdf957b3750a58ab139bd0b56a29a3bea32412270a1a7a7ccaa4a467f8d5b9fe09caa3b557d0dab883a0b3814392d89bb02a0f4a461f24bcb6ef686d1029d705dedf9d0a2ba27bf7f63598e4945bd5635839935cef743825df06a8b2886d5de5de9867b8cfd13abfbd3cee7edf6e0ebb96598f9d0e0b625d0be17cbf94348a5d386aeadc1102ccf2242c6689b8bbf3bdefd211d5a0509dd6d0905af12156768eb098f7e9916f6738ca95fc786c93bb0a07b949790dc5cd6c0af56d078949043051fd1f79fa83fa2009011d4ab140f4e744e6b43d83bd6d421651437061d4a211b54e0654826c0c9535580e9371b147e695376ede46b10fc386f198c125f48d2e68dbead3854dbc3dc941d9c3ec17cdc82b612b8784912d8ff881d00179e1082aa16f6d5dfe76df84154355859d26b22088cba0f5704a1c34109c999cb4bcaf1da20c19d36bbbe9b73ffacdebf34bcba82c2d2b4b89e05bf2615217102715f3e1f2d540541e5459d5b38f2e5e4dbe8821963a774cc06b4ce8cee590a83b08edea764f0f9b97213f7a5d827792223a17ef7dfbfa0bbfdd93ff5073cdaff2f58f6752d40d2d72d25c4b179270e15c120ef722af3caa778e90688e2b0f9defc0ee695c95b38fcae4239e9a93cf7865910fd1c3fbddcba639c9652b4683d52282009589410d81ff1b0511b47cccffbded2b74dc1084f0205b71f58ba931f1bf215ce45b4663a1f80b39c64531f979c23418083538d12c55581d78af2f55b98307091d568e52b55bd19c6b68811f8a47aebb4f320013f7c14f16826e372fbbd7b3ece62dea5ac8f181643081046e08a112442647ca6702731b1bcb6cfa199f0fa077e42d3b69e3f3a06f15753af144b379cb766b00371a3f243f69ea2947262c008dba2ff1204edeb87062e6482a9e88399c4386d367acc668d001fc1c595e8c57d07ea507012c0ad20e39fa6d682469ea24371610e96c3b771441709f3514b786d6ea38087766093a81443928f69f6f61145342dd0d279784da300c3ddc0e2e1705e6bd2a62cab13563d2ec939032589ada7dc2cfdb8d820d04558f0497c2f24699507a71d04200a8e5869f6e461b188d5d2508c562100648501d7e8832400a3508ef64d2672363d7f7faf5f9cf01edc5066d31de6dd1df5e34b44b63def3ee02cc7418f932d0a164105dc46ee7dd3a8209bb9804572323108f684b157e46970e34902bca369cfcba20b2c4d6baf33d48fd029a23bfcf01bba6815685701267ee026ce3ebb1f56f5fc92232e557d5d8d49b2aac09a682883fbc7d855a135993fdd40216a2030f6ea308e77ff0f65dd122186d89addf00b7a934cdea161618b872035234124bd7e204a2bea54a404f4510bca3423a41603f188c16c7fe2719524ef12a97215740a6b2bba5d8b58ea2cce3b1a71827c7f7b267c01909dab83b02752d77ab0a48aee42d2422412dc6274794369962f8e8c138938c930c1a863ffb84a0c38443485a4e04192107c19a245e019866871838c1216607d8196223c6161d9b0abae60bbde866f1117915dc92c499a845ee1a0b3e373eca42c6033d4898ae094c07877e635bd3c096d3435bd1e9a74421682bd0c03b5e8f9437a4a82850f916c4329de63381534b355524af4de2fec3efb86b4c34c11423bd6940169dd0d3853b95fbce5950ac3974b6058e8e078d8e869de5a0934169d1b6db3c7ddb1d1a8e84d2ea7da29a0e999a65d61be1de5bac7a8fa87abf9efb17f0cacf94c57bedef92ece6d02645a5b69d15c52f71b05be5557cdb673e6f6c424d37e44cbc7e2ff3a21b324584c0e7d6ec34795461ac90005e66c5e6446a091635149bb71bf7f2daa8e746269eabd8f2028ca50edaa1f2f8c69f24e58ff1ed2b6595d18d3369e6a59a0393b19b27d91e0b72004a320115bec3403ee4e0b65dc5f0a0a3ac29aa980c259c88c8f051f6563875166f25a1e4b854b8cb86e42a7e59e12eabfa0b02773cc7037092ef4d8339fc53eef3eb58ebbc00569e5ba851845f32af2d37f01b8277e846576c2e637ba3d54cc7650d3400add6198b695a80451d3514585dab561424c8b6db1d5f9e9ff46f9bed1f7f6e5e1e04138f63d83e1a071edcfa49109ce85dd4ebb5d0b3e8ce19a981100e613511ace4adcbd8ba35feeceaa666fc32b3e41a3c00c809b7abbe9e1306f2f0c3f52de9b4445191543a6bdeefcf2f63df93574b70fbdb5b16a10fdd6e9c74dfe7a07ac359ee6738ebc347e515c3058dbec8af8ea4bf164eb9343426be88bf1932f9eb9dfc3378c8a1c913081fc1b29406c3f3f0ec79c0f67565e2799c6de0ef775383185ac53df573f30feb2c92f5935c7d6ca9fa3864eae345a23e4ef2f473d29506ca498d72254d185752235c498d6f05fd84d3eb4b7c72903cecd2dc2761acb9ced20294a6f4b95de4b459e0893a71da04156e5830de11f4e1a6bffd27696c66dd7a8a362099c24667bdc2e474758a079127be698a07b5ac0a3b4cf13c20a667f458e7755651d7bf4b574e56a0785a81825eb8d0194f58bd5e019c479013e2789f5ca3820e9f5aa3fe5603745824ff83d44f5812b98fdbca1c4e2b334f6815662bf3fba35b6e7a1561e719ccf2302d000bd49feef8a71cc02699b87d3cd5cb054577044091806ed8c28f07bc1394ac6998a5887e796dacbb039011f84c682b2a8278ea35aa87ad37252babb2dc85acb9e767628ea83059d09fbcde1a8aa7e65018dae3ff8a067157f5bbcd93788e761d9b1e70ad4545557ba7a272083493a935ae2be49a2380b404698c5001df029f6155c3b3c27eafb33d99c89fdabc765651ecb5979cb46da77efcfedbf3e6e5a1598d338fa7d326970d64a46820c6b6da9b1096bd1fd7e5fb21f2a25ca7ddd1afe2fd62f5e74205de5c967db10a61db3fff7898c8d803b106f4884775a50d77847c5f00ad35d8f1bdaa0a542b15798bf604beb38d838e1b190a5f3c5fa71f2f16a90a50b243556418251dd10dd2cf6829cc87fe79f3304ac85f6b339dda6c15668a64b4bd481c7a956e6bb35d68b3c9c8d36a280500e1d5942285056b808720cba3fde1a47b7d745b534a036f34aa7953cb1d651ee38491eee0fca48a48d756f291d3fed86b27c55def184f09319aab411af6a4d752bd13e7d6535614af594f37879396ac27af687a4b45167110c91673ce0d78196066c62d8d1f97e25f1f2cd22451ba6bc07604161ae0eab3cbb4d7feed3f3916a139ed1bcab0985240bf8a609e33150262fc57202701c917be810387bc898eff2fc070c9f0c3422d3c9c589f643c06f7de78e48564441f2e7b6a13e312daf255d05255c4a824aaf249dbd289fba8e255cad284185c48432f9136359aecb929149a7a7015885d6efa57b3b019747c05b685cc02ff3e680a5b89925751e1cbc2d19c2f954fdff679501afdd0906c553dae6afe8367ff66331133f1f961a781cefcc70922b34042ff6b7423cb4233b7a08ae6d89aafa5ad5def52924977727fdf21844eb07e3c3cf482c743eb8a810c78e9d6d064254185239d6ed1db9ea75a2ccb86e2999a2acaa2da4dc59ff315573453174fde26cec45f854b2673e42060d0c1419389f8adddc2d2015bdaa49d43123caa685d6832be17fdbf0b545a1b8dd00b11f40c5d7ca1112df44ddc0b004c12c07c099290439e6c09b5b620aee58cf78220826e669085cc6713cb1a7880b231353bfe379edf2765d7721f4d029e2d0383edb300b0f91b6b6faa4a263981c30681f7964182d22f5299cc06237a101a67c9782f5039fef55ae2b671d679c8cf017984675bc9a989e6371ed177adebb710dd44b214dff7e8b5591a62818403bd06581505a82d0283eb21c1893c4d06c6de0335508b48be70b7f54dadcea791df8e1f206ecaef821c0332266e2b727d1e4884520d7e5696901f7501fb0646e6c13b18edf4c3e026f0bf7113d3f284df6beb51df6fbe1f767ad34b352488a58b2cf2374479af67b1ac08c8df1c597edbcbe6279cfd379a251f44f5c6b0aefaa9b01e228c4357814878f33f03adfc5fccd3f19507d3caddfb4e4a05d85d49e3abaa6ca7cbbdef4a43fb6f9ff7fbddd3ebd586cc66993f2e6ff56d473319e5644b236fa1bd12583c4fe61c06d59e51bc648492819af8dff97de994ef9b97c78338f149ddb6f6cc29e517e619799dba25c1c11b0eb7283fe33b1def7d07b995b4ccd477c3b117c880f9708b26c0cfb5342cf0bd7e9620ab2a0a3fd9794b17d87aefa81dba6f6f75fdd95bb370a7dbada95d13b3c1a03a0cf4366242a3e6c28bf87335a147f1802a50f0440d07ef57c4ff461ba538decb073d692ff2d795573adbe4a407696954941c44af4b8a5cc21a9ab7c9a90aa0d1c5d1553bba9c5a8d6dd94a311dffa4093a23049c4c0ceb0cf88eeda229c44bb5076e47aef6657738ec1efe5f8c78cfc82cfe2f6435ae6f9043fe851b24f9b9edf3d3ef8f2f7bd98aa590f42ab9cded45bad75be2543e2b0c66574a24b1d93af126474136c5c48f4eee79e0df9f22bf8749987893110e94bf83e56d8acec6a2241b7225897df6ec61e99181eb4c9370f58d71eb6d2b8e41c3330f3a94f244041b51c8d2c6f5d3e1b91f2a13a82ee94ccd08a04fc37014ac1a76f7495d2c0facb47247a28ed27d021a7781357aaaeff0be6f0184cd47eccf55111c07296e9a057f48056830a8d05d93c25b5da38e6e7df6fab239bc9e1c1d322e490537ba1a5502011278284eef6122d7f0d3ae0efb2595979114a19b4f52ed9bf9e8599bb240d9b7e4ebb466e62430bf8caa6362b7e2a75c9dd25c9dde946c4ac62a27aae8b53903a52a3ec14dbb2e1ac70668f6529601316885fe6b1df093de4eebfd2d54c3a5e0c324e0169329373a3cd2ba9c1a52901d1d5c1a5f636f4ae1ebbfc5dd2997ee0e4a48f8c701d2de599ccf52b574dcadce4ebe0e6d3fada3af2fcf7de32122dbe97ccc5d3eea0c92047e99ba7cefdfbe56e5519bdba57be13cf4ff063908911e688ec4cbeee1f1556f47e40bb76069dc74ce2ee04dbef25e7b436bca0a2a6c8987fe842eafb1ce1d46aaba0baabc1371dd6160aa13f1c9a02c0f976b87711f1e86efcccb73b3a5a88164022fdde127e056006c0cec5c3a5c7730d7e07b20de54bca29fa0f21a4ea24e5c609fc1670d97dbfae04f78284e953e28a778f0061555d04e93ca2bbf76bc8017f6b005bf2d89c8f62860630739acab5fd85351f6fa21d884eb281cddca1fb5d8bb3f7e936dd254646f43a13ef3c21dc042e3799171144d297854645c8ecaf2772c2811e0fa5729541e0ef1b6e78d399b54d615b017634b3c56e30af7b927047ba8156c6a43bcf4da147a9d4d26500995f4858c13543d8d862f583b623e8236031662f5c68682158820fa17f2db1e619aa2ecd6d8520ca5c49f19cfbbb36773381de5f7ca04700c846c0aef6b090b342fcc6887423bd8640fd158c74e4025635161e10b37f8a8714d7d311e0c48d5b559ffe3b79dde3c3c9ce867dd66722724f138794b3b65211dba39bb5f9dbba7c93b4e59f67fd8de81f272f071a1ef6fba7bd82cb2a32fde58d452f3df319394c5e9292834e71ef6c4277bdb1b4f95f7d12f5e8d13a6aa7ccc7c57fec2fe74227c9c727dfb4a7cd35434944e6329fdaf8da5f16ebeecf6cfc7dd50615213f0fec5bdd3819dc9f957ef0d9842fff2be5d533439a80c3593ff6cdf0206daa5cb9991ce2741bb052fc7dd837ed93c7ddb4d948e094c9fde58d73b21d7c9610be60112e63ff673e18b7838b4bd700090895b30ca286772d0008523b958d82ff1866a4f9637e282522d94e8150d90be2a867b59488dc1249474a307b295bb655d41e36269ab8349ca9b1874e22f14f6fa25d9614da4b553144d0c1f6812c3382ca36365df31002e9832b73f5e1b10d81d8467073bb593e82cca8c55ab598961cd5f7bdb83b7e7547b6f6ce606f3178c6737c4132af3b3e416f1af0f7cfa64226879f8b273be8b08353843203480d27f809cf1354ccb2458cddd9190f86b85cd4280d53ba1e24a593913f85c20a97003c5084fc7d89e08698f6b7451417953b911482e58bc92b3e159504d815eeaa7359fa4ea808867f95404931cf721a298562ce19a34d4e86be29f96a2b118a4f600a29f9af818a528a8e527896c3e6c0edd087b495745704e63e03c5a7b4d3262f137c8e9be3fac26e59f13ca34abe37f0a7896f4e72f511715b76742c087e106a23ed36ba70bff3b68a7323cd19f3c156ee2ebe6b7468fe050e86ae8184d40037cbb2a6722b4f0e3a188b830929ff7d1d0566aec415a13a420b16aa09c343c49ab519192b3e65fd6b77d51a66ea527d5f46007e955b6dcdb5f1054699cf69fd12404c050278a1e4a3737f3c8ebd967dbc93db3eb77afbb1662bd866c3819fd2dc57b9bd11fd9e8ff8924ff7012754209fc8cd1df8ff9e865f0848e3afde710a40fbbfe75a89eb76bab9ced9c5de3b85fab4a3dafd82bbfaead7ce361f7f278dc3549c926690d7ace4e8341079452d43873aa93a1e510ef2ae0838ae03903cc832d4aa8a62192411ec81c8fff23ef373602eaa38c0de05522096bbab8312908e52302b3e49af94e11955408b20909137f3d1b4a28ac4a8d9833818a2a546ddc018595842a496c35bcc3f0c46d6caa5ec25d24841a48d5d6d8ca8d5b7443a8b04ae4be468814a45a129e01a9168f7d7047f1117d00654305d916b717b5a9e0ab0a865c0fb6ad9cbb16c3f4c85aa218ce83a44a48ea2a988c84b10bc51028a10d7c112683d6d5c28a4466c147493000c334727b696351a80fca2abe72ebe4453630ede49bf2027f3db02de0048b0de3027a4389c513a8a264cf6d8f2ea2183f08a56be53e26698a93d1e07cc3fc10121b3e61fbc6140d26646e7f49fc3735b9f624a455b82d212131ef096803f0d739140c4b51730a62e8c030b73cfd887a53c02dd5999a7adcc39c857fbf5b58d141c0efba7ca4d4e97cd46e55e76ac1f3c0d55220a8004cec4da8e071758527028f016712e17a1d8a0d1115a43ac459326a97b99385fb0e62f412768435e489870bdfee20a60f8af88b49a0394b554053494bff4a59230f98308094905d7232e85dcbb4c7a0e56b956de480ce8c952d5c53c15a43b88b205bc3870e57eb8c05a28b0711cf3d5b0e80e6151341ac794689cb5f27b41bf1212ffc8451607d4e066900956df40741d4f073ee039037605c09115cf232d60c8d446c39820bce819113dc67a86847447493f83449164f2c1e95b40367b01b0ab36d342e0aba8bafc54b1967940f845401accad5f019c02d5885cc030938670aa67908285dcd3cb511fe747299be60058a0e5b90549a3a5497f34ce5070191b56457c0f2b3695730789572df049eeae5a54cb32c840e11494a27cd775e0629b7c0666e80231309c40bfc0dbe85c920a3c7171770a57cc30975e7b6e2ea5dc5d2122b5c88b319b79549da82d2c9c400d636d95e0e7fbc3e7fbfa6b63b9b547cff7a6da2f21f68bd5dd39ee878a0e2307a31c0fc4ec0d68f015b01ed3d3c6ebebd6cf6faf565b71b7d4c7b8c60000a9d4e47f00485953f86151d759c78abdc8a7c1f3b770c5d9ebeaf441e2f9d858110f69dc48048d18aa6af910e3f3ffc402179fd306781a4778ea3cbc7c759d58f0ef3b57efe286731ada1a8f2e1f165b77d7d9c96553a0b0ec05e3bab849740479d2fbe7daa2b7260f795efebac227f5de1eb0f8f87cd6f67a57a3f6f7a7d75c2e502db6b626eb14100df324693bcb0339854d71ecb7730f54b36d58236daba319e4796cd767899fc73b6d4b0c4818414bfa7c4fb7034b4f07b68136e6799595cf2f3f6c7081892c2884e2f48962da43ae6350e4970517b76883b4d74efba748c5d1ca74c3b997efebe7b6a7a6357aa778e7a5681785545bd7340df192fc2119fb3e945a71fe5446ffba8292e29ef246cfcc335add2519b9cd601d46cd5b8ad419d3e1bb1ecb5972b7d74d61d876ef3d2d69020f80b63b9f99e80684899777c00d3b3bb6f99236e04192a5bb1ac1c3628219a24027f400f4a70077617d9cc6be3548ed8f6f0cdf5cd42e7f34ba942a354007a1713d10f56d3d5e5d9358a0a0f50f627ef1315a1fdb8528ebdc81df9f0dcf703db9a8919ec3310eeca62c1b3e958417133c6938258186cd7b3d3c2dfca82df450219ecb4fc4196a456d2125a2401ec800915f65914025a1c5a785363a307040744d6300c4afb4262cb2690860d1f4893441c607a255867a59d4392ec3ec1a263b3380b6820c39544b8d809db44808d649391bfb991ffb031c04e0884d9221b8a958474c826505d77de78048baba08b3d1c17a4b8417e23f454099caa702d48ae2344e926d00b8131963b862dd642e238d9d637629b68b3a415b098c26f2c5dd69f2c3db07ab181ec85b01967ad05b1812480665bc15213842f17997a6e5f6cb68a842e6c113242435e787ed0391eac86cea446008eae7185ed72ef4d05a1918926577421e21b828ac9c1b0ef277dcc4b12de74c69703cc2dbc8e62260530ff96662855be2657f88604cf966c9013b32b16c06adc08bf091eb073325e2b3cace2c12e1f303eb3d055db2a5eb6944a642f83dc8a2f57b2f021531333f032f4128f2d36f7cb706b2d001769e5b7dc902a344609821f8e4f085c41b3ff6820264e204f43b8157e8a822350c17d8c394d428c69dc4291d09c3fe408d9852d6e9a85cb6c337009e4e10481d19fbb212405dbbf444c6d742c20ee88656b54ba801b4cc40b7d154d4057e105c357c67082c741a6b4edf2b559076983da9f669f143579a54b5bde7ffcd6efb4b0a55d48f494bf2729dd9e48a5db09e878c314063a724241474b4a2aff0e0ebab3ce3d53ee89aadeca0af73e611d9d08eb50e4443710d6dd09155f04159fe4132e77514887b8bf0153e2ac466adaa797343140ffa338f0af81ff97cfc1ffbf5252f57d9a9a4f90c1fc224d4d5deaa5d10b897f2b7297d61aa0e5ff264d9a425d2e7b71c2fa408d03735e2bf7b176df10d7f7c2f8fdd7f1d0bcede3a94ffe8e6c3817fdd9f81e82225ae6ce43f2e367596dd0075f4cad99ff0dadb7ca2fce528ca28519c58d7bdba7e1a00bc75b9ef5ff7bc53d0fcf3fbe754f3f5ea7408224ae344a59513b9cb83907dde40ff8953ce10fee3f1b43e87478dbc3dca62ea07cb9f2670129f8c8c663748a48191bef83a12f10aa89e684a68ea6922c5443adfe5fc3fb013d29a23943cd3838872a2cddee947eb7de96268b423de71a1a71c68713b41a10f486401f9562eb3891f4c2cd24352534fcc7c3cbe69bee364f0ffdeed210cb264a2d7f1152f328422f229790a033c4bb79e40744eabd57d26655f839917c2ad9ba7847fc93a448c96ff9c37fe2bd8ad46865a3807f2707c5e1123e496f7b8bfcfd5243a835c44943426b489086f8d610d71a4251bb2d8e23223a69d46ff827153923f1d913b8d7f07192ab48d2527c5aa127e3965b7468079dfe9b9e48b7ef0effdef611a090bfe4509aac8e77497aba5d012ee09fadfd68beaad2d3f2b25d77969e7eb731ffa476b348ee16b5db350c8276c348eed8e5d83ab34371aa5f6ae5fbe3e17303f3a3e3c8b989db42ad3134b6661c1a888abd3bae640ccaf9514e2d43761894fca28d562936f2776d8224d5a68c1bda2397c557d52eea744dd2144896fd65a3e9dddef98943e9f79af5e971f5f0b2f97390f8e5b7a5cc0906009c18df6b07803678809191c6ff790d5453af4d3271cd3fce5bfe146a455e51e30906304ba02d871198348297f85ca129926a5ae3125caff98ad681db13b786d89631d16493fa8c0a1649f221ef7d29c30a52844145348af2ea9ed44c207bd85b66f2a7f15d85d7b343bf2b6cfd006cc2ebe37ed75200c2498d5e4dc22add627778d28100bcd742631d811f0b5a529d10c52211c522e1f2d304205a60a3433273077e16da3bfcb8958424220dd19434e4ff234ec2433cafc8d09d11989cb22a4bde148d540853208081bb87369ac06ea80fa692d4d827948b2b894706af9c09c7683c622a4568c81147021a11a118184dda24911de4778f3c7c3b72a61c4df1cbbf3ccc7f24a7d12695a6e398334ab49d0968a33695b8c1db3163cf262c0db2731038a36442166d4ee8ac51da0a58c12179eb6be3c8eeaa495be47aa1e006553ce32b7ea6869f09b176238e4fc6d7953750e672e2187393e0d30039f1b63735a95663344cdfe9fc3e4ce6f2f02808023cdd367a9274ae94b4273adb683e3e625e5a6806d5a5871fdffbc7ed6604442d33e4cec443694ea3bc10f9e11f078845903b92c36a5f9672200e39107ca9d378799b76d3eee111b133a9537362d4151ea5c5abcc13087f9c40708bc74b7c805c5ae9835489214a57d8f8ce75cd1f2040e02678d4082628c4b401e44d128654a7d391e44052fce28cb52885b2e9e4e8035ab9fbefddf6b539516e4153066b711c31410ed09249942c9f47943ce6ae35e040b1cab78052d05244398dfce5890282002a5c94811c05db741152726a99efe5635d9ca52a6abef4a787e79749a9af57d5f8b226c8f86493eea349b249448187143071214cdc4bf440c42bf939bb6a82228ea3ab0c553e51aef5bda069b1179476388034b4fca46fd293ab68123259c2b8145b60bb98446be434bd01300ab01e54ea1559b41d16c6e410653e3a63d3da5056d5343d4e8444b2912859a283a87bca8bde54e8cd3afc0ee0fa08c05514e6315b7a9280b775c3575119eb79d91cbec3d74aa6d6a6af84381ea22138094ee5449052b44513a055bdf44bc79db4c5652b74b4f36ae8c17eec64a1aaa16deb431c2285e1a61c35999ac76f972d5245dc41195d692137cba6b5e04cd8cb8b8244956138f7f54e9ef9b9c3e74533cfce031c13b7af878e8068ded36289160dd11061a602982d368f4f86e871d73f7fc752c81eada52391a9d427be26feb396b7dff6544c4537f815192b4143cbdd81f7b3a9f0740c15b6d193b00b9aeaeef9d73d0ea5a2491ef5340e745e5b641b48004a3c7ca221767e05c5845c20a16a1a9b5ba93ac1bc33de77944d293dde903f4d27a4c067dfbd6c0ebb9726a39e4915e48600eae3bf045424b65cbe3fd1eb68b2db989a32ff3b45a2945d0b9b9a43bacc579852482d45d9f4631f7876f16151c7c94b60ecaa71796bac402bbd887df0dff7b5dfaa09a987d16363c71d86041f04b07dd1c5a402dd56c71e450dbd0e6c4045c1fca3222211efbb51459154453e21c92d7e7969ca5fbf1cbd0007fc54b4cbafea7de8dc517afdc7cbb3d07343bb97ad14e42e51abe201a86cf9c63c4e43910975a8780c8602c2f148d2659386d48b671b36b39d06130665f3ba8115c56c77bae5aa24dd06b1672f2ba093aa0a94d86ac1532508b1401dbbe58b914172901165930909386d6a352108b70450644e70d7c5698822e287c8dc891cae83c10836080c6c36b39c29d7a5dadb226b81906543abb434b36a705b0f960a6f82fbe8409eb6409ff1b91356d72a0954eb44e31b68613434655c81244e25c3d82e2e57538b58bdb6f26e2fbd1107462a806a955001842464727c94a8794d760d37d990ae9257b6098ba1c5540e8206dcb65d5d50b16e04c7a6a6101c92e22fc6c0d34570c040bd4218c7cbdd96c125180cc1a27a68ee0689ee724f4a1e578bda8f5fcd77eee91c648701ee6100878800389d16d0b79166fa8ad3c7b22085707eac1a1aa42489dd2e7e8e2b82f7048611cae8403eb828fc19647c3922b2bffb9708bf4831435465e3502a3e70685825af26ef68b6942ddf4b6f286e4ca891ffb5ba2e93d9a94544dfafa289a798f050427c6865c72676d964987c0003cbdd2a0dda0a8f8067e5d9196c9bce3ef6ecf80a176115e4a8140af978102e1637ccdbd88b308d04496ebabeaf999b544db9bc3cc55e6c16ca9182e68ff1fab188fa702a9bd626aef8bb3d89a6247be2324605d63948265f5ca2586868382c652bb05f8ad2297cf9307ba0ab82be101bf81fbb7f6dfb1f0f3bfdf2fca784bf95bf5e54b6e0924cc440bf5a45d7e43a02882e7f92b179c87929443d3e4fbdbe0e2d3339b09d2ce42cb85d7ce8b56b9926238c868b291e363db4d4d1bf277c94dfd73dda93aa577bf3e3eabe7fecfef57df3f430d2b80555dfcd06f95fcb0635526f3a917a9ff2e637e5822a1c19f77e9e37414ab1a52166d43c3c72ae51f3fc62ea57008cbb7f7d7f1669a4a8f2724fd6a6497585931c3dfd538543bda4186c53a5927e161b67d6cf51c5854b892abfed29a805c26bbf72477db5c6741e595810cb5d9642d9fdcf4e3ffffefb80bfada6a663830c0af115b8b1720dfc6fb8770eca725b391ca4c5257e06102cffc920d80287afdb78535352f25720c4fc1ca5a627796fd4a38889e5422f74d784ea8bd8ea406d1443b909d93a62fbbf95298103864d68895f3912bb819d722f0604d047bcbf1711f08458b7f36c9a491d05ac5e132a0a1172dc0875ccb8bae08a8f438fb4def1f764f93da4064362f3398807c7a339895dcae77497b00e2d95b45276811a202a23d9d89ad8ea0e692b08c7c8fdca4fc0c20e78a8dbf04e5894fc95bbe211eab4a8e623c8cb8bab1cb417357c12abd2942002c76cd53bafb0fe3a2f9c9652a1933260562ec3d0705948c8c9106a749a441e09d10cc05c91372847a89080c597680d645934941acdd99701322e33770e3cc2a68b6a8e024b97ca4090c62d1ffadca13827659ecedb16e8712deb2ea6996b8b3a3bf6ece391f8ff30376141ba06d8b3b048b2e8fe0d74b08db0d56b895549d5b500ea72e1919bc13c2dcf5a7507fbb742599e488136099d44e534c59e06ed1e7f2b5d67e051bac4363e016e0495c0b33b266137e712b85ad4d2d575caf2b72b33bfb0d5effcd9cc07717490015d81e1444d0942e70e8d611301cb8300fafc40be2d78641499c19ea3661b132f12199cdeb98c8b4449281f50c1589bdbdf5683c0de54963061e555a08113d831b74e4581a9c057e0a9c537748c3f3a78823c2bac53cd5a8b99172eb8289815418d65384e2cee28b322e9c1e0766588d393e369515a141e904bcaf2a7d1dd07528dab2016150d564301ab4e163114c4c7cb450ca8705ec450a4895987c890f27c2158c482f8970bab58923a3f398ccbedee2dad62db16e46cefc8032f6b152b85b1714bc63639723e34665441597fbb9775f8bd839025d1967728045a7296ec4ccef22b298c22121a2ebc90b34cf6a4a110815a46a896809830e0c076e05228c692e3b15ba528dc8a4aa945efd62a5f4e9bf90ff1a9c6a720a4231ef855ded0930fafcf8dccffcee786136e095310d1f3e8a34801a06c4c0294d9a608d0b30d20b148a0cbce9a870606662c9b626a714afe9e167854980d2b3c16f86252202cf1b2c67b2cf2ecd0382cf3089150c2a84eb3611d6a1bd72806adc6c7f62467df0677c0e8c65cc1f806da8112a25318dd0958ed60030639467946640ebbaf1524b7adc665c2502fc615c2604fb32d1bc31d0aa919bb76452820551ef20e1b3790ce9430f0d3bb233fd238f473e52b4213707fdedfc4db58a3f02560a50c93a06732960206da66fea137b5720f5b22f5cea7ea9d4ff5e4530cfedf3787d77399432a82df1a8b06abd4e6d2989a5813a932e71e5bfacdba1abe2baed7e5848fa5167657a4aa24ffc91e603cc8763e625ecb19e635a38c5b36fe8abf9726679f4c50c1949b7ff38e601f3ae54c7eb00e82dc5eea3444f198db3aa46bca197418b55e52c1e3864ccf827ee1da81f1c50d577ce7c65f3af9a15bfadd8c10550d959912bf8b280a69206040ab6636fbb55fa832850d032d5d71b93c8371d5dc4bbfef2431046047bc2dba63e2d582a0517f66d49f57ef794f5b5ea04ad628f6c8fcdfdb57afecb58397e62545954c76fc48ef1fffce5995615f3536532f340a579b7f8a354f42d2ef9ea121cb792a24af22b48231fa76bb077df8f1db61fbf2f8db4e06e0273af9ab576e4bd2911ec52992be610fc322f62141471fd9ea6617ea2e999ab82151f6dcebfd28313a360512340bc4d26dc04b65d9902c3a805eb865d4bcd4a53544c674b69dfd1e452a42d7c7e61764b55dd18d8ff3ec7b5a222d6822a2dc6c1a563545238b186d3f186c15547657c7c72f0dbe3d79364e9d49bc7c158720bb2cfc038e85fb204b151f7d219870c18c80cda228bf1b2bc00993202474e213b145a7ab495574b1ffdd83f2f7c77edf1642d7e978f4ab74bfac23320b0ec4a3f65d39fa9be8c4bf06b0dc9f65682e5eddd7e98b347de1e505595556e93e77e58822d48052ecd331e62f27c7e457e9ec951c553ae175c8ca295acd69784f7e0eb47e03ddd35c4de4068998fb26349a49c7e6bd49e906d818e44b8b951bd242fdc76ef77d90e69a25f657d7e263ebd8b4f49681d58df546fb77da0d99bdc0ed0eefb51b55c1ef89664509ef8dac6b97022d4db6ea5a806fc2a2fc7945d1aac84f3bb27f3cbcfe7d3b52cf0b8bba7c95f0601eee7bdb1795973e38dc764c9e25e1577e3fe9ed2963e2dfb1bf9da9a4c89bd883908e90a4f964214d8bd5b49fe3cfd52292f3efabe5efabf3ef9fbe7aedfb02c0600300dfc702d76fa05ab428b67d2d943d37a379f1fc34db1a622fe5c886dad68b6f1f4815a1f04b8127bfbde7afdc113035d9003fcb4e948af86dbb8afdaef11824e794ddb6110012400bc735643e17597f47c9f81414fba68977e10a5c0d4800bc2d5b498880882c395458781d4d2999adc30a2e173604d8d38c1e114e64efcb5d1138af807cf94170f5f0a62d58ce1c427d51c37a33a900d2096b258201d429300b3a84bc5cd2c590f33af3d84cecb66ab4c0d4021823e240484d42963ff8602279d422269352669732a13e979ddcd633adbb0e9d00f26a526c075e1f304e63e34334329f66a11676c82beb32016153c10ebe9834e9dba1df0b402e73dfdb538dc7576203fd4314e23f2b6a4aaaa2195d136a1de66c1357d36fb33cfadb9e02afb6d726c0fc57e74acc957f7d2301e6547d756f55fa14076504698549d72b26973bfe7c54a0fb6901297ad9c953668f0545191dd8cda646d7b950f6f57e635a631787d1548afd1fbff7cfdfbfff8f7e783cfc31caa077da1f63e7ef5b919f120979affdac222d29db693ae655bcbf9134634ec01e966b1bdf40485f57fea8cb4c6ec2cde426ca70357feadf5e364fdb6e600f098e37c41afde65cbd92948958066c88eae2236d2280b1b6ac09656629d33df10a83b686626ccdbcbc253436159ecba84747c81f8c7822589094dd8854c1705257bc4915f056811306240fb8894394ddb89c4caaa6c6c8ff867753352efb0e907afe4d26fe377e5a80401432bdd4feda06192113289f493990024786ab9d33d9ba9edd2a8fa868464f497f8c1d12b1fc3a13fc19d312a8b6932137ff096f11897f6141c5935254be875b1870e9e7ca12e305a0fd821bf371da7e17cffb3155e4047c1f01c993000d96d250b3b1e865ee48eedcc0ffc61b90e19b0edd1fddac2b5de5c6a00b4bfb3ba43f02219b75d1740c827a1f8c771e32cc4893257f1a93bba7163f43d09cea427fc91eb795a5eea445c75fc90b7724b4f8e6c2277c204a672048ec4a26915b67934ae49d38f32d8885ff9d6e4132ae60e1f249220a484e527b8699cfc3d31b02acd3b185c2b69e0dbdc31c6063c1ad44af297ac931e724803e3ca9351d90c5aabc65cb3baecb26e5b4e6b3f3fe9c4a9ecf09a0bf8a286ffa64422cbaa97f0479e2b240c1912f952be983b188a158071017f2b6c8afa688db6ce3e91ef58f4fbbcd4b2b5d2707ffbfd6bce256de99e06b7b033104b9b8160c457bd00a3f5c92ef82a15010b4964cda30efb2c9d129db7993735a4361c143e969c39615acabf192235f72965364c9f4594b887a539b447c9f4f73a218cfd76c6104a22a2927fc73d543dbb17a938a9f4d3e59953c28ce2d94d011d23a2df6587fd859c8931b5bc131eddbb35acf0707bb0db86915f0e64c90ff2c9df626973cef19cd3d23a698dc9097ddf17127302b30d05463ade408707976d42ab5c846a52d0972c037721524364b118ef9c80b5d42ced6c780a6f02566532f8658a5f19626b60f2a6f53fcc09726032cf315727f61010adc1848f59c0ec6eb7c10ab749217c652c137c089101ab5d96d6ae0a52d9c7a9a47851b7b5a383ad08a3c3fcdd8c320b772b583f04bdccc3a0ab1baa86029abe54f015128b4f2c6878abb06152b5b66a7e5f1221e4c6b74e5e5b9f0265af9dff076266ce9b4c638276b52ad5fce7b452694a5f9b5b5d1038679fe73a10d4bca642b376edb26249a1152e04745f31bccad5ef3d5c968e241512f47dc9905e161167a13402d9b9a7a8f752622ad68239e35ee9b217f5e9002ace84619fc703868321f8b87438d16c9ba259c2e0e3950530ba8eb37a6fac8ff4e4303d751b93b1dbab300fa755a059036ad283e73390c73b10cbd19d09b91bb3370f7f08ae54f0b088ece469a07dd2c3723647e8009893b14f9df799706ee522f69d3c02b5b49a71e512d446c6dda9adc98b64275c6c155e3aeacb5e75d33c2fe605f10e0698b752af0bfd3e5b788b72fe33fe29bc05f8709eee9cb99a140c190738afa604a4d3cdc678ba671396f21b4c0ff5c3681ef4c6e56024f92b9b9e54a157a592bd5276ea23f46d275171d051b01b943eb75a3e48f91b7f1e4b6c64732b1261381197495f0cc19eb835070f12c1216ae9c4ff669e07eab6cc0c61ac7238b955a072b35b793b70e1308bcf145ea4f2aba6e66a5b29104569fb1035ce67f271b95f7ec38bf4198ece4f126d58b19984e369e6ac0069cafdd3c777eb8c146ed9d987b7c7d6c5739b153c5697ffef3d0ea8261e8fbf3dc10e8fea01a83625a63d93e3239f256e38d43d231763a99e9efda5dee928139d7bed57e25c7e8dcec1760176c36df73ffb07bd1dbfef920613c3b4f6a2c6a37aeec912c2803c3aa3629b8bcc8069297b54b7de7ec4235e3a4514f6d4b657fa60628d690495000f4212891e72f8abd000b91cc6183b6f8a46abf727664b09aa8e4b50abd0badc0dcc171922c7f4e2aadec90ee383974305f17a400d7d9048a8a7b3b6694ede65464008554799763cfbd00507845c0af1364c9500078fae03069686cdfbaa2f5879ab53ac451e46d74093b93e7fea893ef4e3b7e84d638ab669a6d282c0d800de40a28231b0a112aa2bdf6aa74d2bb36c04fb6a0b14391c865760ee5ad01968a40304ce5855f8a91bc2e9d64b36d40c0c90afd333ff8f8f6959fa96c92bff3bc3c6719fbb128b0107414e6636b55ae8ed377347689b7c31e27668f64da4f20ff7c18b88f7e7a1ef0182a7720d58ca039649b27cbe3dbbe68ba8993d319b63b7f86933399006dbe4f848a35e8e3b2c9fd29e2b47130775c337a781c027b16c010578a36a5acec9c516e118b1c0d15a151e5419422e06d4a406e3ccb2144c07e1d5ac286cefcc69cc6f1078305447c8d6a7f8617c49dfd4b46ce9e8db38c80f6a4dbbe9c779b6de87bb86b192c0e6cd7e4a2ddffd2cc73e0c60379a8e06408374fba1ad8e28a75dfffed8625efb2cf7dfffc674bf9128ab9a261078504b78c6aad32205211b48c0d673aaa28341243e785eb358a9610c2e74290206188068114c840144efe889ef7c2841f0ad0d176902f42656f2e4207dff20e0598e42ca4aa51d0cab9159b1520d1ea407401d86114d52439019f99b29438f956cc1b37a0a3f622c82c216124664bba832188e2d1628a6a7918f026081146e5d33b6e7e96bab800aad124c22f4d4caa006128e7adedb4289b054f89a0e8094f9ca17034b688d08580eba46eb2023e0d8e07fe5df6c601eb026651574c7626797415b855711eee5c099b01f10478361b660d01b5050add993c909742944dbe2ff5fc822316768908d4af60936167a2522e1403cb3e4b7da20e025e0f771a4ca76c96420c808fc90f1d8fad78100cae6bfcc088814b0004c46245d88483141206622b80a2e6eef288557f1a91bda684a2f9155d4f5700f82dc5c43fa193f35ee2f592c9ce0f447632f51e9fbe0d732ffeff736f3af7f238f548e69e10aee62a93afb4c947e7932f8f93af4e265ffa85c957fe8693ef0ec4ef31c1ecc9a07d7160b422518791a91764ea855ba75e1da75e96a9d7b62dcc8c135e65611220e68a5c12f2ea9405205f8445b32cb368ce95db17b5de276252918d80b8a06471b8dcd51acd3f34dca918e8336a2a77ecaa14e3b21204eb585196cb6820f057a125b5601824758931c54140513d5805619d509de9bb6c883ddc9055822c3481cd36a2e807675ae059212fb078903eb3ed9e50515b1491d42e66706715a78856b955c4fcfefcf2875036b6a2c10f34f3211cd0028a947b5d74e9c81acadcc53f43557ffbf237f09bf2427e8ddfb415415ecf4b835a071cad55302d1983c90d8349bef0ef5fd32717d56ec75ec48dc91f43178e3aacdcdb5e93765d9a25386772fa0bc2fc479d2e3cebb73d91ce27e0d1a2739cafc9db7f2d6a89b9648433e8a8d29d37d12bb045a02ab02aaf96b82f97f2d153ee4baf007a0b8dadf42e0b3d3d98fbb253a48a22c0e6fcaf5c113c9a1f7dafb78f2fdb7ed7189dd94dd80c9850090039abceded0ce9e7e7c78dd6cffd83d4c995023746a16bcae4e87e32568e8ed2baa7b6f60f80f5db8776ffba4021fc777e13e016c76f95b11169ff9c1f8b14e2aaeca3176e13e431ebe2e35d4afdc02102489a2f98c286955668c4a809c7e8012b95ea4fd352d74ca0208ab5d975561e570592009e43b73d8beec764fe29f06526e95ae56e7cf400b1f142aaf79c550c5e44f55e24b533099de817c3a417cded3ecbe4e2b8e2f1b37c7124f2f6e2c617f97eb7a069efd7baa95ecad5ab0ca8f6eca74be0091751fd4c00f8cc82bbaaaa233ebe3051d1e197d4f90566ae573145434c5ad8ac97e0b62c094041a5f50a1a8b1b707b11d35163874631e74372840ecb1368147517a1479e19311189beaa2f1f9208f090f1173938d54b19ba20168c40c350a7c6e17c7982b0dfc9122a4827d2be426ae2215d352339a453aa7366e1648030eb22f7c6a8f443f36e992a43c36c556bb68220c7e29d7d4ce38f603c1e0d5aac80aea9ff3a0d4c2564ecce2a2d8040a2958b086e22a1a6cd9b5aa6c0059f062ac6829f884364c56a2024459b4653cb898a460cf6d4c0ee694b888528b2c45b2add810e675ecb5a86a220fdf9870e824a5d79ea626e8884d1f8a244d63c8373997812ca551ba89ee9e461449a83085c34d646c1c5c2e4c2727849fae0a1311fb173936a2a514db65b3335150d403be23b07279e4fbc0401950f48acabe2c05d5ecc8e0ae57608590371252211d4c4a3d7c8b60625855537a918ca1f8b64f28b8ad51f4469c487d56b16c6ba33cade03d4a4d51d416403220f4029b13e3cd61bc81d4b4d15763c4453c64f422fc30549871a7088fa669fc5078a729387954f927d105ac5295886000a657154d6982629097e13c544e07e5366c123a257f07ebd293f6c621491fc499cec6e726b112d1005b506dcaee1d127409d5f825c01f8c20540a226d464d12a44a95a4d012403712f1104856faa1669bc724e4048576ce3b29b217755251a3446ab4483ca355cd53d3384ca2530315220434a510b9085fe820aae8507dea9d101723180ce11493334f7c4cfb6ad89645d72a71d53322c34ea6184db8552d42d018ab22cac36e35246c000702c085fd18649812eab1207803b126eea8ecf9aa2b2895a8724f0aec2ac033041d51f35725c010b0f0c2c50567541898bb90af448d78e378034d4681ea29965cf69848d60697b1ba04119415994c71abb8079128c53609f9656ab453c83e4a202309c381004dfc094ff96df3f43aa5c70f2a2fd4fbdc22e376a49971e5959bbddbcdcc9bfb797269ae5f077219dfe9f4f179e76738eac52d3aacdc479afc1f27292e7cf46fbbe7fe79bb19b6550b96e8be4aa5bf645ff9c5da59410e7ddb3d1f769b976dd7c4f48a2965abbdc483126f2c08dbe059c29289a810d49c9c6bb7b20e5c7f52c98a787d676c3d9a18dbaeda466f40912f06692bc4076186eb4de5130baf94848a30990e32f83039c1a75c78bb1c348545c1090ff9c8a3112466058ac1b23504ea4cf48d5b9ae48c4ecc808148a07115b617f2e0cf8e4f679fb5f6cae3101683b58575c40997766cdb7eed78593db2f18a568b085792586167bc0444e4b7b282c9f2543a0ddf1bcb94a8b4097d5f88776ce6a8646c55b098f0370a7f9b842d8bb0b7f93b3289bf0929e42afd8e12e0d0a81eaa826e371027c218cd4b50ce6c23389d4c083d5b27ba89a6215d9585c5128d4abc60f333e4e240ba9cf84ef8d881594c362fc8617b3c447fe42566e80af42c5836dc7a6066c29503c10d7c5c10e1a190f9b762a3b1f50cf12d7eaf33de1f9db1f251e1ff23e863221d4468cf8b501b84bf9c6be9dcb6ad8ae9c7bd8abc189883aba07b0bfe6c075a3497a510132164b9fba1d93962e1347e00a9d8947d39d5634b1e63f39115b420609b7d2fcb6b96d4b20b181241549573bcc384653b848d0abe6fa00aff67927713df7255f00592cf20d49206e3d43a9080d8d44b7cf8247806d55f4477297763a1365bbd59086cab8ca02073209f027660cc05efac3438615be9b99b54ebab8b48d11517ef0dc179554d3c952b8cf50887a16e418713b2f754b7a0c2db9e4c6567c46340c9e827d9905c535307335dd3ed9265241847477c5be17e6159c2bbf8a29292f5f663492f9349b933c58f6339896c228fa8236cf65e2c28b705953ae4046b53bb0b32a5534ba760a7c7a2520625fa043d7543e91e447c8480af8950f096fdf1f1f50c5e07410dd0b558ed0141d15e09058617cea8a0505ce4ee1bd5c858b2815d2dfb066f07f1126f2ef7ec74dd653641a209aaa8603c2f09a01b0109089f83fffba7c309412db070c263313edf391872c124e52038c30f0d3393e4e7dc5e7f80811094d77222643db276033997e33990b0c779b6b4d13ee28691efc288fa1e87c43daf587784af65131432b7a8c78af30b79fbcaddf87e40ec14065393c820d8a0de8f939d8e743ad01bdfb04fff68b8efdbe7fdfef175e091a89d0e8636525ece76773545d9ebb1a3b31fa8f683ab61febdae2a9c46d8d8698761a861b80df771bc87ca8faddeef5ebe8db598101cf6022b1342afc22391682b9cb2163e13df72281183d488804500ee7664d88ccade79711dae0e42faa541e8b5b43168a7650a9992ee32121b8d7b845733082891837aee0c3761510348cb838eaea1a59607509ce821def81bd4b1ffeca07bbac0f366b67ae97e16643cb3533b7d3d8439b39127d1ab3897e83c1f905e0553d2fff796335e37bc78e909a2fba40c8583686458e0db29fcef2d65c300f9fea39181520658b8dce7adc5163e2927ec34628d6376f3d3e5ce5e79be89a848cd2a2b6fb2535985ed62c2f3ba6ca0656b37aec86fcf856b8ef99d099c94b35b5902a76bdcd21201ed889f98d641d19de303f3e7ed49581c869987218dc3906418d2cf2d688927473290ed0a2a2be425f9c4b3d56a0f08eee72f2bfefcb83a8c360ed6cff7728177b8f90aa3830007024831cf184cdf1f1843be16a3d3cf5583a785a66518c88a96d8566725bc41d3529a64c624d9e5a376c251928e9a56e1de75148e449d0e47eac2d1f113b7100d990713be46553a779f56f1e8def64e477ed2b9fbd3aefcb2fbfe2caa62ca8f1feead4aed45152a147991def6e474bae92ac2d1f54e13af8b7c2973e1dca5f4841ef8f469158f249d4069e063197b02018a7e7368807595eeedca23b38b042a682c93091eea6815caf6f3f8cc641fba163ce9b43f42bc62eb452fa12ad0b6419fd154276d79fe6dd7a4d9203d91b72da20de7d80a4336d6e754445a8b468d17095c93fc401c351f7b938a784e06620000aed8b7bd07e62575c66fd9cf677fa5c5565253f142f824cb39104bd0c683981b674982634a860e9204e1a76f7b538b6a9cdf758c889446b774640777db0e4d822b924f0e08385b893b533ee27b0a9ce170f9f8cdb7bd4e262270bb1d2e368ada7c4c26b18fee01e9f7911da8e4f0b6eb8caf4767b0ae37017002493f1d24e49ff190e0bd87d08117a9414913dac39e58384aa887caf05914a04c0430e7a84da1a5984332c038e44ef31dfe0b74222cf68220ccf905101f5d34a2663908c9644806a21da133d60fdea82bc838f10216456243a2680de4d59330105ae8a611b52dd097f6c5167b903440597b3e3faf5b930c8c8dcdf53cf2b8c0f22ac1720f885aa89d497e6b10d597840c211865f3fb91322751022f81bf59a4cc9f45ca005873121692f8c14949ba24ddd8110547c5c3ae246343afa1a2cfab9436290cf730cbffda90eb4ce159889c8f84abfd103ac2006e7b071e56c194729784cb34abc29deaf8ceb98347581d222200b8759a005c6c103f9e5998e0e4e4c8d2b64c269fd8f011b96c2982cb40668f20546a548e9df118f1985e6823cfd0a311b11a2414a1026762a74d44ec4d2694241aa3e3216f9cefb841883c4a29a9c89d65e3c2d178fe147a218d5d51065318860ddf7e80ed0228dd5a8414690464447b8429253f166b679cef313cb712f84231841f96258c83d0229968cb9abc4a866267bceb417099b688ca46b666a1d121c34332352b2c4a186124295bfecb57d1c4134ef8cc4e8b1c5e3b51917b5c5a8086173a588678a7033537c88f070ca03c1c41fcdbd2681e614dac49b9033cf46047392dc0dab190c4b231c939614091cc78a9904a8cbcd21c06402849237d1817c22499615ed7fc9117fab6107a372e771d19e7b6d0a3ab2617130a2ac1c2916ff9b06e7a93f85ca9034b5e5be902a2ddfc908e6c87f724b63806e94966843a1ec7582d902f7549b8e5ee0bf751d322734e289383e3a9d99958f8ae40e8a99a98a122983b880ab123d3f8ca791c00419965d944bd5951bcf095b73d9b9bba696f494ace5559afaa71f16832b6057625244d5bb11106d5a60235b1285e01721e644aa82165e523144b45f615105af62dd92e3755e3ae9a8cdb81f3c78cdfc66ca2906d47c8d648649e8e586894810e8c4fc8eb25e3c6f60889854fbc90f2aac97702d33ed1a89c15b3585e6c30e8a7ddeb9fcf2f8d2fe497b798cc3649ee50d8b76d3a30b5f206a6bdd8f0d9e9c09e3184fe5394683f0842238f19feeced2b79d1a146bcd7363d1636a9dd8a27df860ac81bdac3402c11bac83741d2b9b2567ac8263a76d475d9366e1fc70b96c3fa6a7254b1d391570ede006a94fca37ca423e2acbcea64f1da11e6496ca841402c1917545ef144d90a1ac4f3c5541d8c2db8202d17e45ab54aaab2cf7a181faef3a6f885ab41f7af30b91a33ab0c1a64b3f1cbb73ddb97be43478b9853ada63ae5c5e9021354f65f325cc73ca99c117e752fbc36088171a7f0dc8c2881d672e59d88d120d20575a6a2e42315dff6b2b7babc155e2e20b0f9ea7350e31d46d336b3f3ebb3dbcc6b14b9e51ed001ddb315027ec9237bb854eea04557cc833644391e7005fec4b797cdf76e2c210d5fce9944c1928af54db60f7200e5a006a09a12ee788786521a9c37685d837a6814b96cf51f3c93ca3a984a6c54862d66a923019137c04ab8285e8dca5e34077ab8db86272ed42e0a99bade995c795eb049406c0e64f6242ac69f4c0e4496309312d009502160133f8aeaf0176702c8bb432d63a492bbe58270352a29a40a48f0111c8c22a1a15e403ea9253f794545b63f1bcbe7bd880b61f57482650e4176c4147b59e2eb166e6930a88b8636958933ee57dd120b7c17cf98f3322f13e14c28fd53ea37a852899092ce0b022be495bdc6c347d0f584c6335b0e9f07ca21e0f7b3d23fedeadf1a63f369344640b464bc4939ba47ef4b2521a01ca5dc5274387e5d04c2eec81a8f1e8b58f1a12a6a15dc141fe5c68a68222fee83f1d9ea53404dffc96d04b67333a4a6071a8a1b433b5903bf7f7b797c1818acaf05683bedeee31cef7af18d590ce0702608abc355b235b78a0b9f7b7ceef1f9753cfbf123c0fbc75fb844ee4e2344ae0bbff8f907dd77d4a1736f5faba2c88e50e8c231bcedad4eab781fe54552a9d361fa1977aa7c28d3fdf1418ff43056cd425e5d39eabab2c7028dad63e9ea1245d9db9e2a37a91c6b5717233b45393b0fb41c75e97415b5c47f7c7b79fef15d3ffff6dfbbedeb41e86a545ec86a1e4e81cd4918f62c4859b45fa5adf6bc3d5b0d81bfaa934a077e22b2f91d223abc8c4a358e4a3a1da42e27f17f70da898f223cce1a9b4fd051c7833c51bc579739cdf341e47fa2c6866d75f9a96b187b64f7a07fdbbc4c01f24e519a6747e668a8a5f4cbbcc2f96d9f7f0d6bce161e2db4a7dcd49e4b3e07a41aedfc700b60e1d582dad4ac3e60cfbbe342eb6e82c7d30cc6ff8ffff35fdde6e9a1451e51f3ec2e6a9e03ef599e975740567adcd46412dbc770e9078b85f710bf31b596463bd6647f1050eb9a32027b4f6457749d7792bfeed649aac3c1d636ad01d702ec08e33eb53d0bd63465cab084750ac756b63d17a71c3e71679f7873da4547b7575ee0ef70f877be73de865bbf74f9c92f7cedd8304317cdbdc74890105c33c8422feaf5d6b8b8469d58e62e592353534d90daf72f866fef60067a35af4c51e25426943c661371b06242b8cb286fae2608a4470a699c9d2f5c809c0c22e1d0f94a3d6a18a3c94b726d3c74b1c2f058d60fcf7f3e0db65e2a4accf1c81636b866d9188716aae7cb0d06f2bfe23a8a4821012306a85844f65e7953232f8b5e5c3d68a47b36d89d626f331405ac703d8af28d014d0e9bd50817403aadb478141049503df58881a4268b0d44701661b580301f880fd98acf121183ec7fce4df12b41d74b548a5d132d66f3b1027165723e4613e0e087c24e462518ada846233e31c23285ff76c6a6adc07e2f14f58fbac0b4e3fbc0f3bd4409ad436816fd015db8d28465a90ac49e047e1ec0521a4e37a6dffd3ed44481763702821181bed6415079103baea151057b6aa5ccc569517f858712bc01e991e7eb4216915a95595857f61df38a4cbce32b11c01ff80e8b89c7a64eee113e4ba1f501a8ff4c1e7b28d68e7baf47612e1679694ef580b457b93a84a56a2b3d186e0b92d92d7a891b873b88b8496db8e0c9fd16241d2a3511c2f149e64f89e27cb7b183671d0fae2053250a1e59289e753b1c0f988ae1c9fd18e45910a505a887835402f87d76ac2b7bd02d8283dbf3f2f8ad7b1da8688a602d8bd424b4f1c0ff3a191352aa60698bf51d80f60ca926272df140029681c61b0ade808be17606a46ce5375e146d0337b17ae800de612eb6b81546bc8546372f5a08d361ec815e1a819fe2ee782e02d627f3114cd57c4b0aba0d9a7faa95c6cbcc949293869c47098b977a959671697c586d76821844809aa26c5741d281f023de4a20f7c0f4445406f1d0a8458e9cbd56708bf8de6440e430beb6adccbb5253ab67d72456a968a081bd811f4a1c04affce97efd682206a9d1c388983f766fdf8014087655544be4910c406addc7b294524dbb90e844bd972f28a334a755eff0a5259154777245c19bead764553235dc930c96d08a58f87ac0f140e5ae1ac8a617be5b185549d95531f1ae4dcaac6496f26ad306966dc5e525681135aba2dd8f312542f11855dc5d288a6afc06a83b48188999479717f82f82448e0716f498b182075125c7ea1f4d2c78e26489f62869c809e34aea94721005f0a6125ee4383a1be2fb22ac7a859af8661b5a7806fb6ab779681c29492d598cabf801eee8fda2b8a3ce1dd999d179b86217caf8419bf4f3d36e0cd7ce4a8b0758fe322f565db979f1f1f40b7451737c98142d7779f6f1db1e78468bb82b6f79222bd0d4b5735e513db2058a5d291ba2150199eac2765a8fe251466f85ccc0266c2e2432e6ae09b73b8c6f8f48683ceb8ed73f9f8719951442255bc91f666d0226424c424c91648e6613b42473bb605cb9777685101ef170680a9fce4424423d6a50128f1392dd0bfc3eb148c11c72a828100275b484671d96797e330adc03f2da9867d1e3828be4a644412e21a9d5389b247cc27b4a23ce885930f84ee026be36b9ec749059efe5de49c94e90df67bed8722a4d7582db6603e2002030ca7b4c4496490a899c2c03113ba58d466e47121dad8ac453907290606c16fc30cfef28b8f12ceb5d3690e473d2b220196ec8aee6822ba28a1907bc8adc5ce0c74dadd015431ea90e36162fb67ccc1cb0df82e022a1a4a90ae74644ed5281658630009a8eabc7accfb83c2ff9a4046541c4b948dc24eca820f268295fa1fe409d10dfa78366730bfd6962da4a5d60c69b7263a344d1ffe393b02d57879d30601476c0ea8aea97aa46152b553b63fd1d2faed5882ea105fd086a2e883b198b2fdbc6dee4748ff5eb02c2d55d7aa28bb5e437d4c1afe6482cf561e5138010779e7dd1d0d0357948910369d33037d5a9b4a28562a8193e88a640ba5c9547101b3b7f20eda4cad2b64048b7db883cb6e3fdd3c53b67659f6203260a3b698ebc579cf8d722cf4fc70348d872424bc827214c919109a04b1043a17d16502c594c04995818848721c89950dd56b0646087cb903b41fdaae4545b325aa03db66cc49e46401bd584dbc6391264e32729b4039a63a0ed693f97ea25635dc387f21218517fa722efc4f4050ff83324ae524b21370735a37220aeec3ced7298beb8e36367b66b4250557438405022a281e4d83d09464860896d8f64a2b8ffa6a2e3c5a38911b4972121f40fe14cf0ca92530ec57fc8c4b23d9054e4ed24b0b5987807428108aa03294b3acfb54a436f9a9c6b6e7abbe825919fb60dcf448df0488a78acdc4c123c063058c3a6f5f2aa7f7b79fea311ef15a1c408f10e908fccfe41110c6e5152a62c127724d11109cab89e47007b075fa2a1c8f610c561b2cbad51fffe5bb36d8acdb1084b4d303069f97a8aefb5587fa513b9b811241126c34f345fa51445f22911c6a46bfab6605f86c99ef92e84f276cbf4838be04c75eceea0989a7fdf237112641b2f112454038166c69cc32e434ee2c9c2c454a4e8bc70bb5a94091abccea464847a3b6fc15c26783c1e3f5861a09c5c0cfd9503aa0cc8390ca8380ca857fdede5f16194fc705dba2f9d4ec78070395eaeec31bced49fb2e1cdd8aee2b708e331adb78d461658f7e642f3c862e2d0a21f1a7e13ef0e1f82ce1e8bb74ef1722b86ffbace4b3cc4de091b344c2e0a5c17b9d95ed1237234f5b5c8e7aa4d3b92ff84c96e4d7fde6bb44e9ed26a97422fc755f4e2f93b26ffff8af7f0810a36c02b0802772e0aa2eded155be9e4c5479e381de387d3dab8b77747e83785edaf0ee397c0d20e9f12be14de42ec38c9a782a77492d092aa7b6377d17fdd07fff4b001c5f25d30816eb04e1ef469756d86b87f4bf6b257f08b216099239986ac4b35e625a629779cc27202c051a60a1a6efd9a4e703396132386064179421a2027bdb3830d844cbbe656109eca28e9f46c02282381c05c5dd5e0c581bb16711c98e46261d4dcdab7ad4ee20e674018eafd000444a418a0f11ca90d24c765c0e22641ff090b2243ec5044f5e37effe004e3cdf12aed857454c2165a9d517fe392945060f181438c0b761bd80cb2452e8d821000a21364ef4310bda6a6f51e9292c1ad5cb8a9844ac9a571549c0858e17ec350d0066d71688fefbee45ef374f9b6fbbfdeee9752c90b09df647dff9a340eac3d94b5ddacbfbf4b61f00d72ddda6268240264cf3338d7fe384ade63e9f22abcbcadd034f4d0982506195c67306356d118febc76f5dfff8ad7b6d7c890e6a16b6f65ed650eb5b7e1d7b02aff0a3bca4860414ff91af88543d04008025e13fc280e14da54e2fd88bd3dcd335de21beb0a8d999b4614102cc0b02027f3cfb689e7f19a425b008a90c4882204802de7c6316a60fd471632fb44efae4f0fafcf23fe3744fc2b4e785892229c8707c109b9895ee87ebcc4339dd452837b339964f66f756c0c428d28ea8d63e4cd075138cf195c66c111775ea6c8d3a5cc7312f24c9d2cf14dfb02f14eb324d6ef72c7a7b4e919b856a78a3cc5d382ef0411cb5b0eb09be90d81c620f80d694c188f601ab02e8982c20217750a60128c8369567612e3caf24a9eaaa78e29ac0664f7d11aeabcf614f6405797e797c7b7e7addf49749e0a5c8d895c0d7425c6bef55ece6208e792f2db16acc29cb8a2ab77c710904b0d0b6acd34d47a3791dcccc7b7db727f5e6b06dbd59977a22df20dcb7c02f6275ec66d5b40b09e79b0e06e9c85bbebac854be5013c4e63a28b63ffcee4d0d7cb76f1f7643e75ade146fb98259a72d32a4381d6feb8f050cc1c2e1fcad879b75d97c7cbcedc3ad479bab56bc13793ef5edc3e3e1f5e5f1b71faf8fcf4f0312c42d90d22c10c4ccdbbea0954dca7eac3d789d608eca82d6fb270fc257fdf8a09f7eec7fdb898e9853f148b6a3741f5728066333e6b26ab321332795c0ee52b8f25e8afe69d0af84ab51e0a43ae15c618b10f91a647041b396f8c74219122465c36e6904acded87a52a5e76b4040388d319f111bd14b70a96c1be52c82cac274ebaac49fa21458090bb46f5e3ab55a47275934a4f6bde8d288ab1ea5e817b15d9c2ab530926b07a8ba557f08303e3ab9867cc7be01a85dc088905542a964123ae6928dcbc2ce2cc1fc2011da2cd794c48a16a6e6164403fe3449d49cfdf3fbda226e7e8cb851953403bc141b1bad99078f153b15a851817f0e3c040c7560ef8b049b8409cd81d53764934ae390b6ce002bceb7209291bc03525fbe4a202f26be897cfe2a7cd4ae3d745144f61adca3151cc1d970e016cda7b9b3c8917aad0c1f0720fa95236032ec37df76fae5f975f3ba9b60022c148197810887cb2c341206f29692a7aa3de57f6f5f09188085a93b5fb9664ab373a497381cb6d7517b4d3cd57440c17ebce78df65878d92548c5c4da4bb5c6e78bc19d722713de55a1bfaecbf4d71f0aceb652b0f9baf2bedaec7d9a57b8cf6fd8092510d90c0ccbfc37676ab3778d03387a75a2027eaff4f97d9163399ef12871bb4398ddc15f013e207d74659385b2c37d42daacbe7d659fe02f1c7955e585fadc7fdbc8fbc7fff9afc7fdf76749285424c462d368ff40e43fea784d4e1adebf03f9ec15a41e495782dcda2f3900935b1795f4cf02afead1afdc82daf1555773c9405c74c01e9f7e7bfe574beca2b025a6a1e4d10d8466a24a9004bc20b67a400c35276c34958cfcc858b746ca2bd46332619e095a68157f8ffbc8169d4cf5e0cb216bea821834add2a2e96a6ae911844e1d3b7578aed28a24748b2bd4bf3ff6afbb5124c91a979cf23d41cb157f8fc6c6553029427237ab0825d378b19c9b5aebffc3debf3437722cc9e2f85749d3fa665a45be73d9c60d17ec95ccb0bb0b08a2549c536cb6116ccc1c7efabf857b5601248a20d9d2397766fe3f931ac4a31e59f98c88f4703f0029fd7a7f70d4a56cd2551538129f5dc6be73d8413dd385145c021ec815ecedfada6e3c855163d2ea4a27db95b346566b6d9db5dcc5946e101b0c2efb696e3112a626b4179b6bccfaaccff7cd0db5dab075397afdc72405c3f087a00582d19783d7ca1f0c37c90b3006eac722720680164367cc792f341aa8c3d2531d63d7ee8bfa6f139d841b3d1a21cbd3fbf76ad5d9672cb31bcce6faf3b67315b8e88b09dbe2624650e468704511e3dd30b4d7ad96df6cb58d4e2b9213329b898c4866d08b5753e6802e2225d6bbb89905e88e2bf85f6d8ba08f438d701d542d6f9d04b5ae662d44272d209f342053a8c4570700bcd0c2ab2ffb592e94b07a0e0e78be1757a2b67058587bb54bb801361ede257e9bdc00ced494e7eff3a8f5b69b51b1b5ea59fc9bd29c403904fdc88be11c9d3fd2f3bd4ba1b98c44e44e16cc64e138bf6bf1a0c6d8aedf3bf1bbe5c7391d1ee9c5917f1bb29f77f39d939ad4bc9ebe79be87de21b0a8431c5d02485610bcf33b96bd3f4aff23071739614945567976218a75410dc928a316a41e9cf73ca6a951899c58ecf5eadf111729cdf3225037d06e0686e7aa6ff6fa0e5cb0adbf0b01409de047eb3ca67eb4a47581d1e8d6df85289be40adc4669de09ba56ccf3af59ad3aedcb5752ba10a947402a43aa24b9f46bff41b085978cc897e4d2e00d5f3b7a413f5db57ea208fe0c3c0121c1e6da0e92e6dcf8b0e21a949ca28daee7f5c26da0dea6d619d2f8a33e5ec8b0e02a898a736ffb00c09120535d1aec7e6d431fc479a4cf8b3edec195817baabd9b32b35f98003f788fe5477a57f6ea8ac1a9cb2e47a45b0b5b2db08760bfa06526c827563b364903ccd250fabb1036d9792f5bd700929e930c5d02ffb0d4512d2039393fa3d9427f1742dac44e7689662bb9375b66b34d2cd330a47e43bf75217afdb7cc8f4830673f44d79dbbede9bfd1156476675237146eedb0ffaa23294c07a8385667ed6d97f65e448705f64fe60668714306f9b61e8254eb363a0f71d7d0b492373a91eded3cead50d041c5d2b2460191c727143c9af1e471dcba68d83233853e82c51f2e43cb6b8dace0d5ed886d8b226c10566d4aa5ff74bfb6ae76968d2c684f40e661c0f4ee31c5c00dd25dceb41fb9e3e3f2e0491218cc3d0df90bac5531bc6f7777d288abaaeda8fd11f91713eb451cbac155bc997a225c9609f140e5b0932ea231e7001e6ac07fee45b711e7c17ad8cced7a5ddd0a513fdf792367e266391cc094e8afe5d2aad76b159fd01f304524c44fd787f5c4f4a41986688ad4fb97827dc049722930bba36850af685d287cf3c8cb089e6fdc4fb783fba9adb9708956bbe769f06738a936d74111ae5719640b5de5502c5a48e3a2becf4aae469485a43f82ba9ed51f7a4b2d16fb431634138890b41683d1ad150b12e24195df4ea5402fc9774c9057bae57ab051d38b95890dea2032bf8beeaf74531963001894b7cb1ef7308f426fac09aa795d49b41648b3692e35c3084a8d75fcec90bbb8c9e30e810189afe3b36499e874a2cd884e4034a2d4e62e51b5f0edace4c4f416b94b9798a1b62985ccae252d5f1423a619d1489f3f343dbf6eeb6f4033f749e8a025684ba75d127fd371f3054df1f5d529fca7b6ca90fae08565f8aa1622ad789b444b656c194832e5098fd1f992ecfe561fef77c1f5c00a3b40c65e7061c0ba845266d079885e0cd0c0083d7c0e9983feefb4e6dee8c47a16cd467207c470735003c65fe11568048b0d1556ae1726d4fd105013a55a75d5d9c4289077da0dd3cd72427ad76306b9d6f8b351da8f1ba11c692d833998f8d7e56e77734a5d0a64862f0a9dfd4a7d1c5016228a4ac89d27bace81127463069b9bb1d2c219bb0cd2e204727f863e011e9e79fb28357bc17d1d91a1a0600166cbd2b99096665095bb4125d1df2cef94adb19865af4ccaaf7ff127b5942d64ee3911e1248d398493a61bc6be1f8b2f74c24e83fd8e5a33d7e5c5eccf2030e7ebe27ccd1c53079571b4436407022508d20f30a941199884e086fa9947120bb8e67f815e1633f41b4042f5db78d7622a2965010efd0a4bc40122343c2f0a350172991c198f35e20dc21952eb241e04257dd20b00997d2e9115538249da8c17e399b77daf1afd40fd31a185c0bd8f30e7ac4ce035681c385c926f3b9c468f98efced743f897f40e1c31245e709e5a2b461aa47ad9540120960ff9794c3236954e720a32018a85bda0c3fe748f8f1fdf7edd38cc7d7718ea13044934969ceccc1e1d30ee1db6e7c029eac6d936bb8c8711454425be4dfe4bc0f358061b26ea389dd691f6c35fcc495acf6aafae3c1eeeffefcf6f7d0cc7c6d268efee0afdb264242cc5f978395d16fea75dd94311ceae80f732b7dbb7db4fff17037a32d8b89ae5c151741cc079979fc95610fba7aef4045b3b3ae226c589c8e157d4567b4593fd96cf31e7f4db679279c849c373812b37b88a639cf581121c53543d01f6f02a419177030bfd846f414bece98cde21a02e37187fb9b0c7ab06c90275ef4f626ef6c4fdab5cea378949904bdb177de02d6edbc4d2eecadd3450e2c1ad065d3351e3991124c3402fe7207590f764d7180ca6ac9f52f0a6e39959564e7af76b87940e60e12ca32dfe96fbf02cc969126179dd6fa005224b874d555935d31d554e74dedcda08f0a5b6d274c7332782ee36d4470571f2158fd14192adcdf32942acd0cff02a4d2d7841d144633f37c2184aa7b04738c3b97bb2331036866d87a175acfcb570c90323e0a287ceed1c40e3b3aee6adf7d7bba7ddcdf1ea5a80219b04129e0b105156ca0851bbfe86cc039e1a8bb1d2f3310ec782d43f59f184c40af97e81a36317c8f8e4533dfc5bcc358c084c0c63c9c2c2e1494d725ed7343e1dfb739f57764320017a1d76e8b5330608bae739d0ba7a0a7808c3612911c285f1a18a8065b02b9f03dc057eaf8b72b01889e27f94ef2a36f06b417122d9138a217bba23a368a216053002d725e189117f2fffd29fb3f669def76fbfbef8fb7fb994222b89caf00386f98dca8602efba863504cb46a655d49704d6b3bc725a55927bc5f33bfe3659ebfd64e8abbec8cece77da265db79d96dc6dc21c1a58d0492b786831fadc71bed39cf5f03f8c2cfb60757542ac387542a23f254f4a7ebf27c1f8c1cd248e54476e9fdfec76d5f073c1682528c273d934b9ea929bff2eb0e79122c13a51cd705bcb7f888adf86d3575c1c4023a5f971954f2f3bd580f44a42e1b24726d1b5d4348fa8122d9ddf4b09fc3f0c9851c7524bd2431108b10b9f32d4c101511bcfa2d33e8316c5d44726f646a3eacd628f106982bef722afde0613e98af933606726a53c86b77556f07c214a53a49651bdc4044e37014bb8aa110db7eac8ee2c42435fa2735886115238919db45c57f69aea566f8da19c2a8ad0f585e7855d9bfbe682573da4a3b9707aa9679e8d360786851ab967a86a45e6a806f9d01468ddb5c5c12bff50e3ec44c5dc03046f218e111c1466eaf837a8049bfa77d21bba2c316af1ef5e98f84143cba9ff9ea46466fa277d3fa41f5fcc5dad9bebecef28c976be73e5b194671e9a4d70cc65f4b39bcf8d27a336cb8977d7aa4f5d792362fbfd42301afbd7bda4e77bb8ead2d26220d727d1103cbc9ea2a357ae76f8a9ae6e9eda56c2c6f5eb8b93ae9444646e55fd452b34fdbdfba96ab3470077d10b776b6591b57f61fcff76fcf11545f7591b8f69b36c603c0d0f1da83b0283cdf17d3d4dc0c639e7f2a9b3666321ba5ebb249fc254115e38004061e78f2f197fffb7ffe71fbcf9eb131ac2cd1e89ec85e844e39f35586708395abb818b7026237e9f46e5cc30547fb8969edcdb5e85afcc0a6f2a7658f81616f481854eb522d0f9d2d97989b11ff3eb351fb692d8f7fdcfed3feb6ddfd63ff7dbb5b3a4a40273d97639db43eaf1cd0be20e968aed09758c10cab49745e5fa39c253aae65c5809a4ecdfe7370859c0a5d07ec60c8648f7c708490b423e86465579eeacb503bf5e06906191edf5cd462462a7f6a2fe8f398073b73d7d9b5db9953febb084483a747d19656d83ddcdf6fbf2dab66024e346eaa4e5957da51a123d148852ec8b4f9955f432c00a312b925b0c3a24b9b7c5d37513d037ecb13919d23bf4a3f121ff1b6e26dbdce8778ad67cd5742f00087ea5d7ee5d74cf491a6459a8b96d4348a633c800ea10720f4e839c927b8b4a751cc2fedfcc1ce1fd48aba1f6c3b62514ef025eafd84a0a6a33eadba4086429f9185897a6ce0af413d0fa1013b73fc9d22597e0db8f07ce6fed59d78ddc25f8b1649e40aa764433d2a03100a2f83b726d0aad443f4636259f56d7ebe2ffae7ba6e2a89dbb436d21b45db9fa06b565036a7e01c206e8efde7dbd3e3c3f4cb51cbbe70c8da4cfc3b35c38980a7d57c8680cf26bf87805fd4934dfa1904bc96f4f7dbe9768ef47401fa5ed02f2f89aed44958cb843bc83970dcaf248cf836659b3f331f83ae6c6dbe38d641e19463a86417400dfe9919e726816767983e36e3144c38a822f5fc3f3bdfd4b7a69b5bf587d906d5ac48a42770cd74301c1db26b9dbb6eb22b1086fd34be2f9af8617c5f34f162c20967d1782de17c715cc1422f0fbddf6dbfdf7610f239645baf3a65d6f4279945a9b5785d2ea5ffbc51cb2f13049a05a54c7002890a28549800325d931dd9b8aace98124cb1c560f2f490f144a67d16bd80cdd7025aabd43332910b5dd5d0a8db239941b36da75e6046e8c356f5daabd5c3962a7bf87ec4a70713cf654f5f90585ecafd7abe575b70846ec24d76155aa55347557f71ad9417e19677e83ef52a53e96370d6f944930550ea43683b5d96825f1e723fdecd30dc8204cb0104c0d9b566eb91ae0ef3688619894366ce040094853ac5200eeea4f2baa8f2cc2fae25b7e89c79736e60877315fb1585d9349e19dd6658c447c03c92adcbc755e169fbdb6cd549c000fe79ea5f3fe321874b38c5b793030e948bd231aee6ee4f0c3049ef09db0d56568619b5f93963af701647734910ff463063af25829c263646dc23b880b9faf3faffc545d99cd179be4b65f48f6f0ffff9cd1e6ec7bbddd1d38baf19237bd823dc48d4f5a4665acc5c7fc2e2d252656d8ea30413b6af1764fc3c4cc9a62fcb4930073bc17b85d5213beea9177ce52444fcf583ae75040bcfcb2a3e8167089ba9911baba0f48fd6494cd6f9d2dc5053df174bd6d5a2c32d818f197188d973471cc9d5d2202165dc009a84a17c096ef06a730e7d4f558c2e43d1d4ebb82993d830ca3081163083e702e8cd806c04a2bb12f45a21d2060e8c0ce9373f0f10a49254ab461f322bea9eef8fdfeabb1d139a6bc522165dcd11d9c7c80d1ffc0d1e255e871b6fcab51c5b45a78cd1851026a469d778a36bfaa1b874529dc85d35c346ca28fef0e2a761fe6998984292a00c5e818badf9f92becdcf0e262d2096e4f5a4bafa27d6edafe763b694febf1ce8395eb7090e77b11db3e68ae9d2fbeb400fb2e94dfa451e410f4baa30c0719d3213ddfdb68f326a97530129b3f6dffd9b9c51a35af27db2cba13d958f0aa93e3de62cfc9251c02e39b3bb5fa6b726defbc2bfa66d21f9d77e282032bd39efba37a9149af8dcc029e95ac6b7bdcabe02e6d2912b4acb057f3d72ef8971f87f40b0d3ca584aff5d3d49697e040f4a21577253a7319715e5f71fc69000a7b403f5b47e6c59ecd5c24a8699f97a9e8535707c1073e39c5b63d9edcff0b8b85b67bf8d1b99fb019c87c33c3ed0120390a9d8b4e63c9c8039875b4b0e195c80475bac198c975d461c4d331beaeaea10ab8a329dd0104a221cd040845a87331e81d6fa08fd8d41281e043d5254a27f450f4cf2c8a02d1849ee0d6e204bd10b52077507d209f8411e66a999e1ed3f73bf67db343ffeb4fdd35bb86e672763eba16b9ad9d5df0579011cf8c964535da4c36ae21e84663b5eeb99f62fc8ed8031813906760e54ca7f527c551e587358883f66f56b8de5d8c64e899e8d505fa9d67edb61461794cd454b1ddf55d1a0b65c1f5772e9caa65a0f6d18a86d6106858d952a3876e85c7e6aef419b3cd53e769e59a9fb9eb9b0d84d59f1dd66e7f3c3dccbe1c865562871b3a3747000fb1880ef7c1e51de1550d730a5ef39ef985916276798aae78c8b868b369fbd7c43dec50f9f703bdc683dc2e8a43ee4817ab69e07feb8459a0f1b0602c897513743c5025cc33c461e62181a791e536bf56ed6595b7014937da65a9fc03b44480c6c16008308b6b7151c7503369b50e5edd647f1cf8c73e9cd807d077614cea449d6e2a24e62820d6f5be909ae8f2fe551d78e8c05ccda81c8f405c300267227caceb7a396f2d609ef20ef47bc1a5e8229f175571555145706d11b11bd435c16e3e363f7987fde93d5ab09cacca71623a586ab404a2997200eb1a5b6f3a6d5f2479a212f08a0db1b51bad76e6dfb6d3f430bb9c951ab65d51aa020315bd1bd2b43059a51dd48dc8aa162dc94df49dc73a19f3ccbacbafa693f3242279b78275da9346f8031d3b937d4a02c9745916843411e1e8b9bcc0097695ade1b5860da8b1e00ccb2b2d1b48feaf3db2cebb60ddd6de533aff5634c1657ddd7da0f376b9ad4aa497162bdd688b9aeae25570319b8aed11d35cf606f0b1b467f650ee9005ad40d4bcd11afc42c55a7d593cdb0f4ebfd992145042e78d4dda30886644368cc7c3473efbf6b5e04f4cd643f9fcfc87f5478dd36923458fa19b9b6b9d12397da68feeee1e1777abba8006c3910ed25c680aef92a3f2a275baaec9abf9c5329da238703606eb2a70335a33e06ae3c142ebc4150beeb65fabf3ae1af0b0edac6bc02615074014d3e5c36c3f068b4fe7364c747a4a006a476faa17cbc406b974e508201a1024228848f0af68bd7ad7409e88fe6f604c418b31e08edcbb3f56227143fa13d48083ab286576d892c091d2f7fac184e3ca5e58223cecce750e786d29d3ab440d5d16df00c6f87a858d9813f9fcb0fdaa9b191f85b584d26823e1d5030525f857c88de6aa49aeeee6bacc1fabcb8c033caab2e95368bba3ed021065146a4627c89c50c9dd0a2e00bc8b449ed5a5dbe48f749b8012e60e8d5b6ede716bd2ffb6fddcbb0804ab3b7413dc33f4d3b466f3476b36f31e30c8e76253b21a4d8624c23db3f74d7ffc9d2bf82d80b11ec5ec9d277fa4f3040762620c807e4722f3b47af8b7edd9c1e642e83caa574048c36a273b1dc50bd99f37c365c639000f2e1f513f70447df788f7a8efc0bef20e3bde078e78af20c33b47bca8c4871fdfed6fffec15e9ff5b5493073fe05fab8360e4bd8709e6f25d4eaa69bcbb7ddc3eeec67fce8b46527b6c28b34df511b3f70d4772b4dddc05653598fcc5f9ae33a02fff02cbba9047d727de2d5212e25a6fa4d68918589c00df57e34d5df3a52f5cbe66758b85a8d2d9a3fa396355e70f4c46496bc62c9532f267a9aef07b9fccf220ff0bcb71da19a7bb6fb7dbc779ab3899f28675ea5fdb5736aa57fffa878e871acf0e373cfcfc68d86f2f8ab4ffc7ed7f7e6642feb7cd237fc35cfaee3c327c7c1ed93f3c3eddfe6e77d38ffdd3ede37ed9cb7cd7e83edab1f7c3e78ed7d6b8ea9024fcb97c75c99f2c8ead84627fbcfcf6533740edddfef1f4ef4e5ef8ff920d2e271b4c777fdceeb70706f02b3219f54e31de20f997c8a29d6bd25cc8d45d02fac8bb56f4cd5e9f564d74e8ceb7020d68647b4283bed4fc25ba56b3e16b47560c46d2f6ec7b6c87202d2b6327ab20b1abd4b27289346b10a7ec048a13be066c11e1223728241ee14b71ad54c3d7c54326b3d9907ac1871496a79a506c3ec2f33d8b915d5a7f8eb4d32210285c03329c51002dca745a0be7a500e728859306cb227850abb26679b6c1d9cff7d9f5b73b8496b0c90d0199feb7260a3ca56c7b217c45025d2f0f1f0af0a3b4635ebcb629e8f6d9a4bcf1def642a055e76f277b723aa7d3b00d262cd36336fcd481033abd95bf010c8f0efae7f8f4db8fe937a41e0013165c683d22ee0b64dd5d96313b098b3e381853d423932bc4974c838a52364ddd100ca48650b52b1e175cb21322bf43ca9bde25743dea02867503e2fee2baac775ad14bdc5f000fbce2d93561856a70ff31225bd6cdb77ff45cbd9a8c80a047ab1039c0d89bd941d62b64582fd8358dc2bfa7247e86490fb06e8644dd2420cc62b489aa79b999e686ac8f9e4d3385705761e2ced05cd4c918bc1f528fe00bed141db6811016b4d290c55e11d9c81de0b4e49e200d45689d407e5a9ba8621eab53d72b0c36cc370018246aefd2e69cd514f47fe08f424f6206194882920518f7e339c9d8e71e460f3191727e499fa5917d3e20c33a37270914c753a4d859044e7c476db60c2700fbbe71167538a547333d51056ec200fe1a4380adb685a16a57df0d2afd4e817f3f53738de9404323738920192022396c1df70594c4546dbdc4d835315fe7f86f1d6ec6debbe7369f8ecfde41086fc87c8a70702d5d0d86a1f48cbe3104134729fa039f00c42b7a0499585a3958d7e295ef17e24162a82323d77a050809e84c7c35186821f0405e5d1a2fbf737d5a870078e61ba11464a36e6aee81edfe035e70033e0b4ecf7c1a297c9c2e62d0ef3d3f98f42793f877dd1b15d96b52fcc9bdfb63cf4fdd1fbabda852f488daabb49c56693e5669ee559a8f77e58e23eeb93c2eecbebbfd93dd3d4c3feebfedbb28b2d6009e26e42bb654ed0f4a6ef066e41a45d5620872aa719081bca32f7aed7c0542bfe8b5ac6a81e90962e25c20689c0ffd907e4b5d98d272df3cdf371fef9b4fefab1594fb7dcbe97debf1beaddfb79ddcb751670ef72de7f795e3039f3ef1cb47c633cf0f2d2f9e5a4e1e5be6e796d30747e85de64797956797e5e1e5e4e9e5c5e30b3ac85c01f2a206e4a40a64ae0339ad04c1143f5783f47a10b1d24bc18edc7a47a6988807536c2863762d7a7648e9894a280746f9520e3fb7af1e082bbcce9dc043fa5d7a3f10990f94b39ef0f172403036cfe5282fca514fcad1e672b497e5c02255e772bcee19ef9763e760e6e17b94a2b7da5210607cb013c7b321f9341fc1b2a8c151b8330d3036ac817e1f5ffebb1567993f7ebf7ddade4d4761f56a3e46807d86065ea3981e5691851fb8d82afdf5df7ab5af75554afc230fbac201af0bc3685744becf78ee3f743d5dc51f76dba73903f673318766644482f20e970c2e8b3aa71ec40d60a9d497cb2adde28676955cd0752121ba8598019609e8c65dc48beabdf5a3de5a2d7d6fa00ca6b736bcf56bf1fe5324adde7b17a8c5a76b48ace020354bc9df03cada68fce8407e514d9ad33521420beb72236702eda7285fd7e4cbab53a92926d79710d7a375edec3cbde1d036aff1cfa78fbb763b49ae692d9fb388ee5ff0d94f0fbb7ff4a4aa16f484b889142d7d6587ef2d13d16d3471d310cb9e2fed1a35455a70ad2d10e7d0513a08c30f7292db862cf9d8b513f5b7c351ba23693f6ccc8e77ade9286b7389d652d137ed9ae41fd3c39fb607b00451d88b0e5c39485e1b6efb0bda0d6b1cf05a29c35b6cc56f73e8f68421803fde1b0a834beda63a847f3e0b9d9e924deb193e4b9d3dfc783a4b367ab7e09905bf2c66332ce4bf04b4ff4d257f2337e96b9bb9342ea699c8fbacffe72dffcabbbfdf7efbb19dba4623285d5bc9fa6fc6935768355d09598ca81c0f22598496185005754b84786b0cae427c341407b5a1ccc55b0eea3f0bc9c0c01316095a530f337997859a7392a02a896b65cc9494f5833ce10075bd2180672841098edf44fc9fdd50ba17baa5e21eef35cc79476d37f3c50b098e495f84d702ff16d7e121fc31be3cc4bb7e1a0fc1ab1e722dc38eec450edc70e4d897f9c0c0038f744942ba246cc81dafd77f79791ca9fbc59e16edec804eea5f08495beedbf359fcf18fe7e53b5d537a710829a7207a001ad6ddeb5ffd91e9eaf8094452467485f26099125d6587662a54ee217f0b630c9abe68620a6de33ae4a86de429d88863e7cf2e0321072defa06b9500ca102c3226d3c6ef88f40bc5249744d7e262bc0be9201e3255001ae59df5101af3d582facb478b9ccab4892ec49db8d8e6607889d01c32c5f232c10d9c8c3942a69e4877fbbbfd7dfbb49db57cfca8179abcbd9cc4f47c2f9998a716a70e52cb6909d5a47a1a3a3bdb0be6551147f63db8d626dba15a59ed911a108779fe2a268ee23f54a4af8391b34ca4b7cf7cbe175bc6fac1a7adc6831211919a77537980f2ffe0d15fa39136c52e2addc048a92dd76ef40750e7faa0d6439c2c642ecb6915057cc40f7a66c00be7c1ef7376814e650c6701de976d1f8ffe0a416148f8854e3513a02e852f21f47c0ce5f99ba2d3187a9b93d229d5e58b6bb981497198732dce67713030840449e708596c3f53b29b6ca239e11873e242a0d826344803e9d740f4da4372cc9ecfce4fa99ba1e1c5057885862bb4d776425a74fc3a097884a221e81e8a9330d9086eb68d77b54cd1e87b72e53fdf2353b34c96df6e924b71e2d1cb11a61ff1d6353800bfdbdde3edc219577565f787e29a2c67ea37e04e227798a5523e74fe1626f3063155d18a391490ca9d160c139ab880075ed45842ffdb88e6a2b273e75a00081fd36fa6ca752bda431045d11e32e4de4376b34ce9ffe27ea2f7de5917841a2c09a811e30499dab5598a5ce662c5507cf1fdfef355bc39e322f1675262278973e95c5cfb854be2cfcdde5357c78ff63ca570e982f7dbc77ff444ea06df646783abc50c165b7ad5169369ed0497ab29d8f109f3df7db10db391c5c7dda09e28b853a3d5d36cc11f9d0c65f859928ffbed7fdddddf3ddf1e1d874b2ed3c864497101a97c9f4f640c2e4271e4e312515fab012bed39e3c88d873a75dbc81949c8fe421af5c5acdfeb85c2c0a637b260cd4ab0e1fef6f7bb2dfd48d376efe2c417d8f5f37db4eb5a3c1f50f458c96507a55e986cb6098e62b4c9465337110c7bbda8df7ed012c92bd7dc5fe4fe79b55eafd12fec2f9578ff7e34eac3e7638cdd7efb714a2856f599cea4e04e9fe99257ac76427e83db2698f0516e9b60c297f331908c84b5089f24532f6fb65e7c20b221fd85f3976a7cf87ebb28cdbde793bf53a2771bf6bd2792e12f5d0099ff89ed66d71a439229877536137adf9f646aeab5f8f8e7ed8bed2410ade45511a89368420f26a8eb9e0e1ec271d1ebea59bbcab3b832cd6e55adaeae880e7dc8af5f09eb4657f26471d53aefc072490e82048844bc892bb2917aeda1c7aa4b4072f0ea3f1dd6f8340556b094495f8f0ea3fc287bad348276287910d86e4c46d3518cca2dea32a4368180597e46862c4014f7633425efeae206b016c8b5da96a34d078bc6674e903abcb5eb13e20166238f2ad8da075e47805702e3eb828beca8d3ddb77fec17d1ce0f24979d04c82b8c84f5c455899b151803c8354b5313f3905cfa3816f82445743dc5f23a6fd6e01afbb890d31c6c4226e6503e9489b93f451f26c33c38e843ce76d3fec4c8da9024f48599bf3f5a5b07300f424bf95398c4fbbb6f8b59a606d0f5b918f36bab4c4764fdbc51560c68c716f2f6d510fb59b81f70958b8420a21ef57b42cc9fb2cd4652845c34ce7addfdd813be6cda8ab2f0fe2533d43b6be3c36f77d3adfd3e3e7cebbe6432c3f59a38d9d97c2bc38742e8c948bb200b79a48a3d52c4aad918aef3268cf520e1b49c87bbdfbb729630f37fc56c5693435be6ac51570dd1d7a4232bd48e60b8bdc4dd72e6f9adcd4bf70f9d7cb9012e95be34d7a2c14bdf0ad2b7e4b24d47f41eae3cd073ce6e084836f72e6593003edb365761b8559125405db1ab047ed108818a648e77c3cb82f6a9d132b3125aa995257dc4c00c2e997a0675e7a7936f6c7afe2ae513c70e1f3e1685f9f1ed697bf76d8ec7e7eb38152b3242087394299906720c64a2261b462b93ed9983373ab7b83405260e18f6b8a0b63095bdea8dd75954f2f530155b47d16f79dbc3edeb7d93602f6a1c2efb26221bb8590245c64f92fde0361f146d7f7b0966811afdd106afef26ba62cacf90977dce39b86814cc3641d355b2dd90c32a9dd31215236b7b54332d91dee76384a4efaa5cd2c39631f508f2dc64ff52bb0f3decc79ffbf1e125dffc7b26ee8a93bc36e58a81741736f807128788a7e1e53df8163bb82459ef408753928d4eb2f5c8898ce0fa01b69b473176e8d2bc4551f85712fffa40def7e41aa0ac48906dd8ace0030d7dafc6738305d245a892e0b98746598ca1901521226a59a81f8de8350ef1644b18a8d7c95c22eb62b1ae7a0a580f1689f903d4ae1308497803442c0ba398a1ab22a72d192c8f22d7dd70aef90a54c601e94883abc27cf0c1ab6d242e57bdb9572bbc04d2d3c7b23c77983b51e57612a4755abf2bf858bcd30ac0ae0be49240aad6f59f3d27e2181dc8941a361b87089a06ef4a70de554a4d271d7bc5bb1c5053d149e17db46ea186f16a4f6f9a3d085ff43ce45b20598229abd886ec8ad6b6b36700951c9db886545984640152aeda3f42bf06ba8e817e8a78ca7c550725b0e0723b1140c042fe637abab3fbdbe976f7f49273f7f5ca3c8a3fe4f1cc155ea5cccdeba8a47385d6338368e19e7f3582b27a837194e110d51c5933b4de2ee2792004037edf79b21b25cb60ba080572b4ddd3465bc98a37e1e0067f05d47dd0bacd545056ef421090b7188bd8fb82fa52b29eaf5d13413ba247303ffd4ab56424560d3ba1bd11503a66c278ebafeba6b85227811cc4a170eaf8f02df6bc854b481e4a6fddc40f6f786cdf7afa9bbd7bbabdef91aeb509f1b509ff2197f07e80137ade7aef5fed6057225ad994711532f6226e7e16a4bf18d149b6ac05da4f2df933e0d90b6ec195a7561b692da6f0739568a15db252c60b9b0f072be763e3e5739b354f63b417a3632b43789d1e50bbd574f7ed1f9c66c0f3e6df48f62cab399de7dff6dc4d781fa3f597bdbfd5cd93fd07376ecae52e333fdfc36fffb14ca47d6f281f49f50ffec5176616ac89277b43e605a1feeb8da1a39ecd4bf2b1f9e1fa777d3fbc182a988141f0453041ad5ac017e62d9c790787210560acc0b3409637304e80f52ce08babd89b8c7fa1f3945ec93c25e62fcd6430de7a5e2b5c4b5beaebfbede37ee6d711d26aba8674b09867a3272f468fbc63f4d0e69165edaf9fb479085051bb506d9ef74d9ef8574d1e1a807a0d106d474eee30799a4bea367af59e0b51fd1eacc5a5f376645a3d6a758413a3272f464f7965f4d473a3a7ce464f7d61f490aa2a061a3df503468fff39a3076c37b47ae4a3564f5eac9e4cab87c130983da233c215088ba4b9a045d2a5967f4649aea43dfc82ec3be74feea85ba07f3c7b1cad6fd1d9489ebf4a75b598f0737bb31f9d5e2eef0b1f87cbe3ed7ef77877c2832caec128f6901aa7c303bfa2ab248d6a1dee1c84375d44ab253690638e17eb378385b5203ba0de4804d4ad4192d08b43ee03a0728d36a5005810a80f18e45abb0502f9a627e5684f57b7264e482af6ecdf903fcc6042a1ee6cf4f0e68a3a75d7891a979d7cb57479c3d6870bdc26744b6683e53ca19b4617d24d743e9b761d0e6aa76b2d438b18c52d6af3a274c02d81e286dc14b96d5c6e57f49a817f2b660099f38e2176ed6c20ad69d105ad36cffd91088e26929a45ed65a5927b6a00a34c731e1d3674622efc2d3d43403a9920c2ea001360a025746d0c8466c18bd1f0786aab919742877a78fe1ab9c933c4a58c518733d25b01c0a6da74053b3f35747cdadb8efeb0fd8b1d11338153339c4f9e3d6af73f0417b5e3142cace1b586d4fe18191cedd2ab8f5fee8f71c54d3a1d14e7d1c6711953cb57fba356951ffdd2f39f6effebc9fef6f05f8b8ff2ff743c7e4da6b8441bd0eb887349ffdb734607ade7a68efe5046eb4ec2a2189a386e3e633c6a052c67eeb92a708d49d70d57828ec55bf7ead6aff6eb93334981feead610776ce7565e05cfed2737e80fe7f03c390ba91f40ec7e660e7ebbfbf61fdb1e45041301a49a62b09dc253da95849ec62080f42670170cbbcead26a6732e238f59fc954e2926ebe864b619326cfbd10d50cfa007829bb95d418155a22e4185915e2370c9ba1d8a0c749db9246b91c295805550cbc4342c80a83cb2bcad0c2714ad7d67653fa3e7cd99901b9effe1e9ee8fbbdd56a7f2fda29cf60acc71fd8a16f1f9be9c0066965156b1039605eb998d3a96a34d2e07e4aaac72ea1c5c28578901176926325b249a7aae107732a8cc4943bf9795fdcb8b27ec9aaabffff2f147f5568aab217ed186a0d4d7cceda79651c38e6455330449ab2915570b28f1254ede755db057ccdc03e0bfd10dc56fce502ffb95cd8f157dbcd3dd9265c698dbc02c6d605eb6c15932c5c149cecff76ae19aec92c4092c03e8775bd74ad07f3d158681ca79aa8c947bd5579088bbe41166751e72403a903c8c472d882f5bd74e34cab002b6d793fa4c5188e831e2ab938d3a26f5e5c505d4f232035bf8c7fd6f001c4f77fbeef4b812c10a3caa01ba41924dda51ad97f128b0a867186012b02cf986d07721876883651c69a50518de9e186e35410a82ed4339a831a94b543a2497d3f3bd0eee026a29a1c51e0a97c1cae8afe04b845cc9161abbda71a6adc0fc25b0244ac5c9a1223d263598ef1ed1573d4b7f2bb0447c8295aab669b4aea659fe400b9b7a90b7d28cc1d42c64990dda94957855ad94087f836e00cc9dcedc5c2d99b3208a9e16fb456d380bca64ad9b4009fbc43277b66246fdf4011a82962da361bbb239c5d361738fd2530ec8ee19b0a3a1e52d65cf18356b29fb1d9eb85b97816caab1cbe7137d0bc204187679b635b5fb6bb54b5653d337adc500b76168f83ee99752f53643c0613adb83029582cf410802c5ca46e16ff6a4c09e9402e9a5bd636151b7d071d24ea65d210930ec25a2ee1349201a71fb08faa2aa606f467008c49e2d95dbb52eac0e09c531ec60750ae5b043a0f9da80bfc5632c17219b937a9a2b40a9f37cc5f36ddb3996955f46cddadf78395d7f7edcdf3edeed7a668d4efeea1d91f81af67d4565665d83f7da9fd1dd6acf2d0ab4c1059da5699f3988f371f42eb68d24f53a904856af3d83f268585c1cd436d195f27cafb78278d1ceb23e237c7eeebd614cc1abf63b8254b22b1ea3b97908e179a42678aae21163534ea5d1a195de0710b4ae03b930b49f668e4d9ffbb84ce4c32681b085e34b983035f85bd7e28f005557cf3128f0c1f569f4b71c5063b5c0eff071de79d22109721a48ae47c7115a31b1a9bf30aacfb0eb518c448eddc6a9ce332705185cf535a0a812f6ecb3112320ce895b9de6b9607693a22d8a6d4c9d745b76a1ecc1bdad13455f3ba10b9f88b0ce108e1090687a8e92c80e2d956112ea4a65e98cd9e8003a256b91aa1bd241c7d38e3cb7c23ee8aa4ed37b971c69d3d5efa70062c5dc0c66fc80d18b0e463a14c64d32dc95b88c50f293d25597c2c1cf744842ff852cde953d49ab2212bc1490b302cf2660ae7349a794963b6b76758046e98c524a6f286d57a8c2672d570b20aa2f5aa8ea7c046da8870a8cd63050fb6aba50731eb36c441f0801536faa9cffa98890316335bf3d520569956af9113d4227c1435aa690646c8fa70a89635421777412ba7fc12408d51d387dfa156fe341881be9322346d497532822eb04ad3da570a9f505c32365fc56eb121acb140ac90caa0d1c1a18fc8905a5571efa16a0ae5ab1fb9a9e6a09a98f2f1d5bdac9a0cd6f319963d0e2542c543dbb15c9119c520bed80c68cd78475d3d3c78d892b6625f3ab36a25e18350e0f7aecd3b640e55e075fe6badd0a1e80a3aa5754e1136b57cc48834007f37bacce401d582c956048d29306ade70e24403e93962b261d35821eaa664486879661fee819a1e96b62848b84e43aa521e90c01c2040e5a4e923970926001534453d644a135e1d631ddffda50ef790e64e974c5682a064448346e109df060e4f74ec298910c0cb24c9db34843ef7bcff3a8e42c7b6c05ab2da13d19608c873ffeb8dbdd1e955cd34f2244e3c1e6311ef21a74e96df9d6ae5b38d88cad4c7cc8a78a86fa4b3dfe22f252b1358d36f643f92cd3ddb739711f689fdadd8458e7d076acaf62dbf8c2caf02b08bd3a1ee4f96b3152276fcb759aaa5573bf8c71b2d530defd7037d93fee6ea7df17152c9d88312f818f3f24db3afb9a609f0e38bfe8648779b96042d635217049d34ee5396783bd18316de8f5a90f315038595d902bedbfbabe0b8839020979868582aaf3ffb7e66a20094f8567240d51dfeac481c52d5026fe06646103a86d068fc01aca5338d914cfedc6d3a63670f5b08080e4deba21ebc9939f699d909a122ee30ee52291d8d7e450ac3a055d1384f8891aa0f57e33fff87cef5d48a638693caeba5c414068f4dd688bebadf56d4657cffb55fa54a35ddb773eefd91fdac3ab97f0ffebc0dffd07b0ff0867acc2ffb5bfff78821f3e77f8ddb1031ffbf9fea48b9f28607794d11be1ba1daee01141865479dd57cb0f966f2cfebb2adadade24e7f5602926b8924d3a9235ac041a4f824f4bd4c35f881cba215d057297a9735d665ebbe7fb7744cbbf6fffbcb5e4375d86e96ae4eb1ccb700e063adf07d529a260124b87461e124c5c32e847a422f84d18257376fae5fbf6dbed64f74fdba7fd9cd03b4a3d159b4714ee44321c9575fa59cb717a02d2408c3f88de6613aec140328ca25f58d984e77b9db77444f8835c4b38d0fdf01ff9cae693af36152afea7dfe4b36f4e1ff38542386bfdc51e27a38dc7fd54adf15301f2cdace6109721463aa94d1bc351d73bf183ada66e745510d44132832e12e110aecb4210a3df9445e85baf73fa29e1d32ffff7ff7cdf7ebf7ddc4d77df671186842cc12fc9e51c0d5f3b402d82ba111b9c1181c68aac079d7d11399a6c73e067f4e54a9f4add272469722353e7ebb027b18b608b53978b9d9a2f0520273f7f5913df0993fe3d1c0a9c578b1a9b937ae0b641ea474da696f58f77704002cc0ac88127cb69bd6921b5cc932d3a67c362a05d0e89804a1919845ed46f57db1f94911274a2d7732cad8c9e31d191aed25358fb59fa4397bfc8a88b88bad891ef440b93a26b144d81c9d40b09488b8e4796bee9e3657dbcb4c346ac2e61c89ac616b2faba200730f85e68f6a76422a3170979aa1594865ce3028b0d8f46ba8abb0bea78f219d49472834c55176f3d471b3f26c3d7ceb73ae8544479147532933e0e363573b2d10d997de971fbe7e3f6fbb83062cb75b902bdaed1f9d21b6ff21e9cc0fadf217367a0ba459659ffedb1cbbba833638293f0c143c5a51df6625ffef2ab50ea828562599fc69ef03c5cfb377899c77288d76f932a8fe910afdf166a19eb9bf98da30d071bc774e1007d9af2e6ef7dea791aedfe76fbb81b31f5447389a7e638b9bfcaaa1371195c2edea5830d608780ff2448bef61ec1da76082ef8c9820db91c6ce97b7154a061121112c0dba13ae997db9c9bc72776cf46c7cc14c8d20e3471770fd4dff170849bbf4128217d7129aabf3f774897cc70a5cb309d50526ef6a5cdc3abc9eaa7c73865a39e54c1163f784cbc279b098952b8550f659bac0eb19ab0261185d6763375492441045e5fed791d6c74bee78241862722a1c7382f87e0c09a30ac8093de6b987011bab47e0ea34c0d3bd7d89c86d44c0c602c6db08bd46047544636c95d2ad5415ccb9318d960ec2dd05f347845b0f0de825037b99477a8492ff3d67800ee979095481a137aae228bb3ca102d7ce4036587759ef711b5182b37e2c384d8ae941daee2897fe16bc95780bc827fd32510264281e8d7cc6f3365a03a9f267e13d9f5286f22d34a01c3ec44804bd8f52838d60d861ea48c847d44c4731157ea71b2ca27f30b4d0c11099e5815f5fb7d44b021d48926f1ace0bfeb6e76f4b08757331f4f81fc4c67cfe5f9de4635a26bdd2df0c925796c3fd36e59b2f032c3eb447a9c13df8f3d7cc662c22a12f50c707896c5b2869b45dee1b90bf49397d372de3e7c9f6efb4aa25e41d946e088f4a563f801251f326130ae012b060e1bb0be4748c3b361b52b658b85b0941e23e56e873fee7260a7161130fcd0d0c922497448e6238441205c96187e8d3dec8ae06f63e008042a08e62329d44f8c9fca6e8d31a84e1dd245c61a9f1de35605ccbf8199030531a5eab9ad128e382e81f9400095f7c46aa519c5a5fd11dc3ea93164537a58c6f450689e45e57c76d8892c016d955d48aeba9a40b9ebc000a5c650c100ac802761eb4302ed26fccd6a47941d36430a27720470402385886d638034a1b674a420ec05d45a263c2e303e501816e406484fe73c616f8af3690933616d4c231c0cb39bd09288640d6c0aa13c0a920960f2808abd90ad36b0f46a0f453421d443fa9fd10637e854975cd45e35e49d20fe085a2342c022cd5644de3a257d81453cffbd7643dc779617bf80b7e6cc09b3644e983973c2cc9913a6e74b0c148da405387036e58e123514b96b875180385a6577107764bf06f58accc428fd6fe0d890d42777dff70a5ad740cd5d5d3270dba1f43d414cf6b14ba563df00fd118847577ab82fe8ac5e1918260a12242c00156e83cb5167c31c17224287019bafb20b506c48a640d8d1540309acaa5ff55c093d3f8045e578b6fe961170ca3d27c2f79488747043434aebd0b03a796dc20ab6b3405c5881a82d1092058fee0bf367850f1d5f645f243cf9dc2f396df43ff379756e3a8e2be203f18a0016b721e6e1d0d8d0da5938f73dee6ebf3d6dffbced7994a7ac254bfa2c40404b422de8fbc3fec85a422cf392906b819355ff395d403d2d00e8d5d0c4f3d76a0ab2215f5df65735ef4334dea4774af5ac56ea9c50b97a930ba503f7f00ab5b925282dd69b04fc6476716d3d15ed9aad4d050084e09a1a159568dabe1f8d29a537c17eceb20434a2b806830c8b8cce044860906693be80cc4740ac5739e1cea05fd4539b91bffd2fa289c70dfdd499db7a1f881028e9a6ed8cfaf596562b71068172ab0d91734f1d5168a862996bd571c3d2e300dfa7046e78792e834d2c4b094e72c1f4503a8b13948fbc474ad79748e7322d3affde35d73cb45304dac7d2134bc50c7b0be168cfe840f3db576743e55d2d6b4a7c62bf875943c810c1547870d854259a423b89253605937f8465985ceb0a4f4375022823be2a4d9f5d2760ec1d46017bd30996975c83b173328184bf89ab98a681c4e9330fa80609e6a5f8a54e6c43d149884b9ed652d182b7f6ab6b99d97fa0a1d08e72458072e328278e3701c7dba02a1eba1912a15680fe363e7c9bd3441bb0e409e602275cb8141e6adee876a96c21df5f8f54926a60ec3a9916e00dc8c6c48e6ded1aa1c5744e3e3a5c790f331b1bd714dd651a51ef9bd82c2b7bcb7d9a12b4103690805087a1052d627411e61bf8a6b8fb84ebcdbb8605cb82b66e61229a8f1daea223b6d4bd03e204b282e88308a9043a953af0af8a13b5fa82be640fc41742ce3bdbb34f69010992e59c5cb15f540f0128adf6e86ade69a7a818c9c9a56a74796fae05f5f44c72514cd329ab7f8d082fe8a7d4560790dc4422b605c119400c08d6d77ea277a6477e776b77e3f69101d866000b8e104ad72b04b1d554ee314435adbab0c9104de39fc8154d1d571bb45fe9d1b6b896afdbc6b54ad5775dc9eb468651862ba46321c68d06e46fe851cc7416a1a10301e04ab02c8620347111c0bec94ea082ae3e057a76cc6485f43632ca23758aba4ae98bc53b481a419864f9012f3b9d0061a942fa071dafe1325370d526971b2d28e0dd5a7435a2106ef0932d3afde80b1fe0c0a4d6e42ae45fd20dd221d3bab7b4242b4fc005242ad402b2519886a1d3f392b20b80b0ac85c73b1b6d0d78d97153335b862587386f4f46e969da922eb3279f6fa91cec5ae661b2eb7420917420657f22b172f4eac841fd4904e72fa8db93a8757883f03cbc9b7db6425100a6a5f35dd4f733d9d6b69a24cc1c45575add814227929daf2619c9267d3a991db40e5136bae899a5bee9225fd739dffeff3def4d45472bd722bbae6f843c8f66b2cd9bfad778014815b442cc7cde4ce73416ebc997dfa7ed3f3b9908f7da3a5a0249e2ea10c4999cc9ca60f3918bb1e92a2a0bfdd747a208060b9da17b5898089467919cf9ea0c2a79428b0026a9bd202cee91fb04e1d68bf42b97d951d2193fcb0b4e988b642d1c8f0fd33fff7cf866ffb89b9e3a0fa2548473890b4b742e4a729226ab9ddf46576b27116e8c91d5be70be16232d3a05148a910e703e800077d2269de69b0957105b4b6e5077c93793d492d7b3127614004bd7b3d5b5334cdf560bc21f8a4b3af565354b6660aff47d9f530de21299945229225cbc9511e72240e0da7c41fae8af1493014bd2f1e53bec66f037785823f285724b1838d51438eabaa6ee0841031e2775305233721d5c81a011f497613a6b93176000361511535ddea33695968a66decc5aca784a672d9d222cff1d8227be337756980833b419a67b818f3765029b6bed51a01eeda8c415e0845010a9f0ae0b6cdc40f6c530dffdfbc37f52e30f1bdbef0fc9138985d79bfccff7c1161741a296779e89696a65213c19c1c406dba7165879a6d862cadef2932d486626dd89cbbad44a31517b65db7897d215120d027e370504d546644b519dde5203483a1bac5ab1c06d665b5d4c1c0e8fb7bfdfed9eee0eb776fb6d3bfd737fd7253ad534422883a106d062430116c213e2afa474c146035eb802a91d5d4177c05b616444c7eee07cfb125c426a7c0af334d9f46986abcaac8da21567109250437867978cc86ea702ed8b1204f5ceb93127d8c983389d5cd1d0032149ee1775191b15b1ead86d8911b9c8798a713975cff06d687de4683ff4e4f3aa640f4294100957da5b90368f542e98b9039933a82a56c8a9916bc7152038613c9572918648f9c39e575983edb4f19191355705c909704d1c45758d775a7180ec53fb92ab0c205b44a56377167b8eeaed78d3f9cfc21cfe6cf41397371831faf0ea4360618355df6b9431850a0635e1bb8058fed216192e436dc4a0e95853571cc101ef2234e95143be4e741c3cfdb0aa933b20b6a5a7b3ca2c00cd3406dbf352d3fca6cbd295787aac0427b1d3dbc34bd489a1ff1d2232f2922bc5750792ce9d1c7b14e3b73d9b5c1f41fcfc261063af0f8960270e45ce5d9af4102827a6defb7c63e25ed6b96482bc22c9fcf3ce018d2511a1b8a8763514a41948a5b51ed43900853289f1d58925870d42925d91ceb530115e19d551f20460eb1125db99b3a559103f93869a41c60e5ac6c674ea21f8d62c5b3ac2d59a98f51deb0e8301d48ec84b483d6c1dfb666d414a99be82b8c477b9b5e6bbf526132396283f366c2ca3b25a241fb572e6be94899c0cc0844598152df4cd77224031752016aa256d64693920f2b463961a560cf5e917650484b93b8c3a6236c5ac835cf0d2b5a5b5c7b01ba8171e963f01bb9229c2f52800a502b01f7a4646625436a46e8022771c09e77c570953c50e444294294bd717b4ccf66447aac77788fb6b2f70add0690cf9c0c1110353c62b156e3dab28d3d408331c56c7526953cf70af3dde95b6de45846ea34f4b224e40321b9c875071608973a46a22e65d6ccf589817ecd8b97aec7c20e773751f2d4125156c3a65220537a1e8316c7bce5d9c9144d85ca6ca6fb7239b0e90542172111d0758a85f5e9fd818450947859aca006f724907448c3dfd83ff800a21cc3000e8e152204d68eafc6a914d5a099dc6cc4b9d4bf4fa7942f6ad8b4e546c62f3b50b5f30bcd5e6fd80c84c6ae4cd60cdea3be482c1c3c27a5dc6fbee8287b42507a69fbbe2024a5fdea0222bcb268d68dd34110bc28ddb21b383faee324d98572085d8d3057410ab65c554a138cbaf074258d4f8c0c216d44f40328dce9fe83d11bda7fb936290d54ef5e3d3b4721847e15f92559e3f9b551eff86acf2f2f359e59959e5e9adac727f21ad5c8764c426636efcf6efc92c8fc82ccf1d6895e75d91bf9059ce79fc79a60ffe376596f75e77fbed69bbf43a08a1d5b74df077589a0f72960d05f2e0f89354a5d47c7c47fccc5fa6a2bc1041b8416c1d81af73ca9ff00e538f0d46fc75d4e3fc810ad1df1fefbe91be2e1ac9d7f960e3753ca73c5d4b104ba3f587888cdb33069d55f2d151fc263cdf07b326b3724e69e40f368c120fe163912f2b268ed66f0a20ba78b487ffb8dd3dedbb477f166458818d1ffc2879a3e6aab71f7f2675eade10543ccfb43bc7fb9ef55d103595d79b7127f46a275b86a39639f737fda9bfdf3e3edddde2b9bd91f429d6e4c1964f1d9f6cbc4c507b51e4fb590b78e55ad72e86e77bf176524cbd2c1b7e992df77e30e5af9c7face07ff6d8eda78414927d8717fe1deefff0d9e6d489f82f31f75bb1f5babd0db47c5b48424b5b56f6cef7c7cde913a18fd38d7284217efc36dded47fbc78f6fbb85b7a630c4e8b4ccba5ee448a80ec5531b76c72657110a185dcb132de732aaa3b32311a6ccfbc29eae2d407a1ec99bcc76257151ec4108eaa20910030384dfba401bf26266f53302e7846eaadaa53dc386c99181174a404082ee949c48cccf1124804976fe24aa0ae2c5bdf347670438407ad9911134752c3a6804ce7bb4cc628b8040c03ba01149092eea3dd276178a02210bae71bf3ac08c4ac822ed29d96af3f0c94a74e22724709632ba966e1253f681bef4018c51f016c3ac579bba798614e7c4847784e388f9625821a49e9344604db7802d18148990c173cf0a6e057beb814796bed12eb3ad075f3e753c19360a19bb94bea3995873c8cba75d4795a3849c6061513c3b830fa45646365303a2b5380812a99d5fb4fc35ebeb1ceec93ddc9309a8423670df7c85d98fed2f5dfc1c39c676b633cddabe4f613bdfed4ff003776ef44b06c72229f0935b16f790bfcbaed41d4c3709dc62a0d67e47f476508f1bea1e62fe1539b3bbdeb1d966381c83259ef46e783f08ac146ca70349b7a7b5ed7b7eee6ef692624f230f6c4ac7005bf088d1e7c23664322ba54b01f0d966bd4d6642121c40444025a9b3d1d3d687a4b6e81c1806b15be71448ce23bc14d55951a705e9ce3dfee7bbaded81e20811b1934486b582d0839fbd5a6692d3d3a0efe091158e5c53ed0fa60f73e449eb10820288982e7d38cc99ea941b0a1d71806e5c98d8573a446cdef2674eb5c78679a8fa2675dc20080990ca8a2b19945b1db03837cfc08c56df981ddcf60cd7d7638fde39f0b85148b640cf1ca31a1c6feae1ce2a984c788d88d41746ea89e6d6dec4f90323d627c4321083c486789089b107893b661cd31f460c9aea67848b62a8a24b817422ceaccd70d47ccfdaef630dfe0db27a83ae00b866aaccb1ce0e8216f4717f4cfb39675586115de546a26bda93d2d8a548a4e35a534f596edd9e43f3948652b4e072c609f06e4105556e0a763a5cf5fa8bffe25aa9faef48a08da018c21528778bea13ea556e10ff7d4f8426ec70ba71dc12657477d442005c971872f4d0c8f732029833201a45945ecbfa1ac39cb2ee2b420b39e31a6048a93c4e57124fb8b6a8d3879657dfdda57c0e3c7e65533d6ebffdfe70df3326633169f44efc8d248744cc7f8780cb0748e1c335ba608f2c140a7e6617ca02f4b4d008093d691a694237fd899eefd56136eb78f3e3ad269ee79bf635f137d1956202727d8f9bb655ffcdc444ef295c7997c2d474d911a041fbdeac0e404f661a3e04043afe6de4e97d271c8cc8f28e14535812e8b17c134e3e2be24296c5022b240820a47cd3af8a9e75bb7b789cf356c3b69872a4868de6e4a3e5807fbcfdfde12819407da6f806f0f165ef48d77967091640a64e6e3623e72a3793f5bf311dacbfce97b307ba96b444172058f0c95688367e4e91598d96b7d3acd6755f1e6fff78bcdd8ff3b4b8e245bb215f49660035234d1cbb9a7292227f922bffa6ddb243d63c93832d3282a951afe796cc4cc58c84e0cfc280d6e4fda1c0ffea1a2ca65f329221fe0b7325f6dd966a91a7152eaac6afc506ce69c44ee34343ee99c810d84294cda302fd49f2f569c2f51a77f2e3ed9f8fb7fbfdddc3b713689c40292338b991d6770fdb4489d102b9c2f715713e22fcf7d28b6cf6738a833699f8a91364b0fe2515dcfeacef2ee7f5eb7ff870f4f9454ce4af123edc0f46804d8cda8f8e49eefb936e5e9784f893aef77c9f6c5b8942ed2fc5e95ec35df8202f480adaba58501c29f7c6b060b88e675d7685ceef829445ea577bfe0a9083bc3995cd202c80436530e5e7344f6e222484d4dcf24d2db715d6032d885efac6c394573fe56724e36ea20111f5045bcabb705ed576bafde3a9e78a8a8c9748292e029e9eff76a191328bf2cba0ad739f21b03a37d6f9833cdefd393efdf2f74b9e7c5d0a821bcf34074bb96cb5e562bd91baf4cd8a3b7992c787ffb4bf3d3c3d3d50a8a01889975be47210f35f21fd02ba07c907192803302b70a4d7cff1f4f0bd3f44fd0bcf702fded6bfff190e36b1d00bf30e1f0933eaf7dbedbcf570c68bf181157bffd2e248478be33d83e3d25c7de12ebb3363607f327d9f58293bb5b969a520da53d44a89eb560aab62ff307175016dbb2b57c535139d37c544934d8465d90dcbd2edca42b372d763e7d6210261713218799071ef9df0cdb0770d4a1f5eddbe67ad7535fc886000d13e214db1277475da00072e5d5d7c4db4fdd3ce55b000e8093c8d10a46c512a0b66de62b3fe0790b4b874559d1a6b45d734e74d45812a4ef45aad3b0146440c4a62bc8de034d6fa0d00c3d33cbffb937d3d3a7f55403e68aa3ab1050b05b29d6236d0bfbf020028624b1ab87fed0dd794612c44be6bbd65237a359d6f90a918ddd0a018ae4bc2a6f5f4bd171b412b948adaf8934d741acac5805d51132bfa1571cc15b43aae1bb537c7b7b1f733aa7e50c702c8d425ef66963138f9441656cce2f63f1eee68041cfb9df637ed3085418ede4e71ee093bab8d6fd1f8ec3373d79cdb7cdfbba85dba267ba62b485b0f881b73205884ff2a184422de04d7d29e089592e62fb6d10d03e4ede647206151efc4bdf3993e24f6732f04bb32fb3795240a7929b0d98081d07bb8650fd7be86fc2ffd8c242b0c410926ea708a7f7757fef6e7df664f26f52a4b3603c81f7cb4c9a63ddf98a4ff0ca20ffa816ff43bf68387a7edd3adfdfd61f7e3fef6dbd3dc19a809fcc5b556f49f991994f3daaee979a6793befc975f7462020daf8fc55b05ec44d1dc3e12cf3211c3258190007486dc2a93f9121e08dbf6a5defa11835d48a370d7227af1304bcf19706db841d18dfae657153667ee6d7a5dfbfdcb57e956472da06dfb77f7622a368fcffc247bdb7dea4d5fe73b64d7ed67f5677c9a14218c1af8424b0fdf6e9769aee9e6e9902b6303d19923fed3be393919dd50268b99a45d65e2659544f87edc464c135139c204a54c0dff4f6f53c608a89b307aebe7e4de10cc4ddcfe7fb84e9b3ec5ce4b5faea3b4cc165135cdeb9e800fc678b805d44dfecac7edd49ae70820d4e274b3032f4ff39f7c5891231113210ba787fec5e3715c1d77276ab9b00f4b19cdfe90637c04aaa4f7b762398662b0fa5cb4c0625caab3b3546c1569e29bba4a73d6b332f12469dc36b3f57fcd2524b43b1971c3a939d37c32a0fc7b9cd7b9e8793275a3751e72df596f221a9e3028a3e1db5f9ad213a477ad7e52f5d20a14e5b58b7439d439d3aad1f03b89151be807d250f9a80d751208bab918e3c83053c1c5909b06e637fd733c7d5d347daefb64f4fb78ff6fbf43027537e2e78938cffd4f1d17e0e45218684777f6788ea6bd245f413a5d08e04fea71e2d4ed920856062dea6be7ca96e18a2e16b9f55b3a93daa79426ef8ebc070cf6018042211e24e286a491efaa4c608f2d4910f1a8dbe6cc5456c2045ec0750dc0ca006016380c46348da32246d1992a6816618a856ab69496f33f4f9f97076fbf8f0e31bb9471b0cc2d6198869886573f2c9662054e2221166ba34d87e99f188f898011f333102489a3e9e45f93598e14a7ad203fffeedb790f2ef78102966f8d7df44edc49b64d22fffe797afc985a2be442e322537a8493f78ebca505c19aac5277de9a74dc9e234892e7be9e7bd38fa7801bcf42c699c6a92ba247abff6fefd8ee7a969fab5e17eed03f73bf6d5a7dbfbefd3f6a9db50c1d4cbb1d2cb21ebc184bf74bacd7fe5f48cf9c4633e01ffb6be7ca9ae8566f8baa473b59edda5fd813375d7ed2ce072338956582e935e4367937079da6846b09355b5571ef3cef67cc3843432f7e8876392dacba6f8af3944783233fe8f7992fba0536d97de7ca585c42cddb7f49bcae80ff95dfda6f0ae7e930cb8d43b024e7e45c0a937c39feacdddfe6e770fdf9e1e1fa6456e7f6d2bea2331be75c46d1d6ddd94b11e3217c4e976f774dc3ec526a42e883ee1e5860a484d4800d15c08e49613f2cff14f08e74bfb755cc9b2f488527a5deddf03799f019af3aee3f7906111ba72f50d4be7d554155dc453a49a622430e8e3c471bafaaa3f1b67ca70d6cd0c5aff7fb787d4e7d9bc8d262ecb7835279f6ced5de8dbeff6e96109f48fd0903aa5d6dd1f354a1db9c84d4480080c83410df6e0800c3b112f0dbddb8bd3a6be012f5fdc30feeb4efcc893c8f251be148a2627411d10b2e8da78ea1825077e24847204589e177aa504d3206d9487ccfed195909cac19759b415b8814292760f2d1a51689a290001186aee4739aa68e509ee5f4936b3b7f5aeb1664ae5d4559d6a0ea2f111eede627d315ca8c1e7c0dbf7f9145bfc20d3118e4110634c5d0f345437129dd88681d0eeae8755c96903389dd8759884ce7c37753643e494b3bbd4288ae26a61c86cabfef58e5bb0e708ba01d625f2c419b1254e991b8af441f92622d9b00d9a79a3b0912ea147da985d749fcb3fad90e099bcc032ed299705b384442d30205507300d2ac1617eb4d71d914d29a46a00f13a20ae9adba39bdeffedcebd8715fa1e7ed00d808eaa91b35b15adec830ba21df88f65e903e4452f2242ca59e29684117b52133a244123686352e6d863fdf5b688c018794b5fdae450e6e882f7aedfdf6fb7fe73e8b2cd2ecaa9f662abe6c3bada1bf928e5dc5e6114213c10c7bcb2fa9d7b5f8cefe46ed06e8e02627e5049b95b51d169bc60c671b6aed15ffda281bef6a99907b55366df49be4529c2212d50e82ee2c46df7b17274fa6323c73d0bec6f2ec805f462e5d65515fafdfa88f903a1522e4aaacab1eb25360909a2c6f795a1cbd7d6abd891fef6ef776fb7b17a2c00e1b104a2eb8ec5119cc7aece18d977c2c0b10698638775e09edfddaa0838b02cb7f23653ca636ad92fa6f5f40e0c8671cdfa6b5030800ba4ad1052a38562762b22bde54534cdd1372dd11d73d2f0b3b04c00d3c7f156fd89fe6c8d2e83b6dfc126a72e9243278f08b2af73156f85afd342f5fbd0c5f6df2892a77ffeeb409760fdffeb8fbf3c7e3f6859e2f1223b2561ce4d0919b0b682952b327eb8995235ef5bc4d8e8a12171b262391e2dfd9368ba5bcd242c85d68e8c34e6db43c0a32117b8669721e48d6787054aea2b41105bf631a2d8e26e52995c200132e2efbc995e04aa0c957480e01434626c28e09fba5e84da4f29e9861225740a1114449424fe6d17c1037a4d562b8764c354dd67536d19836954c74582f338d8fd4d1f06902f6b4949372649603d1600cf11cb72ee6a4ffe6f948bf9c80a0e4a99dc9add90ebeb62eb5a56256ca74d0d242b1b0b348f3eb5ef1b0e229ff142927880a639d6c5df44dff9d94452600cfb2f4b402927048616dce8dc06c1a30cf42823b6fc4c5b445ca779c1393a14e9546d75eb6bf9670e35d8288d8901df40353d51a9cab61b975e6adb5025d8e2ec7d3f6473a488e4bbd3bea35313924b94482689dffbb9d50d24c6dd85f98734dcc7aff1164287bfd68978fc717420cfbd9a753c0efb78f7787591615cc22d925b0db303782dc7860fc9ee3ce47025aee0ecd667aa4425a7839df98d9f085b454b991ecb2c9d7226f85dac784758a7bab3b741812b544bc16f372b2a417a04e800b0c847be775f5d7b57faf1649ea72a2ae56572bc885a04055e4ff0f169c93a6262dd5dcd61e24ab03f4fb3c18354025801c7fd8b13ade845fe6f43fbb36a42bdac5e7af3aca9291adcbd1eb3f43111b4a6e82a47d08465f0ef02206c31c1ed2094b73117dd3d705d82ecc0ae3bc9998c0c14dbbc88d694e9f9be424a83f23904e39bd7faf1d2de058d4e13f69b3136108e16de7341668faa12d820b57c8974165143d8a95f132ffebc67720ca458e3489db576901efee785cfb037798934de6ed54f47def2b3d3b6df23ab1e80bd79d819ceba03e27b150e725a99d4207541ce1f91e993699f4c5488ee8b9129e19382decf111ea2fc71f968faf0eb6cb05f0f27c8f6ee5918f2472542365af4f9d2c3a308b303367b3758e0fe60aa62eb44b353bd7a52b99c735c8c242af6779927f83b51a8a808df968e00e0a9dc357a7d5f99f7eab678352a0ff084ad23dbccdfe09b1137a1e8ed20699b78da794b8fcc533665529735b9674ad3ceb48268a0fe379850e1bbdd381c28d439b87469adb15544255d735509c84d05508fd92ffc334b502f2d8ad6ba1eabf797981870de68eaa1da42606bd9e9eeebefdb9efb0d70b11bc34fa0dd3c12fa531e66b7fc8cff7cdca05c28743c5b5ee8bb904e63b04deb15dbe63b86e87803b465ae5af715f3fc5d269bd5991113fc1caa8935041d87dfd73375d814b1413ae5734fcdfbfd8e19c0b018d3b6e1f1796f47aed3769acaee4c9db557e878fa8fe6f8af311e6c946eaf37db45219837f3bb30308efe2c21b9955a7dca30835a26ade42adac926beec7bbdbe9f7a3027db6c15531cd3637c46a9a95e48a44102692e5b6595dec7ccdc05bd6542c008b35dbc6bf57f0d65af20694e9482e349e485f5db480200576b484081869d60b55935d86f87e548b3d82b41864bf3964535d48c1f2085d769abaf23971ab7a7ca0cc1864febad0d0991c01b578fa87b66437561a7288b72262a6ae132028be6b8b7b322c65b9194c75697483df7a0453d3c22d3a989ffa069e2b2837cbf3d78034db95b48317287059c5cfc705e91c8c0e66f107ab63fa9c78e4fcf2075b487682457e7cf8fefdeedb9f76b7a4d45423f1ba82d5cce5a2fdbfbc9978e92dd34077640eed0bce9097c4c21794234cce89a0e34192a85c455799b309ef47bbd0da787b116bf3750a20b847a2c77bc95e637b2f35e6f92be814f32810f9644c2a5e1717da0d7f614ddddd6b2575db351f33ea924dafa18540fb7f0c8cf3c614bb96ded64c19fd215cb74d79fe9afb87bc29cff7de8820af45bf7abe0f66b86ea79fb4bde78f838d3cb42e3a7ee49981a5be9fb63d198e6e554490bb3225bd1557e24dd1555c08a61ac8edc7053b764fe8945e979e664da0a468903fc6be5456ab7847fba3ebb080d66b35f56b7fbf9d26bb7b7cd8ef673b14c93453373e3f0d29bc91a1a7d3cce6ebc59cc8daf36992da3ce127d249fb4d2e98a6175992fae39ed4c5fdddb71ffb195ed956e8973fba397fbce4f7e9e48aa30de74bfd0b83e3f23dcf71af2fec907773a87b999eee76fff8a5afca695528f606fec86962d44fc0d45efb05c59695f42ae928e3fdb787fffc63dafe83e602f4c04ac907efaa4c9e36be8f7eeb5a2dfa6f0e1081ea1de460adb900fae118f926eada73235007891237d2d40372ad0797ac6b2d1b244b67bced1c8246da0184b179b2ae891abcd0a36c75be7e98af2f66382b1008e813293752c80730f14e40af03841074810cba400f5861256697d4d02e432205be8fd595a1bcf6a15d21dfaa8f930b90359000f8ad2b0dcd837a0d66a1706c3a84723e7d66e302b85043ce933e809645a846a4d384f72b37c5af496dfea49d24b8a2534a25dd6705c2660a4e5a20395cccd87fa0a2260b18a046e183ab40112308317405153c12d49d87fcf2de6679e074832df782dd1504f9f4895fb6e5f25ce6554d807006ca78fd91f1c42e80e9e7f5f39ae579cd5941a93ba54feb2af6e824f89ba62615d4faa2c49bec72045ac4cb7abf000b4808fd75be2c3ad20d18826b9e0d4c68e983d4638816bdf4d88adaa7d5061bc0a213b2ab05d236306ed72f6f56074ed4e1915cc8f1a0555ca74e8119d52485a046008c540dba10b58b2e2d8f267bdd490d5557b48f6a156bf1bce92de65ff751b6cceb2e8aa634eca220184cae80bc49527061082b7744d3205d848329bc184c0d6dc61ea89504526be4f5c4843a1f323d007462eb6a3cefa466b9d0f9f8e0cd270e221d43661e936723cfacf6508ed5e303433bb1ce12b66b43920f1ccffbe87130212c1a0a34d1c2cd329f721578d8dd6d277b7ffbfbdd765ef97525e8d2acd9ba68bc05c001295ea1ff4bd063210a03846caecd32c97d09a2361093589cb7197932628bcb57125c7115bac3665682045197190c885c9081907ec5578907a4e7fb4482304a1a63cfca1eed7f70c116725c92f658fd1c74b8d83b1e18e3007c77ea21a871da03cf895bfd78ed0bee9ccfef40e1a336c4158c936a8ade1bd68ab49d77e417f0d655935c0588c4e3142d8e745e57e24e047f3d556e9b11df656e3df0c483a35e9736ab5e464d13b0cd0066809c3d6a52661b198747cc27e90bb212d2224a6d1da98f66bc0885ea3c6a82e717935dbc82e66603957a66132436085b4102f9d9c3af895fb29458a21f1e9f167a80d1ae040ade4fd238d8954cd0c1a6bff1725f0b929dd6cc9a4425a88d9c9df5424e02f41ac06f2417beb89693fe3b864dd38a3544b80775433e600c05bbaab06f243d77bed29faa8f75d28a9faddd75a5ff5fb41fd8edf47ddcfe76fb74b7db4e33a0e38d5aeffa5b079b5c3a0b3abdaaf87ae3e78a7fc57f16fa5ec4bfaaeeb5fccff7b513b21d309f5f8bb8701017c6e092601aadaed48d1fc6e41a0e0a239412a6e0aae81845c6a1539f75d4219c6e400e0d69d2515c6d936b3a61343f4627453f197c12d74004a4673edf83fed56497c3242ee9cc55e2b5c40982e2fa6184dad57a73d8df6ff7bb9ea5a7f7feefd02ca028c38a25f134ec36bccd0a84a013ca14a15cddb43383392db99ca6eca22daed6cd70ad13d4415c2eda2a70439b8bf1a09535b64d73218d36bb949eefc5f9025d4b6d4b3f8c4ca0230d7b1ebdcb75229c2ce551b0950bf9cfa2ad877d89e77b50174717266e2da432bac14f0eab5719213378d22cbd21d4333ed79939770689a07c67a072489f71fbaecc856b91d1b5cb591956947f572eb796997776395de5fee6f93cbe399f838ae6624efee97c1e57e7f335eea6bf6b3e8fc7ceb00c4b0946d2872af3bc555617509ba147fe3fb5863a78f8e7d6a8b5ea8860e2fbc0503a1f93abf5ebd540f9c0503a1f942b5b3b4b7ff8f6e3fef671593f1131686dbd190be6ea8ab9babdd7926468c3cbf66553f6b9da7cba311784d5ab165d9fb94f3d9f8135585dad94fa00656cd75329e45d24d3ab2799672c96d6bafedfd93d41e7d67533c2d6bb102070134e2290807d1c69340bf855d567ab24d8256e87ec978d5ca410a04ea0b98462b6cfcca1880ea01d2f08245648856fbd93e80d5f9738a407ae12cc939e9cbb142b49750223ada79a9470579512f53930b44be25fc81e0838490190769e9bb6a1b9a41ea49f05d5851831807222a96959975ded5cba8c812f947683da01705aeac2eb0dc1ae9932b455f01e44b6fa8c112a0b10cf0428abba5c3a6669a8106af6aee215e22eae5938399e422810fe80c6139891bbbe64d75c28d4392d5d8087e2a7088151ada2e3c702e1de357549749fa107147ddf864ad4a7610f801ee9d0d869e63bf9b2ef78a4d8283f5aba083d81e45a3db227d41b580e6c01f4fe0832e6d42b9218fea143e9865e9740d715920813d34026da4455fa84c1ea2b7a315946059bf05e667903213f31888685203610bfa8bf19d03f203026b12bb9639bcff9ba1517a0811b96e88d5e0eb2a95daac8f339b38bf5f9ab1a69d8ba90b281118ad0c890b89dcf4100003d41105d17d603969ea0de420c21e4ecb5a102d429284f4c46d4e88676101765f42ec846d626b5e372d7de3441cba74cd0f0b77b066f4d6b2b0b55837b40bee0a0b78295380fcd185d0c1d67891016ba5162d2b5e72e4c2472241737a8b53a14b530f3c60fd7520e36bb465465de717ec89c542a4579f3f33d47ccc0c787887917f6d1434194a2d3243e5048bab6596c5eea9564e8137233192198846d245dd422333402d57263a6d809e5ef4ae3d6e2d0380ba3a7254f19f542656ccc1b64146e6014a60499d66cec5ce2910034ede2091224c5d50e4213cc38018a586a7b1b9d5743d3bad48904326b3a37f74d2fcce7864f1d3a21308c74ed5ae89c13713cc43a06621d4bec8a3b42c84c249f7745931b0a490be7ab9070b52c7c18287483c01854d1c4cf74deded215c706a21801db253db5d63feb0d20e21c773a4a23406c35ccf7c4184ffab0396bc768b20d6e808b32f879dbd36bf9eb51e0c552e548d74e2add078a5791eeb2506939a03a12c2629e5a568512403976dda0cabf8d082c7d9601d80430bb436bf8f9abf6676c2263a2e4dcd500bc8ce801924e67faf4ffe3ee5f98dc34b28771f8ab30fcf3281035983b92c658e538ce8e133bce66bc938ba47531088d882550a0257bc69aeffed639a7819684c7cefef6f93d556fb93cea6ea0ef7dfadc8ff04aef2240f5715249b9d0ad23ed605cb6014159d4a8163357fb431e52a42547c4d0f2c86b72486ebf1d116a12e3f2db188d0685ba2200199591ab6b2720f030a4efa9528a2217504b1479481c313ba45e858d1b5958e901794fc0977093c20031c0b9831bd285810743813b90c3145b44b7c621017e41e07e20e880cd2ae3c24b5e55cbe0ec6eefedff571d150f2f6c1bdde839891986448d87e89dc80c07a73875974b16d70c07cfd08d9947425897821f63b5e1856b7af64bef3ff3cb888abacfe09c0ff1d2558618e7533882fd9b817a5d94f3da17c35d78e1ed50432b2415448a9280eeca3b5c6d75e978c098d1a60d768d4da1ed0c9cb39db334fc9d112efdcffb484666ea5fdb5a37eaff8e6b40f2a32738fe3c4edea573d9c52bdac41d2d720701e62dbd2be76e8dfa301d5a5ffed2380d05848e984ee8cd6eddb8a57705a81ec620d9f94bef2abc5b1b4365d8a9627671ea4f48c42f79d8b6f761b71e8172425175c7fdf1ae8630136157df9c8bc1496c665c661ed76161ad958b8ef6022530878a6df88a4f68b4129a2eca4a5cd37be99a03c5b114bf96948466b04277f3f5429646badef0db3ae22a3c37843ffa97e8cc3040271c81f8165b11b5ae44234a8032010f2d4c43d3517cc337853f077f85e6a88ee9994328ad9d0629800b4203ae893e4c1538dabe822ecb02c53543b459745e621da2afe9c6b88e9377ef1bfd1e0a1fddc6241852680dbb7138f372a00c4ef5983bc32a7d3e60f9cef05681e9299e39685de28400cd5d0ccc814d1f9fa8d3d8efcd588e1d24a3f6cfa917cac1d23d0dd3ddc1fb3bed70f519569bb734dc539e7c579870efbfedfca6998445511eac67e7b1f65efab8299cdaecf1994f12560b3789abb85f1c495c849da048133ec62215be8ed086d539f5387caafbd5b9a61517fa8e81e2766a959d865affe29acbec5dca9765b1bd590ae5bfe1d2f04c2f883d72a25893279e8859811c029f82aeda75941eaa162f78c4aa0c5be0a7224a0da1f8f400c97eb7a228bb4065207597083b0edf3087be41182c9a5c058457390342b902fa4523060c0d4f66ca0122d9c38a42f6b858a91f26449b080d720f714fb722bec610633f58c3c41c5064e4c025c308386821c6120032240c28aaa93b58d6147e1da2c8308703c11422bb201f5908884953b44ba02d629f4c5c650ed0d0300730e29042c97a685c44f12e311e8588864a14d130c0208336e9ae63286144818718a14598cb60c059d7c68e911d892f12833a22b8e563e423a4634c8cbee80c4c11e4c47210694393732f044431e8d2d53ef0cd0ddb015947362af623ee0fe43d623c80019a030c0fecf88072bac4a941a3159b785ac806f089dd159281174635199276ae47a176d134cf0f29942e60ed155a51d9a4d764da880938c2701f5747446d0cdb3d39f004fd89a4ae579183789f787743e239b481666dc1667106171e46e7b2504fcf41ce9247d4900b5b4c38c4c520d81456120f21de94a46e31f4709948c4ef9355941bc2ce22e339e28c21af8e82c5088a09b98bae8864190e71ffba0106381eb8f41c6361ba1e460642e2c9f1e1d7c1485f14811a29181f0704b4550ce401eafcd4671aa3e30e2f3e0b4f2b7ebb4a6bdd6081b139a64bcaf1cfead0b09e840c363e32968ddf42e1b6ee2a34c356291e9d8b0e5606b91640bd70f8ffd2b1e02ebcb29686899603b66f0e138cadaaf8e88275603a46a34d81bf2ec631b06b0f1b70920680310f2a543d73d133f0e0192a611072837129a86eba35dec71b635994d95d9173c1ebb6030c3c6a217b942c0f69f62eec6089aea51c2558dae43157384c7786b1ad34018e8817f4df0a72f105013c7cd31f28de83c7f76eed281e46e9b9f0eed6b6a778179ee9392ba143290f402112a88311df9240e87cb9b6ce83f3eb5298253ae8873490a774745fa281d00b8c1d7c7e53d272edd2b215ec8b302768fdef1deb64a3a25cb7ec0947f0a0b98587ceb2af4e281dc9dca29940e5780243bb4b902179d7415c758875d7de8ee18d2b6f074b84fe719c3a7a9cb409afec6087cf8786e02275302e81e8801df1b0cb7169038bf57f40891696fb0b39940fee6e8c50e813e0c66b53acebedfaba5819495626abb496497ba665c78112284dc01b4791b286ed1c7cdbaa8afbca0045e26e87e14fa70551170a7f826075f8f5ed2203bb84a2b40ec1f166a68ecfb3785de40dce6a5bc263375acda3b085ee27df5bd5d62e9e115050c1dabc0551a5b0f68901bf15f1d206c873f2fcd669a6a7044afbad88fcd75ad3f99569517cc701b4289a51c457824c19984e08488347d1b5828a42ae0d45dbabfa23eaa6f80819b1c86af0c478e459208e433d09b0f49d74d571ac9dcec0be82bcffc47cf3328bf39b556acc8bf7c2fd44a09c785be9681dc3290622be380a49005958c1922d6bf2cd754d1fc3860d4d3fa068738e4b01d528e4986fd8566d3e13601c42219a41670b5e6747b71b312f88977a68b1e2a1ca897510c1cd25076a8188e0067b207490c98fddb9189a68232dbadb865db7c5a5232c7e1e9e5e442244803f0cb3dff49bc73714b2d78b1da5d64d750c67e999fe602095a172afe90f825508a813fc919e5a800d3803a4f40703e5e863031e0e150bf007cfc63f4fa5d69401bc7ee5ddad5dd38359b0ac007decf90afdad6189630e87cae1038279f0005781c7ef52236e83b7fa4a9874023cdff0bb4432081f876894def1d857c2bb75a0040f30577da34b954ff26b4d06121d77f0dd7aa0f8cb2fd3b8f99f45d71d1ac12a300249a6ff408f812606103e6823791aa1f260b081556884c8b57168877dc8048763b8840dbf42a330e1651005a2c8beb542d3f3964885870a8a1177a683667203570886e00e422119a08abe4131f5b1f0ca0e2f0251e5e9eb97e8f2c97515172af67786e9842b329906eaaa3e59be90cf92e9216a15f857b65511380ce885da8756480e47423c86034fe217d6735d49ee9656b6e1e2b1df1118410190479ada70b6682402ddc050b54a2d5ba839b26d6ddeb1a7849d6dda6e427ea13cfcd07483fa17e83974c1e539e6005d61e3dc5c791776b8b215297c7b87e305f4ad6bd7f32a3eadff5fa2b750d75502a15c4dd67e8a7046e7927320856ab803880db36eb817fe4b4f09298c7978b7364ce2dc0cc8079a5f4f06acf3518b8a58f67a71e52d00ff0906a41fb8b1cc6e96ab366650a0d8a791cc3b1c48d4236fcf8bccdb07ea9fd6c7c768cdc43d40863dc9a03e7524e5a5728e63ac4bf89dd27c21c9500c2047a17e1212284248408295070fba677817ce55b8b4adab2f74c10978cfdd3a3406808839e456d4d9391daa7c9d5a48bc89cf7761b77e1b051a20dc2dca04a72fe9fa0bc4b775bbf80ac000b144fdda20f228771550c6b695c1c50043f75bf5c3e3ec554039dc22cb036f36c25ef0ef799124391a2a8cb8b5479b0a9d1bf9a4408082b36714d504085957099540098ffc591e1807bc4472d79227efc8e965edf146b1d14518cc34723de5990e96369a0084b57367c3556a4b0c646dd8e67065daa67d31dc998395add857c172b0739746600e12d335011fc29e5cd875f10a866d1be6d01c8ac2c10eaef515b408d0176820b8956abf9940c803897251f353cd669305c98191c7c9c28b153a744213a272966dadc8e2cd3643c7918937c775d0798a670efc1574b426021b876717921f213affcea17bb500ea84fb0eeab80a2e6098decec65fdbda21040f829036a6101e2d31ca947798bb0aea0c6c4c784655901f54742b63fdefbb95f15ab732f617b895e14b639555ad74e2bf70a2519228a41c767070a6a52c1cd4a039a8dbf5752561fd08f002d30f12a144651367da42a509714fe34145ff2376edc304953cd057d1c03003383ee8e6ca0df19e0fc9c3591d601a9fb8c4d0b65cd1808f0ae3a8be86cecb140aa5eda30a3ae251980fe93ddb444bc54188567a06b9fa75692db02ae87bb8ac636a0f88e6f23dfa45d509c770515fc41a1821a0888131846b1dbd7f8666e8240edd8441a0f8e6105dd1a1a97ba08475b8fb301001f25b7f4d8170e469931a932118a32146111908963879677370a401f42314dd761d31e3a454394006ade58918fca89833240f9f0e792ec3c91fe2e089def2714e151c3eb1935017b0d6c109a045d245a198de6271fc6671d02b812f45ee174e241c725283ee2548bae351ef824fd76e0d45f50139f7b1e914b81853c0bdb076838e9baf5b9e2776aa20fb5c65d8fdf5cee8f0cc821e0e519645def142da20b6e98870bd76e34413462ad6420c8ee6819cf4d8621670c0c8ca461781d2ac41ed5e67ed38653e0a8648690b5746040f174b48f0dd227b5ca1dd83eb4d3c7cd8e0be4ddaa2627fa024c4469c0efde2b5bb09dd6c51771c5232127b90e400d407dff48d66e762e0370f2af2078a0f55fba6e3e36eaf0f04ee407255eaa1e349859c789943b70ea64ff0804ed812e5060e293cfa21ee193a993885b49f1d14f54867d9f20824d42cb1faf8d31947cd5bcbaf81c5a03e173ec21845022f35e419349047c0243c2196f0796b1b350c73a99f617de404b8c30efba2055a6db1890123cb9277747f2a9fb0780801f5f161fb85e820e644591f6edd871421bbd98cc7cafae88dbacb5a3f548881023d3d62263ac25fb94366fdb52bf2cbc677b96255b670657eecba5cb1adbbb56f7ccace63401ecefe47ee083a190b9ff4492096635dbb23187ed6c15af01fa826898aeffe9f7a7bc7d55ca7ab2c4f8db84ce3533d87ff72a867cbb05d742618c2ad027fd0079a4b823be12559b256b700156ff5de031447b9e806aa561b7195a169b957b6bfb4832ba77648dc0ceb3a2e8f4615fe8f5486d000f6541be08b34aaec5315a640b1bec42958a7aac5b1da1af200ba3af7454a4ec741560fa731dda539af04abce3f9240d6e8a327ed1089cfdf5066e818defa8f3f3686caf0c2436ad7a0f038ee8ea2a6d94d409baaf14374e55e840f3f768ee931bb83003ac093bd433c79d910bfeecea0580e6bcbf02fdcab01657cc507f2567a34901e2d811c699f2d0daf7e68048a7331ac47baf6e12150f7ced5d1eec63f1dca49ff81efc6d0e8e0151a0700cbb60e5cfc9087cab0f1508991f03a3c54da5f1032fe6f7ba824209d7312530e02c5b974cde140199ae8c96d88f7861d3e739115eda3e65b38c0403218d575909092bb0514bf85cecd5d4801ae32089ed980170064f115aa5dfc60b38508ec1598c3f0d4416057a0566769043be76e6db886edaf5cc5db0d96c1d560e51ae86b0cb7c3a79da47671a21aded8f06e1d18c3a58122f513c545dbe9765bc7cb38cb6b8edb6069382b47712ebc15d9c3382f030cb8791c490a0f2b14e1d5e22803c3a9eaf807747ae4c376f70a8f929f20c7f0982578192017d251f025f47587749287680e0693420f415805c05df7c2db054bffca45e78d4bc3af73c8841cfef71893bc8cf36a1573a1a28b72a1c17f2a171278b96d86aee2024ae9a0d708970830db0c30b288e729a1e97a2884452cda51fc2b6ff9907ce0a24357fb32c03d137c3ee8cd900c18d161f6401841a09712df7b192a03c025304a4660fade330fdec1f0d99e029401fc5c38b8da8e6bfac8c146c30f0f68a3706593f827f0d00789e2983e693521054dc7ce1d2021e20e302eedb1e21f1100c8c10b5cb8fd6bbdbf50b1ed95609a8761a3da890677a835e5022a8fee58a5c8c6f014104837c041d5628490047444ca6038ad939e6000aa53412372671cc50e97be19062bf4aeeca07ff15a528901997cdc02fe97c9f8d07db3a3d8fe4bdb430f8da848331890bdb0490e5c78597b930b15b418ff3cd6d119521571a553fad644ad4efbc1f054176e17da778a74f84b74abfe60202bbc3d8387a0dbe001d7d1776b4fb1fedf7c8c4b91360ecb7cd3f79c2b079d047aa6e70fe0da0b579ee91b705efc9770b257ae19f850e00ddc978112ae3c03a05d881eb9d12cc545e512dcaa6877e4bfc4f01b2b03095a5f20ec659acfb3fc46e2b50d952ee00f74e8ca401ba6b0f1f50bf87568c3fffaa2b5c911dca715b3013b47cf3003c3a7c894c8d0e80e6972aa4d8b7c731f508fc0239d865a335809144f39085142314a8668993b7c40ff57c1283a70e25e621854c5f6baa2e7570fdec99f600fd5d35beb050c156f6974fa0c6d36bf19862bc33787a805e763581fdb9234a043a44f2dd31a02a284a2b79096cc215ffa5d41640c313b644aec8464d414084d14616974083669ae05ef1303c0d27cc11debd9b8704ab398ad5e3c12ae6e683a66603a4278426abea167986e037cd11952e05e7dda23f2d5695c1d9cd3f7c581e193ff85562fa70af61d462fd04d5b216d806efb4ddb57c2dd43ba007fd3d0ea8e620377c4f9ffcf86a0ced8369fa72520f382a1628775dcfa3a5cfd958bfea24cb8a76584e512bd36858a8d6ebad0bd118cab0e0daab8551bdc0cea781652247c34f802e4cab9f4b0c46bbf27bd5a0c97af0477afc86b15a0987095b8e25ea8af0511b4d0769346eed682fa83b883db7c5ed0f2dbdee7fdcc4ac1a586c6906cca7ce42cfe0736659ee2a14d994f36653ed99475f16d3ea74e892665e185ed250e1d388cf735543cc5ab0c4a416b48bdf90985d795e2e7564da05d83ecb3b6f94d596c374671fd679a080adb337d2578e61088b450df4eb8ebba74c8ad0f89eed1a139eada0cc99917b2a7037c18a04ccb7a66bb548d6d533d828cab4887ccf4e5ff465d6878c26919d406b79b5277f65d5ebccf8d5dbacc1af61faa0d0c0740e75e783b835428822b07a62f76819a0a15f1537b85302d80d6aee9633835df745dc7f406032985ca10c86ff51ccf1ca0156b10c25cfb968b0e103dd3b28617eecab015f7c2161246a17eb4345dd7a5880ac8a2068a34d885a62f196fdbc831b576066c5e67d7fdcc33fda5e137e2cb5a3a3680370fdeb7458c5ec9341ceac0e014033c4d0327764c770888a23b6c34c6fda16398031f25da64c3ed89005ce8c3906c31dc67766806a84c650d291e97036d06a6e7870ae2f9747f0f8781690d305e218032df8d5dd3f6d12fa5dfcc3ebc6186a4de3a14e6c28e1900c80f305aaa85162441803c74c787e9b7b16728a072978024904f652f302dd28e84760167018a1983757ae435d4a311f98169db14b4dc81c783d0f4a0417700e4800f37bc6f7aa8afe3b930624a600001330843d30654da351d34c0751d0c5a073f4317852924d4a07843b6eb9b01c63f376d94acc221848b6c0808433c30fde140a1bfc284df775055ce357d97fed48be3c1664435b01048a410e56a9e4db18d8210edf443d381f972ac8016d3713d7338f076d087a56d0e1d0fb6983d4c4c0b0dd6438c2f0b1034846d0e1380263d03c77431d884e79a3eba9c18783192c2f847087f037ce278094c31ded11eaa41d970a5c344db4e65ba407d7ad079409e42c7336d6ccb7330619b5648619a48c889361c68023d80bde861a822df5302d31a0e778e695bb0e68e1b5e0dccc1c0be80351812405f15426ae1c13624886810440428b8ebd29aefd066e950f53df109b1349c2be131b18e675dd5b10f4ff4898f501287025042a7e01ff57d231820b6303b0912c31cd8e81720842bd11900e60494d7cbc004e819e2105102e6058687214c289e3b6c8e9547b25d747f8b76213e5ea91e659ba749e3272584bb3d242b1aa866e59a00028361823a4ce8d57fe899030f3b81346c4842666b404328d3aa58edd2da85778841a1838482960484ae78a68be62ac841b7482c0cc053082587e837d2c31e61441d27685ccc0887fe541cd2f7023df58cda3a88aa104e7d90b2376a21a778df910208f8b16f0e3dc5a7e0cd1685f942370ac94114aafaf338305d6ba0d0df5a8714d73214b673b6a4c43d24271844ec88de39f80a7ad317be04503fc321a3333b14b64a76fb1a64bdd83331b882dbf41305e2c3447a5f0c10ebc0e04570f55a8285e3c145dc06d857eab8fa551d535f09929ac42185f360801116447d49e3dfc523c32e1160c62729324a30a9abc4c7f4519a6b0b03b015c9225d98eed055e86fed54221818adf983986c31df267983c6f50f827a6dc4bad3c4bab4fafe1d9c7a208c86438ab88b826ac70c0180c7a1e9db0afea92f43db328341823aed0e4008cf0c908d03af2b9f4594b69b79ccd379131f39206b18170821db0c14386196ffb051c609dbe2a148111770e89ef9a683265ea1126210210cc59190ac4d92aa5592584d12c13dd09904b050df510ec47cd543623e4f09bb45a44364b1c3211184d07f4b44daad7b6d7b14cd7dbb5915f1fcbf13b0da13e4f049944967f8d22625f6ab3a444c37bb2644b1a230173a15bdda926ab76c43d368751b4214de861af314ef64f4b68211d670f8555a3e30f844f87602cc0ab50c423cb60e9c1fc7c5e38aec4a645b7ac4e1c023edc16107a204ba4a4e4a12f482159868c38ace7bb0c085af1c72ab83e6060194b96871eb2117d486cb12432e52fc6111ad107d6699d82d28c352b42bb5d116d371d0338d876c5bacd9421a09052a8ad04b0b1c0c5ea3a0aeb267867816dc158228374151ad8fca1ca43c8486c503f25a85c3f6d1edd5d044bfdaa4f1e59bb65309402418f58019a01969e3edca219087da21433296b6857a921bd4502f419571d469864b0103a0421fe160d6e08bbc7f91bc23a01fe1128bdc65f92258e2a036aef1c93f16a9940f85e7318a1fe637da7d6428ec92271af88ac0a943cec9f045f454e6884743d987985b9b190b0d76d27077b073b0a02ec5160bc9a485d875a46b88aeca8635f3ce225d2d8b905fe433fb8d56180601c59f6188c497efe0b934f05c1ab650288831165058dfd3b611906ba0c130419aca032c6f801651180cd810fb023070f4ed847a7e98403ec590d69578f6b6276254931a127c8361dbd03e1bd5f11aeee3015ad084238a3d9250788d873c9cb84122dcbe8542f3db23edab70289cbd8960dfe85a0ba37093e53d620d21edaa81bb8397317eaf4be6cf18c619f00e5fdcf734df0483c90d12de6222ccbc038941408ea048d264868e42728610484152f145a528c003f16bd22bb5fc3a70252a000e0271f4ad01b567e2210de820fae8440efab543c37b38e978d65c613c6679841b391864d5417b7da1a00aada2bbf0704038444071df1001222056a304780ce8c7095aef5f68334dfea8e86d3ade01126408e1900789a89eb09ef0878061a36e24d0a018461aa54fc3a7a139f4070afd159016b62140da5d5c66f135194c7be61068b470180f4db8ec6af4c241b7e74ef83244e397c4a0f0f0a81b293aebc25def988ef3cc214ccd251b25e40601911e925b44a00dd135bd3940b405d623b1882018b88a0715a23bc4c01c042b9c381f68446f589b1960503f14a8a1660b5ebf4148c11d61613cc317bea8c8f53a3ef06110766800c27fb71e02ed3ba0f84ee8443041d7723e6ab4e13a02de13c3a60deb138a0e161d448b91ab2cccee811e47e71136e90e62b80c5f788f734dd2101df87098292e0ef90208081ada433a2d4364063b34e3e4784bdc964e802641784504f8d7091b057cf25447b7ed903ca411d80cfdc647e350442d0e855b35e123cc135ad12139bb138cc7211eee41603a0eba1d20079396630e43f2d8807e2743d2ba831c7a0d888740692bf4b7c6881c0c4ee2a1428387c48315982e60e57441200d1492b423148ab2fe108017a24e70cafc268ab63b5408aa7a21f26f42e2a418a86c407e1806a8a7ec63a00d537824f508c6931090ec14895203641e7d7c8604b21c2250ea28cfa170364076bfe47a3084062a9c04f40d679b4869bbe8c1cff7d13d050a62604dd12b6818a0c3385cd280b429a1b98a3c7a3a4275711024c80af23c7388c41d6a6563e435a87308889c6dfa8170d1109a0ebabdf090bb6e0e86e4910da54a78d93ba160ece06a7be4ba0e6614763702072bc4f827487d0c6df445e753e01314b52570fa6cf4668a0e208642b8ee13a7d6156659801c04706011588b5508d1c1916f0877e0a8ec897e0f90d2a101c0f9800a02bcb431aa8d850d1ab4d618c90dfa0488868b8427ba0087fde651a58ed0851d1a0246a3bc0ada1eda86a7083d690028a8bd0dbf2e6029c8ab800dee1a9ee9a38c6b6804b563f1da38bfd56a6bdc8c0f94f0a2cb4df1899fe2139d828e6890a816fd051a67a795ed8c1365b3bbb58dda4d5d511f4f05c9a772e4d3fa7cd49af9a268705f267ee99ad8c687a9ab585d73f19f35b6f615af739dfec3994079fd7f6bd9d7bee27456f79fadfbc1c4ceb38a97d9f5b6b1f8b515e73331884f448487fe363a2cd84f27b1c347d7a932247992fb1fb9920334259ba785101977c738fd026dd9533d3972827f15ac02c53302a183bd2b56dbb56c64ef9b434771cda18b01be51a107502a0f512aaf41a902a24c6d44e10397f893704b2b9e3918ae9a4f87e6201c28f45750fd03fc94d4b0e14e46d412a36fc2fd7ff7cab6954f78cc0831a0c597e89c52c0568c3721c47c2112e90e5e56f0e78b4c3cc4ec148b451d7fef53be3c2cea5a871bb5ffbb5d13ca054314c77fc2858a23849d5d5be933bdfb84ac1baade19b623a2bb62e702e129843cb5a3690dc5ecc440dcce3318a6a7000d42c19082216d05d3732b400d149f18d9aead84a61baeda0f87e8e139541c4bb15de41758f45d6219a8048634a54b7cbe81e907776bc3053c0aeebc87b7b15757f4253b79e829c386dd4c47803a210832dcca03692bab33f63e5ebdabb5232d52beae356404c24aea2835e7142d96848335e80b5a77238b247012f2028a4e4051f7b606539d8cac1d8a455f0e913a41bb4d0755fa4cdf6fd40e3d423ad0b665287cb31d184ca38a994351c8092b75e9eb9743d37395706938264e31ec30df6f686dd280202496bc9de0cf69e58e2dbca7d4ce53ea2a14c7708507946740e4c0ce010a2bf0155f09147f893a2ee47c2c10d43a206cbef07c878be87b07f1816dc557aca78725b6639283062ba0c10a963cdae7ad047bc21ebcc458e5cae00255b93f693c0f27f37d5ce6597e6354d94dad568566f8a1e93bab9a053134eca0d6eab12d3c0cc87fb290d04092b5422928a0eb83003e6dd817701e94460fd2a200f236da23db826df899cb01473a108ee93d6267a0db775bb1c38be1ce7096ceceb95b5b867b31bc0a960e69aaa9ef639e960b0cf9daaa8a777a333dc5313a2d0f4e03bf184365d085159c3af4ecf0b7787c2fdead3de3611f990ffad5b85bdbf62710cecf23325d5896a5d8cee74d61fe2315f6f7d9fc26e5c2159c97a0524ca30253353a308d9e8c52ebc96034fce06fa9d1d8be612f9d2bb425b02d40f2fd0b7b675b5006d559cf4c52e4c39f87eb721577695b57f6850f1b0e2842f7eff4e5152a14d9d6ce70b006dca53815c6f596f30645f4a4196c3d339ce86d7638f5b83ad6a7bf5bdb8ab31b2cede02ab870eed69e84409e7a02699b93c004aa8cfe2f7c23cdc6a228785a0acb7ac5ea54e63d2544be48718ebc45a3098aedd4f6291eba22dcd9079d58a6f1fcff6e27ae42d1eada326ca7ee05e2baefcb344f963540468ff42f51d2a10cc80a1f2a24dc06d9fbe8afcf331d14d65ba4b8e7210b856c3bc8dad626172b0341a97b664032f2c01cb82f313a7560fac367a683411bc9b55128c890d66192059bbb1e26314851ca86015856c8b11f9816aa8ab9c4dcf5cc61680621b483c16fa013c838402d7a2b345c625ef99ee19b21e222ea5d51ac8dacb9947cbc943c6f45ba07f0e7e9c0b42c4fa1bf0d9e03948e471abb248e34069716892c2d85cc0315fc97a0af1978441c79858250baa8d3e0419f3d74f38446b108dfc89194eda06ec3ddab016af4d5a2ee46725bd5326ff8afd472ef46c4ab04776bd7082f86a7305786ac4e87b730397efd43ca1f1dcec48fbd1ee2ec165b712bda4af87073c183f68d035c1debff4f56a7991e5e188b4ccc90721ae8ca7958907eaaea7bea369ef4e93eadc049c1f3bfcc23a6a3389ff3886953f4f990b47a3ab449efd68ee1747a247b4986cc76eb66ebefc49e5fc1f507a8a38ffe5d1075740642afa03a210115a7335c6570f70a0db49c0e04eb2076ce677d911fee5ee3212d699c90bfe358d5313ad641d24420ef38c2b5d9a72326ac7dc376ba42bac9eafd273864f5f0b5f3e9c0823659b00f716b7406c51b7c26281ede099fb5b3778caeb5b51dc5f6eed66117f2fa393b848e80765dfaf8f7ac8a72cdd7d92acab5817e9e9b738d333556d9629ba3473e4dff58a67c5be6cae25e3fdfc5a5b2889a67a9feb14e2bbc7d33dfae56675194f67aa9196f36ab5b8d2fb38ac5e5cd769de6bcd2f77b28b817af9766a27196ea8c9b9bb2e005bfdda46699e6f3b48ca46e40db69041fc26b9bcacc92223fcf161a341745e97eaf5e17c52a8d73358a22a8a45828a92ef5095e562b5e66f98d7a76fa4a8ac3cba5265811e566b28aabeaa7789db21872c5aa28d936cacd255fafde647c95c2e461672eb3bb942da25d91cd152b8aa2d5989b972ffe78fef6f2cdd39fbe7bfacb77a315dbc0bb394f73ce96516e72ac60de7eb31ca7a325dbc1a3f8065b5db70f7763b5dac4b93adab1dba834532d6713b5e99fca54ec9dcad4a66f2a53eb9e41121b5699cac533d1863ad3d94db4781289febe7cfacb3f9e8fe5cce86824ec9aa68996e97277f373cc97957603cb7817659aae55666cbe78f6fa270609e8c333e8a796ea54803da1a28dce0a9d3d8f54d8f46affa6afc2df73b12a89999469ccd3e7ab14368fb666a5196b1fefd92dfbd80c7d74c77048a3edbdce8ebf50abdd8dca3e2eb2d56a1433751ef3d8800ea9a314682ebe1c2dd832cd6e967cb460bb2c7dff6df161f4fc9ecd7bbd93aa5012c06033b1b9ceae75fdbe63d7d6d3211d1496d3062e232d85dd79389be378b4d527f9ec5cdaac51548ee177549aeb78a34955f1e6a09d746f13f3a5ca3ebe4b6f479ccd47298341ffb25da52335dda579319fabf7fa3d767a9e559b557c0bb317adccb8af9a2f604ed851d7223b60f246881c8bf17b2d317fde96e9b362bd29f234e7fa3d933b08a34dcdf4c3a62839001827703ade50b755aac0714cb87adec0919246b8284a8d8ea3759e3fe6e62acd6ff8f23ceff7eb89e43861668aa1e6e2eb551ac999fdfecc66a59914f922bbd9d2f3338ba9bb78b54dd52c57ca5e4f2bcdf765c6c5339dbd46bb0b739e2eb23cfdb92c3669c96fb59495e6bbf49695fafd7dd3cba21e845809deeb955adaee04c675966319cb7596de3f04588bfbcf4d0e0d38d76c37d41126e55aa99b31cba25c0bdc066ccfbb6a5fddebeca1d66fdae749d7f3ebf6f9f5277a8ffd4ba2ae2daa259198d52ae53fd7b3f37ab1df7f7cfb1667ebeddbd164769fe5158ff304e0f1d3b28c6f7bbdc3da52b3793de2f7fbfde1d366b32859ae709d9bcbb87afd3e6f9630d77b3d2d9de433dc34fabd8e9fdd63bfe3e8644c5a5c773aaeaaec26979b6b1be32c8f6c5646cdb5d6ecd1c725eed3fac5027bd5be075d10f5b790e3b0c76612af561a670575bc808e1733bd860fe9bdde7db1d290b69fbaa1790b8652d1047ccfc5857cde5cc8ab2c7f17e5acacafe8a3e9ae6b8429c36b2029f28a97db84176594de27f81a938e4344102de2633170825b1ad7475a2ebd26cd08cbd3f74aaedf0bd4e05e7b5e9645a9b78002ee927a1302e4fd6b9b56359c781cd9ed595d492f42a5450b4cb9fe919b2954aca500179b6f163452824078dda4cdec778309ced42ae5cf8a9ca71fb8ca3eb6a068746633043b23795944b53953eb52196d19a75aae8f52fdfefe53608933f5e68bdb6bc64f6d3e5c2d2f7e4c6fbfb846794c0713a46566ac6ba9f9d7362d6ff5beba57fb3f5cbefec924042c5bdc6aa959ab7355f43c35a117315407f7d2bdc6b1a7fc1ed661d30960143ee65aaa8f0ab35868fa3d5b46a71dea9e61d80a37f0697acfe6a74040a1e79d6d8ac6f47bb6eb680e51b554ecc4f15cd347295ee14bdd2cd3f93649bb2b4de11425318741ebf76c1d1d5f090d1a98f77a5a1e51ff36ba2eae87a5c67596454b2d6f766aa5957aaf5769993e3e1a8dd4acc6f571599f1f0d60010d6f947514deeba3e39aa45bf0b82e9677d62615c3486f8f16960edd524b7540d82b2dd76b0c1dc04cb14acdf771996bd08fada6fe5e6c95b84c150067597ea3d0242a45aec40a4fcb7596c71cca01a431e5fd324b96cafb6cb55296f12e55f24249178b34e12acb759de5d25cca93783c7d1240698695b28ec7ed64a4d2983f3d9bf286f8f2aa19efacfc1e90fa765f37c02d855ad25e4f13283cd612a5fa7db313db7b09435546f26ab3b2e942b3231199c21d99c28e64f5a500db792d3ed2efe51b413ced3a3ee2564b8f3ea8fb7938577c5916eff1ace2fda0a9e23525ab94bce04ab6de10729cce55ac10c3e64573969a8bb258473b568f710d0f3fa4c996a7d1354bef35e9aeb93e3aa9f5cc2f340e0301107cb044881f441f1bf0369240dd7e0fb7c9079ee65556e4f0a8cde0b30318383a82890cc1e94880d5fb7a93f2c3b7f67beda8243a257c39d53116bf741364f04165921fdf8e0dafbeae6bfdae795d4578f72ecbe740f1e700b9f523a2459a3b786ee26d72af4facd97e8f548eaae225df89684513157ba832f5604c2aa0f3625655a6b6d38894305d8c339647162b6b84ee5d7a0b7803e0682724451195405264b0a8593e4f3fbc5e6885fed8d24ff658b65aa537f14aa911af91a2f68bf6f8c0bda5ebed413cc5eee5035f8ad6cfb5236647c692c8b12c1647eabff26abb016a2a9d2b4951a6c69f95b2ad52537953de2a4bce37d5e8d1a37cb3aeccac7854a571992cc77f459b22bf0502d054d936529f7fd8a40954103777b6caaa487dfb7655cce36af976097fb6392104f3b76f55b68a7ccb620be99dcd2a4ed265b19aa725bcb0896cb68c1c368f3cb68b6cb68e1c761bd9ec2672d875e4b1bb68c09e0309f93a721df63e0a3cf636b29d017b16397ec05e45beedb0cbc8b5d89b48354d53651fa28165b177f0cdcbc8661791c3ae22fb91c55e4443cb0aede1d0f1bdd0b386439b3d8d6c331c86c1d0b55d6f1038aeed87a96b0dd84fd14ff14fece7c87386de30089da1cffe8c7e366cf64bf4f393274f6cf65d3499a831eca8b7333651afb37caeb2db3a89e8cf0de4926d092fdd35e95fd03d3d7b0e058b55b651d92b486ee29267f14a65afa59c78f73d1495695cdea8ecd96cc6be8fd40959f82b4f6bc47da6b27fc9c5657c3b53d9b75251759b27df8b659ba9ecaff6d1b7c4f49aa9ecd7b6f0bb98a73395fd532a79fdeaf98724dd880a7e6c9fe0a69ea9ec1f6d91d4d2576de93fd21c4e5f514a8f7f6f1fbf8a373395fdd616fcb45d5fa750f30f72d96a3553d91f6d099dcc99cad2b42dfcb92c3ec01470a9ec97f4e6f9076822970a2f53f8b4944b10cecd5456c88518e965a6b24c2afc57bdd7672a4ba4f25fd3f81d0d263e2aa5d6b6e9d15a7dbb5d2c70a0557ab004f15596be9fa96c25157fbf2a62ee3af51a2f8e1f055efd68233d7a91f3415dbe3c2cb783fac1fcf041dbc84e1e742655b53e7ef06c15af37e9bc7e7e7bf4bc6debe6e849dbd8751a3d9a5ebf7dbb51a6fd48f9faebf34737ec0ecb3451a82b5f7fad4cfb8f6ed8f3347aa4bd7d9b4e35f39bf154dfc3777caaebcab43fcde9d3d769f4a8a78d47f17ab35ff1fd0ddfffb52df8feff73873a3c7e9f468f26bdc74fd4af678f6ed8db34a25da2bd4ecdaad89649aab3674de1fbb6f0551a3d7afc7f0c6d32ada697b3fe58ff3f4f1eddb04b2c3d2a7c8385d151e9071892b99f4eb4f168f2efc97436fb66af4dd4af67ba361e69e3b3a9ad4ffe3d9dcef6d3a9a97f339edafa74f688bd4ba347ff9ebeffe6ab47ec25f4fcdf267cd9a76a34633c9df7b5f1686a4ee77d7dacd7158a1a9d831af5a9a34f677b6d1ce117fbe9648a6d8be4fe2b5d7f74c32ea095e9f4df5f99dff4c79a3e99ce3edeef61aaae9a59b96867e50576afeaefa755ffab4737eca9c83f623fc170a190fd0ca98fd0503e7d34fd46994ede97f16693ce95f7195f2a667f3a53a6df4c1fe9e3693e7ec4fec4d7bbdfd5ccbe8e6f3f62bfa4d12336567aca23f61d4eccf4836519d30fce62fac18d8de907cf9a7ef0af8de987c09a7e0821112e66b087be8706a6da74aa8f1fddb07f41eeabe9470da6ea7ef60df4736a8a8cfe8d3ebd7f74c3be85977011fe82014e8cfeccfa30b18c616c2c66fdaf1e65ec5728b7ae27964df97fe244d41bdeec8f9fb51c8fe9ecab47ec47fca0985846485ffc030ab4f1c8da4f6c63389bcebfd1bf7ac4bec2e5f890c0d0e6c1f4c37c604c3f2c82e987052616d3ad65c3b8b7961d2e60997e8713f2d5bff547ec37f8f4eb693e2da75bc77206f877389dc25b3fa4913a9d6e2d17be85df60319d6e17a983d945ea40d6b1e69875acc542657fe0271fe2643afd706d4fa71fe6e174fa61017fb01298799a7a9c7b9a7c9c7d9afee9876baad41295060b653ae5f0f9f5740adfc616b6bd584ca7f9745a4e45b7eb7e6fed60006fd8032b1515d18f4d3f0efdb8f4e3d18f4f3f01fd84f443755a43fa89a905ea9c0f3fae65592a4b79a44ea6d3ed7c403d9e2f160bb861a058edff91f655b85a28f703e54a0e7334efabac101f3ba1186e780d1f67501c1b77307d0b98934530a5b584c5846b055ef8f751abd85ac9fbea51859face8a9f1c794360dee1ada36d30f73b8e263ece3763e709309d57f2d8d6edbd53e5c543c52f168b41fced3005f982f1633fda373afb2d5f18c5d2f16332c480e2a5bc07b0ff57143ada9fd8c239f27e17d5557d9b22e5e1c14cfebe29c8a632ceeab6395ed448f1629ee99456a2d6663b53fe77d4d0cc7b1ac397e3cd9725671b6e233f3cf22cb3575afea7d55effe5ad5bf5175b6ae1b9e149ddfaafd1d67b7cd4b5b8e3d1cc3aea1d7597afc05bbe1359855275f43f7ece14c65ea8daab3ebe651cea9e4ae2981316be3480c7eaff66f39348e6f3d6fde9a2cb07d9c56b8379a16b4f168be5fadf6eb7d99eeab3ddfef525d1f638513ced98233f52bf5b8abcb8e5abedbbf7cb97fb5ffe5f9fe72ff667ff5fcb096fea6b322d1abcd97f58adeff82865506871120ba7df966effcf4dddefde5bbbd363e9bd88e3bd3a7d3f99b0b5d1b47d3e9f51e0ee5db992e7d52f1bd93cff76e393ff8842f9b4f9e1a7fe02725676b791d69d65f4b0b29f6d9c9b106b071b4bf549dbde7d123e8cf0c5a98613bb38fce3d16ede1d69941929e890496ee27ffa6ac650c95d923f6160861c4b254a612caa932b5463329093431e2f32a53654cb3ce0aec12b20d0da836c825a505924799f6fb57f106fff2a5ca5442da55a6fe5c16ebac8266697654a65ea6f080d0704820eaad32f5cded26adfbd662a17546c63c4559db1109c354992af07395a96f81d25fa571f9265ba7c516dacdaaefb33cc389d8c46595be40817795f2fa95197bc623c366af78f4f1fefc159facd259f48a4f16f4b3a19f25fdcce967473f6bfab9a59f9b74169d59ec159f7c8ff97fe1df2d3dfc0bff5694f915fffe887fff817f7fc7bfbfe1df3ff02fa75773fa29e92781266c644a5e62772fb1b14b6cec921abba4662eb1cd4b6cec9206754983baa4415dd2a02e695097d8874becc325f6e192fa70497db8a43e5cf249413f3bfa59d3cf2dfd8829b8c4c15de2e02e0f7afd86471fd5e9541dc11fa67ead8ed4afe150e6ea4885ad372dd5910a1b82900375a4d2af28188a82a17acf3ef0081714f7317b27722f72ce5ef24825cc4c6df9fbbd1eea9fd0468d22c100eaf55276d1f17a95ae16bd5efbf7f43b2865573c7ac9f7fb0bbedfd7e747536b16dc32ab545dd3d90b1ef15eef8c9b79314f61d3f77a9c3de5d10bdeeb9d345cf67a65af77564a2f97ec271e3de5bdde53dec8d0a3e805673ff3e827deebbd442959925615fb93cb0c5e5ede0a2d19f17599feb5cdca544e6bea96672b5537a1fd46e297eef73ff35eef676e5e67e8f2544ed79fdc27314f961ad73fdedf6b3afb85477ff25eef4f6e66954405b3efa4728048ec7ba9e055bc61ff92f20434d8b752d165cad95f521e2685c042cb8ffd95d79cb4ea7d069dca05374fff98c455aa58a356a882624efd1ccbede372964fac9978e8743e64f9c4aedf703ffd06cb27ce4ce2a00bf12ccb25a1e23f45af59d932370b004599908fa6636b540b8ecefbfde271764eacc0244a27c5ec9c6b254b58ae253a6bb9f565dbc08ffc5879c2b059d95d79fe18f69d7d16451c45e32c67a97e2e89989b5aff71526b4785b9617c61755ffdbd4e9eebd9423b932a15c2a0335bd47d66b575fffea575b322b258164d667523cd34e730cd09b6d4eb69d9a4e8f76751d2cc76d636f61b97a5026767da69337aafb725a6afa53f312499f40fcd06aebb5a42578bee69281f17380db9c6593a2967cd1c58f51c4855fff137e6008f9556eaf52c14a823212d60a3e4d10a8f8e752ea87ade567abc7ee9a4e80bd58b8eedc0f3f6503c7c20a0c5b2d7cb50fa994efafd62a6d7a7248fb896333824ac90fa9db7ede427ed7cba8942346118d04461185fd240d93d310feeeb8e6d2d2d2976338f36b9a6d297aa24924a5ab930ec9ea64307c24296b342ff480d61ba96a49651ceceec7b9d49d023cebbc053b35bb228ef6be5d81e19b67e5e8e33c318f5fb99d89930906cc6b276204a26ba246ffb6d7eac37854a2127926ed277c20371b036d2598073001f37236a9b13d58c7040abfc0006579d83cc71cf1d83de6ca195a87dc37833aaa26354ab0301d7591449db7b7120d4eed80cf5ba8d77f4e6a37cf453fbf946aeba437a4f15f27136e293742629a82dbfe8c3749c8dd209973f9c3713045ba71ef5e1ae2a58a67fcca372ac95d199cd527d848703cbef75261d8addf1a16002ce1d4337017f39aeab7e9e9c45111df43c8aa26c9c8cf27e0b84a506d6dda78e005b4a802d3dd74b026cad6a84b4ef6f3f335529aaa134afdf1c4ae9ffe09a24fb95be82699536def5b1b6c732aea0e2e685bbee911c5fd95bba04f2195d29e75da0e8f9495587f7f40375c0ebaff368996b1fd5e987c45247ea53c0c63f24769b74daa4db26bd36e937c9146a882969b749a74dba6dd26b937e934c4275a43ea3524826989c43bddf617201c939bd0b14c4734a0edb64dc26af9b640aefa6941cb6c9b84d5e37c9245147ea0b4acedb64da26174d328577334acedb64da26174d720e53f2138dc2ae49a20f73989dd79474dba4d726fd3619b4c941935c400d0525dd36e9b549bf4d066d72d024e73025ffa264dc26afdb64d2241748a651326e93d76d326992739892dfa91492b7945c34c904baf354ac00a4634acf6102df2ce97548734acfe1d3aa428ad1b2ad66c342c691339e9c69b622645c39e3cb99a0de7a9019c89958ce2472a6d9a39019ca996b3933973369bd99b7966d5b52c65ad47b1b9ed872c6a97732643c3913c899819c89e58c5b6f6fc8f8722694334339732d6760d8ffa833a994712c39e3c8afc1b06feacc42ca38b69c71e50c0ceea2ce0472067abdac33a19c19d4e71132b19c49e44c2a655c4b7e32ac0f2964aee5cc5cce2ca48c6bcb19e8f50f75063afa679d8121fc5867a0d7efeacc40ce400f5ed6996b393397330b29e3d9f21318f6aace24722695329e25671c39e3d6d00932be9c09e54c2c67bc1a8c412690330339732d67921a7041269532be253f99d7d009320b29e3db72067af04b9d09e4cc40cef80de7c9b2fd50ce0ce50c0ceeb2ce247226953281253f81c1d510c99fcb998594096c390313ffa6ce7872269033b024bccef872269433831a3843269633899c49a54c68c919477ead81ef90b996337339b39032a12d675c390383fbb5cec010ded799a0be1b2013d657026406f213e8ce1f75e65acecce50c0cfbaece24722695322e8cf4457350a1a7597d527dbc886b78e7e34d5ae73ce8c5d7f5160e6961ef75f65e204f3d75a4f6e2f5e65c65ea6348af38249f40f206925fab5f8fd4de5fdb02cbbf86f2ffcf1d9eabf71291f756d6bc9b4ed5fe1b44f39be7cf0ed4aeb9c949d3b47de195a48e68d82caf1163b3caee5a2a36351745f93c4e96477a69f9a4dfe7b36852b2747688d75f1e62b3cd6707bac05aaecb88f39b8711dc075932400ff05e0f7e16fb3dd9722c98e0cee45ddc990ffff1c89b71a787637ef73faf71929ecce44b7909713dc7a79aa477dc5cc5157f91cfd30f9145a4f05db3dce77abfcf1b4dd07b5487cf0fb6c1c5c38d345d5f2387f78eebfbfd64861575be860ab39aaaeaf00a920c57f5aec71d3f527b2aa31d3f521f43f206934f20493b7ef4b5fa35133b7ea47ead0a2ba2177924a9293774b3c6a39ad2bde2a317b9394f17f176c52bed8a0b56bda633ce5ee4e6264bde69579cbde5baae9bb844c89e4256741171134550ec8734e266cdc3677f40ee55cc972ce5515d23e390161cea1cd224d36225a41b69162b7824d9b0b08c473fc89660098f52d9ae25e6119fa86fdf0a3dceb7d5322e51dd72c6b63ccab8c90bd14ec5a3e4d89689ad7864b1053fb58c7d34f9b739eb7ff5089598b598f77a31e9bb3609f3c5f3b73ffff2facdebfd5e55db0d3b16223aad2a13fdad6daafd74a4aaf79ace36d881a63f4b1e6d3971be53aeb3398faeb8f996ed78c4b9a6fe5bedd74f2bae9b658abaa2da45cad4e9f4ab9eda163d3a1cd2be3929baf9cd18a5b1534ddf2b8ba254ccbe2898e98f6e98fa956d7e3356f5befa1589eb7fe2636e92dc6194b15b5c231c0bbb83742b6564af79b4e6e33537e3d5aa48fe9557f1221d65ec0d8f009471f3e6c03c8dc1f85ee2c291a512bbc0a9d8882ebfa89e37c631ec058f0a8e672249d9531eddf2f12d37b3ea196ab85f6eca349ea3154dc67e6e9e72d2a41c65eccfbaac9ee737f1cd286345de2ddaf933d352ced443b31d6935b58ff74c55d9c77b9da547129b651e715316979e45b0827249af7798674ff3a8ecf54a332fded3db708e20270ad94f50692b5ea597da3c54d8e6d8cf79f4476a2669b6627f6272b12a8a92fd9247b406d2b6a085acd877b958b9ac6a56fa7b68b496f4b27fe5b0007f1659cebecdc57ac27ec755fc0b9b59c71fd8af94ca72f6cf3ca2ceff08f53472c47fe00b659ccf8b35fb0a2b2dd35d5a5629fb3d8789e792b85d67bfd565afe28daab31fea6c2d12d7d91f75d165ca559da5a5c8d6026c9df1b25e50da67aacef2324acb5e0f8d294a5696d1c77b5694d12ad17ecf759661eab75c6709a67ec8751663ea8f5c675b4ca5a5ceaa52ecaa06f08c32b62aa3aa1c5725a9dfbf5e8c32b6a88beadd37ca5af4635302d8cf16da65aca57aaf77b616bf5aaa48169beb52c7b70e0a77656b579f2db4aa061c4c7dfb562801be7dab367cd545a2b5222d18fbaeacef9665f9092b16fde3897d22c78e9cbd8ab58665fbf11eda7fd9308a5f728debe7b271221786ff38e5e7a7463051c6f2fb037b9079098db75cceb23646c92a531a5e94325114e38bd5dbb7d164569725cb38cbdfbe8dcece785d8466076fdf46565d800b059f4998cd1a57e5efb535cfcab76f23bbce9279077e76d614124c4ad3c32f79fc2e7d566c73fef66df473d3ad2c7d4faf496cd4f2083dfa847c856c8300c668fa79bfcf1fe7e78d51ea84cfcef1799572ad9c5833564eecd901f7f57fa595ebff9556eefe4e2b6fdfce631ebf7d8bbbf4baac5bc367f17cae417b12c6f75caafbf47b9c45d1bbec0e901ff869bf7e5dca520b3cf5ac8ccef25e6f87e902d36765af7787f9acc99f15bdde532c4ba27cbf2ff7fb62bfcf581c25e375ae35b87ecef5d164c6b6512c0f149aab942c5752fd8cf77a672dd0a8f4fd3ee9f51a41581455fb7d0105c56251a59c0ad44d5ca63966f4fd3e83c7d7a427458faf6f79fa52aa000b5e3715e8fbfdaf9956b1adaeeff7b1b9d9564bad6a6ed6b89d9ef7d2e41e0b72f8389d3c2f348b71c3d66723e9dcbe2d0f68a638d1f20c26eaaad438b35823339656f15929e1ddf5073279573616452827d9ef3731ee0496eb7aafa7e56758c8694ef7fb97f5fb1225571e4add70dfb613cff55e6f136b25cbbfb0be37270e1c64d9030ad5b08ff90c8e442b58cb3b046b1fca5658275efbb3ec104571ad6429cb7127ea8742cd7787939ef67a255cc1e556e3a844d1d261cd3ca88dab011589ce221f0bd1e447d99dc4e8cc62b289b4254ca473563b95189d59f73acad72289e0bb389a2021106b04e849946b85cee21a1ad412b26452cea2789c8d7e88a1021493d576b16ded57e59184358dd0130f2d5dafa7a551fa38cac7e928d7196fcb9e447c9c8eb80e586353d98bb29505b2847648ccb611ef6d5815f1de92ad22de9ba3139e5e4f8ba3628c9c037c7b04eba1b318daa817393e17b7732b264e8553210432f0788157781c9d52c12df4a0ab5a763b2019ecf25eaf36766cd5c126d6acd7939010bc6955dcd364ec17a5f4cb20bfd972cc6fb61c8875d85867db66a7665aca62fd3e5d5529f66c177d8f07791deda2e81ffbfd2e8abe8291dcc9e3fcbdd052b6c511eea2e80f7cebfbfd7e0d20538cb8daefd7e38ff7a36fb3c306ab71a77d7009fdf80edfe54089b36eb372b1e38b7ac76b314b7599b03faef217a9ca7725bd4e8385c5bbe493ddac91868fd3d1c7fbf3f8d4561d36368a79a5353a17ca5a5c68696dd35a9feab702161f0bff1ae1cfafa3038f0dfdfa71d57cd36534cec7509349405f1fd5a973a9aec35d93b3d46c2f0191a12b02c79f8b665729756b217e37e277297ee7e277277ed7e2f756fcde34ddfea190aafdfd609454f61b7d51a68733504f00ef9880fa809c8eaf36ed61df9271336cc8d666b8e529a56d9a2107891acbd38e0e164d6119a56c558e53aead4a3a59a5ae8f3ededfc3d4edd856bfbf4ff67b2d89c87696583cb75102949e38edb7f556ba855c82c8129c2e767100244e996aa5fe3146c4e745a9950248a52cd101fe239879f3b90a5801554083056b2a29a44aa0b737d1629c8db4d5b81abfcc46efb251352eb6a372ab6b2dcbef47aeddecf7d2f9c3aa6fd0263e9d145139d3d9251ca4ee765a78fbf4e82eaeb51a252f67b59a508908531ad1449670b3d66a4d9372c6127418c362d21b44e882a0fe4c2beabbfb2cd1e25699eefe5499eea7a637d9426b7d689cb58ed35ac3e8926bdb56b722914d996b5dc80cd004266b3cfc5c76aa7efdc6591c9d596cdb02fc0a0892557347e22dd282c773b87c78849a18b7b996ebbacecab196453f604db63eaa3f7c1201129945d7393e607464eee0f6d0cfd39150312a1e6fc56c2e70fed846dcc5f97831cab5055d5351b9df5b6751b4182f46168b7bbd4d14459bf65e5f46abf3a5c078f86439c3a74991f32cdfa64a7a5e1182b920d8aa008cdeb052dfefdb07f500ef37a5c9d3f56615f3f432e53ccb6faae8635a25f1261dbd4a590a9847ccd3d165cab29ca7e5a68057476fd2366096aab26c8dcac4a38f6f479bf2fe9e6d4a89c69d4b99832707ce7d3625dbc95f2d4b4dfe503f787af0e5ae64eb07bf5c7feacb75c96e0f9e01bd75c01c3ba06f7839e6251e170045ac2572acfbc37ae6e92ae569079e819f2ce30a791df49672d0c6246d34199bea8d888fed91c5f8512b3729ff54137575e872a06cee30a97640eaab7136ca9badc06bcde3541fc39ba3eca8bd655c7db6bdbaef25560108da48aef8a8c62a3d76ba21f9493ca9b39e8fbe3c8d636b64b37c92ce225ef67a1c55baaa11b13deed9cddf58dd9a3151afe8cd97af685d07cba337250eb456b5d4f2c716a2825103620c7bcccd4db1d1f4d18b666a7266ebcc309a0eb0334b3feac2172cf749fb4afed8420dbe7c36b16747151eafa7f8e4cd115b80a5a8607cf8ed17ad1c2ba13bb2b66ff9d81a6bfd7e3bcc9c20d224657ca6eb23b86126f62caad7effaf3eb47cbc50ed7f2e332ae96e801e7b664eb780349edb77cbfbf29754618bc787a7fd4c82717faa7ac761e23de91aee9aea37afdd0da89efa43a096f39faec132b247d4687e0e8b34f2d4efb1d030c003adcec13811e719d49e78cde89a2124f192dc99ddc523c9f470705b09a5d5d3e581ed156a57755f989311f56500ffbf9df38dfc49d3a3ce3cfffa333ce1fd80182e1c5f2a3ca3fb1030e87556f82e7ff9d09f932f00a18a0cc5ebf295b24517ee90cce4feddbe67162d88d7eb47c86a5f9edf769ff60d179dec12cbc2eb5b265cd776cc148aa813c10fe594649a6fdb3d4d92f98fab10450d9f2cfbf3be02f363aef27dc1d5907398fceceb8283b14a17f5f7ec298e2134ac62960c871c4b544af31ebb328eef5b42d5e4c802ac7bdded98b588bf551aec56cabeb3a39568c5915252d5ed674e15f07039acc1e1c503d8a5e4f00d6f46840df96b20e36fa0282012587caf0f97eafe5d15f99ce8afd5e2ba2099a43648f13315040feb3d9397f62f57ab916eb63fec41e7f0b7408376c51f928cdb582c5faa8842a2685a87f16c5cd8a172884f9ab8ce24cd3d9aff87bb098ff3c61b1fd45fd2fb712b2ffe3c95bbf76bcf58fc3b77eff8472f5fb58f0bba54fbf3af51ccbca48e3d13f0bbc6cf5860d89eb9df67a649d12a5932ad1f824eff7677a8b79f57a3980d454e6e0fe7e449f7109b620ff6a5cc28496c88a94baf69bccc6ad99fc296eb62c1dfd30225b3724cc78b70248cbb9fa93eb2c8fd2c99f7c76cecbdb8f988a32e1b8eecc1232df44ff48f623d1a6feb4bddf815c1ad387f94820b898d559f129ad8fb69afb03d5921f8ed6f509974c910e9f35132fb39725cba2a2fbed766224ab2172c07b60c4518e7fe0a3df381c938935ab49c7b8a522e9f8c251602bf429b58093ba6d68e74d944eb6b3f36dafc77b3d6d0304e506084a0e04e52afa35d73675552b9d5593ed2c3ac3b9dcef932791ed58bddea621346dc722b78177a5b6edf536fa28bbdf60cfce893a346c368f2ac83784e7f271d2eb2d6ae0bd12ddda459bc972c6d6111f736da78f76c44314e4e76ebc1b59ec4c9b8faf736dced6faa8d0166ccd4a5da7c9d946f1b961d414ed6d04fdc69b42bb854f6ee91318b9f8aaa551efe7bdde9c40d45a670b4aedf4fb46ec2a99571547ac0bdce55a1aa5e80db63984fa381de1817b9dc0bc9eb8bcce46bf0a6ebeb4da65216d44218bc6331545df4b3e998b0ecb15f4b60d80b276122ff488f6fbb35aa87d196b5c1fa7e4b19e9f45111f1db2330fd8df421ab6855faeb32a8ac7ff1a11ff77156d29cd75b688b42aaaa2e8fbf11fa34a8fa23fd826d256d18a4a5658b28417d02bfd5208d2487a7d2749afcfec7364862ca233fb9ede3c5b34fe3065e61a8bf77b94bc8ddf6407fdee1a4d06e3a96d67053bb64a47d9429359a067119772fbbdcc2bad9f51aeed6d1ad55c57c6e11562c01ef27bcf1e6ce52c43df9e7770e29948c1113ce20f0b66690d9e62ad9fb27e6de8fb636ba99bc7eb14e83af8edf552739d56557c834522d930568f18aff04e5f556b562d2dffabbc618d124a50f6f040c6fbbd16471f729d9142e099c0317bbd8653256ce2ab030668d5b0b1a2889f97fb68cd9206c7c2f757d19b4cc34d873bae5ebed6417e83e7b255c3a1cd16daaad1c0a8b9b37060ea34af2ff833613057351b86a043dedbe9b4e7e7d1e2407672a0c0c16ea34dfb941f3d85aae6fbfd2d557413cdc7c2f7a3a68f52761ddd8e79936f54180fb775a1ddb06bec5bd2409eb3b365afa71dbef7d099cd7b3bb68ddee129ada26d03c5a188eb1257b13a8b56bdde59dcae587dbf2ca2ea7c215d15dbc94280d178bc410fdf120f65a34b9c5502f7f29a2f7b3dcab6e2cf6524d450e6800eb73b406c06e416d45d5947f179bfbf785c9deb1f454708b4a793cd8cdd447cb2c1ae9588b45e47f1b8d46ed82ddb308e5ce751a9ddb21bb6613053f5725f233a721b45d1cd7e5fe00b34e7a36b5dff388fceecf3eb328ddfddaff77b6d1da912874e8da28d0ec069deeb9dad6982ee0e453fec79c40f44417767d1f35eefa0960cb1c2e322deeb9d69b20767c17dbeebf5ee6482e8aed7eb78eb79aff75c7eebb9deeb69309806bd958f4f93e63a9bdf1f6c245dca16ac90b1bbac38b12c6e65b9058ba3b3b283819f1c30f08b66676da3bc66d9f77adb89331b6f27f60c2ea7c97662cd66a3330d7e9189dfeeb186735d23ff55a4514dfac49ab11520b933b688a02ea96ebc6f56b56840a85eb4b53612ce8d3865edae5a46a5b6620b56e126da884db4c44d540006b262bbfd9a956ca38f9652951d728644baddcf847478bfd77894b205eff5169cbcfac3cabdc7fb6dc747ff4c75d27e5e91480bb164c994b9e8f6feddba571fd568f887ede8d479c898b0f925e045d68ca5137ba68f3650e9e8cfed0122ba2d848adcd9ef99246ffa1650e773e1bd76767e10a000575c6fe169ae1fedfab328eff538615badc5aa34bcaa69f440947e4a364c662d819bea1dbde868a5ed388e88e5f2004ada22da517fcbfdfe8ccb7744a9b7d46dd965a2ba3a44f6d3c7d2f016454b4c0b4afe06d7a35520d2479fa6b17396e91f8b49bf5fa22f03ccdf0365d3ea3516ed14fd9c499491dd32807b3d3eb16670fe7ec8344c5a3386bfb0173a0c1ef208f1cbac4053e80393e1e5e1607fcc088385bb076aaf1212b81fd44a83ff213ee4ccd2512dd16afe0f7a362a00b52ee1b8c96dee0eb0e194ec27fe2a657a3a6131eea257b196e83a31111eba4de17502513ca1c02615a400eb67ab28c61bad4248b0d2513329672bfdbc01228b281927da16108dbeaa22dc88f551c636d1028605df6da8812520d795cee6d11961c695ce76983e9ba37a59a59f2fa28a2df7fbf97ebf83d3bad5c78b683bba16a93cd3b6fa683ed636d199cd16d1ef8556b1334bd747bba6ec87a60ce8c0d13ba876bfdfc1cf585b445bb613957d0bbfa357f0b7d73b7b0fbffbbdb688becdb44ad7f511d477bfe9f5349226576c01580bc0c612278dc5f5bd52e93a1333b3d0efe94a8959ce76052e533b57dba81c971a4e73ac4325f58c15fa283bdfd236d0b65122ea8b51d8ce0a9997b22e649e542acb926b88f16ba6f17ec41f5be37c64b15c1fa7137ea0b3767b44d61976032850de5a4739e0a3c987ed0c88e5a79906e4721747f3807b959a5551a22a2eaa85a1450ffc2174b07514a22d8a0e971642b53729339e96593cfa94153e27de1a6af68cfafd52e868a5f7f7c75decd02ae9e428d64db20c309a3a934445cb70c865b663d2dceb7f145a3129672c43d5ad6ca16df1f4954fa21add54b68240c8276503deb6df88b05351548d0d7b64b7f4b750593284bff2daf185cc15bb293e3112defaf5f8787fec858118a4c8514bf4f35c8b59a2f77aaf0a2d63ff2cb484012dd26574757d820a95e32a1f6d732618985c62cb0804080193c6e1c8721da3266971844e6c842cbf666ad603d84616009e4906784d3eceb54a1f55e7da362ab498add8162e1ff46a1013495fcbef62b665b6ce5e349714643b3cd2dc15271a8ce3badf238ba16312dab4628c5cb88dcf23b8080b5478135cdbe2fcd74c2bf471db68c16c7df4273451480b2929ee1e5d8cfd3f73ed1fb9a67fa37123eddb32e2f9fae080ab2ae260e97ecf1fdbfb3d7ff2a255ad9c171ff9ff717a3d2def47a9ce341efd996bfc918348550a65f7ef97d92a95b4e8a4bbfafd61978a44fb83380c1fb63a4bfbaa2af5e9adccaa795f6a9bed212bf4d9419ff169a3609b6879ad0c9b7728c3be923657871ae18147ada483f1cbe228316cb68d52c102def67a872833f2818b19864384c92ccea2b85604d94eaad9b9b642b80ca07dab8f325dc0e155f42ad616fa783102803a29faf64c1f4f66a38ff7fafd658957de4a675baca35d72a8f7b288f2b25bbd2f2f5b2230bd1f7dd8b2374554e4dd2f6356ad6d38d4873555eb603eaf5025f0405b15da6939fb1f8a43f5e3e3c57cd7706125f59d06caf3c7161e6c833fc9c6d628eb739d6965543ec9c6d9a8d4f169d98f321d40e993726c8d4a833f79f2c462f05798391240cab5ac71f5944c0ab8298a3e9f75e8bfbe94f7d7178895ceb43caae53170539c9dc9aaba47b79f2539e82a47f28daae6e8ebbe252138a939f05eaf781cfd42c0e4bc85b15954f60b0c4590909446c4cc4c48ee94a036c238791cf151f298ebe332cafaf6a888b2562a23125785388a071cd32be9acf0086e44e97c582ce972071647c8fc64db265a17aba217c8735a45a8b371de1e96054010ade827fa2347679b28d7d2c962a6b365b401f8c7e675251bb68b50338aada132a214639d1816e57ebf43a447b98d56e31d6c88fd7ea98fb6905e52f66cae8f2a9107f40fcbd6fae80cb90d901f6f609e368fb97e7e3b2ea245df1e25d1a29ea05f01d1fd539a9b1727f0fd8bed90618ec65c4bf45182c036dfefcf36314908c52d1f9f0bab642b8aa2646c8d92fb8e8bf2a94ca01eef1d204f5f20c1f3d3a82f5d0d3fd564dfa97af381add55a068c7893fe54e87dba1f5e1c108ce578d1b00647aa2ae83e00e9e2e8a816e9c0db8fd22832aec6aa61a9238954fbf9043f6445f41b97c040adcb3799b12ada12f689ba7745f403a7b5cf165af62412ccba55c429eee5eb4c70cb5675773fe4da4a3f171f5fe7ac12da7ba44057451c60eeb615a7948dffc405c97c37b87a0b7db4200dbefc731a7c4d4cbf5a91afea50e403c29728dd8dceb6875a7d40626c30de95569d4570e374bcda6052db7662ff3c1586758a53f6fb467ed70a55da6a7e294e2c28ea6b541302539d95d2e1f8aef88c13b8725c8c0cfb5c933cc0e9bd9ee4ff4df22635c60b02207bc6ca3142307d24ca206731a82d939afffe9066696a3a343724c76035e358673c97b1ff83e8702614d7de384dbeccaaa7e50d4b736d92ce1837e3f2a6d2f5fb03d8f9afa35b4d86f3c563a7d57dff99d843c88ba8e74ae0b9b95610de5ab4782bc9e3d91688a87e7f0b8fb667883f24936c16fd5ce2ef7e1f3314c6410f9aa9fcb9d0be2db504f0577eb05edf7e0abf4f5b1ea484741fa1fadba87c9c8c01dd1f6588e6e331d9361b52d24dfe4bc605ae113aa523d9feefd7cff3dc3e481bfc9f871b7c2d6afc11314b7d3c4967a36da2fd85e00a51a51f8be87dd1e226ff38823c270ef584e7b87294b333deebe54f509affaefe0cebfcaa889647e13deb6bf5d00e1ac8c8b6eddf45dfb385c65b0df36a9525a9a69f1f12bbac8c5ef3f16baee514ecedc8fe40f21b91149b5bad3cb05efaad7858b95fb256906d1c506086d8632348d39904b57f28febb461302579704ffed0421e7a939d0881bd4d2e128857d8abf49f482245c88836487380822526c45b808e97ef77a67ab5eef2ce9f5d2271c4d03e35eafeaf5e8c97e5f52c17e7f96d34f51af938d1594f43154923ee6fbfdaad7cbd1ef273dd9efb754b0df9fc5f453cbe98c5a555e9158d829d14388571e4102e91e2c5b4504c38671b572a8bf722d316266e96c11e55ad55f014e7556209ca8cef5c5643b8bf8643babbd60668fe3735ddbecf7d963c41517937292cd66086108d53b5fc195b5986c0117492759bfdfa0cb92d89e7f51c7916a2a5b657cc39694f1d9827abf85de0322b880de2fa9f7d9e3c5b9be01f086586eddc43ccacefbfdeaf10a1ecefb150cae6a06173fde9eebdab2191cbc524ee2593d8e66af6f24fd83ec84677c68438b120500cb7a0d0101ec215ed0c1612fb36346c6597e4e0a571fef758932316cd8b32dc3278185a9b9a49304901ea0187380e808d6b7e8ed75949d578278ac50eb4467c5f8251cad2dabf4d1659deaf07859649f70bdd3f6751d6bb93efe271f7d2881b61a734d1f7d6c62051283fa69a695cc418349499495c9d47b7114e5539a5b59c2f5c41ee793c2b067a38cc551f1c419e713072e1498a5761f3d713b2574c9ff8fbb7fef6edbc61e46e1af2261fa638111ac48499a0b1544afe3388d2771ecc64e32adaa9f5f9a822cd612a840a0afd2f3d9cfc206408214653bd359cf59ebf80f8b0471c7c6c6c6bef671bab54563a24b07c16f092e7c6a477af56396be7ad24fc298a64c1f7f0ce4a695630c1866591070ac686644c5f9a27a7829be6bee72199d2818271a579c455e08520e79bdcb9428482305a491de3ae06914ab128904ceb1cd196fe4f71eabc5935c25b5ce486b9d86c344d09849fd13b1d84161e40913e301ef4761ab65448acd2e63fa326d003121c48874f3a9f2e45af5fd70887c4760c5be839e4affbd4e0f01adf7f5da85aa1d4f22b9ad7007a295f77fd510d72536a20622a1b26765c17e93033ec4a4957a3d586cea81ebadc09719bec8b0e76ce64c518408a15cff78754d6beb72276b1e3f3b3750dce04dde3888287b9237414f558d1bf9e20b55353ee42b9fa91a3c76799ede9587aac11397f1977b33523578ea723f7b586eaa06bfb822cf7fa00855836743435709362985c32770bf3654b8a00593713fc2926812cd5babf15d3bc052e4ca1102670082f686be9d60419f909e62c6bc5bd46964c738d5a4bf61bf5ab2dcd69e33225f6f75fbe94013c6d1308c8661e2756fee77ef2ac1eb7b4315949fa0292b5944a989cc0cdf3b0872ef32d837e033dcf75ebdc95dbc6672a7ef2441a0891464d46e2462ec6b8263a3b11c31eb4b65300463157070ce223de5804145cefbd465a06942a7ccab6bd17faf6b0b935ec4a641f06b82a71ad683603ae80e19c327cb9be5c1724723b8e9e0e930979e76199b0e5e0efbd1e0ab2d32b40010d1a986e0b0cb729405f5c6a41f0d16434cc208e6091748bcb26579b16535600d3a4ea7a15b04de0e829906aedcf2bc3d9f46426149dcb5b1c4104b98e8ab413af4c3ea73124a603a8a1e49c09ed28b999fe4d092acfc136692135434a61105d62f1d3ba521159cd00953c1351d31159cd10ba6027cb3dc2574c654b04f4fd9a89f84535f245d88e27071009c1513e080ed86097c46e82e3bebed6a60ba19ec0e8b5c835d98a20b008a03b697e06b422f2b7607eb2e1ba8641d4f3e07aca0564b164eb4f10d3d7040886f184ff00d8cfc82107d9ae31ba674929e089d74b6c52ee945109cbdb25372c28e85a9c3567963e66f92d0ebb6176c964a7a434fcc646e9d1924b3c3267d19c26aecb3517f475f19738ec119bbc9e9d5fecd4306fa4de4789f0a38b892b269addd99e078fe5b82632a88c6121a3d14d2ca1b4dbecd82e0ec7537086e8a1d4ee741307d75a6a7c436c2a6c6842208f47ff09b651e7d5ec77510e07d76ba5c4e13bc4f08ddb700ba436ffcf36d74175d532bd9f43efcb6c9a50638d4489d4b0da3d6a02fa8b7ab92a2c1bdf4a8958d39cd85dc1b84820fd60745ca04a1d2c8ce343cf919656f8de32996cbb534d9c7827d4ab1ae48ff4a42422cd8b64dd986147d3180be159c744f647e07722fc9bd3d49b74f2617960193a408ae83555dfcf66f46ec00e2da92c8f63af16fe75819de7b1f3550f829d5c79d2fc92ff851a27f609882a1b2c600f07e28307ff4d128b1bb1e69ea8d68b2ecbdd0ebd9a1dc23cea425ce3a25f728671b4ee55294802070bcecfcc44a81a457d6de054b96b24413f19f8d2e2b8c0c4ba6a8621d124a9d5ed53ea9bb9c7e17f85060acb6387984e572d925445f3f2326704c7ab1deb3d120edc79afa1e324e798bc9c2918fe90f0318ebab5726a845f839c22978c8f0e4d99b68919cd15585c13ae72302ee9e5f2243937c81eb04e526389027764ecaba36e6ec70fc6b15dcf4d4928dfb07e125c52a60ff078ffb97e10121c1a9ae5e275c2fcfac2adc9c0d4059848efb7198d0713f82fffa12a5ffdbba8774c2446e9d3fcfc1e357a39f24623ca17342273e226692263abd6cbab19b147caa3fb867c0eceb6d1876901e3f68953993fa4ef84de0b77a52e8e3978f89db4186f5d7421c11e76f94e76e0e5b189b1cc6b396ced5c22d39e80e5b8290b552a49c674b142c77e0ec99a80709fb430441f7d19500b6d91f020fe856674808103a5feb3ca6da7c9cacc23d4f6e7a79f7e5092c043c13efdffbfb7085128c09de3f87e75a6ef6062d9781a27ca086c315d190cdf556f7e0eaa44c91e430a5a9913320a2e7fec5fc0ef70e462692f6d35c190294991df81d2c2f35768df50607db0730f2fe0e8bbb80ed09f60f2ce94fc3b7119e123ad962713f2e542b5470e934ce537ac1e21ed4b6323acff37e12be078dc47d03dd6644237a61460504ce2c086a358ff4954532b8b9a44c2c254d58fa4a6f98e509dca0193b0183af9be5327fde09023e78ee28da574c0d5e0ce1333e017a57553f9a1a604a932068c685504e06fa20e783c7430617a774c94470ddef84a7665623a6af5246326a2fee5c27e87f2cebf30467343257b930a27cf054a71e0bacbfd33109f59715d6b5fca24973ac8bff32a4fa1fcbfaca157f668b3fcb8bff628b3f1b120ae59f43793d6e16112a8313787b317402e3c18b615f8f556f5afd42f50b21d47d7e3984022ff5405f0e09d5c439534e8996a52bbc4f678472b60f5749b66f56661f6685edebf1c46c5f5f299b78caf67545f04f83cddc93566bb8d21fb626b443f462183a3a080c2cea674215d8f35c93237d84de2c978ab1dd72b0a1fc4a594f73c71ecd1dadd3dc9931265bb0884e354d1d93de421f3dd960e1d3de8ba1f57115bd7a1204d9a0336c327d97ca06d116a8764ffb8361782c7046a7ae0f38da62ce128cbc92fd822e8e4b747142333aa6094da8dc8a48f84de17b69cab89f86c658179406a1de290955931dc07ce1ebe501592eddbeec4f92fc8cd8af181379f6a9fa52136f9846559a46e026afcda5e52aa7055759e0692b2374ceee1d91eac721770ce5b19efc34672767860dbe68b5fc2569b5a2fc8cfaa6f09c26ee2a91eb65e60a990d50d4a9777105c3de043d7ad876351f308434e4c44eb4ec0bd399bcc379a78a6b678cf1ac7f94862226f888ee93ca91bc93ac11fabc7011486335107aabe73e163525da57a1a76eb05f3623bb2d78369a3a0017ab41800bfb146a558e13ba9fd0b8644d51f22a77e49f8ee720f74bfc762be66b25131ecf2390ef0c286bb24510347114048bd71929db5b4d4bb637d375db9ba9b3bd196b189cb366471346c1cc9a6f3a4e76ad4d4eab35cebd058d181f8c87f49a296b1b644c25cec000e79a8ee8b830c019d16b3af60c70cef29bcf59ae5bd09b175637faa0356a6f725dd8ad934f059e80b7463c328ae8291e516e6d780a3323a373a0c88a905baffa9553c4183519bb0e82660a3db4a54b391d1f6d83dd8c2793b9f217da690d26f43a5ed31a3cf7738295b5cce8675f31e0e35a8e34a36f13c309789f94b5e87c1d3aebada1449f7d85ca1c4652cc1809b610a282493950fa44caf785a48af44541f2acf9da4a580a5a0685914fb25c2685a94f2385ea57eb52a63d6f50b987e4b9a4c8c3f088f4e752a3062fcdd3234a7296d85cb69d07dfe5f23ccb6f9f20613dcffa91c6fa55b4dbe7b8408a9d61f11dac1c7cdda3a4acc95df5fbe34fbe99544746f6d66e4acba5a7f2a4eff12642b479394dd3298f4040d4f73c71361973363b8caff4f5550cd62f5f7d9714a249b498a06128dab3c803c9c3cacacbcc5c4654c947a9c3ed03a189121011ea6736d018e9df094ec9b06635ff2a4d51bd4e6739ea9eb1f1741b2ac582f44568e8ddcf09fb2c6a41da56311886ce7a8cfeaef06760d6d4f02bdefbb6f684acc2777adf542b2f666430ecf11ee11ac98023484dab1dfb8e0e1454f12e61ff96c58efa926c5043a951c34d3432292b9c83e2add58a6f6213fdd3b868000d742ba7ea71c607713ef5c972d96ac9264bfb49d86ce2ba809e240876f4ad3e088061072c8899b12fbb88cabaac6f923af595e236e46b402c97601ad5bf5d8513896176bc9abefba8ca6f6db96c36f1b63291a907db257fcddf4ac053d93bcda61700632f042c5f6c21516c21b01cfb95bbc0202408f8ebad6e10f0ffe932d6015d074f0327f1fcfb35f73d29a73d3865beaf8a7e14cdca3e0846616a55a1b01d16bb525adf0dc2f810161ab1fa3c25abeb735b5159b4adafcf022eb84b22084a63ced106bce5e0d334ea8ecbe5793e27cb65f3ca7b3159f59a58a3389f86fad5636b7cb5c670737d3e6c10cf88e5b28961c8be333b6f5cc0002904cccd8e9de7f749a109d46cca20d0b9e4a0335ce1df4510bc3316f1bf1bc684176c1b7709214db6e0cbe5bf8b7cff16a4c97e5f2effa52766608c1b1b362ac11035d9bb04ff4bb4255fa4d30b8ef5f4fc5114fe4317167cb9e4324fe39234590c0191df2535ae97c01783c6a28cfdd12fed142b169ec658808229104556ca2aad7835954ec8b8b0c2d5244ff9dd24c42e617d382643240b41a5753690a7c4ded16baedb3f252c52fdcb28fce21105bf7b8b0d8e027c73658f82ae3346863017f9822f97b10f45fff6f18175c76c8c173c8dac4d4cf48a3b140ddc033e744633c61db703dd72b8256ba3213dcef577810d2f99e75eee42054a47857cad908a1532b682e9eaae675bca63b75afb9c6890e88b976a25c39e2ed12b0c760456adaec9a8f4f51832268589d3400d99d4576913d8dd5d4d0bfdaab8a2d569d92e8ffb3c0435d6f314cc46b64af6312acef14b89922874f6f4210cb82666718c8f524265cc3e953402bd664b814dcc814a5328799c7afe9092b872452cd4a935155cf5d35c161a1bb5f2b2736c6371e4c63e904386c5eb6e1f050d1422445a60aea598098182c5ebc77d44f5a7062294e7ba11879ca2db3fc5a37f3606d64143e3325193066aa9161a36fef9e84f81c80acb7a45da0f0abfa5eb720e74d2462d31e80c7b2a1083ee30089a10165deaa3c799ffaec027462a15262bbc8e3d5cd8a9bf3c1aa3af06dda1e5e07ee6241c0c5758122a88bfbe715c54d2a18275d68851d7cddf04263465e75b586e09e3f48b499abeee0070b45aea35bbca25c51e3d6cae45aaa8b97066eb5fcd0bed9dd85fd3aa5981b47bc2497464a8c0c640e574d06e8a0505e7ef9ad0e9e97fc6ee00c4af5161f76745888a1a33a22caec1ca715482b50293587f816c1a04c245afa010ec8c6962319e70cf1a7cbddec2f2fae9338dcd40db67271d71d0f8c92dd75109fa3e566c388d23340b21fd34cff78e53f4531791502c9760baa9fc787860295d6f01b15ceeadbb95ff215b86a9abdcd9cb43d42587a20af757455025efbb6ec70fb7649b449e5e8babbe1a3b275fd4789a0aa740ac9ce206f783bc505ec48df1fc78fb315f440245f204429517588617cf909ec797e1de0b550054f398f9b24d1f1b18fd6ff0dffc466245bbf43432a6d483e18ad0494d49b325c040a157d462a24ab084d04d5552d0ea79ecaa1efd37ab4ea830d516107611d7f9b12a856401264cae0ddcb39c805c9a05a2ac1cdf83955baa8f4ed94a6987100a51e9b735cdfc84d0d4b7d7fe0f9b96c5e15008d38d402d65e255a79f371e7e1338a5529f92956e18e5a05c021d572e9c4d4311599e01b827ec9292f6ff995fc4cfcc079da1bdd39e56d62e9718ea13e37bea3ba6f75c30681433e80cfb2ac5ca02c1cd868a0e624387ae55c898fe26485fb12414c6af6f7e65d12455a91961e62587b9dd1f6b0e2b564722f6559818a718f7b59e505505cb03efa8ab818bfcd8e403058ab830df97d0ef93d80f281a57bd3016fa5240c4da553386dc2434c7cb4ecc7c65086fd3d598114a66239ce42a3dbaaeb2e8d2d382484034dc6ff190af88a112fe4809a1d21ffe7e1520c18162f893c89132f0e8d7d6c99630d633bc40532b428fef5a540f8dc0655b693452ad25879215a1570fa96d335cacd79d00bba6988173777a34f972d9ccf91b56003cb4674641a7b0df55e5f44fc6f8d43f21e13a90af9a22b4d959113a13f58e1400c6e7a046e2ebaa7c2c48ec3b3a26d8b93f0f8e9321c23f14161b7463141893ad2c83f7414791430f5f37c1c19714c3b49c46b0687b3f0c025e05feea6fffcdd5f7ab350b4f3f4195e7b1a1060e3734e045c451afbbf9ee2f740b6a9a147dcc1d0e2261423f1a5f2e3eb0fde5611b8801e8931a79d8ba8e6f52f4b97243737bf26d0575d4f5dc9c111d2a5935a81d4d591d4bd3784f5fe57c21f5babb5c56a3df152c4059b51efc96e8b30063c99cb293a02dd1c2e0169c1052aa064854083b187e8e35d9bf0807a9f142bf2dcfc264659c145e40648f52643f62d4586b00510541b340bcf6a29400114e40f2674aa6c4322cdec52c2d23604d26f82ea4faad96be23841f8d7799ae2bf92566e3045fc484be81a7997f1a7c2f2d9a61c2f53fa8f02f490ae2c06752d6e5ff55859fcbf975bbbfdddf63f0f662c551aedfc6a92ff4fcc3da9eaf381aa8db4e34fe115751e4361eb45ae990257dc038fade1a0a67feb922345e11fa6bed486c7fcb48faa7baf9f94385e3746d7e7eafad950f3405d9cda765e573662c4a1d0ce96038b493f4ef1ac4b8e66b2ec7c2aa6a23f9ba0bea799c16560a7d7dc10bc5ebc74671af6c9e007870a0138784826f204350133ad0eb46ff15b36d9f7be2b34e5ce058ec5b52fe91d3bc399614fd2454147870eea0c8953e14056da6135078480cae2c984491effaa19e43ab36c5ace19a62e6647dbeb7b6f8eb0edc2494af1c5e5cff09e5af58d79d10c22893a9680d7873ba1e221de5fc720bd1c7020bba97601511d2934b76e0eefa30601b3308dc84df55f3f2ecaeba454ddd0ac22699ba8b6591112e07f272aa6374cc3a14fc674df43f7056f9d0e840c51dab508593346669e1dd2c65091d33054e9bcd64c725d3ec993b4004e35bd35e21bf67c972295e33b55c8a579de55223d5adf16be63906b9ce05a5ff8a31b080661e3174a60fb9059331bea6d5c34a30b585f956ae9ad398f4bfe9198d75ea98901002c4f9bab21ea65fb0848e8240f62f3027a1d17fa59197f9b4d42f2ad8cc2a2a488f019bc2c948a7cca9512e7cf5e89a0366cc38b5c35184ce4debd10a4f8dffd1c2e7accb7281a745bca1dc32d17e2534673d593dd6e5b243f7ed1d7bce9a4d0d72d1281167346678c2d02cbafa16250a81f4475f40bf4458b46d2a9456248ce9882125a3649a8833c8dad735b9947044e8693bd6e7f6d40f18b13097dc9f52bc20008f924d59ca162c59d1d3f6785a0a6ee12d04f8f60fcfb09e67b2a2a7c63ffada762a027818821cc8b1a476d7f919f3692993527154f0a06b368927807a10b62acb961b0587b3042bfd12aa922484f0b3091396bb978c7102c128d27c0324a028919a16e27cfbd90a8a002450014b6cd8b4982c97098d57d5ef825fe2386aefe897e5f25496a21b449163e23d046bd4b3741f6eb4d7e485d50e29dbeef99f688d05dfdaf73a3bbefa4ce6b85ce559bcd95464b57273c34e254c7816b10ff55c2dac58c929e52c32b6867d7da1d6ade58608fa32e54ee33c91544e7c1f88d70d4abf092c0b1318e770490ed261d5fc49a7114f81ce0a6d249832d045cda632c339d6d7cbbd042fa2c21a014eb8037d98c3dea1d37b4b4faba52f8bd2e3689d57e167dd2928076f9bcea3325fc4788df77dc21b37ce113b4df0bf24a12378aa6d86bf666a45e845c4648ad711510eb82b4c485fa675c116ac6b7acfe7b6fee51c912068be5f4f5dd159c4445bdf4864744daf23f659f5af05feac6a6339945de867dc23c8807a5e63fded44d853a9685e968597a7d17add500fccd94dc4de8ae5f24b467723f616baf5f621ddfae6f5eac0a10ce3b4bfac2860e5cf1eb3ef03a8fafe56632294bb7faf8b116b5dc437cfcbc3bb8ceabced6e6cfc5768fc27f8ff06fe734f8fea24bacbf11308fedf969bdfb9af4445c383ed792a9cd1467dac6271b1e7ff78b92cddaafc38d1b580b1ee3a19d6fc3862ef60a5dfddb9d2103681b1dfbd95beba73b4cb651946feeda910964164b9842c4df64775bd8e9d26a8f3305256c610ccf365ef7b3906c9d6ba4e401d8725084a0e8b441038f191208c4d0c2ef918b12f30475f1eb21b14379195de47ec0d947af3909915fed6feea4f6d8dfcac393365cb0d4b3f1e74a9865c6b6fc3e2a40616b623f61d7afcfdce1e57504c735f0da09ea119f727c0b7d394d0c33b30ef2b561217fe95c38477154ec6f8cce783c2b4f4dfeb2e85c2f91c3b5441c007876a584763e7ca72c6377613830629bf529890f62815bc47aceb6b1bdcc0f3f480a156ec5c969bc8d185e0006c814205864057229c439c598fcbe66f42de77d6548431f675b9d4a7d6d6d73ee6af3ac651ec3fb743d037e9f3b01376dc93e7eccb430f9fad5996fa9fae2f36517dd1575b22547eb977e56e7c95d85c9e3bf490f8f9bee494deda4e2e39ac2b496e3ff58c4b6a4e5cd7eabc4999893d18f7f3274c42dee30cf4d2fbaa8550a8569ea4b8b9d6b49b901687a0254e02bd07ce232c2ef896ab8ae54bb85c7ec813fbe70a3bc74f8f0915fdc7e10b127e2fbe971df8bdf1e70d5ccca4158f9adfab5856771181e1a73d4ebf452ca9827f32c6bf2770fd30fe104a21ee8d0d43c9f7bb22058ed357b823cbcc1a08e0e2fc56d344398638a11fd6f25853032f9fe1a1fd7a574ee9e7fc0948b7f7364ef4ef3564a00b97e0e957284fbfe2f5e3be2a5ccfa4150e963540053d2470ec5878f151c6b7639ae19838ef4c51e1d4077c3059ef84d1201bd231e383e9b087c7b945c598c66a302d5954703a35fe7507d3218bf5c7c24e9cd07f471b84148e1b4cf713d0878a332b0929f0dabfa27a497112fe5416bd19fb5a117a1ae37f446b1ac970925b0d5e9e1a30e3191badf327efbcacb69dfb59e085b9786160fc3150432656743fc357192154fd372bf7838981ff7217d20074acd9400c57743b2154647ac285afa905dadf6e260cdff8409f39214475f05c2ed5e7a3cd0e0917f9ce4cb2754027b717b9c33942e39a1cc0d42e9c2eae088db24dd2d6dbd57a20918670a1dfba3d6b9b5e2332c9b5b0a95c2e71b16b5e7741c3860232fa68545c09350e16f7241674be9c2c47f42821bebf8c9c8f0c614bfe4ab1c61dde855058ee745633920a6ebb5dd59bba5abfe5c5503c7e0b8030d8cd5bad764f4128dbc003bf5d59a4f187c2669ceb5b6fc0872b8f92df86405ed01151525ef2a55c54e8dbb815534e3376996099e9caf553ea733de759bd16ff197824ce723f87938c2dd6c128ef95de091fd34b2e7722f02bc15b58f4471a8d86e5a918f9ed1d64c69eba5cd803f10b2f37e6ccf85d0c82e258fc89d30351785a3a054f4bc634f7ae0e43f7d09655542c37bf22f4fafeb28d4d65cf3296251879c9f6d83ebdbfd2930d9542f99b0777ea2003532a28b5fb4343f9329f7b43397043c99391b7929759b536b33e145b6909f821af3316b9548e125955e34ae6a78d51bedcd5d4c360b829faa3cbf69617d95c9a2da9e7e0245b3fb33d2539601401ebc568ca15233a888cf18be0978d140bb25a11bab3197b7ca8a239052624847e34113a95890f4a3988e779499524ab7705961fcd46952463f304137a0cbfa570a7577e051e7177eea747699d9a383876d63d9cdbbdfeb166beaa5df354c08bd03284beffd1a2565ce9cfc5d7ac4c47186a2c65bf4a0ca6a656e77cb974c69e4efd7bb96c3a462101a78820b0a3dc88295c0599713a0267236b622b2f40201d379281e5b2d9146d48a03103464baf58e2b446e118622d8036aca4b126ae0ab57b9db8c6262e4be481f3bd5c16766cb8aa7190dfc54455abb2aa5f4088af1a208d6640c18677fa01a057eba94d289a07f397962dccc11f31d46f7d530d7df9e2cac070710bcfb00deeba9db15982ff50847e82a79f14a187f024857f0df62113820ff5e7c2441daaddec35f4c34f56e562e5889dcf193bd31be42dfc9636c8bbac10567b1a825f8a641b14ef4dc62e36dde45b6a453b847ecfd86e8251cc932922f4db1d051ea915ed12fa9b29309ea6a9b4c7c1873b4afdd394fad5949269264688d09fee28b1051dcb3d90ca7634565cb2b50bd9df143e2763bcb5c55fe5e1bb37089f572baabb20afd91f313c2d16c99960dfa2e2654fb0df4aafdf1235611fbc2448f8d52428f6133c9cf2712a39e3e6251123a6f2c7ede994ed64eeed03bf6602bec5d14201039a9507d2ac5a9d96f5123c6f6e83ceb01c4f99879a2883caf5fe617fc5e63913e765837c88738065ff3767f512828e3de977ad071245f4b2f9caba6b9ab529844e293a57dc0f3b34621d70f7702870fa4811d28bc17ff7206ab5860c9c4ac7346eb1e2ea95995ea7b379149783ca17b6965b5dba4185b24353138140e52efa12c6c1f24ca3e181d4cd269e0f2bd398882355c5817ccdd742afc2112b3a2430dfea122a4b2b4253c60da5afc0cdabf731cd978b83ba8b247d916049c2811c3ad510e2fa36aab151a819bcd084b7b73554ff8f1a55c63ad9e1a03bdcb0c306c2786a072724c3150907c3aadf2edf6e15ac53556ee5cdad43c66f0aa7c04dd07bb070090bc9dd3c79b5ca473c4ee56c51e784727d226456e341c23bc0b7657ef6e39c84b0cd2c542414dbcfcc6b26d49b6bf6ce6c14c923c559dd5d72226b3532cf2538e834556752167bb9c1cb4e384179e426d7c449a880f0cd9eee7bc96f142fb92d498b063e27671375772bbb7fab95113f4d3311732623f33a8eb2a95ab0df4baf6f399fb37fbb242e596a9fa7d1354bcc73321e73c97555f3b89cf0e69a4d2a498055472651a6f30dfe43362b734b133d41d3f820456249bf1b022223af3afd4e08486e6090a36ea03c8f3fd84a47b723b7ea1ab3adadb7f56d924cabb0e576ad67000011259ca141b3034c13afaaffac96bc8a71329db21a8eca263cefa0a68f458db73ae1d4e1a8b51ee950c9d2f568886ba12134f6c0c2585d98c846826d89d769bf13a62d61e21e195ea17c9df6533db592e42190528d720584407aa73ff4803dc907426379e5c5c273cdfbc35fa73e2c056b4ed0df55f8a5ac9e09e5a691da8fe6f5f3fe4662abc948bba5ecb047ee2bf2b55264ae266b50e9d08e8dd1d0354633d4ab4514b5282ed875ecbd55ba719fa5cad762b65cf96a9feeabc259ecb93d515498d4f604340df6dd10d24b7694b947b34d8fcdbb4c67875122173f4c1f401c8f8236480d6d2007fa7c1a327d1ce5970cd3095b7fed69e431a37e950533aa546eafd69972b5645a943c9369367f73cd7e83954b44a29268fab055b31869ab9bcf732214970b0e45d9695c4d7a73cd6ed61201ffeedae40b2e15e359f1f2e69a29f79a9e73bd173e98bcd6870a3b87cfe7fcfacd35fb35b6cf0b265db29e92145e66d19cfd14dba70f3ad306e66d89b5a81159d5f52a58454218001793cc485bc4cad6fe154cf4fe0bf54bea473d73f5ab78c26b41649e96a90e9bf550a6732ed575fd6682b0b77bd2c44337c5f82c4d6e388b23f326cf384bb2fc19962cb6ef6a928ed847efe560ccde9bd7e42a11ec2b3c0b7ea6299c082a146ab22dcfeafaef6e58a5980685930ec31bb7845b3a4b148b32f7f866c3e880d51c4518d8c4767ca9a60dea9a8ff063dd00e491232e2b9596dc74f91e5e6646abd073ff311886033524741661470a0107c61920eaefc269676b646b5bbde0926d67ee715b9e2d5816b9d7dd0b2eafd9a7fcf3513ae3ec105ee791849dbb88bc3783c4a645126cccdf610fcc93f89c65997b7c73cd16e6c5c1ca5fa5d783f19d04729def1c2be43277dfb94ebe8cdda3be9b9ef86f6b33fd50e3b7c2f094afbcfa0046ffc31ac1ded4ab4db11de8aa8cc419679fb3fcd9ccef5b93c0230dd39179fe8bc7ea41c7bd854c7de21b08907c965ed4df058c56449d01572e5d02673e83a11fdfd198b2db464ae1d662eb3309c75452701b62f521624253e71520bfbcde9860a8160949bea80ef00755454db8527b622b7b62dbbac11b37db87595f44b3f9941f697cb451da82453f27080b8e826127d8193f91e10ed877d85bd382af53e11510e6e17e2e15b4456ac0ca4309b24e0742f66598d0f53aa9b4b54eb2f1785a878f6ccf77647895828209649f26f1fa4cdc7f7fb89790ee63e39e4192d0c3631d3b8b459c2e433cd33c42577efa2f5238afff1dbb173efa2292efb588d62323f6205ebf578729b6099f578b968c80a18af934d9bcb4f7df2614036b74ec467c188ad7af5f7748df93b7ad3b36509e8a78f323c0721034b162c6177810ec08b0c20267dea083a3718c759da1ac81bbe9bee4d1e8ef6d2d7ff93cb65abd0f74f0f7943288fed2f195128280831dbaefee2575a7af8a92e983184585d133404c97165754159d6fdcd33584e6e62b76a9c6bf75c1beef7aed5de6f3b6fea3ab71d7bf1debaafe835abcf21bee7be076ce9c641a54949a6e421dcd0e4d7fc44ac836e08c4b2443d6b2a43010b109a1a4e99df623fa5a6d34656e8b22d6062554b4c8e7406f2233f619b08c4a0d23fbafc8bc995bda34f3dee046e4de4bc8bba02bad0120e67411131bd375c087a148701edcd0b69d1e4ea3441c803a2d7b639a9591588c5339db30b5503d4d995c2e6f8cceeb7664f517edb9fcd4396616390fb9ead94ab0b42fc1d369120e86a1f5ee7a19e184f473e77661eed104a7fd0f2afc0d488ceac522870d414d4a7eb3c84424afeb6608ecff2c9321139a883c8af3e737d7ecb8788313f2cabddf8bfd0f7dec9f3d10ef1fd6e17d5d78ed78f668848d66dd6b35271e8eca449550a89209cba50d026bf3df2473761ee7cfd0a58fe67d3eaab2796ba90e1b0df65b8addb5c094fc2f101f7ed58e0031fe64d83c2b5eee652380368cc746b84cd424cd147b0f03bd4ce568c12ea1c24bb909392d22fc2db59a8a3ae7552ad9d7d83ebdb9667bee19c6bd0d6f7a723fb927bb0beb395d29e6cbe5604815fc3fb263cd4bddc1232b97dc4ff392d08f43689d0b2513ee508d7dcb510dbf525c8cac3ccfbc3869ded70ccf259d4ba23f45a3117b032522a5f86caed889910e44333edd89169c4decfb3c51d15493c02393c09329fb6e1ea7d16c9d6b9d73ee8c89a091fc27843acf33826117e282e9eba8083b842afb5131170783806ab1d21fbf4a6c4242e4e430f841aa831360418cbc4c9b38818657b1ac66ddbc8b5d017a87ef96a2ae7bea79402d5636749cde8501d472b96df4598c2a8593666452b28b8c16c28bbbabe1d69009bc7b43a9e4221971f6cd82d868517ba7754a4696d2b4f740cf9d5941b91b0570a1894f5928506ce57a82e43598a6e4be1652c29882aef0ef6c6e80791147f3dabb4a411cef147ad5855eda25a797f9addad4f2999fed5ed5c18557d7d7babade738afefcf3a700e5f5015fe48ed3b7ff930adf16a172ab047f42a85c63bd2762c4bec4ee714f8cf815bbc8df3ff00de754ec3b6cfa4d16957d8c168abd89fd5753e9ac94f6b08a3fc89c6b9d4af69b6153a772378a27ec7becbd196af89b4bdabbc7e3310fbf4bdfe154669bd125d709eb9ae2df36143fb8dcd0320f82dfd6271f0adcd1200f820f6ba5ceb862ff02303d536c621f381bc1d324aaf263ab8c6dab5afd879dda49a411fa1fa6b0be929d19c6f3880b95a86b7665f9d2f1341b5578bde65ce6d6c7050fe7d67db50882a6ecc31e0c3bbd8a6cca75c78aa5be0b9cb604b82233a62fe2154bf5ee04bf700763b834bedeea86cd661a049983fad75b5dcb8a875c0fbf07fd4d7769b603f6b04cc467e0956d64d87cb64c05882b255c5c29a1d345558e572cfa6b88fe06bb96bffa6e1e5779aca2fc6032b20226cc022db69d1e04bb885c8abe34ccfc37e3a8975dfb691f9373bd8695144b759cdaf437c6a3710d1a6b768c877f88e6ba6676f57d65cb9b866f6c756f3585b86b5f76a75c77bceee8b49541d56d918ef8f1f5bc308ab4c567735526e7d7f4adcd8defcc54e67c6ed7599dd51af72ce6faa4285f6b9ccb6ed7400e60be21155c7dd8ef70c916bcc8ba486ec0d2089cfcba64d0f2f7b999b9810c27c918fbce6a0a2342373c3715dfb3685abfff538f7ab7196b0f5ab373f006674d224cc09b8dbe3a2465bb8ed4e32a379bd23524652ad9815de977894854ddb95a674afa4e146bfcce966097b6a63da1f81997ecc4be9bb8f36cc7beee4773769c3fab780381642dab13d3f5c324a76b6ca9bbd8eb9b6788faf5e5bb75f129fa5407e257062a7993b5789e532517bc0ad23f01b4141c8a1447bebbfe7cae3e251b259b8ce54d64d33b7279d9f4b2b02b3b951629ec975e017f1cd9249f6f706ed32c05f4d1be1e4563ee96af4e5a6de7e335dbdab316c4b61c57ecbdab03b62efbea5ec1fa93edd9578d244606fb6ddba42f62c4c789e0a37a791c63896de51b8fcecbba08556464ad5963ee9538e277a12f8b0b2353e2af34b9873c4128fc22bc40091464bca7d1295c966680f0a79ace3a88dde3de7fe52094ebae3b9df74eb2c975a7b1cbacb65b28b08956d7442949c618a2951646ce0d3f76ab395743f0043a15d609280ccf9944b0eb2c7f7f97c88562672641b14f9179e0ecd00873a3abfb5832ef34617595d17f491226568c7cf510b6cc3b59b065fcd2f5c763632ca01d9267dad4c65878ec1e933ba9adb16e14d334ef47b2b1858da3284a2f54766a76cebbccbdbf8ba60bcebee4ef558684abff76955761f7e75a1684f22cc732e3eb19ec5136cba62a994fafd9072357df74c3f54734d358d76ac498c188742715e36952d7d9c657d53ed1b008b1b030bc8d9409826b0ba773b6679a4f2fd9bf8c18b722b3f0aea6f64a8a15337de87f04236ea03c9a6ab994af3d57ef76bf61b525c9a3c76e175c27f82f81537d66b478eb3a01fddefc049947a35df1e3cd3b623408e42bd5876ad596f464bfd1e84845725d96f06315e7d582ef5453b15c6844bff10035b22460bdb04e082104584b11fa4158f3307713de062368aa964b8b12642446e93a235ad37da5e81b778abe1cd7c80ff2e37823392b295cffcae1e2c2296709c4a3815a8c180573d6a18a754988b9b561b71f8c414a8784f65240287fad1c7ae63d0ecdc9951ec172c9ffa7bb5caaffe93a75aa5f45a182fc4d60de4aff89d5166f5d298cba7c0bb5304e5b08913c8e02d178391769ef7aa49fe4a36ca360d5301194084782a66b8adaaf9ee4d8daa18ea7846a4cfd97f42bbf4b32655a103fdcc2e7bc85398f3642d4dd12f283145b1e525e9786ae3b34d4a9822d00be98dccecdbbda57a1ca2114427a72f0b264aa5e64d34d73b0211291b1125f2e71caba005b95a8447eb42617a168d88b2d104b96d298090d8f97118e493f76ce88c3b830f486bea59918b15f8d364726f6c44e2a14bfd2009aab216c96d25fcaf0c493d297d5156a6e5e8dce061717068bd45e9bf2d5ccaf4e7d73670afd3b92e98088ce39d006a7e6784a677703b714e1c7f487386446566f7858b567d07b6f7b799937abfa7c2d6bf4540b56a8b8cdceadc1fcda0dcff6027cf5bd1210e28843248e7cdee5ca517b5e8b057fee8eb1e5a458a5cc4387b8a9fcda488b7007c5b9eec65f74650b4217c100853f405119a03ed500366eb2fcbd9ebb9cdf03beaf8583f6b8c9798f1c179a164c64d1cad9cb8e9bbcc84e958c62c57e32cd67b3fb88b90b4b2a861d5bc1ec2194dc854f37daa28acfe6d33a299c01162fc711572a11678b5edd6628b8ee1f227cbb8238a43b89355ca2318d5c7a3b99cd53a91654e64f3b09a119939989497b2670443342a7ac43c74c19ddd879aa7bb05cfecee99ca1939379a3c51a3f233a614a61ac2c035d7f27ed459ac998b7d012b5c6fe0b78bd38e6fd2f3cac64d3155c44d3cc36e17dfb09517486081d31f4e8d13f1a26fdcbe78f0cb530cadf5002a15fda794288a6e9285a4c8ab9832f8b016a355aad1dd54243445ae84f817a05177f52f21a40254da89e885c9c090e101242e72de6a0694ab382f6f937a72782500197b16647e7433f375a7f8a93138e514bb410d16f3f2342a320c0719ea7f7a740ada8857a3aab9d59e34c21af02e39313d5600d8c5ab2850869300677d046bff1f3cf8db07172a2f2caa72ccb411c9c34e48d00345c30d5be8864129d4e79ef62b9c4738620a00f4e4fff228d5bdd99b99e9bd59f02113a6738eecf0bfb7d20f0c27931ec1b1b79254fd885841e94cd192f18b5f0c57289d2d3bff4ccdb76f085be41ebc4c672091d68b0c6ed8ae8ce921602d3f013451b7a5a58e3e79f510ba77da4df7983354e2cd819eb781c9b2fba0ab8171516be7091effd295c671a7399088549e3b66127fce4e42f730a171445e3e79f4943cf41884c77e62de4181f27f33fc5ca4ce78c9d6435defafec57146477909d49a933c04d082ac8c23590bb06c4e0f223c731ca3596eca681044325bd3dc4ec6185bd564f2aabb5cf2d77b559fcd8754324d81d243d2733e29f8163bf4dc71cc0496fa206ab5c42bde23ca67a85be512cb06fc6cd5591c33e8ad7db7bcbc77ee55dff7eb50678d0f09db80655b7db135dcc371f27c466dedd13de239a7b2e5cd6df6bbad0edc22dcd521df9d02149149ed65c557b573aa5845cca0aa0f28a7149b6bdb55e3721995bb54ff16fa6dbfa658d21bbd2629a1bbe6b7d525263a17424507ebee960fefe3a71fe963a96f1dd32be8747dcfeaafa70fefdbf67fdcb79ba2676bfdca44bcc99af1884a766c1d8729e26e7168c1e7918c542af393c52584694f306490abf9a8af2cb9cb78412543e92c592c925498ef7a046d974442b93297847c463c121154325de06a33c638f7270537ced72c2ecf45c6c4d64781254c5a56d87d1bffb00b16f57f4d71443bfaa072d312bae34ba7ea72a9ef157ad1923a4d1f51598bb90bdf5646e8c708a7c484a2b21564a4bde0918c27f0015cd9d0315b980b52fb6c9a9e4653b8272985538bede8f708bfe16d7ec5635daaa5cf7742d38237ca3abd294b4d8631e9412cec399b1a09626fc11679efe77063cfc23929025117f2c84f294e09cd489365a66f133d9a82a2c529e94dc00926f62b9d141ae68b96b43a540f513338a9530d38e0f46bcec0c944f23de37b7506cdadd63437d8830a5bca2a5a5904c576b3fcddb0540f8c1e462161e755f1bae1bcc656c767edf65c58fefc264b194a3117e65e48520a4623e0314319ef1298d05b30b10f9bdd15e8107dddfd7cb477f089a1a7edeef376b78be8078507e83411234491b5fc47148111affb856e238aac9d48f1643e0c4b66dc7339e0c392f9ee5cae88696624d339a24845e7bc544a6f793fb8ea807b4e3f04b92d4c0a8d7eb2c8cdfef3e822c666928f4e4e82a0a940f571268d7f68137bc3c561735bb054a6af5f75b776d24ca8931306bee02b8924d4091709bf2c2288c0751a321f12aabb1ef216d6d946893c3979d5e92333479a085a112a57b43cce96fdee8dd7d342d4fdb6e60d980cf8102b52bcafdcac9a61208a66919b5d500f5e9b62835555ab4ba59ed08fcbe513c6446fe3ccf392bf95ca0442003a6b5657cc874b09b7f51de8899d13b13201eb8a0967e5d7e55252950f68c2230d8d1a1b6c188301a11656fefc6e1e486946076288bbc4396519748679bbd69e11e630996e6a1a80189a46a16dfda14d97616e0d464dcf7477fcead6dd4d94eb343562108d94ca814e520d79e597e204b455705d595041da543e0743c80a8cac52058505e6068746b59e94d6b7ed2c9a97ac101c8f22f79a44aad3b5664e553b7063496534b54bc5d72d66c8ada5e65dc09549b2287ce397510fe6af3bcba57ad5216e2c8284e0bb5530511801e02d4e42c3001760300f31d955a16ee9a404ba60619c8fb714094d35586de922a2dafd8d76069b962f47174652e0904ba5d674cd058c5f1b74e890ace86f12fbe56a37d0a3ffc5fdd0ccd952c3ce7216cd9766d1c8127af2d32373562b42a5c9ae6174a9f101f1bea56c2e07b2ef7081c1178c957042a886346672b97cf4bfbaadbc702fd517787fd3aacd7ea68ac8551193fd4177e87984ca982a07a2a20b160d3a437dd15f2ec1d2938e6b506a6a2f9c73097ea2f8907aeeef6510ccfb6ad019866ad59b0681f0dd67e6db651104dd664e036a8a904d59b36bc0745e71924527acd9dc104d8b8e581c04cd39bd605910348d503b0e8229b955eca2af427f5bda7b751efd8016da13b37b436c8d6b436ccde83ca7ea464170d12f855688488867ac889f352674d497fd9987c1c3fc259c198c00f87c0ed486ee07a2683149c69a8859a4127e401909519409f365b8162246b154e985b120abeb59ead24b5b2487454e3410ce518874079103da793a5f5633f6e69b0f8a8ad40458d09a9829871fb3b720dfb15871249b699be9ab403f0d071099bf72f4d52053af1cf8eb33e5e0207ac886ce83e7177a12e074bf85500f4b3990c3e5d2fcb2c13077b0a67384c6df9fa60f7463520e26094ee81981f2433630b990d9801299dcc96a583920cbaae56e263da8ad7306d7e0f73a8383c8bc40c9b9dd042f90ecd332d5a31d3278c49157b9976aaaf7a94e9bc74b822c96e4f46ab12960ad5539fc8c31ac3719c918af75b0668a48af18ec56b73ac46607ee7098976841e24afc9315e16aab5d02205d5f9deab23860a6aa3cd7c25a4449a65e7568ca441138ac4393357686eff149e72efc3d1742c0848981d4e7426254086dac99a4adfb6b22cd182a2fe42d16f74e258fce7b79aa3d5cd456f9139c42a1323aa7bc1593ea475b8e43844eaab662e2ccaf6e41a41272cac52854ab15eed09456571a7aabf3d188256d2e463463d1564c174cf6a330deead2295b87313a665387e5e7ac4327ba7f195d0734c3d711cb65530641caf44130612c737c8777a9b5e92ced0f380b466c30ecf1504f7c2fdbda0a82f9ab49af58880bbd1033c6078b1653c35eab75f16a6cd7e19a4d0717437ac6ae73071df4945dc332d01b768667d0ab53c6de9319bbe9392e42f3c6043e65ec238953a11291f10637f3dde0abd568306fb5866c969f29468f2287c848b1b77139c938a25b276ffe8acde6a8d410a7b359524791db13cdc7ced5f89195aa04bf2a55e4d6ddc5f0b6463695d4bfa2521bd62167beab6c34f0d7ac52aeac3d7e3b4a050f3985af21ef276125fba05c5dab355c557a3f9f466283233c6a29e552d48c91ecb943621c034bdb8b63de811b773ec684aa7eeaa3082643c564ae63a76967ef6bee36af54845355e9720d8aacc748bd9ab0ee2ed069af7cabab5254463bc643aee0d65715f4f5fdd148f7e35a5a49ad81538910d704d27e5c853195feebe8e0139bafa1e583714d620d58bf4bd78ed1756c5069d430b84a499a8ca787aa4a7a1faa4d1766605aad30e9815ed99ea038adc9b9275679e0037013498c572e2cdbfc0aa4a82c252be2850cf35fa8c04f7f2154e06ee71931268ad54305650bde582899c40af5447b841545115a0f2bd9902bc796ba7d73707c7cb01fa2d354a97486a8793ff9b8fbeed8256e4db92649ed97cf7bbfbe2f3e49c37333d94d3efd7ce2aad5495bae6ef8727c70689395a67b6d75b61e78cb0b43625eda7c83e2e603948777f764bbadd2b9edb34eb32de844d3ca6a7de678be02023f7efc92e0fb663797024a8f8d2b99d1956c2fb83a74607330eedbd4b3526abda7eb931380b79393e5b2b614d614affe77cff2fe67ddf76f6feefa6694ad83a088b953fe62cfc454d679f8ce0333d58eb67c5dac36583215678ce5e94df75ceccdbeeb5d98b7580e5e937ae34c1f3a4e892b43acf562aea7f0ffdef8640e019644c44f9efb211f7dde55531961398f156a3296821f6ddf1142a10169800d27ed48d71daa3be12bfe21f8f2dc046dd8205ed0de92d64bb11b98a2b0a2a598bb69ad1b917c4c2684af4ef0ac288eafe71c8c54303acae65c36f8d55c7210ab3566d9423578a2265c364eb9518d486523ca1d42217df9c8d7c48dc5f839c5e072a9b881de7a8b1bde5ad2855eca4445a7531e363b344ec53839cba47dd7374b1504d6bdd45dd39fde3bfda22dc116c554f2667be7c3d1e1f6ceee065ce1f21d6fbfd9d09ccbb1fbe978f7735d9ea4c873f47eefddf106a8c9eb39dad93eaced4ee455b4a9cb599167fbf3e7836f80f5eb322eaa19bf1cd6659b56b3c1895197735ccdf9f6e0dba7ba8cf322e3dbdd8fbbc7b5e398149992c5077e7d9a4672b4334de2f3badca3fccc7e4153f69226acfb84c6acfb8c46ecf1739ab1278fe9823d794ea7ecc90b3a664f5ed2397baaaf524f9f798139aa76302672575673263e989a88f39e09dc25fa368b3b846ad4f45cdf074b54b7eb87710fe414a2fd28a6201ef479d7467b25cdd4de68c106432adbf19447f2d8242e2a3c043fb78b33d329c87da3b1ed67eaf157794819de6ae5e2a7011ff62e13314a2f4bed614156951ead5634479fc9e2533ae2bbe282603497e928b38863b9042f14c92852fc50a6f305365ee81684cac2257f6cc2e4a88a5425155ca86fc974fa99c73cb9301594e6f501edbb7b98d7054e569bdbfa2266facabd76e72b4d3eaed4b0e0ca7eaad594b0f359e4c27ec02873352856cf8652aa81b80deb52ee4b69aca5d95a51b5c269fb30937cc70df93e94dacc41971b404399b331f30e9d9393cfbbdb3bc7276f77bf1e1f1c7c3c3af9f5e3c19bed8f27ef0f0e3e9c9cd4d303779769c7131e9fbfddd9254a5edf3e30af5ed9d8c6478183289df23687630f9c7813ea13bcdd672f2aa3f709e20dcab30a4c551d696b66c279e4346e8fcc99272817d98ccb0da79e7f22ae6cd42c41f97de8c8a19b172f34be590b04bae0d3711014ffdbd68689d933dba4d284c976b45ca6cbe5bb5cc3d083454430e9a976c4921fa27640ed33a5098d4dfc19a389c307c9d004788bccf5d52ed0229fd18b341935045e905504811cfb0a67243c94e92c59f0b6e48b747a01da326ac28d62572d79bb1eaddadc1e3d8ebdc704b2d517ecf69426b91fc55c76e207f4304102710c438c684691e0570a519fdaced6f200050699220c03ed00e7feef9139debcaf939826bc844f5afade8dbb3df56a2d34812ad07f11664015310a640302c7d8063c7e41b438b8140efa6db0552a4dfc3d390436ae1f7f6f43388dbf77a5bbabb447088deea1804eefa17be20de44e3149ecf645884ea3f87c318f628ee8cb10a9e814d1ee931071012a208f3b218aa3f9629a6a5ae7f1f310f1458ce893c721b2859e3c09d13c3ae3d91cd1274fcdf328bd14883ef945573342f4c9b3104dd299cefcdcf11e9ebc0811147999b3149e7642644a3efd2544895820faf45988467c8ae8d31721ea20faf46588ba88fed209d163447fe986e809a2bf3c0ed153447f7912a25f10fde569889e21facb2f217a8ee82fcf42f402d15f9e87e825a2cf7e09f5b43f7b16ead97bf63cd493f4ec45a8e7fad9cb1071449f77423446f479374467883e7f1ca209a2cf9f842841f4f9d310fd85e8f35f42748ee8f367219a22fafc798866883e7f112281e8f397214a117dd109d11cd117dd107d47f4c5e31049445f3c09d102d1174f43a4107df14b8832445f3c0bd105a22f9e87e812d1172f427485e88b9721ba46f46527443788763bcf42f44ffdfb3c442dfdfb32445b8876bb9d10b5f56f37448f10edeaba7afaf7798898fe7d1122aa7f6dfe9736ff4b9bffe5e310fdff117ddc7d19a201a28ff562fff9a77ee88668a87f1f87e867b4a229bbed3e0b9dc4b3abe74dc9a9ae3944d15421aa6b9c711521faf2897b7afcf8a97d5cd184dd46531576a92e173ea63a397c4aa1c2f0c58ac6ec369e8d5cc9389dcd2291bf1a6d3c0b79b344640b18ce2c1d85134cfa2697eb523ad7006fbb359feabc2d440df4e7507d9988bc6b11bb45ff07c144a02602f042ff3f04f085fe8100c07e02f842ff8300c0d0ff22803014200031f44f043086300220430401ac9e402f510bc162a05b04938c5608e6162d91996c142258b59fd1cf7ab2297a8560d5d06b04ab85fa48afd68a66acdbcb5eb1eee35eab951139e876bbad6cc8d018b532d8d319ebe80c2fedf797cfe0b3c866a895e5cad2d80f8358b9c4cfd251324eb85c6892a7780b02de3ee7d79078ceaf4d0cc37a163d7870d5d7711b9ca6d08c7cf4e7e2d11945a8a2176e3d90a216223df92acdc5090ebf672cb561559026c4328f416098033fbf8b92291f3554da00bbd6c639bf6ec4e9ec346da09f5bbcf5336aff291a95bfaf9ae02c722e1ad3343d6f4c9373de40f16cd4683534e420da3020df9a23da48650335d1cf2edc593cc886a021a11f8cffc4264b06d9b0af5af01b9aa44827619dd686baf4f1ae4b8482651515792b43c9e73d54f49c5f87429358350a1f30cd82f1f6e5248927b65be9400c7347e04d260762d8d7ff42b3fa104b606712c99d74c4b1a8067aec1972a25308b4a3a9fac0af8300c77a04d1146cabf44ef352f5ab4ed61bca4bd6af6089a587eda51b0d06ea8d338671aad58a6ef08957074605e09455bab86f97a7d7890ffbfa5fe8442c66e383db394d75f7f58a3bf4018a03c506999467bb09c607b5d709115d2467c05bcd9fdaf369a4c6a99c85868c2a47d45741f0683f8a97c9613a5a26879354f0657218150a457fe79e9fdc4325f87c8017c008b8fd14cd783818d2b7690c544e3840304af0d9be40437a30e732d22f6ff3e4708044a48f75e42c8cde7a45281a2592c72ab9e0fa65c1a726e2c211576848bfae950807793588223dafba0ae3ba0e021a946b2caa70dd18d223af8d705034a973bf4bf874140e50344d22dd1fdbf39caabba7bfce8b933f66dda7217d27a333fde5083c2717df4b7ddd13d3447097351cc0f876523182a1dfd3b62bf6f099ff91daf784995ebdfaefa66954bc199c91bf5a5753f9fba76c3acd5f764536cb5f3e260b578b9926002020c65df2582f4791ec56a732b76f5dbf8b4fc5820da906dad1f1f5dc0301ddb44d01101ad24fa9d03d2d271ec5133e8b4a135a9aa3d441bb2e56027f9d502a97d7184d23b9f675c417b14ce6761dea40c34cc0c30a8275e6388af91ab8e6f30933797f4d3edcbbbd5606d8796616ebfeba1eb057f75cc77f7882bca17d1175f37f7f05caaea186d1ffa0780ec1398cffe00ac35cfec832d70f3fdf0c3fb6bad3348e1c123460bf7ba5b8583c04ea0ba0f6cbdc0dc535391f00b62500b9bbb13a88b8af441504eecb9faf7965ed1eda33b8f2acd6a47d159685637b3f0e0243233499c7cf783cecfb2f614a6366b2d1053336afd62f20e6844ed9800fe9986d75e99c0d8674e2f28edcc3857b98e9efd7fadf19e3bd510add3a65add698b142bbeb869d0681eed1dcb3593b058eea88751863d7b9a13b541bce06b3dcd109b44f2fd8757b9ece31a146c16a41266c624daf08685fe557875d76bba2078e2574ceaf177842e825ebf42e5f1db80e5cba6bc1093b185c0e7bbb8393219b0c4e86ab09db5db9aa765887eeb34e6fff55def37d57f088cd07fbc34167488fcd5377d85b04013eda623b842e8c24923176dcc713eb5f101fd12ea13bad16092783a3213b5eadc62c36766774ca62e82c9db3b8cd47895ad0057c8475a1318bdb73c92f40d7d1ccdc457fd11f87d3c17868e942eb1e9be109bbe85f0c46c3f08c2c97e61b636c926ba4f52e82606678ed232354beb22b0aaa76658898101b54553f552f4d684f00cfbdb17d74dcf8948e78d8402d2b9990ed88e83240209eb30c2b3a699f2762444f4179eedc58785eb173a72233a1237a4167f4daa8c910a3a6a81bef32c6ae4c3f4ec9edccc042cf8da7b0e2cb81ff2a08f0dc0c7130a25743429ba7f940ae484d1d1376b55aadf2d9ba0a829b2028aa980c093deddb52218ed9ad5d9a70416105c3b1be7c2cc22985d50be754af5718afe894e1ea369b10d29f8462602664080eba8b1d771104d7a6e10b422fd884ac2ec10c221f5d9c0b50fc6d1504f88ccd07f362ef0cba4342cf561546ae29698930cc83a0f09359b8c4d4fd2ab3777df712dcea554b33a5a25ecc21cb56a529137dd99ef2e88287e06b9ccb729886a2644a728e3000bc557c00055b5d9c17c5938a3a4051496e9a9ad8eb68627b5d9739b78f8d57abfbb485ba3fac2d94832663cc8f41f199dbe89d763ba949b2684ca285f859354e39170d6bf8952cf8a8b1d55864732e3129e5d07b878f50a13bfe3799cab958f749c708761fbf784c68c2d658e08e11543a9b721baa8111d018970a433dd189f357540f8f56734383632edbc9c1b12a6728b7e144399b9a59547ccf402375976ff0c3eaa9cf78fec0b83e15098520e6b9ef5688d7993beb11af644fb45ac41ac0025b051cd808cacd21d5c89d2818afaf0f122b709a922028579a0e694a39591560796b514b18d39227e01a2da5f2da986c95a9a3ce9f6f98d264f12e95b3b7918aeaeaaa9b46973f084a4aaa2e7955eee1d7845f3eb466af5810782fed64a1abe9af276163cec6dba7b6947bf27be615d39d33705dd7a77544a9f31b671475f973a7b7a5fc66d9c3887a5e4bef9e814a056f23c5ef5a58fd7d7d45df25d33b4be9ef3570304d4fef2aa5bfd7b4650b8499994f1ecdeaf4e58cf7d40cf3f63c999b925f3e7f3c02df0087918c668b874246a55805f42a5fcd22476214c9d11b995e2eb8dc1517e11abac4b54b9033e6964bf49947b132de7c75673c9e9dd1c4201b308d5167d8f0716459672b6a9ddf870b0a012bc3924682e127fa9703300d27b7eb08540de4b00eb18abefec238389b038f7a20bc5c1592bd4e8d17bf9e7c9502677d51f8bd31e573bd8e1535e142c20dba040bac7cbf0129b9d5488d6d2024545f9ad8620a9c075025935a70f2d8bbfffbe7e29f8f80bfeb717cfff91324d51df0f5676049b5e905a13113f829a111136d6144fb023f2614a882e7faea040a50635df439a173fdfbf409a1934d1a5165a6b0718a562b292eeb47a9f642458a03d2375cad667745555bf2f1fb488ca65c2ed8ed69a6542a4ad3a4da26f1331f33ee3498a6ed0578cfb948cf39c1cae828b5b971d9fe998ff539a32b8f3329b9501ff8f5dbf4d20a67547b02edb944bfb145bba2e286ad840184e4709b31acc8289b2ad04f81af7a1b54dad2a7df82ab233d66ec8db9b32264bd63b69ebb87970a9b9d1a8da87c185fe60f1f447dafbae052209fe8760cc5ea7a0a53787f37bfcc4d27ef541a3be36a279dcd52f1061aae684059431267c1069553c1543b9a2667e2985f292a9982e8e63465aa3d8de419a7897e4a2192198d996acf1291cca2295d30d55ecca2e9944e996aabe8143ca3d0b157797b942ca2d3291f2d97ce8bfc6d3c8d160b100f4498e0acfde6cbf1f1c1278a3167b72b32c8dadb3bc77b5f7787a61a80f0b69b56abcc66ea8e2089f241d67ebb77b4fde6e3eedb211bc3fbbbbd8f1f874cc2f3c7edcfbfee0e596a5e0eb6dfee7dfa75c81278dddffbb4b7bffd71c862783ddadfd6e5167a563333291afa77748fb1d06989507982d715936c2da94c523e4c42dd2484639a0a009f70ec981c5e09fb8de640693e96b616b5a050f9f4654e251f87d6723edffd16fca85b9b70dcdfea86d38aba9ce462c4e5ce24998e24171bcc8e0cac28c6dbb1cd08b2c2244e85217e2d80248cb741ff624f7f89196f2b7ee57cd30c6410a4566dda0683c0f376446fcff975886c15881610e2a0e3e4e870efd3a7ddcf14dc998cdb51fb68ef8fdd1358da15a1d53ac7459d7c0c3d4154f714fc7ce066bed7928539b8d31187e01204c764b9bceb3bc4beac368716f34820dba2029da89a211ceffefb784563aaeeea6f3e75b6c3c98a0c6b95167b77c9e34685bcaef6fa77b17296911b0fa4b5ebd89d27d29d38c9c0578d59d4da3c1a704554b6237c0b8e595c92a7687b4abc9d67b75c1dda035c6b36840fdf9800a61f258bf934bad64bc49276d442ed37b671b5c213422ffe5f9a9ada2d37917c0cdb2d47b28e73cb8cf352412376c744f4364d7864e75aa6d387cc75446f7557c228c7eb391a2b708cf771ab1bc6ab1f5b856d114f52595a8b1fd705bc3d39399d661cfc34eec0883ff1cb3dc5676f24e801e51fb7cc7c6c097eb995283e43ab8a66e57a8499ae7561ec73960b6f725dd06a718c3874673f80b21d743445beb9431010e7ce6a8a1e27eb514096cb141c7167d36998b3846a7186bc47d32fbd07a724752ca592b2f18b27f7f3cb2e8ae8adc05496492454630c3a39085472cb0a1de0ebcf72d24c3c51c3424b49e8bdb450d8402dac964b84c8bd9a105513a63b2c7f8a2f9a70f5f5e90bfb2e4e4be64cff25bedc93279ee295a7048c1e1990892791dc56b8434ae0a18753b0ad34b5275a5dea47ed7a95f6448b75a96cb12e01576d10549d1b8eb7f53eb8ae3cb42682ead68aa0babe08aa3b0c11d2680d82f419f59b478800175c32b0aaaaa4c63aaf1eac4677fa49e9bb57bc5c46600a6dbef52513a12898e1d28a8c2483088871a420e077539663cea347c83a3d2c6420b2e49a7acae440165cf5de82a1b69eece97289daf913fc1a49c48235bbb976ec9875e89cb9f2bdf96bd6e9cdb7b69c6f4139980f7ba6be493fc192ce49686b9df4b149a0e3568b84e320c8dfb7b6c84a6f810c9891bdf1d6566f4c20caeb24192bac2b20bd6666bb25079de1722901e5a458ff82754a9e1b39aa405a678f8f0a7ef22208d023d4646cd45e64a70b25f156575f7e462da6b3d1d18a46ff9fb222b5fe313d568bf346aaf4a15b0a389607ce74618ff3b32219e3b2c8a7f0625e4e17c0dc35c0a1ebcfe157997090d86393144172a153a063ee14b06a5955aaef258711b6eee39b8c6d606d55f20b424a43f2384832f7f7e30cf631b0498a377011da34f1b79ac5e43438581c58998c7f9ac2a6f6130a86525ccc5096cf505c9da1d2fc0047ca4cd1ca8d6105ac9aa78f3d143abd0385f679881ea196277e18df99dbed902e09bd32f37210a03abd44230b3adbbd9a63f4bfa8a55a08fff9e7a3e59f7ff697ff58fe4410450922ce53134452f25a2bdcc87a8d4e367694174144fa8547d7ad729f470586e7ed79a426229a71a0448de356b8fa4da2c584a67a7d350e75430902d4075e6810e0b4c5501f5424bd691221eaa3960057e5e81f3aabb459ff0180e5659521fa076a4942d3a26b17d6e226b52e737a355cf93e4e6ace2a0e1da5822144a5fe97829f7ae3d515fd0391de56b7c9580ad136949bde141cffb8b70e4dad483bf10bf773840955d858c5ae5052a9222184deba590d1535731adaa9ea23140aaa2737b433a253e46a056e7f0de74f858540113be19c11b9dfae20e688ab5e1f1af90b4388d0c4ae61dfac937b2da61d8a9844bd7c2df742c22219d104d6bf6f56d0bc54aad0497a515be65117374988e6248272e40248106070a679334c427a4a5edf7a2318f1381df12f9ff7bc6139d3b788dc1a8a302a33fff7801c042ad1bde09f0f6de106fab95554d5fa1935e2349b8e1a22558d53de30ed8dda8de349b268240bd0ee9e5e37e2285bf051e3f4ba11894662d520e65cc65ca82d2ee2749488b3f6cf248c56c5cec00928c00b42d37ed166df1cb04542651ef3b1c7de0b4d8be1eb99cd3315e95eea725982027d7027c5969a5594a4f38cfa4e530092dbfc906c1e7522aca94ed20f151d7f23dc81c5a4966bed11a6d78547b46c3ab5f7abc1d0310c8dcb80d95c1544801fd951f97434f415e4b4ba2a4dea83d9a19c1dcb482c40c7ed38f5ea31267b7e4012e781ab8eb4e07d430584bc06db24fd5ae587bec4094d4998e26607fe036220864284c4158de6732e461f9385e2a2224134947ab353bee68a82e960957e3c6bb25c3a00ba23b264462b58b30b48c87a19ad23ab34265ee9a913a94ac6d7ae5b0b5f3056585557297f2ac0af50ae472659a7275f711014e97398f9b2a29e72819d6b7b521ea200c3c13bef4f97f728aa1fdf630e777ecf25f8a2f83eaefb3e2bbef3bb4cf9cf58b39ef23202c1e5b2690d9d9d0c703da5cccaf1289953b38b1576b6d2660380e320ddf60d43f3740e7b10d15d86f4768d279138e3ded5f7001b13d6b2d9f52459a8545e9b0dbc5cdeae2cc2cd97ec76e531502e017e737d17d895b72b42cf9c871bbcd007957308aa58b9155ac38ab6390af96ab6e072fb8c0bc761c65b2684707e226f8b91d45d78dc462408367d7ddaeee82b66f5f37e7a9a4c79e3281a473231199aa50c3b1399ce78dd976fd0d345032c31102141501e5d1080df4f101ba1a43ac32b4c68ca9a66349b075d34772c219037229af8e6e08b6f9cca987fe663c917131ab1426b2c08629ab1a47dc6d59705973b063e404f978e0bbe62d63f0d333a63705699501df4b2f83ceb3f0b67f484f1f669b4e0707e4df01417af8484c883a89d120176bb02b9d339bf0689933919523754a7624c13ef186ba5f6b069a570c4384af3441f8e6c8e137a4208bdc009951a55e40def17db6f3f52131b531093c284edc933e288b2c7f4d2ec922376ed9bb61d7bbe1680bc7a4b39a16fdd75240f9873d4ae204dfcb618cddbb6f145e675ee4ad75b3636ca378c2383ee5cf81d991c1c21e31868b97c8f77dc394bbc56ce31b9d59f0e30b148e023b026dcf7f796d5f991e8747aec94698fda35a727e6141d1e1c223aa6fe79acfac7f8d68c2f34dfddb843be226b679a62dec408b657c481d740a1497066ee0e82e59ef48b4cdccb24814eb7995226b624f84efec89a1dfa09a7445f94e0e4d0dfbf32330b748f0dbeea4a86c52c6cfbc1895ba392eed82723373f4b9dffa543e61dc97fe9afba2ff8b0c5f238e67d8781a3d168f7820be58002dfd02b42d31c25ac7ddfa5e7c444a7390c02578be4b3f482df59515d16a80bbafc9959e6f55b766b1d94e6705bbf705fa93964de4b3e0eb7a94658be26477ef7d7773149f731ec085b98f4eaa127a5e8f0cbd1fb12f818e8e34ead745b5fb6f4d6d7e82166a90168e3c037d11092634e0c52b3844286305e51632b4a68442aa80464284cf6723dd2cc03a7a2d7005774c1f6bc1b31e0c24e98b5baa4677d93a426df1e5b501fea615cf9eca52b4be5d57765b5222b6ab552fe1bb3fa79f7f0a3f19bf49f4facedce8fceadd3ad91e441f36beed75910e0bd4136647632bd89cc8772ff5c164dc37c9ea5e1277a96be89e2739f5cfd84b7baf0f55d2a2f23392a7fd39f4ea7a95f649d7229c894a3767e23f1243f9f974bfc17ee12fa99353b75ae6b3e0701d65b90fe854d3c6dac69ec29ecd31af478d42edf0abca6a019af01a8d0d497c76479bb32760d3e794777d8ad7e3d8dc459780b9753aeafbf75ca75cd1a1e58f3116a811f426a6ec30f2f5be288e98bc5621a2d26e53ef8954e57743dc7b49cc35378dbaf1288a5ad0622d4127fc7b16820a23942a1eb9f260654abebe1fda36241eaaa2e57bb09366b4b3afca25eb34e5f851dd242ff402dffcc39fedbf4337e08e9f82e917c9c5e214221a898a8a50b9382f04bfba7603a24800a3bbe9ef39cba648cc57d042b87424d64de4d1cd231db1944437ac3c6ed629de92e1bb78b952edf49cc2aefe27d5c0423c86066e698d30c08407b425ffe6714dce5c32838632ed3ecd273c3b4c8dbf998f7721f7c85dfe88dab9130f8233cc2cac391821d8060aa6801cc5cae82608635116b59e56026c3181be122c9345bc5f457e4aa44c05dde49c025ff45026ebb141b6b8415a9a7e1aaf938b99b8cbb5a23e3c0df97cef41e66f82bbbc1ef49ef7d93b1af417084bf9a1af6606ab7d96084f78847e4fd4784dc263aed847eccc9b43b48309ded3fa4c0f67c0aac06d5fe03b56e7006c42a59ad1168b985a026259cd59ef9f1498a7a28118e504b36d0130a00924aa67b60444afb9834412674eeb3e538b95d4381d162c2f84a530c66bdab70e1f54f932cdb657a2ced77c254d36389a1c7945eeae40e5a4c38fae118934d84d7df9dad9c6a79e884d9d90a02aca7eb084b52cc46523b138564627b900e99ba876a32612bfeef504597ff57a8a2cbbf4b15f937ef922a3af0066689c0e62182efa4c44938af3f90ed0470e068d41d9e46be04165cbb42c9842fcae7e9003d42c61c37cf67b4bc4ae76a074e54e57163163eb3e65998d169f9c81b578fbc1b7de4ddb823efa6cd4d6f1c0a9aae1d7d37058abf59675ecc7f8cb3b2304870c2ae20a46452082081cb54f5bae258aec566ac93f0cd3109811bb05cce31219a3c62a31233d481ce15be31bbaac569875607af7b218b2919a8616f5abbd1a53d3c456993f3fe78d3e129ad61a8d28728d64798e1c2ba136076f709301b4c86b68609b5bd0b67feb170b609ef4b6684a46030ed61b0cd0303a42936a22f37815d2a3ce8b19899f4fe1feede85bb6d5b5b18fc2b16a7c38f3846543b6d4f5baaa86ee2386d4ee338cda33d3d8aae174d41361b1a5449c88e23f1bfcfc2c6830008ca4edbbbe6ceac95158b2088c706b0b1df5b1b2d7ccfa74c3b3b73ac4b1f705ca394755a8941646d2066e6ab11d930d6fee4b91a6ce92d641c27dd2e50139e93da1e6e1fd1d6add87a8068cf0388f67c07a23d07449b67ec872a80efcc96353e1fdf938338e6dff9fb3784abedf0920ecac6a583ac83f8560708ec23dc0e9d7e6cfde8a170814e42894ac01636917a5c46d876cbe8cdde60f44da558087a3169a7a9448795b51d20d9df931ce13fc7af4ed3037cfae2383dc46f7e3d4d1fe2373fbe3a3e4ebfc04f4fdfbe4abffc2be19496fdb0c95f4aa3199654d2bbe800bc8b92afa46fd137cab7e81be95bf4cd819fb2edff65fbe4323ba7327698b17bc715a9c734a17816c1db0847e65d3417d32a129464e36cfce3e99b9f8e7fc3b6918f67a5bc28ae236cf98dac5b7c679daee5b3e78f1e1f3f6fc565ee7f558e3369ffdce20a2174df28c282473b00758fcc51aca33cd0f1455dad57fdf008ac620f64d5bdef7eacf87b7afb7d2383ce4b0de05eb6075f463da3e8351845cb6f220ce176b375c9e5983659595637cf18c4144947879da3c9e810cbfec42fd7c54a9434bc5a8926b20b89bec06dac0571c23dcd4f1f7ea136eec32fbe926e710fbff8566edd875faacdfbf0cb438b18593bc6055c31fc533e964d4f0b70d165caaac3383a4069cf87dbb422e504d3dcab56da764b41eb1c4bf423ef2947ecb3b4d9811e56d6f9b8e838abebecf66925083d95960b3a8bd2be9517b86472f2f9bb59f26ef10ff46efed9e732493545983a810d67ef16ff10af711421cca79d854f3da373c125cfe81c0441e2c78ccf0ee773c2500ac5ac95f9bcceeb2c7f4ff9ae8124ef66efe668c728ba2118dda1e8630a1dcde6da98b6861484aaff199bbb0381d89ba161586124fa749d6dfc1ba16e057184be7f703835ef7084523e61a2c3ba9da8c331d8999e85a83f65ee2cc423e6288562deb66dc2dd78c2c946eeb5747480ad654fc5e1a691402fe240b8f6e160830206936a86768c016d570f229f44009fd785a09e3be7d5d9f4ff8ae7b008a8ab2ecd53460738176cd35a9b2b8b7b555b659478498c49751ca199676a3b4fd06494142429c912f27b250841e46934112dcb755991521a71e24b92252b6b6bec7f7e81a3bd08e18844082f489d5ce287085f93c5ec608eafc86276389f5cd9aa62f03f68922be0a89226b9163fae7085b405c12ddae4624e6b72db2e0b9695e52dd81f14daa676399600d86ef5af04999ac532c915d65deb9c757bb6056985c64d557300ee629dd324c4f65782e8f7c2a23014f4978ee3916fbe3b7532b4ee51cb46c9b70016fb174693065cb4a734718d61d5d08306a332e44042d103f58ba3b61fbf5263cb199db728e56dc2ac78eb38b06551cbc7f403afb39c93525c8a19e423c31259b38b62791bf4c35042a968d2479c9f8e3203b6b24c2bc78a2e6fa24fe4d6901f541feb2a61480744aaa7b3d95ad238d12cc2058ee6d15c59ba47689e3a6fd749013fe744fcae314556554102ef46b34383ff93a31d1ce8eee10d20dff0e070d511c2532598301d85ba496733e6956251ccda6154fcb7c0450eca86c3001442585c9218028b4bc263173eafc35e5e60c227cf701cd7f278ca47846bf7f419652e78d1f8b3acc0c657ceab9a8a197094bad8a242d34a232dd11c9ecd919a631ca1547eb31f91687f9d54906e7c97699fc98bd25a8db4fa84bfadcb60f28e01ed9932ee16379716ce3284f0665d97a9b97da61102af9328c27fac697d9b2e13419c8991de93850a1af25dde61a8775f0fd8bb59b087df4a1eec2bc9837dfbade4c1bed4011ebe92111ee84d629b4776d780cd324d641e154ddb2a2a5e52ea92c66f7e107c401afd20b9854b5928b623f87bcbc79fd7744dc94ca65f1c17cd93222bab8bd797d54dc12ec0c0133ce72fab1b9b73a3fd9a0758b37890ce05ba2816f48eaf0eedafdace5a7807d7a81c64e4ec19cf0a466b9d34d414581eacaa24410867ba2fdb8bd47007cab9d4b4815ac70f6fdd4f65a3c225fb43c9745dd3f623f0fbf6c6e8f7a7f43d09c20b5a524ef7760e87b23fc4d2a9a57e5ad54f24abe7dc94bd959612338a7028f98d596a55f0a67a4f19c2c1e240161e530f1f1e7883153be1d192d3fa092dddccfa83e3109f04c6e1170f8d43d4eb8fa368f4ce0b0b95fc0dea7e6d6fa7503adc7b6dccb0cdad143af47604c8209e170d1f678b45b21e67e397a7afde3c7a8eb069e6bc5adc2ab91a3844fb9bcc6fd39d92770602b3f2e51c4d27e70860205b6c5240480e233a79f2ecd1f3d31f421fd9f12d8ae6744555b40a6f3120e045d5d0d42c70db17c3f4053ce36c2cbb3e7b7cfae4b7d6f6205787072c19036051afc3222b1df8845eadf8adac09272cf16866c39b566474003e0caea0874b41cf94fa4009a072557748b865445032343fe67803f5d30a44ca439f2dc799b4c7e23e8af1a63620bb73f04b902732785dd160a2a3d9dc4dd9e5b4a2b44a0782a7a06d82901df7be4b18d39de704798e66ab4104e9d8625e27a2aa8b9e92fbc6b70f5213c51dd48293e7ee8b7f4a3319418d75532cb460b04a2047af065f305ac01033eaa4d99ab13929123a637384798b37dd66f8d7ebd3171d2796d89931add88b7b5e9fbb3a33a211d19dc07fd2f1bbebba27e8373d5a60b2a4f0fffb73316136908ce9feba845e92881d89c9549b716c7e8cd4af31ab1610a5dabcc305a96cb143177f928acfec0f704e8a382ecc90c138a01e67022e396d1a9c3969fc5452322a3faae91feba2a6d6cf245af3a28c1064b83771c6e8769bc7713e3e2fd8a26017d64f5dbfcb39d7b62a755ae6a5b0fefa5eb9ab95faa58544a6b53c95358e4ede3e7ff3ecf5f1f3e3a360764e7d7edd9a672f4f5f9efe124e5b9a775f9c9ebc78f6f851b056d6ab75261a7cfee8b75dd9496b1c0d0fb5f12bed1a65d91a73a8e42b34ce809ad1b724e4cb0267eb6a3f7a70b52e79f140a66288c4aed88f1eacaa55754deb086750a5ba62c5795647784d32f1784deb32bb8d70036ff5a72569ac4fefd297fd3ddab617a72f8e15e38d5fbe7a76f2e8d56f69b4aa8babacbe8df0ebb74747c7af5fa751b3cec59e8ef0af8f5ebd78f6e28734bac96a0621a39e3c7af1c3f1ab345a64ec82d6a144dfceb8c2c90b398ecece6873522dd6258d741ec3d14137504391a59bf32c7f2f6e6ab648a3fae23c4b0ef09efa37fe0645f862cdb9a87759d5c547f159991e1ee06b5af32287df2dfe2803e63c3c38386cf125cd16509f1617973cfdf2a0c539504e9b65519669747359701ab5785955d06e5e9555ad8b712e58175308e379f8d55778affbef60fcf55728c2cb8af1d7c5479a4607e36fbea25791e859f5181ab335e4af5a4188adafce595694e946865f7b5cd5408cda8381205d5f99e61eb638abebeac685995c6d7b6e7a20870f0fda7662745da4be230ef3c1d77fd3363c822cc76994abb45e766e7b275bfd5f51fe7ebcc345f1fa0ec9c6c91d2e8c0b3b17cfd71da9024aba2fbfb0651b3a7865c21241d4b0e4cb2f11d2a11140ca717800aa6651b394812cbf803896094b1e7ef5b5f8e4eb0384f042141c7e651b7819fd9ba0873aaa71fcb2aeae8b05ad1d2d27dd8fcc8b08f3f151c59af555a0927e0191a1a257d55aac13da11adcb9824289d0173530e2b1db876a7df18830e6e7c1d75912018ce8ae6441c34ba20a343f12c38b8825d3c577574344cd15a910bbe937ee0db6dc2c66b264d2c88d53014383484ddc3945961251d4bdc40bfb44508b3d6cee5ae74f982415973faaaaaf889b8a3495f2c0821082083dfba2ee1ef4ac6dcddb4b8688e3f64394f55f088b655a27d8bf032111f3a66e849b13809a610b6017820b93a7f2e712c6512fdb907ab8b2b88dd2f7fb15e03d5837e4ca085c12075d938f378af85d9ab78a38321da711c7599545d61798b6cd4b2db15b5a1be3b4319f1d2d8dd5d89554bfb0b99042a77a100b0b305ed4e9d176054c55bb0c3b0620b3a8fde9358ff2bb269f12d39a45fe20bdb7c5ab91e1bf93617ac04a8aa832a5ef10ef61e57384b85a4826900e2a262f319634969fa2a7d0f24aa0df8b58a6303865ed7d418484a6fa3b58e42d9a9ae07b8a2629970cdc171854d4382f128dae763ca16fbda8a41fc30bdd7e44a66cf137fc050b45882b6dce44398d1b9a2ef66735c904d4d2fe88755ba142c24ae3047329744650cae2ebebbd5060005bed8df47b868138637942dc0530b141a1936634805b959917a2c5bc639a9657a9135a9b4de7f2203485902b1898c76b59e1dccf18aac9574ff50207e4a0829f5688a381e5d4addae5c47a63188b4fb97b1b0a6d1e7515a1a4c72a9b14b1e923b583c299df1b1d8cb73b29ab139a69a0f95811da40de55d3650f7b27c0a60cdfb59404d76a0087d5361d74d83a30d0fbbef889b499e507d9ab75bdea181dabc5688600158601a2c4d75a95895e979d22106acdea0948f01b3189b8564a5a2c670dca15c8d7eea16fcca95c9574e8a2e0aec5a3c68ec804b5228904dbcc057398a633064ee22b3e53248070e27e288632bb64d4ef2a442a8fb08ed027e879f25f2ad5a9cc7f128a011138d037e53d31903210dd1957234cdd34a4269ba9ef6fb59e30aa5e5b4846083e210c89d19c4a866731e7f529ca9d3be765d2124468e2ddb7708a1d3c58dd1ea3a86a63ced2f6f1772a8fb4459696bb5ba988619c5cdced40753aabb588f2972247567e1e4e4def6b742461c2568d3f6ef9b93ff5f1d745c43c4c5e1c36e776736a68e93423d2ac337d69612ea3a8ec5d74503a969f56829421b46a83221b291c476ab9f96757535a949313d4fbad80bd8db441a1348b45fb4c8e093b645b89687a5ac988113b3904a855d6455b7f2fc044fce9f0ad1fff5436073c62c29902d010bec4653341a0de49c81dc14a33e633398094727c0d0f961758a0c19d90d9264f0edb69fa583bb6252b3b33ffb4c8e8510b26e65e037a4c313ee0a80a88cbe96553ded7e26514db39cebc0fe114aff797078f0c540126765e9004b19c77c5c3427b4bea0d97949d58ea068ba4c045b857b0651b3792a483fd15c2af71c732c34dddbbed3330cd92f89913107312d75230958946f5a24cd8b609084590fdb6d89597ff82450b6dd66da57d1b3dbd2e7b226a4972f6f5a4fedfed4c07a792f8c7cd3304d2190c6b127bbef0549122b34e373d22474c6e70016ec9a8df5bfa90483d9ef8ecfaa398a633aabe6d37a56cdc93281cc42a25cda7556a21ff5288e77ab67d700b9dc2ec759e95b8ef433c8d140deb86551377c4fe3ebbde61242ae9dd3bd8ced0130ad84560172b1db3e4b306c15e84210891369bfb8c49720c338447801d800e27a4bb1c815145c4b947cdb6754cf1619cfcece8c9545537ca4e4a055d19bc2aa327986a934bae7e2e4c8fae75efd2e026f9734eac183092a96c905287c04e1dd050a65c6e2a6c51fd5c6ebb08ef4b3817e8e03c10e9dd96046cee1e6d3864c09fb0e82cbb12e6a3598d7caf4761f75463e860f117ef0c000028f0e14904f3fb5cb3df6dd81091a2ea67a38972ddd84d0f479e23646d1f70f0e65fdb32047e656afc979c2acbeebef0ea6c9fe7e370fe58d34a398cf114ad9ac1603221cd6bc0d062f7a70a852d21342a707a95941b1a8524f5ed2ac4ed0647f9f7fc7264eaa3c2dd980d8bbb89e1dce51db1ed971a3c5b7e416db65d2b0841c3b8517949353a7e4326bc88d53d2504ece14fd743491418d06f7b9389427fdadfee61eebcbd5102d7ab46b872b40cbe63e8416d9694fccccdc6fefefae7e9935e0c1f49cb0e48b43847f24cfc7d958de77f897de258d9f915f3c4d217e447e3177377e417e9cfe681edf64173adbbaf415ef43e3994ecff6026146e8ecc51c4cb1c50f627d5a93d181d2921568d36a375f9754d803db93297ccb526551249e10ae5afcfb8ee47bd2bb3c00addfbb745c4f88a1395eaccb721ee1a75d89c940368ff0db5d30781cea459f87ced56cfa347d92be8de3b77b8521bc299abe4c284a5f9905fe23b4bd14e1e5e6b7a7716c851d16f49345f908bcff6b379747cd2dcbbb6c80f86712c811887fea4a7fa04c1ac65baf7fe85ebfacab0fb773496c7ed6f304faa353f79be4008fedb340c8cfdb2d27e427f8ff57f8ff8716ff2676ea2c3a3bcbab9a3ef8bd396b2eb39a2ececea239fe779f0ff97cf6dfe3f9be76d7f82d8e7f839b5eff1d3f3b3e7bf9eaf4cd29c4b83797e63492472169ea1c9d1d8ea37d9a46519bc87bef5f81b51c8dfe1dc7ff86c4842dfe0fd11019da7494fa00317134adf881ff31bbb053145bafe97e14d92a646d47de624ec9e7fffd4e2fc4787f7ad4c5f4060715460343c435ed9ffc8a12d60d1e1794d4bed100ce29b1e22f574a575050cb2963f6eedd7f7f36fec7fe3441b377f34dbb9d7f7e81a377ef3e8bed24636ebb5b43b4a0f13fa6c994bc7bf72e41dbbd65558b39c98239120d7d7638fec73442fbd1672a1a7b46438b24b7dd76fb2fb1f9e238f94c1cae9ca69ceaf8d014b4ed924da06182c53db5e012203f68fc0fe4e5ba06b2b693bc5041e533851c5a5c52d2d0e4f938c3d149b68a105e42815c081c49c659cd6a4587afa2259d2e952342aa2dd6ec3be9920e5d4af2328863db1653373ba3f3deedf480f0e9617a80798b179444676765b5c89acbb34bf19f09cf797616e1ebfe86f2f68e148c0f0e4d0f63522c93a589ebcaad513142c8c22c06d3428b6badb0c2144d457d03efdbfb8de9e2ee3169229a769e5ed0d3add5778bcf778208fafa18de38c1decc2aecdb8b373d480f3138612da915139a4fcf69da23cb8ee9ff205d764c7b84d98a62a7549166975eb120ceaebc32419e5d78658240fb2849f7534a8ee5af9bfec9909b1fbba7042279419293538aafb295f8999474bb3d41580ae9d44ba5b33b0b6e03f7aeeda47be28235594bc583c9de201ecea57754043e9426b74924181fedcea012281c853704eded86339a703465336b082677812a4a219659344fd9f82a5bc9f64f42b33a9256db98a21d946977f625691c42b37b564b365dfae6aeca8a2a95346f18045d6d50798921754201b11721fc887548641d426a3822de4978ff3f7912def74fc20dc5ef0327e1c42b1627e1b557264ec21baf4c9c840f72ff3fa7e43dc53f52f2f040129cbfdc07a708bac30ef67e620cf29c3a237140740e96ef7ea40f0e8d2ecee604ad3b677f5fc21d8a265eb7c0353d87e0833b968e582d584bf68c0ea063c98b893debb351edb3fe4abcc6cf020bf1c62d15ebf0c12d12cbf0de2d12abf08b5c8547943c93bf5ef8e0efa4170f0ec5d6ed6fb4fd7df65d1dc752789874b9afade4e4f8250d1b265a04836b9d6511b5c9a6c5518441b8e8591e8a467e77470c32e30e498156fa259dbe9432ba0d8407b958d7d979095e6194adafa87992fa23866fea82abb2563b4fb6f8d5fd6ee027fd015947ee15d51c2447717c0181df8cee6b4408db6eb9cc13beddfeae058b12b53cf51bee82878ed8846db70903bdb35eb2422c596e443d93fdfde2bb5c21808cf05931c76b524feb84cdb239a6e2bf0c96ce308026de501c276b226a205c4d7fa709c3195ea3f489fe650e841ce9db3b76911611c2dea11354cfd89c702bf34b2ddb791cc4bc8645ecdbccb6f80f6a71865a33a4b8b95f83cd3da640450a268e903f688b7f0eb0133f51f2738f7ff8010a57eaf159736c3613fe8c925f6912b02fd1436a1384a6bf865273eb01fd64764a04e9fe6984e278f443bfb4c5bf5157428dff4d094bbef916e17f51f2edc1c1d787df7efbf0ab2fbffef2e0db6f0ff17f0497954cd383edecf0c1b7f3778b7fa0cf3e97ec1d0f235f976e188d12ae10019ffe8ba66223271dfdc03afa6144581cff87ea1c36288ee9f70f0ee398fedf87841cc431fd8eb798f3de10a5fa800756cb22533a3369af4dc2798b6b48925df359270c28ab8c7ff11000348fe6a4f7ee9f5f06df3d63fc9ba11787ff1c7a33d0d1db62a83578735466572bba18ac30d09f786575383ac0f65beb18b89f05dbb2d2e2fbaf949bbc5ffc24e3d92f05bd099453bf0c34013de81b398c5b7e92adfc22e9f8ee97cae3ea976a0d9c5bfa9af62a4a19815ffa2bcddeab1128494f15da91fab8b22ec99238a7a39acf044a513c7611fcd451f0e8eb8e431e134e58f2d54384334e723ecee258fc3f2e9a37b77a7fe03527199f163cc9384a2b8e9b809632703f95e143fe1b95f93b462c8e3f83df15fc1ed55a3f95fc9b8e3324de14e6cda88ae3b538db381707bfde6eabedb6c019c9a76fa90108961046e94c5c39994da28200425e78231ec7a3866bfcd62070444822593b22a4d96e2b100c2e970de5b2205a653565f080b6db42bc3e87cdab5e9fdf72fadc6a000a4e4d0368bba53c69f01aa1ed36935461d3c93c5abcec03558a347828d79497876e62e98a12478469053e31ed6eb74baeaefa4b7f8dfc0dc3ec0d93304873b9e0e492dbe124948e10e1ebfbed8c2bde137742c4304d352f20d6e3b54ed8632e7547e88baecd0a42380d0b1cf23e50996abacb5ef164b7c123622e7bef7c7d6638ae8be077b720802e21a2d055c7cb9d0f0096c6f1539a707cc1138eb0aefd31b4c8b3f9c4927b0e002130497c7cbf5538edaf822574defb682d02ac0e66f662d4f22c251edcebed561caf63b336b5b88d4d78be894bbfdddc01523c3a40e96907d5b33ba07aa3a18a8f3878d17f2b67701246454023ba8cec769b704536d648d28df50419c7356f2bbdf6dbbd938bc11539c08500a46a1a8692cbc67992035d1cc74931abf6f7e72437146fa1640401c7dcd9bcc51f026b1e2418df9b8a17945b5b420af41bfc9c93f73c943453cf65364f134db88a5df19a27efe147e092f9c03b26a445a84ddf48cbab1f07d6f1a960449e7315c941f2e977809877807539c509a2b36a5fd0fbd6bad1163fb3b1d705c42b94f03a5d1a3cf66837901cf0747e87b3f9844ed02f3ce1720e0853f2cc0e5bcb0d005eec02c02307002ff9009b67b70c97eab44e7fe182d1eb64f4bf070fd84b71b42ec42855b557c3d56e387ec4518b9f702386d7745884f0d3aef4655d5d150d8d107edb15bea63c42f87157a0889d08e13f38a13479c211fe157e9514e19fe1d7538ef04ff0eb2d47f807f8f59823fc19278f27c9131ec7019270443ee309a3377b4fe41f8bbc4c0e91b8754b6a7d080497f9a6145cf053bb61351b55e7291fd7b4a9ca6b9a8896deda3581ce332dbde568bb7d6cbf37e49da9f3984be54a08e93f9688b647710a16c8b9f215ef2c90cc94d284415aa46299d448c544aa651ca4bd3f74b89c00d0209ecfdeafbd1a305ef9f2e7de4b031a59e1a75e0580887cf943efa501874928a7acf47fe3e4338eff7dbfbbeb5f41aac8cd15e780cbb2b3128be38b8329642ffeb741572a7a1418b148bb571dae068be7d55a46005cad39c2acc5ffe1601fd0315d92cb0d04f90b8c8c8e3bdab1bb20e9cdde7fc06cada172d7fc47a21475f37016e6a0a794890661dfa354ffb25b753b6758762f2955ec8ca5c58c91cfdfddfc4371edf57de7d354eb3aa79831ed0c60796a9978ec10e053fdc6bcc51503fb00b3ec7a83e78c546c5a99d4bfb6d540c642782b6753753de54c6b8851ba511a8bf5ff14e4b489336eacf36b58595c5aa59263c54bab08ce045e31d26341f1a555a8794dbcb00ae1c0e16bbb44719af8ca2e84db6b1ee15b46c26c38be7007a9d0043eb78a5df106fee8bf32d20d7c6cbdb2841bf8d42d37b2067ce3bee83a39b35ed8920d7ce4bf70051bf8c47bdff5f5da7b633a9364161b92ad3a6c9742b52ae4dcde2dd391c9c45e421205362c85bfa57929f6529deceb0a17e60597d687b2f85c7df751fd3d567f4fd5df1bf5f74cfd3d527f4fd4dfd7a6d9b5ddecd21d862c5ca96faebd31ea215e9af2ba9bd822d4d29529cc180475c61f981bbe12bf77e2381bc5054dd0a60dc82b245f62ec1637adb8e53e987cdf1f18e43ee9f006d19e0c70643b3bcfae824efc6944fbcf4368a463a347e696b0177fbb05ae68ba69d3f72c013a0fb5f847ff484b223688a79440e7370e12e11f598b9f3157087392adf023469eb169c193670ca5bf30fcc23ff8924abc470f2f588b7ff77a784d397ec5c8efd0c3ef0ca52f197ec2c8217ecac843fc96912ff163169474e33f58d000ea57b6db02eae70075837f6264d34e7e62b3c76c4e7e6201d161afb0131ddaaf6c19a15d6e8914bdead42ff3e5b7bd7796fcd67ee7c86fbd17963cd57b33d0911208da459d48f22736fbd983532783b44b950cd229323248a7545d0d6ea92b44eebdf185c87e858149f785c8f65b23b8fd89cdfef026d99794fec09cd8a832ef322e70aeb44f784d58fc84e186b0f829c32561f15b487c04c1d94831ad13ae3e48058d88badce199c630d9c44341ca576a497ea3894c50b3043495917f81fca1737b3c11bc602673c4a8e8b7bf41954bb222e40fb6ddae08f91506e4883ebbae54f11197de456be86e45c8cff2dbc76cbbbd8ce351a106d06cb79702233d67ee409ae90b3194339e64982394fe289eced5931c9e98e44f6cb6327ea4c594a79b769291372ce17885d7a86df3ed36c9652666251c5a901c8c182420164684279e72205e0504f02b66c32fe845904164339a546a1539ce21f306c0ffd15ddfe342b420fa2bb06ea3b0da1063bd26e5b499bee2e9ef3c6da6efe96df38ca5171c5f91a53690bab618851734b9da6ead8c43d0c9551c2715e1b3825473849fd024c3c11e5bfc99c0a3bf31f22574feef2086fe41dccd9fb1ed6f5af9fa2f9f3cbd8f48490bacb4e4a3927ace4e47ae7aab5afc9f004128b9953a740976063aea0adc6e1d3de67f588b794da2e30f2b9a73bad8cbcce56d65e965b571df085dabd2a57d440467d67fcd2d078f37b72b2a9d3c788dbc78c07bdaaab5ee223ce18af029b7bdf86a9482114a41046f905f429eca024c6b2ab3c1208b7152c91e7242dd06acd004a20152c0b6ab708eb6db02e7adff9ed19b84d5e323f1b0dd3e170c7eab9fc97329e6af6bc26a5cd5e42b659f52d4609b3b7b379fef6fdfcd92699a3c98be5bec27d3f4ddf8dd621f4dd1369945ff678e12f16e3a7af710cdfefbddbbf9f6ddbb31fac714bd7b88decdb7c994c0175b08cbdefddc7e86d0e71738afc9e7efde25efdea1e9e71738ab030c5e2dd62e240f548643a4aae39869eb1f4c5b04c6fb12b686c7ef05b5b252f1ef7df94fe3b17a542d2878ad1af97d1421dc45902f6adb734fc517d639e921a6adac97d738faec304229db6ea9388fbc45785d93c3cf25789bda177ef76502db2d04c1f683aed1fd28d2966d07d2f0e3f0734ac883753d8d1e1c44296f71093de1651de669573559d6d3656dec866da6f6b2f6e27d87066705122896095c44bae45f0c2c2bf7a53c08a277eb57ab7abaaa95f125088c14efebcd88891971421e946a464a5cbf08a10823188ea2f4b236a2faeb1a5f05ab4b51e5bfc4f23582d1169f4c67749e9ef024ab9305801cb5935dd16aded77784d6fbb1be231ece2f3a40cf6d4d92eb9a5c2528d9b408754ede1735b9ae8d1fae158da2eeb67040e4ad2eecca4ba49f5cf8aebcecce4f8c7f6cdd39592fabfaaa789f32951988116a47b3d96e290437107f2d56c5d316aa2a9171878d3af1ccaf75b65ad1451706947aa943a2a73082a38a3131b4689fed4728c28b443a3f775e941f6bcb78c804e0d6e918f5ad56912b90cdd138aebfabb4001f514267d5acdedf9ff7c35bd329b393721cd79a43efdadcb4b82015cec901ce5407f9779971459be43a18e09a64b37c8e1b02a3cd4cc4e97cff10014153ccd6735410f107725fee15cba45105e4df2c69acbc9ba5686cff703e51af8feaa44471ac62e897e87b7220bd57dbb6582689ccbf46d302cdc420e6841066e11a3d5d365576e785ac96aabf84292ad4db2414579d033f8100265d5bc6887d291bc14b2b2a4068c1649e4d71f52ae25b53c866316d4b30a9dcf2a29b57dfe99c6c934ac33d27c5ac9ae38cd0593e9f9cd54986a6902236c910443612376a86470708d7b37ceef9c566ca0b189fd6828215439ee573246ef67c4eb8c93d2413b606e91a4b476e19759d0d2238e97d1972e4c647c18f54aa3ac860b72cabaa4e4c560584c092199f0447e6336a84dced13dee2d7c14180d3688bdf045f42a8f840880afc2158fdac06b2efa64ee8985f524dafbeafef0a92158c8dd5d14897b92484362d66e3cb73eba1a61745c369fdb4a0e5c2a38ad978294a1b995705b3f19a0d55471bb5e7ad6fc4170de5404aba5998ecf858145ea75446836a287f53adf34bba18fc80cbf7296ded2b87a918083af5d3297b5cae8168aad7ec17595854ac11db1e022f81a4bb41a6db5fe079b05759fdce4e8f205d77a05bdaf5245a5c0ff7d4c06b0b2000c0ddf0b36abf5e9f5f159c3b41b7e193858aec2506d77d5e34dd07ba153d9dfe22dba6d2a6013d4d760126b618e6feba6017a56ce139bda665078b84e28fb5b70c9822041b3e09dcf64343573be7b86b4c9640d802ec8eeb5052a7ed5d831bf0b6a2375a23e7e487d03830b176bdb7250461d8fa73b390471b22fba9196937b2d7f925bd0a06c4088e8e7756f4ce804c4bb822377552a3699da0b49e24016b64f77e822028fd6b4913039da5b2345a1164b1a7554c0aa46f2685b90b34a9c475128103ca2c9f4fc57fda4d4a134c33368d343c5fdfb23c4acd63344f2abcc9ceab9a1f6775799b8e0e71ae22a7d52d6a211a970f7eb4e1820e7541cf03dc939483033d342e18a3dafd405310c7b5a0c764cc333abea24d935dd0eea666e4006c5fe0d309fbae362103f4155d911a6c5266325ecb1c2c63a0d54a455233ada24e970b527014d8232e52f192477a88af3be792b7340f893648eac36374a8e3b005f71cec1a3ab8d7f9b416e8e2286339854c77072d4a4181113a0375c2a75eed1490a893299893d1413b6f133596b1b803670095d0e96e40f13f7020a6c1039750f064f431bd5399fe98b145096447ba69e781d3ae98dad9c11c1ccd0fe7625fcc1e1aba7b25070e076f8e375d3092f439ec62846bc2c5d715e1b3c3ceefb05b3552e17a10f2031834806b73c162183c8a548438734783db061a4bc78d61c47509f0907761601bf555c3152e08c7390141d1e80408b80d1daf68dd140d17ac95faa9366746e89867f505e560820a56fd0dc980e9c225c9c6c5022f49a692a0ad4836ce2f69fe9e2e26d918228ffef8e6e4f9a4207cbb4d9aedb64438279f4b6bf46d2d46fdb934735fa3695211c8b0035a896489f0eb3aa99060c42b947e0ecd9e571fbafaab74d9166130fbf1dd2d7642d31782d1d277628173e460a94f22388e7b776c21a5a680d34e6ca1cb8da8aa48c4199d0b2ea17b4aed0712e0ac39c4e9682792ae8579c3d90382cad5f0561652aa40c42b988fbb76678f89d7606336d8982125c00eee9e60abee4b21ca2d2d6925674b8399b09ba7b35f92885936f0b160ed65dcd2ee3910bb74e7fe3134f0a9b55d04281d6a6e74e01141075876790411a7e9d87ada3f6c35e5b603147d04334c56fad4d741c763e9d048f2369c4a0b963557d04d507a2f6255b42ad7c6f99c04d6bd62aa69ef4400372c652d8f72396364adb6e020ee445f3bb054dd61a98a4889102e482d90534e92bac34458e0a16abb2d109adc6fe1014fa8079c43509fb677b5dd9f091a4009e70e4a38b751c2f99f41097dd6ce430a32b2acd8c9413cf169b8c1821533b0ba17769050bb376ed0d3f31935c9437fdaa06da6c662670cb9471beaa18c8ebcd86ef5540a56f0222b254f3b61ee33e178c7a1f21927ac46b469b106a8b8b180eb549276c5b17a9d4b36172b0ccd1ddc736023d557624ef6b12d96497772e1ad8ea4e215dfeb3c4f3e80f45bd1a51608059e310f89d4d0eeb9456a71a14500d7007fd8811316cbe6a1fdb5ba3f0bedd2ad9f4adc0550b0a2ce7c18f56f9f8d81810d22dc5d58a97d7b617baea93b75ecc812524fb680b57423ed041da6acb10a1bec9cb1d43b73d84330690fe560872a493d2a051ba94c6a4968b0234d493de90aee4455a92db7c24696945a7225ec6ea3d4df57adb330472ac8a697bfdc3f0545f3cc9ceb6281391909f2dd3bedd843598a77d82c8a9adfa65c1ff7944f5d298a0cf96bdfd8ee7b7d7da7e02b4ea5d0124da93eba28a5d81948ea0dcc9df2e32c9424cec78f7204c1733e08bf04e18d23b64c3da927f6c49a694fd0893b7a20b589036c333aa9cbf7600bb9a50eaac3362d99baa425f649d4748876c5ee7515a8278abd13af62c7df07d2f6ca0810faecb2df612758d223e80de98efd80cc02134dd773b7ca76abaf1eff3ebaeb12732e1f7d6171f7aa6a2d4e44268990423d2928f7aed0c0c058ebc3320f042bbe3bd34237868336fce9ae5409f60ca0c092f2b8cf091a68fe49b178bb5ab8b79d6a5d2e2865d9b9d8cc0a06c5471ac7807ba8877bac6f9c1748276af4a03a505d2711d417f360b3de8c86c4400351953073f01df422b7c0aeccbc5cd58963de49819d07ef1800aa1c7e0d715a4d92ecef0fa6cc8daa6b91d97708da19068d2b135c7f3ad32232ed64133d393d7b71fae6ecc9f1f3e337c767bf9dbe3dfbf5d9f3e7678f8fcf9e3e7b75fc244246ce644bd7ea1dc2ec605a002327bfb343081645d38483bc1274ce6c56433c55f037dc482ad85b614f0837b0b6935dc2f2ceddcb97de535be63d65c9a645e9072936ef0995595fa80cd24d94b2a4ee8f7c47d07215a29b13eb50821982fc0884ca2688786192efdaf83af74a15e6eff2f90c1944dc9ad0fb798bf974a81ac7054ad99425054aeba9d62414287d033f416e68293e2b56de26355271f6b1c910a5f228f76e3d19bfc5bedf409a61d33bc09bf41091a074316f932a18c2ff79ed7b1a486304cb77a61faf5970a8c532894cc8344b355dcfaab9ce6b0f8410d311b783f19ad104423217d355e247a856da7608cecc352f126a42467a5ea948cfa2fa8343a5a190a903388a63151389cba0cfe00e5a9373177fdd5b8dccf5bee3ddaee3ddceecfc8dff9efb4f05b3876deb526a36e207690a6480fab3b798684190aef0435f484ee71e1998c8aa08ffa9613a9fe9cd0dfd7717c3df39ff5d44c2ce597a9dfc19bc957493c21a6816fe2a6cfc953b584e670502bb9d08bcffa234c76b42d57071d319e35094503ceb948138125d453892fd4438d2bd889fc6120b47b2a9688e7049927537d6759f9ab53b5bbb9df975a3394278a988d734aab34551095cd18c654488486b0bbac26923f9b2f4632dc701d40ec232c707ae343e5cbbbc452571e2dae2455abc221ba029d22516f34b4b10eb19732796acc0daea46a0696384ab0afbc94132b9b097a491facb577489170ee81b3c8bf4ab687ee7c592b99676355da6972d5ee285958aab683b3de73ddb69f10a377e13fe0d80f02f3df4a7fd59d5b682fc6e1693569867c599e5bd7d6776d15d53879a913b6e25c24a19d6d2e9b468a58666f24bdd37079476a4cfea019fb9846eb7b339d2f719ae483de38680ab55acf984e34384cd13c307b81217047ef427db9df139a8b03144fdaa44532feed954606c0798c1685e7e6a1310d40dd7edc45a743cf0fb7f26bfe8ae6c1e9d81bffb665c70e9b9150a05616cdf4251c5a86dc4dfefd0b144258498f291fedd21f4a91e5dda59db55fffb73405b49465d436eaf6bcd461d6a0bcd11b1c675389fda0fa9b469053360ef502b115838378765b258274c26e5107fe298cfaaf9b410041b556938c4db144ac4cf16e1e2ae94a4d76ea29c7fca44390f0f643ed0c32fbe818ca0c9e14384d741f974b2d6ebd938a138b6db8d09ae98cee6ad158413a8d238f6555da63ae1adbd2b1c1f1ab1c01c71dff887c9a554c142a4698e8e8dd1e072c8c2d1f8c01b03d19d09a33a42be604fcbe2e292bfa27fac69c34fcf1b5a5f0b4aba91513ab315e6903b2baf8b735a5ba53d0fd97eda74198cd53a64b45dcbd8a1b613ac0aa8abb928752d241ca509b39d69add88462100cb5a12457308dc180aae0870059a635a727b66a4e9f529e1b8325136e085493d54ff416507a50ab300cbf2e34afd4626b089a40bbc5321929f1ce601ba26eadedc170069156f01a16a1189f076eea7e579d97900c29b461f4034f6773a59d9acd215b9518aad8ddfe6021542e96dff0b1f8a3f318cda87c3c2fd822a1688e5483ca30c6aa269fbb7aa63fc91e899f566d53643e681196de7e5937b4440ea90f804a4cd89d835a881a61d09cca6107330e75ebdfeadcb230945e65eb9249209e909afca78f4783ebcef1b42d728cba2063fd9a751041f83edbb1160d4deeda7772d9bb28a7f7dba7405116e30c522a275f7c65c9145636c8befbbadde53273d5ba7996e98c8ecb2a5b14ec821cce49a47e4758bc00e5515d4894f5704e22bb4056598ac37d52d5947c31279179922f6b0a05e4cb3989d46ff962559525f9e79c44e287ae9b2d6ec9d750335bdcca42583ef2cd9c44f02b6a9366bb4d1ab26991c42297c348bb67d6ff2969fe829283593ecee601cd057cef548cfeebbf2ab382d18e6fc4929e2b175b2f11b5dce2c6656bcf4b8835bea8b3d5e5cfcfa57612c5f10170f24ea9c996e99787ce9c12bf4c8d19691a41ed3df5b8c72abeb7acd66c318e267c9f443fc826f7e4e9dc031fa1772c6ac50dc428bfa9eaf7d080c00bfb247a218bbaea6e2ddd2bb4813027bc4b88f18e7df6398e22d4e2aba1f5669db5b1335599c2dcea075c42610c27b24348f6473ff03a7bc69615ce1c0954e15dea99db3aa905378033a70752a9e4cd999e1329b6dbeb244338eb3a2239ce6c6ac6ba81b3e1cdd826d0059a8cfc43ccaafa2a2be10ccb9fee117c183c825fe823d8268bed36597407ebf64e7f0f3efe634debdb938c65172011e6e36a05ca0d5c113e96e9d85e6b0c6af2301322e05349a18b817300f9e7d2684a216081a5dda5c8c745f3a6aad993ea8691d121ce75f7a4c6f9f8dae0adbafb0d4ab25c8efbd9426c1519b982fe2c4b1284737fe0a4d05fa8991226ba82d32d683671c7eb1b08fa975a00f9e25ef2c89a363613114c1e1ab6b0376c29ae88776733b4118702d36ea8e3a6ba0ada820aa6ac12e0a5ce44c735bdaaae256c12aaa186c0eca0b8a2d59a3b11a9ddfbb2c507c18b5b868b9980e0dbd4ae7aba897c5dd794f1573b400394a65dade3c63bbbf3f122e399a0fae1079151df9d9efc563c332079399b8da6c3d388d66462f4326ba48588494ca74b657b53ef1906a2ed961455e7b483d5159c8e0eb1422bca32a491784b322cc0a74940388b060faf79555319b0c15478b600391b25ac336d4b54f600757264fb2fabb2c86f41412a7009a311c260c0efe2befeada2f585712c3f53290d1de4881c082a300cced8a06e650f23e1250ec355b2713a4f7dbc6f779aba57408bda09931e070a3168d9bb8643873d1c3144a2330af5ea61ab3185410bad017396a7db6e70aed4ce05293ace480ebb03af493e5e65352fb2129764c4b65b0f1020bd5550c34b12a9970f2a56de02d8ed4102d2978b1ac7e576bb8ee308fcf665f5d170757c49e43a656689564941d8d41b4eba9c9ae1a48d24e590b7944517304180dedb4a515696bd815bbb318e934b65f6e3dff008af05efe59e32df5df6126f1a9e9554f961b9955fb36cd55c56e6a36a4c91df2042bed0f7126fd41aa56b1f7d15cd9362b9a462999fd6d5d5f36e5c61dd70603026cb268f63489feb6f00ea96882a30457805bf4ca4ed6acc5122310f9698d0b753b8a03c3448376f6237c8e0c79ef169ff5b79f8fcbbcfeed93135b31371755de370b1065befb5c4a91e1a27a0a375c621c9a481e5099c0dd05958c7486c5ee4592bd414c06fe5aced3ed8b3dada93edeb14b682d03ea77beb862ef6787541f925adf76e0a7eb907a8644f0d761c21347156581ad7689444913e1777a133fb1bb3cfbb26fbd8cefdcaf4f3e7d1a7d7a00efad2476cdb6dc4aa07004678368ee85df804ab07bcb1a09cb2294fdd165b37b59383a9e14b49fcd897282ef0426f975d5e95de01ebf8e4de1653d7b8a7c2c9c6e728a1e3352890611808fb06347db742e9d2c7fc3bc7a372555709278aacebd2f077e6771a84e01aa41626edad27b3378fb5822d42f669f15612b341585798e385e26674b5678bbe076b6d090a2d2085ac941c28264c6d0ab1181277a4b5448ddd34793793561a3078cb6968d737557851b539577f5f353cabb9e29d5f5b7c43b2816a291d2faa1c6413d680a83da061491d431b67b2e25208028777c97e2cfe68120418c71b9bbf79220802668dad9246511ead0fd2fa8a49d2d8fc4a384af38a3555a9843b49f4964925e7624f0b14ecdea4b820c21c446bf6610df05c3a4a3eee330cc1eada5e85a109fd9e1c800033544fa907293e441083c0e27350eb6d0cca4f57bb4cfcf4b99ad80fbbf1a4601825c3fe8c715a5f67a5642a6027bdaccab26017895b01a592fdb1cb947147c3ab95fe288c67216dbf4335f6f030b5df6fb7fe45e87ded529bfeb70dcfd8e23cf8a17ed5ffca3802efe9ac73463039746931acda50b4867fa46d61674ff9ebf9071d5afe41ca39fd0005a80cc909102a4517fd9366dfb5857f0bc6f1884f0f0c7d6ef8782dd563536d950adc6f1a141278d2f4d4a7088a812b9914e03017ec7a7aaf9eee7fa5eebcc12dacec8cbced056c70ae5f6f752d843674307d3e0d2aff5af0cb9735bd2eaa7563316b9d348481e8ceae00a2b06edb158477183def788c672890d08b26cc9e31b85e4f72cd9e3a23145796e4f3afb2fafddb6e7e6a9805ae71aef6a4f3e1795d658b3c6b608205951e87ce49e83044cf6ecbbbca4cc5feaa227763d99888e82cb46eaf1d367396e842b1c7c3cdd1c02cede6acc1e96de58cd41d882576bcc394978ecfeceb228ebd82f1993e39713c1a7c272f4210b0ecace10c66f01255f7a591e263806cfe1e69beb73bcc705b5229aeffc0d5f5d0b154623ae2458f15c6540fd9e5b2c407723c6e39c287439844df4994bf5dc95572832b588256eb77cf16ded2e7412c24e9eccb43dd8d39cd6a819d5577fdfb5b8d6440202bc7ebca88d52c9cfd972d169d122f80f3eed8d3719c38fbfe4fef6d1d4bc3a314813cb3e42510dafe0e89882b4ddea5b7551b4aef9f41fad06c11e8ff9e6d536faf81fe763200a501c80760e508509f170d175cd3d3aa3e55a3dad5888f419d3dd6c3a1368570105cdebbd16a884cdd0935573a3fdc0a99cd034392aa805d1b3abc4fabd5f0c560a95040137a69a9b42f6cfbc890f4c5e692157db92cea8603f1da177022b0403f1f0c49af29e39a924d6b6cbc5c19175cb643f22df8b6c57ededc90599da90e11caec2f0a56f09335efc7811224a8f31dd95ca97aa9cd2632d0701971ba5630b07559b66e578266d05d85bcc63bb31ed3e704085d632d00fe69f262e268b8f1dd724fd3b6b41eb1da56b61b44f96b505f68d83b5566f5306d13843ffe7f60ad7792a3ea337d6a204d1cd8b46862129822fd10c7234fd8ab49ceae0eb2422c6763192c9be15a40bb00384fa8ec5513bcbf74fa11de13418f2c1d441c276eef61a1d0769bd402e51536818c040d5d4f5d1e2ea5e3a21138702aaf45787e25a56ed346cbdf52330015c279061b89fbda852427dc571a04614c361a56778a61f0ca07525a784aa7755962574995fbfa2d7c4579062a1641b0c99f2deedbc25b02c4a755ad04791d435f3ba6385d8db9e61c76d5f1340b4d572970ac2d0e6307867247e68f62ee9a4b009cdcf7ae9105370ee1fa97e643f573aa2f2dd3426f7542ddf81307c55500facc990ff3e6c3061a4243e0ebe3dbbf003d7ec79c00403be6e42dea515950c61386470783e3b76b7ad7c6dfb705fec402f2a9827c8717bc2918822414387407b2f66e1c9719b4ee939ef32e14f77d77ad9c9696d3dcf70f0e5b14f060b524d93336efe93bcc36c41bdf5e4041415a3d806f28d5d9708e07ee478bee021a0abca672586bf0fa54ba07b0aca2e3659d5d081c7992f1fc92d61216321e3ec74c2fbafc9c308435cf982d16af7443498d70d531824fdd26930a85ee68bb819d0b63c64bdc47a0943c9b3a340d9ba372ab1573cf3d12f75c070d6a445e03759d57d8c7ad0de5e1f9784d6af1980340bfb18b60632e55e200c2dbed6bb60bb6d6cd283deaae2aae3429b02754f44bf0b1ebaecb5c10f2acbc7db5664fab3aa7ddf08dc7dd08c258e713df68ea5c424f495cf59ffebccc070b346855c6a7b387d806c0133597846326d540155632516f73e36c58e0d80fa3a42e75299c6d518be6e9ec216673a52c7197dedbf3fd0de00d85f4c9cfc126dc65f71a729b91e7b48f207d6175839259242b4773c864eb6ea929952c87374dc1ed0d36eeb560fa3a420945a937df554d57594d7bc144fa314775805845543bf92afa3110e175caf105e5105dec277aeb58af09125cecef6571d165a991cfb0779e2d9ed6d595c99aeb70a9a343d4fa4b9f2d16c71f5655cde96258f7e01bb54915c4a6eda92044d1df7868aaeeda193c344af27abe2ecac5abaa92b186040c007c401300a2855aeeaa250c617eef1325f818ea834a9f2abf2e0a9d3210d901ead985dc3abd926a74097a78bc7952d434e7c5354d3794715afbfb429f07a2fdb9a52f2d989d6b5b735838eb79c82233caca9becb6e9b715a904670066f91ade8cdf176c11c7a303ab08fe6f9171b45d8eb3b68520d477c16598930dc0b077f90cec8570dcb2ee508e17c572a975e0e6f42fc4e9b715f3b85af1e2aa687891832d9746b03eb966ef52ef44e102e738eb9fabee1099a2228e93c22dca819dec9d23089a662a6590776c74f829e7111255e00697788957f8122ff035beeaa1aade29bd955f5ee89aeb8eea780fc0b3c890020acaae60899206e125598fab15ad415e835764394d2ec81241a61ec8d233e6d5dbd58ad647594313b47fa1bc5f0f511a013e8ff0822497806191a21aafc9a5a61aafc8a6bb75566969c263f72f4d897f17587e995eb7f6da17d8bbbcd21c2b0fcc533dfa37b72b9aae700f53a49b1687a98f346bb187dd5ed39202705f539eacc78df58839be1ac4591bb917531ae8ffaa8fbdda3684a7026318ba113e6d6f895daff657c8de28b0b556a6a782308b725881cb8426f3d6c4b6016ac88ccf3d5fcac07097bbc75ae2e5ddc3abfb84c95381aad7a8a31ed608f20eb9ebab4269002cfb31ff412a36b162ad8cba744c71acb46689c41433d3d1b1e8682e981e04b752270fbb81219484a649498a998dd0e7d826104a847019c725846538aad8a2904ac56449bc32ab09cc7c922ee1788973d49bb5b3ab4b7f57f72041d1c66808e5353b47e23fb963670fb11d928976cd35102baaec29e7fb8bf558209f5d67a09f11e42f6dfe0c3be8f59e87a0760e81cbcf58cb9011772be035c9478464b8217c96cdb75b3ecbc5b9f04df8200c7e1833c5f168e8d64dc0b67349f8f8ec4c404ca67a62e3103ac4c9ca637d7d727db69ca3384e2ec96ab69ee669064ffda15e26bcb30d05a2a81083d7784085fe009203890d520ee6d3f048d9066171fd2bfa0a1c0bbaa720431e49647a07b165535ac156b210892513430c505809ebe3f1994371cd898c958ba973c4a6d2139b4f79da8bbbb43047747d2e4fa94ab7aab67cea35b5081e69da3fd2a97649d979d3789d0e04beb04f8b7df4b91b1b8e7b09e3889c797fd2f5274ebafec4494bc7e13641f8f46e495759b0f720cc00f2f3095dac5765914b7aa8eea4132c8e19883840e2a6441a8fb5398d1b39c8eab355e1839aa63ea91614375d8beb385ee3a591b03dbac96aca68d3e055d7d672ba69d325be14e3ac72192b924ae19656024a7515a3377be7961ab62bfd882d399ce9c408938a05c4a5a43539ec3e2fec3005203a30d65bafc0aefd29f32a282d4af358068d316c9f54653f63cbeaf1edcfdaf7cefe90d10f60ce608978c58a68d9f6c2ac475593629c8d9775759540069012f3b9ad7976968e28bb7f6329452aa57aee168d6461d0a89175002797db2d18f2278a4aadc65a4a60e9d3e50a932624b26c78b5da6554a2801e8aff0676bd4678fda232c34f98e93bb03c41ac476d7f849f2d75fd9ee86045177b3797454995afc14dd6ec156c6f09cee911ea2111d881213b296a36271c2c4f106898b857b45955aca170403a23bd024849e397a18bcaee5434d3d93c6de0ec643759c15fb93557dd195bc6f1122f4cf3f89a50dbb508df768d5e4fa5e75a7a8d2f5c8b537c6e49363f765f9c8bc379fee9224be9c2d7e025bec6e7f8f89ec4c829da343705cf2f93d371999dd3126d201fff411a701ee0c8212f47179eefc405c2c693d2778355d2f2cec6b0dbeb989366cceb8c35cbaabeeac4a7c8042f4daa710e1c9d79bc401d3d5c42e26bccf49151869676fa59c350196d2c6f5bc1a7f64ecfc67895adb5b793d4beac037172ba7034c71eae9af1b90cebd4fb469cbc199b938ddc3c75ba16fc8d94521cfbce960c247ca06c31d3ad118456fcd2c72741d91fe436ff28a8ed2ff0c3f904d6f650afed39391d3702d408cfbec05fa8d70fd373c2b0da0ee40b59f885fee69aa80bc1b9291c4313b86faf91872a1d1b8e67ace089b13879b64829ee56c6e2d0af41d6e79ce274992055922e70ffdca7b9c65f7db35441440ea479ca3a79c9393996322743f53eadeae7057b9f707ced8b063fe24d780c1e99502c93268e8f3db0f58c66128a1b848f07c076a4429c78a01b00c2710802cd804b598326a1f05b2510ee65b2465d0e304e66732c138195c11460854c0166c5e0eb38de4265d8274a3057c82d6f4b652cd46e3b5b798e56934263cf384e32fd9b9852708917dca63a544986ac84fa4b726c5f05b7f2d426059a2c4d06e92532c63c367dba9af274d6cb8865a8d4e37b222069428570545cb0aa06fc791bc76bcbc5f20f94ac91c9bcbad6b933c037f4861cdb47dfd2b324e772be089fb9752c7589a933398b63fd40cea462e3889c69714721d0eeb12466cf517a39ae9689d4436dc4d04fc8317e4d4687f80d191d4e8e86bd888a20937dbcfb32cb718957f762a7d50d56876fb0376474806da016c8f227bf9d2662f458529e3d27f04241bd15b8638ed2e464c7095676f214e19c14b824e7e67e5f91736b57df588bec6abe6e00b19fd8cb66eb4e936efbdc605b4d9a1646065a5a4769b52bb1194c3b13a32d5a7d41207d43e4a4d65783022b79a8af07a5523037ff88908b383e19c0590a282ec65272cdfccf61fd168421b0ebf0eb383ed56e8b028b8b656a87fcc7762d9e46bf1ce1a1a97c1afa3d09a1df934fc40e59a2b6a56308c681173591b9ac76de6cb72e385e93d101c0c340c5f721f515a852a3f127c562be50ec1adfe20b7c8e3fe2637c8a6ff0193ec227f8357e833fe0f7f7a4519f9b13fe3c7cc273c73dc6619a15abcc8d2d9ce19509216b294958e3d2f513c3cbae4e39758c81d312af0837e7fab2abb8127dadf0f50e3af7965c87e85c8daf6d0aeff6fe14de2dcef0e52085f77c80c2cbf0739fc22b96c90539c71f7bf640b603d1452b089b9efbded2630596988d08317ecdbec39f64a21c14b28ce3e46618788e36cf26172eb09ceb4b193a019c494707be560f9f911b13210e1f911ba5e6c3a7647466dc0d33b678a0c62927714c8ec43577dab3ff5ebabe844bec22f4b2b8a6d11c43cc9313f0e47bed32462a2a1bb0466fe42bcba1ec57c0d914dfe28f9fc4d4dc62e971a1da4e5fe382e9e0ce0b01951c528fa66f5a4d2377ef93d1012e902fece9ac8a15ec5d5afd1687cd7bd3136785a4e56dca88d812abaa2cb1b1bd55856a9f74d6ab8af6732d4bd362076d9f8c4e061712390e6f1d66efdb29523c3a09c2861ae8f4faf68f6950ab7d8b10c227c0087c209d7c452d56b2a9ad550b425a392da41f8720e35ff55c999778414b2387c289b40d37579ebbef8da722e433b4f7d344d67cfd3d49d8767b2880fa3e085173970a98bd0f01f27dc869100fdc75824aeeafab38768a99993dc41fe6930f3e00d0a6d5a67e967a496b1f24217b1cbe19877c7682b2ec4afae61796ad87a9061762f032ad76dfa495ba45a5de7ef016bdfbfa7c6faecff7def569a25159eb738829c2a3dc0016d8b8cac4c7321ba3723d77b0ed749d34a49a56212f9bd4b96791db4be97c6509d4749452733b8b7a4e809944a6e1c097f62bb90bd59b051965712c6337e67d5be09ec77933844b1a7c4d94d14cb28ce3bce7c3b0744bc4b52fb8e8cb38bef45c064684e4bdb845c0988c0829f12819ad12af7db4dd5e83e344c58be5ed297b61bf9491f4b7db8501ec17f81b006d322ae182963c4f89c4b8bd8ef381d85bdb6deec6dbda009d10e496f25d21b3722f6496382f07dae307f1fa76a37e2717a8952759507ec1d87012113d87987090576457b50b516d62b65aab8e0139d4c452b14cde8f797dabd4d3b343fc35c6dfcc113e57e49d91cfe26c9a38544b13a06c9acef478f8ce66f446c6bd5084fe39c93449f2918c3243ab6cb7a343942ee378a922cf8d6ea7c939914fa2ea214a93e3fef93416b5a7f7a4a98ead1b3b7840ac10880e757500a33fb5467f6a468ff08d86dc0df9d8a3a29aa944c2667a5654307fe37b8e2ede6bac82711db4a96cf2fc2f3775d8621d44acfc84f322c8581d582cf77d84460c5453ddf1fc271ccf5101a95947d5709cafe406395fbd0f73e57bce467e88bfc2f89f7384d7d3e44cc7d7c4470ebb7462b13301966340fc70e68a1f6e8cf8c126fc8e862ca4d62d9a23c1b07c39d7ccc76bf25e732a373e0372835f0b8a414ef84bf9c597a909d6032ec137c0e1fc53b5f75527fc31cdee42116f048ab01bf8676a6c34468758e25178f1b57ef1a16bd9466471acb1588898f9d08225836aeb9bb4434a4082b834c84d16e4ce83b9851defd5a120273a388be1552aa4c3704224c7ce1ae5095d42fea98a35765843ab58ed772df0b515330c4d682f629751e1146e54a7600a2abaeb7e83b8063bde0b94a8bcf77c7b6c64473fd51c8d525682ab8521b273ec79e4031dda2711ef88e7e086de72f97cb9565a0c202d43a006588678aa3641b67a5c6eaf8613ae6748cf61a234716b7f09aee7104d7850e5db509e44f28e88f62be3af5e235c9948315ae0d4cba467a7140cb4adc29cf79b477d92dcd3290ec470359607635e49c39bc48df2642aecef633ae0ccf58c79eebab47344736ad88a733ac89aeeeec56a23dca1e3b94ffb2c7ae7144fc39c6bdf47e0679bbd097adc0568972ea4f7b8549fea8dbe310569d2993f4f67f39421932d80cf912b8f38ecb92ff832901da64338c09448f1c6a48ae3ca5bf520f9030740d33f8ed7fb10a983ddc03ca9b707654a0fcc48bd8b579229ac4c643d8f9111a34f38a964544d13d2bfc5795696e759fede9168d7bba94c4ffca3894edeb641d7112f1cc37d3786e9ce9b28f413b8734c5c6fe7ee9129eb6c53d42e027b5736091806cdea3909174330f5f02b954db04338be2d5b203ec59067bdb5d810bec9678e6b4163c9bd592c933a8eeb04e9dd5c38a0611e68704e0a98fdb4b080005cc3e4d3d743331b6efca70e2a79188ef97c3857ec28312115c50d06e9357c1f309ad5bdf0077fdec2089ada0307da61c3a284557c4f73210b515e16ecfd5e7e99150c81d5918c794d66f35ec0ce6193a9decac631d52102db3e6286311aa4ecaa9ee4bb9e91842a0e380bf720d88fe9aeecce34b803d13c8d11592d93e8b8fb5b5e56bdcec335779c05efd4282aa449a88b9303325cc70eb4776feae83b4316dcda8fd5b9ddc0ddd937680384161217f64982706ccdc1a0ab608d26f9ac8c8c12ea873db474242e6d8ed73b18f5bed62877fc707658475da12447c821ba71491abc24b3395686dc0396046b875e768f64b14c9626ded7212164e970043939c00bc13a5dfb71a2c2ee1b6cb73094df2de66446ccc906b484fbe4107342f16a50fdbe0a6add0658e095cb0253c3026f5a8b94285b5f3507699f24e3c80698f84ce367570f6d6f401d3a10af7139487822bc0ce253db1a822313f96a4a5dd6d515ee71630a81d25e3c2e9c3f20872a4a5a1ec78b38be3642a06487529ea24d608882d83011e1d49820ab5250e7adfa0c4fb54b51257308ea21b548eccf83b69d7cc236a498e11c677f83518aadeb5ddf5fd7bbc6cd80a69775061b8ea69791c65870f8b67c94309ce43d14601b0aad119a2619e97c727b367139641f21b6c590b1b7c6991d5af81aa19413cf88c879dfed135f8d2257395992e5dda1fa50179b0fc2153b71ca7a5ebcc1001e2eb3f797b8bc3bd9bbbbf84927694aef7236efee419b3ad1d9948df87db872bac3205cd7b59599ea933f113e4e935f261b5f2f2a413fd7c59dc2b189e65a7574bddaf1bb32d1cd2191936d0622ae728f3bc3990f55c3408c15772548fc2c8e3b11be93a0c448f975aa87d121241774288362bbed595814a13c277623bcbeddd85586a9899a660bcdf656d65d55fbec6d3ecd9dec32162fcc5bb4ddf647a114376bb4d935da83b6ed2dec4070dcfeb60ee776a64e84b95ddcb72d35139421615285c409557924edbc53b51378570573d4520f0f5cbaeb503e163c3a447e50f8aa53ef171e407cf4322467f482538c0e51cf2125f1ce56df221dd768c32ca1d142b0e146a2e33cec600447b40da792ad3497ddd9b5d782f651e70502ddf4857dfc79e72933107aa4bbb37a1f0fb020c361f5efcb07d6b83246ce21c14ea1e9df229ce3a397a02431c60dfaa4e7dbed885af645b288496abbd0a63282bae31dfb5fdd43c7c83dc16025ae43cc023681af7a99590d97a39210415a3b63b302ce365a325cda017d9616de5d9160bc38bc204beb945d93a55148dd92a5a3fabfe8eced6eb567cd2d3e17548105648b69e9c714c74b39955bfc916c5a7c4cf221f6a744f8d47d6b53462588ad4e656337241f208f4e712f1af935de74696cd3511e70346b119a7c048b350d079bbeca1d07367ca374e01fa561831d11e51ae15b9fe29ae4c3627eef165fe3a5bc3dcf042b77444607f8e47efc5c7ea7f7f4df40441fc9d08f54e7c532587fed192ee1ec7b92e4dbed219a1e0f327fc79fc2fc1d0f317f1f2dfcbe08da6475833fc44b88816c58c4d422dd0fd362870db643318c083907038a00cfe806702ff102af6c97838bed562bb98dd545e38fb19184b9bc251da1e37a07d6d1c12b0a79ed19ce0d6e7f34b9c31c2f59e302af82fa8cb5290f48907abc8ec0c926dca3318131d196d414ef30fe974a5b01740d2c08eda22b20bcf2ec5fcf112772e2130936b13a3b043c9224b3b68ef2082b7d43d66e8d5a7b0667717c725f863b7cfe0708f93564b00cac7717a4c4e12a52ea7219c3040364897c0d8a08bc04523fc4dc1f6db7c9ffc2016bf3418e55bc50b62bcba20c03dae58b43f80c640ff835b9b518e013819bffcad0b5a6edf55cfa0d069c3fa4bdc3a74294f6a5c2beefd47d3216752a050aa7a9f383f7bdd2b2b24c981b08c00a1db58bbe6ffbc1313d1a75a055da5156ad1fa9b467b67d97f6f9be2a673d91c108599a109579e8b75b4bd33a9b7bea54ecb88f609bfcf30cc3a128a41dc2ee069bcddb5e68c1a0454a90f5c2956f81c1304f1842ae7b3a28490431ea85b3d653eb07b6f50decf81daa4f0a74aeff15bbc7578148643e89b743471dc4f59a799408beee64fbaabd69bf0802167a41cbd420c469eaa29b31049b44115d9a26e1c15879eddf1401d12296bc3e3a7d4fdfa3c40b8f90866226f8e0cf2f69fefe99ca6bbf33e94ec7695a3aa770c071c0cde15732396e5f1f641b640c1884bbd6382173a0ca8df0a0331e86625bc009e17853a8e6d20a8eb318c69be28a9e34e913017d56dd24e8c1e1813162ea87a3dce14f8bac23d2d3a1f1cebb3ebfa48b754945e74985fad1ff3c8395becc3338c301819fdddbf005d3cd7ea24dda75001050548d12fa9d533ae6c5157dc0b445e50474a6da38b05fb35a73d43ac56423ca53b64fb1aa900e9817baa14894d2f9f0f383090f03222c9d010309bdfcdfc963d815203ce2eee1486a14c7d6a6606377c37c6f7fadb6ac356abfba05e1d6b1124b6a2bafa374ed514ae74a49178ae669c10a585a48286b6f1f586da4f32bdc0c47d591c801823ed281fc0a5e48c8403cc84f093d8f6b5c58784f466decec0a47b6028da249e17a6d5350a9a944e139d8678eea38ced5e992d1296f6a011513e14f324932e46b1abd3a3d7d73f6f3dbe357bf4538609ed48b9912540ef650933b469541eebea379fdf6f1eba357cf5ebe7976fae2de83b2e33d0c89308b65128adfa2e3e631128a4b10fa621a2a4c6cc5771aaa6185181fd734afeac5a9a9f3465cc4991cb52d97d0269432faaffa4b6a90c1f33bdd9fc7dd83f68496dc046bf1fdd345b8fed17eac1be52bad8b5bd42e0b9695a5189f1c6d05044037149f20b877ce15b06077f696d271204d18cee61325beec7658dd25af7737dac9db378fec4d7677fa52ec4dde0ddce2bddc1d3bdfa93ae3f39048bbd60260bf7a3d07732d6dfd51a8d7353820f763d2e6a189d95e16f7726c6dc85ac152acc3bad33ac9b89777a407cc92069bbdf9ca5d1b09ff1e81d90dbba334a1e62fa14940bec1328ebdf52f77a0babbe0223970ebd4ae682d88e5e061a5e2361b0edcb3a7519f8cb1a714407a6127b583b277f5c32df41a84b420a2ccc10858fb87020dec8c82f56c3109a13367c4ca8ad154ea195505333d863389842e0a165c469b51516738102a900ea685d763d7a670823a3823d1c3f157e3c3081fdd157d8f9b0068267a251028267e5c674f77a46c6abb24659df95ce89d1fedcea896658ce2da8ac99777f1c2ea38ae75bcbea746f2ff8496d9ad1b8ee00062114058304673fea67a42afdf545529a392054209da41fdb65b19d2cf9d34c429ebb2445c130a915f9fd06583affaf936f0ad8a5e09e1cac427a29b7315d11030fd3998f724e710388f5eadf86d82101e9d6fb72316c807f5d144e63b855fc5384b42c2838f925dd326c15a87b3dd2696f1f013cb8de2a3141c2874cb7401c30cccdda47b06c31c2c8726c626859c6a31d9b98d4444cd4b9376450cf426d13ccfa268c47656be26b078b421f976db7c7f30182a70e506f0cb7168475e76b1ecf5aa906bdcc471989b30f2aff08846872dd689a82ce721ef797c5eb0452f13a4c53cf72aa8907cd6ef5e15cb44d57b0e541d3028ddf9d66a261c4a192255c571f0dd4dc116d50d8ae344fe1a9f9d3d7a79fafcf9e9d9d1f367c72fde9c9d116b806ad793337cebe69b31271f4e08b945f862a8826ee302f5c23e3a311f998e4c0eacac39a7e9a2179afcaa0da6adf1634076cba8fc9a42a944c547bec152d0dbccc5cbeee6b5be007e34947379f00b4c05ce183e5dbe018cefca665c49bd88005e52effeb07c21881ddca54546dfa4825e2880695f91b01156df116c07d0fef81478fd614015c84eb96be6bb10d75dc9d74383fbb350fb2308b04088cf1d1093b5ef0b32591b6036342859a52f6b0ae66876e4f8fdb686ecc303967ad92224390f07b036763ca2cb9775f5e156e9083bebf57ef33a61cf5feb41b712e80468bf9dc68676635d6ddff03f00c7802697073a0f4c7177ffdd6cfeae21083eecdedd8bca7f4bd7676792e1f8b1aade3fad6a4d17f6a5ab0bf546543c3af7d33a9d9d29939d57d9cd8e8c0a9e15afbf97fd19dcc32bc5be7eb4a8db2e835bf134d988fed2ae67a0c6d28e30c37d422b1d20c0b0a2bc529b0cc3f7513be0eeb24ebdcb1b5b7675b6969a7a7007f99f53926ce402a69b1637d0f4e60f23bab12131a581ecd1469fa11c7b442b9a0fbcab01d7efc869a305f6edd7825f9eda7ce4bae4a251c986d10fbcce729e8c0e80674581b4cc7fce5bc98fc7b3c35b69d7f46c7fa7d46f53e6fa1d6cd9cd3811600b0775c552477ccf218bdde025bf0e13b9fedc86bdb486667a1fd7bb6e29b0ad33539d7ef2f2b8400cf0cf7f16887ccaefb5baee9c418cd5db8041effc216180f16b72143921a941b0f46e0f85d61ff25160a186871c827170c8216146b0f493877c2fafc0a10b60dae74806773a1d5a7667380a49eda4dcf4c5ac115a9f426b7a0b30d486aadb6b633089a8af29df996d7377ea4ec71e95ffb59c9d565b76f59e338b6d8d7d676a4977807ef6d5103101601d1ae34abcd434439f78c25d252b23a35dac72d4f2f139396ab12fdb8cd60ddd6b785de43c9ab0f122e138caa2405ec3bc4558bd3f0fbdcf8cf898250708dc4a5852235c906a9c8df39a66bcb3be105b78628497b9932457263903a9e265512e6acaf4e9ef1a3a2e2990b5c5f8655d5d170b5ae38d740de72d66a8354d675dd3867b5a377a2028294067ae7d54f62888f8b825c7935ed7ffe7a85a978b3d56f1bd65c1167bda6c76af10ab44f794a9c95e55efadb2a6912ed759b397edadea6a35defbb5ce5650b1ae946376c528e3508bed7df768559565a5a7f23dd6ed8897f29d0ccfb857b086672ca7e2c3eb42b6de8cff4f4761b77f61850b6b05bff80a9630f9e6a1b54ec580b533c59b9266d710f7b7952ae20de84d826666328f22d6ea9240a5e8b3685f8a615bac3d7e436dad1310f7ea983c387ac7deb108ed47ef58d46263a8d485ed49430a852e531fd3c2df9a94499444786da94f9fd81de1bd08e108450248300a935e0947e25541dc443a963cb7da6eebed563a97818c6eba4e661caf9319c3f51ce10a177368242d3a20dd31053d469881402b208a57a201c8bc045976ba519afdb21fa57bd13edb2f93688fec45b846f0534cbd8251a016db098242cbd038e9ca508b21cf5870a05959648d0d672ba59437c44118ae9359994411e6588c1dc9c1c362d5f6c2e8096870b6f891ea29bc2dc5802434cc16d5b8fbf5aaa6d922b451c7e3b1deaa066ebddd805afc8c950533574710344e423a0091d54c3d0c0b18032e93a8627b11e662e24c4ebcd613d7fddeb18b6049586f2835091f82fb2d57a405b97b91563c70131327b87062ccfb301b5d4dcec7faa8db9e12c0fb8500b1dce93b91ced3b2caee51cd4a59968694353a188bf9eebcacf2f7533b991bc3d1821a7918986e4ca3288df6c4c9fed7ebd31763e9c3572c6f13865a6c27a2dd31b669c4eb358dd26899950d8d5afc625d96de4766778a6b366af1315b5fdd3de7e7453308996816ed4b5c58aea9427ffbd13cd2311706bfdbc8ef20939df9ae35dff511c5aee3d8650c0ef4f45ff63954a8bb432dddf66ab1b8991690d774b063098d813a0218f28c4810bca8985884e11665d551d4e2d7f925bdcaee3886d69962f6f5243a68ec83df406b62aa5c9e852661489f792765e1408f6684a60f0d71316431dcaccc6aaf812cc4cbcae188da115688248008d5d8b4387f67c33da404f67acb2c57d8d06a5a2022b9c36ce88829884ba24ca2e26a25e9c50610b44027b1401b12f348c855dde86057de7f60dd2eabf5ed3b74d92697094353b141dfb1082f13188b205990f8832294eacdcbac2d8be4aad4bd9b19e1676cb596a7effee3fd14fa4090268a441080941482198181d833bd369fb6a4de05d75f43b3e66221cdbdd62475d7f55bd6dfe39fd62df7cfd55a34e9f458c7311832a8c80a5301887db979b6029f4791198f40b67f693812c7dae3a16c7d350c0083ddef7146ef71346147fd99f3798fc55cadf9f03c0c76ffb3274ff0dd409968cac38c68efbfa2fdbf70f8f6042d622d778b14223ffec0296bfe321ea7a299c5de4e74dea1e270a7a1e6ee898e2d6cbc7b427f1a15ab11fd598ceca2977b8ef1ceeda80675278ae930cc9febb9875e54c77f01cb1824f3e74614c0307248bb108d8f18fef665d8811cda892bcf519f07a4b5e2be1a5b7437a60917ad8863de7652a1b5a31aa653bacbebb145e3dfab82257cbb8d6015ba761abb9e5c3d6a566ff38e45fb02cd508566f6a377ac8d9c064a3f84db940a4cc5fa5d2dddae041fb14fc7355d95594e93cfdfb1cf2f443782bde83e5a751f3d3884c1156c413f9c2e13091153f1d26d9d8e9bea8a262bf457c4494b4b9c7428a549070817e2e9e04b8473c292af10ce084bbe41784d58f2edd708378425fffc16e192b0e4cb03274525b5cc1d7962b99ad1710e01f340a38399b2ec9fd4e39a2e7fccd8a2a475433605a757cdcbac1e1000d463abc22bba24b46d71ad72991c5dd2fcfd23d8c7cf38bd7ac67e29e8cdaaaa39191de27a4c3fac20ddf20bfa8177b5643054310ab6a0b528114c4540c1518f418c07a133e1e6cb4a904f328e73c2c7ac523a499c917a5c3447200115edbd8296e92241329353dec5c45b8f3394509c61266039f8991e5df7f284b2b5f89bd463d0d32a73431972534bb120137523f3491052cadeab9e6c36c39b75f98a2e53ea01b7c50d2e51eb0027e852a90601d2e4cc4016221549e3a05c575127982e4485c6ec738abe270738231bf9b5b6e46e047814dce5d88eff5867a5b6332ac5eb0a618ab0b2215aa4d77000ec6f9ea857085f8170bf7959d34591679ca6b949a36a7fa0005f27146f2e61631e95851fd1567f262b88d948f99b32488189a51c5f558b6259d0ba493365645cb41644fb0b1adc78127416648db16909361046b09c8ff371932de933765dbda7067472c55fd01b6b5fd59862cbb714a2f4fe3fecbd0b73db38b23ffa5524de590db18218c9790e1544e538ce8ccf24714eecccec1e45eba529c8e64602b42064c7b1783efb2d341e041f729cd9f957fd6fd5addd8945bc9f8d46a3fbd7656774c37467a0bdf5a8d675709fea5f0bbeb2ca7563ede984f57ae18eac9c95438b1996087b58c24180bb43546b9e4e5bd72e5299ca3d0fce0fef5121d515ea1878433d663aaad76bb4a36cc6fb24af298e39a7a480baace988da2c3b46466d1cdd901ccac20999cef046fd9393215e123ace9f2fad47d3dc7a345d90e5349fe135b90c17b6d9a862c1be4692acf146bfc3ae91467dc816a188d284958b310f8d51ccbc3ea51cb0566c71f35ecf943537e82e89734aea8d4fa24f66cdad774708bb02ec387a53231b5393e18d37b8bfd29b57fcba05da94d0e833bd39e073781d928490343a8ff63f7c38fefdece3fbedb61af2eaf8f777e8168c81afb4cc35d1c0d696a25d50593d281a454e06a378e4ade17a4f182a762e32d30b505af27af671bdfbe0d1b93eae316ba10863d779d3c8c377a7871fc00941bd87581f076cbbf5690853a74c63ff574e174c51dc42f018a831d67a2a2b3d836560fc1e34fba7db43274110d34826e2824a2bb8f58ce7efd8b15ef1182a1e6be7bdd69588e7283151b524785d5fd772d7565c207c43e6e1029744d60c8a3dac54fab8b4a230ad2ae326cda07815de60593b9d2a0d88d7b87252c637e6f858145814ae21290c3496115f286ebfed71bac0b2a23ea088ff0e5c084d97f4eb6e92e7efdc4552b5002e8dc29e1d990956bc923b50d2729cb389515bf199aa38b3c0849a5dd89030a98ebbe2d2c2044f834a6830436ef07928a224bc2df006dfba56c612d797a5d689ab87e20a0df1d3d80de96dc55af4c735f6c8bb1fa9697463a9fb49fc256ac72d4ebdbec018c70c5739b0d88ca263907d0e0d97a31bd7461b34965075eadd73f6efd972f981a634bba2efd58cb7a028c025a45cafd67ee09b6cf6d0f98104cd8ad0df227e8105d264a86b0d861acea82cc9b1c7ae651976f4e95536d70662bb349360bf5f26cb25bf3ee0ab7522d4941aa7887add537c9bb174b999d3781ac0300738b073e5784613567ecf0a6ba35cd22ab7c4ad15d07d46afd70b8ddaeb3ecb561abb43242bda6a5a93a7822f977e3192ab824a90d26f5f896a63b9abc826b1e8aa4b6a397226e7292ff362e9accf8187f712ef60e32145fb0d0d3513d6092a2a3115eebae5d1edb6dbc081d189ec7548bb7980a5a955792afbd1fae663a5d307be58e4549ef2353074faeb179a5d5c4a9cb51501c6b765a684646efcd6784332a359638a58b8661e95a5bc4fe673701983d76411adf597ca7e49449ff75dd04b2e255f0d523c2762b01ea4e3cb1724e96f262dad2adb402efb7cb089e7cf89c3f7de99743ee0a8286acba80d7b07a40055d57e6f1efd2d6e994342e05ac0bc744e4eb1e3ac1edf93468d0df8895dc4de4e1df35eafc619b01a834175333232d798fd09d14b42f47a0158b84c4448916108c63572583de393da199f9576a850c7a6b6468fd4a532cc10ce89dc6e37cf87dbed55d8d81b75d610e10d66555e4375d3f3ffe7f1acab30ab27ae9189fa8ed9c14b3418d4bbb6154087f8dc28b5a0279db6056815ce20dcef7455b86090fec75598697f286b260f77d6828a1de30045dd8544b4ab819596ed1a2fa2a6ba7ad947565438b6d74a468663f6dcca34c7fd3e43e580de4180e994cdb02bb06335f806a346579bd4a739ef1754aaa37523e9fc44de2c691bf140c05e9624cb6114fb142b5e87b44ac3102eb3c4ebd6c9a8d1fbeafd3f5b84611bfda9af076b6dd42a8643bd5e68f20f466a76f59df21beb6f30eaf520b51b66379be7a85c81bbd731aecd9ddd98584b9a6ab4b775088ccaeb8ea3919624b7f570fd73b8bf0279e7386cf149fd0e5656ce595983a1bb7080778728feae5ce032ae3a486d93bbdbc6bf2a153134be7e6cf47ada48f41a060832c0dc8136f1095fd1c32f592e33760134b6cec356ea6869894736ef92a759de6457427b4dabd67eaf26dfc374aa6d03c0eb448bd4d4274cb4499524a6a6b84afb41100946e5eb65a2c11c9328e9079103010b54b41673e88bcdadcf59c4dd61816511f2e8c0de1a3ca559ef0da6630512c3789d889c1e3119d2285f66290d8778b087f068587d94f1c005cd6559985fee9ea0e8b95ab959feda0e8840c812704e8663fe9c5902cead442f236cca0184528414679883c0d32902978d98dfab11989b90ca95c6171e7bcde368c281c5891bed9eb0a62986f73c260ccb57a098954dbcaa3da239b999b9081a21b0571143134dbfe36e571d55dea0af2c0216d0f61acb38f29848a1ae55eeb96f30d2ce5fec37f2daa2d9429ce11427442361d84ce33957d5a46483bb57219d2624e424e933f43cccc8104dd298bf482759cc6738f1ce533a4d660538ff0a932e2102f92f33ffc99b5dfe0d25ff65199fee78f3b3f1f3b6f875f34df011bc09466a59c09be050bf09fa7ae7d5e7da45398bce896029564a088ba86620d59d684344444386a7814b12e0a04c10ccfc278ecafb15c56d02a12c44a1c41c6141177102eede542372b20983cb518093e897c3fd5747ef7e4678494215b8570954210ffd10841790f75125d95ae77ddcc8fba49277bc0903d03dfdf7864baaa25ebe393ef8f5bf3f1e9f1e42fa94cf21f8e0f8950e580bf77d0669211440a355f89bfd97876f2088ebefa39353f8dc949fd5f5856ea93affb99039a987bbd3c0bc2a99110ebd7302552df638cba5d8a4920b42318dcece20eeec8c7cd3b2e17ecbeaa7917e6bdefb49bf35efe9a7e6bda76a1ae0257a4d58f814e14b55d413f092644e95b5474150b8317d79cf854c96085f91dbf3e586ae45c6a40e3b706ba6c1321ac2349533f07300be3c4ab80e15eee8873341b98c6e1473badaf520ee0bbdbb7043a051b25e2fb5d4083b5d29f73cee243e5ae67c99e46f01a6173c9362d9220bbe4bda6b52cfb7db5697c616d26abbed7aa77a59a77e42ae0eaacf81d93b93e15921de6cd43b24775078031ec494c8994c324685e5422b851a5b2a67b504299d2807b795a3469bb2f9816a694b89a8cec3fa033e2c7085dd3c30dd850408cfcd957ac372a95874cd71bde3669c760a64db85973e37e7b7103c84d9455b15c4b9e0d6c1d2d1eae837885ba15710c2377766c16dd5a06ff7f90e19f447b6aa4ffcee3e87f0d6b8d1591c03b72fdff139dd3d8dd5ce985e37e6a175f934795ebb396a075030cfae02541a1994a39ccce7611ebd3ffe70baff468d2ffdd67062afffc656add76bc967e2a25da40c1c44fa5d6c9f1dbf8b1b97e64c538d93cdb9145431bfdc0d8da651f513180640dfcf5a4841db4c3418f90530f2ba558a8b371d041d4c72d560ebdd668e5b8194ec444ddc8c9df3b9f12bab6e0069eb0d400396d825686f7a409fe77343a3299651be5e6632d4aadd773169178689bad87514786ece7ddd28155c25febcaa2255f6be45418a9794ce2e64a76bb4c8d8fcd5f15bb565d4fdbb28308f56c9cdb9591640cd2a8d753228da609425093894ebc39daa1bfd92338f37abb164b4bee4711e1dff76f8e1cdfedfcf0e8edf9d1ebe3b455826e7208e898705dc3daa8b2d5f272cf0cb6d9450607070cccdbb0e08e9d9f19ab28c5d28aec27cd1b9e229c0ac9de72a6ae1bee85cf1171ae01c549c5f6d8cede1652558d5bf8b2f4da28393935397d46b711e5f62ce0e99a48aa38885fda0f378a37e7fc9d4bd3b5e9adf741e2f1c7ef3ba00a10f37cf8a2f93f4f35cf0f55bbec9e90eb508eee9ad9d9bf4efcdc880c3e7e38dccb3b9567282dee38cc88832edfe87a79b1c14dcccd08c8583115e7b7218a45d2c66bd1e8fce55bf20e31153251f5f51b14c6e422700aa6654a3ee3a004f7cb67bd6aa149ad6e85a758a7774844559ae665b7197b60be0154a2b1a00e8295f53762293f4b3d347e32063f722f4ed7f836a320ddf20bab6ed2a80ee26320f13d4eb756594e527c98ac2d995a002a09945afd7cdef18dae6a8c0085746c58c4765eeecfdba49187abd6e33b06caa1d22d4ae45a241dd8e562b3acf142f28f83ab9483409c477ac01af23bb5579fc359b26ec304f93b54aaea74f78ab9146d797597a49085946872707fbef0f7b3dd6eb85ade328b0b9c854fb024d2af9ebc32b2a348188edea2930ff4e46db3e47ea0959265f9d90d0f1d4653d0deada54c8b08c35ab686700086c6e1871d0d030ab7d43f8248d2c7f0ad8268677a8137c144f676338fd2fb385c195f7d2580a13227d9a2df182284aeea82e0ec325b92dd0b4a4c3c7ef0fdfcd08c74b2fece8dd9ba3778733d215788930435a05a746314b72f9b3e09b35be55bc7a22e2ee1097f47e811d17196bd6c3a953b5297488362d0ab7ea0b5cba8f16937a8b56151d93723ad755760b972772335159d31a01f9fe0397203da986d3e67a27290e5a85dec962ef54f3685e72bc55bf6b996eb7767d15df7795a1ae07dd46af26f54ec1be0e51dca5d57eff8743d172dbd85173b5901d84ec6e91f83715394ae9420b59d6318e794dfce756f0e55f19896eb3889288b71782761f5b06c90bb4a5b8088369b2917ca1ba3f0b90a63edfca21937338476781558e9413194119a1d650d7625f1b54d457530bf9f9a6c69ae56c0e2a9a6b557e47d1c7cb24b7658288d7d0cba5e2089aecdea212ecb37bbcd7db34e8c55d3cdf027fa63771707666db1438a66e59ecb85319c926abb3d125597db97ff0ebab0fc7efb1c4ccbf487a1c954f141bfc62c96cfb57b716566a32d4f7278490bd48f9d850b54de44f975b82fafa7da88e5ee7b22580351060af8d15f606778708df5dc24af565ceaf596b29d003640fd592a33316729add9300d89b2d4230bf61b03d295cf4521a323c524c837e0b7831749e93acd3654d1b433416addc57b903e7f3f6be8b5d1d2ff453c51d464fa646c70294d4c15be745e96abc72216eca83aa4778fd91bd466d5bb66439bce372c0bc5aef5c01f5f1dcb91ca8d631972516b279b1de486e061d42775f43bc4cdf3b59772ed46feca1eaf1e7cdd09d15df677de35de57ae1de22d9b50cb4c0aaba065a253566289b0fae6e0e14cf56a1bef16d811bac3c70762d23a5c2fd9951df5ebfd4a726dc7177841573ad429af43b7e38f483abe202ec06440b76cbc50b50fad5e5d8a620506698fa5745fb683833b2a6f71b414b7953f379a4719b14f619e682cae36ba6468f0a79f3cad84b72916fb7adc625a4e250449dd6b70516643816cfa57d5a16fd3e62533915b3d9b7aa510d9c8af2e54ddd82c883bf4cf3f9bffe327b703106d7f9ab44d64546dd9b9022bf59d319d61a4aee75c3b686f5fb48eaed9c842e76ca3c856f698c473a012a1829759e0429edca33678d8b53a25161428a9cd925c7b516067ff90b004a9b7b57f09700d4ad5e38f7f51d3a364e7da976e71bfc250fac435f538198b27e7f86c63a7aeea2df6d56e754d4a2ff15c4a5e7fb4e0d58c624354e5365896072908974b34cc42c28cc368b9db96b81f08688299b8dd9f36cac7ef6fb6c86aec20dda6ebb5fc30d9aa47d127482fe26363f92b0bceca4b0b1e95ad0b4c2addb27f556c1aaa260fa4c62fc95c99b7156ea8f5533fa7eefebafc2be9b00db0aa8bcfd35ac304a9bddd1b859925a73dc1cda0009e7b7ad8e1127d01878ba947aa9262967395f9a8850a0d80650930973d21d5a1900dbd148ddca0ca7e4b66a0c5d5ac1dee694b2783ac3b9bc59665f699c3b1bc4faee78411ef67aa150e3232fcbd53edd9b21dc4cfb08d2a67cc945ee257e384378aead7bf24b7efd4b369f534658acae50d19936eb0e85ba905f847e1204c57959ba239d045a83bc86ede9705d33f25b61b3a49b5cf2d511cbd7349526851f04bec76c2e5daf1e1cb24178190a4cb1adb7611cae058109e4005f488e5a4d824f5f46e7d3a09f9892a76c361dcefac12ae8d37e5be40822635ab11cf72dd0ab16e176abd06a6f40fe740d9ef06c87dd6fb595ecef5e2fec32ff297dbbad7c969c17f0a4a51685c90fd22cdbdb9b90a3ed36e444358c638110e685d6206a3c6b5f849e8a8a1d6a7fdf62ef37b0c53761e9252bf831e8d7e8972c49ed837f04dbe08707173808bcc01fc1eafdd38f7ed8a74fc1830bfc63f023ea073f06e3467b18b64feea8c816e1aabdd1415fe28001c5d54d9ddf91ee5c8377e98457ed09018c0beb3fa8809dab52bb832133cef5fca316b4c09b42ccdba2ec55c3b713900439a533455610700a1ae3d2db73e097aff590862b65c810c2c7216cd5b4840c58d13c4f2e68805e90e176eb45f840672ad2757f11ea4e0ec176d06846a995721dda75b7210cd022261a65087ec741cbb40553ab7c11f437fd6016e040add62c59ea793c0f59cbb07fa017875fd6de5d43727dcaea7731867020e805fdb2d67377d85ac82beddc757711f344525dc0b15780eabd560ec25f4910e033d21de103320d6e031c14c16c0c8834bd5e7846ba438898063898053384617c7abdf02b093a5ebfc3d6b1022836b761cf75995fe160fe66f7113ef4d3377afaf1f4a09ee1d8cfb080a061b79cdfedf60c9030accee1443c1f4e54a3267f6856627f05e8255b99fa18c027a9f1afc610cec9d9a4ca09638179c935668a6b4c0114c0f1aee9f364dcefa7e8249406fb2f4c119a64c69cd915e3e2405b3236f14139f8bcb91f39bae5110004840ffef169deffe101da6e1b256bfdcb02e1acd007004e708ae2b40a1e5e9e186b974ae233043e00f528f075881a3701d8fe82ce3729ad399f32c50db1ac4283bc20c35e6f88695f7a8475331c8ece3f4d3fcd3fcd272b438af508f647051ea2174f868e635307621838dc43d90f3e3140ff03dc1263b6adf14a208c4d47e509ab32cb6a523f5d11e6f82b3e40283e5029bff60f54601b544a300dfac09ded5c6b540319faeaba6e4a324da2529ce08ddadce1e69b371b89d57169b188a77c5620957892904d945339f157f3cf544a2a1e9cc09feaa26e26abc64361bd5e98103f654b49089f8402da14a6448d0607628193edd66e1c3bef1b6d1b8d9e0f276142ae345816c52618d430505c09198c10aa2d9bc1085a954d12abcea0827740e06b101b8bafa353e69bf35c8a700fc5eabb7fcf621ae5a0b83a34e585a73238b0cfd5f680e7e5ea2eb54b39198729a9312641d0e708b90c41384d065ff707ff7336b33f86839f667f45c10f0fd0244c496afb35c2964e0ef6104ebd36a63850f45c351d32dc93c729c342e090904afd63d028dbb23cce8b56aa71fd927610a07d21929b28cbe16f48514521dc0dbce57bbcfb58452dbba6f84e6845cfdac3290536abb5941b2f9de9436bba0bafb6d24caa8c3ff7e2bf828be260aaf54c3afa349aa972cf2a5dfdead5ddd449b1cf297e2d87bb6b51476b4b1dc78d1ca1cb0294cbe5d96ea9c3ffe60b1de91574ed35d606b60fd55903c6fb0eea58663bf0e5c3cf47c3493004a85093211c0d15ddf23f0b75053fdf5c2cb9a7aac4cc552143e055da3ca7dfbe3b7e757876f8eeb738580b3edfe8e6e3f71f5fbe393a38fbf8e14d1c04058a20d5abc3971f7f06842ccc08534cca7a4dc54192d310e16e3a6533942d427531d7331b069f3e9d077dd687bf38c80214499acb30432584d43a9b8f55d636e1b39646d9abb9772f1f572ff3c15ff2ce5fe671e72f790027084585062fa917ecf87715516077732309b6d746727bce97f3783ac27b7b339cc96499a5f1f421de7b38c3ea12259619a3f1f411de7b34c319bba222a7f1f429de7b3ac3d79799a4f1f4e153fcf0a719be10f4269efe34848ff365927e8ea70fedd746a57b041fe94dc2e2e9c3273613555f7bf0b54a2e2893493c7df818be059dc7d38723f87d43974b7e1d4f1f3e549f05b63766726be86c1ca89203ac77791ce80c0136c4a30c7077c338506dd69a7f71a0c621c07aef430c650106efce8169578035b7180782ce03184f4db8c825fc36d8ca640e5fef142dba723f8fc5475b6f9bef0ba3a65698f4aa0b64051f7a9d931bfd71b33ae7cb9602821c622a3b117294b55ec0b75eabe41c3ef4ae205fe143510e72083f61d39363f86daf05e41a3edf8b6c95c9ecaad58387a5bfdb6d1bcdde6e5b48f076db426f5560a33f3b54be4d3f5f6e160b2a080bf71eede9e7b2b7641afc975a11c16baaf6e3db440438d85f0bf87d13e0e0bf360cfe5517e6fdcd45808313ba0e70709cca0007eff855808357340d66a52ceca4c2cf36c8da65927b0c9b216e582a1255a14ee8d66ee925bf800d3d80eddca00a8abca889c1924c0f423014fd856f441e2284cdf7db8c6d24f5434e68cad95c85cc0caf12bbbbc31452a8224384dfeaafb79cc9cb10cdb09c79c2ea10e13b6812d2f4e4928a4c8285c3a3872abd91c83585365d09525d4f66e159fffac20889401dce8afb078331a25306f27ea9ffba4bbb16579e925659afde2a13fd270c36325baa895a6579b6b83112afc0d9b9bb09fe52b6d8a9e995c2d7c078c9e95c277947d07f81396ae73a93979da4b34896f94d0798d6008d59246892734628a6845976081ce2c8b221f5b787f24cf5a4d69e0c183031b5af90d34bda09b8c82e32962c03277dedac36b9ec9cd30e5f00146ac76ee01f417270daebd1e9e9ccc878c6ed55869240a23b2a6e1fcf7bb5a2ba79f4ccd92d134a7cea7cac60ca362b2ac07d477784af4526edef94b34576b131715a0255b152f110cbb0f67b67a6cebf990a742b09c58c880261ae6eec19198eb3e63b4fd6ef236ede799c683a9ba1b109ac9649276a3a63190af0892c6e6e2b3632dcbe94a4e89685a963951d2e9219999ccaf796b21c2f4289cb5ba11f4e11c2a7ce19ff9f359c6dc565340f2516aa46f3b25e997d728a2590bcf324fd5c59db72e7da967fdada76b3cfbcd9676a4ef50b62634ee125b13ea76286c6564e0d428e1d3ba4c35b1b1ea8862f935c7ebbc981c5e1d036092d0fb4dc2c9aacf28e24fda5c4ea6eddc01e8ed12ff2344b3f87a9b16af05f6dab29be608953543a3d6e5f7a6cc7d29368f7426158403c2b0ae45b07844f9fa29657e47bdb8e72cfb6f3b137edbc669e5bdeceb65b074461a0e3269210c2625135d7a56842c10e3806b936216c4a67dfb20774f58b8ad95df9386bddd7638139b92d70567be58663502fd1acb234493615334f60c6b4403ce48acb077362270ebcd38e4314df1a6e3d9c6dd7b9ca21aa988130607c4eff954740ffcd7da2719aca2821e25e9556040098fb63538ed42efe0aa7ed47bfd560df6531eabd64bbe9d3337f6b9017ed93707708b84cf02456decd2ded6a0933efa409dee01c2f89da0278418479a058f67a1a2b26dc38a9302a65d8b652ad249090cd78d82524512c10f023a19c2633cca6c90c95496d430b557e972cca18d5903591fe6d1e58c94bc2ea61aa71eb2ef15aa0027a3d67600e5bff345bd11011c2ca8fb146d9ac54a2af18f8aa5a8d0e8527ae2eb9aa5434eff5aeca8adcd51e6a2abfa0aa15e1a144464aba2a8790f090a1fb0d6366a4ff78551dc86c11a6bd5ea527a5466b4ba86bb15a2fad5585c119bf6654a8a519e604eadb6ebb32fae107bd5c50af07b39aab59cd5b67d556a26db958971056e82b85e621f49a65917935ebf5dc4f2b36cc65927ede0a9a6ec059fe830c6db783bdd1a327cff69eed3d01d48148dfcb6c8fecdde43a112c0c7e4f045377e28ea0492a078b2497835443d075e69ce6e0ae4e2b75755223ffec08baa082b294e6518099016ab72d43b83b1a9be3b3b8b7c1f5b3218a0e92f412609ac3d1b3118ae466bda41aebfbd91e8a0e9904ac66168e86cf40203e76fa5d6f93cf1472ff4a6f08c732ba16c9ba1504b8db0ddb5c5cb6b1c9541d2e559b73905fa368e55507f627ab4afdc83dfa7a6c7eb44abe98b45fc8db445e466b7e1deee1d11384302dd4690aaa6c1cf07370025cad086f57c99758aa4c58c7d62dc1a5c9454155b98277a0178f13414773baa4928600c68a7077e86b12e84b11db6ed31045e946682c25f52f8c7ba957ea77d5302bc08678022d5592285f40db1395e022801bdc60e072b5cdf8349f79ea22f94c5b7990444d7f28d07839594689b8c8098fc3443136a1c04b924549faef4d26a8e2d83147082f3dd7f4b2fc8d59af172e2341d541722cd69709231b634bb2202a22d59851251492ab4563752ca3358c521ee5d957daeb25e01a968508b3893e2fe34561f7791ecd3321dbb4f3ef33ac50fa65928380578f0045aa35af54a1212a70fee7e01b8c1e3d0680838885894638783c0288838885b9c63878f204400e22162e0cccc12384e7107089d4e1103e1c22bc82802b846f080b7f7a86f005a47c82f039c45ca01085b7e081d51094777c4e0d9f81454b6081f0d76f801738d53cdf6ed5d8ace25588c2b9f94ff1af41bdf2a0a28d477b3d69d17e8c5573a5551a234196b62a3e236ee16e4c4e0b26663ee3a5ea3ba8cf573b0a8e820128d35a7dd91ccd9192513da87dd43c288635608fdc178aa1aef97fdef4955a9ae3987616ad86d60ddb667cd82664acbf194de874388b69818f770b537c4d3e4fb1b34e52b096f5e892e58bd1440e46f11061414663f15c1ae5533118f92447940229b32dcdea64a828f035b95d73adbe1b07c979ce971b49032cf93a1ee2255dc87888f93a493379130ff19a83a318d0a0cee380714683029fa97bc3c1ee45eda3b337ba24bc2e31b5a901a909209ac494fb1de1b3fac67056e353355f33eb1a51a0dd9b4502c6eced3c9189dda5f070080e29dd0e6de45bf3f59a8a23c3640506ff686742bd0fe1ac6d264984e0d777a650d75baf9cc67e2e2bd1db373cd65832eb3cca18a3e2035d98fde112128a65b401d3b1f795be84a06fd1d684fdb29d15d3b6c87580d0b6acba16a0266f8d7b8600df52a61d487487988b3915f14fc3215e34fde630422337231e3c8bb3a583a9a3deacb142b11f6d2db9a0f218f4b1f2968be76d59821d3c1782c180353f346db6f195506cf7cdebec8b97a612eaf9a730c4d2267311f8168673673ccc7735484f8037a45d6f4eb041758abdb00261d829001b1997f946056e99acd82e944a28d0f4d621d6eb09ca6ebbdffbabb03c8cd42c4ea0cf8efcf85106c1373779dda816b8924abfb1a1f8facea6bdb7d3dade3caf41f6e33e24e1c2ec903b3aee26a0d6ef4a1f1257481e9fed5ac51b79bc78c9376c9e888ce6279a8addb33350cb65e673208d3ae6349782dfbcaf9139df9833aad2c05e2fac0745a694b0243d368a6877fd3ba9c59d15b7362eb446675e69de4a03d3760b7f6cf8092b7761bd5e5bf3e120ba89929061aaed530cf108d10e1a995ed2f96649b545ee3746ab3158d5dc1a58bcb0bccdd8b25e8ec3715a61771b03c385ca3392b60b1910e7dd9741546f1f1f485a0face4a8d0385db21fa24d8edb0f1bdf0eb2424ea1984a88b5ae6a2cbb1d254c5a92479ad6554cbe72d78adaead5c0aff5b4b098bd61f4d845176cb19eeb538ad9378da48f2bd8c1f6f4d68c01c4ec58fdaaec9d4cef611b68180a6f9db17e85c3005b09c30757e97988bc73b61aef886a8830af922797b28d6c85085787296e193a0c44d1d8b5f98d763c49adcd2525b6f6ce351822b5790f149d2bade902ecb100c139002107b593bfeb5de2cc4e706c63e5f8ef8e0a34be8992724de4a524e3ad0f64522f0f33b209916262837ad41db08ce7d10167f96645857e43691ab9d1ea456f574107184ee11dbd04cffc321605668a06821ef7095c819f227c0a57e01384bffc7f82f72f012aaa0c6d3bf35c86362ea854d3ea3f741d3d0d51681471fc3d5aaf03e1e09f2ee09f1d0d0d0d92cc73dad9e474dee1daa6b3c3179da4f3cfb7094b2ea8f867c7919b2840f89b64a01c92b63de326f2b377bdbdf742f4e407f5deed5a8b5ff45a6c08095881a95b7e6f080bf79e21fc8bc6adfccd20541e69dcca7d8d5bf94e85ee3d42f83d61e193a708ff4b453f42f88341bd7cf5a703481abe5b7bc290113fcfa9b8a27a89ff2b6af5456cb4fef62b203ad2c11f7ea079f6b5bedcbe0f88d2c3a8e16c79d3ba1ebe1733c5f4ccc1407e1754495b093ee6a38ed172db1c78826ad01f82203153a14ef89433a6c6bc564eb54577791be88eea1e0f2aae4ddade67f4939ae31da8e5a840cd75770bb19f9a18782197d2fc0865c538bd3658a854349046cceb98608d133246edc532ad555ac9a3b538ef3ba4e5c85426a47cdb34abff4315370f649de6f1a8aab957d46de58fc0565eef9213ca722e82369370fcfa4fdfeb6bbee6b0b761af7fe7d62cf155b0efa6458371591c2a4012d7de4f13e22a2cd15734a2b3c4d3c0660970a033042085aa240f6608e7802bf54b747a7cfce6f4e83dfec5940f89428e70b293d9f81f8d9402b2bf04baf16bc6e6f17f45bf1cff76f8e1ec74ffc3cf87a767c7efdefc1d60a23d9082511b26c1a8863d50420cd4db1de7b806f3740702144051b5180951375db22810ae133c412d27b71329157297d711f5e5650b1b200e7a619e72be94d9ba09e270a9fbc873fa8a2e939b788821e4784d990e180d5bd11646c3612be64179507fac8097189b914180a643cf30e865cd1df23458d2855a3522bbb894c1ccf31a5b66fab7ca54b3d9977c6dadf22dfbaccdf1a13c1ba34bd51126958d52058cab96f73aaf87bcffbb5fb1dfa5d1cc3423978928ab83fcba36cae6f556d42a4ba95ad27e75ff5db2ea1f43ef86874a8731548b6c6acfec2f438926ff0ea5b6cffa3d9428fedd7ea9e0b1156efa992bcea81eec01de9c957c41ba716be9a188245ff719ea07eb2f412c22d5e93e535fa636e0947edd0136dada7e3ab617949606fe9ecde1f5a13a245890979a6f1793e05a2509e2e012fa12e04c05ea8500f38c53fd662cd47530940ff61ec067fe6f21c33d074701490978cfd499d5ef49486bf2c069361b90b4ff08d7866b9acd48232d9f0d643f0513c94629fd5da50c5284a90732f0733b5eebd0e2587c044c8efab618fc346cee88cee8d9b06d3b747e1ad6d66767a861f57f68f5c65ade91e1e8107401c88d7031062cae8618bd1d05cb03bffa257a7ffc1e683a3861058acacc553bcbdf25efc2be5e6c68725ba85b61133ef6ea22c0b75719bd7ec9bfc4c1b033ec3c54ff0f4c29b740d7165cace24070100804fd9f438efac19c5ea0a06829739dc8cbbb9ad90f06e7f0a610e0791cbc7d168d469d27d1c3e15e3a8a86a3c783e8a7874f3aa3e8d9b3a783bde8a7bd3df3fb51b4f7d3d3abbd27e970308a1e3e7d36889e3d793678183d7cfc74a0523cd329de443fed3dee8c9e46c39fd2c128da7ba862478fe0e7c3c1c368f8f051673878148d9ebe296bfe1a14e80f7564912d97b61b4f9f3ded3c8d860f9fa4a3686f4fd5baf7b8b317ed8d54239f3ed13f1f47c387bf0daf1e0e077bd170f8183af3e4f1a341f4d333d5ba9f062ed572f0341a3d7b3878123d193d4907d1b3d1207afae8c9207a365485fff4a4a3ca78ba2c533d52dd40a818ffd072bcbdd70721485ef4bbfcdfd5ddcaf758f1b7e6a1d1f97b9444a7c7efcfde1cbe3ef5ce8181a6e2633f4de598a864fe70f4f32f95dc8ad4974920facc2b01a87fa38a4a29de31e595f1f2f8f4f4f86db5986a5d3a45b5457a5fb7266c3b2ffd72fc6131c5d49bad92d41aa6b664ad3abfa0f24c2c0bf04607727bb5048a810b62f7d3c47901dec9daa175a255bdee55d161828fcc7ac9eab8879f4ed0a7a800c4ecbbbcaefc57e955a55591f47f8ce6ed7f91db83374707bfc641baccd2cf01862f9f4b3531030dc01b606063e300b830f3554d0e31367981ffe7ffa0f7895789f8acaf6f8a3136285cf01a7104bfad7c006147498f41113d0e8ccd17800f1eb15368edb130fb94744758464b9e6b3cb5637692ace8fbe482825fb12a02bae171e3eab3af09b5973a8af7ab1e9e2d530ea9b414adc07accda90d4a5c13f76e5c1fdae9d1bb7aa15b50ab5a0ba223946ba1075e7b21d6fbe309bb68247d112de3701ec97ca1507e0abb5acbf36dae3f6ea49fd5d67acdde2dc7206e86bb1b43e8ded4d274b3f17e330218498ebd476dbe5bd9e17e02f45d4eb85b9c5f3065473624b2c83b04bf1862657b49a0282aa58c3ee147258c3bf44aff63ffc3a23a560140ca9d4da3cbda42bef3db3b262f172fa4bf4f6e8ddd1dbfd3765e655c6b255b2c44b846b8ba474a8f01d1ccae987fd772747a747c7ef00907effe8dde107605440e06dd80c6df44d9bccc42b7c6b056bb1bfdaee8408f5c191eb6c8cd97c9ba2c06a4f6ac51f7e6d1e1042040e4f2b05ff609efcf5f346858f2bdf233ceead8d93d8cdb839907e1981816c2e13e38d45501622ade2c42442c8db2a9a567c63a7f03565c786ac684c46b563f426f60513364c77292f9d966f14d3b801353c9de234b9803c0bb7cb0c5cec9aa881fc45ad91a3ea8e0c11be24ebc92d672f971be1b6936e950ac29c69b142354a37d8df3871cbc6f1b74ddcdc3645dcd8c7a7a6fbb08d2f4b88d8eac6325b1887e1dcec2f1ba1b1bc17788eb0efb62141f8522d67fd8aa3b5d8f1155e91fd88b27c234ad969fb2c1b68797c435666cb59205a7c41f41de6a6d7e3bdde7a328c6ff039a9799658d52171570dcf12e115b92df0d5f49768ffe0f4e8b7c31959f47add35be42089ba7d479dc0dbb8bedb6bb1f65b929fa183ce9872bfc1aa1edd6166b339478b917c54ea270ff3dbcb410bf39be44f85c2ff9c6b2a85f939d04bebee015d9dbb52c2b176c419789a4739d153c12b41cbce60e396eae43c50abd8b12d7107f3f05667d07c6597b7dfd93daa1fdfd3d01d508375f47cc1c5561ad5b8a8769ec10b0f66b67332c1e77a5107c4737556faabdf44ebd6a2f77333d4377e6b8831e4c1c5afb27cb8ed973af3236ddd633b94cde18e689acad6f9536a7007aaa5fc3bb43503631d0b21531206aa1402145770d5939402d03a79981fb0e9ce216736d46c33732ace8b6eccad5ecdda8debb52ec898a6f77059a5ced8acf38b51c58cef108f82c5195e5320ca2a05f92dc5747276f8f4e4efa01eeb4859fa98f0f47af0e41c3dcfa1e171e8caf437f6fe4056d74fdb052561e3be2a6eb7b7574b2fff2cde12b34eef2ed36d3a8ffafac8418f40f14e3b0dd862da359f25069b2961b415f65f92acb738d4cddf0bb6147cd000ad7c0c31ba3360ebbfbf6c5e9283f1607b6a735661d33a49acd1200bd5795facf5ebfd29b739e080db48c8c7679ad1b75d2d59ccfb6ad73f7aeb50ebd6bfe0f5a74dbdd2de4d6c21c3bcf0b058aebedad16881589bb63e11ee84ba7eea25382526d85e2da54c67df5d63a63f9df21bcffd2eff745d8eee8a482dfef56a620142c8ed68a17d44c19f7359d4cd713c33b34b810eda2ee0e76d35a8c25db2ddb6ebb234208df6e155ff08ecfe921bb0a7dc41bb4dd568cbc7e8b364d26f8ab5638a8078b3aeb52eed2df3fecbf7f7ff8010c8eebd93ee35babfed1f467a2a7d89805f82c73b355efa3c47f016bc34fc70d670a1effee3c0e54d1bdbd72aa4e179aef6b5594f49a6f9f5634f08a065ae5c4835b28c84ff0bd3cb5541ef676c0c05790c6db81d5addc83f77add041b5f44bea3059f9ed9f8b95f987334e6fc8f3563337681adafb26aacf15fe6dc9a356355de96273a2f5d8bbb8b1a547a79ef2ea1d2db00e5bfe30db4b9aedfdeb5aecd3ddcbb77fe2d6cd1f3449e1e7b550bd06a87e7f0085aee0e43f1ec2df37bd44b34c92c850a7fc0014fd5ebeeee1c9eddbf7ba0b3fdb3d236e763c539846155255073cc845645b13c3858c3d9a959d6ac40286e14a191d48857937404da2a9856cfd1ef50bdb9e7e05e25cb6c6edc8d35ee45f676e3375771f49c7977885eaf46b9bf204cab4e13bad47796504b7ed5484e5bd970204a0df4f1dfa27f5bf51c4ff529550b2da49ecf4c469c7e23b56714167ea061880c6cafbac48996da041acb177b8d4e5c232c5f0cc1e95c2d4622bca7cb6b8e545db9a93e59bbfd9f79c3d958560eaaa9d468a8f072761e9b3135fef9d5fe875fd1b8e9d9ca935883e55fcd336a9d29f8368b52f1c5e6e6c671f6dc9f5ac98d359c62bdf97438c309e12588eaadc91febb59b4c589c5899b40eca2622ce8a86ea92defe2dcc5a977a9bd239993244c0fe88a955f9d0e53455a36ae4f3dbfe97b416f50d0c4a693cc4098b16cb6c8db352ccc627b745ccc121a3b911a8d372b1e4d7382953a52a55ea1c6a394f48208d3c86e7f0d252081a53976ce2058b7f35c65c8f47c302ab86c450d2b9d3f9b6eac4b2c019c2b5f6dc913841b8c93bc7be15d9c29cb6cd64a58159c3f5954f4049ddd0d818885f66f9b8fad2003e81d5e5061cf3982b31c2ecc570d21e47ec2e69b93ebb11af1073804cc00cc5f612d3eec7ad7194d002c5cdc65a4ec5a3cbea228e30553cf7aed49a9b92f523bb3aefdf5ca956dc5f59a8156d96ae343b07f43c98b1d19837aaaddff57641fa55f5b41c596b09f4bc6f366a6b1386b5b9a5b99b57364f38f74955d59b6bd32033fd6e6a90596a1007792af872a9c96f80ab3281b83bc2153204014e343baabafc19e1ba5edac3615333edf110d71f83c05b504335505f1acc6250a5972ce46d811b9232adfde70c91379207b8f248101bcfc43bbc10f9ce8670f5266b7282eadc9b284105c6557ba9361c1e03b1175dd3f375927e7ecf97378b6cb9b40fbc55500d8ac6a5ea26c86dec0799ceda21a86e428983254fe6740ec6b125f2d910571e4c3d21c1b2d8017c068565f72f28bbb3203318f5d2c09ebf361c64e400606ac00d46b204a852e5f8fa6e5bb2b0453da024999dcb2437060f94759cbb8c52532f6dcb9f2e6922ee5b4262f95a424859b155edf2a837c5438de9a35266db6d97a15eaf998379a5e07a764ff1994148e98ec88f32e03f9be51257135513c09d05121445b7a65ecd5aa1b2caf64cca9f71566a5a339215d092d6ecfec04efc8f38f594b5495a14c630738373329de125e98ef0820c46e5c4af4374bbecf536bd5e08b11beb2221271b6bc693a35865c2b973ad771922e48374eb0dbab4875012aed17849bac371099fe09058e4581b226d480ead1af7fb8be7728c36bdde66ba984562c34234860acb5cc546ab77eb1e540983500c9437080e99c80b535441ad1948bbdd7605eaf5daf2884a49b85e044c893aaeda968bf0974b73b1087fb1a8a5023a366e10e79eb9e862c308d5d7d5043083a50f618e6e0bee40f95a94114b33aeba8dd76004a3d0f0a734f24c13463b5d974d5915cb82cdc6b9717141af4dfb111e75899bb5ed76b9dd26e1252af0dc978e6e58e32ebcd8301fa7a6ec3bf8ab96995c52129c0b7e9dab239847e627e90e318f2883e74f1e25e2e24a2d741e5d5100b02241507ee43a1167e44aa59dcfad61297c739652fd63b180bfda8163258d0eda5f2e9d492a04d35526e1c75ad03565d5724dd8314bab652d5d114d4e6a3a530d3dcfd83c6317e44e1daeb5e029cd739bb89369329b6fd68aca038dc53c4aaf5bd8a7e041007197f34cdcaf1248baa38acd2ac93fb7f068c36fa108ed3cfbcece68fe96cf374b1a58781873f21946aa1592abbe789f93bdedd6ddb47ccf62936a76ab42d79745ec276b3861ab6247ca4ec63a74d2de0b95d4349de12a3f508351f5205687058ae954ce08c3b45037418aa7c1e09a9e7fcee420c0c160c5bfaabfc16c87f7898eee51a12e0fe579ef86edfe2895955b85efaeeb82ca57546457740e37a0d782af801b0efdfb87137e58b11da1bd5e29d529c568e6d6e51d29bce9b7bbc596f1dead52a331ae5c5208f39ac2264cfbf9855da4ad9ebcc6642512a457b1eea4f0a48fe332dc926fad4a68ccc5cece00150fae352c599eb0649d5f72f97a995cc0dbf81d699c24d406bca40b2eac6d3bc302158b8c25cbe58d07384098df0851f8ec9aa7ba5ea21a58e86d8dfd9ea4b2346b699084838475385bde74d686fdecc09b4469f39a073bf170e9ce99eaf55a817f77f5bc6a2fc1348f90ea3ffa796cbc03da495605d120fd9e3012344383b83dffc77727fbaf0fcf9a19d47d9a043ba30384efd1205f323e496bedf223bfa7797e3ef0b7d6daca4ae9f76aac9e8c49526ba681e2f88e06ea1ce0aea7b569a64484ed26d628bd5d60eaccafc43a71a3fe255ebf90af28ce5b39eadd2b7212eca42a2888835d5b120506b4d2a95ae7c9827696f422496f3acb6c41d39b7449f3ceb5da3ac6965c318874de5970e16da3ce2657e7bada7a2eb0b3fffe288f3eb14fdaf15c6793d3bc13f4f37ed039dfc84eb2cc79c74a573af29276167cb9e4d7aa9c460be2a01fdae19c04e0feaacfc0859b0d4e6d705a094e6c70a21dbea9e69c5ed24e72ceafa8df4563307f4e3b9a7f9a479d373411acb3e202926f2448723ad71a3db47349058d3fb14b29d779fce0c1e23c5ad1071a5134c96f583a70033170d50c2e39ff9c6bbf7bdf37c3a062d5dca744e03bf624c072b6aeeb5da46a27aa79cb53512bb9558bc411db9debaebe7ae465223b730e4b4c33279d667d21ea70060bc51d060188519a9b8f640634b3addde3b6c03b44bb771d8993bb12c46cbcac5cbea53a02adfc83162c02346563a16047adcd50212d1016d1d999e26605cd73cf51ae01b3d5778c6fa5c8be95e23f80315f7b30e677636d6aa4cdf099c6d91c3d059ccdf0e1238417e43659ca38f84c6f065cfbc5c4e96aae0352be5a256c1ee0548aa50d6252f0658035ccab0ed4bf033ce7d72cd6d87903edad1d6c3775226dc6a9f10a4d1a6dd3baa232a9d507463c3695b6fac1f965b6300d859f01deac6d92cd3a28f0fa4fb7f8d0efe4bfd29bd61bc5624a6758106851d0973e23a96866431ffcf3f9bca20f9e4449f4ebe1dff1677a138b0253147f334b16a2d066537fdf1ebf3a7a7d74f8e1ecd7c3bf235b50bd943c4af06d967278d3c641c7ea3de9debdd5d2dfbb3a59ef196d34d4ab025a61c7442396fce92a51295f9d73786eb40f1916f53d5c46290ad92eff7b9d1178ee36b22c5a75c815d342e713134f4ba21c9fd80bfd95deecb687d042f0f6693b3b387efbf2181e9278c3267d032f0abfd29b03d5c1a00ef6f21f908ac423154f475597073651c8efc0efeff59aee940ca47f26a94824179336ad39eb60a9cdba88fa6c7db342ea5fe208212ebc6b7f97eb68625b17bb1a91ba396af718a3214ec9deb82a54368dd884144f674da7dac624929736c3c6c79435a1abf959a4c6cdbdeb90b3bd338e70a7ae86c04a500def19cc021497f13363e167fc02344df68c8f080006901e128075e5efb9901c5b0f26b64a89a774a6bd2c5b6fda2d76cb53ebdf3f4ad06ce75dc9a1d7ef4a419dff6f371626a03092576e7c1d106ebdf88124b25b9a6f375d7b259324de84096648839d648bb08ee7db70b56fc76ce8ed7f375cb3005061acd833751150dc2cf0bc4c813dfc2a6361865d3140888c249569174009198e93e76cdcef27d6e7cf26a4d364862542634584c4c48407511475469ae7cd245d0528162f46bd9e1fed168cc04199320f4a93fc69d0e715ffb3b3c038ee6e1d89a6cb2ceabc5fd73c4904b7c5aee109facda5f34d2f8d9e9bf44fd67be483aaabf4d90f1000abeab87466d94e2d2a54a2d495f6e53f6a9341618da5e460eb4be75a85f1b36b47f616fc57578e13c7abaa3965335f88a43d950ae7e0d538032ecc6cd85accf6028b5a95bd669d5b467f8feb181f95daa2703cf8243eb1edf413fb24660f2e002f68b35c5a306adf578cf61f4ce454807a8e71c59e3c4fddeb8e510750b7ebe43943bd9e5a2d21230942e782269f0bf00360dbb021a3f1a6ac62034f059b1951ff44f9324b69c8343effd82dad61af9785723a9ca13192117079e18e34d2bd5de8c4dad192e3dc4af7ba35e1613944c3b17c4ecbce051db52ee854ceb6dbe093b41faaf07edf155c91fe95fe84428a3cc2d22a506bbeae7892c652ae3c9a4dfc8f38085a40f95eecb5e6dd9bf57afe171664a0199e8ae763cc89edecd0efec708633f263f0237cd0727c714aba028c20184e887378df4db75bd1ebf1ed364cfa045c204b84933e9113eab9ff65e0131822638ad35ecfa646f8c720087eec2765e220005fc19f3ea908d487f86ff925c27799a3a7dff45b54dd403444ffa11fa4b069b851d5086cf536f436595b4af43659978da23eb91e8c4a90f89cafea5ee86cdc7438d3d4326444e0ee10a9312aeac740ed82642ed5944991d1fcec8c4c6735775ef5779892c4e320cfbed200dfee5065a8156d37c9ddef1e05aa6be391a6a4dfe84679856340bca9874e99bbc3885e4f4c47b386c699577a298b682d7ffcbf62d2a840cca6a31931da6e7e67e1109f4acc663565267d676ee954a34ad50ea62beef51810f6948602d7558b2f93aa7ab5d9a6ddff6ded464d2d794913d1787df53b62aa1dd6322eb8384cd2cbfaddd1beaba965a82fdec8e3a2862d733466cf85ffae6c9853a1e6cebad8c07c3a9a61ae0e08703611828751d1eec1eb3a63737eddebb546ce79bad11a683a5964030821f6a7a2936d79417ea0184142801f9cd0b8355d4e978b5e4ffd5b49ad02da33d8169b26f9997450ecfccc05dee60a508870d67a7713f4df1b9acb7d75855551af85ba8ab486ea372e8eda2e6a772a49d2f0552269c4f83558b38de8c3074fd42a51372ecddbef0df1864c35c294c170c10ecbd7029b696c2aecb0a90c5109aef5f70ce7edb3f17623a113c706ed102f491b91a3764d1b24443a3f03fb4915b43245689719fbf3795b646e2b3823a52a828558cc15c13441ecd469bf1db2f919690df55e14ad49c642d0bcb18fb437a91106634f4e86fe1d16dd3220f2dd11a6214258f47a7958b9c8a2db2c4c50d5019316af94530698697032d1017f6e99fbb120dda1be5e31d21deafabd65b051f48813ea7c0e15a1df0dbf7b89e37a7d7b8f643eb7035ab980fe6f6d5cbdebadd1d8f4e280b8523382e5c49a8426e02c84e76e5fe4b4e257b4b5760f34b4ac0690bbca668cff17ac3e0c3d64788470573a3eb2d61413502270b6b4a636f1152b9063d78a1099b24c867a39f5f43b446adee82db2a5a4a24d4a46a38b445e52b19fcaec8a86c6dac37e9546ff8efcb717722e78324f935c9639ddadf9c5b0da7c3b3c154d915eafdb18cfd09267b5842a38f06150ea9d52360fdaf723c286bc36b30baa698e3fcc08e7c66ca88d10d0eb06fd09abb977647518aeeeb0b94da414d9f94652d0b305e554d534fd9188249554bc4a64a202f2cdb91454f34928be6b485e1dbf3dd1898d1dc3bcdebf3b48e0b0b1b5545875e2bca55d9bbb3ba64e6fc1ff64f65a4b689fc01d53601ad832374d80dfb6e1e9f5eeeece778e7cebf972e7c95439c96ab3d238855a847c205e57ccbc91ab974cdb24086239ded46f191e4bc97c00d256ca7441a573dab1e35260cdd1cfb6dbb01a003bcb127617aa8af5928042a5620017b553b3ca68561dc3dfc566eed2d5e2ce0bd994cfbec70376f9f0587b9c2a05e03402f79eaf1c3f5a0bb0ca59bf65f47abbe505be24e7e110c3ff3c31fedc2b759d889cbe5ef244c2a139f495442b1290e90c7fa762a7f73236dfa4bef295aff9d69f87741a68b8c741d067fd60a0b93b75071a7afcc8ca5f8d5514535a815dd52a48bd5ed709ec2ecd73c63aa4e0a5f3407b509c6bff1214e1aa5cbbecf46d81f5bab89b219dddb1507046e8345827f379c62e06419fcfc66a65907998214f8e28c0dc4de3bef208aac129e1000bcb235d1d4ec83c14110c0fc21bf8d01cb0167f9a413ce75f14572fa273fee524fb9ab18b5e2ff4a05a937e86b477d7301990ab50e02a5e30ea67087be937fd146965b77063d2ebc1308380fa2942b8dbb66409d163ee889ffd6101c8e1c14423aad55a389078496aad18b0f1a8ab2f3951729e8739d27dc8b5cab00b5f22ddd6a51be1f3508f2d8611c509dee8e79e9bf67bc2c96f3fff2c92f565965a9ba5b6f72aea6364403f9bf9dadfb2da323a33a79d9a272f5ff22f9ebdc58557a2988067c236c26d3296024f4d12a45e4758da25a4e622569b2cf66492e75a6e558a8c6ebfc414dfc41243ee98619d3b161ad8f6eb8efb94d5c4745c1e6c5d6214165da8dec036d8987a7e0076a12464d8336c2d2f15b46ae0064c6493adbd08bdcca508b8511bc5548f8f350daf367cbba566d81af1ba0bd503d645aac277f0da7ef59576d5868cda796b1b38db2a4c0b7dda1db61ca7ad2ff72d0be70b50d61b0d250275f2b282ac7de3bc3a7eab7af08126f363b6bc99d4be637d6ae2b4666f959583553e428529befd124b7c1333b3da845d6d1cfc5932a3fa21fb026b5a14f33ed34a2300b257a8335cdb55e35b63244cb137d2312b50a1c6e978d7ba05a520679c9dc0b2d2cc9766c4bcbb7c2554f1240cb72aae7a8a59a7376b6a94b34e2fb5eede79927eeeacb547d37927c9d5099daca8a4a233b25af3899bc3283006dc36eb99d51a36ba374bc5231add619be6407e3923a26de3988b46c36cae7ee6b77761d4b1e9409694093ac7a04b083abec3ce5ad05c3bb219ef926d3b22687ef884522f19dda0b049422dfc796bdb7e6c1945be008d834e609d33453f563c8154261440dd72e091348a5348b1aae2ab0648ab8db82fb1f005377e12c700a3a2763967ffff347c731a40e1d27a0f07c7c4d9575aca72bc51f6e537562d7fd7adb421580151b7936c34dba31384add3dbacb85aad2f36693f14c6f76b4343ae2235a69bcd032a6c4dcaa52562121568c769d56c9aa5839e80a77a887914c6fa4269ab7997c909bdee1c3a00305c3b38c1b16d8dda194501ac55c51aa3559b682fae31d36dcdf49e3168f5eda459887f64b795e549b2d48173dd7e7efe4e93cf6f93f5448d84f91deba3e4ec8e93bc4343bb214107dadb93b47d235a5d60357c9dc4985d2479ed64f93f427334c3b1f4effcf02ea34a3c567743984734be062a0b67b780437a3c0d0c610c70e08864808372ff06b35621e3593979533aabef35ab8c194a720d2eec359198d29955fcf4b43e0ba31b77d03e7fdc782fb2fb7e520f8815094bc841813cd563163e7a8cfe138dbdfcdecabd7b9e72ef9fad016b30cfb3fc407358161524631771778425fd224d8c813657211fe8e23e5e97ee0b33f53ddecbeeccb843d7d45035cc000f380c29c0ff26d1e9e1df4e0168f2f59be3dfcf0edfbc397a7f727432f3613fe87299ad8d03b88a3f7a079a6d5f3a2d0ca1c5ed73c2363101a0e858ec5227e5be2629ab3a50aa20b59b91a70506bbd82a785573fe265ebc3f8fc601f12ef7fa8d2787da61e20315e916d9e3a47d15b58da691279afc91c6cf80bbd28b4a842f32f2bb5049e445143564248a1afecab40aee29fd225bfd94fddfb3a1ab668bdfdad17f4407bbe9f92c5966174c8d0db83e4b3d3c71192db2e512e7449650f244464b75ea0374f81515324b93255e3ba768aeb40007aeac0007da242330e504388052021cd8328219c297442b55bffc787a7afceeece70fc71fdfe372efbe3e7af3664636984e93e8cdfe879f0f6764091f0ef93e87cfdf0e3f9c1e1da86f70289ae82eae9ccb358630ff06f0bd81655afbdbf4b2403bf74f73b5bddc48c9d9cf826fd67f64d1c9a8b48826dda1596459a8d6935a67ead7dee33d84c6adca6bb074ca122634beb5ea88b4284aa36a617f9951803df5456eb7dc46fc01a3e2167529abf75cd1b7506dd4b714428ca0a1d7a370eeb2ef3f771bb5aa3df9d06ccad1e367a04ed16886ee5aafe77e74cdaf88f139559c938bc329c97abd1d3de9523f034e48daeba56ee400ed2c4aa2979bc5820aebc87843c2649244595e09466af01318854d6d149e3e41ea1afb5dda6f0d611210f4866eb5af438999872be134a23dcdcab1ecf7119bca1968533a3d5980b9d86e6b55d50c0a3a997340a91207565d78df12b759e056c31d1ac7f6c940776421f84a2bdefaf5fbe0061e0f7cc4006cb1934849576bd991bc93af054de61dc6d900da79be2c2fcc012afe630542bd1c13b5671ffd04fb177e3f567b3983dfa33d159e9adf4ffd7d9ddc7b5f7b783fe54b619cbaad5c06025d8a3317f3416b6b7ab94a02707072e2853b8af12d2de6bb466cf1878e4d6be4361a565e07ff54a6182495e62c001e245e16752f3d7e9a76b6cd4fa1fdebfc396775793a7b6e4aab6772be4a964bf0e3b1a40b799472862f89d48f33786e0ed8a377ef3f9e9af335a9bb232d0f5c0b985e618f1d7475e3183e79bbff461fbad324fa70fcf1ddab19b9547d65085f1173a47a25698779b7e6cded83961197fc6b632a763ba668b86599df6531b76e73ec92b1f5469a835f4d4a1ca88330280c5c57b889ce91877881aa467f30a0d8b9f7b60074eb8de2568deb9aabc24a2057c9cd39fd0093fec1eb64f847317b8f544530447ff85ab5bb881d8dbdcbbaaf327563777f70100edf36aeb34b74ffe0f4e8f81d6ef19b5eada4c0755cc17ab776df68fc722a7df123fc6bc9d83d60d2c15deb15bdd8abe39eb4d0175a20cfbff35d2997c50e5e137a7917abf9e782f218d2fdad17ab3b4cb8c072e72ec6a0ddd6cbdabd618d0545ba2307bf0a705d9687497142e8b456fe2c44e36e284898920420b54284a2396720a3665ac89a46d04b84bb72bbb536535d422402dd493436485f1b74cbc1109c6c4a2c167173db15bd5e12e9b697bfc212b005ace3345792391376660c86eecbadcca9b682da08ba93652942e4ec67a324cfb30b56e5cc4a7e6f34964d651169b5233c4315c5ebd96c305d0c35f8b4cb243fbe6676111994342cd418d3a998113615335f85266b53a1a9dab055a5d04e077e2ab1e23e67052ac632d25ce4297f9f642227d958aa5cc7e7ffaa6911b570c35683e46efd473d1422a4780ff8156d58c3a623a32692a9cb611166b6bd1241b3164b356f6d70c61ddad0b7a9205339db4e548029eb589b723d08a7fb83ff99a1071738210ffeb1ca070fc66aa4ce93f36c71038a3240185a2adcd1066da693e260f0c3284091e46ff8b5b59e2e7cdbbe040783553e08a06382a61b916757f42d151765751daab586b245682f4adda66d293314840343e04e757fda196a4e0347b7a2b6c0428e26428d3f0d418f8b4df90cc510a27e16080b3d721b729b58d5f823a008196707ea4c8dbb43ac35728e56c9053ddec89cd6034f96594a6b619a2643d897d74bfac5fba9b96bfd7d2ce66aefbba0942f37abb2e685c9b9d0d9aeedeff700c97a45edf7c9a5c8d867fbf58e5e247eec31e02e7787f84264f30fba14f5f3002a83549cc9dff5a37c77889719a307cb64b5b61fbfb828be4ed24c8253786e4be5627d9930506195c9f949f655839865737e0d815fb5e730f58bf31554972d97c765498b25e773ef3b977c5df914fc337d95e4970003580dd21ea2cbb0b78adc2db355e68535cab29353183790d3e07780540b70b0ca031cbce55f031c1c074e3f1016dda665d151749bb7bedc6da6ed1bb72fa3f43211fb321ca22a16415f46f9e65cdbab862354c04560463653aa88181acbd2f2fc37750cb5d2ae806d56e754f826db1355c22408fa3296da31b92cf403eca511af7c831af826a69afeabdb061664e884da63f9823c1a234e468f1f0d1f3d7bf8e8e9d3bf864f1e3f7ef8b81772b2f7f8718f42b70ff89ceecb50a06dd808ecf70542cf9f3fdb1d357ab23b6eef1142fd30f4ebe72f5ebc183d413d6807644798b5b490d533b266c67f84ed7dfb0751b5dcaf7284e5803cc2fdbeb0dec9a571befc3066ff20cdae89fe9eeeb6f611bcb72bd508c64d271ac56d5d0cd93fda66a1d1ea969e3b366447b190e5e17d4ac2a14bff18bd78f1023680b17b7ef8041561035ec19c6b4bf2e01fe1f41ff1ac1f477f9da0b0d3cd56e06085493419ffa08e3817902d6e761da7fa9c5a36b85da7c31a78058f03f099f0a772c6ad7095a517dd1a37ac782242ad5179801cd499ba74a9d5f3c002416e010672ab8edf077f08e7b181a808c2d1675af4b2f70c842fb78179511928f633888364bd5e661adae8c197c1f5f5f560c1c56ab0114bca523ea7f3c0d3724c3591ea8a28cb3fda1757e8642d645aad66a659c35a20915aef3321b7c93c594bdf27b2b9a3595bfeb6e7ddbfbd7df38b94eb0fda266e42090b470f47a8dd424fc23ce81448bffa3b5f60a684b89dd673b5142a0d4758f5f63517ab57894c401c29ec8c6b29af0bab7d9e48419395fb7c9d81c6b349bae4e72145131ad70afb2da3d710119d6b11328cf58737273411e9e5fb44242bc5414fc2144471df9acfb1a21d3995642317836701c2a5dc3544080a7737b49632ff9573d628a2b9e5635accfc11ced79ce5d41f62cd3f36801d2852772c4aa0485088afc03397b78a199606237b88bfe46271c0f9e78c6a48fabf9d7c783d383dfef5f05d0071bfd0644e85891bf8b1abe48b99db377026c68311b66e7ad41d7d93b7ea0cbf207bc361af479f3f1c0e0b7c09c5e7f16dca572bcee2dbfd34a56b1937060e7724fd221fac9749c670e7af0ffe1a144531168ef5980616902b00d7e9812a39985500b293c85437a533725b00da59997fcd73950fc45cc15a8dda5dd945b4529c7d9869032f4b7092fa93c4d3ef7a8fc0f676a0315bfebda1e2c699d99518adf58b0235766d747e24e92a871b96159baa107487dd9b913d95c243e1747c2622967f26344069a3f2c78d97c188e1700e6fa3a7229b837b89e07526e8827f0966989321cec8709c95960c599f8c50b60859afc792abec22915c449b9c8afd0bca4a2b4731cd66e80519a25b4e46638deea12f95cc9927bf177c95e5b44541bd3b6aa0cea05bb9dd8692c05dc0cf1e099af3e5150d51242f29abf8303596ad05424555e7fe3ed5ecf08b6acbc45c95baf3e5c4bd35598b6b786aba2d1a8f4b0ddca86c118ee05cb66f7c66814e67638b4db3d3c0a7c590056bdb79cb964cd854ce62e69bf4ba7607bf9cbe7d03501e50b7a253131a5345fe2893eff81cd04e2f79eea1982c9d170dbb8f9c5dc7399fdf58deb42cd16061415531fc7c79fceaef1ed855b573500824fb7f6cc15e5a155be8c9dc8414c1bb05b77e9084f7f13778c4b05f7f37c3f1204c36926fb57ac8966b7783e84124692e43d6e77da1cec1659803f7a8ea59a8f5db0dbbd6c2fe04c4a16fa9bce473f79edd6d98b6bce5738af05a657ef0f6e4e8b0331ada5a9a9bc87b8ebbf491e7008965b2884740cf26eb78b1ddae8baa0557fb4cd42c6c3cef0997e1688826952903c46a50f3d7b761ed7646c3e08e998664a020d434c59d64e7cb8c5d8c1123c06336a350a528fb1ad7eb31b72a3c740dbd1eba84a8dfb04cd4ef0980954d83d35f14ad7aa5fed97ff9e6309839925316867abd209789cc52b5983721c381f53a13a0c93c642866319d34f6517594e29d064a5573b89a1e8db75b2657a1ffa99811df72cd6cf62edd6ebd17fdedd64065d7b6ffeed92c11ab56aa32db9ff7a6cba1443d557df4eaf8e0e3dbc377a767ef8f4f8e4e8f8edf9dbd3e7ef3e6f8f7a3773f6301a88c52b1e81319539c39100bf37cf22161173444e3ccbc1a08190a3c4418be0fd93ce478888cdc308b3403b2cf529a4b2e9ce34a408deb1292f67a52632b8bd259136f11c4978627b585e2168962a81ddd92dbed3c54e7b7c8ede8800f39c056424598a2491acfc314195c09357f76e52540d826ab50ffc0120c9ff0552811047884faa66c1858bd11425a7c5fdc0f9d49e54713e3e1e994af03ebede90d98df31bfeb8a51857e6b0c2dd7ed126ee6ee156d755aebc9748519bb30e9b65b81a6d2e1f750f5dbb7302b9f4702b02a9493005a1b07aa035810fd4900f819def1823878a90d03c72d36a6d6d4132c3d7fd7869e783444fdf644a292e80ebbb48e06db4bbe84721a680a14f4e90ccba91963f862d340bfb7d92f2f25aba4d4c4121a75c46458496a1aabc2c5345825e22263413f0cb4b0130ed549a0e7170607dd2f8719b5d80c239aa1d8eff2577f8b28e2ad1d3e57a71d0b4de67bbd0677e0e0fd6e8d11d5b9abdf0ca5b1b23a0fcd989b606dd977481aaf7035f38f1d361fdf56350f5071970156c5467bcc4a983867692b880483e3a834b726fec776db1d61203fcee45a717d010858820c8ea25044d63c1bb00c76d9778be833bdf181a24b0948653db25e8f5680af1880aed050aa9196853602d82551fa3feb0f049ffddfff8257324607dec97ba65d99e847ec986a7b696b9e686c0029184d5b4bc5c2db426f2bef72ead29f2d42d82f8ad9d7a6b27c033e700e804c68b31373eaaa91d7341c0bfd0166d3682ca142c2b0d68de903eabb6e8c0e85d6f68930eff1bb6b32428735ba2db405f9ad3666d4b6cb92af63a8cb6c5453f0c0449b6d6dab1e40d20267a48dd7ff5a3f19507c5b60759e5f5b03574f3361bb3536e90363469d90cc8c6f99f217f36dcdd507dad63a77dc25143548f1d285e82c83441d77f9766b9c7f2d80c11fe70372112e70f0254078697edf040873ddc401c931378d1890a55d390721f766fce42eaf3ef74746843582793992d28d24ce885a5638256f43897042d42d09e764a3be16c43bd6f2489f6aa77cadb5d05599ebb614ead47049c6acd7e3bd5e98aad124ee98834fc595a530237e04ccd010e9753b2707e1ad5a3999ca30806c83853692cd20e940e718d8656596805d4f99db486a96e6913ebd4ef99a0cb1fd520d2643dc15bd9e01e9bdaaf6cb65824eafda225519d0df3934912c0657786e9792f9827692f56085e7663d9a8fb25157d546adccba0845afd76513cf61688262490849bc5b48e25f2bc2f9bd5c43dd7f1181805fd30fae3f34fdc0196193c128f6101b819e88bf66983a3aa2bf347de1f0db5015f828c239784e9b974bffd4dd11e1cea1ef268eebbb0cd1775c1d6bd9c7b2d70b186754dfb954b7acd83540632489aca5b7c7da76fbed8bd69792b5d334b031e28f5a47fc5165c41fcd704660dd0ff55a1f2aeac627a706e5001bcc8cab8c5eafb9001e4ca0acc510fededcbe5ffd68865b84370d5eed04807e312f772fabd8a918d103f8fb378458ddc39ac93521ada4b7e45891082227c3f826648a3e999feef4727413462b1d08587dc2dbb2307ec940e8d527fcfdaa290677b4a250372fccd1589d7406addb3cf4563ddb6a63267bc30915d9cc438910725b103cf87c6308519c9040775a97f8ad7bbe18eb03e6244c30b453ad012b7828b77fc91069d34a03b6799feb99413d1a6998f3ec0b9dbb4d520a266c2a6b7f016043162f09b844015758b520cba15c93e6a98d2fc9da6232ccc95a93ee71a629c842137b6f2a33434fc8651f22716648ca42d3d6853fb999263164ded7b1fa2270451aaa0221538330746bc9167a35613183dfdbed109b46e940c9d73acc90711d2acc9275edb411fa0b624a4af1d9520a6c0e9dacb9591fb76ed6c7fed5fcf12c1e8e0122bf0a7f0c3e8b51d53d584abe28a6156798abbd045be6566f82b47a6ccaf2b82d0c4e854b68d9360df36332a4f69cb57c6c7bb969c9dee91f85de9fb79627f48ef446d105de5420ae929dbe2fcec2dbcff426a6054ea674866f134193389404be0c76cc5f4bec1863b15fa028e742b6ab9ec9481532a0f0a7001ea9ed79c59e38bad7c2418eb843e405a910c95e4f9421067d05e1a57320fa6238c9a7c399ea70bc313ff0c2819e0783004d47ced864d90f17936010f41771e0e381bfa93a1e6aacb387adebeca1bfce1ece40dc6a6b3a510b69721a82f049c2f5d0abef177f28bee70d0061e67357b2dcfc6a87f65ba25edabda5ee352df16ff4fe6dcdfbc19e3156b6a0576185e3ef3bd8962adbdf679e37c1dfbcab99f6fa63a0b68c771f8d50657686c69f527bcf6250795a960e201ce88ea628867c48be7e7081db2c2bb4aa946bcd919d6d4698bf4e863343b07fd1a861a6bba2ba4585dbc91931a26c8b1ba6e1c24a39b63a9bb309f4c7f63151014b2d63837e6e548041ba8d2df46dae02f5efd846da31e0d37446e4349df5e574337bb03710f007f36932234cf1bc13394d660331cd67b19cfe1626688679d9fbfdcab6d5da251e8873c6e613fd47ad5dfb841a4a353c6521efaa228dd0d930337867d2a0fec3c623a853eeae56088a80a5631017d48a253a9533558f532857fdb93b9d2bd8bd6982b38580819129536c499b021f8dec57af977296f3258dae13c1c2e09fd639be4bf1cf4e9677e6c6a9179de3ce26a71d2f19fb67d7812394e5aadbf5828d69441918c7f47a49c834f889de4a79b4e6eb3515e4a01184701922e8820aca525a49e74211968481da20027d63378bef6bcac30d9047db60e63dec78ad8537247f67fdab862ad81d19cd49a747e9542835b0df0e9547bb82468a680d5bfd5370ed9f22237c12047dde6731dd0978537915d30644d36c66175c56780f3f655f3eeca4d1e5136c855cc79a552d4b7855de7598b12c01b1101158157e07ec6c2539be5d2779aef576cdaae72087a8bf796b356a9f61725cac27d1502449ee3e7462394e9b2d53a5569a81b3ed9686cb30f59fc54ce5d838ac495111726ce5eeb54eb1c8bf31e4c805584b218e594401ecf450af37d21d62efb9fb7569f036f6ec692a597abd304d584a975580736d9195a79774be595aef8bbe27dcd0daf2d82d648dea205acfdeddb0b37e5f01c0c8efec0e72d35aa21dbd6a89a034e82f290db251ad06c0cb6aa36ad2d5067684a5efcef8a3a74910687bc86e96bf4bde85154051d4eb65f9eb8c6535d7cc2f3559a9a2ad36fbecd8ad20189b83b481fc7e272ea777d0f67a1f433965a0162848b0fe026a687aa7b3193c20f445a15ffeff0d8ff74637e641769fd7fbdfabfce1ae2307e8a4a68998137dd7db859c5ba6662a95a3a9340221e173a1ff6ab95cb7dcd1ff0cfab21ffc33c029fc66eaf7b8723ca5fda0634f1e752c59c89ecef94d27e8679558d6815a3a9277aeb9f88c3be7b4936f045501194b979b39ed64b2730e0e4475ee6ee0e4f81cc6f3bfc9146e53835c26424d135cadf49f01e037ab6974b17a4a55888ed3d7251b6ba75a87ea14e64ae47f94a136235c8c741283770a213a7a867f25ff6dce9487debcfefc6708827ef50090b120bf5a9746fd11b2e638bf3a8e88214f834744825e51011e07058ce50fe4f6f59ba3f771b05866eb001fbc393ef8f5f7a393c33848973cfd7c9de534c007c71fdf9d1e7ef023f986492aca34de03cbdfeb12b7e9108319d2ddccab50ccabf31d157eea6f3f0dd0839d374a1a4991ad00d73d21a92b653f4c5b76ca40ab45e5a06f1a3ec0db4ff9035420344ea7c9acd783abbafa59ded67180ea4cd8b166733a395d2742315d6a7d5f5f669276f2b5ba22e4a89308dae0ca920ef816ed8418c1fb264de616b86a431e7ccaff8a3fe57fdd7ecafb0f70aec728994c533781899bd42934510fd046b1c733846b61a399f3b6674b48fa238466f134b597d23027796d54cbb90ab583b86e1667e8ff65ef7fd8dbb6914571f8ab48bc5d05a8604672d2b4a582e83ab6d37a3789b3b6d3768fa2f5d214647143812a093a71249ecffe3e18000448518e9bdbdd3de7fdf5d96d2c0220080c0683f987996d3121721cdfeebc18e679cd4c4e12cab0fc7d8f787bceba0b3c46b59654c8ef0c202969a3aaafea86b2ae79f56c17a2d445023bd3ca7b1da171f06e6ff3ae8fc7ef665fbff3e5bf18f95fe38798c4b40f795f229a4ef6211b6137aedd0e952288c53eef4f1ec6753da5f6628bb4f3da9f565e1052aefc1a9577da9fb433db9f322f305112421b50f310857822a60f8783c1d731a492be5948e8469b8d77037a4a9338a3aa19570add5dfaf1fbe87983fbf672877219ab61579abc12429acb93ad94fbaf852f9138d472b71116eead1256d28998f629ff5a0ad18066d9de700a260f0cdd12754cfc42d720ba83a6b622e3466bfa22fec866814425973309ba03a2432df223968b2cbd956d527e08ae4cae777f4952ae38b97aa939ebf260add206afd505b5e1604098fdca9cb7b89532bf1a313824d67405e09558d732c5926c56f8ace53088fc6d19c988a65a8223a121c1d59926cfc69afea0a0615d5d90cb8286668024740de75cf001ad4b529078524c31617ce616f4e3493edd8b26f9149723d61430c1f41e91a46ea62f89be47a781b67f07d088a349576f817acf42b009130d85a8069e90660d301766ebea5115f42dea733c9ef439194c83bf214e62129110eb230c342048aba30bb871ab2d8bc56438c546f5b4ab59df34d3fe60d0c854402bb05fea467ae594a5b1a5a1ee8d3003e798b00aa88392ac32c0771305cdc0f9d13de17c2579ff308b595e99fe66c8664630aa8291536475052ae83ba733c4b151a6fc13b9c63e58b246673afe46aca2d7c3ea699f8174924d47504a3d8fa862f835c9a692c75727ecc7edf191b6e111e1eb101f8403f81c3a81f56762f395487d24242e4868a1af710a7f95c569168b5bc739c1603e99d3f52a8b976176bb4501384d9c9cd7f2f7d362c2a6bd5e57f82c8fc215fb39168b333364806645a56573229b634c3e28c7168e4b92b32895036cfb9a454d56dff5194d9c9c0bb2e7679f194866f3d3ca5761207bc8fd40a2d49a4162d4fc669cca2bcc7cac5d5855f451932fcd6fd78917c3634fc3d50bbc6ad6de2851b42621f3899822a593da224789dc2666d582493d85412343c194684409be215b1b22a81b264bf29eb1d5457acdc4826566bb3dbed759606897dc781a77e41160313675c95d838a69abee3c495349f234e4eaf3a86007d6a768aca76b0fcb4216d64f8368a79e984fc2e9d31865f22ce8f55013c493624a75ed1e978702e19362fa4c168577be104ee1be5b4920dfbe01e137f7a158c0b0fdec1280ea74262a7dbf473c77819a063a096f6603c46c5ff6cab4eb62d642b8e0dad0394b5824d20c6eb956e79c491edddd7eabf228c9aaf67539e4e783b3d727af7f083aff801998f1fda3b32c7229397720e45f279d7762917754af1ddda8eb61c2468661d88d3b16f9221a5bf62176902f6fec46853b359c4a68be2d43cc65a1e3ce4a56605876c23990856ce2a2dd4c165c198756bd296fe88f28c393643a0a27b3e9decdd368b29ab6e1d16aba4765dd1e520d3126e16435eddf3c8b26b31d6ff4a96ab2279bb4d08bc3ad97d489b654ef859364fa707fefe6e13eb9a545cb0949ae5ddbd8adf5e29d836b32b96a541b0fe679cd83997ca2cbbdb6f95eef5d996df9c99e1015858e26c974ef867cc26420e70678641476993359a8a0e803e214c24c3a09543e01f5e664413c0f4267b192304302271ff7e0d5a957927912afcca67df2994d1bcfd19b1dbb15e40aaf1e9a87f9b2f395d26255c80c66f7348baf631e266f4c697d5ff32f610b5ad89f2d46a1ce8236f6554a7f5299797634194e371b4f4ad993697533dfbf628bf0264e337d45ff2b1ff435119d64249d3a7264e72bdf2a6822fa03ca70a3b6a9c58146a43b30ed8cf01951fbd5b28a85b5752a87a48015cbba94869b8d49d64d292dfa430beecf0344734d5b8c92cb3bd9f598bb07db8a563c78d6ebcd918e86859fcd51029c1ade6c2c0fa29b40f953d94235de6c0cefad1b284aa33a11e94a36b07cb76e23cba10fdd982ca8dbb7f253c164466b83d23e2998dc50a713f05fc16449eb1fe755dfb7b5692e1a739ad52670d31ced925c7fe6f8cf24bde976056ca79fc22c5651e67b3d74adee432987b6183e2d8b189fe982d966d36d36bad165b6d5128fd06ab3b9dd6caed449aff72ded0e085428357a3429fa5278b992a24d4b6802d3231bebef05f6bb6c0cb5012b518c41fea9e841d647313861c481e7b5d072e505dec4be935602b18d8fce97e477e9eb7602c68852b12af6b324668319cdeb9d2c65e5565812a083869e7eebd2d3e197e914ec519fd2cc4c34a6594d8570f7510f8e80a0443528b6652f719c096a47fb94c6132e4fe631d43458cb6930a82fe54f48b41ec6a9e21017f18c19d87c77278f7d1763287bf188d710959baca168a54e9c1eb4f7da82cdcd0f2897fa70c94aec9c34f2a033ce594fb5a79b72cb7a5679b88177d833ebd7a67dc19e6a2a04b35557d9e5dcec3cd433285b7d9b0374e27ddc4b0bb197cef7ec303c295203df0abd0defe86d78afdeba4357ed1329b723f03aaa56f09bfb29253e825874ebea7b2c1edf7f3920fe2a0ca0b612d7abe2208a58a283718d2a1b4ddc341058c6bcf1ce3f3ae94a5ddd4c6fd8ac23d2ce3fdcf9fec3dac7423eeb7c88930452d980696c25f73d9b7562de9917104bef8665b924cf92c37fa364867fe6c6db23a2767ce33810cde143d2bf1676b4a0af5088494ed7869f09d28ab529ddc4d60ee82de9c82837204f2977f643ec24dd23917b7487ade1714a52d018a5262b612e2540f3907c860cb99498cca936fa58dea3d2d2ef7998aca818279bcd7cb329feb44f29cdffb43f8e832808c9828a711c84c6050ddcc75648b51af67ab9f9d19df77a62acdc98f78641a64f7c91ae8205cad491ae3dcce4b339cb9507da0a659a15284bc48cf27cc66ee288bd893fb2e44c2ed7d3fdcda6fbab9c8c73a473e3e055a9b41d3d4e5651572d252d9a2ab61b8d216469f49cf11c2ddd0fccc79503b2f5611eef8535a341df703ec15ea1153ab608d82672e38c6b75779fcab34f3364b2c70fb502c5cb91a8d75be07cb2985235a32414ecd10c79fd9bbeb7fa483a5e7fa97e0cb047f2c97c4a07249face08f2fb7d5e122e4d78c3af0b0eed0b77510ec0d8321b9aecd002e5540b7cbaf6f55c7375f5fd7bb9ef73d398e155820aee8dafbb85721a01738d8e8b8185a5aa95891ab1afdacfc0a746d5e3d57a2dbb953dd10deea4d80f3685004495a3f5a64ba359853124b100d45fefef37a2bc2cdc49eb7325066e8625b61021e5a76e2e4738116195e77e51ee713361d4316b503f332624496e2c02448766a94fecf95797bbd5a28cf1ac4aab02fcf51fda516c8a6fc651ace82a6c5d1ba47bd4429118411de941a23fa1e7187518b75b3eac0028eb945fedc6aa2f948ec840c77e152c3471261f21c0962697e6360637de520f0c2ab3c4d0ac1bc1213be8d433a714b59923fefb879eb78b3404c9e968b38bbae3e8ddd87605d8e8e55589fca85aae657d512f03753e1b11a3e5999f667c23adab74e291321e7c9bf02bf54c8e0a473a5c1495e6db6232533e724adf973ade35c9b0f15671ee7ca80080f359fa960322d49ddf78b8a5e4ff8ff04f5e1584c06d340675cd4ec2e84bfd0d55c56f3dad02c46d07559db448d313bec506a7fb75965055e67dbdd4fc4b409865ae566b32edd9ec769ad3a5883b156851aaf865c73e26a9dd55d970c24cf16b092b48d964df19d170ab423d49e308e508da1ed70a2735c6999af2800a4c8533f912b4755e255353c220b01652a5098fc512345326a30a8d9aa47b10edbad465073e3cb918b8e0defbbcafff4143132818b199efaaa47d445f0ed2de494403e6c37bf5385e936db9226ec100d5dc595cf83b5d6e09fdbc78ad6cb27ad13007bbb3ac28275e95a8eed0679891ce748676b90a613a50bbc06c975c5caf77554b374b84dc4bbeff73e4bbbef6a6dc838695165d644fa860292ee9ef2b6dc7c82dcb97c4eb9b1f57ed5fd1d1f6d3941404752df5aa4e60deb57d4725cebd8f85b208603d4d65c0ab28d37540d58fd4a1b110e972551783f53b87b2fc437276a2beecb6fbf694ecb9529c1cdde827b8b2fa99dccd8c532c53359687b5e4badb6826f5718abf8768dba8ed75aa5aff5b5d6b98c744bfda42e6f4ca96766a35372b4132ab3640def1b4de20cc255aedfba1dc4e871c1aa7a6b5dea363279af75df4548371b070be911ba83189026bd6af882e376e46c03d8ee21bfa8f531554142477ff6df8a38c969fb4d0525788ed59f80615f6914e015f267bbfb73fa57f2e7ea98a7bf10e187f4cfbf6fdac99bfba7dbf94ee5dbd9d7f9769e6092a8f43b73cad1a3ef21601a7af20d260b9d8e67269fbf05bdbb1b9bc4f0a7fff2ac769519a59e5264e687642be38c9b61a4f04f7f3a3e7b79f0b7cbf3c3b3d3972f2f0f4f5f5f1c9cbc3e3e238b307f1e46ef6759ba5237243e9b6ea6f08f4e0e5e9efe603bd9ce3fb3f5528c30322feec833a912c73453e6945b5964541053d49e9fae9955c6c4307d239bd5564dae10a5cc875493bd9e49dbe2c7d1d6cda9dc9f9b70c5704e2469ce54cabbf345fa61bb356b8ec219bdf3f2f6ca8220ea26d5d9fad6b809e9b97f45d65e98c5e15e125eb1c40b3c78c7236d2bf6f2f4fcf852651c24901ea8d9dda24a1ce44172a5bd284bf3dc83c6100b7fe187fef9c97f1d5f4236a412139de51042e7f3c3248edebb6b288bd29c95d866e56c878b5ad5bb12ed28613f4a3948f8b06c36dd0edf996e6727fafe787c70d486bb1604e28e6937df5af91151810bb7f31e398ba8d31e6923a9c2ca7514f2d342e4f18c01fca0b984679c9fae180fbac366269c0432e11cc561925e43169cd00f5b68a62183fbdf3cc1231bd6766143dcaac8c234764aa274b98a93f678fc9d10c5f0ecc6e5f645fa9ef1fc2235914669d85279c6ae8f3faee84abb8d70f6a1a38ad0c443efdebd7be7638f7868f2eedd437f8ac7681ca071f0ee5d80debdfbd0c7f01b818fb56cba99fc5dfe45788afbf8dd3b8cc79b3babd1a4fff5788ac71bf4eeddd7187b531d877ce361e25d7bf5bc92b5e05e24a3932989e98044744042c9ab244ab29e31c8cbc0b2cdc67be88d141a224e539f7d6491e4154726721024505941021579942815b2c4ddb04fcd9dc1882ce4e1b480b00690956085c33e5d4d8653ab5d9c513689a6e486f2c9fe942c299f3c9a925bca278fa7e49af2c937537245f9e4c9947ca27cf2ed7414420c31b8d6166218be3a1c8f75ceb89b5e4ffd98f57ab32ea537e4947a7d8f527ab5d9785fc30ff2817ae346d1258c60b349c821bddd6cae47fa234a745e6e3671bf4f56199bc71f831b7047a8c0155c12c5ce8449f081646cc542119c92559889384c826312e6826571fe3ee8763f91552804cb787038ced1210e3e8d3dff6b2ff0267ff7fa05bac47d6fda1f436c7bb3fdabbc8dbd9e062f64a14011c624ecf52c30327bf32b726d07101dfcedd9899b0de6e1e4ddc3f1ff99b6ded3f6fee4f56b8908dc4400c3278d3ba2eeb5d3b07eedb4250d2551c1e5981b5ccee6e4ac42854ff8548a05133e75f795f777340ebcbeacf53518fb1efecac35b37301127a91d492c913ca41c142f0545a9fc81fd55c684b81d474105a12ae916c9e96094db61e6e6b66b42d9249fba3e6f96673471b5c88a869304ec645343cf295d818620f10daae075e26b14e9f550dca789afd00b8fa2948b9817ac6c0bf4f7e0f8e38a4582cd3ade83befa4aff81d71169e78a753423fb0097f11c656885955a22f11556b6460edcdd214f4547bda8b2cc672c62f10d9b75fef1a0df080cbfc27def1f2a97fd8052ba32ebdd98b399596bb2acbb0772c53a6cb912b70f7069d6754107a3c553f3add1422e523c47735aa0d56431c5a42b26f954dd2b9cb7874db4df0c9364ebbb701346951a7c7be07d161673038b3e05602cc6666983c41259dc9f9795dd782e0f404d25c676c3aedc0dfb7b6dd7a040abdf069a2f018bf7a03fef3ff01e0018ccfccd943bb2acac2ebfd40276b7a4047988267effeb31fd7b37f86a5d223c7937ddbc7bf8ee1de4d1f2debdfb6ae8c610c977f541bbc157ef1eca33b4edb5a4a1f47ccf6e732a881360785eeb38675ce5781a7b5ee0c59e6db7aa62322081371bc4a9d86c38117432c555b4af94aa703e9210292190c454996d7c063661a059835168a95068a8504ed9249cb67bdee638ead302e5d88d6854a0dc5017b2a01e90d1dca1a1de48a86324c724d7c4a2d7438bbe6ebbea2ffa1efedac324ead305cdab1d3dce0d111baffa1ef2a0ddd80bcc6ba64896d9274fc5389ad102f106db21455173456f6f66c808a57456b9ca6c3628a2e8666cef02da864184fbeadb33f9977e25bf0ca38ec7de575e90f67a37b060684ca1cde62bec9104d54e19af1f9139e218133746f1a2113db46575895e52528bd8aafa1db77b0ae4699145d59dbb77088dbbefc6f8e13590528eab709f107d81bbd11784cba0648637018eddb226f0587127dda1614fbac38a3fe90e1d066558f1271084a13a58d5ee50990e830c313c6eb2e676a4134873304a2de2a6fd3ed67cca02b1493a8557f4dc9d6fb8ab008b9859b656a28d5d15fdd5604764d71570f5527021bc6afcb974416af46b90bc75e479490d731df2b5f6ec8a3bf06c6519c8dec6c451a305146592364286d01759baacea96f1c7582568937261f5114864db1d9424a56a95bb03a220aa9b2aa113c6172689caf606bfa0ac52cda8079561ad24316d0d784b22537ecd841342564e2927617ba54ad299db7857f5ea23964759bc12694672a7c51b33f2d3394968deebe54855ba325d2398c6bc9655c6325d2a988d66bd5634471c8f56bddeaa4b69a2e200afc85cc51b58d048d64a09624117e69a6c2851cad2e5191d8c664f170673fbfd9989b4b998ccd44dd76c7233edf5ba29fc41ddf966d39d4f6ea6fa86eb12c2e3df6015f8160972439626e2ec2d5e9715632fec8f6dc4dccaf8c4778106cce88eb467dc8fbb70434459a5e0973a38bc2a1cb40561afa76e8414bd5e5ee56e4121b840c77314559a085da61861b959ebb1a7e7319f75969057abf3c0eb877def8167f2a226be646aa8f7eaf4e8edcbe3cbd7a717972f4edfbe3ef248a2d340c8f1d2b59e2398b8e4b82783a9d2a5cecdf4c9f67d2d68389c3a77c462c4371b864b3227f645095b09ae4a473909a7a6b2622aa35d20d2a771ea9ec6314a256c9d7bbceb612ddb14dccfad5946b7480e8c8932ff5521c00a7f7a95b3ec461e87ccff995dfd2516cd9a11e4a1d5be13528e974b91a244cac33656b956e75cb08f60194052528efc54f58142b2962c631809961d8522d409d05c7555e8cf4211d298f6fbf19ff6cbea728ee47dc4c972c9667128d866e328d01d11ce7fc5f23cbc66878b9073966041bd2add48ac12baa43c63e1ec16d4ff11584ea0a639039b671a8889e79c3dd699f773ef8c84bffd3977b60982484edb6d74a4965d361608ea24cf4ae20ca279213c5cad189f99374ad748e124c549c80097966d2b605d9b801c15be44d8a19ff2a5aaa0497ddd54837d7f95e642bf8b063abe7c4e27d391c3f3dad03d19ed0e4636047c15889c8fd4d92e684e20920da37bc351bfcf9ef2111613364578649b9719ed0e4bbe45aa24e64be636575c00a446db6c04c265cd56d29ee16d2cda53bfe52c998fe53fedd5751bcebac425599753b25f4f07b7830d6068e828d152a46385c714e2774fbcb3e33f1f1f5e1c1f795312d289f7e2edcb17272f5fc2734127de9be3d74727af7ff01c60e726335a455eba6e6eb4b698fe3a1153565d6173a3f93bc19668a134b4bf16ac60106d086c6c8588d225337e8dac4b69daeb2d8c935043f4917030aae9659c33ca884b08dd747baa77fea248e67192b019d5367bb98e4e21b4120b29793ae5b8b55b6ebb3d63ff04b19372db6b5556efd414e39a906684af0695c8e044cea840dc9cc769c530c67ec6546a3c381fe0e28453d69e6b412f4f4743acf321168b4e2c24467a18077195488b91aca6275b39d7107a3d0669b6e0e256af875ab4619b4d1bc820294fdb0a6d257dc16ba14d76ccb1d7950dd1c61ca6dda19bf34de0350729a70b61640d406a61aad2ad5666da4227798ae8ac96f20ba5009191c72440213807607291f77a5995c7bd9689c90e502715e0aa1565920673fd3af5f2228a589e7b7a8921e69ba9535f23e6cdcca6701715c5ca49eed873a093368f6c4044488f06e7836435dcf764cd762a8fd6adaf4df96a23c395b1b666a2d1ac62ca64a9bebb27b1546d9994ab1cf3698654f465fb6e97d2c2f538b41f1eb3408ce61062cea51f58e753a8088c22e1f26309e20416b9baeb5c92a4063d9720d4ee995448e2d21c00a3dbc136f9a8dba9eb6f37e9d256773552d21c0e60f6fd46d3da47fb604c53e8ac9a75ebb581195a9978e9d5b630b88bb7e994c6e2ca37403daad8270b20398a95607a8543c2aa2341387aa8bd210498524b5b893de9d3688475e9249dd69752f230f6668219136d46ab51df8d5abfcbe577b3edeff2a799fd2e9fd696cc86ef969fcd5b8069f573b594398b381f33871e9b8d02f7a3b0ea6a2bd3b6b561e8a6a3e61a08fd7298242d6fc2c6948b69f2168229642af7f456d696660a4377739baf35cea08a25e01d48bbee611bd754dbdb242f06821d6ff4a7a0e0aa2323c75803d7d606a4902b94d700d0ef1792eb4b109b1453525410c947355e2295074e750834b34832bc8e20e73fe9f7c32e0476cf361b94d5cf8e9c4475a719bcaeb50290e42a946a092b1846ec7ffd2ac07d415234801e4aa047a0f32516b0510b605b0059008c3e0348d5a85acfa22cc97a180ccb29797497382b1aac73ebc165d28a4238dd3786b944fbf283ff4ed67f3fd82fa7e4f1bdb8ff36be4ae9ba7a3d2f871f5b357e2c58168a341bb7b10bfab02f5b930eb73372e683cc3dcf29a55579d7fcb6383c36a30baa2f92d4150e753aa656a881159fcd8e9e57a78d29d819d15765383f69bed828def9fa32fdb4f5ae5bb6f3c5d3add74eeff1b57cfb63b648338cd5b29425da76a360946d3652c0a262b3d18ca8e17dd8878e4af54d84113062c5f65504430e2606539a16f8e2d167b20ecb1e9f17713263d9d8f9dd8ef6afcedde6b5a71d2fa49f6a6fd41e03a57d724a480694896febf7e910675acb010a7e275df335832e90f0e5477159b6ea8b2a22018141d591a4cb6a1981e522082333d5689fb09c78bd98d564afa2daf6edd2adee59ec9453b55020a5c8369be3b68a5a52be9a3f1deb7b9d226733959fef3dbb55b6d35874e21c6cdd614775e27b9830aa4db90cc2fdd47437f17c2b4b663b29b137859aedf78655fced3b1b6925ad97a45198eccdd32cbc667b33265824f6ae92f46a4f5fc9f5c8ca281c16745d92d9ee63162e42b27096f2e4d6234bf5f0218b0573b28edf3a90bd4ad38485eebc56e3a83ae856b88db64a7c8db6b5e994f9e08c1daae239596292d1184d3c6f8a47dc57ccc2b9483386e6d85f150265c47bcf6e3d296ba63cbc4ab33abbc87c7d6f5d1b7e90baa098aede64e92abc0e15fd25027587b8843ea274b94a58fd669672116ccb03ae2d84878b2c5db2770fd1bb591f3f048be3eec6c7b36bf6eee1433c12886f365db6d9540932d96408a1729ed1c78fb4124eb87778ac036789cb5626ce98da2873b7d7b565bd161375597c4a4066e79566a9b126b0a779c5cd4bc946b3e302c26bcfd89c65199b9daef4b53aad44e4507975c6c2d9edb8fa45ab5f5bd9cb0d4a98819438b0afd9d26a2e57ed73691f51ba42da665b7da6caa34e5a3affe48a7eb67b29c8ddd57d862bc26aa4104cb2edee8f6bee0c0d88031b17cf51f5593b80cd66ad36771e4ca66476a50dca0a48c6badc1c1e5cd663feec4adb9bac11090a471229a0de8f9214bc50942ed57c74247abd586b867d7d8fdf1c02a99fae18d7faab94c4583646919ff262759d8533c6199bb9a2780554200d4522b4b64819064e9d8d0dfb335399e888f0d364f693faf6533aecf5dade9863ab569207fb21306661cc4575bc67eef19ed523823fb858b0ce2c14e15598b38ef7a0cf2ab79a459877ae18e31d3dab59679ea54b13d4a0f3a0ef8eaf0f6e38a6ceeb0b9fb30fa6ee813a4dc44232b5b094ea4bd55ce5e7c204ec1c1df631ce45ee3f90248048a082e6e173842d43910f0d71092f699d9b4bc83832e0c744eea3d22512a70efd90882a496255f9a159e9a6e7bd74927c4bd4d2446aa0852e2874893758af6decb8da8a67b442b6a7f09e7e006b9cfefdccad80fd07717a7481ca967daf25f6de799d28e40f405a9ca51f78db2a7b7df773cd5566b6021803f348dd973049371b6514e7c64458eb74388a9f55afba93a1b151ea74076545fc2bc81f5a6258d37a39d90bb5c0cbad2ee179319f43d21acd39be8db9f8aed232282e5228f7105009b86e6ca9a35544a1908c351824adb631461331256bf08160c05d6ea5a1b51216f32f2f8179b954f4ed52b9d9cd2e25f7524b65eaaa0e80dc5fc63c16400051f31c3427f66222fccbd9d5099fa7d6f113beaa49a7cdaaa30b1c691bb4a80cbb49352e9cb0dc26a50fa44fa643e559606215ceae6a8c8c83e044e091d64ea77579247b36e8f5d406da6cbc130e574ac02be5d8e81d9590b2d978af53f1222df8ac51636330da536e0b346697eeeea6d7fb2d3b5682d36cd83ad23bc0ada1741df331f900c2c02ec6c0c56b796439a939ebe7bf3e21498b57965e18ae62f01a948061b98fe620246e21d891ad66d59490d36dfecbf5549c5d51412e11c36339bd406c4d3093445cb692ff648eea576e3fee3a69f1493a7507946d338652fe82b34d313044b4f287785d61f0de10a28f5752d388a3585ba33fd2f5e52c8b6fa4781ae6b73c3a5707964760cbe9a796e05d7a6bae357f52c26ec3b5dcd80ccb35a04c2e849aed62c2f5de4c371b94d22f6574aa7e28a4d8d1bd28f64502c4a1179b0d721f214a6d38bb25fa2f3d37d7d95dab7ce8de8bab7657e5a052d0c1a8786abfab97afb0cea155dda4988e72754869f62aaf1333b526a1b6d225f64de35a5911a9c80f9304c53bf70e97e82271869c4ac978b7bc000d19b9445c424afbd11d4246f56a3b8f3f208e03d6d64bf51dca484572291fd51d2593ad2d19d3446242aca081e2dab693c3b6258678f06a3c927921975ac20db6b569ddd4262455e741abb64532b2479a35e8f51ea2f3701e66f1267eb34839dbc46fc2d9267e93cef0c3dda9707abdae16013fd3e8791246ef9fb32cbbdd6ab84a42314fb32526a255d13967225ae8bc14f0dbba93631b2c6ac24311dfb08e3c44abfcb69006590ee06efde28efa93a3e77f61b76721bf66a5a116560c2d11264ac5cada039e499a9035854ba1b27e653b4eef0bc4cdba931bab379272c61abcac2a67dfd49ebb118d6b0a82aa0b97bb0c690492cb6191e569863029e87014b633cb6a02a191572cef66cd7aaf50a682411ea20c9be4630c658443a64db9fb6d08b6742cd9a780fbe6be0532465c844b126eb3f9789da1d0b0f41af6b92ccc01f70da1c81c1b41883249feb3925c337122d872e7a28c18cd91b553fe0f5a9f6b26e4c0ee58156657a5e2c3986431d4594d2493098f87a09f0365e37d015cc8c2e21e00ce5b005c0f1be482386d829857819646d94e401b969a6615bc2b93d9f324bd9a4a0231d3f61a3cbe45b114bf765279361601e25490365d8f45841771c2cee09eec28ab802688fc9da452b6df96eb337a25d210095f84d935137a75361bcfc32386d67730f9e0a71d8a30c8946735372203516039c89fc73ccc6e35ade3900909d0b86ce3aa84c44e0bada5c5ce9844809d554a9c14c5163b813038d899b560e748dd1983a34a687daa498d148236521006ee9ced5a4483aaea7d85aa1c32024595f2b245da37385f284c1debbf41e1ca18aa6c9482505f918ab4412ad21a26a7907fbdd43964fe2dd462f9bb538b19937096638b77c01dc86bfc99dd0f0d1afa634b6c14e0f5df206c017ce600fede24244a5898ed66a4b776295726fc5d60166d60064f74574529258f0acc314d6b60166d60966b0143457894ee00b23ccc485ac130dd8dc65a4935d67f83a8059adc816688d71c853568f21a34b992d2cd258c7f01386f7e7f70a6051748d18a96438e593d5dd9a600549abcfac1756f38bd67b7bf9555634f076365c993fccb7f822de80e49d1e0dd46c55d7c5b6138043e06f6408e5f32653808ed4f1442da543f9cdd843c82c84b819e67498a7692517c2947f69edde6ff3bb0b3c62187520cde81a76a0656a53f46a196b801be4438bc2e0e9844cffba273210b8b7ba0f32c4b572726845b1daf054ddaa3e28c4cd005e398398faf95250731bac31f94a96ba14a0387747e52a69f957d81387a31eafc96f50e88d54b560fac339d665af90663b28230e4408fea9e99b61607ed7aa8360b96d6228c405a170d8d5356bb16d8d038d9a4ce251e71776ae362fbdb1003fc7eca431b17db6ac2af2da361c72f5960337e61f474d514d425a078eb4a6e41e349381d154d751e29b6f50afa26461bf9ab36cf8a71bdf2842b8663db32a3f6445ced894aa9082c02f0193b6c642def2aee6697794cf5b65348aafa61d5188432fad8f455dba20268711c25eb60242c6485812ca7f1444c47dc852c2357967cb799af8d9612292de566e368d25a6cdda5d26396386841b20a4b7661f93696c474308a2da2c7662e21cd26f1741436b1a4b4f77d6a18510979a95e1fa33ed2b8811db149feba4ad2e87dc32f59c136ab56bad7b38802dc0f885b3b97b67a11ac193b56b70935a3a86bae6eb6b5ba29cde4ea5e59edf8efb79c5ae9a12cc1602b37c60eebebe2d5e8bc9074be24efa977f0fcf0e8f8c50f3f9efcf92f2f5fbd3e7df3d7b3f38bb73ffdfccbdffe2bbc8a666c7ebd88fff93e59f274f56b968be2e6c3c7db4f83e1fea3c7df3cf9f6bbeffb0f3df2927afffddf35615452f8fff6c88ff4e1dfdb6ad0e4efff3dede3ff7e487ea2dee56532cfa3cbcbc02327f427635a3ba05e985dcd3df29a7a52a4f5c81beae5f1e03b8ffc937a05fc38933fa2ef3c7224ab864f3cf242fe78b4ef91b7d42b3259f25cb69125bf526f9ec81f3fcb1f4f1e7be4aff4a47f60bef797ddde3b6dc99b555467129388fadf7ef37565110cad71b0a08391475bd2e0a2686f8f6cd5ec4f7bbd686fcfe4c2691a1623087057372ce66a1b2a840b47a24f1f634edfdb70f81331c524ab97407e95b451b63fc5246e943d9a62924c8a7e7f4af9d3a7fb9becd9b3c7a6000dbfe965f8e9d3c79bf4d9b3fdaaf4512fc54f9f3ed93c79d4ab32bee6d6d4f79503bee65cc04aed79ce84b8dd41f411cefaf4fd844fc4f4d9b3fd298127f4a8270b60181c26f6ecd9635337fca6a7cab01c3b87393e7bf644573f8157fbfbd3ea1aadf9da9f1e514af7c792c8a8e84331bf460392550b88fb1ef5825af321a82b77bcb02f5fa09ee456e5d4ff46d739cbe230893fb52b773dcfdc8fe2f42f957f36810b5335cf6e8518a0ade29b0df3afe0b9d7dbd9caf4a65b62cd286424a53f8d6ad7089c37c728a38ca47d7a8003c871a75eb62ab313b3846a24e3b44fdf0455ad5d615bfdcf46f561122e576cd6687516b89f183e69541fd53bd9aa7f5b7bfdd17ea3fa45fdf5adfae7b61e32b06d35f8b5d1e0c9e346839f03e542afdde75f8471a2327f5c33014ed29d799a75941eee403bd4cbd326ed7f85328cab3bc8dbbac9cadba1a1578cb52e715b6e7bd9574e037defbfbdfe57264c2988c223817eeabfee737d67279c1de42ed9a9ee4465b76b811ae17f1836d6f608af8d6f08d31707d32299f107a213a5fc8665a203cafd4ecc45da093bb223edf919743c089ea9ecf7112e4b32636d5b04786056db6427b84be94f462e83d181db9f616304841bb46ffc55b9c2d88213f257e56b46297dddebfda80d48b8326e6bffc21ff148d05425dfe7cefbe96430350159f4f5bf1f10c726779b49d9761018dba24ac5f63ab07e1d91f1eb906200d4be091c5fb66a7ba14857ffd3ad7628a8a93fdbaa773758d5eca8f115bd83aafab7cd6e9a0d5e343ad05ba4aa7fdeeca0d9e057b781bbcbaa163f6fb5d0db4cb630c9eaec7d62bdd5def2f7e907751121e878fd0c6ecdc07a5da40aad831f88226317fa880fbe2aed29ff8bf548611010b010ecfcd704798767c70717c79d8b83e72f8f3b272f3aaf4f2f3ac7bf9c9c5f9c83679a753bf33a289e754e5e5f1cff707cd6797376f2eae0ec6f9dbf1cff8d74deb3db4ec1e35f0b46d496c01e994c5506dc6a047fb6892348dc18852a754e0eb9f754c8094a23fffc6faf2f0e7eb93c3e3b1bd7077f7efcf2f8f0a22379e9ce8bb3d3579dfcd72416ec720921713a3fff787c760c30a30f447895b0079d83d747aa39ed8c3d3271263875bf1fe275e867e907639f1fc730a84081d155c06d4f23966407fe0bd45bf02837d27f390e131fd8d5f95f5ffefe1e132d0eec936c3a96ff3886e0c071acd8522865ca32ae6cf58ed11b29c709622c2cd6698dfb331d2b264e39e17e1e7f62dbb7b43394e292377d9eacfa0faf7f4129e12e781d1f01029ae33a77912181c102e4287cb85f11da8cfe8da48ee9bfcd5cee4ef0f737501b8aab67314a77ce9ee3f59f1127293148fdb5c268afef68dde4aeaabb015b9135037c05b55cc5b70f46e1d3a8a6e5f063c1962a275661af9ce6bd1eca69ea40ce77ce2b94634c2aeb34ca29433929c0701df687360130341128c7a5d8b954ff496bf4efbc187d4f131849fe6867dc7979f2eae4a233f4c8a44e4c1c6f0097a4e827589001568b01bb7ba45c05772e47063c55f6a520de658f6eb8d1e9c84d4e9e1f80bfa03912c698d9807f24e966bc1bfec6aea912e683f6dc7444725ab9f08c7277e676dedcc5fd04af937188121ce43b9791c965642427dec9ebf3e3b38bcee959e7ecf8cdcb83c36379909d76bc7e5e3fe1e0368f3ac23a3f1dbc7c7b7cde4163d219cb034d103e756953848aad250835417231299e236ece32eefff5ede9c5813cca94a9e3d9a0b67b2264c2b3c7f2838504ffde708af12844ca91c9ae6e585bdd82649814a5abc69ea8037738c5ff72d3ed976cada3e397c717c7f7d8588d0da50db55f84fbbfab21553b705493ce764e5ac8490b9235279ded20edda4c5a9f226f4ef1df61ddfc92396a9a099999e58ec29d30ef449f9bb3d8a29386324623d642edee098e2f3062fe4b4e1089cb77a07a3c6b1e21fde1171c2272b67084fc3f9c0fbfa7f9f1ff017d1c80dd89322d912b6b2072c357bad04a015af8ff05b7bedca2d8b0277ea131917fc698c85d9f24a31603526f175d77366ebf69998d326b77549f1bbb3eef414d3ed0162fcf93ff1f6077606381a4f09291aa240f264efdb4c4816875386e31aab07614caf03afbbdc4c3a7cf3a0f2e2fd5156a333f39e70bd9eef2f281b79b154f75847e3021b98818f7fb38558898398818636d0c5220622e88d272176ed66e4973754b1a97a065bbc37bbb1598bbb664e644a64c3fd34b1df04767a76fac4aa15227340fb99673bcda7956b0994c754013075d2a98864f0b15ca51c13575cd9ef924949cd34edf77f9f92df39385663b847170a7394ad15047f1c2583d62b0ba4ef6d0b38952abf1ca8d6f9f248fdc77e7dc87f8cace2d23c1ec3d5f775a36a80158a9b456c1d77c3ff2948fa5b65d69d9f852b05c78a43bc0a4f692e51bef7a0f93eeb01980a13b284b84379b5a773a27e600d4219c39fa10b7d9cf59b85ab1ecb35a9175430fc2951e04120fb0099fda6ca1efd9ed1b88b04cd57a28df08f7f60226129ce39adb041544d4b509aee1d222c21dd70bf4ddf7367f7977c6bd9ea797c78b79a3a6db6d5bc62d70dfdfc57ee769ede47ea89c86e4e95d410f92e96bed424c5b56964474a8f50eb1ab77a8357dcf6e5158251b282a035d86cd15985a73ad124005b6aa0af1db54158e721b93a8dfb73a8bbc2c7f0735c49dfc4f1d9aad537340dcb711b5951a60e754332c87fa3b389cef762b6ff344360ccca8fd3400e5aeb21a54aed1a3a85da017a4ce7883435a8c74e833b0cfb452b0c805979c746a83428678edfdb5484578fc3102b799ea6a77a8dda6bcd7e752fe3e3dbb3c3a7d75a9e4f1b3e383c31f8f8f6cb3cd26462126b17194fc7ddca1ef8b27a35d34b88e285f20e1ee66d5cde667965d77363e6fdbed7bc3117f460723beb767b06b6ba3733c82dbafd60c8f7bbd5dd3cb70f99b455a9554f78ebb0c26b6add3b14a6df779e1f0eef5821666c5c098b83d7d570dae230d9b4309b69470685366e16dec6fe009f35b45b4dfb4c6ed2b4b5c690a2428730daf39c154ad6f6cd7d7ce0257f98d62679aac659a554cefdf2866c573b453d222dd7b8955ee9a5b89eccb25adf2370b5a7531091894b4c99d48e9c8328fad3cbe3dbddbb7aa905b5598adcab79752a8a5e4f7daaaa08dbc172f4cb266c04c1b34cbc137b88b3d822545295cfcc59452145381371b8f17cb2b96b9769b5e6fbb30eef5e2fc75f81aa5d8fc8ab18d3291f5fbb03a29319e3cdd61495246c1feeac7ca4b60b3d9a622cdf883f41ef1074b123388370dff868cae4f5e1f1dff727c74f43cf8487e3e7e7efed797c17f9197a787072fcf2f4ecf0e7e380e382b49c1e824647ed5d8d73c320999afde724bdcd74df994e48c4e3c77df785392c832381e3ce269cec3239ee6183d151f09fecd3de2a975f18867d7dc2315933a35f9177286c99cd1b563ff0b3c8f68aebe30d9e430810c189e234178248f3fb1e0f1f7df0dbe7df4c40abd811c01a8e057610c8961959531183a52d54a4b556c22a62d57310d0e5a21eb3317e7643f5590650e4129ab6f2d588d720e47ec6933c2d688190a299c1cff2a8c84a88b27020b7f11e64e9a0dc471af87520609d3f0d8be3f984a4146961a28066d9515f1742b55869edacd1bd7b0e3ec4139a82da2da45f510aced39a64c246d89f09db003392d5554b48aeae2d2042c2721c3f11c856c7bfa867908a5d0063286466408922ee79992984dd2a94a52ab539f1c4113c933b4887374c1d0ba24739382fb32728b5b5e806008aa18fa3d6742e70e80422988aa0fbaa52a0c4077486a52a3d3e04316ae5ec6575998ddbe626291cef29f63b1d0f7f775ce64a63b46ee407d358a56ef581b62c2898daca6d7f02c72a291a3f63c0f63a7183203a99c73cef4b0c3e7db657fa057dd1c989d702e58d671f6b71313296733df73e27128315d6784d1dbded35206ec68d88e55eeaf773f3fbc26dea58731f13431d0adcd09e03a3b8869cb888d0aaf8ac76343f2ab2e7c13915fc3df8cc284d2419e5a109dfc8299f5d11879f72296f5d8822ef86bdf64d3c07d2e89bbc22ed2d376d1ae4d3167eef448fec31c1b692dfb4b918b74d9515510bf10aeedc52117a34ece586721c42a0f1e3e5ca69fe22409fdeb582c8a2b3f4e1fc26abf80d57ef87f3416292881a8deadbe58b37172c9335af55ec2cc59e2b9ea1e0f93820ec02c6c42643ccd6d988c84c693624ae6b49b31943392a84b39f3cd864d92692db6be8b1cc9746b2865b75503d222496ccb6b168a6a7777bc3eeb7b260e64bc5ca904226cd6b9ba85905e5191658c8b8e011371bcdb458df5bd3be623f8b9733a2019cd6d36cea71964e4d466aa1c54608a6c42544f2a508a310446bd81744b352bb5e4b86c34ac98cf53e49d3158d5985f775edab5d6a3577e68045ea48c44f09713817039f28c3e0cf6cb98f9e6b93dc0a5ad779a9ad37a45380e56a8dbb555f03c30a2d502af395ad42e344849494ae959630f35764f3d1f8046d6cdc62484b12f5e9bfdbd63e7c56cc2a6cee52b7876d8639714d98d364f0b2e29e367c77dcdc4b955436e0b7ef6c37f73fa32522eabe5709727d61da2a33dfe76c68ad197dbf5f90081a1f54928dc83126188a693ed0c97551b58fe190883349532c83d831895e0d5ea2bb57612440a39d84c75048a978ae989e5041a849966fa076a66c1ada2345eb28f02a2e26212234c3233d3cc778915aa7ab64dcc35319578bfc15a8c1bcfbbe277d64208297cd24fa316cc953c4bf3a696b908944e06531bd5b7c6aa5493d24f15b2b7070e355f730e140d9abbb99dacc645dd87be0e9a89813b86468f840d5f6ce89d3cae2ba8f4fbe4deb34cf52c43c7da1b23d7c7496fddd76927bc09e324bc4a6c74c6a5a2fc662fbb30ae16a5a2030580a1aa289124c7a96b69768060c6c07edf31b0c618302950038b14116a1436f6abda6c79cb4276bb91247ff5f67a23d59a2f5895cda8deb66533ef085b3899ea6370d7290887a0e2d1f4884139a0d36fda6c728de9dd85cbb455a3362042f23246207c2a40285ce929267020d4bfa102941a09bd162ac5e1601904fe6025c2e44661c28c8d6cc29b1b5692f5a3e051392dc9ba2493c7538c1ed763f373f4f81bdc928ebf16399ffb332488177a649b08e565a5c146432cd947f4189398729f8341857234c024a41ced4bae8da3ef30692c5865b3ac9f235daa5228b52af0146f5da906fd489f68b5e38ccf584bec0893cb65951341990f9229b88f70cafc55c8596223a33552cecde21b8facab3782186114fa1707cf2fdf1cbc3e7e094aad34618127c2ab24ce8557128e4b15e8b84a194ad7b338975b74167487249e05ca9202cd6cae515af861dff32fc22b8f881245fe9b22635516f3cfadd86f5f118e9e7c8349f23f7765442c1236aaf1197cbcb54249dcb240af8e5fbfbd3c3af9e9e4e8f88c087558defbbd1f8f0ff46ba4f956eecf089c181ce3f6e57bc5787114dfc43396e965b44b48e672811e3fc677eeaf55b9c591fffb578608776d242b68d726954f8b3899658c93820a3f09b36b46722afc2239637392d0cc6748908957bde411cfbce2110f5ef08807cdbda9048c853f4188d1758927a1fff2e0ec87e3292d8043c43b3769917824f343b42e49e2aee99c646c1ee42526e91dabe511e1eb15a30911fe89604b3af7c3e6eadd6b03de995937dd5613d7b55f369faf6db1d27527f9312f962c9374a4257fac13c0507711e6797ccd9bc10ce591a1af6c78e155a4647336f9664abd995c926f1c6d764bf260c4f06430b59ddab3770d22e8883f1d0ee0c41513efd2eb6b25f83c4b97873a1c30e2784a21feb2672f593b397cdabe2ab0bf0c576d063d21790bac534b7bb83edd8cae4b8d355edb556fcfcf57492ce48bfe3ccd8ec386ef4f366153ca4a4cdadfb69002ab630dee1219336c07d6bcffa23c34c6b577821d86111291b0a9ccd37217db6c6c2cbb76b56ced139d482969af1868ecd84c253a94bd75d2ac63d57fd56e53af2306916121f061b1adf1064d8c196fde8979876bd0d8a41693628a71aa38114e72dceba170924f299fe4531d0e7f1dd10c71ab0f4ae860943c8dcc571270edd21d444ab383c289fc25bb81bfb8cac91c964d77b2965de35a863fb0ab5518bd7f9326b7f33849c0c372c656198bc27ad42a60dc42b15029542b5a082f98074821df9a9c1b31e24140bc9947d6acdad33aaf78d0628ef093b2bca3b3f8fe1dc5b2a3ad99d22126ac257175c5537cbb8f7d45c41cca937d8620a2a65e41b90bbb70749353da53ad7462624f3c96c5c5af2c73b76ac6a40cc090dd5d53e4cde32b96410888168d4eea6b5ddb66c34b1b3fbb046ad31227c34ad4ccbf4c57225ec6f95279bcc12a37ca0c1950e7928a04d5c886cbd170f00423f659d6bb7d9905f12e2f59fe0a12727b64adee077507152fbe3de72d334ecdaee9a444834b5f8dbc57720b573b7f2b09a9e31c319912483f9652c9daeaf086e0ffe02642639346ff5384475d945114d1d0e7eca34018fbb39443044eaec431933a9474e5b26922d0a5546048708c4736e6530a19d06851ce631e26c92d9c85ddacd70b7d3576fb0be1aa114417d3b99b4a9b3f14a6376aa5a5955d5b08b65c898e483b33a6d2791519ebf094efc10ca5386e2c661e2859812bff5eb1e568381c48b67cadf0a525d50d1a90549e78a757ffc4886d65491734438cec63c9984d0653125331191a75c78493f5251858795f1ec1d0d722cc173a2f3f8a31b9549a5c30d0c6e5146e4db2c5edacee2d5845326c90fba774e01c3baea1713c99d6ac92233420b11fce6667c066b2d9a161ce720c51674848d78a053d17a188a376584048222630c2049e721166425d748ef9b52c5e2fc4320918c224caf3601da55c302e02683d4f8a7c61ee41cbc6d9d66054c36b26dac689cbb22c4941d779b15a652ccfcfc56dc24eb884a604a003affb8c557b65a9a2033e3b6379b164f7ecb32c47956c49d7f0d2f982311144c43e9c4366f920748a2e582ede8a38c9830220d4aab468ae3311b40a5da2783ba6593b3e7596bd72ad8591c63087033efb81890a8a18750752a09227a7393faa79fc4b0822ecb7e177dfc80d87329a82f7917d639c056b73bd3e2b41441e7ef7ad1292e52e2d946230a7eb79cac58b701927d6394cd9cc35bda8535581c7025855660e27e2e1603b0fb418a31912beed9c78ff573eeccdc388796422a6a43bc4e481f7a0efb6ea3ff01ee0409424e4f112c2d82b41a7ddd0ebe624af68bda21fde7b763bcfc225530422ac1108586eefff9a2679c7eb8bbeb7f6ea2ca1627a590be72cf09af7291a90c8bf661c1c4a0ecfcfb19408d9444ca724872c31982c9020bc4fbdd2c344942549a41431a79e4756f238596c675dee26133655bf56b891fcd042d7a4ecc75b9113b48f42588854c24f9ecfb71d15290138e1b4109db07adfc3a3953c5900b135ba60b4c4e5bc4f059143a1dd41599259c34ca1dd57f560152bd3060e4e7292e1d142652a975b5bed1ed8b7a73c627436126aefd7d48c124200ab958a70a9a2008806ad715f89e768b5131a66fe8b38615536a12bd38d0642099873e3762abfaec5ca79a59c976363723035b24b6fa0e1729bd7ba01ff3a7315a0d76b95738a5e4ffd4005358be3ff5ab0ecf69c250c72637bb904da64168a702f5c2db274160b36f54c0c2061df5bb070b6d9548fd74c684d42fefcf622bc963b0a79b29187e108733ed9503cc0273d8c21f40cf504fb281e4679ee91c2cf993810228baf0ac190571f95473c89f03ac7e2a194185081cbc2cf2b7a3d761ffc28cf2fd847d1a72c286a6f3506261bbd9622b66433e5f9ea2ec36dc22ec26bba1c89f683ae858574377a02bdb51ee58d14536d92b4d92bd82279e388684da32dfc799c0896b5baf296d5ad01c31c6a2ae755ead05d5a03e6038754290ef6d2cbd33d2bf3ce50463cdfeb67e4ae1e2c0f25852ae5ddf8bb9e64c439ea7f862cacc11aee66cdd36c29c5bceae1348baf63de52f44b4bd9df64d95518bd9767cd4f711e5fc5492c6e65e98a65f94ab22037acf1d8f20540a996feff4b96550754ede18825e16dbd24ce34cbe396be8893e4553a63f5a645b6dde389d0f95c0ed3828b5a151c8d6ec19b24bc85d448b5d28b7819f3eb177ae1a06ab56261060ec6dd01297296292a239fe459fc1796f1985fc3d4d94771bc5c2dc23ccedfa4796cba70cb9bcf166e4ee1619aa4192c4cfaf18845a99ad4f38c85ef656994c4ab37a158c8dfcb307f7fb20caf9979309092bfcfd88a85c23cb94392cf8749bc32bfed8acaa7f3f853d507e83cf3585405e6eff334939c7a5a6411ab97b943d0ad92b8d9e8e7786667a08a4e0b9133512fab4f41959927298b19d05930d520ea14bf57b3ad97be8c794bdb0afe8ae098a57ec14229d99d3321627e0d4b7925d7e460ae1bc1d373364f33563d9ef03c56e088d2a4585ad4548f12b9edd30fe1ca3e9c1509ab3f55e3b245d56c6d5105595594db9fe7ab90dba7aadd3c611fcddfe70649e5436d3fca821fb2f483f9fd22b1bfcf1759ccdf9ba79f33358d3089aff9a196beccf38960cbbc7a3a67c95c3efcb3c8453cbf751a572b0d04c5eea5eaa9221f4e9143146ca921aef5d2ed9d2ea9e02c4b572faa45cfa32c4d92731eae0caad9923769cc45fe4b5be1dfea85472c1731af06662b0ed3349bc91ad5f5225c31d8ca178b8ce58b3499d58b5f8599dea3b64c6e198d5e8bdbd58271bd76e987132e52f3fb4596c21191b16b494fb3f07aa9a12cf15eeef683995c0179d09057e9a7607d17d5bb4a3f9ec79f1c9a772057f265988b7fed6614e195214cee5cffff776396649907eb96dd39bc6b770e77eecee11dbb7358db9d4377770eb776e7d0ecce21f9bd58903a8a7dc8c2959981fc7db1c8d2e27a611e9d9df0efdca1222da2c54105f27b6cb836bcab23a5c5c2edcd799dc5b30bb65c255248b428e3169fa51fb6ca0e32166e159ae78342a48dbe6491db8f7c36c097cfe6ef59fae15cca94e65975532b3a4b3f1c73f7857adbfa93d3f2d0dd64fa55e749cec8fcd6c5db84ebdfa14e7298f05631205a84d9814003ec8bf4ed6ac5b2c3306708f7cd659721bee72855840dd7ff78cbbe9cd26ebbc2e343cc67e987cda6ab7ef8462edc2ea98bb098c4741d85fc6dce8e4e5f052951bf7f4eb3f72ccb83d69beaaa52b73cbe615cbc8c73c1b87c21edf5bac87c329ccd6ad5bd5e552344182da012eb8e7e8ad907b8322fbb30edf228638c97365d176a3374c4a5b6b3104e0461187c42ad990a97cdc012bf234e28ff1e6df5308ac7f66b368dcb6e83117f2a2a3735e3a296c1259e51e65b7b1e751f369bee9064fa8247a1eabb03e2c1d8bc585f13f73f64b1d075bb0d8770c39464d662eade15209935c8f57a0c392e09e0920c652403bd1d52568d011ea18cc60d4dabb5f1454ebe67471775c6e62c633c323616b188f3ce22cc557e65c63b206487499cb35967af93172b96215c6ba14cd995fcde159bcdb60e54b45f031063160870cf0d69d36d2b341a9c3c5897041432f257498addbe39ca7d8613772bffcb2e5209ece4e3d852dfc75a7d9f621d852155d15126a1abbe0f6d84709ad148758ce052f025acf9e5e566637d33de1834389d23819589b3ba2c37912f57d701638c31c9fc148efc30a9f461395d974e39b04d5016a18c70bc858e067cadcba7348360166c05e6b9c4970efb08969beab20f8bc582659d2b56b93e58e81270c7f7fae60b78e4f869364cbd9081c1ee0c88110de6c0340b34c160c4b5cd0f89d99b8af9b3fb180e344c44af673c49f21ab4c7ada5009c80d9b5a2422207891bee832445824cd6efd96de045a6f4289ebd922cb047d4505bfdf3b65dc1ecb68080206a5f805b98cae357d98129a5e9b83a79aed2d96d908ee25e4f791857ddfc85dde6354f1ae36e0c3d6fd566cd5a8def3a078e2d6e334cb006da4dc494c6ea1d8ddd401e7f92f040f27cd475b9ad93746f22a6b8d4e3a8cda33e967ad5dde3b1db438de9dad520c3b5674f8ea6564ab81a082e4bd258db9fe32479cb97bf6d79cd0272bb80a2b18062c4cd027ed102f05680b62ccbbf14be63de84e48e862a73d932bd61ee62b81057d6e416183b5e9a6539952725641fab1d31a1c35e16bf3f97b2ca9864b22ea414f32abd610d4dbdae3e520340e024192649fa61d70bb94857f2cbe175a82659da8f9c709689383c07496a87abaf12b32ed295c13a55f0238baf1710cabe0fa5e97c9e33a14a473a0f5bed753a0cb8094453af607b4318549cc31c8ed84d1cb16da6d1b098bd1ef2520e521e18cf240b6598699b6579197e84de942409fd4b5a11ce66db66b6ee16ef6d6caf036d2b8300fe275ca0dac6f257aabb3300c57080379b0171ac56b24d7d2bfa5112c3469f894550dd8ed1ac73ccb956b8ee893edb6cc0db3c0a972cb948ffc2aec2ab7669a6ba668b26e1dea729469383bdff9ae287d7c4fb6ab8f7d5be27c59c97e90723e66850fc0c1f550bd69209b3c1983c1bf47a5558a69afb88fb100c47f11c996572a7a5be835b26ac6abe667a58471a5cdb038be715f47bbd1a544db76da056fd00cecb356c03a18a33c1f09805acefad3e7abfb751a8ee68acbc3aeb412aac4fee7024b67d359d645c16dc623aaac58fe7f833aecac60d133259abcb9e93cc461f6025496982387a3cc4523a903f0758dd45f8e689e44765c937df604c0af8f944d6e6f07338fc163b77f51217417b3de67a7130ebc5c19c200df3ba0d512c18b8ad337f66f46724a1cc8fa3949339657eca0f93387a4f169441b4fa8641dff4b42e478d20fbc20957f68c0e2a3ef96ea831053588d00fa14d46aeefd9c4ab46e9114f8ed1239e1ea1473c393e6f8ac90d8dfc73c744acf851342085f55458116eaf93561e0c4d2bf6552184fc4886549a8eaac07ad283f34294e718ddf86196a51fc8cdc4831f9797d5682f2fbd7e3a258b5ecf56cad1caf2c514133d87604e520ee4f498cf8279496698ec1a5b6ecac97a0ecad92e57dfeff5f40f5fb9ea865507b65465864ee4593d07f6464a057019c72851d3eaad944b5e7ae2256c2e3ce265729f4b284bf03bcdd49dfd6a26b642a28b1fe767ecd722ced84c4533d9ee7ec9667101a1539661927853ecbc53927943fc844ecc3bb21adcda3e0a3d0f406bf7230af79c1ef53d9235c024585f85d1fbeb2c2df82cf078ca9947ae9452b7f67416cee2220f1e9308727906de4a9e7a92c3490b91c49c99e6fac00a8603b23276462fbccad3a410cc23225d05de37833f7944d9ae61c90f257b5108d385a302562525a9218e9a7bb05e00e10d9aabac8ac91274c317e96a4783877bfbe4039c928f07c4fbbfb2d3b0839631df53a59d6f9f7cb7fa88bd60ad9ebf1d948d71c072b50c432c8ae5150fe344918db681d49bd8a13c6a1fca3783813b94c7ce509c8d06f819acb3c67074b24c96f9d785102cf31769167f9285495b2f12d98335fc7bbf3e5ce7c3f9ff77cfb5dc9e6b7975aec95ffb83efb03cdbd4efefe17083dfc3817ba2e5f73ed1d42508b57f5fca758a2a8208656775042090d231281c2573cbed7ea6a8235cb1bb5d315761f91f38ece4583ce2c9f725c18d68e2c46add7966e5ab509d58b3905fb32c2df2e4f69c891360022f5ebd0cd69797e0121c21703b4d312e47b55300ce932dca0e4746936ed7dda0f036a186bebc0f8b58480a76ff3d622e58ecef0ff148386840bb8356bb83bac502e7f2cb381763e7b71fce6648e000dcbd2b0e4065d8442dc166ec85beb1f3dbbd84d9f73a5e5f04ace1cb06f51e414e4b954d543ff85761ce7e0a93cdc6f3b0ea43025f471795bb617f1fe3d16fb7dc3897455404fba6d0a2b4c9d7c71f57c8437fdfbc7b9763f05c45e3e0ddbb7cf315f68877ed6129cac02d12135128ef4bf9a6e396fdfd5dfef5e65dfef557b2c6c365dbd5a1bb1643a90ce47adc1ff4990b52a5d56b857c762fd013013a8a3b21ba1be5847ffccbc9c5c9eb1fe4afd717c767c747e6972efce5e402cadebe7e75faf6b5fced5a419ad7d51a64aee98eac62372b45ee5604e7b8da819fa334367858ebe9d3ebb55e313cd2d1ead26cfc997af844b02e47103002f2733331de75d2c94324a8c24f57a1052a1833224ac4d1a32718939486fa2489e1d7fef75a58faf67b3ce2682809446b5092cf9f1f05f50aa5076433b9e476c10a9d89d5631f635da997351fa993c76392f393e83b72563f81dab9aed52f6a24998f2cea40bff0f2f67d66153395bb9bdab18266920e5577a76485baca3cd2011b29f7ad5bcf0f595aac4844e35eaf1bfb710e2aed985f8f850f030c94a76d98d94818eaf95c84a2c87584363fe6e3688c529a93467d828394ce83940a5f03f2941f7f8cc566237cf328bf332e02f96e2e42c1e83a879783b424195c70929caf64c075c49192534690a019de695be0b6a67e67db3132405072abfbe723136cb96a6d6f4d5f33015ec3874a8ad8568aad1b3055d9e54a1d1e8565f10d9b81ffe48b2c5daaa3af4e0ded3d43deeb813bba841fa5c5d880232f55a7529c6c5a216a77991771ee17ab5928985a05b840022a5f676970b39fb7f0460bcf036950241d32d17740dd5d8bf60aeba6c73c7254e2311ff32ea549af27ffcc21506f8203b76cb341c262bb0e41581ffdd0c41368d1cf6f4d3c0a79c492d70ed6c0b521b90c17f192a585d84eeeadee1dd474f9aa697593910aca69461495cddae2e56592e7a5992f674204189e05cb2a6b409752b335c6e647203059cbf660e782dda6fd67035eca31bb60d8becf612f2fc3a7bb434c2a73de6e58e8a8e3963b9cc77c7674fa0a7cdfe55b782428a589d21aaf58364fb325ec5108231cd48a3fc602719304d642afb6d52bcb8645114a696e8a99806d810c9617252c97fbe176f7761559daf9aa02785ac51f961bb549eac677553af42f1044a56973f106c963251dc766f962f5c9913ccd74be033592541135b89aa2ed6de19c9d37a79a946e080b5e7f19023ccbf7b99ff28b6aa0c77c861889ea2fb6f63ebfab773653f766e07f7a51bfac175c5faf8fb1b823289ab358729b642d201ef126282592b1bbe058518fb29ef1d2ed01c0298f826d60ea3d5b7bb5f53bf91dfd1b507c069cf7e94252baad8debd22c37129a7b3c1a8b8e5ba6bb323152b74e53f89c3bd4c66633b626266a6444d898ab6a824cd3e846c3ddb8d01dd402aff1d69732bc56290ee519d0c20a40ee86727b6a7ad635a0d1eeb0a5a51c730325b6e2e6b5428057919ce07295e8f5ba0eda86b3d9319f19efad11ebf5ba7512516fa089615b9549b2e20eda107ad1ebe5d5ded95e7b29c604773618c09add1961a876b44b2e40f224d8b1cf8e9c0c024ec81b13e4a649bdab7b694690592bf9161264d27569e3b8e83b92a04a5151cdab08a659bf8f398d27d99458cd0a579a15941ab1a15297a4a58aa863a2e8a89819339630c13a991f7352fd7699525b5a3bd06cb13a07ec33abbfc56a8d354be1bc5d5b675b9e36bf6e4f84ad3236ab15d53e5811be66119b91b6d8a1bc5a55503c8d545459abd039d4e0f3539e403a8a2a4044a5684a525ee9996292e1926425727aa85c6aacecb240785dae9aeaf906339d69057d49560ab30eef6ceec6c990af38aa2bf9585740c53ce80e89bbeef2b9b6e2e0e1adcefcee50b36add0101d6ad3b207a2d8205b12b651fd84cfd968dcd8faa01ac46b090a3b2b2e580ac8c3039943f8decb86f1e8e8fe823dd46963f86a59aa96bb22b1d9804a3157654ceb3dfaccea83423f9f9225c312a0c06eb67576531421955d278c381b1f9924aa9b8d5b7926bbe50df52d39d846d5a015005804a607ffff1172903aa578a4ae243c5ff7c853b6e8f6d56d6d5e93559e25fea5dda615a2daf2706268cbc2d4f44f3a27ced2aa9a8a51b800c73f757909094a25d3a12ec2f423e4b98da97fe55cc672847b9e4329c58a05a4be1360d52328fb35c5f0d86cb28ff523545dca6a688bf404db176649eaea32460b3b22c497c0f4d83694f8d9641ebcba804427c3fa1bd7a65f81b3426c645c16135446dfd345cd6a6412085dd6a91c63aaa803851580c807b15ae56106a449e808169018c5fa35aeebafa9a0f0160ee005a076c3aad77e8f07f66b87804d9648012805b7e5d5890f4aa213e18ae5c83b32962bbfb478da5801c0ece178d038f6218f8044630251684bc2c25c71ddf3b2ca5597eb09941372f4289d6b7ff533843263943334a136b518f11dc1868821c4eb8821590a42d90dd8f293491bfc7b16330ab9be904c9487c1703751f4628bbc3c181cceb7c51d33057c12450915c5db8b4841aeab0d2f84c40c80fcb87cc5d3e64f505d78eeac62b27c37e230f7ebb4255c2b9c41ae4cc04c3102a387dd7948030656269405076e32ccb7c76c3b25b3753b373bf437e0bce5ce7504dcd302d46579fb539946ca51a8a5309de7bcd90639b4d335c4eadb99a44c5c3177a0c75d700bd716c344d28104e4c79f9d63ae65152cc589095b8d76b94a5ee4c6367a600e8b6e9fd2be7ae512206812e819689530b636a814e6ea023c7ed1eb69039d679aec7c44c9b708c76c0517d2e35a815f57a106b23ad904a3e99d88c9b4d865212e15e4f0d2bc50e84a346404105b5f1ba0c98646c15ece463a5ab5ea08cc4640eff9ac8bf6bf651adde645a061c6f6d37430deb4b3de1d3b286d8e1aefda734d0ebd2a40cad125dae215211bca587d2762436a09a35a04a52ba42dcdc8cc9306e0ba69462157c2ee0bb66a79015f23c6197a1afb79aebe7e6aee78e89662bef12108c966454f2ac91750a922ed75dfb26ff5d3e1623c8fa249a33749c40b713bdb1cda6c5cabed97857699ab0b0965ba4e124aaf77dcb51d0a0acccd71855225e6d4d6e0aef47a1484c57283338905a1ce0bec6edf628b4b5c3398680b7c4ed397600b56ab873cf8a88a1f6436522a692df652559bba05ed81856d5f09a5178aab5ed9ae3ac6c8837550bb824c1d5ed88830056177e3f07d37859e2f2ae60d8993cf5543d6bab4f6dfd555b7d6ceb676df591ad8fdaeac366caf5df142a3f7542e57febc8ec69f33228a4d7dc1fa5db42762a79c149bab7ef5ed94ba7aebb844ec609192f2a5f0994f9716e425d609bf8b0136b715a1139b9729ff31269e1b9bdcbcbeb24bd0a93cb82c7bf16ec329e5d5e7aed61a9ab40cd7c4a21abdd6633c0fd61333cea3db21254ee528fbfc3bf2110ed1f5e2eff6bbc5cbefbc3cbe50f2f973fbc5cfef072f98f78b9981df18747cbff2e8f96ff80f38a769bf9c385e50f17963f5c58feb32e2c84fde194f28753ca1f4e297f38a5fce194f21f744af9e6cb6ea8fce194f28753ca1f4e297f38a5fce194f28753ca1f4e29ff66a7945db79a9b01185d53953cbf940343f3ecc544a10cafa18c3c3ced499c4d6d623d7d82dec704652c3f8fbe5389d4f6556227f9e35bcd7f7cf79d4e71fcddf72ac9f1f0d13e26396d8d61db882a7525d2b0f6a00e281dbe6bb3e168fffb016e05572d3bf79b2c5dc6b94b0f48a2b6ef9c327f168a90ac288304342ccb4760a24bb3e551284234c7bd9ec6e5d5c4d371b7f72e202c02cc7f01a0ffe5d5cb1f8558496463b92033eaa51c12f6c0268a1621bf661eb9a1ca07e55ec1827f394a9761cc75979b8df721168bc38ccd1897e43bf762de596c3621627e912578b3416a28adafab1125693883510cc8c24ff92a4baf3396e7f5249ab24633b1b50a4c981f1662a120b7a4eac92f7296f170c9e072fbad295d8579fe21cd66b274b4f20f0a01f14a203c1df59e87791c75bc7e8e967d2ff0fab7b88ce768e1a72bc611f355a6fc7ae06612ab79428ecf2c5ce6d58f7396499eec13cb30e90e305918161c72552b197431994d1b71c616bd1e7a4c295df8b04e70626c363792b31c7465b152016c36b241be4a79cede9ebd54ee35b5a28aea7af338614195da8853ef9a89832439d36d7f54f805eb368ed0c26fad461807ca4a43d7123503567d4c625daf07f98ce4a6a9578ceda002fbf3827d14446bd786fbfb8fa89dd9787ff038300fba8d6cbed5ce7b9d7634e27bd50bd0b1de3101d71153034632856fc1a21ca5729f49ae6141b52d47a21693bcb5bb16092a90f79a890f69f65e65c0f20853e9bc17b87a79175ac2dbbabc93ce3b5ebf5af5beb7cc3bec63c418247565c43b3e3c7dfdfae0f9e9d9c5f19157eb5deef97311f25998cd9e67e9879c65c7fc06e9a5bc9604ecfb2126571431bfb10fed16c49245f99867f3c3347d1f338824710de8859ae558279b1f5df57a683551d50a0364f5945ec196f07226f40e5695803c52e6341e29ab4632dd56d232eff53c9d7b710f22ba809f4f2d62e0b82272622a17b9f15dc850ae92d4d667dfeba145b30cc25bd7b1138bec76bda81535f057670dfda4420aff3357e1849bbd80acf6a96c53e7303fe547e90720726f3465ebf5165bf1ce9167e89e47dadec1adca22d9f2edaad9770125f6d7673f56ef424249e9622fd2f78c43d010fb28d915796ef962c178cdf56801500fafd24c204c12c40c2263d74d6edeeba1b92a267245f90ccd71f9d9e823953bc7774fdacf5630f6a524567b23a236731db342238aaa669ffbe05de7771775d966d365fee5e5e1c1ebc3e39797979fedcff5e935f216cbf3f09a51563a62a42f4c16bc2db1d13b8465f0fac87d7dec051dafef96049e275956a74f3b4e70e2bab737cc8dcd8e69c2b6abf4974f14fff4ade29e1e7f2b99278e1e3dc62491cfdf6332a7ded873c39ae335f35f9e1e1ebca41ee44196a8f7c3cbd3e7b240f9077925ca361b94d1758971d341a21e1edf354c28cb741ea572f76a8b38348494dbf0acc4c1bfb05bb9adb6941455faf1dcbfc2125d20222cfb284ef8aa10e063dbad5a841855bf6792ad26dc646647897c1f6f3652e6b949df034d9d1935ffc9fc305d5ea5672c4aaf79fc89cd10275ecaf5a03cc27050ebc6761a62e4d445180933c1dd09e740f62b2b434b0580b7759f932f1b781d5c7a166f57720e557e0056d3a334d40dae15c94c45c901902eddbe98b030dbd67554ab5b6f9d33f1632aa458badb8435998e62ab4337e7951528490b74423fceb540783a078a8f1829fc10f77a1253ce25e619c500eef574466a29ba5da5818b2c4655003598c04350ad5515c25a4f8fd767779f95d93283559a4ca51170d19a4be968606ce4faa3a3d40af1a9d18e46349ea4d3511765bd5e3732f6b10472da405f9b8d299dc5797895b019368e656ac7446aca0432769bb6f580d200b7468869629a36424943daef38774ace45ba5a29ed17df0e3c6d3c60510866d31380243603998829e158e51b76c0add6b585fa23e62b7a35ce34010b3245d9c053b92246cdfe2ad0b786d953c1d4ed4501515d14f021505f2eeaaef9dc56202f96dd928ee4c1c38c85a433d18c159be9dc1e222bd8d4c3b67f5ebb7fa07af0203da6f8ffb1f72fec6ddb58c238fe5524bc5d2e51c38ce434694a05a34d1ca7f5348933b693eeacaad72f2d41321b8a5049d08e2df1bbff1f1c5c085ee43833ddd9f9ef6ff2e4b14800c4f5e0e09c837351614deb9498d5c7073780f0c9ec8acd3e5df2cff2ab6cbb4559348f39bcd8aa3532e8a7406f9ea4c96d4958e9d72e9e9ac266d86e9532aa3b874adaa5f738de6e673ccd79c2829b284bfd591063e28bddc1366abada146e1a3ae5f24a085dda7bb51990990dc1b0234e6d09648d12f87de5b5dc70677e2518d75801ce4c3d7420e6722071d6be813d554c4166773905acda0d7babe92ed1f23d2331c5770cc464bbe3b05eb2dbf4e827763b875370d720ea47f897ea2ad60fa9e9c37ad75cec90927f6161f517f72cad2ed13929ca0be01f362fbbaa7bf0d4ec2e05a7b2bf132e4d7e7d6ebb25d5f65c6e6f736792da58ab97ca34d06dfd1825f1dcc86b2b738b066eb8c2247514deeb38060652472e36c2522bcb87eeec1a7b4583f899a608764fe4cec25d932a01c7c77f1a9818e196a3ca6c388ecbe374ce3e8f0761334952e9fa3a20a745f049410b49d4f38775757755531e48c9c6d410726269d59adc597475b606943e0bd248c41a18779cc5b9a41d892624bfa2810feb07559f00695a51a7694944e9338c25c5b24ea25b70aa897423e77016fb68cfd6b564e255555052bd7b08232294dacdbd5629575d5621869d1d7e3f5442eae1f74f158735fcfe99e4b1d044dd15e843718a48440dc03a3184eced779594d3c8f290b0c2f5db6ab2a0b9da5a3a82ff0e4e17b617f03e9261edd3599dfc10944b4ec96e4cd7d85191278909b4869c6b540434b393a021cf156e184518cf4bdd0058a9e7e98ea798d24507bf5d0d444ee30f3838b9cc59762de99f075bad80adab55a9f7878f7fc023de7d2f90b36431967fba43df2989f758fd7417616316665a3f5d835a2cc9652e59d088ceda562f24f5bf7f8a2164fbd7881bf4553c65c1d9edea92271db36ea77d9c06dccedb5850f735f4054d7d542520d078b5af54e05050f41fffe19420f76f8fec8b4653bb2e9e04e8986fca6ed19836c79cadd6a1d0965529c96887999f0866b7b384e50099f004e1a966ab35a831c213e960b29d8b1b0333140cd8840eef036a11245689994dcca6a5b5e5f395284a6efd89bded72041dea4216028709fee7b393776e5c3a770826d717d4bc48bec7fa62d441d1ac39a48d5766307ffe3a4e6388573446684f8448ee6b04847e3b3a9ef94a36a3bd61c78b5b5f98799eb56d9a0556dca8446d88748434945cdd6c8f22823099ed5106e65f78bbd51d31c7fa1e9aa2b28d76aaeeee0ffb94c6f6fe43b61b2ffc6c4797d1c505acf9c505c2a3ee007b3cbd669988d3656f1667b32289b29ec25e45c67a82438d08eba880b162fe05de1f56c8599b740639cf84cf3d8fcb5e8df46c98c9285af11d735a4cd22949602ef2291e25728aead3d4184e8ee1ea2ab1da477190af21b468448698a00dda9beda11295f2f0fb6f8a36b34364f7bf39a225a777959b7f2d25bdf36325241d0ee092f90efcfc1f40e49a3b13cf2681c7e1f029c664a18a0c652d6bfd7c00b741eaf931c664ae9fbf937b5b3fcb6f57eaf9403edfeae7ef31264bfdfc0c637209cf4f6bd105eebe5ef7eec8955ae4d9ec8c89ed169e72662d6b9a7b7f2c82df789cfa5887cf3cd9c5a633bcf9c784c25460d86eea9f2edaa88eb1f9151136d517cc351987f02fd41f90cbcadd7f152f87a97c7996c3ac31494376c60b723ebf21ba5a8c41e606da78f12a5ab2373c9ab379d81f96e4b6d2ab514a9213b4e482bf639f0522f0f83e63d788201065bdd411f6114196c0bfe4513607b1994d3dae1a41534cd27fc500fd4362803af13fb32afe6743997167e8421d6108d857782cdb6126ef0921ea5a17e6276b66e3461ac33039e21a38581d9c2f49933a400993b6630857f7afc832960a80336b14c2121ecd21c9df51d46dce81d15d01374fd98cc5d77024e5ad19511cd8d26e37b01837bd90db071a7085285d1d026d3f27616f48b246d2fe901859c20844576ee69fc498d3346ca53f9740c76986091fb7a787e3d06fa79a48acb5c4148346c18efec355bb9bb0ddf63b0085e927e3dca0d50ce84cb10090533ea95739ddb56aa3b865dfe86237a5539b30c14a5cded72b70a8f447836fffa1b53f40aad8d540c7e6bd3f46ec03f7eadfdc1ddd1b7755db7bc65147ec8601779934304cc98eeae507dd4dc8ad686e8ee5e1a1f65a468f1c5583d42a1509b00995d5c2639ecd14dd2489483fd57493dc4a6935e9d519d9460bdd865eeeaecfa8d0c31b392ab30ef02a1bed4c93dffb43cff3c100b97d01d711c5d56e63a5f40cc1ed645f7d07cf5507fb97fb5febfbce0e030ffb77f753f6c9ed6783ea68771625f1f24a5cf2cfb610e024755917c473cf43af8f7ffc707a544bd73768ea22c9e9018728a8a6f14e12a7dd050d508fbfa7b2854fecf690cf8d15a399679f819661f8f8871d85608174a1835a4df573d6f652966cf4d425bb7620806e542979c34604e41759c66f3a21c40e7840e92e28194b1aac0a6fd6d0d94eaa389055f4461dac114234221b220dd9e88cb5e924221689a66554ebf26be8f3b9cc21b5d097dd83ebdcbe4df4d41c587dc86a0fdb5dfab78c5ac5a674877daa525ae396fd6d8f1bbe7ff0c05fc551c297f74610778c122ef5960288934c67a4e2cca9830d0895fc8adf9c9b9888394465855087466ba18528e056c85e12ed9a2b1d11cec10173a4c51739b536ce123fe7b422681bd119f79c9c561c449018cda204935d7d5854eb05dde06b963acba2698f1a827243a176162877b6a68c07407df5fe229b5a1cd748c571d52d01671868cd024c20347bb851712c5f7221f82accc92afaac824cf3b2248684d217684a695323669506609fd7d3ced6109fd9c78def5f732e647233bd8290d62716cf74e7a873cb3d28f4c9a202937bdeaec9b25113614e712bc2bb1ad64377428b66573b1fb680860895c7db7be2fe9db0ddf68d8545cb5abca0e9444c494e8ffc029384e663341c0cae6f90d2f45e504ddb77017f38206b776b289d6b1d42d5dd190b583393b178d0a68150d8a32fed61e083d943205695c4f7ec8e78b57c484530bd168e6aa99a69b01b3883a8be7998902811611144892079360b0b20fd94d82ccccd1ed2d173b3b18d9f1ba2a8101cc9eda4028987681625335faed0556fbf87f6d67b0823b003ab835e051b0f053f0d6d4d66d1053f5b6937083ae07102e1f825f4f12fa1e1798502dd76c394a81e8582a8e0fe614c9afd08b3d6e9a375d11fbae70071c241a68e3635fc5cf0d5214f45c6936afff1bcda7a87d5775f02d12b777c6ec5614a74b5124eea95869c34bb168ad658152afc23f00b3c1e4aaeee8cada32c123cb3633db679a34a186ef0c978d7b0d7ceb0a335d02112d104fa858026c3a1ea5228f6862ac1b61e662ae19c8b28094d6b6a9a647ac84b6cdc70b953a24f8d87ce49ae8ac374e8e7439ef04cd11d2ae12cbe63c61b510bc14accfb4524f5c033d574a6cf1bb84567bc9889f8fa3e0c1693cd4cf63e4c5534f1ac8d177613a3bb2abdae1d72ee09ad083de0a4a69888d2c7a313d78eb183b4734c2c2f394fda40de0aaf5bc30955ae12dc91c68ee26e30efe8f664e1d86ba67cce30e9104b34fbd4b117daddd2b8e9be06f3ab68cdfc8dc4f7cdcf6b71dfd529d088202ca7d09fb4c3c8dfd71e14c1534ccc86fbda3a995a72b99816c3368b97d88d404f1499de9cc23aa3b4331a7e73512550124798b0234b52725d591293ee8eafdf949a36fb5ca3f99a990d0ea83da216feae7f5fc7a35db9d549daca55bbbf3962175d75f4a7c25ded5da384f4bc61904c1aa777fb3b1560be995c9293a6b972735723989a9e7f94cf30aa6fe941e796ec0f3ab7210233ba2678210910312ff29e2fd9f91e70b8bd4fec165b56eaec4a91f9aacdfea00d0d2acd8180fea0b5ea4816eff9c03cd75a69ae7e7fd05c7199a2d77165116a6d097530f0daca0d0703bd589bb2b53c077a3d868383efe41a74d9a0772eb46b790e3cc00ddd687e2edcacb9325a970746021a75a8248a76365c5e3828d5ea841bad3717a2cb84cf3e2172a5a95443b6427134e8593256718592c5f837447e61979f6201dcec619424bc10214a79ca102972969db184cd6c0a5f47b358dc86035219d64b7e19527b83e0718e74afb4bc6963be189676ea9dd14597394f0a39e182af43f444f647c2957e8446163c5b85081e9348307fffc9e0df484ffec50fea10d174bc5257d423b1bd51c7b9dbcfd231ce3f79a029dc00340783d4cfb479fb6330ce0a52a378f0cc0dfd54fc336b60b89e706a8ee205f83bdee14f187cf72ba226addd99b6ee49dd3bd4128362164d09735dc65beb8ee47f8143a1c5d7f5555d88bb3d1ebb2f1205d5fdd5a778d4a586d6e92b5a691ce6122ca8f5677f5f493fc52d1ff22d8f443bfd51a78461075e4b8c31c9daaef205de68589b08881e6027d74ea2e31ddf5fd37bafd8eb8a189d7e39beacbec17089e51fd736a6bad1f2afbabbe0c267cde1b073c14f98ac9908a7eef943bcbdfc93788611b8d2dcef061973f37b2f587d7d875afb74adab3cce8f2c84559ed63dcf1981b51faae6fcfa1feee6cb36bdead25b55bd69869e7111c780b83e5c4cb4203c12cf998b46e41e522105ac7a7d09aae38da6d44a04b16040d44964a8d59e6561abf2fec2e09ea9c42dad4530caed7ae2adc5871ac822e372b08df6f1a653d7e738bd8e9278de8b8460abb5e809decbd7198be6bd94a7fbd0cfcba4d23d43b8f495a2e72d35323b2bb12bc9b2d3b00f600ac40c9a220509c3fa8a0b0e9233452a91196581bdb8211195e35c938232b87b22393524585c8ed08c27c50a30efccf3fc3c30c40d75881b7569450b92cb9a68e4788a8c3ae59f89bf51e2c874bcf03725c9c92d0ef392646463a49a6e341bbc9178610303093302c304499512ce605c924b3a0b22971b86d7161fac885999a7d80a374f9395dd9951229c2af5ed9593a0196c99e2b0c14e01f908ecf4146b79ed83ca96750d4a57ed0074d20798bc83cefa6f23711564bc48e73edb430ced09bc87d8befc6d6854ea0aee7c7dc5f58869a13939c0e5d215aea899ee9e11b35032177845b53c976e190d475505400737b6aa03620e5c7679480740c58e632383c0f8ba17e7bda897e9867bead3decd154b7bb64a592667b0f5fe9f6af3ff215c2a82fcefe893fcbea35332f9efe85575b35a01863a04772ab41a5ff4704a8efe31baad0681c7b449f5919983cf814d188ca2e7f128dadbc3b349e47adf8a2c3657567084539fd1b5d532d534282313993b3594dd0c6392d23eefd273e5dd7aae7c7ced6738e424f7affd6b3fc5982010b722d08f5497448a7d1c94d82da5141300e451c3e58c666634fae5d6fe2da65c21df7ce40f08374859d2477a67657ad3004db0d60206f9b63f9c2aa36c92b2cf42a6ec9914b0de4f4b430ec54d538e7fb44a2afabb7550bfac75aac8d3d217449e288ef6684a05f1333a79b8f66725a1570a40511aaf408de77516add8f12b5a09a0956511cb008ea320eaf0a7282683a9b9a63e95e306843a62c677600da4fa2a98226bb76955d6c0e3d08b5ab6ef749e396a2f0d7005f4bf48b8e44b949f79e3e4c10cc33ca8fb808ba524e1b2db1d1aa35f50bfb375cee37cc6d354125698e86128173e8d51744ef6032e0eaaf522c2bd1ea90f1faea02d16ee203bd4ed48c61c8ea9c6c1e8d9a0a22c09faf5733440466fdfb9b1d7a236e3e032ab0c63d3f1324c49ecdefccc686c08ae88c696222b68ec105f794def08b07fdec9efe6a021924b9458393852894322fe449f0c06f07280e5db0ffaed31bc0d4de677dad74d42d6e4ca6d596129724dc5fed018ec65fc46b65f789e9fd04a06b748d86744e4df5fb2681da29b2c5aabf7578e2e10bf4125e9883964c8517d05ac060c54aa52b6e1964a851535a65493a976822bba42c7553671ce26c81e55ae3ad9844ba6814fc7137b78ac7c998089e4c9c38998125692c9149399631d17379cde90483554d02f84b0db3bf2052ec900939c66fb8681f9d63ff896e3510446639542e44cd971157a6da81329351de78f8ad088ce9ec3ebb796397a94e2307fe4cfbed017213bf2c8af9aacac35d82eaf3e409533b2d134f19d9f9021d6d4f39d9f7c2be94832d4112dee6bbf36e198ac2400c34497fe4655774d341880468fa217d5b1988757a53c7a2b5a4c0363a7f8b80e6d1563f960882331f5b3fd836ff9b7297e24b924d19a1d53a39a9647ba8e6fab33584f9b99a858ce9a9d43a1678c4474322585fc93d3c1287f9e8ef2bd3d1c4df229bdf3f36ffd784f028afcb6906983eaeeb7bb4345e7ae70025d52f1bc98b0e9380d9904861110d2b400b057bc5b249f6502a4ee9921ca8e683cf88046fe546bc4c29845d54abd44991ab2f2c1204012dd1bba9eac2d144f9bf562b213ef57b7e22863d14cec43e5fb1ae9ef9b0754eeaee2214787d6b1494ab26ef82f2795c58061b20570dd09f5457320640ed12b941aa9646e1018b6bb45d014dfc36467ea5005e9d8762b400fc8ceaba23c534d79260ea35128562806262db70c5e34668143fd8686085557f29e57b85ecd4906da6f859f92b8ebba5eafaae5704f16fe65edaeb78bef69f39a065e3a7868956f39ce29eee042eb07b9adb67dc9a83f3d20f3e6e12682e88bd727f719a3cf9d189cda31c37770b912a43e57aeef06c673b0727d77a03cdf0d9f2acf77cf305928bf786bfadd137245d1dbde93017932e8ad7a03b2ffdd935ed4fbee09f9ee496fd01bf686bd01f961d04adaff6180c8fc8f766494ddebc8a83b521c53b1016a11e25492d65359f06cc6d4870f73f8c26a21a54846d32a0c0570693190ed728e5543727a8d423d492ae22e1f030e0873a388b864e22cbe633e26731afbd82f82b3f7c7efde1d9d9242577a281b92ebe8abd8cd135be4e2ddc9857c9c9aab10394f1926d78a7859c57285c977df8ae0ecf8bf8e2edebc38fdf1e8d11a93153d7836d83f7836f8568bc6a37170f0c4f87c5bc8a1add6d88fc8803807fcaca9baede2c239c492da9d5ff5f9c5bbe3b72fce8f4fdeb5bf40f9f51299136f6d0ebb35c945c63f31c59b5c0782bf8e3fb3b984e1eb98ddbce49f4333931fd5bb7f8d3b2a5f47e20a75f7e9fcf4c5e1cf640e07c4d77cf7d3d18b57f23322cbbc81c3243c7836d01d7e15e55780984274f06cd03b7836404e8ed6115c49e4d7804190ee4682350317544443057c69055b628c502846c6dd531edf31e5724e5f0f14c1d9db176fdea84b02371900432663cfab3920ca83bb46d734b8deebba3fad75b0c6d92014a64a4f2fbe636e14764af938ebeae958032f24845957afc72e7c87a6fcf98b77af5e9cbe52ccec2afaec0f0784b747a341a66396d77becd10149a9ff64b02fb00b7619f50fbead25d9a1eca11eda537f33f557b6e87aeb4982680f0556edcf1d1e3d189046f7e9139b04c3a3a06151fa5110fd3d519bbfe2c4d007863e319ea90363f8bd3e31be934746ea3f7b025e73fde1e03bfc0f3a0376216a5147d5123947a0b800dea42ab89408ba729f4953eb04520e2488673c25f30ab15fd33448a24b9668b4406e691aac8a44c4499c32b2a49270e16b7ecdb2f76a1304f9152f92f9ab385fc579fe5ee5617229cf05f659903bfd70687b74e41c1927d5ae391aa3088547e4866601035b74351e303fd7df9ad013194b114166248820390ef9a33c8e13e48e01116447800872bb8f08eaeabe2421950d7cade7f25df51b4d31b9d0a7514e0e69543bc3e698bc85432e0ade1ebdfb70717c7ef4961cda732d0a5e1c9e1f7f3c9a524ed8240a8edf9d1fbd3bbf787f7afcf6c5e95fa7942b8123a58790fdeaf8ecc5cb3747afa67401efef4fde9f7c3c3abd78757cf6f6f8ec6c4a979ed75f785eff42824e81c9196de2f613920591e4b36ec862bc0a37a58be6df761c064910910d9825751d156b995b55a046fafaf8cd1b7287094b92780d5aaefddb925c9a682bd1ed25534160dec8a5f1af31b9907cfcae76d12cca98d857165292a53d8719f5954fa1899ed9b30f2fe5ef945e10b1fb0447495c3bd8cecb56a7f4c2fb67246f9e52cdaeeff05eeb987b02f0819d273c59f8a91f04a959666b30d76d06d59c680b52176f5ebc3c7a0311e452f0cfb6a3d77a6cbbf405443db6790bab587c213189bb79764df7228814bc4585e0aff9acc8c3fe10745f8b8ce98d26534cc521272c0552d516be928d80e2de2b9644b7e180c02dae7283fb739ccec3457019fc24f70159f179bc88599687d7c44a398a200a4e8f7ffce9fce2fce43d2972f69e67224ac0eb454eac565db3eb5741a4b5a93159c569bc8a40df508ffab06b253408923c6896c244199c864c797a6ef04976f8fd21b1f849beb8732cf76a178692bd92b82944a879f0e670f0be6569712cd80ac9537416bc2f32e6dc015cd3cd2289d7e1e69217e93cca62665c288748129b6b9e0944d6d17c1ea7cbf060501a538f8dfedd7f521ab5cc936b962d127ef3f0ca4ab2a29bab8c2d744003cbabdad7b7bcc8193833ac27a91882f5b4372cba6626cd3a44dc1f36fc27b90ee8fe193467be2e949fa662621dae8fc3d3c177dfb9de82e2077b0baab419b38671815653dd6eb9e37ee66b6311b51c4d95a3873bb5bf8f9c5b3f989c7ba2c8b9678a9afbbe4ecd492a6e7dff8db0a00fa4dd6cc8dd80a7a7e03e0140b9567b14cc1c77977e15a3587d4018d149124bfc6dc460f308d2a4207743bf15d4092a29f9f260112709b9a2c29081a22203d563a6eb59c159962d19b9a522d098912ce5b3a50d2f693507e48e0a659d7c2c6b3e926f123990132a2ab7a73715f177321e8427e402483f5123fd2a72cfa50265cf3bc83ea7cf4004664bf9abfbdba0034d5f1141b6a7f259f613283dd54b49ea49026fe6f8a4f52f2b0a2f0ace5ffc48e46f8304acc8bd8ae04b818253c4d294aef59b24004f4d916b9d086cd094aef4ebdbe377c76f5fbc99d25b9d707af2e1ddab293db244df6abb7d6b318fad416220724e0fc72df2429b89934dcd6a9c54e4861edbc5e9d1db938f47759bf41ab077c8442a3a2e5f4549b23fcb789e2b4b7750a03f1b2741e4b2b3f6d57084a58e69b493a853e491266c2f6a146d750c5c8f6ff4d1f0452ab70a2211e7a72c9a89777cce8e566b718b7d8edbb4eaa24e059b657509e025d1fc42a87a5b127e5f2fee4a4cce71f33c2fe03c3f8f969d47f9df814df3af658e019bfe8ff2bc3b2368f31a6e2b0c6e936796b15b2689c52ef72315f381dcf90bbdcb0f4fde9d9f9ebcb9f8f1f4e4c37b676bab8d5cc09efc78747a7e7c28f7682e07c477f323703da221b7263e5c9498a43b20401bd341d0c2bf05146c8c9e273fc8c5deb4cc52b42e89796fbc42b64bc1c27bd54bf90a4149eb253ae29482dacc8e3cfbdd2afe1ca7b9b2fed1372140f3aa8e81dfd654b7aa28305d544110f41dee98ec13a45928542fb1b885ca6674f3cd374a6b408d7ab58e32f6800177f72da29bb266da51b9d30de2fc2d5b719fe1f12c8c262c30ed4eb75b5e46932c78cdb39b289b9fb2c5b4deabcc84cdfd9a4e95da6d46a7890649ba55b221e83459dcabaf4dd6ddd995ae3fb9a29d9af464de521aee7022dc63c6d1278434833b2d47292b85f4b95162b8f2533ce29ec7fb94ce95f74f2e1963e5bc3991b90bcff3677466aed625718e2b5dbc88163ef045859f62b2a283d1eaf9ccd0f67b7b2bd5d02d9d4d5653e5db7e723bf53cbf9f6db7fd6c723bc5f2e57abbed5f9b9768bbed47f2c5c4835bfb29b9c52391dd6e725f905bb2c43a80d925de94d6d1a9a81efe7b3cc01adb24ffe029c48d6acb33aee25cf0ec76c2a6a3eab12a9756fa7b9d185e56ce6e7a605de53723955457b0ca29656a54a02414cbd9509f714cb2b21cf120ce0f9398a5c2f3fcd847eb22bf02648130897d94b17512cd984e7163a8b604f76d8d8d8dc8e2e59265218348862cd463551d3368c5246a0dcdab28bf0a133e0395ac40be912b9e0b2789e70292003dd592650a01beb74aced882f02c5ec66995a8dee1b2a55e89492172af38c93c130af7cd78e224eb1492b3289b39bd56ef654924ff57e46afafc6aaac7cc4710f61387768e5482999461097a8493c194c4544c865332a31d37fdb1cf94f24ad4115e6ae6a3355f2b4d525c9262479122bfb265f2ee321a0a4cb12a087991b3a3c5022efb5adff180a73a2c2ca93a42224cea39b67d4965d7b26acd921cbb24160ff862b1b37a37ab59bf93d76ca054ea56e997f0c2ff2aa2afed19a4ba1294f41c84a6b644dcf421445753a2faeec5c7972f4e2f5e1d7f3c7e75744a242595e21d54d8bbe8fa32ca5ec5d731e85efeb11479f270f9c6f7350507b8aefa275aa42889976915cd5c51e8eeda4576eda0e82e467f2a87a7d405f4222902bc502dac2cbf2d1e486f574b9f977233b689eddc5966436b3724b7d036307c6f8e5e9f97ff5f67cb5a3bd42c79fd829c57dbb57ba9fff69dfbd3d18b57c7ef7e84d5e41836f0eebdfb138be69298fc1b96ed5f2ef71fee721fa034a62b05b32b3ff5bf3fc0126ee5e3c1d3efb0045e78fe5e79dd57cf8fc1edbe7afe0edceeabe7a7e0765f3d7f0f6ef7d5f33370bbaf9e7f00b7fbf0fcace6477ff560c9b8a2f2776ca67f79bfff6ff17eaf9dd347f39fa2fc7d12ddaa2bb1abc6cbeb3863f3705396240de0dee927d0afcc720a5e9bace3fb14933428d2f8f7829d01277a3ca7e8b79b7d890b58b6afb8534498240edf168988d709838632553c075da27a057b14eda33d16a83a8ee7b2094900f053a682259334b830f37dc768ed2db88cd3b9ead645cec447fb5dedb52af52f7ff97f80bf7cbec35ffec3cd9dfa7dcd97fe76a3969d086ac3f72d99d0a7d3cbdbe3b932d4a9830caea9e7ec04b651baddf6d938f53ca1dc393a80e3e3508c85f14eed0f485141b920cdd238f407645195d868d95d683a4d78fa8647363a6dd8ac80a8ad7196cd5c17b36ba7b7a43ec4b063d8256ed5ebf8545637d976659466ea83bc502fe244f99b970f24a57d7f50795bc37ea3c3499c0bc2eca3c53562bb4d3be31eece809de3460c07a4a3709aa65830bb0d6bbed1efd038dc5fc0159374666ead7a292aa4aa7a1877ad633386c742f061c90ab0e50d28ca9a9a20add45ef9f169249f0cdbbd60b8ffc01496a6d1915733829547d61aa1f4ed622af39977471681724d53a42d983bdeec50ff519e81aa399c4927ce1f378dede63c77392b185de3ecea84ad78fdf6d9d15a97c74ded64325c205d69f7f51cb8ac8ad634f50f90daca465b7f787eb3b7836fc83b53007ca29d2770d9f48f56bfb03a385f9d4d1db4ffda75a09f3bbefff87753029af6295afa2752d4e4657c0726bffa2438a8f988a39d66d84a66392524a858968cd82a5e44855c84d605ba24c92e2902a8f415d6e7f180ecb4ab82d348d42275312d30129281bc55544b3d88d68164f49427355e328d16efd75cc74ded2039c998802b2f83eda4b6d9cf80463226822a99ece6faf8c9298fcbefa2cc75849ed1774a6afd77f3a39fff9e8af1787276f3ebc7d47bab69b2353fec2665d949ae37f88123a7f70247a499b5bab828e68f45741e4b2058a344b82252e7770aa3ad2695bf4602fb6072076c8bfac1e2d820ee16bbfa91d755fcccd2a1eea63d8bd8647a8fc392844e179f6a1af9fc0b9a79c059b4762ca3daf5d85e731f999fb0199d1d8f3628b8794ee7c14bc2c168b4a0b2ca2b3f10ce2ddcf3ea479b430aa60f5811b1aba52760c7208bc670e3063204a321a8d233fc5a15c29e60643f5d39a81defad6cfe092a21e06f46101401be8505dc4a4fec14009789e3acc6be4dc587c8ad379885e698a0e11e0e141e3310f273af764cd3290f3bfb29988709318a2df0b96dd2202370bfa1375ffad8e42f4234b6559365797017f2994955f0e5eff629e9e3111163ec3e5d4f10c57182720adc04d6cbbed88ea2953f5a55e3db10ac45a4bd7f12459cd4d7a977b249d5ff86c3298621d0cb7324fae2bf2b51d8fd9ab2d3d33af6396cc774f56da9e17151653eb9c8c84c27e192e31d1df9f391fa0eaf33c144afc909384fee10b0d07c07594c592d57ae5540619da52ef9ae5e1645a1fd1973a3da94f5494c491ae7427805d5cc87595d9a8746ee427d3fbfa011694d3b29c9664b143a08637a57bc21a7f54c661a499cc8e9bc01e2b49e737af79f6264e3f3de0938c4573d82ab4f334af8c9720086c7f68432a44737f032b15b2007eed32e5a13c9df433e16b11afe25cc43370e3d46afc75162d1bc3fbcaf6f509360b7ec33e0b16ba3e523d2aa5e6eeee659c4b969005f1fcdeae4af69f35274a93e990e76fe691888ee7213a3d3939bff8cb87a3d3bf2292b11c247481cc240f98afce763be6a8b3691845bdc9ee517fcdc475f6e85524a2f6053c51f155e45452d53e44faed0a529d192369c08822bbddc4d45959bd2c99bb26fda1ee77521a058405de685d093871ab1dbadda28b0b7510a8885b79ddffa6bfa9ca86b392703caae6d34cb72ff99d8c98d9087d417392d21979109a33b5b8584e3679c8d3b952f67790cc5cd20ef7e06b18cfebe813d018a82cffde6350c8631013b944a1843996e4ac57cd007c65f657e4735d92032c487e2edf6efd9c6e348324b99bef1f6b13b303c9dd4822e46db496cb3f0f7226fc2139c07d4ab5e6cb3585d4d1db68ed4056ce6afa0f860d6092fe1774b0cbdd28f85dad394635c8c3659c98c21ceaac5a4107cf5444895510cde7fe63d93dab2f0369a333e652dcd17cfe8776ef7667f7967453dee70a75913176c73caff6ea2f958e8e9aef2559e260ce12266486de2e7f56c3bbec3c173ccfd584a86a1244d89a042e17711a25c96dc5ee3951ff21e85d39aa758b5efab5777b8f93b328a932e59bcdd2161a479f054b73b9a9aa72ad2cc576ddd1feb0223d8f2a69e85d9d82f267c11df6f176ebdfc19d126bc60d7ec0c9ccd2bcc8d8298be6b71d7a1def33be8a7379b6e53cb906fb75f7e35994bebc5d47797e9cc6a283c119d48bafe4bad12649aea9f020173c032b595f225d7b1f92799e7b088163bb78beddf6fbea56ad427d9ee7be4938db6efd231f1374c58a0cd02ec27acf931beaefb811c41b1053c4a9c878be56780650c8299c451203eba8716b9ee7f16502682c7f1b6923fb7594e5ecd8fd5a7de8df5fa7a60540ed797e2bd733ac270c8dbd9c9cc4ea51dd59c8775c7e79b235e05c05975afea7abb7b2a1d632b8ee8cfac3cacbacaac39d714c9af36f3e5396333a4a4873d62a24d2ef43e477ab3f5fabfc4ffbc306f4ed9ae80e5dba4d39729cfee6b32bb68a025949dee63e18dea00fef8e4fdea97885f254f23c04e601af5f1c1e55a9dbad2f262c90bd9b52561fd72eff44aab876720697b4bb36ab8a71a2051d8e73b74fec16deba3673c2f9a762fd87e2756853d56bd8bbfa2a38793b8c32aba9ef9a6b4195f66a76a86eb3184c8df200e3c36fe3ba4b4513ab77c2a9a0a602e7d8529aa994b5d6a7569dee181c6d48b8afae2ab2ed36d5c78672a627615c21104c2eda6e77eb3ecac9e12ea503bca9fc1b7b9edfbcd053231c3933083d96540bd51194e76ccd52a3c3ebaf839b2c5ae32e8013f0d9844d4b02bed0786eeefd56d1277618cdaed8cfecb6d31d77e9b8fcaef91656ad761c17b69badd5e93aa49d81f89a62a83acb769152c05009e36e459737113af52b15ee2c05f318742b9a40a3c8805acf2e2a2992e23818f63c5f15ecb92d3ca4fe59c2a29abc5ab304a04fa816b9c94142d6ae6dc4c6fe0324277039eba74479d8b654087c6247d0fde945e5a77bbb15864c4a718971f8d06ae48e365f6a764b92d816fadf3a002077d4a12c250779f6e0cd223fbb696f8f9986e553ce0575cda86163b3cf6c560876264f373879c1acdaa43afc84aaac55fc015b2dd3c00366e09b9ddbcbb855517cb36431257ff8111cf9807e9ebae7530931ad385d48c9c10bb6e1e2deca439e65104a4e9ddcae1acca115d4d52647a36cb8a0876fc88cfcf9ece49d765a152fc0ed6d264fffd2f8e2ec98a807cc08ffba1971d9ba8e89917dd0a6326ac0ee4cfd4da36f574078736e9b53c31beb51cd5417b2b412a9d7195f0134edc684f16201455f2c23390c286d88ad2c88b0f6d1a7be791f65228e12493986fd618971a044250d14d75567a7931f35fab406978edc8baa80d2312f7245640164b6ba42a2ca9a34de6e6370ceaec41f24afb28ab14bd2870549da306dcc3cc942ed8945bcb4e62efe2ce0186e02aa8419cc8f7d5d625f1ee90a4dcce906c6170aa2844b723554d170e1798ba099aa7d1803dc9c322511cd55d17ada76bb294b724dbb9186113aa4c44272a82d3de33922f13cccc9d288388cf5120843901175b8201ace491df61c798e9eb530293159d1eb6015e7799c2e3dcf3e6a72ef4fd62be3caf3fa915ba00b9983c65b2078a294879c0bb4ab202a31e18671f76781c03e27d71a10e5c1699e29c7126e419467d2c0c04b1e13617f55d6a1b68d7c77e3cfb48626b226fee46dfc19b761ad06b6e3cfa1845b3baa4fd817d88adcfc5910434242f5e20a670dd695187281fd1cd7972f6b2e1f6f2d5f54d608ef0eb4eb6fead2af06d6b4709612075f8294b1738e5d84de4d77a8f08f6e23bc36e7711d3583d3606746c071706d4d721a37d724a1063c80b5210bc9aeac69e170a35c625932a76bcf5bd765a375e9005721e7d5fe31774015fd716d07e7f892357bc54fcc33b54fdbed644a7c512560b84d32e22e623fc7983083842bb54a7b49d3b9bb80487178ea59f01afb8ce418bb69055c666e9497dd6b5f98c583eb1e7f4de6849118e351a76c3a91480beebf7c3f0583595bef91ac774a1330b46049ce364a9ca8e7ccedc20d746145d90884aba072bba291667f951bc229ae638791913ed604c5ce0764590315d8013e27b7a400b1c3d208f8c403f6c16ad73ee0b57d109778e4888328a54bcfbb7420e092364edc4bb2d1b9a12db78bbb6f1fd61671aa08ff9294267a39aefd4b8ccb12dcc46a3469a7fb25f61798249d5b1656bd21d8a93c49676d7497d5b75fd4fa967012e34dac7bf133bb1d296b4cebf0fb9ae5a4a0e9c8cfb6db482276073daeb15f908c44d80487afa087795ed755b29f533629a6d8f378e334f5bcf67db43080df2c3c1160049aa8fc054d26e9140c4c73baf019c9c866c9c47d0cae1dc24f182e47788b0c00b6d41cc9ccc13a255651a5eb17428ed773e3c44663b59c18189a6c94d645c8c8422ea472f2481c381996532375f667c167798c281feac16f39b7da0fb6e6b254cbe8ee2bfbf525f653c23189cdf12ba7c2ddff2976ef7b6dce95faaeb49290fa157f64ce78a52e3be3abcb3865479fd94c1187b91fd5d986e2526d5d365715a4c45441328cc3b4b679c7da4fa82e318ec207b6b21b3ba4bbb083ed868b2432c9f0fae74e2f31899acc7dab377f8cd8ad8a3677bfd8cc3db5529aca53aa7630a5cec15456d4170bd67ced1b66c14265ba83026bacdb0ed9bd50a14fa0d3f6a0ad3942723acb296f75963b9d6d1ea2a6e7a2e9d65cd4b40bc12529b870ab83aac0e3d8cf7602a21a070eeb144eed93dd50d5e4582d54d5c129d5e0c48800b3286ca79d974df1c8b9636752abdd21b3af25fdd920c46d059fdddb17b93c9ffe2e212471248fff0061e003a57f3551df17857ab5e25a27e801823a1874c79c7c5966e7cc99b5c469d4506a9db7377fb8072c301041bf64b150d627a8f26665c99319d6eab5a50f65545f7efaaa8bc3ea6afd9cef162b384c9a46f756d6c02b9e2b1bbff57198d5a45d4ad0d53c9121eadb0e49418d7382ee29ccacfb77af4e4b4a8c8546288892157047dd246ecb0d664ddecd74238c3a954c6a7de99c2bd54473b22acb113b737135731c668ec3b454335774cd5c7e8f8c25a9e8b915f63375f7de9a4e1715da49ad2650cdaea86b6724751c698c18b43c2626eb8ccf589eb33948b236a533e9f78876127920b7d7a4d8c98abbcc7b2669f01d6b9797ae3a8ec2b175e4a30f6876d37be323d83d3d393971baeca9a9800889208c5cf0aca76404bfa63db4d710240ad7fc6ec5f23c5ab23d8a7e4dd11e33ef040cf3669f60e9a3d9279296fe02ac43db00d6b13af771f42e8829c0e34d3e3faea429c0d5bb00166b58ccebdcbee358e47eceb7c5f3463b795e4eeb1cab6445267cba531babc042ab3e4902bbb9fb33ad5b5428fa3b641626256f68b9e084f6876441fbc31173b8208985ab374dc9416c975a7aceddf057cddb5fcf4373b650fab92eff5c6290757e4d3d33508b6a5784493f510e895b0cb601f5b2e2f8d78667abb3fbe33565a1bfa63e4839719dd727ae16c01a1b396b1f18bf9d8d7adeba2e0d301a544d5e0ce52c59a08af9b2eee35646942b77e02720c81692c26aca6a3765496edbe205eb3cf09aac77cb2556b89a8a5b0ce112fafddb72ee79e22198b08600d7f53d65a1d081bab2c4a4e8d29474e0b7533f5145470538d62780ec7d85fd01e79b1d9cd0dcd9c10b9ab78f8835cdf5b69e572bf223f6639260b5ae7592541327116e298147d8ac6cb18702b4371f55969812df43292096fd885c937ac524af89a3740de45643d7477f85b75b7f45d137686f85c9c2f8765af8915d3880cbfe72bbed7ff49718137fb9ddb6f5e2979e274fd1a5e4b05774299b18e2f2d85f9198d8beaab349135af7acbf5eda95a129a23a20c4dd27a1f13471492347c0304a5b5b6255ed86cb92688d9d3bea73ba06016981b1e7f1c91c10e39d8ad9e7f20c777a498ef46eef537a17982aad0ff83ea597e4861e79de89e755f932b93eb5b7dbed5d602f2fb6db1b5c4309fda3edf60413a788e7f937e3dbed766dae87ef82788e4387d0049056162294d2b4523a52cab5dc686728e9947a4dd56b2131b57b471d77dc4ddbd33b9e8829c92076d4c89da2147bde473f95fdaacf5d863dafefde73a8c8f30ccac20520e14a2ed61fe0128f78a56358f3fd6645833189704dc02ab09fcb33d0984e8cb8bec7cfad26dca0842923d0e61a6385c1abd8f4ae458f01f068acef9b7ecb798a88fc1b4665188dea60531f9a04222c174af6a0208dae7362fcbfcfa734250237f51e5a5b7ca7b0b2ae1dd48859173b4ea11b36270a0004e085f83e0b14de816f1889a00f066e00a7642d6468acf1da393ec3a3dcf3fc884a4248220cdddab10f35b7f006ff32d288aca67bc3e2c2e289ccea72542821da219d244587e6c5c78a8040df00c930194c2bc1c1b191e9c40bbf9fd614fed2099baac598b0a9d5ce1310c4c56af8411e08b685d6c09629d4d1ee1b823ce205dd342fbde4517ed271335b2717dd113a31e2fb4a21143bfa7da6d41e0a252d1dcf47f5d217f716bf88e7a5036c2589e6a0d06e3c5daa853a8c665771bab4de1ddf7d511becfd2e56bfb6259863c7d62590a9b3fb3ca84c0a8ee754101eaca38ca582a6842b0b1ae5ae9f6684ef16033c4ca0d3c00346d995a5c27ee53b02a376f89b2eb9cfbbb6c6d5d815d8846e33a0950afeb9fd4f98fcb673421dd19632b5d9949589a16dcfcc651adc0020e6468f9ea4f6dc335611708f605405495da344292449562d4e583a632f331ecd67512e240b916add85e601f082086c338359910bbe3a555ad699f27e62b26a742dddf5895b99fae26beaaa7d21ab7260be2ae624925409b86c5e6d578c41b34b91e8247560f495fa06165aab1a9fb268ae43159ff9f589c5a60c48b354999fb42a710a51aa21c0869def5fe4323a3c753bf3013a4bb10290f40b3a4b4a425b8d0cec66eb2a32d52124c75b534d1af34e9d24232f6b480a1cd10ec686152a1d2f35f7eee88ce5bbf48e4c883ad93fab98688c376a95b0cf228b669d3bb82145ee0f31f199dac3f5850f1dbdc10a613423e245f38e463acc54b55a51f71563254ed69aecaa30563704424563b6c0d7a1a5e56b2ed35de2fbc7a4cdb9e0bd65ee6856f68b867b5a576a97784a5f84c18e6b94510affa40e82614b6d4b7dec56543696006895b63cdbd988f709572deb692f9cb4a0a97be095d4f50bf3a6f5b7ec6cb7a805776a5a8ceddf3c9f46fff1b2864658de84db79bc58ecbcd67041ad5bcbef1f0c6d2d0dc22e55be2f41d2df0ea30f80c186f14a973981e2c6d57280d11bab1953089b5769233770da753c6b5aa1ba776a4d2ccaeebde552b748fe4e78211db654f50656fc9a9dd8f5de11157a3225291d1075e9da008f51e61e32ef4738ab938794b2f1de5e1a5a7b7892d14cd35640e7ff69a09aeaa89b66235169105a064e5d272b9de935cb24149e5754a75fa341499d5ac5e5ae9d559f9876b5b44b225f6d0d3d374d6a6cd4990a8e1adb4a27ae4141d754032df2de7800abe781633d91dd6e9836cb325686dd1dc89c3bd674e79c346065c6b379052bbbe7c685d28ef561da4de7432df5e3859a168712acf909eb249b35d9eef8fff21d55a7085be38feeaf73f9355c9ddf5f4610817175d9c9eae36a4e69b703d56e1831923f8d4fbae44a8e10a345744a86b82b305c8334ad6b77ccb48738dfea863fcc43c117b0b6e735537cec9aa5bb27900a9856fa0b4c4e69ea3f7d8cc9ab3606f45fd58dd1b7db4ec445523a24196d69c1a4cf3370b46a0af25e9cf684a313934ef117386b636400123836e1532a26bcf264cb4adc7d735e92d7747325c43adcc4e92c29e6ea3a5bf2f8fabd32cc859875577084e7e1269acdd85a84e8db47dfea10e72c15fbb26b2844b2ad5839797f0452b712265856b2593171c5e7217a7f72768eca927cd8650d6b1d14a512b9ca5329830b0a8ace5876cd327db52f49d77ccdd39c51463270e259e4877cced485a1287255a4480415242bc9cb2edc09c82aa54daec35c84f276afd03b266e78f6a997b1df0b968bde228a13360f7a684feca15e9c83fbca9c65e0160ff4da7a688f9b6bcd6a4c60c30975524e322b7729c9ef9d88ccff9d767aa0dc6e37d6f964389996ce3108923fc71c5c47a1737c55962ec8d6fc01032c62d180371013838f19f00b8c4bacf02870a6bf74ec905ffeff7687c090fe5227c4eaec9e91ac08ca82228b1b21a21f2db3687df57b824275d3bc6092fee39405ad1d06ea1e45ce7e3c3a7fcd33b913639693a6f72875d66f4aeb564d923c3df6b0096020b4af220366f8f9c0f3fc74924d299b645390c8eb88d6aec3dd96cb82ce602c86261ae8c884f79595c7217f9e9925e67b7bd8e9965c1bd3b3099f42e7e42faef607b8f02eb2181104730a61d71a338a086ace279ae251bf25c6d8c14343c5e6784745aa1a525bb7f303e57f12046e28e573b6afbec0c4411cbfaa6a0c8a58f0229df794c7bce4b617a5f35eca55cb2cebada33c6773d213bcb7883fc36b2f52b9bd05cf7e4d6f7991f5587a1d671cfcd0f792f813eb499c9e878f1edddcdc04e97af51be88e3e5a47b34fd1923d021415fc9afe9abee6598f7d8e56eb8485bfa6f16acd33616acff8aaf7ef50f4df47366fd353b2d89f8458bf89d34fbd52178cd63c49f87e12a79ff665ebf29b5f53705bd693893ddaf8d2dff48a2c0e7bff6e76c8bf13d572a83b50e211c2650944fa76eb6754ad86beb4a81f5bce31c5abc32652bbed44bd9259c6e62c95dc9dcc72deecb11605fac9daa0c8758b83a865b2d054c833a2d525135ae9d1c7121bd87ab65bbf6b3b89b1240c43b1dd5698029760800a48c2ad4f057452767fa0f5f0e246322e2ccfcd4d4d2b03aebc415ab9a07970cd323947a3c4f3fc6882d492e956f7d597fbe00f6b4a134c16f794d235a1295d28dbd535b9a2bff89b9244849b49c464ae978907f2c7ae0bdfbd2ebc735dae4a724d779c50921fcce8c1286beb174330d449b67fe06a1867532d3f7d0522fc40778a6c4c63c2f4bfd631e176acc424a60206354a3b957b74f59cb076032ac7b6c2ec7c959830b719cff36bf3416bb9b20fafd44d2a83ae607d10c963c4fa5fd3612e407e69ce99a2a62a975b25c5846e6adf853387c42eec9e88db4717180e552dd008135b0a484a28f0bb6b467c2af99e1c63b2b160412ef9fc364c409fff3529c85c19f29909bca5d7812c010e3956812424a2c46a3e5434c72e938417973c133a7c5dc28c470ff02aac52c2fe90a85a25b13b524c91c4008d2f47ed2f99f990e97e81678b4bba0caa42e48e2e75eec85fd34b50b9d009f40e97f1c257427498a7c07142b54b0daad3f71e757c76ac0a11558976714bd5b4a2c529faf1e81c61023f9452936e7425ba101decb97a8676b0caf610457b2c9df139fb707a6c9d6c4300a691760628c937cfcb7ce31b506869dd48d40117cad452106914018a4538d7039a0631de37b3db0da72fdd12047d348fbd55b44686c8bfb1ee2d2b923cbc29cbcc47f65b4438ac937080dd783e735a8ca14567c7a16aab3cb44de65031b109218790dccbb0810dad84fe0fc2a3fd619fd20242cbb1202f2e7391f905867dafdf06a4b0f649fb434a6954d53046788cc628441e32a09db29b0fa7c761b497efa5c16f3c4e7de421bc372b4b5f905b4c4ee851a0ca901b7ae4303172396e70fd56260ee6d8bfc123414fb467b2ec76b382bd4c5ffab704bd8f6e55a0afe6b4346a286ba7f265cb5f26b76e4b7c41563810572ced1652e4d5b9ba310c6428c0258dfecce79475bb4dd6a77bab72476318184998145f98416566f364d5059dcbd0beb7738848ea72b56927579bc2fc9db3cf92afad24ab305d292ecb7b470f55fc893e1e0c3cef0330dee85437a8f8d662366379be2892b077ca662cbe66f39efaaa2777760fed995a30699a9b6cb72d7e11cd2311a1ce1c26479ccb3cdd11351b3d3301bd9b28ef6973914a9f5852a60d9d178ec77cb7d3a11ad22871c81b68640ffd7b8060f94bdc9c3ac75f4790cac567eaae59596ffb983070be2b9a3e94e0d8502bda37faa99265d4f208cf334f819a042741ce97e799e6ac0d56aa4a82a7959aac1f6c8223d99e0f8e1834e3faf33d0a02758f6fc0f7fec51738d0028d8643f206f5656ab2b6228e8362cacadf95bcd28dd8614d941aa13b70e8a74eb15a401f76d34b218e86b2d4888308931fbbc5223ffeb38b45bee9ba1c6bb1172001db85e58c8a0c89c94c9f6c725f038a9f65f125f337125eaa5b7a8e37dcc2963c1bfc0d10f27f79035029c96d954b2c0ee48eeb5e41162a0a2c18708d633a6b359501842a0f6c1926505b98a95a6daaf57390d94d63f24aacabf0392ef5e76ef755a7dd2ea54aeea68e4a4e9ae3315b8bd7b7d63f68246a77caa1d892ce269d6db7edefd47e55d823c21be88e33c268d77a10d35a845b7b146fc08b5c915683c4246e25294441fe4afd7bd48876e90c598c28b97bfa8d2fb153e97f1d9af8f18f44139d8a1f80caeeb911929d37c5d466d56826f587034c2648e721a2654d0e038608d29c9b238372395b082c27f965151896209eeaf31dd5f5904c0222285531c00d834d5066949210417250afd802daabdf2ba32926fff975da60d6a052bbb4c2c1224e04cb3ace3d2018ff6a0946864b6c786c7df568e690645480141422a13bacfc8c567c754485968316e6c9c8027208a06ee78c24f2bd3657644145a02792aca950e28db98ab02ee78c5c4377f4ac911555168172dec8ad6cafe1f964699a682bce27982cb75b7f4913d0e7facddf346c2c925239e8ffcd68b07fe32feac26d2319aee1a9110bdc4d3e82f8554dd2a53281628189999bcbbd1289ab4a215ad20177b4df4f3daf2dab72a07de76132dae1e894dd43052908a867e30da79232fa6f40ac96ba6a7c550f75db8ddec81170f03ffb9b228bc3cc95b311256e8c880b8161b1dd6ecaba4c6abb4579b462fb2a2032b262a919f83e92cc501c44c122e32b7f7249eec8d174f756eaf7c138e9865e930bba2287f4d62c803ca26d6ca2dcf396956b6ea55b1456b9a5ac2177a0fc82e615941fd2bc09e52059b2749e02e3704924fa0b4f94f7e935d11b2804d525557178434cb5e145cb57cf61d9a012bbec6b797089210ac67f9644fd6bdef87587a4183c81281f1d42537585e079ea3758f08cc4948fab571f652c9a8980a9082808874f07c3c16332eb2cb5e69988125de829893a0b99a1eb62df93a2b3981ac5c58acf992ef98ce4ddad667c11272c53c586df9164573115e357d5f603597416d33af2bab20159ef2a352bb28ca56e0f874372d53d64456c5c646ca14b1e9079f7a88b7ccdd2dc54f8985c77165bb115d7459e9055679124babbd5459e92db87ac7e2c2479c4b34acd7f59d7176a8a85f78724a5c8dc9040b3bfe501cf968fe67c963f020cb33f6792cdcd822bb14ac6710a02a05450b4c7484607a3ecb950d2e53d8abc285be69369b7d4cb913bef0deb574f95e71932239189ac097afe5a9644aa531b33aaaf8fdec669bc88d9bcc73ecf18e0ac1e9fc1aace47bd02dcbe4b1e3edd5f998273765dbb21924cb42cb42892a407c3ede993066e9fa2b932078c92de154bd68b22e9dd44591aa7cb3c408e7d6841274effa724a783916fba29ac32eda37fcb1f2d3ba27115937c6f6f5a628cb514e4d8cc72ef63cc1325b62cd52d39986daf587ecedff3351d1256967e7f48aab98038637a2cff07edb13d34ea5dc7792c7aff96d7c76b46cab3874f563551f91767a88748aaa475977413e710dc91cddb91ddfac392b0f4f78215ec35cf664c85fe73cbd9fc533593401075163863a29d59923bb82536bbe2c8605b6143571957ba1a79189fb1195be4f44e3d17d0ad8ca6dbed65652973221bb06f377f7fcd470ed10efeb867c2ee21ba29c951dd1b068cb641d5b743c6b2ee90b1cc586d32cf5bfae8d913846b3d0a1ab3aa1dfa134190691ae17a9716d50ab6d5861bd53aab6d6a46cef7b2ea1387d1719a81a3f182deb8dc12bbe99d8c2e6a6cd50dc9fc0bb77b985c0471fe5e39b97727567b253fa41b7d2a68df736f9b09675f34ed39a710410d8c8316f2e7e202ec92d5132fb219f8ffaac0f1735ddd47233c2e177ba67c7d47d4445752cb2540ff03b41dac25934433704fa99e3071723eb15b107a20b4072f98087c66f440c09cf1bc29bf91a93e9f64532a401942a1b9d60172203b2559a20273c78bb6750c377c5e5407504e9578b2c024a18351f2bc18257b7b389f24eead64b277301d3995e5a5f21ec66a81d7aa19000b6737a7f28731c9a66614058c428bf4bff9466d803006922e6444aed80c162c22b06d434e2ef84dcab2f06da021c009aef5c9b9786a9959da5da51cb598c628a571a9dcbc3cfaf5d1dea325f9894ea635933c6310192ffc9ff40c9b4b9c9fb472ad3523d18a5c8c70b9a2ef33b6883f83cd97ac102cbe0cc6c9e0b948051d58bb2feb028ad88f430147936b6548e0b37050d62c03253fa65b07e8644e077482ea837a36ddb0afaa27c3c19f7eb23e137ed23766b86ae885d91535bf4e6c3c681a096744eba4455693a0e1fc30f23c1bf04cbe82ce2958d055e6c29575a9c060070a109cdfc45a18358b726654834378d1f6e32194becc58f46904e91a1e42fdadb000a02ae9c5f0796f061f82d7b802dbbb1a2e71ab84a5748c02b4f7ce176480c31413e86141079260b3f961ba8742d4ba75c0d5861b8cf22a867d6ec24a2634dd7b2731c5249f921c8f8a3dcafc88243097a5d9bb89954075462157e6331d64a99fd05bcf1393dbe9762b26e83ffec3d0a5688ac7890a45d645cd26d06f41138d9930d0517dc0682017c53898f3948db0ea2f8db48f033d1c22c7074380c573366604c7dbe3212268a252357b3695b97e0688118ff517bd9b585cf53eb1dbbcb7417b0dc190ba00243d84f75089c28c201badbd57943e230801d85680fcce153e7c015be8d358b6366e8b4e3688a210d1012228940f07c82822a06fd09e8fd01ec315b139a1e1d425371d3b94099b96b8f4a11d1c8a40f033806cfff153a7e3efcd3d804cd14a73d68184305b796fcff9e4b7fa5166ed7d387590c488d12fd7499a56dce353f0e3d81dbfb5c4a125647c899c411db14bfad3c6fd202c800340c001203bbdd087800e0c6b8e0216a80750cbe07b7e9fa9d01420b4fac46e95be01bb1d2314c272c004db257943d037de230939f24f8a31c90cde73e6f0b4e287cc7d3a422335bcd4f3fc98caaad31dd51289377f23827ef40589a1124c8e21bc9169e095d5723f3447dba8ee3c4f91838f0f86c8c4117a4d3726f46ab85945ebb029b8b0f8d31ae7332dbfa8423dea1584e8252485e8195a61e841d5c991bd8791a96886a61e3d3e7d58758087fcb0cd75297a4efb60131ce0acc3137dbdfb4235db0d83449484a749a77f510994dbedd247c3ef1ec3ac82602d12ec942dda2c519de82c892554c32322a9d7eafd465763fc0b764a3c1b226f1833f119ad36c3825ccca2645624b2aaab285db2f9cb58e4a12017ba2bca9921abbf1fc8047195b1687ea84805f25e4b69149e3fe4695eacf45b890393eb349d900b4370400447f30965a5b9e4a9cd116b6fe52ba2e24187725a93e8ae6b05aad22b7221b903d975756f1fee0fc985eb72ba242bb6e29d735955736d68c7998afa1c3abacecab2b42c4991331bdebf73695ef938700a69231c9972df829aafb4de86fde868b1a83b4b687fa38a549f1cafd4a5da35fb294ae7096b6dc5fae7cde2ba1454f58a5d16cb8fcdf0ed90f526bae5857840f7dc825527dfee5a0ef3992c50153f65f362c6b22f0c45977247d00d68d50770e1230b36840cada28a5d96854db0c430226720117dcbe72c2cc89916148673520b911d7e26b384a7f6b53906eb04c5b83307872880b00f9e7e8f08c32357ed8bcc6806eea775707f5084fac46e553006b6009d4775aab9fce5a6c55716ea89e4d432441d3c6654f19823eda25cfb5ce7990fc60aeabc958c9176d159716eda775a2bbdc6aef24e76158c1966133e752c0e267cea79b687c93899f06908b60ea5665a7ddec1d1623cebe66439de24d428d8589b83051d8c16cff968b1b78793c9c2e564179293752a3361baeea34122a0410a4d7fcc0ce591dbf3e275249157d749f5595d06293e0b379c80327938c5f9c72889e706b43ed96b0e347c1a3c0b9e2252a4b9882e13767168e5e300afeb2ae7bd96d68739b9b8383b3a3c3d3abf808068ef5ebc39bb787572f1eee4fce2c3d9d1c5c9e9c55f4f3e5cfc72fce6cdc5cba38bd7c7a747afc28d12bca8aa5fc5f9dadc9f1037e34471de44d9c8841958476d344c84af4bf2927ef0bcd7dbed8711b3d1c85f1aa0d96e5f3e30d8f74005fb860b96583e3cfdc1719233fb97f4fc5fd2f3ff59e979b6ddce7c7470f03d329ecefa435228594a2e9f15934e1674a315016a8821a2fd81c4f4a5236e5c372026270914b4f5ee822c5218e30ac59b3972e8249ee94b550ba7e4b1b27b16d607796e747b122d0ed63df6135c96bad4c23538938d5da93ecd6b02fc6ba5da7e65051d4c9e2c738308e713362529bd72b434e4d9b63f7c9ec274fef0541e93a47f3b49a7b8663b268c6f93a36bd905551a0e55720bba6c24a5228038ad10d9b1ae622d51c8249b92880a52d06cb46c9e5205f63c59e30f8814982c27c594c65a11390ed65751cee6a76c19e7a2d2c6cc65cf738586e0fccc71de75f8adfc7cc2a7b048234efb032dc509b2467d637fe5b753e13bc221d028a7fde188aba13f4324230c978e00706510ea2584da9bf9683818c00c5daa607b77f0e34cd2249deae0782c9dc52c8775bda5932959d24d492ee59f3bb8da506b7da27e6e1a3ee42f9ab205097adb2d2ad24f29bf49f7a1413462863a398fb22513f4c64f7137482fc815990320adbb2d1e35328dacf7ca91b34dd404cbe1fff00c61726d081d153fba3f2009bd069b2d2234fa9573d4ec1dd464877858d75301424fc01c3f1e204c8c0854842de148cbcfbdcf5c9ffa4ab70c873ad5576fad8f266c0a17e391f0050e278c08c727dc5b33ffadc6aba004323f649e271cbf49d710cfafbe96e7c68d5ba5157431d7c4c09b38172c6599f24c6c938fb5ba6ade76f1e7483cf5996a05cb7d16c4b9dc28d11280fd4cf0f59acd7d0ca72e8094dcb129dc0e28857ccf339036eaea959163b73b6672e2fcbd24ab6479e1e3ed96b9775241c61216e5ca0389ecf167ba89d3df984639ef936219a727d99cd511f995de694384c9d57df8976172ede392b4eacc5fde8221538b6e242944989667ad329f05f77a0d1423b0dd7713311dcddbf99e379f8829a534db6e7df9a87b7c8024ec415e269b1ae032f53cd94707a17faa9b0e4ab69cbde3733672fd0f56ee1e337ae4a7f568c42a33a599ec1eb3c2772db8e7e96112cf3e69c9bd7e3b8cd6a2c8984d7cc58bcb84d50b3a69cde26fb96479f94dda4ee92cfa965f77a47416fdb06ebedb627e46fb59308f2172eb1c833568df479785104a98ee338d1af1768be2745d288fd0db2d52be24cd9b609f4594b108de31268cf633758dd16323436933da1f5a1f1a4aaae1a7dd77c929acf7c1e321228298345c9384bfd1bbbe9277fb67f4d03f23aafd3372a6b790e7f912db9c6372a60ecc270893dc84b960b44efb2809e54ff46d24ae822c4ae77ce5e39a4c5b6d10ff00938f145d5c00a97e9c0a96a55162b6ef3768ef27726cb361e728114796cbbc917b33a590d7e4e3d44a27271fa7b087467d78343ee1943f1d09ca3538956b546599197ea2974fd61b8868b9dd3e0589b288966316d68f8a778e1e9df966bb7dd2d7e53defa97954cbc66a727de8de1353b9d30eae19c6a83d288f9fc7a82ee5afc49e93e3a90a90589360e3cd9c6f988d0a59de5cc509f399e7d91e560e079a9fbfb2a20e4125624803836a0f9523a91d94d2444c31060f871d58fbb03359f95dec40e5b5e23699d404f5af0d1c2847f00fe9a2cb4eb2e042001120ab27299d4c476284537b400b7aea0b2567103435777883e7627f7f845ff9e9444c099a29bc3007b98f2a3a1889e7a91b57c894bd2c2e25ce4040d0d9517c30b3cd3c2ff5bcd6643749459020772e4bb3e43f74315eda58fd5fecff07bf31f54a6052d5f5bbac4b22a0d78a7af94562d8dd3e0eb6dbbe7ab0e139da29414dc6e7c818fed2706561b0c4840582bfe1372c3b94d4029624752d81a413f40bbbfc140bb4c7a614dde8672133def23b95ba920f82a4a53281da4469bc82a960e93cfc8b8f5e987744aae7a3748e30b145d5f56dccd39d1f1c9b12ee67b98832b1f39333998b30011753b1d3a3739b8088f3027d2ac98f924ff8a6c60cfe556fc31f27cca263f90ce4c1cf4ea2ba90925b4da656144f2a299eb48ba281ec6fdc4a69ea84c367e52f9ee77f43bb17d947f3f81ae12017b709736717f89438b5d063428aff1cb8ab53bd9076be5d927b4bc10a54afb8369fcd5ed8cf6b2be2bc2901c47fd2bffac8ed27c2e4cfb5b4d80186ffaae5e47acd1993c9b5762424308ac06caf378bd27512dd9a5f79ea17cbabdebc50f5cee07eaac7566b01e2ab7496ddae053ccde55f10de243c9ab339f85a558f2b2622fb0a3de9ada322673d684afe89d3656f9df165c6f2bc974582e98672c63eb139fcc822b9889244be83007fde13f18a29c5b6de354f8a95f9ec2682403028c8d7492c7cd403df278a64c9f42f67cd40694c8936b8a517b8025b40d2346310bf5c2177c229020508b98c291ba73ae643982ac3dc43e58a0a7ce3eae340c23ca383117b9e791eb8e4a694cbcdc0f6f68cc7846c9fe993643812cfe94c16ccf6852a1aef8b291c2a56118951aec92b4686cfc578b82ff44d98835167cc8d44669323e62a81dae48255aa50754747cafd998bdf8d7aa583d08d8a650ad75400e83425caa75b8d1503127011cd186ef13b709fe00bca267caa7c5083a3243fc521522d417859e5975325d02c34e552d7a1121489f357e64203e4146c4e35199c56571d3a67dc4e0afb434a69aaa929b862c3e3190b233dfa2e1e97eacc6a5e7356533153e1128143e43c69e89b35326bca673ac27e92f89c980a2b8fe229bb8112b6adaa0309449aab05669725958cf3fb1f246a08e6ccac8f8fc970f0a7ce5e6a57c54eff9aea630bd55455844ea6049cc8c81736a73983e082c08cd38495dc2f1ce33bb259abb9d7cbe65e682a286c2ea7d620d560e6c0de48193ad7eb1b37137c1c1a4996aba0ebaeb8b697b6efe05d791774cd182e492ef8da010c7710f7f6b5f1ddb895b2abb733b9aac94b2034a1263741f2fef7802bf478ad2427ade976652a74c64ae226c86d50814d6b9444dcb3f5154ad446cc72fbca335ea2e4160a69a3990e6ca49452768e71d76a997ddc41fcd6d3eb62288815c4aac15015df4375023aaa9e6b32c7b6b6895685515b45322eea2bc52fe4ba0a584870dea7aa8f57ec4c44ab75d725380b6cf676fb2a122c48f98d8f4bd2c26b50579c9f67456e5e4b392470f931df1d0fb1acd9d31af5c91d8eebae6d60d291a3b74db3863e790c3ae456178afb31495dd571d7e8b69655d3394f49ea2c08f7372571c08d403d7a74997e200be6a798a4a57c28f405fe9a513b0fdae84de9d090ab9d397346273f90e16372f03d797c3025d78cfee279086e113bc93eb2d204882c66c8d8b77c0e248579f73c7fc52a22d72da6ba7aab9a39679f45a37ecfebaf185942bedfbf66dbad64c09e3d977f87c33fd115c3e4925125a901b3c1c3ab283be473e63f3ec0e48ed1cd255bf08c1da7eb42849b1d6c75b8d1bc6d8878fab2fa0011c31f37328c384d42647531114ed0ac9a2a499512f489ddae2541880848cc74b5681de582a1a9326ee7964579580f0f6bdfd43b59cfdbd14f74991459afded7de27763be73769cff4583e14ebde8a173993192e215aeb37b0625fdd73c5c0edea3be43eb4f78a1aff9bfbafed85be7600dac864d70854f64387a01980af1a43498e1888dead2d1153c2002dbc665a780d75a0d0d89ff7299d573e8f40d7e610b6a2290c0de9e2bd83831f8c7ace2108f3742105d44aca5c754fbdcbc1990afa032b0cb684ba63efc4ee31840049f49c89284eb0442f918824666063151640212d30e4816900fb1b4637d5c56178c748ed3e366cdee3b5ee5fab78f3d70cb3b039954da04321a77710bfbb06b8560edefc48e284d62747e97ce7070a2edadf28e8329f956604ea52f1828d0114c0874a476b38b4cbac94750f0e7e00f6402f72c75730ac8a691bfb4be679e81397d45b0a36f540b05db0ed96f769d7c7634e9be947e9dcf32e18e8244bc615877ec62a9ed44f19cdf04eb6f40208424c385d3b743958400043118f55ac141a6bdd6eeac7f4469e94302d3a0f93df7d8e258f8bc358915f3ea3b76c5cd716dc0d07b0a47a5e6e20465b638be8bcc707b08f6eaee2d995be0991db77402ecdd6abce07fd8dcfa8725f8429a597ccf38ef41d0a6bec294580295f970d35c778e15f185940b3dbea26a77fcd3c4fa38eb1cf602508673463d4881b608311a694e4478db9504799db93e60cc40bbfef8b6026b2e46750770fa244e8a71513d1cfec16fc59e9029e670a283633985d4599e70d9fab27c3685afd3499a85cd7c1e49a8c2ea2c014295bbdddb1a20e980b0de65a391716e69e75c063c9ff5fb9a079c702871ad1708a75706ff2bb2f300eb59d9356d28cc78a0207a5e0389cc4444ccb92bcd5eb72a67fcf9b62a0cfccdc2dd013087ddb75e3f696a92bb7670364dc2e1ff9cec50d1ebd65ee3bd16a86c215ff7f8296ced8f85cfe377c7478cee8844dc333469d8ba3375a3875c60cff782699ab73b8a63d976f6a389f55dc205c499bac0912dbdbc39f992f266ceaf6e22756d37c60357b858faca1bf0b765f4e8163084b0ef1e4ea07ea3b6637d18bca9040ee715970e006b6d63db0e119a02662ae2acff425559fd273302e914d12391ffa16ff3da39b194f7816f60704c811fd2b1921f98ccccb3e402192696c15c5897c58f1545cc9076553269fd6519edff06c0e76a451ba844a72166533282858a27e3e0bf8d5ad141924df30f6a96e63fa1b73742d3c4f326473a6ae43aae7fa0583312db277c862dcefbf67130545d3b076832c9cdb3f87265097d1c0766eb72cc8b399168e6fb78a41c0c18c67cae3d63c4e971f72233d07031eb62b1793c72acc319f33492a8cddeb54f7aef395d948fd5fea114405f519453c457b0c3bbc8e1b97c217f74bf6719033f142882cbe2c84041fa43e1e214c44a7bf06007be2ccd56b7759605e47cec4997591d45375935f5f25cff3d1ec8acd3e5df2cf48dbea65d13ce6f0e26c920f5a20760187f17916cd3eb16cbbf51b291d7176a09363d50a9ba3501ff024edf66afe8ae5b32c5e0bb9f96b32974ab82630019b3bd0255117e51db72f9df1bcd36e5feca9ecc4aeac9c09432842391253481cd55cb5282fb3cc7641e29c8d8a48546420f8e80f48b7fc843b3ec14a92b38615120c95c48ed71906619eef6997a5c58aa956d3a07a2931d92c9968d95818010834dec8b53d50f24058e7385dba9f376140a95caa0b21b94665290fc5da75abdd57acb9af1a95c1fa8a2a34a8f1926586e12b58b0776a9ee7671ae458a0616e8c44563014a24594e40c859aa2041ba60cabe8c63ef83bd4515d31e90f94dce77746b3e0ebf5d447bfb74012756bae23bcddfabfb3a03bb7e13e409dd3bf30fae8fffac1b778f2ebafbf3e9a3e227f610f75eef333a37f610f70eff3e38e720d073fdfec28d672f1f3d71d05bb9cfcfce7aeb69b6e7efebcbb60ddd1cf7fed28d874f5c3c4ce729dce7ec48ef25dee7ed21d655b0e7fb21d056b2e7ff88e4235a73f71f729f245af3f109578d330e9ecb2e166bb6db8198d85e7b1492ca6db2d6b5a7137b59122e1a876350334c78b4e7fff15410642f42402fd444926a4f06bbf6d877bac6ef4ebbc4c8f194a1ed5ed57103009bd6f98c93656593ae3479bf15e6d1095fc9f55b2815d95f1579b51d974e9acd476c15878a1528ea26df88d4de79b1e02fe8b39a390006e6d22751b7f6e15307695ba8010a141c6ca32d2d235922375675be8d9468834d6c147002963f4da1a61fa100303a3d049438afbed65968992c0a03410550e1721703243a05eb4cde59805aec92576bead7177ceadb0a84812844673beb16a9e4aa14c4dde63e55ee13bf5f354fd7caf7e8603f5fb43a84e21845a1a8f46b9fc62ce2e8b25d82181f5ba7a3f03f72d24a6ce18537da5ef797e2ad333952e8fb598c41421c2c731453d3f1210f648c21150dbc6b0e5174610c210709a07499cb277c005c0442b836fd4f315013aef5ddef6d05e2af3304929fa35edf57abd38eda13d3fdb6ed1077d2987f7e252ecc1b5775307afbac685033217f4d1ff9d842ff6ffeb22dabffbb5180c0e07fbf2e7d553f8fb0c5e5ec3cb6b783978fdfad762f0f87b28f6f8fb57f0f7f5feafc5f0b5cc39180c0ef7e1e795fc0bc50e86cffe7fdcfd7b73db38d2070a7f158b9562016f60af642799840a469549e2496672db389799f5e34ad1146423a1000d08d9f158faee6fa1712140514eb2bbcf394f9d7f2402047169dc1a8dee5f9b378f8710387c7af83fcb83e170b4fb3fcb273f996f0e1fc09bc3278f4de0c921040e0f9f9cfc5fadd8ffecee0d771f98a27ff9c91433b465de83620e0ea1983bc393ffdfad7f905a7f13326806c84e0b9de8359deb1808c07ada035763cd2f16cba4a1fb96e13fb07f77cc9fbd472cfda9c40c34ef5430896c16703d65dfcc978d7edf0416940a12f0ab4c183261adcb3d6a47ce14ea9b79f3c69da939a62ab96ceaab23a69f0bc1d4b3772f5fecb8a905ac990f3cb68cdd0e0fa99ae502c44d4e3cf874cac1dcf0a3b5870aaf9f5d4dad6c3fbcd057358be5eabd4e48a61a2e76d9a525eb900c468439e37f4c8e8f334bdac7e7a56a98ce880bef562ee2841c67555d368df5bc609f21f65ccfeb4300b29d99bd1162f4e2e95f4b7e911178de65103839e9ad995ba78f8727e3a93ed6a1929a8ca092c7a393b69edebd9ca74e46b2a92acfcedc73b360750da4cd883ba5f517da21c73e94d4d52f0c85964b2ddfb20ba61a5308fb6a15a7df320b66d5bc35ed031dd46c26ab65e32a63ba8ba90bf6a85e9c973f528f507256d6b5bc3c5cd6f551a518133b657325aa1d539d4353103cbd014d31eb59a4f1c3cbfc33b5e3d5e4776652cd5f49307e2d35db39e7d329133bb5948b1d215fcae9b2663ba27d2f174c804a58f35c98057947b172fa5ad457e0e2ceb47547597a4c779a4a2e403bac9cd7ac6976b866f32313f7a363f2e0e64ef0c76f92cd97b5e60ba0f17ca921caaaf6b3e9f791f9800c86f1e8f75ac46634c94b01fe27be2ba33b9d69945512b0a095bc347f0dffdb8eca527c5f7ef7baf929797964be2699bdaef9ae5ceede4048387f5d68fa8fe3ffd92d4ed071b9fbf709fec759bbeace75a2dc3e3ad9d3f2fd62e1f369d9912bddbd849a6e80e06b3c81396de5ee5e982827004e064b6931307cc37e64b184322bba391e9eac56d96bff0c821ecb3e1f8fcc9b57fe19637302ddbc198b10adc04aaec72f7a0aea9f7c660fd543b856027e269cf2bd698dcbc3dd220406df5e21367036892e11edc5a203e1f2d1c033b9c22603d1dddf0ab833dc356ca81524c63dea940e87e42ec6799e958adb940cf75c5886e6b572083e43aa6d54d46acf96bb767baed225d563c75efa4f0d396ddc5dcf00f3e655f9cadf24eddceb46af56a39fbd67dac1680d20661260f89070d82cca1e7f40c57053bf6630a89d81dd42138657ab109e99709ea346ef698071c793054c8ec1b04033f74406238cd72062f323444cbccfe9569ea971c15209a726003c840bd9e51826ec5826ecc2090d391f0cfc60cff32c2b44813495293342543706d8137273ed90a00716c4417a8327c302c93c1f0c2d425a56980a1335491bf2ea08ac32454f0305c6b198eb0c568374c4fb7bb330981334b804026e1334ae9d864538c3a6c335cba27b91539d78b5f6f2b05645e97a4d34b94e992aa77e4b62becbc75dc401979bbb5e151351b0bd4f97aa34cb1d0098ec8123adb27619af23cafc9dd4cc99aaeec5451af2a731c44a16076d4326e1a94dea0a1b0b7aa63d1e8995f74db4bf49c6a453537a9d56b550c445d8e65b5043703e362d5281b9b7236ea5e61033e954b548aa12f5d1534709fb1ee9f6139ce7b04bb47bb736732f028f759fba2c9c6cf44c23ed059ccad5a65da004f6638d52aa260886ba995970ba86cf562bf76052831a268428ccde22bc8370f775c03bc99ae5e99c83c0c21c2cc1e53d04700c2ab539311ddf89c79bfe8ddc9bc92768aebd8c14b8e87191140d9a0ce779fc0150274e80bd6174a0bbc7d1eb0e29686b1a4507836eaaa87f2e758447b6b53dbd4e9e921678dbd9b62f0781be034a559e3bfa0e80d811aace8555fc757b931f16ae0bc61ae4fafd73d6ce38b15ae9786084ced656d7baad25d56b10f820e1dc33d991632135b22875a05c37a627c9e0e605854089a22d28bed5fd14881f0d78f014059038dee7fb5e59818eae15805b49a7dbd6ccbe9134f11bd42ad2e4f10ce96623305ec31951e8dd73c6cfcef54e59f33380fad83d2d1b06c7865295a7bcda35a78f1d1fb9db9cf399dea9ca85ffb0aaf9627751ea73fba4cc6104ee9277b9d04c2d1c86495fdcae75aed0b8774ec2ee4256f267cec85339e7a28c6bc6843918ed9e96d59733056e7767bcae77e5a2acb8beb201a8c8ac9672ba0b19bae790460abd3b2be7bc76cf86dd6f9f76cbe9e765a35d8456ce4f2f04ae6a97d003b540e0d292e3acbe5a9c83f355f7281567c23a6fdc3d978aff2d852eeb9e97174c695e95f50ea4da2da717bb5fddb3f557b1fb7587cfcb331691a6665a33b56bf80d089a2a7071e65a3c2fd517a6769998fac7390f8f566d515e3005fdead54fda187dceab2fc21c0a1725177a57aa29f83116b261bba39d8584beb4c015cd4ea81374b1d03bcd79b988abda68b970f58247df1186c1f8c29c95545b8d34baad4ba395fcc276a765735e2a555ec51172366b98f631a61155b988839f25173e3ce7da3474cec307518d4cf0924ff5f98e665ff56e29aa73a9ecf39455d2ca706cb86da1e18e3ac46ca3da162c05afe494ed9ef2290f0150923021ddec2e0c55e73b17bb65bd382f4f99e6d5cec5ee7929ce4c2917bb7ccaac1b5f889f97fa9ccd4b3b742e58a5a5da650040b76346148ca32bfb1886511cbadab9946a1a86d0a502bbafddb99cb29daff35a34c55770fbfcd54df86f0a065ad1bd15105f6832d7b85f3cd40a4ba090a2acf4b2d46cc78554a564ed43e78acddc6314db9ccb4bf7a8b90ed166a7faefd6148461ce13f7e50100658d1e3c78f00f282fb307feaff3ba308b5446e0b12ec5997b8413c11601c07f5a8d3f5ebe3055b9ff0fe18f1eae3aba3c7d2ea6ec2b78bb924df3dababdf92e31c4e85b6288c79a5e5b5bc1efd45d86b41d856588bb594bd99a235635afbeec80806e0794496265e5e562c78a90827965aaa9dcca475eea54190b813142ab23f718f4f9c419b39661185b8971e672255fc0d4e12fc43cb2ec91d3987ba7bb3a7070f67a9158757df1f78cbf30f406318cc34d60a4a5a683d2972f954657925676fd4c278a621f34c2d7473acfd1910695e5ea1c348e5126853fd6fa163cd7d854d6d53b564383ca39ae1098aef8449ce75f347a670eddaf18faaa09a32f4d9830020a53f1a9f351cbf9407f416613642a096422e848538dcd89f91b15c5760c38356193418420e1699975bbde5d175bbdf33610148e3d296d8322608998f200a3d2491d27fe1c254e604a7afacc7efa31cfd1334d9f30ff81e15007bd7629abd58387fd062b76eabdd5899ef9634d3ef106b43a819a47cbc5422acda6c533fd9d1ae87af206695c38b31adea26fba8792ca48e74e6ed3b96bbb0370cb63089732cf33c3dd65417838e1f4852e3e3324f1e4999e70fa591788d3579a54f491c6058a0b4d94c8ca9b95c8e4c699d84958e036f28d060f8a88530e5d1826e14b8d38d0645ce5798518914463128f40c4a84c19706c18faf66c9ee711b3efa5469f3492c4c713e90e41eb3579a2634ba80bce2e0ba7baa44b5e7baba8434daf1fd5bac8ac5272469cfbf222730acb1979c97459644e9739234786452f32e0d44d44b4febd8f6ea137ac27834af31933a38dcfb86be564330a315c0c0688d143d00accf3c10070d95b152bdd2a76bdb7abd65f9a0ec947f3f34fb37e91dfe1f7574d9fe8408506ae4afeb084b0813f9d091f3813fc230eb8378bf28cfdd13efaf4963a2e27470b1bb294b4cf8e6a36d06d65f18b26169bc8db149a676753a8585d6a36ed9a25c67684491238bece949c4787bd48a774622693c7364d12e23599cb0b78fc2329c74cb7f0068c535aa59410eff4dafe0afdfb97e1351c9dc93ff5c41ad098f44e41d36aa4ba14bbba1816c874d8900ca39afcb9b5267f6ea9c99fae261f434d3eb635f993fcfe8d9afc696bf2bbafc91a935b9afeda0e1d772079eecc32817db78f9671752344b1a659aa60662aceac77c037693caffd50338f6e48e94bdef86c6c61ef82c12a6fde283e2fd5959fb77f6a7a0ded796a1216d75d2497c2c363c1fbac6bca079f4ab0d6b38f174c652786fecb86bd60e505bb214b78ffdd59bab6dc50cf37518a8d6cdde736631f48b3bea1be6fa2143f92f59afc91ee827f7eef5e1735deedd971ce268a70da12ab93c6c598ad4e024050678e8b64e6ae56039ee703d9d5289354edd9cd16c4a0aa80984432842732c86d38bb5cada45312ff08df85bd7a8238d544538059daa84c5852f0e491d9e181e9f3a6461c94acbbf074d1a6ef1e96fea1f1166a1be449693a4115fd559392fea9f7da014b96210c2389348ecc192e62fa5a70b5a45706563056d15b2ed77860d97ce3516c7276e1cc23795ba11a9fc8e20de2d8768293bc429c067ddc2a3a0c94843b1b19380434b7b3da8e526f14406bd259e3a9244824992c83a18dcf84d959247c269274fa8dd644516d9814855961b153a9699361c834e5e36a5cd1b7a8c2b8b97d1b10002a6a3a498e97e3257d8b961857eec578f8b0d9adc6d8a271916677d74757bbcd184bfa16494c2a1f6dde5b69b1e15facf055ee9535a84c6886bdba99cbce7ebed611a2a83f06419dcdb03c3e19f33ce703b8d9f21776a8a13cca76b56acc7b3cc6da9af0704c387d6bbac964c4c18b459eab8d4c546f26dc66a23051f42d523693145a13f033df2340cf8c91c55c52dee295294392f78843ca16af4c783db46346c4497cc4fc4da7c640ce6fc5d00ee1d13f4cc4e81f66696076a0eb01752a49fffaa6ae555b0c6b2dec5c89c9e5708fb66cb894ed55a6d5e1b54e55e2839d04f810824b9dd4a9105cee38820d28ed58c839704e4b7e11939fcfd0e05fda03e30386e96a35308d39368113a2ed3f6e73dac4e0d1b104650cd89fed908031ad9d02a19904e119d0bbf90c7a05ede77acf4accde9567e13860eb1d7dde26476d4eb8ef4baf017a60afe3cab3c97e7110613e409dc1205380b39f0a65a3fbf7638c42e5b9aa01623d362d512313030528d1d4cea48d3226a3d6af070bd8ff8232b3d08cc7ad7989cd069cf046f3bef0dbd6409a0dcd2e03b0825aef0094526e9f5ac423737883a8716997949252da62a10ab3ee40e5cbf856cec6eb7149cbbd869fd65c9cad0375609cb92160c699eb0141255194db3e2d3d1aac8566f77558da3a2ca10e1657dc7f068d59bb97cabd5466550e2f9774196a63a850da662e7dabfbb3e726976dd973537e4ff625a0098dee3fc8f07a2dda2eb0f76c80d73ccc828af101d83f036066e86ad19a4c7ab466ab8450e8752c730aebb49f3ce300aba95b584d1dc36aeab13388353dedfe5d2fc05aefa2c2ec82238e1b2d165d54fb863a88513f8d562bff44bbfaf7ed5c5b87af43a17ec09a449e8489fe350c6c119fb3039e1b70a0c007b1ba5c346cfa8efb8845c396d37018730c7d956453d57c712a4b357d52eab2e7f49725093c7240fa9543594c22cdb9a614f191383d673a439c56af3c59163c4e82af83b33cb6c50f3dbeae8fc6793e3a70fb13a3a3035c30aac96818a41da3034c0ef61fc2c605268b13560caddeb5a0d74f9baac89e3655b96019395a94153b2d5591ed64e4059be9227ba494bc348f1979bf70c1f78b8cbc85d3980dc373469ec84be1620093983c6175913d011bae8c7ce4a2c85e1f65e42513cbc25b0d9840461e2d164d27eaa852b2ae8bccfebf90d5978cbc947fbf515c80daa939ee67ef0507bff033cea6d99ad4825edf2fb25fcaea8b95a0930745f6ae3ccdc868bfc81ed7ac5419191d14993b038dee1519c8593232fac996af649d91d1fd227b549bd80745f6a634cc2dd91f16d9e372d1d89aecffd412ed601fc8757060d29e31439c833bf6d992e1e0ae29719a91837b45f64ccecd373f25943db81f51f6e0414ad63bc384a877ee16d973d130655edd6be93b326d3c1c998783223bdc370f778aecf0c03cdc2db2c33be6e15e911dde350f3f15d9e13df370bfc80e7f320f0f8aecf0be21d5b0c80e1f988791c970689e206b93f7bec97b6432bf73a7c85e2de7961e2353abb8abf6f7ef14d94ba6cb6c4d66c94cf8c2aeba5207eba3ce8dff461c43f864b5827f6084928e1e44071eafc4d64205b4420718ed8851985d78e27abde833ea671d3c0b2f7c6ce5cf36cbda55ce7c7402b60e51bd8acc8c415959a0b37f5b7ea5d882954e4261e102b6cbb5fc22d0b776f5500428510cd7c43561cb67df2443a081c90be0107ea8023f5cc61a938588c544d3529700243a0b7eddc87932ccb45c56e71e39cc1ed2dec55156c43f4de2b676c90dddd8d32b6b4ca6c93613dfc1fcc8667591b699d5bafca38fd0f64d00b6b1e9b2cb73c6ea27d1ab5db617c599ae83a47f6ecdf2cf24cb3fe32cffecc93249d0f33e94f82f2f22af7509ae9d5c7be7821e1f5b00d68cb8ff1372fc0769f15bcd3a7a428e7f8ba25ae4df1372fcafe885858702b3098be29a99c39f78639ea258a79ed0be7ce7224c9aa92acf9c854308bbb33f3cdb3525bcf9cab57f611e7dbc1339c0b31592f9372018b12f5e5ff89c129059f3d645b8db5793c621cf66243c41acc7a135f1e1d9be99bad8a98f510a4c46ecbf893993dac95b5a65fc33a99d70cf5ff09a94a09e4fec9f0f5ba45b17cb2cc3d4bef3d0b7e1fd4b1fe1d358ed7afbbaedb95a369b9532913db56a05cf4e360aee0ec29b4868fa7aa9a378db05f685ef0307c69b91f004b1b65057860b8552fa049dbea4580ed6be0ca539c85f3059718f26be811d3523fe01e22c0630585cd82788b588c0d64a019e20d6e2039b58f764625bb4e08c40c0c190c13b797606661deec1c62dab73d76678f62d668c4410ca6e6a661e749884278835cb808983ff93137225e8f59a9c89c4e0ec54245e388e87274459880c041e064627f878d8b187b8ed9c8fa011c6634dbfadc7a05af505753bdb86c3274e086f0034d16af7157a4dae84f52f7426c013d3faf8d8de2cba0b46b7a854d050f760adb6389843d97f1b231b6bc365fe4fbc55d5573d07e6d7878015b66f17b07a993f08c318abdce02a975f7d11e5f2ebe350caf4b4f6f1d3c8b148bb8e4dc32a360db17e1e9ae7761e4e955c40a45c40d82a05386b2b88e10e96d0fedb988bb2e65388b34f26d6effd806b082cad8bf51887d649b39b01962b80c8f78b76ceba1ce6c1ff497803a9e7ce8309cc2dc0960a708910031cbdfbf7b3dd4df578b686be5cf8c52674a98b71f570a150131786bab867579b16d33b231088d674ab7f4bdcbf9febceb80a1eec9c069d5de21fc20c0db585505457cb0a4167c3a3ef6d08f8ee8640dbdf318c78465cd0d7b55ff708e6ee60886123bf21c5c82b1ffd2d92bb9f2b914eb87772f1825db0faa94fd2773d1bf49411a367c2dd62c3d9772fc96cfd9df74a9087959225028c4d3cc41698cc14b71448a45299140a314651647426626ffd16ebd09a30c1742a182d931476169bb2f6c11aca5e616f161716029b5b98fffd188bed7e1985978b3864f6b2387811ec4be2f5aa60f4571dd717d8a5223c021a5a14d22197c034b541cb2bb5e1a8cc7679f26109e45c24c48a2743d1c6b49568f7b328ecf265f43cce6ce70f6badff9bfdfb57c1a84cde3356303a4dca777b75c1e893842876e72b18bd48fbd6ace98ea681da0e108fd12a49bbc9a1d9e43d5c92cb2759c892b86820c46c4d12d3767fccbf24317640dff22d6dbd362d834fa1bf90a67df08a98e8f59a3c15f46fb177f3cc27afc1374d6b1491c8cb1217367a3c95d7d665d735db03fc6a2d55636f930476d25ab08570771a62acc2f5800a12696b21a1e80148a9830f23150b66a5d025174c3d1733899d88b4a74c22e823a4b0033f10f67e4ad0e1583c8c53bb5b1571fb36be86db01ffe6589c387fca6f195829046d1f3c0627848e5c86524118cc69929254f6b6b8a4c371f9f0ca17569ac2ac94fdeab83c192fc1cbf232754109966a9c4800bdace863549125c6eb17a872c8739f041d0cdbde79dcde6a0d366fa605454f4df74d8e44f14ee0d461b0de2ba75328d5a38c2346446ab1f4f2bf9f7dec27e2c865ff81a1778258403effee5d8488293c97fa96f9fb3377a569ba5b60bc5a797db1083acc0ae50134c1ec18ab55b0b77c2d12f7078abe16dee541d2c394119582c213154d01c0db50f61e97d1ebf8cb8291e8bb4293f6ab429030dc8ae39335c012be62e812dc277a40c274a8795f83898f0b1b1557c7c67487391d92d1f0e7d0e63c7f2d820305e79410ce075f041d92178266d6255ac09e7ffe24bb8db2ec76e270ad75b2d60ec66731b7f08d8b59e7be90bc808e61c72fc409fd226edf265fc531844ee8f51ab7a1081f322850f518399b93cb6a857ab1e4bc62e8c43f78c725293311a144b2d4da68b5627ba7727ae5fcda4677d6363ad20d16de97f4182017675c35fa31dcf5604693f0a646f3a3f860461485cc822f17656f820ea8592b3d20a2b5e3a6ecb68a3177bde318f690ea3c173f0751eeb5f9ae50c4da7f147a97adc78c8ab5539ef065a83dc1beea237b4d84afcd821d45043463131f7bb7f3e0c6507315e37ebe12a8bdf064d469e468fa41203cd6b19f10b6f7ecddcb17cf0f5539f7d41fe36bd3350eca670325cac18379759f3d2f1cde3b576ce67a4ce16b4107a3b5ddb3ec2602a503746ff23d0e7ac4e1f23002727c23fe5d7ccd1d9de79106348400d42c96cf5ae0cf244ab33a092f551af600a26d24ee787dd426acbcae7a075924d6d48eda663a0cfcb202b3ccc0953c31fb60d0217f6b8e2970cd694dfbc0a75ca29795e7ad0e068a4c090668a057ab0198acc28deb6a05310760f91846769e2391e707c08bb7f89f26a3d8db6291390ea1c9b8d8d113ed398606095c0c061a80ac4bc57cadde388ba33c1f0cd0e85ebe3501b236e2a8d3aa303cdce82402c7600a2acfdfc0a770ab0b9c8cd2ad5f76c4a8da63620a46975463d22ae5db7321f829137b692c358d0e514fc5d4fac09c7301fef9404fda6f6cc1b01731abe996d47eb50aa33bcf75aa36e7915acf983ef2656170ee18c7203cf63a103d2b0e6f6be6db2e0d03150800ad9ff0224ac6c494484c065e969fe7fc6705d8e6ca616b494c247d249020dc7baf8290c26399e7559ea311b89b04dbb0c77269576c6b8b664609201308b017f0d1af61058417763134af60b0bb0faaf001c486f4954bef1c4779c858980ec862c5429f215b22f1f963126ca8eb1a52370813feb39a206638269b0124739711b6062414880b8b7df9b4e71d49f2c0786d3d7b1d9f104645c70de9188f12505d3310802db8665ea99ad46ca60b50289675fd82cd34d1721122dec9c5da6e4cfd40ac4031b31ec003ac248611d731fb6d86ffb138c11ed2322a8b9ac13cd38612c9bb7772613971cbbcbc15f4667726a3d1cffdee4cc81341afed7cfa3e932c3bfa53932c1bf70dc711e1fcbee3cee8ce322bb5c90a42831d271eb8d94a8b1c3a2cbaf7eeff17f7ff9748ac9d3e8a145522e8d19a6532f0420f68bcec4e74a1d3252368c30baff8762856ab4331a0660315d881e46f2e6448d043b3c8bfb1a9e8b5f514d95ddc0813d3225dded685a0d7edf42d90a0dd657863b7f9f65a6666679b2989d7814224cb02090b4121da4581440b818fb7a135f945e43913e8174102414ca790aed9dc13df50f2de9e7bbcdd9c33066a35660f85b39ec316e0f69fa920ef89f83e611be11d05eab4e35b4e72a28a8e5eb53d9d4b3ae0185fb3e29ad3670271b314ffbde7877f380a577438ae1e060784953ff396541e5756d8c7bbe80925687d1f9727f89a9b81ebf9ca35a783e1da146c18b65e1921ef18627999a193eda1cf0c711cf13d7c83efc973742828377348fb0984372586bf08fade8c63abad1bbd8e047d7fc1d13c11374572bb1eb15f90d785a9450723f2d16d6956c0d559000a3e436f3debba5dece9ed456c568982577403f4bbe868de4a74ede1fddcd9684d342648f7a854b618ce6aefb1fb2848a219893fb03c11b812be4d195e63a2d75e2d4e31ebe08385206055b4ece8af295895d9c3e4c2bc694cd52d86a2771a498763d9eacccadbb7b13ece6e65b7c5b13c3901b949240d8a36214937213d6e65b7d9b138f1c82cf0ec71d79c5e751207dc499e2b1fefd6a123ff7a30c42029b8b675c8b2db671a094cdcb1ddd69dc575b74ec7a5ab42ac0d0ab14d9b333096c8162d7b8bc6638f29b25ad9340e2b6fb5f26e2fd73e8503d78eeaddf6c6ad74c804e0957e2c48ebcd7d9461e2a18b1240a23ec4a230febe01de118313fdd9d9e0a090b103050198ad0e305182dde30661c026b39eed1fec67983c52aabcdae30dfc5b04add1cfd4f32fa079fae000e0ff01b38dc0d88dcbcd32bc1dbbc8b61b464144e13f92c6a4e0409b6038e35067640795c08380ff1281fd88163527fe1e1c68a718283d0028c261ee0ca8ea4547897d7efe968a8bdba3c1d8daef6defd1a8b61aafbfee71f199b96ded4dbd3ce3e2b59a3285b2b7d6410453d1ab9d233e5fd42c8e791acc5de2587bad967c09033d8e891cc745d131ef85c953fa99bca6afc8257d437aaadafc020a48e87aa35ec5df82f456adf843938dda156f35d9a860f14f41faeb583c66eebeef5f825e9feb795d6c4561306f33322ff5f9d654f7ff618e67f0f3f245469a8bb3be84fbc3e1f01fcdc5596c36cb5404a4e6376593c6a39edd908ddb574b7d7e43ea8dda7561d56e6c7634ddb4da58d0acc1c78d1958d55e65388f9b9a62f58233d355fc4cbc6e21c12737675f58ac04a188f2676622154522f6d7e184e3164a097470dfbf7d3ea0f45f62afb938035372b70c5bfb5233db5c04d5e3b01521a5a852ad40608bef93f6dbec617371f63340833ffc073c124d958a659a1d81a73bf04210c5efb0371949939b05424c6df2f89d39f3f44a765f1e3d5a2cf21cfef6d85756bd174d39632f6455d6878e60934dcef8c6f468d3df86b063658dd7855091dc9babd01bad3e4ddc263e4322cf41557faf2e5d6c57a81503ad211bfdc1af86c94aea8c9f2a15f9f70f8a7920f6280643720af043cfe7e5197bbdd4e6ac92461ed5bc629db88f60020c715f0f6bf6357afc55c9e5c2855fab2917651da22a592fe76dc936d898c799cb646673b8f4cf56b876c17cf8e85c71f1c5875eb1b3327e0b0b3fb863517cfa48b1d23fbfb539bac7a7621a858e16a5888370e874e1c750c334147d6d23e20c5c8ccf632685fe686da407435273c11ed7e57ce103cfc22b8790048fbe11522dce4b4b1e5d9e1ef1bfa19d977c2a2f21f26f80a0812729e7501cafebd76d4e80cb15851b2d174950c92fec89c77b4aa39cc43fc4bd0ca04e6ddc465e7e58ac49a9e871f6919d7e01ad98799391eca5fc3b23d9eb2cba325eaa8e072fc77aac5601453341a5cddc9a9815a2ef224faf56432bbfae54974d076b3075cc4e2628cb6e6bbca7159f235ce8dbd9e26b16f9427753349872ed983591b23d4027231af721fe8980e4678171bd13ce6c77d7b0b474a99020fa589c98e35a36ab6509abbb63fdaaa6398428ec1149db8c89c485392550b95ec7c68195ea075e2ad566349c7ef46d6b9df248a321ded4d55b9eda7b1234c2a452c7fa8402b1d65e2da856e6cc670ea85cb33974f175e926d869d9d8f541b9496d7d989d329827e710cbe767f007ee7a0743f2855d9d31e1e601cce739d3a57570a64a18cc16451c46bf2a2b48730945c4463a33d75de62c529b1a07eebce5d8bd8bb6ada70f67cf77f05346c0e502f9e66965a30cc8e1de30c364d3a1c70df9649f3ec13ecec5f654707ab837ca705b2f188b79de636bea5f994ff633d39888e55eb4dbcfae15e9b60335f3779b7d1766bce9ea5a95424887aef7755e07f5a3086c30284f011a60b511de6d54b511b7547c236e26d5bcd41bd18699f1c212de345c9ced02f25f00911e75f19e87113777aee2c3d33381187d9008b957abd1a8e34aaee8204ce2b1a67f1feb932056e8b184f62840c7cacab44477e99078b51a0873acf65cb0f45cb053597a2950d0396689c4c909af22e99349ebb440192626645561c1bbb87904034a2b8aeccaa0627524ab025b3c6148e23c7f2990ec14ed95471d94b1d57ab401ab2959a4aa4730de743be04cb68f6db66bd37a6a7aa7ed9ea9f29e1b2f9cd7b1b9eac0805da95e0fae560bcf55c5de9e169180cc6b97f9eb4e3f36067a2fb80f6821b85bbce784f94f6e4bc1e67be1af344c4848ebe8ce87fb6ea0c3d2146398f6bcfd91c52480c17e23c5d6047b763502ba9faa5e1f530dd3eff89cc9a59eb48f5e24f377ff3755cd4ae5bf8a03febba78af2bda56840d0faa9a9ced97459b3c7655d9f96d517f23a796dc7a97f19a99f29af49012e1223f50396e7f6baafbdc03a48c256d522fe6453d7e253927d7c84f90f7217ec72e788698bfaa7e8f10979a9e86e74237304a50e7f7e693d327aabe3c7eaf8a53a21f6cfce8f976a7737568a7203f6b13abe7ddb240a1f93361b7b3cf8aa40a7277249f755adc98b283c18adc93345bf46aec43e24eba7d523f06ed7e0c2c1ae76fea8f2558dbd03a5a0aa0748fb79aef63e593522d0351465fd92cd25ff9b4ddf8b79d97c61f678e7cc50635895ad1fbedcf86cecaf369c0c58eec0b539370b8f3e962741409de760d210f9cafda1da19e27e77a528c784479a40aae39c6d106c8adb6f80b438cf838675ac0d04191c29f4426172a4d09758daf6eaa6976f021bfe45f9c131a0f4abb38bbf773fc3e49df986687878a11237bb9fc3e7bd7dcc3c9b14b781f4392e567b674cc7240a3739ad06a5e939453752228ce115b356fec3fb192935f85408aeaf08c7093e3e5c788446bc55b138b26d40eb1f2dcff5d6ce65ea2ceddcd5eaab3273a6256897822fc21b4c62dc8d27375053d9d6dd7b6078d409d2d491fe99c264fb74d8a81cd5241909a16ab870f1a1934d1d0edd16fcbebb05ff120fd9e4b81169c6218d9d5295c0d7f11eff976a052cd6855479e6bd497d61c1d994031fb0a07a1614031e3d5001a4f114a2912f2af3e4f4015acd48880526840e89cb6716bd5a30f0286cd8b3c63bcd72cbda93e8bedee63e7714b6d27a88b2265cff5cb2254bd3d81cdb82e6a6b6ce0157003af175aacb463f85489b096c377184d94d5cb8cd1288f3f4eb825b018fd9641d15d238574840c0b02043ad1640d42f7efeb1cbb8bbdab4ff8c46c000205558abc869385bb6c71beb0155ce175280965c7badd8d9445ae895441c40c50421414dbdcc18216695fdc2ae080322629cf4328b43c4fa6a71fb530ce0114f2b12a1815046584c195c20d11d1422e930b1d11922e92f171575a9552d16bdfdc5fa624d89dd64ac9bc24e0df73d119d81c7d270f4de0e5e9686894846328b43a6ac9e19c1fa620dc9ddfc65fe8938f9883f7e0248d70c509a674444f7b9aaf57347b8d70ed807b68132d2ef3a1406649ea3928e6297159b9e424b7ad7be6f9d453a973ec119e8ce2d854460c64d2588f7dd13fc89eefca9902007abf86570026a5fee272f83eb50c4cc881eed134134b9b3929d71fc8777cb6f9f3afdcf09eb781575d91d4076ddcc80ebd3e1a927337f4eebf7481ace16db7d93fec68a928e86c16fa677585ad207699cd626e1288d541079278d941079cf798709da1e20aa1966ee9ad29ccb7d354916007c9036e4287ba9e15d8698e577931691f2eead8d95d052f927c2086c97ddaf45ac8ff0e7e63a0a5fdf775f130dd24234ca359efcc90a1629b0413d43a7f5f45952d21f6a037bfba342f71c08fc372bfa5bf773a0dd1de2fb3c4c8149fb581c9fb855b837771dadb4d789494ed131d1216e71f59a210ef373beb084b0b01d6c2f8d58c7bdf42fb78bb0bd299f3e554a2a1a00d6d81e2b55cd59a3dfd8624cfdc643e73baae71ddcbbe84e9c2ec443bd25bd2e7abef819707ffa72c24448a449ac46cd644ffd49f89a032286c99426b986783ac437b516b4b0376a32162049ef6f9372ef36eb3f2c54a13cae51cf7b6195c07da6d6d3f1d4d633aa481adfed8ee46dff371b5dd27dab922ee8bcede9042d5356a46fd878a604b2d6a6adc0eff45601bb440cc74355c854ff641b9d742f9d64f445dcc13ca46f07058c7124e910fc0aca829b4d71680552ea216c91922a4c9c95aec4792e7eb6d05402136d799a6456bf931fa5faf25a50b9b96a468b8992ed8573a434025c074e2e5534b5ba3e187c1127e982f6b73e1627868ec7e284b26371d2f1512c25458637557b2d7b69d88826ba7295ed2aecfd915124a8408ae82edb83b177b2044352174e1b09fc8aa50c93f0cba3614662f6085bef88dd153bcf91da3b2d1be63eb747ab4ad26bdebc944ba1d9b4c7947a6059eaf46077c84f99c279ee0cd6185e1326fe32651f812eb9661de54eab94df938913cabc2e112692fec991a2b72aa408c3782cf716e5552dcb29f5e608ce6e23388144126cb34ecbea8b1934bf540893df38624462f25b85983929f89abdb51e38fe8bb533a7c5bf38f9ef56f350aaca216f14a902c54d7514b68ecad451983a0aa82358a8d28fbcad976e85b4301e42bd745c2fe5ea2512071ba58cd961520561f4261fdc156135e772690eff6e8ad8f64d587f3c52907b31884cf256ab38b4c79b374bc5d263dd6a8506cc6a919a639f4086678f16d8a54cc51a831191f4ab82c52b921b7a7cbd0d1e9407d2f109a7ef39e2b840923e5748e3c933554482166ee6643b3b93fc13e199c21390634a5c7c55a060c92e7734588d6cce772f5c07ba4699b89889fb77d8566e4550b49284c5f209a2fb861165e43f953dca1f953d46fb52132d92ccb7a8f78465ad9fa0c73ff2ba7ecb2ac62fc0dd6793e737bc8481b125c7f7af8e1e1d3efd7463c6df4a63f37735b7e8bf95dceb597c90f6a99ccf9d40845a76712762d19b7563da5041a48ddd38324bd879a894636bea9d8eeb9b47b4f469fdc8e6bd23bb4d06e396872b618af8c62e84845944b87322bbaddabd9d824cedcf987ec214bf70090f959cdbdd39cf91db55b9d9197f24e39dedd9ae567de92558648872d19c4b6d7519ed3215271f44c9fb060aecaf79deffc1664ad07496374c82be8ff2bc2f16f553e1c66adef01261624dd0dc22b465884bdf27c4899afed331b2ad15a1864ff8d4d51eb1563ab6a2772c9b339334d1906e77b5858c3c69b6b71e2012c2fd5dd6abf8e00c9bf73ec10d3db07aeed971110e5e5f38dbbf16dbf760f820337b77241c043fcb15ca46777e822b77e7dd20bb9d0826d3fddc5438ae6f3ce4e115fced7db2a2a8b76c063e9c21b240bd7613ca72b280142fe1306163c0dcdd038e4fa68034baa38fe549617e285be3b81449345e7b015842c40a65fbf7ef00aeb1a514b479ffc1d0b479bd79037aee38fbf6f67be02d882d214719c98e6dcf38a3fe1343860dfb7e2d1ddaa70528c713d79d3b975c9fef7c6157cdce75763b8542dffb2cb94019d9c9f0ed6c9d151a643da16e17126e67c3690ef921c55a17abad04d69b38a889b35cf78259a213392d2e742a7a4fdef64a7e5bc9f0fde8aac3f245008ec13650a2436dc658db6d4c5115d09c638b9cf690d5eaa831605a5e968b60b731c6614c7e615756a10c6927ab297cd08a5e410aa5bb85459d2e37244b4e688fc32d4a10ec3a5889f6638e52f1972b952ae2bd285bfeacc5959f20d37648851f8a098ae0e3e93e11b850c5665c24332e63ac053b39c15a319400262bd1f7091bb4dcbcf8088ef2ef0d3ce2bc99ad7f28c3e3c3fd0378a07097518630309ba575191ec747dc566f317639d18904d03bd99f20a46c9e960b819c67342c9e44b525295303457f55ce513d11d0f5ee4be2a03fa29a6fcd27628d6e20cc9d418035d7db707860c14d62d2c4a9740f52a75140f4dfbe87e891f2ccf1c9b61e9885a314ef69d14f4957df8a4b352cd78f75f622dadf7a34817a15807090c3fea1405bd5979f9632ee15d6477b52eba1be2badff3ddc420833529c0b6db748f48c14118f14275426a2ad8bb012fb5f43b6d05b5beabde633349370395f6914dc6b585ab7df58e62569b0db82d6bd8be279977df7649840bb82ab85cd5ee855c34a90dc408a0666ba768dc8b2db607ad9db0391f421f480d8da033b303f811b70b79594de621337446d5fb49750ca1c56db05a40830732deda30ceb34a123bcb0844fa1f1da16b693c39ab802d1c516a24f5ba1c49621aefa881bdc522c4d875bc408a8178cad2cbb6df2eba7ae0ad45581ba6a3b7543e6767a2bd8134501ffbe3c95d05d13465497ee92d82f8ac6be37d5eb90bd8e9b7253694462d713caf6840a3d31eb238722b2ed0add35d36d79202449454ab26c95d79dc28175d14466b42217b4a24332b7376a8e8eb33cbf78587aadd58bdbb7f1f5cceec13f5f4cd09cce88d590c0c59cce02af60f2bfa2e7489219298f2f4ec832c6dbbab2c6bc147247333af7206f2ccf676163be8a37666db2c2a4a21c5d918a5c0426b79e34f4aaa8039b71456a7a4566746ea878015e2b13c7383bc2e6d444f5993990a54e43d18c2e90f4f5b7506a1ccd368a9f45c5cf484d674110dd0072c68c2a287323ff399da21991e4222ea3bd4f9dc70498ed5966ded7790ea3e7a2807f4b98f946cde651cde6a436846ef99f59af8d80e7c6acf62d264d3b86e6861864491abb86d6b4d26889c77dc7b0da2a87dd1d66be3e68496bcbd32fbd8b9cbba30c07ddad197503f18296644e4b3a245736e28c2e819746c1faf822cf07677b5329d8787efb7694005f5fb8b1399fa02b7a412edcd8bca217c9d83c85b17941ceaca92869e2e1798aaf2f562b7441afa2717911c6e569775c5e6052528e4e4949e681fcb3494d4f8b3023e82999d1537241afccb8b4958f47e405267554850b3722b734d3f3c7673040db4658e5068ece36aa721655e58ccce8591809358cd10b18a317f8db254ed1059164de29b51db56731792e3aa3f60c46edbc38b3a3f647eb0a397ecfa8add75dc533e0cfccf26797be1b256e79cedb453ff43b07df168df561dbd902bcb7bb1bb335fd5b7b1d09deb32b39e0b4da16451aaafc886f2c945ae336ef1a423f514a41316e1255b7683a8704fb0e5f1b120485394ce0ccd090e8cb49b75105df3c5034842707014655d0bd8012fc94d110200d6d5a1f4e5159e614724ba16e919ebf5b122041cce0310a8797a561496d4e360de13d2ce932aeb361ccc932ce691976c912b176af76f46f5c57b7476f0b636769df40e80e7520a379be1560342085849834717a8a81d46994ed34d5e93445f8d6734cb73b54dc1da9f0608d9461c3794ab2369f9842eb5ee68df7316fdcaf6a9c66d96deec58b2acfef79924dd096666d76b76d8349f0c70d55c504bad1b24d3cf04b1761d29b57958e5ecd9357759e031fcb31e94383347378d0b4ca4dba3c73737664418687056c67fb19414b0f9bb737e5cda22ec1807fb55a8279f56a95852bb1d69b986da345a19a4b7a21d16088c9957d1a617226e9f59a9cca56e5fe4caec9df9df0d334dc0a515fcbd837b25983a5dd7e7fba93251029974e84f74ea1a7d2a922ff6dd653f3702ac999f4aa242dc093b7fc128e200f2c4146a3425b608c0ebe1d9ee8c4d0bcd00a39ae1e77f08835d50a698a04bd6fefdb23d0b142e3241bc70b0b2bb905c7e5eb2353695ff7f8d0fd493a6d77f3fac8b411fe9eca28cd6348f35aa2a73228623b3fcaaf253a6d2389806a3a652c3c76f885a8433b11df76be84ccff96919f3896e728a991158d1f493a24ef24dd275f25bd43be487a9fbc9074748f3c93f4609f7c90f4de1df25cd2d1fe7df248d2bfd89ebd78b5193fe1cda2d4d53953e495c9e98d3df692cfeeffadfb7fe2fe0fddff7bf7ff8bf9e82f17f86802ff94e041dc45fd2a6904227c4b227c5da1ec607f144b5fff6c753ec486a7cbd627620ce996e71d641d3e43ce4325b8a7bcd937e51f32550de533f44a526e5aaf7d9307a01b985e64d8cbd9476db7b8eabe95939a17334e34e885484cfe29f1f5545e5b62fc2a6fd3d1b7f37d2fe91369887928a9a77f545694bd439dfea7c4e398d07eb9883e6a38418cbe91b8731dfd446eea04fe62e262b5ddbf20517b1bf351927091fd5906aee5b30416d00ea0f750fd2792be8546bcd93a4e9cd07f68f8ff4886fa9b192269037e2cdfcdf117a9fa99cc2d24ec754f0704f51a1b848bb1f68d53ebb0cb08fbea1c3a7554cd0fe5e409d4941587e61f284319399491c21e47f175d57b89df4b8a0ea579b2946c870afa6c5a8c278ec6565e03901a61e8b9cb93a1f3a7bcd1349745e7b6b96deb67d9ea15b9367f967bf010b7db25b3a1980087de5bb36bbc69b96f36741604fcd88c09a1796215d977f735d188e1225681e3919d0d07a8476d2b1b9d8d84a3c9086ea7eab2d16f999832c5a66fd9745981bec4f0e1afd25fee08d88acd3a386efbe577e90581bf4b2750316f83e286c4d7bfcb7078c1e1d63ea13300d75386389100f12c0526923a9238ec78273d0b4798df34e2a4930f5eadd06b4ecdb6df79434ddab66740e66f5a0c3715adc218ef52c27f7ccc893af1ae398f3b999b57ca6538b60af47161861e9c46c5785eae9c44f8b4ee92ccd92d285a42101741c9464d543bba492b9d739e62ed4c6ea822351d8c0c45ad34a06b98329e3d7c2527a85ead504d0743b2a42591a6e1b39f7f91798e7e91748671c1cd87e519537e2c9805d945d91961baab09dd55d206ce289b5dd6e47903351d9b324371ff59ff2d49dc6db2bfd7b675573b90231c73c57b14c9af757956306231780a4da6acd14a5e15824cd9a2295434c3fdc1fb2f39417f497add5e623a1f6ff1b5267353bf701f214dff9251023c49826d7a004f83d54ffbd5c3bd13a4f349c2934ade95db9b557efc51ae2823b2436b65af149ddd700b12ecfc40443c09dfc8d6ac3609b2b0fbc84d7ca720d0ae1f9fddfa519925305d1460da547b8ee6d101e84f73c8312fcc913a82e9317d78248920dc9c036e6c1b4f6edeaaef586211a30c6162565a1261115929345e5bd9bfbd5e6cb5d6c25761a766c9c7098bb4c61ee5b1bd69359b607475cafd3dd7fedd9f7f95a04a70301cb93d4d75fd6a9b65ee8df4c01c86720a620c1b6818802161f43a5d1d8a5792d8295d0812cf7fe7bcb19dfe9d1dde0fffdfcd1a62f80a7b5f8e23906de1b7088d31fe5dda2b72c2700b7ea5a90817ec30aaadd37378f2e3dda236fe5205c46bd00ae51b0d91f4560552ac7fb33da553448836cc12735b09e7acdbaebc76a1f6f55ee63972a99698942efd1af06c4c7694932d8acbfe36c3c2eba84e021c1849e4d52c3abb35c61e8fbfe924b0ab5e4d156a88dd9e79bab62bc2a3959dd66671ae49985cceb27486afd7a0322bdd21bbe1f45ab1d2ab3b16ef3959360151a0b82521e85eda905b116de0f97c01305917ec5929a63573d12fca2bb9d449ca976c2edda3ef3f1f9ab927db8bf6f9093b5d9e593cc75b724dea9beb99aa20bbf5c42c8f9da5e398b583d939a3d72784ade356daac5ddd7b33961cdd1ddd23cfe5ea83b43e567a49d1d5def60cb4e70644b4cc8809dcfb57a546c7ecc4ae44447274877c95ab6792543cf205a301a6c4969a507a5b6d7d2ea1aed019696a7bf4842d2598726fd08ad8b5b06b1479cc4820a3efdc6eebedf2d697bf6d3ed2b8d04475d7fa884530a503cc3f70c1767b76be581d2fe0dc0e6f4eac82918dd954e8350e5c045dc6047e038bce71a732849dacfd80ed11b8b356e8c4d6a467f059fa7435fb3d8f1f51a6d762134c4e18c29b7c55cc46314b23fdefd048f31e22b16f11a9cb99392245f3b7e46b32fb91f9eb6c8b0c1bd23306c7fe2893b21ae915bd8a0d08fe84dbe0e3d1099ea8e3e14981b68c5ffc83eb00ff7f681de0ff957580ffc83af0bf48fc1b97109cac21826fccb776baf1ee04db32bd7cdd38d21cf78dcd05b707af73f73fe509d8ff058f09f351a1bb241cdfc8108f4572c9943d79fae2e9bba74f326f521f47c4e60db15250ac0dd95a93b62781098a43a92626eb6862b24413337d1bdd5ff314142a12e4df2d62ac9a4ed7224d47893799d54aa45e79c2db4d873d6e0c5970f2981683a1bb78ba576c149759ef3a31b440d7a3cdb7f31d1d141d8cb351a4757ac59dffab29f7abf139dc50b6168880d2e38866f55391a697ca7a4a0b2ffcd08c6589fb763c5940f105a70c8f2f385a7033714dd00cbb4f0a69ecbc9ef57d6bd245f53de331c4922dd433af2ccfef5a75e3f2cc032cc1e3e8be7fb6384bee33c83ae47cea29c106942e782b5a362d9e86fb2ca800d46d489c09b1f6e385cf50a8c06a959db3d2e2cae679762aa757ee7970e634d862b0058ced09e29c8ff518bb794780ce3a700db6ec734e177c72a9e20e77ab652cfffedb1cbe206d34b581f17dcabb3704af2f0553e4753af92fa3d3b143e7f1424036b9028546580b88c2c51c6c653dae44723afdc463f52f016afb66970db234c566be8187e6782b31513492de7313e30b5ead5ef344e5774547c4d51484f2aea6e0d7663b3c4594414e77ef8e7eda90943fb4a0fc1bb828987cb0a5c9f82ee731dfb86cf035f6020211af297dca32d56af54f85aa605e0a7e816293d7701416debd54945424492708b158bdd7aa88d99dd35e9e7277350ef4272c40e57802520624d4e5191dddf560081579691b5ab98686dbcb2aa08ac8871c0c87ab0e9a080a9bbe79f22dc01351308191240ae739e07b50672981278ed21c17dd1eb73ae655d04ebea115d1855ba793d2f59681b3952e06ca46adf21c647c23d3ceb886ef78a42f1c39a5e4a935b719ec6168b43aa0a16b992b0e14435345f4151deddf8fe1db92896567d373b32ca70661e37011ffc1ac3b1c133fcbc4bf35cbc4ff7bb3ec2bef689242737ddb07c3f1db763381b58ccf5068ac57f36fd7cc96e48875908e88de8c8837274c96d2192e90da3dd9856b300c9032dd15202a1be433c9481b57ce78b01c5bc14ce5edf84843c537cc049b30929a4943df73d4e0a2b1fdddf48d09afa724b65ada91592f4c63dd6f81576db3c01bcffa6df0aaef30e8ecff6eeb07ab152a0720805a1a3ae03c6f4cc79895aac1e477ee013f161bd73786d6d6a66d0129ce6932a83d7b716e4de13439278a54a6b797ddac307155580c285dae562d7edb6af53b9ff47a36abada9a41942b5194e3d99a292fece57abd2a62a89220bd0bfc413f443f4bdc1c6b1eab771ecefecbe4cfb62b75836de58b91b5ea22d368655af8da14e6d0c71f1adc66cff9674e62a8002a567b825267e022be287d39284494c1ba268f91f5542d1c1c82d6edf584b4255b457b54b4c862665a1a4b7e728cd886bd79a8db50575561ffca34b0d41bd4b09ba69f5c13fb8cce0ff4babcce60c260bda0e09cf04755619bcb1ba6c2c54617531452ffebdd5a52753547757972559fc1bab8bed8aefa2a837cffe9ef5c567db1b8d1454f507969936bbed6f5daedfb3daf8ec3666eb0f8ddfeef7fb77efa50b562f2543f1ab550982826411c8f3651209bdbd5add50d1c1b72bfaef97649af41debe8a26f1d5d74d6d1faff8bb481e5dd33eb5f78c298b72cf097ce19c69d2f9c035b406aba77278f72870bb381caf341e5451832cf9f2898ec835160b4391eab645779ca5b0c68a71652f54feede751c40cadcedb93bf147d71fe9c9a265c4ab8977e547539102c882c3b9c3be84c8d29c420b7736296d9aee3d8ac539889a3d0c39b5947dc1fbc17db597bf39e1f8e48d4243d28ddd8800299d1bb4b8088f79ee3ef71baee902ab729bea88477dfe8ca71749ee042fa94e448364533189cf00cfab3b24f0b59509b9513318f923d3b5e673367dbdd48fb45708e013be17c50ed7a4a28361e76877efee383eeff019aa82a7cebd9987616760276b451143073be1d10d2d4c6bebbab1c5d2495a3471dd667f0b7f0c25604560b62e67111a199c2b82046541533c182d68db6841156d8559b23541100e1b34c8a4d38aa0d2a27ad90a04dcd26a8244d46622e9ef0a29a2929eea6936aa7eacc58611b08f16bc0a6856614309199afebb45b72cbb97f14450e99bfab48bfb2b3629850b43259873ca4b796242e1029541fe534d50155300c9cd6ec7aec2e52621e4bfd5ff286ef62d900cb5c6c18954f9879baea8b04d2f3b8d4e002cfbe0c07b74c05cdb886a67f707be896e621982ef46d00dab59daa2878979f238c9de7dd042773a5bbc83e0d9c623b263e763f477d5a2b493f4526243ac83a3a606a20625933037ad34de4f1d100b4643977db3141c659d004cac43177416f9e71b4b6947bd3022927388976ce74096f43e26c26807e5bf20fe510f5bd36e2b32d4d155d341f182238dc9df1cc54e5376ee168f25d249d4a878eecdef719e838c2b7e7da7b8942d62d5a6fd519ad7b078cb2175d22ee71534497950b4c4e81e1a1c7d87013dad9d944fbb8a3fea672a26610f2bdaebad30f2f124c08b1471f785046bbb56db0b8a8057b009591ed177bf50e9a997fc47e23ed6e977a7bd05e7de58aee6258ea002fc87f497d58a302209a066269ccfa628af55b997fd5041d27153fee69c522a23234250d502a93df94d224c9e2ba46e12917657295ff806869d8b99c808c3cef1856aeb417edcd78232cfe148aa4849182632c6c18bd754b350f7e1e0692b7235340597c75f784be6c11000c76c032d2186e43224b07de0076c58a9dd88bfe761bee57f73e8f02e9fc67a809c0038b259d63a38d1dafb6428b16c828d595ad97d6f73a6cf95bcdcd1c160aafb3d1d120456586cef53a5a5c208e33d7dce44e2fccd6af5b94f00482af8f6256d562312ea49355e939b7268bfda4fbfc2646bdb5a2ab836dac685e875274c35d1eb35820b090be20f5cb1e9f598c47cd62b6808cb1800c24f46c530d1fd8f11cd4d1670e31c269ac926f81e198dbcc2aa6ae3eef8656c7f8d981906ca191796c10bab6bffb028e9bb3046016badb30194f4eb4def4d824f3725b85394f47194c054c519cf62c32a75adee4033f79e7375174c40c7aeb62eac9c7c71f324f22e5cc8d22e58919ac842496b4025bc8ac2b773fcfa63391ef81ced26ebf5d4d586cc0d00cef6c101a3df98e4c66e3791be48a7675bc1f2d3a9a27d05bc682703ff3506c01564b67c126f7f0594d91ebd91a4a8bd8af34f8e1dcb73b9777e3555a662798e9c0ac5d6cd9f2c38d544d2a9354c909d6bbdfdc0a9b5872065eb146ed585e552a2851313edb9154767605a487bb1790574dfde9fbccf4e0e5e59129b836360b6cf14f4eea4848fc2c934cfe105dfbc27bd8789138c9091d532f3470ca01e9f4e99050eeb3842e93d178c9c57fd962465b28b0462241a3c31194400e0198581191822cfc4b9f86ff07240d28d61072a199bb211d37545dc8d7edff3abc637a7dda71f9b763f8556d8efba55edd4e0be3313debff1b3f8d0d569c1b0600518e5bb06ec7df262958d966c5e92001fcca9f41ef1ddb02a71d08cb7aeffbd1085d3df345a128e27c362d82fba567b9faab2ae9675a99975bf3efd85eb66b2251e722b46c39f0e7eba33babf7f80ad7e55195a0cbc5deb3e74109d35aea30524d8fa5bb607ce6b6e315b86519ae768d91e6b83c2ffd843612cfb4e96d179a8c1d7a54904e4f706bb35758e877c7eb54549a883bc165422e19c50efc9d386a90bdbf69c637c3da2942ead8e16423540631be6c42262ffc6d192d4189365576940405bba0e255a0cd39a2e23bcc03caffb32e8469a0c6a2a22249a6547bf6ce668b5a0b3d45265d67bfaae716f3c0dd66f8b3c5ff47f99e7a8f70dad9db90968e17d331b8cedaebe25aff58cce5c13d75d3b3b20d18657283fd4d635adadad9c1d71251d0ddbae5cb6b78e3aa828fa91d30ea812977e3c2ec761e09674e9e95ddab15482adf875197978594740b066a27a08097c1d86b8cf9b980ced4765885c2f69b95ebbd546a60b8c9f30eb94df7ee0d728e9174b455197b5c76d56fe14a8a84292bee74892c841653c13f0c6a970fb921db609e02643553ab5204e1d4d5aa653a69c9ecd29ecdc2ffd9adb9353fcc14fdfde2dbeb149fc2787287fa685e3ec04313a181238cae282d1c128907b694f8612fb33229cf83a274480aa0371d7bdcc222c3ce2ad05034820c82ba736f9c6fd7fe61dc7766f798f774bbfff8cdf29f48813b1f7c9e5fac1ed3169048d8c9e9f44f70f8fc2ddcbf8c864844927ffedd91cba6abde294994abf8944fda25f7c386e95f1bb4ec4ac3f1967d4dafb71c731dcfbc41671e733b73d3e1859dd57e7e000f5005ae679bb110e0063137d366dd034da2089b6ae82d8575d3012cfa242f798f3bde113cf48bfe20e8be07e864da76af28af7b6e71af6b342938e45de708d8b37869ed6284ec33136ee051848bf703a247f713a221f39dd27ffe4f4c0e91e0512fdca5bd5fcebd6449f1128384620a8cb346c3dca960bbd546cda4dd8171fa9c3b709e370926337614f7ca4897d6b4b332243f1b8414e37df410b442db36afa2efeff540bff8c5bd8190d8ce8f2acf88513e759c4e6e97d7574cc31496bb5d02de30f375fc221af25c6242159f28aea02c5613724499a26ba42fc8d6ff3a218012ab4de4463254ed9e2405267ea9fa6a0664077c1e02d5fd09357ea25d0653a710f72f23d9977b3316944b7024537a35b1c49ec2dd625a8288b6e0285b16fa85cad14d4e80f8e14d1e14b1591389ccd65dc6dc87d41fe309bbed9a1428cdcd63fffeaf44f57fdd0f923f2ae2ebf49a28259e730d66c3f9d3813e77b328d7500109d485da0be783fdefabf89fd9655dfe1bdd36e3d1a502da27659df58dd2ed2388192d155a428514550baed4dc05fbcd86a5b086e04dc14c6136691292bd0e12e9c87c17ff222324ca1bbfbc33b0ff2d854e5de1d9bf0175eb49309f15ea5b79b8a8bfd4a71c7b97b9e135daf21952de9232fcc9e12b080a2db4451c52ad26ee7f17e91410a5c3968f67699b657cfa4a443505d8bd7e986f2ee49d11cae3a9766f54319f6d90af0519784d30693128e3225adcd24682874d6902c496335a77dcec1c751d735c4c13e596e02e87b4deec848ec060cfe6581f4160bb2658ae5bfc4e6b0e9c02ed71682114a0c5449477a9732b34dcacc22ca1852d44e01d011ca10c9506906549afdaf5129dde7269dd62454eb4406eaa5f17d54ec7e9950336ab48e1741119c8f0056adee5b50e0fcd86d719b61445e187409220e49c633ad486f4fd27a1329abdc70ef1461e0aacadf23870bd29e6c1d2cc2c07743a4ecb7b177f77d4f1252f5d1066f69cf563a62222b94cc167bc8dceec202d462c237692747df7ecf604a8f0ab26a3d5404d58071bb57f8e11e890c04be6691a3367fae5154f7c20f5b88a8d18351662a2aec72abf09a39441a5bad881be3557c7ab906f95fc1482397aa6285268d36ccdd52238da3afaacaf089a94f1b380c9495bfe95986a7263cd5fe695c563435446ef1f0fcf1df13c08a44ee52e79d66b5bae71f31db2b17e61c033ebc50ecaa26a824dc69bdda88604a66953cdc83179f08405174a2072934174b06521710c6d8cd29741c5421e87444c66f5ef763b50a5a202deedf5884f7ebf07928df8b6f22a590f5dad03132875e1b6aa626e6d65d83d56beb5c2c00fa670b3a55c6572efed6b583eae884110ed632e362b1d45951d1538d4a5261a2ec9332298f4fa21bb74c2e602c1615fd5df8b4f0d493b66135ab205fd8e72be2069e83d3019d2ecb00745f74730a5e778a8ade0ae5deda2cd7dff3f52bb84af1b8e6669fe9977187d7a8dc93a232cf74aaf07aa6ac6b9a920a3fb2ad245d783736e0d3b3021c47b5775e36af2f85e91aa6f4151238cfabbe483b52ab6371822dfeec55cdb2f6bcd2c02bc8be34d937b8e9e65282f01be0bbaed7982c8fcb139a65f68c924d4b71c6945c36f5d511d3cf8560ead9bb972f32cb95665ea0e7c3cd72b150ac6940cd53e8a7530e12bd8fa512ce7b529cea195cd471293aefcba59687b25a362e029d6eb67cc2562b64fa0c03700060fcee2d96cd39f29a6d2d4d95e7cd94a10507ab0d4bb689a18e1b31a497e80ee5ccadb1b537456c7097dc265bbb3639420f7a28bd5ad5795ef7c5f7f440db6b35eef926cf9be3f26440697d5c9e6c76a18975074df326908b304fa625b020164c716b47c3890ad5b49ed47b9f3e9deb79edc9d5d066d274e21c952c2a5c6d914992aec9b2db86dd6d070ee4df180e65b5da74b255e7b917860d6233bbfe7c8bffcef8eb1d6e2834ed5c21f0dac7562b576f4bd89e815863bc5e6e50c18d1ab2c48453463a46a2dcccf40af650b3097617707c2d2c90864d036bc8acea3547fcc8ca2f474c4fdc7f71c474e436ae4a4d6fed2e4e9c967bf5251269b4a750a4e812dc9e9036aed4ce8edade0e58bcfb569a3da20168a0d4282000ababeb4a8a46d66c8f292541edca2251497cdd306d984cb9d428065403ed16b98e998bf32a5612526c16b1431a6fd16cd100a6e5c1dd6ca9025fffea3cc63ae5a804bd2d1438ad7abceda5b6dbb10ac544ec75446e38206e52ebfd0cf031670859a0748607941e05dc4de511f2c6e18926d07d56134e22bc7619689b81f54ebd67c10d49fbb144d8029c47588e0a78c788aa174055b7e9f751f0bdcaf3f70a3190bc0751c230e05afbeb187f99e23b2816dc441dd5c29fa5ec350ec3d303c539e44bc02b75848995925aa44218610af9eee5d0bd9270bc5e7bc27b244b182aeb44a188cf108cac5ecf9e3af5309b5a4889b95c0a37c09ca54ed7685e6ff17eaa7bb3ea34819926240ab150d154e3f5cc4445fd39af22b89bbb3460701cb48f77fc63047e6219f722f0db7a0353445b7e766e96a21611c5dfb76bb0e8b72073281bdd033f276ef8aeddc9c4b3423d92a9bb858e5d4a820950dcce83c2353749966a845893f30dedadd1bd5186d7a37b7904b0630ec80a8157c4187727a7bba39ff09815bab09ade6c3c8e4e65dfc1dccf2be403d87b506ffd0fb45c3e64ff3d9cfef86e7b50b9d73e028e8bb0382ea622fb71ebb03fa6ecc4a087ee0c63bbdfd23e4ab7fdd0b3861bf6b4008b5ed29e1982d6851f3ed292ce1dd0647b408347b3580313a5bc3aae0635a7b6ff97548cef83038800efc323b8fb3d2e1aa69ccd192ac912177c33ceafeec98bb8146fd8a226a8a49a2c932adc075749a178c46919d500a7b92e49096e884b9c1c3d97ad2646494ba7c2fb564afdd80fdcd8c17619b02fb83f4dac5688c7270b5ce8a400b9ed6c2b93b3adf4675b9976b30474e6cdb3ad04e3a5cdb3adec1dfe320c7fd99e6dbd4ae95886f76bd91df1fe0d54239c6d5b88a3ca431cb92589083a181115b446fd8a62ab3310665cfa7568cc60129b777ec189e1b2dd1295ac41895b5b22c31ab4c33aab90ba61159261154aa7bca083e1da4d08dd4e08a7a96f2bdb4e063e1e9b097251a1b2d5c7f2f629772060be2bd3fe2c49e95305ed983212a2c77d59f6f66519fab26cfbd27dbec3c691e248d9edcc48cf24bc5b4b33711449440ce4a699add85c5e303bba4b33add3080c36946d4c8c62b20e13a0a56b6cb8e1e64062dcd9d3795ed12482d009c2a7304942591795d76b8ccbf89e2cb8612ffae799eeed1b1dfa46f7ccb33bd4f1546efb71ca6402b01274b7b37cb2d8a16d34f34eab04194e7f17e737add05749be48d235da497898700809bb47e8a3d8ae339157b1ed3ab2cad99f384d1cde412c49cf5b22425ce779be213093f89a1d3f3fa1923809975d2e32554eb9ccecf6050e9c6d1e127caee4f9530d60ba64a1bc4762789238ba701a8e7970e731e6b7e97ec0c239e627667e1cf3dba393712b65a8268d42ccec2b379dd7ab89f4a9e2637635e12efacad4ad222551789dfaa6f142bcd7b6f6fdd2b33fc4c64b2fa4033b8a4b65b6238b37bc7759362f97b5e68b9a911bded1c140eecd7d424b4ab015b5eaa7935f4d99691a3218e1420f68f26990d4486fa001da273ddfa709c860888bbe44fe71727c5264992913afd748104e24019744d140be57880d1c25b7b1ec678945242c744e3ba933ae3739dcd17eb16979b681a2117640c090f477e186692e90b278e0de3e7168b9bd60b76c88160501751bc72a69dbe4ef3143e7b64d7f3c4ba6b2c66a0f06b177f844332105cbec869426779e673b1678f0f558d2f8d42b822598ec0a6c32574e8627d29769954dba1559aa3631805ffb45bcbd3a10fdfd36c9b242741725b7c18e0ee8e65d42aa84708d9467a7838666cc6aabf466e1dfb890f037127dbbc90fdc48b07fff46c23a266b8523a97d89d912bb2bf178f3f2c17321700b1c5bc00976b933ab0cc3d6e7edd08ed05e08db4ee65eb9cf39320164c95b15b2f380b4baef88d13f9c7e409ea37f592fee6468e5161be6b7797e59dac4eb0e32efb834c31581478c72af9c4e9d20e59c0904b6d3eb541cf153d173803dc81c50fbdfdb857f2fcbc5c4fd172fcb452bfc7b1aa45848c47ae5ffe4246860d0ebd8aa67edaf129ddabf575069ef1b2349ddb312294c9c84714d2274d9d75b0b0e5e0e4093731b64c6788b482f087e7cfdda666c02042be441ee799f657acb0bf495c4131495c7a5ae00f9ac970e7df747aaf506f0b99a7cae60141f318d8ef5396f4e70f1b982216142b8f52567c5aa3248671d718949b6592324c875883cd25ee70e3c54cb22cbd6788de36eb98c057ea9efbee7ca0b6df3fc91423860ba8693bfa7dbfef0cefd1c1089bbfa407a75ef0e61b1abed60e8f349224c5e29e4e6d1bd3b56ad29122b382bb4bb1926db72ee585b81ebb85eb322a862a780efabf0e87e6cbed4b14a82464469830d20682ddb3729cab0753c0d63f053758347bac71b2f2d18edcbaad5fbdd2747953902bf739a4a5fddff978a0ec98b8aee8ec83348f0c1bd780ea1472ef4cafdbf71ff9fabae2a779538eb7a5761cf0030faaeeaa20c8f83387edc73501805561fa6396c588f5bf8b458d9bac56e75032f618cc2b849d1015e76d101ee40ca8e8dff130e56de419cb9de4a3247d3480fdd1023d6c9f8508dbd43b50f5534290c13702f6779ce15fa504507dd2cc364b47f3f0ff7161faa48f1af1589a35826aed8ccec39db1c84c1c54291de59e0c0db8fee98c29ccdf055853e5498c475cde9eec1386163b72422a726bead2df9507588fd8d04f741344d4dde018d56588fb42daec98666918bdc766803cbe3d8a009fde779e3f587ca744caf1ecc61ef18e033b47ff75e1ed30cb3a21d1a2d514c97f74d8eee291a4ecfef24396a4fcf5eea045714a6b818692832c8f68c4e07aeb77be730d6d62744749db105be0b756d57bcf55204962830e851ec7d4a6109fab2a37add2745bb5bb801e88653c2ffecb01e0ee8866e7adfa3411566abd898ad07f7f2206b48ba4bd20f15e134600fc86f75d90b499e49d24116293ce0537230ba93cb68b8b48cb8c2e526ea25c2b16b22d9e9102b8698a8ae2c24583875de18367413100e2dbb9e5648f93d1d8ad7227830921d2b7255a12151a4ec2ce1d1056af71b67d916cf722fae0e9d60cf3fb1a8365845776f215a9c808d04eb50b9f4568d2772fff62e3ce9b03cbf529ebab243dd3ce77b33592d9b74f7e90c6d8753313a28bec5ea9b2d4344bb8219957e5be034dd61fa70512612715cb45e4539c6e4ee681ff27c54516656fbad53e917b3e2b9925f5579fe5aa157553817bda9f2fc4d8522c5f6bfdcd47b5ed123004463911b5fed3c2bff94e1607715d0e1e673ae534bccf130c8e7f7ef8d800bbc21351d8efbb18b8077ee31f48453717a4a0460a3299fc289c37001e0e704b33d56aa9ab346bfb1e53b5c1db65797ba27d6a73e5a36604035eda4df16ff868b331f6927bc7eb8f90eb6b9cd0f5a926e546aec9829247ed693fec6f436a5e84dfbb3b68ad6df970b76a06ea662bd74c113779e2edac6260926e8bf4351e2cac185fe59e4b90bad854443c2f01a31227f06bb4c4c1e570943d54ad8460fa36d779228317bb72cdb94ea3568d844fac4b85054179d4872a1e82741e62a3e4d5a4ee2954080a3f44620b74e3ae12b97e248974a675cec306c59cbebc6c4146c2f4d429898c6914fc5746d6f0a1dc322a807c591e6b8f1c4f927c7791e706f3e7076b95a5d72319597966bf0b9994471d8d65758f346b1a74a71c61e8396c4b5a662af14d5b95441f4a742d4ebd9ac611acc996021b5f21a1fb26fc756d1c25f1b11191e9dd6c4391412dfb83bd13b012ebf343f4b3a240d1d929a3232b38975b827f4679dc5b8b6769743ab7e7530a0b48e9cdda08af2db0a13d8ab6c2ad193aaa4fcb6c0e480c6f16609bfedc2205c747702ade469416ba7480e9be018cf684d6aba18fb6af219aa5b519fbde49fd9c5f6f6eda5334dabc015ac35f0ba7dbbb1ebaaa9525a9019ae47de66dc890e29aae90c479772eb9a2ed69aee8e28a5d56a05ffa5356677a3ae8261563a89aa53a4d286842ec110120c93044e98700d7dcca64f6b362f180923f5ad193c855eaf11269f843bd4aa84bb931ecade0309c118313cbb1b120da4199292366bd94a633e546e5fba9f61f2ab39c790f69ad5bc44dd0d1263d06de8ad01494a7ff2bf57fa6781e60a9ba502d6284394c185320b883ffc7898da7e52a5157def74e0fefb756db9bd56a3f051e5d144d20df84d455f55d40928dc8626cbb12ce960e8d4e50ceb1283b63ac67d306a1500bcc74cc3ba4f2bf41c0e521c9369858e24f900ca60b69d4b7c0d3724922ed72acf7fadc029c6da6b9d397628717cacb1a98eb0522bb155fa2b30a9cbd54a96abd5bb12b5a6da64304ac4c28c283c7e55d10804412dc547aecfdf282e15d757287af54aaa7959fb376453c2f954a1255e63f2a6a2cbf55145adc4a78f2f3c54797e982024597fe21de669682f9291ee67a2f0cf62a20b70c9e2c447911f5de8d20d03224dd8de8c0bde9cb3e947a9acbdcada6ec6818ffc18943dc6ad5c293a9a8920c281b3adbfd2f09834a3e1fe9d3c11265ebfab281bbb5dce6a557ca9c812f63a9c4218f61cd03db77e2fb98fbbebb1e6b68252de20be228041139dbf539c648072f16031cb2eaa723722b217b302eca03ae4d4bcd029202ea5f0c407982cab8ed8cc4bd2ac09c16b899eca04c5b1f477ebddb2e2b63415e28007b5240d26dc39eef17e82367cf7045da5a557d74fed4d4cb9507f7ccd01ba07776e0d67d462ab90055d76241fe73474283ffe704297841f3f3fa18b166daea1337f053e53e59c6585b554b10894c56381b25a96d38cf0e4e2fb824f997469cbe594cb0c3887191d8e670fb5dfc8c7b3dbb7f16381343b9e9d7472b08ad7b6045085ee16c1e767ae003e2fcf7cc56a2ebe743e22db2a39936a6ed32ad6301dd236cbd339d7ddd453a64b5e37f6032dcfce6ab65125ab25f0b7469c2c6c5e5c5c943587a2c9b942e72493c2823965bd9a023cd505a0d791324031182cc2c5fbfa87b26fb514fe14df57b975b0b29829d4982f2c0f481678d16b2a53d3c571794212dd8a72e26d1722e71213be67aae36c119c41c48c1eb75f92fa04179b681f759e773fcdb2db9b5f9bc8135c6c982b94c12ec89a2b9c9312633ffe9b54d3e33d431c934be849708bd84b4c9bea3781786f6726465ddb6ca8daf62d2223a94495715dd2195926d2d8d2ac905ed92d9846c0b178413539a725e1744966f401a5b46915c89aa2490f2fc4b02eff127be77a6e6d8d9942e718c7d193aca9145f808acff904214e674e83fea915b5a16cca2f328cf7b8d7b7a1d943fbcdcf0fffe71fee2923339aeaa8f19879c7c5e658e17bbc99cc368a3b27d7bc29cccb352e50cf7b4c7c1f50eb82e99cce086f9556cec3231d0c0bbed7f0bfcd69e31c1ea80d638c8b8dac5f1da19a9c63626880cd8ab9b02be6929476551f8c009cff9cda9bdb296dc8055d9895af34eb6f186edfb9aa9e63d2d0c577acac0d1d8e9b68656dc2cada9c90733ceee4d2b3ba6e16f59d2bec79bcc26ee6b2b1ca9ea7abece617bd2b6d4ff5c26a7b6e96a7869ebaa764693b87a56dba6d61f4b3b3a1bf0bf8ba6f1e9f7fffa2dc58abcbc586d5e58f542a59ad5de36e891f6a5c00f6a58bf54ca1996135ead8c0724e67e48a9e9333dac069b9feffb3f72edc6de3c6e2f85791786e55e21a62243ff2a082a8d96cb6cd6db2d99b7877ffbdaaae0b5390c50d05aa20e8d891f8ddff070380041fb29d34dbedafd7a7dd9802413c0683c1cc601e8ad483aefda24937ad73ce2772314b5cbbbb649a09ff1a7fbad9ee2e31aa20ff13f934fd54f78c4383416a9b700f8ea4e3e0f834f52bc8f40959ef769efafb09c16da26ea475687c322f3defe0d39d3ce1925b3ce192a62766d2e51a972033eb4f70d42c706283987f1a0caea57f8d13fc095f56b791cbd6f9b382f367a5ce9ff1fef36705e7cfaa13a975871b6d253118ac828cc9e7528af83c97ccf7a0188ecb0be99b5aa87303f819592187663a286f8d1257b61f304acc70adce0a8c12ed705c03c3c1a05d7bd33241dceb80ec6433740ecf55edf0f473722dc0cbc19e93b580e171516a2af770e04599d2a3d386f1a1d7b8cae8e2faa7893e1fe206079ea3d06ffb77e69556a1b33f84e386f4811b4ee8201140be91ba44a0b882c610a8e6fc212662a96a53c28b051764ea90aa82ffa4618e1ec60d55a8392e4fd915a8c3fc1cc131293175409ea36624ea9621673b1d5a579a22b46d85e3a5f834729cad4a2629c794744880f53eaa0afd7c30a0cebd526ca5c5d228d179993574d7d37ab00c12e3d85576679001756ff08c466d2dbcc66eca73a4e4e3dd8eb662181fd7e0fa286c04cc6d1980b4255c6b06e2963d29cdd7ebe67737c9f2e3c71d57761039d1da8e804d3fc36342c88768b71b573e010d250a283a723202cf885a600b3a41e06bd450323d53db272731c27e667d3c9a8a195d2543ae07c6a43b94735ed4ac7c8c2ee934728c722ab58aebfa556d62eeae36d8c5d573cebbc8d395cfbec235de28dd739fd26cd2c52fb76184c74f59cdd9afa39fe9de5ec2c6441a1d99886eae4f30236054d795fa7d40c6a3c323ec1a9f3600c55b3166788d568f0e8f6b1a55db89a805acd378c9082f5ca3b352b9f6df8eeff4abd88d3a8a19fe1095e9c81a56248d94fb6528250848060abbf6cd991392eccfe66af8bd56221f1e1f79087f13f908acd84646db7b563630a91e49565989c2e2d4d0f734fd39151fdef289808d36183042c8555492c0d368b7f3dfa98e3e444428e2f967e1fb571161c8765066c7baf182b9f2e080ab8609da4a710d9945906b6a721a0d06fd37d44713741a91ff8efcd30855817cab5ace6ba38ebe86eb1c1d9dd4065afd2f6b6248606f825afe4fd4bf362621e51b0dd4476373b71e93d308539046c14acf8d2fbc356ad09c309c118a1312e325b9d6eabd0f114e9a2887931a92266d243591a0078376e69665b739ed12cc9ecbc8d19325c94c96e1e1182fc8706cf4fd6050bfac5c0c2e9b51a64ddf97952ff925b96c863ddc2ec878f49f951efe7078e9f83dd8f0cd2ddeda57bdd582aeafe9d5b7b9460a45fd46cfc8e5744546a10ff760abddeef2e90af20f10c5f93a91a46b97084b04f33501002e8933c9c1408ddf9a402e1bde10cb32d69959f8653308e4a56bd6ef6764590f4be0fb99353c46606ebc41b856459ddd997d63d2902d751a32b45dba98f1f0d8c59401198e9f9c3c82d32eb1ee66260459b560d344072c7e14fa3e257f897d37cabb13e13cc11421845bc1c8abea25ff635383af21c0390a366affd26855fa0faca7fe9a245539ccff53842f2d20f05a890dfe46092b61196bd0bf24ebe0429523bd281db5f12518f46768b7f32f01682084fe25726e78129d8a75a3cdfc1308ddae91659a3bf33118b4180cfc16aeca147c8ad1f0841d219c93c5c10ae1d153920f06afa3a7eaa07f1d915c2da41b1d7a74fc58953498c7126e37e22658c0f83e957ea2f99fddce7bde0373e45e693be6a103af9759d38b1eb4d2d35998627e817be7b9ecf1b46771b6f7e3abde479af5b20d8be265cc16c15ff95ff9f3c5a2477b4fb50587a291d69c3e088267555fbd557cb1624289f072c57a5230d693696f23d2cb78c17ab497a454edd25ecc177144652a7aa9e86d121ab1559a2c9850b58dbb4fe01de452c9fcc59fc0466949e2c85fe244811636a51158f35a5eb2bc05dc56ac7d8aff27562b455e467e8e97a07c6d5b6faec8122fec8d4542724774b15929f33a8fd5453f177b5d254ac7f1a49bf226dd8e0cd63561b7ebff0201a714842074fcdde7fd56cd7be5cebb28f23261401dcf7260947f8efc18559e4bd5f1561465487b6de5eeb0031c779c9129b2c6dc1df78be51553c5e5eeabe5924f88b7a73bad191a8363c2d843a5c9fd9f2220bb699709148e49a79d12a6a46da7846d6097a742db92c483416c9fe960409f963c1f4bb5971550ac9770e98c452b60231e8e75aedbcab26d309015735a99bb8df0cdfc1511b8edede450b0c640a4eab99083c150093eafa3a96f07eccb0e02a7de20f4f475a4a919f862356a81772296e475349478ff8447cfe4741482507f3343275a98e2c64ef963d4727a6cb83cf04967605d6df1db7285ecda8afc66a7a7ee74efe2aefb575442c87fc53ec74ced4ff5278e7c8919c2eee1ab57efbf5405a7b87e795d6fece5e736e6064038aaa243f910859b13f04de3ddedfd977ae7963801d76bf1ac1c63890b665d67acc1c46b76c9121f95f67c95bd80cdb48a84cb6258a2a14496feab0809f221d234a2ee3cdd737a7db55eb3454c25b39d86a2c5b54c9a1ffd9831f14d92461f80cf6c7f773884ad70e0bbdb811d8c4fd083f16837aa2b9bf6da8bd45b3c3ce968f16434420f0e4f6e68f275fab16caf35f745529b7647f6b4f191575a8c2b19cdca6cc3a1288555d0c0dd081bc579134228ddedc4530a5a224a89406e02d9bf44f59ca6acc1196a8324e1387f3ac3fa108113b521efa1f61ceb3242059ad945dc4d4a07fe14fe7d06667875e362dfd8d6b40f01b4dbc9671c755bfa728479aa761ebadd06c9dd27c683b56590f3d4d8f336ac742a7be2968f5247428ca75a55d3dd88a88c754cd47cc7df61302849014a6b5e992d9159189765221c8d85e8ccf1a386d3f9864837841ddffb71e71b52e572b3a990f5f08526ffa94daa5e792014a2ac6af13b75f20f44559a83969f715f911db5c46a7fc867ea5fd06258ff6343950683ab4867c483456fe71cbea6cfd67430f0af2919e1c8f7c68f4fbc1a66fc4f2d38bacda4732783b416b5ebb04963be6dbbd059659871f090d6d1430d4c54e91fa9da1db17919a9971482b0437966ca13f8b5847f37a66c455dc2c1d38f3ec20bea123d7f4535c5c497942c285e537232c200990bda707f3ca73eda363ef79bed0f57d4d0e00a9e9f68e94e00d6c054a79f7dca29aa3310820e064e8311e5114b5e1801c81714159c12a9ced876af0a604e7116add8224f58f9f57b8a216d7d9acbb0c96da1212b9cf1022b55c53c69ee62a179d2ddee0df5d174f434057a61dafe13e58b8491f3ba2b058688d437f15ebcc97b49ace06d96e54a93afbaa1a4ce1e7c3b5bd76eda99abe2212d62a6747a4943ff8c1a27e4880e0663f8bbdbf9d568d41fa705e3dc5fa52601ab6903fec5bb34d59ed04da347ab2da5539f512229515bb5f5296128f4a57adff9aeab90a2503e6b76d84dd271aa6696d0e952d183588d21a22e07ff81d6d82c087ae224e253e39fb6cc59c34f36dc4109230552e3b630326922ddb08f143991bca93a42a94be36d04cc760e72c8eaacb3ce5a6577996c445223981d1f7b8ac52326d6650d5c68ab81dff1aa91474d35c0286294a45db571e70aa5786fc356b4147aa85bb5cabc7b41f737a247c73b5e770d715f3385201d4d941719e933401f9262092c951eb066e5e2a55f43071b61440987a26b1045112b121651a21d305ed05ad2a737d576ecf75fd0ddaedf7789da2acd93c55f62962c7c7522aa8f5d42fb5e7d6d74f0a071af3c6129daaa1d3cd148c8a80d20da96602786535b5060d5fc1b4560450d58d79e37ba0da6fb2e4ea93fc230d698d324b9dec2bc1de9f2b43a2380fee82b848ae8d8fd1053cd0328dac49ec29fbeff82aae13e8b289aa00fd48f298e28d605185a73da697151ad169d36fa63dd0084ee515c903999f5f588fdea93a98e6a076799be51ef6e4636b43c9825194dc0bd4b9b6ec98383d2537926e760b0cf83b394bf48d71be0c6ed8d8840db5cd12c75f68fd4d92f1044b7c9293239af49464b9e407308ac82f29581724a35693839f210b6744f6a722761d66d23fdb211534b47feb52d1d9f78083895912b61b8c74e49d1a6af5503902cc9ef503a61d08f4082a7da998a3a8ed9e1187f82c4f5f8cfda5fa374df69f6aebe86f3bad1a308cbd120c7eca3b389df6ae0d508c1f3635c2dc56bda94e9e05eea1b852b939aa38908ce9a29fb78a525d9d0e986929998871baa43732b42179c2dd89209e7e6b6c1a12806b57dae8ed0a40b3a8c107241a7d7f4e020f42f14cea9dd82f05760ac8d97adcbc3fd89faace449628ba40f01dd5b03c6f53dc59c767ea2ae3625a193047c6f20a872c9ce5764cd4fd429b6cfcfa56af65545ee1245c296146d9737b6bcd404b3f6cab6f6bc4403eb6363b501fe29f5a9a6634a66b0f267d73ceeb60e5dda877d320e2c8803187107c07c5fe3bd8d734a7905cec0571e6d65b83d54c7308738e375a7fcefe273881c3bae929f808fd6c8dc0453c29d3b0d5abbd300d3905af44b76652d8ba47365f14aa80faf370ca16dfd9b46848037e632f20d13174c87a57d516fb570f3cdd62e04289ac0c0c71e2abd3314ad1fd763cce5446b4d277a5c39c41ffe45f81ce765a4811e2b0a4ea8a16fe44a4cea29c8a59debb47c223c942daf1aac583a3f257f811c78ed0059ac28e9980d680d3c32288da4228469151f4a1a7387ff8afd18a7a0d38c715d67f503ada2fddbb0561617cc0c4a8449c97f443e042a4b1116ceeef8054801046a66d5fd85c9c18bdc604665dca776488546d422d60a9f50f5f78e56e62437eb17d5686b2a46f98cbc81dc57e44d341c9ba0560dc24dde44449a37021864f3c3023623fa37b78e50e6fd8a662f6cc2705db2881796c3508c8269c6d6713e857380f4474ef81f60351bfdba5f40d3eb58560d033ba34aea3fb54c0b51be9cc83225456355c65d497e16fe112e992b2ca747e108e15a94da90618bb566223adc61a9ecd43f3bdcf5c3116edd558523dca9e62ceb769756eac97084ad8e33ec8ff10d727a38c2eea1a98759e31ac2e118dbacb67a4eb5eda9cb5660c0cc428ef7b3ed6a56edbe2de350e522ad71f42665ae5ebcd8d03790a15cdb5a87d9fc9156c1f6fb7e9f698b3fe6387b3f69fc1e372bf88f6b05bb9dd703f23a848c00c34d1a7339b46753cf2b2beb34ca0e3e7dd371acf0ae90e38a8ac63a9a4057f0101b97369da4ed8804bf503fae83064d229d4d8ca1c268f9d9340e127641a3eb336d1af03e3f9782b1575ca6e528745a6e1de059d5d16eb85620dd3374d20ade21773b5f92bedff72561d327c485e594050b63c2fbd2526fc73947a7e8b0469ad502f465b0a2996352bea0920e61308a18790821dc97953e63c28df521b43a41f518d6bcb4ade3eca3def48a5ca042870abe6109e8dd9780564bf08aba7954fee10541961debe8d689015363210f9f52710160cf8cf8e706b9b7af6687f3a9fb4307e033bdfd487d8980ab391c8dbcba8371250b1cddada323b7a3a35a47dbfff80f0df4f08f0c7f60d726a8af4ec31b7ade81c0f6b00859830a4b1cab8345350b5426e41004551aea8d8a378c34c76d1d8deb7e11f1d28720cc90749f4350695cc59ce6b598d3e67a9a131df7d2866898204e6abf75251efc3d67e25ac7e748c5f324f175a733d509f10efeebfddbef036daa1f2faf7dcf3b90e8e0f7f399ea929831cc7f8f8c38cf5be2bc205c89f3f11232cb3025852d53b1867da81e2c53f38b2fd02485157da216f41ba6e4afb71212e21745b13ff834ef74ded0c0f015b8b48306f85c30dceff3cae7426ace1bbfa3c146a432859b778dddc40d1feb70001ae74ed410db2c457fd4642098099159f12af53d822d1fd2305810605af62d6db27880394a2cb5ac83e215ebe3972bc66ba35754b0c9eb20e60610b3e32bd99849cd90b7c9e3cce6084b2d23b316f822cde0b4c8d25e08c896c8ee80bbd4de4903f87117e0cb74331da0840655038abbdab63e8508f89d3ca66c2d0a54b3c4afb6cea8b20336b136522227a9e9768284c9a4010ca9934dab9c9230bcaaa9821df6550747b0f081068b1a4b3ab67723583a6c2f6e72c09554526f0f02f9d44122cb593a533491593af96a3b92062e38ea3b1721941cd2c6c86d07433e9ab8c853a167a5d761a84affd15228fa23cc66728e7c85a5df7ece26513beb6b6e916fdb6069ec922650d408b62d41e21f0488ab61bd431a5805b7027f77237574f2c6b5d8e21619bb593216da1e5622fc83b6e4e23a487b9dd8d58693ebc458a419ec5b768d86ef190dab46c3f468d471c1f568188c46e3baa1bfee80786340b7b251ad23df84a86b0f37dd335c5e0d97ebe1723418a42666380c576281194edd81a68d816a97354d035ac45a75fc8e6a891408749314ee5bed0ee52b44b0745fc035674542f41e33ec88fa7da3c6562a46465f2c69626a9b128e0d87cf4d212bd95356e03f31f213c53f31f29ce25735827493ba50073bff9992ad86d80fa9903409ff4e95a8baf8f6ed1bc54d850d52a2e7cd6a9a15a3b6aac48f52a75c86d1eed0e2d9c5aff6cb1ee35fbb35a760cef1d8432104497cece1b7e07e117c60d7193821995cbd04305fa8fd860cd63bba9c52886ea2eb1e06fc1b5addc9c3054881f578bea8813134502963f7eea6b09d12b36a9fbbeddb35d9edaacdbe476d1af9ded1633d24dd6a7f8c058c0788cd0b6b6af95cb6d6beea9ce9ce8f55dffd3eeb92560703bf2e8d59181840f4c7ae5ab9b3097d798b0a04378b15c46ab8dad64dff9d0674b349ae4db6445c8a3f6e1be71077dcc482cdc29f68f50ab63d8d647cc9ecebe7142f933c5bbdbfe651583f1ecc05d9f87115e5b34bfbfe3fe60ac3eacb134a78c7255c6b96a099a9f7d85a86c3274f3cec757ce8215cc9dd3667ad1c0cfab0d702b30b5cb0c02cd502883449d8226c1f3db5c9fd0fe45f74ef00e4fe3b007c76f6fee58b772f4fcf5e7d7ffaf2ddf7cf5fbf3ffbf6edd9f76f4fcf7e7cfff2ecedbbb3bfbcfdf1ece757af5f9f7df3f2ecbb57ef5e7e1b6e5f5eaa950b67dfe31ff02ff82a88b9daef50fa43925fc43cfbe6fa7b25325ee0bf6377b46f7c86bf4105fec0f06b864f397e3d2f8a49bf3d21b8cb5ac0f6f8e6fa4f69265f2960f0884dfc06e1f372be60cb98b385439acecedebd7cfee2f4ecdb973f9dbe7dfbfafdd91f5fbffde6f9ebb33fbd7dfbe7b33343064da03e496eae0dec7c1067dfc6995a8d05a863b27cb34985ccf40636ed5541df389106283e4393ef04f946f81d9b5606f6b484761476804d6581f08f77fcc6e6e9d49f5517d645817c0891c1f036bd6442c40ba643326b83b666acff776c19ee4f04a016c35d856faea1f32e425423f4ac93d0ef59daaed6e45441506b410b840a7fbbefe3e7f83ce78b04ceb970842f99c8e29487def861f03878e899b381891f68f4815e30859ea1a7f59a8b74ed159a4efc37255b7bebf0332df09f29f96f3a18fc4c77bbffa613b87555cb4efe4c6df084ddeecfb4686983bc3c63bd4c8a38929ef319f7c78f14d5bcb17a6dd5cd51aa51bc0c7b21b17776c6b237e9224f986783a0f44785a5769a8fd501098f704c86631b71b43fc679cdfa2533a2002d59b1a66d4a3efde8a33027fd117eeb6f702db96b5271705a53a4382493f94722eef05bd61f6123d8659ce6d9841b531d2295e0624a8928b4610b615599990d2bafb13a7c40c02266e3dad81b17d41453124d52c2704464b9437322fc8a48a624c611a1c51e0d748e2054c2d6761fe6b8d653c89aaa7d09aa7c736160a66174f9d6660c7192eb99e6d54cf3322795bebde7c63db339db67449d39c4daf75a6b20c70088a352ea9f0ac24361e2ad7292e3cc47e00023ca8eb50d985340726c4627b0333e372cf752230e780cc66e9e6e7d575a8310da96c7d322dd263eaadfbaeef9a85c1f405b5b779a696c1c17ce60366ab3502baea6444c8449c3aca057738de693ea8ebb6ed10a2e4a2d0bf2a724b68168f78cbdeb8ba2e1ecc5d19e8ffb673e6acc5490b43d5bbcf44ddea0155ee04bf22d950caf3bb32f5519cca7d5a34d927fddf94994302aec47ee0ffbd945e76782fd3d67997ccee335ccfe3b41d76cda596a1b3aefee1fcc8e1bed74159a662afaf549adfc8a5c546453a2edb5bf4018ec35105e90b5cbf29efb2b78d5587b54e0f16804710ddaeee31b2696a958abe174bb333a15029e7ed408f69238c5937a871d89a15e0630101b90f8b6ea97a63a20fc5bfc119fe117a591abc31555ba161d2e7bfa82e887b0b3121b0cfc178421fc623078116893ee3769f4414fe90d71cb266fc99bd9688e3f9237b3f11c9f9137b3c3396e8cfccdec685e6e864e6e4d0fc7f533ab86f3866519bd602f5694734546d420de6bea78da54a7992df31ef29fbf779960fd45514cded6beb11f38bbc47f8b4798a1d07f4f18768a4ff148675fc4b5b5300de3b3f60229fa04c4bc13cc51cab314124676cdfa623030150288fee67ba7ab38eb9d8bf463c6446f91b28cff5ef60c17dabd0b83de1bfa81f5b25cb09e5c51d9bb4e737050eed1de264dae977102c1c8b463b2693a0b7a2b293759f8e0c1f23c58b3079a43b2f533cfbd1facc67bfe79e3eddad7bfd27035437465122c2932fa1af22b41f06ef5cf2b32c2cfc9d111fe9e1c1d4d3ad6b1f7ea69eba0d09bee07d05ad53114ff427e08d4240f27faef3848f95a5771dbfe60e38433728539793d314354a32b734834bc4820e047bcf447cfc8aba130d63560ffc8c1c7ab321afcd36ee7ff49f16b9ffc7708e12bc2b4d9e06bc516a426ed73a9beddfe64cf66e6a7d5a6f9491fb1309a77e5d8c10aced96d5768ab28b04d15377c75f0fd843ffd7e3078fef4fba9fff899e6391e23fc3de14f9f4f9f871c85cf09c7af883cf81e7fd8edfc0f6aa0bf049b349306964649606d43d562d5b7ae92b8d5a45e13897fdaed46cfe4b4b381b00e88c6e66d624551c81b6c1fc9d8a56c5d2679e4d0ad51777b2447ee3bd747919cb86f1ccf4672ecbe689807bac0a86e7159e9fdeb468c3eaa657d3969448c62e4a8d00897e288c4c02977b0468eda84d7386781631269e6a446fa15efe8125b9b3a67cf1035fe1c35bc3539491b83e3b70c8edd65704d4725179ac29a9bc0ce8aa771d8c526b67984eae6500c06ed0089c21a232341a283f297368d6fc146d5198e5defd743283b3c19d50365abc26ecfde63fd8e1d3740aa4a4fd891a200cc11695843a4499b228db89348d316de981237b45813b94956ad68d3b40c7e26d036b22142c04ed3916c684db289a611e161544a36cc483682444dc926720764061961e6ca9d95de5eee7387ebb8f56195c86b63f36fcb3ceaaefccbca613a1ea9a530fc39a2701d973f0abad93b3e4e52abcf6f5cb97cc68e329a5bb98a33576fdbb9cb6a43dbe3fcde71c6a6f5ed59b9dc74f055c2099fd6217b45bb1d4854b55534a13d5e5eb128573549cb2249b595f9f5cf3634cfbabf694ef33bb0e132ab003679ed39f2a240da2a0a20c9fde313d4a10b327a127f3c7aa48e7cee8f1f1d231cc3c309c211f1669af6f4becf9364ee615a95fc6839cdb9877325f807327d0fa634a7f4c24a4e953a6aaffa8e4d9dfb491a46613e18e48afbd2ea289fa169ea3314c6faae79ef141e1da92954b4b2944f93e56050fd1be8660921fa4197e29888dd2eddedbeb3cd7b562bb88a330f29aa524e256e8fa22610eacdd01a891c0cd4ffdb0390aed6ee4bd6cd28eecaeb4f1c93669e701c91b45c204c3f6fbd34f5898d991da440216c46b51f937a70a310831971996da4d02a92d24ad25208b5b1e414bee5a18e48d053bf104e1b8b6ce1d99c6439fc5b90ac320ebc01771e21dfb47fc1e40fb68bb74b73bde8aebe680eafab7be79aa62ce4aef384cf1150b0db9baa6d973e616ec8392b4777ccada6e6fd22cd6e2d2597c3923782c48c26fca9b46618bcb28c93333e9f8880f17ccd84a25dc4fdb1dbf5c7580451ca97f145aedff747d804308e358288e0a3d0c19c497f8470f72c1816c107768d052a9d67aacd58bb34e58301f3dd6dc21116508605c2906aa952f5a4a5916ddf67bdd8a8fed53646c6134f0964a7d71ba64387792f28e7a9923793a4477b5142b3ac47b31e2d47e3219391ab45aebbb43cefafd7e76952e0a80b15621f0d06dfa469c228f775cd199ba302d3aeda91a2a165add0fbc31fbc03564ca0917ea4d8cb8c894b05660f0d06a6bda02a25baa45e51e3484ea8efc592092a53e1219ca9df6e359ca8128880c632cf81efb296a7de58516a14e70df36cc782a713f4fcc0ebc5594f41df85f6a43a0bebaa5bcb4c4529cfa4c82399360c114c241373bb24899c257308cc6be89c09f703f5a6327c5bb5bf72c05ec31aa7ce42d55904497a31857fd5e1e6687f1cec301e9faedbdba5faf80791aee38c0582656972c97ca4ad63dc2f41c0b67774126d17be4485dbd0da85c459a43029dfa8357041e057af6cb00a85fe5ad3dd99a219d572b772b2545426e7597e9e45223e671e9ae8302470c6a1a2ba455cf8c2bdecb956e363c199462656662464c1d9df216c63f51baefb88172569c6165ed5c4451599c1d6113987a0ef25535cb65fded6a464e90b2ccbb40ed65a5971c75e980e06dac3c9170ddb5c9d3a218c97be1a3aeea71657277b3e888c21a017c2074ecb25586205961815766edaac03e632550b18961372dee865b313667471ed39eb7eeef8f6da66fbd5c7bafc3c5f2e990d605ebe32c44a37e9bc983afd555f562b35db2aec0825d6070c2fe67aff5cfa6dc6b54be8d1cdc0dd38ace59ef5d7e39a749f4c83810fe830e3731d87109eb4f134ee82c3e4e080a3495128cec146c9b40835b183d03690cde999ab934f7bce4f807eaa193c66ed7d9bbb4c7b5059dcb7f6aeb599eb2233f998c732a649fcc9c16e45255f6a33379d3db2d693d983a631812a941346b1aa10afd62e21c4e9541144770816d52c87e7333cdb7e60d7616dff1b2839a071a05f6ffdda98e8adf55fc5c1e9f6cc07f882c9b6f98fb3579ce68a628e302b7c845fee5b96f6a2985143ea05223b260634a1392386b6e77ebb016c6ab36a1e26dbca5dbf37d59d064a12d2866a7713e5075f0c4ca7b91668df1225dd946cc35e38c74bbf02751f9edcb392ede1b0aaa67b9166b6ce19f05b6cd1e4b4267b1808796bcb25c233d15be719f4516bb9068773b5393b10633fbe97fc415babc7aa681ebb9dcfc81694600cc3ba879513cf788eed3a86ae0f51a1adbd3ef90c3707592df732152f69b4ea1a57655aec3a6d1966a3a2d5c052ef39ff753ade94c8a0ecdbd7d3700564cd9dc82a2da5128d7c8e701a38a40214a97aeea29a302f4c6c71e1d717917573810ecb19fb68dbe8415b8157d059d3cd2d90d98358ac13b1f68cc901afbf31c4cdef90136f87a22470f15c3251a5d0ab29b84026768eaa646059bb9434f5182a2a08bbeaaa20aa029414c801d4324e24eba45dffb2b08298b0beb41757bf01d0045be4512749f8da40d30c90811716a4e929f86c0c377c38262e5971b73dff7c20ebab8c7e3a81c0c0fd11ee47bb9dd0e202617e8c4b4ca52da0536bc442e497c05cad6d3a18f4cb58c1f6836e215d2f448ff21e5b6fe4752f637fcf198f40ac356b1f23bc7f21a39447b47df2576a11edc382650bf09893e742d06b5faa65194dc4533911070788cfc4dc590b3137b6456609dd95495bcac652388a558b7546bac7fc086d0589f62f1d435b9d0304c0db06bebc0df8604ea5e737f5cbc148077c28647e1a2c45baf6f92c3e38982380a8927b5c9e03743e75026d9bab91e96542e59b7f0ea9aeeda43d1ba40c5e319bc3fdc64d9b044cc45aa4bbda10a2da10d68b1dc026d18d0b286e5a4071cb026a8c4d83982fd8d5dba51fa3097b46464a20cd36491c319fe131c2116c8349aaa59ef88bba326d94d81929fc093497a993eea4a5c426dcfdd7be594a03c3cb74992eb3062761c210b9bc45894e597b1f3bcaffa2985bae4e2d440be72a857f973e64156753f54fc82a8fa16e26543a08c87b86392c35b1bec41970b5a20a17687428aad4dc95a4a84f48dad97cdaddbc99e8ca4fc1cbca51898103561a3650bd8270eae023d883c74b3f7295816a33c3c0f32a2c77bbb59a1240876dd7d860c10ad9cae1a872b29d5b3a1b615a01626634977608731f4dfa3e277e642e767d848245ca199aa8666d749d48ab012660fa0ad57284cb511866a191273e26597927a9c6d3e783012d23e4da27c73c401d89665de2a260cd9345750ee7421067f67cf82298edd1cb1f1c7054cd4fcef8bc35c5497b50b7a0a9abe72d4973babce158fc47ce43870fbc65a7a1cf0556c3bdffe0403ac0e233791760590024dd82b425255a52d6baf7eefb8cb7d8aadbd995643c8b539e79c8dece6c33781966789566f21ddba442eae0330b4570abdb14b8c7b9e55aa8a4c2a28c03b0a61b6d6946375a88e4ec23cb5c77e83459d40bd6f48ab0c180a9075db288b34d9a315d6a7e1432d0c96884b59aae2e625c11cdbd1550a3818c349ac8f1c180eb083030a6f2fe0e8624700a2e011f9998a410870a4a21a027b015f08aa48aadd36f6c3bb6c0d4e098db279d5bc342007350b2eaf98392d580222d4f275ec0bd6bd7258c852e242a50a763aa66d675cd6a352316e3e1d218565f7d94d53e72f200343fe353131c82c8d0e704909399ad2931cc501bd8c0e44367b10b77e5ad964fffb2904175e4a86186f3bcdb715c4e3c6326ca870d5aa1a603dac886a778dba0c9e299b6ad773a180caae6e34fec99ad38411a114da8fbea83e003bb868ef5ab7daed516f14a70f6fbda15dee8c1ba6043a4c62384cb6a25aed4e0a38188b079808c8ff06410b36a473f40051745ab16ec58cd445977481d77531a88995f0a83ac16bc3feaba23af110c1e08c81b102c7c893d996f12e67504075c15659d244d3fe49bae4acb66253807ba6a6eca0be9fd17a5dda6f2862158a68a3a8869f5d3f7e2f53a87abe5a19e060abd3ffce1ececd59b373f9e3effe6f5cbb3d31f7f78fdf2ecec0f7ff0707cf3b7431d18a9bb81776fdf9e422b2ecfdb74e7dd77b32d2dd9e7b8ba3a0ffb7d81edc578d81f37c8fe58c1b5d0766fa6dda560ec13dbedbaf8e4a21a57ee984e96b2d2b696c6bcf27a679567a3ce096ea11f961e8af5907afdb1be16c948ed8633ce82b38f8c7e78a30e9e2ae6462645ca2fea850b6a02e81793ccb103e926a3ba990ba6e444883aa563fca25293a1b77781dda6dac4d5a5de4e6b2364c8994458d6db30b5f6b43355409ed6a6bddbf90d30b08fbd9ff5330a1be0282b3b00d2c7350adb4d37bfd606d68966b966f17cb78b34db8963501d670027e78ebeda83be6b8d57bb4eafb8a804433030cdd8696e8e4f0e0e4a9185293e4e114005fb14ed7612a098eabecb5354c24aab99ea253758acdd9a01ffdcc86fab52802d478825591a4342c09e6ae8dac116766d8509f0d3b937acf7b7aad6b64b938653329aa44fc5e4e020457c96ce099ba525b71af91c7bbaa287858ebb600740386a1805b8a1f4fa23c5eaccd279f3f2bf02f76ceec07bc287c309529c3d61607963665744ee0c708afbe05c8257419c9dc2301635b7e9b233e93b36529571946353f62dd35741a930b24bd58d441330abc1fd3e4785f43d76c9c4b587b0f4adead83cf345f5f48a2fd895f969ae29e047cca3245fb0ccfe022d85fef14b1a73fd94d04cbe725fade9463f18b5abf3fc2ebe58495d9025b17d97a56bf324d3d7694413a60dcc6c99fb4ba80965cc53a4407f2ba4fd2106838624badb797ff843251917addc11c664aae4f4269d0e70c008689eae53e7389b77681c275221069b49579e92f3920b37fb647aa9555c61838dac4ba5299aaeeac1155214a6c51ed32c17f174c20464325736f025d00ad5c9aa55f415266a9992fab8d7f6a7d19183b0d1a5e7503b73aa765ec80aa46d7dcdc14656b7b04b9599e663a4f64e65aae9d2321cabf9446436af286f153dbaefaa2b8d08bedb7934cb98d0449ac6492e986be391dbd100f9d761f1ca2ca8fa2c85c057104533abcb7b8b58c8eb17b510b199112d74429283833c88d29c3b998eb38aa161c1924350af0fec1a129350719141e2398db72966ba0bd21f6156a990acb0e5e8e86c91604ad4ce65cc2f20da7d2040ea7d2b362baa4758c8e087b76f5f9f9d3e7ff7c797a767ef5ffdcf4b321e8db01928514f34fa7b1e8b764c42bd4651b049377e659d3af5335fd8190b045a300b5585012fb914d72437c769de25ca2e5d131677c893fd467f52ab40995d33106a6cb80e9f354fdeaa5e4b13aae442482b57a08675dacd1fad5b1f2d6a5a5558bbdd8ed5f144cbf94e010cbc76701974a636f8b2c63d90862552a7e202fe36dad1faf246dbe61ba399836ba3461512ebf5dced0cd24f9a6dd085ea0f6f6a405dd7b50fce3827d4e7ce58fb3058bbbfad8a421042d229079e469672552820c22afc5070ca98fc560dc547f85a33900b88e3b2aa0de55afb5a5933b5dae0275aa161643eaeb3160b832b7e6cc8e1d3f6a6180ce232f87f13624db6ea029cdcfd7e6dff618f2660e6d3730a3dd4dca42313ece49312483911e04fc86d60ee1f00fd60074dba0a4d58c9b8741434a443911697abd3b44591cffeb8d4b3b6c8855ab88e3e9400833bdfa438deed6a6162f6d93a54d40b2e74deaad9d6299853a563e4957566b9bd1ce4e88f0b2b4915ea08725fd6ae5c4a823a7631c9670e3f5dee746409719194806a462f6ccb52c2475d8be7ca531555313b4bb6b63964f9ab956a112ad53b60aae955a8291096853e98d55a986bfff6cda6f17fd200b0ef2f8cba500d0338a6face6f513daef0bc3d5c8e90f153e58e81857456a128d43475dfb5cea965d3e036a664c50de44d28749c944db524624365fdea47197dd51ea3f66effad358ec349a9776d5dedc175a8da8d2e26187cbde93470678b5f9aa3a1262e50bf7d60290aa94b6b8b6dde58fd4183d0e3e826ba1595d126d57f401fce6b0cd3a70a5bcf27254e36fb7f360225de6c8eebefda38a17899973a7bafb434b340378ddfe1875eea73449650a9d473f57eab549cd7263a986de2adcb3d3824a55330d0dae816eb247d74ab46af64511f1fd79c1fd0b6a8d94d15712058c6e4cf54f032af7c8a3b1c569abe2298e314c758e78b8efa84081be0bbe268bd173449627ed153a2c3e9f58665bd4b9ac40b252e65bd452c5824936b7bef645cfbd9a2777e0dc9d1ffb611e966a88091fdadb7d1419782de8f19abda0ba2158b3e943f7dd493a9f6d5902bb60e7aef185df4d6a9603d2ac1cfbf74f3cf3336848f87552f9ebd1ba3818e24fd8a5f5211532e7b3fc569020e821ea68e39bb7452a7142c88b3770cf8d18539ed38d9522513850c9fa769123258b69061ad0b0f19d62ab890611daf5a3de8ab20862957dfc1f76f97a1c465b60efb0481aa18b636965089a70b56360b252967d5df536dd39cad28fc65573492a1c4753086316e61459816e5154450d6241cf3db70b14226cfc48933d1e17e78fefefdd9e99f5ebdef8c11e7dd19c51f2a3e046c3440e012c19a7e60ef74400b8581df89747d1aaf99685c195a96ca5ee006d92a5e4a1fb9860c554e90892f4b238669aa19512d40a040d2ec036158d4b2fbe496ecc35b10682a50509cbb42314d6a2eada559b7fa54df83dbc34a11e720e5608e312d9f941cebc7969ae2c88d07541f034e677616731d97f9b6f5ab1d1de5ece098b02ded76bee206fb23546b9e3913e67ac1ec4a8d7044c6a3c36317d25a1530899fda1626f6a08b21bdc30119e374c6e60620387e16d52e7b312f1768184fe4530ee183d3999c9374260fe2f9a47c4d623586a2b005048cac1473a68d073a03aec8a90cc1ab342379f026d701f2df1a63fedd2e0f7e66e77f8e65f34d35c5c491b91a87b9248eaf90c023c560674c47f9bca4892ff0c908b937bb68eb865852670dfc2e3fe008c31d76d17dbd924ddbfce0d8041b563c1d16c4a699305a8d537605a1437dcfb1de34ee64cc17781bada8a09164e25b2a29dc53bb973e920c25165af32b8bc2a7284c7caa9875137ae6bb24cf564460be77fb92e44e5eb45fd945b2e5c16244deba068d55d9d614ae36148535bfe726c3eb4aa7b33916b79bc6b06e9318d16112037185812c44e585a0dcedac5104041b98a82ed1a4f2ee35b63079dd16467c962d4c79750ed3ebb43981e33589173d2a255b6fa43abb174c1b2ae582f578ca8730436dc0af0f390f814327a839b54bfbe3c70847c44f490cb64ed5c24ed3b08cc498169812ee3f394613195c30aee0c65ebc7f5f0b4ad3cc33a3b5cabe9a6b948b2cbe64900f4c75b72d70a6fe49c8b63c17dd98c531ea3463f34270e99a8de6d364c6e624d69e9b6561561646f6a94038f7258e6068076e1f09daa7dccc7d79c0b0eac1e4ab0e7e4963ae766ead81acd1406511cc0fbcad77a04032cb667cae9b39f00acf69aa30aea2f5fd57c1af0bbfbb81c53a80a584b2c14036fcdd7d81a66043246762eeb39998a3107eab47b82185eb0d9c137f8423abd1457e8c70a68a68b04c14b671e4c32fcd269da63fd05864c8cfdb10b5a232c3878a26cbd9688e532267e379dbb82b45adb9db130c54dbb3526bdd61e4c8d116a2a397e69aded04353e38bc65128ed53a1c48d2c15d257428c79d85e8656b7eecb7d7831e358e1136ca0ce0034b1a54d71706976f06cc6713a9f17e86ea08901346a3f2af09639587462279fe3d8ac0d0d3eb0737a1e2fafdfcbeb0462a9229fa3032ff40ea2036fe259038d3168dff210be89d78a99a05cc6cb6bb55a0e365ac8665306b89b296c0d3dafa8eff77779a2385b92b7cf8d5a8cd5c74fbef6c9e25c30d4551dee4e901d3b8197b126677c3e896beec726d444bf8e87319aea1b433f46a1dbbc2877442775d296fe65a5199b4fa2199f2be17ac60efc11d8d7981dc5d19cc408ec096f9b0043dbd9bc44ce199b774d5249e6eb4e32b0d785b47953f4948c9d40e9ae07c4745bd41cad6e1d72a5a35530af4357a0a93b1dde351d5999f3daed2cd1247d361c0f06aa496b809de231c250009b5ba20285ea27ac7581143513a03206481716cbfd118eaba59086140b72e9737f3c1e232510e9e74384141fa19e9f8c903ab9f4b32aa7e6f908a94da99f8f91a294faf904219c98e78708e1a5797e8410de98e7c708e1153c1f8e54fb0bf33c763db42eddbb86c180b96734abce68a62d49d66456526e5c0649c679f994944fcbf269533eadcaa745f994d9a7b9238d96fbf1d7dfe8cefc1be71e90ef2e9b92fa122b46aedf5cf5e9701cf6dbf55ad5c6e1a8409699a950d4c96b50da176059e06d61f149c70e7a325628e40b9242ba1367ed44b576a2f8cd216b9d2c8335f0b10ffed7ff999d7f88e5ee4dfa69f776b7ced00354e0df68944668f03669165b518c0d065e26e3e8c3351cc1e6ecddda2ae1cc1b7e84190c4d2d6cabcf8bdf7c22fa68af6b2bfbf5234267692ad999882691efa167c3312a515c38a88b25ee36ae0a04db243462fe03d5c45ffd0717981dd8e64a6425b1cffd478f81f6a94745be6a16c8772441bf315c95a0910a831ed14cce51273dc0b2b6491f3dbedb1ed527fcd6fb94a6eb61ccbdb03fc2fa479a4bf87521e8b9fd7b1ef30b35e2df6a6b5b982ce26c93d06b03145101656bde385be53cbdf2b0375ca79fcac76ce81dc803cffc34f5bc0389e5bcb0c8b35d26ec0aa011f324e66ca87e7bff02935772e060407f254458d3ab3fb1f86225d5d4d7f4eae7782157eaf9a37d5895afa334c9d7bcacb18e6bcf65334ad0de7aeb980f21e72dd768e5ade955bd601927c9905ed2380157135326eb954c72cae13249a9ccfe15d6e3ae84cf867234a75184f611bdaf4dbff4ca3e50484cc5f042d045ccb8dca9bf34717eb30da332e617c356cdf24de39b07ff8aa0cf943ca1b50b8d3059f1d26f3247edec558a0f97fe03ec4ffbb3fff5d1fc3ffd69f8575f3ffe15a1e95f117a70e1dcf5b6851b30c852fc93cbd955aa876ebe4b0b07ded03be0814c5fa71f99784133e6a3036fe875a948ca06bbe58d5246aca317c4b4a9dc3f41fcf052b160c2eb43c605df5831c1f11ae3f42046071ef60e20eabd2cf4c5b0344236f6944002b1bfee08b7401b8576a9a8cafb56c3ad01c5de2962fda012eb7125d757f3f0345b079cc434d7096a1214fab9cfc9b6c0f675435e65082708e73ec73ad2212a493f0541e6096c3cea084dd46c421c99e29a4c43efbc21dbf67b169b7a31efb1e9677a098c9afe608ed3c008c44739271c336395bf958272c350f647b8fa657b52a51a64a7b59acd32a7fe97d060ed636240fe60f67cf83ff3071738250ffe572d398ec9b6a8b95294f15486de01abef91a25b0c801bbd86bab0daf2f18ccd278edd1e60bcc0518960aa024903c932a98426d5af0ce5d70ec178137d4b1529ebb81c000af32be24ab9c50ab59952d01acfe47cb7abcea6ad976d68c48654a4395f78a162c94c2a712595c0bb73263f32c6bdd0fb25cf64bc54f28ae2a28699a4427aa1a7ff9a4206cda87f0b9c922d4de20bfe421ffda1b7cebe4bd8d56b35471a7df030bc7dcf92a57df54ab2f5735568dea9df997d695e9851341ad50d020db4456f81206235ac3f8af4635913e4b04ba6dfbc5f89987fb0efbe6717b47af70dcd62e8fd07c1964c08b6781f7f62de6fceaaa8b17d0b56163589b379885a665aeff86fd2abb7421df7a12bbb01efa749ae77c9848c239a78a1b74a45fc49f1688987cbcfcb2edd16ac65bd6ec2fe0a3d0e31eebd62f2ffd806a870fc1fc37eec7d147433ac0062137d7b58bd707e57fbc4607b09f03d085fbed738af3afe199a2c5fa81d96fd53f0b434d7381c1da1fd5f9bce3dbcadaf62a7f3b5cf88c0379ebdc8ce46e7c9286e759dfec26999cf6896c517bcee9057d9278c27b295dadf4d705cf36e2833732bb4e7a81525b97ecee95b718e051a0ce0568cf09998bb7964d3ff83517fe17a78a4f837c5fcc2fdef787c84700e68788c30dcf48c4f1447bb04adf543841a96fe7716b936648457357ea4cb48ac45a3bf6214626d1521116e77e23a9bbc534714e3916d1ac2f4ad2864d739678c97a1f232b6e80d7b59be61c247b51a3a385fc99bf7e56e67ef12fbae6cd619aa6fca4263048c7d199c9dc10a9e9ded769d91ba7d895077f28076ec98eadcebe8b692c8bb21fc5ecdb3c7ae36826519780de499ecb158ae98e89d3390577aa970408ec16ad13b288fd109abd0b1e1110457d915ae6e9d802ca12127ac76708ddd83aa1501429dfb83818d6d9ed52036ed2c05e084ac82379170bb14073fe48295d981114e7d69e3e244b6f4db78f126cd795764accdc101a64144f98f19fbf6ed1beb136f70482b854cb2b020e69c095d548f75099dfc1c27894945dad14fbcf437e40d95ab604daffccd708c47c8edd8deb3b7bb1ab60734618381a99845224d92d3d41f6153b2a117ec2f6f97cb8cc903868a3b4dc70905c7171df1f35c836d85069b2ca01138317d978af73084732ab2c160f3743cdd7a1bba5880fe05fc19437f8433d816ba18f9e8c0db5c7945b82db024f6edb7c65ccb00d8542a3d56ed496830f2a5b620f5f3e07dbcde24ec34bdb84818de66f23a615928fcad779e5e0d331d2136f4ce8163d62ad5f4928965a218e555bc5830eee1f2cac2132c318cb1511c1a2502c44891858f26e5fd1ce49225db2e40801ab1e26cfd5175e787fcd5af7488ab03e0e46bf126bdd81725f751983ee03a6d7cfc456abdbdc372d7efce634bddb1fd3ae08c7c75f89afc2363c83f12f929ea14f2ef70bed2cec43971f61c127a63becfdca8c64831544924023d23a3f2d4b999b3629ab32a2d8d9c20f43ec333cf0ec3abdec8a9d8b3e54a8d24e6262df184d6f7445afbe96c84dbd204df2784b86b42881b6f92f7183c1b2a8e25166ec2f15f8b93e3a844deb41d9f2026d6e60c476434899ea693e8e000c5b3c8f5938e4a8b33418cbfafcf08bf9dede2489bda1ade8be199fab8347b8911425812814590c499649c89b7103c3a23db886e642e8087d92889e812a297e00cc2efdf336dff30d3c6158f2f7cfe396c1a24496b314b0e3b22d33c5ae903f8948a0b26b1ac0cc0cfd3c5f5448265491ec4d9a9aafb2dbb8c23867ced8b47170bc8ddffda2083ef4183eb5471023af933e3123e7c935e9a40d60dcc4158e738d8d396d19f948dbde24cc898ea31ef6bf0b681d124493fde322c9dd1e773b9d55f15dc82a9097c3588ef6feecb807efbf03e17ee7bf9ea5bd85bd334005df3a0bcf09b324fe158938fee6e4b5eea12c6e313e426c3ffd715bb7f2dc6793c1e19466ff4449dad60d3fb7ec59824a9f303bb6fdeeb1c1869aba856eb9465f247192759ad62598a65106559773491d6912989f5d5c09a9d61c0c7c0e56d7564964176e02a35e60a24cff9e28f4cbe5087b5b654ee8fb1bcd509f3ab9ab7fdfe697679d15bc64942bcdf1fb083df7bbd4b26d4a147bc7130f67a57eb8467c4334e8e1f3f7e0c3e1e05a9b87870381a8d1e649717a64a7895c4fc4357c5f193274f1ec05baf7745bcd1e6caeb5d9bbf600f42bcf168f43bafa7453bfbeb32661fbf49d507bd51ef647ca8fe83be42d08c134f9dce6a65bd677fe57f957f954f3754ae7a0be2bd391c1f058ff0e1c9c3d75d4f478f47c113fc781c3c898e83c3e17170848f83f1703c0e8e87a3e070383e091e27c3c327c193e1d1287818a91ac3e3e058d5500f27aac689aafa7a7c340ec6f8f0f851f0a4170d0f83437c181c0e8f82437ca2fee2c7c1381a8e82313ec2aacf93e00986c2e47074ac2a8f0f83476a10580d623c8687436c9b4faa31982160338c136c07daab26f6c97b009078aa56e5d9efefd1e81f46a3278f83238d3c1d4f7aed018d86068f86168fcae5e958428b45ce3257c8d08b0c126183441a5f22c0a1a1c1218d58afc78f1e068ff0f1a387c163188142a2a145a23a8e1ee1e36307912d160d1d2cb2f3bac7a2bb631168b588c73844773ca7d1870bb8c703ff5da7e6e48e08777c7c143cc4478f1f05e3d747e3c3e0181f9e9c04c7895ac293e1f868149d04c7c393e018abbf63b5e6a3e1f849f030191e3d0a8ed53f0f15197a08ff3d0cc6c3e3e193e0f1f0381a2a1a311a3e52d425385185f8b8f7faf0e4211e3f79143c7e3d3e3c0e9ee0878f83a3bb7ffffae1633c1e9d28fcb743527ff5b0300c0b068ec747a3d70f1f07c77a6640281f62d5c37130c6d04b30c64f82c7d108ab6ed4fe7904580ca5899a1a86a91d2a42173cc20fabb7ea6f74a408227ea4365f708461c4c1186677343e0ac6c9f868a4da551bb6f7798d24155c0d58e0ac78188ce1ef93e0f18be3e347c1237cf4446dd8e363d5ead1e3276a63568bf92befa9ff876e0b339ffbc763b083ca8c222f22dc3f79883085929313f01a518f0f47a8ceff7eae6154e2eaec6420576ccddc1bcb7fbe466faea619391ca7d509804c56aaa29798a3ca80688f0ce22de24b0f0b7f1b2f422f51c4ea3cbdfa86461f1622dd7838b25c65082e8b519621253c6ac35726508153848a044ad895d46117b600a3b054141a4746270085166a96645bb614d68c0722c621d34f450c5fa4492a425acdc27e185475f0797af51eee04ea5702d60e1bac1b4addbfa6c92dbb04db75c296321c6173dbf14d2a65baeeecff22979289c0da9dd82f5eabef6fa85f19a7d82f2040e4e77d729a6eee36a6f20a64195fb1858765ba09ad1db501c4270864d9d99c7e55148e6232b9a73ebf25f5614144757a3d0a4965736e33d1e3cc16bc671b0a0ef838b145a729200f6141b64a3fbe504535bb807ffee5849986873d7712f66739055b0013f0b0570edf9b83b7302462da20c77c17106a715732892fc9667a338ddc76d1c245b04c53c9048c051598e20c2728dcdb52b6a1dcc310f7eece94f9a67e51815708a7fb87be8c2f4a10df3c035d0b28fa9dc68f2f15e1df94c176b6a61f97eedba03efeac2ad4267e95f57360e205cd117651c069468723c2758c085b2d5608d2feb6c417e7d5799a2605fef2b34bc32ddcee3975a2c689a5ab07508cb52355e8d15ca6ad03aa7924d56df8ecc994c49c19bf16c56aee3ba84cb7773ba5ea956f3fa26eab5f3f9fba875260670b85dbbd60cbb934c05ba65cbe8f3fb17db5ecfbda24bd315b7b655f0655b5639537ee8d7b23effe7cd3e75b529d6f49eb7c4baaf32d31e71bcee0713c7ee49e75c9e79f75cbbd675d9ec974adf68348930c8eb394bf48d28ce1a53dcbd4af6f7229538e57c464ced1bf4f639930bcf86d8fb9da0c3cec99f1dba3ac1aad6732433b63f7e6ea7cbafd24db7c16c3df75185c062b461770ac2c104e77bb3b1d04fdfe7230d85bf3dc4c6b2bd55cc255a74c71a9170c61059738fa102605ded762e92f8fb7cb3849c27e9febaf21c7bb7a0854f96ee7b0b2652986bcd91ac41ec4d65ed6ceb0da3a39c70004bac366d59c728554cee1801babd93a6e965f76dc6cc856af4cb8fdbcc3c2083b15287433812e2f300022dc3a5a278fa79c79f8dc7821e85ff6bcdaa4b1168fd25caa03c8beefb2b1d2328625f36006ae4e48753e95d2c6d80ef07884d7545cc45c1f31c371297a85632ba81c8f6a247af97f9744ffdfb389c131d9d87329d257a1946cfc485f72aab329830a87631d18640327920e0cb231675675386d3ecbba6b45f20edabbddd08b9853c916a7ab7c7dce699c648a1904fe6b7907a1dc607e5555da76206e6c89ffdea87732da5cb99b8c9e676902ee4d8a9498ad6535171f57b164ef151950bbf3a3a01bc3337a274ace0727bb652ad6a1078f0995ecfff38727a3df21af28105e285273e3c80e0effb3eb959e5fb557f1e53e8b7386b6ff0413256913a9fedb999c5761061972c21d42667cb25dd1ec051c633fd00b6dddc4838b54a63f087649aac7e03ce60b1f52a3a9a2efd99524d563f5f6de28ea2b58b247c12d56ec3fc749f28e452cbe04029a75a519663620faab35bd607de2daecb86f4cbab58cc9f71228550b232a0bf70b26bf8b45d66527d4b40bc292d4470099805230469fb839ab000f835aa73a455494d0f506baf39d8a4b5560924eb93586bc1a66b66f98aec4d06872a2ed878c71d0b79a5ef9109f4ea61b05657a41f55c11e60a9cb7016e84a1e150ba0034dba96bc16c6b7a42c6dcc742dc474367fd3418ebcdaa7df805cd1edcd06c05df9bf3589b15576258ac963ac3821cfea734ed1d8c4ba7c4a7a3e9286407e259998cdb3e0c853a3f6b2652cf85483f7602ab9ef4ac9acb53329a2a92e0aaa56bc240156e6bbb283d3b3d75dc79589d55a197ad699278388ee0e05423780d6fada4a17b34ab88e132365c602dac78aa2c4ef3ace7ab8f7af079ef03bb469e11248c74534bb85f4eb57301f76c2c0d59d8522ec42b503757593cab12a07f0188b4fbc65e18e96c556d20a9293581a4ca7a3e7cf11910ba2b600c347893f8a4460b10471f4a060cc7e4f03f5989a590e0082755827a5906e38ba71191a19f90065871446400f9b9fc0427073142781f5cbbd4c2b9166757410773884c8ed3c65e507d36a2573af1a5f6755e09c1c2d739800f648119de82f642fd2ad72ec514ecff552121841708e2663486f2bd0ecc5bb9c25482d625beaccbc8d52a389a62a369d5cbe5941bc91996a45dbdb9824e8d8668fd2bdd77e756aa48e17184b467a692282228016d1785c7fa6d4efef91aaeac9eec07d60a0bc2824c443822ace2a6714e58a0d70d6e740c9cf0b2548c6d48b4db09bc2271b76288568aa1042f2b3e31fd0c748e2d3a3be31a0c9c9f67677a8c95e2a6ceb0dce5f0c599cf5161888aa389d008f6fb5c24bef7fb83cdc1ef3df4fba24045e622a3416d5153b360bd09c41e64735eb4d4372272de9a8b8572b6ad5705ce3af539e2367d4ea26ada569d39ff508a78ed2b7050797b517a09c5a09e794717719e858770f3bda28bf463e8c53c6312ec8646bdf1e6aab7ca12ea8ff0e877783c1afd0e0787a8439d532a954c80b1f3248d3e94daa3689f88aa55369def8d34d876c7d3f2e1be260bdcc22d7dc3d231bbc3cd55cf3be86a497ff80dc0082c076a8aa3ecde51e92b29656a9705c63e3db1eeec87e347c69dfd89bd23383c3cf9b23b027de5b6d781fd9fa74d60ffc6da04e4c4b38250d689391b4c56c47b4dc057f169773401e2f3fcd9350236525fd4ce6f34a939ea0474b3617c0109a37c6698befad21af1d1edfec7cd4281b0c30dbe7cd93138e07e354389fc7d2e2fcedd8d39378ddcaf7f1478df879a3b013cdc5b05380853c9d356b1ea7fc1922ed8108ed3deb6976e6814cbebb0370a46e349afe8ace73c0ef559e27e399ef49cb865b6bc77381aadb38e1613465bdf7757721e3bbad503bebd670fed05110daa90697f1469be713c906ef8e8c5fbf7d577782b755a97700b000a0f4723ccae62a91e8aea762f0b3d351dafc0ae9acaa62e0317cd16367e76e40540ba5cbf2ef7d573480583fc8ef6717d7b685f30bd3d6e1acd6d1e5ee028dd21392dbfe0beef4e99a5285c753c2ec3021e1e1e956101c78787555cc0c3d197c505ac822e6d9dc87b55e8f3061e55621b7ea7c3d7395f95b3c53544aab8e4dbe62c9d714252c24a34d539689aa9331b736b46d6dc42402f7d3c31543267da00205efa77bcf2e7a891aabcce6b0d06b764309fde96e15c75116e8b895055763ba18e983d41c634ef1696b1d29d3084acf0b97ff4b0cc1dabe3453e76424a3e297167d4c01cf577fc8f06962c4362e5fffa97ab7be2f99878959d2a1a361800b7a1a38e7a3daf3be5c2de08bba8c0c9d769396db7bc6c47a6c0bc9eaaab043ce66db7440149b7b46b225718339aa44ff9243d38406296baae8969e99a08f704fbddf30542bb1df09b41ca5faa23c49d7d95985e217de9d598f97cea296e860a884d07d9fc83f2b09958b763f880653ec39e3a933c84b332a3a6d688eb2e0d7b581540d70596f677cc2fbe7858faec7e511b9c12829ff3c5f3c502ca3b0715f38bd6b8627ed11c1a5bdc6964e57016296f0ca60ea98e29ec811a5bb4c6c716eef0ae62d94238de3132589a9b97cf0c498da1bdb4ce28796d9457b1ac0df12a861ce6e5e8eacb7adb00efb690ad1134d75117d5c6515bc3db8671db02baa8de1a4c63cda0c40ca5d65be7780cd75656c282d8189d95a8c7a77cc6e6213f8070b8860a388a44811b700cf7b471e0d94835a138f00c0bece1daf4f77ffb6dcaed97ea0baf28b02c3861d89744a0bd9222afde18d0d9bc9795c84824768469932e3225c2c9c15f6a576b8bd3697468af1c9c9556b220e115a0217779036a3826bc810a6230d0b68738d54f29c2b17e8a5181d336ba360604597c2143bc0935b6c15a476dbe566c6f3b5f18c4b5766217d8c9ebd4c23de622cc3e2bbe8a953451b2b786a06881d0fcc02595a915b305aec863ed0d9896039697c557b1c4e526744babba4ef3f0ab50f31745150dc911da273583416b9eb774b8fecd17a43f29a37c1d8eee7322dfe744fe37c889ece6aceb086375b3f4f0c50261371fad09d2eb3893d37e5faa9ecb026ba0a76870381cf709518cf681ef10b1e09c66ec279aec764e213a007ebc0c21dd83342e3def8bb238dd2ae0467511ce0d5f77f84447af3382ff570c61e70a0ad16f2b28ac285f24ac212cdc184f853be3818cc1a38978ca26e2e00081957e351e31afcc03743fafe3258baea384f99e39563c3c324cae33921a2ff94f1c8ce27ebac6e3f294ffc4e1b0456b343531e09f3414c502e3716b1cbfc522e96ebb46f31b2c11f45a8ec532c4d1afc0105312b51962da1c14695242c80d8323d2a126c6b44af819bc3085814c355c223493f309d5df40262a3f26e6279ab1b9212b31c84465e350b1f6d307d5c932e68b6fdfbea954c78a07a47b79e0a65da41db1b6eb68050830fa4642ac32d2708e90d4996c0b1c937af245506ce9658fad0e0c569fc43331c7959b12d76e4a7e6a557f95a587f13d3243f3b017736f8e70741350250417988de63827d16c3c6ff0f669c999370b1437dd2c638b5a91e2c41bbf9b5f01b6e2dba393a698bb314c939457f7154669bfd4668e35b1c2a1962d09a24ed99b92478dce1628dcd3795e1aac46295f74f76e0492aece2ba9a4a3ef4a34890a5f748926b42d9ae4843aa249fe55981325bb2abc7943371b455f532c83351317cc2dcd48acabbed237deb52f3ad9b4d477f6515983d754a72eb091cf416a34029c3159cf93446df818f20469255218f9bc54286186b0beb882526366a30a95d0a8cbe02c613aadad9ec4f7ec4aee9d81a56294b853403827b12f31455d39b3f20e5d6e999d3c574c924e11268238fb49c960e5a46373ed9091b417f39ec4897ea07849e42c9de30de9fc6e890683fed250d8984ffac96e970d06fdcd34d9edfad96eb79926834106a11dbbbff6d5b848c73ac4ce3a70671d625887aa4f0be3b88271b916b1b3160542e10d7da9b51d173756b96138fdd1dd87511408e745299dd7657347a5d338415dff7e3618888accaee9c667b84b1e2aba9353f319530833ef92a1e49eb562682a7d864256f890238dbb3a046d90647fd7f2ea033a41766ec8f35c30c2763b88e32ed5df329363c76c714c66d5654ca4afd222dda03dbf06033f9d457312436514c63aaf74840cf7e038e3e6f0a5493c95cf517518aa9fee7968b7c22c9f2b5688ceccd39c703f43059de5ea2947c59ef394ce62533b76fd7669e1ca51b5cc68fade90cfe47caafe09996124e4fcd73151fdbfeaef0786653822be8080a7fbf38582b5d90899e36eaf91d87d9693fb2c27ff8a1661748f6f98e5b25e6803925b7c668ce064eca8ee6ab842ab9329e566819ba63a95614b5e730330f65bd10db62c38d7cdbce8b081697ee7e6d4c87fbdac0fc6d63faadbfa7fcdc40f5df6f84aa2fb472cf065906d20a50bdccb7cc1e722de6c1260ac8aba94a0e3adb46cdec12fa869406f258aad37fa9d176e65ba313ec58e7bb136ef2e53338fb0b55f1b1758471ad31f8e6c1c9b5a10b27a6c36fbe9a82870fb7e12c46e0808a3646e35607bf56860e5c44aa89bb577452bd0c3e07604bcc01a64e1b6cbedda464738de5cf5b23489178a085553ad9be76bc0501eafe14202d626af7e7f9b0baadb1f674eb5d3781df38befcca4432fcacfe36878ce3ec54cf823dc1b0587ea9fc7b83746ce67af24d3cde9783a5ecc97ea34615e51b381ffdac93af64464ad3c0a27ac93bdb5246cc6e644fda3b975b05df9f546d8f7bd9ceb0f174eae499d3a69b7eb9b1c4ad656b05d52df79b7e5a829eff68eeeeff6eeeff6fe1deef62aa32385d587e622eae8489fa78747c768d275f9e7e87a84cfd06ea765e8dd2ef69bdb7ddfed61bcf4414f19c499558e97d69d776aa292d967732c94a89392fe18c7f6a64d8aeb52a68a30256cf61e50208881b0a662eea349df17c48f080db8f69a04b30c08006544da00e80ec28a2fb75ebac0f84e549768524490583c47db540d212679b18c394d92ebad1a80d8edb4b698067a72bb9d7df251595309c786938e4b91ab89019d5040db4e065ced3075965129d97a23d5f65d30cd24e782f578ca870085f3a49298bc2e425de1c6438b1b8f2c6e3ceec68d3666fcc378e198948eea172a6645d0443e65ae81a992e7099bc97915beebeefd37f0a4175b851f4cc59b692ad07b6ec5a7b93a7a5af6aa327d0fb4c7181997d8ad67b714e9da677702caddd738db084599efbebc7b284a97568b47e982fdf8ee5529e2f80c9519ce1fccfabff7d17fce1f5c7468c4bcdf79f6229805d18a8a17e9823d97fe089530f2c70fd58f1f371b9b7dfd0e7c83c14d10c32f5e5e6d7cef77333a5c8e864fe6dbc3c2c3de45ec01d23a357cb70a3a3095264dad1a6c5d7b5dd29e78f04b1a73dff31032db3f5567fed21f13424a942c4dd541e9369e585f61ed933e82f44ae54f59ca141a3d6a777511951a8966731cfb1ce1d81708157549e796213b23ad36130bd6502810e664dcd43a49e233d07b73544db8fca2ca665decdd486d0b3fd6ad307879b56191e251fea6f16cf1e3bb577f53187dce7ae9b2a73eeefd4d37f637dcbb4865ef6fa5ae801d787f532c46357fe6e4de7ff0d7830717d8eb7908df0416d9a1557255725bef77dfbdfcdd77df79a1f7d77cb95c2ef4bf1ef67ef7dd77bffbee65b3bcc082a401bb626a6d2662a2d787cfc46c349f938e91a817ce60f4ed41a48b27b1620467a3b90e4c084dc4a8707a28f8ccfbdd8b436f4ecc30bc52014b6bd7917097319ae44fa95de9bc52bdd2593e9fb8c073764e86bd0b0f613ecb5c237ba0605f4056ac72a98d1fbb5dbb708f96a9441ac5d596baac3d58e34174610f8404b335676c3ea939f08386cce0f550ed653e9db17938abf62c07bf77f8c10fec66414d75f1ed065356c357892cccd5f039c541946eaef7bd5bc649b2ef9d3a097e7cc5e5e3d6e0baead7346cd37d4bc602d0609e11896f50cf7d55dd5c11de3e98667430b42d268eed037147e48e5be113774b6a86114d2ef4b6eb54e76e09a7c48f14558d7cee1f1e9f205459769d2034d14f0fbfccc6cb75e1f9fa8a6fc7dbe75f57e35d0e32bbd7537fae9e5a07ad188f1e1d3d3a1e3f3e3ceacc515aca5638c24be29d9de9290d05a3911c1a85f1d03b00c564e9aa840ebcb3330f6fba6f6eacc58dc462427f8ddca39208929b687ab7661515015bc7b2eeb264b55c33dbe436e5f5785d5a2864a8c0e972597f45a422c792890e8fae9eec13c20a54ecc994cc0a9cb92fe08a8d118ee50d6e623d090e038a4f2e7c6174fd465acd6b5950339f6386b0431283c69544cb2aca1a7632b22dd06c39d7565206649815b5c6f6c6be6bf283cea5040c5441c50cd9f5a8706a008bac9f522bd8fb7e4c38224409ee024d477d42e2dd6efc2026848c1f44a1e296e2c120ea1312a1694a46a19f92ae434f4e25803a4cb06ac44f7764848c499999aada517e3902a4b74f8ca33a00daa6651d173ae616a6c05c2d9763ebb3e9b85af17d6e217f838bb1da403aaea98b1ead1dc77ead1dc7aa1d27dd1d27bb779c096ba9491fb8c2fea41e7d546011a45c072468502158187fb413417a0e69b216dfc43243030917c95580bf8e465101fb80d5f681445f80ba565a728730d17e264e89c14f855f56eb43e43409e59edd62e343d425fd2a86c26c69ed1bab82402db17670d1e0b2c14cdc5081771c252b47c9a64978d39e366efb9f37d0e5b231d2a2498160a1f6ed9aaaa969b3e90b267dd41cf0be3de8b34e7bd4a68e69ca66a37968630de8e0939a326900b7b7ad19ecaa1e17c0f7a37d1b1747086f7f10e965bc6022dce01729cfd4e11fae8a3bba1a5495145bf910f977beb0387e747f61717f61f16f7261516bb65c03d1955adf5996421f7a3529310de48aca7750252302d77e7f47938c11e1f7c7a8fee254e4503e6a947fafa8a9306674f52f5671b687d015f59a56a9dca93870c9447a1f6ae35f30d4c623136ae3f17da88dfb501bf7a136ee436ddc87dab80fb5711f6ae33ed4c67da88daf1f6ae36b39db3fb977b6bf77b6ff670fe7ded9feded9feded9feded9feded9feded9feded9feded9feded9feded9feded9fe1fb1b33b39bab7b3bbb7b3bbb7b3bbb7b3bbb7b3bbb7b3bbb7b3bbb7b3bbb7b3bbb7b3fb87edec4e8e3fc3ceeee4e4deceeedeceeedfc0cecedd04b53d5c3740321ebe954bb4a0d773ef0eded0779f85da558f6fdb805f1847a88b5bd1dedf8381f1025fa64a7617d3eaa7ef017b1e18acf050f870341e1de1b8b3964e44662a3dc45167a5a5a0174e5b8f30edaca6677bb64e17ccd47c8cf3ee5e45ba8c132674b5f131cef655032a695a7b8293ce6a86f29ac64678d9598b66d73c7206371ee3cdbee64ceae97aed55376c52f1918ac599604b53f3102fbac193671bc633dbe011beecacb666ebd45439c1ebce2a09fd746daa3cace8f9b5756beef2de3412b0c3c5fcc77fe8b793ec636cdc7a239ab15e1a9a02465800f745ba7c19c29f8dfe13e93fb9fe43f59f45585a655a4d45d5d66050f5699a4cf4672bfd276b7f6d3981a2801a6b5df152ff899dd7150dbe7034280a2284904d21032d0a936b2c83e70a11dea40b469658062fcad586a28d2e52f8640f66925465f6dc268ad5b5a92d532c83ef341abc634bb2523fcd8e211196c16bfae99aacb10cdeb0754a2eb10c7e805d07baf41fcc56203996c17bd8413010aa7e1a8c210b2c1bfa40456f3bb487d69286d45c963bc808dbed182124d27f36fa4faeff50fd675129643a516930f0ab152584ac77bbdaefcbc6efacf13b69fc5e815a3ece9cf5696b472f20c88559d8a5fea0b18417b6b0b6881d6d995692c2fda05ce1fd1f64fa03bbfc1dab7033d86ab34e75630efeecef7865ea5ae4da5f33d23501f3f6d75aeb5a8096fb6b5dea5a0667f7d78b4d3d8bd0fb6be6baa683edfbeb5253d76e85fd356f4d69593bb41f8eee0fedfb43fbfed0be3fb4ef0fedfb43fbfed0fe573db4bf20fc669cbd486205eaf692eaf89a60b24fba3d956673136caae5ae0441a7667c3876b5e0bcd2820774b17879c9b87c1d67927126ca8b27a9bd0496cbafdfa7364ddfdbedbe9079dddad62eda91b1643918a87f0b1fed76364eac3ad5caef3ce423c5d004825da81150998a773997f19aedf198d326f2c2c96bd6fed443cfc808c7241d0cba5a9ec44bbfabdc68b6719ddb3b4238459dd5e3094b32d693e27a6b6cd6baaa99d85711daded0672b9651dfbd9069a96439162d4d1480b1eee086e31b784ac36884db0247242e8302ee76de1ffe607f78989258b352afdcf7b5120fe7242ef560a7f402aa38bf3d9c756c28861322f7ac4e8232386eec3a240840bdf5bb3f215915d929dc1628f828e8867c02502d89a739b1055bbc9754480f6f9ca2bfc42c597878453c76c5a25c1bea2e0864f7574bbaf0f025d916784db6c5643d8be6fbbc5da1b36bd2199f1e5f90ebc1e0dabff65ffbb33942687231185cf409118341aa15871738428381bf26175a1a382767ae5dc05e1b81359a7c745e9ed7ac72cff059edf7477c36cbe7e46360a24e7f0fcae93f5a68da1deae12488b35671c78d5627ab01c90bab5ead95465f0e06be24847cdced3afa2484f8d21dd86e27417b8e508193604dc587aec3e0f3ac19ce50e8bbe60c67182c8bd86ee73305998e7121744348b07384991a1d05846b0f6f7b76463fd218cc6ef00bff8d6b4aedfc98d1bd688513cdc0dacd46dea8ee5449c3e4109b7b131d16f28dffa92c2e6f9a3a57d597689a86a989131bc815e35de1af19381b4dcd9d5659bf406a5ee7089fffffe4bd095bdb48b600fa57406faea31a178a4d76398aaf034e8769020c905e2ef1f009bb8c35c825b754222158fffd7d756a51951620dde9bef3eeebfebe60d5be9c3a75cea9b3d8cbe7e08b3bce0abed0e8a25e44cbdc756313872fc315b9697a5435d4cca4cdb654b2a0a854844fc9354933e296612f3694c2fd40bb862c4d2757c9ca05b77aa96851bf57c0e483140bd3ab60b38fa9f66a2b937af090118ba259b08faf0ce8b15478aec4e388dface340ae839e5053e72bad7e679c38815fe7f0938a64351af1416272193212809223242d095b24b3c0a110a50192c2f452d566e9cd98b2342299d616f982f066690ccf40fd6e1165c811181cbc9d82a7538dc0645c914e6733ca0ec203b7cba43fc13ee2888d679fb1494051813396acfcea53b05c3df335ba1cd7596fe2498c1c25141c1ec2039b037e49e13c890737c2e735309f81d3eb302e30c72bfc1a1e7f9992156fa371d5c147b26c68603886d74093ba294e8cd014b0a972283884352598891d4b71c2e75d5d7bb1f0086f6e26855adfa83a5f09925bfd41f426e80db6b622019cd3dac244131c06d3eae2a449021b35e545f793a982e0d475089d0997912aef75a0214e749207724ba7d801da653f993a086746b2f4ef0c19bcadbcd3c96ce07d3df554ddb2f3320d6ff6a0a259be6cd4ac61a416406ef1eebeb92fa80aba8899a1c9a75410d39b0d78b0e744f2c6e7882d929c6d40f58d24dd9023707ec7808ba2c0e1459aafcc536ec7446add792a76beb4e8aeec3c9d083ab6b68bfa48a6f64669331772fd3a358729b5ccd3c1454ac2aba2883a1dd781df8ed0f270a6096511cd097ca34e272a7bed74d8eb20329a03b31ba1f22c40361a46067c820b0bb15a53717e089ec2a160381aba6de80a8e94d90dbe46bed4eb10949a3b4505561f7ecddce60108c3983314a94e1c1287e570a0ae2fd919a384ab114fa0512d94b591b1ac67cc4f1c4edfa149ba0ce3b245f0fce096e518c2d7059e4734ca167e3363d80a564c80956d7f6c801503b0a2c64a07a595d286bde2d4d8574cbd70ce48ca010a7f71291f6281e110fd5943143018683127184db7dc12a9946d2a5b6dbeeb7c9485368e2a6a78218af9451a4b4c20dd913ba8c0ea8605e6c102352384987d17df2a96cadf07033e92e53103137686f99eee27533f2db000797ec59690a2b65e5e1cd7a6f8f36b95f8b375864da5eec321f30f4bbb3249c12626493a05daf1ca4dd7ebb352f73df2ce237a9d5c359beaa5c17c50754e94e008ce5c0a62bedaba6ac26e23ca36c23825e1ec6623cd29e5cc97a0bb822098558ead0e24a0ba7bef0a2d7eaa4e54c26130bd0ca2c1405d9754ef005c794ab5e8c49d620a3d85d04b1804c1355287bd54fa2ff808d496a87e101564185534180093ba9bca01ebf26a29e67206693013231d50af4698b890232e2c03b5500d0cd413378aab1188a83148838534f11acb0d82235022935c9e01188ea05787337f857358b5861590c231c807c70bbea85514e52c7389a15c312b85dc244d24362417532a0a97608aa708472504abb11a7ede6f798b1a0b628e6489243231458514a8e893268b2b2a2cbdf453f3881c5aca6a9fadaf73eb6b87e3a73379eba8f6d42a4f1a35a909a7699b4c71804417c7c66598a0a2304c233e68f66560160c6cfd6d4bc14e7119e4f3c6519a2ca38c18e3e0c76dd3d025a338152a7502dac72e39a3134c708a0ca4b81904a18114f300e8579c05b9e05dd429c89abc7a679ac8c8b023995c070de5d0bc9464497c4ddccc93790d8c2593270b13186b812b9972fd652ef26b6d37b429871e101cb979a549adf45e6db998baa100505838be9a85be1758c0864c7414e108f910ef432ff54969e9900644cbd0ce14d53f51c88c0a8ab5c29b95a78899b8a26c484654b1f8084d3648164e8ca1a92d75695f0f58f55ccacab635cbe9826ce8d820b38408754af92abb116e3c82ca8f36445b8e5ea36be9816eeca6b81cbbe803d9d77022204e33e68dc34a04ad5459aceb8120531393c5e3b425e031979d0168c85b75124452e79e295a4ddeb2fa406f962b75179f561b06f223df7dd882eac51403530aaa21dd9007aaa9f912ba4e4b29c7ada0757c72d69b14833e882560d48ac909c8597f82f07699631070e46c7bc24728e9b3809c3d99a01aef0f521366f4ffc58e63a7082bb0fd6392f755485a0ac06119b0593a30acadaee068dbdd06676a6e826b2d26b88cc3760a839443056989cb9939dde0be72f1a7c779368533c74a10937a9903cbc6cb0c28c037bc740ac8794421c1d0014fd401dfeae328b054764180d4eda6658c1e14cddd44f9044c51390c899884b1be96d70c2af95467f6302b4a0a4cb03f2a84d22dfff4df1b88e8bdbe22e49d4dc57dbdd9e3b7eef77fb3f99334606297badbcf9f812b1bf1fb39583e8adf2fc01fa1f8fd12211ccadfaf10c2b9f8fda28710cee4efbe691f193fd83eb2394ea036e81acd8ee2f0c630f8078362827042df92799212c84e1ab2dfe5717c324d09a17ed490fd216766ccd132031a0c1b324ea325a7ceea193f453392ec27e1cccfaab9f78635f94e71150d338870f63eccf824c86c689a99d0d1ec9864f992b804f96e258797e79391624f65a663b405bdff9941186d1982e1958df71f4719db6364e9a28131d5851a9cf054545f00533dc330342de72edfb6c8514ad2248e3fa6f17acdbc551cde8c66ee9de55cfa17ad06ba25de3c8fe30c60d9de52705451023adf593bff4bc4acecbf6cc4cb9c117bacfcc0d506f8912e45f25f343027cc5992c1c324c87bf84e1f93304ba8942395b0bfb0201fdb072667093c6fba04217fb319249d8b7c3e27ca611ef1927806653a1d6715e61999d9c943fb4cb69c487b5495d5d4e7fb2f5a4d43b2a467ff4e583af2b5957172c128742683da4274c581356a8e575d888de8b1454ac809786fc93a1dfae68992c6e8b24601970fcbac218337f64453841a0df57bb59674be68477fdaad2ca294dd9823aa37641691633252ece63e13ca6ede45d7e488a4534259a7431fa77feff77a6fb69fd51aae16168d5753ad0ee6d19cddd4da7e561bf43ba31c346b56b45accc875eb985fd4c67c522b0dadd71bb1faa011252d5dbcaa7571502d0c3dd49a283b48a428de3a4400a63efb53c30ad72fe8fa086e8b2a6ed1d4c45f758ecbeb9678098d9370661867a1f201c148a37ccdddef4fdd0c2c9fdeffb9aeaa1bbd3094dc5b98adc8941d73840798709a672c5982a1b2b68b87b870b7854f711440083682a7016920347018102f5a869704e7fc57c62f1f7e07e00c3ef9bd3ac37140bc389a129a911fc90d9ecbbb8dd34d78156c6e4ef12228b732ee74dc8577456e8218e1f970a1cb06733f823c3ea020021f164e4417248d84bb0fc814f303841e3084572271764d52166511bd0c6ea7a0d8e73b974972192d430787b325c9b2f092f8ce68b6f129dfeef59f6e7cf9926dc464ce1cccaf653e867096718240deb94654ee927acb456fea1e0f3637f396921994e4ed059b9b19c2217cc3520621c2a9bbc0c9773f62da4f0fe7899e7176ca4d8304ccdf0d1e282d79a0f43e68d2b6dde256e5b77f0a77aaf879b862d98072dc92afdc1449ffb8b7c5c0747825dd09377b3912e7c5760e42d08082cb203a51be88cfc8041508275e08ec42c03cc0eaefc13f5a5af21138f12e8035db912f5741e903f99092f7399da56426d1b42e0c4d5a18b3d67cc9f049bfd7894118370ca7a47c7122c0a05e869f1e9cc05236e4cae9ac0c0ea4a194c6d838f14041ae5e84d338d8dc90a4c5e19407609888b5feeeb07907a081c426910fab2a50e5362aaf0691b68d701ab82ca89ae4333464be1193988154213deb4d7014a45a3945bdfd3addc463c97ef25905eaed463a386c61b87afa4b0959a28c5db0b80af996ee84717c114eaf44905d880e71924e7112102fa7d16f393981b4bd198e82aac344479477d020f2a25990e0c8cbd26990e248deb320805a9070e685ab15a133f0f1e2467f3d97fdefcf0297743ae56f8902a8545dae45defe53a1b1b21762447b339c06cc3b3fffc7cfe747fba35fc7c7e73b8707eff67e38393f6f4b07176a1c10e964900ccbd9a9aeb320f15381e46a597f127563d25638096e0d6ac1d7772de617b0ef38b8bcef7da9302daf7cf559cac87029e3911f2757d16a4566f24be1635fbbdf34646429ae8a0b2009c464fc87e0d4454b8afb852fa3433d8c9d38c988cc0d67220da4f47224479cff1555f4af528ac6bf6a1705a49aec9f48d06c9bcc37382f9152659720d5647f20a1ceb740728dd7106d4672be6f81c1377eee2c427ac9f3d48dc17730cfc8873c66d12a86bb8ba4026564fe66dfbcfaef8bc4f307089127cf1f468788577c0b204bd12938a270cf4a0875fa7e9ffffbdc7f058e6d759880b28e3098c206fd6b3628dcac00a0d7aad4e960a30c5f270c745cbda2715e0cb16f92c4fadc54924baab9de5809ab95cef5a16b489707a221471dc7862c7d36eb79fab4d5b2aa67b85e00ce5c3dd93ee7b57ceb78d4720125d452eb47a556a47ea66b455a16bb79a9056e69486e5eff86335e2b63e0937a9e855c1ab20ddc54cfade1a15a1189616be92562ac654904d4922eb1512557dda53568373d95ad0c44756f4140741544717ab322ee59fd74ea0470903341edd8d13ea626a69c3ed08dd29397224843ff498fe33fea6ebf7c026a57eeabe7d5c05a82eaa0e4f346e412846990b891e5aeeab79c640c978ea4528f7c6184ce5c8a8d829881af4295c310a685d4f770a768907ba32f51920511ce25add8a4ce12baa9f0e8ec4e311864e4de4e48a72486b93c45fafb34b92214a250bce0895166147bc253c2b8d1a6502977481f3a38f7b2554a383dea6ebf7a890c932cc36575e9c6ba6a3d6568f9eb3e36372db394f6b0f4ba881765026c2b162d3a9d0ff5ce88f832aa5ca7e3523064ad17698f71ff2e4e42b63f6e1b27f02f9d0e754bdea8875001ddf0a99eab41de4b252be07cf55c0027075280cd57db0236b75f3da902a7546e94042b11f2c28823ff2959b124cd825b09a03e40304e49b64a6846c46751847550b69f45ea96cd9d8e4b8244c2e16d9ec67e2950eb4d8a3240db597f8210360aa7f856a86bf8ce25614e81ade1738856ea1c44feb05941690b7036c582c29d601a54d591a48bfeda42a8d93532d7cccb69b688e6cc8517b57914c7648679a39c102133a444b19516c55ab634295c8cb6b567d8bbd0800acd26e6894180605cfcd258858250437674e6083d0f07c3426287b38a0e7612505dcc9c89a57165ecf11931d4e44cefc952b30396c855fb052a267acf08e67bcde0ad1759835925191fc42a877f43365d3c7c04554dddea18d2a631e059c8429fcaa194473f7c38fe1f34210cf07aaf2766380417c31462ced463c9c7d54a0125687a5929201a6693802a6d1c0232e2072380fe93edb6e1296ddf0454ace93cbaf4a4073e72c2429683bc0f7e743a49a7b399b8ea1b0d999bbaceb158de8d7918c5640646161ba2c0c63499910da7ab2a60d50316befbf54d4711f2894bbfc1c3dabc622167d8ee10d949c0300553533e8a80225ca2a3147e8ba31624983c74199fbcb4ddc2977d52dec9c7e33ded04d225c84bc92a0ea7c47dfc5f4f7b8f2f23ecfcb763263e1941a26f256e3f7d7c899dbfd9693b5010db893d5eb06ba53d7b0b05cfecc45d489c38cd379a986e347737991d3f3502557cc4ef0b86b41234bf223f1eef9f90309d2e8ec2345c662e4328028815867fae34e9151cded96450c23fabdce6a52b8546a13a281f9b9e38593770ce268e4f823332c18de78a6f8a1765bb213cf50fc1f749b27772a8c6e6f35cc1dfba040e56f08f93c30349344673de0fc253816b1397a1ae13385dbed9882307f0d62ec5879d527e18f186ba81bbd50799a6b6601f3a68e80c1d9f97ed46e89b400d27c199135e72941ce66c91a4d157e95f128c5708655b02df1b097ce11cec10165ef23f5f56514a32073bf3345972a42ed06a34df5a26b3681e91d95616d129116939ada5c661c67459fe9d4cd51896e1972de93387f7b04a932f375bd581a6e0133e15cad6e9cd16282a3a984f39dd0a2f0965cea4f158ebc86438c253e335890c5d63db55c8d44fd441160844733732f7c177106641eab1345af26af945c652b78723846c8200d35aa9a8db4748da1a4dcfd8a4d34974c30cbd097af2dc0c7866e064846d4d93e42a02d32236843a43fe8f7f3641caeff1199d205fe7741dccf1a44ff9e53345fef45b3052b97c29f8e208e92c4c676fd3e47346d231bd76d1d010030aafcf2c78ec2eb388ac591acd0865e871e4317e49d2f03aba040565be4523be437c4d66c91428b0aad43974aa18516a4c6bf5474e217b196123c6d2e82267c4751629993b3815b110f907c2ad456ef92f5f14c370e54f93d897de7da7493c2c7f9638cfffdb63ec38c8771ccc219e574f328633405a3eef8bff18aa1f65c57f7d1a9635c38c97e57f86e28f51eeffb13aa0e192c84ef84fcc77838f3149195e856c01f9ce6361eda1124a4bdb6199c84b75cbcf423f0307892bfc9478ea08ca95336d1684883d951e59e8255880bb0cf9ac74ccaa564ba824c98f4e478c1e12f98fa27051dd1bfd66d59b450b5c3aa3b73bbbe3773fbcdffbc78ffb1f0e0e8ffe797c72faf1a79f7ff9f57fc28be98ccc2f17d1bfafe2254d56bfa519cbaf3f7fb9f9daeb6f3f79faecf98b97afba8f03c776492c6da6e0513770c4e43638ce0b239a6d847423a240b46cf0350da71cc71486fd53e97018279623eb19099e5949a553df389aeda8c6a0aad3e4f39858c1127114c88507932bc7c161d0c379900e22bddbeb10add76e1e388183c3ffeaa3c1b41be42af7f9930e7bf3e6e556f85ffdbfbf4480715c1a88ca3bc98c8c981b7603efc53384de6c3f7b661860250316b0d7af5faeb5d9faf7c621b79fd3a8627e597a7816e6286710a40d9814b8351bc82206eedea3ec00bc1bbb14753ab28abaad02a7cb27041738e5d8f9870fa7eaf21675e55762d4e507865fd35681c828304b96614403875fc29bbd2008a6655e46a6794a1c844b2c07f83b08e5453fd870508139ebeed75f8f2a95bc25d83089802897e32f2bd771ffb51e7cfa94fd1db94e97741d14b867ff1a4cfe8e9c921763c319a9afd5d99309f2e169128b8731bfa6e6039be212ec3898af984793cf2eda7af9fc2979868ac2af6e1abaadcec39268d4fb41b7f72adeb450c772800bf9301d9c4dcc23c9af97e6e060562db143b79ae3f509561c2fe71bb15d58d99916d69986f2750529554bc413ac26093b67bb214976d8e2a092b6355bb0d0b28a34d3e91057846b2f8fdb7d2f3155f9e2f6aba74286035237295fc421e43c4338871fa6c431133ab2d352880732aff2d30324b237977c1c99b9f788be788b98781761463e1eef773a9ba14bbc3c8d8198e63f82dcd5d95864f10a0b12ce3820e85fc087138f73de104f8dff28cb61e2b134a4d93c4997726c662b4a6ca953bc69b25c0a1b96b2d89912fb4cec74fe850c06a24dfcd12087e0c436efc814483074ab8322ab9ed9a440d8255e380b578ca4ebf554fd449c39b42ddc98bdba4c2d8af8215fee6b8b22385884cd7800654b91cbf855231aec74986679c188488b9a744f560a36beefea1b215ccacb80a962df209768979a1882a47297ec6081241088a378005b7517403ffe977b166e7d9df07f3ecd3e753f6d7df2267ff7d1f0d3e34f8f155dfc2deedf9bd1da9094f4e3a7c75d41a27639bdc74c02f4715790960fe614fb4f9e5669f096a057a439d495708f95a422c4d50531625a798e94906a2d6abed341a3ad2a443a22f22d5898f60f4845e12805f5f7f5da553fa1a9142054a7712edbba2aaa08cad46a508e3b64553141238563f02cc9d329690b6474cb381604e975625b0007fc86119812b6e3e158fb4efcd9705489f4cf27fcfa80ae2bffefce3ea897ba0c693078d91717c48bbe010d5149a654d557dff43b1d21f3de0c0253c03e343f7cd21010616027fee3e4f02060a62f2d2fa2f0ac1f309c78215c0ba5b436f1c249601a234e9bc3c909e89461c9429cd7d003ecf24532bb51af1440bcb3f5daf9210d578b7fee6f48799f74c4a118a7c3f93c232ce037451c51e2f7f13489f325f5fb4553418f177ad35bafa76e0f3bfc6323a21b76998d28dbe86f815080cc36423ad3674918265c73eab2a96dd1b36e5d7cfebef60bebceb75cd1e03478fc29fd44d7679fe8a774f2f81227411f4701ebf6072e6718390ae0777632bb41883383d0d56b3640495795dc726572979ef554644645c08a954cd44a468601636c6b7d372ec0561fa7c1dca5a82b06819340ac3b1866d62ac99ca92cd48d7018f4416ace3f87d4e74c976abb1b624e2d084991bd0ca58aa012cb080e103b1baea345355321a3955f3976d027eaa06e931e5935cc1b27bdce7a938132612da32ceba3c7710c0d7a389546047cc2329a194b6ff41e4e7118b033e9415a591f4f5c34d874d3c09d06a174db8684abab016f4e99ff4fa5c17416e47c3034f810b285b70cbfb8142b74a09d2fc4e836e1438982b89086c6c281830a09154ad3f5f55afd72912e19cd5dedcd430b2f180443adcbf6d2802f0e4eac8599bb74cb65418ad4c0baac9b144872627ce50bf7ecacdcb1e9561f3bfe86837076966cf527136c6696592203cfdd7cab8fbacebf1cbb60d768a5db9f4c2606829a1bc85b8aa2bb7d35a20d3332e6aa7c8f30f9e29afa2a6cbc9ce09049ed3a9f0dcfd844a9dae501f8b9d9cc3b9d50b4130721dfbe3c883b9d981f09f947de6f8027e77811a483cd45a7030ae8b059b37c6adec3264d225a21d2405c34c6c29481f3c3b3094278d1e9706e795146765d48f04438ed74e870ce29f1caf66a5296426c5d9f8f65fe4d63c9d468606ad81c9a1e1b9caa59305dafa34e27128a105994d0ac517d2d2299f06477ab8c031a036df6cc409b0556882753a5e7ebb5f2255bd67a9b243109a93b4705c8fb54e1e4aec2092a2014936e3a54a50b2ca6ad32f23243d9b9e94a8b322f49a34b7e0c852296cc8f0a5c2e8c4a9cdd35ae19bc80c292662c9c5e0d5b9401f95a3a5042ab02ca1a77c62a453e8ccf9b862b96a7e48457384dc32919b6a48b9e56c87ff83804e9801e329af2ec2eaad17fc9e78d95eb9cdc50167e11d488bfa1110645582d213e63135484418e1f10e6c1709eabdd205766643c6de37a2d7cdb1c285445c2d3aa2c427e8cf0aad5c7a958f0bbc3d0ae0a0c7269f9a9482b21112db01a983e1eb571d5afc933f0e3403c007e45186cc20dd82f43799a975f04e64a50bef90aa4811b05d3ca1548f515182a9f2183506019a94a11bba1896532fb3334918ebe1f6fd0adbcaa6facfb91aafb71aaefc769e3fd98cafb31290aedf690c83e39fed328475ddf2a13cf79bf2bbe4a8ba6559ae16b83546a59a979e0ce82ebca4acdf54a2d83995c29bd44395e5ab35ff1512c2ab39fabd95febd95f37ce7e2567bf283479d00b8ccb902831bf7fa67fea60a1ac24038004e3e440011880b34cea42a0eecb6d8307ba36e94f7ea8bfba97dec9e13bdc93ff9b41dc6f25e625582abef80cc761c64e058f8825af8825e3c0ff087dd91e0e67d79c55f497384e92ab7041c2997f63d0c1cbca59d5cd4a2f78fc272e7f06925d904db906a6ba511cac51531ca9ab88ce3683e0d21b1fbe43b3e49648ef38ebb52b7e0487320a3242c5e74514135929e095760e3f7c181f9c9601ed81a4b85458639e12f295b8b72787ef7ce7f5c9e1bb370e1ec3ef31fc7e3b3af8c177361dbc7bb8bf3f3af69dbf3978f4e1c8773a0e3e1a1d8f0fcef77dc755bf8f7d0739f8e4e8783cdaf51dcff31cbc73b87f78e03bbe83c7fffc38da3ff19dc0c1a353dff96f07bf3d1eedfc383ee54d9c955fc7be33115f639e73ebe0a3bda3b1efac55e2b1ef140e3e187d18fbce41b8240ede3b38f59d3dca1cfc6eff90370eda780e3e393ddee3e317f8ccc16ff70f777e3c57a96fe3647aa5b2e43af9ce4eb284683a85016e17263f60b9db624393cfe0ab8e1f6d388f3467c1f023e711f245568323404553c2a6c3a649be57d82632f141e84c79ffe5d019a458de0c9c170a12f1255cd24c71e99138329c55c24b80ee7f6c5074d27d0e1a0284f9e4757ffbc5b0a23e218326ced364b9239fadc073c123e7d3a7fc919aacebf47a4eb79429b8fde7c8d6794252fb71eb29828531fdbe591ca5c48e694015ef9896518b9b549dd24039f5e17c2628f70d92d7e940b94b25e67b5b02fe855e051049fac9b6f8fbf4a9f8fbfcd9f60bc842dd6ea27564fa3d9584bb5d0adb80c51fc0158128c9b161ffc9262f09de490750cdeebbdb47c3a41b6cfbed6d15a59f4b37c58cef3f86d747220a8741bf1b6d91b20a9f4ef426489041e77094383e7c87139ce0290eb1942be5416a0e27422ac4502ee3fe3c79e2575ae148004738eaf65543a2e033bf460f949a5be51d0f1b18066c304b6ef98d6ef4deed860a6749374e11ea74dce8cd93fe7a2d36a1546d94a3912715331cca13349550c5ba7d1c22700c17d9237d5e9d9240674d937a592d3afa70d450ee69af5a4ea2c3a6b2fde6b24dfd3f7dee4773f7e97370826aee53b78f3a9da6f46d54dd758180a1f127aa71018ed0c5b3da140149370ce6796de0028937157d5a5bb7d38662af6a2dea4ba0a9741d14d525d150babfdd587cdcd8747fbb36607ecd34967cd6dc6cd3189e3f13e1af9e3f977f5fc8bf2fe5df57e2ef8b9efcdb977fb7e5df27f2ef53f957b6f742b6f742b6f742b6f742b6f752b6f752b6f752b6f752b6f752b6f752b6f752b6f752b6f752b6f752b6f74ab6f74a967f25cbbd92e55ec972fd5e4ffde8ab1fdbeac713f5e3a9faf14cfd78ae7ebc503f5eaa1faae5be6ab9af5aeeab96fbaae5be6ab9af5aeeab96fbaae5be6ab9af5ade562d6fab96b7b7ef45650a914d83485d3461c0314e1ef4c475136e82068244647945c503fceabf7a260279e56f82a72f3b9dfc75f0ec057c3d7f065faf7af0f5ea057cf5b7b7d10075bb61150572dac7c07f91c27fcdd8efa95c9ba772219eca75782697e1995c856772799fc9d57d2617f799acff4c2eedb317ed8b85b5eb7b8df729ce0386b360b33f78caa71f763a6e58bd06720457f2d397bc80d091692a23962de4cba6780e97e01c2bed9e0d11601b6fe4947c59814ac1c62cba8cd80628296ef40c6e7fec86083b9e83a4a7fa3cf80c6d850857baced100102f1f39f8e369181abeab3a1a3c7fb509f5fbbdfe26c470130d3de5b442e34c3b9da7cf64c9a66ca3bbca05990d2f3d41055f7a7b704de68accd460922b30c9edbb4fa3c4274f9bef9fa6f46d4315f12e3860dd27380f429c053d1c078e230fcdeba91643ca9393d9f3e533048880ce333908bb4839b84a7a7939c6dd402d006c92c6e5064fc0cf54f7899c81d4279e79217263019ed9eb27db9d0edfca8c6fa5fccbf73033c0312cc151abae810a7d4437a464c584c24c42a1a015b321278a70b71b09522f32e8c210f9fd27a20c94adadc1301474657bfd57dbbf670d9bd39fa0a15b59d5ee23c7711ef16dee064f111f4961adcb47ca48ba8c68c80fa63406744c948509aa6aa335a160a0f48229c7bd38d3b0347d1d5561a98285a7fc60c1c6e572e37203b672052b5937503835c4d3125634944cbb7d09259988a8a10123370061fa6d80902b4088e66eb73bc5b05739ba95f4b93da8ad3ec2f5c9ddaa739c758347ce2393ea7bfa82273a8f1d33f1d536247efa64a7be14a917562abfd821796e27f77b229956929f8ae4b492fc5c24b34af20b5f3c87b8f3caa4ba7d8457d5b46d8467d5b427085f57d39e227ceeced1ebd7fdedf5b9bb42af5fbf5c9fbb33f4faf5d3f5b97b2dd63a7eddbb6fd348360d57642323bfe5844e89bfe17439e7ab374f6d0c878b69f799dac8ac1b3471ce31c2d36ef0542e80b29fffd6217cfaa4bb6fea4441531106ddeeb4902f492b3cc3d703abab7bcf24d26798275534f289867c224f1691274bf98d7676424a13a6547b37d882d4557bcd7340c4c8f9d63c796584b3703e96977a16d1cb986cfc96278c18adb88f10de9845b38d9b24df5892906eb06423cfc846b8314bf20b5dc3fde4a0a133b007b80ad38cc0f00ceae1ae1116fc6a379dd557e411ead51b47e2dd2f12e44b04e4cb2d70c3a97db3278a1bb68a0eb434a0dcb8a44ef354289e8b9c6d5c26cc423191020a3de873d3e249744a78a743b2f5f4a54f04654a5e072f7a43b2f5ec194fe1d429791df47bdb43b2f5f285bfd52f22f72bae3d13dc5e4574e66bc91616af09a5ac4a085cb5544be91918a22d25ffdda98a2b4de1dfeee1ce4721badb955abb0e3e3c1a1f8f4ef70e0fce77c7eff60ef6f84fdf395c11e1447297cc231a0973969f46c77ba3b7fb63abe44f611a851731310b9e8cf7c73bd0e6c9f8d4774e484c60be278439f8ddde787fd777de89f884a3e31fe4904652efc6c1ef8e473ff0b473251e5581624fc074dac17b07fb7b07e37355ce77f6285f1655cc68c11ca9ca6e9a52398f5244fa135f795b4e2a936c61a94c7c7b78b83f1e1df88e7c4994c9071ff7f77de7208f6399303ef8f8c177c6345fca84fdbd9353dfd98f32d5fce1db7f8c774e7d47eca495782e574f64c935dcdd3be6cbfdd3d87776a3942ff5351152dfddf3d35f8fe4f6cf4ec1388af72653799722f1e0f0e09c0f54154f281fb0c83bd9793ffe30b256f264ba20cbd05cc7128a780bcda0c49bb3a06467b43f3aae573899867198564bcbf9d79b8795a8968665b2779faf955964efe0e8e3e9f94fa3fd8f76837b74958b45b74b9f8e8fdf8d76c6f511ecf15b611e4e4975101f0f1a17e4236d580c0e15f5a21c4a1a4bd687ad01aa3ec7b6a5839936af9f0629ab82862e7b1b013ec6bf9c8e0f4e0cf018ab77777ba7ad726aa38db2e6608db2e5308db2954d318a5b7b62d430b6c428ad77c428596e885150ed873586ea125bc3b056b8ac5620fca18aa9fff9717cfcabefc01f077ff8783a12abae7e39f8e4e3db939de3bd23794e8caf12adf23f6d08b09ed8846ced84266c6b27b45d0cf544052cbe23fe2ac8e0dffcaf81fae06fe339aea494578855ac21d180173e07f953c284efc01f8d9e0f3e7e308f9a4811bfed3de74d955f2aaf3eeee674ebedecc47cd869f01331e4cc55ee12e48b680e2e35c360e5a859bff9439e95b14e4ee0b1c8db382653125d939941f248263ee54c3c45a5aca449d14fbcb99ab4cb8ea7880b3cd3c821f3c7c42558bc37ef63f12e8be364eaaf880cc6ed5ebb1433b047b00384942b71eddebd16b2fae09ab854f4a5d4827f7329ded49e1037640118446a4503f91e9dfd6a04666de9e9aa5cc36bb130fc924695850491a5a40015f9672e996e4e050999196d21c902cb3d12f505b3ebfc9693f4c601c9a4b3cc993052169f597e213c28964973454df93a2c1911d22f270304afaa0216971f60802d7e460a05cbef9c966d139a2f75b155cee4ef99a65e549fffd07d0a473f4e5d9e5a42a5a12d00a152caa77d581ab932cc5a1335957b81fd06cccce42810169fb2b652faffc12578b387701ac82d918f2a6838b6be312b3f8e912f3482c04db116caf4407a287540c5b9be005f2c36ac542f5fac9730f3294e4cd22bf3d3cad12bb753ece0ef5d03a8add6e00aa200aaa550137bd0541a8804a17d45cd69b5cd4280deef9b03d4adcc8082a7fc446f6a14a44486db316724b62ab1bea2fb67db4830a8d9eaa3c3676b4c3dc1734ec5667ed4b206c699fb7d0b5136d0bc9f3879c82adc31ef3692ad71a3e56c9396d94a8cf2fb662a2ab7ce32fc43b36c22331b67c8e060b64d50a0c9df373fa8db3abdfc0f4daf81366e9c9d0815de3a3d89fa7f2fa4f2caad138cff2094b612f5df06a845d9074f02bf6a52f9a5724520f3968de6eeffb844a7fdc36e0999e1b1fe241240f6fc93deac1a39d0be5fd1dc157ba4eb204c3ca951e8912f2b92463c398c954846095f3264ef4303c722d6ff2ddfefeb9ae829f347604c77b3223b099d419a2f07c34f3bfe05dcdb187b0710d34738336454febf7923e6560ebe6558dfbd770d361bed60031bd508223f356e507333fa766a100a96d4842fc148cc59ea81376dc6d9c49cecd9e4be5556d65a7be589dc3021bbd371c55147f881234dd5716d85956fdf0dbdb27b2de47c23a1294f9e94a38baf41e51cca4c9d30683d98766205cbe8018e0c89b55c47a97aa52952a58a75a07f03415ab671701fdfd7c0e7ebd5f68fd481f05db944a04085f0afe22888071d905bf94b5140e84da1e16f02972bf8aaee53af6d578eda06bc21472014da4a10521310a072d5bedfffbe6f292cb97709469a0d56e4ffb141fdb7f4755cdf3a218f315508aaa3b9b60acaabf152e31f101ad04ec7ba2c5a309b548c2bb15ac339b90343564444159c48871c13b6edec83f061dd130916d1af842279026862b034616ee8b220c11281f83448aa587d6fbcbf8bc3380a339f29bca1ad81fd5d39b6fb865b65fdfe6d4c55cf2295585deff7ae152560f8d17f3778d8c1a56d07f75d0d3ee4dc2bc7411e48b50a4a7056224e7e367f6bd8f2b2ab8ff71d0cbbd12b7179f3762b58e19f80159a3b79ab4cfb55e40c93baa99372206c296bff662b4d8b414a444d41502035020c35cb26ddad4a13380dd8f09ffe8f95f9eeef9d9c2aeaf76b090f42793335beccf34f0126b48a9106a1070ca391b95454e9571bf9dc65a3d434bffb41c67c9a123b9c1a60c39aa6583462c0da0aec1d9cfaa58f006161e2961def1dc855f66955504651a11a110f78773403051ed0907cf653bb635a48c8d67f56e4f28640afeab666694e84fb33687dbd76e6619c994943b76964f24d518eadda8c3548e43b348fe37b9b3cf8b8bf5fa9d8588ef37877ac899ea6b476b13c681eb5f22b3fb75ece4d63904a44b62cf4224ea657be21dcb3d4d29a71c73f8ddb54d21565e68fd5ccbe91f943c59740703619488c3c3a450344859dd8dfa098e15b5837f0b7f6e3aa8ed3e8b49cb27e783350a57d0755cf93eee957e32aacf6b4ac2021b80c7f053c6ce71c23cc02138d01fb2b483856811b16f06b1cabb647073fa0a10633f345b9a9ba6f84cffee5befba37ccbbe9748fb47d9d6ff800754532cec1b1cd09f211e6e9507df25ff6d16e91ad4f49f29d3e5a002b766833057e0fe52047a87c0d61c2dd18c894fd575600931ff88fcb6325e4370ab472b04b7915efda91459b60b60ef1bbd218f4dcca944ea8a9dfe71796c656255416c752fb438fa4ef1ea376dcb3db2e5074a5b2bf330c5ac0d7308ef169e7ed3f8852cb56df80f93a556466f08511b069fdf291afda6b14b5ab15daeff2049690d864a1169c3f0e307093ebf2708d5dff71e3a95b2a6beb1f8f56bcd2c32ca6b988b2c1754f2aa3ada3b1aebd80793c12c51c105e660ab29150bcdc2a5a7caa2be684dca32cd8b55dee489e15ba3be5c6d029dff69900a00dd83d66bc5771ad490511316f3b62257fed9a2cdc063786d17401667d1fd72d57f69c0a96d5a6086448e0a62206db9be29a97a4a10f28b68b9124e973307e97d1c7d3842c6eefd52df3c5e62bd2e85cf611c279ff7c96538bd39d9dddfd38d6a7da1ac221ed14e7cca2102de2d5d9735373d5eaed80de89c952d2a91807073a0891283921514814db89bbfcf26a8265fa8901649e569b91c77d2b8bf0018b87288eafb1d096a71da420b54f55aee077f8082c8441fd3169088c8c3c59853d2260e99de3bfb86592758cc7b60cb263b1d3709405621e3b8352f4ab38661f3d2a8e53005a2c9435627ac1d187bac15a477e76911a8ae01e4f3862d6803c0ac1500b3870060f352362a3d7e2ba959fa64fb86e94c5ba7336f9cce957cbffb500974ed2a519536411eb42079395ee11150a3179aeccb0bc3b4615e109761523ad3c0ca1f80e9d987582e0385bb0422fe964e1384e97c5942f8e620ba80f4d5214b089792069b3b23963b2b259d93a8cd00a56bd2c4104773b72c8c1a4402b4b4c4501e0fa89c823356dafc4ee94bc2c11bf324a7b38dd275dd05a8b5191e497ee7480c4f24f7b620ae914e476efeef98dda372768f4c57196a7e8f5ae777f9dd4657b67961b5c9f8d56ac9199ab6c7b04571dac6fa95281336742b214407924f385edb5c0ab1f90025027d5140bfdadca3f4d771774bbcdafdad516fc66108cc5c9c0689e94981b05946eae8d70b9e560a0a95fa7ab92f95723b09d5e600f5d2ff6c68f518428d40d8927a855f2b150c7b807ae15f0a842377411acc546047fd124960a2cc56089d15052a1ee0b615461136751c15a53fd7e7db156feaa28c9b28ade930cba24b6a479ed3b10882fe80bdaeba7c1db06e57416ee9e4954d3478a41b11dda0487650ba73b511b9370de318e2574158aa7412508846a50e4e81a4375bf034a43b32803db2144ee1650842a5dc163e18407922a43f9e565c29f3a30b5ea69499d7ad7e32c749705be02830e39ecbc06d69d01ba4dadc739076bb8806d1593ac14cc771a1e84dd05baf450c7a724627c65970293e73c4889c09c261a015852f901bd5d584cb4b20f4e0259bb8897babdeb47d52e0296608ddeb57ff2e48c90d48e909c7bfcfb78563781577f259cf0aeda70128fc3f0040f95d009407d44be889a11fb01bb21067255cc5ff3970551fa8830d609b2b604b38b06508af4ae8cb338ef3100c1de1859571c2c10eb9b77112ce227a2922b3cf82c5596f82af83c5597f32301c9311742b2b475e885c03dcae3983ac7766e54df33425940539367b1bcfe764caac8a9c76eb6d0641ec6557d14a5189734faa6d5c1037746f0b1ce35bd004f14981909159178bdc42803e152400bc31ea376539c77e3158ba0c613dcc4e47ff746fc5a2fa739c5516dc671c6f5b521263e1fa2232e0ccec9814a8a89f7bbb9e08859fd3724e70e2cf088e95e34777ca3735461384677f0419640632905ec04590088fba8940063d1923424488e8bf40b812c446cb40dc4a88d3009c12369ec7f59a2728e048bd2927c5f9accd00a07446d29aeb75cc02e5507e95611a304f47f406d7cfb3280b2f6232c31927cb8588e298cc711c306f1ec5319e07cc8ba609a0940caf02e6c5617a49f02260de32a2d1328c3127e925f380af4b2c311b9e4dfc195e06a9c779078eda65d70e7654c70e76ca6e1decf04e1dece82e21345a0ab1d9647766ac4c846f82c8456ee8bd3ffdb07f2eb462b0eb92e0b64067a1b7bb77327abb3fde9d04092667a1f76e6f7f7f12c4f07b7f74fcc37812ace0e3c3dec1de87d1fe2458f085a5085f06d7cdce9403478438b7ac364a1fb73a7edab41ac14b0cdac1a9070792e1db2b72a3df1aa78b289ea584fa7c812f48bc5ecb1c8885d7dae82cba76f06d19a5fda6c0b53242674476acd6dd4f704ae67e56e025be5dca58cdfc64237c89979e1a0eaa35977ba168896f91ef080beead699812b6754d52164dc3d829f09c13dd9815eed43bca53a263eda0bff2f8bdfc5f3e7de6d963e0714eac2abc9aca48823bfa3ca610b0255e91f4947c6138098800059cab5fef921467ea638fce131c037b7d13930743080ce99294fdba08430b7e5ce0a4d3a935009d594df0b3f376bc8f176cc987e4e7054eb0b3e13480de2aa495aaa7e35f4ecf3f7c3c1def16384375f8aa0d589cef7787c71fce770e0f4e41b78783164e1b065bad2c2bbe1fef1f8d8fcf79df054e05681adb672ec737a1d0d444a11c9f465458cdc34fbebd6a5f8c59fc707cf8f10887b20074ec4e5123d64a0139091537c06148cc9d77ba8ac31b1870ee855dc77b97a4cb1fd2245f39dff9d4e5df76eafea32ebb8b249d9154ee4db96d2266019d119a355f7df0261a826c0f6ec06c19c631dc7e7cc556648617fa56537d0039595e70bafdea0d67b4ed60075ae67f45bbfc4a9b9957da29e88b96b051269ebf3d3cde1d1f7330a1002646d6cee1c1eef8e084e7e5d5bc93d3e3bd239eb392c0753a3e1ec1a392ba194f3e8cf83539e7cb9eb4df3d4c383190f7d902dfc28582cbc3372bbeff1db0fa5d770075fbcfb6118620facf9e706a9fff78caa9fcff2878d517441d5ee7d117323b4d4e931544d99014952c5f81bdb22c87a758c2d3c1e8a7b7a3630396deedfd32de3d3f3d3c0228b973af01afc24e97db1b7304de8a8f0ec2eb8b307530f376a3eb884f3ff342cc3cc051410cbfdf13a0e18339fffaae6072fd603091b1dc5e6d0b3879f15480c9f6b6809227af389000182d78e927fc7c52f7f95384afdb6147508a0f041dfde00bd1bb49701b65872b4239318699777ab322b37f72d66d3fca5830f3422f99f34408350f0fef818866e4fda64bc98494ccdfaba880b750d48e6b28ab131c7a532f0be7648f5e2757e4038190914c00a62824e87ff1d00f788ca002eb0ead66f574caf190a280e1f06350cea54a5bf31320ce42125019e285e3181c964c45b25e277c63ca6b7715e8102ff34e67ceb7c71cb2c590dc16c090506f95ac926b928a22376591252fb2c497412bd91b9339db03d257c4b4753044145b24f18ca4bef30e460d5eb6d3e872c1647d9f79cbf0e6821cc312ecc4244cdfe68cf1b98b654205bec6b76a797d6befc4747042771621bd243e91d10f6125459ad45c948d1508e18b4015fb91dcec269f29fe6aa67c5cb59df54ccd34cc59f22e99e619e7cd099d27e994e86f09a312663df1893577b1d20134fcd80bbdb787a7a7871fcef7c7ef4e0b7c53a5ee8881ea6ecadf0827744f5d9609ef4b8cfe48ec9d9185e576ee58cd2ebc50da499c1f1d1e1dfe343ec6375eb524ef840f3da297d50e64b22c40664df99cb4a03b719235d497c9452b8d9b50b93595651c5ee8a64e39efcbd40e42858fab6af1afbe8a4ca28e6c3bfb56ebfa42b7fab5c0e1f052097b881731b2e4e75450cb0de3b10e30f13e2fa2e962330842efc21b1d1f1ffe7cfef188a3be7afaeee1cf07e0297f95926be12729cc6306182d230c646aae4683bdc21cc11e234be1e6c9942d528ecdea55393b6be3368dd5125ab68489bcc6da00cc0e6a5aef88d4faa9e0500bdf38165c0b54da0c7b957ef97245499ec1292433b9a765605c4155ca640d0c29c9083b042825323a2561803bdc6f1cb51c55eb88cd888144856335ee01debbfef0b2699ac4f108c6ccf7628fb2e4a7887c761196f1e446345a822cff5dca19d53a7b5dbba1069bfdcd2070353e271c9f13e4695cd6e9a85141253e22f8e1cd79ae8bbe7523c5b41b57449eff4a64c2fb26a6c395b5ec36c4146dce5273c0ad9022034a7deb24e54cd42c4b000aea9457fb762ba0731cd08ac7ac816616a44d53b3c5b70b5c5c621211c4a40a883d474e4f137ce694c51d49eb2821a459dc99a0564a190660d36c86c4cf443abe11c7d840459c899261354b02e0b7b22d98384955198ba22aaa828da9a2a577a3d9c7d58c5397f6838c7a60d59749a7b3c9f44f795478197353adef3b8eb13d9666faa7296ea70a1af1a637ac2eefdcbbc052f2384d932c73b0940afb9b3db889a3e9955a1a05700532ee4793515901a37222c5a3ffd1b2ca3fc65094a849508bb56b851ffacb34f9fc9314e0c637fcec96d7dc82705ad6271e83fb5feef97b482d10562855ddaca21788fe64a5b8a4e5d8ffe1770c78abc815563f267390ea08091b4874c4ab852dcbb1676c88746c5e5a3c4868c6c711ad1a0f134a8663b7678a72403faf22f2cb90c58aefefab470af9305197c550ce732e84bc172f4ba6e59a5f72d76ad757d6b915675bec5fa7e32e03898c96586d6aad58d7597d718a26d12c235f589892d014fa18e29e924331509be44f385acba5a07929f1545d68704abeb01174f07d4fe3ec5bc5012f9e0a71c0b6941abd92e28097421af0ec8910073c7fcaf7f8cf1503d887cbbc87ca0366a64aecbd5e6ff6a5b9309971bcec33ef92b03d1ab1288c4f8c0c81a82b7286c5ff6fe40c46b7a69c819f292169b02885455964ce8bcce1f513760c5f0733c5082f8399672e3ebea9b1e397363b8e2f82d0334409f86bd9d3c5d039016183e7798e7f81c7c17268ad1ae86f1d4bd2c05d22df71f06170dde98c8763ff2bfe1c5c0fa568c01fafd76e136730741c253e68256ef26f110d5c972280ac2a0258dc2502587c3f11c0aa2e02587c7f114003871fab95d21211b5e62aa1c0e11f91f72454acb7668b791548c2a658e192308b65975db837c8102698853eae54914b6449b60ea588e973e3cd50952adce8e62f8b9a28411c0c8eeb6d42ff1ed6a88571e3548af28a700c54464f212cf182ae032f9b5204bd5c35d65e8d4df25140bfac083d54735baf5b84140fc76e72f36caeb155b00117d7408b76f8613da4a2e4d06d59948b384f391f1d6cf691df56a86417ad5943446b5c2a7bc98e4d74366c5882d4be6d4881fca6527f8644461194bf0f82368316098a4d03b7cb94be51d6f370694f93f4e661dcf57fa85ce70f88565a3059131ce824edf69f0a21e4200d8418727cb2333a1aafd7eafb74f4f6bea3d4020ac86f44129d4e2a259e6f473b3f9e1c8d76c665921082f29bb09a76bcf7c3fbd366b0136a6e36ab5e3948fccc7c0b12926375c0b81fb7dc03f72df0f71fd3c7951ad15f2020d2cf480f110f194a6bff9784433f47712cdd34c3146c825909248975037066c6fcde0c4c7ed32e29323444dbd78455b6f80f965f35334f0d90588a7035ac552ecfe674bfa9a234d33b69a9df900d0c6395bd9e0b51577e794932e660a62a8afdbeb5880a10a599c88c13f5e635245ea6bf2b831e7f2b832e9feb5f224bc7fcfbf0df0689d8202f6ba75eca0a1c57b5942b1187168be13f572c1656f57c0d4417072eab0c5dcaca1008cb18f9c2f0ea2ec1581b4eb41a358465bc456782f0024463b9f76e6f7f7c2ee4634a1c961b1a70212667b9211ecb0df118c2b45d6345aa2d4af4ba3219ce45d393ac7061a0ca671c1dd78559d63addac88cf578138e5bb77d8c81dd5d420e5b43f1eed1f8e76c5ec4165b67a6c33a1da17c99eeb07b75c729f5f22e40bf39d9d45926464838fccf33ce77fefa84ac9f6d3e70f39abfffbbaf02426d7c037484172a90298351e005dbea2d467a85ced8c8e770d29afa56b970b24a15b1152e1e44ea06e55c36a819c9d309dd5814677e9e75ee8fdcff8f8101be3ff13b0fbfff715b735a080796b7829814633c974087be373d851d4a2092bb20a878d4cc2c6eede4f7bbbe363cc5ab73b51d828377147d62a3d978a76df5b783e57bb071bd717c66f4f61db3cea4662e37af25a96ea96526cfe120d362d259133e21d1e8d0fce4f4e47c7a7416f1238e5a78355f6dec10f415fe6ed1dfc506604db325524edec1f9eec1dfc205b7b32091c2bc52a143c2db3cb8cf16ef04ca68f779dc24dd76b37e5a7554c79fe67c9f64325a3009a58f39052a12785c9faa91c22962f354e6ff5c501061dbe831e66ca8a203bd60c41458aa00a04443ed311d020904d94f9d2644fbce959dceeef1a2bab3c2619044ed274101fc68c1894afe81ef81245ee0bfe6a1a93303d8d9624c91948b74a16c19e09b86b17a35eafb532556bf14d5e9ccf95efb5eab2c2da54962a3580bd40fe7d852de0c5e6f35c6d2d1f8ac25a2722778b054440a85cd52b42563b5279ec43925346661ce5a989ded5dadec10f38099c306709d846559f157114e877e4612d57a99d713e7a1e279f7ff593a1731d65d1454c1c95c9d290ca278564e8d084eaac02e7c12d64cf9374e9d3a1031f71c8c8af6e0f39bef9bde5742bab8a9cbbda1e682be306765e4a6515f89a987aea2237f3760ef7f7474727636c162fdf1ec4936854e06aeb355b96b2a9f3b787bbbf96c2803a0e90ade6d809d328dc5a44b319a18ebfa936b275b30bcc4cf6525ba581e9eb1dcc39543761101a817721c1b7ab8368e18e879c1e8dfc00b01e788ac6bbdf2249304fccc09019a875ed743453de882d15e65138b5b5e04390914600aad58c3089cddcfadd4c1e804feceb03156a1477b79bd05d1287376406ad49fd0dbea8e52e96476637173eb7d07d332cf1a131bdbbb6df187f1d13fe9913b1c1a7a9111380944bcfb6c94b97cf7a4ef7427113e89bc199f5ee3efc3c5489c658b008491c87ab8c340885d491f1052ad2526fdc803878727d19fded5e0f9889dc0bbf0b09fa8d563f2faa2c67e9b4368ca34bba4767d13464490ad696dafa26b748fe8c9318aaa09a36585e4a6bbf79404abda39536db5ca85f4a21770609e925c1d7ca6c132f393f71b322a02000beeb75bf9706ab7151b21a974329dbf02ff157cd6cd8d371709b69506d2290c6a7612b3949f189634ec05479e28377a45754f167a799dd192b56f8f0e0f4f8701fdf60d7653543c7afa5848a19168f317c4989cf0c33ce30c34c975a8d8a229cb7725017e6fd3996b7e275838db42dfdf92a6cd9e642c6b37c984c474ff17cef60776f67747a780c06522bbcc00907fec0fd6e1ced1f6065234a49bacf77756741a65782be335271a261aa56144044a5f1cd8d02ba5eb3e1598b3ec015b9f19da9aa7be7529defbcdfdbdf6dd899ba45efc9cf7ba73befcff70e0eb4492f5baf69bb5a020c23a77fc5402842132096da2032563096e05b214184615d245f1c6c9d22dd3eae1d593f6a15019cc03de4d4f97ffc17c3de7dd337a052ae431acea2a4be08c7a3ddbdc3d6f91e43a56f99ee1fd4c9a333a223f397acb099ba5e33fb7166cfce15667dadeab8da879ad0b4b59a1e08e7398ddd565e8dad71d20229373299f12681dcaa82aead90226f83a05997efce06f575f8bb9f36ea2fb50dab09afb6e6b77ea96d282c6e3fe3fb8e97dad878972d95b42a0f017c7e77a8bcde77bc77de8f777e7c7bf8cbef7d9895ee20eb10b219b09a64a202b877b147cdbc5c0e4c93b5a0d517d2bb79ac87b6d25024a8ebf0f0c6a4a2865b7ed88b61ca20ac8c1664b2536e551da3fca5d6c84a8afa52daac3f17dac72f84f6f1935742fbf8d52b618cdc7ff16718234b580ee994c44d4a20f2898486f17b59328e2fc2e955e66ef62d3cb293d079942ebfb18ddef7421dc49b86749c4dc315f991dc88f908072c213dcc5916cd08988dc89cfb188169a2687fb02d988b86a62416f62ce0bae55ab877e1b33652971c8b0963aa1251d5c7c609f6a691dd41d34ff51b1410e9d5f1086f14f6681c65d775271a5c2835563018a8fa6409bdd1fef8f814e7085bd3001d0186abb380642aed656d8429967e95a42c8c7712cac2882a2d16a51b6665b5dbd49af4991c1f48cbea04ddcc0ba5295186f99f93e82bf19ff6b058463ffeb63ea46b9a9302270f716a53567c7778783a3eae0f6f05964e722ce265f7dab670b24e5781f0bcee0f071a81baf3c6bab0ee45cd1fce7518471c09d72f1de9bd4f81b150b1091acec06610b84661c8459dce34a1591213ef73985237f6a6ca37be7c9ad045d76b2385f734683ac69dce26abb51922dc72b61b8b5f54e6de82902a7a47d28ca0c43329f842d43884ea831e89df62970692689a5b441319467eca99dbc6dc048b305635f14c6d39fccd7eedd09519550ce03b873f1a429de62b71149354d8c665f74b70b4475579c7f5c453e1f36de5bc5cbb581450ca8f33f9c29463c550fad4e417e0f327e2067cd61375e38092cf1b3f93f0ea43b82a3d2ace4b4228f62e09330288495299930750f743b8c231278844fc246c388a5e99e414288661fa9fe1b892df10228067992c1731f742e432d475fefbbf9daea6c52f904b4d87dca537d2c5ff016fa4b3fbbc9166598ae332275faf73f007925d452bed09643308669d8ef00392e5d98ad0997601b21904cb4e67892fc1ee278e4177fb3a8cf10527d61216cd6f0ee901619f93f48a53d6792689fdaf6503179dce051e974e500ff94f01eaf87340bd256121f8b83c87f869321e31de09a837276cba384ae2687a833f04d4032f98f2fb44e51f932c8f59864f03ed4bf402b96384bf94072ccfcad33545f82a883b9d2f783fb85688f54ba7b319e3f7c1e6d57aed5031a1ad84c637ce6610ec743ace349c2ec85648675b321732863bbecc994769c61cfc93d5e707b24c5083145ec36788dc5bb916fe2136a6e77fc0c6e4fdf7d89caa7f82d5a2f99ff11ddbe07fc5e6aef997583a3dd5716233ff9cf33e67045fe2aff8507b0885a37388f0673be533c2e776ca39c2eff1077c324178ef41736fba38e62210c1ca6580290175a515d49540ec077e4fb1e942e8f6338429a0b014a88ca4704ff14f7c36a7f8a709c2236b3cd2336d0fe1836074d69be0a36074d69fe07fdf3d6a4141ef2977ae62075c048434df0039489708e05cafe58f0c01aa5d705a513a8f75f7f8c4f6c34cb7b25edf16083211c2c2d12c53ae5e65339c3f11bf4a2b708ebf810cbd4cc3d5e29ffb63c8d7550aa47e8ab6ca1cedb29678f217a626d4f83743716c7de259197815a62c0a639f78f25751e0b37d7c80f72668602e608b4bde7db59246baac16565cff1eb94d36f0dd7e214c45823dc35d2fc1a4ee0fb719b038474a62c2889b2201282667dae431779f4f0ed72e3ed2e9308d10c4b1df0c022623a1f2bd81fd709d77fcc86eace0046f385dd67536a26c83266c23cb579c8227b38dcf115b2439db782431afbf01f1291f39a8706ff07b71db1f07b770fc3f2429f1f73cfddbbb88e8ccdd43382590e6ef79f297ce0167f147491cf35ddff3cc4fa34cb2328be82f5d42c820e0d0f97b9ef1a54a148368eeee231d8be0b6c0c712a095ff9c66cfc915f8931a0610c7e3df0ad460d56fe4faf2298ac333b8ea74be7829b98c324652b7ccd057a81cc7bf51718f31f40309b97b9eda5e5aaad8db2f94ce9729abe86f4b53e97eefc99f612b2d19194eeb360b18b480931729e593b3ef275ed02f57f09032033faeab9023cfbd1988139492ff3d3e5a85ae06bf1dd324ce1cffda4d3145528543ab59fb4ca6902fab90ce784a2253543f3cc5e6d573ef74f4b64501c5e150bbc5c28bad68e6f81447337f297ad61ca3429226ebc873709ac4c4775878e160165eec7192b62cddb3dfd8231613dca05b5213c68977e9d3f0e294576914c6951cc0b5150c06e6797e343a18ef779d73a74be05f83d45fd68b779d2d189b51fcaed3732165794dbe6fee65fb73efddfef897f3f12f47a383ddf1313f889781e3395db141176dc7c388ad0244341c0aa60e03b50df0597811b7d8ca534f662a8740a42830b50dd31b84cccde691c2143563ee25a02f29982d4deec09cec4216ce5c249df134dc76658c6230b3193196461739236e05f65181e07952f14e4c202661b1b693ccc8ae88c8046df331256f825ea7a329f308ddd67d8e49de34d55cda999b74a3ee14fdd774a2bd42d9cb749492ac59182f5f6d8c95d102f9cc8bb21fc9cd4512a633818ca46b3460879a5ca14da1144265dfa7e14515d541cc60d3d084d6de7444801cc32ceb34bcd883d7f4527fb9628f04253a1dda60b60559e0991f5389224fc38ba3909206550b8e0aa57ca4aa6ebfe235c0382512662990a01f48f8f6e98d4bd0435027e82ac4647671e3f84bbd0ed10c87a8a208176ef229372d4a03de14f804a738431c395e575abe22377e586242988553c093bfb13e80cbacf589e6eed825a8b2505ed47a4dcc942856ade9adba657c63440a695741465b67fb2c68997c810c665c44a513a7ab62f70685dd925d518fa336842405a6bfcf4c0353e3e506246bfa09fce7345cad487a02ba337c74f6ee85c1d453afe4e0bebfe1bec18671a4da184ec130e9189d2f982c5ae22ca31d5153d80b2ac03fa4f1cdb0d19395da97200892c2af5d199bbd029503b54f1327a78c7e856217a9b9c46ab86438d0960a0d3f1f8f8e8ec6c752fb257d806a43a5850221d069c0f3401f8a13c35aeba7f1f1e9dece687f620e57c502805d6f243c56656be7fb7b27a75a3148db7819f584de146b7faaa84d62fe8089ae4c6719257163f9db04645fc985b4666b5c79c19608817f39058e39aec8bef9d975995c13edde42eb77b5bebc3ee8c5d83a3383d2eab4d552571ce83b1f8d1bad73a3b9db60140cad8187432b05dd39df018933b251921995bab79b2b2f741b8e30ac82ab60b0290fe19547909c7beb72df670b0cc3b89f55b0cd7505d2a2b52d31afbe3208a395acc3e731c9ad35a22f75587aa07c2b081c459ea767bd89464fb5e95509aa26e6eaab4b70667833d01f1f8fd070abef9bf9e0d9407fed1efe7c80867ddb6f6dd979758f9a3a2f5d7c72f2c958e8c6ad7609aa8573b1717415b8edfadf3802e31662c9284dc31bb77c55d697cab8b14b45303fa04bc711bef7a472ba4ddb0fcf263e74edcdd364e93694106f1d0218937414c7ee659754df029b4f44608bbb0ca50cbb0bcbde40de60ea6c5c761f9d19bc67e03ceab6618bee2367f248d96fde35097ed269702bd9495fd871140dec09b3ed9d129df07334630b1c05cc4be6f38cb07d326710cf437c9e26ab01d5862c292e6d4e4a0b935f5ca7fb21640b6f1e2749ea46084c4c360c0b142b7f8aa409ca67deb59f14455d77a74efdf854aa748f851c200d6e30e35c73b000dffaf663a15c7a7fb387e1261526fdcd840ccf53b777c3c3a066cf3360cd432f34d8f1aff66bd2d904d3a03fa0f52725daed227646b7fa13e349894e06866288e0f11493f426e819a1374d67245e94495838140eeb085e7821ba2fd0d7b7b91b30fd0d08d1d75c2ae6407480e742c8f54469e43c7d85f0b5f41bb8046958b94637771f68e2b1e484a511bd7451c10779892f82c7ff3a1b93ded6ab4fdd4f5b9fbcc9df1e57965c09273cc6d94e72b700f0b0b0f523c919f138460ef86e38fc973090fc780456981f8f9cc2bd5cafddcbd230721c9c391086fc205f92349aee2cc2349c3292661c821cec5cc03bf391f400271456962bf0537748dfc6795ad1615986ff4ed213465627d15719eccbfa4ea878b9065e06bea12ded5e40a08b511c1f2adf5a66d21e9da64a853d538d4ef0e19f65de992d923c9e09a4349a33920af2889f2cdefd87f0cb514aa651267cda5df2936ea72a4125925ed76eb4e45284761687727614668c8caf0965ffc83376389de669b0d987d31fb330d08ed094b847fa6b8ce4fbd8deac4c910b2456590b936070220dba5119eea5f7f1084147df5c112e7f5cba6a6dd22fd5f2a93bdd6868055349991b20d2e4432d605294bfcb57c7a510f32430260f20e5a668c0d3787702c6a40e889b940ee14c68143eed58b2da49288b689ea8d7488b9837b6a46aa10adfeacdd235b707612d7a4b09bf89612df7a38c114a52d75926794620e453e3006c25bcd6b12967ea957590436e5b0d72c76adceb644f73182d07c5763a571eebbbbcc709ef87350d668e6caa8297870c011cbd955ef76cec55d3d31651fc5201f72721670ebe92995848ca97b0ec509ce8b440986e06412a3c8dd5d73735d6d7c075a8685d003eb0fafc9bc4bad1dcddac3aa404cf494ac411ce381e97b384178d2bc11070524a794d53c4fe90061c1df8763a3fe69d8ecbf3c48917c894b6ca609386f339a8416572c70228be9d08cac85e84bad056556cbfc83a9dcd2629bad46bbb2237ebf5e62627ed591affc8bf8817c64cfe5a1216fe486ed07abde9f603594139a35cafbfba90800a97739f0d02e0bba6290410b5bd86fba032c7b66ba2d7de0194afb77ebfb5823a0574f090b56d1b1b382868bfddd2807ad92a8e98eb389a97fa8abc7f2711e549f669bbe32a2e0fe2379ec07bde0d1f208d91a7e0de1ac6730f553ae437ae8ca22f74479611b55d862d230aa4ec32fc52c908bfe06990acd7110e831424303f8df63f8ecfc71f8e4e7f1d2ab6b982bd52dcc3d00b8626916fd5c2b9963cd468188a06d34e27b45dc3c1c88755dbdf1a5594cbdd0995956fd30685a664d1dea39a9d786b0f6995f37f7874418bc66d78e200f75b99f63eafbc0285dec1c70fe3e3bd9d8adf2b9e23259ffc6ce3147c7095826171cb666eab0c14549a0dcf40980f0004f14110e4bc75f039393745e070b25da48b481794f36fb7ed907c7bf37993820093b86bf6dc5b8114edbcf7810aca4ac669f1132062e3d0cf2f320ec989f86b9488c022577c94e28254f910a49d4efa86d6545ee61ed56f9f411035e4af203f7a1df41a3213f148d9e924cdf94bc8679d0e6bcebfd2f5df34f51d97d59bb2ffdd08f712c8ee12652adb0766392a946484e54e4411126d00bbb201961f00084a088f6a9287dcba14514d4b9144af2ed95f7817557fdb5886095990eb34a15bbc09a94e4f0a85521a799706fdfdfb9b9f8123d54a072dcc514ddfde3889f57537950f0d0434c69bbd5644706d3a6adf4996ab9830e23bc97cee149868bb82fa96dab66e9ac91232a3da738c8e8567e6c8b4d24379c56a4e3929e7d46a2d1348d8fb3cef35bed998b46ecbc38d45096249e6d40a08e2c70ede6740b4912e2f902acaaad9f33573c20d68cb902518bed44da28193d7553502aa6873c449aa1a270c74748113fa81338bb516db6a0867c329ab328e4219c29c5e63b116ef2aa526c96cd6cacb8af56c6067eff2f7414ca9c6e788ce92cfbca466ab490b238c19d880ef1d7c3cfc7872bef37e74f0c3f81c1cf5fd34da878dac67ef8ef747bfd6ec466af449e535ac4a6ee3aea2b1cd564c66a729724505d8d66b458e811fbff21da8ca831a8aa355caa88d075f54dcd4daa234937c6e23d0d276020da70d4f6ab269e0ff82aaf4d678e752d13bd2ca3d1ff114eb5e9f066979afabf9ab5b3d1992bf27be76141c0dc9df239ffc7d5a1b99bd98966c09a738a98b732970bea61b7dced5a41532ddc816dade36b16e4b692d3b7dd2e990ad559866e45d9c84cc25a8db7f13f4382f396c5e37f9fe3164fe56ff718f730e82b01952bfffb857312e590a810772094caf709b748de10963957c76fb3dc38921a4a6494e672ef93b458f69e1dae3a4268d57a5ca11f46748c06d6ea3be3195fa4d8f66ca92cc028c213f8dd324e7c0368d96617c14875392b99562c86f2da7a0aad17cb90ec1a54aaaa00c78be3aab36e083642d5b44737e576126250a0897159b9d7d4a2e5b7b8a35d62d70ca048e2702a757f7f7d3ceaafb9b3d6c333bbe6615705534c6396bfdc6641d4fbfdfc3d6eafa9e0a51544af8fc4d2b4d2f8d929d8b86d4d55b058e165c1d3ce9f5ee44f4419f1728c07cf0fb2847bf6a7488a92cb9b7a57af4f6b678387a29de8d5e8857a3e72fc4abd1cbe708dfc867a54b69e8ddaa23fa0755a847d04e5d915a628459a39b0711d54269570baa81a5d1e5254977a36c196599bbd937a5d071925595b50d5dede6aa405fc81bdf16a9d75c3d6a5d63487ad3934e31dadd83d5fbeca1a2dace77b343b7bcc88225795a5a92034f4ab22cbc240fd6718ac0c3e0e9e1e8e414675674b91461862c2adb5c469b38b79651118a634e38dd91bf4fc26bd2d0b2d6036fe0d22eb5c9356db2aeaeb95492533bff303e3919fd302e7052afb5e46d96412025e765049b14802da36dd7ebdfd4224a36194a6bb8ad1b4bdfafc365aecfb7f8cc80a8ca12066d499e4c54be2f2a503f6ce8b56127dd3bfd8e7ca4cbc6c9549a688df1692efb9dc20481436cdb37a29494eabba51d12946cac721d5adf3703a9d5b832fbe0d7ddcc56914b332234c95bd99424eaab111614503b0e96c79cff949be63f234faab7fa42285a2461262cb0732f4477ba19f92a4d13befe59cfda8c8f25f3cf267ca8f0b1378317cd4bc2e4e41f1c356626112e3c82a80834c6696b0a2e1e04c15cc6eee1981d76c86dc1ce026eaacfc0367daeb9d18b6476a354a98830910d02e2e5193902c713ebb5defd283b4866644caf91ebacd2649643f30e5aaf2b8e05deaa572ddd4b0332e71b1aae5684ce4061cc4d44a52808e5a5e2d662c818f0afc7274211e1e44e6164ec8d34951e5558f845f2b9ddc381180000e2e18a97c8a0c8a0caf43029fb8bb203f2198aff486e5c862a7e5eeba0a1018b4ebc6942a79c5110f095a1a2e6f2b5bdbeaad4aeea77456ec0621c42b61705c2203cb1176356c308b01e7a9660e7bad92fa5119561d1eab0a81a56d500c6884f2506a66ffe541b1ddbf8861a688621bc99c22c2a689c1f8b16e9fcddebd3d82531bae4145975de065668d06784bc2662af3aa68739b536081e70b932da3b181f6b854fc59d00094432b745f3fc2ea9a911dad2bca3546293a31ba30b2b938469b30f9ccdbe6166426af1331761f6369c5ecdd2646584d3ac6fa2328f5626fd4db60e4dce76c02d4983afd627cf4c0fdb2601864b446374a2130bdc0c61a64d034f8562a8d506d090829908a4d1acb3d61fb926e94d09d306bbcd8f16bfec9a9ff9a097a62eeaae444bbcab0f84af20cfbefd5c82ea4edd6a48b4593c50c1330ecc4f792c97776eb78b8cd15c919bba6e7efd34b41d42e5604914562feb5b4eabc274edfc759d2da7cb77623ff94cd29d3023ae8c72d842ce408c8aaaf4c10c295b3b48fe66af0c27bbf242eff4f0c880cacd077b19fe6ea6cd4e4e67641e5132036bf89b1549e61b34bc8e2e4396a443fd8b1f937474096e941dbc086ea36c3cbb24fe63feef63a1afb94238ca40524d091b7f59c5494a52fff1691acd0865ebf4daeff7cda23f938bab88f98f47ab554c7e26173f464c671778d6b0d30b4f745b988ee2acdc6af7c59da4e652929acb568bd552f268d9ac62aa894bdb6a553a4cb7ad56858cbb3456c5f5e0d2faad16c84469af3950cfc0e61bf28034bc38a72d8a66c39ecff80ddb96bf5ebb44868edb2773b0aa810f501f87279254fac41acf226605f75477592a0ddc18b885ce84c81f440330ea416a458194cd947a2b4c2a90314d2ad87ea3d2aa1d689b8329a3a0705fc5101f3d4b2e2f63d230fa68eea63ae69eccafcce9be19e8e97232ecde5109cf559cad0223a0b4f6e2dcd24faf8089886bafa287c881ebf734734abeb4e941b18a1e94f4d69a9a8abb9d4e5ad304640f5802b583e5407e2437f080d6380c2132165e0e856a9a142f81469a50765002e66920b92bce3b4c378320932c96682ee4643d5daf93f53a1a4c03c83e381d1f773aaecbd6eba859774d0d5d7a1d3ba4204efa91dcf005900f1c79cca238a264a804f462f13a9d70e86e363123ca28244ae8980a3f0b3ae18485a990a189b5e740fa26e889aa5190800f15f1a6d0c32947f66612c5895234018b648d30a0b1c071ba519775a7b8da619076436c0f8b271585ab66839d4fd4410de0e31284fcca2973794a65753a9dcd908366a5a03e0b16927191b6db959e8285ba95be6c7f926273793e15d7acbd1baf726911e3f704ae057cc63f8cf30041a17542a7b3d98714ed07a33cdd89c4554981d3ef13b24d779206ac5c24ac276c18a08a9957de4bfd6a097edf8bc7c04ec7e15779222374e5de7877ef74f4767f0cbebd716ec9576baa1308bb6e5c0b5f48717c5669e89c7fed1dfc30b1dcd3aad56c287fb43fda19bf3fdcdf1d1f4f82cd104a7cf8b87fba277ce4a7386ee37348900e6fcde81995cee0e459392500147e53cd321ff37597b062f01fb572c3e66488e021ac8a97111550663f8e429a00e758e9c155c6bf5e533185de8325e659935e8a60edb4e47a5e17220b2db906f173536c477bfba467d0666b6149f548db6c52e07098587e4fcb08fcdf2e77569e945739db8d96846620baf9432176cb336f6180c6ebcb928df2a235e53e09b7df36ce079838df160375a7c85bd795282fd03dab02c62c5c634e660ec246a0e8523a582ace37a8c1a14a737579116b979d5734c12cfd2003172ec32ffb705181b269890ca380899822fc2a33206860db635788374b485d0562a1a8aa3b0437bee5d392753735aa6f95f75eabc53d5033d818ae1fca63f1704494a8dd69c14577e03b4048ca0473e8f47bbdff726a45054e92971ad181c192ba530646beb03025a18c29d278f8a14988de597be7b00292b457163ee6231101b4d98dba75a8dacd764d46abe5f992ef7e444926b469232a3ea44aad309b0522d384c36ad3781a44d239964a098308c20cef48549837d4ca825cf2576acf7582e8781588370c7b1e83c40a5c671cf5c79fe8df24cb1cf2a39a758315c2ab373dfe3bd0e84c6ac16498fe7d85d9df5708e14ce8bd2cc32f6e86eb47f492b09d64b9ca19998199ae4b90374fe8ff4bdbb535b78d5be1f7fe8a889dd1106398b1bcd9ee960a57a338ceaea7be4d2cfba15e8f079220995d896448caad12f1bf7770700748d9ed64df2c9a0401e2f69d83ef3ba736f84701a4c71b1dc5c08b39cbeab08eaa553aa3e1113e3c467870849a96c61c0cf0369c2184e7211aad0e921fe3e790557d7590fc70e439654d285799504ed57e854b88a7d4f589f670edd4660bf353e63dab4456ae8e4453ac60b634f2e8e37eb229c7506066a2055a0323cd32304bf8688c076f8155227e6834f1f3115643913d60ae2c017863dfd4f91b56ab40a46a80d4d48d2f6adeeaee555dd6d6cf7a2172fb1338e0d525b90c6b24ad99ae632100146898f19c3cbf4d2ece93e0fdb4fc25c0d43a2a527a102aa4e9fcd5fe83f0b0300b9c7ba99015ca12719de4870aa9d7df5542fdd33be14c3bb635d4c78209f3531b136620983083773f23bc4d0e0778f9a7a56405213c47805b3e63a4b564484eef38e93208c06327e9cc3024d9b0b75c5abeb3ca53b7ce5fd2b6b242c97c3e21cb6aff59a64c7912c861511b2c495d75a048e6d9783e076aa4722d904438db2ac87ebda4fc76089d5225bd412f49acbaa67883332463ab2549920fe7515a7d92559cc1aaca1f9c85441eeb6d10eaf72b842b375d8dfada41c05dc7061c9a90a5d3f67411f6283228034a40c8dbcc0c7e4e5127491ed564c9b3dd6f12ab8e048d089417932efb61ad88f43c37760696aec8f0a7078c0aa2b83c84b805419c8184811e048f8fc14126087129ceb3cf30e162577d29a0898043fca60959367883dc641a3c0582c7a2928171cc11c6b5a586e446c6b3f3cbf364b22ae0200f043c0177c6b0a45f36b4aac732cbe0a792aca9b937f058d724cdaab03d6c20daed347f6c3ee7a44123485f6d02ae3b0edffd6beaf48bfd534c90d0bf0d07d3d5a60c909dd0d89ee9de3c46e2f4e2d52a66b788a306ed99d9d7fbf5ca2ddec53d95d713c7e929a94568af489e99820afa9aea766588ea0a1be98d1d2edc343d787922948c60b2f8b36a96a46ce7d4ec8f42fa1e73d5ff48777f8e8d4550c68b12dc6b2b7c823e3b454ef13a98d16ee75f07c2ab728bb245f292fea71eeb1ab79405cf8c06f1e1000d492f495288f6084187cbbc204bc2e70d9e25a473909246fafbccf23f8c4ffe71733d3e3935641f64f6475590199de47c0909a996ef4be58b62e707ca140b30c5b3968ebd2dbce00c7b4aba2d58392d1df9b24c59b04dd4614b414a48cb09a747abb400b9cb475213386c2535e116568086d6520205f374bd32dc55bf0f7b50d6ef0fe02a3fdfcc90fa777bec4d39a64a1c14acd000198d50cb734b1b0edc7968593b4e785367d760ade1800c3edba7325f8b5d38fb1ea2e3fa7f171dd72a500754c466215a2b748bf921e1930d9cfe6fb9adadad558e602285b61bb9f9f1cdbe4a6a49ad5d29096e01ce7da1507bb2dd23782efde5155e830b781171bfc7229a8c7f75c4ba8b687c3239bb3b75dcb8e64680e9fdc2f005e7f0fbd3d9f9f94342e06f21f68518890bcbbd5c219c21bc4cd62a0e92b81bfdb2c55306c5f2751b13aad7634bfe57e10d7fdaeda6a38dd9c6f8e9d59ed2758b46cf420b1dd9880c78e233809f6dc1a7f1611fcf4eae2eb9a8b2d0f99896a3e788443767ff3c7d84e6c7eae7cd647cf971fcf9e36bd23499af01c1c04d83e79aa26243cd5682cafe8cb19e0e508ff8066ff0b797a490df45ee785bb4fdffb67841e8680e8eafed4e6aee6ab259e7626a3cfefadbd5cd046fccb89eca4acf1b84acaf698a277dbe8ab39776f93fbddd45597249926c47f4bde03f2fd26cce8ae41bb37bec2321003e1ca0781bb73de189f3acffbb219845ccb3cc3b820217d9413d2c19562ddf677a5fcaeecb87212a0f925a3661ce3d4e22e642abf45d59667bfdc37a0b95f93af821dde89e3ec4546c8235da1314b12ed375889a3d51bbdf6810eeaee91d68e4f55dea6c27261892942b177a1d6a6e625add91553a17fd883a109718e76ddb6ded2bb45b6e7bd943af5073093ff85780ed8b0f8da105bb4b9cdfd3078ec60d339599d959987b1d01fe18690373865bab26d5456b9eb0d2c6feaa05ac2e35c48550595232d75070c0c0b57ace63f4e91e6963db3164b1edf7e9fbae79dac126234b257773e864d2b28c7b03acb161dc13e7da705bfcadc16aa2c46feff1efd9efe5c35b2c1d06f1b7a691aa303c4db2f0c71f60730dfff66e3f13ffb49161f2fe24679524852af65e913fd3122aad6d1df36ac49f90e98727db82ce21a3c9795ad5c9d78844390f9ea8009f0c0df745dd252ebccec7e5856ebba0eb292d956d598baee360cd483dcf565df5ceb62406669568c3bd6e6cefd6cde9b42cc0e2b4df4c74bab07cf4ad8973bc82dc5ffad3e185be65c56e59e1c2883c7e56d375859ff43dc5e8fe212e20ef98892e9f13b92ef28d77ad7ecb6d7c6b5eb92dba90dac60ceed04199049af191472d56c346c255f653132bab88441fae2693ab0b30811bbc70c566a6886d616efa790604422ee6517eac6bfe198d7f61f1654fac62a711e194869bd3f3d393c9e3f5d5f5d5dde967bc88dcdbd99b58a5e9dc7d09bfda0d070d18c523ed963ccc31bb2479bb6ba4b194f58d465b15abd813b5f1ce3071d4bcc1c4fd724e13d9e4d06dd261375a8097e5e3e1e909c1811bdb0844d8a99c39fc1cf2980f068e8ce5e0827922f625bec6c64f1c0ceba9c9d1302d1140b8eff345b70da6515ad3359ba3a639cd6610a7653a6e5ecba5a97c99d289d91dbf4c17885939fa4d46d39d57d9ee3c9825d460d8abd0787941b32bd9ee7dd108cdaf6c57c29f146d3be2cb8ed6d68fd34b3ab2b58c5a5ad81b34286e6dd96ed776fb91d7606751b796cdc05a136061f7bf029fb55e8e59d630b5cab3c6a91fe2d85720bf9aaecfb23abf4be9bfbd01f142ddf89b0381f23bc6ef4b3a3629dfe1044a190091f327773bf97b32fe300a3b06f374b52943db3f6df40e8acb1e2fc3f0f6c94bda59e95e1341bcbafad05edbfa7d67105321c76bf1377190d02625789d7ec7a21484d41e7498da9d449dad5ae6ccb61e0a70603e14e0c07a685f766ba88c8d848cb4ffe63262d9ce7a71b166b9798f39f95b4dea2ffa8562a58d0db58caa8e40f43ef0bdd8acea94d7c2c7bed649f70d25e5ec298a227eb2ed66d26a1e1ed0f02f6fdffef54d956fca19bd20459166cbdbcfe7c971f4f7c1d1f4784606d1ec6993fd11fd0b643dff0d0000fffff5cbf362cd871000", - "1b349942cb657442cb69c01667fba5db": "1f8b08000000000000ffd4bddb77fabcae28fabf74ecb7666e6e05ca7eb39d4053eea594b667ecd1914208819084245ccf3f7f86253b71b8f4d7effbe65a67cd979638b225cbb22cc9b2f3ffdeedec287603ffeeff54b4bb38d846533bbefb3fffcfdd3488ec8263fb766425f6ec5f4e64858b8df7bf93f870a7dd4d837518f8b69fc405238a8288065b7f6645c7f47564174689152f4676b473a7f6ff4ee23bed6e1dcc6c2f2e786e9cfc6bee7a891d15926368c7f85669b365799e1db9b6fc757c73edbd1d5d22bf00142057304d2337b123d7923f02ff265129a81ff8b7494fa1423b9a07d1da8ee23fc3c6c976e606bf004c2ce71750736b17f0df7f865c58f1bfd656b4fa15956efcafb51bc7aeeffc1936b292dfc1d971e06d935ff17d9bb8dea554c4b6674f93421380bb5b2f714750722916bcd10299cd10f4c6fb8e1b273f020c2cc7f52d41f10da99acb06eeb4bb4510ac6268f6290856bf10560efa67301726c81950d772fd9eb5fbb6ae103fb01cbb17244d3e27c55b6068c1e653f50f7ccdb114ab25d6b7675fa291d522dbeefb763c90b360b4751c3bce37e15b3bd7b1b2c1579a192dacc89e15743bb15c2f36666e72ab5fd93c2ba4c844b5ac204fb97d482e105e6b8659d1ec7708af8f990299d306e72c9bdabe1d1716b617fef47ec4ff0d3ceb6847eaefd134da7e7f5f13d79feb5dc20b9ebf5a4ec7f5af48aada9ee4b0f230b07cdbcb333ab0e2e4a664bd599e3b4b85f9d6a4bd8994cb848af237759aae679bfe3cb8550f09eb82427c7513cfce4bad98cac1d4f29a416439b63ac3dfdc991d3c053b39ef95762796e7c11f33b1d79768d3d77fb53b4868fc57aba552fb572be606771a78c16557d5bad7a78f0a717ddaa810d8c51fe1f0df1571b613be06653fc877b0bd253242f69b813793da2ef7f08be659e0cf5d671b8142bb85e6bc92e9277634b7a6f66f2b7402e7d6805fc0be5af10a810b2d61b2d16d92a42bd72feb5e16fda2fe1590c44aae1683ed23fea7f2064f7f82be2e617998ebb29387b942d6abe5c4a80aaf55976f65c5180dda49c0a5152785ebcfec83784dc2107efd5fedceb7d668493369707683993b77ede84ebb7b49ad21c3dfaeefb4bb511025ba1bd953a52c675adf69775f2fb6354dfe1793d4dd69776114849c86af64e1f2fffdefa53de52fa69e15c7ccf23cb6b0a7ab3bed4e0084411cbbdf9ecd023f4ea2ed3409a2173bd946fe9d76e7d8c9200a92801be5fd396fc4f23cdee7c44aec3bed0eec07f99f6b57e8fcc28e5c540e916d2536e388efb4bb95cd49de59ded606b62523d14ac43bf135b3e7d6d6e3945a6955c3b3d7d8ad38397a1c76bf70137b145a53fe9004a324727d471da0516241efa60bd79b45b60facb580032a9b70c6e2d4f0742bb19a91e5705c7a30e51ddf78c0437b1d7a5662a74cc46a97f06790653e7e9ebbceac923fd5a8881aa879ff04fdc0a1331df947f8ea9d76274ccc3fc2d678db3821ff045abfd3ee5ead3fb3e3f14ebbfb3d2b1ab2737f842c1525d77e476fa9940ee136b2e5e007d3ad10b273f0b24a370389fc01baa2428fc3d9cfd06743f8c7d6ab79f83fb65f3b13113b4ea2e0f84385baacf0c7a61f5309f923d58d14f44fad968b284c7f6ab25cba5256c6ba7fc4c187a8e9fa99e9f903ec430ef607ce95ab57ca6a57caea57ca382f71845095fd44116726f13cbef6dc86aa14112a95c4b81944e8c9fd50a98495c492f89b1ae58c98df8073cee7adfe6610e12cbf5d09e608371d7e80a98a61cafafb0370ed1cf807d8ba8055cded1fc01f55f09f001b2ae06db807d06dd3c80a6dee50073f36fa50ba00fe0d3f1eca8a3e04dbf507583e82688f043fcf9c073e6c5d3bb166566299eb90db31b781ab0ab071f803704d011e4dad9fc8ad2ba0d202fe01fc5101679efd63d3e908e26cb90d592de6207f00bca2d4aa6594fe3464caddaf889b25e3970eb7845c7f16ecefb43b2f98c2d8dd697741e43a2eff117b5861eab988908481e7054c3e6e23178c267f6af1470c5add6977df566cf743de5a0cb65ae45adf9e0dd1396b65f3ae3425285855d8ec13f7823956e1682300af31ca95c0fbaf79ee1167d665a5b372ac8af1caac8534b492ab3fb8284de1b2aaee8cb7ba72433040e776325d0cb7a098eeb4bb8dc468ce52dc5021b49205d8b8e13651dbed596bceeecdd606bbbc35ece4b0faf81ab00c02cf9d82f1ce1b8a079ee5faa97db9b6c2376e207322fcade7bd06637f66cf5ddf9e01348922eb8870301de3d0b38edd606683a04118141f7261728e6c1bdbd2de567ea6c5652934b3d74022996ea3c8f613736d39c26267f992b476457de0d3df739d45f21d1cccb81f820d1edb49e7bc2c5c0449c07bea20b12888d077fe9fd78aa6e0748442be051f93c576fd1dc31c98c1782c6cde76ea4a40c35fa2d52f3b5e83ac7bdb354875e033cf051fc1dee16c08be97d26bbbd3ee249d8a47e2f20ecbba416c67ad0c227b973df5ec0380cb1e8a62c9af004b5b6977633bc91edcb81358337467623b3195c72f550ffcaf6d0c331147523151402e92e902e434b2d69c60aecf4047c8a6b6b16dcce7286df35c5d693af366ec384692d756841a2527505fe7e21587aeefe32ff7c4eb8dd28291f9697c75c84bcbe08b8df47cf9281e435b926a27e91c5a673eb1fc9969a420fd25dfa51e203896e993b1d95a1e87eb0549fabb05b665f4bab038fe8e1dc7e2a719f7b6e0d8f68244fc32fda9b79dc1a01b87f4a767fb0e6a80c406fe7ad6b7ed89e73bed6e19b8c26fee8817e136e6f056e480eee775b6ca94ee05bead32e52bf790f7bff91cfdf24084acc8e12dc999fa85beb51586def1bcd1be9c3c9945a0e2b8529ad6100b9c0a7e5e94c272435005cc3d672d72557afd5553ec5ca98d5c94a5d04f562c6c3215fe4a695ac38cbbb883a556b82c4ce15f601b4b0576eca49b93c84ba8ac3c0de7a82d5c294d6bf0954b945a207f891df95666c72bfb5bdc56c93d05f3579c4cb2d6abe5e421e40b1cbffcbb8bfd33053e5fba8dedebae05173ef5450a7bee5120a0284da1725e0482f0223451e2c04ba34459cc4b5dc4f225b09401c5f6cc14d334b693d159d159adca65d1032865d37713d7f2dc13cc5750ccf922179fcc59ac3c08246ea645ac38761d5fa88a17db9fd9111a2289bd1e88a09d546ab154e5763c88ec993bc58eae6d7f6ba2a2b1a689bbe3653337e6261a276461f933cf968b5b22d622683e6b23093ac1de8e9805ab18ac7910d94b2c47212ab11cfc6b724b479217f82ff63a00b4bebd3f67a80b10e883c34ffe22159dc88eeda4efa7cf6110063b3b924d8741ec8a89906ed3c26ae23b9e0d26912a842ff65c8e855869a7ca2ce3868af218f86c61f98e3d93b34bcc15dfdee796232b72ec448597933dc53cf502dfd66d3b54a14640623615fdd7c0713c612258fe1456017be69e6b93c44d00ea1bc2f2b896440e0ea9e5058e0cd98a65914fac56146c39ee45b2f6528473cf3e502b7663950bca8a29e8e4eda23df32622b06bebf86de398ab3bbd3056bc50094e5f6888af6b3a839b377dbf6d1ff560efcbb511243382f1c26653f00bfc03140916f889582921740cb3473749a7dffa6af6fbafc6cbf9f31761af66bf37ca6c564e8d3703ebddb113f81ff86436cbad7ca4657c8175d21fc8ea590a00c891154d17ccf2bc6f8c29c776625c0ea4e4f0c072ec115a3f3bcbcb68799582155a516c9bbe2a6343e130847614bbb1fa2617fee7b8cf9e55387a54a4edac9733fb3bd8fa53d4a07cf2666fcd593a288a2791890ee7dc1491c945aa15811bd4415a27b81b30bb567996f34d24b5798fc5c5d6234506a4dacf16c2c472be501d715566eaa0b5123b4a35a0d44af931392b7b8516843d7e560ade9c9c5ba1674ded056cffa522f06a476b69f30dec6880a6f134f09328f064c588bb0d825f42b9896183e1e1ba3b7dced8942abb2f55eda14e902d0b5672f3721b27eefc28660897e1342305e40b9d9424482c6f201e7adbf537b4d925ef5f23d234beccdeabd1824914db89ec0b8aaa780a237b2715333496ae99c9c28dcbe99071709aaa2f78591174889d28cbc1c580174572bd76106dfaac4e20012be6519c589124caf667e257179df0a9ed7a40200bfc78bbe6aba0b48757f631cecd662e705e1ae810e287a13ad947166c91a5aa1193192a69dc321f57e78f91b51f5811da1941947c1fc58f991b89d1e3bde214f3218c037f205d1e601b97452b09a25e10ad3919ebd0b3c5887ecd5cbebcc26b43ecb5a5f069419cc08a94bee0141ed7df81f04b64998f06c12cf06d4147ea2dd9fe3498d939bdf13ceaf7a4cec21d3e1876b13198af60e1fa6458e07bf296d59662c0e2ce8f6805a0470d919233fca807bf84f8700e02fb329d4762ce41dd867f5c4500f3136c234b27e3230f91b15162f9332b9a293f9ff84373eb79f823d8466db09c62115b024326fe12c96ea87ee25c2c0703472017f81b65ea4b66dea581b0aff3aab907219e4f4120569674f2036b06d281470d84e64a0a32957b58cd28580f53782952222c90caf75c7d980a39578132599e5f16e5820c6edaa0fa2cdb4a67cb3cf7245ee766d6fcbc60e1c6492082182bfbb253910daa192c5b8c93e666f8576ee9b60f6ecce5c214311d8e4dfe0e81262bc27061d887e0cff9da98eab86bbaf62ba77695dc3decabf8c5adb457ae95d20817320b635451b0e554cf823528a0b372e802fa3b5365d73a4bf2438140e53b407d18db49efac48868695c85f278b168756b21011355f363a770ff6ec35780dc2b4542e439687fe0b963ed932a284cfbabb7371cdc4859929b62b7232250e7999662442ffad187bfd9afec20c000e9bb906affd81cc8218272ec474e2054c75578e92297fe8a487abdc85279d5aa017deeeabe5dcf098cf9ce54b2859a07a9e978ea7ea2ee6bd4521a4e9e2ff8ada3a5e045b6fa6bb31d74883d4acf08317d0a468e12386b41530ca40f2522681a295863f7746f8db5719ad14462d9f0fdca0f75c5ff847698d340f837b9524b2adb4a79929a372e6eb169b30a98ef33efd752b5f14b9272d64ee94dfd8e03a0fc4a306be0a2ba626587cd039c5e70d7cc095ba4bbebd97c851a405837b69ea6ac65e2e22f91d0df904bd98063e44072e725ac1a4c6e9e5c63d7baf38901c289d3bfc219d3cd8b7a88b1665e00ba35af2514fddc7547509cf2b576f0e0991b88f11f8f02bed7ae043c83a7d76d52880359dda61d62a40660d8dac5d36e5f9434ab6e7faab1104f4739b34b8308d61670b767f70be29a5927a5e926910652185404026c46e2c38e2fa8ee873ca1300bdfd3addc4a8aa0fb594e983b30d1f3ebdafbe48ebd6d58747b997202839df4769a80f90ddc295fa598b90c5923d9551355be827c77642d2870c28b74103b927d25c11c647f69481e578000925df6e942c447c27b613aa3c6680b91e43b2889d2c7c77ea2662cbc3501e33c05cdf211b042c15b94fc2d2870c28c7084802b18f360bbc400885913d656039564096476c274f7203297b93eb3de473ac6d2bde46b60ce3c776d2cd9764e0391e4092c7dc5ad9afaeacd8cc9e32b01c07208f636a45b61d75e4a6036743be2403cff102b233122b498240207c4d1f32a01c2720d92274ed68eafa8ea834501e33c01c6320a522b6139ca959718e01901c91ecdd44c65592d7f42103ca751fd21f5c3f4e2c27b2c4426a2a8f1960aee30f6541b9a21db297f96dca0739190791bd7341f7ca39999564e0b96e4326c2b959cb8b20fa992b89edb3a430e101cb42a93ad1deb95595496be80c03d77ad2bab38ff6d754c83b17b7af44a46182cc7ca57b57f333a281095f626b3b3ca7eb2bd5e9567cf4a7af81c8a608d02174e493b25dca5d295e73caad5e500ea9dfb78f60e7fa0bd6a64322820dc07a3fb7a39ef22abc6041524c83ddb0f882adcac94cd7fc3eba3a8280b28210b4e577b40d33273467295c980ec82f1736f16e592a5f3f983057c8bab002beaed905916dcd64f0d57e910f81ef05d6cc064351ec8acc48ac5b89855921f3c04f265299ad5ddf5d5b5ece8a90861fd8872f603be3cb2735a8cc21a475e3b96bb04438899c3ddbef58faeddf47f477c3c89eba31dae86edcb3d2c841d30b20c124f5f4ddb8c98d5e90641f9b0d9adce71005c01fb953618efa6945448b3bdad936ef3c0ad6fab5023ecc8e986adcddffb081a9b085e783a03b76a243b0e8db4d22e169a8a77fb08566aebd2cdd18016ccfde496fca507ef77b0624d34c574ec45d1cb9d0ab216fb1e2524bec9373775118d8fd9d1dcd3d189b20fb894185e979984a98b439dabfce7b02c6d3139e32124e53e6b0717b3f5d0033a2450c2e2b501cb1acf0c50e6d0b0335b2bde53e846346126ffeb05266981a9eb2f163fab0451544501a0be091c7db84a275b08ded7467214ebafcd9d8c9f4702bca97ec6c2f903686b2b9c4356f1027e94691d227dfde2bafc0ef3250f2610e071eee65acdd5918b87ed29fcf633b4973ac262215e59b334544cfa9fc9d44961ff301c12d37eca8823a0eb928a89b95e705bacd993843d90192a0b76370cc211706c978bfd3ee9e5ebb1ddddd29c9f3b6bd1aa54e886327244922f77b8b761ca01ad8d1d4f61391a7025d7b4f7f75ec79828312789eece84ca40c0a7d6f47e62c9bac4ab6967451ed5546b61846aefa6d3fd1d38543bceee21ee3ccf62079651dec644fe44f4edb17a453094ee1d983c88ec3c087802517ea586c54e69829bcdbc44547f10b4487ff40a5ca9741c87d4b78a175c008166ee0c8e6c506629c58c9169a44d7021ea5df1e7a2efaefee3c15508c62df6977873bed8e4b269fd6c2b07b75d776000bee65b7427570acd90c649ccf7b1b550706afce4b1d6ef5392371706296251f3a76226423a647354eb3969eab87033eb3128b8b8a4c2412e785ffe5661b4762bfc6b11340d40c22a43c15ac9c74cb76b0e45f6e62afb131e122bf069c0d7162adc3ccef0b65545551265cca8364651fe37477ed6b2ace99a4ca876b09de9ed80fb266a8ed6104ac38b6a3e47571bebf8f922a7ea695a5ee4aa5382dc8f4825459cab44e94cec4581523b732dd433e60e86fb9ff42da15530a0be446e6f364903d8752adba60cc4cb77112a499045714efd77565bc403ea6bf38262ff8c61dcc60fd1d4087b35d5db955e45947be0abc64166dbe24be2c49221b6df96964db7ebc0812d48d53c81e5de1c84c175698d851fc8533308cdc351e76b2b64920a751a8b4cc701f2e3e2b8ef32c4b75bf1c1cb1a5165a5bd017e2e8ab88538801e2f3e73c3ca19cc180c2f363b0f9657e24434373d7b3f934e3068588ce0a037786c65fb6179b3e0b9abe32da203c2a0db3d198316334bac8ac573325aee7dce316f5f5175b5feaac6bad7e5d043cf32772a532c3dc0658b8646ff8432a1a2f72db4664699ab35c3aa4996db2c837a3ec29f35166f199bf872589e5a4af5ee56ff49cd26ec6b672da252344e4f92adb3da241f12bce558ab7d3a91d6763974f88c01abc2d41d60521aafb8687c0c5fa7195f73786f9f27c334c237bba8ab722222c3754d3adf67c819eade5321f606dfbb108ecce236b6d47f2ac1e34c04bc4acfe769317f51d4d9fb93d187c4d83993d4ddfc25169268a2cd844cb03103857942bc2797679341b4731777a265dc4b267116357c1aeb6f67519a35ee7eb6c217b03cfec2a27c1c596274adb33fee2968df8f9156d7dc23d670cb56fb6a059bd5cfdd896d17b0538b6130336a9d21630b81165ab15f85832c9456c2f6453cdca767c32547bccd9e06e06579c96ebdb91e1cb14b2985bacd96376b05dec53c29082390e99eb47e9d4018c78902c92c7816535998211a6f5025f6adf5de06dd7b654c7b00c884c669137067661c796c1656eefa8462c778a45428ae003a0cc76c6de94c7dd79afb89e4ccb847bf4aa3248c9a399095a0c3f510d71f918a691a3c0e76e1c2e3253cf9dae9e2062a10061305c2c7022c7656f7f87aac3d097273a02ff9597b9781a7826b3c384f737454a639409f0ada4c97c92fb9e419e8953999bc6d7d501d2e905104b492f2410bcc83ac2f570aec0b19394c428d80bad020915786081abb72811bf91709b7b8d6bcbf585146063aa211acbcd6a39a05fcac8aaabab848bf35bd6e7204aae8674a02e6e514877c282283bb360e64b441a5fb6c3932684e5377dd4339dca5a73561c9f1fe7bc00cdd6998b939c17b05979e0737291f02ce929a55086143e94dfef2291f0cc774b53185046710687d64cecfc22907001e622d42316c2338e37d1f9154e0357bb4dd7f6307dc2f666d26cbda296afeafdb9a81cf8d4db46223d52e651d8de4c6e5cca9443f02e24467fbbb623772a039c96e705fb1e96b1851559536e7ef67d0f79094da53b61598f06294f64bb9947244bc4da931ee9c9f888b97762fb7b1a789e15c632cdd35d89332b813fda7e63086277d6c4175a24a935f1a61cd54a1620ac1821c5135a3257089b97dc9ed99e9d641b7478d6e345060fe10913012093b329b288f6e26816729c4bcd0483ba5883064902490da916f9cae913f0985e83d447c9dd4822426ba90793f9c6991f9528265c9ac1a2a6ae701620a56a45915b9d8228534a48b0e21f7de57dcd04432cc24281cde057eb1b2816729258df3035b00fe73ec1d71527e142017d5d53495778f4759d6f9756e0d755c3306faf7f5d98efbebd972c82cdb3d4db90f7ba640b58b6bc0e7205b03235832835f2157d8c6569d4330c44ba47126d7d91a29ea677067e1b7d42a5feabe5883408456ed3b719576ec3286cfea925f595dca34f6fae51f9f1a572e6ece61a483239bf820612cf3c35155af8d4f278addcf2bc2c55b7b66fed692be5bc79ae159473bb6a4ecab55798ab72a3c2f98b8b7369fc35cecc3ce02cf704a9b299850239d8a32ee974443a430a2b52ec95068ef9b307175894dcdf1c37d768f6debeb0076374f122ed70fa30b312ebdb8aed4cdaf57c497a276206d13a2bba6014270019952325d5e7e2728a3442a400ca774a1ea0ac3bc5569d144095b3af33a1bb7e0f91d8e5bc7074b284e7587a9730303018a9a17f7155d19d7697bf7f288d07e622dd71a654e29c46c93c3ab9e59e3e808dcc9d47e9e8abcf5f812ff1ca8dbef3d3e0a069443438077d79e9111e0482a3ecc4b3a34435102f8b612b12ce15e6f08a328b437ec1dfd40aa76aca170c6ab4ce95053ec3d2f34611bb884942fb79767f5d703f571d8eba9f17e2317c85113298fc0d564b22fec759d1ce8e12776a89e5038a4408534e5409797b027efd3837af0bebd74d19be1cc3afabc37a21b05fd744f852877f5d55eb7059c5b5e9ce5f6427af63b15b102b6127b9af97459e6489c835968fdcf093bf85792b9a4a638d69b4ec3c35370b3e29afd5fb5964281f426db9c484cb1a67290958a806b4e62ade388f25ce3791dde9953e88e5334eb3883398af1cb8b8a92b8df6c599a3860e4be6a5e1f3c5e810cf7bcd9d454c3b8515b6b19dde2e936eace4d9a30266890a19d457e08b84bec472e4eecb599459a8360c77e5dc3039de692382481a0462022f823811b9bc708851ef77b35b1fd25c0b37ddeb38bf4cecebfc6ab12cd5f82b97759c6d1e518cd28a9b3c45ce9572179ac84ec0b47fc78d936c89f3b1c08eeefe2fe46087a065fecf5dad4be2fe07d10c32214c33c890306dd562bb01e34fe45b1b114298d622cc809f3a2ffd30b416211f9a09ef0c4288d6879ffdacc00060460831b43621a4a7998425b4052f10b295413e29904d7869662f9fe1e533c7494600f2c4ff769fb53661fa50eb1232e42006e33ffbf08e696342265a973497f45533885ea20a8da3acf157d1b821fac9c9e220e30ce44d01813f36f45c0b28d4e9f2df23d22dd30e3007b8e5b31ea7a33de15c1b698cb0cf9e36248c30cda1e4b5074db6b09d51d6cc844c4d8ede7c83da262fed1ada98b4debb8244fc3b456866342f8bd78c3072a57c42c848b008b935e183681156a10baae0031e8d3ab912fef783234c58e72a216c764631197f682e25fd1df5b0f16778b5a59a45ea34a1278a0c6584ac599172567499b6bd9fea41bf4e1b542b7741268f4f20944746b60eeb00588df281baa78c3f3d71e286550a83b7a74d286b696dd26fd067cd24ad511ba19fe14d5b812ed31e94f5b52ed9eb072cacd117281c695db2a1252c3cd23728e412354d24ae4f28b3b42e994458b6a13328b3b52e197912cb027af7e452ad4b8e54e0d972bef0e23567cf23abd3772e38c4b8f297f7c2e4951e68889536bcad8f93c49060e99637d55fb2037fb440bcba476056911e10e4c8416a6cc15e339031429410a2cc21eed982bd67101f88bc8a10350eb1a11e8b143c31459806c2dc73982df5d84e81d953e4f00247cee543e788a72e7425a61ebe5b334e05add2a5527f45917321c26c384cbfce452905290a900441b602a4a2803c0048400f0872049092007914235844da0e34a32da015acf1206a349446ef29ca441d411e39c8b881948e1164237a58401047e7ad5491d2714d4898ab63db05def6f8510ac90a8a2bb404c06521a36b5d3349ff4023054b2c8433d49147bca28b9d13fd58d104df6d45f59352bd08202e3b20c81140762ce2ff3f04069d833cd21282940124643ba595bd90cb2a82d438118e108daec0d0c077f7fcdd4a0c29be73e8c24066f015614d7da5de917af86ecdff5905eaeb19da40177d47900dffd76fd0480141e2cb3441902dffe7d0252b28308e8173f9803047fe6f452bd4371454068a440961cad84e899e7498b36fe790475a45c81aef534d4c25ecd39a35f0dd3d7f67270a2bf674811acd6d625f0a0a0d4e534c19045937b536b14e396685f86a03afaab95709beda5ebcdad203be3ac2ab92f2aa4c4bf8aa0cafd401ddd32abeaac12b55e062dac057f7fcdfb84afda6c29e26327bd1c27ef27ffd0a8d0064c550c7ae5a5adb488a864ae6b73621eb1e9a2584176f69f5e92713a4f8a4b588df3ba12520602fd6f987a7cca2593ee10a6da92bf4870934b81cee65ca7f9b4cfced13d267b0e2336d4886216db4f8223bb96fc1dac7a9e66abc5fe7a01dd2e398ac3e2cb7593b16b7162206bf5b609140c36d6ec6908e3625ad678317d84f9c2e9bd3ce0e9488b646c4e74a8bf7e420a85fe7ec9498baaccc39c1ea54eb379da2de649a612c8afa23afc6f88a07b61323ec156cb121b4dd6f696bcac1679c32d68970715af17f9d161411cd347625bd09d8eb02bb93c3fe481f296247b132db9ad1dc7846ef59338ccacae03d7b41e36f0a8646bfabad6873ed193b6e5e71903290b9bb4da64b099b9b9c39d3a666368b2be35b07fa4a609a11be261807df78ced119e7e874f5407009572773a819cdd8357a03cd30aa0b41679f630ce80b201e697bda0c5ca3ce9f398ccb3871f53f10da073b72c30d976679618468b474aa0c1765be3a1975cf68d01cb56e8edac0b8175cadf0313d6e0d18d3d3d67800661d7e1cd3e3d610631a5260904bf363da381af931cd5bbe0fc64af00af58139d18ca673aff7de34c3481a3af20a26da8abe03de0f2da6cdc7865ee1cf1ce61ee8acfc815763e8f70a78b569e84b3a005e2d84daaf715e794bae256ef3eabe794f8f604c4d39abf67a857d735eedf58dc1abb19404c23eb47eb3bcd72bc61bf0c2479177ce44fe503e13795bc5e7b46a0abe7bd73801be826bb857f1b94b6327f01d505ec16e50f01582b3e1c84f70b7e53240c827b8d97c68e84d8eb00203d12c37f426c14798ef67f8bb84b4b9e9c2fda52121035d6bf1717a41821a485019f8bc3a9b40f989be693d62b761a2378f8901541c123e759afbc4002a0e094ee75b54ec322aca8921a8f0504a6dad6df8c53322b65455d5c5d69169fd66bcd0778ceb752359e85be0ba61f3517210b7366d9617badffc04694a9ab8d2adf9ff57300091ef8be06c9cf3c8ca88ecb894c84ecb1bc81e9729b2502073cf91859b3364fb1cb287569123dbaff403223bacf4e35564b5951e09645e134df47b2ec0af2705597486ec31afb45b0fec0144d8e212b43276fa82a2327e6c0a5f528e9e616bdde6fdca485adfd841343999cbffbf14329ca7e807299e90fbd68677f0fea457e9fd134a1f9a56653d3f1daab533e273abb5c33d917ef3bea827b29d2ab6733c6ba75e3f6b27ce11e43eed3941ab07bd800db53a898e3a7acdfff77659df9685b3a61e724dadb87bd06f3a653d62a2a91234e5b02dffff52cf9a6a3c9e3575cc35b57e2a435315dd934d1d7474b236405549a1eafe07aa4624782ab21accd88437f9f0a037977c94ab0ffa969dcf5197723367ac6b66d3a9ea3b7d86832d7ae19ef762e99c0df644edc4967b94fda65bd34339461e8ed1fd99ea4b163f0acdf1098466e319a9d078a8b2eecf96b46a7cd6507e91283eddd37b907817a4c7331acce7cc2878c6de3817f915d5464d776d2c9a0becf20291d6ce909e9233a49bfc3afab466ce33af59e0483735d60c39cea8c61ca6e05c53add52cd658c2c0376e754a4db4e8b7a044928ced9eabff84f03e8ff0b12110361a5710aeef3384078170738eb0e1e93fb1756dde53440876ca83a723c2aaa783a19243e8ae754f225c0827a1069acb5374f2f60ce12a87706b3aa2875540b89608d77aed12a1affb1261c340c7a50c087d4555ee7e4458cc23acf90261ddbf8270156408ab02e1f11ce161ff9375f168d604474f802f90f802bd78868fdb511d756df868ae42fda07fa26d8cb6cd96ff7b51e6c9e127ecee730efbe346606f6c7e837d1da5d877883d38c3be28fea0924764f31c08662f40359784fc7a25e6b2f349ba068d35cad1b0a2cd6d89f9062e8fd5a630b941aa15757eb8673f91717c0e989b9241487fc932c7ae5fa61c0eeddb834e20fe0aea6190d0ccd8dd52a48b3ba5f567e1c079cf97e6f684acdb1022ee3b4f175840c45892c362681f7cdd5e5312b57d6c3779be342946e4d88e05373decc6e2b21be8d2946e744330997db7539cf5739c9bfc4ad8b9d917f4467737fa1276cedacd2fd6c7dbed5e1b89acddcacfed3addbfd9aed73d6b37af36e2aec388d41a8498314019105e9fee6050de4519c6d60fb01d21e93832ae688d88817c1a26379a8725a8d60107aa5b86ca6685a9f01e207b3bf1b65a2da2f5c9d340eb927af7d91141106ef2015dadbeb6a2acf70cbe48974f1dc64c8631218878b06a1b638bd0bd5a5b33085b32060b34f893ba43312e536f436ce5b19d455e1a6de04db92db132cf303583e82bb1bfc18b42bdc58b023da30d0205469d76608a4074b839c18d12af730b8bdb91f50dcf3034833457869e15e958a4a788d7f404d1b92eec578d7650bdbbef009371670403fc26f0013a4b745e3e11569349481b30b4eb1477ab5a8498f7e0db8c004fbba50d095b368143a3c6df43011cf175deefd62ac5d726e40596e11a28617325b6800c425a30cf875a9bb04a4beb13662cae6fee5cee32b17b44c74b20c6367a83b6a0dd2108e0087ac9b421f1690964244609c01db20518545ce7e1ea00e13316d2051572d4252bbaa049fb02f5a603a8938e44ce8c2d8cf690dbab84bdac38673dda03d277020be0a4662aa42e9d0554fb2073043b0830e09bad99c4aed0227fff8def4fe7efad0a0557630a01b85919e6d2708714ec29bc8259dead42b8ae0f815fd2467afa3d88088c71e0265ca79a382e23d6a04d20973bfe7cb80bdd8b9915899955e623aff7fec2c4aaea133e8b1ef4d7b4c8d75dde80bed697ec6c6a2d194e2d3e96cd3dfd0b53abaa3ff28e361ff43a4d0b97a2d0d51b34c374cf7f9b1e8b60fdb5e2265f0aed10a2a3dd4d2fdb93ec43909e1c0c87cfd1e7b2ce159759d14dd8f26d70ea9e377a91ff3723bdd40586de43f1236c5b9a0dd6d6866418f1c1ea11067d1b73f6bf0c4031724eb317f06246444ccc295760cb1ea820b605164cfae93b368719c815af012a3c57d1e65c66557ae8a2f4f42fa6973ab38a5d0866f3deb43cecfebaa78db886ab5ed9feed439444eee7b28736fee662f888d2c87be6b1fa455df6d0450dc2086c370c81ea36792ed2c3e57cab75d381c6a9cec416bb09dae9c16c1ea86f1c746ddd84a561df6d8dc77b606242d17881f83c59f67f0acfdfc39420851eec8faca8d3d7c6a44e3d9494455f6b9347baa26e9f4b7e43962ffbb04fb8a2abbe36250559ecf16287ade8bacf4d8e0513e53e2f77d98a067dcd224b591cf2e2155b512e0c1e2fe503f1797d87c0ed672549ef8a3fbb61b0456096f9185ad0dfcf67189004b213da2bde35f60ebf2b7d0c8c3a0380007970416d73f965890e500d01e50ec0d87a1250dc07e750f53cd46a0086c7b380e25a68cd152a3b1839b8f5005ae80838b48cbb7cf5cd8105485a4f8089cc0a56c923dd0c408e06028a4b3f875ae4db8a11e58b808214842e618d7c5b5b847abd841aca09068ba05905456946295f278458958cee2121e3cad597402e0b9bd0ab29fffd0a4d790668d661d8865a6368e24dfce6aa6823366cf8028a26aad8bbe12bdf629042b24fa5d616e86c6dfb1c91c7f473e0d442038d0f6e2e81957c8cda44e76ae0c0207a3e0589ecb6a0b23621c6897e73fd7d8f233d174206340c321a8c8eda0bce8c5605e57c0d5b61e332c8de78838e5288c4397d0eeec194275588c997990ba650050b97903053d3579ca0a5b134d055121363989b1806f48f141161088abbedf2994be6d0581d30384cbc5af58196654f9b92c8f0505dbc60cb5dd580de1bd61e46b2460f3d8c61bd292d4c6091fe6ce86763db276cae72a5dc9773b2458c05555e0db97eac1b68b310fdcaac37b86ba097f5073eb909813983fd1f02b40ec5a0e348fa73c14d15e3240c38d0d9428933ccf468cb39ce4d03c2125108d605145a722bad2da709e1638b392039c86906096e89ac7ea23f60bf0a7915bb500b50f859175b30fd6b1eac4b81559bd65f62d5891506a9aa1c12a38a8a6531c8e9cf6c3dac83e5d0c7114bdf0b568e092b60fdd220a759b3fa8d7c7df17e94f2326ae6ea0b9d9bd52fe4eb8bf78240871276ca37209471d6c0a29f6b40bcefa78cf7f3f58373062cf3f5c5fb6e2a21670c10fa3babefe5eb8bf7c2caf8e0ee4aae7e7c4ebf9faf2fde9b69fd33fab7e7f5c37c7df1be85002e25277a6a7ad28e64af16663a65298b22b54ecc55130c0db093079af1a774c5fd001b18a6798a1d45542dac64a642dd149983695b32add148d3fcd0d003c54e5ea0ad21a2804483a1f6635e24c75144b2ab83ebf991c501a089406d938701d411f6387f5fc29200021864ffc4578751150c8d985b8b7a81fa7c69344601e863c8d56a2ef92818a435daa01ecd592b4f092bf16773148344a307fe5ca1092f6d8fb65c4c3be868ec785177646913d2c3926fed2c73f4222bb32807aa25334f45ba20e8a151425d968d380e8737fc69541d64f9025cde910b1c7128ec27a6eb9e36247a95c1ea678ce4da3d64cf3e17c014db4b265fc34cbe06bf962f7798c957ef3f42bed6d8cfc6df932feb9a7c59ff5cbe8684c0b4ef782c95b02e606c915e81fe59c6d6c8191ccf61da9d23833cc45195ae2f642cfc51c656c876ef47199b5e91b1297bf7e95191b1b74cc6c6998cbdfe5ac6d68a8cbdfc47c8d806650ce6e75f97b1f135191bff0f90b1cd50788fadcc9d6484c40c921e4727bab990b1e447190b90ede18f3236b9226313b6a03e2d2b42f6a9b5c81093e83e389e8f8861920090e1f7cf3b778322183996b0c31f84e08704ffad32717885217969430ca0ef225220a6b764014400baa214c6b6b364d706b76dc2d83e2f993ab8a60d63fbb4646270798f5b2f30b6cd25cb06d7ace0e0b6d7e016f4d189409eb451c23020c85ef8ef573e74ac79f65e9b928e0d44be94d84f52b245d67d02173e94d50ef2415734a1db0b3139fc2826317234f9ebcb1d69f9b43638c776fa119b18bfdd8fd8ac2bd82c56a13e7d54d0cd33cd67679a6ff67beb4dd17cdfff119aaf889a2ffa7b9a6f724df3ade9bf45f505308020796dbfc75d3f380cd025da07e9447a48338d0851ebdee9171ab1881cc371b6d36e6e1978c2a3122d5e887ae547e13be2709c7e14be8f2bc2f7c1575db40b11db9266c2e7d24cfa16f4d7e25754c46ffe1f217e0f287ebbbf277e578dbbe9ff5ce97b4086899176a962f55584d5f770217ff51fe5af8ce351f97b56df4a913f5f91bfb5227fdeefe5ef4191bf25fd8f10c0c7a15c61fe8e007efcd77917814815c942231064815011842ba6a4533154bbf0f772f8887c1323becee470cfe018d1a8421f2fe4b0f0a31cd67058ea7f63117ef769a0c861a4c8e14691c3f0f772f8a8c8a1ff9f2187ce8b5c6cfe8e1c8eaec9e1e86fc8211c708013af634787a8fe8a1e5eb42cfac91aece5fa6b77a04df8ebd7ebaf5703cde2afdfaebf5e0fb4317ffd7efd7520707f5e7fbde1b5df3cbdc0fbf37136830c3126ea9f16f92ca15365a593c720dfbf993c0ebab4424c37d9e4d9303860e7d003853cd47c7ce8e5c7f8108601162f3fcd9ef195d933661ef5e956993e0765faec95e9b3fbfdf4715fb2e993fc674c9f354e9fc6bfd18ef8f7aa7150ded91fa1d53b05fdef69f0350aa118ecbd6a4978ba881f5dc860f8a30cae70d4bd1f65f0ba25c14ef8fa08da7fa6f5897ed4ebf42fecb1bc68436214d4dda83e5ff24c424cc8d03ca87b52e92b7096d37d20d81c4adfb5b2734162832a7df52a12deaed432d45ab0ad927f55a7d748040f12b6721376ad2ac1f7164133ef02ebb38a15567805eb8ab2849ea89b9e3d6f4326d38837264e5436b3b288191846794acbac2583e37c1b1df678eb7c9cd91252cbcc804f2b468a5c2618a60a3440b4ba411fb69215724dc25e413247274c9871db90c99f50d8dd672f98e835aea3c8e0fef1d1c068c4c9c83d428731d52da6b86f4ab52e319a0a0f4cc27a4b4345b86ec3298484966e232c1bb8db6ea84f204290b54362dabc40d747d9644f510edda60d599809adde465733609fbe6ea84f9048a8f710dd938a6e48e0049f4e607b7f587d81dd5f6dcb081bd4704e438e0d4e4f6da39303dd1b9abcf0e2819e5861c8bb54e3d252a51f62354a46b752a3364277b4c803ad42da61953e6479870fb4ae63612dcb3c442d5ca327e6bf7051862d993a756980d84a37b11d536c3581adae62ab096c7515db3df581dfdd2a54eede7387996c61a69c28a6492420bb2e2d8a34384658a22447da5528ef4236216c5813566b65b90cc940b63c815b44b8b2aa60a662a189f92947900eabae6be2542c3bd02d80b814b2b3962038e89aaf18647231231b32063ff52aea58e715d51e23cc6840c22406f1061b1d1254e0613ed62ce2b12366dbd5b10b8f3a4a0fafdf06de8e21997c8ca9b33b2ae20180d3158b7d9a8f880bcdb3520df22bab94650937e285c9d5458356e10470fbd897dc6811f6f6807e071c3526e32e6c9aa2e6e9e214699f3881830d370056ccd3ef9fb42949682c527231493886c616d015730ddd9b0e25ef4dc2423c3cccdbe22d3b26641d03ea61039ae8d69eb3a575431bba486c1e41eea91c5ecccb317d938f64890626e600611efe887c4714934043d8c2b0f71dbc2805c4a7065d5cd3127075ba6867025486a2960309a7cf222786d769c0099f861eb4503c2048cf96d4c7fc98cd18fac895f2e4bba55924a4cf48009c26612115bc5860ee1128089f0642d8746cec34521b83d56a45bf1f2159ca06e961a896310f7724f209237a1a6b6d56355a45b85dc341a55f1a630e26d05f063a030a1285095a7a9115201bbba2b334f1f269a5ff3ec1b3b568423ee593d3cc122f5b07e39137fbb4371acf9976313151b20349318f9860fcc8a7f3f39aaf25c62f733dcd45b3cc5b7d769aa5b4753332b0706354d2426bd704363e8825a09a1e5325ac5b036bd2869370bae937711a62be7dc8ad0d23612eb0cce26b6b6b0e4d01997b5a30c5312610266ca9de866c78078ce631ac6e7c09e60d545a60487aec0c4997afdc97484c2477f99cd91ebf40e263e250dcb944e2a9482c44d286a5af041d6962be6777fba64d88f102ceda6409afded780d83a7075b663f3869e65b13e9d306b74ffc68794bda31707aa04f86415c6f27d4009f3d0283ebc2995d64f700f491733d14fe92b38780d97179139b7a00e90ae6d1cc6c26730fe90d1ca8cca651aea7e9cd39b64b87b46931cf2a6d7cf603b353097b50a4c1dde231b79bd12376119a95c90c08ae7ed2ed0a68292e19382a30679661f2db134807d72baec13ac02e5318c31afe8d388425a38f0aaae72897dde600c7b38a36a7212d7428c099b4717a9c1ac363e5b55aa4a724c6d8cd699cd75d601bb748036ba4764d1be07e42462cd81f8217b5b63667a843654a9a50dc9c78e3a5cb4fca6c378a776e216105ecda7490ad926b13e83ce616ef6edceb549a437913f2dd85f33098918ae98e35d0ba4c8a1dc15600d5cc0fdcbcce81b070f2eb8b2c3cec72da575e6d3f213747b0ebd7672bd3eb4b40f72cf2af49eebfc13ebf04906a49abb14e24a22e97df3da4bcc8b5ab434263c0cf320524863d09ae3c5182d5b26bd1d3306fec1e1d6111cd878318b7c85221b6ea0b708db514cc5873c2f43bedb09b7c817efc6cabb086ce3068dc4bb21698168bf8289d3bd1cb1abf3d422adde95791abc692dc96e0fb3eda1d99edbc2158faf6dcb666a094c8a4dd973d08028971523cb702d3f6bf208cb10b3f5607937e1780331c4d3631353f84179193b3095ea46b19d2dbe071d4cc97baae0cba5d2de7752aa5668e70c973dad4fda0b03046f67fe59c2f094061c59601dbfa58a5b0207777c5a4469fb06699baac2b6e0dc1956e803d7ab456af0c9603c55de7ed231139bf378c8f8ec4e68fd37b086b685c9deb800bea1654b2d2f5361ed0a3d17d921211fb55721ff22fecd52db65390156e6018605489fecae275c47b2053b40d4e9ad0eeada05c3f58d88df5cfdbe8121175367ac8a8b7802d682436834c4ad522682bdab8bd29a1e728b14d88116afcf4d4a56322ae874acdef158097066b21267904a546b93752be6abfa08dc39507a9b54e975618a3f6943969825a328ae0ec36012e4e8677ffac458a039bc426b2f7c47ff1aa471c3a9d6e3261c0569951883e3970ee67a3f8dabc6ef4d3cbf090f4febe6292b5c1a7036e5c935765d593829a1bdb5efa24deb77b2204e3740bb24c46b76361db0d62b13344f66687ebc0b96b68429cddd04ad4d5a3bbce508e6c07407ad4638bbba7b6e09b11e30dd5e7680341196eaa01975022ba9cb47b740c3b6ba666d0670a4a681235c7b07c73f861ce92aad9f97f689b960991568573ae8e387683cdde38857b09fd8c1297881fd0a5643c752c8444c5128aa4c08d81589697958d10193750067de025ae1cb48c412eaa9278a1ec4f18b0f985923742e3b78585a50587ec7039ee716e2501c25dee085876600046db8f0ada808f2c18d3d03f1d3006dd1226c2eec9c1611175056e054cdc7434f9e28c1dcdb06dec958c5b735f56d3f7d5bc7b78fea5b97a64c584007477867c482fe0673ff1f601e0262cea1c3872a33ce1018bca68b7ea6f61f7a52edb3138bdeffa41399514725bf7f07255f87237bc3c3ab8ac81d62d0ac8327f0bc6e6a472ef5294c3e57ffe0fed242dfb108692c7f804404e04eeab8fcd728e7d24adf5188f8765fb2e19b95b0c837246bfba48d7ef3688803ce29a9e718b041673e52babf69a7dd2fd0c6ebe512f77ed67d0f6e736da357325e7375cee621458377c2ed465842879ea10078d401e7d7e20cf92e18680bac28f1f405d0fc483fd09a81cca8ce9e29f38585746ba25887bad268812ec5f4fb14bb4b709bdf237bc6fb99c0d431f90054cc7400ea6c8eeabb8c1798008749002a7a47038ce5d04fcd10f73eb64899e931b417d084f3dcf018467992a636255b7d496120cdc36f8fec5d7370f27e0377b9beeb977ec1fae36c304a3afa38066183b2ae7d10f2c1e7eca7af8361e14fd4d17f84537e151ac19a333ea299df1043e750627c5ec17961e33c67280f7f703390c7afa8d5c71b4478c293133395b4fb21375f435ad17f26669b670099564505347f2e2b5ccc5e074ec51719ae29a5cf8b3585142946a02dc20a7a054e568f8a5c1b1b90ef460a727939aff541c8549b12e3a0372617841ccf281f794db949c816f47439f12e6c3196bab37db4092501eb17b02c59f5e3a291f247ced72a194ff57c8f211d711a0daeeac3f09a3edc8cf2748d431ceb07589a1c3e07b95e2ac2f41f1edea5b21c919ae1e9571aac7d642e4302c1d8e1c9cc8864b3631fcf1b8223b1a078146d7c841d90b7031337bd71c5d10ae9156ffaf18cf5966fa44213d298695dd2eaf817845d1c9b7dfc402dd2170637719092a88b5edb94b0baee743487b2a86dc4ca1993d0caeec50e6037f6c3b7702748fb2b5763dfc31d283ef32cedc7fdd71f72675dc04baa9fb7afc766ef0f9fd8eb166103bcfc59de58b9a2e4799a70f4faeec71c5517490c2ded879bb20510fc493eb52bd77e8cc5fdd68105267e682917441f2d5c52dae4ed0497b8f05e5db9bcc87aa00f9fb88e246afd32d4b7714961307d77eafbfd271f6497aed0c4f7289c8b6b869f3f516493b9b880511293bbb47b4dc5e9fc479887e460c90d58d286e3dc6d58aac6cf5a7647f6039c2e1e2dac7c19ffb7ece0f61597286e6dd7af84472ee53f32a40a97177063908ffd468116d0eee22aa7032a6c03419b0a8d5ef39cf8e0967ed257426862cbe219bdb52e311af4f0f97b8c937f8811e642bb6a65e07036d148f408597bb4800fbdfa5f20aa2f891a9f53031660a40e5aed93f761a17b7f99c49d7efaff99a6d092e02b4a2a6c896ae9f079f5d4a68e5b04c4c1f95d0221c77bf5fbe4528a2bcaf213436ac9f4040b1df75158892617778ddcb4cac173649d0d2ab6001cfbde0e0e110f63d8396a37ac1c37b829c6174fb5ff65ec7f0ffadfd7c664a787a8613c0b3b3c5615cc83bea2a8578b4232e15f9913fe5346455bcda8600738b26e41d55774b9b9ca36700b0ba3f2751cba470b3dd4336dc61535ae9c95333d362546899b2f86c852c07dca3eee63e16f4030f904bb719c2bf9e05364892de2570a56b09ebd41be8a555571adbf4127f387c8a8e77996bff6736fec694dd8d94db4ee27b069a26b2631e0903c83217f323033d55aa17883a9de86bc068bdb22470aa725226ace316bc324c682427a181c8e609f20386348e26df5e05e171bb7ec3ece61f8f2aa43d353482416f7b389c6302c0d3e0ca47788564d62bc09884fac6a70a905d91fa78df52348d6eb74b42e79faf020d9846cbf533126bb6fce2df31ef278fa1bdcf9d5f0487f8b90491ba471f972191a05971384fb03eea136174db7c525396cf5c4a63d23c461950fb1613361013d511845b81c7b2aefc6869d5586ccd1fa442fb2d2f74f0689a07ff7adb5c977c4f6bc3172a44bc84c9aacb8356791137ffb19b2f52717818f409cd1e1cbe87bc83642cb196412a36a7a0b590072c84769bca1b0e0be86ac083110874bd0c82cbd6b6df212b23d97cfa168f3c02107212b7e0a93bc45fae3122fec852ce6ae112973e73f8d36749f3cbe6e7642b6c1e04bc03bdf26112f7d0e590d2385709cc67caa735be42964c50fce2e286c3d953868336445e83bf8382d0f535630ba913163481818590b0a2c21edfd276f28a0874ff9d8c78336acce441976c551738b654ad510b3a426e8f4110bfdaf3161cb56092b8b4e6dc4d5ce0525cec23ed5b80afbcce2285d62ccc20fa85f93815348dfc01d893a740de3e69816f49c655b3da7d9553f963eab00263138528667bca17932095ef86a2eb855f99bdc021e01b7803d0e252cd2ff1a6b3833fcdf316374d6130fd259269b176d94f6a4fa4f7ac2e96fd03fd1cf29f67ea4384f26a64e4de2176e070832eb7f5b3c59f23381bf62e95502b7dc559504367e2470f4f3fc816902b306646343095b183f52fdd7664537fbc9b29f1da55b43c20c3cbd98d10781f10b2a205b32fa116f9b98f0bd1812513c0edb8e3f789b479a7cc847ae61c593681b0e8cb08221da4632c47569981195983796a8234623791d9b10f4766a22b7c526a766015624eeff5c75fa8edf5949439806f7f9eb6d9b31db7c8bfb2561db1cecb1518dff73e95c1b92058de9a1cb5f7a7223f311ae3d795d4c555948baf2dd905b5243427c8a5707f5ef216968cf701fa790168e098bd8125b114b8eb8eb8abf9d12e3ad04881712312417b3576faa727b21eec6694b9036eedf1b255a81eadfa2366c93b1d7043dbef527049f965df96e488c37f8d2455ac11d40051fd189e5132cdcfea22721467c11aae610ade47d4b8cb4c42715f88be67324fa0af381db60e6accc9d62ddf007b22637ea7670cd54a7a234670cf0fe8f14ae4506788b8691490d537f42fa386e316b2619e3e5f164a56c3a1ff1eb5827da1596c7146e3ec832d671ad6f291706bda418e0133da441211ef188b988a4f0cd095fb2782a0d9cb68cec74c5d70822b09b3f7668d2d6c43d578b01dc4ba517710b576e524ff16dc25d33e633b10b79c04ca1c73ebe6de02d3ccceb2bdc1d4538cc1baee4e670410ac12bffc5695ea5831843e4a34bc414eca6011dd874256fe2f788881b86c4ccea0a4e375a0bb4c00bdfda952b4ad7267e9fa40cfd816f1d318f453395de07039d75481234514941a51808d9635e30ba10c0af36217dc12e4804611e73060abfd24d5b6026f399e4660333f6f7ad8c992239bbbb81061c8af614dc0434869ce888b5f1cd22bdb8ab4d5a3b9a794cb013fd8d1f7219aaaa817d1f713950673a9bed317aa9ce65f68e1707b5d429ca5e1c881bb5d469c85e30bba005599e0624c4f5e102a98fa6c80835641683218320d1b3b8acca9b691717614f48f9d9941148d67930af10b2c72be084cb8784bc6f31c65fc5c104739acd8fd8b9fa4c61c37b0c11a0153063471b3345ef15e9123ca4158de1707537b1f1716b7315dc2ee15dc73b41f82a47f8a68dd2750fe30bb6f80af72a978c9cfe2c64691616eeadb3457aa000efaeedba1029e8ef9e614fe91e58d31fa105c008310e3360dc16361ada3b7cdaf7802ff730a2ed029c610a755c9545e23c035d3a42415c31c8c961eabd5bd8a3fe18737b8025f6838defbb043f802540df2f216bb626efe22b29909f97908f767a9d5d55407281fdbe84bcb73571a1133b09483ed0b34b4867ce2d9985aee4d2f31ecf7195823d0c1bf24ab1e75d084b64dcf920ec49741f2fdb9b2e6006ba02385181fb1930baeec3651b35cd95ec9bedf37976f0a90deac3381b9c188313989de650afad108b1f4e6ae1d7447235c759cd0036bc2c1f2aded3b38a5d6256f478ac9964d77d07f15eccae29cf725715ef472edec3904bf7e09f08f784b0a7232ea61b0a9ae011267289a121e1304812324bfafd543389dfcb9398fff2c7b6a792e8f065789a7012bfff0989fd8cc47fd3a87e646313a350457fbdc5c30d39d9628b495e4cd416311f115ab4b1c38d376d48cc5333e6c051ffdd9397ddb237ab2c0e6929979586f31f4f69892b2afa19e485491ce0d97f7879b2af4418d99e167b6980715ad237780ca8c0d79b79515fbef0474fdcf58bdfc834f184af437db08286414fb3881ed23a1edefbd51dc010f73488bed5e3f4c25f5660fb31dc22c9c4669bd6e2ebb70e925554135b50fc206b610af953e403cfcfa0093e3cc0bd6ddd95893936efdc31da610afb47f2a6a64b57ba6868b8a051c74cabc13dd560bdedf092cc31f7b75b6f9813d05fbda720b065068beee2e53ada1169fb74f922d9f441c4374ad538169b3998e95c801447eb113372fc77bcee77834715d000e827e0a78e3198dd4f845b0687592cbc2c3f5f3861b8f966107668a26ee62ffd37e9fa5a7871b482df95f922095050fa0d05c791f0207d76a5d8a5cd948ab0754145fcc2b5e8ec2147c5fa43543dbce350fc828af248ec43b0cbd2e9734a42e392111b88a1cd6a3912361f907c557a478bf01704d446b8d9c72e0b3f7a29fed225fe008224b3c71cfeed87c83ea9020587df50703fc2adc513bb2cb55f5212162d79088d19a75eee00da3d256c16ccfe1b24b25b6d46a3f349bd83b8f2642112ab5ed3dc04b364a8736ceb8083378c3eb8f09c7450347ccac18e264ed57b48d36327ba185dab8a8bd3ee83cf63bc2c9495df1482bb0d030d92a13625ad035d76ce8975477fd62855480fb620c760478f52a3704f1b508205b63560dde83e1870fab234d77e998a7e9c67390ee1339f3207032cd122ade94aa6656cfc99520ff2b86d9887ec44b1ca78d994617476a08f464afec6e8159eb429f110df9642b29df4e28a6f7fc6e76312fb6e80acc12a37f1ddebbdfa131fcfaa0e08ef713b411c85c14f66fe61249e503d10dc46393ea56d17f55ee549b3c90e9bde53f86c920885751f9b7f6ebbd14c0d07e653718d31b049ef155a5c6e3c6cbb86a7bac4b7499d5f90bd78028610e448ad9536ede8bd83a9d9a4ce04d5e749a43812e62d14ad035d831be6882bcbc7554cb2bd7fc2bd7b6ec4c037360d4fa45cc3ccef1f7bb8fea3f92292e6306ba3bf85ae1b3bf04b3f4adcb3c68d469f42fa316be67165718b16310ef4a1adbe7c7cc27396f0350a3361b9b7938756aea161765eef010f741e71978b894dd0be387a49cc64a2d87d93d44a73c58e65e199133ff261df74788231321fe0ecb855836f63568c90fe28ad47da3bc04e59426170ca78d0435c5fdcc5331e7f10d73ff572d33db72fd7709ef3c341d7892ec03d89b8f7f113ad6bda5bbe0bb3dc24c66b804a3082bb09c687cbb3187fb88d7f2553e0b91ad15718ff0cc14d1e5e396333e66bf45401eaae7b38516185614b1d2f6e191671218ff0e6f2f00d8fdbe1f0e4e8731d9a69c50a7ca3765ac0f509f30123ea82476ae1c2d077f812cd420a47c43fe0161cf6f9ae5970e818ce6b3e639a0f86b57ea14b05afbbc8ecbd64769f94e9679af8652cb98548862eecb58d3dbe4a179e0b545ccaa3b5d8a7050e2011078343f832c996457cd013e6d218d4ff08bfe30229560b766a422f848989c6d58e2ee15202b25a50be98355165232b3706f212bfabdc0ed235906bb46b16960b07a6e0fb78c43cbd678b2406ccb2fdae0875427225056e45b953c51bd83e5d6b00770fab78c46f7799dc1738f4ec289b0f1f0e102975c5aedcc864277af9f50902879a2e965302e799ae146f2861e44a794049ebf94ab945584bc874de0add60526c435140769a16b963979fbe80a02becf19036fa4fc325e4ddcf2f8f0ddd209fc50ecd4f58fc7a355cc04096b09fe1500c3bf2c6db7c557565463f9f904571141ece565f99c27dae6ce1142a7e2d1abf00d4164db22c0e82f7ac2414621e8fec914b5c2b6956aeab05f3dfd0157975e7b0c2677c17bf4c69a2f63e97b9c74ce648ff704568379498edfd5c1bb3037b82637283169e33a2cbef0b5af7395adb84192551721b8a4132649a44d7c00f74c02ec9fd3b6c30c2a52c4b3dfc555375511f5d29d1427dac0506330bf41102147b71e9007ef508aff9c54ffc84144f08d5f0a387faeb5f3821c4763aa8427dab172669e1813950b817075ce0933c0784240ee53d77b9d9d527054a0e63d5de86c3104d2dfbbeb9637171975f239812f6243f49b2a6906692452227843d899d04d8ec5ed2ccfd21b8f28723ad4d5a21ba017853c6942f072bbaa0dee292d7ee825ea4517fe0d580cca3e1658d5b16fcfabc214bcc9721a733b9827a93abd126c4de5d81ba315360c7cface2a2a515295c0735266c7e254533ce21ea12831c7e818819ad2c91bf8938c7843d499c7b46d8db43579cc0d5a6e4d9e3148cc8e96f36ce2760da7aed5aeb937fd0baf527d2ad7fd0f85469fc78adf1e93f687ca2347effef66cb50693cbed6f8888c9ad71abf29ef2352354e343db2dd86c86307d6ffc6a5b2fb2b67fc2ffb0353c10425f7bcec622f5c469a7c01e9923f4e853e591b2dc840d24b7f937f1fb7f9b7a66cf1340726ace0347c1dada0ca35a5e2b6986e1485ee86054f9ee7800fff47e02a8c63d8c61cc18984177611682e80457733d25c9397cbf415d88b58f3bdbcc51402d2f2deda512edabca578e30a7d7851834eb036ccd68866d8c5358b11f69ebcc1ce14069abbdc4c66f34771ce0f5777cea04e8489f1078934c8657d8c56ac83c6f9dfc2baeec149b4ed5b0eab45be232a6e15d952c6ba70dcad882900fd3ae4662dd92318e101d595d20abd87d22d5ed685a5d68e3a70fe45ded20249a5627b4edecdb51d677773553077f5bfe572aeb2f8545647e46f5eb99dabf0a6fdfb6ee73a0a7ccd0b7ce9f55cde44fbf75dcfb515f89e547ce9fd5c7e4e68b4d58d0bba1c9d1ce85abda02b111774c1e72eabd4fc4b1774ed8ccd0b5cc6b535c297acf8a48be2a31ea5c5f292ae307f49d7c75fbaa36b27eee8daaa77741dc41d5d7bf58e2efc30b5bca3eb718907d460845c8a7eb68d1fa205777985db3478474af7618cf32cbd8a287f2f976c0d3780da852658e4fadee2a38e9e96430d3ced8b1e2eccf932157147bc0dd182341b0c8a5805b081fb781309f859c6b1950e1fdbe06d5da725aab59bd775ddeb9a452af43ff58aae3661ef9b0f796cdd242f452ee765eae909778266b7efebeaffa5abb9a60d3dc6bb89eb2f37bb4ec6e274101e140281e07679894d348b7c9edd9125442358c1cebcd518e31202da903874c75d96c96cd5bc7909568b18cff128a3060ee3aaa67b193706004d0963fff150ebb24ad3a7edcb6dd9d58fabe56aa5ac9612f6726776a5ac96a7a558b86ab9858b95196cce7677105a33ef41c94e51d70e4b3dad4bcc121fc6a7327e776f418fd012832b5730664c3e3c9853ad12bdf265dd1bf18e31216dbc2166e83e4152d3b51b896e441b96e7725e40815836b1414825f7696589f19a237e3277b0ec4048aed19668bb10a81bc0a61187783ff4b3ab5e8efd547788d3c843bc006574ec6b6312d208c7a42159ebe6585ba6f7b8f1ddc548bc19f0363ef8dafa6610c8510c2719b9c6cb697969e7952f7afa22e588f5fcdf120beb181eaac77b174ee203dec59e1ce721315f8d4bfeb70969c993ddbc7af4242bf4492b61576afcd3e16e1561d0963aa687142473d739e66e7557086e5d61ee8433f7f5d7ccbd3892eeeb5719baa67fe668e3b71cfde0baafa770f144ffebb858357ee4e2aa29b8d8072eb6918b1dbccb38a7045c0a5a60417fa106da25ba056eff660c6e5d74859718c513eebf2e695591f446964533c1b333725cc45a91bb61c417e382e49afaee9286ffe63169b4cec6247fe277f3b416925dc04bc30e97975afd57e8d4da52ddd198c00a05e1df211cb19e39135cfc600814ab6aa68e005e5f276caa06dbe2b99e0405297ee32bb06716d0955a2eafba52457325fadff86fedff95dbbfd4eedfba03ec332780d0fdab5780a5568e01a14d76d29ddec5055f3bcc3fd8c2cd6a87e705db0a03c762ad2ef07c8556d770f7aa8d48d7a77bb800ff013d3acf935f95e77cdd8e200dc3400f61cb0bf523fb0b1e02f39bb001a0af9b7b332dac1ae5117c5bdda8a49086d7c495577a4bf10cfcc1071a42fab7a76fc13c6c3e4214764d1bef8adb74ff0ec08fb4f09e7f86dcac93f866ff6b665c1547d950c157b29614af0c6787ef94db65bc7f862ef40ddeafe6c20a3ff0469ac52b88ed2e5019f6e619e3c9ffcd46f60af27f3bc16debbafaac99645064a0823d7ddbce26e102cf1609d3750f913c32f560afb95f4367b9fe8697c7aeb81e2590bd8b7777d927dc234feb41e904e6cea8cb2bed0cbc3d010e9535f066c12a977636dbb72fece02d6521f3285eeb9e336539a29f4e617a8a292b612fcfdd788a29db10020e010035f2c3b6b6b86c7748c88696e068f692e26dfee3c61b064a7007cf9479d198690ce361ae5e31eb60a11e7b3cb0024c6b38806ac2964c0bf60f9ae4889baee26c051ed3628418782cc27c7c5310cb6bfe1cf05ec78757fef4c6194960af95dcd3da44c27709db3531055ade7ba4243130b8969390047620b94a10a948474a06e29bc495f965e6ef888c03f608be035b0093567409db8433981ca41f4dcf7894fc1d1eed541e6d7fe6d166aa20963cda223505d8c7862f120b1e1d29a68d71f82e6115e36ff16841cf9894b78ad6d465d04b56874d6f1bae6222ef1be889796a9ff1c8ff3b3c82a417b8c6bf05a9d74db2f99951c7b6825d320af304f0326abc355a306a4df71d09df25aca0ff2d469dce19959f710f742b188553ee1f330acf491e58f8f43f94512028c8a9628e531e8b588e5367461d5bb37b9c7805883e6da937c194a515c8fa47024abdc802d83d4b6431b4003752b08681e334c371dacc3280ee0ea64f8847d42051fb81090043b3c88e5575793d35db500b58738f2be0620d091f7a05e35657f67cddb3cd4066f87fd8adec3f4258eb456b9383fe9cdebf692ef1eb4fdd155c03cede00a3e75dd9663ef70a8e3ddc7118133638e081c48ab8b66e05f90ee200609f4b59f2a1dc87e163cc65bd06c765ad8798d44742410bafff41c8f4b4526923c36b64e5b768265cb8ebdc088a585dcf7695c4559c9b392fea4573954c6efa33bc150393209fa32b78ceaebe6246fdf27aacb3bbac98616ae94d33e20a3358bf45ffe33585d95ba689e8382f79a4c4f4f08ad8e40a1d17177f3de06d8060eb59d597f416b084fde6163079c7cb869223fdacf10e54d82063dc41199231619030d6bfe634a646439a99d31861d398cd7c0f99307649b4575e838d630b8306cd16792cbdc8ea4d2e114b5da1a4f15b4a2efa98092a19a3a0e225ff87a74b99bc5f73d173f4aace0948e8209b290b5f2500ac20141b730fe8c104eac212dbe92e05f066ce897dc344d5714251b76ea9b6a5a07132b00961552624f3017652d9525e072bebeda948d2f7453d046c857a75f59b5c808ad87ab408b11ee074b6b9079375c9c7c16eb5b42e3b1870cc5c6e4945beb2250533d190c7fb4ad41363b28134f72e6e4116e0c6c9588f29def28f87485634e08ec0f39af99833f39b741273d17cf81417fc7fa68591b19de205ffbba9966e867077a81dd10ee4aeb878bb6de773f7fbaf09b417cd80b7d7719a7eda6e3bd2b170a3870a323091ba4b569942e76037a2e7d0070439f8f416baad9f7e1ba1bb6872e27a4e33dd7ae95660e7a5573eff14cba8ae17a66a56ceabc3308b97546f232b67c84688ec5541363ac1decfebd13843362ee8fe4c45f6b6625b44b6086e22bbcf908d174d60d69bd3dca44c1b970c2e9c6fc56ca7893b1c06999cf42487eefd8116119d7f1bdd2a48d14db06fef4adf26b8aff5be3defdbc74e2f21b24744f679a48f886c771b599c21fb40649f0ab28f04907dc6e7c8ac486fe47af6bda72b94e3ca6d64c50c9985c8be15645604c8be37e7c8a691eed92ab2d99ec688ac701bd963866c8ac8660ab229229b5d20b34f7a9243367fa04544e687b7c72c4c91d9886cae20b371cce61763e6d09d5eca615bd0221537deed6ea38b33740e457c0baa2074280edc825e8c9c4b2b7a238772491fe90aef1fabdc4659cc50ba74d1ac727b6f499d666d96151f601e2ce93e3f115a64450b6c3957917a74453778e561e336d25a28965e88ad34b122ef675ae819a235a3290b3169734d777a9443e9d3223d224a6f7313a5bb4951ae054a5f45b906d6f2c2f81c65400bec944319d215ad21cae436ca4d86321028431565207a195ef672434f7a3d8732a20fd4c56b104ab7511e33941b813252516e60fb9c176ecf51c634d2970e557126744f3788b3711b672dc3190b9c898a33a69181859b739c5bba34a23cce1d0dd811717ad1edd18c529c5bba68861076de51a7b9592a2f2a903fb5a36543cff072247b7ad20f79bc07fa401f106f741b6f90e1dd8bbe1ed4beee057f0f97fc3dd248afe6719ee89e3ae07491d36d9cfb0ce751e03ca9388f82bfa74bfe3ed0485f2cd0e3ac31f8fcda50ba58f5db181f328c0f74d13c75b516a952a759ec66c511f0b64a37e7bcadd102e3ae9dd2cf3a5dd12df67311df5e8e33ac35d1cfbadacf9a982ef5cbe9e2b048df2d68fa19a8057b607bd1cff036c6759c6274d8a219cea1aad3dcccb3e2c810c51b23986758fd395ce790e811c6aab9898dc9cbbbf8ba85691252321cd06aecde7886ea05f4b7ba8d2e141f0de0f08a9d8c12dee47e8f2f564607ca3d03ae1d9d3b730cd197700bdf2aafa8b8d388c1370974fcb402ad8bf78fe97b38d2790043790439f0471ac14703584cd718ead4f1d29b80ade0a200b66360a25b3e2ebcb2dcf075801b56a447d0e1b86745b09f260551fae80bc700e2fcd62e107e630019943e8551b12aa2b8982b9e1444315ff3a11128fef043d1089c96671e5de069c54494ef3bf05900bab2d1092989f2630837d826982bf1d110c55bd94c846e04f536a29d98e2bdda1e06b61351bed9a4e470ee96443157be403c8490fa7551bc7de2def7771135d364891f3be93a51ae9148140710495b51980c73e2db4a6e397cb4d382c0fa0b08d40884b15d9c435ecb9a1e206586256c8b73c93ad90a005b62d67869aeb589f16c282d9705a70a30c3c73538025ea21e9e168c205bfc7535438139f4f05378f0b942f684df9db734931833687f697221633508428d4fd0af095e27061b161e243a65b4c341e085239ae1d365f997cf7259841530dd0b3e99819754f77f7721bd4b49eb80b755dddb7cac601e744160ef0d4eb8df4c20999391e3143ea46572ae11937329fdcbcbf770b1e9e4ff63ef5fbb53d7957c71f8abe4acb15e7437ecc5fd36fbec7d86241be21042082184f43a636e8738d8600c18733d4f7ff767a84abedb5c32e73cbdcfbff77ab1669075294925a954aafa15a0f4b3d7c2079f61626830faa40eaf37c302a88e5e8b4090b6c558146e852a61c49c8ab6a634905ae38bb6c327e4b68d61e09af8d653661564adf6f62e65e79175b90c7a876dab2e0b53d7b6fb12821b9ae9e03639777cad08b11cd4dc2e44a28d7b1be10baf4df22d8c514758d68bd98c6a2b52c67fa0c6db50d10314f50c6ea129df3a11c94229b3d043c5e78030390753c2252ee9f3e06917db58acd52ff081b845dc6d749725681e453873917c2f942413a548378fd936b92b41649411f8f5dcbdd5916a39db26ed0e1a65aae846e47a476d26b0cddfe768b8950d8d37d322dd22cdf3661e4b7c87ed8e00f4e131d84c2fb9991d36c38e34e7884d44f88263b8e80fe8d614707a666cf5122d8b06da7b8027795e8209a967c8e592670448662ec5eed8c39ee446a3ee9391528094e104b412af0f229342deeeb23d3206c37731411f9fa8e077a7098c2e0452d7d211933f2685d6a68948af24071a2eb2060b2a648c8316e5cfe9e67afe54047faa3e7f6e7b3e631e1ed3397318e54cc0911628efcba764ce9c0b8df6b3cf99d396cf99880ac64b7b9c292c5f51e58ee8355228934c940345f005f53077956915bef3de15a4ec9028033058b97bd961cf3869ed0975d0c930e216c9653f8ddc8b5786db33e41894749423fa755284000b5634a1e4e1c8c2950053895a9e7da6c2614370c5b6cb543d65791f642a456452c8d31d50d30e57335096e09e50a5b5d76c8bbc4c591e209d08c234664764246f758f0fdf041fba9302c61504956bfa464cf582928292c888f9fb6d1354da854ba39a3834c9a7231f7d84d0c16a74505431f8881ad0e86654af7f0a611586cf4e009af87041a4c5c488293b276091b37c41df2f88bd688d7c37d4723b2b0207b1cfc39bffcc1f308518964123b0a1958f6c97b46c09631afd57c665c371b3eecb1242af4d845185aec5a6737eef4806977bc89666553278283909265cc1019db3c4010d67ca5f92890fb9095ea7b03977886c32cb3ed37c31b966960fcee7169eb5876052f35a6d05acc08f547ce172481e0d2ff8f6da83873a32aec1d13b5a289e48d726ec28e7f991b2ed54651cd015bac94e3f22e33922bb4e4d365eb36352935fd0477bab066035d00018eda6d1924e3bdeb9eeb5ecc816f80ab27251388744ce51d8f9bab2f710074626cca41521961ff0ad548787f02d9dc3fed047a0099eda27b249d134a98bd6df5bb00e5bcbef65956fae96fc028f23781256f95eb890b754bc18c5bd99ddb9d0084b8ac5936a400c34b057d7703803fe5b8f87075c7c5dc2de96011bd1e58bbfc6560242c00615796b9a641b7b9e328079ed0402b7641cea22e9910245217393f0fc72618776165a42eb8fd8a3c1891e1db047c323f66899d4a34487d3af7622f6ea3bc398d510afc36a06fb538117b661b58f37142e35a9b9118643c060046263de81f24205a0da0a3d20c445b64d94772b8182332effee5edb077ce504477a95b0d642dc16ebed6c911206064cac2420190e007156c2d85313bc230f6d08343edca2916bb59f5588de6cc8606a448619d7b79a0fc99455444d23c21e453d8b054eea5186fbccb69b389f73bac2f6547b019790029bccf061340030edff6f4caab2c99ed2fb32e2b77fa4a08c350b4c0ab72787671875a16849ae84cfa2a8648795f46ba1e158412547697aa21288e98895cc40f2ed1d46c13aca8290fd893a202692a8648e4aeef13ed49dc980efb4965c39514b604c3658c9a012aa6431407723bd955ec904a65b545314b4e8ad60353ba866292f4f541318da0c56d25f862a0147297694f6272a0974688edae2e13e54c9e405d01ca4ca894af8ff4425c62dea0ec6c13ae62f883890bbac377924a49f0b11b279c1de58b717f5a62e7a63dd062b29be64378cd94f39e9900096b83ded95b30d7ae56cd3bc72b641af9c8d30651c06ad85e40346f643573f4b3ae04e35976a9f2763b2b4823159085a5bb5ebf0ca5fa78d6bca7e021c2b845a6a57c0a9189c2a4867d505b5d2026f88bde34658586ca8e76dd582e581e13abb05c82055f835f5f688573e29d6e521186829849852196b9c49fa845e4130e244b50ca42b43a7579506d4a80ae276cc70c3ef308124d725a40b06632a7814f6e1e233706dda5a16a75b42d30c043ee775dd0a4d5687b04f827fb6097beef0120830818ebfc074fd07570b473adb2ddac8d4b7484533db263add239b59db448f81399d33c3748dcbba224c8eb200205d40e47c59b6510e5bb585b1af0779976d9325ad898848db645f1b6ab08c22ec21b93cc83fa0dfc701b4ac7b04b56a9787881104112b3ae448c56db5226ce23a61e3c105dd6d852cc910ff10181664c9715678b3cb08f7ded9074c02314252bb85522b46178252e89cadb801c83c5b78489173129add40d6be703faea0b14cf9363b261df082bf57445af5161c86e1471fdce973b4e67d42e47af713198b2f75b8ac0e31682ce817f5266c487cb85b4dce287b860e201577b84370a945b6a319d849e4256836093fae7b4432dcf31b76eda7371ceb1621259acd53526318246fe9d6aa066b9d48453abbc730a57c6831863b38caa25b421fa28da2c745e2b74adab776f45bc745dfed23ce8fc04011e5d81bbf14f35b7b457a584fbd276ca2c2ab8dac8c5cb34e4e4e8f30c05c88fdafc3b612e8143a60a3b64303a20682ba432c55d239ec7077b2f0209e232f1c77016b2932380012dbb021de2b323b904f6d4472451bbb3d9a34740cccf380484098b8a37bc52b08d86733d0f364db649843cbbadc362e6866b651797df9ee5e39d9cb0afe1e826e0f1017649b2e7797a04008a822cd832a325cfa44771b2f6889bb169014757e461602b150673b5442022c37a9612ffbe14aaa0f7c650032fd94d6fc00eb06ace01a359dd010afeeb8c4bc4426295827afcf7d008cf9c88ec884b60eef1046de89773d7ce39ea4685056bb8838aff051f4babadaf9b7eb91efd05b63c77d887eb0d597018beda98c37d0d1313ea978ed7169da51ce1cf3779eb8a036a8b2d8514ec2a18a16d381930c09552fde2802c8eb54ce6a6cca0071d0e5fad21e4c78e992f39b432fc16c4334d82dcdbd4731db988c906d1b01d9b695cf42b621f62bb821330b4fd1da39c836262741b60527b547d8db4489b7a301ac0c08839e9715826060f0e66d1c262bbff3342f44cbedf02d2b0ff9641d4cd095fa0b6e039cb6d61661e330a4f409d838d28dc3c69dc79df330c0064419cd94ec806de96d09a0be14283ca539357e39fe79505f5c0410405d99478034974a09bb4b3ad697b0b2c52a0ecdeca4c5249dede27eec9c334f48cc877d406276f3c624e6e23e2031ebfb44af41599980fd32230df05122751088f0d869eb78f083e415b0c03e7ada24b859fb3b5fcfdff906eb0fbf6c770d2201c866ecd3d2c55ed28550b35d8140471007b4bd8365042feb0f19532840305c1fc6df85e8c9b957bc6d6b843d4f441c378adba51b1d38ab822800b6f2fbf8ae938252d49a63efc68d84a935f61143f6f11ea075588dc637a8f46366e41d33e3d030d963043c5e2a42afd9230ec5276cf2908d05541c9232cd0b75d18c920a15113ac545611ccc59a7a093eccde1054d9ba3e35f9f8bc40dba64e2f1724799a682dfe34246cbe2037a3d018448677dc04dbcf08121f228867329421fd6b4144cae31d49ecf6925985c60686637aa7dc07210f128eb1f288736302f04c0a8d10ca4ce682e90daa013780319ea1a2476c18f921a90389afa89ec885d9c81280fc772178d261ab0791f05561d186f8c5c736a85900a86f22cd3edf4f465281ccbd34213f83a622d19f40871a0473bd82e17740f279a037ca0cc40bb369e1e85efc41198550042332cffea55c30fa3d5d8458895f768eb82ecf9c96995df9ffd8e494f0674496d71c66ca33e1c365415d5c74d4891bdbfe567feb5e5d0a7508b9517b8492d0e300839d078911c1ac51da495b07a872689c54f5011b5f430061b89274183c259001a432cfb296007914d52ffe45a33345a111a4c16a4a12c4df045012266e5e8fc16b74e1036672c27a34d7b950faac96628985e64d13e638d166ae64c566f157cebdb199bb68ae283d12af91fd0b27dce4af2bd679165b1998c8f639718b6cf59aeb903bb128b659adb60d502c5482146d3467f69a1f1dbd1bde55e5f39eb6d50ab3fa115643d8cba2686b805a0b04d82c7f7a0f08e729b4cd80306406aaf85a7a63063ca5b20060d2cbfd21e46c2e9bbe24abbe09a3c29e26cab6a629366e016ac100601c724b901ebf3401b4ad67b2151d0fa68cd370689a1075446c300df1b4ad827afa510581473da100d660471538c6233d3b223d2d2257ea7696ad85677f6093bb419c842c663bc8f176888fbd61ffcf272a4765ef4c744358288f45d5e085fa9166995a4e022455f108f6a2e8594fc4e1113420dcb4dbebd4a9a1ea93ddf45d763b400320048a944f75d3e5b536a80d4e3153ae45147f10cb11861c295e328387153a1067ecf8a986e44c9322217186c71d28202e57320cfc2f8bb9859aeb1eabbfb53606f295bdc3d716f9f310778931d719a3a9b059a6b3c08a0f1003b2d69112ad34a5859a98da0f541eef4d30b7437a7a1b665d2b2b1edaa687befb60d3cb7c2fcbcc91e219c475ab8f1e019d23b2ec2fc8b266f821acebe3d22e7181ecd43b1b83b4561f827a264b8c4c001d4b228c45c91e638825a0644249361de403f397b8843c782a7023839da1fe90702cbb1d02a055604b5088d6f8fb085394a110e2e5216025dd7db221af9ab0d46d677b8a5040d9a0e41d8ee8a706fab86dcdc96e232ba8a5c4a3d7173aafcb8095477fae12d172e5136ccc8f279140a47854847d49835522da186017b93d7502699b40ef430f26deb46a5426a4300434858cb8513b89d36f97504065e32e14cbb7d72900a39db218a3651f834bfeea778a9443c15a2e07ae3b3da96f8d4ea14527aa864e3fb2a4469412fe00e1762f794657be4e50d3aea28673abaa0648851e24c8a38f51d2e9fbf26169fd058f91925a38efe899b363ee2cd85d82e13d21263817fca224ae3e93ff93925e1625c711678afb1ec888cfb08d7968349fef844fb6f2d449e41c9841ad4e1f73fe951601a749ba2537df2b9a517f66a43c98cf6ea88b662194206ee70b918c5b6b389cc9110b2a3bb40de6f8f7086dac284ac45d27eb3a5243c2bdb75fc576940a4ed2e462c6da32a11974c3b23b2e4d2b34c9002451fa76631449669348b6cd3397ed30a2632db2d62bae139fc53a61c0c73adc8180230d1024716d9dd1dc211912d14157bb01810987ce88d5f8dbae3270803db5ff246bccc70eacd43a96d11e10532c8051403d1973e5a7fc9abbf8a75a016fc058a2b5efd4628d5ab5f0139b321ed9528f3ae997c00b7740d6e53f2e70a3531d92161cf68960275329d4f4481dda319978ec673516bc20171ee56b709f65bb3279b5fee6a5d320d04e4bacdccfca30450b92307ce69397fb24a3888e01ec2e9eb138651b6de384bdde56654343c2205568420329e37656d4663241799759bc1b0c458cfb1e86fbd3d22bfd8a320d0383ffe83dde90160bda797c0b08f431de52947cda68a72cc620881a51644830778f71f56f98ea72c19a899252e8149778f49e7f30acf7e534e1c1d85c888af8af0b76c79f45a1912f945bff57a253f0192a9804fcf6f5c9f0a5011e598cb746c0b70c3f7257461e91637ae61246484e08e4a8159731a1daf2a8ed760cb29943fa1b5cdbb9f447ae54fb7cd1121ea94e1ab5a0b20398784118c5dc373f709fb0c97ad7eba64f0b226e3646ca5a9f5c364e468940ce76232744ec6ba634b95e31905f82259011ec6efc39b8d83bb85303416c09ed921392a7b4988a442c4931d1a92b8b587288f6864a7144019499687141237a0376fa3603e3c8e7d826bf49cf95d9526a2c6872aae43c52baaa389432b3b6184992c2974052fb55230579d12f69496c96d7f9536ac81f633d0fe8c9644cfe694b0253bd73383927dd3852207f58d2ede15c0109259a8a35e6881f9606088b8a5e8a6337266f03c067132753ac73d7e250eba1691757ed0b51487ef04b772068379374080e85637788831010d002f284bb80b836d10d1a90e8ecaed0a88fe13afda962ece4f88e08ef07b704822601fc2fdf2527d7e9dafc2b6d2c1c6db47c443d0e13e2d152d045b055e98d21ac868728ef3e26d9e1af7d936e90988a63c6ede7dbd9478f15c228ab4c566e23674d5ce89aff65380601e6ce0cdb9418bd8b3a37c62cf2ce0d9af2c3ebda0474e33eb053cae82f11ade1f8e6802df16961ca014be9b8a48a5598528a044ed0a3d75a47b390c0a246249a140d42b60807d1181ab8c033482a71e4f715c5bb9cfc8f0de9280cdcacf313d8e4a6c0b0ce07b8027dbdc79168bee4b611e6f16a32d9881b2cf32b6748b12e51602c81bd26d116cba4becdde773815e9143f2315655db89f43b704fe9ba8c27cc033a228022a2238f2c541cd9b48823d04536d785400989cc746315d6ee52db51f4177c2c037b380d021c7b5389bd46cf0a011257c799142dbd417479e1501c7a0570f37d7ad91e0a0b31effc505908516345573878782b0025771fcf9aee94ba221a5b4a7a33e179163bffcc737c2ed0532385f1ba44814027dd3d0ea01e64ae3a32d7686a8b80ea09ccd50148b10d35218f7cfc49cc3509bc43cf5096412e815b80e0af3bb39870ca8cf8256623def815cf5b122c2ba1f91cbc1ee485895a340f5859cc68ae098a7de5b190d446fa398a55f9e7e8f4aef4857374725790b23db6ef77371007e70dfce224a162e08273a3c47ba8a00f581937c251091245d0dca0de829d7a76db0020315bb242c9ed6a57601188dcb781dc20d189d8fdf03fb433399484936e0955226093d3b9cbb6c91da94324a4565d08ccd04ab341eba854e25708654a1b2571412ca17e2b17fe8d6110de7325c141e5802e482f43967822be1ab5c1ea8ad7352b638b26467e757ff7212cc2c717ebd685b9d3bc8c8bcf12958bdf5d1889b7af552e7f60dd8b3245e7caa5a85c246860dbb4a45f24dd11a4afcae855bca2b6a8df4d99537ef092fd175b900ba285ae0fcec627d470c1db9f15075abcdbb300a3f67dee7af6b80bd47682cb5ac94fc36e36f85fa398681e37a1655a7e0be80406753cc6f9d0728100bd1b766590c66ce626e77100ba0085dbb663995562525380be95e2a1488664433186b958ac7d4754b129e3b5791baa12b583ac80c6118d38c4d215e168c2a2ee9a12f6101775595e8c6d09e9c397dd32aed1810e466baa710b3bf39632f19c2111f60e61a854be8bb1778c6352c14da05d86b5cb3e102c372752335027fb44d02d5d747b026b51fe5c96e2efd39952c055c602a8ccaeabdef187ab039edf804236b007c2e88f7f141cc76c8cec4d7a761ecb1ab08ad8bb85c6308d0326f36de140c956c4e82547773ec3afd47576c0740107b3e702e55018cdc511da828b042d36c436147e8a2fc7e1647b2286f213f3b4a60ffa4aa850f37c3ad7a6eb2a0a20bfb4286707644a55cec2d3c04bd38e9634dcf90036b06f7e047e75f3d4b5569309abc89560d66ed16d01f80ea0180caa4bdb5fdb87e5afeec3e267f56193da872d1d80c3562199966c9f6c2561d25b2927596b2e9a2b3a418b5e8c198298c4aec03a03bb42c084bb17fe909d851acf61d212b8bb76a72cf8712e23d681c0c063843d20ea7562551009d2a40b10063ad931919f705526e65ecb5c6e31311a5127ab92d68becfa94b067e6075a606e9c107e6ba22ce086a28830192d5f4febfe9c527efcd94d07b75dbb1237a01d92624b79096ee0fd29887dea5ac98ec1e4ad12ddc9c593283bd2cbf7fe5a2bbaf787ecd967b7b8f7179f510e1d84aa5df3feb21ad5ab58f11035cabcfb3befb0c4b0126cca2285372cdb27cb5b5d04a4aa2445c1dadc1af4000e7bef08a5779b4ec64b4d0bbebe2e3f83598b25b82ca3c0f859121b7a510872ce54b0bdc89dda8f2ea9dc6e8531f873362158c644395061c36ed39299340b857eb64da68a08c4659a0987fd90ac94f0e47777fcb0b2159d968430cc0831985574f71795902d5b1469b6c5989a07795b40836f3142f714e363edf0dea9c138e466e20938db82fb4397bc748e68ac894e422fe231b85b1ba0e17d7d20948247ac47e46b30549bf5fcd28a07530b61a83e6b70b312a08d533a7f0fd59b02eeb89430ca8e5b6fd09015ebb5a9a8785212602668afe6d59c190879b0e0528c67bb2e895090781d9e02de6547d8074fc4a86fd1344ea005629e3aadcf2397b46389868a4d9ff07ed026ad7d33978032597d8decd1a68477b221612f0b0965941691dfa7f1e338255aa5920103f22e6faecda6f46586e0a207615b0b5cb0a3b69c028f9b26963111a447cdb83625956a487b855e1af09cc812c4bd04e3e5c2bba7887916b6c1ae2ac386e76677ba23a9d53718f6cdbde0c15a98900e3caac9d366443d029e5da4dba89ca38dafb7ed9e460b0f0951d1599a4d25018aeb7ede83f95edff9385335387646ebde43bc6d0d2c15592d5ab550f30148735f8fe925220d2c6044f0b16080a112865b2db94230e22df26592a3fb560cf0d7cd6f805bf59c897b5464b08d17040347d780f8d85e13753236568c6c936ce5a3517c22cc63bc6407a448a70c6168efbd9e4d18da11eab5701f722d1811d40ddb81972b048fe9e6b4a4ec4ec0607be385c5603ad3e3d8c1998a6fb1dd5f56514d38877c2eb23746836e936c87c8351a0c12f1534653258cedfb598568cdd528db66a624ed616bbc3004e66c14b386d66b27ada1ebd58035b49b3776e59dd4c4360618e6d5241722b6a3f50e5e7827e0ff1b893c39208c84624d665eb363726753172392c99ded2b3ee782be010348f6a6348f8f2cc2ef6089e65b33014fbec1e8112204c8e6086e49244f6dc13d4580cf70a432c602498aa09871f03c3bb8e8398114beaf4f9ba6c0684b0af2d771cdd5f0cdbc9d036dbc56450b8bf9da7387204c3fa0e519b0500785d53eb9c3d0d4797e98751a22b6e24ece76c843815e1139a593c3d08a0f994064c5ce54241a7234ae62b7120cabf8b8a0578455ece60057f431e3237c76754c9af848a37d0766e5ff9d888a6fd9584445a182e44b75867c2839b5cb422a66d00a3c1452119faaff91432a3631a4a29a1e52b18cfd0a855474f0099ef87590cec4f5fbfcef1052b1c22cba83edab8c92fc31b04f89c0f3b22e8502cf37e7f48ac8f3b22597f98fe65c2ef88915a908876fb3ecb9d37826d5ad0abb0fb677ab5d0116deb2e432b89bddcee5d2d6abb9559036d0ce6d5eda061b041c6c6529954228de771b9a418bc1cb20c3154b2ef0bbe0dd5c2e7e7a890d0904a0bbba5492c29b58db8cc086dfafe855b0e16d4b36f8017e3ff7a23db548bb26d521b12a359ec30d761a2c0c1dfe60d0aba0c33b965ce26be1612e97efbcc4920497f687a2540a34c867abbb6761f0f0c7e155d8e15d4bcef32a1fe7f2d1abbabb9730712715221dec155821d4de937a157c78cf9277bccaa7b9bcf5aaee1d254c3c48fb487b7d930908f18c007e6f5d8520deb7e435aff2792edb5ed57d5bc2c495e444da1b3498401117edbd685781880f2c79c1ab7c99cb9657f5a0246162515a46da53f7ccd13cbf86f70cdda07de66528e2aa250354fffb5c5e7840f3ea5ec2c49d34f712b525323219eff378073ce469562345baa7a8b4436836651bbe70411417a6d359079c32d726e85e08cfdd218c640e082eb907cf0532d34087fd023e65b531baf38115c22b86bf8088de9f3d38661eb20a594a5590db88fe18b5b8fe0284e44e2ac8291092d973107d17594e8f11a2af950a1e1928e01b40af3eb30a204d74496b70e4f37bfb12406d54949aeb9b3c4017143c3a8587e90220c65889e2040df342643428b9dfd2e963a8bd491c86514e8361eca6c2303ede657ba40f308ca2abcf97c030aa642fe5e504ebc9858cf3d29f3be2155d807454695116666870f5740103fd0b5042084490a21e62c10fd933dae588b12c887fcf063e6cbb10153d58efec21eb0595cf3842a706b6a91d002011a6463c3f3a86f5b36dd22ad1dc12dd2939d7b5e1dd6c2911a7e9d96c7ec20dbc4ea70f60238352e6a62e6c56eae20601eb47c50703f12be4545cf6255d944a070d7012ee2cc023cd6aae90e4fe5ed4b801456a57a80ff057caad570438e57759af46b92165d013ac6f8a2b930121923e452494a125923755a1b32be07d3b82575c4573c1de52645f576103f900ba06ee75acfe8150cb07d0c1a85b913cb987d778fd3ef0ab3705c9b1bd6861cceeb5b013398a320bf46ce82fcdd0efae3d0e14abb1dd5a4cf108f7390c8fc7e75b7901e5f08a4e1bbea6a1074e535c320c7a4cf4c85c7abae279b405ad8caec7259e816608f4b3cc9692fcf623208e644683400a0160c6068b838509f60a408d1d5b28cff609fbb4e35eb897472bce8091763f87ff84c2143b221c6e91dfe894d73834653a59c364b2be14a17a0282e8507f8d53e806ec35e06d44794d5091a5d3d8fdd1a143a0d76ea115276ce912768b74b5ae218b74ab8e30961f133665663ddeabcba93460dc7ad384e1b3059513317c49dadb543a07c9c39716a319dfeb5ac238a815fd5f8baf5f8c8c1b8fdc7cc07bccc09aa1450e1a900562370be03056111dda7d407f1234c6d772ac510f1817ec8f70c4f74b49a2984d4504e3c90851c15f9363201f7063538fc25b25d7ccf688d2483042be7eece36199f991c1eed3e23117c5de5cf26969f3a354f46436e2c3f82934ba97913626ec63e74a13d0ea2b405f31f39a5a7aa15af04c6f93568e2e136a498d1d076f7ac8f0b0f1eaaf1ed8a37db7435b006208054e0cfd74485677265dbd667b6cdaaeb115c81a3354a22c1b7ca4e7adc6b52f3d49bae4309024cfe42454985589d56a2606b24e84d55c53c2484adceb8853e1e6353b245d8bdaf18d26b5fad9e5d5c393517b2b0cd87bf0ba07cac4024d7e8e5933e146027afacb437a6f4ed0e41a7d4e1046ad62e25652784d2500f662a3694b1b708ca9c8cf5e0766ace280a0d848e94119713944179c24978c2f4c5bcc70f518b1710fb43e223b5997667c17b54294d77e15e5bbcb3942b405428f03491396bb4fcac2574e466a30447f29487e4fe6ac813dc9a5f46402ce5d6e4f0a57f0f6f53dc1b608be3faca5160689f48935988ee88db51462e728c30a626b4980513fc030eb2e7abd3512899f03e04c95d96cc2ef407be6d3bd6226d23d65c9742f0e9cd55cba1b570cf2e1ea41e66d8dc90254df2d92a3413297a7c95c87c8d41bbf92cc359059a448a6e392d922a43dcd44de46b99c428a54d8e9de463f82e135dec06312642ac5d5cb29cef1336f463fe6459a5d3066ddde9b6fa8fdc677cbed73b6cf0f860346505ae3539e95093ce555224f79eb22da063bb406aed8ac59df89731c01f7dce73b9e0c8fe40273c84fc8b648b3d780db6dab221ed6d652b6436e5fae78576bd5f009edb61a78576be5244ccc48febb5a7b89ef5d7b7cef5a67283ca2ec6801ccd5c6e0cb804f5d300be335a6db6ae4a58b39f8d02b9e337845e8ae715c51f17e829afcce1ce59c0a24cb156906e08c5ae0f96b43b738f3c7e023cb3a20e0e96f7ca01d8aa846cc78f3e4ba99241ec64033baa1cba68da0f106ec2becd1b4b968e650d4f1b1156a12c64b74e568c8ffb71ebb96329035c7ed4e2d005a68e7a8f11553a04fa0d129e26255a705f433a1271ec3aaa8db808ef7c813a832d6d4946a9cb39ef352fc010c60f0dc07307f564e3e80f51b52df97a77544781673be33b1b039746be463b2e866fd872c569267c36c24f6c2486f87ca636aaffa8605010b41ae0a60b036616f0d14ae41e7f6b17c8cbd8c1519b39908773459c14afc0016ae806ca981f5d48e6ee1aab843bdac01f18c1cbee400f9ea8e93b24275bb34acb28bd71edb4a73b852481b493cc213b48f13c98664f9c9adbdb4c05f432e57f3a617cfd911177050815860161840758c8e6bc14550a45eec638020a5ccd5ea6926c053995f57f30715d203c2d614ec0d9f0fba88ade2a0eb8d9c179a62e42cc4a4aa41fc342987361ee5a15b597a7023795007d7793242462de022ea641e6057c21b4f1d02f6342dbe2d28b2df548f5ffee071ebcec6187e04dff5133cefa5058da98e474418b18aa54b0a9bb8a37b7749370051fc5a467436078673bc67d693cb600261e2e340eb02c6e4023386f1568227d58f8d54f29e54c7a650357ecc24c767ae0c9af5eb942c9f9279281fe7a169eecb3c14084234096acda1bedc533a5b5d148a681c8bbb2307f3b8ac51a52e6f80e0a7ea70f236419b2f0fea3067cd979c1b4aa84d5a831dd4dad70dbc3ba3117b1d58973d2023bf201bef71817557e8aede8243ab875a2fc4b0cc76087bc4a8817cc37bf8d09f42144ee2e183e4b4f0417da50a64766a3df159e194c0a307664a8cf8a39e665ba15122fa36ceb6aacbb62dc4bd29ecd1787d2e2c0b414fdd472c1b3383e699f571b6451aac4167107a816859958c1a60ec4bb8d01764bc0925ac3363e8393df3028275087b1650a945dd07637d17b6f48cb0bb043b78b85a7fe6f8b9cc2c8a8885223e4e185c33771a5c331704d7cca5816be602e6647a2ec1efa54f589de61f509d876b1c476dc0450e036db3003f718e32c7c8b2510f836ed915bac07475194c976b54c8280bba17ab0ded830d8c1539a38503ce44fe40fd04b8dd887fe5ac4a56b4c2cf7b8b12eb10426b000c3f2c8970dc3d1421783be0f4caee6120fa0c1d004684f5d0c11e8de5a74bc8fd3ec127e0818ebb011f4119abe0852bcd6c9fb4decb08432623f417441eb90f9742c857f08703177bf9cefe22bd207ff4e1414c43176905703578dd9c33e416fc09c63a7df0d51a829dfb68bfe70246855684e78280e2d482739da155e13970149e7c9ca6a1180fb7ff8211c4200c4b48767b73402617841f2906d26028bbf6e1116c9813997778bf1623c46ce60e690d0d9866de7308618d9c700d283f85d0a76c8170357fe0b2af782e22b94e42c78aec67774c218cb81d0307d640c746849568cbe5901e61f73917c9086b9ae0e4b34fbc69755ddfa02eaf1df6d97e8fff78b68e49c305f8c8b63465be39046ba980c65947a3a7d204849a7cc0e809a2cb06cc49a4d535464fac266760b8a5aa5c2bf802a029d731792637fc64b921721383a20a5bc3603328d13e0a6d173817c98fe16d602390073f2fdc06183fcbd4a9c076854c3b888d0b10aa7bb01396ab0fd93e7945f819b98c90f0da0a8dd3ee10181f0444bcb97ff085c45e2a13f49caa9a30a52f133822d45a28998caacfb8ee157e012a54fc0b7997b029cda8a14211f481e2bde7f3d060968e79163ab84af11ae532830b7d03fd502c15c700f0409c57dcb0848264a5035e121b15f602c423a439614fc229058ecb2320088c85e346e0dda34f587301ce578e5bbe0a3718f629e20fa0b094e022c2f36944dd22a90781cc822bb7668bc75f7cfb5dc316b746b87e2a0cc6797995b0172ca93a7a7898d78834480b585592038ac8aa2e41663f06fd4f162cd5ffc46d001ce3f64d1d459e0051fc63e394153b1924d89e03b0fb7dc4741d2c41615129165c9973527e8b7bc2b69aa0c3f2eb780f91937f877f7474207403c846be160ab05f35e49aaf89ed81b34f7884233c39e9a09f10e035e570b4137c4bba181a4241a9a1033330c2474140ee31b0a4f611dc6687a8af1a2c5bbe05a9303a764070022b78d962d92e913ac2ab69aeb84ec9a084993071733f0afae77c07964dc9ba8d0fe005a116096865444443d4913882bc36977a96dd8049f1065bd719df50f8151095181876a35387511804e1619929b0e8f8dd00352f7045e23dafd0026e58dde21ab7c7c204e5f4e284e100b788bc649573b93aa44c4df6863a03903f245c602686b606bcea91c076259d5527f4f5c826a03eaa480fb03f62d46c6d865edf5321c7418d60d4fdaef8c539e71a1811bb417523b281b5495e7a5b4e5874c813dcb16cf425e7e3e248bd9d94b8b70dd2f636d7468467e444db01d61e11d6b186b12d4d25ecb396520cb7b299d45f829a57d9351111659a1471b04f982cdc510c38f4d8fd3187879690af036b4000d30a04ce99e4b9c716a4c9c20ba3c45e986f46714443f9b600abd67488e2eed0462681982e6e30a0670371863d83ab3ed3e3b310591da7426206c2f995774269a5f03b8bc3a50eb9b9bee37de82c1fb31d66b79e76e8603111ea658389b3d51746a612a2fb81fe4dca5076b924a23737b0734b93a65df225114b5e63f25c76fc6411eababf2a8a5b8b867ed573102f34eb93e799a2566df189423b66d58ca2906098ef098a3ee9230b3ff50cec13d807e8ac855b5be41bee283cc79ec1c2d1609b02d0c8167a308c79c61726cec40e0211921781778351ee1d0af7be81a00a9808a9e98169fc708aed0d047e4e0f97eb88b08a6c064842f9a1435a058af1d69609e546598d6f0b08a267453248a28e31ef33bcd160e0fc35b58b30ed7d37270c08808db19ac84992734a9e5cd33a4a320a84bc81251590519ca04f0865f49ced9277e2459d4175db1c61dfc76e0c5266a19de3528f73fdb5481a6e681ab816db204dcce8022c6c98ce2a092d84d6954a6c66fb4fe52b6ab67028dcbdc860e8d00fbe796207c544d25d9603004d2bf4fedd039c89d0ab5aa8029c0b7f2ac1bb88752a80b5445dbdc2118f7f1c192b6e6d52d699ff1831c5703e6d436c916813f3ba19070ec3f57b20582deca0637707c51d952da95941730f0287d463190e7827f0d457a44b0402f376fbc914cae288e802be001389ba2da7e3a10990b00bc644d436aee1986caf1b93b9a8f108b2307b5b0360a60a9e4cec7dd1be6e54d4c73a3053a7c9b20ab32505a338a05d8a85cea97316d83bb77270ef5c5d111380ed5b1b40bf90762d81fd03c985e61a93f34dc74f46d32ed996ef3106013f049a3b7a79380079df9a4375cd5dcbf4eb958f4d917c685a7eb2726c2dca42275410e1f58b3578806753c6f043457ca8863fac68437cc8d440fd2d9b0cdfd98668440ef80f7243c0c1dff1d19c88008b0de8d05c72ac6ba20642189fa95c3c8aeb105e6c0462e0b6038e3bd85a06ea1fe73a781572610c3353d4f7417acbc1bc4a5621790a16fa9d2972d906bc064ab48aa6d09c5d9f26885b31e45cfbcaf0cf3e61af3a4a64185066d9c102201f51cf1cf5718e80169dec88684f7c331d9bb3d04560bcd25c8bd64a60b115c12b57166b65394dd9f7f0bab2c1cfc3e54ec45d43b75d111306859fa917759655981daf2f16278d741aa8deed62e4ec33f23eff5fd02697a1dc3224acc46231d013bcda457c61b70b80cbb067c8431bba01c898350513049b4e50cc1f561e93611b7db8c635287d5407fee94e47a7dca3a749eed1111c04d23647091ed26e8c377e13441b3bde831e6935f019ba9610c1d89fbfe016a710f69960cc180e23d4218c5809018ad28244b7096919f78158cd02288baf87b66b530050125dc272ac883e2ac5e611356295c4586a6d40edf6267c31153ff8f57159a681d68ad89ada80d6f65c50952daa27a1ff0d096bc50cb53038d8f4898be25b9680561166c50325eced004f6a7c73e2d48dc1f543445ae012fb843dfa209942eadca37d4b296171e4a78193c969c189b0a113617100c337aea1d971afd144b084e21d06feee11f6768467c54e1db7dc213cdc777480c7615b6a8803ea36f091a17e529fe1a856c512c78f39186bb6a77937acb4ff168e46bf453c8f878a50db813a90cf885e03ecc52d7aae18c8ac73ea3e3aa40dc064c622f60a159bfa81cd336dff0a559fd06c9942b40999df651d44014aebfca612e88230966d1978c04034d8c14bbc277c136ebb1acdab87ae47147138ed66e222f0ea055d4dee7fa2717037621cbcecf94e27e8a01a211b02dde8b870f9d6d126ec28a3b9b0bafb0c32538e7a3a27e1d7a110c5c4492b17847eefcd8b329a4c74dccb08690e3a19e5dbbe62ad6c26d0cc738aabf8790f9b2e61667377075174d063d6ebd17646aff2d251489e35d0cba90a1d1e726e7886e8c8920241641800a57ed4d00812ecfedd85d8818806e8918720efe32d78e16c69fe13660c43b104079a6f01ac7ac0b588384e9753dd21ad06bad0cc3ad98e1bf35750b06fa3165d009aa177667fa22043acee91857801fb2e2b808a5b562bc95cfb10598864904330ccdeae28e4a2a591b081c5d62f98a780b715fb6c67fb24770b5ab61915321e4a85ae98bf8297f97155038b9912ee2e5519c2f935ebd8e3154e78d7dea11394e87c1dd8616880554637c72f96ac442de4ac4a9233804377758a638348497c80d896e6e0f5a7bf4013a4c21d6822615db64baf5999b4819e7bf441d3c5f5db060b28b6a7ab86e0c7237a25b433f87ca0e52aa81b67e21233837994735594fb5678fb9ba395141aace94fe8dfb7e82608a4e8ec0500fbe2514d77770fce3279347932a654087e25d045bde498310fb65fabc2c6a8ae1b34dab0cd7e5ac31d32bfadb122bca03812b0409e1a92380f39cf737e50395bbe751a0051775787c5272fcd389feda20e2ccead4b3cbbcf20260efffb51376882ec00fc82ef0a60d0cbcc2a75e17e0bd2cb1cd1d1eef11281cb6d5a13e239ff017e3d8a98d8319f58d0b5d7632358912a4634bc4e9bb0d7f57dcae099e89e574197abfa18151218fb32360f7d6248efd9211936b717ac45d239ce0282d4dcf42f195beac407392cedcc935589e9de212b30aa9c096108ad9f76d4d7dae7a484da6234775d703f44562e893d88a7c90d5a48388d4ef8e39081470edc2382e438579203017c053919204767d3d915e4f053cf23472344fba1d1e115b8e42c30c03473ae21071ee85d72c0e922488e792539a09e15e4ac003e69cab671722e0ace10771d3a3cf8ee42b981371f0df4ae5fc67c51e235f8db05e9bb5756b843cc4aee4a6b13624bbc4296e119cad26bb64ba62ca0a5e4d72776b74f5b3981b596ef78f77c8bd6e2ce4531fab677917b4d0782d4726ae0611914350738336d769c45defc30ca808dcfd5365dc1bd68f49844699a8f6d15c56ae964ef5e31d0ee92558d80c222f067cd10f7f33e616fd511f6a94bd8f36e4d5dd990bd3057b4ed3c3b8f9c756f97f13b1b3b9881bb51099001c7ae2231d47356a0d58e2f2ddb2079aab98d884f93113c2e3c1add9817fc8eda251d539e75b20adbf7942206cf103843109cd08d365b9fa392be310f375f689d7039675b666bf1359414c81aa38c0d1a2057bb81ac5115917fc220343b9a8d80f3f549cb6aa283c70f61d0c563761b7b9a6db336ea3077688c92c3688d9be0fbcf91616053b06c9376d7bcff2ce52248d5d2423e3abe0ef32819e0ac221da4693daac39c4aa8c38465d0ec5da1c25cca45352b93e64246e70148ac495590839b55a9560bb405d83bad232b8d3da091db092b2336c865c03bada5bce70ddd2ee483d760eb2861e241daa97e735bfeb75260367a6a2c7268d0625a42dbfce0dd3d493707ef578e3c9111d5870bac8a2523d003a840efaa529effabd4a4024acfa0b9bc5b4b7c341447e2e7ea82824b814949203ad713e8ed5550703ec152c04b48bb5c01c1492be09230d90e5741df1291910e4c983e4d24af800a38e87c2bac54d0564e8e5aca65f0b5a78026b128ffa06f7067066ba9bf79457f687826c36017c2eca78ea2a6492b38e86e3ac21d7e54ba4260628421a245a70a495a49041345bb6628e6c687aba13e51e5ecdb7b6ba0d6343006433e2b08f05764e8ac97c36374f78e9e50b0f1744ba0d145d8f26ec26bc419d00255c4fd219d052c6b76b7b470f611220d0f18be4467a0c4aae0d6d99e545db8de23da079780828e6d8aeb495cd596b4471894b496346197b8c275763df7766ea216448cf51d5e9cb44657ec6e0a610db64f828e8f698c0b38bb2d90181e13d4989b79f41aca0474214676cd61647a88aa745f8a4b1c874879d25e66449368dc8b976f9429e7c29aad328f8b5bc540d7673417e87b87b086ec241489b6cde460dbecd66f9a3d9c6aba1c687a4edd7b903bec5b293b265b5a9150f1ed3e644cf089594713e7e953764c76f4555c72c7e642d8570a4b2199b0294b60e9135dd805bba09ee94235d085159d06ba30e4b7220c7320df09bdefb85183abe9e73e0ecdf1d306b5e39fd60eca8df59adfba01e07973be1dcb8f0971f74ff0d50e9cd95c3a46848c4ed1510f8ccc829a4688af96cd2bf96a1e1c82ee9921c8049a9e502bc257d323f5957ed5a37fb31d8b20d006cd8ed8b29993a19690f9fb747132c84dc6121de806f2c6ccdf8d8528cebf3a96f0160a6393b30cdd7dc09ee8bed882ff44db43a7efa04d25fbfce9693d11c1b59bed912787563d3432b6a12a0b18d82c17c90636416bdfc555d6be7a73d71036364e236863b369081b9bad9f2c4f9b175afb969b7bc457d8e7ceefdd4c5ebebb4f58ec6585b60670e00d188298d71fb32af9bce3a3d59d43c812b85d139da26d324a959ab38848fe61db5b85c80de6444c8215322a5083ff7ab93b6114b7035940cb76c8e0ddb1e20b2005765c0623dc29c47d53e346b8f04ad8f12ebad3962df92ec711f866c0d2c640114c8ee3a3844d580cdf84654e8b28830d41e5ab6d2383b4bfe545b660143b74b4e8b71ea9379774867617d23ede75f081ea069f62576b9af5203b37e847794c9e9ab98c41f5f895c69cc6ccdffa8499ad0d0cdbd84e6a7ac02ffe680597afbb4170dba4b59412b3072f319314c5421c907db90ba80bf967b8460ec17fcfc5322db16304befc2760b52f9bb584d0953dced26e8049887310e194c90bdff06b52d2958f13acb88f9c8b3754ea44e6c610169a80cab6a2a4c1b63e5b2a51a4f3104a781f9ff2acb02bbfb802bb1202df7658244b483d815284cd526c75ae11332f7abb66f530261351e72f9e3ea0e3bc794fbb15a9819e05bccb4a64d8fd81706d3f73fc7221ff8362a6b343a4d3fdc9167ddd5139dd37f39e5a9415d8315e414cdf3e43730a88923845486204574d18a33e918ff4e2b925adc553b64d0c49ae82af5185bdfaf35059246a5ca63d6f226ce64f8481d22c0640b9504b5349d2d2244e448a96a643e423b2734245bf6e22faa913e18f519fc8b96b26e20013c1e4034e040d4c442dbac9fb8bda9d897d60260480a196a8b04bb4ac69997c3a9a0cbaaa994fbeff0245287391866f799ebb4404793509b02b795585ccff8872707c633e5984704bb024f98513aaa64e6860acfb4436136e60a933ba02f58a26d779c51bf6c0251759ca254839175a02054fa83a254c454bd893a0516445d7fa17809eda786397ac16a8250c56bc0024891c10c0fc3240261138ea76dbca8e48bbe5e41373f26def7ec993da759a0689d4e32268d514168ca743c6b4d95629b0d9346861af2f19d8a25524b04533e8fa13b47019dfed5867470c7b8718fcc3d913e899690ddcaac84ce7127bab89577c1b34661969f9020a57d064b71770ae751d3cae8567b380ce5df7c1be026db560512c617aba06c4d49d501d1e874765309b1447b8f37a5a14eb11f63651e2cd0c2718172d661dedde1f47491175c495105fb2f88d2966dd4c14cfbab94b5a39946bec8fa47e541f844b2fc43b4ae8c78c12d6c43a6f932aa8072bd8c72a08be6090a18863a823b1098331228acdf8f57ac0b6f47eb700dea8a2f6dd04de30e81151132ee18dcd131a3798e3286f3019588311e00cdcb04f32c6012f1d0b7c5e0275acb24d648dbacf1ae74744bce958e111118d197407be89ca546a3c6707ecf3b606f8e9447880a9f18d35744de33263210ed817c9c508e98a30309c831aaffe5b6fe615cef7854531cc97be48b04ab8a432dc0744756bacce91cc8baaab893af8f62f6a9873319ac915ba086a0f2c60105691ae413ed498dc3fa0455c1ef96c09d584e22cb03df55e79142275af78e499ca3b706f920cd9c9f80a881cdb6072866d33d1479e25bdf7ede29bf2158f3c537901b5350dd9f2ab956b4c2457d932137be6f9288d7dcdc6edfd75af3c53790201e46f0d39a7fbc9052692f34c37022db6b232514c9a0bb478274df0b67f597c05652ad7a1a13b43aef92d2a152692cbaca1075accc08ff696e5d003429d180c1405cf20394b0d5065de4fe4353cb6b575d94193167c4cbacf4b8b259fef7641e29ce13d27ddcfa51596b024bbcef7a0950426d496147a529ad785f57b6589626066c9b99155d0c426174a955f78e35ee1db66e00d6a57075d94411de4f32533b0ec815644d7a2af5068eac50ab090d81e340855d6dc5efcb2d136c1aea09760a23c20a48d22dafc01f73fe0ac0a75588212381f95f87434c62bc2e8b0a7463d68d49c412bb235c64d67b9a350b82c28911fe268cf1779c7c681890b92bb51b1c7a28406b723c2de9601c062bc39e3618ce06a0beac0bf72e32d1bc77bdec096c61ec172d533870bcfa0b6ad03a3cf25d434ef9306ece40bd904e655d69b70295853817882f2c39b676e4cba49fa15df367e82d78775d01664de109e2b47c4aa85cb40cb91d36a12eec68012dfe30b8b3914150767f2cae0f6e2d0462cf349cb10931de9cea5d1149147cb686578c4f7bd0d95f0ce748fb900ac10a0eb0804cf620edd8b55375b3161b3f5986d933a05cf992122942ca8191bd6fd85c3da7291db50e7b7a14925229e035ba603e315e92423bae37b6a1ed0507f414d9db9867e01a72e3497e5acd1441cb7471c0871795caea2dde5a3b160072ae323dd7102ecb5144faf716ae37352cd53ff9c5f6682cb77d570976f9b9082949d535691ba88252c82aeed57b14356de4bcc3f159a2b76f9292be7e43228e29b19b990f3cf3d4746c7e5e65a2ee522a76cab11896564d06b8219e5e41dd4789b91b7b9e07128920def69c03f69950a8b0433d2ae8b65949317f0a2749791ada99facbbc91379390d360a3f3ab63445170b7536c51176d81196d0435dc6b5d469c8fb46e0d47bd8c96be099ce5e76568153efc1102f279d29bc9cf488fc79c0e5b8a6c2c74f5d4cf1005ca0f181f40c266a32df1c88cc59e47501f73372fcc8fe78089732759ad95f1bc2253d404a00f5ee40276019d404bc0e79b0049b9e66306e4b4bd9bf870c63a71043e26df5910dc669995172f743715a3aa9715a1eee10a00cb3a6c464a9d075332126cb1a83b2ed299906051cd0440505957203b541735ac07d07025d8bd89a454cea3ad364918517163edb3258dc0d087bc6380b0391c2c7e8cd7df26216baab4f682ff0f9052353c317031d3dc597273eba720e852f07cccf0dfa4b25226631bc514486c7a0a5c60fca01e8842b9b71e3cfcb62aa462d63991cc0f17ff0623d6c18915f93623d2c5601f3c42dda960342c0fb233f678ef4096dde6ff1ec042f85e16bb64b8af4399770f94b258777c0a7a72ca5d01311f1c8c8c4ebf50e555ae3639e268b76e577e4a1ca7b44b41b12f9d8942f27d40813dabc92d03c12aa95d208adbf234b3712082d25107ad9fbd04963e3406c82a93c91cec62630e4025bc19d7dcfb7095692bb3b0c22bd9010db5211cdb31a4327c92935812aa92e19b8661ad2149fc03b06e065493b69022e707b490735e33b3ebf2740877c3956eee6ea55b20ecdf6246d996c5671cb2cbe7d09b86a17e3378803c62ad4d9895bcf015a69796fb1b8e3964046bbf77756bce293f1164de7e4c93d4c5fed161f05c4e7d1b4235a4124e9a5807b0bb76e215e666fdec97649ebadb48aafd5eb3a25f39daa42b76e9fb45fd02519375d3bd223685a384af30e0d58813e02ed1954f8546ce6d90a5eac37da51d6eccfb0af65e6f3b50e08092c4783d006ea150a234732a00a692de504d40dc69d9a607295e93acb864459b91652180daf50183952151a69aea58adf9a5c6122b9cc6a93406ba830ca5161170cedddaad7698c1ce9005aeddbb5b49ff9c9352692abec388b6a8c8e341768f1ae7b9dc6c8913650e3dd5a72fcaa950213c979b67593478490dd2c06bbbb5cb36bc5d24e4dcafe64e8e60b05d181f582a2d5cc8365e5c2ce3398ce80c50e86c0ed7389bc5990f91257cca79008baa6e43626826a974ba0ed5409f4fe0e519d4f4aa00f55294100d56ab8440b09f026d12d7a61895dd990097b5d093ce72161cf460bbbd822f2d3de3ebfb19101ea476073ea1feb62079b3342e6ccddc3e0de5b050c3532828376da6a5cb86bf2cae16c7b2eb995cfe4c0fe882a31ac5be575cb39aa5f40b85b770feaaeb97567a468dd46d1a75b6e50f38aba41da7bceb975976375cfb16e0dea9eb26542dd31e9c30283537cc15fa07b2ffcbdbff5a32431ac9fccc5f664d5e378c92b7697a9d36c8f556883055f0a0aebb88abf12dab10757ecd85bb98e5bf346aef85b335b4a554c5e483537996f2f759d45b797d2f5db4b9136e4ffe2fd6562c28835c14bbea554c23bc8e4bf760729d17a625c51260263c5f79014c1b1449324c7aa1d5f0ff86487212d9978f202133f6ae73d7f4e76bf69fb9ebadb21fa52e6500bbe2cd1c0d259a15bde4a68c13be86236a3e4fdf3417c80c03c0d744954572658ca8e9fad75826de0ee96ac683c4ad7976f8ade063b97021b6cf7820d3675bdf36171d73b3c9efaebbdc10c1c5292170bbe90b0e0ebac44f370a996736c191f85d875484ebc0e8587249f3624f3b5b8fdf26b959dd05afa98750343d6fb9121e3a5dc21e37f07860c22f073bed8998cdf21e486e4fca42131aee7920c0b74b9ff235d0684c3b6efca9ad4e58309be2f2d5dde5e352f65e95751e946fbe37f076ed4a4734084eb15cdf659439e36e1b2bfc69bc9de899f5305e17038a14583efa1529e168c2b4eab9a5435f02221950cffb472a4b221ae1d153fb9bf4458943c00c63181e78591982ff25aeb12d246afb5f902b2cf70192fa98530cc900ed1a4c209d25ccaf6880266f66fc4acc640e6b7b0950d7525e4170686d6a884db4cf024b20146672ad0db37aff0585242da9bf8640878f6688ed7cec029da83b4928034e604e6a4dc47a85e19d18e4768c20ff9f94a5348bf594860ba5fe0d1356bf938ab85524063542cf93e284317d31f60bdf1fd674defb36d223bf49840e8097f1dd4d4ba4e33f8eba42f93bb430233e4ae6b6c44c8c86d0a7b7dd23928d05449d29dab9ae213e936c5ff3ee90a14ec139b5ed710000e747cf081530d4d1cbf218b99bfae4786dbd0901d99ce5c179cb0aaee758b8da9bb39683b1c86da0969c1eaf0075bb206be22e2139254a765a0993568c5093c21491b8aca05b6a5b509bf46ecdcf077fb14c7ec9592f5dcd6ee26b0c5f720d3205ee29a80d847c9c4603009dafc1923a44a0ffccb915598efb71252e64f74400bb390fe6d7c92c21dc05731d725a6cf072d0da9d8f3e34883333e8147e7961d12f20e6f6f49e583192176b112e811e9d4c6598db46c56881ff33f9940f56b0482c0ddb2e190fcb5048ebf46a0cccfe996cd8ebf9cc0e1d708840d9d4ff12f27b0f7350295ec980c1d8606db95242ae72921253303a6b36e1177b6054a53b50de2592000f64c0042811ea3404dfc19c31a6811c96070a356742179cde8e23ddb227763ebfd62b14b2949e5b7ac4cee8a52e1cd4bd4a5cd18deeda5edd84d44956e771fb64e781c5e619cd02d49a0927d2c4a25afdeee52242ea44aa031d0e8f60a11c38427f52ac3845e498297b3a7a2547df7126da9cfd356d2b3df5c2b2b937e85e542ad3d6bf31164b94c9fdb2f498dcfac4c9e8b52e6d34b74a40d17349fd7d2560ab7377298f5013397e787c0dbdd02b5c7fa22b5b58cdfdaa82481dcff5694d69e5c3cb2a43230ccdb5caacc03da6a3e496a813a1fc1febddfe6b17f567a8b332f020e514b528677e1bd2835bcaea835868955968bf46f427556f8f0803a74baa145ece136bdbdb5dfde8496a42d9f369d16a5ddbb9facbbc91369f3eeb7e9f0bf6774eac27518164387960d4b5c420a215b84eb30695eba83c2052900d861d2052276cce83204d961d22abb87f41a03e5c9e70e35699a8946f0eadc72ed0718daa1e3675b7c5e7b9f9b5ce03541fdd707b3803515fb418d0adeea95449c8ed53d60ec216a64b786fe9a9dcd6db64d66f433db229f24dfbc00352483d118266e4b165be1100db6d80d91837da029282806c328214570a79ad03dd0dc5ddf664760d00ec1a5fa36988f3ce773c200e78881aaa61468b945f37995578a2dc08d4d6620d60dd03b69c8ef158846d7365f03701f9cb41121631b6f832acce6f46a714b25ac027253e78831a2a09ecb713844a0d08d1eb8800a70bc0940122e6588fac74803153193092fd1e10374dbaec1ddb2b9840d6fc2c012c8f59a8ab3a9bc9440dc930ef874b39ec61e82be629f2499728a7d523960a674fb83cadb0161720e31c2f9a1f579f01e32859eb5d52fdc666572fb0cb41e6eddd2e9813c9522cd006bdc0166803242cdd0dd5bc0a4a9dd11a60083e93ee4c33031f8c4de576845980ab8f56e68bcad16e916e9ecc0db7a2cf1eb7577e440758fc1b67a696d19d01673e87e8b5b907b476fc077081943a6b77c9c3374f5122d0a8ef0733e50cf0d08644216b330cd46dcf8aa95a6b81ea52aaedfeeb23d32961b13ea4ed3c7279a63b99395a8cc1e938a344b52661f9ae695caecf3d857299087e14cf94b32f1656ba2a7ee0ea0e5e41cb5ec339789620ae262de0960040bdb71023af34ed68fe370a481880579df91bd8721b3c6355849a3f22ab05f2a8439f21cb0cf5b3b61ddb2c298e631e3961159b7f692f19a1d93237d4117b3ad8a2832b033c1cc8d817c8c9a44b4e31ddec25b841d19da69a24a9f28fc5229e7040eabec86fc200c31a6680577397a807fbbfa1362eccee130ef575b6e6a9fc826c590ae5d054ee2ed14c047e96721011bbd4388e20eb746d85bc268afa751048b5c0f46165a61afa5296a1332a0917c3c3ca0f17c37623cbf7cf1b5502b71c6da20e2295316b7555a4c221ab2a13509201394db598181cef63497d03195b0d602291fd6dbd922053506e8f1deb028ff5f0981f43148773b0f112f865b84569fbf6407ac70bb6f2ed06049e0be1db7e870916620721de2479bc8365d2628cfa3181b4c16181b230f63c30d7457461c81ae3d06d42e4fa350a484bd044305cc76686c0861f2480de5c17ea496f52d6874c09af748ddb0d8e9b7c19f8a2c51f390255c72727cb6649d2601fb075d6f113d48a014b885ebf77cb86c29ab319db6275a601a0b5b742e5d5eee5cba126b4e8f39107acea5868ccea5ce79e7d26a1f40e400fa003d084bbfc2b9149b196d84f2da04a5b4f06298fbcea56a25c1b934bff19d13475ca007953866e4dcc6895e8dc5f6db252dbc0228d67f897329c9ae2851dabbcfec8039f4b6001765d0f0b10ffd3dd6b79fe81c392464287c11eb704cb31c2b6c129e8752bd193542345183c1654a36a851dcff56425bb18dbffd94840602e2364ba32b5e7d2ad28c2f58a92ce9032fd1913233f1e6939b79775b176992dd7b57caeb82e55424b0816c96251f52529e8a44436a44dd22da604fc657f35c82fbf2fd925ea57e685724bccede9725dbbfd7b675377922398b884959a7c4841322f8743ee4e95536659d8aa473da1fca92e169533a8ec40b3d20d0a4686c0e2df74c662d8477c402244e87e1f3db5351cac31fbd925430020af4a795b40371b6674b5caef56ec54f7576c0120d763418dc8b8b784b1bd9a2913536a2c2add8c15bf1682f3e1ec4477e279e7031a32fdc87c4fd0a248b2af0ab5c0205996ccb10c87286d1c135408e39b0295eb3db020d73b887f04e6c2b1b00ae50a3f9980d1c0ee87677b5c1cb84593fdde0659020d5cb833970841b5c013ad5224d1bc34d476f068917a7d66806ce5bb7fcd0563ad39790658c46ee8e51c398a44b914c3aa315d4f3c0ebe97696d17a1e21ea575f59c0ebe7d886a7e467934eb4ec576f2fc3d4dbcbeb79d79131d1d93ce9a692e193d722160bbb8ea4294eaa200caba527b4f35de1adae2700dff1337b03a9a226477426f2435e8530160887ca149c451360e065befbcacf281acdf8586c28db633434bf6d3063860bd40f683d8e5fd57ab40969a1474767fe80f03508c08cbd1f97505c8a832ab14a1a16522820526270252ed31568d2958e4b5ca1f84622e6cb5847376934f4c6a052acc1d2a2312545331af05bce3601ce3e8e3657ba77831012b57c0fa4cf608027b43e10965747701c242698b81a4da42bffc127c36e263c635dd7ccc486406d64434b88c4b6e78239c3b0984a19ddb6659d56b609cf14bca056effb1461ccfb4ee123581add53db05bcd42756147d0d7d48301b38edcd118c0de18543e0b36b5569c22cf3cc66135e98f43841897edd709382e2ecc50901cd6fa6ccdba8e0de526ff2fafbebaa00a00feeb82866a97c493b52bc9b97397da742fff343d38edb11c79cc4adc07df6d0f584e739ddc1f6d9dbc33ffde363c019dc16cee010b949794f5b12ffd75da79b3b6143b716d29e83f197435bf5ac69b2b90edb99fa91382be079a792f6b239b7585661b9668f73e4431366e1b591c0263f51f4e6479f2b386f6876cc3a153a034bc821afa4461b8892da45b1a6bee02c2e6bbc408de692bee909c9fcdf124602dbd26c5162cf0fe5291e1339be9ad8a399107d641debe63ea19b931d0b7773426b48400ff5b72b4488b098b58bb4c15ae22e0b104bacc6d25c56428b6394bc3666583b12ba8c36c517c32e68e09890e1274e2b3fcac4b4ee408e637bb64cb07949bf5105006b72f0da336567117282e5f99e2fca977879b664d37397c8147c9a5a132ff0b96bda0f30f66c8b774a7a7e2d056b08dc4a2b4081c9ce5e8383e547848c44f9b20d14586c9f60b415af4116bb535f9a52d023b56ee7a801dea970d5cdf6a5fcadede2b583358d4d898823cf470e1ffcf7f79ec5243bdc23d43e34a3b2dfb2bf7d1aa6f6dbb7dfd68eea18e3dc749d9bab86f5474953f3e5cf52e98fb1beb1667f4cd7bf657f5b2f36f6585bb385e56896f3dbb7fff82df76f37ceda342ce7db87b156df4dede6df727f5ab9dc4d4bb3345b75b48f1bc3ba29e60b8dbfe44b7f29969f0ba56fc5c6b752f92ff9dab77cfe4f4bdb2f17b673e31c96da4d473dbc6bfff3f96f377fbd79bef9ffdd6cac0fedd3b0b48f7fffd3f2321a96a3d99fea58bbe98f354b6b1aa6a3d9cfbcf4fff9d3bab9c9fddbbfdd60dacdfbe1c6561dc39a004937e2c7fffa269a512c87d986a3d9c6c252ace5c6f9dbbf2754a0ad17e6c63116965b8997e055f4e425c9d6661eabc559dc2c2cf37063586373f3a1ddac39d9eb9b9d6e8cf51b5ddd6a3773d59e69f6fa8f9bbf3bf646fbfbcdc2bef9fba76aaeb5bf8b467575fd5d64f25a5d3bb6614d2e6d6d6eacd77c241cdd58df2cedc552b39d83a8dd587f179fbf58f9ce7074ac79ed6c3e8c85a8177f7c373e7eac5a6daddd38ea642d6ae57f462afc8fff7d3da54bcdfe5cd873cd16d57abf93e9fdcf440e8cb110f2e0563537dab71b6b337fd76ce0dd9b9bf9e2c3f83434fbdb8d57a2239252ab6f1ad64794bf5709c401fdea44f33e61cbde27cdfe7ee2f37a613b29957e18b6360ef17a7f613b929beab27b32f5b03c3bc0b5271669e244b92b22305f8e3af119e0ab3c15adf7e7b19657b3ea38ea58d73e7836557c4b6e0dbe7dff196d06eaf7d8781de5ebe45692a7eed12d747a77fd54b70bcecca2a94ff8f0dd4df51b7c5f2c4c4db5d2db73cf8a8ee6a81faaa306d6d27a09757dbb1195b83c6d6b5b43dbc5d2c59044931d5bb5d6e3c547b8a2137c3b587ea88e16a0636c1a9ae57436fc8c5c584a12ffc15efaf1ed0653dc960dc7d4d29697e6a88699b4a5f3af1bdb4c2ba73a695546ceb8c84a3fb121f3ef13d53435fb909e21b84926f393bf40afe1b7c056c16c2d3cf0308091415d6be385f5b18e6cb1b8a06233b0b48db96a1fbe2359d1e9f9115a634c923cfbff40c47b0b3b36cc963a4fe3a974467c376c473fc18d9aa35bc6d8700e29dfc78b8de5d8695fb583f67dbc301776ca775d33267adad135d7d4f5c6d6e69ae5a42db04f75a67d778cd4ef63d5d634fbbba95913474fc9e3a88eb358a4d5b034347b6c58b11ddefdae9a86bad6d2be3a3bc371b4b4de1bd6da5127b63a4fed1d6ec349bb306ee4cf20b1e98b8df971f3aeddbcab6bad5abed12cbe4f7eb8b2e15c9d0419f80c5b9d5f11ffe4b37ff2591a9f5d2c77f7e1204bdcc322ec96cc533f9bff919e5fc0fcbf6a009fd5c9b9d14b2d7859372fa949d2d68ebd38a455955c8e2dac4f638212a31928ca078ad8b67ab8597c725154bb59aa8ebee6a2f318d515deb5545debb1c51014ba1f552e4f2fb8487dd3efdd7309974ba57cdc451dee4f9e3375dadc6a269e268493e50ae65e6a4a1dc1de6bd6661ebf3762bfe5d54635d7377fbdf9f337b93720f7fd3f7fcbf2f4878513f8f4d07dfe1efadc82e9b79f75d5820cad27993ccb4fdf9f6fc983c872afadd7def77bb9df0f7e54d60f1bd3844f4afffbc3e0fede6fd7fbc25b0d7c52f0f68214290fec7e20c92e3df23ef04d7e75bf258c4358dd828370bfd82195dda1a8afefa8d6876a7f4072ff993c48e4498a7cbb0d7ffd7eeb66686e4c537c6c0eeeef031f161bbb8de9ddc1d3f7762281b13b32d248d6632849fa4cd42669224992799aa82a97bbf9eb17fe8382d262bc81a3e807aa09abe470b96d6c4dacb817d536d47713260a972c5f82df129625e7e17f3f579d7ba1726bfbfe9d6713fbe49fbfb99ffffccd3bc9c3e5bfc56a8cfebe888ce8ef9bbf863b24a98edab4d5091fdb586511a13a364229bb7efa9e7f4adc392dec9c12754e0b3a27c49cb342ce6911e7bc80734abc392ddc9c126d4e0936a7c59a73424d4c2838c712d772f9325cdc2522526be4e7df2ea124f2f3e6af7e86cb781c4ffff82e103cb8ffc9f2ffdf64f92429e51ca77c99f5b1788cf53139f2f3224a223f2f66fd98722ac6fc512d4f928e2751c37342bf7346bb739eca6b077e1dadc053f9473fc4122ea4289670f3d760a64b27e1b21de81f6c4ebeb618d6d10a12e6043fc4122ea42896f0b5391137b9d39372921c51c30f8c90a821a4e04f6ef10a0e4adc2ad3f5f6e9075cead996aab13ff7807a525b7f89aefe4becfc038c9cc0c201263ccbb6b1bc2eab9e66d280aa2851320fcd79daec9d97f882ed5c3d3a81b2def004d2827fa70c504a6e3e44f0f38231fa4592dde59243908caf0d6184c30269c1bfcfb71efcfbb221f4146ae7782cdeb057f4da3e3b6e41b7c35e4dde1fc95d8de7bbf92be8e3cef4f08bbbbc5ff20b3dbc6857f7b4929770ef395abfc6808e5b30301998e0fd913a19917c174c46d3b03e5ab0ff1bda3ad6697c88f7d65cd88c24998a5085bd8d661f523a0edfbc5e7f068b7d0bd712fa71bed1d08f94c643799eb4f5c674789702daa18de5441e562729e4797ffcc7ff3e4f5c9030fcfb70e1fc5cbd5a0245bf320f87e0ac8ba4c09fe7663f98f7c2bec2193c54cdb86a30c95629e570e7e52fefeeda2df2cd2fedfd91329ff18c17c90f285bfe40f7fc0a2eefdfdc2bf32d50deff2ba58b4959af90e7f9d43fab93af30ecb33ab98e599fd54990519fd589f8279d41fd3c176c90d8dd3e501ddf2093662ed5102e6d9c45e5d7ceaa28f6ede65fb0a15065a11f7ffbd793f39c5424edb40ae649d837632f78491b69f4461da78b98e6b31a19eed45c978f9b8a05beb925c53f298313ce7401ab10d3f41441ebe642d8bc9def4442a1abfae497ff96525d2835bdbbe74af22dc034e69769bb8869a2b87bcd50444b5c350ea2f0b7a48afca4f4eea797111dbf407c17dc72459743d9bfcecb41aacf337534774a93cfea247d699f15815f54d30888650b1bce8fd81e9aa03abbb4aecb876b9b58fe5b2a8d49a929437a4d1529b40ae9287dac97aaa39fd11aa8ceb9fd12f25c211bf1ecdfb014fc2fbd61f85f4aa5f02de1a8c0694f17b40f89df7c6554d257a1e74a3c74d4492c3d593cf0f7bbebef4341022399134ca1d345149f86eba4a1e05110ae27fceb8286c3bf4edca3fc4c175ea496a9449e3da4d2b25ffc0613aae02b02aa57f88b1313e49d004b047e5cc015a11f57f53d20c27f89bd71d5a2001ae5f0443f8df4de0449b96e308325bfc5ea8afebe8880e8ef13fc1ecc7621c707472d81e2e0df27183fadc8953733c8fb03939f34ebc939832f02381e692f023e5d5fe084e088fa137966de0319cfcdf555b31c2206ff7f6e4ad71e1920649ed5247805cf2929c7ba369ead3749cff427c8f9c20c049946f083f8e36ff1e735145bbd1cfdf0977383e5fd7191d225ad95345925942ba8920d10fcac4ece2ceb6bd6336a217ebef09d48cc556fb2b6bad49ab6a62d92760b5fcc394b49b8a66b7473c172fe76134c0dff4a530ba69748e5039ec93f623d9ab0b32966d7278de2cfd8c49f715738e3ad70d259e18cafc2295785f39e0a671c152ef05338e9a670c64be1a493c2652ae320379c90fc5757b0f85784f775720df7c6da715b4ed9495c8b5378453a73030ce5bd9cb871b0d8b7702da11fe7090cfdf08c634fee446801bd487ca05aa698bc9faae4f27e7ff885ce4c82e76f3ae7696766219cf90ab56fa8dc4986749b90f757d08399afa707cb5d444f7fac9ee3d160d6eb69e1a52ea2c4f5144e33434ff424bea8c6eb89764b5e443833b58bc710f25e4f0f143b2f5da06ef4673d1a8beaae943e5d956fa086c09fe71a0bfc79ea1280392ebd052490745af51ccf7899a9885fee2b8a0c2cf995e10e49fb90e2ff756e7efdbf2eeba3cbc9095619e96c2f6c6f36efebb16d2c4f185f04b3c456816b8571621c535d3b52da0be5477e0aaa5bd77ae4a0f933e22116b904843cbf2e20f4620a23a44dc22e3292b7659df28909e4baca0926c152e0ab5a73f7fe7b5a991e78924c94650d93cf4a902c9e92b296a3d94e930e59c20fa8d687b68fec28e9970eecc905626edaab5d0a79f18b4fca0534f14e335727daf74b49fbc964a54cf93fef6dff2fdfdbfe0c78954401594e71db9fd167a6a865f46943f2f30c19c89dce9257407738b6a6c6762b04a88956806ab708b9f0d32be7391fc4f23de2375f93e5804e2e92eb843a2ea9dd5363943c3a67ebf5e9fc253ab284fefe9a7692d4bad70fd789fdedc4f9257c0caedcfdd2372f743388afa59493951f9fdf222360985aa0c03af2990b33ebd0eaf534aca17c312deb9ffedbb1a72d0c1608582efa827a624e5f960d2c8e60066f69fc1979cf0cf7e4dc73666c584e3105ff1e7e41378e6973eee96a9266696b7c688befe3c587364ed988c52b7a6a869df1e1efb7e1cac30750f8dba7adcec54537e9f3bbe1247f3c3370c030a7460e32448c0f6c4db3d6fa22e5a8f436ddc423456cd38923a3bd2f93bf6c9d94b6c6baba74347bfd3d31c799be5ff066f9130fa933c4f8e6be3fc3c8e5c4be766e50dc0b66b23d0aff78f16e7ebd441bdb287efd9972d64ee38704faaf885e2987ed7fdf03f0c4e177c9c177f2d033d6df714f52dfcdd82c454fc4cb4ec39327e1f953f0f213f09fa7df174ebfffae275fcaa977959f71f8a0bad82f2574ae5ce20a193901ce198f27efe517020b24da26ff979d7f3f8b9293ba9c5052ea2efe93b5039149fc0907fb5922a287c169620d781abc99accc9b4f7b31bff9f3b789ad2ef595f91747102572fcdb8dbabe79d2d4b143960bd35cdc2e16b3b55bc6e6e97f51e1c35f74fe45f4e74710a5dc41fb298852e385b576d295cad2627cf3573e0a7f171b2f4e572cffcdc2ba49d0c9e3ac7a2a79fc11d4c3634a48fdce93fef34febefff9e42e5c5e485e90a132414f1eecf9b9b3ffef823d629fcf69f8220fecfefffe7d44825539daa324e213e969ff7c1b75115141b1ff82f5f0522c55ba1e92398a83f3941879797d380baa948fbeed682bf407814b38cc222fed8d8a637f7e23b0a7ff8f7d2e3044009f426854b26eedfae2ce2fe0e481f6e5240de709340c2707fa04ce1fef2a4083741c80d81591792658020efcc7753c429ef658073dd6b5d7b5f7af43a5e99e0691d6a2d24abfaadba631d1a5fef5619aa41c8a84965fd410ed5e3368d277242399fc3a23ce6150608f59345dde1f48fe4332db957a5932da73079b21093c6e6e1dc1ea3635294dd0303171afee0bc8758621d5c347e3dee78f8aae58bc6efc2814e1e9704092d654c0239f978b4c24c95bcf4fda9098c11a26bfa045b1fda3e69b62f9bd798389436a55e4698cd10672713efd3e2ed5451860bc816e92446c49a14fa442e4edcb33ff1f11d3dd26492f8924eca3547cee5c7cdd961138f7da294fbb8873fbdc73cfce93dde89aaf1b14e7c731fe7f06770e70e3ebe092e731fdb4445c1c73577ddc0639ae054f7f10c7f8ac732b7aae0b6f3251eb8f87cfde7d9fa0f70b6fef1c71f911320542aa4104a3962fff8e38fc08679f254e5ad799bd3899dfd8f3ffe109bc4d9e3f38f3ffe082ddff036fa2708ade927e27f6286e4a3417c4cdc77c5b7f886273ea46d3f27e4d28bb7f750e6f42dfeac68fc239730b6982f17d6afb885f990b72e74706010e62e064e34efbffc9e8afafb3ffed51d992854efbf883258f65f7fc96d48f4f0736301f8f2cd66adc568e795f11b6117ecc7d6ffeb5bec42fd878beec37f896cff13294ac32fce267ff62cdff8e7bffd69895edb9ab3b1ad78bb9bb5873bf433dafb97b439ce0607e05f116c3cf93c4778a853bc11c9fa2f48d8efa83041c8099104ea9e504ac0e026941eb0b409a57b2636e1dcbe6d4d28ddd5ea8612c3d634a14f01339a70ab61fb99d037cf7026941ab09809a57ba632e13a5c93a5506ac0562942a5fbac43f1c1c0cd8f107598f77ff0446f892d13a7c8b399f616a2abe6fa3d282d0b35ddefdec97f7313b294fa3d2268dddc842ca57e8f085e3737014ba9df4362d8cd4dc84eeaf78858e61ffcdfdcb9f53f84a7f5f7b8d8767313b293fa3d22c6dd4445b96f9179f7b37953fe7b48d0bbb909594afd1e11fc6e6e029652bf87c4c09b9b80d9daef2199f6e62664b4f67b44c6bdb9093ef3fd1ebdc67ab885c81c6eb238dffff5ba63fdcc199bb0f326ed0c5fde78ffffecbd8b7bdb36b228feaf20beb93dd456a69c9e76f7ac623937cda3f1d9bc3676dbdd1bf997d0222cb1a14895a4ec7815fdefbf0fef193c284ab6dbddbda75fbf58c46330000683c1603013f0a8ddf7e6de98eddea0b528c03bbbf35c61c1dc89e78aa28ae766e9901c3fbdf73f1cf89f8003fb19309a2f1f03665378dfa85afe8723ff0f47be0b8e0ce8f0e61c193bccb479a4f504e4c61c79fbd6a20067ddc891c14976b31cec14565c59dab800c18c90fbda48eb795e268d4e9d289f4a868ddbdec84d8ef4de3c24ef8f9fde3b2323f2fe0c711dc7a37b0bdf9148de473a7f604b761f29a035748e91461b2c3b0b69ab1770e9ca3ea8deb42e89b0f2a49bf621b02cfc53b7f3c270c059c4eae4df7871dcb0c52848e8db2c91cd628b53d82fb8fc332c98ed37eaff5941cec8ddc60af2b27b27ff3657d02e2d46c175b0cd0a92beae3b2e21593a52abc747c6aa8ca4d6ded86824db675155bcad69b41c80bba36afb16bf8589dcadcd283c21dde6b2231feccc01659ab687dd70a2f31ce694e9ebb1badabbaf234bb056659a892701125114099b717665a9b7c64cf518dc479752c47f2492a7217c105263711f5e5b1102826d0cc1f0986c383a60a800c3c6238547ee46ecba95516fc7a26f8d398799e46d32e4ed5a893ccb6ff39205d1325ad72c281721ddcabd3e5a867d5b156bd60204a116013ce0f70d15f7f14191ac7b9beff50c6104eed0429401f1ba19697882a0f4ddac9b13c72eed44bea9ee481f1d783a28a7b7e43ed6c2b5138a45271294a613c923fbff3404732bbcc413f2a5ef66dd12c16cd94ee49bfb8d04a363aab4518b2e64b1123d693ab68b9751d8b3eb5edfeba9f5de9907e6d56075a3497502daf4adf41b4ca70bdb03f628b21ad49327d241cfb8b0e29fc50ed2b829e54ae126768db386c97a83200ee0de7426fc42b02798cf4e736143f70106b361cbd3db4cc76616ac0b85f82f9a9c2efcf5eed6d96d304f275651df4abfd9dc5ab03d60c1cc5a4cb2f3c4a2283b9ec9fd953b3a42a5a2fbc2559570d5647c54e9a9424189225558d602130a6c1d419820782ef1195b69491dcf7fd0a8294003b84b1de880bb758244e08f01d5699a39ac4337e6533f10584a4db477b676996c1f57b5a7dac353419823add2e8601a770b93d48911b74cd1f5cd26e8da991e97bf7a46b7fbd4f0a3d3cf49ee33031313a34b44f77f7545569df9eb90dcfff56e0fb1bc9d5da643d7de6532746539151e601138a0c2b1ec3e0d266e53701e4c11df4498c851c199b87ded2f40699769f184d8da625eacf85a7d5fc42e3533eef06ec7bcd826dfc6b84e93a99f69b10c2fc3ba25894235be2b938261bfb664502af457df891f06191318b96d57830c5bb56141c852604df4c9fd9a3b38f52e11559eaf923e112579859eefcd0b9215ec074d9b56866a6bf7c5610732db7a7dc06065fd407434bc4aac61ef3e6b32365170be54ec2239ca09febccd55215bda69dced58665b8c380c70d67782a2a951b68669abf1f544fc6a1b6e4f7130fa6ffd76fececb50ef6ed1f2dcb4755e3c28ed344d7a2cdb42b8753efe88f96b832926b57bab51fb6c6dd42679e29bb5cdb45d164cb3f2516bcff106cd60e8ad44ebecda68ecba028391e876994d6f90ba7e30db9dc7d04474994414bd6d136bf44ddfe9568f31c3ccf0c673e28f93b7cb84b821f4fafe3c772abcc3b9711efcc1dd82b3e12f1e61a3132d2df843d5451e230faf80e17f94ea99c70056bb33cf0df1fe76629e2d71fffadd5b8dda27acc3dd4dd284e51011fdcef88c68d0f340eb31ac15de4ecf1a8e6ba7ab8380765a685491ec3acd32476eb7432e0a29b8cd0157c719ec5b7109f5c1168ee7762727b307b61ea04c316518e1d7f5c94c3b6adf9078c2f58da13d028eb6672b07fb4e1cc0a1db484883e87b2f1932e40d2811b717a53c83b6cbf9cf134265eb35ef0980d8f7e5586bdc4f1d1bd736aad68da6fc477393ed3da0df81153646eac653b6ebc11d8744ec07622cc243bc33dedbf100e8feab75c660c14e7cc013de10b9456e61069eb6542c0ccd16f0ae6035e36b5c5408318ac0e3f0b0862ec02d7651d579877717f283406ec63320249b6b785b317cc347519d3807afd88108b7213f44778132d254ae68ee9df929b1230d5ac4e72b228cccf4ef0e24e9d022f4c9d44e89014f4f1de8f08614b8f3c597a80d589f0d2eb2a87047c1a7fd88a14bc02b6be340cfd25c6a2a89f465b529abab6dbe7c71e23ac2530ada0091ab20785cc11e75d677c2da020e226ec2f56e466c37a2359bd4c294b6cbed1d0c43d77285078b45f7ed68908ec1222e6f17b7ea03b281b4014c72ad8774ced339e7dda2f352d17a9de8bc47c48f107d6f0e9d5786de3785d63b42e7e5207a2db8e928874771a7339d3faae7d6dbad27a667df97e3d8d5fac8ab8335bc3fbc6247fa04c71a73a913224e147a31e2e0f8f5e7365373c373946f2043a79e9b4d9cff94d5ade568d3ac6c9c56140b3238973862a4e5120625020730ed9e5fb676f9c29bd9692efdd139b798363764673f10f253b17fefb076df0240a4cce09c8032d17de15dd7923040e8cc4814e0e5362c23087797d1f6850add62aced20a17d6fec5135ce9e81dae2461ac5f20c5f49a362fae219a5b60f2986b0dbcdb13fb8e9d6bcc713f7b4efcbb1f88c7fa83672171cd574e3088b62f6088bd46e232ccade6884ad70ad3b8f3088e4daf7e50446180f55e7113e992461f60d0bd9a3cbd2ba8d2d2b79a391458167b7317ab0a3d1f6fdb16cb5c983674cb6e70a2a20ecc6515505b51f356fd85a23ebd811672d576add264357bec98438f1777726761477b7efcf0b10bc3dce9d499e47c8dd383bbc943df44f94a397cd03cd8bde689471b0e01de8de4410ee072210db948f86664b1587b8176f577288329d6cb755d98e96dbb56dd8e07df01452346c67db00bbb2b32ac10ac0bcad3201045cee7b233a2385029e9b5d26b6c3bcfa6f56649ef75ae556dfa301446e3629379b13674a5a6664f74d26f80ea686819371699b9989d46edcacfb4b151896d93d1887a33cf77d05b63f2f4390b7d166e41f71df66b3d7df93013a38622820878cc1a1e6324fea9a3cabaab2fabe5c1669525d13fab9a1452ae37ac4dad7eb61525cf749525c1f89ae7332a896ecec122daa72510f59a6d1872c17546630acb8166b96d571dd3002189115a1acd521299679de171fc7c5452912c8fa2158818be5799e4dc844a1f2344b9f24cd641649101c330001e2211aa5cd096b37d26b9e97eea32f5657a6ac7b9ee62b5aa4b48a34e4ec8244a64bb1860138cb6020c616c51f90341399fde130cd2e8fcc272187b36f8e4eca396d66593125576c615d5565318d0f07b36f7049e97980d4cd754e47ab15b99a650d3d5924133a24e3bd4545f7afaa6431de23eb35aa49c8cac69e7cf515b1d3e2a61487f2a8b7c6d50fcf2b32d804920d48ac27eea449269f1098c381ec0000743880e3a1a8474e061fd4d765354ff2fcba4f7e59d68d9c19329965795a51594c0e3347889361acf2d5dca2952256ef933c63832d178c8c5d735e967503c3de7c5005f2324dea19cc5a919759dd0849e25599d29cac55e1381ecc594a3dc8b3bad91752c440de95d941757ef8eb4b5d6fa043c4eccb383cbe457cd224f5ec845697d944325849b76c36d8eae15d1ba28eb235ad4376a1d2599135599267ffa011f4a05c37649127cd4559cd7fac72322205bd223fbe7b195d65455a5ec57939e10aa3b8acb26956a8b9634be5dea22a27b4ae635a5cc6afdf3c7df6e1d9eb9fc8972fc49b3e1a8dc8782fa597342f178ccf8df7c0ba0238c47c0858e13ffff9cf7f1eef3d64f471fae6e99b2179914c3ec5e4a98141e8e7059d3435e1757879edf69da1083179f7ecf193d30f8fdfbefdf0e2f4f4ed8944a8a996146162e152954d3929738ecfac6916f5904f952bf1a9d15cf2518430cc7a8beb3c9bd0e8a04ff61ff41e2a54e13cc76252e53cc099359c6e596543f2f1fe6a59e5eb81a49f8f90cf899f720619ed31f61923721aa1561fa205e6c1c7c33c2559392f0d95506dad1a3dc2b2911ffefa3276eaea2e5eaa8d12797151a0c5df789e7ca246ca8f7a9af9afdb983ec65b5e116f423aa78db87a9466b323b25a3fd4cc8b2f867b0206e3b812bf499535b4ca1251e7cd8216f8399b8605fa03eef6a39e69618dda52f0977553ce9fc85634ecc1400f955524be28ab67c9641629ccc8e808d5c2b7ffef55b1f813bd3e2323a2bf2f937c491f828a6b8c6b68a6e568dfd234dbb60a605077260565b5d29920a0fdcfed908505d1260e98fdef4a226a166e99502cc32a67b477a21a4b97d09deda99abf3dd3f3d8a7b6d1f9029bbcde98ca5d78a06f967dedbf218583d1bf35fa76ad8aad41de854ce043f85a5de305f7efeb68057b91a5eb75efa198b330bbdd085b94da0e3236b8adf105a410d2ea4fd9828c48964a29b0a057e33df2883069900cc94592d79650e49b4007af3e076c86b69567dc117612f826d4bcc8b97e6add5971cbb01217b499ccfebae462dc90bc1fefe9c91bef9d91f07cb97e3d5b5b94656ea945e502a7b54955a8739b8156038620bf86e93f586785f805f995ac5bfa8b5f08bbad58f92130eaa9ab0b40e76ca86a1e86056180222dc07c4f3bbd20bd055b003baf0abd50dd5221908197547c7b3976173f6e295019ad6b63552961ae5b798f78f3e32134911ea65e6cefe202b0f243e3f1d432fe7814a67d58d422775693acdb169b1d1744dd81fef5656c651da3485118051b0a42838324ada36dfbc2f76121b23a61a1595f0b166186e7e20092dbda87b57768dbe39192370ed25b5b87f5b79d80138f9b43d37887aec3fadbf7fdd4f6b0c7c0eac4b6864d4db7d5be6f1b92ec536e42e11139b5bd924994368f85a97913945a998b1dc68db5ec867f0be0e700b198869c312faa887b6d4298df4c9e04ec965f8320ee36a21ead5acc811d8ad5e818ce1e99e3813437750b5ab77ca183846d588d10deea68c03141d637dbf5d3b19bf1f7b2c55c86103e816fcb3c9b5c0fb974dc5c95d5a7fdb2c8afc77bdbf6c1b67861ad7b8d6576eb27324269efab6374e29b534dc8773218c2b064b79e1a8b90f66efaec406eb91bd2e26eb77e001bb9f68e58567177d213699db95b4f803d657b4f2c0bcadbea49b1ccf3d3f2c722a5175941d3882b4cc45d2eff175ebb7e88b3fa6d9e64c59bf35fe8a411657be05a46f6fc433c4f163fb1cc5a94e9e3c1b0da04578db0a5c755955c07dbe0e9ac9d684bd0bc223fb3b3b22ee0a5aa8babc266d16856d965d250742fdf232b7dcf292f0b69b19c93a759bdc893eb57652aaf0a7fa8b294cfd1cbac1653fa7392e77d5e57df33f2aa46ed276a0a253daf620e50fc539e7cf86f7d32e9eb3a526b6bb591150dad2e920925c72f93739ad3f438150d19fd07ef75ce72414a3b104e03028e5d911049691094b9176eb9ebe506127db222cfa59d8ab695e8abf31335d7bfc6fa42567f994d67cd79f91915d8e7eeb26b584e45a047c516b3b229f7a51388d6dbe37810c7834959d1e0353218aeb755b990a66b12b6dce35c4f95d698a330fb3f65f48a5bd5d90373285a382223a28c46444a4feb5505a0f7936555d1a23966c3d127356d9e80843332d2237c582ce7e7b43a8a0ec41a93f57339bac7f59b052d3884972809c1381791f38e22ae2d53b7a2dafea85cd042d58ee825bf47e74627e5f92f96d90b46342acf7f8979e47fc5001c3ca2a65a522086eb4627795953dd6ab085833064dd191bf4b46ccab715bdccca651d860ca780ec93072148afe9e7a62394af011433599c986b3222c24e43525e7c91e5b4e69c35623f398944abba9a701d378df9d1fecb1732de1beff5c924e13650328f49aeeb1ea48866b69c9f6fd5c8c7fb2bddcefa11af3f6293f5d134cac3c00fc983be0e3cf840b58acd7c9089cfa15ad2a2e3a395c06d4d2665be9c17f568f5e0bb35298b277936f9345a41ea5b03939b4395684477c13d462b011858da3060654d472b445556816cf28951c56805e9c32dc3e65b9461bf403e9cead10a7e814219a7cdd10a2f50b7150925e23322cd4bd84844a26f88419cc57535e993f1de87f33c293e8df7a0ad129fa3d1eacf7ffef39f75aa1a44636ac44de71e42ce2fb6b7455614fc424433f2ff739e2fe9a2ca8ae6979a33d68ea6411bb68b67171774d26de7d89ac76be32464d5b1f6d4870570d5e3ef939a8afdc1aa28ac9a7069b411800a039411da80940922687315dc6c6eb4cd4836c0f707090f6d0c6f93aac992fc30b0091e1d45ab35da77b2fa6599a4dcdf674d9b63f50581e24d46d45b11265a4b2bc63ec9452db2b64c6fec4b34c1cbe6493399c58ba44ae6759ca50ab226aa28ea816b4b8856241b42865a0c13c6e2f88f1838b9e689f7388a4607fb503fe2d72318d91525cfef93f72ce74c21b8b9353d9a40e77b28d724a9b37fd0d14a7ec527c7fff7d987978fdffdf08cf1488995b86eb6302687472b61db38a775cdb8d3a1aee0726d6d592979fd78ef4fdf5d5e31e63f4faa6956b09403922c9b72bc074c2c0ff10a9074365ac91fd2ce6add8d13117908310b69d964d6d29637d665f1aa4cb38b0cad3abe4c3bb2082377f72df119c26bae17524ad58b9225192c4ed9d788f567bc5794051def912fe24b46ba32dfb42ef3a5d0a6a9341da856a7cc925a9e184c5a56bfcaea1a016bb816517df17b8e539464dc628162e2a482bb939cd74d954c9479a5eed8a1b0b5262321018aa11901c3687cac9dd2860f62c48667688f8f1e9c9e3a7fe8557a95359319e1d5e05393a4a6bad25091eb78ef354f78681553430d0abe93494e51300bb03848b6ab984902159eeb44bb389c4150e14552139d6ed701330caa1cd74427db35040180c262faed62803240597e3025fe1a90704095b720d96944d1156c02d01ab15e9a3894a396b220b9682e3f879ec53e72d3e267bf2e93bcee0d7dc76043610aaa4d652178ba332b79700e15ecabb3f6784f248cf7d60f3734f1ba6c3ab7a2cb82865e970de9dcd80ffcdaa43a9d254587e64069d0a04c252cb943932f695d776c4f15058db1a4ae2d1dd7af9779dea11d5110b4725c93d73fbe7cd96db63a36224b5a33d5b199e362922f53da85265451d81d99d4a1a1679f3b37a48a4222ff6c37e459dc7a5bf1ec070f7de5b858471b7c5de42dd9c21e5acbcbc743169b787fe6ad54aac2a256a0941cb69fa4921214d1fba1b3e3e5d4a0240c4c506fc19638cbea787bae8561f3bd37637c989c5734f9b40563f2022245d9740686188f1fdc54f29586aff68e700d77f103cd19ffd80aa2e222813e2ff37c9b116c855536dbc1335cc107502ffa8ed0ccd2f740a39f27cbdc0b2da517c9326fbcb5e01e6f489c2f0d2f7deb076573bda98f7cdbba9813763cea525a0e3b582700030b4f42f39a723cd4ad076f415c7de8d761e2c64378a82247e40080661dcc1a3aafc90894d5a3c5200390ec10648e1befcf7aef0fce62ce4ed10b1b17a0d0d7b1747eb0653f543d71aeb2dfdcd89de620e35fcaac88d8496ebcd773878031e8f202b42aed2bc59ca1574018b8d37109746371f0f6c7a61cb91f7dbcbfd2331c9ba30583c00f0a6b727f852991a580f6d61f3d377053da1ca72e43366d8a477470235aefcb54d51a7c27f8513fc222499a8aeed68f3c822e6dda64da3eda46f08b4e43f47ae58155e4a15ee845d00cf86259cfe4cd5e60aee0f41334a963fd8ad077f1a47b238f8bed774fb618b0c6c7ff5b3adbb30635a83efa62edf2141b71a8f98c071395e97b81c8cea0bab6d6e19983b3f580581241fbb9184a175e49087230596ebef94ce42b2ec5201e341ce66b8947f115996e2ea8edab307734241164f3452efcff05084482467402bb61d6bc561c78506a19ccbb212c7859ebd712dd1d098235278af34efbae8c8b644e1fa1147e5df20119977ae7d21cf2dbe81bb4df47fb5a37825fd89a848d641faa71570b0074f0fd99534c121fecb82ad36944ef628dc011eab652ac31fd9ff5b2cb7a914aae3b5c2c3552a36d5c29dee2ff02cbc41ec8bb58237a6cba2d1038946875f86f253b2e887f83858526ee3499b692ff0f7f7d19dbcf58e4f796cb61e302f82d48bea53bdb2d81b1e5594674d8dceb60d5bde56d06399a6904c1366a8864321a229caf0e7dea9ce76927004416fed0c09b03df01c1431c77b1a4051eddd6b3c6d9c37dd408dc2dff01e3dc8d03990affaa4725754bd6c6226a193654fcedb62d5ee0dbb78dfba278fffb4155fb8d3648818058f44d85f41e7df15e15a4f838877df47349d719e0bba05c33dadd0817cdcebf24ddbed077b8b74db9f076b81bedce925a8576f8b7215bcff8de05e1c2c1ee46bad6f4fc4b12efb13226b86dda05560add4837ab3fcc7d357e0bca1def8978d15cedbdac72f1833b60e4bfb44d795f0bfbe2373c19ef46ddee04dc057183d9e846db78fafe25495b58f5b4d1b5b092ef13692d4f565a456f65bd3f3bea40f2153423da48efbed237a7752166231ab00c664280953394edeaea2be0ddaa834bdfdd00a8dbdddd6a8b5bc39d7b6e2afb598c221e36310ffae49b3ef9cf3ef9b64fbef3b10a51988cc881974f58d47c174c425164370e01e8f75f933d682bbeadb63ec32270564716619b0e6e6613811abfcdb6f8cdb7070bb1d37dfb5fead79fbe51bf1e1ce8c46f3fedba017ae6e14e881b8c634702c7236f11b97651fd8ed6cbbcb15e26ec4b37a9b3b2fce4ead836c5addf10b55e950904e70e86e6468b631b0562db0b89cd8f24cc1ab60639b8527555572500eaa093a3aee23b8d814ab3a4de870724a324750561502dabf7a170aa6be1eb5d50415f2eeaa2befb3250c1ba63d1d56c290654011cd814f770355805d3349861eb7202d481ca6d5d01eb724169ad3a733d96cf934f6ab0924da6df62a1780dbefde6de05bdc2b3a1359f21bb6f56c31a5da78ecf009cd77387d9aeebb10467351d92b6eb794dc2594d0f65db757da6e1acaa4bdc764dcb449c5542536c29505b6dc67d951d8566bb0d3903e1593036d6ae3139ab681373a49f57ba77334167f09ad25fd16279dcd039e9f6d86d458e5f2df3263ba1399d34fc81559fb0fa6f2b9a6693a4a1e2f31df7cfcd8e18a078a08d9a67feeeafdd5e9cbe7ac91d796c7af1362ec403aee3a2a1559198cd0c7675043b1e97178c03a82b20cfee87528ff894e2464e936957f0be2b191f4841485da1da5ecd4c92803d2ef8450af74ac6ead5e22950c72e8b77392d1d4005c2b8b43f2ec453dc27eaa99f43d387a61b475221a4aea5f06b22b84af917b80f920ed58fd3fa91113c794e59085f4943c22d1aeb2118b6f767dcc0f1b2cc52ef7b7be98dc1202ce360c4bb3c89d4c69b1883872a4f910a6a8e31210dd019b9a4b83ee20d801ce574de6c79e215a36fe3c30cd3587a833793de379241777e0a82b229bd27de1f7ef595fc152788101f114fe2509d27d87f9e4121a3566ea0ab424be27588d76fd5678fb3c12e1d96d5406f55ca165d751848877eaa9d78ab4edaae1fbbf490330dd33dfeb945df30bf6deb98b607475d2a73190e231aeffd58cc9222cd692a06212bdc456ce406629eac76a8773838f23c3c910f93c5c64a53b621d7fc71f2094c618760c13af4db67c8048ea2f767d63be7631d2222956f9d418a079cdfc78678a12b3880e1916cf610c2cadc7c341a91033eb70801cb25ae02242942587b8bbb4e60366e377a2f56af067899384b7bf05d3404eab77eb7c7145531536a8f15f000e29b3911dd84c11822690a6e4b8cab339cfbbcaf165f9783ac73b4f1b47c394e6b2daf8147d2c532cf1f5a4e8774cc9a4325298eb5957e3269b24b3a5af99a1179c027439ad5ec989efa8bab5c50e113bd1665e32c757d4540306295f06450b0e13e2b3800ee1a646c39829062337a93af9c632389d61ef55f45942d4d5460c4310123daea8181160e9aad91d698de8b9bf2657945ab27494da39e7026f3e642b48bf37ae44868544d478c079b826121a8936300f778e0bb0562cc8de339b6ea01964ddfa8bc2a259695926a7c65d65ee4ded179794923a44ceb13de5fa531b6967941af103e6464f5402df90f7d92899722e4de68446c873cb85336d440bffcc564d72c37029edd05ed5a82328dab15d48bd10a7dae614dc50b462bc32550014db7a395180c9ddb2453533b6a92291fa02699e205d2245323248f562b521662a28668dac85ad780a4365ac1afb5d9d46adabc295419c6ff74dea25c9497b452ed2dca3a137e7dc67be765d394f3f19e696b15c722b893f2f6dfe6cbe5fb65d328ed7a9ed4b5d42e3ecd92bc9cf29fcfcb6afe43552e17fc8b1d10048abfadfb9777f4a2931b98db710bb195756658ad09cec528be950a8010527b86b48a1be16dab75dc0830a4956cd1176e84b9953e7123347d9cd4a0a09a711b488c4eeaee71cbba862e5bb93229822318d9c023f0da47f5c7a90c5c013cd295c5e334d5033724d1c4fc06145ae6e9710a9c859bf3339717926242f32189704620b209cfa3698634a78f4073de53b946deeb9a08770d1dc87196edaca8ce8a694ef963387d4211ece2d0b0aaa3887b934482ccfbcc38c1739ddf413771caf99e19cd9a36bab3c83392b937d4efba8e228f665aa1321810ed769989475794241555834b9282d0cf59cd7f1b5611f662a442ca2dead89e1fbf6f22c7db1e417d8b02b0c4aede27effdf967aeafc0e2c92c29a654516ac218a5721a28636af202cf581298b967e202f0c81572ec9b030e2c6e926a4a1bf392d6b50af78120237c376183f78e0d2c1412e164afd5362345cddbe93719910ff1242f0bfa94d28559f70a5958163e0df50f94791fbc6b274ff84afcfdbaa8dea3bafddbb5639af3e0f8a6f7d44bda096ebb27d42b0e478aa557be9eadd25118076bc8189d527ff293f36cdcbcc0d67e71c9972f043ecc1eeff137f1e2d936cc1087077ed34626ce209a146918f0fee0eca1375823df59b886c9cf0cc823e2cf88e50b6b3274bcfaaa5305dcdaa289b59b2922288bd3723acd69149a46950de750307f183d533629b6c2c8724d6c58e53d59d347538887f43c3e3de7c9f53915070cb9a509b9fe495934dccc61441c7e6e66023cc3d097a490a78b3abae3e2f0a3584f04fa8ac15a962148a9e4d935bac5ea35cb1c26136566325a05dbb702ea2af6c20e4d5e6e6a95876bc5d70a2a3ee81e60d71a56c9e67058e317594a4933a3729d09c18e8d364bd31c38abb93ba1d7dcad07292be1f6477cb6cfd046d7179dabb8fe2fd4b46afeb2c66160433c0f81c869b3dd2d10113e63b1c70d67004856d40d5b97e585ef3c835010d750fe97c0b263c69b85b705fb6813025f5b4ecbbac046a79c10e006bb5a4353e13cc8b202ef9ad57978d49469793838eab9f8792be07574e89e4750bec077b462ffaeed2ca50f1aadc4ed1de769ee262354d0c26d89f4319ca54392c559aa3d486542e1b7eed991b6097740fda6f80bbd7e5a5e1596c2448f965664436600fca5e4e2b99d74583d3a223221ce52bb451cd7bb87272834bebed10d72c78a5e8c568e346073449785965d592794d13a324e3e5641aed983fc82380ef98d6e5c6b9140e595bd45ad9d3cc56775cee1c086d4f32b779dbdd666d9f092a5c36929dc234132a3f1de7379f687bb8a7faa95fbd48b9c7efe3ea9b39a71cc7956ec4f842400d57968ce05ba3840a8b289c4f3ef997d78f8426543736f2d6ee0653b340b50dae14f2a986418140cc77b8fd394a861236c1004e3d0691caaa538365808e5a5b9f010c29391f8d6e6024638d426393b16485e71241a391c083006ac507e6aa7dcaaae7617ee36c3bb3a5af13feb232c180933d7d7c99c8ec67b29076da619b194559066d7edc52c311295c7728d83d24a6a7de3a7c78f5fbef9e1c3f3376f4e9fbd5b6369ae4b950f8f9f9c1ebf797d82ab7a26099cabd6e0ceab45ce5d1fc99175a6cadb41f47d3810b3a93d0ab729c31f179359590195b8f3d328c2d96057651ed08c13c22f084cee2b5a2cf58fe386ce4574103171fcf76932edac525f91949e97cb029a706da75d3fb92e9a196db2093f96efae6ddf49671b507bdf8eb615c671d90cc17582603495d0ac5527ba6a598336d2cb0aa6fb3699d293ec1f7448a285fea92eee2c2d2caff057115c28924186020a5b5ef4a4ac1a11e551a87e6bfc3dde4bea8994b153ca7e86c17c7f2deb7fbfa14d30ba4312a5f00b64d9756f41472daed43641e9aac05e1b23c5b78f7f78f6813b4a7ff3967330f9f2e1403e6c907fff28ff3e6019670f1dfdb669c3abe0b6880469b8ad3c6c7c56d3a49acc9e24797e9e4c3e29d75a66977d6fefab5c3dfdcc56c97ab5d4e48b51bd1c454b189769dce62b1f6244469a1745200c0cac00b42b86c423574fa70fdd7df2dd810ce1b20eea92d5ca528d628eb659d17899e44a5b784f29dc4e3936f790da10e3ae5b5d24554d8f0b1e67ab4f1e1cf4dad5a3a0cf5e54f976e1602ac66841ab3aab9bc8289de00408a0edad234e117dc0e17998208ce44ac447e44e9c08fe1198510c5fb31b359fd6a9a8bd6e82aa6eead5f7d758d7fcaa6454cb8755d859ae7cb3086be2b98f1bfa79c360023ed7c200bded06aab628a03dfacf56a66935db4183eae926d781a2aa309291cd5b30e3d00019f3aa38d33670b8a658ab7a409316773f4da606db4788bfc3d3dba4fd766b13a2c48fdfc4d6505b8cc0c2d5be9658dba3c9c4de9d7b46be7cf16179cf287fba74dc45112129cfda7c51c8b3a41330d1e110baa850a48823aa50e368e15bbf9d00d23f5c816b6983262aaf85459bfad066686d488315e5606e0272d1e67852161247ff423596d7aa27408bc3ad4b41adf8872a4b4100836995a5fb9719bd427a3ba716dbe8412d2687b657f839018ee4c77bf5f5fcbcccf7eb5f974905834960dd0becb678fd7867fd669f5b75f9e5b65d669fc19efa48337508a2853ec5a1ce6003e9cfa42a2542a81dbe453ab51cad84bb05489c6020b049598c56985e7b8ec9a635b13dd772b36dc90851f334996e58e4eab826c66f82446c3384a7c9d41a3f877fc268684017d224d3fdaca17373ed21ccf38e9fb6c3e0472f352796d657716733ea6d3b4baf75bac27cdbd483da4c84b3f4e70ff496a7c9b4cbec38736286ba4db124e68c2b9692acb0b490dcda52a923b07a062ac470ce224f267456e629ad46e3bd132e73c6710c678b38ba43bc4bf03aa7b49a6fd44c73f1d82ae5e99e4d2eb6523ea8590f77735b552c50c63a27c78ddd54a707abe0a567f0f8e5c85b5abdc59102771d18a8ae0a03b07577502136b6ae56aa6c3ae36cca9ef5d0e9812b7c2749459bfde542aa7bc5675a5e15e33dcf35924768d0a0ade24776ed6db07a5c4f68918aa0590cada7d42458ed1c0ee0a0d80326157a4459e88e8c81ae83a0d28c229db48bf5f7d77ebd275102d6d1ca2bbfad0f073cd7465fa268e950217d1c8dd1641f1add17022570c4b3efac00788a90ba5ffded2e177ef0e0f3ed1c41acc2b6d663b4b2539c3b2bd427a0ceedbc1c566191738d4713400f6aa6ad487a529e60d4c758d178af4f7e59d64d76712dd5fa7cb9d082ab20619cbd07078bcf6ea83d802fdcef8317038703df458edc82d4cee409c22735e4503ddef1a174f8e535789c9a4cb32261630c54ab90332a5daa30d414077927bd291bf9de082543a62cd5b33ed5ec3a8893d08e0b4f24c99402873fa6d9b730c3eff55bc3d3af70a5d91c78a68ac7a1ef60016d62a59758fda015d7b5dcc3f252c8476ccd7b3502ea1ad185f7673aac3decd96bdeb3f8d5e3bf7d3879fcfcd987e3d7a7cf7e78f64e05b787d4241dae4c54bf7ecef2fc55b92cc0a5acc080f23914912a047701532bdd0afaa2e66bc84fb354be485954f4f2ed8691d03166e49b5b4d2efc98ad21c00c1567463e97031469d58159b6c7dcf67efa5460b29fb6a4c8550660f2be7c21e033e613a8510669cad6eb70441ef85eb905e450b8d6e1e6d55d20750e5ef26433de7b9e55ec840873cc1da17fa0f86efec0befc86c23c1aed073def95761b522aecf39de21500b24f82088b760531b0b2027f8bcb073bf59a7ede65a0010d193670d34e7e1dee64b8032f939d28e5163a60d7f6e3ee130330d7aab24bb65c3d33689d019d85cb8fe470c7721e056ed673f00a8e6e6181cf1bfa9c1d1e50ab46dbe8b1a29bb4156a54609d47a69b0c8764ca5d43c8c7d36444f80306749fa190332a5f9fb1ac0cb59f4c697522b73d8eef54b42d12fd7b439f57eb87b601756d05d039144c56a0461e6885ad2e70043081d4652a79f3417fd4600bbc4d69f8645b0f20830bb087e29098a88778ef91f3628d8d235bf57d7298182d7cfb8d6ee34c77c888bc4a9a593ca1590ec093810661c6965f903649e5ca7c228f16a92787eff7a63db6fb1d604b5e1d13903c3810a8092988d425a967e51549f25c15d7edf34955a9b265465066a2e4866e5d870d06645e5634d4de24c927cb9caf08d612498a94411705140c6e710ad6e5e188fc116972fd58423c1f1c182d2b3063455cfa5b72043b146c018cee3ef9b3b73967587cd6931026de14bff302b5b0f5a88dc58fc1804cb8e751921424e1cf45cb0b39e482546a9b41709789711c0b33e848b5c9762eb26f10edc59fe8751df5cea05dabe9c6d72433d4abe2a92241db2364dbb234f262c5ed4464dc3c7998e249fb2a249fe57bf07956c8d3bc76a2a96daaad74e3e4ec59b114064b3cfa81558ca709cf64760e54ba4818377b69ebf881747d0806cd8b1ccf6bfda0477c1fd4ceee06fb2d1ecb7d80b77049d80fbb8bf641eee4b5b0a57ea7e7c4fd96b8553ea01d1d1df6031e6f7d203b3a42ecb7f81af582ede82cb11f0a49e403ea7dfd1c0a2ad2c72f06fade2829be563abf8a6e7bfe3ce68e00b4b24b7803d06654d8d5aeb1a343ca12aed77fab9cdb4a054e5d56cdf9358ea2c5d2d2acc28969562f70caaff8d3ca9d6037629cdd4b77bd43227ca090c9b26ecab91a094b17635b20422fb3173a7d0846818cc047cce711f9dd3577208f7cb187902c2d37669985940a23f2ed0102bbc9d48f6805b75dedfb6b2f26e84a1fbb01467e7d43162f64e45c1407aae93640794f43b675fbd061fee14ac990f07ddafb20dba9c477da27e5b2682c2fdc48b564346b7e4a308a35799f7ee166c9fb6e876286469811cf128420cfa7841f6384ca4b09ec2a43c72800aff3082c021dc3c310078a61e2280717594eebec1ff22b5d5689e07d3c8f2de14a173dcf1af35125455ace95ff6780843be9c645bdf8cf26997e2893adcc60e6cf499e834c070f9b946c2c9c17fad2e97baf6f97f2ee49be72a18dc65336282d78ca86b67f4f51cf56e12915dcbb3d65fdbb1c2a0887de13621c10be697877e22f927957e2174519b5ce68369d358a8cab6666160077525b7f983056f09b92f31d526c40c4dd71d62409fcc6537697f3722743df7d407fe09165b29b6c018ba499751c5251f48603f85bd0ee1614694e9f371843b9376ebb8fd6745216690da8f44396e24d11d0ef925f49a51f929b13f16fb7e375db464207989d779c3001286fa29b26aae308ffa6e40b34be92386d33424ca12837d40be89ac33f14711cbb198c3085124c50240f7de550a87dc12a9d153dafcab975b68baae4ea6d52cd6bfcba4069d0aa84fb22548548523ba743a8a4e6e5637152e457aa5091af55646815a33aee8083ec34ab9009d0972fc49bab5e4db90d025322ab6ab0613671ed3dc1b3ad1f9880fafca149b0855f370c943e8a1aa47f0d02db802b3eb80a23005dd5f19e01e04e36c0552a0a10fb96486dfe2f7559186ae16406962f6a03f85ce00741a4a9c670cc604c5a34d14e9df7aad299cf65c645599148903eab29f5b3e58505071b5bf3e2b498942930f62723f2df276f5ec79c1c22030cfa1f103527a00a72456383145ec561fdca76cde054b944ce8788d7d5885b4be505786c22dca93a7e9db09d376641ac6736e7e9e9e03f88e96074129f52c3c6e7a2ac9e2593996dee6c396eb2fbc949918cc86a0dee7f3c638e1e978020cb9ee2ae23263c03c1a146759cf13724e91098189cece2daa1975ea055397d089a5efae69a43796ce66192805d9160d443c8c5fb302fcdaaa187e3ea328c210e1dcea9b37f1dda6c4f67a96ad0aa488fd0d0ee25ba7ed1b736e0de050c9de8659fac048ca1d8cfd7e8825b6b244f67b4a6242d8bff6848bd5c703de47c9937d922a78c5734334aea644eb556ab4fca22bfe6e9795237a42cf83539c96ab2ac691a3b0bc55cf6b03582af7e2c1383559771e377a9c1a15bd0ea03280215986862fd539e1a75a66f9b4516bbcec552fcb89e90a127fd29ad272db6686c90c09d161b25eb8a0bb31431bf6e21b0f6b763284a5988f982fb0807c42f82c2a8e1fc70ddf3c0365853f510d612bd88054486bb0a82c6200846d3d70eab64aae62f6b040acbe681c049c8df90ea7184d17515663de5560f55d74d88d07443dd190d807bd9873797f1cbf2eaa18329002562db750275d224459a54692b3c11216f2b782fda21ca487b9d403e5fe6f90670df7eea0aab5c567ff1815ab711c1daa10714d4ca438a206e3519114c1a1efd68cf91478294084362791a3651879d765d5deb16cdca281e9e16598ed316760c061d544127e459daebd2360a10e3c140e77fc85207139f833581cffb83b3384b1f9afdeb719e97577ac7ea809809e1e2c14a64fa50723cb2dd109f351051080156ee0c8fc02661d948b08dc26336e1df2c7c057f830d0304a0f30cb7b89dfaa00ab924e9288e7b31f41fda544b8a5e72dec6283ba6247a43b6ed4b5ab665a7e86f30d6bfe7728721f87ceb8aab25ff89b88e8b4798e7484357952f42d4a8af0d987522402baaebc9222b0ae8f967d7c8065b986569374dd807d366df4bbb86a005660ec843927e3e215c240d4c31cb08c8bc5869ab6e8a758c40b821fce0f1f7494dddd08320eee006af54b7ec926a7b7f547d6838b2011434a891362a96cf2936f34f932611eca8cd597f43e78b9c9b4cfff7c9df62e96546bc81d2b6150aa2d40e5b4f953c4d2bfd3268dd3689104616f2f58d9e3d9e2a6cdef5d3b64871708ba68dd9463fd443ce1340bfa05323ef832bd50164dd533749934dd8ba63d951705c7a43dfe06b674c0247ee8249a0881c2f59988bd00056a26a3a06e6234697321810e921b199513922e46a460bfecd398c89255e9309b7e8165503de9c14eabf6a9d1ae3cf50bb21348f0a2d612c9e9713beb2a596a06729980a7a25f90bf6e02e1036a575b9b8f56601e086228649194143e90185b1960a5f539af27d9fd4594a09e563409a922ccd408281ab39c1d22abfd6badcdd305cf7c9fbd6413bc376ec1b5700b06b772d963428eccd0391d1462b24ecb856eaebec6883cfb32215e59de9240031ee125e6efd26f62048882f3420f288f833627ee54f86e420781db86eed93ba18deae67b2d66df54f820bf55266dfa4afc68aa0734775955be8a586e5e9a2cebbd15c4ab393eed3282adcc60cea38a0819c9bf40b184175ee9aa9730bbd43615dc399dbf4d18df6e9c6fb7cf7ecd59b9f9e91a7cf9e3ffef1e529397e4d5e1e9f9c92176fdefc05c6f9fc97e3426bff3eedeccb7ac7e638895dbaeeb44dab3d848cc89bf35fe8a48993bacea645b45af709de6e6659dd94d5b5de76cc08591b1119a93dce7bb9a6abf9c157947b8a89ec66d8fe07c653c96ff0aee62c24d8882750c2deabcba86c2f6f2012311f9ba40bd5315303f421eca232f8f86df70e58e6e1aa059f68e5b131dfd4c56097841f4bcb39ed8d3b834c1338f0bbee07f63ad9c173eecdfb68998da0ef9b77e6fb6bc77fefada0cc4d6bc48f9b21b995dbccdd71c64634e06b57ec7777c2d9bd13e0d0c236b66ea1e0923ee39585b8a8bb26cd2c696242de54fa692337552b0b1a6374149ce322a59fc908ae30ad18cd8a946747d104f35b8ee331474fde08a6fe307512b99c1db42fca8ab3f5324f4996c6582e684826e2478948528f6444a961d00f2731babc890e22351a8d48969afdb887ec82ac2e8f4664ff0152e37ac620689ae2d806b995dfa306cfe0ddaccf5a68302032626cba5ce43c34adbe7ead3d8cd0d84879e78ed376549effd2278bb2ee93a4aaec4994e3975495d0b0ce93c59bf35f8ce766f1ad46d744582e41a278fc5fd678d0ef8c6fdb6e576dafa83e5faa37d047741a637c6fe0102c3775b3f1d4e377d75b9c7ec87f8b5207469001df0a47f9d65faa23c908b8a8b05c6301dd3350f0db82d506cf7a4868697336e8950abaf89dc33bb0e3ded657146c77a63c48b42a7576a0e6ac1056da4a421594ff36c773db00c7e8e1227c5e2629e3ef8fc8a1ba23a9f904c8af98fb417cf9f8dd0fcfd664700483faad5d68fc1cc860cd1e1ca1b4784eeb3a99d2f5e160f62008451d44901259db5e49ea854e70c0550418002842ab6108fb5d04a4af0b833454d6b8ad18adcc51c14b0e021efc0a3893310bc4f5204094de592d2d7d160c780d58f17025a7c9794e6f7ed7158e337257d757c527bb74552e1b5aedf3271738f6325041f116fb38eda7a4cad830d4bbc400d75709565d8ef440e576bac632b740e7494df7f919fb8ec3a304afa336df48417f78bc2bca751de8ddca0d022d46fd5a3885f644c970636378833e33acf8e5cb48cf40ac6e6e94ef6fef859451944a9b40de4c5f2d26c04d789a1b7cc2c7715c957d77a26bbbd682cedda00aebcb1712d6c07a1cc2330001a7d5f6bb38202148d6c238f4e99ba76f383f56dbb9710fd3012eeb970b17460f35ac4839c334de2d0ffcae2d0f9b194d52dbb76953b91e529bd91177df46af0e07cdcc9f9f34334fe6e1a0b1bda4baad1e36e7657aed3a0a0d29c1a7fa1797bbc5e73576d705fa233c75c9527196dad1b544317b20643ae7934d395a7d1ce86607f721b48f3e78bc07aa107f13aefc041e9103b66967f329a9abc968f5f13e2ef7fee02c5e24cd6cfda8992de7e7a3a65ad28f2de2001c5a86acaf73036fef589fbbf54f7f72c4643b5ea8ce7c13d2b31dbbdab37d38d0c4ebc68edd6a99fc9ca078ac6dcb6fec3868550c3156fbbfe3a935e06dd5b84b61fb679f9c88dbc38e9bab64e7d09d884cf296639cc05356c704501199cc75928a87cc97c6a1404e4572e31813fa399934caff249be2d178cf50c378cff8041dad407b26ba8484e3541d0cb3d45b5d553d1c687c7ad04a43de7f985eb871e65e2797e78988fa267e3ecd2eb394c21413394e7cbfa05cfeee1c21ae2df6dbb676466cc9f4191edd052fb61bab9b0a547c59d3419e9d0f40819048e1911f5e255921c6a38bf8608b0def0b7a253c21328ecf8d345ec31464ab211f14852364d93732ca8120e859b4299296bcabbfca8ab4bc32f6018c188b64eedcd88ff790f72474c566772642850705bdc2376b6d3794e33de3a6686323b264e7167cf7830e5c27528ff524ac4fdea371d743761610d93478cb6b2e22892e615f21f3974b029ffc462b04139f218183dcf3c57fee9f0b0ff0ec67c645cafd4595cd13c63f4d35b427bda65770f791185848198e824e902d1ebe556c5551995c649f697a5a9e960be5973ea4a701dc8a2479362d46e3bd9c5ed8a14d0f1117335bf7786fc0986c7858e65991cd937cbc77c46f80f5fe8de1799a82036067db9346d03682730492e205bf1dfb6233de626a2765b1cfb0296d00c2bbea130b8c48c5652dc1445c4c63d9c4d0c26df577a0ddd2eddeef79b290deed6eadf3ea25c99df51ec80f37e8384db3e4d6faaca589bbeb35dc5a76eff6825635dbd36fa9dfc606e50e895ded753798ecf23ccbe96d2f7289d79d755cbc5ad8bdd74d32bdb5cef2070c819ea234b5dd6cda852ae1e6c91711030803eb5b201fda345971b3919c943718c9c1c62182da63552210087b3b65ae259fbf4da6f475d93c2f9745ea91d0f5796ee5113d660f8ef8b5525136e4820188f9a1d78fe58a1c0b351d792b23edf4c96999d44de7b71b2bf2982b989ff1ab085d476a9dcfcbd23a943612fa48b5138b6b76a17054f17e861a9ff8f4cd5b765a4367436180ce9bfcb1c9f2da67822efc5446fc3ac475a562ace8f8bf3a7287c4a99e95579116ace565ca9088bb95a61416ddc0554d26edefc568c64f1fbf06b13b7c21361092600415be20e9d6f0969f5b228dee3bfe20de188722ced8d16c74dccaaeb4742c828ea9e82c0d9dbfad68ca6ff2c5a708d74fab3e112503906b11bb0cc0e698fff0d797db5f4e04dfd96c7e6aa32312b7dc53a0d5c1a6a22a925c6fd7b29723d9ddb8bc38bd5ed0c31ffefa327e9c9b62f5f352bed443a947fce48c419f26d376a06c0781e0d8b70f90d856db61c9ad1782934947f250cffd79fc94e459caead564c4c8ae63f7c81750d887362a10c6a5fd2ac69a44beba18d643ebb11e3773d33210ffd2ee83d962cb9a2cc9817d93783854887163b43d2451c6ff98e1700228a16d42f4430050819b77b90dca69232e7161d3d2b30bcbd3332e5b2ae895810556ac0c153d3a92c470a89f5b280d8d8cfe005f7ffa9e3dda06162b61e0bbf61830fbc9041839f18e71c32863b8cc2f1412444a8f88277108fd9ae15120a3d062d5153c1ecb9c07dcdbf5d426e18edd34b6f7764ab70ec295dea177f211ef765d43cbb763bff812379de29fdd7aa499605b775c0d9b6d7fff632136f054743d2bd092846a3c750f71d45ee570e0bb9d906a57b1a9d194f10aae753d010967dce904e3005af50ab8ea171e8cea2862ff42a5ebfbac3e168c29fb074d39d06398e2812aa3c51c453a7c18676fdc159f8cdfa2581d9f2d88354f404d5afeed5455567624e69e5ffc459c338a67cb561bdc62b1a173f08a59200360c128cd78d822580ada60a1618878609ce0cc88d39060e150480133c0d96fc6272ee3520d62c012659da3bdc4d4f13c6926335a6b31c8175f8cf814ac4af632671a1583c8d78cc803e7321303ca575ce5820a22169298085f182303462c009eec844de2008a640e51a967e5324f9f66f53cab6b197673b4121ea154294b29fb104e8fb20c40e2a43d37bf0af3024d66d8ab9346eb5edc942fcb2b5a3d496a1a19834e5e1de7f5c8d1483e7559dbcaf4b260c80842f46cfab2711550c8880862194842744859e721ea14e7e553fa993140b41a1fa14fde3f1eb6357a5dca9cac2c7a5280b18e9998b5226e2d66d1c402cbc09218adcc624105f4c43886744529cc41ead1ca04c20721caf895a50ac656cab747753cde2383230d040ef86805bf749185a02c4ea3a3d5ca1c454dec5913c27815c7e2fd8e4c312a02198df622cb7384dccacc03b8351de0710c1ed39fa559c33accaaf78909cfdc272622759f1c8bd7d5f2f8c4ca3eae6872b340a2c0048c1bd52cf326b3cf5ed86b81209d8153de076e0b480088a508e0760341458020383880bcfcbbf2ca3c4f576133b326a7483e27caa597bec794910df0eb784ec5f533f1c84047549319ca287148a20841d3d2bd5cb57ae18b785cacc84fd27fa132d5848e9378fcadeb052d2f7061ee5746a0895edc6088e00b6834b004e46c2ac8b2e3b0498fb40d291fbab56510629bd41cc259c06a3ab3a0ef29907a40fd61be41075a42ae5b08e282dcc7519e15fe90e626ee7854d0ab9f8413b5d1919e0b956f729d58c9bae3705c80814c8b6a4890ad5ac3eda4daf793aaa6d07e8842fb9d29b4ef5228158e225c6f1882349d6904a428ab42cb75420e5567e128023e0a93b79e9bb849aa29955ef9f044497a424bcc6b3c6c5924797a7388a3602f18873db2201f0e164777bbcc5612a1f52d10a0d95efe9f2041d3dd0dd466def8fcde24572f92c2a5319efaaf43662f9ab914817622337753be2d7a235212d6d193444024b765287b1d7948f5f7decfef70d11871142d1a01c750391ac81037a797b468fceb8a676d5e547eb9e0df7b49692f3d592d5fba86161a94a53b2db5ad54dd6ad529ed4ccb4e001760966ee4f6b72e8aa2430592fb588f81dc78bd70054373221fad8c6acaa158a597b2eaebe131ade8a49b8990dde9009ccbee9e0c6020bc4d9400cafed6c400cfaadb5284f0ba21a9a10e93430d03da668c386cea2817b47853fc855e3f2daf0aefc1c48cab8780eadd296897abdeedaf785b2f7597d329adff5d6f7555ef46aa9feab65410bcba12ddea26b22cf8c328bd822c9722add78715a56f0a5a9bfb2b81d54dae12e5b582d4a6d6b4e1d879ae115497c77bea9a64e32dd1c9a44a1694615d42aca5d73808443329760ef3de1ed57e58fc6985bc516a2b32345155d015009b1c259045080b342528c707c7bd4a90e3e5c0fdf7be4f405dddfd56c10fc67f6710d2738bb5a1ea667aa61dcdb6ce41faeddac2620bf538d65d1b7163a52f08000b90b7007ae9a9ef3500078a8b132d4f6881a98b00b820cdc016d32ee422464e3a035e348c56bf22cf015b28de070105b9671fe8b209781c2677f6741b8abf6d7b59ef0cd01bd11ab996ee0cca0d5b7d0b0e786fe4735728ea5f2797d994bf36096aeb919378619eff63951b9e37246f938a493adcc448977c9a34c9f32a99b2c3d39113c788c7b402eeaef9991ac6ce52ab7ebcf7bf40f442787d281c98385e661de79fea74e9c6920a04edd36774377ad4fb1561272388799fe4c939cd6122bfb6fbf2857cd4c0c9fd15acb3fe48d6ca26e2a293771e391a1fe5fb8547f7576d8eedd61fc3da1dee8d5e988fe8b914848e275294d93c8ba2eeef3985f6fade3c7f1a673d793245cf9c8049eeaf74d1df7bce4e93a999b02699e2d93a4da69ba74af8bcffdde60971ce489d4c374e96c05acf14fbd4d3749a4cc9fd9528f1cf3241f211cf3fef344904ffb5274bbde0ba29273403c219a1f9b4b8a1c9e8c0124d616722d948c07cfebbe35cdb43707fe5406243fba81959392298af198bb5f3705bda87b39fcfb39c7291997fb14386fec1eddcc69bde794b83a0ce2fba6fdf014ff7e7dcbbab2b6cc9c9523a2c59e2a0d085826fc1395d2ad9e05117614ad8eff27de9d1c63d5b983ad7afe915368208d84694c569399de694650ee59b16a9aee05ad6e4927a928fe7c9946a8507bf15d02a8bb29a3f6309875a57222f388e2014a42ae5b1002fcaca8c4b1d13be5c099f946c229a955e2694d6e46996e4e5f491859fab65794a9b24cb79ffbb3fb977152bd63b6c06cef7105b5a47b219e8f20a5b8030c765f12484df5c3befa7e5515a3620e7933c22e3bd274931a1f9788f1b8fb18cf19eefac1e01fb4d38f3e0f598f76db5d5754615de37e8166ae1fe2b1b2ddddb7a3999d0ba1eef293b32d6c6782f843acb8d7a6b228d75fd68722ae514b8339a9a372ab49ecccab2a62463a0e338e618f202ea30af30044b642d7415ea749d4c2674d1b0898a7f594cfbf12f0b3a65e7ebf6ce08d55bc5b8b2b73720b290d76f52874e8bd5529b86905b43960055d9ae368aa841520b143feeb3a67205564b6069f78032c45b20e2aa8f809b3980b02553984ec9ad8b759d13e20af47eaddfc28d8c1a048e80a46145b0bc26b9ca9a19270c888a6ca6cbd2e23b7d1b5f09cf5f4e1b9267c5a7936aa2a5949114290021780846612a6b9391bddbc521a58005ca7518a49a13fb57e7b6ec132b02b2e106984b03fe37ab8cbf94a3956c1bfa8cc27e089017a7cd6e26cc548befd87ed7bb72f70ce806d266e95f7d45ee817d843c727d4184fd523adcc2cd869cd15319b0f7357c9dbdf2d1e8da8c99a7f31bdee8dab2287f242c7dda8925ce7f22db5b96a07d55f12fe9b9f36e05d06dbd0df925cd5bb81bdb39be98733b666c9bcd3b5eb782906cf9831b4735aaad7e43d5f8b4595accc0a5970d43991e078a5bce206d19cf8676324b2a9a0e9c721e395d35b48d3fc8b7463bea932d11482c64a22cfb1a4f2cff91dc05f9cd512cc3f5cb83e6788fbb2b3222b5e221ecd04bc7f09d91cc916f8ce4177215a55f1609f1153f53923b70564c2577910b54800be422f0e3bd0b7997c76d1536f9a37a2f36e3b7f8b2ada6cd899beef178656e36ad91d1db953b468c2f8a0eb15fbbb9d17a5f283c0388758191e459c2182103f358fcde11928a8b2a42b9c90fdfac7701769e55cd2c4d24b4efd5d78ea8d166566493ac11f7d4cfd4d78ed078901579e7fd44fcde15af6bfaa4cc4b11fdee99fcd811d68c66d359c321bde03f778433a749bdacf8415a50c52b90b033697ca2a79984f75c7eec3afa494569f592bbd7145300127684d9244d539602bd53f17b47488b8c5693ac980a586fd5d78ed09655cee1fc58e5bbf6ec2a6b5478c553f17b4748595137c9b44ac47bd463f5b51d34c920df0619a3669962fcd4176a65b322eb285aad31f28ccb4aa7b686edca849dbaf09a365765f5c9b3fbbd147edfe57625bf601bf8392db485e90bf71d7da27cc7fb6c635044b3c8bb61c3be8b988d66c45d803a4f18b6455330f04aab2144ccd82aca736163c2c14ba7c69e085f305d1a13457563e8346b758f6dbd6290f9c474d07a922f44e8e1a10910fe3a42e76301d94112c2ecc56a33e4f12ca0027eacad24f41eb91d44eb502a777f01825f898037a37243979972ab07f97a5f9525f4ae0bcae8dd5296d17b29282377415942ee8f1086dcda14886bfa61c2be4111b167c902622f03b9700f9265e03e054aaadd4596623bcf87264345e086a150e6491f84d36650546e06b294dc2640be66f0b28466ffa08cb80767b9cb2a87b0053b56b0c517c8d72c5696d00c18a909427e5201ef892437416fe6b55f743776214fbe47a543225bf903d972e45696c8f5c97b9677b6c99d2be6c4d07283257f5824683a7859d7d369900738fa22612b2755e66029ea538ae1cd047a4ed580ce901704716a129e0eec17145d46596f16e066ae53b010ac71b5e78a1c1e093750717ca8cbda6a401fe3450e1a162837c049016b968cd4b745b083a81e6e7e6a511feaf8a1bef52142259883804a31c2bc4a5102b92ea1f8cb9068095be54931597d2269d7202199c69068c955b70539c5902069549551e2a4fa3642a14a61829d2e2d4534f56d042d9d3237bebcd63a92899796233c6badfb363fd9fb4ffc5ec527060d9950525f1713e8f2405c9b789911f4afd154d706756f7f8cb1ac8c6a9a5c259923d4a040678841c1b0020b3c08c04fb2139fccdba825dc6cd9a85829b00e0e0aca8d133e4207d4f7572d80b8a983ebea994c12ee7d093ac2364ab75879ca73850833418003da3c03dd366d711d8bf8ca45968b0823dc721abef462d49a14d73d1d1a011992543449b9da2bcbe93bfe5b5a94988408c6f961097159b0cd8f16296f0bc774b3371f5945ce7a522b33ee8776854d25d70f110eeccfe39a49733fbe7b19b1be85463770f784d65140ff15419d57af7d716ae19635b2d332f528cc3ca242601da12381089b8fc4edc807fd216abf2db80b36e6f7a21514185ae03cdc7185918bac48f2fcda923742d3e808375b2e5179ffa38576fb219551a5c7ce735c8da17c1536ded370f4432ffd20d7dd868de257a580e75eeec35b74b6106f3cfb6688d043dcf7e3bdab59d6d0f15e9f8cf7cef364f249fc4cea2c29c4cf59562f92229b8cf7cebcde38fdd7dcf61273eef84401c3b4b3facd8216a3d5bd7b4145b5651051d6545d45779c79f8a881cd84bef435f7dcf07a38cd2ed12d64cae1edcbab66dbad7cf09a0314c27e35c67b466865c29bed76578520baca5226128df71e1c1cfc6fe841478d057e8cf0ab7e89e0d7b4cb022d6fdc2cc7fa781c56f28a2f7e7afcf8e59b1f3e3c7ff3e6f4d93b2b2652972a1f1e3f393d7ef3fac40efca3aee52d730397bfae8f44cae140d4b0222459bd40df8703411c1d2e88759d9597c0cdeda94d2e93325fce8b9a64f5be7692428a72bf5e244c68c5a608fecaacee2cc92f482a6ebdf6b9c4ca2930c90a5ad93498cda7d879869af7f19e089304f575eb6d663d8891f81b46c9bdafc3eb416108def6d84f3599e83a5af13f4e96e48c2cdbefe9065a4919cb1574340587cc879dcebcc45d824c301fadc45f27130877dc7116b02cb28b7a251556c99b115cc3dc89b563423113312aac296af52984bc0a85c658fb0db0bccec929462cefb587d121ef0597da118d52c179fc1438bd55feb94df7ffd8bdfb6c83d3dcf6a22c9a9ff9617648fef3e060bd3e92dabe2191fe0bee68f0e4917dc3f84964ba0fa1d255761bc53f3a7c7ccbc152cad7a17fb06c6b49f15f36e1365a339a548ddbb34e8308761bad237e44c67bea839b568623bf599b0dd422dfd31a62a796749eef7d616e0fad184a94e6461b74b67a27aea027c61f212b47faf4fa6ab3ab11b2d212a9565993e8ef7ffffbdff75fbdda7ffab4c744402961829b636089602451a8f65ebb43b5720468b7c8cd7bf1ec9a12ae9702889bcbe010de4a8dee43fbe63849253ec0485f7487109255ee061f712340a227afe0f4aa6bee104aa2d6dd60046f21004af8c63c8418ac7c37e83d4f3e51729a21dccccd7b082f7561724744c5f5a34428482169a15bfc207d815277839fbce00198695b801052b2cadde0a32f940046c0a6208493ae763758fdf8ee25c0875b258430f9b1caef68a6849a1cce94b26d08ce94287037f8e8eb398011b09108e1a4ab3958b9a152fdc152dd33228c5463dbbf62efa9f473a39f638f9d776b4db52c26ec0cc1bba3a317f4499ecdb366a81ca08dc88383833e61e72564fecdadd1bdefd6ee49490f3c3f735f9ff132266e2e6f933c92c9f5f25c808d0e243a3df23547810c89f1ace67d8e7791e5f424fb078dceaf1b261eeb6e1cf4c9a2a293ace62e0874f237de3e64f5ebe475b448aa9a3ecfcba489a4df350eb4d7eb713d64563fcf0a268cc954d8e347b2cb02644e1bb22cb28628c7d1845ccdb29c9288f0bae4880df337df12a06614190391a115a20ccad75fdbdedf64b3bc4adc94cfb3cf348dbed6dd65a337de63ff7f4d9a5956c70c4afd9efd7b161e49f9deefb43ccde6b46e92f92292496af89ca1530e47e81579ca0d0d4479f207464407bdb8298f4fde281776729aa3070ffae4bf5a1c09b2196532f4f3aa9cf3e0978b8489a352b9e8a5c07bac08376415ca533833af4b711d21ce7c365db28a7145f9f1261afc7ff11fde8ff97f83b3419f189f365e4493298d98a0293a0856d44555ce9fba193d4d86d62db22c08d03e00c424bd7f6bd17864c61bd445b7290a01ee310763431e99ea38a7478626cbdcb5305a4ea60c942a1e4f69f37c99e77fa74915f5c8bec10de7806b7954e2555934b3a8478e104495fae58be185817a236fc5afbec2883c4dae9d46785a0fac3ad6b3fd1179105861c9b485f59c67cd3b3656e75953717324b94af08dd89c4e93f3aca9c988c88264c097c7c1c181f548f9fe4a15d68bfa9bdeda4058d04aaed296f7c915adcb7cc9c3edcee4a1d8c28b4d88c86243f9cdb7076ce864c221f9f6bf0edcb8dbe3bd6fbe3d58e81740e0658e01f4ed7f61407ffac60be8dbffda04e84fdf60400f0efc28fde99b4d90584d04ea9b077ff482620537c00a55fdf62f763dbb8ced601c5a6c2caaec9291849c3ccea8c988bc1725c77b9cc5ebfb99f1dea7efc1c72bf8f103fc38851f6fd5c7d943df23ee2749253cf83dcbe9257f40251ec77c7b0bc1b57ff7f7d64628f2beb46ee8e7a6e5ed061b1adf83eb61d8968fcf7132e5bb17e33a304c54cb830fd652fba30f8d8bffe187ceb61f7f08deadc72166bb96f5e02e066a1591053a002d4093a9da45468c5b2553ba26d734a96a52e6e9fd957aa5076a73f517c90a2e87081706b17c601c8ff7b86f8131bcbf9b27d7e7d21597d27d7d9f1405ad7ccf184d07b4b6cd2303845f4d5b17441fab84c9f4fbe7bc4122bfbefb08f55fcf1ffff4e6ddf1e9339f7cde7681c3a647d5812ae16995a5fb5943e746e348d5321cadf48a8cdfbc7ee644a8c0a1399b72b4b22c4cec51cad2f547702ef15ed230a1f932a3575c23c86f6aa02e54a908cf93c9a769552e8b94df230cc9c76595479e16b5a1dfbaf7d15c58c0378d2d330e1e05a2c8a7eeb55052a5fbb5887382afb45e7cab71666bfdcd25ad2ef2f28ad11fcdf36c5167fc305e82f45996a6b470f49e4edfac7b86c3c18b6f61bfd8babb371a9103f248eaabedab0086d0fe7cd9d0949ce7e5e4d378ef68a55798f2531c5018778678d2b0e599152efe7c317ee06ac0b55899756ce9cbf1e993d170e005e6ed3be3e0d7c92fcaf293081a63ef13322ee9ac2c3fd5b67b33608759ff5538b0c4893f2555c6e8dbd914baec282fb3ba6178d975392a0395dbf529a5f4ba769ed4749f4f5077776fdd3dbec96b3b06a21f72ffb6c9039ceb6b8f9103003140192d9b2aebd34e8f2259c5f63d5283f6ef913adbde235997d9264e467a7ae3654dd96f653773a1876d0886d0c800cafc9337da571b0ee36a4f84a986747d6c6f78a84ca4ead53c5e9db5060eb721eda3be8e9765111136626e33b64226cd3e632b0641fa514a0d8df14d18d05cfc4395a5aee80c3dcfdb0c9d6d8b6eacea106631f0f8c2bd322ff80447879856852752b60ba21bff35191c21e7cd5803e7f146d0a1cb6cccdd2e1fce1e1c9dbe79fa86df14ef04f7e724cf1db89e73856c501176dcd0f9224f1aea8f6fddc287df3181bc4f4e44e0cf4ed23ae0115efe20ad314c42a032f7d0eb03c03290636610ea5385d4e6d47528d0563b18ef0b8a5fcef53f76b07fa223578d56a84d10ef4b80726b0f868c70bd1054edc381c6aa075d6bca3095a033ae9303e3306bcb93d9ef7510b31c8772a70f2f68be6053e5f51aaa8541e1bb4332092e9e0c89f6a9e67be3956773274f3262ac0851f14066e5951c4f1c540433487166d18e4702ee6e988ca9aca59f9c9cb05d86564dc69d561b15af576afe0fe9762d564e238dccfc1fbd8fda6ad2ba95b7de3c0cd9794cfc5c2f3e9b5a79c6c65b94f8aeef227292fd835f7848d329005772219699150cccbe14293d50de0257bf135a889b1cb7d83bbaa009f7595494fb15ffd0e5d621e73a50a60653c6a4ea8d7e4cac23923a24490fbd037be0f1f1489f76f89f807ba0cd7171a6b4f9ef9fdfe6c935ad8ed308e8af8d0a699e64c5fe2f570b5e48eba883601890a4b8b6ad5aafb2222dafb499bd821739f0fd710292cf5959ebb0ff9f2d0fc69a9120e2eefb1c9cbca3176fce7f510e4e80af9377f4e2ee7d9e04153eaece47d6615b0b671c62744f26d5f2fc9c9f8feada15633d258186a88d4ff151374eb1052f521ef228fd3424ce7d8bed476f5295794e539faf3a1bc593053b49f3880e02b326a91ad42a2d52f4fd197d5da3af2bf435035faebcee1921afd41e1a4924bb870ad912bcb4877e968ba7d8efe805376c7a9a5daa872a4ecc643515c705f7a05f56db54ae25322739e340dbd49c97cb9a3e2daf0a5d055afccbf3485237af5839fee8c6c04e8a6b0f2a6c663b97bea47939c99a6bd3fa017eacfe418d8b55c27a5d58d6fc8a01dc59e98af16459558ce0051fd3d56a5e8d17890a7a2541e85d59c6077ec66fa395379111e16f55ac1d198fbd6a8f9f5f3cb3aaf2030718d32cf414a7d61a770e87afe2e659ba28b3a279737151531e8c3780503cc9335a343fb39d9b0cc8370fad2b3db6273201614a9beff9efa847fe40f61f808b33334ee4c86a181c039ca12723abb07bd800900f152afbdb3511a815b80df1413048d81770c131e5bb71dc5449513331998cc847fec14e377f8beeaf9c66d68bcfbd8fd6d0678a3ade1a62d722071c1a77440624d2fd8e2c52f803f9a6c7a6b00b4140c181f89851e71e3b9d513d7602cfeb3d417830317b04f66162ef20efcf8ea2f767c8e7464a194f4e85a8ce813d8529618f1881b7e2ad0bdbf7507d57f2e8ba56c118f6b90f29546bd3d3f70bda4c6672008b8b32320fe7a50b4236c09b806c3b26626ad26595488a7ecd196b049ae48f2f6355041b0d2c68c56477715f2495c56a750c34585cc5b77ac253c359aa18e13f80e67a6c25759d979ed6cb405609b71685549fc097747ae855f6a6d117e2749ca429df56d9f99f499e4c9c667bed72c1ef0d0abef1feb8408d19991cbf4995202b3a2f2f6917a8f8cde9ba0bbd6841a89d507099602fd3f2aa001831b1a5534f3ba3e243a6657c3cf8fcee63c4900538bd2a2fe9ef3a461e7c0263049e0d4b828b9a59560fc9cf9c50fb443e0237c2a5258861c913c9615bf02d2d1103c1808f1fe23529cdb982fe55d2cce2e4bc968fcb057bf81bd9b7e5608b81fc0d9a23095887e401f9ea2b821ea97323cf6242cb0b820579200a097c4485a1558c8c103c6dc7c723c752fae9049ff0acf0f3b805b95da7faca5d864c9dd2e671d354d9f9b2a1d1782f4d9a645f94e537c9fb596a422e48111743ba37e231c23c9e1844c1b7702710dd29b980f33732504800b6fcd086522ac1589615df2fe94543be26910b80494c56c33d0728da9e640b831639c06c36c893839e02b6c919907f20e16d92d1f301f2c680e749c494e8364fa2ac678a2c20e1291205f5162d3558fc2e5706b7782ff77d0cb277161c87390af8e0eba8b0b204b5d05189d24f11cc7b683c56e8e3865eb6ea006a18c211f9e63b677909195c4917e8c4f9357180708b53e4cbc13a696650de21c4a96f0c75bdfe74c07e2359245ef66dac522ca045c5ff3e154a7e6d1ce9e37decc42bb3b1220094e1c094f01360c3b854b0cb81beb27d63ebbe723a71fa64f17c51743020059d264d7649495a25d32923fb4abc0a5a2475d3eb4bf1f292929cb18ee862d92c2bdaf36d0af65ee01f3755c03a0cb20d13f16e95f0b7f0d0a92216287072748896e3ea91574d9d5ef759f7387c522a04af95f1cd7526d22619c8339d04fdfd4e87617f9fcaef93c9a7a89bf227781e6a65249d71dbc0535cd49f97d55552a57788fd1623db0d7bcb978c7386f5c48b107188380d81dd689134b33abe6cfc0b5fbb8d5994454db5e3187ee5c0f64ced78d90bb2cf0d0178d55319ca5a28f4d750c05345e2ba499a65cd0db1be3938b0769932a7715e4eedd2a7f473d3b3f5513acccce92cab495693699154f935ec529e15fcbe4f83139e661679d644e3bdf1b8307b3ec391178feb5976d1443d8ee178efe767dfff747a3ade0ba82a7d55bc8599b89989e0b3f66dc088ace45dc0415fdc011cf4c967feef35fff78aff3b1b9283f5438b1481c2c885fcfe8c8c44385d62debb088ca5eb457b8fe7ce284604f50a0945a2801de58a9d86b262491fda120a2b1e67c5245fa6b48e78c80afe2cc04e1f05d2fbe3bd9e4f28cefea1d0d4b3c940bf7f70a6bf47d6771fca7722366cfcd9a86418c8f707674e916babc803b7c89555e41bb7c8cc2af29f67bd87f0d5379e49e19c4c8497c58076a11524f4d9034cf6f78f887f909b4c447846a3acca23ecc1ad07139658bdf70766e4879e915785a3aff92f36f2e40fe48f07e29faf75fa03956e92be39f3b52e7c8e89b61fb4b72ddd937d4d8bd4d32e4b45adb20438a56b8b0f61b56d84a75255d3ccea275a5d935932f9741d13f29ad2943425e1ecf6a2ac4833a344ecd5c2ba80650ad723e2ea94e5736b04e5b238d6389c66735a2e2de50a71f4c0c8d3d8ba4f1e1c1cb4f96d3a4da6c06519146e4e93e949739dd328038fd1b0a185e3c42c24f098092204a8c4d5ebc41137dac5c5e00d0dcf0772d16afdd03d1336c99451b3d4f8a5e564c9a445b6bd4929bafefefa8932788bc67b0addfd2699da4743060b21176e9cf17d1e3e3229ae350c36d511df118a947ee672bffc7948006c99f8f5d76875368938d14eeb989173c4cbf4a495817348e74e279b64dafdec2bdf5f8a301459dc94eab920c28290f38a269f40adf586e378eb01393367e19d95e65ebd043e4963b5b9b5f7b123cd68576d391b625b31aef152a461068b35c62d84d80f641f64ec87be39d089ebc06bb8e0800aab4bf1d1279244205f90a39c3409a30a641445884b1e4301c34128643b0a09855b79f2eac896075a97e2c586d881b0f8410c87f706c15ac571acfb0272b0bdaaa405fea67cb37569ab3b3bcea4029c9163f9bc948504ba1d79e406995d31173885825f9211649cef799bf69292042ecac557e40f624eedd5c31fee122f26fa5dee78ef43335bcecf79aa7008f841c2fd65c1d9a5d9f17e0062b96f294833ba8ff7570ab3c07a302566568979524d336eeb76b0f84c926553026b37bf599cd4cfc69ff9cbecc567f1365ba55ecbd40018eb898d784cd3efb2ba430b19ee7a7ce99a849d97afad81feadd6307e3c8517b16f6decb094f9639ba3957943e77b2aaf4750489bbd35d9279dabd022edad1d67555d5885f5cecc36a4d7c37455258b05f28c7798f84bea1877598a92b95f4edb4795d2d1ac8fbeca9b878783043fd2aae8c568a56fafd6fe067dbe2cc31d61a2c8be591ce33dec4150b7ea516aadad2ea922fbda82c2070dd791dbb3aeebabe1c5fb32a3578bb2725c766a846d4920305a35cf76fdc7b50e98535cfbc21222b7e3adc4f5b9b6b2f622546593a34bf4b51ddd5d08459a8ff4b48e6d7df4d514529f69d07daab6222fcae613bdeecbbfb5fe712aae00b7b0ac0f9ab0f25c65af8b0deb7fb9dad786beb714e60f1ad543abd79948f394c61695f0918527bbd508761be3d746b13e6c3f1ab0aee556c212b0b4fc748d673917fc3f68027d4f0ee444a80767d24edf6b8bca3bd4775191dba17ab02fe6d01cb4547a9ed4fc702caf57c6ca64aa5a4e9ab2f2d9b54a7b56e5a77bb950a70feda17b96d57159bca3497acd8e57e0333ecf8a94dfd258854f28fd4453535a7c078b4b8cc1172e8a612b4645e927d002480da3a50a49eb4a4f7599136c5f84d31991954b15520985cdf0f5539ca7592a63202d2a7af976d3448867e6b260ac49976b5d39220b9c01ceab229bc38c6b4a3f45def23e6f100265c169ed901d93b2b8c8a66ac4e6c927fa84a740e87c09da66279af17a7736f52e20ec3d173133bc292ce4bb86d10a32a1d87af3b0f6553a9954d9a2198df7664db3a88783811403c4c385e6a2ace6f1a49c0ff2ecbc4aaa8cd683bfbefbdb1ffffea707e7f12f8ee7d1c9b26ecab98c8d2d06caf16acb17cc6805978feb41972f135d487cbace7cb339d565d8479b0b5c1f4345f0f89c49706016ed415351a4576615c4f612f0f6c7f406ac50b7a45c776e6999d1d15577eb9318e9945e706b9bbe99a836a968c2ef8422df0144ca5e6c309900f84e793802eb8d3c42ab6f4a51e9a84786dad78fbd4e71495f5b5f9383f83b3b0e8442fe29fde7467ebf0df9775418ec28d7d46dc01ff41e8240350e9391b38b9c30f024483fd3bc3cf7baac9d94f3f37234de2b96f36ff022cf93739a8fc67b9a48161229522f284d71616c6de169a72cfe42af9f965705f7852d417adf78ed8cff033ffe9a4e6e0f7f05f276f13ff0e32f48e5f690e7f002afeb302d618e22e52db00fb6c99fbe379d42d15437154de67ead97ad3e12d16ddcda389893556252515ad4b3d2c4a56aaa64f28947bed0bd46ba6eb799cba6e923054956a4fcea7bb69c9f174996d74877b4ee77863c99258b8656f5875013aa40a081331308abcae649c51f8cce9a79fe1da8902c9b525e2472c34e530730962765d154655e0fb90194b7081bb383f84fdff5c9833e79107fd727dff4c97ff6c9b767e815a9452272b337fb0d64b92312925c90033b9f04478ec8c1ad487d1a4f216f38b1da8c0188bd3d28930e2466d754460bf088c80ad61ad59010d99fc8bbca8498c32302f223cfee184a55627671412b5a4c28b4e8d560f60518759642a6bba6e61179600f3f387d296078c3dc6a6c029304c428f7c5a64b6282186a651bd90e53bf3af3015a24cb9a46fee7bbbcf8f169327dab1d909c26d3ce8e026edf814f77a702c0e5037abb2f56e62b7e8d82334e9329f200b0831b9fd7c96536e557732deee10a5de836bcca619f376aaac4cc35c9f49189c268f54fb80ad14e2640417f84645e5c5c3f81b281d13cf23ee23d4da66c02fdee765c0f3bf8496e4eb96dcf27e440f87f493789fc8a5af85906b932537a73153c3331f136193432b2278d1f824f9329ef59fd639547a6a6626fac257dc1d42453eeb68b7cf962da04f62aaa691366a5030226d692858613a01423833d896d42494c67177cc03c1b5c64750b918fca631bbaab24fbe47efbcd05aaa42ebbb995fc5abf3b74ae264e131d690bea7f9b646adde1f035934c9aec9222e1117bbee3be1cd830ac8f84dfee35f2127738384da62115304b7ef1c0b8b924e4c51fb76699bf93d7cbdbe16fbbb3b8a01f8595621a768d935952d174207377d05dbb2a62e142a8bbee39e0a54082490a9a875d1480b65cd70420d3f03febfa5efa3b0a1bd0c6328e155b42bee451d8d0b355c7f7e28f47b2edc3c10b1854e770819d3f32c23e5a799a5e1f0e161b543bad265cc657a700db62ca64193e4b032aa732bfaee65b8372f2a4980b273d7e73ccd87c96ae190cfe61fc36f53ae9465ffcf18875c31a3406a95eb70f863f6c1b568eba3e8e4027fbe44f07eaf5a069eb45b7305ada01ab1c2fcee51f11376d08fcc1baeed62d5b0ce886f38509706535960a67af872fbeb508296918677ef1addf478f0545f85ce570fe78f48e7f0cc9ca2db1e673d30522b7dd925e9c2558ed207b082fe881dfec40fd5e5babd652b733d035ab1bc8c1788a14be02c95bfd88f9b44cea06ded1f93725e50aad91c547aa622c221b0b3f86c6fd8c6a203e7df3966d793dd7591707a0234a38e102969309adeb684eeb5a283d94137b2963c8e6eb597965828fcad27db8d717cd50f63b3ef9f1c9936727274e8c4f74d4e1fb62e0fe156c2d22ca579fbca2c5925bbe77dbd65784157e5b516e1240fbfc532c575af58988a61a8025229bde8ee76a1848d77bc0810570551da4b9c5e528221a36fa5591c850b164247b199717a7d70bca83c2ff94e459fa4392e7b4ca68fdbc14d2ae3ff548860f081e7e2c0439756445c68e29c729f4982d37f6e314a59585c0ef98bf7088c443876d91743c2821f100d711cde968d83b1c8904d415b7a1226b36c2304ef2b20e200959d1710a3d70b04ed7fc028183fcea2bf92bbef402228f485bee503ddc180cc8e334250929ca829292c7e8254d4926394d84c1f89457bed6a7358e0877c819894704accfdcf25d1af58ef70e84c9bfc0395e16e2a9c72ae3fac583f15e9f88101fe3bdd76541f9531edb73099f009a0a0bb59a362720e18c8ce4cc680f26db1203f9c29fdbbaee92de67f5b120ccec1f34ed8b989d20c5d3b6745d7484fd9ec0b39c26753e6db06f3c01356969da5455f13ac33bf6761bdcb05acc0754a4ddbb0760f590093f1cdc0896820f6cd130603bffb1ed7946ec8162b94276ba3d67614b2c13668a9c4ba345062852dcdacfcb34bbc884d0d54c66b4d66c1de8fbd99487e569b57b18294b9d4c7dcd883c709b61c246fa8aab5c5041983e8ae9b2624d73db2703460423e7c930a634fddc4800dc52d4e4083f574fb37a9ed5f5db72515ed26ab4e244aa4b59422d720ca6dc09a3ed71b719fc55b82ed6248b3d196ae4efc54df9b2bca2d593a4a6512fe6f69b6f2e44759cc7a3c21c20acc1836686b20c83beeb662151346fded506845e4e398b47e7a1f5204cdd98ec494604adff47e8938f020f9610bd2e654e56163da926b24e1b7817d71216e3118222cce925038b70b432cb1315d0933c5a89b9d7b945293c52d7a3955e2080d4856b5d4e893cfe92f0dc5cc7dc56520381d3c26f61f5972eb210542aed3a560be066f4bc6c9a720e0391afe258dcb638ea2219cbfb22cb7384dccacc0370ed3bc0e3d8a643922226fbf9bcace63f54e57221d449a7af5e8aeafc93cb3a26f764911585f443cb1a7f5cd1e46e35f5b62bce3b75c1d926b96e165e9f555559b56b9e282b62993582c34a5061c58a38d102b85ff465de64b6642faa8a453770caf9c07480e0abec933503407c4543370ddd6c32cb4218c50dc986fbf3366999177f96664d5895b651421e0c880caa2890e6e74c0a2431aebae88bc7874d4e91c73a799300bce91c45e6cd3094e7a4624bbaace3bf7784c423658aa098bbe2c2cf970c91a4d9b53f421fc2a1087d0982e37a190ac19162fdb190717f505f3b62253c2a4b6027f2634758fa9ee43815d3f616247860be3feb02b549a60ade29ffb92d2449b3af697355569f1c6acdea97e2cdac3c33c8afb06344514f3cbf156712f790c8d3a511eb9436fc93ef2d51cff1e90520b175255ae4589a2b41ef523fb22ff76975719c8ab3a6303b34eeee99bc6225c9080ce6068d1d494008a21ed49f21a38006b7c235c00abeabfb154a5e1b9a16c3388f886465f61b88684a4b2772254700f93f56b9cc5b5639aca78790ab35418e587a324f2c4990ab57932c20d79aee9cfc660766d01b2853ca1524eb8bd5a5ab6bf7e581da70bd44723641b620ffa839b6ac13021ef4bc74e5581f875c5d0e06f28c56bfa657f2b42bd97e4fef032632a68849e286fc60c97a8581b3dca114adb8cf86d14a7ec527c7fff7d987978fdffdf08cc979f2b0671abac7050a08e688a7c4717c088b7b9ceec02508b64eb14679ba75b8312f30d321d2cc67a9b10fe33b9dfa523b96fa66fb8ece633b88fa905b81fa9454f5813564b8bb3ec173a2e1999a596bb15b0df3872cad870431608d633215b992918e5dfb2bcb9f4c599c2497d4dc0d41b688f4074d756d1bcf8a1384f615036810780c516733c92061bc98da4c8a296f44c65829b3c77ba2502a6410f3507d4d2649339991880255891155e5613cc23a10ab8fd01da9f7ee0c889751239ddba0c0245f08bf2fe721cbb482a756ba51bc5df5ecf800fa38e4cab2467b70bda0a315fb17e91ec4a08c56fc3c5b63eb66021effd75a27c5597526748140f124694f0493e17db49ef91332496a6af57be870b18c7b99b37d0280ea62948680bf85aa808eaec16f33bca395f91d5294b4ddfe11b2d2ac8a3ceac6a2bc774cce133f361ee6d90619efe958773a58c87707ffdb8a6477a84faadaa497ef95f6ab0f7366c503ac029e8f565141af7e12b1d1b949e0e8c86cbc2a4bfac18c458c70ebd5014f1cadec17f2f6f3028df01174c4e2e987dcd7ed9ea823366e1c6803367650f54d090edbf44edda4df42ff78a4fedb992526e26cd38b6595dfca0c3121798f08e38e53a120fafbdffffef7fd57aff69f3ebdadce71396dab394a9a5b21402106dadd30ca20ab1bfc76a51eadde8ff718477fa0cd99fbe4bbb33055d24b75203792270f5d7f5c3411f43e2bfadc270f0e7a818ecbdbf45be8ba9471edbe7b1516081379b7355a6161c8c257b3e0d14acb329ed74e4a292bb72a35484600571721b7d1652195db3d467a1e8420df5cc77b32fa90fd84ad057d2dfe7bb14783a364b9dbe8df5bb005dba1f86c71056fd87d2433e2d87a9d9b3f75dfad7b1b5602911044c38da934f45a4daa86a5ae9a09a83c5c71438b861b46f1270deedb7325cbae8dd6b8d5d6f0f4d5cbd3e49c0bf577685cf85b054e72edf19e67397712c9f57f3736cb43d0c286796ea3ae7d9e5b2668a6f76446279feae53c0a4bce4d055752931ea93a878326b5b2103f9bc8726b54f070a001b61d0bb855d61648b1f29b10e27783bb20c306f424fb070ddbf8718b29e133d1f6dcb8c978d1e90a6b8db0e67cfdc1366c1c29bd0d7a11923be12edd7e2afd786de8b6f12376e3aeab16db7b1e34cef6792edbade7d99c163513547ec3beeb3637d1316f999f76d6e43371b36448c49d28bd4ae6543ebc6debf7052b5725cdadd03b834558a39d3aae9b662c3b99d39aedbb44d0c42e5dfe3e6b3a74f83c6b6ea9bbdf674db0b386c6cf2556214476a3eb9fb294964fca944e3674f79215fc3061256fa1cbbc59c2dbed34c5a0f59dbaf998c9835dba99707de06d759337bb453741eb3b75939d67c3f6f5cb2ab76deb59d23676f52e8f2aaf8abc4c529a92e755b951026007e84e1d0b29910eb510899a392fd36b9f8c6ca499b527578814be1cb3bffb72cd36e8cd055b8517b6e1a8be6ccd7d7c9970b9faf2219dfbf23981a0b3011ebac3813dbe4191bea3fdf12ddb1d2fa7535affdb1a1ecbde8d543fa1e9b178cb26fcc2d6e8e32686c610d023cbbc9887d617fa96a1b45633f6ed6d861002285781ca8edca9d1301a8c08de6fcf618ecf4c181790d6c138511b05dfc008373c778ec9edd86f250b2b39f6b2add6b1a837b695ac1d9a3fd8a66584a8cd69ef896b659c8b5d34fa0d6ddb2d6cc3d6b38c8cb94693510cec9b385f87479af7175610983fec6ca1dbb2006d5cfe6ded7285566a858671522e8b06b8acb6cd7851e19b98f3ba9377438bdd0d33dac13ed743fc5bdae786ac5705df54fdcb34d93bf6aaff3f7beffeddc68de48bff2b30cf6c86daa548397176bf5fbd7c1c3fc69eeb585e4b4ef61e33d76e9220d971ab9bdbdd94a2a1f9bfdf832a3caa007493a2e44c66efe487586cbc0b40a150a8fa944d6156ab152757a5a1caefcbf4955bad127e629f9fc9e1d175a4da3b6a300e26af8eacecc90ae9d8523ba6871523472515e3f247cdb24ab40994979eace8af5d6c709b04a6ac1827d98ba24c66d219af8e936c0a9f6e63dc1a15b8dce1ffcafcf9739265880aa4e115e46ff553f350fa3c87cd6d834ca39f51b1cc279194b53de163edd036ae932c3b8cf6c1880af5cd42a2b5a7926dd4b11cd4e4c703248dbe76543cbed07b1201592e7004f0f0951881e3595a2d147345f8befeb9063e790252c8f1c529a244809dcb215a32e813d9136c9c411968d6b037a42fddbd43deb7b63131c1c61a752c2b56e1b063476d0c300603712e6b314148a94a7db2c24653984f62ff115c68dde10f7934e9ba14271c6693d926c41711032b823dc5569297ec80933c94993d6ad18fdd3213416780d2095d19b458ea4d825b658ce41f7ead8a1c64b7bf56451e91d948b9d0dc51db0396f24a95a685dfc96973d10d73e5990995cbfc89fad2dde368f56af31453a106a0231fd946861d100c3ff6d3eaf97f2f93ac8ba3341db541b698ad095a1211d6a45681e5cb3df1d7f3b3377d246e3abd812af782b02c2268449c4017b919901bd3d1900660d593224b0ca1fdbc2cc329212e6977252333acb288feb2d44e5cd6bc8a12658644394ef29bd3204890c1f02f2b280d24835f5d57ab1fea83cee349741ecf46bfca71dd4f2b54e74f7a180ad3b314427a11ea90043521ba304d733143ac359736fc737974b598e04ff786e934267ec895ed5643aeacbbd5332c5796e5fac80771f2dc34dec9692b9648034ba678cee4b33e2fc3e30c742b2fd529ffb2283eabee224540f7f83c3327ca3b39c5a90155d44f98281de2505abdcd921bb89060811f97b5e282ae9c718dd4d9a1c9adf36b738943bfbf67f8dd3bb61a87a7b3e3084b59c9fa0c035ebe96c995f48e7ecf239ed714f38a5f56d265ea6ee8f25e90e0686f36979e033c25159b0d68cfb680be079b9970c542af549addcc445b7e7ed1d6d43d9775ad550c8df2016b8b9e8ea09708aac213fb71d8069a72aa83b9cf6a39341153b19d06fec8087a01518d346d0deb3ea2c7cd03932f1a90db24f68b7c6129ddf50d2321b291a5ad3b214e30c6abc7d0eca4c543c10a175a8d15b35da1e8703ebf3b8a755ce5b7dd8eb54e8370af7be283a6178988f6bbd2faaac89600edc766ffb138e81f7c2f0e5d00df9ef8407390ee1a06ad3bd373a3ee914dd033ac260627aef7b90e92fb5cad510d8b18d9ca768661e5c696025fba01d5d0673f4aba4d8453e97c6da0bbb9ee8a37db642dba420007d987a3b26b8e4abec269144d3499d7001fe4e86c013ae7c404067c27629a05fb75a8f920424e4ecd2815bd6d092096aa945e64fde00c627cc1d68311ff6950b5aa1cf3486a366f562413c609e293ee6d712ee6f8a82bbbfb9dbe93d3ad9c4eef8e8db6cdf3c6669909aa9a17c5e72a909e9ccf269704a2855d9eddd023ef8455c954073f2759f6ca681a8965d6636d9a95a59771efd0ca61093e26665c218a244a68653a4b73ff31e5ec4a9659727328bad5bcb8b602167d4811629ca5e3cf2f4105aa5a226efad1ce892f6d9d697fa331c4881a96314ab1b71996e2bfd1e0d1f836a9e720f1ff647eede6f278c517d789b7dafa5cc85c458458306b677031b716d8b4b8362fae2fa8de6377992da63ee1b29b1f821e4f57cb0e3d2ab04c9c647b0157579321be7c11ee0779fc67b208351cf891836eeafba19ddd6e9055e3811b304f720a86889e15039668ab5b43752f4a7995caeb48e5ec766a34c57adf11d7aab59bd7891c15cb7c2c2767848a56faef7eec9b0c5d4ae69ef8fee020743565e7f786e9c24cf1e962e3a7438cf6d6453b4ff2b1ccec79e78fbfc5ed4a3fc3c42c632843da680fe319d4807e2aa66e0cab0e3d27d95a0916d88e55ffc8e05fa92466b07acfcb7114ae774b8adc8e0eba4171223e0d206735f8936fffffe92ed4700d6c8d90bb814e64cd5c94498e8f20cff3093a5c180d0649529fe1b2fe2cbd325775efb91abd34d42143bd36f48315439f47770e5042bc4eabbaaf9dbeaaeeb0332996a34cee57e324933cb4b62eb5484a88be075de8838758ff6faf7428e087079cccb72aac5f0b624b4af32a7f556d8301ad63185787e2afe7ffd5d74dd3e0f29bd8b46b9b03886a16ad938db3a90f854cb23eb82520323b0834debb5dc721a0a9ce1981358580930ccbf47465b0ab4d9848ab8c86f206548d948c8d1cdc193eda3adbb3b0d6907f6e3ac59a48af4fb06b395a30a06b1f139b8294f27c83c19690b0b7a01db3b2b08e956aa10d3b50ffbe125c30a429898ee556213fc62277527556d88a31d07eb0638fe8b90c3bcc70131ebbf744acd6c1fa47911bac4a606fd68a014d8bf2f20c122cb930df511498db772b558316b3329d685c6e16d293dcfd6d91951be2af459a77871d31ec506b08ed960aff302b08c64a4f56de0796d51dfcc609a7552a60d618baf48fc595dcb930082eaa8bee97cd442d32e10e1bb80b6939636d51cbcfcbf19a3b8ec162a25f84a8caf1c9ca8aac9ed79726eac635281e8bd55a1c8ad524ad1670111b7672c459f46a4c9675f1364b6ea26eb159512ca20910bcd4eb8556b2347aa109719c5ece707c8e67acbd3cabf0f6f198b71d897acab7adba743446b6b33518b7e92ccde54b1dfff9e17a1d641622e2ac2c1a02a6fa88d13427f5efa6e9cc4095a0d9f316dac29beeaea6d90d136cb3ca65d8e90f7e06a5fdb8f2d0b7cc9d9a3e58996f712d46d4c1ac6ad36368a1811c7255bb2ac3183dfebe1a89665f373eec402711f36c33069bf3e25adf82d05ed3fd668a89f85b0f9178cd55ca53e038200f5233648a5fb766b2c6638947a9ef89b2b83e4fff26dd87baa8938c44b1d7522237f6ac9ed4e775522a011aea13ff622a426cf9233ff7f37cd290d7fcbd6f03ec6129994fdec9cb24cd5146856eb9a256d33c1888176959d52a8148ed905b55ff9098350e3b75b11876d8dd11bbe401e2634e88eede989df45bc94bbac963fbfd9b6f84cb8c89fbe2e15ed048a9785eb4155b57c3102c017e0063304e0143f4866ed01a47ba78ac2376a2a3f5c4faa76b8bd08ecda8ba3e1eb85a4f5da5345ba4e6b64a4f1a2b6deea94fcce757b2bca9e7aa3a25714768c12a194b50dfc4960ace402cb74f6a2fdd84a2f1f6308d5e00bcb7d1ada8dad68d889641615e8742c078fd9177c5c208b71e47e989ef7bacba073ad884d395f986c4421cdb13871cc4707f886211e870ad618c56cb269590a8ff6419e88962ae67f41baf0d8675b2c27f499213913c6bf34d33a50fbfc6f9d2e93bcc9a2e897387c6b7f73079bad6bb4da18e51149b43acdf64f9434f653c2074811d7b4a2eaee4c4178fc5b0739556e948dd320144789e4e2632b757ea8df1a1c90def1388d4ba45f1a795dff6fa1317de9b2f953ea44384a1ac5b33d875cc84e5cd3188ad6d25d27223a2efd3a44448b4a74596250b1db5f259aaee36650cf3f73bf8e7cdf25296e918acd36f1d536a255ea4329bf4f01f1d8a5e3583ff4f3f9b7fd18cb7323f3d7fab297c8ccafe4ca7d0bbd7abc0ef020fbc4b5caa3f02c86fe819d650459831bc3381ccef975709039bba4398ad1d2198433410bd436f090662bd62b0f8a1712c6abdac05172bd217b535601f99188b54e3ac4de675f44ef24d6b4001358e2520be8c03db6bc62fa1e36f862f09a814a2970459822b1ea26716e5d942e61a69d67dd870c973f6c708c0f9a33eb92b593fa75f58352d7311f5e8d36a4d57e22984236a02b7a579f8433479b30134c2f61a340664430dcf645597c54d7b153a53978fe4d7ebed0207fb37e885cc7162b659d59a92fa89852366bae965a099fea47569c4c786774f9673c336f3e21f84e5db24171e14ce47bdd4e7b9db78d89517693e81ee903ea98af67c81f2d208ae64efa208f9f132944c63266ca68e0b7c61b86c7c98611acc8b64c6e3cdc5c35ab2e7071394528b7dce34312ed86a41ca13653d45e3b196493ced29960d159e4983769acfe6fa74c582821e0f9250bff980b21ff158d56d54a9d3ac486a2574ea6be67a1d361b6c8abdf5a9faadda8a2260c684bd96a1b6bfd95d7a0f75db35c226799c9493fd0a837208bc364b5fc01528c39ae5b5b119ff4bc492d2ae14bdbcdd1b2cbd1ee8a7a4e011c9d431d78aee61e7bb8383c56f245cbb12eea75971fdbf5562b2ac8b48da7fd10b85c323764f0c699ea5b9dc1f65c5f833c9719994b314bc07bf676d5ac452bf33d34cfe0671a2c481607d59334d9d7e1c64e607fa219df1828f6e576fcf709063b4dc3fed26251cc87005b32316c96402ce0ec3ce433542ef7de158dd37f84bd9c6e55700501dc57d9da7b53c5f246389af3ce56592052d415d2fbf3bf53bab59d4cbefc2f5dbc4a937ef9ae3811ad769d3552df098d7c455b3d486cd5494979103a5c8cf97a3cbb4ee02bca512a39c0cd8131f0ff9e5e998a49e06a78ac525078b3726221df19c57499926a34cb5e71da128c7fc64d2c3370214535c86137a32697915c7d2e7a0e04476053fa7178addea615b964673c31668c11cb782ef4744f6b6ed527998e4b6f8dfa67b14069c7a1c68b8770ef24e3ac524be9523a658eff5ebb9ccbbdd52568b22af64883bed0b44ccb7c566e17291ef30b6a616eed04400ebfd64516459019f215360d6178813cb605eddb8f0eadcb20a48e7bc7a20a49e606bf1413f9d1c4549aa45e0155d9f7ebffe21686c4f376faf3f9399a460657aad31f2443d4ac29b40774588048109592d8a8f6f2415f585b079c8e1ed93c0e49791316f207a2bc17d4269115cb10fe075dda9d52d1d123d5313378c9c76111505590d110c959395c741c5638fc0262e715ce65b64c958ce8b6c224b07574e33e4a0a47403ebc39f78a20d9962f7876c5946726202cbab219283ac570c7242b4e236d0c24579d9af640d1406d88aeeb053e3507a028bb4eb86a3f37a8ebcfe9e66962a2f9b2740b7c9a7a0014f3dc9b2e25a57fb749e94c9b89665759667312b93eda711086809feb127aaade85d999eab025f7d656c3b876fed117b4fd3d88441ad11a81131998f9e814f9bfbee267252d940433007f0d4049c7a1313e0f6890ddc605ba22ac9fd5ec9190d98d14a531b36a336b7888dfc00a4284dca78c0a306ea565bf0d86d6228ed406947c7eed4bd461cd2a78926626700eaa18e717c786136bf1e188a1e3006ecf1ce78d7695a9bba0fb2bb087ee657163d7f180ad20765b748e013c5694a3fb949d9d1d3d7dc77e686fdf0006f7cbc78a01031120dcbe7ddc6300fbf62e1b8e24a83b6755d9497760cd8e38b6241fbcbaf72e1fd335b5ee69548abfd4bb539d4855ffd98258b4c563e787b1c431f2eea7ac1ea831d135f14eaa8d10764a459d5d0749965319b3e5868789ab82a70b11ac827270ff9568771dcf8e61198238576db9e330d1d9f27d97463c75d25bcebf4c8bf63e7f5c9232e92191f00e7ec77198557131f8a77f2dd71341831802d1fcd4fefb47e4c1dde0232e7cbf69d8e6847fc2d856ca86a315935210b22410a4c8009d0810c3ba7a80c89b0075a8fc7ff7ca614bf89ac4f9f82d35543dd2bca85d76d244052351d34ea78d027dc4f5aa393e437d4b9aff12460c5a27a95c80524a65ee1d9f4e7506da2df0bdb041aae3d791556de7840076a155fef108c568f1103cbd8b1fc98d4f37e592cf349d7bc63f567b27eab31ddba7b7b3d6f3c5881e9ee875fd61eb0916f42626c25445aa9e572b2a22f044118aaf4734496c141d8a85bf8d393d571659faccc5f2c99ef53277844459be381e9f21628d3be054e2eaf71eae02425d206b32af754de3c1a97de856d6f236ab7817a2cb2db56541fba768372bb8cfa9151dd1f7f20431b2b6b82ea090d6c9cf1d706cbb0ce373c3bb0c785e001813d2f54e3b2500cda3d1278eaedeb3259c45f1fa699f41f117e2e9345b418ce0fdaafaa0cdfd20788f516c6522b461f6a9644960127d03a86d98dcfa48d664ddace0dcd3b48696a2dc7c328b1396e3160634fa3e23acd27c5751fa97f51740f7ae260ef28fa4c687d1559ecbcc11d2db17effe03736d4113cc278462f2eb2d180e56bb07eb179ee27180eafaed99c24d26c685012c9e49b948c9372e2bbd9b547f7357e649c88f81c4602ffae5d502892b016c94cbe288bcb677055a6ad425436032aba17478d65be694c920a6c0d5730b2288f6c8fde640d0159dcfe6464feadb636ef032d9f86b2d6f9e1d33eda14fd8f8be5ffea87a492512c780e076f0be8406d3fa5f25a967e191b466ec0b2452cddd00e879527dfe9df91c218e4d137b11bf869919236027e50cea6444ab110554149961a294d4dc482c234314626c60d82d23cb989db31bc7d32e1ab067ed6c2c11a7856d4f0ad36761c18c2ddfc8a44bf3fed1e306b37ed5c50e9e0cdac447b60f4d3ee8a81aadc2ec83bc7f3d738903d91e9c8b0317c7f6b91a02537404bef2f9232b9ac7454dd6173a46e167c5837c39051c200dba88e519ffc98d84724a431768975365f2a51e1bd51d775798d7b2e28b84af86543c7914ec019dfc258c509659d1a6214499215634077e8573229c7730ebc4faae883f790061fe5df1109c6b060c866965320105bb9ffc2651136ea18ab17a28dd1273b677a44cb8730c0c3fb31d5632d7ac64e541adbb4145cf0e22f5f84c666fd2c6f2af4d2d98b5f1d6e158f7dc8b169340ebfeec10956a81b4eaa2a9de5dd5560d273285ca06f67bab3ee090d50405fdd99e02506037171f6ec4cbc4cc69f910326f96c9925a525ce16f1e15b45137a2669f72136c6b55b70272bfb27d52ba171503a391976743ce1060dd1b19247c2cbf0130080bf4846c0ca1b5edfb2a49cc9e0bbaf36ba4846d81174b536dd59e01981ca151a8b5940cac9ea38385ce3a4189c46146a17c9c857d2913ee80b8ee9839fd374499f866106d64376a0c6bbc8f6e4c98afd8401f006fcd1f0eaa870adb7d2a938f01ddde3346054b0f534d1c1518246760d733172783242e39cf9d50c1a7ddc99973bd0e3c1034e111de177071ae8929b2960c315370f9fcba2ba666fe8a6ab772581bfaba66926f7d37c5a04fb0a22622a81d0df595c8cbcb7bd252769bd696329e976c3ae72a271d396b28fa5b9bc46a1c1443f0669c37eddb0c18e078a0352f59e333f0caf790cddf9699119b79708b233e47951943ae03646ce6e7451afae530018c76c5480482a29be3f74deb69863ff7beb96a7f33c0af33cf2f37c17e6f9cecff36d98e75b3fcfc330cf439247875d20996c62142ad4f7a4c33f9da79cbd505367bae799bc02490e9de91ec13f6f31f8c8adfde8da6ecf165edcbf48ffb1704aef82304a5672142b74acd2ef084a7a91cc3819d4257b9e947232d0495bb9a0310fb4f07aa9964a830aad01b4b4e1daa92a6abe7ada66c2eba74d0aaea01ab8c6a27ebe75bfff5eb89f70d90c2f11c48516d9d70f8992c35b22665abeb53130a6ef28acf9c7085a107f5ab9b5d8f75868a4bdf527aa187ff7e4e2d59bbf1cf2b0be98b3e5a9a3c50ffe2299698e822ca939242a3cc56971ec98c1721cf92f1fdbc192d9fe9a7dc33c87ea64063fdcf1bcb7d7f4f0a0478058ab098cf17fa5f9e46435eccc9115ac8589d274e20026c247277a88a663c85c27337e9063fcb106ca4455feeae683c047c7f41d40f77adb997262e776f3150ad11b66cd15d845d7edcfe3367aeebfefcc2a1eebdb3785931b90b1798a5dd63b4d34b9736d39d5d187cb0db3cd012e4473758d8e82de8397f630b2987c8d59d0649f3b5df86e5c7c2d393f3feddf65212a8cae247497f97dd6d065b2d077ed4deb283647cd4b89ceceddb8065d41206f6ec7e1d585fbcb17d7a776ced2963bba384f636fead4108fdb04c5dd398fc9a8c4659aa79789b1b7dec12771d57a2afa17f42d18734b91e62dee99069111b21b5ddc3c28746a8e81866bc9c64a661807dcfd8cc08073516e7b206e3d9adbc294af63a3b80f2c6d3a08d7cfb8b212deb3cd95d07b45d57ecc26599a8bdac9caded9fa676f9edbc9e4589df4979fa51953d3f100608c7571b26a818ae63b20bd4c66d24c7202f037f419b85118a68617405456abae6fd8a148988a95d60e02882e926a5c4a9957f3a236eb64dd0a95c90d421eb035fb581c57c5b21c4b86980998a0a86582eae996815a0923e558926d7eccfc2c78f9c89a31292e7fa6cd73548b32cbd2459582b57a41be1b9b9e7564483ec6efe308eeefa1bb8bf6a76926551f5f94c5657433726b99978f68df01089819572ebe4340d0ea32c932617f5e2e6b6091a1f581c60b26952e4e8957795d2ef371524bd62dad11ef898707073db817f745775ce4759a2fe5646fd8d95b1f0f1601b0a7f9bdda709ead5dd6c849110e7af379c086ad28deafd2bf79e0ede2b1372be7e9df64d73e7c456b8007b0bd70757e938faac5d117fca7ad1b936509dca5a52bed58dcbc9abb7405dcd3d7e2b74812fad1930b295b322b8612424fc57a39490bdadb9ef8fea08791c1746d447b794f48afad6a2df062534ce91d4666f5345c09b868ee83eac94746d2ef85d57f62e468f781f89ade5e07f63aadea66ed9749ddd6e6040d4e06a3a492fb40f6b031ede9a3323694ced2aadec798d003fc87d7f20c6d1055153de1aadba2b6fa662123f8b821d6d346a027cf886d603f3628d9d4c86f6dc7a10a352bd46c95a142cd26f90a35450c0880786227beafc482b4aa4d64dea925e821212ebeea1aa36c68ac67ae476aab3d459c04f8162ac7581e1d35f8d0df0bc7db2cf1d39e0db9ee2d262e8ed2c8c45fbe08fadb3dbd570d7146b085fec4ad339061c9baebffa54c27ed178e8dc67260931aeb5588d3a961f7ddcae3d8991c30530c4ef79a2d5c231150b618aea27538dce3f9c3d38bb36767c783f9c3d39dea555b2c52afdb94488a93764ad15b7b287f9b35dfafe5e5224b6af90fc1e6f55ddddf09faf33f59feefc1f2191bbf35f7c6a96ae4e121ebfe1a1c5baf977be1dba6dc06eebde5ca3dedd1de07ec1c5277e0e9ba99dd39fb762cc9fa02b475c2730eb823970256d4c273de15cb5af6c4393e8b6ff574aa8599061bdc0a7f440aa8b90a0aa98f8dd6b3d1122e496f37b27b2a1b3617d6dd310ecb5819c05885fc2d19d7564d90d4f39361476b30861d31367bed6465fbe79e08365731b834c64c4155aee341855e1d87e92452de943a1ed861edd1c0e1da1a40532234977ff990bee0bffcf77b7cbcff0ad129b67ff98e30dc1877d5810f9f8c8a65ddecb2b191c136191342bde676d8e6b540918c95a4a7e5e36769921533f813503e9c5586f36ed86e9a768f34720be7851d3d106273a5c638494b39ae8b32951cc85588227fe6d21058647228bad102edd13c5e004c0a0245dce570fda0e3f7987e610c8fa7dec788a5c129d1f65a43757d8aa4f94caf00340ff73f6f0b198b60c5eaac246443a3fa584aa4971f7e39ed7ef82552a99cc4ab64dfb7aaf01696f6a4eaae4ff7cd66f6910e6ac50e593fce063e48da64101f31d126a537dbebc7a6640bfb7ddaf9060b7e0abd07ad58aa7589217a401d0c851623740b4523f59012fec6600144a36b9da36a1964db900d34371c3e41bd8328ddae13868437867b841ec491a18a9328d15040ecaa4a3186598a1130275b1230ded81604682b18f794d614f6fd01ba4475ad32384580f317f7a78985627b9a159564d8040db34a4a1933558ddc6e27c73d69b5052e9840adfb166b933fcaba3374c8de3fe3b6f42280d202735e2596f9f6b3456ed1ad24a01e981107eb5ceab8a1083fe53fc46aac2a7fabf931dcd2d9dc44f93c596de035c695483c6ef5ef38fff1c9ebd76bcf0aba2522dc2a7aa668239ca49e87d084ee02e4f057e14d2cc4b008a8868f47a75800b5500cd370ddea87ed19bd6901abffecd593d7677ff9f8e2ecece2f9bb56f09c78918f4f9e5ebc3a7b731e20bf36a104043c777dfa643289a27284c81b3c6406ee9e1677ed40145de94347ad83f9c3d315fac45ccaaa4a66720d7ab7e8d4af388b70df633caf71fae353af27348a72edf366bd04f0f3f12039f5960159026602e0e1d0dcc86248290137c2e71c352b8ef178f3b3b51cdf127b2476e76a94efefcf96fa3e3c91efea86bcc107b939984510c9e20ec6d04552b59650e9be3695dc136256d4349dfdd8e136fab4c8a7e94cbf83dee1563a1808838a3c862ac13b4252195e4d8491dbf1efed847f75d28c924a5a73ea67e4c36ef6d41fecaab295fe857eb95dad3bdd2b18e1bd501208c68b3dca30634b0d26a351ac1a42e32f463dfcc407cf74a8db5f33c6b4ffed170d8b0333f54711bd5cb09aad7f268e36880c631c3155a13e0e2ce3165b7aad75698ebea691eab7596d3a3b5d5cbc0ca5242bc2960e2fc348cd8dd4da2e4cd83b236437a81ac82d530f31bc5362d54975938f5903cc86ac2e6f7c3f66d40f8b13915c2769744176f718d839c1375e66b54b73fcaf5f2dc7635955dd61073dba269a53103b390148c8a22bc9140680d05d19b3f6bb775964e382df52dab5deccd1668e5f3e3a7d9d8eca441dfec44ac981d839c1c6020be274d38b01facaa8d3e964d8b1e284303ef095a80b71532c4b616f2bb11b0e3b4b888448d6d5c94a6f1d0f772bbc1b0206175bc80d404021245edbe0cdfe146fbdbb112301dc9ecce8c5b428453d97e2fc3f5fa7b5b42c51744bf9dfcbb494955aef103b334e17272f191df74f7879a22c61dd7c33633cc5bf95dd811696f1b413235c0f9622963f89699ac94ae0c3bd091fa27de48dc5a4fabd28d35a1de2b21edf96588c17b6508bb3d3db922b62f9d68c8b185e9b8031ae4fd5bfb712c69fcee5f8f3a8f82d26823ffaba9af35625f912ccf0501c7c5d8c93ec455126b34054d68fe82ec30ea2a46d671b31d2d769af5070d29b658df257ace7dd8d784f2f1f9dbeaf64296ce9ed192bacf681419dfd39c9b2c64dc5e437d84f10c832ade56515df18668950c63956df242060c369f318c12a5455fd9ac6b77f9e27a34c4ec4a188a03368ce88374cd46a89249f8818f4b4dd7431ad8995f3a2d11174979d7a12e75d9c888ffd7156e4f299940b90e17814084173b78ced449fb48d39bc5af562e992da79c371e8b91da6a22a96f9648b29c02c02b2ff3109cf46c2084e53ee87d0217f6ee7a1ff7c1f56947d5dcc5a0244eefc3cacaabda556a9f14cbb17f5d0577ae0dd3156e9160a9b98ce66bba935128d81b2bfd5c9f8c1ca5ceaa6877fc71f635dd447ee875e5127f46dcb3a1150d6da3068cb927599e4d5b898e82e5fd89fede5a3175543b986cb2ade4e994a0190b67e9475a2389b2dbeb2447434b123741d5e6fb8b842807d39316233c0827d85cb6b20a230c9c30c4a54cb855a64693e13e0d964c4f31ee205f4c4555d831c50d47359a284df77c7124143378cce2562903ef64e4530a734637067a626efda8952f84174cd4d036f12d5b85c8e46b2dc43e19b1d896e79771fe8fab8b81f9edab67d33abeb50a833eb5ea03f9c5d00e27a9e8ee70244a6ebb9cc0578c12a62829b6ca2f1c1e8311ee9b1a9ddba1292e831db753d04e1353d376ec9dd6f0f3452374eace9fa48ced25c2435dee4d22b99035c985ac99bba6d02f63dd0addfb6d364cb84fd763b5e747f7cfb48f1852b5956a08728a66299eb852bf57894f47c99d4d5a64ebb7abb0f5c07a25d3757be095bdce88fec7650ec06e8380e3192f3049986a3f34926cbba37bccfa7997b7c8ef903a3c1ee7a54ef10f1fd76c7bb839f6527383509e5293bc87b1749f5f92e029f35e47a059d854548827e7b5f3798710db9221a0b77799c69af466e2cd37c169bba5a6c4348cd2d0622904e7812c49b40f29bbb397ca2dc0494b7e525cb85add15c06eba404dd0bf9de1cecc759a77864e1c629d021f61e1ca7222f859d76bcc990701d532ff088224f4a296e8aa5a896fa8feb24af455d085cd28f85b898a795b84eb34c47468253c4aa4695d850ca7dbd01d46aa7b5832a1957b39c884b3dc37dd21be6c70aa38c1910840f13e324df51d6c3a2dbc96fd538c9bff2b34364455307dd5ba8fd99f0a74609daa65c5e1b653e4c56329988146698ce639fae551a86080840577820eef1d5450f542c6c0ed373fc15aa52613e6ea5afa5d471ba6dedc8c1e9e431e4c1f614bc387b76d64095b1e2863b934597367479aa7f7a84695ec050e00e1433f5dc6e413dc733896d7eb3aed2bc2ec45fcfcfde6809ad816cc80876a69b296e08f7dcfcde9a7258a28d745b93e39563788ec12912f435c74c2b918889acea7209d0b902a1749a365a1a1e32b7a18d296e6863ceacf0488a1a1df9870cda1cdd414567011aff71a21c6cf602f444d9c04f83790005a9f1d2a15d4dac963057bc36feb412ab89e788d762358bb10a6c62bcac935263855d6ae4d3ad9d12eb9b85540bebd5449c080866ef8834ec882f62d8a955edfaefac98993f13f081e91c350adb7712b16bd525d469a9bf98280d5f4ebb339dd6dddb0ac9debec79ef830e6eb9e36bb9ea7555d943716cede08211ebcbd07848f1b2a9dde745775323a14d0f5754fac643e068f4b870729ac85b769aa94608adce54dae7b9a02a1c58a1bf5a19eb77bc6eb67f0f9c9487cf91205ec4f4660f5ee20fb0932bb5d333e60a55f4352e1183660226dc65cf710d7b7c65bbf92659d8e933066325189e4f2fad5c4ea4580f6f0c9f69ede24f433bc31d487f493959bb4e8296471a7fded678ce69f7adf2daa733307f451a65d23963990062c4b139b9af2d8637333866d98262ef46fbf42c2ed9a2bd37cc7d4f51a7ffa5539a6db5c93665bb6aa27fab75f17399278650cdbba151b66255e3eec198b5ff1159fd55a74424d9e799c63d7491d63d751e381edcd2ea1da6e83cbb84e6cb17aac548e6dc06ff3e4aa9143302f924c5e491e6a347034812c80b526e64985c8540df87dc77e1c51218e17acb2b904e20c3ba7e8a64b6fead1023a4aeee9ca11407b888f8b655eaffd0adadd097ebfe1d9a0503b8d50c3f7ffc1c7e8c235ec34488b60f9071f262262edb854a1ec1f7c8017c96cb7d1d5c96ca7a11d0ff2240a8eed493a6afc1b059d95659286f3dec522961aec02601ab3d8d5206a6dee439a8b536ddbfcbbd33745ad58c1fc3b4783452929d8dd27f7b7b9e957759a6522c9854ccaec46e857ac9ea88a4b29ea3918e124a534f9c475517e1669aee4e95929abaa3f2468b9ffaa614e2ad0df1198e9249f085ca69528f2ecc63cecaa5f122cca7a42c2ebdebc58cee622adff5c8944406475ed0eca1aba387b767648db05180b0026552d23c68318902ed0cc3fcb51558c3f4b3888730d0f58172686aa50628f1a633d97e2fd2b57f21301ba739475cb6e673482e793147cff2ee46ff8baf6f2e2c7d728ccda9f172ac31f17ace01f29d2e2ae8f716a06363cac21e42a434842b6a2a6f84d72354a82d08edae529c87747a423d86d775106a4d51b796df1bbbdf07b1a3b3897d7ba9bcc3fca778cc240d82e56a0fe157fa98376f76295aa1185756bbb1059bf527fede82d95279758893a8976ac63596650c5fb32bbbd77d560a0a72ce255a63e6ba732f56773d44648de10b65111499b7438aae90f3b75fb8dace1500827fd16012277bae900841585128dc488e40e679ac4b14b934a40af9deecc501a4c15ba2e801ec90449b481318429dfd000c632dfd00066b20db05b1c1d86da18484620fda1d8b016e81bb75ae658acaf963e014f785f663a6159664c70bac7509b48a58dd81d38b75eb1dbc5d3f456781777531fb6c1c70571593319fdcd2d1a69ee3aa3078a9c8bb9e6595ec76d08ac7f1cd66207e1aa11df7c231e58bed97661e704b5bb8e866cdc2a12258563db26ec6368e2102c6ba6234dd5c7d82225eb5d7c896fb4531a451f78b5f9a198aef91b8f024de123232f46a7a60bbd69ded8347485c75538e2bd260f54770b8744b6699c7da9671010ed7aab03a3de32d476dd6d240a89579121bbdc1a2474535b94d76ddd164e33cdcd75f2008bf369a0af09833fad9aaa00d87bd2673d1fbb9838781341f668086f03dc01d5d35d7557a90f517ceebf28cacbe7eac3b192d361fd683891536f0b4cd30ca120a592bea012edfb6503a78009eb87835f8e68b95226135962c977f0b73801f308f7c12afc84cedd2f72c58c653e81b6b84b86cf1575113dcd4965007b8efc029b72ae8f581fd43f4f2a750abd7ff7baabc6c6a8abc3cf1e8aa7e7e7a808885cd05ba0fb8b6c7999ab6bec3edc14b33497222ff6ab453246ad438b9e030babb2f3249b0a73fb071ed210605688e3f472c66ac17539ec6070022a5c799af04d6a9786eee0bfcdfd096f0d4cbf82dd3b59e1bf9eb70d30969315fc1324e9834725eb3fbd2c457e51cc661944b7b42e3ffcc823e7d7d1865394f9d760f5e73a3ec6b98b8ce112c9665479c8cf16949de3f9c3202682d350799a297a27e749424cd20a9c884e560f9ac863d187d46915a4712024d59d308628790b43c750fd1606a25b14efc81bed60fef074c862191d5b45828d6c01e0fe8762d8797870f02f41e00a218eeb5131b939f53bb77297e13eeaa428bd20f15d71dd5d81464f55fffeddeb61a787443984535b905ba119eba19640d7fed08e07613f8e0776382d5a40f76b4bbb8f4830ceaffa88f415036a364141565a3910bf28c40349e201dc1449f2b64e5bf71773c74d35c4ddb4eb4087cdb1d2840e36a1c5ffc9fa1359612147a7217450aea41bd46c9e5132fe3c2b8b653e010674283e2dcbacebb765af1aebbd4feb9829ffdf25240deba3c7a4b68f2603e163c4282bc69f491019ac943ea169956cdf8b10c2b7e73f50c00f5c56144a1bbffc13fffd0ef8ef8ec7300b2cfbf53e34a27f47d8775c215f3f52c7c6b5796fb13ab0de3f5cb00eec966643265c070a9a3a5e875b6818b0c39e0abec4fc3f206647acdee11f06e61e4fdb60bb5ba07b7dbf0acb04c0f5f62bc7acd7af8ebb82d663710f2ade36d58c32afe58e1066deaeabe13638f3588d67dfa41f14ed6ba2794ae4ef88c4178f3c2052f73bfb92282e92d9969652bf13f2f9cea7f3f6d2349ee4d68686f04bfbed0ea7f9df05eff1ff75016217bccb37c9553a834b454bc1dc66da19fb7267b9050224df4d68f95027330d5590cc384881ba023ec932f55dff13c1a7bcf5531e79b61d8837f23a781c94987a916095cfedcfc6c7cd8b8441239edec7abae8b1630dce5fd5113ac1bbe332a7e1ae6bf4866ee85f1229979af7f36b9e16db1b152f7aa18ad34f29e783f4f79098e7fe33b1e108996b8dd139e7e90b24b84bfb0813acc25c25536884eec3d6b9862410463d5255757831bc02cfabc55ebeffc858b935f3f6ff18986b72d78d4b2daf3c88845d734a066d66b82d6a69fae0845d2896fc46baa6a7db0527bb2c151d5ef1f3c563e604db2072bfa427591ccd893512b7c669d10f891d8f3147d8fdaaa669c8db066b2341c330adf82efe248dbbe83eefa70dbf46c1bc0816201c75cea64a69fab94940ca1e1e1c654ab75e7766160ff6dc1c76b98701e87ba4e66fb705897c5355761812e29f4e42344570daf4fa15ad04b85818855d3460f36cd8aa43e54b25e3a9bd7819e0b6368fbbaab918632002da12701f42f93cf6a2da1f1f8fb32d31dc2df87023ac6cdc35984e97b68556397b8b6b9325c27b3ae20ca89ee11d79287bd037a5e1475921d8a55d71b8f5a8c077be2df44375e3ba64766a551f1aed93dfed3647e6b574cd4d1a819e0d2ac83cba49ca5f945b1506be1db83c56f6a29b42fb4d57a6f7daaa4938b6416c40d688cd241195d6b7c8e281f096273ac363052f1580c3baa2ad5cb6107e238eb3e9370ce6d4f8bed513cec2dd182dbe07394ff0ed414edc377dafa095f7808da291cb526a5356047dba399ffb815ba8dff816355e059ba3edd6ab2f1f0d3538de7d5b0b3be5b600bf36945b8bd0db4dd6cbffc55743efa42439537fa13d3dcc0c1b8a3da066141a9de45b7b0ade245358e94180cd056be58285e9d6462acaea769a5a4d589a80b51ca595ad588a7a56fedd7856297fd613e18d8e4ee9e2a9417b518275926276274635a03d376d34e26eb0a2ccf93c5026e1f629a40f5452eaae5a892ffbd94792daed22aad2b6d893f5982d0d6033bfb597a252ba82fad45319d8255c4385924a3344beb54567df1b2b89657b2eca91c495615e25226b96a355114b89259b100542e55ddb29265b507f501940a9aef4b29267291153772a2e5ba2adec1ba10895880896e32052a65991a1e54287f4b2bb824d6c9485158aaad03835725c43cb9926224652ec68ab54e7aa24af3b1066b2e96557623c6c9782e279ad055b12cc712fd15965a82d466fceea5ce12bb10994cca5c5c16a514e09f8839652ea7aae7c554d46a4240f500944d738d8900305fb99817d7a22ea0b66251efa7790fec5ec4bcae178783c128adfbd9cde0e9bb27fb6f7f7ee216b692f4c649362faa5a9c881fd0ee1916f8759a4f8a6be727acb2c0c500adad33536cd8115fbee02e180cc487c3c387bfa8c5a5baffeaedd5bf0b9b51249389f6d2509937d40f15f1ba1f7efb1ffd83fe41ffe1e0ff532da801a41359ca0969635a94aad9471b1a413b3a2b3f0efecfc36fffa3fbf87038ec771f1f7efbfd8783fdef7ff9f2ed8783fd47bf7c38d8ffff7ff9f2e1e0e12f8fe14ff8dfe3bdbdd577eb3f0df4a3c95ecf6cddd4f3a24589b5c8cf51e87f7c28bab809d1bbf650e8dbf3cfb04bdf91241adc50d5809c78c70aa826873ce3686e803ec78f0f759ff56d4209f18bb250ddeecbfcaaffe6ecd9f38fcfdffca427c86df561479d1ec34e457b02a01942ebaae01a60e7f1622ec5fb77af51e4576bb82801e7e32a49337ce3ce61678ecae25a6d78e405da4b479cffdca757ddc57294a5e3f765a6add0debf7b6da7d5745fdd525742e6578762253e7c963608dc2fe60fb116eb3d18e5dbf73fbc7ef5f4e3fb77afad2967b0884a39ed516952d3caf4a45f94e92ccdc139de2f8b49e4be361888b365e9716b715de47faeb57fd354b83e293a15b948c4249d4e65a9781bd648aa8383ec5a91ac5896c8bcd20a1a901351e47d64ed97ea8622e6c94231ba742a12f1f4d91b7294900aa1a850a2475d1d01bb554ca53a1c0c66693d5f8efae3e272a0d6fca8283e0ff0febb6f74e38b415a554b590dbefdee3f1ef1e720772d659b35994cc082511d9132976557319b6432ecf48407e68c2ba0bac6d9ff04b60e76b93aa2ad079abafbfa2cfcb5fa74e4c4103577840d3265813908d34a94cb3c07b8cadcb19bbe782deb3f5708d48854f426125dd5e06ca94451aa3397e07641b99f922c9db05ddc8521f574c08ebd236a38351888279309bac4251325af81209015b3191c5e85eb5d4f2c8a3487338d1ca40859c52ae47d1ebcfdf9899814e3a512cc70d5badc7643f7d96e07e3ca9b7e3d97793782b84d4396702975d841603439021923adc44882830d2e573852f7a76959d54a4671e41d76c4bff9f2fab0a3e7979fa73d3cfe1b4ec24e8f56435536eb365dcf60205ea1044516c35f97601fab45304e5557d464c079ff399c6cdda6de1dd64815f649c0bc592d869d99da7c96de307bd852df9e0750d79efe8a735afa070b79da7529fd22475967aaa41b8e1d40b7ac125e922c4bf31976409cf06a5c3a990fd8a741c113912fd95373c05f0455a989a0edbeea5152cb31dc1b637d8e370d2ec1465ad189720220287c61aac24ddb46dd83cb22cb641914c3ad5ea3dc071bb9074295112617a54481d3e287cd930a25d4a9ac55422f52e1484b96466c0d0e1ec5ae906921db5799c136345299697899d7690647f6384bd50710a195e48bb272df2fdbcc0f04ece337046d8f49064af2852e8e241e540025ac5a8e3104ac0c3a83b8c88a92ea3c245d13e7fa3c0b5843dfe30d42f38708219eff26c7eafea76e534abaf7b3a825a0e3b47df38dde9b7d23d245665ef879f8fe3bf2f37bea89905dd99e7a0b4addbc6ec0b3daad1ebbb08269534c4f1d77b080643995e31a2090a9bf72122904e8356632f5a25513622e844b404e145a2ddcbe5ab6aaea7ea749cbeeedf3a433dd72a2e84ff263ed4e01232419760c2aff6e57ebd67d6948910992bac30ebc0488c9b234e729d9e6ec0aa1242bacef889c39fcb8699554361d3b830106375004067072de997192abfd0c67465fbc9a8ab456dffeacce52503a984b38ac0c606ef123aa5a1479e57997a869cf0196d56b1565325453c005e35aaa1b7396dd007b9821089048c45fcfc157a6cfa54ecd9e2e6e16124e2f6cbb3f075f93aa3f937517c09c54a6fdfa6621e90b8f5a685420d085d589b2ace0487974f0c85e7dd57f5ddade033cf4f422359ffb693e91bf9d4dbbc3ceafc955528dcb7451abf348d5b7ff70cf54e60bb86f0a9f347a26de96c52819297a90eb46b258f4c5bbc8bce07fdbc887cdb284f0e58965ee54568dd2657843c375d3f5a2a6dc46b83b6fa2c8584a80fdca8bf232c9fabb8b757c3fc7b7323f1f879d3705bc3a9439878bd0bd7b8202b4b9a8a4b9e58a97c544d2e32cdce8be6e8012dea903b6bce3df6d11342e80a38844bcbd7af8099869bd2d0b8473ddd2880b6a7d76f623cf1da8917f405505688183ba9b74cf6abe88def9c962b195f155bbe195ca008ca05f8dab2ab0026313e2aaf4a6158e4f3374ed53d345b5371ba9d17e7bb44529f064c5cc43d23cadd3244bff26bb7b0fdc63c5b1a28243fee73569f5b8dfe65ecfde4f15a3d56f083fdcbc9a74879db22814d7431140492c5307c80d40daea9e5917a85c311b441d0244bfdd8322ea5cc25b0154c4b604d1b577f7c44866c5755fbc2900d71b749397b212d7693dc79bfa22ada7499655a8867fedeb7a39ffad0e9bb4b67c3b797bc3db0a9b8c1f5b4d1e777a4b0181e307c58b92f2862f58dd7c35607968716be7182d6653dd5fbced1f93340f204d680d2e032ff83699c93745fd022eacf1a2340b2dece0c0a2c51cde0ff99396c747fc6859f450d1ffc421621b3a6b92ed1f014fa91b8baa34d6416daf1ccf8c46c5e7c628d91583c7b258199500ffbb45dc86278bc5bd3879f90fd1a3c577fb93a4fc4c1ff6d9e2a42f99647531475af606a8bfb5bc04fad6d7495dadfdb764cf745b2f00560ebef90557837f8d178e987dabef0008f6af83754be333b7d56871bb0337f49d2e7a5ade6d9b0d15441f4e3752acd9487e6351bb635859fdb5a1301d18e113bec7b5b7528e07b1b51679fdfea5d7c197c4774551770e3b9df5ff0d0000ffff56ad0e6cefd60500", + "0e008f6818d129d6ed41c25ec2d4e27d": "1f8b08000000000000ff8c56ed6ee3b6127d155917104484a6eddcdddc5d4bf4fdbf40b105d23f85202c686a1831a149811c390d1cbd7b41c9b2b3db4ddb2088f831e7cce1cc709872d138892f1d242d1eccae8c7f1323ec034fc1a6bbb205d1ecca03a048642b7c00e4698f6af9295ded4aa3ed53e2c1f034b4cea3ec31d1d2d934693d289eae9438c639d3d245f391c58a03f0f4a8e1b9731ed3443a8b6091a7cfbac1963770d41296e3846aab510bb30c5218e01b1a5aafedd312dd5269e4f647526ce1004be98cf36f78ffb31e7fbed77b10562b0878913a2fb0c7e06cb4458d0676f728425baea6c9843f03020ad472254358ddb24f1ffe07203fde32d9f6f689c910d2735cf0c5406801307d177e10dab2cf1b909b3ddcfd3dc36a4ac7de352fbbd2ba20bdee70f7bbeb130bd024e812b0626f20f9228ee27edc8d8bbeb709b63a24a2eb58b9ba00cb461f13ddf0d43b37d237fab82bcf9b0bd55b89dad9dc90d33c4e20077252cee747e1134f915a0ed5baa68e43b5a969cfa1baada9e26baa795517aab4cc807dc0b650373704b9ad544dbb0aeb2cd3aceb439bc749b5aec9b8cad74524f789b689235ff78f209175dea18b35ca5a11be3edb5fbdebc0e30b93c298dc514fb22c3795afb9ab7c4d46869065210752e8d93dd12cb45a614e725278c0dedb448e0a98e83af3924bdabfbe5635a12227c3e5bc22bf1e17a8e7ebc29772e6f43737d75de4b2f235b57cb1a68e6f0a57e26ce7a25db4e93956ae2ed60bcebbaaafb32cb77cb12183cdb25cb2d0192d21f7cb25dd100a5ce58a058e313864384b8661f2751a68c74f9bed7aa0720cf42c58c50469956305353983e298c11ff1c285624c1c8f4bfca4b740cd76b1a1e7cded6918e6e098081a23ec672cf5f43a56847a66e2692f6b8362076ea862922355ace1971202ea299293622e0ec9ebeb39b50d286d614ee8687602db1fc0c732de2ed6f401708b0319a862fe0d1f39a5bd9dd04dbae0b13a9c4aee5f0e7b67b26cfa3274f7e8b57df84d3c64d97b1eff6a4b4f47617ad8a6bfb8a637900e84be074ebf7d8370369b618bf52417af723d9d92b2c920cb72cf55ee09a19f329833e40badf20f713775a3ab94cf67f259167fd9d5d31534d5c2599cf4201072db1b43229d623ec7f7a4234d1b50a23798fe18f1e9147e20f4761414c6b85c83ecc95cf2365e534f146b72a496becdce2cb1827a607b6d9b5117b5e472f930c6c87e97d2a93421cbe0cd69ff7fb1b8b0023b6b1fb63fd9bc5470d4e5692a52ea09f5d19dfbae222f907fd567222072743c5da5e75bf4ac6de39ed933ec3b219fbe0467bb9fadc5be422df753bb19a3e149314d79ec2a9e85f1ea4fbd2b723bbe2e5ce9df7610c87de56a32ba0edc16b14fe5554dcad5dccea76f12bcbcbe308ff17d5aabcdc7bb5b05e7d7e531c466ff0fa8f159babb83bbfde7ff6e7e0a5c4defd06afccfe1cf000000ffff97786b8349080000", "1c0c9f7743c21945afe55fc74727fc61": "1f8b08000000000000ff8c54df8be336107eef5f11bb202432a775aeb7a5c43bf4bdf4b8d26b9f8c391447caeaaa48662cdf76f1ba7f7b911d3b77db5d2804226b7e7df37da3c94cef9b6883e75a0ccb79439cc46002f12f8a361e0c58a4aaa8c12155bb1a1452f5b686060be8b0aacbe6ce4aa7fd29de97cd762b0cdaaaa92154a666ac936ddfddf3f45115b5986eb1285372bfb17ee3c487c367dd44d95288213eb65adeabeec383ff8d42ab293eca4639c71d78c118d795afd155be16538696b1969328bba5bce864776f4de4828b9274ecc96ffa0981546deb1e790feae9a9aa05442ec6b5dfc8afed6a202c4abaeb979cb4dd5ead11fb8a6af09815607157dabbb8f8d9e4977c1cc6cad665912186cad58c718fd94e8c9e31decbae75b6d19cdebc819d008d861bd9614ce488f102598f13f1388c1070d8ed8b11fa44f40ad82481ace1bea25a5c82d259eabfdb40b12b67ace90a07bb2770fb6c0717e37e18c7851c9d822686e3120b11ae6723204a97ba5def4623cfa8c1c8063d1879c4eb080141148391211dc5d3d345daa336d6eb45d0c96dd0be3f6b5207a7f75901271df77114231849f8f548e6bd9fa38f798698c62398cdc7c7f32138c6e67f19c3c748d69ffe5027c65e2bf95f5f18be28d7eb7dfe3e1c7ba7f351c06bc1f9a74fbabbb82d615931e38ddff43fa9b2639466150dd742c04f8c168974690d7f97ac79984ae5b836a5194b3f792d758d9ad5bca06b48aba8b9ef9d13299f91c4e36bd823e4476d54ef62fe9cf3b90d3d0a783b21ea2662f26c0524d60d901eaa16461e79040f6bbf2486afc6689407eb8f132ef0627d7e3191e4bf1135e5247cd6edcfabc735abbc601ff72f18d7194eb80872950309a0542e3cd3e4e2f8bf364d0a48395acc6ff289798b0fd61fc3837cd08756357ffdd205dfbe7497360b38b4f3c299d8b0a29c3f91c0a295ddf4f8e7ed95722b2c4a755d9f6abb15c46da56a31956ed1956953f1aa16e5773737df6fbad053a3dfabb6b5fef4e7efbf22f53edab3fee7acac97cdededbbdd0f3fdecacf9d3cabf6df000000ffffb17166d3de050000", - "22131dc16e10b94e878726b7aedcd7df": "1f8b08000000000000ffb4bd0b9824477920187f4464463eaa2ab31e59d955dd5dddd5d55535d33dd3ddd559d5359aee9969988784668a01cd0cc223212103d51a090d60212c190e0adb7ce20cac00db77eeda5b73128f5ddb1cdfe296ef00ef721890ed5d4fadd70b36066b6dafcd757fc66b6eed5d7ce6ceaebe2f2232b3b2aa1f7af86ea62b33323332321e7ffcf1bfa3f304a0671f070408a3e17f803e0afc7ce93568cf13f96ffb5b9ffeebd16708cda0b7a377a2e3e8067a137a1bba89de861e450fa0c7d08fa1c7d0a3e8385a464b08a104ba0bbd056da0c7d05bd103e8c7104259f43af416f463e8517443bc378d56d002f25e74897ec54cd441042d5dbeb2b8fc6f53ef3b8210fa5708a137bee99107debed378fd9710820984e0a7371e78f4ed08211b21fc3f2384b48db73ed1fef7da336f4508ff0b041b9d07dff2c09b5333377f05c143bc8c95071f7ccb03e49f91b72278e88d08a1d9071f79e7e39f40e5fb103cf4d308b13bdefab6373d70fbc7fee67308de710b21f299471e78fcedf0a77013c163ef44084ddf7ce091b77ce65f3f5043f0d8cf2184ffe1ed6f7bf49d88f03a3ffe73fc3922b00b1f450a427009da08a1dbfdf30f500efd74b47f3b08bddf465ff9de50a7af23f417083677bba80d9ba81d1924244ae7ff88ff9b40e09f89c83581283c88107a1d5a470aca2240d36816cda333e4e7a667a63f5bbcadb839932ad1d25ce9fda50f97364bbf5bfa9b0a54d44aa2b254794be56355bd9aa8a6abeed1ff7d7b77c7dab9b8f3969db7ee3cb1f3899d5fdaf9e2cebfd9f9e65fa0dd7fd8ddf5eb318be622e57e742655c2a5a343e52afb948b7660c7d9b9bcf3e0cedb767e66e7999d7fb9f3959d7fef970bbb7fbefba7bb7fb4fbdb7fffce3fd9f993fbfef83ffcf17bfe98fe47e7f9bf7efe9f3effb1e73ff0fc6b9e5ff8cef47726bf93fdf60fbefd1bdffe1fbe3df5edf16fbbdfcefcc123f9e3f963f96a7e363f939fcedbf9445ecbe3dcdf8ffd9edf2bff7ffc0304bbbbc88a948f116ade066868bc5ee85e6bb70b9bd045bf80507901aa7bfe1af595e669e07fcb2bde72d62d80eb457334ea957998512721012cf8733222df9e3f27ab86794a3315fe7a299ad5c964576179e514c80f8abf46bd5285a7d4b8ae650c336bc65cc34ceb5a4251154aa8ae283155316962cc3412e47558672c65986371a211cbcc1b16d569221733d34c638aa224343d6d1ad99899354519aaa20255a8c1d484c6e26a7222164be0bb98aaa64c336fa909669939d3520c25311e8b6534a629cabb0d5b6506250c13051385504da1714d3529553126008aa2666c7bc28ca53466100098342dcb9c0000ac33356598e376226718495535285509a1042b9468aa12d7b5b8a268045300d098964f270bf198a36b718a314c1a96654c02003599968ec50ac9c49821c72fbfdb856de8a27308956bd5664df4586946653526139350ad2d406946e5a35273594d8c8fb7bcd2ac3565e214b88d0278cb2ba2afbff3cbbfac30cba08c7cda324debd38451c362cafe77171f7e889accb030def8026fe9173630b60c66d2871e2626332d8c1ffc22affb171f04822d939944c2dc366c410b4d21542e05b594355c85a04eb23ed0edf0ef757821616aabc3bfd5b10cd3f253a661712cb4dbc508ba681cdd87de8410cc7050539d0c87adacb7cc016aa551e7605761a7c187660999190e999604e24998805aa9b1b472064210143de8436e75a6d2380d4dd7734a0d408dc5850b994c26736161b11149ff78ac983153ba9e505583504208d1d529a200409dd029ca30604aa9a931932a0a068297312656fc48bd0e5d27737e71a1d1585c3ccf0b3bbfb8d8682c2c9ecf383f6e1abc1c458d6bccd6759bb1043bc2c18829268e79493ac7c14a5398a1504aa91263046b04a7268dffe2797cd6fbfd83918a900e454817d380761146fded6ebfb709dd3e8276bf079e84ad2ef2a00d08c5102a67d4d24ca551e738c081f6dadcdc1aff75e7d7d6e679526095fc6e0f7ad0414fa0f722948ef67033c017612ff2bf60c833fce404571184c1a1940f5abd595dcad442a4b10055091df350e7756a04571269b8b51350fbae91b7355b630995a864952834366e59457b6c3e9d9e8ec5330c632871a01a0718e7e719209865e2f1a9747a7e2c5db2ec8918c0e9d8b463e74c33c9148dfc2407b50f017c9a67ffa784296acafc0ba8aa2ac1445330236b986123a1288aa66b6309ab94514c85c3286594289803af1253323356c2d5354d5595a409004d88c75555b50d96d47916ac62cab19761e94966d8eae787e07a1acdbd005c73a04c971a5ea3d4f01cef40f0bc5caf6f74bd5ccb3b18da363cafdfcb6fe56ef978661bb6a18566112a179b0196e133c6c964a720c01f8b5014e712f4fa9fba49a865a83ae9124a4997e8aa61517213eee51db87593188a6951ba497545d5e926a596a918e4a698cb1c476cc116745019a1b2841bff5bdef2ca19488a7323e98678ab069fed524d5535da25d4d6558dde4cc462899b5453759b923fd9e43362936a6a2c41e9cdfea70cdb36e0de9b942662aa46d19e3656039c39054571f68a6cf07d7f5dfa93b051fd4ff146c1bd434dfeeca0518669451aac2a3a1d69236f5f52f4a9938c7c5bb4cfff5ea906ddd17645dbdca19477ae6d1bfd4f898629a25b6517c712210d8011786875a48d870ee99e96d7e0ef3a5453cd0425d7fa9fbb4668c25435dae11f0befc35d43f73fdbf1afae5df37374f8c88ba7a2aa57af8a6aca12780789fab677bbd085aea8afe8237750afbd607170cf75548d7f418e7f47f65ac71ffd7defb728bd0a775df3b3844de3d9aef53f7735bc4f88b86fd8b2be9ec0816d544048f12b5ae20094f4973518acb4cff59ffb1a879a5dc4318b61c1aa0f210c4ef2ebe0c957fbcf49a8a2c3e5fb80b90a610f34fd738343126ced225ec8d7facff96008ab1c0e2d13dafcdcff4d2a811756bf2aee22c3dad30641da41483ff867af187ec3b0facff9d58655d11c40b234cbfc2aacfad3a1ff9c6c107fb6f71b9260f1e14ff454d147e87cf8a0272adf7fceafbc6c14ac520a2d5efdfe73a2fab2b126ef455df5695bd4812db485e21c670d2acea98afe2d519d3aa72664b9a2f18335d2420d849aa27b3922e5435765e56a4853ed81bd012af22cb3d3ee9856af07bf792198f98a4176081f069d7ef39b54e71d46da5b86b5b565195bbdde85f3022b1ebdc9e16cdb7ffefbdfa4f20d3e0f90075d40680ca1b2572dc995b4c43c5901bf593f0b1d2006a7387882f2ce322dfa862e5514da253ae5eda4ba9c5791f27c10cd64dd92db94abaedb2c9d06e8f26ee535192e775b94a3d12e288aa240976a01bd80a00d1e2f1344ed24ade9d65c4f764eb25e8196a211d8e435da04a22986658147382ee034718790101087ca2b73a4e337db9f4b4d8f53bbd01e1464f84577555d9424e60f2fdb90688ff33a5bd046137c1555f890faa329889bc155d67387c1059db9c7b52df758b178ccb56cf79e339fe93fab32a6c22595b1fc3d67be62b9aef595e2b16345993a738fc7548531456512a67a184107c5d06d083565c91233345f6029cd3a19751e1c79a3e3140a0eff6df7ff7ad59fd21b7c9dd9f027e02a589c1eeb74d6af5ff76456a7b073d287a60d09851b3e149ee4f45bfdfafafa758410f5ebd84609342684209c322ff95d700a4a4e5a02c92414dda2eca4556814e5c4a8574a8c931bd0be55973057af4bc881faa57e9d438b076d8f9f739e87da929a6ff3e96b19f99c656e9956ab254e1b9e178c95e411c6d13c424d390ed586cfcab01350638e047dc5af8eac68bdd2e6939a90ae84d72e0703a847a67bdb3239986c7108dce280635a39cb1495f304721ad05b59b48c5e8d50b91102467474aa87906164469c1a7571d35b16599c8c7801f29ccea3b4e5d30ee7f307d0688db94af9846ddbf68972652e92fed453bcb29baa4e2ff95070fe6f0f22e2fa1e7fa53c3f57ae34f9ebcd4a796ebecc8be2b4c0ee3646d0423984ca73c0e4e49a00278a534ad0c10ab65fed9db95e3cb63607f9c6c58b8d6d38be7a7d1d00f495d9f9b58b8dc645495bf8fda6230453c0dc2a6b569b802e7fbe33f5894f4c753e0fdd5fcaffd497eebefb4b3f951fc2b53a4a23545e040b5cd674ab1634ab674401187dfe72f0f6a3eebd9d13273af7badf9af8e7b2982f9c38fd817b9dc71f77eefb40200fe9421ffe47b416c832063c5bc0380cc419015f57adf03c517ea30a7dfc30c18a902f8c4bae9ce07aa331ae284a4c554d455530c02b30cdb2dbf200c75e7ff3434af2b50ea1340e670083a2a8338aca79bde2e2c2aa46354531a822661f51307918134ca76e4f26bb571e9c9c6c304711f36f4be0081b15d1323a8b507a18ac4b4512bde00f1b2f78232f16cc5bfcd8afe707c9e8ede134742c3367d8b639665afd579b326199639d7d9362cc65bd5f2dd79119953512c066d4528203141f8305a8ce54aa3395522d04b0da04b813e04836af5600f734705cce87658d0f51a3b6060d8c2e3733251b13000c718769ae050044a358c180c17063cdcb806331f7ce66b2ea2472b1b3afcbc56218feefe665d300c0181b792b396e0010ca0b21cae52626fc558c2133e71ebdb898984a998ed1bcb2909dcb602c1e112ca59bde6e177ad045098981d2e1b223e89e461489bbce8a98dfcd862ae0a925c98980acb00c6ff2c891eb0b0b73738b0b3f72e408b42cb32f5020744cabc59101ffddf8a6abb23155c97d739269934c1330b123e627412ad25116a174b2592d17dda69b643e375cabb262153dfd347cb77fe2bbf73ffd5f894aa94a569e817ffb0c78fddf7dfaa3f95b334f43ed3b0463b2f4cc3341db24ed459186320835dd6695b16695015f855c3933de75c7d75ff5b5b3efb8e3286c986975fe55734c2bdc7dc7d7eff8facf1cbdfdedb0a9b1b93be658da700a9c9643087ae0a109b1ee5b304a85377d2a1cb614837cffaabf5ab589a1a83a01c4911878947cff6a74510324c85349ab20e882878e21548eac9791cfb07de8b04580d99b010316305f37f7dee93ee2d3c1377de68d3e72d35f32df76d327c06e0ead0be3a889ce1dce871fb600348764290771e80761ffb540f67230e77e30d2ef45e435d1f6cca11387b7078286645d5880863b53a942018215eda036f4fbb2fab3ebb9fe7fcab8bdd9f51c4c655c71f3e0eaef22597137d3ff4ff9f5d99e9b81a9fc7ac95fb622f54ea331740421a5982c368b11ce21c99c34739b0dc8ae3457ea8375007afd36ac7afd276289440c6ec512ded4d7ee78aadf5e7be898e398f9443c6f38d5650f36eb8958df331309138ade37a1f7b53b3efaeefe0d1a9f73ce38ba69eaee460121a484b82f8126d13cba0ddd11522a3e3ded35862f6188ac6c0e5d2981104bdecc4b3e47728043b8baddefcab36959f744f077ffe8a6a00bf8613bc02a1b0116ea6f06a95e90d81c303e83b6c405757c025d90386f400794479a32545be590867524d7265ad01d6a89c75bd8957c61a45147228d92c412ff79614bc206d4f73409a103da325c4118694b207a9454e650d6e12bd88ed4b37f74780d1d747f7455957ca9687f3ea82684c3b28b82a5a21ddcda085a3c02638371390ca8c8d0153be42a3f5cfbc3a8827dd2d0da0b5950df0376eda0797cdeb677b7a10b6de4a0297414a1b240e502849283deaf7a3ed7d3704b0d992ec14dcd38bbf4113e6d3fb3742e97fef5eb9ccdbafee8a38fdaae6b6fd953c9a5b309b3bf154b9c5bca2f591b9c596bedb438af266548dbd081369a42088666d92a90a1a19f073876927f658b4ffedb6aab22cd0f27c04bc4f8cd58a2bf9388f15bb10442f1101799c84525b48856d1ede80aba1f3d2cd4cc42121e959db308e1c0c24520a39203ee2b2f317fd965d5a6c70ffc57e207b8f3f8f4d4f1e353d3c7ff8173a8d3c78f4f078ce4c835bc965ff09b418691ebfe573ba94eea3fa73aa90c4f64529d54e77fe279a68f1fffef8f15a78f1d9b2e1eeb149c6ca190750ab0235f9e3ede0999d11793497b7feafda9d4fb53e09fdf1fe5158ea11f45085e0a15c0d72a56954c40a3be7246e8c3381f305329edbbe2ad412301f0e593feda7f3210cbad064cf76ac052af1eb1c70dc8bac6843d7d3c6666b3461c138c61ef72a8c6c1dbb71c4179acfa72327a72336682eb1ab1e353f6849975cd719bc554d8bb520a2a56f0edbe3c3786f2e808aa8fca1786c09bc81e5805012ad548c62e1f440e24b76ead5fbfbe2e0f9cd31307093dc7b7c5717aea78ebfa199ee1ccf5fe0ee7fdf8ef56f04cca128239d144e7d15d42721b7eaa39a3b281d22f183c21cf09557fc1e03139739212baa3152e01f261f20ba971a5c1e9a186329ee2f746ae7f5e40e7f4f4f15600d4ad00f63ad9e4473841f4916496dfca263fc249237e95750a3dfe1678fc980f5e88f0b83704adeb64b22ef36571f254957c65336842299ac96fa82bc562d17b83779a61eb078540cf295072528db3d4b8b2a28ca7585c3d492821f7a9098d37295ba0615a3e93d96593875e0d2ef97c4741eeac6d67e56d35a6be8e28b2c13c4de9a004995776a24c3bc9a413a4f97d342407785c8cfc215d526d04f398df7012e0e77d315de53ac16c1792a1d3e0e70de0a367a4d81300008f6b2943f603c0138aa9da599ecedaaaa93c01205bf352f2b634f522d52865f4a2aa71a8283854a39714153f442792bcdf9213f421ac529e4b0e0e7f8351aa893744d752e6bf11c0acff06a33ea44571de15f42fa4442354ee47a51ba1703e6a7b116a04a27ad410b002f1c7d0bbb2c091afc8a11b79571638f215f9694e657f935806071b2da65ad3495c48a7276872da5213aa53a0d4882ba97c3ef542793263f975854329a1e6585ccd27ad09353e6652c2c14d514d6aa59271aa696a4ce36fc4dc041db7f6cb830db5979cb2d58492e525c7d4746e3ca9c6f8d7b32ca6da53493a91ce4cd0e494adf0af13aac7d5f4583e492ddd2fc99e4ae242263df131bfc6aa41e399944575167c7d2cae8edbd638f5bfaec5f8d713c99445f4480dd571cb1e27897c2c3247de889012ce028e44f6ce891049ee05796fbf79b0e7267c87c3716a5c798864e20148c733e421810ef8dce7b79c643c434773d04c9ccf707ec9c19b674f26f8fd01a4934c82e3cfd4048d42334d2712e9c3ef2084f443e827948ed04dee0169e780343b20dd38a09c76407cf4f624467f07e7086f405bce7b891d22e73ff3d37fb67fd1852f8cbcc3f1a916f6510c8da159b484d6d01de82a879c680f39e517d12de503ba4239e07ed82dd03da83bfaedd13b90df73c70bd2de011d51f0cf1ff0efbf27e810ff3cd40fa3b032d40fca8be886839aebfe7fd90d7bc0630f541c040d5f38b013d4b00faea1c7d0b3e82be8dfa13f43c815156d2e2d4bf3a9a565cfcd2e3757ea8bb0b4720aea2b4d8ea397966b4b2bb5a5e5467301aaa5c652b6e1d52b8dd269680a72b8c131864f07af34ab0928551b821a3b018d6a2950f904245a6d79a551e66b417d85a39c13d010b25b7e195dbe4f82279ed6a4fd205fa4c385a41a191977a062f1965798f844534a3839dacb64bddeab360801c04cc1e0628a31ce02a571612f0793442136d6718ae8fc7ae13629ffbaf3ed899cf296f32b44650b195555554d57155dd1e047ef270a064c316000b86bf5e45d779d540c053028baa28832a846eff3a9fc6f70aa707e6d8d518c29ff9d76545565821e0260ca9d0fde1173cd0455b31883825d00422811f552e36a0208550951b16aaa5825e3f7dd26a55bf75d983cffc6fb744d4dc2a2a67aaa5657344d9956958bf7514de135d029505d018ca9a19cbc72e5e4ea5d008031f06a2be43e9f89b85d0af4e6d73e98c484607eb098baa8f2ef03869aca50146ef8dc0970088203607f48427910fe88be0c5ec012b4ce2e2d9de5bf4ebd52aed7cb957a38433ae5f1f132ff41bb3c9eaf54f2e36540fcadf5ebd7b797ce9d5b5a3c778e961b8d327fef2b3ecc2765c6325ce2efe62b955057d2466be82c7a0dba17a172a97a1b2c40758903512d01ec36585243f332cee2656a01e416834435b0ce68165da7d870a388a218b980ed5c9ee6e2e7ce9f3f1bcf53dbc89996656a1cf0f8ca09757ed434211ee9e401e5fbb7e276366bdbae6b439e1fed6c76bb15cfd2588c66e34b9396615acc24187f853f8cc5f8f12b39cb34ac562b97db946f0625d8d9081db8883c84946ab37c1a4e41bd320ffbd84e7256cf4b47a619941a1efcf09177f6fb00bed1a46841ce323709c5f714deea8379ff9b1b1bab8f4cde8b29ee1a96501d098155c7b0a0bffbce477c530ed0da51daf40e4849ed7c403ef2636546d2a692229424a924134392b4b694ad2daf54972ab55017771a1a6c510e63ada23a4bd95a26ebce544ae2d29dc9d60a308585ada685136081bb008b42bdd43c0dee52b6965d916ff2a71c730894b8525ba9b0250114a2e4464575ebbca84910b916b1c07e677ce5e0192ccc16a7789df8a4603596f02bc43fb1b4ec26a2df120646fcc7df9175631865d3c61d0b66d688cfa4b2953851c9544d9b98e13c593e1b9f49c5b246bc9c89bb666cdccacde8a93c1e336cc5c90336635525a39a4061825202045e99a04978a539c62cc090b2154c2d23e91a799b2a464a3fa6656826c1129978d1ac197adab4c63595d8c9a49d5475825552b352a925ddd4137a7c4cc3c44a71c444c9b863009d19231a31157d2269643453d392d4b1d56416800028788a52ccd418c6306664ccf20915ab5652a1bdb1b9f8c22aa1712b93826ac1582e18294d4fe9f9855822a12a568a312386c76fb363ce9d8a6dc68fe5d598129b4e151547cb9bd309484e334b0302d340c06449500d3555d0b0aac731b9dd2a2729a84a455341a593aa4ae3c69cc65822be64d8d88c8f69268d6b58c1d360147428aa5996a58aa963ac4da6588263f784e6cc28d8740b0058b76ca6c6186340c83425a0a5b5e998129fd2c764bb14ba54d6a856b0f5244343fa9069b4cea9ab66cd07db9a0fa0351fc86b3e682b73c06aac2aa05ddab90ce52f39226f35627d9d5df64e42f83cbe4d154a15baad32a646d3f06da292ef7c87a82496883e49c40ebaff171d0c803bd4d4349346d32bf8ddefc609538b117997c43433d106fcee272824622c463b1877688c49fb403224bb79d3b0e4c62d497bff926fee1f31d80d702ae73ea4e4c64b4068801eb1d73d0da1d179015c594228caf9bd71fd4de72dd3b4cebf491fe7f867e4fa1dae767e895f2f9dd75cfe7ce4ba175057f90b3faa4f08cb7bfd478505d6f937e913866519e2da342c6fe98236c66f8c691796f88da50b41891796a4b81a01eaec7e163ad045b3be367e02e42f933d032bcb53905d39056b207fbc715dd332d9bd9ac3ee65a665de82ae655e370ae6ba51307b86a2ddcbd8bd9a62f4cc82b16e168ceba625dca4f242be3f8e9aa1c66579c54b84f20e5f0b57291ef2accd29004cb1be20fc0dcad3c55a22b106fafcdada3c26e1ede2b4b8dde1d4021c173686529a280988915b52b4e8ed3e0f5f8636caa0224269293c9c826cc602758623eb53e045c5725ec1799791665fb6ac775973d69799769daf6296eb5a9c0760dabfb6e6adc72cebcb2c6d3c9695ab5cd6ff4e17b6a08b6c54161681f3e08bd578c77bcd92536a448d0385f161cb3233ea5822e1b28c616db5eadbc28a479a1541dbb4628944cc323defd225cbe8b7c5ddaed411c5507e770bb67ddd5d119d43af422d74177a1dba07bd11bd19dd40281db50f1bd855f897ace478e0f87663a530315cc379e08bafd328353c774fc2e145344b8ed7e8486d42220628486dd7eb90e37342f01b79ddb675e8f2637e17b5dbed76273c6cd6eb9d7a1df209d3336cdb105acb20b5e3412bcfe7565e1e6da3df1576cf6dc3ee6f6e6c743676c2c386e76d795e20bf93b660cb08958b0d9f96084c690732772b62b1c9f3040643dbfd56e7aa3472def28986a7af115d0d0ca101485c930a2574b4738daf8b5bbe20fc197175f3793e56fd4dac105517b39146747a05b4804e8f6af4ca5ed0e5fe104847a2c03929932d7ac3d7b01d559dfea0cebf280eddc014cceaff61980c357779cb844b82d67b56e859c343a0fc8bd2da164aa319544367d015df5a37021ca4982c8ee87c9dc32e4158f4788d62b2e48426be9d883ab2dcef81d7ff6f5b9c8dd8e2abc8a5f0d05118533a2a63f071fe421dbcbc9c2a79cbec6f8989d132adfe16208f29fc0585d53599d03c4de1252a1a6c58662bbf8b3c993b22e7375006958515486824d8a80ed90b0ecd5b9651e7814f17cff11a1ef42c93570abade88cda004918e5011e7ba3990a3e109f39a7cc732fadba2e679c3124df03c2fb27ec5d132ba7b8fdd2f07e3d0e9e90043f211d3f1019c4f0e744d2ef4fa829b87ae5328f41f560c52e4e051f469e996746a10f6795f8a5e8c664403a10925c51ff0a6fda0e84f9a16a58195e0cf5ee2e94bfe2c99f95b9eef6f6702abf0007ff6a08b54dfb6b551ca649bd2a835b2664b53d7a85a9f2fbeedc26f1bd6c9e3bc1ac74f0626e2fc28641a7c00965f6deb7c69d5ed572f770d2bd450e3d08721874a23de5c4368b324d9a94928c12f2c0bed8c198f9be019c9a4f13bfc2bedad0dbe0a6d58468f97dd33ac0dde311bd22f634bf815557d7bf491c2391f240bf7479637ab3db7d613e021a1865306bc656bf37cf91bfd8a9cfd736b11bee627d0b7221631593ee6e2cf2904766bfbfe6596bd02b8cb59a9c4699e14366d278574e4f0bffa8a14a5f8f636a5646d2690d3afd41b9cf05a9aa92d404348fe4343b96660ce18ba5af1fa2d6578153381a795709d62a1bd5d024a81c18e2f231062100c40c4896210267300e09eae00e8299dd31069c3488b444a07a89c76f99b42cac139610c18635958e49f54802ebd76c29eb52754306c0500338641016094600cd48ec5a62c6b2a164b52fe7dcaf8e735153028b60eca8455b627ee5a0c6c85584c2514538d10851055fc29983082a93812a02a050c530b71200af8ad5208c417a6000361144824fba00c42348a2951632c30a03a32a3592c9e3280803e1607aa128831126386c11b169be2847822a78b7fb90451a9391507c086aec5308b01610404cb05662ac62c6de688b4e50870d3383a8a2e4bc9455441cb860d5186aed2d501708ca8ad5706ec7e392ac5805600e503788fa47ef14ac64da5cecccd2d2dcecd9d49a5447ab1726ee22e35a1d959b5ff9fefbc71e3ce8b376e5cec05561cad20d10d5040ff37ae4c9c2b2fcdcd9d4ea5d3a9d373734b4b47796159e78aa2666d2d3177e3ce8b0f3e78f1ce1bbee7f1eebfc3085e8d1c8e2fa0d65800be4cb09ac342637326e6b858f99a45173e4fe2ac7f8bc5c965b924744ceb9665b6ce41ea1c9c06a6690c3eff695e994fc72c239f37ac6e171194472d8c50cf9715a3e601d2dfa86ea02b044de3f90ab40349d55670eb23bef4293f72163a8c282df90a7401dd892ea32be8f5e80d08c1a15464b9f4422464a97618090921e9b81b928ed0caef4738f6b787e9c6fd2946ef45938b92579474620c4d089fb98876d76b8e923b555665c96212422f867664959fed7aed0de86e050cdc1627ff04fade30acfeb39d7ae716e4fa3b91f5bd8c2e721ebd1cb1eb0898f3a887b35460367dcb64df5dc69508d3c9a816041c7bed34285117b7802080ec87d5b4e91434f66116674e39d14ad86b73d972a2058924f98b4112f6e6eb77840149cff7b8e811baf121a6151c33c53e84b19d6825cacedc9a9db80489d92c8bff87f9b564025a897296c5d88755ade018e930e35ff285bfe75b90f488ae46d6aa34a7d49562d2db630519609088658c1359243bfdad3fadf7bf2186a163585e5b1052effa759f52f975490b78d0f24293e5e3de9f728acdb4bee45330bffe18cfb325fdba70c4a674fd708bd2b41c394e7cc9e937152ee3e1f0b0032d4bcf8d7ab3f02a0566398758c67e73d8614638ac7d2db0c7e1f5bfb4db855b024767101a9e8da498f41c2f095e2f6033bdfe76b7c3d9fcbe2789e87e0f363bfd1dc103487e85e39fb2e0015ac3b639516b9661abd1e813e510033e6f446df4b0a475fa1cb7bf2b30e9fac57e840c8aa4f381162a9c73a1a95e2bd460055ccfd6c08a2f3ac6b3e81442cd3dd4f23e6eac4dc914ec4584df97c3d8f147e02a1fc6c040bcf37786d5f7cd22252fc0f8e0757c2af81a1c156dfad6359f0eee1cb38c9660fe37fc43a4ae25b48650735fdfe161fa5f39a8aa9d3df51bd41dde315ad56d4aaff6ff505c1f09ecdaa513a9787b6b4f5523759d14753d74eec20867123161e424634f18ddbef249df84ed49317e70347261843944f4840fface481f3ceb3f139e8334bc94790c05eda9271c5ecf432a29640502ab9cfda0cff27c507461fff93069469e83203a9ef47bffc9578ac7a6d5dfa6e483af0cf39ad693020d84b67179640a7dd703c3f3cf1d40e73e2d10d55b84e80bca005ebce156449cf7d6396d90af54fe4fac6045c378f2b73817fd5b93186b0aa1d8c31863efc7fd4cfdff88293930572f20325e8b3153b1822739173e8915ac328c3d4c09cffada20d71260a610050a9c7b2f8882097858c144813aef0a231c375bc4cea9a373e80a7a13da408fa3f748780b8648c07b79e4062b353c18b94746ae9bc36e32e97d8a688c7ec72935bc6e271c3fb8d40961aed3e93f3b7812a6ee357d0e743b9a359aee0d3cfa362d43260deb92d7dff6a53c75c3026ff0a41ea2f09e290c9a834cadfad6a0a89617c40990f4de78e8833d15019c532170f7fa6d3ea73e2e267f9bd28f0b289644c1c77f10f8c03cf57109af83793581ae21943ec0955dc8dfdcd0f7a234e26892759bfcc57dd7dd4a95fdd0479e2de97cf3acbf7c3e7df277a8b2c7d5642ebfec540ae7ca7bd760d3a842cac76a2d5f802796de675657ad822d5d35a24e28b15839e5ec5d95f3ded89140e628d7cb3b84a55b3833ab7b620f2cc268648655ced6ee377be1b37ead664ef44029fac850d4b7153ce9bf43e0c1bfa3ba727638c7137edf147b451fe55c9242cd56f080239b1f123afa58d8ed07f298a46fb57f95634a5f98570a9618376840486304d68b8147b260e5dc43ae60ab230095a3ecae85fb1d45d394b8f4758df374ffbfee712c08577a10d3c5327339d36a71bc1110dd4c5159ff50e6d1f0fd2d77a1cbf958458665a9d41ba7a1b9b4520b7d2c17a0ba16785a0efb643a0970a468228c01b594a93905e11a2825176ab6565c5aa9c2df9a77974a2a402ca30210d0748c15aca9980006c5b1ac23e9f4112b91550013a2e858c1d8d08000cbc4402bcdbece3431f4b159cbcdda76368e2936269398328a2d8d5a7a2c8601c0aa5a54a3c92933168bc5cca924d5a855b5308ec7748b6a16cf0e909c3431c1f1ac6dcfe672131339bebcecf66017dae85ef4c5b01716a02184378d35d1fed370069632ecb42f05f27b2294d988d63b13500b6536193594d9c8a76e56ad95aaf25c5caa344357c905a8d6ea33b5e0b3f26e6d3fb9901bca85b2c13766227221f8555088569d2536a61840d10865c28485e9985200e1cdca922c36a6eb310a007c5921fc3e066a6a401da7ce186e7d68e282aee3fe8358d7cf4f4c06321f503529f45130c64093b1d8b4654d4ba10f604c1908b10fe35fb675a0937916d752390bab8001ab7c98a9a9aa094dc89b40b17496d40d4b35b23aa19acad20651b0eeea22769662604507ac6030522a8782846e389695bc1c9fc838d9ac93998cc5522610d0dd041095428ce19866e818203e65d251b9ce740c00ebc63e729d3d3e8177ff237c025f280ed64b75137c5d5bcc7421c50d522fc763705b12a8c243c92f6c24d656139dff47b47b24d0c24b6da5ef1f875e6eeb228e63039b5c8250730ad2e82fd77fffebebdfc343e35c46cbe82e8494972e8d7bc121fec1fb92693bd92c57e6a2ebe7f4c9dc7b7d79dc37a489d5f5332de1f926c912e108675856f97d63abd37395723369470b49dbef9572b837c857d7af6f49da66b884a136c691c7b9f7f23f5afe9817daa9ae6159bff7a2db160e49ff072fb645519ee438bac7d71244c82049c18714d2a05d9200e5973e3155a90e946ea13e81372e20a14ab06d58a587cf48e0e4f59440b97465624acc0f59f97d6f465ee354607df13609b1fca984cda325b946b74dab6719b2bd7325d923a290c6d20909d9528f4d227e5177a03707b1745e8457145f9b5f76040b49c28a804d9c88ba76d5279c86ee745ee25c961ce7d58059be7acd6749aff9fc3db9c619ef9731c98778d637a24738642f4055d8c756662c18896259e5f7d4cc946fe222799502b88cdfcb2e9f819148952ebfc7cb92c62f321ccad034d85ec51a9dd7b459e668f35a5217049b9ed2e698c34a8ccd298cacf2c1dd93cd3387b269e4a4e07ae67c1ff09e6e6bc798a3cd32768c6a788d3f5cc31a3dca588965d89c96d205dfa225b579cd61659e8d91353efdd70853e64436ed6890ad1b5892725c58d8fddfe0cfe03d288510a8c20187b9ace9ae08df9b261cb7c0faf8dc79ebbdeffde47bedd4c403130d0bde63d7271e9848d9effbe4fbde679f9ffb5802db018c4ada7e42f09d48595aae9113e08772a991a11846553f761dfc3dec90186331b203184ba90afe6ebd5eaf57a1cbb9e57e9ba884b798a8763dd71b5e8ba78476e130f00e3e73d08a33ce3f75c892d2f6f2dbd2d74dc65031500695504d7284be0029941e15ddc0a955c24569e8529a226064997d3f46471f7de6598531451cda1e6faea7681ab42cd3f34cabbf25a8f06e10636838d6906f9789ee975198f611be70b2303a9f431e520aeff70b2bb837fc8d541e9f79388a9da627aed4f6ce6e9e612f16180a816399d0bd6db11e16645aa5a3d1292ca73607dcbd43d11a8985f3d4102f5d16b2f197b176bdf8d5f845afbc68541ef962a20c2aa564c40e64e0285d821f8692d0fe5f0b2ac80a25a184d2fef7b60498dc0a0f9fedf88faff2110950754770ad7f049b72e5916210d3e2b01dc4962da325749b90f5ee6f0c511bb6106a364a8ec71caf516a9212f19a9eeb11d6f4dc9eaa9322ff4a910c8410528060197ffed4f50736dffc406db9bd947b38b7bcf1ca2370344f69f1295e9da78a4419c81a5a82dfce4c151f9d2a3e0a6fed6fdf7927e47ff98927441cab80efaea0ff0e7d0e7d45d4391a0b77343449608be9ee17a1341ac8d8f7a11ba8d507318cf7462c0d6d9a47f3ee0942341a85b6ea254b9150ca25c7db0e440dfb8921be8b154a0da6da068b2baa4e2913716c44f022553115662a54178c1c01ac10a2298a46088522108c554a75aa988a61ab7e08638ca10cc28b81a894a844385a48653e014c09960a738a41940993f3d34029d114ce9ec5d45531621c8c9eda47daa26a09a61a9452c24b570c458d31c554149d7f9af08f6b0af0b24433082184329e4de8fb390b285a6a699acdff6ca260e1118239f348148299d0e42b1853f00d194215ff7b20cf4caa30de7480d95017df41169a42e7d0554e3b8d0a3cab23d7cabed03f229e1b9590b2916bd8de1e361ce387fe570f3320026f9f5790084e2d0e9d41b23dd2ff433306dafbbe23e56f7cbdff73780f4aefbbde57070bfeca3d62c19facdbffeb60c5bfa719acf8bf16c6bb6ba33c5a08a30bb21aab6502564f86ee6b944f83571498adba0012bd35c532d8d5e2a40596011b5a1cc32580fe651c170668cfcf535de998d6e52dd332580f5362583aeb610597985e37ac631c97f49ffb3a42917ae82887901b88d88ae592ff397f9946c1a20bdb3f38467475532ec67919b7a3258a6ce5431e298893771cbd0a218894b5008dc39536250b06daea6232a00e247280fc51ffe3b06018b7a4dee3663480ac659e990d220df4bf212badc659ba6882272b69e4ad3c87a2307e51a0be79ae6cc48e4fdb1346568623f90026690b45e307489b94d3a31673ec90e022ae9c033e9be44f00f0fa3b623112e07540fad725420811441882b31386124141ea4981e73607880f0dd53b8166d132e75647a2a2ec89a82806403924b64b2f5acd8d61d4c519b603da02610497e159bb690ec2d274a2f169a2f1110ae83674757fbd707660549df46ff9349bbc2da919e7e047812a2a2ef8c68bbc0a37eee4e9cb172e3c3825ace166667efcf2e5ebe2f9c222e74b0dd31a1bbb7ae2c4997ca0561241d72f36780b2fdee06d35ad42e1c10b175ec3efdc73f9f2bb664a224bc0955ac6fa891357c672517adc4665b48250ba142160927c34f603a0ea68ae4e3b240be18911c0f9379167dda80ee7fba350f337d1a708a38bbb5df80551b7ca40cf1f7e93ed0b3df0deb661db86f8dc2d39ce8151a6d44e0ebed0dd030c22f6f2384680d18c8c8b50aa32773800067307d11f4af015b7a4acb6d3579e564a2e1f4bb7a43c7d25dd5ef52f7fb790dd485fcd16f8484d66af6436b2937cc0866c0ff2a882eae82cba2cecd943eb9c912855e44083836113b452d41b2408a7f1f3d1191118f7c04f4766c8ec0ebf2b0efd8e1f2d66e0239c0ba64f7f273049c807b742878edc20bcc8909fce451187e305046b2525bc7646c2fd34bc0176160b90d4fe8f50dca109006c7bc362336955d11576d242db2278b5785d72659b2a833c67d77ae1d20d52c7d91a96dd4969dca379a1bbd90a2cafb7448979cedb552da317445c9286383b61bce26d7fad3de943d5104485d0f482d2c747dd92f26b0348e3498e011edda7c5edc9ac84b5425682dfb302ee3d11a62b4c0ddb8a14510b21d8fbdd6127c69aef852a39b135384c9759022f11f31231dd96d66bb61e4b78b1c4d6b1e9e2b1e2b163459cae3a12ad65321738132fd24c8d836726ea662261d613a6782511f36ca3357decd8f4f1e9e231cab0ca38dfbf588ff2ab4e2589108be0ee0be82e741f7a07fa97e85f0d6370a83612c01cd65880aa536dc8fe6fb8a7a1590de317477cc178c227031c321c286790ae550b30053eb6775cbe32878a36e95efd929caf17212aa16afbc12ae1b18e1a57bb2ca60a10bb9b28f806105019255d4eff63fcbffcbcb856e36cdbd7c1bf522e6cd63365aa121184394f7ff4a57857dfff4edfbd7a20f8fdfdf537600ad75ef945d5547f77fd13fcfeaf1c53636a1d4053fa6daa420be0ce3b81296fc5e42eb83fd06be68212c6d27a5227f3025e73bf4ad58f504dc18aa628baa8c561eed4f7b903295874ad3e8e4ea27bd0e3082981b064a539823ba4aff140b22096ee4021cf1f2b9c21946cdebe5299c63e31ad06cc0520294e992b49f4b821c521b705e214cb9c3a39569ebe34c747d264ec28c6a3597d5dff1e1b005f743a24ae36add24367a4b445a88a375376d915d1f86e3973e9a38663d4ae4c4c87a5f3eceb5bbcd8a7574984f57b5644638fc6b7cda031112974d42d044a0d4f2936c4ff21ef1cb3dfeb7420bf8b00f5dbd0858e65f637c4d34dd3eab7777676721b43b4f9385ae2d8267d505c6d8e4266544632c14c49cb99e3ee2f35976449776fbcedab5729ddd4e378032cd33ffd66f4593498a9b0f69014413b22cf7ed8d0fa9b40b161191a6c60820deb4bed510978dbdf3162181e6b6805ad2204b5aa23a5160d160990ee3a6e2d907044c3af5793aecb92cda45b4dba49f86f9b8451cac8873f049851d362cae88dfed31b1b9bed767763031637001382e1be376022563d93409bb3ed6f7803c69c5953cdfe17cec1d173ff073ff4bf754e9ed01efdd91b5e96442e5d8aa8640e5dc94bf083176dda7e7dcb7773128b6d4bacc0becb53f9c55ab643de5ff8639b81b3d466cc17da4abde22704ec5f4068c8d430109badd47d9d839b5d6ed69a2bcbaef0afac542b750e7df2ca7fe8ef3cf207d9c6c444c3f94b8bffab643215fb7ba954aa9efaaaaaaa49f5ab6a4a51d5efa51ac954ea2f0b774f160a7faeaaaaad7e37eb380e5ccb3a4ef6afac6a265315af7f3f554fa552cfa94955559e531535a5fe551a92a946eaaf0a5028fc486147b55555d971562626579ca8cc9ba2349a44d308358b8da2532e46a9a56aba982c3afcbf576db82d68f7bb90934e737c527737fa6d39a53b1b1bed7c7e87cf726148dcedf700b5f2b9dcc64634e68be44f5f85de02af84d7401ba1b454dff85a99d5a178a4ee90993d1b0d5e52f2c90f3fb649f3c5a8c1fcf0742761bfd02a27c0ab2fd7eacbb5261f4ad58252636939b22b91503a2e556a73e00fe419585aa97999ca24082d804ffd4c40cd5fbd3961e036c34f796e76e50c784bd99ab334530b207f69a5e624601e4e404dc0cf09f17aa8af0a755467381d20045a9e7c1488fd9b910955af5483ee53dd0889f61b18a7b082c5f18a06848086311ee7880013f229a669cc30986a02d329d39aeebb0fd7fa510a1a5f83c7b18a31ce0355a4c109341585c6152383b34451c8f8f8d972f9ecf811000c298c31c509d03053e3427aa929aaaa600238a9c6058d616a44892b2441709c5005c73155d5a2a5c4154b574d539dd6635453738c4d61c08471ec6b122c5514bfc83f8715e5670d35cd344c29a134c97498c30a4e622c8ee0bb364d626c727c6762fc569dad31fdb4aaeb6a993153571d68fe3f2fa49a4c8cc76d95e50901154f0050aa0829ea091a5728d098cd570a9acde5b20029ac00c6165000a2305d5109c14ca10aa560c785343646155008d628210aa88a6e298a65a8d34ca7a67e92e93a3b51e0744d51d1086346c657267f94900ca6146708f9aeaa690c006caa2854d1046d2bd7e82472500e15d00caaa0f97d566ae193d20836990ad66cfedfe10bb78cae2cf621ea75c43f39d3831f746ca3bf213c4b360dbbdf6ee55bb956ab274f515a21a8c73e3520077f34c78984e0b7ffb7045f22bf318b7e04a1e6213686a144cf77c0f57d153811ee39a502b89e5312bb6e31a7d4588070d30c59cf0ffa9b1b05a202b1c151f1295edba78a701faf5afe58d19ad44926dffb9ca2e14f7c2effdbbd7cc74ce479956309db382fb64b22b42537276a5122b6512a2662b14411566d6373fa78cc2499fc424b8db156be75477ec1d10bc976d0ea213e6c02dd76b866b4943c44f35f02b497a592e9a8022c9a963ad4615eaabe38acb10ff56b81c69ed7f769f83be8a205b1b3a11f7ca35a2b3337700e9182d46695a50be0d6dce570fc6aeef0ce3cc11650cf01d43153fb9fb33e2362f2151ca740e867e28f6343ddc214ab1a6d539a5735bae16f55b541a8ad5fc5146fa9067e22fecfa91ffc528b29ffdcea7f4ed5b04728dd2026c971ea4e530d5b5279b14494e6e170bcb23f14278b8a7718439cc97afb41f7569b8f7e9bdf1ea4a09b88f53de1f2d58b25fa1e6c6e0739ccc40667783738c3cbe93116b175622826e67a95cff572c9f19c92e3254b8ed718f5e1921526fc9157723cd86a897fde9efaed5cbab4d16a755bf916e45bad3dd5eaf75afe1c9475984277bd901f41a9e6cc54aa43ce5e7cf00f110f24a004db1ddeeab3c12e6f376d9d57315d8c958c49ab782c66ce5a2982354bdb0bd4809598ca7b54eeb566268434ddb68d4e2cb193b24a31f3d8b43da9cfc68a69d55431ec057266332c77c95590820116511c9d41978663aa946a6ed43876b037a29a09d582437ec2b54675d8b8049ca9290194bb04c726ade9571d7117ddecd174a13946354551e213f2de9823efe962338cdd602380304add32a60ab12662e373ba020ab58de47c4e3114d556edf1f8d04d5dc52a21b021b8f679112864c07ba591c747b3791a564560b9d240b5a384c3d72ced5508cd545e40797219c7b5df4a58a9b3810a085e2fd521a6fe7343fa222f3d5ddf577df2074c4f98c574a0237ab5508a24c68d8122e96752dfdc577f12dab1087df8183ac5570d90b1acfc1a2e4414e2414c55a9f4f56f46426009596a240eebc0265ac20554ec09adb2486dc34c90db4f502195ebe62b14679b53b3eb396a0a4c53bcb23477a9404d325e2e8ff7bf339631968b8a9188118d2ebc424f2445acb57cc2745b0b7ac236f0fa83e3ce8490d795c7595c4ba6275dc26c43d5e874793287813faa3a336a7935494dcdb02976ef6e18e3495ebcdced59ea5c52a88cea110f05de2e391f395b2d051c613bc34dc024e7f227f64c7afdfaf5f5f48c3d5e98ce3de99ffdbb6d7762c2e53f281adaf533ebd7352377e1e8910bb994668c9f3b72f442ced0aeaf9fb95e714fce946e739c357e8cd86e76a42d2a27a583b8cc0745148e06486d2efba94633227ecf57a096981bb32763af0210aa94bc66b1db1535e724c666f80dd3486082e7d6c0d333267f0e5e791c3064538eaebd826a54aa60285d37c662e30bf1793c9be39d9918d3e7616d9e6ad45535deebc37652e3680a2dfb72edf941c403af210266389ecff0a64b0d1116c719ecd205db6d61ecd136ad76fd56bd6d7daadb6d8984e0bada9017c14b2e5966279fcfe73ba6e5eda25c2e27a397e4223859c4128725b52af7482a2d65992a31edd28a2b6dd2bda54a53eecfda50222809a3379e228671bc523eb9a64ccccebe229b7de31a1dbeb11b847c02744ade721f1079ca9593a794f1b2782928a51be805243fb8e3f39e1a8a85d2a469845c2f594aae42b2443cf903ffec25bd243f773def523ebfe9792dcf83aee76de4f35bf96e3e9f13bce9813f44c51e949b22ce491e1de5fde206ac55c9212e5f28974a73509a29cd41cd0d425148278de6c01aec578560ad7be952b775f4e88d5acd2624d40b6eee22e19064b6642413e8b47bbd76c7f73bb24c6f475a7ea13d715039accc8b58a86704460a611d22ab4cd94b968aa5e490a2c72d368a30a4f86914a11704fa7f77303e0f7b5ebfeb49bf70a750382148f840f7d3ff4571e9056a9a7eb89ae4c5834e30722daf1f86f76f79821ef571c91bd0dbc44e105296cd27e352a5b100d5997a6d01aad2b7e104d484b96075a92277932a2d40a932530a02af79cb2b83bfd3d0ac2fd7f871491ef7414a50113b310bd3168500d12898e3363f090b7fecc791a03ae54889eae242ba2130829d525c6114d6d3252b3f3595b74a1c75ddc3121a68b6aed91a00b318b0b80a0957c332a886f8c7115a1095421b4f821a67007fa86bf90b478e5ec86b3ac76cc33ed4c517b0626c969aec601bc69ff4da3daf7d985dfcd6f656049ed2426efa007a2ffa18fa1cfaaaf0973d052306d1ee2152d54673c4ca7828b00e29ed917a979a07b15d1c3fa7475555f50a39503cce0b8baab77caa216f581b03c740410d789c17f37c396db148a9a718a418585779d228cde3a483b7117142bdb5ffcbd2ef5066fcf241056d456bb1edbb6408efd59c6151e249c1b0e7dbe7158b44573d4a6602232ace65884ca6d5efb523aeae9bfedbaa12be4d8a45aaab722b9676e022bb49c94c102e28284c15d1acdaa13770b0774e6f68bf991f41283d1c960a0eb1a118361779219d63293fb069024fcaffe4a64007a49fda4ffd3a30c0186ca613062c0937a2e9f96f0d7b3d483b80cf43d78f6f179abfd6964283ff6494dceedf796362e2ecc484383c78d1d7664f43f7cdb7974e9ebc79e4c89123374f9e2cddfee65d1451598772fb0e3291835e25640e2194b22a0b93032e2890ea0fc7b3f085fa23564581203c2948ce2db1d0781bf2dc856d0106477ffe9ab085c35d55b34ca2907f720f5189a2d3a7fd280f2d915d896bb35647fafa799e3cb740c47df9b97981c85a24ce4c0bc3edc70153f2cc515f63d4bdb42354db8c502f12eb46aed393029371c6913397a494f4f630c39cb5842dfeafb7b90928aaff113c25b4baddad6761a3bf09cf0e79eb7ab0199149cb986bcbd28e29eabfcf8a8da2bf1a07bb96b2e1cb12b422b036bb8b006df57b7c5dce99967577ff164f0aabb02dcb083c5b36db3dcbcc758589472b4c053eadc1fe7d08e250c5a88f30ea406b6b6bcb7fbe1d3c3f0e2ee3cf3b9deed6d6b3e1fe83d286e3e8f0ca5e0dc65e3218a108d7b72343d71e7ffcdab5c71f17c7c947ce9e7d647290022409d97cc5fd194e89fe4c767c3cbb3548fafbf86f89b173395d9556f7597f9aa5463359948bd0f67cb9d2b4ad9450911c3b523d9dce28bb7940620982f7d24ce654f5c8b125a187b1ed66b932df9fd84572051ade2f641ca1f2fe5ecde2db18ed952acb7477efda26d6bcc85a6a8b781efb02ddf65e58ebee81b0e8ba7c1abd527af396a4336fe0c2bb2fe7ea0e870d083c7ce5976f097daa29c3313f7675bf2818571ff303365feadf827ae0b16b58fd6dc30a5d64049f7a367494b10c10110bfb3d40618c5124e8c5418cd146bd120dddf9a80cdb7df67bfe195010c93bf80df5412e2ad15af55b790ac2c884915846ab619fc8b8db25d89681489eba5f2c69d27ea8e714da7e472806b9ff29c35af840b001f5fd840aa6059069f5b70ace96dc184f6cff7dbf65d2c5611c9b4315b48c4e47eb17a981343d8b22752f72e10d45fe9690714954e9f1e7a5f54d10c4bf3bb26581d04bf7c4424fc91332cccaf641db050ce94467d1ba8805567de19014d597edb3f5f176b06995d82efdabc1f6566d4ed07cfc25fa6a7d36d0518b1de55787f5d4df7f592e5afbf447e9b0cdb1fd79f4f27dd8867b60b8775eaaefda56b0b7d7888a7f95cfd49d7f6c7f8ca326ef8f97eb634bf6ec55bf0f6e7ac9aeb763870460da7839beb870bfb4adf0b7449350ea6f8c4636f6838f17638f4f5e2e7cb4f7342ad2e0f64becacee9e585311431240ff489fc671c1fb1f166b6ba6b218462b8e08d1fd58f782393e10006a8774c4619bb8ee1dc3c1f80edb0656d04521b52b0def40becaeb17c4045bceba6240c98b72c218dab33c634e2639999e9c34bc3b2e3e78981712787267730cdacaecfc5a2c21f67ff31226bed36b5cecef1ce65e311a1beb6210c9e405665e734fc3bdc8d8d40ae048c3fa54a49e7bda7033dae0b8d132266c7bc26819b163ab173f3e88234b49e850e5c7987d7aa8c1fc1d3316335b46ded22f2c8cecebfe2adf8233625d71b002a614f1aa1e0d51c39f417baf5f7414f6065ed4d13955bb32312d8353f96f874ed45110e44ddc1b83e668c932f7ec4f175d731b07492ec4c81dbe1a3907c1a280576fcf3a0e3f0c43d03cb51f24f211decf89eac5e7ff6c18a7e6a97d220a53917dafb3916284e50c413715c50c39a089beecee6e431b5a6802a191c889c31df4ad20c4579797d90dc28d7583705e9bb20e9bfe973f385276f930d33cb83f2c6fe82b9f0d4a7bf28383af889a036a210fb60045ca8e0e7664fb94cf76652f777df1c9934ffae693f7fb2df1c3913d1904111c2a7bdffdd04334d58d9617fd0e20bf2d7cfc36f9a86dca20512374d235f41684600f748dd82fb00673a3e1ce88e3ebe4f8644ed7f60f9ea40c0469cd5ab3cae0c79afb83e35955a7178b3f155c36ff8e1aaad032acff90eaea4850a5fee7d60545ad1af462f14ec817876d515b01082a0adc537d5300d830078a22989e3fa0ea28f48b1d22547afdc8eba3f69105740add837e62487a1572ca43bbc31e1ea0ee509d2419598446648f770f47cff341f45dfb07b7cbed17096fbfc87c960903f16118e4cf204fee1f074feea0bd376aded69ef880be1070b0868d0dc5f74b462c2e05efbc5f2cae11ff65d816cc6dc413b91d09e0b88fdbb28cf1d7df9015e2dcf72e52c4937d3d97876d19c6fc080347d0f1507f560a59c086e7f86cbfe29b2ea523673fa0ee76271038b6db6295e9ffd2c686b0801536b01b1b803a819bf4e6a664f2ba1b5e7b176d78ed7ea7d512a1712373d4426911b77c9fe8ffcd1715d1bf331cb1df1b8a8cdb05af6b995eaedff3e43b2374e1d117a00bfd7dae8a92dd3d8802bcf8e2a2ec6c0fa284d2d01ec044c744f4c5e13d8003ab006b2023f037bf1d8c503aca89235fd2fa9bf7ce535de92a06991751006f8cbd6276f6156337f8483de6795db91bf1c55eb0e96ffb18473bc7a4bc606c7c7c8c37c3b0dade2e0ab62ef66550be3eaae4e3ec35a80d80478cda52bde186be60b0ad7068f4b781804b01545a90a7f46ab939d8bb7fa522c0bb178e8dec174b78da8e4005345c36bc31c557bb5d680f0d79afd7de40b1b01cd78f7651155a400f358526f0ac90b6865ba608e00f2cc023b67bc10f229361e8fe76e796549c8813efe1e01fa05bb73622976db1c9caa661b55a7e453bf59c9717ff77d1e62e0aaf901f335bc616d05012e5d1acd8d3e30ef42362e7151f1b7b24b0d70def348344237ce68c06991c3c19f5c52eb9233744c4564faa127638e2a96f45d23b417448eb94c8d7bf259d9bf8dd67c30d43a444ae23b7d1e8ca38bb3d81415a2d29436cb5c4d61922695a72287b3d3e93c556162dc3ba34782cf71dda860eb4d0980f8b61adddc240c0c6f9d3f322f6f263e7031fd516a5e785fcf9bcf41bf761cedbdd861eb4504260225f17ea06f2a4833ef00b4733ae9b399a9b98c8bd570dbf7581f8ee8e8d427ebd34bb9e2f4cbfe6d8b1cbd363fb7d3ab46978088da12a6a08e9e3fe9f6b0e57cb82e8e5f6505bf9f7cddf3f3a31353571b4383b5bbcfba893cd3a47739393f0ca3db5383275e48df5c61b8f4c2dbeedf4a9b72dae476a3dff9a082f30e7474b516a097092433e74c9b2337ccda73f10dcef69662c9f985b5b9bab9c6018502c97985f5b9b2f9f60d882ae5495e8fd3fa68a74d10465fdd7142afde67c5c0da8bdbb0d5d68a119fffb6c24d2c729f0553efef24035f2a94144d24f118dca912704dedd968254b17afd0421fe3000caef6ec336b4842def8ccaaabef7116b84b639fe374e41c455a4043d8511f8a465528df41445517ae26b9f04c214e9c5e87f9410e852436506dde45f8d7c1ba3d6ee366c410bd942bf36ea67eb8dded80ae68165ee04b3837f29685710c73a488b3e1c7c631fafa26eff9628a2beb7a068ff8ff956a6e55ae84223346ee5da69802e53771151455753950052599799a40b441647a04b62416cd8b0afa5d5aae3fb3857d950c15e33d4e9d54e4303b6f774ef50e77755837641f4eebbc5497c96fc84e8fd4d6ab0515892df74861bd38cd26fd089005004ac781fedf948084b415f9b080d6d06ba75e3ce3b6ff05ff7e28d1b17efbc71234287cc081feb901063433bd0cccbcde146b5311f8b17429ac32cc43f36ac9bd932065b51b4c2dd8b7288085b9daeb06528a225849a7e83a37b6abb87ecb9517a4657ff19d359e3fafafaf506fb95aec0ea8665cd0e3ccdcf325d67e757d6d7efbd777d7de5fcd1c0fdb035a07f783fc9fdccf20841a32836ef1ef558e2c3bed5efbefe159742eaf8d22b5e0fa8db3df766fd2783c27e527ff33931b63dd814f69528bd14096b579594dcdfbb6327c6dc7b4f9dba0fc672ab6339681726af1e3b3679faeed79f9e3c7eeccae46424fe73061d412be81cba4becb3fd3ef44fd033411cf711e6d1ddb31f42265b1d76ae89383f2eaf0c870c8c06b22f39d1ed7e4718627f218a6ee053ddc786fb7d8165856400a8f75f02fb0afffc66df29f531cb94766ea605ed2065fd751037cd57c3bc3562a8c1cfcffa6f9b6f1b29f6ff1a9861082e64590b0c2882f3fc602df7992f6b3660e05a819d6c68c776940c95479283e57f2eb0f3a0a4ee4b4a077b3bc9e8693512044e8bd80578038945b9e996e077b6485cd3e2640bc032b53839f3853324ae991640ffafeeb8e3a3e7a0c70c83f53ddfeef5939f64ba65108abffec52f221fa7ca7d9da6fd688ac5c15e6fd16d747d1c1bb5bd08ec31a013307ed25b53a64168c789981fbc4d0994119686433b2d54d362ab05361aacc9690eb6caafb22a48fb043efbbb1bfded6ee7f723a201d5a06d8ec35483c0d5dba29b3474fb1e6c761e1978a9aa143a4034c5b014051eba6d887f23685c468870bca6605a9ce2e84684a4e8f35093c0c9e09f6d515dc9efa27640c5d357f5bb7201824ee77c8bd26707060c1d55efbf430655962c48d02f06c71ce964c878974b4e95354ac9605d6b59469d97d8f63c6f436249e8f04245e89a9ee7f5fac80f7611d9d3ef3e7442ac4bf350e56c60251ae62a98b4e166bcf54ab529e35935ea4bb5a57a0da3acfd8d646a9c90aa6abf666af1d5d3b3850b57727656a1a6ada9ba1937d21fd66d85285fb1b3601fcdcf58f1999376e6c89585b5a415736d2dae1027aedb8a9236e3690534464d1580d76f757753b4fb848c6210dd4db82a2de44b27f85f6d469dc41ce3a9d1805bd27ce3d32cae5027ae5baa928ac5325494cfc076edb9dc8c159b59b533d5abc74f25137137f90d85c62cc6eb6c663ea4db0a555cfb1bc9f438a64754fb358525d9b6bc954520e6df737edd2231c27c74d58cee6decfa96de27f85f6d79e514e65cf74a159e1bfafae115fdc5410544e7ca8a260c59519a0d2b3a32ae61b788356d29533b110ead1bdd8c3911180c05dea43f35f51a5bad12329e4a7ec3ce2a44b1f50f67ccb8a9abcc8a298a6be5efba7db23cf5eac5bfb14fcec4ad99fc511bb236806a52a601cdc4622945b1f5b84395384bbaf144f2d4c2956a0645fcac0c742f42cd52686ba348434e61b0e9bb3fd44e406d8edf9591acabb2395995390511c0e024783551673f7cb64ccc546ab29096dc5003b6f078926a14634866311e4f6a29438da9b10953a7a0e900b9b49da18907bc23efb9a8180a00283135390d609b2ca6a6b218e793002cae26b378ab276c7c2e27d21800a712e22cfe192c5b1bcb9630a4adc5f6f473f99cdcf0cc8a5944e4b4523c672681a27df05aa9b5ac9496963d31fdaa324cf88a00efda9c346a15ed656ab629b354569ad2b0f504dc06d20744bc28bb8ea7cb835e853f1236a5c971c0d9a41a67311ba6936a4cb4d2a097de73c47b204ed376660c40d780eab109538da9465a4b8e6370921803d548721ce36cb2ff63b23fff0648ca4af0e6102b66c92de372f9e7a6db4bff2f6fef02e5c8759e07debfeebd75eb0514d040a11ae86e74a3d100a69fd3e86a3466a67b669a33437238d3e04324a56193a2244a0444891a917ad092234a907d12bdaca7e5551a564ea444966c1dc5bb4e3389bcb11d5b4792bdd6b436bbc796f6c43cd259c7e9c9391beb44f13ab69c18b3e7de5b55283cba67a8f5ee900dd41bf7deba8ffff97df1b4a21433e3d58c6afa1992fe85fc3b0d8f1fc850281ac93d2ba0325a40a7112a5545ae7a615665324320329f562a9e5bac153da7588761924cf8db1dc016ebde6016861d08a041e1df3fe7fdd32f3df74f3d780d9712fde9577cfc973da6696c0fab38e0bfc12a7e57b3d96c765b804254fc7ebc0759d62bafa4a4b7f30125efa4e8fba3dccd542767f68fafc60b231ccb846cbe700ba13ebb53156d08be7ca9831465f90abc8a3d8f40a8ebd6bc3082bcc08a1538f851f23fe831053ce06245f74b2628315dc857671e9d9752d54d1918fe9b7062f6cf663dcfd03a0ac6863dcb0c19a1190d82396836c3b51604a6c1166f71585daf56aa7e9b9f865350657e39863fab95523f961114a20911f01d2026ebee6916de00ae7947ff36ba3f07222ad7b7ae35ba079eb45d7970161495e9ec451f432bfc7b3194f6bb1dc996b51fd80f9b70880e51258ac2330a8ca787c9035f768b6483ccb96e91d67ac83b7cd39d231b4400f01c4e65325351bc9d0073277ca76db42c723a87b04437a1e6eb6743a0a21516c5abf949d85dba3fdededddd6eb7b9c00a765f977a6f901130167649ae23ad73917aa0cffe308c720aec3f4d11b3f1dafe9c9668764bbfce9ef783157c7230df192ef8da68247ca1d2a30e93d62281cfd432ec75f1e94510447e321c8340f0a330db1a049996701d3969e90bc08c7a2683ee5f8f0ef47974ec48d40e05356fed4307da681cad21e4636f55bc4ad0477c563a1f79cb2dba812c110ccfb6800fc15c4835542ecfb601131b4468dcd06173df36898e3b8452d2c13a316d8fabf7a40394520a1dc2157e392770ddf4103c348eaac232c77ac95a113b1015668ce280f5a27a0e0ea886618fffce9e949e6db07bdb867f163c2c3c3eaa41dac22e840c7b4f387bb03491f3d3061ac49b3d2538b06e8f37bb512e9e871070d665026eb6c2ea55f740626a8e0af400db7cc797bef7b92f1d7e65e6ee13f6a5f8c2a59571f758b4d94ffd6179f1f74f2cbc76ffc489fdeb172ea0106b5696f714fa24fa37479577106ab61e0177e5858e034bdd21faac178586f5d16787aff269635f39faecb150b35f53544c18213a59989d00ac3c8419a5315d7763e698aec555aa63f14f53698c6909434b3226a8420008e6d7c6752dc6bbe002c158a7aaa5329bc55d5db75555c38a021896157125e1dd991081d62a915c3166441e1518ae0a28cab1af6b965045c10030f1ae7daa63603157376c95aa04f3c7d89a3e6618294d8fabaa4e302684581ab335cd66cca2945051315be53b0c6345656ac23432316b3c664fc4260462ad00acc52a213aa526550d1a1ec58a3c6aa8d4ec9329d2681e6da3c77d1eba01b38ae7f6a5abfbc7dd086750cf6656acd42b1145d88d42fcb723747ae2bb2326a8f0102637b282af5184dd4af0bec34e218815d92b049c50fb85c380ad2ef8de939b7238f143c2d81128fe7b9da0db14f60a01a3fb7e010de0efb7feffc3df87c31962b27109a93f6e4dc4a5cb6622969190faae669219de004397f1b563c272072e3bac5dbd5a3b88e762e312757f9c85f75b2c2351f75d6b322e2ca9f19c352e51f7c799890bbc8d7a976999e0b2fdc00789c37c804be805f431844aa7806bdd22fbad760aaa324fdc1fcd6c38355ca6c9c96bc527ff3fda4fb842353b22c59cb9a125c985aa6f7559cd382c585f5da620ac98e3b137299bf37a523b6da44df7a42b32ca5daa735dcba2cc360953e0da5825ed9e743327d2f98d71a2134aad499b1af45e08ae801b3fa086eae46105e3ad85f46c6ce5970130c5b171f3d28953189709532850629b099182ae50318bfc3c3198696305368d04a58424c4699d325b4d4cc4082327019bf20a587f8d82f30e409e25b585adb895ef93815382adb690ec59b4fc619564159f95800b9d4e210987dd4694d5f15f5c17f8d4f8d5b087a0d1931d4d1b5ef32faef1d9eff23f84b3a80fdb60296a29af8df4c6573c99655b11544c1d2e57ed6e0f3be39f79334da5cf564e2cafdead7524fa7c6bd81b9f5da99c389b4a939676cf6abf6f5bc43a95678b0bd01fa015c651fdc521a1845072a832a646b77fa3ad286d6231cdc26d3e23b7b1a5318b4474bb37a367d173e85d22a62e84e41a04b418de08f2c2863742a0afa18df0f183711c2032c9bc5ea65733643bf322678e397f0b89400fc1922c29d3c27cb1be7b8353cd1ee465bfc468dacd66d36bdd424dafd537ffd5d0c35243a844d01a9dd0d2e93ae1500cf5844addcfa4970a45a52699c502297152e6b3c30135c817219f71f2f0ac185f71cb8ae79df8b8fa0dd5b59d3c21af4ee7f3ce07e3aefa0dacab66fcad7cddd2e917087ef45081f72904b876010a34149ccfc45df67bcc8d3bf9b869c6f30e8ba97b5ca43f8c5baa81f919455ca8282f2a58e167a3b1696dc109bd8950bd5648a6d545a871fdb2b4961186e48d4d10103a3492281d11ebe5f7262005d9e6212c4feff317db45b6b9470dbcf497dd0323114569b82e639a3a4d2e4db66696f76d33bbc34f2cdd0c684eaffb62faf501aea7367a8b781bc5c0de29b0387bae22365beea971c53e288133104209ccf6e0057a0f11ef2fbc28001538c0142fc51289d812a6582a49bab68c29768bf4cdb4e8628a97355dea4fafe05204d7f4c9647252bf06f28095d276c526ec6a294bde3d788d99668f03572de1719636c3bc14b52fbfbc2872cb2ff7239c46b5c73ef0e023aee973040dd216077ff0f7fd8d3f1d3c19c20087e9e510fa52c273add0aa10c9b1a1befed91138ff27d17981f31f01ede4d2853bb09f1adc1f881ab9a3bc033f4e4c7cec871fa177fbc77788fd7f601b397e654e8088079b807adbdd031faa3e67da5982673fc5b73f1524fb4620aad1407bac1fc97bf0d3f01c0c31c10ef21e344277fe97ee90ece0f9b0054f842d98bbc3ca42ab77e12dd4db6ef736e5dad8463968434eacd29100efdbf267c1dc48d2ab81239d4706e14047d05ac93810e4410772b78f19e6f2fd178374a306d6556ae07dd1723942beb8196d8afd485e42a05bc7d0aa58a1232edcba13d85bb86a588b40d886604ad2c164daf6b5e5d3cf5cb9f2cce9e58baf96099f021f73ecd5173b3d6ed0dfa93bafdeb8f2cc3357365eedd4dd17aeca4be4e5575f70033b6b0f0f368ba646e2c126bd5431e925bd62d21b0084ed341acd9d9d9b07078360b0223f58fcf5e57e3e3f2af7b31868c4952d41cdb9baee45393a8fa12d9d84aa6027f5e5e753e054a3b4a571708a49213c46134b15c08a76cfe414015d9062320d1402c08880a190a4988919cb4c5200dce3c4040568c2007572ea6e5dc17838399568343d65c5c60cc08aa4b4c41053b1c50c838bcdd6b485556c8febba61e8fab88d556c4d5b008aa16b16562d855f1f7775109c96b149876a04f6baad486cd455844ad57eb056df4e2444b5de20f735d5722dd8f5a12ffb62ab2b7018ed3a567c2ab33cd388502e9b366f2f577fd3a54b6fd25dd17633cb716b3f0ac51a3fe116d64d7566398cc8e3ffed99f65dd7aedd2536b616dc13f17e5c9d2a3a8fee4788ce966b49aed7f80b3deb1969334e920f84c0621b4a60026730c8274ff9186981cfa523fdfcb661e74c2367fbfe7fff88618a23cf0bf4621f137f7fc7f384d53ce7073419a66deaba48ebf58d8d9123adbd7531ac00adef797e2029843101bf2c63baaaac18c27ff39d50c0f6bb6e553a4fd3ab5c4554f9a7c3b5cb747576957faece5685bbd0df4eaf06bbaa7fa5bc31bddadb5d4d5727c1a9a62a555f678a902560bf2cb0afc5f062ba08b6a9c795529c4f21f4a412d355431a86a0649e124a9b829f4aafe7b777d7804f64067bfb57456482a57d5d2e07bfa999d4bf25f24f81eedf241fa1aa6d1086ff30e5ec9e3f09ca2f2a44e9c55136a1814afdb92903910cee882495e1e8fb3051e543efee45a0bdf0e15eba4affefc1c0da39943e20a7b84610a54ff0870782f1a1619beffed06002cb875f0863b170d807d228cfc7683d405aeb0dc893c06750a950a56e934e9b8986dffc101bb4ed2fc48434375f6ad86663e704eb45c5f4e266d8898c6013d95afc09263207da360ea8815bdd3f02d430ed3dd8d322b136aa8ed77d1b13cb3b52245ad88ad467099d45772104afa4c06c3092107385b079bb1247a895b22fbd04cddb97b36d1bdd43f182b8f075f310019abbd58197457c0e82f246bda2962b71a8b03c7febfe12113a6ee19f9371bb30df9a9b6bcd17ec71c2ce4d98cbd3a5876cfba1d2f4b239718e019b5872ca8e3e35a53b656769a2fec6ad8939a64f2d2e4ee96c6e62eb8df5a84d91211b65f8fae94a878f937404c5be532a0aa0302c63a1916dde383cbc61da7078e3d0fefe0dd33e6c18f6e1011c1cdcb4cddccd03a1601907d25420e6cb0fa0a7d11ff3b7105a8ad31947b09ff5d0eccef96b64d46c5d645ed4ee7c125607af8bde5f3f07e7c1abbb812d7af45357a0624368aeeeb76a8f7c667dc0245e899ac1cf411d4849732ccdd6405088290a2658a354279850958e5963b37662324e7542e2ba5ef4545dc106539898821401488c75419a4628a10923998fc55cdd481bf9a2feebc45015c69fa5f2c7114c4c9599548d6b6acaa249eb354074cc0caaa62c3d46a8411446149d11465483f25e4a0c55b5541ad77437ae1a84e82a8d695a423332a6ae991853c2af4d9a7a82019d3e69ebba980a154230c34413c469c490966cd334e772ba891525ffbf64f3aa66ab0aafb0247f63fc4a2c856f4a745d9f488d6dcdbf2bbf46b07c1e2f89c9ab8071cc60b931773e95d00154aa6f2c5b49a26a8a02182bfc4a5395d46e58b134fe9c9ca6599860aab2ec986ac63028946a2be5844ba338434da1972da3b3e89161bd8c0decd7fb020106b5161cb1e7f1f7ee9bf402aa15d3b65f0e5426fbf9f018cc053468b6294d7d0038a64991edb0a72cdcf0690e5a86bd17d8bbdb8285457c740f026ba042b1aa8b20502d12fb9216391a2b680bdd2bb04e834a79b5949fab90cea47a0759d1f15878c2ebe7e429f5ae737bd7802784a726af6ecbbe266ad7ea349b8762df84bd6856c9afc9d33bfc06db00192ad1ec766cb3dd0eb26b1b8d5cbb699b3b3ba69d0b4194a40d6c3f04a383b08e751155500d5c9a3860778d84d7d6bd7aaac749500d23cee0f0ec12b6342da6c03d5b4accd062f85e4174bba3c71458de54e2ba16c3afca624be35253e79aaa19ec1b704eb70ced8fb84861681fe9febe6e19ec4fab4c13a11c7c0eebc0df42073d815ef423a3d6a58c5f0dece552c6af0ae0f311ceb7d5b4d32fe357dda88caf66aa85d50d7e5fea762857303749000c5b1544f842e8577d227c33366ddb5ce69794fa5ce8a7a068fc4aa03697fa272fe9ba02bfa8e8dadd93ff66803048f462259634b966311e13d8751653624c90d95b3311327b633c8e191664f660182cd623b3e782bf3116b3a6d24e2693762663707514395154678ba34d741f7acd10e71a1e56938f56a9fb4385ddbe2e9ef3d5bc755f48a63a3913a8bc9b4154c2661075b079861038d8cfe4f3997d279f27919e1e702619b6f0958fba39602b113fd00eac49377b8c6d24a24716d09bd0bb46e431d406338de888cc7f75116e0368d28f0b300060d508d3918cde16bc6e20777b6be1e21169bae777437bcb995eda9ac80f95c94b5c1a6df7724b3edc972c7e6161eba8b4f3dded0b6182f9877bf7fb7e3f813d94ebe5bbf5617209a37de47dcd1d1cf0f24809d2b40ff684fe9613edff01a42197cbd6a5ba5baf3097b9fd9da65812ed5ce19d2b0f1e4cdf3ff6c1cf7c70acf1b65fef19086cb3db7e33d5c9fab537630ab6516d886bee7fdb9b82493d4bc8fab5166fa8449f9d6242a0e1dd2319d60b7e3feec5d49c15af9645c2fb6755a73fd1a09f4b4d182e5e32055490ffb2de8b49d336a4a9cbb06fc8e8227f4f6ec9999aeae43d2f07d69f4fbe87e8f446a06fbe1474db567f2e66076e4107a982c588d76175a3c2dc7a6a5665a066aa6e44039616ec9ed17a63002ba910cdcaecc4621f2eb41433ad77ff26167bc74346da94dc49aa7ad7365537e717cec0e67cf70f03c824d8e05be97c1e9ae5f8174e7cf6162204b6e2e55f7d3d213234df1a379e7cd218b764a8fede08d8a4c8782428894a689e6b7715e646343cb78e0b49af1fbe9c39a57a85fdf89bf77df33e404ccb3be6185bbc6f61aedbfc0f5ef77f0d7aa0d7dd7bfef2fc05ffaa9491c96bdac2e585eec7806be1bed9656dfdcfbcf97b9f43512e949860b6398f503da2eaad80e093e3c2a7db9f1b5e894012d7fa00bd7fe913fe84f4093305570cfb2996329e0a40f6ec8fc9665ad86a068df2854ff813e327d898639b279e32c7d8533248ad69dacd00e73bc468edcb0faedc0e55289a827b14e68d9f737b4c66703b9a6b6b4570ef18b2505a646d9f40cba886cea0f302efdfab15a9572bba8257c1576c402a3445a758f30abe92e37ab5a213885045be53e7b754f816343b9d6ea7d3c9359b39db6c77e0b0dd11624eaed336edfd4e67bf6dda9d7d7941a7d36cb55a39cfdb37ed56031aad866937bc46cb361badd62d24be5a0dcff3447a7724bf59fa152e22541ff42a38fd76313a480c3cc2ff2c117fdb866dbf46d8b0c40778c15620a20626c5887cea8562ec35db90070dbbd9efa28ee0b4b751167d047d05a11457bfa20147f52040880eaa4c77a0a16dacfdf41a5aca4f000d6eb521caa3fd7e73728c4c2ca7b2a59861cecc1043374d6312406326167149584d1abacd88411595eb5e54c7846b3706534d4a639a3a6652db7a1888865593a863a66e615517f4d0baca6f17da0b21ba7fbd9689a9ba08e31191418663bc8a18baa6a949c348e9861ba3bdd2c0e9c4542c664e2533de54762dbb746d293ebe942e5c2acd9dfb6d6af8bacff25cd2a104cb702662506648c5ca3258762c333f66eb40556d7dc94a0cea55ba60cc564c5d9b184be658a0578d8f419effcee49999f115c7295856c6889b5349d79b1a5fcb2d5e5b8af8633f8bde855e44ff40f04f55ca2a934c03d5e4245f2aeb1b193793f64e4135bde6acaef1cf535095326f66cd5b4d7bab6bd5b5d5ea19f0aaa7a07a06e44e9d1fdde0db22f6c45b5fabadae555737c4ffebde3970331bf52da85593b0022cb9917193f5b2ca92e7c04d2a084cbdf1c289132fec18262849f3ca9bf2e0ebd6d2b0073dd8641fa899ff9b7ed31523a9740f6777ebe7af4ddeacefce4e5e3b0f2fea31b0a6e6e7a72cc5d2bb6d2ed05a8a995f1ab217f27fcb790b4c936ffd5cf79dd93485fbb57cb9fbed13349d8533e53cebfe46df1a338d56d13a3ac5c7f7f13c1da5616cc95aa1564816f6077831f9169c1dc29ce47f23416a0ffacdfded2cf4cba46934cecb3712db5270e9dda6e023f02fc5dfe1a8720f0263a26cbb7b70b4be10f0b456510d9dbe7d1b8e46854d15935e73bdbf5164366f3b5af2fd5b0850a7dd6e0fe0038be614526e1fa267b7e5e3c60e94b174bb32a64639aaa0902c001aa59f1dc164f84a4a196dcbb88ff680faad21ded1dd2f4c6135c01bddeb42f57e444fbb93df3eb2ebddfeb7bd306bb035dcb3a2bf1df3f9a8067efbe80e1300f4daf0d191bd24fce1dbb7b91c63e5237c94fcd5b3fe421df1ce0f64739823c691f8d11e804a2f6f5ef0351d8bace51da7547e34f050f481557db8e33b3a426ca9dba0711d8dd28506cb5a1ac671ef05b6d68f85f1ca458a1229e067c262f75786f60ad207f0357624ecd760598f85abaf1f8d0a76129a4721777ded08b4b04e3be2e289207a2df5bd97b082c3ed5a1fca288ab465fdb890811f1d55a4af1d55890f8d4436eb2cf5bf97e06dc97c6124f3857f7a3cb51f1e81a7a6a29ce0dd69a35574165d41af418fcb18e25ae8c10d230aa33184d1a841c1c01c610df320aa72f521bcbbc59ae746f59e8f572aa5f5f552a9d6ac95f8c6c06e229349245c37d13d0cb682efdf6d3677fdfd668bdf512b95cbfcb3b43eb07b33b8a9bb176c412e7858a7159e167edf033880262a8accb490f9b5eae774864a47d0dcdfde273a1721f7b956d9109371c3b409fef401104a091c108d9a3269bd6d9b542321a77803b95c17e3735e746209a63ed64bd2199d9253ef25edb870d83d884e4212c6e38cdf0546dbf6240cec2634faa71d7eeb8f8eb505fae63c14e147f7eb227a66640e0fb3a15e515d7ec26b10a40405b5ba395cf2e1da4940427e6b382735eea82a4a3806f2c2c63002583c0271d70be8a9143323d4fa8a67da5ff47ff78b3dc4b89b775d7be6caa5371aeb349d3a2721dbcf8d8dd9897ab9b478601b17bfe897e78b2178dd6faceb6fba78f599c7ee5a2c97ea898464dc5d3a51399b4e138185720087d0444bbe3ffc8e2ca0224ad2b4b7165e0e1ab0c9dbb71934ebcbe7776d039ab6d15edc0a5197a5b7b615b4f8ee765bc6bb19210e478f2948e2c371696f544c500ffc2a35b02d10e28440dd072973530260b5d6c5bf26df162497032bbce779ebde2de47feded1d785eb3dfa63e8d4ea26d89cf9eec8508b8bea9b418984e0731ac06cdc4c55c600cdc01b129bdd507814dd5fed56e5b0acfa203f7c54fb57bf6e5835e404ea7dfa6db8b999b11b3f06d9c1fcd1dae3c04b453fed6be0c0614f02dc2af1ec6e5b6511bda681fc5645c62c460da14d214ffd80f8df310da61ce20542ad4c2393f3a090ea51bd6860c2f70d86db404a64cdb97c77704b04c5b7cf66439d4b08d9638eff3a6f83b070376160d756eed4353f0370431b4f7a287d1ebfaf1f7d911dba928db43f4f81dc4e0feae582a86ff9e3be27bf00f50b0f0b48736c00b56a24670e8d6f0e5bd27200de59007873ef7405f3bd48f880f8ed6ab14690776046f41e988e3413b7c6ab07e473544f73f0f1c18ae7fb811b683d7bfe4472e09dba0874994904c65c3b34e44dca8738da21d015c9421c4a66d3f7ee3c6c0a4920d2190a0c1fb5c30d7a543f6de05b42290302bbdd0a030775d90d616f9079fdd5cff2f84fefb5a9be8f4a5609e23f8dbebeb3b62a66b888d1b373c0fc644565980ab420dbcb4b3b3b3d3bd296841b38ddc4e7ffec97a94e533487fad45f86ddcba5b0b1cc411821b9fc166f9730f03669430bc17a4127df41a61941ae40bfe20155af457cf618c1568115315d940afbd080a26e4a5a2efc0ef2b9327e2ffa7a0123aac2bc55e3246c0a1efd507ecf77068d85f2006a58c5cfb68943b9f320c0f7f6e39b0d7776cb3f812a1185f101cf93e653e56ce7d5596b8d98fcfd244553e8fd5336e66a3be51afc4a152aa50115324acf42e1b1de470d86dd533b385572d2d2f162efddc34c413dd1f5bf7dd5d589a2994308e6f0f0436a0e5a4829d4ca6505e5f4efc49fae599e76a95d972f9f24cc1f5e0aec14086bedcdc84b0945c18e10375070e0cee0fa12f161b81a1da36dae1e60ba30e1afd3dbf1545c46c4403b2bc5e4c467f9c7110ff3f14ed3eb87ede6e1f501832762208e8346dfb4204b7f5f188fa8ffce092ac585d8fdf8cc6694f71f9a41e8e81109c21a235a77aac90c9428d05b279e560085c58d5f187db07a6bdbed7eedef494b80e0dc3decb997d58c152ef8673b6d969b7bb37536bba29d092faf3370ba20de3c01c01d1740eead5fa0a9c8ce6f09f05564d1d8b9b0ccfa871ad7bd8c9635d3dafc5c9d68dc01dedbe380a06f973aa8ebf0e7b6dcd56cfd3b8be15f485bfc9001e896e8c063078f368b987311574c852bfa455e8df052f4410e9be1c8854702388eeed47655d8ff6cee8765f39b88cb7321435e10ec86f857e82b5625f3084177632b3dbe90bea0951a145605210acd4bd19da94a2e5c88b720c54f8360323942b211ba663fc6aa4d70f2c4e873efa4a53b0b1357b935d2f767923c0680e294e03f5dddfea8992720cd4c215617f8f57543ac6fa4dd486749705715f920b4d7efad78507d0709b407f9b0c66b554062783c3a03f347b493e3f459b44fbea14efab83b36ba99f666fa05807c1ebb6c18e7489d7f40ef7c1468790372ddb102bfc4b861d5d83367cb97e144e47bf916140d22e8e00e0183ab02f0f4b5b286f3cb91561e58bb64742ccdb43b181de88d80fde4e8194035e587763bfcf1adb0e4fa05e64456886f67aa38bbf181acec75574165d436f42cf21548a02c41f1d9b1cc9fb8b3af86120cf938bbf3eaa5dd40ed5e77adfdf5ab83822c989e0d98b4e3e33b53c33bd3c75d21f9edd6f4c2f4f653253cbd333f27b269a9060daf6c97fb5b855e8cf1f6a04c493f9ccbfd22ab9e9e5e5e9ec89dde02ed85f9ec956b4dfd62a597946fb2dad929d59ee86c155bd30ab1017e34070f79f41f7a057f98838b3e568fee44003e461137ad4cb47b4439f59ae9dad68f9d57b9933b93c13d4947f8f5f28e745f196676e05594bc1df5ffadf07539973cb7a595c94ad68dfd34e0435bb9ecdcb07dd4261e59a115649f980481d37d005743fda953387f0faab8b02c8f7c8ba9e8300ba402c0211ab6414f1bc0ffdbccd2b96779af19c1954537e4f386a2ed15cdce27b47d6169aa26a7927afa9bfe8374db6a27ddf7f9fe3653d3eb6b590178d1054ba1b126782d70b258ac47389d891520061e34f0c3d0cf7813e7ff88c76efcacabdda33fc9991ed1ffbb0eefb4b9b9b4bfc3796ce9c59e2bfd7e47d9a77e1a81f660e5d42f7a146d4c7700cb74eaa87fc2f749aa4c0d97742ac7d2ac2458a8e07ed610a945e7a6253ce1efb9d4e0b5aad564b00a17f526842ed218a9497794bbd5c90e978b6d96d1ab6e7e520dbbd99f33c2ec59af681e7b53d29f3ebb77e157e0c1fe2f33d2dd537caf573505ddda897555b51d32e2bcffa9017f58df54a3db3761e52721b7edcfddbb266a8ceabe35aa3e53e9bd1f58c3ea1ebfab29ed30dc3d573fadc9fc617e2b69dfcf727b464a2e6da7aa1e2bc63dc9830c60d439f344e1a86dc2e77bbf1b83def635123041df086b07d7d4082edddbdf3bbbbe7b7777723d78ec45ceed35f7907ba85c4da83faf1cde7244672888454654146b51b6065099c136863059a804dc64cdc02054776a1090ade230c772863740f30235c31dc0bf670a4ac73fdeb5a44cc081731295db41b41269a3052059b078115cbeb99ad8238e8e037b20895aa61f433f6755b1ff3093ed7c631c662b82dc0df90692b5002a46a9a7a0b618af9e331c503cfeb451cbad530803a2550a37d7e44057acf05a12f6115df12cf0584552c73f9e0bfc167d10442c04e42bdcc15ca28704c46202bc27f7bf2f1b1272b0fe68bb673e047c97d77f1f5c5e99401279e1c7bfcb5462a5f7cc3e2014b194e5e63df75ec62fec1729857dc46313421181fce0f7a6adddbfb6d0790fe760fa9a651813fd1e6afb3ad32069f1976237f7c9f5fb7cfafdbd728dfa69ac754bea132400309a2b97da6f2a7a9ac4fce9842cfa17722543f566f71675516200584ab958f14e0033344e77c7612a28801021ed49b56a2800027c13b88d2b804e95fffd51863ef0500788f3666f839eff05e6aaa890cdfce245493e65e077e26bf31c63ea53c5a3915ecef2b4a7b24778ca7a9578946082357554da6d0138dec5055790b994c66f2f94c7292bc45514962936844866d6aea63b0315e248cc800c21de86fb7abe8c1dbb55bd453e50ff62958dfd8849a60cf4f32a71e011cc395a49b1cd92a30b527c637fe858f499b8b6d665b5e33ebf9bb6ca9d51a5df1ffd19f369e7cad826df3d0b0ffd1a5c71ebbd4fd7ef2ecac30cc404b35bb5fbf04f397badff739f6657fce452c699e88b3e9679571227d78108f64905ba619f08534fdd86bb3fb125f52f63be25f5bf2cb48f1f3a6cfde0d59d3ee34728dee8d46ae29be1aad46a35fbf7d1abd1ffd88bf83204acfbbb34cad4a34536b75b656b9934cad526075481605d2622fe1eeb87cab3b081e5cdb7865c183ff32a7c6756ad220584c1181802a56f88a1cd362e3a6e1e89861ac33353b47544561542138b85a51059698c895d22c47d7134c8d6be9ac0aab87a6bdbebfbfeee705fe9f98116c50d5a49acd67150c042baa422dc64c82195128ff55a262cc8ba0513ebe7495c4746c696715a22a94611ad3545d148edf4b157190ff53f8c598182a4d9844c57fe04c1baa2ae2d4b0b896f287628511aa618235a68d27550d1405d2ff209916c963325a8e604c1505641b3005635555c762d68989fbd3ffbb6d36bc6ecb6b846ae897a9a6f0a7d3a445344de1bfa54e674d9b0f10fecb8a5c44b1a228a0339ab4ec49cb508160752eaf9b0aa5a2b5818f28ff425014267e30a946e435134da239f450800824a788fad0cc5f6115562bbcb2fc5488f916f66722a90c66b69df31a906bccb361e27c82b57947667d2e84de8bbda8edf0166a78cd77feee01b4ef205b352a972ea153e83e5ecfd4f13c6cbd0a6c6c02a377d2281fc2232bb2b0c567b9bc33af817a4c43c052044b3e026aaf6d2dc88a3879f6c363db22923fdf4493e819f4c26df02958dad7672a7ef66775052ac55abde0d657a0b2caeb5b8d033b0dab3db5416091559d7e64f9b350617d99078272e9fa997ecc90366f9f75c824a88655534d4c980d6ae0b7e600d1829ad02ede7df7c5588e240c6162d5140290492432b0ce3fc96af7f7023f0d78045fdfc491c419c952f63f2b8a92c8288aa2584643b5b56c235e60a6625924135b9de2bd899958517e973fc3b244d447fce452e8fb2191fcb84be873e8f308956ac55addabcdbe9296e0a2785f92008cc48bf486901da301d5f27f3e759febc78df363201caf5684c6cd5c478db1635aad6dd8ff2e6cb58f602612553331634c13189004e39a4830c594609d328b10a228a0622c134e5505e32a60be8b3542344ca840527cf79933ad66aeb10631ec5aab53bc7b6b61cbc662fcf39db6997313b6ebda0917f87c2c63bc45026b5cd3923ad1f90331054521045b1ad53056f95ccd7f4ca734c61271aa11cc145e0c8689ae52b1847c7e63239a936aa17134874ea1bb45a4454f8073a32336b29d1a11ca1f9df2bc439f22dc69fb1beff3b33756fa03fabb01a7b8b31fa46b7841ea4b3bd8b835803c971bc9292e99c0102d56ea214e20ef2ffec44a439384570d7c5b61d1ebace2d6dd221cce3e7775413155de0166353c7b3e935760b6fb2166daa68215afbc6cf6f2aafef1d397a7b69e6e7ec7fbcbcc33942a8041b97229fd51984863461ebd0e4a4c376cb0bf1a5813be9effc71ffcfa0f7ee0e777091b9b856a680ba154201d2f423a93ea6143f68b963e3952185886d7568b6babc5fde59999e5cdb1e6fd7ff519615cfd4c0ff9ab69dad77db9f0df89257625bfb092abd56b56f7d9cf0836b9273ee39fbffe042fe413016c18687d6d7b095d46cf2054722ab515a8cd962b0e4bd6d7c5f05cdfa8cf96fb045de1aa0b1d89d59ea01b87625a65b49274ebc37113fd51c770d032e32ca636d76179862ff3109181a5df3172408db198d53d68b5f686028c3dd3fef5ef5cfa903195c4ca372fc1fc2c60985966960aa16cdcedf84e4a4579ad148d4f293839657c870bc795a1f0664f70eaf6b015e38273b05f914b15311b621c0dd2b37bc92d7bcf7f8b2bf542f07ffe5bc4dfead99fba07b00b2a139b5f91df514cab9e8fef41693fefcbb6b9cdfea0a1bf30e8bc3ce8cfc43b720becde3edcd6f90791eda89edaefbb9c438b684de4db0e475606ce8ade40a84b7c96e4faaab3be5a1591a1c1f474d4a2fd9341b0f928dd373b3c8e091dc6a2f4f9e44cf757441d1e0f82d766a17b03001a046fc2e3a292bf72c69742e48d214655cfc7ac06f52d4948d3d2107ef908e25157829fd2c2715264e02fef74f7e08911bce4046f76bf24dc44d0ea7e69f40520e6864e73131b3482f31de07f6f0a5cc8d6e6689cf0cd5e4eb18ce71b43cfa30fa24f23549748d0516c6877e4427d874b3fff3f5003a3fff3655e5e39948d3bb0bf3c33ceb51095088d862e9b7c9ad12891323fe53384027c9557d5b8aec50500848a15655ae6f15001faac09c544e818582554a754a7ba4d55b5fdb87c38fc52602c3442ce4cb1bd7fe0df8c0120f7e9ef608ab154b598045d56a9a152836b4612779a2ff0ccd6559dab609862ae262954c15cf6505493508dcf9284619630f48c35c575438ae16a2f8beea66de48c44c2c8f177c4223eb919b48e2ea36be859d41e9e5b06e78ea25b1c22142ed607e3e3d6cbc5e4110f8ac6cfb951c79b7fdfc8b968cf8f0612b3725bf81c7ddc86f0c28f797e8eb3eff8cf85d743a78752d83decddb22f2ef56f13dc98c13d90ebbfa3f7837c4a0b8bd287278991862c342b6c292840d1aad58a4e98bdb2094eddad45a2318b4e31c8a2923ca37e1a49d3f3a475397bb3d910c3b9050dafe5790defc0b7bb67b3bec5bddbcce5bc1c64fb7c53d3e841f4047af380077a440423bb738f8e3459548ef0e8c07e964fa272ba0fb6ae1de7d5611663163b1c70eb40237884614b4413deea2f4e1defde99e2a3e17f1876ef20a487fa9d8e1c348de69187cea27bd155f4009f95fc8eeb45d1114b82bbd8877cd8047149dd0b8ed1220b38dfc22d5aaf30606e3df776ef9f880ef7cf16821ceceee761cbeb7e5ad6c4d4d6b74c3bf7c75ef7afa5582cf66dd3bfaddb7efef23ca8dfbcef9bcd75de184f2faa29d3c96b6c7146c837dd9ba6edd9c6be147bc4252db1dd9ebff73978e09bf77d33caff3f2e6deb429d652e2bb269a8d7ea6ebd523f070a12a57bdfdf647ff7ed0fe59aebd9e73ee53dff3ea6413393d7b4bff7bcf7e9b7e7bc66f6a1e77e2ff793f7b1545f8ccc79f40181c615aafe35cfc9835b7587b83d19d7009d626d0483bbb4b3d59d7350af79cef1b611a7585b818a53899ae3be16003fbcd0d66c35d39b2a32aaadb55fe807898033479c18f9909f0460f1fb75acabeecff6425e7e36a31acaa9fd41fa802fdae6cfbaa0eaf8d4fe28cc4f6ae0c2fe29c550c1fdd95ee04cef3d35112a1d6956a979ce5ac6ad0511d2e74440d46d9b8b0bedc14a171754c9e21570796ca8ee9f6cc7270c1911604cc4db9f1cdd42fe55d0ec5dd518a450106de699fa1b788bbd4137bda39b835fc5db425e850d2a6cd2515cdef3220fe6efa10f1d1d531c5552ebc7e6f98bafdaba38e8ad894b9cb4b8a10ff7d7df1057575787ce074888e7fc50834f06d3d651d0010be5d2a944229138552a2f44b69ff39ff37daed66a5a4ad3c487aff0fa94f67e008b698768dc62a01f0942e0f1479716174ae53aff997ab9b4b058e23f79d8bb379f777061e6eaf4f4f4f4d599c29f85fe7e1cc6d63e8d3e8afe0621df181e5adcab81ade51558dc17e0761677f7763e6e1f62e7efdcb67e9c297f9fc59933cefaacef81e5595adf89a5c5c64d33ad1335b0be3390d6771fb6316a7ec7a6663aba91505f37802bd3c7ddf216c2b04231618ab44cf72cedd4129676c0232ced04079676053371bd41d584210c51e25e5365b6c6a82610dd282602d6fe73c26efe776b8acff74fa7bc27f7a6da7f76078677cd52882a73e1151c1ade155034aaa62c2b49554de18d4f1316613a17b80915467d84a273e99aefaf1f8dba3f84dc1fe2967705e0c8be1822ed9d4c3e9fb9c13f76e4817dfe2941b99b7927c33fa44daa191ef27dd087c2a7864abc47f993ce463d0239bc5187c3fcfbee5f3fb972773afdc805d34a8bf13cb93e7ef2c2c3e9f4dd2b2bb5c68bf9f1daa4bcc2342376997134892e0728433d0f5524bb27e9c19d6053f9830d0ef99cbfde6eaf075161d976bbfb477790b1c5e5e9e64eb7d568f5e5f8fef1f1e853e2a9bc3e282b626cc6d047d07f145e85085f50926b8974052ad557aa11f6744175b6e89c0137d013e50939c26b47f209ad972bf4ffa542ea8cb248f714d2b35c8713e087dbe519a0187e538d1b9a256032148d524b552da6d94c3529d1148c8b726caa986844b328255ceb245823540b0879f8185155d5d68d04a5b428a7014bd013c5198b51415a4469f790e894885ba8c6270da1dbaa94988c254d3dc9241390824b6298f289c5e0eb3551857a4a84f669aaaaa99a634c659deb92f20854311101c0ccbf04a41ae43d9aa96093a9495db3437d59d221c5342da11343b8035551111ad3a811fc449eff2c23c4624692aa2ad358cad4c7342d4e558d484f22af184be8565a5fc34c68c962bee3735c4c53632a8b51d5e0d3b34045b10d2d6d304b322dc91995126948d4622a3545f3e9444f5bd6843dc7356a0d47b82c97d1e3225361105637d45fdd21ab4b7200133788e01c19325084c3eec7820cc0478215fa91200b10de3d70a0fb31a12fbc7be09646908ef9e8c520ffcdbcf048d454035e7864c0ccf5a88826bf21e34003fba6830a68456431a152012a3064f9af447396a24e805218f431ab3a2cb20387dd67e01fdbdd4722ae801ffb8e80b7060e0140438e000417d3dd7db81875061c06bc08e10c1cd22d048851fdf1fc2df456c1291d223756049dee68ec8b4d317cab2c9827aa2e732224d46e752de39d826a24a3a75af7dc1e9149a5ee16e16f25790c86a5cb5e329df3338f0d5bc20d1bfa9933bae1a593defd4415c475af7e35006c81621b9a85677e711ab0c54c5b81df5fadbee10220a669ecdae6427c7e7c4023ce5a0e5b5d658e353e1f5fd8066ca8a64d947bef859f55546cd89a7aee9caad9065695275eff7a61dfa788f87ecef7a38f23543a2ee3de3d929c69018a410eb10fa634ccb87427cc4d744ddccf2ab231e111a948b4fd15e3fa9940c9fa1a56f49471ca9cb44101ad3eb7b0559820548174654cd233511a9bb467ee3b11d232518d28186ea1f414973b6ae95cdef9d77c5e08a8bdae87340233c0e52a23ad9f32adc2d2d6e2f49aa5250d6a5092d0938b39625066337bd29a583028509230134b5962502cc1ba6b1329feb5a14ca532f9c13ca282cc23aa0f5ada074df3c5d2c01543771c8c4e1942a3728a0e8fc8166a0f04c8f7a570f4f11504e51e4cccad0d86a80fda574b8377e424fb9acc22ea0151c38d2856eb7c2f1e5d703b8ef022740f7adb5e349da8cf3732257076ef97b1f4d158f9fe50faca40358a23f6a3777be085adfbdbd1e483d0aff17278fe899eaf03452dbe21c06c2e6ad66cfbb15bbd6029512723ac932e321de7d009e4a1736807bd1aed0699025ceec311a05c61683c12605776b51158bb3da05e47040a0b30dd0b1269b7d36a0da2eceef980ba6804d86eab857c785d1f6eb7d96888ad9d9d7600b42b7175c3d69029da3bb9b69cafe1bfc32fa10be849844a15beae2a2bb008822d8f4f4e4a1c0217a900a69c5604efb73f87f10f45c0546eac572a0132f7088003f8ef399d2de588adaf2fb131b6bca6db24bba269392e11e534b692a571dd5be2a2854696d6759be496989ea3e4e73ee8e712106c1b7c717dbb9c4c7e6dc5d36c925b667a96d2acce962688add5e403f0524d8fd3dc120b1fbf9c23b6e62d6b4996faa0af31c9f5dd77c5faf8e472ed7a027d5062fb06fc1d21b66fed686c5fe71561fb56fa027806231c7ddc9aca240de17d1520c00816e8be963563db33969524a084e0be8c0970df8401ead4e43d9aaec03f5474fdeea9ff2d845a156eb2c70bd17c8fbf7b90df8b8d8150f710da55d5715f1bb76f8b9f3c5201906d2c95897486b7b173147ef26d3021f8383c3145008c045500185380f67853c6cc58d8ca5c3ba64cf2a6284a489b22db58bb67f277fa5bb5afc5ff3fc0513e2acb467aae7198831c47936861282fb07f2662470324f7ad176614fd188509e2a189ab67f75750e35680d9733b7ca161435444bc3f125f68eea813ffba877fe4430a0954a40ba36187d070598fc36da2c785a71d89db04eb479dd98f96a557426f349e93ff5e7d5ee545744ef2b34479c0c3c8f1106b862bc8d20ee70659529560422e4223bb924a2d67b77777b7b3cba9d44af6fceeeef9f75b13f1c5adadc5f88415b3edd8fbed9c158bc76356ce5ed8da5a00cf8ec7edddf3dbbb89582cb1bb7d7ef7c74cdb5a5cd8d2586a693cbb94b2f946767c29c5b4ad85c52d29e30463fe55e875e819f4ce23c67d4d0ab53fe5708f9aaa8bcc67175d015eefbab00e0c0e755ca92ac062ea9d0df1cddace4e6de3ead58dc6f28c9e642d4c1a7a426b11b2323cbe3575ecca0a3555505ec9b8865f09c06cdbd3cb043759f212c12d2da1cf2c230468ffd60134a089d2f2bde374f0d6533e258ea7c770136cd3ff82a6a1777f59218a619b1a3c2d36b8dc16e03cc5d0049a4775b4e3e314840a32f38913a57bb1d2a77d57649ff2c9154b921508874a594ae4d4f8a9576a60e43e10bb3333cb617a28e46c9359f886a288ef03503acb331ebfc89b596e879ee1bdf5e9e5e569f9e143c6d8cf1b3653bb1d8511be014dac1214f882e1afe1332883e6d11974456279b9becb3430088a9e9ff1fa10bbe4a1fac6da3464d236a8b327a1bc7e1ea0ff40bd3478413481f0d08ac72d096b14b7ccf83357f87eed6adcb2e24b339fd1d2da13820398bd96b1b95ba86f1fb63587cd6bda97b5b4c6bf7edd8cc74d2b1ef7f883249f157fd8d53737f9e12b1b7ca7b0f43a4d7b424b6b73fe17a0be7d43d3e699c3bea269f35a5afb72f747bc20fc4fe448efc301b4d174889911409925bd20e62730ce7ef92f36ae5cd97013b6ebf18fb208cd6c5fd9d8b8f265b1f958f72bf29b9f95f1bc700bdae8227a003d2551b12af58db2f4164409b182742c55e85ae7fdfc3e57866f9d847320a1cf37ca9568746a452d57ca1bf58d355730e054cab30cfe535a9b762c6c32a7184b9f1cdf7a6a9a6a642c1b37409999d095b1d8989950c0f52626d6338a923052b1a4a2d91996d36338a63f2b9b25fe1dcd5155a22f3fb1ac13554deb33e7666ed0c9aab3a999a024e29a5e5b0425978e65546d4c5fb83cb51ecfd866ccb44c2b66da99f89a3d975695a475da4c2a6bae6dbbfcef2d2ad53547cde75547d7899ac904fdf497056eee149a416be87ef406c123110d01c06ac6cd70d15a6af315cc8a752613f4ca1b523e6271be724a3c657f37b4ab6e08a250fe5556a528ca4fa7821d6927ed797536ca1528ab2cef3879a65e238661a470e9552592320c1d3f165f1d7f8fe630a64d2859068c39da09929b9e9b2de88aaa66b485938a72b22ca18f35a2ff8039da223ea1391a036d5c9960a03daa655455d10bb373d33ad188a9628d9c38a99c5cf8963aa667f2f98c3ea676ffab91c25837defe76c320386580f19efb6ca6690ecb5d74358769c0cacf3de05c29cf5fca529719a0ce5cdbf09e9c5230a586432b1a9b7faecc80690e732fe598a381a582c15c9abd345fbee250c7a0142b534f7a1bd7667cdd5562b711e4a0ebe803e85308a592025ad4276a2bf84c6eae24b6df0209455c3d07b5b58dfafa466d45447754b6fa05d4b4ea7065695675d40c5facd219e7149c863cb8ab69df3ead66aadeea46a5ce7b74550480946bd5f50dcf193ce0491c53279f77a48be47fc239d350b0aa00281814902e2f46a845558b12557a7af8090c8a4a14d3cc61027b401eec65acf73e2470a897776e2101a08f9cfc7f6626258c00104de58ba102146302c217a704b0d73a5514718810850226c095131d0310955293699aa67d2410059bbd045f35c22956400b680bdd85ee462825bd33d5d580105260af87d1e8b3e59a5bf3c3794a057fdd29f88b53d575bc5a917f7412897222213eb61616b6c2c8e6bd66c3dbe9de8cda399ab95c23075be9e999b3994c267376663a5da9d72b7a60cbfc8b58cecbb57d68d98e61673b9d5cbbcde5c4c2ad0efc10de2b91964a92629e819a9e56048ab5b46ad6bdf3402b75177ec8d82798c3ba7fc1d8db367e04fca77f0f20fdfdee9f7ee01d1ff806cb689fd1b4eeffa565d8f322e215323ff8bf7ffe859f8fe67e4c8838ebf308d1637ce8953e6f7bb1cf135f0f00978ec4d73fc2497e49e0cd455ddc51d7f791de6ecfcb1d46cacfdfef7de8198440a8c662ea1f192850ae04de61bf52c5810a6702f0bcbaec168b3e06e1d990d0d95f21e02150e2599dd9da70cd008cb8421856d9703b38f373bcca7b15fed22bfc7d94f90b2b0b53c92f6095287113205a57d9062cc1f4f13828909a7786e30258f76d5eee30c71f32f0e0be1c9f2cda454ff2d51266cb42d0d85873ab2eff3c2dc48d3814a5a39c2d1cdd82abebde31ede7060d081fa13ad9d034966173f7314763ec716cd0c7a94634830ff8e166d35428c5e2c34d6665ac346f33c0986cf0f99e95ee637c027e9ce05fc42ad192c6707ba54b6350ce9dc90fb795a274dfc2bb8f8819933c024994e9cb915c137a6cfff45c75f9acbd09c9625dcc11f2af16f9ebd367b37c4abd99cd7a4f47fe09a0c210b8d0ebee43a3bbdfc9e5b2b9ec7eae916b64457ccc41c8293b8ea65041b0832c1f83f388935eb2281094a2d06787dd752e70c00dfe79d868341a07ad56bb71b02ffe413b6e75db5cfc83b615ef1e36728dee212f8dc43c6bf4fb5726d0a9e3e786d4b16cbf474d0a578f62013e72428026c1ff2470598bd0a57da9b02a62ceff0de8a07bd0a342c6d984b58c9b516d7033bc8c8be003a3f28d4a79e33c548a8ebf042625997be8d6f0974fb75e8904a32c82034f6342cb54531450ee79082b8a4617541dafae615df50f3f787dc6d0e635c3d09e8f674d33ade93142a9696ad3d6034bbf19cb31953195e5624b9f15c9451a7de279a21342547ae9924ac591b77ffa3abf1f2e6a0621c4645ad234dc58aa1037b2ead367deaaaa34619ab6aaaad7faf23978bd5f18a8791efe8e6a5e3a76329c020fd678d3100d2b80ef7e480105b3a06d0cb524dbe681b71dd136f9587fdbc8649c010601ef15b69895162df6a6d3d116bb7f04b6bd17f4f58023e9d4f1fc48c7f7f5d18c4854278f1422f99861e2c1115c48dd9b843c5288b27efa2906d1725ebe4d395f1113f8c8725f59f16d432bcbbe4d6965c5b7832daff896af9347d6e12b2bb8ff26be21db6079d9afdb4adf3c332fd0b47c2c82c172867193a1eda93f9bb0797ed734ff0faa66125a5c4d8f877158048fbf2a5971b67777b7251acbf20c7476b79dcad8f7695c4b64549a1e0ff04fa881c75f6558bbdbdbbb37034b4224f6db14bde32a7a02fd4c3ff6275ecbb8e7208c96f5e8717648eadf98e9d9904a8cafbb79180204f527d948c462713b572ee772e5726c763b0f86367ba5226ca51a16911f1ff0dfd8db4400409ce01d19845cbbca3bfc3357e069078846a78b7c77be2b98786b2b27ef49a7f981f1f1474e9d3a9f2be7264aa5895c19764c333eaec704e7f1cff06ef8013f45e66d4194d0cea3fcdcd51a1f53579fb9e40051f1cadbb6f8ee3def7f8e9f9373393fb07dead4c3e35944439b315f776705c2d2a8f5d629d40a51b424ef88ede175b7e5875e3ee1876e3e1ec45c7ad1e40cefe020245018fc96d804811e21d7e263d849f623706966b67b03d6f9df10414236d71c78ae23b05146d15e38b542f24e1fdc6cb621ebfbd70e455ec01a42101081978557506838c960beaead6fa4ce415d4497d5c200a980213fc426deb7ff801098296fab96aa1a946a58fcb428d3de5eaf649d8e6977ff1331d45be85f4e8b9c7a85919e0c01d0414fa2f72344a574e939c5e120ac40bf1df4c1144766058d0ac262f83655865f230c630ad73ba0323666524b554d91de836544142622220aab8a08782af17a888c9ca46e8c31668a40263fca48273408b7fab5a1669bc31a261a99b3272c2b2d727a754a4daac634199d44a88c56629228971969cdb055164436a934c6d498aac50491934124dc0966187ee7a8e68ffac90972d01cba4b609a70c5b5e2db51f99a2ff4d952d402b0be51f161e1477a5453fdd77aad56b697ee18c028f2c1c6a7fa763fd840e13ad6d5667849a3d5f27a9c606173357afe8780dcbaf0614cbafb513f4f50b725819d9517b03f12ecde2984ac7e9515085fb8ec2ed350aff4492a23241978444d597ef0fa236d90f887eb5a0c03f05fbf2eebf4e89942dcf2e2969ef08c44c2f012ba15f7acf8d7ac942a1c718fb4e7797975a6502c5fcbcbd7c5f1cdeb7ac2e352b81737c52de2313d4c820f0a44e977215462416a646d14406ea1560f56c20599a413315ef0e56775c3cf8adf029fbb3ecc8f16fff3536b1bde39a84757fe027b548aded7070076bb8db61fae53c30cc772d6f8d2f4f412fffbb244cb90dc56772daf6c6faf10464001deeb190600ac92fb3023ba89952bef618ff076b8feb2348d60aa309db7eb7c5b1caf11d2918f5d9a212a01c08c600d8bfc60b272176cafac6c8b706bc9f97c1fc6964634e5bebe3e71f915f689badfe37bddfeac4f95b00950270973e1b6dd61eaebccc04a032b054525aa71bfa2e8ec5b9f88396ce1d8de30f55f0c95a8cafd5789aa14f83dcfde2fee8ff6f145744de2d39e826a84cb2190ba239c0e795903f64aea0e7f0a001ed1a91527a4f049de1f3f5920246e51dfa59cf9c49d8d871f8be790b8a56aa410b7cc78c17fe80ebf5723eeddb71f1b116c0efe1e7f01fdc357fa26c3b98d2b2e81d3240e7eca5bf92cac4085058e9415a8f80ea74d3807f50a3fb6b136cdb76b52179a823cb8a187260f7d418e55c38d79724c1cd330eeafe5286334074449619cc03a19231a61d4a52ad1701aeb2441484ac1304155954e8497e114d1884a5dca08c3696ce024c66905bf901d1bcbf2bf0f6b71e21ddb9ceee719e1b76b2485759cc038a51098208c9109c04a1ae32436709a305e18c22f1b23fe6558916556c46509a293346613f277b3fd18d429e4a10b08d14052f325372e0c95d6326ed55f9b7b3db75eadfb5dd60da65f9fc0a68f3657e0a0eda93d9c18890e2a3043db12c6cec7abf3d11a5aa60d8deee1cd50a70aa0610a52d76a45d78ff6ad0eb4a1834e72d9a824ca770aaa32cab1522d9e82aa2c63bd5a3f05554fca1a554f86d55498076d8026604bd32c0c4d3ef145f7da573edbc1141f324d6387986245550e99aeb34345fd95af486e213ff7a621d0bbcb956a85b979f0bd9b67a1c27a0197d55431ba57f7b84e5f0f063d1f0c0b50646ea0f874d609238b898bbc9d4cfbe23950621a9fc8df7e6511b0c90c5b513cbef1569d31a139e44051ccf38bc2ec8c9599072f129d0a43fd13177f95e9b68189020b7751d53608c30dcac6b5b4c56f9b28e54f86f8a8b23f74d043e849f426f43caf95eba455a7ca9c7e09ec2c54bc15380babc27014cc61e7e0b42296ace8b8abe6c13d0d41c56834d6b8542930a710cd0b2bc2a1a6c15a2691706fb88944664df82888a20951d948906c2c9f17801953f95896e67c748290e0a191bb8572b01e0b980ef6b331ac2a5f643d141cf605ace298a26093f16a4fadc63244c553fc3953582599988848d90e8064ded96864434e0524fddf52ce1f4773685eea39b4e81644be54b5279c3ad5645a8d62ada48a8e57f3f847b4c2d0595fefde50403fb1eee4dff3e8a3efc9777f10e026b5db2fb5db157fcff340d14ee41d6866f2f94cb7e3e41b017304789d4ea77333d8156bceb7c5b85ee03db35e15bdac56f455d94970aa932202424add156f3d18d0a580a6b81a0c7737103ef813aa5b50fbb75c3ec88c9d9cac3f008a654dbc6e270da0288b4bb0fa403defa59c93a028cab2f3c01b272d4b813fe1e34681b78fa51fa80b0143e4252db8d5c7cebd01301086ef7a6cbafec078fa2d4f62c1967ae9cd773dee6516534232e0b201ead32da77ca60e1fd1ca8d04aab020a6d949674a810815c6acf81398dc95f78aed1f6667f21389d9d4f6eeee766af61ec3b28cb9b53500b99f90678bfee18e3b39e9ba939350c8de7362fe9eaca1ed6e9fdfd5fe6adc9b98f05cf574b972fa27bbe7b77735237bcffc894b1386b6eef253e3eae94af974da3d335b3ced385bb3c5d37eec6e582fc94032a256f59fb2269f7b2515d0eeb8d064e85dbce237c15e69eb3ffc8a5bbddc576840b95b3705dfd39e4406ae44fe97bbb5617dd45b3942770dd3900270a2d58c37a4bcfa5989f2e1c540bd1d91b9b402953095ed1d98621cd3f4a4ae2734a68199505515632c3025544b4d4e9abaa55c52285113869189c5276d2b1bb3328691a0aaaa28c028d1d4a7850d81005093522af4511a63da9869a434dd66aa41803f03b3a46166e3f17c323e118b8f1b6692a94c8c5061e8d9e78a0056142afe57b0a6d284ce2c991ba900308d8e59c698668e31cd148950d8606ad2d4b331663335ae125d2c5dc0956dbe800b502ca6081599116a697c5ab7592cadf98954d8e0eabb99b399cd30557a3aa2b4d35d464fcbc8a521088b45e02f2deaba083d5872ee1d9158ec1eefdc38ffd6624883629b33930f57875d5bfc8221f747f5282838e89c3eb91e3ed1b48bf3c3fe2ddeeec3bead97a2690fbd6488a89fe032da410f2204a31b410a18231a8177eb9ef0e6476c4dc139481de3fae5ef65c8e5bb507d787226ac9d6117dffa98f0ee8d605ee7958c565a3a82e78b2133bc6dae9f3cdd6d0a771e0254f7d7db3242900e025036f8cce7ce962be98c2bc650b9be9171cba2727558184b9d3fbf73f594756a8be8e959632e5e2a95d64d239e5aca261428cfcd6d40a7504bad3cb379e18d33a7af5e9e5cad60237676529fce5f989ca4aa1adff4d65e3533e386bce41d9444d3683bc8f7af79a159b35029f8d2ce3478697fbe3eceabd2589e9e59ce49db2634ce74ffdc369bd4c04b178c97cd61e65def707a79793a80a9ce35b8f8bc64e72e1ee1f40862777388a2384a21542aa43cd7732bc50aabbb75b7c28a754f41dde64b592f97ab64d71f6b64738d1b1fba777f02416ebdd9f03e5ec9e5728d838328e74b1acd20443764df91088ab23fb9c93cb8322e8525019d595c3c138f97dfd968bcb31c8ff3bdeaa3256ac516f2f94a736e69f1e9d3a7b7ebf57a7dfbf4e9a71797e6e0b76617cda513f397676626e1bdc2d625fb7306550472e52e42254762adf03fd18e32d2850e5abf0a83078a8307928307e0d0db5bdff36c637f7ddfb0bbeb5e0f7566cf0b83080fc2d0c1c847a7dd6c369b6dc36eb56ca3d323a71bb505519aba5ebe1e4329348d16d12a42fcc5d459a1528f8415b2c876148a1f0a4ea1e6b59acd56aedbc91df8c6f03f098ce1dff7cddddde7a1d9ed1c78edb6b7bfbf17e84c3b7d782da669770f3d4fe4ad043ee1225a4367d005f4107a0cbd013d837e86cfb947e333b87cf9e49a7d5a6545b98c7a79702a6b19b7780e04a440f11cd4193f2e974e7e95cbd7cb15a8f001ecc5a1c89fe8c581f94ba227c7f8912ee60fbf56cd244e5e1e7b4e81cf7271f2b3a0349c13fa2fe8279cf544467dedd8e5937b043fc53587a73049f857ff767089ed8a4b56fdf3048f9aa5fca9b7722e6d6d2fefc4b3b158361ecb59562e76e3ded3a7ef65e97395e56deb5bf2903cdd289fe717b7e5f9f3e5e56deb33e15df16c0c019af0c7d3e779bf76336961c208660aa6ce0ad345cd86385f9ace03537ddfee0a9716a6a15e193c22c21933d34aad22023fa6037592d537d684ddc4e16b9a9b075b92e9870ee493c0dcc1236e46656af9a402b94dc6b40ccbf01ee28ae08cadbb1c9c324c43d1e67487aaaa5e9a364caca48c579dbfeb4123a560d3982a1a94aa69a3a42b8669a470667b8b31cdd15c11b0ebb28cc6d8e676463e469fd31d95526376ca30159c321ebcb0fd2a238515d3989ed355953ac6ac261fe3dcf5ece5d39ac334cd99e79d7c21a369ccd1ce5c2edd2f4b309556555d77a8a3e131d33094cc5cc9c186698c612d4d1d5d5755679a3fda301f9cbbb2298256dc79defb2b8e0838397365ee41c3c478cc98f69f9466fc4926764a730e360d23a5e8fe935253c618c6a6f1c01ceae30bb2e53cc5eafc3fb7c2ff83dcfafe3bb79f5c6836179edc7ee7bef58e77943f95f878eca597621f4f7caaecfb8bba0253ae8e1e4188ae6dd48ae94c6a4024a9075e45b9daf0b72b607aebc17ae28e26839512282027dfcc5f56636c66c93276cc49db9e30e564d0f52151ce2ce71d273fb313c0c0bdcd078fe34206d589c8d6853f50f0f24c62d2681896a93f65f4a610a3b3767f42846192af04492b67dee63fabcd07571f66790215d01aba881e414fa317043e4c6828f00d48ce2b3f007f07cf40b6f9cf79956efb0139f195308203476e4163dc4c248cac914818eddb6dc26daf886c06dc8592ef644d64aa060618aebc78c3b6e488bd59f68c9f7f0b1f4c6fd1ebc5b9bafefa2dfec664fc820451346c4ccebe41afcf15ebbaf0a71696960a9b44a74682e216d643525baa934d7e2ec0f290eff9d5c2decb2771972f0922e09ab77518b0b25e3f079b2091982bfda5e795092e109a98b851e5c2ec5960f03cd334f604c19aa3618209d1e907a94e18233abdfbb556ce2ed6f5cff3d7f079bd5eb427ac27ee0ecef2cb3021846518c14f7cd79c881f739a694b32fd6ce9e81f8bbc83cb0277e74edbbee8f6589dc5d5e7a13770bd7fa4d5e7e6eafabd67a5bb2dc478141ac5d6bd9a7827fed9e08df9fac6b9cbfbbdf7448840c30cc987f16678ce960fe4b78b9c489d6cf6bfbf677d1c94db95f58837e6b891377627fd00ee976feef55b320201bf9957ebcdb2d2a223f277f9f85dc4c09a860dfaa2807306f9b6c8e3a24b60c2321abfadff2d5de0af72d39f9a5a6252e34f17bfb25958d2b4be1b5f0c6ebcebb5a283984f04bf49decff5d7b08344c76056589fc3b428ae95f4bf7639719f8181ce011e6c2d2c6cf13f902f9197f1ecb7f8c8644f3d71d61f5f2d4c3e3fbfb9b5b0b8b5b940357fd81912b053be4e4c5ad8e74797721ce32b52ca8669380f15d7ffdee7c2a0d76e77cabbbbe5f2ee2e74daebfcd07a7bb75c79ecb14a39c82f9036601939b9884ea2ab089504f6423d12cbb109ae1f3159a81569ade8d4fd3f8fd60a0e1ce78afbad398c730943c6327eed6dcd661350b2fb576df14fc495cf8ef0c27596b04eee75bb7b62bedc33126f9c6a641b8d9704ed44b3d1386834e0258361153776b0aa14146cb0671b58c5cce8c37a8ca349b428f8bf9e42a8cee42aebcf44be25c8b7aaf943da4f28737dd5d3f551c9a3101aee316194ff7672ac9c4e97c726cdf1586cdcbc97504aeee53df613f24070fa2be1897b7fc6cf809a3942002e5e668cb1cb94107aaf391eb3c6cda9b172da2927bf4129a5f2e4bde6b8c59f9e2c3be9f2d8d4fb02daaafda3c23025def557e1103e8118725011a19410295985b9ce6cb92886f3fa46bd20c7b00db36ab1565ffb1d36c67ee7bbdf75be0700dfd63450e0db0a68dab701e07b506911d27aef7bc7deffe7f02c89ebdfc30c6386bfa7c7c9b3f0e7ef4792c7eeab3e9f5e019d4467453e19ab885f969eee49707dd7b613fe6aa9af44a530a38cefb2017fd4fdf77f9797713633b93c039a5eca4c2fcbe2ddd7fdfd5ea15ff435a80bbd38883f597e6f8b909440ae54549c1dcb2c4fbf248bbef870a4467fdf3665b8bf6937a2b146c4afdb27501ce5d0095497b1ec92645854d0edd5c81ba8d24025d678e953af9735794996ff1f3cdcadf72ab01a09e0f87ba2cca744f17fc92ff2032723453e152da712da388ae83c427c60b330bc66132a02f0cd093227c48c7dacab9dad7de352c3b46fd866239160ba5290b68e07708c7df13f8e18d9d05853f66c339b35edb9a49a34ae7c9997edcbbfc1f4c691e3590fcb3c8d96d1a6c8147837dc038fc05ba5453aa8c2195f8aee2bbd9f92271dc2221c6d6d13ce8885eeff61ed6960a2bab23ef7def7defc31034c07a4538ae380301fcafc308838229f8c94223203a2a2a5fe0d30fce830330e03a2d4761659ea2aa5aca516a7966d2d5a4b2965d5b85d6388691ad390ee86b8a635c6341b639a86908d6bb6a4310637efcd1b7d4ef951bb939c7967de3befdc73ee3df7ccfd39f7de05828130152332730b46c3033a66c1a80e4725ecb18736e14fe3fe35f9bf3953f26333d60f67a9b994739089156d99516b0ab7808cf1a665c6545332d72f4c5e60549918ad292d5994cc681f9264858793427b43183397251b552611a35dc6761eb332cd4695c91c7259611b52a59ae2cccbf310d723cc4126adca94839219ed12a460e5349ac25dd174646245e477c959fe58b54a138e6a69b34da11674dc28c5ace24a9b6248fa5af5a3a2de7214612ce1961449d0526e1a8fedac4bd92f84f136f9429ac23485188a300ca1695260d9b0c1c282c18a30436824c614462896a21484c6224ac9d149b088889584c2488408412284c4188bb9a5b7484c24dca41145619adb61594c08a6c588202445285eb1384eb5383a9a3b3303c9182c0a6f098d2498283849a3112234c656fd666e1514c6769a48f9fda4898cd0c816a556b0b6ba2871206ca4d12c7782b86f2e7806a1188418564f06a1950b6514cd50248e55514b538b28fa70484dcb8669ab8191d1148529a2c404c52e646934b40853acb26242c434c1046182e850f81d46223137804e218cd8dc23182331a7821421b95c2ec7981542c270d1da24898baec1289adbaa3a9a221251b4d8602dc358c68a27c3f800451196b50451344d4030dea9832c680ccfee3cee111624cd50a916086676f9b62fd76a54209191e13710d732c95abeb6846a8ee8e13a6c1577e6c85f3046ab78e791f8a254ad60a4f423935abf211cac74aa98109984129162c24717710bcf1025a233f2f333f4f9a11d0f0942ac0dd9b8233868dec7bc289561b43b5c7a5a3e4c69db5a22a6c45184acc50487d6c1f17150283f83e699535c2014c51081cf4ce5e232f9c1adc7fce6afdde663e78472091c097b4a79548254f948d5137d4b727397a4e7e6221b23173172112f7c122515a53df48f01b655c89285ce8d07de9b2f5f81c2ed53a6e46fff3ef5fd8f3ba2737f0619e608aebfeefdfed1f5c1712e9293eda5639e030240c71f0443876a3e788091807b88e02a16fe0a256ac35c6b98bb020f41fe1e089e09696a3180390284cf6a791ec108be423c0c48809b055733cf27925e08b54f40f3341088485f3d0b9d599027c2fbea59de2999275d75046f14912fb341d23c3ccd4f40c7c2baff611e4602fd0465f83432cd552e4f0a42db9cc926e7cad380205fc3f2ab05bcc2bf6b23ea844da0ab3922edf0756504eff9a05660734ff39e1002023e33e57540a0330b29fcb348fb8cfcfd5bcb080479130991faaa23fc5340509783339447a48cb3e93e53f99b239e49047e2820c09fc52fcd2447e4bdd9ca793e3ba667e12ff435429b64ef9d8bf0c991722c9a23bdb9ec31320fe7b34fdb3c6512c697cf916f2f3c65baea39fc79e823051524c134da823ab00a2fc505f80ec924bbc800b949c5536eea0a3545ebe84aba8b3e4ddf65d44c01e3627a99719156b44b74469c282e106f1577886f49f224839249698274b5d42b3d2f4b94b5ca2e4569a30e45fd4bbe51de231f55f814d3d145d117628a6226636f28b72bef3ce77f6e2a4e19d71a7727deb2602021356128e187e7f5cf573d1f54ebd43ef5372fe4bed0998813f312bd89a75fbc9654917438e9f2c2dc852d0bef6b0a35a735638b7216752fbaadcdd17625ab92bf4cbe9d529532b63877f168ea689a256d20edac2e45d7ae9bfebfa3e9e9e965e91de9a34b982587977cb774e9d2ce8ca05eab2fd277e92f18920cfb0dd78d25c6a0f19a496c6a354d67da332f9887b3cab33ab2a696952f1bcfcec976e7a4e4d4e704572857ec5af1ad456dd96a195f695d793e372bb73df7f6aad4552dab4656fd925799f7d3ff6b56a7aeee5f7d35bf38bf3dffdbfc9bf913569d75a7b5db7a7e4dcc9aec351d6b6e16d4144cbee47fe97ee1d6c22b2f1b5fee2bca2b7215058bbe29fa656d67b1ae38503cb64ebcae78ddc975dfadbb575259f2932dc666b7f5db7eb0c7d8edf680bddf7ea5942acd2e2d29ed2c1d2bbd5ba62abbb33e7d7de5fac1f53f962bcbabca47caa737d8378c6f2cdb787a9372d3ce4d5f6dba5f61af18df9cb8b966f3a52de3af94bf72bbb2b772ecd59857f35ebdbab5706b709b6e5bf7f6f8edfddb6fed50eea8dcd1b573e9ce9e9df71c5d8eaf1df7ab6aaa2e57ddabd6d554d67cebcc731eaecdaa1da9b3d779eb86eb63ea5beb471b121ab6345cdc15bf5bb17b70f73d5789abdf75b7d1d8e86e1c6a9c70af761f734f7aac1eaf67caabf3767befee29d9d3bde7075f8eafd6f7ba6facc9de34eea7fc65fea0ff5673667377f38f2d992d5d2de37b557bb7eceddf7bab35a57557ebf0bea27d17f767eff7eebfd996d26669dbd2d6d3f655dbc46bcad7acaff51fb01c183c70ff8da2372e058c81bfff6ea09d69dfd97efea0f560e0e064474dc78ddf0f7596751e7b53f366df9b5f1f721dfacf1fce1e511ed9782470e4a7b7b2df3adbadee1e78bbe2edb33d8a9ed69ebb7f6c3d9a7ef4e63b89eff8def9a637a5f74aefc4bb15ef4e1c4b3836f89eab2fb5afb3efe271f5f1e1a025d8111c7b5ff3fe8913ab4ff49e98fec0fec1547f717f4bffc9fec93f9dfc30e6c3fd1fa93f6aff68fae4f8c7c68fbd1f5f1fd83570e954caa99e5313a70b3ed17e3272467ba6eaccc533fffc34e1d3c39f5e1b3cf499f7b3ee216a6878e897cfbd9f5f1ff60e7f397ce38bc22fae8f28470223d7feac3f7be39cfbdc857397f936f155e40279b88dfdab8f0aa6f876328258be59cc528ad01e1e27108b643c4e412ceae4711a6430c1e30cc4a23c1e97401c7cc6e35250a3bff2b80c5460e6f12850810708204a0208b410cbe31814a895c7096851228f53a045eff1380df1f0338f33a045a53c2e8174b8cce352c842ffe07119e8e0651e8f021d1cf4fa331aaa3d6e4f93a3d9d7dc949169042ff821031aa01a3ce0060f3481039ac107cdd004199009c67abfdf6b3118bc0e97c3ed6ff0e9ab3d8d06a8073ff8c10b16308001bce0001738c00d7e68001fe8396e8d60f82def96f12f69363aabebdd1e97a7aec1d9046511e41a6e66b21aea39e15de0813a6800273455387d4d0d1eb7265b6f860a70820f9aa081d35103d9a007f33364c533bc52eeac6b76397c500e4ea883664e76df33f029f4b8fd9a3aa7dbe973f89d359aaa7d9ab5d51e9bc7e3d64321f78e1f3450074e7073ba3ac00f4ea8010d54c13ed0c05a8eb30d3c1cad1ec27147b37ffe1b0000ffffc961426180790100", "23c8141a5c8e490871671fb7b9595e7e": "1f8b08000000000000ffd4573b8fe33610eef757b03b1b487109b0552a67cfc501c10149ee8074122d8ee4812952a1467bebfcfa80922591d2c8f67a1f494a7138df3c388f4f0fbf6f375fb7e2ebe6975fb7222559d4a958dd0991a24a051a82029c30968469b41695c352baa338c051c8862c9acc4109867ef02a4696908a47e9b2bd74ab9feeefd7ed71e64012a844522a9424202c61806c6f34955abe71b7fef92ef6b2a646a17d81a358ca0252b1d376173b92ed213bd44d194711df5988b271fa5d62cf9cac40254850be200384a4b92814d499c38ad09a54103cd199d8bcb79dcfeda79384a660ee7545d51fdffff8b13b2ead02cd09a0c2da2a18626a0f0ba935b86392a3868517e8af44de0ea88fa8c09e53ef2ef0a176159704897e8dd7f53772eb000be39f691598590b0739383019d463c1affc53afb9a200037512746f7b32f39764313d8bedf75a13f32dfcc9bab04628d040201e367f3c6c3e6d673027333148ebdcf9006e2fe74ad23e7ef3e7f7f5724b90445fa8b7b503a139e2c9cd1aff662d34feb2efb85c5b494135665641c668c8b64e96a4df51f9748496f780c59ee2b3dcc9125cebf5687787d41d8575f39f2aff79012ed453524a7700c7f44527b8b13d4665a64b7a9b6fde2c83a1d75c01f1e3d59059a3ea5375c4b213743249d904801d42af5d351357161379d3b49b67bf02975b57faba8aa6d6703e0b984d431c42a81b7b339a7bab30fe0f348abe2311384682a62659385932b21d3ada4fc632d0de608674e4c89a6d0c394e02474832ab2de7413f5a67821264dd74e9aa19712e0f9010b2b24c3a0097683045b8d8024a45642da75921b80c4dc1c9a4465903efcba375e813b5b3568334630928c865a3497cf8f8e16d186d47dbf0df5effef33ac9ed9acdfbe7cfeeddb567cfef269fbe7b007933e9ca431f85703a9df32c14fd118ee2250c7177dda628c7ea07519bda0cebb31405cf42298a42c5434a238b8130e1a054fed924fac49bab9e2f54f6bbf9b340b5a7d4a23c5209557ea8e0576f929628cf077ce230554ab4b67fcbb1772a425c4e15fc0e3f50b7a7c9b9e0e0dcce32a9cb13d18a4b1aacf6271e1f5d5725d5c11a563c39b92be6ba29ca1ce58e232fc8c135e6387cf6740e9aecb68883725642cea942af1d8338633f7972341177d667163dab4881d33a48bf8513bc773e45c47c70871533f6f1a0d4b6d9ebb70df71398b87e408349bd611d0d9813d82b08336020a23fb270000ffff63f301b91d140000", "339a727528e3298edc3c530bab281f90": "1f8b08000000000000ff7209f20f50087174f27155f07453708df00c0e0956284e4ecd4b2db606040000ffff5fc721ac1c000000", "3800ee68695ee950b7771512522338b5": "1f8b08000000000000ff548ec14ec3300c86ef790acb5c61b0aeeaa12f011247842a93666d441b4f4e86b24d7d77e4e400f321077f9ffffc37038071664943a0d5610ff89e28cef8a8e06ed5c31b4b80579928f8ab93aa78cb21620f1f0600e0565e8d14ab8747fa5161e72d17bd327f757a825d9bbb160e4d3e34d0b4b96961dfe57df767a6cba9fcef579adc737ed22c2c7033009fa5404c246938cba2e2ae961a7d3c2d74d14d4c14465a38b88ad2ec5637585e58143fbc94a9ec8becf7247c0ee33fe15806cd667e030000ffff0309d3792c010000", - "394ab46ed125d9f5fc0c3cc23d5931ca": "1f8b08000000000000ffcc7d59afeb3a76e67bfd0a25071b38bb22f94a9e07a4509d6aa43b406e1a48a59e0af78196685b7564492dd17b388eff7b83a406925aa448dbbb139ce4d6b6b826926bf8162d4b933aae2efb3dae82f70a9525aeae6551a7242df26d853344d237bc2bde7075c88af7ed294d129cefcea83aa6f976517e78e1ed5b27608fe21fd7435620b2cdf081082387a27a4755d20c56e9f1446ebde2fd859022bfbea709396da3c9e26577c294641b85e1cb2e4b731cb417a661f9b12b5192a4f9711bee08fe2001cad263be8d714e70b5db175582ab6d547e787591a589f76db158ec0e454e82772e631d86fc739dfec45b26302eb2a2da7e3b1c0ebbf852d545b52d8b948a138c8c8b9ce09c5c8377bcff9192e052e32aa8718663b2cd8b1cefda8176b1823aae8a2ca38692e2129f5ad12dddb142fb9d342fbe009be54bbbc0a147172349eb32439fdb34674bb1cf8af8c76e749386a64f920a1d8f697ebc0296ecd3fc28b01074acd97e1eabe29227d7fecfa0592cbaac9d11685f17d985e01dddf76db8633bbc0ddbe9d1d909ded0b205699ea431224505c88fe3b85910ee055470c0fe1484ee7e5219f8631b0e6d1114c697aac239e91403eae8de7375d3f2a35531a32a98e645f8d2e98a005dfdcabda5f8bd2c2ad287514d104963c9a7f57b55676922c660b7b2c25a48d1c117bcdd4a52a1bce19ccd66e7dac3a8c64171213bed88b2eb577179875ec63d33d8178414e76d443756e2072c1f2e76288560c47cff94121cd4258af1362f682aeac3dc6314dac824e8b83dd115bdf63b34d4399fcf151e7420b8ba36c1b1fdfbbf07dcb99966b010fda05902ee917484e79c8014254b894ddea1936c46386b37c4b6a244d4255b0a1e30208960754af01958e03641b44e70c8f04777917d684cae1abf19aca69801594ead4f2829de591aa5ffcf26334cb6f21e2a867a7589f22b98bc5a4399309a440fcccc00e7c90ebad6fbfe6df28eb28ce5d80c7d0ee3b83aeed1f7d0a7ff26ebd77e470fe9074e767487423547357b1c4af1cd5625c06f3827b59cde8538922e1d8aeaec4d164d5ca5b91a744ec48f11f9a3ba6e93b7b44ef719be16258a53f2b98d6e139e8bfc6e089871436db24a43d28aef14869d0dc12547797a4604274373a0c1f036498a0be5ac6394612022daad9cee064bb1653cdfa7af3be01298aa646d5e7a3e8a96d431ce71c0bc927a3d2bb628cd71751d0fcb76e46f979aa487cfb650b7e1a5b93c4cca9ada60ebb2a36eaaf53aed00ec8286d5f2ded20417f675afdde1201a0a6589aadf87a14c110eaec270d79788aee82c3a3cc6d47549a2f7906ea9686243154551498a73f2fd54672c07bdf894d59f4c17afbe7a6db97815bd6d7bb70c159a0f92f4d8f2f0342d816c697de6c35adda1d3194ffab2f87d7681d69ce6debe8eb2bf78066e4a685f68c5ada56227c72a4d784949cf475fbdc61d47e326c5fe6f3826c12125db982e952af1da818cbf4bcf14b6a19c481d47d8af7093ae86f177fbddef7ef9fddf7979519d5196fec493b8aebdb7f5249c44de7f7abffecb7f78ff9ac638afb1f79fde3125a7cb7e1217e75f721c1719aa7f91f97effcb899c33794326d1a20f66569ed39f3840094d10bc2c9e51dad75a56646fa7e82ab439f8dc6edb64b9c2672fbc9daaebbef8a0c374fe699e9214653bedb46f6585b9c0033aa7d9e7f65ce405c36b7ef797e828f87c43c3fadca8b9a1fdbefa2b4949867fbb3610a87101566cd924131c1715622b7dc9135cd125919701a2f09282105aeb47086e7bbf2655911fafa2b7ef8b2cc1d52d2e12ecffd8277e8dcea5e3aceb33ca3261e9d7e1cbadbeecfdfa520a57578b17c5cf8669fd0d57248d51d6c473bb76f5657f6de365325d509597f2cae26b423fd102d5ac694d3e33cc96f4c69b6c3fcdcb0bf18b92d06d297ddec0fa74b150859134d5343fe12a2552f4abfd38f5cc361d482aae03ff6946b9c62bdb9ebe023313ff4a3e4bfc8f9cee379f7faa708d49fba1beeccf29f9cd6f0e0c3a1859961855288ff1968fc892b6dbe05cfc0c0e457ca98334cf7125c9d60e37da80712e7838305cf6be89516cea59ab343fca068163ad35ca60638a7cf55a5c08dd2686dfb9bb7bffc408ff037f90db21c5595263d225bfc96c81cfde64c5febb642e95e123a67d7f9f21ba306dcf4b5aff68d30e41343b9ed1472024e3feac46eef068cabb955571ac705d5f359edeb965e74ce8428a6625e3138e7fec8b8fce53509216bf692c56b721bf9cf7b8a27bdbf810dbbfa02e696fcb1d5543585c884cd836cc82693546557cfa0d72503a25b6febb668f82e270a831d906d3f24366ef75f20b42368324b310ea790e2945d66556a024188b1716e2ed7ede124c509ad54a39a92fe733aa3ebbab595a1356426f7fe5d0e3379fe0739921823b1a66d21f5bb53ff0e7a142675c7b74f5fe073f580a5fae43885e150411fc3d4cf05184e9e2e51b29f48cb3c506666d066eb73ffe77326692e1379c6df3827cdf66a826417c4ab3e4f5aa9cb54c16153edf26275c1501073d1d2a6d5ada21ea6a9b5cd6f9de2671915dce0a50d889fd49b047755a6fc39df441a23856c53bc588c2dfd2787daad2fc474bd17dea72cd8a4f839b524fd23a3817fb34c37f682ed12b39aaaae2fd2acae5e9b4fb6b44c0e192652676e948c128899c2a8c83ff7b4115c1556d2173b51815f95e04e49456898db8e572b25c2e9763324f283b58485b8cceb7c83137ce42da6c3699cd66331b91cd025a089d8eae1f9577480fe464236d7c83df0b2ecd6637e696fe622d70392af0505c2a7b79ebf10d66f546f56bf15073dc835b19bd238bfc962edb08619e2bb25bf828e7ec5d5564b775ca5e46eb9ba2140b2fec05706794d8adb7a1f73e917fdccfa46d04248c3b562341f42f51c0b8274536fec836c3763722d9023bdea94da2e72eb9b2b4632ad961cb3c7b4e76e326cc1cdd716e9faf6d77630ec5d528f3c2268d464edbb19063c39279f99c7ac84d583aa6a8958d72b7e058c9265832afed3186ed76aca16c3fcabc790a766a4cd83816ac28b4c9556ee1118572b6b2e48e6cd2e6c62d40223971da724756a9731c23b75628699332fef18c931479755c619c7b284fbceffd09c16ab92e3f5eaf0a6e6f14f8837ea019b0690b1459d7e15486d8de42fcd04d653c6f2f42c5482d86b797b090e7d281217b092a5252b0babda0e9622083010a0709e160453924b1173187f6d655c852162260237b196b656320bcdd4ad364311063433c901b09b81a6251fd46c1d2100be82803fc0c71aa9ea1606690055ebe814768e0b2061b838b0772017bae81c52c853af885521fc4cc096a02e8a7f6ea06a855c4b7903e9061767f166870ac855bcc9d7316b88a7383efca0c0b87b4a2d652119782be08312cefcfeb0dfeb408e59583128333ae405510c3dab9de81cbb8366436996173778d6e71a345e28d42879836b8632fc708133926b457390077120e8454821c914b2a09419f8ce03442895bdc5756694e7c09fda57987fe360afae3300f007eecab25e202fc7c15088e8bd04c562edcbe1e3e5a6bd0c2471f0695d68275a0d25741a6b5441dc8f441e4692d760479aad25b80612d5f074855c11c84d88bd5a15475e31af8602dd8805d870ee72a5c8f697d0dd4b5166d0375fd512cdca873c1c290d041c0380065409e18280ef81990340810776cad91aa048603f2d6089402c205956b3644762837c8ae751cbdd051440fc8041cdf84f77d09fcdb478a0127004645a0295043e04bdd817d95337507804153c820b863f0a5f6e1ee9cddb40f802d330b7f9ffb527fe15a99e0fe02b0656e8869a5e7f0a506c4be36981a10c0a205186d6053e24b1dcadda0a0e950005b96160974e54b2d8cbd15a61606b06505da02b635bed4e3b8c22fb8c7012c5a1b0a95d2f7f85213742fd26c9b20c0968d45158e425f6e93ecb39fb14d82f25f082640b877f2e54ecada2a7327055905a6654d7be5cbcdd6ddfd47d76c4106c16959ecc0e093f7285cafa0a377f64b45a801a3d79d0ede3987d5b9fba8f0d163775b09da53775b01da43775b016367eeb672b447eed602b427eeb6124c07eed61ba23f6fb7156175dcce85399db60f59c60edb871c6367ed430ecba3f621e3d8493bc03176d03e64b1386707966df4987dc8333865b7f606d3213ba0073c63b755663e621f6ad39cb0df1bf31d1a1e7386b96b7ad21caf6bdd553d5db74e21c6c375c0ffe0b3f57bb3770752c7027765afc278b00e2882cfd51d0b9ae6585d9bc2d453f53b2b708f1dc7d22bc573b6116c3e5207625873a26eab70e4407da850779e6e9d36b4c7e940cad062b9ee1c3d0ad7e06d1409ae7f90a204d05c33e284e75a1e2b4467a16014d3d9cbd0a23a7b115a5c672f620cd9d94bd2623b07115a74672fc384ef1c36478ff0ec855861bc569c13ca8398c6701ec43386f4201e4bac07b18ea13d90670cef414c16880f5cc251cc07710d509f838798701fa80b447ef60acdd80fd2a8417ff7e78516ff5938c8dc3d916930a0c1915514e8906a8c3810f44b1809de9ff15b2c6811dc2b1735463c082a8311a17339d4604243c25351e1dd55bcc3851629390a5da2dc8c0dc138d7a0437ba523f81052aa43880ee9458b11c1d4628112a7eb104289ef698239070014fb4127ac28b059c1453b35a388d1498c16343a49d1e246272963d0d14998163dba49d102482731260ce9b65d7a18e924c70a490a129dc0a4866f0c4f6ad8c620a586cd12556ab8c780a58e6d0c5b6af82ce0a56e514711a686710032ddfcc78433751a41a8e9a4d68c36357a3580f3a16cd2624e3bf799df950735c8d3ecef2af8744b5346fca9f35d18823e543f5a146a9712568eca8c5854a71286a3f7d45a0d2235674d15943e82153a5c6a97e0a3d0313798d1a92e3b6800aa93ea118caa51ad83a96ea9498b547569c902acce575308acd2ff9c1200a8f2012790dab05801d471f1a3e0d45a8416985a4bd082526b096380d45a90168cda4bd002516b1126106abf2d7a006a2dc30a7c36d29c8027c033063a019631c009b058824d80730c68422c632013e0b10098d0e28d824b8069002cedfdc2042a214d20a0b456670693803e0d90bc3b0bb42072dc2de6ce394b031ef5beab0247fbb462048d902fc280f1eebcde82c5f1505e392831824448150c105deb9d061cea339b0a0cefadd11d281c4fbc51e810d366300845b506085aab1c0181804a1d00b44f255af007a51106fc1a6af96133017f2c98fca072e5227fc2a5fcf830e17969adbceed1980ae5c8e3d580e792f107e8e27e1d9c9ed32c893aa232c3b53ce7509e6d28ce3384b8db472e3452b6e10e787a2dc468fb68398053bbbeb285cdef00471f792d335d329266692eff0491bd8764cbde00207f9478df069bc31f1c9f127caedb8d195e72ff5d225f3caab239787fb598a5d30d1bb520dc46b6b40ca84a117b587bc0affe2f546e43396e98b3c5288bbf07d1efdf50f55da07d7d959d504b066af55a876cfc90ab52795b2f6d54a8c3a064fa77284f8a7aa8c3d34486e2badfbbaa52ef708aa1f0f6fe6e9d7093d891bbb3b5da8222cf3e2d55ba08e7f731b9cd04726a596cf7e5d75d8207d398ae4676a4d1e7b248ba6fcb00e9e219c95db207139aaf225b95f7cd493e540114b4657f2057c712297967ba78344a23304a1bc14f08d4080c5445fe336335d2c7aa49ab8bfc61b85acd672c622338625d64bb066d64085a3bbd23711b69e3d645bc6be846e6d0b5533d12bd1118bdad681dd754217f387ea770fc3e2b7ca770f87e59f44e0dd1fb84e09d82c1fb84d89d6a62f7eb42776a0add2744ee541fb95f17b8d391c07d42dc4ee1b83587ed0cc2fb0fc5ed0c8edbd5b302770607eeeacb227766885c835617f940e8dacc672c76679ad87590ed1abc3353f05ae91d89de993e7a1dc4bb86ef6c247cad548fc4ef0c8edf953980e71279f468f4cea1e88d9e14ba732874a3af8adbb9366ef52a5d840f82d6622663113b0723d65eb06bb8cef5e16aa3742456e7ba58b597ed1aa87363a0dae81d89d23914a59131441732ed137adb0518a5cfeb6d1760a07e616fbbd0c7ea537adb0514ae4fe96d1770c47e656fbb3004ed537adb85366ebfb2b75d9843f729bded028cdeb1de76a9903f1cbf4b387e9f15be4b387cbf2c7a9786e87d42f02ec1e07d42ec2e35b1fb75a1bb3485ee132277a98fdcaf0bdce548e03e216e9770dc9ac376a5503fdedbaee0b87d5a6fbb8203f7eb7adb9521729fd1dbaec0d07d466fbbd2c4ee17f6b62b53f03ea3b75de9a3f70b7bdbd548f83ea3b75dc1f13bd2dbae25f2e9a3d1bb86a277faa4d05d43a13bfdaab85d6be356afd245f820682d663216b16b3062ed05bb86eb5a1fae364a476275ad8b557bd9ae81ba3606aa8dde91285d4351cae54e88f8806ff176989a5498c4a71d74edbfe2f59074bacd8b545b727aa9b9a54a1a3e173f7563c2653e77ba3e288f714d8aeab11bce546916779e0d582c6f416bf944e1f22d5e2d45892a9c0beff15504b4afd595efaf4ad20ac7ec35a1dc5d76e0d5a1943fc886d9dd542658ed90ada9a2eebeab46bac5bd65ad7dd155bdafba1bf1bb3f8def3eba0964839ba6dba1d955b8bdb9bbd86b30be92ed26900d6e606e8716d7c1adc6dd50afc7f8a2b39b4026dc46dc5e5c5d07b7fd7643bd06e34bc46e02d9e096de766873156ebeed2ef61acc2fe8ba897483fb6bbbb176df37c3e58a849d37bff6ea26d20977b9f237efde9d4cb56ebbbb233877ba3b52d9ebb5833d26ef18e7831b53a5513e1f6f92a3b73daa8457f537abc04709dad7de25035ed2cf29e83ab1377b0fdff5ffed703834af0aff1685d132420a8b87788cf39750bff20f49559449f1ce97b1b946d0f1d557789b97f74baf2257e54f484a327c35da30a92f7b91ac3aeed1f768e94fa7fe74e94f36af5a06c57cd5c09e4e32b535c30eeb2922f95e05679c5fe0f5be0dac6d58e86a0e2c6cc6b234ff01cf7e359cbdc0c36a5b4cd2376c92bc3d156fb852299068985e9044c62541139fd27f665fe39e8ce45dd815258a53f2b99d6c34f4b0f57c304b7bc33d746d6545a028fa715f7ce0c443a034fa9114c723f5ab118f55c4194c1485ea564fd9f268b8e5b23e79d65ab510b19da5960a406aad8b34fbdda431f9a2103eb2323e8f2c11e5a56774c45d36cfd21ca32a38562849714ebecfc24d828ffe37bca4ff7c2ad35b452fec8fd7dd408cca1ecd233dbb5d170d4e409b39fe0b67d3aff53e43f10ffd9e41dbc358eeac1f9cd75c3f388d5c3f0003d4e271aa33f43df4c3179f4206b97a281cdaeaa1d2c9d5831ae1563a1a79e6d2d1649a81b560f590c784eaa14e7f359cfe48f91852a939a3d9f9b1f20190697343b80c37a1c9cf94da41710d54382462d86edbc2215083854319570b876e0e86aaa1917847d500f5e992ba05b19da5960adcaa06dd69b96418302dd3747fc908c3d06f64f22c19ada7e174ef90677512dc0a87348d070bc717cea95ff72c3d9e08b4790bfaafddadd992fe53b8eeac209cd75c41388d5c41601bc00e6431f7f9ff49354461d0d610954eae218d196e65a41139d281b02557f7465346e431b509e91760355c80912a32a4527348b3fb63550420d3e60abca6ffcceea614124e04d612891eb6deb69608d4602d51c6d55a629889a19c6884de514e407dba6c6f416c67a9a502b772d2ecb75c519a8b7204c9faee2f2ac92159271bbf117b0f78d749702b2ad2341e2c2a5f38a77edd1354412d8979b328d39d2585b19a2b0a23515a12c8007d53b2594e22a52b9139b4054521537a126e855b3de112cde5a4493daab560359186c09ea499fd6a30fb916a3220523308dff6b15a32a4d2e689e986fe337a99da9270ac035512911cb4dcb68ef4c460199187071d8976128622028bbca38640da74197e9cd6ca4c3bf18eed08df65a52331c25caaeefef2111da24d84fc462a4f94f3e53c9cb9645b8310b72222cee5c11af2e513eb77a0acd233aa3ea173873089f653f0dca161bab398b4dce67ad252194eb93a128773ae018fb6a80c291f3debea249aeb0a5ff8e11e694a8b3a6a79e205b1418501a253534ce70f63550624d49f7c85fbf526367aa0e5d99742aeb3dfb6d648f460b9195018cfc074f28c763e5874343a7585c18adcd65e6b254f3c0f6ba24ad5757ff509c30d5ec67e2398e7d730c42bec7680a415e2567d94e93c7c32f6c573135bc81c6c65a6ab5902c73ee5b8fb682c1feb631889a1e8f071878a2333180ec5f2677eafc2c58d34306c8d6faaa99ae3b0dcf94b95010f54120644c31390dca27f1952e9fb97d97299447ad7b2ac29222d68b3fd09586eea5ce461631d0125e96d7bb08240daf4075363b45666da897f62d568424452f440c3b258ade2a5df486d20f96cb9c40b175caf17e27aea953fad61f9ea89f53b90e687020aea7013630c0635e5b8b35e305673bd6024867ac1c71dea85cca0ad170ad9a3f5828b33d70bbec637d554b05e484396f562c00325fa01919a38f8768fd58b2195fee69c687dc073bd6b59d60b9116b4d9b65ef4c460bd90878df50294a4b7edc17a0169d325f4715a2b33edc43fb15e342122297aa0c598a365b2f21ba93c23cea6ebd5c125ad1a84b8d50b712e8ff6175f3db17e07ea4b1ce3ba067160122d4330ae1ba63bab46cb6d2e1c2d95a17674240ee563c0a3ad2043ca478b482771a48eb0851fee91a694a8a396d50462832a0144a72697ce1fc6ca0a48a8ef44c27dbc581a3dd0b2b828e43afb6d4b8c440f56990185b1d0e8e419ed7cb0dc6874ea4a8215b9adbdd64a9e597a7854a9ba1ee856a6e8303df88d609e5fa7319eae910ba8d70b71ab3eca741e6d58be7a6ec2bddaa8cad3fc086e67922c563bc193439ffe937fd8c0d9effd354ac33df27b94866a32b8d1cb601078635843bf31d1eb7f9932a094cc560c72fc894a2b7bec472a744b86bba7fba58a32aade26665abeb19faa0074835f28b4be31fa731588d0906692f52cb1f44bb940c9d4f00f586446dd9cac7fc422d283a56a40a1942aab191a8a9656fe3dbf6981756a7f7462436e6bafb512a7a2a5788454be9431390655fdf717b2c3011da673bf11dcdd508556a143b2370871fce98b3c9d070bd997cf4dbc59233f6af2c56cad69a438cfdd779d31e6b1fbce1891a18b6a291c9a2895c570e79942f8680bd50a1c2b5374c5077ba3bdf94c1ab4ec9f002ea8b40064c33b90b8138cdf8336a43314a9e830df9b9cceb27592a935b6dbdf85d69383c5482530b64d1a69261b1fac3fb046fddd62e3d496c6daaa7862c3d40491a2ea9132132e9691dfc86db3e862ba5839a562ad10d7dbd1c4d93c5c65be786a42db7a4659e6b18fc1be483ebbb7f7480feee8deda430af5e189364ff06895518ecbd9a06da3eadab83edaa9fbb60d55476c9ad77a30ad357f4a4e2b813d47873d4926784fc929e03b2a88f4015270f884b2c360d8ed5555e34f8e7030fc0f93b8c8094a73315180730029c1e90894d7273c02e80668bb0acff659846f2768c6224d147644c15b9ae0e24ad3d6212bdeb7a73449da875ef0318f53b4ef4bdcc972f8e7fef91fbbb2a853f6080eb4af8bec42f08eba10656c27472a94d787a23a6fd95f192278967c0f16e18bcffe13beeec649440b593aa674cd737ebae23ab3cf54cd3ab47ec39edcd1e8e058ab7b29dd30d02da43732bc06b8d93ca507e2b37c34926b5ae8a668ff1416c777fc394d863f65aa7b0026e33d1405e181169c304a80480a85480a6f6ab6310b68822b94424d143216b992be9a3f84a67bded4acc267cfe032c387cc3512facad0c9da08b2443296d53b2a96b1bd6e05e9dc615882e8bf1d60a8b7641a32fc8633c784fc9487ee30c55e5c24b87da60eade2977a3b2f3fdad1f47cec3c36cd69b50ff8b3d8da47717183b7a4281b9649f70e465fbde0f10becb167da41e69936c16b10fe0f922cf965961a36d67f8c84bef29accf61967631227ddcbe15f477ddc21ab70bfb15da83f3c62d54d607e3674809eea872ea4d8a99f47d21158d8956c736f6aed67df77ffbe74951f36a8ef25b52a5ef6fed73dee7410468da7ff7f5c4ad108d1e31922caf047baef97a8e2700d267a7a480c4c1a2cabd6ae917209acff93f2365f5a822a32f0c17ec8c59d8c59f08e07c50b33b6792f2ce4944f58219c27f0fae03c719f8d6da5b94df6e52ca05099bae4a5f4d8e7b22829a20f084505c467d74ee49cf107eb5ad110fc415085913f61c2bb1e066656685a66f1c180d60a3a66a1d3982ec2f26357e13afd89b76d79bf5146cfe20dd08bf2c313de02ed4561f9213c715312a3a4b50540d9e058c1e406d5cb6ff1a64025c104a559cd0f247a06e0d5d416c5a8590bf6f261d6c2798147d7e575f71c371e29349ab9501836297145d70657d7c6c8cdfa65d7c73ffd54ecff8663121c52b28da9efecf605cdd828a159dde39be27d0bc3d0aca92697242dae5db72baaa19f24358cd14211ff5f617f3a202d7b8a96814745f38cc876731b5dbb9f419a27f883760936fcfc6fc9a51a9f75e13fa4190ed2bcbc90360837774bf0b89c3e575df21a1361e1ad64f3194d0ee8ada8d823eae8c5342ef2fec879355bcda4e54e51561c5b4f9476451d84f2d220fdb4c39040613ab3d9dbbb70ae310de9b02358d4bd9efddee8a3e6b337c10735cea8873773e1f33ee3fcc253b86ef4da4f6f1eb6d36da268c62e7467400c867589e93639a41969164d2a011541d9b53befa9708648fa866f93185549d0f6a6ed0be8e5fda12b512a0762dcabfaeddf41176fdb6e03f84c69a33d6c6ce3184fbb0376f1dbddf5ea958a38173f1fe1bf9b9505123005bf2d7a56d3ebbf2d9b6d26d3177f327f1dd127cd575436b210ce9a20254f91bf2f924f4f589db82ab28c66dbaef695254615ca63cc9f54dcc67ed9154e963674720252c98f57942c88ba1b069a6388d020e87439efaff1a5aa8b6a5b16290b6b997b517eec349aa68b57f9a4346d1f685c54de645a7b18d578a71d19316bfb9ee649f11ea439ffca4a3bdf857ec51b49ea575dcdb779d3b51fcd167e34dbf893351732443b14b578a117ee0e454e82033aa7d9e796ee608683fab326f8ecff5396e63f7e45f19fd9c77f2e72e2ff191f0becfde55ffc7f2ff60529fcfff3f179c4b9ff97fd252717ff4f28a7fe9665fe3fa715f2fe8cf2daff9f559126fccfff8db3374c61a3f76ff882fd1ae57550e32a3df4699bda529f8b829ca88d282729ca5254e364c7c2a4a83f549a63853eeb186578279eac8b5bfb6d1a4ef7b3d98d9d6489b3ad8b4b15537093e0a0ac0aff579c6785ff6b91a3b8f0ff54e47591a1daff5371a9525c79ff86dffd739117ec94ec36395669e27058cb2a104bed55f1eef54549be7457616a4e9d586c7164152a50fb859b3b79475976ede16eeb137c949fdef09065f876ba78f1022f9a2cf0f955fc8a61bd60a54b02581c650dbec2e8e472d56d2d7f115497157e4bf13bed47aef2eb1cd86962b3a9a12a7b27184ac185f70fde9ce1f04672306d16c2637fed8635927f6fd1a81760ca002577d5972d908206093a4ad717e2c5eeab7c5641c5eb4de8d2041d24382e2ac48c63595362510bff577d3f203911451f328690601a5d560dc4f832f38671a4c410fd789bd075cc8fc1424c8adf0e87e961b6e906e7d2205a4fd1147583337970b99c4da36e702a0d2e67f328c2dd60240dce36f3fda2d7b947b9f8e563ffe55a551044f0f760b64cf051fcd64d199043a3dd8d65f9e1cd6938b2b4f6ce63651e86ec0bbf682efa7df75d207fa9c87c597e0837ccec324ca89fd1e4c6b6b9ec378a3929edfa0394d0dde15e1a9c6bcd087c95a7edf427de4ed68b5534c76729c0a3c9129f392bffc6a001dddfda86a6ffaef7dbdfdee9524851a17aef4e78874359e12b7bc6349b1dde9615663737dcea12e513b6a072e6b9f5bdf484f5bf57e18b5df1cb578ee20544c5e6c79286d84229d2fca6816e640becdd662dc21701840b14152e31a22bdafc25aa91a4f6c510b490ad9bc89c17edde8305a2c2887634a78214c1116519ae3e83f60ff625d0b0e7bf7da3e92e4b6b22ec537b48409bbb3691b2fdfa92974f40267893ee5a55bc8b8e334e6d3816f8dd2fbfffe67140f12b2acb343ffee5dffff51fcf28cd279bcd7296c4c97a129f2ef98f495cd793332abddffff2ff020000ffff8e71a0a8d1f00000", - "3cf24ec5a4892602dbd1f8840adca115": "1f8b08000000000000ff9493d16e53310c86effb1447bd1e696c277102e21178028426c789b533d653d4730648089e1d6dac3740dbb3fbe4fbf4fbb7e7fe60eef6f6cbb1abe85dff20d3687d5e86f7c3c7cd30fcd80cc3306c8ffdeb388f8769fb76d8b279622868daba959473f0e081b917dfb346dbdefcf9f3787c787abe9b175946dded7b1b6537ea619adf4072278aeb8765bb19869f37ffb761840c1c90d41b836fb5077fc6a0f3bcdbcb38b95212356dd9e9dde3f4d9e93c5f325833b526d84a856a04ad463c63b89f77c7c76919f7fdd7b348630c4029bafb8b86183d564f95ab67a59c0dbd319b8454042cf08a89a177278a5b16bb98a714d2c6e2b9d6ce08a949389f075d015f51055ea675394a40942a39512140d19c4ba380de2326891afabaf24f14f7ed6017b3bca2fdfb97f2a98b0f46b42a8e64ac017cc6ea8331879691809b59ca1c1a9c9bdb5f714e94abcd406d990b831061d78a508328342891d884d6edc18972ed72221a1ac56a2489a24a2aa997a84aa40668b272eb5e2857ab7ac5da3d1d2a3a2a81c0475877a5b5875cbb700e8625c6449e7b11b55ed45ab47f54e3d4fa7777b7ec1f9ea99b4fef7e070000ffff1ecc5622e9040000", - "52c4ee63f22dced28e43d926a024850b": "1f8b08000000000000ffb4fd0b9824477d2088c72f2232235f5599f5c8caaeeaeeeaaeaea9aa99ee999eaeceaaaed174cf03e621a1996240334278242464a05a0f34c00a61c9f087c25e3ef137b002bcbe73d7de9a4fe2b1b76b1ddfe296ef00df723220dbbb9e5adb0b7e80599bb5b9eecfd8e6d65ee3337776f57d1191999555fdd0c377335d9991999191f1f8c52f7eeff8892b172f224008c1130899fcfcf873484504edf1efcad5e3cb088186107a33fffd87f4070ebfe591fbdf89103c8010fc53fedb6ebef1cbebf73ffa4e84f05f2084b4e0e7acbffd890e42f86f10ac77f9efb7b567defec0dbee7f2b8287de8d105ae1bff4dc8d5f7ce081b7dd8fe0a167114287f88ffc4bf2f6071e79f7e3081efa6d84d86dfcf72954b9f7edef78cbfd08fec90442e473fc77eb27fefaf38fdcfff83b113cf63c426896ffe0bb70e3c6fd8fbc0dc163df4508ff03ff7deedfdd5f7fe73b1e7d3782c7bf1be613ad25b0031f470a4270193a08a15b83f30f511efdd3782f7411faa0839efffe48d79c45e8cf106cecf4500736107f0f624f67c59104bf2904c199885c5388f2fe436f406791827208d02c3a8416d019f2cf67e7669f2ddd52da984b976979befcc1f247cb1be5df2aff7515aa6a35595daabeadfa899a5e4bd63235efc8ffb6b5b36d6f5fda7edbf6dbb79fd8fed4f6bfdefed2f6bfdffee69fa19d7fd8d909ea7108cdc7cafdf85cba8ccb4746ca55f628176dc3b6bb7d65fb81ed776cffccf633dbff76fbf9eddf0eca859d3fddf9eece1feefcc6dfbffb8fb7fff8de3ffa4f7ff4be3fa2ffd9fdce5f7de75f7ce713dff9d0775ef79dc56fcf7e7bfadbb96ffdf05bbffaadffee5b33df9afc96f7adecef3d523856385aa8150e15e60ab305a7902c68059cfffb89df097ae5ff8b7f80606707d9b1f23142ad5b008d8cd78bdd6beff460037ae8e711aa2c426dd75fb3b1d23a0dfc6f79c55fce7945f0fc788e66a3ba0073ea342481857f6e56e4dbf5e7e6d4284f79aeca5f2fc7b3bad9dc2a2caf9c02f941f1d76c546bf0949ad0b5ac61e64ccb33cc8cae251555a184ea8a62a98a499313a691246fc03a6369c39c48108dd866c1b0a94e9379cbcc308d298a92d4f48c69e42c33678a32544505aa5083a9498d25d4d4946525f11d4c55d3a659b0d524b3cdbc692b86929cb4acacc6344579afe1a8cca08461a260a210aa2934a1a926a52ac6044051d4ace34c99565a6306018069d3b6cd2900c03a53d38639e924f386915255835295104ab04289a62a095d4b288a463005008d69854caa98b05c5d4b508c61dab06d631a00a8c9b48c651553c909438e5f61a7075bd043e711aad46badbae8b1f29ccaea4c26a6a1565f84f29cca47a5eeb1ba181f7f79a5556fc9c429f09a45f09757445f7ffbdffc1b85d90665e4b3b669da9f258c1a3653f6be7bfce187a8c90c1be3f52ff2967e711d63db60267de8616232d3c6f8812ff1ba7fe90120d836994924cc6dc126b4d10c429572584b59c35508eb24eb03bd2eff5e971712a536bbfc5b5ddb30ed20651a36c7423b3d8ca08726d1bde82d08c11c0735d5cd72d8caf9cb1ca0569a0d0e7655761a0268969099e590694b209e8629a8979b4b2b67200241d18301e4d6e6aacdd3d0f27cb7dc04d43cbe78319bcd662f2e1e6fc6d23f6195b2665ad793aa6a104a0821ba3a43140068103a4319064c293535665245c140f032c6c44e1c6e34a0e7662f1c5f6c368f1fbfc00bbb70fc78b3b978fc42d6fd09d3e0e5286a42638eae3b8c25d9610e464c31b1e5a7e83c072b4d61864229a58ac508d6084e4f1bffd5f7f9ac0ffa072315211d4a90296500ed208c065bbd417f037a03049d411f7c095b3de4430710b210aa64d5f25cb5d9e038c085cedafcfc1afff516d6d61678526095c24e1ffad0454fa0f7239489f7702bc417512ff2bf70c8b3fce486573184c1a1940f5aa3555bcad623a4b10835091d0bd0e0756a8657126978f51350ff9e51703447634995a8649528d49ab4ed9233b190c9cc5a892cc318ca1ca8260126f9790e0866d9446226935998c8946d67ca02386dcdba4ede34534cd1c84f7150fb08c06779f67f4198a2a6cd3f839aaa124c340533b2861936928aa268ba3691b4cb59c554388c5246898239f02a96929db3939eae69aaaaa44c00684122a1aaaa63b094ceb36015538ebd0c5b4f31c351bf3002d7b368fe45e09a0365a6dcf49be5a6effafb82e7954663bde7e7dbfefed0b6eefb837e61337f33c0335bb0056d4ec7544aad10cbf019e366733310e28fe35012e732f4079fb941a86da83ae9114a498fe8aa61537203eee11db87983188a6953ba417545d5e906a5b6a918e48698cb1c476cc226745105a18a849be05bfef2ca1948897333e54578ab0ecff6a8a6aa1aed11eae8aa466f242d2b79836aaaee50f2c71b7c466c504db59294de187cc6701c03eeb94169d252358a76b5b116e2cc192889b35f62c3ef07ebd21f478d1a7c86370aee1969f2b3c34619a61d6bb0aae874ac8dbc7d29d1a76e2af66dd1bee07be53af4c6db156f739752deb98e630c3e231aa6886e955d6c25231a0023f0d1ea581b0f1cd25d2dafc3df75a9a69a494aee1c7cfe4e4293a6aad12eff58741fee18b9ff6c37b8baf3ce2047978fbc782aaa7aed9aa8a62c817790a86f67a7073de889fa8a3ef286f5da0d16fbf75c57d5f817e4f87765af7583d1dff37e9bd26b70c79d4196a8693cdb9d83cf5f8bee1322ee1b8eacaf2f706007151152828a963900a582650d862bed0b8317bec6a1660771cc62d8b01a40088393fc3a7cf2d5c10b12aae868f90160ae42d403ade0dce490049b3b8817f2b5c10b0118c22a8743db840e3f0f7e8d4ae085d5af8abbc8b077b541907610d10fc1d92f45df30ecc10b41b561553407902ccd36bf0aabc17418bc201bc49fedfe86245802f8133d550a103a1f3ee88bca0f5e082a2f1b05ab94429b577ff082a8be6cacc97b515703da167561136da204c759c38a73aa62705354a7c1a90959ae68fc708db45113a196e85e8e48f9d0d558a516d154bb606f888a7cdbec76baa6ddefc3af5d0c67be62906dc28741a7dffc26d5798791cea6616f6edac666bf7ff182c08a476e7038db0a9effee37a97c83cf03e4430f109a40a8e2d7ca72252d335f562068d6cf421788c1290e9ea0bcb34c9bbea9471585f6884e793ba92ee755acbc0044b339afecb5e4aaebb5caa7017abc5b794d46cbdd12e568b4078aa228d0a35a482f20e880cfcb04513b496b7a75cf979d936a54a1ad680436788d3680688a61dbe0138e0b384ddc252402c491f22a1ce904cd0ee652cbe7d42e7486051941d13d55172589f9c3cb3624dae3bcce2674d0145f45153ea4c1680ae2667895f3bd51704167eef61cdb3b5a2a1df56cc7bbfbcce706cfa98ca9705965ac70f799e76dcfb39f2f1d3d5a92a93377fb4c551853542661aa8f117491856e41a8254b9698a1f5224b69cecdaa0be0ca1b5db75874f96f6bf057abc1945ee7ebcc7a300157c1e6f458b77bf6fa755f66758bdb2703685a9750b81e40e1494ebf35ae9f3d7b1d2144833a7650124da063685950e6e5a00b4e41d9cd482099869257929db40acd929c188d6a997172033a371b12e61a0d0939d0b83c687068f1a1e3f373def7514752f31d3e7d6da390b7cd4dd36eb7c569ddf7c3b1923cc2245a40a825c7a1d60c58197602eacc95a0af04d591156d543b7c5213d293f0dae360008dd874efd82607934d0e819b1c704c3b6f9ba272be404e437a2b8796d16b11aa3423c0888f4eed00328ccc8953b3216efacb228b9b152f4081d37994b603dae142611f1aad395fad9c701cc73951a9cec7d29f798a577643d5e9e5000a2efced7e44dcc0e7af5416e62bd5167fbd55adcc2f5478519c16d8d9c208da288f50651e989c5c53e0c6714a19ba58c1ce6bfd33d74b47d7e6a1d0bc74a9b905c756af9f05007de5d0c2daa566f392a42d827ed3118219605e8db56a2d4057bed09df9d4a766ba5f80debf2efcf497efbaebcb3f5d18c1b53aca2054390e3678ace5d56c68d5ce880230fac295f0ed47bd7bba274e74eff17e7fea5fc962be78e2f487ee711f7fdcbdf743a13ca40703f8efd15a28cb18f26c21e3301467847c5dadcaf3c4f98d1a0cf0c3042b42be3029b972821bcde6a4a22896aa9a8aaa608057619a63b714008ebef1c64794d4eb5d426902ce00064551e71495f37aa5e38bab1ad514c5a08a987d44c1e4614c309db93595ea5d7d607abac95c45ccbf4d81231c5442cbe81c429951b02e9748fc823f6cbee88d8258306ff2e3a0511826e3b747d3d0b5cdbce138e684690f5e6bca846d4e74f74c8a3197f57ead5c47e654d64c029b53cb490e507c0c16a13657adcd55cbf508c0ea53e04d812bd9bc7a11bcd3c071391f96353e44cdfa1a3431bad2ca961d4c0030245ca6793600108d62050306c3b35a57005b96777b2b55739379ebdc1bf29685e1ff6a5d310d008cb151b053930600a1bc10a25c6961c25fc518b2f3de914bc7933369d3355a571773f3598cc52382a574d3dfe9411f7a28293150265a7604ddd38c2371cf5d11f3bbd554053cb52539119215b6e14f1f3e7c7d71717efef8e28f1d3e0c6ddb1c0814085dd36e7364c07f0f7ed353d984aae4bf39cdb469a60998d816f3932015e928875026d5aa554a5ecb4bb1801baed758a9869e7e1abe3738f1bdfb9efe6f44a554252bcfc07f7806fcc16f3dfdf1c2cdb9a7a1fe6d8231597ae699b06d92f6a2484359845a5eabc658abc680af429e9c19efb9edebaff9dab977dd7604d6cd8cbaf09a79a615efbaedebb77dfd678edcfa4ed8d0d8fc6df32c63b8454ecb21047df0d19458f76d18a7c25b01150e9b8a417e702d58ad3ac450549d00e2480c7c4a7e702dbea80112e4a9a45510f4c0474711aac4d6cbd867d81e74d87180433742062c64be6eecbed37b24a0836f04cc1b7de446b064bee3464080dd18591726510b9d3f980f3f6801688dc852f6e3d0f7c3fe6ba1ec657fce7d7fa4df8fc96be2ed9947270e6e0f840dc979b0084d6fae5a8322842bda7e6d180c64f50f9dcd0ffe4bd6eb1f3a9b8799ac276eee5ffd1d242bee6507ffa570f650dfcbc24ce16c3958b662f5cea009741821a5942ab54a31ce21c5dc0cf35a4dc8adb4561ac37500fa830eacfa8327ac64d2829b56d29ff9da6d4f0d3a6b0f1d755db3904c140cb7b6ecc34623690d7c339934a1e47f13fa5fbbede3ef1d3c4813f3ee1957374ddd5b2f22849408f725d1345a40b7a0db224a25a0a7fde6e8258c9095ad912b251462c99b05c9e7480e70045777063d79366dfbee18fe1e1cd91074013f6c8558653dc442838d30d50f131b43c667d89684a08e4fa08b12e70de980ca5853466aab1cd0b0aee4da440b7a232df1790b7b922f8c35ea70ac519258e23f3f6a49d480c6ae2621b44f5b462b08636d09458f92ca1cc93a7a055bb17a0e8e8caea1c3ee8fafaa922f15ed2f84d58468587650b85474c25beb618bc7606c382e07011519b962075c15466b7f1055b0471adabb210b1abbc0ae13368fcfdbcece16f4a0835c34838e205411a85c80506ad8fb353fe07a9a5eb929d365b8a119e7963ec6a7ede796cee733bf729db359d71f7df451c7f39c4d6726b5742e690e36ade4f9a5c292bdce99b5f6769bf36a5286b4055de8a01984606496ad021919fa0580a327f95736f9e4bfa5be2ad2fc7002fca4c56f5ac9c176d2e2b7ac244289081799c84365741cada25bd155741f7a18bd13bd5b4ac2e3b27316231c58b4086455b2cf7de565e6af78acd6f2f981ffcafc00b71f9b9d39766c66f6d83f700e75f6d8b1d990911cbb86d7f30b7e33cc30763df86a37dd4dff45ba9bcef24436dd4d77ff079e67f6d8b1ffffd1d2ecd1a3b3a5a3dda29b2b16736e11b6e5cbb3c7ba1133fa5232691f4c7f309dfe601a82f307e3bcc251f4e308c1cba102f85ac56a9209683656ce087d18e703e6aae53d57bc35682601be723258fb4f8662b9d590e95e0d59ead5c3cea40139cf9872668f59662e672430c118762f876a02fc3dcb1194c76a2027a327372c133ccfb08ecd385366ce33271d66a9b07ba51454ace0db0379ae850ae8306a8ccb1746c09bc81e5805012ab558c61e1f440e24376f9ebd7efdac3c704e4f1c24f41cdb12c7d99963edeb67788633d707db9cf7e3bf9be133294b08e7440b5d407708c96df4a9d69cca864abf70f0843c2752fd8583c7e4cc4949e88e57b80c2880c92fa6279526a7879aca649adf1bbbfe39019db3b3c7da2150b743d8ebe6521fe304d1c752397e2b97fa18278df855ce2df6f95be0f363217c21c6e33e28685d379bf358208b93a79ae42b5b6113caf14c41433d29168bdf1bbed38a5a3f2c04fa6e9192936a82a52795156532cd12ea494209b9574d6abc49b9228dd2f299cc2e9b3cf26a78c9e73b0a73e71c27276fab96fa06a2c806f334a5c312645ed98932eda6526e98e6f7d1881ce07131f2077449ad19ce637ec34d4290f7a57495e786b35d48864e439037848fbe91664f00003caea50dd90f004f28a6eae4783ae7a8a6f204806ccdcbc9dbd6d44b54a394d14baac6a1a2e8528d5e5654fc109d4af17e4b4dd187b04a792e3938fc0d46a926de105d4b59f04608b3c11b8c069016c77957d1ff28251a91723f2edd8884f371db8b482310d7a34680158a3f46de95058e7d450eddd8bbb2c0b1afc84f732afb9bc43638d868966acfa670319399a2a9595b4daa6e915223a1a40b85f48be5c94e14ce2a1c4a093527126a21654fa9890993120e6e8a6a523b9d4a504d532d8dbf6179493a69ef95071b6a3f35e3a84925c74bb6d44c7e32a55afceb3966a9ce4c8a4e65b2533435e328fceb84ea0935335148515b0f4a726652b898cd4c7d22a8b16ad044366d539d855f9f48a8938e3d4983af6b16ff7a3295b6891eaba13a693b932459b06273e4cd0829d12ce04864f79c8890e46e90f7f79a07bb6ec2b7391ca72795874836118274224b1e12e880cf7d7ecb4d25b2743c07cd26f80ce7971cbc79f65492df1f423ac92639fe4c4fd13834d34c329939f80e42483f807e429918dde4ed9376f749b37dd2cd7dcae984c4477f5762fcb77f8ee80674e4bc97d82176fe9320fd277b175dfce2d83b485a1c067d64a10974082da135741bbac62127de436ee525744b659fae50f6b91f750bf4f6eb8e4167fc0e1476ddf1c3b4bf4f471483f38782fbef0b3b24388ff4c338ac8cf483f212ba61bfe67aff6f76c32ef0d80515fb41c317f7ed0435ea833bd163e839f43cfa8fe84f10f244455b4bcbd27c6a69d9f772cbad95c671585a39058d9516c7d14bcbf5a595fad272b3b508b5727329d7f41bd566f934b40439dce41823a083575ab524946b4d418d9d8066ad1caa7c4212adbebcd2acf0b5a0b1c251ce09680ad92dbf8c2fdf27c1174febd27e902fd2d142528b8d8c3754b1f8cb2b4c7ca225259c1ced65737eff35eb840060a660f030c518e780d284b0978369a21007eb384d747ebd788b947fddfece645e79db8515a2b2c5acaaaaaaa6ab8aae68f0e3f7110503a6183000dcb17af28e3b4e2a860218145d51441954a3f70654fe373855b8b0b6c628c694ff4ebbaaaa32410f0130e5f6076eb33c3349d51cc6a0600f80104a44bdd4849a0442554254ac9a2a56c9e4bdb748e9d6bd17a72fbcf95e5d5353705c537d556b289aa6ccaacaa57ba9a6f01ae814a8ae00c6d4504e5ebd7a72f50e00c01878b515726fc044dc2a057a0b6b1f4e6142303fd84c3daef2ef0386baca501c6ef8dc097108827d607f4442b91ffe88bf0c7ec812b4cf2d2d9de3bf6ea35a69342ad5463443ba95c9c90aff41a73259a8560b931540fcadb3d7af6f2d9d3fbf74fcfc795a69362bfcbde703984fc98c15b8ccdf2d54ab91aea483d6d039f43a740f429572ed165884da1207a27a12d82db0a446e6659cc5cbd643c82d85895a689dd12a796ea9e9c511452976015bf902cd27ce5fb8702e51a08e91376ddbd438e0f195131afca869423cd22d002a0c6e269c5cce713ccf81023f3ab9dc563b91a396457389a569db306d66128c9fe70f2d8b1f9fcfdba661b7dbf9fc867c332cc1c9c5e8c0e3c84748a9b52aa7e11434aa0bb087ed2467f5fc4c6c9a41b9e9c38f1e79f7600010184d8a16e46d7383507c77f1ed01980fbeb9bebefac8f43d98e29e610bd5911058750d1b063bef7e2430e500ad13a74d6f83b4d4ce87e4233f56e7246d2a294249924a32312249eb4bb9faf24a6da95a8f7471a7a1c98ecb61ac5755772957cfe6bcb96a595c7a73b97a1166b0b0d5b471126cf016e1b8502fb54e83b794abe756e49bfc29c71c0225aed457aa6c49008528b95955bd062f6a1a44aee35860bf338172f00c16668b33bc4e7c52b03a4b0615e29f585af692f16f090323fee3efc8ba318c7219e3b645336724e6d2b96a82a864a6ae4dcd719eac904bcca5ad9c91a864139e694ddaf9393d5dc01386a3b805c0a65553b2aa0914a6282540e0d5499a82579b13cc060c6947c1d436529e5170a862a4f5a35a9666932c994d94ccbaa1674c7b525389934a392955275825753b9d5ed24d3da92726344cec34474c944cba06d0b909a21153d1a752465633352d455d474de5000880826728c54cb5308609236b564ea858b5530aed4fcc271657094dd8d934d48ac672d1486b7a5a2f2c5ac9a4aad869c60c0b4fdee258eeed8a63268e16544bb166d325c5d50ae66c1252b3ccd680c02c1030590a54434d1735acea094c6eb52b290aaa52d55450e9b4aad28431af31964c2c190e3613139a49131a56f02c18451d4a6a8ee5a862ea186bd36996e4d83da9b9730a36bd2200d66d87a916630c0899a504b48c366b2989197d42b64ba14b158d6a45474f3134a20f9945673975d5aa07605b0f00b41e00793d006d651e589dd504b44b3b9791fc6557e4adc5acaf73cbfe49889e27b6a842a942b754c6d4781abe4554f2ed6f139558c9f893a4b5dffd3feb6200dca5a6a699349e5ec1ef7d2f4e9a9a45e45d626966b203f8bd4f50485acca25d8cbbd462d23e908cc86ede322ab9f1cad2debf1c98fbc70c76439ccab90f29b9f1931019a0c7ec754f4364745e044f961089727e67527fcb05db34ed0b6fd12739fe19bb7e97a75d58e2d74b17348f3f1fbbee87d455e1e28feb53c2f25eff71618175e12dfa9461db86b8360ddb5fbaa84df01b13dac5257e63e96258e2c52529ae4680ba3bcf42177ae850a08d9f02f9cbe6cec0caf20ce4564ec11ac81f6f5ccfb44d768fe6b27b98699b37a1679bd78da279d6289a7d43d1ee61ec1e4d31fa66d1386b168deba6cdf1282a08f9fe246a451a97e5153f19c93b022d5cb574c0b30ea70030c5faa2f037a8cc96eac9e41ae80b6b6b0b9844b74bb3e27697530b704cd8184a69a22420c66e49d1a2bff31df80a7450169510ca48e1e10ce4b236a8731c599f023f2e96f38bee7b8c0cfb8a6dbfc79eb7bfc2b4eb7c15b33dcfe63c00d3fe9dbd603f66db5f6119e3b19c5ce572c1777ab0093de4a08ab0085c8040acc63bde6f95dd72336e1c288c0fdbb699552792498f650d7bb3ddd812563cd2ac083aa66d2593966dfafee5cbb631e888bb3da923b250616713b602dd5d099d47af416d74077a03ba1bbd19bd153d8850266e1f36b4ab082e59d9f5c10decc6ca5162b4860bc0175fb7596efadeae84cb8b68955dbfd995da84a405284c6d351a90e77342f01b05dd7174e8f1636107753a9d4e373a6c341add46030a49d3371cc7105acb30b5ed43bbc0e756411e1d63d01376cf1dc3196cacaf77d7b7a3c3baef6ffa7e28bf93b660cb08554acd8096084d698732773b66b1c9f38406435b8376f79a3472de0c8886a7ef24ba1a1a4203908426154ae848f74ebe2e6e0682f067c4d58deff0b11a6c6085a8ba988d34a6d32ba245747a5ca357f1c32e0f86403a1285ce49d95cc91fbd86adb8eaf4870dfe4571e885a660f6e00fa264a4b92bd8265c16b4de7342cf1a1d42e55f9cd6b65106cda13a3a83ae06d6ba31e020a554694ce7eb1e7409c2a2c76f9652653732f1edc6d49195411ffcc1df6c72366293af2297a34357614ce9aa8cc127f90b0df00b72aa146c73b0292646dbb4079b807ca6f01714d6d06442f3358597a868b06e9bedc20ef265ee989cdf405954115620919160b336622f38326f59565d003e5d7cd76ffad0b74d5e29e8f96336831244ba42459cefe5418e862fcc6b0a5ddb186c899a170c5b34c1f7fdd8fa9540cbe8ae5d76bf1c8c23a7a77d0cc9c74cc787703e3dd43579d01f086e1e7a6eb1387858314889834729a0a5dbd2a941d8e77d397e319e110d852694947ec89bf6c3523069da948656823f7b99a72f07b364ee6f79bebf9d0badc243fcd9871e5203dbd666399b6b49a3d6d89a2d4d5de36a7dbef8768abf61d8278ff16a1c3b199a88f3a39069f001587eada3f3a555775ebbdc33ec48438d231f863c2a8f79738da0cdb264a7a6a10c3fbf2cb433662261826fa452c66ff2af7436d7f92ab46e1b7d5e76dfb0d779c7ac4bbf8c4de157540becd1c70ae77c902c3c1859deaccefc5a5f8087841a4e19f096ad2df0e56ffc2b72f6cfafc5f89a9f44bf1fb388c9f131177f6e31b45bdbf32fbbec17c15bce49254eeba4b0693b29a42307ff3556a42825b0b729a7ea73a19c7ea5d1e484d7d25c7d119a42f21f19cab54273c6c8d58ad76f29cbab980d3dad84eb148beced92500e0d7602198110836000224e148330990300ef7415404feb9c86c818464624d23a40f5b4c7df14520ece0963c018cbc262ffa40274e9f553ce21674a05c3510030631814004609c6401dcb9ab1ed19cb4a51fe7dcaf8e7351530288e0eca945d71a6ee381eda0a314b2514538d10851055fc29983082a93812a02a050c338b09200a04ad520824166700036114482cfbb00c42348a29512d161a501d9ed36c96481b40409f48005509588c58cc3078c3ac194e8827f3baf8974f12959a3309006ce89a8599058411102c1798698bd9dadc6169cb11e2a64974045d91928bb882968d1aa28c5c656a43e018535baf0cd9fd4a5c8a01ed10ca87f01e4bfdc2d5ac974e9f999f5f3a3e3f7f269d16e9e3d5f35377a849cdc9a983bfb8fdc1076fbff4e08397faa115473b4cf4421430f8d5ab53e72b4bf3f3a7d3994cfaf4fcfcd2d2115e58cebdaaa839474bce3f78fba5071eb874fb8381e7f1ce7fc4085e8b5c8e2fa0de5c04be4cb0bacb22637326e6b858f95a250fbe40126c709325c815b924744dfba66db6cf43fa3c9c06a6690cbef0595e99cf5ab651281876af87082aa03646a81fc88a516b1fe96f5c37d01382a6c942153aa1a46a33bcf5b140fa54183b0b1d469c967c15ba886e4757d055f446f42684e0402ab2527e3112b25c3f8884848874dc8948476817f6221c075ba374e3de14a3ff92c945c92b4a3ad14253c2672ea6ddf55be3e44e8dd558aa9482c88ba1135be50ff5fcce3af43643066e93937f027daf1bf6e0b96ea37b13f283edd8fa5e4197388f5e89d97584cc79dcc3592a305b816572e02ee34984e966551b428ebd7e1a94b88b5b481040eea36ac6748b1afb284b30b7926c279db5f95c25d986648afcd93009bbf30dbac280a41f785cf4095dff08d38aae99661fc1d849b69315777ecd495e86e4a11c4bfca785b55412dac94a8e59eca3aa56748d4c94f1cff9c2df0f2c48fa4457636b558653ea4a29e5efb2820c3148cc32c68d2d92ddc1e6771b836f8861e81ab6df1184d47b7e25a0547e45d2023eb4fdc864f998ff5d4eb199f697030ae6571ee37936a55f178ed9949e3dd8a23423478e135f72facd44cb78343c6c5fcbd2f3e3de2cbc4aa159ce0196b1df1c7598110e6b5f0bed7178fd2feff4e0a6c0d1598446672329a57cd74f81df0fd94c7fb0d5eb72367fe04b227ad0878dee605bf000925fe1f8a7227880f6a86d4edc9a65d46a34fe4439c080cf1f531b3d2c699d01c7edef094dba7e6110238362e942a8858ae65c64aad78e345821d7b339b4e28b8ff121740aa1d62e6a790f37d696640a7623c21fc861ec0623708d0f636820defd3bc31e0466919217607cf0ba01157c271c116dfafd3b033ab87bd436da82f95f0f0eb1ba96d11a42ad3d7d8747e97f65bfaa7677d56f587778d77855b728bd36f803717d38b46b974ea4e2edcd5d558dd5755ad4f5c0b90b639c49cc8491938c7d6174fbea270313b627c5f8c191d88511e510d1133e1c38237df85cf04c780ed2e852e63114b4ab9e70703d0fa8a4901508ac72eec301cbf361d18583ef444933f61c04d1f164d0fb4fbe5a3c36edc116251f7e7594d7b49f146820b28d2b2053e8bbee1f9d7fde103af76881a8de7188bfa00ce1c51f6d45cc79ef2ca70d0ad5eaff8115ac68184fff3ae7a27f7d1a634d2114fb1863ecff449069f09f3125fbe6ea8744c6eb31662a56f034e7c2a7b1825586b18f29e1595f1fe65a02cc14a2409173ef455130011f2b9828d0e05d6144e3e688d8390d741e5d456f41ebe871f43e096fe1100978af8cdd60e5a60f63f7c8d8756bd44d26b34711cdf1efb8e5a6dfeb46e30797bb11cc75bb83e7864fa2d43d66c0816ec5b3c6d3fda147df866dc8a4615ff6075b8194a761d8e00f9f342214de3785417398a9ddd81c16d5f6c3380192de9b8c7cb0676280732a02eefea0c3e7d427c5e4ef50fa4901c59228f8e40f431f98a73e29e17538afa6d09d0865f6716517f2372ff2bd288f399ae4bc167f71cf75b75a633f0a90675b3adf3c172c9f4f9ffc4daaec7235992f2cbbd5e2f9caee35d8346a900eb05a3b10e089a5f799d555bbe848578db8138a6555d2eeee55b9e04f1c0e658e72bdbc4d58ba4533b3b62bf6c071188fccb0cad9dabd662f3c1bd46aee441f9452800c457ddbe193c1bb041efc3baa2be746733c11f44da95f0a50ce6529d46c870f38b2f911a1e38f85dd7e288f490556fbd738a60c8479e57089f1c20644344668bd187a240b56ce3be00a36bb025039caeed978d055344d49485fd7044f0ffedb2ec78268a507315d6c339f37ed36c71b21d1cd14950d0e641e8dc0df72077a9c8f556458966aa3791a5a4b2bf5c8c772116a6ba1a7e5a84fa69b04578a26a218504bd9ba5b14ae815272a1e6eaa5a5951afcad7957b9ac025859158080a663ac604dc5043028ae6d1fce640edbc99c02981045c70ac686060458d602ad7ce80da6896180cd7afe90e3e4129862633a8529a3d8d6a8ad5b160600bb66538da6664ccbb22c732645356ad76c8c13966e53cde6d90152d326263891739c43f9fcd4549e2f2f3b7dd8810eba077d29ea8545680ae14d734db4ff349c81a52c3b1d4881829e886436a2f5ee14d423994d568d6436f2a99753ebe59a3c9796aaadc85572116af5c65c3dfcacbc5bdf4b2ee44572a15cf88db9985c087e0914a2d50e1107530ca068843261c2c2744c2980f0666529664de8ba4501802f2b84dfc7404d0da8eb3618c3ed8f4c5dd4753c7800ebfa85a9e950e603aa26853e0ac61868cab2666d7b560a7d0063ca40887d18ffb2a3039d2eb08496cedb58050c58e5c34c4d554d6a42de048aadb3946ed8aa91d309d55496318882754f17b1b314032b3a600583915639142475c3b5edd495c454d6cde5dcecb465a54d20a07b49202a058b614b33740c909831e9b85c67d602c0bab1875c67974fe05dff089fc0178b83f572dd04dfd011335d4871c3d42bf118dc9204aaf0500a0a1b8bb5d54217fe11ed1e0bb4f0725b19f8c7a157daba98e3d8d0269720d49a810cfaf3b3bffbf5b3dfc723e35c41cbe80e8494972f8d7bd121fee107521927d5aa54e7e3ebe7ecc9fcfb0379dc37a489d5f5336de1f926c912e10867d876e50313abb3f3d54a2be5c40bc938ef9772b837c957cf5edf94b4cd6809236d4c209f73ef957fb4fcb120b4533dc3b67fe725b72d1a92c10f5f6a8be23cc9317477a02588914192828f28a461bb2401ca2f0362aa5a1b2add227d026f5c48429561cbb0cb0f9f91c0c9eb298172e9ead48c981fb2f27bde8cbdc6a9c0c6f15b24c4f2a712368f94e51add31edbe6dc8f6ce97658f88429a4b2724644b3d3689f945dd86de1ac6d279095e517c6d7ec5112c24092b02367122eace6b01e13472a7fb32e7b2e438af85ccf2b53b0396f4ce80bf277772c6fb154cf2119ef5cde8110ed98b5013f6b1d5391bc6a258d6f83d353b1398b8485ea5081ee3f772cb67602c52a5c7eff1b2a4f18b0c8732320db656b1461734ed1073b5052da50b824d4f6bf3cc6565c6e6154656f9e0eecae69b23d9347252703df3810f785f77b4a3ccd50e3176946a788d3f5cc31a3dc2589965d9bc96d605dfa2a5b405cd65159e8d91353efdd70853e64536ed4898ad175a92725c58dcf95fe04fe07d288d10a8c2018779ace5ad08df9b161cb3c1fee4fc05fbfdeffff4fb9df4d4fd534d1bdee734a6ee9f4a3b1ff8f4073ee05c98ff44123b218c4ada7e4af09d48595aae9313108472a993911846b520761dfc3d6c138b318b6c03c652aa82bfd768341a35e8716e79d0212ae12d26aad3c8f747d7e219a15d3808bcc3cfecb7e24cf24f1db0a474fcc296f4759331540c94456554971c6120408aa447252f746a9570511eb994a60818d9e62088d131409f7b4e614c11878ecf9beb2b9a066ddbf47dd31e6c0a2abc17c6181a8d3514d865a2fb6414a63d842f9c2c8ccfe7888794c2fbbdc20aee0e7f2395c7671e8e63a7d9a9abf5ddb39b67d88d054642e0d826f46e39de880a32edf291f81496539b03eeeea1688fc5c2796a8497ae08d9f82b58bb5efa6afc92575e342e8f7c29510695722a66073274942ec38f2249e8e0af04156447925042e9e0fb9b024c6e468767bbc1e36b7c444254dd155ceb1fc2865c79a418c4b4396c87b1652b6809dd2264bd7b1b43d4472d845acdb2eb33d76f965ba44cfc96eff984b57cafafeaa4c4bf52224321841420d8c69f3e75fdfe8db7de5f5fee2ce51fce2fafbffa301c29505a7a8a57e7a9125186b286b6e0b7b333a547674a8fc2db075bb7df0e857ff3c413228e55c87757d1ff0f7d1e3d2fea1c8f853b1e9a24b4c5f4f68a501a0f641cf8d00dd5eac318c6bb23964636cde3797705211a8f425bf353e55828e5b2eb6f85a286bdc410dfc30aa506531d83251455a794893836227891aa980a3315aa0b468e005608d114452384420908c62aa53a554cc570d4208431c65001e1c540544a54221c2da4329f00a6044b8539c520ca84e98559a094680a67cf2c75558c1807a3a7f690b6a85a92a906a594f0d21543512da6988aa2f34f13fe714d015e966806218450c6b3097d3f6701454b6d4d73f89f43142c3c4230671e894230139a7c05630a812143a4e27f1f14984915c69b0e7028d2c577918d66d079748dd34ee302cfdad8b5b227f48f89e7c625a46cec1ab6b6460dc7f861f0d5830c88c0dfe3152482538b437798ec8cf5ffc88c81ce9eef48f91b5fefff14de87327baef7b5e182bf72b758f0a71bceff3c5cf1ef6e852bfe2f47f1ee3aa88016a3e882acceead990d593a1fb9a95d3e0970466ab2d82446f2db10cf6b40469836dc0ba96c07019607005278401da7716a8ae744dfbcaa6691bac8f29316c9df5b182cb4c6f18f6518e4b062f7c1da1583d749447c80b456ca54a39f85cb04ca370d185ad1f1e25baba2117e3828cdbd11645b60b118f14c6c93b865e8310c4ca5a84e6c14a9bb20d436d7529155207123940e148f07158348c9b52ef71231e40d636cf1c0a230d0cbe212bad2658a664822f2b6914ec0287a2287e51a8be79a16258c7669d292327c3917c08938c8de2f103a44dcae9718b39764070114fce81804d0a2600f8836db11809f0da27fd2b12214408220ac1d98d4289a030f5a4c0731b43c48746ea9d4487d032e756c7a2a2ec8aa82806403920b64b3f5ecdf551d4c519b67dda02510497d159bb610ec3d274e3f169e2f1118ae816746d6fbd706e68549d0a6e05349bbc2da91977ff47a12a2a21f8c64bbc0a0fdeced3572e5e7c604658c3cdcdfdc4952bd7c5f3c5e39c2f354c7b62e2da8913670aa15a49045dbfd4e42dbcf4206fab69178b0f5cbcf83a7ee7ee2b57de3357165942aed436ce9e387175221fa7c71d54412b0865ca310226c547632f00aa8de7ea7622b2109e18039c7f1f7bd68beb707e300e357f1d7f8a30bab4d3839f1775ab0ef5fcd137d99ed003efef188e6388cfdd94e31c1a654aede4f00bbd5dc020622f4f620418cdc9b808e51af3460360306f18fda10ccf7b6565b593b9fab452f6f8587a65e5e9ab99ce6a70f95bc5dc7ae65aaec8476a3a7735bb9e9be60336627b504055d440e7d01561cf1e59e78c45a922fb1a1c8c9aa095e3de2061388d9f8bcf88d0b807fe696c861cdae677c561d00da2c50c7d84f3e1f4196c87260985f056e4d0911f861719f1d3b924e270bc8860adac44d7ee58b89fa63fc4ce620192daff318a3b3201802d7f546c26ad2a7ac24e5a685b04af966848ae6c436550e0ec5a3f5aba41ea38dba3b23b298d7bb42074379ba1e5f5a628b1c079bb9a6df4c3884bd210673b8a57bc15acb52703a81a81a8089a5e54faf8a857567e7908693cc931c0a37bb4b8339d93b056cc49f07b4ec0bd2fc27445a9515b91126a2304bbbf3beac4580fbc502527b60607e932cbe0272d3f69e98eb45e73742be95bc9cda3b3a5a3a5a3474b385373255acb662f72265ea4999a00df4c36cc64d26c244df14ad2f21da33d7bf4e8ecb1d9d251cab0ca38df7fbc11e757dd6a0a2116c3dd17d11de85ef42ef46fd1ff3a8ac1a1d64c02735973116a6ead29fbbfe99d86562d8a5f1cf305e389800c70c968a09c61ba5e2bc20c04d8def5f8ca1c29daa47bf5cb72be3e0e710955270856098f75d584da63962a40ec2ea2e0078180ca28e971fa1fe3ffe9e7c4b59a605b810efed57261b39fa950958820cc05fae32fc7bbfabe7707eed543c1efef9e7d13a670e7abbfa49aea6f9dfd14bfff8b47554b6d0068caa043556803dc7e3b30e5ed98dc01f7857acd7c58c244464fe96441c06bfe97a8fa31aa2958d1144517b538c89dfa5e6f28058bafd5c7d04974377a1c21251496acb4c67087f4351e4a16c4d21d2ae4f96385338492cddb532ad3dc23a6d590b90024c529f365891ed7a538e496509c629b3327272ab397e7f9489a8c1dc1783c6ba0ebdf650310884e47c4d5a65d7ee88c94b60855f146daa978221adf4d773e73c4708dfad5a9d9a8749efdec262ff6e9551263fd9e13d1d8e3f16db36842440a1d770b8172d3574a4df17fc43bc71cf4bb5d28ec2040830ef4a06b9b8375f174c3b4079dedededfcfa086d3e899638b6c9ec17579ba3903995916c38533272e6787b4bcd2559d2db1d6ffbda354a37f4045e07db0c4ebf167f160f662aac3d2445d089c9b31f36b4c106506cd88606eb9860c3fe72675c02de09768c1885c73a5a41ab0841bde64aa94593c502a47bae570f251cf1f0ebb594e7b1542be5d5525e0afe6683304a19f9e84700336ada4c19bf31787a7d7da3d3e9adafc3f175c08460b8f74d988855cf24d0e16cfb9bde843167d65473f0c5f370e4fcffce0f83df3f2f4f6897feec4daf48229729c7543207aee465f8e14b366dbfbe19b83989c5b62d56e0c0e5a9f2522ddba1102cfcd646e82cb56105425ba957fc9480fd8b088d981a8662b39546a073f072cbad7a6b65d913fe95d55ab5c1a14f5e050f839d477e2fd79c9a6aba7f6ef37fd56cb6ea7c3f9d4e37d25f555535a57e554d2baafafd7433954eff79f1aee962f14f555575d4efe55cd7853b73ae9bfb4bbb96cdd6c4eb3f4837d2e9f40b6a4a55951754454dab7f998154ba99fecb22148b3f56dc561d5555b6dd95a9e915372ef3a62883a6d12c42ad52b3e4564a716aa99629a54a2effefd79a5e1b3a831ee4a5d31c9fd4bdf541474ee9eefa7aa750d8e6b35c1812f7067d40ed423ebfbe1e8ff922f9d3d7a0b7c1abe175d0412823d53781566675241ea9376266cfc683979403f223886dd27a296ab0203cdd49d82bb4ca09f01bcbf5c672bdc58752b5a1dc5c5a8eed4a24948e4bd5fa3c040379069656ea7eb63a0d420b10503f53500f566f4e1878ade853be975b3903fe52aeee2ecdd543c85f5aa9bb495880135017f07342bc1ee9ab221dd5194e070881962f1f8562ff566c4235aab5b0fb542f46a2fd2ac669ac6071bcaa0121a0618c273922c0847c86691a330ca69ac074cab496f7de83b57e9482c6d7e049ac628c0b40156970022d45a109c5c8e21c5114323979ae523937791800431a634c711234ccd484905e6a8aaa2a98004ea9094163981a51120a49129c2054c1094c55b5642b09c5d655d35467758b6a6a9eb1190c98308e7d4d82a58ae217f8e7b0a2fcaca1669886292594a6980ef358c1298cc51102d7a6698c4d8eef4c8cdfaeb335a69f56755dad3066eaaa0badfffbc55493c9c984a3b20221a0e229004a1521453d41130a056a397ca5a0b97c3e0790c60a606c0305200ad3159510cc14aa500a4e4248632daa8042b04609514055745b516c439d653a35f5934cd7d98922a76b4a8a461833b28132f9e3846431a5384bc8f7544d6300e05045a18a26685bb946a7908bf2a888e650152decb1520b9f9466b8c954b866f3ff2e5fb8657465b10f51bf2bfec9991efea0eb188375e159b26138834ebbd0ceb7db7d798ad30a613df6a801d9ffa3794e2484bfbdbf25f812f98d43e8c7106a1d60631849f40207dcc0578113e1be5b2e82e7bb65b1eb1673cbcd458836cd90f5fc70b0b951282a101b1c959ee2b57daa04f7f2aa158e96ec699d640bfdcf2b1afed4e70bbfd12f74cd648157d94a3ac605b15d12a16db939519b12b18d52296959c912ac3ac6c6ec31cb24d9c2625bb558bbd0beadb0e8eac554276cf5081f36856e3958335a4e1da0f92f03dacd52c9745c01164f4b1dea282fd5383eaab18ff46ba1c69ed7f769f83be8a145b1b361107ca356af302f740e9182d4568d658ae0d5bde568fceadee8ce3ce116502f00343053079fb73f2762f2155db748e8e7128f6343ddc414ab1aed505a5035ba1e6c55b54ea8a35fc3146faa067e22f1af6810fc52b3947f650f3eaf6ad82794ae1393e43975a7a98623a93c2b19a779381cafec0dc5a992e21fc4106773fe5ed0bdd9e1a3dfe1b78729e825ad812f5cbefa5672e0c3c65698c34cae7386779d33bc9c1e63315b27862c31d76b7cae57caaeef965d3f5576fde6b80f97ac30e18ffcb2ebc3665bfcf377d56ffbf2e5f576bbd72eb4a1d06eefaad6a0df0ee6a0acc30cbae3c5fc08ca7577ae5a1b71f6e2837f8078200965d8eaf2569f0b7779bbe1e8bc8a99925536a6edd251cb3c64a709d66c6d375003562c95f7a8dc6bcd4c0a69bae3185d2bb99db6cb967974d699d60f59a58c6aaa18760339731896bbe42a48c100c751029d41974763aa94eb5edc3876b837a29a8dd482237ec2f5666dd4b804dc991901943b045bd3f6ec6b0e7bc7bddc914cb135413545511253f2de842befe962338c9d702380284add32a60ab1a7acc9795d01853a466a21af188aeaa8ce6462e4a6ae62951058175cfb82081432e4bd32c8e7a3d93a0dab22b05c79a8da51a2e16b95772b84e6aa2fa23cb98213daaf27edf4b95005046f94ea1053ffe723fa223f33dbd8537df27b4c4f9aa54ca8237aad508a24278da122e967d2dfdc537f12d9b1087df8043ac5570d90b1ac821a2ec614e2614c55a9f40d6ec6426009596a2c0eebd0265ac205549d29ad7a9c3a869924b79ea0422ad72b5429ceb5660e9dcd5353609ad2d5a5f9cb456a92c94a6572f0ed89acb15c528ca44534baf82a3d9912b1d60a49d36b2fea49c7c0671f9874a784bcae32c9125a2a33ed11e618aa46672bd3790cfc51cd9d532bab296a6a8643b17757d3984cf1e2e56ecf52e7924615d4887928f076c9f9c8d96a29e088da196d022639973f76e63267af5f3f9b9973268bb3f927837370b7e34d4d79fc072543bb7ee6ec75cdc85f3c72f8623ead1993e70f1fb99837b4eb67cf5caf7a27e7cab7b8ee1a3fc66c37bbd2169593d2615ce6fd220ac703a4b6968354b31513bf17aa504fce4f38d3d66b00842aa5a0d9ec5645cdbbc989397ec3349298e0f935f0f5acc99f835f99040cb9b4ab6bafa21a952a184acf1a13d6e46262011fcaf3ce4c4ee80bb0b64035eaa91aeff5513ba94934839603b9f6c230e281df1401335c3f607833e5a6088be30e77e982ad8e30f6e89876a771b3d1b13fd3ebb54542705d1d2888e025976db35b28140a5dd3f677503e9f97d14bf2319c2c6289c3925a937b249597724c95987669c59336e9fe52b525f7676d2a319484d19b4f11c33856ad9c5c53a60e1d7a552ef7e6353a7a63270cf904e894bce5dd2ff254aa274f299315f152584a2fd40b487e703be03d356445d2a459843c3f554ead42aa4c7cf983e0eca7fc143ff77cff72a1b0e1fb6ddf879eefaf170a9b855ea19017bce9be3f44c51e941b22ce49011de1fde285ac55d9251e5f2897caf3509e2bcf43dd0b435148278dd6d01aec978460ad77f972af7de4c883f5ba4348a417dcd841c221c96ccb4826d0edf4fb9d6ee077649bfeb6b4fc42bbe2a072585910b150cf088c14c13ac456998a9f2a97caa911458f576a966044f1d32c413f0cf4ffde707c1ef6fd41cf977ee16eb1784290f0a1ee67f00be2d20fd534836835298807dd70e4dafe200aefdff6053d1ae09237a177889d20a42c9b4fc6a56a73116a738dfa22d4a46fc309a80b73c1da5255ee26555e847275ae1c065ef39757867fa7a1d558aef3e3923cee8194a02a766216a62d0a01a25130271d7e1216fe3888234175ca9112d5c58574436004bbe584c2289ccd94edc2cc4cc12e73d475374b6aa039bae66800cc66c0122a243d0dcba01ae21f476861540a6d32056a8201fc81ae152e1e3e72b1a0e91cb38dfa50975ec48ab1556eb1fd6d187fcaeff4fdce4176f19b5b9b3178ca08b9e9fde8fde813e8f3e8abc25ff6148c19447b0748559bad312be391c03aa4bc4bea5d6eedc77671fc9c19575535aa645ff1382f2caede0aa8868261af0f1d030535e0735ecc0fe4b4a512a5be629052685de54ba3349f930efe7acc09f5e6de2f4bbf4399f12bfb15b419afc556e09221bc57f3864d892f05c37e609f572a115df529990b8da83897213299f6a0df89b9ba6e046fab4af4362995a8aecaad583aa18bec06257361b8a0b0305544b3ea44dec0e1de39fd91fd667e0ca1cc68582a38c08662d45ce4c5748ee5c2d0a6097c29ff939b02ed937e6a2ff5ebd00063b8994e14b024da88a61fbc35eaf520ed00be00bd20be5d64fe5a5f8a0cfe5371727b70fb835353e7a6a6c4e1814b81367b167a6fbdb57cf2e48dc3870f1fbe71f264f9d6b7eea098ca3a92db7791895cf41a217388a094d558941c7241a1547f349e4520d41fb32a0a05e12941726e8a85c65f97e71e6c093038f273770a5b38dc5335db240af967771395283a7d3a88f2d016d9958476c8ee4a5f3fdf97e73688b82fff7c4120b2364930d3c670eb31c0943c7324d018f52e6f0bd53623d48fc5ba91ebf4b4c0649c71e4cc2529a7fc5dcc30672d6193ffeb6f6c008aeb7f044f09ed5e6ff339581f6cc07323deba3e6cc464d232e6dab2b4638afbefb352b314acc6e1aea56cf4b20ced18ac1dda418036077dbe2ee74ddbbe6b7093278555d8a66d849e2d1b9dbe6de67bc2c4a31da5429fd670ff3e0409a86134401875a1bdb9b9193cdf0a9f1f038ff1e7dd6e6f73f3b968ff4169c371647465af85632f198c48841bd891a13b1f7ffcce3b1f7f5c1ca71f3977ee91e9610a9024640b55ef673825fa33b9c9c9dce63019ece3bf29c6cee3745546dd63fd69959bad54492e425b0b956acbb1d3424572f470ed7426abec1400892508de4fb3d953b5c34797841ec6715a95eac2606a07c9156874bf9049842a7b7b358b6f63b45baa2cd3bddd6b9b58f3626ba923e279ec09745bbb61adb70bc2e2ebf269f46ae9cd5b96cebca10bef9e9cab371a3620f4f0955fbe29f4a9a60cc7fcd8b5bda2605c7b2c08d87c7970131aa1c7ae610fb60c3b7291117ceab9c851c63640442c1cf40145314691a0178731469b8d6a3c74e7a3326cf7b9ef0767406124eff037d207f9b8446b3568e529882213c66219ad467d22e36e97614b062279ea3eb1a449fba1be5bec041da118e4bea70c7bf143e106d4f7112a981640a63dd82cba9b72633cb1fdf77db6498f8fe2d83caaa265743a5ebf580da4e9591ca9fbb10b7f24f2b7848ccba24a8f7f475adf8441fc7b635b1608bd745f2cf4943c21c3ac6cedb75dc0884ef4103a2b6281d55e3c2445ed15fb6c7db2136e5a25b64bff6ab8bd558713349f7c99be5acf863a6ab1a3fceaa89efa07afc8456b8ffe281fb43976308f5eb90fdb680f8cf6cecbf55ddb0cf7f61a53f1aff299bafd8fed8f49d4e2fdf14a7d6cc9aebdeaf7c04d2fdbf576e280004cebafc41717ee93b615c19668124a838dd1c8fa5ef0f152ecf1c92b858fceae46c51adc79999dd5db156b2a664802e81fe9d3382978ff83626dcd558f47d18a6342f420d6bd608ef70580fa011d71d026aebbc77038bea3b68155744948edcaa33b90aff2fa8531c196739e1850f2929c3046f62ccf9ad3294ea6a7a60dffb64b0f1ce48504bedcd91c83b6726861cd4a8afddffca4896ff79b9706db07b9578cc7c6ba144632799199d7dad5703f3636f522b8d2b03e1dabe7ae36dc88373861b48d29c79932da867574f5d22787716429891caa8218b34f8f3498bf635a96d9360ab67e71716c5ff7d704169c31eb8afd1530e59857f578881afe0c3abbfda2e3b037f4a28ecfa9fad5a959199c2a783b72a28e83206fe2ee183447cab6b96b7fbaf89adbdc4f722146eee0d5c8dd0f1605bcfabbd671f8511482e6a9bd20918ff05e4e542f3dffb3519c9aa7f688284c45f6ddce468a11953302dd541433e28026fab2b7b3051d68a32984c622278e76d0ef8721be7abccc5e186eac1786f3da9075d808befce1b1b22b0799e6c17d5179235f79362cedc90f0fbf226a0ea88d7cd804142b3b3ed8b1ed539eedc95eee05e293279f0ccc27ef0b5a1284237b320c223852f69efba14768aa172f2ffe1d40415bf8f86df051db9041a2c6e8a43bd1db10825dd03566bfc09acc8b873b236ea093e3933953df3b78923214a4b5eaad1a837fd2da1b1ccfa93abd54fae9f0b2f577d4508596e1ec8fa8ae8e05551a7cfeaca0a855835e2add0e85d2a82d6a3b04414581bb6b6f09011be6415104d3f37b541d877eb143844aaf1f7e63dc3eb2884ea1bbd14f8e48af224e796477d88303d41da89324638bd098ecf1aed1e8790188be67efe076f9bd22e1ed1599cf3661283e8c82fc19e4c9bde3e0c91db47747cddbdc151f3010020ed7b08991f87ea998c5a5e09df78ac535e6bf0c5b82b98d79227762011cf7705b9631fe06ebb2429cfbde418a78b2a7e7f2a82dc3441061e0303a16e9cfca110bd8f4dd80ed5702d3a54cec1c04d4ddea8602c74e47ac32837fbdbe2e2c60850decfa3aa06ee826bdb12199bcdebadfd941eb7e67d06db74568dcd81cb55146c42ddf23fa7feb2545f4ef8e46ecf74722e3f6c0efd9a69f1ff47df9ce185d78e445e8c2609fab926477f7a3002fbdb4283b5bc328a134b20730d151117d71740fe0d02ac01eca0882cd6f8723948973e22890b4feda3d0b54577a8a41164414c007275e75e8d0ab261ee423f598eff7e46ec497fae1a6bf9da31ced1c95f28289c9c909de0cc3eef83b28dcba38904105faa87280b3d7a03e041e316a4b8da617f982c196c2a131d806022e8750694381d26b95d670effe95aa00ef7e3436b25f6ce1693b0615d0f4d8e8c6145fedf5a03332e4fd7e671d5951395e10eda226b4803e6a094de039216d8db64c11c01f5a80c76cf7c21fc426c3c8fdadee4da9381127dec3e13f40376faec72e3b6293950dc36eb7838a761b79bf20feefa08d1d145da12066b68c2da0a1142aa043624f8fdbd08f899d57026cec93d05e37bad30a13cde8993b1e6472f864dc17bbec8ddd10115b7da94ad8e688a7b1194b6f87d121ed5322dfe0a6746ee2779f8b360c9112b9aedc46a327e3ecf6050669b7a50cb1dd165b6788a469cba1ecf7f94c165b59b40dfbf2f0b1dc77680bbad04613012c46b5f68a43011be74f2f88d8cb8f5d087d54db945e10f2e70bd26f3c80397f670bfad046498189025da817ca93f6fbc0cf1fc97a5ef6487e6a2aff7e35fad64512b83b368b85b3e543670bc5d9d71d3d7a657662af4f47360d0fa10954434d217ddcfb73add16ad910bfdc1a692bffbef9bb47a66666a68e940e1d2add75c4cde5dc23f9e96978f5ae5a1c9e39fce646f3cd87678ebfe3f4a9771c3f1babf5c2eb62bcc07c102d45a927c14d8df8d0a52aeee8359ffe40f0a0af99562139bfb6365f3dc130202b9f5c585b5ba89c60d8869e5495e8833fa28a74d104e5ec2f2b54facd05b81a5067670b7ad04673c1f7d958a48f5310a87c82e5816ae433c388a49f211a95234f08bcb72305a962f5fa494282610054d8d9822d680b5bde3995d502ef23d68c6c73826f9c8298ab4819fa0a23f069dba41ae92b8aa2f4c5d73e0d8429d28b31f82821d0a386ca0cbac1bf1afb3646ed9d2dd8843672847e6ddccfd61fbfb119ce03dbdc0e6707ff52d8ae308e7598167d38fcc61e5e45bdc14d5144637741f1fe9f08ac4c2bf5c8854668dc2af5d3003da6ee20a28aaea62a01a4b21e33490f882c8e408f58616cd8a8afa5d5aa1bf838d7d848c17e2bd2e9d54f4313b67675ef48e7f75483f640f4ee7bc5497c96fca4e8fd0d6ab0715892df74471bd38ad36fd08d01500cac781fedfa48044b615f9b088d6c06baf9e0edb73fc87fbd4b0f3e78e9f6071f8cd12173c2c73a22c4d8c80e340b7273b8716dcc2712c588e6308b894f8cea66368de15614ed68f7a23c22c256a7276c194a6809a156d0e0f89edade017b6e949fd1d57fc974d6bc7ef6ecf526fbc59ec0ea866d1f1a7a9a9f63bace2eac9c3d7bcf3d67cfae5c3812ba1fb687f40fef27b99f5901216896c4e6dde31e4b7cd83707bd37beea72441d5f7ed51b01f57ae7dfaaff5458d84fe96f3d2fc6b60f1bc2be1265966261ed6a9292fb7b6fe2c48477cfa953f7c2447e75220f9de2f4b5a347a74fdff5c6d3d3c78e5e9d9e8ec57fcea2c368059d4777887db63f80fe197a268ce33ec63c7abbf643c8e66aa3ce3531e7c7e595d19081f140f66537beddef18431c2c44f10d7c6a7bd8707f20b4ac900c00f5ff6b685f119cdf1a38a53e669bd2cecdb4a113a6ecbf0ae3a6056a98b7c70c35f8f9b9e06df31d63c5fe9f43330cc1852c6ba10145785e18aee501f3651f0a19b87668271bd9b11d2123e591d470f99f0fed3c28690492d2e1de4e327a5a9d8481d3627601fe506251697965f8cd4d92d0b404d904b04d2d41ce7cf10c4968a60d30f8cbdb6efbf879e833c360033fb07bfdf4a7996e1b84e2af7fe94b28c0a9725fa7d9209a6269b8d75b7c1bdd00c7c66d2f427b0ce8868c9ff4d6946910da7122e6076f53126585a5e1c84e0bb58cd86a818d076b725bc3adf26bac06d23e81cffedefa60abd7fddd986840356887e330d52070ed96f8260dbd810f1bdd47865eaa2a852e104d316c4581876e19e1df089a9411225cbf259816b734be112129053cd4347032f867db54570a3ba81352f1f435839e5c80a0dbbdd0a6f4b9a1014357d507ef924195250b12f68bc13147261531de95b25b63cd722a5cd7dab6d1e025767cdf5f975812babc5011baa6effbfd010a825dc4f6f4bb179d10ebd202d4381b588d87b90a276db4196fa35a6bc97856cdc6527da951c728e77c23959e24a4a63aaf9b39fedad943c58b57f34e4ea1a6a3a9ba9930321fd51d8528cf3b39708e14e6ecc4dc49277bf8eae25acab63c474b28c44de88ea264cc4446018d515305e0f55bddd910ed3e21a318c47713ae490bf9f209fe579f53a731c7786a3ce09634dff82c4b28d44de8b6aaa42d2b4b45f90c1ccf99cfcfd9d6dcaa93ad5d3b762a954c78a96f28d4b219afb399fd88ee2854f19c6fa43293981e569dd7159764db0a760e81987f2f04758bc5080bd0552bbeb7b117587a9fe07ff5e595539873dd2b357861e4eb0757f4178615109d2b2b9a346445692eaae8d8b846dd22d6b4a56cfd4434b45e7c33e6646830147a93fef4cceb1cb546c8643af50d27a710c5d13f9a3513a6ae32db5214cf2edc71eb7465e6b5c7ffda393997b0e70a471cc83900aa499906346b59694571f4844b95044b798964ead4e2d55a16c5fcac0c740f42ad72646ba348434e61b019b83fd44f407d9edf9591ac6bb2393995b94511c0e024f87551e7207cb64ccc55ebb290b6dc500336f1648a6a146348e5309e4c696943b5546bcad429683a403ee36469f27efff0fb2e298602008aa5a666011c93596a3a87712105c0126a2a8737fbc2c6e74a328301703a29cee29fc172f5895c1943c63ede997da190971b9ed9964d444e3bcd73669328de07af975acb6a7969d917d3af26c384af08f0aecf4ba356d15ea6e65a324b75a5250d5b4fc02d207d40c48bb2eb78ba32ec55f84361539a9a049c4ba9096639309b522dd14a835e7edf61fffe04cd38d909005d03aa5b53a66aa946464b4d6270531803d5486a12e35c6af04f647ffe3590b49de4cd21b665cb2de3f28517663b4bc92cc6e5dc443da79a81876490919fb370775f9a422931dfb312aaa279740b4295baf0552fcda94c7a08c4f069ade67be566d977cb2dd8bd4926fcc36520161bdc641681cb108606853f7da7ffe9cfbcf3d33edcc5a9c400fdfe3fbcfd0b9063d77d1f089fff3daffb007081062e6e03dd8d6e341ac0f4731a7d1b8d99e99e99e6cc901cce0cf8104969d8a4288916d1a2448d4849a625479420bb12bdaca7e54f6958a9482959b2558abf759a49e44decd82a49ce46d3daec56226dc52ca9d69bf4a46a1355146f1e7262ccd639e7de8b8b47f70cb5de1db281fbc639e79ec7fff9fbc98fffb8c7759def618603fe1bccf07b5bad56abbb0b2844c5efc77b5065bdf25a4a7a271f50ea6e8abe3fcadd4c0d7266fff86abc34c2b14cc8e64bb711eab33bd5d086e4cb573a484995af28aad8f30884ba6edd0b23c88bbc5485839fa4fe8d11d7c003215674bf62811637a47c75e6f1792555dd5281e1bf0f2766fff5ace7997a47c3d8b467b9a92234a3413007ad56b8d682c434d8122d0eabebb56acd6ff3d3700a6adc2fc7f067ad5aeec7328262342102be07c4e2dd3d3d86374068ded1bf8deeaf808ccaf5ad6bcdee81a76c571e9c058d7183bfec6368857f2f87d27eb7a3d8b2f603fb610b0ed121aa4651784681f1f43079e0ab6e896c9039d72dd17a0f79476cba73648348009ec3a96c762a8ab71360ee84efb48d96654ee71096e826d47dfd6c0854b4caa378353f0bbb4bf7a7db3b3bdbedb61058c1eeeb52ef0f3202c6c22e2974a47521520ff4d91f87514e81fda7256336ded89fd312cd6ee9d7d90b7eb0824f0ee63bc3255f1b8d842f547bd461ca5a24f199764d7b5d7e7a1104919f0dc72010fc38ccee0e824c2bb88ebcb2f40560463d9341f7bf8e0ef4797cec48d40e0db56eef4307da681cad21e4636f55bd6ad0477c563a1f79cb2db9812c110ccfb6840fc1424835999067db80890d32346ee8b0b56f5bc4c01d4229e9608358b627d47bd2014a29850e110abf9a13846e7a081e1a47356999e3bd64ad881d884a334669c07a513b070754c7b0277e674f49cf36d8bd6dd33f0b1e961e1f6692b6b40b21d3de93ce1eac4ce4e2b48906f1664f490eac3be3cd6e544ae721049c75b9849badf246cd3d50989aa3023dc0b6defd951f7ce12b875f9bb9f7847d29b1706965dc3d166df633ffacb2f8272716deb87fe2c4fe8d0b17508835abca7b0a7d1afd93a3ca3b0835db8880bb8a422780a7ef127dd68b42c3fae8b3c357f9b4b1af1d7df658a8d96f680c134e8841166627006b8f604e69dc30dcb83566e809460d2cffe98cc6b99e34f514e7922a048060716dc2d0e3a20b2e108c0dca628cdb3ce11a86cd988e350d302c6bf24a22ba332112ad5521b962cc893a2a315c35d0b4635fd72ca19a860160e2bdfbd4c0c0e3ae61da8c3282c5636cdd1833cdb46e24183308c6849098ce6d5db7398f514aa8ac98cdc40ec758639c252d331b8f8dc7ed89f88444ac9580b5981162506a5166d2f028d6d4519351ab4fa6c8a079b48d9ef479e806cc2a9edb97aeee1f77239c413d9b59a9daa8461461370af1df8ed0e9c9ef8e9ca0c24398dccc49be461976abc0fb0e3bc5205664af187042ed170f03b6bae07b4f6daae1240e496347a0f8ef75826e53dc2b068ceefb453480bfbffbff1dfe3e1cce108b8f2b48fdf1d84442b96c26e25905a9efea1699110d307499583b2662eec06587f5ab57eb07897c7c5ca1ee8ff3f0fe18cf2ad47d3736999096d4443e36ae50f7c7b9858ba28d7a97e9d9e0b2fdc00789c37c804be825f40984caa74068dd32fbad7e0a6a2a4fdc1fcd7c38355ca5c9a96be5a7f83fda4f8442353b22c59cbba125c9859a6f7559cd3a3c585f5dae21ac59e3f1b76a9bf3464a3f6d662cf7a42b33ca5d6a085d2b46b96d11aec1f5b16ac63de9664f640a1be3c42094c6266d6ad2fb21b8026efe889acc29c00ac65b0b99d9f8ca6f02608ae3e3d6a513a730ae10ae51a0c4b69232055da37216f9556272cbc61a6c9a494a0949cad306e5364b4ec4092727015bea0a587f83860b0e4081a7f485ad44acd02703a7255b6d31d5b368f9c32ac5ab3e2b81103a9d620a0ebbcd28abe3dfbf21f1a9f1eb610f41b3273b5a36bce1ef5f17b3dfe5bf0967511fb6c152d4525e1fe98daf7a2acbb62aa9983a42aedad91e76c63ff7369ace9cad9e585ebd57ef28f4f9dd616f7c6ea57ae26c3a4376f5fb56fb7ddb32d6a9325b5a80fe00ad308eeacf0f0925849243c6398b6eff5e5bd3da24c6f5186e8b19b98d633a8f91886ef736f43c7a01bd57c6d485905c838016c31b415ed8f04608f435b4113e7e308e03642699d7cbf46a856c675ee4cc31e76f2319e821599215655a982fd6776f70aad583bcec97182dbbd56a79bbb751cbdbed9bffeae851a5215423688d4e68e9749d7028867a42b5e167d22b85a25a57cc62819438a9f2d9e1809ae4cb50c83a05785e8eaf442c9628388971f62de6da4e8190d7670a05e7c309977d0b1bcc4abc43ac5b06fd12c18f1f6af0018d80d02e4083a6860bd984cbff98bb09a790b0ac44c1e171b62744fac3448c99589cd1e4859af6b2863571361a9bd6969cd09b0835eac554862d425de897e5b5ac34246f6c8284d0a19144e98858afbe370169c8b60e61797a5fbcd82eb2ad3d6ae2a5ffd43d30935194861b2aa6a9d312d2e4eeccf2be6de5ae89134bb7029ad31bbe987e6380eba98dde2edf4629b0774a2cce9eab88cf567a6a5ca90f4ae00c845002b33d7881de43e4fb0b2f0a40050e30c54bf16432be8429564a92a12f638add127d1b2db998e265dd50fad36bb814c1756332959a34ae833a104beb3b721376f4744cdd3d788d95e14f82502de1499eb1c2bc14d6975f5e92b9e597fb114ea3da631f78f011d7f4398206698b833ff8ebfec69f0d9e0c6180c3f472087d29e1b9ddd0aa10c9b1a1befed99138ff27d17989f31f01ed14d2853bb09f1edc1f881ab9abbc033f4e4c7eec871fa177fba77789fd7f609b7971655e8288079b807adbdd031faa3e6fd93982673f23b63f1324fb4620aad1407bac1fc97bf0f3f01c0c31c10ef21e344377fe57ee92ece0c5b0054f842d98bfcbcac26eefc2dba8b7ddee6daab5b18df2d086bc5ca52301de77e4cf82b991a45703473a8f0dc2818ea0b5527120c8830ee4ef1c332ce4fb2f07e9464d6c306ae27dd9727942bebc196d8afd485e42a05bc7d1aa5ca1232edc8613d85b846a588f40d886604acac164d9f6f5e5d3cf5db9f2dce9e58baf57099f121f73ecf5173b3d6ed03f6c38afdfb8f2dc7357365eef34dc97aeaa4bd4e5575f72033b6b0f0f3687a646e2c1a6bc7429e5a5bc52ca1b0084ed349bad6bd76e1d1c0c82c1cafc60f9d797fbf9e2a8dccf52a01157b72435e7eaba17e5e83c86b674126a929dd4979f4f81538bd29626c029a5a4f0184d2cd5006bfa7d9353040c498ac975d00800271286429162266762568a02e01e272668409326b0c9a97b0d0de3e1e454a2d3cc542c3e6602d614a5258638c3316e9a426c8e4dc730c3f6b86198a6618cdb98e1d8740c40330d3d86594c13d7275c0324a7657cd2a13a81bdee6e2436ea2a42e55a3f58ab6f2792a25a6f90fb9a6aa51eecfad0977db1d555388c769d58622abb3cd38c502e5bb6682fd778eba54b6f355cd97633cb89d87e148a3571c22dae5b6c66398cc813ffed59f63dd7afdf2337b616dc13897e5c9d1a3a8f1e4488ce56ea29a1d7f80b3def1969b34e4a0c84c0621b4a60126730c8274ffb186981cfa5a3fcfcb669e72d336ffbfe7fff8869c9232f4af4621f137fff9ae749ab79de0f68322ddb320c99d6eb1b1b234776f7d6e5b002b4bee7f981a410c604fca68ae9aaf15208ff2d764201dbefba35e53ccdac0a1591894f47689799daecaaf85c9dad4977a1bf9d590d76997fa5ba31b3dadb5dcdd426c1a9a5ab355f678a902560bf2cb0afc7f162a604b66524b472424c21f4a4163798a90c4350b64e49a54dc3cf64d60bdb3b6b20263293bfebeb323221a67f532d07bfaf5bd4bf25f24f83ee5fa41ea3cc3609c7ff2cedec9c3f09daaf6b44ebc551b6a089cafdb92903910cee882495e1e8fb3051e523bfd88b407be9a3bd7495fedf8381b573287d404d71cd204a9fe08f0e04e343d3b67ef12383092c1f7d298cc5c2611fc8a08218a38d0069ad37204f829841954295be433a6d361a7ef3636cd2b6bf1013d2da7ca5695bcd6b27782f2aa61737c34f64259bc8d6e2cf305139d0b679404dbcdbfd17809a96bd077b7a24d6861978ddb731f182a344a285ad487d96d059740f42f05a0acc072309b150085b772a71845a29f7ca2bd0ba7339dbb6d93d942f48085fb70e11a0b9db1d7855c6e720a86c34aaac524d409517c45bf79788d0710b7f8f8cdbc5f9ddb9b9ddf9a23d4ef8b9096b79bafc886d3f529e5eb626ce71e0134b4ec531a6a60ca7e22c4d347e616b628e1b538b8b53069f9bd8fa8546d4a6c8918db262fd7495c3c749399262df299724501856b1d0c8b66e1e1edeb46c38bc7968fff0a6651f364dfbf0000e0e6ed956fed68154b0cc03652a90f3e587d0b3e85f8ab7105a8a335947b29ff5d0eccef96b64d46c5de25ed4ee7c125607af8bdedf3807e7c16bb8812d7af45357a06a4368aeeeb76a8f7c6663c0245e8d9ac1cf410348597762baad83a410d3344cb04ea94130a18c8ec5c666ede464821a84240ca3e43143c326d7b89c823409488c0d499a4628a149335588c75dc3cc988592f1bbc4641a17cf62e27104138b718bb284ced2319a8abd018881b949593a66c4093589c6896670c20933a9e8a5c4642cc6684237dc04330931188deb7a5237b396a15b185322ae4d594692039d3e691b869c0a354230c74497c469c454966ccbb2e6f2868535adf03fe50a4cb799262aacc8dfb8b8122be19b12c33026d2635bf3ef2dac11ac9e274a62892a601c37797ecc9d4f270d00468d8de5588a305dd300634d5c693145ed86b5982e9e93d7f5182698329e1b63561c8346a9be5249ba348a33d4927ad9323a8b1e1bd6cbf8c07ea32f1060506bc1117b9e78efbe492fa05ab16cfbd54065b25f0c8fc15c4083665bcad40780e3ba12d90e7bcac24d9fe660d7b4f7027b775bb2b0c88fee41600dd42866860c02d523b12f1999a3b182b6d0fd12eb34a894574ffbb90a996cba7790971c8f8727bc7e4e9e72ef3ab7770d7852786a89eaeedad765ed763badd6a1dcb7602f9a55f23beaf43571836d820a9568753bb6d56e07d9b5cd66beddb2ad6bd72c3b1f8228291bd87e084607611d1b32aaa016b83471c0ee1a09af6d788d748f93a016469cc1e1d9251cd3f5b806f76d6971538fe3fb25d1ed3523aec1f2a69630f4387e5d0ec774213575ae33dde4df827346ccd4ff8510294cfd63dd3f316226ffb31ad765288798c33af097d0414fa197fdc8a87525e3d7027bb992f16b12f87c84f36d35e3f4cbf835372ae3b36cadb8ba21ee4bdf09e50ae6260980693349842f857ee613e15bf169db1632bfa2d417423f054d175702b585d43f79c93034f875cdd0ef9dfc27038441b2176bf19425348bf1b8c4ae8b712dce25997d6c2642666f8e2730c792cc1e4c93c77b64f642f037c7e2b1a98c93cd669cc9385c1d454e14d5d91268133d80de30c4b98687d5e4a355eafe5061b7af8be77d356fdd1792a941ce042aef661095b019441d6c9e21040ef6b3854276df291448a4a7079c49a62d7de5a36e0ed84ae40fb4036bd2ad1e631b89e89145f456f4de11790cf5c14c233a22f39f2dc21d004dfa71010600ac9a613a92d9db82370de46e6f2d5c3c224df7fc4e686f39d34b5b93f9a12a794948a3ed5e6ec947fb92c52f2c6c1d9576beb37d214c30ff68ef7edfef27b187f2bd7cb73e4c2e69b48fbcafb98303511e25415af6c19ed4dff2b2fd3f8474e40ad9badc701b55ee72b7bfd394cab29daba27315c083e907c73efcb90f8f35dff9bb3d03816d75db6fa30659bffe364cc1366b4d79cd83ef7c6b30a9e70859bfbe2b1a2ad967a798906878f72986f5a2df8f7b313567e5abe591f0fe59e6f4271af473a949c3c52b96840af25fd6fb3169d9a6327599f64d155de4efa92d35535383bcefd5c0faf3e9f71183de0cf4cd57826ebbdb9f8bd981dbd0414cb218893aac6e54b9db48cf320e2c5b73231ab0b260f78cd61b035849c5685666271eff687157b33246f72fe2f1773f62662cc59dc4d83ddb946dce2f9c81cdf9ee3f0b209360436c650a056855125f3af1f9db8810d84a547efbcd84a8d0fcd8b8f9f4d3e6784c85eaef8d804d8a8c478252a88ce6857657e56e44c3731bb898f2fae1cbb9536e54f94fbffdc0b71f00c4f582638df1c50716e6baad7fe375ffe7a0077addbd172fcf5ff0af4a9bd982ae2f5c5ee87e028416ee9b5dd6d6ffb5377fff0b28ca851297cc36e7116a4454bd15907c7242f874fb73c3ab1148e27a1fa0f76f7cca9f903e65a5e18a693fc3d3e63301c89efd09d54c0b5bada051bef4297f62fc141f736cebc433d6187f4605a9b52cbb15e07c8718ad7df9c1d53ba10a4553708fc2bcf1736e8fc90c6e47736d6311dc3b8e622823b3b64fa065544767d07989f7efd54bd4ab975cc9abe02b36a0149a9253aa7b455fc971bd7ac90944a892d869885baa620b5a9d4eb7d3e9e45badbc6db53b70d8ee483127df695bf67ea7b3dfb6eccebebaa0d369edeeeee63d6fdfb2779bd0dc6d5a76d36beeda567377f736925fbb4dcff3647a7724bf59f9152e22d418f42a38fd76313a480c3cc2ffac107fdba66dbf41dab0e40778c15620a20626c5887cea8562ec75db54074dbbd5efa28ee0b4b7510e7d0c7d0da1b450bfa201478d2040880eaa4c77a1a16dacfdfc1a5ada4f000d6eb521caa3fd416b728c4c2ca773e5b869cdcc10d3b02c731240e71696714998a54cc3e6c4a41a13ba17353011da8dc99945695c676316b5638f02d131b3081bb38c186686a4873698b85d6a2f8418fef57a36ce0c19c62323834cc77c1d310d5d6729d34c1ba61ba7bdd2c0e9e4543c6e4da5b2de546e2db7747d2931be94295e2acf9dfb036afabacff25ccaa104ab702662526e2ac52a66f2dc58767ecc3680327d7d29961cd4ab0cc998ad59863e3196caf340af1a1f8382f89dc93333e32b8e538cc5b266c29a4ab9ded4f85a7ef1fa52c41ffb79f45ef432fa1b927faa5a615c310dd4529362a96c6c64dd6cc63b05b5cc9ab3ba263e4f414dc9bcd9356f35e3adaed5d6566b67c0ab9d82da19503b0d7174436ccbd8136f7dadbeba565bdd90ffaf7be7c0cd6e34b6a05e4bc10af0d446d64d352a8ca7ce819bd2105846f3a513275eba665aa0a5ac2b6f2d80af5b2bc31ef460937da066f16ffaad57cc94d63d9cdd699cbf3e79abb1333b79fd3cbc6cc42136353f3f15d36246b72d04da9866159686ec85e2df7221069625b67ea5fb9e5c86c2837aa1d2fdee099ac9c1994a81777faf6f8d9946ab681d9d12e3fb789e8ef230b664bd582fa68afb03bc98620bce0e614e8abf9120b507fde6fe760efa65d20c1a17e51b896d29b9f4ee50f011f897f2ef7054b907813151aedd3d385a5f08785a6ba88e4edfb90d47a3c2a64b29afb5dedf282a9bb71d2df9fe6d04a8d36eb707f08165734a29b70fd1b3bbebe3c60e94b17ca732a64739aaa0982a021aa59f1dc164f85a4a196dcb848ff680faad21ded1dd2f4c6135c11bddeb42f57e444fbb9bdf3eb2ebddf9b7bd306b7077b867457f3beef3510dfcf6d11d2600e8b5e1e3237b49f8c3776e7335c62a47f828c5abe7fd853ae29d1fa8e6b0468c23f9a33d00955edebce46b3a1659cb3b4ea9fc78e0a1e803abfa68c7777484d8527740e33a1aa50b0d96b53c8ce3de0b6c6d1c0be3958f142552c0cf85c5eeaf0ced15a40fe06bec48d8afc1b21e0b57df381a15ec24b48e42eefac61168619d76c4c51341f45aea7b2f610587dbb53194511469cbc67121033f39aa48df38aa121f19896cd659ea7f2fc1db52f9c248e50bfffc786a3f3e024f8da1bce4dd69a35574165d416f404faa18e27ae8c10d230aa33184d1a841c9c01c610df320aa72f521bcbba5bae746f59e4f56abe5f5f572b9deaa97c5c6c06e329b4d265d37d93d0cb682ef3f6ab576fcfdd6aeb8a35eae54c467797d60f7567053772fd8827cf0b0ce6e785afa7d0fe0005aa82433d342e6d79a9fd3192a1d41737f779f184284dc175a65534ec64dcb26f8b3074028257040746aa9a4f5b66d519d849ce24de40a5d4ccc79d1892598fa782f4967744a4ea397b4e3c261f7203a0929188f337e17186ddb5330b09bd0ec9f76c4ad3f39d616e89bf350841fddaf8bec9991393ccc867a4d75f999a841901214d4ead670c9876ba70009c5ade19cd4bcabaa68e11828481bc30860f108c45d2fa0a75aca8e50ebab9e657fd9ffdd2ff710e36edd73fdb92b977ec15ca799f43905d97e6e6ccc4e362ae5c503dbbcf865bf3c5f0ec1eb7e6fdd78ebc5abcf3d71cf62a5dc482615e3eed289ead94c86482c94033884165af2fde177650195519296bdb5f06ad0802dd1beada0595f3dbf639bd0b2cdf6e25688baacbcb5bb418bef6cb755bc9b19e270f49882143e9c90f646c504f5c0afd203db12214e0ad47d9032b71400d6eebafcd712db92e4726085f73c6fddbb8dfcafbdbd03cf6bf5dbd4a7d149b4adf0d953bd1001d737959602d3e92086d5a099b8940f8c81d7406e2a6ff5416053b57fbbdb56c2b3ecc07df153ed9e7df9a01790d3e9b7e9f662e666e42c7c07e747eb9a501e02da297f6b5f05034af816e9570fe372dba80d6db48fe22a2e3162306d49694a7cec87c67908ed3067102a17ebe19c1f9d0487d20deb43861738ec367725a64cdb97c7af496099b6fcecc972a8699bbbf2bccf9be2ef1c0cd85974d4b9bd0f2dc9df10c4d0de8f1e456feac7dfe7476ca7a36c0fd1e3771183fb4772a918fe7be188efc13f40c1c2d31eda002f58899ac1a1dbc397f79e807494471e1cfadc037dedd038223e385aaf72a41df811bc05e5238e07edf099c1fa1dd510ddff307060b8fee146d80e5eff921fb9246c831e26515231950dcf3a1171a321348a7604705185105bb6fde4cd9b03934a2e844082a6e873c15c9709d97b17d08a44c2acf64283c2dc75495a5b121f627673fdbf10faef1b6d62d05782798ee0efaeaf5f93335d536edcbce9793026b3ca025c156ae2a56bd7ae5debde92b4a0b966fe5a7ffec97a94e533487fad47f86ddc865b0f1cc411821b9fc166f90b8f02e69470bc17a4127dfc3ae1949ae44bfe20955af4d7cf618c35d8251693d9406fbc081a26e49592efc0ef2b9327e3ffa7a01a3aacaba55e3246c0a1ef3506ecf77068da5f2226a59c5cff78943b9f720c8f7e6139b0d7776cabf40aa1185f901cf93e653ed6ce7d5d95b8d58fcfd24235318f35b26e76a3b1d1a826a05aae52195324adf42e1f1de470d8dd6d64678baf5b5a5e2c5efa95694824bb3f8d3d706f7169a658c638b13d10d88096531a76b2d962657d39f9a79957675ea857672b95cb3345d7837b060319fa727393d2527261840fd41d3830b83f84be586a06866adb6c879b2f8d3a68f6f7fcdd282266331a90e5f56232fae38c83f8ffa168f7c1f5f34efb80c290b1134140a765db1722b8ad4f46d47fe40797e4e4ea7afc66344e7b4ac8278d700c84e00c11ad39dd63854c15eb3c90cdab0743e0c2ccc01f6d1f58f6fa5ebb7bcbd31206344d7b2f6ff561052bbd1bced956a7ddeede4aaf1996444beacfdf2cca364c00772444d33968d41a2b70329ac37f16782d7d2c6e323cc7127af7b053c0063baf27c8d6cdc01dedbe3c0a06f90bccc0df84bdb66eb3f334616c057de12fb28047a21ba3010cde025aee614c051db2dc2f6915fb77c10b1144baaf062215dc0ca27bfb5159d7a3bd33badd570e21e3ad0c454db803f25bb19f60add4170ce1859dccea76fa827a425468199814042b756f8536a568390ab21c0315bec3c008e54ac885e918bf1de9f5038bd3a18fbed2926c6cadde64d78b5dde08309a438ad3407df7b77aa2a41a03f57045d8df1315558eb17e13b5a9dc6541dc97e242539ffe75e10134dc26d0df2683592dd5c1c9e030e80fad5e92cfcfd126d1be3a25faeae0ec5aeea7d91b28d641f0ba6db0235de20dbdc37db0d121e4cdae6dca15fe15d38eae411bbe5c3f0aa7a3dfc8302069974600700c1dd85787952d54349eda8ab0f245db2329e7eda1d8406f44ec8768a740ca012facbbb9df678d6d8727502fb22234437bbdd1255e0c0de7e31a3a8baea3b7a217102a4701e28f8e4d8ee4fd451dfc3090e729c45f1fd52e6a87ea73bdef6f2d5c1c91e444f0ec45a7909d5a9e995e9e3ae90fcfeeb7a697a7b2d9a9e5e919f53d134d48b06cfbe43f5cdc2af6e70f3503e2c942f61fead5fcf4f2f274eec44e7017ec2fcfe4aafa1fe8d59c3aa3ff63bd9a9b59ee86c155bd30ab1017e34072f79f41f7a1d7f98838b39568fee440031460137ad4cb47b4439f59ae9dabea85d5fbb933b93c13d4547c8f5fa81464f196676e07594bc1df7ff2bf0fa6b2e7968d8abc2857d57fa09f086a762357500fba8dc2cab522ac92ea01913a6ea00be841b4a3660ee9f5678b12c8f7c8ba9e8300ba402e0211ab6414f1bc0ffdbc2d2a56705a89bc1554537d4f382c9f6c2d6e89bd236b0b2d59b58253d0d9affb4d93abea3ff4dfe778c5488c6d2d1464230495ee86c499e0f5428922f15c3276a41c40d8f813430fc37da0cf1f3ea7dfbfb272bffe9c786664fba73eacfbfed2e6e692f88da5336796c4efb5449f165d38ea87994397d003a819f5311cc3ad93ee21ff4b9d262571f69d106b9fca709192e3417b9802a5979ed852b3c77ea7b30bbbbbbbbb1208fdd352136a0f51a4bc2a5aead5a24ac7b3ad6ecbb43d2f0fb9eeadbce70929d6b20f3cafed2999dfb8fddbf053f88898ef69b9b151699c83daea46a3c26c8d655c5e99f5212f1a1bebd54676ed3ca4d536fcb4fb9715dd64ceeb137a73d77d3e6b185963c2308c65236f98a66be48db93f4b2c246c3bf57f9cd053c9ba6b1bc5aaf3ee7173c21c374d63d23c699a6abbd2ed2612f6bc8f458d1074c01bc2f6f50109b677f6ceefec9cdfded9895c3b1273b94f7f151de836926b0feac7379f5318c92112528d0719d56e809525714ea08d356801b638b7f02e6838b20b2dd0f01ee1b84339a77b8039118ae15eb08723659deb5fd7226246b88829e9a2dd0c32d1a4912ad83c08ac585ecf6c15c44107bf9143a85c0ba39fb1afdbfa984ff085368e731ec76d09fe862c5b833220a6ebec36c2148bc7638a079ed78b38746b6100755aa246fbfc881af49e0b525fc20cdf96cf05841956b97cf0dfe0f3680221e027a151110a651438262b9115e1bf3dfde4d8d3d5870b25db39f0a3e4bebff8e6d274da84134f8f3df946335d28bd65f180a74da7a0f3ef3b76a9f07025cc2b6ea3389a908c0fe7073db5ee9dfdb603487f3b8754d7a9c49f688bd7d9669cc3e786ddc89fdc17d7ed8bebf6752ab6a9ee71263618073490209adfe74c3c8df13e39630abd80de8350e358bdc59d653c400a08572b1f29c0076688cef9fc24441103243ca837ad4501014e827710a57109d2bffeb339c6df0f00f03e7dccf473dee1fdd462c9acd8ce269945f36f023f93df1ce39fd11eaf9e0af6f735ad3d923bc6d3d955a213c2c955a6ab147aa2936b94696f2793a96ca1904d4d92b76b8c2437894e54d8a6ce9e808df112e14405105e83fe76bb8a1ebe53bb453d55fe609f82f58d4da84bf6fc14771a11c0315c4db9a991ad02537b727ce35ffb84b2b9d8566ed76be53c7f972fedee8eaef8ffdf9f369e7ea3866debd0b4ffd6a5279eb8d4fd61eaecac34ccc02eb3badfbc04f397ba3ff439f6557fce472c699e8cb3e9679571227d78108f64905ba615f085b4fcd86babfb8a5852f63bf25f5bf1cb28f1f396cfde0d39cbee34f3cdeecd66be25bf9abbcd66bf7efb2cfa20fa89780741949e7777995ad568a6d6ea6cbd7a37995ae5c0ea902a49a4c55ec2dd71f95677113cb8b6f1da8207ff419e250c6ad120584c9381800c6b62458eebf171cb740ccc313638cbcd11a6699c6a0407576b4c6289c95c293de6184692b3849ec931583db4ecf5fdfd753f2ff07fc79c6093328beab698553010ac318dc638b708e644a3e25709c3581441a7627c198cc40d1cd3cf6a846994631ad799210b27eea59a3c28fe69e2624c4c46931661f89f3ad32663324e0dcb6ba97828d638a13a2658e7fa788ae9a06990f91ba98c4c1e53d1720463aa69a0da806b1833c6c6e2b113130f66fe57db6a7add5daf19aaa15fa5ba269e4e5331a2eb9af82d369db36c3140c42f6b6a11c59aa681c1692a664fc64c0604b3b982616994cad60631a2fc0b41d3b8fcc1148bc86b169a4473e8910011484d118da199bfcaabbc5e7c6df9a910f72deccf455219ac5c3bef3521df9ce7c3c4f904ebf38ecafa5c08bd177b51dbe16dd4f45aeff9a30368df45b66a542e5d42a7d003a29ee9e379d87a15d8d8044eefa6513e82475664614bcc7205675e07764c43c052044b3e026aaf6f2da88a3805fee363db22923fdf4293e839f4d21df02978c6d767aa7ef6676d05aaa57aa3e83656a0ba2aea5b4b003f0dab3db5416291d59c7e64f9b350e57d99079272e9c6997ecc90b6689f75c826a98e99c5921356939af81d7940b4c892fac57befbd18cf93a4294dacba4600b2c96416d6c52759edfe71e0a7018fe01b9b389238a358cafe474dd392594dd3b498d964b69e6b268adcd26231928daf4e89dec42dac697f249e118bc9a88fc4c9a5d0f74322f97197d017d017112ad74bf586579f7d2d2d2144f1be2401188917e90d213b4603aad5ff62ea3ed78f1be7c740385ebd04cd5bf90e8bf3635aad6ddaff2a6cb58f612e1355b371734c97189004e3ba4c30c5946083f2182144d38061ac124e9986710db0d8c53a213a26542229fee29933bbad7c730de2d88dad4e89eead872d1b8f8bcff7d856de4ddaae6b275d10f3b18af19609ac095d4f19c4100fc414348d101cd3a98e311373b5f83183d2384f26a84e30d74431382606a37209f9e2c64634273586c6d11c3a85ee9591163d01ce8d8ed8c8767a44287f74caf30e7d8a70a7ed6f7cc0cfde58e90fe8ef069ce2ce7e90aee105a92fed60e3f600f25c7e24a7b8620243b4546d843881a2bff8132b0d4d125e2df06d85456ff0aadb704b7038fbc2d505cd62a203ccea78f67cb6a0c16cf723dcb22d0d6b5e65d9eae555fded672f4f6d3ddbfa9ef79fb2cf51aa0106edcaa5ccc76122833979fc066871c3b4c1fe7a604df866e16f7ff89b3ffa919fdf256d6c3154475b08a503e9781132d9740f1bb25fb4f4c991c2c032bcb65a5a5b2ded2fcfcc2c6f8eb51efc2f9f93c6d5cff590bf5a967dc3970bff955c62570a0b2bf97aa31eeb3eff39c926f7d4e7fcf3379e12857c2a800d03bdaf6d2fa1cbe83984ca4eb5be02f5d94ad5e1a9c6ba1c9eeb1b8dd94a9fa02b5d75a123b1d613741350ca304eab29b7311c37d11f750c07bb5682c7596b1d9667c4320f111958f91d2307589cc763dd83ddddbda10063cfb27ff77b973e624ea5b0f6ed4b303f0b186696798c41281b773bbe9352d3dea844e3531a4e4d99df13c2717528bcd9939cba3d6cc584e41cec57e4d225cc87184783f4ec5e72cbde8bdf114abd14fc5ffc0ef1b77af6a7ee01ec00e372f36bea3b8a69d5f3f13dacece77dd93677d81f34f417079d9707fd9978476e81dddb873b3aff20b21dd553fb7d97736811adc97cdbe1c8cac059d11b080d85cf925a5f75d6576b323234989e8e5ab47f3608361fa5fbe687c731a1c358943e9f9ce9fe96acc39341f0da2c746f024093e04d785256f2b7cef85288ba31c4a8eaf9985950dfb282342d0fe1978f201e7515f8292d1e274506fef24e770f9e1ac14b4ef066f72bd24d04bbddaf8cbe00e4dcd0696d62934670be03fcef4d890bb9bb391a277cb39753ace2f9c6d08be8c3e8b30835141274141bda1db950dfe5d22ffe0fd4c0e8ff629957570e65e30eec2fcf8c0b2d8411a9d1d0654b4c333a254ae6a76286d040acf28c250c3d21012018d6b46995c74325e8b32e1513a9636046a841a9410d9b32d67e523d1c7e2330169a2167a6dcde3ff06fc60090ffecf730c558a95a5c812e336a326a0acd48e14e8b059edb0633840a8629166a9246352c640f8d5984ea6296241cf3a4696463534237a418aef6b2e86ed966de4c26cdbc78473ce2939b41ebe832ba8e9e47ede1b96570ee28b9a52142e15263303e6ebd524a1df1a068fc9c1b75bcf9f78d9c8bf6fc6820392bb7a5cfd1c76d082ffc84e7e738fb8eff7c783d747a2885ddc3de2dfbf252ff36c98d19dc03f9fe3b7a3f28a6b4b0287d789218e9288666a52d0505285af57ac909b35736c169b8f5483466c9290559548a67d44f2369799eb22ee76eb59a7238ef42d3dbf5bca677e0dbdd7339dfe2de6de5f35e1e727dbea969f4307a0abd6dc0033d228291dfbd4747992caa477874603f27265135dd075bd78ff3eaf018e7317e38e0d68166f008d3568826a2d55f9e3adebd332546c3ff6fd8bd839011ea770672d0349a471e3a8bee4757d1436256f23bae1745472c4bee621ff26113e4250d2f38464b3ce07c0bb768a3ca81bb8dfcbbbcbf233bdcdf5d0872b0bb5f842daffb5955134b5fdfb2ecfcbff4baff5589c572dfb6fcdbbaed172fcf03fbf603df6ead8bc6787691a52da7a0f3c51929df746f59b6679bfb4aec9197eccaedf6fcfd2fc043df7ee0db51feff71655b97ea2c7779894f43a3de701bd5c639d0902cdd07fe22f747ef7a24df5acfbdf019efc50f701d5ad982aeffb517bdcfbe2befb5728fbcf0c7f99f7d80a7fb6264cea30f4934ae50f5af7b4e01dc9a3bc4edc98506e894ea2318dc959dade19c8346dd738eb78d38a5fa0a549d6ad41cf78d00f8e1a5b66eb36c6faac8325b6fbfd40f1201678e3831f2213f0bc0e2f71bd860ee2ff7425e7e39cb4cedd4fe207dc0976deb975d60063eb53f0af3939ab8b87f4a3319b8bfdc0b9ce9bda71642e523cd2a75cf59cbbaf52042fa9c0c88ba637309a13d58e912922a59be02218f0dd5fdd3edc484a92202cc8944fbd3a35bc8bf0a5abdab9a83140ab2cd3ccb788b68b1b7189677747388ab445ba8abb049a54d3a8acb7b5ee6c1fc35f491a3638aa34a6ae3d83c7ff9555f9707bd357989939137f4e1fefa1bf2eadaead0f90009f19c1f6af0e960da3a0a3a60a1523e954c2693a7ca9585c8f60bfe737e28d45a5d4febbafcf0155e9fd2de0f60b1ec108d5b0ef42341083cf1e8f2e242b9d2103fd3a8941716cbe2270f7bf7160a0e2ece5c9d9e9e9ebe3a53fcd7a1bf1f87b1b5cfa28fa3bf40c837868716f75a606b790d16f705b893c5ddbd938fdb87d8f92bb7ad1f67cadfe709ee8cf33eeb7b607956d67712d3e3e3969531080bacef1c94f5dd876d8c9adfb1a55b8e6126d99b067065fab85bde4e38d628265c5396e99ea59dc6a4a51df0084b3bc181a55dc35c5e6f529634a5214ade6b316eeb9cea12d18d622261edbf20ede67fb5a6f842ff742a7a726faafdbb776178d7631a612a175ec3a1e15d034da72c1d8ba528d335d1f8341923dc100237a1d2a88f50742e5df3fdf5a351f78790fb43dcf2ae041cd99743a47d2d5b28646f8a8f6beac0bef854a0dcad8293151fca26d50a0ff93ee843e9534365d1a3fc4967a311811cde68c061e1030fae9f5cb9379379ec8215cbc8f13cb93e7ef2c2a399ccbd2b2bf5e6cb85f1faa4bac2b22276997134892e0728433d0f5524bb27e5c1dd6053f9830d0ec59cbfde6eaf075161b976bbfb2fee22634bc8d3ad6bdddde66e5f8eefbf3c1e7d4a3e55d407e5648ccd18fa18fab7d2ab10e10b4a092d91ae40b5f65a35c29e2ec8664bce1970033d519d5023bc7e249fd07aa54aff1f2aa4ce288b744f213d2b7438097eb85d99018ae1f759c2d463122643d3298d3116e3bacd994589ae615c52639361a2133d4629115a27c13aa17a40c823c60863cc36cc24a5b4a4a68198a4274a701ea792b488d2ee21312891b7505d4c1a52b76594589ca72c23c515139086cb72988a89c514eb3561523d2552fbb418b39835c619efdc509447c0e444040033ff001033c9fb744bc316672943b7437d59d121c5753d691053ba0399ac088debd40c7ea2207e961312e3668a32c6759eb68c315d4f50a613e5491415e349239631d630975ab29cefc41c17d7599cf13865a6989e252a8a6dea1993c714d3929a51295186443dcea8259bcf204626169bb0e78446ade30897e5327a52662a0cc2ea86faab3b6475490d60e206119c2343064a70d8fd449001f858b0423f166401c22f0e1ce87e42ea0bbf38704b3348c77cfc6290ff665d782c6aaa012f3c3260e67a5c4693df5471a0817dd34145b422b39850b9085518b2fc57a3394b512740390cfa98650e8fecc061f739f8db76f7b1882be0a7be23e01d814300d0902300c1c54c771f2e469d0187012f42380387740b0162547f3cff2e7a87e4940e911bab924e7734f6c5a61cbe351ecc1335973b11126ab7b696f54e412d92d1536b786e8fc8a4da704bf0978a3c06c3d2652f95c9fb99c7a6ade0864de3cc19c3f43229ef41c22471ddeb5f0f005ba0d9a61ec333bf3e0d38c62d5b833f59adbde50220aeebfcfae642627e7c4023cec51cbebaca9dd8f87c62611bb0c92c9b68f7df0fbfac316cda3a3b778ee9b68999f6d49bdf2cedfb1411dfcff941f44984cac765dcbb4792332d4029c821f6c194861997ee86b989aec9fb795535263ca61489b6bf62dc38132859dfc09a91364f59933668a037e616b68a13846a90a98e297a264ae393f6cc0327425a26aa130dc36d94991272473d932f38ff48cc0b01b5d78d90466006845c65668c5356acb8b4b538bd16d353263529491aa9c53c3129b7b93d199b5830295092b4924b396252acc0baeb1369f1b5a14da5b385c13ca2a2ca236a0c5ada074df3a5f2c01543771c8c4e1942a3728a0e8fc8166a0f04c8f7a570f4f11504e51e4cccad0f86a80fda57cb8377e415fb9aca22ea0151c3cd2856eb7c2f1e5d723b8ef022740f7adb5e349da8cf37322571761f54b1f4d158f9fe50faea40354a23f6a3777be085adfb07d1e483d0aff16a78fea99eaf03452dbe21c06c3e6ad66cfbb15bbd6029592733ac9321331de7d009e4a173e81a7a3dda09320584dc872340b9d2d07824c0aeea6a23b0767b40bd8e0c149660ba1714d26e677777106577cf07d44523c0767777910fafebc3edb69a4db975ed5a3b00da55b8ba616ba814ed6bf9b69aafe1bfc36fa00be86984ca55b1ae6a2bb008922d4f4c4e5a020217a904a69cd624efb73f87890f4dc2546eac57ab0132f7088003f8ef79832fe5896dac2ff131bebc66d824b7a2eb792111e575be92a309c35b12a2854e96d60d9be497b891a7e4573eece712106c9b62717d979a4c7e67c5d36d925fe6468ed29cc1972688add7d503f052dd48d0fc120f1fbf9c27b6ee2deb299efeb0af31a9f5dd77c5faf8e46aed7a0a7d5861fb06fc1d21b66ffd686c5fe73561fb56fb027806231c7ddc9aea240de17d3520c00996e8beb1d88c6dcfc46229025a08eecbb904f74d9ac0a626efd30d0dfea66618f74efd2f21d4aa74933d598ce67bfcd583fc5e6c0e84ba87d0aeccc07d6ddcbe237ef2480540b5b152263259d1c6ce51f8c977c08410e3f0c4140130935403e05c03dae34d19b3e2612b0bed9872c59ba269216d8a6a63fdbec93fec6fd5be16ff7f0147f9a82c1be5b9c6610e72024da285a1bcc0fe99881f0d90dcb75e5851f4631426888726ae9edd5f43cddb0166cf9df085860d5111f1fe487ca1b9a34efca31efe910f292451912e8c861d42c3653d0eb7891e179e76246e13ac1f75663f5a965e09bdd1784efe7bf5799517d139c5cf12e5010f23c743ac19a1202b3b9c1b6449558309b904cddc4a3abd9cdbded9d9ce2da7d32bb9f33b3be73f189b482c6e6d2d26266271db8e7fd0cec7e289443c96b717b6b616c0b313097be7fcf64e321e4fee6c9fdff929d7b71617b6749e5e1acf2da56db1911b5f4a737d6b61714bc938c1987f1d7a137a0ebde788715f5742edcf39dca3a6ea12f7d9455740d4bb21ad0383431d576b1af038bbbb21be59bf76adbe71f5ea467379c648f15d4c9a4652df256465787ceb6cecca0ab51868af655cc36f0560b6ede965825b3c7589e05d3d69cc2c230468fff60134a18532eabde34cf0d6d33e258e67c4710b6ccbff829669747f53239a695b3a3c2b3784dc16e03cc5d1049a470d74cdc729081564ee13272af762b54ffbaeaa3ee5932b96152b100e95b2b4cca9f153af5860e43e90bb3333cb617a28e46d8bc7f04d4d93df07a07596673c719137b3dc0e3dc37bebd3cbcbd3eac3878cb15f346dceba1d8d13b1012dcc080a7cc1f05fe173288be6d11974456179b9becb343008ca9e9ff5fa10bbd4a1c6c6da34643336b0d99350593f0fd07fa0511ebc209a4078184b24620ad62811b312cf5d11fbf5ab89582cb134f3393da33f253980f91b399fbb8dfaf6615b77f8bcae7f55cfe8e2eb77ad44c28a25129e7890e2b3120fbbfab696387c6543ec1497dea4eb4fe9197dceff02d4b76feafa3c77f8d7747d5ecfe85fedfe441444fcc91ce97d3880369a0e31330228b39417c4fc04c6d9affef9c6952b1b6ed2763df15191a199ed2b1b1b57be2a379fe87e4d7d8bb32a9e176e431b5d440fa167142a56b5b15151de82282156908ec5a4ae75decfef7355f8d64938070afa7ca3528d46a75659a55ad9686cacb99201a75a99e5f0ef32fab413c316774af1ccc9f1ad67a6a94ec6720913b49909431b8b8f59490d5c6f62623dab6949331d4f69ba9de579238ee3c6f3aa5912dfd31dc688b1fcd4b24118cb1833e7666ed2c99ab3a95ba02513ba515f042d9f8967993e662c5c9e5a4f646d2b6ec5ac58dcb2b389357b2ec3b454ecb495d2d65cdb76c5dfdb19357487150acc310cc2b2d9a09ffea6c4cd9d4233680d3d88de227924a221009865ddac10ad95365fc5bcd4e02a41afb2a1e4239e102ba7c253f67743bbea86240a155f15a64451713a1dec283b69cfabb351a94285f182e31438bb4e4cd34ce3f2ebca246d9a067e22b13afe3edde15c9fd0721c3877f413243f3d375b3434c6b2fac2494d3b5951d0c73a317ec41d7d119fd01d9d833eae4d70d01fd7b38c694671766eda203ab118d6c98993dac985efb031235b28648d31d6fdcf661a63c37cd7bb4c93e0b409e6fb1eb0b9ae3b3c7fd1d51dae03afbcf09073a5327f29475d6e029bb9bee13d3da5614a4d8756753eff428503d71dee5eca734787180393bb347769be72c5a18e4929d6a69ef636aecff8baabc26e23c84137d087d067104aa724b4a84fd456f499dc5c456cbf050a8ab8760eea6b1b8df58dfa8a8ceea86ef50ba819e608656996392c2b16ab4cd63905a7a100ee6ac6b74fb36ccd5bdda836448faec900904abdb6bee13983073c8563ea140a8e7291fc0f386f991a661a80864103e5f2e284c6288b51c294a7479cc0a031a259561e13d803f2702f63bdf7a18043bd82731b49007de414fe03b728e10480e84c2c861a508c09485f9c16c05e1b54d3e42142340a9880504e0c0c4018a516d7755dff58200ab67a09be2cc22956440b680bdd83ee4528adbc33b5d580105262af87d1e8b395ba5bf7c379ca457fdd29fa8b53cd75bc7a497c7492c94a32293fb61616b6c2c8e6bd56d3bbd6bd15b573b4f2f9661eb632d33367b3d96cf6eccc74a6da68548dc096f9e7f1bc976ffbd0b21dd3ce753af9765bc889c5db1df831bc5f212d9515c53c079699d6248ab5b26a36bcf340ab0d177eccf9a7b8c3bb7fcef93b377e02e2a7ff1820f3c3ee9f7de8dd1ffa16cfea9fd3f5eeffa967f98b32e215b23ffabf7ef5a55f8de67e4cc838ebf308d1637ce8d53e6f7ba9cf13df0800978ec4d73fc2497e49e2cd455ddc51d7f791de6ecfcb1f46ca2fdeef03e8398440aac672ea1f192850a906de61bf52a5810a6703f0bc86ea168b3e06e1d990d0d95f21e011d0123983dbfa70cd00cc844638667cb81d9cf93951e5bdaa78e955f13e2ae28555a4a9e4d730235ac20288d655b5014f72633c011aa4e79de1b800de7da7973fcc8b870c3cb82fc7278776d0d362b584d98a143436d6dc9a2b3e4f4b71230125e528e70b47b7e0eaba774cfbb94103c2c7a84136749d67f9dc03dcd1397f129bf449aa13dd14037eb8d97406e57862b8c962d95846b419604c36c47ccfcb0f7031013f49f0af6346f49439dc5e99f21854f2670ac36da569ddb78bee2363c6148f400a65fb7224d7a41edb3f3dd75c316b6f42aad4907384faab47fefaf4d99c98526fe572deb3917f12a830042ef4bafbd0ecee77f2f95c3eb79f6fe69b39191f731072ca8ea3295494ec20cbc7e03ce294972a4904a528f4d961775d081c70537c1e369bcde6c1ee6ebb79b02fff413b11ebb685f807ed58a27bd8cc37bb87a2340af3acd9ef5f9940a78e9f1bd2c7b2fd1e35295c3d8a05f8c809015a04ff9dc0652d4397f695c2aac939fff7a083ee438f4b196713d6b26e96d9e066451917c10746151bd5cac679a8961c7f094c2932f7d0ade12f9f6ea31a09465904079ec58456a8ae69a0ddf708d6349d2e3003afae6183f9871fbe3163eaf3ba69ea2f26729695d18d38a1d4b2f4e9d8434bbf1fcf73c639e3f9f8d2e76572914e9f7a91188410462f5d62541e79d7676f88fbe1a26e12422caea72cd38da78b0933c79e3df30ec668d2b26cc6d8f5be7c0e51ef97066a5e80bfa29a978f9d0ca7c08335d13444c71ae07b1fd140c33c681b939555db3cf4ce23daa610ef6f1b958c33c020e0bdc6168b65648bbdf574b4c51e1c816def057d3de0483a753c3fd2f17d7d34231235c863c5483e66987870041752f716218f15a3ac9f7e8a41b49c97ef50ced7c4043eb2dc57567cdbd0cab26f535a59f1ed60cb2bbee5ebe49175f8da0aeebf496ca836585ef6ebb6d237cfcc4b342d1f8b60b09c61dc64687beacf266c9ddfb1acff8db26c524fb0cc78188745f0f8eb5255677b67675ba1b12ccf406767dba98efd9026f46496d1cc78807f424d3cfe3a33b6b3bdbd732bb0244462bf2dd93baea2a7d02ff5637fe2b5ac7b0ec268598f1e6787a4fe8dd99e0da9ccc5ba5b802140507f928d442c96b6f3954a3e5fa9c467b70b60eab357aad256aa6319f9f121ff8dbd5306002408bea68290eb5745877fee0a3ceb00d1e97449ecce7725136f7de5e47d998c38303efed8a953e7f395fc44b93c91afc035cb4a8c1b71c979fc4ba21b7ec84f917967102574ed7171ee6a5d8ca9abcf5d728030bcf2ce2db17bdf075f10e7d45c2e0e6c9f3af5e8780ed1d0662cd6dd5989b0346abd758af562142dc93b627b78ddddf5432f9ff243379f0c622ebd68728677701012280c7e2b6c82408f506bf131ec24fb11b8342bd7bd09ebe26f882021976f0d3cd791d828a3682f9c7a3175b70f6eb5da90f3fd6b87322f600d210888c02bd22b28359c54305fd7d737d2e7a021a3cbea618054c0901f6213efdbff941098a96cb3186326a53a963f2dcbb4b7d72b59a763d9dd7f474c761bfd83699953af71d29321003ae869f44184a8922e3da7341c8415e8b7833e98d2c8aca05141581cdfa1caf03b84634ce1460718e763168d3166c9f41eac22a230911151986932e0a92cea213372528639c6b9250399fc282383d020dcea77869a6d0eeb98e864ce9e88c53232a7d7a0d4a22caeabe8244255b4125744b9dccce8a6cd7810d9c4689cb338d3e392c8c9240aee04730c7f7854f347fde40439680edd23314d84e25af5eda862cd97fa6c396a0158dfa8fab0f0233daae9fe6bbddddd5c2fdd31805114834d4cf5ed7eb081e20d6cb05678497377d7eb718285cdd5ecf91f0272ebe24731e9ee47fd3c41dd9624765641c2fe28b07ba718b2fa5557207ce1aabb4c43a3da27a98c9064e031968ef9c1eb8fb541e11faeeb710c207efd86aad3e3678a899897881949cf4c264d2f69c4125e2cf18d589a4947dc63ed79515e836b14abd7f2ea0d797cf38691f48414ee252c798b7c4c0f93e0c31251fabd089579901a591f05905bac378295704125e9448c1762f959ddf0b3e2b7c0e7ae0ff3a3e5ffe2d4da86770e1ad195bfc81f57a2f78d0180dd6eb3ed87ebd431c7f17c6c7c697a7a49fc7d55a165286eab7b9657b6b7570827a081e8f51c030066e401cc896161edcafbf863a21d6ebcaa4c23986adc10ed3adf96c7eb8474d46397660823009813ac63991f4c56ee81ed95956d196ead389f1fc038a6135d7ba0af4f5c7e8d7da2e1f7f85eb73feb53256c023448d25ab8637798fa2637b1d6c45a516384990f6a9ac1bff3a9b8c3178eed0d53ffd16484690f5e254c2b8a7b9e7f50de1fede38be8bac2a73d05b5089743207547381d0aaa06fcb5d41dfe0c003c62d0588290e2a7457ffc749190448cfa2ee5eca7ee6e3cfc543e8724624c27c544cc4a14fd875e13f7eac4bdf7ce632382cd21dee3afa1bff95adf6438b709c525709a24c04f79ab9c8515a8f2c091b20255dfe1b409e7a05115c736d6a6c5765de94253500037f4d014a02fc8b166ba714f8d89631ac6fd9d3ce59ce68168698c93d8206344279cba94111d67b0419284a4350c1394313a115e86d344278cba94138e33d8c4298c331a7e29373696137f1fd513c43bb639dd2f72226ed7491a1b3889715a23304138271380b50cc6296ce20ce1a230445c3646fccbb0a6caacc9cb92c42019cc27d4efe6fa31a8d3c8431710a281a4e64b6e42182aaf65dd9abf36f77a6ea3d6f0bbac1b4cbf3e814d1f6daec441db633d9c18850e2a3143db0ac6cec7abf3d11a762d1b9addc35ba14e1540c31495aeb51b5d3fdab73bd0860e3a2964a3b22cdf29a8a928c76aad740a6aaa8c8d5ae314d43c256bd43c155653e51eb4015a8063ba1ec3d012135f74af7de5f31d4cf121d7757e8829d69876c80d831f6aecb7bea6b885fcdc9ba644efae546b55ee16c0f76e9e852aef055cd6d2a5e85ec3133a7d2318f462302c4089bb81e2d359279c2c262f8a76b2ec8be7408beb62227fd79545c016376d4df3c4c63b0ccea5e690074db3ce2f4ab333d6661ebe480c2a0df54f5dfc6d6ed826261a2cdc43996d128e9b948feb9998b86da25c3819e2a3aafed0418fa0a7d15bd18ba256ae93614e8d3bfd12d859a87a2b701656a5e12898c3cec1694d2e59d171572b807b1a828ad168ac71b95ae44e319a175682435d87b56c32e9de7493c9ec9af451104d97a2b29924b978a1200133a60af11ccdfbe80421c143337f1be5613d1e301dece7e298695fe63d141cfe25cc705cd3b0c545b5a756e359c2f09478ce1466241b971129db0190cc7b9acd5cc8a98094ff5bc9f9e3680ecd2b3d8796dca2cc97aaf58453a796cab028d64abae478754f7c442b0c9df5f5ee4d0d8c13eb4ee17d8f3ffebe42f747016e52bbfd4abb5df5f73c0f34fd44c18156b650c8763b4ea119304780d7e9743ab7825db9e67c578eeb05d1331b35d9cbea255f959d04a73629232094d45df5d683015d0e688a6bc1707703e1433ca1b605f57f2ee483ecd8c9c9c643a0c562136fba9601d0b4c525587da851f0d2ce49d0346dd979e8172663310dfe548c1b0dde359679a821050c9997b4e0d69e38f716c04038bee789e9c643e399b73f8d255beaa5b7ddf3a4975d4c4bc940c806a84fb79cf2993a7c442b3712a8c283986627932d07225418b3e24f606a57dd2bb77f9c9b294c2467d3db3b3bdbe9d9fbcc58cc9c5b5b0350fb4975b6e41feeb89393ae3b3909c5dc7d27e6efcb99facef6f91dfdbf8c7b13139ecb4e57aaa77fb6737e7b473773f7cd9fb83461eaebae3835ce4e572ba733ee99d9d269c7d99a2d9df66377c37a29069211b56afc9c35f9c26ba9807ed7852643efe235bf09fe5a5bffd1d7dcea95be4203cadfbe25f99ef614327035f2bfdaad0feba3deca11ba6b9886148013ad66bd21e5d5cf4a540f2f05eaed88cca515a886a96cefc614e3b86ea40c23a9731dac24630c632c3125588ca5262d23a65dd2286149d3ccc61393762c178f654d334919d334e094e8ec5969432000d4a2944a7d94c6b93e669969ddb03933098867609e32ad5c2251482526e28971d34a71c6e50895869e7da108604da3f27f0deb8c260d1e53b9911a00d7e958cc1cd3ad31ae5b32110a9b9ca52c2317e7366709460cb9748150b6c5022e41b1b82655644e684c17d3bacde319dd4fa4c2a650dfadbccd6d8ea9d6d311959dee327a56452e0d41582c82786951d745e8c15273ef88c462f778e7c6f97794421a14db9a997cb436ecda12170cb93f6a4741c141e7f4c9f5f089965d9a1ff66f89761ff66dbd124d7be8254344fd0497d135f4304230ba11948031a21144b7ee096f7ec4d6149c83f431ae5ff15e865cbe0bb5472767c2da9976e91d4f48efde08e67551c968a5952378be1432c3dbd6fac9d3dd9674e721400d7fbdad20049920006543cc7cee6ca59ac9ba720c551a1b59b7222bd78085b1f4f9f3d7ae9e8a9dda224666d69c4b94cbe575cb4ca49772490d2a73731bd029d6d32bcf6d5ef88599d3572f4fae56b1193f3b694c172e4c4e52c6129bdedaeb6666dc9097bc8352681a6d07f9fe752f346b16ab455fda99062fe3cfd7c779559acbd333cb7965db84e699eebfb7ad1635f1d205f3556b9879d73b9c5e5e9e0e60aaf34d213e2fd9f98b47383d82d8dd3ca22881d208958b69cff5dc6aa9ca1b6ec3adf252c3d350b7f54acecbe7abb9f5279ab97cf3e647eedf9f40905f6f35bd4f56f3f97cf3e020caf992413308d10dd5771482a2ea4f6eaa00ae8a4be12940671617cf241295f7349befa9241262aff67899c6e20b8542b535b7b4f8ece9d3db8d46a3b17dfaf4b38b4b73f08f6717ada513f397676626e1fdd2d6a5fa7316552572e50e42654761ad883fd98e2ad2850e5abf8a83074a8307528307e0d0db5bdff36c737f7ddfb4bbeb5e0f7566cf0b83080fc2d0c1c847a7dd6ab55a6dd3deddb5cd4e8f9c6ed4164469ea7af97a1ca5d1345a44ab088917d3e0c56a231256c823db51287e283ac5bab7db6aede6bb9dfc816f0cffd3c018fe43dfdcdd7d115addce81d76e7bfbfb7b81ce74ad0fafc5b2eceea1e7c9bc95c0275c426be80cba801e414fa0b7a0e7d02f8939f7687c06572c9f42b3cf305e52cba85700a7ba96754be740420a94ce41838be36ae91457b962bd5c81aa18c05e024ae2895e02b8bf247a6a8c1fe962fee81b593679f2f2d80b1a7c5e88939f07ade99c307ecd38e1ac27b3ec8d63974fee11fc8cd01c9ec124e95ffd07c125b62b2f59f5cf133c6a96f2a7deeab94c6c7bf95a22178fe712f17c2c968fdfbcfff4e9fb79e65c75793bf61d75489d6e56ce8b8bdbeafcf9caf276ec73e15d895c1c019af0c7d31745bf76b31969c208660ace66a5e9a26e43422c4de78133dfb7bb22a485696854078fc870c6ecb456afcac08fe9409de48d8d35693771c49ae616c05664faa103f9247077f0889b659c554e6a90dfe45ccff2ace821ae0cced8bac7c169d332357dce7028634679dab4b096365f77fe9e87cdb4862d73aa6452ca3266d9d04ccb4ce3ecf616e7baa3bb3260d7e5599df3cdedac7a8c3167388c527376cab4349c361fbeb0fd3a338d35cb9c9e3318a38e39ababc738f73c7ff9b4ee705d77e645275fc8ea3a77f43397cb0faa124c6518330c873a3a1eb34c53cbce951d6c5ae618d633d4310cc69c69f168d37a78eecaa60c5a71e745efaf3a32e0e4cc95b9874d0be33173da7f52868b2759d829cf39d832cdb466f84f4a4f9963185be64373a88f2fc856f3146f88ffdcaaf80ff2ebfbefd97e7aa1d55a787afb3dfbb177bfbbf299e427e3afbc12ff64f23315df5fd49598720df41842746da35eca64d303224923f02aaad546bc5d09d3db08d613773419ac924001398556e1328bf399a59879cd9ab4ed094b4d065d1f12e5cc72c1710a33d70218b877fae07142c8a00691d9baf04f35bc3c939c349b66cc329e317b5388d9597b3029c330c9d782a49533eff49fd51683ab0fb33c898a680d5d448fa167d14b121f263414f80624e7b51f80bf826720dbfa7ba24a77fc80bcfc4a9ac18123b7a0396e259366ce4c26cdf69d36e18e57443603ee42c577b226335503038c505ebc615b72c4deac7ac6afbe5d0ca6b71b8dd25cc378f39678632a7e4181289a362667df6234e64a0d43fa538b4b4bc54d62503349f12e3642525b6a904d712ec0f250eff9f5d2de2b2671572c0932e05ab47518b0b2de38079ba09098abfda51795092e909a98bc910961f62c707891eb3a7f8a60ddd131c18418f4c3d4209c1383defbc658de2e358c2f8ad7f045a351b227624fdd1b9c1597614208cf72829ffabe359138e634d79754fad9d2d13f1679079725eeceddb67dc9edb13acbabcf436fe07a7f4b6fcccd358cfbcf2a775b88f128358aadfb75f94efcb3c11bf3f58d7397f77bef8910898619920fe3cdf09cad1e286e97399106d9ec7f7fcffb3828772aeb116fcc71236fec6efa013ca8dedc9bb75404027e9ba8d6db54a5654714eff2c97b8889751d9bf46509e70cea6d91276597c0846775715bff5bba205ee5a63f35edca494d3c5dfeca667149d7fb6e7c39b8f19e37ca0e623d15fc26f9a0d05fc30e121d8339697d0ed3a28456d2ffdad5c47d06063a0778b0b5b0b025fe40bd4451c6b3df1123933ff3d4597f7ced62f2c5f9cdad85c5adcd05aafbc3ce54809dea7562b28b7d7e7425c771b122a56d9886f35075fdef7d210c7aed76a7b2b353a9ecec40a7bd2e0eadb7772ad5279ea85682fc0265035691938be824ba8a5059622f3422b11c9be0fa1193c57a89d64b4ec3fff368bde8c071aeb87f3c87713e69aa58c66fbcb3d56a014a75ff4b5bfe9371e5b323bc709d256c90fbddee9e9c2ff7cce42f4c3573cde62b9276a2d56c1e349bf08ac931c3cd6b9869450d9bfcf92666989b7d588f0934891625ffd7330835b85a65fd99c8b704f956357f48fb0965aeaf7aba3e2a791442c33d268cf29f4f8e553299cad8a4351e8f8f5bf7134ac9fda2c77e4a1d084e7f2d3c71ff2ff91950334708c0a5cb9c737e991242efb7c6e3b1716b6aac92712aa96f514aa93a79bf351e134f4f559c4c656cea03016dd5fe5161980aeffaeb70089f421c39a884505a8a94bcca5d67b65292c3797da3515463d8865956aa37d6fe908ff13ffcfef79d1f00c077751d34f8ae06bafe5d00f801547709d97dfffbc73ef8efe17992307e8039c61cffc04890e7e1df7f10291ebbaffb7c7a4574129d95f964bc2a7f5979ba27c1f55ddb4ef8abe5be1295c38c32b1cb07fc510f3ef87d51c6d9ece4f20ce846393bbdac8af740f74f7a857ed9d7a02ef4e220fe74f9fdbb84a42572a5c6706e2cbb3cfd8a2afae2a3911afd75db52e1fe96dd8cc61a11bf6e9f42099447275043c5b22b92615941b757236fa04a03955813a54fbf59d5e41555febff168b7d1abc06a2480e3afc9329f92c5ff0dbfc80f9d8c14f954b49c5a68e328a1f3088981cdc3f09a4da84ac03727c89c9033f6b1ae76bef6ad4b4dcbbe695bcd64921b5a51d93a1ec271fee57f3b626443734ddbb3ad5cceb2e7522c655ef9aa28db577f8f1bcd23c7b31196791a2da34d9929f08b701f3c06ef5016e9a00a677c29baaff47e4a9e7208cb70b4b54d3823173a376208cb30eec984d1c0a0e345ac3af2aaa8c6ae40f8ab72d5f497b95aa9cf631d7aa9e52f9f829a285a7d75b6164840abd95a7db5522b49bdb0e4ae666a6cb6562df1129b0d2f590fcc490a1b6275ad5e5acdd4389bad0be5717dcd5bcdd43c3565057d2853a9fddfac3d0d4c5457d6e7defbde9b3f668029503aa5308c88f3f133030c451c810f464af99b014191527f1860f87398198701516a3b8b2c759552d6528b53cbb616ad454a59356ed718629ac618e26e886b5a638cd918630c211bd76c89310637f378539f537ed4ee2467de79ef9d7bee39e79e7b72df7be7de1baa5b9d85d827c27494ac0a494e472b18553c9279e54c4af63d8ac6a164af88dc2a39ab9fea56abf86fb55469c9f323e8d0098ac9645b9b62485c81e24953571e44188bd829452294c07ec6f33eac8bbd7f08e32dd2289ac23485188a300ca16992ab2f2fd77b416b4098213412620a23144c51324263012567e944584084724261244084200142428c85ecd45b242422f6a31145619a5d61594808a68588202446284cb6323464656020bb6706923058e05b121a893091b192062244688c0d9a4dec2c288c4d341173eb491309a191314021f3fa6a74c4b0cf4903bddc0962ffd9e41984821062bc7a3208ad8d925034439150af8a2a9a8aa6e8fdf36aeacbe70c5a46425314a6881c13141ce5a551d2024c7995151222a40926081344cfa7df612410b22fd0298491d77a0463246455102324954aa5187b8510316cb6368964b36b300a6497aa0ea488481028d41a4a319678c59360bc87a28897b50851344d80f7be530da9d0e2fbbaf37444783972814ef532efcb2e37f665478d32244862b805c455cc0a15d75be67b8ee09779d821ec9e237fc1186572c123e235b142c688e9272eb5bedc97ac74ac90108988129042c26517b113cf1025a0137372123539f32b1e1284bc3e6464b7e0a0b918f39a5882d1765feba9b834a52d05444809030829c004cfcf83e3f2a0504e22cd31a7d844288a21bc9819cbe665722fb79e8a9bbf0e9b4fed13ca5670c01729a501e162f913558f0cc66764c4c7656420232315305201277c242516acfa253ebabda3422fd9fcbef1c045f3d56b906f7cca14ffeddfc77ebab32d30e367906096e0dabb8e9f9e1c1f1f663339bd4fe998e38000d0e1c79ef94d351f3fc688c77d9ee00ae69fcd576ac4ec68983d02071eee1af0eef169ea3180ce0ff8f7ea391e1e3fbe7cdc078887eb78471dc7c79f9e0ff5cf40f33ce0f6ab5fb1089d8e6713fe75c522658a97a957e1c71bf9d96531885c86a7ee19e8bc50f43fb4a13fd0cfd086cf23d352edf2acc0f7cd857c72299bba7976f5c9afe0f1f29dd7fbf509234f579d5fddbee35a3fdecb413dcfe79ea71c1fdc3c3e0bd9dacdd3d90b31dc3d7ffff43fffad6d043cdbf883bfbe0abff8e4e6f565cf02ede12fe362ba2fd4fe3abf7b225e1c72f3f017894b0bc9e17f6db1765ece8fe945f8f3630ddf27bdd74efbc5647f39a297a86f297ff4b7e172fe695ca64d7cf8ea25ecf6ea73d6ab58229ecfffc410029130872a51370ec1093817df2329a4990c931b541865a32e52b3b49aaea27be9e3f47d46c1e4325666809912a804cd8213c20861ae70b3b05b784b94251a11cd88c3c5d96287f88c2442d221391fa00ad817f02fe90669bf7442e694cd05e6079e0dca0f9a09be2edf2abff792eba5d950796847e8bd30fdcbc3e1b1e1a3e1375fd1bc52f38a47a1563815975ecd78b5270247644538228ebf7635b222727fe485a88ca8f6a847ca3ce571e564747a745ff46d55baaa7745c88aef56dc8ea989995c99b172227662957ed5f0aa53ea1875977aeeff0ec6c5c595c675c74dc433f1fbe37f4c4848e849f468549a7c4dafe6ac3652bb5b7b2da938c99374355998dc913c97624a39ab1b4b2d4bed4e9d7dbdecf5a9b4f4345b7a4c7a63ba678d7c4df39acb7a857eb37e6aad61ed998cd48cae8cdb99b199ed99e3990fb2aab2eefebf323b367b28fb4a4e614e57cee59c1b39d306b5a1dad06738b32e685ddabaee753772eb7267de70bdf1286f73dec53793de1ccccfcab7e67bf22fe53f28e8295417ba0b278b84458545478b7e2c7a585c557cd718643419878c374d412693c96d1a325d2ca14ad24a8a4b7a4a264bee978694de5b1fb7be6afdc8fa3b65f2b29ab2f1b2b97253f9d486d20dc737ca37566ffc7ee3a30a53c5d4a6884d759bce574ebd55f6d6edaa81aac9b783dece7afbcae6bccd9e2dea2d7d5bc3b60e6dbdb54dbead6a5b6f7542757ff54373aff907f3a39aba9a0b350f6bd5755575972d5996fdf5a9f5e30da60647c35863506347e34453785365d3b9e6b0edb2ed23db1f5a8bad43d6fb2d492db696d196695bb6ed906dc66eb03becb30eb5a3cf717f47f18ebe1d379de9ce7ae7bbcec95653eb948b7295ba3cae5b6d296d7d6d77da53da7bdba77686ecacdc39b4f356474c4773c7d8aefc5de776a7ed76ecbed119d3a9efacececeffcbe73fa1df93b867786f6e8f78cec79f45efe7be7dd49eebfff6eb88be9aaee3ab3d7b0d7bd77a6bbaefbfaef477b4a7b0ebdaf7c7ff0fd1ff659f7fde70fa70ec80f6c38e03e70f783b40f4ef529fa863facf8f054bfacbfa3fffe1f3b0ec61dbcf151c447ce8f2e0dc40c5c1c98feb8e2e3e943e187463eb10ec60ef60c9e3bac383ce6d17bba3d939f2a3f3d7224fbc8c091b9cf4c9fcd0e150eb50f1d1d9af9d3d1cf833edffd85e28bae2fe68e4e7d99f4a5e3cb6bc3cdc3e78fc51ceb3f367d3cf72bd557e32754276a4e9c3bf1cfafc3bfdefff5d5917d271d27fb46a9d1b1d107df38beb936e618fb6eecfab779df5e1b978fbbc7affe5973eafa69dbe9b3a72f7063e22bc80a52df18fb57bf1098e5c6c90882b961b1975280767038816024e1700a82510f87d32081690e6720186571b80842e124878b4181fecae11208011d87074008d88100a244804005c11c8e41863a389c800a457038052af40987d310063f7338032a54c2e12288830b1c2e8654f40f0e97801adee4f00050c35e872bb1a9d66eb3b79adb9c6dad892949e00017244213d4821d6c60875630431b38a10d5a21115220a9d1e572e8b55a87d96ab6b99a9c9a5a7b8b161ac1052e70801eb4a0050798c10a66b0810b9ac0091a965b0b687f4bd952ae907283a5b6d166b7da1b9a2cad50ea47ae64bf4cd642232bbc15ecd0004d6081d60a8bb3b5c96e53a6697450011670422b34b13a2a210d34a07b0153bc4091324b439bd5ec8432b04003b4b1b23b5f804f9edde65236586c16a7d965a953d6ec5216d4da8d76bb4d03796c191728a1012c60637535830b2c50074aa8815da0840296b311ec2cad067c79478bfffe1b0000fffff703b87500790100", - "582112961d224a11bc1f1907ac3476a0": "1f8b08000000000000ffbcfd0b9823577d208a9fdf79d4a992aa24954a8f7e77496a49dd3d33ddad56abd5f32ecf8cb16786f1181b6c02782ce3071ee3c78c07e2e5b19b02924d202ff89c4d20d918b10112b2cbff73e204029b87b2bb491636e44fe25c58b83c3a1b6e66712ebbd9701336df06f5fdce3955a5925add33f0dd7b7b46d2a9aa53e7f93bbff37b9fb5a7003df4242040180dff017a2f88df97df89763d517fe73efb597bf41942657405bd091d4297d183e829f4247a0a5d430fa037a3a7d19bd135740835d026422885ee420fa337a037a3c7d103e869845001dd831e464fa36be8b27ccf459b6805356fbac4a06149e42382d62edebdbafed9ec0f2d22847e1b21d479f08907ae5c6fbdfad308c10c42f0c36f78e0da1584500621dc4508e96f78fc2d8ffcfc3b3ef21b08e15f4170dfdaa30f3ff050b67ce55e04f7ff6784d0e6a38f3efc00f945f238824e0621b4f0e8136ffa271f44b50e82ce0642fcf6c79f7af081af911fff288237bc1d21f2d1271ef82757e0ebf01e046f5c4008b94f3ef0c4c3bff9fb4fb710bcf10c42f8bb579ebaf62644449b9f3c239e23023bf05ec4108297c32308a1db82dfbf4393e887e3e3eb23f48e0ceabd3434e81e42df44f0819d9f478fc007d023b14942b274f14782cf0c82e097c85c3388c2a308a17b9087182a20402e5a4007d049f2336ed9fd37a5c3a50f94b3155a59aebca3f213950f54feff95bfad414daba56a6bb5876befab1bf554dda917977eefaf76aea7af9fbffef0f5c7afbfe5fa07af7fecfaa7ae7fe6fa9f7f13ed7c77672768c7025a8e95fbde72b6822b4b43e5b231e5a2eb703d7ffde2f547af3f75fd3dd7ffd5f5e7aff7ae7f3e281776fe72677be77fdff98ffff8a6af5ffffaa5affdd9d7defe35fad5fc57fec7577ee12beffbca8f7ce5ceafac7cd9fdf2ec970b5ffabb2ffdfe977ef64bf35f9afe52f14bb92f3c317568eae0547d6a61aa3ce54e65a65253fa149efcc7893f0d46e5ff8d3f40b0b383d2b1f23142edc38086e6eb46f73a3b5df82074d1bf42a8ba02f55dff2bf2bbb5b1d93e01ea7f73bd509c836273a336c8d7daa855cada2c94359e02f53f9f93d976fdcfe706792ae54119ad4afc857caed05cdf3c0eeb837a5b1bb53afc02e18c999cdb06b50cdd310c5be706246cae6984505d6349ae995a76d64c5af88ca669996462c2d24ccdb152592dc9ac6222616b9a8631e68c59869e37f3e5546a22a925196398c8bbbaee24938e6164384f504acf70ae6593c9a9144ff16cca72785a4b4d269359ce358caf708b8b7739018a312598628c89c1b474423319e5845000ac733e65a7a6124987eb490a182a96e358158c4942e376223121cae696a6998ce984e99470d9944c8225183328d530c1aacd26d7b3097bd63273ba6e521c14552640139cdbc9e45486a774b1ea76bab00d5d741aa16abbdeaecbf1ab94355ee7e164d5f90a54ca9a98285ee4453965cdf5cd76b11d8e7eb13d07cdf5cdd6460dfe14deff7ee0ba633183c04f3996e5fc141083598ecef77c72041e7e18684ab71c42e0fe0f8b867ef87e20c4b1f414dde799804b6f671b7ad041f308552b618b556b8f42d8bea06d5d5fd4ea8b32a2546ff852a504a6dae962045d348de6d1fd08415940a296cf09a02b34d705a86db6360448d648a5d56ca7200d125667a1d25adb3c09112ccac10be0b85eaeb5e28b23827440add59597e572b9dccb56565bb174def34ed08456260c006f115a661c63cc2833756e31ca0108d92498d8566aa160e61246866b49420921d0dd555890ee77bcf7e969fd10e184e81a5fc8b2152d4999c1b8c9186594593ac13ac5b9f9a429ca32342dadebd98461eb0a2b046383c5ce6140099c12a01d84517fbbdbef41b78fa0d3ef29bcd1451e7440ec90a89ad32ae55a6b63b3b95e80ced6e2e296f874d5cf16c2c89573e9a3b7a07f8690131fa476846622cc11ce714efce4c3abb55c231cd6a6c2091beb8dfa5aae32824714441c800dd19e5678a5504831bfb6d1f85373d636738691e654a30da2117326932e6727961dc7b5ac1c4f0960010010bf299eb32cd771962772954c66c68475e019235130d502a43afe1191ed5f00fca6f8fd08e194e7acff0e47b84608d11931680333a2a7286386ae1753a99223e090ea94ea54a4c029a552455dd7358dd9093800dc24946a1ab793ccd286f36a164bdadaa700d0081c2fed0fc7bc99af389556b3556935f3cd3d21f2559ed7f15db7e3ee0d601d6f07b95db727f1cb366c43072d20542db543ec22d64a3e579887106fac4249fe56a0d7ffdc65c61c8b9bb44b19a35d6a72cb61ec3234c5d8f51ea3a696ca32da95289c7683bc9705e696f8a0276148d4a7e025a8abb9be79126cf9dbb28b61bd75f8449726394f8a8272264fd2c7b2a954f6319ae4a92c635fe832c65837b8badcff5c2a9b4d41f33263d9144fd291fed5433c390f25f9db2cf141ddc1cef4856ed081cbfd3f51a53d464517924c74977db24b5936a599a21d967339e8bc788727d948ff44df6c399e793b56b7ec5b505f05baf13e9939d51bd5df6caa2bc7d5cce54c39ea7200625d56b40046e0a1a323fddb772a77f5ba017fef078378b6ffe5b3c1f0f9a2a6e83ed486ee7fc20fda73ee5cd0705f35dc0f72c9fbe2cde0fe804ee942171d09c7a73868d76e70d873d4fc3115ecdba0ceee1eecdfe3d8de358b5015421c24f6af60db8a86143ed9fffb6705f46f5b122f80c192022e8a6088cbe0feb3fdefc8c59044c36547db61d4f376b4338a5d71f8651694091df1d3ff8eaa8942226c801ae7b0fc398153b45980884688aa53e557a03bb618c702e458cf422280fefe77a2ae8cb65f112410eeeeaa6c39587002a037faba28d5600c3c51e1ee810bda8f7ce8a11eb2045e0a166b4025f47bb2759ea00e54a1b2d3837d2f2f56433bbf969b85196888e6088429ba5b2f4624ee6ee433403a9e6375fc8ee5f4bed316855f66028ed87630129ff94c30581d379b7227162da7db75ac6eeff2e635d118812f18dd0ef27cf633c1b421403eea800f084d2054dd8246b05d36d46a0cc60cde7e056b8250bc82b1c1b7b981dfe66342b04f18e186c10953e3e3230f7cb42dcb526029e6760b1ac1ceda689f00f055097850e4e75519242c33a0015cf0c0156509ca7f0b82261583c22418aec5de122d01375eaeac4894d5432e74c04593b25df5a093c192696f8168570b3af10e8962bbf11ecb721146de4e57c2d8b4d8195900aeb23041a80cae0ac5610841a7ef1308b5bdb4d416bff77dbbdf153541871b867bdfe99e40ebbda5767b49a54edfe71a5c64103d5070d4c3087c94445b08b555d1b2e476653fb4da5c2fe473da01c8ab1bfe54ad363555abfde1b7970210e808c0e80480b1fc6d4158f9fea94b973c996f6aaab6bd14429682b84e00714b8202f32e9d3a7509214411daf93d8ce0879081665109adca15a81053498c845a81ad523e983a5e693579a5550946e83854c077ac9ee500eaf4c52ab25cf05dcb710e795ea7e789856f391edc2f06c775b3a99ee5743a8ed54b653bee764751e1729c3a0841173c9413bb5dbb34068bb3a039aade8d9a2f8a66d457ddf32973c0da410ad9588ee3cbdefa62987c3912ae63b9b28123347f1d9db801cd1f12b2f99c561f20a6f874ed4940b52e5ebd7af1e2d5abab62ed33ea0573d2de8760f7e40b172f5efd9c44013e4f322f98bbcd8067dfd9c6083a72bd2e0b6e5c60e11908b8b500707d0048befac8a94b30bb706a0532adf3e7b7db672f9d228c589be59553e75badf3b22c350e62c1cd032fd679bbde0674e7f3feec2ffee2acff3c747f75f25d9fbee79e4fbf6b72082f1a2887507515d250e46df9d6c9e07d8c7eede2c55ff3e79e7b6eee2f9d3b9f5c6f3c75a7f3e0835f9dfe955f997ed7a75ffdea4f77de74977df9b27dd79bda6d553f7c177e111d0b650d03062a24e0e38206c564d56b224f9cf4afc377f11b0966842498362538664c31d968b5a619d3929a64e501e0164c0bfcc824c0c1573ff9e3cc7e459e50eac049c0c018aba83ca595d5a33a311833184d68cca09811fc38504ce76fcf643ff0ca4767e7367881cab5a3d6b625b14a1b2127206c150a81214c52dfe7ca05b90dc905049f53eb28766b771abc70b3ea47db96bf2ba16045b5f1a0c4a162704370c93766a0380379c543a9013e06adcd8d56e318b430bad85eba2593b965a97d11b069ce3df19ad73c31679a18bebb7961b95c5ebeb089090001c0905b2ab42edd7efba55661c9c118030620189100e77691852605d67504ed1a10e51bb57a0c1716f39b72ddb55b9a9cdd8e401792d952bfcdc972f9c2e252756169f142a5025e36d5efcab1e8a4b29d30e703d727292b729ebf3ea169131a47017e536b45f0af1901b38eddae968a45095fabc04bf576d1e6e839f0fa67be66cb6927abcfc16f3f577eee3938d1ff0fcff5bed6249492d5e79e2b3f07c79e137c96bbd383af838f28d2511ea176b15de7bc5de72070555140e966adf2e8c52f5cfcc2ed6fbb78107ecccce92b1757741d4ac5578bbbef3f74c7dba06770713367164a484a44116c838766e4be9986516ab51d52ab3d9e64dfbc1ce09100f9011208023c465f0a190c89f800c97c92560ef0ab8083d8c613ab868fa15e56010e5d0e769ccb61a58fedbed38d5261fd6372233482779b378f77490c5a6e886c2f0662869b41b2e086c20934d2be1a6adca07db27145588156b15cab8394ee5444eb566f15d5ddbabada6aadacde9acfe5f2b7aeaefcdd953be7b726fa7f673b3d77ab0849dbb97a51b470245b4bbdbe83eebce2d8fdbf9bd89aef3936248b5beec5abb1f6655111d5106225bbd42e050b4b20139b3bbcd86e4161b3bdb911a153e8f57d98f0fa3f166210efd027cffcf3bebff5e0b2e324274d6bc2c82db8e07b119699f040ffc4991fbdd67f1735179da3392391300a1d31466c17debb75175d3d84078b43576c28271bb042026376fb922400f1ddbf3684f6e4ce2ef7f7210cd96f2a22c2721c14e2bd0176ec8409374c7423e438b61f4ebc7195ea3ef8bc3d74c5e3dd504d522dee77e3b8fde3b1fe39b15e7c3cec8305eeae260f507c6f772fd47cfc3e46f00ed98f65b4855eb6ff7c0ccf40253fe0e1766d4cb01d9f90e6d03615a3b5ac680e8636a9107f0b84ad70b41bdeea85894e9818e9c7d2f7da8ffa48af46fb110799ef79bbdddd137f5707a22e493cd2d9d9862e74908b96d03a42d513d03a26fe37366af5b58dc60a4858b107e31e52fcc54a4b25e10719036c1eadbdd7cc6553ddd6f9c2673d5181d7e988fdb1979832b14e3008a26761359beaf7ccdcf9d6ecfa2b049fe27be25bf0763bdbe0cb7620185a6b47810c4dfc0170e0484d54e58bafa98d781a5c519cf8eca0300501ec297cf45af406740dfd10fa71298be14ab7508f7405a14e4121a448f3106a17148b18e91e02d659bddd8eb410ad8d1a9143a344cb6c687f18a44bb1343c6f168d0b622fbc902898a5d5d55269956b1778c63032fc82c6c5f56ae966f2e4666672b99999fe6f0489f0032f0f12de3ee51ac5efa16ef0c2c23b61a2df1daa33979b89d3e20d741f42d5469dd7255523e8e57abbde5094b33666036bcb7ca100ec26e8803afc4bd304ab9c5bdcca58609a6686e0b5e5e5137656edaaeb070f9e2914989ed67395dce160c33f7c3820018e1ca12377646999adc55c59946655727a5a6785c2998307d7d5069db54f2c2faf6192e94685ec5daca4f302d965124d2aca6298d78e433a51637414144717cbd70dd8ec8ff64e5dba744a7db5ce9f6fc9afe0d976c86077040f2d3efd6dc14b894f2f7c8686d6461215d169f40a394bb1da78bc85658d0f545ab175d06e468aad7032b85a00b682f1ca1065a47685e8f342a1ac95057153d6ca05d1b491eb9f0f1bec052fece626bad3f9f70a02e9bdf9699171f86a5bbc0d9ef88e76a4014f7959d2b2b1755f892fff3d90c34da184682c0685406faaa66b05666985b2b6a0950bc9bc3e4b30a36779c6509d1ca4c3674bb167221dbc1a963455ab811be69ecee7a7d56d23c3cf52a6866e908e9e2dc59e2d5126de0bcb0861633046f707f872d760b46238b298df8531770d4c3e8625ebad38ce849e35a15fbba64f58aaab80af8573790d836aea0d735c4918a74f1b09959be9f4f42303887ae434d5997af3e672c570d7dde89715e71f29a3e3528048d01c371f8824db71d55f0410a19860f47555e648450a10475e57658e5424d3f007845331bb4686eb19032f4c4e2e6023a34b2862947232592e4fde449ec34020ba41f579c799d769f41ac690c9e7333791e7ebdf4fe563f23cf3fd543e26cf6ed88ec0582cfefa3050a78047a8ae380cbf2740acf11bdf84cf0b402d94b5336cc20e61d69e606724dca9a517de1ac931b89c0b73472f0e152992c37777e71bba83903184fb2b68151d45b7a1bbd1fde88dc33b537d8f348be3823df2387bdc8fef2b5eb06b8d7ee091911b5f0eb7be91ebf0e386a9deae841f6d22bb1ef5fdbd5f13b0a2ef394e43a314ef51353632d59b188de24d8e4c3422fd9f0f85ed2339fef9c87544097423997b441b84891db4abdf9d31237193e310ef3bc4ee933dc6612f4873c68cc3eefe4f8d80c428687c74741cbcddbd860800fabb07a7b3fb1942488bc9381e453f86fe08bd88fe02a1aa248214e55a17f82257e08ad65d5b57d63f47a0512cacb73737566163fd386c6cb69b47a0bd058dcdf5c6c65aa3d95e817aa5b5b6de6aae40ab7202da92406e096c1210c79bed7a0aea2d59d3da46a31ea920431aacb1bed9aa8a3d62635360a32d6848a1a9b88cefce47a0ad14542744a27902da034aba1ee34e8a036d42737d13a6f29aa6718b6b290d40bbedec1b0801209c022e6206181780921426180066898633900070a8410160e57026b355ad1e38772535c91e7e3bd5f84a4ed3344d373466300e0f5ec20c03a680c5db771d3d72d75d47588201066630268ba03abd440d2d91a6e4c5e563c7960f1c3bc6292684104c1daead6a20fe3034347ecf1bce9ac5648a69058c31c54500422911cdd22c2d458826feb3a4461899ba74f840b5ba95c95cba6de64ce792c1351b5675ada9f10d8d736d5ed3cedd4f7559bf14b9cb166947eebaebe891bb018080e82fa1e412a1e9044b90db65c30e2c1f7bb78d292136262490f30ed6cf49747eef75531cdefc079316dbedc55be37005bc2c48bc75b5345133d2cb9394bdf2d8b157bef218d319c0a995fad144623a5d5a5d0b79c25d98e1bda5d549273b01e68425de3bf64a00a6b395536b0b4672b5f4de017b17d32f6ca223e804ba0321a8d457a0be261add48413ad2be73ad1019129442583d06adc0f489555a4df16995cad2eaa1595a976265f8467982152def965b3c73824d9493b69d3475003b9db6c113dfba99b4edfeaf791e20cfebf728812226141025b80804f43366915a162d9a67b2a6659b76d9ea6632998ceb8aefaeb590366dcbccfe8ae779de0cdda0ba4e37e8cc901ee9303a8e1013046cbd5d3d01c741596a899ea90908f8b6b6d32eb6e4cc34d78359118b172aad26468cc1434ff4fb00814d9fe0441ceba384e2d74d3f44935c422e24d300fd5ea7e3f1248587a65e8729f96898575a0402f4fb4f3c048c01a493ea1d703ba11ef743b2bdb7434669a3437a527c976b8a5e55a4a62253234852646a7ead5059dface76a8d488f75025a7c15e484b66a5a7eadd0107b7dadb2566bd4b462b9d09883792c85ca692c66bbb802abd2f6b67d028a6b85466173156af299408912136eb6366b7c4d000797e58a82364441b3a0141e58e2bc93815aed24968677f3a195a2b41f085e5b2f34d6d61ba9a0267953028f04a0f542d0328e51c149deb6922c24ac72b650b38846e61bfa4c592084a98255ce9a858455cd991349733a3d5936c09922c5448615260112669de5b424103c23d00781532992815389292d0d183b1986493a61178ce90c6589ac7150cfd15c5a4be5ac52b291309c647a5ad748c6b633196e10c248239db51b46d24819d6848e71264b452be8743e01b45ca43a4932633693c8e9495db7693ea3d990c70480e1794a31d72cc03091c825ab5b1ad6d236a32f4e2ca7568e529a4ae56ca8cf271af346d6d0b389a9439695d6b48cad71c3c4335b9036f3709e6512d6a1296632cbb54bacc0a7922ea4c07679860301170824b98d599265e774ac191626b7a5ab36058dd538078dce6a1a31130774ced3d65a2203493027f424b574427129396f40492bf00265490383319be529aeeb5a4acf971949166701702265739ed43907425d4a8dace18ac61845d9b3494ad7aa3ad5e73246460f741dcf4b985e42b7a3471172e2f61e02400f43dcb2640b0e6305dc4c5e4722a3e2e87bfb3fae64b70503c2c9b69e481a5f279c108eb78d6442873fa19cfcd99f114e2d27a10f7239d65ef7815ec118e32b24632432a483017087641246867c18e3472f03762c2343a23c967305e3471fc5bb6e0feb7e0ea08be8b508552b312bf698156acc145d70248ab21c662f77b391c514c42930d82689c7ce0abc73f67292081c449297e3d77f0259d3ccc2da998469db66e2ccdac8f5c56027ea45ef87e53d9618bafe9df1ef47d72fc6e97140fece47c187aed4435696a151592b8792ea93b0b93e0f05a9bdadc02314a0074093e9247f9d9ee7afd313e9247433c9fe6282e99774fd92ce12f09f9319853f4b08c15f400795d0e9d0ca2bda77c374a05c13a357ddffb118c1bf385c5fdcda5a6406b30e4ca7b2d9546976f68025ed74fbddbd9e1c06a4b47d000737c5f064ede34b4b2bcc60843fb8c77da2748318b93b2fc2e7c04739d11b474910e7a1904b83561688fc383463535c71abd3cf9a13c6c71de7d96ccbf9b891b822f6766766c6016fba9a303eeeb4b2cf3acec78d09f359753fa7f6c64ea037cfa00535564d055d4d0188cd76255f6955e22abf8d1a741c8bebb3d9ecacce2da7ebb9dbae522649e33ecb1183e058aeeb798e35d0e820640a1a43fa0410c4510155d1ede8e5e84ef44af46af43ad4410f8955906fd62bf9a613b7992a342bc397d54a3e30a41a24869b5881c0dcb838f2cb2bf92620d7f55d775b691672e6b699cb99e2039e1b710aaebcd11579fadb9d4ea7e3475faeeb7aaeeb829b3365aea12fcf1500eeaaef9cd9f76539be99ebfb1db7b31d7c5c77c8b66605a16aa915d0edbb25e5e99076b4e33aa64e2730efeb0592e98f05d7679574542a93dcbb3b971963b41788b17f55daf89d93c63eca1c51e1238adc80fe4ba3797448d049d5c07622ae3b3a0e034bd261dbb56a73f829a0d0fec9f97894bad0efc89675a5c635baed06c063f5a535652ff88a2b27439d1f1ae2d92c348d0ea055740add89507b48e33472551a860f526a494df62c345ba57c251f7475586975c5e386c1e55737fcfa4ecc86f3d00e02248d3a3d40aeb8d37f574764145f5e68991725bae1888b97fbbded6dc7f2dc6d4ff5bddf1958f2d198dd931dd9c95564734b52f358daa815477ac473da01102ba1996fb69ad0539581efed20a9a3be3ba6617c420d6fcf056544e7075a5e35fca239b29d9ee7c5f6a905b48eee41a8ba1b48870d53c5f63362d628b2471e3de3ada6c118b51c146d0aad0affa8df11d80cbab99999feb1d1a7b1373f366ca9f8a2e8c68bcbe1fa08f91d40d1b331168e12f72adf250d1d92f69bad4aaed056869bf518f79d4f8132e91cb2e19caaf9b52f5bceb93648f380f6b960390a1096a8a5eb58fe91572703170f6539e70ff428b1fa2704ee1ff23e8adb2496146b3f0bf07b27cfb75ae76fb1b259514d2ed7ffbfa4c8e7f51be7ce6dbc3e637dd59a9cb4be6a655e3f55ad4ebd3e2633ad0536d623051f80b0e48131b7df3a2f11a6ec86d5a94e4fd5b229cb390fddf3ad4e362521673b95ed4c57abd36a61b7ce47bc174017bd157d7160e13203c55c213f17da83edf15f3c3d22bfd70b4a0913083836d69b8ab1092df546feb702b667b375025aca86af6237ca81bcbebdb9d15a817a6363adb1022da90150e6688d8dcd7668fe17b90889562ac335e53798d3f85a4ef03c91355b0a223b1c18fc61f99f00600c140300a11870f16415c0c8268060c349241c953000aa270b8065162984085e0dff077fb9dccb56575a6b77cd64aa99190690c8308cb90e9802702ab98b8c69cea7d3f3a699610004530e1430e718b37402d84c66213373d76a6809a4991c5342748ab5408e8299fca6f29b60c20960985fb500332cbb029812b056e70103e1328b463195df2c2c432394534c8966f2d68a1896fec662c94873339bc0181bc514885c26c7a69e303080e9268946531386913012c6448a6ac49c37458713096e12cdc44423902aea98e044d6e469a3b438a4f3aca2063a892e083a9a49824d4df98839d5e64030568dc9c586f5b5f5a12b3e74057f7b8f1dd06aab4b8bc7b3b69d3dbeb8b45a3a3e758f964de466f4fe7f3d7ddf7da74f5dba94521b869648686352a97ba68e97e225ac2c2d1db7b38e7d8fa6cfe412d98d4ba754393d838b17e526a2127e9808d696a21f66d0018440f04c2b20f6092e99291ed94dd7b95ce5726b6b978a15f81d9a4ef47b890c3d954d892de1f4f154b6e758a7da50d8bc052ee8c9a4fe0bbf2e56f1afffc2c7b329d74d657d5f7a59773042db81dc18b5637e772c96e6b1b45f9d162861ba0a51aa1726baea67d707299d86a21553a8815a5272730bba159d45af460886c9c1f6f74f0e56874b828ea209b3a94e8c129468af2b28c5514ab0bf1de6072f67ca8ce34840853753d92112b0337821e007d55c26d1342a23149722eea25eeabcce5b25858a53d9ec937d69ab23f7f6435db7d3013fb20fea665321d591caf6b73b9edfdd1ee23f73e8187a04a1f6f09eaee4936d5e898c3c1aed409f1e73d46db41bf29576e8d91bb09fedfc89c0a98037d31032e4226f5733692ff0aceb51964dbded49d08b96e0509ed46d7d7ac50617b2b9f3ada995ac6be7c95f9e6f85f7307eca28a4a66a4903dc3bf48ca172b88cf502bfb79ef469bbe5493d599bb28ac69304e7b2e082bd32dd3a9fb7ddecca9491f9a3d6f9f0a69ed19f0423599b4a1575f722262acb90bc308b1ad2eab1d98e01d471e04e240b1d98af0c1c9f2ad0e96fbfdffb9f724e3a96e3f9928db8fb570307bc5f55665d2eb8916df1fff46051dcfd98a25cd8c7ee1677bb8adec5313b516f7f2b518707a6c62bc1163e1f6de5ed684af6341abda5434d8d9bb413347459346929f014dcdb7ab4ffd90e638c75826958fa75d1db1724d5a5991445fe30825e7702afb1089a49c96ee69be04694b1b7837c1fba91499cd7df06df1fa6fb936812555113dd822e8cd8de0cd9ecc53555c3b67d7c98401d237d7f24c6915c0b25f2ff7c4021c7a965a77ff72e7b9dc89e72a0b8db655809912e2f36c715e9037613443693fc404ca913506fdf1cf8a85821377836f4927bc672fa7e8c3f5c1ab8ac307aeedbe2feb7cf8556d5820590d45ef035048baa9d3741daefd54e7fb47171e79a2746dab91db5ee2c63a3ce36dddd0d1db4734ef0b230328a314344e9d6b5ff7ac668e0099c4d49acdbbccc58bf27317be4667b3924f4a513ee7a9437957d8c9ada0e8afbdd5e6e0e18da81bc5fb6b5bd4f43e556b66f5b7b631a2aa0346aeac007d8b17c468386a8cde2b25cc2e0ca74808a062d1dd8bd99a8818ea30786d75ea518f7281b6a73cceb6c48d33eb0031cd32925dbf4044d2016c90f138d680982ab9f1604d0a7ab98189c68d8231863ef1f835c1fc41ae106c6d54f095aeb53554c121a65c4c318e36d55ce74f568f06a55d051d5e00d8f302a8a3b1ae63a83b1ca2528ae85a0724f11ca08f1980c625606ed11d4c9ab940ddac0ef84c72651b26c23d7bcd26ae6c7dcab8edc031438a73ce187330bcd2869f97e3c1dc0a5cc24b6ff80f197de2b32ad2c7b8354c7ebc62fdcc18592d1ba920ef3d13442814dfa7c6c8a8e4760d9eb4bb8ff39095f1e633f2be1ce97973ff762e88ff6eccf49101bdad36e4708f67097963e2ecad52124288b920e19bb05d6ea1c0ac12ee45133eec5ffee7f0af8eac53baf5cb9d3a9da6bd3c74bbbb7404d6b4331581f9e72555745bda7cd92dac5abe275ced75299ddfb60ae9e6d0ffc9f3ae836696516c176bd390ad6ab30ead17f54f4730cfcc327825618d5ee1f18f1e679e183fe4f49f2e20b2cc99b46d05f4f60c76702c4647403b76e390531173fe990fd45ca461e4bde2a944114839df6ee68fe8f42b47b07fa85d0ad557254c57daeda9540ba56093705f87c5fcacc328286b69c8c9648f45fda65ee1e253c5f82a69fca42cf0157accd90bc15ab3910204aefd87129f1a5f899207ed1876007bae875083115bee398941dac6d34425182d4816fb462b186229fc17c4a4a06042486e144b620df98938e6e2a9688566894b4cd3afc7df2deca8206a6c331063d8131033098e4f3593e9d5e749cc5743acf0013a219001a86840118f39c097aa5726f3289a10f24b93cb99049172c4c7172d606aa53c8e8249d304d8c215d4f314eb3f3c9a4692693f359ca59aa9e06006c9a8934d13332bf3d97040a56319d59989c9c8159e56789a52fc403e8b5e8b7a2915881c60ad437365bc7a48c44894da221d9a8d5376aad1131898c913208afa454c39198a4a0352af582d628add5da9103e00ad41bd243a17e23398c546be7f2b2a0500e335c017c022831ea3592613a014c801904b8412805d0c4606b2633270d232585324423e23600003575a085425be370ae6ae0fe63d8306e9d99d1209161802112b0108c81da49d34da75dd3b4a9185c4c390093221600963180cecedc6acc334bcb4f678063823123800163acdb06883c093d9b346c6e4e274094a873ee2409c3c6440230d735033303082590703420a0a712894226639bf962319f9bb34c2933d22742210a3175238101ac799370929a348c44c23026d34423e6bc058013866e126e02e10452133a2690cc5ad66c2e26679e466d741bbaf7461e72f2a7b5216f36d765967c4ebed00ea5cf81a53b1fb906d45a59556e71826d88a597abd52d3b93b1dbb5ea722c7d8f6dfea169cbaf8e6d6a22a999b6f4b11b2940a5fbcd8cbd551545d4dac3c57d3678d7361f090ab4cd38ff6ba125d442a83a2c05ba494f41e84418e6893d98aa96d8742e5ebdda0b9d79b6f7e4a33cb5435dbc1ab76b2508b5e7c1417fedfd6fffc9fb6b3cc4bbcfa35bd12b10aaee1f9eaa52fc9e656280444b159d20d1ae9405ddacf46b7be4454f14f6df6e56e83534374d7432a43283a9f93e7ae347bbc0cd77219cad9b6f768ca659447705de1762f3ab8f89c0229a19512de27e8ca851d4b1a47546239e6ca7b2572f1e3837b51a23da2b0f1e51b0249a5b79e8b00226f1e4ca9dcbe7a65622cab0974d5dbc5a998d31075b8b6b0a0053d9ed6caabdb8aa40533cbaf34a792e6012c46639989383e876f4ca014775439f5e411fdef472f225f172f65c40da9c3d1b103ce7ce067cd3d9b38cf9375869825866f4dcb971ef0ecadf5b9c115b86b139eda0c7032b0d69f4592ba741596ca8794d01af8b7b5a6e3e30df50f4fb1c14b9b857583f19d872a8d93c01eda2b827ca52861d7286797c34feea28e1ec20e70b7a9e1fd433463ad94c640cdb58d273bcc2f932d3c9d1443a9d384a747a90f32acfeb07745bcf249ac9b491d597794e2febfa12d5c9d1643a9dfcabc053f9cf755b3fa0e77995f38354c7c74411c70867cb9c57789e2febb6a18ac8e807795e5fe0fc20e3aa0851d392c896d3970c5b342899fe99b84f33a0d99ddf85ff02ef92921e4dfad4f0226f1737a5f74cbb0e874c92fae5ea31ebe9a73f78d5ca4ebd73eaa0f99bf02eebe0e43b27b3d6d5e7ae5e358f557fd9a2e62724cc299df4149a43658458833414fdb5050dd28847a0a807025df85fdb34651829b68db1928892af7a9ee765c0175466dfa79c09a0663ce7b9ddd13866951bc7e39395ec2540cb8baaf61194753c775be977ff0b46700a19680a2da24d455907f470282029ad09e232d76887be9a12322a4357b0ddf752598c9cbea33adb47cf47aa861f7045cae58601a71ccb752da7af36abb9b9dbe7e624b91c2a13c46f1cd60be8be4033381c7944a0df5659e363a4139174b111488c95ec3a42cc6b9bcdcdf858aa782a518812c73af26045c94f24665a9d3eb77cf1eaed5b69d7be7855dc57ae7f7a4607585d5a3c66dbf2067823314bae594e676d712b2ac772662b572f9e7c20c7f8d58be286f2f80300ad503873e040435dc7fa5e9532dfef7dc7bc79ddd0cdef28f13929a2a308152b76cc4461e0d01b8fa0b6972865bbdb8d5b57389018d193c775e12e04d2b77ee0acf7c5b18a79a57a0fec4714bf584187d0a6940d8e155b0e33f8ed5625dfe4f966abe2149ba4429aed66bd51acb47b21733ae04c659c3a31cfffe3672f3df2a1cb5bb963af3ffae091dcebd74a672a2ea30969d272cd08fa20f95f055d73e585b79516207f18d00e3afc63972ea1a8bd3d69d7f036f46fd0efedd5ded0a0306cf0ee7891c39166030fb13141662b31cd767324acec9880b4cae47824e66d18d6335f6fb62ae13be2b57c333f66cc2266ff6f402334c1353bc14d8d2528d5888c9dc208353496643cc998aef819cc08d119e394502801117c1235184b684646e3e24df9e20210905a624a34a9b62682912218280974c9144beb7f583f7c28a8c6e23ccd6f937325f0d0b5c46e690631d25c4b324a09269cd1a4c62dce92b2c59c108c09d635a03a6306659c1042455b35d17842a4cb01a349ced38661eb866dd8946119fe56b06658b48bcb16cbbb52b11eb6966ae4a777b84545391403d43f12d32ffba832d02fdf0c543b436644c5517fe03db5cddd7d66f06e65616139ceb7a2d4b8af7d97c220de4314b462078d89e413cafdbe0e3ecac7f6f135ad11dbc90f9ad4fa48f5a879e5d06bae58d9a9774c1e305f00df3c38e94f66ad2b3f70f08a7574e1a32962be108b4dd6413974102101d1253944f5303841bbc194e2268c2b27b64169c67b8a6492d071ac17375992772ce714fcae63f5bbc90cf1001c0b3a2af5d984e95a4e5ba0a9fe1ffcc1b2e598891e6624f81d6a4306cd23541cdd69a5c343108eacb55143e1960adbdf6e53537011183952f5b35da9bcb252016f530c71278cf1a5ca4ea143e8ac94ffb562e5b5f797daa761a0681d843b53e8002692a25bb20130f11fc70af2bd19e52f6f99ffa05aad6774c7b5fec22c65db2267a73356a47f7dd64a6f2d664b0a7c1e2124951c8a63a462639c188d8cb15f74a9e250dcbc604180a734e5a1e26c6cfa630a054428c10d59b0eeaec4c7e47eef0f96c8509bcb686d779baba391efc4b8b7f709b902dbb1b6f5af8532554f3213ceddb1e6c34a2c67c4e67baa6daa33928b8ae2912855908c2b3b90c198680e6d09be7148a7125e1476b9d605e2177557522a7b3f899428d2e260714b547fe994482bda435c178b776cb48e8a7b673deffe991971af54ba7afee56ea811f1c5adad45d1f2d3f7c90b45bf881bc7365a77140bf2e6f4ccfdb77867c5cd7b5efef2ab25374663a7d102da40c8a9c488177ba3c6c6c14c7d24932f6d333a8270b93c0229ff76f06848dff1cd5130f96ff1a781ed73376857a4970e2be4e3200606cdf8dc08480cd7dddd35fd51cc5b575af595355ea9f3e270f8055e1c441b80e7670fb2657fe2d1c7d8c1d9d2ea6a69f6207becd1097f595d6e57a7fd8947a7ababa5d26a75fad1095f2547f4e44a7a7f125ddcdb1378df4510f7121e0989d80974decb2a90c8ea53f1a849f1e088fd487ffe48ec6ee4e3fb79159aa4b47ae7ee1844030d79cfb1942c29f49f50f6ca8257d9447723d4de2df712a8f746a1dba561546984a80e7bd835f89ac1b9b12638249f1be0c9fd53993786a90b96d3df1e50d62040e3f3dcb822deb9228d7adf3dfc824a751dab1b6ec7fdf0f5814d978fe6d1610193376c3e1f86a0087ab6c7b4f59fce1e643f3c80a62009deb8064a2b2d055c01640d7811576a83c68d78bcb9c58135960a812208da7d9477d28e52ca0d07a24799fafc4ab9bc9229afac9433c49c4ced96fe529cc899e08ebc964d7939f34ef59e2c81a718a6bb25c82937cd3514d7e91e9332ae0e7a1cfd287a5670832d4162f3d60ad4f3f5965a2eade20968d7f32b21da28e60397c1763e741e943b7835c2e5656dc854a5519f8379c817475dc847836f0cd8ef21e1d0b6af6774dfc870c9e73e8c19790653cc0d4abb98624cf1fb7f8e886b9e31fa91354a60f1effc758d6a405cfadbc1f57d0953b996e6eb993ba8223e2fbc75e5d4a9959553a7362edc81c9d90bbfa3dbc6d72ffca8c8ff33c78d34bf1d3028890a868e22a75ffb5a79ef2d940561919dc8aa79b6982898f0b8fb2f28af86f7fe65a69e577ea966e242c05e5e589075aeac9c8aed8d8ba8855e819e424845616a0f28a728be54dcb15a856e528a6249818f8f41a8662be0bec68a345a8094c43492276c2dae294984b8985acbadcedd5eb71ce7a16ed0fc772f0d91eeff3f828fe1d2cc7001eed58bcbe7a65763328aca8347941c42e23c3f65aee60b92e9ee06a5bd27b461171bceb435651eabdf3ab9325c821caf7f8711bc13a591838a91c63eeeba1339e7b64ac361ca5ef47d40dbdb7d1f7c78a76385468b96d3f77bbd9e744c1dd8284ea32d7461386efba8b4a1ba57b0613117edb2c6492e84704799d4c3774279c4b9b3314944ff23bb43108b0cbe69630f1c2bf8f964289f387b76483671c798a8c4324b279decf78060cb4927c1938921dfeee3e81cba073d881034ea8165ad72358c2ee4aa6f14c57568e238b890a35db7e58dc27ade6eafe50e03b7d7360e43db916594d7ea76d186bf7daf60af75f2d33f44e59925dac875ff573a9700babeef5f02e8c0d10e2604bfea5598887d434fb1d83574f454ffdf7ae09c00e87feb3cbc1cf2f0f2febf3e09e078fd6fc5e8b082c470688f4dc5f9de855fae3fb483fc41240b0be84b992e1d9f7e15b7952c4c05b3baa4764065b62577fe3f7bd5f4f152fca561e198dd0ae36005fe531f957be5ada10549006fa1c866732390c9170bebed467b73bd28fde76af5da86005375153c548cca17f29b3333adfc5fa7c55f2d97aba75fca66b31bd97fa7699aadfd7bcdd634eda56ccbce665f9abb776e6eee1bf2fe37f2f93cdc93cfe7f32f89976af2ed979c66369b55affc7b99edafb360675bf64b73303777efdc37349b69ec1bf9d6cc4c6b887f294a79f7d0da3d0ebc644b47a57cb3de2a32b17c3b81e143cf72bcbe5cbc7ea7d3ef82d7ef096e593ded750179aeeb763a1d773806ca3c3a848ea173e811780d3c0a3f24e9c35df1278eab6d6c0b1af54adca36a0eea4a0912e836dac52143ea1beb7bdaeb6b8d20d858338aa3b1d968057134d6d71aeb1bcd2d68a839d4d25069ad15e2c7a9acad37620e1f4d2521936e22a2cecada46a3ac55b89cdc93b0b6d968e66ab32005e7017532038dc126db68b6a36634e52bcdf54223bf566b44e7bfac37f22938208742c0d45aae11d7f1447a9d76b3d1549105ea4df52c9fd3da31cd9fb49c50db96568c2fbc9fd238d71286a625349d72de2cbc93cb239780003e0b90911e18e2fbf5400860426a7b47a6a5040867806112338cf104509ac654fa903429a5164d64718e504a66994e812535c229d519d599914de4aa3660ac259966b225c06003608a2dd089c64ca6134274818c31c19061a6744f4970c24c4a2cc038298a4d62aab1b914b5a8656886a1cdea49cab5094d9b05c044a32943b330be7a0a538a09a53f6668b6a6634a282119cdf888ae6d71fdb0a6eb5a45d3123a779aff6ce00cc3700663cc2083f12c818418a304c6efdf2ffaae3569a6198749f11e9e04a09452391426a5409319a084104a39a18c6025192518eb5c3495ea0cc006060029a00058d374c608c11aa39401492565e490a42813eba224ca989e62cc025d9bd3749ad037454f3666b086e728271a371ce3e2d577539c2584902ca67f2a661e00d26258a91ed2a24af7954139348166e469738bbb77f4c8b5412aa6e2e9edd02b40f9b0faf24fa009f107fec031c1ccf57dcff55c6f07c91f34140f24ac7f77cda4d48afe0dd7e60a3222fc8cad6af8bc8205f47284dafb19c945278d0c9c36e51970f94a0a788337f3a5e89800d9b6178ce0609440b8acce55319e15cd78160ef53b66ce83ce471dccf07bde8319763edaef7aa1c36f27111cb0e2a97358bca0ac848c44eae6ccaee73944c71ed689e3799dd0c577485f3373a353912a766c07adec6d2113c699dec7f8250a30adea9731ee73e8547052cdc8b056eac7a0d5104d68547931d4db85a13cb93307cd46f14824ce86af2aca2967f204eb8891705d62f07e37f1699a60ceec74be3045f1a7123eb67857a01d99cb63ac130c62470ebe8b31eeea26f1139fc274d67166671d66b04f27fa5d6eba2ad3705c0457fafda05848ca312c66aed01c039676a9bb9b89cca6c0db05a3fe28c3a866389b1ae4ec7be0c7794382384ac6d6a3d8932bf966ab926f3ae39a422af966bb926f42d7537fbb1ab1ed791d19f4c6f7ba9e8c373f54797fdbf3bc615de0bab4fa294bcea5a2d5649015158075790ff6fa180816b67503bf956da764d612f37679c5329653598aa9c576831b4f2794103a3cadeab16ccacc6553cf67533533890f95ed59b366961c9ee5bb21965914d3bfc999662e3c36ea7253daa3c8e58308d290d8e78e21137992c718b2301fd861d6ca91f24becf2a16e6cc811b4d1aaadb5f8d02a8330d8ff0ec1d64cda3dbb585c2de6979cb9f604d3a9a699b329796f42dda386f4aadc59dcda5aac1f3e5cfffd50843b8f898633b3d6cc4143a32c93b457a65882f10ccfcc583307130c18b593f6a12996d0b04608c003aa80c52d14d31554d096f4a98e94e69bedca2e05c83234cab57af5041cc5319d42de6e37aafb4e277c68d6aa489dc05b8654250b00d992d9ff10c9247f0b4cab1969559e530e03c3ee0c3f10aa0806da94c72cf36ac2b4a46a41ea5a7e303c6b4886e08ffc0548e4c337830ecb3301548892869acf6381ef6db08e792c9ce6c0c456656d30758844a81f0d55b3b1c047e2ad06ac25b2bcbc8473662acb8eaee105293c7cde36f9f23c37ed34e5ecd0b1849d95c1e2a6a6abb99589d98d3c53786af6fc81855ba79825c38682cb58ee74cdb4b3298cf191d74d4d9465402d7bc628b76d9c36cd1ce089576e24e66d91bd569b220ca7d24e462e89149b9a29e408d4a6a697d429b5ca6fc2412e6a22e4c425766add3602cfb920586d59e3ca9236eadb8be664eaf47df79d4e4d9af30b0bf387662b9559f1e9043782c7b0c9d87da74fdfc7d8d41d2b2b774c150a676ab53385c22d4b4bb7145cc6662e1e38f08a2995271e3fd3472783b320022fbf9120736184dc78884c3557adc1f8436fb28a8f5b15c79a4cde19c47ad592ec4e427276b6302b6e183c5b6fc3099e4da860be95c9792bc5f969c28892f3627c5acf18c5bab5c92a4571cb2ce89bb055271a99679af4952251ec768185d70329e98181277bb3258320e49ba25107a0d5742a2d19c7243f384868bb2325ae1dcbe9783dafe3585ddf0f5282a3ea4029345df45dd715fcadbb83444222ab182e56274bac69f54009b356e00a03f3b5cda242c2c5b55a5be1e13832c2e8a1a39ab658abdd728a4c56ab2f9b9a248fc81b55ef149dac566f9d9afc6e18f61b9d2653d5eacb26a7c8c3ea9d284b78e3ce4130371ef1926aaf8aa441c5a65d71820f69da9592ddb449708d3caf27e39a743d0f7c57a43dcf1d5071a31f492386fa1303393212362a866c50c5892c9a78bed96a978a6144014969742586e86d07c129bed5f3fabd48ff1c9cecd453464bdbbd9eef07927fc71ae66145ff1c342f63801c15105c6db62aa54abeb957ecca523c2a52b355198a53d96c55c426ddef791e7446e3530e2256fe61af173e7d59afe7f57adbbb23514611295d2fd273f405d58b235c60abd35f47173a8f9f3c34f2ffb08cdfb6d128d72a2bc371bbd57fe5b6105aceb74e401b3ad6a439b7b030674e5aa72e5dbaac2c3c04c78629010c2a18a266f2c4848919218cf0343f75e9d2299ee6445ce3fc424a65c38461f0289dbde3d0a13b6629bd74ead4a53fc6141b59c3c81a98626e6a98606e0ab65333996e5290d10c4446ac8218f0898c60e04c8e09d64c3ee2db5aba81f55dbbd2e67b9f1efa66b7d3733bfb9dc2d2ddeec660671aada0f3e80de8ade8275117fd0e42d5bd780f9e82eab0564986bfd957c0396204bbcb1f72d8b0978c0ae2a4a4765422dd1e27bf8e0e96ec8c1a7b30babcc4980c4f13fa46fee4f83c2e4fb2a5a5dd36277028f6aefa527623fd6703fb1171ef853dde160f77791c898c1f088b1139dc3d327157b56db4c5bdf8cbea28c9b089fd9813a8e574c6bf1fd87ec5ed1bceeeb21518b2df193ef9a37da3b3a0bdb8e6f3db036bbbb846f4d931ba3977977b7064a3e38fd3cf857ed502ff0a1ca84e9391eba6b116ead4e2c6d57f73f60dd333a7a667e4d71bce065a5be83e745be5c89127171717179f3c72a472db433b2854c8c6e4e1be3c836d01dd1bc3f1bc9d1f2479949644dac0dea51e98ecb678144a7ba0218bd3ab48a2785f297a5ddf95bf5a26b16a7b724a9db73cae82f1f94190bea79f269cf2247bb71c2739f72f34d79e17bf5dd777a50aea1b18bb7240dfd29288cf039a362c0763387c183066f43d8e15fa0cb3111e6f5a9dfd9d6fda322a99bd8bd514ec1d74c55fcff701c5d42987c416d9ed82e7fbfd5ecc99bd27a0546c9e34e201c4ee5c460d058371fd3aafb49ac12e1a1d88387c096e0ca60ef582ed5406de7a6290ecca4002f2abdb01e458aebad3895243b1c8084260411da33ec2c8874eafd71b7d7e088a5c3cf7fdae783a7cf65a1da1483fa74021b617d7879e48b1c5ec23c78f3ff24b8190e36a74e7a99f16bbe64fe7a7a6fe30dc40d3d12d19e32fd0ff17918b9033f6e0914aab6d97d4e6b1bd58a96ca4d259fbf8e2d2ca816aeda89363df7501292be27faa39b923b5dab25236a4531b95cad2772b3bc156331c677e5aec14b2b6ca3887288cf6da80ba7b6c5cb13d302dade6c741d9f628708d01aa41399216828a1af5804ab0f7601447bcb66da53e9522bd5ea43276ac6ba14e6ec865ffdc3519d3f642bf079e0a47a26c0a6339243bd88cbd0d48c545d80e641ac8c5489ee35e8c4ec4926d888737bc12a8a2ff36f805146a89236d719c9698125c413b1e0826ecb53a4cd7890e1b0dcf89550baa375553a84634f59e672d67fa179447e9b3f74aa5b88ae0d555462ef214e07b1dab3a0d9eb4bdbc576c5f2aa9f0a6f49b9e400b680d1d1bcceb518835469a3fc59074738f34f4fae1fecb93ec075f109bcb2f05dcc1e323bfe0abe01472ff7d4685a8d81e3dd22716fb99c4623ac868d663e4aebbfc926fdaa5a718121aca2a7528e0da3337385b0f8a7b1b9db36fdef8bcbd317dabdee024dcefcdfbefdaf81372af297fc07dfbd6dbebc85cd1d5edefab6fbbcf21dfb5c8bfb779db2b1edfcdccdbc8700c66fefb9cb79bb0bbbef979db2784e00de72dea506893119bfb9b9ab738cf73f206f17ccab55508cda87828240ca3622be5e29e1cd1817d7ab9379fb483185d7e411253633a884662c0dc7d7333d3de7572b0523c34c33845820596d1d695046cdf197262870d2fccd2cd2a5020646b71718b10a0b0b0a1cd2d9cf7185d9607b43f3b6689c6ce262e6f5a0b0dd033c6e2d6d6a291d1e1503973742116bb50c5bebc338ce8b0efea5a85311d0d82a0c7a78cab4eeeb7c43a9763bdacce014e5b1dab92cb55ac8e9506985b38ffc9a13536d2d7cbb11eb62d96d4d48baa10caa97d44f57140d7dc1658f4c514f9a3b67ac5f54223eeb85a893c5c1be13c4a6707e9953562d964dbc716975601f48c3e3075ba7ad176d35bb787f650b1e31d233babc68103670a054d053f0cecae2e5ee52cf7c049659a15efc333c3364995d61e2cb89abdfd7782fc5e9cb604f75d113de03b21479db8b657b48d712e19379dff93ffcf14b3677e759e3e828e3a17785730b8f8e07cebf2ee204cf18379fde1105497e3654fef6f3706f7faa367f98a4a3ee98f1ef5eb87ae67f2bc610fba8044bbabf55d131d3b58f0e7465b1696f6cc704fc2aa87cb1e7b56722480f177b74ed50328765471ac9e617de7027a257a0821d837568cd20e158bb13b243cde532c5ea73136884c2cb841bbd1ae73786a613c4c3475939d58fa91f072e1ef99a94b26a32152cda197faaf69488a54be721cdcbdc08fb33b9a6f0f2f60837149feff31e3232f48cf27ce2e6c5c18b2c39b4547d10f8895ed8c71a31f4c2ddf376a161bd99bf610bf8dd5a33dd18cd95986f35b1cc4fb1a84d902678c1a2ccc30ac5683cee8cbe2d93343ef8585b9b11c833ad5b9c3bbb56ebb62b455c75b520c014914d0d08e39a4c950efbba229c7b6535ff28603b7d2ee9e9b194b829af6584cb7984e7d60df7210ad8556ef11bbd46a86f1b95960dbe28cfc4a6d8e3278ebf88261ebbfd0e9743a5d19a853fa64a3e8bc60df571c51b7e3757650c7ebf47dcfeb0cafc52c2acbd8c8bb2384f3f1cc792c06f84f8e4608179cfa20d0b73f1c051c4664e037b01971864e13dd9bf21b881df796876fc7fdfd68e477e046fc6aa86a4e43ccd24d3a19a8852166a31823ab878f9cb8bb4d935ce0c44d19cbf2aea973cbcbe7a6ee92fe209ed755679846079d82d71638a52db9e7d98ad8d80507eb8e3bed14221dca7c809363e0a2a467c581c3ceb6923a0c065d49261c70193d7777e4b162dd2d45143d197f3b9475a551768c0d75ab386c3afd42ccde52ceea764fc253221ad362105da02e35554dd416eb1262472bc4813c6ec41502b933720fb6bbbe12eac99ffeb3816d89d7f37d3f4c832f4f60e85a8ef8858e587ed2f8caf576503730f672bdd8f981ba8c38be8c9ae8347a397a1d7a18212740a9bbc2d455c307f5301122e5ca68f43a123ea88f86ba0b1f28397ee8e0e3c035792de54f9ef250f5a0173dbe206ff823d741647277e028a4d486f2aaa726b91b73230abc6e62f9a5a8c78b9d633d11c05765585ca4ecee048b728f04a0bb9574488cb19408f9812c08bc001f7b3bdbd093e5d5f629b118a8020316c8dd5dfed3cd8c6d679a8589893135add48b9b73739bc5fafcb9a5a573013efb0f18c10fcbd3fb37a4746d6ccdeda18aebc357dbf166985a2aebfca7e6ccfcfccc7ab95e2b7f206c4f011ea2ec5e1956e61e19f8cf4b65dd7afdd246f3527d71ede913279f5e7d7371736eb65da8cf9f5b5c3a373fc47b2cca51a934582305793ba6d83c0ed57cfcec59b13cb631817e2f99e6b61e9cae82a2a4035df0b06df6bf82b142187fdffc7898844ee8dbec2324322a8da3a0a85aa3c75c04b625b2425f4bd09f50275588af9f60862660d4a3e4cabd03fc71ef154295285ed5e12104dbe0a143b13ac2b38d54e8926223a865a8ba0af4547d5a827619e7ac2beb0b6ab5c26a29f199a9eb26f345b5439563696b23fa97967aa111bfc6e6c8f5605dbd3058809e13d757c5d201bd1d96bf1b3bfab1f7868b198cbd0f9e585b5579121b8f9c29a4a149bb7e02c0d739f480182a568b41a0075cefea290a3e10a20a25047ca0a9f8581f546536029dd32c0489b0f0463b0a5c2dcf4b846dceba342186577ecb418f86be3b3cbaa2ced8d88fc2d19ef545b494ef8ed6e30663345a417cbcc2b14e22548d85c1846ee809d10d7c296274440955e3f2663e7442c501a837776b16de9f591c4cf762e6fd437a865e4c19e9c5491744d003810ed242d382766343110d46ce420fccb6821b01dfe4463149b38a5c4e65b3779cbaafcd0dfe4bdce0edfb4e47aad1c88f0d3a771d3ebc7642d375edc4dae1c3770918087450930839f288dfa1aa0f40eb041c07ef7567bc9034b2bc33af83ae7fdb1b93ef0a8b7d57f28db7f908d0fd3b3de8828f1c849c35458d058c86a4c2fe7162f2e8c424dcef790f4c4d9e989c02bfe4beb6b1e69eee74ce94d6d65eebba72ef1f9c51b38a4ea37bd11bd15bd08fa0f7a10f22d48e79ae49db8d98f3041f9159c80355c6d8f18e8bd85e1c614ea599d64864bb58fcdd18f1c6875c14fc914dd4729cb706b4fc5af07b1b4fb2b580d817bf2f8e5c2f8ce45f8a90cbb78238548bd6f0f9f1dde0f7270795d763058adf2f0dca53bfddd11b1f1b79e36311dc8661aafc1834452ec58318e592f21f449a8ae24cc9e5dc0c11b518d762057eb74b3389448676011c2b91a1ebdd759a49580efcc391236f6a41cf304da3ef11693769fcf88f1ba66311f65b1ffa9084d71ef4a49f2f825884ec007544476b4accd18dc7e950fa3307fc90f552676ca934f8a15c21eccf1c3a28b561a37e8fcd7665705a3677c60465ff628c3f37d2143c9067d9a5291c5c1a0ed7feccc03b31a1fbc1d179af8673bb83b893583c2385a52493912f8d1e3246e4e936a5f5429e54f24d255d7377502724bbd951c14b8a16743c0feef528ebf5a2ea7c9eec3fa99a88fcd8dc1a62d771ec90d1ad56f275deaad841959e3238838eeb791db57ff9a2408c1c67dbf3b6fb28605cd120d6ef336845e07ec1a2d5e2c180c2d5161dbeb951ab87010ce1f37f9e98c37451cbdc39bf7a87bb30f79a9393e92263669a6b46d24ae6de290f3b42a90385aa9daa7a76e1e06bd74f39e9d464564f335a4c1b598de52cabc094020fd052107b6945c515889f161a13e6d66b5a3cfa9032f9fecd3145a60e146a99e18abfcc6832a38be6251cd93cd105521fee421037a60b5f0cda128b9414209776fcacd25834c46261b30e5fbc515f55c33ebcefb8bd9898150d1b9aa343523716f43f4087387e82aafc96a858d1deef9abf33a3d5099e4bfcb928f39db9a49534343d93a4ac989e3cf99ab905f70e00dbaba632b5c28194681b2b58568e6976225da42cad67275369e774e3b507e37e2eaf90273dae40bd5cab6cae374f84b1a41a5bd028d7946d731060b7a6150b1acfcfc9339d8f40b321db5697c014bcb8566ec8bda35ead84162118e1699bea1463b00b184fdb7a36a1999a396d1a140c1d602297c9d1d403cdc5b79f67090600ccd46c173249cdd2ec0286691b7399ea7b92717a3c95c500389b4ad9810d5f422bac4ee4cb183ba9d507e77b1393ea6422cb926175ed542a4b009cd42bb787ceafe8053644af15f468d85ab6290d19952bdf66ad2e0f686a6d4a0befc632546ae54a4d8e01d70a6d95a5268d1b8f40730b0e43709a53ad5e2b5754402dd5687801176ccde2d89e0699d29219706dcd941d4eb0f36f5f6c3e60b15c2637016254a8919c3135534b64757b1ae3820d04a84eed690c1dd58d9f483900448d02909465a9939e26267bf30fada41c8ccbf989d5829608cf7e0a7202645371bb224b72ff5be8d8e86975d5e8f4d352c82254042b34c087f566b1526fe62b6d28b54abd48ae08e73d9a5147f99c0469e2dfb31cf8fa63f5f7fdea63efabc33941c24554d34f748d64d2e8128d84675710ed19798e8dbf3d2473159879597a5f7c4fedba91ce04fa376a6c772fa578f7ffdca7ed778f515432ba7c378ac7d368a04d84aa95fad0de57aac7a5e7c501a3d98cce0d69f24a1d7a9f49fec6600becff718a6492722b3a7b7e237ebe7effbfbee4fe66bee386bbe072c294eafcb84d70d7f386e30f4fa3130839235158e2c6eaed6002d210b84eecfeeea8a3fca4100a0eeda0804af77c1767cdbe6fdab8b4cb3679704649b7a384499d87cd74da7c78e448fe29854b83b39f1683d8350ab18f093e32884152815ea1ac9dd1ca85e047142692ac22efb0b2b4f0df9ecee7a7c547d4164f0fe18e24da1af6066a8f91e7b742f9e82eb5921f74e6be083cbe2df826df1744e1b7e33ae2e818f541c843c15f49fa7157dcc3418cd20a3a29b05bdc1721ee9530c42387271a04e7f49c8ca267a681c5b4fcf5c1293e4ad3bfed496a35f81e48205f1a07ffe760394a9e8b6508c3bd84a6a431c1e577c6afbeb3c53d822b88f909656539b41461b5616d6b711c4ae8f6462afadce88dde6897bc31c6081879c8851eb8aafeead848526303397d52951195f9bf86cb7654408958a39e1c1e975e644bac68af05790ac831e9471f497bf63688a8f066bb596cd679bb516c57a238983d6e52c3b152d9c4f039161e63ce670e9e3b983e9b3e746e6d6af2b6677ffa4fdff553db2ea3c6d36130c5517d9ed73b70a0f7e697bdecfff8f0c1d50f1f5c1d8a79f956f4afd1efde209a611814c1b9c998978def29e6e5989097ca156a8f90973cc8ad825d365b959cc6f70b79f9df89ceb48c919848271d5d4f6b9a4128916125b594ae670cc3e6dcd2300025843366726e52a6c13a504a0da6599c67f4d444c2c8685c2784e0c320c35d5243633aa51a21240a21c90935283328e541604948134e6982b184d65a2e53b26fcc4b584de60d23a5318d88d2b5b4ae670d3dc57553d30c4ac45f9233936b16d30c4a296534a9e929ae25658558d358da48e4cc64d14c16935446c2947f1a217ae0d54f067719a19c8af6eaf425aa614c01e6deded30c12dbff1d5447a7a58fe990e3b05a47f5717287763d1e638717e3b1c087238ab9a11a3cfced0e5f3a3fd99dcc049799c9eee4f341faf97f880916bd50c71efc7e60e88a5b8edf9dcc0437642141faf90fc4945ef1d8de6ff8ff2eb637fcd50a31b4b2ae2ff0022f27f2663ab191489b85a4cbf3bcacebae96202bc9743ab94fb60ae7ae66d095443a9dfcabd6f9f3ad179385449917f882ae9735237c3fa1b9ba5ee679ee260beafdb1d90c2eb2e939952dd94ca45f38df92e641b1983f67d00fa2772054dd82d61634c2ef8672540a9631dfed832bb2ac35d6361ae14badb58d463d267990eb7e8c2f2f6f4672972654586460c43122d89c4e3d0c5b759ee2a712053374e12d329d6202294d772c665078955dce06aebc9b1302e499399b62063d0d610ee841ff050c5bf5f474f27d1f02a08ca4a7adb3b54d8c57a94ea41b6f42baf132acc910b7f023ccfabf79fb1338498efa4e148f5f4644461e95756555654ff595dd355dd5c7f4515d5d5d3d877a523da3d15cd20c333a46d7a874a29186d18c464212c8520904081981cc2521b02803c61c2b3e786101effaef2dfbcf6216038f3586c7636db697c7673fe0073c2fb6b1d7666bde272232abb2aaab7a46c2bb3d535591919199119171fcceef4fb36ca25ca647a97f7e6e4bcbf797a864c12f005e9d45586145d7ee09c7eab4908b10301f398c15597a2c3d96d818dffba3f7f2c5c02087a116e07789cd1eaefae851c084e0cb1e737d10ca501c6f2584fd3783d0444946bf2dc8f8b5bef4b8dc53c30c8f3d496d7b673e3f335eb47cb5eb06ad7163269fdf69dbea9bf4e29a54ccd6362a985158473b2165f2e5a0c165e66b3f1652c536625a791514a4b375c2572cb2cef470baae0bc1bf82b102351ad5c387420310e6b15e8bee43f7a3f3c2162c10fd6e800ed898089c79362602f79e8d89e0ae6c8339420781e5cbadab6dff1df722e7d7dbd60baff0ca0de7ab819943786c2ca163522bd576f31d82742b1c9bd3f6d429b5c59d61c0c1427915cabbc0f7fdad3802cbcb61d0504d7a9ff0fcbd538d6ad97c321a4de6b3c961edddda70329ba7e4c0e044fe457e4c222c9ae485c415941c00a42837f86ec0a0c01e4c4217cafbe87156e3f75e4f465984f033b2a0bc909f0df155113484762054298f09bcfc32e7f3263a117e737453c31fa420db6ac04aa101eb7fbb4c4d5613b240abb91eb6da11e1f62cdb6e78eb965d9d5ca90baff8aa6bd9eb9d063a7ed48db65caa864e495eca970fb61da9e55b6061168b15ba71017d8fecb07ab4759380157342fedad0a03a19d30d431f233a952c8e4cfbdc993c2db99f8b17753559d4536059772ccbd197c157b4ca34e7e2e439dfb3fb12cb75e197e6846fef959df8a52c940e47f9a47dca84b51e5e377bdbede1fbfdae132deebd658302b50d59d50d3921fc70e96728f0c33b7d0b3ba5409db8e1ec12ecaa3bb56d80da8e9a6eeb2b70feb28f6f422d43a98520def23f6c294adaba874dd1c5dd106df5aab1d33bd1d2ed8e23b6c9b9cdb0d3cfb73ae37cab33ae6a75d5f94bc34e77bbf42fe10e6a67053a6e176ae00a7d746fecc9deb17260b6e52775a01b0bb19d533fd0cdd6f728edeb8edd4bb75d7d7b276f4feb81edea3361e901a987fc0002ded742f362b70d69312be950d8c64a3904cf19588f4b55b365dbaf1bce9d5c5b3b991bde7e6518f3efca7a3b58c5a70ea5f714d64e9e5c2bac650e0d9ede134608dc73ba03af6a13eccb44c9f63f9d065cef11003ceb8d86f09caa057ab4664d60e9894f276d1543677bf8e9e5f24bedd80d228a60f912a208f291b0904a4781a5da51048be98e288229964b8c253a9d0029807e797690001851e172cf1420002a11eefd38614446a2d111d38cb7c2d41150980a0ad0980e74307bb90e40373a122a44b1072366424499cb440038e11b519508d37505c01c36b18a2d47d3755dd71c0babd81c8e00806ea811859980550c5646030c463c1219b415a240ad59ebb0f7b902a1897c1860d29f0e7c36b7adc3fc4091f9b20f9b274502529514ac78ff594ba5766c9d989c9cd8ba2395d212a97c369ff5da8a5dcfb22ddb3212af29975f93302cdb72b3f9d477b64d4c2cc763b1f8f2c4c4366b797c6e2d9b6f2d97fc5fdd8ce3ed070e6cc771b36ed96b73e3cba843d667a19dc26b5c20a9065ebb1db1595848ac1cb2a9adb43483b68f1b1578f2aeaf07ec6dcd27dff43863713d4cd0b5734a9e2bcc26aa354fcc0f575a0353c2676a00a01d1c81ebf9c502fd1c9fb30783185eacb8902ab25c6557c09309993f6b93c685c0a1255d7472a125647b204dabac02acdb9611c745738b6d45924a56e50fc6234a2262d99370984635cb56946ae6f289b593ab007cee1b3a9cfe2060b0ec58e477e51afc7133665b80e19f1fe00c1ad1f01706dd936bf6ef60b56d3b54953cc5c6d8d82dcdb9d3c351e154b0409fdae0ac706fd808b455bee3795b7d1d7def053ca4a8f7420fe87c347f41c7efed763b90cff68d7db0ef335a4733c8e3e30b2ee2ab9809596c04032ed19e3ff3c01912099b572bf531f897bdb2f2df25792bf6414aaa53753e87a0da3f6eacdc3e27574e090c281976956f11cd9fac7b02fb2918677c3ddeedc7570c599de15cb9547905ed03d4b2699eadd5ea1769ce7ad8eeec026a342ede1019bbac0edf15d87308f2cb95829a2f44a1c046f8dbf6d7e696ce11fe1519888d4ddfbd75e2eee9b1d800d65607cdb991fcd178ec687e64ce1cdcad8235b82d9d4f1b4343463a9fde3658b9fdb2c1ad4c1f9e9919d6d9d6a15db757c23a37155928c5f72d3b5d2ae7c65569159c839c8031c2d24e16adcb5e5887f5c6ba1099af43adb16e374b3ce5ae8b7825b6d508e94dee42dff12d14a4c75d2a236313b560725b7033e12d29c74aedf434940b4bdde5c2d757566137942a4e20b4ed7dd73928c4a025d7ed14fff6bc67a54b745c08cb8b57a10264424b47b418df6c04ae0d2658c4062298523511b1c763f1a1283f8eea7aaea4ea0a36185609484928c65853994908a194c6ccc408674e8c9431bc55ff0c31a8226ea5ea98108289a9aa11954635d58ed078e47a85e8583509b3234684a83ac12a51744634cc0c422821c460aaa9aa96ae3951d51052634bd3e29a913635661245c5bc6cc2d0e30cb4d1b9a8ae036f042558c57e642362a89a4929310d73eb16cdc40a1efaf29661558baa7287574015519178514d8a86355dcf26933ba6ce0d2d0841b442083654fe7c8c156ce9da403233998c1a0054d596b645e244d514053056005362a8e226182ba6ae0d261359a64530c15465034962588a02846ab313f10c95f4bd94679982b7d98e0e07f216b942b21040bba0073ba9c36e0bf11e12b0803c6c53ef3f0b0cc4dacc4d87682cccb9040440a3cd0a55db61929a8d2ed199e6c793a8092cab613486665019ed4157895d5236a2e4c849c8f9b6565e21972e157a94703620cac87cbe0ff0ba544585ae9207f56ab51ecefe9974f60761db7f5e64815ca7d66dab5a0d2cd5ddaa84caaa490aa1c5a1b8d2ea3d6ca754439ed07eb340ea887db182bfd9b729149151b14b2d48f3528b66c9c1fafc3290a866c4c9f236501211238e4fcc88ba18715c9e9359e4e0302f24ea563f064c8be8cf8161c64dfdebbc76a6fec6e64fcd7844ff0fdbf82e1ff01270a10ebf12b1b81f9336324128ee2e22ba2800947b84e29644742b14776a81d3279da1b81796f975f6c5207cb60e5130625401604c01da0afd1c8f44466331376226c4124265e4674dd0d47103d4a1a12b744d81f728babe77e84b227e5120898b26dd683269584943c1a00f58e0476f562c66188a12712358c5b18ee0cd2ea7bd0d8345308b8868d5d1011d44f0e6c8484a04831eb6e0baded040217e681bda81f6a3eb4484945eb1597bf3a69b0585e90c5a86da904d019e5457ce34a1ae989f92cf806f84d9987a369fcff2af6affabdb392d9fa5768898967426b497c6d028ba0d9ddb68fbdeed80427bf874ab33701188880e3c852ed41ecfed94be0813ef7bbba88e95c97ef4cbdac9805271427e64d0a1a6afb56ffdf6ceab2757fad13927d75a4ffc8fedcbdbf82b6e1b7ba61b83a893ed6c347865025aacd169d3a9a134ca213451712a05e63087892e2dc89dbd13470bb67a4eed0b35c77bfa47356652f78c40257839f4a8552ff3e4179f742e7ffb6594ba676e1341965c5b06ceb23b31aa2d114575afd057b60cbec7d54a6b008f86ac4104bfe26c2258e20d0ce444be6397c05191fdf930a1d57a875c4d7c05c6cb9ff34d0a5effb9e0359c7f9898ff6383057b87bd1545dbd00aaf3f2c2c1798e38cab0cd44c71a370372ccfcd857163c6c2f016f544e237c7ef336cbdf9f344e2f537e829435a3e5372f810a59542a1522934ffc8af3094ad6452baa4ce273e32fd2021b03f31ff3baf25441a4c9b69fdeebb8d94d9653cddb31d1194405b5101a11073e654800f06672c51aa74484c18ad14e0bf336d246326b5998333cd5ffde9c13f3df8ed66edcfbce677ac566483faf9837025b3cdcc88c65aa5ee00ced1fa8365c6fbf4d401590fb191545114e5d1225aedc4149f838274038e02eb0aac5d0809d60ba19e7cf7d3fe9c793aea6870b5651fd39ce8b10031cc7e363029f721e7ec7fffb43ffddeae39d151dbb28f451ded981dc0d5557dc377addd7961dfcfc2c5e2ef87e3b3f74329f1fd2a37f1fbac052e95bcbb223e1de709ccb3284aa22d2d4f5cdf4fb1522ae79c523a37213911be248c75b028bc40c22fe41340e55239c74ae51caad7dd6a151ab53aa75b9a6e5d1a2ed61bb55aade67a5ead66d9f57abd5eab55abaedbe0f48ce77a55bbf96d411535eb55d77505a553ad76c5259c43bbbae77ba1e3886ea4293b85ef2d988a9a58538324b81d4465f33d2d4971f09a8ffbbf2f7712916187da406ffe04caa267d02710b2398b14369ea9b4ac5d9c6ebee67f311b65fb0e7ec1a5310887a27ddc1c4ad0c1597bcb846598ae4b0cdd34cca1c4df68ccc49862c2b0cad916957348aa08c42a0c6b08d1996a52ce2125222416390e92195293a6666155c7824352f9e5821d118c498472ae282358349d528b693166a48c63c4d0354d8d1b464ad79d68a836b0333e14891883897471c8591898be66da72a653236bb9dcce816f50238241a1449bc9c55394709e10b030e631a4e94f446703f1542111d50503b4381589119509060814c170515e52c18aa169d9447c80b36a98a894390948f0276557469c9974ca35cd8c6e9983f14c7170606160faf874d87ffc0574185d2b22680b3b6e26cd1b8a8921611cb12cde4d2a531c0147bee515fe5fda47482befd22a5416972a0bcbe5557032cb95e5a572310173c012cb192751c9ab2cb10a8e82c032af7c70dbb607af34393d99b176df3a2ecd8f415184d896538d326c0628e3d5dd560643737dfce85ce9c8c8fadcd1f191232578cc88e1d8c0c4c4404c891bcd9a4214cbc2d6963cf4fccb6fb170342245ba4fa56214f63067a4f98d111a4b4169c4611d34988d1c54e98567571e2b8f25c6e84590fd3762def1cf05d4033bb35b865d7501d57b52c62414ff467a625f34c2402f3c3ede8246af8accf6aa73cff87ac2673c0ce087dc2abab4fe4b8cd9b944e915f5dfcb1710a05ab5daec59eb0d5882222c411fd6a2571f4e5ca42edd911140a06926c6a0d7dbfc5987737db50aaea87ccf4e747bd51c6decc789cdc661c7a6d067d4b52dee7b8db5d6ca7f49cf95e3077ebde7f2f1b211c321b0291f96de559dfae57e23a9d67ec8eb7a8c99b69ab3776f5f429b83f7cdfab7b9fda61bfddb2c0766870d9fe7fbc70ea1ed17412d2a6dc6d63ddb17d2e815211df547400afcb21b0203a9b20197a5c362bdb2194292db03a8a846e8f33d8193ea7d6a37d21f5029f01f9771fed06658d695fe604bf37d01913ed6afcfea5d75f79be9f48466aa89f8bdebed775fd9e07112eac44db1b37fd2af42cff77ba56fefa8520bdbc9e90bf404a88aa44ff1e0e618557d21aafea127421512f17e5d1167a3e65bca1c47d7a33ba4763210c8b62cddc2b66d616b364ef985e20085798d70dae9827c819aeb4aa6c677afed3af409e5bfede419edf7785e404bd77a5f181c36360a7c42f6175ea3d3ee22c0d918e9eee39dd0e2f6fc6efe623d64e5201901cfb2e917eb6d1b07b90cc95e6edb6f66d09a5cdfc28b88bfccb1b663476f378e4adbd103d69bebf2f9f2798297b88e6c2afe1239509517b44c343ccbfe497fe95b2ba7bb0d13be5751b04efbb3e115b5e11f784502872cbf353fba84367c51d45c4a56645b765e4a0ba4cd891ceb2368b7589b3620188720c2da4628855ca6074b5df02cfbedfe639e69036f0978c81d274c4fb5533b273a61a11bb6557abb5f21093cceaff9ff7902aaf140652a80999e9a9a9bce4fec4cd9aad0b9afc33a54d18caf47be2419e3529e6f7a2b939feb8d31fbb9b5938286ac767b25d190db92403c315afecf816d4c188ba8871d4b27f6d08634a75dea21e9e4cf24dc5035f413e05e8537ef7088b90ba8ee7a617ab786626818cda2cb24ce5b58735468a9f60504d8060965a744b7d6b2e60ab874f89c44fa111a946fb404760209dd9783d66cabad7109698cea615169c8ae4be0c25f448950151619411019996a741eca94b82fa7a31ac8f2f5e46d5164b5a5f56e2f756d2cf6ed084d8c955beb787881dbe08256de6862deac56855755cd27a9bde0c80bc93f5ccfb62403e34b45aab26cbd4b7f56bfd080aaf0d36bdb6c1e47b776da6d86b1e0711f1bce8e982c7df2c3e58398d6e7bb7ebb3ffdf25be4ede67b8dbdc118b24716d2908b3c58f7f1ccfbf64347c0ef3efde3f429dfd7aeb54f7bbb37df67fb1cd736b4ab1d9167436293c208b7e202c5640c850d2b4c8882a870ce208c191454e778a33b70421b0606fc58b6c1bad6bdaaf9a8129d4f65a5b4f05416348cff11c12b73e5127c911356ad258dfee76039ab8aff7c39f33c70044d16405a3073d1f3bc86282670d4a0a54b590cc556bef40018b07e29712e64c8e44b0867d1599f89b6fd122b07754a7785adef948ac3badc1d832a58b6746b260c9f7eb425046fd896fd0ca1bc0a2b013e8827a30c2d3fda127da38e1812b37cddaa889e58ae14a250a814d8d272a520a33838ac873b4cf3a91d69d7bd6a6666bab0f3f4f0dfa7fee98857981d1f9f5655737f78b5da16c964d2a30b330bca1f66ff387bd3fc82bb35b77764245d01dbeaf2952121fbd54134c57932bb63afe9dc799c0e849ccea346d75cfadbae39b84181d71ed6eb6dab04afad4fead66ff9f5eb54c4e2cdaca33bb56d614efb67ad2df2aad66ef89eb0b671b3b52e64eadcb6ff1de67444a5d51b2dcbc710eb6ab723b325722c20991b760f14d453b586657bb5da3fee203ae53572ad8d00acf7c255b655abd62ea01d0ae1150feb5246391d4105880d1f569539281772617cc828e4d2f6e6d113bd0ba8e6c62d188e586eab6facb164bd179cab0bb55a6a9c171e4bb68424ff57c4aa43c3ee131bd10df9ffcf748fbcb18e23d6a5c50e567a788f9f78b9a5a2e85c32c3692f30d3e38c46cb96b5fdfc4d14fed04972e5fa6af39be783077072abb59dd6c383a7da5a11daf68e92f643ddb891b029e5e7079daf89384bad1e69b7918fd9e0619d922b2f5c0b14c20e2b07d8b3ad508201bbdc1919bd35cecbc168a98b09222bd42da81492ac6a905b0d9ebf2143ea10dc962cad679f748e13d6dd27d5569f044bcfb3afb847c26343d4a17334d01e78821d6fad43aaf7edd6d0fc76c7206d2d2ba1eab55470e1bda2ecd3dabd30153a19fb6e167f7dd3dee6198df60bb27abec0964ea7d67a1f5ddcc9463b2fde2701ed015eabd12f77cc9356b6db6e7507c49ed42cae77c6a5da82265011dd81ee0f22e5b43df538312811f5fac96e68080f7b138bdbd00dc3f870d5c995ad43435b572683df2e2a128eaf4c967a73aa25cbf62fdc1514aead4c8e168dd34671747225946c56c3a26699faf85bfb33b8b6f5d6d62dceda6d197cb02fcda2ede80a192b5965b9f17cd887aeabeb466067ab27a09ff4ab43f2355a34d4c26acc196ef709ffddb236a1ca4a35bfd7d547c12ab5be75687a2c323be4b7fd1ded6e587106e57d42706fde06fea4837659421e3a8c4e08c98284b212fe07e5be4d5d8536d0558e86847e76a8797647532757c6b2cc4d7949371a1e02932b8ead6522dedc3e7d38bf327901f5692f7fdd230b6622a3eb27da6d0d9abd65da62fa8e197dd19d5c69bdf5666de34808c78b72a5bdc4440043e32f062d7ceaaed10beb779a7b6767f79a77f25b85d23ff37dfc1a53958a842cf77fab6dbc69128a0bc7f98b43d22682f68e2ad1e18430914b9726da40e6428292184bb47c3ff85a51735d707b870192e3fe02725df0e4f251afd5aac05913be76acbbb50d93ad0dd2fe0dd7176b78fc01cd759773f2500ff63ce3c2e7e1a7f04eb1a6152acbf9ca2a1417962b7935a6a82987e5c77d6883caf252a19259dc0d8e4cc34f7f99d30c9a3911d5ae3e35f03a47d7334656378c593d6be8baa3678d2ddfb057ec54cafe464e4bc4979ca83e56489f75f421ddd17563d098330c6390a7077f994aa52aa94bc238dd73cb2d7bd64e9e7cc5d8b322907a1b7bd6c7aac975e2c4b29c0f36e0e49c4a60f75a5c05a861a54aa4bf7955fa9b57411e57155c271aa9335d673c41355207a66bfca013b735d7b97f854889d6662576cd5a08d5a79d5c6f1db723d47b420614dc7f00a1896260cd9bc3a556e870be907de809ce207296ac2690ab785728738034c3d02e20cc08bf2561e1fa6e917e41725b7372812170c9cead4219fcd8678a0235c031c3909ef88adcae08c317c4ad81df5afa7bc13fc30785ff219b874a9e33786d6c904ab19211a876f0cfb7dfe4dc3e797c34974c7c49378467f01fccdc927353064cdf9eb9e97623e5e66e99f903cd8966f386fe0789646ef4f864e0f71ff048c3680ccd73cabf0b5bad87d6b353e7eb741c9d95e8034cd7e1e10d3ad9cfd6f849f1550fbe1a3ae349a637babc07512d38e305894e3fc2617412a1caa67c8833aeb28d9ee19dabfb3c74f986d3d07adfe862aefc9579403b7f5e1bf05dae41391fa06f0d5daff891bbad010d32fe41ad27171337f43d7b5a1ee31ad973771be3ebee7889682dd7f18fb4d21df6a2c3e84e74ee623d30512cacc07625305c6f1f7076d2e1473b80271796b64325b190da0e2c5d11f92d4c6d2c2e1a5f28249c44cffe8089e7884ea986dff504d1a9657b2701dc9a3b2f8fb4959300d5de7df0efaa7c5db8f65a05db56e3a9ddb0772f1c6efe3f903c3424b2a0aa459b5fd90d607bcd9ff9b1abe578dde2ebe8a7046e547943d48b7408632f9d2b3bb9726982ef1ae552dae15c748fd0173efffe72ad56ab5d40d56ad5add5aad56ad5f70be713b71aac8faee735aa55afea793521bfea782f77a1df403fe5ef451aa3ed00e7557a0d2d5c82d7d044201948c808ed2d0fb18b78fffc0b5bc9fdff07695c5745f46a19b75ac1aa0058c284104b8f66cd48dac40c6393a9d93c551545230ac52d832b8511aaf1c29844342b631809c6625a26cb6078ddb2bd7a5d4686b4ff6fc230d630315435a26a714d5535ac1005ab9846742d4208230a258461c2301f5a58a35423c454695427117d0d888af98613d599a150861582154631c5fce9fc8f090f2883d1e49f655c5355450d3156a882554551040416d508c61ad3b624850350fa1d8934510da2c8b6101f2c4ae05da918635565b6654d0dbd26fd1ddbf2dc66cd6d4b65ffc44a88266042683242345d406aa96e3612238ae81efe44429982f93d75469391f850d4640084b08951ddc444f5c392f3d60a9f267ea0a92c6c4f33832ae84a74f52bf38ac4a155b3d2ad392ab0022b97e062be84df932bb77e7d88539df55ccf5bbf14ffc8e67ab0f4d7da82be3f9b71abd73ed469b3d36a5fefb04fed4685d10d9d8bb7ef8b5eb78f80a4a74b3e62dc0ffa36ef27ddad5a990cd856bfddbfbb69dbdafed283e81c7a68730c02568c024be7a41564ae3c07923a2be4c645899dfe5caecc41618137b81885585bc6aeb65ffa58b073ec8232a3628564263dd015a09c93d9535ad2705d23a9792c82df4a30380a268f5a13e9e49835a85accbbfc722f324007c6cd44c28c680089582c011eff1e6afea5e78147c9c1e930ee9ea4c2bfcc2258557184795ad218224b448b25acc8a0aa2b96459cc8de64c44a44e2e3d17a3c1e8fbb2effae534b1d1af2daf44c1d6d4797a1cbd1fbd007109a282f2d575a1d519e864b6a3f27a319df358a2b3d300758ba1482e992cb64d828b855aabcda09e8152cb5057e0e8e02fc826018004c9e238cf6edb0478ce8673d0faa6935a6eb4ed4b4753d26e1ed60bbbf3e314c74955984f0b58712cc08d13051158ca11c60ef11a211a2f295495134f53eef9eb30a5144177bfdbaf66cd4d0bc831fa2d2ea98182a8be99a6d00d529d1b1581209a196aeea98af752a16d07d2a8d69aa305566224facc02adf20986aa95ff13c14f6814ca211348d968555c546abf342d82d3294ee970feb1d06e8c37eb0dec35d617e83e32e14b056a4df5a90f036e484f7fa455446db11a2b942c51168d3d2d32e98a33444ac3b1d7124721315e6549c1caccfdc77644e3155ce1fe534bc752d330aca50f37d5ac4b6b08ac72645d046900ae34fdeb43a73e4c84beedf8cbe96f2fd41b9c2b39fcc26894a2e7b0716d0f960bdab25fbd9faec65bffffb2db9a8afab49a15d08d9cbf972a925bc70a4f9b4ddc6eceb2425fda02ec136f1c5f97d37c797268787268f7eeb79c16b3ddf16e7b77df8c1cb9bf3c579672a9fad36ffe1fd3208cefb3b5cf70397fecef861d7a13bd09b119a484bba7349ac67e3f9425a50a70941a94af3ff1039cb478c536c13aebcc34354ac80be64b490109999c574c2be980170e324808215d5526b6b00e9c4433e39ab7612bbaac534db6cae574f02f4320ffecad756e1254ea2289f82c390860235e840c1da2708dc665d8bd2100d0c7905eb51f21d0fec5580e6cf60bea71971180faf8050a72dac9de3fc6c3ba861db033524df7ef6cc17382f2e8edbc9b6b4e80282052610819adf92bfddfce2209a41db05b2d466ce605dd2ee4ec4a54e57c8460fbf30b05bc9e6b77b9cdfa83fef04a1e9a15f6fd30c0aa2684ad2440e2e15f0066954a02968fb2b8a4822c112d5170fc805f0000e9288aa467a86f4a37fdd9d512511954588280c756882027f21f6441fc876aaf94dd1a6c5291f02f50b944cc1a25814be19e455db57a08e76e6653b7743ae32b659804c29b6a0a5321bdb8c4af45730a4285ebb42d58dd585af83d7b376adbaff7bf07af540d03b35b8bce37497804fb4f177441b13e82c7a12bd5bca16435b702e5dc2fdb6e08d4842a59e00ba01f716fe9f2e95257b57812e054e2ed19d71626a0408268cf28dd1542b36d52935f87fc2774d4590f62a2511c692a691609ac5971705e715b1b30bd45cbe97f2920098609d525365111ab11963f507c4cd097c50d290d16432da4e35d6a9ff0c00186efe86c214ce8571ea80f03a4454d5545553b23418635d552d4d8bebd4a4fe8512f556e11761d5543977a461a2612d691803968b19dff8e12dc9a85c9fa2c9e67a3b8d50284e650cb968015d8e8ea1dbd179e95ddca19beb0e3fbac1dd785c4d773a1eb629fb720bd4ac0318c1df72db96066d95bd5c1078455f0e2d37961de44a980471dcc63d0b408e7c355c902f055dfe05a1fc9a5fd6b7926b5d1cf691955e0856cb4e4e0bc9cbbb227b5672e9523b2e55bae29443410f4574cfb1c418f5c5e3e55cba546f8bbeab9eb7eea37581d76834eb506daebbe2af26f08f9a55cb7685bf20a7359a559e06d775ab6ed5edb4f7184557a31bd1dd5ddade1e567cec52b52952b450e8a34de9b9ad9e67a3fd352a57e86a8c19b6fefd6e355bb5d776fa6222dd5fb5b27d465188f2e246cd0aea904769288586511ecda025b4822ee7eb90bf2f4e849c7927a4136f609de6547213cca9141c164458ae14d844ce3f721ff1bec4ebfc574c1f7322296dee48f3d67ff49a5f958f8f99ab2bb0fadd23df3df2f4ea0a3f6cdef8d89159a8cb8bea42ed55d35211674c677347663d5f051689e3dddfe4571dd92d0e9aff75db9137cad21d18635b027c2b89479d63a35029577ca06a050da58c043bf73fdd3fbafd66b7eab9b73feedd7a4ed5e06c6a4853cfddea3d7ebbeb55dd9b6fff23f77f9e63092324b3bd0cbdb1239a52ae5c4a8f80537436c41014fc536e63a8f082443fe14b6fb974b128e43e2b1c928b7d3160e58f5723193ddd9e87693d13a91eef0082ff492bbbb78c237c8b7f08d8fcfa8262e8e937582df39137a4355359a877093b7ed2ef84d7e346e1b849b21fcf75a18b77c83bcaa5b4dcbf7c91e8b0cffe5f4a7fc9a9980e99fa8c0b092a7f0f50eb1508bdcae2ba1e67928792e96abfa0e9adb2e07594adf6ec800a26048b807ed7f354a57f57f52ad9b1964a7bd28ab025bd4fc4c3ee63131ab621657ea6b0762fca5076f625fa98db218d423a74ff00e960d6eab4712b0951bf316018e2cbebe7a17ee4dcb92347ce9d2b06cb906587ec1aed3046425bf39dcde7b36a36bb3de33899edd92cdcd8d7bbdd13373f72e41cb841bdc2eb5d3b2edafde83be87f08a482ffad98554c069f698171155fb9587d1e2e2656af3817d14b8ba5fa2daf58d44c15ac52ac2abea859e1e5394dc812e666526d16a17f90c9b2572f600f8a53f1e04e09fba10da2d736062c4cf69240ab3469c5872ca34b022d9ca685fc5c7487a2289aaadad626e2ed3daf49675c83a9220c84828942a840151302764c3611b02b8460218a0f0bd823d343673a576721610816a21696531d155b3659bd10cb036140a93301df6a56534343a9cf9ee5df6717f8779d7f2dc88ccfa68686a03e944a0d555b5f9d47c1fa2dfc6fb62034c107b65837ca4b9c046a2d29cbb03ef286ab96e666afb053c7d6cc482ab5776e6e69706969ed58cabe62766ee9aa378c0c2c0d2ecdcded4da522a803fbd041839c270f62af075aa1b6774aa204978260e48f7b6888e8a5d5aa17c464af569b9bb84bb57c9538755cf59a35af157250f89ffee412bc9b447b46859dca184aa273e8c708d9217e2e5d4a700ecff935d9ba742f896d9bad9b9030edafecb6ed1baae3b9f40e1fa2a07542ae63e5dcc6e02fad07dd8035213f8da82b939c6b7c87888342a941a894dd8ad024849a1a4b98464263bd7945ac623e7709e6bc6284af2a115b0df18a711a33b48880ab13dc24532da6c7981aa14227360100843f07eb943f812a58a1048b302d9c3314825d05ab4c8d194682aa74ab0c0d13615ac2d06222f80a6728a90a11a2628500c0d8bf01a4eaf493582c9884af7c9c8d55a3fcd92c22d1f3882f62d66d43b5a81420fbd15888309dd778aec0cdd0a896362383f109ce8e3252d40d05b0c158dcd0a2cc679715c1d1d228d3e20615423b914b29b134dae2a847002b0a23c4d48cb8aaaa1ad3921123c9b4a84a75be4efb116ed4b81e4969216cc86de8066189df0da5da522638dd2213dc05831a583ff6b6a15e6fbe1cccb003c12e7ca0e5c778bc2ba3f9b29869c73b2fa906d3eaa050c80929772980b99e0a78d1ce9c0d9774e0154abf9c7d01fd299b1c16c63b7df2e918146083783f27174dfe79ce17c96fedce803b9b4fc393c9e6a9905cdffa967f72a8bb742ba30676b6f903485b1d9e0b6d5ee424ba4dc4aa0dac7f5841c4f50c16fe168472c0da0afb097ffe169d4e7f14d68e732b225385e2dcc2af5a6644b99d9a33147883b9be3d41231ac96422516fc8d1aee61b99aa935b8eef0e9c419c171cdf4be56bdbb62d4adba37ddbd4c4f2a81b907f829b8d0feaf1b83e181f5d4ea83b8088202a18f6ed7ec2773d999b93fe30d79e38c1d7578a8818c343e871f42c42139b797f3b4b0bc515905168ca5d416b728193ab2f91df18896663441b19ce467e2f2df0ff74515ccf0ab213e1409713772004dcfd45ac6871ad62e55280c128ba932b5b522a5394841b1fa90c108d526a0dc5dcfd53cebc9399b4799e4e140c17504444941c3763b6f5354a29ad91882a141162035223c49be2a48eaa1809bd62c560686265323b13311d4b2097ea89d9acaaab2cc6e2c3d6d0368302a171333197a506c532b6cd58cce43f3981dadcd33fa6d2e1f5d21933bad26199de797431ff98464f27987a5fa7995ebe31f626365d9dd873131dbe0e6e5b36d6728ce9f46a2885832b6e74816b6ce057baf50cbc7e57487cd4442756756bb9edb223ef3897ebb80e02f78fd7f9bf5775d8dbfb9981f7abdb19c23f686b182bb41d34226c758e90d18189eaf8d64a2574393a84ae0d2ce1396d865bf8a7e95cba54e9389ac8a54bac55b20b03b055d26ee3a3d605dce9711f0eb5858b5a6d36aa554f42a13e1b8647fd5c1838d595f0a8b28baa6ed5c749f5bc6a4d62a2b6a338885b781790c44e6dd9e5c1afe043680ddd8ad04481ef7bca1ccc8088fec51715250a816a51400a8e2a23b0d3df25778b2f45000c2e2f15fce5c50ff1d8e939cfe057599d6dcb929856dec6926c5b498f912df34ccb724a21abb3597eaa342be2b7916d4b7a8c64b7312dab92a79e944a068fa822f6cc746090f6d9d9921ea55be698962544dc9c46f5f236ff0e658ddf416bdf7f0b8d698b732ca16505ac8427d015299d0acce25a98ac629fb919d536c164dd152ca8fd30595bd4e242aa2f266b8f609e1b804fb60d5330e2029755034e923119ec80262211371e1b8b4404302b261a100534060aa87103d4e1e17dbaaec04b8aaeef1bfe9ae72b708ce3d164327a4c0f45e4db80cfaae288c6c932b05c93a8241a00b44631db04a035620da70380d6ab7a32a65e1b6be57f631f5fc4706af95fac8f3fef33ad7c9cb6195aaaf345e97f411f5fd7df0c2bf0676ae3064e6deeeb56e838eaebe91676b20beb9c83543d24745250f582c47e1912783a9b522afd91610a7d616ae6fa9cf88fbd516a8ef5c4d309d7f3a2b83f7433389d7eb83fd01721a9d11bf8c7eb0ba7c3df2942b00e1e72d014da29a3998563118fb435382d7f023f64d6783b2cbfaf9ef13293c9e46466ede4c9b556ea3fb0189b5c59996431168dc57e4bfe4465267811c3889c5c5b3b19fcfeb38257262757b062cf6fd9323fe0ffda3257e89e82797e1c55d1bde8c160ae17f85c5f2ecab9beb05c9644e8e6d0d60b99be533c24a7cd313f60e21cf0265746209d5161db10053ec1814f5c4d81e96505888ee3ae1569a35a07335bc25afb53fbc38aae5f397cbc7cf87079f9d0a1656f62508f6b2708f5f80f259097335bd106a201b835d8478a5a948122e633d90cd43a3c9fdf1f2094d6b2794aae67f18af8d6b37904a871611daa501568c5e32ac32daec5969b846726f0ad00b6e5ff42d5329a7fac506cd99601bb4582d36701268bf4ebdb898e22540961c7ec0401057b19884e1c86944abb54b34c68fafc02690921db559d463eeb66f3e2eba86f660953414e3e1b584fba82516af80c534351d6458c324f9671792197e99e9fe365f367fd2c9dfd8d65ebacf9c744a33c01bb894665fc34f825bc1f25500195d05e742dba1ba18a2fd8cfb4cca60add3942965709a333e49776c3f2e22864523150c7e7a1103ee0279dee8caa8cd5c7f7d6f2217170cb1e7e303f357959322154fad16472c8309ed3b37adcffb9d3c8ea7b0c63c8ff59ef3cacf18b6410c043659ede730b4f2792974d4ec5c4eda2d1e48d7a567fce30e2fecf5f1ac61e3d6b0cf93feb9d87c2e7b7010d81231460350450588952c0b8f87b627d9d0f47fe108f7fb9915412048a6e3d9a4c45a0daf47ff9c9c0ee152e400ded4147d0ed1269a95059ce4b85422eb4520541fc5431aa76fbfe6b8eb4779a87559080d5cbf942d89bada0e60bf9e5caf2a223229314f2e30c7e9ad246d39662b2d4562b353fb0f38e51a293e496a8018a3ba82b492b69c6157016870697328a12376c2ba9e8b10ccbea16b6f4d3fe6bf953234d2933dc35d76094a68df464fa3fd1c185d476cd04256e31bd340dca163b9a56b5843e79e550c94a47cd881131cd88194d5b8bd19cade2b85931134a71d8b687f9e70eaa1a468ac4e324ad1b2a350c698795bcf03bf073781e4da13de85a7416bd49fa6489d05921498ccad73fac669c0c27b0252f5ec085e525de6a9533e91927b3c833f385fc526599e655b950ca902d95e57c253fced3192793f22f58ac2c730a3d5fa079dfda511458ae2ce76154e80bf8ce2d58620f5b96e5e0e448123b966561ef13baa10fea13c9643239a10fea3ae84356341a05c718d434621a8a652a9a9e350a744c9e1e8c46a3d14171d5569b5fd5fc6554310da26959739ce68dacae295f153a11056b84130d44c38ad0915c409683b165eddf6f59183b16a08ff07b1a130bf377ce2f4c18ba3ea80f6ddd7a78ebd6147ff4a0c6769a7ad63015cd7df4f5a1b343e1abfecadcc9b441c3245af65157534c238b42b6ac1ec2c846a7d163e81d08d9e9b1f2c4985cfd726372ad73649c6e499eae407169b9b2b85c59e21b17e797f8fb0b93a8e2fd8908caa94c5ae0dea657c0dfbd8a819ca5585a582a54f8d82ea6d41918cf978b4bcb4ed7b10ffec857c026fffe3fc9a0692a44e53d854101a9285229b104ae30cf07102730288c80629a8304d7f19e203248e80bd0faba97cfaef39baf67f3ffaf6652a21100acab8a021403c184009008050caa4e849787ae020662f17c820960790e031046a9a969baaebd6b834a53f6752057b1d1289a463bd16e846ca93b292e04e1f172e3aa134cf8dc78dec9a54b656916d3fd4a4a4eba54aec7625b6331f12560f482079e3deabaaed75c076151d8f41ddce1507278b8924aa55295e1e1646e7171ce17177cbb5e73dd6ac8b8c7add7252f685cf8b0d8531c348410f5e3643311137baceccb5a2aac507118287f67182f1a4346f30786f1af41f818fe31def7b6b73dfdf4f0cf8d41fd79c368fe3763d0f80c24a3968d95a7defce6a73a7d2106031c1f1aa89744af9416451fa55362d88425b395c01baa2f2efad1b3678f1e3d7bf6ac00f5e9a73df64499a347cf7a9e5b0fd56719ed40abe82442302486ec783e0ccbcf67c2f2626904fc8ae5ba2a9d710248b5cad2f24e5f1a30ecd39e333e409db0d78763901ad5a8a9ca5a40324b4464bf8df5cd4cd98b027868832d906bd9f01e50806493209ba39a541b4d813d95d9d862a6369ff5dcbadb6d9c64b9613bd322da8f0e730a298c601ea0468a6dab6fd39df13ca70b2a9c4ce03b162715a2900b4226c39496605a841c7c2dafab88a93faf1b1bdb6ba68c63cca4b3065f479d157d50378c23d4546fe29d00bf4d0c4d4b9bf4cc61dede881351603e53cc6e6cae02bf47e9acb83ab3a2f315f208a5dfe52fdbb7f35b17f22e8c18324514919cb44e4efb2669f2d38d668c83a8925ed5ffab3785b32e34a2c9e4cf1b8d46bd0eaeff075e32ca09866414aad164b30e6e733dc0b30a9edf8dd3d717a30f274a8952c81bb0ecc7eb683f9cf74fa3ea7a8dbaf8835af8e9028def02e2550840ac50674c8295cde7a0bd6954d17e93f150bf68a37d272654fb84219518449f17f10c6f40684298e365c428e3fbbd30df9348963c51e0046a2127a6dd1c94137c3a2eb65599bef293f3bc4ea51032c6988134dc824d759aea8a828fde8015ac9379d5c0e5656caa53c23ee0fa87a74c7d8b6e9afa1db1a14824a3eb514a69c4d49de83800cccf7f319661e22f13dbf73eaa1242347af339621042547ac5157eced9e7efd70cd035b84ce3674cc6928699b1ecb1a819576740b96cf13e55a569d3b4a9aa564373f4003a811e414fc888b33efc590c0a0bf979d8a004eeb4532b3952d72149503f215cfd73e5b056f86290876c088ae521801d471550b0a64e3103cf2f008c471ddd8c504aa3ba9eb12283b13b782f6dd1cda987afc7bce02433f172191b6c8ee858c1cdbfddb7cfef2b2d0d877a984ebe3c7333d544bf2d5ea6c08c1a37ad71dbca98469289786e86d6fcb26618da99e7cffae5fcfe3508ecbb55a56ad234d3bcff7a1953ba0004c09f0781ffdab2c010e93bd671ff48337dddcf5ed733b40c2507a7e806973229c2df1056265cc72cda17f6dcdf500ffbd2031117840bc286ba5db509346b9023c5ea1b2adafcd34de2434d75c89c83f13c25ac407c7ff7ee4ab66c065b721e3c9e2f2c8c1783115e58817220784fa754a8ae9d8c5a7f1eb6d4083a787aa73d3bb076f2e49a6a50a00689394c6c43028718ea27d70666edff14aa6aeb1d4eedb4a227d7d64e5e4082c8644e8c883ba812b91885e2984751162da32bd10de83184ecc58cb30a2d0bd23094e526a241c761b9280870de4c67acf34cfb7256a8ccb52f692dd5c1563d0785ea96e2004e5aa36b39cbb66d1ffce46fa8c9d4087942be07726adad72c7e6904884e9d013e2bc69a4ff2372bbd474fbe113cc05419dc3eca33253e2e3f911d886e31a0ca5862c83422c2dcb8150ffdcf28a5f4095ff87e6a8ad0247f17474708c3f9130bfc3ebbce18c2e356600bad9d1c160fc1a6500f4b485d7e62f6580e470dc9b30801ba87e228855c114309d9638b99744212c77c812f39e9b172385252a94f3a2ceab55ca84977d89026ad8527eb85838b7a8dc68698482162bf330eaab349348046dbe7c79e0dc24ef702fdbf947bcac8069776cfaa0b81ee6b5df8a114856517eb3458da00221b060f4f2ce5e14f80602c5c3254539560405dbe4b7555a7615b1a40b625430f482daf4c832775cf6d1b87d3e80de87184a8ac50299d0b592db5ec8eca3d0d9c723ddd617a7abafa72bc84b4dfb73b8e0aa5740e7e97308c293c50678cd9111a11e16e744c3000561495f8f13385c32a40419a475a1a4b186682718eb265fbe49b0e1994eab479d3063572ad561b11309b746b7c3062a635aa51a2536aa8d4d2c40982e5bd7c57554b356c5d8f31d5909c29cf622ca26a9215d639334b18262a8197dadd1d526a5b0dafc3370e231b8da3557415429574a95cf025a09c84e20ce74498355f5a2ef868e0bdf49d766751cf6b3bf0c16c4bf17e3e440806ca9ba903d47c5bab042763db4869618d7ba01b08ac26a7ef25b4d9810bdfde2327d17e6129e204ba59961e930c76b05af086cab1320a958d0c5a39ccc0c175c648e284acf5a9aaefdfeab58d9a7876a30781f1512b816f2094d25355df3659be8af71ce4edb8f7db1be91dcbedf4a7afa00704a527b68bd2f2a250d52c2f562eb15d9536c47b14d8825a8c82d85cc6d5e2781b7d299d52e57f9696521a4e1a8799ee1294b498460c2a0c7d090305d8f5523d7dea567fa4adf9dde167a7fe146353274cd98f55a260860133020a6164dbeedddbb6ed16b18a30804294fdf5e1e9e961fe7993023eca06b0eb6967bf714ec6efb7b48519d12244d9af6001c8212eda3dbbcddb3d4b185f7488781e06202adebf3a3d3c323535323cdd313ef6be82f161fbe3be3df82ff371f277024cb18198bbf9d8f83f341d2b376365506184993729d8647ff5fae80073fb8f0db04d469872e21aa2e21cc6a6f6f0097171471b0ebf8236ec6e8dea10c2ff48a849e5a565b8d61c4e5e649cdfabbf47bc0a9dd2548499429b4e3d62b268927ed44a2a2768df36bddd4846a349439615d7c8eb935166867caab7a1670516c208947640e912077a6be1e26337d0524481a583c56c0e0a2cd05c08b489bc44d858854a21d07dac42a52c39c5611801a712683c781f872c0561353e96c08c9cf0c77a9f9e1a797e846a1a1d0182331827b189d344a74cdd4235a2933431498290b4829511ca181d518892c638410c92a23ad1e81695518d64b0499284643086b704c682a755f5fafe2367f49b1acdfa8f30c42330816159138c3384248941324423ad62d8c4498cd30a51fc62440915cbfab68a1d38c59c1e59441e4234781d3e35c6a99c89c58c53f4f7de624b2d5b2956e4c8730279981c731bc32135ba9d7184e5751bfad6f3091d21e404ef025adf6010e0f31c210f3805d52ed4a126645c4b027d8e15d90a6c57a4adb308862ceb57295678bea42344be33020556821a28551c378c38ae2a104ed72e7b431d33659d73bbff45f8acb6d2ef7897c488f37d510e099cd77c215d600e1b0121dc15ab096b5b2716ed1c2bb68e7295d22aecf4510482701c7e17e6a0ee1186c722b3c044a8c9a9ede0432bdcbb32100086bb4062fa5dbaaa71da7cd489cfad88bd565120b14bc46f167d79ffe0fb7d180748f9f697d8d38c012d6d72aa7e2047a61ddbeac4abaea363e83a7423ba97b7ca1982746aa19852d345166ca46341a2505cca978bbba05c095621a905afec027fc6a58738cf531c81515f5e2ac24ad2523917842fe1eb54696c310f3f8a6830dab6c218052d622612e6f8001d88b86342d00f63632d7c92a73cef02f23cf01c05930b8860c5014cc023f8eb1116d740c1f0dbc362ef153bf0f06f83b0dc8c24ac48726fc4211adf5fc4100550343c20c1474e7b9e575d229a4696089f1c6d597f126550168da0718468ce19132d4eb4a8cc42a99ce31fec8bf1a0eebacd86eb66f36fbee59637e76ff43caf566bf02fd7f3f259109ae066239be7145573ddabd6249df35d310fa7044665418e8e72d1e73587205de46f23939664b0e8fda5e5dd30117877327fe5f73d13c45b28e79697caffb00818c396c4cc40e5088015c9de78651a289903fd486578d1ce6c078c29290d5c755b3662f18e79ea20609d2a181eb762572d2bd80f4a684f65e68f6f3f014461269d7d74f9aa8c7df65a5e9299b454bdec44313d65f39d5b0120803a78bc041a46536817a7e06ca9350d5976e0c076379dcac86f4770059596aabb65f1e1af40e2f8dba35bb78e46b644f7dc72cb9ee89652c2b6130b7bf77e6838971b1ecee5f6c8ec885fc84cdaa94471ef5e58ce5e3d37777596d25bf6ecb98536ffdbe0e5b9dce583e4c0e2e2817fceeccde7f76632974f4d5dbe2c4ed3ec6b66668e0c513a162ad68e55eb09ec98a2887b12365f91ed715e41535acd10f59dbd581bfcda53d996cc2baf77f03e7ebdb7f18adec0abec79e9771ad87b3c2b5163f9ea31e7133ddd2c62a92545ea6227a5915d1b6c762333e93bfac948f5b9a0440f37993928f89403343ead2798a6839150992ac11122aa6aa989115333f19540891a378d012b3a1cb7b296e51846425555c149eee60bd08fd408e5bca88a15858988aa76c448697a9c1352fb158ad5a46966635137111d8e46b7986692a94cc140946d82f75388a26045a76acc6026259ae0d0158dd1a8a1c554d3669a49448857436509c31888b22853232a5f6415f9c8b8414d4225f3cbf952e16d026a448da4352de25fcc58c234b37116e5044c983793f4dd3e7487b4e82977a328cc40cb6ed61f649201099ccd2a0bcba5e5b0176bced95c2db1e38e9cdd8e3b303f7860e6c8b9fd2b313771e41ccf978a072dae01cc4f4dee4a2464463564c71f1016358976b230b962b543140ce7ce1dd97d5b8ab273477886afc100503399bd333345795c0f0cf703aaa6c3b6cdef932bd121740421e8d0b93001fed576bc6b49002bc5406ec8dab454cb8069155a119c02c54c22b16b726a1e408b6b3283d7fedc91841b5bd97feec8cc81c1f950ab7277ec7085b2cd8f2c5d9c99d99bc9a800208f79a923e7184dddb6fbc8b9dc70a8835726179a355fc70668af4ff34c2004a940b9b09c2f4485955a2ae3e4a515d272c6c98b970a856462e7ce2bf72d99e515a2dbae3e16cde5c68b866125a70662a0e4c6c7a13eb6949a3bb573edf6b11d070f0c2fe4b16eed1a364646f60c0e5155b5762e2e1e73bb78e8047239a53ae1c3dba6037dfa5861cca73d46a194ca381795025c6114ddd1a2a14a521fae986dfed8b63c66d2e5e396f9d51efc7f6368ebd621e96ae00ab7f14a724c0657dac8f5637fbd751145164a22343166979c9253c8159888b29fab9414d4ac365ccf8dbbae573deaba1f796a477d0481eb9d3dea3db7e0ba6ea3118ad561a35184a83f5fc679bfe7e44cb247c09101585802d0caf4f44a343a71f6d0a1b313d1283f5a389e23116b6a78385f9d9899b96bfb76af52a954bceddbef9a9981e7c7b619b39393fb5d77181e4561ccfa349a40657485f01848e7ca39ff23bab0942e2d6668977469aceb38d7756c771dc3ba57f36a9e6dd53d0164d2b6ea78b695fc5c0fa38fba88f053b56ccfb39fed3ed9f905b5763a2c27537de4b739842a4ec5a9b0313b8400c242e9b1501ac6d2634253ec361b81337de0b601dff013cd67c16b36d6bd5acd6bc0468ff8e0d36c78c808e96bc7d102aa08c9ddb5e86674073ab7794c7987ef8123c0522acbc9adb0340285c58c935b151b1affe1993e3af61c949dd208387350e093b514151b1affc9c95d4d1841f48f4e7ff66a1a3572956b14e511be4d3ca2285e7c443fa38f4c1b317275a272874a6fe0276ea0eaa02c9af8dda040945e9da89c084eabfd03dcd70767e2e6ece3c9d1586c3429be3fb33837b768c4670647663f9d7063313721bfaba2e448b57dfabed6b9841bc2aaa8213421ccc7c6e7859420cdf911ff385817983a2e2406ab5029e7a21003ffb8255ff18d20387d519e83965144b08eb48d230434e36ef08f83a51cfed590ae1b597dafa2c02228b0571c0df24130240c1af602862571821f0d09d7c76256184cec05803260d82b8e86f8358302ae7d2f285012d7f0a34171cd52ad7dbf0de7c275e873bf4debd0516f9f2e93eb5254ae0facc2ff3905a7e080eb351edb75fb78b53a7efbaec726def2968977469f31ea75e399e83bdb988017a08e54b41bdd8c105d5c2ee752199b75edfc95b689eb984fa30a20d5ca5248d439020eeb1de552527580b2f95afe6d9635969c5c89599eb5d54e8ef9e0484d7f8f3c5801e15be414e25b3ddf2b6ffa1491de0f4ff8f85f0270fbdf5891c84a2195b33c2b6645b2e1495ddb71c26cb3963415fbd46e4e1a2429993ae5fbaa3c4129a521ec9eb68fd971749b880e1296a5949c4b3e8257795dc3da006cd7f30b2eb9e02601e63a90f22e5a281c076d5960fdc9f928a9fdd25c5bf0d9a2e6dba2cfdd20053085b7dc6d2593d6dd7cab5f346e4d6fc1fedbc50b739c78bb4dbe6352bcd5581c758b86783adfe69369ec2b537171960835eb6df2523ac5cf7762e25c27e8114e10397c2d5e16e4111374af345fe1dbf64e28c83a75b684372c28201ac2f87d544e4d5d060caea52a25a728d5b33aa540388bf1a41a213a1824a22e9f329c885b34dec2bbec2d46d13552fafd2badd34faa26251428d507754aeefd86e144640193ea60883b9984124a8d419d90fba8ba7548b69f907b2835b29a7ca2a9be4935a9063a35d5cabde1f77214a1ca2b7b1f39a7adc308f1702d3681953e6e144747178ddde92d8af095338377252d2a54b2b05bbecddd0bf2bcb42b9a5bc0449e57b6a4bdc645dfe1c4c4d01495676f13139ccc165b83239d0cdeaf9ca7a77dcc0cbffe618519df384a7e6b4b1bdfa8e80d61472bde68a5ccbac7092789bac7095c25dfeb0d338442ca340d7c6b68b4d2e91b8ca26ba6f4ab575493e8a0d3885a53238412a084bf4a0a87f8a83940a9b145e74b8e7c85a2a8a9560e1ee26f7a5adc8c61096fc87b06446f4f0d6d9597f2d7df7169445d3e6838910d0fa684a8e2b9e45028ce8bd0ea4f84b86c5f02ba0aada9dc35663ac2f42cd3d04ba5140fa4ff1d9fc9ff2e3c2c66ef95261b2b5f906f971797ef57490bb3868e11f07a19a15ab8f584f8578662084dc4601476430182df5afec61bf3f91b6f6cfed3c2d9b30b0b67cfd66f28f0ac02dc200e1716a49d88949bb6b1f2f623345112cefc959031c34e707c2b4456cea52bfe87967369d84c17e555b763e226a3d22ef0371ff23ccfadf13fa8ad43ac8716aa7a2531e94dc3cd9785a1602d92ba37e3b97e2cccaa887909f53e8a28d469f73284a6d176742dbaad35f299dc920b1529132ac8815cf05d9e1c31f47d377ac71783d99768050cb3662612c99899d87832391ecb1cdaa5aaaaba8b107224c812055e6ce59347fad90b0f4e4c0c0e4e4c4cf242b2f8a13ef7e8bcb7d9fc763fc2b421ee383838e1d32e9f8475781e319444c308012b0872d09fc9312857c69cb458bc97962bf095af7ce50b5a5cfbc20080ce1adf6ceefd6683e90030ffd863f710728f8329febe1e23677efee4933f3f4362faf731c501e6e127fd9888f3e8323eae7a191e8738dab4dff7999423aae43869591df9de2642956af4329ffb503c551806d827eafb2d9d35f659854c72cc6aaef955eec5e99a56c1714b3a60d8c6dbf35fde22dab22d6e5b66b5a341417b9e4716ca88782f68c2ef3959eda0b6a55045273a554b870f8bbaa5e2a999b1f7eaacf1d04dadbaadb6ac137e38cf2b12b10a4e6e89292f8bfa1c5869d7657f588724ed76eb682bf210b239739063be8db7ef11eeb4e40b62659ed864ba7e53a1b8fc4265cdb2ff3c3e1ac183863126450b7b70dc3803633de62b5431c3a59a6db99108de6a0ec5a6aefa7d5ebbdfffa06e7a7d27aadeaaf718f2d0d5e866742f7a3ddc01e7e06d52aa1b3462058a3b7c3abadd889223d6a31528b6065368405d069569282f08394a31355ecc4d438e73403ba0c4475687635d1835d3097053f3e59cbfa7e58ab90e7d6d4b472bde3aaf5679058ac1205e816279215fccb128cc83d03e4d43b19063b9d4785064612918eed2fe7561b19c5b81229b869c54f9161753455f06bc345e960bd3b82a4179f9f78a705d0906556abc98e64bb5e0d616c68ba985e2c278715c289d87f9d98073e4b9bc77c4e59c25a9f87e1cb24185f09c1c5ff485507f46d5437c2c34f49836b1b6a53d12fe2bc6665640de528c29c5f84a0061b9aa4c81029ab097d060419a4e405a3a541e2a4fae00304c9804468b621c11a04b51815ca4625561318c419817a9fc4755144c0198a28180475388c02f531502c2e203c4a352bc122a56f4a44175aa1045a18ac05fe2e5a3fc6606e85451158cb7889a314581884859800928cacae40101c0a6289713ac891410ac6302d5989be0433bebfc5630a6afc0346b6042314ef0a60f113c245aaf01e69f1800e58714e070e04ababe32497542b0829518608866312178905085e018ef0e85112c9e2a545558dc4065320a8af0cd221883e8040d001309478c89b04a11e741f40c280aa3bca354658bef7f648922118c991a61932b7b41d179e374054ef1fb288aa20126a4eda75e478be875e80d720e0e81134cc3f2d2727971b9b40a95453efa9d910d737227d07f21d39ecf2b18768a7107582558a50a01854c9aa30955a7ed41780dec7b15063d5035332635287fabae42a4a18e32654615381abce2df7f95c63c28bc1e4f08a43c5f78d5ee4561dfdeb52277108d98bfa0778ae6dbd65a62240aed267ff4b77d6211aa5a5cd3e25a4daa884d83b4d6dc5a8b44144a4ce4d7aab21d7c7e00a987bf91f8dad70ede1adbf5f7c8544481ef3d7eeef7dabf173eac00d4855788e2df0110820f5c78510641bc704181d0dd65813f57c247f2a1554550d2c853fcf0890a42753f0f85ce85cb54fd74f7879fabf91f7e8f46d77daba174af8f177aa67b09e5abfeb3362bf34a3efc5e633d9eed7695737be45d4abbfa7ddcae342808299770dfe18bdcd3ed53ff5efdd8afadbfee477d05cf465d63ae5f5f8efd9a75aafb9fea258cb15e63c4eb715c0d8d47cfff0dee7d9b9f776ba80de13913fc4ebdc2feaf85e6e6ab7d6fb5d01ad0eb3dd44273cced31e682ebe05f78dc84df77b5ebd33d3edcaebc709deba1f9dc3da6bae787dbf5dc7e7d12ce37bade7df5558eabeee7bfd232dd6d1bed3aa63dd699e0bd05ef2e5c6ff0d76fb7ebfec9d0f5c6ab6ccb2b19afe179d4ef7d04e9bd1779fe2b79aebb597924f1cf5268040cb817deaf6c55762847957fc23bf003f853f887244b1e205f25bfa4797a1d7d2badd3bf5133ea2ef576f569f5cb2cc54eb0e7d8cfb594b64dbb46fbd73ad1d7f4a7f4cfe8df3334e3b0f121e3a7e69cf96ef397911b230d8b584bd62fa28f44ff24b61afb56fc686235d1485e93fc9e7d32f548ea87e9a3e94f3849e7c581a181fd039f1af8c196d4960f6df9617625fb89eccf07ef19fcc4e0f786a2c3bb86ff70f8ef46a6473e32f2fdd17b463febc6dd25f723ee2fc70e8ed5c7fe6efc0de33fcf65734fe5fe7aebcd5bd727fe327f63fe53f92f15260b4f157e3179664a9dda367572ea85a91f4ddf3efd991965e6c66da7b7fdf56c72f69ad937cdfe786e6deea5f9f8fccdf3ef9dffeac28e858f2ffc5df1cec56d8b5f5efcbbd2dda5bf58dab5f491a5ef2e7f6af9af2b4395b756beb2925f7960e5f3dbf3db5fd811d9f1dc8e1fec5cd9f9869d5fddf9ab5d2bbbde7fd9c865d7ad9e58fdc3d59fefbe73f78bbb7fb8fb171ef276780f7875efcb978f5cbef7f2672e5f5fbb7aed0ff74cef7961cf3fee3dbdf707577857fc685f729fb7efccbe97ae9cbef2abfb87f6dfb9bfbeff8707560edc73e01d07d60fde73f0b9835f3f3474e8c4a1670e7df5d03f1ece1cf60e3f76f83387bf7cb879d5da55f75cf5ccd5b75ffde2d55f3b923972f4c81b8e348eaa470f1f7dee35f1d73cf79a1f1dbbfad88bc77e717ceef8e3c79bd7ac5ef3f8357f71ed8faebbf9ba9f5fffeeebbf72c238b176e22f6ed877c30b374edef88e9b8c9b9ebee9eb37fdeae6b59b1fbc2575cb83b77cf7e4d2c9d3273f76ab71eb9db7be74ebd7aaff74dbedb77df3f6f1dbbf76c7de3b7e7027ba73d79d1fba0bddb5f7ae97eefac1dd4b773ff3daa7ee51efb9ee9e8fdff38fa70e9e7aeba92fdf8bee5dbdf7bdf7fef8be5df7bdfbbec6e9bda71f38fd17af5b7edd73affbd69991330f9ea99ff9d2fdcafd6f3dab9ddd75f6a9b35f3f973a77f3b97f75ee570fec7de0c507be7f7ee87cf5fcc7cffff8c1e907cf3cf8d987f63ff46f5fbffcfab3affffec3eec3cb0f5ff3f0330fffdb877ff848e491d5475e7874e0d1f73ffaa337cebdf1a5c7228f7dfc371efb8def3fbef8f8534f649fb8ee892fd5b6d55e7af2ec9bb4375df3a61fbc79df9b1f782af3d467de72dd5b3fffd65fbe6dfc6dcf3cfdbdb71f7bfb979ed9f1cc4f7f73c76f3ef39b3f7dc79deff8e9b32fbdf3e83b9f7be78fdeb5e35def7e6ef9b91b9ffbea6fddf85b4fbf3bfbee1fbee785f7fce2bd5bdf7bfabd3f7ddf9deffbd8fb7efcfed5f7ffd1f3a79fffa317f22fbce303bb3ef0ce0f7ce9033f7c71fac51f7df0e8073fffa1ea87fee4b7e75e422f9d7ce9431f261f7ee787bf5c9fabbf58ffe5ef1cfbc8c8473ef1d1cc47affbe8673efae71f333ef6c8c71abf7bfae3231fdff5f13ffcbda3bf57ffc4d0279efbe4f4271fff64fd53daa75efcd4373fbdfce9daa7fff2e58f7d66ff67def999177c9af8cfe169140968ec0d7f29f44b9f4e0694f0c9625e92c1393f8d51024c3f4d5002deeaa72932d15ffb69152560d54feb288d3eeda70d94853ff0d3264aa1929f8ea014ba1f6104444780c651c24f2b280a8ff8698cc661c84f13340ecffb698a32e8effdb48ac6e1889fd6d1346af869032dc1b7fdb48926d1957e3a8226d19bcf3e387bea8efbcfdc7ffeb6871e78e8fc6c71199d450fa259740add81ee4767d0fde83cba0d3d841e400fa1f322fcecf23d0f3e7876c7fcfcd9db4edf76e6c1530fccdd71ffebe6d13de841f4203a8b76a079348fcea2dbd069741b3a831e44a7d003684edced7568fed7b9f6a87f917bcd5d77dc73e6fed3f7bff6d45de7d1d1aee22eba06dd85ee40f788ca9f46f7a3d7a253e82e74febabb1e387feafe33eef25c095d87ee420fa0f3e89468a38b96d11c2abd8aae7815971cbbebb50f9dbeed01740cdd855e8b1e12757fe055dc67dffd671e745f7bd799bb1eb8edc1bbee746f7fd43d70c7fd57dd7fff9939b44f5cf32072d16bd15de88c68eb6de8417417ba13b9e876f42872d10171e7abd0fda2ec5c0b27adffdfff170000ffffd76a9233306f0100", - "6dc2d29d7ee4854fbdb02609de442a09": "1f8b08000000000000ffecbd7b57db38b738fc55824f4f7ed654b809bdccd48c8745b9b4cc50a040a7edf0f0b2145b495c1c39b5152e057ff777e96ad99113d3769e33e759a77f945897ad2d694bdadada17f73a26517aed5de3c1148597bfe729990696b4fbfbb373e04d67f9d83d3beb9dc3bbfe8b17fe7046421aa7c4c5904202eeb0876fa66946f380b84f7b6ba0806b2f5fce952ae0d35ecf9adab7a6aecda53ab31c77729ac52175d68997b914ac5fa1ac836006631806c4ed019804c4236e0820c3e6c51a806940dcb59700ce78460a601410b7ff1cc04940dce7bf00380c88fb12c0294b7e09e0152bff1cc011fbfb0cc001fbfb02c07150e203eed4ef0e655f0c0bb29e613acb48e770f01987d41d7a08b8741ce79002e89240265fe9649930e209c00b5192880c0c00f0728a280eee7096a5994f664902f9cf3d324cf9670149516d70c001410c14e4a94838bbbbc4b7be13a693694a30a1db71b485683876e0154a66b832cce08e61e0e5989eb0f65dd93e361aa705280a2860669844389b0304ee2466021883e469001b8987bc30c388e29d044f30a1ae13c5570ee49db4648ed7649e73924e301dc764d4b9c68476aeb3948c3c07d82a4598a238c91d7897d3db04fb77d7e398e293290ab1ef4c33bc7a9da1a95314b08e62b75b4ff1687a42b3988c5c6b4b834ca007e640b1de7a7ad84f280a2f01f079a969964e732f1cc74994615214e700d2c265d0b754790077d87a02f09611e6b3a7001eb21f2f7a005e3292ec0378c249fa12c0cf2ca70fe035fbdb03708b675c0378ca97e4cf001eb01f6b6b609d7dff02d635fd5eb8827cb122d0cf8c6ace9c7f914e279f0df2308ba7bce05b4c5184287a3f8d10c59d3b56a0d3995452595af12fe29c03b5182e8279aac005c48546607701025f6638bbedecc6243aa1b3284edd4771e477f6b657806a7f58e6b1ac4771a4b33a1dcff344de36a24824161245f6c7814e05d7dda5b8de3c00d7dc7d348c138a339f27eef2dfa7b7536cc13d77555159c7e84498ce08551fb9285ee65a3b29bbb9b8b7374b7b7bb4b4b78a26b6128c489d2478e23c451c2d6df76deb765f638233b64f3d8ac97446fd8e4a5005f65872492d937a3d594d5407f3c8be5d8aec766b644fc2f9316269f3ad6e2f6df551eb5677f8d15c6f57a4ceb7fc6869cb7bad5bde9bd85a16a9f32def2d6d797f69cbdb7186439a6631cedd475344c77e47ecdc9a0022a38428c0cb59667e7f293ec74bf1d94ac9301ecd32c4cb4b14425b225fc6a278bbbdea78297a9b4bd13b093334c5bb19c629c1f911ce866936c159ee3efaa206ae5c3ab9bdf07e9c539783f33b8fbe58c6717329a2af1f88a8fb68aa5abf20688297e1ead68bd7ea1b7b2dfb54bf6759a27ed2eb98529ca9cf98e4148d323451098338a36375feb17f988e491cc6f4b6b28967fa13dfe28b304d520d728ce3d158eff2138cf259c6f98b5ca50dd125bea0719910a20ce3ec22c16444c71a5344699aea32d31867614c463a012531ca715ea52f63b65e2f9dad2fed8ec01013ac4f6bd879148e717899cf26732b72a84bcbf31b76cab2ba5aed5067e56beb84cd3a26f82dca2e71768a46b9cbbf2fe6b9028a46e6f91947e56f73fe0b7de67238130e78eee42ddb6c73fcceafe32f4b07fc7dfb01cf5dd16e03e32133457f54115eb1a14c1ce57ee76c8fd09573963e3f67aa419654e15faa63a733cdcf6a11de54d9acc86ce48278dbf5a948e2498d305af141ef97cec0abf6332048e121f320e8aa3a1d024ab5c2fce057db5a3205b5666c8db718f31fb30a8cc17fb574f03fb41a7c7d1ed96f0865b6f592a0b3db9dbd1f9622fde66148b7a397f2d452c5348005a46234522310d8998738d7481339e872755ab08c652b4a78b37450df2de71328a21a9fdcfc50f45be9c3082509ce6e2fec1dbbb05cbcaa69148dcc04cb71fa6e69a7be2eedd49f2889a3d71cd518e7bb6926cfd6f27833a9fdca5eda380bd54f6366cb239031c38dbdf9bab4377f2eedcd6692b0c379379534ab904022dd865379285b70fa73294e1fdbe024afe136b44eea576e75d63c40b2f0712996bfb7c1b25ccb36448f2c4b52e2fac00deef7a5e8fed176a21be7d7f3bc53d4f2b2f3c7527c3e2dbf95f2e349309fe60d07761ee56946e7f8d249a5fc1776bb811d519257b02e9feaf610d3a499703f2dedd35fad0e915334b29f792cc37adab51ef6bf96a28871cb71ff8092c418f4da28f35c3ec4163ebfce572cc218e3a528d3e528f3669b30ce756613c2ed50a5cb5125cb5165142076fb5b3b15a84c2b25c8cc760893e508a38720cc85342d24a465e99632d291aa50e34ce67adb8a2f41cbbb9d2deaf6644685a4e7148d8490dcbc16dbe517541795f2c9bb8ebe1c4b1106fbd329be716167cbfb14b7edd336ce69965aa88f9679f55e740a8ba0285e8e54d816a92dfe44e3360faf2ca011fb11a31a2eef40d2aa0382b3584c2cb0f3689625c6573c41233cbf5b99a0161213ec70780c2aec486002687d401ec2f824cbc7247fc09858e775f150acd4c662c1ccff3d43902f1f82b4dd10b0c3454ea5bc124ada905f9ce150fd9669f21db4966a8c972a8768bd6a86684c467e674f6dad8fe42548b42ad3d425aa92585ea2a408697be5bc1374cece15a66864cba91eb295ae763a6ac6fe6548ee3819970972001e199c17fba7c7408d4699a527dc28cd47e29129ceed74d458c84129338c212987a7cc3647c718aab2406da4aa2367f44c0d981abada09f6cd6c48ba9c3a67eda953f26a4d47423e5f46f125f3e7c16c3966d143316bbd7a54628ec394b071df4d524475aa79f556249fc51394dd5e88f9a9006e43ec16fcbe87e435deaa0746d6bc28c020c75a2f6addfa2e827c08231f2d9ffcc943275feefcffa0e9ae60649beeffd0d99d2c9fdd61abd9d5728d450bdb64161acf3ffd84574bd72f79b574f9a0572faddef56ae9e279af9668bef2d5b2f4635fbd55f3cdaf96279ffe6aa9fa05b0962e1f02eb30c443672d55bf77ce61799566311bb25769aa943d3a35feab42fb53eb7cb5dae80c3e6de1f16d4ce4a3b97759e365d637e6b6ccd6d3faa8f6626bbcd9fac63c97d96a8a1f559f72ab8fb97e75d6cb42c6843f9a7be9adbdf5fa353a3097ad248147b57760e325d83768a2ccd6e4f0a8f242dc291fbf7d4d1dc6249584f168ee519c754ad1872615a3aec95f2fdc5e1e28bc1c2edf5ca60fdb5caa07c7ff6d27ff93dbc98a7d3f597a92fedff6f17fdb47abed63ba7cfbb86ab57d28e52f2c940d13ada32832646a4d4131ac57aa2a285ad4c564c1769dbb5adeb9d1a2ce0d333462a4d7a93e8075b4804621a84eee72bdf189ba50ef8bd5abde68395a837668a98b6f47b1fe7584944291f832f8ea8a68406f09e5ea372ffee52be9304eb0f1c61c7fd5b418490d3ff57d154738bd08d308872a09c9276523e93a8eca1559dd0a86199a70a55595308869f9599498551ebd338c493e4ecbe7ed0c5fc5f85a17a0192ed7dc351e4c35be54d709c7684a71965fe83453e36a5e2764e195a0d389f30bd12c1aa8c1979291168f134ae2b25c1cc76f31cb1e1ced8a0c2d778d457f0cea1e2ca7ee712beaaee0d4313994c5545e2e424dd795bdb8b6f7d68ebdda315739d86a079949b0f30755ed60b21c429563a776cc540e96ea7950dd5ae6543daa7bcd78f96cecb49a0d494c1df1e2d0bcf1cd299e5454af1ab0dc598ee56dbb1db1c526bd945a1e34c0b7cb513f6c85bab10130dc5f57f7083bf2258ec6d6ce366953b38444f8467d980ce142e597c3e5ddba6c7f46955b63a72aa4aa77cfe84645d6636edc953d3d374fbd128edaed4a814f0b559bfa16da5227e772f9509db4e732feef48ff071ce9e5cc57449115922c1ace729b76d9bc76ccfcc16ea3b6f9bde861846a3fefed2dd52f1dd696ab947fb29cf23fb7a6fcf6c77d3b2efbf372e4ae5b2157daa974f43de718e7b3441bfb8cc4a5e47baf2bd7cb31de7a00c646db25e232b18a7f4e513e56cc4684281aa01c1fe9991f49f3b1e8c83ad05b8d68af9826c4d8dbf93243491e383befde6fee9f38107b072955890787a71765c66b2ee0c84ec78804ceebe39dcdd39de38bd3379b072c731fe7b9c8d9df3939d1c97bf9c12c490267efe4e2e0fdfebe842fd2187495b847c26416e13c70f60eb6f6df6feff016776e54eace47995ab8e8fede45c15d0100ac76653fbd0e9cfdc30face60945244259143827a79b07db9bc7db66ea1b23fde20dcfda9d25094bde7dbfbfaf92d259f647e0ec1ebe3fbef8c329dcecfedecd6c0d6fe661e06c9e6cb14adb987d6cef9c6c39851bdfdfbb31afc18dc44f71b0e50297d10b8007e283913b3cc5005e88efcf3c73577c9cf08f1bf171c93f8ec4c721ff782b3e6ef9c7b6f8d8e11f8fc4c7987fec890f767f8537181e61f816c36d0c1f6100f745de88173c161f5712278ef4a6489bb2b44732edb5481b9a695f44da443422d2de8bb4c84c7b25d266ac419ef04124a4acd09e2cf446a4e52cedad4c7b27d21233edab480b59da3606ebec23d690ff14b999ca65691f451a62694732ed779146541afba00a1df6815507d8c75f06b43f44cd4faac54fe2fb0fa3c85f22e977974db148c294277d74d9f08b242a92fe548088f8feaabe91f87ea7be33f1fdc6988058247d30924291f4ca18fe4424bd77199189a45c247de11dd6055391fa5ab53813df9bea3b12dfc72e236591341149fbaac8507cefa9efa9f87ea4beafc4f7b6fa1e89efb7ea7b20be8fd4f7587cdf1804b02392766512fb7da18adf52730f2c15465d7037e71f01839a2703eeb8000ba37fe9bd2026318d51127fc5166f037c120382af3bef8ff7956b8b240d39b7e6a5593c8a0930ccf8bd3c8943ecf6e06abf541df5c224c6448039f4907b37cb62df71bc302521a22e85ce935186a6e32f89030a00652b27eca438c1d9551ce2004305457b4898e5b8a2f238ef74a1749610b08ec46890e0dcbf93ca8ed89ba04b5caa47baa028e08187dc8f184af717738d09d32c5b4bbc38d49e2a6820c01b36602e80a41d1eb062db45255a098504581192e64a0f45cbb4857a307255ab27856368c551a8f9ffb0f919d3c6f92915f51f3018355b9f070cc59c958f1a87cc360ef29add7a1ce2c8c712deef4b48f25b60e62d86b17114d79ba1c3fc329efa0ec1d74e1004583416b3c6ec84f1c3dad8a9b731a7a1d2ec4e050777191e621a8edfcdf86ee29f39e5e89e17f0d443ee170cd551d7d08c787cffce66de2f6d46aa787d673baf9adab1dbaeb7a6b12f9ac4667612ab188c34778241f8c38ea33481595cf7d3c2badace6731104a9b80584c861683faab119fba8dd46238d88e92dd9aadf5ac69f5263579c43e79dc12703182c88e60c567c36208911d82e185a275bfb82f0ad5a789bd4f357d84b6b0b158479bf6cdb9a641f540a0afed400d4de50702fcd000d050dd7e20c4378b207e138eefec10b5d9416b70706ef7533b86dcfbbe36b6f440c497b6f4a7bda5fa1b76fb139c3f5be362bee1eafa92cd1f5b9ae7f642d56d7eae795a9e2592f1f67835f74eb8244929341759d50f082d0c4f66bcbce9a967c1b1656dea8a42ded3a33489c35b76ead3eb34bb5c4d4972eb3435a4fc103db863a34ac7c468d3e21b30e04e9a1edad7c1b7f455b81c7a6853d36f694af8187a6853c3964db16be969fa9e447818131c2d98bb130f79717e94a098c89b2d051b2c7182a67fb24ab94b21f66a00812fea6d6619ba6535282bef5acab1849520a01bd4bf4ae3a8d3e38ee470e182f55baaeeb322872fae430a2f293ca1dca15c1fc0cf94fb893ba1005e8bc43500b76830c7e42ad96ae8c9b31503b7c76e20327d47781a5c031005e4ac770eb3809cf5cf616cabb8d20730afd48c21f7d398b39ab3203feb9f0b2947803df99ae0f1373c3e0ef37bcf5d9e853ef6d8197a7fef383044dc639d8f3db6ce8b02c0c9432095777e01133a1b743c9b0c029acdb003eeef57fa903feaf87d28d5b6fa45519a3c3dccbde135f510bc9b8e539ae6fe048669329b90dcef3f8729d94ae2f0b2e69f3173a9c75f30019cb92b3dc0ba370ff53387ca5f03723fe2a0d2bcba14d804ced86414aaa5a30c5f558ba05523fb00dfd05af663961dceb20c13bac735b2108cf3c329267eaaaa89f4f945280528e91413373a43e75e9e85d0b91824885c3aa09043fcf2e5cb970500053c6d499677c5df4997300a6ea957bd2abbecce4dc3b13745199ae45e1c31828b3cb613c16110096790701a445e92a22826a39aa7508ec4ce7088430a5c63a066ee14c049b73bf10c4bde6e7765d8ed666e251114f06c726e2d9c6e0c2d1e3759caae7c1d119439f42638cfd10803bf8982b52b4d3e33cecfcfafae1d3841d92826bed3eba0194d9da2b050e316857772f9f9a800b6166e19bde6f157ecdf7ac83bd9fb6be7627ff3f8f54e010a78c0f6a6a7fd3e8017ecd7b35f00dc153bd70505f046ec5ccf003ce2e55e02f85624fd02e036fbf5720dc0473caff712c03d91f912c07df6ebe767001ef3a4de330037d9af5f5e80f5ea4bcd19f65e677114f4ce0387fd70204bda8f731af4cf0387fd10491f5092046be781c37e38857b48efefdd436a79b838c342492ae74095c88e259757360edcbcdbf25ae21ac65bd1422b8ea1ba55054f199aa5c451b7254570c133d5a292c915ee2543f49296ef25afc5a0f700fcc2c7f02580efd98fe700be627f5ffc02e087070979857f547a3bc5f24c12097cd5608ab30334a9e64cd2281ec638b3261ef23d3eafe4a596347e38cb14bb98594a984798eea3019ee7714b915c7e1dd370ec56f0007721ca7107c9c73c9f064e9c3beb830ca3cb7599a55ff5446e87a4b456c278de93654622a543c788d40aabe73e5932c1796e2b269eff5493b32499c7ca2c90525b21f536c84bc9dfb522eaa19015c137e12c318a447888660965594e110fab43170481c2f2fe7e3e47e20748e038eb38c971271eba72ea5e51c52009f212d30ca4f35efee109cdb2df7a62feb2a0cc5a2f7f9ef5cebd844d7bb7eb9a451a18840e16a5d9722641e67d4e63e23ab0e3808263480227e7122327080246eae9b05302dd287ffa4653e5c3843c184c0e4491a5ab570f804ec701c6bb84f165c8734798eecd33a7aa23c6c3c6dc2284ceaa01df9c1703d5b2a11ccfb3daa52b693da5182e9e3b637084c3710a8c410a68519cb758aa7289a26c34e3aa879a0aba5db107ac0481ce3ceb9d6f981fbe4352821db1a4c56f5f0ed701fbe014ef08b5219d732c3e651eced364c6afb63abf4c1265945e892eb1ab1244fe18e56a5f5625dea0bca3d244a1387f1be7b989c75ede5149a20865f77b95cb2ffb229dcbd04ecd4ca15665142995647419e3189260e4d9a381c8efc2a4c0b795ddfa87cf97da75eb9bb0e4e6456b2a15f295eb3be2cb29e677e75a359da16a1ea4b453af6deedcb5fa46968220933a2cad84a137f41a0095ae6ab3ef5a55b9c9d72a8a54556d2fef70558fa2bef3cff7d7acc67a5bada70f837a73325d37a80e8a62ee8ca8cfcc4db5a6fa6654a4eeb2f00d6d72bd2f557f2059b738dd5f1fa6992bb6fe3a79c1983ff38a1b76066018f4d6c35fb3f5f0f163109f85e706c985e77253b6b9f077b5d691f4e22fdcf87b683a4d6e196bc14a9dabad34060000c10089cd05921af7e3b024bd636ac225735ccfd9392475768754789d05e10168e17ea000be2b877531cbc6e726f840cbb348ee93268725920af8f53f70b28ced707ecaaa990f9e3cfe218690fd5c36697f7ec7a4199856a7cec828e0c7ffc0095467d5fcec19397ff7d4fdfe1d53a7d0acce9b4a2de01f8d93f6a3a393e841d5bb8ef502f7fdc3295ac1730d606870304110e06ed79d9f56fe4ec83920b07c663e7dc7ccc836cc69e14905fceb7be65bf7b036e33abd8098fce72d54cd1bcfaf54a1bc72a14a7ce39275577aa626187457fae6774982ec285e4637947cfb0ceb9e562758271790fc07ceaf71b7999fe131ca95e5c13f6072d1774caed1cdeaf41a1905ccfe0327b8bc97cecf6f9c5f4ccacc874fafc36d461ce8ccb2c4818e780177464a614d1e870e34f99987cd79f81d735ef6bc3ae5657a0193ffc01997e290f9e92e335a4db518ccaac0c0d5177cd890adefe88d258c5b78631975d16e2c202ed48bb0e0f91572edc335f8143e83cf4b1a6c712bcbbf8304e58857e94f261630fd4f24be52b86621c04ae637ec376bcf7a53073acf7ee17f7e5ee37ffa3df1f9ecf2819bcbec7b66b6ec4a6d76cb8ca20cea16fd8da2d00e9bf237d4260be55909691285f2ec94d8a5a03c1393261128cf26a441f8c97333322ff7e4197f50c5a6370840752983ed6e1284f2b25fa95506caf33ed2a2e006198487dcfb19c0210926c4435e3a3cbde5a63cd37ac2553d6144e65fbbcb07282cde01eee650e4d62af285daaefce902fe2ebd4e03d4ed22afe2367ea3f6edb3e5100c89f1dc53f658ec08baa9ba7268d94ed6ed665ee9477fc3fc102d5c555a10d3c78d6a4af0155dd81276dcedc69e742dbfa17f09a853527b83927314a6244f1319a2d175de9331225182a30e1755c6a4231a793b4b687c82131c5207c0b0f65c1dd65ecfdb81e1749104a5d2817b765ed739486c3a07468d953e80934a8d88d518061356631a4ccefae7ebf1d0c59e3499d98bf26eb71704412a37806e77652848ea2aa09eb856b956cdb31282a7defe5ceac51128c0fa95b19db833f70ac02963bfb5294f7dc48894287828cfe31171ef628a27b94f61ce0707477bfc3b852cfd98c715c5595df745aa1aea7d3b179a17383fca70148788e28d7abb375c13068534bec2be595324c128ced120c151254f25c24b7ceb632f8eb4320ef5c43cf32f48f10d556a4640866565f86b74ac1d58498de104dd2ee5003c9aeea7d738db42397681d0f13964f3584907bf05bd025234b20c9131731c23568cfb173acad269eedfa5e4184fd22b53550d1241092848e728a132e42b41400ab03e731180d84b8974e08740c1180b367782c82b6a70a97ac8833337add44b4101339c637a4864bd951e9ca6d3f40a6712db699ac75c8dcb19a494a613a7282006a08003cbde58d1e739c643e08a90aca449d127ab2c21c296501c646c09e541c6165d6aab298e3e006795da29ab1d0533567b12ccd802d427f1b04431226c325136c2543e79ae4f5c0a0cb77465d9130f79619212bc8df1d48dc03a351e522b406015c6d542188269580860e482bbb8db6573b58548881317c0dc5d89019cb88cad00c512ad25ece128665cc1163bdeb33825ddae9bb3bd014edcf94c36a367f3c9e7d20a3198cfda7064085a6986e03b9b51a43e9ab5f0e6559ee6cb1c516f00efe614eff43218b9a080722f8961c246d15fe915d091addb54f1be08553ca115175b55f10ce0c2e3ebc0a6452595b0c204e53963707d278a51928e56c394504ca8534003683c74572ca3dd383caf399af2194e76c786c5235e4e6a820d137cf30ae571ee3b93981888481edac77257f142858164b5d9388c1119617f08e501cd3562fd88f3360500850b6afd116ce84a1088324bfa22b4da2a007abc6e8de997e75833b485ea9b62385477e78097dd9cd6bba94a5abb5a66af944a32dd6e2d595d3befec8a3191dc6694830447af8e48f87c22214e879daf74a3fa06e457b23ff26ccdf755f2fea0ddaeab24de003a5c1edf4addd0a169943a364dc01181776c7a7d0cd571613be322bd9935a8f2c69138b905496b5d60469b981c923ff0ed767a4dd8b953b2397eb44cfb278e0a506826a7891e323cf4292ca922ad53c3559d1a78b305280a9793833da6796dfdbfa71ef2b6f736f70f5f5fec1e1e9eee1cb7da36e6ab5d6c6e9dee1d1e9cd8aa376e896c835940748cad919ac1f2052ad00932fcb93904ebfa4a4aba5dc7917fc96c32c019fb92ba54e4fe5eb510e8613deb9d0bd61ad94e8bf9248fab46b9402acdafb3b36e338a74be1b410420df8e357728f69e40ed3d051c00f6af8063129c396b3d073acfd87f2fd87ffdb59e730e77ac77381b5b21f00010cd33255980185b1107a8c25630c6b13eaaa7c6a1cefb2468ed088df049fc15bb5394e5788fb3e27dc6a86b60a9f0a431c5591ee7d40590bad8c89eb1b61c94877c75ab0d3d4f332a2cddc420abe64ecc74d789701e3ac06fcc67608db622d656b5f0ab5bb7de45c6761b9526828f9d9b466ede6c7062e02e5643bd8c89d10ce5a517e1413a232106953b5289e33b6e4342ab9c5d019ff77afc9a84b2ce94edbc0687567f9f55b77aa9c57448b9b2b1d2ab1a6571b47a15e36ba177c5b2f7e35c5d679d24ce6999f30169b51e27bf9d0cd26435ff324319760a23aed4f246b992b3b5bdfdc6f684ca73a1b74a4928519c4f1374fb368db03a712bbb2bd2bb6bd3e6c32e6148b15d36b84110a0797309c3340d413eefe5a46d97955d6d7906e330253e65571c7eb163b8f1ddbec21cd7fb27391b54ed155dd0abb7fc8c60bda26a2b82065747d168955d221d7e95dcdb364ac584e24c0ec44a0fce5fe874ab2622ec90d6940fa741098f0d880061ac1a7600d1d2ec631170b66fb0ed3a088269b71bb36dc3e5d6ed86ec122c3c2fdb70e5f38caf187ace6fa2983470aadb92a3154c3a9c2628c4e3348970e63b271865e1d8f33ca77a1097db1b2f708ab3497968a7701e053e5156139c47d5e6db72cc635236984b7d498d1597991ce18cede90f42668f23d354c37eec333e261e8de91e5b154bf67f274419a6abb3a9e3cb9f517a4d1c4d43b3022e83b0998798445ca8eb6c63fd61ebcdbeb0999a131034b22fe54dadd2faab5b1bf4637d7ba815b66e5f78c14217b227350691141709a112db588095cf1b10587af390a17aab279bcf8992dfcefd21acb3377e662581cdc52470e5dab1a99afec84dd777181d3bf0f32ca7f1f0764b50b1ef849870c700ca28a8df9bde68bba091cb19a65b1210f7650fc0c3c6f7a81fadb3043100c0cb19b315dc4db94ddcd939a42945c911ff3ae07ca6f776f3e3c5c9e6eecec5dec1e9ce6bc64e373fea9836245429a687e9649a124ce8873849dea633623342e5cf3739a6ac69a97dcfd961c9e3f0b5bdd22ff5eb35d0ed386ab6fb3600f18e71712a5f6ee5a7348f10a5ccbd84973313a43dc6622c4b14332e8c6cb09cc1dcac42cee58a80cba6e2fedef8f0f8b4a866cb14793bff35e86fb02569b92f6e56f7d9879e126283e02bd3d98db39c3a25d3df0f82a061829a0f47ac47addf609c69367994e1ab389de53fae553c5f6f5560c2818aa962a9af6694a6247797a178806fcc41b1a3a6701653572ead6f45f9719bc1db47f9df8e59bd1a43ab4ef8c668b659039d3922afb28eec32d3822526e23ca125676ced7bab7e32a60d14159b1e96dee8f52858997f57ee5bdf95fbe7e0fedefc5c8f87ae2e87f52d960dc948b49a89972eeb8e06316cd8c3c03afeb5cfc5517d00f16fc498339e6a26c8b590632a9a2200d2cae6685e9e19576bdab49428dacc9ef48b0acc601cbc4574ec85384e5cfc8494a14e7f0dfabd0d17057d980531f0e9afc10bf5d9ef019f3e7ef65b10b39478f5a528e2a280ae3e8759401f3f03501e62f20cba25ec10925a188ffbab087897f8367701686255d063ccf683f2008c85b9052d3843bea54e1c002f49838927d557c8463d06b1fff20bda2595d6ae6ae015775db1d53429b72f922aa7d43359aec239069cb12c335edd56605658b7801dfb2cd5bc3ccaabef5c46bd4e5d845dcf403a810fec163bfe831ea4f286ad87c05f613bfcca8a815eb7eb9af80bd53660ed80568253ea554a0f8efb35e0fe119d48bb2f72b48b69073ad2bb34af4ba274e2cc0f866e460d8abcfd4379d76f1c0a82af3bef28647f72c2ffccc41f24fe84e2cf2751e44ff1e7777a6e9a925e52c3f6b9c5281134691c259e071de19f81f75d063570a4fa782efcd73f600cdaf49d927a8f94a6c30fe9ce03315f82711d556d32de02d929a2e3266479de62ec5a8ce7dc401a06eb2d1014cb64c91a92fecbd5c85ec451b938f468cf38cf1d5da06543de7681c845f0975a0be77563e956fbd6f2ed498e63610e9601408d98b917363472d63bb78fa456caab1c45f325013c73041fc3c7113ae6a036b87fd5772ae9836a374b275cd87aa4d4fc9afd6706b8c266508ecda04e242a1908e1842e18c559b72b44d766dafdbd6b397e743680467b6c0c6d03ac85f0a20897c49bf5be6814cb23927a5f2a653460f3bc145758977ad32ac050dda5e78e2afe7460bee6710e62837aa17f46bd50f8e041c14a0f66c14a1fc6ca9310cd6eef944e680893809c9d7049333bab3344d3ecdc05eb2b2e0adc30483c826f28e344a29460b0cec00984f22094fa0769f0fbc9e181c747c6cd019c05117153f1c4bb3e938f3da92c3c2bf52052fdb37a0c0ba59319288a1031fe24027719eb451c44c5302628496eef581fd0fd3dbb520641e209fabbbf57bf5ca04bc6433703749ca5d71dc624694670822ef1326a54bcffd97975f4bd619aeda0705c11170b3ef8ae5897964f94ffd11aa64a5bc350642d7542e454f17114fe07e2e1ad4bc0ba34a547ea2982067782e4cd4d064a02f6e7a99b5daea67e9d8ae117bf46a35016322faba18f0bc5f1ee520f1998517887499846d85fe91bb78eaaebda46df057796e6d108cf6330c5d9459953119eb25e56c620525dd6a2cef9d1d888bdcd3cf463ee68be4a0a860be54632b82b2a17c085d4a05c8d989a9e4ad956de98d6b1275202694e4d94428fa40abfa495c2d4b0343573753be2dd4a34c4f59e7dec950583ccdb4faf4d205c29ba5e46f9f8370b72b5e9a6826f2a45856a75bdac880e5069fb72be503acbfe288c32a60a31f60cd322b5924c80864231f64a33155b51a19e8a3df657e52f5617306b9b5a16fcc555077b57b0ce7ae75e1c59556eb1a723cc574b170580b8428e356fd17f1b49965adc4a545d1ae8050e7798c65692546f984373cec3f7df86e8f74d9ba1318ebdd2b6f487cd7f4b487200955f8493a6bbf937fad89fe55878b26a744a5e6a28d4b5222f898b8d0b3fa86b58a2390dcbf5aaf8a0e9255e9c5afcfc101c82127369fffee2180090d4341e63b04ebc45dca34b01cc5d0260bcac185751b436cbe6c2ec77fdae4f0d7f7122c98d0167bd224451b72bfe729f6d227b632ec5e3d73dbfb7e83e34d78ccc58dc982c34d7a44c6f68b8bc26d2396778f182fee9121bb6c4a65ecaeb73a58322adb96fd2d2603ea9a11143ea60b65326373665184f58536b0daa1b5ecd06e178e7ede19f3b9ded9dddcdf7fba79dbd83cefedec969e7cde1e11fec06fbe3486899da8ba94bad15f50ba8687f1ce734cd6ef51a00eb542e8320f62c0c31d730a856cd307f87176b4ae0096393b73cd74f6b8b90c4f36b1d9b6237027317b3269422711a3c50b17387f097db8a0a95e59e398706ad8a2c31a435b166ae942b4aeda176708d1be132a81525ab96d02b975a6c01f8aa2d9ee2725d0761a8dcb483635e9b4b609577f0aaad82e08beb90200a88c12fc424da2311be29294a9b40d0fb7bac546314b7a1950583204005585fedb31f1ba476dbc4c02f93ced039f75ba12fdb95f6e78c2c8ce71ed27cfe4b340ad33244a631dc6801588b359a207cc86a1a3eed465f234f9b91374d72242e2b4160e0da40a652bb21e605a44f548bd670b34f505f49f8c50e6aa9eb8cfb7269cb32a57b535917cba750a9bce05218dbde1b0f09bc3357b41fd7b470cafef971e5f6593e5af9a54ecf51c519eec20930064e927f01145d2a059118523c992688623f2d95ee0ddf599fab4a16ca3135f124b3e7de95cc8b6f1eee90efdbdc75bc314ab515278c0cd8267e7f2f7f544f75a955bf1e0f5d5ad3d89332ea057af77a0a9dd3c3ed4307344061dd68867260da2bb47156ebd0314651e3b9e0d06c41de58617c2482725ad597cc625c8c6e57bca18334ba7594269285631ae95fad359238f677caaacddefde6be47fce93df59d27bae92786abca380252c10a97c6c6b6b5194f460e9cf3b5cdebb10badc5e9b65ef20d43f5bd38b32601e02a590d54f60125c90368b52880a7966601af892522e43c948917367563c2a818df20692987e8d8ec9103b59290ff9958f52638807abd277e1c99754f29f7b5bd4502e2f69faf0178ca8d98fb6b001e88b4a7005e885fcf00dc15bffa00de10ee8f79970078b4cc3cafa6f4dec259f70d714179242f610fe5b5b21e058e759da08992073ca95876bbe6f713c2d6ad796b7f52da79bbfaa3524cdb186b05f3029ec5bad173db8c9c123625c3f80647a7e9693ae5fa890fe4520f380c94c423e23b091e52ab8ed305511a8d8bd68763ea4e0da64f57075ca5a5c37e4e62124f50e214d0e111ef1ceb3adc52edd832232f342898b7984bafd74bdbe5bfe33025ab3ce6b223555eb6aaf54422c751007e101a4fb4eba107a03341d355516f294ea543a05648996bfb01f8e028464b51297d83b744c6f471f8006ca638cb53b2149d23d32f61bb19535efb1e3234e9204e705b02d2fef65ae1c3a58b0f4186a2d1521c841f0a1b069555cf75b4e76c3f51f359d546e59ef791a63e5ad0a9987384ab32a43cc3f8a081e129f7056eead86e8a31a522f2da0386354c970dab30da7adbee3c364e75c686731fe9c3744622cf0105dce6a7df2f003e1287df3601704f38fd00705ffc7801e0b1f8f51cc04df66b6d0dc0d7ec073b40bf90e098e866dd52a57d93a59e1e1e1500beffc1525ee1bfc026e4ad4aa53043cfcbc7e9b57b27ef4ebee9ab1c8af9f75f3354b7370f5eef1c1b4f79a295cd699a24e90e83f7ad0dca5f0dada96bce2bc1a73c03f083f8f514c03724f85071aaf2ae9ef0b59ef0e73fc7edca9bbfddedcad7bfc5edcabbef73bbf2fd1e579a9dad08cee46f77b7d2edaea4751f2b245ae26185bf92f1d7a2ab9a3f151e9c394837526ec1ec3bee41da113e53e294006dd2dddadfcaff52ff2a301fa7b324da8ef3499ce747c25508571f68ed77a5f370472b243dc6f92ca1b96fefb7ee1d3bb684b67cdac94415cf2940b36f14eca5d2f5092b207ca45050b4728232b7388452f8304e128dc888dfe43efee0c343088376a298b26e9fe21b7aca7e1ca7d70b54b1e423ba34139536dd467c8c6ed7a50135634b3c58ee1269390957ed7ba890609f5427137b71be23ccaa64b768c57e50360327b384c6494ca435a6f268615be92a57caf1ea26046c2837338c5ac4193690b308575ec95ba52085b638d5ad9795dda1744b600b0935ad9a644e33c6b4ca1a7ff304d2b9e1e36e8e5e67e96cfadd03b8ad8cf6feae81cba788e8defecf0cd71b3a49e439d9fcd8bf74e1926ed725dcaea25cb8cb46b7ea2f057be2249b770af32da34efeb1e35de14c9a63a8fe9b77bd3fb5a715a16a681e484b67800b4e35fbe21bac8c657733bde0fd63ba3f9aeb7edddb4c43d717eae82c7130633ad51303a5ae30bf8b8bcb7300ff20c1ef956bc9279b48d560521da7951855b0f54d91d35d24f87b9808fe3eb797db8f73bab130d73f3b6f624aff205004abe5d6f60b5dd809862ef7937f20c3ba905bd50ce942d68fbffb6b8e0066f275db486e574520cd572c2773d39ba28f967393a0807f09c27b0120463f965bac68220a99ecfbcc1a445a2beb0b4b64f52ae8fc9723d596a58e9956ac62042f3db1eab773193bc2eaf9e9febe1433766aef3fe790d69ef309804a2cbc51064ab3abb854d597c50dfbefe9ebc7f67d1568fc9d1d3d45a3bfa79786b7deb6bd3d45a37f4757a504ff07755842fb37765bbd703c94a44b6c1bba2e11ae74fffedef8e4ed6f38ffe594af2d06e23c85f5cfd9a0411979903187dc3ccb382429b2a93334bcad359cfb2ccfe377059b8f407ef73bc0d7cdf27371d996f2484789bf95aca2647e1de1a1c3f11d96e22cb4c34ec9693a1a25989574b92d36d79dd3c0ba5d859785a72ec5eb4ab7a5da2543d1b8db35802a4e62910b9426a726d2614286f1217fc2b3748ef54a2a7da972dbdc61a5f02e6acd724d2517cbd80bcf2fd26b0ebb94b7f701233016dc4fe73aa6dcfb0fb7e59ff3be688e51232a7f91721cb6c6699ae30e8fb7cd9d0aa584df48e549cebacbc3608b6f181b4e795118e229f51deff37404bdcf533c72e4f47f034e55d2cc676188f35c92a67382aef0322a646534fd5916468d72d8e6a66b6b22dba001469efdf0378911688b062e0192756a27a8abca58a542fcf5dafa40e4409afad4780be6ae15410109b230d30ec1d7c239512d94b7dd611f5deeabaf9433db941ed24aed9cd59e0529ab1d0529ab3db1d5667cfeb05273c26a4e8321ab79150c59cdd1a2760795da23567b1c0c58edc360c06a5f2eaa7d52a97dc96a7f0e4e58edebe084d5de5a54fbb4527b8bd53e084e59ed8be094d5de5d54fba6527b97d53e0a6e58edb7c10dabbdbda8f6a34aed6d567b2f78c46aef078f58ede345b5372bb58f59edd7c126abfd25d864b5df2faafdaa52fb3dabfd2178c56abf095eb1daef16d5fe5aa9fd8ed5fe33f8ca6a7f0cbeb2dabf2faafd47a5f6efacf6a7e00f56fbafe00f561be345d529aed4c798012038a0988140fc47ff1c660b81c45520190712e220e64012fe83ad978540d22a909c0399e120e54022fe832d9b8540865520130e648a83210772c57fb015b410c8a00a64c4818c7130e04076f88ffe39bc5d08e4b00ae49603b9c4c1210772c27ff4cfe1e78540aeab403e73205b38b8e6404ef98ffe393c5808e4a20ae48003d9c5c1050772c37ff4cfe19115c85d01e0db2a80230e601b076f398047fc47ff1cee2dc462bf0a648f0339c6c13e07b2c97ff4cfe16b2b90953e805faa005e7300ef71f0850378c57ff4cfe1076cb3ef70e7b67d00dfe0e083d0ba84eff84ffe7009bff2df526719fea9c06950d2bffd1fd805007e9ccbde120ffd3cbb7409fa3be62791768ae3291bba6ef7ad5b7e0178ed0ae61fc00b177b288951ce2e4efb2ef6b4830b00bfb8d8c3744ce230a6b700be71b1b0ffc86e01fcc8f26ef14598266906e05f2ef6848f0c001166e380513ecbf8e19a039860defc25bea031fb8ed87788328cb30be9361b5e61eed69ed234cd01dce1065a31cec2988c72004fd8f72c4b003ce5e5ae634a7106e00de64fa63945a30c4d40517ab06ed2eb7b85ddaf98cd4bb7fb0657cd6cbadd9577b8db7d84dd7a0e28e0d99b1636259bd8ddc61ee7df2eb82e283cd4b4f93bcb0390dedfc78cd40a78b6cd20aed06e772513acd11b7c7fbf526ffbfefefd021fe5cdcaedebf1d07db7a0a6c599b6d070f73cd3952ea3316554ce5f8e3f434930fe015424e51f414d38fe1ed454e3bf869264fc0f50d38bff2714c4e27f8226a1f804434d257e88618544fc1986923efc29869a38fc3186b32cf12f319464e16f31de58d284bf8b219f107f5cda7ededfbbc48ba3793e0d405276fd13d65cadfb496f0c7bdc37c52376fb631761d7f087ab5d36a98678a9ebcc14f412c0bd1eacaf03a90e42bc6986af02c25d1c48c3bf9e1f0fdd5798473b90f97d48c19d2814bc14ba1185bee1f3d4e7f04fec8a80439de73e0a8897b3a97d845d24d4bea7d5dd8581e615fbcf4c43b6977e156cbf0f3f6ab8fdbe9f1980b31a60b12fb12ba732d4e2c2838a5aacbeb1db2bb349508d3df3150e2f4d0cfb2f7c35282f20f1682f209ef0d1d007f03d91c25497e528482ffd575c09437caef57caeac824954c65cf2729a4ed9a50512ee08029e9df561ffc5f93957e79641c478867643662c93bf0c5af96b39ada8454517500aae530a169dc64d948215a54cd9ad990fdcb32aa5600f0db2d994ba8e942ac90179e697215f58b517f0967a5f6638bbad8af9dda9acf08235cb2e5b9c1440d584b02ad4d7b8bc6c87cb4bff77ecda214109a9ffbc420e6bbeeaf91ac48c1cb08d1cb0410ecfcbfe8a8acf61a4376abeffc6f9d8ed3f57e57fa9904fffe53cf9e0927cb0413e6bb0ff1cf67f594c44dfa56259890bb2b2325b1019447751c50791620cabb4a3459890f94a9f08bcab38482e85e5c2f59434a0b98e233af69d7eaff7df4ee37b852111e4bef3fe374433a87bb6d6297fe186c9e724a326a2c195effc5c8469329b90bc13e7ab5a79a443d2d57c8a421923b4351406648c926127c214c549beca8fcb25fe4ea5f18da9b9a1a6da817916fac7b8e584356121fe2e41832278a71bf6b731e4c24d9f422d63f233684a452ba127dc954cf1658c0a4f90d507faa7a6a98315719c5565492a18289b2429a4df8d137c8c5184b375e2a5845d0330892af2a44d767e090d30c644eadf05643f51b4996f238ade1fefcb173fab18d4ec4ce43a43b98f3a0d3e51b99e725d0c36c6fc8e621dfdbabe532685fa9fab5ed20ff8d29f57ca2817f8f582053e7ef130a4a4a2868e2d9412fa41709b4f7b3db6d63625fbdab13b056fe8d341b54f12c8e26e5d2cdbb79a741296756157f1ddd62e48f12df7b73ec628339ddbae648622fcd186e17945cafc9b37b5b7eeca1128a0d496f7577af69e552c252b1bbddd4ed0304ffc48bc66cd40f74e1e5aafd44da3e37efaf4e9d3eadbb7abdbdb403d28edd596be9c9dfd0294e04bbd250d74475d59149cd776389659fec25d04543490fc33e77a1c0b6f99090a2f1de8a03c6673ea8c6336b971e89c9b182decf0ce2dee6cb18b93c2ed4f3b6e1f5b43dc12973205ef831dde9bd6f0de70eaecb85b6ff53c7cb2c3fcab35ccb7c6cd500125d80e15e1d66077d125ee9cc625ccb00166d21ee616bfa776f6f93d55c19d35c08ddac33d15d75d0571da00f1aa3dc423756b5630c70d3077dac37c7fbcafa05d36403b79409fc51d5e41dc6a8078da1ee29e12052898bb0d306f30b7eb01a080087165969f01ccd8af672f008cd98f17cf010c7fb07a0bcd66ec3ebcc04b766b1fd91be687dfeff52099afbc66adbc66565e3bf71dcff3ca57b90dac6ad30dece5b38170c2e7f620058f898f7dc7d18ffd8cd939e11e841b9c707d6328e91efce691585b8f876e9c1fa00311be6a37491175a5ba290600dcdfafc4f96e4c628ad9b7bc916e383a6a39097aebf8b7a0df5b7bb60ef013fe0392c78fcb774b9aeec63738721f53f0d8e9388fb983b11989697e46ce0d8fe85c17e1343d8d2738a76862d5345632097cddd94614bb7dfcf4270c3c9aee9d1c2a2559390b6ebf0f7f0195c16767fb6e964eb8578046e8d29d2bde700e52ce9176389fc63de209e73a4ffe3fefa7b37ffdeb5f4fce9f40c729dbb07a74d77e1c94c4b1b72ec64d7702038802baa1bf29f0d56f9805c81b61ba3b4b924f18652e5825d56f1df65d04ce2774ec82df90f1717f5fc90accbc6e97e76da35b5589ff04ddae9bad067d0033ddb7414c8f1bd6a2240a2dbf72f1933e7e01f4c4af01e8742678840631cd3b539c75c4643ba61a6b194abe71d6f16fc1dab35eb78b7f7df64b6f437951fc2d78f60b4ffc79adb7a1dc26fe16fcbcc613fb3d5654fa4864642acaaef55ff436b43fc4df02f1fdec0fc5ed698d98f510095a0dce9cc12d658cad73f9ca81ce5bf6df6bf6df29fbefe895231cba2608e6b617f01079321483ba95954f0a10b33c4699db42fc18948349a1d3b9c528cb3b691299ca3b468d0da7130bc77d1da1ebe3f88ee72c50f340a816ab8607411341b17082afb849bf9f210f7987073b36f6b4346bb74930cd5ec65125fa96cee84c850b0f762a09cd0e2d0519a0f07294a53312f16ba4efccb2c4b503d72f0ad0019c9e6a4a157dfede5356d06f3dcd3ad173f770e10574758008c159477e3d77d87563f3cfc3e3bdd31da7754c49274459b49a0beb32eb352d465ea8af0914dfd0c32b9c0d93f4da777092c4d33c66972b9d368ea308136eb76474533c62710fc5360721f21a55bb3cb2c65627338aa3ce2049c34ba78044ab3c7d0f14e78432028e49c7a960293c3df28710e808d2cd3d87f319a95511add9af4ea967fd5d8e754a30dfe559676ed6d9fae2e63b361f76e50a6aef682647a59b19580a7a44d8ab6f72e4d3d61d90e1a8a5ea846586fe16272c15df08da934a8a967a613136a69a1b1682b81d41c479d9b5a7004ed8af7eef2980439ef63380539ef4f4398057fcd7f39f011c7196f767000722e9398063c46dd30708c01dc11aff02e0ed0fd7f3be1d486d7ea1bdd5141885ebb149752ee974cdbe99fe3f533d9497af6ca5ff0f38009a220af52e593997a6370e80494cb0b8e5facf61d91677e7e748192517b388b86631611556c5ce60943fd28a862ac65999778ca71851df21e96ac67f3ac543c29013cb0eb883ea2a9d8b8e38e591c63268119087162729338ccdef1f8e12748bb3bda8d1d1b633413159fd7c3de5051d5bedc6ba1de98047d5766bc00ca5de4341ad2f00bc14d47a88003c41814bdcb5972f0d3dc48745fb3732505346369fb1d207306e2a9f3765a4f3193d0067b6d452ef232a476ba6fcbd55c2da8afe66df196d0929d88c9dd6319933a1867b12666992e0c8157e32e34097f6c224e6a1ec223a7eb206c360b5ffd36717ac6b5403fa5bbc11fbf4d77035de0857639fc2b232a73a8f6688e46c970b1cfe93edc41f4b564983628b153802852470e96a0c9eb8e1eada4f31f8c98ad03a79584b896ca1e0f6f4439b1ad1d93980d38a16d110ae0178154ccf7ae770144ccffae7a502655d01695ca93960356f0377ccaa8ed9b494b37ee88a033e2fa7457711c44337d3e3bbd2873c80141ae4aeeafdc7d5bc361e1fc1affd6e57d9449a011dde9cbedddf8eafe48621b541601ca8b28c3818f9ae0431bb5b6d529ac58319c5aec3d880d57cca3851ce76afc69123e3c88701f5d2e130c7f4e393b83a25811bcbac7d3ca48f2bb93f85e089411d9cea4486b6006057604fc52ebabfef29170e56e4842d03c7abec460288b23690cc9b34793893e1311270aeac0ad6895c00185fba041438c971271eba7ac4533d29bfad3d0777133772c1e37eefa7321dea9f41cf88af7c29e36967f80a13ba2dfc60b8001a13db83da576480616efc36416a8827d2c024ab8654a701d65411d7a9821bf04ed22b3ef71fd74bb8048aae50602261e0ffb9dc966c5bc786751a57adcbd4373a715d2a5a5c2fd5b3a04a7909f2406a308409cc610a670bf42e685def820a25013aa77721a98311802016c656e4de15a5e04e940ed6aa4a0fb441e961cd2f7d4b70bd0d78c96ea5235c1ab668d8f02ec3f93425393ebd9d62df613711a7d09a1cf1d05debb1eddce54165b87a464e119de5ddaef29e92a42397c8d453d629e87cd879f5e7e9a9130481cb4e4fa17e314d62ea3aff220e005e3e8e87d405ba672fdbf5ec2543888776467320fafd7630b8d6d15d4e5146fd1ec424f27bf0c6efc15bbf07affd1e64f401e3e0ec5c167fcada5c41f28c2be742facf2ecc983e6e68205662f67313668cd78bc90c3bb0ff54a1f7b31f7a310993598473d7f92f0774bb6642504f800ed87093205403fc5f0e38eb9fabafa0f2051db6e26f54609e84c750cabcdb32a1cf13aecb84359e302e139e9eb335ca55b132c6ac2c194a50e94e6775f55f374f718775c2cd4ba4cb74e9f84665f81c63de44f0a2f7d3e3f4ac77fed38bde63f1bb7ffeb8f3383d5b537e72aab53089789d99516726eacc78bfd4fc3c353580d67afec88d01cc313d8d27389d515329f3d65de98102f67b4afd676d6d5e7f8796fa3b94ebefb450d859a20c6a6c7aee03199a26e649301fa0806768b932ea8af1fbba59fb049ec91d66394493095447872432ebe10bf8e1a18cab9ed0f589bbdaffc9b59fdfc4bef53f5903328cf159096a39aad5db038aa21d7688eec739c584df22d2598e6753071e32e8a6384d56c9b8b7ebc65a5c8562f97069ffcb40d399ea63034e22e0f9651d2b5a125309a2194709e56fc392b5ebc093efc4524269524799132fe561361b0c70b6ca0eec699366126aa8a40cbae2c84ce4aff316a50763f50a3ec74a9d5c79eb57bb7b66817e86873e85367c1629d22de83b45a37cb5941ad803f51b8d936a87d5125a8d09f76c90660b2154eaca01d03016d6b4e17e15e3eb699a2dec33c31959072c4fe2a869d2178f57d5afa5c11d4a19a99edbfbfb5e1004579273105f9f5df520785788372d9805729788d2906fa58c5393b8e4af6eb5d348b78286b862309099624d345cf5ce1807bdf5f85795cf3de364dc53bc1b03b0e402c303f5955e74d6e3c78fc555386cb8cdd073982cd9c0f9812f6e3a4f129806f6bd3b5f25d53d5bf9974ff0d094a6a5529a26c56c6bbda2d406b620589313eb98c8c15dbdef3e59202b13c451f36327425f37108c7aa2a13cf40102da374c215e401612d3fc65a04a3dc1151b78c6645fff446116cc95d70fb0ce05775ece131de85c889bb4f7793ad2af5e4ac34a0f31f1aeab836c668d659676603fbd112eec6d22ca55e2dd3c76a6371de7f12af16ed94fb39cedcd2ae3cf53b036eb48b4aae7fa6ad9bcd624063f7272c5e35f6d76177b7b0a9137ff6a2f42ba67ece6d459ed388d853089b843786e356c6de941c7d530cdae5116b53ab1ecfc143fb17e634c24809fb540738ab817cbea6b9441da2ac07acd797a29dfa700ba5a6e7aa59365c28827002f4449a2de0300f0840c57c5d9265e8272cec007ec2325c71845b781fee50d6212e930e11ce1ca0761034ca428064741f9b3754ddeb8fad1be3d393bacb1a09ef0702852921ad8125b4263377b1cdc29b2d14bba574052bbbd0c849f27acf9c4a948d06173e56bd2761c09b3219be602db1e25cdafc8889732e2be4a5661f1f98c7b39c697aead58dde357a30e11af3c4197788b875c3381f1dd748156401bab0a83fb514f0d4b34d1c75cd7602adf42fc5b2ebc291f475c0045de4998c553ea3b634aa7b9ffe489e402c503076557422f4c274f927890211e5be1ddf1c7179f7eee0fbccfb903c3594ed3c9917cfa950b430420951f5011bd4a155f50d0b44a64bfadccdb0982777c00fdfa88964e3244445346625e9dc264ebba6d6321c0f291602e5ba65b5cbebd49e925be6d8e89cb20354ff5156a764032e213364ad201576686613a19a4be4366933547bac871f608ab93e30e9b3b76f475f229c69103ab4259e12253796aabe148d915984ffd86fac148e348423c4614bbc0efafe372715433e963ef79c315a9b90f7ddd876dfc4fe8c3ea37f4a1a7fb708c734cbfb5038d48f5b9727ec54991d84d16296749362da71946938d3bc62efbd544696eaa13c30c63928f530a6986c2cbdc3fabd6baa2145ec624f21dceed111427ecc2522d148ed194e22cbf284bab24a73887d27d10db5626c9730732a64e08f956fa706a747a2b25344b939c6b1e18e9b97fe6fdfc1cf661df7b0ed7e053f8ecbcf0efca975eb9bb58d6a1b1af07d55dcf95c1de6b7bfc6fbd071f066a175b7c1c188429b72317accb10cf54b8389c3f12d93668d6667f5cb365b65536abe636375c3eb9adf2428ab901bff555e075cdef50b80c4d6a526a7563b5213737bed85a5beebb8b67d59ba259ceddf99c03480b7e7e6e29b60080fbfb04c16bab379cff72b88e9fa1238b461ba58b1ed3f71b37fe1f0981214523e59bcc01667c5ba3ee12974042f058d11353d0c4a5b1e22aa8e299cc5545aa0a8a2a55ba6ce65cbf56536ce2fe651599777fdfb3df01ded29a9e22452379538909c599f432690feca3f4376801098fbad4d2b7d93c1b74cb86a3a682a3e402f0e71e17f65915f9d002032d75bbe5c3b651f9f2431e0bb0a2af5c79ee024057679ca745c1856b114aefad654123389f4814ca8cf6fa91d4063be6657caebb67d69a03c62524e272bd04a2d6f6f5c50db154ff752dc040a3df35d9336118d9ed3ace8af686a752bf2f4e8b81f4b6806717693638ebae626271fad53310a66894eb9739c55c1859ad7503af4ddd408a46422bf0fbf87e632044dc1c4885c7af029ea2e541560e7eb0469c76bd36bfc39fa27a8c934a6c9393f75b5b3b27276670930b540b53b26bdbb485a7993f51129721027753b1cd2a52dc8ba48f5f127049ff95b5f44653867f76be4e6ad12c4afdfa9e235d3f165ca77f46c4e32cbf8bf51ca92e799012ec1442ba89e6837334070d4f78d0702ed6ac04e758e6496d3e3847dcedaeccc4a84d827a77e8e2e01c936ed74ddc098051199c6318c41b22d45bebe01c17c81e9d83fc039d1d2f8dcec155327f48740e06e99f1a9d23f9a1d139865cc1f7c6b68ebf2f54e282dad5c037b12df0cd82dacb82e0c0ab45b54795da57acf6201871e5b860c46a1f2eaa7d59a97dc86a9f0497acf6e7e092d5be5e547bab52fb9ad53e0db658ed83608bd5be58547bb752fb82d5be097659eda36097d57ebba8f676a5f65b56fb51b0cd6aef05dbacf6fea2dac795dafbacf66670cc6abf0e8e59ed2f4dda88ef2b35bfb09aaf82f7ace687e03dabf9467b83c7044ba765c2cfb0f6c62b583d04257be0a7dc5bd310725f510328982cff048a4885b71771e49f42a177cc7edf946aff177194fb8fd851cf7f6d168636e4bb522bec5d7badb0efd70293003e70073c54bb6a525a5c6f5cad97a5b4b120db14e450293dab72f4180fe1c963df75445a246c469c52fb65adeab049b6fb12528ff6026af37e430def376bfe07c399cdd316ca30dc99cdcb96ae90be56b6e3450113ecb112c423d992f8083a989a258eda9e4bc07c4cb2d72e611d328228d0a2ad2acf8acdb747d9e4066e61dc22f0562cbebce7b2aa8bb8de4aa5f5ccd5312a666ec970c3a9728ec7ae4f828a3ebbfafe020f5c2c833cdf6ee85f5e1ca958c8f0486bfa6f182aff3a7b8f1d5c7cf8140358d51a6ac36abffaa6c0ec6d1efad9b097b2f94eddc7d0f326cf13aff9d92e058ca76c54ad72fda6383ee51cf159b10592417607199586d575cbd6f4b2184c250ab32614d21628bc3fdeffc69e4f9b9a1db6e9397f4b1ae3642ac256f94ee9cde31bf11937e13368818fb8ff5b5bae461b3a731cd8173252f8fc7ce1bc7c16e6e67b84d630837dc6f64bec4e5a60272e51b756f476d59bcd5ee5e02da3ea9c36c4e429113d908eff5b60224db36c88e848403ad0e4d2868f54f0f412db9b164818b17e0bf8d535b77ff86879f553a113f455c64a809b76b95cc5e33b777b3ee7aeff213ec0de2d7001c6a8e1e89b25770d5e781a431e193e77be355a92b335c6e1653e9bd825454654254190a12cfe1d51f91ceed0a05d73527c58154319ae710de91b3b8116d88bb6438d3b50e05e2f16e327459eaca4b937d4d0e1db834d9066ef8156d7fade5e6c4b40cb3b61d788b1a0f43fd18b788249cef6ea96c4c29be7fc02743a378604b8229d6ddb8f61862638430b8def5b121583d4e1fe281ed011dd3e743afc77d51945eb7e0c62fa437af12aa66dfa10224f3adf70ad68b4479cc766bf08d30887df8dfc9f0c56678bc17ac81c9828b4c61bf13bef8fc17b93076e7a30de260ad6e821a2ec2c4b6acf10ecfaf1ddeb36bd16be10a3ce6e96b63d5858cb52bdae806f85adfb3300b78599fa4b001fb15fcf5f02b8876a01f1f69b05e0e23950a8d2e66e55dc3d31f3366adffed939fc06897445be6c36deedaec402b5bc8d94d9ac5a957572e933bf3d56d3d95dbadb4ddcd2aea52e78dc43adc3ed890654d0bd7f981c5ac5bde29e38cc10f4ed04d4a26b0f92445b867bb128ba7db03f1dacf2e121ff1241934ba2fec5ada2fe1d73fbfaa7bd1e80c4edf7d600809bc2fafe1819e2b9d748ab6accaf38b6caf5727980905ad63bc66a4305eb324988705cbb9ab61614d25682c21f6128eacc48848731c19111f716dddf9f78c88bf39d2f3394b8a834a32ded109fd6cd10452adc441ee3c1c4b30286bf9f1c1e78c2255b3cbc7591f2a0fed42f4d739112447e9feddb4ac5dca7f142a30c0f2a736b8b9c1fce3d20982fb83f782ea5e5fa0f13fbcacc1eac4ecc484d8c9e062dfc8d033e579cf5e741f54aca58312943beebc5b91b0b071ef7f7ee4c9d256e0c4a5970df9405ffa264c1bf5465c13d1e17de9001f7db497d7b7089eff2b6e400efd809ea239863bacd7e6590479bf0d3a2701daee5324421ae7af3b2cebe110f50789dc79e84e9de5da32411dea4b694407087e8b7bb3c9d91a8fc66fb1780983fbe7ef9c10ff7b31c73cef10ddb409bb5c7da3b2059e95bdd8fb0e42c60bb2b8c83954cba7a929115d8687866a7d7db49bba54a9dda39d671b7ebb263649aa0db988ccc915ae971c36e65d24f0cd704fc4957288ef1270ffe61719d64d4e9b313e58c2eb7eeb463789526b3090ee20daff7dcef3150f13980779c17df49b853f023d105c699e47c6ed807823a90b8a9f0f836658d136a9f40ec95108c5eafabd701d9aa4691738e7c0c22198551e2629a4c0ae543b966cdd64cc37dec49950f50803abafb988ba9daa2db5f84ee4a89af816eb7eb5235b16c5ec5c87919ce313d3490e0e584e9a761b29667217fc6626cbe0c4d591b8660a56f86b37effe3dfb6bff08da55c9eeedd1cf2dcb935ccc5c24a83955c2eacdc5858b65d860fa7c55b0f3be7233c486724c4261d7f419e49676e0c2092172b747fafae5b82a7dfc8aadf52db58a9354a4f1459cd5f84f43ec84bf1f9228757386364c68de29ff77a401cd5131e85d1d85c43c6fbbee16c70d6edce5d593726c1a220acea09a7acf056e95d4e1af52e8d7240a2350c1c074ed97f57c1d9f97a7544dc6115b8ea2daf50c3e9edc3b5372b832d63c802e85ed51a7d98d69a7227a8ee1c6c73e46e0c0b00b4b2d3b26ad53e7351f405452309ae299737030c6229c74f52cb351e4c19a9c06950d1d4e4e4c3e763149c393c63952d0261a2571ac69cafc7967da6db1dc93840513a1b2478350f518225c0417057940ac269168f62d2edba83d245c2214f0b54663b9363865da774f7d9ca6678e47d4e63e23a1d47793b1bc0949c323cf8cd6787440b823cac538f83da8f73eac921c9eb5dde607b271b1389847407f1758f5d0a837ecf5f98af02c2973b86e5dd413bc372812efb36b546b6b01515fb9f758fe2596c8fca7808d159695ec82314bbb5fd853b6d68d057b63c9b18fbc5b2ada75a423f4a376e39f6f26aa329204dfd899542f8a9e8c0bb3c0b19ebca69c246e11b77857fa79dff11ae9cc86d30d8e1c658cf244da7ec6f86877eac0e5bbbf5bc08acc25a1c1600a636bfa61663f7ea8ae4ce499704701140e463b9e1deb05f14700ae0951a4e2e577bd5f21866fce8b223b8940ac47ca774b1a13c922b1f8f42b313ff370d82a00733f98baef6611c90ffd671b3fa4110900d87a653c7e7e716ffdd49f0903a3e1635eeefc9afb4db655f64b52f0a64acaf8e8f7fa5b272661410020e5506a91caa730478466971b78b7f0bc86aacf2041a2a9996c96843fa7c94b533fd2ddb512e218bf90744e9067ec3b98af3789060473bc4fd21668eb57d7335154bb88c0a4f414b4f0f7adb75ea2e8aeb6b536bacabefea116ad040ee12f81cea625275bcb9e3efa55e38f5e2084a5b46a8f7253f86e666e057f70628ce181f15c016bcdabec1d4bbf2d6e6bda0a943aaf037744b54fdf6ce01e1ffe7c30f5cdb76d5519bdcc7aa386a28138acec940a7004ee6f3a40e1d80c3f9bc6d9cd32cbd75019cce19a595fbcfd5f78624601d5bcfb8eedfacb28d8d94e8951f730227b68a7481815ed577ca4fc3d35e6f7a53fabcfee43bc235834af8a8177d939f59e5d6e1398323f59f24d461826f7ca7d7e9097f0f06cb35ef77e3e2811cadd80504672ab850a583354551c46ed84e7f7a63d7c2122edaa53f86b651cb84df1cade8358e293e99a210b3a3379ba0c4de548cbc817a3ad2ec30b4be622cf24262f27d0f192661e4a59f1a6cd65ec65d6099c30be3feb0c8edef83234f2167515cbb91b023d45a8868432c12bf01920a6095a488fa8e38e78a053a3322d01f7476a2983acbe266355edbf455ad1535198eea3be204c6ecf4a2c26b0706c27d875eb863b7ee18a371a6f6f9bbd9dcb39c9f6ea4d2004eaa3956228b095544c863ed626f18e324e2440153f22a99653a4d7c4a518f4a14ca65cdaf419ac2b9a3811cd35d568dbfebb90e152d5350981d5e42d5caed41d9811331fe0e549a8b2849d2eb83d9046771b83546190a29cef2439270d6d8d6518ed01cfaec045dd8815cb54cf87da6e570999d8d1776b6d46f136a6376e5b665c32cafe4a768b4173990d6d5df187554eff42a58878167b810cfd11c9e1635ebc5a4c090cb19760b159341459f9ad3755b65e642583d69e70d79906ec8884d727540399d7eaa96343487ceaf0f131448fb6d90287c151dcad1cd70836deedac89d566db941b561c7514d9d9d5b15559111921559154a79f00b39747cc8733f67e4341b4ccc189506d3b8b292c2389058d3da0819418da8deff04937851b5c630868ce550cfec9936ada09ee860c1fd7e2b87cdf17ae8c551903238139725c66890e0dc0f0be0d13126d5f1e60ca37cb32a6c426d3923da4861739a2649ba936529bf134a5fca91d952fc37b524a368cc89779022cfb4db7551d0a822ca179bf6d824954423b67f659a4fa99c8292573b16ac5f9ff168d68391b53b3447e02e66941f47856d242acf040b874295c47a0c606518f931bc8d134cb1fd207ec4b82975c08bce9ca653d59587c49fad45b18df3d5119a2638b72bc5577591195977c4e1da910727cfda4d335f9d67d650b3c35992d875bdf9e22582311300246dd036cad1ea042ab1d0875263c8dba57868101213d246435aacebce291a99d8540f9f6f47a90a47e215b7c08bab5e9b93244f9aef982509412211166d83288bf59a2f1194c968aa75c56fa9e7ce376c1efb47fc5aa0465ed9239a79e04c4a4e9d2d2e5575004440288837c9859609f7cc6ba175652e0b677d2582548bcbb803e0d805fa82221e8b6cce1bc54d7a835a2e07f3b229ba544469dc8bd535d8b8190b6f940eac5e06af3334356ecbec122caec21f32342d0b88017ac50575beb32677b0813dd6d52b656d212537beb5f755398cb9014bcfa102e1d3d4edc11e80231929980b64ded80432faa1a6c1d06c91c55d6e8a8eca284a141ac1d57cd381c6f73b52688c0dc5ee55f05d4b91d3371b2bdf15df6aa8cccec01646ca42e2b41b93487946e0ca8bde14656892f38039a3e04aa88d0e822b71cec27170c59fbe6332629cd5122d87a93b0670d4ed8eb8dae78978b35b1974bb33f7967a6ce04fd3f74a7dc8354a710fe1a3766a1434d8a51e920a498c7308b912be9763948563191d8b76bb8e502f33f4d77832d7ff50369bdaa0817a14f67b603de3369700ae8ceeef570c04efef87c2b7ae5473bac4b7b99b82aa575c0be5355b0cf2b74465fdaddd21cc49b5fc91297565675101534dea03cb63cb3cb13b7c2e3dcf7340abad6dbecc67ed64ef106a6f57be3dd4971090c591efa8c0f88b8fab88971767e126d7ef3c4583234470a22edc09ca464dce8426ba35f1a4a4da9c32008eb4e5d6468b90275b0661abec60617f3aa83724b7cd5a43728b6d6ee883319215616b553bd9900a09adaf43731f55225fcbecd7d1d4b56a881af6688db8bea90e8a12fe1c6adbdce5cdcb92b5c6956d60f374507827abfaba391387e52d0fe304afc66498d6dae6764f7b649836b77ef46062c0514c6bed7089606313371532a80b3b2a76b28200f8a3e6d71facf4c70fbbdd349396a4162dacaad17ae7b954bd7474b04da5a35b4d7fe6283dd26afa53a71a3d46a5afc9f47e2dbdefac47d259a2cc708a52d5eacfff2155abfe225ee361215c1b75230cadaa451a52705e21ebe18a11cd5a0f22ca5eb3ce947909e24e24cde0b1732faa353765cb1e0c1a23bd6a4cbe22af4ac2f52640019de3cdd3bd83d71637698c8416a85054dd86b14e395a2b629ae694bf569af352facde41a4955cd0988acf15ed3591662a5af5100df59f488f0ef0a57fb5dfeef9a35c16cf168f3094a924e353cade9a18dbb86b0809c964f2a2a1a7ddded1cecf77ad0f13cafe3aa10481170c09c8dadc5cddb6fbdfb7bcbf5653ed3767ffcadf77daeed16be856d72c9c42426f1443a9f5dfe3054edee8aadc3bf063df0eff56db7cf3ba29d45a6e40fee22762cd4cfe74d779ae51c212bc6432048b3a7b9de598f70cb8d1e70cf798de3354709b651fb9698c1d70b6206ffdb46708ab33c25b5419cebf20f1a4adbbab18de682676dd36a8d170bee0a48f5d114184f08cd23cee50b13a995f26f1dee099aca2b446dc86d43f3b051070d27dbe247f6f94dba693f69764ab0f1006701bee340e75f37a877cffe731aa02a13fb8d8758f0d7413fc86a7eb153d9e73dc8fd1fc28f0f8c832ebcfe7e570cf413530bed6f8b7f2e5ab1aab82d7c6936f73071b3f9f7c63cb740d182cfdc6fea6001aab1d27fff96699597feef9fdcaa76def7f5b914f65adba8ee33f561f8e3ef09192fc6dc8cf8fe7141b8787bed2713256229a1fcbe3ce8bcac5c0b38ff4e049cfff4cd7e6c9ccd413aa30e28e05f2d2fa3ecd2f66d22e295feb78a88cfcebfd58f25abd9c287a5102e6fc7190e699ac5387711f75e29c4c927c1a114277f0e0eb538b99d691f771057c2157edc8c84e532e3cb6ef7d2acd1edae9c74bb539b44ba528ecba42f5b7a8b3bb1ddeef42676a20de09ae5575fa8a1839172d9609a5b6d20f8739b1233097d9e8e1a7abbbfadf97d3f8a51928e1646f4db968fa042f65a55f9e24234b6b29c85dec49a1dcd41ae54209bf22d53f4b95951cf22533f79bbb9bfcf6575c36f53035df8bc29540881fdad786e6cdf530f79db7b9bfb87af2f760f0f4f778e5b4dc97cb58bcdadd3bdc383936f79001d08fb2504e0d81d68fb17be85f071c55e4a8ce52aa6307207fcd974338a1c1efc6bd0fec5ce184c5a400a9d8ef3706d4db325f14033f0c4796b558c5a09025a80f5b14b84218fa54304142ee59d3a16c13b815da02bc6934b23a4ebc2061467dc0c510c92b1ead86681b3762700db53ffe11e8dc57e2e62cb48aeda5df63ea88f01550dbfc604672871ef728af231ce7d0459f501caf1113b955338e225288ef8f7d0f48f7b59ba4ab85cea2a01abb7c1058e1270dd518288541f60aba304ac1c2560e528e1d0d5ce11f80595edfda6fa12b57bc20d45801ea000d5dd1f60e5fe007bb417e0d2fd41e90a172f7683804b3708b8b51b8476a76f3c74f9736e685242b7bb32506608d667dd4a69b08e3d31cd49b7ebb213417e79922aeeefd9829819192691085fb12aa7422f5ce58bbf1ab739a16d4fa5e5093d983ba1adfd1e3fe854922fbd4dc259c140eef3b869b7563d9c9a1b4b3e5c550fa47a07eaa877f0bc43d3ce6d3acb3a8b0ef7bfb89778bd5dfa08dab6cffa9b642b779bdb72f63adcf961055bce3628443bc334ebd031ee9cbcdb8f29eea859efb819fe328b339c77322c42562ee04fe4f3d09fc279ec037dceb67163aa28ced29df9c1d77dd284da19c609ce3b2ebf7f7494ae8df08fad1e4bd8370f209ac30ea661ebee0e177677ded7adbdbb0bc5420dba640f71227ab9c08928145e4ab9496bc61da1f500245930e73983fb35a0d2830af7452d5da87c77f414b50edfe738ebec956e5dda69723e51ba9cec565ea58ecae9c90983db1a724763d619a6197f391ce3f01247fe0abdbfa7cd8e1b74b03c211ee8f0eb400791a8a334e8eb942102a7ab013d61cd2729c1db184f5dca76e9c6b68295458810be2f58b7b9c61e993e5e544fc46787677d3bfe26648d77a539852f233a947df3c57f3f1de5ecde9f09baed03185be8d6768def314a365930cc58301250c682a18032162c6baa19576a66ac661ec4ac661ac4ace6aca96654a93963352741c46a0e8388d59c36d5bcaad49cb29aa3e08ad51c045715fbe871c9b48d5b316d7f1fbb764bbd2f339cddbec514b14d436de4ee9ddc6b7d02d5feebe7f21120f72790bb7108d308e7fea8d02c9fc9da9db04309476a938f89c1debd34b9bb178abb7bd18ebb7bd996b97bd18ab96bdac1cc5d4a0d4b279f4da769c63ad3e12ff9ea4c821dfe840d3b5794f2fd25a5639c8963cd33f5a2d591e74061e3d9a0b055dd13885afd2762523aae3a41c509a9c20a02fb8e203b8adc15d210acb3da5c0eb5b2b998f98ecb7ba74fe2cef5380ec73c7067e77a8c49672c1d2774d8df0e12682dc6267557f256d84c14365226db71d77ad2ebad187485ce008f62d24154b016f115261d1a4f3023d2c5a80cdd95492b54460a95534dfd1df7edd133c6445ee18cfb26eea4c3ce8c483ac1124576b04d10cd17e3317057460d78480e233209885648f361ecc67889cff2b0e52dfda18e21f4c617ffc336be93101177e13e968788fc6fd9c1da707599206d6e8df08a9b2f488eecff67eefa9f1ad78df8effd2b1c9749edd68404386ece8c87e1c1a343cb971b12e6b593a38c8845e27c91f364854031ff7b472b5996123b71b8c7f5ee072e71bc2b4b96e5ddd57e3e2bf0091e787574a2ff743ee193daf664360145c96019169501e4f87c0455a560087e8668a4ec1411865bbc57e2329ce28c2c95f4621f53cc5d3c2b99c90f734418f7fb22903fb2acce204aac79341e5b2140a260e5501e165fc629de16675b8f349e088f113fcb477b22afa7519c8eb491fbaabf6df85c045398e079e69fc2d5a030b422e8827ea1c6fb0566e9ea774bbe968893996a74b335245ab9866cea4369a3957b937277b070dc225aaa6b7948617f541ba6de186f304ef26c315027e24bf9482d4e5710f8ee41c9b4559c43bfc224352774369522c262eb1fedeb2bf95ad207464ceeca23939dceb44637191b21513a38cbfd3ad79e46f52002f7aa7c9ca3c442568813466790266f893c14e32189261b75323b9d998be0c2bab712fad574a52f35aef8628d1c77d3376b15d8474e618d1e4ac01fe8e108fefa3643c928b12b0641f59e28a0c69b871b832861317d51d7e21e327939e25a737ee357de2a7af35e31e1b615a4106b0a2886dd3520c6eea2c280e61f8faa78c294453db4b65413c4fd3c19786a4bc2ed0e7a380ffdc8715763328cf8a94a8d3f318f96e5c863b90caec9c0cfa97833fd2a8a63556c89546b49cc9aac958ef856a6b3574de738eee72a21a650aa1155d3882023215329f2134a75fe1b653af9239c144430245311432c590cc1892d2014e0c53dfdd2edc1b2f95b63695a9420bdbee01a294cab865c361dfb24a3fb7649c56ae0b24d781f57e4241154de053d0f778c9f70310878791f1ece057480354089a4c1cb53edca5494611817ca5de745cd45b8b25a916c264bcbc9119199425083a02a50f987754b956a7e57cfb20a9e3f67df3488d67b3a975721fd39bbd79615d7de3525992cfbf233764cd661dfbc570cf55597cad02983bd6c61bb8a59e9b4a7383beb1bb1e4bfcc864c18770b11b130a2e3174b46773c2b8927dc4d8c483fb110c5d979d63ca6232b22d694c67d8a93a4f18de44aff6a9d417e46025e5d9e2e0e4e9daca967c564fc92c517f9370c9b209e852190358867fd8115b1bf70f3165835642571a321eee6f87abb1751c2aca708cfa16591de67ed6897a09ffc1b7e48e2de0833ee291099d2cc624b26575afc2dccfbc89d8adbf35c1276a6e222c3d626782eeabe2fc0a817b8f0a5d1cb34327c30790937796980b8c91b054894785f91b4b1aedc7b9ed55124fd68484fb8f43478e4d24fc12397eeaf927e30a4fb5c7a103c70e9ebe0814b8fca10ed6d4372c42587419b4bce8336973c59d56ec7903ee1d25741874bdf071d2e7d5616b87b3624cfb8e4d7e0994b5e06cf5cf254c7c36729de4b80f8ade054583be7c1a9b4762e825395f072a38c23ae40b23bfecedd9b63e317c909c97fd10accc05c72247f9e772d2be2bead47d95f3a17aeb755af6f89a45e68a25eaf9dd7eb73473fc69d89adf5f991f7ceb00111ff7b407079a11affbf3b43d763691a8998567778e77a3556afd7a8c863de4ad39ade609a7e7d17123e7a74ce37c14c6978f69c60ecf7ac5a4a205856a650b57be041d7fc99e28f6469ea10011059badf2457779b07746fd70674336b197974450212590cec12115a254bd5772e61db8da8e2dcee2b3162b36faa12051cfde4dd6401de4f3e0a88c84d9a3b4816ebd6a627d72ad290f6cd8adca6c656cb3b76f294239aeba4ba4e31b1754f56b0a6efc8953fc78c1688f111cf9ad8f7b3868de873ebc0cf06e1c0230dd60c4851a970a2e5477df12ff352e1bbcde57034c9c3d1242f15defac87874451e29126f2753d42babe95ba6256340b232af0466fc3a326d41daad33728b2ab95e427bfe55c554d7b22b10ffafb9040634aabc517fe845c9159e43c1935fc308eaeb532f269db8df1f637ec44803706a542c4e6f5e4cdaa89029feb6e4467a3139e7e35310ef30d9f10114043995242078ceed1c7c835188e92169c4a2ec1f090dcbe0de210d8a93d998f155547d7ef3f847141e27a788a1db9b0bc8482db6ee5acb38d9dcb22c00a541c16d5544ae96d1454ecd746dae6c75a6f65379721714e67d356b94b79a6545ca8d52bdffe21d2721a6fc16f24bece067d6e11f6ee2b993111adede5c64d403838509202ff81af80fb82d36ab98b0b1190a7f0dfe7d7131d34ace1b0878715487c08bad7445a8f7807aa33e1036c21cf4ed191d3b056ad5dbd8b35dbb6caefc5848b8b83261ab54420f9a986e4b103e6baab4a882674bfbbd61c34d0e0b6ff20a1096b841df87bf123a3e1c5d279a9183b001be6e46757c9d5836ffef00bb252d268a6c423f064596956acf715c215d0f00934ff102022ca69015f0f8e1b9fb95d05b1fe0c4d97625074ef82bc7e37107f513877b6e23e1fa0c8391747de6c148b93e2752a083fad2efb9e27e4f273f2c9d9e2bc3e9b952616561a40f94593e85826851184c6155c5b9257e9f5be2f73f26b5024821645a456d9aa635b8a657991ff1d9b4c1e5d17def243398f7fd221c00433a08a0a99bb99f7d53d717afe3a87c0a5d971853a94b1abc4dff49cd904cfb816144ef65391cadbd8a208383aa591cadbdd566f37a6776e6cc5daf5dafb71b48ccbd7abd36acd7a9a30e70cfb3bdde8dbd76a6f5fa14de50c08cf3e675a7dc5f6da7694de94ad3f8bd1eea70130f75a8e00440f37616a077562758e6dd1f4709dba6f1bcd8ac97efe1b584f5b8fc556e70589a44f8a576d2c27b3fe30c65b12f2ba775505fec4040dd34576d4868b43c32f4f9dd4dc8643ad5500684d65a92fc7aa50d1a1b489d98a13197768c0b4dd3a6fb37a74823ff0538f82b6d87a97bfa2e52d7653ae3dd52666635035ea10ca37d85e740b65b3402061ab5569baec0a3aae527c3a4c2731885474081062df8aaad3f0c9d6ae4e2837f530e9a58e5f85c974154075559797f0abce7f291fb55b00b758bc4dbc9f615552eeff499fbe64d3fc67613e084dcfc7a04f3eb90387bcd96ebfd12c79051648fe31e1a0fe284d9411048fe5995f1c18fcb65beebfbadbbd5e794fd22a27fcece7f5abb9f9d23ff5bc339f2773f759bdb9feed2dd6e737bffaedbdcfe7297769badbb23f8087f8e5cf775ef6d6bc7750f670d24dddb82f287a1cc7d2a189844b8a611efff0bcbeae047ffc5c5d9149bbc341616c910d151e1733128bbb6afa434636bd35baddfe6a4827dbec40df1cff5ac0e7db5fdabc9cdc95ab9a9c67e990bced637b8387fa7951d0f5d6a52410a331611b3b1f10ab1fcac4b22d922052dbeeb85710f1efe461f6788fb5f5ece43c7a6710c456bec04d3a7a8877f8b818f282216414f511fb198d6ebea63c3380b225a2fcb84feb8312314f7a38461ea887abfdd6eebe0c06b79bb777777eee19f7676fe6c09debb4b349d46a47f7b73114c50441a7b1835f71ff7f61abdc18c8c1a43708fff170000ffff4a14d452b2b70100", - "a2181d565e6f7442443a75a392b692b3": "1f8b08000000000000ffecbd899223479228f62bb9bda2359b05540389a3504523ed2550e8ea839c9926a787e44eafc9124002958d44262a335147afe9d9d393b4ba567aba4572c8591d4ff76dba6532e90ff411f301f30db28cc8230e8f230f5455377b76a7a71019e1e1e1e1eee1e1e111fe370f2e9d307203ffc149aff5200a76e1dc891e9cfcfec1e3579113468fdfcc76711cf88f4f83f96ee3f871f478122c9cc7676e7cbe9b3d8e623b3a6faf82c73bf7f1a5f9d80f16ce3fbb09163bcf891eff8399b773b6a1ebc76fa2c7f320741e7beeecf13c8a1ee71f0ee751f4a0f5c03cec1df77bddcea07b383fdff9ebb4b8590cdc79e0473c0a6d548e7afcebd603dfdea0d1ff75ebc1c6de6e5d7f153d3879605913ebd3e43f93c98b496b723a396dbdb0a6af5a1763cbba18b726d6f4f1b8e58ead67af5aebb165ad51d160dc7a614da6adcdd8b2acd6c49a58e49fabe2cf79fe9793ff6517159f5956ff7902f0f8796b9a00fc2eff5674b61db7be4cbecd2d6b9efc3e1fb77e9dfc762ccb497ebf41f84da6ad83b1656d26495138697d47954cc249cb4e4a6c00a1e2afaf2debebe4afdfb676e3b4b69d76114c92027a68193af7e5dbe47c8c47596e5e322a0663a66dc10397e3a4754191c9acd56129b441053763cb1a266d2647e3d6101575c696354260bc49ab3f4ee72eed231a53534ea0ba4250bc71524e35c946bb481054ce69ce4809a8036a106fc61f20ec07c2d46a7d83ffb2ac56676259232485c793b4dd6a6259112aea4e52bee3a4703a4b798ee07caa206177a43512002957beb24e130df32ce1e9a7cbd6cbb47a0af926ad78b66c99536b5ae0bf6c8dc6e4ef592bf8c27a56fcf6c72d77024847faa79bfe397dd9ea4fd2d2af12ee9769bfa4913b4ea9173d49942ed1b83f269ba4485e4c6819ec3f2165d01fb7220992b6008714f1218878241f4341da604cfd19a0816dc7ad8ed6c056a7492d27af4431839872d31031e2d9b4658e7376cb467ff612699eb434532e675632d559693ebcaf4852dc3c01102986fa0d40920b50cdda901a2ed4d7ee8b4c8fe7ba6e83c84520b0e6c9f5669c4c1625329d0900feea2ca9e44e2ceb0289dadb492b384db91ce2c1d5d3e46351e48f5b9da709713301f43225ff12989e7421992c13a24ea6f95a3a6b7d4d8d3281f28a64db255ece8309b410ecc696b54b9a3dbb1cb78648daa3ac68da1bb7bea1e9f09d657d977c5924fd9d4d73aeb4f24f93bf4a57aeef3821201659bcea700092bf9ebd6cad27856e1b93ace2e4ba849ad72db2505e7c99b39b95b3d3b3e70431211683087c31b1beb500d45eb01cff1d16c3eeb858ad0b4265c42efa7a05f4ffcab25e61b2ed2629d9becb78614a52883651cc09a14ea7194fe49a611a67c60131d7b9e990989c57fc82948e7e33c9b8809fbf44cc3699c5628e1933e91ba8c95a6ead2604ed64545c4f68a4aebed2a41d5e3cd663485da644fa3231a1ce68c1c0242feca7f34981425a052f0989525d21213f9f24b44f8b78c5f19d40593e1329cb322a14a4ef1c528c17d0b2328727229df6b975f62a47d7cac93c7d9e03b32c72bd8ec6251bb88865296dec227549981bebdc44c692158f5ba37c6ad799b05f085407c51237a75c77d12451fec3694ed0ab824cc3b382639fe480f3ba166915b060cc024c02f12a63e7115a6c46607fb9ed3fb91cb7d66784c69cbe2416ea8b0934a7905027fb81fe6fe85dd95b640f561ff3ab7ccc174f13c8af484b89079b0f7ca53bf0001958576360e40138f2ab4c5627de3b3cb6cd7b3c368d791b3533b63533b6403ab6d15457186bcd5b846ca86f0a95369ca43a8ed3c7808361d1ea9f25fb22ca48ec3f4b8ab22a9e0c6461f1e3f59db23fdd53ba28013dc98a52002f2deb65f2d7ef5a6ba676382eb64769e5917c6927c0ba84f13901b0759fd01b2ff719e1814a10359fd0db49bca18926d06c8e0a16da142c348254f9d50bb2df652b82c0e62cb47e9a7cbd52b350f494de6ead41bec9ed8ec9319a64caced84e923d2b6d67a42c70763e6e452f09c49f2dd36d60827807373f6d456719b6ee93a4a8f7a4d539a3f10299f87c92e88109c571c12261c11d498cab31b7a52ccc73eacb81cc2c9b2c5beba9b03ec1cfcfe99d8868090cbea497c04b64d20936bf05238c9ec2a379336e5d4d328f4a8020c6d9cc8078aebe14e249cff7afb9a5da64bc0f37cf55782f53998629868c8a11f4a97f4623495170fd2c6bb7cec6eb3e61dc4217a734aae6a9b8afa7c24fab671234a2e7341add3a0402bbc7041aea1028918e3ec26c90112869e766be6f4d02c17d3d157ed2205081c6070e62440ce0a00e43a04883402b31669198833a320e5af11cb46209143004ea8839a823e6a0d1530981029a83a647e9218e0b2aec1db5a74c753d8de532f583149e86379304dad92b604f38bd1cb7465f582fa06fc80e831c8f9bcc72190150d34924d02f0e9cf0994ef6fb5beef7684affc65620f1fb94fcfddbd6d5696a7ca6db4df677f494fe8de7286bbf44a239250d8864a0662641bbe799ab9090aff4cf7ece49c7e384a105ab30ebf255adc2d199c62abcfab5de2adc7fc9adc281d0054d1d0a885661ccfed42a8c490a6bae977aab70f05b6e151e327277f0a55a456ca6424cfacfc4caebb94cbbbfe07428f65e112a6237a551c5fe5bb8af17c24fc10b091a9d2f381d5a9d40b0767f265efe9e4b74282610a543350904f7f542f8498340d42afc8be7204ac4000eea3304ea6b10682dc6ac23e6a0d1330907053c07ad5902450c81fa620e1a3d177e5acb0874c570506f924cc333c8c179f652b0569a3a1ed1d113eb9968b13d401128c3e2db45e18c06dcd9e9c1597e5a8df748857ffa1bcbfa06130c9ba4c43a471c78bc4816b984676f109cdeb875c117b95f2445456f31713a972d0ee60bdeb5fc823e6c0bd3d00dc81dee82671dd184c499dbe687d9193d7dcedcb08b8476cd14560dc3626fc6e9a118854c706a71de1d1908c9c15d41dbf3cc0f4478677034cfc5c4b26e3225b8a264fccd3859bad93afde709d71282cc57e97c4156f13330c1c4b2ae509d6b1118aa8a004c6d6c3007505ddd30606e786c7630188258afc8899bbe6c5d1407d684cfa698a9cdd3b4aad532cf0a692dfe349f1486e633cb3af855f2f7e35fb57693c48c0e0af0b9c36b3a40a7aad357a873f70c91e02cd9b7a50d5667a8d6595aebe6896545a8d671562b2f9a7a4fd35aa32796d547b5b64fd35a79d1f43aab75f0c4b286a85698d5ca8ba66fb35ac19965ad9fa23525ab95174d8f9f26739cc24ac7567859374f789893d460b7b820855ca7bf24e4ff689c10861de5dca28eef0909da9de67f1e4c2c6b778a34ef6976745978273b45c535f1e799656dd060fda7adcda9451f1547cca925064a9c17dbc4e01243a1d03054f4101664ca66c8a30d88b52b25467e60f915bc569539db7c0568c70ded9e447f9e150230293632cf0805753d6edd9cd1389b05cec5d9e2f1b8b57baa1c5b2271c52c0c0947ee049cda02c28e582ba779693ebb5fb1bdad33bb64732ac52aafd739958ef20eb09f1ea727e0605807605d4cbe8283a58233cace28ac0a9e33d65599643da677f8e624d3207ccf7418263840ce36b38407fc93aff2fd7ca2db8bd306282a90314e8a68a2296fcda5605cd07e67429ac481a1c2d14cbe22541be58d3127167b5834c43a7a62810663409ee74cfd31e8254a1b7ec35b2169a894a845a1084586f1d94be44b480b8b539ef3491a1442451795e5e99710234361d02c0fe2989d1779cd5fe77f7d99ff9519d0bf4bd6afc9b438947c49f890c2496b78466d292991863501b1773998289442ff342f0dd42a0d0771309076989527a92f9819c75d607a9c198605dd5f4a67e002d1785d605e84336d278955766f668071f3333380bd97cc38ee6806468c0c40335048907b269381837b240307521988ee910c1c08b5d04b600636521970ef910caca432b0bb4732e03e4b9647dd19d87d9dac4fa219b8f86df2f57eccc01a9d6b8866009f89dc8f193051b0b6ee3a607e259b819bafefcf0cf49fc96660739f66e036ed71c2644eed34d0329f625bf11d34c2b1f3e9fcb494e56d5328e958dec41ece9c50a539cd304e85dba17b9ade7a08e89d4efa6761fdcf215a51bb8ace58e8f084e2c7bf86fa2b2aae0ba75aa7f0a4e58e986998b99836679675801d644fd373ce3eedb0cba3a676d9792d729dbe45a1005460dbe634736dad32d7d66e9a41c4feb5f3a78256ee59e636bbcc5a994f2ceb02153d3eabd8d7e829dd6acdf715f17de183e9c2453778da1aa186a3a78540e7b7d4ae2728169ca28c39a5430b863cb6ee930ce2f01942e579a3ad76b9cfed286b75f0d4b246a8d5f5f3568769d5e75bade856d3eef3f48e907083cfff49707b04fe095d3b494f60a63374292f3f9ba1c2591d80e90b99a0ae99058cafa938697c9cd955828fd144f2f1604c3832278b342a23736c9e67774c4062d157e7b2bb51ec91c79754d3e2e215aa47470ea2d92c2e8324c62b7b1ff0943edd012fe55d67b7b8804510f4940aef8680b12f3d7cffa1d4d58b61d906ab675c14f288f103532761c184f62f532d5d2a34e677a9a19dfd5e30a131b3f4a8b7a87f35a5ebafd0a5390126eb67c9472004e8dbf453f1fb82f9bd9a59bf267fdfbc20bfffb665a2639be2fc92fd3d62bf7b6312e0b2153ca72b442f122a133144cc02ee8fd3b023e2401a138338fb3c40176da9f0636c6550a7a807d9c55e420a851f290c56741cf88b4478a6704457da377f909c9f98acd993dbe1843e72a4f0ea33e3783c661f1950dd33a3ec23bc70d5bc76b06c5d41608ab068f69a017573c96482a08a9396ed245d3ea8186e1c1a2d8c477f02c4a3e75f2f98b0ea22c2c09fa497fc28bbacc307fc1757080bc7ed295d14675617180a965f34646cbb9cbb36acc5f602d0dc5f93b390ca0ad638b0c9082e17c50228beb9a5cb0c731835421f7115cb9d4d984c1801d40da140f3188be2268f940d37e2d840aa1e967dc5cde1c456c35c0199ea5450c68e7a5e60914a3f1db330e5b87037e1b870c473e168c268ca1179488ac216a68dc8bf0981c9096fb257a828828ea612f93f9872f27ff14426ff176732f9bf7a22917fe02e100e755affceb23688afc25769b4d3cd4bcbeafc26291afc2625332dc3a8d66e9a93ede0d4b27653c41ad314c6ab3c2008ab197a1cb95f2e7f4cc6048aa6f4d9f476924e31556bc870c636c38f2e7ac2154500789e3d2f78f6bce2d9f38067cf0326422a2836ca37851be215253799122bb8f0e6d4b25c44d9375399adfb8ad380d397c539ee57f0c30a8441cd1c1a5fa06085b7a7a97452c6c6d52947a4039e48eb538e4837539e48a8567109ca9ba404a78b9e7045577cad1d3feb43a08867041c894f49cb8a5d8601a1ee4f2c6b85e8d43d4d679bbea59d993cee94f906787e68a7d194595fe16d226155e17b096bf01b3eb202bd533be609a280be1e3f39472251e1dedd085d403b3f4bd7094af83b534689d1f3c3ac547dc14ad57941a3ba9da46fd9c01602f51204524cdf72812e2f39ea2dd1d643b27012f60f07be8fdc28f5ef78af72777e115aff8cc68a20121569ba7a4ed7d3b89618a130ca42b0ba93d49f50586217c89f91f91b322efa8e35bc685d74f10cd0459989a67eee058aa5dc4cf3e6e669ce7e9bd3bc745798603957bc00dd2172b72ccd4af2c3fa0bc0c0d48b4e91f95446329f4a2075b89c72febd0b4abd4c5f92810cf43e1edfaf9e58968bf45c0fad073243522c0f33e49398967d814132fd8a29e1574451e16a0c18afe7e364cba4f7ec435ff7a6395e69eaab84ab5f59ec2d166d64f1a5799d6bf18c0103be76472df0267ba5ed6a42fb1920ffe32b80f8db8cf70e9e433acee696b2cc53472d5d577cd1885fe0b0837ef5dcb2562f10895ea0b77698f59db5ad418d9b43ab7d4d7df88c714f43608bbd1fb42d80a634382b7d4d1dfbeaa86beac3dcf62ad8817ca9408c28362614884e7bd99151c2cd51664940ef4f59b2982c6211e7b73043f6ddbb8861559b1bddf938b1c6a96951fdbe627e9be8d28556946c944dc0056bf4531b6c93b53b2921ba420ecf4d7e1ad89da47b23f61e92f8f79af9bd628614219f699007cd1f4dd2c743056fa2f559ff4fe1f605769ac309b765309f30fede17968504f78bd601f2137f69595fa6428a7effdab27edd2282ede4eaa890c1cd84f6529b8cb9483c5ed1d41d903c061b3fa6485c26654cb0f597f4e38ad1af98d7322ec6c46b8bcf96adce0e1514ac3098a40e7ee05a4fb1d6bcc9a22305444bd13978425884093ad2a5230bc967af5eb11b4b7f9c85e86428be88b353421d7c08bf3b838f78f16f02cbd4452a3a31271e3143fc49bf743561c48f5fc30ef04affdcb20e10df5f7e812c72c6c8bb414505530d26ade02979e0dacbac4ae27114f60a0feeca7c6e5943d4559875459dfc36d8d5ad8c6ac48f2ae04775c577b566bb1a325deda8aefcf435c51a3b234a83dcee1e098df152719cbb967dbc1a4b3e6243899adce144735f7231e6f625fd49e57dc9c5584359b9538b7e20876d5542a570b0021d6581072d3488530e5cf1faa2cfdbbc6bbec81c7366307e918c328357530d33b878f08b94e6809ff0ab092f624f98a0105c67f785650dd1aa1efe2a955f0ad5352facf9f30608d2d138c58916fb092ff6da38055f585607e1e465381d3cb3ac83e7a856199cee179d863c9d363c9d763c4e2b16a71d4fa7214f2717d0e92c4ed19839dad930a65cf118ed704a0b6671229c9f6f523e090da1023692015fd4e1856ac3cfc08edf5bae74f696b97f137c729672b33fb75e4cc1658122456e62f26a927c85639addcfce35b7c93cc67b3e6e5dfc2ae93200f51e65deec98ddc3057ff5e6027c60a6988c11b2ed28c28c4e65fa93a35611e081e3b9a883cd1bba28d98ce2c7bf8aa2b7e3f444822aa28256a67fd5621e9a332789fdbde78762a7f96c4fe54fc2d287e2d57c72a05bed1bc85a09a043e44b64f33d2b15a574705ab2c1d5596261533b66bc27269fc440dca3e139eb3c4d7ad7f19ca12eeabbf9826f13b12ab270bc45dbf733f8f99f83a9f0a4027cfea7f322198de2f99f3ec240e311be0585e9e472d21a31f0a1e77f3a9bb1f552f0fe4ff4259a3af2fd9fc0ce7ae110bd1a8cadaf751e00ba5a4f928a94eff4e68cde4d9bdf582f54cf935c3ca5c2eaa987957e93600ebe5c32429f442fcb7c9db5cbfd00175f30ef25777e43be24306badbf12f6d57f334ec8057f5b8fe989a567f3226f993fe1529d46f0436a681cf0b32a0c8da8275c308da8275c3469043fc58769047fd3a111f50ed0073e621edb02f868c7d0e84283461b311fadc57cd491f151c4f3d186a551c4d068f452d85720e1a3404aa3fe96e6a3696f82ceec481376cded22a7e768313c6be2a8e1d7645e1614edc4832d22109156d7386a6097179da3e75f25f4a58e1acc67d96934337e0f450a500bde0518b546e540d84c9957f67e4d1a859c8543059376ce684bf8cd04ed1e44010717105dc20c852200de3da5e561784a7b722fa6f477977a17d947c6c6b3297def25f518e097a509afe829f302217dfd81ca3db51e37e4d22eaaa6cf4c0f45b9b6166914cb77d0341286c18689c9873e652ae00bca5174d63b4d8f4e0925fbbb44ff8c1233e31409d6343dd2a04d893c731a8e32cacd92693c496376f35ea6bdd3d44f5978a8de9ea651840713cbdaa05a8f4f5b6b6a9b7b394e7d9905a4a3d374c744f036a101aef26f3799ea709f586ce2b6f4743a1fe1f1296242a26832c8020f57a79615a15ade34e11fb6d615e9014df646d8971580e8adf36fe8c861da9db41ce1199ed61e689da921b7ecfd869bb20d767cf28a1d99bc02cadd43ed897154067f7bf7db64c2385cbe49df47dd306e45e88190c2d7b1e22311f181413643a1f0290be16b3d19ab59c455cfafe883d14c558db9638f57640496e83623950166c8066d516f8ecf2d20455e91adea328b7c2342d8c893f3e99b262a6c980a2e5b613766ec93b9f522cfca634eacdfe6eaeaac94d20cc6d62b04e7ab183989c59d048cbade806b12dd757e248b1d3ad05164a2dd2eb20b5989fe9efe2e3dec2c7eaf99df2be6f750d1fe80f9de617e8fc6f2fafdb1bc3f16bfa1025f157ee6a45cff2cfe1ba67da080a782afc29fa527db3f5cbfb84dc8d6df29f063c77b3396b767f18fc6f2dfec7858fe3415fdb1f8b2f0ae14f555f3c1c263ebabe8c18e97e55f96beecfc95951776bcec7cabf855c56fecf854f3c3f2033b1e963eec78587e50d1839d0fd57ca9beb3bf597ab0df59fe61e9a1e20f163e0b8f9d2f95bca8e421bfd293ea07153d59faabf4958a7e6c7f2cbc2b467fb1e3bd61f5194b1fc5ef48211f2c3e1c3d15f054fccdce175b9fe517b67fbdf9adce6f2afdc2ce2ffb5d35df2a7dc0f213fb9ded8fc59ffdcdf6afa237fb5b055f454f953cb3fdb1f451ad57ecf858f82c7e2afe53fd568d47b53eabe8c3e2a75abfd9fa2af955fd56f1034b6fd5fcb1f463f165e1b1fa48d55e452f95bcaae8abb277d8f1b2f8b0ed2346bfb3e3d56b2fd6bf1d161ebb3e29fa53d94b2a7dcbf21f0b9fa5978a7e2a7dacd21765e74bc51fec7accf2af4abe55f25b56de59fe50c927fb9b1daf6a7d61e757357ed57e9b6dcf7e67ed0d95fc97d5ef2c3f70fd2bda97b50f387bade4fcabf4b56abd52e95fd5faae922795fe57d963ec77953dae5a9f54fb59f6b76abfaa5c0f55fe9792fca3d20f65ed0b153fa8e447b5df53e94fd5fac1f6cfca87ca3e85f9ad586f59fdc5c263f74b2afe56ed5754f3c5f25b59fdac9217953e53d9cf2c3d54fb45153fabf49d6a3fa4e25f957e528d5fd51f3b7e165ed9f559651fb0f65d597faf4a7fabf8a92cbcb2f68fcabe51ad27dc7c94dcffb1f464f99d1dbf8a7f54fe0f953f53355e957da7e207953f4265dfb1fca8f2cfa9f433db5fa0a00f0b4fe58f2cbb9eb1df597e50f98f397f9b62becafa9755fc5076bd57e95bf677d9f55b650fabec41569e55fe4f953e2aeb8f549d57a8f481eab76abd94da77cf7e475f789d2e93f654343e11ff95a717cadf41cd9f5ccb22380ecee83abda7f84c1ccc10041deecb8ffe0b34d9009d22047b37b12c334b2c87672bc89e989a1e978fc18023cec161c037006c2a040ffda9f522c6dd0779a03bdf888274b677146443c7e4101408b268084cfc2b45a0f7e3ac0f222812650824f2d111f14a13062675ef6acd5c48ec33d749af9807816f5e58ecf33c3713ae68753c4e23c9b22b94ef5b3fecbbaf26d3cf05d34fc4f77305f43362fb8918a9ad1b5647b1eec124655d3e0495190e6660f6527f91f92e571ce4bb3845afc9b73cb75df4dc3ab5122bf25927bbbe95ab5c5e1714c17e4176af3c13b4c66ed1738da88021f6e226f408001152c83e6640eb59ae2b2a04cca4956f429a7cf5cae0b3913b90d657be4ef412aa9aa372e6b182b44cf15881808939a12e384f73748187f9978c6cced2d7ea2899a1235bbfe6046603bc16b63ab5becc652841e17deb87cde1cf5e80db30fdb87c3f6bbe9fe8f184e8e7cb84939fd2864efab45f26f4cfde4ed2078df3c73ca64793743d5c650fb74fafb377230a4058a208aef9cee29ef840cb309563f1427e7dac5014e6240b5b2ede8fcc9346e2d492f1d384f1a99c94e74f533554c8a6e0e1ae2fc97d930b86daafc52927e0ec12c52b707996c9ece58e8935211f4f63e5ff6a4212230582297e911b768f51585e89e7704a5e278426840a19dc95b5b40eca36d89cd25980b759e83ca13b77a4329dfa99c17503c696d3b773a7de44984864fa2cb7af2c42cd3e279ca09db135fd128a6e7d9ec5f94ebf2d76424e2ae94c3e6279b61f28eb0c5e33a96bbc9b89c53e87c2bd8c9f3fcad9612a53d70ed8ca2ba6729111643b2e649ec3b1ff84cac33c0d33ab472e8882a45f9c86584feaef2b90f553c4631f64bf53689ba20be22a6813b978f05ebbe8997dd66f7f3d63c928ae9d604ea0e6db651520c1b95762510172ee3c1368c5aff37560330154e51a3f17403e873c9464732c0a5fe6ea0c4ca070943dab43a499c8bd229c050744d313ed2296485abc7c669579b88c807e03de9a625f36a35238e347f8e08c4e856ec209734705b744dc34f1af0267a5c59fca54b2bb028f83b1944b13dcb1c925c42ac57d739aecaa6e1db767d6424c5727c56d772fe96a6ad1752dc9877737b8279acbb6e89cde70cae600b226e9f4b913d82aa50cad5d66ad09eb2cd3473cc1172ebcecb24871450733c4aa187261c8c6130256f1eae89945274f41bf9954cf9bec0a2206502884cd19b9c2fc366d0d667f0bb3d6a284c31816411ce950f076e2d7fc42cde4c6c3f5884c5c45bd22f1873f69ad3242663e8cec21b6ccfa5b67d772f2fbba67292d0a8f087e795bd0832bcda6bb82f4683e8af5138bbcf7f612dd51ede7b47842f9ef5e22d1c34ebaeb49fa16fd45f17598fb022ff70a9959f38a2d257e9426d97af4f18df1d35412be23d79c9cac1799d992dd619d022c9ae75c3fc8d32cf1625b3fc560b94cebd8ed21fa8af7087056f5dbc674cdaa2bfa5dcc537a2a0bc3ee666a512f1cdde40e9bfc26739f34869efd552b7a2e23cac1d37d4e5f49fbf95486e908fa7a17989e4f92fecec873a0f0696bf724dbd172f2e79e25b529f973cf88d7e319f91b3e21ee904ff33488e0d33cf060f8f757a7d92b9919d8456aebf6f39709fcccb39b2a6fd0aaa5f68237cc4e6b77765bfb1d93d969b1afabefafe7d584de6961e548edd903765751a44cca6f74b23e3489f36af2559a7e0251977acdea2c9308b470e176c7d93e54abfaf4987f0c004e6531824c2bdea79e1d61c1406e9ee70ce53ecf4b89fbe53702032efd2b2a8ccfd124bdcb3eb93e4d5755776a591b944d259ca67ed6e2d9e9b7d92eb97881e27c921e8d503bac1ba6a8ab5b74c5bb69dd62265c5a03e5096e68abcb2a9e53c1057196a0a1261074d5da9c70934ce7ab211eaa01cf3f096182c586b8995cce6b73831c82666e0c9d4fb08c501cc6f103c165df01e8964cd1c03abaf16dfd1dbf337f332eb266104c9ebb325dc60b8c0fa27f0dcb38c7ee8573cdcf9082dd36d84b57bcbfe3650750742e1dfee452af68c77b1f36e31a29b7400d03e58783731ccd61cd9090f8cb6fd3f77c355e6feb9f5a8d2469587d614d9837d16ec6f4aa74c3520b4e4ff735345a42900a6b0fbf272a1e640a8678bf07665e97794e971823fb9e6613e90e0ea8171696e9bb99a23788fa6c022149ba8db2e90ef01e927a8368234a77703e4e333549e5243746880460346199c7bff923eee94bd201025890b3f4f96c79ad659106307bc0faea9466c8217b80526c3e8ff9dcbc04dd8bad33fb2c76a1a3985d6b8aa82aa3233d107a0aa6e7bc9e85de84bd410673a1495e027f7d0d89131ac84b1c2b36c9ee8231fbeb7cf7dda76a7f95ee47a0fd76e7cc120415106fd6e7c602b16417cf188a3d1b61f63aad4bf338b04267933bcd5701c87d1965eb2de44bba2a2cc5ed24357e6b02b14bbe58039f61ae20a51012011dd90b72eca28e5748c51ede2af6f01475a9f8af157fe6888f2c3b8569b43e259e57c2e77b51d175c6e7791c13c1f84512503c87c74cf2607470ad2c70d97cc33be0c82515a30b28d52f3c0979fa9291d8ed5a1cceae9967c503324d05766ae99e19123d05fc51fab2d8e472b654386ecd859c079c7259f99a6011918fd4defa258900a76784096a1254bea675873c0448f4d21298006f2e830466be59e03c06601a742ac86cfa8adc2b24cbed2e7b1b73c8060e51019043726599be448acdcd42d12226058d63b10199011bcd443cd2e5589483dc654f024df1895ec155c342d15e1456895ba800e2a08ed8826d544721e23d52eeade30448ceff579c6767f257e9cac49b7ad33c213391c382565a45522b6a4e3a640461b2d5188eb9edee06c57cd0e7b46869f412f63eabfd1a36cde0606e8d42a55cc945010abb53c8c40db5702cd275830aa20ce817f0126df64dd93898b28133e6988b6936274c4cb363d18ff61123a5fc411b56684569a8366ca473c14f9b094d26bc8e456450e4d5139a724793d40ea7d3ee660747a9636dc784bb4287f960e4e90abd8b49e1bf428f681214324f19672d854a9fa5cb2b26429958daf8d05a6cfd155c713c290f3020737a61809b5cdd1e5500a8c2d014033419802e8fe1158fa128a68e7dc29472a61ed00638b5033aa5b1b8987258ac9e73e248676c9ba5c72784504f79a17ec1712b7e54344333cfa305e279c5e039e2c9bf7ec6f570f18226c49a7d169478ca9919c2153f047ce25314bd394d310ef431a6288b31a6280b630c7600634c75103153777efa0ed27827a6f18ec178c8d378c5d378cd60ec8a69ec3218ef781a07348da7dea930e922ebd94fff32412b158ab507d35410b1d6cca69ebe62946fb07663c87db18f578bcddc6d4aa09d4d7ef98b0b6e66b9367319eb1b29ad418b86b2314bdfb4829eb0959b31403029871e114b3f294397e9f39c18564e73380a71fa1cb4249f8bae70ecca0ef4a034659e70f6dae68cb1d746536bc2de53e30338af68137c729d915d65e9f590ab429d4287a24cc424d28f7126153c6bd95bf24ce02f34d537fc7d9c74ab866d302aee01272de22ea8385ceb37997f8422da051f2ccdd0656a91f84793ec81f7ec0257679c65e74aa97341dd3563ee556d9e30d6c5336e6fe5f245c333bac89b24da3a4d249576bbce2f6474b384ab19a391bb9e62804548589f093aa673f6c93e8ec6928fbbfcc258ce54df08dd29b01a3321a5003bc1c1e446c093ede9954e499c17b613e1edf96d07fde0dc65224ccd27f707d30ec30abccf1245da03dc94d672899e094f2ab80cbbd5dc2822dcb116006322df645e7c660e1aa3328ce9b0a85bf8b5b05b0cd4cad3af0afbe31c5f87a2dc3b8476cde390d2aea8e5814e3691df83bdca54cfd9791607f9aa70f3a1d4c36bd2d4c566677e476c729d158d0a7204fc7db5a1e02b6ebb9b58d628b3f547ac7fa1c0a7daa7a1e0137aef5d9c8eb3088ec2f7af003d56e6021675682d3ff32752ba0a8c38bc1416decbe2186b85d2a6c10ffb534761a9b13b424c037af471fee1b357acef1bc72d9d4f5a7d9434471436ab08e6cef33bdc6ab0b66e84b330589b0db72e17ac5d1c18d60fd666c3c66f37589b88c50eb858ec351bbf8d5d7c2bd2bcfb10afcdc76b8307f99502b6d998c4bb09d82eb756df65c076394cd7cc860c6be45b0a024656c0a9057b6897a93fac98fffd540dc455776cc4eb8e5d7f8bd5ca9c5ae27c2c8901a2f8cda567c1a783c542c75d964d2a398c72159d17d16127f3ec4aac979550b179358ba8c4534d1675deb7222868c1925dd057de701fd2a779d3a349f1be4ac6031722772375c16e0e7405c791101ba1f599656d9e223df23475a3b08f77102f46502f48bcc9ce8c453b9c11f502d75ff12f1f1437bdf344f70d4622948bb9ed90a7ac093e07ec8309a5c0edd0d99f0ea3acb3a09a0d1b8825ca2e88b5b5e8ebf094f3ceb95fa729b8b3cdda136af7858c6d72f785724de51ebd3ca9da0d193d395da6ae7ddcd3a79f5ad3b7abdf74c79f26ff999cde982f27adc9c4375f9ee2a08e8dcce792ecccbeb4ac1bf44446efcb322d1eb41e2c5dcf7970f2c03cec1df77bddcea07b383fdff9ebc379143d683d88825d3877a249e0c78e1f3f38f9fd837f303fb7c3c8898dd70f5efdf6497bf4fac1a7affdc79ffcc56bffb53f09b637a1bb3a8f0db3d31db4b7a113397e6cfcc6f66c3f7643e3b7cefcdc0fbc60e53a51cb78e6cf0f0dcbf30cd4243292dae1a5b3387ced7fe1ce1d3f7216c6ce5f38a1119f3b86b5b5e7e78e917e6919bf73c2c80d7cc33cec1c267d7ff2f8b57f1e6f3ce36f5efb86d1be72666b376ecf82eb76e4be75fdd589310bc2851326459f2655049f8c7f0e416bbdf63f39399939cb2074f0dff63276423174d73f774237e64067e518ee2c58dc6018b1731db7e3d0f6a365106e4e0c3ff01dd4d8737da77dee24343931ba87e66830eae20f4e1c3b613bdada7304b9834a97811f279d392746b7bfbd2ecaae5210fd0eae380fbc203c31feb23b323be6b0a8b7b437ae777362b4ededd673dad14d143b9b96f1fac1d873fdf597f6fc6b54f224f0e3d70f92f2af9d55e018af9ee15f5f05b3200ef0dfbfbebe59393efefbd56ce7c73bfcf7c4f6633b743c2fadb6757ce36bdb8ff0cfa78e77e9c4eedc367ee5ec1c5cf66c1ef8517798fc886c3f6a474ee82e531a6e31013776b872fd761c6c3352a425b3208e83cd89d1ed6cb3e98c36b6977206492fb3a8108781bf226a64d41b763a69959393f62678db8e1ccf99c709e7a1ca337bbe5e85c1ce5f9c18e16a667fdc35072da33b1ab50c733068199dc3e1a31c40f5b687b36daf7deed80b37c352349d24e205514e8c8ed1c114490ab7f66291f210017f61876b43dcd372b01c2dedb4c17997acd8c2cdc29defbbfeaa9df0b671dec5cd297eee774816c5d3d01be6d3706e2aa19a00d49ec943354705d49e126a0f806a0e00a805cb9cf79550fb10d42e0fb54be03a50421d0050bbc7005482ae4325d42104750840ede75011949d8b01dcbe522390d8047e9080707470a1b45ede9204879a6e76b1b3a02560303fea8c0422236a335bcee78b21077de146f6cc632a2325706cb68c6e37f9c71c253a60f048d2a1184cf7b8db32cc4ebf6598dd3e0f07b50e2e9d70e905576dc7f3dc6de446184c567c629cbb8b85e37f9a93b3f892b540dfaeceddd84173e82474be0aed2d2e0fc2453bf99594861bdb2331a0d80fe0bdc3818af54075534e2fe2e523d74acc0a6276e80e0be24bbba614a55885dd05a666394c7b778769af1ca6fdbbc3b45f0ed3c1dd613a2887e9f0ee301d96c334244d42dc4bba9260cb9ed0feb9a99f1a89db6b230a3c77916acd61cb30cd96610e1395d915e95eb0f71432a984911957fcc341a4e06ce94168186c48277b76b87278db7648131a55559ac136b1742e9c7910da89b54a502fe785ce7066f7b25627e7c9c2904ed92e8c922adbc0f56327fc148487b67589ba9700c59476e781df32881fed28b6fd851d2ee852820a29387ae3651bf36091ece48a99c44592364455ba2135de14f9fec85e2e79db801a06584c0c08fe8e8606225080967e2d7a905753d190675944530ca1a06559c38b909dd05eb8bbe8c4e8a56c4f6db4cfed456279b87ee4c4483a3a487a01b9351f15dbf0f2add85d1927c4478f689934b7d746b657604c4546d490003aa1865221284b95176d881a058c62162a92ae5f89747d01e9e85abd479fca2d636aa4b6f1793ac6e42f6674b9cae81dcd670b0d7a16d06434656ae56570ef2ae9d886a470b4675e305f571791851b6d3dfbe6c44070a8bd7d975def9a12a464b9aac00e79b3d2a2d4ed6daf8dee20f927dbd333bb82bed49995ae68d9b0d10664163af6fac440ffd3b63d8fdd9ae00f4981061f15732a60a1a2022d95e4f4df7fd954185cdbd0a1258518e1e7865c091196185448a0991712d60f207ecce4aba4723dcb56dab593fa6273d1caf0757dc47599abb8f8be89b26f4bcfb9e6be13df38b1b33d77e59f187327378b12684955e0132a69bbb1b389e82604c0ad3d5fc3f0b82f6f7651ec2e6fda73ecc7a7be95d01872a17fd44a2bf01fd1a7a49dfe82bdf7be0846fbcb25fa0fd6a9aedfbe7217f1f9896166aea7dc77d767cdf1445d654eb24b278cddb9ed65d3b971170b0f707fe55044b642a6ff050c4ed8eb2077731667c2e76c99b8116b8f52add98f1230d86c8560107666ba3d0c3165065a9bc34280052ab8a85040c865bd345f9b35780dd0d87bef8be4ebde717f36382e6375211d7eb10be26cea8a02c9f634d5219eb38c4fd2ed74bfc0f2a865744766cbe81e678e485aa9eb7a0538dc04f3cfd52be0b1a301f6ecddeea065747bfd96d1ed030e58aacf9dd7828a032fedd873a398261b61aaa50448a9d6eb48a47ae7199e7be207f1c7279e1dc5edf9b9eb2d1e09fa06ab12f8009f2961cc5c230339428168ecccf0f35f2c0021f1922f04809dc71ff831b825f5da3b3f8a6f725f78cea7900581eaa3daa9952184e5b9181cec8009638f30e853bd8f9419c7ce627fd6c93298ef32d7fb2e4ed68adc87df32ba66c289a3637c1c68d8bb383032d338addd0e96cbc8894ff2727450997dcc1676c621843a2dce0f402412d2187fe16eb64118db7eac6efe0f336bd08fc3c06bbbfec29ddb7110eac3b53d27cc45e63a5b89fb1dce11c6ea0cd4b05d9caf73361d68cc81561c32df60d0f922a638834e17341338eeec83882f83200f2fa88b3abbcc05a18b8cbef32074df067e6c7b5c95851be293e91323742e9d3072688b92fc1e5cb5c93aaaef248dbab2b16305bd8b6386ba583fb24d935ddb621eee36b3a841aa65e3c53bc3fc200b2a6bdcb6a73556e6475d384b7be7c5941dda03dcc22ab546d2ebf35cad35cd6ab50921c1980ac19178433ab9338eb48576a1f7f1eb070b3bb64fdc8dbd721e4797ab83eb8dd7faa8378f2e57c6f5c6f3a3cf1e9ec7f1f6e4f1e3abababc3abde6110ae1e9b9d4e27a9fcd0b8749dab7170fdd94364fb0c8deef0e1473de7a3de7c6bc7e7c6d2f5bc76b8f39ccf1e3a978e1f2c160f8db9e76ed9b2c5670fbfec760e8fbac6d1a179ecb5fbedbedd3dec747a06fe17d97fedee61df34927fbe181d0e8e8d913138ec19ddeea1793c6f1f768f0fbba3f661efb0df4bfe3deaf2008ceee151f2ff5ebfdd9fa3daddd1a179dc3eecf7d0ff1c758d4efbd04ccabbedc341af9d96be7d8806f2d9c38fccde6092ec4b1e3ec6834c68f051cf79fd009b6fa966ce4304b898817caff9fac1eb07d279458648b06cc7375b079e643133b7b892f67c17868e1ff35fa2c4cef3ec6d94d908ecbebde025c9498aac6fae0771e440d1883c4d804f5ec066d8b4a0cfff539de1078931e20557ce82b4fd35c20b7832821ecfd7e230291118bc72fadb5d0a91dd2dcfecc8c94f8400770ed725e0e7914c04b32e53fb16fe74907586509baab9b3387668254d1e7615be4ce258801d2d9a676c682b079085210a15df6da9b915a71a70f9dc0de79e63ccaf3f7b683e34e6379f3d1c1d767a0f8d30f9fd98abd3ed6b541a89ea3c5eb1ea285d3a0c3f6887ced6b1e3e6f4133109849052dc90eea7c5c20bb8abc1ad2eaf57a06f420dc3efebc1e6fc4a5a0e00a475f4a38e2088a0a2011cd05ad45078b9fb4a6c34a61c803b5479cf49b3f656bccde56cfe343a4b62f28b4cfd77cccdad56f552958e0ea63a6a7f2fe90e48b62f9c4d91b980096f736ed4276594a5cff3d1e7c627bc3733a149b613286814446eec5e3a79646552b80a912792aee93b2b9bab199d87aebf66bc1e3912d813e07a40d03d46a62b42a6cb22d31521d3e591e9f2c810a1fa209de8e5ff0822ea89b3d9c637424084bb0c020910080364dd4702bf47da24d3ac2d7237ac69e971d098e96962af97adaa9dce4782feb04823aab45e7345fc265fea394ba9e207f1c7bf9f7b76147df2d9eb07d8904c04bcfdfac15f3faa75a46a3e6ae5d5da491dc8f37ed8ad184f520676bec0b4995584f98aacba620e5789fe72fcf8e36429b0c3165237461c6cd3bfb08dd9329661b0f9183e831f3d7ad432e200fefae811875f8a01eeb040200ef2ce44fd08be3c7aa4309274d8805caddf2766f0dced497e5490df5de2b9c5992dbbcb4169aad9f344cd52ea46de024b346ad518b1932a66b3a15ca580f3d45c8c9cae3312703eb727d72134a8d935484deb7dca852e3ca7d70db1a063553b096dba470981c8733ac1f81bf23794211dc17a25a80835c7caa2ea5454c3430442bacde026e50820df21d1d3367437762839ebd68a18d2d155d524b31c6c5e30d380bfbd2f8add5b5a14bb9a8b621aa1a233f7007343b5000606aa71eabe3242ef2f4b9261ebfb217a03546b7c8d2d099ca75bc719d823917d0bafb11049c55b2680a8f46a4a477fa078dcad1d3a7edceccaca1ee36b2cacb23b2443c51210ede673278ade5b79eb2c8f8f879d0f4b8064ee154b40564ba18dd26ab596000aa1f7972517a3ce0070013548f4f77309b087c3be4894d54b404652e5124012f56e968041cbe80e7a2de378780b2bc0951dfaf9f30defa1b82d8e47a639fbb00248e65eb10264b514ca28ad566b05a0107a6f5972b63cea414ecb0689fe5eae00f670d833bb9557808ca4ca158024ea9dac00c889d3ed755a46bf770b4bc0c2f657efb1b82d66bda3ded18715403cf58a0520ada45045b8562df54f62f3deb2e3dcec757a0afbbf16c5df4fdd3f326db3ba032825a852f51324bd23cd7fdc321261c6a2be07c52f3a732029d28eb6aeef6761f6e90ff4221826461487c1da510935f51605bec7c79de813312d7d28a6a5cf45af0fd24bdf5c980c1b7acb2002076b10b87d6e7c2244966dcc8f46103dc2dd4460b192049250b8112125622c416010aee5035430276c6c2fbf88851f8891cda8d9076694bf17db81636c30f201f1b8200e09c2f74e3c14f2236fc5b0fa3cf01346a743642fddc89db99e1bdfe42f98c93181c484c1ce9e4581b78bc92b2d629a66703f37d0912000fe913ea63a23a6df4828c428bb492c7a501392b7d7a2074471c5ec7609113018bc6d07d1751b7fdf04417c8e786015da37d1dcf6e8736ab696edc7aeedb976449f1d4311f398230f67f44d66b698bda2cc7de79fb9d1e80cafc8446c93a273ddfa0819b63270fd0914a702cec9d20d33e907d40a593d63f003a235ac3a12316e1f89aee6d68bcd2afbd045b9272e721383b800bdd77d4267704b1b85ce4077a7200ba0d68ea7e22f50970e2a2ad756bcd768643c77cf909d7ea72f7868e6d6695b9a0ec3cafb8926c1f254353be6acd7d3dc49942438b3bfa840727ad7d1d8be6270d4328e062da3caa1b2fe3d8d7a015a35a8c5712b171c4513e0a8c608ca6c94145741d279c8b75323fb78668faaa3a663fe695de1d12603fb566185e6e09b8655e000b69a7a90c2edf0ad29ff0ac8ddf6fa540545a9688b5ad55f75aa7bb11a025b85568a65434aad06178c52bea55ea5a156f232f16a91b90103fb4ff2cf826d20f01dde0f4215c917ab809b37128f8e022b411d183351651e3b21ef8188caa78fc3595d1d465fa39df09d59e9dd28f4e7c6f5dd8d0d2579a9f6baa0b417954ad6ef0b7e082b7d73b1cab5610059d1c142fa5d4b0d971d11fb54564fef260f85b7d87fcfd6101d6991235442a3455a107bdff80d07703cbcb9ac1cbc4e1391155d86246ae31b9a7bc9e2b117e9e535882e0a52ef8658ac64351b1630d5ae55a4a8f889ea8d5a463759e0bbc3514bf6aa7da3a357e3a17c72568a99c2be522b10e5684af4d0bc5229b941d7d42f25a854aeb142e794a45d3566922addc399e08e94d62d0e31109d3549f30e88b8c93e544b636317cd1073e9217b13bc6e9f0d504f892b6bc6544455cf1651df52914c5dbe5fed7612e372d8d3314064b86adb0b12b42b11bcb4f41255b5779dfc4c2a35934c6708727eec49824c9a2beb775e4e45372c54f5d12fbb3ed717b4a3c4c83f1ab40cb3df29b7269713b93a43d9aff05177cbb46ebf888194583a557767c44df6bd74d61abb6882e8cb22ecca59b5cb0688a742b5d70ca6a5164ec9dd1ee5c2d94b37ed23409ccba15a76dd84b0ae42eed2925b65d9e4e751574381faa2b798cf8fbb35c095911e66d5acdf77254ddd9040d5c7bee2a25943c886d946b6db1f545f34d5f25667287b953cea369ed67d213190126ba6eab691b8c9bed7cc5a63173d94c25caf6117cdaa7d36403d25ae5c5eb46aa8965a3525f7a194abe671b76520f76f4fcbdf2dc3b5ecb209a15d89e0a5a5b7cabac9cfa4ae920275c67239eb0deb802b2541267bf3a86ee795b4755342551ffd8a2b670d4143a7f2dda364bbd631ab2f9d6a99ab3396fd4a1f798d51ebb295104689955371534bd862dfeb669d810be786ba9bc4ae9a157bac4f3915a2bd46f02cb5628aaf91a917cc7ecbe88ff07fcbad970ca265974b00e72aa42e2bae55d64a7e0a75b512a42396cba3de5125476f79a1e116ca9a5d5752cdcdc8516ddc2b2e92d5650baf91ddec9faa6ba452ce6a8ca4bac4d94487fc6bc9c4e3e6e210a26c0942b75b5de62357c877db32c85fd9224a9541b735a8c81f9ba59b387f804e2c0d4e13a7f5fcf989d131ba28671abec14617c91eb046177fd84e799d2b78da1ad7a6b14e667cabec41de06ee48eff5f513a3cbd3a22ba405ee7b8f190b443d723caf33c91d7e928922e0926952fcb6edfa8ba4725f071932435ede1278701968492c26794b60830fb404d67abe16a760f24e8eb43a01cd204137b4e8e61d01a7e33c00795c7e0eebb80e2c7096ba8069580224347d5d20094109905af3aa1d515f6065d6c24a93114ac4aee79801a1de187071433a5d4d1f658925b6c136213ccabbb775429cb494b8e74addda8114a71874caf83c44f25d8838d822259da708a132ece36b9a6c8566064966666d648ca254afe9db00ed2e9dc7371939fa241d3a5b4330761239b9726f2a865bdeefbd8fea56a02f541da2169cbab8c3c86fc5d8240a48d90670f068d0a5428f54bb5b8b20d7a402bf73a940c46a40449b9e7aa455ef9e4a46a2df92567a5d2a365d47650976a265d445b9b60d2b0e5544bbbedaae1de37e8b34db431c7c39255ab1750d9e83146b0d0877114f5f59dbd6a2765d700a0d5c7b0eaa3177c9a50cfd592552bf34d86a16833a1ebd34907d28da3d52ace188ff7b42f3a66e05941f4e551bf4766e0e541f4f0d1b70ef01cee57510d9b8b9fb063575a13a8a7ebf325efa4e424d61af0daeb6d8ef6388f56da5dbbedbd0a4526876b8b7ad1e4add88280db696892209fc2f0d64df264ac3146bf666c53d217943b72fca8fa6a681b2df1b1ad58753df3ed95b2c7979fd53c53c51dfeba8a907d5f715f62adfa5ef7ed414f4dae0ea8afc3e46d89871726b77489ad408cd0ef7967543a99b27a5c1d6b24d24f72b4a03d9b76dd230c51abec1724f68ded42d97f2c3a9699decf9264cf5f1d4374ff617af5f5e0755b14fd4f7676aea42f5ad90fdca78e93b363585bd36b8da62bf8f213666a1dcde5d9d26b542b3e3bd6dfd50e6864f59a8b52c14f15d96b230f66d9f344bae666f0add0b7a37749ba8f4586a5a267bbd71547930f5cd927ddd4a2aad74aad824ea7b4af5749ffa0ace3ec5baf45da67af25d175a5d49dfc3f81a33466eed4e54839aa0d1d136a81370af4cac35144e4d578ced70e5c4823b30e0e517f0d60bbaeec2aefb8d5dd141054bd7f39ac333cdf5d6ed743ed2b94f906320bcbd84d0233e1551eb4bf7da590079a29a25cfa513c6ee1c7a7938085dc78f4f8cac06374f0b3774e659043791f40ca3447e9e07de6ee3e7a8093e91b0d38b7c511c3af1fc9c060c7cc377c0dcd8d944f4870cf9ac511c6cb5c8c1b04e3aed3b3f72700acc3ca39c841168fa129fa18b061df285774d4ea33ad0bf48415ceb20b112b2a8ba87947549c0e47591ec22446f7b8dfedb515c89283f24224b5ba32362b3bf3103ea189d6c500d0fa8ec659772c392de7cc17758d2ab2fb251c19735f9dbb8490df52adb2c6dcaf6a143982cc9a93ced1f24fb8d0f04045f66729941cc6dcf0b76e97a4ea7cc3c1c60bd4de4c2cc739ac2974779a96736ea6dfa1c1b08506715e06b32836ab7b3bd36bae6f6da38064701e785c2634b81a4a923fb9d12002ae515353bf2bca266e7eef38a0a52b9c6c136cde88bc68b0896ff14a7074d6948fe8d485882fe7cdb94c3d97c9e29cc7de08f3b4c76b9b96b3c15210417cf0f2354599e668a374c788c147c5182e20cb060534d49adae7889923695e07d71be317202a1e04c1192407cb4165439b62d355602c6d268c9f38738fc99a3725d0299a27d6b5d526961aa209a160c31f9f83052000c155323221a1fd2a605b43253654895672a2a5409a48a2c20a919fa94e1a95294d242b40e4fa9a9c747ff0060a8735001cda050042da895992ac3aa3c5351e7cb205964a7c80d11a80c5795229516a675b84a4d3efec41600437ab28534e30e9074605666a914a5f21c451e0e8014911d0134429b32ec54864a3a68d6612625e5787f7bb8f313fec3ef18f1f65e96883eb12f0d66b90c85fe17ced1a6950fb43b78d44a6bf05f659fb863db7d76c327bf5ea2ffd0bbc77cc705bdff45952d837063989dce2632e6bb993b6fcf9cb7ae137edc394c0c31945819f1e4f1a3164052bd96dc6363778f41e99eef7f8fad3b202b2390b98a80d44528c967ab4cd4bb7fb9acd78b4ea67fc7732ed16330ed4e454adc7b15058f56c216f56972cfb903a448b7eafcabb048da09da964d8f5db32f78dc5a9c50953a660d8ccb6650afd917481db3165748a723a9606eaf8d6193bc51b34798065a1c529552a67a6a147857e3939a3d8294ead5e296a4c3be0ce5d1f6da308535aab04bdd2e612a68f14b555a992ac4fb4ac4ab314cdd2e415af56b714cd2d948cae4c9d7feb0692dd348bf303db478a72ad54c15f67d3decab315023fd42d67db2d50f715496ea25c5f7530dbd265e9cda06881c7a84526c8e1aa5eefba0b840a290f180c1d69ebbf1cd49b215ade8f27977ec69d899d35eecb2f7453b8cc781faa447d6b21caabad3f01e5aebf3c0f3ec6d940e3a3bfec6b44fe475e90557ed9b13e3dc5d2c1c5fe882c30d2b7a924a358670a77eb567c1e2869ec3065c754db9fceabad1eabbe1aa22ae47f8dfdba16bb731b77cf6fa411cee9c3c8c270fcc655fce9c073e0a3ddb38fe4e236279e605f3b5a83dd8b4083641f1b9d461847be92eb2752973cf0fe8f7a38b1832230a3c7721f031914d88902d791bf05c84422a85c8be732692e8856b7bc10ad1c476fd0c48beb67479194e98e0c44021481f77090e03ca9b8e1ae7537fb001c3c4272a5e986c4200dcdaf3350c8ffbf26617c5eef206738f1f53dfd830b68debb7a9e861cc5568f1683b978e1f474092925de484edc8f19c794c7edd046f859f22c117be5432e5a8301102cfbe69a34165c760b866cb5037b3b75bc766dab1668a9c95d03d0d9099b81b1c4afcb37b13158701366f54300053661b065b274c40a77d00ba97b5711a6a53a9aea82ba995d64bd60eb1a5567c06a0c4eec6f557ede5cecfae15d04bd02059830ebbe8fa310a883bec76d905b00610685c0e5255bce999956b33edb51bef89dbcaa0a0c3f7f5a4f803efff72797f3f17c96efd065366f4f5704cc66b3e0463583904e3ddf734be662e2afea5335b769703d24a1a74b2e88c2c503cb37ef3b00dd654b23d4f6c2925b6bcc052223e45822f7c29c7b86452a560177baeef800c2ef11f9012f04b74a5726c611ef78efa2615a60fbcfc8f17ac73c7ce7737fbb9875a36a35ae37b125e83a0ff7698e5969eba2eaa21dd5c96ab4e4e10115645ee66faaceca69bdd01538caf62b0f722e809cd23edda5eb2f96ec92b892ec9969d3be6a297fab208800f15dd97f9bd28af177230145f1ccf73b7918bd7f7ab733776dad1d69ea32b3f57a1bdc5e541b840f7c6e895aad6b56072c5c294a22eae40b95984c315dd6009e14b30acf6a3e4b8244783aa4b599be4673e1e49849f882d55d555f766d266bcbfb1fecce60b277d636d044adf320862681aea885352281076dc1dda5a047eb41f2d8e9d358ebf807c385931e7c0417592af4aa4d127e05e3771e18c8411da57fb5aafeeccdc952d44bf3093168a38eef00ca06136a27aa9073bdba40569d659e20a62481eb3609ec37f67923ea0df0f10c0e5fd64994b4ca37eeae0e30f4af01e1ffde9d9b1f3ddc7ed6ea7f311e704e02b544198796f451b6ff0fd3118bb8e0cf58e860ba38417a244d532552ab9274cb97bc2ace39e501c4b556b5fd729a1c373d76edc04cf54e8b604c7ea0adcfbcab95d39e7767f099c8b5d28985ba8e5a2b85e5e63f1c0404aad1f4013fd2544c5d05a0b880869f51a22c4fdc332f26119d116c6bb5849043d97e05b3dd17b5fb9f7c352923ef6c46e41c4cb48eed557ae2249ab526b08d7407705f95665137dabb909815156af2002ccb5e5f05b9922f8f6c3faf1fe4b6085d543cd3455fa2dc1b3ba42f7bef2ee87d5233d0c907bb0e8b5447ffd40404a2d207c0bfd1544c5cb5aeb870065f50222c2fcc30af26105d195c2bb5842e08e4b70ad9ed8bdafbcfbcb5c418a275b4997e823a0182f1dd097c476c1e529689a258926d9d1d9a3a656a93b425fb112de07acf6bedade87410a57f4fb80dc07abe183d570ff34efed5826f765701fac9f0fd6cf1dcb20c5a1cd9d12de3aeaf7c0e611e3b3f7f3cd7b40eebbb2735454ff7032fbc1c2b91fdab5826d53e1d8f7ee87f5e14cf98355a3f2470a2e4311f1d11f2e431577135ecb2f4321aafd122e43e9a51cbacd9b51b21b50da779fa8f94345c02513b8d2dddd7de2f179afef3e09875bfdee132fb6fbbefba4818788fd54d595779c70b326ef38158c9417c96f3961149abde5245049d04cba7ee4c465759076233a419a92ed4454d0ee17603e9d36e483930b37b6679e83731cd0eb96eba3a9c42f3449e89c3d3898dfdaded8d76df6d11d280da848e588f0a37360c9928eb5b3440ba906c87fe7a9157b545632e23b98af21bf95f6fac1eb070233ec847b681d5b8f955eb8d76ac9d87bef3002ef4cc7356825e46af49626cddb62c33b93693a1d59fe84a0f073a617e42feb0bacee3d772aa20c5f827e251a56935a49a77fd9ed1dcd678b0cd95e8e0793d1ad47205cf569cd3df525ccab22a55c96ab5c4dacfc6532ae50da0194508e9e2ed7dfeee2560d00a9e265d2fb212297c1ed2e658c997ae1d676dfbd9620d707c1d3231795f6ae0ae74b00809cdf591e1f0f3b6570abc6f9545e428e05d9af3007d2b90d956cbf972e4b10aa219ec733c4f3218d5a232cdf74573ac4a252f255e178090090e317c723d39c95c1ad12c733491359fee33f830cc8a65e5431fdde7a2d41ae86f81ecf13c78c2c6e8d307ee37de9908bcc1f5885f1c5ed61be9ff58e7a472530abc8f6646e479eff98af02f6a3f243aa797e1f5dead3a9297e47f303f020855933ecde7057a04beabe6c49cd6434c53fb7b62b05fb5553eaee2c65c99e5a9315a4876c778b92205d360352777e1ade08cbbaaab8a3e533aeeb775249588fcc96d13d4ab8bddf018486ff0cce31534da9fbf7d66b25c23524bb78ee384161b1bc4dd9bd2b94ca4d43d9cd2f9f425ebf934a4232ecb60cb393e8ba3e64abf09f416232d59442b2b75e2b11ae2121c173c771248be56d0ac95da1546e1acaee97f98cf8fa9d54db4224e652f728310b3a2664d1f3dfc50618514fbd91d863c795c8d790a8e019e4cd7d16cddb94953bc3a9dc4494dc63f319ffb5fba8212addec1f01c752df251c5bd4d31495fd745c857a8d494a327f02ae24b0bc5d49b9239c441e10897b8a960a22ee03875e49423e36ae9f457890b589c00fb25814fb817020828ec9369e13c74e88024350440df92d955fb26819f8315d123a91fbd6511c6362e290a9b980cc4f7a1bc4d74cdc685ec846c210afd2720130dbd0694b436030c22727196ee8677bebd973e73cf016820c61e426fa38d90474937fcc51c23a92f3f7bcb34d743b1ded173cf4e2af0677e0f1cfbdfcf69030f59d44b8c0504ce6957e330d36d28ed0dc8692ee53859aa50b92e02608a422ef995dba913b733d3415e900841d9393a8ee5c7f4a05ab4b8dfebac799ad6f76fb0a1e42259b9d17bb09e3a89218ca9aeab34a1ee008eb88d77464ee2c74ec753b2960d3298681d74ed4d2567d1de4af64975df28ffb7a37fd3c08ddb7811fd77a393d0caef24051a81c88888fe2d089e7e760483cf98d8a89cf3e0889fdb9f1895e846b7ab5e7d2c93ea0c255884c0bbaa6efac6cae66741ebafe9a4da5cbe0820a97aee7e985fe123875599cba229cba3c4e5d314ea808bfdbdf1257388f375e9a0248528b327280ef1800abef729b468e236124bc6dbbfe22a19609858b0241eb2270e46a9403edf64541a81a107f3ff7ec28fae4b3d70f0a7b3b4fd75a74d1ab010b467aa0053174ec45e07b377fdd32e484c9bcf58a7a94679f454907235c20a29a70e2f508a80bbc1a45cb088da1941daa1e830ac8907a6c8e91c4032c85aab209505b28d9d468f4e88af7f6e5505635016a33941eeae196def02e859cb20d549d41ef480b3d1d294f07a216735c9192f352e326902945ae4a9de9a2591ec3d2c889f162e654a5c9d239859558b9a9280d43a739339ce33ac3a9a0a7aa42d207c2ae0b12034f6384e5d55a5548fa40d811ea998b2290159463655025a0b08334eb0c525fc58a90d2d5bc82f63514b272444dcc5c93a855d3ea3586d9d4084b0f8ee1d191be919bed2dddb9d424055a28cd58a817548453bfb172a532a1d225f4c45ec6ba8a505d39a5b41e1148c6fb9cbdb85b0c446c6c410f65e67e06fad673bb2bba7e5a15a2204049031c31ddc601f50b48d8a7dcee6e836db27620bfd7563a3959cdd80e570ee5e7d7dfcc7c6e9c2cdd90be5fceefd0b3e31e291cf93575305d353e43421d4841278aa524684dbf02bf308868d0a0fb497ef35cd44fd1c9e7c62705272edd6b67f168ef1dd32fb841fecd5bc90ba987232be2f8dab44cf6d8f6bc5490a0441c97c98a7e37acd07002928b08001374d4cb0e36f110b26be2c5231ce91df734f739787cc91e0765286047cffcdc99af9d85f10f69a5e9fa0b776ec781c633009263e23e714cdc165efd07c2cc1b87cd5f554d6f6b325fdd8dbd728a038455329d8e1f7fecb9be63872d74fa64c4c136fd0b4f48cb5886c1e66341c0f6a3472d230ee0af8f1e71f8a518e00e0b04e220ef4cd48fe04bda85f88a6e3ae7e9cee797ce169de1cc863c10296112ed9d5bba8fd29dd4ed912ba9626adfd6681e38f90255c719d8235b4caa3cbebd3a75f4e31ac05b00a293daa654a082b292809c126165cd8a67d3286b8b9188fa4d0bd49e44692f4294938b172511b9ee40a8fa2de3b8d332ba3d20fa2163cedca8c567d1f82dc8f4f4837ee16c081a440200b2a151bbb3b6002e0b9246298b70d16cab814db6c99581a47d1b9909e70771dbf6bce0ca59940c2a2261e3c791542f26c9df21a3184efda811fffc731e1ed5a1cfb9da901b554ad5d28f3e51db86ec9924c10b765a91751a4ba8a96572742b2dcfe560138ac573b727399f67e12ed08b2df8cdc8bd9bc1a35b3283472a3318d83165a1900e7e98357f242efdcdc6896edcc5c273f2f8ce360ee8ec0eb77404d12e72c2cc5d47f0d826782bfc1409bef0a5da7244472e033b4ec5e0e927c684bb069910035ce7cc96dd2574ec2d330af6635d9bfbb4ae4b0227adebc5c8e93a90bf9b3104f66f00989d04d9ee518271168f285ab984e8e2834339ae79f82b68cc0f1f2167571e8f9ad66e07cb65e41071aa48c2b28f993ba681157ee905767c829feee3d69a2ebdd4a42e637861457fa3273453c08c1291b5d037b47aaace6b9b5cca1eb48caff2504a98614ae0f2192f26466023d5c332359f046091813f0bae53014a6ca8d80937ae6fc77b5285f7da2ff3c15d27e111ca39f04be71491070f922ad8fb70cb147c279c7a10f57267445d82edd7cfb70f757a9baebffd89fafdf106de9e70beaf0ec27b25a01a3e431a5fe90652e7481f1abeca474a6f8ef9557d177a1fbf7eb0b063fb04953c8e2e5707d71baff5516f1e5dae8ceb8de7479f3d3c8fe3edc9e3c75757578757bdc3205c3d363b9d4e52f9a171e93a57e3e0fab387883b864677f8f0a39ef3516fbeb5e37363e97a5e3bdc79ce670f9d4bc70f168b87c6dc73b76cd9e2b3875f764d63306f1f9a23a3d33e1cf40ebbddf6e151f7d03cfee2c8383e1c1c7b6df3d03c6e9b873dbb7bd8e9f40cfc2fe2cb76f7b06f1ac93f5ecfe8cd0fbba3e4fffbbd43f318c3880e07bdf661b77b78d46d1f9ac7dea03db038284682c2db8708ebcf1ea2db5f0f1fe3d12483fda8e7bc7ea09ee9329aebdd9aa0ae71f43499a2c120a1b871d81fb4bb46373aec0f50a846f77c3847df8c6e1b95b5bb511b554afeaf2a5d13a908ca880f93948f87d58cec24b06cafb088534bb69599b48639faa8852ff16dedd0f163a3677ea418258599da0342a35878a50f21cf13d78d8ec702f435c836f1d1951bcfcf53d7ba1c36af54874789c563b68cee31702f94ef8634154a77861e05e8a10767143a9c1c5325cf1dd7b9fe7907d5b7a64b4ccbc1a5d39fde111c655ef36f84cba7ad521fd20d103482dab3a6d836807d569d2db9f10f9053df653652096e7d9f99b20b3da759793065bc664ae81aeb0d6533520b50f7f068e06ca46f59187fe16eb64118db7e0c5a9decf7f410a3c8e0543c0402f4563f43477117bd1e982a44d64a37431ec766e9ac4c3899cc207d00a46256bdaaefc7d601486a9ed4414670c1dcf6e61f779d8dd136fadbeb47d4b116f40d620be42eacc60a259a36b1c8d0ec80e71d8fb2d3f9c8681b5d67a3e8a8cae9427fa0a5809a396828d39996faac05b0842265fb81f7ecf56c42523e74fc600d9886549f47da7d366921d2381c97c5a1aaed31386a1989f4eabb1d9b371875a7b54a6fe6ec78b0103cd3b87f2352f6dcf0fecc4999ab4adabf8e3ebe7da7eb89f197bde3fe6c70dc306faac7a5753051ed3843c750c27fb75ddf7742226f20ba0ec1e79125ce763b8747cea6922986ef7ff0374e8077a98038b44333b54ba9d5ae739899ab54c64ae131b10e82ec5d15123ff4b7e700081698d0510d39de744a4d250d35b55275529343b903dc645426b8403cad7cccefdfbc96a77706c59a892fd57f598cef5fa649eff03c2955707b0f06e80c6e291aa03390840368dc0ad05bf10afae1dce155a3f39b3e741beee7d0ad2458ca0eea98b39ed6f585db0bc3e36c4f8d18bc7287842af597beccb0bf93c712ba6ae97a0ef91056e5f4c0642070a695d9b031a233a24b26cc9dce1a4e78a0cc8e025cc14407465161b7f5027b413f21c7b6a4f5bda8f59d4482b2f309f8f45f4bdec32d4f23e64d846aa44a8130f1a88dbcbd4be58c1151925f4b7248f52f8a54a629f681e0a7678cc640d1eff5d49a2f12c186e1910f02a90542e40da920f285b2bd1fc20faf3f55accbeab2dd104d28296f4ca64102c904fa5669c7cb70536424206bb9cd8e044a29fb996e7bc807cac5f5918f36937922a49bb50fb2a5bd0fadc5bcbcf0aa5f75aad5dbf20f08df66baf27a19fdee116e82c31dca367b4d3d585f5ce9935cd5a2b6dd39903c42716476cc2177a7ab9f56436557390b7584e74695d3f0b3a7488d01ba7500ad7ab8678dededd6b143db9f3beced39f00b58083e6faffd8ebd1f40ef99130fe1a86fc552ef1c9167b2cc81d4a873479707019dbeaf1c0e50577bc8e00074b34fe0f8554dc102c9ad8cbf90ccf41c217e1fdf6c9dcf5e3f881c3b9c9fbf7ef0d7528a21ed0f87feb2728206e7be45eb405a37bfec2cfe449f65b3d7f478ecf327126b1d7e402963359b495990793813a629ed147e077d01a5ecf777f5d6fe2ff5523e6f8591feb3cc0a4bca320b2e2f2cb908675eba1e1c0c9515a75d1f75c8e437fc29226554e628cd8b3bf3e330b88a1cfae6bc889d494fc3fbc4d4ba4f51f08f020829c5fba274f6a5efd30b0139d5d2770224be061d82aad61092a4f452f25e3a496524123843359ba44ecf1264d6ef4fd4ac8e0b93ef2b4d31f99eaec04d2aab94fa0d93ea1d5741ac8f8ef7bd51ae3a6e95cd4ba1b777986df531137f29eb5bb44591b561772ba44baa44d7148710864fbedb210d9fa230b56406b4c9321a4054634f341987b2de81413d57617d4f62dd4ca8ef0ce6f268d71ef34244b159c88a66cbf95c14c659dee353fd9c42dbdbd35417fb024ca43d29e5c2a9ea69d9a310dc372cf566a021174c13f1a7323e61cc6849d5fd38651a3ea32de573f910fbb787d83f40d1979a2e6abba1519d3b202eb9c5ae8febdd33982438726f747bd7632673eaa591937a7b010dc2ea6b54b18be21d8cf028e7802849957a011b1a6b04fa8a93b2b4a32dba9191ded1c03fdae78ebdd0bdd196d48ae230583b27c65f8eece3993dd24547cf55712ff58aa6efe0fdd711efefe10f39c820dc90b9d0f795c9fc5632fd90ce890ee00a2106ebd933277b4473e678d425da2cd98db835fa4d5d95211fd63c92b743bfcf1d6f4bdd1623010c9818a1c1fca833ea70be2753d40ffa89d3dab5b7a1bbb1c31b59d7e2c7d26090d16e3e77a24807646731ea0c3a6a905776e8bbfe4a07e46c79d433876a900bdb5f65da5f0e716ef63a3d3992c5dbf6f72b4dbf1dc63440ee0b95a21f67a247df54a3257c871259c962e0127113784c9564ad0c9ebb2c4183cf4db102764ba7263a71ddece2229fa4b4ba94b704c73ee42b22f0b25c579665379a6b4b756f319f1f77cb002f21dfcbe5ac3714b9106b4afa7279d43b12dcaed253d35a8e4e6d3ed46cc373a46643356f029b03017362072a642a486f3c09201405ec6b32d45d294128360c09df19242eea6a3d4f2e83555cac7da4f584380c2bcdceda022a81895f810a45525479d4892e2e2495947869564e70e4af4967b1a7da9815345723a65517e1c55e918632b8727851295975c382d8381fe268ee48c12de9a89ccd36be61cff5440d255973211b520d85ec9ebecb5e18a04b7be37a3727c6eb07cfe6811f7587af1fb48cc8f6a376e484ee52784a0a46b3e38af18de7303652f0b61d44d76dfc7d1304f13922c52ab46fa2b9edd1311f6c2ddb8f5ddb73ed88be972a1834c43e1c6b660d32c70265a8a8e636b657748381be1a4287408fe844c1e8cf8debbb1b1be7b0c23e8747640bf9a820d8d4704bf6462f903cbf156bd65ec6ca5d2dba8b51f366c13ec64af0edfe085a7492ec18fc851d2e6ea737ea62d52d4da2a622d85fbf058def0a01222f8cde9a517aead934fd0d0f51fcfa88f606ac91e1352b9d3cd446c51100bf4ff90368745b1ded5bc244946c861df1e2a6ccdfa8d398b117f503545988446499c052d68f2353762337d6587cb4cd36d689aa82592b50b0443fa2a040553bf4975e60a00a94de769af5f1e941556dac5550a38ded79f24d1ac47a26cb7a8ad927ba29ecf7bdf4a1c1de0432daecddd71e1fc0ddc54d17e6cee816bacc368244c1ec03a2a04ff452a2c0b69389424914f444c12c496d3d5150412dde2d204f08965ee102c80e074e503288fca96aa048ed6e23884a489f8865898ae89346bd5ccea00b989abb49766d937a6babac938a900a1624e4be27e46dff0f37e43196efd28b0e7b42baca3c550ec37d776f526bd3a64a802c955451a35ea5396302b8b41b02a676b9382e7d6c39e7ad4edeb2aa30f923410124ea24b0949e1ab48ceea0d7328e8790c4b35fb9d9ee2c8f8f879ddbd552f712e52a735442476548b37a831a6d332aaae9aeaa50a69286c288ab35545aafd28ce96928bee12d68a8ac53a136e1237b941a4a09938f2b1040a2c209ca682874ddb4dbebb48c7e0f9077fe3337df8be39169ce6e5547dd57a4abcc53092d9521cda80e66b8cda8a9c6fbaa429b4a7a0a63aed65369bd4a73a6a7a7f886b7a0a7b24e853a850f1754ea29254c3e444900898c4c2aa7a68e5bc66080ff0b083cf3959fec59efa87774cb4aea3ea25c618aca68a814674e6b90836d484135dc5505c254534f086f0df584eb55992f3dedc4b5bb05e594f629d4237ce0b15237a940f2118e84def9f0b6e887b7453fbc2dfa2ebf2dcacaf5fe1ecdccc0efe1a1cc1474d300c907310b0dff0b7c04537d6ac61e8dddc56397956d0a581b57b930d785d80832276adb0aec1a808db7db7bc8b218051193d25014430156cd734562cb12310ae82f7c787a67e7d3050eea41a26ab2410a3bb885b35cc6c2fcf0e6d29d635ee5cd25f184eee75125b53550076c93c03e3c9874bb0f2635b98c37fb4812b89c339ff7b3b0d77d0ca9408d39dbfd102e72e7e122c0b4fc52a3430052dc453008342342239eaed7a40f10d22cb723be7b149477c408dbcf904a4dee07c3e32e0c8fbb57411a9ca16182ec4f2d717d6451181f42baee34a40b98925f6604174088bb08d882e6436545a4f56ec98ad8abe0ee4f469a3221debdf1949ad6cac25f5148f76d3edc1f244b4dc32dab1e0dbed0b71ef6a08eb83eb2d8a80fe196771e6e094ccb2f35ba1220c55d04534233a2b221d27ab76443ec597cf728280d9911efe6904a4d6e6525505556f76d4adc232c4b4dc42dab200dced0b725f6a096b83ed258c60f21d1771a12cdcfc82f33029aa7c35d043c03b3a1b22070b55b3220f629b3fb138fc68c87776e3c6566b5b2dc5794cfbddb0df706c932b370cb5a47cd15fa4643f39a88883b9a7b8e1d322f0f13d563e73ab643c76643db36f6759b0c85a362f1889854be7dcbe0cbd05ff88134d1572050318fc9a3620f5dffdc09dd58d83f0b2dc77a04bc84221afe9d9f36bfbb87caf5316f22b28f9fd8c623fcc02e9a8bf483c0ef03e88703f85b3b80e7a97fdf220001fe80d63181d6bd4f1181607a0ce0ed7d32814c872cc9d2d910b1f52c4cf4e779bcf1da91e339f3b825a882d745c14779d3c873174e28faba0db6c1a513b6af427bbb75d8651e1e6496250765474077bb9641b8a18c02099e861c5d8218694d8c136b4ab077f3e2600bdfad0311a2988d4785e645f4ab480551e2f54e082c99d346945545d24ecd315c6d01f3c0f5f0cd578ddadaddcb590cd76cb39c9629e481e02a6632dd7ab42246c55dbf48b99a4e9520065818a1c0f4f585d3879e1b24c03ca2e91227006350f258e50aaa24851da3e07cbd8a6a1950d80efe6ee384ee3c253e2a4ab3051637adb339a6734d94b99653dcb0e58b642fe376982bc0cd60cee7e460aefb614ba2d3587f6cae0daebbb4c3aadd51032a37d474a07be95b63d868e0c2ae09b92ecf99295f11e29fac862a71e697b94c1681b58fcb0d98294d284560fa0dcc14487ce3ae99de754eb5b9e3c74e4843e43f5159d5c82604c0ad3d5fc3f0b82f6f7651ec2e6f504a41347ae29bee130dd9add16de0e66d73553248cc7b8df704906a4d8b93e548f876c0bb9cfef2359c1c345db85eef3bbff7e896d27b8f34b37b13af4408588b357a65af56980344f99cd9c48f1b08df4490ea27e373e31358477d6e7c225aa43b8cfca11c5a974ef60115ae42b4ffa66bfacecae66a46e7a1ebaf99f519c4147d59ba9e27c238afa0675e10987759ccbb22ccbb3ce65d39e62727336719840e8875fe51b85152cf506af0a6f7b599d449003e2825951c2bba8a0437206998a40a84af62ded3ccf720968a44f3efaa06f5dced497edd3e7f198257b1ce6cd95d0e14e44b138c83f4a3928ff36d51b1a43df1bdb149e896ca6fdd3c709eca8b91d37546826544ad61b93c3d82afd24990c2007c6cfcd3548de5ce173db3214b9f5fed050e3db2aa9854926e5f0faa4c0189ab6b4da7968095c15fd4403206799374efa57c6be548345de8779ad407dc1301159af0134b0413e811a28fb05a636eeceef0a865744709d31ff789332cb46d5838f320b4b37d592649b491a93f3e88c924f538fe02ea0a99575eb739eaa19b0ebd7ecbe8f647c00960691ac14a565a53874e796d5d2663ea6bcf8536fe74edd2f035c701b4e1b5c97ed6081955cbb0addedaa19ec34a7df24d4bcf546911ad3a5e60ae2bf7cd3517ac4190fc8391388ad5485ea98045552712a35659e758a88dad7884c8d00131a568a2a579d831508d74e8a3d423ca1eb4c6a2c5c65c57542badd128795ddd47d965b7dc98f8963ae3d29363495ffbb0e6de0b4616e9b5dea865740789721b8e5afcbb8a1f18ff9d627cf5fc9678934ed7822d39e7402c8fbe0d5c62de85b1afe52ce88aa32b2fd7da16af7e9fe5adf90abc5e613ee97625f9bde2bc526d2bcdad1842e931979e63a075cdfd8df6db8c15b63a1565a69aea2cb9d92ad97bcd0d582ded51931e65b6469530a9b545ac217b3596d87abca28145031bd8da5aa901fad4e11d39a012868ab6bf0515d1ef70e9b901a047fec4791c4b2351c67905b6d4e626a675195708dcb462cf7a1ca3d37c1f5e8afb30a722fe67ee0174078f1ac7fcbde10a25f558ef7c03c42be7f0963f23588d807530a000c82c47d2421cb68c6ee728d1c8bdb21e7019116a7243653fb98a2c4d7029004b9f65eb50970a3b8db6aeef6719b3d21fed73c7aec43a7a90f128a3380cd68e220972f9b5bc82450442d03683b46d098dbe55999c6b10a6fa365602a72291aa6d696bac9026ade39b256c75535c06a82a69ab99e02a4c1a58cc6bd387075691467acabb1c46d58c8d6619b18e674efd96712d5ba61e3bd671e3c98ca36658b2195ad1a0eab3654903eec86c19dda341cb30fb9dea1e3ed9e435aa0b6afa01752136c3b6308e4d9ba1cd3273b3cab671da8aa0eed9804e9f5e2d651a53ef398bd3ea9746a28273816e599601b3d615b63d4cd38a3deb718f4ef3bd388ceec19c8ad89f7e7a99f5173581f87bc3142ae2f59aa75d25678de0dde86af4ab8341156ba3db4b63254780b1519d803579a1116f1144952678b4c462c7316c1de2eec159540a32e32ce2e5ad8a2d95ade3d56d261a4259db486d4768f44d5b14bdc57c7edc6d8830b59d45109c8a44aae52caab03a32bea266e95adb56070155a56c2d4b5c8849030b796dfaf0c02ad2484f7597c3a892a1d12c1f36e0029124aea865c7d4e3c6065c45a061d40c4736432b1a547dae2c69bc0db360b06e7fd08caba8bafd5586251ad3090dba8af4706cda066d96999bd5b58dd3560475bfd673fab07e29bb98cada91e9fdd9f2a857e6b62000b08257816e5996ffb2d615b63c4cd38a3deb318f4ef3bd788aeec19c8aee4f3399355857511398bf375ca1a45eaf79e255f2d408f2825423601d0caa981b28f81cdda9ec95be5c2b23424d6e68c4590491a5092ed55fee0096ad43dd3d788b4a4166bc45bcc45531a7b2b5bcbad94443286b1ea96d098dbe99d73b97b3deb029c2d4f61641702a12a996b7a8ca0ac9b88b9a256c6d7b1d045495b4b5ac7121260d2ce6b5e9c303ab48233de55d0ea36ac646b38cd8801f44929cac962d538f1d1bf01781c651332cd90cad6850f5d9b2a401875ea3ec1e1db78c6ec76cc66154dd062bc3138d6985061d467a38366d8736cbcdcd6adbc6692b82ba670b1a67552a651a9359da32bd3f377b9d5ec5808434135479d702d5b02cf3a58d2b6c79e896d5fad5631b8dd67bf114ddf96c0a999ecaa4c6ba891a40fbfd600715e17a8dd3ad927b064e0157897635faaf625ca0070afb23fcdfeace218600f5b8a011d71040920678b3ccb2c6326a0dc2eec12d540630e315e2a5ac8acd94aed7d54d230a40590b48692da87b663d4247bda3dab7f04a18026a046bf98334573f5d2cf4a48473063548d3daa63804a722556b99d9223cea2fd87569c3c3aa461f3d455d0a9f4ae644a3fcd7806b439c69b68eb1528b0b1bf0ff40c64f239cd8089d6848b5b9b192efa79bfdd384efa7b28d55821b9a52040d3a7eb4306cd8c86c948b1b55ae4dd35504b409e318a7fac2050092e4673a9f749fc9bb932526e965690ac98c4d43205b348b4e868480fc1412f2dcba65b3dcea644fce135bf48efbb3c1f1fe33347506b794a2a933d0ccd1a4f9c4663a5172fb585449084d2e9bc25a22781af2ced7d4ca31599f1c77cfe29d7ea7bfd01ed9fd999ad2341b56cea1d324587e06cc8e39ebf534b3e748274765a649ea492748132e609635965307cc672d4ba853f3d1509654fa8c5ad630828857522cf4cd059a8c47da74d0749b2996732d20a268684a9a5206c81d6923fb78668f1a4933d530e38a9241359bf109db91f3c067c656941b44f1c989bd8cb3b50767f80bfc13c39e4581b78bd3c49cc11627ca4b7e1079f3c85571303fea8cd21cc2380968dbb974fc389267fde2795684395f092807c65489880c028a74dd05d942c743890f55a94e3d274e28146ded394a5d99a6925524466c6fa2b673bdb57d01db12151894955320e317dafc49275a050ccca1c57c659e2be53210c15a8863004ec508309f2de7f345990e14b69b7434bc9508eec052566d497769821912421103c0382279ee9ab440a3df1274c94ca2d037f15e92cf41ca36a2b248a34cafca490ab689c409e7067f66d70fd6d2ad60d667a416740ca91e80f180ca5422fd6eb1935eda1bd7bb39315e3f78360ffca83b7cfda06544b61fb523277497e0963b2fbbca37ed1da2627ce3394cfaeae06d3b88aedbf8fb2608e273a49756a17d13cd6d8fce8ac8d6b2fdd8b53dd78ef2750b7931129cfffc87bf7dfd801c79b8f37dd75fa13cfa469c68ee16fe9f82d0e82795c63cd7931d3027b414bc119f0b7a483e081b2d448d52d59a671dee760599ade3600ba7b5ae8c2ea82fb9b91e763aaa2e548313ab6408da2c58dc18714865a7178f4254bb1c78e108e0daea84abdd34393f947376204ea5aa68066a13c1a4f3df8a764cada24cc52432ad26e00c0d3c166a3c16f5f0d0e7120e39695309c68276d5d18568494293b7e56aee87d539b7a036b7832df10443f8323fdbf3c05f387ee4a4442ed94420ff7871ddd89ea7809ad6a195791b194643c6bf8dbda8b85c7f78511cbadb04d36c96fcf81ccfd1c7c162f128ef1a78158ef15094232b5e3111554ffc20fe98e48e472adec8e6b7a41a5436ab827e4ab73b57de55b1ae46fd4a23d168587e2c6a86e6c6279b2ab1c3e496507b67a401394f52cf5d3e22bcc3e495465beadcecd1fea5d431530981ec77490cfabc0db457edc97a782023ecb6d568892556a765bde15456ab7b3114ea8fa201355b727ef63bb686d5ee7d67c86aaa9cb4782baf381a085757c5ac1e926ae2aa98e8e96416155a25af9d9bf63cd8cc02c6634c50f453fac3266a2f3de79afb90147eca4e4610bac813741e84eedbc08f3387135165e186ce3ccbdc4fb8a47037e4e730b8c2ee0e4139093575b8cc1d44670a22ff0995b4ddd8d944793948a3cf8d4f78864b8066aea9bc137c2670e9e43eaba47015a22364baa6efac6cae66741ebafe3a2912e051b85005f87445f874597cba227cba3c3e5d109f939399b30cc23cda0920d8c60e57ae9f050b0d68af5d01c8d96ce31b19b813cfa6459f064c1f4c0471d274e1da5eb0225cdf5c0853b6c593b4c6328afe6e23f9233acf662ef709aae0a4459e3d731a993fbeb779e0ed363e8da4bd8b834f71c175ee691e752ecf5161a2d5965e70d5be216ae623ea7598d301aa1b5ce4d88bfc4987745632c29adacd45eb790ab0983f0eda7e14586d3dc202dcdaf3f589f16617c5eef2869963ee53fa773bf7a8475b7beeb4674e7ce538fea710ff13659eb384450213b990a447e0a4751932170748e2a350955ec40134397f01459c1bddb98e53945864f03090ca7894e98ccced989f40bc7e60fc85bbd906616cfb317d3cb143260ef1951dece74674b962868cc70ad644f8fc3e51ca7f9d5234f9fb2459f543c78f27c9a2ccb6cc57772ed753f2b51dc5b6bfb0c385a21a3ae603eaa81242165e4d392e743d0dac98067af8f1896758ace8078e85b800d5380c3433208829c43fb65c0a2b158534df5366b1a21ff511e20254e330d07cf94f4c21fe81a15258a928a4f986108b1575c34d880a5f8beb5fefa2bb983cdc55bb3228a988a3bc4d176d6d9fefefbd3b8b86972a88043854a2ccf8cd8e7cfc66e71d1a3f5e474b8f9f1db3eb9f3ba11b971ab6101b7a516f90328c7a68db8b85d080f8f3f7ff0f1dc290b548cd576c66095bffe1ff94b7c6869bb8f9ff25681e065799a5266efc7f481a27a6b4b8e5ff2e6819076d3b8cdda53d9720fdc3ff2d6ebd0cbc85134a7afe77a0b66eb8f56cdf1137fbf95f879a217b1c1be292f9fd17844d53fb5bd2f65f12b695b3c5f7ff58d850c111dfff8ba2969b44f1ab78e2a7ff42dabc70d428e9f6d37f2e85241fff4fff89b4b182063ffd53696b296bfff49f49dbe6fb0fe5f0ff53088eef07b18ddc52620eff1fa186dbade7ce152d7ffa5fe52d2309d7fcc750d3b0d022f2f9fad3dffea06a2f9fb23ffdedf742008be04a3ce83ffdedbf2b6ca840f9df123654e10aeaa030d59aaa6eff03696355d7ffa1b0f54eccd47ffadb7f5bd42c22445ad2fedf13b7cf2442d2fadf875a47b113bad15ad8ec13a8d12e0e3676eccedbbbedc28e1d0947fff0f740fb99bd584956893f40323bb3fdf6dc0de79ea4e18f3fc30dd76d7b3e0f76be4457fdfc3f804dc379b09074f8c3ff06b5f26c5f4ccf3fffd37f04b609e66b67d1de3a6124d32d3fff9750e3c09319467f0b36092428fe08592449938d1d4a9a7dff23d8ec5ad2d1ff0bb5085d6739b72319ddff17a8ddce95d1e1a7ff0e6833b7bdf9ceb3e340b68440464b62c8267b310935fe1bb0d9c6096d0941fe08360a9d58a17fff0eb2377043b922fcbbff4ad850a104ffeebf16b69429c1bf830cb9b9e379ed38b8922de53f432bf2fc3cd942cb96544899cccfed506619437b89f9b92d69f2e3bf0a36712e43a447e6eb2b3b9430e71f2035993597cefc9f7f84d6a2ace93208151dff4792d672e3f0476835ca9a2a4cc31fa1b5286b2be19e3fff08addbaa75e107905351231de3e6cf3ffe9baaf60a4afd9daabd8a5ca00a22014869f66f80ad5516f0f77f809a798e2d69f3f7d04e6beeb9db592065c3efa1957bee053b719b3f7dffcf8bdaa0e9f4025bd2e18f90d9891befb68aa69015a7b01320bb3e6982177e897882f40c5692aee0169e676f23a76d7b6203f1cf3f83aa32759fd837c14ee60181d6fe79b049766b1252fe6b70abad1dba523be87bc8f3811a4692b5e08f3f095a854e1439322d09d96cf3c05fbaa16413ff3de4549a077e14c894d51f41b10bfc38b423d904802a22691648a6fc07c8009b87cec28d93a55c42921fc0052f0c24f4ffd34fe052154a75ef1f21536fbe9b4928f8f7ff8aa089dc83f8f7e0889266a1b3092e651d82ca64175e3a8b7698d8272a83e32770cea5f206ed57167674ae50b43f43ca6b61c7f64c6a70ff08196d0bc7736299d6836cd285e3c56203f8ff836c8a8513ba974eaa89244484c46de1446ba9a3e9479090aebd0aed4d3b0e1d99a4fecf60d334e249651340ab57d1586510408ec9f492b54421416a6c11cc77722dfd3d647867cddac1d6914d0ab4a1c9db46e77628c1f727c82a5e246b99789bf0cf804d24db987f04f93817c10edd6541bb190dd7cc9ffff02faba0281d34dc2d4c0a86d65ee027504c69088a831068416020a8dcbe2067d32064e6ea4f206f07bbd5b9bf8b559af40f90a9ae3607bf07b54068afdae7b6bff01c2d1ef809da9b9040d42cf013b42f5a84f69544cb427e8605d298b1bb916903b0af1df653cbd602c88a4a2c06c9c20fcd8af3c6911c4ffde99ffc13a88dbf0842a9a9f633a4331cffd2f182ad78507ffa095afc9dd08ea41e09680170c250e64dfa01324e9c5d188871fbc7ff2dd4e41abb3e24f30b39279debb9b75b38ed3090b0d41fa0fd327eb242b183804e7c9ceb6d2013d9ef412ade38ed60b994e008eda9512b99fb14daa5a046d245ec07483b2ced28d6f0ecfc08796c515ba56fe64768de978e8cfb7f805450d2a41ded66d13c7467b2d67f84446ee97a923dce8fd0ce76e97af2b35cc8bf8c1bb5d78e23591bfe08cd7adad273a5fba3ff5edc5265dfff1172a02c3d5bbc0dff13e824587ab64c21ff1172c52e3d3b3a97d01f129ea5176cb737893d2873f2435b68145b3c0b6d7f2ee9f3efa1051eb5747cd9fe0ada0ea066f85544494bc86e452d43e7d275249aecef215b8268a91e2b6451250064675ed0292c8ea868cfbd407ab0019d69a64d7dd940ff08d9e869438572033915b744f6b94cdd40a7be545b55e702b43dc55100e4b5c6cd5c5fe21cfb19d45681d44505f91f9681f41c0c8a065a063257d11f215b6cb9f33cf59927e4ef432da3d846678a0a8bf9676887960088e6a1239bbb1f4136dff97345600514d9b1b2fd586ddb4353b172022f508564fc0029909513448e1dcaa4ff7b88bf576eac541b3f411654d2701e6c36124bf9cf3f41d67cd270e3843263ef2768ed48daf91a4aee67c8f84d1a6f77326bef27c8b4c1cd644bd64f905993340b9dadd80afef3cf90e1bcf2a40edf1fff27b04d20f31efe00054ca1366ddf89afa492ff4728f46715da5b09397e8056f0ff9fbd7759921c4912c47e0593c592cca8764401f067444b15b7bba64676446648caee0ea597137d80bb9b87a3130e6001784644b5c89e78e081b23c515859afb9f10378a5f067fa03fa1b2830c3c31e6a4fc023b2b27376a726c361aaa6a6a6a6a6a6a6a68a61b476c9f7e0bc9589ca930db92a1b105fbd91fe0859f6f7657e2efc7cdb1ce45457b090971fc3a2bdbf8d4bad86822e879a23b5825c48a93520ba9bbeff5706a7f1e641b194184ee7c8839c96185079a307ed3047142b63367f80849300f9b92a6af317480bb680f58362c9fe0279731bc00aa9d43ce45f38229588fce53db4a960187f5be66f55dbd82f90ffef88e25ab792a075dbc09d62c5cc7d0fb3249583fcf7120054faa7388bef91da79fb1e0a7b3926f7c75413d20cc355755e2a226ddf434bfd982b4e3d7ff9df21139d0a703550103f41a74208851f573b859e01050f42b3472a3c3f81fa6ac0b34faaba4cb6674d182964e3267b3f3b9fb64adb18daf370b665bfccebb846ba985f48b730f03aff2fa443c9f33dc5baf87f20a04c193df63d64f36098f660af3abafc1b74ec21c0f748a1d3fe0d3aa111389d35f96f901e25a0248e52010aa98d243be47e95dc2bc2c2fe57687b21a99bff94272aad08c50224598594715390658793225448732af81952e049e1c7fb7d895426decfa0e054d559f50c013a486018723e57b99721a72a01559ecf7f8636dfa48ed344a148be872e959a79233927144b1072b0bd450ac5fd0be4a17f8b9eb08713bf6756f40691d9a6033829cdb49fa0c32b81d4042efc043993f00b7ecda5f44fd031a201d43d248076360c57ed62c5cdc25fc19b85069064bf55880cb4313680d531512a70e81ab181abe3ada2372836e36d963f64fe3b744c943e889f20eb17e74d50e80a68c1a7f193f2d511e49fc630aad307f4a44117cef43d645110201cfdae80847cc52de4364ed35ce91b8176881658e708fa1e5ac12dacda92fd1e3a13f690cd116fab7a5c056da42df4314165b327aac02573da80ebfcc23f42ced916b67a8b1e74e386b6f20e3c2f6bb4f777e9b9aa95e2f523b4333716966e83850ed469724055fc4eb506fe0d52b6d896df9e53c5fafe01f2b4a689eaa5c2f7d0114079cbf2173054a40169a37754c17990a98241f7a88e9354e3a0f81994855c7d95fd3de4c25447647e0feaadfcde574df60fd0bd6303a45442ef2125748ab3b332880432500850da6e72688f23be14bc84f63ae5b1f63d74883ec585bf2b9172067e86ee921ac0535cbe55ad83f7ff1f08f8989c92ef54330ed96127b44f14ecf81e326b4f283b2b8605f2036567ad81f91eba09c0909a9b14480f61a7b17ee9fd0ce96002db6808d5e60a459de2da79ea59800cf053929d15c1a3ff1ba4ad4ff93649915f1c950e2c30eeb4057d97ec55c7bd1fa07092937213ff199c895c15e8f63d745d70cacf591d2bf710e8a8af7619ff005918a7f37d7554c4c8fdf547283ef5744eeba42f9220ed10ba7a399d2bd5b9e707c8059fb5fb39cedca4e03eb43f36b0eabdee3de4fb69c088775b0108397b1a40dd53be1f21ef05062c51b52b13cde9e01768e535e06d2a2685dfe43d349b5992fd49a103df437a33cbebe460f0aa19327518d8d6ffa10a4d814eb4c41586f69ad08f9fa10351763ea1521d8cf733144c931f0e89ea30fc03c4dcfc70686c59057b21a75b9ea4fe2141ca478d50b8669ee983a5df43a7a2fc5ceba601baf22be266a3d09ca8de43eecc22ce10bea8565d1ffd0c05aa10488d1be46748688ab840e52e4d54d60c24b0455cc69aabbc9f2143a1886b1508a48f1b10ad37f13d74c555c46765183fa4730a9417ca83256469353c44591dabeea47f8676359d5afc1ef225a8f7f7bf8047df22d13ebbf801722215aa1df73da44a8ae49d72f38476690ca393df1fa160009c28483e2418446158fd0602c8d3a77b8340be1fa1b37fa18eddf9113a731525da273851ae1f6771fa5425aafd0432e70c774de864d38036b2ac06fd01322c8a32515cbefde5bfc163cd7517e6d0e9a128f3029575a27cec0c8a1a0154ddda41c7d3e2bc4d93ea6810d1f333649917e754a5897e84369232cef6aaac383f409b568976b9328a160afc2cd15e61f4ff08e985121d4aa48a6b790f79204a745fa2aa4af48fce7f8607a7890081f67f02a435017e864e9a0caceead08b431b0087479b3a087f62d06a3d459d06641c1abb36741f794252a90f29d3f24eb25aaf254354defa14baa3251452a42c726cc4d9d5f11f24f95caa8c81f41eac85daffe75d88f504c650b5d28ed831f213557c5354ad344e93382f6b82a7ea7325c7f80dc62d52ec6153e8b54b57fff0409a9d63a838e6704c88f492d0cf9a286aea85ad81a9d8a54edd384346b0ffda832d1a13bdf0add37f38ff6fa3bb91f21f357e71ff81e3a641120d5a6f397ff1bd27c15caf6beea76e63db419b450ba40bd9f40116a6195ded19fa0134c85ca0455ea27c9bfc0ccc180f8f9f9fdb9d4982dbf407b7b8b823cac55f50fd92f2db03ec4e21768476ba175ebe717c8c6ab505d27d9bd2ae0135429ea57a6df833271541fbc7f8174667554ee37d07d6e035224d9bdbf53873e436ef22a39691ee9ff04ce80fa45c9cfd019115762d33cefffeb8fe09c6148b56ff7afe0fb4002a93cbbfcf527e8b69500d68932b106c8992c7f38a4f15b552c24a804f25d12a7ba6b84f790715e29a3a2de438ef906c48fd3e2186f91e639e97b903d3cbc269ced47703bca75d1743f42e62506d37407eabc06cec065f71e14240658d73d14ae511569627085f93374915efd97b352fdfc00b9140cdf6efc08a509ad6ac59df95fc05ca80d880f24f36500613a5161f20812a61315dac84e70013480fad793d0ed75a5ce050139acaaba4cdea2fa58e6e77bd58605dd59900ccaf29d07d4ea0f7161f4dcfc6770261b68fd3bf39fa1136ef574dae6fa17473f81fb650babde217e02552001dd27f12957068b41b1052db06e91fd04bde06d61eb3289b3fb14e9722b40f1de3c0a655e03c864a8158f48fffa3d742955c76f911feb1e59417eae3a7e4c14020cf993f1659249b438740ba6f27bbf8734427dd49ba4ef21f3a43e9a44fc420aac3e6a2e8fde43c7a9fa783e6d2bdd5b12e8dcd8422a1f77406e15a535f3979fa05b840644bb987f86a26e947923fef27f80729c9c104e481f9728d66e5b9059d2633008f8ff1eba4cea11a0772853ba574149efa0f17f74fd435101b5ca15fcd71f40aee56a2702746eac4b754c00485a196795da6df03374d4ab4be551e17bc883a6c999040f0965b8c49746034347d91e56a97ac1c13de47a93ee3d74a639677b542a2f74fff2dfa0adfd9c29bcce7ff96f50b8d739337c64f70364a59f33d3085e48e79c334d281c64f29c33f5051a64229f33bd0715d253faa8016897d1e677846cceb33211ccf7503fefe232d1dcef4141157d6a7bd3574b50c0018044f3660932357a2c862f96204fb02ebe0ad2e4ef9a55a9b3c77e802ee95b4865e6981f2037670ba8dc9721cffa439caade034366515b1149fd72e7afefa1ebc687b846e501bb62343b2cb4341f92fdbdeae1e57b285c8200f9db735d2bdd8cd0ba6e610f79aebc45fe05ba536961758f5a7f816ea01f4aa47e9d0f851f7e97e7276510ef7b48a5632875e00be4f6c36075ee1f54b900de73db6b75de9e5076eeea8a167991bf43a5ff50c645d155919257c0eba019d83a2eef516d084a431210bb8abe774cf54dbebc28d40937d29639f2be4911e4b07804abba5fcdbcc08b8a476f01378870834df1e845d216c2c89ea14b8a49434131805d33e99701d661da4cbb97cc96095593ce73a463fa42cbf485e53c4fd325c568bc52f1f0d9e2b5a422b75fc6fbe45cdd7af3b674195d61ffb303fe1f526234c18ab43ede7ae186aba74beafbdee142621555ecab15037cf26fab7ba6e8d015e56c6b546ea280ad2f8823d4f749b3dbc39a881e4bd7713b1a5c2eb6e16c95a7c91e5c4740017349b7034ea6beb6ae263a4694d4e8c411ff9154d8aeeab8acc1c2b8c317a62e2ea927dd7fe3e42e0244c95bb73f62c9d9a35dde5e4d0e32c554acebebeeb5d344d7a4eb46d058dddd0df280069798937daa245fc45fc1d97fd9dae1341df88717ae1dded3d319293339c3d812c76b76731f1081b5c3697436b5c315fc7ac8cbbdbf2d51fcf6d6c3ffc76f7e81693a8abb276426313fe505caba5e39e52129f11faed6332fdc44332fbc59342a684e7699ddb9ac9a46459ef4b5a8e13504114f1422c9fcbc97f54fafadaebb2c6ff47b9a3fb4352869526f1a22c3e63fd1a6a154a97e878173bda94118ae0b86851bffa1391c504f3b9bf3cdcc0b9bbd245c6dba0dc59a09f6b347937013cebc2858ccbc285c88d3c4766257725a09db1f6374b3aec2d2ab0088237cd3f850a352501652dafa1674f17eb7c18ed60d2c3a505c55fde39f621c192d138fcfc2f97ab785551b34221db65f157f48ff9c304d4d878dacb6f41089bd1439c6eb819003ae8a0b11a7eacb402ccd5bda4c4a0761ceb77691380e865ab576ad2d06c540190f8cd6277a5dd91e2575bac0b04abf1276dca6d26231615fdf54cf33863625a3ec063b95d26cd1992b4d1a40b30d04879b9b95f98874d87e55fc997a5301e9b091d56937150939c6ebe1a29b0a489cb51e66c5d2bca5cda498eb5e6e91380ec67053115b5b0cca725301f4c9649b4a7b4dc6c26e0feb39e07894c18edb545a2c26eceb9bea79c6d0a66494dd60a7529a2d3a73a5490368b681fdcd268ab6c623d260fb75f167ea4d05a4c34656a7dd5424e418af878b6e2a2071d67a98154bf396369362ae7bb945e23818c34d456c6d3128cb4d05d027936d2afb38bbef6e8a3ad05d340fe67adbb4051db7a5102426bceb5aeaf94513a6e491d540a75297049bb9b6a4daeb3693ed7c3d5f9b0e4783ec57c49ba93712880a0b099d761b8189315d0417dd4420d2acd52e238dc60d2da6c35ccfb20bc36d2086db87d0d87c40969b87a83e46ed1d6c7016737fddde9de659ed1fe253923edd7a77affe71976755b8ba7b35f3aa38abf06bd7c3d0b04abe43b75eb86a6fbef16f0f2dbe4510500dbb680c2a1020ffcecfab479f7c3fe5797dc457eff765fc54ede2143137e77cab38ab93384de2aabded33bcad55dcd3721b618b10c77244eccdfe67cbdd3ad8482e6ef5d3a3809efae6d6743787255eb3c7903bbb7039f3c2f962e6858b4d7b096c78ad9b9f6b1c738eef82bdbf2319f5e3acfeadf2d6906f085cff0a4d9437c1746b2de5520162c7474993a6a5565ceca84e1bf10045a10f6db9a1425bd80096885ec6d4d2d6e157ac9cb91edc492545815a25f5c1382faf92ba6830404d8541cf1e128f0c4d1c0955a2031aa9e0b8fec72e2a2e083e87c3dd78d12681c897096da3d7e51e1de2735ad3e155240d0fd6aaf268029abe3131706dc0f52129abdacf0f7efd54201eab241ca525e16befb8e2aedc49b8a0205fab56be1ab57c48f3875bef98ecf7281b6664f882d23429aaa422b3774c6ae493b2045e963f9471f1db3ee8a7f98b91533684b25fd88d34352b9b84758aeb3b5c9b305c1ced6179d81c6233c60ed0dd5c63f6062a252074cc80864b3636afcba1d44b26adad366a75e34c32cb2a7e43bcf53e9b078b60c1c41d016c93c5cba84259169bf87050d022c5627cae37c3c719b8a6408c816b43b9d2827265ca84215a06611ee3a2b60c3a301b347d76308fb83164a875eccda789d20c5abad02e1c04743926b8a90ec00d73495e48dd3d13b3c24121aa9c40b2772c93516ce07b1268b870b756aac905c64d60419f8e9d1a1d3d684ad7bbc2390d9e81776000bd47e9b77fd1bfa5e9058ce79aef77bb9bd0010bf96dbc6505c7789902d970d93ceecb9529d36fd8aa58a74914b4aa03b341d3526b1e7666c850eb00b44f13a519f4252c2b9348b8cb31c14d755ccab25286e15d9e150e0af1b92c2beb18c0692c2beb6ead54930b8c9bc0ba1816e6218ad6bade15ce69f00cbc0303e83d4abffd5b5b566050e3e1b09daf560e58c86fe32d2b38d0d114c886cbe6c18fae4c997ec35605fc4da2a0551d980d9a965af3d84b43865a47617e9a28cda02f61599984835e8e096eaae35296953216f5f2ac705088cf65595907c24e635959776ba59a5c60dc04d6c5b0308fd3b5d6f5ae704e8367e01d1840ef5126dbbfa5650545f61e0eebf9dae63ac536c6d7089d1db7c1b85f0bb2355c7562c8f45bb522f27512cdacc06f34625a58cde38fcd98691d89fc698ecce3a02f36f24b985206fd58716272434a158d7d713ed86bc0e7b2a26c23c1a731a26c7bb5d1460e204e82ea623f18c7a9db6a764730978133e0f683a7b723935ddec076e2237381266290f770e6dfedf6ba33bf01a546788c66cc28f69a4fd934d7a5b522bf3351d89a044c9238631d6e83d960690122a6b530daf91837a8360da3841c203ed5263615c666127c4986d9838a31d75c1eda2c7eb78d5b42494e3d9c5b11a538671e0e59fcce4fb23d4ec1170809172df2c236ff4ffc883f3570d25ca32e3968c7f5255aa95492513e94ba8b9f5d0a094703129d2a30bb9f615176e8d900c898df2cb6cb1b0546790ed924ab506d92d6d58d75400ad9cbf7082e189a858ec9742763c1330d9e128243f288f6cd42e75734fe4022cd49fc72f3cf3ec9248e06c761f7818818ab9ffe1a877ba300c559af20a9f7716587cbe49b6d5f32ec509f5192cffb4a7d6212bf52bf330b59423ed99c3182865d643487348f6bf11d85040e338e01c4bf00904ca2df3eaa9f3c0ba1f615326f46af2e9864b48ad503e6186efab1dac4b23cf3933d8a53bfaae31a5d36d57057bc6144a261521d05cc354c7d9a5cee688445bc7b0be313befce95cd5c9e1c9ef53e853df647b14f8fea785534cdccb660916a96935dd8be60ae6a8e22d5a290b5bf5d93d53e157228f16cc1f2c22976511eebad130b4a7edb1cb9fbe08d484f9ef92ea1c1bbd45e4b787955cf918f6a1c904dbbda2c2a5ce26d43a9d90742faefa7758f0af5436fa404a1e79d5d5992b8662482ff1e18960be7feaf1a7f113f1a9fc197c70c65193c64fbcb9d04c40b253da0b836cd1d6037360888481372ccdf2fa8d40e9554741d268a3aea899f0f2ae0561c01b0d182719124e3183cd63c0011825f36b92a54986f85ee26d95a7e75a4b66b52bf334b5a3363ed7b92dde0949a6a1fb05417ee4087d9754c9368510b2e52da0e1aac5a52302c239e39a0a2c362144c10c5ceb755fba58d3f2d59117f12ea99fba854c8f5ee5cd610cbaf5152428772f504b80e714f323b62c669ebe615c14a83bb4f5fc01a541de0feb3433e88eb9f1e266a563232e258827dd2fcabc4065d3a46d4be65fd700c0b4efcad87b51109c2a1e0ff419c05227a724bbf70fe7ac3352cfdb64e76fd177092adf04d78b99176259c1b6f9cd15df8d133c341a84d542200ca3fbdd78161f935a980c1b607842834f13fa7c137a7bc877e70ac8e061aad9651a17d2d2459ca194140f573a3055bb3f85034e7a3085c5a839ec5ce45839786d154e5b99137509f9b2348dbb43e65c6adfcb78ada10df43328c8d3f9250032bef6aa22ce2ee3a1808ea4b4610fcd505fada844f5ee088a00fd8d9181ee837ac4f877c0b10794aaa3928f8888f08265ce9cc4d6e1f332d0161094cfc2ae3feea26e209dcb1a42c3bf4bd08354abb89972bf7a6716ebccf543d6b3d8f9784d5c8bea4b93feccfb249e6960fd30cc16740f42f2694826ba38574711216d8bea5bd30629b3451ef2f274ebf515a6fff0260c82cfa9ad58f11d366c0d2967ad5bd3013016916a1c6f548378238cc0dc489e89dd6acd2c2b98bec94c6fc6896d655d298dbc85dac85b58197928ae90d692eb1b8d34d70c84ad37c22715176b1a8c25f70f6ffca57a050edf1dce049fe4f78395dfbcb0d0f250637325ef2462d6742b74bc9cfc4f2afed312b113b5e7d5f032122c14bc9389f5497a7f95d24b02821dc3777eb535cf256b0067157d130ab2cffcce5dccf843964ee16a412ca70db09efec38fcb32579f9adb8bc8791795227303c9d1b3295ef9d4a22dfe88c7cfdf9cd7a83ea2d247293aa1acf6e3ba8e7747b46fafc0e92624fe7c6851e70557925d8c9af4c3359ba3b5730af069332725e36be96474ddfb61f8dcfd57efeea54abbcceb667bf06f823dba17c496fb6a40758a0eb58a66124ca598bc3638ca70929cba934f12e9dc788aa6ebdd608a02d9ec04461353b7d72f125289b4695795e9bc38f5269f9776451b4ecb749d1b4c8b72e198af1b2c2a2aaa71f4a2627a4a2a29b0b09c7cd3797322433e6fbd9bd270e6a6ebde60e6c28d6aeabaaf06549f92fd3e4596d2bc6c03fb5486f47fd61c63bbef0634927b26eb9933a1f20f6f34676d531a35ebd66abb251a23b89edfcc1713c99ee55ed2c9be0d0dba0dc56ef5b56bdf8600bdd161abba7bbbc7860c4e12403e81ca5090533f2f136c9d36d28303be1939153f4f401dbcd60ce8a32e83950d26a0516e87a94924a1ef720a85d078b5d29c7a965bd62b269a6e310d994ed3dd0229679c6d330db12ef3ded2a19a7aa689939e9962f65bdda4987dbac534643acd7e4b8672f6d936d310eb32fb2d1daad9679ae83c084c5027537481ba7e96a73431f54a40aea8ee7dd6cad893a4873022cd278e9cf6115192a638977eb80ae3df76bff88327f43a34c43abca868718a2fab3b00484a671c4e72b962241d9d470bbf51067d5dfceb658690ce956c400fdc544396c601a7f4325b388a5d7cca46ae64070ff25ced419e8f89635c2e665e781d46f84dfa06ff3bb40e66942399c6034dae49a61213097e2769d42c924f12f9914aa462df93c4bd1af9fb21ac7e957cd7e72d057ba49e8acdc597efbc6f9ecdfce2fd8609f9f54ca9f9337dddc0bfd2a5e14f49969cba8763436c209cd60102949d3efbab163ea219407239c501ecbdb28e4df6e4e7231a567756b4dba1f8b4aff36a32546bd1f0637b9fa0d8cd9f47eea5bbfc2799fd24b34a99c5ff86d3c48c8b928874210b0b6dc8825bae93b15d2a78049a2a72c619ba10c4ba8d7217828414c6976048d034fe07608ef41076e36a1d1136c3b2f45d44b6143508ace811bc1ec0e302f9bc00b571257132f29bc3c5527171487de4ccf9a1ec789b00e4eed5dd2bc0b3572459d6a54373b069b91779f4fa005f5bb1777383a6e3debd7371a653bca491bc238768106dd3d6dad436d6bf5436eb8f8df535ecf60378b1fcb7b619eb6753f36ad908c107f072f9d3c4a2d2e8f5b27642531477894b25de1a758e13a8837fddc775ec3ffaf91997a6de360a382e1354fd51aec5ab2206dd2f503a8f366a9451ff65ddf9502c1f4cb299e4fe5d37516fd1d3a18c4fa8c285c7e3b291d2fb125595bf8d4bbfaacba4402df30f65ded6b767deff0d74042dfa860865c379503ce2b62d311f021184bf54bf06b684cab1b7e833c2f19b339f8da9bd9392e507dbb47872d583799a6ef69713aac5b4368cc49810dececb7dd30865f51b1f9b4033c9dbeee8ca8b969fcfc86a2fe2b25965c20fcbe07305bcfaeb9a47b65e7e2e7bf20af27c23b42679b0b050f461d3da946da2babb254024a984a5cab583954cff90c929cbfd384b4e78afb8627e6e57d4955c547ac05be592c40efeb685976487244b6ae495e81d2a2b24a390a3424e04353bc929be07d43e75981056aeb0eed873952cb7afd95202de3f6fe29b6dbc510e1aaa9a6f885d2cf72ec3ce548e35c42e963c956167aaa7196217cb7ec9b0d355444c91d32530806dad7a8b5254e7997f9f76a72b660f01f240078da084eb465a16948286ce59405361f3117b90ec00667b05b06b7eb463c482d08dae0b3634190c7dafa438a6431e9c46c788e09aef264ce305384d8adb3e15c7367fe491eece65d58c718f0ef139ad698f17bdf57150dd90280d1e06a09a8ed31a95595c23567e7ecbe97f0768d098be7b8144681d697ce594fe67a60e422f686dea4d9c3f2f49f1b18fd85c92ebca2a1d12f3f236039571325cf2efa57a5b4b96248939efc884e2d9b98a87db563af9334d553bf14063fa2cddb5eee8be2fe3ed36c9ee9901f63f0ab8c886cd5444a09c934b064b96d77e9ca6f903da4b10917ffae70c27e9ef10f6961e9736bb6d5d97f1aebf02687febf62bfa01403bbbe0418cee66258801945a8bee9c5186743081eea800526ba693016bc90c9bcaf2e230407692b94da440d69945e6269002195343d7c8e25120a3cbc619d5f86a711de36c9f2aae220c73fd77cdfca60d94f7fe3a74ae23608e1bc85444ca68c007014a75900329d99e667875358baffd17095b9d6173e80d7c9cdc5c5dcdbc3a87bf5e5d09f4b514f027e23aef3b93f523f9d276d14bf5260aa295ead68272f1d0ca44a20c1caf22272cff618a90df45e8ed74c5ed9c12c54cd604bd357d4c2b83b718654b076d0fe16129670f73cdc17cc2bf404920460cb16912194bd2f4c80195ba4121da4816366ced74acebec0e29f338c34430e064470ef09ca1726909470c31e91b3d22995574a7cf15af65062535105fa0764cad4839173598656d6905a03f9bad1543a42e1fa8e49d9f148f52f130dc8a7ea5bb107d3a114e265209f8a440d5aace8a2e697a17fb993747eb7c3a658bdc191ae9a6aa7fa8542875b0a80e683a3294fcb30d2c5b48e5a6ad9576719b3e583e93511f2c0dad7ab128a0648e644594e5069ca491a0891c497979a11162bf26658bf5c856ceaa794ab4229fa220dacee78656ad8c859c7dab62226be94e66d72ed7336fbd9c799b1b43a3d6bc08916ed0a2b569327e41a2048b931dd2da8426f213c9baed57385cb0bd176bffc0a9b74dfd6d4dabaa2ef3b708bca894d0a05142a08dad288b69ba2021d1be99af17118c4cbbedb237469f2d77eb60232f9a6ab121b798a49e39fa27aad22d93b667c365f71eebbcf95567db63e3bc075bc17ae792b1fe6f272c5f606763b0b3c77d68892ad692054be56b48796caaeab8aca5c77c94ed991bb68dc20138a06354409d17243f42bfce18cf2931f58416ca4e7aaa54abbae91757ea5475cb35d0f66aa25d2034c0dc5111eef89f389dac8f43b0a2a07854e49ce51bc9f35e4a7cd9c3f3d4e2b1bf2feb4a2d746535ea9c54efc3287b0f30fe892e711b411281ffd9216404a8bf7ca5ae6817fc0d6dc8bf6985b06aae06e58d813b4379790b2ef926ef11e74b3838f46d8bc254941af99879ca1462741b0b0ae87dde6908465b35c934b681d2ee012b4cd759b782194d67044469348e08d55509a8286dfbb3d164ac029d8fecde55e034b2e62066a0c2ef56aa4ee5cfd9efb0d237dd8c8038b7a2ee4f067df08e180aa6c83dda3f69021390f68912e9b02f39b6f94a8daffb0e04b3fdba07421fd1b808f211afa86823eb43ad6f9d0b7547a1ad9ce42ffb2dc0ac3e9d2717720f342de2fa383c0ff4e1275f9a43b32e171aab3da08f50f0373964fbfbb83ae68743856ac740f03178ba83be2af0bdc5df1854bbb868a4f99cedb5dca3228f949db0d14292d50c042a824b7f09851f12e17682a428cb720cd525013027b43fe0f0bfc14753b5249a39666ce643196f4560f1bfa17874057d40bc95888c093f572003e2ad44644cb4b90219106f2522a383cb55b88478ab3ade56c03162ac6257f6d08a641d6fa98ae9b4d67ef6b274c01e840d34700b1abe303b10a9b189bf598dbefb4b19f5c847def647cbc00bf9ba04c63dfe6b5c26711b098bf65fddbdaacb33ba7bf5c7899ddee14da33c1b754e7cc4ac063527d74fb27db28bebbcc4b5ef8b4ede994fc269d3b0b2a284efe643521d579563c4756ac4235940cf737b16124a50302be832754403660d10ff5e5ffc1bf809584a28db830ba9fb5d5c46dd1749e8789f628b9a3a4a0e87c5d17a56aadaafeaa7147a5bdb71f06bef0bfc8cec368dabdadf1d93747fc54c4a29a902d22d5c212e19cb217aacfde10b4ad3a4a812f2ac192a4a8a7fcfcb3d167056b78d9e18092fa1c0442ad95aaf718cfc56fdeb4220e093f666f179b4e3ad174bdfa46226eed12e2f790b459e23055617ff9553b6d33f91f1d58f58580a89feedfcd2bcfe1d1fd0a655f19cd2935f1cf58155731c58f55918acb6f15ce08da4991949b37e72f0429431e78a799bd18919d4111ddf861f8ab4018bb0233a8dcb7b44e96502c74877ef40a5457925aa64894687b4376e4a864ad4063f45d26c29b0841bbe9ea7773e756d84e06a46176c10abb868db424749c2d119316bf4c5cd46005099c030ac7143a7cc61bfba6afcdad41056669744f04c4d30e015cca067fa2d465c440281dd015872d8a5a7bfdf4b841fc1a36aaf184cae6df52ade25bcc3c970e735f362131f0e815681b7cd6ce910822b9c94baa6735ef800f1113110ebf2b188b33d14fd25299dcf16cfe7d2edc4bc6baf43d85d13425678fb0d34c6a96fc286dc9d8c8f79997c9767f5a8b371d93e6995fd3eb96756995d84395d1a078cd89e48e91019ea6eb4aff60799be4d3ba60ae01d7fb9db5d4bb197b82bce18a65e7d29ae76ebf8bef7ec94d0d352e0212a00a30e6182fda7bcf92820c57fb389c4809ed5014f60d76bbee7e640265b9f01e7c9c752f50e751ff08ff7250e46615b66e83e165a56c732c9def2c99a30054465f4f9fa749a82a224e429096594842225bc7ee1b33932ec618fa7c2c1eafe169d8afa0946411d7621643c47c06c55a03f647585cf9d7d2e82cef226fefe615e00a35cb0a7897c6111825d64dc8aeca8df703f0fd12b921d45fee4958a4ee70eb63254d62b58096db09605f36123b71f0c96b59a1c83052ed0238b0ca5565ab2cb33a8ffe1ab5fd571b68f4b3184976d460e73fd2d5a630b97cd59fc9b8642c93aa77a57f6a9e9092862d2b110b79d31e74d56f4a80d694e07f008ee15defd2bec3d1174541595c34009a0209863f11730dd3c18372a8996e2ab393284c8f415430ea5b92484816804f22c35e08064504a306e5e6971ca298c40eda4b205e4490386eb2bc6da90ca218b6d94b1214763a4b3d85d43617fc8fb519b240afa8c94184ba060a5d0fd4892300cd7815693d3621b3b3912342693b39c79e1723ef36e56fab99174a39d1b19792673c3d2a79c1a494a8be172d56a6a5a6c63a74682c6606af0fbde701eccbcc55c3f37927eb47323a3cf606e7802959303a708192eabade686201b3b353016a399b99979cb25f95fddc4c0bd68e745429cd1b430d4c1b3321c77a6b84fa48fd240675dfd1bd004635aa8cc314943d134131fb570d0c449b54be3aafae2abbb5714d7ef5efdf14aad8f7009a686b3e18a4e0a273f3058f5ed2cd24ed81d9c0773509a9c7a972f01b7c138f823169ac39385bc98798a2f290a13f5e3720a9d4fc147bd7c4c35429783ed34a2a239025b60926acaf108458dda7a46e42bdfe0f8a234b9c325a746819b5e5d876375e7654e3b116c1c98f7a95593173a05cd6d09d76fef1090e98eaf861545568cf4942e8cb1c21b71c2abbed19a5c8cc7207710e8b9cee33846b4478dc541c817c642ae49be081d5679a516ec37c152659702fd4da9d426f31298eb346b8f8105d9f6de037395d6cdb6954a63e2c62d559a082baa3431dedc68b938482eafd1e6fbddee2674edf9321a6d3269765168c6723d6a28f6126eaecf34f95f41070fafd0b687f55c79d8053a9c52a14de75b33d768d67e360bba1d7c6ee62aad9b702b95c6bc5eb1546922aca8d2c4572f460bc64578799d76386ce72bcdd5ee84623c06b98340bb283563d11e3516072137d76aea44d4907b94d769bb681ecc4d8db4917e68638cf63e69738566eb9f3627dade576daecdda89b65266f4eb394b5d268002aa4c787467b44cec25565464ebf97aeed8f165f4d85452eca2c54ce579cc40ec255b54617e894ef93bbedeeb884b18a1820493fa2362537fb4010afeaa108ab67059217a48317e93bac6131234d30f8de8204a201c22d0bef2e998454b10355c3e8d2b1def0dbe2a82914baaa0c28d99c013e0150995dbe7109f92f4e9d6bb7bf58fbb3cabc2d5ddab9957c559e557a84c0ee05b93feb787fe554a4035ec9eb95181bff9777e5e3dfae4fb29cfeb2366f97d193fe152ee4c6c2ddf2aceea244e93b8ea5f1ff5c57ffffae3ffc5d6ff6523601831e6842b0c44e9ea65612991055d4f23381f056aceb3e154069ce74423c98af3855e69be7444f89877d2b45a68d623f3d0a37fb8a88a80f399b725acc42ca1c03889162113f4e231c73d1dec0ffebb383d7755425f2a0ab9a58da3acb179c4a76e6b704f594349a6222e481ebca387fba6b9f2eb5e561d0c79f6db3f05867e9b3e5d4e07d27c1ad66e89eadd9102ac507a607fa7277c299d708b89fc50969f8c3afcfbcb3f07505109c4cd9ab19c9db8a5d5c4494376355d5b06df2a493824658fabb5ca9baff7c7bcaa998f7f86370a1731e5ec612d1a365140bbb0b7258adffa0f79b9570353e794677f81419342f1d5e2fd1c9f9980f9a94b7a2a8f64372287cfef2d6f498e794c8a6f4d513d0e17c95d2d917426435a97aa62ae4db0087621bc0b8816c0bb80fe47ea5d804cf752f6f39fb5e6d642c6fc018b74d9531d49b48c98b946c4ae562d4c1f4eea043a4ea82c9b30802652b6f479ecc2e211b36798a091c886e19b9165f1c80f43d8c055f2c95303cabb3ea1288bcfbc6a411bc0316b7f9af769a2f97004b3ca28ca8ce017ea0b2808280436335e28b9edcdeb3a192c25cedcab36933e29b9d5742848b861f8a34ca7df0eafa99b1f8b34dea1639eeefb3222068428908c7a87af201a3ff11e433084e042c43a92383161a21f56a4629ca6705dd08a7cf686eb5e9926ff83a352124fc0a1a4a75358f48247785c350a28b317dcbd76a953ee5b5e66d5c9944c97e7341d5c062df47e9bcf6745efd0797ca9dc7213390fc58412f09d053946346b84bab0f85490446285086625901c63190ce5dd132685509ca682100dfff2b1e3a9d3f0dcb7b82850cca56581524dfde737fe429905bd6fa02384db71407ac01d07ee55911e4b910fcb2fcabc40654d2d2f59622bb7a6364d9cf25ecdd579afe663f25e2d9bfdeebad16fc1357e63751d86d6c9afe448a07121acb8026140ddef3aa9ea130d363fa9659d6ef902826f4e2904f069497c5a12064be231a94123a6bf734ed2bab116b7e9b9ec4482ff4d83df07afe803793761bf8c243f2b65b2ed61c6e196cb923b806543b0871713d48be42cbc84784eadd50cc5f552daff6355aaa15a56c35f91ac2ea191509f847318e5f9f51bbbbd30bb2b35480c6d11784348a1822b59af6f08079305ba1bfe7e89ece3b22f30463989c4f5f1b756e550517b94e51e13f92ae1a4307f7297300690bd0dee927633e18d7c19e9b5a80de5f8a03ca040d20f2512e9e86c11d1577d9e5d7be1c6ca14500c5b36ee12a8872d9b1195c3c7a82fd193e42bbb5c5a0801dd8f416030df55b8bce29d40ac008c1ebc49902f4fd5fcd244ddc6871a4aa363420ea84cccde3d1b661ee3b16a9e1e1aa6cce2b16a5eff18667be2b1aa03f10dd31461d3ef84aa2abe07ee2edce226fa8d3b0cb98b63dcdb2ecfea3851d66ae36512f2e64adb34dff98f1f5a159fa9f2151f92c736009a3169e830f5effc24db3773b4207f830541a8000dec918e645e54211a9d9d52e837bfce5b9b1028b62a94a431c047604569b599d812bd4365853433ebd3cd0c9a0ce550ef9894f296036ca64f1cdec405a00ce8c0322525c4ad7c8e9c846e5ee5ce419c1046e231bc9a5d042beb8874e82245f13be47aae5e698ed52bd1a79aa775021cc13efe7b238093f819c99b50e060ff3bc039fc4791178d9af4e3b2cc1fdad04cb8864417fe16710580233e63aa143dfb30a43bb12eb8026b0bbe46369f3417d5c7464da7e8d4d806715dc7bb23dab7a24937a9e3f21e512d1aeddc05f6d3d2c33cc6c23bf99d185b2aecf05392f1b57432faa75e9be7eebeaf982a2f5febdf0ce56be55f0da86eb60115cd443d2be6ae4dde6b38474eddc9e788746e3a43d3756e3043a29774f860406b9d172a52dbdd40b7a64ca7c5a937f9b40c75d59fb56f8359512e1bf3558325454535b6ae14b3d345018750a8a86f3a6d4e64c8a7ad7ba1683871d3f56e3071e1463573dd5703aa49a16a4b595eb6d550343714cbe073e50505fe6e40233986594f9c09957f78a324b2fd3c7ed95a6db5445f04d751146ef81a57aec267b99374b26f45846e43b15b7eede2b7a2406f74d8eaeedeecb1a28393069053a03e94976b6f24a801636555fc3c0175f07a33a04f59529e6a30018d72434c4d2286535048be1b2bcea967b965bd62a2e916d390e934dd2d9072c6d936d310eb32ef2d1daaa9679a38299a2966bf554e8ad9a75b4c43a6d3ecb76428679f6d330db12eb3dfd2a19a7da689ce83d0a6bd10af57bafbd83be5531753af04e449ea22f657c68e203d8411693e09936672198541b80ae32e6e2af5a95c2ba121d6e101758b53bcd1ee0020299d71384918a59174740ea9e07a237155e12f32423ae7a2013d70530d590aff9900f7299ee7438be7318a3debe5e93131d46876ce551abf930c6a96c62739fc38e450bfc70d77cb41b39bc05e76fc6f59c8d6980b925f6dd096824720b3e58c33343f508836880dbf8022c454a43076882141d3d82ec01ce921ecc6d51a3136c3b2b47b225b8a1a0456f40816533be9927ea15a087a41328ce331eb4642b7587a0140c8243cd7d36d182964d68d846e31bf3a8090c96aaca7db3016c9ac1b09dd62126500219dc1d4806cb36827a35e64540bf9525b7c42c577f28cb3f3d6edf3ba467bafbb4ee832ba1c515a30c84a84c4284be64721ff2bfb95ca9ea2886966608015a3eed91860a8460a05ec71517a46f4b52bc39c3e2580401f13fac7c5fb19d1d7ae0073fa9400027d4c1021173968441f117573f254ed05eae860442e029123cecff23df2d3a48b80e9221ea054896d345b5251792cb9f8b3066399e7351fa5c156f217c223b1215ac425cad8748f7b7488cf69ad7d6fd00fa455497e0065f0e213e70850210415f18e7d012c82c0167c822c016c0e81ad6e74600b08ec8637bd05b0250416867c4e22016e05c2cdf99b4f016e0dc2adf8fb5a016e03c26df8001b01ee069cbb804f7025ce39282a919065490484a565a9159710949768ad1598109498e8462b3221283373212a4a0404a566bed04a4d088acd7ca5159b10949bf98d566e4250701642649608084ace62ae959c08949cc54a273917cd95312e94992ec47a47c5b7c912eaeae4c0a5182477781b50c6251a623ed99f7d9c9f846c605ca633392ed03693f8bdba88244564c5f04d99c37ccda511197c3080b3cb8b82e05459fa8aa6c3f3ccf08053ceb063f924434fc5c422bbd4015b2523ca5c68fa7e811b1f160814edbc40d9d4c15a40b78ce1c9fa6ce86cee3ffc9f6c36f701d5f0924e62f6a9b3fe0eb668bc45ed510f7c1c8153f20f5f509a26459510c7ebc331a9915f15f10e1ba77d3ae487bcdcb79954e93724e3dfd6c023ed109f2b54fa154ad1aea6b35c9df2efa49f2ac917f15705f3aa22ceb85d26c9d2440654a15dde4cfb13cd7bea0dca925359cf3f2c9e42c641d0cc6b3138ef0ca148f4cf07ba17434c20faa64b47ab322dc49db6cb677f27c9617b67952ccc902470bf5682508f71272692168a46d8d0bebff132e5a1c43be2d407cc161b2221d7d4484c903f6b2c4ac009063802c775c4efbcdcde65fee87c5a32b0010012a3cee3ea6043ababecb3b805c9917d561406d73a3a8d0ca5cb2ccc2fbff8ccabf273b943ff1c174592ddffcb7ff8a7afb6e919156592d5d7bbaaba3ec585f7c59777d9abd9ab7fb73bc665856aefeed5bffca77ff03777af7edba0f8bb06d33779f144a28aa2205cfa4589aa868aff294ee3ac4e4aef3fa1dd31cbd3fc3e41d5ccfbc76c77edfd2e4d49a850e535adcb77687f7d97fd53b2435985f6de39dba3d2ab8fc8fb5d11ef8ec86bbfccbcff19955592675e741d5c377d37e41deb53dab9b01ffd2af90e6fc7bd3bbb339fbe98dd655f5017735fb08fbc2950b6aac936dfb7ee5f6c51517663bf3bb37571aea3cd7213b62f5aebbad9b88b78d726dabce38a102d54a5703843fc8eafb7e3c7459122bf7aaa6a749a7977af7e9f26d9db7f8e77ff11fff20f7956dfbd6a7eff8fe83e47debffc23f9eb3fe4dbbccec9bfffc7c7a77b94917fffcbf69cd567f2ef6fe2ac8e4b94a66db3c6b8fe8f7156913fff3d4adfa13ad9c5deff80ce88fc06175d223c041e9204e0c3ace1245a9de2fe2683e2d7e08aa9ea32ef1ccb0cf75641e7f4bcbdc5c616593149b7670aeff9c36839f3c2cda6d777abab1e813b2c5e9c4714ef05f7373f9d34e18c6fd90b86d4e270b2d6415d803d3127a96348376cb55579ceb224bbf71bd9f68eadab8e91e70553ad894cc37cf0c11d232dd608c03a8f44acd1e0f53aceb558e700d66809601d44e6b8d0625d405843116b48d1bad4625d0258c31b002bc5d79516eb0ac2ba02b072bebd7342103cbf52a38838e5598e0fa026b4305aaf876423621f6bff74aefb0a14d2ab446a8795c000797b70793bb6c485b185cd752847a349f3cd1ce8fdee3c7f710f004501237e80ecb5051115a207aa1b3bbd48b68f45003fede50b9c0ccc57762dba9c4015f61294467694ce5f8ed2b91da58b97a3746147e9f2e5285dda51ba7a394a57769472154e4846f136808d2f80ca46a684c5a357e569b2073333c8742fd87b8b5997014b3a8a820b06d01b6c5827d3558dc1cd7f68aa3583636aeb140ab032b210acb67157bf984d0d07dcc308f8f0990cfb46e548e933730c9e9063e579983d78c5de2edfb32194e427050cd5940584ee19169bf870106d83183efac30382bfe3a181040ca8955f871ed4cd743c144516f394601878696b78ddc9d3fed3e1a706d53484f4f90a1fd41d57e3b877b8037793d462c14b48565d5bc61be6f701866a31e018f8683978212fa5ac3a88da3a65688dbdaf5b2ae3ce4324ac19c0452be1c8804dc515ae55ff1bdcbb4e428b9216507f9be6bbb7ee62dadf40603cccf93ae4f79cb1c21c2e5da5399c178f5eb8ec1e0700a6f542e9116ab7858e6e6cc5e35a885d49c4384d79fb1eae952811846152243230346017063d7fcfb13c34764751225658291abff6e0956c5c450710726e8674b2ff76dbed296fd193e4d28d5c51fafd8d1a7777e90b576db22896ee7fa4b56c5bf83f9dab3a393cf58e760887aa8dc1e232c8b6d5fc3ff123fe6453244e5a9825e29355897520e7e42905feb14bd7d7dd549287d7e2caedb1c836a94e6d4924867f2cc48b8b60ac3482c3ff2607e24d19069affa840432c1e080765a228cbe24a14cfb022248a67683060e8178fe58325371903f414f49059b371631df45fce79ddb171f84171ca68d71689a923a722ea3dd57ae6859b68e685379d3fe94e4c9b693009026d92b910da0df8f8d10047af305ccebc70be9879e102f0a3317d9efb473fcccf79da762c466a53bb3d1734192856d839f5d204e75aa40aa25e49fa069b52f4009f998521a97dcc1394cbc6ce0dbfff8b4720655ef38542704ec57b1b8e361ce57ece709cfb5e111a6f1215cfe24a133ec086e1499d523661ab8385ec0358fce46e09b0849b5301e8ee779312d0b8d3c10d6c5b470e06ffaf9d3593d5659ef26f7b4cf0c6292afb25d357265b04823f83d71918d01fae49058345b454f02f308a7ee3d05c199654416b6ecbe4eb2c13ec873cafa5d99b2524d256109f48b7cc1f982cbaddffe8da09f58f659412b549172766f22372a08d35bfdf95e7d3b61a3946723ae86f04987171dfc65a98acaa805eb3c80b2febf509cd92af7b7de2c21797f1290861220f1407d421a490b62dce65fae6eed53eaee3dbe414dfa32fab77f7bf793ca5b3cfe7bbeaddbdf7784ab3eaabd7c7ba2e6ebffcf2e1e1e1fa617e9d97f75f464110348d5f7bef12f4f0fbfcf1abd7d8965879e1eaf5e773f4f97c57c4f591bcc92dcf29faea357a87b27cbf7fededd2a4e07fdb7ff5fa9fc3e07a1d7aebebe826f517fe220eaf8360ee91ff627bca0faf1751737e8dfe6973bdbcf136def27aee85e17574b3f3afc39beb70e35fcfaf17f3e6bfeb5044e085d7ebe6ffa70b7fb1c3adc3cd7574e35f2fe6f8ffac432ff0afa3e6f7d0bf5ecefdf6d7ef5ee3817cf5faf368befca6b1b95f7f4906d9f0e0f339ba7b45cca12e987fc527ab5df5967b1fd7cb06f50af38a37f6fce0d74f058227592ea333e1177f772e4b2a0a8eeaaeb19bd2b8a8ba3d973f030eb2a47030abfa167a905fa80e40b493157648836064ab66af4547c7358a6c049d5077f2e811191ab243e1f2cf7f864e82dbb842bda31c38fb0b5d024e01c54470fb1f730e102f4d8443377d48d9a1fd0d62752ff81623a47cadfc68f13c13c3553b0036ca0f507ccfa5e6ee05d5407edf25e52e45deeef1abd7d16b6ff7f4d5ebcd75307fed95cddf5f0a6dc28541a38daccd97f7bc3aea72a865b95fa202c5f574fa899a04304e72389fca172fe080048f8ea25e81be49358c2a2852b993da2180b48e4bcd758da25196ea577043e3f55c68a931987200ef4ae74da50dd2f1ae49c058d619d31fa06b53af7695ea15bbfd03bd5f913eeaf6090ea1b82bfe6d5ff71b634c8b73fab5f705fb800a73ffbec4ce33715ae80f0c44752c93ec2d08337c82ba27e7db3e83054046282323949301c00c9f0432f8d43d3c6f94afb35a14e854d44f524494fb074209b0862014de1bc1e7f816a4d36c33fa1c69686909d8b889b13942d14f6561bc648de2d1cfee849fc463b0d2e3d38e3ecbeb37b2425f574e9751d1d5ac6fe687b8fc3d7855c1d9313ea749b9afd8b219f878dfe80d94d56f1a6d199733bcccbd3a2fda7f113b6be61dcafcf406be59dc5c5dcdbc3a87bf5e5d09f47114908e074270dfb29e245fa49d88c8fb11b97521b7464ce480d9169f491ad2a4b8edfdcfdd2b39405cd0f6101e96d623620af09b4090e54697e0736744d32432bc861b0abe6d508836128111ce8c263c00359f011758bdc8b84c85fb4ae04a988d220b9ae187eb8607f4d58b6488131d796db8434dbc05a32070b28c5cb9ed46870c85d2d21526650db0ef7a2babd6681bbc60a221e4eb82ca2077d1fd227cb6fd22bcfc7ea1eb42feb0503af9807443ad0009069a09dad699a09791493adaf3320c193122a7ed2740cb782333cbe0ed071aaddcda06c6cb6e34ec45389fe1cb66d3e12f2d0df61c55e0f34aa31dd9aab3cf2b89549eca4fdaf125b4633bf91aedd8b5d22883b6d928edc810f43232b9df044be0f43e21439e5d3bc6abd542b6ccf4dab11bad563bd2e3bd98765ccebc70399f7937ab67508e6cf1ece715442a19ee27e5f812cab19d7c8d72ec5a697441db6c947264087a1199dc1ed673c8433321439e5b39c6abd53c0a9d9563375aad72a4c77b29e5884fc5e13c98798bf93368473aefee732bc721e5f627e5f812ca91ccbd4637b68d349a80b41aa519696a5e441e77d13c986bacc651dc7876b5b889e2c8fd44dd8e55ab15a9d15e4e29deccbc46ccc922b8804e94f937e941fb55916459170fdafe81f38290f1567599bf453a71675ea4922719c2c51a756dbc80ae8d17420ce6b27db5a68d34e30881ef4629dabef6be9012cb038ba3915cd60a21b33c558a7b5b8636ea06574e25880ca2d5fe3e9848c2291e2a9f9067e2aa198d16c08c8a4f9c02f84a9b109f53298680949e4a284ed47779d6083a1b11f62ea9926d92e252306d1e133525d032e1a88bb7559e9e6bc4c51babf17eede1eb0700fd9539a52623661f790ecba87b14264bab05adb73b591a31d2b08b911ed2bae2b70ad5a34fbe9ff2bc3e6219b82fe3275ca68c8da9e05ac5599dc46912575cc12420409448e4f5967d94c6ffccbf3613be1b550ae1a1c87e488518683a376d3fd492a08315c4387d70390d786e0f49d9ad7e40add0cd3b01ff0d050dab8e6619fb6bd9cb2eb71009bb97ba3e573eebe2e676b07c367b3b585edee0d6f661145d681c0321bed6b30e36b08395dbec938c673af10d16c142f23efed979643c9ed5581b3e0aa2ed7c6e68c35b7284b3ec1d78c2dbfbe616fd723df3d6cb99e7723f661e103c2e0c6304434489e143205806ac478cc0e688a289396ee7a13fc86ce29b6dbc7127cdc4f0328a153766039826d80e5c9e46d8128f659a61cd41d45a913a74e2aab35dba522e351994bb2636f7a6b80c46a34a95c3b153a2569e0e595aed0bf83c4455c1853fc3a7f95b36b3be702801bec3a713a8219d0a0308bb56f817345449dac094c91a8bd449c50b24543d7d02cdfae630f90670d2dc67cac078fccf539225a738b549f5a34424d360203a3837479bc6c8e5e515408fcc55dc7e572a3405d17c828eb9591836439adcb3cbb790dd11d083d06263d79e243c74f2205c703ca2ada71dbc0988cc04b46189de7284e65ea1e55d9799b89a4d7b519e64e58b43d5d27e99e8ce4652a521b07bbe997961b39f86ab8d32b1e9b403d4d2a14db7a6a44c63b1e8d5807634163d4caf1a2ccf88865ac2824b76c01acd61c93b376152aaceebad2418df2822598ec46467318c679683386a8fc986279b042e4ab84b5a39b6cf2918a4a395b7371c4935331af491db8aa9eb0f7961d0187aabb989a5a0a2d578635790edc470eb054a35353ec78933a9553e2ab520c9ec7ca11514b15239be733b2d3cf1a21a4fbeed163c7ea1ad1b6b7cbd9c79d122b0db76ed96dc98a15c76f1318f318c22d2e5482c76475d3cbb1c6482dd71d4f06473c04689f39ba36b9753f04743ea7c1a4aadf64645dcbe766f9cb707e80db062ed48b5dd1a21aa5dd86dbd385d7646711e4d9510a812e6fbddee261c81ce66f5701be3f8be9d94f1440b6a3cf58efbe28845b6ea8ea3e162e9be2fead7db98a15c74e531cf708cde22c891586c8bba970c729009b6c551c3933d9de7de07f0fba26b9f53304847ab503fc38d54ab8d51f16643bb31de84330f7b5be746ee6515adb63b2344b613c3ad17a8cbd628cea4a91e02d5c2e1b09dafc6a0b35a4111ff72626ce74e0a79aa45359e7cc7cd71c442c3b7d5e1ba39740591fbeea85f7363c672d9d547bfc3327a9022c561b1396a5eb3482126d81ac78c4dca7ee69108bf313af63801733484ce27a1d36a53943fd9d1ef898b99b7d890ffb5db1239426d774480661756dbae4897ed509c4253c503a981c3613d5f3b7964ed178db0178eecda49fb4eb38e46d3eeb80fbaaf2db20d86dd7f5cb741ed3a1b3112f71517531d8ad923a944aef2b89bee85007e4998701f851fc56e671efd57b74f32bf4181f04c2c4dccf3cdb51675ab528602ce7406cf5b2ff0425ce7048f8dce984a7d5225f1c4af35f88e443d2b49ef495ab39436b35c687b50c3c01d41e30fe5e30fa5e327fd8dc9882c4329082f3f5b817cb6a84fc053bde6e7effc24db378d172604d0656a7a482041250049ed043d2470000720818d5a6c256887be93b55127a00d23e9865d777d47c01db488401d63dde3ba19830b9ca510b0eb2c5042d3170299932d501acdab7134f64055348a2a4341b008abee2903429409e2e19d69bb155e7579b08bbc68188f4bee14a82495c3a8d782cc0b0c4803ca51b7822f62a41fd0d77981b56d9fcb9ca9944a9eaff10da619245d1e6d9231caeaadb52facfd902da6d78c1c7f520e9d6f21193b4d9ca8d01d638fd5a83f8468640d8552052083104dc08b462c6bc857680a2d0ce0293118ba438f0cdcb3453e1b72413c1f3830d10d89ec68318eb5fa338a6504f574eae3ce2aa6da44b7488e74368bde0ed67ef9eb22b12d54e8d8d8ece764cbf4f1db76aad0117a845841ea71048697880377d699a3b83d169d468f8e9e0337e1b6dc90f03f5d22ccadd1baedfbfa206b6b248ebaf4824c993852fd4361eb44d1ecf6c37135169f27e2dd7d3c238cb58b07e6daab191a78ba38f991ea4e1ffd7dd9356e1d4b3f72b18f46377ad95f6288e3cda1e78ec99f52294c3bdce7560f5691fcd6684759218a68766b24135821133365da17011f0a57a77935603f9a9136c8655f16b80f67bc0972b118687b15e36281e8df238c5475fa38fb8bae6feb370b2317fa68746397fc25463899fdf16c6f1fa6d408d30ef7997583d58b096bb4a3cc0fc5a3016b2413981f133365e297171f0a5b277a9d613f9c9106c8855f70b88f67bc0572b938737b35e36282e8df7d8c5477fad70c975de3d66f43462ef6d1e8462ffb4b0c713223e4f9de984ca915a61def73eb079b9729b658471921f2071ab638263041a6e5c8b42f5c3e0c964ef30ac67a2c238d8f8bbe94711ecc78cbe352af69acf58a8bd9a17f5f334ebde99f8e5c72595bbfc119b7bec7621bbbd22f30bec9ec8d677bcb33a1269874b413ea04d22b17660c4512b30debb8bc47b5e44d87f898a3ff65b2e724f8874392a6f634b4059fc220f8dc241cbeef49fa8a0693417d1a82ae0fc923ea62aaa71dfa3b54d6c9aecb1d4be3f6f7498976241c7997a7e75326f42169d26121af82921a9daadb46bda37a776470481b7454750fc8eabc301a05379bed0c9db30a91aa747d0528c59cb16ca13e4321ed019d03db5028980ecc43f6a9070434555269d2f7d04a198d987e98d085dccf8b47fcbf8126f8de7e485455a54947c4576be20614784137a8890764fbacc26e58ca3716e4b544fbc842352af87d9ff868b369a1dfd4a6e58d6d1f268ce98a12aacb74416b7ff28180e86d26971bc42e4ed3fcdc6e9f6c89bbeb25564774edbabe0621fc4c515cf5aa0a3f606c36af00efe88a8761503c7a61543c7a37e028e06a32646c2d92b6d4db22b040e05407300ad47500a3e0e5eb004a4a2fd679d156e0c4e3c50cebff9497f36b7948ff1bb3d082ff226c2be17cfdbd16e725e8271d3687caded9dc2e218c97cc0fb7a8babaaa8c6c44f01819fcb282a21d62c9199659b5a6cb4b56b9c642f6e5558ae80984821665440271c34658d5d4cef4544904cb0052940f7958b0c0e5b10c8a64c7c4b1ac32a254c334231c72f689e195001a261045c634310ecc08a9b3507544d90b1513df03724515c5330d7f6c64ca8a5346848e91293df7c49019000d73b328ad302e5eee1b617516aa8e2a7ba1626e6c41b6a8ee652762908d5459b1ca88d23152a5679f78070aa0a11dc76665ebf53245703a8b544b92bd44d1be7890232a8ffb24bcb111271b2e9990394698b49c13dddbe5396be48fa4be11edbdae7074635f7adc76594afd2fbfe5af2d95c510c3e5d5ac6d217e557d921cf83e3be0ff618f73fd1108cadbc4fc76c8cb931705c1a9f276e76db2f3b7e8bb04956f82ebc632c2f551b190dc5ccd7ac061ac6690524a6c11cd5c6917d254bd5ccfd65c77e2f6b3f6e8ce1c6e85f56b1e5aff2550a5535b7674ca852696c146297a877382f881256dee5a00ee5ec13977229d1908d218dab248d77b0327818d643418f1c996d26804a50b09a59113b7942c691a44c5a3b7b2e35964c4335b7a233d6334f4ca383777e25cd3d14245eaa678f422690b092946acb32538d211bcd0122ce3ddc289774d271be534375f172b7bd95b1831d096ea4847f5c28cea05bc8135e669492eee9d8a7a4f23907754968e22c7349951abd9842719e2e4220c5246074fe445bc4beaa7dbc6eeb034d8c7ed43b0edebefcf5d36b18033d8984f6643b49d32a72aeed3ed72bb3c4de3a26a09e89cfa840f8d301dd2fcc17fbaf58ec97e8f32e9e981003a1ac556c010edcc5ffe36df3fb1511a139cb804a25fe80c32fe4431c5f940cef87f8dcb24f689b47c75f7aa2ecfa8bf9cec2383f85458bb3cc317ea27949d0dc29eb669be7b2b830741872b341c20c4b8589277c9be539a9dd361c9e65f1c6ec6bd2a4f93bde41421e664348001bd3d0c512d463eab896c45ef9338cdef314fe224eb90f43a3714d7702304b71ebe587d13521206fcee127ac6042f5119aec1e026ea7b07ffa7735527872732cb590de250b5e12fda4f49e633f14d4442b052f6d13b94d515906dfb5ca1d2af508a7635fdf5947f27fd5449be88bf2aa60fffd808741a3ff978509da38eb49c797ab0b82850ccc1f15bb15a2c70e02628184248a796fe2e90d2711820f8a4420e9808459917a86c50b77d007a94b71d2682716a2beb4a69fdcc9b7d406e010d9f012c75724ab27bff70ceba3047763b5936fbc975889f1ce12bfbeb30e437b31148a07121ac8e4493aefbdd58681f93fa42d266438289dc8f5bc59f64ff6f57f6c74596bb87407716d79c5cf300b73a2beb5b9de91c21775ca8ff67687b080f4bdaac5806ddfd4e17fbd5997efdc50f6f5bc4692a372d1a4356625a509f2ac917f15761a6e98cfcf9b94e930c8112a138c8d222f3129e1e615aa29bf97a11b1ef69c43cb244c31e51dc9bd6ee2f294c4b5d8c3582c5c580ff37e8d70acdfd107f511d4e68a6519795b449bce0e5b93dfd2cb99f49c4211ffec732b9bf50f6d3e634365337829e6d98f2998b61d6c74102343017d79df383717de053e6f005a569525409d9181e8e498dfcaa8877389af5a18c0bf27b5eee7148341be36afd3885d6968118870925d2960e51169059c2319dfcca67d690a10842cb56bcc593f52413245d735d40670b26ba8cdce6a557f96cf8f4065c23873caf3b268e11fae647c932245d60cb31cf2a779d271caff18e8eb2bdfa10deb7d252863f01af87a8b0661a47193f8c55e1e34d164803bf905902c59d0422c70cb67edcae75c1759669ded692a222c34bda4f4c2689fcbb93f925fbac4b8257740e747e0083f6ad5743f4f492830dfe671ad7e83fbff1c320f85c38f9880d5c08e65e9d1ad3cd3c2755931fa8480f0cce6d16472f8ba6364d9cce6491fa4c168d399369fcea6ef0634f622632f798d453c88c43b716126bbae03e56c90dd5921bfe2d482e3906136961b68be1d5cf88cd8320b1da3f0010f32d4427d0461b888c68fd1e22a5fdd336f2691b315e8c2fb193487ab6905bb3a5f7b14aefa7ada47d83cf1f41e4db48ef99d5ee220d94d51e220098ee207fd0d9447f303c84c024eb771009e5c6ebf00f2a45f0874ffbc7c7bf021d760fbdd0b8f46b21b3a68bee6395dd4fbb47576d5de9c162f712f3fd0323b1da404408f31d4427cb46fb878464fd0622a3fcd30ef26907315d852fb185c01d5b48add9b2fb5865f76f7307193269d12ed12be067b275405f1adb85fcdea266459202e9325d5d4db54bbd10f99a9df043a0eae2bbed873048e98efe2110f7c96af864357c789af7792c930f65709fac9f4fd6cf0baf414642a7bb257c76d23f009b474ecfc5ef373f0076bf949da3e3faa79bd94f16ce87a15d1d6c1b876bdf971fd6a73be54f568dce1f2979d04205147f100f5adac8f83bf583164cf5afec418b595275a7d72daa572cc6ef57189ee29f80670770a3e77dbf22d2f0d1bd5f910ed1fdfd8ab864ccdfaf186094098caeb9f69d0a011bfb4e6598fafe27f54b15d2edf8972ad2553ff03ec92a549b2c73b6508276ae69e2adfae31273ed933adea688e42b65956d92612e92bc248ae17639a0fae79aa7f8d1e7d35340257d64eb53461f9bcf5e5540c0ef92a6b64bc71f92a8b66552e64c8501ea3b987bb57ffb73f7eaee9564efbe15323a1293c329eba911e4e4843811f0221d4b4504e70a630545347d02303f7f9f7d4afab95b5ceab49b52e2c45ff05fcdaad710dc74f659385fefb6fb8ec879df3f5765604e11aa4f1c264ff7ab1c4557424e4e389f0146c401d51660b99364c5b99e8d40d0ae5baed203e6a30d6d2f2155dcac2ad43640f087266926a433f5005ce44081009483e07073b30a6c68b39303a650832006fc57580ad8620f8642d0523b5208087b442160499a560698ecfd2e32a04000cac0fe6613455b1bdaac6480ababc00b81f8199402be3a83a118d0f5c5ddc58070481003b10cf994724027de771103393c2c05dbf97abeb6a0cc5208e86208a20c705f2522c01454309400aae6eb0801c0cc0104802b0deb30ff54aadd1736e27045dfe13f8a24862f6cd1294c4fc329101c738a1c8c736326d81b842a6c8e969d5884cabc132ba15b47332f6c0e23d12200844efc0c4e1fd74cea8cb9b0b547b82648214fdde4526837565beb4e2c1e65de89952cacc2991705cd6a5d40fa5dfc0c32916be6cc9f91b240b826c8024fdd0bcb82ad9527967c32efc46eabc7251bd78dfe0e2268b317bfcbb723aa9d338b468a03619cb8f7f3e4bdb03c589a7b62d526e33e1ca421ecfe239106e6bb421a8676ae0c1a2d0c0ddb24c24051774961303d0cb0134fb9b4c9758cc29b7d4ab2ce794db7a67cdaf4cf32b736a681ba84a7615254d7a8c43e6fecf0a7bfb5224aff74c8b39afda544a40cb1d2c5469843e7daa672350b76197f55dbff28ade71c88eefba244bed2814f68babded7cd6f84fbf48e31d3ae6e95e92d59b364f6f1aa3246cfe13e1bab80a6f6bdfd9a97a9e8e2e8b1e4a7265200064fcbbb40f9893a6ab57ac1ff0d6954ba418b55725c697b145a9e8bed54b5d5a60056d926b203ab4f25d5225db24c553d10e40da313d89facecda754a2a447f417de744659142e3432847f399dd33a690447577840056a2e2afd2d29ac23b84bf86d89e2b77ef3035f02a1cc53523e5f1f01f5bfa8e2bbfa8f53e4d62bf307e17218fa0ec695547589eadd511e58d2359072e26bef0bf1debaf9f6d0c93c4318fd8181a88e6592bd0561864f0a2af08f87244da5d484326a42393500ccf0494a0dfe89245b9cc91b1ceb53daa61256b4620c0be03b41c02ba0de8e50d3486dccdff949b6478fb75e04dd3e03c1233274f4f6d0230d17b23b6d038c5c0556bcc4fb9a274317f311b860a29746184b14eff32c7dfae3cc5333a6734c69da314e2c9e24138ac80f32ae4927de8c81a6c8dd386ab3683cedda61da71a480026926e6844832402b52b520406be9ca664663c6577264b423590702b4e638bd32a3ad7d6560459c16066ace91b73622cf6495b703d12f73d29059e756e3a688b162975367a664da53684d9c9c2e6e4e759aac9d535889d94d85350e13706e38376386e3a0a75c319923e1f70585696730427bb5e68ac91c093f4233735186d241393aa3b2c0c20f321a334873152b23ca54f34ae0472864ed88a698b9294973d3ea238639d508ad07c7c9e8c6dcc8ed4e95c94e699202105a3316ea05ff44f2f5f3eb4a6742b55be86d7ca84d15a1be71cb693326d082f7351f763f0c446e6c41c95a7adf02fbfac00f6511e9ae182517f506e8a8e9f67ec3fc055459d01e77bbd29a0f655c14cac9818a70da1e66bef66e0f49c9bef3104fe8dd158b128ffab90858768adcdbe00e94a81bc56289dad0af206e0c321e383a9eccde8dc8700f88bff6be18a40f1758bdba48676cb60099c3d1bc98875967fc9a24cf26548b858717c598462513914eb8cdbbe1a55c90e85ea6019ca0ab5b75fb4786d0d7b9ed5fac7175cea13b3ea8fe6f4302f1ccec8e68f716edbdffca6ab924db27bbb8ce154f791477a80bea0ed5973ef99187fab7a1f0dcd7e414dfa3c13d7edfb01a65f59b34c9505ccef0dd8a57e745fb2fc2ac997728f3d31b4934ddd5d5ccab73f8ebd595401f4701e9782004f72deb49f245da8988bc1f915b17f27714eda4b767950f592e82d53686cef32dd18d5eecedc6abf65c72f9a1344d22f3fa41015ac69b583e8a3e66d19e70f0d21c0cde945d038ed50e1aa6293b1d2980baae8d854ac68da9c4eb2282d58f47142fd9782e23688b997713ccbc700e5c377713dd1b30e47e91e49b68bddbec8bf115b87f4a10a8a867ac6f5f829747c992d4851418c21a50d31d625428d9b36bb7e36779edc7699a3fa0bd6514078d9bbca5d53db055bff766644aff06564c31c51554ee0f883ee4265372d5fa8d30636576af6a25d90194d14a063b4664b4f985e2ba4e93e296aa77fb287d204972565cdc6ada3c9bd5b4b9bcd5a4eb02b2b0bbe03344b2bff4eff9dbbff9e0bb53b2dfa7a80f9af349945cd8955aeef8c25413ee854c2c4c4c7daa245fc45f8d17121b72099c503483679fa44b8d4ce53e238a765b09dacef09bd6e08bdc0dbefd068508f23572fbf024fb6f1434f484eb86a82efe4ab671482922f7326a72fa703fd0be5c5d611f431f7fd7b6f6f3c3a142545c1e96efee235d857ce4067b48f3b8be25891604551fb29a1eae7b4af78af38bb488b925ac8230b773e6bace475b3cda1e8c6c1f7b2c16569016b97ac68789919828e3a86cad17095a6c426ff3c7760135264c8dca5392c5f5c48ae89373e5d7e85c61848439e87ec8a222f3b740220f9f8e9f697453b960a081f5c764d7b14ce6959952d38c71d44c2fcc97f3dd5c5e545fdc9df3dc426be0e1614952f76970c1068d50e7b4e21e8f097bc0b94cdfdcbddac7757c8b7ff9b27a77ff9bc7533afb7cbeabdedd7b8fa734abbe7a7dacebe2f6cb2f1f1e1eae1fe6d77979ff65140441d3f8b5f72e410fbfcf1fbf7a8d0560e585abd79fcfd1e7f35d11d747ef90a4a95f9e53f4d56bf40e65f97effda6b0ef3fc6ffbaf5eff731879cb9d7f1d6dbcc0bf5eceafc3d0bf5e87d7d1cd3fadbd9bebe54dea47d7d18d1f5dcfe3f03a08e61ef92f163d3fbc5e445ef39f74eecd77d7e1a6f9ff8bf97574437054d7cbb97f1d86d7ebd0bf8e6ed2a5bffc9d80c56b48f8ee35a6faabd7f871c4eb2fc9689ac17e3e4777aff4336da3057e5d13147aeb7fdf4cd172d970dcbb5e2cfdd00babebc5125fa886c7d50e7ff3421fffe687958f1b35ffcf95afcdaac86d960f97a65dc435cddae98cb406679c0e76546bffcc3a43c88b369fcfc85b97222e51567bf3e8739951e688cc7cb8fa83363beec131790df91e846e4c4ecde079577590ac1e927a776cbdab1af52d68ead5ba312da29917de006fb1c46ee8bddcba33fcd6768e5fe36b36067a4c6ebe1bbe73739737d3b7a9e7c5c4c962d29fe1450b6daa8a69e1d4d3e6d487d2ce8746307ad6342638d8a7eb6ca9ad6c809de66e9b8d6ee18ef7db68bb3073dcd8a3b1f1dc68b11b6c62ccd50ab3ab85d7eb65eb5fe64d54efef92539197759cd5b47b7a48823cbc9ba7b04c979d74a25ca34ecc334a3c4bdfb47519a12338adecb27d4c6f9994dd269be7e022a1266b17a7bb37213a79beb7281eaf987b05e81b347bd82be5366316a053e87876d6c8f4905106c1e79eef85e8a4e9c8c5c1bc581aadff697ccd369d1969af51082df418df0f7cd41e6792d1ebc3c4df338165c6f4b936ee734a038da5e1c69606d7ad7fb99e79cdea3577af4d6faf994eab4b6fd1f666b997a490babc0da74a6c77396b4ee57e52f66f74d675764ade7a9fcd6f16dbe5cdc43226a7cfc8476e6259907ffb4996a1924ab98f2389db2006aaa80875d1165cafd1c9c97621a1d362b03690140588c9b98e5a438ed97782ebcebe63ea2c48efec4c08e4c3bc69faf0bf5304103850c25e31f774b38520b43c34d40feeaca687f202b4a9b84c49817c5ac510c73fdfa9cbf9800b938bb5334f6b23f6af3eef8cbef96855cdc56f7183e5b35de306cbcbdfe32afb30884d36dba986592295a55c638ba7ba845ab9df944641b49d1b45474f1ac524d86d06214c76f7623a85d595b8bcd8659b8576392429a2d3b438d7c2a1a3183b3dca47dd509d515d7241ba6c6d29cac912051a74839cfcc61b1a9c8b348ff76c82231e92d5d032e84bc5caf15306789cef144910edd9c03dca75e3468b848bd8334db8c8a4e096314bd4ca3da6f1c1eace6c235e00ba58ed14a8d89c10a3a6842670627c74d209bdcccbfc010e0b775099cfb684e18dc2c570735fa1130d9b59ab362b13e4816a593e2b7bc4953815a728cc46ee9fb544b5747fb687063ab7acbc3d5372908a4ee5f76aa646268f4e947a4847ab2f47861a71cf5b4fccad9c177b01c0d820774c1edfe1e18de23d0573209cf3753cc34d14442be1e1c5a26d867f7be8a72790de2d4c5f086f7441bb3194908ae971b643fc3b13f00bf8e3850b9eea1f9031291fe83b2eeee66013bcd0331b40695d2abf34d4d505b24b03dd5c1239493026d90144d5fffc25e304a2feb57e2ad05777af2a1497bbe3ddab3f2aa9c7ea108e810c68959e7c871562dba67bffc7deeef16f5744d2fab44c4e6ee45037595cb62d78c4ac77edc33ca2191964977cedf9e931e7051f738a8601edbae80c03bab479ffa3e596d4394834157cdbaed7019da65ebc7261ec9c9ea4ddf0d6f2f765fe5021f6c5a54c9e99e3e107f686597ce8291d8578b8373a223ccfabcf7e40eddb4fc589cc64ac3af54a8f96d5b2bf569f8f8a0b12df8e2148ebc3b1e0a4797f32b0311e19b1afb6d8cf0b6c4e532ee39633130de3f28b933fe38b6777e6a82fa8edfe57280900776ab9e1e290547dcbac4e150c6f80d2c76e8bae99c9a376d2de80a577d2e1c7766b5cb27be06609718dbf9de01c526ab7e13837c8782f896be94b59d1cb3bf14a9bfe697bd8ed64c140f6c751772fa1f15174aa2e2e85984a4f6d74be7cd1eaa966631a791034ee873759144d9dcf8613fbfe8d8e7e9fc2353e98700d401b5a4d2e63081a3417ee302c8f1ee3699d4e1c157129171bffc5c355fae1b5412b66769dc1c8cd7599fc20f6615ee8d91db32c073eee7ece403be3af245bb35f15387cb50d68257ff84714ef4d03f19b56555de66fd1adf7d926bed9c61b5372d407b26759a39ad3d407b4de5ec6cd4a13909727ba74df1485f7ccf360d327a000386f51d4a5f11675498bb628655eac74a9a0e5d0f86f261a964e64b456c3e1bf8f282d9880701ac192bb6c5deed6c126100eb891ac1ffc2754501fee5a9ef10346c9d46557a30cf69b6019e85132e5bdd528b787f53c5ae951d215a2d51877d13c98ab891c52795ea43c24297858c765cde090b5d1514a39171472de0502e0dcecb04b45cb1267f44264248bbedfdf07dc339396d8c77f3ad74369136573a55c48dca9f4ab58780319bb0e554f7f46af4852eedf06b9c5da5455dd1fbb4a5525dccd54ac912fc7580e0d6144893404d4cb26608e4a8493f888a07d5919de2cc130fcc0bf8e6602a325b15e302612a44fbda3314ae5a8c235bc7bb9324ab708e36a0b05cd8046600d22a0c1509f477dcf694a0bcd252d5d868d1b1ac5574c5dec8f316503cff58419b5c574f12f98a06242025d4c7520d38b68fe6699f2ddaf35d2d28e0a9d8afa8977fccb0015059c20fb4f8f85ee9e7d6a36188f87f894a44fb7deddab7fdce55915aeee5ecdbc2ace2abf426572905ea380217da461fd942226c68c64e2a91e7df2fd94e7f511b3e2be8c9faa5ddc8618f6b614d72aceea244e93b8621fa148060d898f209a1d407794650c15dddcd6f13d0bb0345743d8cf7dc5d6acc2ff3c2559728a49ba7d72cabda221d4a3827033c3b5ec8ddd2045791bf6ac8b8c55885d7e89518b66c125c64ac9ede5183a74d29c18b27d5cee9fa7372672fb9926d150115caedf81c72f45009543db6ccfb09e7abe62e4c443943f0e363e804d32bc6957a78875d2e508a0bfe4fa0378f45c1d5d7a85c938398d3892cd4d5b6ac60498b317cd03bf788c54e889c452360f34d176a336d6787a8ccd36de01aac3392a92c8a21f59d4900e0effcb2c724887caec38cdfbf8ccb0ea0ed63aacd5294e53f5210d12bd88173dcdec53dd0cf6fb45fa30106f8a1863f15e188f0f90ee21b69a7bb353406f1c36d0528816c0523067bad552e0e1544bc19204b3a5105972db6c29e8b08e29676be662a31849ad389998520df1278376fdda821eda189e20f9fd4ce9a175d91b3517f73c4ac8654fadb1cbbd06ed03dca67d26ea3254eb00bd691f8019d369137407249033e70717a8620c08587f42bc8a394182cbd0a45c832b4ef1224a8289b97f325a29cb99172ee733ef66052d14feab3091c1e1e666153cff3a11076ab04e3a62f975c28c72d265229269b54c08c16eec305b2622e034cba4c32b1569312041bb4cb438c52b550926e626d56499e0972be13c98798b39b04ec4cfc254ee6f3651b47dfe85220ed560a174c4720b851be6a42b45a4d36aa5108addf861b65244c069564a87572ad5629c8d76a568718af101124c745880d942b99979cb25f95f609d705fc579dcced7f3f5f32f13619c26aba4a5555825f420275d240295766b04d3ebc40cb32522c04db3425ab4526116c3c6b40b4487528c71a184ff53fa9a4fe96b3ef0f435bce05e2e2f4b87fe02b9585ad45323a473ae0c5aea85f3ace89d74bc276ef27c2ad61b8a3e878a7cf330d91978adf4dcb9520642a93ba8896e2d06b4fa491f2a3e58dc49e07f1167e98bf9a3071af483c4cd548394767021df2d6743fc4d3ebc96b3e3322fabf59bc918b45322fbf5bf9a9e42dd2b71cb5f148edb01c6be881e7ae7dcaf1fc79d0230b20fe10a01206b8a1b0368b4527b836d67793885c4f7b2027441f99a42774c21681fa85a9c5e580d7867a02e4709b080a6f3a77f0c3744c0b83e800b2180aa29ee7fa0c1ea945edb6e3aa57711e9b99c6c4dad165c85cc51ee9e7f642305d58075e60acf4d780534ddb5c8c771d7078cec43b8da03c89ae2260f1aad4ee7b5eda6d3791712a00bcad7d4cac155d05c65eff9873652580d7867aef7dc045840d3de767d0c37b7e2b03e808b5a91a829ee6581a1ea141e69369dbebb84e05c4eaca656088ef2e52872cf3eb09132aa679cb99e73925bca59bc4b515c720915a8e6357aace312c5bc37ff143ffab4f79fb972a0aec744f89927fe86ff45de7dc9be02f731fd350473c59264475426b5b47f1e5b4ff50608f6960dff6ffc324364cbe4971a6017d35d6e40e82f81f457edd513c733fda507c03348f949d6f1335f8280a9a2803c34742234bade439f968dba77e671e27f1eeb53da960e9a499a10652af9a806add2648fcb14825f8bbcc8dfa112575d2a10bf37c0835cd2f5297028cf212f4fcc4ea2a0d353934b31a36d4968e2f71f3e92aace0b38120a24889127911456dcf05f435a248b97ac105a3a379b2cc398024e2f31426b89f0c0ed480ca0416be3eed5222654ada5f32106bdac41d36dc62b6a544298025b315e8b70b05c80e95b48a70f3fbda3d05cb17ca91b847c315fc20f5e7f822a49b37d6b24dfaca17e0d68b6ccec7c4265b26b998f7f6a73b50e31a7dd1cb3799764212b7deca318b2d27f52bd0c0fb820cd69a815735271f167648b0f26eb8fcf352574d776e8da1d3320bba1b603bd48df06c3c60397764dad657b696ce58a5af2cd0ea85bc2e2d6d6ad3f60bf1312d1b68a52cc47cb7fb848c24faafe1498ec93fadec1ffe95cd5c9e1c9ef2b530138546d4c83c5a17ae6fdb25e3636b041f4355d6babd90ea491d69f4abf7d94a5dfd425d97aab5315e41f2df1f4f6d2260f439746af2b9585f7b5f705ac30bef6be1077c946953d74db1cb3e6e90f0c44752c93ec2d08337cd2d188bf1c923495d1da3790d21cca680ee5340330c32725cdb7b75b74c84b04d2db7f949e4ef4b3d25a996d003197bb0fa007e7445453c53651d00664ad543481e8d5cc385b051ff8e4e43b7881a264c0d0d88afce03719ebf1cf0a78eafb680685172f7706f0863f4248be2af9a3c401b87c7e85f50b159cd38988a2f6861956d5d2d4d542d4cc989178dbd02f03508c410dd2ae2acbfa8a1461f8ef36df1a68ae030d0c3d938ae505208558206d66e31b0d57eb99176e1ad1bd5950f701d816dea35d5ec6e464c0d796e90c27f32140a2a268274809d0562a82eab6560cc28166f3c5cc0b171be0c2c49a0db0c253b6346145dfda5454b8f6c6ec36a69f6d6d8ddf701c008cb8ec2fa3cc555cb5914c3325af9f43a73e4550eb99b25e85aee305e6dab96f015cb25940eb1fbcd9d76c1bea46032ea639955cda6543e2b1da6c4dd4aa602fd8ad866da45c7832853a7c66db9e05232495fecc3630cbc10805d34c37408be1488ab2996f9e766312214dc665b654157d395a561f85accab4d37c33f3c265a3a2561be051f927d9fe75c9b6767e2dde1e9bdaa196730e046b985bb216f32e8d88b3b3831d4767bfae8ded56f33eed6d72075977984f16ce52de1de79581759a5b3906eb315bcf31003df29462fc06dfe1c0e2b866dc54a7e591c9b2f791c7a851da63243f6c0e384e948c3ae88d587b23b6d871b26240c504c7d0d15a6902fe8c911d35220b43c5d86b827f62df6b9b1de6a19c02f2dcc2d644d8b8a040486369e2a06d1c1a30a863cf66126302eee86bf810a64d26e25c3476b8bc9a9cf28f67e275dce3dde81330cfce33adce28e1c6c03114300854c6216d04ae665e18ac1ba53bb77555ab9830521a9c1dda3ab64c21a5002e73911dc35d26c6b02b9e42c640fef08f2876121d33cc6494555de66f9126f7befd76ed60f480188c2d1d6373c1a06f5d0181118c713fa92af03832c9edd43a62878c581d3f2d63ddad6d152257d6ba59d93a4a26d8cc47f34744e6c82333e56d47919bb131ad208e71bee9d35a8db265c689e3184f9dca389a4624a7e1158b6abc585a1a70eb68e685ebe5cc8b1681bb134f357993ea8291ae3e538cd3882d4ce3d466e8b4c23cadb29d9cb732ac1736a0db945656a63193724d5e48c79a0807e7020b692b801db4c3b1870375ecd94c7a4cc05d7d421fc0b4c9249ccd42c7bb84a620fce399770df3e6d3f3cec91f2349b9e7c6bf3114b81814e1bc8d5bdc00f6843b0347cac2240e21882b53c8a8c57e2608ec18e65ec01f648599f307a98accd96fd5ee66118bc1d6fcd19b0a067db3468358296f046346fb83203c8e4c1ae50f72d81d3977d0b47c1d6d8e83885c393bcad8965232c1463e9a3f2232471e99a96e3b8a9c0c8d69e570022f8722e7ef283b669c344ee00d020da36924721a5eb1a8c64ba5a5f1b6ea42bac2c5721a6f90bbfd65231293e98409bd4166344e6d834e2bccd3eadac9792bc37a59ebb9cdf36b651733b9a8e5b562ad8970f02ab090b6f2d7413b1c793850c79ecd84c704dcd519f4014c9bec5d31979b9bf7064d41f9c733f13aeecda7679e9333469289dc8d81632870b1287094387ec238b77ecbaa62c2486998c41f04b1650a2935dfd100911dc3dd0b3884ac30730e21552d75fbeddadd326231d85a407a73c1a06f2ec9a250107e0463463b84203c8e4c1ae51072d921398fd0b48c1d6d9283885c593bcae0965232c1663e9a3f2232471e99296f3b8adc8c8d690571025787a21cca285b669c384ee012028da36944721a5eb1a8c68ba5a50187731686eb9b991706d1343e21771bcc462626d30a13fa84cc689cda0e9d569aa7d5b693f35686f5c21634298a62651ad3f57a3abdbf8be6c1dc31e6a02de462ef5a60006d85af057638f2b0906efd9a898d01b4ab33e8c5274c2ad74ced22de133401d91fc98c6b18379f9c6f4e1e18b8489313ef46f4ef623fe0ac7e8b0df95f77ff0fc78071523089f70760c904b269b373f1823a82b117f0fcd820e61c3fe22a73318bda2dd9ddfa6110d81a395a8340df33eff459cfd7a39fcb59ecf57a0247b97c0c773f532acc5689e0ef9990a7a3ad6d088f23574759d2323ac66fd8637923e272e38f99a2b6a2c7c99c9854fe26f05ec86b418e31564649e1042e1ec8f899441227e1138b69b4343ab977c2ee3f53b8779c6d2c0b69984a114ce8db31a27062237352299e54b94ecd5719d2298c63528089fc0010497f66cbc12eb8022c5db58a7957308eaeddb3028abdf2e4744448d8cf100117f73429c3da975f98df2cb6cb9bcbd7f50996cf56d827585ebeb28fb60fcbe498edb4aaad6959232936f54a96b692e133d00e624ba3da80e3d931dd820816c1626f4ce187c362e3b1afc6966c8982683b9f1b966c51724f673d29da2939688817b2962c0ab980357d55555c46a6cee4b9612e2cb62609c41f4bd134dfa85936ae8df960e8b0d26ca4464864d1c4cc826905a077616de29b6dbc99a47c91bd6cca8a0c4d5b49881869bb3ce3c81f7ef7a89f6f6fe343dda9ea22af1252d525de56797aaedbfa8779414a93357f5095cae84d64b95b079bb66c2aa9b5e8a37728ab2b75c128512c65948b8d80df81313931912340539578605b89d2b85955ba8a9229aa1b0e5545bcc30502b3bc3cc5a9ae149d7faa7cf458c4994432a9061cc9da2950c90b6b2db413ad4306d666e2be727939858239b0a2110440d02212cab787dd6e6fd381c6d4518e4634aac0e34d2baa33e511483243522c72048446bc9ec3885dd0f86f05b974d546e89bfca026d67be481c42aeeda49ca8b66c549e7867ce6b708dea074b0823b564b3a86540f20784063a65e78381c530ff129499f6ebdbb57ffb8cbb32a5cddbd9a79559c557e85cae4009e67efa05af743c3fa2945bdceb9ebaa91e6d5a34fbe9ff2bc3e62bd745fc64fd52e4ed9d2a47cab38ab93384de2aadfb7b08ba0a1f9eeeedbd537abbb57f4e0cb739635a7f21a3dd65edd28ef19f93f03aff19f4cf1e65e550660f55d257aaf3e4a7a683e4881f632a056bbf6e55dc3505188fe0e2a20ec4c2ea83285e95e0581ae0bdde0e45a19c2b6cdf74f5e5d3235b9e5a390b5b6432f1d01dc5a5e49336c4b91434544652700c9ac89df0638aed5f09b6e96559a4932b50674ecf574ecc7d1613ecd02714a5005c512387772215ed2d8d4b042cb696555f0800de20af5c6fde9eff26c8fb20ab52cb204912c3fb2bd9de234d5606ddbb0bad4c7a6c98a73df12b71ff9dd7c78555d26454369c7e3ac3e120ebfc9f7fbab81cd627632ce0d60c756b26161aede6679fd869edb2bd9cc76f3aad14276fdb7031faffc5cbbb51bffe4a4e82542200f62157578ba78efcf2731f88cdefa807a92c841465c19bed24d3667dd18edf9df8980ee6f4b0a16e2367d5115c13b12203be1b9748562177025c65a715c9486115a6472ba265229cf33916e1a88364554bad08026771dc32f30a58a71a5c44cd9f0a4b0bae62d7af277f9699b731eb7feac9c2262ccf45ffa5fe826fe3e29d1ae7522e60ff87bf73fb2ef1d3c3e58fa498d4ed5adb7439831343cf41d1cc1d7de1764140c65f725bebd1249a23f3010d5b14cb2b720ccf04942c1e01a925112ca2809e5940030c3278892dbdb2d3ae4651f1c0130e91497f749d6c5162c5927c480089d8afa4985ee368dd9f5c622665dad79dd80ee9338cdef29679e10f1d099cc0a68b26af0bf7dbc22a8cebbb9eb5d1c3a3ced4f69bc454e332762dfe5e9f994b144c5e73aff2df9e1b1f7956d827747fc63a3570e69fee03f512dfb11cc03cebfc974437e42f1be7fd4ddce42c7c8c8185cb65db50887f912b0b9ab10171540c3ffe95cd5c9a1194eebb9ab8a7887fc2daa1f10ca1854064d7901a67e4bd1019669c2b561295c81b310727c1b7cdaf2db199a8de416be170e5a14b94f822b0f3dd62d193c018474bcceafba85de794e0647e82befef92539197759cd5ac97f48c8d01ea2b3fc0afbdeadd3d374c323eb025a6e75f1b1dfac7968bcdbf6f9bcdb34459fd4db3b7f190fd2629145e69befa551d67fbb8dc6b9ae1db06a08dae00dbe09851d3c2b633a08a0330a34fac02c153c5a62295d202341328304c472ee7909816d58a2a1d870c339ff254b1b939a4b400cd040a0c7374c93924e609b1a24ac721c354203c55cc2b162929622ba17fb3f7aa72f608cf696c48d23147fb62a62ae24cecefa3bb1283b7278805e4c6d666fc51a01e7f14fc8ac64ff651ebf1f3634eb2232a93da6ad8526ad84d7d42ce70eac18ff77bb90171f7ed6afe2d7b93da01b56628b1ae5408fee1468d80986c4a0cbf936028f387ce4c53c26f14f08d6dac045e4b80ebdc8fcb3a39c43b35f5eb6fe4080e79ba47a512fcef23083c298b34ce900a72bdf83d0489ad72628e2bfb0de652e8d61c57832fa5e05a8909c0216358bdb0040b19f0a9d91cf4e2b28ec019ef311cf332f92ecfea383560e33a5a2991e978b18ea4bcc0f05a7eac23353f34e2bf8ea4f388c1fb238b092b4089cab2bc8eb19349b90a0308b628d264a7055ecfc1310cc095b2eb2884a0cb41f7e826310a6f401548a3d0cd6314de804a0ce3d8e70f2a0644e10dc8790caba71de43c8635201a94deb2d5bb069d83aba7873720005ccb18c15925f85178239df68a52016a14e0d22328ba85a346000a6e55a332a9de4a21bf8080ce757e8aeb64e79f8b7d5c23b5c82fff0140b18df7f7ca0d67f52d2466db38f37749b94bd5b0377f0fc3bef5e3dd2e3f676a25b782092e77f95edded1a12b06d1a6772f6dedd7d7b13408b02db9768ef17a8ac341a69052de66d9eaa4db1002436cf95b4ae7e0ff795bf3dc5a51a3284ecae6dfea8ee0e9c8a3241875d5c6926035a2fdb73a266cb3a82446717a7bb731ad7b97a4f0a201ba9b1a79b23a17a5b80214fa88cd5820ed9d3bbb844b5568fcf41db86c0ea54e93c82f62002ab55a3f308920402ac56a373d08cdca134f5ebfc416330aca155b63b36c77bcd960d767a8c4b8da50e4ecd3156436d40c61ed1bb12eba0dddb87b854afebbf87964c87412314dfaec02dae833ee4a5b6fb6f613613045a631ddce43a68bdb90e6e711db852b6be5d81d681c15eb302a519c3995954dfae36a0a8d028b48cdb40e74206859e7b1b5009d138342cdc80ba3331b0c843b0eb14c5ea9def1b70bed3a4d8e63a390d415ad3fcac028b560164c861303ccd691eabbb050d60027f2ef4d060ef3ab36425832246861216e6707eaf045ac040691a1715f2e35465a77ebb5e81fab6f50fc54ff9592dc57f0faec7fcd49c30d5d22b012ce232d19860ab39a8361bd84ab9b9ac6fc0759b9f8a125515524bc337a02ce5d92129d52eac39b8c9e45995ab75ddfa065ca679569771a566ee3752c85c290dab35b89d95689fd48dcda0e6d0021c68992b27255a87e06c961a35befe3db8799db76a9e7e0359d40d94ce99bafe061c5d0359a253fe4eddeddf83c2732edfa1bd5f364691dec459c35a5bb33ebf8526741f5747adce5e2f2145b68feb78ab3b0c6c209db24729aad5700b684af728ad5566f91cb462f6a84cdea15691a93d4cd0bcee51f556e75dfe1dc8da24be2fe3935f97482d11bf0779d4456d199820e0ecf4f006f607e4df695fc7aa8fb2902ceff3dd59abf3e72a483f2f907aa642c870ebc1ab635caa591e8213d66c94f2b3cc7f0782284f5c01e8f7dde767fc22021fbc8c9c50dfaebe81342383c8c015253ea863d0181e55d6e0619043a2bf4f82678041a2778b83562187456d3bafc16b8a7d7ebe3f66e7dae0b8f90d2c8a06266904b2a08ceffd639ced5364281beb109c540a8f8968ac43c876dc97f183dac48576a23d56b87572526b0fb8c73371e86bfc8c90f5d698264af32280a60afd0929affea2f937d03ca16c9f971a43710d7a6051f60ea579a11a60b40ea0ad089571a573b6406b1395a5da81b65a40b6103a97b952bbfd0e9c8547e2db51ab7f4864d1e32e3def915fe66a99fb163a2f90e405fa330e6421a0c722d7acf239c8d727e4e787835a3d803c6a00d54a76090eb281d3ec8d2bd08b7e88abdacc8df53b481430b889170a148903d21ca896903834507e75de56bb32d96a16da061c7392aa8f63bf83768f4392ea2ed5e7208b309cff1621f57e033a8c5ae034d19ce6be8534580b6c70f600fd44873456791522d8f9714863b57a5fff0e52618734ae8eea9b0768a51dd2bc289e1a9b54734b02994938b27b5bc6d94ed9f3fa1b789cf943a3ecd5909056c19024159d1a1832853170f9ffb3f7b63d8ee34882f05ff1566380ca592b5b926dd9598d99dde9a96a60807d800787bbc32c36e7036dd3b6a6644927c9f9d28dbbdf7e1029c97c0992415959d5dd5777d89e2c8b110c3282c1603018419f526ad585ebbf42d68b008c1ab761c69f1dd78b207f59284cb0cb0ac7c1700512cea173c7a07f04678cc33ad5237896ed80d9c1c1a1aac0c912c1dd248037228782e56fb2cb4a62864c73ab6f700d3a230f85e39c06ba560e85e3ca71016d5e87c2ee1d5b839708874b96616e033646e0ba21ec42d7ed565981daf59265f5aea20e9e82c121874bbe73bae03f41941f49de604e1f3f41fc39d2222bdc1135c91292a6232d6a4a2abbce482268191cd306a36fc06bc81676579ccf5613fed31abcaf6d61cfb4b2db9c6bf0eab405cd716a12f469b6f0e5c56174c690bdc021ed9be13a868c8516b2a2a5cd36ffb4062dfa63e6708b273f425ae29815765f6a9240061c030b72da3c3bf4c5fa47700954a4b40b2178d86160086328018f58c72a75dcf2826ba64af7816baf4e3e816bb52a2e65506cdb53a89d3521b86c5a70ba0fb6a4c22838c8fe3b11bb75937c84d4620be5be60fd115aae0cd4e920fa11127d06ea7668fe08b196c13a2e527f84e6f844892bbc1714600e17148e005f30acaf836d9eedab1c7478b7b035755cd681b34bed02142789619c55abf88bcf0eafed5f209bef4449e35e763f1926a939133b472378863233d4bf190068159c494e8ed4e9dc4ec065961e4f9953723fc1a0755354f648ed2528b985f58c162f40e7a7101a8d532b21284c009680d43bbb824263da53072a30ce4040b54feba64ab71767dc710c69fc741fe497f3d6e58d837653964738a88a8634d41d390e9ad2120ab7977c016961fe68d46ec643d291e6aed841d0d062609dabc2e1ccf908ce1a833f52bb3e049f597050b751bbfe0829190ecde36dedd090a649f34311d4e9d11ed90d5e3cf27cc5ff2c5287528589aea983b909b4d458b28b9a3a0f2d6b702348cb80ecf71575845eac4126d5f5c53ebf605c2903e3ee06bb508121c21cdae56e5883636d48965a35501242cea8969f3cbb887dc942e6fb676add03d66038db67faca1cbfecb1bd5d8d43f476f926ce0e23710dbe14e2c0ce5893351811cb1245382305d6a161a602f75316d0a266a0f58e582f683ec117342d2ccf1f6b3f9b410ba085ad4fa9633b0083c75bd0866ced3b2bc8dcbc78ce83277a4a1dee95f502d2162c67875dc9405291915787390ddeb83130fb112982640111ba061a301c8ebdb9b00343864607bc25595638bc30e0aed3c1231c5fe0a56607ee34ab23c8b61980db93e9d66e7646d05edd2138a5b46af75cc7134303af5b0c6eef79023aaf3bf0fa337d46cc01b41a7b0c45d5d07db0cb2e75e3123e70ff6fed3bc41e0e82a6075a9327870e030343d839637bc9ac2a2101dde8596a7f349380ef341c1757311cefd342757159768b013ccf33e83d6d489a397d2feb2528268533d020027b7605ef82cf2db3e218d8e520798036a416cea5c09690023b93fce28807fa09da4e385cd6eda074cf22fdecb30bd1ed3a9927d0ba3b9332d855d4656b2f21b5d3c29e49f5d9b1b9ac21013e9397f49cfeec885a80d87aa6fbd4fe560874e29e697eb15bd8e0f4d0fc82b07693154c697e41dc8f41ba8879d7514b7509a9730edeaa16878b133aa8b292724ed68054a7f9c51a701c83baff5c6cd38c06e5c9e5b903c3953be8a7746f3fab260fe04c39ac8535cc9ec21eef9880572ee7e29237c4b1358117024edf3ae8d33c5f8ef5c91a30f929f9084ac0256bd2a1f281ed1210da65ce97da7150fb0ba405f3ce7660b9cfec220f89410beedc4b4177570bc9ef03ecb0901a6b61dd0f57934fd0aec6602b5aefaad47d84019f2cb518ba6c67760fd10a844ef37fda15297810cf8b263de05200404b4702efdc3cf6932ef812973b03e9de19c2b35e82c27639d3ca19a20986491587436a3fd827e0eb91e27068cd6bfb84436aa348b3e09052c773de05a4dd8a1c13879faca0192e2e8d9b3760f05a49dacdc77d0a04832b4a9253164360bf9d5baf2125c081ddde9e354c7649ab5d963aac2848a84b5211e7f5e91af40096a4b1438101302d14c2c39a80111625b9388285c050b29216a5e36cbc8074643bab346f88235c007c5e8ad0ada0a7c4654bc4f031be4c11af81920d28028ea306a886caf4c9b13fff0499030ccc2de6c927480fb1e45e56e6c35016cbee5f2180227b3de2c23bc1fb87d2159b957c0485b4a2fb94258b0e484eb2d73a7578b0403582de954199ad68ddcabb331c6803f79d5a6f3be30518f95456853ba2017c1d53564549ab2675240758804ce2b076790223abcbcb364beb132a626b0dc62e9697cca1c53e415abe22f9de91f80ccc1954d15de18ac586544a45f7f6630918cb5ad143451d81bba08ba5a2c78ad6758ac9dcb006f77d44240f686b7038ccb33ff0b02c81239e33413b8d8c0391210f661843824d9207ed3e020a679e3c48d956b4a48ef419608aa88ad645e6e01d781958a5f65856307091cd2fc2d70a72db113d9bfc0492c92fe0510f1e3f41faaa43503a6c91e413d47b4d1a9a65a9c353063ed0aac993c381f423641ed43bc28a8f9699dd4a5883d92611e62198eb90c305845751b1ba8f20fdd18137f45c662e6f2f18a8392078711c1f20fd57d3632b1a748f7a73ff095abd08bf07f80290c3d9f7b2f8014cf454d37c1f38aebd1298c70cd01dbbb9065f80f5e00ed7f11accfa50d32aa5b5f3f13e986ea68365391c8e97ca9d8c10f4d47758f88373071590d1d4c1a3826440a3a04380087501d30dd5b469d2fc6837bcc0203ee78beb2406c5e5e4f423fc0877e7d8c6c067312d5499e6c760e77cd30b29eb3a3d3b135facc11be8daf5e8699d80e2702659e6cc9af129f908f29201bb3ce09fe037b11cd87ac662b090d1c3619bd47145f6119ca8bc783e64e4b3235f02b8828b5d4a32c46d0c189357bb42e1c06b8d162a205979225bea7e7bbf04674b45e10c6c4cc0bc251c8f03f22364fa304867a71fe139af1a9ceb3259826226c123460eae92324b71b7c82bc86aacffd7c5a5ba36e0d8b1af8a924fe0f26cac710d319c79b9850a80c4e22a2c4c302d912f8061826989090506d7490b8b7a3d0c2e1167f615702f6eaaf4336d4e557139da752f78fbc3f3bb5b8d4d508f3c93129bb6014cd6c510a0f235801972ead7f3b6c0bc975bc3fb7107eeda72d6a0f7a583dea7e45c38a205c170900edebd22d760e68c0ebca952921f33eace6302bee957b138b2878021d28df541f5a72482ccfc867ca601713f17fc2b24ed0d7949edf61ec46e7657877b97f0115a99f69b822481f44873c2d8c709681035279c6d0c66b9694eeee7f56042dfe674396f6bc45b27708a39b0ebd91138bb76132a5e836f305b28ccfa5f83136c4fd9122f4037480bc50a6e908a124cc61c78b41d12d49393047c9431e0a04f3477f89ec10c520302f61f3715601aa9c6ee30ff9480479aa6703947c01bc6a67205708061264d45f2dae50e59832ffc9bca95c1017c6ee2ce82060f8fe6ac2aa153998359ae0770871607a3fc9ae7026356266064f525dfd3ca71bf1e2fc0cc6d97dceaa18f176006914b8e7f49ba81d4dc25f788068756f02577c745428af992bbee2a41c3fd92a3dccb106731511ea0118cc8140b66a2b938d2362560b1922752a5ce3bd59f202b72a8e7e1f1f20e5ab4001ef7bb3b483a0744f85777d0d27007d5fd051295a77615bb0dc2040cc3ee805d799ec067581dac63f7076f249e49667f330f965ae82acab95e9c7d4ac098b567d2d0eac09c4eee532db4949fd3fdd1f1f0180c75e170c1f6d2342ebf2bc4df0efc5014ae173fe0355507ee7ee6bd0633213d57d4953a028c4efdb928ceae807030ce99013a23c2a19132c8a6080ef62c1bc95a5106f5657ba6f9a52fb25c1665f144abe0b92265d9d7e833d717eda125d8865447da204145480ea255167f946a0eab4595213cca60ba29d0d1f33aeb51f9c28b7a47c97c16c7f3599cb042eb77f359388bcb97d9126e10b3069bf265161b5b88945ecb220234cf8d5faeb0f0f4607b30cc0aa6e349e63376cde7d2399f72957526798c06b93e35af741f54649f5eea0fb34557e8f05ac99d959b6cff1f2f429c323dd19c3ecca28d52329b97f07e6465076ba134602795ec94ddd502cee8a12fe1db55b4ddc4a15c8d9445e9efd376ab8357963896bee36e34ac42743bb37591a57b505e570669d3bbbde2948adac7abd57c76fd8f8692214a1b7a5688ff5a65ed79c9f686548db9aeb5d246918d1860f76cddfdc8b8bba7bba2bb34bcf25daa413954d2eca652ac32d993dd5a89fd6def150d2b1a69fa541bbee8bf821cfa5a65fb450ad80f5fad6cff4049bf1fcecd932417275fcb3bcc151158b65f44e753b6df3253cf45b50fb615259f3fccd8ff04ed2f304d277df780b663e9a7a2a479dfabb2a8af5a52520d51b29ecfa24d3c9f450fcb56352ceeb8cc5faaba6d5416e9503f1e5e3710f15c51f16ce47b53ffe27aeabbcb8b561564c57357495624f5a125326aff136f5a4aad6af13a70a5373b8834ebdaae3b6efe211e5e514fcbcdc5663e8b5a1d1f259b5ed17b4f823ff744121ea2f92c0e97f3591c2d7536c99df8158eb7c20e16b38beb362c830a8066446d4a0e0dad346561a46d68c1dfe0df32d89b75838c0e14575bffec27c242a44de2f15db458efb6b06a8346e4c2f69b9a1fdebf224c53d3e123ab1d3d5c62df8a1cf47ae0e480abe28d88b3f585104b7c4b1fa6f410f879eb16c9c8c108abd6afb5c7a02428f4c0447de2d695dd11cfa50beacb6e47eb5a860df79b70055b6b10ec6d9b4a8705337d4353f79c49b45927ca6fb05329cd0e1d5e698a008e6d203c3c3c24f811b9b0fda6e667ea4d05a4c34756a7dd540ce4a0d7c39b6e2a2071de7a58164b7c4b1fa6e075afb248460e06b9a9e8ad3d06e5b9a900fa64b24da5bbac9161b787f50270089a606fdb543a2c98e91b9abae74ca2cd3a517e839d4a6976e8f04a5304706c03fb874d1c6fd1237260fb6dcdcfd49b0a48878fac4ebba918c841af8737dd5440e2bcf5b02c96f8963e4cc1eb5e65918c1c0c7253d15b7b0cca735301f4c9649bca9ee4c7fe06a707ddc58b70e1b64d3bd0dbb6148e0433777d4bf77c898459e7c86ba053a94b8e0daf2d85f6aecd64bb582fd6d8e13890fd86e666ea8d04a2c24342a7dd466062b08be04d371188346fb52b4923baa1073bf07a565e18e30682dc3eb4c6f801796e1ebafab869ef90e380a43b6b7e877a28f2263890739abd7e983dbefbdbaec8eb28797c379fd524afd993d3c3b5619dfe4c3fcca2a4bbed66bf3d77f896612834eca324aa33c9ae17dd45fd12f0efe7a2684eecbafd5891d77a47322a5ff72aad48dea4244b49ddddf6216f6b2df7b4ca46d821643116b17c9bffdd6ab70e37868b5b377b2cd053dfdc62777358e21d7b0cbfb38b56f359b458ce67d172d35d0223af758b4bc342a6d95df0ec5f78850292373f586f0dd586c0f5afd6c47a132cb676526e1420797c8234395a3ac5c58feaac150f501486709607219c450e5a89c5652c2c6d177ecbca59b8c147a9a438b4aba42100e7ebaba43e4a0b505351384c0f0f868518c7c39384681f31686df8b18f560bc33fc06168aa68f3f8d7b7093913d7e59e1ec8256bc4902a9e5f87695573348148df2db1695d9cef21adea26280e41f35a5215ab211ca523e1cfb353a25cb9f3303e4dbe924ebe5ab57cc88ae70fb353badfd3fcca91eb179a656959a735e7de296d68c06b36ccf2e2b922e50f43d04ffb2f494ee5d0c66161b7d2d4ae6c1e6ea9afef688d99707db487d5617320b889bd42f7bc66d31bda9480d6b1041aade478bc3e2dd22099a2b6dad8d5cd6892e5a95237c40fb3ef16e1325c4a7147c0b499e2656ca12ccb0d391c2cb418b1a0cff5387c8a818b05920c5c1fcaad16d4d8499930440b11e6715bd416a203dca0c5b3033ee20639a1deb137df18e518b471a1bd7110d0db4dc238d501b861de722e8cee9e89a7628442b439814c8f3c26a318e17bd26878e36ebd54d3189871020bfa74fcd4e8cd831674fd58b8518397e0474c80b847b9b77fddbfe5e8058ce75aec77bb87680416fedbed96151ce38505f299657cdcd7d849997ec3b6c53a4da2a06d1de0062d4a2d3eec0c39a1de0168df18e518f45b58569848b8b79b8471aae3ad2c2b6b18dedb4fc50885f8a52c2bef18c0692c2bef6ebd54d3189871023bc6b0c087287aebfab170a3062fc18f9800718f726fffde961518d478386c174932020bffed76cb0a0e74c402f9cc323ef871eca44cbf61db02fe2651d0b60e708316a5161f7b899c50ef28cc6f8c720cfa2d2c2b4c38e8db4dc238d5f15696953516f5eda7628442fc5296957720ec34969577b75eaa690ccc38811d6358e0e374bd75fd58b8518397e0474c80b84761b67f4fcb0a8aec3d1cd68bb5cf758a6f8c2f0a9ddf6c8371bf1e643b6675d4844cbf555b225f27d1cc16fca8118bc28a8f3fc64da67724f2371ee1e3a0df6ce46f614a21faf19a89c90d295b34f69bcf83bf06fc5256946f24f83446946faf3eda6804c828411d633fa0e3d47d35fb48b0310397c0fd072f6e47985d1e613ba991b940133dc8fb7ae6dfedf6ae333f8252141e14c750b1d76acaa6852bad15ff5d8ac276246032c419bb7023b821d302444c3b619cfcb86d505d7a440339407caa4f6c2a8c0d137cc9873980ea31d74a32d49c3c6d49476859d46997449166a4153016b2f87390e67bfaf26116f5d932bdf2a1b6ff5fffc83eb570c6dc9f86407f3111a71ad6dcc7b2aeb4a49c218f14d5063eccb6ce4771660032160fcbedeac182514f769ae6356d30294fc74dd9d22042d240fc72af4e4188302d87f485ee5b3154e58d7de071d03cbab6fd734881c86295595078a823668b63b8645022e8a128e00492838025cc1f9fa554ca20baa343664330c3a8f05d925803557c476008da59e0441eb282347af0be018ecd8704c87e0120a5acaf4328397f8b202833ce0e54a8bf94f5d422a060c2d9b61f2fcd99177990ee29e165fae974796779f5076bea59a1c9ad72d1c3fff35237e9e13518727203386c6d4c1a127c09d2c15966f36be588d5e9e8f4c957ca14abd0a3da33c669ebd453ff48415d122a5a307bac8edc9443b6efc63195036d2f7d56eb6568272c784aeb0b41bd4453d56f62d602c83e1c7940fb3734acc0d38dcbbf7f5b33bcb8912443fb2ae4050f8d24f1773c1520b628211417f5f57958b17f1d7acac82b3f4fff023e3652e8cac8abba19b7d39feeacbbf155b2c4bd593216636d0ada89ce8be6bd46e95d4f417b0aacfa824ddaabab0e44026f751e4973aa59b0578b023103304ae9d734cfd29caabd906d5d6497c64966bdab8a2cf3a3965c9ac217ef84248bd0c332e13f2a843ea575bacd208472de7f68b87671e9898070ce95a6da146308b14c062b8fb9afc6d8aae6d55194649736affd4216476f3bc94b76d5fa0e1294c7af903b5e9d29e947664bcc67ee86a42c697f3c19e6079406733fb2c304d19d74dba170a59f4656178d313d28aba2a455dba46bcbf9ef6a0060daf705c56771189e6b150ff419c0d2a4e7343f06874bde9b9e976dba0bb6f4e79456efc3fbe57c1631596126f2c39ddacd2878683494a985501b46ff3b9a8b2f69a331c307186668f88da15f8ea11f0ec5ee5203d91bb09adda471212d5d929c66bcf0b2d57965dbfd051cf083775f7b1175ac99e2787875c9011e3993374e398f2f8c96b8695e0cddb88ee400ba3fcfea92e4b7cdf687590498cad75fc139ae9b8a36bb937992fb0676fad9ef80e309a83625a46ed011319197ce6cdc5a505fb58b3604940dc0af3fe59ae34aba927341847f4ae9b3715d8e3386bebc5746f60e0691ecd3ea9d8618a796dd2f3d1cf85e75331e5e66d7e9855ccd3c7d808133e5a53ee90845f3cbdd5ab4c1a45de15054e70fb3a142ecdfdf4761f80761f7b17c876d3924e5b241871d806404d8c6f1de3688f7da08f076e15cefd6695978c10c4de66ecb456f6beaca6ad72ced76cdd2cbaea1a4a64ee3656874a3858210b6c1ee9c545cbc69404beedfdf072bfb0abc7e1f61067f93df5fadfc16a58796871ae395fc2811f3a6dba2e3cde47f53f1df96889fa87d590d6f22c143c18f32b1be49ef6f527a79fca3676cc63475860d82c83219be8f3401947e572e04826b6640cda5ad97d605c62ffe23205555d8cf9add05d8a20f4a30b934cce8e5b4926a3ac30e7face257ef6b1bda9c6815d08c9e69de04a469c8ee44f7ddc5abd884c7bc5e5b3445a9d448d623b582682de785ec8fd26aaabe49c9f8b391197df741147de9feeba7a351735645d3eae8e021dcd3a326b6ca5704d5193d34369a792c8d85795d6c0c9249a3ba333389778e66d174bd2358149ab813a218d3746e7f03a95cda9cab0acb9751bd99f9d2ad68245ba6eb1cc116ebc2c1af1b262a36aa59f09a853d959088545b4e01966fa3c830f36df0152239375df708ce451b1bebfaaf08aacfe97e9f514f695e752164366bf63f1d67c9fe3b82467efde1cd390c957f7fef38f0626974ac5bafed966b8cf07ef1b0584e247b9e7b492ffb3e34b83614bfd5d7ad7d1f02dc4687afea1eec1e1f32144900e70954869a9c06459532ebb4951e16ef2bc9a9fe7902eae0b586a04fb8a3b436988046b31d662791473e9b29d422a3ed4a736a2e77536f61b4d8621a3247b1bb03b2725c6e330db163f8ded16163bdd464949e9982fb9d6eb2705f6c310d99a3b8df9161e5bedc661a62c770bfa3c3c67da989cb832005134a89de853b60731a05ac5742f407f5af6d12a33b07d541c0dd31dd4b9034cb5816ee2889c80ffd2fc1d5a9781f21b15ee3f03b9cfa9bcc1e0092b5b98293df53a078dcfba5d8eb46d063a5be7b9408e9bdb2087ae0a60eb21c6e34abc3d6c3e73ac63d8bf2ca8e70c62eecced8c52d5170abe57c16dd47317bcdba617f47dea1706624d33873f98dc3546262c03f4a1a1d8be49b44fe4e25d2b27b19a226515e7b086b50a73f0f190fc11e8567460bfd9daeea61977346ccfe550a189d61a9f945bc34509f5a8af0e7344fcffda3a36b5c1cfc201c02349d21870b13351e1640f2768a03d87b4d1d63f6e42f4734aceebc68f743f16d5f57d56464d7a2d1ef2dbaddb29b7f19b937eef2df64f69bcc5a6596fd0d27b518177010bb020e96ce80832524e43071ea0b3f9d7ae4695c2fbb663e8d1b48918ee548826e3bcafb4c9478a6f721ced30d10fb52d422f0a24773200021efe6d9050a541a0247cc5769cb95e5264df8a858c6d7dabf5dee85c7778fef00575799e6799f93688479a83c8d12a51c7c82235f565d9586f20059897ef479906178b80bf5a59b739d81e66cec7e1a8aeb4f8e344576fb2b7822faffdafee5e6a6e399280ac1afe0a9e837c6d20af55cd4c9d08c923e4ba0c1c1614f2a0175f05f7bd290e025282eac0eecb655b4a44a69fd0fb3b6ae4b027a2ca0fc095db8a4a4e6aba6773b78beaf931363fd7bcfa8cff4f5509133ad59955f52b5527aac685d075b52057553a525ed26ff50155d3169e9f5d9958eb043df12616db808cb17d6b623e6d740049f5fa15f84cd60f3852d874c58ea26ac26bfe9626c4d2998361d9ec2f64259a45bfee54c1b3d8f88243118c27b71e9f8736c1bd3bc791f2d5a93676e78e01bdfcde2d51fe67cd597a46a579bf6c32afc8305defe75ad225baffea03ebcfc3053890e96bf7aa2035bb6a48dd69ae74c62123d043b3b537ae9bafa0307e229083cf70b3f5883ec5ef3fee44540f2f4cc36ba3be9e74e1ddc99e57c00fc60d527cca1dfb598a5f921cdd386ce2afa44ab9a9a2854a830132170273d9323b06709271e4ded684a433efc99b280e2f400f07478431eb664631d34545f1b895d2f0c6dc22ed5984462d78b239ab04b759690d8f5024126ec62bd012c7231593eb027d79f69469b220f8e597f0494364020636cd80a4ab46ea56529ec2ed0611068aaed9c7a0f86ed0bb7d1015bfeef768c4c10fad1f5fe1dcc60c47b248b2f417416b5ba4503c34c862a98595a7e18d2496c8b1715e9ee52d52ded7b7a2097ac119d66e296a6400d3936ae9a390a41f54bb286563969a82c173f287a7d043468e13f7e8574583d696aed84e1672913fa20405dfa4596452dcdd859941b82866bc73abb6649556d01210361b4525f2f0d06a029558e74083309c5179f5536dcaed6c12f22551de381c6e201bf6fddd37dacc8769be6476980c38f1a2ebe114b39d105cfe84ac292174d40b2ac78a67b0322fe6770c9599aee1ee160c129a989bbd64d4576832bbffbaddf87c470fc8ebbe0e950ec26d1c4004ab024762e29393128c0757e01a9c5e95ac00ac261b359540a06c8fec1db3a1664524971946963412655d1445932166462e12854959f0ed789e4fb0cb8cd40e634ef9b056d1b28a7f87d644eacc393dcc3c6b7b0acf921906f1d7326f9edc2e8fee2019e736682bc878f709bbbbbf9ac29e0af77771a7d0a05ea6994f56deac9f0c5d8898e7c18d1b82e06b1dec4619cd8ee4c04c793a84d0cdac0f34ed15d0140d5f6e2b697283b9c418172d915b7902f25c1aad5651271ba3d4487959974e9fe42fac47e91aa818c1f5adb24f62dc7b0dfd0886e0c620b6fe6fda8fa6dd5382e65dfd5ec13d552b6395b342359cfe425126ddad71fdd19af9de31578060d1d6a27d53b334f9403b3a9adb4349ca78bb56588824f5fc851f81b5e92d248e2b75571a289aa99a7c649fc0d6800ef5913e93126c130ce1dcabc97eb0439ac1c40b95ceb39190fa13623d6d493756a96461e74d568dedc460a575fcc480a576f6f2539fb30175a3270d45498d2bc9d1b1a69cb7a2429d38998169233e9f0d01426b7eaab388cb78b05d262318d51b15d6ca394ad181f9b65b59ecfd6abf96cf3803458f065325ce3d22d09cc1075aeaad6843ca4358626fe13cf6b1bd42c92aaf3c677ff60c96db1de80b655dd54c5670a5e8f1868702c68d07eb2940a432f0a407a1f16eb650c2343ec69a29ffabbd56e1d6ef4a26ef06ed73536ba06c49f84627b52168f8d927177ece171ba0c5872c0e87517f5d6b6a6f17fe1205b6d4cad6d269f5b2079b4080e625cd6631effa52155633c92d07c2ff9b3379663fc159d24d24d51f2b7c18350496e0a6e06682dac9d0c54d944b8ed971529b375ab3470f68a594a101aa1ad35d961c00219e2b07cb1243d541b9973be191c47d7475de5cbe09d7ea25593ee48d6d71c6b0a5e3b89a11cfc38ec27b1685f0c4904fbb3472809d070d5215c882cd5fb90487d0906617538e2cd8d010fbd3921ba92784ef56ba939c447f4ed8b022b4aad7ccc67d6f439621b0f0ac47d6bd41050fb12cfb2b381524e012bccd559bf82254d870212349a4284cde1092a4adffe7c3499ac401737763f56e01cb23642cc4085dfaf5497ca5fc8df61a58fdd8c806891b2192cdde1aa5c0fa8b0e4dd1b5e2f80c9f786246162f08419db22b1e3ebbf032121bfed8188470e2588d4a382c5d7ae085a6875dba06d99e7e1f90118f890964e89a0059a96a4395d5ff504f00b0ec781ce95d347d604d047281c921f00833da94fc5e150d3666468e42d78fa43a82d14b4c3df1a473b52b69279c9f7ced913eeecad9dc8f7ec86950984f880cb780505eea8e13d1e90026579c1a0fa67b078428783acfa1b7c9cb34b22ce69e0c30f6ba40287657f43119a16fa8048051d991490694106442ae8c8a4f84b0b322052414726865bda7069910a0dd9d6c09100aba4ad983ad16bc856a82b2b229cb85434af19d61a49e6cd4168e3457bff2f6b548f1a592656d257b360a37bfc2f52a5a48bf4a2fb3f3dbe6baa0b7d7cf70f7fcf68f4d06ab156af7247a2accaf0140569be4f77a4292a56ceb7ec054ffaa41de19005ae4c5e2ef4906c6740eb1859f501fd9c138aacec0e185a4e7349c4c717670b67e1b532a95ca14dfa64167f9aef1dc2dfb73004340e095c046e08a27515e9ce03513741ddbc66d033b47e52fe3cfb237bb42094dcbe93e6b932648aef979b162df7d81761bf7ea159969675ca5f0042e5ded8ef45b51f4a50576792ddc003c3fc41a13742fa9e4137a07c3ac3fb1520f248f4f4a8f955c976468c4fb6d8c4ede9aea8d41ddffce01f5ef5ff47538bd820ecc01e262df7cc3560ef6e5535e0ed012708252be924ddf93f04552c5850c57751986cc902d9c77c9845b64a4ca3bd93c2797b79803a12034a586c711704047b5333521da9a007399c248683175094b9445781060d0a694bd6940f95af6975ce8daffb615144be0215771a7b72ebf06e2e66dcd6d3f03bdb4267283ea3736e29b84bc4dc0020248161b0e886a392c6fce6caf83a9f387b993906c1c39a3c40e0345fd7a22db3d0179146607ff2339cf244f60f4a5ffb113ca30d8a0173c7e7d6d963eedcbd6c6155232f37e47008bd116b57d8a3b4b4a373559a0079d031705beea524f95ecd62e52af42b4991ea98ea91741756bae9aa7e301de8aaeea991e934d77fbfd5c7677d812ec5d239afcf2d0728f1da5fb81f1baa1d41265edb4eaa82f4a85ef0f55713f2455ea2187d422cbfe57aaf21c7c12350418f7980a73f008c3d2c03f6bba9e6948694fd5bce2703f46c0fe200bb5eab3db7870dc0d170ac5828812e90e207090255965ceb9b2fcd2131134083be28a50f200d00ccf5934c839a764b9a12f9b8a51d1a8e1fe8b96c5e6114c2e10d42a6ce0598a8043cb22777ec4c35bce4ec8d55ee1b1e7803d9b19a09ca658a890deca85156614ffd062c1dbe31d57a1fb426a02784f856e5d06642e5bd6aadd088f5abedb81bf3968b58ca7672108b5aa3c714e126acb17457e450ffd7af41dd907c4f2a3dda506ec6cf3fc38d4b6b3e56ed79f4af2d8586152ef46eedd3d11390f2bd9f42d6762e1dd164d11336a18518b8a1b90e5427a4b6dfc4d0e94e570e574a0005219d24ff08d3ad8229a3326829b582954488495f49e4089acb4018884623cf53035e915c95128c5b555a8a728a62503bd9f67ff3d3cceb5587646118e550c6769381614683d259f2ae61b139ccfdd8cd100b7d28252613a85926623f86a7aed7ab232fe674d86e658e010d8639abf92c5a2de6b387c4cd1b43374ede98c8c3f046a6cfca1ac3c3e1eb459c176b3a6cb7b2c68006c11af6062d5a84f3d972e1e68da11f276f4cf42178a31268650efc10fb7ab1e9c51b8eec56d6c058509c7998cf562bfe7f2ec6c0bd38f962200ec516893a982bd7838ecf9597784c0690f6550140534b6a6133bb0c0d75134c8fd057a0b9bb679791bafee39f1edf09b3fbf8ee1f7776bdc30a53b433182562ea1cf3c1c0abefd1a23b0afb08c7c002949a51bd9b457ddc6046f81a968e439287bce09ca86f290a13f533e6b4b998621eddf231d508c71c60a71115c751d703935153de8e50d7a89d07c4bcf211c714ab691dad14350a5c82ba3abc5577becda926868d007c9f4e35f946a79d852fe1eeed1d02c2eef876585d64f5e83fe3c2b85578634578ed7743938bf12dc84708f4c2e559bc45b46f1acb08215fa285dc91ca0a3a94aa4a2ddc6fc295cd2e05fa9b52a94de60dc0eb346fcf8007d9fe5e02bc4aebb9eda5d2a458624f95a6c3ea2a4d8f41462d971192ab6ab4c57eb77b88c6f6fc361a6d32691ea3d0d0727dd350fc251cafcf1cd9f440478eaad0b687f5c27ad8053a9c52a14de743c36b346f7f9a07dd237c6b7895d633dc4ba5492f1a3c559a0eabab34fd25046ac18c115e55a71d0edb45e2b8c29d508c6f413e42a0c72835b468df349611428ed76af6b49e901b54d569bb78112eb046da8dfe6634467fdf335ea1f9faa1f144fbfba4f1daac63b49732135f5479ea320d145065da432cd432f197585d91ad17ebc5c88edf468f4d25c563b418569e6f1988bf64eb2a2ca8e8b978524bf7212e5bb4bcdb520a87584ee1d0051c0449a9a5ba575ef707b1f47cdf90fe484b0a2a3e8a11032181f086d0f922a59f14515284e1aac915c59067f0050c8cdc50d00e6e2c0592000f29841c2d07724eb3d70fb3c7777fdb15791d258fefe6b39ae47550d32a3d80cf2d86df9e878719a1d0b07f86757dd8c482e6ea97807f3f17457362537eacc82b2b642bc71c2aad48dea4244b493dbca8b9d66b7cfc947c5ccb551be5a016496215f98a425dc006715819c4c1d5d30d931f87f6c99723a41093af48479a97971bdf064e1659edf948565cbdedb2919e240c6fe16c816781f40a42e6ea0a8a47332c763e895f31bc77a040fe217822d9a5afc8f6e5037e3baa149a5ab3437f88b506d5fd1acae3132b31e8e03539dcb7381f5f43dcd977fec87378f829c12adfa64a32c2bfd7343bb01c17b4d99d0078fdbbc8a19591431e33fff5d788892ef6fbd70c8fb7d107c491e2a65966d6ca8b59c6105647d79ec1a856120e6935e0eaacd7f6ebf154d48df4f11758838f114dc59e74a2911f82774b785b51f239782eaabd1d58b0e7bff88b049114615e0d2fb64c2fcfa54f7dc2477334378a04351dafb9253f024919791de57b145c3c0fad41baa5ec507dfa818533b91cd885161b1f2f81d8f8e1472136dea4630583f317a7edb3344dfe158b71a90b1d19348b9e4344c76e5727521fa35408647fdb4c8e288418695aee2a766dc1e8d91130680cb2817c37b12a5fd461681bb54d3e556a407977275394f1b9b38077410df3eea7c590fd56bda2c7950e30a706d7036d256f89d94055f58e0956102de59515a64f41861c1d6ad2860cd333e9d70fd7b7b4ed8f654676f45464fb6b2d7f37211624373da5b6107dae6f241842f046c48e247162c2747fa14ec5b8553b76215b526623d7bbb1a60188529c206d19014fb11d79d3a17443700fcef521f8ec5446dbb3c260657a9a0ede062df408574dcc236e3105b92587d5ad7e26fd253fec85e6462e2b6efff82bcd8baf6e8e9ae501e40d5885d75aa3a9949c846499c6a6eb5f017345f48a47f946ca9212253f0494c4e63fdf074b6b92e0a1818b10451182f4488ad04e9625f18e25d34e50564549ab46106053ca9c714d7d9a8ccaa8b3b067d459dc925167d56e1af7ad0609efd91395fb28f24eab6346028d8b3295116a03ea7f7749d5906bacfdc92eeb62cbaf20f8784a21806f4be2db92402c8997b401cd8461b74eb3a635b9b6d9a5ea4542fdcd813f006f3e437337d1b08c0c3f5b65b2eb61aee036cbd27800cf86600f5f4d50df241bda5b88e7d45a0d29ae6fa5fd7faf4a35b2cb6af41b92d5153412e19376d2119c83416bb79790571e9d0fd6238081772fc4a3c9cec0088ecb095d37b2c3b2d8936aa8b923f82bae6be2ab16d8b2d47893872045ec1986a34da2d945c8004c6f1afb84b95258965afa72adab21333e2813209094c08ac4383a5f44e235ccccafbd769b8005d4c32dd15d02353c4d1cb1f932507de94e92c0dae5ca4308c47e10018d6a57d1ea4e7581c80270f3e031c1892a558bb726ea033934e6d2da76724065827baf89cc8ca462753c9942a6f451b13a5e2d20b3d1a858ed01c4c8342acce63ad3ba26477acb3df6b06346917291c77ad8157943527bdd20551025e7a4faf10d4b4f8cca577a485fbac84a698317e35f872aea4bfe6f3013be708bcd1ca3b1c98fa885b9caf30cfd163445671501d5f8b4f20a087c1c1688ffd1663ba8e813ad6a8a608cd4f45af7ee514abbec4928abeefdcb54fe6dcfce9940b87ac7d57a30f7dcf3c2ecd26259200c7eaebbf99b6095dd6723bac82879a2634f8389e33098e89ec0226bd2d2d3aa9eeeca01180e0bec7e1f69c3187e07c867ff288bb2d52f01a9aae2b90bf682139bf7c135b1525a315673121ad1cb71dafdc167a914d259aad547d5b494b439b5fa2da3e77677234d437627baefe4436cd290ea488516ad5aeb237945164acf23d8bef4a847ab69fbd59464fcd9c88ce1f1c5e64b773fd4af3317060c1eae8501cd5f1154b77ad74633578d16de75e931913c1ad59d9947bc732c87a6eb1cc121ddc176fd80a0b5294a1ba99d4a76ad292c5b46f56666cbb562ed17ed1bc115ebb2c1af1a262936aa993963e14e1f631841816801966da3c830b3ad7f308464dc74bd2318176d6c9cebbf22a8e665433d6579d5d5187038b7ad35a6fbef081af9f9c59b71182afffede4a64f7f9f665ebb5d5727d11dec771b4510baf8c153ecf9da4977d2f225c1b8adff2eb16bf17056ea3c357770f668f171d8a34803305ea4373f1dc56825a305956f5cf135007af37047dd602bf42830968341b627612199c8542fe1dad38a7e67237f516468b2da6217314bb3b204449670fa623881dc3f78e0e1beba526a314cd14dcef949385fb628b69c81cc5fd8e0c2bf7e536d3103b86fb1d1d36ee4b4d5c1e84ee21ba7e41d0df283e5a83f7b15e09d19dd3474a27466f0caa838007ab4ab940a2304a22d207ce8825dfef2324d6eb93ca0ea77eb3da0340b2365770f2383a148f7bb7d2507d1dfe6222a4f7d321e8819b3ac8b278c10cb104df023a7e3d011da8e0a3419e5e52a45ef273918af847c9a063697c93c3df871cba77aaeb7d67d8ee26b0af9cfd6d8adf1973d7304d048f855070c466ea913b398de846aee40c860bd94891b6742441b799013e1325da033ec4799a10b12f452d022f7a34e3a3639da15f282db75b1c90a119b86e0c74eb59c0018452ee5d37ddc8e00f5c3706baf554bf004229c1a69b6e647809ae1b03dd7a3e4f00a1984c0f41362e8005d58b896a2d755f874f2be3cbdfa5f5eeab7dd134743febfdeb7d028513cd4a095945a91e3827fda8a52294bf0ac90a2cb1a2120cb062ec3da301ae05f0a0182c25f00a455fb732f0f4590134faa4682e25840b455fb702f0f4590134faa4b83025180c451f17753c79b6f61a75627c991254a61017e4c59e0659dac765f42100509ab02e2e2aad853c6b4a24538bb12a8a460d5b906b426b116fcca62b49457339d5d99e1ec8256b9c71dcc3403a95148450921c354f8506154150b1eae9d6c062086ca9e6a0d1c0161058f2e0025b42600faa15ab81ad20b02852538068700908b750af0235b8350897a817981adc0684dba811271adc03c8bb50cd27a3f31c1495584b6aa203c2d2b2728a4b04ca4bbc760a4c044a4cfce01499089499851626a4038252b3583aa52602c5669138c52602e566f1e0949b08149ca516aaa4038292b35c38252706256799b82467a297fd1eb1ae6a457c578e48177bc7941b53ce645794a4a2d70043f9e7802549e0fb92922fc88c0b34b90c9ea13ef2c6124170fd66cd9edb676fd4bd17803b681687e1b9f6f4a64c87e70bc3036e2b64c76626438f7aacf5dd6d3262cd62e4ee17b8d9908140d12e4a9a4f1d9404742bd993b24345c923fcb092f3085fb15d9f3d190c3a7b9accab9549b6b43bc48101f42c1ff4f50bcdb2b4ac53ee9d7c3ea50d0dea92ec98d939640d7d2eaa7d978650ccb83cee21043cba1ed9a5a65550d38cee1a21350ecb3f68fa541bbee8bf5a26ac2e49aeec19699ea526a09aee8a96dbafe27c0b6f13568aa6faf2c35229948efb2d2fcbab2b0e09c5835bbeecce0a8d8d6b8f3e45a36dffd7f7cd3ee1f2a321afe3a357fe212449e0ee6b05111e414e4ca4c8eb5686e87eb8e1c1cea1c18531aa0f785a7c8884fc473762829c4eb7a2043c5580b7eeb68ed47d54d989f08f7da725836de72031f67c8a232c627b556619b72639a6cf9642b24e6f24caec799b85f9fd1fbf9bd5c5a5dad1ff8f94659a1fffc77ffb8f3f6db30b2dab346fee77757d7f26e5ec8fdff3c6ffd2fecf5f8bf29547bdc461b40eca8ad66d7fff3fc948dea4d5ecbfd3dd292fb2e298d27a3efb5bbebb9ffd25cb78284b3d6b5b574f747fff98ff47baa3794df7b34bbea7d5ac39d1d95f4ab23bd159f7653efb9fb4aad3229fc5f7e17ddb774bc8bf77250b767d091943f9881f1ed50a05826162a8105157bb0fb34b95bdffbe6e4893eebe3fd37d4abe6f3957075172bf3e848b75f410dfd3a2f9b7ef527a485fee66ad35489af78fefe8794bf77bba673665f35ad2c77777731bba651c932dd924f7cfc5e120206affe982259b78bb8cc2cd7dd388a04d75a15dd71d8f31f315876f305f71787f88b6fbcdfa613dc57cc5e1fd2a3ec487c56aeb3d5f2dec2a8cb7e162eb9c2ffb9a60abb85656c6bbf9bb5fdde2d0786d5b1a30a71546b793fbf8eefefefbfbfbef2bcaa7a8e6137c15cb2ba31fdfa158edc4d831d7c06d2778d3c8d0b605629a3370794c34677138f59cc5e14d731687ce39f35c22effef1bfff6f000000fffff45a668e66290a00", - "a592ed548fa997f137fe3e6d00d2fe30": "1f8b08000000000000ffecbd6b93e4369220f87d7e458c7465aa5493293ee21da6ba95aa52b66db67b7b76737bd6733dfd811181c8601783e4928cca4ca5697efb19013ef070bc484695a42b6b499d41381c0e87c3e170381c3f7cffaffff22fefb3fca5881fcfd52cf0fc859b17a8446935fb3fa3244aabb898fddfe8704eb3247b8c51e9ccfe9a1eee673f25c90c5729673574f1091defffe5bfc5079496e838bba64754ccaa339afd944787339a3525ceecff41451967e92cb8f7eeffe55fbeffe15c5d92d77df6ec96f1af71fab8dd67c51115ee3e7bfeed7b671b9d2a5438db3d3a6505a2c1e2f48c8ab8fa6d9f1d5f5e2bf45cb95511a5e5292b2edb344bd12e8953e49e514de1d6bf0fd68bb5bf4b5055a1c22df3e850e3f076a72cad6a8c68ebcff367f2f389d4997bdeee902559b1fdd65f075eb024a5a7e812272f5b37caf304b9e54b59a18bf37312a71fff7b74f837fcf3972cad9c7f438f199afdcfbf3aff57b6cfaaccf91fcf2f8f2875fee7fe9a5657e77d9456518192c4f91f394a67ff16a5a5f35f51f20955f1219afd1fe88a9cbf1eb2b4f4974e19a5a55ba2223efd96bf5ea2e2314edd2acbb7deaef9b1cfaa2abb6c7d2f7ffeadbc4449f24af52aa83f5645963ebed29d5b7ade6fdbad7bc97e754b94a0431567e9eb3e3a7c7c2cb26b7adc168ffbe8ad1f2c1c7fbd7682c5c2b95fdefdb6dd9ac3deeff3d03da3e818a78faf001b7b3a9a6e6cbd9937abfbb0cba3e3118f0e41728c8a8f3308dd69715a9f2202545cd3344e1fdd5a106667df39fb4c0d5a16e65e3bd09843e1327f867004ce3990e208030647b0867184ce3994e208162c8e00c63177ce73390e9fc1e14be85838e7851487bf617148f8b174ce4b398e258b63dee2b8c6b8faad262869e492a5595d03c9dba2a76e074e6a63f0cbb542c756b0168795b716a44f84db9f0e87e392c2728ccb689f740078626c02c7f703c70fd6cefde20e440a55f337be13787327f0e77d3d0c9d7d42c529c99e5c9424715ec6e56bfb657b8e8f4794ee18b06d0bb67b3ac715c2ac45db347b2aa27cf7941547b7fe6b9b66c5254ac4816787f97e018e3237fb8ce63bd661782eb26a2cf05aac3d9724f8e50a20b83109819e84f0c624847a12e6372661ae2761716312167a1296372661a927a168d66d8c6de6ed888943345367ee90453c7f9e9559121f67440b2c9d207082a573ef8bba836fa3c144a8399749f4d673bc378eef796fa8fa4cadd6a0902ebe58952451f1885ea125021783364744d4f0111db222aa2d06dcdbdf2227da9e6bd5d40d8ab7dc47e16fddd76b5166c536cfe2b442c58ec781adca5a2351bc886687ec889c8830253e6429fd37219ef95256517a8c8aa3436a3694b4f62485d8a1fe66a99eafa3d3c96388e85b07bf3674c0651d454283305abe4c442e40b44d40bdc5fc13850333c778316d05b9888ef1b5dc86f9f30e5bebe7e8983d6de3b444d5ccc3ffab659c93eee06e471994bcecaeee3ab10cf2e7596d37312b35b526615944053f55fa1e4aa68f84057d15cc0cf30ecd990e7185e1dd0eb0209886a37744a8df75e47713265c1df647a52e682a53e2f04e35ce349c6c42d4dfdd7d921d3e0208f2c2464e8e719927d1cb16636b8d7f9f568cc364c85f980a911fe6cf337f51ffa7b6e3590b670e6dfa885eabe9c116d3be40d1c72dfeaf1b25096546916ff56f4804690e4ac62e2fd44394173710437ae5eae97c279197bc40eff8e94096b2be29fcbb5b4b768c44512c6564ec237a015afbb83fbeb622e33ea1fdc7b872e3148fd92941cf9d38d1df5ab828891f5337aed0a5dc1e105e51804f2df43faf65159f5edc43965628adda62c967a5a8ca85f4ce2165ec77affe5c836b75e3b7a7d369778953f7293e56e76d506f8adacde09c5abf6b11af37659f5051c5872821bcd85ee2e33161b75eb81aa04f9b892b0e9adfed543fa2177e81623ed1eb125bc0ae78fc80f348e5e5740b0aa86ef56b8c3becb7da2e44d3ae9341c9f4fcb88748ee6bd4d26a220781bd1cb073f9db7033df2f36d0428227efffba6615c497be5030fd1a894ed0a9dace793b74e5f8ebc0f1377837dacfec19641ff3044878a9a4b3af4851cc58b884307fe1f8e1dcf1e7d4f63a89cb0a409925c0c76bf2ca2e414dd7081bc2ae7735ce59126fd3ac7abb4da2b2720fe73839de81ed18025e41c0577603b2602868fb807f5ca10e6509dcd12c81e1af12f86bd2f3066f8e1842dc6b5a562f093a765244697b0c808b89d12fd69a25f12bb7d328aa8418114451e119da0b16b7c7da9eb2c3b57ccdae55adc9b055185dabac11d68de30773c75f6f9cfbe5ddae0172b3d3a944550dbbc37ecff67ba3c1bb3d0d46ddf96466a429475ef49fcdb299564596b8717a8c0f5195151d71350bfe35bee459514569d3a5284145f57a899e1b353ef7e8bd573fa7309c8b5ddcfc1ac82c7ef50fbe46affe40af31518101eb0c9d732d9fb2ac4285beed1d5de21ee3827889b745f6e416e8132a4ab4531451f4f920058d5eb95655df1b3c417bf0daf23a1e8aeb655fbe32d460bb0c7bbbb89f9de4369bce233a45d7a46a97d390d90ec3424d35eaf01fde25b105e38c4c15a1d177494c4e485e41abdac37b256ad5b816c9db6f8e51156de34bf4887e283f3dfee5f992ec0ee7a82851f5e3b53ab96be74df8befcf4387bbe2469f9e377e7aacab73ffcf0f4f474ff14de67c5e30f81e77975d5ef669f62f4f473f6fce377781159cefce5776fc28737e1fb3caaceb3539c246e714dd08fdfa14f28cd8ec7ef668724cef96fc71fbffbefbe77bff267abfb6093b873771ef9f79e17cec87ff14ae9faf7f36056ffe7bfadef179bd97ab6b80f67be7f1f6c0eeebdbfb9f7d7ee7d783f0febffae7c11c1ccbf5fd5ff2473777ec0d0fefa3ed8b8f7f310ffdfca9f79ee7d507ff7ddfb45e8365f7ffd0e77e4c7efde04e1e27d6d1f7df703e964cd8337e1c337773b328bb1179cf688b726e337df802387957e7672ab971c71c30889182f61eee15a1428ad04c9ab17c824ca4bd45bce8d754ca403f2e4c89ba1d1010ef21eb07191807e1f0e94e8f5ceed4de65f9ad5d320c99ed071a771a08b4c7805b618d45997a456a323d3fc5abd7296729cc6551c25e26685c1cd6c60609eb1fab6b3b318ef1fbd8ba06cbc033a6e50a79f5aa758b78d6d7c211ce198ffc4785090d59ea8b27ae34ba88a47617a91ef87b83824687678fef1bbe0bbd9e1e5c7efd6f75ef8ddaca87fff20c0f87303a0b50ce687476e4acf16de9b599ab905ca51540d98e014abc9bca0079698eb827b138b04e37e104c6b6e9a422554d30aa07ee900b610500d6ece6a8eaa200cdc5c65dc0e9a8e88e7cdd4bec80883380a1c9e25e80e696c8ea11e08d1e801eca0cfe8af90691d898ac13e324fea46a0ecf5da1ae30f6b7b3705b6a5ea9f946d45f3f7ddf7accdf658d49be71dfd37535e9e8b38fdd842b4bf188cc4608f9304c0ecefe8bf21cc3e83d9a731379ad361c967b4fc8aeddd165df2ea05aa47edfb580c9e58bfdf30f1bb0902c5cc4fba95ad62a11510608ee9cdd6461f7ade9bd658afc594441051281d1e3d0527d9ed3534d7bbe2bf1f92a82cbfff91acd1b530bbffb8b3f07e06774e0be1d6c5bcb7e5dea75d2a2e33fbe902bc0076cc78aca70d4aabb7f56c8f0aa796fc5995e5e40fb2f03aa722bbbce55dd0ebbb3ba7caf8cfdedddd9dbc35d248df68dd908897ffe441287954feda3ba247436cc0aaa41ba956e3de6cbc9238dfb6ee9a7df60c8c25da9ffcd3c28c5c229f872afec4cc5145ff08f0b00ed6a581c6d9dbf6e2b8463e5a8b034a59d6267d037583bc779dd6a01d193bb9cf9f76cb05ded209fc951304c45f0892be1b60f7dbf4d37a4065b589205bb2cd5e9ca42d0b460bc3ded59da0c41b9c79115fa2e2c5eabc48330341f9244792b7d098fe8d34a63fa9c684b1b5cbc9e9a4191f89a400905b3328265441dfbeb59e1e282524d263625e0c23db46fb7a6811ad017b80d7beb2de406a17ea4fa76f99530e7ca49e47f5b6c950f7d2ee6fb9ea058384965255525e0f075496371712efb4d92cbdafaac4569534e363307d1a488d2a69a14c55090b7f732939aebd8537352f3e832a8996cb3920dd2a5542f746a74adafe4ca64a168ebf089dcd72424df21415699c3ede5c468e9b7510ecbf6a125b4dd28c8fc1ec6920359aa48532d5242cfcada5647f5a85ec7e760a5edc5e9344cb6518f8769a84ee8d4e93b4fd994a93d4bb153ff49c7938a12a3946e9e3679091e33e5c85abaf9ac4569390e131983c0450a3471a205335c280df5a420e41e885527b64181f3e830e59075160b9b1a1faa253214d6fa6d3201b67b1a8ff19a74020df0bedb276cb3c4ed336e4a4f9812fbdbd9655917d44b0d8517188f84f3662a53b0899730721733ac864d18425c307f45c5bc071425ff8ee7b09294c2da1943fc7f03d69ebb2230d8a06ea7043468d8845a4c9ec8c848cd6254a9a5836fca7641082393b084ce0ac375b419dcec8a5c73c2b63726c8792a89ea6324846cc0e59eafea33d71ff1497f13e4ee2eaa5b9af27430149654f40b42fb3e45aa12ed64786e61d763902b8eed4a4c87bc004cc33c1c2e29d654e96851bd6a4b809ab2a2e51d204e795cf2e29ba645975ae07e6b1885eca4394a0fec08e0588d22a8e92382a3b3f321ba8827bc58716f35fe9892c9471976894e80922a2f5fb432f0d6233701e8a8988e3a4b7afb53dc5453b9184a9490337e2f197bea63003b7decc5d0181bf166777667716dab5aa8976be810de62d6e6484798b49ad30093a752885ed919779d5edc06aacfd36886ad1a8b394256feecd85fb39b7e79511c5cb61b65ce005fb3054d972963d65ad3b8bbe52f69e8959b75839ab8563e0ab360a351a753c38a093140ee190aeefd9ca9a504383541eccb4b8dbb5d6ea3adaeca3f5300ab88ba79635856ba9b6f5817bb14628e4a68b3ad64dba4180098020ad949339015a610569b1d03b267b484b72d52a0424d8447968f77ba105a1963b3f7a2e015157b0712901112d4d19203b0d0058601fb655d304148bf44040102d5b051d72a6f324a92145ea34f010a1a0cc319aa189e75644d85de234be4489eef2abac9ea81ff8dae285bbf0ce3852586c50d01c004da29e8089a22fdb858a9830a17da9af080212c36d186275b8b62c9e57fe56f2d0a82329bd061c06fa67322e162d6ca5d8452b811d465859dac8fa4e9641c3542455c0ca8d86ddcc921bc3101e9e6be1daf1170bc75faec16c2cd37453dd2c7c635f4b837a21369a874ad2cdf18f9b9b46d6bff934b56484dd700e6ad56612b372a154545c38a03a1e4b5ed154cf99c5ac296a184de4ddd06ec8e6371536e52fee06a31fc5252555e148a28c166169501ac8fd768be07b2bc75f86da255341d540be99ecc459265a1068b93ba08745ab5ce0492924969a54ae834e8246b463af47c788fa58422dd7be01e2bf0a1c7fb57082b967b128d94c84a1444f3b25da085075089ebca2e5fcd684292a6a58ad1ed6dd90cdb23e528e5a3c3e2f935444852369b2593bc42844c5da11e2add6da335d3a20a20672cd689ed02cb4a0cf72e5a007c574ba7313323c1e0e1b7f100abd4cf70bc78866062bb621623e96ce61eb868de82fc966c69f2fecd70da3593094e849e7431beeab8eb79457b49cdb9a9854450dab65c3ba1bb28b5c545824b56e7c5e2e29a90a471265b3708841a78a8563e33bbebf7042bd9f4e41d540be99cc14968916045a2e1df4b098ce786e529e4efb70390c85815c0754ace8e076062bb741a23e96d0618b878df8078b85e3af368eef05f6ab87d14c184af5b473a209f156c7d94aeb594e6f751cb2bc82d5d261db07e90cebc261a985e37332484552388e229b4543083356ad197367be76e6c64b0640d2308e994d0e8a7de6d4592e17f478984e7176129e4eab7065e9e53215657aad18daca604d3640ba4752396c9db09078bc4cf8e45feb65c244fa07d26c3e0f220a399d31a6c96a049e8bb7519af89241dc7fe77e33b81dfa47bb0430dfd8670bc89977c477ddf4059866bee21756e82c3b5b6fe6e354a63be61753a966564e3888638071882b8fd551d510f2f408556cd06b11b33df4991efad21edae6dc123130e1ff1c973d86cbcd2f21ba7ff7ab1ba747f4bc9dabb137f9685be885069a88520bbd54434b561c006d33a15abc2b03bcd04a0b60eec4bac51daa714381365ddd8d7d5d8ebfbe370005cb74dfb747613c12aa60bc8e806020016643a60eaf6b89588b34f4b7451a357ef78e96049cad9aba4970279221c39067793d0438036f8e53d171a898f9da5c17abb21c6ba036599dc73e98c3960deb8d90a47b7067284cecd523fada92ebf7b9d6ebdee1afb2eeb1859265a0a18c639f71789a1ad36709585393a09c7752baa70e6a33a0513e358daa89816f9a2edab777abe0388b5e0e1a4d804fc3a46214155307d98d9bc32661779613cbaeba32346fac569107eb99611e14bef739d83545889fb52e1a8140150668a59f0656be5da8e018a5359aa163856922caa6093934e8bd6910a235aae1eb893650d11ec7c8d0c5c10d0e0d66fcd2dc1e1cf0388cf08106daa44191e3289f8cffe3a2c4acdb9b309472b0b251c512de62e699855b8e9f82e3fb325948e614d3727c77a60adb9c78aa4ed7b15b4f5a6db0a735aad17a4b1e106a8f636488e8e00607068d7e69660f0d2c1d46f7b8357a92e0d371844fc6fd510179d6cd59aed0aa90d5c18a4615b57983596716d63a7efa8defca54a1af534cc9f1bd992a3c76e2793a5dc76e3c63b541b5d6a846eb2c79e0ad3d8e91a1b8831b1c1a9cfba5b93d38807718e1e316e869827cc7513e19ffc7053d5ab767b944ab4283072b1b556cec2d669e59f8f0f82938be2f9385184f312dc77767b230e489e7ea743dbbf5acd5052fdb621aadb6a401ced62846863c0f6d6f6010f49765f4d040e941548f5b9ca708a61e45f6549c1f15706ddb9ae5b2ac0ac11eaa5c5481c8d34f36b330edd1b36e7447a60ae59e60268eeecb64e1ded3cecfc9fa3562a69216da88bc2a2a1e1110ffcc4235717b162ff45b052fe30f03df521589a69857e39468c6ba8839daef42174ff1333ade0d0bc3c61fdae77f5f25ef1a1fb2e47a49f9a78d9bafd0ebc66555a0ea70de41dff8f7ccb35c4355cf6cc2ca6b5aa2aa7ba71be42b539f661a9762be4f04a81c26069d26e6948a78950ca40e111f7b4a6164ba223cf33c0bf19316322bc3b00370eef011f4f70815e47b336fd674611cf9fa98df419d3009002641bd3802d8ea46c72bf7d0b64ab10feabd1daae1b1cfbe2c673cc0f8c1640358460c5647f2214a92ec5ab1af1fdc2ff847cfc53b24e26beb92d7d6b810454ae374af53f85efe3cf383fc79b6e1e812731eb70f86937701e69eb682e1fb0e8107bfef10789fef7d07f1198c2acb317776b8b7f82fe09586a6eff4dfb8f31a5e09f044acf8671580d739acc82262586f16e2f4b195c31a83b76385725123a44629e0096630012fa83478845d482be406122ae683d60a16907d9b663017b523a1810d6dd3616118e16880e151d5d5d2f6170e661ad5f340b4eead7860524dc50d93fa5abed08144009aeecd59981b4cf0840e89991834c09662d0d4d276173e311fd371332990b3c0a4da602930650b7d5c0da0e9de0bd5be2ba81203e6004527060db0a51834b50cb41f742a33aae7667220e78149b5c17260ca17fa440440d33ef6a87b1c4e2505b4bb4e270404d6520648256d57610fe0884e9b0980b4fb06b5060fbf214b68f75b714d6b89c177c759b3a4797daa367766ddc2511cc59deecee4cd0b7f71e79042b6c0937d061ede399d4e9d718e0d6020f900f3e9941597d97d50ce0ed77d7c70f7e8d718156fefe78eefdcaf16cefde6ce69e1fb3ea82b406d9ad6752c89db7de6364c7966ccab1be2b6ed672fc0dd3412275471347dbf65ac28d3ef62a1047dc217775dcfa879eba9c4ab2baa4187ffd081de84137c877db30e2b5aa9c1812ae286896a94efb46fd7e9c09e9cb9d0f3c0bce7d22e3a1e7e3b6869d7fd80ef7e30a0fbd27eca691279109af3a0c63997d0b2ce9f670158286742c833211cc00409517315512217e6e65ca8f1ad65235217cc97f6f230e759311fc00a0965732d65735e33d7a64c41cea62cdef71a2124ededd63cc34debc8512e1f237a305aa2c0f69b43be2c8f0e71f5b2bddf98196b43142e6019b9c76b9392c2db815fb594db71dbe20db6114afc9025499497e8b571087abb7a904f49f6e4b66ffb4256228136b7984ce0598266cc2f779f1d5f5ec79bc8bb69aaded01e1d660aca99f6f7a88823978ce48f557145ffe84e96fb4c09872cc5274517945ea143f1aeca3ec90e1fc53a3c78e7cec607c88dba8e3fc54754b45bb1459fcca63be2999559121f0113914d6ea304e5d786b659e61579c96438c651923de29e45718a8a4ed5f83b6158b6f8c8e1addf0c32fbc93c38803ec76e52d3019f5ae87f5ecb2a3ebd10dea7555b2cf94c1d03518f96936321b23eb8e8134aab92cd7e772d51e196284187aa29b864bf425f4bf123ff01e62bfe58cb4b12bdb8519ea3a871131040475f097790aed30d95271daafb8538567db08b9ec426c86408a540d5c1b205ac4c7991e5a8a85eb60d4e5189eca683b68402b0abd6d6fbb00457d7fa3b50af8a2f71fae89eae691339c2e8c9c5dcf1effdc0b90fd7f51f3ead90adab4254a37a3eb3e600f9642054e839aea61008c3a65422683d67be0ae11f4d082de3d54c43b49ac53cc47e552e606169ea4d1db91ba4a3c7bf45fb937f5a344bdfc2f3f2e7d6cbda1a0fd8d9caad7f519280cb5f6de088cb5ff3b5143ff21fe81168525166d72a8953249ea08b2bcae7ddba326c0c36e16a1e8019a588a239a3e8681f0529499f6a670c095286fbe361f9a3d8e4e38f902d49f5f3743ad1b6d19c961762962ea82f3814a30f99605831ebce391c5521798ed828a92c1b00250900019a69c340da8d5cbb8dc3d67af71125499c9771b97b3ac71572cb3c3aa06d9a3d1551be7bca8a230e79ea426ff401a0ad2af098f81236c79c945620d0a4e0e253f889d24aa07ecc39d1a6bdd512a4c258eac09a51851e89271598edab0117b19262c2a9d69cd49db2ac428585206dbd9920ba0409360db2b4b498cdfc8e03af0e283d0a5b91b640d12c1443d7053d35f58ae8c95adb58ae61dee75face833408feea964adc065cdf6bc3520b2fc95047a3581c7245ecc6ba398176dd4b1a432b0cf718ce1b13e7e156d47fc571255e8dfdfbaf57693b62185325bf2d85b04a654b6370494c47a12423db5c16b66ba9a411996da1ab481c4a00d0618b4b083cba2d21023d6649c9fe36ae8f8dab562244c7ac9ffa30b952f112aff0f2c546493f0da2ad336dcd546ab923a568a15a862a05b1502a6d1ac5212b5ca5546e957fdfaa7d3afd050df44c54a1a321229dd1cf8a30bd69f51c7d6bab4315a79fddafa6d14eab586b452ae4205ad6afd9b62f1fe9bd66c9510a855ad309d06b3e06f9259f7b7af8af5772bff566a5535c096cd1889935efaffe862f56754abd866e59c019d7e3550acb88e9566156b18a856856c6914ab8c40ad6695d0f955b5fee9542b30d237d1ad703b4602a593ff3fba58fd39546b7f859df604dd019f898a854aea0518fa8e85872a68af9cdf5929ef2f42a16679f8f2344dbc007df90e4997b82f4fdad745f4cfb288fe0e6469a265faf7d193af86c05743c058a01859b23c79f8ccd47df1e55f4ecdc4e7255f9eb15f64c9d7f0f7eb29cfd7c57e9c144d7480f4a5fbf0f56ceacfb0c0f7617d58a80407e29789bd25018a60ec2d26ed4bc6deea92d499c6e04a626eb78bfc79d6fe1b70e17fb2e04cb870f2405bb199df6fa0ad9456bb405b46dc4c026d95181451b5ca2184a26a4905e3a8da6e30f02f495c2dc16911570b4d868e47715aa26aa698024c664605fb1b824c517777f28f7115ed138493e174ba224e71e7f1354e80fee6f638becb70899e5dea06a1985c171068a0e9365d0f9ce1d00df3e7c6dfe992ec3b24d169d8263e6cbef2597adaf0e26fbe0173d870294a66f7be6dda1c5585099a346eeaf64d4063866ffab723272c80adccf56905bb1c2960512baff21430000de217fcab9e3132ba6adcdffae1eab03f36e4845d6bccdb960e3d83e0fbff60c2261999dd53d82265fd2558b11a946c91ed7123e6ce6004719a5fab2e9d24668d19359f4504a84101d51640d797150b0d8d4cc2c42123a940c08ca477da6c969e19358623d925871406922e81c7b14f2ca91d46fa3dbd01c3483a2e0c23fd32dee85164d21d0e1945050266148f9b7510eccda8311b452ab7233f8c6c11388e746648ed40d24f2e0d1848d2777e20d9c793468f249db770c840caebb3e3b80f57e1ca8816d3616c13348aa348954806b14beea81d43ea9d8e214388bb2d0e21f5e486e90852a99c3ea31d722e93e8ade7786f9cdac205b3877c7e93446224e97939078c160189be7f46b68c0a81b155a37e5d7f1a03857aac9d970db608643ffdd4bbb8b9bd95a942f8c18b0b4dcb34e262dc1fbd59a37e86791a0b857ad7971f4ab608640dfd2ab07dd7870e25e1073f94342d9f7928f5b68dfab9ce89cc14eaf547618563cbe0358e7e3dd2bef7434793b04458f068623ef3706a0d1cf5336fd3182bd4db61e060f665f2c16cdf1eb3eefbf0b1ac19028e654bcb9463696a7d368665efaec35e5dc0537789d3c63bd7c2f4febaf60be0b2c36df427522d6482aa0a15d8955773aefd4c84a7fd75cad2cecfbc2b107eba45e2de68ba41fc76cd139f9a273f81376b3cc6c39817c895f8184973dbee2404ff74f3243aa073961c99446e9461b4091cdf0f1c3fa09ea284f15ecac9714e86894d15a01c10d2934382a2024802082b10fe7083cd8e12e4cf26c71d7901b6d1ccd4778ae645b771130ff3292ee37d9cd46c2394410d504c5635a2e1ba44190dc0ee6fc8d21ff873c9a0e22f976b52c5f57042791715e0aa85803d02812616751ab52f50f4d1ad7ff7b91e8b2c21cf64a90ebdff5fc9f93dfe3e387d47913df1b93bea4fd0d1a5e27d40a02befbe671f267c2cea556247ffcd9497e7224e3fb610ed2f0831fe849f16141bf077f4df50033ed3800f3440274d7164c5e7ea9234e9a8a4305831484b49e55761fd91524414ffaf6e9c1ed1f336e08e6e98534a59ed46a3b538fcb978fea346c0bc1981a5ff1f3db6d0ba2e4fcf428d81d945abd9be3503fb7b81a26396262f5437d434900f405fa041d2b1c40499398fcc4576a6915c06aa6b9a97169dc8b58f6bd6f45b50a5a900c08a9368d7d2ace31631c46da8535700603bfe2d75b4d0618966c4686a40c01d392b0d3966b3ad21dd10ae9f6f16bd342304e0ce803a06040ea0cd922c0945ddc8c9b54ac36551a1d8b0c0a2b6ae6247f2c69e646bc5618fc3ac7aaf7b217b44d70b5b05638fc3ac7adf0b9dd103a1b0564d039018d6ef3b12d877c446a941240caf3a48f50dee81d9804c83c656670eeed4f8fe9877a593b2b58909f7cec40013e0fb803d2368fc816476ece780dca8a0c66e1b9d2a3325644098114a1e5b4f3064760017bfde7dcf4651bac03bd5b638c4e7fd7408a861fd0bf5379b4b53b169621f6f90728b7b0bfbd5d4ce7ec7bc742cbe2ddf7860c19ab270553ed774f7c4fb0cdc8d6febd9628247bbb714b5a8d8230003fe728a93e45d3f80f86d8c3b80dd12e78124b855d65a77a34ce25451e544d5e1ec65160771c2c2c5d660848079a15a9488462af43829f1d03cfadf60611d6a905f9d7dc31d0783334f2af12e74f61195224b6664437c38a3c34774fc4fa60f717a8c0f519581e1bc924386797fc8e08211bf60b4228939a00be24bf4883adfdb63cd2894566f93384551e1d44a62566539f98374df3915d9e5ad10257177e75419ffd9bbbbbb93b7461ae91bad1b12f1f29f3c08258fca5f7b47f468888d0fe56cc685d89ebf9381a3defc6625aa561c9df170d7d8993721b72e0db4d98b3db488d61144691743624e1c7f262484c8000fd50e9c6f0a0e489a18281f8a8634032febe45811986af05b9a691190d13c9930cc9d8de7f8217530d30e4fb7a412af3fb9c0f7ca66ed5f722b015c6926218e36a55c01178fe6953b24d3c16b5a6d6c4b184dcbded766994ab3ca8d92247b4247dd69228d865c0c81ef89482e0a31c32cb9dfd15d5fef9f9a696d6c97dde1cb78607873853647c2fc19b8d325398cd668c540a7c47d765e2471beed1f1c7986ee11e00b7db75899d7375a99d793aecc3036cec86aa201d0a5cd7b50ffc9c5335ce2e33141382cc1c5c108fe927a467bfa57ccd482da869bb00626d88ffef2126485c8d4a32048e4a91b634b61bc8510d85a08c735f2d15a65210c5d0c026fe904feca09027c90be13951fd42a7694ca9a6c2328ea6ed5fb2a314a7779b76b80dcec742a11097fc072d57eef1fa519a4f04f4916555b0c426b34bf5768dcc318347e725b929d0e122893153394373262ed5460d5aca21635cdd6530542e9f874cc1596c1c1d4e065524485ada57df6dc886ebd6656a8b8c469544d3095bf6e2a6fbea9644691d941fc3ec652dc67427207ef386ed783c15b4f88f86eeb614beff0dde81473d77e833a9dac4db867bd9d387dd66dec67102ce9ce966d5b8a5ee57f86c857efc4bbc0695e4b5e8be4ed37c7a88ab6f8f70fe5a7c7bf3c5f92dde11c1525aa7ebc562777edbc09df979f1e67cf97242d7ffcee5c55f9f6871f9e9e9eee9fc2fbac78fc21f03cafaefaddec538c9e7ece9e7ffc0e8fe672e62fbf7b133ebc09dfe751759e9de224718b6b827efc0e7d4269763c7e37abb757fcb7e38fdffd773f982d0eee7db09e79eefd22bcf77df77ee5df079bffb69a6dee179bc40dee838d1bdc87917fef79e18cfc17cb91ebdfcf8359fd9f249c85877b7f5dff330fef830dc151de2f42f7def7ef57be7b1f6c9285bbf849c032ab49f8f53b4cf58fdfbd09c2d3e9f4dd0fa43b756fdf840fdfa8c6d67cb6fe1187c79fadfe6b3d408b45cdefd9fd7ce1fa33bfbc9f2f667efdbff3f280cb66be8bbfb97ee962a0fa7ff65cada74266365dba7c7a62fd5173a535526a5451d25b16b599e0d4ff9905eb37e481da3c2a505acdc2e00d6099d8d537ea8a6ef3d5f6a975d9dc2fd46895bb2a6877046f4ccaa7b83a9c094ea926e535e772e5f8ebc0f13773587712a4f48a688cda5f387e3877fcb9442dd3f45aeeb8b9a674be39a625edce59bd53d660d7f968291b8cce26a166b9155689590a513998eb52fb116cc596e3909d0830c8640bbe964f94317b70055add26dca2aae12e5c8151adc25b572eadcefdfbd5025df8cb46ff1a5ff2aca8a2b46a1c72248f567785aaa9353aadcff06c3d961c9027556adceded33b242f2a485f7c6e89d53f296a9417a1cf28a29e1e3214a0e6f7d7499b9b379fe7cd7fa3cf9cf009fb183c098b77ae8516aaee52ee62521def3deccdc998f2e52cc76ceb5f942338fc6fad9cc1ad0ccf66148cce67d8f1bde710d33075a1155efcf4758055d0b2b8316a6300efa1637e62dda2e598b95b35a387ac7c614b682e990d8e00ff69bc551b8ac7e3bfb014e5931bd25213a0694ad69f628b65e9eedb7e166be5f6c269208800ead5f50bd2e92bfdd384d5141f21ce2e02c723cd8642ced5df6f72b74b15c67496c1913ba26dc3be58e9aef0374610e6bee6bd3824e390938fb4d88a062dd281af09f096289c04d320746982a26efa5821726833988612db19f8f109869cdc001832208f92b9486179c097d2086e6beaf182823357307ba65c9b4bdc5398db7b8d1418db798f4a40646a70eefd22ae58ebd3841f38048ad31aeeda5ed1949e005fb50134f36f6189eb61ba467f0761e75f56ce733074fe6a3d74dda539c20213987492edd36a2a5d133fda1738fb189a0ea43a4ba0ccffd1635f0a41519edf3971ee49a275974a42f78f335b79a5a138461c863d0c41422433a46dff0b0ed1ea9cba4ce50a429a153aaf1fd16d414ae6b1f91379c036413465d5d9b04157da76f1877b57459a3692e0a2a4551dc9c0d9f34721ca3a70fab3e8dcd86b1f364788f9a1963364998de4966c867e8b3208163bb4f21546ca457c2946e7f26af7dae2310067b559cfe4f9ed857eae584df24a2c7293599bf946457bf797e6fab84dbc4a348ad9792c04fda7c0fa9571bfc75e0054b3a2e749e3f939f4f2de33cc80939491ef82189dd6ddb230f4445e90151a1adfc47fef784af54c862bddb3b758d13bacbe3355b7b382e09c761df2e40579caf53640483b08ecb0706609c060fbcd8322d915c01b7cf910ed386e7b784b4bf572f39fab144517138ff830f6af15a3d15ff8a53fb91d27dd6bd1cc307c68ae8fb4bd3e60e285fcd6af626b7c8ecce25f005ec6868d9fe7a17c1ec2e02b38e507bb07a1da15e2ec2bf75bab0d9cbc1cf9810bc2bafcda2c7782ee9f50d377568ef0dfc5c644f25fa4639daad99fc056fbad01714acb607406f5a7beb5697155a9ac99505d85cd5f744a710485f3ab5f07bdb796a7a653a58b24ac26e52c11b63c190b663b64314d192a4b7c246e7f7367b484f479039edace0372acc66847ee98dd66af803777f8b3d81de74a7c4aa0678db4205cb9a19bd89ea1bb5d430bc5f13b06542ad09e437d1f98b4ec3af175ccf43e0bd2fa5ff60d8ce6cf8a6cdf2bd01f1a501f6fdc21df4889bbce72ac3ddd2676062b98f4239152263cbfcb3be29a1a57b905d6d8017584f55dc3336b5c7f8dcd4aeb0af6774539cd181ef9eea8641e7e3931a94a6d0c4a218429a68875bca0978d838351f6e7104d9f6801c44aa8c07b37e992b03ceccfe52ee6a5b73dabc4b762e682d5e3a9d955be6389ea689b0213ff0d3acca70bb5d5915d947b4fd761d6df6d15adfb0c4ccbed1e49058cb9f5fd40dd691f13b8da6a9acb83419db07675e572509eb8ea967b4f5dcb73a4ba23d6aef45ef51f2cae6d6826ae0df6de40d753f7a2583c5bfcf28c9db0030aad2827fc899de6a042246fc137abd4a6804b8fd08a3615e4e92a1f18e6b6fe1a9d030aff6c8d0ec4fab3058aad0d0afc5c8b01c82d00b65c4e01431e373f493dcf65554543bf8b3a2796a87068bd7961c33d4b347d86b2af05a620b65d85a0d0d73d9d157c1ad1bc0617fe1e55ab10167ac6ba7bff720a8c8e1520fc7be8e907ff8d1b01133017eba6af89c801f4fd2aa22f596d75e6c0c2b53026458031625cec2e16589eca2d9e545120a2554a0f2690259f1f9d371b82289b0a3024da5e94b54f5fbf8d03b69ba11b87e93e3d6e141c424bb42214e352b3937306892eeb4b27903c09a14265a971cdd9a50d1b34e4d84160ed34005ea326970051adadcb6ea5319ead4a577f1ada423da908a2e79f5d2fb0405602853306b6228aa34d899d86762919ca24b9cbc6cff7ac8d2d25f3a6594966e898af8c4fb46f91806525cbd24a83d9927d76dcb6797145db2ac3ad77d792ca297f21025a837f4588028ade22889a3b28dda540efe3b7a73a092f2661ce49cafa2c7d7de5d6a30e1b3c3b5bca3d31ce33f2f711a5f2292d48f6c2dee68788144255ebaa733cb965e0171e8d5f0ad7a66dfc2147da457b6e97b36eba4c86ef486b440875cddb49db28ad2635488aaf0668335948dd3b43984b113b5dcb21a9a9123c698f5424d8068423917514e24d800e21b4af230165ba1bee9ac9866188636c5c9bdc1b690a288ac26f294b2ea0a3d15ba2715790cd499ab60e0698e58b508cd0d97bea668c2f41e235d5336c7dd6618f15fd4f9b60e5e7fc6adc3a0db5dcda1dd9102937c9f25c7545ea224a16502ee3c05868d49eaca0cb731a0e4463a9814364bb9c13545b9999bb6f4ca4495313c5ae75c9ce39a93ac60ce4a9671f77492c5c34b25cbb8459d6405c60cd349961c93e9d31a2a5744cf39bd885260b8480b550bb21801abdf4df49a57e276b2d3dce021178f02f21d12819efc62411bf530c58503cbce7cb6c069638acc022f98d40bc6b819d980a555ce29d9b9ab090def043986534cda62a19dd692ba8caf5a23c00bc75f84ce6629ca2f5d228c8577da6c96deedc557ec8a527c1bb278f1edba325e7a45820ca597906689db5c7a01460d92de068f2877f4d99e567aa558e81312495de660442dbd81bf72fcd073e6a120be6c91301ac7cd3a08f6b7975fb1334af96dc8e2e497eacb78011629321460429b256e730106383548801b3ca2e8d1a7ca5a019662a14fe42475e983389dfc6e9cc5a2fe47145faa441c8a7db80a57b7975ea1276ae1255409c2dbf664bcec0af4988a2ea6cc0eb5b9e48a5c1a24b8048d2871741c83566e6548e8835f22937faa6bb5d4f6edeb2ddb696ed952b232c9e5d316d3b80ba70d96e175f15f74a8e217d81381ae8a692f8d5a6847d94551a516fc5217427ba2c81b31c31c943d027028fa6243f723fe0b3b756ee7faeadb90d38c8b0d1d5bf8afc1ee236e21fa13ddef01fb37cd2d1ea50ab44633a6f21fe386ce702526c10568339e33b7b97dd3b7ceba77fe308e4580f62fb066b2040c751b02a864cb1cd46db5710f49dcd4633ebd380c9e9da3e4e2cb2b9769a44a8f54af78ec254da8d638ddfe20be5e80f2cfeada05da1feac90550992894b6d78315ca44033eb9284c321dad65c25a4a3e03f503244a8fd44e9998499950ad7180fe615cef00ed9fd7d30e1030d4b10ea032d1276db707eb93c9c67c7a719864525acb85bda47c06f20748951ea99d4e319334a11a714eff414e4344c23febe187d8fcd0b30e1193893269ba3c58974c33d6934bc12413d1561cac05e4f6c40f10262d4e3b1d62246094c7ec90a0a8e8eee761900a3d57518122ca0f79899eddde57d99d0b61c7b808ee889ff05f24c65952c8f879b1739476e2c6e9191571053446556ec95a3391704077fe946e55b19fa3ddab20cae16e5608dd14487ef79e1191e6f1ee57c94c001405c0b1c9ddb1fce578f6c22ffd90fd8e4df2808f7cb8da44b59dab4bd2a4f0754000a26bc0a23ccbb34fa8c039897354c0402adc6512d71229edc6a24dc889cf8f4f597121ba53d79399b2511a84ca01ce1fbc5759ce9fa3f30db3b2a02a6ce2890d9205806d34391f84d4077258ede80ab0e040c3502474430bab910f01be1912f0610f2ac989375b88611255966bb941d13e6396ddfe85267888f99c17af42460bae56ff6220a97ac732a4aa9154acdc534a879fe6b2b548298d66602ab9045787f47a41457c20aca343eea9709e7668e8fbe7e2412d0954617ec1178da80ce6e368606ed8b3410a648df266635ba0eecff30d344dd83740936dd89da63393b6a6ec1aee1cd0583f676c6485c8019e58b5d287260aa0ed01edce275c6a540a937789fe363ea94e93341af8d442fff35a56f1e9c56dd34837c592cf74701bf794111c284625b0ae351a1f1976bb54ba5f53999ba632972520c756081c19182ca8971ba0003849b49c6cb2bcfb1e982eefbe67b34a3d16b595bfa3ff66cacb7311a71f5b88f697b449fcfd142709d474570890e0efe8bf21127c86045f4642f3f4a563c314a60ecf2ee6b9c72ebb06d0304e3aa26b5ec8d1a2c321adce12261d123a133850f0bbc9bb2d528e3fd3919040e7e8627565a8deef219bb7a4dfac8d07f49c05d02180ebfe9eb2e26bf860200c32787a06281869226e1aec16e45b536e48b421bd6619fb290ee0df4d2a04c018038a551e1150fc011c2203a4405a078cbf5c39fe3a70fccd1c7bffb011754487ac88b0b547a59d6d1671130a555203d12a8e9509521d3e7de7fd85e38773c79faf69d7a7653fa54a4957413205a10ed9b4b185f0db74c19e7a53c24d697ee566c538cda9eb89a5b4025cb095f7812d6f35ad0eeceea89e0ee8e480fe89a99fd9a9cb9f7599e8e81e5a032843d663d1a87e1e50b70834b2dd1e4a59f54de0b6694549427af3a5c8809f0ae26ce93222c974e48ce7215f713ba8925a736a89b3a5cb982433e3e446b23164dc2c3929b1f2fc70edf88b85e32fd7d445aa2f35e16e37793eef6cb8ad64ab0751773bc8daaa1b54159e0056969e75b5210a59d6e4985eda77d0ae6f56b26c663d2bab0ed24ec3da35b5df0dba3aa697f61db4ef9ba59dafb92437c6e41f31c1872f00a3a9d16d086ce7f26804c3e93061c6603e0c9af2d360194991fd565133e586acb96ab64cc49151cc18c5079d2d61ec50602f82996caeb93b8640ca31eb668d05458ac1c86894d736f63a69e81e4cb23db5861bf27103339431b25d0b1551e82fee26217162d9f9dcc3afe45138218bac5dbe922ba203d934bc3a1599094a787b7ae77b2bc75f8656ee5405a113c8d540efa50d5163e9d188df404632e143d2b7f1ec7b6086f7b57d560f4e8339705134352ba1ba565698e18a6c5057fdfad4a8c560183706ef86ad5625630c4ae10f3add3b11fb84b93b6628866c788cc999dcf032181163756b32ba434c7dfba5dd9c12c3457e4a411be10b542efc23846d0a4403fd5366248d11b9614eac2186920d352a93691538fe6ae104736fa063cac64e99420027d258a6844e43e354123aa97e1ced171969a20ea4716263b5c957616186b669508044d5d6cd1a0fa814c3409f475bdb766b2fa37b30c9f6d49afa3c460dcc50c6c86cca3e230ce5f2f83d89cee71e7d158bc2093934d4e3c1e7b119c8a5e1d5cd3c1e210e1e5b7b431c1e109d1348d5383785115163e9510bdf403e4eeeefb0c2dbf93be08713062e889686105377886da25b8d0deaaa1fc71eb5100ce3c6587f87d98a648c4125fbbdbb6322ee093377cc488cb0d0f5e44c6e73190c88b1b23519dc11d6b6c5b26e4e89d9023fa59c8df776c08bfe08599b02d104de0e7b83c8649c473929ac8c241b6a54e6d29284e1f8f3c5386f8791913285004ea4b04c099d86c6a9247452f538956762a87d3a90c6692dd526919e850ddae668041e35b26ed6783ca518063a3bdadab67b7a19dd8349b6a7d6d4d9316a6086324676f990ca5549793b7e4fb2f3b9875fc9a37042160d7577f0293607b26978753377c7c6777c7fe18476f7e514844e2057e3bc1446448da547237e031939b9c3c30a6fe7f0801fda1bb8285ada424cdd21e6896e4536a80b3d1538820f231c1e0086113c19e1f0305f9f7a8fc744ec13e6ee98a11861a5ebc999dcf032181163756b32ba232c6e8ba5dd9c12c3457e4a411beff28017fe11c23605a2095c1ef64691c9408ff25458194a36d4a84ca660b170fcd5c6f1bd609ccfc3c850994202275259a6844e43e354223aa9829cca3f31d4461d48e3c4d62ac9fc6d618636b9e481f7706d1b351e4d1982810e8fa6b2edb65e42f4507aad493575768c1992814c919a925d3e7dcad3f1fb1199cf3bec2af684d37167a88f837b0260188706d7367470cc9df9bafe67807f03a072bc348df349989034921ab5d00de3e1e49e0d1bb49d63037e897dd8c26769efd0558758209a35575f157a487e380f46f8344404c3f931c2a361ba0ad1fe8c293827ccd6118330c2fed61233b54da51f0b63d56a30ac23ec68f3c5db980eb3657c42f91aefc50097f6e13236019e095c18d6268fc1088ff23bd8984116b468dd173ef97794fbc2c4129940f2a65151a6644e42e144a239a53e9ccac930d0fc1c46e1104394bcb3403e08e4d085afd4d3256d92f9265778b8c89fe9370396cc2b5f7cb34c63bc24b58d814f46a99ee36a1364879bf97eb1b9c55b02dee2468f09788b495f1390a033cdea464b9c563535c0fa04982da0c20cd6376cd226d09cf42d9ce1448ade224b29f5e6de5c784cfd36a33086bb463d5c0e4b651f78c13e0c55a9ecb59c3130dbdafea80d2a13a4303e85c790ce72cfbcd62649713f245b1b44b89dd0182ff2964d695b1156ab9e472b832edb78482454197a43e46f3e2eee76adab641d6df6d15afa680664ad0e1425fec184714f2310cbe290a50c65e0d76d74aa50f19a67658c13dc47fb324bae15da5559be5de5cfbbee499376b1591c56dedadb358f0fb9e8134aab929ee0b454d08d08f6db4c848789164014afe6f18dd0d8e017e5babe1728896a21963ca894a0aaee70994787387ddca659718912a970e0973bd1731ea5a07c50c5ec73b0b683f9ca0c8ba23af04e0457f60a24fc87672b4793301505eaf6a7c3e1688652b9524b28a6ad00d818e62806816831d52180ebbed6b3c60fba6953ff0953d53f7f0495c86c77fed124be02f58aa58ad7595ecbbb84c5a4f05566df18db9c3437f9461a6e01c2c194d3af2bfa6433728a2e71f2b2fdeb214b4b7fe994515aba252ae213b757e15fec6c8aab97043533973c9f9595cf2e29ba645975ae27f66311bd948728e9dfd2e200a2b48aa3248e4aac95f1066efbcd7f3c2cdf2fbf219d28ae695aefa42af45ccdaa5a7539f8bf3d8bf0cff6f9bc56a378dc1b6d3264b3aa512950d1196caaae027f3f77ef38fb3ef89a26ff909c9c2a59d36756b13043b3f43c5537257d81341584609f1d5f6655413f65a8641e082feb9604b905f0197a5bca6f9e6c145ffee7279b4232d440670a48262d3a8833c045ae0ecc6a01e8acdecbd98eeb809a7a7e681bb4197513a6184bae594da5a4f1ce865ad4a0fe703fdd43961e515a22a9d82b2ac0938a2c0197284994281b884e75e137a297940bab79ed7a993f1b75a4ac8a38afa96a79975667c2b9b7d9f178572b1c313d0cb59b336518d1f7b8fbf861607a8ceec4116ac707d40576ed351dc33db15239439b31eddf444deb479427876305b6bd6fdee2ed461d6fc6c81ebc2701dbc8acf4ba328f4478c73d2b6bd956fbdba831f669fddbcc507a5fc82e9e379daa90321ddab4d9acbd4d8bb613783a2a46cfe5db0dc9b049cf3ecfcdaa1c033a864c6d5af8c5993db451dd1ca75b6da7f847f4e21eb2cb3e13dee0661edfbef5abdb1c3153be70dc23edb6e3d3bd5ddc2167defba5fbc1bcf0bb68778d7d3df1b5e0beb6f6a5e0acaa818f7194648fd8b9c19c1436661604dc3aeeeabfdd5a7e1afce223fe40b5e65312ed9196950c9243965c2f69db5474adb2dd257a6e5d086befd37957cf9b53923db92fa4bca526f43a570d8dab2108453550cba3a6df814115408d36485a6ed2182ce6c8b8b7e6cb3c3a20778faa278452e1c979b694158cf667824e9c9890aef61275c7b1cbef3a8b3d83a02f96ee373e9cc263c4fee25d14e8b96a9ae8b1135ab0e8df35b2ffdab96abef9d7f892674515a555e7bfb9d66b46ffbdc7f4aefcf4d8d18a8964cb704b7faf27fd3fee5eebffdb1eae4581d2ea7dad177b58e226ec742b9f851b839455941ea3e2a884020aa18732fa6db041eb1cb0960e165e41119d7618a683c9cd256d5d80020aa1d4993a2e48d29299d121e7822269184c07736157daba000514423935745c90dc5536a343ce05c54d62980e3abe57da380f249641776c742c80a39a8d889033000c3a2ef3281591bf5a79b73924b8378e0431e044bfbd5b1c52ee10d162b7030fee365e6c190c44bdeb0e0902daabde3c21abe702d452bb8e4cc1206a1644c7a3b042fdc7c3327cf886056aac0bb2f002157ed9482a90851baaf1135fa3c89edad51a825f43f0b51d0301af78e02a73a3a28a4fd101a466f51ea870ca92232a20f00f01031e177912a508805ccd7f6620b19144cc2308af178ad08d7d04822f4470d9087981082b1d1c6f2e005f6a9d221d9e55b0826b9cb322fe354bab2891777b152ce1ca92beac02b12f185ed69f5520e90f2c3eab40e42b06ef8c3f4557d8114cd3ac228ff74352ea31b0799ec40719f02a5c48804b0875e033d0453fb7244c0dfccd465a45c2d7c0dfacc53ac7ec09e840e06f4211564a8b27c2ca890844e02acbe5c89730bcbc819558e10a084ee06f44b697d41400abcc812aada081155841282b54c4e54701f27b06ea5a6597a88a0fee353f4615026566f10b5d651f1d1f218db67c0859b0d43dc4c5210161371f38d88f6e743864d7149ca54b8e80e2901d41b42b6604f749948afdff8f878de7b160d9e1233aba392a4a788a2d1969de6709b8367a6ce35906b5bdfc79cd435da20284f47f62219f41742c6b8a189d0e5109338711a8fd3506bbb10a98a13944c9e19a4455062a35ef670e16d5d61da87738c80b2a2250301e58b8025532c511b28b118195cced30d888b0b2791d063f89c0e0bc0ed975f98092c4adb22778055831527738d76638aca3430eb0804d93070e0c845ab31d3fa34f059e43878f4f5101caf1875fa01af0203c2c591dd8429fb24286fec1832ac8ac13560bb6d052fb84d5812d3834760f4b56ddcb75d5f227114eb9a43d2cd70fd22ab28eaedf4bab487bbbfe595a07eef29a9ddbb1dc04f159d4098a40cdf89ee57712e7fb4c32ee3edb76925d01b060e9f9021866739245205ad62220f0d75c0acd62972c234b018a2c12102cc781ec11029a73404912e52572a30458c81f56cb9083c61bace825bb8252f08195cfec529ba4e0e8f3807954c4f092b70c57026c0929abd5e63d0f58a0b24420f7dfb36395a5a7b800f774e186032c33706eae363f738055119560e7df8b9019c4fde58a557f053ac655bd06803d9ab3841619c4a460e5af3830506dac7e6695dd750ff6f9fd9a8792ecd657ef370264812ed92710ed077670aec52774748b7a91922e412b4e4bc0f2f9c030f4189567998e582d7c16b48af6126366cdcc91234a5005c2cde71c5c05981de186832ae24fa89978e0966bc382971f25ee869fd8aec7d163115ddcaa40e008fcccf6a93d56942f193e0c2f5f2f02b6028e5f074d5946168ed9e12ad3292108e966390239e73f80e0e5392a4096f82c036bc529da56ff1b0b0399741eeb193866571cf9852d3bd536ec61f97e25ad28df8c5151b74c35b52db562ad49ae92d4c3f68ba292d4f1c12eb35c2dd07858793c0b1fcfe9b592dba7efb9b196afe101db85227a74cf517a4c907a6c56fe52564f31342b7fc1d57a026d809f59a85a2354f1059c2e1cc62b71c1c01b5f66b9acd71668bdf018d6a17f22c8391984ef19bea1f49815f0cabb5a70909f5092e50081c1ca63741b2aa252b29b0959b802dc212ee7cc6285ae4506cdce9f58ae3c93cd11a86f961c64723d22b7c8c0317cf88905cea3f42835bae61c6c064b75c8f6fb05b9d9e9048aff7b01109cf48b9f043858792e5937c8292a2be53eeea7b500aed896b1437042b005b758f2506e79dd978722dec382b766698e13d0defbc9e7a0246ef0702dc2b91f1102f515bba36a809318360f1f1e0060b9b1c46ea44e490498fd01b7db382511a83e563f6d38b0f20cba7a42162ccbf3977a1187dd4c2b0ef8c9dd17517a8030afdefb02304a618b722e4092bbe220b0270017e8538ca0b9ba7a1f48805574f31c7982fd972c7ff1e14dbd53842dcb450040a730d13f7b00ac6cfab2c66d038c2d1f78aa85527069132b9e9e44e68c5a0290710a6d5e574b8e6ed81064f72ea70cf669863f7150e09911ebc5395d9344e19e598bc06515618fae74dfb278e0eb948702c13c658f3f4ed7f420f3993c30943c4669a5b08e7e61f8f588b224939ef12ce71e075ca2a800e7c4d267c4e631ae14f387f573d6b087ec72814c928715ebc0ad612fa800d7e815eb6bad4153e5349e0bf0f9155ea483b508092acb55f09e872c500ed81e0f2bd642794c603fc7f2679f05cbc0cdf972b914c0dc14554ff07c58fdcc8a4c11e5e0a0b2c61606932f4e4bd6847b2c62d8cdebf150ae44372f1f58592db26bee66fbda2a0559e5fd2480a3a3bb8f0ac58464d6d3da8807497ee0a1a41ed89f7f1640651ba89fdf0ba0d21df4cf1b0116f6b4feccf0e08c2249c0002b0004cecde09001f6a0b481ad9e40a9663d1a356c8960efe17b0e101aa060b9e4e92c6ac5927d84b7f93f051c742515c35ff84e559708e4a8cff52811a1fe771e0215ee254aa34724735f2c59b98b1fcf896ce81f38d0b2ca0a30f862ce0e7d06197d41c8eea6a96808e53cf1deeb6ab95179006798bee611c15559cf3d55f518975511efafb2d084805131f1d14daf97bd643bc9a8579cabc42db22aaa9034d883b525982a52b747f8335b47bacb6346274e25a7afec4a87c19abd03bc1bfae08bf08f089cc01f440a5ce9aabffa108ad0e4441f849eb3d0a7cc2de347303823e47a98a2c2fd6716c3b39e23a244307397ef59b80a15259259552b56f3c4b91b1d8f05820f23562cd3caf20af69f3d09c760643f000e1a1b5440a025fb81154b6b15253134a3961eb33babf9492eb98022cbd8271f11a47356ec81e347f4823d0338621e54232b1ebc36fce05577c506931160d9e9c98a3d93c7572864bef995c7f7cc95464fb12605062d0f11e4c17ae03c58352c491e011a7f010f5b9e6358ddb0e11d356815ed414dcb3237cd9e52f7133ac7f0fe651532b301df2e0127cd82057b81ed09d62588c1401bcd5f737092c345efbd0887a38640e00f00f03e4a920cded6b05aab8197eff458af68032eb32b7c0f04ae4dd73db86cfb3e50e11ca3a2d6b9709425cfebba86d41db27c0ff5b6fc889ee47d08a01a5951d57bdbe45a5692c165f57bbd7eca75360b1a9f50197d82e7207b1282eda4fd3581a6c092f58b24311886b564238d60cf5cc09d30d550cdc91cb802b0063a863ea22a8a13d9e666356787259379eefd0d0707f7899da6d9a30bf27db9f98987934cc03933012f517a850f9c7e598a7049a351d1119fa582bdff89ad069adecb8003720f0592d816739f87bd44c5475859ad3eb0b0cff125fe1576fb336cbda0630c468fb1bbfe0b4aafa04511f050f2d57fb95808c05207df9c052d1e914a54e7bf88e0f55481f7d48ce18a93b7ca5835e720af504842c0ea964bb68f13e4e667c9d6930d6068a03fc547d0765d6ed89ec1da7fc5b12b034f8097ac8fea925dd32a825519eba1913947d84df4e5fa589ea113e387e50796e3d7a48adb3c509017d263a14bd8f0fb8999a569a3fbf1ed485044563cb84c97b2dbbb1a92386840d80f3cac34f475f9b011600b541e8a586a52b14169758de62e24b8835ab0d071fa4f7062b386759a55f14919e53e978237db22d0d2656373c966151d656746abf992034785eccc993d37cb4ea71834cc976c3c53763ad5e604c810665a6471e29e620407f486cc6ccc524564cb72c17020bb56525eb1a78b79bdf9965b91ec69431ea5083be941f7e16ab51281a5bba31547468e8a4312c3abd89c052d2299bf75c5ee50f3a802a1d8139a1a4abe435fb2470e7974854f9fd8b3c01c65396c0b871f58b8e280d22a82fdf16c00ab7caeb33b11c95a107066781ecbe3c3966b96e5b029c44ea33cfe04ebe35f7c014c2a16cb07661e915bd200b3392860a5fc0b0391252f8fca036ad6c1934b4edf961fd8512ed031c6492cdc288d92973286b76c2bae925a0dffc443d702223b605a73b863c85d1a841b8eee4c7a06c0c65be54596a3a28ae178f7d00760c101636325f2eb3e89cbb3ea4c6ec59ee6e6d7049e760f8c1a29a2f4085f3664ef3515e89049a2291e58b8236827b1a7e9053a15083efa67f728057a2c5059c68acb01ab0547a8cc1c62170702a7887c64ad61065c1ea0f6415e477e0bf401a8a4b908fa5e52457617f467163e47f00d0af61a5981ca2c8179c97a1f8b183c4d678f7271ffe59b7396dbf0f9fcf217b659e20157c56c3ef840851c5e3c960f0cf632aa5092c4f0d68f0d992ba34ff08eea6746df9787082730ce1350edafd81bc7f2f595bd4f4be0dc8864de82f6536b00bc42973c916cff03b8c2336cef842cf0633d14e8a80a3b7f78cf56916d34d898470207eabe60c3de0d2b517a7461bfddf20100949e46afc225040efb0e56ec45821215312a65f1ea9b25008baf093c5e0be90558d695d2d42231dc702b1b005e756ab3590315e467311baec75515a78fe0c2c71e93ca82a097013b3c6799a1ff33870e567bef05a83c4e1fdd832c8a975116657c91dd8558b12ee55212c6b65ab2ecbf444922bb38f1b0fcb01281252e8d072e6a960083465d0dfb4184ad62d8a7f781ed589a3d9d92e8231cc2cf4a707688a344eeae620f3d4bc95924eb27aaa1dc28c9cfd11e49a3cfe71f94556427bd4bf66a09a907437e58089032a41f9602a86aafbc9c3fc8e1e594b3529527b1d24dbc6056e1f27f5d25536fcdd2ae892b5b3eac3870c0fa0fb8ec0c3594cba4f26060390250ae8ef95d09e0f258825f0458557c302b52b20b2fac2eae8af823aace45767d0475c14f5cef5e24073fec3c798a72cdc500f6be1daea0ba11c05e122a5f2efb4c1171b8e2f471032e51612b7677d3401fe3e892c1c7adec7947032f95d0157b77a201af8a384a1f1324bd69c246b1f3b5e0fb1f6c4c4405853c3f2cfdf72cd04784df6081779def7f62819f63703d65d88d9d89ca409d0f8ca482ae9be572c5c228ec8525bb605567a5adc0defba9ced2807336a74075be5ef6a53c9aed010096049eb1bd0797b460c54689d6500a795fb10c002fc10421bb0da9a1700ea4a84091e28ed007b0922a066ac9461575759a275f20997c002be0ff485b616f9e55a043e461c99a5c5526d99cb02ecdaa909c60b0e7265511a5a5643bb26263daab427267808d77925e3ce4c843294ea429531e6c628a0e1cd61aecb169f5942996e5251b3a714d8fa8801de041c85e7ebca690872508d93b20d7541bbbba5eb315f4e11b1fd80ad283e1250b277186b286c93555b91b18ce2a8e3558a3407e399ebdab73852f7e2dd9844e9fa2229639617f6156e12e47923e54f1674d3d69a0e27bb0a2364c911125e9a9e64fccd07caaa558bac02ed9b88a065872538c8d9b6b6061edce7a849ea2048c2a67b3eb34090f25217e0f4bf690f129aa5071c29b32a995cb88f2537c7c84438bd9b31902d7bc810652ed01e0a72c938484b16eb9065c1a68bd62ef623d15487219813d3eff35cb2e92080e36d00103ca42380201b2cadc1378cf62b96a85bfbcee2f28bd921c8e7996679f50e15651f188da179808c03b06e0a988f21c15506ed8069e0617de81ebb220cfba9ccd4035b6c9867aa3071cfd3bc7c3cf36cea1a71b1d6fb6ce9f67015848a8a1de6c12e97264055d5545a673abceea5b1acea340c1a3b98a476d72f39aa63eb175f39c53111de36bb90df367eab1bfedb7a7d3697789f1fca9ce5b7f4d25d2de2ef2e71d8ea06a7350a6887f7669073c798463648e71ad4739396cb23463c40d59f869b2fc795666497c34785d8841dee368f2bd4b73eae36a71852e9f25df3bc9985e4545b5937c66072560993e5be5cf84d14774c81ac727e63e9d5534f0bad70fdb04a22d2df5d2ddba90713d9c1c14f85a8a1ff90f1cffa64c51df23c53fa74d51df216f94ac23f483c920be6ad55d5f4f4c51dfd7d6a5a887baf6941547775fa0e8e316ffd7ad3ff08d9e053d062d00cca72c47e93b4eca25af9d2c578ebf0e1c7f033dad028a1c471f998de25bf62e2b88f60f8572331c7782c1290593bccc389c7900f77bbcd38c43b876fcc5c2f197e415989d594f4d99af79dd97c5a7cfd9ae8217ded464faa0afd94190c077475b8d7ebf5109d7995656fdc19fe85786956d8c9aac40c30ab9f9d60f57873daf2e4006f14f1ebbb7e401053c7044290ca6834b5701f5b39c2fc68083e5d3aa275bdb5e5022a7871bda075cd9b80b049aeec1b493e11638159c99b621e6f5de6931b31aee743a29a6b6e2310a15fc00f5ced43417bda69a56e85a38b6f3a6fd31536d6d1b53a877ba61957af74e9bcdd2a00772f57e131e8c50ef2206d3c1b552ef2c5f8c0107cba7554f8cd53b20727ab8a17d3053ef2cf424ea1d9c0cb7c0790bf50e3634897a8731dba877c52b3b2af801ea9da9692e7a4d35add0b5706ce74dfb63a6dada36a650ef74c32af57edcac8360afef815cbddf840723d4bb88c17470add43bcb1763c0c1f269d51363f50e889c1e6e681fccd43b0b3d897a0727c32d70de42bd830d4da2de61cc36ea5dfe8098027c8072a72b9acb1da9a515b8068cedb7615fcc945ad3c2147a9d6a56a9d6f7e12a5c69c9976bf51bf47f844e1710180eaa95466758620a3754266d7a61accd4539d3820da4df4c9533c093687248fc6f80f2167a1c6a6712350e22d669f11640f31ca0ea55c5cff538a2ee380c3e08eb1719ea01e1a03b99fc767158796b5ec181e3feaaaa31d5b998762504d592547f9343167fe1f8e1dcf1e7f85973e5895976ad70405b9aa5887aef577696433f092c1ca9f1ef02c34d427aa32d33d64a6d05856e6c41def1660770e4c7538e1fdde44fffda03f14d7320ce9c7d07edbce81f1f95629a81321aaaaa184e5bd5aba09f79da367114ec2cc66f5b93802bde94c1f107e4c49f0a07c1bf9b5010cf7bc3477b50724602ad468777b4627d44a7e89a54dd1beef82e69d00e117716dab46d19fdd184869147cfb3935bbde488c2c19f7613f077e7e52b13e2c20cebd2f3ba97dbb7e7f87844296159f71125499c9771b97b3ac715724942b6347b2aa27c87e301eabf5a7910dea2afc7af967d1227c4cc009fd5d050e76ada5b7ed61df46079ef3b4a03fb0bf145fd053be9d6b21964410c3bb2af746452e8cdbd791b37f0ed69715a9f22f5d1b8feb16fb39aea9d930d0e50b59a21a06d16c31aac3162df6f6101346c77a2000ccb3340cb988c11c7eda6036672f07ed391a0aa8d963f0a97bd28d2956993c18a9303aa4c30eb06f618da3c8e993efa1ae3fb2aec2eadeac13dbdc5b4bf1576230ede2e1ce0666d485d0013aaccdb6237750c4cd8a4d44730651b12778166de71c11be1f170d8f83635471934fa800e3304168a060ef2b0efb7ed320a9cc24f30494d4fbd8709da900013d301330935b9e94850d546cb1f6d93588b225dd96289878253acaa4c30eb06f6788041a39c3efa1ae3fb6a6bd0c8435c6e3bed6f85fdb6068d3600e6666d4c6cd07c01857c5b83c62e3469ca368619345cb8d2e9b40f974b9b9aa30c1a7d089319020b45038735d9f7db761905e24e2698a4a6711ec3046d484895e980990457dd7424a86aa3e58fb649ac4591ae6cb1c443e1585655269875037b3cc0a0514e1f7d8df17db53568e4415db79df6b7c27e5b83461bf275b336263668be8042bead4163178c37651bc30c1a3640ef745a852b337fbf49a89e058a21ba460cdf33abc073cab2cfb60ba8187435c1ec348c731a26600362080d87ca249af0868340d51a2b76b419622b81745d8b451d883fb4a9317ea20debed00f3453565b41546f7d3d676914631de749edf08f96d0d175d8ce3ad9a98d86cf9ecdaf7b6468b55e4e9844d989b2c76735aa76a8448bf6ff7a7c3e1a8d9466bf4ae26d4924e9c11ca538790ef4c04a40e6a80be03a32275c0707c2497a8830f90e49036f98fc006d9e0384d601c58978a79a3a3ae30437a603a96b2cb1596469ff651f19a67654c1224a124aa8773f7ab1ba747f4bcf5bd9d719ab0fa7fec77affe5c838359b3c4285a9cdd8a0a676c62e71674922b6fe62fc43843d21187fabb0300ecae7033df2f36bfc1d07d77e3b444d54c9df7cbaed373611c9b1130ce3336ac3daa93a7f8191d6b29e8471d7fdae128bf5d93156987033a3dba3696b6387d64f327f90b49646f530927f0b448e245e7df3ae0c71077c0274a30c4d688dac295ea5ebc9e922caaa87858092cee4f038cff66a0db14666dcce7ccf7faa859cc2c65d82c95030c96003e471a7e0454a30d52fc48378ac8db5c6878aa3492e195cf96d67cb51b9916fa9fd7b28a4f2f6d22bdb658f2599cf37c38330104fb3d658a331e753365a64c74c635c12c4662cf9ac9d644f4f6f2c36311939ff1b88014680d5649dfebc69f9b4483734fd6b2fb292eaf5122bf3c4069872524fe5a746052ac36621be7ebb695fc26881b47750b1ffaec8a1ed01409092f5e0d86bb95eafcf9b77d767ce97025d10bb6145fb950f4df68885e3bd76c890f9c7a6e47aed1d3dd7a1d780c966d9a556f8586ef5e9b0c726d0eee3e94be0163aad473358a5354f02b868a7e1803f3354e9338453dd2685f66c9b55250521e8a2c490c088aae55668e6624554d8d56dcc8cf9e964f7119ef13b67e975f94eb8064189b2666100a47d935b08aa673f8c18a63a1b3107811ccf2e810572f5b9fea8568e2716be3ea8e1db41ba6c4e47bc77c8cf21cb5f6a312102f43af6d5f3d63d4cc3e4adf4203feda33b5650cce328f47a57f79af81daa9ca80fac7f691a6fba0dcc9be03f5aaf812a78ffd337e87eb3e3eb87bf46b8c8ab7f773c777ee570be77e73b71b5409a214d533cbdb899f0c06003dc755cf48c30afc00785f07c06600b6a7ec702d99eb937a8d26ea1d563f75efd01e3e025b567035a2aaf057e00c6d05d85ab4b48abbed34bb9b8676d2fd662104ac25a03f0246e97e41acfcaecca3d492235b7f460c1dfc07c487b22a507538ef806f324248efd81d269dd49cba142956c682d3dab47835a22fc335cb9378a1cf143375dad711d65d75a4eb7c8ad19328bb9a65f3369b36668feefafd56b5d9b5abf6aab05ba6b3825f28eb0a164ccc07c0eb822f088a6ccbafe5594442afc87a68b22c338aeb9415976df726cbdfded693a151887011b7a89b92c8acec8694b6ab8b82e0b71e486cfdd9ca2870843654ab94217457eaa8563e010ac0ae5c15e79255716eb42aa2a844aa0510970f58eb0cc6b8b638468ead4d5ba0387d15872f200e596ea1c92060ac1e8c75896cec7905e72ea4ba8f14a9749fbc4f72d527edda57cdf76716f51b293e595346b26fbeee7f15aa2f2254e4f0fcd6cf11ed4421c1395bdefab470749f586f9e4bf2a5d08e2dfe951ea6336ca440541419b43120fee17a9b276ef9e488daf8012a790b41145088fa83820a556754b828411794566e5455d1e18c8e8def9f0621010d3d4495e5cca348f409b2ebaffae435cd96a64f71325d9bef004636cdb9beff59da9b959f1e010d439ee17feb6ebc237aa445882d501358ef0155e4e1dd1a3808e4c851cb71fb06208ee3c60cf83d496b6a7e7b00ab3d0d97abc6bf27a18a488954d4f54cb6c70f31994c2b2d8f27694ccd6399489b48341e621581b58c80bc2eba3c493b5ac65d3dffeddb84f8dffa4ab423304973ea11f0d79221680ad4045ee2e331414602b7f0de000b636722fdbb7ce7d014a92921ee4f43d66b68f9db5bf926464f8966da98ac3b7882de879b703e5a42ccd46e2391464dea54afd1142013cea83dfdd26aa8f6dad5dca8556e14412eb0ca451028372be2da6eaab27c865f4494968c2305107d3531cd5181a26c1c41802da1a407c3c3e450e1516a1d34d56091fe4bc68b2a1c4d93d5a8350dcb068e291e4d99cdf0352d4b46902eb59de463069160930c2255389a26ab416c1a960d22533c9a329b416c5a960c225daad83176efd8724fc802d7d6f43b4e6a87dec69b2ee52fffcaf1b964f3fc7a8a9364fbadeff94b3fdad53fdcd61573ef6b71e0a03c82a10ba1ef20b07792e1b3c300980848e30bb80f45ff4017cace36d8b8a374ed4260d2e661ef84ca5165e672b2744c691c52968ea850e2880a07443b2ce68e7fef07ce7db8aefff02d621ec4aac3dd57d81f396248456456622291d2af82f2bb1314583f8be12c6a072384c42de35fbb3c297c037d286fc85ca708788f6363c7ff057f6b227366864dbf522d88e45ee234be44491744c15f9a0160213f6aeb99ed638a146a9f4666b31c18d593018d99f9f295c4a22b36d5ffffb5f2f81285e2ff41e2eca4abcd2d6451b60a7d15a53f832809375a45ddc65f88535f4d939ccbcd55e772e28538d5320953a8dff130a9e925b93ab4db1f93c6076c970c39406f9c8c2931d8680516add735cddba636684ce41fc42af6590af1a454ea289f2f603f79f39d35a2c83337e4e2d937df309bf93c4ed3f64eb1a9b9d1852b53a2c6c5de762753fd1cec2faff4c12cfa1850fe62088410b0231c3360f0528361134c0c90594b9ff972c31f5d51eb990a5c7030aaf4992f39fc1907427ad1413b00098adaec34e26e50723d0f42faf7635445eeb39b5df1e32dfb5a0f45458cca7fb0baabcca314d8e8bd42912eada22baa28d146b43757c5ff4bcbd18fe8e554441754ce6a8451514bc96381cad2dd47855b56459ca3f2d57b438788776d7833efb72a038b422f7f9e79bffdf65f6edd00e93c8553b63e4936eb737c35bc5f14844bb1c11d70e3799d3f4beeb05094ccd82f1754d1b720bb0152d3d30e54c3bdc71a0ca5d55b3fac574d87bf3f12dccd82c51b07cb5e1e1528ad661ef36be1bd812a79d0c7158f89be6fb0e52972e75f98225772ad79cd00e1cbcd587a703097e436bba871b61872761f943313ed66022e8a4c7f0738cddca8deb4d5b8ee98cfcd9cb903c5ababb3554cb7d97dd84ec7599c9ee234aed0ac409f5051229126ae5db0598abff1257aa4752b6572d2b3949f72bd912de64fd14e2af1feca3adaeca3b5a433d06b525a8cf4a345328ccc730e5a8cf4ab01328c4c3e652d463a6daf0c239dd2508f90e4cf03968bf2234a5095a5ee63923d61fd4d27c5c1431a784b27f0574e10ccb914326039d6f402124e15ab3535b3defc4e29c48c6f69d3d3443f64296c90a85dabf4d14b5d4fdd4312e7dbfe35ba67f15dccf601414225a57f29d0ee6e61a78018fecf7c51e34449858a34aad06e5025c0f0bae18df496b0d9f70ef39b4942d67e6b76ca389b409cd4d63ab111782f7a99e03432d41ad427b4f017548830b60a806bb49425cb0fd60d5981a926c9045f9b569bc160009a0d4b03d1d2f35844fb7d9c3eb6f4b6bfe9aa44ff77efbab6fe8f05f050ab508dfce95e539c530b1d5fdb65bdcb76d440b4cacfa13f564574f8f8dae4dde2ace6763096f458b0b79e192cc2a9106c3272e4082b23a740b8b551575b5c57b91ac08aa859fd1408dad794d48b9d0241fb7a817a6d532068b205ab53c136f5cf517a4c905d16b116c2f5f1d3a1c29d07e8462e4ef4b6136c246a46100b9ae83aa796b65995e5e40f123ce29c8aecf296b788d777774e95f19fbdbbbb3b796bbcd95e3724e2e53f79104a614f82035e0db1b12fbfcaf6adcdcc13a792b1a75b9ed28e555ded4e60d96b5d41651081c15f684f1a53da25591c2255756960987fefb8463e5a8ba3c22b6a9a6a366d234b37f88e366f6248b65b8c79b10044855ea128edbd9366a2d2f5403d083250e6a973b0f79ac195e214142fc39215d49fc61dd5e59b80401adc37d3509ced078819da9ffcd3a2776a4f38f36893803607d473eecbce2cd3eed3ed8297e32026c8ed223693aa74fde2df1c6fb2c642b6b2c49010714a7b39877847d275de62b1f316375aedbcc5a4cb9d049df2ad6df5fa228193a45987148879e3a2c6b11c7feaf8709afe19d1b21c36d3032fd887a16a0d55f541960459b2ae9a2da58b95b35a38eb8d6a1dd5e45b34a1d97810800ac25ad7d3bc5293403e91343e6e890f721b5754f303e7f2516e62766555641f11ebe29334673235d41987f5220c200836e16a2e1cd6ab5538e506fa767158796b4f617ab520c042c960c75b60e616ea9aca2e64674c8fb9cecdc4779005c25c23013dba71980b436f6d0a74862a2b1bf20155d3acb2d0510a19e7e44b151555e32c5acb772604ac19e42acbc9458676b8bbbd14596ab94205553231aa5bc00990250d30650afc1ac165ab927255f20a77e1bd71022f7f86935850c560f600713fda05e1e6cfb345febcfb848a2a3e444993f3b8caf21daedfee1de944db013b5af8cfb6fe6b9bb4377fa6bc7f73caf9e7f721ba407dd00de41841f7ce2e3ed5599fa880da0ef7a9c44cc9c0b8cdabe947b51e314776b5b42f356baed1bd7634eab42cbe78bae6ee457b36b821356054874c7ca65dc0a9b1369525954a514d7846a384435b1b201872a1b012085ee1353343a1f2c2be08527a6a8d0b9cade555670e752723afde1b45a20538b08e5c3faf32c5ddf5ea5aa4d0d575fc9d394efbfd1045db8b93bf56d042dbe5c4cfb804d2fcea40ee8c3294e3a4024cac0a5b9c47d5f99589fff45800d16cd6dc3195dd2e85821d8891ed1ea3f29c9d4ef5c6ca38f0c1b66a63cf43611b0daa7a5d3d44f9165b640a2690f54c86af3d3b11a5583cbb84847d76bf108e2377f65508116986a1df1953847700ec4fc16a960a8666cb64c64be02489c0e2bfa1980a9006e6244944c084508008989324110113310122604e9244047480045c9f3a49aaa27dc99a735a8524a9f8aefd4c5e4918924816d274241372bda2eee0cf46e4ccda5fc0a126757a4dbdfbd3e7b432c4fcf7a888a3e6b0191d7fac8a2bfa87a1cbc4df387e3077fcf5a69fe5a6cdba717a8c0f519515f86189bc1d79a6e8559d1618d8501bd0299ad50a9a71363ddac6f4d89cc901cdef21ef6ce08d34ceeacffe92ca144a8fa244d51fc53085f61261c32832949dacecc8531dd54bc284e436dd788763dfa8f750eed81c444cc7f9573ac8a334dd479424715ec625905f7af79415c7f66991e2122546cc11bbca9d29f63739f1fcd0ec197140227b2e4a6d22e75447671117e68a3b7a4487aca0960be00e0d28f1ff49cd6e7d4091dba28dab384af890966e26b7de916626db9ffdc975023ddb18375977f415e2a3af6f7d6fb98fc20e1d162588ba3bfa5c50d66e3b301c4e728887836a9a8353cedb9144c523ea66f22b3de078970f3dc8054e79768ee362422811f6864cf10e0c38e6d248f146a729933b79774ef7ebdf2579420128c0ce248c70f01c5126e0b487ec2f0be23a7a08db4b85bfab7720e4d7104cd7385120a4eb9d181e8427459719939653a1edd6fe15ad5d6a84b0fee27ef3766b3d9b946e64a92e323e3f31b04b789d335f47a793706dd358fbe8db6eba2c6d871a5271a0e85a64c57ecea3f4c83d92c53c1bd10ee5a36051341e53c6b0a0bf496cd8227be20dd8fa93dd3e5d76afa33da4571c71c096647bead2fb60718e566e05af4ba9b4ad8c5778993fb32ee065bf9c373160904fb88a1ebbed47c1c64c325195009cec084bdc4bf78baa8004ff662e06020d295f8ea55b5af50d4df9d65f8d8e08eda4effb55d12373639850cd189894d9f508bcdc57d7005eeb6b54675f93bd7a568b4b6d41ce847dc1f2ae8dea7589f7a4e612605c2c79f1c1a3c26fcf28116d485af3afadacc5876beab92ece8f269484b14f819a46b2acaca1946a4661af218dad177075ebea4792e9e6c5c3ee2a7aec5fa021961fd024055256517a8c0a2184a09377fc940dbe997db816054aabf73531bfa95b53b50160ee9372611c1d05ac3ac065afbd7a0cdb132b7af7c27a0018751870c66e37b1d84699d9c516bdfb1ea0889f8d94cdcdcde495a441715273cd52f31b2200540a14193af5c0b6d64f66001735d3d9695d2f27ecbc86171830c8bb75caedf867cee19ad6ab95bcaa66aaf76a115cc0e478956b9a821ccddcefe959c1e488f1efadbf52c7dba6e610de4aaaaa79bb70fc45e86c9672d64ad0ea582ba346cdda9e1c0967c58b01ad2357c7d9a6e610ce4aaa2a391bf82bc70f3d671eca592bc1ab63ad8c1c256b697a24bc15ee4cb43e6e1d6b49c5219c856b6a18bb71168bfa1f295f61ac3ab64a68d170b52386672ab650f5ced77e53c15667b2a9010bbb044858e4693861c1a7c3c73858b24d3d2451597eff23c5a57fdcc9e66eb876fcc5c2f197e4022460201a3761254ad6d88cb74be1ddc896a422674fb3f1ce4b4c4e643eb21a37ca94a337015ef30d42389c27da219da223e67b8d11a36bb023b146a4d8b798e1125412d95e82f34e6dbdca4c347fd1eb22c667afc33d44094d69eb06fcea66de864eef4c6a0387e6741aad66ea7aca050ea82a08181d782015d861a216f4a22673cb4e227463101a8b5f2877aa8c10c451a41b8be4dc4024a57794f99d08a540bce3da5bc0f612807aac0219b9a133d11fb69b3b0b2a4d377a26ea838906b2501f623d63f5d15415d4071d766424ccc67246698ff078386c7cfb46a6d31e2365cf4e79984ae128ca4de5d1447748d313085b6d4a79ec4fab50b21302708f551e637d1626dac3d67f6141a6b12fc3447d30b18016ea43ac67ac3e9aaa82faa0830e8dc4d95cd428fd713aedc3a5f45466a4d08d41682c7e760ac4541047916e2c92261a44969f84f72a51fae310845ea8373e0638e38cb1983ae64c9487a593ce9c4653879d89e6a083802d148750cd586f909aa2daa0628d8d84d854be18a5b10a57a1751bd3e98c713267a7310ca56f0cdda67248ab0bb74097ec1332f01b53d9b0e82b67417fe5ac798a7099d3a9dcd8cb4c6ed05d5912ee16d3a95ada38563acca5fdd783e34bdbae34c3d791bb16da806256052c7cfa6901803e7d7d056e609ea24b9cbc6cff7ac8d2d25f3a6594966e898af8c4055e929f4f6d60a6d7143761c9242418c76194cf2e29ba645975aeb9f258442ff8a5843ef0840588d22a8e92382a71d46b93d4fc3f1e961f56df4047c0ad30b0e3e97bcc80b643b220f751f1bfe081f21046051ecca8fe0c5fc5a87e8ce234bfda46a20f8b14d3de736845ba963a3af45e16c2d09ed1b3a7ea0b2ea841107edce389239f1aa4ec4ff753945c5139692c14c13ce31ac2cb11a56b56bcaae19f010efab837eea0096ea0e9c9adc40417e1d07e1ce9cffd1c763d90149528396dcbaa40d5e1bc033e514c5b004c3362cb4d6449d214fe3a79849daa493e6c46c30986830b430ec2013aca960c22fa942d9ee2a2addf1883b8f4f19c95155df8ca2b17539160977345c5ee4a0c11f97d81a28fee53561c65152853e846e18a7483145f840864eac64df7abc97e01c596e9f013bb8e49d92307eeb3f6c8528e7275494e1b106d7b55b9b90615e6cfb3f65f589c082e2ad42e98b3a176f8771f6a27aa92de0c78952c757391637d2578aef4e5fc4cf495c814d38f42693ce52013075ea87c8f5b98c479c223a3e591bf9aa5a92a8c9a3240b236d728fa20334eda122750ebfc79d6fe0b5655e5d16a8ec51cf225ecd2e1d00742da6c76606ead2e6888d94bc94d0c483480aa64949998644d33d498aadba0075f171121d31bd4e588fa639e440774ce92637fbb4cdbb60287d5d515058d97721c7d50fd89681b46d1483a84fdbfd8a8e54cb29f5b923c56fad907e5e11390fc2648387b5f469a6a8cbdac2ba051096bff6694e6aaa781700dc3351a83f8629070e1358bac2e5bdb6d5a856b4e824b07db3eb5f07cd1bc6e94d2dfd12b207b856ae1913cf6317d55314a128a93fd5fecb3685c1979054d7149f5dfdfba73594ea0b64cd52cab0da0d65b65a02402be1b2bb90dfb877a52f3cff4dc332c02ffd97f51880105f519e4d18c2611f8ab94fef9a4947d4ab077c9c449858aed3eb916f500b23fe598e4ef0bd2187c2cc3e21783b7081d169fea69421b5063101ee967939b2ff2fc2130c213a803adf84ca80dffe8aae78ff182e6c2bb94a214d55fa9b1a61d1c6e6df0e5af46e971e44754182d75daddd8b23e3e589ce1fff325c708d4f60d5a063fc73bd8d2bcf720857d37215a2926004e0d0c0b05d0cfa2069c4f3fbfbad3d404c9819be0b2c777b7c0a4354457a809e8cc9822aad25630d0b5359ab34f19dfc09d9d1629b3437461dc0bdd98301825710f3c527f413f0ed78fd1b06ec88216f856c3491b3db1cf0e2a5be3d71e5d94bef452338f41f768951e83eed52a3d06cdb3553002f782ca327a44462727ad32f6fdce938d71f46f9c433e0c6ab0696f06f0f0dfd8448506a95e4ef1333af28fb2b50fd3cc3dfe7935ea8404fb4802c0f940c59cb0dc80beb95596b3e9b2a9dc7d06d54925756a47b7798715e65c57da26adee7233995351f3ed754caa488336f018c91b91e50e041b68d836936f77fbe771c53df09d73039cf02edc103d7e4bdcd65c5ecaade525ed3ac8922ace8dcc9f317e3f91541cfef4d6a7496c3f31a41196b4af9a4745913d0189c79a53cfa0cf5a1ef4d92ca488daf5bdb125e77d6ed239954cbfcfe783aa73ad081274a935705455d1e18c8ecdd8d120e4f1f51ea2caf2770cbfe940bc5abf72d17694ca9daccd770023dbe0bef567690e27b09626f1763792fcdf4d819ac05a47a9c8c3fa051c0392fb44cb70fb062086e3c6f4ec9ea43135bb3d28d3ba86c95596aba822422215743d8fedf1433c6e1f54f80c6da9592c13681379c623ac22b0161190d54d8085cf4532b87af6dbb709b1bf093ed50ec024ada90780bcb7063d0cb03618029282df48dc16de1b55fed37fc7afc7c87c57fdfb23324a88596bc8790d2d7f7b2b2385948c9a35266b0e9e9ef741e0afc3d12262a6741b89346b53a77a8de6009971660dea975643bdd72ee666cd722309f281d52fd2c722aa2c9fd5e0e273116dc9385200f15713237bbda22f1b4710604c28e9c1f03039b8c8440f4d3558a4ff92f1a20a47d364356a4dc3ea67478cc6ce80329be16b5a968c205d6a3bcbc70c62b35b8407912a1c4d93d520360dcb0691291e4d99cd20362d4b06912e55ec189b6b38af664f13ea379dd496bb0dd35a427b671d3e9744f1b4394b3c7fe9473be619a07b5f8b0387f0130cf4b9440784230a186e3b0c80899834fbfbfbb5b8e7bf5fdf410d363e0f5dbb1098b479d0e3f0f5e4f0cb1e3e77c3f91cebe6b4de714423b3120d89647e158e2f1d99a0d0c6dd2185d71c008b07aa94da687e7420b73ef69510037605a650bf06299e9b55b74baf46268d0f58bd0c3940af63c69418ac7bc28bca9a15d0bc6d6abd24fcff4da80ae525538da3f4f0d10ca540179dbd0c40c2243c52d1253dd2344329d045a74502903099545474490f4acd500a74d1f956002474a2062559b2e357238c2255f4d3710407fd5c07fd4e289e88c7acaa6a6d40eea09d519237750b8484a809e61b93b0822d697352bc427774012480b02af11ac20360afccc9bd19458d981a53a48007c05e994800338a1a0135a648010f80bd329105661411d93426480e2e42bd32710a3d396e9a1d117988ae7bfe8db9ec2a7bf7adae5b6459f50abcf0227983ac9d1f47748aae49c5b5c3d3d44c73d77b3583f359b8a0f7c509a0010b3a5fca41431674b99183ce59d04d20075db0a0ff1f6dd7d7db260cc4dff9145efbd24689b10d04d8b43fd59e2675d2346d7b37601ab4141086ad55b5ef3e01a90887edd2d23cc6dc9dcdfd62ecf39ffb51eae965b740d609f4b23e90dd52bd6c006403572f1b02df125f2f4b0904821884216a9e01360a7063be01380a9063a1013a0ab07398013c0ad0735c037a14c0e76c0df051809f131af0a30040971a00a40041d73120c808ec1f7a045f9dd8f988c4499fed43eff0f939a71f67c947267825eab5aa70d37ef8c09561a5f678ac56ec08cd20ddd625f5f1cb3b1535dfa48ef914d00b544fa7320db4cdf24a1cc627623524486ae83477954df6474b906341e5bfa92845be70035b51cb689e301ca21dd21885de19d4eece33eb986027195086f94247f47f2a1657ddc9c849331fb51a29aa03fd5e7f0fb64b6da12895d34258a07c55244b9e3f8cb9f3a0a01471d1bafefee09de154a377d4714fd954d082718cd36f6fc2af9b51e59182f4953ff1a0d97d473ba4f19874b649acb71965337bf702beda79152bc602a3427f3360616b8e81e9c9243fcc75c824187b8155d5fbce5656c5b98bccc0d0789931184d0f6b044b4cc361e189ab0b27a8b11b88c6f52a537a3c6ba2a4225919db8268eb9e6aa82ccc2b1d4f0cc1afd5552ccb5ebdb1accf4579df8d748811ea6fca4ac8d6dbdff89ee77556a11f22dee5c5beb8c9845ca32f798cd1d57edfef5c4ad44a577f4482adeb2c16b914096af24454a8de097455f27827d0e1c91afd1295cc8a1c314cb065adec4f878c7eb1785024419c91ea5056f1dba6da5fd8b2e67516dbb722c9b8dd3a556ee816fb29717c1a322c8afae37926d2ecee12b5730a5e5f9c89db48248948bae9487d5f8ab3cbb5c196cb188f78b0c57f8b341dacb4bfcc8a3c60914b4980ebfa48afae1ad157facfe40546167a81119cd22809fcd05fec0546b0c752963a5ef43c2fb48a1e61117122ad172c7b758e64d154b1f8cacb32cb6f7e7ebf7ecfb013ba0e251ec5f1aec97fe3584a7ccb4bb4b2ff070000ffff967ecbbf56be0300", + "4010178888118ecba384c58d8443d70e": "1f8b08000000000000ffecbd8b7bdb36b228feaf60d3b48d1bcaa69e9694dfee5789961d274d93d4499bf4e47ca79408498c29522629cbf6dedebffdf7e1450220408292dcbbf7ee6ecf692d703033180ce681e73f9fdcc238f1a3f0c9b06d3d49a24d3c83c993e17f3d39f998c03839f93adda469149e9c45b3cd0a866972e2441e3cb9f0d3e5667a92a46eb26c2ca2938d7f72db3a49e2d9c92c5aada31043263318c2e4e40afde75de0dec398fffb6a166fa653181f27b32479621d82e06f6e10e07fed83338c3cf83fabc8db04303909a378e506fe033c9e25d2af27d6133ff4e0ddc1684d37c1ca3d49dc2439d9a47ee0a73e4c4edcd05fb9a91f85c931faf2687456fe9dffd834fcd04f7d3768dcbab1ef4e03f828e416b1ef9dcca260b37a9ce660fca9ff48dc07ee7db4494f96308e0e86fec769b081ebd80fd3afc9c92c8ae149e04f4f90d69e703df1984a3cdf84b347d3612ab20462128f48611e452932578727c099b000dec2601f1ac82426e93da2308fe2d5c9ff2085ddd7c65284c9d28da177f23f1e4c5d3fd84b6938acff93e96723ba8571ec7bfbe9238f3a99c551104cdd786f8c9cadff6feb49e8aeb09bfc6febc9ca5daffd70913c193e198d4623eb7a3c7226963f1e8daec796337282b10547a305fe7b39b63e8f46aee58c2ee61644701f47a3dfd0cf29adf7db68f419fdf61086fcbbf3897d717e17715f8d461fd19fbf8ac537e3d128c13f5291fe6c3482e8cf39879a965d7c1d532eb6e3d1e81ed778185b0b6734f21df4e3ab63adc6a35184bfacb3b638538e8bcfa3d10cfde559d17834bac1a0f1582d8f8b606cb530c1cd7834dae2a2e6d8b27191d002a1fa9bd1e82dfaf39df576347a8ffefa85935baf583b6fa94a9c0a095eac1963029e1c32affd7e34ba427f7dd0e159613c7c17e4957941f845bd51719b37de7746231b818e9a63eb7e4c7f5c74c744b334fa723d1e8d56183046ca209314da9beb4a56cb09f962fad7e4eb18f5b633e16490219adcb18f797304922a592ec6a3918f01be726d739a63dcea6bac8d81635d3ba3d1cac18d7148ab05ccb97e0ac5c210a0a4b7020d05f445d64641af85f1401ae80c5e4e89649f8f47a305e675e970545f8f466fd05f3f2b3559a5500295e86c34ba415847b163751cee47c4ff4826f4c7e4d6b1ae48e738585893d8414d3c9f583693df28c4c2bcc43fce63c77a2f5710fa77f23b556bfafbf277852ae5ecdb4c7b46e1585425a4251bac8d0fccf6d06a17bfd3119877629201df8eab07cad6a1366c446d58f623b36ee8479f7db96863e5321983b9d15e142bf023bda4b2f389eb69fb6234f2cf11475fcfadd684fbb1623f9cafe702ea8ce687f5d8ba71469f2f2d3733bd6a834f2579f9758c4429f3add2bb02ff177ce36d47e7a1b2e17b118ed10f678255381b3539a7c24027fcbc78317296d8024f903f75461f47d66b844280ed216540ca793d7e70c8778af5fd726c5d70bf1d0fc900cbe3b7807eba66aae4dc8e25b383adc0fbeed8ba644338737e2eadf4f1616c4d989fec61f813646d28e24cbb05c3b5656e74f4d5c1fa68a31f6fbb68704eb88aefb15dbed0907efb80fc9fd8d8f7a87eded8fc2fa17f13dec55e5214ccb25dd291877af2e394fccc6affb61e5b89337a3d11ed50ae5842c7bca7b5deaf513f4fb86e7b8f7dc78443f3361d5b8bb3d1e52417d5dbeed8dabe44452a63f2f677ab73813ea2eeef63f825b56e362bf9b874acb705dfad924fde825ce5513f7430e2c19820ce04f7b6494b0806271d2f911e9e2d147102ea4ae7761c8fadeb730c4006877337f6acd999ef4cac0ed31de794b811f4c379189f8cad7b07436441d1fbe698863582467da6243fde8d89bda62d7bbba4bf99049dbbf11a99d7b356664f27ed5fe7561fe3c403a2cf06c4e8769c1b5a14fee1cf1afb8946e7ab53664ef643e4f45fb5711176b1cefa25e2fc2cfa39450dfd7962bd1f9d6154935b3402ced58ee0ede815fef0fa766cbd1efd84fe9e34df3d88f2713ccea9e4468bd78b774485036c5ab9b8e6776be588710e337f53ab277dc9ebdc4b5f98de7d1d17d0e595b6fa4ab671253d0ff99796f68b9e4e742604b5011ec6426c74cbd8e4819e3b0520bf80e979a1daa200735d2811f14c9663ea9b73eedfb2a1d31d5b1b87ea030ecf5e054e017a56808ec625e0b0007e53067e5500878743feff2c2f7e09f26d11f99ee01f0be00b0a7e7e3d5ea3687b7232394726793179c3ea2d91e66dc6a3ebbc283712214a947c6774237ca47fa513ec4d465be1231df50f9318a36da96a7651cdce78d457d53c4135fbe3917faea8199c939a91ea637c4e18daa83edea18fcfc7235bf5b18d3ef6c7a39eeae3007ddc3aa3c5c59b6cb82e2fd231ca5eae2fdee4d6214011797f3c8a38c035025c39a384074c11e08d33da72807714d0e6ca9a944a872beba2b2c419f5b9b2012abb71468b971c872f539cffad5ebe579894f5cbc041e94af2f27d6654d297774eb1c64c5123332cea2a5051e5a6bcca95a20a3c34917f27be6e4a897454440e51e5a3a20a3342a3d185e59c87ce8363d9ce243c3f478edc7e998db8e6cb25b6a1bd970a4b3478f9756cb5ce46fea5ca2a5c2ec7d6ea6c7473a9b027e9658cd1deab6a36514dff6cd453d51ca09a376723ff958ae62b52f346f5317d4518ba577d6ca28f9bb3514ff571803e229aaf55345f2fc7d6fd6474f33a1fe7f1eb746cf993d1f6356760ee5eb731961607d84680cfcf467d1e708000579391ff530ef8f52702187165eb9f08950d57768bca6e26239b2b6ba2b2d564d4e3ca4e715d67e4bf5159a2e04de0a008eae64d6e89e237774eb1c64c5123b344ea2a5051e5a6bcca95a20a3c34917f27be56a544d0082a103944958f8a2aa2256a5e3c38d68d33699f9fa32c6efb261b71776f963815b4df282c51fbcd571caaf7dea886ef1b129f2c7e56d893af3fc718edea6745cdf5cf4b3c859fa86adea29abdf1e85e55b3496b76541f4f7f260c3d577d5cbe2561cff55bc5c7f02d89a66e541fd3b7c4566fdf7211cc5b1ac1bce50c4cf36d1b63e970805d0478ed8cfa3ce0000146ce68f18e8b61de11c06bae2c7847a8445cd9fa1d897f12ae2c7d4762a72d577687eb8e47ad772a4bd47d1738963d1ef5dfe59668f0eece29d698296a6496485d052aaadc9457b95254818726f2efc457544aa4a52272882a1f1555444b74f28a58a293f373c4b8ff3e1b715fdf2ff114d3eabdc212addf7fc5c32379af18a1b7efc9d8be7fafb027cdf73146db51d53c7d4f06fe7355cde52f314ea3ae7f51998c5fa8c9507d4c7f210c6d551f1f7e21f31f2dd5c7ee2f2475ebab3e9ea08ff7cec8bfe222982b620f56579c8109afda18cb0d07185f1123b1e1016f1160e28cee39c0070ad8e2cada944a8f2b3b45651b67f49c2b3bb922199bff81e3f0438ad792a20f2a4b147f20d1f3e6436e896e3f90785bac3153d4c82c91ba0a5454b929af72a5a8020f4de4df89afa494484f45e410553e2aaa8896e8e1cd2db644838b5708c0fe9067671f6894f14161894e3f7cc543e1f9075594f17189e3ffeb8f0a7b127e8c31da9b8f2a93f1915885adaae603aa79ed8c5aaa9a5d5ab3affa784219f27f55e558bf2e497ca1fa18a38fd7ce68a3fa78873e769c91fd2b970ffd9ae2b9a3ceaf9c81e9feda26f10f0738f895188ec56f1ce0f2b736b66dd7bf71f1cf6f0430e2cad6bf112a095796a232db196db9b23b5476ef8c6caeac89eb8e47bddf549668f01b8aeac7a3c5a7dc122d3fdd39c51a33458dcc12a9ab4045959bf22a578a2af0d044fe9df8ba2f25b27014440e51e5a3a28a344ff48e58a2d397af50f5d5a76cc4859fc88cf5cd2785254a3f9119ebed275594f189c427ad4f0a7bd2fd4466acfbaa9a279f481ae57f56d40c3e9319ebe8b3ca647c263537aa8f779f0943b6ea63fb33097b7aaa8f83cf249a5afcaef8f8f5773263bdfa3d1fe7e1ef2482b9f99d3330f1ef64c67ac301defe4e12ac7b1ef0e1773263dde200db14b0c7959d522acfb9b293df69fce372f18f4b2334ae2c74c98c75e2aa2cd1ad4ba2e77b37b7440f2e89b7c51a33458dcc12a9ab4045959bf22a578a2af0d044fe9df8ba2925d251113944958f8a2a82251a4dda74c3c66a3c1ab8789dfdb91b60553d213f1753b24f7139c53f7bee1a7f7d7d89c805d34556688f476f2fb1327610fa77cb3304f1f132df77804283682c6e8e2a6c88f2be9249a6f11b6e2b50b65fe9eb988cd5d598cf7ec634fb1973d9cf984c876cc6970cf3ed98ecb5ba1f5f6671d638c445adf165b6e7e73c44c6d27626db5f71c6fa7cfc8661c0c6bbfd1bdee335e97c3cc76b178ef019ef32bdc93659d1dd0c37ce68b4c5bb8750e8ea8c46f7e8c7cb368e545f5fe61b689c01b659a3e7e8c7cf21cef5afdee04efb8c687f467de34cae3f8f9023f8fc9e7da1ac373fdfe20588fe27fc1dcadf1fd0f7d6d9c4fe34426c5c8f6580bbcfc433259f46c875dd14006e29c0f5a7110af3b60580f873ec589db349efb77314cab50a00834f31c6b0faed1cc9a55f00e87e2218fa48fecec8770a242886e8d773d4ca480618ad9d5b26b9955672ab0ac9adaa24b7aa92dcaa4a72ab2ac9adaa24b7aa92dcaa4a722b9de4aeb592bbae90dc7595e4aeab24775d25b9eb2ac95d5749eeba4a72d75592bbfe8fce1d5ae7fe63e7fe63e7fe63e7fe63e7fe5fd7b9ffd8b93a76ce89e70f0ed9682fec7937dd412cec826e29b744ff4c4ebc5c5d620a38fa764ec6796aed2c1d3c0e7090fe89cc30bb6f70fe854f054c6ff1323dc459c9d731d9f68a0ffbf934b58848fa72878f60ac700a128faf19dc35ca5e2ef38debf1b889f7d56ec66f30fb8889979db335d2868bf0fc1c41b6f2c4a48df298dfb0ec85b902dcb693f149f1232cfb78b573cdffe3683f97d5acf5f123d3930bcb714ec6814a0373bd138e1c64e9dc2b7cd4eccd659696febc463a41bd0eb60a1f1e500944bae4bcbdb29cb39f3f58aee3a1bfcee7d6eae568357ecf743944496d32c6c3d875c2f15b02748fd2dcf7d666ecc4ac683b19d9e38f96ebdc8d5f5bce4ff7e753ebc6b96c9f9fa3dcba37fe88a8bd7b6d39676ff19986d3f1ad636dcf460b07a3193034d7af4637ce477c3420c2c360ed58aeb3765e93cf9bf1e8de41546e71c9d6f9891de26b3a644fd573e77336cd488b56679f2dd7f97a764170f426a39bb39975ed38e19943a9be19dd9fcdacedd8b9c545dbb3332b1a3b77f8c7fdd999f5d1891df4773ac63c2c26eff101bbfb0b7c94e1c2ea9f911fafe0c9851539972793732b7246abc967351cc9dcc3c9dd4bd215dbb133451d30fb607d74de5c514afabef8e8386f2910ed8bedd8396345b42f3e3aaf5057dc4ce4aed88e9d36eaa5b3d6b8d019dbb1f32bc3a3ea8c8fce1257a59240bdf1d10971513436ed8d8fcee9f88222d177c7cdd809b1d423e7ccf2c7ce1affb871ce2cd77960b0b437ee7929fb136d6f28e18abdf1f22724988b377763cb7df93bfefbd5605c36385e7e1d270c2c1b1e2fc3bc900d9097e9188de6b3cd79775ce8979721fe78b11a5f1506c9cb6e8e4c394c5e064ec400d840791993b2841e5035192a2f4f9c6b86a76cb0bc8ccf1618f7d91239ae9729f9b9413fdd975fc9af5f093387eca319eda34fb85f3ee33efa79cb88f9c53eba617df42961505bd245f7e397d3ac2c613db4243de4733dd4ca7ae881f4d07dde4309e9a1fbf1cb749c21eb5faa7aa84b2a636aac874e48d942eea1e767851e7a7e467be881f410c2d32af650ff27d643270eee8405eda125e9139ff4d02df9f58a30837aa8c34b3e52f4d08af490128eeb217f4cbb68d24114ceba63ebe3a4e57c440128a2bd29f6d1961ab649e2bc67602d66da26515ed8a1c66de23b6f2ce7e785e3b13eea677d4446ece7d7ac873accb64d50344911d92aeb36b919bf6100f7d4bc4dae71d9d7f1cf42ffdc1447d00d356f93f7970c897f5ee81e9b99b7c9646239e767e7963f9e38e8cfd1b9e5be6c9211fb150500f786fd9298f50b1b3997b85b5ecadda21f3a42b76c55dd9268bb251f3abfe26ef9f85a1a3862b7a8068ed02d4979b7e8870ddf2dfa51a3eb963bd22d21ea96030f17d62d17b85bceffea6e2176f4b7ff3bbbe581744bf008dd92593107f7cbe8afb66253dc2feeff9d56ac4dfa65f908562ceb177c52fbc2e922df36b977a0e59c3f9cc5651d13a14e70191ced99683cb9ce0b69cf44e3c9f3f16f96f3f335bea842ee1b0ff7cd4cee1bc4c73843a5ea9b683c5921bc0482764e349e2c70e1fc9361e744e3094a1308167def3c1f4f466f2de7dc7967b5c61394209c4fdea13884f4cefcf09db3609df30677ce4ff2a0b929f6cd4631686cd5a0b1b583a69775cc2fb863de671d63ab064d523568b6e5836655ec975571d03c2f1ab3a47cd0a4a45b623468b686fd7263d62f48a09337e2ac019b1278f51b3eae7d1912b7d099bc17271db22b1c10ba576f9a19b03d1ef9e7ef35573d61dac1f9e9d8babfc0a74885cb31e844c6dd7938b6eccb917dfebe3893d63e277b587ae7f97cc6e939d90ef0fcfc32e7eb32460827f901f073b285e0f2925bd257df8a22dd1fc0aee1b1f9bb74aed98f0f0f78b7c5e74baa0daf968e87fa211a9f5b9f47305bf81fbda6b36cc2b538af52074fbe5ede38e7c857bdce66d37e0af12ec4b744944926ea3be704cbda77ceadd9e8ea52751bceaf6d5cf7f39bbccfb0e42fc9c50c934951ae137c0b95237e21aad7bcc4227f695f4eacd5f86270d91a5bce3b9f1cb17d7b7a7e8ea8bcc1b43ee009a78b359ea77c8fe7217f2537705c5a8ef3cb1dbd45683b7ef71e9982b7efba785cbd7a3eb61c67f4d5b1de0a179f20a5c8a6b15e2e1debf3e8f5a5e58f7fe99dbdb79cf7c1e477eb37b6df2353b6acf62fb7d872cf32917a21deb0b9c8a72c97e310dff783cc0faf0babf1281de339d5c98363f59c513266baf8a1771620345748d9dfe27d1c14d9c398dcded0c960e9f6965bd54d3079b7a92f02cb678e85f9e17b07f539adf2614bb4e7eaebd9399d0c8ec6a3537245530fd910bcb7e67ecc8f03259957e4dce3fb37ac95fdf112b73275ceadd5395d4e699f6199b4ce70b3ba8ea259f6783442faf1e17a8c8f1b5dadc7f840fc9b37a215f8703d7ec004eef038795f1c276e0137bb1ce4c36752d53bb75ca4105c4de70e55edbf1a4d2ed986c5f3b9757d367a7329de49c3a471b966773ce51db2e56f4ec3c3b5c56e66b938c19b7cb8ab871cbc7de71e97a92e4ccad10a37b5080d137a78837b38bf43497333d2968d8bdf037ccdd762acae549020ae74494ef0f077d99c35f126c24bac5df22d3b3f794888efdf30c4bfacc72827f8ccf465f47b3046010f14c75176ce6c7c37b6eecf46c9f812b976e71c89f29cde034525743647cdb864ad70e2b339ddc3948b30b7d18a0b1485ef99483f3e8cadeb897ce19e20ca5c58b4b517bfd38b70846bfb3ad99d1f09b94127bbc64eb81cf186d71ebfe2fb67fde7d75d7cc27832c197b8e1aba19ca623567fee947fbf29f98ef0df8b572d3a778a0bca2e3caaf1f7fcfe30c809867cd6f84f9b5fcaf2d9ed724e88cd123615a38b5376c54b067cf1d5a1f7ec3ca701d972dc7652c77aed8f5f4ea4fbb9b2c5b1d5e56842edda354f49b82130d796ebf187355efdbada8cd7637263d8663272e865666f44dd538f58e7962cd0e18bc79c5b7c2d1776b83fa5c8ccbebfe44c01e5fa726afd86ba45103baf9cd1f8c3ea0269e75570c199aa9f02acb70465069c2375c50b8dd477bf0944855608ba8e2fe562f7ba7d126f6fe3e95ce02bedf23bdfcea6d6673486a9ee20b7723d1ef1c750918ba65f5f07ec863f450c835812c8ce98d5c59d7046f6925f28e31f5497aae365486750f3ee3bc94a3e8428e4be8a265e56d29cbcb69cabd6e46b0ef4e1d272ae3e2ef382bb8bf79673655face9bd9aea1bacd060d6d86e58ec3fe783ee92c1fcaf425c44a2c2945c2b97fd50c6f3b88e4021fbf17ecd6ed61198cc6de16be18aa68b5b1a29722ae08fc5d05140f47c3c9ae0e171f1808f48bc9ae00199e01193e271fe167f7ff5e0905ee66ee974b8ba9fc5db78a8e42e3ea1c13ec9f7ce8e2e6f8bf78baa96e93341bdbac3c785de667afb6e89c3c28fc4df3db19eccfd003e193e59b97e783c68c259730a7bc7b3e526bca617bfd37bf29d284c61983e19fed793e3845e67dfd8c6ee7a0d63f0cf2f2100eb28f1533f0a872086819bfab7f0052a8e6e613c0fa2ed102c7dcf83212e5cb9f1c20f87a0bbbe03f68b2fe19f5fc22fe13719dea93bbb2648e741e4a64310c0795a049b47f1d68d3d0132f617cb0c34e7945c814c20b7be972e87a079dcfd1633b384a8ce10346d9b14047e081b5969cb5edfe1e2b5eb797eb818628e0148e15dda70037f110ec10c86298c71f1348a3d180f41737d079228f03df04db7dbc59fe6519836b6146fdfb6f3c2c47f804390519a4541140fc137e7e7e7e4f7264e50c13af2291da97933d23ba47d8d2d9c5efb696393c0b891c000ced22108a390f407fbcafaa541ee8dc60d4ba3cd6c295064d08bd89d8ac2ca98a5e21cf4be15bad6063613b0e727ebc0bd1f023fc4a29d06d1ecfa453d9d5137f8d88bddc5c20f17a4e52aaea77eb828d64fdd4582d56c11479b90aa50febbc17a80755dcea83b4da260931246915e327d8889606c414c544a92e2326c0d3ff4fc999b46b19601c7717829e73a8a2937b2df1241001e1af81a6fc690b201125bb34d1cc330cdd8d332c5f49232d5a224190f6dc60361b24b59cc386a56709477d3ad0fb7eb284e650b93a46eeacfd4a3b75a7992c0f78a564be85859dc451bc1f57c1abb21c3d26eb75709806e021bd146618890e211ca851ed30c0632a01ad3284da315e220d728016d697b149d68170d50331bd34b3f858d64edce20321dc8ce4b263087551a2781b3e112f509e14f5202055f9d4e4785c39da70c071dfc43f0e5c9972765c393c9acd1552a24952c1d4a0c8618f0461aad87d480232f95898b7e2695f2ef5807d62e1a3f3c18350a3a38a917fd14ae4abb31b3a4f300def16d88997a6a3b25f32ab86f730f962c5d0f0d16e4afd0ff4f03971a678d832bea8baa15c9daa5f6436ffd316ee4a1e6a4410d187a8ad1f7e713ebc9f1d60d02ecb302f75e6797e2c5d47d665be89fe3fe91a41873ff0e12ecb867ed72fbcd34c7565b2e2cd406bc85619a70be953704f8ef7914afc071971a043fcc6dc2f1ad9ff8d30092b6446b77e6a7f78c008f877ed26021264e4252b44ae548282b8d4d489ee0819e82ab9c9a1e2e0be5be84c75eb441389399cb1aa9d1e94cb8ad9c6d24b721c0759fb58e34968269ea9f457afe6aa163ed183fd5d4c0fa8434158712ae1f32e3521c625f3749eacfef1b99d9e106c3c909d562842a913f155c112a74a2d50a417920daa420f1c319047e0a9265b44dc0c25d27c00f41ba8400b158e2172a5d94561b0d4471eb7b30dacf4366fdda686a096213237580869e103c9f52632cfa0cce3f75c5e034634a1cd7b94e0d71d0efc62864f47c18a6cfb0316975bb16c8ff651fb7ba4716507fea758f8ef4198fd298a20fdf71a6524e3d5e9042a1e91dda74b5e3e6e3ef362dfb5327fd69b0299739b69492f3cc7e527bc9f94dc9d99efca031d105d19d768f5efc7092d7f1e268dd98fb410af130dfc4cfbaeb3b06a2d22bd4a6e345ec7bc4f960edb5805c9c59854add8da65fe12c6dcc7d34da517fea28fd538a8afee6af50bcead22840e84e5bd20e6a76f5b1df9f5fc227d693931ffe0684d7d8c06dffd83e6e82ff05de5c7e003ff933182610fc2fb0c00ffa1ccfa2d549086751e04aafb80124bf2fe1c90f80bd048435e6ef07fb5f46e0872f21f801348f8113c5319ca5d89c21595049230be7060198c6d1368171728ce15bc7e05d8c7d2a703d6474f16345209a634d0748d3018902a3180d51fc561c982ddd7001b1d1f4df5e614c988b65ba0a48f78863eab8d97d014e7e004d40d489e58a2418f21f608310a7da80405b18f44f2abc2bf2fa56f2b8c2fb05aea25b88054746b45266b8ca34f26848948dfd1719bb0c5b88321e84ed8f95eb877f001840245e144b277e82fc5a708f485c4e72c40852728a2c7813b0f3bdcc7555e831d6a310fcb16c664413b0f5d3a51f823fe84b667f20608cea0f374efd5900ff2041fe5d8a3bd659c6d10a5ae0dc8fe13cbab330ee2b77eec63ed7e14d3a11c44da8c095382771dc3b852b5e3ce0228e366b3f5cb0a4e2d187c4c8f3b0a0665468d3e80ec90bb1e087ac85d980b85a465b0ccecc06029a780b225ebeb3966c0e21ba6b107c43d6a6c634ba13743eb7487c69d13215945f39b0fd7009633f75512083b84221186a8e307075239e4714791ef803aefec8aa51a1a8d57e1d43aec3e7eeca0fee8760158511ce5badfc4fa195bcd7842bc5f8fe800c017e9b0e2470e586a93ffbebc6fa2276efb9b0048d1c7786dc01b262d70919a1a069e7627075d99022d3e43a90a3491c37cd58f3e106baa70dd64bb2d2a291093c388b626284b9318a94d30297130bbc5dc3d8558f55773a8dff2bf5d300fe37d35a9c2eb3180267547caf61eb9c131c820d3268c8b2733d580606bc284da1a75369b9815803b799b3121ba76ad1d4fa1226691cb1a94821669b468197c710ff5ac3681679d0fa125e4f3dd40277b57e8c415522646db33077c90a95cb76bd4fe60578dc2c72f823d94cb13b417fad3997338fa31570e773e471c2852222c168345c6c70f76ed6054e4ebb8a250379c65548db6e21f2706ec09281a99b40acc7b441c966ca86048da751d6811d19fd4eb920c1b97dcc7d3bf9014c5653e879d0fb6bfc996045b0f940c660e592802cf13dbdddca82713af4f13396d95c0a6bce7914af1ed9faa2618863482e7ec14f6a6a079b3236a39e5b6d1cf0ea93f525f4c3f526b5be84d13a45c67a8db40a2fd0585f70b4e3c6d0558c3f6a1ab4438e05aaec5b79c49b47899a71aa0c3a68ac81c4a50d4a742d06ff2c8f330ad16a265fde284673e277f2b90c4a560a0c394eeb60e2432fb10da48bc446604fc3cd55897a5b8c8bfdd09dfa819fde833422fa0566813fbb76a70104e9fd3acb60ca15e8bf10e8dfbf3c21055f9efc375716c304a66251b299ae7c5426ae0cbaeb357463248a2120984abb2084311bde88399aee96c86c386caca287c63c9a6d9206aeaf62bd148a35a614286b5e11aac4b6482bb952bb93348a9929986d12660b3661025330bdc75fd631bcf5a34d02e24d50507a8e95d80f17ca966b41b2666b21f2368b2074be7393a2c14fa6f349c803c6982c0a6bcb14b4ac57e73e0c3cd47e69bae3b8dd45e9d4f129f94faf25f822659483c71dde374089c9c98c1ccde0685618bdd893ffc178e25c3c67a5dac2d8676d4b22e0a1c03e5ac338016e0c4118a560e66e5004106d52b05d423cf77a0f1e601ca1228c0d001d3d75bc10c005cc1695b97c2c8b72c5748c06ecbc9567016d9678a72e4bc872337ed7e027b2f86f9c82a3e2362d9696f5e2951b70d54a633516b690e96e3c75a04bcc71dccfe769d12286095df5ac0a7f1406c883737713702c642f5d6761c5f39c9ce846735fe36ed248a19be5e9781eb3487e9f1b2d525cc3c6e96c0967d7d3e84eb2d1aee747993d36d00da92715de5a182c78d98ffa97680efc701693791ed4311e64bf8825e2e6568afc879bd514c6c4b652b7810d6b2359fb61a3e09014e0d12615c1c5756f4d87c8994ceeabb8d454f291850c8858412a073f2cf8d3cc9842379e2d4bfd23d2273cf6c5b91242a111cde7094c87a0d15adfe93aa8e04b39e529b40705d02b77c6cf641698cd454c8ab88c57df0e558052c840778c51b0fc490c8de3e7758c2c6ceac30461fa831ab63f543d91b765ee07b0b1590791eb09fa5212b4c8f1b0ca86b24ce2324c614ce6521e2b9f501a4e6ac1f35895182c622a0b9ed683a9eb0749f9ac6b151d5d12bb5ab9f1bd843af093142f657049d71b3f993d6ece55c27cd19eafd6819b42896f953a5761e586145999fb6f2dd283afbb3cf2aacbbfc29acb8f64ed0b6ce2e0d9fffe711a6ce03af6c3f46b72328b627812f8d39359929c641f906c8e5e94d5f3675198142b367039ab5eb6d04396144dd77a2834b21be0af58eda9bdd6a35ae9017b2ff4689779c0bfdc2a4f9d351ef0572ef13cfa024fd5f28ea4e9e25464c5e44b41ebff75e6a76b2cf2480d95a6a45563fbaf5ae939c03a8fd12a4fa1fbfe4f2ef2182df1487d56b2cac3f59fd9428f56adf75cea3159e8f9d71b473baff2d41e553b2ef5e8177ac05fb5cef397acf280f2451ea05fe3017fe512cfde0b3c65cb3be0d15777feb2b59d43adec940c332e32d5afef4800fc4620cd08dd7b91475ee2a90c34e448f55f6091a7b0c4a37248f22a8f3e2cde6791e7f197784ae46fbcc2f37fddfa8edce89d9777fef51777f47aa9efcf5a2b3ba561cdbfc1c28ec1b28e643fa4951d29889516770a365c5cdf913e4ba7512b5679b8cae581daaeeb3c86ab3c5a1b546791a77489a7a0a4075ee139c0fa4e654f16bdf5411779feda259e52abf1482b3c3badefc8018c6a8947db41fb2df21c7089a722f7fcab5778f65adf5144c54a630afea2459e032cf1942df0803dd677aa5677c0632feed45eda295bd829f751ba759db2551d41b64eb4bec7c79740cb6e9e82776ee086a91f830f70b60ca3205af830b1c065383b06a32020279d1280c2b7f8167ad97ac735bc9fc7ee0a260059c0117793008e64e8912e2e7d88a3d44de133db838b23cc11caf0f570edee804212ee8ff15ce5308cd267c3c04dd2c66ce907de11bf22901f133feec659b71f2f611c35b8337de23138fe14ace624987038961ea0a5b86751b059e9ce890072b077ea267ec2aae392458c0f1de705c932f6c3ebec886d1e899e660d0180124b8efda4b18aa67e00c13f58212a0bdd388eb64ca2082fd7fdd5d5e71b360725542605c25e1b2374e93286b071b371e31485a515884fbbc678b751235dfab15789b3d73beef57a3d53c44b379857a1ec1a373f0a2161b30a65bb7ddc6eb7db75f052a156616e19cb14219dfbf3745989d2bcfbb7114159d94d9d9a2a6586b5678c751e6d6243a47df3eec77193661008572f986b3ec359180002be9a5a4f91f2ca2fa0aba1f1045341f1057475b53dc72929bd80b586a6e708058517d1d5eee682b20bf8cc355c509b128ce6da4d312a945c4068aed976d520a9cb9aad64c8184bb372d0628dabab724db598eae16a55fa5332584f6b32d75232571759fb800e84f0d5de7374760c9d65ddceec94d9226364dd4a4fd6dca937bb6aa3511359ef80b10be1abb7a74338ade468b7a179aae6ab26b2be61f858b737fb655ed918d9e0700133e56bb067f4d1ac34fcfddd066753ed00ea626b563a82c16ec3b3a9760575b135ab9d817972c558d338821cd18f2be8f92e48663184219e9279c64dad9ff6faebbb2386a3904a32d2f4bb22a704720259568515159b0bf489630d84b92e0375c25803971445033951ac81aaab6e661627d7402545cf057c54683530b6d432cbe2e33aa834dd99c5c6357075ca54a336b69e1a1b1713d740d6d774a72ae12ba0d5d85e2526bdda96e57b2a544a85d53875557dbdaa96e5763a4c3a25d5c48c3a346af5d4e4713a016b7a5f93bde93bdc048f460b8b095a391a8dfed93554b894912222755e26d46dd61940a25f57f1504457968509185a753c901494a95829e22bcdb90414ed0318629a58ed345a3af55d4b69b714f195e653028a6e1debdfacee9722bed2ec4940d13b80f7a629d24e66f5b40e7d83e152c4579a190928faf583a2d27e29e22bcd83041483fd833d96ecece4799b758ca89c9f28ed5885312dc5d1ac6354e56c44c94d85592dc5d1ac655835a17d96b6541855525d9fc1f8619ec10cd6774716c047a3b4898ca5c86df0b6a3b44e6e6315929d121c3b253b56491e644eab320fb234e9913989aaf4c82ae44be6b8abf2254b9d45991330cca20a7458e06a4ea92abb2a9020416d0d02553957a1ab6988694ec2201553a86d6d32d5399aa5cbddcc89d4c9ddaceaec4e26bc5376a7a4a31f93bbe47e2a12ca41b94b4ea842ae1f957b248c3a42ba61b94b3ea9a3a11e973b259bbafed628f38ea9a85e7b4de818a7aa2a326543d32893b5c4bcd67c7897e7b52a5e8bd84d925d4b4c7d6bd81f839051c5669186793e6c89d9718d90c5243b56715b24522365b6c4047a7f5f4b136815a345f44659b525e6d8b5038ff21c5bc56891488dc4db12d3f01a9edf240d57b15b24522337b7c44c7dffb89166ea2a468be88dd2774b4ce66bb06892ccab182d12a991e15b62be5f3bca2fcff755ec1689d49804b0c42981bdf31e3625a062b488de6c9ec092a60d6ab800a36903a513a870561593099634b760ceb2d9dc8292e50ac75531e360491310fba7dbd9048492db2ac755352dc19f596ab54b5756f16373b51656f535769a6a30c757bdac6a8caa7255d51853e5a2aa3126d335556384954baae6982a57548d51992ca89a7763f57aaa31ae5acba912d6dd5653cb90982ea696e1305d4b2dc3517329b50c95e94a6a290ed385d4322435d6514bbbc87819b50c8b7615d558712b1651cb88ebd650cd078dc9126a69f34b5750cd5d8dd1026a192315eba77b1bdd2cd1ab3f423ab57d48c5e2a9c180d7ad9d9adb79a3a5d3d2615abe72bab787ce32affa26f4b40675a365d3521eca574debc63c158ba6064e49b766ba6f2097a742f5bd6bb386c1345c302d355b15eba5c6bc182e9796f152b55aba77bcce65256506d47cadb469b73aa549890793eb345ad74a4bcaeaec9698d4c0589d9ad44056999cd4c055999ed4c0659aa0d4405999a2d4c15599a4d4406692a6d4e9d2ea44a506b65aa94a01ef6ec94a391ad374a51c8b69c2528ea566ca528ecc3469a9c0629ab694a3a991b854749771ea528e479bbcd450e68af4a59c015d0253673099a4301562284d62ea3826a334a69c998a44e600c699a5323b8d9cce0e1ea7229d313207ba84a68e4f304a692a867079527300cfced29a9d4ced692d0e8c529b0a3eca939bfa5153457a63e4c67409cefe016196e2ece4959bb50cab619a5361da2a129d1afc18a63ae5fc54253b07c802f274a7c2d0d648785acd5e69c2b3f53d48ebd6c9792aaaed96f6d4435a9df9d4c35799fcd4435799ffd443679a02d5c35a9905d544579908d5c367920bd5ece4ea74a81ec25a19910af56e49512526d3bca81291696a5489a866765489cf3441aa46649a235562aa91265577a071a654894a9b2cd553f58a7ca9920d5dca5473c099644dd522294d9c6a7a37a3dca992a58af4e930869d6550bb8eaece6e6eab228f32b51dba54aaa65731caa6aa077b794275986881e554bb9ae9d3ba7c186556d5dc9427573b056615f995a947d4a55807093eb32c6b574fdfac6b940d73ad6a8358916ed5e3ca30e3aae4aa2ae93a4c1a92e75dd546ba46ead5b1cbaf164189d4d2ab95769554d92de53247589d6e99e3aa4cb5cc5155a659e6a84c532c738c95e9550d5495a995392e93b4aa466756a754e6c86aa55332dadd52a9522ca669542912d314aa1449cdf4a9149769ea548ec4346d2ac55223652aef28e374a9148d36553257e18a34a994bc2e45aa31804cd2a3721194a646353c90515a54ca4a454ab4bf2166e9d02ea3a553dfb554a44126e35f9702d5b0fe46e94ff9a02d4f7df6f7de2cedd9c5ac9ed6a16f94ee9473519eead40e8a2ad21c136fa54b71f60ef6b2f46617cfdbac63440dd39a72435691d298736398ce94725395caec1fdae7694cb951cd5398ecf67e7a23b200d76057ef735fe83300aa4feca942d575fddc6b058c295a8b7bff505951fdd641a1facc0d66cfc89307a0c1de0c3892902119cd6098c218666c7cdd24a93fbf6fd0a714878000286a2edc7590bd6f24bbed1742a1f0588228205bee38017776c1a5dc753932fe6904f037f272b64bdf7ed5a0d50ab12046eed1081dae624f16b0d80ae98997dd64cf44202557416f82d4c7effbd00a08aeb18dddf5103f31a6a8722bf72c7e790abf7d9248bdbafb753a4494881c5da0e54429b7c9688a40b91d35e10894e3cfc72f16811bfbf8211f5ca7d1209f2e90d014e395682e1e388d26f801dcbaf133aeced19162dc97412bba84f12329355560ca818ce98508442917a0f4e48ef91bda4529e4cabdc3a5b04522852b9c54d4f6d6b92259f988e67e640d4f6e6af968446170bf2b33bb5015b782efdaf892b127d22b8cc47d29165ade6a76eb70b297c0abb68628c8aa2645f7255a9041c73eadc9cca1c4a09ca6555096832a3d411d8ea6da2a1db7ba87354cc54bee34040f6e9b8a87ddf7a6bcaba1689a9827037e76215c66a16a89c0d04829f6ae1d80e88e76aa6964a7ea716466aad40b4a07a0bba3b56a9a5aab7a4c9919ac623a5a4a5387a6a5b159073659c5eb30d5f40e6eb18a175eec4b7857bbd132325887b75785c375bb0bc0d05c29f6b7ee4f73476bd532b356873756eac5e6fdc9ee68ab5ac6b6eaf0a6aa386155465287a5adb154a7073655c58bc835040f6eab8a97b5ed4d7957a3d1363256d5fcec42b8d45ad51181a1b9529c373a00d11ded55dbcc5ed5e2c8cc60a9370d1e80ee8e16ab6d6cb16a316566b28a4b86a53475683a4a9bd53cacc12abe59a0a276706b55bcb1713fb2bb5a8c8e81a9aa646617aa2576aa46e30d8d94e230e2be1477b4501d130b55871d33f3a4de45bc2fd11d6d53c7d036d5e1c8cc30157711e809ea7074d556e9e0f354c5074c34040f6e9b8ad7b3ee4d795743d135314f8f314f55b803690f11181a29c519e50310ddd14e758decd463cc53a90f171c80ee8ed6aa6b6aad1e639eaab8d5a894a60e4d4f63b30e6cb28aaf1da9e91ddc6215ef69de97f0ae76a36764b00e6faf0af7a5ed2e004373a5b8ca607f9a3b5aab9e99b53abcb1529f3dda9fec8eb6aa676cab0e6faa8afb11cb48eab09c6a2cd5a1e7a98a4fa269081edc5615af6adf9bf2ae46e3d4c8583dc23c55e166c53d446068ae14379e1c80e88ef6ead4cc5e3dc23c95fa78e201e8ee68b14e8d2dd623cc5315372f97d2d4a1e92b6d56ebb006abf86ea28adac1ad55f1a586fdc8ee6a31fa06a6aa92995da896d8a91a8d3734528a8b90f6a5b8a385ea9b58a83aec989927f549e57d89ee689bfa86b6a90e476686a978924147f04b789c665641d8d59ba4314c674bbc6334db1e3b0da2d9352ec29b86a76ee2276cfb342e59c4d176089a7941b28cfdf09a15a1a62c21d9758afea63bc3d98653c40ae2df0d673049a398f1afdf3a5fba79be74fbbc829cc9fe6b032cc63bc2a56df90c91622bbf723f7a5661edc63037c5f9167635fa5b18a7fecc0d183cee26cf8fe12cf5a3700888a214db97d5fb87c46add2df0c596ece270100bd98e7199ae6a0f3cd794660e59e7b01fabde32a9ae385ec7eab74dea0b07e358cd8e494dc5613656bf6b525f71008dd5ef99d4178e8eb19aa74635f532ef9bd4571cd162f50726f54f55326fda46daa2177ad348dd1447983204660a271c3d5ac23832b5ea78906416bb680ad0a7c2599e64edce60630ad32d84cc5a10aac7a17b3b7533e33d7567d78b38da849e70ff02854ddd69023699319a46b107e3cc60c8f0481adba59fc22272e4e0a27808be99e3ff51e9b0c2a6ddec35dd5cb42232971892e9264da3f088fcf0e268ed455b22395a96ba0bfad7da5df8a18ba4d408fcf01adba04d8cccf091a52491a471142ef27ea48cf9e112c67eaa63ec38f5533e66376bce71b299aa2bc68ba9fbacd9b340ab658156cf02f6f1e02843538248949055092f3757cb7aad38bb4890a85a6305c30d4f4caf162cced2a242ddadee4206813adc44b2a7475a7de3890d97d12d7e7db60406c717b3d4bf85d5ac517c957039cebc312ab9b5d03f2f6a6a201ed6ae56715971b476677e7a8f629541891a126ca4617c3767d59be58c043ed7588e2bc3fae8e734ba831e700bdd9401a4d16211c0923697378fa3a1518802a5a23c8adda750cba6562d254644a9e9f951411bb6c19484125c6ebf42792575a3de45f3b560295442220de613048eacbf72177008023f846edc58c4aee7c3307dd6ec343db8b0c037b087fe01f6b716a3024e9bdf5a80b4163970de18d799f629615467231f8173c9534f0377765de2a905f957499f207b544f4d48d4f5d4a496ce539737a7c253b7ba5d0be4ffd2396b195795b396e1f5ce5ae27e57674d099a3bebcc64eae456e2ac4508bdb32e0857e5afa9d695fa6b058cde5f17b953fbeb229ca1bfb67bf6c036376a4c7b35fe5a08a6abfdb580ad9ebfe6abeee2afb9fa6a7f2d01e8fdb524aa4a1a1a85784c7fad6444eb4c0da00ddb604a62577f2da99be4afa5af55a128e6691f7f4d1a857d1ea1417cde37cd7ecb6e4d0fe7af45460fe1af0d3997fc75e02f96a9de5f635f9faca26b28b9ec760ffd53ec0082ef515d362151d765935a3a975dde9c0a97dded5880fdbfce5fcb88aafcb50caff7d712ebbbfa6b4ad0d85f739aa170d9223695cb1621f42e5b14aeca5f53952bf5d70a18bdbf2eb2a6f6d74538437f0dfbe89f8251ab50429dbfa6d54cfdb580ad9ebfe6abeee2afb9fa6a7f2d01e8fdb524aa4a1a1a85784c7fad6444eb4c0da00ddb604a62577f2da99be4afa5af2a63a192d35e29b637f7fade00bbbe9cd0a364d922af07c9b28d99971cb7e7c66579b6d00f06bd80d13daadbc614ea7a6d5c49e3b42b9b53956977501e98fd4be7b92554558e5b02d7fa6d05f7bbba6e42d23cd3ce8ca7466c255e5b0028c9b365d1aafc3651b952b75d04d17bed026b6aa75d0033f4d9ad01faa78e61a3baabf6da85c0bada71f3f8eaf96daee62e6e3bafaef6dae277add356c8aa8a885a211ed36babd8d07ad46a60b3061812d8d1632b544d74da0a80aa901431b697cf6ece9b83a64bd2554284a6ab9d5ec76ecf0fe7b2054e0fe2b14d59971cf63af6576e7c5fe2b36ddb6b4e5bc5b9f1a2f819ae4775d88c485d9fcdea954c8f97543ac8ec78115b95db2ed6289d21dfdb6767f4ccdd36550f85db9691a93cb70cb3e72479a681a5fe5b09a577e12a1ed55e5c0569e8c86d7bda1fcc5493e565aaac9f2b37f6df12b27a2e5cacbc8b171730a81d7901a474c2bcb28d658e5c4bea80be5cc38cd6db1ac11bb7c49ccc1e33e725d3e6050dcfec875a4c7bb973db1ec0de8cf8444287fa44db86a7f080f3e632b307f1e8a6dc17e6cec3d214bc75daf66626ee1c237ae439f3b07ef28d2bd5f2e2a4c6415cb884aa7abe3c345ede3ec05c79582fe1269aa09c270fcb136e01604f9f4dd4ac629e5c06d17beb026bba59f270b784bbddeb794d333f4d35f5004e9ac75477723cdc27c9ceabab7db3f8bdb66356a25777ffe34e8a17d92899b0ae02366b802181bfc80d67c640219afd52eaeee9e98ceed72244585edaeef560f790b3e0e1a1536a43d62507ec87f3a8c401b7ecc10cca0bd74afb81113daa03c614ea3a605ca9960326350ee2802554550e58027f5c074c88993b60aa090a072c6052396001604f074cd4acd4011741f40eb8c09ada0117c00c1d70b3d99fc38e9903a69a7a0007cc63aae780b99abb38e0bcbada018bdf6b3b60257a75f73fa60356b1a1f58fd5c0660d3024f01739e0cc182844b35f12dc717bde29f1628408f562ed56ff747e40072c707a980cd89075c901279bd98c7bc34919c57bcd9e6de28319ae4775c38c485d4fccead572c659a583f8e322b62a975cacf1b85e39a357c33113f55038661999ca37cb307bbae74c034b3db4124aefa4553caafdb40ad23457b6a7b36e61d74d85561ec25b4bc8ea396cb1f22e3e5bc0a076db0590da9e5b4744ab198fe9bf35cc683dac11bc714bccc9fc55be9cd90fb598f6cba75beebc35a73e11d3a13eb13583adbe7b38772e337b9894da907bf9a4b51b877eee22943de479dd53d1a363e5b52d40ff4f7d0c96627edc83d79448eda3d7b49ec6bfd7695f85b7e7b0688e6117f0541ec42ed4d0faf99286ec7c2a9b51af732e1bab90ea5cb6844c79325b82d17b7d538d2c3f9aad82d2fb7b15779ae3d90a48437f3f9f7bfdb6275bc35a5aaaf1fe0a1ca6b18084bae6d16da1f24e87b7790cea58a000a28d054a44694052ab438f7a9e5bcd8cfeb8b509bc714bccc9ec18199428a61827940016ec8f5a847b450df3b93b6f75d8a9694487faddf97cee9eda073cf12d317b90a8c194fbc266f4700115b7bf7006abdd379b06a0a81e792b3aa6517f333aae566b0e80d539c814400159f56674a9c2e34e003072752201ac17caade8022ef566740164cfec9f295ec586f422903e165030a8db945e00348e049af3ced42cf3cff4f70089bf88abee7674aeee6e1bd273046a4f2f43d44efa3524740af1b85bd255ac94ec19af06376d863191bf28ddcfcc8552447bfa6dbbdb6b32cf87c8649eafdbea9e1e7243bac0eb81dcb619f3f2f4fdca0d02f2b3318dbc6c6f3a7b2b5ebcc3517a481e5fb059f91e44d5958e8c155475b352f052e46690f3227133d8f746e36c87831b2fa01133cdbe961bf2a920f4a51bccc97da81c016e68e16b5c8dbe37b67eba6cd09bf78acc0a9700ce6098c29832aab92ab39443f00f703c8bc2d4f543c17228d9ad06d6f1ce57cca55eb867362bccef9ad58b99a2e12fa2eddab74bb906d712458da6cdaad09b161bb7be07e9f61364e7e601626fe97b9e78372285e3a00120b7da76ed6f5f2809f1c5fc4d8f740046894fee6a74a749146c52b6c5056b5d8e348ddd309947f16a48fe0cdc14b6bd678d2e3213e4dff65191536cce11bc78c52c1710b44bc6bbf68e725964821ed23b1f79e99298962e2df277faeefe048d809706cd0a668441a1a95672ff6dc995bffb1926512445965969e1da4e3af60fd0247ae3b2f03007ebb025743d8bfd984711659e1bba76f18a685b1851b9f52abf589a20ca2e3d6ec770c5abc597f03821d79912645ac0ba57b053ac9cbf92fd02f141220db122712dc57ad85b14248be4c80ca12a7c72d13f5a69801e279200de427ae7aace33985df84a10cd222fbf9195446e282cd92443d059df89b0fe2a4b393395f54314cd34f2dbc50160b74d37307f4364cf043c58eec28b061a47264393027c97b8550e12f3e67f17fce0b906156fc2ec4a5438f934bf54fc85f4818ed3c2bde555d4d0a7d08de3687ba471bebb9b304eff4acd2d81fb87196f05ee7865c775cb355e731f32bde4dedda4917ccfbdd28829078f6076798ec80492552896e7880abdbc83cfdb499d04879549930e9fa27aef2432412c78e470bce2702c8077fe54941321aa0164ed39a4be16382b485130284506aba55e18ab05a1d734da44d0a91b975db55fa130c6a6ec000ff4c90d55590741261c3bf58402436f6f85a8f01094d1e9badd40a137d2c3cd1ae0dfeb688df284468a22008a42bcc73dabba4c570179bd4655d50232500aef523786ae058e31d53c85525797805875539ef4e4444c7c5ad3eada6b62616398f80f7098b97b4a0461125e3759b8eb002609490951299f0b0c41777d2707823668daeb3bf9ad0909b590513093d7d557a36132d7483e73109e2941d499c83c98ba7e9090a99b8694d3662f7c48fc6b7c1293e1cc0d66cf70220a1a00c9932c6d190f02d123e938f4578be3358c51ebf31c9cb130e867c9696e42f2c268fa15ced2c6dc47d490cebd601122b2fdae87dd01eab8f51de92b7c6ba1094749baf1fc4866874ba17376f242911d8cce9c21ae13c97fe55ecc637785d671cd29d4c6e3497c31217ff3852a318be91e1a7ee8c13b611edc0831fe5b4e72733299aed6c438f703d8f0c3f5863382cc620c789cbb6295700bb3209b3081e90b3e2dcd57a538e2158489508ee7ee6d14e32bc751a13fcbe5944f379fb64fdb45c370ecf96e102dd8c0526843c68808a8f5035aabcb804b4811839209a2ddbedd660f2fb187656c06a80978b7b1bb1e02f4ef4acb41194b60808616e58fb42c9fc3e6f8e9d83c936ce0b6b3d27cee2c8b1d3983c8515c6d82d4ff8be9cefd20a5d217fc699cb2c794f2d9b818066eeadf425677e6c65e8365fe4480d0135500097ccdcc0979e605ab7851e54e7e40c14a140453374ec03c8e5620812b374cfd5963e3831f4e30c8155267f4f770d8d8c2e9b59f52796573218a4904c799b4cecfb100345b28fa74bd14e35d450f07477a587c273f8073e4ba91205840a21088f525c4b6a686acc88a9d6d5b20ff977ddc3932e38be3451022c78891700fc585828147a64d7a6606c195bf5a07105ce52a8d3a0bcfff71ddc1be126658311a326eec8633c83d8a9499cfb518327121990e7b238db3370bf8878be466344923a5c92e13fccbcd6a4af0cf36718244b48efc2c4c931076690bca586975092f8c169eaff7b3079ca218c12400ba09914ed97713e6875b3ff4a26dc30ff92d09a5c2ea1e9961e6d6880bf89aadbe059aed2efad7006b9280b42c94eee2180afd439c5c14a68db9bbf283fb21401a14c046729fa470658171e087d76fdcd915fe7d1e85a905bebf828b08828f97df5be0fb5fa2699446e8afb777f70b18a2bf3e4e3761ba417f396e88c65310a01fe77eec822b374cd08fb338f2bdecd74b18dc4294f0809fe1067e6f81c40d934602637f2ef4256635594551bac42d4136de0d7c378164c327b611517257005cc4ee7d327303280d00fb765950a86f5a766bda6e5369e673b9829c926813cf501ceec1c63a8e2cf0068601fa4f14bab3c8024e142651e0264808d126f6610c7e86dbef2db08ac2084f1d3357b8887dba2aaf893f88238ea36d750cc2777a330bdbed622e48b3a56cd51e7371bc7583405ae7ce27507365e218e7a611a995c1985bdd6f4103348fbb707524c75bcd7e378b3d2846cc63c6af148188ab861951815981366a9586e5750c6f7db875b31931c54b9e78ea9d6988ad66466e2f8a4cc173d0c9d24e46b9d162630dfff5a2342a224b8c94c7e27c03e6a490438ac158de1d8a6ce64b789cba0b054c370fca3300570af8497a912545399cbc9305f9d086076751ec92560a8ff315b0a90249cd6830d67a1cb42a224d556a4aec206dbd3a2c552ea890b2329684e18b872e650909265cb0c72705d3737ede3a6f0f24c08e02d0edb7dc962b01b65580bd5ebbd594005b0ac05ebbd36c4209b0a9006c0f3ad3aecce3d40db39ee316d7e3287553f8acd1ee797071f44233e4b21ee9adef408799076c6fb77420766c3214c9c46aa7309484e57efa306ea747c1e46d53014c91c221334c1481c261d54dfc07d8703dd4b39cee128782e7e68efbddd36687ee6c11ac45f3b8478b3126ba5427e487df7cdda2d617d5bda8c0dcf8670f717e09bf61e9fb6ed59175a19665e9a7108b000ec13a860dd4120a95acddf018778fd24a32546c1eec18cf4911506113c917699e334f3bb9e09908151b333eb593a0f29e26e22c018de11abab8efe89f8a490a3263a662bc59c62316f95fc76518311d952c972dfacf6c2c4217a5ffcb288d1a0b3708607cdf607fe40bcdaa893faa5cc8aa077e92cada954d1eb2e993ccb964aa66fc7a2a31b52a52c759190a76a4c93f614eaebab6e90cdf13ebc98fd7f07e1ebb2b988064ed8723dc3f34e48ba36c1f43d1aad9d8a6119ed2480fd7ee0e2824a3487a1a7c79e2873e8a60b3d7ca932f4f5ea09ef871e5dff9219805d08de7fe1dc1fddd70e8ced3dcd7e2af43308dd265767a80baa12f4f00c624f82dbc4091adc3301258519f3dc55d6c81a759e47324cfe10826f6477fce60c1dffe0e6c71f7160e8aba360a029f7df34f82fb4f70025a4747fc7e2c098ca0637074310a06093c0472014c92c1dc7df6140d710b3cf5fc150c133f0a9323c9f6153665702e01d716520b0e51d14fc81f15de0215abf67c70a391c7223467e9aea69b78817ab5d01c5592adf0c83a4e15b1ab8623548cfc48b60fa6305d424fa038e897acaafcd697cc32af59d455d0833e8bbbcb7600b271d988621f9b012156cba7011ade8685ae4f9335845e11621d476b18a78851a95916db0c68e5048bf5537f8582a6f926a4b6f12974133f5cbc10d299662f6bf177c3305d9255f2674d6e9d5cd6f41e1204b3927ca55649a5a6ae525b5be939e8904aa4da776212a0991ac3cb4716b08fed2ea3777202de449e3f877182f1144f76f03aa497837a47e7e767ddf5dd1133c39d2e67afcbe4c36fe8d480b70d683778e28d8c3af9871bae2cbb6ca4d166b614e7f3b26f646a083b7f0c268ef875e0cee0320a3cd6074fb9926408bec7b3a7dfa3ff52c4784ef37bf03d2d6fac125a44ac3b74674b0109f04311296bff77c36ffec97ff8b3516006fdef47ea9a5ee4cd3f3901bfc0641d85897f0b439824bc458ea3d5b3a71ebcf567908aba7c5b82082bd1e3106fc2d40f0c30e76b2514968e932afcfc1ebc0abcd81da7867829b0892408a8bc45a31c71230a83fb3ad855624aaed3686dda9e5cd72bc55f072f833653190c6b8a9397118a7eb6be0709ea060c9154b2990253ba85b6e628a5e62a0710afd20daeeaae2ceecbc80158e0a49457ac49dca09f10b1a7f84c83b7075705a9118cb5bb8e56cb3936e76c1fe27b90e504422a95133c3901ef38d7210880acaae533b2d9b20d32108d991b04d1869f8861df37098ce97220ff75153d683f259a2fc552c2f6b745ee7ef4c359b0f1a0c0b8e88bf136dc674f69e0c39d16a132224b5a43d05edf81240a7c0f1058d57a578b4d45d0627e529a96d14dd338b62f667f25a1bd7ddc6b75e97415bf6bb1611f77daa7ec0bcd131af0168669c2094d13670be76c141381340c12beaa0272aa5e8c49da2158b6524fe032b10b70639f3dcde6f79ee202369772c4b269ddf65369ff1bc393b9856fb9a9b18c0d7e6a2cf31b014c99e2c0bb14861e10742a5759e5ba6de9a2ae26c67e9a05d92d7e4996af28aad853f24703a3a2b98e2a499415a138f1534c900d76867349b42da8674bb543a5a5d8d39397f13b2af9421930daa48853a5320b696d45029e21fc6e389cc2791493fdd8f2344db1a79ee2c9d7e29c4d71ca86cf83e58371fb9c75fb848fba1d89e90a2a1073a5f2cc59dc33990941de87d8cab2586e0f625647105571eb22137536f9f71d774bc077c37934db945cb1290d89f65186444c322b6b76b884f5ca7f8079b64ace094bfc73993bafbe527131cd17ce3a8ac54560be8436ab78fa2aeb848e9223a99849bba3e4482a2e02f3251c47c2b1ae6cb3594bc99054ccf6edb5940c49c54560be24b3de825966e69b148af63b88dc2c8775437f452785b849e2ae6daf12e087733ff45348cfa00b66b7957bf9450cefc92ba9eacd2d2a4bcc3bfe4631a49002011d44d1c494c405cdccf3974df53573a7cc8b299327297c5198e808dcfb674fa3f93c81dc1c73e669c9076e0d8f2fd1d83b1a14f190d800b202ca25252eb1494bd952c0c909c0d391384425a37fc8267996498037f17c6b81ceb747e06f1e9cbb9b001124808da99f0c25c05325608a1443046c4a28bf84445d3c37bec6d01c6cab2961cd2065acad8102326b90d0a2be0a6740442b3649499daaf59087ecf70a6d228b8e8af60f24580aa910e940e61443aa7a095fec203110c56eb8c8a01170b363010c6a816e5b427d0f03bc789f4377fa19744feedc054a9004469a9da6452e9b280a38ddc4379bc84f60d6c0e669d3a2b83bb29067f76e28765ccbee60115ba0c8f734d84009ba79ca382940af37f13a1064d2ca392974770cbd1c35866e23a150993465899f9c800ff7eb6811bbebe53dee02b283aa91eff01a2a7799491bd1be3c61bbcebe3c41bfc8be33f237d97946fe267bcfc8dfd9ee33f233db7f467ee63bd0c86f710f9a54467e8e62dfc5c872e605d9d0a6655bbc86f96e2f498621b2d8abc8834310ad537fe53fc09fe0c29ffa819fde4b3a8b372434e9e1651e0dfed01a821639d05cf8d41e8296f243879d4d2b7eeaa24f2df5b7de1034951f4eb3237af27827f75904d9fe7271e492af6114afdc00ef0e507d26f10c8a09959f13b8f2a751e00d414f0d403e9e8a1fb1625e91bc8eda7a2e43548947335f8df47b0941be0cbd8c62ff01fd0ac0c25de387ca674be0ced204b80948971010bf04e6510ca63174af7166952003e2ae49acc2d33d3901839e6d8166b3dbb2f0f44bb3dde980a57b0bc114c210cc9651024330853377934044e11eb831049e7feb27f8ece7f41eaf1183668bd4ef21f383a771e971be22bdf51dd7a4e7a013c3d597904d5c0e29c473f0ac057e0088ef230905e2568d239f401b32281d1ec5cc1d8a6d365026d6ee74d4c4c8e4d49041680989335f452298cc1b3f99c1207043186d48804016ed8678af7023daa4e22027d11cce0f481c58fc8aef0350d5c22133d90fa5f84a23c421680dec4e5f06c26b9643d0efad92421bce03774178673b0e1af4e85fb1d14fac274fc9c706d64ce510178e1f2aa24afefcb32dcf0a28aeaf2045d946178e01fc813f0349975afe41928c909b1b62e745b2b9bcb28aa8ef15d5be284f1e95214a9731848d9b8d1ba7dcfa980e25db93558a711b35d2a51f7b95d87abde35eafd7ab46b974837915b2ae4163a31012d6aa90b5dbc7ed76bb6d86910aaf0a67cb407608dddc9fa7cb4a64265dbb8d08b2ca8ee8182b8a19be9e01be79b4890dd1f54dba16fb278d3a0b677a4d7498612ba8b280c9587f293a5e8d054446ba4b701454584064aeb73936497d057c463a9ba31254574454a30b0b6a2b6032d15541194a7099e829c5a550570155aea33fa218e9a94fb6e1d9205dc6d16681e3185a4f4feb9b7f3ef5ffcc17a50ae3211b116b18cf6098ba0bf8eca90f4e40b3c55d3359d514898ad00c3562da3036ff205ed9c33932e9321f854703b9fb2a03969acb7932a0725b3550e5a31fc8eeaa061669e483dc4dd540d2951b958ded1a48a4110f0a6ea906ae962c9b6c4cd74152e8aa6c3cd7c0d25177786d3c3d190f378e6ba0e917ba4ae56e0a08357e07689c4c797db5ce71aea5bc7a51db2487525e5da3670537528ea5a86192f3a8a8aeeb06bd8a697c87aa1b4d3014f4a9e81eca11f09a54e92900e7160a6895fa6ae42140d11d28b01bf905c933f01bbe04cf60157d85085bee2b2cd9779454aee93b2cbd57312752e2552cb5af31c7adf73596ec7bcc91ea7d8fa57448e6982b1d924c80190e73127a3f25e32636a50666bdf392fb910e7673dca52eada885b5f197b93a4be301cdb19b7940abd245ca146bba481501fda0aae73f15b895a3aa9e5b5560d50fab9d5cae86826e5cd573c81ae4ea8155d3596b3a53a39bb53db956194d0818387a05feb2b1759830c052440632a5834606963e6628d2dd2966c837554b0102ffa12297d4c3d60c07cc31956592c6484a1249631c2579a4318eea34d218554916698ea324893446529e439a7751590a698cc5308394f0d54d20cbaa57e78f65b5abd3c7b2dac6d9631992eae4b1b47675ee5856dd28752c15bf41e658567ff7c451c27ad8bcb1807c1717209c7f119d80f4a9c20d9441d77504357095b9821a684a9c410d2c25eea006966a87500359894ba883a5c429d44053ee16ea74579963a881c7d0351430d6750ee508aadd4379fd6a07515edfd84594a3a9761215f5abdd443902234751d11506aea21cc3eecea280f7b0ee42817e1787211fda137d46f16b85dba8a850d773d44357e63cea612af11ff51095b8907a88aabd483d7c258ea426a2125f520f53b93ba9d981651ea51e2a43a7a2425ad7af54e2a8762d9528aabd4b250a63075389a9dac754a3a8763395388c3c4d75e718389b4a24bbfb1b15eac3ba1c35855dbc0e7ff658f438e2970a6f53025cd7d398a32af332e6584a3c8c399212ef628ea4dab398e32af12a3590947814732ce5dea446479579127334865e444658d78394d6aff61ea5d5ab3d47697563af518aa5da639457aff616a5f58d3c4579271878895204bb7b0819ed61bd4311bba167007f723bc9c5376848d5670d6e1f387fc12ebb11410f808f2b283e7fc71dfc672c4be7fea55aa4e9c6b706907b81c9319206f8e69f1cae3fe5dbaf7cfefa2bf9dad9f2976a7015f61a90c809919d787db3788584fcf21e554af9552100e4abc481704174f1799732391524253d08a9ea19e57b6f9c00aa5f3e24609b20f5033f149f43e3def7e0606fe57e50bd249475a37c3048bf91277baf4fbe7d48fd5e967e6a57561eca77615aa088958c377ce58b7c0a8454e3f7bd320886b041412fb823212f147a87f5bfd1043f805b377ec6d53a3a526a64357c4127d98bd284a05c4d565446a80057614bfb2a53ca5b394122e82bf8013f4310c3d59f9cc1d4ecf9954c74f16325010589e27272e91af7ee24b8bb9634740a103b11939746cad6647621a0984c2b9fc9db834899cc7420bb9053676b9509e37ea4ca1a5702b50bd162bc511aea189060c6f189f5e469ea07303f0faa3efb96664355700e491ac374b6d45db4b0db9138fede0bf437bb654b1b47b8e10c2669a43e8d22340ffc001a4da551ae0223172de8808c3cb9a2f60e318480458c0d14219e3266c1c0e2bbeef93144097d1e25d01b828480a278e7351758214c195b75832491eb7da20f999cfac961c125362bd20bd3bc220bffc10f6c5a861b7848975d3fcc4ff3664fa09b8eb4aa0bc8bf54bfe68d8320f11142fe0904fe5c69ea4eb3c07bc3bde14c6f6561fdc7bde28fbb8c5d3392ddb51aba2b6881a76bd72777ade2ab5c32ccec3ab9305d3ec3301668b208877c6bf821524601a4c540582721225c3f296ea69a71b731670f270814b28f2e512672c9fa11f9e1c5d1da8bb6a4836859ea2ee85f6b77e187f8169d46e087d7580fc925d047d9deb8248da370c1eb1265c20f9730f6532ea23a165e84d6f2cb55905f91e6ea900b9ff88a16b08f07479cfe8a0db6f20f459eb5ac70cc10fde21ee893fc9b22b0d176980a31ea024b2e4472376efd299ff0bbb5f0f2d774718642bc764bd7287ceb4d48f9b140f75bbe174c44cb0f4accbb41dff000f9fdcfc703e1c377f26b37127c53e00380c017417921b8c65870ad6974073d599e69b458c8e942016f6573b5ed32b819ad7924318b1a5dd6caefac9d4997b520b3b846b0c5d1c337a2985a677d100831e5d345ec7a3e0c537cfb1609ada8f2266eba89dd143e234fc934961b982974a3899f8eb040d3fe96fefb850a29711e2c1823772c95636688bbdf1ec9e38613277ef66448af2b6b3072cf9a9da6071796a255f83e254283dc22a4e6915cb9f44261cb5469adce00feb5ccf2717fd5f57e380c69e4efeb016e76419acd923fab1e84277352c2757dda0c5e45ba487cc09396880f18698eb87033df9eb49bfd12e2e4a3447de9067392d2585919cedbb4658dad9f2ea5d7a155dce95efd069a67bcb2494fe1d51bf2bf4272c615e7299ab66959e6c1e56ff871240e3a6fa00a9abc52c8dda5ec44ab7514427c69108d8d1bf8ed38523bbb6a965d6ef745f7841d57a978bda8c4025f2cbf4ab7df5da46d0fdf3d6a01f26fbb74769cbbda9031ce39ebb6d18cac66b6980bd19954e9fbf6c292043f92ebd23a965f24d22863495e589c0aa773b0956748ebbf5f47d9adce5263f6fe99c00955563aa638655d42174532e4c73c8a288b55f7050b3d938df7f2c913e9e54b7c871ab7e08012ce1fbe84e007e044eb7be2175a76f314bc7303374cfd187c80b3651805d1c28789052ec3d931180501b9753201314c607c0bbd6384e384bf35f29ba6ddec355d720f1a8a0990ebba6fa20ffd96ddeabde08b5bf9aba37c711b150fdaa79d9650dc19826fda76c7ee784271377f9b8f5e2049e87567a776df7e414b10a9d376bf37e8b01244a5ef0ea66e9f952002eee9b4376bb112847b3a9fcdbc1ec18d6391ac4533e80d20a69097233a5e1f36615f2c47d45029bee0942b4734e174de9c77c5724479de9df7e72e77852479cb8f3ce747ef3b447cd8b0ebf65d7603620b77426feab65909a2dd6c9fcea61e2b41545bd34117b70b97207a9dbe3b9fdbd9359c30c4c8dd5eaf6367173d22ecb6d7b7bb7911426fcf07835e5e84f037bbd3f669332bc2dde4cd6683267f2565337faa312b6b61a19fb689b2903244c31bf45bad695e8688cc5b03af33c8cbb0d8e6d3768f76580cbd66fe6c242940f867adb6ddb66901463e6d9fb64f6901c6dcedf6ba3d5ad0cd5efe27686f61bcf2033fc2121ac0d6d446863f2fc64de8b75bcda6508c0935db83665b28263ad06db73ca19810edc10e5581384a206d4cab8bd5059590d6b44e7b2d56429ad39af5e6ac84b4a733e84f5909c5dd73696fdcfa510053326c5addeeec455686074eb7353fede66578e8ccdb83fe3c2fc383a7dfed90e144caba98b7d30e1e505fc2a77ee8f98b0853e9755a2e962e296b919738bde93c2f43544e9bdd536f9097212a83e6e960decacb1015d71b0cd8b098455337c06d69ce3bd301ae4dcab0bde974fbd3765e468c4daf3b9be565884aa7dbb7612f2f43547abd016454b28b4cf120b1fb361150568c078a3d18f46742311e2cf6b4ed7684623c603a333a44b36244b405618fd99f7914c38434cd3b6db7300e52869bd6eecf5ab3bc8c34cdedb53938dcb4f6744e8c2829c34d6b7983de9459b9156ed569ab3f6bb55fd01244a17feaf65a035682f00fa6d379db662508fbb4e70d3a3356d2c52a3f6ff53c6a57a2808cc8dee9c02696370a3c32e4fb33db652564c00fa03d652564b84ffba4d5a88428f16cd0a1362b816bdf6de66fbab222acc25eb7d9ea664598f55eaf45861c2ec2bcdba7d34e2f2bc2fa3b189cf6ba84c03a6df8386068ac637fe5c6f7f88d850dc432ca3f269bd90c26c91050fb287eddba714866d7a969133f7ba80ce5e8c8306564ddf5baa19818e0fc05c582dda2063a77b0195efa26803cc9b1816d0bd8c7bda30c10bfd55740d47c217f6dac3629f470d3959f3d3fa1974d125a8aca88327ecc1e7d4431134aa71869019ec2047e789d016017c80b43e05c23300dff3a1845239468849660084573a49a3c74a1615d5ea0e4410d3f0a85de6bb6ba1668f6fb166875bb5227fab31c5825f917325803cf5169c4ce81e502d17477b10ae19e551187152f039967a5a0d51578ee4ba4ac6d87aedb35952b5a442bf928fb8c1b345c966715456d2907ee286169a04860f18f1c3101c78ff70ba342af0a18b5b242593fe00aba29d48ca7d3a3021193a72cbe844fc36408a6ebdc8ae1d7f1c96b2af4257d528e5f5921b7530fa59bb5e5995100c09727c50bb9bf3c514372b7722bbf67f7742bbf6637772bbf6677792bbff2b77bab91af61c8eef75602146efc56425dcea23069f6be3cb10a1fb97bc055a2565e042e02d2e763f9ae033f80e671e78504c46e042e82f60aa0f4cae122682b232e3c47fbac08d93f022740c00a9e03fbd8b66d1a27fb442a995271727ac13eb76cf973cba6ef1b673690309cbaa1e7c65ef6bc89f89936bdc56bb4f476c63c88a2586ac70968e7639dcc64e42ff04a2d66b18700a613642beb1e0538b3b3420525b8a6473b5c88b5dea4952cf35065380bb0a5ad23f074865ec7421e0d3e34fcd023db5ae84b4e7c6936bb248382e7a02903d3594b11986260f0820e244bd78bb60d6e1a90855b5e1cad159f85a84883448b9feb4ee26e543434c4695d521b06f096ac8553207b086cfc4f737d070a2e52659ce8ff482dd1411cd5857fa1e1aac97325d4d18aa836ed52784457495b21606d2b5a876e452dae4a31b5d677f89ef7bddad73e74fb10579d83b4afbfbec32f42edd7c0cea11b8838ea1fa4814d84a6d3abd98d9c0931b0048520b88423ca56bd71a6aff4a28cd372eba037b0bbb1525d493f2c35b6babc79e56663afe6d5e7b41aa7de94ecd4fa72a3b257ebf5e665f7d697189a9d9a5f6e72f66abedef8ecdefc2a335422033a9712bb2159c56d401cc6cd36537fd698c2071fc6cfece38e059a385ded663be314d51ad368835f2a956a7751f5e3660b27af7dfc775381c2dbc4f499bda66daf1229169e467794fd21f0c304a6ba1ec289be5666ac6addd082cd5cb841b4107851bb2cdaba75b446316d750516d1a75114a4feba50a18848f423b565d4ae50ab6a39552a15f55c4a8969861d3f2875b2d3182c619a5223450d5ef2e0cd8ff34d88a712c10ac60b8877e9be71d7c9b3a7d34db072c9644c6281a7b34d92462bfa9b2e889f9c802d04314c377108dc1404d04d52802b82a51b7bb3c8831ed97a8637093cc534e80c4f3204020d2c418673eb862970c1ca5d033701b89fbfd057bbd3fb356c44f36732477fff3bf87ee5aebfcf76f708db8c67d91612b2d998af9bafee9f9c106e01aa059265b4093c3085c005491afbe1023f27452be18dcb2e08fc24055b3f5de602884208600057304c19628171849cf04bb07e4f1e19cf1b96f14aa01089ef4114032d0466e97bf2407b00c345ba1461fef177d014b6f191993b92bc869b20a0c2cfa4902e2158bbb1bb02333704d04f9730a682f0c345008910842a51268d680e5a5caf2b24a0e65fdc1327f0c8d578c1efbdfc1106090465a889f0f498435156789b39d977218167dbcd89b8b896fb09704340be337d07eb3842d1ab87d40d4913f1214a43d951623fa9f7baf3dcb6646ec9f8c1c78de82022fcb809c0131052c749ddc2e4a2ef16d4deb9dc583f016194e66dce8b18f92da2bc5a6f5208fc94c7a76080203f027fd3b05090cadc0f3d6cb92e7181d010493c4c40d8128174e9276c3cd3118b5fad4376078f6962cb28c433d408973ceb1afb1e7e7a6e45706cdd7b0b8411c0076ed701041ec44fe422c33a4723770941826c0a1efb42074b3671e5aeff07173d13bf5880188e21e09b6789a2383a128f9803f023b5ce22322a94dcf8afa32d8c7fdeaca6307ef634c4ffb5c05378c74eeb3ebd75f1139b64c3113e490befd6e01fc0ceccadfae40c06cb7a8fa121ff053f004a2b3ffbcbc633aef7ff55a26f94e23f29e267e2c000053160e9fcb459f9a11bced82663260222e878311d8267dfc7d0fb7e0862e83120eb7bbce4fbfd10e0ffe6c5d36003bf1f02f41f5648760c8b0e8a709c1d844174b2b33064df33f4f2d3e88586927d216c40d1e2ff0fd8c7767bd0ea9748a8d93a1eb4f2f34f58fe05e86714fc3938b6bbdd23540dfdf1428613d4089765168a1bb658842b77dda07a9e95e63a4e2a1fb1aaacdb9ea15a0b980a75705f1c811fc071abd9ea1d81e71a30d23f18f0b4d96de901718f6138fbb49519d85c4bd4e686aa0912ff338d1efd03d8c7487c4ca769ab7094f98d6ddbc21114a12b18e837f3f9fc457e6633a1cbc0aaed7ee213892260f6c6e8c0109e4eb3e35dcdcab7428f690dc2707e8e504264b081b478ea3fdba0aedc415e428d428ab78f085bc0cb2a63c017fc11d97914a528862e6eb0c85e6f165fd924f01468eea20e557c57f65eaf2862024e5857f0a0e14edc0f2ad1cccd39cf2b938e84993f7985c411c05b18e04de7f9b9e167e2c3b2c832490f241fe36ad2ceedfcb0b06e27bbc10146946e64a717954fcd534df0578bc21e613fc44b84392300b0b3ae0dccd310a4d1ba6ca776d99d1ca48c341d9fd9b0849298df0aaf3b9bcad54686585953bcde44aa8984ca9d63adb5e7fa45e1133b315dd402fed29cecfc2db9edec487bd0403892627cbe5725657cb241df627366e8f66b19954e4335e771e9c177779346f2d977e5a66fa5b27364c82150ac3f85e39d8a4b63aa252a3dc957e30cbab2eb25b951652faaebcec251f4ade66a1854d99fcacfb471bd9cd52e8aa7e47890d1c8291d1e4a29956b574125886452374e6b9fcaf8cec87e4887b78c46a0d42c0e7bbd76c1d033685535274fac27c7d375bb318fe215eaf7cd1ae0df6c3a2c453e9e62100ff9906620d865baa28f8659e01823928e4d7da7c26981ef400aef523786d98950f91811cdd18a80fc51a456976c0341e53124fb67986762583022c49a709311bb254bbadd8a5d09d15ddfc9a7456cbc8b8abf7441855b381dc48c41b7a41e3d55c4c98d3f1624dcd3417771fd893ace83a9eb07093910290b5dbc9f2b6f81c6143369925bca6cfb76091a0049f6e8055232f4174ed4c906905a0a9b7d237de9af16c76b18a396e7e7ea18f9413f3b56e6deb16365796134fd0a676963ee23b448995eb068269fd2459ca2ffc73d85a7a6455d42f49374e3f9914c9c3bea9613cf0b45e258d8b5c89311c33a8dfc57eeb5ac9f8a7ac68d24f1bc637e8509554f168cd0bd3264568259368c403e7596a368e683e94fa9d2dc0f205952c82bb2113b605bb1a80700129c704c701326301502a64cda0c11f9f067c608d77f5c038ee7ee6d14fb292485fe2c6f130dcde9d9144e926267907508b699a8d805a2dc55565169b5fe647695d528a52048a0ddbedd66f7fb64f79f32404d0cc5dd58573e0473ab4df6e4320649fbf283d71c431d9be7928d9576569a1f24cda214c1dae424f1e4df5f4d78ee0729ed0032ce68bfc429bba4273faa1ac3c04dfd5b98559eb9b1d7a079ef7176ff9fd0b348e86b367cc92d3758bf25638fcf1582641647413075e3844cd42570e586a93f6b6c7c7a5af0e4077085149afc1a0e1b5b38bdf6b92dedbaf4f61bc799b4cecf69a297ef10b62d40ffefb88ff715ff4911afa287c3633d30c2931fc039f290441a2c0a5048c5fa12628b534360e44c806d5b20ff17dd3a6ec21ac78c20498e1323091f8c0d05078f4d9c74cf0c822b7fb50e20b8cad59bf4183e94cbf509fb4ef861c56800b9b18b37096437446556752d06282c002a43df486377762d37bad8147a63923417624460b959d1f9e7d9264e909cd6919fc54012c62e6d43192fad2e6186d1cab7400ce912917ddc4a007413229ff2ef06dc0fb77ee845db861ff277f0948aab7b64889abbc0a580b0d9ea5ba0d9eea27f0db0421d5103f923b198e0cb93ff1d46f1ca0dfc07783c4b12ba459cfbfce334d8c075ec87e9d7e46416c5f024f0a727b324f9ff79bb9ae5366120fc2a9ac9a46ea6068c83dd74726cc7b7f609da836aab980e418c8443dc4cdebd2369f58f48dc434f01b3fa5ba465f793f64b611e9882a962f2447a5c4e7a11fcd5d2a6512e4a6b4ed489aeca1db28263ce8bd3d0b4cdd0105ee0b60d6b77e46ad61c5e1169f1999e865784ec3e6821c3cda8737c38b78417c215978da604f811337228c0754d495915ea0dc05085ba3a6326a02a9bbb9f885aa2a3e7ea088b7280d2a92c284e5b59a285ce50592cd14265a3882b9579b200dc71a1524dc4039356226e760dc3328544dc7c61b439983b3f794457e42584d8d5adb2281e281d8e7280c20bc06d83395171bdfc7650fe1409d60c9ff91eb724308aabc76364621c3a01bd6e2d04eca98dd313db139569d433ba445f49d78a3fb4c37bba449f69c7698bb950073db18630f48d8c7a8c6e2a8bf29bc46452cd241c56e5b7313abec569b5d3c2cf37f0ef5671b00ec1ecf58d76e3f3d121ef0962e270f2bdb88371d0b4a20037cf789df0a992adad37d7284365be210f37a11b5fde6d8c430b2d89686d6e5429aa9678345e272ce952624c3d238f0d192d8ff3042da99712b44a93c6b82d8b20087d4095040edc91666b35d695baba9f77bc250f8deea451bb417cd6428fe217ded291a3031d3b3891539318a952471ae63a5914b3fd9c421dbce0c24e8e2890567203ae27843626bec441d8aa236488bf434234995c78207baa8f467abc9a411d6e049d0889122bf52d2b52020eb012e298690ad4b096fb5d1e52aa5fce48e358136349cc40857aba3adba067cf2e5eed76ebdded27896f6b992a9091fc189ec46d28013c1d9ed03a145299f79e4c19ca58c216cd6803923f71675e8f4394c4e88007f23ebbdd1e487d739f58be46ebdbfe0955daf248b33fc242aa56ea452838bb8a96a547dda4f0c7acda829845587ec1f341cc2ab3d359829ccac86efe904c1dd37066ab93f198df6d3e961530287996a7ccb7f0b3ac09f61a7d44e3eaf728861f4feaa969eafddf1e5d8186e5feb1bcb0558092cb9d6e48f2ec199199955a8cf7b8cbe52b4a585da84cc3a3b9847695acc715f63d2080b6588913e429cd4a8be5a3119e947ddd4aa733a28cf404cb17089713883660ab533d2fe73a29d5fe1fbbd951b307ff1c4147fe7713d624c1fb21eb8f74a0592df33acf99bed0fb1ccec6790a2dd6c6e94a7c13da860fe19433b8b3c601cd27c5ccbf0b988d55bf72d39870b902dcb874b1db0b0162403b7fbcfc0d0000ffff6b67432fdf620200", + "518081a1dc407a46eff65a2a5614944d": "1f8b08000000000000ffac92d16e133d1085eff31456ae5aa9bf638fedb1fd231e8127a8aa6a3c9e51b7341b94dd0212856747810624a0c92271bdebef3bc7c7933ca8bdbd7db71726be9337340e2ad36c5e9b8b973e3d3d99eb9b4bcbbb9169beb85e19f369658c31ebbdbc1fa66137aeff376b028991442b248f142a26c1967b01ef62f504ebabef671ef70f87df37c3d8e5a3bd9bb70feb95319faffe4c750e43000c52917ba4127bd55f49d34cf3c01b9ea60dd812b30827b07cf738beb53c4da7f0d831578849815c85583b6a3881dfd230daea857d135c66f88b02f787fc4e7d425079a6dfffabf8f7cfe911055b0d7e115fbbb276825e9b6f1a7c6fe9b71d7ff2f78fe33c6ce5cb370fa7147dc074c670b81b0ee87cc80c1d09ababdd710c2e4872402fd8b6d207da0cbc1ba7ff3cda23c5ca6e3e652b3535ce5d528d3eb4561c54e21298b87015df96d98e14fb61a77a4ad7301460ec55952992e7e43415f259597ca2ba4c77a4d8793e6973a9482cdc9a08726fda8040b0530b312bc4b4c006ce1e2967cb11150d4c2e46ee10b296dcf0305d0b184bc94b9603678f9473e504113b56a0dcd96521aca56057162e2173e065b623e5c73b59dd5cbefa1a0000ffff7d62ee8b11050000", + "560d991b2ba79ffae00739df61dfacaa": "1f8b08000000000000ffecbd7b57db38b738fc55824f4f7ed654b809bdccd48c8745b9b4cc50a040a7edf0f0b2145b495c1c39b5152e057ff777e96ad99113d3769e33e759a77f945897ad2d694bdadada17f73a26517aed5de3c1148597bfe729990696b4fbfbb373e04d67f9d83d3beb9dc3bbfe2f4ffde18c84344e898b218504dc610fdf4cd38ce601719ff67f01057cda7f3e578aa5beb0a6fe6c4dfd652ed599e5b893d32c0ea9b34ebccca560fd0a651d043318c330206e0fc024201e71430019363f3f07300d88bbf60cc019cf48018c02e2f65f003861057a000e03e2be0470caca3d05f08afdfd05c011fbfb338003f6f72580e3a0c407dca9df1dcabe1816643dc3749691cee1e0330ea93bf41070e938ce2105d025814cbed2c93261c4138017a22411191800e0e514511cdce12c4b339fcc9204f29f7b6498f2cf0292a2dae08003821828c85391707677896f7d274c27d3946042b7e3680bd170ecc02b94cc706598c11dc3c0cb313d61edbbb27d6c344e0b501450c0cc308970360708dc49cc043006c9d30036120f79618611c53b099e60425d278aaf1cc83b69c91cafc93ce7249d603a8ec9a8738d09ed5c672919790eb0558a304571923bf02ea7b709f6efaec731c527531462df996678f53a4353a728601dc56eb79ee2d1f484663119b9d6960699400fcc8162bdf5f4b09f50145e02e0f352d32c9de65e388e9328c3a428ce01a485cba06fa9f200ee04c47d0ee02da3d7e73f0378c97efcfc14c04346922f003ce1247d08e06796f314c06bf6b70fe016cfb806f0942dc9b5e7001eb01fcffa609d7dbf00eb9a7e2f5c41be5811e867463567cebf48a793cf067998c5535ef02da6284214bd9f4688e2ce1d2bd0e94c2aa92cadf81771ce815a0c17c13c55e002e24223b0bb00812f339cdd767663129dd05914a7eea338f23b7bdb2b40b53f2cf358d6a338d2599d8ee779226f1b5124120b8922fbe340a782ebee525c6f1e806bee3e1ac609c599cf1377f9efd3db29b6e09ebbaaa8ac6374224c6784aa8f5c142f73ad9d94dd5cdcdb9ba5bd3d5ada5b45135b0946a44e123c719e228e96b6fbb675bbaf31c119dba71ec5643aa37e4725a8027b2cb9a49649bd9eac26aa837964df2e4576bb35b227e1fc18b1b4f956b797b6faa875ab3bfc68aeb72b52e75b7eb4b4e5bdd62def4d6c2d8bd4f996f796b6bcbfb4e5ed38c3214db318e7eea329a263bf23766e4d0091514214e0e52c33bfbf149fe3a5f86ca564188f6619e2e5250aa12d912f6351bcdd5e75bc14bdcda5e89d84199ae2dd0ce394e0fc0867c3349be02c771f7d5103572e9ddc5e783fcea9cbc1f99d475f2ce3b8b914d1d70f44d47d3455ad5f1034c1cb7075ebc56bf58dbd967daadfb32c513fe9754c29ced4674c728a46199aa884419cd1b13affd83f4cc7240e637a5bd9c433fd896ff1459826a90639c6f168ac77f90946f92ce3fc45aed286e8125fd0b84c0851867176916032a2638d29a2344d7599698cb33026239d809218e538afd297315baf97ced6977647608809d6a735ec3c0ac738bccc6793b91539d4a5e5f90d3b65595dad76a8b3f2b575c2661d13fc166597383b45a3dce5df17f35c014523f3fc8ca3f2b739ff853e73399c09073c77f2966db6397ee7d7f197a503febefd80e7ae68b781f19099a23faa08afd850268e72bf73b647e8ca394b9f9f33d5204baaf02fd5b1d399e667b5086faa6c5664367241bcedfa5424f1a44618adf8a0f74b67e055fb1910a4f090791074559d0e01a55a617ef0ab6d2d99825a33b6c65b8cf98f5905c6e0bf5a3af81f5a0dbe3e8fec378432db7a49d0d9edcede0f4b917ef330a4dbd14b796aa9621ac00252311aa91108eccc439c6ba4891c74b93a2d58c6b21525bc593aa8ef96f30914518d4f6e7e28faadf46184920467b717f68e5d582e5ed5348a466682e5387db7b4535f9776ea4f94c4d16b8e6a8cf3dd3493676b79bc99d47e652f6d9c85eaa731b3e511c898e1c6de7c5dda9b3f97f6663349d8e1bc9b4a9a554820916ec3a93c942d38fdb914a78f6d7092d7701b5a27f52bb73a6b1e2059f8b814cbdfdb6059ae651ba247962529717de006f7fb5274ff683bd18df3eb79de296a79d9f963293e9f96df4af9f124984ff386033b8ff234a3737ce9a452fe0bbbddc08e28c92b58974f757b8869d24cb89f96f6e9af5687c8291ad9cf3c96613ded5a0ffb5f4b51c4b8e5b87f4049620c7a6d94792e1f620b9f5fe72b16618cf15294e9729479b34d18e73ab309e176a8d2e5a892e5a8320a10bbfdad9d0a54a6951264663b84c97284d14310e6429a1612d2b2744b19e94855a8712673bd6dc597a0e5ddce16757b32a342d2738a4642486e5e8bedf20baa8b4af9e45d475f8ea50883fde914dfb8b0b3e57d8adbf6691be7344b2dd447cbbc7a2f3a854550142f472a6c8bd4167fa2719b875716d088fd88510d97772069d501c1592c2616d87934cb12e32b9ea0119edfad4c500b890976383c061576243001b43e200f617c92e563923f604cacf3ba7828566a63b160e6ff9e21c8970f41da6e08d8e122a7525e09256dc82fce70a87ecb34f90e5a4b35c64b9543b45e3543342623bfb3a7b6d647f212245a9569ea1255492c2f515284b4bd72de093a67e70a5334b2e5540fd94a573b1d3563ff3224779c8ccb0439008f0cce8bfdd363a046a3ccd2136e94e623f1c814e7763a6a2ce4a09419c69094c353669ba3630c5559a03652d591337aa6064c0d5ded04fb6636245d4e9db3f6d42979b5a623219f2fa3f892f9f360b61cb3e8a198b55e3d2a31c7614ad8b8ef2629a23ad5bc7a2b92cfe209ca6e2fc4fc5400b721760b7edf43f21a6fd503236b5e14609063ad17b56e7d17413e84918f964ffee4a1932f77fe7fd0745730b24df77fe8ec4e96cfeeb0d5ec6ab9c6a2856d320b8de79f7ec2aba5eb97bc5aba7cd0ab9756ef7ab574f1bc574b345ff96a59fab1afdeaaf9e657cb934f7fb554fd02584b970f817518e2a1b396aadf3be7b0bc4ab3980dd9ab3455ca1e9d1aff55a1fda975be5a6d74069fb6f0f83626f2d1dcbbacf132eb1b735b66eb697d547bb135de6c7d639ecb6c35c58faa4fb9d5c75cbf3aeb652163c21fcdbdf4d6de7afd1a1d98cb5692c0a3da3bb0f112ec1b3451666b7278547921ee948fdfbea60e63924ac27834f728ce3aa5e843938a51d7e4af176e2f0f145e0e976f2ed3876d2ed583e3ffb693ffc9ed64c5be9f2c3d49ff6ffbf8bfeda3d5f6315dbe7d5cb5da3e94f21716ca8689d651141932b5a6a018d62b5515142dea62b260bbce5d2defdc6851e786191a31d2eb541fc03a5a40a310542777b9def8445da8f7c5ea556fb41cad413bb4d4c5b7a358ff3a424aa1487c197c754534a0b78472f59b17fff295741827d878638ebf6a5a8ca4869ffabe8a239c5e846984439584e493b291741d47e58aac6e05c30c4db8d2aa4a18c4b4fc2c4acc2a8fde19c6241fa7e5f37686af627cad0bd00c976bee1a0fa61a5faaeb846334a538cb2f749aa97135af13b2f04ad0e9c4f98568160dd4e04bc9488bc7092571592e8ee3b798650f8e76458696bbc6a23f06750f9653f7b815755770ea981cca622a2f17a1a6ebca5e5cdb7b6bc75eed98ab1c6cb583cc24d8f983aa7630590ea1cab1533b662a074bf53ca86e2d73aa1ed5bd66bc7c36765acd8624a68e787168def8e6144f2aaa570d58ee2cc7f2b6dd8ed862935e4a2d0f1ae0dbe5a85fb642ddd80018eeafab7b841df91247636b679bb4a95942227ca33e4c8670a1f2cbe5f26e1db63fa3caadb1531552d5bb6774a322eb3137eeca9e9e9ba75e0947ed76a5c0a785aa4d7d0b6da99373b87ca84eda7319ff77a4ff038ef472e62ba2c80a49160d67b94dbb6c5e3b66fe60b751dbfc5ef43042b59ff7f696ea970e6bcb55ca3f594ef99f5b537efbe3be1d97fd793972d7ad902bed543afa9e738cf359a28d7d46e252f2bdd795ebe5186f3d0063a3ed12719958c53fa7281f2b662342140d508e8ff4cc8fa4f95874641de8ad46b4574c1362eced7c99a1240f9c9d77ef37f74f1c88bd8394aac483c3d38b32e335177064a7634402e7f5f1cee6e9cef1c5e99bcd0396b98ff35ce4ecef9c9ce8e4bdfc60962481b3777271f07e7f5fc217690cba4adc2361328b701e387b075bfbefb777788b3b372a75e7a34c2d5c747fefa2e0ae000056bbb29f5e07cefee10756f3842212a12c0a9c93d3cd83edcde36d33f58d917ef18667edce928425efbedfdf5749e92cfb2370760fdf1f5ffce1146e767fef66b68637f33070364fb658a56dcc3eb6774eb69cc28defefdd98d7e046e2a738d87281cbe805c003f1c1c81d9e62002fc4f7679eb92b3e4ef8c78df838e41f47e2e3927fbc151fb7fc635b7cecf08f47e263cc3ff6c407bbbfc21b0c8f307c8be136868f3080fb226fc40b1e8b8f2b8913477a53a44d59da2399f65aa40dcdb42f226d221a1169ef455a64a6bd126933d6204ff820125256684f167a23d27296f656a6bd13698999f655a4852c6d1b8375f6116bc87f8adc4ce5b2b48f220db1b42399f6bb48232a8d7d50850efbc0aa03ece32f03da1fa2e627d5e227f1fd8751e42f91f4bbcba6582461ca933eba6cf8451215497f2a40447c7f55df487cbf53df99f87e634c402c923e1849a1487a650c7f2292debb8cc844522e92bef00eeb82a9487dad5a9c89ef4df51d89ef639791b2489a88a47d556428bef7d4f7547c3f52df57e27b5b7d8fc4f75bf53d10df47ea7b2cbe6f0c02d81149bb3289fdbe50c56fa9b907960aa32eb89bf38f8041cd9301775c8085d1bff45e109398c62889bf628bb7013e8901c1d79df7c7fbcab54592869c5bf3d22c1ec5041866fc5e9ec421767b70b55faa8e7a61126322c05c7ac8bd9b65b1ef385e989210519742e7c92843d3f197c4010580b2951376529ce0ec2a0e7180a182a23d24cc725c51799c77ba503a4b08584762344870eedf496547ec4dd0252ed5235d5014f0c043ee470ca5fb8bb9c6846996ad255e1c6a4f153410e00d1b301740d20e0f58b1eda212ad844202ac084973a587a265da423d18b9aad593c231b4e228d4fc7fd8fc8c69e3fc948afa0f188c9aadcf038662ceca478d43661b0779cd6e3d0e71e46309eff72524f92d30f316c3d8388aebcdd0617e194f7d87e06b2708022c1a8b596376c2f8616decd4db98d3506976a78283bb0c0f310dc7ef667c37f1cf9c7274cf0b78ea21f70b86eaa86b68463cbe7f6733ef97362355bcbeb39d574dedd86dd75bd3d8174d62333b89550c469a3bc120fc61c7519ac02caefb69615d6de7b31808a54d402c26438b41fdd5884fdd466a311c6c47c96ecdd67ad6b47a939a3c629f3c6e09b818416447b0e2b3613184c80ec1f042d1ba5fdc1785ead3c4dea79a3e425bd858aca34dfbe65cd3a07a20d0d776a086a6f203017e680068a86e3f10e29b4510bf09c7777688daeca0353838b7fba91d43ee7d5f1b5b7a20e24b5bfad3de52fd0dbbfd09ce9fad7131df70757dc9e68f2dcd737ba1ea363fd73c2dcf12c9787bbc9a7b275c92a4149a8bacea0784168627335edef4d4b3e0d8b236754521efe9519ac4e12d3bf5e9759a5daea624b9759a1a527e881edcb151a56362b469f10d1870274d0fedebe05bfa2a5c0e3db4a9e9b734257c0c3db4a961cba6d8b5f4347d4f223c8c098e16ccdd8987bc383f4a504ce4cd96820d963841d33f59a5dca5107b3580c017f536b30cddb21a9495772de558c24a10d00dea5fa571d4e9714772b870c1fa2d55f75991c317d7258587149e50ee50ee39809f29f713774201bc16892f00dca2c11c93ab64aba127cf560cdc1ebb81c8f41de169700d401490b3de39cc0272d63f87b1ade24a1fc0bc52336635d320673567417ed63f17528e007bf235c1e36f787c1ce6f79ebb3c0b7decb133f4fede716088b8c73a1f7b6c9d1705809387402aeffc02267436e878361904349b6107dcdfaff4217fd4f1fb50aa6df58ba234797a987bc36bea2178371da734cdfd090cd3643621b9df7f0e53b295c4e165cd3f63e6528fbf60023873577a80756f1eea670e95bf06e47ec441a5797529b0099cb1c928544b4719beaa1641ab46f601bea1b5ecc72c3b9c651926748f6b642118e787534cfc545513e9f38b500a50d229266e7486cebd3c0ba173314810b974402187f8e5cb972f0b000a78da922cef8abf932e6114dc52af7a5576d99d9b86636f8a3234c9bd38620417796c2782c32012ce20e13488bc2445514c46354fa11c899de1108714b8c640cddc2980936e77e21996bcddeecab0dbcddc4a2228e0d9e4dc5a38dd185a3c6eb2945df93a222873e84d709ea311067e13056b579a7c669c9f9f5f5d3b7082b2514c7ca7d741339a3a4561a1c62d0aefe4f2f351016c2ddc327acde3afd8bff59077b2f7d7cec5fee6f1eb9d0214f080ed4d4f9ff600bc60bf9e3f057057ec5c1714c01bbe73bde80378c47e3d7b01e05b5e61ed2580db22730dc04722ed6700f744da5300f7f9affe73008ff9af9f9f01b8c97ff57a60bdfa587386bdd7591c05bdf3c0613f1cc892f6e39c06fdf3c0613f44d2079424c1da79e0b01f4ee15ed2fb7bf7925ade2eceb0d093ca395025b563c9e5ad8d0337afb7bc96b889f156b4dc8a63a82e56c15386662974d46d49295cf04cb5a8c472857bc8103da4e593c96b3164bf00f8450c541fc0f76278007cc57efcb206e08707497a8593547a3bc5f26012097ce9608ab30334a9e64cd2281ec638b3261ef28d3eafe4a596347e42cb14bbac598a994798eea3019e67744bb95c7e1dd370ec56f0007721ca7107c9173d9f064e9c3beb830ca3cb7599a59ff6446e87a4b456c278e393654622a543c788d40aab373f5932c1796e2b26de005593b32499c7ca2c90525b21f540c84bc9dfb522eab59015c137e12c318a447888660965594e110fab43170481c2f2fe7e3e47e20748e038eb38c971271eba72ea5e51c52509f212d30ca4075ffee109f5b2df7a62feb2a0cc5a2f7f9ef5cebd844d7bb7eb9a451ab8840e16a5d9822641e67d4e63e23ab0e3808263480227e7622327080246eae9b05302dd287ffa4653e5eb843c1d4c364491a5ab570f804ec701c6e384f16508754798eecd73a8aa23c6ebc6dc2284ceaa01df9c1703d5b2a11ccff3dba53f693da5182e9e3b637084d7710a8c410a68519cb758aa7289a26c34e3fa879a0aba5db107ac0481ce3ceb9d6f981fbe4352821db1a4c56f5f0ed701fbe014ef08dd219d732c3e651eced364c6efb73abf4c12659472892eb1ab1244fe18e56a675625dea0bca3d244a1387f1be7b989c75ede5149a20865977c95cb6ffc229d0bd24ecd4ca15b65142935657419e3209260e4e9a381c8efc2a4c0b795ddfa87cf97da75eb9bb064e9456b2a15f295eb3be2cb29e677e75a359da16a1ea4b453af6deedcb5fa46968220933a2cad84a137f41a0095ae6ab3ef5a55b9c9d72a8a54556d2fef707d8fa2bef3cff7d7acc67a5bada70f837a73325d37a80e8a62ee8ca8cfcc4db5a6fa6654a42eb4f00d6df2bf2ff57f2059b778de5f1fa6992bb6fe3a79c198bff58a6b76066018f4d6c35fb3f5f0f163109f85e706c985e77253b6f9f177b5ea9174e52f7cf97b683a4d6e196bc14a9dabad34060000c10089cd05921af7e3b024bd636ac225735ccfd9392475768754789d05310268e17ea000be2b877531cbc6e726f840cbb348ee93268725920af8f53f70b28ced707ecaaa990f9e3cfe218690fd5c36697f7ec7a4199856a7cec828e0c7ffc0095467d5fcec19397ff7d4fdfe1d53a7d0acce9b4a2de01f8d93f6a34394e841d5bb8ef502f7fdc3295ac1730d606870304110e06ed79d9f56fe58c83920b07c663e7dc7ccc836cc69e14905fceb7be65bf7b036e33abd8098fce72d54cd1bcfaf54a1c172a14a7ce39275577aa63a187457fae6774982ec285e4637947cfb0ceb9e562758271790fc07ceaf71b7999fe131ca95f9c13f6072d1774caed1cdeaf41a1905ccfe0327b8bc97cecf6f9c5f4ccacc874fafc30d471ce8ccb2c4818e780677464a6b4d1e870e34f99987cd79f81d735ef6bc3ae5657a0193ffc01997e290f9e92e335a4db518ccaac0c0d5177cd890adefe88d258c5b78631975d16e2c202ed48bb0e0f91572edc335f8143e83cf4b1a6c712bcbbf8304e58857e94f261630fd4f24be52b86621c04ae637ec376bcf7a53073acf7ee17f7e5ee37ffa3df1f9ecf2819bcbec7b66b6ec4a6d76cb8ca28cec16fd8da2d00e9bf237d4260be55909691285f2ec94d8a5a03c1393261128cf26a441f8c97333322ff7e4197f50c5a6370840752983ed6e1284f2b25fa95506caf33ed2a2e0561984c7dd5b0370488209f190970e4f6fb93dcfb49e70554f1891f927eff2010a8b7780bb3914b9c98a7ca6b66b80ba803f4eafd30075bbc8abf88edfa87dfb6c390443623cf7943d163b826eaaae215ab69375bb99573ad3df303f440b579516c4f471cb9a127c4521b6841d77bbb127fdcb6fe85f02ea94d4dea0e41c8529c9d344c669749df7648c4894e0a8c3459531e98846dece121a9fe00487d40130acbd5987b527f47660385d2441a979e09e9dd7150f129be2815163a50fe0a45223623586c184d5980693b3fef97a3c74b127ed66f6a2bcdbed054190ca0da0db5d190a92ba0aa827ae55ae55fdac84e0a9b73f977a71040ab07e656c27eeccbd0270cad86f6dcf531f3122250a1ecaf37844dcbb98e249ee5398f3c1c1d11eff4e214b3fe6c1457156578091fa867adfce85fa05ce8f321cc521a278a3deee0d578741218dafb06fd61449308a7334487054c95389f012dffad88b23ad91433d31cffc0b527c4395ae1190b15919fe1a1d6b075652633841b74b39008fa6fbe935ceb6508e5d20147d0ed93c56d2c16f41af80148d2c4364cc1cc78815e34e868eb2749afb772939c693f4cad457834450020ad2394aa80cf94a109002accf5c0420f65222bdf8215030c682cd9d20f28a2e5caa1ef2e0cc4d2bf55250c00ce7981e12596fa507a7e934bdc299c4769ae631d7e5720629a5e9c4290a880128e0c0b23756947a8ef110b8222e2b69d2f6c92a4b88b0251407195b427990b14597da6a8aa30fc059a576ca6a47c18cd59e0433b600f5493c2c518c089b4c948d30954f9eeb139702c3375d59f6c4435e98a4046f633c7523b04e8d87d40a10588571b51086601a160218b9e02eee76d95c6d2112e2c4053077576200272e632b40b14475097b388a1957b0c58ef72c4e49b7ebe66c6f8013773e93cde8d97cf2b934450ce6b3361c198756da22f8ce6614a98f6655bc79bda7f93247d41bc0bb39ed3bbd0c462e28a0dc4b6298b051f4577a057464eb367dbc2f421f4fa8c6c5567d3c03b870fb3ab0a952494dac304179ce185cdf896294a4a3d530251413ea14d0001a0fdd15cb68370ecf6b8ea67c8693ddb161f1889793ea60c304dfbc42799cfbce242606229287f6b1dc55bc506120596d360e634446d81f42794073b5583fe2bc4d0140e1825a7f041bba1204a2cc92be08d5b60a801eaf5b63fae539d60c6da10ea7180ed5dd39e06537a7f56eaa92d6ae96d92ba5924cb75b4b56d7ce3bbb624c24b719e525c1d1ab23128e9f4888d361e72bdda8be01f995ec8f3c5bf37d95bc3f68b7eb2a8937800e97c7b7d23974681aa58e4d1d7044e01d9b5e1f43755cd8ceb8486f660dfabc71244e6e41d25a2198d1262687e40f7cbb9d5e1376ee946c8e1f2dd3fe89a302149ac969a2870c0f7d0a4baa48ebd47055a706de6c018ac2e5e4600f6c5e5bffefa987bcedbdcdfdc3d717bb8787a73bc7adb68df96a179b5ba77b870727b6ea8d5b22db6016101d636ba47ab07c810a74828c816e0ec1babe92926ed771e45f329b0c70c6bea42e15b9bf572d047a58cf7ae782b546b6d3623ec9e3aa512e909af3ebecacdb8c229def461001c8b763cd1d8abd27507b4f010780fd2be0980467ce5acf81ce33f6df0bf65f7fade79cc31deb1dcec656083c0044f34c491620c656c401aab0158c71ac8feaa971a8f33e095a3b42237c127fc5ee146539dee3ac789f31ea1a582adc694c7196c7397501a42e36b267ac2d07e5215fdd6a43cfd38c0a733731c8aab91333dd75229c870ef01bf31958a3ad88b5552dfcead6ad7791b1dd46a589e063e7a691db381b9c18b88bd5502f6362344379e8457890ce488841e58e54e2f88e1b92d02a6757c0e7bd1ebf26a1ac33653bafc1a1d5df67d5ad5e6a315d52ae6eacf4aa46591cad5ec5f85ae85db1ecfd3857d7592789735ae67c405aadc7c96f27833459cdbfcc50869dc2082eb5bc51aee66c6d6fbfb13da1f45ce8ad52124a14e7d304ddbe4d23ac4edccaee8af4eedab4f9b04b18526c970d6e100468de66c2b04f4390cf7b3969db6565579b9fc1384c894fd915875fec186e7cb7af30c7f5fe49ce06557b4517f4ea2d3f2358afa8da8aa0c1d551345a659748875f25f7b68d5231a1389303b1d283f3173addaa89083ba435e5c36950c26303224018ab861d40b4b4fd58049ced1b6cbb0e8260daedc66cdb70b989bb21bb040bcfcb365cf93ce32b869ef39b28260d9ceab6e46805930ea7090af1384d229cf9ce09465938f63ccfa91ec4e5f6c60b9ce26c521eda299c47814f94d50ee751b5f9b61cf398940de6525f5263c565264738637bfa8390d9e3c834d5b01ffb8c8f894763bac756c592fddf095186e9ea6ceaf8f267945e1347d3d0ac80cb206ce621261117ea3adb587fd87ab32f0ca7e604048dec4b7953abb4feead606fd58df1e6a85addb175eb0d085ec498d4124c54542a8c4361660e5f30604962e3d64bcdeeac9e673a2e4b7737f08ebec8d9f5949607331095cb9766caaf63f72d3f51d46c70efc3ccb693cbcdd1254ec3b2126dc3b80b20ceaf7a637da3868e47286e99670339267005e363e48fd68a5258801005eceb8ade06eca2de3cece214d294a8ef8d7016734bdb79b1f2f4e3677772ef60e4e775e337ebaf955c73422a14a333d4c27d39460423fc449f2369d119b292a7fbfc931654d4bf57bce0f4b26872fee957ea960af816ec751b3f5b70188778ccb53f97a2b3fa57d8428656e26bc9c99200d32166359a29871696483e90ce67615722e57045c3615f7f7c687c7a745355ba6c8ebf9af417f83ad49cb8571b3bad13ef498103b045f9ace6e9ce5d429b9fe7e10040d13d47c3a623d6afd06134db3c9a30c5fc5e92cff71ade2f97aab02130e544c154b7d35a33425b9bb0cc5037c630e8a1d3585b398ba72697d2bca8fdb0cde3ecaff76ccead5185a75c23746b3cd1ae8cc1179957764b799163c3111070a2d59636bdf5bf593716da0a818f5b0f446df47c1cafcc372dffab0dc3f07f7f7e6e77a3c747539acafb16c4846a2d54c3c755977348861c31e06d6f1af7d2e8fea03887f23c69cf1543341ae851c53d1140190563647f3f6ccd85ad3a8a544d166f7a49f546006e3e02da2632fc471e2e227a40c78fa6bd0ef6db828e8c32c88814f7f0d5ea8cf7e0ff8f4f1b3df8298a5c4ab2f4511170574f539cc02faf81980f2109367d02d61879054c378dc5f45c0bbc4b7b90b4013af821e63b61f9407602cec2d68c139f22d75e20078481a6c3ca9be43362a3288fd97dfd00ea934785503afd8eb8ab1a649b97d915439a59ec97215d631e09c6599f1eab602b3c2bb05ecd867a9e6ed51de7de732ea75ea32ec7a06d2097c60b7d8f11ff42095576c3d04fe0adbe157560cf4ba5dd7c45fe8b6016b07b4169cd2af528a70dcbb01f792e844da8991a31d4d3bd0913ea6795d12a513677e3074336a50e4f51fcacb7ee350107cdd794721fb9313fe6726fe20f127147f3e89227f8a3fbfd373d396f4901ae6cf2d4689a049e328f13ce8082f0dbcef32b48123f5c773e1c5fe0163d0a6ef94d47ba4541d7e48771e88f9128ceba86aabf116c84e111d3721cbf31663d7623ce706d2b0596f81a058264bd690f462ae46f6228ecac5a1477bc679eee8022d1bf2b60b442e82bfd45a38af5b4bb7dab7966f4f721c0b73b00c006ac4ccbdb0a191b3deb97d24b5565ee5289a2f09e09923f8183e8ed03107b5c109acbe53494f54bb593ae1d2d623a5e7d7ec4533c0153683726c06752251c940482774c128ceba5d21bb36d3eeef5dcbf1a3b30134da6363681b602d851745b828deacf745a3581e91d4fb5229a3019be7a5b8c2bad49b560186ea2e3d7754f1b703f3398f73101bd40bfd33ea85c2130f0a567a300b56fa3056fe8468767ba79442439804e4ec848b9ad9599d219a66e72e585f7151e08641e2117c43192712a5048375064e209407a154404883df4f0e0f3c3e326e0ee02c88889b8a37def5997ced4965e159a90891ea9fd56358689dcc40518488f12711b8cb582fe2202a86314149727bc7fa80eeefd9953208124fd0dffdbdfae5025d321eba19a0e32cbdee30264933821374899751a3e2fdcfceaba3ef0dd36c0785e38abc58f0c177c5ba347da2fc8f563155ea1a86266ba91422a78a8fa37040100f6f5d02d6a52d3d526f1134b813246f6e325012b03f4fddec7235f5eb540cbff8351a85b29079590d7d5c288e77977ac8c08cc23b4cc234c2fe4adfb875541dd8363a2fb8b3348f46781e8329ce2eca9c8af494f5b2320691eab29675ce8fc646ec6de6a11f7377f35552301c293792c15d51b9002ea406e56bc454f554dab6f2c6b48e3d9112487b6aa2347a2455f825ad14a68aa5a99aabdb110f57a221aef8ec63af2c1864de7e7a6d02e15ad1f532cad3bf5990eb4d37157c53292a74abeb65458c804adb97f385d259f6476194317588b167d816a995640234348ab157daa9d88a0afd54ecb1bf2a7fb1be8059db54b3e04fae3ae4bb8275d63bf7e2c8aa738b3d1d67be5aba2800c41572acf98cfedb48b254e356b2ead2422f70b8db34b692a47ec31c9a737ebeff3644bf6fda0c9571ec95c6a53f6cfe5b429203a81c239c34ddcdbfd1d3fe2cc7c29955a36bf25245a1ae1679485c6c5cf8415dc512cda958ae57c5074d4ff1e2d4e2e787e01094984b7bf917c70080a4a6f2188375e22de21e5d0a60ee1200e365c5b88ea2b559361766bfeb777d6a788d13496e0c38eb15218aba5df1977b6e13d91b73291ebfeef9bd45f7a1b96664c6e2c664a1b926657a43c3e53591ceb9c48b17f44f97d8b02536f5525e9f2b1d1469cd7d93a606f3490d8d185207b39d32b9b129c37ac29a5a6b50ddf06a4608c73b6f0fffdce96cefec6ebedf3fedec1d74f6f74e4e3b6f0e0fff6037d81f4742cbf45e4c656aada95f4045fbe338a76976abd70058a7721904b1676188b98a41b56a86f943bc5853024f189bbce5b97e5a5b84249e5febd814bb1198bb9835a13489d3e0819a9d3b843fdd5674a82cf7cc39346855648921ad893573a55d51aa0fb5836bdc089741ad6859b5845eb9d4620bc0576df11497eb3a0843e7a61d1cf3da5c02ab3c84578d15045f5c870451400c7e2126d11e89f04d4951da0682dedf63a51ba3b80dad2d1804012ac0fa6a9ffdd820b5db26067e997486ceb9e30a7dd9aeb43f6765613cf790e6f35fa25198a621328de1460bc05aacd104e1435653f16937fa1a79da8cbc6993237159090203d7063295ea0d312f203da35ad4869b3d83fa4ac22f76504b5d67dc974b5b96299d9ccaba583e854aed0597c2d8f6de7849e09db9a2fdb8a68653f6cf8f2bb7cff2d1ca2f957a8e2a2e71174e80317092fc0ba0e8526988c490e2c9344114fb69a9756f38cffa5c55b250eea98927993df7ae645e7cf370877cdfe60ee48d51aaad386165c036f1fb7bf9a37aaa4bb5faf578e8d29aca9e94512f50bcd753e89c1e6e1f3aa0010aeb46339403d360a18dcb5a878e318a1acf0587660bf2c60ae323119ad3aabf6416e36274bbe60d1da4d1ada354912c1cd348ff6aad92c4b1bf53666df6ee37f73de24fefa9ef3cd14d3f317c55c611901a56b8b436b6adcd783272e09cc76d5e8f5d682daeb7f5926f18aaefc599350900d7c96aa0b20f28491e40ab45013cb5340b784d2c7121e7a14cbcb0a91b1346c5f80649533944c7668f1ca89584fccfc4aa37c101d4eb3df1e3c8ac7b4ab9c7ed2daea3f5e23980a7dc8af9691fc00391f602c00bf1eb670077c5af6700de10ee9579970078b4cc3eafa6f5dec265f70d714179242f610fe5b5b21e0b8e759da08992073ca99876bbe6f713c2d6ad796b7f521a7abbfaa3524c1b196b0df3029ec5bad173db8c9c123625c3f80647a7e9693ae50a8a0fe4520f380c94c423e23b091e52ab8ed305512a8d8bd68763ea4e0da64f57075ca5a5c37e4e62124f50e214d0e171ef1ceb3adc52edd832232f342898b7984bc7d74bdbe5bfe33025ab3cf2b223555eb6aaf54422c751007e101a4fb4efa107a03341d355516f294ea547a05648996bfb01f8e028464b5129dd83b744c67472f8006ca638cb53b2149d23d33161bb19536efb1e3234e9204e705b02d20ef75ae1c3a58b0f4186a2d1521c84230a1b069555cf95b4e78c3f51f359d546e79ef791a63e5ad0a9987384ab32b03cc3f8a081e129f7056eebd86e8a31a522feda0386354c970dabb0da7adbee3c364e75c6867327e9c3744622cf0105dc66a7dfda1a808fc4e1b74d00dce3e7e50b00f785fb8f67001e8b5f2f00dce4bf7a00be663f5ef401fc428263a29b754b9df64d967a7a785400f8fe074b798503039b90b72a95c20c3d2f1fa7d7ee9dbc3bf9a6b37228e6df7fcd50ddde3c78bd736c3ce5895636a76992a43b0cdeb736287f35b4a6ae39af049fb206e00731dc3d00df90e043c5abcabb7ac2d77ac29fff1cbf2b6ffe76bf2b5fff16bf2befbecfefcaf7bb5c69f6b6223893bfdddf4ab7bb92d69dac9068898b15fe4ac65f8bae6a0e557888e620dd48b909b3efb8076947384d895302b44d776b872bff4b1dacc07c9cce92683bce27719e1f095f215c7da0b5e395cec33dad90f418e7b384e6bebddfba77ecd812daf2692713553ca700cdce51b0974adf27ac8070924241d1ca0bcadce2104ae1c338493422237e93fbf8830f0f210cda8962caba7d8a6fe829fb719c5e2f50c5928fe8d24e541a751b0132ba5d9706d40c2ef160b94ba4e5245cb5efa142827d529d4cecc5f98eb0ab92dda2150342d90c9ccc121a273191e698caa5856da5ab5c29c7ab9b10b0a1dccc306a116dd840ce225c79256f958214dae254375f568687d22f812d30d4b46a9339cd18d32a6bfccd1348e7868ffb397a9da5b3e9770fe0b6b2dafbbb062e9f22a27bfb3f335c6fe82491e764f363ffd2854bba5d9770bb8a72e12e1bddaac314ec89936cde2bccb78c3af9c78e778533698ea4fa6fdef5fed4ae5684aaa179202d9d012e38d5ec8b6fb03296ddcd7483f78fe9fe68aefb7577330d5d5fa8a3b3c4c38ce9554f0c94bac2fc2eae304f01fc8304bf57ae259f6c22558349759c566254c1d637c54f7791e0ef6122f8fbdc5e6e3fcee9c6c25cffecbc8929fd834011b2969bdb2ff4612718badc4ffe810ceb426e5533a40b593ffeeeaf390298c9d76d23b95d1581345fb19ccc4d778a3e5ace4d8202fe2508ef198018fd586eb1a2892864b2ef336b2869adac2f2c91d5aba0f35f8e545b963a665ab18a11bc74c5aadfce65f008abeba7fbfb52ccd8a9bdff9c435a7bce27002ab1f0461929cdaee252555f1637ecbfa7af1fdbf755a0f17776f4148dfe9e5e1aee7adbf6f6148dfe1d5d9512fc1fd46109eddfd86df5c2f150922eb16de8ba44b8d2fdfb7be393b7bfe1fc9753beb61888f314d63f67830665e841c61c72f32ce390a4c8a6ced0f0b6d670eeb33c8fdf156c4e02f9ddef005f37cbcfc5655bca231d25fe56b28a92f975848b0ec777588ab3d00e3b25a7e968946056d2e5b6d85c774e03eb76155e169eba14af2bdd966a970c45e36ed700aa3889453e509abc9a48870919c687fc09cfd239d62ba9f4a5ca6d738f95c2bda835cb35955c2c632f5cbf48b739ec52dede098cc058703f9deb9872f73fdc967fcefda239468da8fc45ca71d81aa7698e3b3cea36f72a94127e23952739eb2e0f862dbe616c78e5456188a7d477bccfd311f43e4ff1c891d3ff0d385549339f8521ce73499ace09bac2cba89095d1f467591835ca619b9baead896c83061879f6c3df2446a02d1ab80448d6a99da0ae2a63950af1d76beb03910369ea53e32d98fb56040524c8c24c3b045f0bef44b580de768f7d74b9b3be52ce6c537a482bb573567b16a4ac7614a4acf6c4569bf1f9c34acd09ab390d86ace655306435478bda1d546a8f58ed713060b52f8301ab7db8a8f649a5f621abfd393861b5af8313567b6b51edd34aed2d56fb203865b52f8253567b7751ed9b4aed5d56fb28b861b5df0637acf6f6a2da8f2ab5b759edbde011abbd1f3c62b58f17d5deacd43e66b55f079bacf6976093d57ebfa8f6ab4aedf7acf687e015abfd2678c56abf5b54fb6ba5f63b56fbcfe02babfd31f8ca6affbea8f61f95dabfb3da9f823f58edbf823f586d8c1755a7b8521f630680e080620602f11ffd73982d04125781641c488883980349f80fb65e160249ab40720e648683940389f80fb66c16021956814c3890290e861cc815ffc156d04220832a90110732c6c18003d9e13ffae7f0762190cb2a905b0ee41007971cc809ffd13f879f1702b9ae02f9cc816ce1e09a0339e53ffae7f06021908b2a90030e641707171cc80dffd13f874756207705806fab008e38806d1cbce5001ef11ffd73b8b7108bfd2a903d0ee41807fb1cc826ffd13f87afad4056fa007ea90278cd01bcc7c1170ee015ffd13f871fb0cdbec39ddbf6017c83830f42eb12bee33ff9c325fcca7f4b9d65f8a702a7414907f77f601700f8712e7b4b3cf4f3ecd227e8ef989f44da298ea76ce8baddb76ef905e0b52b987f002f5ceca1244639bb38edbbd8d30e2e00fce2620fd33189c398de02f8c6c5c2fe23bb05f023cbbbc517619aa419807fb9d8133e320044988d0346f92ce3876b0e608279f397f882c6ec3b62df21ca30ce2ea4df6c7885b95f7b4ad3340770871b68c5380b6332ca013c61dfb32c01f09497bb8e29c5198037983f99e6148d32340145e9c2ba49afef1576bf62362fddee1b5c35b3e97657dee16ef71176eb39a080676f5ad8946c62771b7b9c7fbbe0baa0f052d3e6ef2c0f407a7f1f33522be0d93683b842bbdd954cb0466ff0fdfd4abdedfbfbf70b9c94372bb7afc743f7dd829a166fda42c3ddf34c5fba8cc69451397f39fe0c25c1f8075091947f0435e1f87b50538dff1a4a92f13f404d2ffe9f50108bff099a84e2130c3595f821861512f167184afaf0a7186ae2f0c718ceb2c43fc4509285bfc578634913fe2e867c42fc7169fb797fef122f8ee6f9340049d9f54f5873b5ee27bd31ec71df148fd8ed8f5d845dc321ae76d9a41ae2a5ae3353d04b00f77ab0be0ea43a08f1a619be0a087771200dff7a7e3c745f611eee40e6f7210577a250f052e84614fa86cf539fc33fb12b220e759efb28205ecea6f611769150fb9e567717069a57ec3f330dd95efa55b0fd3efca8e1f6fb7e6600ce6a80c5bec4ae9cca508b0b0f2a6ab1fac66eafcc264135f6cc5738bc3431ecbff0d5a0bc80c4a3bd8078c247431fc0f7440a535d96a320bdf45f71250cf1b9d6f3b9b20a26511974c9cb693a65971648a4f4f1ac0ffb2fcecfb93ab78c22c66596da0d99b14cfe3268e5afe5b4a216155d4029b84e2958741a37510a56943265b7663e70cfaa94823d34c86653ea3a52aa2407e4995fc67c61d55ec05bea7d99e1ecb62ae677a7b2c20bd62cbb6c7152005513c2aa505fe3f2b21d2e2ffddfb16b870425a4fef30a39acf9aae76b103372c03672c006393c2ffb2b2a3e8791dea8f9fe1be763b7ff5c95ffa5423efd97f3e4834bf2c106f9acc1fe73d8ff6531117d978a652530c8caca6c416810dd451520448a31acd28e167142e62b7d22f0aee221b914960bd753d280e63a8ee8d877fabdde7f3b8def15864490fbcefbdf10cea0eeda5aa7fc851b269f938c9a88065fbef37311a6c96c42f24e9caf6ae5910e4957f3290a6590d0d6501890314a869d08531427f92a3f2e97f83b95c637a6e6869a6a07e659e81fe39613d68485f8bb040d8ae09d6ed8dfc6900b377d0ab58cc9cfa02915adc49e705732c597312a3c415627e89f9aa60e56c471569525a960a06c92a4907e374ef0314611ced6899712760dc024aac89336d9f92534c01813a97f1790fd44d166be8d287a7fbc2f5ffcac6250b33391eb0ce53eea34f844e57aca7531d818f33b8a75f4ebfa4e9914ea7faeba493fe04b7f5e29a35ce0d70b16f8f8c5c390928a1a3ab8504ae807c16d3eedf5d85adb94ec6bc7ee15bca14f07d53e49208bbb75b16cdf6ad24958d6855dc5775bbb20c5b7dce1fa18a3cc746ebb92198af0471b86e71529f36fded4deba2b47a080525bde5fe9d97b56b194ac6cf4763b41c33cf123f19a3503dd3b7968bd52378d8efbe9d3a74fab6fdfae6e6f03f5a0b4575bfa7276f60b50822ff59634d01d756551705edbe15866f90b771150d140f2cf9ceb712cbc652628bc74a083f298cda9338ed9e4c6a1736e62b4b0c33bb7b8b3c52e4e0ab73fedb87d6c0d714b5cca14bc0f76786f5ac37bc3a9b3e36ebdd5f3f0c90ef3afd630df1a37430594603b54845b83dd4597b8731a9730c30698497b985bfc9edad9e7f7540577d600376a0ff7545c7715c46903c4abf6108fd4ad59c11c37c0dc690ff3fdf1be8276d800ede4017d1677780571ab01e2697b887b4a14a060ee36c0bcc1dcae07800222c495599e0398b15fcffb00c6ecc7cf2f010c7fb07a0bcd66ec3ebcc04b766b1fd91be687dfeff52099afbc66adbc66565e3bf71dcff3ca57b90dac6ad30dece5b38170c2e7f620058f898f7dc7d18ffd8cd939e11e841b9c707d632ce91efce691585b8f876e9c1fa00311bf6a37491175a5ba290600dcdfafc4f96e4c628ad9b7bc916e383a6c39097aebf8b7a0df5b7bb60ef013fe0392c78fcb774b9aeec63738721f53f0d8e9388fb983b11989697e46ce0d8fe85c17e1343d8d2738a76862d5345632097cddd94614bb7dfcf4270c3c9aee9d1c2a2559390b6ebf0f7f0195c16767fb6e964eb8578046e8d29d2bde700e52ce9176389fc63de209e73a4ffe3fefa7b37ffdeb5f4fce9f40c729dbb07a74d77e1c94c4b1b72ec64d7702038802baa1bf29f0d56f9805c81b61ba3b4b924f18652e5825d56f1df75d44ce2774ec82df90f1717f5fc90accbc6e97e76da35b5589ff04ddae9bad067d0033ddb7414c8f1bd6a2240a2dbf72f1933e7e01f4c4af01e8742678840631cd3b539c75c4643ba61a6b194bbe71d6f16fc1dab35eb78b7f7df64b6f437951fc2d78f60b4ffc79adb7a1dc26fe16fcbcc613fb3d5654fa4864642acaaef55ff436b43fc4df02f1fdec0fc5ed698d98f510095a0dce9cc12d658cad73f9ca81ce5bf6df6bf6df29fbefe895231cba2608e6b617f01079321483ba95954f0a10b33c4699db42fc18948349a1d3b9c528cb3b691299ca3b468d0da7130bc77d1da1ebe3f88ee72c50f340a816ac8647411351b17082afb849bf9f210f7987073b36f6b4346bb74930cd5ec65125fc96cee84c850b0f762a09cd0e2d0519a0f07294a53312f16ba4efccb2c4b503d72f0ad0019c9e6a4a157dfede5356d06f3dcd3ad173f770e10574758008c159477e3d77d87563f3cfc3e3bdd31da7755049274459b49a0beb32eb352d465ea8af0914dfd0c32b9c0d93f4da777092c4d33c66972b9d368ea308136eb76474533c62710fc5360721f21a55bb3cb2c65627338aa3ce2049c34ba78044ab3c7d0f14e78432028e49c7a960293c3df28710e808d2cd3d87f319a95511add9af4ea967fd5d8e754a30dfe559676ed6d9fae2e63b361f76e50a6aef682647a59b19580a7a44dcab6f72e4d3d61d90e1a8a5ea846586fe16272c15df08da934a8a967a613136a69a1b1682b81d41c479d9674f019cb05ffdfe330087ecd78b67004e79d2b397005ef15f3ff7001c7196770dc0014f7af10b8063c46dd30708c01dc11abf00f0f687eb79df0ea436bfd0de6a0a8cc2f5d8a43a9774ba66df4cff9fa91ecacb57b6d2ff071c004d11857a97ac9c4bd31b07c0242658dc72fde7b06c8bbbf373a48c928b594460b398b00aab626730ca1f69454315e4accc3bc6538ca8ef907435e33f9de22171c8896507dc417595ce45479cf2486319b408c8438b939419c6e6f70f4709bac5d95ed4e868db99a098ac7ebe9ef2828ead7663dd8e74c0a36abb35608652efa5a0d697001e0a6abd44009ea0c025eed3fe73430ff161e1fe8d0cd49491cd67acb02b6353f9bc29239dcfe80138b3a5967a1f51395a33e5efad12d756f437fbce684b48c166ecb40eca9c0935dc93304b930447aef0931907bab41726310f6517d1f193351806abfd9f3ebb605da31ad0dfe28dd8a7bf86abf146b81afb14969539d57934432467bb5ce0f09f6c27fe58b24a1a145bacc0112824814b5763f0c40d57d77e8ac14f5684d6c9c35a4a640b05b7a71fdad488cece019c56b48886700dc0ab607ad63b87a3607ad63f2f1528eb0a48e34acd01ab791bb8635675cca6a59cf54b571cf079392dba8b201eba991edf953ee401a4d0207755ef3faee6b5f1f8087eed77bbca26d20ce8f0e6f4edfe767c25370ca90d02e3409565c4c1c8772588d9dd6a93d22c1ecc28761dc606ace653c68972b67b358e1c19483e0ca8970e8739a61f9fc4d52909dc5866ede3217d5cc9fd29044f0ceae0542732b40500bb027b2a76d1fd7d4fb970b022276c19385e6537124094b58164dea4c9c3990c8f9180736555b04ee402c0f8d225a0c0498e3bf1d0d5239eea49f96ded39b89bb8910b1ef77b3f95e950ff0c7a4680e54319503bc35798d06de107c305d098d81ed4be22030c73e3b70952433c9106265935a63a0db0a68ab84e15dc8077925ef1b9ffb85ec22550748502130903ffcfe5b664db3a36acd3b86a5da6bed189eb52d1e27aa99e0555ca4b90075283214c600e53385ba07741eb7a17542809d039bd0b491d8c0004b130b622f7ae280577a274b056557aa00d4a0f6b7ee95b82eb6dc043762b1de1d2b045c3867719cea729c9f1e9ed14fb0ebb893885d6e48887ee5a8f6de72e0f2ac3d533728ae82cef7695f794241db944a69eb24e41e7c3ceab3f4f4f9d20085c767a0af58b691253d7f9177100f0f2713ca42ed03d7bd9ae672f19423cb6339a03d1efb783c1b58eee728a32eaf7202691df83377e0fdefa3d78edf720a30f180767e7b2f853d6e60a92675c3917d27f7661c6f4714303b112b39f9b3063bc5e4c66d881fda70abd9ffdd08b4998cc229cbbce7f39a0db3513827a0274c0869b04a11ae0ff72c059ff5c7d05952fe8b0157fa302f3243c8652e6dd96097d9e705d26acf1847199f0f49cad51ae8a95316665c950824a773aababffba798a3bac136e5e225da64bc7372ac3e718f3268217bd9f1ea767bdf39f5ef41e8bdffdf3c79dc7e9d99af29353ad8549c4ebcc8c3a335167c6fba5e6e7a9a901b4d6f3476e0c608ee9693cc1e98c9a4a99b7ee4a0f14b0df53ea3f6b6bf3fa3bb4d4dfa12d747596e8811afb9dfb405ea6896f127c0728e0195aae87ba62fcbe6e563c81677273590ed1e4ffd4a921e9cb7aee027e6e28bbaa27747de2aef67f72ed4737b1effa4fd6808c607c56825a8e6af5e280a268879d9ffb714e31e117887496e3d9d481970cba2949935532eee8bab116d79e583e5cdaf532d024a6fad8809308767e58c78a96c4548268c65142f9dbb064ed3af0e43bb194509a3451e6244b7998cd06039cadb2b37adaa494841a2a295bae383213f9c3bc45dfc158bd82c5b15227d7dbfad5ee9959a09fe1a14fa10d9f453a740bfa4ed1285f2d0506f620fd46e3a4da61b5845663c29d1aa4d9420895ba7200348c85356db85fc5f87a9a660bfbcc7046d601cb93386a9af4c5e3557569693086523caae7f6febe1704c195641ac4d76757bd05de15e2390b6681dc25a234e45b2963d2242ef9ab5bed2fd2ada0216e170c64a6b8120d573d31c6416f3dfe55e573a738197712efc6002cb9bbf0187da5039df5f8f163710b0e1b2e32f41c264b36707ed68b4bce9304a6817defce574975cf56aee5133c340569a914a44909db5aaf2815812d08d644c43a1c727057efbb4f1688c90471d45cd889a8d70d04a35e67288f7a8080760b5388c78f85c4347f0fa8524f70c5069ef1d7d73f51980573e5f5dbab73c1fd96f344073a17e212ed7d9e8ef4839752aed2434cbcebea209b596399a57dd74f6f84f77a9b74729578378f9de94dc779bc4abc5bf6d32c677baecaf8cb14accd3a12adeab9be5a36af3561c18f9c5cf1ee579bddc58e9e42e4cd3fd88b68ee19bb3475563b4e63214c22ee0b9e1b0c5b5b7ad071354cb36b9445ad4e2c3b3fc54facdf181309e0672dcb9c22eec0b2fa106590b68aad5ef39b5e8af62980ae16995ee9649930e209c00b5192a8a700003c21be5521b68997a09cf3ee01fb48c93146d16da07f798398443a4238479800c04b9e607c89a3a0fcb9a02c6f40fd5804538e390318d413dad493c2d0c096d8589f47f20feed484ebc5d82b20a9dd3b06c23913d61cde5424e858b7f209683b8e84ad8f4ddd806d6c925a5764984a19265f25ab58f67caebc1ce34bd756aceea6ab51f187579ea04bbcc5e3a499c0f83eb8e029bf8d2984c1b7a8f78125eae363ae2030950f18fe2d97b8942f1a2e8022ef24cce229f59d31a5d3dc7ff244f26fe25582b2cb9c17a69327493cc8100f88f0eef8e38b4f3ff707dee7dc81e12ca7e9e448bed74a92165143e50754c4ab52c5171494aa12d96f2bdb7582e01d1f40bf3ea2a5670b118694919857a730d9ba6edb2076584af6e7b265bac54fdb9b945ee2dbe640b60c52f3545fa166af21233e61a3241d700d6418a69341ea3b64365973a45f1b678fb03a39eeb0b9638756279f621c39b02a49157e2d957bb51a8e945d5ef9d46fa81f8c348e24c46344b10bfcfe3a2e174735933ef69e375c6e9afbd0d77dd8c6ff843eac7e431f7aba0fc738c7f45b3bd088549f6bd4573c0b89dd6491469564b0729a6134d9b8638cae5f4d9436a23a31cc3026f938a5906628bcccfdb36aad2b4ae1654c22dfe17c1a4171c2ae1ad542e1184d29cef28bb2b44a728a73287dfeb06d65923c772063c784646ea50fa746a7b75242b334c9b9ba80919efb67decfcf611ff6bde7700d3e85cfce0bffae7c9e95bb8b651d1afb7a50ddf55c19a1bdb6c7ffd67bf061a076b1c5c7814198723b72c1ba8ccb4c855fc2f923916d83666df6c7355b665b65b33e6d73c3e53bd92a2fa4d812f05b5f454bd79c0a85cbd0a426a55637561b7273e38badb5e5bebb7856bd299ae5dc07cf3980b4e0e7e796620b00b8bf4f10bcb6bab0f92f872be6198aad68b451fad5311db6718bfd9110f55134520ec51c6006a535ea2ef1e323448615e52e054d5cf72afe7d2aeec45c55a4aa55a852a59f65ceaf6bddc226be5d569179f7f73d3bf7fe96d6940b291ac93b464c28cea46b487b341ea574410b4878a8a4960ec9e6d9a05b361c35bd1975a3873ff7b898ceaa7d87165855a97b291fb68dca971ff2007e1525e3ca1b1500ba3ae33c2d5a295cf54fba5c2d0b1a11f544a2d040b4d78fa40ad7312fe373853bb3d61c302edb10d7e22510b58aae2fee76a5ceae6b01061a9da5c99e096bc66ed77156b40b3b95fa7dc1550ca4b7053cbb30b2c1c37615138ba7ae9e813045a35c3fa729e6c2c86aadd0776d2af4513412aa7cdfc7f71b032182dd402adc7415f0142d8f8c72f083d5d8b4bfb4f91dfe14d503935402929cbcdfdada39393123925ca05a6c915ddba62ddcc3fc8992b88cebb79b8a6d5691e25e241df39280cbe8afaca5379a32fcb3f375520b41512ac5f71ce9afb1e08af833225e54f95dace7481dc7839460a7107249341f51a339d277c2237d73816425a2c632f767f31135e26e776526466d12d4bb431747d49874bb6ee24e008cca881ac320de10f1d95a47d4b840f6901ae41fe8a17869480dae47f943426a3048ffd4901ac90f0da931e45ab937b675fc7df10d17d4ae46ab896dd16a16d45e16b9065e2daa3daad4be62b507c1886bb4052356fb7251edc34aed4b56fb243864b53f0787acf6f5a2da5b95dad7acf669b0c56a1f045bacf6c5a2dabb95da17acf64db0cb6a1f05bbacf6db45b5b72bb5dfb2da8f826d567b2fd866b5f717d53eaed4de67b537836356fb7570cc6a7f6952217c5fa9f985d57c15bc67353f04ef59cd37da853b26587a1a13ce81b50b5dc1ea2128d9033fe52e9686903b781a40c164f927508417bcbd8823ff140a6561f6fba6d4d5bf88a3dc7fc48e7afe6bb3305418df95aa5cefdaab727dbfea9604f0817bcda1dabf9252bd7ae36a652aa54205d9a620874a294795a3c778084f1efbae23d22261e8e1942a2b6b552f4bb2dd97907ab417509bcb1a6ab8ac59f33f181e689e2ed660293dd0bc6ce9bfe86b653b5e14e5c01ee0403c6f2d096aa023a059829fedb904cc07127bed12d62123f2012dda2ae1acd81c72944d6ee0161629026fc5e2cb7b2eabba88ebad545acf5c1d5862e6960c379c2a8f76ecfa24a8e8b3abef2ff0c0c53232f3ed86fee5c5910a600c8fb47afe86a1a7afb3f7d8c1c5874f3180557d9f36acf6ab6f8aa6dee6899e0d7b299befd41d033d6f7217f19a9fed52c078ca46d52ad76f0abe53ce119f155bf41764f76a5169585db76c4d2f0b9c54a2306b42216d81c2fbe3fd6fecf9b4a9d9619b9ef3b7a4314ea622d694ef942e38be119f71133e8316f888fbbfb5e56a88a033c7817d212385cfcf17cecb676123be47680d33d8676cbfc4eea40576e212756b456f57bdd9ec550ede3214ce6943209d12d103e9adbf0526d29eca86880edfa3a3432e6df848453c2fb1bd69818411a0b7805f5d73fb878f96573f15da3c5f658003b86997cb55dcb4735fe5733ef61fe2b8ebdd02bf5d8c1a8ebe5972d7e03aa7314e91e128e75b431c395b631c5ee6b3895d52648442120419cae2df114acfe15e08da3527c587553194e1cfd690beb113688191673bd4b8d703eeaa62317e52e4c94a9a7b430d1dbe3dd80469f61e6845abefedc5b604b4bc13765d160b4aff13bd882798e46caf6e492cbc79ce2f40a7736348802bd2d9b6fd1866688233b4d062be255131481dee44e2011dd1ed43a7c37f573d48b4eec720a63fa417af62daa60f21f2a4c70cd78a467bc47940f58b308d70f8ddc8ffc96075b618ac87cc8189426bbc11bff3fe18bc3779b4a507e36da2600df921caceb2a4f60cc1ae1fdfbd6ed36be1c030eaec6669db8385b52c15e30af85618a83f07705bd896ff0ce023ee6da90fe01eaa45b1db6f16808be740a1049bbb5571f7c4ccdba87dfb67e7f01b24d215f9b2d978b7bb120bd4f2365266b36a55d6c9a5cffcf6584d6777e96e37714b8b94bae0710fb58e91271a5091f2fe61726815ac8abbcf30e3c6b713508bae3d48126d19eec5a2e8f611fa7484c987c7e94b044d2e09d517b70ad5772c8de25f0048dc7eff2900705398cc1f23433cf71a69558df915c756b95e2e0f1052cb7ac7586da8605d2609118e6b57b0d68242da4a50f823ac3b9d1989f03026383282d5a2fbfb130f7971bef36586121795b6afa5f1e0d3baeda048859bc8633c987856c0f0f793c3034ff8518b87b72e526ecf9ffaa53d2d5282c86f36585ba9d8e834de6594b540655a6d91eec3b9b703f3f1f6074fa3b434ff61125f99d983d53919a939d133a0e5be71c0a78973fd3c085e49142b2651c827bd387763e170e3fede9da963c48d412906ee9b62e05f9418f897aa18b8c7e3b81be2df7e3b816f0f2ef135de961ce01d3b3c7d04734cb7d9af0cf2e8107e5a14aec3155c8628c455ef5bd6d937e2f7092ff1d89330ddbb6b9424c2fbd3969205ee10fd6c97a7331295df6ceb0210f377d72f3ff8cd7e9663ce34be617b67b3e2587b87212b7dabbb10969c056c638571b09249d74c3212021b0dcfecf47a3b41b7d4a6539bc63aee765d76824c13741b939139522b3d6e88ad4cf089e14a80bfe60a9d31fedac13f2cae8e8c3a7d76989cd1e52699760cafd26436c141bce1f59efb3d062a3e07f08eb3e13b0977e27d24bac098929ccf0dfb405007fe36751ddfa6ac7142ed1388bd1282d1eb75f530205bd52872a6918f4124a3264a5c4c3b47a17728d7acd99a69688f3da9ed010a5047771f7309555b74fb8bd05d29f135d0ed765daa2696cdab18392fc339a6870612bc9cb0d734ecccf22ce42f588cc397a1246bc310acf4cdf0d3ef7ffcb3f617beb194cbd3bd9b439e3ba386b9585869b092cb85951b0bcbb6cbf0e1b478d761477c8407e98c84d8a4e32fc833e9cc8d0144f24e85eeefd54d4bb0f31b59f55b2a1a2b8d46e93922abf97790de0279293e5fe4f00a678cccb811fbf35e0f88a37ac2a3261a9b6bc8d8de379c03cebaddb9dbeac62458143455bdde9415de2a95cb49a3caa5510e48b48681e3c029fbef2a383b5faf8e883bac0257bde5156a38bd7db8e26665b065cc5700ddab5aa30f535853eeffd475836d8edced600180d6735a56adda672e85bea06824c135e5f26680412ce5f8496ab9c683292315380d2a4a9a9c7cf87c8c82338767acb24520ecea4a9b98f3f5d8b2cf74bb2319b7274a678304afe6214ab0043808ee8a523738cde2514cba5d7750fa3538e46981ca6c6727ccb0eb94ee395b19fa8ebccf694c5ca7e328ef64039892538607bff4ec906841508675ea7150fb714e3d392479bdcb1b6cef64632291903e1cbeeeb1fb60d0eff90bf35500f772c7b03c3968e7552ed065dfa6d64814b6a262ffb3ee513c8bed51190ff9392b6d02794461b7b6bf704f0b0daaca96171363bf58b6f5544be8f7e8c62dc75e5e6d3405a4a93fb152083f151d78976721635d394dd8287ce3aef0efb4b33ec2f512b9f9053bdc18eb99a4e994fdcdf0d08fd5616b3779178150588bc302c0d4e687d462a15e5d91dc99e892802b02887c2737dc11f68b024e01bc52c3c9456aaf5a1ec38c1f5d760497028198ef942e36f44672e593512875e2ffa64110f460267fd1d53e8c03f2df3ace553f0802b2e1d074eaf8fcdce2bf3b091e52c7c7a2c6fd3df99576bbec8bacf645818cf5d5f1f1af5456ce8c0242b6a1ca209543758e00cf282dee76f16f01598d559e404325d332196d481f8db276a6bf653bca856331ff7628ddb66f3857711e0f12ec6807b63fc4c2b1b66faea662099751dc2968e99e416fbb4edda5707d6d6a6575f55d3d420d1ac85d029f435d4c6a8d3777fcbd5409a75e1c4169c608f5bee4c7d0dc0cfceade00c519e3a302d8824ddb37987a57deda5c0e34754815fe866e89aadfde39209cf67cf8816bdbae356a93fb5875460d3d42d139199814c0c97c9e549f0370389fb78d739aa5b72e80d3397bb472ffb9fade1002ac63eb1957fb9b55b6b19192baf2634ee0c456912e30d0abfa4e395778daeb4d6f4a1fd59f7c47f85350091ff5a26ff20bab7c313c6770a4ea93843a4cf08deff43a3de1a4c160b9e69d655c3c90a315bb80e04c0517aad4afa6288ad80ddbe94f6fec0a58c2a5ba74a2d036ca987076a375bcc631c52753146276f4661394d89b8a913750af469a1d86d6078c45ae434cbeef21c324ecbbf42b83cdd0cbb80b2cf35261dc1f16b9e97d70a428e42c8a43371226845a01116d8845e237405201a7921451df11e75cb1405d4604e683ce4e145367599cabc66b9bbeaab5a226c3b17c479cc0989d5e54b8dac040f8dcd00b77ecd6bd5934ced43e7f329b7b91f3d38d54dabe490dc74a2430a18508796c5cec0d639c449c28604a5e25b34ca7894f29ea518942afacf921485338f7319063bacbaaf1273dd7a1a2650a0ab3c34ba85a793c283b7022c6df814a691125497a7d309be02c0eb7c6284321c5597e4812ce1adb3aca119a439f9da00b3b90ab9609bfcfb41c2eb3b3f1c2ce96aa6d4263ccaed7b66c98e595fc148df62207d2bae61ba38eea9d5e05d730f00c17e2399ac3d3a261bd9814187239c36ea14e32a8a85273ba6eabc75c088327edb7210fd20d196149ae0e28a7d34fd59286e6d0f9f561820269bf0d1285afa23939ba196eabcdfd11b9d3aa1937a836ec38aaa9b373ab8e2a3242a822ab2e290f5621878e0f79eee78c9c6683891953d2601a5756521807126b5a1b21230811d5fb9f60122faa8618c690b11cea993dd35615d4131d2cb89f6ee560395e0fbd380a520667e2b2c4180d129cfb61013c3ac6a43ade9c61946f56854da82d6744db276c4ed3244977b22ce57742e9fb38325b8affa69664d48b39f10e52e49976bb2e0a1ab543f962d36e96a47e68c4f6af4cf329955350f26ac782f5eb331ecd7a30b27687e608dcc58cf2e3a8b08d44e59960e150a892588f01ac0c233f86b7718229b61fc48f1837a50e78d199d374aabaf29078b1b5a8b371be3a42d304e7767df8aa1a3223eb8e385c3bf2e0e459bb69e6abf3cc1a1a76384b12bb9a375fbc4430660280a40dda462f5a9d402516fa506a0c51bb140f0d426242da28478b75dd394523139beae1f3ed2855e148bce2167871ad6b7392e449f31db324214824c2a26dd063b15ef325823219fdb4aef32d55dcf986cd63f5885f0b34c82b7b44330f9c49c9a9b3c5a5aa0e800808ddf026b9d032e19e792db4aecc65e1a7af445069711977001cbb405f50c46391cde3a2b8496f50cbe5605e3645978a288d7bb1ba061b3763e142d281d5cbe07586a6c66d995d82c555f84386a665013140afb8a0ce77d6e40e36b0c7a67aa50c2da4e4c6b7f6be2a87313760e9ee53207c9aba3dd803702423fb7281cc1b9b40463fd434d8982d32b6cb4dd15119f5884223189a6ffacef87e1f0a8db19cd8bd0abe6b2972fa663be5bbe25b6d94d919d8c23e59489c76631229a7085c6fd19ba20c4d721ee066145c098dd1417025ce59380eaef8d3774c468cb35aa2e53075c7008ebadd11d7f83c116f762b836e77e6de528f0dfc69fa5ea90fb94629eed67bd44e8d8206bbd443522189710e21d7bff7728cb2702ca359d16ed7119a6586ea1a4fe6fa1fca5c53db32508fc27e0fac67dcdc12c095d1fdfd8a81e0fdfd5038c4956a4e97f83677535075656ba1bc666341fe96a80cbfb5278439a9963f32a5aeec2c2a60aa497d60796c99277687cfa5e7790e68b5b5cd97f9acfdeb5d42ede8cab787e61202b238f21d15c87ef17115f1f2e22cdce4aa9da7687084084ed4853b41d9a8c98fd044b7269e94549b5306c09166dcda5e11f264cb206c951d2cec4f07f586e4b6596b486eb1cd0d7d3046b2226cad2a261b5221a1f57569eea34ae46b99fd3a9aba560d51c314ad11d737d54151c29f4b6d96bbbc7959b2d6b8320b6c9e0e0aef64555f3767e2b0bce5619ce0d5980cd35adbdce4698f0cd3e6d68f1e4c0c388a69ad1d2e116c6ce2a64206756147c5445610007fd4fcfa8395fef861b79b66d288d4a28555b557ef3c97aa978e0e8ea9d473abe9cf1ca5475a4d7fea54a3bda8f43599deafa5f79df548fa4994194e51aa5afdf93fa46ad55fc46b3c2ce46aa36e84a155b548430ace2b643d5c31a259eb4144c56bd699322f41dc7fa419ec75ee45b5e6a16cd983416364568dc957e45549b8de0428a073bc79ba77f0dae2218d91d002158aaac730d629476b454cd39cf2d74a735e4a97995c23a9aa390191353e6b3acb42acf4350ae03b8b1e11fe5de165bfcbf55db326982d7e6c3e4149d2a98693359db371af101690d3f24945458faf7b9c83fd5e0f3a9ee7755c15b228020e9833afb57878fbad777f6fb9becc67daee8fbff5becfabddc2b7b04d2e9998c4249e48bfb3cb1f86aadd5db175f8d7a007febd6eedf67947b49fc894fcc1bdc38e85faf9bcd54eb39c2364c578dc0269f134d73beb116eb9d103ee34af71bce628c1366adf12e3f77a418cdf7fdb084e7196a7a43688735dfe4143695b37b6d15cf0ac6d1aacf162c15d01a93e9a02e309a179c4b97c6122b552feadc33d41537985a80db96d681e36eaa0e1645bfcc83ebf4937ed27cdfe08361ee027c0771ce8fceb06f5eed97f4e0354655dbff110e3fd3ae80719cc2ff627fbbc07b9eb43f8f18171cb85c3dfef8a597e626aa1fd6df1ca452b5615b7852fcde61e266e36ffde18e516285af099fb4d1d2c4035b6f9efdf32adf2d2fffd935bd5cefbbe3e97c25e6b1bd57da63e0c7ffc3d21dec5989b11da3f2e08ef6eaffd64a2442c2594df97078997956b01e2df8900f19fbed9858db3394867d40105fcabe565945ddabe4d44bcd2ff5611f1d9f9b7bab064355bb8af14c2e5ed38c3214db318e72e02f030b814e2e493e0528a933f07975a9cdcceb48ffb862be10a176e46c27299f161b77b68d6e876574ebadda94d225d29c765d2872d1dc59dd86e777a133bd10670cdf2ab2fd4d0c148b96c30cdad3610fcb94d8999843e4f470dbdddd5d6fcbe1fc52849470bc3f06dcb4750217badaa7c71211a5b59ce424762cd3ee620572a904df99629fadcaca86791a99fbcdddcdfe7b2bae1b7a9812e7cde142a84c0fe563c37b6efa987bcedbdcdfdc3d717bb8787a73bc7ada664bedac5e6d6e9dee1c1c9b73c800e84fd120270ec0eb4fd0bdf42f8b8622f25c672155318b903fe6cba19450e8fd83568ff62670c262d20854ec779b8b6a6d99278a01978e2bcb52a46ad04012dc0fad825c290c7d221020a97f24e1d8b889bc02ed015e3c9a511d26b61038a336e862806c958756cb3c059bb1380eda9ff7067c6623f1761652457ed2e7b1fd4c780aa865f63823394b8773945f918e73e82acfa00e5f8889dca291cf1121447fc7b68bac63d2c5d251c2e759580d5dbe0024709b8ee284144960fb0d55102568e12b0729470e96ae708fc82caf67e537d89da9de08622360f5080eaee0fb0727f803dda0b70e9fea0f4828b17bb41c0a51b04dcda0d42bbd3371ebafc39373429a1db5d19283304ebb36ea53458c79e98e6a4db75d98920bf3c4915f7f76c41cc8c0c9348849b589553a117aef2c55f8ddb9cd0b6a7d2f2841ecc9dd0d67e8f1f742ac997de26e1ac6020f779c8b45bab1e4ecd83251faeaaf351bd0375d43b78dea169e7369d659d4587fb5fdc41bcde2e7d046ddb67fd4db295a7cd6d397b1deef7b0822d671b14a29d619a75e818774edeedc71477d4ac77dc0c7f99c519ce3b1916712617f027f279e84fe137f681ee66db7830551467e9cefce0eb3e6942ed0ce304e71d97df3f3a4ad746b8c6568f25ec9b47fdcc6107d3b07577870bbb3befe6d6dedd8562a1065db287f80f3d5ce03f140a07a5dca435e39ecf7e019064c19ce70ceed7804a0f2adc0db574a1f2dd8153d43a7c9fe3acb357ba7569a7c9f944e972b25b79953a2aa727270c6e6bc87d8c59679866fce5708cc34b1cf92bf4fe9e363b6ed071f28478a0c3af031d44a28ed2a0af53868876ae06f484359fa4046f633c7529dba51bdb0a56162142f8be60dde61a7b64fa78513d119f1d9ef5edf89b9035de95e614be8ce850f6cd17fffd7494b37b7f26e8f62580b1856e6dd7f81ea3649305c38c052301652c180a2863c1b2a69a71a566c66ae641cc6aa641cc6ace9a6a46959a3356731244ace6308858cd6953cdab4acd29ab390aae58cd417055b18f1e974cdbb815d3f6f7b16bb7d4fb32c3d9ed5b4c11db34d446eedec9bdd62750edbf7e2e1f01727f02b91b87308d70ee8f0acdf299acdd093b9470a436f99818ecdd4b93bb7ba1b8bb17edb8bb976d99bb17ad98bba61dccdca5d4b074f2d9749a66ac331dfe92afce24d8e14fd8b0734529df5f523ac69938d63c532f5a1d790e14369e0d0a5bd53d81a8d57f2226a5e3aa13549c902aa220b0ef08b2a3c85d210d713aabcde5502b9b8b99efb8bc77fa24ee5c8fe370cc637676aec79874c6d2714287fded2081d6626c5277256f85cd44612365b21d77ad271dde8a4157e80cf028261d44056b115f61d2a1f10433225d8ccad05d99b44265a45039d5d4df71df1e3d634ce415ceb85be24e3aeccc88a4132c516407db04d17c311e037765d48087e4302293806885341fc66e8c97b82b0f5bded21fea18426f7cf13f6ce33b09117117ee637988c8ff961dac0d579709d2e6d608afb8f982e4c8847d02e4b7ba6cf2ff3377bd4d8deb56fffdf3291c3f4c6ab72624c0b25d331e860b970e2d7f764898db4e96322216899320e7ca0a81e27cf78e8e64594aecc4612fdbdd176ce2f81c59b22c9f73747ebfa3ff74fec427b5edc96c028a92c1322c2a03c8f1f908aa4ac110fc0cd148d929220cb778afc46538c519592ae9c53ea698bb785632951f668830eef745207f64599d419458b3683cb6428044c1caa13c2cbe8c53bc2dceb61e69fc243c46fc221fed27793d8de274a48ddc57fd6dc3e72298c204cf32ff14ae0685a1154117f40b35de2f304b57bf5bf2b5449ccc54a39bad21d1ca3564531f4a1baddc9b94bb8385e316d1525dcb430afba3da30f5c678837192678b813a115fca476a71ba82c0770f4aa6ade21cfa1526a939a1b3a91411165b7f6f5f5fc9d7923e306272571e99ec74a635bac9d80889d2c159eed7b9f634aa0711b857e5e31c2516b2429c303a8534794be4a1180f49f4b45127b3d399b9082eac7b2ba15f4d57fa52e38a2fd6c871377db356817de4ecd5e8a104fc811e8ee0af6f33948c12bb621054ef89026acc3ddc1844098be9abba16f790c9cb11d79a531bbff156d1dc7bc384db569042ac29a01876d78013bb8b0a039a7f3caae2195316f5d0da2a4d10f7f364e0a92db9b63be8e13cf423c75d8dc930e2a72a35fec43c5a96238fe532b826033fa7e2cdf4ab288e55b12552ad25316bb2563ae25b99ce5e359de3b89fab849842a946544d23828c844ca5c84f28d5f92f94e9e48f705210c1904c450cb164310427b680508017f7f44bb707cbe66f8da5695182f4fa5a6ba430ad1a72d974ec938ceedb25c5aa81cb36e17d5c919344507917f43cdc317ec6c520e0e57d783817d001d6002592062f4fb52b535186615ca8749dd73317e1ca6af5b199ac2a274744660a41f981aa40e51fd62d55a5f95d3dcb8a77fe9c7dd3205aefe95c5e80f4e7ec5e5b165b7bd79464b2e2cbcfd83159827df35e31d4575d2a43a70cf6b285ed2a66a5d39ee2ecac6fc492ff321b3261dc2d44c4c2888e5f2d19ddf1ac247ee26e6244fa898528ceceb366311d5911b12634ee539c248d6f2457fa67eb0cf23312f0eaf2747170ea64393d2b26e3d72cbec8bf61d804f12c0c81ac413ced0fac88fd899bb7c0aa218b881b0d7137c7d7dbbd8812663d4778062d8bf43e6b47bb04fde4dff04312f74698714f81c89466165b32b9d2e26f61de47ee54dc9ee792b033151719b636c13351f27d0146bdc0852f8d5ea691e183c94bb8c94b03c44dde2840a2bafb8aa48d7595def3ac8e22e94743fa894b4f82472efd1c3c72e9fe2ae90743bacfa507c103971e050f5cfaba0cd1de3624afb9e4306873c959d0e69227abdaed18d2275cfa2ae870e9fba0c3a5cfca02772f86e41997fc1abc70c9cbe0854b9eea78f82cc57b0910bf159c0a6be73c3895d6ce4570aa125e6e9471c4154876c7dfb97b736cfc223921f92f5a6d19984b8ee4cff346b218ee7c3dcafed2b970bdad7a7d4b24f54213f57aedbc5e9f39fa31ee4c6cadcf8fbc77860d88f8df0382cb0bd5f8ffcd19ba1e4bd348c4b4bac33bd7abb17abd46451ef3569ad6f406d3f4ebbb90f0d1a373be09664ac3b3e70463bf67d55202c1b2328182dd030fbae64f157f244b53870880c8d2fd26b9badb3ca07bbb36a09b59cbc8a32b1290c862609788d02a592abc7309db6e44d5e576df88119b9dab4a1470f493779305783ff92820223769e62059a75b9b9e5cab4843da378b719b1a5b2defd8c9538e68ae93ea3ac5c4d63d59c19abe2357fe1c335a20c6473c6b62dfcf1a36a2cfad033f1b84038f345833204555c289961ff5c5bfccab84ef3697c3d1240f4793bc4a78eb23e3d11579a448bc9d4c50afac9c6f99968c01c9cabc1298f1ebc8b40569b7cec82d0ae47a09edf95715535dcbae40fcbfe61218d0a8f246fda11725577806054f7e0d2328ad4fbd9874e27e7f8cf911230dc0a951b138cdbd98b4512153fc6dc98df46272cec7a720de61b2e3032808722a4940f08cdb39f806a310d343d28845c53f121a96c1bd431a1427d331e3aba8fa3cf7f847141e27a788a1db9b0bc8482db6ee5acb38d9dcb22c00a541ad6d553fae96d1454ecc746dae6c75a6f673797217d4e47d33cb93b79a65f5c98d2abdffe41d2721a6fc16f24bece017d6e11f6ee29993111adede5c64d403838509202f7804fc07dc169b564cd8d80c85bf06ffbeb89869d5e60d04bc38aa43e0c556ba22d47b40bd511f081b610efaf6948e9d02b5ea6decd9ae5d36577e2c245c5c99b0552aa1074d4cb725089f35555a54c1b3a5fddeb0e1268785377905084bdca0efc35f091d1f8eae13cdc841d8005f37a53abe4e2c9bff7380dd92161345f6443f0645965569cf715c215d0f00934ff102022ca69015f0f8e1b9fb95d05b1fe0c4d97625074ef82bc7e37107f513073c37e1fa0c836be9facc826be5fa9c48810eea4bbfe78afb3d9dfcb0747aae0ca7e74a859585913e5066f9040aa2456130815515e796f87d6e89dfff98d40a2085906915b5499ad6e09ade647ec467d3069747f7bd93cc60def78b70000ce92080a66ee67ef64d5d5fbc8ea3f229745d624ca52e69f036fd67354332ed078611bd97e570b4f62a820c0eaa6671b4f6569bcdeb9dd9a93373bd76bdde6e2031f7eaf5dab05ea78e3ac03dcff67a3776e44ceaf509bca1801967ee7527dc5f6da7694de94ad3f8bd1eea70130f75a8e00440f37616a077562758e6dd1f4709dba6f1acd8ac97efe1b584f5b8fc556e70589a44f8a576d2c27b3fe30c65b12f2ba775505fec4040dd34576d4868b43c32f4f9dd4dc8643ad5500684d65a92fc7aa50d1a1b489d98a13197768c0b4dd3a6fb17a74823ff0538f82b6d87a97bfa2e52d7653ae3dd5266663503dea00ca37d856740b65b3402061ab5569bacc0a3aae527c3a4c2731885474081062df8aaad3f0c9d6ae4e2837f530e9a58e5f88cca20aa83aaacbc3f05de73f9c8fd2ad885ba45e2ed64fb8a2a9777facc9d7b938fb1dd04382137bf1ec1fc3a24ce5eebb3ebfd12c79051648fe31e1a0fe284d9411048fe5995f1c18fcb65beebfbadbbd5e794fd22a27fcecebf5bbb9f9d23ff5bc339f2773f759bdb9feed2dd6e737bffaedbdcfe7297769badbb23f8087f8e5cf76d6fbeb5e3ba87d30692ee6d41f9c350e63e150c4c225cd388f7ff956525f0a3ffe0e26c8a4d5e1a0b8b6488e8a8f0b918945ddb57529ab1b5e9add66f7352c13e5fe286f8c77a5687bedafed5e46664addc4463bfcc05a7eb1b5c9cbf93ca8e872ef554410a331611b3b1f10ab1fcac4b22d922052dbeeb85710f1efe461f6788fb5f5ecf43c7a6710c456bec04d3e7a8877f8b818f28221641cf511fb198d6ebea63c3380b225aafcb84feb8312514f7a38461ea887abfdd6eebaf7b5ecbdbbdbbbb730fff6f67e7ff2dc17b7789269388f46f6f2e82271491c6c1013e78f8b2d76af40653326a0cc13dfe6f000000ffff1e64413868b70100", + "68a2fbfef235f84d6a3d5f58e182412b": "1f8b08000000000000ffbcfd0b9824577d188a9fdf79d4a9eaaeeaeeeaeac7bca7ba7bba7b667677667a7a7a7af65dda5d21edae562b249030a0a5851e680512bb8858e191b80093188c6df894c410c7721363024ef87f4a144320b1dd4e622710e33fb61cb870798c63ae37c897c431d726fe627aee77cea9aaae7eccecc277efdd9dee3e75eabc1fbff37b1f0408a124f211411b97ef5bdffc42f627961142ff0621d479f8c987aedd68bfea7308c11c42f0936f78e8e96b08a10c42b88b10d2dff0a6b73df6ecd1c3ef45087f02c183bffbf8a30f3d92fdcc97fe0c41e7ad08a1edc71f7ff421f28be449049d7f86105a7afcc9b7fecd8fa25a0741e74b08f1bbdef4e6871ffae69dc73e80e0f13984c8279e7ce86f5e835d783f8237fe7b8490fbd4434f3efae9df7aba85e08ddf4608ffe0da9b9f7e2b22082178eadbe23d22b0071f440c21b80b1e4308dd11fcfe059a463f8962ff7c84de9541bd97e271c843e83b083eb2f70fd163f01124f241ecad2bbf49f0994310fc12996a0e51781c21743ff210430504c8454be8103a4dfe9e5b76ff59e968e923e56c8556562befaa7ca0f291caffbff2e735a869b5546da3f668ed4375a39eaa3bf5e2ca6ffec9de8df48d8b371ebdf1a61b6fbbf14b373e79e3b3373e7fe33f7f07edfd606f2f68c7125a8d95fbc172b6822b2b43e5b209e5a21b70237fe3f28dc76fbcf9c6fb6ffce31bcfdfe8ddf852502eecfdf1deeedeffbef71ffffaaddfbaf1ad2bdffc836fbef39bf41bf9afff8fafffc2d73ff4f5f77efd9eafaf7dcdfddafcd70a5ffd8baffed657ffc15717bf3afbd5e257735f7e72e6c8cce199faccd24c79c69dc9cca466f4193cfdd7537f108ccaff1bff00c1de1e4ac7cac708b58f021a9aaf9bc575f6baf04bd045ff18a1ea1ad4c7fe2af2bbb5b5dd3e05eaafb959282e40b1b9551ba46b6dd52a656d1eca1a4f81facbe764b2b1bf7c6e90a6521e94d1aac433e47385e6e6f649d81cd4dbdaaad5e1170867cce4dc36a865e88e61d83a372061734d2384ea1a4b72cdd4b2f366d2c2e7344dcb24135396666a8e95ca6a49661513095bd3348c3167cc32f4bc992fa75253492dc918c344c6eaba934c3a8691e13c41293dc7b9964d2667523cc5b329cbe1692d359d4c6639d730bec62d2ef2720214634a30c518138369e9846632ca09a10058e77cc64ecd24920ed7931430542cc7b12a189384c6ed44624a94cd2d4d3319d309d329e1b22999044b306650aa6182559b4dae6713f6bc65e674dda43828aa4c802638b793c9990c4fe962d7ed756117bae82c42d576bd5d97e357296bbccec3c9aaf335a894353151bcc88b72ca9a9bdbed623b1cfd627b019a9bdbadad1afc3e7cf8c3c075c76206819f752ccbf9592006b31c9deffbe6183cfa28d0946e3984c0eb3e261afab1d701218ea5a7e801efc4baf4f676a1071db48850b512b658b5f63884ed0bdad6f545adbe28230af5861f554840aabd2e46d045b36811bd0e21288b95a8e57362d1159a9b62a96db7b6c492ac914aabd94e411ae45a9d874a6b63fb34446b510e5eb08eebe55a2bbe39a2950ea8b5bef6b25c2e977bd9da7a2b16ce7bde299ad0ca8401e01d42cb8c638c1965a6ce2d46390021db0413db4a2d15cc5cc2c8702d49282104ba638505e17ec7fb909ed68f104e88aef1a52c5bd39294198c9b8c514699a513ac539c5b4c9aa22c43d3d2ba9e4d18b6aea0423036589c1c0694c02901da4318f577bbfd1e74fb083afd9e821b5de44107c40989aa39ad52aeb5b6b69b9b05e8ec2c2fef884f57fdec208c5c39973e7a1bfadb0839f1416a476026821ce11ce7c44f3e7cdac835c2616d2a98b0b5d9a86fe42a237044ad8843b025dad30a9f140829e637b61abf6fcedb66ce30d29c6ab4413462ce65d2e5ecd4aae3b89695e329b1580000c46f8ae72ccb759cd5a95c25939933611378c648144cb501a98edf2b92fd7d805f13bfbf4238e539ebbfc331ae114274460cdac08ce829ca98a1ebc554aae4887548754a752a42e09452a9a2aeeb9ac6ec041c026e124a358ddb496669c369358b256dedb30068641daf1cbc8e79335f712aad66abd26ae69bfbaec8577a5ec777dd8ebbff02eb787bc8edba3d095f7661173a6809a16aa91d4217b157f2b9c2228470631d4af2b702bdfe17af32e658dca45dca18ed52935b0e6357a129c6aef70435b55496d1ae04e1b41ba4bd2a20b784073db986447d6abd04753537b74f832d7f5b7631acb70e9feed224e7495150cee449fa443695ca3e41933c9565eccb5dc618eb064f57fb5f4c65b329685e652c9be2493ad2bf7a082717a1247f9b253ea83b3899bedc0d3a70b5ff7baab427a8e8429289eeb2cf7429cba63453b4c372ae069d177978928df44ff4cd96e399b76375cbbe05f555a01bef939953bd51fdcda6ba725ccd5cce94a32e0720d665850b60041e3a3ed2bf03a772acd70df84b3f18c4f3fdaf9d0f86cf173545f1501b8affb41fb4e7c285a0e1be6ab81fa492f12267103fc053bad045c7c2f1290eda35be1cf61d357f42050736a833de83837b1c3bbbe611aa420883c4f9151c5bd190c267fa7ff9ac58fdbb96840b60b0a458174530c46310ff6cfffb723324d170d9d17118f5bc1d9d8ce2541ccecc8232a1237efadf57355148840d50e31c96bf20608a360f10e1085175aafc0a742716e358801ceb594804abbffffda82ba3ed57080984a7bb2a5b0e169c02e88d6617a51a8c81272a1c1fb8a0fdc8871eea214bc0a560b3065842bf275be709ec40152a3b3d38f7f26237b4f31bb979988386688e0098a2bbf56284e28e039f01d0f11cabe3772ca7f7fdb628fc2a13eb88ed0623f1f9cf0783d571b329776ad972ba5dc7eaf6ae6e3f2d1a23e005a3bb419a2f7c3e983604c8471df001a12984aa3bd0088ecb86da8dc198c13baf614d208ad73036f82e37f03b7c4c08f60923dc3038616a7c7ce4818f7665596a598ab9dd814670b236daa7007c55021e14f925550609cb0c7000173c70455902f3df81a049c5a030b90c3762b9444bc08d972b2b1265f5900b1d70d1b46c573de864b065da3b20dad5824ebc43a2d86ebcc7b25c8491b7d7956b6c569c8c2c58aeb23081a80c9e0ac5e11582ce3e28006a7b65a52d7e1ffc5ebf2b6a820e370cf7c1b33d01d67b2bedf68a0a9d7dd035b848207aa0d6510f23f05112ed20d45645cb92db9583c06a73b390cf698720af22fc995a6d66a656fb9defad044ba0231646275818abdf138895ef9fb972c593e966666abb2be1ca522bae13acb81581817957ce9cb98210a208edfd2646f013c840f3a884d6e50e5480a9244642edc056291f4c1dafb49abcd2aa042374122ae03b56cf720075fa6217592ef8aee538473cafd3f3c4c6b71c0f5e2706c775b3a99ee5743a8ed54b653bee6e4761e1729c3a0841173c9413a75dbb34018ab3a039aadead9a2f8a66d457ddf32973c0da430ad8588ee3cbdefa62987c3912ae63b9b28123387f1d9dba09ce1f22b2f99c561f00a6f874ed8b40b52e5fbf7ef9f2f5ebeb62ef33ea0573d23e0061f76486cb97af7f5182009f279917ccdd7640b3efed62041db95f5705352ea0f01c04d45ab0707d0048beead8992b30bf74660d32ad8b1777dbe7af9c218c58dbe5b533175bad8bb22c350e62c32d022fd679bbde0674cff3fefc2ffee2bcff3c747f75fa3d9fbbfffecfbd677a082e1a288750751dd250e46d99eb74901fa37f7ef9f23ff7179e7b6ee18f9d7b9eda6cbcf91ee7e187bf31fb894fccbee773af7ad5e73a6fbdd7be7ad5bef7adedb6aa1f7e00bf884e84bc8601011522f071468322b2ea3591268efad7e107f88d043342124c9b111433a6986cb55ab38c69494d92f200701ba6057e6c1ae0f0ab9efa6966bf3c4f2875e03460608c55549ad2dafa719d188c198c26346650cc087e13504c17efcc643ff28ac7e717b67881cabda3f6b625a14a1b2127406c1508812148523fe0c905790cc90d045f54fb2816351e062f3cacfad1b1e58f05d45a516d3c2c61a818dc70b9e41b73509c83bca2a1d4009f80d6f656ab71025a185d6eafdc96c9dcb6d2be0cd834179e7cf5ab9f5c304d0c3fd8beb45a2eaf5edac604800060c8ad145a57eebcf34aabb0e2608c0103108c480073bbc842d302ea3a02770d90f2ad5a3d060b8bf96db9efda2d4dce6e47800b496ca9dfe674b97c6979a5bab4b27ca952012f9bea77e5587452d94e98f2a11bd3941539cfdf98d2b4298da300bea9bd22e8d78c58b38eddae968a45b9bed68197eaeda2cdd173e0f5cf7dd396d34ed69f837ff35cf9b9e7e054ffdf3fd7fb6693504ad69f7baefc1c9c784ed059ee5e0fbe053ea248477984dac5769df3769d83805545b14ab76b95c72f7ff9f297ef7cc7e5c3f053664e5fbbbca6eb502abe4ac47ef8c8ddef809ec14564ce2c9490e48822d8050fcdc973330da3d86a3bc4567b3cc9be7335802301f003240004788cbe14121812f00192e924ae1cc057b10e62074fac1a3e017b59073872353871ae86953e311ed38d4261fd1352233402779bb70e77496cb5dc14d85e0ed80cb70264c10d991368a47d35d4b849fb64e38ab006ad62b95607c9dda988d6addf2eaabb7d7dbdd55a5bbf3d9fcbe56f5f5ffb8b6bf72cee4cf5ffc2767aee4e1192b673fdb268e148b296cabe87eeb9e6d8fdbf98da59ec3936248b3beee5ebb1f6655111d5106225bbd42e051b4b00139b3bbcd86e4161bbbdbd158153e8f57d98f2fa3f154210efc867cefd9dbebff3f0aae324a74d6bcac82db9e07b119499f240fff4b9bffb74ff3dd45c768ee78c44c22874c418b131b877fb185e3d04078b434f6c28251b9042026276fb122500f1dd7f7a08ecc9935d9eef4310b2df544884e53828847b03e8d809036e18e846c071623f9c78e32ad503e0797be889c7bba19aa45adcefc661fba762fd7362bdf854d8070bdcb1260f407c6fbc176a3e7e0b237897ecc72ada412f3b783e8667a0921fd070630713ecc627a439744cc5702d2b9a83a1432a84df02602b18ed8651bd30d0090323fd58f961fb511fe9d5683fe24be6873e6ec77be28f7520ea9284239dbd5de84207b968056d22543d05ad13e2afb155ab6f6c35d640ae157b30ee21c65facb454107e9c31c0e6f1da07cd5c36d56d5d2c7cc11315789d8e381f7b891913eb0483407a96d6b3a97ecfcc5d6ccd6fbe5cd029be27be056db7b70bbe6c0782a1bd761cc8d0c41f02078ed54455bef89ad98a87c115c589cf1e0a4310ac3d058f5e83de809e463f817e5af262b8922dd42359412853500029923c84d205452246b287807456b9db9114a2b555237268146b990d9d0f8370291686e7cda271499c85971205b3b4be5e2aad73ed12cf1846865fd2b8785e2fdd4a9adcdc5c2e3737d7ff974120fcc05d41c03ba05ca3f843d40d5e5878270cf4bb4375e67273715cbc811e44a8daa8f3bac46a04be5c6fd71b0a73d6261c606d992e6480dd021e50877f649a609573cb3b190b4cd3cc10bcb1ba7acaceaa5375f3f0e1738502d3d37aae923b1a1cf8478f0628c0b1637424469696d959ce9545695625a7a77556289c3b7c78531dd059fbd4eaea0626996e54c8fec54a3c2fe05d26d1b4c22c8669edf84a276a8c8e83a2e862e9ba0199fdf1de992b57cea8afd6c58b2df915bcdb0d09ec8ea0a1c5a7bf2b6829f1e985efd0d0de48a2223a8b5e2e6729561b8fb7b0acf181482bb60fdacd48b0154e06571bc0566bbc328419a95321fabc50286b6581dc94b57241346de4f91f860df6820ce3d4447736ff4181207d303f2b120e3fed8adce089efe8441ad09457252e1bdbf795f8f6df0738dc124888c6625008f4666aba56609656286b4b5ab990ccebf304337a9e670cd5c941387cb7127b27c241d6b0a4995a0ddc30f56c3e3faba28d0c3f4f991aba41387ab7127bb74299c8179611ae8dc118bd2e80976383d18ac1c8627e0c628e0d4c3e0625ebad38cc849e35a53ffdb43e65a9ae027e3a9ccba731a8a6de34c5b58471f6ac9150a9994ecf3e3658518f9da53a53396f2d550c76dd87fe89a2fc2361749c0b10319ae3ea0311673b2efa8b1644c82618cdaeca1ca9482dc491ecaacc918a64187e9b702a66d7c8703d63e0a5e9e9256c6474b98a18a59c4c97cbd3b790e628108822a8bee8388b3a8db2610c997c3e730b69bef5a3543e21cd333f4ae513d28cafed68198bcd5f1f5ed429e011a82b0eafdf5320f6f8cd23e14b62a116cada393665876bd69e62e7e4ba535b2f8c1a4931785c08534719878a14c1e1d8f1744331081943b0bf82d6d1717407ba0fbd0ebd71f864aaef13667158b04f1a679ff8f8b9e205a7d6e8071e1b89f85a78f48d3c871f370cf5c6027e74888cbdeafbfb67136b45df779c864629dea36a6c64aab7301ac55b1c996844faff3064b68fa4f83b23cf1126d08d78ee116e1006f6d058bf3b1346e216c721de7788c5937dc661bf95e64c1887f1fecf8c2c89d1a5f1f1d171f0c67b0dd102e88f0f4e67fc1d42488bf1381e473f85fe037a11fd114255890429ccb52ee045aec015aebbb1a9b47f8e41a358d86c6f6fadc3d6e649d8da6e378f417b071adb9b8dad8d46b3bd06f54a6b63b3d55c8356e514b42582dc12d024408eb7dbf514d45bb2a68dad463d12418638586373bb551567c4d6b680463bd0904c53f1183f9d8f415b09a84e8940f314b40798743d469d1407d284e6e636cce4354de316d7521a8076c7f93710024038055cc40c302e0025294c3000cc130d672001e0508302c0dad14c66a75a3d74e15a6a9a3dfa4eaaf1b59ca6699a6e68cc601c1ebe8219064c018bdcf71e3f76efbdc7588201066630268ba03abd420d2d91a6e4c5d51327560f9d38c1292684104c1daead6b20fe616868fcfe379c378bc914d30a18638a8b008452229aa5595a8a104dfcb1a4461899b972f450b5ba93c95cb963ee5ce78ac1351bd675ada9f12d8d736d51d32ebc8eeab27ec972972dd28edd7beff163f7010001d15f42c91542d309962077ca861d5a3df13e1b53426c4c48c0e71dec9fd3e8e2fefba6387cf80f262d76da8b5c936005bc2c08bc7dbd345533d2abd394bde2c48957bce204d319c099b5faf14462365d5adf0869c231c8f0c1d2fab4939d0273ca12f94ebc0280e96cedccc692915c2f7d7040dec5e40bdbe8183a85ee46082af535a86f88463752908ea4ef5c2b448a04a570ad9e8056a0fac42aada6f8b44a65a9f5d02c6d4ab6327cbb3cc58a9677db6d9e39c5a6ca49db4e9a3a809d4edbe0896fdd4cda76ff9f7b1e20cfebf728812226141025b80804f47366915a162d9ae7b2a6659b76d9ea6632998ceb8aefaeb594366dcbcc7ec2f33c6f8e6e515da75b746e488e74149d44880904b6deae9e8293a034b544cfd40404745bdb69175b72669a9bc1ac88cd0b95561323c6e09127fb7d8040a74f50228ef57142f16b671fa1492e572e24d300fd5ea7e3f1248547665e8b29f97898566a0402f4fb4f3e028c01a4932a0fb89d508efb51d9de3b21a3a4d1213e29becb3585af2a5453a1a9d14a52686a7ea350d9dcaee76a8d488e750a5a7c1de484b66a5a7ea3d010677dadb2516bd4b462b9d05880452c99ca692c66bbb806eb52f7b67d0a8a1b8546617b1d6af29d008912126eb7b66b7c432c0e2ecb15056d8982e641093cb08479a703b1da692c15ef16432d45a93f1064db2c3436361ba9a0261929178f5c409b85a0651ca38293bc632d594858e56ca166118d2c36f4b9b200083305ab9c350b09ab9a33a792e66c7aba6c8033438a890c2b4c0324cc3acb694920784e800f02675224036712335a1a3076320c9374c22e18b319ca1259e3b09ea3b9b496ca59a564236138c9f4acae918c6d6732dc208491463a6b378ca49132ac291de34c968a56d0d97c0268b948759264c67c2691d393ba6ed37c46b3218f0900c38b9462ae5980612a914b567734aca56d465f9c5a4dad1da73495cad9505f4c34168daca1671333472c2bad69195be38689e776206de6e122cb24ac2333cc64966b975881cf245d4881edf20c07022e1048721bb324cb2ee858332c4cee48576d0a1aab710e1a9dd73462260ee99ca7ad8d440692604ee9496ae984e25272d1809256e005ca920606633ecb535cd7b5949e2f33922cce03e044cae63ca9730e84ba941a59c3158d318ab267d3946e5475aa2f648c8c1ec83a9e976b7a05dd891e47c889eb7b88057a14e29a253b7014abc5cde473c4322a8ee63bf87525bb2b08104e76f544d2f816e18470bc6b24133afc1ee5e40ffe80706a39097d90cab1f68b077a0d638caf918c91c8900e06c01d92491819f2318c1fbf0ad8b18c0c89d258ce358c1f7f1c8f450fcb7e0ea1cbe83508552b312df698166a4c155d50240ab31c262fc7c9c8620ae21818ec92c413e705dc397f3549040c22c9abf1e7df83ac696661e35cc2b46d33716e63e4f9727012f5a2fc61794f24869e7f7d72fee8f9c5383e0ec8dffb38f8d09572c8ca2a342a1be590537d1ab63717a120a5b715788c02f40068329de4afd5f3fcb57a229d846e26d95f4e30fd8aae5fd15902feb76446c1cf1242f047d041257436d4f28acedd301c08d7c4e8550f7e2d46f08f8ed69777769699c1ac43b3a96c36559a9f3f64493ddd7e77bf37470129691fc0e16d313c59fbe4caca1a3318e10fef134f946c102377ef45f822f828277ae3280ee222147269d0ca02909f84666c8a2b6e75f65973caf894e33c9b6d399f3212d7c4d9eecccd39e0cd5613c6a79c56f659c7f99431653eabe273ea6cec0472f30c5a5263d554abab291662b35dc9575a95b8c86fab061dc7e2fa7c363baf73cbe97aeeaeab844952b9cf72c4203896eb7a9e630d243a089902c790360104715440557427ba0bdd835e815e855e8b3ae811b10bf2cd7a25df74e23a53856665f8b15ac9078a5483c070132b10a81b17477e7925df04e4babeebee2ac942cedc357339537cc073234ac195115d91a6bfdbe9743a7ef4e5baaee7ba2eb83953a61afaf25cb1c05df59d33fbbe2cc737737dbfe37676838feb0ee9d6ac21542db502bc7d9c539e0e71473b2e63ea7402f5be5ec099fe64f07c5e7147a530c9bdaf739531467b011bfb57a58edf05a9eca3d411153ca2c80df0bf345a4447049e540d7427e2b2a39330d0241dd65dab3687df020af59f9c4f45a14bfd8e6c59574a5ca36837583c565f6a53f682afb8703294f9a1219acd42b3e8105a4767d03d08b587244e234fa5e1f5414a2d29c99e8766ab94afe483ae0e0badae79dc30b8fcea865fdf8fe9701ed94380a452a707c81531fdf7744442f1e5859a7951a01b8eb8c8dcefedee3a96e7ee7aaaeffdce40938fc6f49eec484fae229b5b9292c7d256ad38d2239ed30e81d809cd7cb3d5849eaa0c7c6f0f4919f57d3109e3936a787b2e28253a3f90f2aae117cd91edf43c2f764e2da14d743f42d5f1453aac982a8e9f11b546913cb2e899ac350dc6a8e6a06853a855f81ffa1d01cda09b9b9beb9f187d1bcbf9c9614dc51745375e5c0df74748ef008ade4dd07094b057d92e69e888d4df6c557285b652dcacc7a8ef7c0a944ae7900ee74ccdaf7dcd722eb441aa07b42f04db512c61095aba8ee51f7b553230f1509a73fe408e12ab7f4ac0fe21eba3b84e624991f6f300bf79fa62ab75f1362b9b15d5e472fdff4bb27c5ebf75e1c2d6eb33d637ace969eb1b56e6f533d5eacceb633cd35aa0633d52f021084b1e2873fbad8b1260ca6e589deaec4c2d9bb29c8bd0bdd8ea645372e5eca6b29dd96a75566decd6c588f602e8a2b7a3af0c345ce6a0982be417427db07dfec4db63f27bb3a084300183636bb3a9089b50536fe4af15903ddbad53d0523a7c15bb510ef8f5ededadd61ad41b5b1b8d356849098052476b6c6db743f5bfc84448b45229ae29bbc19cc6377282e689b4d95210e9e1c0e01f967f040063a0180008c5808ba7ab00463601041b4e22e1a88001503d5d002c934826449035fc0bfee5722f5b5f6b6ddc3b97a966e6184022c330e63a600ac0a9a42e32a6b9984e2f9a668601104c3950c09c63ccd209607399a5ccdcbdeba1269066724c09d129d6023e0a66f29bca6f820927806171dd02ccb0ec0a604ac05a5f040c84cb241ac5547eb3b00c8d504e31259ac95b6b6258fa5bcb2523cdcd6c02636c14532052991c9b7ac2c000a69b241a4d4d1946c248185329aa1173d1141d4e24b8493413138d40aaa86382135993a78dd2f290ccb38a1ae834ba24f06826113635e523ea54db03c65835c6171b96d7d6879ef8d013fcf9fd7680abadaf2c9fccda76f6e4f2ca7ae9e4ccfd5a36919bd3fbfff5ec830f9e3d73e54a4a1d185a22a14d08a5ee9f39598a97b0b6b272d2ce3af6fd9a3e974b64b7ae9c51e5f40c2e32ca434405fc3010ec2d853fcca1430881a099d6409c135c12533cd29bae73b9cbe5d1d62e152bf0eb349de8f712197a269b1247c2d993a96ccfb1ceb4a1b07d1b5cd29349fd17fe85d8c5ffe2173e954db96e2aebfbd2caba8311da0df8c6a81db3bb63b1308f85fdeaac0009b3558842bd30d0553f631fa4641a0a574ca1066a49cecd6de876741ebd0a21184607db3f3a3a581d2e093a0a27cca63a314c5082bdaec0144731c1fe6e981ebc9c29134e420115dc4c658750c0ce2043400faab94ca259544628ce451cc35eeabcce5b25058a53d9ec537da9ab23cff6235db7d3013fd20fea665321d691caf6773b9edfdd1da23f73e8047a0ca1f6f099aef8936d5e89943c1aed409e1e33d46db41b324b3bb4ec0dc8cf76fe546054c09b6908097291b6ab99b41758d6f528cba6def114e8454b50284fe9b63ebb66830bd9dcc5d6cc5ad6b5f3e48f2fb6c2388cdf6c145233b5a401eedd7ac650295cc67a81dd5b4fdab4ddf6949eaccd5845e32982735970c15e9b6d5dccdb6e766dc6c8fc87d6c53052cfe84f8191accda48aba7b19139564885f98450da9f5d86cc716d449e04ec40b1da8af0c0c9f2ad0e9ef7ed8fb9f724e3a96e3f9928cb8ef570303bc5f556a5d2eb8916ef1fff46059c47e52612eec93f789d8aec277714c4fd43b584bd4e181aaf15a70842f4647793b9a927d95466feb5053e326ed040d5d154d5a092c05f7d71eed7fa1c318639d601a56fe85e8ed0b12ebd24c8a227b1881af3b81d558b49a49c96ee69be04698b1b7877c1fba914a9cd7df05df1fc6fb93681a555113dd862e8de8de0ce9ecc52555c3ba7d7c18419dc07d7f2c46913c1d72e4ffce00438e63cb4effbe317d9d489f7220b81b53ac844896179be38ab401bb05249b497a2026d409b0b7ef0c6c54ac901a3c1f5ac93d63397d3f461fae0c4c5618bdf03d11ffbd0ba156b5200124b6177c0dad45d5ce5b40edf76ba73fdab8b871cd9323eddc8d5a779eb151639bee784307ed5c10b42c8c8c624c11519a751dbc9f311a5802675312ea36af32d6ef49c81e99d95e0d117d6984bb19a54d659fa0a6b687e276b7579b038276c0ef976d6d1fd05079941dd8d6de84868a551a35756003ec583ea34143d46171556e61706538004583960ef4de4cd44027d143c37baf528c5b940db53966753624691fe8014ee894e26d7a0227109be4278946b404c1d5cf0904e873554c0c4e34ec118cb1f7d741aa5fc21ae106c6d5cf0a5cebb3554c121a65c4c318e35d55ce6cf57890b52af0a86a90c3238c8ae28e87a9ce61ac52098c6b29a8dc538832423cc68398474750436227af543a6803bb131e9b4449b28d3cf34aab999f10571d89031418a73ce987330bcd2868f97e3c1cac4b99481cff01e12fad57645869f606a18ed78d3fb88307c5a375251ee6a35984029df4c5d8149d8c9665af2fd7fdcfcbf5e531f60fe4baf3e5e3cfbf18daa33dfbf372890d9d69772204fb984b4b1b1765ea1022944589874c3c026b750e85e014f2a819b7e27fdfdf027cfdf23dd7aedde354ed8dd993a5f12350d3da500cf687a74cd55551ef6fb3a476f9bac8cef9462a337e0ee6ead9f6c0fea983ee905a66d1daae374797f53a8c5af41f17fd9cb0fee1d3412b8c6af7b78d78f3bcf045ff67257af16596e44d23e8af27a0e333016032ba8159b79c8298899f34c8fe0a6523af256d15f2208ac1497b5f34ffc7213abd03f94268d62a29aae2014fed4ac05dab8487027ca92f79661981435b4e464b24fa2f8da9bb4701cf974bd34f65a1e7802bf66688de8add1c3010a575eca490f852f44ce0bfe8a3b0075df45a849872df7142f20e36b61a212b41cac0b75a315f4391cd603e253903622586ee447620df5890866eca9788566894b4ed3afc65f281ca9206a6c331063d8131033098a4f3593e9d5e769ce5743acf0013a219001a86840118f39c097aa5f2403289a10f24b93abd9449172c4c7172de06aa53c8e8249d304d8c215d4f314eb38bc9a46926938b59ca59aa9e06006c9a8934d13332bdbd90040a56319d599a9e9e8379656789a52dc443e835e85f4523b1068d35a86f6db74e481e89629b4443b255ab6fd55a236c12e92365e05e498986233649416b54ea05ad51daa8b52303c035a837a48542fd667c1829d6cee56541211f66b802f8345062d46b24c37402980033087083500aa089c1d64c664e1b464a32658846443400003575a085425be370a16ae0fe13d8306e9f9bd3209161802162b0108c81da49d34da75dd3b4a9185c4c3900932c1600963180cecfdd6e2c324bcbcf668063823123800163acdb068834093d9b346c6ece264094a873ee2409c3c6540230d735033303082590703420a0a712894226639bf962319f5bb04cc933d2a742260a3175238101ac459370929a368c44c230a6d34423e6a2058013866e126e02e10452533a2690cc5ad67c2ec6679e456d74077ae0661672f2a7b525239b9b32493e2733b443ee73a0e9ce479e01b5d6d695599c201b62e1d56a75c7ce64ec76adba1a0bdf6f9bbf63daf2ab639b9a086aa62d6dec460a50e17e3363ef544511b5f670715f08f2dae6634181b619a77f2db4825a085587b940b76829089d08c23cb90f51d51287cee5ebd77ba131cfeebe7494a74ea8cbd7e37aad04a1f62238e84fbdfffc9fbc3fc543b4fb22ba1dbd1ca1eac1eea92ac51f9a270648b454e10912ec4a5ed0ad72bf7647327aa2b0ff76ab4cafa1b969a2d32196194ccd8fd01b3f3a056ebd0be16cdd7ab36338cd32ba37b0be10875f7d820716d1cc086b11f131a44661c712d719f578b29bca5ebf7ce8c2cc7a0c69af3c7c4cad25d1dcca2347d562126faeddb37a61662dc20c7bd9d4e5eb95f91871b0b3bca116602abb9b4db597d7d5d214afeeb9565e08880471580ee6e430ba13bd624051ddd4a657e087b7bc9d7c89bc9cbf10a036e7cf0708cf85f301dd74fe3c63fe4d769a409619bd706152de41f9fbb33362db3036a71df4a6404b432a7dd6ca69501a1b6a5e53c0eb224ecb2d06ea1b0a7f5f8022177185cdd3812e879acd53d02e8a38519652ec9033cce3a3f127c7096787395fd2f3fcb09e31d2c9662263d8c68a9ee315ce57994e8e27d2e9c471a2d3c39c57795e3fa4db7a26d14ca68dacbeca737a59d757a84e8e27d3e9e49f0496ca7fa8dbfa213dcfab9c1fa63a3e218a3841385be5bcc2f37c55b70d5544463fccf3fa12e787195745889a5644b29cbe62d8a241c9f4df8bdb34039adffb0df82ff01ec9e9d1a44d0d2ff276715b5acfb4eb70c424a97f523d61bde52dbf74ddcacebc7be6b0f96bf01eebf0f4bba7b3d6f5e7ae5f374f54ff8945cd4fcb35a764d23368019511620dd250f8d70e344823ee81a21e3074e17fedd29461a4d82ec68a234abee1799e97015f60997d9f72261635e339cfed8efa31abdcdc1f9fac643f065a5e547500a3ace3b9bb4abefb5f308233c8403368196d2bcc3ac08743064969432097b9463bb4d5942ba332f404bb7d2f95c5c8e93baab37df47c246af83157845c6e1870c6b15cd772faeab05a58b8736141a2cba13041fcc6d77a013d184806873d8f08f0db2a6b7c027722e22e36028eb1e25d47807963bbb91d1f4be54f257251e258c71eae28fe89844cebb317562f5fbf7327edda97af8b7865faa7677480f595e513b62d23c01bf159f2b4e574369677a2722c67be72fdf2e987728c5fbf2c2294c51f006885c2b943871aea39d6f7aae4f9fef027e6adcb866efd4489cf49111d47a858b1632a0a0383deb807b5fd5829bbdd6e5cbbc281c4889c3c2e0b7721e0bef50363bdaf4c14cc2bd17ba03fa2e8c50a3a82b6256f7022db7298c06fb72af926cf375b15a7d82415d26c37eb8d62a5dd0b89d301652afdd48979fe1fffe0ca631fbdba933bf1fae30f1fcbbd7ea374aee2329a902a2d4f1b411f24fdab56d74279e91da525c81f05b4878efed4952b286a6f4fea35bc03fd33f49bfbb53754280c1b3cee2f72d8d36c602136c1c96c2526d96e8eb8959de09056a91c8ff8bc0ddd7ae6ebcd5625cc23b2e59bf909631611fb7f061aa109aed9096e6a2c41a946a4ef1446a8a1b124e349c67445cf604688ce18a784420988a093a8c1584233321a173965c6252020a5c49468526c4d042145305012c8922996daffb079f448508dc5799adf21e74ac0a1a713e3dc0c62a4b9966494124c38a3498d5b9c25658b39211813ac6b4075c60cca3821848ab66aa2f18448930346939ca70dc3d60ddbb029c3d2fdad20cdb06817972d96b152b01eb6966ae4e7f6b84545391403d47f25265ff65165205fbe9555ed0ca9111547ed81f79536770f98c1fb948685e538df8d4293be0edc0a037f0f91d38a3d34c1934fc8f7fb16f8281f3bc737b446ec243f6c52eb57aac7cd6b475e7dcdcacebc6bfa90f902f8e6e1697f3a6b5dfbb1c3d7ace34b1f4f11f385986fb20ecaa1c30889155d9243540f9d13b41b4c096e42bf72e218946abc674826091dc77a719b2579c772cec06f3856bf9bcc100fc0b1a0a3425f4898aee5b40598eafff66faf5a8e99e8614682dfa13664d02242c5d193561a3c04eec85a5b35141ea9b0fbbd36350515819123453fbb95ca2b2a15f0b6c51077421f5faaec143a82ce4bfe5f2b565efb60ae7d1a0682d681bb33050e602a29ba251b0053ff712223df9b53f6f296f957aad57a46775ceb8fcc52b62d52763a1359fa37e6adf4ce72b6a496cf6384a492437e8c946f8c53a39e310ef22e551cf29b176c08f094a43c149c4d0c7f5281800824b82109d61d0b7c529ef7fe608b0cb5b98c36c6db5c1df57c27c6bd7d80cb15d88db5adff74c853f52431e1dc176b3eacc5524664bea7daa63a23a9a8c81f89120549bfb2031e8c8916d08ea01b87642ae14361ccb42e60bfa85889a9ecff2612a2488d83e51d51fd953322ac700ff15c2cdebdd53a2ee2ce7bdeebe6e6445ca974fde25d6e2811f145d4ceb268f9d907e583c25f44c489add6ddc5828c9c9d7bdd6dde791179ff5d775d2fb9311c3b8d96d016424e2586bcd85b353669cdd44712f95237a3231097ab232be55f0f5e0dc93bbe33ba4cfe5bfc6da0fbdc0dda15c9a5c30af9a4150383667c7164490cd7dd1d9bfec8e7ad2bb5faca1aafd47971d8fd022f0ebc0dc0f3f387d9aa3ff5f813ecf07c697dbd347f983df1f894bfaa1e77abb3fed4e3b3d5f55269bd3afbf894af82237272c5bd3f8d2eef6f097ce026885b098fb844ec0432ef55e54864fdcd71af4971e788fd487efe582c36b2f1fd92724d525abf67dc07d14042de732cc54b0aed2794beb2a055b6d17d08b5c7f95e02f4decc75bb548c2a8d20d5610fbb06df303837360485e473033c797e2af5c63074c972fabb03cc1ac4d2f81237ae893cd7a452effb8633a850d7b1bae171dc0fb30f74ba7cb4888e8a3579d3e6f3e11514ad9edd096dfd5bf387d94f0e565310046f5203a596965a5cc1ca1ad022ae94064d1af178738b036d2ce5024520b40708efa41ea5e41b0e588f32f4a5b572792d535e5b2b6788399d1ae7fe529cc899e08e64cba6bc9c798fca274be02986e9380739e5a6b986e232dd1392c7d5416f427f173d2ba8c19640b1796b0deaf97a4b6d9756f114b4ebf9b5106c14f381c9603b1f1a0fca13bc1ac1f2b236a4aad2a82fc022e48ba326e4a3ce3706e4f7107368d7d733ba6f64b8a4731fc58c3c8329e606a55d4c31a6f8c33f4fc433cf18fd481b25d0f877feb44635202efd37c1f38309539996e6eb99bba9423e2fbd7dedcc99b5b53367b62edd8dc9f94bbfaedbc6b72efd5d91feef9d34d2fc4ec0a0382a183a0a9d7ecd6b64dcdb280bdc223b9156f37c315130e14deedfa7bc1ac6fda34c3dafec52cdc4a580bcbcb424eb5c5b3b133b1b97510bbd1cbd1921e585a93dc09c22ff5271c36ae5ba49098a25063ed907a19aad80fa9ac8d26801521cd3889fb0b3bca13811e2616623b7be7067dd729c47ba41f3dfb73284baffff083e814b73c305b8d72faf5e985d8ff1282a0f1f537c0809f3fc94b99e2f48a2bb1b94f6fe50875d1c38b3d68c79a27efbf4da700972bcfe2d46f06e94460e2a4612fbb8e94e649cdb2a0dbb297bd1f701edeef67df0e1dd8e152a2d5a4edfeff57ad23075a0a3388b76d0a561bfeda3dc86ea7ece86c55cb4cb1a27b970853b4aa51ebe1ff2232e9c8f7122fabf32ee825824f04d1b7be058c1cf6742fec4f9f343bc89bb27782596493ae964bf07045b4e3a099e0c0cd9769f4417d0fde86184a0510f346b95a961f420777da3289e4315c7c1831cedba2d230a9b79bbbd913b0adcded83a0a6d479651dea8db451bfefc8382bcd6c9cffd049577966823cffd4f74ae00747ddfbf02d081e31d4c087ee52b3111e7869e62b167e8e8a9febff6c03905d0ffee45b80bf27057ff9f9e0670bcfe77637858414238b4cfa1e2fcf0cc2fd71f3a417e3be28505f8a50c974ecebe92db8a17a69c595d5127a052db9227ff1fbc72f664299e69983966b7423f5881fdd4c7e559797ba84112acb79065b3bd15f0e48b85cd76a3bdbd5994f673b57a6d4b2c53f514bc5484ca97f3db7373adfc9fa6c5bf5a2e574fbf94cd66b7b2ff56d3345bfb779aad69da4bd9969dcdbeb4f0c0c2c2c2b765fcb7f3f93cdc9fcfe7f32f894c3599fb25a799cd6655967f2793fd6916ec6ccb7e690116161e58f8b666338d7d3bdf9a9b6b0dd12f45c9ef1edabb2781976c69a8946fd65b4526b66f27507ce8598ed7979bd7ef74fa5df0fa3d412dabb7bd2e20cf75dd4ea7e30efb40594447d00974013d06af86c7e127247e38e67fe2a43ac676a051afc42daa16a0ae8420816ca35d1c52a4beb9bca7bdb9d1089c8d35233f1adb8d56e0476373a3b1b9d5dc81869a432d0d95d646217e9dcac6662366f0d1541c32692622eaac6c6c35ca5a85cbc93d0d1bdb8d66ae360f92711e602773d0181cb28d663b6a465366696e161af98d5a23baff65b3914fc1213914624d6de41a71194f24d769371b4de559a0de54eff239ad1d93fc49cd09756c69c5f8c6fb598d732d61685a42d329e7cdc2bbb9bc720908e0f30019698121be5f0f840026a4b6bf675a4a80700618a631c3184f01a5694ca50d4993526ad14416e708a5649ee9145852239c529d519d19d944ae6a03c65a9269265b010c3600a6d8029d68cc643a214417c018130c19664af3940427cca4c4028c93a2d824a61a5b48518b5a866618dabc9ea45c9bd2b479004c349a32340be3eb6730a59850fa5386666b3aa6841292d18c5fd1b51dae1fd5745dab685a42e74ef36f0f8c6118ce608c1964309e2790106394c0f8c30779dfb5a6cd34e3302df2e169004a29954361520a3499014a08a19413ca08569c5182b1ce4553a9ce006c600090020a80354d678c10ac314a199054527a0e498a32b12e4aa28ce929c62cd0b5054da7097d5bf4646b0e6b788172a271c3312e5f7f1fc5594208c962fafb62e601202d8695ea212eaa645f19944353684ede36b73c7ea247a60d5230150fef865601ca86d597ff049810ffc01f182698b9beefb99eebed21f98386fc8184f58fd74c4aade8ff706dae4023c2cfc4aa86ef2b58427721d43e48492eba696460b429ef80cb5752c01bbc992f45d704c8b6bd600417a304cc6575af8af1ac68c6b370a4df31731e743eee6086dfff7eccb0f3f17ed70b0d7e3b89e082154fddc3e2056525a427523767763dcf213af6b04e1ccfeb8426be43f29ab99bdd8a54b1632768657f0d99d0cff401ca2f91836955bff4719f4367829b6a4686b5523f01ad866842a3ca8ba1dc2e74e5c99d0568368ac72276367c43614e39932758478c84eb1283f7bb89cfd10473e667f385198a3f9bf0b1c5bb02ecc8541e639d60103b72f05d8c715737899ff82ca6f38e333fef30837d2ed1ef72d3558986fd22b8d2ee07c55c524e20317385e684656997bae344643605ded81af547094635c3d9d42065df033f4e1b12c45132b61fc5995cc9375b957cd399d41452c937db957c13ba9efa37d6885dcfeb48a737bed7f5a4bff9a1cafbbb9ee70dcb0237a5d64f59522e15ad269dac2807acabfb90d7274090b0ad9bd8adec3a25b39658b4cb6b96b19aca524c2d36bedc783aa198d0e16d554f6453662e9b7a3e9baa99497ca46ccf9b35b3e4f02c1f5fb1cca298fe59ce3473e1b551579b521f456e1f449086c439770299c89334c69086f9400fb3568e845fe2940f65634386a08d566da3c587761984cefef708b6e6d2eef9e5e27a31bfe22cb4a7984e35cd9c4fc9b82915470d6955b9b7bcb3b35c3f7ab4fe5b210b7711130d67e6adb9c38646592669afcdb004e3199e99b3e60e2718306a27ed23332ca1618d1080875401cb3b28262ba8a01d69531d09cdb7db953101c82a34cab57af5141cc7319942de6e37aa074e277c74deaa4899c0db8644254b00d992d9ff28c924ff1598563392aa3ca70c0686cd197e2c14110ca4294f58e6f5846949d18294b5fc7878d79074c11fd90b90c8866f0e1d9577022817250d359f2702dbdb601ff3983bcd818aad4ada60ea1289503e1a8a66638e8f44ae066c24b2bcbc8273662acb8e6fe025c93c7cde36f9ea2237ed34e5ecc889849d95cee26666abb9b5a9f9ad3c53706afee2a1a5db679825dd8682cb58ee6ccdb4b3298cf1b1d7ce4c95a5432d7bce28b76d9c36cd1ce0a9576c25166d91bc569b210ca7d24e466e89149b992be408d4666657d42db5ca6ec2412e6a22e4c439766adf3602cbb9c0596d59e34a9336eadb8be674eaec830f9e4d4d9b8b4b4b8b47e62b9579f1e90411c16bd866ecc1b3671f646ce6eeb5b5bb670a8573b5dab942e1b69595db0a2e6373970f1d7af98c4a13f79fe9a3d3c15d108195df8893b9d0436edc45a69aabd660fca1375dc527ad8a634d27ef097cbd6a49760f21393b5b98171106cfd6db708a6713ca996f657ad14a717e9630a2f8bc189fd53346b16e6db34a514499057d1b76ea44238b4c93b65224f2dd2ea0f066c0253d34b0646fb6a413847c5334ea10b49a4ea525fd98e4071709ed7624c7b563391dafe7751cabebfb414850541d2885aa8bbeebba82be75f7900848601583c5ea66890dad1e0861360a5c4160beb15d5440b8b8516b2b381c0746183d725cd3966bb5dbce90e96af56533d3e4311951f5ced0e96af5f699e91f846ebfd1593253adbe6c7a863caaf24449c2887b06cedc78444baab32ae206159b76c5093ea469574a76d326c133f2bc9ef46bd2f53cf05d11f63c7780c58d7e248e18ca4f0ce4484fd8a81892411527d268e2f966ab5d2a861e0524a6d19510a2b71b38a7f86ecfebf722f97370b3534f292dedf67abe1f70fe1d6b988615fd73d0a2f401725cace06ab3552955f2cdfd7c5796e25e919aadca909fca66ab220ee97ecff3a033ea9f72e0b1f2777abdf0edcb7a3dafd7db1df7441979a474bd48ced117582f8e6081ad6e7f1ddde83c7ef3d0c8df51e9bf6dab51ae55d686fd76ab3f65b6106aceb74e411b3ad6b4b9b0b4b4604e5b67ae5cb9aa343c04c58629010cca19a266f2c4948919218cf0343f73e5ca199ee6443ce3fc524a25c38461f0289dbffbc891bbe729bd72e6cc95dfc5141b59c3c81a98626e6a98606e0ab25333996e5290de0c4442ac9c18f0a98c20e04c8e09d64c3e62db5aba89f65dbbd2e6fbdf1efa37dc4ecfed1c740b4b77b71b5b3bb3680d5d446f406f473f83bae8d711aaee477bf0145487a54ad2fdcd810cce1125d8317bc861c55e32ca88939cda518e747b12ff3aba58b233aaecc1e8ea0a63d23d4d681bf93393d3b83cc95656c6754ee0482caffa527a23fd6703fd1111f7c23eb9c5cb318b2391f02361312285bb4f22eeaab68db6b817cfacae920c9bd88f19815a4e6772fe40f72baedf707e4c5760487f67f8e68ff6cdee82f6e292cfef0db4ede212d16727c8e6dc31f3e04847c79f249f0bedaa05fc153050dd2623f74d632394a9c595abffecfc1b66e7cecccec9af379c0fa4b6d07de48ecab1634f2d2f2f2f3f75ec58e58e47f65028908df1c37d7907db127a2006e3793b3f08f2282c91b481be4b3d50d96df1c895f6404216c7579104f1be12f4babe2b7fb54c62ddf6e4943a6f7b9372c6e7074efadef216c2294fb2f7c9719273ff4273e379f1db757d578aa0be8db12b07f46d2d09f83ca069c3723086a347016346dfef58a1cd301ba1f166d5dddff9a62dbd92d963a4a620efa02bfef57c1f504c9c72441c91dd2e78bedfefc58cd97b62958ac393463480389dcba8a1d6605cbece2bad66708a4617220e3f821b5b53477ac1712a1d6f3d390876a52301f9d5ed00722c57c574a2d0902f3282105850c7a88f30f2a1d3ebf546df1f812217ef7dbf2bde0edfbd56472892cfa9a5103b8beb436f24db62feb193271ffbe580c9713d8a79f3cf8953f3e7f23333bf131ea0e9284afaf80be4ff45e422e44cbc78a4d26adb257578ec2e572a5ba974d63eb9bcb276a85a3beee4d80f5c404a8bf86f694eee58adb6aa840de9d456a5b2f283ca5e70d40cfb999f152785acad32c9200aa3fd0ea0ee3e0757ec0c4c4badf949ab6c7774714d58548372242e041535ea019660ef43288e586ddb4a7c2a597abd4864ec584f8732b92193fd0b4f4b9fb697fa3df0943b12a553184b21c9c1662c3720e5176137e069201723798f7b31ba114bb621eedef05a208afef3e0175028258ea4c5715c62465005edb82398b0d7ea325d27ba6c34bc27566da8de4c4d811ad1d4fb9fb59cd95f5016a5cf3e2085e2ca83575729b9c85b801f70acea2c7852f7f201717ca9a0829bd26e7a0a2da10d746230afc721d618a9fe1403d2cd7dc2d0eb87e72f4fb21f7f411c2ebf1c50076f1af9055f39a790e7ef33ca45c5eee8953e31dfcf24e6d3417ab39ec0771db34bbe65939e62886828add421876bcfdce46e3d28eeaf74cebe73f3fbf626f4ad7a939b707f38ebbfa727df90fbb4b2073cb06fbdfdaecc155dddfd91fa367e0ff9d826ffe1e66d3f7f7cb7326f23c33198f91f71de6e41effad6e7ed001782379db7a843a14e466cee6f69dee234cfe99bf8f329d7d62154a3e2219330f48aad848bfb5244870ee8e5fe74d21e6274f505894c4de8201af10173dfadcd4c7bece660257868867e8a04092cbdad2b0ed88133e4c42e1b5e9aa7db55a040c8cef2f20e214061694b5b58bae831ba2a2f687f76c2168ddd4d5cdeb6961aa0678ce59d9d6523a3c39172e6f852cc77a1f27d794fe8d1e1c0ddb50e133a1a38418f4f19579d3c688b75aec67a595d009cb63a562597ab581d2b0db0b074f133437b6ca4af57633d6c5b2ca9a98caa10caa97d4cf57180d7dc1168f4c504f9a3ba7ac5cd42236eb85a892c5c1be13c4a6307699535a2d964db279657d601f48c3e5075ba7ed976d33b7786fa50b1eb1d233dabc6a143e70a054d393f0cf4ae2e5fe72cf7d069a59a15efc333c33a4995d63e24b89abd834f82fc7e94b65cee631e3de0fb21459d787a3f6f1b934c326e39fd67fe9f2966dff4ea3e7d041d752ff09833b8f8e07cf7eab813a6f8c5bcfeb00baaabf1b2670fd61b8307fcd1bb7c45259ff147affaf543d33379dfb0075d40a2ddd5fad844c72e16fcf9d19685a53d33dc93b0eae1b227de951c3160fcf1d6a97a00c5ae2a8ed5332cef5c42af408f200407fa8a51d2a162311643c2eb3dc5e6751a139dc8c49c1bb41bed3a87372f4d5e134ddd64a756de1b3e2efd25337549643444a83994a9ffea86c448659693e0eeb7fc38bbbbf9cef001b61897e8ffef323e92415a3e717669ebd2901ede3c3a8e7e4cec6c678219fd606af9815eb3d8c8d9b40ffb6da21cedc9664ccf329cdfe2c0dfd7c0cd163813c460618261b11a7446338b77cf0ce50b0b7363290675aa7b87c7a56e633edaaa933529861649e4d0d08e19a44957ef63de9463c7a92f69c381596977dfc38c25414d7bcca75b4ca63ed06f398c3642adf7885c6a3543ffdc2cd06d71467ea5344729bc757c41b0f55fe8743a9dae74d4296db251745fb0ef2b8aa8dbf13a7ba8e375fabee77586f7621695a56fe4710fe17c32711ef301fe33a31ec205a53e70f4ed0f7b0187111ef84d74469ca1db44f7c7fc066cc7fdf9e1bb717b3f1ad91db811bd1a8a9ad310d3749346066a6388d928c6d0eae12b27ee6bd3241730715bfab2bc77e6c2eaea85997ba53d88e775d51da6d145a7e0b5054c694bea79be220e7641c1ba936e3b854886b218c0e4d87251dcb3e2c0606757711d0683ae38130eb88c5eb82fb258b1ee932c8a9ef4bf1df2bad2283b4187ba551c569d7e21a66f296775b727d753221ad362e05da02e25554dd416fb1262572bc417795c892b5ce4ce481cec767dc5d4933ffd6703dd12afe7fb7e18065fdec0d0b51cf10b1db1fda4f295ebeda16ea0ece57ab1fb0375e9717c1535d15974177a2d7a14212700a9636eeaaae18b7a1808817265d47b1d095fd4475ddd852f141f3f34f071e069f92cf94f9eb250f5a017bdbe2423fc91e7c033b93b3014526243f9d45393dc8d9911055637b1f492d5e3c5eeb19e0ad65765985da4f4ee048972bf5c40f729ee901863c911f2035e1078013cf6f676a127cbab1d50623110050624903b5efe5b9a19dbce340b5353136a5aab17b71716b68bf5c50b2b2b170278f6ef31829f94b7f76f49eedac49adb4315d7879f76e3cd30b554d6f94fcdb9c5c5b9cd72bd56fe48d89e023c42d903d2adccfdd2f19f97cabaf5fa95ade695faf2c65b4e9d7ecbfadf286e2fccb70bf5c50bcb2b171687688f65392a95066ba4206fc7049b27a19a8fdf3d2bb6c72e26d0ef25d3dcd683db55501474a00b1eb6cdfed7315600e32f9b9f0a83d0096d9b7d84444225711418556bf49a8b40b74456e86b09fa01755385f8fa003334b1463d4aae3d30801f0f5c2354b1e2551d1e42b00b1e3a12ab23bcdb48b92e2936825a86aaab404fd5a725689771cebab2bea0562bac96129f99ba6e325f543b543996ba36a27f6929171ab16b6c8e3c0ff6d50b830de8397179552c1ce0db61f9e3d0d18fe51b2e6630f63e78626f55e54d6c3c32a6908a26edfa29005fe7d00362285f2d06811e70bdaba728f840882a9410f081a6e2637d5895d908644ef31004c2c21bedc871b5bc2f117639ebd284185ef92d073d1afaeef0e88a3a63633fba8ef6ad2fc2a57c77b41e3718a3d10ae2e3158e7512a16acc0d2674434b886e604b11c3234aa81ae737f3a11b2a0e41bd392e59f870667930ddcb990f0fc9197a3161a417475d10410f0532480bcd0adc8d0d793418b90b3d50db0a2202bac98d7c926615ba9cca66ef3ef3609b1bfc97b9c1db0f9e8d44a3911d1b74ee3d7a74e394a6ebdaa98da347ef156b2090414d23e4c82b7e87aa3e04ad537012bcd79ef342d4c8f2cebd16bafe1d6f4cbe272cf63dc937dee12340afdbeb41177ce420e46c286c2c20342416f6d753d3c7a7a6e1759ef7d0ccf4a9e919f04bee6b1a1beed94ee75c6963e335ae2bcffec11d35ebe82c7a00bd11bd0dbd177d08fd1242ed98e59ad4dd88194ff0119e85bc5065821eef248fedc511e254aa698d78b68bf9df8d216f7cc844c11f39442dc7797b80cb6f04bf77f024db08907df1fbe2c8f3d248fa9508b87c37f043b56c0ddf1fdf0d7e7f6650793d56a0f8fdeaa03cf5db1d8df8e4488e4f46eb367453e5c7565364523cf0512e31ff81a7a9c8cf94dccecd10508b712d56e037ba349348646817c0b11219bad9dda49984e5c05f1d3bf6d616f40cd334fa1e917a93c64fffb4613a1661ffeaa31f95ebb5073d69e78b20e6213b001dd1d59a127274e37e3a94fccc013f24bdd41d5b2a0c7ec85708fbb3800e4b69d8a8dd63b35d19dc96cd9d094ed9bf12a3cf8d34050fe45d76690a875786ddb53f33b04e4ce87e7075deabe0c2b8137712f367a4a0942432f2a5d14bc688bcdda6b459c8934abea9b86bee1eea8468373b2e6849d1828ee7c1031e65bd5e549dcf93fda75413911f9b5b439c3a8e1d12bad54abece5b153ba8d2530a67d0713dafa3ce2f5f148891e3ec7ade6e1f05842b1af8fa7d06ad09d82f48b45adc1950b8dba2cb37b76af5d081217ce90f130b982e6b997b16d7ef7697165e7d7a3a5d64cc4c73cd485ac9dcbbe565472875a850b55355cf2e1c7ecde619279d9aceea69468b6923abb19c65159812e0015a097c2fad29bf02f1db4263ccdc7a4d8b7b1f522adfbf36a1c8d4a1422d335cf1d7184d6674d1bc84239b27ba40eac35d08fcc674e12b415b629e9202e0d28edf551af386582c6cd7e12b37ebab6ad8c70e1cb71713f3a26143737444cac682fe07e010c76f5095df12142bdcfb3d8bf764b43ac10b893f1465be3b97b49286a667929415d3d3a75fbdb0e4de0d607bd554a6563894126d6305cbca31cd4ea48b94a5f5ec742aed9c6dbce670dccee5e5f2a6c735a8976b95edcde6a9d0975463071ae59ad26d0e1cecd6b46241e3f90579a7f331683664dbea7231051937ca0d7976d4ab95502304233c6b539d620c7601e3595bcf26345333674d8382a1034ce532399a7aa8b9fcce8b2cc10080999aed4226a9599a5dc0306b632e437d4f124e6f4a653100cea65276a0c397d00aeb53f932c64e6afde1c5ded4b4ba99c8b2a45b5d3b95ca120027f58adda1fb2b7a810ed16b043e1ab6966d4b454665cab75dabcb0b9a5adb52c3bbb10a955ab9529363c0b5425b25a949e5c663d0dc81a310dce654abd7ca15e5504b351a5ec0055bb338b6674186b464065c5b33658713ece23b979b0f592c97c94d8118156a24e74ccdd41259dd9ec5b8600301aa537b16434775e303290780a8510092b22c75d3d3d4746ff191b5948371393fb55ed012e1dd4f414a806c2aae576449ea7f079d18bdadae1add7e5a0a49848a208506f0b0de2c56eacd7ca50da556a917f115e1a24733ea2a9fd32055fc7b9603df7aa2fea15f7de24375b82050b8086bfa40d748268d2ed148787705d19e91f7d8f8bb433c57019957a5f5c50fd5ae9bc94ca07fb3c676f7138a77ffcf03da7edf044125a3abf7a1b83f8d06da46a85aa90f9d7da57a9c7b5e1c109acde8de9026afd4a1f7f9e4bf1c1c81fddf4d914c521e45e72f6ec5efd7efffd797dc5fcb77dcf0145c4d98529c1fd709ee7adeb0ffe159740a2167c40b4b5c59bd1d4c401a02d389f1ef8ebaca4f32a1e0c81e0ab074cf7771d6ecfba68d4b63bac9833b4aba1dc54cea3c6aa6d3e6a32357f2cf28581adcfdb41cf8ae51807d82f391810f920af40a65ed9c562e043fa23011641519c3ca52c37f77369f9f151f515b3c3c043b926867d81aa83d819fdf0af9a36362253fe8cc83d1f2f89ea09b7c5f2085df8bcb88a36bd4072e0f057d25f1c731bf87031fa515745a40b7b82d42dc2a6188460e6f3408eee9391d79cf4c038b49f9eb835b7c94a47fd793d86af03de040be3469fd5f80d5287821962074f712aa92c61897df9fbcfbce17f771ae20e627e495e5d04a04d586a5adc54920a1db1ba9e88ba311bdd12e7913941130f2900b3d7055fdd5899ea4263a72fa8c2a232af37f0d97ed288712b1463d353c2ebd489758e15e4bf2169013d28e3ee2f6ecaf1051e1cd76b3d8acf376a3d8ae447e307bdca48663a5b289e17b2c3cc69ccf1fbe70387d3e7de4c2c6ccf41dcffedcefbfe767775d468db784ce1447e5795eefd0a1dedf78d9cbfe8f8f1d5effd8e1f5219f976f47ff14fdc64dbc19864e119c5bf479d9f8a17c5e4e7079a94ca1f67179c983d4cad965b355c969fc209797ff9de84ccb1889a974d2d1f5b4a6198412e956524be97ac6306cce2d0d035042386326e726651a6c02a5d4609ac579464f4d258c8cc67542083e0ad2dd253534a653aa11422217929c50833283521e38968434e19426184b68add5322507fabc84f564de30521ad388285d4beb7ad6d0535c3735cda044fc4b726672cd629a4129a58c26353dc5b5a4ac106b1a4b1b899c992c9ac962924a4f98f29f46881e58f593412c239453d15e9dbe44358c29c0c23b7b9a4162e7bf83eae8acb4311d321c56fba83e89efd0aec77decf062dc17f8b0473137148387bfdde147e767bad399e03133dd9d7e3e083fff5731c6a217cad883df8f0c3d71cbf1bbd39920421612849fff484ce815f7edfd86ffef7c7bc39fac11432bebfa122ff072226fa6135b89b45948ba3ccfcbbaee6a09b2964ca7930724ab70ee6a065d4ba4d3c93f695dbcd87a3159489479812fe97a5933c2fc09cdd5f532cf73375950f9272633b848a6e754b26433917ee1624baa07c57cfe9c433f8ede855075075a3bd008bf1bca5029d8c67cdc065724d9686c6c35c24cad8dad463dc67990fb7e822d2f6f467c97265458a460c43122d89c4d3d0a3b759ee26712053334e12d329d6202294d772c665078a55dce06a6bcdb5362c933733ec50c7a16c214d083fe0b1876eae9d9e4873e0a401949cf5ae76bdb18af539d4833de8434e36558932e6ee1bdccd22d87e293468a05efd7a623db5faad18d2001785d6ef2fa8ea13f1ebfabd3422e42c003cf61bcc1f3a57cc91ebfdffb979f10c02041ef023ff4df250f7bb8f4cbf700a1949c7ca71b38a18cdde38d63beff0e21546daadb6febeafeda807bdc9a28618677be8b39cef15aedd0ffcddb9fc0c971d479a278fc322232f2a8ac2bab2a5bd5577697baaa0ff5515d5d5dadc3ad744b96254bb684e443bee4f289650b59b26c6c83c72e8301e3c1e0c180c130a63886e558fbc32c2c30bbf39fad993fcbb00cf0d8f5c0e3b1b36c2f8fcf7c601ef06699196676862dbd4f446456655557b56433bb2d55556464646644641cbff3fb1b2f5abeda7583d6b83193cfefb46df52d7a714d2a666b1b15cc28aca39d9032f972d0e032f3b51f0ba9621b31adbc0a0ad2d93ae12b1659677a385dd785e05fc158811a8deae143a10108f358af47f7a2fbd039610b16887e3740076c4c04ce3c1b13817bcfc6447057b6c11ca183c0f2e5d6d5b6ff8e7b81f3eb6deb855779e586f3d5c0cc213c3696d051a9956abbf90e41ba158ecd697bea94dae2ce30e060a1bc0ae55de0fbfe561c81e5e53068a826bd5778fedea146b56c3e198d26f3d9e4b0f65e6d3899cd5372607022ff023f2611164df242e20a4a0e005294eb7d376050600f26a10be57df438abf17baf27a32c42f81959505ec8cf86f8aa081a423b10aa94c7045e7e99f379139d08bf39baa9e10f52906d3560a5d080f5bf59a626ab0959a0d55c0f5bed88707b966d37bc75cbae4eaed485577cd5b5ecf54e031d3fea465b2e554327252fe5cb07db8ed4f22db0308bc50addb880be4776583ddaba49c08a39217f6d68509d8ce986a18f119d4a1647a67dee4c9e96dccf858bba9a2cea29b0ac3b96e5e8cbe02b5a659a7371f29cefd97d91e5baf04b73c2b7f7f24efc52164a87a37cd23e65c25a0faf9bbdedf6f0fd41d78916f7deb24181da86acea869c107eb8f43314f8e19dbe859d52a04edc70761176d59dda36406d474db7f515387fd9c736a196a1d442106ff91fb614256dddc3a6e8e26e88b67acdd8e99d68e976c711dbe4dc66d8e9e75a9d71aed51957b6baeadcc561a7bb5dfa977007b5b3021db70b3570853eba37f664ef583930dbf2933ad08d85d8cea91fe866eb7b94f675c7eec5dbaebeb393b7a7f5c076f5e9b0f480d4437e0001ef6ba179b1db86b4989574286c63a51c82e70cacc7a5aad9b2ed370ce74eacad9dc80d6fbf3c8cf97779bd1dace2b307d37b0a6b274eac15d63207074fed092304ee39d58157b509f665a264fb9f4e03aee70400cf7aa3213ca76a811ead5913587ae2d3495bc5d0991e7e7ab9fc523b7683882258be8828827c242ca4d25160a97614c162ba238a608ae51263894e27400aa05f9a1d24004654b8dc330508804a847b3f4e1891916874c434e3ad30750414a6820234a6031dcc5eaa03d08d8e840a51ecc188991051e63211004ef8465425c2745d0130874dac62cbd1745dd735c7c22a36872300a01b6a44612660158395d10083118f44066d8528506bd63aec7d2e4368221f0698f4a7039fcd6deb303f5064beecc3e64991805425052bde7fd652a91d5b27262727b6ee48a5b4442a9fcd67bdb662d7b36ccbb68cc4ebcae5d7250ccbb6dc6c3ef5dd6d1313cbf1582cbe3c31b1cd5a1e9f5bcbe65bcb25ff5737e378fb8103db71dcac5bf6dadcf832ea90f55968a7f01a1748aa81d76e476c1616122b876c6a2b2dcda0ede346059ebcebeb017b5bf3c9373dce585c0f1374ed9c92e70ab3896acd13f3c395d6c094f0991a00680747e07a7eb1403fc7e7ec15410c2f565c481559aeb22be0c984cc9fb549e342e0d0922e3ab9d012b23d90a6555601d66dcb88e3a2b9c5b6224925abf207e3112511b1ec493844a39a652b4a3573e9c4da8955003ef70d1d4e7d183058762cf27b720dfe9419b32dc0f04ff773068d68f84b83ee8935fb63586ddb0e55254fb13136764b73eef4705438192cd02737382bdc1336026d95ef78de565f47df7b010f29eabdd0033a1fcd5fd0b17bbadd0ee4b37d631fecfb8cd6d10cf2f8f8820bf82a6642161bc1804bb4e7cf3c708644c2e6d54a7d0cfe65afacfc7749de8a7d9092ea549dcf21a8f68f1b2bb7cfc9959302034a865de55b44f3a7eb9ec07e0ac6195f8f77fbf11543566738572e555e45fb00b56c9a676bb5fa059ab31eb63b3b8f1a8d0b3744c62eabc3f704f61c82fc72a5a0e60b5128b011feb6fdb5b9a573847f49066263d3776d9db86b7a2c3680b5d541736e247f241e3b921f99330777ab600d6e4be7d3c6d09091cea7b70d566ebb64702bd38767668675b67568d76d95b0ce4d45164af17dcb4e97cab971555a05e72027608cb0b49345ebb217d661bdb12e44e6eb506bacdbcd124fb9eb225e896d35427a933bd1777d0b05e97197cac8d8442d98dc16dc4c784bcab1523b3d0de5c25277b9f0f59555d80da58a13086d7bdf750e0a3168c9753bc5bf3def59e9121d17c2f2e255a80099d0d2112dc6371b816b830916b18108a6544d44ecf1587c28ca8fa3ba9e2ba9ba820d86550252128a31d65466124228a5313331c2991323650c6fd55f260655c4ad541d134230315535a2d2a8a6da111a8f5ca7101dab266176c48810552758258ace88869941082584184c3555d5d23527aa1a426a6c695a5c33d2a6c64ca2a898974d187a9c81363a17d575e08da004abd88f6c440c55332925a6616edda29958c1435fdd32ac6a5155eef00aa8222a122faa49d1b0a6ebd96472c7d4d9a10521885608c186ca9f8fb1822d5d1b48662693510380aadad2b6489ca89aa200c60a604a0c55dc0463c5d4b5c16422cbb4082698aa6c20490c4b5180506d76229ea192be97f22c53f036dbd1a140de22574816026817f4602775d86d21de43021690876deafde78181589bb9e9108d853997800068b459a16a3b4c52b3d1253ad3fc7812358165358cc6d00c2aa33de84ab14bca46941c390939dfd6ca2be4d2a5428f12ce06441999cff7015e97aaa8d095f2a05eadd6c3d93f97cefe206cfbcf892c90ebd4ba6d55ab81a5ba5b955059354921b43814575abd87ed946ac813da6f16481db12f56f037fb368522322a76a905695e6ad12c39589f5f0612d58c3859de064a2262c4f1f1195117238ecb73328b5c31cc0b89bad58f02d322fab360987153ff26af9da9bfb9f933331ed1fffd36becb07bc049cafc3af452cee47a58d4c108abb8b882e0a00e51ea1b82511dd0ac59d5ae0f4496728ee85657e9d7d21089fad43148c185500185380b6423fc72391d158cc8d9809b1845019f959133475dc007568e8325d53e03945d7f70e7d45c42f0a2471d1a41b4d260d2b692818f4010bfce8cd8ac50c4351226e04ab38d611bcd9e5b4b761b008661111ad3a3aa08308de1c19498960d0c3165cdb1b1a28c40f6d433bd07e74ad8890d22b366b6fde74b3a0309d41cb501bb229c093eaca9926d415f353f219f0ad301b53cfe6f359fe55ed7f753ba7e5b3d40e11d392ce84f6d2181a45b7a2b31b6ddfbb1d50680f9f6e75062e0011d181a7d085dae3b99dd21761e27d4f17d5b132d98f7e593b11502a4ec88f0c3ad4f4b5f6addfd979f5e44a3f3ae7c45aeb89ffa17d791b7fc56d63cf74631075b29d8d06af4c408b353a6d3a3594463984262a4ea5c01ce630d1a505b9b377e268c156cfa97da9e6784ffdb8c64cea9e16a8042f851eb5ea659ef8f213cea5efbc8452f7f4ad22c8926bcbc059762746b525a2a8ee15faca96c1f7b85a690de0d1903588e0579c4d044bbc81819cc877ec12382ab23f1f22b45aef90ab89afc078f90bbe49c11bbf10bc86730f11f37f6cb060efb0b7a2681b5ae1f58785e502739c7195819a296e14ee86e5b9b9306ecc5818dea29e48fcf6f8bd86ad377f9148bcf17a3d6548cb674a0e1da4b45228542a85e61ff91586b2954c4a97d4f9c4c7a71f2004f627e63ff67a42a4c1b499d6efbacb48995dc6d33ddb114109b41515100a31674e05f86070c612a54a87c484d14a01fe3bd3463266529bb962a6f9eb3fbde24faf78a559fb33aff95dab15d9a07eee0ab89cd966664463ad52b703e768fdc132e37d6eea80ac87d848aa288af26811ad76628acf4141ba0147817505d62e8404eb85504fbef7297fce3c157534b8cab28f6a4ef4688018663f139894fb9073f6bf7bca9f7eefd49ce8a86dd947a38e76d40ee0eaaabee1bbd6eebcb0ef67e142f1f7c3f1d9fba194f87e959bf87dd602974ade5d119f8ef304e6591425d1969627aeefa7582995734e299d9b909c085f12c63a58145e20e117f209a072a99c63a5720ed5eb6eb50a8d5a9dd32d4db72e0d17eb8d5aad56733daf56b3ec7abd5eafd5aa55d76d707ac673bdaadd7c455045cd7ad5755d41e954ab5d7109e7d0aeeef95ee838a21b69ca4ee17b0ba6a226d6d420096e0751d97cae25290e5ef331fff7a54e2232ec501be8cd1f4759f434fa3442366791c2c6339596b58bd3cdd7fc2f66a36cdfc12fb83406e150b48f9943093a386b6f99b00cd37589a19b863994f86b8d9918534c185639dba2720e4915815885610d213a534dca39a44484c422c74032436ad2d42cacea5870482abf5cb02382318950ce1565048ba6536a312dc68c94719418baa6a971c348e9ba130dd50676c68722116330912e0e390b03d3574f5bce746a642d97db39f02d6a443028946833b9788a12ce130216c63c8634fd89e86c209e2a24a2ba608016a72231a232c1008122182eca4b2a5831342d9b880f70560d139532270109fea4ecca8833934eb9a699d12d73309e290e0e2c0c4c1f9b0efb8f7f101d42d78808dac28e9b49f38662624818472c8b7793ca1447c0916f7985ff97f611d2cabbb40a95c5a5cac27279159ccc726579a95c4cc01cb0c472c64954f22a4bac82a320b0cccb1fd8b6ed81cb4d4e4f66acddb78c4bf363501421b6e554a30c9b01ca7875b795c1d05c1f3f32573a3cb23e77647ce470091e356238363031311053e246b3a610c5b2b0b5250f3dfff25b2c1c8d4891ee93a918853dcc19697e6b84c652501a7158070d662307557ae1d995c7ca6389317a0164ff8d9877fc731ef5c0ceec9661575d40f59e943109c5bf919ed8178c30d00b8f8fb7a0d1ab22b3bdeadc33be9ef0190f03f821b78a2eaeff1263762e517a55fdf7d27904a856ad367bd67a0396a0084bd087b5e8d5871317a84b77640410689a8931e8f5367fdee15c5fad822b2adfb313dd5e35471bfb7162b371d8b129f419756d8bfb5e63adb5f25fd473e5f881dfecb97cbc6cc470086cca87a57755a77eb9df48aab51ff2861e63a6ade6ecdddb17d1e6e07db3fe6d6ebfe946ff36cb81d961c3e7f9feb14368fb05508b4a9bb175cff485347a554847fd119002bfec86c040aa6cc065e9b058af6c8690e4f6002aaa11fa7c4fe0a47a9fda8df407540afcc7659c3fb4199675a53fd8d27c5f40a44ff6ebb37a57ddfd663a3da1996a227eef7afbdd5736789c843a7153ecec9ff6abd0f3fd5ee93b3baad4c27672fa023d01aa22e9533cb83946555f88aabfef89508544bc5f57c4d9a8f99632c7d075e876a99d0c04b22d4bb7b06d5bd89a8d537ea13840615e239c76ba205fa0e6ba92a9f1dd6bbb0e7d42f96f3a7946fb39cf0b68e95aef0b83c3c646814fc8fec26b74da5d04381b23dd7dbc135adc9edfcd5fae87ac1c2423e05936fd72bd6de3209721d9cb6dfbcd0c5a93eb5b7811f19739d676ece8edc651693b7ac07a735d3e5f3e4ff012d7924dc55f2207aaf28296898667d93fed2f7d6be574b761c2f72a0ad6697f36bcaa36fc3daf48e090e5b7e6c717d1862f8b9a4bc98a6ccbce8b6981b43991637d04ed166bd30604e3104458db08a590cbf460a90b9e65bfd37fccd36de02d010fb9e3b8e9a9766ae744272c74c3b64aeff42b2481c7f935ff3f4f40351ea84c0530d3535373d3f9899d295b153af77558872a9af1f5c81725635ccaf34d6f65f20bbd3166bfb07642d090d56eaf241a725b12882746cbff39b08d096311f5b063e9c41eda90e6b44b3d249dfcb9841baa867e02dcabf0e61d0e31771ed55d2f4cefd6500c0da3597489c4790b6b8e0a2dd5be8000db20a1ec94e8d65ad65c01970e5f90483f4283f2ad96c04e20a1fb72d09a6db5352e218d513d2c2a0dd975095cf80b2811aac22223082223538dce439912f7e574540359be9ebc2d8aacb6b4deeda5ae8dc5be1da189b1726b1d0f2f701b5cd0ca1b4dcc9bd5aaf0aaaaf924b5171c7921f987ebd99664607ca9485596ad77e9cfeae71b50157e7a6d9bcd63e8964ebbcd30163cee63c3d91193a54f7eb87c10d3fa5cd76ff7a75f7e8bbcdd7cafb1371843f6c8421a729107eb3e9e79df7ee808f8dda77f9c3ee5fbdab5f6696ff7e6fb4c9fe3da8676b523f26c486c5218e1565ca0988ca1b0618509511015ce1984318382ea1c6b74074e68c3c0801fcb3658d7ba57351f55a2f3a9ac94169eca8286f13f227865ae5c822f73c2aab5a4d1ff1c2c6755f19f2f679e078ea0c902480b662e7a9ed710c5048e1ab474298ba1d8ca171f0003d62f26ce850c997c11e12c3aeb33d1b65f62e5a04ee9aeb0f59d52715897bb635005cb966ecd84e1538fb484e00ddbb29f2694576125c007f16494a1e5475aa26fd411436296af5b15d113cb9542140a95025b5aae1464140787f57087693eb923edba57cecc4c17769e1afebbd43f1ef60ab3e3e3d3aa6aee0faf56db22994c7a74616641f9c3ec1f676f9c5f70b7e6f68e8ca42b605b5dbe322464bf3a88a6384f6677ec359d3b8fd38190d379d4e89a4b7fd335073728f0dac37abd6d95e0b5f549ddfa2dbf7e9d8a58bc997574a7b62dcc69ffbcb5455ed9da0d9f0b6b1b375beb42a6ce6dfbdf614e47545abdd1b27c0cb1ae763b325b22c70292b961f740413d596b58b657abfdc30ea2535e23d7da08c07a0f5c695bb56aed3cdaa1105ef1b02e6594d3115480d8f061559983722117c6878c422e6d6f1e3dd13b8f6a6edc82e188e5b6fac61a4bd67bc1b9ba50aba5c679e1b1644b48f27f45ac3a34ec3eb111dd90ffff4cf7c81beb38625d5aec60a587e7fcc44b2d1545e792194e7b81991e67345ab6acede76fa2f0874e922bd7579bdf3c173c80935badedb41e1e3cd5d68ad0b67794b41feac68d844d293f3fe87c4dc4596af548bb8d7ccc060feb945c79e15aa010765839c09e6d85120cd8e5cec8e8ad715e0e464b5d4c1059a16e41a590645583dc6af0fc0d195287e0b664693dfba4739cb0ee3ea9b6fa24587a9e79d53d121e1ba20e9da381f6c013ec786b1d52bd575a43f3958e41da5a5642d56ba9e0c27b45d9a7b57b612a7432f6dd2cfefaa6bdcd331aed1764f57c812d9d4eadf53ebab8938d765ebc4f02da03bc56a35fea9827ad6cb7ddea0e883da9595cef8c4bb5054da022ba1ddd1744ca697bea71625022eaf593ddd0101ef62616b7a11b86f1e1aa932b5b8786b6ae4c06bf5d54241c5b992cf5e6544b96ed5fb82b285c5b991c2d1aa78ce2e8e44a28d9ac8645cd32f5a9b7f767706debedad5b9cb1db32f8605f9a45dbd1653256b2ca72e3f9b00f5d57d78dc0ce564f403fe95787e46bb468a885d59833dcee13febb656d4295956a7ebfab8f82556a7debd0f4586476c86ffbbbdaddb0e20ccafb84e0debc0dfc4907edb2843c74081d179205096525fc0fca7d9bba0a6da0ab1c0d09fdec50f3ec8ea64eae8c65999bf2926e343c0426571c5bcb44bcb97dfa707e65f23cead35efeba4716cc4446d78fb7db1a347bcbb4c5f41d33faa23bb9d27aebcddac691108e17e54a7b89890086c65f0c5af8d45da317d6ef30f7ceceee35efe0b70aa57feefbf835a62a150959eeff56db78d32414178ef31707a54d04ed1d55a2c3096122972e4db481cc850425319668f97ef0b5a2e6bae0f60e0324c7fd79e4bae0c9e5a35eab5581b3267ced58776b1b265b1ba4fd5bae2fd6f0f8039aeb2ee7e4a11eec79c6f92fc2cfe0dd624d2b5496f39555282e2c57f26a4c51530ecb8ffbd00695e5a54225b3b81b1c99869ffd2aa71934733caa5d7572e00d8eae678cac6e18b37ad6d07547cf1a5bbe65afd8a994fdad9c96882f39517dac903ee3e843baa3ebc6a0316718c6204f0ffe2a954a5552178571bae7e69bf7ac9d38f1aab1674520f536f6ac8f5593ebc48965391f6cc0c93995c0eeb5b80a50c34a95487ff3aaf437af823cae2ab84e345267bace78826aa40e4cd7f841276e6bae73ff0a9112adcd4aec9ab510aa4f3bb9de3a6e47a8f7840c28b8ff004213c5c09a37874badd0e17c21fbc8e39c41e42c594d2057f1ae50e6006986a19d4798117e4bc2c2f5dd22fd82e4b6e6e40243e0929d5b8532f8b1cf14056a806386213df115b95d1186cf8b5b03bfb5f4f7827f820f0bff43360f953c67f0dad8209562252350ede09f6ebbd1b96df2d8682e99f88a6e08cfe03f98b939e7a60c98be2d73e36d46cacddd3cf3079a13cde60dfd0f12c9dce8b1c9c0ef3fe09186d1189ae7947f17b65a0fad67a7ced7e9383a23d10798aec3431b74b29faff193e2ab1e7c3574c6934c6f74790fa25a70c60b129d7e84c3e80442954df910675c651b3dc33b57f779e8f20da7a1f5bed1c55cf92bf38076ee9c36e0bb5c83722e40df1aba4ef123775b031a64fc835a4f2e266ee87bf6b43cc635b2e7ae36c6d75df112d15aaee31f6fa53bec4587d11de8ec857a60a2585881ed4a60b8de3ee0eca4c38f76004f2e2c6d874a6221b51d58ba22f25b98da585c34be504838899efd0113cf129d520dbfe771a253cbf64e00b835775e1e692b2700aabdfbe0df56f9ba70cd350ab6adc693bb61ef5e38d4fc7f207970486441558b36bfb61bc0f69a3ff76357cbf1bac5d7d14f09dca8f286a817e910c65e3a577672e5d204df35caa5b4c3b9e81ea12f7cfefda55aad563b8faad5aa5bab55abd5aaef17ce276e35581f5dcf6b54ab5ed5f36a427ed5f15eee44bf857ec6df8b3446db01ce6bf41a5ab808afa1894032909011da5b1e6217f0fef967b692fbff0fd2b8ae8ae8d5326eb5825501b0840921961ecd9a91b48919c62653b379aa2a8a46148a5b06570a2354e38531896856c630128cc5b44c96c1f0ba657bf5ba8c0c69ffdf8461ac6162a86a44d5e29aaa6a58210a56318de85a841046144a08c384613eb4b046a94688a9d2a84e22fa1a1015f30d27aa3343a10c2b042b8c628af9d3f91f131e5006a3c93fcbb8a6aa8a1a62ac5005ab8aa208082caa118c35a66d490a07a0f4bb1269a21a44916d213e5894c0bb5231c6aaca6ccb9a1a7a5dfabbb6e5b9cd9adb96cafe8995104dc084d0648468ba80d452dd6c244614d13dfc89843205f37bea8c2623f1a1a8c900086113a3ba8989ea8725e7ad153e4dfc405359d89e660655d0e5e8aa57e7158943ab66a55b73546005562ec1857c09bf2f576efdba10a73aebb99eb77e31fe91cdf560e9afb5057d7f36e356af79b0d366a7d5bede619fda8d0aa31b3a176edf97bd6e1f01494f977cc4b81ff66dde4fbb5bb53219b0ad7ebb7f6fd3b6b5fda507d159f4e0e61804ac180596ce492bc85c790e247556c88d8b123bfdb95c9983c2026f70310ab1b68c5d6dbff4b160e7d8056546c50ac94c7aa02b403927b3a7b4a4e1ba4652f35804bf9d6070144c1eb126d2c9316b50b59877e9a55e64800e8c9b898419d10012b158023cfe3dd4fc0bcf038f922ba6c3b87b920aff2a8b6055c511e6694963882c112d96b02283aaae581671227b93112b11898f47ebf1783ceebafcbb4e2d7568c86bd33375b41d5d822e45ef471f4268a2bcb45c697544791a2eaafd9c8c667cd728aef4c01c60e95208a64b2e9361a3e056a9f26a27a057b0d416f8393802f04b82610030799630dab7c31e36a29ff73ca8a6d598ae3b51d3d6f59884b783edfefac430d1556611c2d71e4a302344c3445530867280bd47884688ca572645d1d47bbdbbcf2844115decf5ebda335143f3aef8089556c7c450594cd76c03a84e898ec5924808b57455c77cad53b180ee53694c5385a9321379620556f906c1544bfd9ae7a1b00f64128da069b42cac2a365a9d17c26e91a174bf7c58ef30401ff683f51eea0af31b1c77a180b522fdd68284b72127bcd72fa232da8e10cd152a8e409b969e76c11ca52162dde98823919ba830a7e2e4607de6dec3738aa972fe28a7e1ad6b995150869aefd722b685553c362982368254187fe6c6d599c3875f74ff7af4f594ef0fca659efd4436495472c9bbb080ce07eb3d2dd9cfd6672ef9fddf6fc9457d5d4d0aed42c85ece974b2de18523cda7ed36665f2729e9077509b6892fcfefbb29be34393c3479e43bcf0b5eebf9b638bfedc30f5ede9c2fce3b53f96cb5f9f71f9041703ed0e1ba1fb8f477c60fbb16dd8ede8ad0445ad29d4b623d1bcf17d2823a4d084a559aff87c8593e629c629b70e51d1ea26205f425a38584c8cc2ca613f6850c801b270014aca8965a5b0348271ef4c959b593d8552da6d96673bd7a02a09779f0d7beb10a2f721245f92c1c823414a841070ad63e41e036eb5a94866860c82b588f92ef7a60af02347f0ef33dcd88c3787805843a6d61ed1ce767db410ddb1ea821f9f633a7bfc4797171dc4eb6a545e7112c308108d4fc8efcede61707d10cda2e90a5367306eb927677222e75ba42367af88581dd4a365fe9717ea3febc1384a6877ebd4d332888a229491339b854c01ba45181a6a0edaf282289044b545f3c2017c003b882445435d233a41ffdabee8c2a89a82c424461a8431314f873b127fa40b653cd6f8b362d4ef910a85fa2640a16c5a2f0ed20afdabe0275b4332fdbb91b7295b1cd02644ab1052d95d9d86654a2bf822145f1da15aa6eac2e7c13bc9eb56bd5fddf81d7ab0782dea9c1a51da7bb047ca28d1f136d4ca033e809f45e295b0c6dc1b97409f7db82372209957a02e806dc5bf87fba5496ec5d05ba1438b94477c6f1a911209830ca374653add854a7d4e0ff09df351541daab9444184b9a468269165f5e149c57c4ce2e5073f95eca4b026082754a4d954568c4668cd5ef173727f06149434693c9683bd558a7fe330060b8f95b0a533817c6a903c2eb10515553554dc9d2608c7555b5342dae5393fa174ad45b855f845553e5dc91868986b5a4610c582e667ce387b725a3727d8a269bebed3442a1389531e4a20574293a8a6e43e7a47771876eae3bfce80677e37135dde978d8a6eccb2d50b30e60047fcb6d5b1ab455f67241e0157d29b4dc5876902b6112c4711bf72c0039f2d57041be1474f91784f26b7e59df4aae7571d847567a21582d3b392d242fef8aec59c9a54bedb854e98a530e053d14d13dc71263d4178f9773e952bd2dfaae7adeba8fd6055ea3d1ac43b5b9ee8abf9ac03f6a562ddb15fe829cd66856791a5cd7adba55b7d3de63145d856e407775697b7b58f1b18bd5a648d142a18f36a5e7b67a8e8df6d7a85ca6ab3166d8fa0fbad56cd55edbe90b89747fd5caf6194521ca0b1b352ba8431ea5a1141a4679348396d00aba94af43febe381172e69d904ebc81759a53c94d30a75270581061b952601339ffc87dd8fb0aaff37f61fa9813496973879bb7fc83d7fcba7c7ccc5c5d81d5ef1dfedee1a75657f861f386470fcf425d5e54176aaf9a968a38633a9b3b3cebf92ab0481ceffe36bfeaf06e71d0fc6fdb0ebf5996eec018db12e05b493cea1c1b854ab9e203552b68286524d8d9ffe9fed16d37b955cfbded31ef96b3aa066752439a7af616efb1db5cafeade74db1fb9fff32c4b182199ed25e8cd1dd19472e5527a049ca2b32186a0e09f721b43851724fa095f7acba50b4521f759e1905ceccb012b7fac1ac9e8e9f63c4ceb9948f5580710fc4f5bd9bd651ce15bfc7dc0e6d71714434fbfc96a998fbc29ad99ca42bd4bd8f1d37e27bc1e370ac74d92fd78b60b5dbc43de512ea5e5fee58b44877df6ff62fa4b4ec574c8d4675c4850f97b805aaf40e85516d7f538933c944c57fb054d6f9505afa36cb567075430215804f4bb8ea72afdbbaa57c98eb554da9356842de9bd221e761f9bd0b00d29f33385b57b5186b2b32fd2c7dc0e6914d2a1fb074807b356a78d5b4988fa8d01c3105f5e3f0ff5c367cf1e3e7cf66c3158862c3b64d768873112da9aef6c3e9f55b3d9ed19c7c96ccf66e186bedeed9eb8f9e1c367c10dea155eefda71d1ee43df45ff432015fc6fc5ac6232f84c0b8cabf8eac5eaf37021b17ac5b9805e5a2cd56f7bd5a266aa60956255f145cd0a2fcf6942963037936ab308fd834c96bd76017b509c8a07774ad80f6e10bdb6316061b297045aa5492b3e64195d1268e1342de4e7a23b1445d154d5b636116fef795d3ae31a4c156120144c144205aa9810b063b289805d21040b517c58c01e991e3addb93a0b0943b010b5b09ceaa8d8b2c9ea85581e08034a9d09f84eb39a1a1a4a7dfe0cff3eb3c0bfebfc6b41667c3e353404f5a1546aa8dafaea3c0ad66fe17fb305a1093eb0c5ba515ee224506b495986f591375db934377b999d3aba664652a9bd73734b834b4b6b4753f665b3734b57be6964606970696e6e6f2a15411dd8870e1ae43c79107b3dd00ab5bd531225b81804237fdc4343442fad56bd20267bb5dadcc45daae5abc4a9e3aad7ac79ad9083c2fff4a717e1dd24da332aec54c650129d453f41c80ef173e952827378ce6fc8d6a57b496cdb6cdd8484697f75b76ddf501dcfa577f81005ad13721d2be736067f693de87aac09f969445d99e45ce3bb441c144a0d42a5ec56842621d4d458c234121aebcd2b6215f3b94b30e715237c5589d86a88578cd398a145045c9de026996a313dc6d408153ab1090020fc3958a7fc0954c10a25588469e19ca110ec2a58656acc301254a55b65689808d312861613c157384349558810152b0400c6fe352055a79fc162c1247ce5e36cac1ae5cf6611899e477c11b36e1baa45a500d98fc64284e9bcc673056e8646b5b419198c4f70769491a26e28800dc6e28616653ebbac088e9646991637a810da895c4a89a5d116473d0258511821a666c45555d598968c1849a64555aaf375da8f70a3c6f5484a0b61436e43d70b4bfc6e28d59632c1e91699e02e18d4c0fab1b70df57af3a560861d0876e1032d3fc6635d19cd97c44c3bd679493598565708859c9072970298eba98017edccd97049075ea1f4cbd917d09fb2c96161bcd3279f8e41013688f77372d1e49f677d91fcd6ee0cb8a3f9143c916c9e0cc9f5adeff82787ba4bb7326a60679b3f84b4d5e1b9d0e6454ea05b45acdac0fa8715445ccf60e16f412807acadb09ff0e76fd1e9f44761ed38b722325528ce2dfcba654694dba93943813798ebdb1334a2914c2612f5861ced2abe91a93ab9f9d8eec019c4f9a0e37ba97c63dbb645697bb46f9b9a581e7503f24f70b3f1413d1ed707e3a3cb09750710114405c3bedd8ffbae277373d21fe69ae3c7f9fa4a11116378083d869e41686233ef6f6769a1b802320a4db92b684d2e7072f525f21b23d16c8c6823c3d9c8efa505fe9f2e8aeb594176221ce872e20e8480bbbf8c152dae55ac5c0a3018457772654b4a658a9270e3239501a2514aada198bb7fca9977329336cfd38982e13c8a888892e366ccb6be4129a53512518522426c406a8478539cd4511523a157ac180c4dac4c666722a66309e4523d319b557595c5587cd81ada665020346e26e6b2d4a058c6b6198b99fc2727509b7bfac7543abc5e3a6346573a2cd33b8f2ee41fd3e8e90453efeb34d3cb37c6dec4a6ab137b6ea2c3d7c16dcbc65a8e319d5e0da57070c58d2e708d0dfc4ab79e81d7ef32898f9ae8c4aa6e2db75d76e41de7721dd741e0fef106fff7ca0e7b7b3f33f07e753b43f8076d0d6385b6834684adce11323a30511ddf5aa9842e4507d13581253ca7cd700bff349d4b972a1d4713b97489b54a766100b64ada6d7cd4ba803b3de6c3a1b67051abcd46b5ea4928d467c2f0a85f0803a7ba121e557651d5adfa38a99e57ad494cd4761407710bef3c92d8a92dbb3cf8357c04ada15b109a28f07d4f99831910d1bff8a2a24421502d0a48c151650476fabbe46ef1a50880c1e5a582bfbcf8211e3b3de719fc3aabb36d5912d3cadb58926d2be931b2659e69594e29647536cb4f956645fc36b26d498f91ec36a66555f2e41352c9e01155c49e990e0cd23e3f5bd2a374cb1cd3b284889bd3a85edee6dfa1acf13b68edfb6fa1316d718e25b4ac8095f004ba22a55381595c0b9355ec3337a1da2698acbb8205b51f266b8b5a5c48f5c564ed11cc7303f0c9b6610a465ce0b26ac0493226831dd04424e2c6636391880066c54403a280c64001356e803a3cbc4fd7157851d1f57dc3dff07c058e712c9a4c468feaa1887c1bf059551cd1385906966b1295440380d628669b00b446ace17400d07a654fc6d46b63adfc6fece30b184e2dffb3f5f1177da6958fd336434b75be28fd2fe8e36bfb9b6105fe4c6ddcc0a9cd7ddd0a1d477d3dddc24e76619d7390aa87844e0aaa9e97d82f43024f67534aa53f324ca12f4ccd5c9f13ffa1374acdd19e783ae17a5e10f7876e06a7d30ff707fa2224357a03ff787de174f83b4508d6c1430e9a423b6534b3702ce291b606a7e54fe087cc1a6f87e5f7d5335e6632999cccac9d38b1d64afd7b1663932b2b932cc6a2b1d8efc89fa8cc042f621891136b6b2782df7f52f0cae4e40a56ecf92d5be607fc5f5be60add5330cf8fa12aba073d10ccf5029febcb4539d71796cb9208dd1cda7a21d3778a87e4b439e6074c9c03dee4ca08a4332a6c1ba2c02738f089ab2930bdac00d171dcb5226d54eb60664b586b7f6a7f54d1f5cb878f950f1d2a2f1f3cb8ec4d0cea71ed38a11effa104f272662bda403400b706fb70518b3250c47c269b815a87e7f3070284d25a364fc9752c5e11df7a368f0035ceaf4315aa02ad785c65b8c5b5d87293f0cc04be05c0b6fc5fa85a46f38f158a2ddb3260b74870fa2cc064917e7d3bd111842a21ec989d20a0602f01d189c3905269976a96094d9f5f202d2164bbaad3c867dd6c5e7c1df1cd2c612ac8c96703eb4957304a0d9f616a28caba8851e6c9322e2fe432ddf373bc6cfe8c9fa5b3bfb66c9d35ff986894276037d1a88c9f06bf820fa0042aa012da8bae41772154f105fb9996d954a13b47c8f22a617486fcd26e585e1c854c2a06eaf83c14c207fca4d39d5195b1faf8de5a3e280e6edec30fe6a7262f4926844a3f9a4c0e19c6b37a568ffb3f7718597d8f610cf93feb9d87357e910c0278b0ccd37b6ee6e944f292c9a998b85d349abc41cfeacf1a46dcfff90bc3d8a3678d21ff67bdf350f8fc36a021708402ac86000a2b510a18177f4facaff3e1c81fe2f12f37924a8240d1ad4793a908549bfe2f3f19d8bdc279a8a13de830ba4d222d152acb79a950c88556aa20889f2a46d56edf7fcd91f64ef3b00a12b07a395f087bb315d47c21bf5c595e74446492427e9cc1cf52da68da524c96da6aa5e60776de3e4a7492dc123540710775256925cdb802cee2d0e0524651e2866d25153d966159ddc2967eca7f2d7f6aa4296586bbe61a8cd2b4919e4cff473ab890daae99a0c42da697a641d96247d3aa96d0272f1f2a59e9a8193122a61931a3696b319ab3551c372b6642290edbf630ffdc4e55c34891789ca47543a58621edb092e73f06bf80e7d114da83ae4167d05ba44f96089d1592c4a87cfdc36ac6c970025bf2e2055c585ee2ad5639939e71328b3c335fc82f5596695e950ba50cd95259ce57f2e33c9d713229ff82c5ca32a7d0f3059af7ad1d4581e5ca721e4685be80efdc8225f6b065590e4e8e24b1635916f63ead1bfaa03e914c269313faa0ae833e6445a351708c414d23a6a158a6a2e959a340c7e4e9c168341a1d14576db5f955cd5f4515d3209a9635c769dec8ea9af275a11351b04638d14034ac081dc9796439185bd6fefd9685b16301fa38bfa731b1307fc7fcc284a1eb83fad0d6ad87b66e4df1470f6a6ca7a9670d53d1dc47de183a3b14beeabf983b9936689844cb3ee26a8a696451c896d54318d9e8147a14bd0b213b3d569e1893ab5f6e4cae758e8cd32dc9d315282e2d5716972b4b7ce3e2fc127f7f611255bc3f11413995490bdcdbf40af8bb573190b3144b0b4b850a1fdbc5943a03e3f9727169d9e93af6c11ff90ad8e4dfff2719344d85a8bca730282015452a2596c015e6f900e204068511504c7390e03ade134406097d015a5ff7f2d9757ef3f56cfeffd54c4a34028075555180622098100012a18041d589f0f2d055c0402c9e4f30012ccf6100c22835354dd7b5f76c5069cabe0ee42a361a45d36827da8d902d7527c585203c5e6e5c7582099f1bcf3bb974a92ccd62ba5f49c94997caf5586c6b2c26be048c5ef0c033475cd7f59aeb202c0a9bbe833b1c4c0e0f5752a954aa323c9ccc2d2ecef9e28257ea35d7ad868c7bdc7a5df282c6f98f8a3dc5414308513f4e361331b1c7cabeaca5c20a158781f2b786f1823164347f6818ff0a848fe11fe37def78c7534f0dffc218d49f378ce65f1a83c6cb908c5a36569e7ceb5b9fecf485180c707c68a05e12bd525a147d944e89611396cc56026fa8beb8e847ce9c3972e4cc993302d4a79ff6d813658e1c39e3796e3d549f65b403ada21308c19018b2e3f9302c3f9f09cb8ba511f02b96ebaa74c60920d52a4bcb3b7d69c0b04f7bcef80075c25e1f8e426a54a3a62a6b01c92c1191fd36d63733652f0ae0a10db640ae65c373a000c92641364735a9369a027b2ab3b1c54c6d3ee3b975b7db38c972c376a645b41f1de2145218c13c408d14db56dfa63be3794e17543899c0772c4e2a442117844c86292dc1b408b9e2f5bcae22a6febc6e6c6caf99328e3293ce1a7c1d7556f441dd300e5353bd917702fc2e31342d6dd2d387787b234e4481f94c31bbb1b90afc0b4a67c5d599159daf908729fd1e7fd9be9ddfba907761c49029a288e4a47572da3749939f6e34631c4495f4aafe5fbd299c75a1114d267fd16834ea7570fd3ff092514e3024a3508d269b75709beb019e55f0fc6e9cbebe187d38514a9442de80653f5e47fbe1bc7f1a55d76bd4c51fd4c24f17687ce711af420062853a6312ac6c3e07ed4da38af69b8c07fb451bed3b31a1da270ca9c420faa28867783d4213c21c2f234619dfef85f99e44b2e4890227500b3931ede6a09ce0d371b1adcaf4959f9ce7752a859031c60ca4e1666caad35457147ce47aac609dccab062e2f63539d12f601d73d3465ea5b74d3d46f8f0d4522195d8f524a23a6ee44c701607efecbb10c137f99d8bef7539510a2d19bce128310a2d2cb2ef373ce3c7f9f6680aec1251a3f63329634cc8c658f45cdb83a03ca258bf7aa2a4d9ba64d55b51a9aa307d071f4307a5c469cf5e1cf625058c8cfc3062570a79d5ac991ba0e4982fa09e1ea9f2b87b5c217823c6443502c0f01ec38a2808235758a19787e01603ceae86684521ad5f58c15198cddce7b698b6e4e3d741de60527998997cbd8607344c70a6efecdbe7d7e5f696938d8c374f2a5999ba826fa6df1120566d4b8698ddb56c634924cc47333b4e65735c3d04e3f7fc62fe7f7af4160df2d2a5593a699e6fdd7cb98d2052000fe3c08fcd796058648dfb18efb479ae9eb7ef6869ea16528b9628a6e70299322fc0d6165c275cca27d61cffd0df5b02f3e107141b8206ca8db959b40b3063952acbea1a2cd3fdd243ed45487cc3918cf53c20ac4f777efae64cb66b025e7c1e3f9c2c2783118e18515280782f7744a85eada89a8f59fc2961a41074fefb46707d64e9c58530d0ad4203187896d48e01043fdc4dac0acfd1f43556dbdc3a99d56f4c4dada89f3481099cc89117107552217a3501cf328caa2657439ba1e3d8a90bd987156a165411a86b2dc4434e8382c170501ce9be98c759e695fce0a95b9f625ada53ad8aae7a050dd521cc0496b742d67d9b6ed839ffc3535991a218fcbf7404e4efb9ac5af8c00d1a933c067c558f309fe66a5f7e889378307982a83db4779a6c4c7e527b203d12d0654194b0c994644981bb7e2a1ff19a5943eee0bdf4f4e119ae4efe2c80861387f7c81df67d7694378dc0a6ca1b513c3e221d814ea6109a9cb4fcc1ecde1a82179162140f7501ca5902b6228217b6c31934e48e2982ff025273d560e474a2af5498745bd960b35e90e1bd2a4b5f064bd707051afd1d810132944ec77c64175368906d068fbfcd8b341d8e95ea0ff17734f19d9e0e2ee597521d07dad0b3f94a2b0ec629d064b1b4064c3e0e189a53cfc09108c854b866aaa120ca8cb77a9aeea346c4b03c8b664e801a9e59569f0a4eeb96de3700abd093d861095152aa57321aba596dd51b9a78153aea73b4c4f4f575f8e9790f6fb76c751a194cec1ef11863185fbeb8c313b422322dc8d8e0906c08aa2123f7ea67058052848f3484b6309c34c30ce51b66c9f7cd32183529d366fdca046aed56a230266936e8d0f46ccb446354a744a0d955a9a3841b0bc97efaa6aa986adeb31a61a9233e5598c45544db2c23a676609c34425f062bbbb434a6dabe175f8c66164a371b48aae44a8922e950bbe049493509ce19c08b3e64bcb051f0dbc97bed3ee2cea796d073e986d29decf8508c140793375809aef6895e0646c1b292dac710f740381d5e4f43d84363b70e1db7be424da2f2c459c4037cbd26392c10e560bde50395646a1b291412b871938b8d618491c97b53e59f5fd5bbdb65113cf6ef420303e6125f0f584527ab2eadb26cb57f1dc15bc1df7bcb291deb1dc4e7ffa0aba5f507a62bb282d2f0a55cdf262e522db556943bc47812da8c52888cd655c2d8eb7d197d22955fe676929a5e1a47198e92e41498b69c4a0c2d0973050805d27d5d3276ff147da9adf1d7e76ea4f313675c294fd58250a66183023a01046b6eddebd6ddb6e11ab08032844d95f1f9e9e1ee69fb728e0a36c00bb8e76f61be764fc7e4b5b98112d4294fd0a16801ce2a2ddb3dbbcddb384f1458788e76100a2e2fdabd3c323535323c3d31de363efab181fb63feedb83ff121f277f27c0141b88b99b8f8dff43d3b17213560615469879a3824df65fde181d606effb101b6c908538e5f4d549cc3d8d41e3a2e2eee68c3a157d186ddad511d42f81f0935a9bcb40cd798c3c90b8cf37bf4e7c4abd0294d459829b4e9d423268b26e927aca4729cf66dd33b8d64349a346459718dbc3e196566c8a77a1b7a4660218c406907942e72a0b7162e3e76032d4514583a58cce6a0c002cd85409bc84b848d55a81402ddc72a54ca92531c8611702a81c683f771c8521056e36309ccc8717facf7e9a991e747a8a6d11120388371129b384d74cad42d54233a4913932408492b5819a18cd1118528698c13c42029aa138d6e5119d548069b2449480663785b602c784a55afeb3f7246bfadd1acff08433c0213189635c13843489218244334d22a864d9cc438ad10c52f469450b1ac6fabd88153cce99145e4214483d7e153639cca9958cc38457fef2db6d4b29562458e3c279087c931b7311c52a3db1947585eb7a16f3d9fd011424ef0cea3f50d06013ecf11f2805350ed7c1d6a42c6b524d0e75891adc07645da3a8b60c8b27e956285e74b3a42e43b23506025a88152c571c388e3aa02e174ed9237d53153d639b7fb5f85cf6a2bfdaef7488c38df17e5a0c079cd17d205e6b01110c25db19ab0b67562d1ceb162eb285729adc24e1f452008c7e177610eea1e61782c320b4c849a9cda0e3eb4c23d2b030160b80b24a6dfa9ab1aa7cd479df8dc8ad86b150512bb44fc66d197f70d7ec0877180946f7f893dcd18d0d226a7ea077264dab1ad4ebcea3a3a8aae4537a07b78ab9c2148a7168a29355d64c1463a16240ac5a57cb9b80bca956015925af0ca2ef0675c7a88f33cc51118f5e5a522ac242d957341f812be4e95c616f3f0e38806a36d2b8c51d0226622618e0fd081883b2604fd3036d6c22779d2f3ce23cf03cf5130398f08561cc0043c82bf1961710d140cbf3b2cf65eb1030fff2e08cbcd48c28a24f7461ca2f1fd450c510045c303127ce494e779d525a2696489f0c9d196f527510665d1081a4788e69c31d1e2448bca2c94ca39fec1be180feaaedb6cb86e36ffd69b6f7e6bfe06cff36ab506ff723d2f9f05a1096e36b2794e5135d7bd6a4dd239df13f3704a605416e4e828177d5e7308d245fe36326949068bde5f5ade0d13817727f3577edf3341bc85726e79a9fcf78b80316c49cc0c540e035891ec0d97a7819239d00f578617edcc76c09892d2c095b7662316ef9827af00ac5305c36356ecca6505fb4109eda9ccfcb1edc78128cca4b38f2c5f99b1cf5cc34b329396aa971c2fa6a76cbe732b000450078f9740c3680aede2149c2db5a621cb0e1cd8eea65319f9ed08aea0d25275b72c3efc15481cbf32ba75eb68644b74cfcd37ef896e29256c3bb1b077ef478673b9e1e15c6e8fcc8ef885cca49d4a14f7ee85e5ec557373576529bd79cf9e9b69f32f072fcde52e1d240716170ffc53666f3ebf3793b9746aead265719a665f3733737888d2b150b176ac5a4f60c71445dc93b0f98a6c8ff32a9ad26a86a8efec85dae0d79ecab6645e7dbd83f7f19bbd8d57f5065e63cf4bbfd3c0dee319891acb578f399fe8e966114b2d2952173b298decda60b31b9949dfd14f46aacf05257ab8c9cc41c1a71ca0f1393dc1341d8c84ca54098e1051554b4d8c989a892f074ad4b8690c58d1e1b895b52cc73012aaaa0a4e72375f807eac4628e74555ac284c4454b523464ad3e39c90daaf50ac264d331b8bba89e87034bac534934c650a06a26c13bc9f4214052b3a5563063329d10487ae688c460d2da69a36d34c2242bc1a2a4b18c6409445991a51f922abc847c60d6a122a995fce970a6f1350236a24ad6911ff62c612a6998db3282760c2bc99a4eff6a1dba5454fb91b4561065a76b3fe20930c48e06c5659582e2d87bd5873cee66a891db7e7ec76dc81f9c1033387cfee5f89b989c36779be543c68710d607e6a7257222133aa213bfe80b0a849b49385c915ab1da2603877f6f0ee5b53949d3dcc337c0d06809ac9ec9d9929cae37a60b81f50351db66d7e9f5c8e0ea2c3084187ce8509f0afb6e35d4b025829067243d6a6a55a064cabd08ae014286612895d9353f3005a5c9319bcf6670f27dcd8cafeb387670e0cce875a95bb7d872b946d7e64e9e2ccccde4c46050079cc4b1d3ecb68ead6dd87cfe686431dbc32b9d0acf93a36407b7d9a6702214805ca85e57c212aacd45219272fad9096334e5ebc542824133b775ebe6fc92caf10dd76f5b1682e375e340c2b3935100325373e0ef5b1a5d4dcc99d6bb78dedb8e2c0f0421eebd6ae61636464cfe01055556be7e2e251b78b874e209753aa133ebc6d3ad0a78f15c67cda63144aa98c734129c06546d11d2d1aaa24f5e1b2d9e64f6ccb63265d3e66995fefc1ff3786b66e1d92ae06ae701baf24c76470a58d5c3ff6d75b175164a12442136376c92939855c818928fbb94a4941cd6ac3f5dcb8eb7ad523aefbf12777d44710b8de9923deb30baeeb361aa1581d361a4588faf3659cf77b4ece247b041c1980852500ad4c4faf44a313670e1e3c33118df2a385633912b1a68687f3d58999993bb76ff72a954ac5dbbefdce9919787e6c9b313b39b9df7587e11114c6ac4fa309544697098f8174ae9cf33fa20b4be9d26286764997c6ba8e735dc776d731ac7b35afe6d956dd1340266dab8e675ac92ff430faa88b083f55cbf63cfb99ee939d5f506ba7c37232d5477e9b43a8e2549c0a1bb34308202c941e0ba5612c3d2634c56eb31138d3076e1bf02d3fd17c06bc6663ddabd5bc066cf4880f3ecd86878c90be761c2da08a90dc5d836e42b7a3b39bc79477f81e38022ca5b29cdc0a4b235058cc38b955b1a1f11f9ee9a363cf41d9298d803307053e594b51b1a1f19f9cdcd5841144ffe8f467aea2512357b95a511ee6dbc4c38ae2c547f4d3fac8b4112357252ab7abf47a7ee27aaa0ecaa289df0b0a44e95589caf1e0b4da3fc07d7d70266ece3e961c8dc54693e2fbe5c5b9b945233e333832fbb9841b8bb909f95d152547aaedd3f7b6ce25dc1056450da109613e363e2fa40469ce8ff8c7c1bac0d471213158854a39178518f8c72df98a6f04c1e98bf21cb48c228275a46d1c21a01977837f1c2ce5f02f8774ddc8ea7b1505164181bde268900f822161d0b017302c8913fc6848b83e16b3c260622f009401c35e7134c4af191470ed7b418192b8861f0d8a6b966aedfb6d3817ae439ffb6d5a878e7afb74995c97a2727d6015fecf293805075caff1e8aedbc6abd5f1db763d3af1b6b74dbc3bfab451af1b4f47dfddc6043c0f75a4a2dde82684e8e2723997cad8ac6be7afb44d5cc77c1a5500a9569642a2ce117058ef289792aa0394cdd7f2efb0acb1e4e44accf2acad7672cc07476afa7be4151510be454e21bed5f3bdf2a64f12e9fdf0b88fff2500b7ffb51589ac145239cbb36256241b9ed4b51dc7cd366b4953b1cfeee6a4419292a993beafcae394521ac2ee69fb981d43b78ae82061594ac9b9e823788dd735ac0dc0763dbfe0a20b6e1260ae0329ef8285c271d09605d69f9c8f92da2fcdb5059f2d6abe2dfadc0d52005378db5d563269ddc5b7fa45e396f416ecbf5dbc30c789b75be53b26c55b8cc551b76888a7f36d3e99c6be321517678950b3de2a2fa553fc7c2726ceb5821ee10491c3d7e265411e3141f74af315be6def8482ac53674b78c38202a2218cdf47e5d4d425c0e01aaa527292523dab530a84b3184fa811a2834122eaf249c389b845e36dbccbde66145d23a5dfb7d23afd846a524281527d50a7e49e6f194e441630a90e86b8934928a1d418d409b997aa5b8764fb09b99b5223abc9279aea5b54936aa05353addc137e2f4710aabcbaf79173da3a8c100fd7621358e95346717474d1d89ddea2085f39337857d2a242250bbbe5dbdcbd20cf4bbba2b9054ce479654bda6b5cf01d4e4c0c4d5179f65631c1c96cb13538d2c9e0fdca797acac7ccf0eb1f5698f18da3e4b7b6b4f18d8ade1076b4e28d56caac7b9c7092a87b9cc095f2bd5e3f4328a44cd3c0b784462b9dbede28ba664abf6a4535890e3a8da835354228014af8aba470908f9a03941a5b74bee4c857288a9a6ae58a83fc4d4f8b9b312ce10d79cf80e8eda9a1adf252fefa3b2e8da8cb57184e64c3832921aa782e39188af322b4fa13212edb9780ae426b2a778d998e303dcb34f45229c503e97fcb67f2bf0d0f8bd97ba4c9c6ca97e4dbe5c5e5fb55d2c2aca16304bc5146a8166e3d21fe95a1184213311885dd5080e0b796bfe1867cfe861b9affb870e6ccc2c29933f5eb0b3cab00d78bc38505692722e5a66dacbcfd084d9484337f2564ccb0131cdf0a919573e98affa1e55c1a36d34579d5ed98b8c9a8b40bfced073dcf736bfc0f6aeb10eba185aa5e4e4c7ae370f3256128588ba4eec978ae1f0bb32a625e42bd8f220a75dabd0ca169b41d5d836e6d8d7c26b7e44245ca840a7220177c9727470c7ddf8ddef1c560f6455a01c3ac998944326626369e4c8ec7320777a9aaaaee22841c0eb24481175af9e4e17ef6c28313138383131393bc902c7eb0cf3d3aef6d365fe9479836c41d0707277cdae533b00ecf2386926818216005410efa333906e5ca9893168bf7d27205bef6b5af7d498b6b5f1a00d059e3dbcdbddf6e301d00e61f7df46e42ee7630c53fd063e4f42f9e78e217a7494cff01a638c03cfc8c1f13711e5dc2c7552fc3e310479bf6fb3e937244951c272dab23dfdb44a8528d5ee6731f89a70ac300fb447dbfa3b3c63eab90498e59cd35bfcabd385dd32a386e49070cdb787bfeebdb445bb6c56dcbac76342868cff3c8421911ef054df83d27ab1dd4b614aae844a76ae9d02151b7543c3533f63e9d351ebcb155b7d59675c28fe679452256c1c92d31e525519f032bedbaec0feb90a4dd6e1d6d451e4236670e72ccb7f1f63dc29d967c41accc139b4cd76f2b14973f5859b3ecff141f8de041c31893a2853d386e9c86b11ef315aa98e152cdb6dc48046f3587625357fe3eafddef7f5837bdbe13556fd57b0c79e82a7413ba07bd116e87b3f00e29d50d1ab102c51d3e1ddd6e44c911ebd10a145b832934a02e81ca349417841ca5981a2fe6a621c739a01d50e223abc3b12e8c9ae904b8a9f972cedfd372c55c87beb6a5a3156f9d57abbc02c56010af40b1bc902fe65814e641689fa6a158c8b15c6a3c28b2b0140c7769ffbab058cead40914d434eaa7c8b8ba9a22f035e1a2fcb85695c95a0bcfc7b45b8ae04832a355e4cf3a55a706b0be3c5d4427161bc382e94cec3fc6cc039f25cde3be272ce92547c3f0ed9a042784e8e2ffa42a83fa3ea413e161a7a4c9b58dbd21e09ff0d63332b206f29c694627c3980b05c55a640014dd84b68b0204d27202d1d2a0f9627570018264c02a345318e08d0a5a8402e52b1aab018c620cc8b54fea32a0aa6004cd140c0a32944e097a90a0161f101e251295e09152b7ad2a03a5588a25045e02ff1f2517e330374aaa80ac65b44cd98a24044a42cc004146565f280006053944b09d6440a08d631816acc4df0a19d757e2718d397619a3530a1182778d387081e12add700f34f0c80f2430a702870255d5f99a43a2158c14a0c3044b398103c48a842708c7787c208164f15aa2a2c6ea032190545f866118c4174820680898423c64458a588f3207a06148551de51aab2c5f73fb2449108c64c8db0c995bda0e8bc71ba0227f97d1445d10013d2f653afa345f406f426390787c009a6617969b9bcb85c5a85ca221ffdcec88639b913e83f9369cf17150c3bc5b803ac12ac5285804226cdd184aad3f620bc1af6bd06831ea89a19931a94bf555721d250479932a30a1c095ef1efbf46631e145e8f2704529e2fbc6af7a2b06fef5a913b8846cc5fd0bb45f36d6b2d31128576933ff1bb3eb108552dae6971ad2655c4a6415a6b6ead4522b6e9c325e1539fca6c666923a545ad05ce5f1e0ae952b9be32f95cefe89acfad9d10a249c959d7eafda3659e58f34b352cbb51ab09fe4bfe290855b683cfab20f5aebb063ef6817f754b6cd7df21531105beff1fd285f6eff98f2a0075e1b1a2f8770084e043e75f90011acf9f5720747759e015257c241f5a5504958f3cc50feda82054f7f350e85cb84cd54f777ff8b99affe1f76874ddb71a4af7fa78a167ba1751beea3f6bb332afe6c3ef35d6e3d96e5739b747dec5b4abdfc7ed4a8382907211f71dbec03ddd3ef5efd58ffddafa9b7ed457f16cd435e6faf5e5d86f58a7baffa95ec418eb3546bc1ec7d5d078f4fcdfe0deb7fa79b784da109e33c1efd4abecff5a686ebed6f7560bad01bdde432d34c7dc1e632eb80efe99c74df87d57bb3edde3c3edca0bd7b91e9acfdd63aa7b7eb85dcfedd727e17ca3ebdd575fe3b8ea7efeab2dd3ddb6d1ae63da639d09de5bf0eec2f5067ffd76bbee9f0c5d6fbcc6b6bc9af11a9e47fdde4790de7b81e7bf9ae7ba172a8f243e5b0a8d8001f7c00794adca0ee588f28f7807be1f7f16ff8864c9fde4ebe457344fafa56fa775fad76a46dda5dea63ea57e95a5d871f62cfb8596d2b669576bff4a27fa9afea4feb2fe7d43330e191f317e66ce99ef357f15b921d2b088b564fd32fa70f44f62abb1efc48f2456138de4d5c9efdb27520fa77e943e92feb493745e18181ad83ff0d9811f6e496df9c8961f6557b29fcefe62f0eec14f0f7e7f283abc6bf80f87ff76647ae4e3233f18bd7bf4f36edc5d723feefe6aec8ab1fad8df8ebf69fc17b96ceec9dc5f6dbd69ebfac45fe46fc87f36ff95c264e1c9c22f274f4fa953dba64e4c7d70eac7d3b74dbf3ca3ccdcb0edd4b6bf9a4dce5e3dfb96d99fccadcdbd381f9fbf69fe7df35f5fd8b1f0a985bf2ddeb1b86df1ab8b7f5bbaabf4e74bbb963ebef4bde5cf2eff5565a8f2f6cad756f22bf7af7c717b7efb077744763cbbe3873b5776be69e7d777fe7ad7caae0f5c3272c9b5abc757ff70f517bbefd8fdc2ee1fedfea587bc1ddefd5eddfbeaa52397eebdf4e94bd7d7ae5afbc33dd37b3eb8e71ff69edafbc3cbbccb7ebc2fb9cfdb777adf8b974f5ffef5fd43fbefd85fdfffa3032b07ee3ef0ae03eb57dc7dc5b3577cf3e0d0c1e3079f3ef8f583ff702873c83bf4e8a1970f7df550f3cab52befbef2e9ab6ebbea85abbe713873f8c8e1371d6e1c518f1c3af2ecebe2af7bf6753f3e7ad5d1178efef2d8dcb1c78e35af5ebdfab1abfffc9a1f5f7bd3b5bfb8eebdd77dedb8717cedf89f5fbfeffa0fde3079c3bb6e346e7ceac66fdef8eb9bd66e7ae0e6d4cd0fdcfcbd134b274e9df8e42dc62d77dcf2e22ddfa8fee3adb7ddfaeddbc66ffbc6ed7b6fffe11de88e5d777ce44e74e7de3b5fbcf387772dddf5f4eb9fbc5bbdfbdabb3f75f73f9cbce2e4db4f7ef51e74cfea3defbbe727f7eebaf7bdf7364eed3d75ffa93f7fc3f21b9e7dc3774e8f9c7ee074fdf457ee53ee7bfb19edccae334f9ef9e6d9d4d99bcefecbb3bfbe7feffd2fdcff837343e7aae73e75ee270f4c3f70fa81cf3fb8ffc17ff3c6e5379e79e30f1e721f5a7ee8ea879e7ee8df3cf4a387230faf3efcc147061ef9c0233f7ef3dc9b5f7c34f2e8a77eebd1dffac1638b8f3df978f6f16b1fff4a6d5bedc527cebc457bcbd56ff9e15bf7bdf5fe27334fbefcb66bdffec5b7ffea1de3ef78faa9efbff3e83bbff2f48ea77ff6db3b7efbe9dffed9bbee78d7cf9e79f1dd47defdecbb7ffc9e1def79efb3cbcfdef0ecd77fe786df79eabdd9f7fee8b90f3ef7cbf76d7ddfa9f7fdecfd77bcff93efffc907563ff047cf9f7afe8f3e98ffe0bb3eb4eb43effed0573ef4a317a65ff8f1878f7cf88b1fa97ee44f7e77ee45f4e289173ff251f2d1777ff4abf5b9fa0bf55f7dece8c7473efee94f643e71ed275efec47ffaa4f1c9873fd9f8bd539f1af9d4ae4ffde1bf38f22fea9f1efaf4b39f99fecc639fa97f56fbec0b9ffdf6e7963f57fbdc5fbcf4c997f7bffcee97ffe2e5bf1474f12bf0148a0474f686bf14fa954f2b034af8a4312fc9e0ac9fc62801a69f2628016ff7d31499e8affcb48a12b0eaa77594469ff3d306cac21ff86913a550c94f47500add873002a22340e328e1a715148587fd3446e330e4a7091a87e7fd344519f4777e5a45e370d84feb681a35fcb48196e0153f6da24974b99f8ea049f4d6330fcc9ebcfdbed3f79dbbf5c1fb1f3c375b5c4667d00368169d44b7a3fbd069741f3a876e450fa2fbd183e89c088fbb7cf7030f9cd9313f7fe6d653b79e7ee0e4fd73b7dff7867974377a003d80cea01d681ecda333e856740add8a4ea307d049743f9a13777b039aff4dae3de25fe45e7de7ed779fbeefd47daf3f79e73974a4abb88bae4677a2dbd1dda2f2a7d07de8f5e824ba139dbbf6cefbcf9dbcefb4bb3cb784ae4577a2fbd1397452b4d145cb680e2dbd86ae780d971cbdf3f50f9ebaf57e7414dd895e8f1e1475bfff35dc67df7da71f705f7fe7e93befbff5813bef706f7bc43d70fb7d57de77dfe939b44f5cf30072d1ebd19de8b468ebade8017427ba03b9e836f40872d10171e72bd17da2ec5c0bc7adffdfff170000ffffb5fe93ab046f0100", + "6e0b59dafe2bb084ecc845ecbe0fafa1": "1f8b08000000000000ffecbd6993e4c87128f89dbf2235b36ddd35046a00e4595936bdef89a6678f66d2beb5d5d31ab5347e40664656828d04f0006457d5948d8ca428922229de47df2391d4418ad223453d49d4f90ff647cc0f98dfb086c01587c70520ab6766db44525d090f0f0f0f0f0f0f0f0ff7ffb4def96986f2d16bbff7dfff8bbd78edfc636fbef11b1ffbd827e2e43a0d2e76f9c873dca99da42843513efa3ffdd08ff2201dfd77b4de4571185f0428b3469f8cd6a7a3ff1c8623dc241b15d0e943b439fdd86f076b146568333a441b948ef21d1afde7c45fefd0a8fa628dfe6f9466411c8dbc53e7f4631f7be3cd5dbe0f6f56f1959d056f07d1c57215a71b94daabf8ea9d37aca5bfcd516a2d57681ba788040ba21d4a83fc9d55bcb9bec9d1556ee7a91f65db38dd2fa33842e76110217b870a0a97eea9b7982edcf310e5394aed2cf1d7050ee77c1b477981112ddd497255fe7959b69938cef93a0ee374f9babbf01c6f567eddfafb20bc5eda7e9284c8ceaeb31cedaddf0c83e8c1eff8ebdfc57ffe9738caaddf4517311afdde27adff2b5ec5796cfdb7abeb0b1459bfb73a44f9c1fa841fe57e8ac2d0fa6f098a46bfeb4799f55f51f810e5c1da1ffd1fe880ac4faee328736756e647999da134d8be93dcecfdf42288ec3c4e96ce79f5c72acef378bf749de4ea9d6cef87e10d312aaff8314fe3e8e2861cdccc71de592eed7dfcb69da110adf3208e6e56fefac1451a1fa2cd32bd58f9f75c6f6ab98b85e54da7d6e9ece49de5521ff674958ced1df23741747103b0b1a5a31ac6d21939a3620ce789bfd9e0d929916cfcf4c10842b79d6e175bbf044a0f51144417762108a39d6bed5caa05290b13a79e68cca1f12cb9827078d6ce13e2187b140e6f01e3185bbbb1108737a57178308e89b59b8871b8140e5740c7d4da4d8538dc331a87801f336b3713e398d13826358e43809b1f6b81969dece3282e5a20715fe4d26dc0cbd6187c7fc8d1a616ace97aee2c38e9e3e156dbf57a3323b06c82cc5f850d005e18679ee5ba9ee57a0beb747a0222859ab967aee53913cb73276d3b0c1d3f44e9368c2f6d1486419205d94dfdcb72176c36283aa7c09635d8f9e52ec811662d5a46f165ea27e79771bab18b7f2da338ddfb213ff1f4349f4ec15966569fd67ac73a0caf455a8d794e8db5e59200bf5801784726c15393303e3209633509932393305193303d3209533509b323933053939056fb36c63672ce4b13a7d44c8db9536ee2c9d5288bc360332ab5c0ccf23ccb9b59a72eaf3bd83e2a4c2535bb2cf4ef399673c7721de70ed19e6a551b14c2cd17ab92d04f2fd00db445e0cfa0cde1976a7883d671ea1716031eed3bbee52f77856a6a26c599adfcf13bcdaf87348bd3651207518ed2731607b62a0b8d44f0c21fade30db2fc9229c13a8ec87f97c453bf64b91f6dfc7463952d2b4a6a7b92406c11ffa6a99e2cfcedd6a188687b077fade880bf3514711dc268d96f3c720ea2ee021a2de61f2f1c9839da9b692dc8a9bf090ed9729c5c9d636b7de76fe2cb651015670e07ff5f21e38c747b27e78441c9caeefca4114b2fb91a157613b553137b12964594b24ba51da160f90858d036c1ccd01fd0841a10f3717c720e581054c7fefd52a8ef37e4370b663c5faf36525d503526c4e1be6c9e4938d182287eb75761bc7e002048521339d9045912fad74b8cad36fe5d523176932177aa2b44ee38b91ab9d3e27f0a3b9eb67026d0a1afd46b053dd8625aa5c87fb0c4ff6bfb61489851e56fc5df9008921c14cc5d92caa728498f2086e4ced5d2795f202f498aeeb3cba1dccadaaef0dfcd5e724e4914c1524ac61ea06ba0b707abcd4d2d324184e76a1ba2ab733f0c2e223bc8d13e5bae11de2d3e7bc8f2607b6dafe32847515eff2c152ab1389d58e537fa77a7f8b900576ab1d7b7dbedf93e88eccb6093ef965e717ca98f6d1362a72d84b1383e3d446971f80f6d3cb2e53ed86c42fa90849b019aaf5a623c7bdde64cf9005db35b09f513b983d01fe8bd899d1a16a9f83bd98304aad9a72a330c7b989653de086ba445b0901eac2092db16855ce9c881672e07f4aa7b7d7c36594dcf20958f97d9ff38c439c497f62367a455121da26dbe9cb016e3dc72179ee59ee17363bb06479025cb1220e0a594ceb6214131658b9684b953cb1d4f2c77421c84c320cb01947108fc78086fe8cda21a5ac9867133ba02e7280c96519cdf5b867e96dbeb5d106e4ec07e34010f20e00d7d54985214d463c07f1ca001c5213cd03884e10f02f843d8f2061f632842ec4394e5d721da345244e8650c803f97e639df6a140637cc9920cdc372bb2f15155ea1ad6031a7a1e5365e1fb29bf890179a0cdb6ffe218f2b613db35c6f62b98b33eb7476725e01d9f1769ba1bc803dc71ecafaf74a8337a70f8cbaf19e8ccaae2cf1a73fa836b8284fe3d00ea24db0f6f3386d882b58f01bc13e89d3dc8faa21f9214af39bbd7f55a9f189439e92da3585e16cec8cae77ab629b623fb69a0e74e596dacea33d9413a6936d1ce728a5ba392ffec7de0469e99d5da6f1a59da28728cd1079be75414c952a38e4794b155e532d7861d66cd6e961bfca6e7057d8d8c12ea446aaaaa3db066dfd4398d75bdd983a54c2024760b7d81fee87013d527edfe790dc0f83f2dee006b4351d7c822034f4210defbdb6f1737f19ecfd0bf466f6f0e2e357fbf0bcba2a79eb906fed857567fc89ece1c5e86a1f46d95b7777799e2cdf7cf3f2f2f2f4727c1aa7176f7a8ee3144def8e1e06e8f237e3abb7ee62853d1bb9b3bb77c6bf7567fc89c4cf77a36d1086767a08d15b77d14314c59bcdddd13a0c12f6b7cd5b777fc7754ee7ee687eea9d85f6c49ef8eea9e38c47e5ffe25dc9764f27dea8f89fdf5e9c4ecf468bd1f4743c72dd53ef6c6d9fba67a7eec23e1d9f4ec6c5ffce5d1ec1c83d9d17ff0927f6648da1ddc5a977669f4ec6f8ffcddd91639f7ac5efae7d3a1ddbd5af6fdfc50379ebee1d6f3cfd44618bdc7db31c64c1833be3df7aede4bc5c31d8374cfa896bf3ecb5d7c099c30a36dedaf97582986984448695187b7d485314e59c24159b51e82719e2ecc9523a20ff86b81b121de0366e012bc701e80d61404b1dda3883cbf514c585a20de34bb43957b8957926dc008637710324685529a92839e4378c551a44411ef8216fc253b829b31ee619adf01a9b86f28991163b614fadd1e60c35faa676153587bbca43c0108ef95f6ed412b2ea7b465a6fbc0c5571c12daff2f77590ae43345a5fbd75d7bb3b5a5fbf757771ea8cef8ed2e2ef37391877a201b410c1bc79c12ce9d1d4b9338a623b4509f2f30e0b9c6075b92ec8892d4d63cee98745823a9473662cb34ca12f44d712a076eb00cc75a805b366151738100666ad528771c540f85b58e20ca285819f0506cf0c741254c602742ee72d11e3a3ba480908563c76e438c2133461aa16560d7ba3d89ed0b1a952fc49982ee470efbf51da3e1769715e2c079aedd2207a505bc6155c6981066148c0bb14bc4bc2574ac7a2bba214e49ca66489f6497e0db5238e273406876fdfdaf5acd15b4251a24df6b294ec511c02cc07ca82abb486e3dca96dd1423ccae813a2b5c56222e004e78f8abce29cf6e975e867d91b6f953b592163f6674e0c3c67de895543d8c567f6fc7fea92877c9b5a23e407bc4d2ced4bb47a10e4f64521cd28caef15ebc54fad422047799c94ff28b7276b9bc6fb7bacfb72717262e531fbb373727222eeadeca4edb4e888c7cbfee440285954eec2d9a00b4d6c80ee56cd54ad978e365f61902c6b07c22abe02e612adb6ee76aa476e299feb3c78482d47c9f84ae06e032cbe7a0af7633d8acd02b968c14f28617fea8c0d5403e2d1350a823c5a9f8bfdc5a4a3c8736696e7ce2dcf2b3d5820e9e71dac6393711a4fa8a87529c8866c33172761cfdcd64eb1777ec2e9eb0a6792067b3fbd36ba6b50ac40503ecbebac63684cf7481ad31d5463c2d8eaed64bb55cc8f405200c8a51e1475cdadeedf584f779492324a60605e7423db44fb3a68ea2f007b80d5bea2d1406a171a4fa36f29bf3bbe8e4dfce270a1a97b4987ac58f582012633a12ac90eeb35cab2a30b89b33d3b9b39af5489a92aa9e64763f954900a555243e9aa121afee852b259385367685edc822af167b30920dd3255428e46a54aeaf10ca64aa6963b1d5b67b30135c9a59f464174717419d99c2d3c6ff54a93986a926a7e34564f05a9d0243594ae26a1e18f2d25abed7c4c9f6787e0c5f135893f9b8d3dd74c9390a35169927a3c436992e2b4e28e1d6b321e50956cfce8e2166464b31acfc7f3579ac4549394d3a3b1784a40851ea98074d508057e6c09597b63672cb447baf1e11674c8c2f33dc3830d3116950aa946339c0639b3a6d3e23ffd1408e47b215dd676960451544754547fe0075337599ec60f102c7644641cfe271d90d1dc4f4c98fb8909195a31ad425ae16b6ca62fe0e6a0fd78ff0d0129542bee2b7b65e13ac2de45b717040dc43d86881a1e0b4f93de7548395b7b3faca2abf03f0593e04de849a042399dd11c1a745c3e984be22c28efc450e817cb54044989d93a8eeccfd4f7d20f832c580561905f576fbd442820a96c09f057591c1e72d444c488d0dcc72e4700d7899c14f108a8606b2a7c957fefcac832f73ab7fc5c0513a57b3facc2c5b22bbbfcb48fe37c574ccc45ea5f676b3f44e7f556c800f8511ef861e0678d1f990ee7c0a362835dd95fc985cc7d631e6048d197884aaddf5e7a2910eb81b35054c01723bd6dabe53648eb85c42d4d12b8128f8fb72db915b87446f61c084535b8bbd38b77aff7aa2afef6083698333d9211e64c07b5c204e8e40107a6575efa4d971d9bd1f65b27aa79a3ce50969c8933e1de761c9f575a14cfbad9729ee3adc663992d673852daba33182b61efe99875d3b9359f5a1abe6aad809c5ed7831d0649e0e02ee9da91cd8d09d53448c5213fd393f3da5a5df8672b7fd18d02e6d1a2614bee49a3697be04da5160ab1e9228f08131e106002204823e5a44f805258415a0cf48ece19d2905cb90a0109d6511ecaf3ded88050c3931fb99680002bd8b81480f096a608905e06002c700e5bca69023ef3f44040102d4b091d62a6b324c92179ea14f010a1a0cc519aa18a7a9604d3ed8328d8fba1eae1a4a81daf1fd8d6fc13b0f189763c2ddf21a739009a783d0113453eff1a4b62c2b8fe85be2208880fb7a18855e15ad2786ed817ad5da38e84f46a7018189fcebc18f4b01462e7ad047a1a61656922ebe7a2ec0bba222903961e34cc5696d81886f0b05c1b2f2c773ab5dcd902cce431cc30e5ddc2afbd9534c83762ad7528255d1f7fbfb5a965fdeb2f534346984d67a75e4d16312d175245c58403cae3b1c40d75f59c5ecc9aa485d6423eef3a0cd1fa26c2a6dce94967f4bdb824a56adc9328ad4d5818940672bf3e22b8cedc726763e59629a1aa23df744ee234130d08343c1d90d3a2542ef0a2e492120d2ad75e23413dfa31d7a37d44bd2fa1867b5f07f19f7b963b9f5adec431d8944c164257a2875d127504a83c044fdcd0707d2bc214252d8c760fe3618856591b29476c1eb7cb241951e39e3499ec1d7c14a264ef18e3a3d6c2d1dd3a20a23a724d6b9d902c34a0cf70e720274577b9330b72bc59afcfdc4e28d432dd6e1c3dbae9acd8ba88795f3abbed1b26a23f2b0f33ee646abe6f68ad82ae440fba1eea705f79bca5b8a1e1da56c4a44a5a186d1bc6c3103de422c222897de376b924a56adc9328938d830f3a956c1c67aee5ba536bacf6d349a8eac8379d954233d18040c3ad839c16dd15cf2ccaed76359e7543a121d71e112bdab99fcecaad93a8f725b4dbe66122fede746ab9f333cb753cf3dd436b2574a57ad835518578cbe36c85ed0c97b73c0e59dcc068eb301d83708535e1b0c4c6719b0c929134ee4791c9a6c18519cbf68c8935595813ed2d0320a91bc7f41607c13e7dea0cb70b723e749738bd08b7dbf9786ee8e5d2156572afe8da4b674dd641ba7b52d96d9f309078bc4db8e57f8db7091de9ef48b3fe3af009e464c6982ad910782f5e4769e2470641fb3bf33785db22ffa8b700ea373ae57d79e7edb343d7ad1e52ad575c9d631ba2aba5337271524dea73c196a4e4158ef6c5c1ac6c7b4bd682cbc8c3353141af445c8ec5158e05ca36c5435161fb15771c8cf19c8bbf3f7fdb0ea20dba5a4ee478aa1ca635f454015d4e760d3d93430bf604006d25f235deb9065e682f0430378257e31ecb7143a1304ddb33f3b60c7f5da7030a9ae9ae6b8e427b2664e1720d015e4702f4a64c1e005713b1e06968df73548af6e43e290938c33111eb7fc29321c290c449310538336c8273b831a8a895593de8cae3046b8e3acb9b439743a1bf751b0d97d8b9f360084cf4e320f26191edb6f9b98bd1e15f45c3a33f0ad4774519c33eed003239a65b09299393205d7742ba870e3bd3a051bc34b59af1a1698a219af777acf0358351769a4d804fdda4a217154387c1f55bc33a8171860bcbacb93478aeaf561187d3e961ee1460771bec1a2208cf5817f540200bd433d24f1d1b1f2f98af8fd2eacdd0bec2341065c304056a8c5e374cd01855f7fd44194a688ea3677061e70ebb861bbe6c6e770e49ec467847036dd0b0c57e940fc6ff7e715cc6fd0d18ecd859d9c8a2fd8eb1f2f40222fb2fc1fe63192c68728865d97f384305560ebc54871bd8b117ad321cd318556fbd250ed934c7d13388b373871dc33a5f36b3bb867e76a3bbdf1e3d4878683fc207e37eaf9039e3ee0c77685950696745238bab3cc2aad30b3cedbffcfa0f65a8e0d4219664ffd10c15c03af03a1d6e60475eb1cab0576354bd75963834d61c47cf60d9ce1d760d9f7dd9dcee1c62db8df07e1bf43061b8fd281f8cfffdc2128dfb33dca265c1bb9d958d2c7af5182b4f2fc0b7ff12ec3f96c18280875896fd873358a0f0c06b75b8911d7bd5aac28b4d31f5565bc2106463143d8392bbf6d7314cf9e532ba6b287327aafb6dce43843bf7227b28cef70a8936edcd705b96054977552eb250e1e1179b5e2075ef55d77b2043055b0fb0127b8f65b080ec61d7e760e3eab152cb1eea88bcdc4f2f1010b74c4355717b7c8d7c497c31fe415dad94ef94187cd15ca0d98a4fd4d57c137ab80daed0e64415fe8c7fa82bdcde305576d77178d84754a1dd2c4f51bede7175b0e34481bbe54339f44394a1a69c3fcc07aa3d394826e97a9b1a4fca560a9d22c693883015305e85888df524305243e1ea118fc6b8c8836857d71c009c4dbb07fd2d4209f9cec8195543e847be3ac6b6d32074026ecb205a1c716bf4f2e186a9082d53a49d466f86aa7bacb12bcaa20e30be33d900961e93d590bcf6c3303ee4743d80d3295b9d9b7fb3c1970517d41f634202098dd3d46b709de46ae47ac9d5e88ca18bcf025c57cb2e33e54f1c6503cd8a079e03573cf09cdbab78c01786c8e30473e71c8f16ff0ba85b508d9dfc371ebc82571c7c29566ca101a05e851159a51816c679105dd472586070ce69a19c16088959f25882294c404d910a0f67f5d742ae21a17c8664a56001f9a84906335132021ae8503215168a119602189e55552be578e1e0a15e23f7786bda88073acd64dcd069afe40b19b803a069aab0c2dca082155448f4c4a002361483aa9572b8f00d759f81eb498198053acd3a4b812e5bc8eb61004d53415359694f2606d485854a0c2a604331a85a69683fe816a4d7c8f5e440cc039d669de540972fe40d0480a62e7fa82a97269302d23da6128212d65006ca46caa1c21eb71e83d61300e1f0355a759e7e4d9690eeaef410151283df58d36649558fa9307746cdc6916ef893eeb94e1508777a62951fe90f8ee867a014cd76bb6d8c736c0003cff1a99fb671ba1f9d7ad9687d58056b7b85de0e507aef7462b9d6e97c6a9d9e9d58357c3b067903a84fddb6962171e7b7dc872ecfb4797544dca6e36c05b85946fc824a37ba154dfa8a3259290a85e8217e286b3b5add1b2f25565d111d5aec0f0de85138c10ed8d51bb0a497021c68c21f98884ed941bb6683f6ccc9997023f7f4472e1ca2e5e06a3a33b3e17becf0bd0ec3178e534c13cf83b13e0f0a9c13012d8be46ae4811fc54c18b34c1877608280a8898c289e0b137d2e14f816a219293e4c66e6f230615931e9c00a016513256513563317a64c5ade051954bcea2124f56bd224c65dabc8916e1f3d46d05ba2c0feab4bb538f1d7417ebd3c3dd333d6ba285cc032b237872a0584730efeaaa4dc8cdb0655c97a28f1751c867e92a19bca21e89c1793bc0de34bbbae760b598925b4bec5a4034f1334a2feb257f1e6faa6bf897c3e4cd323daa3dd4c4131d33eeda7816f9733f9569e1ed0679a4bdf3633c13a8ef04dd11e4507e812ba69b20ae3f503be0d0bdeb8b3f1856fa5ae8387c106a5f5516cda268f69ae7846591c061bc044a493c94841d9bda1ee96aaab2e580c9bc00fe30b3c323f8850daa81af79c9b9625be72b8e756934cff445dab9357d5553eb6cf1eb23cd85e973c8cf2fa67e2de86a8bb5ddee3940add460f5194677402b74386523b43215ae7d5877dfc36f46bc6ffc8fe003302ff584c70e85fdb7e9220bf3ad7978096ba111e20d9a6e1ad23e4ede994676e1b0da226b18ac2e84229d0b4b330005b4992c6094af3eb6585935ff5e7c3411b4201d8659be1e93803b7c3e277a05d1eec83e8c2de1ea22a9c83526cd389e59eba9e753a5e14ff70490d6adc14a21a15ab92debfcb9f34840a5d05f91002a1d9954c048dd7cc2b21fcb009211fd0c50741555be9187b3599708199ae2fb3e7598c8c957e1dadb6ee765aed6353c749ae6a1f67bd75635727b399f96108ee658579c1ef65d5af19ff23fb03c9ce2af1627cc8c32042fcfd35bf3ddceec19162a377369e4f3c307f52a93576c8df80317f4d0650c0e8e0e40353e260c92106e8e21f211b8ca070bbdd9226ca849ce9d29c9b12bfe0108636d4801ac4a8b91fb0641fcbc2b64c9a533a444810220120ac0325eaa34e7dd0c1f66cf3230ac320c982ecfc7217e4c8ce127f8d96517c99fac9f9659c6e7050501d9c428534d60bd3a1622de8fc6642aa80a08b9489d560c5b69607f53c328206d7f897cf8f0aac9a29a88478d9001fe5407e61e54005112d1899d9c6718e52500c96ce8813b1121cefa47194d1eb85b5c1b18a45d14682008af66ac273aa76a97f09ad4ca1f2766e5f4b93574f0e49b64049e26fd5a9b0de06e3e4a68c2faae25dcb3025a70e9e9dd6c1ae82c680b56e69c3637576c35b40f85fa19fa3dfbf67178726d212e2be999247078beb525907824b897504843a72b34dcf00d383d2fc6a6a967902b3cceb6096c17e1583465d4c319d79be0af2aef36bd68b9630a925ffc32e54ae40a8dc0fb15095d6f14dad4ceb284b13ad5ab63152ac40130ddd2a113085661592a854ae224a5fe9d78f9c7e85a6fa282a56d0919648a9d6c0875db03e8a3ab6d0a595d1caead7da612151af05a49172e51a2855eba7249bf7a79466ab8040a56a85e9d458059f12acba4fbd52ac1f58f93752abb20936ec464b9cd4d2ff6117ab8fa25ac5362be30c68f4ab8662c56d8c342bdf4243b54a644ba15845042a35ab80ce57aaf523a75a81993e8a6e85fbd1122895fc7fd8c5eaa3a15adb97d3a427e804f8b954b1d0976203867ec7c2437ca85f3a9f1829ef9742a1627b78f9340dbc01bdfc0109b7b8974fdaab4df4a3b2897e006469a06dfa8331925786c02b43405ba0285932bc79b865ea5efaf62fa666e0fb9297cfd897b2e52bf8fbea96e7d566df4f8a06ba407ad963787537f551d8e0db083a2c549c03f1e5049d96b18060d02926ad5bd0a92aab996ef0a920d874394dae46f57f3d260a4f14c1087fec1161ca23fc2044980aa9328b30a5265f27c2548a41124e2a9d16289cb46c008493360cc67f09024acbd660402924b4cdb8832843f94822aa54ca3d094babae7551378fad3741eeaf4284b39c34ab3188f030f1fb3c80feea59300e93dffb5736f1d28ccf9a0a8823d0759d87054e5d678f93abcaa368976955ca0c96e33aa35df52b9b7ea58ec67ded35303909937b6274ea9ae643913518a04bedae8edf053467f809773d73dc1653cb5c9b2fae497e017eaae5559cdb03a081ff05ff55ac18115d05eed7ddf17cbdda54e48c9bdea8228116b982e087dd60261e11994d4d619eb2f6b124df0ccaa2478fb81273ab3382204a0e79932710b3468f9a5b1101625240b505d0f572c54241239509afcb4c4a105033e96ccfce668e1e359a33d964fde32692fc02cf639b3150398d6461b20ed3580e9c9b46b2c458ef59a4f2d875994509026a1637670bcf5be951a3378b44d23e761ae94fe03c9229ff941349d6aee93091e5d8d989a4abd0f49e4932215d978914b7a7e771359e8fe75ab4e84e639d798f9f45e28b60129bac7dca39240a1e7499423c6c7e0a89da05ba3348e4e8b9453b649785fe3dc772ee5885850ba685b87d93446024a97939018c160e897a7c5ab68c0c81b655232f533e8c814254bd666583fe04b29fac99cd1f588f65aa94fc60c585a4651871d11e8fdaac91d7b31dc642210aa4b253497f0259439657351f7ad7a92cf9c14e2549cb2d4fa5dab691d73d1cc84c21cae8713b1cfd0ddee3c8327ce6a3ef3a9b254bb80d8f24e696a75369e0c8eb650d63ac104598c0c96cbf8927b32ee2643cf6ee735930049ccb9a9621e752d7faac0ccbd65d873db580a76e1f449577ae8669fd75f52f80cb0ef7d1def9d49021ca739462575ec1b9fae75278eabfb671d4f88ecf53846b7208dc1bd5304abf5d552b51513b112846e2501ec62445b6c0c75876b76cee9bf09f7612fa6bb48bc30d95a18b308cce3ccb753d5c13ff14f4413578f7d91170c66f0f886e304cf4db7ee9fc968c5987c84f816471b03e626f3ae86c205e72a573f791a4601fd5c2bf2fe99ef74257012c0f832c580561c1b69232a80382c9b24e145c17e8b60ed8ddb3d292f0dc896052f12ffb439807c57442f9f924e0b27d85be3b81d6297135b54a91ffc02efe6e7302a67158965392dd52ff3f820b77fcbb2c79461a5f42b5df80eeefbf51968ebb488b0da2c493edd2207ad0a4eaa4c0f14fb8185cdbcca59ab9403332258825fabccbf7619598480883179ef06bd9f886db2e8414957afa6d3b8836e86ae931372dd445a1a875a5316a1cee84bfae9123a072f763e9fa4c8b6d6cdc96a5672ac7401d7ae56c5fea817d3a45fe268ec26b6218721aca1f80b14093a462890e327d1ee98bec4821b91454d3352b2d2a91ab8b1c16f41b50a56800c0f28be8bca659c5add26e36a14ede00806df83753d142c6e9e911a368010137e4cc15e4e8adb68a744db876bd198c528f10803b1dda6810d8813643b20414353327d62a1597798562c20283d6aa860dc967e6241b2b0e731c7acd5bdd0b5919aa51982a18731c7acddb51a88c1e0885b16aea8044b37d3b10cf7c20264a0d22a17bd34eaaaff308f426641834a63ab3f3a0fa8f477f288d942d744cb8fb3a061807dfc6cc6941e31fcabc85ed1a101b15c4dc2dfd6daea7843408d342c9626b0986cc0ee025d4fd37e840461ba8176c8a832fb3a642404cebc7897fd39922258726a8f0bb04acaefcae6b67dfa72acef235be2b8729d8521431ca661d6e4a6d8fc033f6b2582d3a7894674b5e8bf2230230e05f8a43fe7db6283dc06ec625c054ace7f1ca4bd6ab5ab5f287e3276141a15b50134a55fd55547097e124a65a5148bdc2423b9f2097365d171b475153656a58ef355d98228dc35179b85defd0fa01dafc01358620da046b3f8fc1485a817f7fd2faf76d30d8160c142caffbc90fc1debf408d77faa260148af27b6110213fb57035f63c4eca7f94c3b7b669bcbfc705289c9c5879ccfeec9c9c9c887b2b3b693b2d3ae2f1b23f39104a1695bb7036e842131b1b4559cd4b69477e40268ea8a34c4b14aee75e1b022795cd7814728baf9e3235af83a6fec287286dc237f48963af63b8e814a0f867c7f526e180a08b8ef221e94831f1a241f61581a126bfa699140111cd8309c3c43a732c774c5c62d4d3d36c8fa5b7bd7c9d4657bbf766cc4e00371a098823cd229bc3c5a2b9612e9454f08a5e2b3b114653b3f7a6daa6a238b7fd308c2fd14675f346a229df64c04f3404ef6ea869163cad68de66b7d5406a7bd9a64feb221e683e1a21cd917172053c8612dc032bb4a2a752e22ebd2ec22059b66524aea0107efc5aed183bf3e2483bf362d09d19c6c61859d5453cdad78ffa8b7f32a104fb60b309118e08b0711c803b234a130f5f684a2ea875a4076d6082e368df0d415688483d7282541630d1b614fa5b089ea985b05920172d641642d7cdc0736696e7ce2dcfc397cee7bcf2837ac54e4f519775b44131ace2e4c407c8ce4ece2b203bde6e3354860a60b9aa7f6f0b967452f8db30f6f3250621359adb2a34a6840389bf7a134a2d070194ce8e391677d263ef946055eca2062df5f6530942e1fc34cce5b6c1ced4e06d924785ada5557c55896eb167e628dd07919f0fb0945f1d2a8f7ea8a466913a417c30e6923f674272079f388e3782ce474f88f8e6e8614a6ff7d3e8106bd7fc803a9cac0d78663d9e38ddea31f616044b78b2a5fb16a297f99221f2e527f1266699d5928734bcf7dac6cffd25fefbcdece1c5c7aff6e1f97ae7a719cadf3ae45b7b61dd197f227b7831bada8751f6d6dd5d9e27cb37dfbcbcbc3cbd1c9fc6e9c59b9ee33845d3bba38701bafccdf8eaadbb783667237776f7cef8b7ee8c3f91f8f96eb40dc2d04e0f217aeb2e7a88a278b3b93b2a8e57ec6f9bb7eefe8eeb8da66bfbd45b8c1cfb743a3e755dfb74ee9e7a67bf3d1f9d9d4ecf42db3bf5ce6cef74ecbba78e331e95ff8be5c8764f27dea8f89f703c1aaf4fdd45f19fc9f8d43b2b7164a7d3b17deabaa773d73ef5cec2a93dfdcf1c965141c2db7731d56fddbde38db7dbeddd37cbe114a3bd33feadd76473abbf5a3f8cd3e38ee6ffb598a0e9b4e0f7e87432b5dd919b9d4ea623b7f8bfdd6c8dbf8d5c1bff66bb998d818aff33e76ab11462bde5d2248be3dbf75a2bb59152a0f2c3d6b228cc04abf89f91b7b853d6104dfc1445f968ecdd012c13b3f65a43511dbeea3135b5eba772b4d25315743a820f26d96590af77254ea1266535e76c6eb90bcf72cf26b0ee2c91923ba2366a776ab9e389e54e046a99a4d7f0c4cd74a5f2cd513d294fcef293b202bbca474bd86064220739cb8db00acc5288cace5c17da8f602fa61c87ec4480413a47f08578a1f439834bd0aa0ee1064d354fe1128c72155ebb724975ee9ecea768cfbef3f98d609fc469ee4779e5902bd35235af97aa56bd33ea744f9463c801713ea3cadd5e1729e5f2164d9d3b5a453ccb429d1a9969ca129d251fd77eb8bee7a2fdc81e4d92ab93dae7c9fe0cf0193b08b479ab86eea5e66aee625e96c43bce9d913d72d15e88d9ccb936992ad6515f3f9b5e078ad5de0d89deba6f71c327ae6ee6402da2f2f3790faba0e961aed1c310c641dbe3997e8fa65bd6746ecda796dab13184ada03b2526f8bdd5d974c3bd133f9efd00678b18de92e01d03d2de146714532fcff2f5f1d964353d1b4822003a947e41f9be58fedb0ea208a5658a411c9c555e0f56493d5b97fde91ced0df7d932b68c0a5de3de683257cda71eda539735a7856941e675049cfd3a4410b16e040df89f21a289c05d521746982a2ab9a484173a93d9896135b1b74708ccb46ae28049e184fc06ca310bae84361043f136960f94119ab91dddb2e5b23dc63d8d333dd2458d331df4a60646270fef522ae586bd38fb708748ad3eaeed99e91d89e778abb1229eacef353c693708efe0cd3ceaf2d5ce26e21dcc47af5ab4db20445c5e0c9d34b675444ba567da4be716631541d58648350993db23aae7081b52dae7e32dc82109637f433ed6665b2e15ad0608c310c7a0f1d93bba0c8c7cad613abcb22d956642922184cc66c68e9b5353b8ad79445e770e948730e219da20a8c8f779ddb8aba4cb184df5e84f2a8afce1acfba211e3e8bd7c68f5a96d36f45d27dd4754ad18bd45428d4eb0426e61cc9c04f61d3e815072909e734b9af9d3def959156418c4d1482042f545fbc2733cee803b0c6ed2b4e53186376d52241006fb80acf69f2c6937442984770494302a58e4dd2dd3b01f3d11b85166eed2ff49ecee823055f2b031268a3394334b46b14e92abf2cfcb9a710ee4321d24617c970cf0a6fd95b59afc688d88405cf647f6ef018b518822d3ebd77c95cbbc49f8355a38388a8a28a101992fc70b34e6f5ce1049c520acfd528a8118bb261403900d8307b640a89eca6408c7cfd90ed386d58880b44fe7d7097a2b437ebade7d868df4716a7518bc8d530d965f57715371868d16e6d1b7afc2f5bd72ae9cd5f453759ed98d9fe4251c2e205be6d5030dbd071ad476451c4c8bed8aa87884ff56a9dcea800b975529f1ce9d3a0d1fe5ce25b751dcd5ba7e4cf19b697c99a1d7a4b35d9f1d5ee2f31ff2d586d19909184d6d841eeb05474d73f98e03b6e1d523512984722c8d5af8a01dc715a3d29d2c5123ee882de18db66008fbd13b36f368cb24bcdce9ef83b67aca91f62073d855c19e87a8330f59218ed46af807e6511b7d2d7fd65c9dcb3a606d0b192c6d66b496b0abd553c5f0764fc09609b127947f973a7fda68f8c59419f918a83f2675aa743b00763f1b1ad63fe02b1fd0150b4ddd1fba47827e68c133414f94cca1a017b6a110691bfdb75a3e43497727935d032fb055cbb8a76dc5f7f171ca5d8fafee4487b813058ba8aaa641e55315daaabad0a5b1d28534dec4379413f07277683e1ce3cab71e4179f12bb34bf4c6a5af0c180bfe655d0f985aeafa433273f92bf192a9c0ec2cc1f14b554453f907ae2c2b0d6f3ccff2347e8096af2ffcb395bf50772cb0e08fb4380486f8ed8bbac63ed2ff10537515a7fb2a9bbc2c2b7c9961adb9e31f9156768b6214fa2b543f2a5fa1f0864e4c06b5c07fd7614bc4e3f2b90816ffbd43615247cf118da66cf968f248e2f118f19f50d52dae13e0e9288c86aaf82442e36c16ced491a1a1aa0d89d0acb6f3717dbf06a321abdc88b0acbdb133161183f3eb282a049419fc733fcd254888f3182c24cbf2eea21068ee6429c16b886d2cc2562b4d985796ba09ee5d030e7b07f7879c8eb9a31d39edd30f4e6b75975d38fcb78714c325cb7ac8335c38abbb64c3a59b940a05aa842ea246476c341b1302a4d9021625c6e86065a93c26d31a5f100dc63520d2830249fed92b77b861196448c4da0a33b8c8dab721b227c28c2b70fb2a65afc582f03983b98f3873aee09640a34b72d0d2ee35000b52a880e5f23e58878a9675722294709806225699caeacbd150a7ea95dfc110772cad436f2e9cd18a54b44ff2ebd603c80143898f694341d2a4c24e857f9776c5d6df07e1f5f293eb38cadc9995f9516667280db6ac27940d8c283fe7d721aaaffbcb17c7d9955d7edac771be2bc67291fad7d9da0f517373cf00f8511ef861e06775e0aa74f2ef93f6ba4ccaab7910733ef72f6e5ae7a8c6828fd787ec84ccda8cffb90fa260ef97790d4b6bff8484e74894e225473a32ece9061087560d1f6b64e63d0c314672671b7e64a3468acc66af4b0f641cd751fbc9723fdaf829af0a8f36595dd9384c9f5d183b50cf35aba115d9638e69c7d000880694731ee540820d203ea2247763b111eaa3ae8a61a6a16b578cdc6b1c0b098acadd449c5557dea0a542558191c540dcb072069ee242558950df70695bf2264cebf751756572b9ad8711ff8bb8cd56c1ab6fb4551854a7ab09743a9260129fb3c498b2bd1f86a44cc08327c0b03149bc1a620e0684dc082793c0662837b8252f3713dd9e6ea818328a478b84896a5c3092e54d68c9d21e9e4ab25878a16469f7a8922c4f9b612ac91263e22b85c89c0e2d8fd4c24880e14f4aa84264f9c856f5b9a1d5b1020793998e066f9858149097b014ddc1df25d4210743bc57301cccad05446b53a417f540e599d0c64dc9062cad624e892e3d7568b8cfc9319c4fd3140be99e16b4a5bcd20a019e5aee746c9dcd78f925bf7073e16ccfce66cef1c5971f8a547c2bb258f16d86d25f7a798234a5b724cd10b7bef4028cea24bd151e5eeec8bb38a5f40ab190772182b6d415885c7a3d776eb963c79a8c39f1a53f71b3b1395b78deeaf8f2cb0f462abf15598cfc1263e92fc03c459a025cd266885b5f80014e7512e00a0f2f7ae42db052808558c8bb37415bf2ca4d25bf67d6745afc87175fe20b3f15abf17c3c3fbef47223910b6f491527bcf548facb2e478faee862cacc50eb4b2ecfa54e825ba2e1258e8c3b50caad080979c55bcae447ea552e71507bf548779847ba84ac0cf242b5c6d4ef556a83a5eb4bd40a41f7b6f85f64a0e14b3854b5876c4be4bae8fb9ad440bd8a5e904ad5e8cb7a29da125556d4e9e6cb6c118053d17ed6f454e27f61ffcff1bc646d1f629af1674d1f18fe9786a789d9b33e424f7cc0f10df37647aa2d3ba0e9fc4607d097a68d3f1c6f71ba2b3c012e40f3b19c39ce3b9bb677da97f4a1f16202b4bf84fd9526a0ab8f124025da12a161cb4f1290c40d3de7c38b43e7d5d94b2e5ebe721946aad448d58ac75cd2b8669587ef43e2580628bf553f32d07f57b731804a47a1d4a3eeac50069af0c1456190e5682c13c652720bd477902835523365a227655cb3cadbfaa1f1f303b4dfae5b1f20a0ab171f40a5a34fea6177d62783cdf9f0e230c8a234960b7349b905f23b48951aa9994ed19334ae59e909ff905cbdf084dfea4d0bdf7dd78b151e938e32a986dc59970c33d7834bc1200bd1541c8c05e4f8c4771026254e331da2256084cf6d1d223f6d9efd61901c5de57e8a7cc293b9f7afecd6dbd95c4261273a0f6ef13fe17f95a1d3828f944f18bb5749876f10ed501ae4406744e39aac051576070ce723e998e5c7d9db410ba2eceea885d17571d842988640f281f7b1f034f777e40ad614a072008e0deed8655fefd32f9289d40e75facd3a9704be68625a974a7297efc32a3db10502945a0bfc94c449fc10a538137382521848863b0b83422285c398d6f941f1b5f7364ef7a516568d6424ed940421329fb3f102799cb0d7ff6cc7b42cc83e5661d01ad90cc03eaad4125c6e0631ac7276395870a261a832e24409ab900f0ebe9a12b0f80a914bc5194df9e88e3c4e94dc20681f511b785b450b9e623629c70d97728369d556752c9b9ed00cc90b24392df784d26197b96857934aa31e984c2ec1dd213aec511aac4bd6912f058828a47a6ac807f2edf5308eab81df3c1119dafbf5463df6a78320caddc819f5ed8178cacf76507561de0149b6e670aac10cda9b746878704067edea30918a520ef0122ad43bb42400bd0ee8714669405999d84c3c55bae9cf1eb23cd85edb7596e9ea6732188ea9f30407961189ac0b55c246921d2fa5eeab94e6ba29cd4589c8f1f60f47127ad3b6500418302788ae13c9eefd3700e9bdff469935ea222dccea526eb35d1a440f6a450820c2bf6f83308410361f09c42e85d81521ae6a785a2603a0dab043a3ea56363932808e71ea1055f75ca615150e61739a3021a3c9ecddc0870f4cae6c9e72fc3319a4080c8efc2c6f0cb5fb2064e0168c9b36848091d3002a0470db0f52267b051f348441044fae00092375c44d81dd807c63ca3589d6a4572fcb3ec101fc7795d000b06380cf32b70128fe000e9e014220a597c29dcd2d77e159eed9043bdbb0c1b341eb38f5b17d45e473a58a99c92994490d442b3f573a4855f8d48377a7963b9e58ee64417a1a0dc729544aaa068225080dc8a48f2584df6408e6d4eb12ae4bf30db32afa694ed5480ca515e082a9bc77ec79a9e8b5e3707b8db4c3203b8c8fcfa94c2f5df66a494747b7d00a4011b2168b42f5b380aa4da092edfa0ec8686c1cb7751b0a32bdeb6f451afc9410674a971649ba33a7bd0ed986cb4e8de49a53499c295dda24e9192747928d2ef366c8498195e78e17963b9d5aee6c41bc717a590bee788be77657c371255b3e89aae73cc6565da7a6f00230b2f48c9b7551c8a22efb8cd27c8066633392653deb59dab49376ead6afaefdae31d43ea3341fa0f9d80ced7cc59bb43e267f8f05de7d03e84d8dea4060ba967b23e84e870e333af3a1d3921f064b4f8acc8f8a8a25d765cf95b365208ef462462f3ea86c096d8702fdee4ae770cd3ce903d2891977ab2d28420c5a46a3b8b5b6d74941776792cda9d53c90f79b98ae8c119d5a88b03b777a32088903cbce6d4fbf9447e3015964ecf215bcc8ecc8a6eecd89f04550c2ebdb3bd7995bee6c6ce44e95103a805c75f45e9a10d5971e85f87564241579232c3a673e023dbc3775bd3a38c565c74d51d7ac84da1a59619a3bb2465b790da95e9b41376e743e0d1bed4ada18a4c2ef35ba7720f6716bb7cf547439f0689333b8e1a53123daea566776bb98fae65bbb3e259a9bfc9082d6c31728ddf87b08db10883afaa7f448ea2372dd9c585d0c25136a6426d3dcb3dcf9d4f2264e47c794899d3284000ea4b174091d86c6a1247450fdd8db2fd2d344ed48e3c0c66a951ec2c00cadb38e0049a88dbbd59e5021868e3e8fbab5e9d15e44776792cda9d5f579f49a98ae8c11d9946d0216c2e5f141129ddb9e7d198bc60372a8abc7834d1bd3914bdd9beb793cc638786ce174717840740e2055fddc145a44f5a5472e7c1df938b8bfc3086fe3ef808b2274dc100d0d21aa6d17db44b51b6bb49597b8eeb51174e3465f7f87de8ea48d4126fbadbb6320ee712bb7cf4cf4b0d0d5e40c6e73694c88b6b2d599dc1ed6b6c1b6ae4f89de063fa49cf5f776c09b7e0f591b02d100de0e738348679e7b39298c8c24136a64e6d2ac0cc37127d37ede0e2d236508011c4861e9123a0c8d4349e8a0ea7128cf4457fbb4238dc35aaa55de3a031bb44e8908142c32ee567b3e85183a3a3bead6a6677a11dd9d4936a756d7d9d16b62ba3246f4f890480d49783b3e48b273dbd32fe5d1784016757577b0192d3bb2a97b733d77c7996bb9eed41a9bbd9793103a805cf5f3526811d5971e85f87564e4e00e0f23bc8dc3032ea2d7715334b485a8b65dcc13d58eacd1162a03d8830f3d1c1e00861e3ce9e1f0d0df9f5a8fc740ece3d66e9fa9e861a5abc919dcf0d298116d75ab33bb3d2c6e83ad5d9f12cd4d7e4841ebeff28037fe1ec23604a2015c1ee64691ce44f7f25418194a26d4c84c266f3ab5dcf999e53a5e3f9f8796a13284040ea4b274091d86c6a14474500539947fa2ab8dda91c681add532d1b681195aa56e076add9a76aa3d9b22041d1d1e5563d363bd80e8aef41a93aaebece833251d992234259bf4f584a7e3832332b73bed32f68c87e34e571f079371bf1b873ab7d674704cacc9a2f84f07ff0640657f69eae793d021a9273572a1ebc6c3c13d1b26681bc7065c65bddbc66768ef904dbb58208a3d57dd142a12df9d073d7c1a3c82eefce8e1d1d0dd85487fc6109ce3566b8f49e8617f2b8919daa652cf85b66ad598d61e76b4fee6ad4d87de363ea07cf5f762805b7b77191b00cf002e0c63934763867bf91d4ccc20035a94ee0bb7fc6f2ff7858e253280e40da3a274c91c84c2814473487d389493a1a3f9d98dc22e866859a2a0fc812387fc7843d4f7a813c257b9c2c7d3e48accef3fa38a6ab1dd529db192547706d6559255bfaa13648fcf26abe9d931f2fe3bd32325fe77a68366fe17a0d3cdea464a9c523555c0ea049835a0c40c5677acd327d09db0604c7722796f91a1943a1367c2d52e3fce2cf4e1aed60867dd52d97b8eb71a8f65a9ec959cd130dbeaf1c80d2a1da4303e89c790cc724f953413a4b8ef92ad0d22dc4c68b43779c3ae94bd70bb55cba3b9c6904d3c2402aa34bd21e2128bd393f3da55b2f0cf56fe42583403b2563b8a125b30a15f6984d2b258c7114519f8ebd2dfe628bd49e22cc009eefd551687871c9de771b29c2757e74d49937ab399aee7cec239af0a05d9e8218af28c5ce0a454909d70f6db88878789e64024a5e5d84e486c70d9b566ec290afd428805c58f42941703ce127f1d4417cb284ef77e28140e5c28135d257e04ca07f199aebe6a3a9937d4b4489a037522986f3740c27f78b53234714b91a36eb55daf377a28a53bb58062d20a808d618662108814531502b8ed4db16a5caf5936c53f61aadaa246d01791edce9642621b10a51e65bc8e9342de052c2e3fde88ec1b6d9b93e426db49c52d4038a8ef640942b73c8c6cfd7d105e2f3fb98ea3cc9d59991f657686d260cb9c55d8b296d5e7fc3a44d5ca2d4b5dc5d9955d7edac771be2b16f645ea5f676b3f6ceb5e31007e94077e18f819d6caf800b77cedfda75f7aad1c427a88a2e21c95a3ab7c94178acbc2ffdb3208ff59d79dabf589c3545313211be59542813eedc0ae8a26f0efbba668b2eb820527d9926f62aa445def68b5424dcccc7164c3148c05d253108255bcb91ee529590350ca3c105e342c017203e01d5459caad6a1df265f6d9a526910c39d08e0012498b0a620770916903b39a03dac94f72a6f3daa1a59a1fca0e4d665d8729da92abd7522a69acaba11035683ccc9ff63a8e3628ca9050ec250de045556e007b3f0ca5282b884675e132ca33c2815515849e25575a03c9f234480aaa6ade45f9aee4dcbd78b33929140e9f1c8638cbe932acd4f778f8b8762e394727fc0cd5f303ea02b3feaa81e19118a99caedde88e6fa0aed533ca92c3b0025bde47eff178b38e8f62e509bc25015bc8b4f4da227fc4f88429006bd857fdb7566774f5f9e3ac50f254486f9e475daa9032eddab5deaa3d4e8fa60b78382a7aafe5e34d49b7454fd7b5a6558e061d5d963629fcfccaeedaa96a8d93bdd64bfc01bab6d7f17e15374e0efdaad50c067501e116b43917ab4a03374da872ba649f5401dd697d2c6bdbf1c578dbd6ca42bc715e006f023f8c2fb0ef80ba88abec1808b8f68b15ffb68b09aaf0f3e5e58166d54f65e17d82415483751c1ef6518dd63fe4f1f9debfaa4fe30be7e1eebc10c26d185fdad7e5f7bae7b1d3783d485c55e7c82f806a7e5463f4349a003aa94252738ec4400b9c464df4e21c8eec15ca2f118acee9e9aaff2c4ec034634ba2da793e6106e63664617718e8802c28c43731988bec19bc387f97c85a3c65af58f44e2ad9bb693c11affd46b04fe234f7a3bc714f1c0aa5d8fede62ba9f3dbc802ad2d7df704f9f2e96d2674e6e8affb75c1fd21445f9278a85dfc2965eb04679b049a6314896fbd1c64f375228e0235407a23de769f4ce002be9a0e12514915975613aa8d453c2de3928e023941952c50541d62d3d3ac45c90e4c482e9a0dea30a7be7a0808f50ca081517044f71f5e8107341f25016a6830c5f1576ce02f1dfa027242a16c041bb5a44881900c6d466891ff1c86f8c9cb70c123c1a4b8018f0111fdfeb0ba97188687ed89e030f1b6f80148652bdab7ce01ee936ae2aa4aab900f554ef234330885805fe66c3ed50ef3ffaf7d768906abf2f37580efce9af05e0e5f6ccc3ff330b9fc697f58ecc43ff13045dd8143ce83fb2a0796cfb691e6cfd3540c7e37f05c0b771b8412980fb3b14709026a11f211eeef9d728386cd894260dc0e73fe4612bbb0700fe231e189e8f475fe0210553f1e88b1ce8bed01da2c978f69730fc2e4e83b7e328f743e1609ffd05dc141ec3b31fc1d082713cfb090c0e8ac9b33f87811bd34e38841f530da328cecbbaf3bcb4fc82824c9230580b409ffd2f0168064cd79f51b069bb6e6036bef7a5c7c2063027dffbd223bec526bee4097fef4bdfe52105547c8b871475ff1d1e348f1311e21fc0d022e43fe4c10fbc80bcf7a56f73701921e24083ef010d6a7102c0bf4f8167394a83ec0107f7060575c8e3bd9f076bfb906cfc1c01d2f1f85db2c1cadf5c00fae9e98f69a0c85e07e93a04209f3c67201fd8fe7a1d1f2260fd3dff9f346cba8e3700cac7ff4081857ec48ffafd9f7c8e068ad70fd0c64e509a41cbe7f95f51d07108ed675fa26162a0d727ffc4c2ecfd14807bf48486bb0250fd0705920668bbf633881d7f4f011e0288f8677f4302adfd707d08fd3c86d4d3d7184854d860c010fe9a86dba3d40746f182864a512e50045fff220f09afd7afff948714acd5afff8c0785d6ead7a93d748dc2d0cee34b487b3fa774f27a5798c7908efd31039642a6c3bf334000cc933fa661d0c314af8df5834b3f0526fae9bb103cc8f2f79ffc1082ddc6a900f59f42e0f0cefbe47b10ac60df7df27d081898a7f79f50aa5aa4731eff8c87926d42ef3ff986b08160785f1736108df16bc216e040ff84061799088f9e527021f201a077ff88060a92550ccef0a3e734607ce081de7bf4790e08b3358c7d00e5936ff1d08744004bed9802e5ff672c4ca9dc0171a5471d5f00c8189030f4930cd97ec86fb7ef3fff31038b8f32fe757c800e274f68e07d611a0203fe2a0396f869006e508ffe9183cc00b5f3e2190b96a22c43d062fe1c0d196d831430d51ffd9a01cb6268c5bd78ca80e5a99f417cf91a071703bc7e4ced7deb146d82bcd0dec0381ed3fa318d01b6bcf7ec870c10a4045e50fbe8fab002c6f9ee575818f8ecfbee1f737029dac70f2194f40239a40fd1c64e8b6d45b46d3ca3990dca1f65496dfc6c2758f1cfbf4d03e6fe0a34329e501be40685288716e71719a89c3709fedfefd13069f01055cb0918eaaf69e0ec0178167b420f37f02f527f6fe7298244f557346c753f2552f49f87a1455afe0b34380e69065615b5f836f1fa00eb8747bf80e0ec384110af5e80c0d9ce4f01129ebd4b43872160e4fd6f340c60607dee4734c8010701613b4b72d479ffe99785cd84079e36f8926a24b5709efda1a489c00ff51f922622c7c1e7256da0edfdd917980617bbe8908b16fcd36fd0d0a2bdf611bd0c52ffc2def9d12644d2b978f603512bf1543cfb3ed3e61250067f4dc314eb3c0ff6d072a0b11d4ae705a485a8edadd815005d4f310b7d16014ebbf7bef94d0a28dac429b84b3e7f97867b88c238e1097bef19a5ef51ea67e0d9e15734540a9dbf1e535b0c3aa431dfdd177e4ec15c95c71080b1ffc0c085870db2d31898ada73fa341133fda080ca19f30903124b38fe8b15e233bde6e816ebfce8141c7f3271c14a8021f530b60eb67b9e4a4f4e4af3860e1d1e709c5f02d8264e5f10f58183b3bacb2751aac20f01794086e8310b0be9efc1903033b80ff8987b21f2004e89d175f0740c30034d5fe16001519312fa8e3ca36f47963fb3ddabadf863ea40a5efc9401ca76005b7e4503c549725d6cb69043e61f19d04b7b95fad11ac0faeee739501441b6dd1739b8f2812f00fa390e34450f0304acbf77bf200015d3fb876c0bc89b47b96ecb6b89e214063a92be03c04610b12f7e01400a96e4b701506c93404be8bb4260117a969250e0b6f9531e2e888023e1737ac9c5e0b1edef6918d0c3f7cf0c0cb0bc5f50fbdef610866237ea1f71a059ee639fa6c06878fe826d91ad5304f1f0092d2387682db88ea06e3c2efc28175b2c14872e501cc6a29b8bc79f634033e4a790bc3fa284e322c8852be3d9cf58c8e2040e180bef3ffb6b16728f5268277df6531630922ccde77fcc422707682b7df6573c1ca4f09efd9c854b51c2db05ef3fa76c878b10f4113cf9250d144307ddc77fc101d911ca2f41597f415d3e5da47e028ce1f1af3820e176f288e65f1a400e8c6fb13036ac599ffe84068c0f891daf0abb10f2db7e9503461b7be5a7c26546b9cc0ac319a0e0050b23f243fe0b07283896fe2b07283a91fe9a8304fd8d94bada211fbcbe7ef2bf78283b862eb05f7c1780cc2f01997df13d163243904679c6800193f1dee33fe780ec551a3f80b4de8b1f31b0b948d07ec502ee7d80838f9871843cccffce42a0d4defb917f81e0e3ff63ead266175cec42412c040398e5710a5cfe3fa6847b170306d87b5fff020dd3dcc84bd6c0b3afabdad87eb606d6ce3365bb0d821a3e7b2e68b809b23c0d5607c125396504041b3b3aec57a0b540a9489ceac14ee3dccf9128d0e09f850d442e837fa15b084e517f474145e04de1a39f724095bd0ed958ef7e9b87be40c0c27cf73b3ca0686f7ef7bb3c6c79c30cc07e8f86ddc676165c0037825ffc350d88e39efc680de1fc3e0d1aa1d4fe6c1c40cbfec7346486c09bb99fd350394a3324308b9e534a27486c7fb34911b4f33ea76733cb0e50e8cfdf7340a5c10eb927fe8187050df6e794e20e723f0c8065f588f2ca15fc2b9f0b00d24b1d391f2040d9bcf80603828fe238001bc0f76516b8b0d8c0cdf4d91ff1a0826b84675f6441458eeb675f612145c13b5fe500b3b50fb884dea75d420564f9e81e989c2fb090d92e00b5cc9758c0dc5f01f8a8db8e07517c19d90fd12e000f16cf284b023f170096c39fd340d7606cdb373920c8c07ac44081f7678fbece43e1e01500f44f00d0951f86317886f92e002d3a743dfa06000c1b098fbe058216b6e60a0ac3fb3600be0b505aa857089ee56d012ff23a3cfd4300387b802e45b47f07828fd3bc385c86872c0727f229a5c68b6d51a47129fb3b0cb628f31f4202f4ee9769c08b5dbe3a8480803ff9050d08c5ff3cfa1b1a067071bdf7e8172c4c751105ddacfe9a83dda0dc0f42c1a9e3393d0931ecd07ef498818246422fbef8c286b8fce4090b052eacc7d4c2dafbd101bc69f9071e2aac7422dae06b4260c45fa51b0136f2e31f3120f63a4520639e7f9e85dcfbe903486a1eff1b0d7915ec83b72156535be01e6d02600c8f7e4e03450780b41fb130c2fdf9f1f73950811beb7b34607a81c4a2f8fc9b3c70b108206d4bddb7e324953073fe9e813b00b7e85fa1f4c43e5e0521b2931d78fea36fdc2bd887c10632349fbc4bc3827b24cda018bad27cf4331ae610e53ea8907e49c3411e8827d43eb13f5c643be0faf3fda74f69b0300feaec363ccacfd1b01964823da1fc2e51a5b3f1a33680295f6681615df8f8190b57fa3f00c8e72ca42862f2e94f39c81465eb341018392fbec6c2578fde8003cd638aab51107d1658aa8fa9f51cc579b095843cff44085c9d53a01b1acac82dcf8a6823b82e79fe250618a5f0d5e973ea9a28de6e03c8207ef294812a367b8009d4b9330e427b1b2030fe93bad58e2371c8c563ca408b0fb9883b94ef32294ebc226beef19fd2a011c2de6bc8fff6fc1f7950c119e4f93fd1a0094ad76100ed3a3fa101535fe0a27cfe731a308760becbc2080fc58f5fd0a00730b0865a47098a13d012fd371a2a5da328f72147f5f39f319070381965f5c33afc3ddafc4d026140d2932fd28090547d890679086ad35f7240a2c97f4a39eecb87ad1c590c0cb0a77d9c8288c3eb0bc93debd36fd3d0e045d353caa24b52b409f0937adb8ffcf03a0b20e5f443a6894c8d7e95852d0401867df2651a36007c8cef7d83a1371639c67fc4c02528cd0330f4f9970024e48da42cd6e4b00a836c27b97e7afe1d1a3e8496d3534a2ba57eb4811e203da1745c8ad63178e9ffb734d406b05d9e7e9186d9a608bac079fc8734d8458ab22c1047863f6708145c93fc070f25d4ebcfbf2f04164542fd9bb885e851debf034da4eff2fe55d0007e9af72f347482c090f9efd050591c42dc7b4c79e3d200ba0cfe1c03b2131e72ff9c8684ae969fd21d96ee6171f0dfd33f03c01350e93fa51667e6e7280c03f058f5d734e04368677f429dfeb2b58f53a22621a4b29f51132edc09bfc643d97e99c98797eaaf00c039da27217c84fe2b10fc0ab2437e4c835e148c471bb103f1e9cfe906b061ffe8073c14a4c1defb8bffa001a38d0d79b41eff2d0026ba567df60f103078fa7ef68f34681aa00c0e5f7ef1030012c7885f1c52c16ef3e209d0a60cef857a780c408b2f2d5e3c02c045d2f6e28734709e07d10574114eaf1a384ef6113d193bd8bc7ef1773414a8bcbec0c224417461afe1000acaff91057b41f8fb339a3170bcd473cac6c4a9f50491f2ef3ffd210f0abb03dea7032d4b50d0c87affd99ff0907900bed9a08713c597dbd07f00dd2fd3621faf033f1439751eff9286052f7cbec9c2d87e98ecfc151244c03efe136903c1c5e5d3aff0ad40b8ef737002843fe0002567cfc7df10438b3aa0ae31b2240c244ed2e794173cfb1f0770493da1ce028a30a6a77fc900f336f77bf4a3f602c6a6b21d10904cd728910588fe25072cba00ff2607290e25fd1b1a167ccff0331a260d1ea07c97c6870b48ddfd050d7c0d1e20697d72e927d298f0e77fc4818b83c19f53367076bd5fc5e240b6677f0b01c3cae8d92f01d84de0ef63f062f01700b448069ffd4f00384f033fba0891e831c1af646dc0307f6a5bc881a8d8f71f3da3411e205c650174b97d9506bd0a0061a07c0ed8c5268b1ba1dc7d90bbe3f15fd210e21dfdf14f19484908c2971850d8a5f6f8af68b0c37e958902a7fe1d0005e39ca8330db809bdf7ecbb2c8c509a9fff9a0685226abef9772c0c4ef7e2a7c8172abd3f019b4842701efd29d8a22adcc083bf00c1f1ff887a78976e0206c6d2438de1c3006586e629eca37f97018a32d8fc7ffe9801840ca047ff420381efc218b25084f3f30954c1131018d401348197b178fb7c4c195f87688352d0edfbde373ecf00026f44bef1751a4611f8f8e42b34b82a6ce0df6870c1d5e55fd050b06bf05b3490f8c04e2d36b1dbfe2f6930c15b636acb3e80ef751e51981efa692070465257114d021855f4db53452b41ecdb33b09922f28df22588eee1281df2b09052d156f8e4270028f8c0e7c98f01485033531e944b3f84028d9fd33038371b1c3df6fee32fd3b0394ab7f8e02350b994a85e069b0b280af5f13ff150551d2280da6f01c0db38069dcb2fbe03008be2705f509ee8cb14c161f0d4a5eedb71bc0723071e7f9e03836f71bec0c1e5b1bd85c2ea1fd7fa363bacf6283a94a9e59238891fa2d4cefdf402d5754f4a80fb14c065ea27094aa19495153c09ce555f6a92a38e9a54ae4033bacb8a76adb269ee89e5e0626913a8609ae58c16c9d5c8033f96d410955278ba2cd187a6a924c3b0d160d53d75e79127e1d144c6a33aa97041539befb62aa392fa9be0902dc7c91551626bf9fa76bb3ddf0778d5e4bba5bb20f2eb2ea7c9d5398ed6a953e345882d77720e941ac1b11a9ba0d0948c1c56696231e28a2c5c1028b91a6571186c34aa7a50c85b1c559e65612e6bdc2cc8d1de28cf72991039f7d39ce1a2477369344fae4ace6cd03aaebc7c985d647642cf698a84d58908eb4c81c51e5afb48713b9c6410f835e37f647f6006ac4e0bdd82e23f75d242374d2afd65717d52f981e7b52e69dbf169a1dbd6aab4d010c19771bab15729f21f2cf1ffdac50f6ca73b4e4940da95fa294e50749f1121410affd9dc72179ee59e41f50240f160e82b459d2fcf6cd342635efb8e593e7810144e2198a0d85877e601dc6ff10e330fe385e54ea7963b2b4b1b9ceb8d5497f98a8295343e759e66193c57268e1a83ba650351c6265bca66644932295c63b5188d07ff4416ce94f6d16bb1021d4be4e675773c5faf5875013288ade2691f93070470c7192530e84e2ed904d4cf62be680376964fa3912c4d4741889c1aaeeb187063ed2194d0e408865d0cc7c029e1ccb01d51052987c54c6bb8ed762b59da9204f432f80eea9d6aa92f7a5533a5d0d570f4e075c7a3a7daea3e8650ef64c732f5ee6ccfce661a2310abf7a3f0a0877ae731e84eae917aa7f9a20dd8593e8d46a2adde019153c3751d839e7aa7a10751efe0623806ce63a877b0a341d43b8cd944bd4b2a6bc8e03ba877aaa5bee855cd944257c3d183d71d8f9e6aabfb1842bd931dcbd4fbe66ce1792bf508c4eafd283ce8a1de790cba936ba4de69be680376964fa39168ab7740e4d4705dc7a0a7de69e841d43bb8188e81f318ea1dec6810f50e633651efe2a24112f00eca9d6ca82f77652ba5c05560f4b835c7a2a7d4aa1e86d0eb44b752b5be1acfc77325f962ad7e84f1f7d0e91c02cd4935d2e8144b74e1bacaa4c928b4b5392f674ab08ef4eba9720a78104d0e89ff11501e438f43fd0ca2c641c42a2d5e03284a80c92aa9dd564134d575187c11d66e3244214fafb9457c7dba9e3b0b56c181f37e236b31d4bd98722704d592507f97972ceed472c713cb9de05abdd21bb3f890e398af288e1051e3537497439601e5aed4d85aa0709790dea8bf696ba5ba814437d620f759b303b8f26329c785f6d8dbbffaf2faacbabca6eea9bd7a5db40507859846a08c8e654d3497adac12e02d2fdb2a48815ec5b8726d19bfc49a323856a0bc9d27622df0df559c85e3dc61432908392b63977ac74ed462bd415bff10e64ddd64fc64d1aba788b90badfa360cada8a2adcae2c3f1d6ceaf1344e0606fbb4bf0fbbbd90d153f424debcc719a0acacb5db0d9a0a86459f3230ac320c982ecfc7217e4c82ef36345f165ea27e7381ea0f8572d0f5cfde762fe0ad92f8370a815e0d21a1a1a5c417bcdcf62800e2cefed40496077ca57b19ed28b6e215a4106c4d0337b4386fd8c9d8933a9e3065edf4eb78bad2fbf1a5717f8d56b293f3999e00055ab1e02d266d16c411b23e6e3e63640cd7e070ac030bc03348cc9e871ddae3b613a17ef479d09a2596ff92370998b22d99834198c38d9a1c900abaee388a1c3639fe5a36ed17facdce9d2a81d3cd2632cfb6361d7e2e0f1c2018ed687d00530a0ca3c2e765dc7c0805d0a7d0443f621701728d69da456bf5ecb5e068d3aa0430f8181a281833cccc76dba8d02b7f0032c52dd5bef6e82d625c04477c274424d8e3a1344b3def247da24c6a2483636d8e2a1e014a32603acba8e23ee60d048978fba45ffb19a1a34e21097e32efb63613fae41a30c80395a1f031b342f41211fd7a0310b4d1ab28f6e060d13aeb4ddaec6b39949cb5e068d3a84490f8181a281c39accc76dba8d027127032c52dd388f6e82d625a44a77c27482ab8e3a1344b3def247da24c6a2483636d8e2a1702ca32603acba8e23ee60d048978fba45ffb19a1a34e2a0aee32efb63613fae41a30cf93a5a1f031b342f41211fd7a0310bc61bb28f6e060d1da0b7ddcec7733d7fbf4ea89e018a2eba860fdfd36bc072ca70cca61b281f7435c0ead48c73ea26601d620835a74a279af0889340b4ea2b76a419622a81645b834d1d883f3469d17fa1751b6d07f345b664940d7a8fd3d4761146311e759d1f09f9710d17558ce3b1ba18d86cb975ed7b5ca3c528f274c02ef44d16b335ad52355ca4dfebabed7abd511ca3157a57116a4926ce188b538794bf5311902aa80efa0e8c8a5401c3f1914ca20e364092415a2517023ba483e3148171605b22e68d8cbac20c6981c958ca261157e43f5cf9e94d12674199ad08857e319de76fdb41b441574bd739d7cec155fc1ffdbb53fc5c808329a9f8285a9c3a8a0867ac62e7a664062967e44ef938c3722016f1ef0600b0bbc66793d5f4ec1d18ba1d6e1065281fc9936a990d7ac2cd633503da49bcbaf5470c721b5ca14d2105edace39fce7194df799515e91c07743a646b2c6d417441e74f72a782c8deaa11ce734967c822d361ad71113b72a2f9d6a51ac28d0aaa6eb661ece7447cab0016d35701e37f53d075beaf3a8673e43a6d142c1ebc340c96c8bf05cf289b500c576454acee089741467e598e0949f38a95594b215e7ef690e5c1f6bace0f57ffcc2f2b3662b80404495167fc621b54b2a6cefbc534a474334f45257b55806bcb7e160b9f0b8cc5056404abb00a4654747e5525b59b38a29eed874176f043712c3db1586690f428d18139a2ea00669cbb19109c2a6c19c731b7b9f91ca07119f39cde5053554b4f72f5ce2ade5c37ad42ff1a1b3d374c54f53b2444ab688a21056b46d3d45caf544eb3f5780e856519c5f93daee3939b2a195a9d5bb98d0aafc0a826c59af08308a5acf293d10f63a07e0da23088508bd45f657178c8259464eb340e430d82fc431eeba3e94955d5a2969ff2cf9696874116ac42ba7d9387921980601aab2e46100a4b3a34b0896270b89cc026556d76ac08c689bf0ef2eba54b8c82b756986d617e424fda113331b2a3a37ef49304d5a6901410abfb9b7aac8e366aea48a0eea102bf69995a3306e711c7b3d2d625aba0ce65df80f69bba10cea9979d8b7e07dae5c13e882eda3267ebc32a58db2bf47680d27ba713cbb54ee753ebf4ece4bc5323885254ac2ce79cff496302d05590b78cd46cc04e80f36a024c2660b98dd7878c7a09a8d668bcdea1f553537573fd00387d81bb11d1847dcdd5eef3b551061986cd998e3ed241c7b9d6c21d03360a4009875168e4f28def67891ff16359ba23971a4696a7285fef44684adae8430a99749a7857c737c61356db81781720df5355db02ff264c17337161d410d6bc9623db3c0cd0252f338aed4ae39c409dd96cb73dea54a738d959073ea63746e33561a2c0328207059cc2f183319e07c921dbf148c86d4d0d5dee6dd4eadfc6e97ed994aef8d4bd422e2bad027f6276465d12a9ed5193d25a454b08bee780c4163f1bedac16d7874cd56b42375f2dd9f6c14101d8a55bcb44b0b54cb4b616e46748b68be0ef1d360c8d392eb6ed9e736bd217284eafc4e12588439c1868320818ab076d5d229a7b56c1d953a1ee2b3fc9749f784c62d5271cda2bcdf75116f523293e51575ab2afbfefbf12aa972254e565eab16bbf9cf342827378dc7349e1687ea25d6276993f83f40eb12551a8c1d037c77e9ac690955f3a598b13177ffa1223aaef9389641e25228f40d47aca7394ef506aa310ed5194db7e9efbeb1dda54ce6f12a4bce06e21f238a12ad090378ab63b6f939954e79336e5c5707dde0718597567bbeeadf437ca1e5e001aa6ac087ecf3e7336e8821421fa839cc0e24027230f9fd6c04928afac941c37ef00e238ee4c83df83f426e7b703b0da517039af9c6402aa4a29118aba9ac9e6f8212697cb4ac9e3413a93f35824d23a128da7584660212320afd3266fce3929e3b69affe67d42fcaf7d25ca1918a43bf90cb80bc114541fe404ee83cd26445a023775ee001b636322fdbef8e4507d9253527a223559afa0e553f7c4871835258a65a3b3efe0057a3a3e1b4f7a4b889edaad2452ab4b95ead55a02e582d3ea4fbdb56aaabd7a37d7ea959945900bb472e104ca8ed3a0b09bf23819e1f273c22ffd4801445f4e4ce5b5977ceb4710604b48e9c1f0303944788d5c070d3559e5f805f3457cec4d93d1ac551d8b268efadc9b3293e9ab7a16cc20f9d57491f799c4129b6012898fbd69329ac4aa63d124529f7b5366328955cf824924bf4a4e8c4dd150a65e27f08c497de2244ee875fce14c5c66558ccf2e0fcf37db200c97afbb8e3b73fdf3e20fbb76c59cba4a1c65ac19c6d084543710d83b49f1d9a2007404a4f2059c8e79ff4013da4c7758b9a354fd4260c2ee61ef84cc51a5e77232744c291c52868ea8b1c01135ee1032309d58eea9eb59a7e345f10fd72070806fdadd7d85fd913da6944766242602297d25281f384181f5331f132277304248ec2c78bbc99bc176d0c6b28ea9f07a8ff5385676fcc7f16f5578cb48b3eb1ba2079edc7d10057b3f6c2222d84714002ce447ad3db36d608e44ed93c84cb603ad7622a03e2b5fbc93180cc5a4f9ffbf761e57a050dc0f49b09a70b739862c8a76a157a2f4511025ee8523afdbd80752f2a74a827bb989ec5e8e7f2025db26610ad5271e2a55b9207783f2f8a3d37987e3922607c8839336251a072dcfa0f7a2a57edfc4018d8afc8358459729e06f4a858ef2c914f69357bfd3465459f6a47c25f5da6bd4613e09a2a87e63aa6b6e3431bf84a83161b0cdcd54bb06db17206d300b15d0c93ea480da022683a5070c3e02d0ec820af7d1ebe9961f037cd875b29aa9c08300ad46b7fc28e0a33811c28701ca0908915f2726e10f7e82e76c10d24f6ffcdcb7afecf880eb76ac0a95e3a701ca3e43aba92cf123e04c770305b5d43a2dcdfd5019895ebd12fe4f35471fa0eb6deaef51362a10fa6921251729ca327be5a77696a74182b21be70e190ddef4e18c9c77f218fc347692ab91f3ce3bffe9d81d948327708ab622c1b97c825f11b7fa9f7b00ea9d002f7117c995e0cd0741c988fe658f72f2d5603341727aea89aab8775180a128bfe78e8b0dd2625f6d7827236f7ac7c2b297f8298af29143fd3575ee408d1ce8c7398b897c5ab06429b2272f99225bf084774101e187bc587a70dc96e09535af7196187274ea65231deda603ce8b4cfb66368a6dbf389f15b84ea89fab3573028a57d36629596ea3d371bd1c4741b40da22047a3143d446986789a987ec16e09fe067bff82d4ad847549ae5276c9b5f6349f3a43b9a8f8a72a0bff6ce52f0483810a09293192f56a4418a94cfe4a8c64c27811462a95ae122399b1558491cc66a74658a64e03b68bec010a511e47f645185f62fd4de643c153ea3933cb73e796e74d98ec21e077ace939248c2a966b6a6abff9805288195fd3a6a689ac61c89d858803aab0dea16aa4f63a0c92655b88ec8a2f8958d78e2ba924f42f015a4b48ab8028fe8f5c5ee3f8618ed2c8cfd179a74680e175c417dc3561a3372cea6f2aff54fd5b7528c6afef83b0b0d64b1b8175986721ce3842ec416daa07774a440363ab0078764a58b2ec641d911598ea328fdc4dd56b351914407560a9206a7a2e527fb50aa28b9adefa6fb269a9ff9b929eb5ab630ad4e8e49a95ffb40f114ea7843637f5b6de24baa9206ae567913fe6a9bf7e7053a55c62ace67a3266e45cd0af84292cdc05106c3232e4703b23a34098bd51d59adf579916c08ea8d8fd2408ea423af2cd4e82a04e5c2fdfdb2408aa44b1f22ca055fb9d1f6d42649640aa86b05d5c35927bde003dbec539bece391b895811a5055dea3aab90b6511e27e53fca38116b9bc6fb7bac45bc3839b1f298fdd939393911f7c69aed45473c5ef6270742c99d49706cab2636bae8a7e8dc5aad3c7e29693bb5c5d9cc68d5559f0466add6e554462930f817d293467d6df2eb7591aae2aba7997a6db3402e5af0b3c22a6a926a3a631f4d37584299353104c72dcabc9802a242ee5084f63e17665d528d403e092250aaca35387ac5e40a71728a9762c91c1a4fe58e6ab23c402015eea36928c6f603c40cadb6ee76da3ab5075c79a449409a03f235f7725796eef0c97ec177701013c476119d4453b87fb1e5a6ab84a190ad2c3024789cc2514e20de95991a8fb1d939d323ed76ce74d0ed4e804e5a6659bebf08e00419b62105a2df39af710ce79fb8291c667c5ab4ccbaad74cff156e3b16c0f958d4194ff56b0afea6da5d3b9359f5a8b33d93eaac82da843b3f624000db8bdaea5792e27a1fca94cbf6367f8ceb67245557fe01c3cd243cc7996a7f10344bbf804dde92c0d79b259b5080308bcb3f17cc2ddcbcb5538e1067a7dba9e3b0b47627ad520c0464961c74760eac1e982482464664cf779b94d8572941b84be46024674e488168adec214680c555a36c4132aa75966a1a30832cecb5f723fcd2b67d1427c3229c1aa49cee3a47cb3504f7773962ab75ae6a3842a9118153de05cb9820ea86f12fc0ac1a59b96df65792aeca973c7f29ce40ace57417c061305f0e7d126de36b91a4d93abf38728cd83b51f56b978f33839c7edebb3239963d9a3670bffb36e7f5327a84dae08efdf8470feb96d342ed01e7403595ad0adb38b4d51d6e624208ec36dd6305d32306efd66ea592d66cc12bd226dbfea7557e95e331a555a16bf315d304fa01d13dc901ad06a532e7caa5fc0a9b1d09525994a912d784aa38cbbf6d64130c442612410acc2ab568644e58ddb4f90d2936b5ce06e2dc91b73a8b919b971ee48722ac03174e54bf33c963c53cf0f6904bd52c7bf53d7691f1ca2487b5199a85e905c3d663224b3eabc7ccf4975851ffc53c125f4e7c4cf7737546ca64303f076aee2fda7e8e527149d505ac5f6c6cf76f1765b9c84b423154c9b560638146751a12a36c2b59f2cb109256142b90189f0d5971dbcd8f1978d90748e4ea7dcfde1b97993928828c6d0f7b529c2263bfd2767e60a054371c6d1e32570f553c2e27f434110200dd4d50f8f808a79001150573f3c022ac40144405dfdf008c88806b83d71f593fbab8cb6bf480d2280b95fff5c66eb5757762853fb16fb9816c651fd177067485c0e131555daec509a983feda7815fdde5a2cd5b797a409fd1f448b86796eb4d2cb738dfd76b52b75b3b8836c1dacfe314573448ea79a23eddc8b3e502e7550d3a79ab554233ce4b479a700e9d4ad823f92d28d9808fa2388f3c270928da00b7f7f533ba6a80e51434737c5ed676c8af432a52b5eafe3e0e09234a629cd059782882d9620f650d91e647148641920519902ef9fc324e37752d8a74ef87cc48f94131976aedab452cc18a43138ec8a32f068953d48418d2c867e23cf19036681da784fa05de8b8032f907c4fa5347d4d835da200ffc908de968d65aed1ea8d69af9e59778d592eb81f21335773f637cf7f3baebcc56feb841878506a2ee84bc1813f55b4f0c83b3bcc5c25125d5cd2173dc0ffdf402356bed869c707ccc858a11818b925e85f873496829d61599fc7b0f70ce85a1d295d6912632724eace6afdf17e4c404a000bbad648485d78834d9a43964fb300eb75143983ea0fb40150e10c7e1ebee42bc400877243e3e062f8a260b2429a75cdfb53dc95b8fc40c61fdc5fccdda81c56a92fa5185ba48fb0241c3726075ce64e16fb7dc13456deda3eebb1ab2b01f624af989225b957bf355e2479baa7ed2d21dd56f72fc0bf6b50594ad3f8d2fa153a7e8d5417d852c71c0c386587d27d07a0871b250667b2dbe12f943299fe52cb9a21d94b376afad2294208f65ee5f34b6764a47f451317f009ce882853f38b63b1e8704ff4d3d5b033a9296b4247b9ab71da92ba41540a59c685445cbfd0bea9969d903659311f6cb0550efac6801d438ab7450db927ec4544c6d618a8d3813787652c787dae5b1bed8d4805d7ac64e35e6207b1221c4a92269c1d6db58f085478a55c4cb72159440197a404b2db993b6904a20a5f91690ea530ba3bc7779a555b27bfeda34f72fda1a24a5090574498064b91f6dfc94bb8c6ea4181733c1cf79d787344551fe89829877e4bdc9fa0030b7999c308e86027ae9e26f37ad2a1bd7771fe431803eec52aacb63acc66661d19d52ab8bfe74ff0d8022763512c62bb392e7820ef945cd744bac6f880050291064a8d403dd5bbb98015cc44aa79775a1fae9750d6f0660b870ed2d3a676b25c32d8d77167153c5526fd522b8d988f14af71f09398ab5dfd23387c9e123a96b479a8ab755cb2ebc153495f3766ab9d3b1753613b3568056c55a113572d6b6e40838cb8798d71e461567ab965d382b682ae5ace7ce2d77ec5893b198b502bc2ad68ac891b296a447c05b2efabe76beaa584bd45d37e42cdc52c1d8336b3a2dfe23e42b8c55c556012d0aae36c4b04cc57627e5676c6d7d1a92cab605ece102206e3f27e1b8bd9d8c396260cba3dd3af4b3ec8db708867ce644a7cebc7702d982da5d18498d3136ed53ccf8a4674f42e932a759fb40c427afd19f5985eb61c8d91b00affe5960dc9d27ca291d6220fac78a1eb3ab71f830462439a2e8e1e25452799204d79ddc50155963eeb4d545949f5b85bb8b121ad2acf5d88d4cbf0f95de19d4dc1debd3a9b59bc9db493738a0292760e4e5b75060bb899ad78a9ac8953988d0f541a82d7e63b1ffa48720f6225d5b24271a22297cd8ca1e3a0805e26c16ce14b69700d47d1548cfb39b8efe303dc71950a97ba6d3511f54448a81fae0db69ab8faa29a73ec8d0172d61d69633427b8c37ebf5996bdec970daa3a7ec99290f5d29ec45b9ae3ceae80ee19b76ee544d288fd5763e169c8400dc7d95475ff7848ef63075551890a9edb6d0511f543c9a81fae0db69ab8faa29a73ec8c0372d71d61735427f6cb7abf14c7801d353e8fa20d4163f3305a22b88bd48d716491d0d224a6ac13a9008fdb1f6c6ce586d7c74f0bb6963d1f5c1e9280f437f9c3e8dbabe391dcd4106a21a280eae99b6de285bf26a838877d512625df9a294c67c3c1f1bf7319ccee82773661a4353fafad0ad2b87a4bab053b48f1f22da454c644b229f2479ed93a4aa2add2c21537dd18f5d6caf79d2c2bd3d255379d4619e64a049fd5f070ebfaca9ae66aa2177c1f50185747258d8f4c41c0079a77a03bcd0dbfafb20bc5e7e721d47993bb3323fcaec0ca5c196894b2cffbcace3169dea73159f8b6363cbe88aecca2e3fede338df155cb948fd6b9c34bf098b6300fc280ffc30f0331c145ae5b77effe90f5f83ae75eb59a767d375a8e9ac27645abe56c4ff052f89bbb0c9736036b5f7f23236b5331444c90108a4968457b571f5b504164242867a8be208ea8b72fa6a7bca441670b28a49d40a15aa40e93fed877e78409946f050093f629a63a54e2ce339bb8ad962ab5e1bd4c55cd7c01d54f4a9e600ff84c3c071543810f156fe94a170bbccf214e5eb1da97ea600dd5a9419b05e8000ffaa19c12543c4866528a8a6463bd51c2d1c0022ed4923624cdae33648ebf6950582bf5eece22c273fdeb0eb4677fae88d45d2b079a5500ada2a45fe03fb324e37a206c4fe7ba47038b243822f4da868f908a27a910f4529a9309566039546440cdc661211a54164da96793640b4f5f3c9ea0dca38b91ad5ff8505a7c445046d79133a680bffdd066df10bbcdd7c6e04fa7ac273ac6d04af8af63bbbe65c2932c94223506a2f2e68638535b8eb301a9b5f112c3252f2d8d7328aa6dcac4943ed0a2381a00f321e843d3102b548ae46f57fc1a6b2dc3ed5ad8b55fe326e527490f70dca0c5b60be9f26fc8432d5c57b2f241a40d37296a9e8564537c49ccafb20275f75e12ed21b4d36acf2c724f4d76817879bf6c18fb26f090ea3d704121af7593ffaa0f683d116bfdd992cbae940147523a6271ddc8197efd4706d9baf7641b61fb53e80b2957148dee1d61cfd6e439890897ebbc9a1912d9fb6b28ee23da086b877c5c5c8683734bd31f0e559b8c795b1cf3ebd151c0fb917389caf031b68853cbdd48458c4ce744e6ed3f4eb9ea95326000fc8276e7e18125c69ff45d79362be95e5a3248f1b7fff9e3d112553a9bfc9baa51504d47bad1fa444c06f2a05af283f5465073f4a25716111f883f61789181050b7208f7a34f1c0afa4f4a327a5740db6d6291b84394a97abf090161348ff29c6242ecc466270b10cf3bf681471b3687cb29a6e26a0da202cd25b939b9752370e98e101d481527c06d4861f76d5f3e1283d3875f6192f45c5afc45c935e18bb30f8921b26818af89e062320ee762babd5c5776b23fcff5c81bb9f38bb411bde6d540516a60607296c8709d14a3001f0b16058285c7ce457e06c86eef989a225480edc059360bb79de246cc17b66754047da14118d969c29ae6c515d008af8069ec79448a9739d0de39eaae684c228b8e56791ba53b27e563b47dd8621baa2677b1d0fdae996aecc26ed8ddd655431e9c2d7ba2c06555d1f350655611f350645651f1881bd4759e65f20e6caa656bbaedbb8d031745bdb99f43110d3a94efdc66600d9065768c35692aaab694c1cb62614718582fd131e70f027022168aaa1dfec3c4ee81cbf4446348de6652338e79d5d158d3caf73e8369972f4f1171cb991e6ced34082d9cb634175f649785023f141b0adb8c99f0e4fac23e084cfa79ae871796253437226b62367e4a13a0ef320d13217fa78c4785271c4cc3d9724b1fe8922ad64095df39d4fe5545d5a7a6d2264af4d6b204454ef8795ed3569f3314e88fcdc6d6297b2163d0ad1bed0587e9efbeb1dda5473478294f59c5b883c4eee53fc2663b70a2dc50468118a6bb03eef038cace3c116b7d21d4eb12bcc0b6c9f09520a571fe404167a46461e5621e01c944930940c37ef006238ee4ccdee413a93b3db8192372b989cc7898caa52488482aee6b1397e88c7758ef65be84bce629140ebc8339e611981858880acaee2235c2610c156b3dfbc4f88fd55c4a2720206e94d3e0165092728d7f842630aca24e15ae236656b8a73ae1b515583ea939c92d2e8d4e4bc82964fdd1391527ee9b56a74f61cbc3c4f3dcf5d8c7b8b889ed2ad2452af4f95ead55a03e58ad3eb50bdb56aeabd7a33d7eb969949900fb47e11a6b3cfe3645480f309edeb2ffd4801c45f4e8c28bf7efbad1f41803121a507c3c3e4e04f3a7a68a8c92ac72f982fe2636f9a8c66adea585e18416bee34283399beaa67c10c925f4d57799f49ac4e8bf024121f7bd364348955c7a249a43ef7a6cc6412ab9e0593487e959c18ab971b377ad5ced4874ee2c85dc734cda0b3b30a9f5dc6b7d4192d1c77e6fae754a192535789a38ca0c718483f7e0384efda296e5b14808e9854e7fbd3057fe63f5d9c401d563e0f55bf1098b07bd0e3f0ea4eede55ecb36d37915a8d6b4da71442233120d8164be128e977d672fd1c68dabdfa92e4cf90b48426d547f3420c7be261510030e05a650bd07492a58cafb2577239dce3bec5e9a1c20f7316d4a34f63dae48ab6207d4ef9bd82f4bfebfc33585b256c9e6517859a78792a38bcc6d0520a1d2e1c8e8125e01eaa1e4e82293e60048a83c1b32ba84178b7a2839bac86c1c0012f219bf942cd175a516469e2ab2b85589832c8040961ec40b7113e779a10dca27643b142655db14212eca80fa8d4a67407fa93316dc406f4f012480b04af16ac2036037d44db71e4595986a53248107c06ea89b733d8a2a01d5a648020f80dd5037f17a1495b2a94d90189c87baa1eef55b72ec28dea0b2f856533a8b7a952aaa9955b44de338bf01ca7208aa3ad5eb6383b6fe21cc997e589aaa656e3b377a702e0de7b5be380ed4a341273331e898069d9d89412734e89927069dd2a0ae3b15c3ce18d8f1420c3b676067ae1876c1c02e2662d83386b7ce5c0ceb3aec4438126076d6a69269739979f3e69289739999f3ce2453e7327337f62493e732b3379e4866cf65a66f3c934c9fcbccdff84c327f2e3381135732812e338393b164063d875d1fe21954d68a252ae98833488819a89f61b8b67a09147e8a720bfad12e1419f382176c4defbdc00d8f465d5e515e97797205152fe3fad02f3adba3e9f19af00767393c380f7444a8a0ba0d3c7582a7c332fc944b910604a5294e50d4f3421ae885daf7db20d23a93cd93efbfc6b6c5d1bca29a985c929076f7c795c087ae67d9c6057204d5ac3a6428ad0a91958f3df1a349e0d78cff91fd011cd4284bfc882939c60266681d172cbeaef8f0ffd1767dbf4dc340f8dd7f85d95eb6aa753c677533103f269e90868410f0ee9eaf8b45ea44b6034c88ff1da5296a93a669b6b0c72abdefae5f75677fb175b7bb2b38df4bd0e70cb51541539bd4c792ed2ad66bf26f18e389d2dc0aa34e906d378c832439d05cb34623aa574f98c439cc71470def35a86fb48f8c669fe87a4cde9ba1841c88a227a076fddec1c65d7a73144c5ba28e036babda9d561f03dd2ee727aedc3f83c7cd02d2f4dbd919e3511b9cae51184dacf6bf7dece9918103fd6f1c4e2c9dff2b550889262f08799f170f9b358a0a7eb598150e7dc5f62795291b8ca35f10529b67f9bd413fa51f2c307a9b65f509a2a7d5b7dd0fd48cdc1940eb51d3d26a7434a4486f0b0529d2ed9329fd86ce9bdc52c138236412bddbb66303fcddd1bf6e40973aefe065e9b28bc807150c446bd4464515a97e7625591c0b09b1e40cf3f0f6dce0cafcbaa4d55e40858b335c2f516bd49b6d447828f0ec72da8395dccc97b0d0c87ee6abd50ea5fad46fb8947122406a16c29e5d7025d64efff4b120f84816046728a5d4f2468c664170c6e7095e27b07c1c0b8233a592550c8a1f6581449373eaf3d2017e544561ecfdd7cf77af054bae178830170cd2d27e67e03d5bab824ea2bf010000ffff24064ec77cae0300", + "7529f80635eb2edfa4b5242b887b1dad": "1f8b08000000000000ffbcfd0b9823597d188a9fdf79d4a992aa24954a8f7e77496a49dd3d33ddad56abd5f3ae9d997dccccceceb20bbb18d841cb3ed859ef2e332cf18647e23298c4606cc3b7490c71bc163126c609ff6f938d2190d89693d809c4e48fbd095cb83cda09d713d621714c6ce22f467dbf734e55a9f4e89e81efde3bd3924e9d3aefc7effcdee7b9cb77dc810021046fb91725e52f451aa268c2bfcbf7af6f22043a42a8233e9fcffef8f2234f3f7c0d21780221f849f1b9d17eed67dffcf0b3d710c2ff1521a4079fcc9b9f7afbe308e1ff89e0a1df139fe78f1e7eef138f3dfc28824e0f21b42d3ed94f7ff14f9e78e2b1871174fe174268497cc82f92a79f78fa6d7f15c1c37308f1bbc5e7a3a8d679ea2d8f3c8ce089271022bf2a3edfb8ebd8079e7ef8af5e43f0540621e48a0fecc2fb9f79f8e9c7103cb58110febef87ceab79f6d5d7bcbb36f43f0968d301d220821027bf041c41082bbe17184d09dc1ef9fa169f493f151f011fa890ceabd3234341e42df46f091bdbf8b1e878f20910f626f5df94d82cf1c82e097c85473888af1430f200f315440805cb4840ea1d3e46fb965f71f958e963e52ce566865b5f213950f543e52f9ff57feb40635ad96aa6dd41eab7da86ed45375a75e5cf9ad3fdabb91be71f1c663379ebaf1f61bbf74e313373e73e37337fee3b7d1def7f7f682762ca1d558b91f2c672bb8b232542e9b502eba0137f2372edf78e2c65b6ebcffc6dfbff1e28dde8d2f06e5c2de7fdedbddfb3ff7feed5fbeed9b37be79e51b7ff08d777d837e3dffb5fff1b55ff8da87bef6deafddfbb5b5afba5f9dff6ae12b7ff695dffecadff9cae25766bf52fc4aee4b4fcf1c99393c539f599a29cfb8339999d48c3e83a7ff72ea0f8251f97fe31f20d8db43e958f918a1f6514043f375b3b8ce5e177e09bae8ef23545d83fad85f457eb7b6b6dba740fd35370bc5052836b76a8374adad5aa5accd4359e329507ff99c4c36f697cf0dd254ca83325a9578867caed0dcdc3e099b837a5b5bb53afc02e18c999cdb06b50cdd310c5be706246cae6984505d6349ae995a76de4c5af89ca669996462cad24ccdb152592dc9ac6222616b9a8631e68c59869e37f3e5546a2aa925196398c8585d779249c730329c2728a5e738d7b2c9e44c8aa7783665393cada5a693c92ce71ac6d7b8c5455e4e80624c09a6186362302d9dd04c4639211400eb9ccfd8a99944d2e17a9202868ae53856056392d0b89d484c89b2b9a56926633a613a255c3625936009c60c4a354cb06ab3c9f56cc29eb7cc9cae9b1407459509d004e776323993e1295decbabd2eec42179d45a8daaeb7eb72fc2a658dd779385975be0695b226268a1779514e597373bb5d6c87a35f6c2f407373bbb55583df870f7f18b8ee58cc20f0b38e65393f0bc46096a3f37ddf1c83c71e039ad22d871078e3c744433ff64620c4b1f4143de09d5897dede2ef4a0831611aa56c216abd61e87b07d41dbbabea8d5176544a1def0a30a0948b5d7c508ba68162da237220465b112b57c4e2cba4273532cb5edd696589235526935db2948835cabf350696d6c9f86682dcac10bd671bd5c6bc53747b4d201b5d6d7eec8e572b93bd6d65bb170def34ed18456260c00ef105a661c63cc2833756e31ca0108d92698d8566aa960e61246866b49420921d01d2b2c08f73bde87f4b47e847042748d2f65d99a96a4cc60dc648c32ca2c9d609de2dc62d21465199a96d6f56cc2b075051582b1c1e2e430a0044e09d01ec2a8bfdbedf7a0db47d0e9f714dce8220f3a80c4295bcd699572adb5b5dddc2c4067677979477cbaea670761e4cab9f4d1dbd15f47c8890f523b023311e408e738277ef2e1d346ae110e6b53c184adcd467d23571981236a451c822dd19e56f8a4404831bfb1d5f87d73de36738691e654a30da211732e932e67a7561dc7b5ac1c4f89c50200207e533c6759aee3ac4ee52a99cc9c099bc03346a260aa0d4875fc5e91ec6f03fcbaf8fd15c229cf59ff1d8e718d10a23362d00666444f51c60c5d2fa6522547ac43aa53aa531102a7944a15755dd7346627e010709350aa69dc4e324b1b4eab592c696b9f014023eb78e5e075cc9bf98a5369355b955633dfdc7745bec6f33abeeb76dcfd1758c7db436ed7ed49f8b20bbbd011784db5d40ea18bd82bf95c611142b8b10e25f95b815eff0b5719732c6ed22e658c76a9c92d87b1abd01463d77b929a5a2acb68578270da0dd25e15905bc2839e5c43a23eb55e82ba9a9bdba7c196bf2dbb18d65b874f756992f3a4282867f2247d329b4a659fa4499eca32f6a52e638c7583a7abfd2fa4b2d91434af32964df1241de95f3d84938b5092bfcd121fd41d9c4c5fea061db8dafff7aab427a9e8429289eeb24f7729cba63453b4c372ae069d177978928df44ff4cd96e399b76375cbbe05f555a01bef939953bd51fdcda6ba725ccd5cce94a32e0720d665850b60041e3a3ed2bf03a772acd70df8733f18c4f3fdaf9e0f86cf173545f1501b8aff941fb4e7c285a0e1be6ab81fa492f12267103fc053bad045c7c2f1290eda35be1cf61d357f42050736a833de83837b1c3bbbe611aa420883c4f9151c5bd190c2a7fb7ffebc58fdbb96840b60b0a458174530c46310ff7cff7b723324d170d9d17118f5bc1d9d8ce2541ccecc8232a1237efadf53355148840d50e31c96bf20608a360f10e1085175aafc0a742716e358801ceb794804abbfffbda82ba3ed57080984a7bb2a5b0e169c02e88d6617a51a8c81272a1c1fb8a0fdc8871eea214bc0a560b3065842bf275be709ec40152a3b3d38f7f26237b4f31bb979988386688e0098a2bbf56284e28e039f01d0f11cabe3772ca7f7bdb628fc2a13eb88ed0623f1b9cf0583d571b329776ad972ba5dc7eaf6ae6e3f2b1a23e005a3bb419acf7f2e983604c8471df001a12984aa3bd0088ecb86da8dc198c1bbae614d208ad73036f82e37f03b7d4c08f60923dc3038616a7c7ce4818f7665596a598ab9dd814670b236daa7007c55021e14f945550609cb0c7000173c70455902f3df81a049c5a030b90c3762b9444bc08d972b2b1265f5900b1d70d1b46c573de864b065da3b20dad5824ebc43a2d86ebcc7b25c8491b7d7956b6c569c8c2c58aeb23081a80c9e0ac5e11582ce3e24006a7b65a52d7e1ffa6ebf2b6a820e370cf7a1b33d01d67b2bedf68a0a9d7dc835b848207aa0d6510f23f05112ed20d45645cb92db9583c06a73b390cf698720af22fc995a6d66a656fbddefae044ba0231646275818abdf158895ef9fb972c593e966666abb2be1ca522bae13acb81581817957ce9cb98210a208edfd1646f0e3c840f3a884d6e50e5480a9244642edc056291f4c1dafb49abcd2aa042374122ae03b56cf720075fa6217592ef8aee538473cafd3f3c4c6b71c0fde2806c775b3a99ee5743a8ed54b653bee6e4761e1729c3a0841173c9413a75dbb34018ab3a039aadead9a2f8a66d457ddf32973c0da430ad8588ee3cbdefa62987c3912ae63b9b28123387f1d9dba09ce1f22b2f99c561f00a6f874ed8b40b52e5fbf7ef9f2f5ebeb62ef33ea0573d23e0061f76486cb97af7f4182009f279917ccdd7640b3efed62041db95f5705352ea0f01c04d45ab0707d0048bef6d8992b30bf74660d32ad8b1777dbe7af9c218c58dbe5b533175bad8bb22c350e62c32d022fd679bbde0674ef8bfefc2ffee2bcff22747f6dfa3d9f7de081cfbe677a082e1a288750751dd250e46d99eb74901fa37f7cf9f23ff6175e7861e13f3bf73eb3d978cbbdce238f7c7df6577f75f63d9f7ded6b3fdb79db7df6d5abf67d6f6bb755fdf07df8457422e4350c08a810818f331a149155af893471d4bf0edfc73f4a302324c1b4194131638ac956ab35cb9896d424290f00b7615ae0c7a6010ebff6999f66f6abf28452074e0306c65845a529adad1fd789c198c168426306c58ce0a78062ba785726fb91573f31bfb0c50b54ee1db5b72d0955da08390162ab40080c4192fa014f2ec863486e20f882da47b1a8f13078e161d58f8e2d7f2ca0d68a6ae3610943c5e086cb25df9883e21ce4150da506f804b4b6b75a8d13d0c2e8727be5b64ce6b695f665c0a6b9f0f4eb5ef7f4826962f8fef6a5d57279f5d23626000400436ea5d0ba72d75d575a851507630c188060440298db45169a1650d711b86b80946fd5ea315858cc6fcb7dd76e6972763b025c48624bfd36a7cbe54bcb2bd5a595e54b950a78d954bf2bc7a293ca76c2940fdf98a6acc879fec694a64d691c05f04ded1541bf66c49a75ec76b5542ccaf5b50ebc546f176d8e5e00af7fee1bb69c76b2fe02fc8b17ca2fbc00a7fafffa85de379a8452b2fec20be517e0c40b82ce72f77af04df011453aca23d42eb6eb9cb7eb1c04ac2a8a55ba5dab3c71f94b97bf74d73b2f1f869f3273fadae5355d8752f1b522f6c347ee7927f40c2e227366a184244714c12e78684e9e9b6918c556db21b6dae349f6edab011c09801f200120c063f49590c090800f904c2771e500be8a75103b7862d5f009d8cb3ac091abc1897335acf4c9f1986e140aeb9f901aa111b8dbbc75b84b62abe5a6c0f672c066b815200b6ec89c4023edaba1c64dda271b5784356815cbb53a48ee4e45b46efd7651ddedebebadd6dafaedf95c2e7ffbfada9f5dbb777167aaff67b6d373778a90b49deb97450b4792b554f63d74ef35c7eeffd9d4ce62cfb12159dc712f5f8fb52f8b8aa886102bd9a57629d8580298d8dce1c5760b0adbededad089c42afefc394d7ffa9108278473e7dee6ff4fd9d47561d27396d5a53466ec905df8ba0cc9407faa7cefdcd67fbefa1e6b2733c67241246a123c6888dc1bddbc7f0ea2138581c7a624329d980141210b3db97280188effeb343604f9eecf27c1f8290fda642222cc74121dc1b40c74e1870c34037028e13fbe1c41b57a91e00cfdb434f3cde0dd524d5e27e370edb3f19eb9f13ebc527c33e58e08e357900e27be3bd50f3f1db18c14fc87eaca21d74c7c1f3313c0395fc80861b3b9860373e21cda1632a866b59d11c0c1d5221fc16005bc168378cea85814e1818e9c7ca0fda8ffa48af46fb115f323ff0713bde137fac035197241ce9eced42173ac8452b6813a1ea29689d107f8dad5a7d63abb10672add883710f31fe62a5a582f0638c01368fd73e68e6b2a96eeb62e1f39ea8c0eb74c4f9d84bcc9858271804d2b3b49e4df57b66ee626b7ef355824ef13df12d68bbbd5df0653b100cedb5e3408626fe103870ac26aaf2c5d7cc563c0cae284e7cf650188260ed2978f47af466f42cfa71f4d39217c3956ca11ec90a429982024891e421942e281231923d04a4b3cadd8ea410adad1a9143a358cb6ce87c18844bb130bc68168d4be22cbc942898a5f5f552699d6b9778c63032fc92c6c5f37ae956d2e4e6e672b9b9b9fe3f0d02e107ee0e02de01e51ac51fa06ef0c2c23b61a0df1daa33979b8be3e20df41042d5469dd7255623f0e57abbde5098b336e1006bcb742103ec16f0803afc3dd304ab9c5bdec958609a6686e08dd5d55376569daa9b870f9f2b14989ed67395dcd1e0c03f7a3440018e1da32331b2b4ccce72ae2c4ab32a393dadb342e1dce1c39bea80cedaa756573730c974a342f62f162969bee45d26d1b4c22c8669edf84a276a8c8e83a2e862e9ba0199fdf1de992b57cea8afd6c58b2df915bcdb0d09ec8ea0a1c5a7bf2b6829f1e985efd0d0de48a2223a8b5e256729561b8fb7b0acf181482bb60fdacd48b0154e06571bc0566bbc328419a95321fabc54286b6581dc94b57241346de4f9ef860df6820ce3d4447736ff4181207d303f2b120e3fed8adce089efe8441ad09457252e1bdbf795f8f6df0738dc124888c6625008f4666aba56609656286b4b5ab990ccebf304337a9e670cd5c941387cb7127b27c241d6b0a4995a0ddc30f56c3e3faba28d0c3f4f991aba41387ab7127bb74299c8179611ae8dc118bd3180976383d18ac1c8627e0c628e0d4c3e0625ebad38cc849e35a53ffbac3e65a9ae027e369ccb6731a8a6de34c5b58471f6ac9150a9994ecf3e3e58518f9fa53a53396f2d550c76dd8ffe81a2fc2361749c0b10319ae3ea0311673b2efa8b1644c82618cdaeca1ca9482dc491ecaacc918a64187e87702a66d7c8703d63e0a5e9e9256c6474b98a18a59c4c97cbd3b790e628108822a8bee8388b3a8db2610c997c3e730b69bef9c3543e21cd733f4ce513d28cafed68198bcd5f1f5ed429e011a82b0eafdf5320f6f8cd23e18b62a116cada393665876bd69e62e7e4ba535b2f8c1a4931785c08534719878a14c1e1d8f1744331081943b0bf82d6d1717427ba1fbd11fde8f0c954df27cce2b0609f34ce3ef1f173c50b4eadd10f3c3e12f1d5f0e81b790e3f6e18ea8d05fce810197bd5f7f7cf8694e6dc3ee334344af11e55632353bd85d128dee2c84423d2ffbb21b37d24c5df18798e30816ec4738f708330b087c6fadd993012b7380ef1be432c9eec330efbad3467c2388cf77f6664498c2e8d8f8f8e8337de6b8816407f7c703ae3ef10425a8cc7f104fa29f46fd0cbe80f11aa4a244861ae75012f7205ae70dd8d4da5fd730c1ac5c2667b7b6b1db6364fc2d676bb790cda3bd0d8de6c6c6d349aed35a8575a1b9bade61ab42aa7a02d11e49680260172bcddaea7a0de92356d6c35ea910832c4c11a9bdbadaa3823b6b60534da8186649a8ac7f8e97c0cda4a40754a049aa7a03dc0a4eb31eaa43890263437b76126af691ab7b896d200b43bcfbf991000c229e022668071012849618201609e6838030900871a1400d68e66323bd5eaa10bd752d3ecb177518dafe5344dd374436306e3f0c815cc30600a58e4beeff8b1fbee3bc6120c303083315904d5e9156a688934252faf9e38b17ae8c4094e31218460ea706d5d03f10f4343e30fbcf9bc594ca69856c018535c04209412d12ccdd2528468e28f2535c2c8cc95a387aad59d4ce6ca9d73e73a570caed9b0ae6b4d8d6f699c6b8b9a76e18d5497f54b96bb6c9176ecbefb8e1fbb1f000888fe124aae109a4eb004b94b36ecd0ea89f7d99812626342023eef60ff9c4617f7df37c5e1c37f3069b1d35ee49a042be08e20f08ef5d254cd48af4e53f6ea13275efdea134c670067d6eac71389d974697d23a409c720c3074bebd34e760acc294be43bf16a00a6b3b5331b4b4672bdf4c1017917932f6ca363e814ba0721a8d4d7a0be211add48413a92be73ad10291294c2b57a025a81ea13abb49ae2d32a95a5d643b3b429d9caf0adf2142b5ade6db779e6149b2a276d3b69ea00763a6d8327be753369dbfd7fec79803cafdfa3048a98504094e02210d0cf99456a59b4689ecb9a966dda65ab9bc96432ae2bbebbd652dab42d33fbab9ee77973748bea3adda2734372a4a3e824424c20b0f576f5149c04a5a9257aa62620a0dbda4ebbd89233d3dc0c66456c5ea8b49a1831068f3eddef03043a7d821271ac8f138adf30fb284d72b972219906e8f73a1d8f27293c3af3064cc9c7c3b4522310a0df7ffa51600c209d5479c0ed8472dc8fcaf6de0519258d0ef149f15dae297c55a19a0a4d8d56924253f31b85cae6763d576b4472ac53d0e2eb2027b455d3f21b858638eb6b958d5aa3a615cb85c6022c62c9544e6331dbc5355897bab7ed5350dc28340adbeb5093ef0448949070bbb55de31b62717059ae28684b14340f4ae08125cc3b1d88d54e63a978b7186a294afd8120db66a1b1b1d9480535c948b978e402da2c042de318159ce49d6bc942c22a670b358b6864b1a1cf950540982958e5ac594858d59c39953467d3d365039c19524c6458611a2061d6594e4b02c173027c1038932219389398d1d280b1936198a41376c198cd5096c81a87f51ccda5b554ce2a251b09c349a667758d646c3b93e106218c34d259bb61248d94614de91867b254b482cee61340cb45aa932433e633899c9ed4759be6339a0d794c00185ea41473cd020c53895cb2baa3612d6d33faf2d46a6aed38a5a954ce86fa62a2b168640d3d9b98396259694dcbd81a374c3cb70369330f175926611d996126b35cbbc40a7c26e9420a6c9767381070814092db9825597641c79a61617267ba6a53d0588d73d0e8bca611337148e73c6d6d24329004734a4f524b271497928b0694b4022f5096343018f3599ee2baaea5f47c999164711e00275236e7499d7320d4a5d4c81aae688c51943d9ba674a3aa537d216364f440d6f1a25cd32be82ef404424e5cdf432cd0a310d72cd981a3582d6e269f2396517134dfc1af2bd95d418070b2ab2792c637092784e35d2399d0e1df534efee00f08a79693d007a91c6bbf78a0d730c6f81ac918890ce96000dc21998491211fc3f889ab801dcbc890288de55cc3f88927f058f4b0ece710ba8c5e8f50b512d3628f69a1c654d10545a230cb61f2729c8c2ca6208e81c12e493c795ec09df3579344c02092bc1a7ffef79035cd2c6c9c4b98b66d26ce6d8c3c5f0e4ea25e943f2cefc9c4d0f36f4cce1f3dbf1cc7c701f97b1f071fba520e5959854665a31c72aa4fc3f6e62214a4f4b6028f53801e004da693fc0d7a9ebf414fa493d0cd24fbcb09a65fd1f52b3a4bc0ff91cc28f8594208fe103aa884ce865a5ed1b91b8603e19a18bdeac1afc508fee1d1faf2cece32339875683695cda64af3f3872ca9a7dbefeef7e6282025ed0338bc2d86276b9f5c5959630623fc917de289920d62e4eebd0c5f001fe5446f1cc5415c84422e0d5a5900f293d08c4d71c5adce3e6f4e199f749ce7b32de79346e29a38db9db93907bcd96ac2f8a4d3ca3eef389f34a6cce7557c4e9d8d9d406e9e414b6aac9a6a7535c5426cb62bf94aab1217f96dd5a0e3585c9fcf66e7756e395dcfdd759530492af7598e1804c7725dcf73ac8144072153e018d22680208e0aa88aee4277a37bd1abd16bd11b50073d2a7641be59afe49b4e5c67aad0ac0c3f562bf940916a10186e62050275e3e2c82fafe49b805cd777dd5d2559c899bb662e678a0f786e4429b832a22bd2f4773b9d4ec78fbe5cd7f55cd7053767ca54435f9e2b16b8abbe7366df97e5f866aeef77dcce6ef071dd21dd9a3584aaa55680b78f73cad321ee68c7654c9d4ea0ded70b38d39f089ecf2beea81426b9f777ae32c6682f6063ff9ad4f1bb20957d943aa2824714b901fe97468be888c093aa81ee445c767412069aa4c3ba6bd5e6f05b40a1fe93f3c92874a9df912deb4a896b14ed068bc7ea4b6dca5ef015174e86323f3444b35968161d42ebe80cba17a1f690c469e4a934bc3e48a92525d9f3d06c95f2957cd0d561a1d5358f1b06975fddf0eb7b311dce237b089054eaf400b922a6ff9e8e4828bebc50332f0a74c3111799fbbddd5dc7f2dc5d4ff5bddf1968f2d198de931de9c95564734b52f258daaa15477ac473da21103ba1996fb69ad0539581efed2129a3be3f26617c5a0d6fcf05a544e707525e35fca239b29d9ee7c5cea925b4891e40a83abe48871553c5f133a2d6289247163d93b5a6c118d51c146d0ab50aff4dbf23a01974737373fd13a36f63393f31aca9f8b2e8c6cbabe1fe08e91d40d1bb091a8e12f62adb250d1d91fa9bad4aaed0568a9bf518f59d4f8152e91cd2e19ca9f9b5af5ace853648f580f685603b8a252c414bd7b1fc63af4d06261e4a73ce1fc85162f54f09d83f647d14d7492c29d27e1ee0b74e5f6cb52ede6665b3a29a5caeff3f25cbe74d5b172e6cbd29637ddd9a9eb6be6e65de3453adcebc29c633ad053ad623051f82b0e48132b7dfba2801a6ec86d5a9ceced4b229cbb908dd8bad4e362557ce6e2adb99ad5667d5c66e5d8c682f802e7a07faf240c3650e8ab9427e21d407dbe74fbc3d26bf370b4a08133038b6369b8ab00935f546fe5a01d9b3dd3a052da5c357b11be5805fdfdede6aad41bdb1b5d158839694002875b4c6d6763b54ff8b4c84442b95e29ab21bcc697c2327689e489b2d05911e0e0cfe61f9470030068a0180500cb878ba0a60641340b0e124128e0a1800d5d305c0328964420459c3bfe05f2e77c7fa5a6be3beb94c3533c70012198631d70153004e25759131cdc5747ad134330c8060ca8102e61c63964e009bcb2c65e6ee5b0f35813493634a884eb116f0513093df547e134c38010c8beb1660866557005302d6fa2260205c26d128a6f29b85656884728a29d14cde5a13c3d2df5a2e19696e66131863a3980291cae4d8d413060630dd24d1686aca301246c2984a518d988ba6e87022c14da29998680452451d139cc89a3c6d949687649e55d440a7d12581473389b0a9291f51a7da1e30c6aa31bed8b0bcb63ef4c4879ee04f1fb0035c6d7d65f964d6b6b3279757d64b27671ed0b289dc9cdeff2f671f7ae8ec992b5752eac0d012096d4228f5c0ccc952bc84b595959376d6b11fd0f4b95c22bb75e58c2aa7677091511e222ae08781606f29fc610e1d420804cdb406e29ce09298e291de749dcb5d2e8fb676a95881dfa0e944bf97c8d033d9943812ce9e4c657b8e75a60d85eddbe0929e4ceabff04fc42efe27bff0c96cca755359df9756d61d8cd06ec03746ed98dd1d8b85792cec5767054898ad4214ea8581aefa19fb2025d350b8620a35504b726e6e43b7a3f3e8b508c1303ad8fee1d1c1ea7049d051386136d589618212ec7505a6388a09f677c3f4e0e54c9970120aa8e0662a3b8402760619027a50cd6512cda23242712ee218f652e775de2a29509cca669fe94b5d1d79b61fe9ba9d0ef8917e50379b0ab18e54b6bfdbf1fceeee10fd994327d0e308b587cf74c59f6cf34aa4e4d16807f2f498a16ea3dd9059daa1656f407eb6f3a702a302de4c4348908bb45dcda4bdc0b2ae475936f5ce67402f5a82427946b7f5d9351b5cc8e62eb666d6b2ae9d27fff9622b8cc3f82d462135534b1ae0dea3670c95c265ac17d8bdf5a44ddb6dcfe8c9da8c55349e2138970517ecb5d9d6c5bced66d7668cccbf695d0c23f58cfe0c18c9da4caaa8bb9731514986f88559d4905a8fcd766c419d04ee44bcd081facac0f0a9029dfeee87bdff25e7a463399e2fc988fb7f2d30c0fb35a5d6e5821be916ff2f0f9645ec2714e6c23e71bf88ed2a7c17c7f444bd83b5441d1ea81aaf0547f8627494b7a329d95769f4b60e35356ed24ed0d055d1a495c052707fedd1fee73b8c31d609a661e59f88debe24b12ecda428b28711f8ba13588d45ab9994ec66be096e84197b7bc8f7a11ba9c479fd5df0fd61bc3f89a6511535d16de8d288eecd90ce5e5c5235acdbc78711d409dcf7c76314c9b32147fe6f0c30e438b6ecf4ef1fd3d789f4290782bb31c54a886479b139ae481bb05b40b299a40762429d007bfbf6c046c50aa9c1f3a195dc7396d3f763f4e1cac06485d10bdf15f1dfbd106a550b1240627bc1d7d05a54edbc05d47ebf76faa38d8b1bd73c3dd2cedda875e7191b35b6e98e3774d0ce0541cbc2c828c61411a559d7c1fb19a38125703625a16ef32a63fd9e84ec9199edd510d19746b89b51da54f6496a6a7b286e777bb539206807fc7ed9d6f6010d9547d9816ded4d68a858a551530736c08ee5331a34441d1657e51606578603503468e940efcd440d74123d3cbcf72ac5b845d9509b6356674392f6811ee0844e29dea6277002b1497e9268444b105cfdac40803e5bc5c4e044c31ec1187b7f19a4fa25ac116e605cfd8cc0b53e53c524a151463c8c31de55e5cc568f0759ab028faa06393cc2a828ee7898ea1cc62a95c0b89682ca3d852823c4633c88797404352476f21aa58336b03be1b1499424dbc833afb49af90971d59138408171cad37e38b3d08c8296efc7c3c1ba9489c4f11f10fed27a458695666f10ea78ddf8833b78503c5a57e2613e9a4528d0495f8c4dd1c96859f6fa72ddffbc5c5f1e637f47ae3b5f3efefccba13ddaf33f2f97d8d099761742b08fb9b4b47151a60e2142599478c8c423b056e750084e218f9a712bfef7fd35c0d72fdf7beddabd4ed5de983d591a3f0235ad0dc5607f78ca545d15f5fe364b6a97af8bec9c6fa432e3e760ae9e6d0fec9f3ae84ea96516aded7a737459afc3a845ff71d1cf09eb1f3e15b4c2a8767fc78837cf0b5ff47f56a2175f6249de3482fe7a023a3e170026a31b9875cb298899f84983ec2f5336f25ad256210fa2189cb4f747f37f1ca2d33b902f8466ad92a22a1ef0d4ae04dcb54a7828c017fb9267961138b4e564b444a2ffca98ba7b14f07cb934fd54167a0eb8626f86e8add8cd0103515ac74e0a892f45cf04fe8b3e0a7bd0456f408829f71d2724ef6063ab11b212a40c7cab15f33514d90ce6539233205662e84e6407f28d0569e8a67c8968854649dbaec39f271fac2c69603a1c63d01318330083493a9fe5d3e965c7594ea7f30c30219a01a06148188031cf99a0572a0f269318fa4092abd34b9974c1c21427e76da03a858c4ed209d3c418d2f514e334bb984c9a6632b998a59ca5ea6900c0a69948133d23d3db0b49a06015d399a5e9e9399857769658da423c8c5e8ffe5934126bd05883fad676eb84e49128b64934245bb5fa56ad35c226913e5206ee95946838629314b446a55ed01aa58d5a3b32005c837a435a28d46fc6879162ed5c5e1614f261862b804f012546bd46324c2780093083003708a5009a186ccd64e6b461a424538668444403005053075a28b4350e17aa06ee3f890de3f6b9390d1219061822060bc118a89d34dd74da354d9b8ac1c5940330c96201601903e8fcdcedc622b3b4fc6c0638261833021830c6ba6d804893d0b349c3e6e66c0244893ae74e92306c4c2500735d333033805002094703027a2a91286432b6992f16f3b905cb943c237d2a64a21053371218c05a340927a969c348240c633a4d34622e5a003861e826e126104e2035a56302c9ac65cde7627ce659d44677a2076f6621277f5a5b32b2b92993e47332433be43e079aee7ce419506b6d5d99c509b221165ead5677ec4cc66ed7aaabb1f003b6f9bba62dbf3ab6a989a066dad2c66ea40015ee3733f64e5514516b0f17f7f920af6d3e1e14689b71fad7422ba8855075980b748b9682d08920ccd3fb10552d71e85cbe7ebd171af3ecee4b4779ea84ba7c3daed74a106a2f8283fed8fb8fffcefb633c44bb2fa2dbd1ab10aa1eec9eaa52fc81796280444b159e20c1aee405dd2af76b7724a3270afb6fb7caf41a9a9b263a1d6299c1d4fc10bdf1a353e0d6bb10ced6ad373b86d32ca3fb02eb0b71f8d527786011cd8cb016111f436a14762c719d518f27bba9ecf5cb872eccacc790f6ca23c7d45a12cdad3c7a542d26f1e6dabdab1766d622ccb0974d5dbe5e998f11073bcb1b6a01a6b2bbd9547b795d2d4df1eade6be58580481087e5604e0ea3bbd0ab0714d54d6d7a057e78cbdbc997c8cbf90b016a73fe7c80f05c381fd04de7cf33e6df64a7096499d10b1726e51d94bf3f3b23b60d6373da414f055a1a52e9b3564e83d2d850f39a025e17715a6e3150df50f8fb0214b9882b6c9e0e7439d46c9e827651c489b29462879c611e1f8d3f3a4e383bccf9929ee787f58c914e361319c33656f41caf70beca74723c914e278e139d1ee6bccaf3fa21ddd6338966326d64f5559ed3cbbabe4275723c994e27ff28b054fe0fbaad1fd2f3bccaf961aae313a2881384b355ce2b3ccf5775db504564f4c33caf2f717e98715584a8694524cbe92b862d1a944cffadb84d33a0f9bddf84ff04ef919c1e4ddad4f0226f17b7a5f54cbb0e474c92fa07d513d65bdffa4bd7adecccbb670e9bbf0eefb10e4fbf7b3a6b5d7fe1fa75f344f51f58d4fc945c734a263d8316501921d6200d857fed408334e21e28ea014317fef72e4d19468aed62ac38a2e4eb9ee77919f00596d9f729676251339ef3dceea81fb3cacdfdf1c94af663a0e545550730ca3a9ebbabe4bbff092338830c348396d1b6c2ac037c38649094360472996bb4435b4db9322a434fb0dbf752598c9cbea33adb472f46a2861f7145c8e58601671ccb752da7af0eab8585bb161624ba1c0a13c46f7cad17d043816470d8f38800bfadb2c627702722ee6223e0182bde75049837b69bdbf1b154fe542217258e75ec918ae29f48c8b43e7b61f5f2f5bb76d2ae7df9ba8857a67f7a4607585f593e61db3202bc119f25cf5a4e676379272ac772e62bd72f9f7e38c7f8f5cb224259fc018056289c3b74a8a19e637daf4a9eef0f7e62deba6ce8d64f94f89c14d171848a153ba6a23030e88d7b50db8f95b2dbedc6b52b1c488cc8c9e3b2701702ee5b3f30d6fbf244c1bc12bd07fa238a5eaca023685bf20627b22d8709fc76ab926ff27cb355718a4d5221cd76b3de2856dabd90381d50a6d24f9d98e7fff177ae3cfed1ab3bb9136f3afec8b1dc9b364ae72a2ea309a9d2f2ac11f441d2bf6a752d9497de595a82fc51407be8e84f5db982a2f6f6a45ec33bd13f42bfb55f7b4385c2b0c1e3fe22873dcd061662139ccc566292ede6885bd9090e6995caf188cfdbd0ad67bede6c55c23c225bbe999f306611b1ff27a0119ae09a9de0a6c612946a44fa4e61841a1a4b329e644c57f40c6684e88c714a289480083a891a8c253423a3719153665c0202524a4c8926c5d6441052040325812c9962a9fd0f9b478f04d5589ca7f99d72ae041c7a3631cecd20469a6b494629c184339ad4b8c55952b698138231c1ba065467cca08c1342a868ab261a4f8834396034c979da306cddb00d9b322cdddf0ad20c8b7671d962192b05eb616ba9467e6e8f5b5494433140fd5762f2651f5506f2e55b59d5ce901a5171d41e785f6973f78019bc5f6958588ef39d2834e9ebc0ad30f0f71039add843133cf9847cbf6f828ff2b1737c436bc44ef2c326b57ea57adcbc76e475d7aceccc4f4c1f325f02df3c3ced4f67ad6b3f72f89a757ce9e32962be14f34dd64139741821b1a24b7288eaa17382768329c14de8574e1c83528df70cc924a1e3582f6fb324ef58ce19f84dc7ea779319e20138167454e8f309d3b59cb60053fddff99d55cb31133dcc48f03bd4860c5a44a8387ad24a8387c01d596bab86c2231576bfdba6a6a0223072a4e867b7527975a502deb618e24ee8e34b959d4247d079c9ff6bc5ca6b1fccb54fc340d03a7077a6c0014c2545b7640360eadf4e64e47b73ca5ede32ff42b55acfe88e6bfda159cab645ca4e67224bffc6bc95de59ce96d4f2799c905472c88f91f28d716ad433c641dea58a437ef3820d019e92948782b389e14f28101081043724c1ba63814fc8f3de1f6c91a13697d1c6789baba39eefc4b8b70f70b902bbb1b6f59f0d79aa9e24269cfb63cd87b558ca88ccf754db5467241515f92351a220e95776c08331d102da1174e3904c257c288c99d605ec17152b3195fddf444214a971b0bc23aabf72468415ee219e8bc57bb65ac745dc79cf7be3dc9c882b95ae5fbcdb0d2522be88da59162d3ffb907c50f88b8838b1d5baa7589091b3736fbccd3b2f221fb8fbeeeb25378663a7d112da42c8a9c490177babc626ad99fa48225fea667404e2727564a5fcf3c1ab2179c7b74797c97f8bbf0d749fbb41bb22b97458219fb46260d08c2f8c2c89e1babb63d31ff9bc75a5565f59e3953a2f0ebb5fe0c581b7017871fe305bf5a79e78921d9e2fadaf97e60fb3279f98f257d5e36e75d69f7a62b6ba5e2aad57679f98f25570444eaeb8f7a7d1e5fd2d810fdc04712be11197889d40e6bdaa1c89acbf25ee3529ee1cb11fc9cf1f8fc54636be5f54ae494aebf78efb201a48c87b8ea57849a1fd84d25716b4ca36ba1fa1f638df4b80de9bb96e978a51a511a43aec61d7e01b06e7c686a0907c6e8027cf4fa5de18862e594e7f77805983581a5fe4c63591e79a54ea7ddf700615ea3a56373c8efb61f6814e978f16d151b1266fda7c3ebc82a2d5b33ba1ad7f6dfe30fbc9c16a0a82e04d6aa0d4d2528b2b5859035ac495d2a049231e6f6e71a08da55ca00884f600e19dd4a3947cc301eb5186beb8562eaf65ca6b6be50c31a753e3dc5f8a133913dc916cd9949733ef55f964093cc5301de720a7dc34d7505ca67b42f2b83ae829f437d1f3821a6c09149bb7d6a09eafb7d47669154f41bb9e5f0bc146311f980cb6f3a1f1a03cc1ab112c2f6b43aa2a8dfa022c42be386a423eea7c63407e0f3187767d3da3fb46864b3af731ccc87398626e50dac514638a3ffcf3443cf38cd18fb451028d7fe78f6b5403e2d27f113c3f9430956969be9eb9872ae4f3d23bd6ce9c595b3b7366ebd23d989cbff41bba6d7cf3d2df14e9ffd64923cdef020c8aa382a1a3d0e9d7bf5ec6bd9db2c02db2136935cf171305139e72ff36e5d530eeef65ea7965976a262e05e4e5a52559e7dada99d8d9b88c5ae855e82d08292f4ced01e614f9978a1b562bd74d4a502c31f0c93e08d56c05d4d74496460b90e29846fc849de50dc589100f331bb9f585bbea96e33cda0d9affbe9521d4fdff47f0095c9a1b2ec0bd7e79f5c2ec7a8c475179e498e2434898e7a7ccf57c4112dddda0b4f7873aece2c099b566cc13f5dba7d7864b90e3f52f318277a33472503192d8c74d7722e3dc5669d84dd9cbbe0f6877b7ef830fef76ac5069d172fa7eafd79386a9031dc559b4832e0dfb6d1fe53654f773362ce6a25dd638c9852bdc512af5f0bd901f71e17c8c13d1ff957117c422816fdad803c70a7e3e1df227ce9f1fe24ddc33c12bb14cd24927fb3d20d872d249f06460c8b6fb24ba801e408f20048d7aa059ab4c0da307b9eb1b45f11caa380e1ee468d76d1951d8ccdbed8ddc51e0f6c6d651683bb28cf246dd2edaf0a71f14e4b54e7eeec7a9bcb3441b79eeff6ae70a40d7f7fd2b001d38dec184e0d7bc0613716ee829167b868e9eeaff730f9c5300fdef5c84bb210f77f7ffe16900c7eb7f27868715248443fb1c2ace0fcefc72fda113e477225e58805fca70e9e4ec6bb8ad7861ca99d51575022ab52d79f2ffc16b664f96e299869963762bf48315d84f7d5c9e95b7871a24c17a0b5936db5b014fbe58d86c37dadb9b45693f57abd7b6c432554fc14b45a87c29bf3d37d7caff715afcabe572f5f42bd96c762bfb2f354db3b57fa5d99aa6bd926dd9d9ec2b0b0f2e2c2c7c4bc67f2b9fcfc303f97c3eff8ac85493b95f719ad96c5665f95732d91f67c1ceb6ec57166061e1c1856f6936d3d8b7f2adb9b9d610fd5294fceea1bd7b1278c996864af966bd556462fb7602c5879ee5787db979fd4ea7df05afdf13d4b27adbeb02f25cd7ed743aeeb00f944574049d4017d0e3f03a78027e5ce28763fe274eaa636c071af54adca26a01ea4a0812c836dac52145ea9bcb7bda9b1b8dc0d95833f2a3b1dd68057e3436371a9b5bcd1d68a839d4d250696d14e2d7a96c6c3662061f4dc521936622a2cecac656a3ac55b89cdcd3b0b1dd68e66af32019e7017632078dc121db68b6a366346596e666a191dfa835a2fb5f361bf9141c924321d6d446ae1197f144729d76b3d1549e05ea4df52e9fd3da31c99fd49c50c796568c6fbc9fd538d71286a625349d72de2cbc9bcb2b9780003e0f90911618e2fb4d400860426afb7ba6a504086780611a338cf114509ac654da903429a5164d64718e504ae6994e812535c229d519d599914de4aa3660ac259966b215c06003608a2dd089c64ca6134274018c31c19061a6344f4970c24c4a2cc038298a4d62aab18514b5a8656886a1cdeb49cab5294d9b07c044a32943b330be7e06538a09a53f6568b6a6634a282119cdf8155ddbe1fa514dd7b58aa62574ee34fffac01886e10cc6984106e37902093146098c3f7c90f75d6bda4c330ed3221f9e06a09452391426a5409319a084104a39a18c60c5192518eb5c3495ea0cc006060029a00058d374c608c11aa394014925a5e790a42813eba224ca989e62cc025d5bd0749ad0b7454fb6e6b0861728271a371ce3f2f5f7519c2584902ca6bf2f661e00d26258a91ee2a24af69541393485e6e46d73cbe3277a64da200553f1f06e6815a06c587df94f8009f10ffc81618299ebfb9eebb9de1e923f68c81f4858ff78cda4d48afe0fd7e60a3422fc4cac6af8be8225743742ed8394e4a29b4606469bf20eb87c2505bcc19bf952744d806cdb4b4670314ac05c56f7aa18cf8b663c0f47fa1d33e741e7e30e66f8fdefc70c3b1fef77bdd0e0b793082e58f1d43d2c5e5056427a22757366d7f31ca2630febc4f1bc4e68e23b24af99bbd9ad48153b768256f6d79009fd4c1fa0fc12399856f54b1ff7397426b8a96664582bf513d06a882634aabc18caed42579edc598066a3782c6267c3d715e69433798275c448b82e3178bf9bf82c4d30677e365f98a1f833091f5bbc2bc08e4ce531d60906b12307dfc518777593f889cf603aef38f3f30e33d86713fd2e375d9568d82f822bed7e50cc25e504123357684e589676a93b4e446653e08dad517f946054339c4d0d52f63df0e3b421411c2563fb519cc9957cb355c9379d494d21957cb35dc937a1eba97f638dd8f5bc8e747ae37b5d4ffa9b1faabcbfeb79deb02c70536afd9425e552d16ad2c98a72c0baba0f797d020409dbba89ddcaae53326b8945bbbc6619aba92cc5d462e3cb8da7138a091dde56f5643665e6b2a917b3a99a99c447caf6bc59334b0ecff2f115cb2c8ae99fe44c33175e1b75b529f551e4f6410469489c732790893c49630c69980ff4306be548f8254ef95036366408da68d5365a7c689741e8ec7f8f606b2eed9e5f2eae17f32bce427b8ae954d3ccf9948c9b5271d49056957bcb3b3bcbf5a347ebbf1db2701731d17066de9a3b6c68946592f6da0c4b309ee199396bee708201a376d23e32c3121ad60801785815b0bc8362b2820ada9136d591d07cbb5d191380ac42a35cab574fc1711c9329e4ed76a37ae074c247e7ad8a9409bc7d4854b204902d99fd8f924cf29f81693523a9ca0bca6060d89ce1474211c1409af2a4655e4f9896142d4859cb8f85770d4917fc91bd00896cf8e6d0517927807251d250f37922b0bd0df6318fb9d31ca8d8aaa40da62e9108e5a3a16836e6f848e46ac04622cbcb2b3867a6b2ecf8065e92ccc3176d93af2e72d34e53ce8e9c48d859e92c6e66b69a5b9b9adfca3305a7e62f1e5aba7d8659d26d28b88ce5ced64c3b9bc2181f7bc3cc54593ad4b2e78c72dbc669d3cc019e7af55662d116c96bb519c2702aed64e49648b199b9428e406d667645dd52abec261ce4a226424e9c63a7f66d23b09c0b9cd59635ae3469a3bebd6c4ea7ce3ef4d0d9d4b4b9b8b4b47864be5299179f4e1011bc866dc61e3a7bf621c666ee595bbb67a6503857ab9d2b146e5b59b9ade0323677f9d0a157cda83471ff993e3a1ddc051158f98d38990b3de4c65d64aab96a0dc61f7ad3557cd2aa38d674f2dec0d7ab9664f71292b3b385791161f06cbd0da77836a19cf956a617ad14e76709238acf8bf1593d6314ebd636ab14459459d0b761a74e34b2c834692b4522dfed020a6f065cd243034bf6664b3a41c83745a30e41abe9545ad28f497e7091d06e47725c3b96d3f17a5ec7b1babe1f840445d58152a8bae8bbae2be85b770f898004563158ac6e96d8d0ea811066a3c01504e61bdb4505848b1bb5b682c3716084d1a3c7356db956bbed0c99ae56ef9899268fcb88aa77864e57abb7cf4c7f3f74fb8dce92996af58ee919f298ca13250923ee1d3873e3112da9ceaa881b546cda1527f890a65d29d94d9b04cfc8f37ad2af49d7f3c07745d8f3dc011637fa913862283f3190233d61a3624806559c48a389e79bad76a9187a14909846574288de6ee09ce23b3dafdf8be4cfc1cd4e3da5b4b4dbebf97ec0f977ac611a56f4cf418bd207c871b182abcd56a554c937f7f35d598a7b456ab62a437e2a9bad8a38a4fb3dcf83cea87fca81c7cadfedf5c2b777f47a5eafb73bee8932f248e97a919ca32fb05e1cc1025bddfe3abad179fce6a191bfa3d27fdb56a35cabac0dfbed567fca6c21d49c6f9d823674ac6973616969c19cb6ce5cb972556978088a0d530218943344cde4892913334218e1697ee6ca95333ccd8978c6f9a5944a8609c3e0513a7fcf9123f7cc537ae5cc992bbf872936b286913530c5dcd430c1dc1464a76632dda420bd198884583931e0531941c0991c13ac997cc4b6b57413edbb76a5cdf7bf3df4afb89d9edb39e81696ee6e37b67666d11aba88de8cde817e0675d16f2054dd8ff6e029a80e4b95a4fb9b03199c234ab063f690c38abd6494112739b5a31ce9f624fe7574b1646754d983d1d515c6a47b9ad036f26726a7717992adac8ceb9cc091585ef5a5f446facf07fa2322eea57d728b9763164722e147c262440a779f44dc556d1b6d712f9e595d251936b11f3302b59ccee4fc81ee575cbfe1fc98aec090fecef0cd1fed9bdd05edc5259fdf1d68dbc525a2cf4f90cdb963e6c1918e8e3f493e17da550bf82b60a0ba4d46ee9bc64628538b2b57ffc9f937cfce9d999d935f6f3e1f486da1fbe89d9563c79e595e5e5e7ee6d8b1ca9d8feea150201be387fbf20eb625f4600cc6f3767e10e451582269037d977aa0b2dbe2912bed81842c8eaf2209e27d25e8757d57fe6a99c4baedc92975defe9472c6e7074efadefa56c2294fb2f7c9719273ff5273e345f1db757d578aa0be85b12b07f4ed2d09f83ca069c3723086a347016346dfef58a1cd301ba1f166d5dddff9a62dbd92d963a4a620efa02bfef57c1f504c9c72441c91dd2e78bedfefc58cd97b62958ac393463480389dcba8a1d6605cbece2bad66708a4617220e3f821b5b53477ac1712a1d6f3d3d0876a52301f9d5ed00722c57c574a2d0902f3282105850c7a88f30f2a1d3ebf546df1f812217ef7dbf2bde0edfbd56472892cfa9a5103b8beb436f24db62fef193271fffe580c9713d8a79cbcf8953f3e7f23333bf1b1ea0e9284afaf80be4ff45e422e44cbc78a4d26adb257578ec2e572a5ba974d63eb9bcb276a85a3beee4d8f75d404a8bf8af694eee58adb6aa840de9d456a5b2f2fdca5e70d40cfb999f152785acad32c9200aa3fd0ea0ee3e0757ec0c4c4badf949ab6c7774714d58548372242e041535ea019660ef43288e586ddb4a7c2a597abd4864ec58cf8632b92193fd0bcf4a9fb697fa3df0943b12a553184b21c9c1662c3720e5176137e069201723798f7b31ba114bb621eedef05a208afed3e0175028258ea4c5715c62465005edb82398b0d7ea325d27ba6c34bc27566da8de4c4d811ad1d4079eb79cd95f5016a5cf3f2885e2ca83575729b9c85b801f74acea2c7852f7f241717ca9a0829bd26e7a0a2da10d746230afc721d618a9fe1403d2cd7dc2d0eb87e72f4fb21f7b491c2ebf1c50074f8dfc82af9c53c8f3f739e5a26277f44a9f98ef6712f3e920bd594fe0bb8ed925dfb2494f3144349456ea90c3b5e76e72b71e14f7573a67dfbef97d7b13fa56bdc94db83f98f5dfb3936fc87d56d9031ed8b7de7e57e68aaeeefe507d1bbf877c6c93ff60f3b69f3fbe5b99b791e118ccfc0f396fb7a0777debf376800bc19bce5bd4a150272336f7b7346f719ae7f44dfcf9946beb10aa51f19049187ac556c2c57d29a24307f4727f3a690f31bafa9244a62674108df880b9ffd666a63d7673b0123c34433f45820496ded61507ecc0197262970d2fcdd3ed2a5020646779798710a0b0b4a52d2c5df4185d9517b43f3f618bc6ee262e6f5b4b0dd033c6f2ceceb291d1e14839737c29e6bb50f9bebc37f4e870e0ee5a87091d0d9ca0c7a78cab4e1eb4c53a5763bdac2e004e5b1dab92cb55ac8e95065858baf8e9a13d36d2d7abb11eb62d96d454465508e5d43ea6fa38c06bee0c34fa6282fc515dbde266a111375cad4416ae8d701ea5b183b4ca1ad16cb2ed13cb2beb007a461fa83a5dbf6cbbe99dbb427da8d8f58e919e55e3d0a1738582a69c1f067a5797af73967bf8b452cd8af7e1b9619da44a6b1f125ccddec127417e3f4a5b2ef7318f1ef0bd90a24e3cbb9fb78d492619b79cfed3ffcf14b36f7a759f3e828eba1778cc195c7c70be7375dc0953fc625e7fd805d5d578d9b307eb8dc183fee85dbea2924ffba357fdfaa1e999bc6fd8832e20d1ee6a7d6ca263170bfefc68cbc2d29e1bee4958f570d913ef4a8e1830fe78eb543d80625715c7ea1996772ea157a3471182037dc528e950b1188b21e1f59e62f33a8d894e6462ce0dda8d769dc35b9626af89a66eb2532bef0d1f97fe9c99ba24321a22d41ccad47f5d4362a432cb4970f75b7e9cddd37c57f8005b8c4bf4fff7181fc9202d9f38bbb47569480f6f1e1d473f2276b633c18c7e30b5fc40af596ce46cda87fd36518ef67433a66719ce6f71e0ef6be0660b9c0962b030c1b0580d3aa399c5bbe786f28585b9b114833ad5bdc3e352b7311f6dd5c99a14438b24726868c70cd2a4abf7316fcab1e3d497b4e1c0acb4bbef61c692a0a63de6d32d26531fe8b71c461ba1d67b442eb59aa17f6e16e8b63823bf529aa314de3abe20d8fa2f753a9d4e573aea9436d928ba2fd8f71545d4ed789d3dd4f13a7ddff33ac37b318bcad237f2b887703e99388ff900ff99510fe182521f38faf687bd80c3080ffc263a23ced06da2fb637e03b6e3fefcf0ddb8bd1f8dec0edc885e0d45cd698869ba492303b531c46c146368f5f09513f7b769920b98b82d7d59de37736175f5c2cc7dd21ec4f3baea0ed3e8a253f0da02a6b425f53c5f1107bba060dd49b79d422443590c60726cb928ee597160b0b3abb80e8341579c09075c462fdc1f59ac58f74b16454ffadf0e795d69949da043dd2a0eab4ebf14d3b794b3badb93eb29118d6931f02e509792aa266a8b7d09b1ab15e28b3caec4152e7267240e76bbbe62eac99ffef3816e89d7f37d3f0c832f6f60e85a8ef8858ed87e52f9caf5f6503750f672bdd8fd81baf438be8a9ae82cba1bbd013d86901380d4313775d5f0453d0c8440b932eabd8e842feaa3aeeec2178a8f1f1af838f0ac7c96fc274f59a87ad08b5e5f9211fec873e099dc1d180a29b1a17ceaa949eec6cc8802ab9b587ac9eaf162f7584f05ebab32cc2e527a77824479402ea0fb1577488cb1e408f9012f08bc001e7b7bbbd093e5d50e28b11888020312c81d2fffadcd8c6d679a85a9a90935add58bdb0b0bdbc5fae28595950b013cfbd718c14fcadbfbb724776d62cdeda18aebc34fbbf166985a2aebfcbbe6dce2e2dc66b95e2b7f246c4f011ea5ec41e956e601e9f8cf4b65dd7afdca56f34a7d79e3ada74ebf75fdaf14b717e6db85fae285e5950b8b43b4c7b21c954a83355290b76382cd9350cdc7ef9e15db631713e8f792696eebc1ed2a280a3ad0050fdb66ff6b182b80f1e7cd4f8641e884b6cd3e4222a192380a8caa357acd45a05b222bf4b504fd80baa9427c7d80199a58a31e25d71e1cc08f07af11aa58f1aa0e0f21d8050f1d89d511de6da45c97141b412d43d555a0a7ead312b4cb38675d595f50ab15564b89cf4c5d37992faa1daa1c4b5d1bd1bfb4940b8dd83536479e07fbeaa5c106f49cb8bc2a160ef0edb0fc71e8e8c7f20d1733187b1f3cb1b7aaf226361e195348459376fd1480af73e8013194af1683400fb8ded553147c2044154a08f84053f1b13eacca6c0432a779080261e18d76e4b85ade9708bb9c7569420caffc96831e0d7d777874459db1b11f5d47fbd617e152be3b5a8f1b8cd16805f1f10ac73a895035e60613baa1254437b0a588e11125548df39bf9d00d1587a0de1c972c7c38b33c98eee5cc8787e40cbd9830d28ba32e88a0870319a4856605eec6863c1a8cdc851ea86d051101dde4463e49b30a5d4e65b3f79c79a8cd0dfecbdce0ed87ce46a2d1c88e0d3af71d3dba714ad375edd4c6d1a3f7893510c8a0a61172e415bf43551f82d6293809de1bce79216a6479e7de005dffce1f4dbe272cf63dc91fbdd34780deb8d7832ef8c841c8d950d8584068482cec2fa7a68f4f4dc31b3defe199e953d333e097dcd73736dcb39dceb9d2c6c6eb5d579efd833b6ad6d159f420fa51f476f45ef421f44b08b563966b527723663cc1477816f24295097abc933cb617478853a9a635e2d92ee67f3786bcf12113057fe410b51ce71d012ebf11fcdec9936c2340f6c5efcb23cf4b23e95722e0f29dc00fd5b2357c7f7c37f8fd9941e5f55881e2f72b83f2d46f7734e21323393e11addbd04d951f5b4d9149f1c047b9c4fc079ea6223f53723b3743402dc6b55881dfecd24c2291a15d00c74a64e8667793661296037f71ecd8db5ad0334cd3e87b44ea4d1a3ffdd386e95884fdb38f7e54aed71ef4a49d2f829887ec007444576b4ac8d18dfbe950f23307fc90f452776ca930f8215f21eccf023a2ca561a3768fcd7665705b3677263865ff728c3e37d2143c9077d9a5291c5e1976d7fedcc03a31a1fbc1d579af850be34edc49cc9f91825292c8c897462f1923f2769bd266214f2af9a6e2aeb97ba813a2ddecb8a025450b3a9e070f7a94f57a51753e4ff69f514d447e6c6e0d71ea387648e8562bf93a6f55eca04a4f299c41c7f5bc8e3abf7c5120468eb3eb79bb7d1410ae68e0ebf739b42660bf20d16a716740e16e8b2edfdcaad5430786f0c5ff9058c07459cbdcbbb87e8fbbb4f0bad3d3e92263669a6b46d24ae6de2d2f3b42a94385aa9daa7a76e1f0eb37cf38e9d474564f335a4c1b598de52cabc094000fd04ae07b694df91588df161a63e6d66b5adcfb9052f9fef50945a60e156a99e18abfca6832a38be6251cd93cd105521fee42e037a60b5f0eda12f39414009776fcaed29837c46261bb0e5fbe595f55c33e76e0b8bd9c98170d1b9aa323523616f43f0087387e83aafc96a058e1deef59bc37a3d5095e48fc0751e6bb73492b69687a264959313d7dfa750b4bee3d00b6574d656a854329d13656b0ac1cd3ec44ba48595acf4ea7d2ced9c6eb0fc7ed5c5e256f7a5c837ab956d9de6c9e0a7d493576a051ae29dde6c0c16e4d2b16349e5f90773a1f836643b6ad2e17539071a3dc906747bd5a09354230c2b336d529c66017309eb5f56c42333573d63428183ac0542e93a3a9879bcbefbac8120c0098a9d92e64929aa5d9050cb336e632d4f724e1f4542a8b01703695b2031dbe8456589fca97317652eb8f2cf6a6a6d5cd449625ddeadaa954960038a957ef0edd5fd10b74885e2ff0d1b0b56c5b2a322a53beed5a5d5ed0d4da961ade8d55a8d4ca959a1c03ae15da2a494d2a371e83e60e1c85e036a75abd56ae28875aaad1f0122ed89ac5b13d0b32a42533e0da9a293b9c6017dfb5dc7cd862b94c6e0ac4a8502339676aa696c8eaf62cc6051b08509ddab3183aaa1b1f483900448d02909465a99b9ea6a67b8b8faea51c8ccbf9a9f5829608ef7e0a5202645371bd224b52ff3be8c4e86d75d5e8f6d3524822540429348087f566b1526fe62b6d28b54abd88af08173d9a5157f99c06a9e2dfb31cf8e693f50ffdda931faac30581c24558d307ba463269748946c2bb2b88f69cbcc7c6df1de2b90ac8bc2aad2f7ea076dd4c6602fd9b35b6bb9f50bcfb5f0f68fbfd1304958caede8fe2fe341a681ba16aa53e74f695ea71ee7971406836a37b439abc5287dee792ff747004f67f2f45324979149dbfb815bf5fbfff5f5e717f3ddf71c3537035614a717e5c27b8eb79c3fe8767d129849c112f2c7165f576300169084c27c6bf3bea2a3fc98482237b28c0d23ddfc559b3ef9b362e8de9260fee28e9761433a9f398994e9b8f8d5cc93fa3606970f7d372e0bb4601f609ce47063e482ad02b94b5735ab910fc88c2449055640c2b4b0dffddd97c7e567c446df1f010ec48a29d616ba0f6047e7e2be48f8e8995fca0330f45cbe3bb826ef27d81147e372e238eae511fb83c14f495c41fc7fc1e0e7c9456d06901dde2b60871ab84211a39bcd120b8a7e774e43d330d2c26e5af0f6ef15192fe5d4f62abc1f78003f9caa4f57f0156a3e0855882d0dd4ba84a1a635c7e6ff2ee3b5fdcc7b982989f905796432b11541b96b6162781846e6fa4a22f8c46f446bbe44d5046c0c8432ef4c055f557277a929ae8c8e9d3aa8ca8ccff3d5cb6a31c4ac41af5ccf0b8f4225d62857b2dc95b404e483bfa88dbb3bf42448537dbcd62b3cedb8d62bb12f9c1ec71931a8e95ca2686efb1f018733e77f8c2e1f4f9f4910b1b33d3773eff73bfff9e9fdd751935de1a3a531c95e779bd43877a7fe58e3bfeaf8f1d5effd8e1f5219f97ef40ff10fde64dbc19864e119c5bf479d9f8817c5e4e7079a94ca1f67179c983d4cad965b355c969fc209797ff9de84ccb1889a974d2d1f5b4a6198412e956524be97ac6306cce2d0d035042386326e726651a6c02a5d4609ac579464f4d258c8cc67542083e0ad2dd253534a653aa11422217929c50833283521e38968434e19426184b68add5322507fabc84f564de30521ad388285d4beb7ad6d0535c3735cda044fc4b726672cd629a4129a58c26353dc5b5a4ac106b1a4b1b899c992c9ac962924a4f98f29f46881e58f593412c239453d15e9dbe42358c29c0c2bb7a9a4162e7bf83eae8acb4311d321c56fba83e89efd0aec77decf062dc17f8b0473137148387bfdde147e767bad399e03133dd9d7e3108bff81731c6a217cad883df8f0c3d71cbf1bbd39920421612845ffc484ce815f7edfde6ffef7c7bc31fad11432bebfa122ff072226fa6135b89b45948ba3ccfcbbaee6a09b2964ca7930724ab70ee6a065d4ba4d3c93f6a5dbcd87a3959489479812fe97a5933c2fc09cdd5f532cf73375950f9272633b848a6e754b26433917ee9624baa07c57cfe9c433f867e02a1ea0eb476a0117e3794a152b08df9b80dae48b2d1d8d86a84995a1b5b8d7a8cf320f7fd045b5ede8cf82e4da8b048c1886344b0399b7a0c76ea3cc5cf240a6668c25b643ac504529aee58cca0f01abb9c0d4c79b7a7c49267e67c8a19f42c8429a007fd9730ecd4d3b3c90f7d148032929eb5ced7b6315ea73a9166bc0969c6cbb0265ddcc27b99a55b0ec5278d140bdeaf4d47b6bf54a31b4102f0badce4f51d437f227e57a7855c8480079ec37883e74bf9923d7ebff72f3f29804182de0d7ee8bf4b1ef670e997ef05422939f92e37704219bbc71bc77cff1d42a8da54b7dfd6d5fdb501f7b83551c2fc7ff3f62770721c759e281ebf8c888c3c2aebcaaaca56f595dda5aeea437d54575757eb702bdd9265c9922d21f9902fb97c62d942962c1bdbe0b1cb60c07830783060308c298e6139d6fe300b0bcceefc676be6cf322c033c763df078ec2cdbcbe3331f9807bc596686999d614bef1311995559d5552dd9cc6e4b5515191999191119c7effcfee0d127a86defcce767c68b96af76dda0356ecce4f33b6d5b7d8b5e5c938ad9da4605330aeb6827a44cbe1c34b8cc7cedc742aad8464c2baf828274b64ef88a45d6991e4ed77521f8573056a046a37af8506800c23cd6ebd1bde83e744ed88205a2df0dd0011b138133cfc644e0deb33111dc956d3047e820b07cb975b5edbfe35ee0fc7adb7ae1555eb9e17c353073088f8d2574546aa5da6ebe43906e856373da9e3aa5b6b8330c385828af427917f8bebf15476079390c1aaa49ef159ebf77a8512d9b4f46a3c97c3639acbd571b4e66f3941c189cc8bfc08f49844593bc90b88292038014e57adf0d1814d88349e842791f3dce6afcdeebc9288b107e46169417f2b321be2a8286d00e842ae53181975fe67cde4427c26f8e6e6af88314645b0d58293460fd6f96a9c96a42166835d7c3563b22dc9e65db0d6fddb2ab932b75e1155f752d7bbdd340c78fbad1964bd5d049c94bf9f2c1b623b57c0b2ccc62b142372ea0ef911d568fb66e12b0624ec85f1b1a542763ba61e86344a792c591699f3b93a725f773e1a2ae268b7a0a2ceb8e6539fa32f88a5699e65c9c3ce77b765f64b92efcd29cf0edbdbc13bf9485d2e1289fb44f99b0d6c3eb666fbb3d7c7fd075a2c5bdb76c50a0b621abba2127841f2efd0c057e78a76f61a714a813379c5d845d75a7b60d50db51d36d7d05ce5ff6b14da86528b510c45bfe872d45495bf7b029bab81ba2ad5e33767a275abadd71c43639b71976fab956679c6b75c695adae3a7771d8e96e97fe25dc41edac40c7ed420d5ca18fee8d3dd93b560eccb6fca40e746321b673ea07bad9fa1ea57dddb17bf1b6abefece4ed693db05d7d3a2c3d20f5901f40c0fb5a685eecb6212d66251d0adb582987e03903eb71a96ab66cfb0dc3b9136b6b2772c3db2f0f63fe5d5e6f07abf8ecc1f49ec2da89136b85b5ccc1c1537bc208817b4e75e0556d827d9928d9fea7d380eb3901c0b3de6808cfa95aa0476bd604969ef874d2563174a6879f5e2ebfd48edd20a208962f228a201f090ba9741458aa1d45b098ee88229862b9c458a2d3099002e8976607098011152ef74c0102a012e1de8f134664241a1d31cd782b4c1d0185a9a0008de94007b397ea0074a323a142147b3062264494b94c048013be115589305d5700cc6113abd872345dd775cdb1b08acde10800e8861a51980958c5606534c060c42391415b210ad49ab50e7b9fcb109ac8870126fde9c06773db3acc0f14992ffbb0795224205549c18af79fb5546ac7d689c9c989ad3b52292d91ca67f359afadd8f52cdbb22d23f1ba72f97509c3b22d379b4f7d77dbc4c4723c168b2f4f4c6cb396c7e7d6b2f9d672c9ffd5cd38de7ee0c0761c37eb96bd3637be8c3a647d16da29bcc605926ae0b5db119b8585c4ca219bda4a4b3368fbb8518127effa7ac0ded67cf24d8f3316d7c3045d3ba7e4b9c26ca25af3c4fc70a53530257ca60600dac111b89e5f2cd0cff1397b4510c38b1517524596abec0a783221f3676dd2b81038b4a48b4e2eb4846c0fa46995558075db32e2b8686eb1ad4852c9aafcc1784449442c7b120ed1a866d98a52cd5c3ab176621580cf7d4387531f060c961d8bfc9e5c833f65c66c0b30fcd3fd9c41231afed2a07b62cdfe1856dbb64355c9536c8c8dddd29c3b3d1c154e060bf4c90dce0af7848d405be53b9eb7d5d7d1f75ec0438a7a2ff480ce47f31774ec9e6eb703f96cdfd807fb3ea37534833c3ebee002be8a9990c54630e012edf9330f9c2191b079b5521f837fd92b2bff5d92b7621fa4a43a55e77308aafde3c6caed7372e5a4c080926157f916d1fce9ba27b09f8271c6d7e3dd7e7cc590d519ce954b9557d13e402d9be6d95aad7e81e6ac87edcecea346e3c20d91b1cbeaf03d813d8720bf5c29a8f942140a6c84bf6d7f6d6ee91ce15f9281d8d8f45d5b27ee9a1e8b0d606d75d09c1bc91f89c78ee447e6ccc1dd2a5883dbd2f9b4313464a4f3e96d8395db2e19dccaf4e19999619d6d1dda755b25ac73539185527cdfb2d3a5726e5c9556c139c80918232ced64d1baec8575586fac0b91f93ad41aeb76b3c453eeba8857625b8d90dee44ef45ddf42417adca5323236510b26b7053713de9272acd44e4f43b9b0d45d2e7c7d65157643a9e20442dbde779d83420c5a72dd4ef16fcf7b56ba44c785b0bc78152a4026b474448bf1cd46e0da6082456c2082295513117b3c161f8af2e3a8aee74aaaae60836195809484628c35959984104a69cc4c8c70e6c44819c35bf597894115712b55c784104c4c558da834aaa97684c623d72944c7aa49981d312244d5095689a233a261661042092106534d55b574cd89aa86901a5b9a16d78cb4a93193282ae66513861e67a08dce45751d782328c12af6231b1143d54c4a8969985bb7682656f0d057b70cab5a54953bbc02aa888ac48b6a5234ace97a3699dc317576684108a21542b0a1f2e763ac604bd7069299c964d400a0aab6b42d1227aaa62880b1029812431537c15831756d3099c8322d8209a62a1b4812c3521420549b9d8867a8a4efa53ccb14bccd76742890b7c815928500da053dd8491d765b88f7908005e4619b7aff796020d6666e3a446361ce2520001a6d56a8da0e93d46c7489ce343f9e444d60590da3313483ca680fba52ec92b21125474e42ceb7b5f20ab974a9d0a384b3015146e6f37d80d7a52a2a74a53ca857abf570f6cfa5b33f08dbfe73220be43ab56e5bd56a60a9ee562554564d52082d0ec59556ef613ba51af284f69b055247ec8b15fccdbe4da1888c8a5d6a419a975a344b0ed6e797814435234e96b781928818717c7c46d4c588e3f29ccc22570cf342a26ef5a3c0b488fe2c1866dcd4bfc96b67ea6f6efecc8c47f47fbf8deff2012f01e7ebf06b118bfb5169231384e2ee22a28b0240b947286e4944b74271a716387dd2198a7b61995f675f08c267eb100523461500c614a0add0cff148643416732366422c2154467ed6044d1d37401d1aba4cd714784ed1f5bd435f11f18b02495c34e9469349c34a1a0a067dc0023f7ab36231c35094881bc12a8e75046f7639ed6d182c82594444ab8e0ee82082374746522218f4b005d7f686060af143dbd00eb41f5d2b22a4f48acdda9b37dd2c284c67d032d4866c0af0a4ba72a60975c5fc947c067c2bccc6d4b3f97c967f55fb5fddce69f92cb543c4b4a433a1bd348646d1ade8ec46dbf76e0714dac3a75b9d810b404474e02974a1f6786ea7f4459878dfd34575ac4cf6a35fd64e04948a13f223830e357dad7deb77765e3db9d28fce39b1d67ae27f685fdec65f71dbd833dd18449d6c67a3c12b13d0628d4e9b4e0da5510ea1898a53293087394c746941eeec9d385ab0d5736a5faa39de533fae3193baa7052ac14ba147ad7a9927befc8473e93b2fa1d43d7dab08b2e4da327096dd89516d8928aa7b85beb265f03dae565a037834640d22f8156713c1126f602027f21dbb048e8aeccf8708add63be46ae22b305efe826f52f0c62f04afe1dc43c4fc1f1b2cd83becad28da865678fd6161b9c01c675c65a0668a1b85bb61796e2e8c1b331686b7a82712bf3d7eaf61ebcd5f24126fbc5e4f19d2f29992430729ad140a954aa1f9477e85a16c2593d225753ef1f1e9070881fd89f98fbd9e1069306da6f5bbee32526697f174cf764450026d45058442cc9953013e189cb144a9d2213161b45280ffceb4918c99d466ae9869fefa4faff8d32b5e69d6fecc6b7ed76a4536a89fbb022e67b69919d158abd4edc0395a7fb0cc789f9b3a20eb2136922a8aa23c5a44ab9d98e27350906ec051605d81b50b21c17a21d493ef7dca9f334f451d0daeb2eca39a133d1a2086d9cf0426e53ee49cfdef9ef2a7df3b35273a6a5bf6d1a8a31db503b8baaa6ff8aeb53b2fecfb59b850fcfd707cf67e2825be5fe5267e9fb5c0a5927757c4a7e33c8179164549b4a5e589ebfb29564ae59c534ae7262427c29784b10e16851748f8857c02a85c2ae758a99c43f5ba5bad42a356e7744bd3ad4bc3c57aa356abd55ccfabd52cbb5eafd76bb56ad5751b9c9ef15caf6a375f115451b35e755d57503ad56a575cc239b4ab7bbe173a8ee8469ab253f8de82a9a88935354882db4154369f6b498a83d77cccff7da993880c3bd4067af3c751163d8d3e8d90cd59a4b0f14ca565ede274f335ff8bd928db77f00b2e8d413814ed63e650820eceda5b262cc3745d62e8a6610e25fe5a6326c614138655ceb6a89c435245205661584388ce5493720e291121b1c83190cc909a34350bab3a161c92ca2f17ec88604c2294734519c1a2e9945a4c8b3123651c2586ae696adc3052baee4443b5819df1a148c4184ca48b43cec2c0f4d5d396339d1a59cbe5760e7c8b1a110c0a25da4c2e9ea284f3848085318f214d7f223a1b88a70a89a82e18a0c5a9488ca84c3040a008868bf2920a560c4dcb26e2039c55c344a5cc4940823f29bb32e2cca453ae696674cb1c8c678a83030b03d3c7a6c3fee31f4487d0352282b6b0e366d2bca1981812c611cbe2dda432c51170e45b5ee1ffa57d84b4f22ead426571a9b2b05c5e0527b35c595e2a171330072cb19c711295bcca12abe028082cf3f207b66d7be07293d393196bf72de3d2fc181445886d39d528c36680325edd6d653034d7c78fcc950e8faccf1d191f395c82478d188e0d4c4c0cc494b8d1ac2944b12c6c6dc943cfbffc160b472352a4fb642a46610f73469adf1aa1b11494461cd64183d9c841955e7876e5b1f258628c5e00d97f23e61dff9c473db033bb65d8551750bd27654c42f16fa427f605230cf4c2e3e32d68f4aac86caf3af78caf277cc6c3007ec8ada28bebbfc4989d4b945e55ffbd741e01aa55abcd9eb5de802528c212f4612d7af5e1c405ead21d1901049a66620c7abdcd9f7738d757abe08acaf7ec44b757cdd1c67e9cd86c1c766c0a7d465ddbe2bed7586badfc17f55c397ee0377b2e1f2f1b311c029bf261e95dd5a95fee37926aed87bca1c79869ab397bf7f645b43978dfac7f9bdb6fbad1bfcd726076d8f079be7fec10da7e01d4a2d2666cdd337d218d5e15d2517f04a4c02fbb2130902a1b70593a2cd62b9b2124b93d808a6a843edf1338a9dea77623fd019502ff7119e70f6d86655de90fb634df1710e993fdfaacde5577bf994e4f68a69a88dfbbde7ef7950d1e27a14edc143bfba7fd2af47cbf57face8e2ab5b09d9cbe404f80aa48fa140f6e8e51d517a2eaef7b22542111efd71571366abea5cc31741dba5d6a2703816ccbd22d6cdb16b666e3945f280e5098d708a79d2ec817a8b9ae646a7cf7daae439f50fe9b4e9ed17ecef3025abad6fbc2e0b0b151e013b2bff01a9d761701cec648771fef8416b7e777f397eb212b07c90878964dbf5c6fdb38c86548f672db7e3383d6e4fa165e44fc658eb51d3b7abb7154da8e1eb0de5c97cf97cf13bcc4b56453f197c881aabca065a2e159f64ffb4bdf5a39dd6d98f0bd8a8275da9f0dafaa0d7fcf2b123864f9adf9f145b4e1cba2e652b222dbb2f3625a206d4ee4581f41bbc5dab401c1380411d6364229e4323d58ea8267d9eff41ff3741b784bc043ee386e7aaa9dda39d1090bddb0add23bfd0a49e0717ecdffcf13508d072a5301ccf4d4d4dc747e6267ca5685ce7d1dd6a18a667c3df245c91897f27cd35b99fc426f8cd92fac9d103464b5db2b8986dc9604e289d1f27f0e6c63c258443dec583ab18736a439ed520f49277f2ee186aaa19f00f72abc798743cc9d4775d70bd3bb351443c368165d2271dec29aa3424bb52f20c03648283b25bab5963557c0a5c31724d28fd0a07cab25b01348e8be1cb4665b6d8d4b4863540f8b4a43765d0217fe024a84aab0c80882c8c854a3f350a6c47d391dd54096af276f8b22ab2dad777ba96b63b16f476862acdc5ac7c30bdc0617b4f24613f366b52abcaa6a3e49ed05475e48fee17ab62519185f2a529565eb5dfab3faf90654859f5edb66f318baa5d36e338c058ffbd87076c464e9931f2e1fc4b43ed7f5dbfde997df226f37df6bec0dc6903db290865ce4c1ba8f67deb71f3a027ef7e91fa74ff9be76ad7ddadbbdf93ed3e7b8b6a15ded883c1b129b1446b81517282663286c586142144485730661cca0a03ac71add8113da3030e0c7b20dd6b5ee55cd4795e87c2a2ba585a7b2a061fc8f085e992b97e0cb9cb06a2d69f43f07cb5955fce7cb99e7812368b200d282998b9ee735443181a3062d5dca6228b6f2c507c080f58b89732143265f44388bcefa4cb4ed975839a853ba2b6c7da7541cd6e5ee1854c1b2a55b3361f8d4232d2178c3b6eca709e5555809f0413c196568f99196e81b75c49098e5eb5645f4c472a5108542a5c096962b0519c5c1613ddc619a4fee48bbee953333d3859da786ff2ef58f87bdc2ecf8f8b4aa9afbc3abd5b64826931e5d985950fe30fbc7d91be717dcadb9bd2323e90ad85697af0c09d9af0ea229ce93d91d7b4de7cee37420e4741e35bae6d2df74cdc10d0abcf6b05e6f5b25786d7d52b77ecbaf5fa722166f661ddda96d0b73da3f6f6d9157b676c3e7c2dac6cdd6ba90a973dbfe7798d31195566fb42c1f43acabdd8ecc96c8b180646ed83d50504fd61a96edd56affb083e894d7c8b53602b0de0357da56ad5a3b8f762884573cac4b19e574041520367c5855e6a05cc885f121a3904bdb9b474ff4cea39a1bb7603862b9adbeb1c692f55e70ae2ed46aa9715e782cd91292fc5f11ab0e0dbb4f6c4437e4ff3fd33df2c63a8e5897163b58e9e1393ff1524b45d1b96486d35e60a6c7198d962d6bfbf99b28fca193e4caf5d5e637cf050fe0e4566b3bad87074fb5b522b4ed1d25ed87ba71236153cacf0f3a5f1371965a3dd26e231fb3c1c33a25575eb81628841d560eb0675ba1040376b933327a6b9c9783d15217134456a85b50292459d520b71a3c7f4386d421b82d595acf3ee91c27acbb4faaad3e09969e675e758f84c786a843e768a03df0043bde5a8754ef95d6d07ca56390b6969550f55a2ab8f05e51f669ed5e980a9d8c7d378bbfbe696ff38c46fb05593d5f604ba7536bbd8f2eee64a39d17ef9380f600afd5e8973ae6492bdb6db7ba03624f6a16d73be3526d4113a8886e47f7059172da9e7a9c1894887afd6437348487bd89c56de886617cb8eae4cad6a1a1ad2b93c16f171509c756264bbd39d59265fb17ee0a0ad75626478bc629a3383ab9124a36ab6151b34c7deaedfd195cdb7a7beb1667ecb60c3ed89766d17674998c95acb2dc783eec43d7d57523b0b3d513d04ffad521f91a2d1a6a6135e60cb7fb84ff6e599b5065a59adfefeaa360955adf3a343d16991df2dbfeae7637ac3883f23e21b8376f037fd241bb2c210f1d42c7856441425909ff8372dfa6ae421be82a4743423f3bd43cbba3a9932b6359e6a6bca41b0d0f81c915c7d632116f6e9f3e9c5f993c8ffab497bfee91053391d1f5e3edb606cdde326d317dc78cbee84eaeb4de7ab3b6712484e345b9d25e622280a1f11783163e75d7e885f53bccbdb3b37bcd3bf8ad42e99ffb3e7e8da94a454296fbbfd536de3409c585e3fcc5416913417b4795e8704298c8a54b136d20732141498c255abe1f7cada8b92eb8bdc300c9717f1eb92e7872f9a8d76a55e0ac095f3bd6ddda86c9d60669ff96eb8b353cfe80e6bacb3979a8077b9e71fe8bf03378b758d30a95e57c65158a0bcb95bc1a53d494c3f2e33eb4416579a950c92cee0647a6e167bfca6906cd1c8f6a579d1c7883a3eb1923ab1bc6ac9e3574ddd1b3c6966fd92b762a657f2ba725e24b4e541f2ba4cf38fa90eee8ba3168cc198631c8d383bf4aa55295d445619ceeb9f9e63d6b274ebc6aec591148bd8d3deb63d5e43a716259ce071b70724e25b07b2dae02d4b05225d2dfbc2afdcdab208fab0aae138dd499ae339ea01aa903d3357ed089db9aebdcbf42a4446bb312bb662d84ead34eaeb78edb11ea3d21030aee3f80d04431b0e6cde1522b74385fc83ef2386710394b5613c855bc2b9439409a6168e7116684df92b0707db748bf20b9ad39b9c010b864e756a10c7eec3345811ae09861484f7c456e5784e1f3e2d6c06f2dfdbde09fe0c3c2ff90cd4325cf19bc363648a558c908543bf8a7db6e746e9b3c369a4b26bea21bc233f80f666eceb92903a66fcbdc789b91727337cffc81e644b37943ff834432377a6c32f0fb0f78a4613486e639e5df85add643ebd9a9f3753a8ece48f401a6ebf0d0069dece76bfca4f8aa075f0d9df124d31b5dde83a8169cf18244a71fe1303a815065533ec41957d946cff0ced57d1eba7cc36968bd6f743157feca3ca09d3ba70df82ed7a09c0bd0b786ae53fcc8ddd6800619ffa0d6938b891bfa9e3d2d8f718decb9ab8df17557bc44b496ebf8c75be90e7bd16174073a7ba11e9828165660bb1218aeb70f383be9f0a31dc0930b4bdba19258486d0796ae88fc16a63616178d2f14124ea2677fc0c4b344a754c3ef799ce8d4b2bd13006ecd9d9747daca09806aef3ef8b755be2e5c738d826dabf1e46ed8bb170e35ff1f481e1c125950d5a2cdafed06b0bde6cffdd8d572bc6ef175f4530237aabc21ea453a84b197ce959d5cb934c1778d7229ed702eba47e80b9f7f7fa956abd5cea36ab5ead66ad56ab5eafb85f3895b0dd647d7f31ad5aa57f5bc9a905f75bc973bd16fa19ff1f7228dd17680f31abd86162ec26b6822900c246484f69687d805bc7ffe99ade4feff8334aeab227ab58c5bad6055002c614288a547b366246d6286b1c9d46c9eaa8aa21185e296c195c208d578614c229a95318c0463312d936530bc6ed95ebd2e2343daff3761186b9818aa1a51b5b8a6aa1a568882554c23ba162184118512c23061980f2dac51aa1162aa34aa9388be0644c57cc389eacc5028c30ac10aa39862fe74fec7840794c168f2cf32aea9aaa286182b54c1aaa22802028b6a04638d695b92c20128fdae449aa80651645b880f1625f0ae548cb1aa32dbb2a6865e97feae6d796eb3e6b6a5b27f6225441330213419219a2e20b554371b891145740f7f22a14cc1fc9e3aa3c9487c286a320042d8c4a86e62a2fa61c9796b854f133fd05416b6a79941157439baead57945e2d0aa59e9d61c155881954b70215fc2efcb955bbf2ec4a9ce7aaee7ad5f8c7f64733d58fa6b6d41df9fcdb8d56b1eecb4d969b5af77d8a776a3c2e886ce85dbf765afdb4740d2d3251f31ee877d9bf7d3ee56ad4c066cabdfeedfdbb46d6d7fe94174163db83906012b4681a573d20a32579e03499d1572e3a2c44e7f2e57e6a0b0c01b5c8c42ac2d6357db2f7d2cd83976419951b14232931ee80a50cec9ec292d69b8ae91d43c16c16f27181c059347ac897472cc1a542de65d7aa91719a003e3662261463480442c96008f7f0f35ffc2f3c0a3e48ae930ee9ea4c2bfca2258557184795ad218224b448b25acc8a0aa2b96459cc8de64c44a44e2e3d17a3c1e8fbb2effae534b1d1af2daf44c1d6d4797a04bd1fbd187109a282f2d575a1d519e868b6a3f27a319df358a2b3d300758ba1482e992cb64d828b855aabcda09e8152cb5057e0e8e00fc926018004c9e258cf6edb0878de8e73d0faa6935a6eb4ed4b4753d26e1ed60bbbf3e314c74955984f0b58712cc08d13051158ca11c60ef11a211a2f295495134f55eefee330a5144177bfdbaf64cd4d0bc2b3e42a5d531315416d335db00aa53a263b12412422d5dd5315feb542ca0fb541ad35461aacc449e588155be4130d552bfe67928ec03994423681a2d0bab8a8d56e785b05b6428dd2f1fd63b0cd087fd60bd87bac2fc06c75d2860ad48bfb520e16dc809eff58ba88cb6234473858a23d0a6a5a75d3047698858773ae248e4262acca93839589fb9f7f09c62aa9c3fca6978eb5a661494a1e6fbb5886d61158f4d8aa08d2015c69fb97175e6f0e117ddbf1e7d3de5fb837299673f914d12955cf22e2ca0f3c17a4f4bf6b3f5994b7efff75b72515f579342bb10b297f3e5524b78e148f369bb8dd9d7494afa415d826de2cbf3fb6e8a2f4d0e0f4d1ef9cef382d77abe2dce6ffbf0839737e78bf3ce543e5b6dfefd0764109c0f74b8ee072efd9df1c3ae45b7a3b72234919674e79258cfc6f385b4a04e13825295e6ff2172968f18a7d8265c798787a858017dc968212132338be9847d2103e0c60900052baaa5d6d600d289077d7256ed2476558b69b6d95caf9e00e8651efcb56facc28b9c44513e0b87200d056ad08182b54f10b8cdba16a5211a18f20ad6a3e4bb1ed8ab00cd9fc37c4f33e2301e5e01a14e5b583bc7f9d97650c3b6076a48befdcce92f715e5c1cb7936d69d179040b4c200235bf237fbbf9c5413483b60b64a9cd9cc1baa4dd9d884b9dae908d1e7e6160b792cd577a9cdfa83fef04a1e9a15f6fd30c0aa2684ad2440e2e15f0066954a02968fb2b8a4822c112d5170fc805f000ae2011558df40ce947ffaa3ba34a222a8b105118ead00405fe5cec893e90ed54f3dba24d8b533e04ea9728998245b1287c3bc8abb6af401dedcccb76ee865c656cb30099526c414b6536b61995e8af604851bc7685aa1bab0bdf04af67ed5a75ff77e0f5ea81a0776a7069c7e92e019f68e3c7441b13e80c7a02bd57ca16435b702e5dc2fdb6e08d4842a59e00ba01f716fe9f2e95257b57812e054e2ed19d717c6a0408268cf28dd1542b36d52935f87fc2774d4590f62a2511c692a691609ac5971705e715b1b30bd45cbe97f2920098609d525365111ab11963f5fbc5cd097c58d290d16432da4e35d6a9ff0c00186efe96c214ce8571ea80f03a4454d5545553b23418635d552d4d8bebd4a4fe8512f556e11761d5543977a461a2612d691803968b19dff8e16dc9a85c9fa2c9e67a3b8d50284e650cb968015d8a8ea2dbd039e95ddca19beb0e3fbac1dd785c4d773a1eb629fb720bd4ac0318c1df72db96066d95bd5c1078455f0a2d37961de44a980471dcc63d0b408e7c355c902f055dfe05a1fc9a5fd6b7926b5d1cf691955e0856cb4e4e0bc9cbbb227b5672e9523b2e55bae29443410f4574cfb1c418f5c5e3e55cba546f8bbeab9eb7eea37581d76834eb506daebbe2af26f08f9a55cb7685bf20a7359a559e06d775ab6ed5edb4f7184557a11bd05d5ddade1e567cec62b52952b450e8a34de9b9ad9e63a3fd352a97e96a8c19b6fe836e355bb5d776fa4222dd5fb5b27d465188f2c246cd0aea904769288586511ecda025b4822ee5eb90bf2f4e849c7927a4136f609de6547213cca9141c164458ae14d844ce3f721ff6bec2ebfc5f983ee64452dadce1e62dffe035bf2e1f1f33575760f57b87bf77f8a9d5157ed8bce1d1c3b3509717d585daaba6a522ce98cee60ecf7abe0a2c12c7bbbfcdaf3abc5b1c34ffdbb6c36f96a53b30c6b604f856128f3ac746a152aef840d50a1a4a190976f67fba7f74db4d6ed5736f7bccbbe5acaac199d490a69ebdc57bec36d7abba37ddf647eeff3ccb124648667b097a734734a55cb9941e01a7e86c882128f8a7dcc650e105897ec297de72e94251c87d56382417fb72c0ca1fab46327aba3d0fd37a26523dd60104ffd356766f1947f8167f1fb0f9f505c5d0d36fb25ae6236f4a6ba6b250ef1276fcb4df09afc78dc27193643f9eed4217ef9077944b69b97ff922d1619ffdbf98fe9253311d32f519171254fe1ea0d62b107a95c5753dce240f25d3d57e41d35b65c1eb285bedd901154c081601fdaee3a94affaeea55b2632d95f6a415614b7aaf8887ddc726346c43cafc4c61ed5e94a1ecec8bf431b7431a8574e8fe01d2c1acd569e35612a27e63c030c497d7cf43fdf0d9b3870f9f3d5b0c9621cb0ed935da618c84b6e63b9bcf67d56c767bc67132dbb359b8a1af77bb276e7ef8f05970837a85d7bb765cb4fbd077d1ff104805ff5b31ab980c3ed302e32abe7ab1fa3c5c48ac5e712ea097164bf5db5eb5a8992a58a558557c51b3c2cb739a9025cccda4da2c42ff209365af5dc01e14a7e2c19d12f6831b44af6d0c5898ec25815669d28a0f594697045a384d0bf9b9e80e45513455b5ad4dc4db7b5e97ceb8065345180805138550812a2604ec986c22605708c142141f16b047a6874e77aece42c2102c442d2ca73a2ab66cb27a219607c280526702bed3aca68686529f3fc3bfcf2cf0ef3aff5a90199f4f0d0d417d28951aaab6be3a8f82f55bf8df6c4168820f6cb16e94973809d45a5296617de44d572ecdcd5e66a78eae9991546aefdcdcd2e0d2d2dad1947dd9ecdcd2956f1a19581a5c9a9bdb9b4a455007f6a18306394f1ec45e0fb4426def9444092e06c1c81ff7d010d14bab552f88c95ead363771976af92a71eab8ea356b5e2be4a0f03ffde945783789f68c0a3b9531944467d14f10b243fc5cba94e01c9ef31bb275e95e12db365b372161da5fdd6ddb3754c773e91d3e4441eb845cc7cab98dc15f5a0fba1e6b427e1a51572639d7f82e11078552835029bb15a14908353596308d84c67af38a58c57cee12cc79c5085f5522b61ae215e334666811015727b849a65a4c8f313542854e6c0200087f0ed6297f0255b0420916615a38672804bb0a56991a338c0455e956191a26c2b484a1c544f015ce5052152244c50a0180b17f0d48d5e967b05830095ff9381bab46f9b35944a2e7115fc4acdb866a512940f6a3b110613aaff15c819ba1512d6d4606e3139c1d65a4a81b0a6083b1b8a14599cf2e2b82a3a551a6c50d2a84762297526269b4c5518f0056144688a91971555535a625234692695195ea7c9df623dca8713d92d242d890dbd0f5c212bf1b4ab5a54c70ba4526b80b0635b07eec6d43bdde7c29986107825df840cb8ff1585746f32531d38e755e520da6d515422127a4dca500e67a2ae0453b73365cd2815728fd72f605f4a76c725818eff4c9a76350800de2fd9c5c34f9e7595f24bfb53b03ee683e054f249b2743727deb3bfec9a1eed2ad8c1ad8d9e60f216d75782eb4799113e85611ab36b0fe610511d73358f85b10ca016b2bec27fcf95b743afd51583bcead884c158a730bbf6e9911e5766ace50e00de6faf6048d6824938944bd2147bb8a6f64aa4e6e3eb63b7006713ee8f85e2adfd8b66d51da1eeddba6269647dd80fc13dc6c7c508fc7f5c1f8e87242dd01440451c1b06ff7e3beebc9dc9cf487b9e6f871bebe5244c4181e428fa167109ad8ccfbdb595a28ae808c4253ee0a5a930b9c5c7d89fcc648341b23dac87036f27b6981ffa78be27a56909d0807ba9cb80321e0ee2f63458b6b152b97020c46d19d5cd9925299a224dcf84865806894526b28e6ee9f72e69dcca4cdf374a260388f2222a2e4b819b3ad6f504a698d4454a188101b901a21de14277554c548e8152b0643132b93d99988e95802b9544fcc66555d6531161fb686b61914088d9b89b92c352896b16dc66226ffc909d4e69efe31950eaf97ce98d1950ecbf4cea30bf9c7347a3ac1d4fb3acdf4f28db137b1e9eac49e9be8f07570dbb2b196634ca75743291c5c71a30b5c6303bfd2ad67e0f5bb4ce2a3263ab1aa5bcb6d971d79c7b95cc77510b87fbcc1ffbdb2c3dedecf0cbc5fddce10fe415bc358a1eda01161ab73848c0e4c54c7b7562aa14bd141744d6009cf6933dcc23f4de7d2a54ac7d1442e5d62ad925d1880ad92761b1fb52ee04e8ff970a82d5cd46ab351ad7a120af599303cea17c2c0a9ae8447955d5475ab3e4eaae7556b1213b51dc541dcc23b8f24766acb2e0f7e0d1f416be81684260a7cdf53e6600644f42fbea8285108548b0252705419819dfe2eb95b7c2902607079a9e02f2f7e88c74ecf7906bfceea6c5b96c4b4f2369664db4a7a8c6c99675a96530a599dcdf253a55911bf8d6c5bd26324bb8d6959953cf9845432784415b167a60383b4cfcf96f428dd32c7b42c21e2e634aa97b7f977286bfc0e5afbfe5b684c5b9c63092d2b60253c81ae48e9546016d7c26415fbcc4da8b60926ebae6041ed87c9daa21617527d31597b04f3dc007cb26d98821117b8ac1a70928cc96007341189b8f1d8582422805931d18028a03150408d1ba00e0fefd375055e54747ddff0373c5f81631c8b2693d1a37a2822df067c561547344e9681e59a4425d100a0358ad92600ad116b381d00b45ed99331f5da582bff1bfbf8028653cbff6c7dfc459f69e5e3b4cdd0529d2f4aff0bfaf8dafe6658813f531b37706a735fb742c7515f4fb7b0935d58e71ca4ea21a19382aae725f6cb90c0d3d99452e98f0c53e80b5333d7e7c47fe88d5273b4279e4eb89e17c4fda19bc1e9f4c3fd81be08498ddec03f5e5f381dfe4e118275f09083a6d04e19cd2c1c8b78a4adc169f913f821b3c6db61f97df58c97994c2627336b274eacb552ff9ec5d8e4caca248bb1682cf63bf2272a33c18b1846e4c4dada89e0f79f14bc3239b982157b7ecb96f901ffd796b942f714ccf363a88aee410f0473bdc0e7fa7251cef585e5b224423787b65ec8f49de221396d8ef90113e78037b93202e98c0adb8628f0090e7ce26a0a4c2f2b40741c77ad481bd53a98d912d6da9fda1f5574fdf2e163e54387cacb070f2e7b13837a5c3b4ea8c77f2881bc9cd98a36100dc0adc13e5cd4a20c14319fc966a0d6e1f9fc8100a1b496cd53721d8b57c4b79ecd23408df3eb5085aa402b1e57196e712db6dc243c33816f01b02dff17aa96d1fc638562cbb60cd82d129c3e0b3059a45fdf4e7404a14a083b66270828d84b4074e230a454daa59a6542d3e717484b08d9aeea34f259379b175f477c334b980a72f2d9c07ad2158c52c367981a8ab22e629479b28ccb0bb94cf7fc1c2f9b3fe367e9ecaf2d5b67cd3f261ae509d84d342ae3a7c1afe00328810aa884f6a26bd05d08557cc17ea6653655e8ce11b2bc4a189d21bfb41b96174721938a813a3e0f85f0013fe974675465ac3ebeb7960f8a839bf7f083f9a9c94b9209a1d28f26934386f1ac9ed5e3fecf1d4656df631843fecf7ae7618d5f2483001e2cf3f49e9b793a91bc64722a266e178d266fd0b3fab38611f77ffec230f6e85963c8ff59ef3c143ebf0d68081ca100ab2180c24a9402c6c5df13ebeb7c38f28778fccb8da492205074ebd1642a02d5a6ffcb4f0676af701e6a680f3a8c6e93484b85ca725e2a1472a1952a08e2a78a51b5dbf75f73a4bdd33cac8204ac5ece17c2de6c05355fc82f5796171d1199a4901f67f0b394369ab61493a5b65aa9f9819db78f129d24b7440d50dc415d495a4933ae80b33834b8945194b8615b49458f655856b7b0a59ff25fcb9f1a694a99e1aeb906a3346da427d3ff910e2ea4b66b2628718be9a56950b6d8d1b4aa25f4c9cb874a563a6a468c886946cc68da5a8ce66c15c7cd8a99508ac3b63dcc3fb753d53052241e2769dd50a961483bace4f98fc12fe0793485f6a06bd019f416e9932542678524312a5fffb09a71329cc096bc780117969778ab55cea4679ccc22cfcc17f24b95659a57e5422943b65496f395fc384f679c4ccabf60b1b2cc29f47c81e67d6b475160b9b29c8751a12fe03bb760893d6c599683932349ec589685bd4feb863ea84f2493c9e4843ea8eba00f59d168141c6350d388692896a9687ad628d031797a301a8d4607c5555b6d7e55f35751c53488a665cd719a37b2baa67c5de84414ac114e34100d2b4247721e590ec696b57fbf6561ec58803eceef694c2cccdf31bf3061e8faa03eb475eba1ad5b53fcd1831adb69ea59c35434f7913786ce0e85affa2fe64ea60d1a26d1b28fb89a621a5914b265f51046363a851e45ef42c84e8f9527c6e4ea971b936b9d23e3744bf274058a4bcb95c5e5ca12dfb838bfc4df5f984415ef4f44504e65d202f736bd02feee550ce42cc5d2c252a1c2c77631a5cec078be5c5c5a76ba8e7df047be0236f9f7ff49064d53212aef290c0a4845914a89257085793e80388141610414d31c24b88ef7049141425f80d6d7bd7c769ddf7c3d9bff7f3593128d00605d5514a01808260480442860507522bc3c741530108be7134c00cb731880304a4d4dd375ed3d1b549ab2af03b98a8d46d134da897623644bdd497121088f971b579d60c2e7c6f34e2e5d2a4bb398ee575272d2a5723d16db1a8b892f01a3173cf0cc11d775bde63a088bc2a6efe00e0793c3c395542a95aa0c0f27738b8b73beb8e0957acd75ab21e31eb75e97bca071fea3624f71d01042d48f93cd444cecb1b22f6ba9b042c561a0fcad61bc600c19cd1f1ac6bf02e163f8c778df3bdef1d453c3bf3006f5e70da3f997c6a0f13224a3968d9527dffad6273b7d2106031c1f1aa89744af9416451fa55362d88425b395c01baa2f2efa9133678e1c3973e68c00f5e9a73df644992347ce789e5b0fd56719ed40abe80442302486ec783e0ccbcf67c2f2626904fc8ae5ba2a9d710248b5cad2f24e5f1a30ecd39e333e409db0d787a3901ad5a8a9ca5a40324b4464bf8df5cd4cd98b027868832d906bd9f01c2840b24990cd514daa8da6c09eca6c6c31539bcf786edded364eb2dcb09d6911ed478738851446300f5023c5b6d5b7e9ce789ed305154e26f01d8b930a51c8052193614a4b302d42ae783dafab88a93faf1b1bdb6ba68ca3cca4b3065f479d157d50378cc3d4546fe49d00bf4b0c4d4b9bf4f421dede881351603e53cc6e6cae02ff82d25971756645e72be4614abfc75fb66fe7b72ee45d1831648a282239699d9cf64dd2e4a71bcd18075125bdaaff576f0a675d684493c95f341a8d7a1d5cff0fbc6494130cc92854a3c9661ddce67a8067153cbf1ba7af2f461f4e9412a5903760d98fd7d17e38ef9f46d5f51a75f107b5f0d3051adf79c4ab108058a1ce98042b9bcf417bd3a8a2fd26e3c17ed146fb4e4ca8f609432a3188be28e2195e8fd08430c7cb8851c6f77b61be27912c79a2c009d4424e4cbb392827f8745c6cab327de527e7799d4a21648c310369b8199bea34d515051fb91e2b5827f3aa81cbcbd854a7847dc0750f4d99fa16dd34f5db6343914846d7a394d288a93bd17100989fff722cc3c45f26b6effd54258468f4a6b3c42084a8f4b2cbfc9c33cfdfa719a06b7089c6cf988c250d3363d9635133aece8072c9e2bdaa4ad3a6695355ad86e6e801741c3d8c1e9711677df8b3181416f2f3b04109dc69a75672a4ae4392a07e42b8fae7ca61adf085200fd91014cb43003b8e28a0604d9d62069e5f00188f3aba19a19446753d63450663b7f35edaa29b530f5d8779c14966e2e53236d81cd1b1829b7fb36f9fdf575a1a0ef6309d7c69e626aa897e5bbc448119356e5ae3b695318d2413f1dc0cadf955cd30b4d3cf9ff1cbf9fd6b10d8778b4ad5a469a679fff532a6740108803f0f02ffb5658121d277ace3fe9166faba9fbda16768194aae98a21b5ccaa4087f435899701db3685fd8737f433dec8b0f445c102e081bea76e526d0ac418e14ab6fa868f34f37890f35d521730ec6f394b002f1fdddbb2bd9b2196cc979f078beb0305e0c46786105ca81e03d9d52a1ba76226afda7b0a546d0c1d33bedd981b51327d65483023548cc61621b1238c4503fb136306bffc750555bef706aa7153db1b676e23c124426736244dc4195c8c52814c73c8ab268195d8eae478f22642f669c5568599086a12c37110d3a0ecb454180f3663a639d67da97b34265ae7d496ba90eb6ea392854b7140770d21a5dcb59b66dfbe0277f4d4da646c8e3f23d9093d3be66f12b234074ea0cf05931d67c82bf59e93d7ae2cde001a6cae0f6519e29f171f989ec40748b0155c61243a61111e6c6ad78e87f4629a58ffbc2f793538426f9bb38324218ce1f5fe0f7d975da101eb7025b68edc4b0780836857a5842eaf213b34773386a489e4508d03d144729e48a184ac81e5bcca4139238e60b7cc9498f95c391924a7dd26151afe5424dbac38634692d3c592f1c5cd46b3436c4440a11fb9d71509d4da20134da3e3ff66c1076ba17e8ffc5dc534636b8b87b565d08745febc20fa5282cbb58a7c1d20610d930787862290f7f020463e192a19aaa0403eaf25daaab3a0ddbd200b22d197a406a79651a3ca97b6edb389c426f428f214465854ae95cc86aa9657754ee69e094ebe90ed3d3d3d597e325a4fdbedd715428a573f07b84614ce1fe3a63cc8ed0880877a3638201b0a2a8c48f9f291c56010ad23cd2d258c230138c73942ddb27df74c8a054a7cd1b37a8916bb5da8880d9a45be3831133ad518d129d5243a596264e102cefe5bbaa5aaa61eb7a8ca986e44c791663115593acb0ce9959c2305109bcd8eeee9052db6a781dbe7118d9681cada22b11aaa44be5822f01e52414673827c2acf9d272c14703efa5efb43b8b7a5edb810f665b8af77321423050de4c1da0e63b5a253819db464a0b6bdc03dd406035397d0fa1cd0e5cf8f61e3989f60b4b1127d0cdb2f49864b083d58237548e9551a86c64d0ca61060eae354612c765ad4f567dff56af6dd4c4b31b3d088c4f58097c3da1949eacfab6c9f2553c77056fc73daf6ca4772cb7d39fbe82ee17949ed82e4acb8b4255b3bc58b9c87655da10ef51600b6a310a627319578be36df4a5744a95ff595a4a6938691c66ba4b50d2621a31a830f4250c1460d749f5f4c95bfc91b6e677879f9dfa538c4d9d30653f5689821906cc082884916dbb776fdbb65bc42ac2000a51f6d787a7a787f9e72d0af8281bc0aea39dfdc63919bfdfd21666448b1065bf82052087b868f7ec366ff72c617cd121e2791880a878ffeaf4f0c8d4d4c8f074c7f8d8fb2ac687ed8ffbf6e0bfc4c7c9df0930c50662eee663e3ffd074acdc849541851166dea86093fd9737460798db7f6c806d32c294e3571315e73036b5878e8b8b3bda70e855b461776b548710fe47424d2a2f2dc335e670f202e3fc1efd39f12a744a5311660a6d3af588c9a249fa092ba91ca77ddbf44e23198d260d59565c23af4f469919f2a9de869e1158082350da01a58b1ce8ad858b8fdd404b1105960e16b33928b0407321d026f2126163152a8540f7b10a95b2e4148761049c4aa0f1e07d1cb21484d5f858023372dc1feb7d7a6ae4f911aa69740408ce609cc4264e139d32750bd5884ed2c4240942d20a564628637444214a1ae30431488aea44a35b54463592c126491292c118de16180b9e52d5ebfa8f9cd16f6b34eb3fc2108fc00486654d30ce10922406c9108db48a611327314e2b44f18b1125542cebdb2a76e014737a64117908d1e075f8d418a7722616334ed1df7b8b2db56ca5589123cf09e46172cc6d0c87d4e876c61196d76de85bcf2774849013bcf3687d834180cf73843ce014543b5f879a90712d09f43956642bb05d91b6ce2218b2ac5fa558e1f9928e10f9ce081458096aa05471dc30e2b8aa40385dbbe44d75cc9475ceedfe57e1b3da4abfeb3d1223cef7453928705ef3857481396c04847057ac26ac6d9d58b473acd83aca554aabb0d3471108c271f85d9883ba47181e8bcc0213a126a7b6830fad70cfca400018ee0289e977eaaac669f351273eb722f65a4581c42e11bf59f4e57d831ff0611c20e5db5f624f3306b4b4c9a9fa811c99766cab13afba8e8ea26bd10de81ede2a6708d2a985624a4d1759b0918e05894271295f2eee8272255885a416bcb20bfc19971ee23c4f7104467d79a9082b494be55c10be84af53a5b1c53cfc38a2c168db0a6314b488994898e3037420e28e09413f8c8db5f0499ef4bcf3c8f3c073144cce2382150730018fe06f46585c0305c3ef0e8bbd57ecc0c3bf0bc2723392b022c9bd1187687c7f11431440d1f080041f39e5795e7589681a59227c72b465fd499441593482c611a239674cb438d1a2320ba5728e7fb02fc683baeb361bae9bcdbff5e69bdf9abfc1f3bc5aadc1bf5ccfcb674168829b8d6c9e5354cd75af5a9374cef7c43c9c12189505393aca459fd71c827491bf8d4c5a92c1a2f7979677c344e0ddc9fc95dff74c106fa19c5b5e2afffd22600c5b12330395c30056247bc3e569a0640ef4c395e1453bb31d30a6a43470e5add988c53be6c92b00eb54c1f09815bb7259c17e50427b2a337f6cfb71200a33e9ec23cb5766ec33d7f092cca4a5ea25c78be9299befdc0a0001d4c1e325d0309a42bb3805674bad69c8b20307b6bbe954467e3b822ba8b454dd2d8b0f7f0512c7af8c6edd3a1ad912dd73f3cd7ba25b4a09db4e2cecddfb91e15c6e783897db23b3237e213369a712c5bd7b61397bd5dcdc55594a6fdeb3e766dafccbc14b73b94b07c981c5c503ff94d99bcfefcd642e9d9aba74599ca6d9d7cdcc1c1ea2742c54ac1dabd613d8314511f7246cbe22dbe3bc8aa6b49a21ea3b7ba136f8b5a7b22d99575fefe07dfc666fe355bd81d7d8f3d2ef34b0f77846a2c6f2d563ce277aba59c4524b8ad4c54e4a23bb36d8ec4666d277f49391ea7341891e6e327350f02907687c4e4f304d0723a1325582234454d5521323a666e2cb8112356e1a035674386e652dcb318c84aaaa8293dccd17a01fab11ca7951152b0a131155ed8891d2f43827a4f62b14ab49d3ccc6a26e223a1c8d6e31cd245399828128db04efa71045c18a4ed598c14c4a34c1a12b1aa351438ba9a6cd34938810af86ca128631106551a64654bec82af29171839a844ae697f3a5c2db04d4881a496b5ac4bf98b1846966e32cca0998306f26e9bb7de87669d153ee4651988196ddac3fc8240312389b5516964bcb612fd69cb3b95a62c7ed39bb1d77607ef0c0cce1b3fb57626ee2f0599e2f150f5a5c03989f9adc9548c88c6ac88e3f202c6a12ed646172c56a872818ce9d3dbcfbd61465670ff30c5f8301a066327b67668af2b81e18ee07544d876d9bdf2797a383e83042d0a1736102fcabed78d79200568a81dc90b569a99601d32ab42238058a994462d7e4d43c8016d76406affdd9c30937b6b2ffece1990383f3a156e56edfe10a659b1f59ba3833b337935101401ef35287cf329aba75f7e1b3b9e15007af4c2e346bbe8e0dd05e9fe699400852817261395f880a2bb554c6c94b2ba4e58c93172f150ac9c4ce9d97ef5b32cb2b44b75d7d2c9acb8d170dc34a4e0dc440c98d8f437d6c29357772e7da6d633bae3830bc90c7bab56bd81819d933384455d5dab9b878d4ede2a113c8e594ea840f6f9b0ef4e96385319ff61885522ae35c500a70995174478b862a497db86cb6f913dbf29849978f59e6d77bf0ff8da1ad5b87a4ab812bdcc62bc931195c6923d78ffdf5d64514592889d0c4985d724a4e21576022ca7eae525250b3da703d37eeba5ef588eb7efcc91df51104ae77e688f7ec82ebba8d462856878d4611a2fe7c19e7fd9e9333c91e014706606109402bd3d32bd1e8c4998307cf4c44a3fc68e1588e44aca9e1e17c756266e6ceeddbbd4aa552f1b66fbf7366069e1fdb66cc4e4eee77dd6178048531ebd3680295d165c263209d2be7fc8fe8c252bab498a15dd2a5b1aee35cd7b1dd750ceb5ecdab79b655f7049049dbaae39956f20b3d8c3eea22c24fd5b23dcf7ea6fb64e717d4dae9b09c4cf591dfe610aa3815a7c2c6ec1002080ba5c74269184b8f094db1db6c04cef481db067ccb4f349f01afd958f76a35af011b3de2834fb3e12123a4af1d470ba8222477d7a09bd0ede8ece631e51dbe078e004ba92c27b7c2d2081416334e6e556c68fc8767fae8d87350764a23e0cc41814fd652546c68fc272777356104d13f3afd99ab68d4c855ae569487f936f1b0a278f111fdb43e326dc4c85589caed2abd9e9fb89eaa83b268e2f78202517a55a2723c38adf60f705f1f9c899bb38f254763b1d1a4f87e79716e6ed188cf0c8ecc7e2ee1c6626e427e5745c9916afbf4bdad730937845551436842988f8dcf0b29419af323fe71b02e30755c480c56a152ce452106fe714bbee21b4170faa23c072da388601d691b470868c6dde01f074b39fccb215d37b2fa5e4581455060af381ae48360481834ec050c4be2043f1a12ae8fc5ac3098d80b0065c0b0571c0df16b06055cfb5e50a024aee14783e29aa55afb7e1bce85ebd0e77e9bd6a1a3de3e5d26d7a5a85c1f5885ff730a4ec101d76b3cbaebb6f16a75fcb65d8f4ebced6d13ef8e3e6dd4ebc6d3d177b73101cf431da96837ba0921bab85ccea53236ebdaf92b6d13d7319f461540aa95a590a873041cd63bcaa5a4ea0065f3b5fc3b2c6b2c39b912b33c6bab9d1cf3c1919afe1e794505846f9153886ff57cafbce993447a3f3ceee37f09c0ed7f6d45222b8554cef2ac9815c98627756dc771b3cd5ad254ecb3bb396990a464eaa4efabf238a59486b07bda3e66c7d0ad223a48589652722efa085ee3750d6b03b05dcf2fb8e8829b0498eb40cabb60a1701cb46581f527e7a3a4f64b736dc1678b9a6f8b3e778314c014de7697954c5a77f1ad7ed1b825bd05fb6f172fcc71e2ed56f98e49f1166371d42d1ae2e97c9b4fa6b1af4cc5c55922d4acb7ca4be9143fdf898973ada0473841e4f0b5785990474cd0bdd27c856fdb3ba120ebd4d912deb0a0806808e3f7513935750930b886aa949ca454cfea9402e12cc6136a84e8609088ba7cd270226ed1781befb2b71945d748e9f7adb44e3fa19a9450a0541fd429b9e75b861391054caa8321ee64124a2835067542eea5ead621d97e42eea6d4c86af289a6fa16d5a41ae8d4542bf784dfcb11842aafee7de49cb60e23c4c3b5d80456fa94511c1d5d3476a7b728c257ce0cde95b4a850c9c26ef936772fc8f3d2ae686e0113795ed992f61a177c8713134353549ebd554c70325b6c0d8e743278bf729e9ef23133fcfa8715667ce328f9ad2d6d7ca3a237841dad78a39532eb1e279c24ea1e2770a57cafd7cf100a29d334f02da1d14aa7af378aae99d2af5a514da2834e236a4d8d104a8012fe2a291ce4a3e600a5c6169d2f39f2158aa2a65ab9e2207fd3d3e2660c4b7843de33207a7b6a68abbc94bffe8e4b23eaf2158613d9f0604a882a9e4b0e86e2bc08adfe4488cbf625a0abd09aca5d63a6234ccf320dbd544af140fadff299fc6fc3c362f61e69b2b1f225f9767971f97e95b4306be818016f9411aa855b4f887f652886d0440c4661371420f8ade56fb8219fbfe186e63f2e9c39b3b070e64cfdfa02cf2ac0f5e2706141da8948b9691b2b6f3f421325e1cc5f091933ec04c7b74264e55cbae27f68399786cd74515e753b266e322aed027ffb41cff3dc1aff83da3ac47a68a1aa971393de38dc7c49180ad622a97b329eebc7c2ac8a989750efa388429d762f43681a6d47d7a05b5b239fc92db9509132a1821cc805dfe5c91143df77a3777c31987d9156c0306b6622918c99898d2793e3b1ccc15daaaaaabb082187832c51e085563e79b89fbdf0e0c4c4e0e0c4c4242f248b1fec738fce7b9bcd57fa11a60d71c7c1c1099f76f90cacc3f388a1241a460858419083fe4c8e41b932e6a4c5e2bdb45c81af7ded6b5fd2e2da97060074d6f87673efb71b4c0780f9471fbd9b90bb1d4cf10ff41839fd8b279ef8c56912d37f80290e300f3fe3c7449c4797f071d5cbf038c4d1a6fdbecfa41c5125c749cbeac8f73611aa54a397f9dc47e2a9c230c03e51dfefe8acb1cf2a6492635673cdaf722f4ed7b40a8e5bd201c336de9efffa36d1966d71db32ab1d0d0adaf33cb25046c47b41137ecfc96a07b52d852a3ad1a95a3a7448d42d154fcd8cbd4f678d076f6cd56db5659df0a3795e91885570724b4c7949d4e7c04abb2efbc33a2469b75b475b918790cd99831cf36dbc7d8f70a7255f102bf3c426d3f5db0ac5e50f56d62cfb3fc5472378d030c6a468610f8e1ba761acc77c852a66b854b32d3712c15bcda1d8d495bfcf6bf7fb1fd64dafef44d55bf51e431eba0add84ee416f84dbe12cbc434a758346ac4071874f47b71b5172c47ab402c5d6600a0da84ba0320de505214729a6c68bb969c8710e680794f8c8ea70ac0ba3663a016e6abe9cf3f7b45c31d7a1af6de968c55be7d52aaf403118c42b502c2fe48b3916857910daa7692816722c971a0f8a2c2c05c35ddabf2e2c96732b5064d390932adfe262aae8cb8097c6cb72611a5725282fff5e11ae2bc1a04a8d17d37ca916dcdac27831b5505c182f8e0ba5f3303f1b708e3c97f78eb89cb32415df8f4336a8109e93e38bbe10eacfa87a908f85861ed326d6b6b447c27fc3d8cc0ac85b8a31a5185f0e202c579529504013f6121a2c48d309484b87ca83e5c91500860993c068518c230274292a908b54ac2a2c863108f32295ffa88a822900533410f0680a11f865aa4240587c8078548a5742c58a9e34a84e15a2285411f84bbc7c94dfcc009d2aaa82f1165133a6281011290b30014559993c2000d814e5528235910282754ca01a73137c68679ddf09c6f46598660d4c28c609def421828744eb35c0fc1303a0fc90021c0a5c49d75726a94e0856b012030cd12c26040f12aa101ce3dda13082c55385aa0a8b1ba84c464111be590463109da0016022e18831115629e23c889e014561947794aa6cf1fd8f2c5124823153236c72652f283a6f9caec0497e1f455134c084b4fdd4eb6811bd01bd49cec121708269585e5a2e2f2e9756a1b2c847bf33b2614eee04facf64daf34505c34e31ee00ab04ab5421a090497334a1eab43d08af867dafc1a007aa66c6a406e56fd5558834d451a6cca802478257fcfbafd1980785d7e3098194e70bafdabd28ecdbbb56e40ea211f317f46ed17cdb5a4b8c44a1dde44ffcae4f2c42558b6b5a5cab4915b16990d69a5b6b91886dfa7049f8d4a7329b59da4869516b81f3978742ba54aeaf4c3ed73bbae6736b2784685272d6b57aff689927d6fc520dcb6ed46a82ff927f0a4295ede0f32a48bdebae818f7de05fdd12dbf577c8544481efff8774a1fd7bfea30a405d78ac28fe1d0021f8d0f9176480c6f3e71508dd5d167845091fc987561541e5234ff1433b2a08d5fd3c143a172e53f5d3dd1f7eaee67ff83d1a5df7ad86d2bd3e5ee899ee4594affacfdaacccabf9f07b8df578b6db55ceed917731edeaf771bbd2a020a45cc47d872f704fb74ffd7bf563bfb6fea61ff5553c1b758db97e7d39f61bd6a9ee7faa1731c67a8d11afc77135341e3dff37b8f7ad7ede2da13684e74cf03bf52afbbf169a9baff5bdd5426b40aff7500bcd31b7c7980bae837fe671137edfd5ae4ff7f870bbf2c275ae87e673f798ea9e1f6ed773fbf54938dfe87af7d5d738aeba9fff6acb74b76db4eb98f6586782f716bcbb70bdc15fbfddaefb2743d71bafb12daf66bc86e751bff711a4f75ee0f9afe6b9ee85ca2389cf96422360c03df00165abb24339a2fc23de81efc79fc53f2259723ff93af915cdd36be9db699dfeb59a5177a9b7a94fa95f6529769c3dcb7ea1a5b46ddad5dabfd289bea63fa9bfac7fdfd08c43c6478c9f9973e67bcd5f456e88342c622d59bf8c3e1cfd93d86aec3bf12389d544237975f2fbf689d4c3a91fa58fa43fed249d17068606f60f7c76e0875b525b3eb2e547d995eca7b3bf18bc7bf0d383df1f8a0eef1afec3e1bf1d991ef9f8c80f46ef1efdbc1b7797dc8fbbbf1abb62ac3ef6b7e36f1aff452e9b7b32f7575b6fdaba3ef117f91bf29fcd7fa5305978b2f0cbc9d353ead4b6a913531f9cfaf1f46dd32fcf2833376c3bb5edaf6693b357cfbe65f627736b732fcec7e76f9a7fdffcd717762c7c6ae16f8b772c6e5bfceae2df96ee2afdf9d2aea58f2f7d6ff9b3cb7f5519aabcbdf2b595fccafd2b5fdc9edffec11d911dcfeef8e1ce959d6fdaf9f59dbfdeb5b2eb03978c5c72edeaf1d53f5cfdc5ee3b76bfb0fb47bb7fe9216f8777bf57f7be7ae9c8a57b2f7dfad2f5b5abd6fe70cff49e0feef987bda7f6fef032efb21fef4beef3f69ddef7e2e5d3977f7dffd0fe3bf6d7f7ffe8c0ca81bb0fbcebc0fa15775ff1ec15df3c3874f0f8c1a70f7efde03f1cca1cf20e3d7ae8e5435f3dd4bc72edcabbaf7cfaaadbae7ae1aa6f1cce1c3e72f84d871b47d423878e3cfbbaf8eb9e7ddd8f8f5e75f485a3bf3c3677ecb163cdab57af7eecea3fbfe6c7d7de74ed2fae7bef755f3b6e1c5f3bfee7d7efbbfe83374cdef0ae1b8d1b9fbaf19b37fefaa6b59b1eb83975f303377fefc4d28953273e798b71cb1db7bc78cb37aaff78eb6db77efbb6f1dbbe71fbdedb7f7807ba63d71d1fb913ddb9f7ce17effce15d4b773dfdfa27ef56efbef6ee4fddfd0f27af38f9f6935fbd07ddb37acffbeef9c9bdbbee7defbd8d537b4fdd7feacfdfb0fc8667dff09dd323a71f385d3ffd95fb94fbde7e463bb3ebcc9367be793675f6a6b3fff2ecafefdf7bff0bf7ffe0dcd0b9eab94f9dfbc903d30f9c7ee0f30fee7ff0dfbc71f98d67def88387dc87961fbafaa1a71ffa370ffde8e1c8c3ab0f7ff09181473ef0c88fdf3cf7e6171f8d3cfaa9df7af4b77ef0d8e2634f3e9e7dfcdac7bf52db567bf189336fd1de72f55b7ef8d67d6fbdffc9cc932fbfeddab77ff1edbf7ac7f83b9e7eeafbef3cfaceaf3cbde3e99ffdf68edf7efab77ff6ae3bdef5b3675e7cf791773ffbee1fbf67c77bdefbecf2b3373cfbf5dfb9e1779e7a6ff6bd3f7aee83cffdf27d5bdf77ea7d3f7bff1defffe4fb7ff281d50ffcd1f3a79effa30fe63ff8ae0fedfad0bb3ff4950ffde885e9177efce1231ffee247aa1ff993df9d7b11bd78e2c58f7c947cf4dd1ffd6a7daefe42fd571f3bfaf1918f7ffa13994f5cfb89973ff19f3e697cf2e14f367eefd4a7463eb5eb537ff82f8efc8bfaa7873efdec67a63ff3d867ea9fd53efbc267bffdb9e5cfd53ef7172f7df2e5fd2fbffbe5bf78f92f055dfc0a3c8522019dbde12f857ee5d3ca80123e69cc4b3238eba7314a80e9a7094ac0dbfd344526fa2b3fada204acfa691da5d1e7fcb481b2f0077eda442954f2d3119442f7218c80e808d0384af8690545e1613f8dd1380cf96982c6e1793f4d5106fd9d9f56d1381cf6d33a9a460d3f6da02578c54f9b68125deea7236812bdf5cc03b3276fbfeff47de76e7df0fe07cfcd1697d119f4009a4527d1ede83e741add87cea15bd183e87ef4203a27c2e32edffdc0036776cccf9fb9f5d4ada71f3879ffdcedf7bd611edd8d1e400fa03368079a47f3e80cba159d42b7a2d3e8017412dd8fe6c4ddde80e67f936b8ff817b957df79fbdda7ef3b75dfeb4fde790e1de92aeea2abd19de87674b7a8fc29741f7a3d3a89ee44e7aebdf3fe7327ef3bed2ecf2da16bd19de87e740e9d146d74d1329a434bafa12b5ec32547ef7cfd83a76ebd1f1d4577a2d7a30745ddef7f0df7d977dfe907dcd7df79facefb6f7de0ce3bdcdb1e710fdc7edf95f7dd777a0eed13d73c805cf47a74273a2dda7a2b7a00dd89ee402eba0d3d825c7440dcf94a749f283bd7c271ebfff7ff050000ffffda30be9f506f0100", + "8caaffd6ab5fab10c68ef52c3e2cec26": "1f8b08000000000000ffbcfde77623bbb220083fcbc7dedf58f1d4addaf6dc9935d3144595788a227948aa6aefdb3d930bcc0449949289dc005266f7ccac1eefbdf7de7befa77fb4f422f324b310064052a24495b93fc844c023e0028188c05fe95c496395ae3a7ffaed51c7eac6e4d276fef42f757ef7bb57952e64b6d545534afbca4891bb57aa2ae4cdef3edaced18308ce966a89ffbf93f687c723fdc565d9c8daa8ca7db4af726de42b9f48daedab5c6fb7ba7a9597c25a691f4f0d8195d84afb54455a655859cadc7dc94a2cc55296ddda482b5d17b0d21575bd5b828ff4ca3495535bf96a23cb5a1a0b45d852e5b258e89e31e2f6ab94207cce1f94db9ce9f22b35423969c4b294d48c91da2af7550aaa7435a4b266d2ee2943d4ba2c75b771aa544e490bddb96caaa294bf9376fb8923b136bade83bd67d3faaa7c1dccc3d0ec8bb2ec6f647ef989d57b62f2ac8da837bf965d27d6afacc99f9ef05d555d09a344e5a08400edc7fa67b6de89f55a160bb9ad4be1e4088661f9b55681273a714f15fdaa61dc62a3ecb0524e8952fd268bc773c0b61bdd3869ba85de42c1bb9e9fd8bdd2186d0e19ba9f849643e7c52765fec47043e4d41bed74772dca529adb76045fb1aebbad9fde1d3e61041ab9969534c269f385736ecd6c2385937d3fbf9f42801f2b876e7e2ad7950d28a646c802fce757eba9709b4f59e16a5dc9ca61f6f0f7781ea52e84ddd0e7aba06c2dddd468a77da74f565f67c5b9ada5fe3a59d7da5ab52c655f57d6992677dacca46bcc1e747e2eddf1f571a5aa8d34ca7deaa6596bab9cda379abec0c2f564febfc9aaab97569a2b4f6c74dd615404911ea5aa2ebf0cd52196d61991bb6963649fa7da8b36a142ae5425a746d7d2b83d1426cec9aeb4af32a3f5d721dd84bdadf2857ecb4be797e8d62fb4a0bd78f81cb8e23ddbbb97f2f66514854f2b6f9cac8aafb6e51e4c2dec43ca463bdf2efa4e85b1724f671371f9aa14d5ba116bf9ea4a59e587c6f62bb56d3fbec58dd238929e20f370d0abad584bfb29b4c641e85b36ce2513ff18c0cfcf0f3f7b1ae654759b10ef85b26ec7efa925ecd90d60a4b595fb506a757925bbb5701b7f927f0a7d57a26c6457feda88f2a9681b659d36b75003723f1ef15a2e6b915fbe5a36aa2c54f56a5deae541c78747a74d29afc481dbd56133e7f18c7e6da4b9ed5a6754b5feecb1d62ed09e2851eaf553639ff6b78dd697be8b3fe14cf4e4ea95ec43deffc2a93dddf109f3ed93168c176dbf0f0b7b091fe980f49fdadd98d6bda8ea5f6ff47fe241707ff53f9b3079e129dd195121e9d85d1bddd4079c52755d4b13da742e2ab1deb7293e9ae2d94d6927fe14c0172498c99534b2caf72ed38fa479b6d9b453021f7823b77bf216f5c6e84239f9aad25db5adb571e2a091fae8842dd5badaee1d2a2947e5018be5f1248594f5569ab5c46d71dff44d96ae5259d717f946f64b29f6e41aa3cb5f9fcd5058abf3a1c7f6be93da63a59fc852ba3d387f2cfe5bb907698f453e132fc0c3fc809c471cf9d998d689fcf220d462d403f100710fc101443ca4fdf3dbed52efd9c092686be966e27a21f66cbc494cbdfc2873b7d073d8fd9f8dbe14d677ea01392b3b81ac9f8f77da54f9fe753e29dc4fce3fd813e1c4b351953d17f672df9a9b44747a0e175207b57c68c7c2a9abe723afa57bef29cb43221e98e5b9a89f277020ab3e70f99e8dbc117673d890f7310f1cf13eea2103dec73b64bcfb78874cf5b3bdfcbf24d256d487afa199b2efe4ad58960775e2b9a80f1a975c8503d1c9d10f4129c73d04ad1cf710d49e53dcc316b143729cfb88cfef50c688db81c89fefd717b2a3fc4cee59abd6d5617354bc206eaeebdbc3d63da8c6426d9fdffc79251da9cb4397a99e59379e623920ef1745dd7b9fdc9a37c3fd445c9add48566bf77cef628b16b7b52c0eab804f7051897d47f4b40a2fc855e02df4a57cb797e1d34242e0843fbf055f49d333cfefbdb8ba1f54bc47c12111a94f0f1959fbf95c8f4ead17b466f87c646ecff3512f0fcf102b7a40643fa95f30484e55b997f28f71ad6b968765ba960ec9bee7f1ef6b7a685ca8ebb43960df4cefc05e50db03317b786c223e7b6579d024587f4ad403aae137faf74a5e3f1b716af456ede352a6fbe1017be607292e0f2101d70711e799aa94eb97ba92870dc10b55b99f0e8b9a875c8f9bd5eaf97980090ec629c49ec9f5e0e6795c40dc034f4c10f705db4140e0f1ed21f8f643f740ba3ce4fc023a62680f181bea904894dd0143521d12091bee5bf35cccfc9048b8681dd4d6c3fa7d2bb75afd7600218ef1faa2ae0f3854222b7da1a7e200fac6e977fb18f3bbd4e281a7747770bc432a88f353ca3d385f69b35597c8c842f7fe7b9ddae85c5afb6a69f4f5de1bbc077c3e605402cfec5c9af55e8e1fdc22e4a592957bf68efcf19b871ec07d5d3979b367643fb85e04c6a1dc77bd68a455bf49baf497a65bebf276a5ca12d13583d00905fe6e3f17ff513ef3013761875dd8b86d097f07e4f1c9b7da7f2e856c65d5c0df89ba52c5bef1f585cb1a3a798820c6e7177478218fe482577ca51f75e01ca97d92ae07550a18ea257d3e231f7ff429c52d7f1fcfc9cf7ff87bd1f4f0252173f383721bdd38e20f28f9f4ddf1beebf83df734bbebdb9fcf15e2d33712bc487db4b874fac08fb6df58a7b7c3cad63227127dcfaab5d1caba6ea52bbaf9b24e38955b5cb4f604fe2efff8e465d24a58d7f53d2fcc9317f2bb17e81b61b6babaed62f8e3695455aa4a76adbb2d65b73672a56ee84a09dbff51ab6a8adec5136c1cac68a95632bfcd4b69b1ba6e9fff13ebf50baec92fe56d5f6f97fab09e54d87b7bfaedc1e6b42c757e49b4c0be0deab18d10b6b44a94af44eecef6f2eabeccfae6f7da57fb37dc3fb73c5a322d6ffddc7e3c3394a1a5c19f23ad40a2e90770bdb29591f2ed1342212909fbd401ea73654e3d99639bad58964f1d01bf949a886edc9f9ba6c8572923511299d7468a3d67802f33255ebabb7e7241076dbf5fa628a284adacac3604cd01f8aa8b8bd6a553357fbf6ea7d51e8daf50a0e1e22921a62f5c1cf28f8ddec33cf92ae59dabb501e19c3fef86ee3bfdb1bc07effa9f4629287b009d10e53a0bb9124db9efeaa466811996f2d846af4fdda50a10a7a3cf9e6285db749dee1ab996374f0a12953a17e54a1bc1822889c7e7ecc662097f9f91c567ad165f6e31f8b273fd0b4fe5af35533f6b22e289ab8b57a6cf93444f0bb4b467f51399ed46dccf37ddbf00e039e615fa4df72ba03db784e4a2560e04fe9e62c2c91b595d1d20e407074abd5e9734437dc516003f95cce64697a527fe31d5a1f2e7be15498f3f31129f4a36dcabbc50e86d97a92a105c7d258ae20975b487f18ddceaabe735d85e70805f048f2f94210e03e8a8db7a1fc9fb19d57ce26c7298bee92b3a867fea821033b2622587d595be94e772bb7c09c36d5714d7c9ed485937935521cdd7e1dc7d72fb3fa3a4c310b46e8aa79682d5f223ceb16b61aabd2bca670defcf19c45f60a83e3e284a65ddd0c9ad7d62357e49364ff47724e978b959aa6acf192fc61585a89d8f7cb3d9479786b8304690773030661f1d93c417552ecb57caf6c17160f4a7227f8af6c6e06abf64d0a7e4b71066fdf4a5a127c14ba1aaa72e3fdb7a944f4d1d0bd4451af969d6eca3f16b5dc1a5cd9ed929aceb7eb4baea5a076a9d78f9a756b72f12661fa9f5c62df50b14d361677f24e0133543b9c76cadaa4a1afebe88e7fea9fc765202f86c3e1b2d904f2f945fe57a675f3e2b6db67ec4d58dfbd47dbb9d95c784d1e5139921c61a4b67612b473aff5c2db24a5c2d85a1cfe1b76b0765f7b9786965762645f1cc16f9f1ba5b97e2569a740605cfa716da2fac1af71c03d8ba66792aca030488e08afe296e31df8e8b7c230f5322bf36b7afd25947eefd2974edd456d9ed4b74daa13e5d556de5569bdb976ac37737ced5ddb0cbbf3ced8b13811ef34b522db5b6eef3b5f63fe382fb13af95d11457fe915cbfab8d2e1ad4d2d8aa2749c9426f633ab03073485a9b6fa4773d69fd2446f20504e8a00276ef15d1ff69dec461ca2e4fd937e01887ddfa1ca8b7f312a59dc385370f92433e40167d8738f3436f12c0971e86930bf595c89d36709bb4d8187dadaaf57ca3b69fa356efeb36f311c339672e73b38f3e1556d42cb9d4f5c001d18cd8c33f6973acd8cac44b384ec8affa2c2e576f1f4dfb1c8fcb6ae398513ef7913e97dbfeb4eec6f3cd299bb5aaec33e6570ece2617e5272396b368cc5e66f5c199acca7d2be1c15958f5dbde15e2e04cd646146aafb4c9c1d9b86758119bdb7a232b4ff4635ecfd96e78111e97fa6638f832f94cca2755b97799afcf9e027713cc011ee97d72177b58c32f67268fd44af66ff3524e8d7e829e78bc96d77e21d64dbe1929ebfcfab58fb5d25ae99e57c77e703246833cc2187d3d92ab4f4835f347eb1725cbcbc304c47618df7d5d39a1f61e9a9f4a7aaaf55e9d91a7d2f9f3cea7a49b8ab5f253ad586c9aedb2129f743f10d27e42f94fc836bc98377e289fe590bcfaf3f917bf11f8da24cd0b8b7d19d9b357fad849a3eb99fcb551469ee045f8a1b7381b61bfe415ce4cd6a5c8e557bac9e96f54599c8bba7e86afb06fa259fba444f95389e74ff1e0f6c8c92f5555b046fda1739a6f2eab0b2b4ff6d9047d8971cc4f19d987e5fcb2c1fb19525f5fd788f25736a0fce7623cf920c3c99f91ffd79751fcfaf2895f5b36f140b944eb8cca5db731aa2bab5c174fd2d585f4312072588b9e64cbd4a5725d5d7557ca3c4d878224bf6d6a4f0006f9d6e3a7948158c92538b20374875e769db0ad4bb995957b8247be3fdbc324fe0f4aff496be6d359be6cb10cf7cc725bbbdba7adb27c3af5f4c92dfee4767d09aae1936983cf1a778f26fe84f1f7a27c5ed62b2fcafa65fdb623c8d85e172cacddcf4f3ab2cbf518fd73c0947d3275e4722b7b100f7a9f5ecd8b2bf7b28c5e5ccf9d1bc4bdd2b489d1f26e30648edf175cc0d1089257b272dd8da88a12cf17cf74cd41b9e8aa2b0a88f725b25aca9536f28b65b76acab26b7323e593fd706876db661f03f965f97ca9e67d9161a0abee952aa4ee967a1f6df3686e4c1fada5ebe68d314a169e42f98c5cd0bfabeb7df2304fe6a08219c84f2c1ef15289adecae8cde0233ef93ea619d284b6e8dcd8daa9fdc36f7e483729831b40b193f63eb714f5e9eea8d193d2d53ff684694a4fbc4b3118fa6a312e306f5d4e53f087c79d71e42d5769740ce3e29a7dc1607ebedcfeea1405aa5cd160610b2fcc662afedcb7621563ab7ef826627aaac36be0b0f924f0b72728d2a8b8bd9e8d0f8b530969a7070d395bd988de6622b2746adf76d5a8f54cde93d06d91ec6cdb5be54cf0f0040d3b072d2e4b276da3c6975752759a16c2d5cbe99c95f9bfdef0cb5d300d9b9d266bbdfb8dc63e8ea2dad2e1b275fd02fb9de2e55e5533c8f8454d670a12ff76d5f0f0bb14f1c5177555dd1a8db42ff613e193fa3ef1ab563d9b2f881fab1f816d981b97385f0d27d21f6a9d43e28a564f9aba7e3a37009c86de00c3c24fa5b0ffd717478027b5b39717348fc587f79b3d7c0c583c897aa2aeca1910b6564eed45514513b30618d2f007c0d9bfe2f93dc7b5c7fbab1f2bc799ea1f048b279b3c43df933adbebb6dd9a5a67bf71c9c9f912162c3ff7faeb89e136bfffbdcc681ac2d3817fb054b5e2e3ff8d928f2e7df9e917b16eb03ad7550886dd6ebbd3bc54bba4d9572e807f267e4940b53c0df67e451a0d41a7f3fa736ba2c456d65707c368e48aef67364dd45298dc3ffc37bffe5c51c28a0fd258afad477433eb7c0271f1679e11c7a62e57bc6f8c57c3e3be0e66e373998d779c260eedea5ff8f3ee1d744eee12befe714d1852dd3bb0e5d729eedc36d533af5d95b18ab252fd4def3d08bf2f9a4a54238b554a572b74fdb403ba822b250a871023c5786169f67060557c3aad94aa372e8c1cfd51b7e98e3e7205f0bebf0ffcbe4823df0771d75e0cddfce9ffea50ee6d439eac89b5a1be70bc932121fce0cca3b6459e7a853b44228368464193d49e3dda80b0dbe465a070e712d949306dc8187ea214c37477e6ee7a8b3ec1c7550e2b673d469bfaf07896b0f439970bfd839ead49da3ce46d8c975c5429510b173d4711be5b3cce35b803e3a67e8438005d739ea842a43a99da38eea1c753c2cd85874e7a85382f9669f4c94a50fabebd297e53350f8b044e7a8b3962ea90ad97aa5caf4cc1a1094643a852411216442b573d4a1579dc045f85835e54a95a5f41d010f39f9da3ae93150c91b17a24204236d537abf4257122a207d8b96baf095f655f55fa8906f9c58ca12505ef934cedcfadae9daff5f49b3840c8cbe868c5d637c56d838df7a17ea7f05a93a479dc56d8d8c158f73f0a91bebb1e73d7afdc5f0fdc03b46c3b7e36c34385d0460367c7be6a193deec9dff0ce7bde3d1e0a473d4391d8e46f0f999c09f0727d962e251381c8f86e30138168359c87ed49bbd85efa477321cbfed1c75ce87e3e179cf67737e315a0c29d56c7231f659cecf7b50c4fbc16c31ec43b4e9643e5c0c27632a2880c793c562729efa502b02cc0d198c06ef7be0f3272de8750b7ad382be6d41df51c3c68b6c3a1b9ef766bf448ff945bf3f98cfa3c787de6c8c6d258f93def8ed60e61136e95fccb304a117c36c31f8d9d7717631f689183c9f8c27f369af3f600fffc9189b0030aa0038bf584086002405003c793f989d8e261fb2c168349cce87beaec7a349ffdd1f2f260b9f5f7f72c29f0c023a479db301f7d868385fd027bb18cf17bf60d6b3c50886cc60b6e06f763c39f92500fd09347f1e3c4e279305e0e17836e89df46717e7c72d20eb5fcc6683f1a2e5396f43597f321af5a673a8c2f1c56231190747f67636b99846703e1d8ec758207a102efbbdd1687291b8b2611fb2e9f7662780072c227172cb081e1e8f0619e1059ae9bb6030bed801b3e964ea919f2d7cc771e4d964146a7a32ec8d266f830370d61b62a5c98b4ae608a389af0d379c7c03665b70e6a7e1643c8ffebe5329defb21b966bd0f8923148750cc18e190c1e064b8f0838c71da82b9eb1ff87b080755db7f389e5e3c8c3d1df5fa83b3c9084b3c1d0d7ece063f4f7b6384cf16e7a36c3e180dfa3e6570803764d202b2e3c9ec6430836193f8f627e393c178beeb3d5fcc8653f0e49ac1377b7b3699271075224288ecd8c7496f0fc727c37e6f31993de697f5cf862318766783febbe3c9cf7e6ef54e8613dfaa0fc345ff2c383218cf8cf2d3e16810301781ecac3727bc607d20e862ea97e010fddde017fccffa93f3e309ac3827c3d3e1609661d0d964913ab251ef78308a607f32ba381f47388c638e773a999d07040110c704806783d134b685260f4c9ae162709eba43d9e033bf384e23c7810c60189fe3defbe35e7484aa10185737f288f98c27e36c7832e88db2f9a207cbe38e4ff67e38bf80ad697c713e980dfb01ab61a1a5a5a10567b09ecfc87bd4fb25bab2e35effddc90cf637f64a5782d40f51c83e61db658fc974304ec0797f36198d5a994d7be301b40496f9048ac87be80935dc09793f1c7c80ed16d6b8e8ca7ab3d92409495bc75eb1253b3ed97cf867d8311c70329c9f0f617fddf1817d6d3684ad8b83a8f90fd65df6f830eb4da750d9c5ac37263aa1859dd9e4ed6c309f67387a02783e58b4c3c7135a25e63bbe3d4fdfd0d49b4e660b1829f37783d10097ecf988061a3ab2decfb0211374d61b9fc0d245308f7d021733ec0702b95cefb3e8c1463c403a2a6c7de46a558bfd7cdf26a06fd2749846e0e216bd63fc6f2d652d38456def98678077c29841f71c3e6ff13f9b0dce2740257a80e75070f3a61c3ddef7461780eec5a487b9fb6fabfbd0e77c309ff790529a4c468be134bada0d980d06f4c9c648030577d6efcd60e8ecf8e00e7cf248c078327e24071e92897718fbd18ff6b576b68c80e0c18321f12134078ff9c06f69bdd92f8f44c64d2116329b4c6033c362fcc7cf6c9ffa8461a638d7d281fcfcd89f596b91c3998d6d0243883f87f1fb99eca1f2c40d6f5f32c47a730c6721b32cfb30389efaf56578eea7cfe0243b9f9c5c8c06d99fe0493794b23fe66b8c8945ee8ff606a3715df647fc1622022185bd357eef27f7c5f168d8cf2e6623a0a72f06d3d970bcc8c6bdf3012cf530e8801ce5930a1d50f85cf2678399df7969d87cf0eec5190ec9d3c905ae367cd888a78c78bc08e78a80bcb41308ffbec702fa7133f305383dd2d7d2f4051c7519057070672cf4ce4fb293c1e9703cc86683f9c5680158c093be3f8487f1c000b8041cb185592ff0884f0ffe40152a60405c4a0f7dd4cae74292149da34e53e17d2730395ab2f0909fc1837b2ac44e3efe03358794129243f77b6c60f063d2e990ac2d508edc895cc2901445e19b5089ad5ce8139d3784e0c03c402ec9a9d1db53254b5f3888260057d5fb22ff50e96a2e1d302daa0b2be955154019bd7210f820a746ac7dce18be968e945cc032a4252fbec01c562b9d96bd968ed39f783c427fda7600542d690a3c23a7aa189fd827b544037e7b036850ad2565b9136feeb491efe42d47c32be319f043ce8465ae0428e52859b941e07b6d840d2d8455c30e7e6d04b0382cb754d9211acb4437e852720bc1eb0f565731c234c81f02b8c07ede8adb2560ffd448f99b8f09cfa3527f04378f3fb602e76b3b97ce7acc2788a4605d55d8e3a10d0fe279141066d2deb31bdd94c5b0cacba640a652c4601acfe9d8766782c8f4c48cf49ad14a77d719df5d67f420fd732babb3599067786e6d75b654cbe756d695b02efb687595a1a1a22c182a7a6ea9fdc494595c4d803bb7d038476712541d48f219e7f064f9b1833c58886d942fc70fb94b55d128ab5c1c45a7a516011c37db252c65ca1e6b5d4a910c3714d68830d680e14a5a278b1e140ffca795ef580b03d20f3c0db552f63d5528a95bcc72a46cc8f08ad78632f10ca5c0f09d509e83aad9c64cc64d5932b4a2d115a4232ca629d2a9b8d26620f24dea0d0bb03f478e271fc6d9c9703600bedf9cb3a4f92fcc1a328057cade49606c5a6d7c37c1dd55cfac2d21c3c7809aa3c71fe6409a84de0766f2b62ea593a749011cae3029ee3136f43364254a25a0605e953d168ac0e9268634db45801150f475b5526b7052141a2f7e6886a4011db14f4b47c30366b44d578434412fe143ab15430070d7c82b6980c77d254a19a67e45db6ea1734f07247957ba903b3b05efd15643dd8bb81cad68d5e47eca5d23cad3b627c7b1b859271b4b91aefa9ab78614c5b8f10590ee0272010807c36c50adc6e45441eff2913632bf4c96cd90b98f75c3c3e644ae8213f0b07ab0fff94c6fb70b9a49abb849f0a43ad96d516bbf4de124d14e08ce15ecf461352d893aa69dc3e17e438a0a48a06d3da5f7cb74e049c5ec743800f64fd594e57075a2f3a11d6c6bb84451c195346ddf5ebfd3ebe7c2e51b18858532618b8a9bebcece1456c0a1a752528f859e41d2a416a8f815a2ee782709b6ba805989fd932c6ab2a2cb2824066b61b01abccf19ce01dfc93b6d97f008752562244b55f2d9b5d26137e08c16661d3124e2cc1361cefb92c93fc67c9c34ba12063b06b7716c3e374598757fb7d4be6e2a076b4532e9b1cd614dd8e9a0150dc8a455ad3a60ea768377b2d8415929ac1b866bb33c102f332666b0ced7aa2c438746f2b512576a2dc2959e27b1803ec1fd2fa56fcf401613f72a580ee01a6c23883885b2eb5bc00690fd78ef08cb802a0b0e7e83b1dbd7915815bfb55dc1a0baa2db468d838c0822f8c276e0174bbc705c4bb750b81ea644a086b14340fb269197d1da682cf4d4e8dfa029b9ef4d18c5d6f575ad7031db88b2d4d77d5ddf9e6a03ef8831611910c2d401b6e1c6c9ca2a9c1fb814be83c981ee40f5c1bac9d0c9703e1df57e8185643a1b9c0e7f0e4361acabb3c5f9084c993e4fb12109381cbfef8d8627d9743699cea9ad7878bf12a52a382f1ce6dc26238b067aad36123aa031d8b8b12e24f64c7c721d00d0c882505ade64651b2307a89e16a3440f58d96c5d0a3e53284b8193151d34a3e5db163031612bc504433b316437c3f23a8d0f03f7d14a2fde2c1b7dc3478fbc14db9afbf944e66a2b4a58e62d5dca3a574a305c9ac0d800efd91765b914f96512085813f901cc0e18bacf723a405e384bad0c3fcbf5c024bbe6829f23cceda50a672227d6d419ce28bfa5f559de81b93a45abcb64e8cd1091ba6ed554397d6277f98d330e803cf698d3a534a28221772e4020402c8184068ec256780a810f4355b3a5c363a560e21bdd007d0fea2d54b34a5e0f12907b09ac1a785cb14798b8923a9b25ecb9f3f1c52b8644518093edd590e4028d055d33d901b9bda10984eb3a9d626a69acc2f3aa741bedebadab5ea5b6b0079d1ab19524dc2f31ec1814c68676d65495aad67d4f4861a295a74e76fd157bc080848cdab9fbd6036fc70fe2908a346fa02753d18e8cd840cf0e6b4f9e1f38a89f19c720970d742f29ab84e30034a9266aacd03948c8a5d40a2cabb88380f80eef9d1fd096ab45811c6914e8cc06f2e27d725684d2931d16cc4bbe6392c642a7f8dad423208070611ee9bce7161b6547f20a443e0a9dd34428219a75c238507380a5b160279e6931a6805121ac6b338d6cb30cad876c3007bf8d0b101921fe564a2bad7f2de1fce8a4112029036601005d34897d731fc34ee50306cfe088d23f176dc8ac079eb98117c1c732959f4b6bc55ab2101170fa1a9c91db109491d4d1ca8f5fbbd0538d6b775530a9746d44dd472ae19ca715e165ee9aa5a7b0e26e25dc480aeb3ec88551c89b7462bd96c5426eeb52383942bc8561070814d77c3e92d128311e853cd932932b69242b3e758e3a64916006cabf9da3ce48557ea28dc515b93230c69091ae6b46ea2d99b4dbacf52ae77333ef995de7f5819112460b4646b5e5e726eb4659a7cdb3dc9f271a4b526efb73f8feb91c9eb218bd3fdb1f90eba5aadb4378643f62258004f8266c76deab44da17f100d8ab0adc18d0507bdcef3ced6b20762b031ef8a8afda2f15adefeca28e99e24e22912bed1c0ce5ad74021727014c485f8c332551991bb5224f65cfe9dc16881acd13eb9b481256d2cce03c424286683b055ac30a48bea206e260fbce0c250059c2f8f9c663b4df18c32cf614c208706a0d7750c8ad78d407cc43a6f7135324d8f324a6bc114475f720cd9469fa1ef351d07e09386e4b0eb794758d5487ff104348da5cd4b2986280aff11b20451c30cca068e6d97cd40aafbdd8c3b7165486898618f5cea7d9f9709c9df77e0eb2531f7ab371d6ef8dfb8351a0ce1f860ce6fdde7440221c0f8327178bf9f06490f5474394f102e18d79c6421d67c3d1c96c304e4220f5c9a03f99c11def78929d0f1667939327a20c0627f36c36e8f517d9603438c79bce96a444d2b807fe9359365f0ca6d97cf86783ec98a4027762f5fe7048ac9dbcc6937186928170e5fc74964f467e79b48bd1289141980dfe78319c0de60fa513ce7af3202c910541ca492ad100d85e4c26d9796fdceab1568493c9054937ed4859a4a10f85237ce0e07cbaf8655fca9d0a92ec492bcac598249c4683936c32de6dc56cd143711410131bf5e673b83005590ab8d464d1031cb73ec2600e68e4dbfdc12cebcf06bd45c02bfb428a5029927803cff184c558e8aefbf1c01dd93aa0cdb34776f142a2c61c321740ce9cd85ac85e6a18bc362821bf4b0c808034ae88e142dcafebe17c0dd2d80c213714ee93339a582783f78bc96434cfde8e26c7bd51763699bcc3037caeabf9d5daaf43f6f50f7806c1ff6eaecb665b754bb9726d1fa3d61bf632fababbd4cee96de2e160f1f390d35d619c5ae1ea493e2b5de21e2694a94b5105d9806ece6c3e043f36d621131f61ae0a00a1167c979dd423786db451bff99360b9933784a6f981c7c33ca92901bef29d9ab7b2ab2a1def89eaba54f92310710e02b642d9a95f281e3c0b7d5d05a015bd1dcfe9ba1dec3dda519a9a9d364149f4e356e109411a653d69201aa7fdd12eef3675211c0ce5a52880685e8aaa9b2b9397045c7645ce6cada53039de2a2c4b01d428bcf22b8bae27aa34cab4e3fdb7d697f4d90a834e7f185f1a2557398a1ac01d399e84f3a62406622e4a5915029d7e3a81c348c7584380d08200a3042140492ecbb2ebf43552541b51ad5138618307a17c23f023af8caebafe1c7e2d4c9178716904aeb4d989c0352030d48160ac05e3111ddd56f7b7fc38b7d42f64997a52be615ce6a514f855f55253154bdd842f14576a113d9a9a41ec4bb0b8061d0900706c49b5b18bea15bc60885bdd200b661b9831db5a18857d0f80b5e432d2e2b1179642b325d68d11e116c480c6426e64a15c37a7ba1b8d3918c252b394f4e9e20a06ce702b9037e64a165de37bb81bba176a5908bb619414c289250ebb4296d291c309f81a7525690dc445fd1257874289b511dbae3332b9ad8b9d1f3db8afe8889b5cae75750db47b80ed06398b85c731dcca68540d6996a5ece2186e4de5564832a1d9bf3d62777cb9a66ddf50ddb6370cae4237eb4dd5b880cd64001546acc940ce4e1d9380b48a74fe05043be2b237b87602b15c80f40d2bd5c8aad0c42b91d5952c758dcc7b6191d7d6180d243b4e6874964d21bba80d236f6a511534665127ca3b6e6557af56ecaad881dd024f2825f31fe038db5752f2a76b513f7e893eaadc86bbbeee250a8b105422a38ea030545725dc44ad4aba4e2d0528e1ac4a5dd7b7dd0297e655e9770d23aa7cc310726dc059aa4ac29801c8c82b25afdb503b2dded6fb4db90b76a52358614204181708c1002d76e1245249eb2a3a91c5b4d27837a561b15f6998ef60652a2c826873ca09d8307870794fb443456c5fbec014958b43702d7572905c4b6da530d0cab572b1c91ef06b130c2a0f6ce962c2bbab1439dea36e60a0a0d3b2af91b51f646ba2c6d6a5860508bedd4aba6b6c2188d6f037f6f1da808080ff74a973c0665f17990d9661597497c284f6f999431f9ec7e0a6d90b6e9eb300c04cdd80299be0e8a2721901ee5a138057681b4945f96f77698893b891c275a9d6de8dc2271b59f2479aee162ccdd08abf51eb4dc95541398284166b35ea11efaeb0f9be204f4cb7c30ae50fdfcb26086974ab206fb3156b3fef9d7092d1d4f26374a1c9776053200902df2e0b98048fb5d4c11d461782482401b8d25d524f24661b71bf8107d2254946555949453a696c1432a9fd166650a850594bf237b691383b8b00e2ec84b75c73621474f9fc70296f61c162e15b0ffb418f430821de5b3d14f63b0f306d0b6ee0541080771004000788dc4e2cbdabd2d755f74a6e14ce65b05ec55f8b0ea40dd0d1f524668496a22c35644f1e61512098466080fc9459de469f8d92c6f749e215d64282eda5bcdec9c76ae3fc5a53369ef645c5d195e36e2ad54a5a7185ed8027f09a72096e206d6915f71fa20d58b8aa5b482754c9131c5626e2d94342bdee62017add45a46c45851788e828a92364d1f58409ca7c75830aac073cd58cec6c71a3b68ae4120b059165d5d0270e1c80688d86652fa934c2be5d743916725455035e7aa94ad9ad37b8841008d6ef0044a6a13618d8c0051c3851b6a359db0d1031a02d4fc65f00b4307e2bea99ae7220f1e261c2b2776abefaf64038490060643049435e4edef803a19fc995aa3e0ab8f1716a951cc75a30cdde026f00978074ea5ad20b878ed1ab150a1ce8d5ca8f2cef526597e5e174951088ba719c65ed579c30f66b5149d8e29c0d104fdb5ad4d2782a1d6f84046f206069342c38b568500c5bea1a9349e30fa474d7c1b8e18eaa55247a6be8925a5d69c7df587889fad9658322f7e5ed1a6c2693745a4d1b7aed4971e07b764525ca5bab9021d1ea841d014ab83043b605ef7075ca22a923a3a36e96a5b29b6eb2cdd74d891ad6a22ae0846f64ae0dcafd141a19c446a2b2b25cfba5d353dbdc64b204183aa605f3aed0f6e46d817c5b5c8ec40fe97f236b09074503f22f9096570fbe58c4dd2611a5239f1abbcc0a27cb122f9cfd6203f780b9709e32ac4b8d5271d4f9e8e80abe9826d8d1fd52ea738309e1eeccaf7061c50f73cfcaaae8c21a4cae2e8f388671abb7d22869e96c4540605e05313ef0c68352122fd944c927698b737407c6071ebb8922ce357d6a55adfdc9066aacb67c0ab4441bdbadf014249d0911e2350b211ad20838bcf9b095be5e9502c53f74ae44d9e5a5d3ef085d51d61bb1947c4879e0c79408064467ea9dae1d6d8f100d4c93c745d8feda101e764860eb601bf39fae243118eb649d1e4b008e09649d9c51aca32b09a32ea5db187f7ef3f0b5a8db8734f0494e67f4e26cd88b196674235828b1d5381ed1233604616794a8d6a564ca75d71b685507671f272e6557f0e477e2468178c78ddfe023590937276e938c37b749c79adbf00aee36cd7669b96082b03c1c0afe131b482750ff8167978491226035f8a6346cf0844b349bfac05f8c47b76338fa9dc10d126c28d2dc7506c73431139c9155e1473f579e61acfeb54e864e5315d2d0aed454b02e36d5eeb9a2a97689b4a6228aa4a9707368aa68c9226e8b811fd4e0313b704277a9f6470268ac87901d8a9d29882bdf94304008c2433901d0ea6b515e928082c70451dad7c249b3828580b07dad0a1417444737dc6b12bc82178d221c0e4ad746e2f9ef37adb748a4810bb76f703add5dc1f93165a0bff913d2a1cabc2f0506513a697fa060e495a14a8bdb9660ee072ea1297c8e6417dc05250a76590e4308232f823095cf822f596b7523cbb746156916ac93e769081bee90b9d2adebc6e49e1e5f2d85de91d7c74049c1d53db22c4ae29675a93dd7aa80f9b891343ba130aa8577cf83b0834f3d43fb356b787092cd7e64bdd9acf70bdfddf427b3413698cd26517ffd62dc6ffb9cf5e667d9c51895ce3c8ace7b3f67e783f309600ef3691b05e88f26e3417632184cb3d3112896a2cfe9a8b768fbcc7f393f9e8ce6c173723eedcd06d9b4375b0c7ba35def8b31990be0800fb3de343b1e8e1ff17837f8a5e5d9bf98cd7ec15bc947fc1ffa803a60cb7fa7522dbf87b17b3bb9ce06bdd9db96cfe96818f0733238ed5d8c16d962e6d13f1a8cdf2ece1e784fce87f3395ed99d4d16597f72017781de3d9ff6c6d0c37ff64b763a1c2d0633ce19bcce7ba1a4e1f874381e2e7ea17e9cf74e0770a9893a8bde2b4263c8d4fbe1a009f58a5ec3f1c9e0671824a3d3ec9198d746d4a7a55893de875d88358b7792d3de56393a975a97e8f2cb21b9f4767043e12076894e4fb6a26b2d2b746c458d0e3c5ab0bba42ce9ad5470d746df50f1f8a800baada470cba65dc30e8aeea00c89e0358a5d4760ce1940fbf05993d020f15ec96baa7da985fbf64d02fcf01d02aa723f05d7eb1f82932337310238fba5d8d65c9f2649d324890c4af4e2e230c297b177bdcf555190046ce2bb30429521364a539cb96d09f04525777cce846d479ac9f5e0a6e6b0870906ccf630727025ca06776723c1b472adcb00db13296b92f7f0e0b414aa0ab077d03a6d2496d9df08c3e5eef82c502e161d73c7c7170f0d2a3cee7c0059b46d5001f0f009301a70699f7b7a32f5e8d95ca90f7c5ac26685020776118f0d46f274f0ed3816c599bc61405582e48f86f64c5bd7c77b380f4e72a41bbdfb4251b546c2e1f9478ef53949b524fd1284fe8dedebed52cf88534fe0b9309736fa1d1b292e23782edc665247b8671d0ad451cc980fb84ed45a01e9e39dd57a8947353ba2d3acb1e70aa813634f95fb0d1c635d2599cee45ae98a807963cc54a0868cbda8eb248f768e214c4e6a770e3283c6cee5aff01d6cf547853e6c92cbc85ead11f901078434455770c11dba13866e0c8e20c5202da220d34f9d0dea24503b775bcba2476b9e652d0c507d4618171c1c361efecb7fb973d4f91bbdc377ef5ff679fcbf7ff53f83ffff9c7421a6c25809fa8f2cd6ca40081d56216c5871c85ba6063c3047c947a3350747a5df4a172cd6ea03ced91c1edac58bf1a0b8a09fed535d385552ab2d89302b38a42c55456b8f8f36441d745c26a34e7a80310e69862876a02fab9890d60bf885c546452786a0668da22ffa2d429fa002720ac2f2dd5baf8d645d1a7f84c64a824d3789826d79b30d97e560ea8ed3924a6670cfa2a080b81d90f2207278c8d29e0f38651e9091769866471ac8281ae03b93d5835aa11f149ae1836b60aa1544402481738a972b7ab5c29b08f09cb1aa88aa94ebf956b5435ab59fe33d83f00b1e519ebe4e890c8d074f5555902ca32ea36aa714f986c4f73916377465f4367573a128f2179b0c08b063316e23831aef7dcef116de3be7d094c0d34c2b1a320bad8fc27ede7ba1b601e117b42e7b77504304a9f233119c24d2606147e1965867a2adc37cd30284b183d8fe422e1b63463ccefefa5ff57f7fbffffb07fcdf3fe8fffe21fff70ffbbf7fcffffdfbfeef3ff07fffa1fffb8ffcdf7fecfffe51fff79ffabf7fcefffd77feef1ff37fffb8fffb27fcdf3fe9fffc8af2d7fd82f2d7ff0bfff75ffabf7fcafffdd3feef9ff17fffacfffbaffcdf7fedfffe1bfff7dffabf7fdefffdf7feef5ff07fffa2fffb97fcdfbfecfffe15fff7aff9bfffc1fffd8ffeef7ff27fffb3fffb5ffcdfffe6fffe75fff76ff8bf7fd3fffd5bfeef7ff77fff87fffb3ffddfffe5fffe6dfff77ffbbfbfe6fffe11fff79ff8bf7fc7fffd3ffeefdfed1c75ee3cd6ee3cc2ee3caeee3cfeee3ceaee3cd6ee7cb23b8f883b8f833bdfd43b8fab3b8f973b8f923bdff23bdff23b8fba3bdffc3bdfd43bdfca3bdfc03bdfb63bdfb63b5ff13bdff23bdfe8bb7fd5fff916ddf9c6dcf9c6dcf9faddf9debaf31d75e7db710735f59d77e7fbedcef7db9d6fcc9defbc3bdf6f77be67ee7ca7dc79dcdf79b4dff96ebcf3bd75e73beacef7c79def8a3bdf0b771ebb771ebb771ebb77ffabfff328bef3e8bcf398bcf3f8bbf3f8bb07bc7814df79ecde79fcdd7bd4dd7bd4dd7b84dd7b84dd7be4dc7b5cdd7b74de7bfcdd7bfcdd7b5cdd7bfcdd7b5cdd7b5cdd7bd4dd7b84dd7b84dd7b5cdd7b5cdd7b5cdd7b0cdd7b0cdd7b0cdd7bd4dd7b0cdd7b0cdd7b0cdd7bacdd7b0cdd7b0cdd7b0cdd7bacdd7b0cdd7b0cdd7b84dd7b34dd7b34dd7b34dd7b34dd7b34dd7b34dd7b34ddfb5177ef7175ef7175ef7175ef7175ef7175ef87e3bd47d8bd47d8bd47d8bd47d8bd47d8bd47d8bd47d8bd47d8bd47d3bd47d3bd47d39dcff90e32f023e2def7febd1f3ef77f2d081c7bf29688bfbfa173d4f9db3b479dbfc36fe39d100329338a936fc8ec462432fc59265859b1b8caea2b69d0526a780d242ad39c817880c5eb855c6e58f8cf1f6962461ef06455243968050f4aa770c8815acc53ad9d98078526997a5298378434de435c886dfdb7f96fe9e0b3c6cfaf8d46c75ff8f6f7fe6b9a6a58f5836236bf03047c17e0a005b216773412bdf7274276e382cf50ae8dfc83271f041f1ca33aac2a2295b615f6726e72dcb61ab8bb9437d2ef55c341369d4d161350b0259b02fe3019f3c1123dbd1ebdcae244d06d89dfb048843d90379e8aff29501c65a9f38bca8a95dcd1a88d99f39524dfe20cc176449072f51d816abaa0650c4f81064bb4b60f1afef3108427db61b4506b6fb7c99b2689d2301fb35d6842ee6efaa514c66f912484b603ba9b31480155f09fbb9b392af662b04d0144685f02c998e307fd4e4bad49be069506c1f7ad74711345afa14d68c8483e5258d031448f3fe095110264f60281735051247712899a02ee84ae468f195f961128afa4213bc5ec3aa1b33fe87a274d0e57ccd20924d18c14252b3433c7a035a69c9eb33586ada85b41355a486ef959d91e92c4b068c70164f25c41080d28ac58b90d5cc4078943bed4050e6fd6971e29b8e51989df6efd79190f66238815e16b74f54bbc34f51455408407469c6bbe11aaea010b34cb30554146b5f1d2824d6c43447203114e6eb4c14240a10cb9f8ee8253103dcf119db8c4831be7a2e435869d61bd64e58c22eb5a28f3e07d6e413dcc3a5667f45826e75c06df2cf3bd0ab9cd1dea9b92cc01ea3bab4b1e9124d14262283dc3e7a3357fa3851218f1e10c43dac0b09893ada6d651622eb675c9c80e833709e2757fd3ac56251f10735ddff252055d46bad7980ea3067be1a0811ed4bb7fa5243d08636fd182f4f26312a0f336b5df3a88790f3a5dc55ca9869394ceef394245e008c29845e64143a311db42435139bf03c041c03abd55bf49c33784780045c142654f4be1487d1ec627bc7440c727c88d51b5667e206adaf3c13fae569c20d47c1d56b721b72a852fe52d3a62db87552b593b5198b79da30e3193f250c1508d222e504bf65bde3a39e153a20746c1cc3b58908849006e1d9f91a7ca41f158cead3dbe65362b5cbea2822c0f00342df28e1b1a41ee2e5dc14b020b4d1e2712052aae85e2be3f512b52e58462c3e1d96f837cdf02ab436814ab78fac373e3a225f9307998a9338f77e941664b46d6a56a312e51de8d2ca86dd8b45b4da4484d9418ca1a1db707f6a93668d08f073c9f876360eac33c0570df3823b7a4611f48003c6f13830180523887e2d0b2769b60268b54f0289868052ab555dbd330214fb569558f644ab8cbde92a53deb4813cf6924b2283076b01fdf345370dcda845bf036ce26444d53f9092bc9cede4c5cb738fd71a782c4be0ada6d42f3f1e44eae30a7866d294158df2ca68c63c56d7854e4ac8ebd1537217c58810198db902559bf2851da1e1918e9128e3e6cd742fa2f355b2f3f0e69f5f7a5b273f9915aea36a1c943b20e06f1d8b8d85c6ce91e0572ed7173725d5d9158a49d0ae3542c9927276489fb76c1d926e0f2e345759d86b6c0e5476686eae5c78018bf1ad32aa4dd86273cd9c7a074319c5c50a949b8594f7045eb31fa30fb1b943b698255badf5ac94dce65321389085a0023634f15b272b103d1ce90dde170912f41bc6ddb946ee780619be01c563126533d2ee45a474e281154b068c4566db1609caa681c8526a9b2ac29fc48e02619e56c23c69a9c47328825f2d4132b9ab395bc8eb6e9608d6fd72e3194033732d1709b6ec3a1d4a4d3c6816337318534c7b7097b15868ea123ed5abaa47768bcf03c9e6be32069eee9250392457e1c2590dba410e41a7733ccad6773c9bc69881183ce9bd2a948334d557e79cc8300e979f06eca12a9d50039e60a93ec9dbc52ba892c451bd2ce58b40d01cb67a4e47879250d0540b12911d722db2a363a42b5a33143509223bcfe2202b733d27000d14912f1bb9509aa6560581ae9ced47a83b52ae18cb45120edb455c5c31480b32b5132ef169d4840813bec54005d24766761ed3969839412dc33b92ae50d4e65f0085959e94650b358998b4a3149bad0c1642482ad1d8322e27ec736f364c5cd87282c8c8e023c9cd1878da2f978823794e089079f40e7861d328860f9583f873df5cf541d660f52cb343baf44990c5f61ddc3d9e87d136319ccc3a1ddd787d260f24eee6c4f36b6afae5b3757dc31b11f004c710f2f2b5949c61e6bdc5780fa09dc2965fbf80a378903c4b3c93a368aa207b894abc09df2ee10009a660152f6a2ca43ee496566414502f20d03d87bb78024ab31d2b6d0f9ad03487cc13b52434889a3a26a74ae1b9409549657af3eaa43b1dde390be0fb499494c0ad16d76be1106d611172fe229896f5e43662aaeb5296cb8438871b0c66ea3ec71b87923a3c6684e75c517307c3cc1409ccdab52f0385935554e8b9881139ddb98269ee6c9f86153e56c9e323ad761115276247e53510a1a9516d102c5ed12950578d0ec7459bc815a4f358a92e058556491b167f07bcc66628fc30594276515996e3e63be28e5db27655a50aa8d3cd44a5e47006b38937e6881d147220c233d5826279fb07940aa219059389374b287115dc86118196fdca3c14eb4af9910dd932b19eef45a1d361505f7ee469870bb1457096c02dde53b1d5862c40458cba49d25942fcab42a2eae9420d08385e364be45845127dbd0dd563abfe6a57b0e964012d5b591b9b29cbf27bcd728f88ef7fe95d6d10677645be3423d6d1d9d7c3148cd1c87337c25af23a082a0029a90c60ad224a12630269918a6730e8e27e4089005309b1cbcdb014c57a1ef644be75decb360d6379cbbe0381270f94eded2dc482c095ad72c79706d84a5157c236c48163ab97da6cf531e9fb2e7c25e32dbd735cb5381a2fe50035aafed461b376950b2241e9f8b20e582aa546d5118dcf8da7e6bb913c91f7cfcd24786b7907564e45628367286fa525bb9d5ac5d03ae3e1f28fc70eeeb02993abf361a05f09b65dbac25e8fc2627ff0800f11141ba2c5ea5d7cfaa2a46c92dc8062d936eb906a9fa1852aa8907e5474a8c7520056b26039b0ac7397c8f6fd945e99aea375ca08c06d15b8029ec1a4d22758e3a37b012dc6824946fb4a1189836a6007e2857109fa78f2b752fac7690cb2a6e03233c9d923d695e70a14ad45eb0470833ed52de1edff26acd4406d3e14b307647d21ef4c195b8904bdd60d79440b7ac79742cd038d856dc7c402e8e535b6986453278c82e28de54f9aab0479067db8a1b1aee10ce8719b2e14e87709ff15c55b91c51be5cd8e0a65624d24e7bed008d30f8505f2b1683a3614b15e536b171f22b7d49ec71ac1765826fe5c3ec47098c4212ef8db857240c6ee2e0f73932e3b8f2e447720968d35b40cb1b74580aeab08a916b16346df0218835f42d09d604d36e362ec2ca26d6d423cb1f487d94a00f377dfcca61bcfb431c15b4ed254455107013710565278d5e0419706ced94a725002147be1b4cdf07a0a42a3038c0910c618ee8b1b90d2cc329de2dd67cba73618f21172ef7622b4b7a9de39a84bf440dbaa1bf49e62b3325772997624991cbe4590f7073245b894b4901601a90dc9013b99dbe48a01a1496aad6953109a23511b27c251b00e7e4b6763421717d8ab4a6252575faf078c108c089dfaa1b5856340e52ff61a6a37727c744669450af181621f4df40c8356b54a51745810e7c0c3c38829f85b1b9c543f86d742a99f8ab1c7710db2ce1856a52a79489e786ca5b11c9c5072758319bea920ffc788042259b9c78cd3bac679215bae52f37aac0d39effa45ee0e633a1f76037b1644b220a706d2517212f40c8a125da210904880361275819bde5b1bb4a38b1c18dfc273cc6e01647dcabada88374d336b0b7b60fd85f95dbe04d949f3f305b34aeea3af071ea54ca8a36440c4037cd52dbba72928ebd0337c2a667f6081ca3384394732be9ed18cb26c53ded414a4ef4e12e096eee06ef11dd354d795ab27ac6101baea1b5abc1ca345c0def081b3932759a365f8042f942817663dcb4c3993db8a973e99e11a2a37dc5e0e08d9e4d79a77010024c6e49689904b7ac0a1614c4fb8b703db30afb349303046933acf8cb485cf1f5c4aa7515a12a3e4de00987a1f022476a23ba131e92e1353b7071c915fc9165a422c756d9b12a3bfc6206f1ba5732ddc0520e92b2d1443aba89a1037cd251cbe4fa5620af6a8bd5f51f84157e3dfd1c9f62760911ea8185c1a720a0e295f64b4689572ab520bbb3c9365da0c0792d8a20872e0a75c35a0174e92f89604e65312db3006d8b296777186e098cb7f800a784ee8e4f92aa8d16d89c78e858b85db2cd16f7ca28ddae5001808f1d24d44f20de8631ab1ca1b0e01879226116e3a91bcdabe32b5e385003233a5eb1854be620601f1fe8c02bb960b69aa439e9812d14a5680d18da64c96e36f68b4b14049c692a12d6d55b656dd082c7a82cef440b42238774c65d41774abcd9930969bd220ae0fd60464a3dca860b3abf261103a588ca0d60732ebda8b00b714917db85b02c5a6ba44b6f6380ef728b3a85e45236705cfc44496e6eaaf296e2c03922d875e75ab32115e9e8fad7775818d1417a8202c23d191b828925394dcfc8640fde0fc8bc4b83ad4e72d2837060873f316e3de327b785f547537f8a1806f61c58057ef8543a1be645c2800dfd81c16206a6f1dd357c248edfb026885f8af3be59eb19397a0d1bb5c142088218b4984c3937efe4ac964d55943293764b3b3813e5bd5a97a5267bc3f246e60d0c41ef11e9f685345b5509d73219ce0a5351c8c24a7395f09b52060fcc6e1624522410078fb8a40fbd44961edddf865a67b5b036ea3b478568e83bc70d40ab54a69d5486d7544016854d63243158c690ad08d058045e30668cec5b742709c3bb3656124907b36ec4f62e6ed8c97508872a59a4e891f80a041252214e1a63321dccf055727839668efbbd2a76f0dc5b5a2050a78d91a9056187f270c3c2ee48d3d93410f8015501643ae71eec51726e1fe065905c92015d4b0d7d34de45b5a5d9ea82401ef6919f2a515d24fbf8acf578d0e37bcb4ff6cff1f9fd35f0b9327a853fe3a7f255b502d3c5a8fba7df260ffd1ff7faeff89dc6c1185f779d9f0d61c2a01d5db0468a11e049dbf04c3e00f09c303a796e217432f900364607a3013c1f0c0c373049c7469a2fe56d1fc56fd9a035a26ba9e35d2f28d3bcf311919f885381a160ee3ef17b87b9fac43f758e3abfef1c755e7fdb39ea801af39b1f3b479d6ffd42f7adf7fbf63bfff7bdfffbc1ff41a84ff5ad4ff69d4ff19d0ffdce877ee703bef301dffb80ef5ffb3f9fd5f73eabef7d56dffbc8dffbc8dffbac7ef0e00f1efc01409fc10f3e831f7d063ffa0c7ef419fce833f8d167f0a34ff1a34ff1a34ff1a34ff1a34ff1934ff1934ff1934ff1934ff1934ff1934ff1934ff1934ff1934ff1934ff17b9fe2f59ffc00ff3fc23fe0e235f8bff659bd8674af21e16b48f91a92bec6b4bf8738bff7e5bd79edfddf200edfbc867fef4f16b281820043abaf312f5fbe8ff57bc0fc9bef92a8c7ca9d0b0b2b8e40956c67e86c2c3a6480db0fa252097c4a33dfd2f5125979daea8228d63cbc1f8113d58f54b2dfed13fe7d9da3ceffaf73d4f98b9da3ce5fe81c75bee91c75feff9da3cedfdd39eafc2d9da3cedfd439eafccd9da3cedfda39eafc95ce51e7efed1c75fe9ece51e74f3b479dbf333edb64c2b044a333b9c457d9c0e90bde28b43967f4b64f7c53bc7071b0685d4963f0a47d19de82e4407ad5ff1d6cf4165fe3fc68f1c90755d95a3eff384aeb354b6a3995923cc9f0fec14b5f2038b3f36864f2d65feba5bff66b7e3b8ffda54fe8a58feba5eff3b59fffa32743c9228aaf6c41a2943e0d39c7baf2391334cf37722b5ab50fcbbc8fd20a99e7a214e681370991ef7a433d76f0523758d91d6fb0c590cb07595c548f55c323e351cfc7b2ae1bb7a77ee1b1b29d367a840c789f6cb53af58d99a6beada6a401a125a92737a49d43abc669103db4195d41c6961940b240825054b9b44ef31de00cd522951d4971158e340589e56658da37f4a8e125e513842695221fa495bc2b79e711272554e8b462829a01780695a2c483f3a5aa8af7a12d1e9ad732572b9547df520a3494ff20847ddeb572a1375cb5d9d2a558e26ce96332b56f83e394851c8e4bbd643eb1145b588ae891e18bd9680e5688a6c208609c3df4f1e944550853d07b1bf8389575069f10027ae918ac8a64bd1698d053c1c33a56b35e9d21b169c3630bf82e02ac66f1e123f424ddbf77f2f6249a7c2c6584ad7473ca5a578f44bb4079577ef8817dd6d2a1c829569089303075bd40aaa814c88c2e75b8c85095daa255a02ddd508865d01344abb645785921d81ae9c7c72950b481eca29081aa9a5f7a06db296451041163b3803ff6e855f9469be01d11def647fb25dc2c832fbcb51f3fc191b4b4bac4a30beaa94c2a196f3db2e4cd06a7a782158bf596ddca2e746f89ae53a3b7e8de36d60daa02818db06cae604e26ab1a32f0865770bc95e36b3ccc90cb24c95d0214de3546e37882dff5098283417e874592e92b8a822c2b70e1f8c2d0237ec7c2f28ba51b6113084277dbc0f7d2c945fe289a5fa5719bf86c840de2a968012cdc9d78da95324a5e6d010661ae0b79311bc2041df2c192cdbcda9e0988a1fb787f0482a5ff1cec911a524081fb85921ed6b2386da6ec4fa71004c81075cc6841e4f48595a68f818985775915c97b5d6574827dc1db5152245ddce35a7216de742141136137bb7ee772abcd6de20b4f829fc0d11de66fab32535dc342c08fb0f81cfb6003997dd6d25166bc62ecbc5083a77c34cbb35b6c841b4166a07a6bccd73635b0cc62944acac2c60a2418cad856113abe596993cb59b0dfb70352a436f6a3ffa5bc0d1c9ed4bd8c43772dddc9e43c1d866d0c64786efd26b11c8cc8c7cdd13d329efc70e1e4b8cc32ea3bf430a31195d48d9deadaa63d122207774411b77decc722c400dbf87ea9492aef740b08426a414e7dad59c38b72a1eb9424198fd1206204ef454cced3a18a460e775fa3831d951423eac66eb8cdb591575c158f1caa0b698072acb53e468595b53e0d5c9865303ec62eac1e1a2663e7ce50fee635f9f935c39f220c6b322c05ec53b2f2cb06ad28b886105069b61ae82703659168ab461f1a623e575a6b1367d62e1d63790cad2b6dc25206b5e0477e3c92925e1065c9f6b73c2a93826135a220b8913d26b924b8796580aa47dd3b08ba5f0f3cda11b99b76405f66ea8ec97351bdf5636a50ca2baefb9976f80e6f6239ec9937c20e8cf9e0a1b0e79ea5c46dfed917c29e8bf6dd61d1be0fcf110213e5b9f7bfa2be6ba44334be7699be171d69af525f0fab21296d59a7c1b0905833de33a7f1d12c9f655073869ba20ba30615e968e3804f9978c0a69c547cb52f39263a2e66c33432260f8b006917fa11ce370ef286efb28111cbdefe9c2ec84a048a0282076ff0e6549b5ecbdbc0712463398d3130a9faf8603bb5b85005ab02f3e61fe2070f8b3cbd1040c67361a3d8697a0b7e438a3d207f6d023e1e5614ea7f01dc97c6e0c904e7803d51a2d4ebf9862ddcdb8dbe6e05c18e53c8961f3cae7912e46bfc382ff4f690418c9df4fc7b761b28eeb9f149d19ec80e5fa6e3a7bbf019a4b000c416869af150261202a3bd25e9312aed8f8da4b3e663c8237c75c213ae2cc4db4f403a562483b609fc6259fdea0ba0b24fb5a187806305a824e263f36b99bed456c7788f9d38cac6cac28a36420ba34807f6e9fd69652768615b577d7a4f012b7c16caa7239e65063f86306636bcbe424b48ff6841aa6978a196b5f45a9e637dbd384db20ee3952bea6d893cef1c75ce2f468be17c301af4176d28a397bd3a479dc9f97878dc4b5c990f18f57ee91c751e44e66760617fa8451ef5058695a347fdf65ea4f5e7f348abe319cf49a3eb191a778a8fe36633dce3dbb123c4c3346b47c8a40d16a65a210f533e56c06ef5888c8c66244ab54cb12d5d78ed73cccb701ba61cb248904657fbd9b024df47d19784f34399d1a7fd4e68f49f1a7da55084ae81fbd9206e8719f37b8a686f58d7224751f85a43c70cd8442e45ef19a3af39cd547b12271b569534e8863190428061e2c2d6e049684189168c378c2f0ec3834863deee984181867a0701aee962f554dd900608de0789ba2e6fb976580290b3cca30f16ab6ca84e87de7db49ccd9ca17ab76e85b4cee8dbe87a50fbd0f7ada7cd27e129689b6fa41f9b41df27acc427aa089e9ef4e495d9bb9922a70779532adf262ff0eefafb23738af135c38ca0e0314d3a49376eb202aa551049e95bd0f6e40a01bec2ab76d2f592ce5b13c885858160c3c0092ab67b9e6b8d8338cc311c6bb344acfc8107191a6e91a6ccc24bb302e51349c286f9e59a0db4af1ba2895a66b6130bdbbf056184f0fa0e59265ee9ca910c1a98adae50760cd96bc720d4d6274bc23d7ea3ceaf397c3f090f04f3d7c79a5f2b7a6214ceb819121f6426f0b95de4c56912947dfe83c407bd35fca655e8b3ef077ff7a2677abfa717c4dd26733a435b02cf91582f887d18b69e7dd1f8c7aff3a2f1ef93210017517107cb943d075b45782e4575d5e4a88bcf53c6f864ca60a6b563b1ba3af2dc07372ce91a57b2736655887c23e1f40fae91da2a17416068000892a17c8e8f0fe7b3f31b7ecf377884e77ba38f843d1bef2c12370a9d164c8fab924ffbbea7592a3e09c1fac8adee04739cdf6095c9a003a3204fa8d98461ae2c58bd4d7ce8853aec0a9443430cc73549d9f7a25445f23c74a92b994a378242905fe5134569ba484c4408d3cbcc6fbe09124fadd77ab3c52f53145b804b1fb4e0190d7a5c54a5b476e236d25c2b2be9620810584859b3c03b8d7da025585949a4008add91654eda3141b2889eaa36ebd8147adb0dbabc64db377d328a43b4b0b419e80b663b765d6282137e12297aa1ee7984d15443845176334beded64604b840b4728e60c20e50a6eca31e809676401350b7624b28db093eb2a7d1a36b53191b58d4c647bcc82650f6c5164d19245f6c0e456d632731151c81696763c1315dfac65e42c43852f7a183fda8cca52bb07596a31ad1dd2b69ff630d56e7b42e043a4ed585ac812ddb62cb52996a1706eb6631bcbe7b809ddea81d8ab1e7a2bdd238552083bcf84dd1389c601705da4cb1e58bae710e645faef964c3b855aa5aa7b59cbc24b881b2bcd3e543d06a9220c52918915291cb7e4cfc6a3b2d4d86cf6f031e3877697b2c4f0d22338699b65ca5a4695b2d42aeac3b14952f2d943f32689bdaa9d9195863ca84c5a449a5ddb1f97a92c5ab9628dc8ec11ebf669d2708b41356e5930ca52abaf5962d338cda19da265c1eb31d4ee58f8ca125b21bb13ae6d46248b961fb396d9ba8c0d8cec997714ed01c2a8aba2ff65925fb0a895ed582cc9a2399327ca83a8ed9c63ea4471364b4d8a656df3c73179aafe9a452357d91e138859cb0e56d6368495a50690b31d138bd98ee1ad6cd7f256f6c05651b6de0361fcc442563645db7c307571064775840c8d8465c15658e26a1b147b04eb0f2c8e652dab92d923c6beb25dfb5d59db4a178271677c68de2b6b1bf2cae2b30dbb21f11987dd90f058c36e40fa78c36e58fa56c36e987d88340a48f7d79db007cf343cd280e4d986ddd0d6330e8f06f2b30ebb81f115874742f809874782f615d6eccff0e133118fc5d85766b3bf509e1471af7e68ce2e63e34c75d2e3c16f676da2f980c17e3b8e7d1afc7692d06c0a66fcb2f8c448e2191f0b493cc3bb21895ffa464896da06ccda76fb00ca1e7dc126d68e55d2b3c4063bdb63cbd257455a0de279173da3567cb663c825db5593cfd8b05a96dab3c992275fda016ddb9fd98e119c5805f7b8270ba5b01e5af6f0dd9fddb01d6cadb4d9aa4b382f8b87c86335c718e9149c24a6461f7599f04ad103afefc8885355e158ec6b50a3ea871cdba75fb8bd204155b27396de7c6cb4b22eab74458c193c0bda2cff98727393aab6c8f3967f981d2d5f54716b79ed1e49812ca08dc4133c75e31299932189a90df14510140df027543a35076d571419e2ce43082f1ef84e1c331a832da94454d6b2c4a2c477316cad2ba84ce8964dcef4ea66c92e23d7ca3a6958beb6a9767dac7470c968d9ee5543677f175c4197a23a2e1b8356a2dfa31ff3686552c9103b487d90fc1e3e50181c54308537cbad72acac665b6011b9239c39d79eb80041fba6a9e6aa5a97183e9257b28c154d92efb60105686384d4cb06c72d9b80823ce8982196dab88130e56d12f64b5387f4b74dcdedbc6dea85f6fd15304e09b4894684f122ba0f360b48852c01b6a0b1ee4122bb4c533dd658db6aa28c7c1378c835f6384a0e33482a4201c6e9b612d66564902d7d3e8db83a98287436dc3b4c0c0b88a0d6d46e289f7240d896a3fa2090a6afc4568203e476f076b071d29c2dce47cc707c8de306da1e0cb680b989f7b193b16a389850f870ab1c2d5f08442344dba5aa64c40c553ca4d55570aea5c349d70bfadd58104d0f4a4a103491970a6ce3b7dcc637dc9a37496be214641f1e3f465ac9d5f7cb45987374d1b40b874987d59b49148ed615bb10fd38ee8a49f0b6dc40beb408d30ecb0e08e813838fef33c2d51bf4014c5d4346a2d827a43d66d3e661db20de295ed9cc6434f6c5c3d613f81f1458af8c737a45232019f8c918a7dbeb5643431fe7ee86d42ec3e061a203f03eacf82edebac92a2cb43aae6c9a97c4251ad5bd464ac31f877bec3866e66dd132c48e5e3bb6dc697661c496d74e44d35411583589382adfb0ff4adfc204533fe0156f62a4a82eeab1bc710b949c86989cbc4459e60645e2e90d6ed3543bf518f243d62197250a7fa2c1b02bbc066265007459401cc9ed46d13b7c06132572126ff4e895657a4f277126d646ee48a792cfa4cad33cf26b3464548075ab862c531552d6cc7bc53b079875a8f5c9736e2cddb53697612a0908cd1aa74ae5d4f3526114bf54d5e573925e481166a82beae7c073e232ce1e72a7833740f0e8f1af65568a6add88b5cc481fe3b9bb2065090333d46c1d56a7fc3c6db5839a49a838f3da818862dae754ba9c850bd7a8752801cbe7d25a7c241a2af9c75198a029cc2ab53136951f426f9c1143d46e8c55f923e9d18218579422c0d93e6f9636376a2979818f1029ec92aa7278f79be5e14d454a0890efb048daf4c7e0a3eb1350708038e18d3c3f9cb95669d628279fd42175d3e49e498b9bef5abafe8e5789a6252310c82ba74d50c6af75a9f2db560e50999092e4dd9224d1c7af35be17a79c49181da72d6fe8a80019298adb205c304aab699d606b9d6420cc9d1abd6dc5a9e4758c5f899a9ed88fcd9d47cfb574adb404b736d018c192f801d231f0e58e01e03c69b27747a1046c0a4766e22186ff0a7b1daaa4a639848ab145da0413bade19154bb9d0540550117f8bb361de1e33e910229a545709651d2ba56b68b12e8b766ff9150a94c0ae50efc59735d565c98635749d409ed247f541cb0d8bc874e6f654b22de89a75aba0597edf9eee36ba104ef0c0f29bcc45446b88b3345a14b9b0900d4a5724556294a1f0cf58e3a514883e4ecc8476f6a44149fc662b87db6de390dae026d8663989cafad9ce04cd12457edeab93189c12d0df1765b9c4bb022bdd45e85d2785f18b47a84a513c5caec8163367080656a03154018ed71e474015c3740557325701f6b341e748174a2c199f129445daa99c67ea87d548066858ca1ed63dac9dbecfcfc18a15fae23f473b6f1c9eb41c8f71fcaefd6991c60445191644d4729a248c860e87f0c84ffdc2583244e0fe315dd17cbebbe80cdd60e7ed010f959c3e822065fd08a3d984563bc2cab2954ed05b23612538d5266e14beb2ed511f7cd2f62451faa5927c70a9e97e4bb77b02ed19b43a3ce7546cf10e55bd50e71715ed0d8e8b5912c11f071ec4e11c583010a4fa629a751b344dd502e556bbb8187a0a7cd654a7dae4b268c70377a2bb5cfae6a4cbfbc39a6123931ef5e7d678bc58d3933064165138312cfc9e13cda537aa2c665ae3f1ca073137453e3259909038459d9e04a9bb1e8522f2d635a6224ba7bc5cd74e6d95752a27f1f9783a56554bd1377655cd929010945ab9a065a9a5114d87d2880442ec5cd2f390c8cb35b80a2e3453c5eeb6f6982bb87c4ac6dc17386785cee0ca050f016afb05c426ea07bc2e2cc9464045d3c9899a02c405e111460d609038d5609ca6629a0a5bd32cb141f1ba844cd4c18127933495fed8260561bd3c914503a6ecd8fe6f75ccfb8eef646bce51440f0757ef5a1859e1a3ab653ac1b63b6bdaaf61cf8ad4c54c82c67bdb9c090f3145e4f54855977165b5b4aea86aed09dce3db3f26546794c320d31e819418ebb4115037d91a6fb3c8468c148d92f698a9d5966fa496a287b816cacd767da3e9b5a9d137b7440820797c916649e47ab6c2158427edbabde8ea075b4cbaba0f2be578654e5786883e2029d1d64c9ab01f97cea45db73402779a1bce10919e5a25079a400813cd5149592c341343b448487e251a4f52453cc3847a2784e507e2af21a11b93f8231fb263da5024c7d804d13a627423ecc3e515dac3c7e4536d12c2a775b6437647111a3206bdcfe16a14b4a6511374528d1f26c3c2dfee9cec943d57d662629897bb25f9f5726769f0ddc8132bb1159442c94eb1d286fa3c849e062f60be0c2a4784122d45efd17ef7b548fabc6594887bfe1a25e40239c4136e9812332daff6541405a64d5814d72c23574a613817a057701f0767f487b1d426bd58390e5e5c02b5fee5edc3c9938c6ea08be38cba94ad03bc9f29296d1b77eb108bf20214ea342d1d8a27a695e34a371591ba329dccc5cedabb670d4492d60f629e48cbdbb04a40e095307fb0ba42d6712945d5d4d1356f961080dbc09b0e4937d20280f2c6637993728421b060fb4ab8f1406a9b0ec5d5af66352cc2284d0af9164fafb4c855f23a1110056b729197a2e2f90b7895d044342da3cb121c27c9618978a361d7009dcc30b9ae8dc2d5b7ed13c89dd61e00791b996b03031c3d419f233c8e01b6758c5af3c4f9e0734394b7360844fc634c854adeecf86c7769731833ad6388347edeb5ab42678e9462427e5d208803fd13ae41c2cce113996dcdb3d4d75a731a46186b49d135e6429fc8ab85468116879659ec439280cd05b67ddf072628a91ea47c1314e3cc7ad3c96834c9faa3e160bc00e65b41059e697dd95f2658b3d497be9327e9761eb81a22ac4ede9dd8f581a1c06100ec06b2001dbdf5e80b3fd526697cbe8460dac766e21aae316e4b2d8af43c15492cba71e0d1ab918b9cac72bc6a4a437a3b4c50d9f4c8fa90d6c7be4ff575acdc190fcf88d3b765f8296d9ca6f4de07c39a0c3885dc9f67a3fe0909ab973abfa4abff6758c66004f044e7bdf902df47477b1986c65b66e4ea5bfa7e47dfefe9fb037d7fa4ef4ff4fd3d7dc1e017385eb3e30d3b38cfd79ce96bcef53567fb9af37dcd19bfe69cc11c984e0f1d5c573011268ae244b638293e84cb7ef32d2f812b91c784df21ed008f4095aa9243275182be2a08fb3e16d7f20dd7f20dd7f20dd7f20dd7f25b6effb7af531b1becc9f5f99671f12de3e25b2ee55b2ee55b2e058cc415adc6c1121ece201e489f83e0e6e053a5f38ddab21001dfcc088b6b699691256262c51f87bb15d43efde67524277b95423b19a7466c5183808de9c7eb9ad9e07436989f652703d4538cb61fd80c352d304c0aced1ee05ec82e73b61a01964d56f814be5e789d165990a7fc8224bb245d5b85e51b4bd2de790a5ec2300aaa85a38a8201119f7e7f703a88d04d251701a1e14abfd0124da584c9872f01a013d8811787069d5b31d1e1772fd944d8271fb9ba435464a6292dc1fac05bcf4c1068336c20677606e061f6a3d1a8d376ad938b451b05165419799f94618913b69f8b19766e90cd8a48d954bcc8047c3a189d69d226716342ac1f2c8ba31f11d940f6036045406f475254d425c33c18c528ca0df3ba3e7aff8c51e47e732a7c17c1c66890a5d9614be5825911846678bf3112970c08a5b39ce1356db0faa2091270f9d497e2503ac3cc13574d09bc327796c5a043340a7310c94d5a6b067813111702db573600a75a96fe6ea379240a196a7ea25270ffc7c26f3dc4f80a508ca70a987b2f3f76fe124a4f2c410f73ecf9642e4f1b1be895ae21137cb25fbcfdfbf6d07a5939369eb30e0189bc12320348f99e00cc85b6cf84732976640cf309bd8ef79ab2e6838d853b19373ef3593a2a0a3328f18f47834fbf9744839c6e58526721feef0d349872b4a5c4922cc69b25666593bb70c2d81b06a6792055cd0c5f90914e4cebc6534b7abdf39ea9c813d17bfad9cf92de5ec874eb4c5c1bae1cfdcf66edcb68c1573620d56366876fbc0c4ca6c922df09fabe6045e7630d97974fb25bd055142365fe493f92d17d2d0457fe22cc5522615da26db1ab2094e94dd2a6ba7baa6772b6a74713d3d4dd56a8300b92f5935680e70a34d342472329cf78e4783936c3a9b4ce7943a639191b254b5a5e78bfc763b036304235f43d03f8ff924c1b162d094b42a7508128dd3a73a870bee5cd4ae3192da05a22a781ea5f08d4f03f610f8e800340d92d1eff0459e33320830bf383e1f8c2fd84480efeae1e970309b23113bd5069568691a51774057c4faa5555e0655e3d82775789bac36287975250d3d35a2ab73dd5849d7d8040dc8fa348123b26848a536251aec8b23267090b2c0cf60062bb995a7d9a6fe14b40361562475e34fc33895fce01a567e63f1740732dd818cf067f31825189cf00015552a1bac73f0013960afd2f17444261ea387b22848ed33c3b181c276b26a620e343b141548f1a2496f9f98364432de11bc9359136b1d962d02c25b1fb25064ec9edfcb67c2d7b710dca1991e60f37021f482ac2cc2e387db9368b4503d049366a094984f826cf4a80c2baf87eda8f2cab5120439f4568253a3b7e152b06a656ce56e675ae9265508273b62c23a49ec835674cccda6e19105567b5fc4d9420f5052e8d7844301460729237edf57556bf2c945153bce120727447e300ab1a2d0ca442aac0db79042d7563b3d0b5ec63ab2d7c0cd5c317b99a299d8058f8cc3688c29986a8bb383301c78961bb0c584cf1487279491790882a17e734ca7a4d334b83168a15b6890374e9a4a94d8e69d401ce62d72a6b7e3855116685003cc4da01bfd036d824101ac61259924f1d1674e55ac93eac6d094741cc605293ee448cb665a8363200be941310a3f665231549ec201d53ba3c4264322da0fe5235fc048b01e09eb22de95b472aa6f9297730b34071c5f11e0e4ba8a89c230bc86a516c6220c3018f873bd95831b655d9c017ed0a4ab100fa2d46f2b6ee23bec55a51de61bb6ad60f229e852f727e3c5e067d4a59e8359bc4602a703d3b4775fef9385cc82632312357c8c952880075e0dd8504a68b88ae5f8598cbcf1a71f10fbf07367ac430178702f0a7e8d82d4d9999de1f7dc52dc6613fc768e3ad1953f2c38a135d8705221736d7c07b0075cde927c26bae92d104f47b037d01445ebbc7ed2c4074283679031f3c88fde193f6ee8cfd04ef2bbd6085071831b7e650fdde04d62cd22bf2c8cae537a61497e81e614d5a471165963f9251b855afab2803c1a563e30a20bb3e643143f030044ca429835bd1024f2cb30a46b59b1eeadb29060582d36ca529e137322e121714107b4b9d8b23da176614cae59a7ebe1762b0b454f39443374b9a8e02d1d784c80dab211767025ff3ff6de7cb76de569147c950be37cc00ce28324b6b39c0b0c301445c98a254bd6123b01060425b624da1449b329cbf2d30f6aeb6e4a54727e17df007381fc43b2ab9abd2fd5d5b594a68b5271d54263eb3ea9d6965771406a4a13bae3c4d2a4d59199a5a82848c1b93831395c53613c2aef933415ab5c1622a5073a760915b7c393e4fa70c775dd54da084b6e28e9ec0362dda9541ae98a1ac6f630cbde99f65aa9cad1a0146e20dd4fc4b5d0a998c6009ff59b25e6eb487b8cf63034958f8916a592f54ad335659b61ec27202aa96ce81ca38eabca68a11a40ecea7915642f49c91217f32d7971adf62caece5fb7b9d8ae59c05b8bf5bc248ec93987712e465e6b7ba6ec9c000c2a4982ea6a9dd3ee5365442316dbd2ea871765b231763d127655457f8f1cd44b822e7d64eb8f5fc51ec53467757bfa472490f26d45561be7253369ab7c36f50d675372301ab20470549fa007b69b7e92291d304d126f176a9a93d28e4909460339a3c1914be246d2d0648eef76d80ec276d09a75d1e439df84ab92bc43aee9b66b5592a79c94568d39b5dc628f16dd57a552c4ab5da90cf968b414ee554a07246d6c7dcc8d19f88c1c9ec56208178d8994756f676e1b6ff24cac9caec40bf656c6f820c998bbb752d5049de468e3b49b7970839cbc99a10f2d66563a5e94f23259a1af8b271f0710ddc8a2f511a3cd28bc0dbca027e113d6218bb4f8d11acb77c109ec4de2a4c34637bd2c3ce002c4eb3d665fcfad164a587d693f573e090f3e9e191b1dcd967a90ac44823436d65178b46679ac1eb5ef4e1a53df31ec7e3d6d088fc9d49bf6fc892cd57e7d4b7776786efbbac5528494c90b5f49751cf7500d28f90b1d766a66c24a5637b7c3fb5bb73891c3cb42feed20180cdd08449c9f9d9f01d1e42056a450972c5894826cefb0c9613a583b560d58cd1eb5286ff30cdbc7fe5ee16e5b33a58a2ded427006a57ca0a7d157d7d0a4446ca294840d3f29e107ac233cbcf27e4a5b8d88a8f139362a4b8f5e2d9e6b1ebf5ba4d2a85e0bcf7cb59c916aac18eed4bc88164fa33cdd2f13be18406b6ae5d98117a68173dd6f5d338959b990344e513a3a8b529134efa4a4a6dc8ce50ee2500b5d325b4375b64889c6ae70db1145244cb1c4a1bf005dcf528738ca80a1b35b34bed158d126dc81cbaaa628c7e6f738af4cedbc22e100dd75d9760843bd2d8a5269edeca4f7646d4efc3391339dd07846f897965f476870f777c6c96ed4beb7e0fb72a25ce9084dd29fd87df209e001797f6045ee93abccef6e7b07de43380efcd978d2fb0edbd4687a8d3c0f9519153d91344ef713175ca30344809e4ad0c90c5e88009472b36af3b4e1d6549c25287fc42a5659d5b297d18228a39dd533871dda70bc7a72dbca176ff7b0bba20d53be99b089515423c7a35b6984e25678ce73e2993b5c895aa015c8014b6bf639ff441361d02742601d6971e9c0b93b6e27eed8313d66e5e9c3a4a245754d54007bfe085d66f7ef94a712cd6c40e19f8a73d0d7caf20721446b6fa676467e01b90f72d942ae3b84c89fdb903d0bd0928217d148ba6da495e86e3acfab7fe10f0e6db774a254ab5f46660db592a4a190f6e39df83a67a976620793d9e979aaac9ff130431e1c4227e2f8b7c46b8f89ca745e86632760ae440e82e6de978ed71941ed35e8e1458c22568d91b0a611e832bc4b5122a64fe7c224cf614884537ac348305fa5b29c6366ad87f67680bf7acdbcfc70ea8dbbc1341cdef67fd03e633d58e285001c80e43e00cd871a74a2bfb3894c07a813b1053a2c3029e520d1d08db582b952d5d438441452102d8c3a9c35b4280a4dcf2e5810403c33c7c6ab89562b9761b94da854cebfe238fab9ac1cd3a51ecc57db8a0893a6f4d8e2ac34d034778da8ca7cb495659d1e45bde0f77bfe8dbc0f1addf6d53ad2eda87c32170e2b55f5c4567575d45468d551ab5e462c87a17b25946b62140cb349b451235239e46a39038e0034ef890aaa210b554e0e0dd89607b74f14ed60fc390e948c4f0dbaf2214e09016b97360e482e6edc7b22160f45ea0dda68ca965cd13055beb39682b7503c5d456cee9bbd1a61a10d6bc658ed9562e785ca86dc8ec26061d2d2e11a10c45c0062681aad8ca7dbebe689b604e26e5afb972a4b30d6c1ce337311e7209b60d28865b4b33582efb963a73653b153dd34aa9cb046f7c52ff9931a28e6c51ad7dabdcc762deadf21dfaa62f98c4da275cd68a52659edda95296b44da8b1a6d4e25c821739873cc6f11360fd90d137303e26553c2c68034144f0a4506574adb0dbb4380d9fe02f6d4ca4e74c416b2ebf991b2a8cd41f4bc610dc63bddebb0cf44ec761d4966f698607bde5e8872a872513cde98b3ca112de7155bd01484ef4bf7f5558d787f0b859c342b37159d701dabd364a17ad62783989c1c4549492cc082acbb140098e686369b8d46c1d8f72641380e80609cd0fb49cda379b2247bdcdcfa02338c9ee44589824ea2675952a54a6b732710891c18150bf51ca869e7287cd3db442b35dc565459073681bad4414648247fed90120d7f1912267f1d9631cc4e812cf274bb31592ee9af25fdb2e34fdad0708182e0645d92543e046ed52a7270c3922e9a5765128f3101f8f23113b61e7d2fd73940b6a2b12dfeb6b74665b18e48df269af3beb54be27c07a0b71cf9164be49e8a25f7659ae7b10dea2a2fdc50993fa976a4d7917550c2905c461181064038a16775033a4c47da98dc95cbd96099bcd22184cc4e25cbbd10eaeb48afcd3042edc26db9d99600be082f2fc2d5e2ecfc8c283def764ac38afcbd475945c3c8045db7b9d72a8a5529de42838e37ebf3a58d3580cb33f36f3eb06b238c0480de729651ddd7981492dd7154d0e6f430e85f575551534ee145cd3391cc0e6da33920a3abf4aacba59fe74f894c1100d4cabf895eb964c6d4a4a8c9187305de62a1c8675a9ead94d8b460114b6d45069d9b1664d4c48e51fa98ac6f2c889c41310661cfec53e59a47619ee8426b914383d591ef27e0a029ec7d17becea5a9e846d32ca9615316ccf817f90efe7c70be7f90504080d2bf83095ab122055d2be22cb26eacf086d13ff007d3a538c6edf29e1f00f203bc7a159a6892cc598f7ca52af6f0b94cb298dc341e24c30e443edacf0bcb1393bb1c8736e6366b0ffd191a6d1e0d273d720a3eecf787f7bddbae314555b2084290c586f2f4d8ffa87bb3820ecb4524d1ba3ec172baf1a4a86cc9d8f49778b462ea795d6d5273264cb29543a4bf269a697f8fdf2d4e8896abc58188a311cf04bc16a1613f4a5319847c1dca179944f458793c94c5dca2906c0d4e65eb93af77cd695387ca42654600c9f1a5115d7e7be53ca9caa8dc733fc06216d70e3b6cbe49767cceb1606920277b3304682b9ae685dd880000c513c8262a57494657f5f4cd85dfd8b38de844499fa0b08553baa381e73490787498bb01664b9b044b6e05eb7f36cb542945c4802b7420d24dcdcd58d5dbd1667c2b33525c788447a320d12cc560c8011e38deb6aa9db64ab5e4262ff9de8c9ce078a5426bc851a922470049c0320cdda4d0008d3d9f1a671143e33584bc61c0347863193ce827233e41c1b16d1f73f0757231c4a64db63cce898e5232b20ee2c3f1a24cde58b19ae7a4c67b97a8dc7378a322bd2d2557831dd4c00b9e63e53673695ff6e809a74a02da33958c462b8c6d24eb477539edad1c069167e16c29d4d3b4706d8b23d72544788befbc22d29a6f0071903a4b4d55458bf5347777147d30f5a816ad3cde1b7ab8ae5ec0975f1b55a20a96e6dd884464938a4769a996f96bad41d863516cd51660ac8ad40202545c0f8bda84f36b584399ff64931fb96e531669be78da9146f90265476056b4826bef7b6f88d2969d7e6f847c85a17f73df9b209d339cdd4e83b10b42ff68667ecf235d1b9d5b6da9cdd84847a223b6b15a210d8cf6fb5d2b28d8bfc62b359c3b617f639a485bdd83ac6d7ce8e49911b4cb33c34f40dfbaee2c44d3b97f59af3d18c1ce034352f1282bac871bbe3ece4b766854261b3a2229948680e2bbce60ccf4c0638a2aa6f94a55a49995173ca16a85f94bbc0ea1a448542495f17215a5352693a11868fb53dc7154d601ae181c9d40a45920933a898df5a2659ab08556b925723bceb8d8913587ff9073c75cada397848d072d6d1b928445a1f9b28de92bcd7b8f09cba26600d31a99a6cd1ae8409c7d86cbfedde95b0099b0aeaf976e3c540a891696fe9df3cac04bb81012a95a458b7db7d802399cf28971288a4cab3afc80b8934d1b5917634e3fcbe5cbaccfe688833d65b645ed96d77a0e9ae6bdac52a438282e845c18928edb2c56b1ed8e58bd240b354a5e553a8614ed79ca25be77499a1a6938141760a941fae6ce7bfddb75c0a555e589228eb546e740f2ac4f7a8fb2c40f1d43613c75c58e27c9de9d9d9f3d3e1be54c484f684b11dca59d4e42c607a1dc59347223fead83d0df6a1bd41d8592bef36fefe4fedd6d0afb64a48b8f50dc9dffcecf0f90cdf43819f32bc5fc177788e4e42714493e799fbe23a11b1547968b0e9a2c85966b45973a93355d2fba327f168bab5a12fd9db24642a285755044d57a9ae3265158b73ab8373ca94c4f73c792b1808cf8d3c89b5e87e3a01b3c8c0cdab2bada0a390f6cacca7e6fcc7a1e5ba506d609cf49de83d0c2d3a190b9ba3b76a93a2a55458cc1cc3a332f0458b16b49ad44cdf8d1d0212ccfb14c2394a02ad99b175052b0d9b8554021466deefd9d462bd8513d4b2f19b898ec3680edd9f919ea55c6aa54cfa173906f9711de083806a6eed5fcc65a9c72d503c90dbb7a9563ba56959123446d09b450082b4da6f8c097145580b729195ac3439fd90b231f6e62024588d614b28d317308b00bba36a9acf1c33c8dc5546745e62c2f90b3638bd10312e6d6eb5bbbbe2413f32df0a7e860a533eb777afd3e7e8f82db369d90f36db5c8c9253eda1c63999fe99aecb2927ac7d60ae277b6e93261b648eeca172da234ad218132f00f8010c9f9c7c47160e482d1d84e72eebea14ce4924e8a966793ed62418679aa72efb3510db6994a3521622315432884b6d7e048d85c9e9d9f5da154dc5c883315b75b2459f294909c354336f99b1b1cd670da0dad54d5c30f76939fe690babcb6494aeb0a006c68303908e76f75008dd33a6c6ebec86fabb9a99f937bcb4da2494558ec335bb558864c77b96b18411d58b4336c43e252a21522836c07d3c09f86adfeb0154e66235850c3c97488ac4871a40f65c1b56aceac2716d86acb9d1e7edf8f7bd300f7173807c13f7c6c82fe7d35977ae636614e352436bcd81720a9c53c4353ddf8e518fe606767febacc374e9825f98ff2e5fb713f4295115a4a9670ae89e2840d42c57336f861aa464bb22a4b151f58eaaac3e8ef319bcb0ca3f8058e5e6eda6189f3a2062295d0cc28026c8b5519c5ea5629129c5be665b42267dc737c78e54a6eec4a741096cbd50cff9ac9af344e87b5d6445b0d7c44cbd3d81ab660cfea3b0bc93331b99567dacccb106f5a8914af151c10332a415c47247a7650295140367925fa56ed8c81095b622829d362f92ec344e8dea430dfd9c22613926b709e29ecde9e43c663090c34dc2de65bf4a7364f32f62496d7fdbd4415fe18263aa8a5148668352ca4ae09399b90476fb8dca6b0eef23048b2a4320133b87813aa8dfe8d78d315cff6a81b4b99a0878a723f5656411cadda4023313a2e13b67a09595a04841cb341622e8314c6c948a6ccc9444fa26554263ca8da5115b12fbf75a43baea155d8a0daad1bb51f0b3d6e974ab115ce4630e98ccf49fadb92044812b9deb2ac2e41b15e0fefccf435afad1da5d0709d24c509c65a8f690ec33fe613fe67d802e6551ef11f9e6e255954ee0d2544d4bb6839d1748ded27dad4ce0b47ed9e8de398a64b34dbe06dd3d4b4d6efe0c7a1c8700a0c3d99d5a7238fa10bfea5dd3a8ceef4419ea11512e2a19861d1f22641e85f7bc80cc1351ba54d47e3a0d37b680011c1894eaec73dafdffb09c4b237be21b5d64358d80f6ebb28fe864978e3b1f7a335eb74303682207df9eedd4ebf621401cc9a217edf1b8c82760dd1bb9d7efc7c08b9bc38faf920d2ec3856a73ff41a619faf6ab05f5456bcb6e0262b74a859175c3b3735a23afe683f2fece7a5fdbca26567a94a7bb2df931439811d273234861df7318b28a56e9f48016aa52186efe17c3083bfbeb6c5cafd0fa617df0a6e8c759e9ee30e6be6b84212582fab3e7e7623d8502fab2e2f5c940d75c8f3532df8f9caa819e0bad89e4f9922143f0ecf642c641fb861fd4c8685c4e6c28fdba9f71006e3b13586898712bc28dea9f9e4ae6f97455a8aed74d36e9b8676e5e1e5585843bcf3193d8ee754e4c9ef66c3a9c7b96b77ef22f766b5edcc58da115aa3cc8ba9e389ed46ed47c800713c08c8a2f3e4e0c244b37d25acd64c731aa90334e6ca966ed4e99adbc58dcab224e40ad081cb8a6eb2368337a9d4866fba55542ed69651dd269d8a36ee4ac807c12fbb8833abd446e8ddb68387a08d24f67dd09adcc1d9a73ff4bd3e509f5e3738fc49b87c433ef912946e4421c17e322f91f92f80f641539a2d13ce31f76b95c9468d8dd2c1ba3bcb7feaa6473297488af56d6c9328cc26b6518b6126b948d3a46db6ea85d985291a7be5823ddb46120bec219ca4ea9522962ea1b5b2ff506a46d00029e604aa21a3353e682b372cb7f014c8ab9e48b2aab8132daa9c34c21b1a9dc476d00e8d6203913607533c3b042ce5b172ca6ebeede4440d9ba635af74b7dcc458fce7bb193bb642f7cac6824d99a6b91914a4d43551e912591852aa3ce5ff26aa6a9397112607082ca267b15bf47ece0c4aa73be5087538a0b497c55685c6da2570c69fdd01c24788318de6c83f21ee436e74f70a205beafe1d2ba5913501ef0b7e5f2203997dbfb3cab256c6afac36fe1f2b2bf984ae336888320459d193b522b91978d78c1e876ce5378c5d68a9d6fbb874052a556c240db518b16e80dbdc26c2d0a1ff495bc5043b5b74f7846ad5b4e9b19a5bbad56b6793c52bcf5fe63355ba125eaea84320b6872dc0a225a98a4acac7cbd0a8f2461d4542a53fdb3824d009682f8bbb7549cb30d2642819de1734803321a74979905cd6603d1c69d3659e559d6893a47b933a96634843c8889789020a6f668e855f7f3231bf761916fb9389a490e27244f5621bb65c45435c24da6df2959388db03b612568975ab55cf116f5a68ed58f030015d131cd7e853912ba4ddd1b8d09af5059c96a03cf1aab1de17f7c81b3a96347e3806fd60b5da65b450df139dcc9394afdc5489ba1f34839c90115a3629c915ce41d23fdd5e72bf4508dd021cf30106d8415da1b8d6d78e0894818dd2686f1c0908709a6c926ce5b0ac499199979fad86c52f15ed94acba51a20954a9d72ad814eb4827da111a71c10741537b0726aab2f3fcb54d8af630a84a153d91ddb0825d8d6d22fd84028efccdf585cfb12a146a1443c0290904fd3429f8d3f4060426627948a3472cb947643743f0e2db49f1056e414ece1c87a5302dc44aba08c4486f5a50add804e20053e5d04cb64ddcc673a04f58bf3a90956fea40ab939c551d1555db524d14faebc38308b4b8b7a46d0103a4042721b2056084453ba40e47816e64a548c7a4cc67038e363543a4221662ccc421449baf49811abc149048cb54bdb67870c1b73b2320dc498dd0ea3d31a1a33459657649c1a01871c100ecfb67e7678f5b5d25cbbda31e6494fceb761c78525a887361698147134b74f28de36692df98645121d2990630ca93acd20f0db01f35581b652acc0db281fb798e42be2c6d10150a27cf745d2abdcec98da481d2dd7c0dc49621cececfd6fb624d7754cb34dff532f47d0a9f9d32dfb0bf4a1431919b22187630bdbc181a94d8df0c4645983edbb6d72cb7ce1d069f7040d9aed61c32c542bf969e34e3aa4ce2a9da14299a0e9111e342c774ca7141220de5c238e86dabbc9e0e409c3420c8856499669147b482cd2e649cef484ad1a20fc3346538b20d7824c2059f04a4a32f1ad244d30522cc146533adeef3f2890800fa3288234123bab81395028ae4d8ebd20b56ac274d36ba6f28a6f98a1483c24311fab05228b12d0763cf357b2940239c72fcf73ad148dee0d5f35f95686818eb997cc388db3a7fb3c6004c32730c57aee58255fdd21f33b93ccce4c29a5543978d839ccc76a669be73011ca797015d1e1999c12aafa2d48468b2591b8c743030e844638a6d147320f96604d02cae59b63c73bccc1e183412699445b451e934bf517324ff8d6c992ba32802b606161a55f60b52ff73c9acb05aab0d322143e3550f43bd05692e8aeed729857fc79f9274759e611569b4e7994243a473d9dae8631cc5094a52e5db8acd45101186bffad0175ba3f316863a795361b85171b285d5e6ffc6cbd2fff17f6c92ecef1dec08fff37f7cf9fcb578fd3f0fffd01bb22edbf0c3a70f1f6a3f18934c615872cb1d6352e2058588e9ab65756142d847649d3ecd353662c20acc26b67c4b7fc651b652252b1357e8b592656dc390658ec375a44516781e69f53d7294e2dd7303cc3863fd08ded37c8c5c6e58401e7a53ba240e6ea7c1182f8ef18b810f3dba589edd0e5080ae2d939f0d20646a47da3021da45cc0b96e9bb4fd2781195b15934dab819d0773f59aac57e912a8db6caacc8b048272464138a463ad19b46c63f21af7a1b883044bb46784d42211629cbd4ab7b79291a44f6ee8e242b4d9a10df044838f2f62809d6262061619b2b1f21932c6e0f072c3dc076eea53812a4bfa83e4c233b694264ab9e949bcae86809949810e607e6938d75a73376325d2b362e7357a802a0f46d5e5d472f8af318968eab8a288e839ad34d94e816c53cd743b0390f4f801670aa20e1d0b58f1162bb0fa2a2a0fa92d482314685c2f874d4360dc3b2b5c62458a95e0e1241b3c7640bf20881f5af43e582e628ee613c085a5e165e0d1a438cf9fcd1a3570b59c14da6f69ed45e7bfc6eb133d27a8c30d113540137066598b00b8fe3ae5435a15c66199ad1b8517b6353808dd30ca95436d4923bd7e35f4212fce6d459dc5d947654d1f0c793da33eb91a5701c864f66ed8b878946fb016c4c84fe22bf1154a10efbe9dea222047eb4846bf45bbdf78d2863320be7c0c8e2ce189ee05b819e6b3e333416e91e75b8c8cb5fb85fa5dcacf14d16a40580c76f96f7f00f4c3f8636971aaa5546992b24583316593300a85555212585321eb3715f8493af8dd655a267e3fe24da589e017102ad1b4c949866f3e11cb2bfa7796434465fdbf98624a31ee8cb6a66e55951e6ab922ef5f3acb2ca925b3c5bc1693f13a526ad77392ef0deb642514f63f9212aa38daef166913d242b9878baa78a4ac81696ee46c647708969bd8751909674f242cf8105aa9269d623138a7097546bbf44731949946a2e9778ba739a0c6bdfce77785936729b64561c8068b798b23c9cc8a368ba7156d9dae5af87a1efddfa411f871ab97c3f3b3fbb46db2793458eb59a5c0fefc376cfeb0fbbe14df003c56801afc9ce7e78ed86ccdf36ac391dd7a20a519beab542ed309ba491424d50ef1996f558368fde12cdb88cd5225f652ccfad55c5d9915c00672516a18c6ab163786f52e52caadded0f5b9eb9bd81c689934a3c0b43b94cb71a33e29c9951d1ae8585a24106f8612b902f8543a862a398376a0f9d8b6bd4137dd7b1b342703364b8167986167efe859d0e62905b1f4723fe15da090f4544f8c058c991709ad32b8c8a7599c7c4662232898e0a69be7842e211e96dfc327a6a18eae479c59f347af17314adf0781f4fd7dbcd3c8b9294887cb28b899f9302d5982e58de2516560445a453603bdf5cb8b261c4efa26d41bbdfe5c27c1023ab0f942c59b20fdde35db28956aa9f4724f443627ea2d46ec62792098750dec885cb57940ae6a204d972712d758e024481449344f8664612e160b2591da4cc2b2a961a2f24391d5d2ed88e67b278ba655732141a95ea05c6605ee5ce27c7817302f6e434a1351f8f1435081d492f6a561a73adf4208fc99bef3adfd95eb5d6755d109e341c6b8e9be8551864655de499ad574bfdf8e2848686dd76718c599b116e5604c21a70751d08d79a0fcce6f04b55bcb46d26cd9af0bb32393027768d8756a3ad43f78954b1fa7916c95d4ed594d34dd1a441d13f99d642b16ee904b2cac4ee4f34b77a5dfc9bfeff2ca54605f98982dd8fee2de08f9ec1b05c365f0d0184e58424e8fe8a80695e99fe962428cf2fa889845d24fc530e726bd9fe63b8716a407d6356fe799ea742ec0e97c2e293d3392fc9dc9a9335f5a765b333ff2d4e74612f19d18de76f4d14fdcb98ced1832c111977cda1985dfb9d0f7ee64f188b46f94e2857bddfd8650cd76db19cb959a1994eb629325ae7c8d52cf89d6c56c62fc91a67792e1cda582d920dd316acb5420266d72a22d3d579a95c9eef763e4f15ee323ac99e782bc25856739cd591270cc583cac5ad7c7db45fe6a31e95cfa793755e564a577c6382d7a07c6055592c47d7522d9042d2e41c2fcb6365b851d59a2c22d6a3a0604b2d75d4391359f69d4c4fcd3144c4de09b2e3cc64b59ee77034bee55c05449c069c10c6360412cb876521bb879b3c338b0231a98c895e7b9780142ff69f3686461c8f29b5440a4e04f5acc6f9ae1fed8930465d0628ed04455d4c42e33aebed96eba1d92d63b70eeaa2d9c83d1fde8c85c7e1f2a2768d57461bd56b535b483dc295f997bfcc45102c785a98007f994dc5095ef2c8e8c52a4a6bb558e4c6c2193511cc0751f6cdd4ce6928542d1f397e7f16790a4bdb342f5c2832dc94ae7c5c702a37603ac76d7e686962869bc6764afe97d9b6ea5b98ccd61a439935997e73de24d5a4b1d821b3ba9864e343768d2a175d6d56fb262f3e4554ad8d04142af118c1c149ef67104e065e1f8f3bc2de7ca15f1feca7e9d203bb59ff56afeb379a5a9ffeb54215eb7489d93479ff4ea9cbb86ff9ad5217fa3df98d3e17527dc21014e325e35ef77a1a06fd00cd41dcf7dad8c04842f1c5bfa1721c18935dbd05fb222db66cd5cfd1ec1ad7e3138310cb2029322d2045228bece830b34a52b64f572dd6d709ac8756204c8edd68e09c6d20c0ca25a7e1aa4c56a405b9ce7595598be0b44956f902e7c8561b0f105bad82e59238317936ca0b6d5883a3ad5edbd09878c102b88d5ee651693dbd5058ea633411c518ddefb40f31a249e65a89e3603abc74225d31438b8e13c4ae80c610c9940b5175d89665a2e2216a5d0a7094467b54bca468ecfc2579539714d4b08250a409ea62b1a3bf4dfea2beed08216252172cbd297051c8be70789b23b33c161867e45e8da051d76ff7f437b24baf238da198eddf3adf1d5669576e5d498bfe79aba8b0b8df6db5129b966e4534e93043f951ff3d89554ec3d56905aed1778b4cb41490923187a0c75d21e596232ec5a809ccb4c8f778a26728a177a25ca419eb3098490f6e8287a1c2892c4d912aeb1f63495a90dc5c69a22b8b2b186292311fc3c2e573080b1ae6c92fd63aa2fcfe654c87c6fcb72ab29f5db3b5bf5bc99043a17c63f9398db459d880aed39623432eed00278eae50ab18a9aefc31377251e4df1fc074fbf2b8d5c83f81ca8a3b98f916865ea8f426641fa8ec5ab81e8a30849b6352254a8769320fedbf4841e53460c53fbf71f01b475534cdefd913b1d584e05b96416f32e9dd76c3ef5e7f16c04698e63c308423c7a6bab1da3acdb1a77749b5167c96d7f4ad50cc37d1057ba2b01594cac40699a91df334d3d858a7129f76396bd241a4d21a16052c9771764ba6bda5e8a5daa21c359acb13c17474923851d5880e51a3e1b02f562c61cf37f62e1dc958abed2965298c790e24d62d8b3f29ab7dcd5a231145a2a6c224125a265fadab966a2774d35d2ad83ddae67703f253156516449c75632287f742346283c6d5dc5c7a4b9b7a849a4c367badaa86ac25c559a6c9e3f85c116525172f542b07e0c8063811aa75892e8ac80cb593945327b65bc69fb6198d3a4fad31e285f9db54f446eda76542a795e889d5f0d23c7fc2494a1fd2eb525efe21d1c3f9232dc13b924a03823163a97c8ec46377103d291caa24052ed575ce8334808dbff65a74382cf1898b2f5800426cb7288ec9997a99bf912d443b3958d7562bb6fb8f1b53f05aa94c336dbe8e5ed4bd38ce20a15f08e2e143d314b956db123d521f7b6c5699de964a24ce1751d6da1791d6ec3432317dd103fa89641fad40904d2671d18e6771e6c015b946e716b8295333e01d492d55b332a121f698e45dd18e4a56f16a664c3027d94aae2993e334385758f228b330d48bb5da1c15a521c97af3b755312da3c5137ab4a565aa01142b56eae5a1722b1cd71863d87b49adb0979c0c508bc468f8d4430b1e3e6299ad54ea4d592f79a24a03ffc8be213067a371a0db3921acca0fafe1d2cb2fecefdd2c64c671b9eb613f4e964b047aab088839e379bf3e2c9c99811b614d8a1ceb3656248421b53123601d695637e8242a456d830d85f110971a29786ef0e3018972d0263d764733cdc55027dbe63569720b616e4e4d02b750d016dc4106021f621832c7eb5f2387adec428638deec358bcbdbb444ed7d916fe649a66c9eda6c426e7f76f2b2675256b5c8b87a9ad2d18daf8c5167cce19e2ff75ab5c0e1c044a4199826647dd64f73e97c8451de1668d4a26a7d8f51dd2ad91f8a325f28ad55cc53982fe16229a07b2987da1cd607327506f620f50839d387b04d1f2df7b293ad25acd08642913e127f3f7949ff1a0b612cf3de8b6d317116d9b9936ef1c68169f16eed0fad365156250b4642bc91d4d5daffe8d13124167290ededda90507196f83676ac4c7e6e698d5f85d47ee1e61473123cc98dfe1b399f3141f45029750a1352a6758b47ad6ef5efd7911eee3254b37406d3b0a8920dee40381cfb7c483801ce0db877b05af6b281dae4e55e06f56178473e3b9d86321ecd38864e52952d544bdc279bdb029988da2e4e16604b243ebe6bf341d7966da4764c06f76cf3625e0390d9c2976441bbac23d455e5631515456aad11c5727f80472aa214f810775d5585d1735a575561ad2bca8ec0c11ac91089a955b6c9fc37bba441b75ba48623138e6ee67d31acc26201a83a3e8aca68a3aa030d5ad9da1b9694486be23a3830622d403dfa6474384db2276bb2698bbaeba8a1ae589da41b4c3b7969dd8bb2bc84fd8795b0444db2637e86a44d6b619af6a7454db4e0e818b558e75a656448471a9f42bc835240dc81d38a822b1cc742f691b703825d696de522f8f723802da7b8c2160029e4e97a33525ed08c5c252f8bd95e20b4394e7a6f0e3477cd693736fe0423f496469d8ef5186d3cdcbeb1bb5993ebce006a7dff9dc9075d83d6865e512a479c5cf65991b07632322ab199da511b960a57f4d9b8d7c9cb6e303db3168fb1bde779bc671112673c398dc48a80c60b9283ca33b3c3c09b393f465b389e6ce7366076d8d13898046895b9d343898f099c0d21815399eb43f292f45785b97818a66123bc43e5a42c5242a6a039e9f9ae6dcdc9a5a9bb8cb163d47da1da6a6901c7d4d3c63a487e8665f5ecfcec0da24778af0d63e9ecfc0c2de74456e29365029eb76aab3a352e3c0399a569aa4350473c120558c9521d94ae73767ed685de24c1143aa7d41d34c1b8f80667c0b3f33312b0d5a4ef11865ab47b06788fb8a32bd55bd876cececfeecececf6640d89c9d9fc148fabfa0406862151edf913f02d4d1d9f9d9c399758abf24e98a74b1450d05da855be4fc2d641e8aec9db5305fde00dd67ae831766e82e5d576121abce855aa45ac35246dc56bbb6812064c56251d30ee9ad1745e382a06d35df1abf425bade84ac670a1b75ab1c3b2ad068a7cbb9095968ae34cd74955260bb1443dd9ea429101706a1d7bcc117faea19f67dc08fc93c18cca7c99d0c80dc349e08f83692816b226617b18de0ea7e16c1284c371f863380bef7bfd7ed80ac24e8fe49c6924b0be6ea20b33745dc4903bfdc7d9f9d94f244e6024c1e331c2fd14776b74d30033282265e1325a5456ece885cda9e3e28507c875a4610d5825ba2a8dea25a09f2356997111786d8492c0e6a0a8b205db8389906e44c2c5f2e08cc8d413005fe1b187c71b4ebc08f9de5c63570fc40085734e825e23556a8c453472aac8f6482b324a9458d751ba5d259928e01f21744b0e367ec4548138736d0320804727c2eb5098b1f0e8c1e31b3c6ee0d187c720623e0914d46c69b75829ba7c85d2c31c05d0081e77f018c36312a18ab47bad4ac76e133446685ca0e6cdc56a6fd15f339ce938cbe1f1008f1ff0f8098fbf301f58f5e7687a081e4b54cf98133b44954b324e96cc659c302ff1714ef638aa72cb53793d1793c9b9d859cb162a6da10081f97b1d316b74ce7b28c512393b3d2db76c57f709d24be1b181474646b66070c2e319f72a78682c3f2afb892016a5ee581a1423a4b92b96ee00646f76406661af207ddc1a5fa8ce15c9ebec20f43637fc7318c773b2ac07cdb19f233902c3101ee880122dee04f0e8c0a30b8f6b6c6a787c83c70d3cfa73763e58256480813fffc69c90b14b65d888ab4e64c5ef94821573007fdfce4906ccf1fb929724911a27d96aa61d3f5743b4d0068f31da82c2531ef27fc4a18c73c8378c2118b6107d028f293c66f0f80e8f7b783cc0e3073c7ec2e32fb467b580ee81c7021e0a1e4b78a00b89f502554f60782de8ea6bbe5dc9024721a3cf0a2b2b4fd734c994b1c8f4846e5ce1b181072ad4d35940b7c8a7aa7655b538895a581ccd6db6ba9a69e52869e135123a8aadf042091ecf2867b738b0db7a0b9bee16a02f0bc71e0a10eb447cb2c71be3355f140624c26e61a1ee6d0412ac10e11522ece1f1b640d71230d4166cda1119403e84daf008e0d18147171ed7e8af031edf163ca4ad76dd0d80faf018c0e3161e43788c16244c8fb30c63bbd4f41d60c75812dcc5990847db94b807882fb0c942dccc92ed5a698129c067f0f80e8f7b783cc0e3c7c2a8f83d98af1f86727c305f3f70fb5aa9077eff300eef34719e37ae6b36c7677afe829f0fce376ea7d8c7392a0e314b44694d627d15b4319ea5460e30493111784302d58e6f0c290d66bd92bb5e3abdfdb5206512eb516b53f7a5853f1a3d1d0a0a368acdf58c31d41ea5e818145b748eab1cf26c916cc5079244ecbb113931c8b9b14e3230521a155ac5535a7d0aadb6b1d35c8f316bb6a3f02b330b9e00483e90d651c967e90dca17e07c41f789735c19599d0c65ca449d8ce5cadab88edda3d09e57a06e8f11c91ce46fa332c92a96c785b90dc97f04aaf3e33ff0a0cf8f97f8bcc2e7277c7ec6e7177c7ec527c6bff880cf8ff8c47f2ff0df2bfcf70afe4509892296ab44b47a40c7c558f47a9595ce9a9a30cdc1d80250114113ff3cada2077419ad54da9610827fd4c0f590c4f9291f4c6e5678558f37f1b86ec46cd88e3d5ee148793d024ef3a2af5e541abc5867b87b88f5861a13b1a913d32a46048a8d3f55fc3fffda821f7c78b4b1cfe1d141a97a785cc30367d03778dc18d52ab9f2eac7a2e46606e22dfe381df47b2856e6ee63c8cf31237e185b606045f6ef62f126af62f8d9bd9a16fb7f83b876616d9cb430201023a6868f8b846e660566a36cb1cecb5b315d01012b010c798b6312f4ea271836e89da663e14e46712c651a439e13784c918083c77778dcc3e3011e3f48a9ce98b5f80bc23f914854a6fcaec9ca8985e0d5247b9487998ea71cbc1f722861bafde585a60ea7e3601d46c9d7612d4b90d5114bba38acd6e497e68574dd50801ac6283c1e91492b1b3131461247c37430f18a822f0666998e968a8c59d9bb98271163900196e5d63a3f39b36145f822caea7af0046037c3d0ceb8042a6618246cd9912d4220293627c19a922e5457e2f7114faf3b8cf94ccb3ef60d39852f916883898b6c75bad885898af3101e2842e3d5ce936238da391db76a11889676ade2e2453e3c3af0e82abc2885c9088f6f7882af3b94866372f2a6e259b689f4938a0ff4524fc41e34c5bd51b8d8230500131a1ec35f6489f75687898c702ee3c4c0a10a8f99b2fe8f78fd81236792ad442194b90eedfa5174c31919393524f1450c58b092060c1fc34020af4c1242f75212c00ba9e0b5484a31474397560780eff07880c70f78fc84c75fb86ca08ef9d256c2112ea8bbe385cc9678b6b477455199264a5723fa95f34aa3ea0816c39f684796b1096e505c5a4e86f81db18153d443e86a296d50abe434bfcfcba72114f311623c2d59f1db48122e8df49df47d2721aa1df959198a3c624bc0e3191e25cafcc363bb3477ff863b660e692f28de008f5778ece1f1060f6f495ca632c956c4eb69c1c387471b1e01f27fe0d185c7353c7af0f8068f1b78f4e13180c72d3c500d61048f3b788ce13181c7141e33787c87c73d3c1ee0f1031e3fe1f1173c90f89a239f1b0dfae1e52c1264b818e23d076abdc1e3110535d096263c50ff073748548f28563c52c51e98656e0907025af23096614f462b55da5f3068b42057c4ccc1650befa4e1b1453b54f0d8adf88ed74ed65700ede1f1060f0f1e2d78f8f068c3238047071e5d785cc3a3078f6fe89c1d1e7d780c900680c7101e233c6ec263bc72668ac97922caeaf1705b799573a700fd02c819362bf60bee36c692db3a8963b2454d8a1bc2ea34abea01fc3b24740f8f0778fc80c74f78fc85c600f01e6c2d4b8619a0d0fa2640b40fb3266a518e80b5a866cd71a33a0b1174183c14e68f8ed3e0b146a397f07884c7133c5234ef048f0cadd5afc948392b94146b6ca7e889642b9e5160197532d0ad211ab881c72b3cf6e4704cabb232369768968ff3bce6b3ee0d7f8c8ca7743c639b4f1fd7642c7002ad8bdecb51b0191e6d78046b61d264c8138dc5da7ea7869854d4f15d805ea3dd67787c83c70d3cfaf018c0e3161e43948987c71d3cc66b3caec2c881c76c7dbc674db2a8d0eb9c2b6c7aeb3b44fdb97647e8669354c7bb032e2148cbaddda1566e3372d764dc211914c9db38986592257aad62587461f44142516215af69e3403ec41cc1092e0aa492e658572b1c211f853791899b2fcb3fa3c70dca1be97e378a7144d154ee995625bae1c7edf918dfcf774de05e9cbac9ada04c8ff0784a90e383d232307ad1ee7782f580919aa0683d1e69714570d3ccf0bcb04d50681905396108c3630f8fb7c45a8b30770b2d00fa891c4fc407278b2bb50111d432a11dea070bd98479e65bc3ff9d4466748bc76d78442790717f18bc10f91a1e3d787c83c74d828aab306e13bea531ee12d0dc8a251dc238899dacc385450d138b2737b1544cfa1e25c65a4a16a55cd1bb04cf09c67953c86a98db79552ad5cbaadc9de7eb48bbb68cc6f0df141e83442e40276c3ed123cd63724ec18df2dd8e62d206ae4d915f65cc66570c7de0892e9725914f243b271f0c34936bcb7f620fcd168bf620277be42e1ea4cd2d66a018d5773977e6e2659964315240adfd75ae2bc76aaad85b15fac8182e958e4204675583cda809a0c515db572d93d8f84c5f1c5e2711510425718bd0da4bce74936b74df917e2847d1e2295a09f3f41e976b1c36a5e3cc4dd609b62ec335a353cc20a7cb3d3335f97e4fc2bb322adc4b40d3c4795625d95619bb622eb288b6ba1983de377123654b00eceb36d213632fd604f8cc2fdff4e138dc9e1c68d01bd0a4507cd258a9cae8d7405a06c1772589aefdbece8134830eb73260cf7c2c59a42acab6054b168b7e6ec860d10d3e44cbdfa1e8d66479952cf707d1f2ec3667ffcc34a0ebe883a091932e6da038f05334690687b57fa1a549481415e63e195d4f3e6302f0b318805628dccdb68ba1aaf85faad0c457f8a4f646ffc568c44cd4a22499d04d51ed1db6402d4c56a88523a355754fa65a8c14d53ad9b01eb0f8492ef3a2b34d53b1da2ad9a0251c8c5c2f07f284483e8966159e1c484e133f5176c78d5e463b8f6ce82e4ba5a691c6959d69091c1b8e341086d1243a8b62b38910f47754e61bd850501988522ca3dd94ac838ecd17a7d481cea7db32e3287c817c904ced8cd220bba96ef04e4592a6921f2e982f516af650ad886e7ac12517ad0e3be14accf43554a121af30c9d22423239c243fe398513e8dbc302688b9a951a69078648b34b2ce709094b19257c4fc3606e21c7bc3e36dcaa387e35883c0268dbd699cb85dcfa6dcb2ff1647014bdc071e45a5bc431a6d12cbc82f6fb32310013c31650001ab3fb6303e30a9046854906ec0cd9735d966e53ec5060589b8992609755e56dcd8e42b9ab4d4f81ef542a4492e585c44e764d1639992f7d150276f5c8a70554671c25eb7437b976de2cff3d75ee08686a43d1e267a74e07b113b1c2fa744dfb821521d6a85581ef324fb1750e41c923dc3329acfd96d2c0ec1bfa18048a41ac3af9bc4ea6b6f92ecef85b1d3ba895e9dd03249d3bfa39728915bf165523968e6c4ffbd4cf38874deb65561bd89c981caeae9447aed475a59df0c06601b818ca446eca31316b80b338c8c7522b47238c4dcacd143d7c4ec21c8c9015d0c2f20d7a802ca120da8daef2abfc612f473d2e658cbbd2c5f67252f86827140a68ec828fe3b2ad90b2805e7aada915950e88bbf45440203241d41e56de5afc39285d10cc4b5ca0bc4c8dfa57a5125b26f43ba92ea130913aa5795bd98236fddf0e8964db087bba45ae365909166b9204b4337213afe35175d9c2a5ffc9af142b63aa7b9dc6c9abb0442cca3122fd84abaec0602b0939713c1696b8ff36fb110494c7f53d479fefa374d44286e3f592a7fbf804534176ddcf0c0a6aa09614d1a7e206ba1369c72d5ad402ade9f51298d4050889eefbe69be4216ca1ea8b615f6af1814e10af16da2310093b8064d96083d08192327c6c48cb87cf55863383476592ea8c10f2d15b9e680911792546ac252030d868d88e6f151067bc4667ed26853204d4abbac7c6aa654c5653c7da2e156a946e5a60babb4190cae3999908da2b83f84a1b911b4ed2966092cc431416e816cb8659ebf4ed611ddbcd188b7d3dd686a8f22b67affca5646e358ac61b106b4041d4c1db1725c0b1c6039bc4cf39d97c59e4d21ceb39a5d5132c7504be98bb5f1c877ea1432163feb789e0ea9ca2e99dabcac4730d4e815e3af6a462419f989919f6a489bf867c67fe6f0170e7f716d1493db163ac7938d095c27d80e6088a4e75fc200f8abcabdb21432c73524a9ad316231447a680253b399a475a41df3487295b611773b2b960beae425dfc7abd7ea46ed355f3c58ca95add6402a147351cf927fb43fdc1a80339490b353146c940a3e6ed47e59f200f9f05f67e7671f3fe00bad05017d7f9d138d8232737358ee509da59f10ab23cbb31e63c6a4836bfeccb7d5899febff19ab3d3ac956a972c48b611fb641f2f1671813da65576a83771ddc5aff5b221a8e92c5a4ecf75f9de0bf3a1dfce8fc5727301a1eeda664b4186e120a0e8a3ceb65d557e234a8d2678350f01d22eb6053302c5c6d91c41a780fe1a4d7bd0ddae1e5c7b0d543515632aed728282c0bff5f0b7ba17746b6e1f4760370ea55e62c708887a5da24ece165514bd531d2109828b95542b386dc8882541bf44302278be0e02c58ada36a8cde5d753dd48952dce61dd0b4dc1e406eb76450db89b34e0e12f2ca95e86d91b19cb3f3334fefb3050b6e1c090efb462d025bc8429c4db41fbdedf14615a5991d09e344a3c3aba0762d9a6837c3441f6599e8e34c0dccc936d11d577c3bd18ec474a20d3b0d4d2bda12d564a913ed485397db8c651b87d0df7f196e4bc27c1603408f91bd5f421ddf77d3686593ca3255a26dd77c5bf15755eefbf942f7592eabccab9c75ca3019f7dbb9f426f39384c7eb3173232a32238260ee13ae6a02132e6ccc5b94b54ea052b522f68c7c1a1c2a58f530dfb68de633fb6b82babcc85d0b35f5825cf705af0b25044e342fb745d5546ee14fc3cca05c0cbfcab48133598e60c604d4d9f99974830b132b5128f8cc96648f22750b631b58d0d6f39677d0c3b07924f9565bdf598b284da9ecb060d39f4010e0c5651846bb28a98c2f67b2f1493a064c1ec0aed347c1cd62abd7d3722f160fd21c556768ac6046d5624d9fa8729b323c5a56aaa4cf8afe166d2dad2a273de663b1d3d85a4d5d2dca5a8baf54d6d992b317bcde8958491e073e2cd54f4901abb4e160e57935560b3278cb9c15e50c8545b425ba1f0851e6b3a30114ac8fad9994996e97445f2e7386a80c9d52ada4dc63339ba3c52289555645696dee8779e6c5a334c253799867746de6003adb349da060270306db4af1a7136d9a6c048a9665c4208f248f9f36717116ce496370b015534412812f5e9c243945f2886599e688e7c1cde6608cc164620b8d4a0587995999b279182fb6a6d20f0a0224600db49192cd32fe8414c62ad2ccacf5b6b0ccd18293a7b16b47890b1adb6b3dbc0d1205da6a5d2a35518b9cb4b3f26c5a07542aab61dd60b54eca6a5fffb90ea9762aabf61d38a3ab7241cb519e4d1ba0cb6459eddd489d3a40a392c051529326709664ea38ea6d0354968ea1f8168dd094c298ed1f867951e9bf887eb2d7246e28d1d0f43c60120d4308c55d93056c6744a8ae23edc5789064757bca448c2c46755c6c7ded47db2a878e8e62bde1840124ec8a70a548820e562db26e48047f13fc824e9064b9076f99a679cfb5c914c934218509e78230cf8699bade6671a962db7473772e15f5411f2ac95e6e35fbe297ef7137aadb5a225349be51eb0cc36ff7e1a8effd08c6ac5a384153446200caa8cd64391208301d274f092fe310aa155d6c69e03a106dd9f3b0fd324edee4d3171979ef3541f38a11bf85556f0ae0d7ec6727da98c52eac7b6aa0a7d1276c3f204227cd7726cb501ccb894a0d2cca793988b2685513d4b166ce131b4dbbc68d6373f3207aa74661b5ca7b93a1711098acb2bc54ed6d91268ba8e27b073c48924df38d4641cb6d998ea252b33d4bdab9f2f4c5183ec7f25000efa9899f28d6d9b55a90d83b1933c74274075353086a7ce3294e0c156b6faef3745b712e6c116236ee6bd96d7a4b6ae434227327580c59c700ed82e691186a5f12b75ca5487048b1811e630bf45837d75735501ed3fcdb64782bc6b8ac7104d433098dba499a2fe82642782de4d48b76833e23591765ac56eab5403996d53a4d56eb8a92f1dc883461928c6d489a749197241a28909a1cdae0dbc4629517538e8362114a2613e4c22cc03ec9060811424225bea14f2e593040e82ebc62ba74ffb0105da9a286baa4bbdfcc5c0648bedd322ad6777db9db148e86b13a2f265cad3a6b28cdadddab044da66d88e9eae85b9b045d206b7ea128d0b4a4e6d4fbac8a5e255f2cab8afb6e56a71ae6a2a9612e8e1ae6421aa686ba90cc24673ac6f6d52b5b5688ca6ab8ec24a99265669a3fd153653709b2aa27c30ecb7d491cbae8a24d829dbf4b8a699e3f456be24b04f823ac50f2a33f1c0c023cbbb73c74a2d31ef6fbde1816c3c1088d838e83dbb06fbed0c7fa681c786dfcb98fb325b89b79fd09fc83098d3dff2698e24ff23de6ef8092ea8d020300d4ad3708d07f32fc8f9ece219b29fbf569216bdc0451b7e249656d85ca24e4cbc2ea99a45cef791eefcd752536abc3ca9451844e02efdd5946428c1b6363258add4dcd97e32baef01ca19dac882381b145f76cb1de664fd22765b413b604bac0773cf84771ab0659aca3f2626d58337605cdd46b8192fb50d96851a9d2da67e381d11efa33eecee128187bd3def0366c079dde6d0f3ecfcecfbe7be39ed7ea0775e824e8073e469ea099814e2fe843077be3aea4d7197b5db4636a7abf77dbefdd06a120dc388d59424f0e87fdc003e0ed0c0dcc06b7b30114b6f52df0a7e62394fcdbbd3194eb7bc063a41d4e7fe0d0e9f72653f9be1dde86909c8427fe7530f0ea65b0ad818ef3eb95f7bdbe376e4070618e1158bc3aa8773b9a4dc900df21621a8c3b30d08fd399dd3697085ae514b8310bc8fb64694d231e561b9b29789806b793e39670e16ed22efca06e2ecaa99a0bb635aba773580117cbb76f2fcad930ef66c1f8c7d9f9d96036f5a43eb3d6c41ff746b5ea994a3983f944ff48a16b0d7d5038136c1801b45f91d1ab0d897aa05d989a252884585b56309f6525b6a83eee15a9c044ab41bec768d08904a810281229a4f14bc66890d489e66943f690c664af2bb5a9e19ed47e97976663a0c2dd10d0d445ba420b642806afd8c8864dcfae5712778226e9ccc66cc1511aa13ee411caf86dd746ffdce44c86d28eab47545b73729248237696257936403b93d6fe81c01bff08b2ed86ae9d8f8b01b8138528b6d5a9c223f21735b07d574329f504bba115cfaaf7cd713ec2b195a143638f8cd9d47d4a9b1116bbe3f0c0de5e2dcd862e7107896b25ed60ec1fe67f8831c372c8064a6bffbb8a796c44cccfb35852aaff7930b01d0e76867eabbc34894cf585795f1f7bc21dd7a60530e070fa6b3fd722c91260277d0d222c693b9e25470764ea8d14c2c1a261666a7df21db76dc3b8b113f257b3ab69f03ad3eb186de6d1e9c9f2db09711c419a970dfcd42befec18cd88e35f6a39a047bb3e0a394fdafd13ab513d125d2d8911473b5a4e540dbbbd8df728f525a5163fcb9d9a30bfd96c1c79610e06945d26d2910c45d3dd466b4cec2bb331e3df78884291026b9dec58b8f45fa6f691edf9b32479182daaeb68f1f45b7728bf718340c6ddf3cc2d15f3168e816c6dc8314e8faed4f436ad5a6489c484f946c004aea783be51b1fd375e09c8d901c411be2119557684f23b79b911290996e8720516d62a2d54c9f6bdd268aed20e9e17f19315af5d7106b485b5e148247786d663f002e4df3995f8f4af5d237ce1761fb32406c9964858b85646c024d188e035bc8a56567623d1fd884c949254877158044d3ee53fc8d92e5b6ec9629591e4afaeca84988064d61ff907aedf80df5635b35e057e6b3f3d735d07fcae6990e731cda7c89e955eb66e07a05b8d7fec7cf79d658ef0f265b25dad88f5f71f7884a489f01ffc70f59ffef0e93ffde1f37ffac3979a8390dfb9e540cd91304d74459fb067feceb8bd68c35bd796cc109fd411b0d590cd3fde899f9d6f74c921b39a9420dca86e1e3c7b13b3d2b3ce65699249a3855a8b85771b4f2e0e87197af132a24223f26e626c3730b1e3a08685ca5cf7b50e987d3ea0e7392442f3c596258048e28e5d0d5a1b7b2e66565838d5517c593a3611c47001ec49c3ecc6b82b84c5148a200b2f6e4f436bb5804a659ad1fe788c602787a57a913e38306cc07dd849525577d18721c3eccfb37a1815112c05e9b33f68f1b190aa17dc417f37a3fc3c45832970e014835c586bed9ae89276188e02383bfafde104adbcf13ea0c76a695b5b801c3f9c4cbdf194ffeadd764d986535b2ea7b8216bf8d8a348d3a67eb7952aa90a03565c89ed1ee936a3d1546bdcdc65c7d397e8f58245384aaa5a01206b2fd6fab529bb5157a1e2141086977a812258ff68ec80923ba6be96571b2e01bff44be5d6bfb40e13bdb1fca78a02b0a6b39c9c2acc92419377a97548b3522356a42c4783b9764b1aa54b9493211c7c0e1d53b003b638a080bf1c2538fe6a5e4532124e343fcfac526cccb5b8c4eefe4f59b75eddf50241f89a0a3629b8b2b21c8ae196c550839629e2d131c068b280bd068f38dda9bdf175136dc563a89890670e168ee0d9d148a975b4ca9068395298df68644ca4c02289900dfb5690009f0a59f2d183b0d0c1d3782388f43b3ba980ff22aedfa7195add971aee4a72a2a0d1982367b710d385c5261657657dada1aeadc3477acdd1963b85b55a21132998cad7011da618e59e1a4b537665181ce73519dbc34b8e763d0561b6bc861a9967f698dad824f023c2585f926312094f8932f449096d830bb55d52e2f9f26643e751ba55894519e268b3d256baf2fb52e7bd94cdba5674239a19d6a2c933d4c984a59f53729b5784b664be2d5d80d1361acd95b429ac0ac63ad64eb51c1624e64417e208cd13232f02c75229b9658a32a5a85444457d10a673b046563713ed9161af7b68c2fdbeb511c4fa395e68b69b271b4334a0b223fabad5d0b528da2c49de1690a63b6bfa88afeaea2d5df095f0ed27024529c629bb94cebb5d0eb07e01699a289e27898f1b7b3c8d9814d643d5e454ef380a56781a0b570ebdfbe0ea4f45ab0c414d1423966c049acee46edd1849aa3ee592f02eefe0e6814e94a49a125402709ccb353e61bd3b0899ee41b658fd7220696a72f2aae9362b9496c9964e493d73ae1c5695daf184b5cda48b95159e5dd09658069250a07f6fbecfcac1e926166762987ac21eb622b878aaca2393a810da7fc8183d27c9241389c36b8192fac8b5811539a46f35194a9d4468a13f4e962c2eab588b2d8865d9b5234f6e67f27713d492c00f9618ae6f2d6504a2ddf01258bda215e2ba43ba8e1982ac0b1d8cb5615cd1d6b7d04b680e5e1024b7e9ae3a9f9cb50b92e807f73c62bec6c79ac5c759f146f10d106bdf1f33c626fea6ce7cd2d9bec0473996299da4db901a4d924ccde89b9f9a962d865994a5db206db1c4ffda98ae77bf74fe9e644d74a717cae913c0d19752f1627d9fd26a7c5cd8e25b28d5673ec84de92c96c1c476407e8d0d10ec546b42e270eb4bb3df3e799d38a30550de1ed26b0201f6433569baa17e504ed3f75061bb60b4a4571bfb2a6b255cdc4a1e9a86a3a3d641b93fc55b366913366710c53972d586621d1414c8ea1894398a92a782dd29c0f7c9a14caacf6ace3571e08a23070026838af16d44594d962a116a60d8609ef1454072f4d87999cef881883d4885c4923cb8086220b9c946f6d9806b3a4c2431b7544cc91896784980b5d475a2c79b26e07516943127a24188991e19442a159fc2293315ee547a4d88ad531278dc4756dc9a70c19baced628bba5e30fb39d6c1cd9900c2a473a96228fb249322b12838ed5a84dc9cb1baaa35131c8db9d42311dd75b6e27cf2ad68722b58f5a8438dfce0f40b2d50f4be4155b87538b127376971f94858033de68d8bb9d86b7b3412b1887feb537f6fc69300ec7413778b0020949b61ae54956dd6e37aa4c16465080c50ae43b23345133b74e806fd3afa7837e381a0f4740f31de099aca35106dde7b89e55c5207a1d956a9168115cae26c7d038897173c551f36dababe162b17595c579a9e2f62052dc518d5e298605074e2b6723529e39f15f7b787f6b6910c4ca324d23464c6b668e8728530c0b004205430e959267f5047595172ca09f6ff5c18c3989c04666d20b950269a00835a62358d5df1c8563554d0e617946656b48d95975f1d2e27098685ec9999861f48ddaa3715799e471120f92cca40fc1e8d50db6f26d16dbaa91c44230184dad0d5e47148776949631cdbb38f45cebceec4df4989730a478c66d92ac16d6f693329264eaa7efdae9efbada189640b4256fcc2c4c8a62430dbde50f6fa7bddbd9703681b978db0dc894ff77afdf886c077def078b8e4b3751abfc0cc6c3faa26d9601d9c76555e0b19968b49d2c5d49270deda58710cc877b10e9e347b4a53e40694d138a5e6b238d964677aeea4594b2a303dc210ea6729547ba0aa739391692370d390f1731a3774a9e83db89de24dae12fa4b95676d244653525a34bf5959dd23287f23889391a5ad3a2616f93c652a992cac5eac7f2853813a9c74659f85fcb6ca8b82a959b0d33c98e2b60f334027d98a33dec26fa56ed10469be0869c22510025dab85868349f268725986abc1738175a2210cbf9ff9026266a74fecf33ddf1ba9e771e789ee79fdf79dea6e543e0ee7ce3fbd7972dc1d8e7b96ee177cff3bceb13d800b1df4e60bb88ed9fc0f6107b7b027b73def3562d0fe3307ce279de083fefcebbdebd773ef4be7b6d0404e7438cb7825fcf7dcff7fcf3197c2e3cbfeb23127fff697ef7afc7f87d8ff1aecf7b9edfc52863270ab49377737ec3b5f0b9fd06e7caf3bc36c2e70889cebba6a637e703afc7f0bbf39ed71d62ba54d18e49bd3b42f01072f67c4ccb3fffe179de63eb3cf0aebd21c6b4f51d70c99e5a5433a8d3776e36f89ee1f3011b8cfeed62448a33a39fa82fbb5e973ea939ceefbd08d2fb69aa37c486b99356f3a1313c0cd73acaedb99914e4ca7706cbb00d0d90b5f1dfefe7375ec79b3865eb605162cc6f82906fd8b4916972cf9be2f71d7e8fb199270cef793d6a066c656f783ec02add60941f5e8fdabd6c49b305d8325dcf1f61e5a939cfbb5e40551bf39fd0cff3df1409fe5fb5ec64824eeb4a033797b54b6d39a178790bc70ee4a25b34e231032ed4c074dcb75a9c29fc7d714d8dfe9d87ded0f3163880df7a837a91a8e77b52b00e17cc82db5c3c82dc40530c39e2a645edb7a6642e5a4713d5a7b6bcc77406380b6776c80476e01c0168c80766560cb1ee1d80532f3e60d2b58e86441608b86e4e047fbcf96d1a3f78fc75cd74f69d961f3a8deeac4ff8a7fb8fc49b78fe7080ffd34cede1ccee6027df6202232c4ccf549f3b1ac616af0c05d5e203b5b092113ac1daf9fcfcd4c2d76778fd9409480bdd80e6a2ac22e7f7d03af0b576164e4f46bb4f5dcce19e177809ffd7c52478b40c285adf6644f36361d3a19cdb161098c18349f85d1ae6b4aed2209bf0423de3825e63f813ac1c7ef709ca1b5c63741ac96b1e30b8ae3ffb52fc5e6d5d82368d29d319362026bef16134dfe09260c60bc6bd76572fa8eea79685ec7da98faced58c2e8083ab13f5eb58e40342634af0a5dd3e02359937a6ea4c0e6704333f746327e056c17be3b269f80f2e91d14d7b39f6f04deb4ceefbc4072a01618ca83e3ec697c9d0f68f2e3a3ed3d9885c4a7deff899d2d2941833eb668e475a978be3770feb976eb64a70d156142b908f081674e0fc7079463ce73f40697252cd98496691ed9973464bfb638e2805a6428f5ef6362370480e190733bddd976baf17cce9a1a6042f5809dcf2c276f3463dd56e6663b6a7d8143b25f65b11c6005eccc1b481e9e4de4c189fbdee9a95a22ef5b874d69fbad6b0ad0b56df2afd30b04411d30c386bda66d11d276eb5b8bf98baeeaf222b0c46741c3f94686645756e80abf4789d38a8f34a77333d2fd21f4fa8856994b03eed138d89f5ce17c48bd3e644d94596df4a61defdbb94fab9cd9359ffdf367df7feb79ff50ce9b005f8f01a6d339da0bcf2f60857a227ab8088ef1ef5a940ae0cb06fc0a32cf095f35e0f7b80212fea501ff19f09af0afa7fedf12fead01ff01f03bc27f6cc07f05fc9ef0970d78acff07c27f3a55bf0bc27f3995ff15e1ff69c05f01fe33e1df9fc27f25fcbaa17fb0fcef08ffd880c7fc571dc4a7a7f009e1b3063cb6ff13e18b067c02f5df10be6cc0e7d8ff84af1af04f807f26fc4b037e03784df8d7063cb6ff96f06fa7f03bc27f3c85df13fef214fe03e13f9dc25f10fecba9f25f11fe9f53f8cf847f7f0aff95f0ebee89f67b47f8c7063cfebfa2136bda80c7f195103e6bc063ff3e11be3895fe86f065031ed7879cf0d529fc33e15f4ee135e15f4fd57f4bf8b706fc05f63fe13f9e4a7f4ff8cb063cae2f1f08ffe9d4ff1784ff72aa7daf08ffcfa9f43f13fefda9fa7d25fcba815db1c3f94ff8c7063ccdff6bdc55d2063c963f217cd680c7fe7d227cd180a7f94ff8f254fa39e1ab06fc16e73fe15f1af038bf34e15f9bea87fd4ff8b7063caedf3bc27f3c55fe3de12f4fd5ff03e13f9d2adf05e1bf34e0a9ff09ffcfa9fc3f13fe7d031ec7c757c2af7bc7785c9fdf11feb1018fe367d5a3fe6fc03f033e217cd680a7f94ff8a201bf6a43ff13be3c957f4ef8aa018ffdf34cf89753e5d3847f6dca1ffb9ff06f0df81dce7fc27f3c55be3de12f1bf038be3e10fed3a9ff2f08ffa5014ffd4ff87f4ed5ff33e1df9faadf57c2af1b1892b4fe13fef1147ef58dfaff143e217cd680c7fa3f11be3885df10be6cc063fbe784af1af05f71fe13fee554f934e15f1bf0d4ff847f6bc0d3fc27fcc7063cadff84bf3c55fe0f84ffd480df63ff13fe4b031ed7b72bc2ffd3d47ed8ff847f7faa7e5f09bfbe39817f47f8c7063ccedf15f17ad3063cedff84cf1af01afb9ff045d3ffd8ff842f1bf0b83ee584af1af058ff67c2bf34e0b1ff34e15f4f956f4bf8b7063cf6ef8ef01f9bca87f39ff097a7d2ff40f84f0d78dc7f2f08ffa5018ff4f915e1ff39d53f9f09fffe54fdbf127edd70e580ffbf23fc63039ee67f9ffaff143e217cd680c7fe79227cd180a7f31fe1cb53e5cb095f35e0717d7f26fc4b031ef73f4df8d7063cb6ef96f06f0d783c7fec08fff154f9f684bf3c85ff40f84f0d78daff09ffa5018ffd7745f87f4ea5ff99f0ef1bf044ff137e3d38817f47f8c7063cd67f451cb9b4018ff47142f8ac018fe3e389f0c529fc86f065031ed7c79cf055031ed79f67c2bf34e069ff27fc6b039ee63fe1df4ed57f47f88fa7da6f4ff8cb063cf53fe13f35e071fdb820fc97063c8e8f2bc2ffd380c7fde133e1df37b50ff63fe1d70d978ad83eef08ffd880c7f65ddd52ff37e069fe133e3b95fe13e18b063cb6ef86f065031ec7574ef8ead4ffcf847f69c063fb6ac2bf36e0b17fb6847f6bc063ffee08fff154fe7bc25f36e071fc7e20fca753f95f10fecba9fcaf08ff4f031ee98bcf847fdf8047faea2be1d7c313ebcb3bc23f36e071ff5dd145547aeaff84f059031ec7ef13e18b063ccd7fc2970d785aff095f9dc23f13fea5018ffda309ffda80c7fd694bf8b7063ceecf3bc27f6cc0e3fcd813feb2014ffb3fe13f9d2aff05e1bf9c2aff15e1ff39d57e9f09fffe54f9bf127e3d3af1ff3bc23f36e071fcac46d4ff0d781c1f09e1b3063ceeaf4f842f1af0b83f6f085f36e0b1fc39e1ab063cf17f08ff722a7f4df8d7063cceaf2de1df1af0b87eed08ffb1a97db0ff097fd980c7fefb40f84fa7daff82f05f1af074fe23fc3f0d781c5f9f09fffe54fb7e25fcfaee44fbbc23fc63039ef6ff3beaff063cedff84cf1af0b8fe3d11be3885df10be6cc063fd72c2570d78e2ff10fea5014ffc5fc2bf9eaadf96f06fa7fedf11fe6353fbe1fa4ff8cb53e5fb40f84fa7daff82f05f9ada07fb9ff0ff34e069fe13fe7d031ee7c757c2afc727daf71de11f1bf0c4ffa53beef4143e217cd680a7f94ff8a2018ffbc386f065039ef83f8477849e5e582004203bfa7e75407bfa7e73401fe8fba3016d5ade0506268f63ba10f5a9a813f88e30ab7b8fae9eeffdf36794451978c19cc9802d8b40cc3c5f2813cda085e70b31f3cc20e5f942ffe40cbaf37c2199360cfae1f942653d39b198304b8cd0852fb4dc8a4191e70bf9f76e60cbc514e3d7812d0413999f07362da64baf1874eff942ca5e3820a67e3f0c6c8e4c30ef9db498c6de392026cbb7035b47a6e493c179d7f3129ff856f0b88393a8ffe673ca2b8c90bb1106d0229f24c2bb3e447872230ccf079eff51227cc5081b37c2ddf9d0f32f25c2873e95e1c64498dcd752d81f47f80185341176c711a25a84ed71840594c144d0c71154ad0c9282adc54041dbbe1ca6e04458b56a319e8f6324f51839c658b9319e5ad0da95d31434295b5e20a7e95ddf0e113e806f19b46a4157f7a580f2ab2f07fde7be9d2ecc1bc81d10b313360e8839104f0c4a2031e65a240cfb0065634ec7caf9959923ef6eecb4627ecad71b1b8b59309f6f6ca5986b73e5fcc88c9e8b1ba718cc1cfac0b0a117786f37242571e34c0f02b549fee50e8583ba2cf1c773a3cbc2385d99c43dfc7c764a59d452b93f4ca57798cac2a492dcd8c5615d4b657298cafd612a772695cfdf9ce6f9d65ca38b6fb6bd3e529c0fdfec0af076e2b7dd37a74d5f28d2f69b3b9e6a3fe270a23f9fdd3f0b8a957fb3d5cd6a3f4687d5bd3bac2ee646f5fd663be386e5686cee03166a335186d4463da78d2899ab9e2dcd65ef970361767a20ec7a6e0bf57e39128efa7072582765eab471d34d29d2534f368eaef7c823c8a9c49a40ab9e33cdaedd02fd382c507458a07b53a0ab6b3b4d2eaf7f393427bf689d6b6739ba6eeef1a3649fafedc02ce8a7dc294d46a0cdb5ad795a4b7a61524aae6d53ac29ce8a4157d0aeefa9d8efe8a616880adffb87605fbbb272f8de976e7341afbace4cb8a448175d5bac8f27fefbfda8da766d7d2b8aa3bbb62e25819eddfc0b82e50ccb0196116cd3b5933fed368ff4a342aebab6ebde77dc417a7f38f16666de7deed8da7feafc670b9a1d7b7b4e65037578ad253333c96c3bce04a928927661e5891ff38ead58d6f95f9d1fa716a1bbc335083b8217a1c0127e9f82e6d275ec427062b9df07b6fcaf273aefd40666cb7f9471dfc6183437cac896e40e3fc7360d12189fda346634b358ee7687338b52fcda7646ed17827d6e3bf4c827825db5ed80bf24d085fbeb47827d68db21f746a07ddb2e20af04da39b15edacd53e0d4b43c5aa527879dfec334da53db4edc47ca2169db95644da055db995b7ef3b278b4117ef69d2dcc6f2ecf856ff3fa7822e1a3dde968849daa66cf54f3d9c9a7f09b07d486e340cea9ff2f9b7ce5dbf67bdffa65cbd805e473cb6999133fb166001140148745d9e9ecd46a9e48a7e6e7117d625bef6822ddda4132fce5449a1c4ea43b3391be130057c47bfc7eb0a9fec0cf85adcd1c0191adf1cf5f2e73136f20ba03379e3f62459d407453a6d25a5d41b2fcea8de74d4a2bed3d99c1ef29093823779d44db27727836a7b9833877a4b7c38a069f07b5fc446896b568d296ac0aac2dc3857c6b9dfaebde88d4bebf43c9eaab91ac0528e80bdf99231bbff95daa4318db95adf760db3abff17a6fa4e1549ac1e889807070bef0024af09212bc6aaedc8b19919eb76d9de72dff722c7c96ae3764a58908daccd138838364ab9c9c2b2f786c61927a42aa3c3daf731033f0fe199b826f589f2eb07a51ba754dba153e9cfbf1f31dfdf0656c94a1584381112878cfb94c58d522a00ef2652a782cbe4e5b6f410ccee711f43c4d898f131474be9a600f754854de308258178a33a463e4eb9844a36f889b045523d5976f6e1e3bc82318626920737f84199024f8372cd3b5240720e241b1ecf837f3ed73a69cea7e74a87b425776e7375e77e3ff434a24d01a7ee66b0addb1f616e4f8221100a4a7e777decdcde4fcc6ebe8d68359c92e698ec044f56fb8b2ffc0f8e8e480098a56db49258749faeaf7cf13df1f791965f0471cfc8f38f81f71f03fe2e07fc4c1ff8883ff1107ff230e7e62feff1107bff9230efe471cfc8f38f8f1fffeffdee2e07fc4bdff887bff11f7fe23ee7df347dcfb8fb8f71f71ef13f3ff8fb8f7cd1f71ef3fe2de7fc4bd9bebf747dc9bfaff8fb8b7c0ff887bff11f70efe887bff11f7fe23eefd47dcfb8fb8f71f71efff1f8a7bff11edfe23dafdbf3817fe8876ff11edfe23dafd47b4fb8f68b73d11fd11edfeef15ed4e7cff65ac3012f5254d8e571823fef27ce87f23e48e019072367565a469bc8999ee7677e29ffb9eb7689ff7826f63c7d4b424896c18f233c076f1bb9eb1c8ef7c0ed94b40c066d0ef8caf082a22b57071c726f217b07a691aebae84dba7310b5adf79fe173f27c6cf9a585d39a5f7658c76dfd9290597ed65826587a9777d155c4c6479ba790bd87542d7f3afbfb9250e386b1f33bb66716d8c609d1ab836d5279e7f0351fb3ccb03890a0dc1fd757d1e74b2d6ca1f42abe6ada9b465affbadf4610558e220dbb193805dfbbabb0a3e403b7c5b071f674e4b08af0f6541a6e71bbfe7898f07c8fef254dc0fe4fce2d329fc05e1bf9cc26fc8f67e79ec1283f057f4ff3f27cb4af8f7a7f05f09bffe7e02ff8ef08fa7f0abef24b77a0a9f103e3b857f227c710abf217c790a9f13be3a857f26fccb29bc26fceb29fc96f06fa7f03bc27f3c85df13fef214fe03e13f9dc25f10fecb29fc15e1ff3985ff4cf8f7a7f05f09bfbe3fd5ff847f3c855fdd53ff9fc22784cf4ee19f085f9cc26f085f9ec2e7f774af710aff4cf89753784de9bf9ec26f09ff760abf23fcc753f83de12f4fe13f10fed329fc05e1bf9cc25f11dee1ebbf679f1200599126cafac18212fa7e6410d2c4f49d3208da6b43df19bdf6b4faec81c849dab4ee1d2b42f01af67526ca455f5a14f51f866c5a66f57e07a4c855cbc3ed0e569f9ef7d612df0a18f9f920f2aee505e435e13b46b89ad5b31ed26232a4c56801fb48d7cbfc6b37cded419a4f7eb78769665080977a647d1059fbdd1b8c5c6001ae0f0b00e748c8b36cfd3299bcd51d603225938c3eed76b81405f21baf67dbefbc41f7bcba7faca1f14343bd4d9b3639a422af436fdf7133fc4aae963ac78da5bfa3239cf3aef79e4b5c7d6feea7afadee3d16f9e361912f083097fddddbf9bc137d26e71e9897ffea37f5d68529c0472ec02517203f28c0bed58db0009f9a9b7e420bddd0786361b73e5dabd3c62dcb2e670a1ad04cfe31c99ad06b8da49f8418f76506242294f553bd7b0f8b7ad1ea262d1ad4f78d65dde030b931753e91cebed57da2741e219dee35f4e63b1c08c32dbb7909e04cd1f33a457073dcbae70339346c28fa3baa49d1b2cdf2dc92191f18e776703c71fc2c09f81ed33f70d376ed8cbdb796ed706e6a4d63b37cc0b3d6f38384d049ce834d2cb025fa4825e293dfc716bab8e185654bc9bde00985a6c0056176ad9305f93c3b589beea0597ad677d40d79f79b8af396c707acab5d2649ab128e7e1f9c096a63ffb7d7a6794d1d783def0b0f54ea94d2547440846040a712e3728f2f2af66df294e3792ff4e3aeede4706b554169e947c7804c63231f8771019f6fcdf7538b368da119c4786f4c0d3772e270fc6762b451d6c3fad4bcc653404fda17c9f76b1e5fb7b66d33525cbda2be6306e605852e3b388e9f3a4e4969f3f78dce2b7b21731c1a9e2bc8ac674e70633a3475eda2611463f1bcf3a1f58a9370b2c22990b1e6abbbcaf43c452e0e632c6cf683f6265a9c979cb45ba59ee4c0ecd19446d3d5d8ad50ca0a64d37a6a0e6a3dc1567df7604bf4be6337fecf1da7317eba3f629bbcebd47ebbf16e0014882f41569c64dea02c225dbb889e9837c35a133efd901e46bddbbe2cafff5f4c23f6d7f4723891a04db54f35fb21d5cba85e897fe8b56e43be9b98ffc0a1f2015f4ff747f390936375e155e0b894f3a43837128bb9095fdb146bdf1cebb5554b4bd83b9e5b4a76cc87635e56ec9924501244d30b32bb819a7fa3c6250601a7d8f5ba93d79f983037acb4ae0fe3dff7fcc7d696861e76820fdb459766b99d2ed7c24c0c9091b520bdc1aee7779fbbb4974d48a13920c5e32ee9c39b7af1a2d1f56adeb6fae737de3bf6f0c86ababb93a331c055ace36c5eb25099b178f5e360b5f9d4fad55ec77b0cf7467d93c989ebf11448141863c84376c7d8272a6d4eaf57ff4447f0ae74c57bcc9b2ffe44d3d6f9bdf7c1e7397ad162d2b04b8919b26761270ef354d99519eebc661f7e7346ad7fe5bfa7e4b4d3eb15f6fa6415d98581d9743fcc9a5fb6e99cf193c796ec8f57fe3a3a9560422b6d498e3c31d6735b40ce8ee6a4bff9e1a49ffe100782ed5f95fb29a236894cb90bce3169d96e1018e5058363db4206ec550ba66dd03def7955fb9ad856b4123a0494bb91b6b175af6a4d7ed172b8e0e7813701b26c4465bab695419a0fd62f9ea32fb591c2516a14f5d713151f78de044b9647b2f2072f6dcfecb1989a1991fc737d303f43769fd91df223d46d49b1d7549c27394bf072f4503bb6f5dc61408b7c50d25078768a5a621fdde8c82c1a23dff5e86aa9cb2fb487f349f6931921b0bce91fc89aa5331cf1f949cd8e1689b65d31f9c669fd13a7353375aca356de61f69dc335f6d5dc451a15f50350571af3a7b4a56907663af04afad19d701e3afaf584df4fcdb2e113f0152d27abaedbd03d67a0d1baca8d9c6081d7d25e3d4ceed259bfae38850bbbbfa4012edf305c129c61436b4f04d68f6e15d061f94320f1a1d02b0a550f58931dbc7a7c524786ed95ffe5e4acc70a7ca5fefef2d35940ae7e3a93081b044bc7e3b1bbe081deb41f753daf7b6187d05b8b2a8fedf34889c0f9dbf736ec2ef88ef72cde070a8ea36059a4751fff2d198ed7d44436617c060395f59ed6a8af3fceefbcdecd108b38e50e50dea04fde76a96c1f22a1c98f0db9bc590fb14f6cc8e5cbc4d24edbd6d504dd2dfb7b8a28f1bb36e2e7c979d7fb4187188e95b66df76fda35868a4339c0cef73277e9c967da4eb2f611c99d136d5ed0159aa650d5831e22dc0fb9a1e2adaaebf91ffceae470d0915c000ae295a63652d5b4ea5fd07063da6b221ecb8d87f597886af6d90eeced03f21426763bdcb7c9bdfa7f38fa876253049da8b63ff8ebf9a9aaecc92fe96b448d3680f23fffb4a433dbbcc0c585f90f7647b74e568febf7c46bc9d75ad1996732212a8afd2eef3a8784ebbf4d6e6009978212bfb78db709a8f16cb2ff98b979475eec999abba035ebea3f28c7e7836af15accee62b79d233e051b67701af25723ec622e57c382f82e8ee9fdac0dc7817bce90925db1235a99a06d360ad4a3c97b67b5ffa914d466bc63cfa1969f7d36dfc0b81249ce154d615a42be303d43f13e52e7bd0594330e5146f11a68c9553603f4ffb2f767cd6933cdff38fc827015fb763812b28c09c10e711ce7cc761c10204088fdd53fa5ee4fcfb458925cf7fdbdff4ffdaaae131b49a3d12c3d3ddd9f5e46248ea7ec052533ab9f91673335d1d874d87eb9399b76ca4923e4f7c682b0d8a5d51c86b4521a8c3d2101cc0db0a77016e4262d645bf1993cdb154c62648fc885d48d33dfcb6ac3aa7414f4c44334bfd522cae89554d68e5b63c85bb10b4fd18c91c78c0f9f19798cb4155f4fb481112fe249bed8cc7764bbf7dcfae55ed53a371f26e85503b760e84475c620e132d3e47f8d0e41481d9162f0feabdec9513972e0946ed5846fb9ffe92d0e3fb728c691dbfdc89b1759bea3571c23de35e1dcbf199a11e48af3dc054ab6985b7bf920abe7b305400337310937b5fa46af81efaddea8692c134cdfa5044dc71b315a2343db6305ad6b8290b9f2add430109115c02ba8a56bf77653c73efcf8a72df9e6c33c41f081a26145d50788bd400658f0387c772cebc85266e3bb0a5e187b4ef6ff794953ef73fa9f40527b911018f029d98a680b2f04aab418d5052ba1b446fb5089d0bf6369d42ac8ccb25d768dffb5fdfc9b6dd631e1f60fb543b10efc269d70a514732d5e6f09719306cf76f1d63665de21d0280e61d9d9b340011c2a943da227cbd3b8250cbca6ae31138579700d1bdfc9f7e91958b3e4d3d9e162b90c59f4bfa4b147dc71f6c518e2774f58630ff413c89617b0bb945d2c356eebec275c7100b8fbe6f02e8b597c1a9667652a676588ea12bffafe177a52d98f3a1c5fe3d3fb9636a19e451dbdb215d3af87b44a3038d87a9c3ef5c853d2cd68a22fd5dfe5aab7ac75e56b27b315a1402280a9095a9d4dd0e696f4b665475e7cc955f3ec2a482c35f4482f1a98992737f73f48abdefd90ab53ec707bab31a580e3be949a0dbfdcea0fc747163cfdc58e2eee54ee27d3370706219e6ede4d3cc04ec50daa9e9306dda80b97cd3a56543b5ce4d1e63866ca1a21f71c7fbbd561c38547a38a2f20af5ec32334adad374b25717105eb576af526fb17f41814445e3de256fe27a4cf46c1c637061b0722b93407a6c326ca8eedf1c58f3284de3c1f460831f33b377ebdec033d13bd93e64b85bf9c511706af7e9138331962f7c2325cf67ad4b94c9d1b4b3a012f629f7b4e05228ff4ac81f9615a4cc5d8f2b1284998f9e186b4c544d6e67fbbaf24f656bf659bf95d92bd93426ce5455bed284ac846efab413acddf30b56dc7ad9952e7743a97cc15889817ef72cb52b375bdc7cd06731a38f1ef5976df9c16d1780fd7d9e46d0eae9a4de696b54c6cefc3f07eef5ac6ce7525efaf3856d11b052c4ed1b4fd3c9fb581311ffbd7dfaaf93bc501bd1dc43380b1bb0bd2da418df2e7b3516ede9d72a602afba0a06ca173ed213e36fff4f8cb1cb2b39b0c62ffdc142e7f4836f99eec404fbe2a41caa25509258683e677bd2ef191da2c0569f48dc6ac06dae27962de8021fa687e4aef4a9b97779f9c05fbbdcb10ba6da330b2681a3185ab3b568f4f2192907cd9da7242a206bb0f374cfd64fad7769fd0c9dabb66edba17336b28be07464675dbaa875ce9848606e5ec4359085c3bf26e15247f3ada109ccc663d64ab7b6decd8b297fcabaee3bf8d7c738591907e9b916a16df3707d151cddb18c32f3acd3c5cf4ae0c0aba3f787bdbfeb54c25d4e0c00b7067540a867c9f7f9e659cc9f59f1c7acc83ddefcaa767635c36e130396265fca8bbf6ce0fc7ef224eb41fc93e5cee76c946cb3265640163765495e5763a1e7dcc4a3658ff99b255f694ff25dbe3ae4ddc87cfc015bcc319d67e80436ce39cde67c00abb73216d7553366ca8c29514c1f0e73d04698a7ac495f4cf29316310aacd8aa9af79d28fd38e764ef9a93d96ef6b3ea2cca8de46f1bb5622ab6ddc64c793fac7684ecba66748f6e706b3621ebed23cfdc894c5f6016d427c12ee3b4e1c2ab5ea5e91c5a5be9fcdf6e0b0c87debc67643b74c9721bdcdf57b05d671de3be7f929a3379e66ce214fd680d22308d37914afc90024916de1d4ba915df211f536ffdf32a7ff969dbbef50e27dce4226b36561c13d9ebe9f78a6a7e7d76afadcfc76c5223cf3c9acd9b53be91ab90e768f4891106987ae937ccdace4106b2ea2ffa2ecf46e18398258f290ff576288d03572cfd04db0af20e6e90523fd8daf0c17e128997f7cff0e1cc63716d1f1ca10b9b90afa104ee524f6c7ec406eeedddae1516ba0a982ddfb90db701c1f6173d1fb1ffc5989d3a2a1f74c56ef19fc9061cf268a6b6cd77ffa8cd5cd56ce4291592dddce2914733f9f5a62b9df0cf3af14835c9eb80f8776c8c5cdf9d41fcc88d30e170989dce847544c8479f7a35e05e3dca3c7d21b738e80c6550356d2dd9d4ed7c31eae5a6f70b2c1294b1cccf986bf83da3c1ae49facaeda4c7b3feacc2c7df0db4afaa7a58b1b1e5781399169b5f6538ad8c90ad5871ea088d7f17ffa2a1609fa40e7e67cf97bf787487ecf34f7ac0f054da483fe88df5875c0d64098439f73b44ef5747ca59a13262effe2a494f344ea17bf26a1b52c7556dc4be2f4a3be05db009f1ab31f29cdfc7edb93745dfb6e0c437cb97209129eff287cfdca0ac601904c40bfa9ee88e35c71dd3fff1b395508c76523a7f0120e3f4ab487960350845c318a1bed95729dce5c23d89ffe8c9535f38c19f3ed7fb5dab7437e8435d346d685ec1a1b87d0dcc5dcfcc60289010f59167a64146908fd69973cf113e32cc036e38e9d930a8577eda2501ccb58da12ee03ff37eb93b1a43d1e1992d77155fea9eb24dce37cd5fcfdd599cde998cc120c67ceec43d9ef5ec310c3eeef44d486f3e0a3e70ef426d8cdb38e6df1167971f6eec021bc00dd61a0aa0fb3f35879e5a4281648c589a39280bfdf1d6ddbae0c041eb1f01d2c8134f9e0b60dd5367ba38f52af645181a31734516f8020c55c41f462e1e4d4eec4878f93faf78f9b7bd0dcb2811d792cb15bf677b694a8b17435e54fe79537ea778afc5c1fc3247c9d6bdae1db89202916c17baae43b390d62080fadd98379f3d0827bb7ee5e4f40eee3f1b8a4c155a8ebd3f989b93fbd3f145ca7bea20a66239f660a822b089476d119e7021382b84ee69809d970534fd44dc47380293b7be07f5fb333104cc32de60ed8e42fd43fa980c3093d99ab94a920907af8c3851df57bfcef872c2458bbc113d3947554376c8baa74306c75f946c32fa105126782ffefa9de3deda0be006abe5872549558433840f6846fd27a7f2f294f65ad422c84dd2f1db912f5ef417827222ded7d6d1b512094aa879de47767d8dbc411ad950cbf0018a533c304f036c6dc149a4624649af0f372fd928f3c276d6c75b960abae078dadb11564ab68634d96050617823c0fab09092fb10242e661e45ac8651c4ce5e4e070f997ff75c742d6fbd617013fbfeb8b3f7cae865fe8c1706b09eae06169201bf85111c4f2e8c31a52c2ba0c4e452094aca379a7089d9a5129c961425e6974af0c10328b1bc5a224689d5a5127cf8084aacaff6254189eda51294802d4589fda51294e2738312c74b2528c9dc0e25ca974af031242851bd548212199650a27ef52b1594685e1df51a4ab42f8e07a5ab4389e2a512e458d19a9cadb0c9d4ae3063a6e2832237490ec3c57c6a23438c75313e1d8b48bf296f9c77f7cfc5167f57acf077c56ab9628ff6c1d2f529f1988d8c307a63d24a1ed8016345ba4ec59f3c39a8e7424abbbe311fd9ba5f78f1c34d607a5b768488c0cc4608202fc9eefbc89f3c400ec0411171b6ddf51eaebb63b3cc8ec44b980e3bad98347e9811beda26e8c00c5fbbed6ee1fcc8a68c4f0e2c582a7bc7018e12476cb1377d33e49697f064cf3d24278d4b2d0fac1ad61740d7058e50d847607dc6b3dfc19df5a6c81a508fe02a442651bb0dbc676253cf92ef4b9565064ac5e74f02ae0e9909b4665366556ff9438fcd3493f483c7b473b5eed0f85b1fa0de91a8e30e8045206910724f1f0462a5ef2767dfe75b250843d94421df006fd6712e770313f3ab7378fecc753c9917d02db2cd7976abf11f50deaa79c0780075f45d12b52367aadff540cdf97bef5670babd7991ae224a23a1d8a20727b923db3b4956756bb5f883e40eab7a3d70bce8447c0f39df6fc00ed427fa7691b65951be334da3cf8d4476b7b34696ff378d1cb846d61818cc76e27ccb2835622053bdcc851976dd8cdf03a00a15402546c361eedd35eccdc45d86d9e2c3c9828c24f82e3702e49d6afe7e26d754c0818e2c2e626ea7d9aa038f1aa1895bf7b5ecff861cf7ae2ef94c39f41162a4ccd955601c1b62bf835c77f65ca410683a1eca316a7917b4900f490bac0334cd0639b22dbcb9ddd8c225b30f060d03006d3dabece280b64200113e944c225b6ba80ae5a4425f9b6e871c377867725206b5646c7f07b483f628b147dfcaa97b783fee264ccd7b24cba08bb1274ea65cc530bf35c14fa874af87a87bbae739a7791c6052b8a7958c922f16e60e298e90dccc5032ea31c6cd36cbc0ea16a00504c54c9df0fb9e11c0db151fbfcf205fdbaae0464791523ca108c8534f34a633e36870f3629e07e2441258679f0740a001d424bccf37f221f24a8b44f04581ecfe4d0f9626cb2090f3fe94412c7ec320aa8a419cf2869eb0858dd641aad353e6109acd67b2cd186960608e3640d3bd59bff0e6ee33ab51a470f03c96cf8af9d907b01f4c1e4d39bea606882878b3e8f806196bcebc047f115977b06984b200db91c75697c437b7626b38d7f74ab17733f5257689b7c162acc4d10b4226e7af88cfc4d8f15c8980d7de6b9dbf3799ffc5f70ab17793783ef4efecc9edeb8c5f7cbce99960e54dc9701e5e04b55dbd04687cb0dbcc406c9a05e5f86f7f7e9c90e9e6f6e446a03f555651ed482dccceebf3bec347d23e96a16dd6277b23d443c20b078792107272e8672a88d5964f7cf4978f2c543ef189091c4de59bc7ec23b7ec7833ce35b769b3279fa03aabb9776a25b2a69ec50fee0a4f48df6d0548cf5c54d16ee317d7c91a26b88eff8db9c74e101b894f44d3cbbe15ca7a991c17ba9341469f29facbe586ce56a8bb7a3d79063e66f34be326a22fb345bc7da2efcef8d0d8126db77772cec2ec8786c3161e630b5d3ea8afc75060603941f38528aa36a449402af10d7b8f60479d307691f5ecd6ec183b38fe66a8c9470cd27969c6b202126aeb1a8d99725d4bf146e8c184cedfdf7899eced9b0e3177f1677d64a8129be6d8234e35f28c15b56dde6c9aefc9abe5bd11786f0d2ca2da1707d641266eb9d38d9b38dd985f6d7cd2a527af4c46a482a144f1d4ad1e01cd907826b73a46abf4eb26305b2f133b42d32103f2ce13a1970e2cda7aa6c830f784a7309d313be42164218077d6c79bbe3978e22eb38f1934da308419f1304c90a49327316150761b1233c101890c87608a6ea28c115d78994777804c9ab98ff90ff9f26cfabb524568a608e86168d75d7545f8c1899d5b76ae485e48f6fc79720f905947cdd0bbf19981a581e184283fd9ce93b5e7b36557b26e8d0b31fab8e9b263ca27c8623cc06b0e93ecd3f8a7bfe8a2c9547e4bfbe4146c0167541071206f106b8c859967d154b3740ef1961c2bec86b1a7b88e88c8d09ff9b85bfdce4cd95e859c1ea92f2c54a271ed936c44ab0cf3c1c51acf76d8bc346d0540a875c990b51d6e392dcfb9e7b49329164f73ca3683160ab5d99fb2f5a4584b2670edef91f357d9397cd96937f7a26e8699aa5b0eb9ecda4ab2a55072f5756f16be99f9a705a63690b997090b45cf7e0d050a9ea9ce3db57fd6169462af0813ecf83a22ca3bc50278e7555c7ab45442010857c1cebe89f12a470de2308ef50b6cf41f345cd6992981dfded0e6e2997e71511c60cf6b76d9d92d3cd90642e3fbefd9b6de891eddeede75d2aca880172369eedc16ce08d2ade5f12e0a83c939c184c1a4d6b382d74da363c1a3d5c2135e7e67528b28d8304a668f93217b0af326b647b11afef36a6dcf19ff5e2c10c03130bf82e682f79e96d3918c698fc94b6eb8593855f8e37bd6edb197b1e6c8f3eb9d9b8109d8d11d813403db7fdf4991d8d0bf587ed1d5a12e4b2816b443b3f1e596282b6113cd71ca0b7ec18697edaf9b57a96037d7b1796c408e2ca6e8e38be32ebd2ff9c487994ae19bd0b7a7da0fd8b230740256b52b2418e63c20cc8885b1316545cab6b56e27fac6b023b0255f542571804b3b7ebbf39e1344451cedfd221385261d7887df73dbb2efc36224d6e622fe6f961eeb84b7aed9bedd72cd169ea3c5bcad7ad3a5089b71726df5d596d001dacb7fad1eff5a3dce46fd5fabc7bf560ff3afd5e35fabc7bf568f7fad1eff5a3dfeb57afc6bf5f8d7eaa1dffc1f593d12df7f34eba9431ebec0713b011b7e7131744f000258890ec5133bf2fd4f667655f39926d016ae9688516275b5c42239936cb789920a77b8d8274adc3de0e298d8751e002909ed9657d6d5547051d5376b8099eac999e5857101dc6feae72dc9dae26ebe532f2ce6f1ec68f9bb64080175be51293477bdf45436c99d4a660dcc2f46fb606dc8fe6c026e1f1fd2f8daec67b4b5bc05231c41ff7fa77a0fef0250decae979c8f6375f7ae0ed942647d0a18c7c32259602663940a9ca9b00e56af3cd28f132916be16553943d8e12857f4c128fcf2368409621c7437fef374246390766eb59e8a4b154af3697f4ea7b0937b3217c1f7b48ba49e314980276035a27d9af67f6a4e7f8af1e73c98fafb6d67ea6d6affc01bb9726dc65ee826f420e11c1dd03828c4a5d8aa4a43d604fa0cdc14316627c25eadd3c9b82ffe9c7c9cd27b3f198978f1529e4d89a8dd5601460869166849d93547cbde999bbe0e1fa00557033abb83fe6a5c30c0a5bcc8c066b475f5afb44428183beb286200fcb8213b48e4f46a0d5e50df4fcf62327a30de1bf4b092f1881ea72d2da803daeb3d13d9ebc5e65b09f4dabafe78ff69e72e2f6256d48c05ec7d945db46e53dbabc1b239e44f8624761d671c9bd3e0b299b225732e086ce67f9565538078c8ba8555745ca894a8729e957d27bda73798fba57e4d875e1b1eb053265e2748bf14a7fd697830c65e71c521ef3d074c0feea010d614d1223f1998d81311fc7152f8058afba39afba86b79113601a9e09ebc4549e11497e6d857c94383482c48bd94336f66d8e3da9dded398078a1bf05464fc1422b06fc2af25552d388cbb4fcf5ea3a7b784fe58d27777079fc4057d9eb7ebdd357e38393c30b9c2d39e56df1d6495cd9775eeb17ba4953b2f08ee05453dd94193785632d0f2bcbfefc494745a15755f400a2c747bc8eb084aa5d695bc69ee8433ea4d4acb93d4e6c5df4b3aa479da07bc6475a1e4bc8eca01e5f4c8928e9aa0387d0db83bd64ff665291448954dc9c151f9e1417dbf98bb5878875efc9de6138f891c896ef7c05fb19526c6ba02210b33b1c2d2631d703fb1673cb57aa07271849769a50c8fbf5f7e45db084766782b2ffaea86ecb7c70c7c4bcf7f426cbeac20cfca7e19124f768fc2d011443e422bdb6407a1951ccfc860f052420885cf60fdffca2c53fc12a1aaaec3d5d77ba0dbab3a2337525c3baacfe3ed5d8c34a976181792965498dc733e4acb9cc6eb2deccfd0b6244942a59a5987ad70489ca2541627f7be0e5767c38132424930a8e58faea0208c63fb4c4df357eb8184a2aa4a97f17bdc20c1ad895cb03397054dbf08ee99fd669053de3a6652ffb7b9f97bf7f61f9d3f712afbafc5dbdbef18bfe62cd766456f2bf0838e7636dd0b1d2d98cf48d3f086f52df9f0c1ee6e93581b6b10698bbbe56a28512e3cdb5120594985c2d31da00ecbf5a224289f9d5125394585e2d11a3c4ea6a89054aacaf964850627bb5448a12fbab25362871bc5a628712e5ab250e2851bd5aa28412f5ab252a28d1bc5aa28612edab251a2851bc5aa28512e3ed55fa4089c9d51223f0c4d9d512114accaf9698a2c4f26a89182556574b2c50627db5448212dbab255294d85f2db14189e3d5123b2af1910b707c37fe009203d25bdfa464cae40b39b9310af8e8c6401ddd5809385349e094cf9b5660ba2a750fdd6bf8cef16023fb57e0364161d68d5be39f6c17597dfec9892e37878033dc04ee0841bee7803fd7be490ea2e47b2e5f24f737a04d2c208c8deec41dd305af7e57fde79c2df0643adcd2d18e81cbf153e8d96d4a3c4f6e553207ee63560f6fadb01bef3ad6e2fc68bfee03bc1ae05b1deb3783cdabd6317d2bbcb81165a11a16ebe4eee418979b5a40091603978728e99c24e3bc89437fdd79a85e27e67fe3fffe2efe8ffd48f84bff7f7387fddd7b70871d7966ae5d73628f0a3d66ef7e31370bcf1f7b73efd61588a440ecd3facfc6af067a69326d5790042993d066ca3d449cada6b807af84a9f2fa9b33d69e8053c01b6e86939b12bb613c2bf9f1d5e43c5af8580a07eadd92fc17b22f73564bc688076099d9f4ce708008377ef64e2d9866ffbaec51c96b0c199e12875c87bf08586223152fd936afbe2a9c05475b0fce56a155255024653d7f9d55f766da97c04cdec6765e36d4405342ce0fbb63b757325bcb0153e457d0b919328b0f8c2f775e242b46f38dcee838f455268c7226f50e4c83b3e76c7797482109fcb6b7f4363ba7253ec06b24e6bceba483dc4c1fe882b3dd8cf882b0f89b982fde55297ea5f48d2e28dfcc4d8db52e5224167c0809e1b1e9932a147f7399de374faada6feae331eb5de45872b319a8962c06eaebe940553ce28b9a2e460074fc857e137a54faaabece6a23273aaaddd30599456fa27b576af1c9fd8e7baebd495fb56ad453adaadcbb6f1f3ea96f8cbeea52433758e99b2a3525a0077ed0916a6fedce0de974c38548252c84ee8550b7aac4854891297d76bfa777eedb87bef321da709b68a5a57d5769e39beb51a1efdedd7cb347dadeec544b2b77ee77e3ce8dd9e8ced5535365a665d59bd29bfb70fce11abd795404b2e9bbb16875f5b07e720f0ef78a3ca29efbdeeedeb5bb11eab11faa0bcc1093c442cf5d49cd5df4dd3577d475e3177d52e3d755b332fda5a6f14df5ef4d91e6ab9a144c352fa52f9ae2bb6ed4922737b4ad57771fd3cb0be1d9dda7a93b227f27f5a7c4a7f5dd141235196839cfdea3eb51fae07e6334a91335b5ee6a2feeddca1735968d47d7bbc30f3764188da15acd3445b567f5615f0d406bd45123a0661e3de5016f786aea6a7add64df38bef1074b99b4577a43cd15cdfd30dd4ce6b1f2b943634afc0ab778c72de3614f757ff9e2c0956d345531bd61ade7380a35adc18d3930cf7b55efe38286bea51660ebdd8deae8932aa316355813777eeea955fd490d7dc635667ca8d6cd941c71e1c89a1cd42b957745268a8e0f6ae40a8ab9447bf5f20135318da69e9ae0c5a39ad32fae1fe93735a5c946b1b929cde907262ba3ccd207b7abf6d5b5b1a5b7ad8d1ac4a47fc67be9770ddfa0b70b9fdcefc55c357e3452a5929faad4d253f43faa2a0e7fe8ba2e62b5f1143ebbd7c1fad0dc775555f2cb8de3e2e8a9593faa41d93c9c0d1dfd5e7c57dff035b77b719d6accd45cc505dfbd12f38cbea8a540df5eb47cd78fc587da0bfaee85e84d517b61ac46f130551725c5d7a66a72e2aefbbd99076a7c92548d6ee1871bdd68ace9e4dd3505db1578ca402dc9440fd68b7b63f7ec7e6f9e5d07c1a968141acf8ef64b7a62d551378bbd62472dc5e69217d7eed1c4735f03837d54ab9c5a1783f4d0ee9e6b47219bfcf617b0bc6cd40b8cd6de448fe7aca8c2eff3939abe602e57fbecda32dae96f165e1401452faef3d8b3b85f9f35637e73752d66b7aec795b2daf20a03572a09dd6ff00316cc3edce7469fddfddd8b1a77b565a11e2d9d529d8d2757cf41cd19f5ba29767edaa95b8927dbb05a45c9abfbbdd352e477f791c3c0ddc7cae44ea8a185e8c292d84f459e855536344de484be99668d6cc955456d9a290882e96fa1185305eb802761b7d40cb711abf5bd78535c16e4cfe25732bfc0a5635d8e372bcd210e2f8a2663c5aaa2a123e391e6e51bc5fda7e80e7f245282e7422f6b8c21f1aa446d3835b511c56068bc53efb24e9611a07253c9e6a9b2f0c0afb0f25ed594301b7c72b43455fb2b84669efeaf6ad57ed50c2a569311bfbb5a776ac3490345a1f76a1cd4d7a63df55b89f4b5d0dd2f4db5c0b356ebaa31506cf2b36a9ff01be2b90bb59aa227b59a767a3e9292aab8a624e2dd17b5361ed4b04791a6a0435d6f5d51474d56df357f77abb68f1f6a11299524568b31d5c2ab52dd2a8a3ba663f5e55d36884de49add65d4d7fa06edb4ac3615d4c502d2da778305718c1eb416ea8de9876b7989678ac82d514a42aa36fcc2442f0335cd89d624a4ed7d359d90385b1dc5bce68a8a4b8ac6766ab1a44a70c7ea626d40abe58759c7bd7dd06b70aa980d2409d607beb8e9036fc40acee6af1cc31d6644a76fc4c251c192792b01c573c7465a9fc693485fb04e97356d3cc17749f78826a27028223e7c57a37ca7985de1f96c1d1381b4466ac46b0f8ee6c1dfb9331a95482b5afb80a2cf2b5fcbfed3d0bd9f641f5fa588de275c3a95ab8a865216d13923e16d8f5bc31b7ba9add9fde25535078a225a5a5272def4a7eb27d8fb40f1578e77d5ba28163a0b709fddcb1ba5fea70a454a02d7dc444b474a85164d944678932da1e5c68322f3063811f28ede7430178c562811a3909338135f9155b2d66a653451d40c5101b2f7b3e2f5aa07a54ffaf5be9a094523b8cffbd4ad1b8aa8499e3d38c380b4ecc59bc0197a864aefeaa2e2bb9a4b3dd5b39626bfcdada28485c6b8c0c4684db4d4b655515d6cc59a7480d61140df52b24d49a178e0fd4f8ad1f1742f940cdb5828ee56504c7aa74668f359cd0f342e6e3914c99c5802dd7aa0ea55a09866b39192ac3633b59cd31f672f8fb4facffd50bfa74abe58a8961734a68a31e78bcdd4574c4a356af7496d427ac7d6826d49f5ae54ca6ada6fe0b6d1d85286888d274b805763495ff0be1babb509d2a6ce1c9456023594657ca51c1fde1dc94195e37e6955a7f0a086aea12f165acd8aefd4eef1a0a6e4d92d5e3dd8ada6678281ef00ec31e3fc37533dda8946b0371ac3d928deb3d0083654047031856037ae21d83bb58368041b3b4bac01e896a6cb4883d6f8ba5eac538d60eb0d79aa10ec8682790e1ac106c0894d53adcf9d42b02b0aba4835823dd50836d4d567c5dab04d69141470f650ed248b9c80cbcb4ab577a7b08e68abc81cabe40cc14ecb9a53a8bd2756e22ec43cb667a835395270c14e9195d611b410136bf1f6feec37cf71cfd5d35088f2b4a27a1329047baa10ec86d6932a0ac11e6926515038664d23d8b1fa5e4321d8d86279ecd109bed87c552401e97daa9f0c151f639670e7c6afd673f763bdc34c151f6829047ba7903f6cb63429a3546b075a6a8814828dd161a2d33c50af0488f79cbe5b43d8350d61472bf5fa544ddf546100ad2b107641214eb1c23593ef6a30816753f76a6f6ecc2a0ac28ebeb8394ab54e9493352205616fd4d4efae42d80dd5b98a86b0e35043d805cdfe5a8ace5b1305616f34840de2e19d023a2be4ee2ffa829fb05071c841d84fbad10ac206d4045400b3cb154453b5c673d2f94aa9660ba5f756146182e3338abd54122c36281efd478562c71ac5de69a177a1663b52b41c2b5468aab4814359bdbcd328f674abb5db44e1181b8562c71ac58eb5504442a0a0d8258d6257148a3d7a561fd1ba4ca4617eb5ba5b1ac51e29a12f5d68fcf5877b102b1bce22d62076dcd030ab62eca9c6cd941e55d20bffa0c1c2c6876246558d0c69f65fd1e2cf8bfb9d2a8dbfa041ec5481d8b13670948a1ac456f0df4281d8495d81d8150562630b600c52ab14230d623734881d2bfb69ac557e056297220d62a73910fbcd8dee54a35d070562c3180849e2516f097ab0522d872b443b56784afcea86215690464dcdec54c98b82033347faa61a3e518c5fecda0cdf3cb837605764a97fac21e59d026a4a8f0ac626ca17183bd13076ac616cb02316a8464f8ad369183bcac1d88d1f8a846a0ac63e2818bba261ecd60f57d761ab61ecedf9bec79aa882b1370ac63efc749f8b15f076785583ad9a5153cb6eaa10e6caf3e5496be561ecaf39185bafa3e944318a9a9625afe0d8e9509551630bcd92f7468d633333b1387692c3b1a180b0fefda6a620d156b895564ee31c8c9d3655c18d165a131e3e96c14a39181b26a55897e30d2bb902636f968a594d156797ad8bd9fc879ba5087b2f6440455e851c8cad10cd8a12695b0ac62eed358c5d78d73036e9b216c64e350058513076438181894219358c7d50307649c3d887a51ee31faed6f80a8c7d5030b6decef597a121b04ea1606c3142b2dd4b7b44d4148c1deb2d66a33970a25653ac68757ad03076ced502765666ce4a7bc4c2dc9d43328d86debb260ac54e148a3d558b7faa167645cd79aa60f348012440d6788d2acc40782b5ff4148addfaa450ec5da44e269e2a143bd92a147ba7b0cc437cbe0fbda85611b569240316d3773d03bc65ab59de68143bd62876a251ec64ac203669094f9bb2bf244a9d6b2855215528764da3d8c95ca1d89162956218e29e2b14bba050ec9146b1697158143bcaa3d8d8096151d728f642ebd40b8d62c70ac526dcd5a2d8a4a559143b517272a2253fed0b35551cbda2e4d69a1e716c6bbc61298d25d126a1da522b2007552f7e43d2d028f6178d62a73914bba605d73439779a60b6a551ec5a4173fbd24fdd4d8d91ca66ce02bd42b1a7ca36dad0263b0ded94148a5d5348594badc1d615147ba336da8242b14739a496207b0b63b355d3e1d895ef6ad769291c5bcc9f2ca68e72887eaa91ec464ebbacfc5213a2314d8df21e54270a1a70a829e04803d9230576260ac83e8c7d0d640f34900db10a089ae69ab56b4076a2c1c39206b2a71ac88e15905dd23a8d127b2b39201b9d27207ba1409544293e0b05645714902d2b81cdba5a675b280be34e43559aa541334bced1b44403d953e5b003cb6edf7273d95abfa8cd66a979e8cbd9cb4004145899aadf89aaa9a20d3c1a5aad688caa55d41612ede9a836a558fba89694a8b353bd4b2a39207bb4cb03d939a1bdc0e3c53befe20a903d52f2744b01d93505ef37944456d340b66e65ac9dae5a9a1693bbf30b16c91490bd503adf426de769dbf3e70dcf6c53ff8ac7f826cda839f1c8ffbf4b8938ee394bcdc473c1f89c810e078aad26cc50f6f3cb01f911a5be5c064109e94bd89d1f91a3546d7fee2508b7d9aeb80ff96c055d9573abbaf27331e5d384e3c511a1ab336c059ca7c3efb92c54fe279d4887e2d5108854fc9e0b334fd9737fcc0efea3270aeb6d70b04f13af348e9e8aed6de36eebe8a918e022ee8e4a1cc07a1659fc09f13aef8860f1cd18c7ad471cca32a13c1026c6dd19a2a8e2127ffcac4217eee39b3642b3100e9f7ea268cc169248709c1c82b8544074c4b716de373b61efd5a30b980a677e8a56705695cf886f7a46928efcefac6f01229232d2a3f45a29af018e32fac6f10cfcd9a9b768f011788e5e06cd1651d9a0d1723121836d8b37f55d932268a6de877bb66e794482258edd8d5eb34f5483da48f5f6733ed4056931103a4599d028aee3e9eb69a8ce93b505553bab1137a2fc83aa68e05cb64fd90a79fc507565b358f5b8fb44ed94faf6454ea4f4cd82df1cf31572bfa1e44bb6107a5fb3af3f3fe94a5f307cc6f46e7aa637f77fe6d6518a71a6d5c18163cba6e74e3f4de8a2835827c4df1131d63ae5775eaad17b56be1994eb1e67b2cd185cd2e486d1b18d880bae4005440af680c3f66c9e8124f575cb1f8d3ff6670dc4510ea9b62d3396780329eac3f4247870b2a0ce265ed151c0946ad9faa344359ccd380f8a0ce946468bab209bb4340824aa2af2fde6ed2df292d3b86d7c3968cf98241befa1e1d3cfbb88ceeb9b5dc3c6488536576560577cc649edfd9afaad8a1fd46df566eee7e5027f7cedd2cff04f3fbb577e8617caf6758f5465975bd6bd5016be23f47be35dfcdeb3bddb71954a32beae0c0542001f79d584f29b63dc69ea7d9745160965dfdddd479b4e9cca22b124edadb9f7b27609df48bccbfd38a8dfb1fa3d52bf7757de5da8df0df5fbc3fd9c5ea972ea51b856a8aa0c55f9d05573765bff4ed4eff8caef8dfabd50bf77577eeb3ad3bff8ddb8f2ad0daf95b32eeafa47be2b5353f79db4cd6212674baf56388b51a1c244c3d93639b9429d9e856654f5ce87609a1f1afbc9b8e3ee3faa22a1e95fe829277fa0b40c665de5cfede473afeef581fee9bae7ab69f0f5777591d08d806dc254dd561526aa23afee674bdd7e575d55b75b972b3c786660477dd431437bd11a103f3823a1ae9d1a62135d77f7b3bb3b381b155d452b4f9d9289225bde338fb4e5d8938a2b6ad1682a9aaae14cfc5cddb6d97dc75f54463dd5bebecbb0d325392014d696cdf80f0321d916e8c9cf1743078b67a5eea90f5dda95ef0cab8e9f6d96460395b339167c2b7b1e45b6855de17503fba9dea5f732ee368d38e58a7ae32b643adb44839c21ae01df78d376158526c1f767d96a2a7a99e05df032f1a06f620e739df33a9bfa9223243453a6fa253fd9a8313652488ebebd756f716adb55c72525aef8672453f22d4b7f7275b575df47326454f6872aebbb378afa8dd6d83f9bfbd477d966539fa82dee980efd8d3dd0e12b0f5884ba9e4c680ef8fa1afda059ac650332ebd03a4b3a060c2a235fbbbcd227fa6d3741dc0e6d08fb9193281d784af77cb5e3ab2d5f6df86acd57295fad02893ca739e1ab055fcdf92ae6ab195f4df96a82e353486ae55b633e2408c73d1779ee0afcafca2f57902e926f36707a393f2bf1b33adface119ff2b214b9f3ab6db982dffdbe09065fe97f2bf25ff5bf0bf198b0f53be9af055c45763be421ec0a6ed1634c556703ad213ee5f145ee8749dbb520b2e74bacd5fc099d0bf1b82ff742ef75cd9eed2f0acf81f8e3b9873a7e37f3a3cff885a2c7d8064aa5c47e5d2ccb6f3e39e7e960cb5370a1657c05bd7dd3dfb39743b32724c752d0bd5b2c13027621833b9e7847d6be07615ca361c9ae9bd2ab45ae34484bd1c8db0a3cc90a1499181ea167c8232e7ac55b63896971b5cace597ab8c2655aaacb555abf4b9b65fabfaaa22fe48f6903227a0709d0b9b16ca2277389e96aa9c74a28b678e4356239f848678a28425ce11e0f24170923ecec1fc093bc9a381ecdca12481000e42d3c331e25d1c5812d26f94f639fbf6bc92cdcff74f94cfc32cc0b7e52bef764a3ed39d81daedbfd09d210017de8406a4930ded1d3e38eb5595f9890cc8afe61d7a2946a980542255fc9f7e3f4dbcbbffce87ad0ce4762429f28178f5e45c173caf44a7cf5131941b5df6f0e93745439748f53f7b2b5741987bb71831cad075bdc6c8548a4cb4ed2677a3d0cce795d0c776a954c2bed956ad66684cf266b573fc5dbd5192c60d4a6d3101eeb42dce94b3e1f438d31623060c0cb1c6b7aff0ab1bfcdf826c36af2eb35a44c0d0ab56f5e6c08a462defa4f1c17fd3f8aeb43bc1cd31be33658ccacc5a9e3b09cdb8562d5a907672edd2096e577f6ccc80b272f6af3561f5462d48def20dc00c2768c00aa5d3b381b9ffef66558e20c4cdf585814182523a5007e3b241b3b6b966f5d5615effa859d96a695415165105d9104c9c54fe01190658264dbc74c07f9e61dfccb970a5c29b4eb1825532c00243076ba0d7233ab8c51974c34c4aecbb8f9e0eaf6f0a6865d9bd89cea3ea290a54f305e2eae97afdf65fcf2c493a35be39c743355addf3897d66f12647ee7492e1fd7fb00c07c61e1536e6ddf29d26f4b49d28935464e7bcb6442deba059c4317211c6b38d17cac1499b6ba30b9caf82e3d73869e7028354748bf2d280a29705947a63a971c485f83368e08c8a8c90e577d4e6e5326ebb71757c7ae4b975f8eb9f8d6f9fbb99d6a097d498d7a57875d262a8361bc3be057da537524aa7049bfc6ed4a35ca722eed3ec8f7d5ad7fecf3ab27aa3dd9185c9dfb5df71d593d683af428b9db7ff776c35fc076cf5993fba009d805e9f4ce2bbd3116c176de63b3bc22c7c0eb27e7eb6df545970dbb835e59c54b5583511d509bfcc15c1117865bcde7a944f86a6fd7813980f63c55a62966a3483fc092f7a68c7485f8aa104a390f1db79aaaf2aa5f5d1e3b3ddfed1f00e7033c831b9c74b0c3aaaf9ee9d492de35731fa0796795a50995f769edbbb8ab5f3ee41e4be482328276d3fd24488f44817d4f6e68729511257536f5f68b8e01932070d90d29d9316599f689fbf1d90d47dbaf9fcb95f7fdc73ea6a5e42f42dbcd0b76788b310b6f44ca88d539843b1ad7727ffefe5b09cae90d4b9b67141d7e62a3ad029c86859c4605c59160e191cd239aedcb9ca73a4288e25553165b8c346b599bb89923ad6ba8e146f5dae65eac98986a23905eee017cb7503c07e5d3e09d25c63052217e16c8cb54d93d9b7ca1456b588f0fc775f397b3fdbd2e9fd18dcaae05d1859bd23cf41e3b2e3e7d8ecefe84b0b7f07b091e5b9489fa96053d6e179ec7c33e1a31c23666f32d25b10eaa6a6c440be09a2db81e8eaf8dae64c4c5322d10a830269e78586e6801e1cb1421697a49dc0ed535c4905b37dc0f7cb72961491cd3c520c2e86123b8f90f29560cf9a68e5dc4f5d1e868b39f2be52f9e2c0154815ddf564201a73bd09b5e76a8db6846e9bc838dcbf09e5b542eeb5d3b12b5f98ff510383d8f02f528008d853bdcd1dad49253853e27203ed9fe86f6590b3fbe600dfecd99de2cf5f9a82266bb234c34c86ce883530afe2b8611d7ffefdf9efcfff2f7ef6fed1cf40105785c3fefbf3df9ffffefcf7e7bf3ffffa67ef3ffbd937e9de839e4ff2d38c8fe3f24dadcf962495067570f1e7d0f866f9857f3f51755475f2c5620a3e7b4dedf9ce2efbb7f334c2301e2bb12ec291fecb3a6ba671a6049520e34730ab2f774a1b969b9784e105db3c929d2f8738de99d58e8bbcba338856cf0243d079908f8c9957acf06fcc760644f70b6d5a5d87049666ac03572740e4265a5d9b9455df922fb64480673d8b0d412a3dc2fbb9b4f24fc0edfdc3efd496ff53343b53996968e1913189d920384d59afa9eef32af6b6c75ec468bbe0dc9f9d7ac3f302c5b685219b2cd434ee6aded569843f756daea6b10ef9bf7e979bc790fc82f4fc716778ced080021a30fbffa4014440592b066845a9038416c37bd40b6034d6ab62e43b8775b4730be43a855250e18334f938bc6cd8ab43ee9c5b41fd8c64e835756aead637d3b8438dabe29ba3239468fa8fc1aae161fd7a2bd37c2b1ddeb1e1acf0bb058289c2ecabad217db449af6e63efcabb2d8cfd4dd7a4b11c3857a497805c8a5fce2c5323ab45b0ae988e227cca08f51bc99974fce8d7dccfa131cfd9cfef3e97ed9b68ea7fbbe99aa8f5cbac685a26ad5f408062d6c1f6a955248d59bddf84e6ce24ef0effc131a20df0af12808cb843b5cc7952da1566bd3b7eb1cdce44bb98cfbf5b0e051ded9bd094cb7c70d50e08cb9cad9c71402c7cc457731c8adea5a2f0f128f3211ea53eb1e72adfc4b1b8053ee47c0b301a0da173e87c931cb8d54d385337ca7cdc5a8b4d3455786657529f6e37b18ea60c0bcd7e90c3925dde4b1eb83e8539d416f0ee8261e4b8e0f08706eeaf97fc7fc875e06e517cc1c9597ab4f62dbe684c73e99343c69ced17d1d27df6c38466816bedfcf49c3ff90d9b508f9c16884ded98e6921dbf905d674f2b3b84cc74854659b1674f0b6b4dbf35449cecd8c3fb5d1b8ddc245c2333f1f582277cc627198f12f0a3af9676b2466fe67cbbce6766b1afccf75c056feccc13334e3d4d9577f32cf590b285ea82f7c6983f51866f7a69cdaa581be0d88cc187942774fd83a639423baa384bbbb2d65e317cf845401106e32a5723e6b13dc80915c4233e0e638e23b653f47b8dff4fbc8dc9442224c3d3ce974bbeb9f094cbc776de613633ef7048cf1acdd8888d000578ed458ff4702736533caccc3bd48723bd1c98f83d473302f9b27b049b2a8c69a3e5ec604d860b7b347068cc47d6ca5fb4a5f0e9d6ed28e3849f322a7832157474bb811562e3cb6921b4aa9ec80768af9e3aafdf75c29499d15556f192df99573c7bbb47278c02414c7cc88b3491a8b2b6e128b435bf9c3ed100d4d5d367bb76dae87121f62142123901698be6bef2a639aeb863a9c7fecc0b8cd29e91de037b3831e4e95bb47389c3d3932eb1ad11aac63637abf0776b283d0972a435e578b2d90fea66010dd8a30e3eb927951af13fa0bb026daf57f9a1e2181e5346abe2060766edd8425ec75b955f6c71c6a1c863fe6ed4517ed67b7eb4c6b0d27177352e570257b0cf88abbef2620175d8679450648b2e78e7ef35f8d161e59fbf3702432b7b79b22507d3942f966beb2967e0799680e1226c23b432fb671a2276f5c55043362ca5c2166896567c96d20213c29c9b829e0c6f766cf3dcd2b74353c3078b4b5e9447e6bb150efb69d5c598c12c874ea9ad33158d1ab237d07b6b5eebcb6c273cdc417d68c84c779cd96883966d57cc5147ccb7c75f9895ec562cfab2c44c1d5d7568d11c56ea0cf68ce2ed99fb18643e81179e181ff68c537caf4cffbbac1c1d709317ce0b4f41053799039110f195431849b568ee95256ace031bdf8985174da98d73662d27c785a60121be5de7318e1688d422213356e73bb1a302d89bc9bd8489996483f62babff2006a35536491021ef6ce748a8c0c0add63ce2e99a196f9b9efbd97a211686db7c6a10caee70f38ea574dc3dac3b2203fbe6889ba57587c6b649d07e03919f3168608f46e063ffa40d95359f61cc6a166ed6d61d7728541d371b72337bbd899b2ddc2c7f50d98cebf5e834ca8e9c1f95dce50df07696c7cf22d19c380864ed3c313e6ec95f1c5607ceb431dd74e80cddc9f335eb16aa81330c2b33931a02697fb1c3b1b095501fe3be0b7593effe5f68727aa79d00efff5f687212ca115dc45bb52fdd457f23966b9e4f1b4dfe47b9366f361dc194f830dfc02c75f37d2927075e72d466f6d1ae19419ddd3c5b09178de258c9e3a673fe913b4528131448e6fc7fc19aca32d3541a124bce2fcc3076f1ba737a8cf3b2e50be726b7a97547ed4ef07dc75b9bb5ec46ce45f508597bc945762872af5cb3e12eca12f8126e05329b9fd4ee18e037ad6f3c4ff0bfc9b256ddba4090bbc802bb4c56e30cc725438e9c79eccb91b19c111ff93be32e668340813a9bced98633654c6ed38223ea13394e729393962f809d312b0c1b5db0a09beae76b79feeea26dde6dd11d9eee5bc04b8624a489731d8e647f704010b9f0605b9069581e1521afde2e205bda8502cf8f96de8d296f3a6eb78a870e9c93e6ad8fc0bfde940119a3860ea0be03fe8fb76aad6f947780404878bb7c541bece6e89f54d9b5f6603c2ab38fcb7a6ef1c42e8589741d68da42a3abae68c8459f5ca13bdeb6e0685083507a567928a6f904ed6d5e2882914f318a6dfdddc0d4878ab892baf60e31266a8b804d77b1c2ff691bc5c1176d1c97f8d9eafec46e3e1e9ed14600449bc5ee2d1631a67bf526d22b2d1d3b4f540f3901617452bc5866a6b7bfe0d13e3077267ae1897976e8c1152f37d4f07bbff41619fce1c7228ebafc89197f625c542e142338dec7cc67e7f02280b80f4d820b8923c76fc61cee3f539eaaf45d852b8d7046ae94a7ad6bf1eee41b08452c82718cec66ed0942129a485500d2754ece9864ec2fc7cf273077e9d3f93ed6806ad65cf927febd0141d859d32bb260fb8cc3764d609002e08acbef8237b17d1bde181c2e58023272642796d227171ac1a0b0f403ccebfd84549eb3b2dfe8d858df707c53b5cd2be0d07627dce77d70988f974fca690f90ec49977e2fbc9c10806e4fb7398fd402ff17a79adab3126fb62ce246788337db62c4d27f0cd74c3e82b47d7297c18f26dded1b8a406d458ce514c13dc4ab1962c75cdaf7e5bc41d2b7ac4c97628fbae22d252e915f5c58dd8261befdaf3c502c4fb1bde6a48080e979415315324237a6822391fee2d73f6c3d53a508c5bcb7b6df88fe338642eeaf9f645f243450fc00b31726ef8a772ef0e0d9450464a4d8b79edbe233edcc0f8b2dabba13acf5a8ec93e8b6a4513da67726d932847fa4310ce8da0e1fc2cb8a189b6ec62f07949a9ef79b18b52e05eae8e496d20cf75b2c7bb5f95fe18e95c190bba48526fa684d98306a49b676f48da9032789d92f74ceff365c73658c241fdfdd742d414e53d4dab362f1ce0702c43ddffbb9ae93ceb785d2d7c6f08d343b3d61a329b8c2baa219697b1b98cd77363d50f5e3ae73d1fb5b0ebd4395fb5cd5853b73e09a9b18a94cd61c499b773ffed8e412ea2be7ea9d6c0353e18ae73baeb8b41128493ef468826146085f79c9c158b1ffecbe55e005bbaf59452424e35543568e0d5fc0ceb7b070c47adda183ced37507fca8c976d862ddbf791117b69118df487dee2a13307274b4bff312ce9eaf7a924546e46ad2ed23c4033455d1d9bd5455df76c46e6c4569bbd80170e060ea483b80fb885a0c900f021f8374b4e7ddafb0ef28f61c50093959fcc594b61d58ace6bccb349e5d0bdbbf5cc7fdffc1cf6c101b802f97e79faf8f3c3782351a1ab11c8e3d37cc7d67bb4f307e7a98cb7698973b0c7361acc6f7b85332f90117cb030fdee280bc5e55363f44b0bd2e9e1983bb9780c68ead278a191fd93107d8f7c87a3421e35cb4eb98d28e19e1fac5b5f178effa90ea8e2ec79e2692989ed5b61d53cf08b5baed98cad0ea9bd9ff29fe8f535651a37d47b0d263b1639e9943a0a907f0d51ae5baed01aea4f24b1517080b1ef26aadf72c51b77fba8d6bb4571c2ddbec7acc14f1ca1caf4c3ec0deb3175b6587979f786427cfce525d6b30b134d1e6ca1a513b620ac6e2d6923036a909289f37a7000205187c099f6f97fff879aabfe88bcf0591e94f6a4491ed9785f6f5b6888433fb72b92d5d97862d86d9aad8f42987d5b4a005ab9a8e7e41282babe84dc403d176f494f5e4ab65b947840d4c46ca9d39c2c048a70a0322e3d1de57e3d61151a850f4893a80694fc09b5b8fff5ddf45f4cf688776dc17bb4f116d866e8916d1f802fef361f9d87f52e0ea2c48d0458f55b1143ae01650eaa6c18a6256a89743ba46acaf1506b67a122f20d5af1052b166de8fdec8c62aeaa7281050907b39bd9298968b25d2d14d12cb8a6198891907ffeba07fce674841cf4049eae09cbbc477fef1e94f96f032d96d06195642a42368a5b719b50c78617d3c68072774b8cc0bbe84397d7133a1a22e0b2c19ee592e3dbc2a6d084cf3b27c4ac17520c06693bf40405f20061d3b9bf004892b4cdf65b46783a5bf855e3582c978ed53b2026e6ec2cd5b73f336afa260fb83bafbe8237c04bac67fa8cca04ff1fba517d72179836510e0a4932a5b825a4d6bda3266c65dfecb98f0188276dfc9f4db8b2a38644c664fb154de45e06a57bc6a0ea0217666b9f1739804d7c73271e8a0883100b1518ba9148c7c889f5db3c55c0123a348337fb8c3dd2a7a5fc0ffe32b79ae1475000cac802a8e78b5f0cd1456a35d8854b23e6559a21813daf51ecd6e0c03acba7e51d7eb0a52506417ad2ad2a366f548a32b49b60d76c5a294f2d62c9be48c4c19bea9c1b028cf79ef6fa4ac2c20e70b9e456b8dc6cdc876e39b42dac995e21a4654b672076cb7fddb2a5a69be14a437ba5b09c5cadb86f565b4c9786933c04a3f41aed7f0481a6692479a07ad6f42530b4c25cc557733306d0847bba15beed8ede0a095fc9200964c4e290f739f6c367d151339b49f2423e7cc8a580cddd43a6621dd450b1659e545505ebdefda60292bd747f0dbf5e93a5b25b0dda51db597fa16d3251304509a2a101451dea9883689b6d6ba12d714b9cec670e79b1897d29538eb4a15db5bf58f5d91ad8b2bd9b94ff42c5e591c5e6955d7943c939e7c7f937dff072297fab2033b3f54bc9f6f05f5ffd66c958983d812a8c6cd7d2813793a1a9b3ab3a263d2914d90962046799cfa62b1ec9ba86b16d0f5661b4dd1d5dbcb14cd86cdcd1929976e4d21ccd57333a065714acad7c67ecdf04f0bee4a9eea126c191bb8d452ea2f66c43b7ea928a9ae32f229c8b0ae58ca1167a4f5b2939bb6fdb3d4165a631a8f36b5b4d139ed10ad8c71e76f57c66fbb24f8bf7489741d5cd450ddfe59e6b8e58b262f6d21d29ef879d22697618881c56de78c2dc06014f9a6045291ea8852e7de3f24d5dff67098b5e7414f9a9f1be6ec1a76bb3d3c2948273a3cc8d77bd9e4b9c90a0598e7d8e39009b8105a4bc53c47c0c713966c699540e8f9095513607d2b199e9047ca2741cc7ab834186edc6c10abb9b0b14c1c77d83349807c7873b706b6d7d9f9e820d60738203077b1ae177fc9c4938ef5c8996b52dd9f307192e4c6173f09effd7af66fe79b0ac863bef90d23fd4d7595be30a96ea65e9c5647d4f6f6476243e6b05cddbea9c0d6a36dbee099b835defa5a2944d570d0905174af3fca58aee851ab43762d8242d0de0446ec024286e57e219bf31586e5685350dc5a671050577b9353bb472933b53d4907b177f63d1aeecf5c6df3a71bed936a67e86733d3810b21a41c06eddc3a985d63e45d6b4e5f9eb3f3e8965d835c6d946bfdefd97935cdefffd481e215d9e4d486ef139187260aac48b8d694bdec9c53f6891834c1e010492f3aa41de87a688cb71718e8493d32c844cb1bffac1ea2e5e33fe59c909a02b2a87d3a119d0e8c0a2ef9df2d1727730fe8688425303ff2b65749ed2e0202dc01acacef2e72d66e7e3d0cce869ff963680e9b4badb76e1fa16402ecf167d1e43f2ec0f3f9e6b557fbc0a0ed78d21b229f77cd93d15e82a1ec65cfda8ba8ce5add44838a2e769fda786f778b4b36d95cba019556a4ab9e9da66c4a38331f671f0186b00163175b84649d79f973eea4bfcd2b70518f4508f852abac58b3951aecef3fd85d6fc4139bce59598b582f9ff0bf7cbe90e8878320595299704a7ac94b70cfc671512a5b5855078c42f1f2b40084e8b341ecafa7c53fcd05a39e1238513dd5787b3044c0745f42b3a4f5821fcd784863fe573f287fa13f648018c8a456906e71f14e4d691e00e4f6ff794455fa2e03645b268055e1603d4d02d168714b3dbadca120079b04f0630b86a323b9dd7ecd4a75d9f0f1084bb99a592ccfd641d665cfbc18f1b0c58a7ce251e6389522dba4264ae445084e8929adfc2a0588708b9e4b4422dad4e4f55a1db5d7dcb2d7758873048cbb4de4c6d109261a40649b956b092638f4625473be0936cbcb22c2c073c5e5b54d1e7227beb82a290dcff9ada9e1e66101507801bbdc9ab381aceb1cf345549302e73df14948a1dd8dd8925a4615d9f7062e5aab8f37020bcc4ac2968f7c0726c8ebc3ff945bd5f6080e81ff33e509255ef2e2092f7cee94b6367877fe76d315562d16e063c7f994f02819adad4a66a0074e8ffaca482bbcd0490e3b44e159a85b031fdc96cf1ddc1a0bf62c5f2211c9114617be1fb00cd8842b5d03fe757b0486f01610d9002144671c4bf42e5bc759baab480c0e026e5ec516f0c5b4789101da6b1ef39fcada95f17cddae9ee99a2335a93e094de5c816ab228ddd667177160857b8f0f1fde2ce8c4afce6b8d471de535109245082c7454919e567eaa6f58e839bd99b5d0f76062552620688ffdcf92b944aa613b4f137d5ac01d54f38f8880d063548598d37701f52367fda9d7598cdd2175011cff98aff75ace8e0db4d6551ee380ebb2c77389cadac6db472375577e5b08855054a4a45c0c900928a6fb6255b756016a5ce89916302535601a3135039e439fba01a244d5003f1b292ea30850602843d66923b22ef132c15b42319b32b73cba4ed84cab1b98c99f34a76a25e6e37732637e8132556042698dad9bd642cd69d706bb0f9d3ed954df0ce86dbef03d3be8ed36b0f56e9811eba3246f6327ebfe2e0b66d8547e78f507db6ea6b4c3f7113d98660d01bc1c1813bb9048a2d60fb91b3ae3b603ff96907d91e00601bbde7d61dde2c2dc2a8bc7f53d409ece7457db6e5e8c398bac6f5a187bd92e055844729927bbd53ddf18e9d68f6675683aeded123a90abc60f96ef7b34082c4e030853cbf241427d8339ba04f3e3da963dfbbb4c1f588c8d5d695c0d968c9715ac400aa1c9d0a8064c27082a45496afb625a697f693024057cdbd748c0e21cd478753500bc85b5eb2041462b424c7f3282f799073d543edcb2da2db89fb7779b79d6104f9ecb01297a8766d337aaa591518304b38b8a094c98909d85b99a9a2f476de86065fd46fd58ec7b726d38eda917d53e2799ce136f35c3afb29708104706539c07d66c699aa6befaacce4a4cc8edd0f69c06e0d0366f3b96837b4346396653820c837a55cd965aeec0e65f7285b893d2b93729fa12833105b654d79f9e564812de092da137b6e683e1c0feacacf5094ee2eba070d6f129eb95b44fc5293ab01318f98b18d7ffed5fc2c8ad0bceacfbafcd1ae10effac466445115f7a81e438fa1180ac178a72f64978237067c8c106611f1332803c78e04848566f2c2f4ff421b1ba894b639f0a4b938ba64db407ce553af7c1e4020a356676b445d9d5f52e3dfad4f84d653d5c59977e693d5c38972924b1cd60d568c4b6fca07495ea605c32e3dd50982af8bd8f88ac8760f55a0ba67b364027f8ed5dae784683d44afd9f10d9c9eb3bb976fdb0d8b39e74c45bb8d40c6cd0757a0a95c668590f72c16d4234fe8efd6c44bf602d83e10ed97d96d38f9cc5d61cf87d5805594073102238b40f9a20750a9e139cf87dd8bf6002282610f97314ec988d8ada911e57d823612e0fda6706a88a88bb2dea326bc0e221c088738d66beb20170548adaaf3402d254890087ce32b0a7fd71ebba1f2a24aa0fcc0d94a6e1788f7f6b2815a4f6ecd813390ce730b15dd9d8457da1972436eed84e5794cbae4f799ac8b95ce0531976236210a70b97155972b885cf8219355caa591b51ff315075e727dfb1a03353bc4406f7eaa32f068c9f69347bb7f61e0dbc119771bf126ab1dd19b616eaba35d8d384048bfe7a72c7231b965eeb67ffa27bb551a9e2f0bdf9430b64d9ce1c18e1f0791a968cbaf308f6201bd6310ea5c60aa190b07a37b989bb2e7dc36690df59413c6843dbd76bf68a0f6bf4e4474c9ded39a429ffce5d679c4afeea708ff9d70917af9d2548f271d91d77a004fc0acfeb086c3f3220b9d97561269749c477bfbe8d45333828bf095e5dd0e724f23c8e7e5b793009a124fc21762556ed0ecda286280720325a209fbf0e6a2837c13c17c051e3d9e745cbfa382d2b62339c293ea658a19f1bd26b0e3b6f81d75a4f5c169a800df6af00b9399433d15d5b6c1fe7bfc0582aed19fa8cd03d4601d086cbf1ce66abdcbad9d906bb14334aea869a13c2dad3270c18f6c0066cadb1d8e112dd14d2d41f2079b3c1bec15ed9b46157a2a548372879ca56b55edd6c2b1dfed9feaa2c469c7395e3d9673df633e9e905267cca4cdc0676f2d3d690e5e7b76b7e80c231f3bc6647e4b8ab1ef14f4df3388aea977cce28e5ed8577e2385e3c8a66af64a7a9b8bf484754dfc16a7208ead8a2d2e433c82fbe2becafa3d62f600f54ce1e1b347d8c25050e97fe2da58f44e380a3c150e2c514d466ab5cb07cbf722721817c16bcc9139ec01a7b3f6cf9e3a27c6c1295c6838b9abf85686a6630d76aa255dde78fd2b2bb6845553bd572211ed5ef7b9767765ff4e98f34e1095e4bc2f81f3e84802a121ec2cb6ee58710289142a6cf49a4e79172b9fac6999ff5ad977bbfa181a1b122b97004135ac3f29bd196991bc66af425410b2c3278919c0b20e58274da040ac4bdbb8a39ed9c421321f6fe390721f0766178784123e65856699c8ba8c438374c77b10c354b21c3d33685985f50c69399ae4db338dc1faf913f30910d10ad08b7605bce5e0299495368cbebd519042e4fd57ac30cae5b25a103f034b19573b67344ae38ae7932ad72589b6c691d2d4a72854fe5082326b58d50fa5bbf327b75f1cf4b0ac29f888e492d6e3393ee8ff067dec0abb35da7bfc0fe1c6d2ebba6af0b8cef333aa5b53429a9c03d1f916bbe817285617f14ddfbe75ad5dc524a4a1f645379503e498f5dde9b1bc3a6676217ea8b15920b3dcb87e49b0e5e6fe71d8802bc718b66df56f7165d8f8cb2c5f6c95a1f042daf204d557799995d1c612fed72128bb6082cdf6ba69f1240a578cbdf9b4e7dbf353277a99e6467580561ae004c7b6b2a1c81e84353d2b80c13da967d9264482bd2cad3ee334a13bf542f3fc819c953ffbd04a52d74696b910eb0b1ba2358cb1c23e83e3406ba5244b71704d79280a48cf03f32dafd739d2c60119e1f7d1b0a55a2d2dde49f6e05a122acbe6327c6f37f1ed76112a910bfc1d69e7d6bfd49bc644885ebec6c1bbf60098dd0a29277fe5466387908866d772793f936bdc407689a43489f13ac6bc95671da7b1a69cd868011bddfeee445d6a79396d491a8166b7621d8adbd62da22a5882aaddeb4572ba3923915b19dd4288c4156583d3ee63a7addf722e4ef4351ff99d5590699137bee82f319cac38cfc5c5ad9887e4e27e6c4cb1cd7c70010f8412fb72b4e38e8a121d9dcabf2bd6572458b786c15ff19830e383d3fd8863127142cbf813e4e7d065e2d821ae64e309bf212590ebe2920d0e1f5cc29e9662553758d46966fffce702bf51a4a0b1ef78b664630cd9919f491bfa3e555cacc492fcb69bd313bac67fa606fbdfabe179612e85f33f4915dbd8208e60186a7577cd6d4aefc99c8f62d4de408e3247efd15e6ec884b0d3e7364eca6d6d787f6ac319ba450627dbc735bf5408c9ce32bf951677d13af8758b765991f32bf8c312c71eb883410086e616a3428c767714e151ee5e22d1689e8942b35bd363132784fb2b6b0c3bba7c68607c258c16ba9ab60bddf30567ec82fb07c41ed0d785ca33714e5ab365a7c1eb1deb996030efde74cde29603840e5dbb95042a3f49d78ee8c9813ea151de4fc6ecc8cda64309507ab2a900c90d6c3e07d4b1859d66e8f6f6440ccc18e5c6c83be556f3c8a6c57dc93efadd4cc196b720c00da2438f75b67f1cea76b913abeacaf666cc8822cc5635a87a6b747b53501facd7cfc39cc42ec7b7aadcd969c45843f642cf1d9486a41ff9ab77d2d459207dcd84f6da2ded19bef926902708e3ba3cd1e5347b538a9eb937f593eef36ea9cf483156dce8992e39363d199f9ca59e6577156fa59275c7485a170d4774ceefc0b027e9c9bcf866274e1098bf8c250ead711b2a772ba07b6d8c6f01ff8b75569ba3065fb35b61b9def983cb1a8cbb238898f0fd46ab0ed2a0884d427453443e974b4f04b352a4cc01c59a42c122b4f22bb3203dbc2b71e37a44b99085ab677edc94a846249de46df7f8f3a66fc6058f00f38c40db23ef649c7b767f67e449c2249111a4f5e9e460a10ba7b65d4958f2875cdce24f248006a542f1ad775d7abce0a41498c22aef40d782e75c09cc7f89118cf1ba36e28680a2736e610dc9e18e219d41eab81ebed8946ecbb28163354fd697f3f1c91f845862c99652ef3db1d787b58f74edd63145e2cf598d03044b2324238753c2ae7ed5b9226320811a743d7b0551ac024434504798757352b54b0e09148982c255fc4fe10f0e77de2a3bcbfd141f6cdf6cc10c917a708a0992489603bf9f34ac30109add63ae08528894dab608e6ad4c7744632bc2411f13b728fa279eaac7468ec72e5030bb3d90b188e7809ce7ca3fd19ce060c21ea6d06d8e0d85ff02fa913d86ddaa24958cab038e0e1396db2216ea266cbd1e0d2ff57fda72f29259204ff01a9de0b3b8b041cef471bf92332cce6d72030b2ee3f8f317e217b5000246c0429a9c8a58404808727054754e89856a160f0f564275e639e982fbcb47bd092b5bfb12ddef1b984f386f2af69829278a967a76925037b15a66682a33efe6c504036e52f0c08ee09ed3cb2b58d07559854a919f026302d2e44a104382e45707693bf73f39172bb7ef35bed94a48b98bd47974093688153688b63ed81079d6ca817dcfa9b1cc8bb7c8ecf5c7346d70dd4ee1733e1e3b55953e9bf0ff78abfc82ab48aeabc020ae9a5cd1909faae8e5d9d9df3b825e5c52be993661719204157da4e5a0e0f6c919fe9b8fad4fe1c4a81d4789fba3c3f39a52c40ed8316b0f274b30eacad61650de1f166b233433a71c8a95660a9b5d917c1303d0ab48c2d55a5ef36017b57ae41a490d78365d53e3055f70df0e202d937d89296fb6eca8607c92a89125b70131ac0a6f050a6c5ec856a80254247332809069a08af8a69d602a691dbc9a8d440dfbae5ae4fede29b26cb0fc8e2764c6893f5d4d944649444191759c0c52eb723c4ecf7c323b82cc05ea805b76592f2d2c83494d2f2d49312887e342ddde7cd26c8ecc7f3bef7c2fce6b18b558711ff86ac49e5b63fcb716333f42c452ccfb5a23f684f589ead18c592572af05ce40eeea83bb7960bf2902a01c9807be6733befdc589ce3aa71691e4ce7324c415bee699445d9c0ace421bfe836093477586ed6f824d1e6db0894cbb10c812d38833536b0dc5a994c8e2cb06a0a240f07f8dffa23c2e3c1abb8cdc5ac217d77a37265377aa0d25979d187c375d338610e400d3dda8232bce9839f30d2090e068a37be12934e4f067ace17f7dcfbd6c4040099ce8e140b5aedbb4319dbc611cf323269e03d4d508a3dbbd5452b2422438dfb88eafe7b3453c6603f100aed3e8fc760a146d234f47016c7ed2e4986461fb2ca634d94c13e326f024895a59e0f6b2a942c003b35b767e3355db2faeac2d13aa298309b7e5d999cbd62d07791d79eab83bbe8912d5583210faa6c2d554efa93b35beaa7765aead1498dc3bd31f1b1c5825e7dc24d9047786947ee52b4387bc1d504ce290d27c7f6589eb969e32b2f3a49e76d55326cc6ff4f725ebcef016584ad7845f7ffc99f24273c054fcf823fdb559366fc0b995d42939b714bad57ccc6ff169b43acde58533edff2787395df6a686787ac0394f251e7338188e4ba7f53221b362e35b1f6439e689c5a24a8ea9e7144a398ab809eed90427db9c9a316b12410dbaafacd910c1078fa09a1aaaa937c16a165e3ebd8d720ed5664f30a58548ac18df5ad3c63ae125219083128f9315fb78cc52178921ef74d14df1f3e6b79e2db3c123721b58db79e4f316ec1e7440afd68a6282bf4c12d4be484012b5c8d2c7bee3dab6830fda4f27191670fe4baaf20d611379bd79343e1b44c6103b6c84aa4d2559c73e92d63cd7c1cd0cb69ab1520a4b1d375311e4653e082c343b97d4593e8fb441e2c8cfa2db961d3f25a753a5a6b4ab39d2096cf69abffe27f983fe69fcc11f5305c5ece73a07ea59fe200ed868755cda20791617786dcd7ba77983968c140aeaf1c7f8009d5548f2220b44717ccdbefc557089fd4f4d1eff2cf2403c28a062aec6da34189a9b77d3217528f8876106aff62cfe4b610672781ece19da4ff25a5e8ccc6b6d9d51a377512194a270f157181b6da253dfa5d22eb0b5b58a959a0ade04197532f54ed09671fde2fa14e110a26ddd6ed18119497808c76d6e416292396dad44db1e44dd9e30b81ada55ce6b0395b692e28f9efef4513d912522ccfaf4f5a35a87aae5813da51c5352c1da5fb640362d25be4e70f39ed30867a27597bcd0172b5e0b4b047adcf3d95968536baa9076a963daea9c22eef3062f1e49d0366dc3ebb4c5b6f9866303728a02d7436b64d62186b7ce34ad77b6d2c42df8c3309b57416ad22140801285b6d41eacc6ede3aa9115d4b9bd1336d55724a3a3aed45984c115e547531ba84c22b99071a2f0533896aca73502ca5278ba167f72da0c9185254939ef087359fe101944bbd2516fd647e1c5017025206045d8c40ecacc16571c922c109d6c1908965a32cbac913f8b969fc6f10555369fc8d0373b4c7c535089e77f80c6f3d620aa5a04d555aa92f33638cb0f1f70448b1b6484dc933b44251f25df9cf04b3902015450d5549ce074a855cd26f090b31851bc2ec5e109d6b5ea0ef830b62189faddd5146621e1be382803a297384755f51b58237b5c34f0f92500e6e34f461fc80901cf8aca456c049432ba06483431aa2756ce81e91098902dde32fb58cc19ee6288c137da25f6a492e9a8730d067982fc80c48610fc08dad9ab015a205879fac4a7a3ed157e196128d8f574ee39a711b5c2255ce4e0937ecfb6625e1a92a271bdef685a8c162c5fcee5d0c2ae2a5b4438d0d08159f268d7678806f4601c654d9174a3a2325b355b1dc7bd1bb8d817b8f65d01ba675f723477b820dc03c67061448e569668c46fe789c3ada9ca85a448420b5256299b9f5d432e265fae71b9729f9874c95ed904ccb8752ce43330cb6dce9f77e0ab712163e312a32c904afdc4852d840b5b5739282b5494e5f9795b69dd7c3c6170aab82fc069966dd6eeaf28f2096ecfd92dbd195d50af977cb655c2fbc2ea8eea4bf90aea75ea3913c3e2ce6ab8927b66ded4dd24d7fbd0b2682ed8514ae86748acee2972e2422c6cd8900b90f2cc57ca368b53fb934fa6c8e82e0131b9d7dce71afa3990f5027fb5e9a960a9a1a981a8203a56850de77cadec1aff6ad4a714463306a2bdff4e5475283839c49855819764a9d0397d8ff1f2250ad4f05a9bdd3d4b5f5513d8d0076ac08e7d287614e3e3463dd83389e5fe112f659b164f4b00cf3e6c1b77d868bb360af2335ecf44a6355e8fdb1d5bce9822c6a71023b6b5475396bd5056df232172ee8af6ec91175408826f0d2d5bcfaf0d3e1dccfbedef06bfa087f9f385791815cfe6e1edbf9a8712e681034befd53cf8eabe8c4b82deea210c73514773b0b11871af43359b45d432159801f2ca0f2bf184daf4f8f90fb32ad58818f2c4aaa99ab2be3d6a9b5e11931f82feb7d0f89433a71cde9d93a0529bde573bddf4591d0ce048730ebd27ce2e4b62209485a8ad20779618a11e2c80318919f5c0ae711b68b515157c19b1614722468df8626a99f7d428772a0cfede93259fa69a4536674183f50b98bff88dc14772ddb54ed881f2d9a55399affb89559d5b67d7849437376bf99801c5fab9df18e55960826d5e7a8aa9af6642a71cc6dd80285dc42e3b9208590a1adac7d65bd279b997b02de31c2a9cf88ab34663d677c62cf9b4e62c9e39a9690e91bd82b3a391756a83dd7d1d299046095485b9676539394c13e0e8104e66d96b93a2a71db12fd9b16c8e10f2664278f364a700f97c1a11ee151f6029c7c76c8be7c5594ae88a73ca57d3820934e16d615d84d704a512976467d987bbeaba0ddfc1452e4bf15cbb1d1af7733a634578fd70de8b98c9b505cf5bfb2c5b699702987aa72721e5026125a54a60c735a0f54bde1768dd38ce3b614658dfa517457bcfce12d962732fac2ba122bbfb1cd10dd98bf414b9edf2b9baa14405a8235dacab8627ee7070e31103540d9a78bde6ff1665c9be29fb7279c404d7a07064d99515f6d293d14a24db0c3c3d6638d87e4affa1f2b2cd53fc1d18b59abca9416009151193f1cf13cd76a254ff29be232d94c8922df8e401801eb239adeb97f4e073af9d3cc38b6a6e6cba16c74194c96daebf4775e06ac8f18f98fe39753ac6a42ee2dca2a65ecf104bc7df00aba143b73a668c1d7ac662e3f48e4f8c4342fa3afeafbfb2648cbd6cdf17e03edbdfb0153790c535b4324313b85c037e42cd896244c5b9b261ec5880a886279cad045e1bffb0d905721994f64dddcf5899eb6b07fe66493139b73839b2a5b60133a3c8b69dc526c4aa2f59a891ca6cea49f680aa8084dfe9bc51f6bdfd2e22d623b701aa53bcef480c39ee302f913ae4bc153cace076d5a503322e40ec6f4bfeb72ffd1fbeffbfa9ea7f5e6bee03e08c25e4343b42ea65136575cf6941b00eecf6b7675c6184c366ca0be547d3627973c9e1f22c6e471d4dd99aaef773eb1d11b06399f32b89bd33466a97bae6e4b9a07cc0e6900fc64e3eb0896daa00d92a23ae6fa2f0dfea4c490cc9ccbfcaa7bab25e6678d8c0ff2b1d1ab823db795344f125fe230863c5f2cf929a213803fc43567355578ab56f8755fa8f29d9e07f76ad77ac2d029877783ee15369ec8109e38073b1645be0111fdca04bf36f74b27bf3eb09e35f833c524830e3259004125df8e9b5635068228e9eb65e3f5b4229eb38b943db321563e6dc6cc1b76fcd9805d8186e8ef3a5134dba97c57410526d242e9914f2808fe8ae64ef23329bdad6701a9931758444516c6348b96f03d3315524a5e27fc5a1b05fa3c3b267d850597c0920d6f494af36bf2d27838738d0db127425d712f591e69a17a8cc7275a8f8093537e1fe4d262c8fb4b0c69ae88e0c76a0f29d30f1efdb300d4c3debcdf4c9ed183e321c969ea59912c0beb4d9029c3f1eed28c6b494415df638ab55d34985a3e0e63967ca38549423835817b0270bed8f71d2e00a195779a3c559a8653eccf350b9ecee85cf4b15eb2aefe8dfe96f4d29a0d980cbf1f42d600b458c5e0116ed32fc495b6d0d6dd47c7591ff7be292b5666f9bb9a44281b96ccbb7cbb83dc532dcf3ed236e17b0f9afd9dabe8db49f7201551df99d09de59807b25ec85b292f6cb796544038b4e360233b0f6439b0f9e72c273d9aeac277be4dd8e258935ab7b9cc227cf9a78ad66b271117a4101eaefbeeaf3596d55c53b0a92ba85981fd75e61e31292545197665b9cb0b886b25c5a9d5ab80491b97c1052d6b099771211d4b3c0966f9ab38e73e2c9caef365d531a0564ea58028add6cd90ff42634df4cf29de4d13abe5b4174f5351032dbaa71b6d211cb279de7a1b3c352bf52e777d640c42ae3807a81f4726bc05cc918de487ede9daac883b8863704b75c3288f2b366214fe6f08b61a4a9fa83e0f4237a31e5a9493010dfce887e350e9ce3cb14a4037fea09da38e60938447c09451965289144e4652d1c7bc4d8b2db3b2bba662a4b4c15f9a64a033592136ce076c7110d9a84378c8eca948026988517e02d5fe2664894c3280a949ab064718acf010f8466fe14e9701a75b6830430e1ce1c1291fb69f9e38a6d86e04a94ffad5cf44d23e64c00650c7c850f551db2b7c151263f34fe570c55ede8d3363f65a76024981a3342ac87d39805e6ac3de624f51b9871b7159fa5bb055ec33cd6198a6a31276ab1b72f8f66731c9c89945d81882b18ea22ea19ad34e8d48608e5923f8fe7c8a700cff0d9297745d07f81871709a8d9c42927c3ba9385c9bbd1577b34c00298b255c99e091815aec58129241c0a5614addeb76d0fd09730a793452b3dad6bb8aa731f71b2af3531756de2356caff7624c224939eae42c412297076660e878e5f9ab14a7434abe400cc9e652b25236236db80af9e4a5eec949ca0d2a2469416c764bba92b64a3287bc879d6f2d63c81c5bbea3e193d29513b73e297de0d2470ef695dc73c2c4849ef9db724ad45199b0d371700a0cce95337e333ccd46771a8fda668d63046780a912c35713353bb3ef9a65b10177023676efe82d17e23287741a832b88fbe3f4fbcdd07a72cb516c6570c14a1438b5c827299685bfbd3e2b75832514851cde1605ce95a416a9e05ee54c324604379860c42357a1d260d432e0257868a1ec96652cd9f6a6d8a70e6f6e30667c88f594ffb5b96e9ce0338f3b4e5302e01c0d955b286f51b59f0ca9046c080fcd14b248034d6d2e359f581e3cc506da54ef88f68b5fb9a3b611d5826db39e13d3da90015a1035dbf84fd945bb927f4932cacf5accf6992b96390b53e9c93211df69e4622d8af0ea84fed74571ee9cb421b04e037abb3a5e00b05b9878765fde4e04efec02c4821a25c9a9d5e9f7010e648208d4428579408f23205c5438e3625879599569d4318d318b4102e6fba42365fde8f3d8052e7715c4fa9e1a8be298b7d4a8a610fe11f8e75735c3f9e5df37377df3e92a6fea2ade148360e6d8bc85db44bc534d06c46d369fcf984cd7a422fbf72fca44538418b39d4ba4a1bc22d0ba22fcc3196ace55b0e0deb3a68f986fefcb5a9e5f440c1de3e1160f39e734e39f3b1429ab3c2858cd0d14e7c982a74b5e89f94a8b8b981300043abbe716a70a1b491a384b796790db63fc8f50bc10e46e4fe9f6d3a5a198432218e1bbe349a00f488dc8290927e6231345b3cd72f2024e3b73bc3a8d585e99e1ba31ebdcbc671a0833a1256e17c0ea39ab8df854b12457572cbedc72165e639296c6b58a2c15d6beb2b4119a3b53e73949b8a215136e8d6feaec3d8138281b39d7b4239242609d7f052d9923c7630267559ada559719638f1302744cfcae0a7704dd3b4858c9308f0dde3297a6dc53ef72380944e5f85d97ebca4a9708153e9f15417423f601597f114f6663d6c078ba9c1c987ebfb87cc98cc1553de7ec2e59caaaa5ace20eceafca9de8b37cd0f60095eb0267c847d0e167df9dbf7e1129cbba1c20c3910acbcf441d789672769c053fab66cfd6cb7b3d58b9934262e4669b57159ca84f0a31564c0cec41219be5bd69ec5942df42b8c5291bb3379532600766d7bcb826ff969f20afaa8607203644c831cbf91db79261f32262471b07bebf28e0588a820df17ece68e32b42fd46385a6a95031d763bbd11cf5296d5a22d8b2d13f429c2ff35cb04155e0a2b1572c4a8ce0ce5a6f80f77ef257f6b05792f414b57aea501352f801016e4f4b204b848934702238aabce49ebad342487321e78510b6c5282fa56079c19bbcc45d7d8ec3fc28a32a53734bfcc3a6329a3a2a769f478540450825fc4c4da0f7c3362a04e200516517031e62db9c0163210ce819747b9a22791dd0117b8c711ef33f869c5d8b0b6f89fe2fee9f319fe5f043f615166ec6f89f3872a6e07cb746cf51ac597e4df9233e4b79af05b53869e4b4aa9993d1390230353e1d0e7836ed5f1684730a0d10add68c9be4a7f0201998c296382773fdcab2cf4fe3821be1453bf7a7453a2d83340b98e5616c5ebea87ebef9ecfdf8ad69db357d7ccd3903c97c759f28b1eac2b7e575a26b5525adac9dfb4ed0922e7ffa86dbdcb6d3b1c955d6cb2661796084ad70cf338d567eb9b8b536acc01b9e8469d0b057a729ac3c1ddf12f56958d61ae51ea237efe499451db3af20d4bcabc1daebe31bc02b03e1ea935ba641eb3f8ea6eb521bfb42287ea489a9ed1adbb05c90d221863ad9078148d2b43c544dcf4755e846dc19910064ad1485f5c1dcb89fd0673db308740675f4e218e6e73e2688a208b3292e22f69f17406ad4d27c74bf27e40cdc8e3d08a63e2e5986aa20e5b9c319d018462287b436aa09cd2c950b6f69ef8cfa06c9fc0e1e004910ec838f5570037712858415705458bf836c7c32105c11648ed5e3d93ef2b29320fe8e228c82214ee041f59919f73005cc537c38bbacd25bc579279244c6f0d3420db26bb6a93e66db94bfcb1637e5c470f033e0481ea406e93eac413434ed71cc69ea9a42c41cdc69d0bb33e5871335720952462962f7cbac71bc0ce0df3c0840f23c80dedd1056da3f9c084f2bbbddb79a5032ecc1b6b1a007c7364981019ce7364a8e3c3e767deafc78226c93ffa18e769563c9538f9b59ce219fd06cb3d990d32a03573cada3c8ff8e4dc8d7b56b718ab62949044450b58dc6e85de34f06198a8b42d0044b019d011b0be8a8dbe34258f8293cc684b5a2e31d05adf93779ca3a874fb2fe60f5aa89a3d4089cbdf01e427834a1c1aec4f70cd934e0f6f5e4c6be199740af3d2854ee340396346938034a72d6fc70b56caa65dda0df39a719ea25dce9094f7f319d77021a7b655725a0c33499ad6564bfcf2b3924576cf5f555870afeb73f2f3a7c049cad29033334ed18e988395e757db119ca5577c3474c2781d4cb285d3712587e5a2caa8fd9ec58dd36494c8907a6027d9e3bdfeee16df5d20227af5a48521959192ba204742720fca9340b97220306b8dffc8adb0cafe49820939e56c82d526ae40ffd9591a35588a4fec5a72b01d9bf373e7658c401f558e0c82231efc422418c89e40832df624a1ec56c56b4bcea07f787ac5f12480d15e20ba38fdff51f76edb692b41bbe803c11880385f3642c6043b8ee3388e73e7388e0021841020e0e9f750d557dd25c049e6fce7bff65a373682569fbbba8e5f49bcedcc72b1c66cc13e1e69ee60f2adc0442f2b8ea17b6deec03ba92f9a6dde2e82fe229638959719763f485012fc5de7c03d085e340c895c7ffeab6c163953d2850435ffb4fda195af4bec1995654164cfaf008152422b65e7f40367443fc967e14c3e9568e8a2744e73548cc18bfc541a4ba0e5e5d012291b5c53c3dfb0dd4dc2ef5b807c8839ea7fffb1b4b9eef4604ed2688cad6b15161ee1e59503c1473d1523f9b6aaeb7e3f9b80e9ce761e4873e3bf6c4e96facb74a7abbcbb98ffa25be7add41178b3b30c18335c1509dc46d67db5fb259c18ee45602c01aebe4506dee3d49a78243812840ef9711810c17a0b33ebc5252a256d3a24ac77dfca592cbbe29668b3b231770d000941c8b2ef6fa18869031a2be56ba81e2a05de14a6acfea925a3265732fe6f3e3ac0c33abc8721a3ed52d819b9e47775a9e492e10fa249fce2c8dd3bd083e25fd5c0415eb33ed103b017f2b41512d94440fbeb53565c35a6dada0a996dd5629c560e4178749194393cae8e82f75ef0095d781373f76340dedb9c04c62ca1d6eacdfdeab38da07a70bee4c716080f865e7b24b003aa7d898b3706e514c2d8403a87e5c0f292168815df41227c149a4a4289ec1dc15781966c13b8936e33ff4bb2dfa64f70b1d53be3e14aac658adbcabfb115fe1bcf24f148d87ad4b839fbe8bc8e09204da41fd1b8765f4c6fce5c521bfd943e219745e949f7d79ea90868788b5f272e43923ea1c22aca74ea971ce675a2d277dde571a201f8c87453f07b8519d265a036c4db0b2442469c75b739743a7905a0e121ca76775faa972feba28af67452860e3ecbb81bd8e4d0c6c44b5dc89b4e4ce7002536bc1b369a29f47093773d24682b5a3c480228a4e6dc8f1c1d597c766d1bb91ec553a49c45c717448a1653f5c567574deb9beb439bfd06d6ab6189dd6c7d23f690cc34d1c02c98d15d9df645e3ad9472662408818737aee4b4eee17e687c5350b33d0e39eb7f7222ce8a5eff6c5ac40f4603b3e10e10187c0434e79409ed11532bd82209b12ab7dafcbb39b1fffe131449716418ff16bee0b7f890c87d6601996f91d184d81ce9bdda2063835c5719128cf0ae195920ac89428c10954ac4b9fa05faf456e52ea73fb033b599cecc16809058f0652f9e547bd0aa297b15c00135473f7abc0afdc7ead85404b798a9d01a7bca26cbe14c5bc54ead837f6f22afe888edb023c1e6a5a51f9b0360ca0fac139a1f154683439622e61dee969b0ddb2cea4802de40e2ee3afd172acc4af706ee2fc59465cf8ea6066c0ffce9268fc7b0dd62c5b7884b7ae4174fa86dd61177581644f72fce33d99cd6f9d30566e6e0701ad02f89d76d4531856749736c64f874ea33275983e69eac5473091b839177ce694123e647e02a078566b11dee652818d60ce9b72aac17f6f8bd2633df350db021d7ec45300b70ca27f017aef3fa460bc86bfae28df6e43ede7271322829e8b2828b6881e7597976fe8b7f1ebe5ebaafc75293406eec5b80af1928ea298ecb39e857573bdc7b7df11519295ffc0a386d8006e48fcad5bf7dc3eed1fc0fb4ac9fa9d4b22cfccd5903c755e9c902bfdd83be9191ca69e5e64cbf0bc66bacd8abead8acbe9a067f195f09093336df045d31ac9aa4e9e8d791776c0f0c26b19b8f81d74180d04034ed92b6a096df121c5c25bfb584bdbf13f3cb33fc1369efa946179ccbf8c8705f4734971c5473ab0337d7d90fc8c02efc1803f56b25146b1c7295a09a9c4455342aad050e715b0ef3807ad7e260d4f05832eaedb9aff995102b91f41faba5d4b07004387e77546aa352eee63fdcf7eb5797ab35437ad65bd3dfdfd2890d0fb792d5d7be317f7535e984aefd1f2e04b4468b1021fe3f429e943e7b344c71ec2ae47af7009f3a08904d358332576b58a4696ee00cb02d4ecd10642545010e7d32a6434457305def2d9ba5ecfaf7a57c6e1675c803bd10a79ffa427b744a06a4178b6c68ecc53841e97ba8994636419eca05363133782348deed537ced50491673e0eb47115cd3223e33481cd803dc246c39cc1bc52a764ac22f601059c1e999433ef2a65f663c02650fda1cad5de2eeb4d6dd8d48edc1bb00bc272800623449b8071ef0778d7440b36a15c9501fc34b71690d8801bd1958045fdfd461dda86dca0d5590e889a6516a6c806b9d615af7488eb564a15992d18ba9228c03b789ba0279d3730cdd8997487badd641d81b606601446e0673467367d50b89c4c9c20dea240b14ef3be3a214b2121b1f0d705280f2848db29a54c7e65172fc2970a3b908033a3260c7c7327ba4b3b35045c6e6d9d4f9ce3800ec7ee2f40f11106d30525eaefd57e56b05d78568ad6ca00c1ccbb5b5aeaa8199ff0405c0918bd78a041c17707bc2ffe2f94e1c0194f32b390d88475c26928fb57cc26426b56cdef8be91024faa850d9ff1ec0d0e0a4c59e608c67a66644cdacc3774d6b748d04518a61d3f178f8647b37dedfa3eebfa690266086789311dc7af4ed7bd67fea6c997063bc4d615a3d59e59a3acf2fd2d2845838dc9803c610c2838a57bd8f8cd883dfa4521b2980782dc58b0e5f2758d58d6e3d8ccb68560785c80d158eb05a9c3a4827c9b9f19562f1e38b5de0218e04cf4ba088efc2adf6d17037338b29bfd063c76bde13b97fa2d33759b996ab56685059f2453fba022daa06c23204b81456dc3c1cb6b0e2c5b54c2eff4e9f653067e0ec503fd0e3524c172cb965e02f28ac341696f51c6ea40210dc2f6b87aa83e5b2860b18383b8666bc5b8ad3e9d53e37254d3859401a09b5e0ce771682d8190e6c5ec420aba9f7c3a910b53901a666c97882461c7bc350e23f0503de8eb9a1291827b429e4565ae91d64716331d74785bd2e479312bb036942007fa4996518f8f60a73a6a82ac7611ccc474ae1c21e79f591779673e981e0858e7969508cc04556ee59814cbb7efb2a14fca8ac378abe5b3dbe49dfd327c34e1829551eca610aa7db98becc548b986bec0bc8fafeb21f323a409992f6c7cd444be93102296746699e22525c1470bf60744b3e2ca2ad7d581cb06b4f62173219e5447c906d80ad39eb312b44fa98130cf0978d4bd88b58973a93f05623e45e7f8f770c750d41d52a7961889c72ae4526c55a1f10bbedd36892468a74df7c03202a797fae28af75418b92b3331a32fd507a72180ba367a746221f377ab4737de8419aed69503f15b6105f824818ec55caeff8578f81e93e4f6174a6e41c14b6d907e6fcdb67344b577989a76bf545f8a4386429d35fb097800a3f8427c5b17bff6d6bcb740f81b5f4860ebd3af31944b2934298d1bb7aff62e87931d5f0ed5501f26e010bce15434c09047e77da5b4c96796b1e80c4ccafc7bf3372d8d55caa88cf52dd39a2f99c83fb85e20fe06a1240bd62f85cbff491f47142339d2e8430fa63e300952beb5ffd0ef4c80c37ebedfef45a9dffdffacdfe278d15b5877f1de1d0e0f1043d6d8148240ac21196a2da5dac395427f8c23c76586ca8af6c2d6b35242b948d66143e53846ccc3deda6f6de6f52f5000e032695a05c0c8a0e74700086560cea71a1cea43c12f08838c95dafcef0e75e7c0f6e119c2363763da310214101418657a0e7c19be9ea6cae7cbe31f31c40cd1dc2fe5668ba9e9614bfc716ee8a375b4800cb45e0d9d0809d5dec4b1112d10fb9d9bab2d94d65b31bdad4bb47ee22e6d9953daee05d19f416a4bb02124d51a5f95caa9e1c024ae89658f589b998e1dbd4e9082350e189a39561c2f42dd21ce8c98f3c459a80f606f9ddf5e6e1a20cd2039ccdffca63bc4917f342bb0b1782d621de11e58258b05738e75041deda280b4e25bf0d27f3f0aaaede32969ca07a68e0dbf786758cb9f9a22fd7158773cacbd28e1638717dc5f208fde7f329846fd8c5c49c634f475a3f93a241ff9dd912d89d98e29b6cd130c5a0b3bb103cf81254f5b72abe2bdb8b85cc2fa06ac07b2cdef1974702220d12e0dcf42df0b80db49a4551c9db6b242cdc5d9a8a6862bf9f67e3f5ef08f62f95883b1b7e9fb0a5e02c344a73a3de75c6bd9e2c55c69295c3abd4001c96f0967c3bfeb42b35edc3c13e37f9ab68b1b2884dd239260ee9daf3560a4d585f3c2626d13f38d4cf2033f0a70c1853d7cc7b1fa2307095e229d435187d70712d2b7fbeb038e1ba9f23b864232e7fda6f10b5cc36d713443e89af77f7d34c59afff3e2e1236fa8bfeb8e6606262616732368c55cdbe5798fc909b2379d29dd6f1f65136eb181763db58122a9aff865855ce8772a93da5272a72158989582c5d74f6201be986c7ddb540a28b6c44bb6ceb46f1dd568f1d98c84195f663cfcb0a7ad50bdc1e5a1e2182571a06627e0ddcb69557c9b25e4942fe3798d158d582339be447a2f046aaa31049eccd886f8b56fff671c37684c413b07a6025b41f79d5334432a2bf81ac0af8edc87eb0393f3b2f5ffd3c323ae2ae76d8edf39335bac60ed3f3c33bfefc5c9511998164ec994afdb43713554006dce5d9e7fbcdcb9155c0dcb591d7c8b02b96e2ae65d172adf511851848d23432a7eaf70d7fb0756e554e01cb8c04853f892ae58b553fb599d98486e55ccec7c199c5a9f648258d186e6f9a716e447aa9eafc41c81eb5b587e9b35f1f80e4e95dd0bfa2ac19e8f71329ad76afab4fab28b2cc8a7d990c5b0208905e5770eb580bd70cf3753b61992fa15995f5943b455175cc274648518b08fec5573af9aa7dfbfb28a66c31278371b524daf441472641b811ebdbd6447b0fe8279c1f08d16a777cdbed06215a1dc3d19d7b74987ce67a81ee252851d76beb23f0a28be6f1a4b70579f5d5077027f992358154c41bee135f380e6466a73d25542f78544458e47ba77c698fe332b8fd99525fa509d98e9c0d418dd269e3203b4bdae4e4cf65993325c48ccd29460d2c113977cc271e67bf7b4847082eaddd3ee8b40eca6085b8001ab3a315b3821c77057058ac576541d17041091ae735c8dc5b73ddc7c7b18750f536b3f75b7133850812f464c71851d7c00e35c0907656a352ea815bb6700fcef08a6ff7775c318dff94175375edeabdbc39199a1eee5877f37bba393d935e6f84994fae4e404d6f174ae7d768fba3599647ec3d96d28d237473b92135274616315f8c404f8bb2264dd88695503815c296ca9c07b94fbbfde763a5738a280a3dd622d4f936a8e08107dac1c8bd0ee0e17a3382a492edf3a53820872735b2492d40e676202b3796257a10c33b0fed352bcb37f179fab13d30131ced97a91cdfebc1db96412b2ed0486bf4bdb51646c6c99cd9ffae9f68593d63eb95c5dfea460ce6eaae1c0cc901ea18529e85ed8049d70e014b39c4a5ff358a23a3f20a3c6b15d5c8d10a25580a5b81359521f9ec72d8e754ca67f776c0fcfdfaf5d9dbd36d29e4cfe27e376ba8d871c415c6aa355a41043f445f5a1a0327b369080d97eb2761f7689113f9d6d5a5c5d1d5c95402190646d4be8f30fb5a10bd43be21a95d0ad15dcbdd60f0a4e269e2b65bd542319d2c5c47fc54e21b08008b0400bdbbad1655cc8f503c2d2c8e894a07012a8764a3615f10462bfed8b1002b0e0d46059f5e6b8ef2524e6c93c1437ed67bd9049d91b5c0c63df6d3494ac099596a1522acd111b7472511a6377d6d4ee94cce51235520adf5b71404043a2c6e9d441a2b2b007ce0e26e96e782d331690c530704d17591b4806086d65f408ef6f011e26261c9a1ce9e6eedc2004d25e20fc93ecbd4188a59277edbf1b4acc43e9fe66287d040d8792989029b1a45b2b46928b030b0fa70b25470c9786ee46293b7284a2f8ea6f6dc9e1a961129cfc66632047173e1e3fc867ebb8d6f3dfdbae7050a843a25c4d559f9a983cce0ae99b230e469dfe5bdd4a60cd695d78dacfe042389f72bbe24b71bac1c1797f037f2cdef6810de33831296cf03fa4ff13e1b24982c10d9ae1ff9a9735fde6e8de3563c3a18ed9944feb352fed039db4b1b556a2546f8a2481c463fd2a778da45314dca3ba0aac36b537f7ca7e207bd88e29b05cd8fe1bd9d8e782fd37553ec21c22b5e3aa3a8c3ccbc5fba11b45515b717f2503c33e148d29408f1e2e74909101a5971e479fd5e18a1b71dae17bbb178a6a5a285c5e63223b1241d94a023777cdd2dcf9a6c7d3f6494dde8471faa4e6e92a2083dd6c0574c455406f76f0cc48f70161db0746477031135ff36c68ca06512ba1a7cc2d33bc37473d971609d6fdc0cc78cb04ea3c88375018985ec206ee1f2ebc6c24c46108dee242b504c213c01671cfbd1adabe175357815bdbd9cbc5122ce804d2866f8e4c04d2d381bbde3d5fc3c5c8faf0f79cf104f622e45241e85bf17c6f02eac5d0709a4092c56a1193d32d18ae1828c2206ef588edabbc039865ec3cd19caf60d0a6a46f5d8ec0c9ba7ef5d9c42333e32646d53bb3f39951f865475db4d71248c05f349f0aa88f5de798425cab15e137239ffc0fb9c8ada90d1417321da84d6104fef100e2d5f855bd2b5859ca359841c46002bdf9747e691e6f54a007444d49a12b0526453d62fddf5da844287ebbe3bf5f5b08476fb79cfcc284e40f36614250813f4722189a44e457b09e725c823cc42acff32325a40b14f507637ae82b45a67127b90f620c3f4838eaa42dde54cb3428e34edb103661e90509699f0f280392623f975d5ea5a6ca322b2e260bfcd6be755d04a37e994522cc6b880e3df4b968b360f16a1d6c875b619ac636e3894f2cb9e5d912901beeae8482c1769905ece9f2cafe61afd5c06a5cc1361e066a35d4946f80cc63a7dc3962ad8148f7a76c14772a8f6dc36275dfdaf40964706c9dfe8ea9019ba9cbc6e1efca8e2e6568f847af8d4e5230e8978fa770e563d3f6eddece784fb55fab2332b6926984bd2eb54eb7d98128853c4f706b6374d0932e34d240c3b0b75a36a8d4983d728de4072562d5a025641054638e7040aeb324d47bba5cb458ae667be8a6ab036b18bb06920bb70eafab5c4cc095963ddfe056eca501f1212bc14687ac0fc40ba92ac6cfcba304b25c58a8a2b05d953508f0a94b6ff45cbd33a96f1d9e6a97c85a57f168fe6f04830f0e17b53f2a090275b03d7bc44acf322708c4bec979c991e3eb5f351eabc66be5c63d347ebcd0f861c069768cd94fd422c2f324d73699f443a9d60e6a6dc29f33231face8079470c83609bd88453cbe3b49aa39c2f31d9e6fad3aacc2ca901a2b9009bbf3303033be94a74a03293090676d8c2cba673a10336c0e7db4bd45bb8de2ca27957f30e934d44eee737d376c96548e106397409b75702f8ec1c8e1152e118af8e9a920a2080b438687d643f5dec40353876699dfc3eb048db6a9df4371de50cb70da93960a2721818fbcb4430fef2609349612ecf0620d0c31b4064b18f57f725c15a8c09ee4a78e78c5a9b4c3ef76e520a112f4dfc3a66d01580ddd7da98e8a618b430296093ba128b3e8a2ebcd7f32ec84a04066f1677eb7d2853235551690336f16abb23ac4386df09869eb70be0398c50eef9d2eff6b612751c0f11ab13a9d7840cdf3b7927cb8f3c8f5cc617aa139b49970433ddf2226ab3814eae7e41ff4b387202bfe57b9d6e7c8016fd36e2b8e91a0536e31652b99b2edc09a8c3d010ea1fff286de40a76fe8bbf1d6c131939fa76caa39f6800c737c1e3aeebc0a18530b2177cfa8b125d83f47bfbcb26e970b1a74400a30ba671bfac4811d9d16db68bac1f6e9fe6eebd5252c78876d4f5b2fefe0dd16e6717d328fa3bfd8c575da472154ab2d495bd21a5edec497aa68015f4b85e341efe64d9db72c3113e44a1a9faa6feb2b488d882001088304dd842e6476910cc8fec661b4adfd90d970c4148a536e21c68d19ce7664d760faa09600f04204b5b46e631a6bffe4f43320d0b607335572ad6a87eb1ce15db7bba87deefd8305ae50edbddee7f241d99c2cf0f82cf4f74fdd66980f51ccb6a0f0b58ed5ff60e3cc6c4d63d6ebb9f1c36e4cd195b50ac6b0fcddf8cf2f86a7628e5151eb976d79620ed103b6650a93092f7e7382fb9a7d1a37ffecbe168963cbb7fd511371eda6393abb74c4311cbdd9e0ff16c8783bfcaf401154db0c9d82a385c0ec3692a8f133a7a2a8c1377dbf3c656f3b6b56ca74c15511ffdac183b8662f58481b5128017f0547fd1c25e6146aa3301ff2ca130dc3076b2f3dba9373ba042b2bc0c88d9db2e8cb5d10b266418c12bc7419af06be5ce7ecc5da2d182e4ff49320f8d359c9d0ef021c35d67a21a0e58856db6f7c18a67983edc5cdbf101bea1bf6ac696c60e80b2421b41165400eda57be714a2e0cad69b96f1e6667979e2740b8c5d6d4bf9f3e5703ebfc9f63bfb4d333ff8610929bf7a8fa2531961bab979609dcc2422d58f41241719acf74f45e448587b9e25af44da9d5fb36317d2cf0f8a4315973bcc76aed9e1fedb31898c064d4ebbea8346caf12579b4d097947f199447c22dece4966d12604060448600ba0002c1dc2801d5807732c48016b5da60c151e380f0be6c0dc19336689f71727ef632d9a347fc2206cc1bfee34ffea61499b905204da744ae979334989c5fe47c79f9ab3b09271391f4a26961a0499d5943c51839fed54b2158f109d4f5de803a20c06ea79858f4f0c5e45726103383bc5e9ae150b316697160939ce180d7df143dddec856bc61e7ea188d9ea48b7669ab6f4de29b169281681fcbd3319c762f87357eefb90e4e0a7e667b38f78fd495d1cbd0c27619aeeff31f6b0ec431b732301d1eeef1dfd67f3eb1b6f664607aa89da5daf6bd72136bf05ddb79700d9fe6a59e4986e513cc1b56d85dd08e94d3556f6125fe7dfe6940c8fcb314d2b6ca89199d846ceb38f10b89a07db3076e7765a757c63775f08dca8ab7001d9274eb6126d169656a36872bb4241f0637bf5873718d6a3436815930978574498252293a872d74c37f04aa2ceee47210b53e0b6331c031bc0da9c041b8144811abbd4a2987e65fc5bb2a00be6471f6d6e0ad66c89b30c590d3ab62a701fa00fc6bbd53c60a6adeab6df3ddc95609e645809d66e24afa625fb734af91b29e78c6e6821e8f936aeb81e0d5c1516d7e955f7f01de10715d08283e8533ca569824be9de060ae544b82815a724fe10c0098ced80918879fa4a839c289130bda4e44b73236231b6e38b2d54d52681cf645b9d6e02607f0e9ff66374a0a2170661fe0a7e43a78e0abeac0ceac50f67f9053401d199b60e22d8bcd920c6e3cdeb347d0aaab420cc18d7604114fb59976c657fa1c373b8fbbc1ffea6c716bbc29360ff2f4fedbdf55c1371ed7d32efee5e0456750c42e3efe9efc8e88fda55be5d7d98fe4bf8abc2afdbfa7e3adf17b15a2d0c46c07921c4687ce4c21d21e3f2a5f80d4fa85c21a95c0846291be6ca0eb4cc3476e24e52837b066330cefb570e05c7fb0a32ec078157de83cd11edc4530a40980048d13e85c9d39e81cebe7915ca6815c5d24ed06d4374a0a07cf138934ef823856d6dad88d5ba78944f51679630f01b0eca42b19a53ce8fdc529cb4b5d29ab78a7cc0c1df1141480f2e7f757a1a032878fb208bbf9a351f1bf52885c12c013d7425b819d727114eea58af485e00c155d9b9874fe18fa9d10b0d3475bd5c4a40300567510932b4689a6f27ef34eb527927d5f12c9f4beebe5a17736ed4139980e567581240855d66bba5067e5814a1376739d8db402aadcf5dc34e0b68810085c81de0bbebccd35e46e0f82f894a952ffa13a3621104e97e05fbc997f9117e6adcfcb20f8a42979578477d0121ccf5dfedbf0506ae196df359487e4b6c1d7d5becb399e566c221168bbbc215ae47b1bf588455e6a453548f6716b5db846ecc7f76623c124bd0b3369a59b7c712d6fb9b0071660450f9b31f4eeb1ce8251676b05a3086a827a0b12d1c73f8d5c624bc0e8ca50195aa42176a461351c14744de48fd57f596f32301dd47b44bd6f26ff88912034f13f6d10a6cd0a5addfd8f2a3f6057142c55381de8708efd7fd2eb074cd2a7d24cbc594d1efc2c60bcad20ea647ee73c93fae03fddd622e7185732506ea169977090cdba5b3c1f3dc0f1655f5c772304b2acdbc81c5774e1e0bd9a3061d23625a56f6df96a6cdc6349bdb11d7132946420ca80def2d5ccda0ccb32a7b7dbf9cfdfbf9dc4f66d2fff498a52f22e4f8640775265f3a98d616b0d44bd33e234eba3532ba8b8a7d8d06040948839179c544a013a771cfa453ccd27c0f8026e2c0d5cfac92dfc4b77f341f5b660abea486ba6379fdc4e39a9731053b1816f64e62942dc478a53a03d810517cc1a71146f9745ee16a21b36bb4159fc20b12460676f78b8556098db21b930fc2b443197401e9d6dacf73e313e1e60183eca6c0b9ddc63babd6179357bb8dab63801abba3a16a29d61f698d3b919d3cba0c1979422246448fced0626c848a0dee9de823b9004129059a1a779d904e9fc5e4b02c6ea916dc407cc1c523397e4eebe54c3c919146c476fe5bf5ba9681eeba8b95d2fb39db3896313254b224f610a270540f335f9caefe2881f908c96363d570d67e9e98855a578afbf0978a171a517f7fd6321ff83b59c4f94f28e3514f234ed30e067be0d2e75c1293726d6e2b901f638aec659e0ac6cc0c29b0f4934deb09fc112627e4817d981729cec07a67fe1282cefdc4c497645e058a540cf5bc3349a2207011763353265b4e0460b32f9484e35d0b63e49bd532467db0c6d1cd4a3b85e01f37c85b030ab5e90d829919779d6388eec4570b71a97015976bba18d122b1891b3a8aebb424264c84cf891ddd134866d565608e0700bbad86bf6355e0f1560d489d75782e5432411d1d22e0040733634ff2af6f8d86ca964861d9ca6c5fb110802bccc81c3b2a1a3591f9808440c38277df9de131f76fe7e4adf4bfc53839d32164a5ed4679f185e28855bbc088da4187ef7f85cba39e860d6b55ea20c8bd7205863eff86cea33643e27427a009fe00972317925fac6bb913182c8899ff50c40b80f3607c79d7c71804d5d348a87a3224ff12db83cdbc1a1fb6242b9a66ed6005b8ef8b055ef8b36921b91ff6c5dd95fd4b5415de177792f43f7b65ca1569c1efea2c2a500a9d5eca8660353c73ca9ca5a7faa2c8a0737d5bb6253d2c61c0167e9d62ca61f21d0ec4e22494e5d03ff69e80840d76c5cbacdbc7d3970e4c578e1470bdc147ea5b338458e966c4887b18e5ff35f64b28621e540e7c73747683b7ed1d96ef093f78be81f82d5b6af540fa011f3573268edf9e9301db0860857f4e1951ff9d7d9bca0e3fb428ab2e4ab983297f1c9898f7c2ffd12b47e91e7ac55d9c68a16c5e3f0c6645867ef07216537f9d445bc40bb2fb86c6117ca20c7b7d89194425886c553e034c6d185a2a6283a069e1cf5aaa0d51e2cebc8e9092c57e7cb2a7969fe0a7b676401e09c85f7ce38547440d6d14fb7ee6313ec393cdf25ba5952969f00de893b212e540f194bea30bc2f42875d37117c3cd0e6235d5cbdcd17db46b11bef4d33c31c2f245bb5d59a0be45d49b5ff7b948f4ed33f1f1bf1feef83b9f39601941eb71910ccded82a1f65a035cf7788bce4fbb376e3991f8acdb84abfa86dba14c5bfecd553ac24bd44a7a9f402d9c318eee687dbd679095c89e1624f93e959bdc25946bda2fb8859829d7bcbea8a1c347c7ff4dd95090f0aecd655cfce6ab6fa625a60681372086d6e7085ae5f1d0bb33caa7d1c1f87a76b57fc7e4759bb81483aae4e2c8ae7c816a1e54127662a627d7b7f4234e5e43fda0c7bcaa9fa4e89a1990d0835ced5eac6500ab3aef2b860e3440952b7661514015e3ddf5875600822dd44fb8783971677da7c1eb8655a458173532fcb69ef95bb335ee6db3548e70553d3166ca065c34a26cbcef712ff3066befa9c0767ce22ac29cec25130cdcd1f46d5b1093bdfc908ecbb98e423ec811ea9ea5ba9cf311bc6cc3ed1c5316799bff783c1f598dc36b36207ec76d7dc4948ed7365e593602171b5e1bca650a1a5007494421954511b286b3dd2a165bb6bb38561794bf4bd59bfd5cad106ace30954dffd81f31997bc93ad59395234876670d31d901bac647644a4846820a2dd50b6dfd0a672ef2c98436ec1bfac0d7730c64acdebb796b4e4f3e27e240871d7dde6bfe8ee01ddddfd0fbadb4177bba5ee7a7bd7ddfa2bfdd080001a30c804f7a4078ea1cfbba2f293aedd1afb08846ff434650b49fc42dcc49239dbe4855f5cf163fac2f2fb9a1f0f447e1a335c267bc1dd623ac1c1c312b357fbab6b55c4f989d942a9b62095efb05ca9a1606432a33eb8aa32d8709b7315f0c63f0514d2561d9bedec0bc253f9067d349b10dd3ffe77ddbf2d751f34c48e81138f5efda3f14c34d371c37cd417936124de7c507d33bb3e2cb1025d96f51445d9803f00045ed847e548e37506cef76ab6fd0773601b5a8ba66ada4503cdffa2812713766d03738218a9b5d0401fc1493bbeca7b8b81e6f7c7ca4df9af56a4601f5a10dac5b576844823cd3faae6545e65e712d0a53ad653c40ea3d93f77522320bf1597f84f0b19d3810340b7879c9d0c1e30d1c02c6e58ad98c343d839406ca48fb67374c5403469976b1cd9fe8fc8e33b5042936da5039ff66ec49e014aaa327b8efadbb2baa0bf5071d7c4c725e107d3aaf3bd24501567533336e4edda6a3d982d702476c78247dbb580052a4cd45c1954ba27901390582a8c52522ba394d80d363159eb4e36588f18dfc511ad6c60b6daa90d0c6beb065acf12f6059b458e77a6c2d555e6051d6eec51ddee1f57571b57c7a6bebf333d50e168507d31f31c15ee5d85014b6ecabce332be9d508af62765ac7ea7e1fcb5e021f23b71a7cf9e8929d820334d44e3dae11c4e1bc37f02c22916f5ead81c760f32b48887b6459d73e049717618589819f81b6a22aafdeea4f621bdf0bba1c3bbb5b77990b1c594b16937c715bed928ad7147423a4387aa3236dbf9ad49f926f4a6081bc36e6b4d07846bdcc673121534b1916158eb9f277904db3fde11a47ec38d4776ebfe4e78bac4e3fa36f7553e0bce386ccb85ef893799650f966f486918cd3e14f6cbe6e0a299b4c3577e174e5eca503a315e7f24797332da3f5381355afd556dcea16362c29ead2b6285c482cfd196fc37974b4cf7e6f73bf3ecfe7d34d1f2c15490ada8bb1b3063d3c1a9a883b369c01ff3a59a148f4d7e0ca1d49e82c4cc42e6c2e6788e5f69672cb9a7b547fa1194227925f66ac5bf2deb3e6daa18d2439d83eb8193d76fb06a45823d721af33a1b958996e6d1979ef5fd80a127c637d9ec0482a778274417e188f5805317b01b4fa0722ab7581525204152ebcebb505a8e6e40f279983960bd03edae693a2ad3c9ff3f46001ca174f1ee406ea1f11e196fe58650a745584d21e0edb5e9e920504ae30b725832b5729817d17edbd4a0cf1517c7de5aa930b98e05348c3142ec3c0eb03f92eb7d561b48959def743abaac7b8dc949d1374becc8ca2fda9135c8874b9fb6d901abd599428a0029eb4df9edbe90b6372abe6242d88a06c5057d44df17fbe0d4d7e0541b5a390fae15a520d2aed640c31bdfaab7263d0e2c2b9b205877858174a8f1fd141ba8d92cbbb3509df05a175797080053dd7bcb0fdc9a7c3ab2ac00dd0aedde8d0474a9fed517d63d8ad37b8f4dab77636298e02ab4179aa15cfb706a111028c4d35d399ad79448a5826beb837df19643cd5fdeea806cfe3b314d32715d9916aceb80781261714b558c7e53c5c8707a2d818a727d9c984eeda338005470cbd5b0f4e91bed8c352f7d38e33b6f8a93389b81f0e1397fa34db8e7d2873728a6f93165aab806e50b98f0f14ec94051378213b6e28a33e80ac245217c6fc4cfa52feb4d9a9233e7cee0f77ea41393660393c328d67aa18eb45fe426a263c44fb345d1ad630b014753c0543480ad13aad33a75e2ce5f612d076482189609da18158dcca1f5d9de4ed1a2988cbe67c3be4abdc8b4bdb9fd2f7ab107d82d98ea36b5dff35cfbbd175a9b3ecf493c0369c19a27b3017b35e1b9cefa83062ffa7e4d5aa526ac2c2148f33fe6e65be787183b3d6b7e94937cdc15f7e5e2888912775e0daa7bf4b46fe498351cb72790dcd1c03948a63ab7bb2436a1fa04f35a4b7392ba06fc9df682b38cdc8777d8b88b3a70d67d8b0f9c24ab5cf45822856a1b6158471ea70757c6450b0945286a6ec2933d83994000b605c57b4781129dfd677bcfb589975b1c4116777cefc86d478adee6f0b7e631ce3434b22e30c3e2ed5b97e9edf07826f24e4cef7063f285dd09c56114ae8a6840b78eadd404b1ed0b521fa94e80d077acb19a48c0e9b0b5e34baf94b42dd63054d61e8d4cf850daa488eccf6ed9217ee62a1e9bacfed1de5f6bf205d8748038be3df186efa78a74e548c910e2044ca7e785c726eb5c5983594231798d166a5fb4ce5f20de6177e6d85fc21deefb92489f132affa91352e7d81c5a5706ac754a7d591fb13cdd963ae272d3c9ecc51c13b9e5d96b50929be4f851b2476c3605f3b5dce11c433edaded8a5fcb74a9fce05a58f77a2f4b1cd8c6d98e389ca676c02973bf056db78cb9b79446f413313b80c56658dcc8882d7b470a27af0ad1868b8fb6cb523195b7037486e4747a23dc344adcb6e504afb96f7789196e0b70a3e66e628fc7651dcebfba9104edc30a1d6e74dcbfa3c5d63a0f479f62ebb37f9f4b3483ddda07a6bda21dcd1fbb011c4993b9d806d3767ebb3e683576b9fbe33b1eb83ebacc619c7eb3524c1c7d9df022f2f9ef3ceae8ecdad59a11ae7bb48083dd4ae4d767feb8e08b20df73aec24039f5a2602d157a2ebcbb59c185e7ac937bd7fb2f4d4b292ac731edb6ef4a6bc51d2d4290d29d9401a061607bc4ee9dbe77b50647183ff27247968e6ef6c5cc9c609437817fb9863bfeafe05fe9d622511220c2b08eb9b247d25b42eeb58e9371205c5be6387c81e4ccc3128cc3c65c3c76f1258de9a24bf310b96753c52cfee436cde86a7faf74fd3709ce909500c67661b7eb6e6821635dba808d08777d95c4081e1d1d01d9dc96f8d01ffc2a00153c6a1726f6f9d0ef1adfb1efad67ea76fff6353c67f67c5902ac89691f6eeed34f71683ea9b39b63194aef79fd8320eed7b611a2b34578b261ae8ff170ddc9ba8691b08e9ca38b63e81b882df66f8f9b28f3e10e98b35cd5b9fec355f5bf9d50773dce0e03fe302c68da4a1497b910ae7d9ff137051629c6ecc0e9e6f0a949046f40c64c25b34f2c8f5d36fe77082233303d0d2098e2a71bb33762dfcc020f60c4d78f8587d35f5ecc61c9905481f492a5bf314c6bf881144e8ff3664be70270308592add8b3a2e2ee8e4f21718d7bd0a8377d01644a1c183afc0aee747be4198aeb411d1aefc2f0472a1c768b72bf8a51d7f566f4de5cdaed7ec637191f892776177557d34bb3a98b41dc796ccfd536ea6c5b1502b50de1c6aab10e1e82b78d7e1fcac386e148a88c4772940e7ef6acbe0c0ab96828938ebceba8c3c565cb4c50a56c0b3875d5659ac2225a4ce2ce5f21fba60228a8e8e8dff658a28910e9c6da1ccc4dcf43fb1150a37feb51d9f5cb19d1fa5d850add03bcdd57fa7e731801be449c182c6d0cd9b1caf4c0fdb291e546f4d777d23ae7f8a56c738cb827d5d1d9bce5a697c5ed8560e45307b504cf98298fda06d38e7278e2338eeef4591fe1e6fe68193da38deecb0bfb7bc594abbb9bfbb1715fa9f79335de33bbc596f772fbc5946784f9b2d1a58a381566ff05ba14192957cf85dcb0b26113669d6d8a4db7b1373c35b5a86f61e0763dd7692c6e83456378538b256e2c8d8b4f657568f13b1f3202003125e8b153fe53487b5dd950b5ed3324dbcf75d8bc739db4d7348cafb79b9700fb0adc569a9ecae38a0d998435c10a5e5564ef98526028909fd6792d89f3b32e28ac726da5a71ecd8808e17b6833aadf23e45fff6edcb96181dfea6ed30797a25769894373db822ef0bfb6c32d9f668d32fe464cd0fc07cd1dc50c4bedc08b385d9ad4dac42b476cea01933671b6e66cbabbbc37a7217f6fc74e092477e2a24b347b39fde4b177827ae262a004490741c938b0282ca4fe68b7c7a6f40e10bc1f1d5ac4354baf837957af3820b4cc37bb3e0eba35e8c22300dee770c3c12c61193bbad47a331663362a3bbe8f3630eaadd5df3d77c3186cb01e19cd0b781e040f4a745d9317ab1ebb304b345d0430e25cb5edc7e71991ed19217b27aaf89e71aeb879110719916d7bedd55dea61c91cba8d377e617f6372384f8841812c0e14084a9469fef300f28225c3600ba889c9698f7d9f20bb9351b71951f0199af8197eaa597127e6975f6124f1bc8d19a4bf956f83eacae0cc014a397eaade92fb1adf70bc5524804b54429a719016d2d6f240abdd62a4ee2321245dac3fbefc630f614fc7d1cd91a66cb620d9633a901a74aa9750cb4fbe7151557b8cd197c426ac6269edd98192262a365b1d5ba0b19e49f5b4933ff0ff57716aefe9876e74e0271e71d179aa428111d61f06527ee8e3a02681bde5802d8e214c26d5ebf8486b1dcc33ed79061bcb856962f1c1fc1da53f26d8bf7bea53cdb191b2376e0a0d265413a6b5d682fc480b866350d22f8a3c7137d02d9e06fc08a899e5f095e2b6efd005f982309f7017c718666f3952e019e01288e7a65f8a6c54119a7769f9db7e096b9dc0e2b8f57ccb2f0e9466b4d8e5f042f9a711a7bc29d397403131e40f51857a4cb4f8751f5ce34da988515891dbf09316e411d526bd868ce898d39cef1638896e90e3fb403e34143982d0b32b46905da28f79bd604c669e75d684d72dad2c3921ed2966b6b712cc6b98a20a0d59dc711dd5d4b653ed8c0f17a09b816a901c4fa87ca3377036a32528a675525a5df4060e61ee9e76092f6e01a7dc183a937ff64e5564e8355e3db237b21aabd61be74bb241bf501bebcebceb9951475b3cc919eb684eb696292c3b599f34c87ec513a85ffc50bcb38bb17482b83eab3a989f7f0e65fb5d8fa413cd5b55902a5942d4d100ce60d9f6eaa19389ad92b9b17e7885fa1cc8a8b2d7ab0eb945d0b5e38906accce1dc50bc866959ea626a2cabe572726da5edbaca844bb56192adfbf5f798b2b6fffa9f224b3957bcb01052da0f2e349e5775c39ad394ba6908dce2a9f9824bd16b6be452bb249506be3fd5a67dce5f93b5d9e982cb1b5ee37ec92225079de1bc717c135e08d7e6cf3d3916c1fcb297ae0757ec3dfbf87c593ae085e7a7a2dc100f92ded098492e56cbc056cdae186762810aea25141b5c525afc173d687a83f834899c7dc99264ea8c7376ef317918fb9cc10c02210f58db240416aa42a448665570993c4ff76ab9834210c2d2b580aeb7392505b9518995440c7f07f64798a916a618fac638f767063b988a5680597eacbd93c801ddaeeef04b9669a0dabf766778073d5ace4d83a6b29a5c5ffa569d859266bf44a6ec3078a27f2f60fa6c39bb9436472b11201141a8ee9caf1af4f45eb5f05350cacfda2c7771f4f5d8363b3e176ab595a14a249c3ab73fadf5e038ab302ec1cdda4b8b1005ea72b38a68e3175eff5f9c745e45eafac9f4cba1956fd828910409f2f8ec3f5556363932757d6b614c10963010a10fad5b7a23894071d26bf19d8b9f657be00e05615df5261e4a7aedc56d3e24760a4548827eb1f2798e8a38d92945daa22e8fe04131b135471ef3831313b9436d857046e3f8daf1c2bc9dd0a93a2e5758e963747c5b99f36a454d133ba6b389a6704f4e2b149f38965128f7971e2a65b54dc057bf9f00774d7c919beaeb6759500bb12c6bf84c9b2bd0246b8201a78bc1332a824379ba14396e01a7e3a9cd5ad78c39ce2ac8e14e676c81416ce6bd9d8cd544da0c117ec66c40500e8a5155b1186bac07f748162c81f68f08bcf3c3ba3cb00f48262f660c6a6fa68f26c62b386ce89c6ed53d9441c3c5f42e0e56ba0066f73c6e1cdd389a039cf285a6695a086ddd181f816ff6b81f30aa96dd9ba5101b37f2ada90e10a52ec7237545d31a63b1bba78df39af32a0eaeaf0f8d15d0cec2b86aa9cd8e6a36462dd313aec5ad5855b4d4216810823e9036549a32d770020d7a58d7388dcd6eda73e89f43d28087a6fc43bf691bbea997d01d90eb8ff4ad72df23f460939ddb610f030ed9e887077885b1bdb2f8d99c12772fe5612e6248be58240d3e2d6072bcec5b44ab5061a99ab46983b3e133c2ea9d01278eefda6d9116a1b9b5ee383e8cd92a46023fb47b4de208201779654f0a1d3a0fa64bce3073ba56952b0aadd3dde6a0a99a173023e612308f38f141486feac06ce1bbb828baf4b79a60e7b577f46bd6a6e517f5bea1799d9dbbab2dba46027d792d1ae2b655f5136cd5dd90abbf72191557fedd3630f92b6cf0c36170d61d4409ae9cd5776d0e38d912783eaab592dd1665f93d904b3b6426e970358c723fef373b2fc603a4ccf57bce71250700e769f02f6f99a9e362c202cbe720f232e7aa09d3397789cdab104803c1698cdd9f483554ad4e97e68d7c6d8d1f5dfdc0fa790ea3165a968d5c6266611c4a3ca7695b144acffa6b2b3dc0f54d9b63236111c2409d8632af104096bd2b762dd7e216177e8a48a2dcc2d4d807a20a1f496f652983d983da4d40e347c5d5cf3db0fc443efd862b7dc167b60bd42b3f0baf85f62fd380ee28e4d8f15b0a2ed987578c942ebf0448667ec4fff22e36c5940da92ccf3ecbfa896c01dbe16273c86a3121cee4a23d461c6603c1d831a70de6a9cee05784c89b7670743f107a787b1bb94d3f82365f0a260ddf6f0943ba5e580208470d00ef4b44d1b4a93279681ed6129fba21686b2b6269650467f000e66f48ba4b305441c0235d9bf419d337ec73a75c03e15e8975c273a30a64d2aadfccd1ea80e51aa2e20badaed3f5bab4e5b38b3568d3881be6baef36a9beb11d65713197bba6ded5b8e99ab612673f22ff47e887c58213a397d01c9bad4d34ab986b39e4d4cf82292719be6b3018c98e53f9d4fce75b6202342fdd98e2f5c15d329c8fdb5ff6a3a4324dee3f62a4f8e1e3ed38602d4e3ec3b5b3459ed50308f4f85640e7085c7427a3773b09411fd7accdcaf876c6016f8355e91f969ed7ecdd703b3c4af75f89137c4a7785574af26c13dcb8ef55f71f4f4871ef41638df0b586d9344bbcac0b3b3b27cb0e34ca9b7b529092188336983635901116cc9aa0e872186095db297c07145a99ea6bee9c15765cb79e090db0aaf8b429386d46e8a4233e7211da190f500b1bf004fa9f5c820a251ce2c69137edbe24678843b50240091ced10c6f8a0399078513d720346aa1bc9d45bae8c2a34bde50fc2c6c29bc41a069eeb156423a2f2c1f82080fb6d0d8c4cdc0ecd8212e5f5128470333b2fc3f3223be20a1b81909ec8c38fdb88ca081e0392937fd62073a3269c3e9900fb4bf1b47d18effdf30983a80077e338889d91edd201a4fd507d3dcdb2d0ae501c642cb5676d3bce5fc264129389ae054fc4fc5af23d3155d0e90b5805acadaaad4e55e30a632773e02fbc034401a96b44b7662616c653ab46646c271675074a73d905e454e08c2566b7e3a79a9b8bec5137286ff6d9af091698166b4c5cd8eeaf320f449e93922798003c1bf3e70d93a9b39bf4428bb2895651be518a5c4f0694a864f5228f5158e8ee55e24081b4969e8388a264adebc645e55baa8104abe2fd48d52d0b7cbc981ae2f4b5df7d5672e015d00a86facae18cb8a498dacf8efbfb81c7fbc177a30d0f1522d9e6cd78d9833586cc875904ccc293ee90ee839a40c9bb5221e581557985833ee82b09ff73174c2f57254b5e26dd7c04d3cb1f37c92bae92ce3e5966f9185f4a99ccd455e2d5b734af73016041bf15b7562b2f8cee0a4772808aa1da1b7ebfe3fec2db339b3ffa5de86c5055c8fee84961d13f65302f558b0dcdd44bbec120a4eff7274867878975ff973740659ce10dab4ee95c84c51d5d8e4bbc07ac636e282f4ccb78102885a30522d100feb681ec3aa8d64d795746bc8f5692f8db1256aa88d5e36c22656368145085a5048d43a4108a30039961224e04ec84ed1b728041026924bf8eb057dd8b47d8a9727102fad30a75a32c1635c329066b2782facfcd54977f949728618ff43878f489b67cdfe7647e826d3cfd4ba6ea2e802574c06f991492b50efc06b701f3237fbc3a6b818590f401c71460a982d6d64f88eb461bed96246d601e9a2a177e8d10db29e0ad443ff3781291d5624203065c58129d33b11268f57d589d9f42039d63ebeaff3757624cbb1e627969c8cbd8036778cee4136a277d4b5ed6fce0503193b2e2a6b2b6cf1af7ca4a5454e9115729d91fa34ef7eb4aed521100ca670fd691e8a2d316f6378f13fb783b30a219c2bbb4d6508d231fa2fede05ecb06fd55884a769b70ffef77ac54ed5cb3401d56a1fd6d6c3acdcf560d16a685dc3c9508cb5aa724996f759eb903dc708f61a94ca7352cd3cb89093d1bfe32a3fadb758923ed96fb38264d79f0675d8aa229f6988ad22342c7d4209d86ff043b42fc8edac85c2c287fc7d2484579f168a2fa675139442985aeb70f128ddafdabf90667d73ab8498fd341c12ed572d4b4e8fecf67fdde54723beb0937d09438b2a5ee2a9ca599857d71b264f0b7538b684e1ecaf69fcde76c67e7738643389780eb943c0d96e26cb43f773602fcfa458fa3c5a3db472aba672b3ce605cf21d4735cb0675fc2537beab39472079ce3d0f8c4c388d0c10ab2acfc8720d67721d667a4bb5b221bc6bafb9e47b450fd69c5696e60a48e1f457db32580e0bde07f74ffac1939adf64c337267f207d93c794a0a0b09595b621dc01c84e4133506fb05c7860818c7f9a83a1b98c078b78af40977a32a2848dfb4cb5faf1e684f665f2ead29ba0bb6b0f853196c0004e0811d4bc8ece2235ff8f6c14a0d1f4c1fe4b6f36cdf8f7d79ffb065b6a52f5ec51bf643cde8ee5efa07763deb838e5790f62b84657905255bc2ee1595399b33f6b581633972a6677b1811f3ad4fdaeb399205ef2515c85331673d18c416bce45dc87b19ba59fbc54ad91692ca10c215b89363cb7742c101dae41dce152bd5efcb6f4f18129d4ec89619e36938289779348169a157d59014b7076648bd03638a563b943e19be220c956199744ab980cdc30413d8dcf15a4b5efaef82f4501979ceae076450bbc53e0a4c0d1ef671e93c1e3087f06c3af01aa670aec9bf70cc6aceaaf38f8aa7446d0c2ad8b3e0382333a2a29f5dd1bd14bd33663b08fb28fb6646bbc11515ee4b09b268f7a4b6cac08c4cb7261da45d83559d6603627ac28c59d7c66769028c10bb3fa66cfb587fa0c46bccd2223ca468aa373032bde3fe00da7fb4bec7ffe486bdabd74ae3b0074a387e4be537820358e318c897c5cdd01080f8178bdd4a0814db213ae00d28556d4a0a0350a46a3e70d2f0f6ca98dea498c2fbbddd5303e3ef10cdc3a3aa671a29fe8e0419041ec11c3d928532a68d595f318ec18ccf6b87f0496ff992eb43f1937ca709f472092b837dead625cd9458e9596fe84082d7e45927e01bc72652903695a944ec2b1afa655c66590e67499dc30f72a915df37401f2a292cb73820ad2db41a635c4c4e321d59b1487246972c37f046cfe101d500094e9b0c4e04a45be029cb651f385d02e74f89d60307fef3c47a6ad655a4df18d184f5bd191b2a37cc6e27b481da9da144a52a5ba0cec6694c7e5f7d33adced0f4c484c28d74d1c89a9cbf77638933fd9bacae63d8556da210f6c5e32b7437b63c5877c316df0e6cb119f57ad31e4ae0e8bbbd3e64859095b5876629c9f6c955afddc4bb481c134117b51abacd729e38e6d604a687eb19198cf7b9620f702ffaa7295bb191d6195ff4d2d89cf5d1b39113db59f32af21514262993c23622b6737c9df0d7d90fb715e068d5a5abf4ca88501358450cf7fdca7e03d5d734c1224c4ccf1b9a58b267d23cef1ac3723cc9ffc264656793b5fb2f260bc2a8c4b877e7f6be1f9a404d456aa7722c53d2c88732255edd4d49be1e541fcdea882959feef4d497a36259bffb5291996b68a9b8d497922f2839b88c39ac20d769888d5c1729e2e681bdc570892da83475f97fe83ea3671fb4b92672bd6a4008d228f903572a8145f1694a08df064727f93ac2d11c2a004396817b1a7600f57017b2300a72316400db065db63513378e525dbf417f929fc4231d11203c1d38078aae9f45431f5cee98d5067531c863ad0a88c1cd687367c711fc4f0c5ef08a288185b0a96c94ad1f3bd820361ade95e5551104be2a031ee0e7c07d5d9e0ec7cd4e947479bf32f9a95e33bf0da355bdc8763e841b55b19dd8dd4e61d8300f4fbccdf491ba2485d3027db01daeb2c47b442079e14b45800a240272abc2edb9facb9da9c2e417bc17d595f59d93130f7c56f1f4d3de779582c582b1741fdb747a0661ef2f3a639e449e4fd19c27f3361ccaad98af970b222f1a41c538e85a32dbec42ab710613e5ff1119ece7c078e9060c56a6025b6c4c98ce86227279c9f6eca676d64ce5fc07ac66271b41f164c137475388b6be4c2cfc07bc1ffa89672807c314f9fd86508460b01e3acbc12a7ed1dd9fd72ddb194c8bfd8a982af1f8b038954d2f218b473681ae04e5b44321ae95002c4fe102d53c77bdd4bb1395bfc983fb1a985e49a433ab466c20eb5365da95c8582ae05553da75396ad0a3743afedf4f923534906c6438683083a908540ab921b4b60110a2a6baced94d911890029c4866243d41877048120b38ce5a523bb92663c72c132746afffede9aa86e9d07121d747e85ef2190d63a007d76c8e2c42a23818a6967439be3a998e03576650abebdd1636d3b6590fa5434793f2976c9cd61331441f6d9263ec9c8cb72371b141c7e5afcefe3ec54eb013c24a92fac9586237cfb99f61625611e1504865e380cf0025da278113a8ebeeab51d7017b1bad0452ae88e935c294db0fa6ef905439f57abb51956df8a729c2e8e3706373cdd0ce97e090905907cecbf98150e5e980d592d0d92146543bea9fc925880c68a5fdf4c601699443ef298fa3ab755020016e0df9f4a162b048da5626207727f65cd2ed89c9faab666162411375a357b81b53b7775a833e7bae9215bd6165848b06b153cf88b194bdc6235f32fac14cdda5cb2b769ad4a0810a53916af47ded4b5cd8c24e04af1bf4f0af4c084b03c5d5cef8d6e49c057b184bc3ec05493f599613dda7a867b75ce337b11a3b5561990d0b7faa616d8d8050e5161ba665bf3ba591ca2b1c9047aefe21e66b76a4c022dd35c1e9e4df0ee16b722f53a44068fb6ddc6c6349aeca35abd35635397f65befb61fe9f617ffaafdd6866783eafb5e3a1eb174ade8cd125cabd458d9a1abb6c679ce356ebfc3119b69ceeea6f49e97207f2405b2e54a5dba06de36deefc1fb6db62bc8d1488cf1524f2be14c7fac13b8548fecfbca2b3dee73d64d7ae599a9249c45aaa132569e26563c2007a28db0aa831e1633c50c026dd76fcc323cb0e3baed500b8ef902432fa984578f1418df3b391e09347f14a0a335f82713e4c1085d02963d1b5ff68baff3a2b6deb59218b92fa78071ec12b25094147205347c61c65475132b5fd7535f8b03227a566b40a22d14e168c05c5dc903da656ba267e2b623bf7a5bde26f3d510290610eb343641c17d165cbc876a5b180303dac13757b8cfd6969b99231e41beef61b72e418cb9196efe9cc8d60f010ddbc676bebfdb8098b0076f75f8527d3223139d9c9ef5d9e9c9b83f454bc5ffcd9cdd743cbc591b952aa08e1cc0dad7f5e2555869594d7dd28f33914c23be16c2efeaae589ffc38e31ff738e95bc98d4428b7d3ef425c64a923fe8663f26934e50a83a2c262085261fb223122353b6ebcfdc026932c84c11500ace3a9c2906fb718a4bcd2823b592b60f84ade4766cef77db7a66e802d2a8048b744eed0cfd4cb6889da1f14061635c51abf3aa4cc462ba0a31481e99a3f8a54e29239d59f9cc81e23efd414f328a933ad4038329d26176112c9712402668f62016a7f3081e961c8b600443fd167973379fac4c9d1b1690736f1e633593518df7fd6e6fa3eb01f4ac6f79fac3b7f1b383f4e664b3159c5ad3b477f12fc5fb5d43ae538424c2305640a26f5932c9dbc65eb4f0e4175c37e589241f42c55280d13fe66c5d1b649fd72e85d1a4b3e619dcf4ecf22a15c6bacc461ad3cb74453c52a0d41392ee7498c9ea932744ef2444f31bb6c2e43a815431b88b29ac1c6a8feb1fa624c17806534ea43c55df3cac1d1210245cd396b688ec3582796af74ea481b620f271ff4ddc9b904e3fefe795c26f01ffde632c2169b8f943fd84cbcc9b4542e0c154e71ce065d3e0bb3f282b7cad91847b2fa588bc5337ddf692b4671dd52cae0bfabefde4c4c07f0117f4d3f4fa9e017a70ac14f4a0f11036008ffe7739b1cdba54d38b6f98638b4ddf388f56ebe397e5262c217662352566eb0d0668cd718d2365942a1b665695ff037932ea86b732082bba4ec2122907de40c39f7b47545cb27f3d02338cbfdf4975a7de1b4f9cca863ec12fdc20ff72f12fd169bb1b92e0b344dd4e56d860c22b11e9638f3367e6f6dcaa298b0fe50d548331d92f47c333f91d8faa8a6877cc3a7325a5eaea6426caf4fbaa891994d7f9d71012deaff3a94c9a2dfd6c3321f7d761ccea6b1a0864208d743e6628393697815a39fd4a244a2874248f92eba281c19160f5bb5b7b35e933e625a7b532b8ca0a3da0f75ddf2508ae540bcfdf1b5b4483871820f48d9227d53812176dd57cac9192057fbac59ec1e9888c10f828aa474f5b43a302b1d0fda1adda1305552d95e83201d4f3c11e9d8a6b898d380ae471dd6352a2d45052a678f7dff96802a4fd82f3b61b67875edb85d7c756c30040d479eb312ae82ace18cd8cb89ec10b9d12bfdf4845f02056f2b91f2380f12b8eaaaaabdf302ffed917f05c58b70d17b32fddc99636f6c0e07ce7645259171bc310b4a7bfb08b6fd80f92ee6fdd6fa77e7f8767fe0606e5147eb045dbef1a054ec40dedc1d866a4c54a483155f76dc097d054c0e6d8c5fdc7a7b789eb2d543b54744a2d5105df7d59ee53761485e590886c270f50d7210d27de2f2d8b795d23d02746a17008138014ca824e7aee3d302e73b31c16cd170c4daec6c0313b559558044131c111db82beb98b5ef0e48c550c7a9b93ad9af7bf8d8d6d9cb2284abca0ab9b3eacc7f50bc04ab37684dc12d179b9630893af6d805c830636f3260eb551abc61773055b7f6b4204f366a923bc5855712f38697e8e0a611eb7860c41f9989d961ca74c65c4ba6c6d591897b6f0ee61f446a0b9f833e736fdd1fe55f93e296ea66f74a60e2811c93a07a673ad9bd8d829277a24ef14b2d95770a2150aed0b930caac47178685e86025bd375f4b35e5c5cfeb152a82ceba0e7adfedb0d0d97db05f93e98a439a45aacb07e4d542f3ca0e3f5daee680f247f448de9f926236e0931e3366de4df5d65ce3f590b9cc93561ba8e540a7245cdd039dd1cee3b498c7e342c009c3e084ceb22bc49677ccf22711c4f827030ce530e1db5dda02a60d5081a074eface0a5686f28df6cb9e4e63bf5b2db6133e19cb118724415f63fd22d54ff4e3f0a1392d07fb171f17968ddd08b5d6052c4b9cf16be3b3334bd8fbab2fe9a6956b1edb2e8fe6cdbf18dde9fddebbce2e905613470b7fd8b126eb45513263c3af1af4567be4b155aee7aa014198ac15a634f4ee99e1d99b4033e7b3b2097b4c3e01f4a40ad23efc87e3a7c57024ad0db75c731f34f362b1b76910836eb82f4d6a7f702a12593977402942f7f5fcfb8e1a0f42db121fb501fe104f6ab767f586244361bc73fbe9a43786fca024b0792f8fc44b1902c19d47bf193cd4c7e99209021b3bbd43d58a5c531ab2c857cdc9a754042e8825dfb57f58201188d2b489dfe64fc0fcc6e7d2ae6788205eeeaa830b90d8b1e868fcc0a3ee2f77b86839c98a70f3b9655be5567813f0fe783570e07ef40ab413ecce35f8c510c87f03e26dc275d145b6ee270e034534fa7be39ed902139af4a659f6896d86abb9feabee31e26b4eeac1b5423df376266a343cd4697ce63515fe36ecba9ff9a4135214954d4d70881e3be3e18e3b1ae36258d49e25b2c08439a797c4e7c45d7b9c2cd23db3979faa6df98fbf7e5cb3117a12044769f645d55852eb0784c5778ff0b3521e9b3f73482a75f64f3e12f8768addfb44a3943aa990063e2713cda3bef51c5014bf243e469b1c329dd52ff763464d2e8b8162684a3fae67f7b83fc0a1f32dcb8b0a5fc722d67b4fc9f7a4c70eefa6da62ddc9f628b8c7fc03c1f7503e1c18c5974838294a4839c2240aefb830d991f3e98f67bbbe580ddc23d0b405db85f0d221cb7bfd8ca89f12cbb32b1b466ecb4056f627e0116e43abe6c87ac596576ae1eb2a6d6b817fc1b6e3cec06a54ed29428681a7b3e0086326db109a09a0d09789cdf6e77f8db2f549cd7a50572d9c56f448c9966d1c72d8be01958ce1a74c2f400996e62c8765e74241a9094f1ea947a3fa6feb417bc33c32d398ffdee7b452add627ddfee4ef8b74ff334109b826fa234e01ebf12e34f426b213e2f52282f88e528177a10f5d03265d2cbbefa69e05ec7967d36bed9a781384ff8e69006ee7514f27cbf3930c77787faffca38f2a17f1cbc15d50e834d77587df487f3c1ea5d8a7ae8717dcd77075e4789f6bb253c94e8be5b22a712c900d1853da5dde65becfe1458ae7c107d37be57e38f7c678dfa6e5ff7af99ff7ca272e43e35a2229f5511226cecda71a322776f717b71985d60ddc699b79b90b5f107aa199b171ec68ddcbf2fcc59495577d4897b634ace20f7a713a367cac69fb6fc6bf7c31d198096ccb9140ccf9561df8311bd7045ca49f6477aa06f3ed0305eecf00a4a31a14e07340f232ac9df5b1f1a56c2dd2995f243f5d91cb0564957add5f108e5f4035035e8f6c2ffd6935358369f2043d255b01c80ad9800178a784c8229013c6f064bb2f74427845ea79fc41d74b31ad85544fb77c451fa70d3799618ba6bc3d1a66e5fdd620744f095baa3d90c6cc82fd3513694dea9f9e5328ffc92181beabef9412cad874dcc73f280e9f85aecd527ff488e5cc11031d508e0e8f9a7bc50afc757edba8b6b3e3015f810c98d71cbef3c19f342437aa45f6937efe0e53fed316757e9163b384605fa2c1ea7ca84b485c203d1ac2363ea8390bc795b834671f3fe348d1e9fbfed8eb9b30d62a80a8a153f32f522bf844d71bbfc9406493bf1725e7baf781836067cc753a49a5f47e7b71c94b77ba9de9ae7c660eeff8386bf6ae70167fc4d8b066fcdd37ab07fbd58dbc3c5da9ce913d9b0a3ef76bd1ee692cd41b12405cdf48d994039e94d031781d387da9dcf3634662bb6fbf2c1829a7e1a545fcda79f3e6daa2e09c3cc4190f5d98c7b6c277c629f7948691e29922c5745478e754b33df63fdce23dbde9bbeefce2ff65f7d504e860a9303bf30a6f293622abe506fc550fe602549db3e4dcd13df2d457bf766bc1e8ccfda7b725643de57333fa60bc19ffb5c5f6dc13788b76001add6193a127fe4d08e855b0d31257da487f673419fc760e2261c2408ebea6c2ac7e0be18cf18d3e5ebe1736092377829086193a9d31328a63b8123d0cd80a884f56d065d4a41d4109aa5cc6547357df3a9b21741ef2868bf402459b1fa673da509e90d2ba15dcd8945b35d970ae5be2a7467468d6b6af857b9dd806c9caafd239cb4deef80bc3236661bb855bed80f557636d43b62b21fd364de321d87ee91faf115aac9c0dee3eda172f2855a58b1ddbb3edf85f9b573154ee1c1c27e80f5815ddd9151d5ff006b60d70d186675b552ddf756aa83a9d99787cbf120df5cb93ac48823979bb364b3d527f2def86b7f3e50abb519fcd56abdfedb1ec8711d1b139616c6efab8edc9bc966f04b181a15c1cfea51491151eb4277df2d28d996e2f15603e46f3d765902a92c87cebf678eb40bee205212f367ced0f6ee69ecf069ec0ef63d6eb1f3c2517631afc5e4fc804fcca83d4090a174c57b716464e9e8c793c797ebedba0f0f1712dce68399cc1fdeefc8bdfc70b2cd4722a8ad5b182cc5f46d71d5f7e83e4907c5aef6d7039050e84c11dadf38a250859cf7fdf5603db0ec20fb421dc971b135d0ea8e66cf051c38911f5109c24f30b1daa3c3db627de78080dca91d1fce95e7c46ac963c6c5247715453a2fe1b084f2b3392498e2470ac632a63dd5179a0f655313dff2dd78c70008e26b3660fb52621f5fada206dfadf95e4ed5d3fc8a6e49f07b767565367aee6e5bc037c68ee7cef8a327e70f4789b6fd6bc58e61377429d35a213c74826be28e23baf6d3b1292efc05d02016405a71e175b1cc676758b034a9e215907363f32cf7d7c482e955fcd5b52eb326209570d07ab0ca6d389103e41e6c75e068e5164dd57abc5f5b2a4a95f59f9f7997521c26c5944a3ee2e2badede9a644ebc8c59cde986ae8cd49d92f8fee6f3f1bad97f4fbceb5520948e557ce95ee3e4e458c27daabe9ce124cc97f6cbedc08435f8f7506c5f43491c5e033a2569e1ca6de5f496beba24711c20fceeaf98db79ad4e1ce912c9a3de18ca7e9f984643b0dea021b1a6f5267e91e29b3e783e2be3b51ece167d7bafdfa9f80dacd61fd7bb85824bf87200bdb503954341415e4812e33096f649e7aa13337ed855c0ca0b1255b11d7631016e3e54df8cbf187430073d0cb78f7aba238a16ea14d424274ab3080241ff090a8651628a79993a83e540d6a8db676a125702e6371d43f8d0fd7397180126a904d4a180a4d54fa58ad34ac0bb99131f56f8e8ce2a417536300fd80852d84b31230f08a40fc81a3b74fb87bf62867273640d75b92078903d5a0a2b4c136b62aee85a047710e58fa5450aebc59e7c8554291d8b3042be2be9ae1b91562d304bc2dd4882602f1c4e6fe0f783ab46ea02e991d0316667b51da28c8ae3fd5cf4e19b8958a3bf65e51f209a441caa7dd3afd125b0f84cdaa7743370d211ebc6f111c2f0c8f4edcb23c1301f99c3d7eaccf7bfc3e5164e8ccd1a1a98d00d09c24111f185e0451ff62b7cc857ac16c8d81af414274eae7b5c01cda8b9611dbd55dafb1f1b60c4ab91ef7ffac572774dd3ab5d897a6d4b4fab4c5ce2b01fc46918df33795ec01ecca5faf7a58a8aea6f8b4b83b007de8afd725d7d3643d364d42fef8d686e0f5ea58b3e47c5b08431a2edf5013aa27b9bd3e2966f899e639dc65a97bd7b6521301a58233dc24039f4cb37116f0ce078d17e2d69a68272b05286c12c99db646994553674bb00878b683148d2bacfdb3eeeffed64f311eb078eae4bb3bb35d795acffbaae7bfbdac8646b262bd3ace8766d20be3e1774b9b5a09a04fee8ae019c7ad2e4c2961cb3030bb121d5e8133d90176c35e407daa7d5f8933b1a28c5afd4bfd2032b2e5b8f4ec79b4ce83359c6b2475528feeab4c5db4755ed57d5787c470fc4df54b777aa27c99d6a3dbb531587fcd0d2c5880cc69fe9331df1fa17d5fa337d4eb8ef1fe88189ecec832b95dcb8cff1c4f537bd55bd0a27aa57de07d7f6e146b5117ed1a51edc64653f54a9887638a7d3adce547f5bd76e4aa32d17a2ed5d19b91746ba57f581551a56eb1fdde7e8dab57de071d06ed83e38b297ddba4a3b5fdd882ab7eedded57b83f1953cd554fbd6bf7b973ede62cbc76f5b45499a8a14653ffe11a8edf5ca7b7f76a836c6fdd5cf4c67a5a6fdc0f870f6a7bcc26aebdfc83eb7767a4e7fe413d6085784b247aedea6aed66df5c77c3b19bbfd98d9abfb15a95e8975ac61f6a7c3fd4d67c518b82a5e6a3f459eff8b19bb5f4d14d6defc57d8fe5e583f0e4bea7a53b3e62ca1f38810d0da892aac540cf79f5eedd88b24fee33669306d152e7aef5ecdef53eabb9ecdcbbd11dbebb29c36c3ca8d34c4bd47a520dfb6a027ae150cd805a798c9427bc33504bd7d2e7066943a9c1fa5531073f50b3a7a91f969bb779ecbbcea333ccf279dce39c7bc6d39ee9f1f2c3812bdbea5dc5fb0d67bd4451a86b1deecc8169de8b7a1f0f34f53d75007baf6e56c31b55461d6a90261efc72a04ef58d9afa826a2cbef11b11dd7d2c6754d3837ac57b55db44ede3839ab98a222eb3bd7af9809a788f6603b5c0c9bd5ad3cf6e1cd957b5a4e95691b988d6f40d8b55ecccfa1bf7abf5c5f5b1a7afadad9ac4f4f68cf6d2e716daa0b72b37ee73b2549d0f43552afda94aad066aff874d45e10f6337449c365ec227f73a481fbafbaaaa4a7fb9794c8e03b5ea473529db4f6753479f936faa0d5f53bb6737a8ce42ad555cf1dd2b31afe8b33a0ad476d2f3dd3892377517dcba17663fd46eaf4cd52c1e22f55057742d528b138fdde7ed3250f393666a762bdfddeccea67a9fbcbaaee0ba024db9534732d593f5ecdec89fdce7ed931b604bd9a63b4f6eefd7f5c2deabc9d92b72d453642e7d76fd0ee703d71a08ecbd3ae5d4bb185b0ffd9eb87e548ac5ef7f06c92b66bd82288dd9fd3929f2f87dfea5a51f98cab53ebabe84b96eb3f2ac36d0ecd90d1e77168feba326cc3f5c5dc9e2ca8dd86ba82baf72e74aa5050582af0078036a22fce8e6347f5673adaea974e4ea04474a75761e5d3d07b54e34d22e6c1d7c3bf718fcb268509d9cf4c57dce35e7f8cd3572b873dfe334f220d474825d61eeeba7da929575311ddd2eec761105b7c893a72eca0c9b80f75ca2889187bdcf139faf3491edc4ea4c273f1465c59667962b5d5ea0ccb12ec71794a60a8767b50f63459e660f6eeb869a7e6f15c58f301c6e64a698cd441f65cc21d1a7545d322d75f9c420627c3be7c5201bb0cd57bd629dbc64001a85d3f6a2968449dfa3db4b91ba53c128f3f27f5127f58b264ab15a8c58f9c2e4ea92c902b5433fa87950ad4513f559b1f1ad91fbbe1e692667a3ce52e74e91c68faa7f426388ce26ea34cd1ed569caf57aa47555714b71c1f96775363ea9699fcdf40e3ab4f575351baac5ba75ddcfafd495f15d1d222586c4ea30669a6155e29aa7286236552de7c5247639b8a19a17bbaff7151269435d24a88b99a28def260b2c18fdd04bd41bd19beb799d578ab65baa04834c5df295b93e066a99532d3d48df6fd57282cbec0d15f15aaa5d5c577b2c57872553cc3a4e174b005a143f2c86eeed833e83912236e01e5806f8ec960fb41127b858bf0652d757c36205bd58282a48325f1fd8f13cb050cbd0f865a61f588e2bba369da35d923766731132d4263e7c53b37cad885de5e9ec1cd306e9856ac65b9fdc9e077de7c1684d44e6698903c23d9f7ccdef4723f77e5a34be069e4db552ac7e264f9e569f24b37342c2d71ef7862ff37a5f93fbe4457507c2217a5a57bc5df4d38d33b957c751690e2a5afec44167a6eda37b79ab44fe4c698ed2c07537d51c91129b45faa419de164768b51d4078292632dd0e84c7d1970ed68235148aada894b8ccd457db2add6851723657bb19ac02f8ed2745ebd508ea37faf55bb5126a8fe07bbea7aedc54ccba4573cb1f202ee404f94354187a85eaafeac1f35dcdf5891a594f6fbfed95da0989d66b8188d199e8a96bcb5343ecc57aeb404347f6b59ee26dea4a7307daffa8081d2f77a2f8d64ea2a85b4511e95ccdd0f6a35a1f4859dc73088f25b604f2f49daa5729c234999d29ce6abb50c739fb7ef672a8457e1e87fa1c29fe22513daf683d2ae69c1fb691af8894ea547ea32e217d636bc6b6ae4657af1735edb730077476c5e3613b9023c0a7b1ae1ff8de8dd5d9c4d6a6c11c942402d193f97a25101f5edd9683f8c6e3d2e24de5939aba8e7e48b468155fabdbe3935a92277778f564f7ba0313dcf94e693de580c36aa4673bd55aebadd6db6c15ed49b4d61a2202a898d25a77ded35ae7ea06d15a6bdc2cb1563af7f4be9c6945355ad78735d25a6b7d21474a6bdd51aa9d83d65a43a9894b539dcf5c69ad3da5aec8b4d63ad25a6b88a84f8ab4e19ad29a4fa8b01fd44d9294185c3e56aabfb9d26fcc766a9be3949c69adb386a614eaee8915bb0b368f6d18ea4c864a4590ab6da56504cdc4c49abdfd70f699d778e2eae9282d72e4a9d1cc94d63a525aeb8e96933ca5b50e3591a828dd654b6bad63d55e4769ad71c5f2dc6310fcb0fda2b604b8f748fff2a0e81893846b377fad89fb3ed6374ca4e8404f69ad73a5edc3654b8b12665a3ad05cc34c69ad313bbce9340dd42701ec3d073669b5754babad676bf57aa4962f523a80de3b6aeb8ad232c54a97997e5393091d360daff5c3cd99a7d4d6b3cf6e8d322d1395788d99525b6fd5d2e7efaaad3b6a709e565bc723adb6ae68f2d753fbbc37576aebad565b63f3f04d0199157cf767fdc0bf30537128a9ad1f75a795da1aea256805b0ba5cc12c5267bcc49daf95689628b9d7531b13149f35d72bc5c1e282e2d9bf579aeb586bae73cdf4266ab5676a2fc74a2b142969e0d0502fe75a731dedb4749b2a3dc65669ae63adb98e3553444ca068aeeb5a73ed29cd75f8a41ad1b2cc4cabf6d5e9ee69cd75a898be2cd13ad7efee8758d96d92582baee38e56ad2ac29e69bd9992a3eafae01fb482b0f3a68851536b8634f9f734fbf3ec3e674ae2af68c575a614d7b1366ad46b5a71add47f89525ca76da5b8f694e21a5700bd106b9122d48aeb8e565cc7ca661a6b915f29aeeb33adb8ce4a8aeb1f6e7623aded3a28c5350c80e024eef595a0272bd37cb8d262c74a9f12bfb86988954aa3a5563652fca2e87e99227d551d9f2bc22fb66c56df7c726fc096c85cff54ab9173a5a8a9df2bd535ed7c515da75a751d6bd535c8113354e1a3a2745a753d2ba9ae3bdfd5166a29d5f541a9ae3dadbaee7d77751d765a75bd3bbff7581255aaebc34fd744ac946d871735c1aae9963a6a91d22a7b4f9717aa57565d7f29a9aef5d989e68a38b434fff88eee3a7b5065d47c429ae4fb50ebae998058dd755ad25d43e86099fb879af6545bdbd65a208d4baaebacab0a6e35a39af2f431df552fa9ae613a8a7539bea4d27754d7db95225091a2e6725d31697f73ab34c37d0bbe4f6da94a4975adb4989e62637b4a755ddf6bd575e555abae497eb5aaeb4c2bfd3ca5baee280560aa348b5a757d50aaebba565d1f567a8ebfbb5ae37754d707a5bad657b86e195201cb114a752dc646b66f69cf8796525dc7fa5ad96aaa9baad314abbd1a1db4eabae452017b2a13642531e260e6e76a984e47df5773a5b94e95e61aea3d9ad0481d6c4fad79a654e533a51481368dcfa8d213083de58789d25cf76e94e63a9ff96e4c91d25ca73ba5b9ce95fef2109fdf3dcfaa57b4dbb4f60296d157bd027c4dab55de6acd75ac35d7a9d65ca753a556939ef0b2299b4baa44b88e120f32a5b96e69cd75ba549aeb992295620ce2912bcd754569ae43adb9a6c36135d7b3b2e61ab71f2ce75a739d68393ad19aeb5869ae49d76a35d7249959cd75aa78e354737bdae7295214dd53bc6a4bcf38ae32bea49494926a33506ba5858e83aa179fc15d68cdf567adb9ce4a9aeb966656b3f4dc3982c996d65cb72a9adad77fea616abda85ce0ccc42bcd75a4eca11d6da6d3ea9cbad25cb79476aca7ce60ef1dcdf5565db415a5b90e4bda5952d35bd5355b329deedafba66e9d9ed25d8bc99359d3b0a4c5cfb4f6ba539228bd5f6a41b41e536b760f6a1015ad6468296591565e874ac1992ae5f561ea6be5f59d565e839582d64c53cdd67bcaeb542b0ceb5a791d69e575ac94d7752dc72856d72b29af31780600518a9454093b89525e7b4a792d27814db95a4e4b945531d7ea294dd2208da5e71ab4542baf23e598036beeada5e672b57e5697cd4ad3d0e7b397a105500aca4c7d4e554d9e36ea6875aaa7f552bd9ab68a688f467529c5da17b5ae589d5c8d2ef54acaeb302f2baf4b8c7a85e78b6fdee41de535f8636d40e2b5522afd8ee2c85a5a79ad7b196be7aa9ede8be9f5f903b3644a799d28392f51d7f9b63ff0e79d81d965e719fe78f5b759b19b53c61e18535a930f343b2b645164b09b39d2b4500e84391394fd72700261c0e807338adb5805417dedabc8154044725edee520450cf46ecd63a8ac70b15908ae3aa2889a6bdf4615dd22fbeb44bce28d024d46f4d5b3f127bce9e98b1b1b6e26f8610810ae7d53d5fa26634c35a034858fe4c0dfe108cd2e5ee91c070a29b18f6f7b47ce44c4dfd6f06d581f50d8bb7121ea3c058c1371477379455d9e2279e78c237de623462dc1b70ba41a8aebdcf859850c76764b55f581298ab0f1ec86a24b7a894a5539057c8f42c099f157c9e0ab5db0d7a6c4511f02335af8197ac108f9dce40bedb81f679fef28730a233b145b8fa275323e031cd9c1c0f81b6e361a249406c83cb9fd72d7e5bca9779d9ecb5c74b7ebf1a59e33dc6d347873bf6d7a1c41035cd819e5026e06ad508d96bb6d0165109b8a64e9afc6c4030a6078fc62ab65b4b3d1a3b5ff34876b401035be33cc659bb7e54d7142eedf545dc52a36073cfc39c32546dcc7253f25fce6949f66bc4628f95c1c8409419e3d3dea4a9f317d8caa3259fa3f4be728c33cd3e9e0c8b85577e0c26c527a181a24281bb8cdd81a365ef9a8ce28cca51b34da08052f085cda05e2e3c4022e2dbc810bee9c72e4cbd605c9bea4203be8f9bdf1a7fe8297da2c393bec8e094bbc0517f566260629b7e7090d361db88c23c5fcdd1b7fe787a9ea389b6e3ea96d485f147b714d215d591048e05bc7f7bb57575d405d0a62b3ce1657a29164460b438e635c84174ad005d16390a2e9a7f3dfe93699a186e5a51aa8448412ab4b2548a914a3c4fadd3a1294d85c2a51294aa428b1bb548232c86628b1bf548232cf6e51e2f86e2b394a34de1dcb01259a974a243e25d7b872e04f962af966b10fdc432c0f234b7dffeb8fa3b3c0ad4f0a0284cf21a3b67daace7cbf3b78035accd8bcfd2264173e2ac5ba9ec014d55f5c0c2b7289177f62c0b4040ea3281b5cdb40d523739f077e61f762818902ae296630d08c413c773fde012b4af9fdcd9851629143db26f2c76f8019364581b11999c54be9c67f32bfe4b05e402a0baf8054766991a94807500cb5cd7b95785b2ed1ddbedb0c4af4df2dd14189dabb257a2831ddbd57a28212f3774b843b2eb178b7c40c2596ef96885062f56e891825d6ef9648a8c49b4699adbe1aff0e97bee4b9ce8adb0709ff011c447600b9ccf9e6bfb2498e914f849cc2380e95015baa515146809b988e14f5f00d8ac8ec7c68032f3986b31a0f2dc5c6ed7b185256e8009c4cc12c0fcdadc50363fa33f217c34fcd77c7de0159a9bdbbe37a28319dbe57a28212f3774b84d3a2448b1073bbd7772a9819418df4f1d951915b2701debb8f4a2ebc5ce0e14f65ef2e7e9c5cacecee620db726908f63f7edffdec7ffb3adfdbff63110cd825277fedff071f2ceb725b7a8bfdd72679b76ccaf9d54363636007e72f1235c762ebda6a2538a8ffd3d849fa2178b23cc3ec548668b214eefd85874485bf4381b0ae8916fd6217e290658995d49b7c717daffcbb90d7e5f60551bb887543f5c2e3f8fae5c9551747552a8b8c0fd0fa71fcf16f7a81b3aad833f7a526462c666195f59cee5cd0805320fb44cfb81575320d7cd5a205b9ddf18bb8fe51ac6c6dc530d3b57c348d7706b5fabbf559fcce80ec8b1827f00900c86cc678ecd832098c78c65b35c72cfe3e515c90c7b81fcf848b52ff8068bbe54c7e699897cba5120509d517564269faa63c655f275e68379dde22f0472730694853820fc5c80a984803a7ae43470852433f3b0b327669cfacdbaafde3334d9c40e2ae092266fe11c4500bb2e5035f7f627c0d23466803c25c92607ce56718b8f785621f57b0c6700d83dfbdd588afd7fecbd6b77da3cf32ffc81602dc09c5f4ab27108a584d05c247d97a62918636c03e6f4e99fa5999f6c9990b6d7bdf7fd7ff65e6bbf09b12ceb381acd79909f61c1b10c382914c27971d988aa214604a90abd2fa56a74c61244645960f85c512458c018bffdba577de3003a4a38758f6e57bdca53d151939dbd2f1b0211a4beed3c9a7d5022455b6b406c180d38e5861e27d2b01e3929ff96aaba1c5ae288d669c3d55dd72f9e3cb1a9306e892bacfee450e6b5ba577d37e226a79e732c11c5c05949d15ff3187a09cb881688816e9646b3d8e63c5712962e55baeed5f215753aa813f43eafa359e63929becb75267a5d9550a223ad659d4f327b551d1f74982fbc078acaf2e5230c779639f02ab13aa94236b0b782611ecd7ae8aa60ed2f673ed76780c3e5ccc13a8861311f34ad007248f7adb76b84b8451fc3cb59fd00939154701d2352791c7328987d1d074437b9ab03c590f47fb3e55833d196c22eaf6722893fa30ba3180cfaa735e27850446d42ac8d38c7dab3c9d13cf06532123937caf26a299468249ed1df688ad9493c132b433f36d23c21a6d26b91073436f13689cc5e40004efaa167584f49445366eb4a52aee46d4ff53989486495a003bf90385b3a66bf9087fb8578faf6bf96fbaaf52f745608ad9db2caca3391d0f3b5b08c24f85f9842294b6a5f0a9d601b68d55d4ba69eb91fdff0f71dfe26b63547d1c737b16dc9587a53b1d5630bfbcd4e7e6c9ad54d15db46a0676b42f1e66c5af326fb5c4c711cd8728afe917fe38b2a7021176d92412157c82506c474cecc0e99f34cfff6085dfaa2e930a6abf515a7fe4584f4553ae0e46b336aacb2e21ba1dd9706948568f5f954d6adfc4d9d93256ee91e38900c8565d3d7c90421f5482c4fe16b46f474fe5e7c74eebbc503a2ee5e14cbf97d931da84ef212572ccf9c0f630f8cb37aa1bbe4980c706de68409f24025034ebd42c1de92fc5c8e3861c2a169d135291eb6c980203262b6f7fc9dd50d5b59042c430e94d0b54261b710f3a8860b29dc145840e441b195681f38e65ba67b51b3aa12feb72212de7163252c6a5cdc82eae838dc7e231dd8a1f0386d46cb6dfaa55a179ab8a8db34c69ed156cfb1698caec348bd8ebee215efee06a9f7a323070932cf15ca6136b282f7191510059f2b44ff4708c01ead8d10916c258382e851164833a1c6f96fab6ce0e6e542c3bcd8a308dc4a3c41d4ab87f6586402e050da078c7571e4f3b15b58403a20da204195dd91ef090eaf7940ae2b87a9bde60b513706d882168244b5382993915bae219409dbacd9e1855ca13468736a2ffdccf22b8dfbd4a8aac4f04bd5177762c31294338b47ea80a3364e96e97d57e3d8a4c91a87632a0626b759c8d4e365c482bf26e750db3419d2e23b93e3c917480f1b3d00d491b9e8c1e40ea2e48213b39b2c645136663823a17d9e2ce788953c1dade89ed1a8089b5851cd90cf4e67537019a2bb1968ac323952c0d23dcfe07cb4a3544173d840a0b506d22ad9011c67e68c219c641f776f0fbfb564c051e770f64d5b873b7bcdb11c1a15e9a3db5426f59bcfb8f5b4b623265ad7bb68027bed13defbeabbf078a13a8caf578f1a5ebf85f8a81bf17808a19eb9dbfe944052b75b5e5a96b275a9dc7bd5e53fead098e4fdcdc49d085894b77da9cec493081e4dc7040c310ffdfed3ee330ed5b93832f964cf48a3ced6be08f545c0ac29540d9c531c8d098e020139328257281dbe4f47c517ae084f37af99f39d15c5d6c1d6348bedce116e7da96ede399e68ee18ec0cfaed6386e12b0d001a2eb7fa263c3f61f97b85322d8def28a62a958438ab1a4b69726307688132877197a0a08efccab715737e114f96e515b8864259c4efae6b7eed0806d7f04380ef045c130336ee7996dd6e8a1a45ccd2ba157790eafeb012d3bcf2c1bd5296f382b19c985bf640501354ec3de6a18876e9ed3dbb8db1f07cddd59d458c2f8d12d9e320b3e32284776387b6f49016993dd4ccacc767e34386993a264bf599efcabf8894babc8acd0e4cffff53fcfd3fc5df6ffffd978abf26b277d468c873442226fcbc9129a76f7ddff2af2e1d1d640881d4e997a5a3abbc57670299f92eac0871909082087f5eb6fd3bdb54bc577d1183f487b588d1f5bf15c631393a7110661c3921bb0844d9badd7006139b3ddf784cb972ce3b8f2feb934980975bdb3ce92ebfe45d0e29c39867ee0d8e637ac963f1e622aac6bcb8de5b88b6bc06b63acc89fe439a16bc9db4530d26aaa14288b0fac853c7b46d9e1b736492400fa168f56e8467fda81e450344712b5141d0ca5b7d140dfa62e189e405003335d8abfe8d2ebe7aa8aa6f62fbc86b5a6b629b2ab7d67e28d24711ec14f1c58b85fe6d9b6c8db8b5f838853be68cd73b76eae0e7d694794693e17143dfcc3446fe8abd3a472ec393b3e67bb8b966cb120799c0921d6f0fcfb573e6099924befa99b6b8f5adfa2a3a0f22f4ab33b17c8028668730bf4709205c3c503ec099d84fb84ae34395dd4443b09e705677ab2fa28b98df89e35a13d6353b5f45d0d2a33c216bc8aa25adc63e2ee6712cd29d6630fb5f1057de2ce2271ff4be881d7d90e083fd1f3e88bfe833f5aab799e4234b08a50e3b3ba9417e4087a53348c78aba5b8c78e3f6881c7f296db6a6ef49cad1c06ea36077cfe28bc61d8ce7e83cd7760827bf903943afaa4ffa1c1004443517d151a8f64a03ceee4e1c38167edcd004adc905248adc91dbad579050f432400af206840e17a02b820fc4eced4d9975a3b2335baa1d7e9a57449b204b9c691fc5e731e7aaf97955e899f3dc7eff883934a39bcb38b2db88a3af764cfb26cfb9058510bb835be49f5f652ea71f0ace043c480a6078eba6d12748ca15599d8807d1619cb085cc9f24a7bf8a55f1c499299fcb57226e1b8f16fd15bdf3d586c4a31bf34b918df55ba2b525876c8f3447b304989c63ef3acd51736d653114f064912a1989c3a608662d22a9f8421a0af128aac19d9afe0af683c20ab4bdb2a20677565e11a9b96922ef4f68f57e6710daa2a135541efabdb5821242e3c7e5c233d2264f200b6cc7a43bd0151a4bafc83af0c6a94e91f461c59f7649efa3a67d885a5aa0f268f6ed1db18b4f26e67a97c5fa9d14d1c41714027c2dd1661042043a1223b1422a8330b4828637b7c4183df59e411c49216289e8dc61448c405f1a35c32ea438db9ed8236384aea1f7e352293a24c9aee92c0a2162d5933f98d5d1c3699787d8d8da9a0c35de6f067f3dfd608ba5dbeae3e02fe5197091869e11ab0ad1ffaba99a99dc1eb806db7679bfa62451d863bed68aab717ff7f77388b70ce4cb5d690ea14b5a16df8b0bf9920864b680dc8a403a7437b20310ae6d195fe83e8b00f79c3e6f4939c213999bf55e5b0d035f2d1b901c353c42a06bf4d687d96cafce0ab508e52bd40f1a9e6551bc4669d8f0a049271480d2a8549aa0342eb5b04569daf020ffa6d2fda06442ddc2eedf1b0e4989f552170d62c93935c53ce914d979decec6667828c4fbc53c4c8578dbb2bd59b863fedc9ce6f54e967aec2054f88973ae076edec893100b6972af1df05ae6afc742bc1c311442a5af17cb7ef9d541fe98357ff896bf9c09f1de325946f9e54296de76f036f9f05637dcc3dbed92685cebedbb103b59ef10ebf8da40357d662289c530936e3e107cf61f4ba5bb51752efcd57cb7f408d0fa0183712fc012a1c96eb9b1de90363f0a78811bbb01ecaa0764b83062020da5ce8e84c42259228ff496b723dab1889a71aa124ee0e569227075b8d5a1181bf981391ae97ec06734b7ce3f01d0aece431d96842ce08867048447b0fdc6f2be75e1c3b04302fe6bb06793b00b4acf38520cca0d94d61b50114e4ca2c54c6e71b834ae8e656f5108c1271a27addd65176953747b29e5260f64e3bbd957b5920bca9b2f5e765121901e6a187815ea716cb55eb15a1fead6976a655a9f43e03517ea69bd53658446241c30da422e32dab0f9321bfcae5a9d7c1ec4fbd9a478c92daa0f0363514d1b7a3da957a1be9b8c927b167744d26ee5d64cdc7c262f980931014b97d27292f9dddad7683ef2bd6d0d0bf5aeba77b961f52d4b4ee6fcbbd967dad116d5d8c115c52d8890d3da2242ea6baf704569acbddf521e4f7a517e5c39a2c40108566a76bc917564996fef07375c51287b5579d96742ccd7c5ddb2906498eb36cef0b47b126a72f84e6d2c82a29e580694712544b2157d6626942b92bfebed06cc60f4718ab3fda01a49e15f249f883de7b1cdae2ce29f84baa894c4983ff5aebc7ba46f1b7a8436b188177b111d7b119b7f58c490ac16b6f26a19532c63d32ca38365ecde5c4692a3cd6ea18c164b98f7acc7d97da3637d06756dae5d739f59ce2ffba5a5e462b95088312df954d18a926318ede2da420f119d99f1875d4cdccc987de95d3ce158fecd3666bb42667991cd8057d5817c82137d1bdc7e7ca1f156968c7e5f50e5c946c26a94eccb70f085b9a9038341e70a0c341159533b1ac55eea6164d2abc96aa054e2f1e1eb3bc000baf78dac1b1a3e92e2edbdd9ce256cdf399f4b06f39dbb4287e133eb35361b86e2f0816d65ea6ea17a3dd5ddbcd05ce5e27084c8285626817907709398e421be50bff893cfd26f7b48bfad21cb3c9bba9c899b2f77a321d820bb1c63c23bf1797eede030a8f6aef2ddb74dfab9979cbfaa5c94d1310cb96a0f36ec6bc88a2a2f85757f032978eaf88d2046e926965a0b552a100ab26151e0d651a7cdbf13b7b8a93bc920d76d9cdcf516e791739c09072d855be669cdfb35a5ca3bbaefac93221e227179c3f986c09e5690507edbf3fede64401fe8ce9e877c4046d6b00fe313d290e062bd3051d4ad5bef32f30e72f918f0996058065e9bcc37a7ac21de3eb21e879f06d0ca7a62ae07f64d346e36e621ed3feb0e942ff21b6026bcbb7c065be2ac44b68560fbc224daf9c279a3548ef02686aaa07a01d00693d73e286dab66ae8131d9bbc2161c1d4c0d3da50077251fb7962cd4d585a525157862d7ca6d2b6c157b8eb03db145638b6c608f65a1ee72889a8a5cc30eebad1d2a7fcdd1aa6f4ce6f895b1f4f7ad0a8a4d3676fcf0e54605911282563454f5e5f1d31a502d631946429c2551266302fa9a34be9453b30ef7c5c2b0dcc7b6301de61b31cc1bc43b34918b37d6800007f458bb9b8b7e91966cd1b36c516b46afb467e69eea6ef683c2245f547d557345078e992cf3e93721a681bc9c358133c37ea74f6559be52b9cfab726d38a0c6f61c916ec76e184bbe70eaca140eb90a111c265a00393cccabbe58284607153265e9ca5fb635117471b0a6e52e1de6127329189d5fa62d16b25817eb350ec2d056e33a5f0bc1d56121ed574bce1d6cac762f3c22dcd7215b349c59b676f00d0a116207f660d5b4527f2f9a36a26f1c78afce2d45f42c5f60264b1a0900968782ab133b8826f71d2b57ee82e4fe2eea37d124d50f406e3311ad30f7375254db963dc5f95ca1bbf38ea5afe7008805f5e3bdcbb8c5279b5d3e9a2b24820b6116642a3382c2835f5ca97687baae650a74e40b3ec630fae5b7561a57d143bbed6cc077b74126d98038b7169e1b0dafd893f59d95371537af01aa0bfb1317d6d6b423a1540d885b7bf860bdfa70092feaf9252cc4b2aecae71da4aec910baf9cbefcf8157145e887883cec2be408852353a8c89c8d5046ef9cd9cec0a5441b3f6221bccda3d26357753a223526404dd963a289a3543dbb09479dd42ea5152a09bcc6e2b9bd7bb395d3353cb30cd3422447fccfb461207cdef9a5cb8191abe84168900af5a080b223666ce989a05075aff4e7c6907ce77076417cc623685da6e0a0dabd1334cc440376219fa133969951cb98b63d79ac1a92b6d00f0d1e9552bbabfbc2845e7ceb868a639be6e858788f53554c309bf2db81a9c403ca77d6b799a214c1008bd87ec4c4d28eca4ca49746d5386dc3108b3cca7923fa4f089bf983d415a70b69f20747618b0db0a6a2698e911201470bf9715e30e534c750259a87b8031affb197162e12f800274b60185797829f58539366ef515a22f850a73869f8928f97880c0f4b00ea39b6f7d114991f5883523bd851e92de9e373114db36a36b86cdf72640bf7eb408f0c691842da463f23b3b724c6f48b671b6211c7a6d1401be693c36c85bd039221197b2df313599579f0aefea6322d95164ce0a3350a50354c0aedd8979c7a23feb030d1fd70d54a7c217fd059bd1a56dc629db366c4d792b7b30f3efc3c1a647525e9fc1d41462713a10f22fd779f19349d3d9d8122cdc61f75ef52a1dd8720a076e66ca57eb52abd560a0d788b0544c0289a5141d3658ab03e1bc100598f6f9d03543ab018fcd0acbdb98337123a1be98b5e37775d9e33cdaef260337beb1cfff5c0c2eaadca4fd7a56885123d66c5f4111f94f59b83bc4948dc56c4e70d9ee4bf198d5563b7eac20cc55025b9190dbde2391ee6ecdf45f13caa723a6bc014f1e81473f5d94b98ecbce4f2321327fc777f05317977665cbb77b03546f9d9436feea8ea9564b4b88db6e24827201e7589fc019a0ed16c98a7da6aeef72f205097eef207e284cb4ab537176c55013bf5b3470c20ad6c16057ce501851c25270eac7edb5195cdbf0597121871422b11af3e9575ad8bc0df687bf090e034bdcb032741b62e80863843c1485831b45d8d167cf184e57872252a2b7f5aaefa28b5b779b5917c4c1c9c5f4d0bd77425eeb6ec8b460e680be5b42f9efd16acdd975ca150be0bb13044bbdfda048a16c1aa1896421238075d352be3a8d92a279c8460d638d78c9cbe127647d534a310e42249196f4e0f85cdcaefb1702a228e5e977c7392ace3c0838a8e8b53bd6934c06f0c85e30577579a376cf6fb4c4c645ae0da2880f54fb83627c731c142bb37bae4ec4e68ba670bddbaede6718009e3f135a07a8b1f9b446881ac9a7353a47b8ad1f3fab912293fae1f4a9f09cdaa8e04646b402a63257df98d1abad18282a9c709e9e89c27ea8be1b808ab06bcb04da2f266479b9a236339d8d844d4712bd2f2d23f2c017f0e5f1188f7be6600ff334cfba85edb71c0be986c282e6c645b125c5b37f577d123350df06740fac23c27d5158011321e1305374f69b27086ecfd60dbfe48799ee67cd0825c0fb833d22251c5a87866b09af8120b95e527309fa7a67d64d11990d8def112200420c3d0c3b2f4d6f9666374b17374b29bc5c8a34f87ac07499bc019b17b3c85cd1db785513d8b46690ddad1930f04d99855db82204a01d60db6d6cf5798a1e993a95e2508d72bf0b46ce1b8a3258aa841bab883961e0844532235ac80fc1ade80fe324c87d3194ce91c1b7613752db172fe19be67d927a7b09505f6cbcc275a40f6fe31e9314fd1726c441dc3740e9d4176caa9c317b0da94aedacb76228e8aabd13116c8cd7116b2e423c37f72eab5e611edfaf4816746904ed5410890495af79ce45c4081f86ecb7b8905cc9c3d6cb38718d0cea0896a334c29c92d54cbd4591ef600135cc0371248ae85d360801d94096ebc3cd65f039199dc1e1a045d649def7765c5c08743201624b3aa92a3f894d843435fb13f348a18ae85d145d9a4cc0c1b86295e95549f29070fa04d79836acb06c71b7c171d97bb7a1fe49a41e210bcd3dac330f51a978088fd8382f6f2b1f42cfb79cbfb9de2f76ff20af14797561638a3896f4b2b3319a8afcf23df97a0aa3aa12de979061ac86a89d4ce1b82c683f834261b24be5a85a898b5f9038cd4cb2c3c2588c44e3acaaaf06a75636de35fb9924d6aa0f4510db8a92d399576b87ad6a2c583c0e49dda0c8a3c29806b9f13bedf2e7293ebfd89f572275f5f91a346b0f40c7cd7954aed7bcde778b2563505d56341bb39122a8b8b49349ac4f6a268d030e8ea43127d158ab67392a62ad178322c0608b31c1a020244200a62199896c32c6d211baa89df90b83483b0c095c3c07937ec98f4d094925159cc1911888a8c2b3dcd0d43c5b30d18a19dd276d97cd058c061244e34ffad0e07b53e9884a675ac511b5f74462f8c33f2c3bfc07f264f56963a60a14c2d41404a9af664f0cc5df4d2c72fbb3c31ff7dd6a1e7843c3e82cdf2e2536315f38db5863ca04647c0a8ca0711f748e052f5a0f6f8b698ecc4034e21ccaf5a5936147cb876cc01a855b872c1748d85c4477639f15defe06434fc1a1dad789cd4de79e2f7436c66c460fc74a48eb15d9f3f091d14dcc84620ba1ee8230ecb74ec4eb55fb66dd4782bcb4c95d54b148bd8ec97f2b1dcab008d530e3a1b2850eef133b62f42f90ea4e6c6f22cf96c4983b5d2356323882c91eda6bc1efe3894d80efaeb1d49eb8c24c120c84528c44e5ec7e984de68b951ef5da30cefe7f1d129efe4f80840caef5645ff91f40c292b73aa033f71f40448eacd325f32326ca17094ed10876bad2f6ae37379174cffe6673ed01669e0863b6f19a5727a2065afcd9f0ca1557bc407630cfc3946986c415afd5b1b840c2da763fb20bbe11b0310b0b7320d0122ab707878c3375110c270771cf6a61aeb748572b35eed107b948fba93a1647493c7002cefee05a213170c1e50e02ef2055a16a6c590e4a34595150ac2fd58908245468e47584691d536cc06bc190a922808215839f040df15faa5746573a157d27ed62af6869ff972d7d50b4e885ca62aff09c614e7dcd9295889f12d640ef13b7b0203f672e0b69b9669cd71c1a910f1b08f3ba5c701ff53e20160d6a0ed085911e1ed25ce40d7d4e78c821a1a8b66472d2c11960e021120bb4426c515ac68ca1fbf86100571d1a2eefea7c549a1f872e44f70b2f8907df6aff0a394f20c9cf198416067ff91b967af76796bae67fce527b62414bb07c12dd3f30a073b17882165989faf1df739570ad817958e0de0ec34c9df149050bf96f394b650e661181c08430647bbd074b18c204ead7eadcd07a5b5588495760f776801fb62ea1b30f438c7fc110e6882dc537ff673270a4396a581141c21cc360ac1b6b851a98cb31e6f98ead8567dce599bb9858da989500267ce484d929f5851713a831da70633d58c96fad01a3df0ea403300fc0715ea59eb1c541b79584e5a5301bb98456858aa180f36045b5e4ff36061016094d87bd438c5b7ec6921f7cff09fbd7bdfdedcefab6d1feef717f2b49e23c05c67b28cec66851fe01a494054d7e1eb97d64297861f3c743aae4b7ac1060ed5a7a448b12f3cf2ca0f75fe30cbd5b9ce119a61d27c9f659ccf4f91f99be97a2da7f97a19b8bf69d59963cfa4766c4ce60ad0b0e7b245a7762430ce0e5ee5f328064f2f49dd9f3e7eadf50fbff8aef6b03355d5b482c529baac694341ef73942d180206f8cbb8102950f4d6c1d5aa8fe5d91e34089cea97ce91bfd2d9b27f4ee4802afcad6ba30ea80edc0f501ecaef3a3aeefa918e385b8b9f117bc1ed46b8733337b7a4768e689b9c68809195ea3a20dd1ab71ce080c45bad424c8c217db48ffd31cfc3bc6eedfeff0bfe2e7fe831d56d6e60ec5b8b4af8a3c361995148eb5a5ad3ad541e919fbaa62ab5e72815bec19650f6d02e3910b507ab4f8c07f6d88ffc2b20752ec3c1257190eab7bcd617598c36a5c7358f5ffc761310507a214be0141c328e7725161e3c452770f56aca35c85dd5c151f99305260194c149bdf52e5bcf320588d96c618f0156659442dc382aee99a2be9fd263d3cbe56b4c069d3fda8edf1ca8a197844ffad1e67f2dfa44a77b81582902d1f0e50b7fc07ea85565dfe2f2a5012b0227b807e74b1f028c25c342c83ef0c3a2107e65aed0afcb008b3d926ad0e02b03697cc5aef4164b171c20e4f59c8dcc301b4f5a5cb77c682b211f822c12264844bcf38d0b00d31226c063500b709399432ec07191bed5e9a856b9038dedc0228e34c1caaab3abd0d4f2e716fe3ebf127f8fa336af78bfe644c984e1fe7ce0e4e947d45490df6f7d5b1e8412d70096e1034662b0cfcdc24683a208b97730c461fd8c59c4e40335096d4ba31f83f526a0d66d91535f03ebca18a97b5d2c7f4a032309b75c98af8dbe288a8807b0072da1858baddda96e1b3b7b56d16ca758568a6ccc1b5d2427b62a4c7fa30a5cb0f97d92f3dcf85bcb9c3940869c363add06fe651f8c4a9587bffbf8b8cb9b375525ed3158e689031fc7549b0a16e4dfdab6e7b626ef1ba5bbac537eaea168f14dde24b75758b2f94a8eb6d34a64697c68de35e060b73ce8d2d37ee2e0baef2fad6d19f8a9614f5cb40930c3227197ccd0bbf98386a1fe806d849e7b402e528ebe923b8bebade2745568bfc5e1f21d4b210b5c8ab86522ddb38ebfd0d1b71e118180f4fb1566cce0fb6c713a16542798eac80b90cfaba1d5f782ef06d9f25462b5cb5414fc3da58ec6b4611a0172376ab0ba556522054e70d6ba2a69ee9424e725e0ec18097eb811dfc7e78f3df71f12fe7e7546a2bc561f6496761d38a46dc06857f0a723b6321d22643c1b669893c7778d8e3173c400bc0008ac4fee288879329a435c5c3c5ae59c743c3aee9e0a15914a652c4f484d35cdb5b62cdcade726ed56f7ee7dc5a2138592b2f5bdac1225a580e6e78bc911588ff56cebf736eddb28b8ac30ab4e63f54e8e01228e79a03f2ab4b13d941ff793b315555cda4f04eaac302a89da4587ff3a2dee4b42b3c557df2df9a0831cf8c12204f48d6979a867d4204145fa8c9d7ab1a0d532390b90e8192af71a4818d6c93c7d853581fe45fc67298577cda58e347fe340e52e12fbdc7d22a86153bae4acf2d5c2619f69dc2b05d882658a463e4f21545f14b5650047434f75c0167db3cc3517a61115cc6539aa5384f852a0dc9128990b8373eb84aac168890440fb1c9b44bf295134231d1e5a151aa46bb4ac4ca831563a0d4c545acbb15ad532a6bc427524cb8ae0c5a547a962bfe878a572ae4a79d5c5bc57d1999e24da938e6a748264571efaec9d82a6dc15707b8fcbc92d7d690d199c3406c10773de4c8cb3d6cfb0567bad3187040ea6e639007c73406300d232ff8b49714bd302437ac3622e0f20a3e3e449681d61177c009bfeba36b3423c410e2eaa83b6ce6a4abe9e7d349157a90458bf54adc06867c366ea691b20245471c70b48197c617f510b114daeadd634550cb81053099ea9bc1a2f7b0956b82d0eb05b059490bcac867674d21eab40109043e8db32596ddae6411c7d2844c76ce6c12c1d20002cc35720aacf9881d1d10d44e6e8c29c479c30e474d4759e2cdfa379ed9bbf0c4895ceb4626166c043bf2fd9ad5633beb39e7bdaf0b11f48b1ab8affae2910663d7583fb2acf32d1f7df8f8dbc13ffd71f02f18fce4f6e0f54a7f18bcfe130d696123c42b2f8df0fec3c0d93cec9174f23727f5626fc9ed49711215ba6e5cf06b9b164fed1cb9263b8d109b0d206e4a61ab3dfbfd88c097a3885f8f23d880039de6035981e2b046a25f6ed6eabfb5506bbd0591275247b3edf7a20d0c73427cc139df9e1afd6a3a24c7b3630e3e3515cad7487c28fcbb0e3eddb6f8867b327c98076bdaced12d8852f6b01bb188bc0f9cd0d8830b415cc63713e3ad7ef2ec58b27e414159ff92247d3d3081ad7143a56bdb167b038ebd362c3668bf669691ee97d88b804d7debb38bc37327abe785173a3945ad92210d8ae34c832c7238427cc7c151070f0d6ae2ece566c34a84f98273dd6c6d89d79a7868d9857db4da73f2c221154ed8d77ec8bef69e99de6798bf8e9ef99e6d23fd48c656221720b01d616d8fadbd0f21b11e77e77060af3b4d993e57a40fe398cf4753699cfb71eb7b4ac3f31923d1cfe4f33315ea0b13ad604ae923e05d3dad53abe4ea1a21bf50a3c6029de37de1fcb084034e6f6a29a91ef3c97800120ab439110f228227c2d6c4adcf63a2921cd276757ea46b685834df37315db13f878d25fa494eaefdf5b1a22c1bfd764b916407e1395bccae6580ce7e79ba698b8f47bb058e81ee6296ec949c8f428e937a66effa0bafcafa995cf88fcf85888af3bc70c6e51dd461fb8a22fb667e0e0634188d466bcee07ade58515f0cc91560a3ec033f11fe1d4840a73560190b489c6823c9c6605338e53d99311d2129abd9a961d87298e45d087ae090dc6039bdba810b2ae6932bd7cf9f70eddd17bd9c8114b7f85d7360749324223f508ad660c878366007c008ac644258c3e591dcf3a03df05bc501c9cf1735ba30a99b47f9d58da4427c50c3cf3f8d70783708ebb4bcc822a28279695394a4f49e194fc2a17da7bb9f2ececb1546f9dfb900636b407f9cf2f86f67f5f2fb5979d8ed3c5cc3c5e1aba69865bec43ca29f441287b2b87e524715b38b6aea8f7bf4d980f359d77878c7c64746e0c304a7ff03dba66e6fdbd08cd74cec3f99f44cc463c2974a7ca1fc679f501b0b9bda582182242be5b6de35f1e1dded999f5b7f2fe14d4a2a60332135782274c7c49a1af39f51eec4c66f7cbc69ca6b9c59ba4f8e5047ed3760505e72bd11d6bd88520b86f4d661f0c576fdf1a2313745bce0b5a9988819eb41b1da16caf81b6c616fca4828bff1a5b8375b70f92d30e9e5d52887941fcc8c3bb77fd7653daad3e6d812cc356d6c6e49b1cfe8f9c26a11607be61a0bda4b9fd51871851207b25b705f175377abaa9152cd9958435bf65140566f0f60c8f299d79d831add4f6bb4da96906ddffcef09d92a1842adfd3b211bdd0e1d986ae0973620c0c3aa63d50cf1b02e6a2eee455454599a90d32527bfc2926e4fba0f13453c6e2388a49d4a2b94c213db368b3777ed41913c6c8fc2ac3d80b04513e007941ef14bfd9be400412e97d1555728752439abaf528424b5bfdcfcf9cb33a954b6038ab4426bd4be25031c935d1877a121474361035dd5f18579d670b390c21f72ba65ddcabba6cd468018f630b63e7e11fe463e947ad76d4c4bbd774b1fa83144fd9914a2224df3fae55ca8adba1edbb68738c4db9f562bafa2dcab1e1d67209be5aaeedad5ee6d1d781783c06b7312f2c685f3d15d526676351c86ba430d88a680f6a0cb1fec2f92042d5d7cc05b7e72353439260361be196d2b4269ff768fa1e9718d1e43d363ed768f0c2a5dea71e1c1b6d3f4a88f4c9ec88e4d5d3b2588f54118980fce06bae76cf8f01572cdf2b67d009a7d2df7d37d1308f3b9b600ed894864128692ebbd8854b0b125c30971470d157f65b38517dead168782dd764a6056ea7e2efcabfdaf33e4dac131f776d0d573a1079e9e9a1fe4c00784bab45141c3ddee216fdef104e67e31fa3d499d85588f4a1fea4fe6426d549631abb6b7d69ec078c1a2e303caf5e24f849a6e4a31202742350b71f7d916772f0f7ab7d4469eee18fa3a08c2081ec4acc8aec303b43401671bfbf9e24c08d31517b3d2dc92128dd5a0a0039c15eed9c0b25b591c6571dbd68db9d5de2da4e2464fdd3823e63008c7ded183328cf02ccca4b9166fdc6b9ad96160ebd6ce5dca3b47d14dbbac94ca48c0a326f5a0c8eef4a09b7d0545322f37eb14cd72b8cc23857cd9ab7d79198fe628b285f490e2619a0bcdc62e0d3b224197e9a9cec6f2cfeb2259588f698e4acd338e6ede1732f66977ca2db65b79b43e25d2368ba735f26c13651edc71f225cac7c54960b8d740565fc48c5f1ef2d01ebe500f8cd65f1853eaf59a732d36147d6099ce7b75e1aad348acbb9f120f5d84edfcb4c6e2e415e44507a615b5ae75b12f7ab8ed7b254a4243adde461a168ca35654449aa5498f41f3b5cf85b8e944c1ad5400ae876e49a40083ee48fe5e7e02b3ab223d848f04aa66205e917da53fe5b8004343453a9cd68555c3c7400f70c413a9610596a460c66621c94b7980cea818590a57a503653c835a9ac96da8fa0fac5fcf30c00312ae655e314e9fded24063a9f69263a1243faa43f1ae27fb532c976617c92e019e70c9620016250f5b517f2df46087d7fcf844c88b6845e3dc498e62402794653967fee0f09a1bd97979cc4e02fa21bbdef185f731f34dcadfef8734e318e1bc874c950ecdbba111a0c5433a2d15984cac6a5e49cdaa2f90b6bc9a76a09451e2eb35c9f15b07daf2a649f94dc8d3581671ea93a6e264284e93b7bfd96483ad56b370b63395f53be24050b74d75c6a242bf77b0c76be36d9dccabfc48857181b29e96c421fa5d15ad500a34efd946f3f7d4d2887a3346e210ddebd3352ed29069f8e27e8754db84a334827e16886e1ccd803ddf557df1f66ee2ce3b4afdf8755face575f20ea596720318f988297a150b539c7aee4746e488c3734aadc2003cd66a934757cba458d00e41f9de6cb8566469c433dd9b1eecfc87636c11b1241ba6040a7539aaeb9aabb7ea88bcb6c99ad3a40da9375ce37a33120d74a43b2cae5f1fe3b1abeffb457411de91d62cdf6081bb3a9bdadf545403a480d13d100e59d849516b1c31cb982c6d4cfa7866e73ba9572241cf17b6646a5f0dae3a12c3d9a1c29533b0a2048f87884299cdaaef42ada5497dd1c374fb68a7eb93b8b7a329a6235d806bcfab15f453208fd809dea68edc48b347dd3ea392a8e2217b714ed3cfba7f1e125fe73154f81e79db3d941a4e2b9e955043cf9258cd0ab15a33934310959dd42d9c08bbd0401ddbeeb583cad732a55eaa886be5849e1615e478e9f0f3b1eb1516bed4ccd7d2262d2849c71bbc9dcdc04a460aab1efb66b528c8e786acf663cf3b9918d7d193ea7a83ee8b863382b2093956a86f2192b59c90a48889d4339edc02b7400466aae922e763ad26cc5983a1d91e95e73fea1a07bdb9dacb87c6fd271861d71b5443a53436f88cbcc87a034a83f2c11ee982eca8c48c3c9a101acae43dfbf02f9dbfa35217299a9fd923fd8f1a3ffd1766c6d1cc2b88d77d620dc2afdc0d56991c5cc4f7745c23c0d39bfa8518badb233df23695ee1bfadb52ed1eac3ec6c24bdc4ecf8292856bbf3cb93dbca4bfbdd2977bb78297a4f939975eaed8d9a4d52b8480965e84b8fc90fd6dfb900f92740772d594c3ae7d4c8a17f6f923c8979843156902e6127c338a7709242288428de22c61c68ba586fd7850addfab9f9323bd16a92441df2b93468ad7f292b01ab09ec0a0a541ca397fe8d00ba44a60e58fb9d0ce5638bb0d99859de9623a4863ee0c6bfbc45c682fc21bd609bec44212902200c94e6eebb88529475b40094bd50a3e842b189d99f458ab23afe26e41a31de615f2444b8491969600f980ccbcfc737860b1fe04b6c922920e27e0e42097260ba75ea3bed4dd64528c3f8c8376cc0c861ed20598b525aa2eea1e67ee57a57515e77f3810fb441c9497f1e4df78779bb4ca15b9940e2ed9436f4046b37fcabf714488fda7dc93bd2ff75d8e3e73e24d30e98856e4caab46445014b974ea434d997ed951c727d24c9c95d73d1804abd6ee2882cf088ba1d341c1503466b6501de8c204219d4c16d3e2bb680146244f616b6caf292f8091f3ff4d8cbc9c621186382ec5ccab0fb8bc1433efe01731f37292ae1c388f6ff93528023b6ee0eeb93a52dfe87ce7c3aea590cd53664a44c5a723a5d9bb1c490710be0021bf3171eb598956e7e4cdf9ccbcf3c53a6fc78b671c5c10c39e536b798673fd1f092878a485d9fa22fe72eb8cc3c62bb14207f51324ba62e54693afa1f54b75f417d860a6914014814de9b21eb09eb2a8ab91328eea24bf6fe42c85d775637efcb456f457b5c2bfaa45e28db0514262762e278d11c66b0e87feb4f00dc13a66c9003931f22db994f667afc2cb9b891a449bfac35fbf1d09a5cd89cd48ecd4686fc21f2ee56f3fcea4fe8833cc0066fb813286584ab4902161c626bb39b2ed65b0aac0af7e7e323e6d26c15b2929deb2c2d95675cd37e1d39723311c0699fad3f4d48a8d28830653a5a67dac67afcb81084774d8f6e59751cf23b53c9fc443f9658c976b4a3f13c9605e5c10fb7aa96ab8f6f250447d193debc2409250ebf30f343ed956dc5bed700bd45c5bdeb116c2da3a3d9f5587af9d4e51fc223c316234a5c8aa742660883b620f0c3b45d8598ad170fffbfd6f99d535982f6cb026d800a1b9082f7d3afea917f17e4df500ba5e1348319ddfaa2d8e07267c1861ad7664ba32f9a4729d2a0f1e367ac8a3e1d7df0e7ca1ae067eddda0656a9a63c7dfc5718c5b95e18bdfc732bf7e09ffa33e5ce41d182d241f487fffcb6d7f4dfceca942fb640a0d1df4d2f528cb63c68c1294d670d53d305ef90327a62e9944bab53e10f9bbf07abd06a3e703c7d88613ff8abea0937543f6e7ca76a5e488bec09c84bd74ee948557aa0b4104d875d14d757a3d64d06c87c4bb43c2224a049839b1c6acbdfaadadf9c9062a58877bd5ea91113a9098db7efe7e41eb36027bae4833bc6c546820e3b8da4af0fc58ea8bd44e5e4ceaeee414b3c2b45f0f444b7524e68a9d11f59a7f0875b160e1cfae55a7aeda83d669aef99ab385db515b32254084e2dfc8bb063d734d5e78c62a3cb55db91f90adbb6645fa436aaa515a298d5976de5e3776f5715df49764a2463bf522e7ed2186d62525073ce6e334d43f4a68f2c6f4171bd326027fb2d907358770bb1cc70c5f2a1a77d50ced8891bba3a16eae70ae923b30a697ffd3c39fbfd15a1de63527e5eeb0dae09ee9910cfad338528986bbcb997a7533939e5a2c6a92c3567404180914334a8f1da8906537ef97c6b94af5571f0692136352e8f6b034d3328f10f63bb4ab10eefe42597df1dfd4b7904bb1ae9fcc4ea521e41561be8ab652448087cba2786e1de6b1c73898c37e81d5c3e4384d8e774469ad2338688fa6a7e37e4c50bb3a3cd2db3a39a90c6a9f503392a4eed4ec3b1f78f05feab3ac40a6ce7c7bbb0c4af7ea685aab111d65bc042df8e34fba5fbf59a7413cde2a5ada70353f5b63a815e7963ada12f5493052dbd3c3d0cffeae737b3f1cd43490bcc0bf3fa2dbf2513b7258b4993c1257e5724701cf53b5eb525d5fe8b1b928f1378f16ec3e20d7a8d6bde802d6afe67798327b6effd9fe10c68c9b613da06371d7e4e49b36dd73f37ab743a306ed906fa28f84b996afcfba227d29639a286c16e9f963c924bd903866fd43e30e62c691db66847c464f90fa79f4dcbc75e774c38b61a6b389ffde7b8a147b8614888af4bc90d7bd25b5e8af3f7cafc364af6151c130de8d1f68f803eb2e11cc64b7dfceae7204f22d928017ae58cdcc1b582203cb85f49e43bea76bcea582ddd2f8de053e1de023ec50bff931a599f8f89be6f6ed7e82d7c1610ee173e73f307be7bd6c77cdee4eb0ba33bb81c1d2b395fef89bd5fc418cd7c469040adb9e5a42ae29e2913fbc03315c6c2a7941d79edd6a3e9cf13bb8b15adef72718dc5a62fea17b7f8a489641424b45a6e65f1cdc23c684244b44ccc730d93a78b5b687742bb39654419d67887149e22afc0b0a9bbdbb69591e328d169e5f10a7d91a8621c11dad48c5862e6a13ff70b9f94b5e106d93129a6dc9d6aed8acdd2ecf154b34d50de454a915bf4edbdad2f357c041fc5d4caa8af95681f2c8935069b299548e3927ac3b060c960d75f7e06761dd4a87d5aa3871acbe0b31a8b9f85c6b10229d20ab5f902c7c31abfc0e2fa5014568e1bf305599fc090b164fa18a346526ea60763c9de887eb6763b960c6d87f27da91f3c1cece11ef170baeaa734dc8bdd4c3de0570dbb99bcef588af067d5177aa77e9a8f5e11b1f2b99033b093c3422ed60372a29594216b09df90ce82b9cf7d9b49e00dfc795ff449e12ae1032b6aef6e571889f39a039f57e76244962f50ed2e9b1efbb4cd288b1e74a1354be04c8ac73a09c44f9f0ac40db61f22d9f1581f5510ab4c872d18173759349cb13e9c022c4c048250a4981f1de82d4c36766d63b639129ed840cc192f60037640b560c7edf78db6973bd8a59629d11a31f9aceee6564f2539ce76e991bd13eae6a338391e05f9a3f2bdf2ba315f98e765a1911597a5af17fb2d45212fb2b79466811712739a415a931b3e03e3688e2fdee5fa7c25d2fb0207aac236ec42b77368ccd278b067f093ed85c6f99c86a721739eabd53457b69ebd3eaec4c02f7db3f89e682eb950631132a76ca3e0bc1b94d7884c607083ebda44431f9a37d8905c3b9cd5d91eec501fe4cf2f9ae3486f731c215a8375cda8724f17fa6a523a1c94d65c6ac682024ba6f29a02791208b9da8cad7be718b31c7b79f541c6b9f84deca06d59e9c0d0ac042292c4f5f2b6f6b15ae5ea26511665b07c2359bc5f664b17030e9afc4bc316299e33cf1b95261f8caa73d1515f2a8e775dfe245a9f941fef1e98ee69e62ecb79c0e061f12febbd0a4ea40fe2707ff7bb3055707acb57346563caed5d6142c309bb84d8d2af32a1851666ac0e1b5f05780681e7788446ac3853192a1a4320c2418e07ed575e2d2d55e3be861f63568d38cfadcb574c7bc3565a67f6a06858d663c6906beb58313d530c36976259eadb26ece5f7a8b3b502f69d2dd31b3871ed982a45347e78e8af79dce73e4b49199130bb73ea16c60ee6d9375bc3767670d139387990525ebda2d0c4b7fc6686e389da3ca73e84e6ef2662f01e1e68702f46188dfabbb1a69c9a723fae4ec594e5e1e7c468a787b93bb3194023656f3c7df18f842f4e440d3b52848c2a09afe69dd718f19d195a7cce39e9e843e389ed11defbf83d1c15ed7f03b148039848ac524ef15081cb0970e3920db9fa3dcb55d02f6e4b66ba110cc90445a29a5b361949f967fdb508667a0c8c4f2a0f3bda7985b3720348dcc03a0744a564880d8f7c0573344fce2c3baf70c68b4dffc31cc476f7441223f627163cb06c302370b5dba3710ab662e0f552b7f4d2616a1cf2acd6828dfd752d321c1d6b167d2ce677c5e562a2b138763416c72b82a8d530cf75723b1acb82fcc536aef7f0f9b519a3907b192fa5416a4dbad0aed5c7c3224cabf146a17b2332b7efcd7b03141315759ad051d1e9590c0f2ba6f65bf6e8dafc4071b02f430838b85b1009e0c51d8e30d202b26d37f3bb8248d892acf7b8640b8766e746b1ba2eeeb0857ceecf851e10bb6895d7a5d30e406034ea8915093342b90ce01466cfadc62bcf1a9e6c55c45aeb4a3dfc390fff49f826c263c39ab1d2b7ab47e6a5faef0f9a6d05d131d6f80d5bd0f680d83292d7a9f0c5362df9b039cf055301c048385ef3d9085d28fd4e2c9194de17fb670a06b0e32f1bc3ea584ccda8aa134ebd245e177f4d48ac736b83809da42775bde30df7c10ad7aadb7cd31d7eb96e78b1e2a60e013792dd577d71761f8236c76f5db519813778840187754798b5c5a0266f0d738195bbc0a0f6c8307862c3ddea9b18b60731596d26ae9e44ea22524d8974e8499e428cb065ff3ae9f253395532ec1bd6769869933e87ef31c4bea63701a0017e803d658cf54cbd1c984d22da0cfcd58abe543393d7f573f0358792649212cd5de5f044620224526f061aad209140cb70ac2dcce8983bf547aee9ddb17b6f72ef4f0ea53ef5bb2cba88cc015861929a8e5edcb517de6f50cb500c2f6c56dea288c8e9c0ebf5e447822ee4e850c2712c2bdd55d342ca41d342ca06517c8a94a9de46fd0e29ef50c8bd8c973240a3ddff11a41cfc1929378634e305827e07f7e492b3ff6b144d46fcdfc606bb5e1fe6fd96bdf1ce53bb25166dc28488648c6cf1b2a0ace71d79ae975b4b57ac0860af0b601b05e579cd2d8e4a8b0f6f9b7f2ad25c00e30f856997c3ac27473b48ebed4b62e7f6777f3a4001e8814ac126adbc0e057d9dd74d284847af98ff4c9fa71f66b95bb1dfcdd2323f6b48e78ee3383699fd3930dd30a94ec5f021a51612a28d52e50daf61bee5a9462c1f7626e7cc0c42252062df8ea38df062b4bca1b1caba1751c0a4e68638de49e98ba12564da84bee5395161a3cffd3b9d19f86d902d750cd464fac8c3fb26c5b8cc02a7018b5c35143e8ae69285311c81e31b2139055914c987341cb3d4cac53db759fa0437e992d3d16d973cc81432ba6a260d6a46dc1923c232d1bae6f9602a4bc41947fe8c730502813566c442ad2fa216b2f0a8f99316b01cd3c4191bd662c8154c5f26040c32953afa1d826e2c20d1da827285ec66542cd786d95d1e208f666945c83d8f8baa4700d709bf47099702c27ff03049ae7b62f63517b24435b677d8a0be7e36993e9558a3345fa14ba52820e9390d8df9a64be897a2b60c39d4e4440cc8ec7528dceb2a3b5d65e4676cb37a97586320b7868fabd4c7f4b04ce5f523deb796f32c84cf7e9030af348776cce1d4b63f6caf2978cdafdcc24b092e772d04fe6f9fe01385e70d8607d7a16c4641604c40061348819bdd7c6c369b9587d580eb15f92589925f92ff610c473c27e53114ee4bbe896330c897e47afcab6470557b2446a8bd908243d85c3eeec13d9c638a16a8789ac3dcb880d70b26155a3163ae4236647845ee14886f902a63b7b9e5197506058b87705476f41e23b7de8215dd00856714424311cf4db195de8f3446f7d74335556aebbdd388f48df6e51721e746c832a92c738dd59512878cc59229e2b3557de548fe744717eb3d87ccde807308eb56e4d6759ddd68b8909f27789ea8676e263ce866be73335d2cdaf6dec4d93676a20c32293b5f12fc7a86a5f68598061cf3d76b9b067e14c1cd164423702a0c6a6728aa4fea87c8281ef59dd8a62e82f96b86a292e8415630c91685504e24666947cdae200ef7054bc4eba6c49e70c29bb32314fbb281936cad4bec7803c42d841214ef1009231897d44c406d4f0f060ec0972d3b9a05f070de27dc670fef4f73d39a2f5608f8a4b78c93baa9156673a62dfbca9349fe9727a31a08a76d2643a2093cb4d0e2690e0995523c881eb505b8d99e0b9f8359c8be2d2fed2b48ec76e10de2abb7af0c7b54f327b7b1874bccfab1984f6016eedfcc6746f379b03747959693bc26593a77dae2406854717e3003d0d46e506c4a0e8317eac81727591dab7fc048655ccf12112ee7458cb483718eb43dc1e90fffe5e0e53824ffb0d4397389205f31381c9a79604323824433701be6c8e6668667363ca967b925b7a5cf1a01f9ac33ceecb5c8e8d0b4240707546db977ca35c8a94e397430d5525dae5ec7d45b5d1e39075c4336ae2a44a85037159a57153254e0e877eab95af8d0543de21e4c0130dc7a7d85e1c81ca3ce13d8cb155e5bb86e0490a573f3c0e076f99b73d36400131dfc32d5d5b524728d59a93380557247407659bb555f09eefd48b81507a6611d18d38699cfea80906fe3ea50f9fcb14387031f377ff3f11a1f37c7d517f5f5bd45dfb983c25d76d80efcea4489958ca3020b1972d91feed68482df2ec8b8b54adceabb98ace539b13328f71345d60131078d4f65c04b38a34ec6cbae624d0a4723afc82dab16793c7b20e255e85b6a4ab60b798b582efcd605fa60a15427a61ba92d13186a5c6061ca2f60b5d98dddbc704ae1ac55c1909d83221d15537117bad93c168fb240cb016a6ec76ece2f9035d1a3e85ddc3c91b412dd8b6bf5af7906cd9f79a5710dc5505cf47b95a8618ff6ff61be8a0aee649249624f5e0fbc3cf5c8dae64de85b48956fc658d6f26519aa1f5de998634eca5466c23561eb0f4376210de4d7cff72530fbb2a06c568fc0e6a6e3572160b3508e2dc997bd2057527f7626af55114aa2cadf36985f85588958e24e9ff1668ba7889fdff4f4866a0255c18e4abfe02ab0e1e2c8fcf8e99977f2358fd0c8b10510449fa55f437590a2ee407e749664d247ffc7b2509375acf2408a1eaed53a2dd8330fe1600d61c28313538c4bd780850ee214bfb4383dca13966e0f9d3268f21e7b27f4f9a7c23f35fe39f3cf857fe261d5577df9cefebfaef7ad38b7d59d54622b935ed9c93dc795331313ac2e1d92cb8937f68fdfee4988394b39f11d3d93c2f888acc543a1b62cd41ae48b92df199aa6a9fa22c022757a16b9b80f0605bf7e5cb35afbb456555ffd4084da3bb15f2850d22c802680cfd05c40bc04288083696e76230906cbfb4cd45b9ccec50ac9d248491b480e209257ef15bef3569d91f0bf549fd477919d71b1f6f479a99c098c6727240ae0f1aa6f21a5bc11f3a6756efde7884bdf892399ad37038d0d4f32a5f98840d2cf7c1f69a6df5faa56c258a2fd9c2b307b326382faa5c137d6d8599328e06dbd1854a76229fb6e7527c542f65c08448803cb3c11c1964d4464fbf88d97af6640767605b24321e6673c33033b5ccb8c0b9e18d0850881c7f673bd7e0d99344963be9321f9d589293116aa2b61d7bad69f010e4eb81ef72606ea2be5e06729b409bb1be157571aaa09ef7fe5a21bc7b1bf5c3733cce3edbd717f627ad5151fb459879a112f7a099ed8bcda578f5fb9d8fd42337b5a4beb304d94f846994bdc216fe1720303b12735ffc18bbbf1796cfaa4b5a312d111cab845c0f34e04d68ba616baaa197d467a1c6bba3648f64ddd223d105fa5cdf609e92f737bcf3fdeeddd4f080fbacae01e689274a87f446b0bf06e49311eeec8fbfe6ebedd58601cc8fbeabbd849046a0c68c6c080dbfa1f0924f6271b63295e58f1c2366948de620827701a7c2cfb53a605b68c309a1dc4afe0b8b27cddf176d365627348dc4e311efdccc1997db5971b19d1a0efe6878fb35c9859e6fb3a830dcb1fc940b6c56e51572ffd0b5b7bb6ba36d3213a72474d89b7ed8d310fd552b6dd236ae81d891017467f6c48d2fadf72403e4ba56cb69e6ce101770514e5560595f268df823a09c5f3d9f0cdaec9745ef80691816aed11abf315d2bf8c7184fabf83d5c1adbb2fb13a99ac13b8aa836cb754a986de66473a9ce2ac29bb57af99d549e599e55f5b59bbaa10a142cb5458b5cb153254a87385af3900e0c4e6cfdf18e9e8b35ac2276457b771cbec8fe284da90888a853c5f142b5e926311d97221eb077a9a50981375907dc40fd185a10c9683ea48dd33507ac501e9af3fa7c5c8a5c350604f85ccdefab7105a93cae0f45cf0517ace635c036bfb48c2b8c18eba9a9f4c805846718370322bbc0fb3361fafbc32e206969eec86466ac4d33d1e070576ee7fc4ceef0e9f8aa70336a43e2bac72c8f4e622ff0a294376d2b12fcf5add929d74780ad71db5c6164778cf173099cea28d65e3cf6d38638314866aca6d70664350fdabc6a7d8e7b5c72b5c6e521da403e5b2cdf60237a168097eb436b61b470800b34ec5e753b35a1acac7ea1ed1bf8077eeffefc03b6c01b4298b581c191136504db9045ad85822968adcd1b5a46a7273f59af1ce59461cbcec2293ab0a112aa4a6c2f6aa42860a2157f8a78c772ef2d7a1e39aab6201183d52512e32fd1c386ed204c2d334e00e622531a3684c7cfd26c8839e9868273358decd228e75ef7711a1720357016797e77af0bf13701d11f2a87dbc29be1b96416cf24130c338d417e7ecd61418255664cacb38ad113e1d1d14f58d71ff11b03f8a8318a64deed32380faa158d1e9a78309541d2bb9e414930db5ba92e9db7d0d45c497dfbe0c8447b96089c889e474760dbd4a2d19f0b5df96cdabd70c843bd96329dd5eb6af2a44a8b08850a17b55214385382e6218164078575c7e3f80d37670efeae599ae51c9fbe4e843ad609dfced0f82ae0cb50e4d2b00728ac225ec33c21eefdd9a7e47c51df5ed3dd8014fce736e946826769878ef05572c442885a69bf48d108685b9e8bc3a11ead9923f3137fae5aeeaab1d18e298b00096609515cc8e7dfa5e39718daf776cc7a8ffc456166fcbab4f98268fdf8afc59ae65a2bf971ca6672f8d24c01701cc6f98c3e24ed58f619dc8a2bbf925fe4059c786b24e63bfb84f369f0c9ea43d78d7ffc7eaca9b1ed91de4cd5c3369db621935ec2043acd7c5bd6360ab1cc23f7c64af11fa4a3554c027edfdc6720ed51b5f852d9ade09e82ed923122773311992173a730bfb3d3043bf66bb58616251d8805a931f21b502cd5e6d213fc066f90a5ab0b2acc242bda383d42d70095df2b89bf3d26615fa53b30254b7c6eaaacd100a37928647ae650ade34a94086040421e176354e637573e9388191f7eb98d1fbf9f566f3fbe18ae560cd5f555ffd6400e7bb1c3c6677e3e7e4dca767dca4e658b2e3143965e631272fc8b88bd87b29908ed1f9e6e1737423be9a43d21759f4573f2a493b7d4b00e6abad148b0c1b934af10a72b5e55af45b6489697b2c167ad18d0e8598a790b26c590c438d0dd53f7bb520765ccc6bf6717acee8008940f2cb460cf1514816bdc2919c4946cc4f15a5c773960759a7a22f3e21fc778da2562c78e96ffcea9370034ae2dc90bd0d4bacec41437c723d6a960388b7fec616c113de38424cb44d5cfbd55c7dab4966acdd5f7a4ed08f8752eda538f764beae3e471ce330370ba3842611b2d16802287e5af8e2a5e03bc858ce153f0bbccf109c619f0e19e741e3c8cf2fd71cc9aec363d9b37c4b9c5e99e8b468b8b19501c4574b398c785bd83b64a1bee4579591836e000299e54af1a1415f889e976efcea50a9beb7bd80e4f21128e23b09ac5fe8ff67fa7f4effff43ae7a4ff4ff37ea6246ff3fd2ff53faff81fe9fd0ff5f499ec9eae82f64fd38a2ffefa9cda100baf2455bce75cb2d39d74f4db997fae272e48eae925f7ba9bf7de7a7867e1b4b51c7db9f7ba9e1ef8d9f2efa6da0c1919f4f68eb88e7837cd6b533d91bebc7bdbc7cd5bce34e9ebfeae7ad7e8ea466ade939c1738ce70d9e233caff17d88e715de07785eeae75443d7f96bd513af0de67cb28b756a0f9bdf9c5a26c5c5749f43a266637b7502b048a5c742d83f527db96715c691be02106f4b7987368165eb11412aad0bdfd4bd881867657277ca4142bce439f4c5747b72abaf22966dd4707f1db8e64ea5fccf4c5721d142ac0bd48fa537a4dbba917c948329dcd6bbc4a7cde001b731d7687f1dcef3adc274f064c36bb695e99e074a7f8fb2c7efe76b7ebf5119de17122e11a9e4006a7e9babe184686e5db25bac208ac1716f38bd21d255e02ae8a9a8c352c606f7d2700d8bf6259749996b83957e09dea7fcdb91318f73d68dccb64e20f80606507bb5860611649b490735e5fb7854d0317a9d882639f2b8de4eb18d2c43a648b21ed120096b5a0eb0974e7baad0606d7bcac651643968bfdf9bf76fc5fdf466aa0e918e6eb2467eb3a51ea47ac6f08d4fdc83b164238986af0e6a7866189fb72d0879871d656201727f63c97f00f9620bbeeb2029d4139b8f484ecf4cd15b5254689e28626cc78d127d56bc7eb1a568bf6df2dc19336bce86d8b0e4c5e9635ec3c3bbb1fafa1e3649baef11c44cfa9807ccd6d6dfab53354ce42265b275997e38086743b6b668be4b1c84c6c1b5347f07be89f75cc8a671f323973e9de8d7870e3569e5e200404c6f4a63597de305224051d3337ffdd68f6f52b982cc44191c25b4039fed23ac032a1b8b9ed9c4d7f44c5d7e446814472c5d173aa0a19a2cd9ce2b8eadd6da560eef9983d568e237e6dfd704cf75fe9dea251caa9544839d8385784d04c765cd42890ba694231933a9fe04027cd6ca08bc876dfea58a43354572a61e350ca3b3beb56f577b41663ac8b3471ba397fae3cee45f7db6dcff8012b89bef3f8253dd80534820b702382d8f1638f5b634f9699f7020c7be98f32cc40b4fc08729408fec1116f27854360436e5a760b6336ab3770b98e2881aafa8e0c4682a493e42dd48a8aefb075083154b6a01c7fbea584ce34fc0c14e007271e40dd6cb3254df4f302d3c5a10b23efe1b08090e0419e3d5a180903735e942d773b42064736054f36e79baf46eb0683bc4d77f2da486e90f0efafe463f6f64c557e6dc94113f982657c8c21af465c186acf54b3533acd0c002946dc6a3dbd1f763dd2f0cb0efff8dbc634206fab9bd8f12c6de8ad8a6d4f98cdb7c6322fad59a83c9fbd8758c5b3af866929028b1e1ca8ec387a9e6a8026686555fb93057342043d29327f57da8e80c75ed3394c95e42bee6fe5e853042df32c1b0a3a844917c3f129efee7d79694a9a2c776057c1ff715f01dcc7d7c23fbed28fb88cf6286bff9ba66e5c63569d028a0037bc1cc594b2462d9bc3a30ade7ea443c8ccffabdbae7b885c2568603ca1616f8ceaea1363b40467f28e1359cfdb30db50dc005051920b31324b46377cf2bc070581ed0245913909e1035c8b86ec8c32cc8ada0161bddb617982f755382df1fef0e81ae3bdcc8d2e51b2d38accd6621ab53b593cfe1d627027eb4defad666ce5aecc7151045e6d33d31b881b959b3ac86bc2062d68dd996c889a18f39920c63c919195feb471854d0af7f61e943428d3c668a009164b4430a6f675d727fb1650e6fd54bb3b465930bb7d6a12ea1c1ea028385bcae96baf400abb11d7ed73facdb953b9c342118c64ac4b2c3b335b327468618881fd59172fbb82f6c14da3f5ab7360f4dbc6154b31623e4f1bc3a524340dcd49267fceedb809fa74fd5917abcc811e58f3c10d55db6af7851ea27e9a15cf774e3f55ca91f0e1b675c6ebc9e28f5adc55f376e7efdda366a92b3613f663df2465aab460527b78517535dde951b26d48fd24139455e532b75311fd4f1820270abaec48ba33ce345a05fccba1cb77c4680e07da350966b39d7d82b948a9c1188e31c11e266638764cde135490aaf7a0b7d3b1fe48a021266f2e851cc387cd620e7d258667a7c5bb9bad39c772a5b7704061312f44c34ddfea2b99a4ea299d64476ef755bb18c475653036e49f7b691b52fbaa148d6c7aaa8a171ac5a4d5042a781d0ac6206866e80c018f119fbb6a6644ee0225f35bd7f963f560c20a162e7b5030269501a0fb5560b80ec921c365b32655e7abaad1b0d80f012fe77f15438dfc3b94ba3dfcb77fe7f2c9af25dcfa3237fd10bcf946fd453f55da48a357cca14278a78921ddac9cbf754fd785dfda4de74f59662eeb09b9219276eb2040e63bebab8cfb8c5b61f28c1d4508267c27edf8b7ba1702161cc603b4228c37332e1c2776bff0741cd8c7dd326e24b4942690880a126f070a5bc3553beaf62bc9c6be20e57b5befec740e3e69e1f5b22564db38dc16211edd2e054d544c3a9b57c6756c9f55685efe1b0d955d5b97a616b86ced292e42df716eaebf6dc627a1d937ba6c2ea88231c280f63c350ba5471bce393f7d4c6d2778a805581ac6cf916ad51000ed554ba8f9c2bea2596514113b7f7da0a1b012522bb161f658bf1c3429a48140ab9813c842b54278e2d06ddc589875e39f133fff5ac9c097ef5553d8bd5af2a6c05de217d6e594bb46f5b4b74395a4b84008d2239733ff119bc37c78614418bc9a498536d2dee395c8b5e39d34e10b17ae4c8c6aea7117bf06b9640fd83301122949c82dc9808276b765474e8e8ae14d0ab60c820bdaea8d10ae5d270db12a16331ee70915dc31726847067b963e14000eabf702a09e86b6cd906f154ba5fffbc651a0288481ad39ed5c7e6a9d835945d2ae56d33c56c717786c77dc5adced49761bc65944bb9001f580a4696d60fc097ef427de5cb80dcc3bf7df8ff43951fcd2ef821fd346cf1d31b45acfdc9ac1e192b3f33dc535cf17f3efc3f21e7451ec5545354eaf1b7ffbf93d1f32f8c23b3869a497176bd5c50d754d84720ec1a642fb1756ea0c1ea9ae47faa10022d6295a3ec591c126e261efbf53b6fd48504965e97b8cc598f9ed4377a50fc2fc512e07dd55d1097ab5fefceee556baf0dec61670e9f2c5dafde551fdafcdffaafee9fd08878ef9606c0369cb3a86bcd64d341d4155a908ed59a5f543a749459d17cbaa13ddd07e6ac79ed4ee8c654204f53ab1b912c0b32f63562009bb74f6e75a49ade49565873b94ff9543e5527a223df7b3ba6d47f15d9825717c45822915cf75480c0cce18050d3669fe3f94b364a245ba5a58501109a69c92c44e7045ffe36cb43835816ee1987c8bafe9871013a13f947055e122bcdb8fdd257317c20775b8b095b5f40c49e0b53760da8af42a46eca7709442a2224583bc8803532f383ca9988917aec0f222ed727f97574adfa696f7fa347e87047e36ec2cfced6af0ed5b795db679789856c7d22f2d75b3d16b1dcca4a8345fe4b07d2760722ff2663cf37aaa012d954dee7c3acfd9b61f6cc30bb6698c74f8679c887d9c3306b0d0c33c3300f182655506e4db56b851b8e5037fef5872dae42486e64d06e6ca1dd8e14be855423f963d3ba52a789b7458b7a9e2ce9555b7ed3555b32225fd39f5d526fbd75287ad88f257983bf7606ac0a5b511c3c47d6ef58f9d5b8d304575d46f7a4a95bde93aaae35225d5d7b44caba23e9b6fe698e495d174f485fb79990c2aef3401abb2e259999668fd0823db2162cf8c65ab0fe0c5ab027c11773c43398f1e4363299b31aacf2cc6ab0f50babc1eadf590d76f8ce6ab0f007abc1d63f58c9da792325619f6e99c9916cd6bfaede494f182e4845f7e5b4a0051945013ddf6f0249fac21e850250cd107ac017bd8a7569861860915734c4a55c29d6bc7534623cfb6d8894e9ed6100052f6279ac200a0e0f86c6a252582218e385966574b13cb0f35570303e9774b0a15d8b568c419805e95f95722ce86e00e99a2feec93f642894a8c17ac1884b2044d998f13d7e1c90a1f7741d8dfa6081b27ab49917938975125e3b1095df8b985554579a366f0b0a8fe8269f7d719630c974f8d0bed5e8d07a4d99626d08eb836c9e35213220c38f0da50966a55cca8e4b6ff1cacbcf3e09bf1c4c7a9d48f0be6b8e1f7d5953cd799d7ebd06d318ebccff93568f82a18ad71a4b63d2cc2f2a6e338a9b31af405dc512f0134fbb1df325ebf000664d0ce08801eda125dbe85bd3a7f10c72f15108a9f3c8089344a62a6cfbfeded8d292ed5d7bc918fa7265e66b92f096d559f8f2b2c74a926632920bdc214b544b21915ae5d5a6c24bf4ec602e1080d33d7d2d6ec70a03d6a91079f9cc70bf83f07c3b6d1104c4e4d38829e94857bac6de481c65c8666d906bedc1bb2127e9fec4abd4ffc9b405b1d827b70ca623862d7cb2c127ab77c08e2fbc718b47345a129d307cae4ec49d898d6225c66d81fe3722300702d270c9a38250b16647db0633ba0231c54ca887c3ce54c5f88ceebbdb3f764fedd77818506a806b84ad66a5fff9580cf661b7a38f63195ac2bb8d15ed3252ccbb8877e83730104d5d8914de426a35d820b241b457b933314d02b9ba1b446c90c7e9372fe38b7ab68f98915a81f266d929960b537dae4c88015cc0bc9657d335c8ab421e63a3619dcfedfc001d786ffa1f2ec9af25c904baf7c3882082a5170bcbae33770eb3488f94ebceb63b3e36d9ceaf8ed4f373ae1586b0647db68d3f6da9f7bf32feb4a42ab01e7b238af65a001edeb21ebb65189a0bc237af555ffd1cee301f7d2966d2bb9e7b7357360cf28548d51f6cc4e6f59d26bfb67235682e30db9d143d10e5719bb1e37285d3b201a54bf1bc930dd0f0387f25a092b7125c2e63ce79714c9549d620c4b96f019765e5da87dce1f24cd28300213cf8de179bd4ce261dbec0ef8dc21ff11a1f116bfa74949c65b9308cda404bd7b48202f58c7126deb5c7268648ee2b578109a4bef74b7d1771323166dde794b2cb4a1b01180734a884d90f68c89fc688efc8c335d2b81d2ffa8e3c66cecae911e170516d8291a1d87ae6fd58d3cb0e4727e5253ae642c383f72bdfd2a120935fb597bf5ac6204e4ff4a90abf994cbeef34efe6e68609a92540acf11abc1f19002717938c76c654882f4664dc779f2f68674cebdbfecefe60bc12f56f14c0f144a139bcbc6e1b37925ea1b1d9192a540f91d400aa847885b9018d6ac957c6a13077a69492df9823cd505c5f2081f010b908bc42e3cc76a72b3b13798065e7b3041580310341a0153ec09b725b1d0437e49acd055bf838a639f213f9c944c64a1146e8a7b23a542729e2bd321b14c23a312376c478d99a231de7473a540eefc214e7bda1ae09bca1459856f3685ec382126283a7a3e99cd878fda0be0f5b685c2f104b73de36d4d22702bb055f44a96c2d59b6c4c6e7a703472a4df4ce7724bc313add01d8fe198805da7f121a78f924af695a7d23b3b5674eab522caaf91963bd307e17ad6ece96f9ac2b1c57d8a0c1ac158bd9d32d1334eb5d11760104d1bf58bfa35aecb156ba91b6ee417d5b31685676857c20901baaa85632571bc3425386dcc4cb7aafd1f00ca626f1de326d4ff6c59576b50e6a70b50453ddef50f86b796f4d1b2e2bd4652c8d3a93e465e295dc36a77a8463d5944b2fddc372d733223c3a4e47f9405636cfaaeabb819cdb77eefe37772e9a0ba5aa8ed445b655edf0697a8823eb12d6c7cf6a441c566ffbfec9fb805a7815853ddf8e16c2dbcb06256a7fd5df4f67d599505bb99b31e492499fd7a6c08dde8175c561c84490ba324f64ecd0df171e7073132237820499e07eb3a78060afce011bf006085227302807fff3af3abc46932e2a053b55d01bab9d2aa22f2e82227c695b55f683ea7b1e7687f9d5fe96832bf6906f7cd546a8da36a25e1d7c7a9f625ff4f30b4bfae9467a313e7661db281a029392d904b9a86d07ac6fa437017c6934ea9f119512cb7b10afbef0f9aa1d12dc71c6de26c9f4d54f0e94480771d86a712000967b7185efb655621e46d1170e62857163763431e7c4c8b11db2d548b061c2ec80a0b5130a12d1b1bfef9aef6930a7e7ea67c11d77734e2ac8031df1c73cd06f405f13e10f7bfcfe3db73ff485da100c903c403c9e8382149a2e912320d328c65fc9ce7a500ced94d9078d59dba9e66a352117f3f35392f13eea0bd8dfabc870c0e4f36d3580db445eb7633feb7676dfab3311a92edbbfc4c8a1b2023020f55787e51d8df74f42ff83aa86d5c599835bbfeed89569bcee916e7b2333a64d1296f5a39a686fe13834676102bbf15c68a57c7614587c63bc8924200cf9fb3bbe3fe83cb7a11dc2b8d1483fbd367f6af1b45f583f3caa91dd805ac9b83dc8f92f25ba875c25a944851f42d9e03b870395784b598373132a88368e73959cdf5934c2115d59d301bc074eebc07b15a0f46b69dd53fcf68fc89a4247fb973977207cf95b250a3f6b912a96388f3810fe561542031b6b182c4d43e81d7c8b1b6ab2085b7442f824b639da60a50dffef99a66ee71622af33f114b70d4e353d101e62a9fcf91fa20d13e66ab68fe470ddc9ec9ba046c3f06838d7a5680717f88a09f1ddcc34a67909ec2c6233f267bee8d032034a388441c3013d0fba343a14799a00dc6e39af8510ddd38012f8b22ef834f890f7820c4191b28ba11ba1715f6c43e2947417a2a51a10c1a0d696d0d042b66639d040d8d933492350f3c2160a38901d44bb88890cf2a66756254d1b47a6a3a5898cb93df1e6b1efa8295da3f46b21ed3ee3d52962f2f6940e6e8579d5747c86089a077c82b0af5169fb743b23e1e74eb6a65d0eca08fbbe983ee1d51d36c95a10d900495681dd3b43da91d8b60f1dee0c3917369f65201a89d64f4a7cf353ece0dd758c07b9a9be38a1ed7351e8e5e13aeb3113bb7cff7410e5b3cda3586e802939ffd93f7c30db3c6ef3d28907acf7e25ba233b0b9dffc4b7298e4b2563c30892485589eb82b04412d65263aecbcea8b189a779d78c03cd12c276efa4648647fe684b23a176aa2ff3c981a0862dd3a209b520de58b84a3542f13635dcf6c7ab7ee5102a980653941628d79dde131e35da9f384733d73e7a860b2dd1e069c62689d94fb5e75341ce67d45765fb0b74e6ecc33584b5a1ef3324d10d69f78605ad791486faceb69a7e73634ef76890502dcdf014d1e13decdd3adfee3b5e4243ea6f6d96e68dbe101106bdd9a7efc3c5b4baead41a381269c6450ed49d2f462044c8250d29aebfd9990d89a641f6c9b448d47ef14a296225b6286bf9dc68165152238724fddab9e96787fe2b632a28445e53430a31f8ada6940bee4e82e9f043b506126eb79c18fdd1782d8920e98400d11fc7174588752b9a7b19c8fbcc58d23a5a3988c8b69a764f6f55058834d98e07bb58bf520cf68bf930c986b65b600304dc35bcd3f8c8f1843dc89fda474a69c2352da12564ce5858d3028685ae5bdc64c490dabb0e80e2c0cba7506c5c5943ae6ea21343c3557d2d6f978259174199e3c857dff26661c59433e1d4b827678a6a3b64b8b60f4dc4ac364f0729068155af908a8b45b1b149206939d85a989e2698adc3ac0f9c79a3dc9aa238bff395763ee587e703487b35e48717438527ad22d168a6e207096646d80287723a1664c1a5278916f941bf1fc138070b2fc904e677b8d686c28592d78f76a8f24fca57767707c2b049631759308c98823dcb894241e9441ede90361e0744a7d64eaf50f0401a71bc61a1d2d6ac033d9019ad048bc10bc24fc648eac196f5189a0e0859e7a4f9cf262c27edd9e38bd8bf3198b5d1b5088c2ca530921b36cb033b8cd11048f1f30918655146b08d35bb5879c513fbf1890edd2c26c1025aad719d82c3a443494c9f619c079f2ed93e8e5e7313b217190810edaf99f16f77801ad732a52dc88f30999ef86424d1a78d3fba91f19afbce906beb02b3a0b2a8ef6f7005c8d5cfa674d39fb0f9ce7e03c30a2c0742c38f34b1b438f57bed96621d6c8d6e5a40336386903cacb3725304a8169725cc5688a51c4f1befc95418e6d7395a70316e877bbc511eeb907ebae080827efd92233c6c93327902dfef1b0b50b7778d8db857ad5deeb2c3f98b9c59c9d89850b0a6792935c3de8e1f9e2cc15fa1dabb116e4f26dfc1a7d8a2bb2690e569a4858c52c9a0f63f51120627d15beeaefbe1b22ead3ab90eacff29904f2fcc4da6c648ea968ba664c26555f181a34fb3a0530a517f07224f56b0dae2f9d88f3748610e85cdf2c967cca86723a74c999b34384cc8985bd412e5a154d167e1819488ed4bd9c70f64c2ad36cc08995e024a29f9ff21b8647d7c376d65a03c289d0f340d21eb02f4f0fdb5443e5068a11ab073c0b5b54b43a46416694748c52cc73d0d3837865a7f63d0a43cea26d385602f827d164b9428a401b3c4421f6df5955a4b1d69124846279bd180ecf2e3b48badc9dbe7bddc4c4e0b658ee588432da24c5416361f6853f6f8e4c2f7ada0853969d7dc281070c2f3a33d3b3ea21b1c2f4b7c016498d887f2f2d8c71a7ea79f5e509390c21a1127b1808a0786428aeb1f0e61a453df7c0a3fd8916dfc89b4460416ea2e1099bc670de55220636d78e623ce747ce0932115f5f59c4ffb447db86498b286efd4136b71fca73e997650b619b008de970ddfcd0a7a0c32eb1fb23b14195d6d622d14fbd9c3225a44c9b7875e1e5da85eef60f2cc10704f2eff6b4fd6ff674a6f7f4dbed3d15c28165c5f66f58bcb1b97b7a366e3a5c7c18c891b83494cc35eea19ed30581147381c8e0952d8b506ae8523fcf9968630b85fccd27cb454942a6398fdd2da69eb3f1c7cea0884de417ffeefe3feadeac3b6d24e81ffe40f81c16090197ad4608821de2711cc773e7f17884d84162913efd7bbaea57528bc5c9ccf33cef39ff9b386869755757d7be3057ced92a98fd601e6df0a2280cf50900ccf03647cc325ef82cf90d0dd052e146884dcd2ac9e52e386f270f293dc285ee314f580d7f5a543ff3fda6a2f9ce36e98742d93443bc8b5c2cc30013a29c25815572fd1463c7d7c9801229d506cf6d13cbc2702501c2625033ebeec2a2dc81d82fc19ac465adabacae4f0f2214ffc0aca981e43af3fb9c35d5f089a9c7ac2916ced2fb3517c22f6636bae033db1e346b62642f6af9edb710148d8f703871b109f3e8dd831a09b1ff2f161732bf9a8132b0f44baaba8776ecdfa4ab62e78a03a6abcde4e27a41573747ab43400435628abfeb23abf557070815775d5bf91502db4a6c6bd801dbd380c9bb66d961ebfaaab65bd3b728ef2d4afbf1ef086dd3ffd54eca8c1f54f09911ade86af87b84b6b06fb989cd8300a1d6230da5ff7757ead4aab61dac552ec3a4d37abc7b2c3c8f5e72617de3edc2446b3836bd2ac97173ee635ac7e51a1639ad314db8662b2ce8da1945ef9dd0038922ae4e160f589d98406dbed2835e8d1fdc540d321ee632ab3161897b834ba610a7b8f8228692595a19a596e3c367a46b75fdb145fa4b5abbf655c0d9d94aa13307c26073565ac490ee111d0e54077335bfa922967de14d8d8adfebd452dc374db86ee656590494d716f80b6730cf8c5428b7b7a92503a435cb82796dffae5a306da36e78c65c491fa3f4c4afbfd4c72ef86b0f4646bcb84ea0234bfb780d4faf0d233332d764aa4a26d4e4d62c74875de3856bd5eed307f38a45572bf658ec2a8666adbed3f7a405159bf5b58ab8e7615b786fc243f499643849854e6af50f3f5d914fb5ca39ef451aaf2d01253e24d22d2ec1ec38b3477a69b19b402bee835f342ec308cb807647ea161ac4897d352a2e24e9806310cfdb461caa68bf6e986d4632c6d2e740e0c974573dfdf52b02c823fa486995d5581db4d3274fe9a5f519b57e95caa34ac7b9d6b7ab8f9efe29df5836499d6b0c67ec618ff9a0598b99603181d29bd11f9559d7788f46c585861c8f17099f3fb47e15e5e1adfdca2cdb883833f84bd61911be0ce4c926c4d69136a351b3e2a732b06234c265389fb46a70bcdcae22c969c39dcd8417d817b63f6855f389f609c5635a583cddc3d35d3cdd462b984595cc1a7d83ecde4342a9fa25939c13f064aae9d981556fa7df865e43081cc3a65f358f9d1be2ab76b08a794c1b95e57c93637b9365a3880209155fb3f665b8dc47c18c9ab7d8d4d3678a0a4792b2b15d0cb71e8d1ba8696aab03785648231c226cfffca372cedab0765af39305ad0706d6ab991f74d6fe4d683fad61e7cc294a73fef1533cb2ce913b65d4a6216b97b47d331ca4ee89ef92a0064391bcb1e5ce9978e3500baa6f18a9a077e261dc2ce4e61959f9dbf0b77a75444330967e553869d706854798b6b9414a8d6ae836d3a4261bf0b21782d4ae19561e3710333833ebcb9d6d33bcf9a4398172dd9016a2d1d7471ca95350056016e27c3f15865f2911cbbb29ed93972dde8b66aba24c3a6cd6afb173ea88d6dd4fecdc2919fdb2709f51e3c13f6cdca93fb3e768e99f5d0db958b99c9367a5e6030e312dd48a9b0fbfaaa03d985b290e2a6f96c1322a8338b2aa1731264a4d7f5cceb8701bcee0679b23fea9e3c206fdc3283463b22aff49ab63ce71b7d662b5ef576cee2ed7ec491b964d78df08cf3d8e79e3a2e726e47094d2bd6b5037e1968fbac806d975d1e24ba90445c752a9cc24fd396aacc599378d8cd4e72ec81335fa161daac72bca430bb53b9f6007d1f9b57fd5431903d6d3fd15d2c7ee97471518cca458ae198718cdf016cdae05a073d0ed3786d0a9f18913cea33259df3bec30f13e282604bfcc841ed458e567c4e4a283f8826323ea3fadb3a455c66da10bed72b963296686e6d0786bfe44f204fa00f3b535458a4ae37d8e13512a6a8524b6b0cbc1706f0a2d6c11f011142a5ce96a7867e3105a2e0c27052b64a41aef0836eff9ec93113294c4b8deddbf41f3cdfa19070f3ee70b266f4dba1d69a0da074723228cbd1a87e86e98d2ee121825262a3c8c1bf05d4edf5884a148913790740e348b8aff1f03ebc7186ef250058af66133f3a979f7cc0f6638f7772f6ad967243bc2f273a5a7f159e762616c2414c2ed07a26977119eb28d1d26606ad25f030cebb3b0621ed16adea2ba23f0fe227a89db60ebcb36d81df4efcecec69b3305de6aee43fbd4a9767376fe106b8f6af97c42d6a845b699936cbb09d630959e7febfeec5b7b1f399f4f8ef0798e697f28c61d298de07234839ebe41621e59e3eda68ccc1bcd1d0b6645dc5536500b6a2413a898f4ce7c0017efca0ac14a403366cdff128215d0ef80f1d9c01ab605ea9a5f1c43739e0b6774db337b7d24bffc6af0b978123b3c9194d0fffda74cd69cd5dbd289b0e45aca04fec8eae4f454bdbdb9e7f3f24236da06b8af0cfd3b42c786b9cf1e32d361cd56caddcbd569643e9faedd53f1f4c3eda77f6bd2aa2a031dd94c9232a94ebe13d15c64ff192aa30ba85c17ee6ead747639b699f536aa0efa7b6c2130af9b33de60845b7a2cd8afbcc2166cc0e97eff4d16d1922cb1dcaf3019c6529ac6c6811bfab1c87269408fcb1d980a1cdef33a8bf0912fb905d7f0f921e1d88cbb6e5f8d52df254bcb40ad3880b7c12d8b909eeb92f6a5f7be93ddd6961e244ef96eae55d0f17b4e6906649f118a04c7c80ccdd17fdcf0826c2497c6e5af59c45bd5803cc0ee95159ca6281c02cb7814b2e189a71f05a435a26ac88e2f2e494e544b2b0c685367f5df036f5ef702c95e57b03957c4342f1914f71f17c3823d16e576f15c4b9e23fc6c7f2fbfc801c62eb80fe7351cbf10b0695eb19fef3ed9b42261e39d724d8c06fb69020928f3ab8803d7d55cad744f77511a9898dce4c0733e9653fff6cfdd3be8e64b73fb3ffea651adb720a9bb66892a75dd18dd7da891da13f83703e2f383a0875cc7bb57351e2431472659c909a96337c7cbabe7494e460d5c0463659b408c0e2cde220160cde8e370ecd5fb6f1da3571530e978424cf655d8d003eaf3ad38e85a332cec515afd4deb33f44687664a0f2a1866290b564d499d99a82480bde9ef12286d4800b50861eb27abee30b75e532a975ec374b1cfe1112c3b470854483e24fa65a052be75a06c71e56565dbd2b35b8b7a5907511d367c5ccd8866a83dfad1b17885408eb8884c2ccb8cb9b727c93ef32d52be8fae2e2729c1f747bc2ebf33ce6da761cbdf4af55a7cd6b7351ee434b5a6379b96c9d5013aab9705a67afd1b13447e6f54d73654589c53958104281b1b28bbf1ffc647110fcfadd0e54b8daf411be58dee9ed551eacfde3daba488f1cc7c9d36f5803c6bc93628d2b5beaa1cd25ee7199b05a3d323843837e4846ccade96a0a4a516212fce07e5fd99dcdf6a95a1d9d43caf604148c84f8ed8a44f3e09105a2a949614c159707fdf2372674432e3d96b7db5c50b7c515f0e132aa94d2765588ab21ce884d424f99e6a93e0b92d241351e6d880d42a7360c6d68bc1fdd57758bcd88322de3d28471742484033e923c5d59e7aa0f634f580a776c0d464f040e4ef40f5ad119a499f089ce1bd8172ed114e1821294608d582cae9b4021ec85c1f285d9efa226c32b0ff0b517544b6d0109b312a4b220490e87ba4ea6a556bd9e94b4e9799bccbb95de56b215eabb7385266e984e492b93bab0430148602b458a05e4817ed91388b7f500e5be697b1f0715f7c66a202b5760a2d0f9d7fbe024783322c7a5c84bab14af7d5f2aff1eb23f2ce5b35b2c38b6f85aa2b8833266911cf368332c908a7825bfff26616a7e20d7d058b03f1d7c581b0dee817a86fe3848c00d4e16a156fe5095839e72720b164f3e2046cf9b1b1f54e787ff57146fec835bfb67d45bc50e56d2390ac41151ad840d6c44fb04ed5ff2a8ecd0355d9e0f16a7fdd3daa0fd023eabfbdd0ca4199976c1e96aeed3f4ba2ba13bff58813ab1e68d1cf28a82901dc21e1a875b528d43f2c08fb121a79503e9750c29ece758b178060421a8e1f1bd096cd41000a73976d53e3777664c504b7dfd7edf3a054c43047faf9e46ea49e41c0a62e6b389e8368604343ea00d81e179d16ef305dfcb38465a8767096babe48f25a9d70981a0251038b26da296fb9930dcd66c79684d63c2c6b6e3878ce9d87654e545b7a31cb8806261d5ceca2fdf7aac1c74e36b436e798eacdd9f5790d9d3fbe562e47dcba5cedce1e8f519b203d1f6601bbe8e1ecc6927ba1abd3d9f5f522649d333fbbb15d8420c00d2e1958aca01b94110f1b0f65829f55a8a4ccff4c97d62827d2f28052b5af05030d551391c90b6b8bef5e54a8d205ca712fc23248f884d0501aa735b41835c639cad334ce51ebf683cadb2cd5ef0f5c3e7d712c3412ad90175d2688c4b09222741c791a927dcda5ac8ab3b87de6e9489ab6d6a0ea549e6452266fd360e9336769b21432fd49af35b45c1cf123e62d78b2794f6a2f44d85cc8fa9b68801c9f02bc8d379ec6231bc2e450c7b70e35f227389d35e3170e6fc5994662cc923bf250d33bad0e548202e1025f08901c3abc453f8711517f041a6cd8305b36cc1b49cfc7b5b993f86aca2d11badfef1ed50a14738fb249bb9aa51905f6f4b05b98de88cd12cfaa08397e664924502d17c24abbec10e9fa75aa01f1d6f6c96cbafbab928acaa2806d445d59e94d35d4a3caebfd72bdd5158695d587d4088f181597245299b5bc1b40babf78c9ee39f8447763ad9b5aedbc5b4523d61eced2483d4000aec3b2718a4b68a823463879617931c38fdc0b4bd6d2c08fa657f079a55af8e1d84fbaf8d12e2fceb1b95e31e1334f1277647b2a9ab5f248548257fe5fb3fe9ff9d79ff928ff1bfb95ff7f33e8fea895f08987be156a6d253e42dc6f209b9943094e6cb43cadec6a484f44bdbfdf8db90ecfdf01a72d74a796fed89bfa6485dd0af0e81b0f3f1bb0afb7dbc4ddf6febe5dc2ffd510ae1563b9a15b0f46bac27dbc40a96100e0c07ae01fb3cac80fbeca6001bb16e0b5712d0f5edbb70df3d33fe8d7df221c4c0ce4ba5a25346c4fdb8916cda59527d67d964fbd73ba48a3c895e619b79621075a38d6057213c7568a521287e7491dbc413d090f68f965702311e21a3e4456566938d65db29b6a2a8945f468efb9b869c44473f391894408141146f5a246a4ea158b9dd95811e393e9d49aed32869b167fcdeff742484e71d52cf0adf07bee70758baba06fb8ba8f436a9d3d4516dd3527821cf08d87ea2f86984916b77b928811b2b98b33e72411a66335a6d4d3008edf21dd0bc99745c71939c08cc451c6412e321d67cdbd6c1bc0c915e1a456eb35aa114cd4a90c9ab87a1e5cbccad03dfa3f19b239b9c71abe9e35cd0e8db83bb3db1cd8346179f3ec0f49d129cf786050e811c8cfc43cb37673990941b47633c31ee4f89b61870ed29e1bf9485fd902bbac5aec1a3190dd32813bfb8074ac13a23caeed26635737288fa7830a88eb8c4d65798d8cf3e3599746bb97adde6603692c6c3ec5351a9a28e0956445aeb152edb39b7b8ccc9c1db0d8f5692bb7e825c17c158968ce8463dcc9f6c3f6a0234ed257c8ed941993632c035fba409fa73122ff80c83121688c166d2a7796f84754205b3b7daee44266b13a60d1c25ad1f80eaec516e46c07627ae799942ac9f198671c6fc7f50e63f2961efefc1c3dbb20d78c2e99ff5350c5305c42fd73774b6329c6d89bb10641d544d8f22063522ab9179478c058f00d2035a2988c2e9bbd5bb0f8d75a7211314116b99fe69419a4eab512066f542af395520307c5e63da950cd8e7dc939d12a394a9ad087d22f4663fbb9eab0b5cb6173aa879deb60981a3ebaa9fb642748f05181d5ba1396f916acc90b33e323b0ef90a6f2a0ee5ed517d55c33619b71f08697b007ba0385df43f93212b5cc45aa8504414f3eb9ed8476c41c45d376183b8c04f2a26cb706db634fb87fec84655c6c3de19a69d22f3eeb84684f4169c209e046b1667b2eb2348bfce2515236f77ea964ba097b0c796f77544386ec1d632eefb51b14e7c2e04b34506df179339d30e2da1b6356c259b06c41902efb4d741969b4b843afc702b6f444dae76c6cdd1ff9b18e2c1ac3269ca977422261caed5fcc6978528182dc58c74bf182d1bbdb62f6000981e00efbae147e8301c2f2acd1f8d582b5537df7ce4fb6078a4ab8b8036588853350d4f772c0979cb3ef478e39e0cd018810a9fdbc6d3bbf4c1740614268022dd45d212feb71c0bb9deffa65ece0b176b66f44d6dba823c669bf6d6b416ff4298cebf89000ded84b5c7e6b2c3f0f8b90a096be5416e34ccc1462dd79b9499dd80935b9f21ae9c932f88bd26d8dd19317260b17df324a36c2fc681572dacceaa59e6349b7d05d1afbe5b026cd31fcdee59e50c81f0869f2c1f40a9e12c737073e1897659866295c3e7bdea7e61146d90ff2cab34162e585d7a7fa6c9dad36a6bcc5df5dc25392dfaee129cf1c4adf3ef2c2d21d93df6597e986eb37bbe12f36c072c81eb4394013163a462fcebf7937f51b9b804236e383ae10313399c659f8841d56dec5d9ed4a08d66371f0f85f248921f039e39f39b7786848ddab472be979a2d47c54ccfe0a839e74bb28e4913209f4d000b8931ac212e623b4df2c16b1efdac49f349a6e49685fcbd85779c12ca71229ae9a7881896fa816d517b2aed07a92351c6b78ba50107606a756276b3c8338b9c51950a520042d29d87dd75255525bfdc970e2ae13c500ae74b489f442807b42a96023a5266bb784f2fbdd58850894872182a9bc5d43c26c66f8947eb6491339f31f4a4ffd0a09d8fbbf49589297bb7715e6c5e3b7bf734682cacfbd595faf3e54fbdd59dc1cfb55854d216ec2bcb6dc84a883eded32b493feaef3abe358fd983995b3c06ca021f9e37a41365e5478bfab9e51b71b5ecdf9ca11c70a71d0454983d8b3c038f3088c4f494f383eb02fd859454d1afea9f7abf9cb08cd8865900653e8ae4e7ff96a75e95d2bf8a537c897b4b8f85fe0ccb365e1ca49dbd6076a89709f2dc2a25a662869b18b5e55fe8002c1e1d25e786d7bd92bc04406f5b9976c655df5424b5c516adab68297934e58147d573dec4ea3010de889062e74afafd67e8c4b8ed3676382b3e70a062b970db42dacd721bbc648542391b9bb1ad65271086aae9ab9a274c0f0feee410da4fed3d577663d4edf4abcaa0eb2ed8556c268ea5ae652a86f45587c07eacc99b817f5cbbc19b542f97689d8ea8c29bca7d73f53015f951ed7e6407bb3b38e0de75ac7228e1c852376c79ac3249115c8e6b53d6823cc7437b3023e2418060105cced699fc44c2aafd13ab6719ff9e16a458c61ac5a5f4ae741931d910d562e329703e072c4c99bdf540e6a6bc4ea4776351ebeb363dc83d96ac7c2b1bb2b0cc3bad08544e14ea1a0790bbb02956609f0af2affea85e7c5e92c2edfe95d17b6cff8cdd23f2d6eebb3d78e7a8bf025e815ee8137b3d9f85aadc70832c4bd7783b4a34282a70bf7f270540bcb2a90b02da00263c7a7c9f2799619d778ec592dbc2ac2ae58fd43cf551256a483f46be94be12c26beee896ffc4385caa9ca1fb212f640a137bbb712a77da85ecdb03f05e4d7f2aafbe769d58bda99c0400614581f4a1ef5a202fa12059b376b9f306c8f5550fb55dd16d6d9c24a58a757ca43a14e9905fafcfe81b40e2321edfccfa57e730aaf8c6e88cc6ed5ff0da6aa7a96bcffa486aa83e2a386663ea879bbaa8e1ba9b138e3769bbb3652172ba43ea8d8de68bffa5c096d57b329bc567b4636f112260bb6fdd64116aa1403ed30c1c0b79a54da397f61ed773e11a8b654153267837cabc60ffc53529c3a5bb8472a5a720c11caff74c5e14e42dc0a662ac4a6459022f16c4441c12385d8d80272bdb0ccb59ed6aae43b0ef818e46760e99d29639e8bf226b31d977d6dacaafbe3d98784292f87071aac7d288a99d8e37d58d442e6b344bcbe7376b2670bbf98df33cacb941f8f0bf9fda9084121e4e0a8bc5dcfb6cb489c5cc558c39dd5b54aab1a912a24fdc26a1270862e87386e079f6dfa93d7a5b9f4066cf5ea5505bfa367a1745eb3705a6c718525b008eef1803a6db4edf0624dcc4293b19f0d0b6d64f6ba700f9adf14174eded080835266442303d69ca32907dbd4dde0ca89a6a8cd3f8a632d373760628da46f45fb1c3c4ee0e4368fd0d0943a4004162365e5b62e6e4fbb2c87d91630b22659f7cf2d6486463663e67ab280b86e762b649c7750aaf19ae5736c41fb96e5d36d0db8d4a8533d58b55a58da3c1143628bec213ca37d10270d24d2945d32c0190b401083e2cc655ec89e4758ac03c6c41d7fdd3cf550241d9c9fa7ea9913cfecad53e5350765c0826bb9e7f21e0b26cbba84aa5541486fefc4469ff3c5538747db43c8f4b80beda19cf7b98aa40e33ffdc66cd895810eecdd0d49f13eeb45a3e607b46ee8567a5591a5060a64e99d51b7331578a3d544be6902861b7e3405a11884f2067c93ce0bd47a7922afd9f6fa096e0e988c26f02ae07c39d38299d105d0edb5b6ca407ee12c379a659a567d168869ec9a7e71214c7674b10c74777581839540aef09dc2bf8b5eb0b7f363c1056b9ed8e1db8dbcc2fed617ce091e1773ef1b1a129add12a1ade1638e6114f7fc72de9165f3085a431205a04f3f005e6901ce772e8e2117bf6e943db0f4eabe991183c5e31fd5a1a6132bc5f5545b5a87ee12708ae8807baf85d91bf3818f1572c5184f8baed7b8ed69789ad94c617a84da7fa5e3301eac11b910c98b9f7ead5efa12c20ab7169effa648418e7091a1cd2a0a73fcdc1c8fed4df0de6b307748e68b91a47a3b2f712c73b474975f827f3e1a5679a8b39811ad82b5f5eaedcf1c01970b87ae0a1b52e133c089feb5f8f12f26c8a30d72e7296f676012c94d0e53fd3cec056721a5acc5c57ed267c1c936e581e8c2296245cb109655924596a3bd676110dd9de1b217c2c540d9aff4108f7341ad2de9893f25431476eac7727e46ab09f5fff53a66ad7220b2ebbb34f06446e87d597a3a12d8705856976b6e59120b49763146434e0f4bd2d0439f370ab15941e8c698ada0c133552317642be9b4443e4003e15946d1359a25882170e178b60a346a9e2a6b9e53649a0baa75148c98be7dfdd47432b41f0cb45b8d77fffdacda51e65c70db89ae76830c27eb68995d5b47aba8a3ece25fab82499e621028af2df469feaf336fa1c3b568531a119f2c91db36b1c5279bd81bf5cdb606e59138e73d813cea6de83c29e91bb4bbb5aaca517472e50ea693de5b7f3254b4f710cfc8c29bc300a9cb7db4cc7bc1ce0e5a7cb9709b4ed2185fe6644db7ea87858c69c23db8988508a5937e69ad39a393e6b8a4c6c28180931fe9713522a3f9dd4610bb91014c9c8106f4a2ffce336bc9803d293cc3baf6aa2f6339614e3217b828722fabd293d6ec3c9d99a53eb91fb26ee52cf89711bdbe2cd0dabd0f76dbe9bb09b36ed170b29ac11715a44ef050a71e84e11744243c31c19923d64718638d50d07f56846975b6219ff6ca05074c8860282b592aa3e63c982377c98fe248cf73dacaf4beb0b251c0b576b7308539be975ac340feccd709f3d40231c869663fdd8a7f6065ebf723896821e7c3a184a0b20c5b1cee4cefe101995cfcecb6e408bbd721c43327816e0d85d7f82bb39f12eafdcc239fac81d9682d2554ab35940553a1bc4834a401f72ea573f34b3230da8c76000e8a3c9d7394851a5f8cae5f01cbeaea67a8bd27c4568d77458965243519c0e08d472fabf07de8dc7496fb3ebc0999d8758942b3f9fc57e3a64f10d64c6882adf2b6bdaca13ac59f1a21a1667942a9a9df057eb32e7f5d5e25d3bbf4496ad2fd2abec6ba03c6e9c8d0f74fc73f88f2fe0dfb37c5127a227bfc9360aa6f84466976271ab76c58ba5bedd5d16d59115a7b64418cf1844428a22f633479e454ba5c140d484064acd7a8acb9e33b8bdab14a732560de2f83d4a6cde0e6dab91cdb169069b4a881f5ce1f86b7e1bbd7189e8ee36943677c3395ee09cb8ea6dd86d0c150957bb1bd0e00e70ebe869a2e16650921970bd351d12254439045ced4e59f21ba0424e688d549b424a3237e31f461ee83c83849ca6bc83eed4921c2d47507ab683c8f1c35bf275f3fb4578ca341eda81c1eb43685988ea1b5bee87542a953f9336ed64c35fc5b775cf27294c86a7d5e86eacc295369fb5e6b6ff7c9049f1ecbb1a4df5a0028c9a0d8cfb0a9c65e537803f2a12f564ac281e9e85232ce233a05dbe14c7d604365b0bf5b6b0225a46684dfa275ddd222878cb7aee0a76ec524932aaa7544da818378ecd6a1c6ab20d99715a71a8875640c48652e17789be1dfec89e1862f19c1cfe763bb4fd65525a3ee28430979b3daacec92f7ba96c384f2489c1831758b3acddc9d99e7742980a560985c713d6fdc8cc08d4953e9a45c3424c5efa3dc19a9b6eb0565c2459ea9e2fdfedc28e6848d52b376b67baf8a8c6a8e020bbeb4d6dad655039abb8179e1d4fb3ec65a5829f3ac5e51bf1e51bfb7858da97779682fdf88988fdc665fadf0cc1d9f90039a3bc8695ec8183de1318c1e4738dba65ce3e2d2cbdb5328a723f3d96aedf7a33c39ffae7e31f634b36300ac0f58e89853d730ff3edc9d305357d4094fbd6af7bb7919737f9f85eecf154ef6bdc4a71b90eca4536776169b2dc439cec75fdb2a74d1729ec7c9113eac8b8e4d0abc1bc8f3e995755a5bb67f5e8f4e3b8baad46ccdc963efb45c525445d179fd4ddabfa0326e94afba22701ce4557a397d3fbfffe61aefdb4cef256fffa28e3ba170f5927cbd7c5ea9051a95a210e7403f89023c1c9195c98515bec9a70423ed8d343ff177b0e2fea12b6f06da36f44b7113b8997fe6ef62bcae0bd18b1aae7af7755e4352b2a37cd595bf4dc5d17124de41bb4f96774c077e636562cd866356ebd1578f9fd4b1142a1e27e297f4dfb763a61c05ed231c7b553652076139cfe24e7cb1e085607b04f7ff279feb3046407f431f68b116b9511f94e972d11bd47f6373d978c033ec9de23153831d7b7fe52e2d61ed4c3cedf7e21b905aaa9c0ad2598c0a7be448782b814115c1c7a92ad11056f60d25ed2c5b77637b849701a86e0844a1f74af4fe07013290618945d87464a8f0f5343cac3fb6ebdbab7ebd8560a0bae04a96e0532066eb40762187459fae6a02e7c943982e7f7fca8de38c16620eb3a3105f2202327ad1a70f0d2fe84a99d9d6f12326668828cd5d4d66548b9fc9befc242f6a55303d997681e67c7bf4de7b73f6b538aeeceb0fdf6fd893f1f47869cd51ecc200b5f250ebd9df9edd96dce1163239b1afef8de6d2e9714cfc2a593f89d4f87ee02476457258b89e5f8eeba0c06993da8134d377e50476ab9397d50b3595f34726a89f3ceadafcc3b8724100360f4a088c9441d942e0160eb3fe90941f15b3a06780d61fe9043a75721227b6e13f70b66d7f30b66b70ac8bbbadbb197d6a01c05d7b57c960c7f40d70ca93065c39720fd1d0493c66cc819cbe872bc66d37206708d996e4f2d49ac30576abaa0d57c0abb3253e69f772d5f4da4ab44c112e53b3486d031fb33d272fc1374bc720a129c825df50c6f5304ecae38973d3d77d7ff4b0ee9328b7474411df85f16dfe4e3479187785365324b4c6695322ecae4a890c437d68757966bb717971962b1bffbf3363c3ca43711449a0c911e0a23126845605efde6216771a0e7f35b2816755508ddfec94b354461f4f76701c4dc7932e703d3637b823763dda90e6528d9dec4b728b67c5d7582be045cd720dd310a34c517fa2c2293daf63f5942e26fffe4d80a6ca919fc518df3cf5e8a7c5ece42378ac07bcadd8205543000ebc975c982f5b15ff76f3bba6a1c3068f4e459c01abcd943cbe4bbc1693197dfa94abb950a17289142db282a884e28ccf09d150a1f9199e5bd7af68521fef5abb31f632fbe140027ad8a0c4b6333e71e65802ff11d271e56ea0d7736523ce985051e12aee65cfea5d78658f052a2bebeb90feff3b951cc1fea3e84fa421c99595af92a812d6ff73fa633e88185fc95dd25afbdfc774ab429283ab6fe57e2b3f789f8a4be04c99e1314cc0a6633bf440a4d2a5960e67d98df669e891fbf1ac8ccfa7b006c9af08ef142257399d9e12bdde1e3bfc2099ce3bd3a769cf3ac3d429700d6d68dcf71c8c27a6a22701be635565a35e4e385ffe5959092f976e253fe152d715e35ce9cdb7d8e9ad4df3a0e44041ef1a5589aeca179ea7ce2625b0a948a03e71391e368a0868585d6ae08f5379c3a1f1c82bb37e90597e1d30281829fc624664efd4b6539211086ea8457b926a004e8be9425ceacb8e29732c0c1b73500e0f0ee271db1ed4ff94512f2cf7298c3e0dcd17fa64944373409ade680c14f96084ed211f891cee4e86ea226aacb8696b84ff950f436b562d528768508755826dbdcf847c28de2ee80b58d0e00d2e3d1bc29c3a98e931973c128f4365c77d01f54369f6e172d603d521bfae6f33fc9c8f36c04ff7325623bb7159dabdf178b7a677071e0254d5868611b511beb1fa52f78ee0655ad50133b50e9a1d288be810cf236e21e2e60724418dcbee1ff07a0ec1be5db049507f5c09d06162f64837f814200d1d7ee273c07efa8e4a97b10bed82e49dd66acd20b1d52dd973e1489066c42e7b18bee8c59e90618e6aecbe40455494e405c1c4eecaf2261d21ac7112408db4c1153c4f536b28f52653fce11cbfbe5b706aea317554d8a60d579138f73a63bb37e1933d0f9bdb91eb92203aa231e7d6893d608e78193024d092b3fba7d8bb8e414e22f1ea6bb27e5899805d4e782686521a040b973d855cf5d2f898d0560780bf1a4afd8ebe8b1682ae66ba8f115f375c765f3f5164868cb3c869f2d707d81e2c65ec28a8f5d8901056cefde5430a65374df432d30dce9266c9ab45e6a9e9807c18dcfcfd592cb3a0fd21699aa0c691abead5bb83805724629a797431a94b225de12f6fa36902c5a0ccbca0d3dae6329514b5d04d6725031df939094ee5cec1984906087f38d95d9bcd8f411cc392cdbfd6c162c057638e57bbe10a58c4a8e556f2e1730e68e94aaf9edfb82ffbde51e07707d1888b5359e5f2f843c8e909b6c0db65d88716d04d3b37533aeb33d76566776d59a0fb9e487838599b3f92c2920ba70bb1a5c34f8db9e975021e55700529b5be0dd59d9438b156bf42d385d96038ac64c17b0d6cfd998de1139a3161aa5369ad369ecccb4428fc4d31cac61a52dd995ac69ff543880aaec85a16165452fe04ccec2a97846e73deed3a29a631a417cbcc59eedec410e2fa5fb6edebf92733a51a34310dd5766bd5fb070c396f2d43ac047b133e2aff9fd84c8b3e0c22db54694858395b4529c6b3e4c6d5cf652ae98d343d9352103dd344445a7e290d5a5325b5830c2b072ec6b2962536cd2d166d2d1c5cbd33dbfb3ef700af90a75864104e6f30bca21a6b482e46a62333418f23a22bce5e07aabe2b5b367332a56b06632b1216de6c5f9feafac7c88e145f86d1d2d447f5ec817bfebbc5b0e2d833f3fc67635c26daa71f563dd77f46d45b58b299971bef7a0745ff58e14519b6f76d4a6eef41384e9e320d73c58add0ee493c7ffb15829edbe813b36434840f62bee4f023e9b25e14f49821f66cb90c497e12b495c0ca25ab8870689f855d9e7fb4bd438838abb4cf056579e1b8053aa46fc54881b86efaec83a309c110d4c2416903e02e1413b3010f4a6a684c487f9ea845f98055f07f5f0486b1c834f3959772aced4e7a6576079764061ccd2e82943039d8e19c6cf721874317a7ce0ede5ff1c34bfeb3baa708727e7405e1e3ade06981d02dad56c8fc8fd04e9446dcf5586b99affbf22c09b435ae562695808ec82d904a25478a1c9ea8e98ce5da9e33a8b0d126a7337c12532b9ca43644369299cd941df136d6042076e6a8270736b78cb8ae52c64723cb3422d2f7d4b612ace35803ed934a52b38d5ff8e33f2f15c480d36a87ef472c67263d449f4f09cacbbe1cb9df3315f7b30d0b1d1f1b69cd13a22ca988cfff54c467d22d127f75dbf6b2f597ba545ab8e89d76b474adbf5535252d03e19ed558d59840d63a9c4b7b400e0d6743d33ea6ace6f4c011b708215a6a387f3459a2ccd6e535260cc7d77fb983233542e1b0e69c2b066f3f2ed3887f54667a42fc16dc2f107cf1904c723e82bca3590ca48e0f03c6951c80da3707555c897b83cf091a0588f65e4b30d79cb0047384f6844b5630e27d281a06e96d3fd4019171c0aceb0be290f0501efa0f0b0ad4a1c6c17b0ec769b53e28c5fa4eab31eaa3ba0b718d8d48c12842020ae13a30d027f1e0ded2580c4f2f4e90b70731b3aa6fe4a081d1751a5886e880e85d103f96d456f7647bca38ae08f9ab3344fb81289fbe5048c79e2a1f1c985dd7be94db916ed990b19570a0ad2e1297c8e402e3c8e6c856bca27642e4ab50b5b82441bee59b0db096e696d7938981791b92c3f188df32c908f6923514bf646b907eac0e8baa493601117929714aa46e42bf2554b8df41cd112bf7de94e9cc960cc8cba0b3bc6d43dbfaded270527d1ac0c6bde43ae3d21f6d4122fdb3547412d1b5d5b5d2e99179d8c1296a4d018ad28cf5e24cff95b5b7c6f2d55af2ba90a2141fe12347c2dc14559ed65119394dc8879d9d80c407e8611c5888d7868abd04bb048ec0a892745183b9766949fa4d496ffdfd42d09bfe21721e39f887aac5446b8e6a875da91c49ba22164f23c20c0889bd03e4eab6a4f513a93c808e15d300d9193834fd5228942a3a16728cda3fd0d93d3cac8f0285a0228aa5f0b272bdc04ae0fa15b1aeb741977b1409a0025817e25db7811254abe0d7e2dd0e4e06d9e05b02de82bf587fe4ae018f02755bb86bd1a79a5a795c692df98da20e5230918ad668674295188e84657d5027d44a185705ee5075c7ccf4807eabef153928c23a753522e31164eab3608b0fc7bfa0a04f1662db9d35f53f736e48a4d01a86259a9cb9c47e5c7060c378e444f4cb8caffad82e0d11281df99fd5467ae382a2c0a286545932aa870fd7ccaa3499bc522345009812c84fd86d847bcf57901637cc917231513a9ccb49edb2b4ea3c55b492cdfd19a5aca65f68d5ddea224d40ab117bad88877535d5cc72b6bc80ed8a7769568d6b1703919467d71c47fe7ce5530dceb0502a62c1283fb26064b88a01a2cbf2759bd747de090d5748a372cb65dcd873221aa5e504c58420fb066a3f126c6d51778ea62fd238c09eac866597c5af3495c5c3d5991b18535f6eb671eb8fced7523e4b7322f1dc6ad5c06ee518351f15eb625fad1dad96914fe2440d41684d90d4b8ce1c2d7f606ef580c86edc16dde3c81d83af663a04aa879232b51a3f7d78a884b7cbe559f5e9798b2cef107956830b116ee30d885bf331e976d0eb8b7c04f7744818df9bdf1918efdc35fe8b3aa053bee04606dd21e7b5c72cd0d697c30a621df8b298982af8566eef39e55cee344ad25150df6a58219d6d5dee707d55ddd4dac2ba29b1b99ec3554e7790781c2e8153db858559517f546282a97af13fb46e710fd55cb0b0b3c49f2db4d0255ab6d83b4128dbee8654d614c54a0b358e8867fd504ef1454dce85914f538e90d3beb55313d0adf5dca6942fae59d75ab8bac0d37364b423983db0ca04dd243d53479719fd8b983346b9c6aa56b50c66e307352667574551465dc11c545d8ab9ae86f6e191530b86dc8530ca8501065269873771241df40a33e46a68357e761e2ac25ce4f43f29ba41f12129fa4823d15c52a3e950d7f85abb558ca295dbb22fca0b4f6c7978bf1babc7efbce608768dbaa3a5b1de409d3afaf2c44363f990838cfe273d94754541830ac5d137cc2fba70c7556bd88854bbe5124dab6968255197f9f95239ca4e942e6c383d188fa4de675c9464fd28a308dc3127fe7ce1d9c4dce672f1c057115b1255deecb2fcd8844b33aec1b1b8a933e7ada15148b7cf92446d88e03998cbe2f0cef385d777ee2b3511830298a819daf00a596864e711f7908d5fd466fde046fe019722185b408b1cce68944214f29bba2959f5a75c9eca9451f2e493d2cb79ded23fef956a8e5a5d1b7fb342ecc8aa18d3de21f4909abcb58b1fb0c44de7dc6a8fab01491736c4f91a44caa5bb3d74b4dbc7ff518dd50e860afe63880139ee9743eb634a357a8644eb278a61669b3cb42b0665f30bc1778b4fd1e1e74a357fd0fd83cf33b40181f5244c42ea092f3469f3f2529489aaa1e8421de4690b3bacd19d5fcc747e5a9bdec4aca2d6e03379f6014a435066bb4a115dc14990aec322449dd9ab526fa89a0d1459c67437cb6105802866c1a9f0ac48a1041e1fa48e75489605d2af9868cd1f4a443a2120bc85fce03f2da85dd6c3b5ab2b53c92c8a427e2cb21e5db6a230e535fc78522dd44b49c482d464d0ef906972c2f58aa85bd8b7db581ff986493f18ea1454fc62fd325971955ac6ce1a58c40a7653f63606120043071a8d826683b33a326b2c56d2462aca8c962a394df085560af3561d1eae8809eeda77d69f182674cd43d2768a6a23dc23ab8fc396c7557927651cc9d8e89032a0dbc8da9587564cac8f237ac8aa0cbf80f2d44d594037729cf968c35ffcf82416315b0f3946fa074a619d096153e44d2f795639976bee3092b44666325bbff70918625f7d1235663e3f5661bbefb85640c7e9c75dd9c741b22c6433530e9597cb4d5c06b7dfef439210ea186fc5432d9956b550fc52be3667f15f2db025dbe3409a6c2a251dfef18105a7fd499ca92068bcb4a205254cc6ca5d78f9cda2a8221b338e2bb5dcb32d6f9699cf87a9bfde573f9cac87a501eb0039e1d81c5ca64c497e80aba7b78a36686953237602910acc3a767d910daaf575c55cb28060b176fa95caa0643691485b1406359cba4b9ef90bd61d8a3a43ae30cf9f6e7ee9a558906276e268d0c46ab3ab583d909a5c528fea38e3c3319d7015bdb84a6c96dda0540d37b6dc5829944a190b5f3eadd56bf7a740c510fd5d3254ae43ffcd82bebcd65b20a2d5bcde7bb9ed2795170d4f988baef33d9f7de25a95573c17a2cbc8ec349f25bb8cf5859769bd2acdfc748822d6140fb3b014640130b70b412e979e6da4c5c130d8fe4a9f39b5594d94817b504278eddf8bef9b6dafc4f7aa2394b6e233edc3a00c4858e354b7bfdebdabb172bf5436dbf3a42c6e31dc2a6381a2bdee17b61db29375fa95570dd52a4b1176be56745f773dbc737d1627edeb462124957d5e3dc70d799e45a0ea4b594d7209fb95eba29d4b3c97beaa7e1f1e88649d2dbc55997d9d85de3a1a18d78f83ab8ae0138a61152d8819991a2e57fa584c3904fb388587842aecb650bac0a885e8b52e938856f62460166b02a3bcf18d9317a8d616bada36b8a646ae8e1a792513ea2536b11e3db3581e7132cd4cf3e4aa845716337ea646025619b1dee0ee436d7ccbaf0e55c94c128ec95eefaa9d28b9ffc449de668ae4f21f56a10235e31a0f65b55c116f1f9068a7dc7d9f7a14ef5cfe16cb0235c60bd1386f8af7c943693b4c677db33313e54655ac8feba195cf8c4a8509fbb736b007ddb41f24f7461d1bab66d5f0e1d643ab6ec6d4aa48b08225ff171b2db73ffb309ff24715aabca3e96fad5dc5464f7829350d5d0fff677152c1810f43c2e1f47721dbd6be2ac3d16e467155c32bea71a9d39373c115ff0102cc9cb012d42504c1650e96b07c281f94f08694838c24ed424ec49a857df8a00428351b286c3dc1f9ac4425b37bc73cfc66d967afd0e88838ff489daa9f8936b6f1c6e2331deb6bcf22d82f37c3f332cb74bd68d89cd0a9dff96af3fbc0fef7b12ce85e0e65a56a4ad17239ffc29641d2cf385168fdb574436c98d46f9900af9617be61ea6cdaf87dcd7c74cdb4f4a0c20a0b229be4a617567cb8eedc67d5b4ba35cbba55ef171ecbaa590d5d9667709478c25ac0550a362606ba2bb639b39bc5fb70ca5afe5833adac5e0d963448508abe93ca90dd9de1402ca215dcec7c5ee7dceeca778952ef07621d0fd59e7d4b67cc34e98516f6e60b0ba160b393c3b2eda200238a184a15d28694bdfd2d5bae94d83a77708a49fdf71c9bf505d7c863472a1c7b4c82732b661cd53e8d5049447ab12d8e999af779109cc4e752badb18956bb230e8f1552dbd4a00dfc8323689c525be67cf9203f12ff382ca24a54f025c1eaff54f4aa4536051a8f48c5d4f991ddc721143f424cc33fde0ea93a16d9ebeeae4b56980d78020b719fed2e56b152d38c252c37169df4ad0731a83140cc0cb3c31f2b423656e65f92f5aabb2a6896af30340d00dab6a9b3a890e4f70df53e965fdbda4ce6e9d4f401e700f042e49c047cae00235aa3dd33ccf0b4855a45c09d34640deafa4df6461d74c387be996283d47c1e92fd7c4dba8639528f9527d4f387a454d382e06bf788a0488f3c7ce0492c165bdd8a47f9e7e114761b55eac3027079f3ac2ca70b6a646c716938ecc5e66fddbaa3eec86bb6ac408f3296d04dadb94e577e9d312c5e9f08da5e48da370614582d5ca81fcd29b55c539496cbc67eae370312cf0dc31ccc84fc2ecea192b6667a6e7c606154c437358b88bd5b16ae50e648834e583ddee70f465e6f6ad7747561df2deee8a71f0f34887da927bac773808c848e8f6b7b6c7aa49f84305ea80c29273d0d6c596055b17eeb2267872a3199017a702875ac6966dc4b4a78851628f3d80326f7190e2bc2acd2f3923414230ef4bd243d66231db24fd33c90752f96658d9c625433bedd36e77b5b3bc6179d04a3dcdb788491e297de81f600def93ef04bfe8b3521be3f4bf80c504b668ca4dcda457802bc7ea382e3999e3946d7b5eb91f84789e0d18b7ebaaea90d42a2d24c952d8ba5a4ced2cd7e4aa5c3a97b20f0bd6a35d2cc77cf54d69b5c3d71b7f3062b981f56e3b806a52d661cbd107fe3c0e9adb8d14c3cffea20080738d6f5fbf68ca6699a35f55a8aae920dba55d0551a4850df40ab8ca92bc90911e2872e52bede885a4ef16923e010408d79a1371c651ad035af5f02ad3decf343bba2f4578cdb6bfbeea6c385605c9475aad9603aadccfb94401e51699bf87b9557aa335653d8b0b4269956e982846cbc0406cef773ea94613f94b29f71b287dd0ce8c314092eab9e6d156cf7e5989c82e5fd5f752667c034ea50fd5a0c8a741edfabd4fd4b5958667879a7f2375628bb8cea8e80ccfa987066811acdf1b3cb4848eb6b42c36281c73e23d61416c01fff7580dd412f22642a1305283fe06d2418bd001b7f6f828cb4a339a66b75f473a7acd86701d15238ed28a624e9bb763857c7f084bed094e980633de46636005ea3663dede23eadc1ef054b2e5a712666ebd0979bdba4c88bedb725725a974bfe608ade9963345198a5ae523c2826c44aebe3face5d5fcdf5ede930a535d036d7418469b9e952a31dba3ff02359746ddbc2aaea1be1608ee511ab3c5d7c376d64b73acd04a9c0f1325f4343bbe9dd0b9bb2fe5dc34b825e722c30bbd2a3d4ec0cad6cc2116e8dcc32d41345592241680ebfb050b07de4860a46129a6ff3653cbc1b8e80476e00f6593625fd849b8199ee7c1236615bd2c39c0473f3d9c0df33dc3302788068b1a0c8e1de925c284b9b1664faa4ccb9d138779e2a815b2c9e8efc70d0fc662b9e81632d4a6139046bffec77254fcc3388947afbd620e56cb2e31de1d09940234f2618122b75e369a87a82155a5a2e8635376e18bf120eb11c7b6af96dfa83acddfd6c6dbda8ac45b65ddc1cd68af2d2ad0dcb3332762c86cdf24ba8b349665cea85bafda2ed62bcb2f7738143ce745cd8f3c2ae1d09f6a11578d5a11d4d01988457c607ffe02a9c778bc1687b0a55dc6da68e53181a836815f22c96107f747511ebb27595f157bb3d4ea9458e908f16c568ae04a02a6cb74c322c2bc12ce13f23194cea2d71d3b4b9c3a61c785de2f4550b0aae917a94d442d57a006b3dc4d04a80c5fbcf0ff48a59cd566585a205a6b2b49cdc1d72f7c3acb267f70851d383789952e0a39b95eccf9a27697bd073592c2180ced3c0bcf6c176f8679fe4912c1bf08f7fcb781832292edafbfc685c6ffe7f1a184fe4c1317bce39572e2623b40e0d94546d095c4ab47039e2f1c1a52ebb05cb06758b6b1913474a8e653cbf8b3e3484304a8eca03e7ad4d3c48e1292d6e4309f7d1297e32073dfc8fcb6f7a6b6b61c35fd22bf205047fea69301075ff858727c6546f59a0375c02935d84f39e4357409a2923093ddb782bf7fdba0e13d6761234ff00797710624b61b4e0a5b7d29896fc65964022c5acb1a8d928f886592009b04a2c2a177b33dbccb49412c6f52d06fef4638d7ed136237ab7c5463b5afda1fb650f3ece043fa5cd9f009760c1cf36387c7e35ccdad2f8d1b94cae7dc3d71dde9973ea7698a14202ae2b3e1a0788edd9af55905318ffd03578eb971ba2f13f3db7bf68435dcaafe122dad690308bb9e45f1dab09777a657825203d52500cffdd5ee5782f81a3def5d0c68061ea9a0e3cbc802a01300b445e054f71bd97b1655abd872651bb8f9c4240f9f987bd26afcf56d6fd883e1d90fe7ded87f5b76d785b8d9d99e993eb5254d22fee5976509d7bbf21ca47e1de4b0679564581a85af8a91ee7658f6ec9f3e965b2aa915622017c7989d015ca0af79984e5dcfb73b82b89cded981947d7677d71e5082597666cacc6aa1d51d478a9d7bf04b88cb812709b55c648e2e7a647540be392683e3855dbdab7d12b5b3ad154956c1ae2fad16bdf9b00cd7e6e05750ff3a84d3a29e46dd3ab206e9eb1df846ce1f6c9fa16e1d7e68420b9e5494685afcec2b1331ec45af4d277afb2ff394a6ba88428a8b5c87f89b85d224b7238a30475076ad3bb8bd30f23fe0c163ccd60d60cff29108b5c425ed1b03db25248bc552540d7e3914c15f49730d8a591a570ab69249e8df4e326d70ec44d290ca6c46ac9ce0ff446a739f26b8847945e060f6e0558dd4d43bf3715df581856aeeb1ef8f23601eaf39b9f635bbf5e659284a8948d76cd80baee4b75d6a75b4946f4b4d64726c48ecd8aa7fda2231b6fbc54ccbf922cdb37690ed17e7dd92a4eeca912a7e87aa012958dea82658482ac291f3a0cf720ea2f1afecea244eb5fcf6eeb3b454328906d3fe91245d75f49d5f3dfe007968a27447bb5d042d1b50ced83e19b395657706abee312843599a9b612537a38b6e9b643e5c1c2ee25c3ed458b910e1055a4668d997fb0d85a88456a8f4d327f53a91ddaf7bbee4c2fcab89924af49b335d2eed30a25e113f12aad8b0bea15accaadadd1ea54796038e002461af8f9cf2d9bddce3c6e003eb67916535db723bd218e8c2b7c3b27e03161b9f022baeeba261f70e139b673e97a5821d9b7f2b35a73009b485dde0e1a53ba8542e7829421906741672700abacd8035b4863df59b935d9da2ac8582602759cf0cd95352f200a9465b8efc4d51fa20860d63965272c9933932dfa7a890246b589ec8f43081186246187d13257277adb79b15003473cf1297474a3d7dfb04e9a4aa8c532bab27a23b78241e07b6c2f139940ecd0e80768188918d8873f4a2fa046aaf06bf9ac0b7fb126a8182ccbd4950f29d23f1e7c8a99b366ca7a12526a002721706d366865299b3eb3e0e28714de4103716dc1dcc41b5b7d3ac8a611755d41f7fddd1eb465243a05a6c819b464863de321d262bb4b8b60a1756219470deee5ca7c967a4d1a036aafa4748c7daee2dbf54c042e7bdb59b5a6ddbe4b56bf9a7ceed7081c877bb65273356c3875c8b64dd66575efb507af1dfd548654dbb62b0835831d67358b8596ed94ef54795eefe02ba1f6a725ee6be710aaca3f18715f15fcf2d8cc9ec900dde862f1c786d403c8585d53eb01314ded1cf9dfcb69b82018f82c31eda87ae31dcaa84f6bb9a90f1d13ed5c9d276ebe77b3bce6a2d141936853557ba93dfad149102e704b575420806a5098dd41921318270e97cbad145bd68fd7d8b23916992ebd11851b3d8c159f3d2d63036fce358654895be91f4ba04dbc927e7cb80eb6d98e94fc951b31cab363a483eaa5075bf5f159456abf066582cbb18b709d43892121298721329d14700c0d57de52afb7810987780dd71df64ce2415ea51e3c1ad0fce2b95f5120eb33fafeeb05f5d96676c8242d03f4c465a51b53ff371855082136e48f987467d70391eca3daef1ec0683ac575c134eec695d76afb4da838b864739aa0767e244e99655b0a8f23fc2f93072b6620ed0e1cbed6e69ea248e81c79b78bc3da1c1f7d2e30c97b739837127b5e6b80058f4c6090623f5453a09c46c627362facedb1ee151e69f67a32e3cabf0e09f6a5c5069ff177b341ea818eb48a9c9bcde2f9e7f37326c1a34e1973a2f9bc8bdc874911665f53b55aa86651dd99921cf78097cbe537629b42c4e7b4a4aa76da51ca341d4b2ab80606a231912dd428ece34b0c24fcd661d8088fb7908f134547a42d9ecdfe4534704ad9ed6d5df8b3a4f37dd30afc48141c287180be477fde9cac3198a1de6a04bf27bd5bd36748c18c59984a1e2b77375227309825d6c86d50bedcaf321c23232304cfe95eeb98b1f83a9b5d7689f9998edfbc0271297e5bad4ad6694713ceb59694be90c3129eab76baa8dfd4a5c7fedabc06a60174afe8852f371394ebe60c553b08b1de95acda76c35adf63ed4ea18309204689b171582aee11fb4841613e6dd3371bfe499e4da0eafa33eb76d5154612a33c3453006138fc159cde6c894cec126cc850ff9dcec5034f2d06abdf74b0e5173398f4828c43ce3dc998455f1848b5ab80fc40a9a926e8f878ed4715db5031214bd076e72efccc38a5416f7d88472f7a8a27bea153c562d180116c99562a18795aeecc32c0f888b7868062e2f5de48b85a8d5a8660bbfc23e3a5ce4193965d16f586d26e7ef4b3ed058858e2fe31b52c1e796d8781b94b0db4202127748b7fc5654eb937fffce2c6cdb91e3dbb6a35151e040a0144d8a391a6d7189b908b0ae648291bffbcf0b604d8f4c3391f4f6efa1353dea226b6ea4c2b818e07a9a18c72b5d66e905bbbeacf11338ff1f427485d28b58c705482bb5624f54226ecc51dae7206d337f3d45ff11ffda2cf09f2880c5c23f99697c6fdfbfdcfb8e15deba6959e6e2f381a23ed3e8833bb83a52945a6db667906fe7b5012ffd557db961645acdaa226323e3023df61064e3f852f95c9c5a2eefc57fff5c2be32a988bcf3f374f2d82b2b2bb9deda0699e997fdc8c393a3f2ba903e7300d58c46b77d9ad7f84ea5eec4e6a19fe37bff1552fa3902c3cfb1fbfbab67772f71b5fed62cb76ff93af6e53bb5f0072b952b03920fb13bdb9a93288bd8d09baf4c5ccf69f04154d2c2ead54b6a74d5ff86975e82c1d16f18ec80072d252127857a172ffa8bcf19b7944a86ccaf1624f257fab2411092fdd4f8c703fb6b38df850ffa8e4b52ca0dd47f390b59db46939fbb35d2540fb490563270ace06bc485f421cadaccebb585dfefff7ea6259dde193d53dabb16a6daa736fd868f2a5c4e9c5c25e41c8c8abaadae44e2280b7453a832e5e2ce06d078dd3857a16965c6099551a148cb8f8ca831a9fe3732bbde8d4fbab89160a6efad9440bd0cde66717a6f97f99e8d564b609e25deca3df98f0739a296b755ff6cec0aaeebef3ad61ce48758c32c8e6a12b24da4d2f62da68987a5a1d26c903a0a719c4a9aee94acf686997233ac4ac6f3546467a4271fc6f775996d77b1cfb757fedf5db8d95e5ed8ee67aa7f3ea8bdd7488c202c49fd841de39fbf2b42f2db3cda7c91c39fd834c327f7cac52a8b273ad9df5e01fe93c55fecbc258741832321e86379e88f1043f8608a8d9bcac5fa9d6787783bf70061c63de7b14bb58fbf083b1a1623cdf233efb41e9858f531ca02e52a8f4370eeb8244bdc25ff3db68fd27e9740787b92f7916ea29c269900fd5bed077e6b89c9e108ca295fe3b4510cc92fb2b87278e0be3d0d61a1c17a3723a9c02f8b140afca3df827c47112ea9e5b946c3742c7b7a06843878a94e53881a2bd3ef41088138f8bea1dbdc15dacf5c157edf8d6beace7badc97391c1da743919da054861f7979f163c2767af80316efbc3403b6e60a82ea7e6809aafb21b5746dac4a59fa6f6fc6fa4536e3e40c3b839c5450d1f048594b83f344a2fc958cb8c7bfcaf8963acef7b3dd0f9662454f41f9d4c91e0b089ef09f090bf7ef2a50fbbed56ab167d5c1587159db25ff79224d1d99e088bd69a3e61222c6660888613b215cd5f8e0d1c757a8fd0cbf3e1bd84fecb8b2071b177920cefc79e6f08889d4f8a6d8f690941c849c517a04224bbc6f0259a53adf2e2ea11e939932cd1296ba1a2289c7289315a85a621be4175d0b306d448ef09f36bbeb11d57c64dbeee989d681f0364ca0f38d746dd8e85cb6fcb6ad043d808c6681f1320fd61a2a11e2b09fb88ba22b1540c7b0b51a5ce95ab9bcb5af22942ad5a29493be72907ad2f983600bad941edfdb0d9a7af07075f1d7fc7e30e4047587b1f16c662a6a166400ea62cf8d518041355caeb7d809804d8ec4cddb08cb8a69d351b965ddc86aefd1b6e18169ac7b57c0b11f58a4665081d0d8daf00715a8ac5f9e99e3f1a2eec5c1e5f4fbbbb1eaab3d96bc49875418397e2f83a9d627bcfb5abc7bc2bb57a6d85773049bcf9c50702050b543508eb85c59bee405bb61e6fc67714f0abe94ff9b239073e154802b01bbab6bc09dd8c025b28e44ba19b2b06e01cceb5b47637fb410a609f034f0b709ccd8230da56c086126bf12b7109c9e698e206910882516b5aa2e6a8d456d64510f52888f8d9827a61247fee5ba57b0a33bb25803b74c958ec8b4dafa3aacbe1c5e39692f0296918a538beeae57bad4038107842ea1da2e07a51e7de5b91ccf25cb4199d8ba46bbd753d782f48215af06e87a331d3218cc5872b1e79157a7e53bc869a9d9ccaacecc2af211b9c546d8398fcbe11a032bad67faf36ea40247ef978392b85c598293b28997935f8f4b0ee9650437fc4697caf5f2f2ed3600d090f72acf3da36091393d0d9c9ea9cb4e60d251bb47ab9dbffdda9bc3affdd5c26b077eedcdbcf6d7f674f15a85042cda16099843a1ae83041c5fcb991e9b2001cfc5bbabf62724c0c36cea209514beefaeacb55f81f0a68d960dd935a47b2e9e6bb6f8f07130cc21a862d4f9b6950f87ea7808ac509bb54d85a638d9915b82dfec6d8cdf7d485e1f85088f78474b58b1e9ca118a6d863c5ac2e2cd4a5bc690ede5866c9a1cc04d1bb216eed462b8340e01fb4ab6769f645d567bdb95531aa82d7e38d8a7669f76462e6fb03e6af9553b62e4b53db2d528a20ddc70f1b7dd06676c57a1f302e78cc8222400e14bdcc254b06cd10ea50cbf521b10ebc7529229d0eadd667eb2c04712982fa9b9407dd7e36c39623dde0971114b7b75234b1c10ffaa744b6c57f8bea040f3c0c8bc7fbda0e2e669a8d1c2490f6e68b9fd58b2139bd5c265096fdfb1b8be8bae074dac4b38fdbbfde035518030fabd2a565d93a01e5540115db4d3731b16132b6409167bb1dccf507e0e225f8245a74ee5720baccb01eb822c68b3cb0216b341290335fae5deb5ce24c3b125194ebf54566270767e0af82cc5f64aac28ea055630c7df055622e57f3137a7829e47ecd0e91a7abe95336ef67f0ff7a22c600521b267f964692398dd127f57d559ba98651bb39c2396b701977bb35de4862bb59a5bdfb83d513346284802bad3e29038369fb2acbf94d1e686e1cd33341caa2dad8f3c5b815e58c01a7f37d585785848070b61d5610d706f6c70372fa9c127e0ae772d70bb2780bb6bcff2a5249175a1205a0d540d3f765e8544cae59e4d229353c0ce4ecf1ef9d52a39807527f89b56d75fc3faeb1574b3e9e905ba7dbe8b57d16d2de8e6dab37c2b6779c0ecf6f87bf02aa44e0eeceac8a46e7d1c56e83bf172fac0094571fe6f481a611ad49bb964073ca940e52b6d0541372a7a04666273189b8323bd65e65fe1e145858ddf60e2a7a5b62c0b8d95c58037b572bc815ae357b38a5e727985f9912bbd21887bb92e075bd5c25fc7abf25ea6fc7f5778af7dae4a6cb369fa05b67dfcaff35e03ac63165861d89575b5311b177fdbd503b3c512769525d8c4fc620904c07f71624849ce6c7b4865821d7ccbc3df4e7582092698b6aba4798de0a68d778d34479fcff1dfd2e6d8d0e656a6adac9dca1a7a987b177f7bd535ecb18643dba6cab61c7441953ffe1d553630de6681e551a8ccaf8e79d5f0b75e9d9fcd8e4b24d87a25ddbe40825f00f80ad91cf1bc228105a6c7a1b476606a5a247915d6bdb5c3a1392066873c94519f7854bc2381dad3bae5c288ea6cbbad3b969fc6f5ab6e1a1d9e462c1fd5914d31518f9c7620c1043bb7625c3dc39fdd5f3cf88352996ec1082c14798d566d6f4a2566668f75d6bd1a30c5ad503c4762c4a75bbbb69a15382e0f85c543345364ef76c50def5f4c745c0687ee1011fc2eaf4981ecdd2e2ceb3060552887cc016564cdc6d2aadf181712ba525b27bc5b6a3dfb0ecffb7c40f5463918756ef77423c1b27de2f67cc556a0e5bb073392833db59c79bd47a949f0645efb432dd9ecb0b60a9e450d58dd5fca79ce5f4a0ccd3b9c5ddae3e4e16d0b18335663b523213964665f06d7d60e5c67c639a155f369283135c701d5921ca8550667c5813b03b59024969f1016f0a8466afd0fa36f9994f44f65c0c569486ac472ef97e9c95ab25827948b6b0f2ae33d71f3a4b2ae2032f9321163cf26bea8f3866730bdaff6fdca7da71d548037e6093ca923f20a64027b6b02754e425dfc51ce236bfd7a1e231560be5acd5c7d651e40e5bcc5edea4e7ef5997d115faf54f64de630564f6a09f1aa0057d32f09413bb6d228f600c4ac02084d13b0179063fd074edea5899b412246b029db0ea74f227a3d159a84cc616941ccc19611da4a31afab209a50695d7b9c68df2fa3c817e7fb87b84c9ec1aa3a83d64fabff3f076cef4f576ac207c5f1a7bc04b8e9181ce0423fedafd6748a138bdbbb9f661291ef3e1589de75ae1eeea1edc1a6559404a1ea277c9a7773ec300c349bb5654d2de6350232b607e8fe7517aada50fa1d7081c11c854f39f970c6f136b51903c7fca630d50629ddd2e2b33967f3e566e3130aacc9f02051b5ab39c771ceb8d0463ce0a002d6f99b7deeb3e171bfb7a5d727f6776ac253f00eb2fc8ca68f22ecef12ca4b188965d99d21d37fdd67e1f7c9ea01cbb9160b7d16f9dcc1916fa378de96620ec7774f6a7cbf5d15f1e05e606798d1e822ea0464652da1a7b9780a1fbabb17f520990623f5a076195207b2a150aa894a71719f49912f73f580abc74cd2b8c66aa24eb89a65088e316bcb71b1912182a8797e61b3e95f898deececc6a1743408a939cba0bcbf9e6adfa65d11fabfe4f7d5d84be3fe2206eb8e0ecc08e81a33eb32937fa76d1e2c30838af622434cf425c78bf0b453ad165ff1d9421cbc2627b1ea4ec58b42e9a74e00a6a06231667b9ee8b7b7b422a31b4d11b2b5a7108dd1ca3ce8044526364d31716c7e5bc967d553f507897aac7be054ea58e0b3bb05ca9381b9a434631c7bb7b241219c647c74a30e109551aedaabdb2cbce89a34d965471e8f2fee9806ad444f847c57d46335d60d83c37bf5f20b0ca14e2dcaa51b0702c39b801678523d586338e003f419968a08a57a71d5af30bd474ce83c8fde6b17f46e147c5bd192ae7fcb83ae335cded45fd5399b10b48d3647a3306f7364701bb5d3e2cf6e345bda93df477797b995702edca739de6d5c3b5685b12b099ef59ac40e2705586143db4f68e113a9eb9aa2caaa075ac7cb2f5fc6288a383a0ff21107d2801f2cfaa751a56e61de5457276a876acfb774e254179531332783c712b285e22e90b75b006430f28ffe7d060ed6dd3eedb1d0be625223f190d69cf4149ab0b5234a28018262dd9d07aa9dc8ee2e1398bc4693b2c425b48c3b324b5176555ee2cfefb249cb4d93e5bd4d6bf986df9e1928c9af37b38a7b823f50cc391c0954f05e00a9b7815aea302aec7b6584408b0ed7c701db0d90fcb70224f095c6d109107f6740ee0bd4fa102f5bcc219345518aa4e63eb5f7c20bcdc032eec7285cfe86b007a3903d031b373c11dcf728c4a625a1d7fe32e9bdaad24b0c57a50954302b55ea2d0856335b797e680a435a176eb2267c2e7fe41a24bf3c93ad8cfc5c1767dd93f897b6f80de35989a2cacdf45bd9c0e576910966ceebda827e901e1a1b28e011c5d5a4ccc0abc8974b1e3806568e72d80c4cc7535b990f8d2573b3b994bc4b5341ebc2df6392cf6fdc91ad7c096f93adf2b6ad3e29945be2290431b619e984f840d626fcaf2bd3c77e84dcbb59cde852e33a17e260a24c624b61950339909533784822295f780e7ccef7722a7067b4fecadcf2ae1614f22304073c8edca750d2605cd06a2c702516ecd112505a2e54bb18801efe2b15504fb056a372d3dee739fb7a0f344cba463b967e8ea5c6ff164f146583eea3d95b65379ae125d9b4168dc347519edb346e59f75cacee6542646553a139c8157151828b63493f21622e87a6dab4aa418afebf85b6b87480f23650966a688e25d9ff8957ec1c500ca6f6538df061389f197f791edae74aa6738d06cc55cf579911d023505d00d59b7f16c50372d50ab16fd18aabb48abb0a51ddc6be1efa1415c2db3717bc386ae1d2af0a1378379934aa020a7b46b057f18189a7b35c0ac1e7315b9237e332a61df8e843099417212d15aacb54688c0c5080e9349e981d973b8e0d71ca9d85ff0141acfe3dd31d5a14941d51a285e21dbbd3971134068f0677757a7fedda3da93d6b5f1d96cb93c49fc8d21631395a2be2bb7f73bae61bf5d3389ffca5618746e6d61fc43cb8e2a31aba4f493ca48d9a72335ae8e143b86c7d68012a97711ac6d9b9b4392e29e90e813f9ead4579ac0df945e05da50e891e536c86f2e36a4290654298f35fc5b8b91271f60ed3a4a7d5ca20f2736dd36f160633d284f5a594a97cc2e571f054544bed6e355c41114591cc52565a8272f94f0242c9443ee5cfc04a3b705cdb72bd0ec7a14a235f9ed176a1ee42a4e091052d1315243e257086fc71a8c830547aacbd3efd0873623d15c0b6e3f47d7dd45a71cf8b930ca1545ab8a7eaab30d470fc7e8b339dd0cee1ed57244170c62ac3a4cf76cdb7ea8bea98c7e2ffbf68c85d72e981f76b795329be6cc754e5ce269f127fde9b2324f0e42d0c9394da4aa97d3a9a5793ca8de1bedebb235144174a2562da8222da97464ae6e7075dbe228fa4e2115687582b8d17dbb7b525d6a9bb3f1d51a409bb620ce27be88f3d2ffad528eb9de2c467994e821cc4f3eca041f81931b4e6da827ba58034d1718b2e18a85d35417ab897df50c3d452665467eaf4c0ae5102acb4574d00e17055c6131114345652205dc82622254306fc307d110d9bc6f90ccedab07d99d2d41ed6fdea32620d7ea84d5623f07982e9c9a7503a6095801600410a4e120e7de8fa2cb3f2d1e751922d465c009c1d598cc9f816a0189e5244784c00eb798f5909ddf69b102f7cc5c0857f396912d5f3929386ea050925542d99c83ab98fb44856799bd4fd16b3eee20977e8af8702a43a355b2e6b8c31d58537dcbf811a13e736fcadaf992c0b90ed584cee01792ea50c464d5b0caae10fe6a2ae61ffb6a465cebe893018336e9c53e423df81f6af86bce6544af7c575307a9fa4e591b63a266b83a778665c5c91c07946bdb26b0f7518e660c91bcd537aa11b0dc61bc5d65fce41489806b87b5997b36ee08f63a43e4c304aa4b847d33c20168e3001c732bb1a7eddaf9886f852089196d115de952bb6bf2ceec1b68acd271a0c9d33dfaf85f5749f6b1cb49b99c6e210a4aa68b9ae1409743055a018c5d0b84d61fb8684a8608c79ec3979da0a4c9427f36c035d01281d48a23168d14f550d43d919b693eb87b53cf2acaabd04a1c2b7bb3d9fd7f145ab31879cd6f24dacae5c5918da5bb55bf028c19c78cafc81cf3acba38e402132fb75bde8949c9e11e15f919ce4f375c12425c1157be31b9f28d6d6ee76e51841c9c92d5ba35b73ebbab5b6629af6e17ae3ded58db400fedd65ed2f64019b28641905768a532a17d3e2c7a7ec21a9b63e94731af144de1677f43d40cad5319a80d9ce5e24d2aa8c52c1a96de9f4664757982548684af761771e4d8c095cf6de20ec2a780ad27fc164f490a9691acd9f42d1333d08b7cf5a47e56d7ea0ccbc217f939699ba69613c94b82ea79c987568036e15c7ef6fea155980043e29d81aa532da3edbd5abd5b1ca8d3412e237b9f8affb688143e703fa84b668a0064c9bb34df36449336afe50ccb54a7b69caea4385da9fee450e39908271091192eb7d9976259153fd639cb3064da1c38510e16a8759cb3bb37a6e88d05f194cc57775b4dee72ab51cb91bb592528439d63bf970b84af14a725fdcab0290db12e7cc43b7c33fd87f57fbc9acf51788f5121fd4925cb98e438da6aebe3c171e90d28a00b155de917d7720d3f9a2e54e744ebd942fff305fcf2517d852f05d1202cda22fbcb6373cd774bbc706186ef78288f82dff26c9fd0d4f3024b4c5c75f8deba13dcc55a0fd5b4f8587096c4d772f9d875dc5b697e2e9ee8dd7cc2c313f59b4f745d2b85f384aca5536ca5706e914eb9732c4362821f29fe22afd3458341f89bed37e236ec04edc2e4b3864a34c7a5360286bd466845dbe42dbbc81a739294ff24638ebd46345a073d74bd2d6f88c7bd0bd67ebb55ba81dfc1935d5f050b324bbd780d5c7b576ae9cfb822dc73af2cca111116866eab8813d54e7f9350398dd84fb6644c79f6a610e2d8e7e9f87fb0e122327c6c32e1f9a39d02ca098d956a21f7f5ee49058e6f08401f3eaab3bbdaf1f5e5f567739dc11cde18b34f6306ff724c5c7f53aaa571fd556947e3fa44a99a5f4475eaba3cffa094e797cf77e4faa352b18c3351e14c5ff9eec38df96c07baed2fb4a58cfe9f614a9e9455dcde67c820b67165099319e3ca81e3fb9fb7eb0b64c992c13564694464ab78ce90957b03595a3b1b0ea1b55fc3ffcbeb5fc8923246fbabe0ca237ae1f77c7d17f6977ef8c54291d04291a18522a18522430b45420b4586168a84168a5c99e2c38da93fe89360c854b21a89b41c11aef54e12250b16a7157313f6073c1199fe7e37468bdddc0f1a02fdc06c998b9d5cd0c00f2b7f8eda881b174ee40d2274cab2d8ec6945a8493665c5162839656f41f4cc09a3f010ac500b6bd9f0d9c9fe26fe9ab7670be3cc4053dd8948195b0a3abdb4764516845afb3baa5b38da692ff2ffc5bbafe6aa7977a4f4a9f2eeda5ff243acca767603337edd5f0334bd0619be5cbfd62829ed9c82aa7b74ea9bbe39082d3f68cac73cad733f70e967c04d2436f6ce6ded9ddbfd62e75a14d0d61b9ced5c0dd3dbc9ce6db173871b3bb7d62a02efebb9e6ef462b37b8b697de4e8a4a2212bac92d1b0fb00a5437b90deb34a3c5fa8994a8a2dc2d86489a5c44b53985cc01a79e9b737db90e4681a834e33857170d471c54096e454372018250e2aa1b0d29874c132fe8e06a17cff6f0db8bc4d10930da4d1a29fb1dd7eb78a116b182334d61f3c094937b52abba6bbf7444a265c3a8288fb9e5dd3923ba4e2e16f0b121bad1b4a41aaabd6733439db49fc48fa4d308616eba24f139d7732eec7df40fc9a08ae14482a76b1679bcb2cebf72fd65526444a9f71e4c533bde8a8fe2a6e133896f6e8732a9450fbc84874b74f1f0b361063003e5f71b1e6b52dc8e7da5f6fe23abc43b36820bfef61216a416c44d74cf9ffdc128dd3dd9279ad2ea9fbfdfe23db20c7757444ea996361ca91d2ed210c5b5e89c3d6e928175dc6b51595c73c43d0ba63175b4798c6db290585b87e7566995d595d01f2bf54ac941273d26fd91822ec78b1d43334fd933b26ec3dffd036145a1526e7ff5f9fcf28199df5849f87b230572b51332823fa7ed72b7dfe3c5d01a8cc320db0b8a97e568c897ac7d4e397b3e28a74a38966abc6bc377df869fff8450c2edb7bbb11adf27fb2ab599b76d47fe0f2b9b03c7e98cc6ec38eca6c55653e707b78a73d0471d07e3381d52bf55ae55e70c4bc44c5ae8023756e14b6f37b0d7f368ade7ca4e45849a4bb2e7f7f40a9f34038e5478dfafac6addb60b9d5b2028c20954e918dd599ed1babeb66877779d2a1ee5649cd12edaad5905395c0b299f7ae9c03e1e5ae953bf960eeca097a888c6d8259cae9a24baecce633fa0019afb62ccc47f30f3eee855cecaf83a67bb6f8f7bee4470849b7f1eb71b2a027af21b355d04108ead022af75c4feb6397da0b4af81787fcd7b9e7db41d762a44493553aa5c84775f49be9e08a48c09c27f1294ee6d0df5107fc916a21e4bf3db5dad49dbe94a109c9ce8a0fe2f279508bcb18969534af1aa940453bb1df9348909d8b0424219aadad0fccd7a230e8c8443f543858a685d81ca8deba5f9ac3979b3e125a5e6823607109d5613a10eba5164b4ca802759c0eac5aab83cb97c76a2409ba5c2b1e24f1f4ca8d867fd2729b3ff9d74aa23b577cac5a2bd4fa7570c1950b6d5cd8c3107017eade70d4a53e2610757a274bd449324bd449b3cf459d3d09a9cd73213542625c9a41d4112bccc9bb2eeabc298f423fff2a98f6ef48ab5705194f62097164e3265b6e5bf06a48a122371e5a15556ef1fd86367c9fbb0bcdfdb577469a264abda6f2e248a98f82054d947adb00288b29c799d6a987e48e69fa99343c566ab2f8546f3b89dea69a7f7293b73fd9967fa00d1b9f48461ddfef21562e38f1677b8ef38fe6b8c2e144f6b2d8a7eafb7ae683439f3888f53da129eabf2995cb21a1d9f583828675b5def5079dd4b6e3542c421d43a1d73e4166a44a7ccb330bdf1a599945471fb7ba536c391f02d14e2b76e7948881c747d269355009545f6f16889d592b77afcbb0dad3c1f275cf90049e71e8524e907c92cbad2cbc8bb5829357fad9b999d4c51eab90a291e98318a228785014ae646c439fbd0e57f191a4da147793d9902c840cbd83bc33133199f019a55ae679f97d068d6663cbd19f76d10fbc6bc5e3ccba546c64e9b73a7c35044c8da2afd127f07cec052e2479c87971292eb828a9d5f926197f60f6ebba25850605ab7fabefaff20eadf44e3fd1c37c7ab983fde409683952e36f32ab7d1e96a55b1c34609ad9b1c98b48db50e6496ae54a570900b436e390e51cccfeb2093f7229ce16db3d30035e74d81fb8de0f24264dab831567d70a396eaf93a24993bd1127de88d8f780a41dee539c79b4bccccfb17d0dfbad26bff5b6edb230d5a624387d083a1c31504393de455ac28504b443e523aec72d08bf7284317d479689473c144ddcd8fd7cdb73ab7849beb112d732080a7103a1633bbcb723e8046aedb0e3bab1e716efa911b347aa9ef7aba845431fead67666d887d3d93e98fd7c510faacd5d3cb77e9ef83721f6c110d31bcdb4f85092f7f166cb2928510500350fbd2d5690e75714c2738fa27f526e690572ba2e168ec7d751ffee414d2e1fe0f050eba922e8e8c0308bfd53dcffd5f4e61d1cce9446085266c91e45313efec600cb0e6fb07446dea714b2f897cc571a59de3da9916af706d5ede545e0d5748b7423fee8bec1b19e0e8ff8f01f26c323063f31229eda76b8bfc4e97c8a8fd614b34658e268ef27975c1fa91f2c90d57e5238e26c718d104b10537b0ea1603ee4c61548c4c34bf3057b250bc57554fe37a0e6f605f675f1634525585ada813f4bae37f990efedf8c705c73fd6906e22ea646fc31eb8dac6f697cc60909173448d77029634db6cd73fa2370eeb056374baa60579885ff20c25d34f2c9600b87153b6ba6813ab99b1f48e570e8fe4381b747c5441c73f218eb3851ab0f7954feee993a1e274b9994c84b25426c56a648323f6ad1dd0faf2ee438d148fbec4e84dcc5a708f448a87f4da4cc5876806087f76f0e27c1e9435aedb2bab9650845ce929fe9adf8fe2caa647127f919702efc8cb58db1a9b7b59f55e2d83cea28daad341ed98091b06d8f4838a35b2a265132d2e3b3db2c3c4c1d58fa1e53eb110b45bbd0693d17598544f63bc63e5a0b7621849b1469bfad76d10c5c0d5035828c659ef3884213e7c46c147249b0a649f9572ab203b66c439a63a3d8316d54de7da9373bdfb845d0af19ff565060531de342e249907f20f73ff36acbc207b6cce5a500ccde8a1bbf22f41b9df4a9a580578eba6dda9b467870f658e558224772e72337b5f388af24f32be77a53836ce4667c354d639e85ff28c2e23420aa29173db809feccb6522d760cf89ebf5910e581849453e2a66a695b780357371ba8254a880516554bae3b7c0d051c3e5243665af2f59045f9557dd1696dc0f3077cc366c25cd7e54b88387aeb35541462e432884ebf46015f378e7fa0dd49ca48dbf4e9d1372981235be995975fe0ad6b372c7637f0d29829bc4250f2b5fd497b86f29b4d02dc2a2656bfb86defbaf9c33313e3583913d5e0ead10c505ae725762ad5659d50a8e268e950ddee0991e6c26cb0e076fee0e1c7987ef2178734ec6cb40c5191bee1778bb75a296170d5f2e987fde91f962c4cd13e7414519aca087ac62052345372b15dd83de641c77743ce2141eba60225d2ca20e91fc94b099f69870db0d96041c5c6d259c63bc3eb20658c730b52ee702bdf0016df69022db43e6d6339d339a51ac4f9fcf76d32756aaa69cb93ced20be28e13a922ea4df77aea28dbb5e87be34462ea3a0c7b286124e5023cdb8f98ef95e0653e491ea786bd5c35071675868a95acd70354b066586ddffc7de9f35b78d33ede3f00792abb46f87204451b4e3511cc7e378ce3c1e47d44e4aa4b64fff16baaf064049f664eee7fed5fbfc9f9a93c42201106ba397abbbb31d5f4187beb64d1064e5de7b3863248f246992e4d6ed957d4d1705ffaa54594357ad7264e53dc228c9408e95a1a786f558fbbc51cac9fc58db7a34ac7540adbc32f28e8352cbbe75efd57f35aa88ab311da850ed5054fa6b8e81dbac1054233b2c335b73ad228ae2bf0d4a2716b0a47923bae9042a5287caf90c9ba18e4a03dd562414fdb30323dbf026a7b3714cfa48d54665b67a561d7d22278e4b752126ee3f1713b9cebccb292d2ac1a9fbb785e50319c97fd121a67492b2bd4c53a26ea090d59eebbb05f141e4c4685b951163ed7803e1e9a42ba840bac5bd54589e73b760479e2c59e3cbe98ed303ae4a96894997b52650f82df0b6b2e4c860f0adc6d3f56ae4b5ba91b2e4a2189233824f08b32a4da0143f00eaba3f0d897de1a7bf83a924f102256aa7210587f94aa791650d4647329dff4274f59eb688c335842aad8ebc3129b5647e8cc7f0edc6f2f163ce51fcd548d85f17d72bdda377f7ea4ecdc2d2762de5ea377c047179d077cd2a5e4afa6925f28258d4abe58ddcea459c8f97cab67b7ed91392f19bb2632972ee2d021e41ab66ef1a1963f32348c58c379da54cee649bdb684b17adbe9715b8c690785c5024dccfa73c8956cb5ee458b459e02201e590ceb6f89fc51fa50e296bbdba8f97047879d097ccc693cc4d81f96f63923b559be1cbf4048e38b71e968dfe6457b1edb0f90bf4005366f8297329a1c955c56789c255b4653d3573aa7de94e8f71c20245b864a726818a15f44db2d36a15e7582fa187c08f7547179d7a166a212f654b338188947ada7d42c984dd3f317775de4877cf9ed29539efa0c56e58ea81e8f7f22ec70ee21d5b1d5dac0ab11e1c2ba4faf9276a7b4d313afae5f3d7a87ae115bac1f58831496574d1bd77d92cc3bf9f439aaf5ef02bf2515793b28723e6755db925ec84c73e3fcbfb4437e68476d26c227ffaeb9fde5de22e7dea8f108971c470338e404bdf8f151d8ca253be6797d591bdaeb1403968b8b95439e57ead74d36805c0f50e058bd588dcfa89cf61d97f4cc43b0172e3b81a91a281edb14cb0bfdfdca92775282f63d11f79a25de19ccfee08b776b9a4b3496c37d1dcd04dd93ffbeec8707c2217860efeca4791811852fdda861dc3daa4b655e7f3fabe9bc4d7173f5231d0cc15b81bf72f771b7923f4ce483ed4c30d716b8c5524d9daedf6ee7969c37e321539e72338a7860874422d4b3c48f84f995b43801e7e491f105cd503e7d3a0bc5f2b91655fc32f876b37cb8755d250f8bff84752a689dbaee46b76907f0cc9eda83b0a5e79c1c43e784cec7212b39bcba63cfd591fd40531615d43d24b73edee2d13d63c5be24a872ee548d5cbfd9e4ee29bad2ed1f26ed3773189fd5876e71b49b201317dacb9b027afa7dd3f379390d322756e09a702280c6a070a3119f703dc3339db3f6be7f6cf57a5db1a677636f79006fb15701691912bcc36efff69de54fe0c172ea945cc7b6f894d61e48f48a6db812b54abc600d03662e94dde59adf164030e02ec20fadc7ceeabd720cc9f8bfa6bb0af2058d99a3d9acc8ebbaffbdbb48e6dba266fc888e39575ab9f53f8315378514b0305d6c0d87b9833a6ded08676d064153c4c87a966b3184ad4396cf4468150868f489eeb335dfff9d88543cff174bb1e713468f3d1fbe6b529c9684ac21fb86c9169ae41bca17ecd0f1fcea25e04e0984f732fcb660340036b911c53c0a9e1b5799991b378ac2a0bf3fa1d121232819d59f0d6f3a1bfb3ac71759553e0bcd79291a5ee29e5a9a7f0f0f0dabc53919aa2ed25b5f1c24996e02ec1a340608386735e7f34c4e79b8b2d6103db3d084fa2fd9b4efbdb493953d7b6b4d128a830498f4d8df8c0353098a68186563de8ad266bb67103417fd67cc81b3136ff2c06ea48dabac980d877b34917d6f3285443555d98294d0608843819d8f08a95d5f026366ffa24a04cc809b9cfbb4b474d74ad41ffeb11c7ffaa53f8c386b68dd815a30d0f1ccbc2d08b501ca2288c4038ba99c77a310d5810ac057ddcd6162bf64c965ef28b7fae4c60617e3347d2b3cd6acf7e7a828d68173aa45b11ca233ad174bdb867d66fae46c1618a606111f62fabe048c036e035762d0fafb16f452e249b44734628b4cfa042771c2c46101a253d6fa3a66d865dfa5aa81a748457c33305ec9ca13894de2752cfab602f01fc27f1b98615b7d256925571f4c1257b64a6afa5cbaa5163acddcd9d0a5f81a77b552a0b0e60bde48eac71cab5558680539398b88f851e96bb91441ec46b368d4a8d4c5b216dff7a7b685be148d6fc31b3e49456bb7af67553f189e2c5bf50746157fd9d90d3f1257fb47673abefba67ed1555e29dc32fdfd9d911afa7497cd33042dd97d2a02eb57ab0c9b42b7e47945a404dd83db2fda8ba29334bdb3bd289ca63197e7dc996ad6a8fdd268b64689b31d3b8848fe62289afd64b311fa5cf446a0fbf1c7f74b5cbd16595d0e7ceeee9720ffd55d68a70a40f38830569d86483f0d8a39dee4fcabd3b11ea2426388fffbdce248666cd72551b285b73c438ee7d6586646c2eceb1fa4ae96142f2f97b82e310c1c5177f0945d6eda08354430734f6f4d1dc3ccbf2c93a4cdf38c6c0e2b306a66fc44b1ce724b8442a41787949d7614f803fbc18a8f0b556e12d66eca925ba5f46c03d03dd7276da9e2e4f5bd4859359da2716af3867f19e28ac1393cd31dd9fbf3b9c94aaa61ed3d781319553fc57433eb59b17665929e716094a290144b36198d4ce59c12d9ef49702800175bd3f8f216d9e6685f3fa22b83552dfefdb435b3b24a51552e2dfeb4dac16e9c05e8e6594dd721adfc4aa7689b24bda1ed59e4a1a87eaff1865579088b989ae83ed8adf5c108055115e60ed266d96d6f7ba9bf0a567ef37a21493982ebd1e6dc9783540b569db87a17493d105a0fb4562fef4c4498356b2cfbf8ac15c62d2bc9a2db2c81dd4f61466f72527a4a7ea162931ec59792230336b72490db419543a403cc74a3f1f26037f2ffb88f665a9de1f19f9257f6d5e83a34c0027afe336afa5bed2ba89a78d942d7c9083f0b4552a2b98944ea96c1f4f7be948ec107c20a00d4f4736f3c4eba2ee03f796deaf5733697ddddcf14d5adb8d80c77e46bc1aad1e68135cfbfbd1fe9dce58719ab102774c8969bf2ebc4c472e11d52ef19221cd7f5c99ba16a62e4776ef6de68b073b3c2d3292c0b56af29e6b63af70f65dad526448382020ff7e3a248d608533023c74a71f336a4fbd0e78803645b35904bd164b4a1bc9ead7898866def73f6ba635e5bef539b240bd4d7e0e492080bb7927f2e24936ff76663a98998b39482051ed30d8623af4c29595a740ab394ab791c470faca1e5f50aec11375cb4e29e66c53f8db15230625e5ccae546a351bb15662c6fac09d1f843ef5ac8610f51183b94849132b194d16b03a218a5e8559ad1da4c706f8bd5b927f566b8d78c12cdb1afe3b7c58cd7e715563152fec3aec4beb309bf23ac85b0160b46cf26065f781a181c44725eda84414d5a1cf6ae41998dee92b2180671cf66c3b0f58059d23c8c57c4a7c5aa84e5e4eac96616d24495609e4d4dc0cff66af14380f33e4749d6e60113fadafed8a906685beb3a40014db202d5c6ea4e72c232fa653b0fbd5198e5428b2ab19edd28c6539b894182a0dd8ffd1e14e2ba4fe241441f3784fc2c3f733e1a1012236a39bb113ad02b91657c985f40005c72c3bd3f3252c792e6665952c7708790419d9b1b9ea4755e3e353765a687137cff01e8584a4c1624c99c2d741a4cae736561dac5197ff6fe87a6e7debd55bbbce71e996cc8a094b552431049548e9d3001dd9d4d82ba55fc00b6e16b3b9ee2656f30081161601e550379f0ada0df6f3493b2ed2e5fbd1f3727b3fb57d57bd29f42387827d1aeddb29f93436405516d023b1e7447754b0dab116d41b576fa749a0d4bbd920ddc11e2881909270470851c42e9bab09b83e72007966a78a3324c92c09e10c1994001dc56f86a1bd3b3208eb0b6d86d5ad69f6352df9495558f974cf9096768dbb702e0a5512182bfa29f74964428b1998b2dd694c77c95745b1e9a065b1dbf6536993cf86563938f8da2ce683b529b7728e3e31a4228704541229f7387cb32b67c0887f4de8d4266f374f2ab6f9d8e43bd7c0217ce491cb353f9355cc00c6de001ab3986225df55916428e7b82fd7ea3d28fde5ef065e96fc44e8c3571e6c3834293d8dc199b8804b1d5f1b8e8ba9b608acc90a5c38102686dccfad167ec1ae79aa98037cd528c3f25b21d9e812c406beb82beab75ef51021f063975428ef9e5d3205d4dcef16d17cf8a8c89b8888032f6c4cc4d0e17b18a9f4777eac8905af97276bce93581272afd3c54242b7226fd1748bab071ac973c60e946a81e2f32dd28da4d7999a62f50f586038482c9959e026f5ab25a7bfca11a73b28d30d6bd9db843ebbfb38ab977c60ef957ab8f4ff6a343c58dc206f44e5600996dab2b3a504899719e374dff9605f302c6e27a06bdec15a25753652a4f9d9c199384355c499427091da333c8b3df3fe2e1d9d85227ff023914f63d35ac8f26f7d7d5ef6c52bbbe7b2d82a38551ed3a8952f070b9bf91707a9a0748c53eb8f13294232412dd1629dd2b1652114d6b30adcb8e38df6336e04296d7a9a532a03433b1d79ac9d56bbea59447aca7e00393b0decd0efc737b11a7ee5254a53cf8230199da7024084a9a2c536af93240e84aa604a47606cb8aa07a5bfd6fe60e70c565a64ada1af452b74f2c55e8e773b3d41122a594933d649f984febc98f650b4fbfe54e1b3e5453fe6fe9c915c201310013b2760a2d9c08b2e68af3b649f3cc19dbd98c6ac67da4dcbaacb4fa7dfe603f0b65ea4fa674d986dce40e5b3176682cd99ed625fdbb65fbcb6b1552375b85a5ba9d9fc4cd94a430b49077365bda0109a6bd1e6bdab786197abcbaaaefdb9aaeb59e9ba4652f543e629b65a53cf57ba158b6553ab675cbee6f9ef9ee37433765ee6db3b6e280445b59c546bcd385076500f6c0a08a46b5807a79d0da0a353e2e39ee5b4090147e84ef3087baca7bd40b363071542d1bc2435da3d18ab48354879947e27e5dcf7f024cab9a9d6b3df996559b40384f7225019125a35e7dc4a634e229468acf25129d0b96135f99af9c38fda5f67a9762de9f6224ae4107ba2061f9735e7619e51c8ff299956f542f750b28e8b307da12f319ca6338fd9acb341e3e800150267611a30fb3914592a54a705b7595bc48eae1ca69e6ea087888a7d0128e852ecfca3d04db29acddd58c4501cbad0f95b1ec949cf51ee90c84ee7df66e73fc122843e4bd13e9269d01b08413721f497f580f7528365d3d30fa2f85953749790197ed08d9e49d0aa19c3cbdb4b86ccac916464e9b2b232bdb5d10c9588280c2d53ed578623353d6356b337f4c30242db28be8f397fb2be8766ee075f40b6c0f299810dc1e56b9baf6fc2c79fb9fedf5c41b0569c65f13b60960fb6d61f644006391e48b548912f7ee886f1d844c07cc027a9904e740fb0ca4587c31940f8eeb26aa0b50f1d7cb9bd67706ae961034cec2e1db988e85ce25ecd20017516b153032f00d05d4ad61ce29e17072fd61ff77c7960d68ef53a544ba2c3560b24709a5b085efba9f4a9f257944ae6f1991d1260e56c1e4baaa739852f4802efee5396dfe2bd9182a7ca0e02ff7b428c1422f57c758f1728b545a9afc9825d85a70b2ef885ce557bce4f998636e6231c63744792e44b26a5242c8de09535dc5a1de92c0d9c0fe214aa7016ed4f92d173c93670e6ba476e60ab26335b9c0661297d62223956b340b57180b50b25da81f12d9972d6bcfe6970f3a42ccaed83d29582152a5d34c89ec1d8829535db10d1b7c98e8d404d52a16962dfc2511fc7b8b6645e6f061d62c6db6f03a5c704f10e4d23045f4331f35bcc9f2a414c7e29cc51848c8c3d288d8d2706b60f296c86427c95e4cb2e0209efa15575576e79be0b986558a01f736467a1d2f2d034f1e835d941939cd4905b4a513607f5dbe2ff843c8e64e597402836db4035b73df5a9a464c924f1ff128989565ece122e84bc35529273d5ccda365baa523564cea772420c2eca852887bc015b742b3fef1eed0d7a8800e2ad7679d8e29ccaa736e243999f4dea0c477a8f981a07fc6fa44f43e517b871f9b7526ddc96ad45ccc91ff17e1710db83d5c0ce61f3f936905b53423a4234cbf1ff7cc6fb13ce7a39258fbae71c442704d6986c39781a13994e5e1eea8993ee5572c65656e93588d684105353e81176dee44442a92a27c4863b856eb5845b949d65780b683673447566cf6b7f68855cff1486351f79f75442578d6ae18e0536e9417863fc39b1447a09df53f9feb35cbd58c9053c3c37d9679da64b5af82b7b6d6718f0e6d30197ea5ab56e0775bb9fd67d57ed48bd5064fc5369cad1ca9626ca93dcb05a2b50e032d7b8fac11602aa94e0e02ee0ce4cf55a4dcfc39ce0326d3c5978918db7cecf85600d500c1d24539221b17b821d36024a6faeb18c84bf8bd46fe4492ac4d1c839ed6da9bf86f271b0ed9f1480730907d75506fc29b367dd1f324b4a75ca8f9676036c71d4da7444c12ea001e68bbdcb769bb8f35bde921dbeecbbb8f39f8487bc78e472ee4ece169364376023184f6f3eb194aba0e151a4f38d909f18a8da3ef029a8bcb39ef29dbec9dca3dbd32de8c0daf54f9a4c60b65a208cdbd5261f6c2fbd15b04db6e667531bab86260122544dad9299dd4c5ae548edc3a1a02089994f914a215c047d64d54abe7176f3d72bc59f55ac72444a304b44e888044cf39b1aa82e7e7cb23e3183ace60843ee4fbff9ae6d8eeeadc3e0d3698f555c9aec8b0666b3616992b365ccdaa645ec3551dede674d54006532931c8b69c7eddf074e4f60332cefd852f7171964960b2b46690a8be26fb4ff708f859754aa0854acbab8b484b75bbdd17f274edcd501c7c84ad41e425defc1fbfb776c68bdcef27c74965fad569277dde0946a21235d137e7424cb2e1133d7bc8c951ab7a990ae6b665321d8ae57bcc89b35834b7b68378571a100ed9eed2f1902d7d94d3ff45a01113c6f8a823bdd8cd51755fb1dddb4447535f4ec109357016b6bd500f3f4cffab33bd9d887916ad0d9ea6a8a7ba4d4e2d39a3ceda270433229de0aded9efe1b8fe7d2fe8e92d098db2deb247d2b79b7b559310b71897908de94cbb0b039a4f1ff60c466e6e9d4e8648410467b605b3430c755bf03dd907f1e8e0ff7c82042ba485aa2f02ab5c8c1826eb689dec36b68e5bca66053672f8c7f33af228b0bfcac96edac857b1b275575a8aaf557f2a57df8cc898273999fc898ad52eb8d6eed4f5748f0b7fe8d16c4893ad292b0817f34fee82d826ed9a2c7e750762ed2d7f0193430d88f51ee55ee8d0cbb6ecfd74159715517d6886e6dfac67805a7ca3759b7fe374cef774dc8e5bce76d893d4e42bcef9df6b9479c09b8ee141bb67328fd9039160d14d558a830017ae7d165ca179392662b9744336045c9c8b49ed3190ab2e52599b53264b6b720ef2776ab482e6360babe40e5541446ba0eaccb9eef7ec9409fca1e059b012a62663f654a896588e8f0a658ecb8e54751e4b16e3504d37fccd64cf2ea5933d547770c2679fd48376a4a1b7f312a13022cd666fa2b82c40d492e3033d86e7c52f34f972d9e458c53fd6ed0f96e648d711e4e14575e0717294498f1991cd6d89d25acd5956e5b81912ec79ae3de9836af639bc98d49c9a9637cf7c41c1c8c3c718969ee6efce6481e8b5e7bca1650bd9d241f7fed70ba9e65cc0a97efdbcb167e71725dc168e9ee49ad8610e8b9a47ea562bde1fad476a8edfdd415a3822dcada8d2e8849af651a002dd51550abce13dc4eb0242dfae3df074715e037b14385c14400b53b894cf66a197edc06b618e8ca8fb9de70d91008e355942eb47f2c5015a8bfd21746394a2f571a903564af33ed583fd3f6d799cb6c44c4fa681e7f8b00751383406ee530d9097becf56db18f813b6f3b08da381a83ecd1ab26417b380927f0a588dba8c38c3359992574c8978d8fb12417fc2d7dde3159adffae9a0bb9d3a6ed4fa45c670efcfe3bb8051ad22c13d4afea4d110ad5cc72e02c0613512e79991eae13b8d1d316493c149e8a06652ff28572a0c4b774a3d6f1b3653b46e0e4e2b5edd7d31202bfa1cd4b7bef0f67776c4354f9038107c3673b2467a9e8ecea43ff0e0275c69c7d38853cb6baf75df80b90482bd7f661569cff868c187bd41e63355fcf494b2341a0eb850030869c789b4c7e58fbdcae9aee163750ad9bdd7aa89a96e91665a38394fd63d9c22a1a35aedbf880baf568c43e6bf8f7da4746248e63dd31ef3e79dfbf3fad3eb051edc9fb1fb13fc5ca456200cd00db25f8e98fec604a20aa5b456c7a6554868b5a88f5cbf97f5911b5c1768390ec09f58be2aa4dd8c71670f6a87f06fb5ef374fea5ed55942a8d443c2945425ad4123bc7954f76a872032eb94b06bb770a3ab8fcafe728fea8076b621c58dace2b84f72fe9de412d57bc06edb148120199cd11ddbceb111debca97b75c2f76b2d8e475997c831d3807e2f4081b62d4dfdcdf1beb30d69785df4633e0b38513fc015596ac4d32fc0b8cb70de1cf95b7aa470fe777f6b3835b0360943d86e49e3bd0c365b9af1879b3bf50421239394e1b550d5c0ade66bb0582cf11e6f3d407fe2d3af5b5203b153d5f6d9155e68d58656a74863de79e6d06dd6ccfa67c87f70f3a4bef920a1d45341ae13569b4aa25f224885684f91d7709bb26c2f57a43c375f7da3ac90e5e7fb947d95ba756b90c4c09a58ed9495c58c9e48d1a11a3ed3ad2227422390ea776ad260e2d04dff8eeebcaa6920389d5e1af39aa09a5913ca94147a660f96d1a0b16d7b861da84a983a1563774f72ba44df96bdd85f534bb69ed9360236d5b759878a19ea2d768134008bf544627e3cbba790b14c0d0aede6850b82ff1d60063df36bfe7013aa1e52fbce1b7e9ccbc39f7c4fd37df2a7acbb2eb5489ee873b6b0dd34c89d079225658750cab6876e9db8a1bd697b17aa057c84d69967aec4155d04bea558a9748932eb81a87f8dc010d9fc595fce2eadcd92ada7a6a5215aaa01c9fe85678acc49622a9d86ac9df84de5ac119184fe47c446cc962e0a96cac1254e139611da27fd7936ff50354e9889476c9b07f3cf579875972ef59b56878643ee5266ec075512fb798e7a2b9ebeea8ac5fbc9dafd361f6c41db6ff66a9309c8cddf200a60f99ffdcebea41a3002827a945eb1261c29b8bfb146ed1b67f2ade3f2afb322a583dfed55cca10a086180aeefd6be9578fe425e921c1c81b8ad2fe5d66477930dee897df2d213679a64ecab30e0c92cb4dce43b9c16620a8a1a81bcfdbf58e2cd8e697291c2fc788439ad814c40846d8dd4e66ce3736fccfc1d072ac1cb636648dd0937c1edd9b1d097c70269b48f4bab2a85e2303f8cfe9b3b81fd17406377687bf13b832ca883c765ecba58972ef66c62ca39ac74b39433a4ee732bb3e11298b2537a17fb4372aa1dd6c1cd8bba53b5f587fb47a9f4d96dd14983a5a0748e60c573067f652c89329c88a0f9fa8e0da0073a5c5f125043a9d082fa80cfd4e2ede68ead8b4355cd47de06ec615eaad862e71bb02e5b4fb6c81efe4150dd5658477277b31ee8e63660198225dc2624db5641acc94f66bb44dc05ba25543922af3d92cf7df12a4baf550565d32cf66fa04c7b69f85fedee7855f662a7f6b8e3056f90542f193c242968f294356ac2c5f4d77c71b6be8942582b2c5aca647b0b856becae2d2af087aafee95d44beb3652d8b6fb6819e04aa8f43420cf292130552f6a46f043e4b8255a03e6a24896e628a9154069c7cd58ebf6e234495cffd175aff016b98640d25297ab5e22b354b38a3f1cd92b29153200bfdde86ebed5cebd14f468271d7df928d6337f260baf102d96b0f23a81d14b0ea4104f3cccb4ab33985ae546329a1bfb87aed83bf1fdc9f16a8684ef3bd508afdc107add4460e79d8fcddd5fee66a1759ecb76aff9c65b12bb44dac2eec51b5d61ec1edc38f9c8a55968c8de6819f3e1a6c05fe6597bdef1c7cc5b3bb3bdb2b4f09d0816f0474015dbc3baef8aa86060bd8758ea14535be2a3134851c9aed85604c34512b6f14ed76e88137b7e1df8d22a204c1c451c2276027570a5d555a38cd04dc3f6cc55ad52d6a78cc7009cadd26d692eebca455d6aa0e466d85913399d22a0318e8b089ad7471d4e25e68d674870b69bd8d2f0e98f6e41e1b6112dcdae88c8764ae4d4098fb0d730bbc37be78001cfe37025b19898dbf7e842301c056197c3db398484d8ba30ccef94cf7d90338cb6226db9625e766f988ded147b95b7c3bdc737cf9ec128de9b8f4474696cad85296ee411c919d2f7d71f2c214adf59bbc571b2dfebfd9e25ba487df7dfceee077b7e52203e11245dc1640bd1030b10ea757ba0ab65c4482299e40b7e66fe402c1c107288f41ccb98cb7d4396ba7996a3dc3bdd044d5f6a3538e6a9bc737d97a178a5695a3f892c46722aa561da173b449364f370f6a1bda9e694fd882d8da9c046241a1439b87e5fd77c20ee272d86c0df6d0b0ba200a2d6ddf44b6387c37ec53fe656b69b953df6dfc02ad26666d6fd51263dfe0ff0627bc6ea03bb94ccd7796a30831b38d1155ce1d8d580d548a3939f2193efd64b50e4054815c4bd841237720b6019edc299d438bb0294f4bfb277d925b7e17fb42847fe81ede947af55816f2da9b11948e7794900de4611bd3d3d68455033cb59bd1454391174a2f14d1b88b56d865bd8bd9ee4cd8c384a13828d2c7e71b8780eee2b538aba203db2332a0134ca333fcb50e54d1fa822166a79f32fd2e2b390e157672beb1a76a20c5a79606985e5770ae6758e3cf966ded2d5b0ab7502c5b35633337dc98977f0801c1c2ddf388d658b303a667d9642eb5dfe4dfbde64834874aad9a917718d09df7abdd89528a903abc246086b96ff1c06bb3e1cd8b7a20af7c7fab9d7e63950c93d3f977afcf8f42548ebfb18e87e02bf77488f5c521d60839c73f469e9d19da73f098603133382613df75e2681ad9deec0b8a6d3f50f99ee9ca1eaaa6255dac381fb7ac85b99516690b86129e3b8d6fd681ae0f559a0417142af7f0fdc26dba24737c8d831b67f533e78a9fd01609558e77db0d621a8a13ff26b0912d543d0b4aa2ea6a6f3d7cb59aec032792eebe3af51e6b5b70b0b65b7604a86f86d79bbaffe5a66aec60f9d7f5769efd76c8428037451edbbc89d8086662a65a6f024c8d3426e80c42a2d7c092c7e6e205d2a8f7ddad800865c9d483db767012db9b1288fa81afe5989dbf894333fd5cc24c99363df3ceba597a18fd14f3a73697722af81d9605111368f1ed26522fa6fe0f36cc23da9766870937c2ea0fbf9ab3e76b95e5de1a94924e02bb1da9bead1cf137cd84525a860755d993433f67760d0e923d8214e987ad87646925a117f8f508e5ffe9e434b46315aba6f05ff4f1add6271977cefa259e4b445e59c07f9b7524eb4cdc68b2b2139644a79e6f879c37676cadba9b367b7c676d5e0969517c9fbf32f347caf9df2cbbf978e623fd1bb88347b7219a8f9ff5b0ba411225e133deb8ca7997623e29b16a23f4689e861c609b0cbbe0466605c2533f794c0b296b992e49a82e71bb5d234271b7e2c744f6062fbe723d76c090c18acf778d7992f651bce7e39b8e95f1cc2dcd330397e9131ed4e4413ff71877722c1e752be52f73f07f6d7b6e43b699197e82213817af5f0f4dbb0032618effcdef27a736bf473f9c57c7610df16d4b8a22d224c1b83f9d8c20bbb2c88d23bedfc29396b6514e2eccf7e250654196224994ff5c0714b43040935d2ca0b991083e3bb66caa46a091268af4b6f14d2b507a842f50b6827211f8f26b75c47ea00a68a78d4215f329edda596bdb8e14311c238977ac6925a12e2a777892d392db567a3634cbd01923b4ff6758baa1c07760bada1c6518fe07d5efcccf377c7d4782406a664d3802e27120e1b6664bb1060cc9c1c4eaa6ec777b038be0f22de92f6506edd3a7ad58bd99b5fb26933e751d6a50c6f2ccad257933a7deb27402b345781b55427f1bc9ac140138dcd0454bc016dd75c06b64231511604c56696bbda6db380ca7cad06f213c7f70a6d1a78e144cd2a89d3e2eb75d2fb267bb255d2b1d6b4e515b4754d704079581462d7c94dfd5fe22c82db3859445a53e521bf01d507ecff86ef1ab69bbd195aa11f56f487eb149c0a62456f4007634dd0dbca7227bf09389d65dad76c5a5f680d573db22768e690990f10749344e625413a1daf03f4b31f891e37f001b5af5a117b87fe7d7d8e3c7a1e912c8aa237e9cfc924774f6547856d11a7ed4ddc32c508dc253e335050dfb4a8a8558d81a6639e9cffa0e898b4c91ac15097052abfa7e248808ad2693d0bd418043aa5f45a1377e6e2bd4385f0185c3695434f3fd04b45d8c9c466cc969ce81d6963ce8e3bf0d26ba27f8781ed81874dbc5c873384424fb62e1679ee1fbaf027077c2b1e729e591fd68bbceb1668904718556d0c84aa1ddc64a57f52e0b3912c31ed871f3cfb84919fe753de8f10e5af237c62bfa5f3db666c3b39656aea52dbb7f3f5fb4a7ee1b5e6ae2f189e3d32c06add2471e77e23b42d129e6f24bb2adce743731229a66adf3ac1d50b8b5162b9af60b3f197cfa0fe68fa66a8ae83d33fe7faefd915ee94c7d603a63c466ee07a6df7cefce307e64579ed21ab77558750eefd3608203c9dba817ac0201fb6cf28b184eff3cc75607fe485d84b1ea149c1a768b385140a22ceb1c5267c79e8cefe238537898f8a4883990f912be176d89c4ebc0dc890662932a3c7223dcdba2cb76bd5d9770f1775bae3c07f66481901dbd1c8138fa399fca564e3e6d842a7acebd4d216109b1e3a6d7765c7dcbb108e653ceb61fa4df29c97eab86982de988f3a84f4eae96e451af5018e4ae36b4a7a74389637d73d47a351c0ae9bb24b8c78547703396831349ab6bb657ad0b0f27ba199ecdb6f8aef633461bf34dda173c12e02fcc683c4a8cc8eca98ca5895ca60ced5cbc85c1c89fa8ad2def8ce407554344aced139f0696a491659f65cbca33dd6da6a557e0d05af6d6d0f622bc09d51dc07e3cd605b9f36b4ecb20a8e1958f0e665a79f6e6b88d5df70f909d668038139d66c7a3e773f7bd50d9288fe289f8e4f0f27b3852fc517ac331d5d1e8184210cf4f4dfaf160db4b73568c60d65da6a0e33676b75a7a620d7376b2ea6bd6abc52ed76699556c50f50af022ab9a17ce6e89c80f2bfcdf1a9335592f17f6720d73cdacd599d39eb0fa52b5960d9dbf7d3df31fee4273b16930c891049dc9d8c6b8edda8140caf0b35a1df2d8e2f9c50b71cb3b9f5969c19cc9d33a4044fcdfedcd830a39fbd3a628218413823f9803df80800c9bebfce8c12e17d0246efe647de5b3a85f0b688176392bcbb7393a330918c0837c260b6042fa08d5037a04de6d8370ed9b3f69ee2a88265ec7e5495f556a8d006c627fa7a9382132fc8d1739a36095e1e38e2bd403c95350450c2389f323e14f0fec8455cb3d37adc38a25c7023054a94bfc74b49fd948407a7451849c4e586fd282804ea187990d97e29b8d85342e06e494a38991f14f2809438046ccb0c5a6fed6cdebd7605959e239676f00752554d62f2dde13c5b0273cb5ffad2a435b0f6bfd21f6386bb3b0d63e499ebdc001df499b6cc86127093c8a59e166ab6ded220133748f55540df8c14881f533678ecf3c34c9d8f9d0d2ac1fcc16690e54b68c685673780edcc4665b3eab5b3b2bd79ca462d14e39c2d944c0907cc5032cbadef1b0d98feeb862acc2e7256bd16e9ed526f8d1eaf2e256b7178babd466c19acd7435b889543520a15853b612bf74e805f2f0ab2cb5ae069c8c619a8b5c12a9f0ab6707818e6cc9ca0f0e48d5589a1165a84a8e135f1deac66a1a42a218e7476c5d88c688b68e9ff963c546c4027e35c8c594164ce87bd05cef59855ff5d2819cd80fe3084020016fb09ef3822d063bae55bcf339bdb3d8b81d9edcab3bde62c5bb63a6ccbf27add89779e40e8676310bfc312e3f1ba3de68799ea253e7bfa73fd96d6607df8b3bbb006809826021b43914f50e7ff7940ed8799718cef4d3aab1ffea8ee27eca7e8d49df476f1ab0cf485aa69b7b8a9943b84998a0fbd3c199c3e66163590e81a1eff168b34140474237e1a1296fb9f1bdf7904716fb1e74920ea210b7c181e79d88781a7d64c5dd90e2ff91b7e916350e6cbde03d7ec4b63f14b1c3825dd599335f60a377faa2f1e715635791a29761a959438bcf0356421cbf6c274a7080f71eb74e8d7472af5037e77bfb2f5965ad5af8c8083a00c121686b7b119dfdef7475b9b29c53e580674c9873a6381b3cccd0c409ffdba00ca6939d35b7c32f439213c89c232ddef35993e1ece7ce0d2f8fd466157cc0adef77e04e761f29502abbf866aeb5e25b85d5983b0e73f0930d98b3e547ad6ff75c571df61f355fec3d716156fcbfd3cf08b860d61eb98735f4abbef7b52ec77dec341ce9cad370ac579e86435294fe828663cc8eca57d3a5ec67032f6e9b76e62e496bba5dc1fa7a473052f3f048477335284bd35301e451975f57c11a2de4bbcf22cb6e4f21853b982391a494768a4553ba093de047a5cf05f55716d4ff9498d4c811ac321288e7c1644e77df530eada999d2b729d08bc43af782a4554e695643e4df34e1e350d201200b863e841556114afa579bf38e3334f6d6819801c51dc09e1ca678cffb92926895b9f4b6fd2045f4014a03a00d7f67b9150f09b61894962e9df32d579bc037b894845bd11e20eec99c43ffc5710607b53ea7bcbb3b4bb1578b6f9ed5dd976c515ee8f529f4168338a913abfc5a3b80eaced2fdd2561c953be14fbba1422b447194363851441fa5e569f5955486bd574ede7df676401901e5a918e3d6b30159827939128afeaab260ba75b2045134bdd36662d30145081c848bb6e892b56e879f6825fe979199e85f32f32f99f997ccfc9f23333d9fcc1cfe1790992250938347669a3e9969089979c39bcf68cb9614f8a7202c123f0bc31e83e486ef5736d87ff78303fb46ca8650fda5aa50329d6bf237f0b981767e520f49999fc0e9a5ace2ef014ad447009a5e8d2184198024e73a7e44d1c4d3699d0d026b06996d90c7205b0f49db5c619fbe75d06e3802f87680805819a870a1a78c35ed04cd36c9d9cf0de8313882ee62ebcc81ef73f971afd4cb0a1219519157fb6aacd46b8290f60b8eebf0665f3e2af5de47f8b9945f4e02fbf6c9fc6a4bbcf01ae11497eef5bb52db60c6e99e693623a57704a07b2ec4f0e5c297576bce2680f8e52d9905adf469906e994a4ee7b48bee92fd456e3d43335aa0193b3e6dadf3d3f6ae745fdfdf84142e56ab46109ebcd3b6180cc5a03aed0f05ce043cf21cd95873fa7ff8dae618a90f37b1badf04cb039469fc761bd8d7f72aee3326ae85a8aa753fd723cb67bd39278eeecf5dd0762551df43020fad18b2090859069de6a6cfc4f8d88d38981ace4b4ecfb5aa7e07d920e1b5d07a05c97f5b7806ba29361951e5d92db5d8cc35f0c58409d0efab4288cf400f7f5ac72ed09f2d26203d7876e60c3f36f2f04ec5ea28c61d6abdded41c44b9d1e44e369b9af41f12d06ee8839b9bec58d142590e7177af7a749b8dd4ec3bcd661baf6bf43aea048db6b382c687252f6d9f6c4edb60a60b8a01b10ad489b581478e03ba6b6942ef4d75e1d4cc7a11ac6434fb819ee12aaa60dfcc786d7fde8cf5edbb3314319079f5ddd7bd8f3da74ff3fb60231a2bd5db79b378dab3ce1ee95736547d3a8026ed511e8ecdd1a1d3310ba5beb9c72257eaf0e8f48ea64834183e6ab634eefaa39b38bcfdc19a99fec8f5ba0dfd30737108b965ef1e327ff4f7f1873ae116bac0d8590c65de07eeed34b88986d152532fde4fa613d1ed8a126a327031e11c6037cbc1286a0c58d171db1cd40f1faa109ac39bf56dbc0f54417956fecd91fa6f8ed47f73a4fe9b23f57f9023b5b3c631a424a99231e1df1ca9e1ff8d1ca94db6f9c64b0aa9f56f0a546eefbf9e023503100a39508dd8219e229fe7402d55fca34e57d3bf5950ffcd82fa6f16d47fb3a0fe9b05f5df2ca8ffa7b2a036364ebff69efbfabcedd6bf4ffa0808265950ed5bce822a290eff4d82fa6f12d47f93a0fe9b04f5df24a8d792a05a62cb49505bacb1f83707eabf3950bd1ca8151027244185ade4df1ca8ff5b73a05a6d1d2541c572fd7f25076afd56987f9d1a26eeff2f19508b4037bf87bd59e4d461f9da33e5176b0f31b459ff32620829cd44f3d50d1d04a8c364a5711a8852481d03099c6efe7963016c4a02d88ea0baaf86f7fd5028eaac4b72e47ac77bb13d357d0c77419362cdb31d243db7834c1710b769d82faba0c0284ffb6b72ced8dc25d3c0c90aad9479a04323ba345347a760bf3c6bee2a03dadb936821075f0a5fe3ffac8960cf2682fe997d7cbb8397e6eac8bb6379d4ac03b82db57d9d959bf6a0306f9abdf6a85a6fa54a2d7c94ca30af0cc8342778448aa348c2ca603833a8c50f31e167382850ce87bf738a38fa0ef9389d380890d438ced8a05e507eb93b951ce28b6e9a16abc8c662ca1b46da7e11e58e4d3e9ab33d0745b6ed7b9336094ab07804239304bbf9c867f128f2c7595fe41bfbbfc0a7333c6919a83c50ab2b1d7f538de07c822b7b0421c41dc3a6b7d7c3e1131df0d870853888951f2c6bbda958b510ae6c95937aac734e118d3055d514246e434af9ed30acce84a4eac330dccf3dc290a41e6198a61e61a8fe3a618838d6911086b9440dbea309355fdb136debeb738504cee98c7af1b80aa6e043cdcc5ef7e815ee0ed0bdca8f6bccf4551dc3861118882b35632fe40ca34cc17eaf216e22ecf93a682f3c344f1328a49b9a56e142330b3b0fd69d337ef4c1f9da98495a06f992357c191124cd11829f772581b931e7ecbd5def8b93c0dc6687c1b218124351041c1c771bd01ed4076dfd0ef597ee0f2f1ee6ad77cf6d6edddd56dcba1bac2a0ec42b66d8d78711b32da7597c21849394be68459f610b65e593c250c0f06e43aee65fe6abf2aaee0ffe79301fa8e324eddbacae3f80ff31bf1f38bcee9b35497679eb7fc00cf02a1f3a1e3350996a1b034a9b2df32ec4adff15d344a180bfde84aa4a4ecc9341789adb43b3197080de09566653d3ecbfe258d6bc6e332ec4ececd24a05f84745297c86a17466389303e5ed1b7b5138067e8bc80fa55948e5697ab36eb82fd69bec4ddd8d41b589de50bfa2af141bf8ac5f1406ed85fd834334fe661b9a046acc2d4de0f57a980d9d8fcea1c79d6c54b19070f2ef159a6f500a000780d17136743ec8bc62ed2a6fff1eeaf7f19b1aafe061150fcf7fb35dab541312fe1c84b38eeef097954aff72fc5b0282b1d921cec98e09fa88dd6088fe2204f787bd343bb183b3fd277fb9aeddab0da0655da48d99239d0a4dfcadd714a15ba3f152e83db14432cf8f2ea18b3f81271a1b70b1125ca17d36e0cd5fb429da2062d79749ab0a3afadd1bae561decea7d07c46deaf40218c82b99b742e054efc86e7c4f21081c3c4f6df0ea88ff6f62f562e6e077e0a326001209aa2a54fb5e794dd8832b433653f38e43296781aa6228fef22975acf132f4cfde7243ad3fd8d913e38a080778ded0e53777f4cdfd67df8c71ae232a13e964880b14f8bf9564fbf14cb48fb8f69f325e85e70d35a437083df9644ffab33de94ff6803e196a112b15af59c3f4c2dc70879670c79aed8a6064f1ff7635a406fb88d85000feba23f58956cca4b8c89fe6e69c232fd301cef3fbc590bb3756eab1b93f8f87d21633efbbb5f2be29fdb3bb6573ca1b0b9a6be6f3bb6b1832f636d7b69aeb36e755eb06d23dd7fa211848fe2dad72e0d489a2cfbb10a44871bbf1679d5d95efcefafa605abbd2574591c174aa5302479fb4ba69c4aaa6ef5bf979fc8cd347f51f5cfda65637bd58f5b46a9ce890bfac767459bd9fdd55ad405775cefaa78cad5b4d3a2061e90eb853eab13571dead0f7993f25bcc02c4653005b64d27673d5413f2f69b057c4d98f795c46b60d31c9801cf0256ea5081cc6f60670bac6d81c22fd04e62b3b8b380ef0feaa2ff85437360766fa98b7bbf81a62db0b4051a7e813e81234c817779dff3bfd06e0ecc9698897285bae03750b705a6b640cd2fd0258c94a62c3c78dff1bf70b2d3cc5da473c9e1e2ac7a749522cb071cbb2509daed8d4def3805b3b507303752bfa94693bdc9bb93f826d6ab5082965ef1433a3248f374fc30601595e8219ebc033f7e056a06999e58347d37fcdb1fee79e3075e1819291e3a9960e5cb049dcc93099ad92fcb0413f22feaff761dd238590d9809a3f07e2d26c2a2e2379f649510bc0398556f08774a12541f2f2bd9c886968f54154f271b51e1120f00957b09ab93e55e3cd559c1203801dc6cd816919074a01f7a13a84d9f0d4b5e45f808a8262a07567bcf48ad121e82d383536e1e1f2e4040cbcd88d8f105957f91c7eb74e431c5463edc80ab2e7f75bd21b55dd40d520c2b43833e534e7277f71ac6a6685db7aa82e7813db92776b982a3c1c874cb2ace57032620f2622d338e204575cd501a32b9d6edd60c559e324b0f1bde9eeb456af6ca815e58a0abff803b0ffb457b6f346bc861ebddfc410cd0e2c8833a6e20be0101c76f57785b636b7e84a8ae0bd234ae02b56495632338aca25fb5e2de2bf5d2df954c55c7e3884f547b539e2cb3dbdfc8098ecacfc36dc947e3ac15184ad28463471f66254558ad45aa263dbba33de28b907c6926fa127965666c15985b3986101a42f517db5bba909c77ab9169e6d1bf8ed7016b132923be3e69d6e0eed0ce9a4243e9c7fe3cf2fb7269d2d14aa7832603c3e77cb4547b35f2500dcb11dd3ae347c6c3c8b9e575533dbd5b455ea72a0bd7a9cd303fb1cab70097bb0368b98f0ce00dec988636bd7dba6466ba1f61d664857ab2c757af37afeaee6b1378960a42619f1fc05defda0194c0de07bcddf760e943ec463c3ef67002eb50880b5b57ebb1a94f3997c1a6e8cc2345f9db28d73607394be1ebd4e8b1dd30458a5e21b6b247d7630a8a9be1f50676c56c4b9136c3b23c60ce71bfcfaa991db29b17db91480ec4eea381a3d83177afd74f6a7ef58ceab1f9c8d7539958d4b623be90611558d345b1d4570d82db60e59fdce555fcc5a6e053b6c70cd6b949756445cd2e82074cca3448c28a569d0afd8d3c288946b6d8570dbcca3668affd2d2604dceea29c941bfaa4d708b3823ca527a467d8841474475982a37a2beeed0ffad78b383786a36ea8d431d8c96e20b067b6768e584dbd484765b4a70c5cbe4ac867a5da2f7643ad6943a93b013e9b057933f347b404fbe5406c67980ee71dbe63a7bf31f87a8660b6e6e6ce8216cfc84b97f27d8e3be511b768c43a0dd9239395a493c10764a8fb4b648898aba7ef3e198a948a2a18363b3f8c6feed4dd69d02def5989295903c290e27196e16de62c930269563e2fe218447a119604545183a9b1bf754cca1a38bec8322938184a2d4e14f4e37e5f730bbd0daadb91df81c9095958c99fea4421b0da16a28733a9241cd45588ded531344cbf84084c729438d54a43d1762835e9f48aba10db6f608cd8bfc2c99afa6f4adfeb5f18d8e3b581d949e2153a9507769d2744c386ff215ca98011cf07377d65c3ee6f7ead750b161ecb85509d553a3a9f4a23f48c67e5c1988dfda4c2af5504469fe623d1c82a55c777cf91937ba2ff23a23d17731ca9fb5fdc18efd7e6af569abfd527f317dbf92bc4a44aa625f8b0a0e89d2df52b435bb608ff19dd1ffffc4f0760d84667449b9d3c10b008a325a06ea86a20b255360a4c10cb3f562a1b6cfe72448a45a76750dd5aa0f46eb8fdcbd160167bd22ec3d5724a4cabb6c36dcde318f26141355a74b7b6438878f2cd77a55af69bcf2a6c0fb67f21f40f69b3306b951a408779fec1dc462a3c9fdb692be2a3d985a10830d23b819116b93f7349fdf3997b54e173019d101de4a3bdc7448e493804a2ad5487670be9dc75aa4f1ff5dea713b512c95d5d1f1b1f23a5e4185d3bba4f6252289f5fc1d009dbb39cb3c98e5dfd1f4548d36ac7dcb7f3047cf2c0673284593eba6c5ca91343a4ff31c5bef30e66697576143f1676f7157084b6ebe41bb824394c1d036e601e1c669472a3a9d966cbb52a248d2ffe3ab3bf1560a7bb14a3693b5e051d1ce3eaf1c20077f78f43ea6ee1859fd725db72c8685ff0458b0a7f6c5961bf8b3610470258146025f1a65a75f8758b2c1aaba09ffadcd506f8d5752db63cfaa31ab735cd1da59d52aa2f51b163e650227310854331b29ee94633dc6c432f69cb32c86ddc84e85b6deb8b45fbd469f50c13a11e0ea9cf7d64a963be66e182151bd34b001b139e0d0968baad3b938f3ef2c899be561b8643ccced0b99b03d9efeffaecbf99d13dabb6c1a92437ed192962586c9d0f9accf10ae4c8872299452ceee8601e83f61747e04ec1f48e4ec2e60cfdd39ab098f1cca7393933241609a481dfc1029f553fbf660bde5dc96af4397ab87b4b4244f36c0cf356448a747275bc8424eda70e344991d3ba1c54d0ecc307420cf29eead4919861f6c4ec48526e673961abe5803de0cfdece272340f708ae7af6765aaa7b3a7b3b41dd988942f7ecf57a62519c14b0c1831fe5418be5dea433bac06199268fb71fdb7a0970dd2d61ccfd4d78cf61c53fda84ac59d36ad60b78bb67acff5906ed63f95b87afac7cafd598b037973ce15983b31adc6d1a5ca171a21988befc5ea64ed783073562e6ab11bd554a5f03782f1a2045eba05ca60e17772673db4ae8e5d16b21613e3ab73c71fb5d8aa211fab1f526ec0e3aedb1cd486a7884cd47a61775ce2c46324a644b97c0e71dce62655abc53e1ddd516c1a9246f7e1ff0ab32369ce8974dee3ef9263a55983c64be3e08b6f4c1ecce2bbea74d6fc0d9242855869b0f86a44bd44480512b3526ff87c6e823b2bb0a0af07d53be810fd05e16004c269de897eabe7a753f2036bc130b1249b7d6ef3f5211d2dc159c92641f74e5483c2af5966c794bb32d873c7375ae8d0046a6af19abf25b7cd7ec5b042257b53746fc95df3623979fa8d165c543e8921aef8ed7ba5634ec88b53a7d3a93ae242b58b56a7e56de0e3ab2a7a6fe41f958c5ab405230cac658377cb034b59237ae61431dad2a5dfc7e50e1165c08d873e084564e845fcb88bfda4427efb1d92a136d39fde3706339797d1aa612cbcb3f60c7e5c0ecefb13adbdeb5d83b0c0c9decfdba83d3519840b03cf32907780152ac8fc7154d4b3fa108c8eaf5cdedafacca0e3d7d520beb66d0408bc926720b3fc58f997b18325fbb2c86eee4f5b8616e807d82663d40b2e90ee8f90a294dc4a15b9e8fe9c94b9c5f3f788179f9a41b5efd59859c51bd8d304de0c2bfc8c9e7dfa1a504459deef35855cf2877e362f2f3cad5c9df4b446d4020e655be5e73687bdb60ec5b05078aea427fd5c1fff5df11f1d6ea56570b6d8fcb9475ab330d5d252a354e2cebf8d536858bc0d5e26ac48baae7aff61e852e6ada7596bb7e50ec07ce48b56bf3e66df699f82e6bc85a553f9069e4a541210ff41fbb26ac6b772ae418dbea65b7d0fea7b4d2eda0560c99e6752811eb38591205f89aa50330a1ed6278566ba7cf6b35e9bfafb53fb12a14eea8e5654d5e743946f869cab7e8a4010e6ad50dc50239566b2cbb2c7386fb8fb90accca091e968dbe1fdf1bd7363c8ee2cc83104fac2cb06cd257c33468b6acf157ab0360b1e6358d6ad5648ad1c90665139c55734c816bf53b152b3d369d8a55f895b9197116fbc06febfc1e7f56d183081fa57e5bf6b6064b61cf7d3552d12138d21ffaf3da3ddcb5ec51777708d6d0bed9235c03eed71eaaf43a453be2f89ec7476bb15da30aac089f29a5963fd82185f2ea3cb0c045b2c103b53aa2588ddb7a99d958d7634ff0ed1ebc1c3382eb2d4e50a0ee40e10b26fcea04703879d0abfdae7cff1c6ba5482214c7a8f6b9d851e7f0fffd3371e2aa123052489675da7d024bac315f90f63c58e27a02b43c25d7fecb83286eff72d6f166caa2013b2034bc9cec9b3b6b0f2fa31a0b31f953a9572e556672ba8b813badbbc805c76ee5030f396ae4332a66f6f1711a4bc015adba8f9ef743d7cb843e7fe38e3ca8904ddbabbfcc70d77f85f062bf996b7df8396c3619fdfc37d937813adf7e939dde08907405868747a79cffc1dbccc5e7f2bc8a3427d0481f2e83616dbf4b168d7ea03c1cdec14be4587b74972c5046e1f99f638476087952a8170fd828a14d3d677bf066aefbed03b51079c5dadfa826718855bde681277c76d6b0247ee3e965228bbeed1ea9efe6e08c7a61e351c093772726b99464fccbaddf637bfddf91a3285d7d5f7cdb924becc209a41e94fe6a4399e3586b46368ef174acd673ce809023fb02cd63c8cceb1e9ec7c7819ad1aa6db5eaf590f274c279119e1d2ea3f6ea12ccec5eeda9127075e802bf6fbd24063b96b68e5c61f74aa5862e69cb92039622f5caee4f2ff8d92ded45684fb83e256fd16a0db68e518c480541a1d5ef90b99563b4ef4143d9c969e267ea61aa822c1f755ebcc1cd45020bc744392de458c5aafd1dc20391c179a00e2da8d75b3169b9b815c0c5f61b1b96ff4f5851c66e3fcf8e03d9d0089e34c593a4e7e1621adfbd28837c3e9b0c08a9bd3806b3cf7f57fe70672467edebf637f7a88b649c3ddef2c77bc263eefe222343abce7b06517e8015e5c9396e063777ea4535a178de2ecdf5836cab8ba53e9fb5fc2f87bf592248567be5056d6cadf8e162cd1bcef4444737772ae63db495257c76593bc7ea49b531df9d16310e98f0c3c13a307eb9925c2ab47980b383879e3a2d62f6e758200df541042cca3575b09b681fd8ef565ae6be5b9588541d81749a501ab05ead410a44b9ede88710d216624038036f11d4ab24aeef02da09f549e06fd415c368b317b72d30996b5cfc496b48c7a6f5587a9c2e387ac1124971a4ab579275871795dcdb3b15d15b9b9d723271c18f6d983f26684befeff9077f3fba3fbd34c753afc4abfbf3defdf974b5def5a4c9cf573ff772f5cfe72b4fab5dafe2668adbd0fcc82aa1dfa4f7a7f552acb6bc1f93b61d44581edadbd5014f7f6106dfcf6a5284721f8248f1e3369dd8df464ba0e96793d86da40e93c7b544289e7aef2a13a68773120613ecfa0544c3c5d2a39673b0160bfc6f98189b6fa5f19bcda64772c493303befaa76642ce60a868a458b29ce1a3b356d1aa17812a8364281cdbbe604fe014abbe27d3d015d2594274f8c6d60e1610726632f1b0b6d6bf3bc32b0ad2fbb31653762f96712c9009b12a5f4a0d91c141b4a1313ea3244125649b5a2d5be0d36bfe0a805ed6ce8649f4eca246fd764f0eab6158a7f5f08cf67738806d24b02de21d4c002b9e297a133a248aa18f3f2152fefd4591e998b970f9fd7d4ec0a67fa4a1f2227be1e12bc4a9e3f2afba2a42366e30e545f0a610ce35283ae64a8de853d92098233482b1b3a6360a5f0ec452be453f6e721144e9711aaedf8178a43b7175271bfb3d16755ed20ec4726015b06c5d5e7d331cf3df5c4bd6cc8597724eeba2f6a8e2c5762dc6082b74f3831271f0ba4c4bea904ea51e55d8039ba466a97ebb876e1cdcfc46852f3d8a2192eb439528a4e9bde256eb3474e063af9a6dae4a9f70b72c29524fde937514b0d543bf0a583e41bb307c8f3752f1f5f31bb3ddf0416b91da96e2e496b240cf30f043479725681062b335ef2dc06960ed360cf93540b0efc8761e3c3853e7663ff0a23829a69c15cfb40ef559bb3f774708afb1cdc74bde0439863ab788f652f48bc1296964c3b91611ad97f69e55da1f3e3f0e641fdf4f400a6e29399956fe02734c1de39c078d78d44af02f01b4f66b8a339534457e45e4579d0a15f3174cd72c5107a026a9bf97628918d87c0f6c5b6efa11de48c8f43b3c73ae916307cab3a5f66c58fd2e35902f78a41e93187489ef5cb6db00c503d6b99d3f225fdc006e989ecbb9f4c88babdc08be0431eed91cae072f41dfaa53e3bdc4cb77e2e809be500d9f64948da690a9db5ce4350733820e7fa5addb959b874ea1fd56943d339e078e7c5162a3bb6196c21fef869f762dbed4583038bd67e63bb284589d3ece3d5cecdfcddb15b4a8b7e8c5565e785973af600e67f759bf9fd3ad340cae2b4c4b17b0140edbd3895a00b6694b32272568086fc28cc694940ee0f359895a69a911f144a14a0d1e99135df79ddbaf3856a82587ab6e6e4176a4aa59473c41579486d35bbb147e85ae9e0663dd04db884e57fde44aa45c70ed9348f12249e135b9c3054fa559d3142622ece281d070ca6fb3ae93a68c93bcf58a503d40ef35b733db222fe8ce1a25bc816fd232b7a7a47e068f63cbe3d5aa87690dedb4cc2c47d89103513da31cfaa4a68a01f2a5b73e3660063045c79506db06959e2696b2bc2645053b88a2461ae30b9fd81d78cec6916d48930d5dab12b5da5a8507725718b4483f6d52f69ff4bedfdd069795bfba17b93b4cd82ea718f705bc7809d3277604e6bed9291836a6dcd95cb26b71edfa5089b5e21cef6d9a7e70b00b22a3fddf6af32cb35390592b138e6fe2e09da3e502b546aed398e2261d7d523d3d01c1046777d21cdcc1a3e1e698bf1adfcbbd49bb4858bfadd1ebdacc5b6920d7d33c2d36d8bf14a794b2caea39bbb725b8796e794ab9ce0b9b975915e242a18585df3ad277676d49e62767336dcfc38e274a1645e29b5504f02c7992cb183bfda99a6103dadb219cb0582e513187a0163c516462e97bd004a08125ca05009d116194c31457b7ce1d6cea9d55876f0ea94312b21e7645d1920e93074ab6b52abda70b619b2ab12a2a0ce88868ab6e7f6d948c18f3056d047e720a72f76f22714170e39289339835a967838b20ac767e5f98e2fda23778c2ed770d98dceb3026780ac398cbd55174b8068b3743d2c4d8a636464bd3779c9d59890ac50206b136458e371da66a50c1e73ba9ec80fd5c427ee2767a8f50ee7e3e59ff790d20c193554a60222f75328826c040418a5d3269b25c299f86efb24db94e36e28b5ea46fe6cf5400cf798a93e62a422193971ab09e56c571357421e1b6ea04ff7c00bc4bf69d90fd01e3976a73d2cd9887e5c32d0f0b48c98a8d032f602bf6738367500f0d75319e33eb0eb1182b76851a87dd8550bf8ca4b0dde5b4dbcdde26d86b703beb324a6778d6d0ecb74c0cc3b03cab282399dc4473034c0a06e0b8656965eb23a124f7668bd28a8f70844c3710b384707792250a85bc3e9c0f986bb72b43ad2143993fb032f36388eb050252690a1d04c0ae4e236d9ab3d4744d23bf0f248c847bba3d5b433828ad331938c7f7e95d8006208f8c3ee38ec68865536395d11f6cab37b463bd014f679c421281a0ddbd0a057082de09a3bf6c06b251e28378f6aa0d2fe3fc8c44a449cb23164384b17b3f5727e0eade4c177363c8e3a65d23f170f6523bcf571d3c9cb5a1a3073c9ab357079515234b3a6e12da13959a5707d872ea353f5dcb43c48c945bc03aa8da7537b0755577cd4a66b176056f5aa5a6a7f50a2e24a94243d28bf10c74c68d2bd631352e062d87f2ff54255a9698fd922a95d7ae8bc0ce149f9f70f24343c91f32593b3da2af28b11da7bc5af26ebc86366013f245af8698922901960dcf06ceec1d011a827835aeb8536bdcc4a1dc10941c8b49240617574fc8e128c05cc2155d681d3e6f4f72c3b2c0fde70d2abb3be39c0ede36053475c2b1acbb1f5364b1ddb5f5b0f7ebab1ec832722f3085fb0d52a56fbae4d318cedba13140bdbf71b91b3822dbc8c6a92eb7a8e675556dcfbf9bc376c0acb00815bb13d6691f0b4c86356420b9b64b5c1039021ab298621ed1e9c92d87a76415943c3d4aac71afcc51b6b1cde78b6686f5479c0d9ad9d29c8fe7cf3202009ae80e682276bb20b3cf3ebaa5466cb4ef7b9f9ef2fc58a8ee5ad5b942a1bbf911f64f14d722fff5073d600150cb083894e4652ae46246bf18da00f591e7ca0fa7f127d54df568e24237da48ebfd3605bebff3b264fb091351cccddc44b079ebecbadadd6c1fadd4e631a5411cea382db2c49f8229b602f2f0e03762c808d2e451c9f843534a835a37b1cfcd1118735e97aac6ce768917010ad58225a5a72a1558a1f5d949d74471c2196a9207399c7777b6d52454351a6f0b0ffabfcca6c10f9eea68d0b7acaac925c9230cb1c13de7829a8d88cf52abd5bbf70cac831b54f182e2785cffa1b32cd6af7c91593f7869b72957599a3cb9032cf7481d889095c39db81edb199a705c2b414086495a2cbebb3fab33df76e8b7233a606d3c01b7fa46a8977112eba3e8b40f1964384b3915bfedd5217186b5b58ddf681a9788e2bdd906882669dc08302619677f988f1b0b99b444cd14e13b1ca7668273b306bb1403bc71303224ff89d7509f2a58ee09f6698fc6597e5e3ee81819435e4854cf0bee872ff9223ac0c04d9580f61e02ef3423976f9beef740684eb3c321f9794d9181ad8b6c912e3cfcb573ba42c5c6e78891ad437adfa2709dac0caa7e3dab38054b0bbdabdd80b0dd8c7f50b357ef29b3b620d28ab36957f98887fd2f3051a9a5de4abb46e16b46215d64b20ac3acbf8390c0d3d7488f5f639b28148c81bc4d6e8c3443f419e4a99de4305cf2159cdd232d73649060e558515392b324d06168515aadf60c38f2d03994c59fd3c6b871e0bd7c34e97b7e8051018004dceda83ab554209af0529584866e1dbc57709b75cc1b9abe2b7fb08ff9e4fd94ab840b3159842ab09909bd3b0f4d9e59409d6e6087f436cf3d991a31bf0e24ff0d41c8247f5a028f2cdf4006933f1106dc84caab26420d172ef5497eff8ad3e3b1e9cab6975b6047369cfad527a566429ad9b221b7c3211ca2c7c8edf9f75139418e4a1fc3611cf1fcc0ee644e65a0014dedbd0be35c37f391bf92ba7e3be3523275accc368ca0960567add458ee924c6dac6e76255ca6d77698337efa18c6db9fbc2e53fd9c2c8b80bffd9a9ad0179fd0f2fc41e5eb5c1100917714b3e8c9757a5526b805866e9e5dd78f9b67ca3b238eedefa57e8f9dbf9bd9aa701c9e63bac497f32a4f3d59b18c278846e602fabdf2be93befe1b7692845f185798cb1a70d83a872e7c5a15d020b3503d24822d11663b7a0003a54ac97a3849fdd8d6fde8458a342be287dea1d7eadf8ca49fa8d7db04460664fd55183c2eb1fd2f0502dab9e25b329e48cb4e9088748c55a180d969675173b84b8e955909c00ff9b7e46d0fa2a35af3185da533019b1abac7a1e93b7c634a6d57f780365b8d6ae2b1fb42a32bbf5a87de15ba03ba9ee119a651d7894ba2168969465847a03f10893d0e69a5455a190e9b5aae6293934a26a2709056aa329ce246d9a89130525420a5b5d58725e5e7b8df338767aa5dfca17869cbe065aef624d3b2093df49e5934e05eb8ea85452981f7740f9be71b08063844864cfaa12aae929a2c396da2d3156da3c02cf2ac9f00949cb016a1740b03da9a1ea21a810d0804c0d9a75b6c5b5ea9c0c73ed6e5f9a8a4620eb4a51b31bb4ae038e75c2adeb2f8b5e705e98345014dc1c77ed0a655ab86bb13f3676289168bc3023a9a1ae29362d3267d7fdbdfba192f18ada4c238eebab551a89518943bb3e3a941f3f06e72ef69907bc32b29048a066c72c43f39330bb0392e82a72ff1811e08777032f31a148c1b49ab8f97d37372098f5f50906a813c76ec364e1e9e61471ee489c014336ee9c505716f1985bd08a5521bb8c3787645f179e226199a581ee35a788bc955c972e99dbd06028ea28bd8288303ff8b73c5087eb99c0d7033550c9d21237b8e717d896f269296f4a1205ea7b68c206ce878c7c0d46d51546f3a13728d34dd25f9db5bcea7bf8c01a5ade657c5b4e90984e0a274367b867eab6849582b536557c6c821e6da6e5bb635e1b9c6b4edbedd1afeb8bef641ff6209b9c7ae8d183dc9bc7ded01db86c2a77d5dfdf6456a8277a361b58ed88956565c7754bdc6a817d99a38adb4503ea6ff5a70b5166f688df92ec9d0c8bb2a1785ae68b20fa28d7261a18aa0cfa0c6a2c5f0f3fe99654953d3fc7522e36013595b618b5811172bff6762c48e364775a5892d6fd7e19b27144bd24b9f5519b9d15b3988734be0e545fe69e726c951350edae972385630e06552bfd6552c437f7aaafd582b49b3dad26507372b1ae5608de5dc0ef6887d3ba4f02a2fcd483031df5c9204a395b3c6bd67d10b41e79e8b379724bc576b0e216944c3c2cd94816abd821c6e71ee47d0b1a94e3ffed24c0fa8488a31b22aeee58e683399a252848a3c1f77877c5f2be50965683639bf6b0a4c0374d6ee5202b359d407f49dafd021c3f2696c5809ca161cb22b6db372cc72247a71aad2104d3d03141f8f3cdb744b4719e268f1e23667d6fb1c3ff9645f48efb8358b0d615ee64935a19d8d67e8513d454da6a1ac1a0e47dcf8055eb70b3756422f9102f412a25e8f13bc1851cf92cfd3f17320dfb6393c8543198694d5f88992fd2c2b90cda9b0e8487bb3342c32d0e6e8d0569d167893ea9d9635d6d25e389163d95e893ba94341436bd0a20f6cd99479ddba9273f6fc1678211bb17896d89e0abb4afd3165f128c82183b89bb0994d4dcf00845cf3bff09e2aa4f76861841f0d863f966d89173fcdf45f7a0ec72fb14b2d41abe9e08dd33e5780a72393259c77449bca5bce693ccac2611fa0db58d5451f3b3db9f26b7aceeeab10d763af7ef16cfea37740fb83d30596401e499beb54f1ecd447cb3c692c8be8cbdbfef05652421f1efe481a470311d1da8c51c5cf89c851ebfb06b2984128cfb392651d57411bbe184b3d54720fa4e113b537282a0c494f55935d67c2d48d15e9d1912866cc5aa0bda02d359b68e052e5ee812b809e8fa052ee6ec64a6d8b0162f6a11a8d98ee9d774c7cdadba3cccd52a14a6a80936e4c45bae014bd54feeb9f92810bcdcf1f92ab481c9d506642bab0d9c53fab63a388722274bb6a32e7eb2f621f66ed5259c6c6526f832b870c93adeba1630a305eb1e678c2c6e6d02f62de868e2a80ba0eae9b2a4b8875acd32cfcfa1b68a3d04291dbd5dd58faf40de726087c4575c7ce668b85cb3df63c080bc6a278c716842117e9c0c083085184de500f85b30f2d5dd79787c432f4e67c913aa4d36c96dc581fbac96794f69ccd80436e12fe2c3bdfd90722ff4f7a6d21eba95ed09b20a3652d6f5566f8387876de8eefcec9b23752b8e0bb3e4ff56bf339b39560379b43c32b0325fb14f416313737e02b7854f95488c44235cff4845c9284c58c3ea150483ed05173e2627e8ed12a4aaa3f59861037846bca22d861d623c32cf9097430188999d43bedeb57993b412a602bb34748c00807a78c41d0c81744ad3c087646d8146ebd5cf70fab139a9e533ddac78626a0baa8ef6de4762d80662e7544b2a8b3d4ef31ca1da56d8943330f0534069d70da6f1291cfacdef378bb95af4989eae928117ae70e9d5b591126c36fac8174d10b8b75a0fc54935c1100b740808e21c0a205e975a7f74010f21da04c81d05875709b4b31df801e16d370b2ceba1542b6335650a67d82992e9f99fa30114fd911b022f3690e1b0744b7c3d8286993bf9b2c782d93c5511d0e0079bc21b2b7632f4285bee4db8694e1660df1820180f2ceb8d01abc2a442ed9bf3ffaa7f63469e01898609dcc1c1a08b7b604222d93e209cbb1fdaa5f68d9b9d2c067c39b7a74c596b9521e21e575c8db1aa0724c286aa16909bd71ddcbe9ecc9b897d53faca21507389ef849d54cb032f6939e40f3307afde26dc3798d7ebfa647a3af0a874af155e6fe65d45a5bdfca2c4c67cd63635e64ff29b94fc60a263333e76ca6d88688e5403cff608d66a7c9f2655666deb7516117b48b9d627977190bd2d922b6e102bc5f0d01126de1301f7f0c8cc97c30bc73d88e8d8c67423660372e4634eabf5135a23d04e305ca73e0bc9b6a6b90f7274a315d3109aec887eec87b64a848fc5aa37f2cfe6ea00ccecf34798d91acc986bc85f798fff2f7a027a393bee3bc811bdbfdc91597507ce9d48c94d439109b76472871297459953efca9db55ec4e70cc52265e1b3b765d6aa3d28ddde2d10ccfa9ccf4d01c5d76e3d240e97beb85fbb3cb925a2153b4ed5f4efeeca53ad56b3d8e7362a507273ca2a908cd6a0eca10159375415ac445798f425b95760a113f97f32940b119b6f0a7ab8587a12cb1296a0d9ecf69fe9f1f7f0192b36a2952973fa07784f1df731fac59b4c8cf92cb021a279635d2ec4355b81b3ec1cf199e65e1cb379b3555bda69ae5afb928f97f56d0444e8c5f3855a07aaf6c5bf7a257e9344e70604c2dba655490e71af6235590e3c316735e3c1cf29e348a44e29541f1570ba1cae8693561cb4d3ebeca3f3cdd91b924b82a4a069a2a5d31f8c9ec6452cfe593e9d045122eab6b2314423526699878d341633b66bb701a8518a11704aa29f255e783214cebd216efa86616827b7ce81b2012e892e3d697c3a74ab599bf38736387c54f0b7521f663d2e3fefc14384b035671dbd2844722d1afdcdff6c6d6e491d7729a2685263550d54f2c2e0ad27b714c0d02deb1eccfb9846ee2327fc986c99dcb16c1a79de2f6482a4890855efdd29b8904600ba325ea8063040a79f5c8efce8992ae4d0ac9f9500aa9882d2ccbda02240728ea7fcff57f3dbaf177f5a4fbca373be81367f1ab275673af065ffc3cd4ea566e5b23cf2cddf0d086fb7383576ee56d02cf46008db5491838a58fbc5862f9023e80f234b3af0b8ecd8485e68ecb41cb8292e7cefe109920cc9fdc79e39ac53f6ad5a247221ff1acb25b8fc3afd91385c4966a14746036ad5ed739906fd1fc3ad15619460919c56bca4790b52216a866a167240e4743f8d6ec6ea372f428eaa567c9871b5e4f9a1d4f78f2c922119c43faef8fb752ba865d5779558c6c33de90d54677acbf62804ee3a5fd80715ab5deab16755ffc068f20925cafce40533c11658f21d8c73b05930d8f138016e6bc9aa89532770e7beceb8c8bdd0953715ab0ded8239b9c42c7fa8edd26aa9ee54b2b28a887b752f7cdcbdb2598fc6aab51cd8600b0f22bebcaa27f7e75855fba699f4d534fa683a0c3344a83690e318a530b5812022845eab8f78ccc993bb327a80d949a246f3fb09110f43bbadcff4c7359869d2d5c54ba865a4c439f3b16af84a014d4a01a2bd159153598333c11d5cc3e7ebcb01dd936b24f7e34bed80d4997ca9690943cdf1904853b7467c25c4d7237a583cbaaeedfa9c65a2e6c25ff6821e62814a84c2d62634d4a61fec3296c98fae74eb6ae9c8fbbdeff2ef0398a1fd8c0c48ed6076ba967570e3d0b199cef8878061087f02d8dea2617e4d6e55f377b9ad4255493edf01bb6f7607304be5310f5ba0fc73c92e9eb305e30876ed7c876458fcf325d557174e8c73e70bdd1356feda3e9b34ac11b308c82127a01f03d59a3373534dc19e848e1535c4e73ce6e57a51b611f6faa1c3313269efa30802cb4d0247f5c17f4930e4c4ba43808c5616c4df8cfec3261eae35715ed26ba4dc3a35f18c26e2ffb089887ccd89a7ddb14fe46967f646efabdd5f915a076a9f0c816c34dbed2417e607dbadfa50da6e87d4db6ecb3a5418f8dffc260ea3004878819893dd35b7bba5d085b1d53bdae71396a8e7b581e7bd2eadeca6864541d2f11af8ccae7614021adebc71f9b531217843ba765b7bc87ed8f5fd157f2dc11cf6c0f6f657ac3bafd705b42b5e6f6ef6b9ae7014b6c1d0f9594b6b0351ac4b884be742a7d4e270bdcbd726e8c953b3adebbce560cf06995aef34292ae6de00efcffa37bee8daae3f444c4000843a23ce524a773e9cdadb72ef22ee6a5fee96330d32617e54cdb7ec64037755d7579e5458ed72db72d1fc70a08b67fbc0210536c054e450a14e271c4c5cd5677c7befa73ee4aad20e3f6c24b2de857c5b14f855252c78d80f1a105419afec775a6c4bbc1c73cfc4743e9c2d19c53020b1e1fe874362e7ac0994175bf8ff0bb05fd079ce66c0f3b73af0d916abf5e230a0189dc9bb37f63d6ec264727b73a71e4856fea232a82b9299b77ab5c5d04d4421d7f8d2cf807d14818986c1ddf0aec37d80eb5076489fc30eee6ae6ca080f81dc506e3f7984ec375534106a75a2d5836a66365ac5580d5cd6cb1742c7bc0a89db65c34f49dc6a125c32554b1093ffd9d59881372a5fbce7572468fd8a9509d39566251ab005653e49341f920defc1e38a2a48e1f1e836e525f3f4c466cd14f55b275ec6ee12c02b765d5d565993d76e5c637096c85796762e2ab1f5cfb149742f4986ccebd50cb765beb5b99ac2f9934ae6209b4ab1eafc54d94e3b36da70459f2ef93ef8f85acb482b022166038f825a995057268cae863fd1d89a4851ed88b148469903437b782d8f0512b1ded9204fa7d9f58ba0b16027b48c8dc17c39cc869c96d6e13dceaba51df6bd5e1723a7da5c1ccbd6c7a9a1fa66b7d93ce4d72589b3eddae8fd374ec67a1b7eb6bb21979552974fd9f170f6dd6d6fb6d01ef9c9eec40117f648ccb6f00a9e1d0d6a6fc9ef11fcb83bc6360b886ab70fdaeee9c89a6376d8d9e6d4dc7db865cd5b026a9cdc198b3d71c2b5191b71b75a163a1adf4b9f32fbffeec39378def4278d98fd73bd91cf8cc4508decd1d0a17a5d426a1db4434234721bd92652dd5b9fdfc9af31845a1d57c24e301f5c5b78aebc0dab01d4d074d73f2866979bb106806b373f9a38d36ac7656926b78511f6b1a46461666274e516461a7a196cecf8bcb4e9d2f8bf9bebeb22e1fc58a9c9a0cf5c4732d87a991b268303f7a89ffb19f9b7700de9a2a8540117134bfc8164d06d983f8a6da0127881ddbcaa37b5cf07022a0c55fafc2975ccd7d7a823d4023d6867f3d30714f1f182203a5b76d6e4fb7b83193204e6c52338dbe610d9c549cbd9f400a3cbc37f93714e3d9185f886320fada1e4fd941056201740fc158cd616b75d7a1c5eaffb62eefc8aaf7c24fc8e67077e120ff39dc404b9f37ce834e533e58f1cd7e04def91ef5c2e2c5059dc5e00f32ccf0baf41ad2350c42bc54576b18acbda5a50d4aec38faa418b7e1048785a783abc94f9c07d03972cf9802d9869ed7799cbd9cf018058b096b1685a1a82edb47fa6cdf04b77d4074bc3828180d68e9774415b545fbd79097d79329c05b31fe7ccdab2eb455ce82284567e44d81450dd74ce9b747604e61a9516293f67ec0d678fb8a8bc99c3047c5679968682b336accbf5cab32d73ca293c15dc9707ce6674ffc177997024782e55fbfb80b9d783f8d00c3fed6f031c14e3e8b5ca006bd99cd53b9f24a9c72879572fbff85eb99fee7b7c7f16704bd99dd53b9f1aa9c7407badd6072f2a87992f228258618efa801f157948fb053f26a8c17970f0634a7d09d5e2e9131e689942618d73564b906f67f3e4be0d3f31443bab7e771dc09b23e3a292cb3a357e337bbaa8436ac950f1b57b0784f19dd9fc08322d649ca8d73d8a99495e60922d8d2822b9a022752c22ce2a601a69c7a5206f6fce13e6415472f47b441802f36716abca90885f959df87c02fb0ab1d8de86ca7d37bd72d04b5269a1532c72b9c8140dd68f9f5f36e7f039c0e3f872d33b2da46a2d58b80fae4e0159924195b475f3401d65aec7ea5e753756e27db012ef8b7a524d976e3d54ebf5e73abdddc37fc988f0df1105b26e7805cc2b06818eaf66a82efc9731336ca22ccd64fd298121d091bd3e736d48e9d35c9f95cd28ddf1d955ddc05bb9372eb5123edb9c2332c68982751c1fd464a31dafd5ae7caecf5f3d5d2e0612397e2c75d6ae4b9d3d7045fdc3b5cb4bab166c6133ac40fafa110ba754ab853bb3169c615a7454a4f1cdb30ad924c997fb62c376d0234e523765722c8752fc563a20df6ddc79e25f233e3a1d5090d38177bac07837c867df42fd6e1aba39a6920704bde1d91718fb467b310fcd2bebab9580539a2f42760fe805d65d9122f220e6ee7fdc5e2d10897d41517d8fdf294abfd54b2db69feba5aa954f94147d6697e034dde7b8220b0e3036815b6b326383fc545cb2ae286b43bacbe810ff934d915d6e8ad69e32b486a3b4c6b2ca1279c993555cd63b580bf1b1ca2e3d7e8d188ef0349029f291a72cf78169b96a55d074d5d2301137959d8deb15cf5b6281544d127577b61d125737a1df076096c58e526b79facedd75ebe73f23754d88215fad68a7550d5c7799a50cd5b2e7b194bbf9ad8fe1a18424e09825b660036dafda6cf42b3a00c9ca7b28c45707ee63b188ae701f8d7c6049210530cc060e78d06f95e9a4f5f1a3483008ccc4ae0d5d662ba6bfdf446ae8c792b46c7d687b2633c02316219f25b036ca74a6b188025aad323efc05f16cb7cacbbf81e61f548c8052dca959ea0c6a77b273a7b0aacde097261173f608c1b94b3d5ba056eb1693b835385379bd6c32a7b8e20cc66a0b4e324f455032efa75aed3376c69d01b4524380ad7d1a023240a029c6c040d1c29ecc82a73492a9848b64b9b667dfc4aab180d3b4f573f9ffb1f766dd6de3cadaf00f92d6d23c5d821045518aa2388ae3b8efdc4e42cd12274dbffe5ba87a3050929df4debdfbecf39df7268e4810048142a1c6a71ec57ceddb24d22832c12a474f51d19a9db1237e4d4414048f2ad2927e12ddb2ac54d922eb0d58348ca5e18b3678febacdd9240610a4e1116c7601e3690c7fdb803f6001a024360bdcbe73bee364fb16dec9181cbe8830c9db36caeae39d8c3f155ce14f05d45e9f56525cb034672d9dff50d316fb968ea2c888fd52a386762b4e5da85e457bc49c8b155cacee9172167985147869d7b4e358b5c0c5191bd6b9aebbd32f9e638b33462cd71073c7b044564137e6496d69711cc369e13d630c05665f1dbbc7eeba2a87b91f5a0387114c206ae5c533ae070ba77a7bc9ebe2973e3955ab67212b9ebe503db0e49459d9bbeea5fca3a6992e33d686a72fd40f6c233ad887a21b819da5dfc479e445c8b96c90e368d3f6c4b13930613953d14b0caae2549f9ae5995879a2db018a349dd0bf7023ac77d211de32c4c81b4180522a76c4b3be88cd01824cf57d6582bfbfe121e5b1eb919471fb44cf1367725077bdc2843f898e47e51a9c50efa8c3acbed7090aa1de38880704dd409cee12d0d98233f3b8e2c28d076442b8cd94868866e7150af89db661792cce9e28c1287a5e0e3881e65ca819d3adb9eb2444ad37605d5b47ae57ad01f5c5f18e70fb40f0b2e65b29aaad41792a2e1a0f7409805a1d7bb4c499b70188ddbadbb7e17e2bc49ee1a0b94d91f51dc361b3e9138fe5c625edc0454cb55a12b579db9076d7cbfedd5eaa736e47e5481931972b09c01c79757f47192984e9f1d1405494f6c83755135b8b192335870ed45a399ef725a49de88bf984571cf8be685126e06ec328592403eca97c621a88a62dbb3973c3300ff038476efe700b0e14aed9e98b0500134e2beff7f389d5f1db06684b564215c70a077a5e2a03934162eb5a9234def2cba9c711d434aea44f71cdd985e583f4c27b0bc2f2695fbc3c1fb3f77dcff07bcc17d5f029c5a16d624645d76b72b25777c5d1fb19c578fa3d6fb9f60ae92f34ef9b6edf2dbd640a41b506ba26774091ec3ad7e507a095c92cb1308661fd98498b29a10e7bcc90fa49dc2f36f5c51ab935fa23343d7168ddb690ffb1dafa0e17befac0568fede6359c28554477f672df72104acf900d6fc15b26e917de991df9c43d3a296d8bfe1bef518d43638e41c16cb31b9c41b83dab83fe34489e1810613360234af12b1bcf371342b5460ebe0d3bfe66456b3358b58e2732adcae9dbdf3711fea792f7165e0192f435ac4f9b0f93c4c9847c1013d169f70b1f5098e2fce826915ee262eae76ec33ba6ef40e0336d7474d24d8f25f51690f19a35267dbd69f14d9a3ff6f46354af223479576ac7cc4c9421c48556af486c75e22f3ecc82fa6eb7346058e05ee95ea6d8a2af66a925451dd6140d11c0f2543ad0cb4410ad1367fb67abbefa3f98f9a9b80fd516440e21849c56cb0967d547696bcda2fd06a95188f032684e79cdd3d001526cce9e1600a4e86c1118e306de5d1b029b7015f6a2516174269d0dafd5db9613df84d9f18617e1f0d91f8a3e0f7d0c65e85fb7d7c7d1b5dd4a8fcbe528bff3feb78e2d8d5ffd463b3ebe7ce32486774f3bf6ac91d118480f1cedd0b9a2ac26286b7fc78061cdb45b4082e8affa0df3ecd39bc63d7d762e677746c2e6483b1e6dd8ed6004861735b978e325ef17d67fd7555c2f14d9aeb86ee70ae78a2ec9023fbcfb9c394dae1f3ee2e1795d354e177dd183cff79bd2d294162287d5990e15bbd94fa70a258dc43a4af7ce8e7ad1e74c06d3c2d5f7b2b1a6b1295277146b284da5beae77c555e2e84c323bcdf44ec3a45f3769da43428a656ff046a3be0dc25cf6fcbb8ddac00de273f18d46d13eb04c21a90def363aea1ac984e0b6bdff6d4d64922aea0f28898412f24a03ae4356b93ab5f3ca90fdb1a755b1bf768fa589f38458d4c999ca07a59494d4526d4a523cbdb5eeb977bbf0f30e4ab55cadb84ee5d59cdc508293a7fa1ed7b8968d34d753729cd2b4da5254d0f59d911eef8c54881c8edd7d493ff828aa1e898abe580ed5321c436d9ddda35a2409b759cc3bb77204086927204fbcb60cf551e64a4b274f42fec8605029c77db99c0f7ef2bba5f32f8b9fd5fd88074dd22d94a5d3c2c9418cc1f174e0030f013f343b845da959636f1e12d9dd27da7b1e50676ff23c85e8e2476fef200b95f0a3e2b68c80cc3e8f9d960bfc58c64ecb157eacdd8b1bfcd8ba1777f8b1b717eb9e68ee39418d8d979183389c478c6ec44606d4e2396dd949c232db8ca8fb4b792c76141c71f0fddc81c75f78bbadc624571d4fb65e8e44c6cb8ee3764b7b939ac884f314a710ec5e85d8796d5d26d91762d6dadada5bec3f0f0e3013ea0af18a321bfd74ac3a5f783a0486ea632cbdd60ac1a6a1900f0d1dfbf44a408d53251f1f62ffeac19527e4d7c3b97fd5b4669ba631f1baa7a36e3415e2b5830daf87958eb90afd8405cbb438e8e69840bbf4e5dd7ec4b9edfb7db197aa52f2830f4708af7a0e57251c752471764de8885606cf709073511ac884ab984da90d382ad9e61f7be9dc005c05a8c19860da9bdb90eb0225fbf0fe3363314ebce2e0d4c7e8e2ff011bd4b2abcf52fd6e3c215f2ace3cefbcaab3f41386d89ff2f2a98f39f508f36e63974a0d6debad7b948ef95a8fddbe9a4e5f21a37c1c7ac8db7c2548a1996ab6e905b659ab1b945f847ff29a9153aabfb160a1ff1017d7b04b925fc030f73be4e39a15da8fe00236151e93134abe7d73ba91b42c24b22339ae7961b997f5ac6d55a3ee791ce633b3e0216aefece26b42eddda1e91f57247d677a2a9e9a9ea99e99e8deccc83fa2c21cd79d4ef87ca97451fc26658749ba1f95eb9e087a1e0b76bd535f3bd9a43827927934fbe8760889531a4a8ce9dcae097923f7f2b5650464bc9017a9d8d8c9577d9d7d5f6a929059c08a0901dbbd5e98f73d94c7629279fa94209d281ea158efc8b9bad9f2d6d9a380142a0cc6a3f28358804f367ad087dc82c83adb58574be9c2f0d7a3a37719989207dc633b1e71c5d05ee1f5dd78a4e48be90da440a511d844b4f2a398887295705a2ad0711fb53d28fd72f37eaa381f8a4f828cfc1b2a03fc41545bc6422cc5bee1d41eccd78ea2d7489c04a73312627b2b3e1d4aab50a37cc3a1da42af67fc3d45bcebaa0b073a910f32e02c77dc7174f1a3e75ecc90e39be2efb6d9a724fc722086343e0aa701def121f50b40035cdc43977df29d6a3487fd88ac4bc73d28a1c76ef366cf78adfa9c5cca7aec8e572ad675612fecf4ada39cd2b1e14c54053a6da935b0174b3a75d8fdb82d2201373be7e246fb340fcec51e5c96dd9231dbf8a2b7e42209470cbab3615e1befdd2aa90e74bdae8844a7d4479b70bb6eb0fd61d5600fc5a1ea345cc14c6d0e1929da637bbb33bebe7be6bb9a1a38219b7e48d1818d64018498f5829d8bedf9a0f009442a3b2e2edce084302dd032f8e8899c1882ebb955d69cffb4d8b2e63a6f93a74134bbac916fba161789e2a3919bc6956e80028df9988957760d54402ada7f9224037a49f38ae82296677b541036044dbeb52801aea70822601bd6a9e4c06f9d4b6c7cbb94d80bd658c3f244b136e91a799936ada8b37290145bdbbe063612223a908e17e365554cbe41de02c8a74e74628b0cb4232d6b2ab9e441f8da9bebe26aed6d8ba93a83866a9df62844abef1e48009062710226d5c9b7aeebfc043b3469a44dbb3739861b1f3e35a58c96e002f54d70559b3d3b399b6d83a4b95343ea58595f6ca20181fe1d379ef5e5b5531e0062182e7d3621f4104f5076ea3eddfddc028c9896c4ff703e436797e87b9aa7b052d3175bf4ba80875f478524d5903ca61cbafaa89f459cee0a4f7de4b59614f04783ab7048c31cbec71dc4c7dec967009b199f2142746ad84eea50ae6f47e6ad63d05ac8afda207063be830bd432710c22d90c199195ecaf73f94eb78468b9927075aa7673cebdb330373cd9dff589a7abf9c7f683a5f315c976f4ceeb62fa0a52deab5688c8b1a07b8c9fdeb5f214c163410362ef03444d1f0035d6aaf1d2ec88a27db16f1529fafc279b5df2d0eed0961e1f79396f06483e060ced845abcac0e34000d0906760eed3425a5a1d56bd3928b3dae9699e08db0d9be12637862d351595269e4c0a4372128bca59867c3172b4296aefb624e94dbf0457385c0c6c5bfca7aaabed82066414d5f287c111dffc2b4dd5dd6b767edac811af53c5def01353925da0bfbfe5583bc8f2a5a7415e8b7119e3d946ee02d0d5f6e7b426c940cf7b89505b4a5fd6270fd50670e03f5d1d3af38a37507f161899b1d16e7437391e2ace9378213bb78a2738b7375ee61774fd582526b9d7face38df8ad2997e0cbf5208e8ccf914ed8a2c861c4f44baa5f382648a64465dae317c652451c191dd53cd896c3e9a180a75cade7b80cad1873d2acf157670baa99fd2eb395889266a198c2e1c6848dcd5153d82255fc0d1d3e29458eab74144e8b94a63ee0002f356ceae7edc8c1d3510c51b1a9ee7a6865a3037a747a7e11cf54aae70f0af6993a0cce3273c5b4d38ff678368f8fd5e9ed765cbc3d11e337ee8cb58ac194c5af4aa06419a1de297d0a2e9870b0c031863f78cf5b34a5955a907dfa0f42cd51f3d3c4d692573d4c34b370bba11c897864e70a189e4f22143f88b84ecb5057d10f05ea9bb74ba68aaa29d54547e68bfde84a33b040488b56e08c466d1a224c45e23ad7b80b14b12d84b7c617bb491e592cfc8b3b255097c646b91d12473bae95be9e8ce0b0d5b50cbed82888f40c0c307c64f699354d585e5f74de575e1aeaf87c216ace46d2524b15d70eb12ba46572f7ecd2af16b7d5ff7b5fa9c71811301c6477f275410125739b7a524af036050e165b694d274a0437cd941c0e490eb50ceb1a10b434b4dfbe09457e66eccc165df7f97a20da589735a969ada11bfee0ae51e048b5ab8dc3635a77784c09da6d8b83a4173c356bd9d45656d8f58e08a1d44451810280294c79e597630a6f648f00012ff7af68900a1780064fcdd0faa737cdd02149c9b4140fc59926c3173d3b19e6851d8886f12da16a0ff74aa394a3fe27c0ba79638242e98152403e6bf5aacacdab524f1efec438779e65e894d8f920d64d6d787f103a4111c8779c068c101aa9d1b78406d15a80bd946207dd529b44a86cbf2b6caed17a855c2a7b070b4bda51b3ce16346021b0e2bad56165538a19e1904579aa7b268faec2ffd59023ce391a459e936d173a016f64655fc0104d464f4410f00026b66974f68c50ad33af74fa24aa38366057703ffb32f7f479e38bfceaeb49defac9e4896793d4410c2d39a1401cfa3bbceda0f6d352cb27c8069c35140a394b6336a6e97edf5ad5e00b75a0a148f80b78f06e112eb85178128e754e5d3ad5bd1b8e953008286b86afed9f6a304bb9c4da80dce2efd6ecc4b73a24e0763df6572d122778134926a9b6b6859a12d31c64f9c27c578a98e09ccf525448ebaf4911c1169201893a5ac35d3e07664c5e0a506139b8536372fda03f508a43c549853aa3ceed01a6a41aa2ebea1097e7178e6b389e425b15b18187ce0d66a84be04333ffd6853cd5cc341b266b498a393036750a4c49c7453d08ff8986bd474ad8b91498683406e9a6752ea99e1fbe294aea3fd11196946015ca6dce811e72f713f7f128e437f604500ec95c1f69c11bad7dd3463299d0e03b175eb1e64516ee8d4da5a3f983eb7fcd5de8601208aedf68b0f2d61d0e63ae9e38119fdeb79e731a7b0a8dbcfc204ede939a61c644d4f620cefc2ecc902e60c021455070897e7c53ad9fdef1804d3431c8d5e59082bfc9025395f6e0a2013f32d82fdd6c0438bc4674c4b4aa26d0d935e9f034f2ceafd403b275ee1a81e62e6396df8f7853a7cad63983f325c5ba61e02fb5589b3758ffd34f559211e9593986e4be2d1051c3c06306a2d30ccc29816f3a672387ed5735a047609c07210646d6d38be206c1541d0fec601e1b22ddc1fa023856c437f2af55cd423d93adf4439c3b50fe901a2d6770998110f50c3e5863dc457ae48a632a5d43bd05a1723cd6e46ec27f9fb531a706d654dfc38560761094dff90ec25689c21064c15ddf8cd844db4be1576b043666e2d2001a733ab25121f30540f8e7ac8df2c13fcf10ee4011f8670d208f38c73d12f3e2b67466668b67dae7806b9690ceadda500563dc5d6523fa6efd7b47bf85d8e3779c91c733c0e36cc2d65d6fb211cd9ffe9d66fc25197ee719f94eb4a401ce8e51ae8194b15df0e9670e01e388a39302ac9e89ba078c593cc3100c147ac8c5c9bbe82349b85a507eb2b556a9b678ca94da6af316d24e8cebf64ce6071472cf95acd5848e9b25ac021dd1b4d9564b5e2f5407b8d443075ed5d45f183bf51702be445b61e5d972763bcf0096f3ffb72ce093bb5b678bb11c1373d6e0e9a9fcac58040506606f5420455657ee40667a8b6353f77ac839e932ab88da8ca6226c32c6e673617eea70b65db61eb36002c8c14bf7a834ff76377aee9a856ea62e135c506723a6023756647d54f33c46ba7807d6fe03574f8c789be8cb23364293c49dea208c02e5406f4b470eefb66496a55c076683f013fd906ebfef4a0d362067ec57617ce82f8becaa0585e46b703d74fbcd82e272fbf507b13cb8de45aaee1b7976bd1fb5256d9139496c7adf7521b2d2864d46b434156c053cdc74226c77498183e69ec1b1335c0152643df21db264d5697bd5a60a1ec74ec5944f199621cece6eea9c039848d5017a4e47160ea596167b64aee9ca6515389c2a485a73c7e7930cac094567be692ed3dbcac2938ad9be2ad5e98a23ebb3ac10e373cb588d189b514ef5c2133bdc531d3e1a86aa61ef125ead4d52641e89675833fd3c059cdd8f66baaf0df34f0d8981ce2250e1c961f00fce0cab113ce3e8bad7eb0e5c9a79c0d508f54ecf7e6f84ea78589911567e7384eabb28829c46187b37f3c389b20e97305bd6e512a6d0a726a617d340310653774e1706bae66209fe8e480462154f33500c68c4c11c81b925c5b71b0e3b555c400af9a5a60b9920d1ba8eadd1d2a106a82670a0dedd723a4bcf324b2da17590a37bcc5998a850a96beddbd3f2dd752b2d0ab653a6432641983ace5b766b5631203d230cfe84e998631147856fd1dbbc71f52dbd34bcfa96dacfbffb5bb484946408822307a41a66bb2f3a4e00080eb60256ff8b8e6c97e2c8cafc0db585764b5653b66caeb179b82527b7b05b76eb1840b675ef96c355538745df972f36753e3f75d8dc6ec9c9609cc1b97272d4d7c0f059ee21c55220ce27ea8d53804a3f389de607db17dcca5edb08c93a9eb5ab9eadc40d9a2fa1305c03afba5438b9b9db0e1d81815676292dabef417c8d8de1e3c1f1f0464f76622edfd847dde47559d49da09553e600dda7f70e8c6aca0ebc2db6a6269615bae9000fad4528bc200eee0913bac1fe3fa546430808840916c52d7f01d3da844dee33ecf88060e3e06e60edbb9a8d68b180fd526795aeba949020de927ab4c478ea0cca63f107981c5353de19bef1f435e9b4ceeae8fb213a6caeea627698ff6683ff9d943331ec63464af9970243fc0b643111191526fb20ea085a6a551842f6edd506fbebe64c57cdf87717724966b1270e3523f820f9edaf2d24159026283dc2188a3c7679559bc668e16b1b1acd7de3378d633bc7cc9372944d944af3fbc189395607dcb4f36f69ead2d5d469c89e1d72eb7ac8575a3ba25c78c83d534c933f600af85a5dd6eed1453a0a849c5afca34f06d6417796717d831415f6bed16355a92f86dc84b25ca449bd10a2a476f94e8a1d05da353c93202551364edae28a82b080f5e5c8b3d723cfb9f1e29e46f6f293bdfce45c7eb6979f850ffd82c5fe2fe4b5e8d28f5551e504b56fd91ddddc0e6d0647cbfed01f4226b3842fd7dc47a1cfd4a85cbbfcc2b1044c49c7afd6587efa4a351beca1bfc875983f7f047d8bfed1747f74f90fe9b38e6dee03318b436e3d3f679898b587e7c24eb19537347bab219bb9a6aba9ad7bdf8a475652d72d98b27a094204a870f404a36a7da342cf3b1bd3afd180908b9c8fac74b14187b5ae3d80026c7929da388e2ac7c0f2166eb0d3a6a931d5f1a1e231cc3de21fc43c102e58f159d3258d1e55411bdde26977d67e1822f50b7e5dbf7cb564790ff116686502eac844d595d6540616d153eda6eafe07b31515d9a41f5d109a1ee29cead228ceabbaaecac0aa92b058188b1e721648ba3ae82256361aa4cf7fa4cd17a2ff5d5f0686fdeaa03d49d254b845aeb0af9fefc00f79fa797de8f9c6774c9bd018fdea7d771e5ad03bcee404611c20f6bc2c739c04b9da892dcfcde5e5cdb57010ef96b9633c6d837a3ac0c3609b3677cbcb83411b1fb954a7b04f4716e7740430329b62bc5392467c52848dfa543b8c9cb287e9cae37ca80c401cabfa80f760ad66ea33056674138e2b782a962da99d425338ee91a2be51a2967a8eb40bf3ad568a572670e3c607b6c4b1dd216907bc0f80b753fea1189feaf50be5cf33e64bc692d601aa3b3df1d18dbe810a9b8fb8842dd93a0e8573c77e0bacc92c459dda21297ad57668c907c69792b44ac259ef1cbdacb6eb335e5423d296a28adf97c388b8fbf1a0d910a3b069d34dc6baabc6107d40b962febf28fc7f7bc0879b8363814ed754d16f281648fce5f603e703005717a3c187bf341d7d77e4f37cc472366966d948576dd275ffae2780df0f0693e2fd1c2393f51c5d2a0774c1df371235f5344b33c4f886b703ca3120de800f760357bcfb2b1d704cde1197dc610a7146f15a7b752ad229877c2e3aa1cd9b903a40d0171f35fc9322820d208c5a53acfce395ff7ca0419685981f79089ab21ec94bf4cd8c547b82b88be58953e5997b9e8ce753e0093dd35187d704d1bd39935c1376cd4353d249c9c612c876c8fe8b3906b277642be7198f6c182e84c5e210eb17199b916a6e68a07ad49b8458e481c3feb9c81abe72cc0712071d451e0967f3136c15a791ce3bd765c0d17c4e13f283adbab4617fbabed05a2764b325593a3a21612b554e57986be43f8107424d175ddd492d0ef1fb9fb4a57689416df445d2bf60ac883c037dff001bc38303f67b1a391cc8b06e1d73b8c12c31de58404e67df1c70ec8645931dfeaaa954024c8a59fc402167bc2551efc8815b98624b044616a2ad02c8ae5f363c7aee097676ac77489d7ad4e1258171f4901dd873e875e1f184d7f2906324d2d02eb9e4a4215dbd435125c50d435702c5b7185e4e5b683bbf6efca2bee29bd8b4597c71baa7dc8336b3faecfc3b84914b42df0f6f5e02fad0efd7e3a102e4d7176f0749722a003d877a13872e40b86516305b78f786a078a5b66bf7dcef94378388db4644a415ce0bfebcab93f530d53703edb866fbda194939f8ab7e4f49b9771261f719c3b3acd7ec6d8d67f65ebbce89db3baa75e58bcbd9aa0a3a489c98d633b19aad3c225d83dd5e47345fa70c4e956d7c6b4b3cd3cdee47c175e9d989cb1ef2fd8afdf1d46e1305966fae7ccb9b7b2d5495c601d0a1eae5d8619bb6168c0a0084c4574f23a51d4ddd094d72e7545c20fc1a461ced52692114298e195dea747245030ee91eb9c76907f17529ea36af7ba1356d9fdb1aa8ff410f4fcb1d8f7cdaf44d694c470f191b8d6301b9590390c04e013abae4b09513a0b9149d8865bf36fd7502190268a7562ce9b9e4bf6759f9d1e5a04051d2af7083d35993dd47d09cc9860fa33635eb48736c6aee3c2fc1b80dcc323a3b30862ea394b34481655682c12371dee2e497f291dbf7eaaaefe90d677887db3ddb45e4d3f73eeb2284ab0fce2db53a5f7fc9f11028a11de10722b3974a6ec9e9cff254cca1fa96a0c9f4cdce1f3b368037254949c28f6fe2d11ee82caa1c6f377009d75a4712dd764e247903d5ff2f30dec3ed7664f9595ffe40df342fa0fd9b6b560ef2450a8b49e1269f8a8adcbfbad2d7d81c38199f54667e2836068a56792a06e639b5595ff53118d898c0032be48f14b47739dc76f3c57df3179ceb630dd0ab259db2631fb93b67b223f5759e2221a2cb487feb54a9573f40941414381103d18480ec0ae7be46234823ae3a3aef176740d17c15a37a7bdbfb50535fd8ba441b34f81362fae77228e235e2a9f268644f31735c4ab2a2ed5738792a2e8b8c5c162945fbe874f0a897155a4296864e04f60a3e9f15ebf64d849e6698b02a5465d52ed0c9a5f971f41699fbc4483547eb792cf73ffcbed47ff4c4fab65be6cf81d0981cdc61820588369e23ebf3792045827007f5fb8970ce34fae080f6a32ebac9bf85d834a44e334442b613d0d6d9398eefd54a3aac2f40c2d6fe762baf0267b4a0cdae9bb7251386abc68283cd72fb1a9ff138281a31936284059ae3b4ab1f759ed98b3667ad69ac631d542eafb88e10bd93c96bc017756162ebc57dc47a32896fcf86c4b1b92d5b7737a71a99e10e632167f7b8c397b7b903ed5d8d0e9970fc68ab23d94c65f9f2bb6c43bec136a4c876c583bfc6018ef4ffcbc6bfe1261ad2ce7093ea7e6056acc33c5823bc8107afb73e4d82baac972b14bea8c7e12d8bb5e3bce2cfcb4ef19452a7d68ba8ff146d9a8bda5c9a03166a038a2e32bc231dbbb087c1d24c1e0ab23d2708e02f4963993211109d9a7ff7decbedbddd8ef3353799ebb470ec434c83598d37ddf607df615f00b91d2ecc597cc7b34201aca176ac10a00e4b2e8d0b249747b18ba468f24f7a5deb15ca3318efce8d6a5a5cf143d77bf68e014bbbff154b78a0e097e096c31fe22235693b02993f81a3dcec823953d87b37b48ebf254be4648f7165bd668a68ed238f8e7112350890a15cd6fcba3af894ff9eabd28de1f48d29543b758c5006ba425ac819b6054ad0bd3847063b867025d5d2c6852341eafaa43b719e34ef991dae2abddd50a711e07c8b04adbbdb2f98b16d16230231634ff265e49898a7b4a5ccc888862e97116989ba9b1a484f7d6203bc500b42b5aa9a35983cf6943bf093a7ff4bf941041c3aa95844f08d049ec51b5e8d36fd6dff21560b25381d7e22480130b3e9ec4dc2abf2eb226dd7738d7d4691faff27517622ae79d69a7019664cd60d49d6b0681b2c9aa2ca67f5c067d6993fbbfa9112627e8ffeb4f2a6febff9c76965f55d6c88561a8871c8f0f96b3e878fcbb799d5df41332ca61d78339983f59680ae0ef55661657d686d1932971124c11825673cf28cb32c84b1d9e6885d46c51c5f497b37108747f823ab8fa245ffb93cc2d30873e95b1fd4bc387612f61d03599f7394794d7dd3cea93871a83a26d6635577ad467bc1afc50bfbedfeb049b39f2c4b2c9d4694370d9c99154f617313d0efa4cb87eb0ec834fb4648f6f515b6de98e5dbad9234bfeb7332145d9e8150c8a749d19f23bf45e7fb3bfbe0ececcb3fb1b3616a4f8eda52a17ec59f1d07f17c54d8f99b238b483dace0ea337180734fcf8586b49f8a462f7c6397bbfbb78e8e7850fcffae67f732f311d8167673bba1c9940deabdfe7de24f5e1f593b6ffcd013156a2e509bfd9b5ca0fb55d417fdf293687c85acf25f7c62fce37435b93e31380e250bee518b1a39fbfe02d1cd6f49e03e3b1f8b157cdce115b5cc7bff75d4b2fb221aab7e7922965f7815d66ea19e7f52a2fdc749e14678589ed942b55804bfa282ff6d4c21fd2cb6e7a03c15dbcf703eadfecf2a2e87ca8096b904c81e5738d4eebbd4910b672210a5f33f2dcc9d3f892d09b3d9276c4ceeebf8372c1ca70ed32cbfe8c32f3461ffffedcbd9ecdb10cfef8595659554c774fc9e1eca8a1edcf31949651a1be3ec288d63453074904ec51eb29b7b7f224674df8c8c9dfbcfecf3a92929e64f3dd953117bff03aa643411ebf6a03c169d0f884999fc5f6501da76612a509191b37bcb0fdea79b408cc5164f0122a47d7269c65685293f8b0fa48ad0e0be51d0be7ee13f4702d591e82efae5177100a84aeda8c37b6cd883b61e56f25101d718f33113bb33878a6b04ff568d35b0eaf7f24c3ca9365f456e1168b5758e4c93ad29399f5124a3356585c6fc9a108278083ecdd031b8db4c39baad050f9dfaadce67849b57fa24dde9bbd4b3cfd941ac7ea1d7d6d134985ebd6c223e0a2ac83111b975d95096808f59a2a60842a750c44f9cbf32759fb0a6fc75c6f1f8dba577633866da628bb1f615c7a19d887bbe3b89ffbfe198aabfeb98aabce7987280e54211f7517970dd172d44b6f2f4affa9a53ccabb7b6703718e2dab10a6c57bd6ab6b645006af6af832452ecbb46e2e4d2b693f02fce18643b781fa9fb4ac5e216b67fed004575cfbb0e5079eb00359ecbbb5676c694d5791c0ed205ca53bd6586306fe76688f9bab8e42e44bdc353850c1dcd5866104aade74e4ba87d87a7d9502f9e2c29e6982712450323cfce754984a722b8cc1bbd9d7db6e8548e76e33e2b595ade67b7df7e67684b0c6d751cd9e4230d99778f346f3cba0d8bde5cd228504191045c9fd91644c0c1290d94c6e4cc155cc474cf19b485afe91a9ab2fcacb838b97e2930c2ff599e88be71fdaeb190353640963a36cee1097c548ad54c49f081c871a8dcdd83dffe376f1aec8bba8bb4fa97f645774873bc3e399fe88bb4543869b514e059535d6731fac5f6f08906ed31c99313bcb5497e87acdfeaf22e71634ef6bf45dceea950faf56281b8bb359c0fbeb358bef1f66e809ef977d1f293e8f4458a6fd542e63c47666cec89ea50fc52a809c5d913675d117be36422e44ea24b24dd6c035900dcabd4782d1675ccd9d4b6fd47fffb07689b26abce7caf8d41f51aa3db5c0ac42485664ff82c64ad1b6c92de34464e97f6dfd175fe8f1015bc6f07b6580708365ff7810ece271765af349835f27d8d7fd7e0044d6af1a1783fc4fdb13ef77b6b47c5687e21e97d751ec0d56aee6c73c619da39fcec72b2b0fa067798073e3b58401dd9f2f40cc00d78aab1c053c7acae1b233330dfd670bdd7ccd71f11e347f61b6d53fc38fcb26d208ef8b16e2277bf61b449219c32ada169655022bb588ceba641b1293101dd740c5a0077e9d06a206e32da00bd651358a2e2491f9871deae8e140b3c68cdf4b5c6e866a9740f49e33aafcc4f64159fdd3041cc34737ad8943f6c9b980972da8df535fd9e53c3d9d8d70f07c5877d6d12fed5c3fe5b0f2b0d896a5e5e7d266714e5f810a5863cea813621191d74cba990b3f8faf10721bffcdee333829b528fef466e842042bb1e450549180d1062c133b832995c8fea9fcfa2b6a68c3951458c54ac55a8fa08beb9504c35760ee56ca99614588e278e47e0f9d2dd1c3bdf3eafdbcc789081765651dd6794273f9738806659634c82ddca271dbec587dfe9c865858f75defff59224b26d201c8aeff36b28fe80b2107a24a34bd13d722e569b5e225f388db241014af24f7db7abef962877f1ea6ea9f06ce7ea2e5715902f3c05bdabbbab8afbecfc58bcbb283c5bb97a76a3ef5609fbfdead95de1eefaea6e5ce1494d00a44af3fe07b38ba352d1588f8d10b51621cc5831869990338e9de9c586bc7c56b65727a7bb659f7245163a7615b58dc0cb33d4363aa2807505c6b5e3370716064afa1cacb1c91548745ae7196f03e205151f0a842e9a04eda357472629032b03e164e2a087cfbf715ea885b6dafc24aa454c7257aa277e704a939b51baa570c6c580d8c3b3d86b50803a0040ac52dcd68842b48d0eecbeed5b5bd71ad563ab1fb93011d97a27cc7f23dad00324e02cb173758f0bd4dacc20ba9ebe156ec708b57bb623522de9e8edb18d02ec0e11e9e74e789500a56b92f39f4acc3e8cee9edf1bb932065d99733dfa3d38d5ee145a9e59698c18675fb548719a1fd78139c0702a5db4d24aca6dcfb10af2b6f611ccbf0aec1d5d7889f071bb03fb15f39604de028a478f352747e6599be7aaa64f3d4a13d45d3f9139a7288b50849adba0e931b135dc2ea275b1051533771bacdc06750e3cefb80d166e8336f7d0731b6cae5ea17aa8b80d76570d14039d6f9d06f19d064bdd809213c8f696612f90febfff4096af6329e434a907f5f1cf06fb8f366313bb59a7434113d519d17ba8f5dd2674034a52cf4c08176d96555f3d99ba4f1e91838f5d50b97a8dc6a7862ed69dbcfb52ff5e633e1ff119cd9f8e96566224d70a9f3b718b8bab2c5b575fb2f20b5ff2642cde50cd562d57f563d2ec35d5093e35a1317aa4f4fe91c97eb89e552e8078fc8daf3a5384a85c50cc773822c337a2c19d7785c29f1d0f6ab2aa8fccd0a3b115206a03135dc9d1e1f3e77f32389c77583144fcceef1f3409885de0ab503c362d4780dd8fed6a5f659baa832237299e016790bc58ff856695f919a55c7748ddbc4a16395578431e91d97ada074a14e483e644599a4051d4867d35d4e8e8be1919381ccf01a5bf0d2ab84b0dad6b3f08cb3927f2634b2e573a7789fb4fb89deb3fca13e13f357e589f829e842e9b6e2fbc2e4735a58b2771189467a2b3f560eb57425977eb5142bc8e29f8c7a265d9de7037ae4c6ae8e5b727b4d4bccf4d5c2c0ecd939e6f7672789390d3373b5bd2ced6bbd3373bddad1754ba49a52ba4dfd401d195424eca80abd7c859654691bc14e6fa5a36284f5880ff244227ce69515c4ccc835204664ad2188ba1fd52e7bcd7fd9eba1c42bd3509826335197d44d54fc927f6497df28f5b1afb69696ca67d572ea1fd22b0e901a1b0adc7ff9e50d87f8ee2487edf562096d1f7cf0a0709a700406bac1bd38f3d578461197c559310ab6a19c0aec722f84d825142948e990ef5821ffebe054fbf209ef5f4f1fd78d6a9489007d94448cd7a7bd352fd6d579df5d79ec07f8456224f84a2f47037ee10e7528ac5c9e8af24a48e77a80aeb7162f2d09a3c7099e8acff61e40b135454ffc12845f8f47f8132abb79459d29489190ff4e660e6766e92916dc3a8e2979623d2c8ad57387616c03a6f519a1aa0c8f8659535175629adb5b9f39119e4837053b2492750fce88481e7f83b6fb1152c061c19e9070706cbdb815a7aa09eb62e833516a138a003f5198f62cc447c214df4b7a83814cb73e038d2e9c5a0b52bf22c8fc5f1a3381ed5ca261fff7ba237ff434ceec70d25ad0a3c4ebd3af9fc1f394bd2890e7b9cfc43618fffd81cbe4217f84f4cdbe603c2087be37f288cf0df9936ffed692bfd8e44f7ee915a383c8f5d968913d499f9cf9c87dd114202f7a3bf3d24f07f827637b78b4006ce443b2f9f6d4196bf45c6d1c22bcd4cf2f93fb854718858bb75f8cfc4dafd734b74bb4fdc72522d9d45aeb6dffe591fca46bb895a77d6eccc014aa77eb1dc565abfb792acf008b19971f9425e460aa9c33a66cf7fdf960b1030b71efccb0173426ce0577702e508eee57f24460e968d3959fefb06d084a9f1dc178ecabfee635a86260c8c4603c3ad3647dd62edad887e386f7e00f3cedd90bbb11246670eb16ac4286d6bd91f0a014ee4da2a7c6c680c5f645a5af1c927aa26cc4c8879cdcec68b18e1812d548695c6c17a6264d93776df026fb9b77d980c8ce58fca8e6b85ff768b3cda0d52d3a62827a6e6bd1d92f5abb83b87a3f3fd3dd2fd4a46b6f9d7bb131479c2674b50ab20945f99821c915c7ebb38d2f0542ca408688a1b617922a64f855cbcb83962d3d613d7bf7e636235bf6e856fb2278640c1180fa15daec39bcb0589daac09f9d5326c3847448abd5b192971949229a7b863e92a4e59f1c68b593a83b61ec3c9c548478716ad5dea0fdd4614a1100a59f1ebdcc3f2996df838cddc1e147da8eda619bb464ac8f6bcbefb3fec09f0a53c1172e19144a87430b9f4b43d71227ce68c38467fbaab38133d292ebc3c6ef0cdae2faa50b039cea60e0c90e39603f0f7d85671cdd1377841b25a71d712d0f4548cdcad4bd52810711d52504e95292073b6eba3b648904666ebd98c59ed5f7a427334249532d7a013724835670394e51fb04b43cdeb88dc0c63528c91f15f3519ff33d16e6984cc17aa443fd218a7d103f85edba9f1dc62c8c772aaade1bd4f37d6706bc4b6b5375ac95fb07917addb13fed4141ca9ca5048036751be88e55af53813abea88f6b9480302bd3eb51545fd30e1cab00b8383150cbc2d376ceb833928e7843fb2fa24da941b739a1901448a729d2a20a338dab3306e0261970553beb553be99d1e65693b556b3399ffc75b3b13ec6ee08472feac13fde979022dea235674675092806e5e9b4383e0a2ea0d6c8218ea9d8540d1ff791445204f7b836ea26a8cecb3bb4b44577db9136ae0606f98c9bb43ed3679d5b86f46035d222db0243827726a178c627419573d7aec129be6bcfab900178cc057391dc5e405058b19c557f24623b5e78afce031ba098105403609c4ad97b62557504536ef6f16f35e5be4305bf10911ba035751a39d3b8f6dd2dd6a1fac5336665bd87df36921afed437c5d2de344bb0c57339f88f64f0bf393f8472f1d7cc93f4a1bf4a9ecfff1e1ba6b103ba864c1bcdd10e2d7b11627bb366beb64bba26c9804ecb09651d8c606ecc0ba0eb13632900cc285d93a2f2887355c975fa8c7d6420b8bea8beab509424b2b397c1df6adffbd7297f35b427a3096c77266fac49b7add395ee6fe9012c6a9de9ef5bd4de19b52b319f35e99d8a4ecd684805f6e66d88daedd1f5912d4ad204170a1cdf8aff1efabfc37fc3bbfc57919cefce596fe130bef767299ac280a60b133b06348de9d847a90d29eacf1c9bf96485eaf693767968425d3e333c28bdfc5dda3b06b01f35febafde857f4c535e3fa861116a90c3ae73593d5f3bd26da67ddfc4c22f8b704f583c76ad514bb15604a440f886a3a02fa55536b8b937557deeff2dba336d324bf6fa67967265cd8d5b7b65b0799c44511428a8503fee6d84d7e2140e420fd0f6fd2af6ea136891a6ee960641c2573b7748efa5713744c12f9257c7b8651d36af16ca7b9597f8fea7743585196fd5b2b0a85a30d7f614a79516c1e42f03d7bc958b8a16adac250484c34f696bfd7a0f2f8be41e5e8b90695a5f7d70d2acda5e70c2530e68e08a2a056c31070b348281a6b60084d3faf67692ac2a7c3a39343a2d5f40750c95bac74d1bfcb4a2f7f3f2bfd93d281fd2b8574e35d29a4a9273a1569fde14bc0604695f02a1e6389fc904a0745c0ffa43de7f80cad1eef463d7e118dae7a628638d8937aee8ba87a74ad4b8ecdcf705bb5b4db8a7eadffe0c8dd0b9760a8b478964aad3e8b1c179f2549c5af6a1e6587733426db04d67f701d4a5af1fc813546569c9a330e939e99f2266c35efccdeac3055ff4c711ad5dd48c7bc4b9d26e0fc57078753f17b2aff34e4504be8a41c14f895b6dc937e4408ee931fdc0f6969374380ed4db933e75ac0756a87b4218f20a885674751579fdf8878d9ab91a61133c27d2c35d4bc1471cca1573c865e8759ec1646a8571188e8c49631ba718c03536f488a83c5e1c5611c2ffbf8182bc65ac4dddbb21c4967644b126d3ae0a41579e78424bccbd6c8e96cd9611617e139df22c32f778cf14cfd64178b15a9213e7d1471990a913a695c40892cb1b2d0f96cec02b039d00d74db1cd3e85a6347ff3f3136edee3bbdbd36a68790fe4bd5eec5e5952790121f5e992cc7ba41c005540962f8c73bed42169585d39b0e05ee8c9c89b66a40af8efa837482d5158bced608b3ded74357eb181bcb0d2e50d9da852ea225c56aed8be6c263b3e59aed2ea50efb0bff74b50d62ae9d114dc9aa3bba0a8766b300073bbc3a494b1c10d31812c1552ec08aed8e0c61f9bac4dac2a36abdcb2e8ab07699737ea610aa5a0757ab3c80241a987c95b36c6ea91ef4455ed06cd3e5d33ddbd9662bd9b9f8854e966c3b5dcb25be7bd7857954adf71e0389bb28e6405e325c4cf102a2960c17b51189ccf8077c6bde1d29a5c91707b43a76597838758b63fdc2cfee3c91928c57f98412b29d0e3f70fc6e6b64e64366e954f501aa290555a288d6a9d6d7db0041a5fa1bd5c8a72682bb0910da635f935367e9dade74ddf740c971af30b951f2cb2f024edb6bc0005105730ae14612ccbd80551dcbbd640db49caa61ef6105d413d4eabc0187bcd11d52a47e3d2466aa29e6bde90e9fd8107ea13d23bfe939d26dd60d8e6c77afcfc404b9017a5da2ae53c796e5a44ba318d7cdbec0ae93c7f73e6e209ea843fce0c2ff3566e77527972433eb37d03c2346fe630de881cfa26f4a14ec6806278e2ac983d8f2cae863862da4d91d837e7b05acbf2ebb61faf74cf9cc16d6ec5b56bbc73766fc7d97bd3f5d40c324c8bbc9772c68c49e158f0e2c32ecfe80c03f36b2ae86a50bf4f7651dfb7d1481f9241e595ea19e9c8ce953173202959ce290e7c8411dd8981251422cf412b515973b9e91257d95988b1032926ad34351ecdf9f8342d530b5b09b73407ceee0e48f8b33075e1d4f2c3375dad477ecc317c8b79f2e4f6676e78c857c04def5811770b963bebdc1e531f1ac0ff87f5088c11ddb0c5993a732b3fe22697932e3c2d05153629885f28aea4ef4b87285e5df01685532d8bc29a842b1b3216d6012ee5fb056f6a8cde0dba0d9827291f146b6bf9e50ae8378b8162f7054553b2c607fb2dd054297ff0c34e0fb96e84ffe693d4121f462ecc0b7cadbb5ba1c05bf428d21c3933b239dc005a946f39dd265c482e944895d619163f44636d51efac8f21ecba8f2b1ba95ee0c37d810af6bbfd5a1f82c38c108778da6a0ae75179aaf7a9a547770a9d4f18666f1edd58ff4b93076eb71af7a4e4df17dd319a8e63a958f85b1b5eb23bb3ba098b5b94982c7e326cb329977c5543948900d338dc11b7688db4a249b0b134ad61e397688a93abf482c45d4487c61ea4a807aa67eb3d51e580797b0fc43cd80737fa6a9a537b92196b1d1ee6f8924ed3acbcd81e159f3ce6a9f3661e1d38e5c31a61bbb18bb6509549ac0ddba871e4ebbde8893100716369fdcabe28420ced525c4f94722275c8ee773a8abea089dbc36475d0d3577ba5dde65ffdeaace9cbae4153abf9ec512cac25462fb7235ebebc2acb751720131fbac65e183b448a6a53123a22d4c91d39edd0fcf423e69c71c1706d879dfca53b1f5745d6dfd7c6ec9ad6817dee0cc4d4d4e335ca91a81575b5b19d53e2e7e380b89f8ba4595b91a18e4b6ed440334e1e1d313db45aff5a12b30571940404f6f7a095996cc1c2a7d16076992ccaeceb6b13e62166477f9a9597c685503df601e74b44c6b0d479dc25c8c7501f721ceb2c6df35254dade84c70b0076264c5a0532fbc3da153a9f94adb2f6cfcdee4f67c3655e4b95120ce8a6e771eea2c7d2a4f85ff4424f5cdff8fbdf745f8a2c58d4e872beabe62fe17e7be12a03f14f849bb37b2368f1e16fd81c33670dc2af6302832a17568d18f8e2857b48d59fed29a5154620f1de27eccb39aab182b4b702343123b98f746b742e3710d5c34161a4bf26da1f1c45a4b1574078650e98e50498f0e567c7d8f598f2e1b074a8a74f2d194e9560df5543c5a9448daf6ccd14013d7bd33ee2acc1f3d96c6d2bbc2aeacf47720de86d638f07bd961788f63a7a82fa80ff8a12773de72e277babac07b9d5372f9f77aa626379f71c1408d34c172dabaa73587074a6ea75dc3c5bb2b00ce1e0b9f846bd565ed3cf85496a27a1e4ccbbbbeccaa834f7b5398d4fecb45a85615804c8406835088d3c2c17a881bb01fe22f9b3cf023c35f00423451de9537cdc17d62d1e2995de22f6b79b0896bdb783910b1475f68eae9576aa13556956aa8ebfb8a3b6a294e5baf6037e7bab563d553792a4e9e9f23d249fdb3f0b499953b9e6dbd12649665094bb7f71c712fb43ea30aa7e79fe71e17ca45fc104a843d92592c06ab4f36a0eecdc854f27aeac14dab86bf512f913def1093616be1a594c32f9eea73ac0f5d5da604b7d591ab856f0eb1f1e648f9fe1f78cf655b5411513cfd34d2d9f652acab5c871a48cf6902f9b74d91483b6f91da54bc158d2793553a342f544fa8eaf91d3de4f648363c9fcb1bfabc39b3ddd029d8b81b5aa69aec86f6941fbcbb4a08924a1179d1f1ed2103de5bbf002423547456af5a1c9c574e585e90e07820fdebe594f7b912770ae2a3d4f374a0ce80c7b67e0bcb9dbbc3904301176a8cfec16bacd5e7d589f7ef07bea9a14d84b340aefe813efb79ebe5f8ca0bd2fd1dc2e14096a7ba5399f9b5b9e7153cd503878e04876d0617efb8b9ea6e1eb0198573ad17fc54f718aaab1ab75d373e9706a8ec64f5bb5669601ef941d54fc3c28bd3c39093eeb6507b3767a92e04b07de8bee3928f93410de450e2cf58747d8e926cc8f2ab9889e66be1a1265e4a6d7c4ea70f4d716fa1753608b80784295e60985a9cf828e510f68cddf5ed4bc0099b219d667ca2e827ce4b8e6accb32129bef35378334cd563e53234ed1f4568df8876e706b3d9e511951f75ffcea4718d1d733632595cf009d56c587ed580501c32bdbe1a8b7ec7f13b4269f984dd7822f3c4f6cec05f45ddbb9ee0d2312cd4cde6e3f0e57442ce18d4518e748a4245ff4f047e878d58faa6beef43f95584a2d9e4b16fb3a16adff64ad5c0e50c9127644552a47a32509c211df895a52e9f2d4f03ffc8d814cc18e67b87312cf60e63a8fc3e638097553386d529b09c617d526f3b125bedc9ab7d5ac73e5dd228665b4f8d80beee74b34f757605e48b1deb64a56ff7f83de4e03d1f06bb19ab96ec24037afa3220b36b8cafdc2ff8ef6e31645566431defbcd6da4eef6b03d52ecb5529fcb5ac0d78d2776d8fcf83048cec419084af1775e365f02fc5c490e4927c4f4f075835d421b3f3ea0c0534eb386f8c3c16c336f980402d72af4ee34a3da2417992a6d6abfcd0e158663a4ff211780ce5fdc04c801b13fdff4ac84ca5b7658fdaee3464e88ccbb2c87ea2c5909d52eb268443cbba1819a65f58f979ae38a03f4e48f2fdb0da1657f57872f7c30415e449566bb1ebedd41a9adfa4df3e13f143ee66d23f5e93fe939035d9852bb42ded415b5a484082aaaf2c7d636ea728bdf709d344fabd92d02a523d13f5fdcbca6c9aa43f66451c2b9354e9d33f39612e590dd0230f229cb2460903089a52bdb1394a4747645844439d8deff408cf90a482f7982662542fea7fcf06f4e4558ca7e0dac46f685cc127d28fafc63563bbbf14ccac1f4d97d451e48929f714c5c8a45f0e7844a479c1b252af602197dca89b4b3e414901c861915d0e789c53a3cab62a4cfe5d3cdfc36ff607e2620517af7fb3c9acf024cca42b30ce1a86c36f1662ff9dd75eadf61c0c234130fef1c00c7d6823434b17f9fe2829f4047bfb4f7e734dda5b89a9eec4e7cf0a4e1f9af891d315f9fc83e92672e2281a7a9e9da84277022ff46d08726ce2435b571f9c7c27a2688189dd5f26294a18e817e773a56883aa8f6d30b78577054149a361123be5bc31392ca59b59a95424b875c6df72289ed51c7c659dee1439d800ac9e1ebbc53561b37c5c95468fdd12178d3d51c1a7b8cbc740e9a4125edde58e9aecb1c8f15d01d96eae3bba7de781de797cef9da18161516d0239473cec62c54f6c6bd26686085d8d908ffdc79857e129a18e64e2f1667c343bfdc9ecf44707de289caad7863b8e4d7d6669b84d4b7860537309a753057fd3ed803aecc1459f0333e310b1aace42ca9911bb2e3fe9e45c9db0ce6b7cfb7a606208660d80d459a5a8e57538f1ee470cbcfbf2ab903f3b14ceafdea066acbd6339bf0374d9e6b16fc02157b27524d6d7f1f4f06cef27afaf9d965264118ce69426d481c75cfdb349dc59270af3c757637d50bddd19ab8869faf7724fcaee458a723d145539690212d83e7f79ebf907fb7c438a7237145d29ea6c617bde1ee8b0fa717556353d59911923f1c4ecd96bd006f10b67c058885953b30b5f8887aca1342cb924242f06c79aa50dab673d54e6a4772f3d3e26d4fdd2dce92069f4d5072f3df62a5283d8ede0601aec4c83dc6dd09a532198a5c7e7070dd17dc3a9d157d45b18e2d1eda0611a6c4c83badba0375782b16af043dfefba6f6835fa8a24969ed275f410dc0e6aa6c1c234a8ba0d3a738aa35b7a7c1aaafb6df70d1733cd3c44da976ce2fea1531fb654ed546f5053d57d35b2811d0b085be4d55e8e28dba1de189291b31385e5506e7db1fe0239c1bf32f8e46786c0d336e9db1629b5e87a53d7f02785fc947b5a1a519c9c55d31f4a7efbc35eaf7fc30da5238503ab136c5d9da01d3b3a4123fe6d9d20a2209ade47a3153497beddbfd1b6cf421865f2349909cfcfcc7bd42b299c136febb0a85ed7d22969503ddc2cc54306fd20b0d80aae46c9107a30c900095f6d2fb90a070d21ce1cf8f965ce50e908c45b248cd33d27ed403e7411bda8a4d6c8ab2c7d3d2ed2ce4e434ece24b38a7ff22e0f3630e4fc60856474be4986248eafa9fdb3bebcdb0f1da158e98709a4eae25b77c9b09c7b22e8787b7c568c0e5da19cf4ee0e2ca40f76b852e44d28401016168b217178c83c73fedb9d43e2cfd9dfafa75bafe26adb6706a26fecf48cf328d73549048704638bc0293244e1c1a67de4e702b17ce1180b56e86a1cf0e9033cc5b923557329768871fb8304a035bc8ee704ea1b9f087bbebbc5dd6a3264834c39141b4fac09116deb890d43a3d5bdd336282a728adb67da3c150af123d53f26423cf7506b0384703e0f116b9914274b51fb2b557fa1f62bdff43213e2c7752f09dbd5f6a8a87e5a160c61d526999ae4724c34e2aa907c68ce258ea98d67ce2935635b4f9dca2194501fa6bfd09cd23994b4c3764800bfee71bcf3ba6c4278a6905a19302001fa5194fb2ce4acb70adcb14c8478585b6d9f55d97dbff1937dd7bcb5446b3bb46ca1b419d2a933654feb41ef5b5e37d195876de00caab4b6834a06d945b22b5117d2aab2d4db03c628aa4e2475a946fb782bcc74bcdb9953c4f4875ea1aea6f1ed4bf9458c3f354e7cbd940c6dc491b3010fdd7b1bb07be6ab27dc3d7687ec22e4f15d70f9dcc50eac01b84f8b75d52e4d37b830f3e59d01b61655494caf26d9e6bdaff253f5ee90128bf76d7893c16c358deea604f816e376027b739c0ecb678f6ad43bfa80dac7bd1e9b660e407ecbd3a1d61c48dc4707e7145f7778b9bf53b3bb7b544ed54b3e5d8acca29a0ef9408607674707c54656a32b03ccc21322f5b6eecedda4aeb1458d9ebe33e75d76c40cd6b84b716643cd21808f60cf3ca80492af5813faaba862a7f49aeaef77015925f55a3b97c434033754949171435ee4ae3d7466f774e11d514f7c82d137996e427491dbfc8dfeb5f20a85b98180cede4153c38b123563fd8bc0fad67b9e320f53f6a83f5cbf35e5b2822d93ef2176445062bc58e3f07f10e2b5d7639d43d3cb89c44e7f3f58b5f98c5d7c54f79bde9223f0e8e48ebd26cfc873870297a6ede21737e98be5deefb3584646d2a8ff061beafc161b22e1eaf18bcb86022182123e9be3dca6e5b1185ffa9d22cdea6897aa53fbebbc2d7063b597c980b42cee17edb527bb087ced39631a08d14bad90b2f3d80a111821051b435050462082c9b16a173af52ae9d01d407419b24843692017f253b63c3d4aec49eddbc487fcce37d4d5b834138832b4b8540b9f22cda754f5a0b73484d0bc03df08fa35612bd55031a389fc8d0f9bddfb303349bc4297e287dd9709d1b1927f9ec9e418dcffb805834e1c3fba4fed9af0f01829848b17ef87d753a9949ee9b2f8318ab01f85ffa9b242164c36d41659aea1e6df92d6ea48fc7f48bce7668e0331f94dc2f8716ffeaa85f9dbbe337fa199bf7c21ad807a5848b7e9d8b4fa9d4fdb3403357dc1e4fce7bffa014a6cb44eb4e5c509dbd2ca686b6ed6539d6c5530d90ad25511df1d0a11f793ef9649b1eaf404ae5bf5843c0cd2ef9607b3dab3ef704a495627d74f3a48ab8ec4900d727aa249676bcb878aa7dff94388a679e793f05bfdf43b02f00307e7af540db94a4c96bd31b75414b838b78b66c05bb3034751ba2225762c50a820cfdc999bd7de9fb999f09f72d88468239fcd39a6f59839d7d1310fd5424e54269bbbdccbcb5ba377f944b5c072b7f7bf8db791107a1bdddbba8fdaa550dcbfeda64f4aa4167b362bdfc6ecec665a4993e2c0d2374aea1d7cf23ceaa7f4272cb3e16de7425c5a03f5517f99638f9d8d59589dc376a001354662bb91c5a1ab13a6bee16a67678f3b5879a7a5a2d0a021d967cb4f95481b5f7fbff2bfe55b5d9440493be974ebb5635d47f2c60137fecb1116e91c60c035fe9bd6e87c179002c4bac42fdb9486a42cb63ac06769f3265ba5032b9b4ad1e6db4df2686cbddede95ae92949fd9554323a3cfc4b42569ee569ce4d3dbf56d08cde2a3bad6ec6b0945e97a6a180d3f4999088e64c8de78998983093e5753572d3aeead558f12181f4e7b57fa88f756f85afa6b366c2cbc1b7995194f420a9a6cc976f4d64ba864e45e6e130e8758228c5209b7cf844d47fefb71ef857365e89c15a97729e84de7d3d019b51432ebb756cccf2e70bc19cf5f336030b0316dcfb3d7fa60d9dcc55b8c693f248ba2bfb019b1b2f1c47b7a7ee54ecce7d009be4210be7afcfab0cd99c6e65b96cd2b49d1cf5fd2b68a0e277e34aebe61d50cc89c9e8e698e96abe2db8e0bd6a71a7b3edf98cc981aa9f237a8b15d0bc9e72a968f2c94cc8bfd6c22f65df6192de2eaee2a62330b07c8d4aeee2e0acf5eaeee46783664d6d0b9babd8b863c30a94e96d4034c8c2284cc6bb2f63b6f17e724c7ba9e476f7b7cd5124f3bf5c11ba43821a27e9314d9be26c5b2eb31d1c76c05da78ad73f15da74f6c82af5699bd37363ce1713d24dca27152e707ea179a81e0c3d7228fba1b7d93d64396ae937ea1f5a6e443b8b1dafaba0e86b4f38a6d6a3d8ea0616697967ceb7c5c34516f1583db2027bd53ed73a389c5267c25425a74d973a49f70d89b9a28cdf5f21a0769471c2da95b9fd38165fbed8f9ce3dea5628ee3bb3d425e99bfba63c0afd254c9a31f92ccbef2555b56752dc4f375b812150046a0d25bb3bb2af9d616d9e8f6398d38109fddf950e7a5195fa7e943dae143e0541fbec57cb71ec2c4d5967da5e84788a6cd8046376f07bff5ec8bf3ec1bcc86293127c534f5d606592dc858f1cd3932fce875f6369fe9759e3249b3478782ab652673a42a7796a869c327ceb1197054f92bc7cd17ef36022e0445c1cb1d363ff8ec4a54433b9cef0d0da362efd1e5dd99ac3bc19d3eb56fbcd7de7c7460764ded8df6a108b75ee95c14247675049bb07d9b90d4eae10d4f7a727855e1f877e3e09b285d417795f247bd5086888849ca4a828b73f9959328b4bc7f1e24469e9797c1be39bcdd60e74d5fd1f7545c9177357436030750c25ef73b2148672d0a42f0592d38af00f1623d5c2e495afa8803a55f5e2d7dc5154ee3ec91715836bc3a7a9c27815df8057e2ced459fa5db4d3eb03bafcb1debf43d9f98f55017831322eaba662949cca1539c8f05981e1f6aa7a10506e39dae24f627e18fa9bf56e29bed3f15f283def9fcdb379c20af0d1990be72c5b9eb37939f95ee4efeb1c697d708845855f878cd60f36d41bc6fe63e9d821d58b1daf84b7023050beb766dc2eac5822dac4b098b251eaa5fa44693338f25b98dab6ef26324918aa74fe61c85456ad1b1febb9e971ffbd655a5a1001a3d66be9b2a4a1ad54ee42079ae1f8833fc7168c0c73616bed8112ecff3612ddd5749215b5e351f30cf6b536ef874be210ef029def7218ab6f2c1d5530779fd5483fe7caafe895551434d505d86839a3b9c0071414074548704b5edf8da0f39153b2cbb5ee618e71f4b159815a55ad124f77cabafea639b8301833076028923a3116c1af4567fef359ac6052cc509c1b1ea3603bb379863b4e37ed111678c1d0b44b7ba830a859caa4185c2ffc4d20cfad55c4d6b9efa78bf3ec79f44f0a05590c2b88d785b85bfb06bdf1a88e0e49de93ff2fda7bb386b6b2d757d7cf276b0c1992d5c45f4afd954fbfb1ced8cedbb8536b7a971ac7093bd1b15448cf09e1262f38d6a1bd304b618ba8d758307ea754819a169ad286cec6aa1a3fe764e1ca1c4f06988eecd2f30a31ec0e17366fce28210f10f5caff4503c7fce559825ecb236aaefab1d352e7bd4bb5227ee9a02037144cdbec33bc18955960bf65d2738711721665e093f87ef4ea062faddfac81bfbbe4d1668d6a50d704bc6c62b5e8c6dccb5e39f5abd70aba290d359f7ed6e3d041aee428a66d677e247957e46cd141d9f179015d58fce0ccdd40b3b431b7fba7ae5813c089f1ddcdbefea7377dffd0de4958594db9f9c369d20cf26f3749a10c195c254f1c1018e19d12c1d4bf0ff94dcaac3dd7d9faa32f7c536d147d68398f75d0050f5b6277ae689511766daacb1419fec4fab05bad229e13f0d44bd1668a50aa27d0f2f8fe61e5bb8bbbdd082d6e8e8f7db9cac65c9e636e992b3ea39c22c920d6fe10ea48581ec4a0c6f73d92891684a398523f1bd388012067002b81167d83b886c11ba9e9738f19b30cab1781c9f46a19689c1481fab4f1da118e9a91e68502b21f647277aa2bd1915c068a622d8497283ece5b2c2d3b4e20091f51f66f6b577292ef1707bc9480f67bce4a8d56735634332c1ed12cee25aa3bf271b63815de5f3800dc45977cef139dd3960ebc80f5303c657eb830dd30192cd84415e2656c8de0301e6dcd7b1a21987b2557f960311f745b542d1faa2b264208593056958186834070cc714ec0f1053b89b11a4e90e65b3921e5b1281663f2456c678396cd1d97451679da0b4a588d94f973c3338436cef86ba9266e3b3912b285591760efe963abeaea128c4a16ba17c628c3e06c9ac4b4e557679912574a0f382f5b878b285484a9c4c7544ce601b4eb0048b9ddf6d3f4171e35851b4ec0c5821dd5304d1e8a945f4a58e8f70eb35fbb4817b76a70bd1ee9723298762cd8b941f186e7a7d34d63429aa06fb4183fa7cd6a767dd43e548b83467d6edf74d635b3da08a9883712819ca61cf513f0cffb4e511a45f5453c5c07a9e0b187472d034019fe9425df9d7ff9d02490188a2348a077cb86f5016cc085e950a913e00d1ca3603b419699d15b9e30f9ff379bc438cc26766d94091e1b11d18d34b1dc6c3ae5f9fe9b0ec31e0c3c6f4952377c446a518ab977d00f085e3b57eb040393321c902f209c13e46b5933675545d9d8add8ab75bb60aed3cfabc578fd2ecd525ad5a2a0938c917e2b942698a443afede8bb85ce4eb9cffd2d5cc5bb84524f5c9c2693d2507e75d07c9b01e56dddaac314225b4b0087ca3c1e15355073eb1c7ff2ffd61d73d635f45fad15ea2d757fed0430ac431e560c2530af64ce7027e74560ce9dbe3806011450c9234270899502c22e41a5e4184b590480966fec03078212bae8f7a1d788299f4689c600a533e18fa5467d5b7b3278bd1301aefc1277c36deed921d35cc62782c4f88cd22d8f2b947b5feea7346a1ea2c3d93942c1a73af3cd31d76510ffc59694463f111de66df6060bd94db9e78b2c191cf4242107cd623f8f9dea0369e98887179230b8f204f553df3245e450b6173a465aea231d99ba7acec4c20cd1052d3772cc103c45b127bf69e3d23445a41258788b5e64dcc7bb13331ccb9edc38e46975e3aeae092b5411758bd3da0f900bf8c00ce109cda069ee6ca2b1f3d259c289ed22728f6ed7c0c56418b9d4ab90f71cafe8291ced43f1fc559aded442c18ece619fd61cfede663b202aee9ee03b50ac527b104344e7705844544d0b332c9aa4baccea8078da2137989d3f3c92b556ef6f864efa5f89af258943cbbf863216da95b9ec4fd7c6437dce1a7cbe8eb93b2ad9fb165eb5cbee7c96d659056c68ac791a07da4e61f62cc7182bfbb3920325ef1b6d0ecf1d08cc234529a3b0f29f7443a77005e323dd0d8b35905fa109a72671a21e1078530dde30d81c8312ef6dcc446daa4c3f783683db9f2da910364b2a195f6b60cfe12e5f812bbd5a6ac1de7a6e0891067a6da0bcb56cd6ca4d36602e0d71f68007d11c7e6964fa30ac5581ce391e59b46860eede1682a945218085e9cbab55e9009935f03e4c576940102b41b9b11ed5f06bce1dd575ef5c558d4bbae68ef53b8b379ed2bcdead064d34be79d7036864524f21e7e1c351e3232d0eb1b67e01fdf18781ee88f1762b31d39133f2d74d65d8fc0ff54972c21e819a2f4bc506c61a69e1301cf440d9ba6391f9627e213b3aa9d0ec0b2123efdd7b7c7fd577d64bf8883ee221a977f88cf8eb537f6ac5cdde80227edac66df995d2863c039e2f77bf6457473b987f75fc7df4f455f083bb0f99e71b0e63019b5a331721d420747c61c844809f6283b08e008b568ac159403c0a8ebd1d80a01734f4b263acf6eb9e1d8f9f31e410e557aa33459d35d789832d6b85719e7c098df5b0de9f16c355fdd69f713f7a94ea7f567832d20622cfffe990f5c0a8c6e44fcd9a5336ffb886c7b21c6c9960881b8dc1517fe9646b2f1f5c136df7018df32626bd5f1c44696f3d77228e250b01cf6811d460b5ef3cd82e86822b6b8d08dc6eaec1b3936972d6616ec65b5537be449544036477e026517d6995bc0e83cb03c68f54837bab0b2f7aacc9ccb63b1916209ecaacd9c3adb7b068ec7d7e07a5815c4c6d660bad938425f3470a5fc50eb7f9b2554e8f9581b1034d05f82405b6054d462470bafdde0a2374b2325f30687d4a0108543c2f269833be8a016e794b8dbf7fcf9baef4d3456477410919f66b8af85e58594eba9c852ef770e74df1440f86211884a1ac18c606edb81b5f5b493015c3b54783bf71cbb932cfc7fe7fcffc5fe77e35c8ede78f4e97e13b7c7cdddff9f620f1199ea5775e759a35ac92b3c7f76feff7cf7bfce9853a7f1ebafc6501ce7e3ddaf7abcfbc6d75f3570aefeb0ff9ddc9f4477e6166ffcffadb5bbffcef88d6f74ffef26e23830ad8b645478fcfe3c5b3b67ead91f69eab9ed9feef6f2d617baff9fbdfffe0efcb9f4a39b7aee9bcc74f752cf4e49c9fdd17187d975ef1456f6fe97d8c5aac43047aa1f5112dcffc8e5ca9df6d5aab808d537c820fae506d2ead22dddc76f90cae6fe043fdefdefed6058d833ea5ee2dfdd8d49e6cc56f5e4ac47ebaf92e53ef1ec38f3ccf9b196ffd524aa66aaed5901b196ffd7916bf6e5af1f14aff6157026dd4eba69b1f6fe0d1afe61bbfcf62b525d3befefdbf7fbf6eaca9d85d96f6d8fd7fb6bfe7ae7bfcb2cb48bbbcac2b79eb53373f0ee12cfeae0b967c58f5ff178d347e61957532096bb6b7b41f2e1f7ec05c1b578a15eb069f9d762cc25f18c9b40d43fd2f7763972e390fada17118806a225b501d0935f5968da7d29074a337e32b01784dd5041995d5a9fe517fea6cad2e7d2198ccd42bf217bff10526c4aa1b54b2c1b3e89e9ab06829d620fe61bc357f6f0c42f19d773df823f6dd7826538668c079efeacc13e63b43ed2cdc9b847054206fd6f466561116c4330ae725cdb324a7e477fbf6fa235fa003778d0d3f0fd8392013f88cbec2f4980a5067cfe7332ccd014a69ed829d52bf344f4ec68533386d521358775d17a60c110d70eb49bf67bad70ad12d14aafbc9b0a3231a2b6b6ac0eafe70c94a82f3307d23e00677bfaa48c9b1d82520313e38f61b3ebe14a1c7ed46449ef7a65727965570a5309b0342d3e38d048392f0b481a5b7e7f037580a283e758f7b78536296b38a4e87c57a35a79a2c476bc97ce1e76ae508489b77aa66ab5f5134342ea62456c387b429d3acce7e56403238c418113b13117d8f66de3d83aec5c3878807eed3cb319751a77467f7780885d213ab402fc40452ec6b3ddede200524338d53cbbffabf05319133192cdfb0e2e1d99b27c91c3a47589d414d5406635b7064679fcaba20a55795353a1bd1b5bcf570fbbbb68893df2becb9edfb2c36eeed961e703b8b45012c1b5c262aedbf0b05e8046ba3bf372d5dacc348e5025637cfb7acf497903defd11532b9b508558ef980bb0d4df8c3d6b7d3b25884179e18007e9ba7aaa91c6880a84883fd630987a0438cc4088baa7b33bf718e2999661e1cf3f95a7220974f6fcc05d8edca1a0a9286cc17913e7f98a66a8c9961a0465b5f91ef3c0478670693363ece01ed19513190579276db1e16d99160ee647cb0f88138c452016296ad4767c78cb7e10f5d8ffef3abef91acd5bb61dee6d47fed24741188522a2ef2ef9921b4dca3f44a5df5fb6518ca965b240a4d8d6a1b1ef3c36e24c846b84aa6ff930ddeec764008dce3ca3f3f3a01083b342966c03c893f539e7389f60c2d832716e265cb40b113b7b94cd5b377c540925380218b451d6707e606353c2f57ee32d975ec97246fed519057b8ef86fed0b769ca8c39cbe01c8be743fe660e862b3e39a71b0b73a8a18cd5a3b72138aaf85ab97d3c8ca07f999e5835289bf65406bd529b119323b2074902776d543b0e9b6e283d317ee6f7a5ce0778f8ac925e6f8952f54e4661f0f0adfda288c4e5f3dbd373a24f1b4ae8657cf394321d122883bb64dc6716f1df8b4f33df2d8f74a040b0345f0c35a034fe677e96805a1ac063aaaf311221afb712186a911dc12421784702812421384d0c919fc1a84f02f2cdd2f1621c5df2f6665ffcdc5d01d7e7517e3edf9bed35c7daf6ebecb74fa6e4f0957e3abf5985d2f0745b0f22eaa103ae64adb8ae7679f644a7d68420c5ed447e548cad348ecb16b7edb4c178f15b93f0286773776aca6e98ab4acaf22d9e8e4ce71f9877881ed70efb655a7f9c6137f8a651347583256e26ce43924d64901f8af83512b9c9cd28c11ca07528be231245cfae6acf85454195a89bc32e78c9b6297cc39836ecc9220855a0e75efbac97a618ab81c3ce22bb45689228bb6e7385b2bc9809d3b0bcf44fcec2b1c54b74b46ea72cf1349c2fb254dd489bb90ce77cf8fa38282c0bd858853a76fab7200e2bcebb91b28df8d5926523bee8225bbb48302b77d767f75cf437d8ce95a0d75409acd594b59434238d64ca1b4bd14078cfe9ca8371e212b9d4a379a55638d040c2a88bd7f2cff1027a98188aa1c5158773fbed2c67974706a7bdd8d17086cbcc058a3c2567b3ed1717bce7a132743cc791ef9a21087a31a664f8ac611cc322177c2aaef3891922364169a29f4549cbcd279587e15dbbe9823c36143084539e2be7a819d8c528d9d30951a9fffe59d945b5fd47efe85f0a1181c7f1f0d109766f850f5c56a3f87dbc0b037aaa41d98dccffcc0e105aa8b915511b497727df6c39f57d1913a500ca06219d78bdc211b811d6db6844bc8c119423508c45834813e5ea100f9c1c26b518141f6aa5fbc152adc6604b13278317749436932f96dbc5662159786d706552e89913a0f8dc524f1bab8bb3edc7d6309b7b77cfbd9dc9d8870cfdbacc997446d5570d98c7f27aa20826fa87bc1d90705cf2de99e033eefa061f428eac91711ea729c10e87bac724a5d52051c1dcc129b882bb4eea19c21326849c071a424f904d68440b90eb76ead35fe21ed619e85aa33ac8d1353aa494c7d73f5892da2e89671943e5971e3fb1b049372cda3da13bd3e37e417e83ee99e7184518347b13a8e58d3c0c49573a9e43b768feb9adc8d0fb40a9d92b1fe0b518d41154d963662b45d267cec727edb1168343d8e3f48bfd970887aad6fd7b4b3f1b5174d8ad24c9b1c85689674c55656fb0ea8187b4ed81a70d119b864b5a967ecc66f34596e9b6be02a3af8a31a57eae87519b251694a4fa8d315081920fcf68842ae57836e42bf5a376d598fe1a2cd5af1e602f730b317c434ad59a55b9e984d957ac8f5410f2b7c83baafd6ac73e16fac9f3d72efef90fd728aa4559e0e2ca055715af71adc57de04541de5e59e2a2cc697905e635a7da1436cc73b68832fd2774b1c4958ad0c3919af0bc96d39bcff2ab22ef4b68c54a823e9d6551721ff80f2988faa05fa69ed9de8f9ed9ce7485b14f44b765b007bee030642a4f093ad6749669b3978741b98b229472af175f077c1e67c40c8b15afa23d8bc6ab23c99429dbed8ef5806a019889281ce7bf0459afb50b7d5432d20203f7059ac9d49a039953803abf9c662f78e1cf81a9fd990954312b8d7eec1eabf13bdfdaba5216311b3c3a034d4094381a897864e264fed8d81b4b301c746b724515dd41cdc1d88dbce98adb3173b926661242d3b9250b44b430ec98157833fa90aac33fd86ee86df700c4ce4ad2faa890f5b3ff59a330dd67ff5e88b0844320f5c797cd324797c1f8a2cf92d79fcff4904058960927825c0426c8fd70f4fd4c351068c32bebd2adcae790bdc4e8e5782c344491b7fcbd91f125b1fd90612d346aca845211a226f319fe7ab5b5c55d44854a98d2c28efde6e3a21c1cbc839b1631d348abff1dc337c9b04088eb63ecde82aa56925ffdde7fff3edf94f80ab1b883e29a06b971727c672d1b87b3ed2bdc2a19ea703870bf036aba147aa2eea077b021d088611ac9eddd2c01e7535a893eddedd536cfb91e7eb34ba7b3cd59282e92aa5fab13ec158b38ad9b7a7d03cee6bf1c31795ace0dd52f41049b94626d08a5350dbee3ef213581017bd81b55f2a6dd8f413227e974db729079a67a81958076e42dd2ffcee70991ac1559c508c25c7a15d6b8dae7a1c1beb3ffa4571f9f77ed9d8a4f308778e2b277df3b432cd9f6e1e3e46a89bc5f0e06a7e87db8f2c736394d00573e972868ad4e666ed79fc06f69a6997a45f2c4fc09f9e6c4626075c54b573f191cccc0823a59323d3ed9e8da5806bad1cb6daeb64387a1d5165bfb722952e8b16d5a9da56edfeafa7fb8c89a8209837a5c9dd0caf279b28176371dabe33e901267d23e587f9071d33f736050ad163fb403b1b73f83a66bb8bdf3dfc2e655c2da182df51ce1b699ef3ef453ed63e67a7dca9d6c42ab551d9a9726d39b9ae2e68fd90424475273e986d2f752e63ca1c9195821cb009f4c5dfde677f07ff2adc76534581906d6864004e3f85f3b0bd0a51e17e15162f240044d07d5229d8aa45591d3ba8abfb2d034acea3a24b7201fde5803288ea79d5cf0eec5f5d0f0a785501972fef8b1c8f24ed913ef4287e886628915c6bef28b7b98da69ff7db30182fd95eb793ce81eeb7e40e6b783a5defcbb1f02b32e6db6d2fc98d05c0dfb374434d2efffeb1bdea23bd4f1fdb1430ebd0d6b35ebabe3e87a5a13d458bb3abfb8ab42a0eed3e5ddd57f27ecfa1f547b10acc05de0ccb4035db400064a605825c93317a3b04c19efa8643a543140d8038704011ad93535c359e504f2c1e42eadcee3d0793e68ca74fac6a2c5fd92e165272b5926787a204e4f33d4eba783be480689c537b896c2b52d2e19b3cc115a9d3f49432905399b6c413cb0e4bca8b354a6dab93b187274b09efe0658cdac51a78858621c569352a3cfc9508fa804132987d2832fadb179d0b4cd129efd639329e16e988cccbdf90c2a29ed13d17a0c68f6bde514d86e599431388edd0a54828567e3b12677273ee86a45307623fc48aed8614ab400bd9eb0ceefa297df82915fde8dfdaa7c96ec9769bb7202fa7eb53f4c50659ab354054d401bac76f8ba904fdf681bcd0748c2f01dca439a31459acc38fa6622cb22daf6e9cebc056caa82ff1c2c517dfc62e24306c450bf6f034c04cda9cf6177778dd782776d854baebf439047e22369eb820f3a8d9f0ef2031a93d6280ffd4a9418c2f1b5341df3502aad3aa7f53158d0526f85fac39797d60b946174dd34e2dcbb41747f09753504092615af0cd7503b10092ed75d839bce9703cc716bf571d8e4c5819d31d41ebfd4eebce073519ab09718c9bd990b4512f988355b57fa77a9be249a9123f6a68565f72729fcd6b878f05fb3ba5ea747d514175f86b448a52b75f7e104f6af1bf88f36170e76181870d8c951b1aa2dea81fbbe0affaad7692ee2607f4df61cec652d52dc9ef4780b9436b2aad989ef458f56f2e98856cc0e83462f0c613ab5eaab327118a750b96d7a553f19ff9f28893491e7432787853cb6e6a343a86b3c6f2a8d98e4db6480f76e195b60fe32ccd3bbc04eaf0549fa7ce8550170f97a2937267eab82470eb2a9856952ba7ae73be1fe70c49b7afaa6efdf1f2a508c2069e77c1d85c329e994d283ff4f0ba02b4c8027c2f26ace5b1a8618f96dcc92a0e4c3b7b80f3011ff28243ee96df8ba06d3e0524c458ef0c5fb46098311c314264c095bbbe1ec57cdc3cd37cf19a1dd0873aa45f854486f3c011e9e7096b815102a0c8d388ca382d4e28f14a7f67d7638d325eb513be36c6d7ea4157b14caccbf5980279574b92073e402dad6d5937cc2386baa8407a8bb1ae5b14cde1626da286f7e5f84b1b1606e77c70fbca15bf72a6da7db9145f798cd8e139dfd9573e8ab5f7fe47a0c7a9eaf1d33b3d4ea8982b4f78b41a59e4e5bd4b1867d8827474c10252d5322f46171c53ae903eb9b3ac3ef1f6ff8fbd2fdb4e9b69d6be20bc160810c361ab110264e2388e633b677efd3a2084101a18affe5f5df5b4d46270926fdafbdf5f4ee2a0a1d54375750d4f553d9cbd13e58c6d6ce183d80a1746953fa889dc3cf0cacc90d36711f3a80e18d522664159f7393859930c7f3f95e1543868661756263657665dfd6263c626df25a58e5f3a1f74bd688817e48386cc05692c2666deab3be8566cd7f4094ad0327ebf52c64d8fe4dc56e256ae5330788e7324090d4ed007eac9cecd70b1b946cb6d9065a6bbe6e5d13734cb89bce26d75a2a188dc2ed452ca83f12e8bef08fced6f9896b27ca8e3fcde5437bf8b3c1f56fbfe00dd96ccd8b16b7274c2930377b7724ac1ae0555982b3fdba173364b777a5e9b81539e0ee6b7dfd46f2da5540654ec6fe423b6d93c67f7dceaa42d0e86481f1dca0a2262bb63b1fdf488dee4132a34546f306cacd7e003ad7eb26bd47394736cbe3dbfa18e8e3aba089ad4e3a16756db21405b8cd3ecc28aa5a747dd1f8baf57efdf8cc56b31339372269957ac3e16c1a0df8f4d01f3459bd0eb08519e5732bd1649f5d836f91751788f64fefa0becad186e7b332aa335ed8d119ccf981e6e67f540905ad83a19c08567d7c9d8b4fe25b20c1a3c9686fb57606ce0545cade9a50d274959cb880dba514bc7f9b39128c1e3fd98ab41b6bfe838e18fccf25e61967745f4223a1b2e23d5aa15997d434769a13f440035e8c86e4ac4b46e1dc61e421bdb3b1c2e0aa5d24a257b33525d1e84d5abd9012be1905e0dbbee713724b673809c3de01407fcea17bac5ac6b914bf62806b9c601494e5d37c3855bfa2c9f23f50c376b19bc939924932afbc7e66d4e5268005936a0b24d7f60542806cb0fc162e64d086d3be655c9575ad3341b96e90a0fb0b3e8673b3b3e05740dc0cd1695f84957da3f28ae7e78906d80a1f46bbbe79b27d199704c6fd09137be684d44133528a3a5e1b98ca0ad3500f39b1f47947a6516c0165ce4efa29c171ef88e3a41b56eb7d9c89b47114d284fca608bfa9b2be3fc6a365d1da42f4d3cbc517d6b99c8d25198434c674bd1dea8157bcf88a98497a0d9e71c79ad3e6fdd769f9154367e6f1002b4c5f31ddcefe27eafcf53d4efb356ae67a8b63350bb756d7cd8b965a7fab8d8d9b965604a1717db3bb71c8bad7144e54548f51b5986d0a30ecc113ef2d64eb2845e357d663df205dab123d63b989a2e594a931d587e8aa7b29d5fc4fbb8cc7c566d8aead8c925054fdc2b09763e08399282cd5f8f4583eafd373178bff1c5db8f1c8de22b83f14d24a5ed4cd28fbad4fbaa5dd818fda107298ed5fe5dc586f7530be045135f2a37dc85d8d9ee4a73a2fdcf5bfb229885db74debfab77ffc6cafdba7f35fad8bf7afc9ff2af2a86b2648fb82e9ff7241e107fde451d5e8059e18cb81ec031a062276c18e1cc4e36dbbadbcfe504196e3858c271c0590ed0ee4558797c3460832b988822c23e351cd1f9529a3857d4455b9e9b386b3881759ccffe9a89732c82d58412ed2d90d3e0178d9d4af9de6c591e59442c6a44074e16a43aedb3357ca2e140a6653059f0296604532ee9ebad010c811d09436057625c1d29223204da52d4ff2d86c0e6a06a086cc310c85f8be8bc5ab8bf660824e349c2717d395484c3d6bf7911be582f3fb2d91d8013a26e1e215c36b6bef61d79b0995e335a551e3d827ae28a2db28e2c8dfdc3c0908e21bbacf097fcfc52c4f8587d611a3190d4588de4410c05666416e29e5b580fa6ec47cef7fc3300fd40767129770a8d618b2712fc9d20700be2ee58acf4a89786eed485c07134c8ba634dca4386f7e303638feb27a23a6709174754d0e0ccee719f6db1eb1d06ec142a223d8ce4e5c665ad397a5c4bb15c0429aced897de8812001a5c107c6ba8655e47711a14c587d57371f85b754f2a1ceb352f6d5d786e1c3b3a2b929d2809d6a03ef17c579a4fde4932f6c732ee69e16a930d3b3254ba25bca5db3463a96a3f7df20e7efc6e7727ecf11aee0ba497dfe6efa5cd1b078c184587d657e6cc316fa26269844f6e728b95b97fbdcbb34c79098d87e03c9b8bb98143195de999c0cf006bfd7e27b0d1e468f18573a54f4910d65f392a8ec0e3a606fb38be26e2dd545112fc3fad63a8c9224e1c380fc06831c92f05a49c25d1fdc7eaa13da318d15bb37df4daaa95edac842b4db4eaeca8916e4c4d5b99c4899007667c1d1a8af1f01cab30ecd72be4b75a4dc7fbe79119f35a6625c9c0f4cf028ccd3d2882282cb701d19ba38e66cad422419d229e9148a2ee76d1d54af16a16d2927f78d539064aaa8d51b45f8bd380098f7c089a3e834fb51f6214910a0890e3651c76e9b8e6fa6e28147ada1abedbd39ea7d6bc215afa9e9d6c4eca0cbbb1a35fe0627b7467c8b8a84ee7c33675ba3cf1693bc7ab9d9a7451e954daa8f534ba4feb526c67161f64e670ac203f6ae820ae24e4b24b5ec566fee5a0661c9b3f619a008f0686f4f684a7f70f1b15bfd586daf64554caa56a04fbb8c449aaa6fe39fcfa53bfa774cf3ddc928f85fe28b1e4a48b8647d1dd3f1cc0329de1c941dbfb0583dacc5e7f3917bc5c8897477ec6a0bb11b973b42078cd8a640190270e7f797d5e5ace4ae3963639d4219f1df5bbfc41bb5b7f8125d1c93d0ea16e950a5918acc1c96527aeeef0cbfd6977302656cdf0cf879eacad7e2184fb8e8402a1fafdf9dc2abf278427b13a183190d6a9c02b35f5070dc2e5055d25bb7279cb2f981eb82688e4507fcd77237b4c1245638d5f4339c69aa36d2087921baa95a7450bc4e3cfaf7d92c3c2adef915ea7d6b52e59e9e86191957d55af1809f8bc6063c3c26b606b41b4d4c864bdafd0769c6136fc5b78638c3f716cb4a076bc2f47377fe7646b3ba180a97a664e1141d2a7686f8d98cebcccf5aa034669c1e9c6ac5b3d1bfc60ad15284d5ff7ef600c5b61467c57254beb32bbeced8af36abd4075c4ecbcb63e3e93d924bebc78ef4fb5ee048b9ca054c0be1bfa6477af66e8b7e7927fd9a6a8866afafe3a9913070e79c79d0e9ff914eae8028fa0c1ce17c5e09bb161419a48b9208a2643e506f976ae72c1dd13910ba4b1cdb6713c2cf80fff5701eff23fc0f600826b94bc40ccdbb850da41905c3aaabc944894d37b1bb5b484f8f6c28f86c8386726f66615ed5ce46d7b9d3c19942b4905370aacdbc03b19fea4b8555743fe583632c3c665b6d7b72c217f42e13a2499d20e8c437d1c24678293fd935a20bdb18cedacccec224ec8acc2d2d2d79616891904f3b483f8d900aa6374989a88dcb4c76f654b4be9e9db49ce368b66758c272ef5f7922a9b31d6c5b1f5d7922431bfbab6d1cf044ebea13b5bd7f134aa984c96b8fc4cdb1d68e8488111467e171227f1c01501ad735035c49672000d6bba2e28e2bec32a17d081b60f7a134026e1cdadef2285182c62e6a69150f761ecaf4244d039cce2643402c8ff8bb45367d4f887b50ef4c0f812a5b1d7cb52d1f8303f1062034a060ecfc326c2d7bbe89a4fccc433e80209760dd1dc05e062ceba9266c5c6a7738d4a7d5650507c1b93b14db2f3e87131125f1b73d7e7bd3f1b8a2eb9289025d8f3b9c712e0f4625a5372dd7644445c85e0fba57de2f3c09426410ff299caeeb1485f1cfc9a071204a49b0da486bf14759faa32cfd5196fe284b7f9425f78fb2f44759faa32cfd5196fe284b7f94a52bcad2f8bf4f598aa5b4759a7fcb48f06f75c0b8378e7045572ffdbd30c1b4195416f53089af7849ffbed90c24b5f720422a32f33576ba8702e6920c6c676834dc3bf884151a88fee1635cce9fa0ca3f41957f822aff0455fe09aafc1f09aa0c29a872fe27a8f24f50e5bf2aa8f2512dfe97ff4c50a53c69968327ef75d06423917f8226ffdb82263dd8d8fe670321bd6b81903ae82ed791056ab385387cfe351191ab7f594464f6ff4d44644a1191d99f88c83f1191ff5f4544baa215b8266dff07c31abd8fc21ac7ff4bc21aedffaeb0c6d99fb0c6ffd1b0c694c21ab32b618dbb4a5863feef0e6bec8dff8435fe87c21ad7ffa1b0c687df086b6cfd096bfc13d6f827acf14f58e39fb0c63f618d7fc21aff4fc9f97fc21a7f2bac31bc14d698ff765863f2ef086b5c7daec0134c9042fbe0972005be512f210a19200a3d5c722bad78e2ee338a83317432ac4f4e11b906f6b584407ad35141de7e7f8b924d3462f7599c7cc32b8aa5fa450f8637a194293ae729a2fe8c42103d5ac68ea3318600232f868c227d2805990781a9de22fff3f27b0530d404f2e1c97864f1c2e24ca87645f0a2a7692cf8bb1b3c162c86ea02ba0077405372174a9853066477dec45cf9e8dd6220ea57c1d7c1d18784710d7812e189f4ea13f191d02baed8178f94c9b217dce1e31c3258e83057d2b9d19ff5b08baa9baf900a950a393a937c9bfc02cb7c81e65bb8da7aa6a1bb85dc0b1614069065e62c3421a13c21eebf687c023df292e7a58eb076363ca2d7edb1d4055267c7bfdef7c6d5ad7338a216d2d1b8dc721afc2b732ce372df69f2afd06919972d479766e4437cd5e22a5a114a0baf5aac3f46281e3ccf90eefe514df66688ba7a8c22180e4f17a3fdce6b4029c2dfcaebe5f6d0922c904a0b60036a3b2efc1185bc204b5c0ffaace9e71b1871d9bcb65931d004443273f441d445ed58367ed60624b4ce74f584c4292ae6deb84a43f2c4f306c5955b0d98aedbfa3fb0a4b4d862dad0556961369b51ad4fb995adb7f28b312aaa35585a1e96676cf15557d4d152d062858e24b005eaf6852d141b781363b1c52cec2c8661967e53b0fa93fbb22c430cf4d1c9036ef98096b38ada4775f62e75fe2e87a33abd1ba8e7d38148d1c3a605d28085b189922e311744cd423e7cbbc63ca9b6e6b07c2721aba229d4d8b655568c75c5161f393051f567306bcc5c22832380104d58b18b1a6efde6b03c1700c268b186ff9511ab24bc35f5101c6abe85509083ae304cb28cee02deb70ebec676810337f589d32057877e1e8d1ff5475a4348f084b90083e03241813a1d86a28e5254417352aec3021b545d549db2d17ea7c126822eaa7074a8d363b10c8ad242e5889a6565e4d38b524481ab2b1309d16f0dab6fbc1a6ff45abccf96364f58afcd6ed5ba3521aa4e6a032599880dc6bca80010b3ad478baa7b4c6e115e9cb0e9ea49f5440b827b8cb779fbcd356c8884cdda80a45460c7a765437abfa86e6afc63d1d09bd10ed3102e6ac222e677d6f854646c93fd6c94fd610931a681c64ebd513055cf766696cfa504b1765973c20accd6b9c034cacdb0e98fb8882138142b945bb4a2ee72e1f798eb5687739f24625dd64aefee3e7cb9aa198fc03f9e583a60f1f336ab5a18d2bec1d35003e88c550478d58f5366d1f46230e341f14816339ed36fec946fe3e7921ef244b286d5a33de4e7f773d48d9cdef8622a508e464d0c19b97535d0403f4feeb0bc42fbc04ce80dd0c62ead6e1079c7a5a908d0e9b180d779abb6a21f70c5145c1d4f1c9a13b6f4afd19d796b80eea80d8218093c35c6bb477cbfc1631122c5cb1c23248b182bf55badf67ae99c378ab73d61a1b9669375f196f1fb85269217acbe63eaa005ebc42cedc45f489e8385bf3da4efcf2125a935210822f37ae6166b66c7bd7a2544436d281b9b78d7e633df766e62292d303dc6af46ced12a08ffb5e59c49001b80ad01fd0658b306dda363161b6aed8cb33a62f923300c69117cf85b6c9eadbcd66428e50f51df7ba79d69c852e3652a50d268534adf144b52d4cb4f6356b993d8515abc48f0fd7d83ed3bb577b608e84abc422c7e142fdc6b4e65b6828be74d6d1a7e697db62d53a86d5bbe9af6f19dbcd90cc4e0b3d44cb02867ef95cbf656fe77e608521f3dd0bb3a7548851913c671c2ddbe288c1dd1bb9cbaee6220b5061745569c8e44c0fea02c49d7edb37eb3cb86e5c9d54a0da34e6d49ab1b3aab151ff81b0c93d7d2221cf653ace8c1ed3a07b0b46636010e87fcd50d67ed5c7df9555cbf158121cf37aa4b8f2ba97b71309f56b43c16e385d38971a666939b44129a02b4a93a53a70ae37fbda02f674d78420ec5b55baeb8724b2aed427f7863f1ea7723c3acdc8b68b15b26483ded2921ef451ce770b267c31246d2e70578bcd6d1b1187f3b1d6a30b02cff270b848a46a4f00fedc1cd9d580c45d0403c1d68ba31734afc0d0710cf9c0ae5acfa0c258b4fde9c6d06e59bcbcda04a6e63e189a0e555de082d40f589ec8e06e0a1e35548b9d32fcc7472bcd89755d4eeeb0dde9f0821698c4b73df9197740184771ba59879cfdb19d5e97f0fd8bf7b1fe028575f9fa6075420c82610300b93e4bdd215e21e4e86cea014e89b0b3246051fee94577c4f9b31a325a91f7d67b564ce592f6e3f8a71411e1d723e9e4f6060f94ce834604ded0dfc3d367c6ddb8316ad976c61015d66f9c53e25fccf43d963cc41fdd95cc78ddc2603f3764afaf5cc417c17d52464dadfe1c1fa92ff926b428ae61c86040c45ed048ab6b6d8593bb79dcaf576aaa45cb7e9d8f9f5697d51b21f4987b1d22ce556f6e36a338d01a346725d942b74b87057b32d2b0f661639075cb1c439da68f86cbe202e6f6106510fddbbcf5bc32a793d95d4f5a8bba51bef1cd954a556662afca573bafb14c32bce3dfb781696d54469b2cd4ae342ee8aa0b137a67a2cade2fb7785194bb75fd327d643b1ea5a95e74652fe13bcd2cbec16734ec3e336f688ce94322434d0058f11f3c54f0871d394da67c68fd04b631d76475f3cf0264bbff0115408e9cd05cf0d80783d586869fb367b1393a195a6b5bbe205a524df5184eb76246e3cf98ded626c975f454a42f13fdfdc89c9dd02a53e2f2e61b0633add6fb9a86ad621bb825c38fb0e4b743b8a2c091c449f284eb77056e3d25b98dc97a14f8d9c05361aab95b33ebf5f391597a8d677433a8fd2e15863546ea822688c4c01ea754f4c5347354aab6cf12ac7d9d8c4c0a9a697da224352113f4222f3a51bf46e2b1dc30f39159e16262ceddb1f0b11cb25eda5379ab5a737c5c8ba034d7fb3a68fd2b5632112b9321f7d5584d31f4c2b9daecd3dc32b479dee228e4cf74d3d12a94e5fbac1f5f2e65ed1e9b1885fd9b6e8436ea73a7b80b515fddbafd9cab33eb8d5a7ef2f3d9dae8704278bd6c34aef939a6bf804d908873037dd49f50881862edda077edbe6b4c397abfb35d4c24c14d8ec38fbb5f3e7e7fe9f1943c0452b4b2931bfd15ef697d70174bdd5d8d689fb781e32dd60be249e9f202a2451fda07c457374fd60aefe5859f7baa370abfe19ee622798aa08d28253b76566b9236eb0e455d1d07c6264c8a4de809993a1b20043c211ee7a1737d93dfb114dc1932c4400ab966873a47e0d5ed61f1c08c34484f8cc4be33acced4332b869024f2361dedc5195eccf4f70b8fb9c563456b2b6ba20575ccef2e63b3c3b6c3ca5f0828986a628ac2490fc54931bd704f8ad482e39323b0a944b6143be8664b84da46350e0c8053095793dae466ca805311387bf8fa142b0f69515cccdd4a36d78c05f876f328fe86c7185a8556110e390c86db35eb1e2d54bf09acb152a05fd2e6f8fa82ed9a489549e2f04beecc32a5347f45506276e55beb358bd9fddff95603dfca49c07eca41470107a5240417cc4969db0cbd75c46bb3d402bde225bb417d71427defe507ded411e315563e3293b847b7b081ae47626ec6b2571c694dff2671a4b679ce467c42a4cc6194762f8f4e8d25b1c8a927e5e59633dbe0f27c535c1eb79c04660f366b34d8ddb49a49962e62465876626661f97a5060833c51c355de83ddb524c6b1fac173ad01dceb01052235f0fb339806b39da512b13bb208debf173faa460042b30147b14d59d46c03ac6f1ff17b53881a904f1610079b73597c8efc6c8a233523e7e4718d50ac03d9c3e0829dae113f730ae94571350a80241b717b3f6042b3c79551855c6757a4ead095dd8168258362802270a49e7f9138b58e77d39052f479c62d3891b71ac23716ae68b438f5450fd1e639ec341498b26b2107079d2979ce95a409e20d27496851a1f8018149708d8dd8ea9ae2c08cac84cda846dd7b8523badd34e46fbb49f2f77d8ffd8c9ff21688a737900b00d91274ae5e27e4c20f26f3062f118b636d7804eca3fac6ab3a3f9f61a613066ca847714a928e24b790e5d4d517e19e5c358c2afc1a9f641ec932d882fcdf1fa27bcd4fadba4e1ecb63ebdc63b9e5258cb6da963315803ae89e17b8ab669bd7bfd5661335fd635350e750eca003807210a2d16ef3c166febe43e4253744f4dc669d7b4b6dbc796d048af207ff628c4cde831e41741b9699628a0d1568fa519dad2f58433b7ca2a96fbd73a808302b1ef5bd703f52b84688ec085f19442bcd178eaf650230f8490e0d3d9953e18bbc55c494eb2e220cede0308cc323301b59e3b4f19f651958ffd5553adb66cc34d56fb5b8c715ff4610106b1671b9771957c1a8add4d7f10cc65d6d42371eb71cc3457730a6d0628eb521515c074e6e266652a7c348c7ba4327ef1cc75a6570c51642fc8d51f5bfc18d6ebf1b4eeca56682f944fbef7564476e8df5c4b9dc259ffbad0bb3eb4f10e686d0c9c7e210d7d04fc814effcebbb119e4f71ef80d2527b8b5ac561f9aa919ac76f7ce1203543dd759024ad06c4f61bcb44cf65440aaa4c57f11019eb9e5d9ef508df53043d3e9b44ef6412df790e63a6c3c54b39873ca039836001650a98e6d62fb4a4018075cfe67c6e3965c0f20bfdc93240becaf9df5a63633efac3f2545f7ee1e85d25b1b6e1a14d989f665f0df21f0bf1bad106755f1ce55f375234a497d6097cb27447f3eda092b06009d828c73248ed2ec4bc1f30aba5d978c1e35cde319ff04af8f01250d31b0345a161ac7536a285c6f4a53c7d09a22b569fb8dd39ef097d99a312f561f72a0a34be4b2a7a01cf0712634adeb3c2bb9d6fabd919969c69aac753b67c6331f88dc130c43aea4c0cc9045f2c82ae396478c9a387d3a1b5649564b675e06da7b0e2ca33f02ad066fb5bf52a76440750cd3a056e0f03b360fff8e8004ffeda5dc3c7e2093775c23d648206bcc539bb756a9f78c7db2ddf6c031c79416ac270e354aadc3b9d14b7290c6ff86a74609a3a3dbcbcec9edc9daabb35dc5d754f7b3f15d3a3336b43b4e6db6fe6dddc097037bd7837c4dd9cef362b4daf6484dbdb8b2fc7b8bbe7bbefe6ddad93e0ee91ef2695a6bb4e86dbd6e541f5305fcbedc515fbe741fbd85d09fca9dd786444efe100eae36f2d66e3581dbf67eb11078811f8b0554904580b7dc35364876cd46b877e897d074af2a1a4f78762cb2d9a8a53dae85de416bb42f2c006b42571819856c05be22691a22949cb91d82984af6db1a1983ebc2610f0118db33f2f8f8d33318b9d0fe0fb5b6d5834937919c7731697f60457c452d46ccedb667558a76d68c1b2c56e0436c44633e6153da46dac37fd133cfd58c7e2c3cbd06815d1368a2d0374d79e7054023c0b7364ddea30e3dcd458bbb75a789c6332b290bbd4625b40b736d18138423412bfd27282965b082457ddb8379aac20f71be95063f63d807ef621db8a171cacd1d4da49340408a2f6550dd37a424ebbc3c05cfd8d31e977d5408b791b00a390a8b3ed1a78488dea3f8d00f01101f0a83bccb07ffaef86ad9b99cd21008b6c507a4d8de027061e918b34c8585ece01b460da1918ff8fbb252d1719588da8024fbc0bd2ae4587b675ed51f679e5f6b5f1cd93e87e1d204ee11017228314f32580a9846e587ea9b8c2a4d8d5f8889acfd8cc389b794a69f4d43047790ef0527cfaeedea9c0df3b6d9657f34e359f46dc9c30b6cdb29994d7f6e082e55271f784a072b471faad2ab83e231492a45d417d6c237eb77dfedc2b760ff982dae4e718f360b67a22dae660c89dd973cb84513560268ea0454afdc0403b54f16edb1a1972827a5b5dec8f14f3004d42f6b287a5d83007ff3d7e3bbfe7eb3dece2acefdac3ca531ccc046f0f7d443ec4c1f0cab36321bfe2593a0f7c82bcb90432a94eec98c3164eae2e708ad4b505565f0f861c11e551f2ade1d91c50820aa33befc61a9914a4a67bcef897d91b8fbd98e15a1fde39744a9d8eb408f30e0c5f1da6b045a7fcd0db093190a59dd1faba9d4a428c28651317cbcfdde680826cf6f3d14fba6afcdad8c35fa578cac8b2c7bcfca495c3b70b1673d5c8ced19b75ade97bf393cd7ab629af36be71c4f4a4f1f793bdd30859068c0e46f2e9b43da92e527eb2337a4da42b3c30b7536ffbc2e56fb5967cccf172991f0b72580ed65eb961edb5574a306c2c5b177e2b254b4c1587e69364608832538e29d30faf2376bbc71cec3a83577b3ee3e025fd9b5311ce91d17a96408162db3a2f1eab7bbc57decc61610a9f4e46152f0c0123ce1161711856c26c329827ea8c5e2114cb6b11a2bd858ebb8986c4d5b7ed6a3a183e6b2541fc05de5162d99d56d5c3d0315057771cc1fd192b4b69953c02a99a8b18b4084b88e1cda35f195e043cdfe9f6d7ac525f3fed389692426f8f93dfee6a58e9ea427775764a6031f2329946923e1293387a78421c6ecd3b9b31db6a16d56dd66bbb372f7a7376573849b3cb9f3462438598750714316fd7590a69b7d9a2336fc0d34a1944fcd3e73febe73b787ef1c1f38fc6f3668f9f588ef64fba7d550038659faf6c2504db585e173e9e387fc1a5f39bec0f7dc4c7a7fd9119a4d404246c511ecf52c439277d21da4f1bbcf664c45ecf79576f13c7984a29ac6ccc4ee44c56ba90b426c4e2fa7500db5f0b59c8bb2e465d1cc9a5534ef3bd62efa90e6fb6e3df1fe9bd39d2d70b23ed60a4ad2b23cd5ac83a52bf3ad4f7d39192dd0b2acadcf62b0c6a07a3a716c989625a35f8e6f0d7828ed1aee9f823369aa82fad104017e0ef823a2e4507d800fb026b281235e6100f68569bd645d2a139db3feb6dac23e9a3c2f88f13616024445b61944a2c9e1611e36b9be7325d0d2a777336f4007c412197a2b3bdd89936567769ae2e369b9aa10e077c37366c125da01fb1ed9328bcbce358af4f6777df85bc5bad2f4f00bdb21c5dbc7727e4e78e53e6996dc3e054ef303dd95db60426acc5b7c9872e859d7b8653a031e2421c40e3b3f336cf489ebc530be9190b99d99cc53547ef37f8bdc5ef9d8d3c0cb65379efa0af77abd71b36fcccfdeaf5a6edb35e51af5e6febebb65ddda5719b77af7d791a1b58bab95eba47e14e68e30c3fd837da9cd33fd937fa60afc12ce918c7faa6c8fa72576679292d8f1230a917881defa5cdf9c3cdf2c45014cd838aeb6a415cce39e352c073198ec31f85c732edf2036d1dbef4ca865af57ff68c2e3fdc369c4de400944ea7faa81db282dcfec20109b9acdce624dedb236bce01828317278d9c6ec4077daad0ef2b5b92ddc0bfbe057a2be2b077cbe47273bfb9a39a2b3693ad65854a7177b3f4699a5324b5db6d394875dd2504a7b06db62f0416025eac21b1b1c69189b224a5318bc31a5626c5329d945bf810336e2058626d49bc421e01da75b0173e6abd7abff22f88eb05dd77b479b553a5fb1ee81ef9bcfb4ce34c6dc81c943391231058d33d7508d88c08967a87681fb903f4a142a71b2b7b4e997368717953d7b0a953931f474b1f799014ab3bd65111663e86756753285ff6ea827e54ccc10c1b6b7f3207337b723e34797e32cea0e2e2ef62c6e114317ef346f23060f2e95d26c91e06b93607a9c8983eac3ef3886649ca191a03ac7f38c01803b43b97995b87bbd3950673d35de4c49d993c971ece6782373f7304e65f57c5a74ea69350980b1af38fbd2c389c10b301904164cc186869408a90332c4d608ca15c49d2d09da438747867dcde8cc527d5bb07a8cbf1250da398aeb6ad1d12d5e90a808c6820c3b095f34237f3e119ebaf4e8ee2e148fc708df503a2d7cd87e566d8204fd505d6f53b9c30e9328b0d93e125de15ade9c09677dbf42259ea0ca16aea3eb7b62caf1eb6bccbe60db6be040db5fbf476d3f3fb7049183f6c2e52c40c9ed45c53048d04c53dba3e4752d5d584d41f15df08bfe9dc2eb92cadc08d8d646bc9968daffd1633e45eecd309b3404855fd73e5f6e62b0bbe7b5671d24f95bb8d3eef8238e1b0bbf97de5760d64bbf852b99c8c886adafd09f768f5e9628ffec2ddfb4b1d8a0fd0483efdca17676bbf3c2a567ce2d43f9db72b44d867604bd4e0a3a63fad3c15ac7d3da542acbe5c6a610397e44fbab4f94a4cabdd00e6fafe9ffd4ee79e1a9cf5d9f41ec07b52fd9e87f18dea31127beedc8b936fb3717f7d77911a8ea0862aadd408ce266a0d0e399adf5dba3bb3f8eee2e2dd36c258a3936ed16d211a755e9d4e03d4babf4c3a5d8776ceeaf3c5bb2da4284a2f0e6ed74052a3c5fdc5b7bff3c45cbeb9e769db5fde63f3cd90c9b17f6174922ab251b0f0458a8f3071f6fdc52dd8d822bce264dd396b89149bd918dac7e78bef6f17ac443451d7cebc7f2f5c1103d3d535f3ccb617daa5a0943bcb80150c81c1269be400765af59d3afb04d99b311b18011df600a8734af2e7945902ff46fa80837aa5ad433f5db20bce8affaf739edc03f0e0db90c3ed0e313286f261f922000dcbbb70ea29d560d3718da6f639f372c243377535c0dc4c12b3483e9aee32490c9f9b2ba316d81c85eff847ccc0307a368cfdd27bd006a6db139e9ab3827bcdf0b65a93f9765c9a636a1bfc7810ae5a8a07bee18afe27440aa8a7ecb18e5477c57169642c6cc68861a7fa08b52fa5d3d0427405b99bf79fcbce1f717cd2969ca5d022a7a8e5e1eb1f960547f64eb5dcb4e4858f2a21c98a5d6def7009895f04a1e435b70c5d5bd72a596f7a211572992f1ca0bf74d2598417d1c11e6f612cc75fc08876c89d1be8da9dfd22f38d10117eacf017efa813d72bb2baaccb371e91b10311ea2863730dd613fc1cd6b3fa5f05ebc1f062c47bd4018d42f2694255bd28b27a16e117368bb08f19a9fef407eacfe66bb4bacb2fb43593dc299dd1b2ec386418b5f4fde2658fbf4959a1be9505c7fe7b3235eafa4d5dc07ce6fec531051f8f695b1913e357cb81996979402f3d7ccfee550aa8259c900a02260f3d73d4869722eba2dad69c5f5917b7399dd12bc7e1399a7909510bfcd227d7c5978ada42391c5fd99c37e291b24d8fc50e62b20663707a48a46a8075610985040113e57c4f759d425a901078e9439db7d1bc33d0a0c191980140d9ef9c232234e205309c9390417be65c40c73c2144bcc00b25f8408abf16e183c9c87b2b6ac04aac0a3c4699d7bb035f1fbf80fa700d5c541f7f04df9274755c00b0f9053dea0808adf9eee37cd6eed53c774bb4e47ef8feff913c79d3324d1efacb031ef3d1b342e735bd97eede1df6521f145ed911eed9f800a29df5806bebd25b1d1e9fadc7a733e8ce7bfe87e3a37cee5f0d1ed55b239566ba1efc16a332378ee64ab37f207fec13c0d44703cf6ead8ac836af84553d14b53374bef70c09f2f057fd26c90356e5a0285ea30e9a0869c59750df434a352d511d710baadfec262caf222461df40459686477a563d40ca28e4103cecdda28c195f4774f67ec0c27ddd002c7e470a2bf0290fb5f47a5ccfb589a0760b887892af3466cdaab3ab5cb767d5152320189d780811903fe7aad67e0d699048b0b7ca5a7f7fef8f1cad80cc829d7d81fc178964e58521f224be2c65f9ea687598dc3c8a6f4815c0fc1501da2d6388bd1607ae1d432571de71b071935117b1c3a8a17a973efb70e89696dcaeb35cd38171b70329eba7669e1af8dcc90e84b3b8038aae72bb50e0e74ede249bfa43043b9b7e2edab1845e3b502aa6a59336e9cdc7f0e307574e4e698dc45d84719e76acb62439fd61b61b5fb8bf74923dd92c1e1b6ee576a33b2974fd970b43160f35643dd097d7044fb406ed80f494870d96f19f6af151b8c7414367213a18a6a3fc4072e34310fe6426fb6d325c3d35f7d5d677b405d64eadcdeb8c382adb61ca6655e7d1bbd0b85c39cd4c96193cf65d7094b73204bee6b10e41cad916a94a775dde8e0cfe44e8e54d4d719c4e1bb922b8c1c1af36c8fb180d22c1c64cf1bc769724ead710fbd698eb7be1e50cc0b00de65507434aba7e79508b521b5d453811b8ca0b2764d22fb152002d04e888b108073a5cea01a57bca183d5d650f7f37b0da82afe1ea6ece9e0cfaf01180df5d6c567abd19ab439624b4ad2ef24d4555fa80aa7546659ceca2c3f6cf59dfe7748230e3f6fc92b06ab25c881d849623e028bab1798bdb39bbdf0758e4e4e35b7b54c28334e9145e73f85f6ce7b4c3aeb00ebcd0db55f5e6a235ba998a7b16bfe6836b1f93e2db699b026dcaa2cd109d261122c7ea1ffe2a45df3504cdb140d9c42dc71d7dbbf059ef42ae4d1ac20b8904f01a7faebc69d92cfc239ce9a6080bca3e7d30780edc16478923c1652ddd3be9966a9c1c132ba7326abd54166492cf95b968f50ad5c5a30c3d7ec528aeb10ae6d8ef852b363ddf4830436df8c6bc0540ce9d92d3d16661b4d92bb57b4da66fd43cd7315b2c8adda68d3878636d33ee2480a5e7880052f67830946ef577e5a3d10215423ce49b3aff6eb74c9deb5d7e5d8896cd2e9dcb6312fc7129903f53f557919991769b1760aac683e271ee55ea92a2167c3c851d4c487a610a293f88d453d7b14bf182c4dd52c4ef9999454882dc46a7550f77b8d2ed15b191bad837aeec4f9840b660ae8e4cb6271da43020f034866ce6f8c22e724bc91d6ea99e1190c95e51d87cac938f26f8687ef2b9473e88140f6fe13b19feb237cac2af8dfe3aa510d2d330a50ca7dec515ff52b9ba0424eff469be2e447e64179aa6ed0d3d47bb2671455b7f9092b923d77db428c3b738fbbf63e63c1be85d572127eac416b394f43940465109595a71bd0f97eb91cf900c97f3be196553bdaa632771717118dd3c8aa9080f4afdda2273c5f672cf4bb43ba7cece8bae7a22cb8d7ef3876f753424d8e3b43c7a4d2d64dbf3cff202115bbb53cfdeead01fb84b8984c2272eb44fe12912b810daa838209b2303bf4f10f226f3799830ba3e9727ec9a3b67b134a28176904f1b7951d2b932035d4c4d7b31d1caa0c7962397b2a8dab95b7ddf2db64bd994ceb5ef16c60f9d2d9054425225f94ce1caf4faff1e3de317d8577d454dc6a7abd3152f79bad8e9e71357661de281ee0f9990a9d2c2043d2b22a98e36d40bb21f6db98d5ae06bb6ad642b16b8660bbfd4ee559f62473c916e3f0fcfc98a933df82809564905e8326ac06333de440309b058355f9bc0599253fc01c9afeabd49290d2430b61ee6461cdc11f5e23af361c1c1a8d8bf3f8ae4694fb635ec4238c2bb7d5ea5d901a9f48df217e801f2bdd579ce163f8af7293d2632cf7e32c669239c72b61d97bdacb7704a7699c6165d1da03c3672a50e745c6ee498c1739699802e8641608dbfeaf73bed1c17b9ea68db1d010bd5e90b40e2fab2ce5371a2dd23083ac7e3d971429e11d5760e4ec743e52dc8cb01396060c4c91fcd7a93c1c18883569706627118b374ed6a73711d18a05a543a059a8ebebac1baad6b7e11dadc724695373a34c5837060d3c3ee72a0713973fc6dbc93e5a55d9f18cbb507e0557f2ac1a7bc9220b001f6e41e79124aaf950503fa726d268ea844a261110d435ff95c8c86f2b9a6ac13e5df4acd2e18540b2180232198ffc6b065d75208f1549f8502c95d315eca52f88b2b43d2a4dc434d91d4700ce9b6ea2903cc0ec0f334f66363ca8cfdec8a156c2c796d74d65ec7d11bcdbceb0bf1cad7a525434ccbb28180fa3e43fff650b50ef8db838a85746eeaf1c27077da86ddf738979b9abcde7e4cbe988732edd9d19a94e6e5830574bd3e105cb12492e8bf54224753543bd188ba5f8d558d02e72c587553f74b47c91eb6877ced945e09b13b2f2b102598a26941031b94d6e9d0a5d7ee948cbb43b0c2197b2a8e6f9c13e2edc61319156e3fbe8adaed8d2bb2ef6241c9aef2ef649ecfbe8b0e68658180f4d99251e46a53f9488d2144bb56488142eceb8c26e970cebf16f3b4588995e977d15a7d144c3b16bd8e691c1d21a836fb2e1284bb6ff9c05c21f110990a35309f36868d3c5ea70f522029ac7c6defe7e6d105cca3809d7739e428e90357029ed83b520567640d1e20c8ec2b83f40d835f7264f3ea2164e7798c56233e15a205c7763716a3e2baab87b76db22520866857dc7c1563d1228f6a3f808317096a9292a785bcc8fb181cbb99fe767c6d36109ea8b5aaf5b2fe89c8da7a3ab81a4eeb9d1c275414e00d31b20d4a0a93dcba6bd88fb52937f06f9ec42a733e93eb345838a241aaea62e188944e35758d5dae6f57825fe8727305cd17d590794b1fea3ad99e4f9051a8363d57db2b44c309675eb11139c5e5923c1dee1e6ec43d0febb81f951cf610bb344badf590549918854d167d848e1f00217923dade320bca9e10803767abeeb1ad91226a1c07086196ee1e61240f1ca169774afd9c00790da526f8c23a19d3a1c5f677ebc806a666ddbf792942adf29f0425ea567a2d8635da16b3b143a8330806936262e32284ab9e5d030092a33d866689a5d15c47f3a2021a494385205ea6c409e57157251a6dffa7ba1a89539eb6d1cc2b8fdb19a4a0e009e157941ae94eedfacf3763a56135cab27a9f701af6eb2790598874c8b35aa7bc5662af8be283e76f2df60a1c2c26a55e5db726b90017baa2a318d92659c769dcc15fd6cb28335c4d961c88454bb4583fe95f036c4d071d18c22293dc33235f98550f10aac7b20b492374fddeb8fe85cedc7aca2b9a65be99ff5d1dab9fb5458785d5f9e8427ae536b8ec99c0ca625655e845628ab4c39c38c194df6b606cdb132fc445683ad60ee3a3efd5cef1815ea63b363241d30a3d69a49014434d2daef6c33e972f7da2ddd5dd33be213e8c196c8d1abbe98048ba266f9e9420422521ced6265c429859560357d47ebe2fe65e1873dcf85e99e4e430a94eb2544f143971b5b0e8fdc2f53be3ba5adfc66bd9d956ee97a8ac76ae36e1fe8d172f25413fa6b368851329c32255b508296c6ede420aba863d26da87edf5549f819fb1aaa1b82274cb50008c1b4f76193930e3601a58b6fb2bbfdce58da5915618ee325d4d1fd0b106c44c0d5f0e8fe31266dd2d4bf2359d69313f2d473fad85d646d7c81cb6388e2b4e8476b74854e5973618699a6314333915f39b9cc0e3b54539cd64dfe9e0a16e9d7d1f3320bce6210b5c0da311b1744bd00ad0e97dbca7a42d1218e60e317d7a7c7d6ddadabafa184d5eed82765ee7a8dad66668a02e20e4e15e84928eeb254ba8166eabc73ce1d2e76e0f90628f75244b5b0c0d31c6460fea1c3b19217b14bbc34a794754fe6f57179b19f4665cd6e3dd99f18cffc6d1b9b7f4a21e626fc06af3c8184357f1dcde777580142caceb54984ed4e60a949da792d9b8885eb70f3cc6ce8143dd57755f0328d531e31b35ad10d339bbad30a1b03ea178832271979e16d4430bdc6263bc6e0f57cfd9a5d3812e349394d6c2bbf6e4dfbf7320abb94feb7cfc6ff800b9031b884f4897963224a9fb331bacc1760ff5a14143656e8043dd3508cf13f5bd4be5707738bce7091f6d3340107ac8e0be670b5c03d5500e1207d4fb7673717a1a46aac2b5b3dc70bf75abea2bbef17bc10edc8c0f96fe625cd12e58b090a2d7f068d5ea010b1cb319a01f0796d323a4215bd7c72caccf1cd14a1da161bbe07e17d38f7d311fa1ec63b3cc113131e8f45651d6ee169b6a6e19fef20d277f7bb4abeee05d17d87e6657707faf9c74e15c731fdf09993bb1fba1537d33a7669f9021ef173000f4a6b8dbb4ab0d463ba9a6fa38e86db8fc51e42c07ff9a36176ea76873f12f6bf3908e3e020e24bb915af2f7a37bdaea54b87b471f4b566c00dac3e550734a86fe14653be3ba86daf9c27d5fcd98f5dd8452ee37ce0fcda9dd93b4a559cf28af3987bcb60f0c0b54021d5a5783637c157ee4ba141a4e526b68608fb7e61b9d350cbcf8cbee31fce8af0dff5b0d3feae693b3446f75e3c9de1cf922f05711bc236ae5afb232d2cd61201ec48144255d99fb68189da2a3916c5fddf13f48b63f23fbe3ca733715c0f40cd3c70d4f578e4eca9176195370a80d81747f302cf4b4fbfb1c1b7092ee800b92b8fa726d764b48521c67bad9d3f4eaa114335ac1a5240b9c5bd6e6289421b0344653cf1ee9d45ab084890361e171bd6c444cb30eb27de2d7116358d745be6e89f7f562a3061d16615a183436281b017f7954e3d2cefd94f857e8cc4202e83fe9ec6337f7a5aca5a63e72ea4df647469dd272bb71da3d68fd4a2187992345a1f443c29c72c9e08cbad743d6f7aec54ab5e2e136954fa374c61d873255d0f8b71c8950633076d3562fce09253a83b7745f2fe1f84dce322f443c3746be9edf2abee12308fd662ac673dac04fbd0636c79b1ad92a29016c7d670d28acf59d8ed120bcf6a8a51f0d9c1ecc16142dfc4d9ffffc8a5a48cbd9ae191394bd72155e360e26fc6b7760dd2a5ec9122293371893d9428a8b707ecb09e909f92fefb68bca57eee92b897bd2a13721178edef6bd3bf5e6fd2e1e9ebcd9baf0e6ebc99b2e59f1c8ce4475e0e381b056e07acd152be8ea025966321ac9541cab9b25d4711ba42c45ae51bf0ac4ac891abb4294245dfb51f21ee8f853312c77c156d26ecd11c6bf4829734853d6408dead72b300623f391b6537d642ce4c2eb0211cbf50a22279b1729801f56ce012c578f2ba8f1d3a5b1660d1be5c9d64f92df1d66b175735d908d2285ddb234cbd9984f07e40a79940d74b94768bcbb1c2697ebafcc07fa15de8c9e08a00d6eb763aaad3147ed35ef662caca1ea726328c28524b767d81855a66806f2e5a55f1959e20f2b1db74c1f5b152554a468ac6499ee996da3b7e50eb9d30a9b0e4230eed1841a7e7951fe579a57a9263d44841685d0ed9ccdb230248990c4304beecce9c33750609ba743878a618e3403a3738d276eed29b691786e0b6ddd848eb446437dd41a49f4438074fe2f63e30329bfe9cc70417fa8a37b10371022f30667e13552e38ec534752298fab67c3733b3c88efbff7c9ad8b158b12510616449bf9a5ee6d0f5b890284490bccf4559ea5fb192bab6fa2d8f465748bf79153d5994506766afeecda4ec0f44b7b87e2a28ee00cca37f96a8c8f5ef1014031bacd1368cf48d800f550b7fd951801fade0b67cb28d1fb6f964073fbafa222d017ef4cd276bf8512f9f6c38a2417d81dc98520d0e1d0bb3f34ab93145c1ce6b7263938a34f587277263a8eb9b51c353a518c0d1d61e5d14f0622de009d1a754316b29daee2566df416acd2d6ab96c2cce13b59d231b5e4500040478cdbb2d7ea07d1ec2bc90a389cce294a4d65c57d2c0921eb97a4417ad54c5c876c4abd9e2ba23a2391b19d9166c5c6dcfd4805d128d07a28bab3d3cdbc7efce6c84ea48a92e7a0d3c90c585e3125cafe385da6c44f1bf734457fd82d83a2ecebe24430160bb697897743cc2cc17ee52cee6a0554ab4b3614c6d9dcca899a3ab21b10cbb8c88a11e65c897774e2b20efd4932e38c24290bde2fdd6e996b26edba9a11a8ddab66f4532125e89f7e2a6128832c782eccb59ca10d18de632593cfc28c4cc695153f278bbe6b6ee8adb2c54bf30d61789dc758db17e3634a46bd977388540e0ec74894453627db49392eae90de1b531a77d0ca59d164657d1948a29dade124987024a9f26ef2d04b6a8c66327d11d75851873aefe79931207de379381f1e0e6fcc1be35e1c9ce12b7ba04be102f6f6a4c7bc9f949286793bf4c2542fad8c819db231636bfd16532dfb607c78f3b781ccea1c750ea449d942476e60b72083e2e176599dcb74e38321ae38225f692cec53945d83d458b8a2c3d550b01595a643959edfcd4667527b347ac81ee1135907cbef1857f9b6daa1c27d4032326f7ad9494f4fe3de133298b8c4d36b8b5bed1457d5cefb13b76f311fb885ea9a8e3a8a4ce8c108404def09ed6c6f4b16ed02f7583b3959a117d6e081dd3972b7c52353816deeda032aa588f9e232bca29306a0617be05ca1d014945bbecaa836ea79739e34e6f8f13fe45abb5ad10476610c7433af3cdfd2185dc0fc2b6a7b3c5c8229692d4b74cd27190659550e4f20189a9d165939919f5574a09945db93ab288101f19dad8a7bc7362e6ecb6652fee57110593ed9d464d1652a76f640bb8e5a2c7efad8539ac5d85e67daa554526e1adac0545e53129829c95b59dd35f9c30c157d50e0b8899432ebced20ad7b04b868022468cf656919db4f4a404396ca72d65c9d0d5d0a339b833a3c7c0100fd0c4bb6b03cc5a60f4e884266372c80bf08d9920b2a4355a7fa5d33cf5de9957c17def0b030f0a7fdd828f61aad0746b14259e609d8ce8765360551c679ece6432c23a72e3c7bd9176361d450a354816ae8fb17d6589e69c0d633f417ec646bc57bacb91a71932d5c68eb0b362e6c34842490329d887473cd78a824a84226dc837aff733221a2d8acddb8bca853141d3785b29c38225814122297458228d7b20d1360d336706747bbf0093278f7ba54870a01ba064125177fcdc2fab183c442ab9d855b2273d433af9a29b59a4621579857da36d2ae34b9960d5dcec895b11abaf5522a099c1d1681073673564e139fecce6f2fca9207072ac4d129e4a27fd85818e2dc5f802306964b2da0600eaec6b83a43d0fb1a0e9538e1ccaa3690107b569e77537a7af970533113169ce245a8253e11b1c851533113869929f0ccdbd5dce36d1444dcb2fcd32e1fbf13e2750ef6b0e4bb6f959bddaa1856bd793cf2d83700ddd57f2842684da7cce4fbfea944b49d574dc0ed3231d44a06b53151429e54f1368a8462079aed932e8f581aff4a81e082493176c296ac8a2875a78beaa8bb26e5b7bfefa627063bf158479868795ca5832d049b7b21efb81495d0c1a64c433bd5be089dbb62909a051e9dcce7333ec840d2532117ce31f3207c5627a639636aa95b54e9de4f3394e10f6e6fda8ef06f3f55e9be52337611f0f0b2e09627ee73e5e1d250ff44c976871f3d1c05b78ceb2f4d6fc8c019541db88799cfc5b31e0aac25ad977d3ab7a6c0534cc6eba5c988503b5211c09b9014eae2dd8e2afd8b835bc8724565a71c3d0b83dbf200a586536482ef223b9c7e425da7ca79507159116843512d9e36e891e78ff0167a1ecc9cd63bcd19d7f9802034ba8dcb4f0d287e02e25c8dac644d27c846e621fda6e49aeca068794d877432748f7a6e3b52f6bda13e552e38c216c659369fffcf9f651b47ece8d8d2eeaa8ee9aeea98eeaacec7eeaa98c0245be7d45d854172c3d39513c17f9506978f8a179c14dfaf1d140dd8dc2af603e4b2ad9e1e3d78f6fb704ff51a6c3cd800fd93c23f90c443465270c1e02b4a785b2a25bcc3b9af33e7f3b9869038cbac54aade0b163d15e26505122115e6b57a4cd8ba50716350b26fd927cce7d32631b55cd5d6fd094f34555ce2718375c6b25a87f418e91f33f5d7bf8db50f9969bb734adb3347c8baec1171ef1dd5d8c171175949dcf3c1b0db1c5673257d58ef6dc67eaab723cb461473983b0dfef56ae9abbe7053a7a9e527b27ff50d78600f68e955dd635711572a4396bc16404e94fcc5f4b5e409ea2aa038fd361e9fe40f92220a8df88c5a9f632472c806e957aadb48f5dada4c6fd98a8b22d53fd148739b61cd1cb6315f3814f7d5815fdca34f0c0bd6aaadf301403877a7b5b25e1881c8c98ceda6e2737f8965c0e30c0397ca1def53b5027f896ccd39e373da416f22382afef597d8c69cf66c132bdde38dc85b5db7779c65ad4dbe9e37518bd4737f91d644a229fd7d131645d4fc2506e8967a7647d4f89738528c851007fafd26f29e476dacd8161d39d4c2a1c92dd868b94d2dbe09fe5e17573bf8deaa36a6b6adef0cde517f6a52cc11c705d37467aba3591e44df318ec12e04bb03fe3e522b052949d1425e8e55c308706ce087555edc1107cb9da2a52756509eaa7582caa06cdd70dc2c8e564f034c8b87ecd38714453d9c3cd43d7d287438d5d108717c8b0400c84ec12d8508968c967abefcc80b614df991ef971f511b38c223d41b76c1d5d78cbddb5effdad923e75f3b7b447f8d8aaa8c851cad29714a7f6054b46a3787252a771ddcf29ba1947d47d773bf70ac86e6b11afcef385643f358ed9ac76ad73c56bb1f1fab6f1c6e7c7aaa06ba64a23e5501e34917974f5501cde697b4ae98a5c12be7e0bb3a06f968aafdec689242e6839d7fc5aaf6aeced105099bb22bd5577de1ddc6885ba9131251f44e0fa9c011723ee8914569498754e4b88bbc3ca46cf98104b6314965f16f2495460867526818fb2f42912e7898768e3898f4b336e92736e967fd13fab922960581ce610d028a4140f96f12906ea8857469cd9403b3b7b008fc8298f631b9852476b1127f01bef32a08c65cd253a7c33a306c8147f717a5288354a1bffabd255b8fe71b8f349e440796ce7c35bfed53fbddbb907d898cf8adccc0d3755863792a6da40fc7839a2777edecc8195a485b4b839057830f08b96112f2fa7f07cf6b9b34bb35697663d2ecf627344b992b97a7241b07ba582b487603923dfe26c9feba02f13165369c7f232734e96e07ba5b31dd5de1888c24581121c58e9b1a84d492bf29b6ff29d3fc2f2fd31c3aa2c685557fa90ef35847b42c48491deecc0ac1d3b9ece15859f2edd3cac635dc5e9dbd3d556fcf967c7bcdb74f8b1707b8cd0af230aadc6e39216ee797bf1de1f6966ff72ab77319e3f6fef2db096e1ff9765cb96d3b196e5b7cbb52877a5cffe71131213047490ea329d9cba786019fedc5ddc0bf198bd53f56c8383c2f64ac44d82275c99c8adacfff33858c9bce5921e30cd4d30a6f2fa46a6d848ce66e2dd8e26616320e48dcf8a12b1957dc1449dba88e2a4d8723826b5db14235ffb837d189cf057492c59ea3d11adf0c4473a29f8b1ce18ae582d72c5af8374d47ed3e34a71e6367179d0a782c5ef854e36b8ba776bd49596a688f8b871ee79b3f9efeeeb289728edc21dc9f468f9d28169e2e7e5f78ba4d389d74fcdf590d798a48ef03d5ff8c46d2e265e66ac8d65057434eac42c492c2defb1fc5741f605ded471c2e5d8b3c6418a5b30879446729172a5b2f997c9be12d07f2f021912eabf674454c07455d0fd4f68472dd8e916e875cbc7841b1dc37e15359df7bd0433f73ca1c3707442f2e41c91bc0e0aa0d7ce687ffe6cee051de3f1c38d3e592a62186911b6fbf509cab9ae4edc9286a0b1f25c7deb1aff5d00347cc9de24a8d27237338503b3d60c27757ab2eabdb11cebee3c9578310c9ae713f5e79b4b9908fd0e58a69247761a0baa08b9efc902fe768205b71da596a750489755c84ab1fd1dbe4943c9a3db7a0082ae45ba1102196e8788f189e14fdea747827b35109877fe18436257c30af8e45b54987087d1b5d3da6c856f176b14a23d2ca9f96918dc1b9ba07bedf39b0e15aff6e1f868af179dc1f9676b61748280c18a0d78818eac0716d4883b1ba3e358ffc9877b278abf3c5bbd793b2d18aa6d98d6c37bc791413b15c70eab5cef2161b35280b221fafd42c0e023e0875423e3dbfe9dc2f49a17e7f25c1c0ddf50a43ba6ed26399b0a6acb7e9139a3c0caf975facdfb318f8bdf2a25a32aaad6e4f2a3e352581c58ef0297fd76aa4587d36c2b41e733e283710e1f77b4e18d4d823691ce901c711c9ae8d91e8c11f5fb7196dd3b37552667eafff558bbf54ca64efdf448e5cddd17675353e377024cb519194e20839fe021a2332d118e105b5730700de3e312e062bfed46265a06843fc58e2afae47b1e4bc73c72d86df2a9d2ae2801fc78aad053f2cf3c908adae56a601e63c984b881062ff323162c162bcb62e5fef3862b63234dc56df0476f40d0d57ddf9d02a3320abcce044c5dd613eb9e1e9ca69c211d15d5e53717b5c432274f6bb3271e1db960fabf97385161b63235728455bcfa591b3afe650f2d10c20dfd61cf56929d5ad06d61a75c29be01841ce62b79d035e99732d1d9d58a7b7e290a0a8e6d1e4d811963b76297f6b1f2a936a870ecb693587291207e0e4c0aab965d01dbd8b1f7b76561de41135b5f50d358304f66f3f14aae89c7970b202f7848b6ec1732342fd2aae5b078772b76c6a1efcef65a5d99465e1c8c9a242af16b1d3a8978abacbe533b6cd7119a8dcc627ec2581841f7acb5b2af4af6b027a94b9d4f84070f28176afb440dddbe129b4af3be8de21c146e5437741472daec791d15cdf2173922d1bd7ac6d09acbbcb338ed95af81718e29ecd1ffb0a9692a0203b5978203d21fd0635eddd7eae9073254caad523d978dc1b95746c7de1900b48d367f4cb95db9f3882d1888a23611f6171ef01d3e97d512b9872b9339b9f13f065e7f4e0a656b4b74786b96de0739cccec589a72749ccc0673b4dc1a76be231408724eb6d503fb01d9f5066eaee7349072ebbe163ccd15931fbc9b0f52fecd639be87c804264300eacf705d2cca39c3ddc1641ee5a521dfa42345b3ca816a5f4f144bba5ab0c7ac5c3ea1e7be4f8599b9e998a1ea1984762f19556d9c6ed06ddf63a4ed336b096fb88f120fd26a13a1772567c89130bd0a7e6743171deedaffad5e71fcc4ca0ebacc04cbc2a261604be3ff03058a4674c72867450f99ee3dce1bc0d62564856eb813975f023ec59a179283337e85bbb298fb6a7b5b2c35076913eab031d78bf5594f6a62863c2abcc798269d1820261f78c8258ac6b71e440e41ad5bedd12ac89ff524e9f47964da82854f49d48a90653fa71ab8873062bc0615b5ea5594b0c153132fe6f2afdc96535f24567614e9f19fec5951e759d8abb93cfb915db60b3488712e8fc21abbfcce82b8b25c497b3fa332c661a861764c6a6091a7e343fe1175abc607cf32a3e5726c8e54a488fe44b57cfe8930a47dfa34ec25c7e8d8acdbaa4abdd8c45341209e58b5a8d44a35ba228c47ae79f2fb4fb2b6b4c954286a8f6e673528f2298ae66a089d76ea5478545443774cfa555a78551427e48446fc2153f4a2b68f47cfed527311d07ecf47b5203fb51f8f8333247ac8738505b11b3e820066e971eace79e695153c7d3012e44fd42149ba0fec5e6a72fcc74517c7a3ee615086b434e1bfba2932aeb7c489e6e67b5d0a5458d44b9768b8dc1eb165369dc2224baa82f799d9ac8977ac71954322a9d37160d841f15a3ce47255a76f9afe9d3ab0d2534d112259deb2b3aa476ce0e09267186a03a0b178c4f657d70a1fb871dabd77d1c5efd5b9aeb59726554613e2a43535731afcc421b20d35169aa833fe05548d15a7372ff04e9b2776bce5bdcce9d5f9c69a5616e762754928fca937ffdf3aee491670e71fb7cb14fabb6bc304db5a5fbcfcc7fe088712a7727541b9b54bbb58a3c93eb314c37845e89c7307e01490f1b6e865c93561379569b08752684676e9d660ceb6863b4cf16626d6e9caf6ecfc9adf7c0b8939c73452b6a2858573f626e92251e27b7a3ea372474ba9f614363fed90898c1589af3bd2b99266082daaf1897f154861628cdf84dc8bbae4567e9e7e306f593f442538dbb06db7f12b54cc709d7bf3b4cc48ca8e338115deaf46122c254adf771ccef29b673e1cc5d38d54397cc3e49ee951f4cf58b2f3f3b61dacfbc8bdf8527ea1fb3d96b67f59d688fc5aec52fefda232a69b4c012c57aefd17876bc0c7182b448ed11049047e18bb8ad96603b7cbff1447be8db5d4e8d7b3396c7db35274b0a74360a5f786632b145add0379a23d1835968dd1b93e2b2d32a2d01cd47748279661d70babe1d196e3f413eb2350611216b1c556b45d5bc7ecc03dea014682be2df4d3e5aacd0297267a2840ba3b6a6faac0c3c8e57158706b290adc023566cd8e1dedc178608da996d490231ca65ad1235fdde165525fed6bd25b573a3a38da7954d5587f5a3575841a8f05f39d4b1964d5bcf2cf82c8b9c1b0faacb9f850793b09a23de91fe7923789f8c724ffc5e8376dc87efcc36c8c1ee152bace725591a05473989d292c95471b6a7d23c7ab1715f8c45b0a9ce7486bfd4ec1ceaf98e98abab6b3f2f9f8d24164f7467b7454dc3ad511c62fdc24ddd09f9e09fcc82cb395e3c21bf027a5b5b3397126503f5355bcc3850c3136530fd56db12433e7a58250aa9634a82955f67e8499d12d94d4500245fbfef95b68c3c34d2bdc3f11ba4dc0f4ee3c8de8d00790ce92fc2f551a388cc0478a536ae74ca00973ea93e3d1f309f39a5429d8a1ddaf5cb293f06feb5a90ee9ed179e80e5f5097846a6482437363a8d828da264181f34833eeb79547d1e8b3bf4794fe4d81cf111d4c221a09dec334a7af3999c33778896eb30e076d7519ff8421cfa1e6c468a6d7bf291a7896cb9f742b2f891b5273c4a4fbc6be74a9f4f931e02f5fc9b47b9988842a26567ea98927b4f4a96668177f62394a65bb0959423b21666fed219d5ffd29888fdc8b835a48d69e97d15b2817e15b204d35eb1b1dcc6fdd9736934ed50ac8be8fea03b1dcc22eb0978bc575e0c89f6eb43d145b7eb88b1897e946624f24f63db5b0fe617133636b5a6b48b3648e3a8db888d36eca991a904b9355738c46be0c4a96514fa500ff984741a9019efb0762b8d7734fbaebc79a979f435e3be524750f3463d79673c59cc56c1c5111a026c52c71e1945bdfab8daa3abae3045a701f116f38aa42bfd4a4b42cce35be3cb92aa3b99f7f9d4e0b7744b3ddca3355d541a1068c0d5655430b0de8a3d20fd130af074c555fe86a2b9de5b659a37c61ad6c13fbe9473ddcc061f2ca55b2e65d9fd56c693a35f45956bc901725ca65831b5628883b399ba175e41cc1d0ccdfc7d475c676a8cea74852dcca83941340bc60411f8ffe439d012d25f62420e5d330d9a1adffd05823d1c1dc35144a47d742a1feb57b773b2e31d50241b0b39be447301137782eeaf2d9faaec9eee44b658ee1e7e7793dce3c93257b0399197a6dd2460b56dbb48b9f2334a6c199be9ced8283d9b53c254379b0051742f7c4dffbea73c1ed7b753f92dbd87341b258d908d5560776dacd0116faa3586e108d1b653ccf99c7c6dd1480438366e28abfbdf549702a90facf8d6005030ce3536f2fd9da7ef1d6b37904ebbcd67fc6c66b0bdf9cc2f511c6b06c6c4a15f58eac66594815b11c14945406a936dc2c2cbf285ed5b01272339425d0b5f884be16e23bed591e0eadce3f36b9ef14237e35b3e7e598af74954c0a9d48e6f35dc430a1bb3dfb3bc322b64df6289aa13df96a09e2e9edc2178927c8512e9a9ba2b326792e7ab2b450709f8b731cb9e6dfcd5526d0dc35faf8d29446ab01ac4ba5630e2a2861e5911d4f2beaae6bf8b0d12a8afb9c6d00aded7f503aad190809b927d5fe4c87acc273f3ea16fea94c8c81d1b73052e4e9a94a26bd95a3b8af8ef864ba46c70b96f5ef6f803f501a98e92bec08b14ade1af5c2bd67aa7c611c2d118e3d6a23baa5acc856892734dd70483a362d91d9595f6da1da61c9b4a51ea62d7870eebe5f59d5127bc83927648c0bfc69bbbcee86ca2608768accb5cfd9e90ace075dfc9049021ca33eaaa4f8dc5aa3b2aba7c77b9cb6311e39bfadbccac99960ad163de3177797f48db5f12b1dcb22c12df56884b4d60a132e5eb929eef0d52be48df062953c27716afb7b44663b1c3c2ecd77ce69d7eb701b654ead83938434e39e55c71400bc7351fa89d670616ec99b4fca2f9a978c159a27775d75cba6c689c70117be720d86f61ba8ab8cf11d002bc1f315cde8ddd8122990332f4bf180b2369613c63611a200a06c358c655b003b0b33788cb3468b475e88e3488047464f1bc7ea3594b35d2fca972664f0d71267ba406ba73578b21426c406f8ba6a43cfa8d7d91e95cb22671ec9ef5d215ef3763d1010aefa837d8a6444b86f9803147aa9fd186c935a5073527097276312dd0037e458863c7bbdcbda9903cf9a952baa69c16dcdc2f00154d55b7ea1371c7f04cfaa8af17b9ab985fe4e808a362cb0f0dd670a747191cdd820b00dcec8926e6a3452fef1dd1ee720d779b2edcb3babbc353fdbd5fa1cd79d7dc851ae80f1b930d5e62e00b547fc83f097fbf62415c360cc4a379d276ae64c377a4080c988abb6bb324a266ec97f6007db2939ef1645f17958c717cac93df6ab2979ef1732ab747cf5d3a02a6824a1b15ec14f72e9f3bfaa9fbe268514c16a7d181c07e2e87051cd18eba48d355b4e389b1229d5bf3b5b7a2ee58babc2d3390cdd6839bb1b817dd4df5d114276597f315e942faebcc2f8b725e98084552bf3e4eef649c1ad58c75e966d506523430a62d9725fcabcb10e8f9c9d7ca039bb0beef4a1ef27631a396727c812f8f9a7f19ecd203d0ba9f554ef1043360a72c2135b52320f34bf04f0f172bef6a301fbe59cfcc657345e698453cee08316596afd4931170cdbc1912b36ab38b3af2caa2071acc1ad055efe463d4fe2377955d2373cde89eca82dfa8939ace593363ff25ac0eb3de4857de12620e88065ff475fa2ee2f09921adcd38b623a0282912cc9e61353388638e641e6a2e967da794ace79f2a0ff6cd6d99f25285ef7078f995830eb37fd0464e40f9de6ea6625a5029ab63c6567a5762347555b3321cd527cd56b9051b26539391e81e73761db0ad4d7281427660de3dd058aa57658c43c5350e9500c931ccf230e6bda0483a25c8cec84b402e967375828792264c3549727bf324da5c24ce01492d13c84ec9adc69c91256c08517c53a0695c712cb3afc4800e761fcab276405dc996444dc82303a8f14ce7a1acb6987f85378195933dcce089b658a35309ee738eb58d417420a1c52bf3fb3b311235dee64bf71c914022282bc09b9d4f4241bfc565a7905a7687e0a83dc273d46fd5c3f97660ea884afa0b92db4a27b3e4b6f422ab66cbf80d24c67c2ea6ff513cf0734a87f244518a9ffefbaab546300b3a6ddf79458958578e08d62c02d75bcc5fa11837b07a1696ba81bf6c45481994db7f678d30015219cf3413e3c0e853362009b782857210556b849216669ff8f3fc40d50e0386c096eae2103669508a56c27c95eff7296b7a32e077eecbd7516d83f6424ec380ae544b7d8d5501a5b60e06a5da2694eb3aa51e255090b67b8d52b31637cb84981e7c33da91b750829cabdda56162366d8efba56312d19db635279d327973e8449c00d9b760b767f7169006a82c4bdcb9bf23fe81e837287af688d846c410a93e4aa3f4963eb2bdd1d984abb5251f1746225a6be59627747b85e9e0d7fed22ecd07cc343c7859bb5cdb42fe85aa4eaceda1447bc5ed7267579ed56677761ba118e69437d60fad67faa45ba88134c00a5b08f2eb3a2669562d9c5a43089a468eec0c5228126dd90728f748c057ef38d74d8a5ae05f1b791c1e950ab2e5c9b38d13f355547248208f368c9b52835fc98aeb1a1a4f93f4ad373e457320d82f766a2c6a50a0fe223da28bbcd45d4afb3415716ba2f502d6649177e4ab68228766fae92420618df0cfab0b2b45c0c939e7bcfd7bc86e7eb20cc41cf4a4b5d7ea9c1c8b55e4debcc975e888deca2dd7639dc2cee0916b1a9a304aa0d10076a9e17734ac3403e35157c003f2a3622d3f39cb461719c4c747d9750631664ed80683c83159dfb5850ef6bba95691a3d440a8afeaa372d811f0c3b6dee5be5949ece2b0f951571c7a3cf37dd4e04cb6cea5a1a7cfff8ea1f730f4fdcf869ea446ce44e6e676caa74e6dc661248821a6dfa4d9e180a08d35a950453b658f73dd427573aaf82bd9a89c534089243638dd301e9a01c58b88b6fab702a4a6714977066cb15125c03d8badc93bbd94beb3f5eb5ec8cfccd558ccb6e009009bdf3dd3f6de3f9b030a9d1e1f85e36e75e4b9a387de4be98c9c3983ca73eaf254c8b5d3d72fa6b704d6eb38c36a83e9ed4de4088fd39f222aaf64f1d2ac84ac03db28fdcce46e9edd5e064df9427e9e65b725f6cd2d33d99a89721ee003c988e1adf5e6b75296919a2904b982231e935b803d14a56e2053e9e7db292cd34f2c13697cbcbebfcb9c3254288104bf8a01845b19f580cb6ac9c4c14336d574670cead02845fbe06bc7bf1054414cc33692dcbb79118f8431d2bf5f49111a8bafc4cac66a125fc5373e9ccdf6768e389054b225636e6f288eb6a2c1f560460977e78cd2eed8501d23ad5f901764e5dff41c0ad54482bd0cb9f796b81065b75ce57f0923fbd92b71765b42d5d7a717d542ea8b0d4ca885cc87fa77bbc772704e9e0c4f285a2005e73716a22df76faccc660675d91949b20f7745a7e0c3902960de96ff5b4b37d64ba751d3bd866f9cf13e19cddad2fa7ebd2fa8cbadd618d52edc7470bef26e219393888bd1e6a7eb94c79cc08c039a6376ddec53f8019e2a8d12fea28183514f6ea017985a1897445d78a6902f56274c20b1de62c57e51774a452872ca1075449f498d2616e220f5a53b75c437c103114cd2e2273588f1c8b2a3651995f89a266280dbcf9b3ec1dca2a6bad59733c573e2c15cd6c16af838a1886d77dce3d59851d8c5da317c6cebdae8b2507da2991542756484bd1b259f371c4aa0018b3dee45e8a436adee9435f416897b7be6c70b884311b06ebd1e55caf52957f5ae6e0450cb52013cd607d56c0409b9c2e60391a14e422b034fac4d0c80977abc5b9b149d559b2dd62877bc61023982cc2bb5b16d3a324745251908408beb073d6a1a8177d615135dd04b814059b30999a5085d4ccc68c817dec50f7878d92d0b48eb7ecd5b6cc83f7c23b5fdb41bb185b8371a609395f7b58dfa205fa8a9e7b3efbd5c19a83901bfd881d966508ac44bb415478eb60179424717e937c2c8d8658dbe6110dc437bd274d85bf09aa4a16b86514429cfd8021e306ee808a83428b0cbd2ad5e9aa336ad9357d0157dae0da89b6cbd18542484dd94e72d9fcc6a040cb96a716c7c78c6f90f03ca5138fe473e74b1251f33bf72092a9db9d8f295fc1a4f42bc4e982b28d6e7b18e3126d9a512d5e0e2b028818b47a30887ce2faa5eab71d1f8ba1322572874c1f904791b8bb796f33248b4292346ffdde7658de0d72ea1dde4dced23a950137fb3f984e2bd8dd6161d363645df0c92f04492df526deb34bf65c0747eabeb4cbb622872baec8a2cbfe554088ce7ddd2654f6cf25b0629f30521e21c290ed6b880f644c7b14d2eb7dfd0e658b1c52bd675d8717c3591913f35985d6de9971c4e074eb23a1de2f0c35ff57b2a24659da45640b249ca21fd3132741d71b81f2cdfa8dd62e16ac36243ad8daa08fd352aa8af3d142ea78c6ab89be61c8bd69007b2b84994a767e11cd8b270503c4bd813e4d8dfa15c6cbed6b988e9e0b5d8ba96a2b78bc4bbb9533a2cd33d1644d49cee85794df983495c728adf9fd736cc1388b5e5bafb0784a89c4e2a1610571ba9c716e4123e505bbbc8bccc33950d3053f9e07ca6ba487363be44150a911ea9875ed80efbf54ea60ebd98252edfbe3287a05e11c9fe85393c725732cca1fd0fcd210b78da7c37e5e82b121df8cf8c49b581ac13ffeef93b62ded089fde0caacc58ea87d211bfd17b8f4e63984edfcd6a839728cfd1236a8836a9af92d45f06772b9e1232fc8ca84ec62914925e8520e038f6361468b01991882224fb92fdc6090cf95dce52d06197477dd8903be003ca9c977638c708dbfeaf794ea19cb8b4ca2bec4a983981c87037910049483deb2a547cc60bb07900f0c3d4a3de69606a35db71828853466e0f2330adba83cd8efc020f75ac44b36c1f2bb60421dcb4742141dd5c48a08a5589322e2ab0d67bdb9a23b5372fa366750b125063b73ba4f571f9faa75f1c5d5fb3327deb02ebe653f438b55fda6116da9f424c26ea276e572c9db335ceaa4f53ee59571393d0ec21fe39d5fe44e72b5b9f8e418e1f6e77b6e5f71f822d1d03a01f29e279f0049884ceae77e19f2e869acb02be206efdbed9e9fdbed39d3cdaac5bf37a9c73daa51121517301753d519e2ff4ae8508720cc9d9458f02fe2d2ecd260c1ab838dc7cfaf9b86a3315c19696e80bbd82207cd54c0a87ed72d9338bc29f171efceb7f4dea3cd59bc2faed95d1b08c4065237ac4874940b27820aba82707ae80207cc485c6eb2fa9014edba07c5db2547f5df95cd19154b452110d67feca46e61f3e8cd8993bab2e7eaa8d991041cfa9e065cd67cd3a2eb07c75e8cae4e63a0779225fbccbf63a7ff7af5f10c8fbb968c5746a0dd9a2ab94a11ace4cd8b18654ef7c36ff65ed58a6c6570e461d29e62b984729131c39f8f2a62017fa97560fa6e80195ab1571ce22f7468078e1817f064bd8271d108871c1a2bb8b9bf31158ae6eb3f2922682f1f5f6334528855afafcd434c8a254cbd515e1e546a429ecaa9dd838c49253964069036452ece1d1cc8fa44d4a69c1e748445e219c936da3356bbb3a4884d24136bf92403aa616089ac528e2d53563d519aae9b3bf149ac6071e1ed578cfade988107cd0097b08124f8cbb7e66ca015295b4422b61655daf5444ae6b52669fdfb81a831be8e13e1d50d05293012fdfd602bad526cf297abe4f89a70c6ed3db97ff6147ffff8c169729720904f2a6ec3400110c04e4b4250678308cc182b65cf780dd893dbe4385298d534d2815b586b2b35e755637de98341644ef2bdd2957aaace13d7222904d1a906a24d8de0a5fed70747228d52da0e3cf724fc8fd5493414b8d48384b74720e69109abfbc89927a6426c98c377925b83c57b626c73ee98234c7ca66043982c049e761f89958648fd56c379ac2564643be5eddb5ebb65e44b7f76eadbd2294a965899d9d2bfc05478ebff75c2506614e84978df26a703d1ad7d269227313590f59f4a86b5cd6dd12d5b7e26a2bd4343eaff8b9661fcabadca84121b27afbb3f693cabbb45e34ba9ce5944ab4f756d276c33ed355207f658fb8098c91c1c68af9748e2ad4d4292bb95e9a6d48cdfc498b39a799a8968969b6c0c00c7e90e0064b5961a3e851598e029331c5c609d7782b266ed80b63d9e34bf3293ddd700c9710df769b3890842c518fb60479a5f3da9f31bd7ac26c3cad8b7f3892431dc8b9ce5f6ba8cfa1e6e014e464b9f6ec6c25bb264396bf9d5bd28ecc6981d73892386a2adc783bfcdc6980e270b688cce5ecb952496588d537ae7650d06c5d3ef78acd823a76ed09a91f1c525e6e9514d62b65c7510d9dec5df3a3220f7e7861470d0d1f224fc6525fd26cefa83997ae092fa0d66ab3d6eb019792c68076847094c0f10985c8ae570d5e01f10f79f25ae86454822c13b8aaa64e0f9b3ce2329c582f22049519f23494f93e5e2afbc5d7ce14f8f1f681e4fd1968c4a0b8767cdd5f103522c8d8f7ac2f285c790a20a697ed2948f4c76cce2deebced52fee9c80cfbab5da65fe56862433209d4ee87052ecc507f39ba916a8b2236549099dd5f573e4607ccd17e316b303ebc9cc7413f434d2948bf3da48cab7851acddaf5114c425b24b8bf4a0bbc67930125553b944d5102c1f988e5b73a8eb16070f32a1eb90469ef78f23009435ef1a52b1db82c3fa2701fb5cfcc9e78166c5f667f42caf1b94bdd4243e4c3c89c04574f82668989120cdec4b6ca127b9bdba26899892328aaa8b8c2eefac5a2fc04478027d51b175056a4c076d098cf21319f04720da62d534d6b9a004c97ce3451e24a4fc433b6ae965a228d84d2454050cdf0c03263f80265dd9324c8bd88b1f8513d240aea2033d507727983c5c27fd0ee240bd98c639b1f8aa65e196b7e276e31014be7176700f9b3960e392df18b15e61931a2ae23a257d6d1dcf2600fdbae8951d4457545be1d9abbac811cb1711de94cb54cb9f4afefa7e8c85c70d3702eec23299ad842f30fc5a0cb7b83cd3edc76a8da3edd12bb965b38da3dcaed66ee08566620d646afd45478f00b9a587f7bbff1c4e61bb29c3995a6974f4650ff93eedd9b101d67795d887da056644ecb56939765d1351b3d7a1c7d7af3203ac04b06c8d57a02fe6dcdc6bfec391d194ed2260184f78e68cef84050c2c3af392c4fdf3877584a0da5beec98ecc00fa51bb8ee9894975c929ee1b76cebddbdfdc0b978a91f289e7bde998bde41fde685490db6d51e5cf415f691d646b79370f96fed253c6b6e4150929d14a5338c4b612d560498fa1b062d23e062befa7fccbd59772247b335fc83d05a40315f661545810063b52cb7e53b595633cf33bffe5b157b47661620b97dce73bee7bde91655593967648c3b3c5ff8aff3cf2644ce531bfaafa02de9e9da3287f5c0fc16d798e5fe1e93ff5cd5614b879eff984af3bfbf3f44e6fb5fb34dca4f3e8bb8d5998b43fd3544d951e4f59d826bef742b1c7cd556b1f413aaad0bd1c5e96bb1f80e3441ba7eaaaa4ab5d49ea66ac3ac1ee3111cf2262368aa4ee489b20aeb2dd36ad6285e56d709d44443bda4af35cad25285ead582720380afe3c25b542ec902fe8a5d3b06d1ac4fa0c4aaad7063a41d986b83d594e2d114a973773cf88683923f774726953df1fff4f7804ddfcedd9121b198c17524bd2b9cc2fff684e6e4fb7a383b7ec55d06e9151aaf202848b9d51b7c2d0fea68231aee3d62e303ce7ee5081f9d215b1d5113aaa8efbed6bd7020d6a950978ac86eebff9dca7f7a84ca7f5301986fd32ef74b7a6ef75faa30a7e1e755cb84744c946f1e2fdd74df248856cc438396b22e872663e9c00cd55a6ee314381b0f1258ff1b08513d12c0d0ae67da2aa70c66b28a24cf8a7e745910273c2db7c2a5b1c4757526b59ae58115503a52ce3a029a622aceb2f3a68910574d6ab307e6d1920de8ce2f1c7c17aa5ae973b68d4726bbdf039e82ebd35161b2daacf295a83cb46a4d9142d2598d62d89004929006edd994a083531c1982d56cc81aae17e9012f8b9eb9149b12d54f9f2b13536abaf9f3ff528308a1ce54c3c397470d4ab945730766982bbc67f613610b4f7bc8bc7522c1068bae67662a4e6388bf2bf87f4d21d93123cabc299a5f11c87f0313547061c066f78bf37d6d30ea6a162279a1e585bf038349e82b37d1aad4f5dfee8910f70c9277e5e1a638222f19fa65158bb1c529f67af0f3b57ebf57eb8be998c29e418e1863890c72709223dc193835eaeaec7437ff56859a2e5321a2937f62e176f7d1ad0e7560a2ef540bdc75aa645c564a054af0ec1c064dcf3759d8e762d38e428eeb8af2b66a5a9dfa670e5dec31dc7de6b3ac9a9a49444d8d1cd9081a5b68b2b70d4f0f353ac60eb16e7c88ed96378b3928d96611ca67d36d4fe32363b3a26ef5f264bb2efb9a66c2c3313b828caed8980067e1a3f8d9314a4ce747ee0471ac21de2b89a913d36cb6627cfca27be7decabddee888cb47e448d91d1289e54ce94dcae2ae0f71865ce6324cd6ac6cc965579caa62d335e5039810a456fdc314192ce2cbbb3310d13dfe3b7c87a1f1135a9af6e99a6c76ee934d650c4a7411a0ee2d3297e80e394dccf4a896c52f88d53aa3b78a1bd8f5e480c74d0dac959c0fb1e982cc54425f041e7db37b0687b34e057a7eea85bad4a798b99226a565baa0fd91939ee757fa7585533b469aa9ade827baae953db5a993d99d5656254b102542fdd11cf9a42902a4719f40dca9ec9c5e9e55f14983ffaf4622790d9b9f1df7d898e7f1099dc3118f9474c497e61de4ea0e9d6423aba549bb7ed1ae2729bde30fa213704a08d050be746166ae1d7a77383995a2c633545ca1c214cc27c13db34a846d2882bef48c1e9c15dc61f53114ee4854300f27f5cf8dfe427f2aaa295ed3a5215d9257130d045402343a90d13519e838a18b801a46c75b60df55a7ce3392141380ffb3a250ab6df46567e6a79edd9f790d0e1177d81cec383992c35309a08c056afd277cbf4fe021c3ebb1e52d6dcb7ef896ee8cd227def5e9ce386236b496540cf92e4ed7367033fa6d77ea7d5ec192e370e9212ecd96ad2b9584ea9c690dc39d2e54924072b3ad26931403d690fab52a7be0e74129061d07c273663687e8caf57fa2bb71948d830b4e1e9f4917e3a0932952ce16b1ac4b89134017db3ed058c27b28eb367890c193072858829cae928c3427a694a7c96f5f6a9f70f5617a27e48602f1b5de6ac4c4dd4fcb27c62c554e9f53d801c433533df43cc7bc936b46d2b368846819e77d3d12b4e743ab1c208c5cd413159d46c65a05922694d11f52c13aac9dfed1f30d6cf0549a8a47b293fbc5af46503de1a11040b0529233c176486334cfccdec3ddf36c762df38b482a6ee7259231093bf330067735949c5787a6d12c14e9f532ab26199a69c9f3116ef0727fd68b60527662ce8906e9962d347f2df312b94f53e273a8cedc77c7abd0c39a405dd66214cd5859513d37a0933bdaca3e9ff3e048be75ea3cabf7e17e0a5f20bd132b879417eb149b85c9638633591f7dcee4faa62c51ecdb7a4e156b44cbaa7c27dda331f0f87b56cb2d9d2d79691cc7a5c8cba120b571bd88450ead46b9e358d84d39baa71587aa872ea1e325459ccd88021e6bad045effd9e2e89a491e367da6e7de457d2143608b142fc2d398e3089e35ca135eddb26f080cd6abf6f5ba4f99abf640013dcb7cea553b9c93c939a89105f9f30e05d8c871bfbe3122ecd3bb73a7772702c723b328436350a713d9b218ca5dbad9a4ac5ee7d7bdf4f6f22470da4f3f9c546ccc4ea5fe5777881289057816630006bd221355237b3a2f77b33e814af89d5bf06eeac90af297af8914109f351c8ccadfb1e1584b2cb5fb05774b2aa2e19372fd5a0848ed9228f800b748999e74f0182c475efacbdc0aeb305a89cb729fa8cfa31b68b9c2d8832c07bae209877b82db65ff87a7b7ff23fb4d47b0e3dbae5c822a76991aca879e53b95548f6efd681921df3f06646a19f1238d244a191d9c1739599493a6006d3f1ccced9c8b20f1377ea601996882f39094c4b72c2aff3cabff615d56078f102ed6a8b8e7f97126306c4f7575f41ff44a8862eb04854817e5cc16ff0c4a688ba49ace8eaa2239122684550c317e1d7caf5e55981e4d2917cff43c790b20d776d34df57f9c77fa0cc88c09cff2dc50aa3475916dfb43330c92e5c4e3a99963eb5ed2ce7588ed1a9f749c456f28905c87fceeecc237b6949e09a509755780c1f22b30e0fe1251204e940aef037a8b7b1c8136609e604ed0a9f8073b89437e5eeddb57e35b15dcf40f1806477cf81f15ca47b7bdad4d61e40a4918c0cb170aad3ae067a9a6a9847163e174f146da213d3cc5757aa0713b04d05a6128e7c1e4e3efe6135ab55d0844a5d80b41a61d9afc0140a52bbd38bf1f9f208d79bd3eca6f83834c975f100cf63c160ffe76ad2e2e29da6c5e72ba0272db29fe72ee0e3f5b1865e2ee8a4cc62c34257d1c3cdb4d9a0633dec19728bcfe2861a8ed7e8d068edd718d91ac7ebaec5472d8748dc5b0927bce3a699b78716cc55115c54d2e5ac31191b9657b54c4502ab170e5d7aa876240e99bceb994a4c766952263a7db9f3b00ca9b29f8492ee40babc86ed7b188df25ea8ccb81cd1682c334716a371ca86ca2c27898b95d9e69bced36d976f5e3bbd1f3a48e34237ddc1c387c697d4981364fc2277cc349a4b6c6a348b561c5570ee6046d09f0a9dd9360782fdd2ce09a3c09497ecaa288c4a53fc99ccf0f921367321a1875fbea6837bd2c18a1cf67df30f3de70d92a7f2aeed0189c9502daebfdccc57f6dbcd12eaf4f5126ce08526ed211bd27af7a59667c4dd845fe50aea581c56cd18b43d4381b83bf732a193cb6322ace69c26346d2d3d0f56593c3a20db3cd48ca8b83e224112d7dcfcbc9719d4e290890f41617a7168d9e319d00c8dd8b3421ee8a13dab31f83e8784ea5f8dc34f17b4a963b5e79a576a4617ef650971d8f733355da73a4a3b2cde4d09c66c4da6bc1ca60c1159145ba2620c8e2d44b59409d0536e213a210ff1bff8b77efe623a665bc86e99a526247ab6985c3bde467b4e522dba63aad594de032f8f5281cacea2fc8e4ce1052e0445a68229c22dbfde0404c95b76b668069a1c50697d8233b418b633b33d2f100fae326efbf3329d79f6d27f9cb827133bd887b3b8a025c4f9b3db90f523e46bee192d74a17517d5625e81e24473156c599f47ffbb5dd4d8c0e2acbb27479e1dbf2353de32c6a946ea5e9d478811ab61638ca8a8198e22d918fbe34f4c50bab346bffec4062a2f6f36901cbfd330f144d144c9505ad3f80c3888e2989ab64a4ba39f23fb9d721da53a58b9e3a525c6cee92aceb47f3ef75cfbbb803c9973291ad26af9202e451d93ac625206ade1386cabf949bad932c561964ffb5528887abfa4fb454cd1bb930fe792cafa7eb5e3ad9f2dee2c0ca2e05f3d5ee15958a475d1d61698b037177adb2536ab82a4db2f87858b24e3ad84c5cb2365d44759e677a1c2c044245e12f5c3e35a68510d0c418728d30545ab87a4cb6383fb52f7e9aa80742b013bb6385be43cd5399c7d9fc3da01e69011266bba6d837a54795757c6911c9a32c1c726e1c37bca6af10a4f275700e3b38771a8d5800b98d23c3e8a1c8cd14678f5262fb9c81eac823c6f49c7251efddc0317b7e048d307ca7bc6543b4176d34ee93ed0fb53e74638a4e877085b5956448b2cc6e9364c46b1c77d2f8e8f80497e3251cfd83ec89e5a78646120eeb3cdaf88d47ed37e28db7929705e46a58ea3568c3db60b31f60a89fb59397ba03f498b9838927d3ef5344f998a8c946fe9673b3d335cb6c2b4f2b396622eff624eaf6e2ac65f8534ace1bb12ed22b66babbdb05a662f3e017cebba712d55fb5b981aa3ae5cc61c5fe12d57ca8efc7826888d870e4776340bacc21de3564b29daaaea43ce5f3c015161e694af35f9790c508879969eedcf7e2c5c7eeec7451499b87ec4c0e731ef14e4626402bc351192c184ba7b635974eca7861ca73b743d50c65788bffb29b7691d3c10b9e34347b8e3aa58a24ebf8c5389f4fccb8f55efe1359a1da3d665d153b74c662bc0c6e9cb1c7c7773c373fb749d883df61e58afea72d4762f06e234b980cbe2ef12f1f42c6fe1078be4457f5fe9445231b96b95f0c06185051b46cc673eef28ebff24476370e52ff82eab63954fa950f5a7fef9eeb436205489f96e4ee594c1fe8d011865e69eec3bddce32344f66b54f77cd2f28d55187cd27c9656611db8a637a1ad3727c9e7b6adf954da16ccc1cfcc798f74ddf3ceaeb0ab41ba27e61dee994791468d2236adf5e609f2ab1b57700089d98a9fb433891f5c74362ce2db3bf78fd2b5de893e4c1c1ac4f3d87834fffed9aef275592930b8c2be45f07606df5ecc106ee0e44f39754d0234dc82f6a58baf01f17216052fba669d61b681d6a67f8daa0321efde643129d3a6656e8b9ae2322e14956ec61607ea71937a6c56318ba057fe1fc2591f3abfdd37e1eb5a1fbfb2ee52427090eec37af886cdcaedd8e3a317dd91020f6701e79935e28a043df74f83cdd9b6f70859d631883f4bcfd919e3768cd07e9f0ee9db8dffe1f3f71c3f0fac80dc3112070e61719ea3b07f3a419d23fd16b35187f51afa9beb3731598ada11cdfadaa7b58f79561bb3c129f9569c843ace7ef20fcb0296828f158816a0e61f6300cdc59f8a67c16531b7de310d386fffa87c9ebe078c41cb9304dd695e0feac12aef719e5e442412bdb90c24ad775aa6f41ce1f3365c4c13168471c3936e5c09877d9da974e3fdb25cc52473bd662c7dce326bb8727d640d5120cf549280aff738147ffdc6c127f3d83539058c1ff940faff25e0679d28697b4eaae69aa8aa0886398e315281410db4469cb5a4c4a9aedf11c39ab49bd1dfd1a8b02e655ccae7ffb1bee940f1d0a5b559bf7537223d3ea3a6538677b70079a82b043edd9ab77cc5f53625cc1946ee969b9ab44a06edf8d792b57dcc185137c0d3eb20441ad57ba0f7133a00f6b83308bb94ad771ca91f0c923861f8dabd0e2fde5c0205f91a150764dba66511ba3cd5710a288da8c79788d56f1329450bae719eb5ba2a95a58237b451aaded78e154d0d992ffac2e138fd4e28cd2f58906269688cc089b2a4f454d11d12163b52e5382dc0f25c8da9cc07be7343d7b55b6c41074eb8897fb3abb354c57fe20764c71887933e78f87d8fc65720dd9bde75052fbcbc936091d2b7508855c3b5da845b4ac7a81970dec8411a7635802daf888bb812012cb72d7db0e1bd6b82e67b7c4bc8a8414a3d5e343dc9c856528fc57f446df56c50c50095df49af31b31a59163b2bf46080f58d27ef159081b16a2310bd5aa6a0a61b5483fb043d7fa8a17c34211379fe27f6faaf0e70f2a18b192d75418d49072bad86379193cbc6af82c361407c4b3f7bb710ceb8c782602f2be6d3b73b29d39d53af68bb3fd42df4e1af874dc1080ef4ba80fca01338af020af0fd098abf5387d9fae25c7d1b8582c59b30eebbc1b0e14bdf71224166f707c4b018de38c9b2b8f62a1566b6240303c673c89856fdb103d5363f5639b161ccb87ff831162437655cfdb6d5f8d799ae6b168c045f511f00e8c71fa57740129d7d08d6d51bdb145b8e5db6d5578ce6da479c883baf5ee31a6548f5302d12dd763c4460294a484dc43b349f8f014fdfd96deef12507b021d79ddc227661ad20c2541668bb8c139afd2831ad0dfa84736cd8a912e2ba6c511076ebe9c52d7ea48cc4c0ed28eca27e8c5e6ab4752a294f9dde43cd0cb65cec64ad1c0b1a2ce1f0c6fae49db877ef9c68f06a66d8b4a25d130fa908bed07cfc30a74a0be0647bed4c0783e9fae1e859a6925fb1cd41b1bbadca6437b4919d8c43c9a0536d38ed43f602ea9da28e665d335cc26bbf80bf742dda9d7f77fe04a7cf36cdf7f4994e05eef2d1b9f2593f1e83f75339b322301a3f3d624249773cf0fc3f110b249a7e4d21a33980ac93e732c6635a6bfba090fa604f0aa155b5033be58b6ebacd58b7dffe2b66ada713d0ae929f8309199121b92699b549891b7d4951df49317870105892befe30558e6a01c4ec442bb0f2f3c27fa65ca2f369827bdd145dc09b0bad259ae938b7825d7cee68b177714bf67dacf95927bed57c3d955fbf6d39487cda3033924f8bfd78137f25e24f67ac1cbe4cef96311fac9e356f82fedea93212a0eb89202346a2b7e36e4cebcccd0f5ea1cba92a6abd4bde4794f1c771f39f6975ac7025b7cd3c3372cf684a0b549ce628bec5219334f4817298b13334accbe8a94856456749feade2b714b06634c1489cc61c8851df65cb6466333407c4c2887d50b9e7aab5180cbcf5884b7e414228f9c783a73fd6a3cd42951eba62b78864b875bca9446d0ca18c83ba0b3ff4c8b9d93c4647cbc5df191bb72f290346bc985891786f1431c0de55e9885564d0811e3700007b89884ce4852dfdb9cbe6d33a3967d5bebbaedba9ab56485649483c63e79e83717ed5f977f3ec4d1bcbd8fbea54c4dfb1031f2bd751d28923697fe2a6d5aae5908c1e46d61b16840be2e20d9c3f0e865702c8e395b7272b97e0bf95f8cb08ff6e186b54031bba6bb70630cfa5ca786a47d475f32e4afbd209edbcd89bb7129068bb85ba1a698a86e89f9de13e5c3900a9e776c68b10d8de07d7cad037a1837459c701f24a6714a7c97bcca13ac514864aec1d4b1f728ede1911cca4d03417a264659273fa407987941f3b397eb853a56c05c3cafc8822c47f460ea9be4b7624a84a3a0b58fe2ec14240784ccad496a5392dbb512a03eddcf30af95bc98f90701870cdde830c1fa7e387b712427ab419fa76fc8baf94d7f89c4fb016353df7f5895ec7f9139eec24c6faadf5c4589edd5a80eb376b10fb227f34a05edbe113dbc9b31896179143ae55363e7275bdb51dd5cf61c294fc53b9e58d5b04c85c82860ae0a62a6e46b692f130107990d38290ac6645b1a5012842eee5505f836041b4f25d6a7040f2c13f4e877f280ce170cd98ba13a865a08655e14c7075ec4eb5fcc5f426687251acb64f47d0efcd7944a3cc525052f8e66bfc6e5d0a97d16fc4a5475e20cfd7b1c04988662d0bbd6d78dc2ffb2c26e1f7a1a3bc8e79d7240959d55cafd21727d23bc22c73515dd816b7e00d1ae97927b64db44a4dae5099c78cf414c6db44b441a5048a0653a3fc2c609868963684a95c41d49dff6b0a5ee37f07564d074d411fe9b768425c5fa7f6cd183038114f5579164d3e1a4d246b5a292845c74b5f8b60ffb2b2a505ee0ff00b9c4f5c00debcdcc015caf9a7eb1945a08c815518ff5f7ac1c69b1aee9ab339025381d139bf587a32bcb6a4b66714a4d813701a51a84f4200fcf0ba4fa64c860394126f3b2fb3d7093b4af37ff1f9c0dcdc3aa7560ecb199b79d9f65ae80ddb1ab269f55f4643ab873573529fbebb1e820d6cca80e6fb25305fba3faa7dd1faf26e609d41eac7e807489f27598c78c5c20934e6bf43be6febea4b26b344accb2163f749a5b52bcd5de23b49a74efd14923f9dd67ae90570011c1f7f4cd389c97c4e970c0f409792165979634300d772b8fe6cec22f896e3c2f8188f904ae3f0aff6394b763cab150ca940ba48fda1e48153a138700f6c76acdcb25b8e1ed4d1ac42c36f45019e799e8a01e31bba62bdc317fa4abfc115b7af51c6ddaad876ad7c49da5e7b87ad8fb8eab47cd8558f9dc71b54b09844ea18c19ca610f2c6247e66b897a9518539f90c12982152b7f136971f4fc30d0a464eb1a91d52960af45d48f44ba8a099e2b9c4c001f57e8dd7d958f2aeae22bdd515a4b19974e8d9133d5a023ac459d2ae312ab09a83962fcff8277c0bc82daf3f87aa561b647785a6f545376c2fbe110c00c36a49eb9cfda193d69a58aad5eaeb6a4f4969e275e3ca9b86b75332c61ca6da61701cd270b96a6f390d34835c866d6eb62462947f96af479945bae0aa7bdada6db4c4cbc69ee2e1d6fededbb8e31f348ec9be64deef9e644fcf822890f7c1aa7db2f81a7760ea8b9f0d158452571e332cb98782ae226b102273be7b42cf87ffa3b252ffa7b3b4e4476697b97e26c92382ef8c3bf2d9f644a77d824f532a6b2c14b60ff0238a381846bf4cdd3243c33f5efa8e6079e1fcbd7b7fd15573069a6db7b1c7eca1694ac87708cc439bf994d23a61950f4b10839a9bcba6b7f5af412d24f6ac4a892c0dde87956a4d8f2dd44bf05bc0c473fc151fcff767f0d4cfcbc2dc136b4232f79a7b68e897e0393eea73b0cea61ba95ba420775b7edc3f4fa314f124b1aaec84aa6df1ef2d03ea6e778181aebcff5a156a6941e10bb3096e0e7d8988f6df1d1add6a594a8a5c89861d5e703309ba9346b899ab0c329b3f764b4d61c8fe2ae487831460b5d08ba5820b6da419eefc5d37a139a6131e393b4ef401d8b9ba47ef638905a8e4961961d5bf6bbe99823bd4218735784f2599b87b265b106a4857682e0fec5181ef697cabd281384fbd14070f80be8234b20d5a5d4eb05d44af26572d0a735cef499834e270338b44541c7efae4ae9beeda442c2aa1dfffab997f59c773052ef2edb7fe052dab4c5db65dbfeb1e0894869d4db490d47412b1ab5ff584a7aca18f1289363e2388ee911d168c21bce8e58f3cf20a9b6cc571c1736ae87e3b0bcc56ccda4e2fe229cd2b971556ec3377415babde9b4b0c6e4199032824d9b69c44630ba0c5f6446e734312f9841605e0821c96aba80f88d78c7ef925cab6fa251541b0a77320f0b8845f81ed0292bfd6a196e24f0b2b389aaacfce7be7d4d9f6e24fe253a65be5d86d3932375a020959334920f979c9f4641a04ecb61de0955d330bd2a1b51550c2cc530dd64411817b5c965182d9aaddace778ee0dc8b2d7c5c4bd9a83da2af3ac6ad72e3e4adf2f6ecadf2eefcf52ae32816af577978a003c299ab9c562a3bb27a7f95df4c5504fcbf2c1ad5cf2c77852a5b6c90e5b31cd32a431e263cc4e3222c4701e7a5a2316be3b63c3fc9e36578e1cca7ffbc9734fb502132f12c82fa621a2eab57ab3c30e675a71f7652bab8756fde569c94196342f33f24644818bcef57dba96bcc60e6d65a5c894c72de3a21edd45c6d712915ff04ba2110b99707848a9ce478767b7b9ea85949b6d0fa6a0b3d99e8108d29acc9353a0ec5df2e9a8484583b8da53fef73857c8e4df477496eb592ecba72183776ecd9b41995a216ae68e8a79e36989e27093e0e0987036bdc1c17cb9a81adca7b0171644e4fca1159927dca8d6d2f3c1141ef6ea16d5aa841837931ba5b46c0c64af45f4cee1609a42d66e86aac1f3faf67c120e0cd176dedd9e9fc279d9691d596444178bb5b26170a8c3085eef0f35e1fd9d8a874bf31e9d19985269f14924c5505169a7d5528b8b4bc051d15e1259cf23053fa0e0d29245f3482571493dcefe3d099ebe913aaee70cdb4492afaf61b4723ab0979d5ad1cddc1742b7aae55bbb86dabb3a631eb320d6915c9ef6ccc78c3ccc15d3363cf0eac553b03f1b4b025f834a50c5aaa870cf09a95bdd0d2f9871e48b19534d5216ba005b4ea40c71b3bf79cb1c4734d88de31b7a66c63163ce83fd995f1f2512ff0c834e81cc9962a74e9282b6ee5d86217e6e88652cf35c51da77281263c3d44095c0febf4e5e8388bf12a6df359c2cc63a34e8c45fd556e1b538816a2104e8a90819404c14abfc4726852d8d8fa97c25964e9fd0d06f4dd195313970657b6384d386efdd2091886de5d61cc0e06bd051f8f6186b8bccbd327f08165880008729ff1d7b901d3f825077a8d61bc53b1bd44f486d79bc57fa1378bd0944937266582e56d3b74fa4e676bbf6966deeeb7506242a4dac6b6c7b2a5c54d3e18869e931d1dd4faf6cfb32e757a5d564ad9de1dab6dacda84dd561e4c27e5e1cd242628f7329daa0e7b0ec9bd320499d029d2aab755fafbe74bd9aad306bb167964c13ac7993698f47ecd879893158be22497a10b67e87f193d5af3e96ccf7b82ff3fdabad36dacd546f4448caf52bca6fb7e97eb3813f23ed7716f0efe9b23dfcc2ad761f091a9973d6de38c917f5035bebabfb7bbaec39fa7bdc0b273647aeeee54e9714a7106fab5921d18ab42259f9125400a626c4cb1ea796ca714d94e2cc9b4c96d4262a631a88e5fa4cf6de13c3d8ca6bf215bdd93b66f2ff3295c6f67bf21fab6d22325c06cd0d09e7640422714fbaa8c6ba9cc48401d58758d1b43fb88ab8456ad22a3ff0e575714a9271135d8e296c92f171b6165eb04a96fda056b80fcce5738ad870de0b7a13a74145c727b507ec3b341fa4ec486061579759280d30a22e37165c97f6256fca11d1a8e62073e32da40c02804b18d6337d5023aabe3e59d969611ed34d438b47ea733766f06f5e3c2aaad6e9791a92dd087d13451ac2e39b8482b7bf90571754ff26bbd22ead29e6fcb0862ab0c19675dc68180149e9e9967f3415acc33d350b08fa347b806542b18539820f403bd792345e00642228772efea9e512a32aa5c9f18bd9e6d2cd18933f2edca6d080483cedbe91120fc3b135a41e9bbff80900f84d642050b9baf02e38c47af0e46dc94a698922a83c3ff82418666295d99dc0f701ae9b3fc0f0d1888b20d2eab9d4c4bf369b689f1df99ba1b6b1aa613bdfaa6439d181fd5ff8046843cecb19db42579b6e2d93f36d5712532279b37c5ba09903f797603c15efbc1897eb2dee20c2e9cfefd90982949d2986b36b9593b59b3378fbd7c88cd885f4d2b4e63ffc58a7778064446fe81be8988fc838ec4468fd7f687bb2e8138f1e180c270556186f4b964c6415caeeac6ded061d909ee5bea32488f584bbacb5f101eee0e1e2ed212eeb255d17a6f767c0c19a965d6cc309eca2163530c3dd8a43a0f8e6af4010035b4fd13272f9bbc491a260597ba32c085fc33321ddf2f2320feeb93b87bb72d7ddc47eabc8d67971fe2c27fac00de2de5c5997c7ec66beac4c865e972d35c78a8b93269dd09e3fd531a000f5aab3563617a678edcfc3c9928c9d03e041d7fdc827d4964cf02eb1370f64f368d01f87ffd0d3fd40fef436faa489af99a495d8ed872768a3ac6147a1b001cea182f1f4c91d63751add7bd196147a4eebe3d4f99193376c6d615facad43a761a06e9347ce771908e50ca7d2888f855f63caee7ea28b20e8d29b48ac3d037791df1fde91710851763a651e937bb3bf24c5b9dae40477a1f79e7d4ee3f3de2aac0aa66f7a9e5758f195e7770cdeacab0d31baac1abe0fc8b3bf9f624a4543e57c1fc09c96a9c291ccbe1148a40249d7162e52f63265e24a52f2276cd3136cb0b50b1570444bdfce2581e63ce80c57221317bba206eae46a8222789ec6862b78b47672fefb66d90da67ad56fde376f7c967e70e9538c007e087bff340f741f23bff83de4466340aef90853dbb75e0ffaa2128b24ff0a41b85be23574743f348c23450b8dc7d189862d266c87f669b48329969f2291f63cc025648a2659131cdd1fd7d85ddb764fcf5a313028583ec4be64c98436a1a37524e19f879927c975d70e200773ffcebc4ed89ae6397cfbfb86dcb3ded1e090b8478b93a7199e5969a557b99c5bc10c46cfa77bac53027d793fdb9c2c4854aaacf13d10bd29ba583e3aba103e92341875b84d7dd8a2987e9ddbd95ff9b66c2d31c903095f83faf99e3caf524e542c7f47cdc8d7a8e222cab3d17eb7fd10674b78b3046901999c15135cccabd03c2eec5eabc5b50122490e701056cf124dab69c3975fe78ef1c3dfb6cc8c064c447abf5b2b0374342e65eef7a6c866ddbab19ac4a2c8073d6ff61dbf9e93ec4370cd49a8b30ba5a0444bef2c73799f8fac84d7c4750d443e779f49b3b93d74d402bf466a2c1c3c0c4bfd6374dd7f7c6a67987025bffdc297b75bd47850807c32b4210f384c76658f21cc436e2a2cbc9f6e943e7de0e48497050e97afa2c418fc9539e1f98c4e4293de69848797208a543cb0318ecc99aa926c4e6bb4f3ce2f3911e84bf9547ea6bc3817ff7a4dc9e00255ca02d3a520571a882d73b567b523dacec9104d37dd830ba4802df2c3cdfaac1addb15085bd81fc5d334d01f72df91188e400cb7a51e7e57114b07fa39e443e40a1857bb9a1fd29849b5eb48ab0ea0c2da86c48b6a3ccaec66306bf2e3f6ed87558e3c8808b68a81cdabcc4d012d885d8f53c973b4aed03bf82eb12fb3e24baeeb4bade775db89ceab4dc76769d31e0f6b9e2e6b53ed5e37a0f4c7985704c679458464d57a6eaa765f7dff26e57657df07132ab564fa275f7c7f8193a85f46e0f16b99dcc5d5bbb7bff8bdb09e7714bf2d29dda961036634ba69c597af8636a4f3c1e56a70eb5acfd183e257358c71a514af2ad8fab35bfae7b14d91ede1b66447fc147ace8fa1e276b531e70a28c61c9b397d271f8cbb4ef99a1fdff9a0f8ddbe4b3fa872173728bae54ae87e85c7bb5ac53193c40b91d9ed10c657dd77e933d0f290e226ad9b31b0f594f63f3971ac93d5f27a961bbd946e34847baab5d29b72184ee81b01acfb517800cf420955d893c81c89caa9621c59a403dd0c29ea548537230b7ed20ba79f45bcfb4ab59896d23a0b944c0eb98e8b982e55ad62f12b95234b9fcbb18e9eb7ff5e325cb72c13bc80deca670e8da936102d4053d8882990bcb7ef26369b52eb3fa5d5b4cbe9ab369ff5e16118d9bedfea3fbba9ccdd542f924ddb577f2636e9f695c69379be95171437b6e8c01857d576d6376d0718b0cf394bf49ad1bb073c1bec05cd3caa84ff3b9da75c14af3fcdbbff4b55e4a8d413929f2e97bdc347b5ee2d97b25739fad076915a8b958767a8258f1915a9e551a680b639175b7c6ef10b11b823c2ec6408aa301d6a2a0a58f2cdf0183dcc9bc6827eec05860def721151d9f073c7b10dd72d19dbfae4d9ee6a4b90dff102d73a159058990ad8e432e6a85257938878a7f25763d9a3f5acf7308ca2e29fd488c97e7e2e425520410a133a0a3cc1d44de701d8489fe091993e9b86232cf91292e3b0f53326e6a19a82c5c66c0fae53065a1bb31083c137d8970bbe7d795308b3f6e58bb58fa87959596aedc894674345544e1f354b4c2bea5b979534fea7cdcb7b4d8bfd131d691c1cbcad51c2fef3b6e51f6259ce5fe29fb72cef3396e543d6b2bc9714de4931ca311de8ae6e99f25746e1e6bc2452d6e61f698ca59c90c87f6cf7f72ce7b98a1f1ad84bc7ca4d751bb9ada9012fd05bb158ebfe8f565beec03d449be33eb9d3750561d954fef72dc80ce13a3ead4194fbf03b84b9a0f641dbf38b7141e19182a12c71cfd679d1ec0057079d4a1548b4edc91aa84c8506e4cefd3692832a01e1e2105ba3464e783185ff5ef3a9bf269eb9bfa3ca7ff21972c009bda4a9899dcde5407ab3e7ff151265159797cc8030223fb9fee1f002f1e1060b71387af2f51041238ac073381291ea896bd0358f549f16eab899f3c35ee6f3b40fd9cff5ee8dec6aea5d1cd419826b47b5537e532e21b2342bb70724570a4e6b11d4bc50d57c251d987b1a14cbd9bf259572f95cdbf533976355cce73e1b83c0439bae8e2f64f816fc7f5d95cccab433cefc5b037d5f43eedaae5b5ec8d9660344cf0ff056ba31f875fa4d92f57a49576953e9a8ce367ae634ecabbcf2d0e55db5671f8bbe75c307436af76d1d89d3fbc626fe8d0900dedc6c2c70b1a4b4bcab00fc73d29c45fdf640ca12737b6deaf481e7a6edbb5db0e6a76911a7b98eccd8ae5037a3d1c66e30e6c25d333cc5e24a21f5ffe62874e2feecb83f3d68ced89db2fc3a713f864e9394f1b1297e3246882bdcab7ad391f745e0c45cf7318412fa929dd2fe2fe2fb0e58ff9ea2a99989e77452eb653c53d30334ad786e13bebdcb910b86822c69e6bc25c22f26ea6e72f6a64186398528e8ad0f5e5c3fef9683e45f28344d706666fe868642d9a2aa9532998902ecc3b31d70adeecbb9aa9a740e39c15fbabb22bbc5dca4c6778c6a91390cb3a9cf00c9a55cc40c00b94c40beffe1358f421efc1d8a5e9ad6e490aec96df536ff855a5c760073defc957de55ae21c9c396d8d4ff6618378cf6e7c697f7650c16d5ebdb2d86efea182a3adc9ad9d19c38243e494afb83a0fa346f721f96c23ddb0638d2e82ed8ba7d836213dd21708f46bf4ee4dd79303348b8d39471e4b6aa6cc7e41234bf15198fa203a20986bd5aa72deaecf2f70d50ade417b3651f70984f6936f38d73ded3d8745ca312190c034f374c6a7f3469720cc7c301b2287e7b64188d1069929e102fc948e1454a0bde0b40735a58b9edf46c01fb37aef538e46aca491a90acf109b42e865943d343c3031f0084db987938ca4aff237a621b30536c3d08ae249664b5c934870169159f38e98d49d102f33a077c7112c7371dbe67eecd9e71d9f33e9d31930b9fa38f11a7f72067ff4fa2833450e3640cf4e8d2b7d5ac7a3c8baf4e74617ee05a25b38f33679bd1e6dc09d3439c5b7b785142f5c91fa27a16d56b93df03b22ba9ab51c17f13986a333bd93ce377fcbed033f678012aef72de85af734c7bc72413ab8b30686468cb927e0912b78bbca0700299194168b2afa8cc8b111890f1c01131f098fef529959c0d25f703ed93a5704d2bf39e7b8287b541c36dace8ce1e854cbbb22f3f5ae47a251c2069ccacd4fc6a4ce8f95b80e1b9a5c520214463dd7c3ad4a557dcf267c242f3bb3b295f1642b634e35cf4c1628e048056c7b00437691a44cca0cd4bd2832fb9c2f06363de74c683b5a98f967eb62d5b8a5cc658e075a58b68f8782ad6a9efc871d46c47163d857358144d94b80f321aad47020f1b8936ea6a6b10f1b98f94691d0b4e9c306f57775a258e96f77d16beac6bc760dfa37add16a1fb54b750563bc57bdbcc143563fe4548e72dd6b5c93af6b1a780ff5e45fc67657b0faf18487fdb6fa2aa6d51b2a374cceae55c4c62f7f3fbc992839ff6dc345335d8cdbb63749a6c23907b7c8dd5e5ae952a83c35cff532644e65c1ea19aad959c4ccbf75e66ee4778513736a30951d6f72fbb8d280438f960ff4452f53de3e9e35bace7763cd4e6f7299bd2b6ee0b96ea65f2eb5578d578112cbf468a6142d7fb65094661fe1fe8a0ed1f4cab07f81074695f351cbf51cd763ecd4c97e413e40cd882eb085bbb0ce0f2b6c6ee6abc59403cc1a6963633eee56fd2e98b751edf34a5f2ccb49f054a50b873beb2dac2d696dbabe5d6f7d478c33c873f6fe693f8c2260add68ef1fffd3e387230a79cba51fa5b60441d2df361e8c875ddc1f1e63c3488334b5c58dd359d5f6be18e9c4839a132d8e290fefbf90990d57213c839e96fd1dcfe2ad91b602165e68c52ee0bc6c119e84d8691580c90620ad17ac767b9e40b0a5af7ec71ebb0d5513eb6d5f6fd12fd9b129af0f112fbfce49b5320954311f4642958e51470e51f768d1fea69214865247ab9d0c4a6af23f324eb8c83fd22ef1de7719e3e0e79ef32ca3ee49c953991955cd7f74a8befb1a6b265f33daf7ce2ec735d4fafe45d877dcb690adba77333b07a13ed62f64c919fc1cafd690acc270c416432ebe9c6b039b609dc8fc9ad9f9ad852e5a162700b98793d846aa65c57e95e8a37ae9fc3f291afc312cb30b329f4465a65079e769554b2f850a71c354ec456239101bad986565da2eb1fcafa276efdc7587f598bed2f4458e82b1715946c4edbc8acceb1fb919b44fa836765bb47c632c8befb28eb75a8a8f702779190c76c7186877b4abaa1a58c3124c0818955e1233e2639883f2bfebfcc3115f0b109288f1dc3dd438e7aa0a10e1423d37fdeb20a50ab8d6434cece3af70926ad4130b4fa35c79e0f16b60b1bf06d2b6f98043a82a98dd51307ba379a1f44cc8ec591b9d38025677f468abce291c8ffc036fa6edbc934aa9613874c36ec6bf48a3dbad9df0d25e81f37f74c6c35ae7d5cc9d574767ae62f0043e4986926d7cd047b9d73700d99e47b5eb857bd0813c86a0dfa650924bf02ae4e2edf7b783189a9916ea8c089416fb26a07ba0aa23700f1daf8079a77b5da8b51aefe06060bda24368e8fab6bdfadae0b605d7c552e76e82d22de3754d5ce464c5d3b65c06afa606ab32aead3dc08b4607dc679006e453e0fabf7bed8c5a5745c87de8bb986660c9156bb91ffdc2a62693087331d423570caf7ee4669fc95293513b50c156e4cff2350492424db1f5f365c2507fedd567c1d0c97fd42f9d911c6351af6c80abc713788c4f997d2ec48f57ce3610f5100e9572bd9d6d9916a9a03f774d2e8b97809c5731862bbcf6cbbb244f9ae9a82d205a04e67081f2314d4055812c85a321a2e5aa6c4dbe90c8e3d1f3a008ef1ccc36a5c30f94bbaccd36cfcdca69b390a382a912915dbaae8fc70eaf5618b718f728ff0e176c7bb81b42ffdfda622f865f76837b17c345d378564e72d74bbc59da8108cebb3be9403e27368c132e2a7b43ffa78392471a0ce2afdfd6e75025c3dbbf5f76ba4e9296a1e9eef023aca545a8d9e8ce528e953cd0987e98c534487bbefca3b54867de11d9446dc272f7083602f0272545af49b93bcb2a4ab51ec6408dc25d7cb104221ac87dcd5b13e30e5b99dfdf9ba992100eb460f2f36dcae4b7d2038958b1a366caed1733b6bb4e8b990a27ae8c2908663ce333d4c6353682a908df510c49ff66971173b5fbada39b9916ecf887ca8101763bf0630e76218712b4a82bf80472815988bbc93cb270fd8ab48f5b9e5742ddba0422c5060492ecae1958d83eb460f8421e0e5354fc50b44b75881d7b89f794f76f46e1820991577073dd149f74f9b36808536eef70beb8832a55e84e34af7c079d3f6b44edb426cc9111966b30c09f23f1c812ad5c00baf4215c56a255cf535e695af1662217c47de62a542eca9cb820238b094fde9086f225a274e78e97ae223ef24c9aa2dcf60e72aff5872cd92746a4c3c0d9895a224e3e5b8ed78c2054bc8c6b84c61ce2bcfd156650e2e7a39f63cd3ce649156fcf29d558bdb2b7d6131e40d9cafa660c4f02fb99e8e313eea1ccdda65809b2f73a13ab34666594d9cee3a7209d1462d4f0131a6e3d11019629ea98e8b4d8d11a5f3a6894d9dd8b8e2037feff3b9f779e07fbe6f4a067c72d912115de97899f257f76a5b7bb555fddace37b59d2b1d5265c9777fafb6ad575bddafad90a96d601253d098b3d81989e462d17413be6baaf541176d3994253d5ef57d245ca797c5b085f428ef1aa7b8e255bf1c22d3a7848353cffddd301b3d00065f54ab3fe6e62bd2073b1da92a158311529883e08ce0eb0a1145556b1d02d47178818d68b75ba48670da310cdab396f381cb7fe10a63859d6a98716670c1d5094519d9a8a3be93dfb3b328a0291447f6e405bbf4404a176832ee635964779031d5821dcc605ff26fb1dcf14eb93e0d0bc2dc4ac1242da24e58dd2999b57666d95504b7deb1b6553015628b18f59cee42095e6343c8e35c7c35ae696812e0bf57f86c3dec3b25ed89f046fb006a1ad83966a33edd3cbde9315243e7b65bc8209f2785ae36c0226f54ae95947bfca17d28f3fffb12675abee908d08c6b99f21a8944728bdb1cdbdbdcdb2a36829e226b79c7bc955b8af54fee2e66ad8b80a92138f7fe2789e78a98a7744709936a65fe12a30d3d90eb7248473cdf8de157277b6dfddf0a5cdecdb88fd3f78193afdddd2f5a4a942253ae267ace22fa96f3708b9ba9474c84df3f2028a670ee500fc33bc69893145552f066a64d931b214e32efedcdc434a25b070c2b2cedc7585558482b240fe5a1861d5c5338df75a0900753a72a8e3c35214ba71e11fd90bda12a7a0e6cf62ce351c9573b757e00f272c32c41dc34f30dfc0f17ba89082931db7c5ede897f89f76530ee6bb0b931a571df3e942d34eaebc9b72c15deb116fdc02eee40ec1261e6ae3d2d5ab690641c79b5440aca33dd0cc2f2f1cc9cc77d65658db9b099742374bdd50e42135c3ab2da93b15bedbea7c659935efd2af3f34ea95b723eb325ff000a137268da058d3dd5f22adf739a30e91b215e193aecb1c947eb62a94f4e915c3255dd689e7b66e6cfcca5ba19f7aeed7b672ad52fa7d833bb8b3e623ac6769d2d3c470158252042cf69a23e51277e6e74e52ee5469d710661f632e64233015df64f7f3a0fd0f104c3d8b183f3718f132bb6d2bc276ba71c9e4db869cc8a3ff48b8534aa71bd92d683e37df4c6d7b125f5cbc834b8277232a5f48a329e3157aa8a33139989e70f3c5bcd3634d9fb5b76f0fbf987b896446bf67634e1f9108983e699235f9ec69f10caf8dac367c9e9bb8c7b375c83fdf29ea79853999462979925bacb9155aebb933edcb265781b5c95485fba9aac10d6be373a41276edb2f5e185ec39a233aa574a974a5af4bdf2de9aaf4e818a075bde5002f86b5268447c4b139fd880747e3fdd938771cf84f7ddc76df2ea65ed8ce621db962fb1c6dd5e2b75f4c5ce39569d3fda89210c88fb2030249fc695e4d7ab7d10faa3b0e6ae84fa9469d720db24c6345a147d890d333bcb8b93635ceb4ba16bee1f039dbf614e536939e9a2a5a2ad782a15f531334817262370380f57ed60642c161024ab19ff4e840d2e153f92cc0ddb1a3970cbd01c4e26f3b71241af7c91f7e411d189e756b6e8447713a18860d8a470659fe81699a0a34b1e5b78c614560301a083e6c30762aedc93ab6e778e9e022e8a5b7e14b3d6a9caccb67cb14bb98185c46b804020e3ab37c0b2658c6923c3b2e31dd157bcd93c5168b135fab184c7af8b6c4594e1fbc9b8d4a24f7ba97edbb9a6b94739e10b7aa3aed106e634a776aba9b4584924fac6a049477e453a4384b0b55c9fe8b6721b51a746fb2575b8610cbb3e556bbc48bdc12edca4746adb2021eacd9fd0dd68986137cf79e2ec05f6644888cfd015da90d326450eade32a618b8c14804a4e1c802fd118b44d01538e2412a04c33e20738d4c37d654e2e624ba8219f9c3aab0458ff513fd5a23c587a9d699d3aa8e6449885c0e2862db8e1e04282336b969df454956b8156e3a28f147132840919428b395e865a6fbab24dd1e98f3b42f176f63d273c6f71c7754dedf7646cfee27a704cda877fbb47f55fcda9b3f37437ec3c3dcfa689056593f348eb0ecedf32ee3908556a7d35c21da66e903b92689073382caaf409ecdda87399315523867241e4e993e00fdae361fe6cd94c6d33b7e0a4b3132f1eb11ae74e88f2937d6e85183aa7968c6eb47555345a6d2f70e49add0cbc0bcae875034d548e199e1eb0ae895851a9f14122dcd9e85f29f141291fec842a35fee171267c2330b4d3e292435155868f655a18085169f1492d1955968f54921417badb2d0e6ab8e4fe70892d87ed5a73a6bda7d5248bc2a732c74f8aad070e47b32a6d2adc2bd92dd5a93a76f4c7beabca9c736838924ccfd32b471a6d529f6686ddab3bfbbde6f9102edb77a72b98df3dad8b36be0954a22e3c35be1cf7553c806a13109ca824b4f683c63d33c280c5f30154b8736b80f9199598d610f63fb803afd0ffd9d7c52606e1fecde6c9144333dafbad7bdcf207c6165e1fa9aadd63d481c55dbccfa192a567fc4014ed98ecb3a246d80a03a62745ff5bb73cae4ccac9b1aa9e08a71a1632e34dbdecefa8e89efd8c5b21c1d8be5369e6c57d1257774784efbd7427332ab3d2cbdda83aeb70962830437c21bce28a8cceef0139ab039ca3a1dfb3e874484b8fee7c9fe2502f2c486be47ce2dc969617cdaaedcc678d693fd79e0bd414bf274064bee8682d5943c7066c62253387b713b2aa7ab3ff5b142f9758e3a866f80364448d3b0e9bb022748eb1d7b8aaf27a76c3bf3f698e599e55bbd929e843d46f585691f9ca19cdd0a7cd32d209af078cad74877d9f29ba7e293efa5638939418c98d277299dc96bdf503a825abe56b6ec9cf74dfd77ab3e18cda132f11154cb33964b9c96213143e6165f0520a5ab43eb46d68cb3514989e41797eb79d6271b2c1e3cda918ea37a1debc405ab6975d607268bac904508aecffa306e4e66788efa735affa68a44104546fb0f0b90056a972463a51dfea90a0a075054eeb9613fecc559e7681d998c591da30c44502250133c55fc5f2a5a1eb2334401863b27360fc7c405dff8b5dd65a132ed14b58f69c9dc81f7fac10bbfb49f4954e4ba79bfa57fdbefc540c5abb4fb317270ff67266328b1b28be83f3bd1990e17a2ff6487e5b6fc0fcc296aabff476b5bfe876acb4c9fd08e02371ef25c3b5d4663d6bb36f8cbf3fa2ebdfde6a122c4828ae567b7daabf88ecd4bae4f644713006ac89789774aed49e86be3ebf0e63e7c85edeacd29d233716150faf2b3179f29b27fbef8133c693114e84b0f25e295d2e0b0d6589655f82f3eb6200a6e30c5b345e02266e2e94fe59d887bead9430759ec9a8282a220fbbbe4296d9acb0cdc2457fbf88bc3cfa2e742e2594cbb663887956434ff6a1555c04baee4c3171ff864901957df631d4894894bc22023f75b465384f5aa588c35d6f3ce1bcfbc4f35e73436e53944dbca3cabc85743580dd743c177a0b6c31ae8e6ac296c26c2e580bc4e36aa31850e73c85bf4348382fafa7d8e02e381efd77c7f5a11b81d1cca511fcfac741a993d1f1efc870f1d734ccc946b94de9b5dedf4757c5a6e416b66710971d472ba0b387e5d5cae0475af717334d5cbb6c2d34cfbf2fcd276decd3b0fe95c3fe479c4393e675d67357c3d73ed5b5a30d66b5fea5e55e3cf87e3eb15ac7db983d607daa3c5abb3b8aaa2c98334bd0e479ccf4182768bbe4f45bc80d97b9397beb7e13fd52afd6ee657125f643d1832ff38cba6f1d864ebb7b0a64bcc667ea5b1bfa756d9171265c78d395c6cf4bb791b3945d45fe3459f4eaa00b1ee797af40560d4a0093f278ac46f4c8044943a05fb39d44ae2d9d5c9387b7cd5d18cf56dfeee7c0f1557e05d26a5f4ee4a3f792333e65048eefe4ec79492c73c778cae82549157e61fbc07b3d9f1d774ed0265fc91d1ef27dd0da50558d0eaa20fefd31a78cfa5e6db7ff3b6ccf14fecfd17257016c508805a7f66fa0f0989831846308788b98b54a592994ecaa60c6d282055dafcdccadcb9504b2b94af35491c17540b5d2dd07e71afa5ab85d3f9f4a67260f343718d6498d43a40282359cf5cfaf6c6ebfa762c20a45381c75fd375fbba90a52a5cb5aef7eec97fd7f9e2bb2713c13ba7e84755c9e96b4bf8a252034b6ec40bbec8d3de77a9d6e79cbac6d53dc905bf267dfc52bc4efee1d3fdae9799eff9bb73d1e1594997fff97a0ba5e740eadfb1deed9c981f13eecfb4c430d44df1cc563eb135dee9fd8bcd3ae086c3a5fdfbce6690f91bbdf9f36cc1d89edc5622c17747d3023b8d227741e9eda56734116ab1a839e818df5ec13de136150fbfafe438c1994da6b40328a6eb3bb4f18814908ffa8b01a2f6513ac5c3eb394f57eb660df481a39ed69963528b339b96edac8b5ef6b93d077abd67ec727df742057584d342226d6d093c70ca59486ee769a5ad723ac090c437736d4c914d9fe8d298503ced7c5209dee55be6a13089448d1f7f2dffdd158d09165e663c16f08ff2bffc5b4959849c6deb67c4d0ffcb6e4c05bf6c19fd0bddc07fa8e582b41cfcc765c7758b304845ebcd61edf0e99ff9ee1dc7d2efceaf74eefb95d6affc4a79212ef3d097aa074b76f34b14cea3dd8233a41d58e7985129e1b40d8410de5620f9f39ddc1599f38af437804ff594d181979c4bec4175d27c615db63ef5d55980172cd06b06e8052a5bf0fb1d6104716e26b08de799bd2ed775329ef19c62f8ed61717577bffbcb7ea3209c2fad334726daeb175999019c9d850d87fbc8afd24853392a7e03c1b7c4b1791274f5029273be805ec1d84aa7243a146dd8e3294740a6994fd7b4416ec4eac7f6ca2c5ab9bb03d8030d823d33f2019fd44839cb4a4179fb8e575d6fb06b663c87d59dada12276015bb0b670e60e2574d6d49f552b0cbc056e391beb0b7b71b56a6fd7aba69f4e967db7610a4beac13ffb3c31c6c9d3776b3a84669d874859c79898da59fa7e58f9eef76ad51f77ecc30f53d078824dd39df81194df8c981a87981fe09b5f7affde213af662f9189eae710b410eb10f8b7aecfc78bc3f15164b137f8c6bc8b733a9b9dfced9867092d2fbe9b273b3a0cf5e4d7324171bfd21bf0a64d3174498a1b9af4ec5778906a6e91c07ce9a21f8bec1f7d51984f8daae79d36deb69c210ded9b2e3799a2cbe69afacd4b178d5474faea363e94164267338d7cf5d18a7f5ccaaf254a859ec0e9a5ed701175319b0099dad3160581e5f55557f7020d710cc89069e8e69a2ac2dba3ede530b38b7ce03baf5be0bff5de59ca951211390324d5c9c534e316c062636c74c144747e93b6ffc17f9b3ebfeece30c64bcb84ecb3bf6b2a74cd81b34214cfebf5c91075fadfad9071722c6ce9774705cf63ce2ecc145e098f79ce751cb392b78706c91ff67e7ee9f89845bca300a6d375fdb62db8ff1fac73ffb77feace4ba7e9167fdb3e5c2cc9a5ef6aa1cfdedc180af725d2f1a2defd5b429341da99814dbd75ae77151932a16156d1bb4e5c0ec22db09a28976f47639aec0059cf81ee563e345b35d56ce5e6d6e2de467a941c3d2d7b452aefabe442ec77d495cc5554f64068a97a2e75a5aa365d7012ea3a031a555df4939c7555f39f4d8bcb94e16bfee64c1efe4869ddcdf76b2c29e8c6f3bd9b8dbc9313b59f13b79d64e3e99844ef07f827814bd6d360dda2ecdd9c8772d88bcd56f3cbacd1379a069f7b75de6cf57f7e78b1ef9c83ff1dff5cfc98071531f12f78510a694efccfde20acd3e2b341ce087847069a171e84a4968d4d82bb5ba572a970aded381ebe065208d2f07b2b29bc1ffec928480c75c6bc3d05a583571d69b9789ebc38168242e385e75a385151cd88ac4881fe688d4bec0722b56d3ab73aa8ea14d17529e47bccd220fb436768f6fd7c536404e2e68eb7c81c9f6c2dfc375df5ac2f56eefc23d3e834074d5c5710e5a38cdab9cf322898e1eb231a379231d80eaa3a22cd7607fe4f74df7e387179195f671b28eddb1c14c12f061c84b7444a4e8f5b149065768529ed89a791549be4b405bdbde7967207cd806b89c1dd742591576572d40297dba6a013b6fa72d7c37d105e27a35cfa8a1becbae69f377321a60514f27f37b3ac0dfedda7b100beb6cf1520e590b948765879714c3567342e89239f3f98bf4b3e11be29a19c620d44931b637b855e607a0eedab4ce4598220e05c8b036fa96556bd38b2275814c4e9f8debb8dff496aaa7ca11bee293b74c806fba0f25bdc40b52d76c1ec91830f34ce2f2e3cd9dfabd9b2e655b39a41a5c4b971b9b5e3f3633c960fca85020b2853be3503a461cf679dd5f9e68154e972d4051744c8b15b0b631118977f0fb1e87801cd69aa63412cc2e096a9aac28a6748d215c28ab4bab4d4cf427fb9505cc32a6bcbefe50fb31e5870776e5a8a1268c3913472b7e389544d20658ed90642a6b84ef31d923935870e78dd77d8d2637a6b4eed93c01b75db4d18cd9f613ddcb826aeb5cea7a32976b4f0a893db3f7303c826e08365c2c19439a36efc78a23af2ffb42688a436aa46572236df10c7e7ae2c3deae15d8b27e83438676474d354fde6997fba8beb9df2edd9a98387512fbed6ae061feb65d875766adea0363de8b042b2bf0d319ffffe6e427b8262759b72f0631eea416a2a91589a6a67515390da3a693660bb7f04b1a5caac6b23c0332d79f44db747c91a7e38bcbb10b0f8faf02f906d6639a03396e68d1dd5cfb5451eb336781c6753f12e971ff4e27d5782e6e04f7f2308a8dae947d119b7b4ed6eafcefe791742ee3cffebbc59fae5f3e16dd339644c85ca8c80c9a08da4546111da9708562878d51a2ffe49642e51a22eee2969de98bcb637656fc04869d8c2536f67091149e48415bd8567efd694047c65f2158f7943d35e770b7a1b09e4a2dd1257429fabe9b28492912985926850d367d4d9e04b7cd9752a682dfa18eb79548e6e0a5fd865038facd7919e9aed430ae09d4b0938d3798dcba6747d8f1b0d407e6a818194702d76ca84eecd2a97817ab4cfda99a19f3a15efcec99a7ce2a6cdcfc76bdd6bfbb38424fe1ac896dae6c0cba119fd256ce613aaf970c4dd70b76b4021ff8bb72261d9fe05b14d0c91aaca90b56a60e953bad0a33509161257f437cb0f091a7bf1d8597c27d6382f024e1890953952796381cfde4b605929bc31ad3a2998fc90d76dc5e41c82b77a716df603f16b0f0cb551f382e471ba1999060101a379d8f674d6f654c0117c17075e3d84222db17f0a1c84495285622c735b9568fe9b08fd5f6fd719ff65e244bca5c59c5c331d37ee4b54f5c608e625a467cb626cb857cd8741571aaaa6186cb82f32c2bd23a96a7a6cc15e4f1950f8ad0f14667f94c59f3736674957f373aedc628d34937ba75e5e746c769295c4d9a54a475e8e8562b2aa9ff549e34b17b61998f8135c413397fd74dd321227ec7db39970954f08dadd52d47f6e5f40c45c865825c52fb2b707610898e506889d2dd3061e8abee269f8c74843d884c340b33aaad94be7575be2fcb284bf406f661863e4fa94f9ca90cccdfa3bf11748e78ccf4e98b31e3a6308dccce7115880faad037e6553b94f248cf29ab1a99e84424629f7edbb33b6dcaa93bffadd430b2dcc1b429a79405d31a454fb2ec6bf7622d14e94580663b94a0852d3a9360ff71abd62c6f5b1a5a1099dc3aa3ef78cfea3b2eab3b6ad17aa9ed340a27bd488e4ea43c6ea03b3bedc0331c776dc45ba0d243f35675b81fc5dab6e2ab06042fdc7c114779cef3ccf64d0b32f44505d0aeed4eb0e929de9431bb6d3fbb869d4c3ee2584de7aa7576696cc932757d9e8eb35ddef43e51083f6b15dca8af4ec1eae986dfae0b78357474716a2726787a4fd7c0ff4165839ffe51dc343d9dd5c9c7858f74f73a9827914d0ffe0f7a10cadf991e27faed7c79efdbefaed0b3fbb373f7e9f76c8516b1d3fe79335d89c94042f9059eb37f2ad83f37f6ffe99ffd7ffaf3c5fd9976beb16cab9e3336394e236de29963b118c5ba175c76f4249b3cddbfa498bf7c4fa6a0b2e969b9ebdcd58ae1c02f7c1bf03cbc8e54a6284cd56d81bbbdb8e9e92840757d088edadcb3fd19adca9a93b2a91b830bdd54b73d7bac851f131bfea9d074aadc6fffc23a10fce91e971b8fee4790f8568371d3c5c29694dacc43bfdfa2773cf73c82c4e026102055f8e71917360d7f62d0fc656b48ab9bb3b44494cee39feecacf4cf2757b5d9398f19e286ff1ad9a7d5c65165e771d14ef6cd1793563f479777f3a58c249efeefac477d732d7b0369dae89cd166dceb6776ea2f9105186f2ddb114dfbdc902a2c7b56e8798f26e03633343672d217217efd973a1aa690999c93d2d8e89cc8cad6175a78665a686156b586b0d1f9232030fb77bde535eb5f7ad10080cfd15279773257fefbdbf832074606285663a5dbfeac6f522b3b2101efb2fdc350f7eaaf485cb65deb4f1d52e851c02388c69d0f6fc87bb4c477efc7ab5debbf5e2d98de11abb1f233aee40e015894a2a109113b104cc7db29d80a5391d60995a1f088940fbaf5eed5b3e5f4d74571161e27c105f8dd71bffa5326ba8ec3d0ca5f35e1d797a3ff701b8b4bdc725349ea17e7a968fba0fb950ebc9ef29638f5de46ea0e3d8f7ae13f356f73dd111359eff67669ef1be6fabb6efa84906373ef062153e6cac0449cf62d85212a4d123af9ee3f379d7d3a0cd983804e9ebcb8e847ee3bfb646ef19b1f8262302aa388c2a0f950fffbe5f3d15c88a1dc69f5bdeb4feee4a7edcfd332d95a7c9b290e9fdf4baa818e18a1c4a3953564c4c03c74e46d77fee88e83b6a5f7db5a78bff8105867bbfde947b18f1904e97d79337532becfe66dc2f3af593bdeac2fc32472fb7cfd2cbf6337503e5df32f403198b60e55792f28125dac3c559ae0bf21088deb52978563ef7ae18c75fe0d3754c2c3a9dc4043cba2d9ab872a1055bbaa662b3c31722c3fcd09319a930a61824203677e20a226f23975710681b7348bde7a55d380a0145adc89d4dea303f3422a4203abc1f45486da26be9409746f58bf7ed7865f94c63262b10f5322d4fc137f5dc8eccead0fbb287a86ecfa41f93bcc05226d07bc7ed2b953c95afd7a3deac84c33a8643e5aa23136d221fb9de2f1ed0215a8aaa0e29183b1421f95d6c8319a6878bdab3d6871e204c4491b6a33fcf87fde655303a3a4eca53cd4cfacfb08901e4a85339209fe7c75151442313e531fdf93d256caa2cf2234223efc1a2e48e70389cd9a482b133fe2e201d52b95867eacb4655bd2060b6d228f252ade7f2afed773ee895e01e41481f95efe4f8f091163a5ed8d09937d8e8003abc3f28209a786acc3beabaa449b09d056b3f63fa870a9db135c587c3299fa2f2cbe10e3bf05fe9d1903d3a5cf54881cd720c97cbbc569df7f1de4bcd1c72f430c2b02f4818ea648a47126ad781678258c69440e8993a9c63688e3dbe5fb563d02f53eb7eca93794dc96581f355dcf71d47ea1b4396ecda6adb97833e426bc7233c1a360718269513ab07400a87c79822306d8f300e80dc451985f9c0445dcf8a1cf570f45cd57adcb4cafa215b596944deb40322189961052b476e9d94b89b92bd9ef18e3737c2e6d0cb9c6b7958a20b1628b56e992b2a478a8497857ddf4ee593f77bb12552ffdf00cf13aa7be8dd70c19edb9b30a3f90d38f2e007ecfcd350837d78628fb487d40e3de709a5784dce72670c3c008e60a7ca07e03956742c0708d04d8b29624cd17b6763425a775ed9fca5e9ab86f68300c448502e43691151c86957adcf778ea6f31cbc434e396c8dd547ba9b013e771042deb6b64ebeb7790de79ce9bc5eb95d639e48968f02c0f16d74c428d3dfdfd5d23a3a7a288c63cee6e478436e12d9c66d07bd413a80f6984eda5e5ff11b2947c21c73cea23929c28bc8e579bf94a2ccbda326a5f11468669343475451e71f568448ac21fa49859fc89cb1c6e71382d32a679cf15d25b2776362cdfc38ac89efbc81497bf57bfec3d3f104d396c3092f4de1b680870a9accb9dc13c9637d0c65a237470bf99cb0329dbe93d4f34417f8690be44b8049b806c31c2c4125c2249f8f729486d185e44777c3f288840153b10acd62a730ad4d69c913b2a8bcc2f08418dd15931a49904017fe3f5b59f75ee1262da8f43e979ec2281f6a4d69973aa6299bdf9776d21652ee681530e1423a8eca9bb7df4e04133dfe6f9014070e48916edd5653e729cffa86a64ca78c91474f3ff5e82df368601c386372ddd6fe28f1604186133edd1b61fd083cdd0ad7c7ca6a38b0a672ea670e46e1080913dcdba96f6f7d0984eb3c7c988deaecebd82ca5eb83fc7ce52ad1fde47792e581b7018f6229ba7e352e4165b4ae3ede3429d351c76d28f3a5a9230368fa76d33013c2346cb401c386fbbed1b64fe53628353a0f7db34cccf64463d50c13172092611a42b953f301645fbc50d0f34931865a7af5b8f3c06b7a197a775ddba315c6ec9738c734ef59778d79e885d7af6748d4723865a109b6b31690a676b84fa04fa6914449de6c8dfdf6775ab48cd4631ed9f3eb0b90bc6d52655a0e601ed50994b308e0e05d3fb7add36aa5dbe00d503f22841116d623a314281e5c935d5a1587f42b42bf67c4db48a7ab2f71e1d860b5d045e71b3b691d0139f8aa1e2d559c23e13641a20a178800355a2d474d5f6352a30f0a1e2e7c47abbdea9d78b48a2b4fe182baa6fbab222e9551a27e6bca3642e8c91da12ccc2b693e8183da710697080e9ff2fa3a016de0c0b7e33296a454e6429e50dbe24034e33ffcafe72798ee567c5b0ee04c9ade661de62a4c6bcf55709d5eea1ded83443dfe79b7cde589700007564b0f2c2bf29d70178cce981b8b747ee125c475c8012033ff87eddb8b77d3e61a70b4ddd05c7e5bdaef93df6617b259cbf9c4b934c93c231f8a9355aea5ac6a040fe70a2f879450bd9050c5ce090f4ae62190d377b0d2d7eb78d7a8f30ce690f8e5c24dd6200d1de6938757d347bfa0f1bdc056b306140513af8bce32d65f0fcead2e93c4cebc0f05d32aaa85f7609ec5e5658978d03181680f397c7fdde12da1f16b890c7944d7e0ba385693c93e1620065408596b13b2bcb853aa715f6f2632d3a217f175d8763d67ffd2e3bf08f31cb76ed287ac1e550d7b1fff3cfa0ccdfaf413d818410ec720e5923a0e4f187be32d7351a55b438848a1edf8877323565ba131d6434e045dbd2b44b33677aae0f11cdcda2cb4778add6aab29b8f6254f332e85488254c49b89cfb79249244a76bcc8c40ded3c4b79ca667299a14652fa52c7bfeba21b323f0c4dd48eb922e269cf4a0b72f3a8f9a2a477e6ac456ba8e871f8b43c036ced003387cd5326c8e7dcce843173fed0879fc4e62ec1a5eb4e3a6f217f5f4ed98c0a8aa1f1ecd82cba8457036af8913bf52281456446ab274f8f5f8347de1ea8c7a7dfff95123e82eb4e53bdcaee443c880de92fb7ab56f0883b73575db8abd6e2b29e50aa3e83efd03cce91bbd9e46f45dce165b538003f92be6e672ab18ebf6bca9b54dcea5bf2b227723d5dc0415d8ea1a716bceb2f153bec67ea797fc8fe5a56a11852afb175a5e37abdd11f361dbc18223ae910ac84300f75b4b17a4ecdfd88928169e9047f19f8199b51aea941af9159325cb838ee3bce9e3697030185c668bac1bb36a71a9b337eaf799fc1666395f17ece002f73000a0c11d9d3f1466d6d0feff69f41d6b39811e1739fa58809e00b16d4f5c437d3483dfd3b1f2769a13d41c7a617f2af1992c8e8780b8ce16db080510ce96426256169a2b691ccb65614b8114b5c16e37199c8508516f875a2cc6fa9e7f51c4efb761e942d0e98db0dd50e4c7006d35ee29a046b42afd2bcd2050167fecbc087721fd3cc3e397f8558c69825b581d663b98f2f334fc0f7d80ac0e53b6fe7394f93f54fa5bbb3c0384fa28de7a5e4a38d7533e2b105a172b7bf12c6cb0f7bfb8b5fbd6ae35931e1568484780c4f42a1c0c3cfd1c7c11c39a94e14044958fcd7cf7cdd77ccb2af6411da3ed74c920313270f91e9b42584a532b748af0e1fa856859577e680b9627f0e3964f6842376c0f0356c0cbe26e5f82e0b315dd3fe9bd2089d3296389efa6a788fcce6d2cf8c836552c96e4cf55a07a7a971c5c36a6d5b4c5b6dc77bd0cf234b1dc506424df5dc573ea9e32bf956e73ba84d1eee5879db052effe444fcb594ec94deec846600bb869103e59abf79685dc7016e9bc41d1207d7f2a15de2fdb839ff049724a0583cac538a9ad7785d0300e67478425ff5c2df130cfb402b0db4927f211fe83382d17fc371703ab32938eef39bfba4f49793abfcfe59ce62ca980178acdcc3ed42d0db2f764bdae5c99119d97d35195f835d295e9607cdf4ae53963bd00a9e18730b71758b460418ab5b5cb47787bf43a49d4f4076f03872f885fecef781784aef5e64392f89c3f90be3ebf120c293591c618ebbc55efaf0f0807c74a54dcb0c796b47d46817da9295ade3927c150ab821cef0f638314bc4760bd52c73ffedf1f60fb22567275dfc8e635004171034d30bd498111c3bc6cc6a5804584bd0c5cfbfe5d707fa947f7ae89a9ca29e7e738cccac488950ccd6f322a340d79ec3683dcc22048c2e196cd4c45af1e791b5ea079105f7db46365712bde92697afa03cc62e55d4901f94b8847046b1256d90509c7917abcd07eaf4e9a5e7f2dd60480ba9b71f799c13fbd2cc90c8e5052a0bb82759c75663f267c82deb0bd8fa51412e95759c5e189bb460db542f309f4d2ad924f9126cc9207d908982c580882da60ccd5492a6360847aa618126b4641fac97d0266e961daf40c2081d727fc15102e47ed78fa65538a4d5aa2dfbfeddfca061660bd7b588d2ad78a0156ef383c50e0cbb7cc695aa9fb8ac1e97de8daeae6fe2042a8b6108c1f2a84e96d7dbc2d14d6782bcf6f982f1863ae0cbb49509973b5f7a0ea05c0334617011c794a6193377e27cd982f5aed0170e324b178cd005cbd56c0b9e69365f6bf2a4c65e40ff6dc626ffef67f7e7bbfb73ec9578d33fcbdbd0152f6d43979329f2734379d5bcde7dea702e0fa1fb7077f06a9f1e42f7f170eb7562b6f5eacaefbd6253a680b1df0c43ff2337a4cc575e77bcfee66bdecc6cc65ea4fa9ada8cdbe9b3073b5ff67e0c2b913f4f6f7767e4edfecc7fb6661f575fa68cceb24a29a910aacd8a990f2f9f8036bdf9b7fb3cbcf6deb71ca6cd34644d549e9921f1f6604a3c3ec824773c8fe5d2c562e83a11a43e813aba3109955f25650f6c75577e0a4fec4c977ca89cc1be486bb5ed4d8821fa52deb43d8343c723183074f34765dd5654d0c830b89f74efb46c6518359d8e1b346922d84437d8b6ebd52342861a91954d925ba9008f17a159857ea4e8bc86d99bd46ffd28eb9ce195ff6ef34a657b27e346d674fc51f04bc6ef74da76a9f5cf5b62a27111746dd3351c9835c1a7c6c42aaf5cbc08b0f4a2d07ac4ced92c5dbcbc6d9b867710c6274f7a8f5452bbca26670baceaa12bb251239f84734d1edd51bb14bb5ec2bab9d7f6fc37f7c9aa11bb4f824acf6f91ce041916a358c85e058c66e1bc4c0a3de7fb6f39b975e8c7c68756f2285c491ec6d089d322c7664ac21162dbcd543aa24b33cc6e7f65a51ad89bf8c5adacf3e63ea96e690e92535da325499fcebe69b7145c99e7a8366f672fc6273f4fd90fcc6c357449a4b7458b83634ca940766ded39510ebdbff1afa426ca94b99357baac7bb07025f1f957f35634c44df14189cd8ddd5443906d563d3fcb5e87189e1f297d29d000473fb749a3e73415dfac903da6a2e2365a9f5e75a16f23a37ae19bebb625471b00b67c209261ddced00d9784da384d5c8e2633683c0f372ec3925254dd7a9ebc32f6e1c07ba846cfedcacb01b923d8016d2b9ee6ed4d7565e53c6ea106f581daabfcde269871fd72a0dcaff6998da93f1271b396036983e167cb8c05bb52cfd597d8ee2a10392039c47852e8fb29396f4d1b197bc6a4f8097c4192edea9b7572f6a330c7d5b61e18054e5480dceb7ae7e12d6260a227f41a77204352f074fdd553470d06f7a84186aaa44f8f21213ac9538e577e08c565fd08e052105ccdae26ef1aeb473ae5c71226f948119f1058e77e4ac774b24f7c7c3ef7d326cb6106bcbcd8f3bd273b8ca77f4de5d4d9b1e7b31c99c3dbb93abc2f26ba84f6f4aa0432f03c802088132fb578db2cb8787314b9e65f347bfa8766e5e06f22e7fa5357ab5b72c7be564496de59198234d6aa88bba6c2dd34ac428513d0a922a2a39cfb9bac9c050ebda0d645c6893636dba02f0ed6e85cb6fac88c48aeb4b9523572233a065e2623560f335b0e38b7d5daa338a81fbc77bb5c47d567b1a9b3f74de7394825d0f5a1b9277369dcd6127ed252e602dc02c464ac5beee35129ebb4839cca9aed2bc7c0a552ffa12ecaf0a0efea018d5f96fa0f8548ed522b1145ad61cae1adcc99e282a1eb3639038efbc9c20b251a333e82e243d5e348016dccfef5a1ecf7c48212073d64dc3914fb0f1e28ae5cd4a49007d9391211a2b0f5f555db4b2cdb58b5dd5753aa2a6701cec3b40ceadb91813e52e7e03255721ffd5ce921ec8eabe0be2052dd52759b035228768c31b5aac56388ccbca100ccb235ca68b84e0466422f4b456cb4be662cdb27ad666481ec8650dfc746d636795e77686212da37d940cd51de13df1bc77d8c0462708d594358a17e3f2d390d4d62f25b24a727709c8279881e93f0c7c59997c3791d3af89d9e15ccdea69b8c890506d073897e7bc15721e1324e1aa75639f0c0d352ff21886c725a72bf7fdbb59180e75ce7cb65100c5259c7c8db93c73af6c4e9dfaf4524e732c9002d004121f195e71cf4f5629f03cce28407bf80f36bcc8c0faaec3934ad6ee73a32aae3ec5c9556f8c6abad27346ad3fa2746a3a4ab330cb314ee6e8272ba7e4265b50da1c35bb395ca9d498d3df9949e8363223e341661264d5b01de99c34a92c9eab625a4c26e03eff0c20f28ba7fe017e4b42224a672031ac44a03149499df46f82f5d1b1b729a52e02e9d9f2c5f3929a39e3d11c6685d60bf4b70a5bd9410ef08f8d774af22349b15a6543b956917fcbd64ab2bfe5ef33d804ef9f07c01d6ffa5f00899114dce377d2f5f3927605b825bff8edfeed9c081bf8f7c2f0d9cb401ede6850fd20d68b537453eac3b641d1e98055c824ee57ff08e481bcc71ef7fbd0f54b752a652a344f9e5c5de0e93612857e858cfceb69d52ab0fd2f00d88f4a5f4139732d08c5ed3adfc07f309e5917d60bc8b3323ab135c48714974df33689fc1f8db0b9cd6f6932694c51c6a35602a75a2af29907c36a65b038c2cdc0ae93a088c313346a82cf3785f22c293625469dff79b96b713dda8cffc0e1dcfa3b2faa6e57c551bec5f75d372111c353e2c6bc97e4aecf830b76931d39c0a3aa51e44e13c4b0cb7f46565817d097ea3a32d81ebb7a0c6f0cdf94d6a1fd2d6136c10093ce3b7d31272482b46e399ef477c3fe4fb0bdf17388e09df8f4b708a2ef2fd517b9fe742e502f6fea483ce4309b3608ce47c0348dc0aa7ef72c19c374a74c72e895fbb00dbcbd20ea13f6220e512c038f361e22e9d3983e28ba5cfcf45ec84f17978ed84aa118f4dc593d17ce47ecaf523d9adf440751df0663ab86113460c7aa8ea9b8131db68ec7e8077dec19f6c39f5ec59fbdf70f772450f23a49dd9ad6c8f63b09389c6c52efd2cb7737cbed95a504ae3b3a2d7df0efd6ff7ffeedbb1ffed8e59628fe40a2159ef30a9d63d21767ebcf380a414546f37cd60219f1944ad8fb1d153d1cd8b7ad4f4bdabaeeb87a62cfeb21f575d686ce931c86fd987e9a99b79fc591f9e4ce4e523cca2050eee274eae3271f2696c319e69541e7b033b725f5cc6d6c7ec4ea9024b95beac2b60a9ca97a5ca2c55f34bcd2c6e10bfc091882d0bfb0a95e61b64e43e184c3d79f30a56f212283c78fb762d22bb16a0f2d17582a6d11bf90039cce5beb710f414d0f41ebceb4a5f10804cf6fbcc6689bd5bca07ce8b6c9ba0b4ea07a11a1fd283ca978dcac4f47eb651e73aefc1526af24318022ed3ec8d7822b77485502339d0dc53ddc67747a28264edce48926b77a0bb2340a0e230fce759abb3adc6ddb69ed2b67e755e1adc4670a12a675cd4b20e6b90aeba3e4731fbed6e6fb46e452d8687de37baf9f39239e0160c340b84437019d1196f58ee0155aa54ee7b7b821b7152cef24e365154b9e7f84dc86bdb6cd4d1bcccfb13aebff7df1ab36003cb324309f2e52cab721d8b6ebf6c94b31a864c0d9dcf5e887851a1b5aee26a48946bdc5260dafdccc8672cb4d72666956cdbe98b71687c1ccdd1ee9389da55b2aa1ef63b32b52da2033f9d8a1d5b7dba3f2168aed2678ac4bb7353dbb6bc43ebce480fcea6a5abbe9d33ab3bbb1a123f4bb77acf2f6eccaaf2f5eada2f172cf8cd52314f15e0d7f6f982aaded4cb0d1cff9318c029ed8054e8ae9dd1548a908aa6b5e4a6bddda76767c1c955bd7bc97737d5de6dbeea80a314fdec8c634d97953e796972f234c4d4cb7cbea3be8d9aba69451c1889e85ae3479eca781e3a5054a2fdfb99f6bb0e2ca6163a6858cf4db2e3e16ea6f3d1b76661479ab6953ef4f0933268bb228190944110d02043d2e3cb355c42e2456f1682f8e12d5d1ed1d316427115b22a15abd434af82251dfda9c188e977a2c782a37ac901bb77efd8c97dbc68eb008a427bced99e470e6a754ecb660725e870df75da93324d26b5f2d777bacd2efc64e55bf0fbcdab739d8a36db500d442ae0dc9984201a659456a5c8bafd94e097878f63b479adcd1a5384a23acab1b242d08a24bfe32a3401879d9776e6b86b796af551e8f292944a5d173a4aeb4585671e0d21e105308b63532f756d5acdf4b2bdd52e24bc99b52a4796165506d255fbb21c0776f928f740d36cf87e5ba5feb1ea885cdab666266248ec6c0f88617b6e3d76b9e30b1b4c245e98e3348c0e489856ade39355a5a787482e165eb51b3e5eb0758e8523affd3746be5c4001773c61d12aace6bf3423b9728ffe6182a357eade5cd0b73371e1d554106935362b8e745dc54c94f8becc1d5bf1aeb28e8787a6b03de753172293dc7b9c3e6fc8b8af86730cf83443dfa68df8ee80172053e658cd8e3803543fde33b8bff2b35a81d8c5e51442d34c852467a389ccf01de7edc20acf7a002b9c1c82ee43abcc140e2fc2a4ffcebf5fc829891df60c21f8404588e2ad8f0916a23990e6a1b3af54a9012cde195346bd9e28aba5a3a3f948bd3e79df15d69d87d794ebee9b5fd5eb4b73b3b9c5c9050edfade3817e93959f914b3fd340983124a4ac6a264f873cf37d278251870756ea1ea3f92947aaa641c60da4e348afd05390b99a33ebca2063622429cd86578a5a07b654cf61be5af661ffce6fd982fa709c23ca7c0de2585e5935aa18573988b2e85350a156785471e8345fd9ff7645eb3d11fbe6bf5501eb97917ab9fb4b5f6c7099885198798f71a9724b0756cdc5603a6a84b8481f886fd27a1765eac37758bcf3aef33095a4b3cc519f3e105fea035bd5af9e6cdb12414725738e5ce66c14a2da130d3076f25dd2f71db675e51f86ebfbdd701ad5c09467c68b32d18cc7eb2463b65d6fd068dabbd8d3862a97b8a7ea2f13b0950fee1ca9e8fe698adde959fe8598d17ad79eadbe705c3f75a834c89bb58cabbdcc69597c0815264f143bc4b03175c73c93b58a2d1f7bc9823c9cfbc44de6bdd911208c654a2c17c5cc3454d79d87727a9d04fbf82e1f47e4b00291e0bf5a820fbbe9f4fca6b5c36f0e9b86998aaa9b0e1d5fe4718d76dbf9b643bf16c8ce0c9c3b6f3ad0e035f8609d1d277145ada69c64eab2b9fa3cfbd836a6cda40f044ee3b483edd16b46920b705fdb23b028d1cd5ffb210a7ca414caaea3f98fade3d059bb75b32f4709350654f90d37169095fc6a1d4c67ca16d90024b2ef058de0b97b5349628e56466088a9ebef734789c63fb11e4fbe477ee27db2dd7900b8bb1dee5e3c54c541d573fc2c6cdb4efea01de716b8dfe67f57e1e2ffa3eecdbadb369668e11f44adc5797a6c822044519422cb3a8ef3a6380a67820067fefa6fa16a57773508c9f249cebdf77b892310438fd535ecdab538734a773e420d5ca7950542141aa94a153f4c614d9912a29e089fc0c493abfa6f061480e4a2e9d9b125ca910bededefa79302d5d2e47a974d48d9cc1c1bc1cb91bfcba820f5bc81bc50bccdd589527f6d39776fd24269c8a6355e69c2171a08e76aaab82209d9ac119602513b37bad15551661178f3d63b493da1a30d5a8101982443f54f454a567ae3300b832f253f3cdbd493dbe0265fc387e22c23203516c1faab6820d1928b2bb670202f5bf7ce58b3750c74bd7fcb1d6cb1eace071c929774ecf259760dc49d1b1c77eee64cd70ee2d1cd74e041254a885b8bef43dfe7541415be0cecab6da033126dfa82e47bef94b5b45ddfa53c0f6f1e56cfff735d4f88705a5b2ec2e24ac0eeb6be97ccf3f4789509c8b3bb67e072ca771d34add9e2ab0e26ffc746bbd56fcbafd633727dcf1960854b83a79fcb4d60f9710453dafcb756307ce986bc6d9b0f043d5907d4b39d75d6c808097f727814d3e17d11b25d3c559ed683ecd727af13f32673eb4ae486b4017f9d6d51c4ac9bb25b66d6e47e4b5571eb677438095e0ad1956657d3500abee58efe7a84fb5eaabc04aebd5e0d2e19436e93ab8d645f4c1ec25479db2b2d3e61cbcddb8f35c21fb692ba92fbe718730d40c211e6f32ee773df5e86163a3274358150ab84e9ba0217e60c7de65ea2f8dedcba47029f8db3861d37c561fc933e08fee4470e0bf128e1b23ce4dc162c4b98cea6c39d1006ede2e3d919c77e67d97a91ceb61a422be963320485316d460a70c44d184bb0487206bcc10dcc7edbfb44fb82c2f605103c185929f828d52d7f7d758cd4ea881dd530b39b8116b5356770865082c87dfb57b0fc6070ce5b64f8d7e10c3a63f40effea720b811eb0e5bb2eebdebb6bef9c70b28814fa7ccf4332e9bb813a5d51cfe5f7910463371f742c7484612fffe66e62c5613be9152e1a56d7975e92db55c85ec400c04b7eb04cfa508687cf6b8b7c307c1718a0b239a87f8bc8a1038e4007b02c6c204114c896541c917fb8e0ae3ed1b2bf66b3debbdb4bda2b609afcf6b2f1db484d7fae73ac710b66a011bad67617fe92befc37a306aa9a3374a84b8b4fa43382df97e5383f9cb2d0761f7cce4e6ee13703d3c0e77c3d522b2760f4bb3ee7c3f70a453fba0aaa98218e19d1a21046606ff5fd50b61a63189bc5279b373ff6e8a717577c3f72d17a6baf7b3f596f99c8269a1236046c81389c307b01e8b4820f058748fa0a83ffd752f80f7642f299234f90b484c8d4a0a366715ba53eebc7e25ea0971131bb4102ef073086506ab0a9ea4e7bd3126f3e2730c9bd16b7fda5c5513ebdb4665bd04f140429c2eb84779ee776af587a2d40f3578552247e7d26fa88b7c8c27ccabf37ccbdf7fde5d37a575c2d17f7ea5b6cb488b3f1aba703d873fbab935555965f93d7c23576c121658d3a09a543dc618d0954ae6d3f4b8832ac15813be65fd2ea3964db79ae16d9b2c5ed6d268382d1fc2f7bd8ea093f1247a66975b4a179aff0f74ac9b919ea5deb312898d3d175348356e01edf90f8c497dcfa6bb1471e25b871da0a5159f7d077699f6f6e0f744aaaa29cb88637f03bca06d9e05f1e89aa3b641aaccd306bcc748ba779079f9a84fd6df41a09ab3e54367030c15d6999a94d920b38d5711d45bfc69408ce17a81f2f2ee054e6f117102ccc2460d336c8d50649de721a0a5eda98d52eca6d853e3e04245d642e7576e0aef02fdd05169bafec08812183013e232140c68c17d81e7fa56a24ed6a84fcec62e863807b7718fd64ca3109ea66602f6f776cfff1436377c6eeb67c0efbe3ce9f9aa4beebf00c7ff47a8bd39f8665ab876564ccf7e2a9fc91cde4c804d59e4ca2d8c0e247c239a7c67eac4833f8bf5b0cc9c61b1a533834d2b2343734d317fff22e706e25ee9a2474c9d8c25dddd2936692dec71d5d07b22ab939fc0e41418abe8d67739dce0e2edbad338e84052fa1132fe0e96ce4666a3be35b964b16be0d6c5c6941769d94c52735960d8c61f5136379c650d47363096926976b349663f679e8dd405d2f8faea80c3c6b3fb1819aecb49f904a20a6711527fae4fe430135b402aa03e5aa9cf455a4aabce70c9f29d89e88db90fc0f2570ba4aed9353c2aee07d73482a5b19bff313643eef87de1871300f03f5692988759142f29c1ab48862f664675334b432a4ca99a0fbde79c3427126e2d07f98f6627d20f3fb0f84e525f60239beb0e46be52a07ab1af1c0c9cac3dab1a79a73e5fe5382f28294fe198a767f4a56b24afefb4fe5e40e62245edf790b987b18d8eb9b3527059dd118252aeff524f0475a9b5f96906363be7bd3f9fcf16c0629e7dfb664b7fa52b382c9d0d3702d368b4f94e2adfee18962bc13c58acdcd27c5e6309bcd5fea7dd7effdf003512a6fc80f85274c6308a3fdfbc2740661da5ef8c254de9f5dbf12a6ffb3118630ddfc4bc2941c56626d89ea0bb0caa23174523413a9a1352e36f1409b049439f2bbd5d1ad1e2ce5082b8c99afd43950903d3d64e27ca8e9b6eafd04a57bf833ebcdc0b73c1023596d6c8c886fa275352db0419680c4df04520265229dc563d4b690da461b9ecd81845d6331c74da84af59cdd5b06db8e4f66b1229c16c8de80f58c5d58734498d4e89040800dd1d87281e82922e4132662a7b789af549c643358af8be92df5534223d84f62e46eb0d3735f94a970634ee677dc93ab99907fc7032c5fe659b755d87d07ab514b289717220159dd13210079d56694faf14f40e0a6b71465d96dc6f95e51707289f815fc3ddd6a512f01fe17e7cf815d64b63cfd1373273e496f86d69ded4ce75a971585b63f51d3dfdd1a32a6faa43f5ee46c3bfcc191d7fd6de140ab0d18610392ecab0f75db4acd5b276aa7228dde9cb9ba42d6ceda2d7e6c2f3d93aee1675eecd5af76ada77aadc35c951de2963af60a21f946c5b5f748be1c509a6ebf1b7b05171a3987f81af082550df9b1d9972e395fb18cd1763b2eda066d4f84ade2debbfeee5f58b0022aa405eb4387f113966bd6a8e76cb9a2513331e56b5e713e6f39047a7ef30dc32c2ffade24935766fdf691af5acd1faf937ede392fb3769e7f34c0e6fd01f65cf4438b2a75d008fdc6b182ed4f3f188dabd5ce03ec0f8194ce05106ade508e11d600b77f7d78a211be2ce12199cfd5d39d92f8db46efbf0009a1623ccc0eb79e376ffda67c723ce271ac0e2c714376d6c8187894ff7838136b81346d22733688c71101192a35a89af3a1144002bd5652bd5ebcb6a4e2169e479e3d6a276b430377c156140c08a917c94eec0260964c467464aaa2f9bbc9c8fb29743f1dbc9f60bff1274e2d55130ed4da2d561fd2b2a2fd207a34094c01dd71c9a13b847d2206d1fcb23df6aeaf707d0700c60ab911df183234ed394a9eeede0751705d0a8ceeac6aa31b01a77a2e015e28556f598c955195af7461d20238979f8daefe2aa4790d100c36f1ef4213131aaf1dfbce90cb8d74183898bdff871c34ed35cf601a4724812655eedf77ead7efaaaf97e6bd8b8a25580fd5964fe2c28ffd618794986e3084c94cc18eb929753c7ec4ecf0c63850069ea08de0b45dc917b1b4ba440314983d2ad754d6033b20611eb11398d31f163243ca386863fce935b9e93dec14114d72c007d0e62d1ec9d63051ebb510a0514361d4508cc4b061849b2e89f8d3ff8d7ef6bf43fbbf29cf5973c844780bc143847e4996133acec41a58ecf48784cbae6f3beb3fae1b797575f8d10d96d1841a30b56c4912c898e204ece4d0582fee7cb2c533162a2f5c58f454719e27e584f459fb3b28b71b9451e403389466a2032c7e5ad2903fad99da6a47c0a43a9f670b78cce6efc19c71b65d006dabe0ef65077fab18ca8c4b2259f8793672304ad329ecb847a07468d561cb70a9e072e703eee3d0ee2fc14306bafa45e8fe77da1e7fd42263cea1daca3c7c752c1c5b8ac3982d2e49c3e31940cbefb7f2d904a315c536c2fba21535e9658dfa931888dc8b93d98876478ab9d9b799eee1100a5d3b81e0db3e3fc08a2f57db9aa3c2980a5faee3b2c0571b9c66dd6cdfab631855de54d635d33c04a68439a609e611ba60388ef8f7824d38c1ce3ceaad17fd6ceb650d8972904862ee94cdd5e5fa84f3ded55065fdf8fb7fdbba9f0806b4f1c965451e3aca1ef1567f47a9e9a769e4722be6ad404110db7da1598d58698043dc6fbdc8ba691379e04d664eba00a27f7e0327f3c89d83c73974b11732e11fd5609d677c1e2c5b8cb50457fd931ab72930b3f2b7f08064afee845977bbecc0fdc256d8ab4ca7f0df0ffc71793303337f53af0ecdac36a67c038c5499e7b6f437d9403264e729aa514f398d4346afd20674abcd15d4d4408676f8d402b72329fba38944527f04e77f7bab877b1dea4911a50d0bf4923f042a4e4516c09f97e89b74a12c740a78cc56b2fa4f397dad1171d9ddc8dc42bcbdb01a20953134b4383e81a6a64e8d0b01c16eabca553cfd5dc90f4236c269c007d70b4a1be89b376d40be2064b3774b5c36623656851f081424a0be62487a5c53d8f12afccaf0bbd708e58742fcebaa674c010a8a4c9259975d89f32e2bfcafd9f43fd307febc89ccf82b51732c1200f27df77ef61952685bca383861186a42b5a53937b8186ea6f32e10364951bfa15d43e0a83946f93f56cf251d617f1ab0213b6ff3fb6e5cd1052af78794e127ffe364f849c95e9999942a480878bac21faebaf67d93b5716af7757fb96dc21b5353c7e39243bb95e0c6b23ce37db04abfe86b372e3d4e9eb0db426e71e503e06092a25ed47281c1ac414c110b975c28b3cea82214271547f27e7b4b093117507a1f4f3cebe9c992651bd38123571c47a9d2658c99c5ec3c6f9c78e134f18a39ae8be7b574626e62499b12afeae4cc2511a75d2feb441e4b77cc26dac4c8cf368237a7f0d26690ad4f54a243d9f235e1dcc2fb6c0c863f697f604af1bfba9449785299c9c0a26764096f90812f48a8dc1286e7c6dbb22eb73c931e2f0e9a18814dfa3da53332dfb2d7fdc7af862dbc69c2e6374559f5dfe9af4e89f3e9e21dff5a3b7104332d41230ddc19c022a7a5caeb9f423e771f4d1031c5dc1a91a6cb9b3b038ccf7dbced80588ecb791c43f9abf8f94817d615cd9c5bb50cf45f67ceb6c593130c780c6d5dbd3f42f53461ffeac2ddfee1d0fa18bd569b4f95dfe922ab82b610e0b6c6d33843d1ceae537269e4be69a4d708e7291ab32f01fcfa0b8de9a031f52ea6c67905f07acb1623d4fe36ceb8a8e78f30cde416b12fed8714659363042c789d01e76b119aa9cce31c77a503632dfb32557e2ce54bd8320075f4eee06afb86e2831c995267fc8b637bf512d1da30a469b758af88a0578c73eca7914151180b9eb49de5058d712e7cbec5753d8410d97b8ffc486371130afff8763e126273e1fe3c14ac02eb9a3c1e594c952763a7b0f071c6d9652206989d104f0965e1bead4270d50eaf9c4a67ecde3f766660bbad7472b19a50dcb18e32c10d14e43d9e40ea35722553c8b1de1e8b2881f0deb7c66e1c379d7bc7b1df92bc3e6c5ed18cba6c819e4582e0f25ccddaa3312d52a697034f0fc40a99a1688113246313cc7b4b3653489244d77265cc45f582db7d47690ded36ef837d83d91e367555e2a2521d9386deae15639b41475feb06bf3a7a21f41b6809ad5adf1925a2c8f0967aa04728b7b2d4534505246424a7e317f1301b736c708ea9c4bd1e9039c62e71fd808239f46dd26e8d4d86b4d27732073aa76530e11527de7827ab2a0d29fef7a4784e9067d41d2357d63a60eb27409b25e5ac3b066dd3997f90c0d30ab1a1fd2470e52545502cdaec7e5de2bc9b3871f58d2a66dd8206ed1676073ff6266a1ff8763ba54c030aeef707966da963d6b05ef59af6b9acb8ae5073c1b2e8cc7fd61042aa4eb97c7d057f4f9b6cd04d9afcf745527dcfb8e13045d1fc3d2eeca6ec09dbe2ef146f4cf0f7668ad835fe9e37993963862f9ca65c72f4080e90c8353d296c3ad79369f96cf1647e2fbac8111d48ed3f3e64ec5165e5ebc8d6a9a809dd7c8be90daafcade67f1ca3cd749ee32ba2c84c572dabb2f643addb3a792e348bb6a67939b48a685e6cd04129ec4af0930c3846a20e1903be30da4da255f0520c947f6cc57f2c2b4351fb8de96e42efdcd98306657108150dcfa5f55197af3eb4cc753969abd23fd5fcbb86ea189d90168834c4e5876a059f7cae0c8810c2da690e735c31540c1ed3ca09ae85639fa3faaed0227ac95af4d56f91786997447f12200579d570c65fa8e892d8f3fa88963c7861d44c48c3abc4fc497d99a0c054569ca24b7ff4b52f20309d0ec8dc2e5df2579a7d774c37735c61a3273a3e732ce4d086af22d00c6068f4b4ceee9c460b0823e2dd698da44af0ad06d84bad8529b9760766dfb9a7b93b3862de6cc84b33101d66ff29c3f7e79f9032c463f315c8c743e7ded75c60a0088d8258395d426d3d1aa3c6d4963af9a531657f066a41763b1887cefd2f8d67beb9329ec7d688feeecc78432c55dc32feac54cb6d95d989ebc7af7fae7cf3ca1407046f1464c5ad75709a73091b50729a1d9d5aaf5f3f041fc1a7b6ddf0bf90a6252d4da7c1ff45691a6b699afe0fa569494bd3f4df91a6ff9797c86afa8b127aa8247409fa4117fa8263156800fc741a1089cbbcd22b902f6c5448b8375392e7b39eb707a3aba0c0a8a0c64d006bef032647e18b27e79670376f85469d404039ee77ba98a77c17fea5c2244635888ec91ddd9c0a3f39a247e2c9c8fefe4636b3e65eb0c497f855b817e47a8cb76c726f61ee0521703af343edfcb83caa90b80f20191661796ed9f5f89629f27fe4d7d0acce253ba5e668b519f1263a315ffcb6c3f8b9ee66e8c282a767faa65f448407373252ba9d1af4e6ef05dbea1a023f4345a3cf180bdc39af07de13c5df78e2022bba1adc19fe806ef7de19bbb56ede0fb22b01495e1a0b9a47dc6245955dd9a244a8465c0efec408c0746406e8720cfff132199061573ca1d0c32c0fa5d0e890faf52c567c6010d6a19e0ca9d446648125cb33f3a02cceee2ef2efe1ae291fa3692d33c98351c1b78cfd568873da7e8b4fe7125e55ee5e15cabafc45f909165997b3fc7889e25277ddf32f8eae2e069b5e57aa41fc452882056c2bee9610c062254c4b6aa2b105ba9618da12f95be13a54dde09561cf216f65788cd9c2a47feb37fe1989ed91fc01cf5d150ba4eabf6a01df0a9f8675bd024d6590d2ff04d5817809b5401ca9f5b4a17fc1a65bc1cd322f32e57d3df197aaa3a1b3252654591ee4d5ffa69ea40b162be0c15d96af6c2da30ad211903f27cfeb88f52d9b1f972d01030cbc6b34c22c7562212c436a22e37073a9ba8263ebb6fc5166a8aa94b8f0aa9e6ccbe0a428fd14dc11c1ad4fcb701a39f93a075e1a4e11a660020bbad4062f976c9e4af61ee0252592f9336809bc146b25ee5120aad561c0830d5ba463272cba5f0a07fd8bee9190254c32abe2d62ca5d028b880fc3a1ec634ebee3b9610518ec23d13831972820d55195b59e5596b3a1124abdf6562f81f83ca17c3b2fbf9a484aa3ec78b733e39798dda1a5250807501710677d9c23863775eaa6cc7295155ab0c1c1b64ab8276fcedceaa25d89b2b3d5244aa3500d6ea92e493d341468e7885fe9f57fcac82724327d09a6c7807f9b45e81143561f9ca3517041a2c9b2613daaeb0c219b59db87fc25cc3ac10dd6ffc17b4ca436eb42b480bece7c67ac8acfb7d440550af84cbc8b4dfdc5d36de8c2c93559501dce2c003b1e79007f4d98de51ed45142688a1a6996affd1e6c746e6846aa6c7f7e611db974a184dc647f909b0deb56c00e52b363d9f7b865feab4950119efbc2e1fdc962fee108c33b094a2000b7b60048260501ff070343f88fd3bd3bc7d79db1fb8c9bfb8241a3b3501cef3f69fb44855fc448b9943e50de2de558da7367e946414e049bc71943296f1e747035e13f35d9141ce7727c7dfd54b35baa652b972a47c724ac8b3d6a057a749a50d0d60dc40d50f0b90ad7ff9121797b0c444ef44b64f8b3b0c27f57f6cbdbb960f0ff9be27f0205a6fac9e98b14b7b0cc9b2aeabe51ecc667a9cd5d27bd373a3a60da2d0536de99349da1670b813ca262d8585504e3fc1e24a56ed3f1f54525818ca93842cc7c0fb3eb2540f10e05bf878e20455171b4b850a64604b487fa20ac6a7aaac054e740c200c7d0aa33a24c22bffbbf91d176eb9c1692fd3c17d8c71f5c00720f1b1cfc10c737c56bdb2d076e3f233eb2077e74cfdbb9833ae2b28d1ac0bb6c71df075bd26af59d03d21c4af008be7159d35302200d39ad62af52711959bdc7647873e43a2043f57302ad2e0171311ec20b579d90c95a5b6dc6c42cdbfcf00aee2c8e6056900d2204f0fed9ca489ec0542ab70e3dc97a2696211766af6172a6429b830998249cc4da0651236f3e6c5da9fcc25b1a4bf9c2cd4a04d227bcf4c2b98b7f11cc4f7d1e1e4b8e42150b038b2393aea370969459ddee226873ec38a82d809d65cedd0a3f5c42decc2957b9648f999ca777765cf38d20a193b582fab960ed011903ebdcd639eef97dcbb6c7e1db41dfb888e5014df7564027f15881bb580171e2d1fa6ed4e5ab0b05f7d9b776d585d6f5674a6520122fb3c897235cc71fa990efdf465b0d32a8054779ea055dadfb1cd247961764c065d6d38b4216dddfd7b2c058592031d9058410c8cd1b3feb13abce708066827ad1bf965ee61de965f2d26b8e961fff60f415fbbc8e38e3ba1d64ae96584449d10068c90b58cc85524f32ed0a649fb51aba483ff817e5dd8be23b72222d27f83483753cb4224ed360cbdafa9fcb36a3659b31f5cbedd526cec6ab5bf3b20afd2546c37d8411afa59ae2b5fe9c20fb9293a96f0a0c9bef6317a31f4bbdaa7f458a41eafce98bb025209a2dbced93224c4462170ba8b419bc2fc52629d8c5b115c1429e244314876112f3c45d4ef2173854b8f3e46769a3bf25c412f663f299ec02adcbe5feeaf1e1d5e3e7ce0059ade5812f1ff65ae6d955bd449bec6d357d5bf6367afdbecd1b527228c509b7446479eaf39cbbf0e7fb9f27197c7cf887af1d7d5a4477e1f89334ff0f25b49493c5cdef88e8597aa7a64094a2ff7f0c9a3d2a221320ef127ebde6cf2dd750ac2b29785ffadca3bec1fea1d90b91c84027ed881000df960d264c9c581b642fc137b556a585236b4cc1bb5f68be5b4a8627756606e68cd8c472c179419c82290d6d39a498dbcee23cabbca15ac288d60d3806d2decdb3148cbf603f7ba6a80d97456c86440a290f7f4903eedd62cf2d13d6f1f177faf8412614462f9600b725b6f08c6f0cebfb22e523aafb5892c58e1367521c651f4c89abc9c60db45e6614cc2cfdb4f27e8088a431e7320a98f2546cf205ecf1f3a53cb67f3383b05cf8c1d1881ffa2fc96bbd7adb0f298b19985ae93a9b9a04c721fba26445fe063bf91dc4aa06f3681f67609ae73b398ce9cb54c53d30f3ea15389fd259be156dfaccba5f6fec94e7633a41e472a76e57ddb1a0d60dc5e4874813123f6034d72000b53fbf23ac78cb29c0e9bd239b99e7fdccc23226291bfbd298ccd23972d66b759b85eb6a6a72a4f2d11b22aad67219eae54f6ec6772039d93afbae7e5f102636305509ac362474d4f794868aa61eb5d16990c9efb648c4519c0d8443649767d5a37a59f6091799178f7b0463bc888d100e6d183cb09f46d9100cac972fb4155c58238bb49a3315994070043475b3e1cf1c732c5b3cfe99420cc3082766134ed319b0576c0e4bc0b9c208a5c3e9ce09e26af0e981276888089709e3b4e0126fbdd15c9e98bfc277aa9f130646e314ab62aa4ed0f344df3b76fba06682c2d74634aa5143d528ba2a65e005c970355b51c161960f9d7db17d18bb3ee8691ba986c9e1fd55ba3872db3b9b8717350fb3fab8601f3cab8f1d5bb76af021a2656788f0c070fef2d6785233941bfd2316880b0278fbe41128101b1e977afeff60167cf84f0305e8640ee4781291a2877fa8fcdf620d5f5007850f92e8960290729abc93cf24e728074785275fdce8e5e2e880c57745926d2be511edc95a1f5f97f94f7ad90764ab35e48ed416080756dbbe31d2dfc4e43d2b1970f0f9190da741abf87190e92543736b63bf0bca1beb7ba535dc1301dedea971f19c6ecd736c0766d918178c5a282989986a5e39db9e07cbc944ebb30976bd35b8d0f882314d44bb1ae5500b810b8a3a15b5858ef96975ecbe16d90d2dafe16008f91fd2f1b546528346b22c7ffafce66ab288b31eea1ec62284eaceee7f418b62c99ddeace54c347db391c3b0b0a7a3e467d1326c265bbddbd3c0210924cec1a51680702ad53851ee54e623ab511a4b0d7a408e76bcd7766dcb2d891f164d573a2d74ee21c18a4836aa7b40d27137e06056351ede3c1e97122b47dd32df27b65c9ba64cdfc88a454ee3f96efa56f7f40111a53aea445f70aacb881d2f830fd4319472b1a56b3fd8d643a5c272311b5a4a23304e7d7df7c16713456ab6207d64caa41231cda3ec226f1e85268c3b7cd4ceea364addfd57311617e5b5aa2e144e8e31c3e39454fd189ed419e4e8c2c850759a7831f28243b25944e738b6d5d9d6f6409aaaa27308a27c6d2d287b29844b719778050c9c350628d9a6c78943d40b90994fe611abf1816433a78bc88eb50d2d1c2b5c37b90c544eb59907c3816bae2866f6ec6266e1d79cc5c4998132a4a9aa992955f1a4965cfe6fa7c44fe1c5c2f99b7089be407932c906833a77f20a91f9746018eb46c7afc059c523b27bcb80f5bb22118cf60767cb3e1783f3e7335f8a7b5f564be0509647ac75017f4365739b8de5a33ca6a6c798f874a79611841334675e38ce3fc29221fc4d2942b4db9139e15744f9377795585f92268f4dc5c7543bb195a7df3577e3d6c825586e80a75eb5400ef528cdecb640c0f0c8670248f94caea3f6986d812a27937a5d327605826e3177ad4c3d0acda1e1f838cc2e702dd5ef7a411348dc7fa557ef1ffc2f85e4a21da94e65460f85e61fdd20fc56f8eab5eaf7872fcb4e73fdb03f48fe13a11aa78df7cb30bbd8cf5de40ff00e884c2b0ec8791650007eac41020888ac6e75826eaa7146e52ae6bd2b70857d8e87f05877b420110b07105f1455bf2178adb0c055e6035abd9329a02136c7b50a12dedae25e7e2135675b0d4ce595ba9296c17ec9964c03300f29820f76bed0654ba73dc7e826e4d21db5b7d7e51c28d455d2f49506a96356d34fa79f79fa493d1deba7bb7940eacf9edeeba7e7b96f9f416966c7e256584c235785b9b2cdbfdbf2a68c1557cd50944ef28f846a892eb52f122b69fddd5b42754ecdacb084cb83772c6a3127d02862d9f0e246252c2ea9fc0b9804cb4edd285fc1fdb0550d04ebfe97adfac114575b2873acd24279fba21ada000e40e8d3c800da0154e84af8a6ce2c7e5345891bb39eab18b8c7463879a7db93d7753ecb886923c80d991cfcd50b278e350128d82307b48995fa91ca39521a9482d87c43fd652b15807a5212e2ab76b0648a3f654c80e7c901dcc3bcaa6e4cf208ed6eac0fd7199c839c210ba7607ae5d176411ad1cb5b45e86467dc53da02a2b9c5605c29c65439b3ab391bb7a1f5e685ee64b74b571c363bcdd82609501d9830178432be7c76958b1396b1ed4cb0b1d0fc6f12594f7d47de02defdd40570559893e43bafe9048c9672e384f303f3e84cc2ec7f2d08a8a82450ab53598aa7ca1dcd86f51195d87e594ef8c4162344ec0feb82a0bfe60dd5f556f39d8801c2fb9b6b2dcc53c01e05c2f9de8c70068e75ff56cae38fed373bef0b105516daa08e4539b7831f9507c1f779bc1342f197e5e716af1ffad0dd138fdb275620f4db3c1eff7f21fd8b7a35544d39e4eae3da7e3dda24237a0d78d0de7b4d777b6fdd76ef0ed3b3a83c608ef4cbae8ae635251f92d9a167b9084ab9c2e3204411f027cc86d619119abed4510736fb9be8d5c6bc481372110d41ebfc87bd474f66805609ad52fb88d082040d294808c5a1d4ba67604119d1247ba15d0efcc77e48110d00cb63a630904a5d99acf946f89891e74fa2160b91ec47074d244af1218d3235f91bc9a5129cd7e269163fbeb8a185799a5db609fb6f2b2d6a33d1a237430f1559c2bf932ea5388377a79c2a5a378bdb132af7d6adac04632a2082e6536df39cb578c5a421c917fbd1b2e6625fef393971fe97d3f2a49ae9be7a4babb0de1de76c7c610599a358df6a06eb19789efa8ebd3997390a339c78dcf9d75468c60e0c961706ae63b74f82680afc8c0e5ec875abd4ece0fa92871bc73ea9f855d06e6c77b7decbe47e7d9dd92f709dfec5400ae6a6fc9b9ec7230fe57e7d67c772d347ba011f1b02a56a4dfacec468c3703fee90b89eee800228bff3037ba85120a821fef0ecd7217e08f33f3c1a93dcb1e8297a2e32a64105269a61e1e3a109d2bbac3df481f51d6ded33b0344c03e786f23009aeae638344349ee4008e0737df2cbb3df36ca955436917c8a75d4e871eb8ee0f97eeb2987acbfc4f5aab08843dc12aa487cf28f7894fe053385b0149e04a042156ff30c79e27400b788047e6e69b195c49b27833669646a22838f5bd7d2ebad2a3e596e0c7313453600a9e482fcb1a1edac60d296db7e8a02c887b8ad768a85df3d74ac4e3555d5b0ced9473ee263e5ba1e08370e6c495fb028f251b3e4377642ee0ed5c022e87648846777c7324b02a34284f09fe30bbec133a0193f18b255eaedf177412ab49ba7504d2f03a7940b73af7c6d5f777ed59dd9e09ac2e9da7332c6cc9abd216afdff30b36a5389fff2b7d466ca27f907d20668ce77d3c1fefac5358b28bacaabdadb9d8c850f3a68550458b16db0a71cdd4b331d18d45b3c8bddaf2bd9d09e6e63dafaaef8d8d34a72bf2542b0b75fc5597f0b6652bb2b61cc9bb8b288b4792c2cac4d3ebf207594d5e82bd53d7909eb15ff3bfeb8ae07c43b6cb053bbc67d2ea534be5349f270fd0de0a9043097ee4fe046651624deab8e644b52a1aebb5273bc0af3e53121ac21c7a6d8b2fd4cbec216c95752eb173daa7159f62a054237e106c8953caa7d9643b00d015208ca336b8db9d7bfdaccee74255936643b36ec05b729c306759bb8c34b761de580489d8c2d1ffd1ee43ea3e7ad8ce0542490f51b43be71f4c46cfb49fc7324765d7241803a18e73b499090c78fa834fe4fa4219980dacc70324ab0c7413f05a463895b8bac7a1c95fb551b4a109460997f8484b63e1c68c4c742f4ebd5673c4fa34adcf952a1370b9a6f0a6288fba9ce6d3b7b7fcfc7c32764ed14ee35e710105663101602ac76417d8c9ccfe7f65ff7f7ee76eefbbdb577705f78f85cb0128eff7db61f07760e25b803fc455c3b10f6ed91a5757134661feab8d04ae7fd9bc77ad941cb8431d1c52e03398359839e5741e38a75c358e1c51d26ede73144a9dea58d2f5f1b198a5f5051d2aa404e15eba5ecb542dbd5130a68b45987faee9d65858f0333f269204f25cb2283e14947c6ec144da947529298d3f10f1ce59888139d434f2ef9133e0c657371a33b9b3eb3604b22ce9992092e87afe7e79b1e468562484f968a97dc5416433ef8ade53f0dd371519cdbf1eb7572144cf29c4e47bcddcdf598b5e7944c7056fc69df5e9c3cdd084b7b9a62b0dd0e2a5a70fd05eec9bf944de4e1fdc5068cce97754edcc3f1b4f793195cb56c919a9cbfecd89c3b45eada8044f54f34bbc6845f110c1bcaca6aac09229b8efdd99aa61dc709909a502d3a90c78b3773155adca401240f882bd638a564b03dda3fe66bafa9d1f14e030de52ff4cdfed6eb2451036a87862ed8cad5b1e3f743aefa47081ad69d904ba70c35ea64f3528fc7936fb23c25321fc09b4710942781a29725e716c09ebd284f97f0ea8aa7dfa5b8348a77dad4752ae314add4d703e4c655685d566a4b295b38b2f1229a65f4a2f3cf0df4cdf06e8b2d9eddb4466ddace0b3cdb2c9a9889832d5caa32d519add37eb9d7aeeb11022bfd5e07ec40e5623296563457b830840bbf9a974e95969acdef644097063c2dd9d02bbd3f36b6e68424bfe57ae293fb198d6f41f7181495a576bc232638eb2642830b8e530eb6ae3ca6882bc576ac5bfc75dbfd105531396f93338d3a474678c2aa4e2532a71e41d5ea0d26f5016f9c75aedb67039d75249070d55569fa46573f301c25daf18130a7260bbd6c8d8841f2bd932013e8d8698779d3a841d366109f988e5bafffb1a5f955195ebfcd974eba7d2e9a7461e89fe88c19003b3076d3fd93632d4f27c69f240126dc67eb24df5d64e12328084566d9b0ebc4912d8df44d9a7f1864332b6fcf52332288796b4388e7d0affb485a40d41bfb698e96f2f2541ff2f4ed962fac0427a89d36b36e5d132735cb0771caafeacb947ef0ae7cd7b303f71912409287f5767f2a0989b286308e5342e70604ee4950c39c80b432b98e71ba54794d69c0626b51d629477958aacba5687c211cb565f8357198d94d5647635a649e96e901e8183f6d4e5eb0221970240658d436e60cadb05878eed85a514993c2093f191c8d21fec68bd42b3d0a397536d6d7bcbb9fbe4b9894cf814137ef5841b75061493762e37638bb791f06fdbfcced66752bd3bef1d76c9952bfe4bde5f8bce90e6b07737af4d8cc4110b7f0ebbc55941cc973d6d85aec24d65a5aa967b377888be958b65098e4f7c431e8a647f64b7284e9384dd1675cecd5b81542c211d05d64f85c7a67c6dfd04d9293de64ce8ecb36b4e3239fdc9b5534e5cbc655f41a9c2e59889bb091b8d03703a1dabe6286a3c98d5b36f82d9ca8cc00fff3774f51eb3f9c9b5f6a9801907d1d93d3bbf27542288e7651d287d969529e3133d4ac44658f4162d2ebd9140c9589c9917b584648473e8bfeb51bd6bba7574bee5bee0e8e5ea941382269b5b55b1857f0c50c22f42f375c602fb494652295663d79f893730a0a2ee2f80c78700d73fd94ff1dfcf0e57c4806e491a25207e64ef154c7c331eabe6ca7d01fd2d10fc173334a5ff8897c8d633252fd4f4a73a6f9e4e0874640ca1104ec92a2b6050145540ae80e3005443a51f6c02e5ca63da721323d427a6ef53040d5d3cc2cfb483f3c9abd57d5cfb3f2eb9c283258f7180af57079d5b204f667a2c78e3e2e2fff8a9379eec8f66d23bf6eca84c7b5f040d12ca3973d4f79ef4bdc7c0dd5c7bcb7feecd7d6e8f0ea4451dd85ffc1fdfefc093c324e3bd311871393f5ef29f525ec7294802b76506a51cc6049683a105dd556810b1128e1b5ba2094b44a2a9ec961e22496c642ba188c4e5e77f303542caab5b96c432f02e73912ac9f015b2a4570dc3944a7d0819da22f91bc43ea81d1b96d6ae7853089877f6b138b0d6c218d2aa13206b46c2ff4f263c044c1770f49b41ffbb0adcffb7942bf78775e5768e60aceddcdb1e4638b96c1ab171e272c9896ae7d8066ca3dfe0301ee9923d760024a62e29f3159d0725a3439f5a43c5ad406aa9dcaafcb448acf5cdcd06806e635778e215f52c6cfea9fd9a233a04ebc36c3350a7969a00123131dfb44bde9d9756989b97a189daa11a9745ac6758bd69a8ac3169cd02e1e7253eacbf34cb7d49dffb6cc2537f82586ba61cca4382f9f2e72edb1763a011c62618f032da82c33c1b6232156770e7d11ba69c79b098e22295c49bb1f1c893c1fc26f3247c7fcd446a066996c4f0c82668e8e652071ff0ff9f7eb75bfed221d900efad7abb92e4f19aa40d549c07325259769334ccf5d82ee5f7370cf73bfaad73e8db69cadf4ba33aab73e6854d64fc9bfeace7c8e60e421b2741a7e903553628411f23e9baf9e0109694e5a132fc56b307e50215cd0d17595407ec6dad56ef188d4e3a609525f329afab0d0b74b5e39fa4464c7f5835d740c3846dd23cf59d85a55b483ac20a197f04240a74c2cfb18962694dccf139d2f5ae49c3155fff9b0e78858a9378d68592bcb0d1c0314bedc04c583cf1f6b8701f595832f1dded2441d8e39b80a7a6499f5d09cfb07ed838197f90e9c13485c041e100d3890143176a1bcbf761dbddae6a603f9a3a57ec9309229b3925c5b54626628d50700938707d6371c888107cedc92517a4035249c465dc4807625d879a245c85fde9a04dc0a5ee722679fbcf368155c1470a21ec5e25ac3e6dd10b06a452ec407593fdfd6a7495af4b7740f4e67840be70810c3fa26254eebd2b3620d6fa2bfcae1187a6870c6bfd66825195dfc89d4b0240483001f52997d5a4bc3ede38951a57f5a9d6b8e6885e77ba18befacf50d1d0fa5e679894cdba65fdb2120ef2c18d5d3375c55d694306c5b320e9911baa308944131961f73a68d1e242ce96e39a6bffbf72760329817fb6102311d39f586e8774c6cb5af86682e749e20ad44426faaa30a391199878a6b74c080f73111948b6e5d272a40a61954b8046cef8b8dbf59479e1126f2bdb0198601d798e4e8c2f9542aa1fffc8d1e50ed5bdfe4dba273b8d82eea1ca6469e006bbd9dd2f5389002933ba858b6db9fddb2709e0f3176d91fe498ba11a5dcf30e7797c2a103c4c5751e929fc2659d03b3e148f9889939c06ef90fc43f0f15b230b0c5af41960f75db4472e1ffce8f9081c1ac866167926af0d86648fcbc6901fb94645404c4436382fa33ee2679e0a9e2034f80fcad119e71f24a6ce1f56e1e57346ca1e9fcba8d1c90ad91ada823726720f9d95f9dcdaabb8d450ccf94dcfd9fbe252fa8cbd2f04edbbdac0bbceb59060b608de4fbc5411227662e2c3f1fd397f40e8f9039ec80733542d7bd7e562018fb98b8d80dc36a1f79b2d28f26c815838226d25922d16d35091d78b6bc7161a088dd9f6f52339b7ccd85e8e767deb4b0a359945369217b010c8926385a03be223f3c945afb6a4222e68ca96bcb3f04bbc0edcb86cd681bd3814a385fb2e497b57e69586325a28a79059777cbe5ae646c955c23e57385e78c1b3a5e6907ab85a8574964ec5450b83438a1e2ee01cd6bf3f99e05920e19519ff9e8a1b17b52b97e790e86b44d7f41d3879fa0e798a9b8cea42fb0a575b9126f3126b3587b4c76cc3e3d05a4a2e72c2bae1aac1f64b4b18769fd48db3c903782049af87b646b3c6ef3896d99d7f42bcf3e8dc132330e253835afc91537360fb32e909738fd47bb62be051ad00616a094c70ef73e16095b67bca77483f69d7619b4db1ad8d9d6ac72156de39195fc9914b6241944f4e1b6ab18be6fc9793d9bbbf45077874ca9570c28884708f3f3aad893f2b5566bed913307aef3cb2a4e662b03cca1fad9eddea8b3e6d2d36a95aba1abc9fed44c74fa8ba622659ff232adc041215f9a0c2438656d87b478fd02f5472478fcdc0b3c7a06849f6049254954af11954dd8f8bde9017d1ecad8d8c0e73ebec782b59e490b4a0d56c68445da06117b7227ac4ff0c9c18ea08d6c5c7cfd0f2ffcb89dc138f6c09b562cb08111dffd28b976bbc1fffca7a1c0fe8a043f2e65f6aa7da650b2c3bea296fd4b2ddb01cd86c247feb4961d1197f1a8a49bee290c69cb7c6138dde17fb4abd6e7d30fbd0de31a4fd113947b5f86f0b6976f9f883c47a4fc89e5949dfadd8da847859ddd9ab43e7ad3f6ef8f27473673f9489132e7f6809f0981f04e446b14f58c4405e2faf4ca5c25d2dbcd4cf799be66a370c1507d0cd9b0959cf8c67d03d660ff985a29b71bf9cfcc2db9f45e95a428f14e990936d223c3ae9b570b3943ecc6cb1b493e70b377a5d5f2bac99f6b75fb2b99f9dc6914131f23ce78b2c20f7ea6c09412a719320f83a2cf8e6b30200a2d1f3586810f241dc3af380f30956bf62ea51ff57e47fe18987e746a259d730425e25c270bfacdbe469abb8aac21a61ce38d479098199feae458c50ab0b9c4a1c5aaab405d1cbd4cf6823c2423f0924e1cc6b757970d628e1452b401c78f487644fafbef39a1cbb8c83e37fe8afca1139042b5ba798c21a2b1effdd9ff6fb2ae0197b3fb6139be960a5c60d55d8367a2c1624e17e00319cbd0e45a8432d5940502a2968a2682137d195f381b97b86e15d0142bc89ce37349b787c022de72577d7abbae98c9b4eb99b265bf6d095977c1dfc8e026f6256e8c839f06ca06ddb6635aced8fac8b3a35f0c5ddb9e08657279aac92b0e24558fb9331bad857ea32a1f7a18a9ea70f1c74223763cdf1028648ee34a60123707e6680bc284d78b259b3628077d458e131a71663e200089d571ad1b3a48214bf56ddfd43defec9476c9fbe9be4149a80083cdae89be8fa6be5b3e18aba343f632f71ca9d0bdf881ef9dea97da08a933363f68da374e21f8790c8e7fbc2847ecafaf39bc5ee585fa414cf688c5ddc4e4287bcd903dffcaf6a365fe39443ff2175dc685bf07c6117e1e532b07f5311f3811b813981d0d367a1e309dfc31dc058f70c3bb1d3add1a9824dc5ea22f540ce6f563e921d37bd766006c7ac89db80dd305330165ebd66a8ac0a5b3007a0d5697acf4ef0d429cd3e7bcc8822196ff818326957ed9143d8cb87f38d5b347a4eaca6174a1364a5445a61b36161c78bb69b5b406c0f6e5dcb173d638e21acfd9ccf40e32d6cb5d6d004ed70ddf099f1c4c06f309b60ce831128d322645d23609ea1fcf3a4b6fc1a98e345f416017308de27a7b7fc8a73270fe6d07659917910fe2298e3d91c9fcce27766008220b5a2e2c90cecb8c80e6e50661e3cfec5c739a9b1552fd35ea8b5d919de665ead221dba35e7c4ac721582fa12b99ac2dba1f35ff320ceca3d1458c6987e08ff16fe688be92196ee1a9be8dd6a4fbbe82949a36fbaa0426b34993491a545a84964b6560776fa5db61e1a60209c3772f41c23573b4f4e34a1ac9ca0129a7ad5c81cca3dd3d984ce7be657730ee4285eb141f583398cdeecf6256f13a37ad3374e9aa6d535d4388d6bd622ba61a84030c0f1cf518be1cdc5024b1882cbec3af4e84257b51de2243b363545502c90e1734186c02470fecb7912b94444b66e17daa2a100df6336a3f7660101545d2139e89b094c0bb422edf90353778b4b7baab1dbc20e0a377a5c474bff517f388825a1109c57c8348c4fb73767e23ea0309f50c55f455ca0fa503743db4319215b7ababab77af150a6cd0758f1da07171ceb42ed7b35addc258bd54ceb83ebb104ae13b50b59b62c1edcb13baddfc9299889453853e788e65c58a5391c7ace4ea9a4be7441bcf677dd778913978ec501e7274e4d983d306c405a4e43b9af33f6824d8cd983343cc2692534be98eff26c9c37cdbc589d64fe1e1c1118e1ecbbf74ef2b56b7ec6086751041c59aba7bc51aeaa09ebc216f60e480badaf555a4cc977081d335fb7e08ba4d11f95fd36197ce2837e52bdd0de345bf7aa29242d5e0b7c77d9abbfe7d2473ed3b7271e9ca25ee6388090b7d02d17b4078b7e328721c4a892e690c278a685cce2395f9632bc7219198e43d148a7896d606066fa8f75a21245e3a4e79e518f9737ea89897f93bd5efcbf7faa9e3d4398c3d23bc9a7c983074e8115a8759a1c680677071794d6d41dfe640919b42a815a5c10dde23738497f76bae581a3c70f6f2c859c76594b06396ae16348170e61eefa996dc2c3952323696b76e227ceed21f9818cb7da44d5b90e0956ff6bb3b376f32929e449cfe65b711832e56735cafb8011df63c4cf5f44e11b202f020c5f4794599d33fdc42214ed460e3068d64ed6dbe3051b2dfee2d4945d8a642417ed2f895a0f76707473ecd40a417c90594604ca2d05fbee20ec7c887b38cdd09fef2617410dc477f5fead33268da8c63dd77463365fd8996cdf53c1ef3fbb2fc1ef4d01b33447dee8a3be02070a591756155098236aa2e9d8a6b9fa9ccc4d01eaf05ac292b29edcff4b6f1f9bc854d9ffddf9cba1f08fe3dc02dbf90bcc019ace5f54290dbd488cb7fab04484b482570eb6f5b2755fb0ad730ec5061c8aa8c6e5f661d149e0328854a190eb26e61321d85b18d80a4da2034d00f6aed759c99613443e23e486cb539fd955a46c95f07f9c6077402c55c0b0b3005d59ae3e5d0599fbe2bc936674e6e39b382095f2817581a2de7bff79327976ddc04c6db1e6c8ec4ba3abb907397479fe5e4ac982d973b5b09982f162b20fddaa08e1657a370bbce2cb8fb904f81a9c665fc5623d05ee08801b8be392ef2c9592e77b3eb5ae7ccfc32b061e0946d3f88b9b629b806ee505059d42174f29950734d54908f6228acda27cb0c4875735546880c223bc35cceb99a05ec985717e79721b77d39baade7aee20a978df06d79ad452c1db84efb1347db84902b68afb66be7c107d9b76658ddd5a0d80d51125474c74d1f7062c62809d5fe0247b03cc6aa0a5c582762e728cad2eece1878bf7b1d255251ae73fb5288d04bd80d993387bd17da18941805ed425ed4c44da606ef61f5124cc7aed044796b01c99f1c23a54bcf914c77c0d86666aa760a86c55b0f245bcf1e43f5a71680a4cd85ab2fb63e40e53f101b740edb4deb31feb00363d29502f07389fb69d7b31ae22e5636df281bb6e00cb3104b29d5731e29d73de389908b732622174d0ad5b37d18b356313969c8cb67874a8d780a363cf965260baf0c5ca62c1fad09d52782079262df631d55b803cff29e641e08647cbefd9627cd3e85929837ea85079206605eed489189ba5d01784c695c668fb844e20187dce1ee9d6a0f3eeeada6182ed60b9c94166e23ed46ef8e6cfaa71af484ba50c66dcb867fb90fedae0eab101aa45168cb87af6de70c1d57d034e9a6cf61677e405be5b36fd8f67377192ead553d62530ddf95440689a7407d044eb32cf77ebe31ed9dbba8db1173c2d7c9ee91747a64f9fd58dca46864ca7dfae9c58238f1afb9ed197977f34a2d95f0f571f1aab34c8ca7650e04d0bcda4a92a93a5b4955bd5d02c164cd0bec4f64020c5a15442a90a1e98185b66be51feef753b5099456e21d78433ec5159b582bfede6b253193e26b9d19a63b8240caa5e1593fc1ddf33e58937eb0505b0b37fe649645c69c46915337fbc178caf3128287dd498eaad07285790c400743b637669841412bba7fd7adab0bc830bb975a4e51d8cdb47abfc850f56f98b504345af90452542d19b8af07830dfe6ba169098ee9c996eeb72c2917cca4405fa715822f6e654e0e372e05079d5936352a387e947f1bd9dfdd84065c91076a100b67193e580ceab3a48161acb013b2432b1dbc5176675467534e1b66e5489e3e2192932d9c91f7c95bde5e0968289e50621eb2e24267d6ba90ada8e9d07a088a03ffe76ff2b349a9c1f1e98dd4425ba39478f0d4f652bf995ee6c6cf830b84851f7a1e3861ba2ae296dd64b44037bb080a090712f448a81e2a7966062a863ec43c5262aaf39cfc17b8908b125df2fbaf952e1653e43527d63d36735f132167554d8401a80c42c567d9acd1d66935949c539dba4bb381e3da331812623a32179f6344b7599a5cc9a678b933d50b59497c41aa4a050577933aed9ab0091b84746db16c94eb608316a6732e0ade7f521a63ec0bd7d3ab23924f4aa1b9aafc02c3ac39b6f26caf400ddb33fddd057e0de186abe1162493f73b47ab3e4d06ab204a2e67c7bf364c2478115648be837e4316969a07d274f268cca6bb7e83898149f58f45d8e8cbda81c39c92aa5a07e6b1999ce823defed1751494253e6fce12a5baaafd6e92766d0a5d76e6858ddd0e569b80c84c9ec21db67ac4d753784d1bfcf6c051724169d61482396fd663dd799da479e85d2c86e1e5341a6d15adc157545af9f2984df58717b951dddfdeb973a72d587d254f5a1fd7fb80fa4763d98361f16c750b97898658da3af674997b43f94013399003bcadcd2a17560fdd7c3b14074468c65646cf3f0641beafff01493dfb5a1eb072cf299108cc99843299fbd79da7882dbfbeabf2e54306f20424e56bec49379346c1862036f8e553c5c7ed456c1f75af9a1d4312000c65b310bd9c585ed2e56eda64db64b9215cc0298fb886af2af9c08c36930cbfe954197b0f8c42f2dcc623a7b905f336b118eca4983caf0068cdd9fd2e886b73196ce923c1f504a7d46324449837c9454d2fa577b761bf4e1db839b77d233dbd0ccdb4317405d6f50d47a8ad2d40b215003d7e4f48129da7788deeda70fec897221b7398fdeee32a613582831ea53f625098bdbd0d961d0cb3928bf81aa687d5d00e559f07203a584b3715836c628d33484d1449522cb39748dd40ad9229c7533369d1401f2760e7da843cfaee483babeb0a54dca690f10a393676c4ab0748900dfc205cf9eb355fab520f2201c6c81253394d925df6b205540c547c7f5764376dbaef391a56c2bb45993e18048789592af8b3085029f8b519b7149ff0e6c015bd8145c51121e32a97cabbca9579e861c0453c284b9b289364c58101dc90eeb4de50a3391ad8c64da632ba98c7a79284f5f66bee55287294fedaff8db25be6e4a5728ee16876ecef0cdd4c1f1a34a3a0766c1aefff6f421e7ef93bac536783354b91ce749a864dd61329244853e7947428783045094932fbfcb82f52adc1030077adb057b5360a63a1b441468711456c07c26b9b4a5d4ffdbfab15f8ce94430fec676e574d94b2499fa47d0fdfbdc2242dc828a87f592a54f0e59e0f5c5275a6528a7c5c00ca1f786c8e40f19234cb1c61377a0bc6615705565c7a238bc99f26bcc7807e9ed42200eed7b8de45ee172f9c2d27f1edf398b5670a5dd033c79af1c460d4c6917b9d5b29322a663ce0d05a49355780c4ff69f1220aefb2a46b34ce1c8b70ae9c4413790b7829ffc80fb0e940b1029ace7568ee3a7abcfbfd8cf7f7befc6ad3eccfda77ffeccf3d5333f3efe396b4b6909f7fe12f27c03a57d8fa8ee8b7a6c815880f5ed7ef770aec24cbc44adc84c8801cdba69a0d863a34f7e591bc4fce4eb335bbe069070fda49b6a8a9a6a8ade35864e91c9c15bd392b7b52c8b2069f93053e950649b554cb2757247920954d02bac1fa1349c83a85733ab907f4b6edc8160adb31f721468c127fddfd2404b11a2b824f20fb12bd67ff2cd3e999c785b0a55c42270b155b03112784a8fcc2a7045dd1662eb65235fdbb0109cce45c10273ceca1fff3c1cba19788fb5008f6e9fc6395c34ff27c7b513c3b4ac96b9287f7523e7ef83a6d5995fd008709588205a54f908603c7e6042a73933ca69859ca04cd17934c15bb64aff3ec364bdc0061fc9c890ff59e98881e530a181154ac30bcab29ee72c7adbcb1ea7202085bfb59631675051fd8c1232f1add5c2b2c66d61aeebfb470628d7796928f67aa8e4d772c2acf29c4cbb817b999c9a1bb8bd0eb8b5b6e6ac9c3ac4f3f6002589ebd11ee029c2d6a94a9a3b3e9026cadf364339dd79c53d3436c1ac57f454245d000b1cd6b434cbc2c3a16f9f670fe2237798f1e38a87eeb4166a2b14165bf5edef4f04a4e2213fb76ec1fa01e2c11dd7b79bf7d4f8912609bef42ece990d16a09c3f5d1c4b8bb24fe89ef6e4cc97f5a25d65a872d06467d7b9cbc77dfdd8a7a2bdcd0effbdc1ea15b751998ad60cb11941ccf8ded986b0a8d068967e53d807ffa80335aa3ee9ceb075e4a43b92e11974835929d027dd05f7a52dce8f28fcdaab3e309e7ed636ff1c2c7c6edbb8ff64477ffe8ae79fbde2877ec54fef26c9d8e1bbcb2be7bacb1ec0386f916a52cffdec1f54f8c842ea52570acfd456534ae5601ecefe3bdd9d52dda8b5faf9f1bb41ba71156fcf5edde89db1f2a9e655ef12df29beb5dafd2f353d3b085672c29e0b4729418faae77f364a4f6a9468a622d348f8d51738c83b07760297f77d151421f34a8a27ad7923569084329ff2a63fc3b7bcf9229e09264126056012ba6477c48b5256111214967376dcca42f141b136095d1214d2b17030a71798086cc0706072bd8ddc49b6029e7f9ef65c01eed91a0087b3fff8ab7e9a15926de47eba542c1ad19873853d4e09b311b673af527a49ee0e1619b88d98acd6f291622ab7bca662476cac1a78fecb9bf44e52704f03853e97c0e000782fe33d6240f12348c6ad72736ef2e35358fd0940e2e95aafc6f7951b3c265a64fb7ca5dc8c55a5b10b6c17b8cfe3988b8071b53b08dc1dce84ecde274f38551a8e2839fb48763e12c3b0dad5cf420b2f87a8ffe9c026892d1bac3b967e53cff2d96b05a03cbb83d229695def3c2bedd8391df55aafdb9740877c805e076da2367d707c049129431a08cfe4067a1ee385674a7973798c7e9df7c8439b7c603a07af5e10b42889ec4fe735d8bdbe6be2d7a4cabe6fe2a3834741fd801554b3c331f83d28fe3e9d660cfbe9204aacbd12c61c27a302c3deb7e987928ba9f233a3ab317315b6aadc588b59693bdb7c64636a2d044da697223e37ebdc38f1a7101aa33b31341c7ce46024b5f0c235eaf6f51efd5b4590ab85cf4bc92ebcb8d1e6c657dbf70a7fa97d5a088519e9726893f790df2a4c49763d508d498123a20c4fb5ca4e45b1a1bbcdfb6bb62064aa58ef948089d831a4a8d2916e03ac15ab3620c4838e3c70e81e548f019ca9211ec3ec27a96727c1af125085e51ccd7c152fafd5b88bbb2eef5efd5c1127f525f71c4718017cb12038ca2602af38c759f2257ea342ac9387aafd8d5e736451ec7beab23ba5361663a7df4dd60cccc256f3fdc063e93fb26cdb6d1e9955c996081bf1cae9e24d164e49472cd0bcf41fa9d6e68a0c07acfc0fcc419c0ed99303d90ba14bf33c73b4a3fa57b67c2f3d5898887654aa008e9daa631137b448a0e44840fa5c1db39977c07d9af586b625314144964cc0b694db87f850ac7d4e2a70d3041a556928e772e8aa0d0b8eb3857cc6b6d48440659a0d6050d9fbed437271a52f361525df6bee6f550721f7be76eeaeb57ab5e500958b92dce1b55c9efcf87b820acef7cba641aaef3f9960741398f09e4a8c202709c965e5d958b33f86c5654bf0fb1e8cb6f2d17c67e90969b7e5791acb9c0a3a5509259d255aa14558edd9c81438b56ebedba04813b9618b02da47e1915ba2a29a142714183a6f13105bcf817c17ea056165e02045e08214e35c2c261bab19d2613c6813476ba55c0d9e68e670849d39c37ad6b11d89c0eca71cb068ac74588b3633b2aece083d4d375c706fb219a9bf8d49662a37eed4f571e1b5c6fd4dad6702cabacc6e8839744c63407fcf55cdb879c2b88b23feade2109080e91611c52dbbf6a0826d302212bae6bc5e84311d8c311251c40164e4b07112076c12182ea945444838bbd3e4b3be42aa53b0ee55e1ea38e2df53dabb7936c16376d777cbae11ac7be6eab6a10939f83d25ab2ee04e542a3aa0dc77f647da77f9d26b099c341400770235f550274baed467d67a4e11dbb332b176e172893473a8690b3fb3ec609ef217beef459c3692ba8e50b833e1a48e3457b2088852370413b2f60ce69d3aa45ad1b172679d4b0b34657a4039c5c9adab0751468592d58e2bdcad517078b1b33721b897eefa579699ce875cc7770e14c34b3150d68128d05cbc057774c5cad29a8f0aea67abaebae3d74c67a0220e1c6c5668e1748d65507fcee32beacf6d05e1beec0d27e5d0ee02a3b1ed8cc5d81f523ffb668750a17c63b26314d2e4916c34de27308370ee66df2af581c28b3c15f591ff1a9aa8dc8f511be5b0ce0cb4e08d653139e5c2bff558856a8b890f811363d1a66c641e311e96c3407e8c777d9285a55b87c55c2372bcd8f5093eb8abd880de10595a4fa66fb6b11f7558d1ed81990bd91eadf7328b944b873587ea01594bb0ebb287a86c13b08ecd765fdd87b525371fef1c1dd309ab77da772a9eacd66c09fb49f4f2cb7ad677907f29425e99c00e54370d651405fcbf12ae582aa67b6229ea97295f1f90821b73ee9eec42a920ee788db932e3f06adf32669234c081a9c201c42ea3906eb6b9001b847eec4dad5b97fa7f6033a75b56949a2ba42f76801d4da7dc85262ff4495f0aa9c8869d41769d70e3e56fe1a7fd8577ba14efe30fbe3565f359566a65cbeba2d166f1c14f965a28c2a3a1261d9cf9528f7c0b3f8dd4889af18864cbd28adb32fcfae295e3f0ffb9cbac541c9882c95ac732163a43afe49878cd6dd432c24be958dcb07abadb845076dddfd9cdf051d8a59aad8d2548d0ce3b2e557f827dc7dcf16fa4557436c39f8980f6920b897700e4e9b658886f4e5cf7eca6c50e2ac4af5b1145ac92e6ad533a4e4d94e2afc30d5fe7bfdb65f6544a6089d1b41a4f5502be96cbb303bb2135da6727d5dbf9c92fd8cfbd0d4d0da1fefa2adb077dcb9c549162c3700e6304cb6bb0a6db4192bc29ea3baf1d01845670305c3075cbe9107c01a1dd5674df9cf1b17c9a80f2336bfdab3dc14e5f79e1edfa5c3a90e15693fed521576bdcc200e30c1332efa16995847e3f5083fa8f46a921757c314a6d2cf256cf1ba5c88c486118a2f0fcabb89b8e44951ffd1983cd730b6da939838dfb6ca691f51be4759ea149086df0c8eac4040e395a53b79ea6ba3fb1777a5b1914e95a01eb5a8169b601329f3d383d6c23f8454151bd901b87525ed15ec9e0b6b73c1b53cb54a71149885b3eaea64d3f2d43d4d6daf18e4ef5fa413136c5a21e64fa4d280e74684e4d1ce8e083b2492752d15578221aa84b5dc575a871c8d58021dfae3360a8ad8a484f58f79cf6dda5055fa25437f0a29fe189db0129bf9ef638cb7b85248ce5589954d7156ef7f57b36ee39ce37b4e7924b0de28420e2debc2bce1b4a9b85868701dd8b7046e73172c4c0682a1f37f449dcde23f1510ec19341a27d74d5fba14df960473e06a8aa6e213367c17edee9827d845ccaa2c9765f131d9a00c8385df06437969f1fd537d92fcb86f5bec87ab644f462204976977d015671b65e2dbf79be32c1bbb45aa1cdbd3ef62c65916530b8aee6a5a90a8a89b684584560955592f6ccbbc2d230d6bc2ba5f9c3bb223025c281112fdf7d0bf10acae1eabbcab270526ceafef5d24428e31fec92a22158647b2981dbad8b8c304e1ad6f4e503d302cb4cfe8b677c71f9cfbf883c22d048b18ec8d9ef9207b085cab8c9959f5dc0dcbfccfcf575ac0e0a1a013d54da90e2650cb5a605835fd61f95c63e21ad73357bb85965c752ba7a5051c917bb9d6615d6bc2f15846533b971c6a9815dc4ba5015db256e5130bfd2031d39f91877a1cdd7b6df8e670feca9d8adf849d192512877c1ab2e993ddc7448c8ca6d9d9eda34b987e63ce6c01a07e6b22c7ce87bd143dbd9036382594f85acdfcfa8d263602ef2fd0f68eec9668979cd1f20aeb201195b9f4ac4113229ed218391f5721288a463004f151facac189a525db980934c3624fe74794db2e4ca54e40455693156145e2b9ec46d8da5065378899e270e2c710fede06e75e068730ccaf3074fd4dbf4c57aee8870198c64a543484b76e252f8cdf16f9589a24e813c6e8f9fc8265c360a3347032329a50b1897d6c928d992d31de35a3a4889ecaad44dfbfa3c17c347e0f99179058f1704f6ee1360f161c101b96c8cdf675f13e0375b8265d62b27db81f74679485fb76ffce2cd0800e36deb7fc3e6d73a89a57a40384828d7a1049dbba3ec2b335253bee974f5ece4199d42d29c2a39f2d94eca6b50c20267090bccd1892fd797edb294592da503ff21e9b9f7837526f02b2b7dc7b803778714b921055dba87316908e2786c22ead890dff1286f6df7dc76ac21cd256de6b2af9f54f67511d7dda3f21633720dc43b12e06934f165d989e0c7c9f1e265ef18d98c895bab474724c8c676d50eb516b8d9f1864bdafc40dabe758afffa00f4e2b363fa01515d81cc090b0a555210cc15fdf672427006e89c90f5cf5f3bb24c554b455cb4d11c5389663152b552d75b4568146fd5133bfdc444fff1e89e502c53a97ed376fb1141d51a02329e3f909f0c377c471224f07b91358e02f38728c0819e8dc0ac3ab7ce3aa1d9e0840ac5419c7a1f934c1e0ecb38ca83d32aa74e6643bf5de9c42c5aa33882ec2f96ce86774c5bd092e731e7f6c44fe467e8aba79de8c339eb5a967d995f2c2fda9fc7ac5baebeb8a66ce221cf60f6d4b4cc56197358414b9e01413effdc9a944afb10b9d51c1377f6a6959808b4097094e3b90ad06d872f2e83675dbdae8b1fa97ac556ebaf36d8e3670f1568fdcb250fd6624dd98c66a096c323bc00eeb8199a2f6633eb5fa763f9df67868e916b7aae19a6b019919920e349283b19f5cac46f8d2df3583d3a276b2afc59436bed4cd21ec01a11162127c162b8ba7def04f596a12c97d66acc3c106de9b89767054363063691584257f877d7669764f69685bc8526b1cdd1a07dda733f44fa4e1c74e9cad76b2cc3a818cbf9233b06e51ed4e32d8f00e641acc736a2fcdfd004d23ed041c6a9c91496244f12952ff3fbd60ee61e4b864f8cd5d8a9a9f549fe649f7554fa4619c2bd74e03d75113264deee67b61adbfc171992695f36893a232b0db00d3c2aee468744e03cd24495c82f817a7137b19e97d0ac7fb09b390609256dfdb53fa9d2407713a015016f9169fc8049674acde9d2a3dcb18f1d30f0760dac57c53766e30b266279f759152b6983adb87c600367db1ed82544991c786d417b776d38b3e591ecfddebd571728c35cae8a46953dbfedd9983f2589adac9b6a9c4bdf63d2024993b55da13c375206b26d13ca25dfd5214f65ed59f54c64e03f3f41cc2ff0b603bd02467009bb8e5db6cf5c1978641d18ec8e1757cb6c01fd00879695ae767dcb22efb960ceab3b285edd3638601b54966321c0116155b0addfe4c72534b8d20abe26fc6b332fc5cb757ea0d66cd0bd4c766406e7a348990ad57a8f7edb39843e9594bcad05d2379c5d75ded91b0f3c80743fd9d987356c4fd272d70f9e6825dc340dc56f4e0a831c8f262382dc1923309e5dff1da703b15d357b228910ef1665a8857fdb785b02a97eef35e029eb9b8dc3ffa4114313fc5df0358c897c62cc0ed7acdf43ad7f8456bcf29a1d3aa24933c35b7f572f0dcce61415ea4f386cee9da133c79299adc68eb0b0e9ac7e33ebfb94d397bfb357fc001f04500045669b9dd321eac7d3ca6c0f6e7e485efe2626dbfe7eb6465502d7d1e51a35652302583f58cbdb7471a69496aac1d6192fbf8b6db21a7b5a841cb9820fb968c4420b3a3e9f5a813db5961d40d2d18caef73268aceadcc2b781bed47787ba586a646e2981ffaa1de7d2c8498fe5fe3dd23edf832a7cce90fd49fc8071e4af4b25a927dffc9610c237f5a8bc3753f8e8e4af8a54598d9daf77c7aaaa14162ee5d040b61ed7d33b2d26b98b58c0c28f79fcbc0f2f2c57f2867df6022ae411fcbfddf7b78fdbc89c065801627f42a4cafd9ff279add6e39b6f0201d9c52c40f7f10377addd06ea95b936060236306683851ee3df350cec392b30c7f88181be8f666061fb5a957e2cf0fcd09ab73aa4e30808cc61011555f8353a4c3d23626b87295825a1db6e9b3514898f8d6b68529aeb6e244750026c56557377b796dc987632be160cbb47590381d93fe64556990e5dccd716590dbb754ed7d792725540df61818a5584f9ea523afad904b7494b2807515312ff6ace0a89a1c0d8c837808e1be8ec5bf10504efb562ea0b4ec2e6ddd7a01fb88c39ff36f1d362ff9ede59b33eed06f0127cd462de56ea88346ef23d4731977f7ea7f9f5da7df13281835dfb60360566f4c8843cf02bf0a9b6b1331badfbf7065e52a00a7a1d16788a8639b61561610e2db8104a7be42c8ce55581cf0af1c3df9a138a8d9e77a420431fbdecfcb228dd6dcfad6e560318a877a4bc558d7a382193b5b40c7c8a50fa2ad201ead37bc7707bf991432a0846fc84c9e87c73b8a6ee37ef459def3795405eb4240cd24848aa9eb253ee114ecdc884bfcdfe709d98ff21911c04248e1bbfa88c1b2a816c9c40b3c5113eb0325410673d213788c157b853d2a0ba80e40851d75492b72d046168e7ebc4b5532269cf96def19a5dfc1d230cdbf1fc83eb87ffd07f9d0153b4f51acb7c7c1c2ec8bec675ae292fe023f1c8b618cc5bd9df5e17c6d8f5a5564b1fde588f2c0fd028722be234597085cfd31284a15dc6f4b620a70fc8668015286e6161a0001d9c3ad35a900fd50f764a640acb5af016c1549f77a30f765cdff2b59e4186c381e003fc176d25b13a68517d3d760111d87f54df34309716acb0ef62fb33bbf7d73c916ea4ea0f480dcdaf9622f79b59f5212521419aeb02c037cb2876482182d74404a98543b90dd7674ba0c6e43fc58f9929459ad612e26bfe009802fdba8c40f2c68b690d42baccd6fd065b3cfbbb550a45d50e4cbb848cb0982bf7ce71d3227eb0d595cc1217b323c026adac71f1b87e10df740783f09d9dd9b841becff5a47031d3062d797c8a8b5bbc7f97fb7b5a66f4d36e93b57c0fc7de1ed3bb898b0ea4d0955da202d804981900f4ee42cc0c0c6e5abac6c8940eac766e0e6c27942cd284ca38a811688e2d996960024bc21a98a1a53ecdaebb7b0696e634300a8652ba57a4b94a955a054e4169a2ce2e37620ef57544934f6e304890783780c24439f83df786c66f6e16c41933cece2598e247ccf87403d50b996d5ca7a00382e22db045bb782c302b7b980f557256cf013a77b59e7f7194bbf8eddd3b6781ba5ab9dcdf7c370bcc7eeb85c554c1e4ffe45cae4811ecda00c4b79162b6e69365df73acceeeacd1e4e69662cad28cc23d5d83aed85d0ae102474c240e71008ee76f76fdbb720d6005cdd4b105b16ce5ba96582d2aa40dcb42fe92d85fb3832953286e09815bdcdb03866f3a2b70d5f06ea8e912f56e3e9fd554c45590b96eaac0a31d9181f38dd819e084a8074cb85107967dc33286110a1bac338d024a7a3ed5dbf942dc5769ef822a9449ccf5bebb1d343b7b7fab33b082c07a58b8638b9e49360f6406adbb03750e8540feb4aee6b8a98b91fffa2cc3c03f34877a9af7523bcba1a8c554fca7b33e12ad5dfc2a7e93bc90593dfec07ea1ffcc538662073c53acd0bf38ad1d605324494f62a14c868bd15289379ff8bb2006ffd0c0e5a9ee7de6bbd05863e18999702a7af3742f214263aa5fddba82cb2ce5e53b1db18c3c700a55f9c09ea11ad2542f04a4d83e99a43ba025d3cccd059f8cd485e593a9d560c1924778561c3b63808aab830a4f91d4529362a8c25da829fc681556a1cd66fd4fb0d93215d796af3dfd915bc039c7ddaa27ba6b72ec652ac7ba971ee1093d66b277c4110eb9b8edca294564ccc731c241762ea608ecae7a6e77d0778cd7f2697a9bf72cce03058bd005052311c25f2c5a23525e943d482d37dcd5f88f5c2e4eb581fbba3c989b32db9008836e39f79b8b87c548705df2f13581c89862a629323ffaa028ad4c94222878cc512f52af12d6d1f325656db2636dc0314487167eb30a4d7bcd4a46091561f84e66f510a54eb4ae74ab3c1beb3fad2e6775b7794e77e39ee614535f819ccd6f29b5badb81c44c6fb5fa199843ac5cf999548f44207c2954ddedbed127f376f340d270b7e1824ea55cef1bdc5136c2df9cb7434660018db5bc26cda84560bd76afa05fac808a051c7358edc9d74d33c3ea846e9d3926bdf88b646b43b62adab568213bc11e0973509f49cbf2e3281a95a5e027471e52eb77eb9c1afd08553df2e469a827f7d55bfe87e269c2962a23fcf0e4368db12f7a7bff717e32fba124170e68ea2ce97999972bd2e54108b096637d9437f34a3d0439feccb662b987dd0d0b6c4256096cc03600120e98189835ff7fabccd6cbb404cec712b3668a2123d64d5a0e3de0060fbac1784768a0325e02f31f2fb89017c94feaf5d79f9322747d7c383fdb99d5f8a0328aced8a3175973897fb0d762de6bd1fada6a33f6ebb6f991896e1ffd65ba86816597e966fde06d1c5a0bcb227b8fc386a2a07866a480ebf02323a4659b67c740f05e7c696402e4a7e83a4f4fe69b69486420fedcce4fb0699731edfc1aedfcfabfbff367381ca45db198bf764877ca9ab5ec17699189cb91d9f8df1d527bb07e14b213e21841d3d8ba2d63947a613fcea3990456934ee3e213e85ddd5184071b9181396dae4e88214718688f34e387773c54d96cb082d0e18cb81db3a62639ef9275a08e3e3852f69b07af3bb5e6c05511ae36c36b0fcd93d70b3900d9a94963a37b314761e5e25e480b9b1b1e1aace4cada26e770c3ae0ec846876b57343b4c8a9a9f944c7490a9c0febb42ef474ec316a501fdaaeb50fc7e9d9f9d6a67f041bfc4ff36e3773650ce61a55a195ec5f2a480fd9a27e8b2e609aaacfd092ac579a1d58d551aa81cc5d9c934b60b45f645bc1eb37ad26e0f3e5c94a27a36da03b7fd7671d18fc6acd7004394907cfb4cc198c0046be088c044967d6a013e12807b6d70ae4cfd0c963dad048ded6916992af237e52b6d9c5e1ccdc3cded2d434db29b2d2238138d8fe63863bdb6b3006867c1ba6f69c1767277a12a9cceef7e25443324df6676f5d8774e74b6d358cfaeb7029e35b2b1f677da314423f3dd043e750f9b63a0eee95deba3b6966c93d0f6c3ec15b7b8059c102cd4e4c60ef382751f455fb0dfa601fb9331d76c381c291024bfbb02de0b14ee6ca72018d1194fe7ee8874b6d6b4e744c8ae5c64f441152e61435cdbc681d9ef941038c4390042684b4c87e6328d0a25f0ffe87395ee806b21d2f7840cbbd8952f997c10b2e50e876654e170b83a26035d2056e6955ca453105231546b377ed7a7675b5a454b93e481bd746c7e6fc66e28b48f32fba6abcc680b954d66636ec07ee0f6c54471291f629b311fd8fc51f1f7be98709435e27e750b4faf5532be588de19bb4f89694e34e8cd2015ddea1a51e3b7d517caa038f272dabcd27e02d2cbb31d61f869e4bc01469b0bb0dfeea1034a9d7a8ee96c9adc8acc867282ed7c326e733cc067b86e9cf0f76cb56328b31ad1bcd5a519f78705b3a50c8b7beee99c588a3bb7cbe6d0a0229c93b5162dd55eae2b309ee2ba8959a6218e37cb097ba3adff46e567d116fdb3d149f80ce11fe6aa0fecbae88106168240de12078c65cd1bc7678cebaf8f74868a060d461598a6a4770dc7db9199be77bd64ebaa3eb6e8b30aa6cc6d987dbd55ba8323246b4c016bfdd94307c524bee0053ebd0cb7e823a2d5757b5210a71b1e7739bc01478f66a886c4a7e95897dc23a5c131f177243e514abd7ee9d134c3a714c107dd8951c7c3b13c815bc20f8c90bcec903f8bafc17b0d1bd9e66f6e4ac7a7bbb48d9f15b155d34ca14a11ab85102134c7b93642c457cb3238dde3a474d47a919ded9f750f383044d0241f376756e2cd37b776e18756a8466b6d5efb0d3f5a836824d8d7c36ffc95af74af439fd6caae9c966cae764b2ed896809ccf41cc969c4e405313c77400aa8a877b3ce01a42dc19c42b3e7cfb10eb383ef8fe54d3d7dc04aa714f3147e99fa98032ff5f1cd2c08a695b169ea1b573d5afe4f377110dcd6f9844f88ade8c5d4770cc3de1f3820b53cc2bc215a4ecbec82acf29355a8ac0f8fbb6e6da200a4cef8e3cdfd6fa7d4777f5c8459dd02777f77eb5978599c23454a8189dfb18262954b21f6abb1e0e8d61499cf22015925feedfcad129fd3a1fbde3ad56f0fbc527f15a0312266591ce62a01662f3b92957be289caa7a2c59d3e2d814da7ef29b153644e2c03c552d468335dcaf6c89c1836f3fa8dee3d734062d60e845425c0adceb26c85f4b9d3d2974b02433ea0aef631014723093128d8acd8ce801d9bee23765382eb8468061c27549de851b418920223a73d616319902cb01670d6e25d933de8d8484f9897032b0644f9230f48f5963abaa83240fc7c64c2f55302dc68ae320eb86b685c2a4d30cf8ca58e5136036418a37ef0a981389014da28858c4d60774e8576793b104c0a631930cabc5204be1315b11fd8349240a172f979e4fb0132f496a928a33373a071bda3f0de5a17da56d47f8f554fd2d690b4b47b4f15dc1dfb945b586db2eb6492b8ebd24fb7f46434f8aec0426e64549a44a4e390574301d9efd7d8ee34c6e95531c84c4859b2eeea2454db1e0c6d243e5e0472b4dbde15bde2cd0403528bec2b480d0679f52bddfd4d1e1cf1afb7b2ede9b8dfa8128e3cf289622f9371a020a26b9bb6b267ac78f01471c24adbdff44dfc7b5c3f70caca086e4d9159b432a614cc1a3ede8ccd2d97e4689469009eed008cf2f73f99f08ec9a43859020cf0db3b7fe086c8421e65b767db6fb70b9c822ed46c69cfd9625faec72fe4944ae4418e4c65cb8bb646dc4a0fa60c8569c6f81e299949075c23ee2b90436d3b54bf95b743a83fb45977fab7f9797433ebdbdfce23f5dbb41adc9402fe0d0b700fc2db698375b1f8c0722516a2b26794d1a54812d2585f98ccabeee09ea4dbe0d73940736430d4906f97a240c106ef4fb1cbb309e60a692313ddb276b20d15b50fc7ebe793510e135741aff7e71ed91e5d9cd3d90b5f3d73652ea8b9dd30bb3368a7fdab3b9915708d2ce7e32170f410a532d3df6d2e3d805df838c66216c2356af9bac51272059627f99b7f2d1ff9d85b60af2d53628aa2bf47e8ca37af933b50a6f76d57bf511629bddbd1a907668ed0b9ba84019ea84b17a1bc45cfcb50eab3051eb00ab66941db62d7c32eb48c7b2835b7558a8bb2050e583fb4b5b60dac3a170bd8f1ef6c90d9df1fcdd0cca41ff49a44a98d725b7337640c44f94e9423be73a86edae1df4ac2808c96ec8a271319d485a1d103ca800e8ea5ba7ef3c384ac8f42f3ae8f5431f45a1d3cd975a64c023f59e94efdd6f47fabb9f35cfaeb728d6911a98c17552257dd30951abb046e2a8fdc54eebfcbff8799b51d7a2b3e1502d0c04ef7c4226ba73b057d39ed02d266b63b5d636cb90b28f6bbc0d5cd8ebb14b8d0c0791be40f0174f2d860048200cef620c2be7343903f3f52f055f8523f30bbc583ba336b0167261f7100738444ce70c9527934b766bf0b055d2b0fb12e05feba5363c44cf768f481a072b7427f7e139a475eca2bc5ec596a8c72676e198fafc9effd982deedf16755b246164949aab9c8587a6da2c47591c81f5f6ee55f461d9baf7f4cf397760d5e0516d63945bc0fa1d785decbfbb1328bb652c4a610bf7cb73db29abb1bb291864a77c7d87a216150816feeaa2c973fbd50d2e77aebc0d80a87836c1a8218b2332d1fdf994dbdfa172fbacd08c13168d9e0ffa7c5311ba5615c982ffd188f29d8382291f65bb3f70fb23e97db413b3f533c7801f570fea003e01d9765e090a3f545c33b5a5d4cca46c5e80936aab070592ac2b9a98a427cbc892c72c1f9443285dbc936f1d093aa8f03f96ecc64256b0e735b4dbb1cee7eb61c12e9925bc1b85b6d1ea60d6dbd6a56c0ad825a8a02d68f1dd54972bca14a2b1191a544a9b6caddbc598ba96f5f3b7c2be0d1d257f8ecf87bb58095c27a5051f77b2cae7770380f8f73bb9a60c517412c4fd9fea64ad066e04767456dfe177b2aaf90e45b4fda604501aba8ed24156ba30f8d2889643a64a43447ea12047f2fbab318876ed3ae443ed3201270656b99e35e17e1eeea3aa2714fefcedb34f3f15fffc9c75ee371fd1dc6293a9cdf6d5119e2cc61304e6581d7fc66a451049ac56cba953e80a98b7c1234a717b1b056ba5b74e6ef0aac45298f673f62bf8572b5ee372d66b154b5459af14341cc1bfdcffbce96aa38f542de0574d57eeaeec260c8958ae961303639359aea10c670d7953a2c8b76a63e5fe3b55efdf77edd26780f70379afa33231d653182a3755f652a62aabf6562012642f28b310bec3c3c42d77be9d7fc35794e9ac3bf8a0665b91f0343e49811bbfc29f6202caff959ca23e338b00c7ff9e693591b22d7599de155d8f6624a26bbf7a603cbae2f99973181bbc25492ca797bd6327b975a0591a59b7a23107c89698aa504544d0ceebf38a5068ba6541f74a6736b49cad9cabaf2634eb2d50fbdbab4cb8e5f6e1260982f2771847810b60667b69dbcb6e4b7b98f1fd6e08425018099de59055dbec33dd25386ea1f5928e2d2ce6db946db41d4cff2d60b7341f55009cc405bc161770b60527c79e83ca1c907d6f3b7011d6a9ed80fa5f4d07c5af1a7ffa5515d67eaa3ddb6721138da8e3712fd8f51021a7c97d65a2e1a74cc8a5bd638dfe9af44e3577f9d43bf35f49efe22e0fdbbd581cda844e40883ac98c8e1a8791aa8012d4d67d56da2e84989ff5ccf4c54ed91795871e4875d4ec384918359bb27ebc38f0c7b882dbe29526bb99b0115f022ae00256e40b3bcb271588804a66df0527f4bcc5eacbacb7ab07b63b97de1e707e6e6aba4359ead306ff73dcf0e06e614c0d5454a7bec392f8618ba474373db52ccff5201b7c74767de784c6ec4e7d757ec751c41db4dcda8e45c2611fa897652ddd0601aa3754a930a59ec961da9b24a8b9b5e923fdebc544b0c766d8d7f34dffe6cd3c9a33fee681ee6e0222148bd3e0a3492c7993b8ebf9b348c38cd93880caed95a40483965b31e7d96de0bdb8ac02751da2ae1df7edc527cad10b9cfd789eb98048041ecc3ea5a5d3cfc83e4031d066dcc7c723f392adae2fa67361372c5736685ffaeafb86daf56c42af5d43333497b87fb3e8054d6ac423deff9be9aa517e34a5b79b67f36a3613b700eefce1a1357bd5b6a4172c69890ecd96ba7ef7a39c60528766b8ebede33e45feda6bfedc6a0241316192e13fd41a99a4d97405cf660ed75776f90139460b6e59638ef69090985755eb922ff68e10bf25bd60d13397afef75ead529ab335656674170e89972ef3331322166dd69c706a92b482d65f952034cfd89c8c315985060fab856e65cd145cf15a04859e54ee01a84637939651d5d2eb3274986ec55242e5f081596f48544c09828415f64d3ef0eb9cef216e9f0a02d996e7ff18343698c46e68307def4c0e14f78212ee1540483d892e1149303371a1c76de3d5b962dbbec9fbf0ce70ad1400ef005f94e20a424afeec20b61f781d94802f166c4b1a6812543e7047a85b3fc947da25c51e65da73206931453c42d633ede2a5f498c4ea40816a1abaaeac1124a5b94a5d0f05779ce827df844eb54c6f051b963e802086667c5c550ba2b2eb4c12943434090433bc704e20a21d0edbae411b5560ea2ac087da1790785b35c8213f33fde2fcfee17957e67443f2067c50ba7ced125e2b2b5461f329c24107ba9284db3823648e9cbe9ef37df33c9f6dd7c318d673edf1b63499d1e40c3be257d8cddd3ddc6f8e6c9922377c0d2d93e452ef3b9831a9c97a39a1cdee7358228e0be12ee9ba64c823b815bfe34e792dac7f940fd6dcc693de4da19495f92ebe0ea9b526c0c01a8195e93a2e47c3a0de16a7d21513b320e501998da2424000af3854f6906eea52559cbc6f2de052e368111e60160f102a05deb1831ca8490ff52ada91ed197d43d3ff0736642643f83b35dcf74c0aef651b600d8edd6e6e713609c4e5318bf998adf7e5409f29716937a6f3799108b9005cdb8d45bdd351b988f71b16be1cf24c4b972c11291a86d0c26ed63441a650a5278b93e395968deaa274c967408609ed733b4fc774ea16fe69e7bb1bbe2c83b6651ee49435ebca0f7023ac671ca3bf074e007e6f3d04782a218f4ec2409d31c3dd9b6438c54a8b297be4bdee73971c33124c80b7d6ecf3afe85eb2f1d82330a317dfcd63713782f8cf0c27c7bdc4cb5c3ab99a20d49555d5bfea0dda925692a214d8cb17790883c5d4d4f54655f093cf8c5d3c35c43f9390ab22e31ddb2f7de671c4bfa6aa65a5c7dfdbbba98ada44759eeff1f7bdfd69d36d2acfd83c45a9c0fba6c09210306ec388ee3dc793219098184840e087efdb754f5b4d402ec383399fdbefbdbbe8983d4ddea4375755575d553dbd382c4f7fc2b51741ca947c74ab8e0a55d75f7414284b8cecd21cee7d42a6d4353b5c09b947b2fa376a4274f83e47d88085d2eddecd026f78c160a49fa466fb65d64197e669b80f413c3e3354303d36aaad3fb2826be597c772ee271606af0d60a729b8212d7f8c8d5cd141a6553724ebd70594538695fe4d43e514c31dd55d626b8ba7048b0f9d203c37e48a4ceee16d15c31fbc76731e00c60a70d30a943e6b09a66432a60e1db1b59f0ea5fd6d600c50bed1dc72dd656f1738742112f79474dcb98ade2db0fe5c5c2708f501fc6ace8f5e1f4b8c082169cbd27cf98984580f02fde5b44d27f945d21650b032cbbf64022d14afc25b688ac8c75e5ce6d283db10b4160fb89ed014f72a97343695c1a72bc981df735f4aab92fdeda76b168372d3e8fa9388e596e8efa9afc55b6f724a624628464164ba51472beb059ce3b27472a6bb9a0ad980316db18ef48e3038a52071d69c48921b640533faa43760765e2c16ac80f25ef1d485fb0b396d914a4c34bb118eb867576b6f7bebf9dfbd7da793a5b82575bf82e6b8680047d7bba65bd28b169da8b237948f9091d53f401bde30eb1ab87b622a7540bd13ada4c74b6985c6caf519fbd3ff53e200546c828ce69953b501a06955c7894fe9c844e112e95024d3e663ad873855cea7f216efa456458c801ac86ecb81060169ecf16e24867da4371a67daaa7055c9591308a135936e0dd9e0ed81cef8e388e23ffabd27934871dcd9ac8d85661808fb01d242b92bca318c70fb9609ea4bdc7b3aeae5d45c00e806f92ecd8f1841664a7c42cd4f41a9a4f9f848a47791d0fe8f823cf92769c706729af73dfae22f326f2a326f580fa8dbf7483fbc2922a29607f48541df227c2916ef2c57b3064edb0cb376c1bcc52407f03435489072546400b16d9a2fb10e8fa2cd58ab82fdb2e9852b35f9c5c6b83271076326240afce5fcbc77113ce79fe98e4d6564572ede6b8de8dd8e0891e8b357c9fda7be673802bb62ab56003ec2e3d19ff7c5ee117afcc6e39af24b37058cb0e6298a439b078f95892e6841c6c8f3faa8187ecb376a57e51b28385a0dd9ce12e22dd12cecd9c67544f151ef2ea94aea177b7ffa5293d624af7e93ba6947b549b5166e7ffeba6358a795af5f497a655ea71f055f247766d7a7bb847288401c6e32805d68eafb83d8731a71bca071325a149c16c46298e63bae13d2997f403f094d3e9a70b2544dae5b589a5132fe7a1b7e5b792948f89c1692a8d9da6e8e6b83e0222c4017f4f9486d9fc51adf15fafadf17db1c6838952cdfebbabcbd6dd2d43f8a5f2368f9cfec1e8656dd602ff844f15dd86f6eb6496f20884fbd77b09e6a996ba38c211332481c0a2c85ed6e50c659d23b63a077ff0f5a9444eaef2801d2ce649037af432243780fd04f9467cb6b39dbe739cea7799db5588084b7f4e6e0c219f5da3982914e24a61f22cd90fbeb30a2514548b1d6342d8558e38044ef85ba80ad7e9cd4780d5d964fb9c8370f7e7dfdbd4c8a4b985efd9fe8593f0c3df31d9b17961175ae552169a782c33f5e8e8fd9105a42698d5462f566a41a335cbb40af4c5766e2be7059f7de3f263f7924c6ede213fc430b0364127bf87abfc64993b5ae988698913ecb3bd3e187ffedaea4d2ac702e6e8e002520c393b38dfb3fbcb64823d04a123025c2e4632b4e02af676a78e83df784a50873c17d090909e0a7999c273180c7ffb20596355a47b602268e3de8a7b46da9d2d4208efdd2e77fe70471f3e2cff56170f7b9b2eff21f5d3ad14d66fd49f55e19f7b7c750b57da74586d02625874f58c7ddb5cdb95dc9a7d556dabd4f0c0669c130ff75febddb8e11b62cad4dede31531cc003a6192e151575c52aea7d215d5b8af279aed875be5564ba6b417320afd72c631218f5116d41d61a183f38c5e733c346c01d352ab7c986f9d50eaa5002bcb4dd615141216d7dc537863fbf417a5cfc6d6f10d5ff52ed03443a3bd18d34310ad1f659df68f9376a47e8626c5d19571670bb28d4bd185b75f3a28057bcbc72ac1fa427ec8a47dd34a4ebb7103e0c952c8e2300f57cdcfe61c1175b0597680eaf7089816ca6dc0e433c71f2a934d4c97eb66faefa0bf309c7e098d2b65a5057b4552f7c749928529d5c2172ce0b50b05631b27ca435b4958aa70e4739d3443ad60629d4c8a58c5359218ec6015beb4cd8ba4306d8337671406a37ef737d90f7c26216d2665bcf5fc7cd441d21f79c9c657e1487ce5fe493754021fefea93de1f3086691e2f783b0d674358a6c06717b52f9159b04dbeb7e2f37aa63706e0321fa2e3b5af51e98174de599a46c965f5e474b42ad5726c90e4c923da6c1d34bd1ea7702373e993483ad33b1fcc877bcfd1786ccc5dbf22b050774f3a93aa4390c0ab0e3c95d7b30a4027e2a536b9f99bbee09b119b74f35b939d679cb851acf539c2ce10c2147768440451cec8749d90227010241fc0ce933d1680ba648528c980b05c9b2e442e55dda50ff67d37d3464f82afca27462f51b8366bc7b7dc6e311209af59bf7cdf9a664d5527e1d81556fe3c599df4ef257e3414cc16b4f5f0aeaeb7d1151ceb9bb0b3143bd4d1ec1c41374edcac88a14a6c4287638193bfd19405709cdae396260c0c6c634331f76e398210a3ac63ea519ba2fe4a2801ddee274594f6366953218998c98d7e4a91a4f5b59c75aa9b482226b2fb0dc1280143471e4c7c0ea342b3ecf5dbb932704ae9f877dc5883cb8e7f1fab79c4e7b2c866c3606b00e8b6d7ad1e802017700982e2f5a6e24326964d19ef6c9fbf981db573cf3f59c8dcbc79cd74fcff913a39c6de1c3906fb80721d65767b88e8dced39f9fe67c929cd8d37d1f30b04e1470f9fe90cbf78672b9d82b94dace795ad747fe5600a05c0ddfca9fc8147878a25f2b1a07fb16764fdcabf4b44040ee03c66d8ad39a659de39afd5e9a39dfa66a18917be4bb31075fedbb3c033d97dba27c92e22bd83268c196995361be77588e1e3863dc7fae4d331c0b37abc8652c1a03cb5c4200e017df83ac24443b31f0946fc2cd4ad0e3ff32054d1b471854403ff0a34c96d2395e885602478f70da78143f4012088976d7aa41877ed8441c6338d59ed0d411ad04fbf2f24288236ef4b66b8bb34940306740786c9e82f24e2980ae119dd8988bad21dac94cd93f471a6f6ae0362f4b9757efb9bfd61aeaef670c8fbbe0e84b5b9837718aed361ad30d7f0cc755fe2d847b9cd225bb8f72c11e17407fb2589c2ed80e7f2fcc9bfd65c74dd173910e266194b62f8dd83403708b1dc54c22e1ea0849c4ba50c574040ee0ea4d38e95206884f85d7656e59bc2c9a1d50c8dce7b36962b27866ffab7bf2bef270a1d7b0c593c8a5f66689a96875ca20ac153c54082408ae2f5de9278b3af2cb95d07544bce3d699b22dd91677d25a43eee8a8d9425c6dde2d76fc42c4f0252c3b60b227867a44e2bfa1721db982739f25446bdc415dfab931c85dad6f0528eee31a52fd4d53dd99134d9e8f29edaafecf34e16a91d21a517a41d2b6c04c170a6325640bd10d586608360c243f8004dcec73e5ee7acccca1b3e64f84a15168dc8e4c7804bd3b9188111b43f2fa0192a9bba319f1b4cd665ef5581af99f2b6f9da93ca6d8892cd9ccc941653762a791684a271f8c4c51c1cd429b8046ac52d6289636c6d9a5abb02c7ea4e4ebdb9ea6ca217444d83b8a234c8f6fea0ff9942328a73234ad8b647ec72e13b1b4e010a1f5fab62c0e56160f3938780b17a9438bcf9d9653acad5ef0408254de14636c19a2e541f6f68a07f722c6effbc60fd1b2e0d7396df42cb3bb10c374f90bfe78f127296915b22a5d64f122e40fd5a9fd55159657757dd64466f57b281acfeca9465224dd9bdc36564237d47b35d934dd5b3ca89cff75fde7ee4cfbb95776188b13650fbe0ba199f1fd85a6d3ff0445e75e984d73c7037719396f87a3ed13b916409b40dfb207c4cbdbe26664751eca38fa13235bd2add1edec5c9fb17972ee8b1998531047a5cb9418cf6cfbe420437a8f5d28f5174064df50f0e26e3325ba4836d36a1e117371401ce7712c3c5ab51e4df0526c1e1b9658881d87acaccde450498327333d1427dc27b1a7d7f7546c2aee44880897d186d1e4f4cda422e83dfb695122a47b310888189f9b1cc95b341c59a1017f5b77de782ebd8779c4708f4ae1a49c49efe1ea8600afe013992c2074e1923130d813b0d7b5cea586fa7fc913f8b3d81e784300466dd001a6388065f8d66e223d8144c5414db1d6791a3c9deb8c46fc5b1f292e0b55f95b07e5ddabe52da1e1777374f97e2e6cb141fd366620c5df40992421daee5c1d90d3c580e46df803ac47e53e1dd71aede02faf289f6b5956f9709b769e421a20bbc467f5631a66afad7e8c5d11ad1bc5c8d5988a71d9ed95a41d210ef8389f2fb9baf82d0a76ca8cf2eb73f154a864a36a1de86b6f4d0e28a847af9ae0f9cbb258e590a4cdcea82430d5618e30ccfe0591d8a29770ff7287a5e51eb3331d5a0a339e1e849a7ec28c415df9e21ca89756df1674406f7785acc6ce4577b51174b2711540fbb59a98a21f1b8e7bf580bd1ae658fbfe44e6ed10a2d587bf66c02744a7c744e0f595353d3c2a8233706fd936d152c3d4f9ffdab76acf7888a259ef15e338dfc7c4867a90b84a9a6936a7a7a5a793ad3a145dddd543148e9eaa0572bf547de6a1368d2afb480c85234858e665a0860304ffb07c5a2c408aa76e8f9dddd6e0871e7eb3f3047b03cbb2599b19d5a12d33d12bd3193c2af789bc9cc3bbc642b8e494121910bc62b4a5eca4841e41ba44d5ed2772a03b7ca93ed0e92afe76886a7035c01e0ded6a293cdc71ec34bb9add2483ca8ebf6c9b4f54a4c5215392be3190ad3698cabe907744675215760266cd4160701a696f3bad8263377929dbc92b169d1bdf87d66523a78dc129bf29e7b66907db89e44e6039a9cedaab0b4e507ce56038d52f2be784e5610eb0abc3b2d0699295681e141bc75a4281f9a6699d8cc7f7c851960cb91d7d6edc0b07c26a0b0c2b3832ca6c5b9ba8ece5b0e5c94a7c05d8b7b357ae96dc35b2b0e122a73be0c099e2f90b13f683b4dad636947556458851cc4a9a9eb2ff18ee26d1951e40c2ba3ac3a4ad951e698ea23def314e27b92d2b50208acfbebcf23d438275802d9f6d151aea759964faf8560fb91b8a4151c4a2f1fe49a2130f594562af1a31c569ee15c7a1fd13bd3b52aa4bab8466e8f714ceae9c96d023f78902479cc3813f3c593092de4b21cee7fb97f081d9eb4288141259513db3dcda9036435e1217aafae5bafb98dd24e18d386cf2baf73d535d6a5f5b54d3a083f1387dec2260d29c4f43752194a91112c38cd5fc47fa50f14e5e0088acd60b218e3e0fa7e3974a9b7d512873589b397138dd00feeff27504b8c9a297739119224a6e19eff0088046fcdd622a0aea7894777492896f3526a1743f694c4536e1adb843d57eabf83bf18d3eef85fbc6422cbac611db7fc8af0fb5d7aea9e17540886a9363edb5673a479c14fcdaa9bdce8d355eeff9f5b3fa363436789bf0dbefeadbc4f08ff208b9567787b7f9d5ba11de9eae772bc6eb36bfded45eb78d14afbbfc7a5d7b7d320e78ddbf527bda661ed4938918361355359cbf477d8051e0d05f54222238a7c6fb73a7f1ef10bf23fcdee3778adf197e1ff03bc7ef237e9ff0bb85df6dfceee07717bf63fc4e88c00e63d1940171b4a963d30c6fc4d3af9f0ccff0cffc56cd513fae3107c43f798fd5a5fc6063e1e3e51d49dc020fc5068822e457a0ad73f6328e2ce93d66f28ebd567dfe5675d2e081c761dac9702c7dac851864905a0fa5f83f16da417d280480c3ba8c1da071a891dd988b8442f7a622279f9c9938b26f4ecbe81e2b0d756b1e8f7c6a65f47a42c5a6c216a7c13b3554df10e1f3d912eac6fb96d0ae2d21865d9c5a65e0054f9c8e5ca2a9216c314c8cb3cf7dfa3b0463555f935cb08ae574d6b0903c95b202e0558e7c1dd01819622ec273dafde3eff4c4315ee94a64943b9d5ef810a69aa09f906f1bbff0dc3d4b121ea198db5c5cb46bc959de41bb0fbbd6b903456f83738d0c1fc732cecf33b8ef0e52a1799d733e3e2ff8780f3ccde5d7698da735ff394f7bbea4b7ee3be9ad3eeffe6bf3fe5da180004974875f2a1eb17b6382a722400c320533ce448f37d2d1d0e5be9b0acb3307d8775decbb1ef65dffbdfb0e0e49d3eaad76522080cd0aede0e8df4a16665619bb1ec4f6b43c9bc7fedf9ac7c52bd3f8e38d692cb6d261c0d86f0c9f910f20f320f879253ec156fca51ae2c69d564339f62d9974fc49041783f1fed66006af1105d9115c29834fff16690cff47492396f99f0916a833ad88e3af2ac968124fabcb0bb34a7ab4ebdd54d1db83785cd5e0086feae170a038238d068b2aaba8a9fe7763bcf1b8a0c4f6c5e225e6df59bccd3fe0a4d3ba5960b36763ca5e59dc14c3bdbeb85bb0474902ff21f658e70bf144dc8bfcf7f04b99ebb53ebb5639bbf51d52b73d359fe88241a38b2edc6ebaf9b2b20a5f5991dab18461ad73196b28b1e5e029bd3629407125fe1487082ae8405141817234eab1707100b729b80e5d3cf6ccb7b476e7ae12cb36c095ddb615ed7dd4576eb774fce8fb003c20a4ae82a1650faf7d45aafa34598ea5e8ce53c55078543299c206e57094de08621c7c8b7fb0392b07ccd08b900b3a84c8db4db98f6b4e4898c2c764acae1ef98e6c2ce445b385392f6acd85751b9f60586f2ea42d3934c5c66173ea1e0b1b6391a07c45f372a98468a76635a5cdafe7129fdc7e7415316f7e935f01c2d70024d85e8365bd148743505adc8466e418689cdd16dcf38bce305e7b231b96f71a22625020cde3e1a886131b75c9020008305955639b8783d7cd6d310bedf19efdc37df8317a5ddae1ad9aceb7357fa225bfc51f164de380dad754f069f7b7b00f324d1de06b84bfb8802563e4b3a0b4f69b4fecdac01ed6f9d71a43697e55ab31a0fa27f22f8c120588c9ac00414c9919da167a59d9960810369f99f695932d5e4fab062d25adb6938c6b474f0be78d668aa0757ee03427d8503e9cc395cdedb44a8c8ed2504e6080bdd24c036da28327271ff6a3c792a2db2f8defe2f9471317b2f7e2f35f2c317cade40b7f035fcd011f94e953b57ef25db031abf809f5628308f38ef73d76b322da7725ecea8637f70035b65ddec13bdc72c1b8ef17ba4cf7f4aeabeeb333f8ea2981010e24ed6765028f2dca67585395d2ccff6922e3c0b12f1c4a52ec01138c62604480331c62d38f32987df365e35e0406d0d847b9922f1ce2ce0bfdd7418e2099248b3a0a616a252c384c71528e84516508e65bb051945de081f8f19d1e978d372364fe2d9e7774463590959fcaff776220d3f8867810b93f3f170bfe96d0a5bd2974959a34edc49a2aed1f91403400cb83221b9134795cf2d546587fb931a50fb934ad29b494fc77d252ebd768297b8b961e7f4a4b0bc2dfa1c24fc214a183ebde6761895e53d117bbc958210e90135dfdcf98803686700cd1bda093e63be944726b5ea88dd16c5596a7f66bd73f459fb5ec75b0bea9a084293370b0b9188e16ef39daa662c9bf2049461633b9333a787b2811b2cb860edf372997a32ddc8f170f32c44428a81956e5fe1d2ba05a19ab9247ae90bd0016cb96eed73efb2fc61ccc987118075f86cca8bf8c0a8700bd644a97433b5e64e49c80b89ab0d72247384de908f11fab29a7317c6085fd73ac308d01095f86e19c89dd16d6ded8c0c13d8107e73ae15b3d9fd1e55edc76b535f6c69a7fa586a73c6e1a1bfef5b2ad9e4ef786df867cddbb1437a75bf31f4b841b199da497de7c969ac620d98f2bb4ad783fe6dd5231e33cadb9a9ff14336d638adeda206e29c12076ad42a1905e6e32e544b2532ef6e29d51d10a78e5602cd970b6336a30d0f4ff5d8526c6b5b9494b740ca1f52dbe341bb0f97fd79228629cc18fb7bf04103cb4d815213f2d6b80b2cf623d2e3a70b2a4277dedbe21bd808f2847e0f6e4a94f8a468f3dab817838e077ec38c46cb487688b21ded12a8e998916ff4d599d8afb7cf879f15895991fabad87b467b658c7c80136b4e0f8f78356aefabf0c00e49d0167a121b7b6a380c885e0532f2585381d9b39c014178d1fa2698e3d246df2b78aa368db85d2ba33ce226a3ac725491f48774972bf29c29cfd15a21603f06c3b6cd11ab8c5910610992441944e6a9cc742db62422d53f70f7c96b027b583bb160ae0a83efa58b36c2440c688b666f9d96752cc674ab72c910d3981812ce777a67cca5ac8b1478cb9c3bacc890acf85de335f1d5b09d9528eede13c0289acf5645b9b88bcc50e384740403ba705c329946102a65821378045d445124a08925808933c53ef425dc9bab90e908b204406107647a7284a99e45d670b43fc951a1a2159e453956b3cefb09b49a2e68d6871f24142173ef520d1d200a369155faa0d3877d121b86d3c88f9e76291b2713198964cc397e937d5a77abacccc49065670ced1e76a25621717c92edb550eeeb2b136cdfd4c745bbfe2f81bb149f368e80a0bf7ccbf29f408118d10eedde7e9f7d60c78c4ac792d25acea630fbfe1faf8f3abd2118989efebb18f1e6fd7cbc6d134b786083ebf7b222d714cd59373f2529e6ed3e2f0d3da9723b7da86d3812f41ff46e903b87080877f67461c891aa67a4cd672913e425bb1e8ff05c552f4d29f288a8c3bc685335925f3652cd3b5383409d944865fe91d26b9a8fce72bb260ccc6a9f613edc5b4942c6dd926bd9bcaa3910accc5e63063a7f86619990bfc401e90e6dd5cdbce03b8f8076b767219ac98392c848d002a21028d77e05ae3263cfa6d8a6677d2b0aacbdfdd7ad970c8f29fb57f65a77d40defe1b626c13399f6a96ffd168a25c92effa8ae0e7c7e30a48e71432a6670a9ff2935334bd472bed5fc3d08d2ee5c1423e2eb7cb568a8335c89203abe4c9f36b9025d135c892ed04798a9dc935c8123aa2f9c4dbe15e5c0a8807b8e31e71be25ed6b8262d4664131c1610ca7b3a834670a91c3f23d7861bb1d0b0083c3ac9c49f2c08e919f8f385433b2e409668a3ef0176c61ae86f0f10cd1db232d44c7bc6bacc410ecd04b27ffa784d23984d21d84cf201eb31bcb10d7368eaf48a3d9fa3569b46684ba940b350fcdb7eb7257ebb46053de1eb7895fd87ff099f1779ef96b7c68c1b81b8e390e39cc00403f879cf64cc0fe70d88a802fdf273c2d210a6d716d90ae5681c0848705eabe28758308e29b5eaf2baddd552df58b61c4c0b843a5526c882963f5e672e2d2fff4c499e5c48d7af27ea01847e44c7f61e632778aba2f4add9fcd5c554bfde23b67ee429e278b22e4a1b383f800b88a766697b356c887073a84fbe3628207637b1f4b05cc3144db2e8eba7be11d8be9f9243af96ba68b429573496c5a52a9a958896e8e49fd99ccb494713867568e2be68cef480dd29110c288aff89754fdb5690e4db1fd1580fd9462d3c577d7999743498c88e5cd1ffb4e3994e70c315a1b67cec8171dc47276c68ccbc92d88a383ed3c0070eeb03d66123aa184e6cc790469bb4a0941fca88912a351a102fea1004f0c0179563f1563a4830c9df96be7e2e0dab9d89e8c9067435fcf2e4e46c46a0f5c2eb2a1a4e61336148d1b1bd30c0c9139f3bfed11b81e60f595656cb47e98b79465f1b7b67afc575a4d33e3579afdffced43c173d70e026ddbea87ed073b1389d9947cf95bcde7ece027b7f3f2f1f778d01ff121e5dda2895e662b1374678bbcd2ebf383dfd73dd587a6d4a07ea2104bfb5c2a9d213c008f037a590564b64b4b67ffd57ab848b4b95b050c7030e458b7bb087ddd22c0db599741d13a205ff1bafc7f74811ca7a7b8b63b48b6fac659842fd1823aed4019be3acdd3e6296e824ef3d482f36217ada1434c55a4106508a2898349e85697b3d4293bfe9410fddb6269525287059f66e2173a3dee511ec10a818853603e193b41d28fe0659ae48b34e8c0b56824bcec62c94b7913dc8ed71a3239fc303539b136ab60d993acb142d1fb12a2b8ab02a41714cd1ebddf0e156b4dddd4da4fb9a29d235cbc432c7d0f977807dced9f8fdf60d091fdd573a85c22667fa8d3891f4e21d459bec6e1abfa713413a61ade49e125c4ca4b0668aed011e5cc590e313cbf22956e5bc4dc2bdb04586981730de235b0e4e13d1ff25cbc1078bfddfc162650c8a1bbd9fc56a123a0db39266335c925b1471c64f0fd90cde19246de2e9319b1134149c71f0b495cd88ee01d181a79d6c866c91c56f093dfa5fcad39f2e797a6c492657cc90e2395a323f7d37ffc72cffd886340a18f2edfe3af72f78c0c078078bf796c596b6db03694bb24a9ddf7ba5ed1761f23d83b6bd6acabc3c7af4d3f8e75dd91067336d5d033031f02df5e87a37be0bf3e63d438c3df28e31edfec08413e26be31222dd53b2a21b603eec1570f6c3815d24f7f7b5736e1dce651921824fb57729ecf39b59edf1e09e283dedcee89b49bdc1966e328853c4a756767fd9a629b416c3d2e4d72b0f22c6a43cd55f8f7673dad423e0e3ec7fcf49de8e90f19c6f9c9443b91db29dd669ded4cea14ec22745b735263f9b4d78539dd79bc0a84ef2f049f1a7a91ddece085445c856dfae1ee4f23bb7ef38c7eb65df3ac6af967ce5143fefc1a3b0448c1ef0e6086fdf9ea2261b469d3d27d9edb53865eceeec683f2fdf6bf270b5163eb612b6601422fa6ea823a2ee51d8e204931d04811e0b02ee8d687e0802ff2582c0e26468781df06b35fc761afe3e3141869a86bf2026b420266c31671b1cfd81c45a4ce1f19d5a243eecf03c40793f9bf11647221b69a1cd666cc271e93408febbc582c74bb1c0b7fe13badebb0e5c6d67d081dbfdc610df7d18a45e391e8ba9391eb84cfb95328fc2bc71d66c664e53de94ed74f6f3beac534e0bdf6c333d3a0772b9b65bedab1fea01e4770bde47ee1beb01db1ffd9334cdaeca9809468f3c9d5845d2f43aab6d2593f2fd9cb2b01ad2d5732a7a70f0deabc2807f607ba95b3f5ffd19b1e883c6a3f00ff593546310af56f386e1d5ba8028f1ae9fd21b0865a7df734a0f3305cab998c1eb676cbfc74771ef6c920e00b1e831f6588cb9a4d66ea5f7b529fcbd559de409bbb792b87378aa3eb8efcf2adf939a165be8eadfa5ae9eb72115149b680f959601af5a364f49f1a3ef435ea0cb57ac255d737969cdb0e87874ac356d1174feaf1e6b1fdeaabfff9a7f6788c1e67559617a32067c13f44e67564ed7702e3a68f0c50906572130461222747826592c0ac9e20db963baffe7a283f46d45a28f2b275dc579da4bdce491eae0006db4fd0ee357081670ce9a0609170efb0ceae39ccab83f53843b258f82e6219dd943e5e7ff40e20527f424f6dd9666c5d8105331e898d598c3fc3d3d903015def54277c4038353999bc6167e88a8158abad0ccca1f24d5e421b0684c4530869748cdfff5e7aec0e30bd78f4d6729339c0bd14f8a33ce45e32cddfc7b5ec1e68557f006a49d75ae397bc41d76f6c87091fdb5bc989d8a55d1835b818c1c3dcfaa0ea575349561ed9618267c8ac7073e7912f88194bf71ddebba8c5d8715c4db0ca5cbdf574a8f080373780b58bae3585da1ffef9d416203de2011a561e8cccc24e172b9366d3c89fe740c0d611d285e21b9872bfa9e7196186434625ec80b71ec4f38baa83baff932c49d19a7be90cf6398c78b9968852080855821c580fcdc793e4746f7418ca67b9c281f31e923c4dbe11aa06d2764dcf0a0b16f604dd9f64dce17bba2bcd6cc0936311f616b42003649f220577c907a88dfb21cf974daa2d9b36ac5f66003c537cbec94a16f5e0e876c031e9ca872c5a1328113996c5af962216d06adb1e2a5b162b58b61fcfca3d5f00d610bf70773039d63a9f7e8fbf559a7fc8f3ae34cc4f4173ee4dd6bab20bb4d021d9283c41df61d6ee7082bc6f314939275ea9e2d51b76079ef999cdfff9597ab994699ae7032bbfd798dae46a02b99bcb1a09db55602738f45ae83b09c29a3395a92ba92ae596da2e29f15b008e189eda19921e1805b770374817f0b31a2729670dbc5522ceac94e37178e46ab2ae16c312bcfa57cef4faea9679d18caeb665eaa676297202d6751b10b1a245b40fb0fa96d9922745996cf22fe5caf37a7033a8b67acbae5ccd6b6479c9ecc38a4c2f652c629d8af8d85081841bcfad98a144b4bd3e80296dfe5893f62a74382cd38e5b2b25642b4f5b9b2222a07907404ab7a6d65e0e89f66577d91de9ec7fbd7e6f1e5ca3c0e308ff96bf3787c7b1eaf844470a3d4edc175c21ef174e93c5d6c1b4706b3c4a46e423f936725398b6d46ca16084695ff57b9053a7a192f6e5640f68f0c0d1128137c5f92ba2cb7856ce5a3541b9b9b17c99429ccf1b6d9e3d9da7459029990b0965da7fa775fbab43cf25233574d08349dfe9c45a711467b6a2a90ac910babdf91840946d0002ef0b95d042ebc5b8fbdc80b85a2945d838451319c0d60fa0e24e73ff8c74ac0fd1c3accb08fdabc2c44c93c860cdfaf659cc0c385b579873115e58824723a0357f240eef5e79446f62ea6a17567c5a28d6622ec962123f7b8a4a9b202746bf72e092b894800747ed3b1deb18d60587f0d4b8c3682d1025e5ce7b59de8062e8b77b5f78aa5a6659ac127d1f766bf106bb16135efbfc472fc3bae900167d16aca5c1d97a661e9b97d42d0f831666e7080b3a607a8e975c2a92f0ac1979eb72118b62d321405accaeb4862327239a9490c4a0bf169cf409aad6b06695300ec53e3981987be6589d0ffe777b06f9a62dfcb037629937800304508d887cd92fd739258c1dc698786a294c41b8385b364c313bde94c0af66189018ea9ae36a79ef6f74a4ea663243dddef9131cbe21ff332a0248c957de7e94cd53bbd6e681cede674669d3c708ae3f5add5dcf27da9efcc5edb5a05c3ddb53946bf59dfbfb8e68ca1e4accfac9d29230f1e105898b77f8b85348f14952aeedc3070026c053fca33773faeac56bdfdb8d4b24d11acadcae0595e63fe501c927e66ba68b5989de126f9bae9603d32ab38be3063cc8ac11b2d17f2fd21c32143a39b96001642485fe6f39a66a1c3dba25f7712d2d888ea4ec4b6fb115ef4ff95dd31e64c053d23e855fee5a1b94ba9b26384697520e5c6ae073962f8ef2028499b622704ab223ca58e621b6b768a4de3819cdca15dcef47b8c62ce653c54cf995646b1a457b42783e5ff65a3d8f13254be27cf4d777ac528e6b84cff9e3385516c25d39fc9960f3d5b1a794c91d3680eb4049ef57fd34835858d4adb166fd763d3d9c18d8d6c5489296d549ddc96fcc714dbf4e6b5c8a5e23154c6f485cd5677951ca0df55813585c831a131e603de0a6c411c39ec92e1b97cd7c34f3bdaa4580dd818bc18176491da81e782d15067a5e8e731fb76fcab6e596b5840b3cdb2522623aee27de770c0ef94e5c7695df7eb7a7ac3e7eb45dcdc354677c25ebd52c2c1e7bde10d2e3d47939a59e590be59af39b8297d57eeba7f5643c8dc62bb500abf9570f259632eee0a927910c3216e9eef85b90a1fea41501c161f403d2e96a1503e676cd4912b9ed627dcac4f78a1a81ee8000d97652b3fc8d5fa465df9a33fe395dfcd6a1fb3eb1fbb50b11d434cc58e643a8f62f17763a1bb35471d27bd51f4a6d5af09412dd37411f8de0d242728f8bfa970722b1c0fc0c4a98833565fe66399c19bfe1dd56a26630d2f69658fb597def837e824258071490d1b7d0266495b22e45cbc513861a283248fc7713861ee0ca4403c4ec309911af490dda49152b8bdce0fd6faa462569e5ec65ee33e7a870323b22ab8367540d23ab42913250be174ca343f60cd6e87f56c36e2582ae016e36c7e7ddb6f05105a5534a08f4d1d06d3528e7138cf360b36830d65b11462b899d61feca14bc936096f07cd65c10df72d90cd73765ad7a98b4b6be841d900fe3e2d0612d8c16fa7786ecb31e2530b91a2f47e3093cb6e89c414eb0eb9d91ccc202da3c7843b26a52782587222b144a435aa6b9a315eb7f975abf67a3b86c0243cb69cec4c4537b7fae61b04ed3277e08465ff5cfa29f1937785d6f9831159117bfa6e3704ff6d3784d37fca0da1500ab62f35889f2799f776d05956e2de1ef010fd9b6a027bacd2f799f07a6d53fa7b0811c24797c3e84e4acae6d69e4ff47cc3c67e00911ef342799a8ac15ecd8afebb3eda41aba76b1fdd18b4f52cb9e3f7c762d9b7122a33af18722431b1e9c693d4a90940654f6cd640fed0ab91fb2c35bd1abe9f5e0b530cdf08df1f4c8a19694f64003f94be20349448fc4da844e2ebe1b548fced33a9a5c7745ecd5edee2fd1eb56652cc36454611936301b7ae4db660089f100e6f64e22f0a3d0a4b16f2512897f022f70567c00f495423ce43842a4356a39d64c68136feecfcf1fd590f0b55cf45b156df96de044234c10c6bc3686318c95bc3280a3986b064a95db6e013ea843e77b8cf49adcfa97343d2491be93c95c74f67dd51fbdce9dbd21942087777a5cf11756e2cf68854979da619b209da44be3a9ff10813c5962907a39453dfd239d1a0ac8d1e1f1c360a75eb03291e3f9ef5511d48ecc3bfe4815cca95018c3e5d231d3ae54ffbc59b1453bc8b56d7df3dbc979afc84a365923a35158f57e86b31107ca7a72e88b7bba9c6d1f9748d76a8e9fe7ef13748e68899eed767fa88992e3eae746cd0b7a5c14988adda314e20768542ee7f4a2157f7e42b84d1a27e996258ef6ef1587649e9ae42a69c60a754d9517df3a4b6b2bf6354b46f25c1520e41320f7272639926178f804a6a0aed81f61d693433d4ccbf55c590fb437b90ff9fd315cdf7b270b65dd64adfd74adf3335255371244ddd3785978f1bb6084c1c10be292232736d4d52a8aee9e116f4f0628cf2b7d4d959ed1e0c2c458b5075664bc4d010da07a69f510eab3d7d2da5e3716fd2c942d497a853af97a6fa72057a702eef7759673a7419914d2e13463f80957f48bbd444be5999c1df65d4165368fb45794c0a321758b4216cba8f00828cba414dc10779e7ec65875f6aa83babbd2c8892923a43178d126c311ae5496ddf4678afce18b99bed0dc557f8bdc939b3988ba968f3a4817b95260598e7761a8e065b888e316c5aa506bb1276d7687c17129b0d147c801a51280feaad20968cb521e556d016e260855ae5389e5bf29c3ba5b8d2a5e3d91479ccb0b5de9acd4d6b821b9138ca2e9e3aeb299359cc22481fadf4d239037da3952dca6fd00a9bb3033cf5d785725eb0f76259f569d1356d6a1e63ab36bac3d7c693b0c61a46b74b8bb6471352bbd860d201d477f3c8f4bdd76b4059f18875acfde11c98577f84858f9377768c7d5a194403ee6d4c39e321bc99f45f994f806883d5bb3c55f2362ab6ef169e37418792b213192fe122d1e5ba06fa690bc986eee4a22135d950a6269b72841989a7fe6dd1c185188b21f2b8c23d312e368f6e92920544cd05c34ead40fd37921b441c98ed93ee0519bd4c266f0a3d67dffa2379cf14bff913a39c11aa872123410e427ebfd599da373a4f7e7e623f8803a1bb99621fb0df7e1470f9fe90cbf7865c9e2fc6f9b67898f3b4ae8ffcad20e24b330ddfca9f88bd1d38046445e3607b49f7c4bd6268355370322afec269cd2e1147ca196f8a66ce84a16144ee91655c075fedbb3c033d97dbe26cbb5fd5e42c1369fc1f2321f8d0e16ba3813306e75d9b6638166e5691cb583446637352de58dc8b259c3f9f7f519bdc98a61001db4a5eb35e9489bc06dcc3785a7d24617ed4e93022e73e654380f2b8184bd261f0ac35a168467c18a14cccf74d0787af54f5dd4c3e7e9263f06416c8a99a947721ecfd647b91a9ec4ee266be658ba144293b7a7630957b116929f889ae7feddac3ca8d370d5eff58ed8f648692eda4520d43520d43e352354c6125f02f54c3fe5baae16e38ab98c576347b4d393c5c530ef71379a9ddd7a617ea614440bddbf1df560fd72e5b49f5e18c14c441170e6725240f7cd94ef1f26d6d374e384568e5a5d5c37868027f102a5577e2b5e1cb807cc86db4db8a97155add70c3850e99bc452ffad46fb260b0e33d73cc16155e3c7515c6adee4f7abaebbdaba74d785f684dee698e760b19aaec69373befe98fcb9ef6a4847cd6d3f6cf7a9abeafa75b87f9d8c6e1e25db4db517baa5ff4f4fb654fb56cc13ce2aca7c39ff5b4f5be9eeed1d3083dd5d1ee48eda97738efe9d3654f3787eb73eaf67ed2d3c1fb7a9aa3a707f4d443bbeb9ed2d3f0a2a757e6741d70e479d5d31df4f3edcffaaabdafaf6df4b585be0668d757fb9a5cf4f5e5bcafee04aa4f6440f5d91b608091410631e28beebfa2fa3893baea3380a4c95f6b1163cf2bd5e798c861904a3ac4c98799ed1c27951264126beea61235d038bf9b7a1016c3dd16bcb22ed4a70776b6de76f9bcd45df627d0863669ce39aeff346ecc1f8e59d41ec12e0b395143b06499e91991183d9972b9e8ecb057777d2e4ad3e132b2ae3ea7aa29dce81d83afd84883b045145d577618acdadd1b351752647865cbf21f8c0a84e96a420b3bacd9d0d3dc5368f00db4314482a437951db69f961e0400f38658123c10a437a27b590344d930e25b10a4188b946441a7cac0fe82bb7c78750521554ac9c66e86a6cfcaacdf9518722c544528aeefa61c6e0fc7ebe99be673bb349f5b22b5c520bd61df05991f9fa02d1d4c52089a7d9b6a8a49e5726b6756cd411bb4dbc2df862dee0b46b2141932ad156a22b935c1a72f756e6087756ec0a46ed8492dc7033fe1488d00358eb2c00905d896638a236e84ce94d88eb43b40891db0a927468782b3f10e0eec11d68e14ffae3df2c29146ab0deb9a2ecb19a618b627359d56eb2e69a87a7b52d3808b9d4249d592ecfaa703bffaf46d3fb2aa5bdef34f473d763ede77ea9f3ef4089d45649dfaa7d38c900ea7624f42dec92ebed1b2cdd6750d599a6c22d29017a44a8e6b0ab27bb210aef14e05f9347f4b005fe773a6060f81fafe60c9ce0bc1006ebf07720bd62640124f67250d54572e095cc5e5cb6965833ccdabdd2d1964b06527aea6a7c8d6c735dbc0873d6683f44f3f64e21f25b32af2d88bf8d0ebb4b97ade5790c935b660e5cc24d708092f8bdc57450e318baf6b646828cbacb8ccbdd8dba2bb66d2d00e0448d9823f5396f3a723fccd13b33a331ca07c8738504e2814b4c66443e1f518a512c4994b1d68a8becc10d6ee2f55ae76f8c48adc4375051328c7140ef123e46d2458e3803de05f6e2d3ef3746f7276e1dcc2c0db3e9f216b28fc2df4ac8be7477f09cf177a8ab79ececc3ded5a5596848e8cc3965f1d21407cd865155cdbcf58b3db8fe10434258c89828dddcf7719e777e077fc74218aa755599e773093da77e6627a1b40623d7dad0acba9f87be44759ab402aea288af70faf13524fe326f6ee1b1459145a88af4421bfd4eb725f4cc517b1f766bf79cce596fb1d03bc173b8346688b214cd547564f55a7c707c4383b6048fd2d7cd15b25b94f453e82bba5a988918d05c7982e8503fd18cd8bd396ed1d01dcb3fccf15bf485d5b55fda7c2b487275bb92626ef871bfd4fdeb4fcc72d36c4672ee02cabfa2d6d524dfd211a5fdf794529da6fdaa43117f762d05f907c30ec2fc83849df8aa4730ac22f42797c3a46e5e43fc24bdd5f9edb2f5c96541ce61b3e1b2183bb862d66c5afb994208af6e6a5e43015df05f959ff29367df8da0c96f5493645da2f33a858527f22434097ed6a236458f47acc301c88aa6e7fc9a72a7e5ba5ff9f648a243cf17f4f88f76951f8f3bc12c72fbf0b2758b0341ba28045c86e5550a5ecb402fa20c7c87c2560961b9995df45c2bc460ef856295db4472222dedd9cbd23db505f829ab04ba3553a3d724bf32a7bb1dabd1709ea5d4ddb4a8803cbaa7b537e11a7cad9b72ce5290451ae80a3eb4b6d773a7cbcfde0797a297d5effa25efe50fe0fa76e282b7f35369441d473df0f257d303839606e08874d9c1f1ee6bf3381c581c5abb5911c2a33e8c9e8ec99cc4ea7196511dcf566e4e213f6de89663ebb06937e30f71c0ee20c152fa070ad24c8d8ad2f32a305adda25c9cfe1102e3dbfb5be9a194d8765e27f32339a869d160eae6120f803bef82876603d331ab98665e6ffedc4681bda0a916106b98a3af08774e81e450ae8c03e58be23d059da36f24915ed0d64cfeb090576c1bc2617449fa99dbc639f5b77be8b2959602db1378ad5391852f0cc9400ac246547e8635a0fa03a8f636a75e0e29b4d94009f429d79cd01f85e58623bac4123f90147f5d82219bc3faae75f8874b47e4fee6ddab09b79c543f4feacdaca210b2eafc0d43852921a29017fafb8a7bf1f6995e8d6b4d3f5f8b576de0567da0996e4fa7f4288b28bdb49ce44abf1a932d2ea317988a6dbb8c882e75d86ecdd4b5fe44ea8dceee2ba98e301711c2ee0de3b973fb6077843f28de74afe7773184b5c2e4bac756079514660d996a5b665a96dadaab6566a5bc5e907ed99ddbd8e4a82f11d048f107f8bdf450f8f7fd0cfe1901f0f8686ccaf678ac857dcc7e37452c5ec35c379851c341a80c1bd300fe1cbaae88506d739ceabc135836555cdefc3def942a8807cfb1ce763196e6a0a3f658851ea687fce4948fa2cbeb6bb32f3fa9cd828451b3434f2148c0cfcfc2ee6c2abe3777676f36237b72da10fdf952ea29e89fa45420f8daba91deeaa0c22853ae1c3a894f4c7955a33fc52edd518e6afc4e783f1e277c0078aeb8e1b3bd30c0d31dcbd53eaabfaca273aa5f4d8431f6a7aecb0a0797cac14bf119933304d10f9c6a3f3e0c3b1e3c3b1e33fe2d8e158e6271c522ce846c67e5851e2d0c0e38e910c55024df9576c64d5e3856e4ccab667c89ec2ba43fe50edc701e44b29fdc4506212fccd1fe8712186ee0cf3469c86cb2bad96c44aa84142f4d874b85265cc8d611e0da9be14d5dbc6d55e919510ce8e954682e9b5eb07ca9d0c9681fe768fc6ad72c784f7901cbf0b3130e37b6ac1568af53f514dbb712fcca1b943803547a3e36274c8d8961e7328f42d7ba0cedf346c71d3b33a0fdcb5a9989f58702753f4cd4cedb1854f9bf4318e88b995091d4b64f8fb2ab1cd8330c9cf8e0be1b66a01f630e589bd2926363044f8a8aecb9314e8d790b25b963996b843b48207235768c8358f92864eca63dd680d51baad90966b5e23ad92a60e9276405347fc3ee1772b2062b2455f21a62fef242653ae75fe2065772146d9b4e286a7034310c0f2b6a7eaeb316ea01ee4c395100e5b393c4bd6d761f54529224968724511df30272287f0aa0cfe984fab5ef7932948ee995568aa7da81224178ae454099ad17e707cc90f768a4417d86b0343d90095fb781a179db045bbde898be5de4c4c536c2df52ca2d94d14b139bee540ff84c9abbb053c22a9a7de6da524b3e40fa7d73d308469a801bb36b16e9e8d1bced89cf0763cc68a2f517f774bcc90e427926806f0038210c130e885e482037684f7d8a3c7b9e40d90bb07c739771e0e0abba5342a9becbdfd4cb969789c8144c85c3258d00a774f96b0a969889932ea0eeeb73d00a3ed870b29c70a71dcf1c9bc46a1ce5921f99ebeb1dff1c9b2602717960db72fd2042ac41af75e5d9dd75cb6d6d671b34b960dc451f966e55fcf3415620ef490a687077ea2639e52cfc15121ed80b8e16d9c6c70a0a5ec542f6fdf1a8ad12bc5ed5918d271ecd346b112b3786e8b71d9560f6a810e4ce32c648eb77b28d74368df94cf6137b5a9cb075304c7f105918e60608e8c73e304603a0763324ea0db73d63a61e442e46a6b2125304bb45a0b9e28b39aa68237d9c22a28a40919ed48334786e9254821aa293d0f5205c07f29be42e6df5fcb2bb69c09aac3918cc564ab3760968865c15491e07629ba18564f4d4e22177c2b7a7dcbc3e2e3a985cbc83eb478f62d8fd846369277db73d25cae7c4c8fd8ac2f4b5eedfab41abd63d47c089b3140a0d271cd1762cdd0a1a7c1a5edbb8530932ca12abbca866ac1860a9f8814f68776c24ac6f100d792c8acdc405b7bd608c266395221e21d04979d628c8e491dfe2efc684e06a159c337cd7022b6a3e539d545807cf1e3b1427d9cbd54daeffc785c51639681d7aec9da470a756655406f5c15ce216b78134aafc2fd961d2e0e39636c104f1ded10dd6ba22455374b79a06b578ca83764673fd920def5e0a6295d69fbb9d5381aa66788a1713ee2c367d584f296957213030e8e9e6d010c9342f7e5a71912d26bbb65a36514c2063d2e8e78692eb44472d18941cc2bd1b9a3ce74596aeb319c19cf369e9df6cb0bf3a30f01221c2edf323ffa112b10fae8f62df3e3422c8477f8f52ee2e0c05e7c2935c304bddad57a698a2340cbe4881489df14c3fa687930ad3da5c92fb4617446f1b0c0e707ece6a1dacd177b18e46765a605067599c2bb59b5ccadc4e264b4b03174b2494c9e54b8e8c060ebdbe4870ae992fd3e14b19572e4bfd7688fba9deeff4846d3f2626b535ad4adff43767530b38ef40a7b12f15cf4470a669f8bf58099d29117d65365ae2c4afd4b0d0c8cf27a72b85b4aaf7f4b6ca289d480d819b3bce72926a44c84be8667d3893a6409c09fcadb1bcea78edb5b8ef6f91fcb633ed8cf94aed5139ad3192bd15f8188c82299d629050e21baddf9950069e9547e2a049c3e44976ca0ccb3bf579cf61854bc052184dc1e87bc35b48c27a41dce0037c976edd1d090d71942e84a6132919f902d82369d33adbb330891e863a2b6e2ef54a8f720fa9f6cf0fd51352e3359446b16ef73480e7e8f19bf73e259d65bd38a1b6b1b4bfd28f355c0e49180df3184c9f377aa058b7ac09ed8f4af256d8fa845772cb6c8d7be863999a9ef3b111eed563815b79279e9f42def0fd6b30a8bb7f43110b1111ff8b0d687aca6684306dbc9e8b99d18715e6fdcd7ac46ab741a568c81895677b12d06750f5c6c9aaa910275cec21226b51079ce6b169a184fb6101dc006720b26269346e05962484e5fbe253467d95888c012de004f5add42cef1700ae59a59796689ca4165fb8da666f38d95a0e28f6395b79b0aa637b35e1677f940c8883c84d008f1f4bee01013b190f6165bb8a3faac2623361a0e10c228e7a418d15434d1d121dcd8b685781d4dc46030a92d81161a8a4b32b9fb5f3a643f0a5b7488b17894027c33b6477b5e09be6ab46e5ae03b7e62f2d03af0d02b7ad11ab35b4a8863ebda65de13c5579098d81ec3c0a1f8203af9a2e28e6ebe50b82390abbd130b29395cb6247bf4f746c51e35173e6cd7c2675e8d9c395c7af967ef8b9c59df297d13e2845d27d9a33f9228724b853da6c365c51e83d1f20a7b5c236dbaa72b1ba11df105580777b17dcf6e3c0b73d5f32412875139913671f63057b2ef1a0b4eb62dc4101ce3d03129a438fa4e932d1fb7477ca5c0f762fbcb4f7e17f6ca679798a3e432a731319f42986c8f45861cdf6d380ff3e21e0c5a580be170af3208f2450112d41e7f8bdf2f85d4da640b78a78920653de65d328a1775894508ed0f3684ff41cb95b76e6b9fd65c1bb74fc5cef0d6b60409232fe72613a0e474ca63625f1ec759e73daed5dacc680f31bd0ee19282aeca7db6d16e7ff31022cd62f58e869081a7be6f08a1c7ba6b5b19c293988aac7f53ff06eefb2bfe916d2fbe63bffe9d7cb4a04037e2ae5371b8ab2fc21977ca6e48fd486fae878d243704f9ad58533b5f2b3354f16f5cd59419008a5d432db3d0476272eb86bdb8bac4ee7a63fb089315b33bb2b88de1cae5746c922b5b838ae14563f34d863770c9eeb81ff39da906e08fdc6abc88b948e25ac4e7d1309b0b251056f886d980c380f844772c9f02032e5a1f21db1f377bffb99bbd816582c0521df41242642777a3d2080388016d0022a8ac09eb3b9a03fe8ccb54b3b9639cf28984602bdff8772c9dde5cbcd9dda9a077c463f026ba53255a32d3d2196b8b28e14ec77748d244d054d1b26e40b2c5e9b3b247d2949c87025364e985d1e20323ef0323ef0323ef0323ef0323ef0323ef0323ef0323ef0323ef0323ef0323ef0323ef0323ef0323efc3e0f26170f90d0697e5071adc071adc071adc071adc071adc071adc071adc071adc071adc071a9cf58106f78106f781060756f38106f78106f78106f78106f78106f78106f7bf0d0dae8fc71f91501f91501f91501f91501f91501f91501f91501f91501f91501f91501f91501f91501f91501f91501f8e39ff758e39a3b1f949a554f15d6ec6f2dc593161108e69f259099da823a5ed1e1a1bd3b45448c18aee7dd35c758dc75a24cdab28a734ffaea9485dfe986a44aecdbeba0007dac6b8a8626d915f33aa9b295c20abdf5f2d42e419e098451ecbf332076a668d780bf36a990e91b9cb65dad7cb503b9b0edc3506d3d70bf5d973b78f93feeab8868c9fdfdd5f2fd32acaac7d482f409d3f2f44e0b43946ef5e1f3d8d2cd87099dbd7fb1c4b65a87bbdd08e66c8c10c8d5f2b0336d745a7467fd540c7ce4e51251a6c8f6b5cfc6d7913ba89a7c2c7605c596bfa4da34283caf6fce5e086740a16ede05cc9cc451b573fc27056fd888ceaff93eabf8159b51e3b0887b9aff4c1153af7282b9cbe5595fba1d252ab3fad9a6ad2e9ad36558c98cca0d4b39dd2b31d4913f891f46e950ec58cfbcf177132afeb9f95beaaff25679d064f97ddb608a0b08f7456b9b21173c50c16409de567463f34c53e86f1415bd2761d624265336b6dc99a69f7c81512d0f046bed0d73c0f216eb10f3dc6dfeef358fad8ef1ba4a4cd236e07dec79bd12d5bf7075c1c7864bec6724cb3cfbd0fe1668bc7fd2daf5cde63fa1db96c49e8bbdc38846e8d239f3ce042e1cecb1f312ab9871e6e11ba809eec87b7b47a3cbbb1b66454396e495f288cb56ede23571bb6b6c67fb12809ef023de40b31ef074316b2d522e05f3eff4a1cd57018cb5f4c870bd061d1ebaec35101eb3fcbbdf344261cb61e053005c9e7518765a426244af9fcf48d9d9b007f271fef3d9b81a07919520d4e81e4d320074f23fd53d2e3f482149d3ddbd8246d1db425c7d832ae9d259a3096684bc5933d549baf37b88eb841497bad5ac5fdeb15358aa2b34bda74905119b13ae3cbc5ac2ccd724a0681416d4842ee684bf6ea92d17aaf7cbbfb1755935098dab20ad1ca5eaf95702d6c83d6c0aa2c64fbfef8b55ade9f3c4c98e563c5aed68f6e5eabe577e7acd160170db05fcaf08957ea052ecf089c18d4919d5eaf45d46fcb4da8a9b3d87ee35b5c0b7bd4692adfeabe318b8e51884ec1541e941f92cd8764f321d97c48361f92cd8764f321d97c4836ffdb259b700a07ef77a79ff19807203a7b631398f0be894dd2b7ab3bdd8c9caad420279916c81696c08567f1cf068e38c387ea9627357a0f855474327bb885acc23d65c1819213a083c05eeca360c386e58863a4d71c6e15b220d2ebdbd57defe93fd0cbcec8629ee89e2667dd8c0c738bc0b1c156c110f19a4be99d63f182689fc919de078271a62d4bf39c29d6320019f7897476d9746854f26732e4a865f6dc1cca4802921d258af38bf28aa999ede7ec30cc34811bbcd39ce9d529c51e1f716383320162f16f82abb8b4cd51f28a1fc6846873af2d59423a68aa5795cda734409bda86e299126bd5243c09936f5a2444f95a3682cbd9299b4af768e8a82f1bf76274cb5d460a1674d1553c18d6c0d5efe098e7b35dba50351f2a137aafcf7e093d5992c4890172173866410de4481a70b9c171aac87fe406df67632fd568166b09d89956bc6c4cc5a2e8d18d6862643b06fb805f355d5e588a30d9014eb5ebf15fc75bb230695f913c4d65a12665355b165f7be74e7635c0ed07c96c26ec41559c8c9e57f67255ec41a0a1b347738f77e4cee36bd31065bb34a2079a0bf8aeee1088620af3337d7880e8005e0f5c44743195034cbdbe2e1b2c1800da8a3c9c8efbb3ef3dd5be772fcccfe86eec2dab0323a96acd854dcb6da9cb4d519a433e31d6122e07d453a32c8bc3bd3a50fcfab8ebe26b175b4cc4e684280ad40e19ab6803d27da081f7f1a924679e378a59986b3c488487beced3bb5b9b65c942e33c21b7ce8b6c7c212c98f7a1a8165d5a09f3b3ec08cfab5dceab5c95fb1afd917f5b6e94df5a89edbdf093255f911bd7b698fe42d901f8f60a094b420833393c8ebb5605d941e36af16d27915d9b79ba0f5f70dde57b4d208975c98d885d97d6e43d744b2d1c99e350ffd1029d15a1214e7c97d1691502c6113c7927dd982816e649f93f5fa153488a29ff6bcbab2c5b6a295faa4b3dc7a85ff04d2f9c5b856474c4b8ca2bdb82992fe4fdf4a009cf6067c57a14a523352992d32a7de972646460b0a21dd3b20ebf329c1139833df868b06f1071b778b514473b95e79f9a886805ffcdb5cbc400473ab9701188402a799891b740e7ab9208815f045b28395ba392279a4aaeac847dd10b99917c962a2ebc2891a63a40cad3b5a251071b53a3aef60cb175564a1b32035676c6cfc9d72f5932cd110e113e8975636e39154109d1c51ba58b84bd4d3e88bd4f2859f97f622f4a06d106d16f363ce42d5c9f7c06be215628f714330a6b5530c33bf6f2629f18e76c83eb6c269a62c916951fd8b97369e75e250244cc152437838bf57d99acab07213881aa897393a269307a263afcb82927c97ca2b26b9adbafc73e303b28b60a3fb60f283d275f69f5db36f950975f4c6959a7e204dae3a8f881c6cccf0519af8acff2856644823293a6162bdf6ee247ff47f9ed44267c8d95199d1744d41a8cd991ef95059ecb6c603deac9330ec810931569ace0155f3e480729e3e2b895e93299267a20cafd08106cdfaa23ca528f619988ab3c40d0001ff9f06365df5f6f7976ac5a5278a97f8b4e91ea832bc96febdc7e45931ec7cb6b82c3632967508f210b6bf4a1a908bc9f1d25f44f76075fe5d2473a1ac1a19d467e76dee608cc7c65eae8e8bebaab68f56e0492c0beef7c2370ab8b99e61829f46f0f97db60a8ee5069d12397e195f44a242f315b1ecb0ee62732489c92de581995b214dcc3b902691a1b8d7bb1628e956cae89897264ab2b6b698b872b9463d21e5cd2506c911b425f5bbfb272bb4266dc7cbbdeac26e1018d7346991c157f9014795cb17b29b8612e6376caa28723e7859dbc59ea789c973e1b32c33b5eb5d0c0ac6ae084e362e4b0a7c750e70dbdd92ba9cf7ba8af644913e4e4543c4cf177709cb3c9c8a610cedbbaec478850bda84e5c0350cd005de65af8a836b8059f2dd8610e4623fb491bb3dcb796d8c21ddd5f22112d4e6e6745366358761ce402e673936c2b214cd8bbb1ea2c64d5b48791831c64f8ab515820388ba6d892919507737a68620ed32ac2e1a48d650a60218e64b7c656d21e592d7a840832aeb203d3fb1be9eb6b0a5fc9432c2a0f2488a03d58d9b8090ce9f8493d080f28d2973d5c152ab7e4d7e44ba9a925ca4f96f9a118f56b219011adaa187d6233f2a7cbf2a5bd80d1d6688f22b596ae08538a249c43c247a32e529fdb42bb2d0a045b430cc01a72c86c52722c84314a6cd45c2a31586d3c3de229b816cb26a0ceed68c184bc33c493684360d9ad570a32b1b2917388c8f4f2f085c6b375572432d312b6f64c93da67261aa2862687e905bb05316b7f074fb6f6828e92ec2b8ee9552519140bf15c0cfbab68bb2c169b2414ab812547971db9c18761f6cadd154d8ee3ace8984e10b441d20ba6468733796c8869f1868e7fd4ab85cb40ca251fc595d8aff983e97ac58b43326dbaac222246098f5f2779d3b7442b91fe5a24699069cf121a16ae89855c6bcb330d21808620a5687755b095a90830e683da0577ac7ca36e9bc1c27969e52b295a199432c8abafdb76caedd646874bcae8f20cbae944a1b861ca36d969b59093f3a00a13b15795bca7a5d3b2f6a370e6a5298877635d857a160ba9d00c5fd3aae4ecea8e9224bcd13344cc619234e66f551f235721f1bd7b1e9be8b18a1ae3224d166833f91fef783793c4c1fcd53f99ec7d4c16ff68ccd348367e2675eff98cdf392cf4a17ef70b8bf914637aa77c1ccc2be9990a13da94fce20ad3ba674399b87c37152d53f4b9a1f4b9f1201ecad49e27ed22ff5b0b32b9a7d915d90d083be0b9e8e85791b9bc7d07ae92697e881fadf219dd15cc19de830c85c896df64e697c3f03164e550e6c4a3475c6fdd54c40eaf09917c6b54a2d01e7108f18322d7a24179a47a21efd34db824de71cfe75af168bbe736f74f2c5faac6dd682cade94204c0f1c031c37ecfd113f75be382439c2c3e533a1dcff95fb224b9638fe9feb32567881cc703f362f42ca012618f89c5d504049bc2f39ea4380c4590d2b8c202798090b0cd947852a8e0051f2d082e30950ba79de250dc966b6b540df2d923f15960e7f6be57069123a003da5d9e83de605131f5e6b9cc747f213209b1cb981864eb1090a32d5f62f7060c5bd4de2e7f2a0ecf852d46297a5cac72083e7a579b4869826910d05c696e2eb69194921049dc038c6d41056a0b99c3feb691675e488cb43ecf74ffccb2158bc25036bd3544d595342e2738d18a62459fdbced9162bf9870698b2535633041dd0493a9f5b40376abf52e6bb6439c7d35c0dc729cdc4c3b31d1ec7a622aa4b1e8c51c8be172f1f41a22f0c4ce65c6f86657993c1dd83b3668a976b4358bc69e8e2d8fc4affefffa35ead8a264907285eccbfd2d3930e3b7fcb14331e7bb831deeab478b5d38e21ee0532acb275cac7e507e00ac87af1e95fa445691440a16bc44451197757a9e287d2eef5c1ab7408f9b10b577d22eece69ce8a248558ef20e8bc94068f113853c8118761ca27c10164ba351a2fc2962d5756d3adc61c64a3714cdf9f921342fb57b5b2d5197329985dd13e59ad413f578f1070e59db3927d29163be79be11087cfc165f0e7bece81ae3dddaa6e988b877474e8b75568be57e37e60a875eef7523cfcc293a65a371672f26471d986fb4dedf1a66e45647aa8b763dea1ca113370c25f9c9be7d6111c16e53c3d5cce533177fc29f97dd9e50125ab37ef86a03a54f09b1cba77e288c18e59ed93c0a8f6c7def93799f5d90629a8fa8714b5fa52bdc51aef115728b5f8a1626d78a443d8526c07eb7c4e9795c3fd4d2535f9c94d35b2e07f7264e9c57ed547b7d74fa997d24251bbd392e26a882dabddd648e48898251ebf8c58a7e364c1a4dc2f59ab212c31d015906edd05729523a1afec6217acc4371a4d4df623a40798038f6c4490468da2fa0b69bb4f520497d50bd27d10f6a58058f435a56bd91519342c914446f1954e64b40ca95c3d08abcde3dc792bf6970ac88f8ca37d7656c3168fe3bcbfe03e0ed8106216afda8bc6c634877b832ceeef70d6b0d941a007f238f9858a34710c15372337628f5fb7f9f5aef6ba6fa478ddbdfefa80d77d7efd5d7d9b1847bc1d5e7ddbc25bfdeadb0ede36f9adaf7e78dafde7c01e8e210276362570886fbcccf1615229e2c7266f589c6a198bfbad0e6f935e9fb94bab7943a47e574a4fd74a756aa5daaf94ea35d9e0c6a5baaf941ad44af55f2935aa951abe524a6bde9038c9a5f42ba57cd3d44d71f2ecf7d0dcf7d241a898d4afb8e2e44bb4fea61ec319f526a48a679b5b9c21cce78f2efb2e255a219bdf96f5ca985b97376d136e4de5fb7852edec5197e1fc1a3bd3fc24f4cded7b7aff54ebfda7b2f774f8ba8a2d37d67134e26faa9b9c1b24f456b531c63d26c31c6354c7fe525ac1ce67a0e72ed9b33847fb479dfb98a079b5a0cfb17f7e31ceb6b7fa27e3ac4c25a3479252dafdfad48f5c784c743576da395f1bcd85e7555f2376f589ee707f4b9706da828494d3d91c44ee12969beb5d5aaf995cf45fec916fd4bae41ab53ed19983786e6d41ca5157764ca543adcb0440ac383f5b677fcdd65597a2c74dfb7c8748ea011a301c8d9b0bd63bc80601a58d1fda37c3b3c989313981f6c65e29fb3817b38b3e4698be6d93a6efeb7ba7af33ae4d5f3eae4f1f3b2dc07de06c73a4bd0949863904a30eefc0ee033d1de52c200418badf5cd073b3b2f7bb9bfa2ca4988590388a557ef8d034696add23fc228a83d97ba873a3f51288a74db35609204625d44786f7ada6498bba958dce2f1bedac199db47b56a734fc9fb5d96bb2b53a7ca3cdc17ac9de78c3b34ad4e8ed65a3a3a6c9cc2341ab7266693a9b6794a4ad971c57d23caf4eeddf5db6ef380cf194bfa7f9b58769f69c71ad36b5fef9b2f58d3366e6d97e4ff3beb7e4009300cd97d5a9fdaf97edef9c310fafff9ef6230fb3b347fb65756aff0f6e9f53aad82a85aafbd0e94d1a3dd3ccc6c2ddbeebbc7aac6db1bbaba7edc5174a0780d3d94e3fb8cc8df6bfc828af9ef929f66ee028c7a63431f531c77accfa7ae385d11a6fd976d98a1947abd95c14c7f76791bdaf23d0ea238937faeed482ebb7530b66ffa9d482b688c7c2fd5e4d6e20b9e8de56bc43947495167e57fe677b3c8df1941bdf1f192870772c418ec4614cc49a8fe516d0039ec8516051973b90464e5b38336e6f0a1a37c51ebeeae14846888c19bf091e7b19fa90068c99c1cde4787a086ec8748bc6f1f488b292edba3bee8cb3b36807162c936ea54cf80397572e3b099b9b36f9be4e8e278415a97384c5a0690294cea2057d12a63d296adc484fa97b618bb869ca6b2379446cd1e0116cfb8e9ae3abaefc9ca517fb6ee8e122bdd0ef47de0d20028d0abc811d92c9ddf98edad9a39d01dae1844c5c828795a04407c2610726a53d5f16412dd76f495f0d0074b2f6f97e68d7348b4dbeb5c469fb2e99d1e62e1ebf342c31131dd6d27bc6d05f35246649688e7c3619f4e9f5848a1555bb50ea7faa95f9664d2b6bcac4a1cf15b9b7baf24e00c1065d8ba6b5b3465a2ae4598d0633d2e220a9e3693c98359e844466593b8cc2e13a63c5c3db2953559922f1797600bd9c2278f1e4326fe9cf14745805607434ae90c60a01d5223c2996a446ec0f35e2654af13673970084b5ca2f30b826a5fbddca2b6072d95c2382cc9dd019b9d64cda13bb31d858b18e4d14920d1d37502a2438e993f84b4668b01933c6a765b31bcd2425c5459ab342059a8a1f7476d24cc79ce4e310d6ebf954cf141be05df24d54e6d43bbdd34c5a1fb85879de0276d27a63118ae19b1c5cb0f5ea6da59a49cc0dd7f05b9d4fb66830ae158bd156e6d5167507ecb06daaf87442605ec3a2b44f180dad8f80501fcb16b8cb46649a27f3bda7657a5dad1895ee7eb782f06a57ecb9c73bbb34632fe4e1ad18d210a13aae9529286c4048c05f44722aea3fb24fcb67920c14b425164482cfac5bebec2fdd0c2d922fd2931a0ec24eb940a0f4f177e82fab4ff258703d91b438b004ce5ed9339b008997744c736f88ede7f74cd98fda8c7dbb6409195b2f52fe93ddd17112214f94de479c679f931fc08b024fb5fe8cb8077731c0531f657bf08a48221ed17ac53269512302b67508ea39ecf9c242d6d1615e1d710c8783c7db9423d5d60987daeed1cd68cf2617edc80e7e9b785a30e83f84eeff7d9d7e2d1dd1768a14d6c317fbf8bb0ef922cb537e3f505874b1a27c4f2621d677f3c6a1100dfb7fbea74feb3aadfff1ce95ebedb0e7b01a519f5d163b98c20cab718848e81622571e90b7107d408d5ee952e20c4b0c5c8e7c3ec905c558f3119bfa1c6d4ef7c26a2d9ebef3d207d3fc5378e1f81704537fcb264d0aded23325dac74fa72c2c3ce25c9fcb41142286532969a6488f1c0f98e1f728e353c5e170e41327313c8ee1ae5525a8b7a8da4406f892d4b1e357c1988d363eff1cf2a006fccbe3f46812a78a9b8413df9051ca06c0a8e27a40480d634646dd412e661c7546c6f2420e7d5e87fc7b0a619991adee11936f8a363c47c6d00249637be081c27f0be21f9f5429dc6b30671110bb806ee9f34f8f6bae4d19474d329566480f112a3be09fdd7115b0678a45191b668a153572c76d383c47acda19403f2ce84ddfde56f42fc47a336938a6d93645d89dfcbad4b5ebd186581bc9a1ca6d77028eb6254ea719495d45318a73eccdde277521e6243edd54ef8f0306f14e067534bcb4372b6f5f4c113679e93a00552e4b7de69cb21abb06e6836b907aa668edd9cdcbfde35aed8dbe601dbadbab57d7ee491f893adc95e4ee5a6da7c9d2c9e9ecdba3dd9c6ab742f6186dbff2be13f256ea9e4f0037df73d8c1693fbada37a7c9c4e25def7a8acee5d75faf3d56c5b7d71bdf78cc0382ebafd70e6af7afbeee498ccae1f58f6b7d0eb87092abaf07cd05730bfd95ea0e0324b883abaffd2643ef85d76bfb6cfa1622bc5e3d5de37d3ebc4e139e04dabdfa7a87afef5ff93a6a87d76bfb70060caf4fecda45c0eaf67adf8fce12619d575f771c0045f4afbf4f31b1f9f5d7030733a35f7faf8122ddebafe3266fd5ecfaccc4f0d4cfaecf4ceaa16faf10accb0767f072b9950aa193557d7fcd5c5c7fb354bae643675be719528ae1e0c24fd75a4837b3da639ff3990f76f3c69196ede582112c0a657634577978a77b53f0f06c2c7d4848ce784e922a0b6968a40c17f194f15f86f434763b12009ec39da2341b1db69efc40129de2e90332176c60a8ee2aeae91eac969d6510b5378c3928b2dd924831f031d001391cb063f260c86c5f2737f539bbb9ec10569a3fb313199c12a5662aeb6a7fd029f34ae92e67bfa1f8179c2707a923413fccda9cebaea5cda154dc9770fbc5474abf8d4db0aaee7343d4ee03873cfc8b987e066f9e8e36a7701de01c1fe9c0fed16dcfe55c9a9911f17c0baba0f09d9155d36ff6cb9794157e6de4cada9cca97fdf5b4c20a703c055b3ef4577ca4791c375abc2c0e5fc437b7c8a1f0c7e96429fd91c93f285bd78e5dccd1293c05ad1d5acbc6da3043045fb8a044c6cc871d932573f7ab729fe87c95cf9e09538761408b5a678f1fcac66e45f8ac7c9fbd4c9e2b772348b068a2a83315f732fea00ae244b69bc352e94d7e60328063776f5fb581c7f06bfd2c363b0e0e3e1d700f7d58365aa6790707f4e6fc7ca3589911f3c63bdb80039ecea33154d6d33347fc2b36f4eaf1bdce9b6d5752894d10b1f032daf1347534091d0bbfd960c5633491ccf05e4e12a7573085db659d82c9a27bd3b0c5a3f87c753bb25f9086e012c46356a1069db446fa2c9fedd9c1d5eb31267c517cce0e328d85b06f017b735655ee1a16013db37457b34b372c8cd7dd9395f1a6c3964be442c4affd6776f524b338d02cd84ba5c90eb46e9bed190ea0b14eb9ad047146df6586a13bd1feb3369d7226b71b65660607e67ffca1c887971f626c8280edf63eccd54dbfd8e796e81ab596b7588e666ff25acb3950b08f5beb8d966d31f2f13bb0e804f18fbcf79b0776f3efe0fd9161b34fdfe5af87120124e1cc4d39c690b730dc8e29c39f2dba6d57a9a516061d2114df1d2a392730991ac82abeafad7d3696d750c221106b77dce1ec8d4563cf622a80135df6c6f9d5de7811cc2b07f3f7f46a811c7f2f622afa998a525cb066c7347590a1ced073676c6072ced3060038da25ece8239366ca218f603565d6d8078cc4236c20647fced9ded3c67d60af3b46ba39982bf4fe8cc3f7646247fe961099bfa271f96836d94c1b91692e716d45691bc5c660cf57624d8fedcb11a42a36479c291741074c7e8ebfdb13eb982dfda6f14358e573a6ca56c83e67ea535b8407dc0f20e55ac33701a3c06556e426abb6ce57f7308b0e5bbc37072d839074b28c9b4b33bbb131cd9968e6f6c53183c0e70c43e238090d81d5454bb6782828e993e822496d469e744551ba2764a6aa7da611e0d768c8091675e8099dc384f1da0f13c27294480ebc466764c334dde38f793d65876d7a16eba4db1e1b84d737f20a53208e5cfdeff32f3c7d114f220b8cf3e9e9f501d2869cadb955c1e564b9550553d2b10353539c010d852815f69316320ab6f1b7a87d2f4c0ea96f7358de673e7dfca762c8376b9f29d5c35f7d3d69fc286a980289d13671996cd6143a4255e466aaa54aeae37ee6a480511d911c219227de546c122480ee731b1d2e7e42c9b9b08a5ae581c397eab292fc707c537d37f9ce98042156b3cd875e06190a64b05d35be0bf3a10f76b0df234be08f4262fbccc7708ba3b518a8bdfb85c4bc1801d2db1d672af25baa4ba2641930bc64ad091d01d2103844669cbc8768b739df83cf44d466ac89249b4aa3b914aefa5d9c5fdf4b49d9a6726bd3cca194301f57897a1a1a7e08f363bc123fc43e5c5de38d25b28ab763b3dd1108f93f08ae7fe797a858b8a6765a1c709ca4e3ab8cb47de4eb27520f079ac5356d311319882ac55fd7472a253252b006d701a84e73c727f3c1e3956d76cdd2bb59e429675a3c7e22eb196e1f244dbc5635afc2192de13f5462116f6bf608f61e99b3b6e1ac1cb0b02f533f97010a55715b8c79acbc25d417e2ec178bd480a02b883966e7ffc3cd1b75e6bc6d8a8f1e6e388f3ae1fab7c1d05adb6b0c4d3d45527e23ee1a29417421479425224a363e91413bc408c218098c98ea47474ecb7ee88031a4b8d3bc93d9dc1e10fa853bc37ea6dc8aeeb12411fd7d649edea2fcae520f0c1d3846d2edeae846b97c7074400591ffb75dfebe5205f7633c5b6a3d222d82792af63cbc16b6e3abbf87a39964d7a6e8512e5921224035eee30935b6edc22fd6e38f64dee2eaeff60fc9e44d91e246b4d54234556b7ef577969855073a23ee758c5e26d44b13b1b0119eeeb71c2e7fea7069f6dac44d9d3e640b90763265587f71cece6b2ff9ce4aa9f1c8f1769f440f0f916e356249bf791c23c27b2115c28dae440df72136822e45e6f0e97a1c711a5d29d29541feb2423c9a71180886b6ddb21a9b8c702b842cc23e562420efc13eed5f670cb23e98e61e3cb10b6cbec6ce2a2f2a5b944553043ddc17efe08f949a85949fcd71fedf4a0d8b71790a99543bd55f8e4e4ac8aabfa9bff4393eac7130c4c110f9d7723326b8fddd1cc7d20c7fc3c7e00eb17fadae4da6ff6613d30e9d6d879cf4ed1269d0960816345919ff8862464c680150e324c3c8487285ba230bf3003305088345833d1ec5b8ed62d4ba9351b9388c00202d43ab26d436715bf47b4b714f42444d88fb0b9661008bb73e723f9b089456c60e8de9b4b50a3637049b7307d7cc6e6fb1b982211c9a461544e3b5b96b4366b04e80002ddcebfaa35a529c1a28571951be6563c0ee7335818e3b610971d89eb0b729a4a01c945fece469993a5b36416786cf9ad20e116e530a22ca46d3dacec9e1d6242fa0cb16482b0ad90b4803624576f651ab5e8550bbb6abea8ed254ae4e9552b6f0bfb2f60186ef22232fe17ec62e332c44abcdaa1943d073f25056269be108113c2c7a81245f84388c4fc3ea1e2c079036b7b14b711b1422597ae35158627f57990d5d3e2df6bcdb62044cc965666e37831b8f29e960ce94d1712c1917678ace0e39b09f24d466bf83c0e01edddef14267afaa0e831d014e893e8c459d78262f089fc51a2921db50a43b54584aaba0c2a994b066d28e21db903931397b9c4187c3943a7956d08b6772bb3e90a0a87e74d45176c290c1b2836fb5faf9893d15af3c0602f04b19ad558e450171eb456c5be985751bc7f06b7d4e8a7f4e0f6a000f09fc70ef3a768b85998b3d2473d84759f90fc1dbb3e135e55f6311776734c3ca06d8370e6ce7fba15a7ab36b56782b339c084db891dac49a7f6d0caf7abc68c3661f2135e47ea9708a4e67c689e2001055fc7e26f596fc849fc43eba90c77b3f1a36f9a6ae84fbffd87bd3eec48de67df803e173d8b797ad46088c317688e338ef1c8f6f09840492d83ffd73baea6aa92504e3c924b9effff93d6fc68396562fd5d5b55e65899d46788d1f0d58c053fc98face95da026c4f2aa42bc938a47f935a7880e501cf9d00b57236de9b8a71fadea2cfdaedb23f4a7f838eedf462e50019a4c3a7de068de9ebd5832c6d2cea8f386926365a27df1d5409c342947b7f8792ec8e10b581b7b74a5b6fa43d15916c16ba3f16b23a2c6a2c7795015bbb5ed43a15ba541f71c53b60b4a3a1d50918ef27ce5858f53978bffd67c60f7b3b27cb288e5aa3dc226abb49b818e4e67085e7f4f5005172958dcc8d32e92304771311e77658926d91cd644462db0e15e6f79521bcc34eae0b8a4f4ec821cb99c9ea651bbfe7255deb5787a5f7772842abaf977535b2c458b4dbace7711c542d1cdfada56c6b29ad7771aebf9698f11aa0091fc2df6937ccfc59d55edea6b73b1a08cacd8043a13c9cfafc07bf7c92ea6db14ac848f45bc1e498da63683d1389c29a24bbf7ec3b5fca91e8b62f3a1b45a663e12ec3b14115be05c20e3f0d64dd253cd1243455168f54301040196cbe79377c5cf398e77c0717869baffa9da20fef0366d3401f26d536607093fd06b9fc2727736568b33d247cd5a68f4face8d4821d2a0256463dba676fb13635d03984f0d2485b043c8bcedd1aec7eea778a88528377284e588af0a10d74351288a7a8f45924a0ea0d0e1e7733e3a8043eb3299c132372376362861ce9bb19a7179fc53c6d679b00d937ad98cc2436e654d04a5531c67b04d0f5ec6c74ed2e5b60ab0850adb80312e0d5ef573116fdd836e8e180734b8af3fa82dffb01f2d5c99cbc348e44e0786ffc340294b20e7c5bfec605f84e14222aff6308ab1e143b6f61a435a4090b044639d7b01a5a1464640c2c9ea288b4c69fa4e03af3f21a90fb5d2e42e8e273faf6c1e75dbe2474407b1ac187a278ef63033c040fd7acd62635238a931587f69d23ffdcb0a3ff8852dcdc2bb236fd8714a5c382f777bc401093faee86e53875494e677763e93caf150d0d46f7d40c6bb94d884309effbe44c24bab49aa0990a033e5481338414124aaf8278d9d8cc10b94f01fe0b2753ff7a0b470b5eb668a345f53cd50dd14f3a42ac65b742cc787ed71b08d995cbb5957b38d3d313d9e49d30bf5bd8f66f479e9a96de1dbad0a712cda64f14454c323de5ac8cc41a26100a6af5508526edab4d05ddd344104767bae8b7ce2eabc7315c0fcb3fd832ab010d63a64a2f60eaebd40ce8bd92f6d34c1afde23eb6b27b1ee50401b17a1df0d655adbc4817d92fdc6215635e3f1ba1adb03ae90a978ddda3398f14e08795d77c8cd551fdc2f20f0ef4c1cd3edaab758de58d307f61e123391a4874fda16abe057e59eb61706be71ff1cdf5e15b2b3c72a84c915c44d1915d9405870dde0f06c096b73466f166cb43c722f059c5d95e36e20fd38c42256931133ce98b042c44fba53b3466597f177f37b0c4709ca899b34b8b9774f9ebdb6eaa8849f68134df38e182cc30b6a8990337d23973ffa5fc8726a3e7b2fd80e28c9a26441e1024420dfaf721446077c854aea70231081bb6e712205960b7d633ed8b945b0ef8e8a2d36e8fff6e360c90b9867ae2360ca3400b0f1f03568ed92b1cc120dd46f9ef55cbbe9b0b9b41d0a82c841c05cd477390f4251a925407b0643395af1f9aa660cee17ac61e6810acfa3d17f6445de4944f773dcb6a08c8cc6e0ff8d8f363a67b369aa933f145b4293ef63711c2b95637c61970a8083275f43135c74aff4a6818cfe24c814abfa8169406aa864d160a8273ff55543a64c670c2da4853e5518e8216478064f90dcbc3639e52496101e9edf097cf817de1c969e1c9148b56e792d802deb873f1d5d28f4c454d6a6c499a8093513266d5e215f55b86bd215c81274c6488add4c341785caa53eb55bdfcab382c6d426543045fd34e0f1c6dd8e60c1f96275fcc14f4147556e455e8b4bcc70bbbc420e8fe4eafd5a4be38e647c8c486dad5247e545e498c512d45d68c7b4ec920f2a90ed4ff5afd1e022cf2b4dba838b7e6bf3570cf787b9fb92c93ad5655676616ca2e9e643e11661e719f417e23fc5dc5fc193f4e9180f54af12d47442d64ca1c520621847f78342ccd196179500bdce36346c738e18e40cfe59c249c833d2e0b5d7d6078b5b1702d11d0973c4b672f3638c4edd460d3e9c8b0f4b11a146f8c121209bbd297144a01738fd0df9a643b6dd963b900815de8c88cfad1fa5d757c723711ce83afabcd67b3588f38e8a0163137dcb71ee95b3d8f4fe9669b0fa400515ac706ce8abe511d27aaa5f8a4e29d319d5eb5cc111da844796c918171a493297f76acbed5e2d4c2d736f6a439fd0255c7d29978164ed732a702de7d5eb926119dad0b02dc676cf4b140141a4a49d3edab866f6ce9b72892fe80c8fa03eb3b5a497448e047becec6628dc4db18d847a98b81a4c600a9fbe4551d8b8393a100d85a20b745cf737468ab43c6f8294444b24c10c98f85fb413d737b1cd59eb8f774a6762b53fd7147f481a4d58bb81354a5efe2d57d6540af9e8ef759b8d9bec755334ef8eca6c5d683cc7d29c5f10f2ec08647e2960e1c1a6550a0e199bbdfc2437bdd4e0b4588a8a10df386c386d34979213088b0c7127e0f2d9ccb27e0e4de93298b37f2a633a1633b3ce61376bcbda52d35521cacf4abb6f14ed7035f64c0870fde5fb653e71959878cbb30da848fe605218e3194898887b18d67dffd786bc14b7348e4f58fcbfd7806ab3e24f4432aff93485ca583fc494dc87b8db9f21b13e30aa7e9a1c19afdb102bcd971c653abe3bbf1fdecb783124006cf8ebcb3e5d30a7931d58035934638207b6637ca4fe8a903bf27d4c0137293c341960dcda18526eaeef63f88ac50cfac5fef9e9dca48d46a506ea24b50e50534e1956f15616619201ec01f20a07aed31db82dd97544ab6c5e91b5b04d58df337bec1dd1a6cee79924f9f3c9963184c6dbd2f891f68d369af6fec163e5f82e10d1976b31a1664d868353444d315dc95badd4d779249b30b3ba80f2fa4d973639849b3aeed3786a934bb6469b6af9104b535a531e4ea016f26236ea052c0798d50d700da5019236ed81d3e08bec6a75f84b3e48090aa120be5c3c91f1625df3a85cb4808b16a7e0efaa14cf23dd78724f99eeac3f4f75cd8240e331849521f9a92ef5c8cf94cf630b34b9e2d8425b50e2993456853178e233cb01c9236d3383cde5855af5dd44c166d5333e9835af4d756bb51b6aa3bbbb2bed451e228a7a3f436998e52e755dda3c84f0d7fb711eb28da13515c4743739ee86a485d3a3a1fa2d6851ec2078cb91aebd6851e126f6648ba9da5bff3abe16f727a08552fcbca2e789a3532b9acc7fa9024840c5c226310b3af0e56a1dac2c67e978de17bd426e5e1c54b66778965f7c71e9b4517c92c15eb684527d98e5e8429f64fbeec1978d48712d109469342a68f8fc4ad170cd518858f46e6e21199f6070f59962bc320705a391923ef361024d5b031d3efba34d440432b0fc531019866c20c708bdfb5e89ed697adadfab7487f9f921945f3422b186b8654f5109b967b2f57012eacf179de41c013e0db15b7f316ac40791b762bbab0f97af0472e6220051abd7ca198f4b2869fefe64a4823b99e36d81b3b416be8a36a6546e6542b15309e3a31b4d567ca134dffebe81839bd0df1df71f6dfe7d2ffce0400b5a5f647175a70b2ffbe94fed7686c72fdea2ceb8ef1b5e7ec6b7310011240434b07fe7cf21984f08ded729851ee0a0be0e3affa3dcd3b18b84cc31f3cf34838562b915a8112b602c59cfecee62734c7cfa1c6440bcbd6c6dfcab3b1537688f1d0b6be2ab6548cdcf1238b39bb57065f807b9ec628c536c4dd90036bf6f8dd83e9af1f70775b1bd663b43df5c0af1f334ce5590958fc44bc236a5ab380ce340378f43d3698ad90e7bd6e4d0daaafe3177b42fe34623fd70704e1542c06c8380f8caa227fe8284621029ed7ea8b9108b2e772efe7dd401be4df34a82bf26450192f312a40c1b0e4038e61757ea4012cb9fd05ff81f1728da16ef037e6a969d06910a0c0e5168c3ac243c362944be1ed1dc763063d9c6f8419d143a4650fe7412afa84900297271e4bcfb789d9b76b9c86cf5bdbb3b2904671f1dfe7947955797139315cbd3516f643d5631cd5454f87663a3cfa10fa2b0b86db8e12ca25a71f56c8e3f4fa40b946f4adb20ea6b600a1b7bf8d5cec2f7c0b751c78037a8f62dd637bd616d3d9e303aec6bcb411f01a6fd0906e507fe0b4cd0acf52c886adb3edf151306fa462f4505a478dc433cf3296be4e9c3114e323baf1fae9212beb8740d8e2bc1cfc49b6707173aac1aff0b1a03535bec6705800e0676dc0bff249147e3f80cd80cca1b51faa656f213e993a3a483b6a6e015bf8cc9ea2df7410bc14b54b8a7cc782bf08e92c9676ca0a26428ec03f3511da65e37c66051cd03c3107d0776aa38b4edb59dde513eb183d23562ffeed6e2c568f54c88c48e59c1956be3f7904ca1d9932268c795f9efecb165ee9d5fa4fb4c0c5499a3fd1c23bb5d0fe720bcf466d6b83686d6d7ed20cefe2a6a3bfff617c9d135dba5ff9faf4c6203e69b1fb3f310d107faa3fd1c482998327ff7a13d0b2973fd144c04dacbed2c4bcbc0998cec29f680230e49b9f68029885f197e7e27fee9ff9bfffcf4c1c5e7f90c5a7dbf94bd20de493e837cd57538e9fc92b2c32b0bc429ea5f67dcaf3cb0e3d7536a4e1162cad184281c8fefbf5abcfc2a66e50583345b7774cdada3179c6c15f3f52e834d9fe2e129c26fb1f3a4d7efc9f99a80ccb56d60f7564e88faef002cb70e870ead11e5217adad1441989a28b0aee7ce1442dab5137eac4bf6f02a8e3946fdfaf313ed3b4a655407a68bb75393c6f75a30b9de75d464b758c95d63ce59d9208ba2b3b7aa88773a613cf573ae858cc0aed1a2a30b58420626636b6aad3997c8dcefe99bbaddbffcf1b1f9f1d4fa238afda0037178b33313bd6e7a18b7d7edbbfd1eebbda4a53394964124d9894dc1671015b380edcfeeb0e658d4b0c39a851d1637e12e3cddda696f7f5d5ef1916713e383377829f5cb542443b0cdfc9633e5651dc082fddbec31de5505d44b3f3a585e560326947705cdf45973e539e157d8dfe5b0b0cbdbe60615dfd1cee6d9974a34379b0bd6b5a096f63164ace27a9f0d2c9d963c1b6eb05a7fce13c92d4a09869b054b6ad17e963d1def678a44126bbd9fdd8dc5f8cc16e8ae9ebee752cd7792056ddee238eb5b1c67aa380e5a9ae0d0f9a2ba0c17aa5e0bfbe19fd294ed0243f9cb4b7eeb9e1af497280139490deaf920bb38010f1ad36a3c1fd89e7fb11a074b74e7a1d50353a87ee1d8cd366704e3efeafcdd1d7dfbecfcd18d7c3c59858d7c7afecbfb5896aca7d096213b43abc1fe54df765297fbd777678d37daf1ebbb1396c83177e6a0c7fcfcb7ecb309edb321c43a83a66da14bb0cfc4e8fba34d37937ef7ea29acce8ff3732666b211ffd9dc87251727b72fceff918b1a8e2052d3b51b8a66ac16643f149bcf6bdc643714e7393f8478d3f2874ee4d7de0f457333baf1d8f2577eaa72b5adc350547a591ced58132dfc9ae2b89f65aade01ec7dbb1c651713a4967b07f5e476880cc9649a6d34b5dc6bab51b54a49ac659058ffcda4101d8f666736fdb970aa16d67f1d0e7296e89ecf1169ddf64326191a268aa910ae75958519bda86c2f4ddc20f871d3e2b2999a491e74a0151c40288feb0385a14e7f438ea3793e310f2ee39ff15368b97de69fcbda17d516d5666b931f10bf340b9979b1b9325faafcbb076f4fb229bf74d34fb43a016e7618aa0b95dbaf2cadc0f2bb531addaaabe66f37460f6b9007ea79f6ef87060f3c7f57704b355e569c601a3e76a625baa92dae88fb5af29e0b39491979ee5578ed522df6d6a1d8b8cd3a5b134c80abb1a4b33ad8a2447b764cc756997afddd07b2b8386692b6e8fe47444c3e6f3a94f755c83fc8a8d0aeb377192eabdd2bcd7995e347e0793ab0db2a59b19b4abbab7a01274fea5c00edb66a6d66772f7239629602088afafec2d9693f055b23c3f6c4f384ea090497c2f546006dab6b09507cd067d1c588576d015c5caeb452f891b663676fc8d4e4f79ab5f99eb92d3f8414aed4d94ba9bbf32dffdf5534cb7e048843a4775397a7adbdaa6ff4dfd7ac9597eceb1fd9b39c791170cf196eb7c63d67fce71ddfc9fde0f420bfe44eda80fa9198931b99939bbb43a5f9ee5afcd174416cf33b76f19ddc0f829c54ff5e7c875762cd3f5af4a363c9ed6086e0d45319b51c1f4b563c9de14f46454e9f18e323d4972108c137a9827e3c648fd9e290f355a7ffed1bb53c5f30785a98c8323f92ae6f8e365786833cc0babfe7bbadd7aa61c95fd919be49c04958b833a33922f8509940b6cd2cb62318d4f83c9fd67714b07a66d53369125661c76a13a242971594a64e94f31507ebfdae86b8b0375cda65b11a6787f27235562c7dd63929221f1fedbb99a8215165631b381810575bf87ba4302838a2e1937f6971fcf29882bdbfb56b8ce35b41dc3f679275ac3eb1eb39ef4caee7b1b3369c4844115c5bbbb9e2389900c2bffafa585407e2cf3b29061f07f659bd4608d8dea6bacec70a123f26f2dc2c86cc48b1607ef9411015836f3cd73ab6a66caea527176978b73c5b277c8f113da36c401321e12ce9227629382286c9d61c1edac3c12e6b62ca4dac2816e51db11368a2fd5f1a4a8c83af8348b0a6fdc551b03800d7680f6fb70d9a523464538ec7d0686621d10c0541ca3a436d6f9a8f3912a3e34b7e0b130eb52d0691ec80caa009487d6a2c4eba5a4588ac493b93ac3a3c14ce1cf7ad5c1f9adcd8cca07cfed48c4d6192b73af30dfe2f05a962e5fa9831c519f81f0ad1e434a7b7f4f75b7691f8231048cc9767e2d4b172e912e3ac8406428fce169d429ca9e6a4fad94c889685f0a53919ea65cc6c509fe2c7198f075faae043b564f67d3670c212624529ba6c7179898d97a80772e8c2e696c5798a18f1bcfe72642c47a049628ddc6cdb6028072bbb49d87dd4dc41b252334fac34e5bfcfc18a7d0401ad7ecf32850360c484fb51966cdb3a71ace266a84bf94a4a0434e9d0a503537edbb71f69e2162d872592feda2961617d291609ab08f130b7b0ebc1c5bafe1d93dd05d7d00668ecbfeb6b802009fdc0eaf71f9b8f058909f25bb5c3213e3b8b06183c954c46680b1f93b1c56420a4ba61ff9d93f1fc9dc9f040743b10dd7ef89d399222444b0d98d98ec36cea7473c7fd282330fff70b9a03304cfcfa6333ec6386bd2ecf70a7edd0146f5bfcf74f1265dce732ea1b92c18e208ad161cd6f22e7ef9cf1f7bf4c7eb7a7d6a0ca9f9dc6804458f96dd9cd11ea8dd9db8e4482d9aba34f6f3c799dd1df3979f39f98bc4d9385ca4a8f0d28cdef4cde1a4ae3a6217f6cfad624f4cb6fabfcf4f9558e6baceead32fa1b8b0366b09ddff0d1fdbfb9e16fcd6017f76a20bfee7766b0c1e4d7fc41f28b484f92dfc2fcfc3d71b25b19b7dc4e440d93d72f90dfe47f85fcf4def5fb886fff67f66e427aa5fcb6f9f2deed3f881626cf039e0d19b087fa5b36cb518e887b9658586cc45327b8cd798439f130b14c7944ae588e02b82f497b40a5f5f9cf8af2994617629d53ec85a3f12701d1d1ff4704540aa73e21e39a133eb5d0da9a7d919400825aa4a737cab925c572c308303bebae67694571f9acd6f14dafe39cf6806729e18962f02b70bb7122f7f98492203de4c5a26ce8361a510cf26e3fca7d9c22c291acef30fe6c836bb197d1eafecc28ff5a330114751896a99ec051a93ee7e890fbffed4af7ff0bdddc3c53354045bc047d633b97a4534ebc1d27238712b27c418cb7f1d44df280fe11a18d02d1f2979b1cfab4e4cd9d12854d078b67356b9c9c42dc3ce67cd2232341b7b4fdc7e1725faffaffa8f8f8d52525a0e05fc85f1a21b30cae3af27403ccf8eac67b5663d85e7249f272c912bec543fbd624c3080d8a504286e554fe771105c22db46de96c2c5e0de896d2d0bf6b39fddb8687668122bde799c1533e52ceb1208c4a662f91a529a8779c99fcb586499da3405a3a54a640739a535bc21ba73f0ccb143e8ed2ed50cf027926abd6fc5dab7bb326a389018aacf95d9abd62cc727893d751fed4d7860c6e6f5567c365ad6d1a527aba8b9f3434806a37a92ef45eee51036f8d7738f2aca3e7dd653d166ab9b61c51d0269182dc0e2af655d2b84903da2cd6feca069e8941c13493aeca8ba2fdbec5a9d58d3c91bf90f1ef089e58101e6ef64e6790ecffea528def3eb0bd5e090fc4b43bb60a660246a9ae595ccc80cd04f2683783b20e22f8b3860ef6bf4bb61f77cfa263a3320bf2886e8ee7ca447f60a229988f0999f7aa37d287890ef583a8218deeecf2a6346f609ad252863b2325d0b3e22bc7d80d3ef42387e5337de65b351e7161dc238fe0577d101a042e6ed0f70fb13ecfe9591d1c88a4dccfb124a97c638bb8cedf240ce09158fc52ba3e35a0e06e6546ce63756a661b38355c7eaa45abcb2d7cc03b44ae542b2527859d8ad915ba0d89b75bc96f2a4ae5ffd66c3c72d6182b6beddfe8506cd520ca8db259facae1a1f360bb7996051b1b18fe3eb7307be9bf944c73d7ea59ee8ea779a37a1149cc7330d25d537fa251b611e20038d8f89be5fbe8b22bf2af9d07fd3eed68d7f2fbc513e138642e0840e2d1f7b7658c8264393676d3f8ad38be668ded026b9c126bdcb4596b4122ffa58be0c6bea21308811ddb2ff4bf944d66dd28e1d07564aefa38bb797895fc81b6034225e1c31c657977b511cfdde6f809d1acb82b6a2a53ad001a4283a3d1b391f24e5ddcc12e7db2f5b41549ab8bbd7a80c46d9c68c248149e22e26baeade2942622c973b04650f8db45e3cb5df94ceb828e9a9e9d3c3d4bb1a9e689212697bafcb6fb85fa756a705cc19ac34f767ac291bbb2e1b2797e4ad501c19d3607c7d203ab3e14093664ddd87b1cde350fefb39390c7bb80f9efe58be39d9653d687bafa6dd5e62e55ae0c89befbe8496dfcf9f8b16fffddbbf2f3ee5dc86fddabbbd2e8d5715736d95b8ba0c16556672c521b63e20e30d12c5c9c07e5c245d31107bcdebeba5614f86dd35a0d80aa776cd96ce727609a2aadc4871ed49ee26557d6e6871c641c233f4716fb9c62cff54727dfffe896c48c9515ffcc47293e527239b7799d978f229a25de4621feae3149999833a1c73e098276987e7c2680106af6882af8222ca96c58aea5c7f5aaf6c9c6daee6619e8f857c63611f60ce286f1d1a7af7df44d8d6563799bc78b76a7629c31b75b0bf2cef371dc7d7d3d26c5f578c172500aee383b9f5970234d627a6930003f61e58cd7aae0f52de1ce839ba3ca382751c8b7ed152a6ba1644f82ca7ec06ea8a5de4fa6a6507ae1e5d48e05b089dc78a8cf3872b7cf72470e4e6a8cf2c4a33c1b707a178fb6e0df432d2580e5d04e47cd099a9d669ffbc2a852ddc732196861b183fd0c4766f385837661d2eb1b3c08e727b73ad3b56d1e0bcf7d87e1ded60517c469c05bfb05deead291faad5f2e6b9cb7b3a204fb5d66fbc6cba3e1e4291a01d1102b9a8f81c0f6ca0fe2530de20f1145c33291dda7420499cc9e0b7690f943253dc7f808f6e41e2f310a93cc29572c537856dce4e3a5723926b5e3b6dc652dae6fd90c57ae5ecc11162121e79b9f0b2ca5027b6495baf2392547d2e7a63c93b96f220ee987c4c9054dc3b7ea8f68fc0184b80696b16a54854338836f69dbf94447355036945d34321ed630affc9528879efcc928872f8734d41623436931431aae452dc82e63368545df9b45e16ddf9aad2fc51cec0784f14b691da35ccc41e7eb6ef6b80df4069f47e171019fbf2dec405ef1f45814e4f86d537528e2d2eb3adf0d2b380e29f69d74fe71cecba8533dffb6f1fe5b910557666787d9890bb3f32321018ee861b256e37c4840edf16f9eadbf3d2ae0cab4d42c0a86fd762c279a1bb3b19f890a66231ce77dac5f758c7d7532fe762fff95c968581c2e722e9f8cdb0efbfa9370f78f1ac72ce7b0ffe55fde4a3fecb3bf321f2d8b9d30f5f2f9b8e1805fcdc5029311e78963fdf23f441ca53ef82b93d1b3ee3a6a32da3fbc5396bf091f93b12df08d9d7f19a2f8f38ca35caf4f854f8276bbc2843159bb0a4fc8bef41bd3d430d9573c7b8131447d7690e744b13486990069e5964399dbbd14393b979fd2de3242f8e90c8bda98207b722da6e240a4b6a15d6599855bac5ba2b71a71d4d6f8fa5a5640d8ddc25ac24a7ce23a178d964354dbdf94890adb9525122c6b7d7c334e02aa4f26a57dc723528359d97408a796db86125b67552ec5188c4d52b88ca3c0570ccd52c7f502b1341c7e9ff03c1881730edf6b54a6ad4794815e7bbc14d5af2c498483a85f67876fddba2e9427d00f83e4d11415e89b9adf67b0adebca43ce0df45924d1d460fb7a3711f6914b5b2c1bdc4e979514b183916beb10d4613945beaaf95a0e5039578775b48e8f9c59da1f180bbab6334bcc4c385d9458a1cfe2006de1cc32c3faf211239de3e35d83c07acda63b834c607e49ad85500b560d9ad283d4a23fcbcffb11e797696bc2a165e77e93821cf54be9f52ba1c63bc2d476657372970f357e3eb2ef3962d0edeef82f73c26b8265394ffb3af91614dc1f16cc0f16c73d6f6f729b0fb67cdf10d6b5eb779f1bc7251f094c07d0b86de53c4051de03e4528643cf6af3b2bcdfcdc52846b58239575154eff6fff655f9def44b713cb289a2292f57e19abecf3694ba3c23afa382978ea3aceee50fafdf09aac3beb07e88036d488aeba80eaeaf9c66583b30ace64d86b500c3ba1c1b9072edba6c8cca18189db19a8335ff0a07a333d55972200bb7a0b32816fd8782c478edfcfa0a3f381161ad65b7c80fe66de607cc30b8ced1df4a793fbcfe1da805cd1f50ac7bda68931425cb9f99b4c37d6eb76693b6f875cbb3e6de6bb9e92ffb6b9f85d8597197d2e39756872da00b2bc67475c9c80d15a8f39266068b058468483e6d02bc448c260343eb295a99d9ce1a3d4a1f698bd3232b4eaf690047885c63fd689b8f35542f5c9dd58b70f806506bf42bc8a3e4b470efcf148f362b0831a5c930b169c7c6bdb18153eb86bce01e7e2f422ea3b8d4f7950e00079d4ee44375cd66d3c8766e34cd8560a3fb3ce5ee3d33382a7b91326fb06217ee0027e7ac9d6b2b74fa219ce1de4396c75d61d3e1eb49a69348e157800ede2cc7ecbfa192395c8a4a2394bea568c2073be08cb7b72db9439ef738cb7396e37f6010389d0a46c6ba6998d4ae8eef7c67a6b6a061059d16dc612fc2eeb353afe88afa2bb3f99ecda606627e4f719b3bc5d904273c6036bdd17f6b9498ee565eb7f18deacf7554e7ac25fcc8ea3ec76b5407e65f9da48f74921683fc8cbc2c392a65bdb44d6fb928c4c510f337e50bf540de77b46da7a041b6709b03935c23ae9f7dc423fd0e632445f0bc6cee3367517850cfc0a471a80d0cdefd339d52cac20e3f0873bda0b1fc7817bd8a145e7592eb117d8a12e25d70bd55685d3e51514f1cce0c63503fcf2e9fe8a9271a78a25bf604a93fa7063fd16c943cb123fc08b4d12f6b23a059a9ab27760d10a6786b209f394572e8ee39ca5473f40468e36c78d81b7c3e92b2de90e2b82e1934e5eff7165c5b887db12ebcfa0ba38461d444f923fca58b097e6cf1178e9816ea78f0e2efcd3716086658b647d9c51ad4ee3afeb25719e144e75d7a31b2c46269c89083acfe51b37d9f991f1aedfbac40c0b9cdd44924326414671c8b5c037c4e6cfe57b5e90415174e304d2dc027934fad521f722235837dd7d16a676967055ad433ef3a14a0d9b8cf0ec225536fab7d4f0fa87b8a6ce97242ec3f1cdad5b452a05858072c020fccb542ab814f76bd072e61ba014801aabb9e2c428cb7c5d91255200356b92cf9c903a007aaa7a6658215df5b72e14ae0dc2f59e2f3719c2feb0881afdbd402a0bc71758dab2eea956c22fec03a9a30ae7d1fcc11182e2c81ac088edbb75c9f00c35f1b80f55613195922fd7f60ad023692b91d2b258c9da5eb23ab59702daf3532c628442bb669fef70cebd5ca1e9f09f1ee014011a05f1fb99bdd08208b6537cf67786d42366e55ffa308a139a5a1b9567f922e1e45f60a670fd8feb46393949a42b9a88c8912b611f333f5a9299524a4b87fe668af4d841b50b1478b35c67dc4590ff53f1479cd167ef6c8daf2a142aa7fc6ea4b55abebb1aff4d018ab4df1dccdb7f92cc44bb5669b9d9742c6833d0a2a3c0b39db33fe8f7b302022bc034144f8d62c1d24703be4d94a26aa8b0b6b818c16321659e784b3a6f6717e621a2e534bb57eaf68791227a850bb78b86b5962f2f098a77bcf01540a89a428509a2c1e78e29e720f9f2ac3bb207db85919de7a38583cdc1d2c61164c662eb55a3ce47a7c722777ef22f593a2a2b2786d17e7365b2f6332decb262348868c8b511f2ad56bc2a844a35cffd68b07b31e34216aa267fee281594f5aae20de32cfe9a214a57e425d7f13b6e81e78e2f8b4681d9cfcd3063d066956cd52cf4332cc2a4c1d3467dc6c077773314edb287f6a703711131497db57eed5a01bd622c9b0e37d8a56e8ca84a4a7cd50bd1f0dedb39edbc540f69da13e552ecfb25d6b969d6528bed49adda52268cf556c87223fbe819837ee90a8f735ab5b5d7b67ee4df5dcded3ce05e04f46f9e9c4026a9a227d9e4dd402debfd353c354db140197114838626acfd02b7394dbf9248478a27c7e7fcb704b6b488d6c01475d5c2ae58ab2a7eb319d26abf7dca9f62a02d4b8ac400c592210f1b01e64511dfb3eaadd1176533f2b59ed1394945cc9338a33f47144040d8e40a850106908fdbf0ee5bab543e890bad8de615de73ab07e8b822dea0c188addbbfe9c14153cbb89b8433e0f249259218773b610ef40a94325a590eaa18b1dad85dc48947c0830e2ed86cd04111eefa31853eb174d2ab7a6d949a7d91633d1d9b1db25841b9f76939a135b88cfd582133add968198eab50831f5b3c353d3b7188e28de189e8b5a8fe9b9c706a9f60a24adf64ecd95776f424ef468280552caa67c5805d724ba9ab90b9ab0ef2e7d43a2eba08b5dddd531a59b215cccbc58c18feaffcd6d94601bf94d9815bb2cd5b006f8e56de4ee210f03e969973c726edc19588fc5fd552792d8637f2d27ff17b6d7ebe5f65ac892fd1598fb2b2ceeaf1acf68cfdab750826d69a5929cd82f29935b09a3f6461eb825df3a169f9d67cf3e2baaac5b872d4e344a11c2811481bbd20cf0164c613861abe385ef7270f2b8db632febda1cc386c7305347fbef27dc6977d549ba2316d196a2d6853cd07fe0e9ed2b65686e6f8b3d7fc97a3ea706d9a6bae2dbeb18006592d35d85e845dce3439a804c79b5dd8c5b04837627ab351c0ed6cd01c96a6e15b52ae99ce9d1fcb32ad94767b93ce59681c91a1b56df9a9b07da93c71de3a311629514eb8e9de2f2083fbe37a72d377a45ef9dfe436e3658cc086dbab9b259522225d8e14a49718ff6eb838f945a7a6115dff32729dbabc2c25837e1b1769241dacd3745a7042057febe22097fa7d9f1c212b6c3d17515beb661d34b641d115f1d99cb1ff3f23f1f28c45d7a325e5a770b293d4774e51516bf6e1b2cbe0f5bffbfa6b4efdadcfd7d3b3d29769648e81724e32515348452be383cb252fe813bb734f103917c53dabb0cd8592cac1e06c90d4f436b01e3b7e200653af1420a97266429c5aaf6759d38f1781ab65074933a9315c353efa12fed6a367de85c8580842ff4a8529b14b51839192e0279dd19b5be076517956bfe15e26a50b729fe69037c6aadd3fb8f003b4e8f9b4e60ac395372c4aaebda6a3732abc2078af5df254361af242bed257af88710af552d6e8f85f8acc499c6fddc84968c7e2dacf4ee548871881f64f37d4f6fcd849868ddbbeab27a9dde9c0b31eba3d525cad6ad383fb6393ae1b8d4353f96207ab243ee0ce0b8ea125a2ca91995a59d8a13c2f3599b71fd2cbee0bdf79c8e3620f7d26b410f564abc9deef4fea0ca5fae409876997e1a7067d55134f43fbcb9ff933ef4aab5f95eed87b4f9f24e9172de8b99f0fa1e0fb2e2d23c4c3a7126353e04d1302dea38f151672d7681eabc231e7f904162a75f5c5beee23efdd8b48add967d793f5ca3d810c1244d5a893a44270faad36dcacbe848bbeaa18d8e945bfb86a27630f9d7aaf92ff3af0ba3a323224bd44cfe159bfc2b32f957fc1dfec54776bdc8bf7c0c32d6fc2b4582bec2bf048c6545a605cfd2866faee7c49c76c8d36882dd34dc99c6c1256102975b2e0919620fb9a5c158f3cddfa8e503ae76f174c79d011c95381caef6c0c98ed89c5be69ec94bea03795d44f6556aafc2e8a1b48d4fc54013aa403b5946b4eb5efd5a611bc8505eda51c8a85471194f8d248fc9b191a92d1f85569e85dc96b4f226e41f1d97748fcfbd26ffb4cffbec8d24b2f36cf25ded981abd2a9b728fd93f10dcb3a859f14563abc1e5e79544f147c31ddd4d85f330cc1143ab35639b0e886126bcad3a509e7ec8bc7bed286be843c80306b7c73910ab10bf73f6605ad25df1a0785533f0a3065b7d7eecf5f991de7e16e2c385ef6fb59d6a33eb584cc2714de3e352d49ca8154d46ef42b6a54b80b14de2442d69878b8c1385b73891db313851fd1fe44407fc3836b3d3559cf0e36c3e197490fdd49965175b0b1679dbf8cb686d1d5ddadf14c4fc8ec1c8ba2623eb684646960130a02f7847a60c7ca3bd23bdc3238357cf41b28e90d31a1c01ea9fc9b2c6800d2e4c8b0e9bc19b0c997284f87b8227aeebdc3d0be777821cf20724fe0df22e911a168647f3165a1d8dcc7e857bd6b4f457bf2afd75e0c2dc6377ecea0cbf134298c87358c461e437580faed9a2f4076dab8dbdda3af3e52e4278f2fbeb805db7c76edc79330a0edd263f222a9e62cdea4760f523ea620dbfb7683df198a977c103ce68e7546757f8728390c89cdf668795d2dc2702273124d12d6455fae72b92a87baf24d103f72bb1bc65267f4cf6a09f88832a9a16bd1f59e1f29ed8502617cd566be24c537f9dd1df2c0cd8a48ebac981c193029944594f679b3397cd0f801100075062e59eaa228534daf02cffc1ac27f74cf3c42ec05a1d95fcb6ec1fca7faf7e62435980f80248c4eb7c5bc7135b1bf4534beed521ffd4166d2520c31afc5310a0e3278d4f734e3862ea0092aab7a8067f4f9e8c4d4b5d7bc6dac5830e8641e413c9e53277a4bd08791c6cfb364b848a142a733ede0e91b138cbf550edc8a3b5f8603b206448a5bf7e0a39eb1b07e5da8ae2ac377061790d38a33e08e59d4177685e6b56bf99cdc538ae8f15c57c44f5cc53356ed6c724063509bf9a0a3dbca633a8cf66312f11fe5b9a62a590f5c12661b3c869cbc68a4dc29abf8ff95c259c52beef10a2d3f36939bc352c4faa61bd08395f251cd87fd29a34592ece6db208b8562da290858fbca4de3124759ea6c166fb5832fb8a6a276af61bf5116da75fa8f7db3a63b828be31e951c8c57bfe0b173dae4bbd101d6fc05a45a276e2e4e15770113a9ad7967bcebeef93e4b39527ea6f7b404ac2c06e1a47f37678e368ae9947f3a6f5af2a0989255ae631ba3f1ac7e8ee68e803eace4d7b8645079a55d007d6180f373c0dad1da279d5e297da33b48f7f79d5c71fb4b4bb1402bce6f5600385c34b8357e1e99e0713c596d7a768ea70f5f5c2391562131423031ab85ec5f3156f46275593c5bc2ba74270db3ef12ec4cb2a31ec13a90419596a3fb72043f699491812a622a9b5d5c1fd2adff7b3fb6b4bfdec795a4986733fbdffae7807ee1ef9ed752ec06062c610646102db290bd0799da8c4f75e643bcd411b8e62a5e393b7c34d2d0653311509090e6d8bf69565c7cb6c5fc5831bfbaa67eeabe3bfbbaf4a956f21165d5856f0971dd1f8b1322f06f81166176b9670bbc65e6d9a7bb561eed5e677f66a427bf55cdcab07cc5153efd506f66af7ca5e7dc556fdfdda4e2d55e24b45cc3574cbcd82c7bb5eb00aef2d6eeda29dbcb98be6427c94efa25735de00585ff16e9a11b26cda65843c15e2f9d24eb51d1c2686716bd25b21687de7d0a9d1421db07d83ce8d5d51a57b11f22c1394f308ab745e05d63ad3096468f1314e91350b2b7d5b2e2d1eca94df19196f8c3879ee4e8a86659f8dedb2bfb55da2aeb15daaff03db6567899d49efab9341effec950f1bcd397553cd76277ee45049c236cd1864ae4c76694db897dd8861637056a29657e2ef1f1c0b7b358903332194314b55dbcb347727f7ff7a9930bebb022a2c1a03ea49db00562837159355bad3b0461c1dd48c85e712ea88f15ac1acf546285968fce29cdb96c07f7f469dbffb188ba6b1ae14edb88112617214c6e7be0df3f1382b7c6c17c048b382cd8b4b6b9c9221ab662119d0a30809ff21c622ac4e70f5877a642bc69f33f99bfdfff5ae89d115d77efa775f7f8e17eecd0700d9db3f59f74a3b0affd85d08b7f11c92e2dcaa6a4f2592eb069559554ca1185fd3e2ee3f77a93f4145eca06ea52795b79d1cc8cc5e8f16bb2c96915af42bc7fe778efa75a4527e2e3dd75d99da0968bc2f6ce8cd6b0640d57741af78c1b59bfbf7b1353b1c0d1d067267a2a32d137a5f8748889d649f86e0c6ccfcfb8dee696f0bd33b9deb2fdcf71bd1a0ef27ad7083b69e047d33cfa5b5ded1a379eece047d77cb2871f7df3c90a7e54cd8b6e8f7f78bdf462628993c95e37267b5d9bec75f575f6da7b2047fe437984f11a35e4a6c4b36d93cdad9b0eab1907a778f99dc2e8accc875d7339c6b88e7e354e8f5c46ae890badd3e3dda7108dec541473afef284eb491e73a7069d62868a6f8567d8dc4c413c0b7c98e85e67211d061d7cac0d0ce2b24180f724d9e29b4493efb4619d0c966e5b0da5b05f962888d364396d23fddbd9a77fb4f2538a44107edfde3459cb5ee687bcfc846b85c393da2101c79a75d137814d54e77cfd9d7a588a282c56bc9729769f1daa755c3c589437dce1200da9afdbb23dac2c65bed2423fe06bfd5947dc87ec16f0671105d900084f25441c8d1416a9da9abb01c76c2197de5b8e3eb2d149a6def24d94d506a1457cf14d120c5becd84e6e22bcdf3035d37fa1ad7b2f06cd0988fa7790135a5e9b3bffdc821a34f3adbd016a8bfecb105caf5ee9140c189456e8dcdd921cefc9e0b477185296651e5e7bd73ee438b0e43d6529b5b9838d53bda61f1be784ff9f1da5afb99c5641eb68bbecdfac06f394c6b3619583ff47fe32ab9a044bc2661c3b76aeb2c72e3b95ebd27e038abd5cf9caf4f7d66eb81f61abd547c1c707be6f73d3880d483af4276ad53c410c82bc46945e7472ea478f446b4356a569f0b57be9e8c91cc8ed5311714e0044a91300e545b2623fa50d8e60f25e747aec5b8ea70b2d5063776e747cafa7cd9af4c3b5c627ce42d2e99ae1e02edab7e8e57b508955fce2a1048683abc36a338f40b6913cc2fa468adf8fe01018a89e4509b35472e1dc1140ee747f6686ef6f70c808a6f9fce8f1cb9bddf73d6c5842d8db85de321aad9e7dbab95e4686ba24029bcce0c2445f0abafe1aae8bbeb5bed7b8421da69fb144f34d37bca1ddcbd09e7a90f16da38a7accb261d27c942b769a264ca16670693d56cd28f1f10e64ebb18a4afef1ef703fafbedee554c440bd237e647578f473222aa423708e1d911cdfc2eaa751e4950ec9e4b24f5cea32ecb329e06eefd0ff06b0a206b28f6ebfc8e0e2c6a8ed1bb18a0d9dbc888e138908bc716fd7c1f5bd4c739cf5bd5988ab28973fdfbbb9970c43ae49cdabbb1f883dfec7fe7cdcac9be7b168e38771d63c66cc1096977cfe245ec372c119d7e33fbb7439db77a99b6d3e1e4bf9ec782db866b4ff7e37b3a9ada817df31535f3cdcc0e31095b8f254eb5a0cb9240dd985463e6c14b30f3f3ecbcac7f872c456e8e9e492ee542ac3b7f44f82231a4d96b64f3fc25b2d1920c1fcfbbe5e86e2ac67feaf502ebd22aa73723510cc5348dc3e0836a513ca622c0ab29a6402458d647dccf9970a6bbdae807faa61846bbe2d0c4e2e38a77aed39eb5a9675c135c77ef5a3f9a3de7ae610967bae8393fd087d7cb3ea4bc8ffa808c599ac76ed5a89950af6321f157fd9e0a9b0ff9c4aa9d0d7f42dcbda7056c50584494bf594f884786cc801062fcbdcd584f1eae93c944d8f382c4cb5c49a9b974f42f06b92e1cbbf734133deadf21dfbfb07bcfa89074f394bfb9ecd269bd1fade037ba46b7a908ae65f43519ae5f72e49c6e46e005f1843b4f6ee50b6b9ab24ad5d96645a97be33f43145f494fac8b45ed6351f5935fe99fc633eaffa5febd5cf42f21fffcfe296f60594048605d693d0dad3588fe8c88678d1327c4a9c760a67cba6d2f0d30f6f5f0a7b1e8104aff48ec6124d3312d3ac645cbe9f152872b9104beb6b6cd322308d949d9ae5931ed9adbc630b5417faa4dd2cc8b414a9bafecb330e7bd5d7fe162f33d3694ec7a239657bc6379b6974b728c14ab3ecb64cb0abf1875678aaf8cc59fb9f9092a36ea7acf49537f16b638c71c0378422443ad774f8cb0debb4f7fab9de475f30690deee1e181fb3cb6caddd0e4aa4d1886b8989f825d79f2cbb8e024b90f5d004864e17d976fa8b6b80f442ffb779af5106736798daf55f498d9ca5bf35b36ca9e970c12c5382e9cc5049fb9591f784d8ac919d3dcfa5ece9233a1dae715d899a93b0fc3db74b1c5e3e9c7bb3b21bc4edc762c96ccf6b9215e66045cd8c527c02cfa84b84be2fefb34cbdc38a1787248361f6df5f59fb50870985911c9fd4f3a7277b65986e96bfdc30dd9cfa86e926ecfecb214d3d8035f4f1979e6c206aa9b94873b80f9668f40d33cbb6669859929a6166d9d4be6c66a10a5d999125aa3d42909ec31af4c548a5a0cb2245955f79f8c22b9a671efdb16197767e67bb7440ccaf2bf36c33d0987134f6f7d04a30d463afdc2c9d68b3f4f6c7ccd2d722018f2eb0150ae66af7c0a68dbe0f2eeab385019fd4cc5533dbcdae2c54c926717320eab8daf167c476ba68b406fb758d0dc057ecd4ad61899dfa7082b9f55dedb1aa96a328605dff50dcd2952e2241ab3ca2c84aef5344a2aed2914624a6b7a742bc79f8c126edf41659adf1e2cab45acbfec35f76f69ad6e0b190cf8f5f6841c385a9168e034d79da7edce8cd58956e2e997f919816d56cb50af37c88eab390ed2c5fb9d7c3c9165842feb1e952e2eec3628f689736e230fdcabdc9e9380e13f3d25d19bcce0dee339bcad9caeaf335b7f7dc335fb153fe409f62382bd2de0419c33bdf8ae1ec980c6fff0f32bc520f9d8bac00af621ab02f195e62898ac9f0ea26c3abd50c37b5ba7333c49c7c75f5a29b7a879173c3d3d0aa819bb4af7093efbaa94b7949c8627f56fa91c20caf04318637833d4eb7ddd43321decaddd4ef645f33a2311cc51bd2db24b16d02f6390794874a75dc7fc27bad3640c3472c256f80a8b8019e85dccb3536c0323036c0724509199f419c990fe7dd78c6e159ebf54c5b336d4148364df252b72cfb68ec81cd2d2f75a33bcaf6400cfbde7fd94bdda1b43d90fbf1e464e47e383919b9ab3bb7c87d41e4be29927ba407490d4f434b354a9de88c7e28a3a294ca2bec5ad41b2379a0d8a5dedacaace30fe941f1a578d7937593d89f85982d1352f036b28456438e5b7c6947d6d70e128a121a8bdd1ac9bf4d87e5d3829790e4d3ae1a7b4c449758f616066b4574557983e82a19e36d593349d1484ff57f900177205476b570f9758933832bf42b4aa89be0edbb8625a6faff91f1ffcfecbf0b2966658f0496d8d069154998d0ee26c21ed04d03a1a86d72fa9629dad6bf2eda26d805e51e44f7c8da44bb96b39e765a8cb8dbc069cff1ba3ca11c6ab03930521b9b6a6083aff9207335047db1527b3434be667f08e879a626b7ceb1fdedfe9007cedb626c3ca25bd50dea578eeb11d95a8f49893df174f8c9815d8c692e26b8188dd4b0fbe3bc507e02fdf2aab5acd06ae1dbfd5eb92e4e809b153ba723aa0eaabbde078ff583ad14d07617155b29d5b658e235ad28ab755c58691e3907eaf671ccb81f77333199e946aebcc354d1cdde7916f249bf9353f5f5dcf27bd3bb77f128f6fd129b40fe4196e28f985f1d16e16ea59edf974c7fb82279b0bf423d71eecf6e4f805a4b6e8c056dfd829e68bfc75a3a18d328f7d09556df889967c170a2dfbf0c11219c138c8366a18a119f70b1f811f51279b62846468ac366cca612cf49c512b12409400af7cc76cc45cb009c5437a9ce9316132864aac1104011a06e19abae8d8fa7d34e292dadd1f546e94c3123d3332b570a6ee4216f540ad9b7c26621fd2dd5bae6eae8e9aeef732f2713b5ba6d39652b2ec54acad9392cbad3ea257ac687904b6bdb1fe52c65517fc62819de91d1ee38ec522ddc2705b35f2387c81272c25dad176ed75845ba7b16ce43e794dfd6e5e85215f781ea5a57dd878b0d3e33b6f48d0d63934e1d6a4e3b174eba6b6ebca54ef189b8cf75318f69c5b25e03aafdda220c45305e0249e9cf741ab0105bcc84baa8b9eea790a20fc8264d48ba67e6731fc2499fbbb2a5b868b038e22b9d68a03da030fbee17f23a7737b76557cfd38b314fd7db6bd5c9072267ab4a7ea9d7ee884a8f3f75bdf1ad9e4fc9b2f105bec712be088f5718df4cd83fdbdfc412e3a7003e48bde84ac18cac5c63fa5d73485c6e6372d1ddca770776419f36ea48d351056e87c5f9fe343977af620eba3db6119a56d09428342d81a6149a9a5234659255ecac3d4ef39144b4bcc724a85ffdae837d30a1b2786ac2aa63d5827b6f6f74f2ef42cafde350cb8a97e26b5035ec06ddde7f3fb2b734f7b36389d3669a9d55e7c38376ed352ce193e5ae6989f5899fd90648f40b380a7405e1e50bb1e63b30c43d9ad80530206d75165a3e5fb88d828ac5a056cfe5932a9f5e9e3450781fe13a0dc446d5111c5a0c766dba606cb904f398138e0077b34074ed0a78bee8f8216019e58c39f98216f75cd4e2fc2b61b3f7c2f6a0c5b9a55adce72ee0736c8bafab1f3dcb04d2702decf0883deac0d368640f99f9d0d584daf9341135de4d440d47b598de25e34704e3c7961c7232a4ad3d2fd52869dfb5ad8d6b69b591e493774acb5ffcb025334ed35674bcea6633a1b0a0a45f682b13053ed3a478b23826e8fd0a51999a74f6943ee0dba305c9e64d541cf01a66c247cb36123e5af64da56a54ccf4a80291bc6523d3039254d7757ec8a65001373983224f7a2bc1038fcbb5800de874756785fdc74b8a5b4b61c7b2853798c76410cab5c16a5d94b0ba767bc921c3b4ada33f0ac003274bc8dfea06e4cb8560965f8e03968342d00e83f0e283de30fde0dbdff1c113a2cdb3accdfc377db6f4bc2cc387222906fdcc24de1cd457b07cbf824b7c0811597b54a1577d882d456c24f64dc85ed2862b73dfb7afa4a654adb3bc936221edb02df59e9bf279b8dad98695ab6118758f8ddb46dd22294618c8b1016bee01982cf54a994ea526294aecaf4d52119f9627eb9ce1be96ccd58b18c7560bbf365d3ad793e2e4ccc5b7a39a1bd7fadedcb80dc30cd2af7fd90cc2e994db2b6690c6891d0dfb46ce5ab0ee734849e1b29ae21d104e1d9a68bb98e4b2d858591ccd1a795148aca04cc619010ecd4845e06c83b24fcbf4724efc5d9fee15e94da69bea2c9f07fc9aa501bf74d6b9041b9df8d2a11acc8e67e97090538347c962fbf9f14604f6b41f5b5ffe2083f40ad165e86acfa2366b4474b19d379e74c0f79825f7acd07231f05529d95ee3a00e2a6d0c45138caf12cc3888b58a0b3d3ee477d6b68c6b36886b9644767c99776c7b1c98ba01f26da5c20255b81e97a6691ca1085ee135ef6affacf14b4f46de92b40d8c78c81e86d9cf0d37d5ef38caa244185734155862827adce9b4972ab76e9582281c0634481f2e874ebef270af3243205c1a48e855619c380e889b78c741fa9b74e7ed036dd36e418d51dbd7b5c458d712efdc486c69ecd43a6e6d35ea9d6df7b59da127e56a7a0bf0c57d32005ffaff0b802f35fca89b4f06a0cf3034005f7a5c1040f4bd87ecf5c0652ceb107f9957e1c7465f248b0a7ec4d993274bf8f44be3c598b254c764d2cdc6979974014dbfd278cc386a7b615445d7accb6dea2855e23b0bae64a5ef2e9a06de4cff47dfaf91e96b5f00d9af61e579bcae155a1d8caffa438c4a8a0a5a3a871ad506662b887ab85c0b67146b2fb6f52f2b64c86ffb1a8e4c0b35c39bf86023cc6380e1722b9cb1b75d527086ce21392c866aabee2caf6d5f72d3d3b8949baeadce3ad3eb9fdbfd8b18b9a892b1d4faa07b7ecc5b140db08aed01c1692b3a7143b96882631d28ee8223e5c80410f47161c5b1aa7b70dea8ca512aedaec30193e7e5381fb8b520514f3e87dba22cdacc64d11c86467c182a7eb3b4d60713d3a3b72e627058672ae7a2514af8f0ed907fedf990c7f6bbf1b9cd6148869cd072fd4bec8f00881ae5ef8687211b52fd5c575b4657a79cd2b8d9323044a30befc3099a5afd3107d3b2abb2596f4261f03b6bb3b9bfd5f076703eb24d788106c342836a857cc5e0ef735bcdafd8d9066ff606bcc1a769759f1e9c291cca0f956c51d101d8530a9f64425b5710745de52f1f489308ac5a25750e3a2804d3d29568d4fbb1f1fe8bbeb8c145f5fd6761a79f565b9e28914b6ef56f7eebecb375c4ad20587b72fba5b1188756a535c8cdd0ba3a3322bd99736c9746165b1db10905e6b4c608fad8e6bd90577eab6b172d86e6f617275c5f22cf69b1265090f1dee502706b7df01074aff740f26282e3447b6088bb71e77ef3faa3eb2ff63af83abeaa463416ceb78316b4d78665b0b1bec77ab30f6097fedf8664a378630c9e402e8f064226cf5a5d29c0d3cc853cca1391f1918a0d9c86f6515375eb5eb687c3284a0f6a29bc3312834f03311f07278ae66128a06ed3383783f37da6f885e7fbdb99f784111a3a762d96c601d541c528f53ae97f0182d9e3eea42402571a0586377d06723ae6b5bc252532dbfa72c57da09cfbe330d76cf1d8f33592daeac770744b6bcb6c391b70f7cae2d22bbf8e04f01f8ab5d87178741cb2641954085049f4e331afedba63b165ceb0a82d7280855b1819825c4a7ba063881696fa495f6cc3fc748aa481af65579dde1661f3756e4a1d6a6d4bd0c1ca4525a326f6d39ee0a9448541f11b6408f608cbdd05ab3ba27295ea47c3aef2e05b46863da58e4a21268095be9b8ab1470860afebd83ccf7e4d8fdcbe69d673849cedf4600b0fd6f5830b2b324d31bf1d2fead0d42d560b93774e91640487887f1d4e4322fa7528f53694625b63437e334106bdf740931187526d93d972eb98df20c360f7a23b74b46d6041efcd2848b257b10a6f364bde7c2fbc4956def3e4ee55840335ddeb81a88792458646288990d4057212253492a938e7b749eec88a4dc5ad72ce670e633f1869b5950cb680a899eaeb0d33fadf4bdaa75b80b02f6332bc366482400af5eb9dde8e31443cd2b2f28f8c855c3a9b96933b6840b37763310fada89b672a8b0a7c2ea9d0bb09c6657bbe981ffdfd51a67b76bb97e938c963f98e272e865c1c0f6558073069f4085a6eb6addf7fe7156fa05fe15de8880578eb7e3f26dfa6b76696e8dc8d457da8ba5c1b0a9f526e27c247a6989e2217d4cb2b1fca6ce54f210f8c33259661cacea5a8e98c44270d6478c83608d781a7a787c57b34a19923018fdd65156e70551d3e4ba6866af39e43bdaa9679da51a4570f69b8347bf8447f68cc06aeed30459a71d179c6f3b67128e4c9b1431d27e6c8e5c8dec483ec386c2f0d5b5f67691b6aa4c6eafebe1ad9029472b9adcf031a1623d420fbdf4424a87bb676680af1615ac37a4b7eb5cbc05acfda1ad632609034b72d5ac33a1147ff575d253b3b2b0b6d2e7c9bad6f1331114b641ffbbe29d8c61432f5d2fb9d3fe21222599f7ff9c15089237d6b15701f129f2a6adb628b0026f584a28a7325fb2003edf82579a41a2b8cbad3ce77b10e9eae5a9c0a39dd86c32f0f7f1163eae2211b0335fc4fe463ea4949ffd250f548ca3bae34f8767ebd9e2976628bf11a332ea7fde4eb6358c79c80e425b93130f4ecd2b1d7cb5c58357224ba44d2fe20b43a20e16acce132ea9b911995b1b684472ebdcdf5340de46c79f07abac05f5d5dc9c80870bde82505b00eaefa4083e5ab458c5880f717e083004ea0f3e7901982abdb7c80500bab7fcf0623028df6d4a5e1daaab905896b2ec4c7d60cdf4e4cb4e74d2b1f4fa2b7f32ac94bad9d9877f111191a832407295d2d424a272626d13e87499498b0439b0226517a732ec467889b21df74addcdd559c2b8360dc550d2fe31c9e9171973cb3714c27c17b144b4318dd144a19369f38f2ef97cb102b67f99a782802b06042ee2d30471d782bf3896cbd312d7fb0007c60c28b7a48c85e0040832eae36283f518a0d0a0c14f31699ab4ad158d8a9e281436970371653a1a182b139a22d92db5289e20852fb0a26dec12b87524e80365c247cd65a8ba0c63aed196992750e78a129fb852d1bb19be137adade84c07ee4c31a4d560bf9d5d3a5353e1f2530997d5031952de92c028c2a808e05dc85fa646cb15d7c0ac652cd86517e52ad4042dda744ebf6860d896a98e687ee65aee8e16ebd5db0d6f3d5663b3cbe769511493f7c3152b48480a2a8eea5dc83f345afb960b110796d94cd95006e950de3094091063a7622cf6a44492ec1038765cd5ee41b9776cd7336487e3ca901d6a2bc39d5f5fdd76e793ddf9cf8222bd5e201470059fbe6a92686a3bbce2486de4e76b2ec4eb2a17752f853c0fea2714c478310a652eb2e784b7b0ca0a659ee17ded2543b6e9f4b1f5765bd2e89db3856a63115cd079398ec011d9d7fb4dcde6a7dd57d3012f6b4ef26a98b3d7fcceec8d0a131761e29a7ae21a98b86ee9c45db790b760dd617533f99576dfc9fd2b90e23efae4f106a039dc597add566e0e856d2cc4f462dd3683dd6290addb113be82b0bb74bb29a3067abb9e0e9548c505dfd9dddfc60c18737ea6fc5632ef986475e4c5e29279b6d7ee51fd83eb2e785ef1416deb5446c55e59d143bcbde45f69d6fc98d3d5c6eaff9ba16de13278daaa9188b6c8bf54d6b55a5697879bacdaf672450e9d3cdf82aa6596a874b011534fe584666f3cd7f017f2c30222d268df57f097fccfe21fcb1f525fe586d4ad391871c4b2ef7919253d4831a65ac95874a309ed466df1ca419af00c28c4b10cdceab2caa3145340324966f6d7cf3d0389da7e9ccbf356bd3c2e65cd9a706fc276a0cf5ce8817589d27a7ce881116a0c1ba2d446fac5619fed7b390b34ae56f809f5af5462cf1b6b3c6e7c21601afd2d720d6481eac56a53101e949ad68bfbf1d1626a03ea86c8757a1c866063ea001fea14ef025bb3d365d9b81ca44daf0b3bbb16fc194416e7f69005ff56760caea5b8e87ec19cb3c5b02e9e0a760cad6fac68b91dfe83309c897f6796a32fe99ea6eaf2a734061b9091302beca95569e5bf846fb7c9f03102bbcd6647ca67edb6600b01c18548d123e4e5641de9a09190e74774a40c460d8dfec1fd8a95de165d2997b057031f414aca4db7d2456c2eb1db04250b3e28e2188764efce926ea38e2a94efea9ca492a32a90eba1d1dd24ff687e0065ace544c5282bc8df155bb89b9e34cdbdbecac9f6c22eb6791ae628fe1de74ef8a1f7e2d7ef3da3190c7a7da5728e8ea77dd6c193e95ad01a0d69a436d83598a9cf5612067e500ac640a6015b508ae6dba34f8e3f7fbf78f6054897ecb3161c2c6bc058ae7159f965427f3450cf5b936cb1d0b8eb09bb2e6718612bd131eb313ff1a28db8b70a66920ce97e6a104274bf1896c95f601a3889d1e3032b2a275e726ba9b5a3ae26dbaee44ba966a66087c07591aea468b20b7b64a5a74a69df617848b5bab16b51e0bb92371cb443613d791cd9e85830ccc885eed4f0ac6ac1348aa4a02606b1c5a95a606981f15809ad61469a3819a96eed34f01356901265ee7b1432e809a42e350fc6842fcb9eb64484d9d9ac95ddbdaa9a4919a8efb9c5441f1e9ab2c3efd1f406aead9b919fad7a1911a4814d01d58bb4ff08e5377fd4926a5f25a36bbb6ceef153dcb4f4c018555710ee8380e965a57a2a0608f65253ac19ab03de9d08e86fbc4684afd2d6daf8744c723f51eaf6ab1350a4fa84e2873e7c1deeb63fc60cbfdc384119a6ba8e4117a1c821018b13b22dc2a7548bcdff52c2962ae1dbef68c38b82a551d0990faed02223dac1aa113eb2a4f1fbc201e5b7ba28573e76840215ea92ad5fb333d302b7a580a1799311bbcecc3edcdaf38dacb47424d85bf16368759173a07d898f157fd9e52eab4fabd1cfc5faa031ec9cb42e0afc85f9d57e1a969f4b2400ed1ecd9e4176ff56c36464e14bdb47b76de366667a6312ab6ecc870b0e7049c5667f07fa4a2fd0bd80d42769a084efac182f63e54c83362196bf5476c8df43d5639914e83c73a3e15e2321feb1db81c38d429fd60fda2d231b7b75d62a82778c9a8e89a14075cd79904ebde50f1c65c0bb5f688daf0ce578aeee394d8f1d4ec9fa80b3eae360101d6a0f07b29baa84ee2b3c0b0fa8dce880532b7abe8c78ec307310f6704e69d701529a1750ca64683b105a759a705ef1bbb9141ebbc35b282f73e8f26b0aa45fef89af1c7d7c07be2c7998a189f7b4a5e1cee5a7c7cc82a2604472ee4cee9d6e18aa9acb6e22dce020d3baa5982021c06d768a3da6cab45a133cf5967e8345bf2592eae6e5136be5b870f9a57d775a879f658049222f11754885e9c9cbb9e5aeafe3d5794f5c80c20aa2bfbee539762afc07479421212c00d9b314536baf6f1e306aff8a0a12a42205f411d691fa50f2b01573dadc8c351ba60f7f5fac39d577af60412831e454131cdb14f5379b09ac1e8f65456adbbd9a02a7963fb089dabf78c0ddd03a4c52077f82dbbdca5450fe1e780f4088057d0e87053671c6aeb51e140ac5587c68188d0ba0e23a9ef978c55aa3fbd4523e81ebf4a07a38ce4eba14b547db0962eef63d755fc4b7a344ae1e5aeda230ef9f0ad636b969f9a793635cfeaf3756bbde0dddcbecfcec10e4064d24bb6683212416275bbceedd9eeb2db2441bb807762a407543cdb325cf8f1cc9269afc7c6c8231b160e88bce45fdbc243f19884d308e562f8d7b9967f683326c1343b04c831577c88b17011ce885f75e3734a5838226cf480bffd09e39274130824f8db4906591d587d31fa64ede49359f1272711c306b63e662915076b89a871d50ea98bc0e06d22155fcd6934f07683bb999874edfccbfe421d52c3a3f5a018d6810c65476b79665c8c76978cba62cdbad18699d6ba6367b26a2bb15822f7424595e38461beac569715cfe38e15ce6c24b434e92ff2adfe47e36c88cea0d2c9c48f57ea8e7daa5824916e5b8e7e6d2ee40c8d449f4a9e7b62a79ed9b014958405e918beea281ede3d8b31755a357808f9343eee50238dc38b162de688fb1d47dad551b8b5b6b195b8c46c6fdde0e39dbb74268cb09aa5f6f1d9b22f18cb4b46ea4a5490bff38ecd287dcc8c7eaacf97c9740f3edfdb676537457f3f4eb7cb9f917e9d0c24c1aca88ba80527f64e83e238cf2a475a3582310788cd06b1c3ec2d0627f809f6a69f3ec76cca6bcfee1cb970c6bbeea3ea75c5da1adc863211e89439220e8ec20231bd09ae6d69627d8bb5f0451722b13e2f4944c321bac55f36273179b236d7647d106188dae4d19322b44410d08c6a4c606ac34696947740a8a5d4dfaad4273aaa5088257aa376fa5c38a253e525e0c97a65ac52e3991731e6e5a9919135be177be05e96e07f794f77eb7bb9b3c6e4018273c9ebfc4b25a73b86bbf28acdf0874a4e17e27eb8c8e3ff5f73faffcd9ad3e7a4cc8c54283add4d0c0b6b1d14542c3a5d4da6e4d4c8886d1657d8bb1c55328a996d7bd6f5a2d3f3ecb9fd4696979c369e596df8442a149c369ee8af6579b969e3992e2a395c149b369e69ae5905be28356d3c73463b7fbdd074cbd8aad4adab85a69b49ce954385a6db67445a9885a61bae31f79b8a75b3d0f431b9198553b53c6de82a2b341d9b0512bc01179a36686fdcf4061785a6dfcc61cc8498af2e801b4f9a46ff5295e94afb76388e546332ab4cdf88121a0bf1910fef498cfd832ad3e1d629997a45aa5fac32fd9d00a2bad4abf09d2ad3955a96caa9ab4c33d349ab4cc77ac13f657330ec762c1da6668f938391b7b3340f2bbf6316cfec7cf9b0f2c9e8e24dca23216a67c685eb52e4bd14b5cd8c75f37ca51b97b39d5945e9218391cef965e707e31d7c94c75a926d5f3ef700a5a33eeb5ad565aede8699de3f11e3a30e680eb47b8ea60936d5ce9251a510746e98435fb509717be91e9269998c3aacfd3558ff3592025c1f8d68468f238d878ce5f4d90a1b5df655fecd27e26f942691c0e412e31349879d221b3279d822a2bfa2436638cf3a36ee8db9881a2638d4b60f69817d412d7255d8a1dceccd7776c45b64dd5a24635d664888258c70ba8b87010bc6e10ca9418e186371f79d122c08777faf3d639394340e1d03d2a1db6192769f33c3b1f7cc12e49b9efdd5c12a99fe5d5c5e50b482e4090f73e8c6480fe403d2b75a914939b506a7b2f5cd9e08d18ba66c16a47887b061b2da437dca876ba318ebb11db43c9ea3b8ce26d2e63ebf7b78e348b15e8ee044e30f89fd8a5fd8d5c14f26dc198ab8aab1f92702f7ac1ef2f5a450ba8c5ed1f5cb1a1d2e2e363b7a9c8a71a0e831e7a9c9392cadcea319e03d053681de6a1f149af098db7ae78a733717e3d44dd8e998aed84d3c3312867c683df8ab7e933bb839495daf8e58379165d7e6ed5abf4f5dcae4bd2af8941bde0c1eeb43ae6c959edbdd9e0d029ad2cceb94ded0414d4ad54d5d644cb384b053fe12f91fc3b26a624181071e0ee81ee556690677b38859aebd5efd1eef8f85335de5f67491bf218e6b1bf081b43a904f666be9b8815c9188ea8d8f1607a119795723c7b4266c02e83ea8999876a2e1f56ee912135e8b3ee859a7f016932e5497f04ec3dc202a1d139cf75c79ccc8abcb1b0f5b96fb2885cf2c74d9669a5bb41f18c404ced37c86e61a3e2b5d43a7b8416b0861ab2f01f84db5be41f9694cca669765febc849c0bf24dfb21e54616a94c9f39e49f676a3cecb9ae6f7dfd60cece66c2b139afba35870ddc3e82bad08556d68537213e1753f3e63a7793595495c3995b91ae4e8f75ee62b2dbc8ae461327bbd0c454d8e7a17a9b139fd87d98cecbc9e650b35d929d4176fa9152ca6b2c9586e5cc9bf90f1b73fb2a64281b3c718ac428c0b84bf430d644bdee6adca3374217860fa74225fb84870e445d7333562bb97d9135f1623631b8208f0fe1a46493e45af4aa0691d6108ae301934e275b1d069cd67b40ce0a34f44ac000329b68ac854c5b2c8138a5432c1633969628180556a86f777331e54bada39d9ddefa03a780ed9351c40263fb68131bd7945488892a52aa62d4bdc04a0f952ce433ae3c66219fd1995b8fa1966ac6d18c07f4376971a54006ead0b5510f5d1406ebc6535a293e2fd7f754f2fcd782f9a28503774502ee61125a7e47477a3c5d85b15e01d271b5b6f2cfd4fb1cedccf68ca4629b51677d4ed33f170a2cb1442bb3eb264e919677c2fe7ddac89b967f3a4eaea7454bcb49a272c559fea36570763b9ec362bd9bed06e8085faada1ec073b8014ce61a309975f857eac887aded999b6e0efc3b1372a5f080497991d69e2fd4beb0be9e70a5445f255b9e99507cf90f2456e5f39fd2b47b872bff3b426e67da74b0d126a95f546ffd2cd959b519136e965d95ee09d5c213440d496d1810c21d66ee790e85e8a0d21003b3f5d8c399f450190071396796b64867ef66558375edd76e1e17f3e0b37fa80bf4af60f984b8d1561eeac45f3e11decf6cdbf88ee9a1edd9653945679da6d5e0c8804de32f9925d4e17994056344699abc3a8cfea8c276c70e608f37556ff1840a848ba7dc0e6738edc3e022c148bc5c245ed49d55840ab6568e1059149513603c48211fb4acd6af31804faf0b2ca3d5ea4a8da3e5e13e97dc162d9f188549e97bb9fcb6e513373565d6edf3885afa72d87b203eb4eb717de073ebb1342a4c07902f5792e7f122ff91c8dd856814ef29d0b22a150ffa1472524cad3cb993bb4f3179584357d7bc2fe18168583f13f38597bf5dcdef6b16ca6ced6319a702ab2d16662481e70216db7fe2b06e3fbfb69950853c0e21a25fee6c3111d55f722f6ee13b1c53c24392822472ff5d3c855834be392071e46e2c46700c20d439fefdb20b52b45014dc5d0ff1b61a4c353420d4e057c7834d766b34588855afb3a1829c23f41a071cbd36cf326510af9b5a66a3cc3735df5a2d1cf17a5835fc6597b3b128e186b9fcf654280841a28c93d55267fc56116c266c5b3a3fa492079951ba5c47848db3e3a2db2ca0936b52bdcf52dc5bc4ff1e8c87ceecbabc9b88b1280e60b77c321085baa6c6b0ab324b0e411145cad214973bcfb588aa6f1e9831d2d71d715c72536bff8944058ee6d9e343a9285c4541821e334f2126e40a022a84ee7a4bdfe5aec7d3aceb2b5d3f3e2f0de823b8684f3a2de0c02b782a3cc4091a47f0d8ad9bfa998b1ae7fa4945645361ffb1ae49e3a91d2da63c22424cdb867c99adda8615a1b665ae3089c44d49b250144d73a357139b457732899f31916e97a22ec6fbb3d98b382964712fd8ca61bea5d9c48cb01248c64e46ac98de6e4c6ba68bfbb4cdb1986c52803ddd6d1f2bcf1b26991687bb0a3893d8470aedb225afb22327a566a579104464c1244c1091950d02586203464a695b697e0d9b7099cf8f0d408c353ba049683c1dd8e04212c5af77b6a8ffaa5a6afc6aafe2142947d67f1bc62ded21b60b7ed268f5743716d1651edeaa67a246f50cebf3b2f775485c72d86eafe7e199694346fc3901e51e9ce2e577a439ccc5ffcbd97b95c58c8f9d57b272fcfdd97bf247b2f74e0903d21bbecb7a6b9a1e5f2d8eab6ccb7c2a5f49ae5d3bc90ebd34d7ae90d757bbfcd8f638cb9f955224605445ed23019b43e5f906ed25b1874ef295bcb7e79fcf7bdbdd43e6a1ccb7fb2f67c1c5ebe1ff5cfadb6605dcba5a31ff6d37ba4873531ac3cb72fffd6cb6b4f4fb7ecf894e93af67adcdf39ec3139be85f9a1726fafda0f227b94f2bbd4c387f5212b13975f9e1c62bd6e31360459e299b45c652e99bb732314f1150c1dc2ce392f65230b99b8a3a22f863eda98001fd254543aec1ca545f8d18d71618ccb43eb691da1923ee698d048533f01d925f4c06b258b2caf1d66f1657a3fad5d5407e1f7647218faf3c5f6eb79519fa655a12fe4682d4733141ea6bc973ea3b63e1fcae3fb1ae3b86151c210962ed0e7215e78b5974c43a399a2dcd2921db5a9803dca9b129cc999e8ddc9c2b1df57b7c326d8d2e981dcda7f9cdd3d256a2de783433d548d091c6f489dcf43d9312294bd3f2ae2429daf3c2215a23ef9cfd6bb7cce391bd377efe0b8986bbe5e86e2ac67ff6d176592a9f2c49e5b3afa6f24dfbc79f4ca34ba99cfa801e30d06ed7f067f940b0d248560c3365336924f9a4d3da8997a241f91251fe66b3a2546e2764932c3259aeed05d7bfe71a86c9c3f5c598087bbeffb5a41fbb93a411f7a81f87fccdd689559b13dd3ce56ff6386db63d5c356fa6b88ecbceac67215fca335f61ab65d3e9e43f1cb7d6e0e207c5a4be0e448990a4c9de38b4025dcc282826f5712d0f9dd417fb3f97d4b74649ef8d9f4be2137df070c83d6babdfca367e168d150cfef1a4be3507d136fb7cbdd6670468119efe62b21f2065ab2e79175a45c5e353c8be74b1a7ea5b43f1d8ec998a28c5a34707ea9e12df0e13bba9cf98642ceb13bb423fa123ec4d1de160ea08dbafeb0885704a5766586de78da17a9ef28cbbc7ee9565ceb1b24524eb1b3921f80d2ecbb19405caf4db3cae630f31940774b97e4978b72164e272cbfd0ac58836fcd5350fa50621a1afadc409abf5c713e23c3acc2392ce03e7cd290a3caf268573be6ff9ad2933387e0f81c470de7762f8b09b4d46bb6e35e1946e9f3824bd7302aa681717b6c1c31563a1fa510401e38a8a7bb96ec3559c3076298a8a61704fb94ead7fb9850896442cce37966c9ca2b9fd13fe1ff379aa7b5d80113b45fc7795c8a211f855380f27ed5ea258d22b2a79443b6345457303697b9a2d7c0a87b5ec0057785a9e39c87b26c47cb94d0bd188059bc84e490a65aa1eb5851db2da3a3026a6ac0935d91c6a5768412eed8db50d4c38eb9c1e1f3c916849f2e298ee3c93c79503fc9aada2a4d8d666f6cfd4cabeb084f39fb5d19393b5c97ed9b1e5b3b1160682beb1f9754920cf374e5bb8ca505622b40c2f9d5aa0710a3865a7bb3fa779efdaf7599897cc38418c8f25a89d33a0334c5f2d03b6e4feb82b9ebd736c621e08d1633b7265efb0c83627eb1e18f8c404343de21ba73edcc5c76496d9cb026d0b4d03e8998bbcb32146386287dc509e126fc5507a159fc3c1ba408ba9435d68f421586d56fc00d7d45871040187bb9c594108f43a91c50259c3c0e9d4b13c2e6f4a24ddac9e482659536b0384517b2802e30723da7fe16274f76a860af58da0af2dbdaa0db398db3dfe2e187bb9d119e5e7764a88538e5279ce50724a2138eb8302daa8a4da7eb408ed7b4a05d0609b15b353b01cb0103abd19b8a2ab15d59020e255f2a1435187b5fb26e569db5babfa8b19aea4cf219f6bef6894ff7c2c509b9b1810d6a9fe805fc9753803ca471a4d0d7fbdd5ecbac3383a210f0b65f8a3e01e4e9ffb926367a733ded17463a77a8d34df2e8868475e3bceb1783f1e47058ee1c94a7b4a9a58c3e27038dfeaf71e0be7ef54c8aeecf9acdff67d90e753c9cc4a71ec14d4f586518970616908e906c509c8aadc53febe786bc588013c977dbe6f9d59803a712d8e5e0d27ca9b90b3e040c82c4ffd3a4f5f62aec52a9c65693101bcbe61080c64a9d7690fa308ffa95899e8c10ceaf374ce0513b304f5b26c5f088a5e62996d506cb4bd5ece52e9aa28dba4a728e49e0a6a787935d61757ed876b13beb074fa4c172823cca451c449d3efa1f27857b338577b248e853dc18550b9351bef1ce8d9ed7341c0aa60b8319d130b274cebc6291e512661352cc44e705658d32ae6aab0b7478a0ed224bd3d2c2e7b14b06133894e473bec580520b16d6d6d3a59a9d28f76dd32ddc88522cc213ce5ad80bccb7225790b2e43b89dc227e6ffcd2df3fffd1ff9665633c312f05bd143c61b1b19f36ced51428d9a8707f5cf64bf9f99bd3ba01b0fec2bdf847977686b45a90c2d79ee5cd8830697ce7435534bab1a67960247c85978f16e19d2bd62c47f502241950fab92b88f99106fe5b11e14bd5114251b156698db1a838ff76359226a1eed1d077f9dac6e679aff2031f7d0fc62908bfa287c7017332d57c97c2351a7e0f542c2eedeaa4f909b20c17d93a2ddb92fc5b1ad74d8b3b3c7ca05c1136ddb76a7dc83cf928f14e7264735135104b04edea7152f270f48464d77546929b543f8a4b6b423aaf9a76f94783b600b995b29505bbe8eb3a27666c4a67df074e97055c71e157afb96fb5eb12c889d1d7f0e3ca0b928a00e74963a0aa8d5423e36f437d5b87a96da3824eaadcda738d6b266f9264b3a63fa6b211cc0fd354f661b9f56379438eddb034d4cce6aa45f53df6ba86115e65171898395b35154316f055dd107b36d8371b5f6a81c88d33acfb9703c9b536e9b8c444e72f77b35ba9f79d91d53746de7599764331a8b14abf089c80ec029959ae19209839457510c0554bb94e2564f66f0b8160909b734e443c8e3bf354b43aebf1af54e5e2933498dc5c79ce0f156faf89be1357913321cdccdc46072e788d943afd09b4368f66649e7dc44bd757f991672362a8d2a4958ff561344c1672bb8a22759b043ed22d881bc9153e1faf98eb868044ec31fe8c76b105bd9311555adff8fbdffe16a1b571ec6f1b7a2f23ba784c50d7f0a94d2dbdd8f13024df9134ae8767b81c39a442406c736b69390eef6bdff8e6646b264cb8176f7f33cdfe71cf69c7b4bacd1481a8d46a3d1cc08dfcb21e7534ce3e76e7ec2a037b81e38f8d6884d86dc0ab4d6971b731ac7043747f00c13791b05289a4043188e4ed0f24d2e966fb75b1a90eb6e6e37701f9c6eab1c9507ee2797fcec647fd250fa057c91c9811eb4e6d030115837352db61b7995ee04e9f8159c944446cfa5db5c7a0771189d187d5e19e2a9efee0eef4ae595ad105c2bf72de9b42b1f83d512eb92158872b4507613f8eda9a8e5117d0dbf7dc000916fd2ad08a51d64cba2cbff3bfa37883138d58fb443dccae61145e9605ac649468f0fc0ddf82dee917e4816e6b794220584ffed5dc728ddfad69209549aeeca033d6617ee81a7d39b558bc74cbaf5d1d968b8476e4697c44dbcbbc4a51a34c8e215c29da237b857d6fbe6f59abc85d5ec8bd3e9c73ce341b2f55179d6bba3ad8fb405b5e0fdd48ff9bb19f7f2bd2f7496be2f1a6d3eb9cd49132d12934f60acfcd44a48271723c3e1ccc88b404815d2792909e098c41334f6568abc562e6cde74f3ac49e3c646572c9b6fcd6d827cab0b4902ddea621b1d258d0591f0904fe16ff452469e746b7be5a376cc40d9d25d975c2796c67de335fefc3493397067fbcdb56ed6cc6470094400bd9db550f86dcfd4f3234d773cd2f8db9f52fa2430a3a4c8265b6bb8f1cfd6e5d5362cc8ac50bc4a97a4c8805a61db6d75d6f141f593dc9a1f4ff180259afce4ee75c434b42de577d3b613359a6b0d77125719b7a6f189d306436edbddd79d54924127b741a564e0b8a583db8366fab9d74d776553148183774bafda20b59d35b5945b94eb2ca16645f31e3910b6dcd7af0f73af91add787795a34379f0eca4971f7018204f0e0463e8aebf452438802b80ff184a3885263e131dcdd34c334eff1594de926884f18c9972f3518703ea58c14f79813674429a3563620baf3c87d08e99a64a09c55645c1f396c905b099e0c9bee36e52dbaa562ff019ee70341df2a84edb4542482612d996e6bfe4fdf68e4624b179bd443881935a6b0909b9f04b7749ef8aa8ab4f44433b17feffff747ea46cb187839a217a6d706d2ab4e270c2891b284cecacbdb24cdd4d6f18d6821472f21d7eef79e48955d4cdf8334f9547c896dce30c6f478e4c3325cedfd219bd2620f3fbbcd9315db833daa0707ee81fb9a46b935a01816c8d14a1f4d6ceed3b16d0f3a9ac7c1836e458ec9aa20ad0b6f71fbc8fe0b24c3bdcc1c0cbe26d8b493f3161eff681ffd00ed24fbc46bfbc80312f1f2a0a369797aa7c999939c2a97318b1b2e694a6135d887131e02d03357dbf8d2a50add68612047579c1cb669c1524aff91dfc2f1ef4b37c5c888628b1b4e538613ad4fc9f8079eb4f25d14cc92b60f0ecb02bb89a2ebeec78d41975e90160a23f507e6695f86194923284a15d7bd1d1a8c70f77a1f1801cfdbdff6e5047ea2334edb9d1d93db404ca39eed6a4665f260cb1eb0b5f4615753b512fa7affb08befd8d345ecdd32ee2cc1723b27d198c2f3b427d1c805634842752b68e46f20acc628b15709e8b600b41ee3359dbcfcedc3c44564b84fa48f5d8a133f58d17b443ac38050ae50b2afc1365ed5ad1025c4b06049dc6ea206b841afb62115a446214af7ddb0e36e3c60229eb77414a1750224a04063b5ca1ec02edb52517103b82e6c753707a5e983d8be296c7567c3612efbd2863b6928993743cc1b0db2904add0adc952825c3eda061fc7ebb07c3a01c48580a0e7a272501092b7726c3b0f091552513ff90afc009c148e7e7500bb0931f31bebae9aebff9a8a428de597695ec4d315d42b760cb1cbcc569ce40dfd8fa1036a4b2f110d96d9947ee06b8301fbb6f1faca680aa6be3b422734d28838e8eeccfa75aa257705ba9806eba5b81f674e99be050252825ba6ec1066f31f0f5843e9c4776599f888243b09666e6e9315ce2a0b8d5288684c9cd34c499d8cae1371aaeeb37fd09b2f2e40dbdb29a6a82dda7576bdea47bd526c6a3874fdba02b7d7003b8fbd847b67b9d60b6d561d6b4f6083edec6e641740671876dc2b07d64c5800cdd74d7a6fb79e6f1dbcdb605c8755f5b5af8ea9223f8da6bbc5dbe9d1d1b039b4e8f9ccfb80d7c71c39198ef3fd40355f285177d40b00bcaec831de57f603e5e630b3e9bf96d232c6a149fc0d88474fbaa3d27b31d93e53c8be01a73d0341f881572f4a1d268fd26b5bbc6a062de743733145c53b873681e3cd06ef98658bdb0120690adf3e0d01f1e998bd96a465d8e4f9c99d8fbc84023a14db3e603c9b3554c0357b26a0a2a7f85904ba472742fa8de3c7a98a7939ac1ab63e9387f7f525aef1da19fc867942b3a6c8bae45df4872da5137b59bf444f73666d55aa583be142cdb749dfd16f2199321497e5cbf3f400ea083815c2faf29d614cbf7d56f7a4e1c55858efec9f6d49fc04c0e41926ff19dd1d8b447e3e1614a7d9014d8905c8896ef48bfc8fe6293d6337249970f608c96f12dde193158515abf5e217586529c61d0ae74b7351ddb4943f946ef4597e48b3280c98d0c4d3407851512c10a097ca4cdfa60d70806bd8b4fc0769ecdcc28c5282673f0da76214a31a62b8ae111fad1bdc9ef28ddf541e349122d1b34f2d4bdaf0b225d49b08379e24dd06d73fb88263ebfd629a15b851a2d378e4e6043c7f462b86b8e1b2be663d15f5cd72b85814e5a21de435b232a3b702f07d95dbe2a1bed9ca0d2b7bbf3b009a61a6e80d43a9809ad70ffd00f4d95622b3ed1bd8621d5015169233ac9ad6b182035b56a1953b21805149c7c37eb686f6886f475445f6f295a23901939b68e30e7cee69e95cbdf90ac92fb2976abe98e114db28c68ee03cc074a97556fe824b175bb8fcc42bf6f53130ba50b0a09cbf25bb4b3065b7634e407113d481d3c27554f088629067717d946490fd87c3394b4ebdf301ff76c6b1f2f411ef635d754509d47d8ceacf1fabe20b88fb4f7d0d7ef5111261d97fa36a07ff1598783b70d42e6c6236c1f77391f6e8bd2662141299c2f49c88e57c9009f3d604f454157deeee4a1266e7c8f0f24447491301c524ecfcfee43d3ddbeefc0d92133884655c98ebe2786fdf935440dfebeb6219a7bf82420669ffcc6ea064417dd36b0e0db27d1cd8d4f906fb5645dbea3b5dd05cde11477ba401ff97a828c36f2f7204633dbdc9b33794d25f5b7ee770bef93a42bb8f3bf7d7b8cb7cd24b9a2b7ca19e0c8a55c4d41d0c1b7ed0a96e641c36dae344753f2467fd02cdbab333d1c68334313201e1d1f5af23cd97437b629c2e4db211ca697bf1de61671b1ecbab29a18aa3ada040f647d847760be8d29a5c027717483ebb2dbaee8c75db7953d28cb771749edd3717b73d4c9d37b4cd768103efa10af2fb74cfe9952a6bc6f9b1f247fd0feb4ba86ceeecbb72de90f434843bc365c4b3168689b78e7138c9bc244522286d029572638271beb38ba59aabf544e67feb774553a86e890a6bbfdc144a4ec9183d714575ba830219fb5e53b4a423d6c001de892734c04db5521d74083e86333a08708a60421986bdf3d38997383460ba5ef7c71a35dd7693727bbee2ce938adddf1aeb464df41aaa0c2cdf7093948b7c8370b9878dc71f69bc19efb36a932886f2527e82f03f830ae8732dd0f1af9df5fdc3d314dfb6480710edc16466e93776374e4b6dadaf3a66bbe664edff03bb93ff71ac5123fc19f7b1bbc8c362b623e97973f92670c9ee231df2361dff23b7883f1c657760878410ecfb79e8f37045123f40d3b8528ffe4eedf36a5dd60dbefd08d7c0bde222693348a005c73664e34cc534b6ec2cb7e475a289bee0a551edc12ca21655cf16f3b78a989998f7b40ac800a47123ab44363062637962f0c6dd2dd0a98191ff062418691c83e3e3c40da87a34cf369a8885492891305aab6bbff8744757fdbd142a9ded2e634d29f9cf946370144a0f4162d299b2491318575cb1d106f4e6804d35b34854ed6319910559fddd28cee19d0d2287d0f76a77d957b71fdb6a365b37b7d5b9c3785777d6d17b3c1fb0f6d90369ba3233577421bb87da045bc49976220353232baace36cecab2636e4f4e472e5d03abe87bc4f9d1f1ce6811aa6994ceef60d0a6819e0605acb973f2223bd36599eee71f68fe2ed47e3d6eebfa113eeed2abcbcf2876c68ebb6a3c50e678910734742d87faceecb4c66b62b7668fd5e5af0954eba49fc857e1ce4114c76fb2d2a5b21920cee88330553ee57dd85dc26b8ef8bdaa20f6feef15268eb1e4f70129b9a8f23a31169adbe1773d93e7ab3f228e9a23532feacef1ba43393da3df8da01b210a7220eab5fb4848ef24e61f5a31c561bb7934db839df756332b6acd0bb04cbcbe2f0dd15f3722c03d5826f853714bb6e73ad31a39aabf71f4824edbbcdce667260a9444f2ade36c7854a2099e828bf96288784a3a25739edfdd1a7a7480b4913534aec1f8dfe786c027c7ad6ff4d029aa09a80bbbb8ee6e9f33ac1dbfd02ed0749c7d96aecbea10cfd9b00d5c2a3136ed95ba790e5f10d3a8e2ec70d3a66d13612a3f7cd5bfabd15379caf622ae0c4253fa257f8b0eb74dd4fee9de46bbaccde3a750e9ad1defdee600b54ecf5c61bd8bb9bc33d5727e7fe914c2a3e8718db016e4c6b10ec9113c3cc5eb742dc284b8dcdf0686df951a69ffae87a13df9acd98e928dfea81955f2a167ad3bd278224f06fab785727a608de280c659c9edfc1d875b96bebdd6fc399e10321cb73e2c1025a1b83ab46b47bff003d8b776f3750a3822c33ebbfcf936870e51ce395f33d499749519a58a5fbb6dcc46e6104e989507f265f0b370829c99a4d50b1a28f616383c62704debf94f30ea6e22d1e0d078d5c5ba2000234d335e3e68836ef648c05f1169231b833eda333cc4eb44a46848cc043020f0be0ab26f81e5d360ad2627b525c4f69715056fab7299eded2f424df032059674bb327c65ba8bb46f406ace8c581e6c0be8df163943f2048c8d336218fc037e9018888f1f800fa85ab36496d26d4a63214ebc7d6d9f247749d58233ec15da8a5902ccbb6c8f13d353dda88515aee24b5f8cc1ad8bfb8078a48923f8a374c5fc959febf95790629d4704859ec076b18a9226ff19ef678c388f68762eac07bf450596f6cae6366092d8bfe6448c185eb94f348006c35bee610c5f4ff9491cf5db9117c7fbbb7fa1659ed5b7c04631a64e8018ff711f1800cd5105f712f7fb55cf7aba0e5eb663044cb71fa1a43401ed6e166fde06e708cc1dc6fb7727faf4fb7c4ed1b87469b77191e6431b47ad7a842cfee4f37c471fe20dc1fd39d8a9cacfc4e0014d9e21d008a1da1cf9067b18f9b5226ef1d8026db1deb755e1fd27ea6f7267bdc2d6b616f9a27f7162dda37f4aff8dd135c40892247da726aabbb75b9c862fa7a47d06f09cb3661a1a3377d5d1e1fa0e9156228e24e6efb459703e904a95e9601ffc4b411a8c8cefd0c77e051d6c9a16ee38e0d6e9fe0f6a5fc7e0cf82eebe40740001e5603fb25e095682ee603736873fae16732f17a3574db3dca1adbf7e616b19d9e149cb1823704715abc8015526c4c693f6d1728b68b15544a69910de9b94c5c64abda22fb822f224c709115de5cb885e7419a0f0d1f653d889cd56c4f7924761ebeed6a88d735c49fde0cf31f68450f77d787f896deda909ec1f0e8ed98cf6ef380c69d2610e1e0de35957af324e47b25e4bc8c7c969c0815659f9e7a90932144d2576332a0e5edc64a460f4f6d68290ddf6ec03372770df32a2f958b64df6d62caf92fa131829996c0e6ebebd5621a9cd7bbcb43b26074dce60111b6e9360fd7ded063f256ce48297358ec1fe235908fe1e6f11aca986181333066a6a95ca142aaa7b6fe01268e4dc843b2941df336689bc9495312e893b51f4d9b79d7326269a629a5399db4ed6933d7862da05050e8f36c7000bcb43638acf29ef8ec1e95f6e1fb444f72374934db890cdccda206bd0ee6b6e0fd5295d96b79028addd79589f68489ff8db6cbed6dca66b00db78bc34646893b94dd2698504e2fc83ce37edbcb9325dc358d7c38b62a4247947d8c820e06b390c3b61cde343b29beaa1e071d6d58076ee4a1edf8800e1d201c4917f453a8beefdea61693fc849e159516b620c3d479db53b4d1be262b8e32c7d0adda7ad3d96ab8cd0332f56e34219ee970d3ecfa56a2477f4c68839cde42086c7bd576be5ac58de901548083b3e25c6f245a2085346d614626ba2b7f93d914484dc545977f99a6222968ba74539641a6fd237cc072b266513e951d48aa0c4a82a4144224b4cafcf4d2526d29ad74cfe882ae950aa1f73b68c7d7e67e939d6807be21651793a95a35a37db86ebd7d94c92e62d240a3b58ea63524f4f5def89ad1d774ad935fe37ecd35893e3efc4af1ee18f7de3ce005804399b820a2fcb2f2f77df601c21e129375a2f4c462185d26c53a395503f65ce7abfb5fb27d9ceaf7009f64bc55a27fb61ca93ee78159399ce52c75b01b7e41c3c56b5fb070471a2e04dcea2a7ac0ad11073b07cde5dfbbebe989d8657aafd313677f37fb63d8d05cce57291332bca98d9bb37faf65a10eeee9b42c7a352a96c0550b1d082146616d7db7fade931e1fdb48e50dc67e33fde343d369ee0ecfe8268c8a964557ddf6899e65813ae2bff9882a04e4c69eb4f2d8ab0941a08ab64203133bf24173b51b35e0a1c8de64e3c8a0919c4eb9c0e49a1dac7c842de77a4837f0081eec395fdc8f49633951074ccfedb8942a4f728e6f089db5988c22b989693d01f6f6d6345de4e06d4ccf7e92501240dc6d1dce05da4884d46c078d02f3ae2627f9365034bd391d77d7bd86f18ed790b7e4f80763627ab9b2a5896f708f7c33bcd7ed604df73585450b441d77df9dd153d20fe1bc8bd3d9ec83a49f7a448a88b8dd94be9b4d97522086abdaf5eac6da47b40ec1a23f12b2386a140f62476e73b3317ad35147a7a61bafe83146037cc2001a6ee67f662dad86bf47bb5e0b64a1ba9b15e2f2c83459786e4bf67fa349a62930e036e55eb5aebec186f5f0558c66f6b5b5f94d86511f34c3ffb6f0744a776fd948bb7b1b8fb4bbb764f4e4bbb714721dc50d75f7968ef40b1fa199eebbcda3f8e9beeff7db78509f7c936fb9c22deab0218d82a2abeab91b77427d9d8ee46d80ba897f90f7b3d60ab3514726776bbadfe8a3bae579bd66b89b2f6fefcaccdfb98d6cec370b77ff52dbd05b6c76658b1aaecf6efb0cd1a4b06056f60ad63b9fecdb1398a48d46d81813966fe31fcb1665cde5b1816f393ded814c7250cbd0f09e7ec247cfc4c9617c578c507f9b87f097526c98cf33145f3f78bbbb4d9a8cd4d897c7e89673bb6526c0f7c1f0d074c7dbf8eae3c3d607e3fb94be7fa3ef12cfebe181f27ae83c0cf43361c523885db7f9a998cddffa5c00779bff5d818c33ee579d289663ec70371ee4fd3808e8dc3398c80365ecebb6a6adedfc61832351ffb6f5f6ed47e995d174e361c3786a617b0cea70dbfd60728bddc1747c8296e48f0670316c7e5f290d31f9e03e2c9b09dd91a79bd6eff2754b55285ae56ecb5d199fa879bb130783d5e981d18ffbe59676393ba1ea3e7a90ec97c0c5d0a7e641227890ce38bb46bf50c8b4e4ae097ec72db7e5050f8d0adaf756dee63f28994a34cb231d83d630dd05b1c8f13dac3f8c69d9c06939208b94ecf2fa5853f731d4fb769253456c676d41b627fae9ce32b442c259ad4faeb4afb5edededbd16a8b9a6c9b4d1faaeca0ae98e88b06102bb6c5adc65bb6ef3a119ad0b0e1b82cfbabfdf9abc96ee40cd371fe6a4ffbe9b0ac56bab9cfe7b45df8e06a1b61dbd7dfa76740fdb51d8b0bb828c6e0f645ad67de5bd239a22166db9521ff3437d176b6a49b6e8cc4b70115526afc4ed0ef9ca75e0024842ddcbe0105043c727da7341149e9be671509fdc66d6a047ab368226985e3721db37fab994325eaed256318478de41336c0ca85dc14a2a57584a51a7fe46cbfe6a65b682f754c9d7fc3e76f5263fe620d478031c6def77275b1f4cb6fc9cb36517523fee8e07289ba62087470d99326cdfdd0fd15135a274c441687a72c1bbcc13a4c817a09d1f6aa7bf744ca960e249fe30cea0b1f94d77b99da21cfdbc767b5c5cb8b7f7dac2dda32181f7cd0124fa6fa1af1c364306d387c46a5e85d7c127c8ba78680b26948360137915b9fb35d65ad1ae30c7b85fdf062822b626f4b8492c537908d8bb86d82d870df253c41d730d93116e4f905cf15bc44a9fd531be8bcf67d32106a3e23b2ebdb511dfa32190de1218dcd1539dd38f90802d999c3c0dd9c3f4a3aa0841de1b9d3c7dc5eb2fc5f415f75d60091afb26bc587be46ed09e39e982f7e5ea76c720e574729287410fdf92affe76a7ccc864dadc77bfd9fabfb6da924794a69bbeee381d77cfcd5ed3f91f7eb7dcb76b5a86bde0bfdabb6c134a2f49ffc2502899e83d4ec1d76c3a27a802afa3b648f677f0d1c22340f28731dec1986e99c546168c4d377d29c5aa08edfdf7293d20866f4d1a419152700ef20f64305f9bf62cd9b96dfa37577b87d393520f3fb9fb857ae5bcba9b7f38f6782f2169c72a22cb9f9ea01a703b2d58a22051538c56ecad8191c7fd21378577e085d5e6e61de629ffb669c68e0d36306474fc91cea6b76d73531d937d7833fba01dd926ebfb7a38521a7ec833f3a707b8e58abf5fc7789ec9b6f6acd3f87aac09e9df4d934c1b4cdcd11473844c08c3fa04239dde661f484d6bc339139203d323b642f5cf1a1ba8ad0db70af9a840e0350fe4f72acea26460a3299ef6c329b24d21d7a91f988b7563a23d72244513e61cef5a9bfbb646175fe004bad6298a0cb1ad0a9154940afe54b342fca16a7dd93414e86dbc84e90ccbdbc0b6fcd4749bdf76315c5dae86f1844c1562f6daa420cb96d727fa3b5486bc3e12e2fad0e2b5dbcd09904e0421db5f36e7ef4c6f1b2b1dd8fe8b035f56cd7f414fe2bdd2d27838413d6a5dbd40d2726f1f9ab9c00873827963796f84eb0e4348e8dba80b79fce2664462771395c2695129fce236d79a5beb586bb2a1db547c2d7676b6fe41f35fbf5d067b632f8f1bf8049a41336bdcc51f649055cb8dc08b5ca5881e6e60d30bcec28d1ff0859d8534f332bfb7729baeacd7576fd636b7d66f78bd371c8777f5db74c15948a371d2e369330a331e660b3be70b8be394b3344bfc5eb6f8ee22bc08fd1b568b93a8c7d3b4cec349fdb8b3dbba6a1dffcedebf7fcf16e324ea8f7b991f858b4becaf8b90b151d41f07bcce1fe228c952f69e25fc7eec27bcb6585fe9dda62b09f77a593daf571ff961fd365d5c7a77117e673c48f98fe0e9f3090fa278c4c34c21597016567e79c17ef937ffbb482ec26614cf127f30cc58adb7c48efc5e12a5d14dc69a511247890783616e1030004a59c2539e4c78bf2e2a1ffa3d1ea6bccfc6619f272c1b72e6c65e6fc8199538ec779ea47e14b2f5fa2aab09808b052abb58587ac766d1988dbc190ba38c8d532e9066433f6562aa197fe8f138637ec87ad1280e7c2fec7136f5b321b44468eaec2be188ae33cf0f99c77a513c63d18d80d27ac9bc8c0db32cde5959994ea7750f3a5a8f92c14a8000e9ca61bbd93aeeb65eadd7574545f1bfb30fed2e6b76765bacdd6527a79ddfdbbbad5dd63966ee31fbc5edb276f717d670bbedaec3beb4cf3e743e9fb12feee9a97b7cd66e7559e794353bc7bbedb376e7b8cb3a7bcc3dfe2ab01eb48f771dd66a9f7d689db2d61f27a7ad2e00b78f4e0edbad5d87b58f9b879f77dbc7fb0aeb61fba87de60a4402898414c8e6b577d63e3b6c396caf7d762c9ad8eb9c32979db8a767ede6e743f7949d7c3e3de9745b8ec073d43a6d7e708fcfdcc661fbecabc075dc397ed53ede3b6d1fefb78e5ac7677549952ee7fa6ceb932ca97d13252c8d79cfbff17b2cf0c2c1d81b703688263c09fd70c0629e8cfc54544b05462fecb3c01ff919b05caa71949c6701f5afb23ffb6545c882955fd82088aebd809df29b80f732879d24d1c84f39004cbc845df1878c87fd2e081eb16c6fc621ac736614d4fa0ebb268951aad2b9bee5bdac9ef2ec2489b2289bc5bc73c3fefe1bc119bbba8ac5f7abab1d767e293e7d677e986682e7a31be6268937632f5fe62deb8d31d6afabfaec3dbb7e8708fefebb0a5ecc4e4d0c2d16cb2bffce98108dd7f5a19776a6e14912c53cc966b5786989f5cfe34b81fb3cbe7c87c0dfa11510a88c253c1b276161dcd8a8905f0085722fefd31541cfa19cc2208ab48a35d565212feabd284cb364dccba284bd677d1c3f56ead7634970d17d10f1e13808d86f724e7a09f7325ebb5e623bac767565c2e7bf1c16f229340d2312d88139bc34f507a1ce1557f44d763207a116e9b73e3faa4e569ea4d4613e7bcfd61c267078c9602cf686b41ef070900ddf319ffd8785ef98bfbcac4d64aa839efb9744c3f2eca75a259c7feaa51a79811dea3d2f086aa9c3045b64c81669ce16c4186a02146f64ef6c0c83c3ae7b711ccc6a62329dbcdb25d6f94bd1d24b15c9006599b7129e66a2979cc627069cb1f7ec2fd9832a32fc1809c4aae4753fecf387ce4d2d5e62ff61ab65b2102d04ea94bd200e7cf99209dcd18de48b01cfb446bab3d17514a4c0b1170b7264170b4b79cf055bac3a2cce59cb8aa2962e2197c439cf68cc227aa50de1dcbfcc4771ee5fd240c45f722cc69c7eb751bfcf7b427fe035fa234a5287655e32e099c3eef8cc617d9ef6b4a9e95958db911c2556758ffd87bd66bf1112b60308f4e58cbfed84d8e5692ff1e32c4a6a5a2796088b6a072587a0074d0ced09340711a0be58d0668e00ea72bc96d9129d2f823d429677a0331ad39c5720e2b0576c4dcceaafefd9ea3be6bf7a65cc67dfa802532afa519354ecd71231fa1efb957e1a9d8032e3dbd292105749890110c1cb972c11ff47b4eff31b3fe46afb28a076008d956b622ff14635f8ffb66047271f038d8e9acdf735633ae576282b994de778979428b27663c433afef655e4dfe7120aacb1fbf7bc1580a959f611589c7c62a38ba22e4bc7e548dc19b7a7ec61310a96e3270d8955a5d0e3b71d88087dc4258b1c7d54ec45cd74ed87ba90a2d2dd5728a273c8d82097758c2c518f3fd4a42dc8c831b3f0878bf36d148059b7532d3379b34e3714d75a41ef2878caa2ce59b09eb79596fc86adcd8a7b0ed1a5faadc75547710f4477b737eb1900d93687ab170f9bfd027682be1e938c83414f8a1de8f42ce7e63446702ab53ef77608a4ecaf351e88aa56edeada57a36e4614d4d94a388b4f4aed065e8694e16f63ee71c6dd32e7098e09ff3cba5259c52a2dcf74a5e5518735cd7517fa6ed0e42ada5e105de350f76d82a09ed9487d98e46581e66b5823e9b9daf5eb2976c6d89c18cb2ec7c2d5756e446967ffb4e98b364960a6d9c7e4671aa7473b561dca8bf66eaaf4cfd3578a7adac413e0441951d36e1c9756d7589a015bb51c15a5e800854c9fa12f641ca15dce44bd244489edae01c4beb4216080a5fea8a6a4e284985a19fd25c39d07b43ed86d6c3629d1cdbc460652804ee390f1d36b9549ca52b44e6828862630fbb91132638fe6c16f356924449ed62615f71a39f322f48b8d79f31fec07be3cc0f07f58b8525a5ed4e877ec059edaa7ad9434ba85ec311ab2694c428469e5967bfb1d9793e05976c87caf0bb14112030a1a6010dda6186dae26cc9113ad50e9bc1aa80a2175045023802f59a583642022c997a73ded9192a7dd9128b84e277aefaea305ae9bab2cf583af54158019c212518eb792967ab3ba54f6bc627c69026efcc8fd709f7ee8ca6a8f646a1f6551d16edf27201010df02ff3ab58f1c198ef20359c62a1a0cd0ebbf182949b45df6d5dd97c62576638e99a60c0ff90c4abc5cfbd28ccfc70cc6d4dbed9b1a0b8aa47715a8fa3b8b654a823fa24444d4561454b7d7ee38d83acd094600fe429c4e930e42fd2187f65abc090e799a643229322778010d912cc9cff5c5f5a2acf9090c7abef8a5fb5be1a13531c93e866de00a88fb5171935bb76c97e6528b25fd2efffb0ecfcf5a5b51f389d159397b3e80f74674bb42bf1fe073686b90d67b676adebe507ba93153bb1fe5827d62f4bacc324d78dd3a190ad1680a777087af06f70b1b519582362cf475198ab148f2a5db840b71cc6f5599819fcf99dddf8a1170486dc17323f33c10aaa4fce172fd9a6dc8b743e2bcaaf5c6ec10681ccbbc32691df57fa8a14605932e6850dd1aa1be1976ee625b591c3e8ea8028605a3046c6e6f982406db63c2a421bc548b351587b00a34a6b91a68e8d04ed1ed53ea292f2a168e02bc28bbe8ed45e37c2f98f9674cdc9d09a54c750b53435bd48340b47e28824dc128bd87b9a81a2cea731839c39ecb6bfbcacef3b38612f22c5274503a8956c422ba9450e0bff05ba294abdc84915bd9358053115e1729b89facb135afb793e22b997688a10a949b5103a84e412f2387cf54aec1aa4ac083cbed4e94949f92b6f05054d629e3690486aed0a0d4e55e2b94acc1814ede03fc6c2282e5e437f134401d3c38b04cf4d622f1164f60d3d6c4912c857fd2acb04b083c975ceebd013631486e5d2abb462a431cc7d7191ca6920e607839cc598ab19e6a08697d47b51d8f3b21af1946ed59547ab27f60c8c024a4fd7947efdb281c0d86f0ce4707d2216900360f2f89963aa6c299d85bdfdf2b94eb742144d10c0e0c4fa50bf9dc972fb39c0062b8e04619431b441f5e930800b65f043a7d75c58a9bfee610675d9e48345d9c1b3d1c582581b170b4bea379d0ff20f9225971ce69fdbfaffd4039ac3fc47ce67829c83f3f07289f9e7a189d6725203ab025a7b34db82e718b7438cdde32287239dc344f1e512fb95ad817590a7e311af8922ddd630f7dca7d7b12e70b4ca9c8797b5c952be762daa40cab32ce0b5fbf3d5cbf3d7970e2b4820db7933974424b4eccb80c85257461504ae4f4c334a6e10db313ab37ee9b064c93a7aaa59b04c114d2437394c13a865fa81cda90201b1df5c0cd4d51b7d06e04c5c9b2c39ecbe9e0efd9bac067fca2d95f0c3e8562f1d067fac5d2ecd552380cb7779c00720117475c27758fce38bcad1189a6bf78120bd951563cebafb519b48e59273d84d4e3a5c6b91f8e7b7f94bae2654d717f112fbcda28a48111b11eb97f49190740739b25cd9dd6137a269d1e40e9ba835b3c36e1e9fa0df4d65ef7f5d248f8056564198cb5f9d3746ecb75cd9613b42e7533a95d455cb5ad56f861ebb6351b10487ffdf14e6a54beea234d7f8ca700478b22cafb2db03d3116a58f324110af00e9b808625fe2dd993e7dbf62af0f575915314b2b970b50f14a1caeb66525a28fd7237150de62e889177c7cff8280ebc8ce3cd56ad174577602ef7a6da0ab15e7ba9deda2fc524a68b85c40361563c458acfa1d66ddd914c1ca845f57ae24dd97b016a510311041534eb0db93fca8f96515f1bcf28ea0b1e1b45fdfad5154f8fc06d2d3fa3457db57cf17e41deaae7b5e98a5bbbaabe8323aa6ac6209ced727d14f51d76b7b4444d9cdfc15935ea9fdf19b7d0786182c63004d085059657e9a838fe5dacac91201f67990a42fa447db6935f35a21d4e7c55c741f0d6bb08d92f2cf7af5b5f5ddb64275ee085999fb033de1b8651100d7c9e3aac1df62abcec428678feb1ab1d6029b8dbb11ff5b50324f3fced58ee6ca7ba2efefb01c73b59ed7318f034951e927d763d634261f77bde75c059e04d5994306f9070de6759247a3e4dfccc0f070e4ba39b6cea251cf0f4fd344bfceb7166104ff6d34f0d8028645ec82e16c0b3ef62815cfb00cf13ddfb18faf6713f1bf284f1873811a3107ba0202b4d29930e74bab79cf8fd448f39e6857dc0f388cb5c082e6cc8e6ec2fe606fe2014271c71f84da211bb58a8af78f2e3c5c23b0db615f00920d661b9fc68c2b6c1d35607f4e18b097512a57e11614cdf00524889e32e7bcf74d7dcc6e1e7d6c969fbf8ecead83d6a754fdc664b1c352e16aee3d7170befd8ca8a5879fe8dcf9354731412b8dce659fbf7167b2f902eb38b85575e2ff3271cdad2c10edbfbc75787adbd331d5450e555c06f323bf8697bff43191e966fb1c2ae7b7aa041f6bde4ae04d2eeba8dc3d6ae0ee6a782d1fb45d0bdf6e1a106264e0f65903f0c5437fe830dcf1fadddabb3ce4911f05516c545e0f6f161fb58a7a41f067e58a264fbf8ac755aa2bae085c44efa43f7745f070dbc645006eab8e009ab81455edf0f0745c0a3f671fbc8d5a933f2437fe4950874f4f9f0ac5d18d1681c64be6d50a79dcfc73a3593681c96a8d93d728d6949475e795e7e6f9d9eb59b4607273cc9fc5eb987279d2e48159a20b94c9a8197a635b990ea679d93a58a7a8dced959e7a8ba2a9657d5a6c55051579456d594eba2a22a1417eab60e5bbf8363f3d52a7bcf9488c19a4a0cd5ffdb3aed54d65c9b57b373dcaaacb83eafe2d997ea165fcfadf8e1b455dde6c6bcaa7b9dcfa74be565757c767572da3e724fbfb2f70ca52bd644d95ba7427bcdeee766b3d5edda6b52a1bde617f7f418d79ea52615da6beebac7fbad537b452c2bd4dbeb343f77af2c92f026ea8d535d1e0a999ff1878c8dc58acd7c5e14fc9fdb5767ad3f74f13cf65f6570982bacedcfc7620445e8641c8a1dd75ae5a873dc815da858691485511a7b3d6ead2680af8ae24e00da651e8017850a805b250b801f7d3e33e806e023a1d658c12d94861a551b0f54eafcde3add3bec7cb96a1d1eb64fbaed6eb1b6d0566e8268fa8a07811fa77eaacdd7d80b04df8389b530638dc34ef3e0d3e7ce994e9eeb20eadddd8fa3ac441e08c8c8017b51df0a7205680b8088b608fea155dc6486dcbac91cb6bbfaac077e5a9a6b0172f5f9b87bf6d524af807d350ed36c6621efe9993ed5491610e1843a1e851692b987ad535303e1894559699d9e5d353abb426c600d246dd49fd9619b1d58bf5d13be87c154a9bdce5ea773066b5dab711345194f8af08dd396bbdb3cfd7cd4d0e739e15ebf978c47d7d5e057cdcfa7a7ad6331600d07f66d9c2452d9b4d6ed962b9506a2415f353b8787ee4917e6ae58ef552f0a022f4ecb13d8f87c76d639d68735ce32d26c4b6057fba79dcf6267a75a50619044e392ea45f0dd93f6f131d058af91c67e185aa88c754840e9156ca2a9e91e1e8a838db64cbc2088c6558057ed268c53d64325af571e6ad33ddd35b02625a249521b6b14095c052ab95955ad64688268370e5b5785652b1bb1ae5f580242a0b68e3f1b754214a93c1ccfab7275d2391172f2ea4c88fb33e8aa861070c5512c24e52b744fb6613bed1c2a26d17b9044819d5176dbee6167df3841784154925f0806cbdc6d2347514dd584e75b788aea11f1f52a36d2cb560e3b62c2e4ca301a0aa29457ac11aaadc48a5ecf2e578c1a57e208d2819364b9261c02a3b024000883d8074a6d8aadc0d6e6ef6d84cd293ef16d80a7ee17132ef1a655608ac258a99ac2089dd34883afa011d6c847a8d5b08fb0b5db3e133a4251d5e17d3f133a82559c1895e476c2de1790e9bbca7c0ce217eecc160ca227964ddac4d03e3ef95cd1033f8ccb72ceac7d72e8365b1f3a8748340b8e38f07a7c18051602ee1db6feb86afd71e21e9b8c7213f08757fc21f6424ba50f67478757ddd661aba9d37c988d8257290f20a8e0dd45b8f2cb2fec7ffa3c4e78cfcb789fc509bfe109fbf33fa27a17e07efd33d71e28d8513fb2165bd090177b03432e760658a01afcaad139dd6d9dc22eaa2121864efa3c29efa15aed66e778b775dcb556ef45611faca173ea77cf4edb27d6da6996f871b9aee492dc6c61610d00badaffd081dd04abe0de3d8cca1b09419314d7a16d021ca1517699e05e4fd9c8cabb44797fa8da4edac7bbeda67bd639a52d4954a6a1f6fd9e974525562cd5bc6a7e681feee6f5359cd883a11f9437f90fade641a3f387ded321efdd5d470f252dd8dd6d77743dd8ebfb51c9d8f2a57dd6fca0732e3838dbc1ae406f92128caad2a843b1035b44d85efbb07555e4871b3fe076a6c8c1af3eb85d5aba6d4317cc2bbf1a7a292d35cb9c02aacf27871d77d7de81711c445edfde8f83d6570dfc8e97f68c83d6d7ab66e7a821282c80896946d725121f7576db7bedd6e99589535a5a6dc83f74ce4ce0619455825d1dba8d96605daa45d6bf6b5e625e826f760e3f1f1d172af4a2603c2ad1906a287d48af61d78964677233a4a5237b9dd3a3924676132523fb6a06f07cf7332a54ec7b50e543ebf024e757a3da90077105c71654559b8a0aaa69fbac75c4deb35c11f5333eaa8454b394d7ada60fc0743f370a5d49c7d795bdc935a8bc43153a14c02bd52507b72b2ec7eeef0d57df70436f72ed5580e5938ab5aa2534c16bb602ad4685bd80ea68caa256a762b0c79de3abf66ecb3dbcea9eb98649248cc2577e9f7bc1ab34f3ca769142c5abdfdbddcf686f2e6044e3b39f8ecba6e7e3cf47add376b3247ec2f188277ecf2e7a945da870ce52e620db39cba874054635412013179d73bd5e994c02f0d0fd5a682ef04a328700af1a6ef360f7142ceab22eaa235eefae9f94af3d643dfdb06454ac3c2de935510094ea590480aca5ae5b8c4af63b1759a773d23a2ed688625e928e12bedb3ced1c1e560f2ded255110548ff0c43d6e01371906b6d80b39f066d9c2a655c817b28e65ce7a2ed785b9ac4600533a0fcbefedd6175bf589cfa7e5cb1838cfebc3c4e37b05e0957b7ada01ec541195b8049c87ec3534ce342a5571a6ac97f39751ad82bf0ab5aebaedffa21c2ba2430ef0bf59e49904dd6d778fda70a760b4dcf7d3919f964ed7855a60473e6d8311b788502de4c42f5b75253071bbd1b48ddb4ba618a386ddfa22eb7c39754f4e904bf54ad3c48be3f2dc9f9dbac77407a6af29651c4fbc10efc0e62ca9d3cefe69abdbbd32f7ae388906094fd357961d4c55396a9db5ac9546dc620a50d58e3b7450ea1a9b0c9d91cad3a8d5738fdb476e41cd0da3575ee88f3c9b6a7bd2393d33ee3e454979fbe91eb40e5ba62135bde301b79889ba8705fb4b1ad8765304bb72ff80db0aaa844bf2c12f0d91a03fb8c7bb70e4d5e1875ed82f1f79a986d495f40a564589e0cf4e5182e9f05962115b042f695fa82227ba54ebcc35ae07d2cc2b5f0fb48c9b6d6eb9d756666785c76e722640832b6465a475155fc89a42ae172b09615e052f58f7a45de03ed1bbaa0a8ae07a0b568a9fb9faf544e695ee25cedc86719a1615e69fa48d1a9a683131cd15306e436a57aa399b5625e0605bd301615fb6407635a0120b9db9fb06194a7bc199bb7f75da3aea80bb8780c6333b1f4565570f015b5429336f60572715b0bc6bc86b57de36e4757e770f3fb7bae55ae8ff5baad7710d95358b3c0b51059021d8b1da7c2d106b1db5ba5d17ee7db53a239ea69ee5deb7d3393c6b9f18dd8982cc2f290004687221557e84134f5bc61d74c2cbbd386db5ae8ecd3b5601f72ab45cb42ae0aba67b0a7b6c5e1dc9e325e54db6500b6f0a76f5ca842ebf2c28df4817701c774069b66208a3b2ea5cac4f4a85b5be4db9d000951a561cbb5d11cb6b927178b75c95ccc373462dd78659cfba36541db94b152a59372aad16c99d42259bf45175baad66e778d73dfd5ad566ca7b51d8f792d963ada341cd4623b4a355d0e8b4d3392b32701245652b6dd3d0366cf41320e29420c623ba0155e4b62ac650b6268b1ad2df2307cf9d3d567e4137d753f0354ec16f33f4461c8eba60cdf71fc02dd40b02d608c63c4efc3063cd6e97f5022f4d798a9ea4cd719a4523ff1b39f3e628bc8c5d8ffda0cf327fa4b9f2fef98873e59f8c87133f89d04f74e225be771d2857523546e5453de0e8db732c1bae994ed4c75df4be5ef9458e351f038d8ffc4feb152d2800f421523fa91d99dda2f89d9231289f57705bdb29044ae4be9f2a62bd500b3cd6ecd5a048d52b266420d07148512f73220d0ace60eaa7e691afbeb1f7d2b3de8c2529b563cc01891489e4d5c5025bce9b2dce505a9822b12480b3aaa6480060dfc55f8215b4aecb4f3fd373595725a7d357e9ab8b852588f45965bf2948b6c30a306c59153ec28ae8aa563948cd910dffd607892ed03219dddf7f33f5e53df947d7c5fef433d386986824882a8b0ea3294f9a5eca6b1521b8a607a6fca575597efa271c257160e7e4af3c61b1a862a6185e5f5d7bc33ef23efbe26569140ac1620b6e386a9f29e7f8da51fb0ca292205f028512dcf2fe14310cfc6c38beaefbd10acc2448c08bb098dc15c702535b2b456495124463700b86a540704b2144a518abd55322300ff212184854cba8612c30b3373e250e1c9179c9a09cd3338f5c7fe12583a572a20daa7986f94c2950ce4b065a8a0e515b81bc7fcf160529c2c1a26063e37b381e5df364d1881c93bb1184058b2e6859372060496087fcb5753f857f018abd7c2970ab905223904b2cc59043d24745580ad7169c0a1942cd1c23b806439e14f31be9bd4300330549a9abc680318b9f39e03ca289cf981f425fcc46051ae4170c65f29201e527c4419fdff159399d8bd155016da465f96eebf58599af44c67d11a2dbc80f6b8b6c71a99881949800b391b31762a06ab12f52c89396a73cdf50f3c9c823aef28fd4df5292f30284466bea08ad4da0b85c528b5ae2442caf7ba3be312b02222f52bd5c5961091ff869c613e6a56c31970a8b8e581ea9280a335489c278c462af77e70d50fd527bb91ff29a59f5fcd2b1c5729a64d709618ddb9bfa613f9ad673600b812ec2ef4bb5a577cf5164cf5164cf5164cf516450e1398aec398a0c809ea3c89ea3c89ea3c89ea3c89ea3c89ea3c89ea3c89ea3c89ea3c89ea3c89ea3c89ea3c80cb0e728b2e728b2e728b2e728b2e72832f6ff5414d973e85719fe39f4eb39f4eb39f4eb39f4ab58ff39f4eb39f4eb39f4eb39f4eb39f4eb39f4eb39f44baff51cfa55a8f01cfa55867c0efd7a0efd7a0efd7a0efd7a0efd7a0efd7a0efd7a0efd7a0efd7a0efdfad742bfc85ddb4b126ff6c5cf861fa280a79ab7b8f11d8422d580e7b8ae037e1641a8d0a13ff233cd21dc52aad70ea3b04d20a73cd52a160a74912d2359f27781d2c0eff13eb551f392c461be29d9ccfe0b902598774bf754fdbfff2e760fa76fc159a8ec89ad1d3589c598aa646949ebdf63a8e7f6553dcc277a903f79095f42f61ede2ecebff4d97b7c8e3dffc4d97b83892eccd7665508d5950f116d89f535b6abf41d7b5183066b57297bcfae0a6fcfbecb7ba385e3883e6310d5559a3f54a6c7baf9f0b8b600a357d0c54af5978cc7b04bcfd6aa1660bc8a020c07cb93e4898fd5beb80aa179e37ddafcbd2cf37bed91d76aaffaf21dbe2b5efd52edd513f8a1c49bd890fd91bf7638f102bfcfbc2ce3a3386359c4fa3ccd92712f1b279cc1550521532f6a62f890261cfe62133ff555c0c7e220f1e2e17db022835656a0384a16cd2011d04bc20cbae2305ffe5668b2f495fa6854bdbaf2d2d41f841a64e05f6b2018f5e8dfcca8fcc64bb357b769140a55ef3ae0af14000689e6db43daed798197c0db89c6539c3401e78b5da80a008b0e5b6c4451c0bd50fd6e85e311feb854fb1dbe317ae787fd25f62b7bb586b2de68f618e231e734db0e33d5c65e1079d94f34a275ddd6488e0183f3f4915ab0e9237f0a3a8352167c72844fc1a5a861c19353e72998345a5a70fd4eaaf3533049581b1e7c1defc99dd2c06dd80efdf4e9b814b00d93e2d6a760ca59dbcac041f0644c0ab88c0940cf22a4c0298f139ef21043da6a5e32e85cdf3aa0c5d243b88e3adda4ba22576226b1a79739437b9e5b603e07f5188a2ec56112d6242d2cfdd9dd3cecd5be0aa0b1f2629bdf9ad64cb99532ff18c1e9214f33de77012dc4befc251fb647ac373e0ffa697de4c55ac47c747d5b0e7d9d477eb3158745d7b7759c0af157693accd8d98a519b38cb032f2c4063d4b229208b502d54db6206fefabe748ea3d75a9cd715035db927c545f7e4d92cd23d90880a49011429408deb5cdfeaf3c89e3633b2aa5c23aa2dcbc4686fcc166a9f9729f6ddc2fa45e1f10ff8bb283de6a312fa9525201b351cdd3482d6b9e3dfe915e13889fae3fc1d61a10b995a486ded8d7c17bf5070b17036141a50e0875c256e601717170b7068cafb07472af19d45370c249e02d2a4a00482ef8bf4a8723a8e85f6c2fb75f639e5f98481e2c5bdbec058e8412a14b64581239af0a4178dc88294c701d717f5977135419b6651c20ff84c1ca9f79268b42764440d244559a80afeecfb0987a8cd1479936641ca5ca859cf81d41416eb299e2ed6a8df4449cbeb0db5b5a20ab5b562e03b57bfea268f402bba829d032ae219891b2ce5960e5d79856c0fb072c130c2ae3c14876632085ab9589eb3bffcef0972f70903aedc13f514195a3e0f7351e7795270b9554d6ece752f5fb2c2a762fa0f85a930dd4f26ee2384ad24ea1308fa881ef1ce461d423be059575b3844987c261c26911bb3b624f51cf0e03cee7c39beda6d9fb62034ba2b8ee58bbd280cf12501a1e1fb612f18f741d94feffc58fcdb0b7c1e66e2af84a7f02f9e00172fcd238cb587c730522f19a47ac7348d29ff08b938d42fa36397f3cace17eff86cf1d27814ba1af6c60f329e3c865142c9d3fdaf6cb5c0210871c067297bff0444ecb7a700ed483309b2ad6ca19e4649565b32f2f1dc8f79327393410a6a9720f0bb72f760734d4dc5cc405c5e0a9063464f55632082b433ecbdde3a7c2a3fe3ae18f79169831da906dbd1c76ee7b8ae0ec835b3e525005c02b31b63c51df8a9ad590c1c825a906a84677c4fb22c7bcf14fb6ad24890d9d004656f7dec267b9f5b0010981a2c37b0fc5e8dbb88441fa89672c7b2c3d1dbe7777c96eac58f4eab40571406ea3c0fa02fdebf67afd6a435b06a474b911f5ebeace8096629b22568aa20c8ff0041eef8ac9a2d8ad80b7c51e68cc71b9bbf3da9a7f00b484a2748b5c320311ed56d7e6e7fcb774b735dff7f6d971307b527ed739a495c3f8c19c427adc0a437becc6fd7244d3300d126f0bd94fda6ff22d5798715b7539b7907b0ab7777cc16d467ddc2232ad80d4e4297de4bbc8198aa1f4169d6b4e2eee371c6efe3dc9838e557c167f2ef7aa67295f97d3d67960218f0902710dc0550d7687928b79e4579ebcd28bcf1070e537535a637f14d22bfaf6daf5aa1762550b046931db6260f60b398ef40f79d02929dfc4f40e3e483c31e9ad9ea7e534a447f4781387923824176f26b093c0ae6904b9609f9984664a4b94da3d03629f97769c3d726412b2c262ecb8bb429141fcb3343c67ae8875829caba11467d6ed8e9ffd92976bbf2142b5b64a2c5947960e3d78e9eec7a86824274ef183c85cad43400a0ef0e13d445d41a87e51f6d2ca697569246673be925205a244bb7ee25905b608bf7f7794b4869d34f403347162b6ac72009ac4ccf45d8d84b52de0e33ec1e49dbb5d562639ac1d98a01ca351cc5fab93db7d45955a768729a189bbebe77a8599c1853682a927af3ba695a75a090f251ee5ac619bc7857b8eab02b4f9c3445afd140f94e94fc476c763275e695993b3357ab79d0876df1fc4acb9da976ccf3e23ea20c506abc0841b3641bb9968db148345d51b998e73792cf88dd0633e0d9aed4a3dae14df403ba8a79602b99522cda8a2aadd0597ede1003082b2d3195fa98aaf004a5c46ceba9aa493a8cc641bf8d87e97c83b7d335b7b75964955628e956320c403ba91f856a4ed3bc4ddd3256e7139eccec2aa13153a8f9e574cad9d1bf71a5111260f2dfef723c7ce205bc2fcde37217cf8fe779a57ae5659636df263a4591f3129ab2f998fdc086a6ee7c6b7a832fd49c386c4d6c6f8f83e5b7dbb2af0c82e279d8e37de6870c4f1e36be85d38c564219332dc71a93282552e8f2a298ddd5da30ea41777e2cb4a0173af61dbd2de4c0f2d6ac4b14cc62dc8f7a9a1137a444a5d20fc44ffd4c80387244aaf64eee52a0bee97a8af80fb0a1870688ba7c1c4bc6111f7fc9954ae951cd8e0fbd545b3600e3b0bceff92ab30caf9e4623ae2da730f75d335b55876b84a06b722b21875eda048b5b0bac6cd0d058f34c9473485f85103687702e2d76970ecbeb5ac0a4194f03b31e568ac225971afa9e4ba7488df1f49d4b67afbfffd6bf498ba38da36c82ad640629597e0c5b5b1dcd4835db40960ada4a79af3184a2ab4ee9ef6d46fb77962a644bb22d3802ff19f164e9916ecd740ba60340b7e6b075537afd241621dc7a5122a01826f366980d9c70c80cb205198766972ae1268866ec2ce56e9caf5efe039269f211ac1ee2fc6b7ed2c5a07fb3e8b0d726b97e0283e6e52447f60fa85325eaff115510e9cb974cfe6ddb8ac1afa0546cb8d52c396ca348af7f11f7c582fbe31464a3719ab16bcebc7c1f8e12e6313260d0bd684e679224653d73879555a17c1a76b4bf69f321e12e0dfa25c1262d389fc63c99ed92f45592de613754ae394383ddaf978dbd604f2b14ea95f653b94fca8fda962bb1d7c17801aeb656855b959a372aeab3ee2e14f3046c7ebbaa54d7dbfe058bc266a541612f1a877de6316483bc7791ec137283fa0970fa306015ff2660c45f7db658c454d0ca44f90e5b5c448b731d1b5e3c8ef226d0ace1054134e57d361df2908d533f1c304fcd07f352e6e1f5499d75c260a6cd9456595e9e6bba5be5244876b0cf81428fda9236bb2545e9c2cced6f633633cfbf6ae667644fde31737fd932c54815986400988512104c7dfe95fda92f923f9560889368e2f7e55c65439e4022f630ca187ff07a5930636b0a8d2628e6ae43b15315f779edae09e65ee84bca86f93d57c09436acadd11d76ae6653ccfa8e7ddd29c1a4d871872d426379913a147679b6a35b37086f572b5fd40e7daa9ed119ada22445374eb8d75f34ae12d0665a78a982ea09d22d16fc16806a3b161aeb60fa5b16971785eb9bcb7a2f0a7b5e2e507591b764f03b897ca053f94207270803fd35319c46e3a4673ec9629a98d6c8a0547e92c5b02b119ef32b9fbd626b86c9429997a40512412df21a4b0c594d0b184b8a8b566cb85a8911bbc1f2fb3e43f6e8b77bd4dea3778c483579618cb5f4bb6279c9661cd1b0926dc73c1a67058ed70e9890c54bdf4697d44638caeb09b532ea99db1f1e0ee6ee7ef27cf1d40d50bd2952dc8fa086eccf228d5eaab53f2342b5b139ec8d29378db2c52321f028d298798a287a3f178d89d0aa9766a34c6d24d54f1d65a21ed02bea695495b8171db65d38b33c027eb1d07a8885a8824d17ccda7db69f78f1f0d361ae00b1139e0cbd38856748427ab7639a7831289628a0f146081ee70147bac17d00ce759937f84dbe22d28f7a69dd8ba3208820694dbd178d56f0f72b3c83aff4a284d787d928f8ff09040b395f6a4ac353d8b2c48d38fe17150a003157f17cfb34d5eec5ff19d5ee6da56ad7ed0df9c8831b307d23847d596a573e0a6d9fa775069ac04eeeef581c50eef458d2aa4a8b5b174a3fc3d0f9bc4a5de43fa0afacad9a9c5c0577b1e08eaefdc1381aa725c6dd914b3845b5a78cc354795339e0dc666413ad96a97e5cb6e628ffd705aa21299fd2fb4eb2ebf3a2dd0cec32b009540f5919c17e52980959bb563012c3c78b85e25c0a3d135ed111922ad48f29267d2df257ef3f78da95ac95ff17b6b9509e3e4b52e7a1d8c443493b16730bd18db6bb14edb89c379ffeef0fba5aacdaba882779db02524affee23dcf7f38ca7d0bf7ca99a2a2a1e7414606b0533e08fd42dea11b855562a1112ddd3a6f49f6b12769d60ed754987f87f5979f859dae84bc3dc9936caf4a90456ab02cfd0436fc2d551390ab98517746b945509ff271ab08678feca75d8daa6ddb0f084aac8f6604854769c4aa6d7f05acf319eaf2ffb7b32005a375b55682364aeaf94cf9fd2c54122d0c9fd88af036d9304adbb3afc335ba0a1f3a2db4de984547033b50a21b14d541da92c65e9f83aed257e5cec4e95e6c72c6f62fe88e54d48d117e559b218e4767522977aa17b2883ef4535ca32df19aa2c45ceff0bce5d5b150afb228a4dde2f4b4d1487903e86760b471d2d1da64f8e83a679656c5b2cefb2bd847b99727e3c124a8634b9e95e2ab9e5bbec4d61318b6ba6b974363a23af3072b5c84d886573872ccbcd3954fd5c0dc2f447919f2d760f59d57aadae39a8a56525c6e4ce825626ef3d34c5e97108ab0f8fde0973f9da309474af92efb18e90bc4db42fa52082725949cf2c3531c99dfcc08d197f19d6c627f6a2d8e11f8a912c54cc7d802886552f2f474f9895ab3ca7c15049cf1b4b2f94f3bf3443a83e7d4b36f776184cd1db921c6ddaa112eeb950b6f87608d9d0e518a9225953c1dbf864c99ecd436e5f73eb3eeab357bd93e576e9b4eef5fb350b33577a9498be5f568f1264fe767812783d5e83042c0ecb789ac1dbc1197fd08fa468f18457bcc52780b6081b1ef0519e5785ccbc3ccdf075e86ce8a70e231807912c69a4800fe7d8d4f2f2253efb3732c695f74deb87bc72c9edb266fe1a3db8ececeb49ebd83d6a5dedb55bf03203b42eef07c0151e969e711d60b90620f3ffe2d59574b85e24c27f2fa6cc688de26c568be2fcbeb4e01312c575fdca23ff91963ce18a4ef8f33dfbcdeb0ef005a0dee4b7407945235e32ef6ad569529c82db37bb51af4d384b475dd9d83ce3cddf7fcf39663996cd74ce397b6949a804e320603b554624e55473e465bd214f2afd74729ff4ca1aa5e379eecd5370b8eafb49399540df4f948b86fa5bcc9bd5efedefbf01482c265941fcadf5a670616189431945139ebb28ed25d1283798a9cfba5799be3da5edf0732a761fba65c1998157ea73c55f019f45a7d09c9952e9c660c827612c54b1e3a5273bfabb518f62730dc62c7bf149bf0eedc28f87194f34a73ef84dcefb57777ce608a551d7a3a47cc3cf9a4dfaf7d22eb058f6d1d6687a5ef00dbc34b32e31db43f8248540603d6910a56e9b0ed2d0054be85ebe47a1af30527f8ffccbe7727cc91fbac8fdc4e4c8978693faf725c3311e3b5cee40b9df964fd8b34796fe52a99ba245c0648f86a7bdd900b0ec875e32b05453519a4f722bd6ff2bad2f7497b0c2ca3d2c6f2767311bfcf7a577e5cfdf8b9f4a50dfcd99d228a7ef6996f10c78e60681b9478150d2aff72d982ace38568a55488f3954439a897a73c96521d6e394315df1ad44ae5ce8c6407e7cc5db24efa372a7d007cdf5f96704ce234b102b1566d14eb112915043d1f5797d4780f80f5dd72dad2287d96281a8f11705693d01925dca5b84c229d4dc8a50b629e75063cbb5f442abbc548cab9e3ba20a3ed7c77593960666658a9bf487c76732a731c8ca8e550d555eece7c5657f977eff8c74eeb3c872c12f1dba61d72fdf0b2a25a06b7733fa878a80981c5d25788ad591155d5a4ae2037660752c906161f91763bf84e48b79d98f3774e7c7ecbdd65e71772f9f428ce56a09427ef952ab557243d60e51e0f76301ac075e9ab5293c61f1ea6ad161ab9418b794c4c5a48418cd0f934046d0e14c9670ca115210b725c2cc1a75565492ece4eb97e8432110c6387f6848a580e4ef0e438e3690e80e74daec9375e6dc3c3b5f2e15c8aeda6586bfa63a7ae7892e5008c8c8668aebe569a6adbac2e14637f24dfd2050a780ea20212daf86712d90572fa49a7861899610ec68fb5e9ccaa2a297e70a28f5eb8ecf16b5f851a3da532ddf907a99acdbf5a99784b54518125dd3ff4f3e76cdcf9c4fc07b341a0f86cccf583fe2e8ab02b7631ebbe3b33ae6cafa1a8dd9c89bb1a91742c6d371cae1d6f08ecfc482f0e0b91d5190c6bce7dfcc9887d9b200c5a28d158c7d279f807776934922d983c6a0d406f3c85a14f8730fb8e776eebb742c9e23d668a71c6f3b343454fde8ac2baa0e258e6b0afc9a155cfb6ab3fd1bc5b93e666e8f7a3b42d254988fe6143d2ed2a9a9aaa1dbc76d0e7a4ef0d84fe3fc9708090bbebc5115476fad660d5a2dde7355e484b0d57dda11153c4fb4311543e59ec296f56a069d6b2d7b8ab1688e772beea2275e3634021d1fb7d3fcb48a76854d0a5dad90d20776a271223b047b7c36acdf467e585b7cb558d61f5ee4bd175360d47dff9e99a52fb4e23a3c47957ef1b3612d872a6edce5e372d9d2606a7f02613e33655db07cad55a5affdf4322f1d758b061b1cd753f913670e964cd912c37412bfd7e9ffc4f3f6635a0fabd47c4c4a5b86acfd2ca573623f79e2cf0fb3a5f5280f92523cf4309d8bdd70ed1580e5efa2a442242585a6a9e366864aa345f50929e43d1a246f8192966fd9506efeb600e63670092dede0faef7c844fb485dbcfe53d4a09649ac1bd64408444e7b88aa9f841f9663917feb871e5896c6eb99cdc9119389e70353ef1925d7e5365ce7d51c14556fb674139c6cd1bd0db2e366da246ff39f714f2cfece45576efcac196168d395c62d692c5db766a2d366b31c94b9e6c46e330839425ab066d7eca3c4da6694d6ad84472b1e9e5f76cad2c8e0bb356dcf64afd7fff9ead5571d8cf584df3d0d79f31586a54f8576c93361134c774569643f33a2d3a6c67cbbeb16a73878d7ced15ecc04a7896ab6983b5f9193c2ef01eb363c33f1756d3f73c11a9579bb77f3e7edf60b9b480a596d7d49cb2aace5696f0b792062626ac66b1944172fccad47b4bc691aeea8ae50787fae3f72b52a46954c13b1580d4ac1b665618106c8f3b2ae82e21a5164a3aa825858a5eabc407f0601cf8c19728628fc5c85d73ca8eb166348659a1f3343f52d333ae63f3262d791a50ab45cf40d338af569f19b3fb7f52e72807f9ceddadcb3339ef1e80cc44e084dee5052dae3095a5c36961d66cd71a5596241ae1d30c964fc866447970de99620ffbb0031608a04b2101ce45f95ea8e29206f940fba64dd25ce1fa646e78eaa52f640849e5e50de415289e5e7fd8ffa9b421db6f1f9e74f9f0b453ad3982ea8e943496a24e34476b78e29d181833bcf073cabf70efeec88bd97b9991537d1063940444c76f19791d7a137fe0655152cad9a94aea6476468853eef5b2634f7031184ac03330c2975c723f9e3889b24834519765a679b7174421dfe53cb63d85a30a3ff02096afcb38e0b379e4c535cbbe6ea9e1b09473c922322ba6ec0cfa224ebc20d76f2075e3c5c2395280c13b1f97170bb6fc8db885f1b03ef45242a22c7b3cac0f78065fdf9987885e14cf40419f78411d5eddab19d7565037c5ba0e41ebe5f8c5b233f7867ed0d73d2e75f873ff521c560af4a12a40a1e219a4c0c1884617d3567ae1bcfffb045b2ff986a94cbfd98964327cda6be9116aaeebe57a9e0051f709f9e589a4eb32518085e9a0e807e8ba5ea66b459acc8917a89b92a24adb0a2735cd264e2b9bee91d01f4d4baaf0f2a5f58aa9a85fd8602c0269b1cf273c88e251459267d1371e4ecc05aefa2c240a0f27967a27eaaaab5672280d27b5c5fc2a6c11d19095be886737ef9e1d91deffb998ceb487024d1462db9f57374b667bf47727398c06188b224f64da9b89d27c57932f09c907198b47bc340a789d0b341a871adf6b2567f002db60d8cb292426ffe0a5d827cc535ebc5213df102bdc26191fa44bbb65e6efc75e50f31c76adf1a60754ba7eca158ba71e538c6ed8ae9781a9f0baf8b188c91382e1cc1f71e2aeebfc77b981720e6bafb40d5e5ba0ae0da87268c01d9f414465e172b9b4370ebdb4330d4f12a1226733dc943c47545f2a59225e3ca9f6b5a5b6e53eaa2073541b6ad648905de3c3054f4667fca1d017e972fd3374a19181f2f2d384b4f6bce28abae2da55d62d662de7f15ec2f9375e8ba845eae48dfcfa4efb38e099d65fccd219d9f6a038896263f147e7e2d3254875c99552e2cb328385fffe9bd98a95366850d417c79c6f3c94cde8d4d38748a5d5a7efa844a19137bb86dd52e2504feba13e6d0a6ab080a0c435fc3e527839b79d9e44c1ecc60f02c8bd4fe3c357752dcaae515e5b24512d33e91b8e212fca0dd80c67c628aa8d61118441292ddde4529bb26c42982af3882703549935d3c4a3f99d567f34bfd3dcdc4ef21422bb82af3153e5b25a5e0197775f8514c9f631b90285aba112380e35807cbb919c8300bf6a4663bc6d4eb36614fb7a225fa6353784e42ccd289eed45c991e826e5ce72b4aaf9d14fd1945266098a42c3efd8f2b2ae78ab1660e8a4184acc7290fe65b1950afea9c83125dfbad4d650ce708664902bfffad6100af689b2f6d6e8a9be5ea90b32a717c415d137ca4266c82d25605a0f190f53ff3ae0a6e0c9bf97eaffd4c4b11fcf0a86250786da9f2f32197949f9c114f0652116dcb61799343d286e4bf952908d504a326b23749ed23a25a65cab5fd8ae4bb80aec594d537a165323aca313c346725311285d88dbfaa2612cedc985e8512db8afe05203382cc9edcb439b94ba9eb3f54491b3b082345b91a61be638cc27a697d87f3427a4f2f3f585073cf3378cf0babb601c285251a5b12e3c2d23febbba82cde4ea6a87559e93c75cdd977ea7278f4a0b461b1958dcf5a77d0dc21b4f10e12637e15fbc24849dd93cb9ff45c634353d532f093b618fb7437df71fa5037cfba670a6b53978e177b628302d5a7cbb8c63a4903779f7ce47e9c07c8aef4549e560ac006f8647187917f2876de064b45879321ba583aaa99580e0cea9c359cf7042818951ab496b7d2ff3cccd005e23832c07b5e2c36402566dd7f44afe5f76a77aa7f2710a8782b99d39d7298e699a2c785a3ab90dc512e6e994520a38d5af8138e5bcf74eb5fb9a432608c71e785af139752a13223b1539e09df27d9163cf11e954a45baafa0e99c39c52862dc792e1c9293e78e9d88fff4e29a3bf63fa8439a641c5410388230ffb8eb4bb3bf9eb5e4ee926d3d15f9a72cc77fd1dc3f2237e757b5ee0e58567109b5e384b38b9a2e914744e679e9b8f33f7fac8799a0fb233f7a6c879f48edfa9781cce315f6671ec8f113b861070f277cd1cbbd5c9319ff871e6a58370ac69151cbbd466dfdf2d380b2bbf5c84ec1726f6dbc41f0c33b6bebab6c94ebcc00b333f6167bc370ca3201af88297da61afcedc2060009a0a3af064c2fb758103f01cfa3d1ea6bc0fcf98612e7537f67a432e4b1cf63b4fc48a63ebf555561300170b544659a87e81ec57236f067eeee8c6eea7ecc60f38e30f3d1e67cca727137d2fec714c0193e56d407798f4878fae29a1582f8a672cbad1219997a9aec3de81e9b3a6d369dd836ed7a364b0122070ba72d86eb68ebbad57ebf55555ed7318f05490e27eec27f8d49817c781df83ec20813785dc3383849279f9219b267ee68703a198dd64532fe180a7ef0bbeb81e6706f1643ffdd4008842e685ec62c1edb276f7628135dc6ebbeb009e2fedb30f9dcf67ec8b7b7aea1e9fb55b5dd63965cdcef16efbacdd39eeb2ce1e738fbfb283f6f1aec3b89f0d79c2f88360a35474d51764a529655dce8d6ec8fcf81842e0f758e08583b137e06c104d7812fae180c53c81dc8390b23cec039efce5eeb43c38686ae522f447b0abfdc2bc946569e05f5fadb19b241ab18b05f809cf70d2d627f496dd76f7e4d0fd0ab12d27a7adbdf61fec3dbb586804631e277e98bd860a2bbffcc25cd68b02dae20407f4c6f808609c443113470cc1657de6f5924810619cb066348aa310fc46a643bf37546fcae1930b1fce8e0e5b0187652490a4751801ea53ede3dfddc3f6eed5c969e7049e41be58f040ce5c2c38ec62c10bfc4178c61f32fc4909ef7872ca6ff00b47c4eaf78d1f04f897df8b42fa2b8cc739841f663ccce4df4274e3df8150bee9cfc8ebfbe1807ef09bacad708dfcd01f79d4441436877ed04f7878244ecbf223bab4e1af388ac5648bf3528a5f401c103db42f791349340efbf8673af2e4703220c2254e12f0c9d92cf6c5f18bd6102e198dd8f0323c3a39b2689cb1ebc0ebdd057e2a2733adb32f431eeab5bd7c2e7181f43c994505ab208f5d73e05d2f158cd08fa6a1a82b98b447e4a8b3a617322f485507c44a1762e8da17aab3e8058b6ea089744cede70ce6857d40a77acc6a5188e34ca238f1bd0c57973ed8255c84ff03d13bd4d9b3216751e20ffcd00be813dde7e59411dd37aafe858ae4f9e57708400afc3e4c1e6bdfa8ae3a4ccca9104d3c858ed2ad56de6113233d73f19df63c38a8097c42d776205808f7f59c1646cb821c3929b268c0851c9292402df382d7c871140afa000a30b40afd4643ebe8bdd16d1f7ad3963389596e2ee0e211451faf0595515c8e272960a8ea81fe5306f219bdb21dec8c4a09ef8f7bdcb04bf389037ef8c6094a7c2e18316b0064d891039e712640cf45d965f130a52e20f904fbe548015e377c8d60caf018f3ac7a3cab1effdf543dc05d462a1e89f8017a0481fcc59a87eed1c9d551fbf8eac8fd837d9790f515bc5ed5b5945ff2c271e607e98ae01c2fe19fc58fb980a977c3dbe124bae3475c9cb5942a730a4b4d68252031d99fb65bff3f197ff0d30cc52c1707bd94fdc9c3c99ff50af1eaa7e26c61bdf9b7f8265c2ce48f142f14bc13aa9c154cc701db48c4b4a0a1cc4f99a7fa56676e4f8c447c0383cd60ec257d1cc8ca0ac89930dbe9fba960fa57217fc85e090568e7da0b5f09f8d43e5e79d0b27933952c88170bb226ccc3f75c61918310db9e90a77f86519fff09efbc8c836045d189e2a41cc647712673f8625a4a4a7786ba895055840c035911a5bc2ef6d41ca9047618280f51c859204e7452b64021f3534436e4bd3b683a4ac4d2b889921108ad847b6914a6d5bbad9fa2cf98e00970094727d1f4cec733bab6b5aa6fd6cd302fac0cad14a89934dffefdb7fc2d888e21d3ea03608070bd1cefcb97cc34d4a297e3cb97acc65656904a09ef8d93946bd4ca8609c45303b9d2128144efc0bf517b15685576a5e4dc588abd2d53cf01fe9081b54b260b35a370c213c1e2247a60c042730d191d0576581885af74d6119c231fc84b00cd9f50b92ecd167fb21a625bdbaabf5e5e12cc334dbc38c6d70d063e44957b03c89cf3cee04a641e50d050c7c3c7a3fa7edaf3923e89672bdbf0301d279cb457e9b1967903eda13130bbe217ab715816898342ece172339427c0aaf30b2d56f95dd4a47e5f2c1467462d4772d651eeed1624480c0dc7ca0aeb8936a743a123c75e8f6b04d3bcc4048e7a96f8a39a4cc3c27e65abec379c5db2ac4b22d1801d26d423a8bac4767ea89fc805b854f4e2fcd9f68b05bc22471873b96093fa184d36624310bc8800f03b4c71372e41fe90f1b04fc7289744594e8f278eba38525a44063395e2bce1ab5e539b2a20919f323fbce189d08ebc94fdf57d1e3bc0aaac1085663f6cbb853e277822c3bdb13c27d62dd400c3735d09ee9db58760324fe3c0033b634d9d769b819716d2239a65f57e5e4d7046a134a4cf170b9fc3bb309a3ebaf7890d0805cbc7ee1f5274b1110463a55a694fb60383ce15f8e3ce596b879d81c22d0707021c36b21415193f0345fa4fadef7f963638a9fb89237c14f0441cae47e320f3e380b3911f46099be0512085f745b52ea11d80de8d05591985a825936a4dd128613fe0c689588e571f3bbe239382e2a0812a429fe123342968ef265944bf08cd9c6d9ad8b2732330d508de311b305940764d7391a34f9239addf0d5e790a8c58084637f452c147eca795b75c37865dd80cf7fde70fa709244f79358d320a493d12ba52ca27310e7b85ccc902bdedf4ae0ba37f85381dbc83818ed1dfffb74895c778e8d4529dfa8d693f6de4623b3a845d0c1227b6d34ed2a4878cf20591f1548a70fb72004fe01c48c83dc9daf259a49a8ea442120e859e7443afb18be54f0ac035cfa65c685cd38894ce3a73d99f6215fd99bfdf2bf5f6284cfd3e873d2b24d50c0c7060fcd36ff1d1ce76cd591ca53e640b1247100f8e0a41140e38aa86d9d00bd99fd77f3a2ce4034fc289ce4631d48423175aee84def78d271141f8090d019440c00662b85a0984e11d429d269e76ed1ec505cdcf2b25cd17a0d736d0eb12a8f2242672bf62d78697f3bc1d4b4c09ea50a8e74efd6ce887da76853b88984f2192bdde9045ca5689bb950ff70737e3406c38f2f96ab1a06e82c883175fe2c8879b02def35394dc295c8e83fd06eb023a51c90f333ee0c99ce319d88c1f726f6d27efa3ae66ab7edb14edbc90add657575757d72c043df2b261ddbb4e6b9e20e912fbcffbbc62e1101378a358dfe4e97022197fe487c05a23ef015937adabd9a043ff0d911ef0255e38e0703eee0551cad38c5d47e370ced9a3273a80a123233f744443a697102bbe47590ed390d0a293ff11687272c10b17219f32f4ba376c4036690e941bf9610dfff01e54d796b06f653b88a05dfee6799ff7fc9117b038f07a5c68b125da56d972c0cb7117ab439ec9b4168e471a31208152e843d2e65169cb5a2d86a70a1659530f1bc494af40fc9e0efd80331c22dcf0088442422cb115269db246aa01ce7e79cfd664b2837879d942b7d864abb361126559c041104e848c44f3634bfc7d862e86d7333cd982de063a978707e28483f2e586fe08b4b6bd0494c59e17047583ea8879e8099d2e11d23263532f458e635904d890f20009fa4d1a81a9b8e709d6e35ec8c631f36e329e88cf49ca831bd20e53cec1b69beeacac50e40a4feaa3e89b1f041ed87879f8ea73179e6c5af9c2af57606ce94ada4ba220a8e4f78c2803d0ca5b51f50f62ef5a93f22bdfb25e5f6cc5ec3dbb921fc8b5507b1560a2a79dc1164089130a3d362b1644739c66d148fd6ee53d40045a3a31f107e1f1fa7d803cf4d38c873ca9693d37ba68bee0aa9754710a4cf0b5d7bbb371c6d3b882764d9e37989b23cbb33a9d4ee121adcd24eadda5f0d4160f57b2711625be17a42b69cc797fc5930da62b8f4e2a1e3905459a34969a1c94c32278d246f781a42f3639af8aa487b6b6b01f6385bcc90253ac9bf10dd8443d4ea090dcbfb4eb23ac5328af998e728ed0780942b7c027bc1778fe48cc60be52e9c2f39adf4462c3163a9152b9e091fccafe4aad8f7a24ce80a9ec4af1d9e6a731db8867c3a8ffbfc76affc4ca2d51d6b093a6e65b9c6d82f9b1d3876aaa882d0acd519f2229e09e396cc0c4b5d3d37118fae10032d989efae909fe6674d72f9b2403326cbb21be4e0fc959471d8ab19e105c5f3ce4f465da8338ffdbcc31810af1f858b787d981fc71c76cd7b9ef836e56c04f79d90c27324781834743f4b413f228b9eb46445376010e863124f207bbef8b423959daefa3dae1da2f27c5af09655f42f85d794a0b59922dfdb8a1edb66dce8b005e029fdb5ae3c6d6f33dbb073ea9c769895199999bbecc2ccee4697deb446a57745be807a8197a642dcc3206b3268d261cd284cb364dccb54e82828710a428fafd4612dcaebd92ce6f21de4a617865106c248ec99a275bc64cbafba94625b755bbff57c5bff7c5bff7ffeb6be7c69ee5da759e2f5326571acb85c977027e3843f0a1bf88370545d0ec7032f995514f7a2a0da1b80077ce2a9fbe472b974e8b316a2b1a7b26e8c7e79ef4caf06b0e9f354eb1f7e28011ef0990675c7676510705f28782ce89df94bb6e60036872a7c7f27b633b4f2b73036ddc75cd6580fcdedf1f83af07bcc3d692f380b94863685fc8db4726a8be00a7f1fac489e5a4110ca02abea6022f89427185201ad77b3c48f85c4f407a1e04b2fccb40b3dd0b58ea38ce32110a4492f1a077dd68f98c7822883edda61e9b83714944878940826859cf129e359af6ea84561948cbcc0ffc66b785568aa60f8ad9e7038e4d756ce2f2e52e7727965e0b045b6b8449788522373d9c88b593fea51e69657bf322284ca3084ba01e4b38a7a4d90a6a0f8e7d5e5cb0e70867df52b3b573dec5344d6a544a11e8180cf98a5e6af42ceef9e68e3e0ffcfdebbb8b78d1c7ba2ff4ac77bbe1d7b8fd1463f0138f16435b212794359be9646c9d9f1ac0e44c1266390d412143d5632fffbfdea578d170951f22339b9f7f378441240a31fd5ddd5f5ae024e24a3c5f861b919ddbb0540b9184b6e415e2c2e3fcaeafa82c7cf4f56f972f558d0cf627ef9a819f41f088f1415a141c9a3eb980456c50a83aceaf3bc3fea379d1c9b5b8340eda7f97ba2e1afe730c90f34161b808644ea9c26f7499d5694f01e02b237f9391f33ea82c6b118bf17749c0ee4f1ad821f0d4d1ce1c6793e2ba2ef191ee27a3efdbfd7c5bca82a899afe5cb09d691dc97d46ddacae9705abc3b87827dd288c7d6a1151934bba5d0cb086ae35ba7fce817dab2e6dd6c03458ee3461d81ee6552f9e5eb5ea78fbb450ee47501bd62b04221b3476b51a4802fd5bb1992a78309bedc6cb3f6da40fde7e67774edd0dc7d1defe7836d083a110a7adc7e99f8a8fe2d9d6ae18a885360ab6e59f0bf17ebef820aa053160c80470b1b80eb8a77eb1efaebab5a637ed37bb8378d44b1adcbcf253b7cccf1defce9e272af18141c09dd3dab8288b59c3c6c0dee8ea4a34422d56227c04afbe10cbe2ddb45a154b91cf212f6f770551611b6d10a3342bb02b08ad2ee66c6d3a5d5c5730e0e1aa8a4b294e168f89815a156549efcd02b8a6304f162d9006d7fc5670a08eefde9b07a1d4d37e4fb9536f1e887fef2f8e7fa77b79b92cf2cb8fc1dc4ebe793347c1370f02668e56f93b51ccdf2ee0f2dfc30d9cd734b81c7c5c5c2f7b0ae6d5425cd488e1b7821a614611a36d9be1d969367ef5b449005fac43fef7cb7c954326355e2c8b276dce61a47ee70622f4a5a6f7f9bf5ea491fb2f9fad6454ad45c7f622dcb96e7b73754707faf972bfa8bffdadf69b3ec6bb6d9fdc5a6a3b276017ef35b137fbc8613bc2e286cfe927d4d10d51b081397bf12dab5e20ce6a3b824110046deea8fae4bded88198ebd82e396302382ccb26dff6831de5b9d4ea6d588f0493796e7627cca3ec3b746aa6397fd90bca0e6909bf708f3f783c40d85e6dc48f83c1044a4edf52d7dde90016c77e537ddae84f86bdfddaa64faee4722a839f939fc7dea2c2dbf868383c54c3595c05d022a582e162ba2a542422422250aa82a086fb388f4c913d650d6e808e4d874751de22a1485b828cac58747b5b88986313468a4355d8c65d9096419fc05c2edb6cbb5c0fcdd7435b9be0052621c5513f41dacf98455a44f6cdcedc1ee96988a3c5dbc2f6a91d4c6f3627ed93eed48c2e1a1f3ac1773a29709e37df1b1f9dd1efdcd15cd6d97dc094193a89e9ea49c6e6ce2bc8d804775a480cbc5f8272a8e684e3fffb6f7f87ebba1f1ffefe2b3cefb434b51fcfdefe296229b1b07d0ed75523c6b77c8ba7668ed661dff751b25b5dbaf1b908056fd724acb326f2202d75909aa9ef4b7255c896e1f4832c4a136991c43d4d29a1dd94616e01c7eaa0bff3c8022364a6caea2c03b04aeb317407be7889eee7edcd34dd4a94da8a1bfff3d34d9c9625b8360075679b958893cf831fe919dca5ba6a18b6198a101274c94cb9b07f3e2c39b071dbe630a3b951ed7c13614b060a9565d62efc9132692c000353504215b43fcd57bbd05e52643c24fb8974da966ddf19d3a29c96fbb3c613b6ff50c5d76cfbce64effa42ae6340707bbe6a73e02ef5ab5838106c3b1fa551a68ce5a02f65ffef217364e616f3356795dc3b592da2ccbc507912f2fa6ab65be6c8ccaa7f355b1bc5a94c16dbc9cbe2fc4eba2cc3f22edd806fffdeeff960f1fbd993ff91fad1e04d2b94d133336386ed11462a584806f4d96de06a196d355b1cccb8ad52bd54ff1cf359b94971ff28f957857ac9a423fc53fd78e9573363465639baa2d028c0cab9d7cf98eb5f8ed8e653ffe361e59db78cf045cfcbe7df2b4dbf8108f1b624d51e70719db90a38018d79060857ef216debc7e36bca545ddf17f7fd694df10afdc12ad64ebbd6dc5495da019e6a0295f1fdf862094f5da3bb9be821c106ac2f1727ab57a1cbca8a715512c7925e6d33138bd1ff28ba20c3c5cad13616960586eeffe6f29eb07cf68cdfd96ef75a43f100d3657e1f92df42a720f0e3e09efdd63c38b67f7410bfd7edc55e17d8afdf6cd7cb6b8bc2e0b19201400f2e0f183c639edfcbc36c70f8e69dfc111f3bb10f6f95d312f96d3f1515155f93b76b3785167241467d3b0f321cb8566346fe98caa179528d803f56f8a6778a3b14208869d4c522e2efe0a07d0551d6d7171f157d9043f6254bf5af42212722c3ef1549ce78d64b7e92e4e33f18c6da8fe27ebaf08fdb42d9e57d75745ad336b00f3b05fc363118ad57bb97ebd5fece18c41d6dbc6b31a8cdb761742340f3780beb9e30067f0f1cf42574200b2c9b47a5c23a66e4b1d978fdf6f4ee8bf8b370f9eb2b062d6b9c504fd9de477939c32bacac7eff37745f5e8cd03f1543463fffbdf210f6a884af45bbe5de6b3a23a5dbc5a5c8936a10c3fe36c25c320e82f9e87e73ce23edcdb736323aed879e8c82662eabf4eebe7217e6dc4b16a86fa70bc985f86983bfd3906a9d53c1da0a76e5921c3419f3f2cf3ab7d96371dc1d262d028634043dde6fba2777fe2b77e0ecae970b713f16923775687a36d865c8faf978a543c1be8e29b07f4a8160cb52f14bcf706dfc0337ee5d7476da3b4763a57cfc4df7e7dc412d07db8bb1195795d15955855515b0c02b8e5a22cafafa2abf2fadd74de79d849760ab1794082d84bb5bb6ab5babe802f1df66788885c107b120c73075c5559087fb8f850ac8b656bb63123b2e2e0e4285a2da2fdff7502bdf2b42c96155b612f0b044f003d5bb7ce3d42758869d2ac18194ad4e762b07c42bfaf0a224ca01202677ef151cca6f3e9db69b1a4f2aca4827e205fad8ad915987ff61d60629a86fcae5c5c80d8fb40a4d174556bda6a8165f035e82909d0a3137a3b24f72de6eba7f09962adcf40a4f2bebb53230bead614ae80c9418c34d1b39f3c113f5634097f680c9616f5dc04553ec70ea87d697850a21a2fae8286a4a8c6f915b348b51c79b59c8e5762468b2a701721f7a0e0c3f331dd5b16171f0588e0dab2ac6d4986da5eccabab5a513f803adfe6e3e262b178ff645900bbe5abc5f2c9d575593e313e431d8d9d0b5192d71721784a0d39c1f71e3dec808b29a810423c5f8d8abc5afdb9385d4e11d3f6c91338007460825026f9b4245c958bfd05b4c6e2a4185f2fa7ab8fe2d5a29c8e3f8a4991af3f46937c7e595c961f5be1cfc5f4b26a617f4dc84b8a1773763ca6c99f2e1768a77adc0af91b866295bf2f1ac66eb5ccc598383fc8a1b07687bdc059563dc5720b31c338165df53854b658d68b399ff7a2a3f0ecd73b475c8570bfb223386870c3bfa910440357ad66baa6243b05bb6aeb4dd2a029f6b8b7a8f316bf2086d6ad363dabfcddbbe2f2b4985d95f9aa1831451d54c1d563b1cc3f74cf9af652d0a3c0d7cedf55fdf092fdf3ae1fb33a5c3100838c695a546d936df54f37844e4f37aaa2de740536dfc2767c3304fa573304fa16b6e35bd88e6f613bbe85edf816b6e35bd88e6f613bbe85edf816b6e35bd88e6f613bbe85edf816b6e35bd88e6f613bbe85edf816b6e35bd88e6f613bc4b7b01ddfc2767c0bdbf12d6cc7b7b01ddfc2767c0bdbf12d6cc7b7b01d9f1cb6a3dd317955154bf8bfbc984f5753f69d7e48944357bd52946f07e9f786207d5de3be3a1e0734d6931c06b217447b4f43f55571292201cbc0878f7a25082315979d381d9dbe530f6a23b02dabd1e141740c49cfa7f349b19caeaad1625115c192f47f5ee41745f964793d5f4d67c593095046f5a4a8664f7ac5bf6bd5ae9d23e13be864bfebaa645f2fae57c5f2b1383fe75f3060f965f5981f3416ac78315aa2c8775bcad7adc74df52cbcfe61b9f85015cbc369b55a2c3fd6490b0ff36ab2716bb40852c2badd093fefd4f96ab9b83a25241a4a5c2d17578c553b853eb041716d7e3b9d7f8cc2ad4ea1f39ef87d176843c1eebb7c90fe79ba9a2cae57ad95c73de76ad7db9d565a3bbbce409a9bdf7593364d8a4ed40620e85cfc8ea7f4fb8e65dfe1e9d1c88900d59625245c1e2689df61a3deff767efeeac7d707e7e71b46bd5852ffd6c8286bf3dede0a7cd8abefb1d87a69d3d8b757be7f029df72c5edbd3a72ce6ddb3249c3b8feb138bf638eb6aa8e4a3c7e2fc3d3c90e8c0a25fbf430d7c317050bd673f95ce51f5bef638eae0cbc66e78637cb0200e8870f3d963f113bdf5739d560808b26bdadb1aef86a912cf06b7121becb2d2e32ee35c400ca6bce2591fd8ad816f80311793cb02461fcfba29a0e8ce9661ec90a2aa9ef706a861244f45775c0d735ca7f80a8f3991587d73d701d11b096c8db9371b0b8dfdd1078c2b5855d49ac2356acb2d1005b4f3ac11a6e515b2be3e6d7152c8161b46d58ea92d007380661d8f8bd7c5db65514dba452e168b32147957ac7eac8094df4e977cd2764bd2bc8492ef8b2039ec35d6904335d06e9977d968509e4f2f8f42f2f88133ff9e1014bfaf31f0c3df74a6b39e73f1e6c1ef7a1df95e4cdfcd17cba0eaaa973cbd24c5e902d4602ec6e09645a712d8d5d3c3ffdc38cec4afff89885c450e7390f6711fc7e5555b5ed2bc3f0db442d77efb5331ec87e9fc72f14196e1249393bc9ab48896512d9d7c5f0dcfb695dd03c9b685bf61d85b306c872cf96cf4da82f9ffd3b8b51dc6d744ac7de07c6dac7a7f94493b936e761f2fe6c5f1db873fbd79400f2ff23a59e77c5195793509d933f9e7cf8fba101b9af17f3e566d7bf14f43a91d5c762f7cda7500aa8e1697d3b7d382059a3db1695881bff90ddf95b36295ffa9f808ed226ee448fedc5e8f57cbb277a39a4cdf52914777e271de7988fb53c322ca3fe4cb42fc2eff7e13778fa6f3f75f016b5335f7c0d7546c0b256c2142c681ecbbd57a21f5b0dd1096a2ca6fc34f2cd2df2fa7e3f7dd45dbb9cd13f3b886584fb0d9599e8b394a3f12dbf7c284f7641cbfe1c90b76fcaf58ac59c02d174689dca3abe67e2818d42478f7e27ab55acc83e9616dcec8bb41c00291633c5d5caf4459bc5d893155192cd1ba1b8be5ed3514fb37d958e99c387c5ae8dcbbb258890ba63002a0c49b07fcc2b3f38b329fbf7ff320c4a7435bb7acffb6b7dc33b6949f71510e94c115f40241f0d86f9114d7c77c10b93eeb8ea8f615f97dc316d6779e3677aeaeab49a72aaea63bcbabc5468c895f3ff5b8ebfa60f68891e6c1bf5d85ccac6dbb8fdb3e4de79cbf99a5f1756959dfee94ac87d72f18ee76ca618f748bac16bd5a2a42e73b05010f3b6f3f163fbd7950f7266464e6264322e6051d29f0c62b20408e6a0172399d1762be88aee7d7557119adf3654792b9834ad810e9c8fdc5bcba9e11dd30bf2ecbae6a62cc253aebe937e196f8fd279c4ead4367b0d87ef3e03f16d7b5b352ed16f23b423bdf8bc5f50a912b5a229a4f8c8d4a360e917a41d4e4751b3780666b3362405fa8f470b5a887ce9f618c0dad4e6d05f7e7ba9dc9122baa69eef7cd4bf5d60844e3b278fbb05bcf9b07c100f78e497af320a7f96f3ca3fff6eb632cadc7ddbd1dd0ded3ae715f1783f643aa7529543980b03746d08b38d659e034f4a7f8ecadfab74f9badd66cf8479b6197fa64244df8d72420a1815b84103c1bb41bacf97eda221dbbc538d04e1beea21ecee7560892b24bad4ef2abe2619892e0f8d8a531f3f947569a853ed4c7f026255cf7eb69af8761329a253148da06cc728b54818fa45b09ecd5e26900af9c56af8387d43005f7d7c5740e935744afab91f9ddece3b879e7f399c8b68e9d8c645f24dfbe2439517bd7397bcb1b212837250df3e19b0722b854b7c4e45e8dcdd841205840bc9f2f3e5444cd4c57df55e2cd837cbc9aae8b370fe079b0587529caa6f597f91ab4def9b278db59e674f96f840ff78303ed33dcfae9cd03ba1985d5f5e6c1cf8f5bce7ab370fffd6e6488370faef27705e20b6c166ceae3071801663a3819d06db971bbedc360f1ed5afa7d69c0f474b0f846ed27ab8fe5464770abe57aeb176999d705c75bb515bfe4e31a5212178f5b4dd51eeaed5650df6b0a754e2214a8af9b02c11b3a3ce6abcec38f65affeaa37062641e87e87f6b81fe541785b6cad93c70d9c1bb8766f02827c63dc7f0ec8f0cf1a047c558f37f0c6185efdbba92c1037dd385dabc9c0d9dd58ffff5eac16920ac1941ec7327b58bc2b7e81dbf31c2a91a7435ee157d3b2cc977fad9ed0fbd16a112de9adab2717e5e2e2c92caf56c5f2c9747e59fc22ff5afdb7918e75c7600bbeec97afb877e8e47fffeff86e23443ffc49fefbfff8fdb3fff39ba7fff6b75f1f3efae9cd9b9ffffee4cd9b376f7e7ef4e41d0d967eff9baa55827789719a839e5a79daed41987040fea9e82e4d86f253d15b4cf5443c151b4bb01598b4866ee1169689de88bfbbb1a2f5f692060f000ff9ba08ae7a9453bd4ac43362e27b5be9f7bd9df510ef3e165dea09b71ef5ea1b77b04953f7ef374fa0dea67fbc8988a8ea5e897ef8e080513ab5f7c8b266af3eeea220aab379721f8a2f70fe4dcd2d503737ebd3b62b884ad562f1bfff9d49d8f6dd66589d11761ea387a1a33d16e7295be905ea0fb8e551dfbee8517dea7f1ea1d6e9f63081f5f0a7fa1862a4515c0d2196cb7c55e392698d9356cbeb22e015511fa03d42aa377dfda7cdb6db06fa468f03b83696d2add45367693cdda23a1f7748979db5844d0f0cd176ba773ed56be31612b04507b774a246229b6df4904a353c8efec26862376ca87cbb9a095ef561923864c3b72006df8218fc8b043120440553cf370f7efaa1bc2e104af9e76e98012ad10f5ff08cde40642f18d03f8501da9833fa5c14ec9f00e3b4d974be59d3dee8e0f5e9f99ff75ebf3cdfdf7bb97f303a7ff5faf8d549a7cedfed95c572f53d55382eca1f20d23c2d7e59c1156031dfc7ed5ab4725188aa5889d5e25dc1fe1577367770b2bff7eae0fc4f07ff31dce601c8903f151f43431c6cef12eb7d71bd6a7bb05882155d54456d057e8fd68f7f3c3d79f1fce07c7ff462ff4fc31d3866f11098dca60f17f9e7f661ff7834da7b75f2e287d1c1f9e8c5c9e9f98b97677ba317cfcff70f5f8c9e77bbb0bf28cbfcaa9a5e94c5685a516702ad2466d71566f67747c5fcfac5aa987d5f6d37f3f2f4e02fa747072f7fe4013f3fd83f7ebd777afcfafce5f1f9d1c1e9e171b7b1ff19447354219be44797c578b1cc69a37138bd30c3b435d8bd8ae5a69d1707c67a7b270e0e9e9f9cbf3ed8db3f3d3f181d1c1dbc3ced74e7cd9b370f7677a996dc540c8cda794854d3f9bbb210ffebe42fb27603e3f80cec82c57ddeeae8e1f1e99f0efee3e49cbf792a5e1fbceccec6e162f5bef8587dcfdeacf998507055df6ee7e6d6aaef3309a18d4f9b80f0d2bd1bbe1bf0b776e3eb02fde58f4707af5fec9fbf78f9eac7d30164f6bb97d7b362391dbf985f5dafbeaf0f970a6e489c1161be10ef40d12e037ecb7f11d3b7e262b19a70b8833aaed95d2d1fbf3e3f393d78757ef2e27f1f9cff70fce3cbe7f7ebc76279b22aae4ea637c52d3daac2e3bbbab0f7bf3eab0bd5eed667f95fdb1e7e22145e1ebf3c7f757cf2e2f4c5d9c1670283e9b7f263bf5337c572f189e0f8d4be7487fda57df9ec5e545fbf033f8e469fdef06d9be0f8ece0f51f46c77fe653e8f8879383d76707e7aff65e1fbc3c3d39df3fdc7bf9c783de1a3c5e17cbb7e5e2031f46978b8283085621beef7892cfdf21aac90508e257f9924380c3a16ab6b89e73dea607909f9c1e3f3f160fc765f1615a3d7a2a8ea6efe0e0bf282fc5abc515d1511c949cf9ff10aa71b5e0107e8d93fddbc572562ccb8f1074ce455ed52f6b0edb785214c3829940da3fb9a849ac3ac380ca38c7400750af8e5f11acce5f1ffc3f3fbe787d70727ebaf7fa8f075dacf9bbd06a67128276969819e0c295288bbc5a217e0d4799a85d9337e7a56eee70efe4fc87bdfd3f3d7f7dfceafcc5cbd383d77bfb44bc0eb42b2679f5433e7e7fb95c5c3dfb1b31a3bf76ba8238de39f8e13f4de797cffe16de7ad1bf2f4103fd7a6b7f708e9c1e1f9f1fedbd1c3e221b288425c1a97b885afeb0680ec8df8afc9283a8e6654bd110b66655332d54aeef0fd365b56a6380c0bf26b8c855c57831bfec3f1b73c043d9f03cb59108f5a6fc48652af614e6887d57db47666fa8cf8f7f241a0d34cccbe1d9669eab33b8c6d4257406edfc16ec5b6032ea05712bbd30d4871d0b0e5dd86abeb3fabea0f583a357a7ff310080e75007d356dfe8078efb279dd83af59cc8dd0d6d2cf5d18b970743abfcba2a5e2d96abbc7cf63768647f6d4d8b3a1b60674b3fbea4e1bc3e1e8d0e9e9f1fbfdcbdad88d6eb6c1204a2e135ca8154afe734bee5a22c07d0ebabe3d7a77ba3f340029fef8ff64e4ece5fee1d1d9c9f9cbe7ef1f28ffdf66854dfd7fa50d160257ed0ea296ac2bfd62cf79b7cbdf7fcc5f11f5f1ffff82af038618f9e1fbf02d77b7ef4e3e9418fc27a9d5f4e177f5c2eaeaf3adc05f8bae0728805439b73761df20514bf8ccbeb6aba2e1ef39cd72557f97b0ea13b5d2ca7ab8f5bf03819bd787ef0fafc7f1fbc3ec691d6edc64939bd04dea84fae7a9c779f95dd6a477b3f1c8c6eadbccc2f8af2e4d35b784d076168864ee0f3b3bdd18f077d28cedf157533ec080fb8d56dd401df2077f9b0401c30c45e09210bb69a3cfa7174fa2234792b7b78745daea675abdbac213f390417fa3d841ae1d6e9321fbf3f592daeb699c693572f5ebeacb70a56ecc109488f1e3cafa004febe4eeb294f8ef646a32723c2515d3c4e947845a0062ca695a88aedc3eef478efe4f4e0f5f9feeb83bdd32d0ae774011d49105b3f7c54c72d0ee70b42fbc074833d8bcae9db62fc715c16c12c081ef74d00b5fa5839290a0e6f2b8a5f72e2a5c4a24d9926aae96a9b52ae7b09b86ce1a7ed5e06a4349dc36086f75025a6ab3a6b0597ac440e8df36d84c0f3177ba3e33f72a32f8fcf0f0ff6b01ef6fbb8eaf9342f17efbe17d3f1620e1cd1c152d3b762355d95b8b7984d57ab013c35dccafee8f8e4e0fc871f4f4f6f69ad829483a541271322beea69fea4c65feffdf9e0f5f9d9c1ebd317fb7ba3f31727e72ffef8f2f8759ff07cbecc3f606b15cbd5749c971badd41970211fec84d9da6e67efe51f47078186277cb8f7fae07c9fa676b039e4c206635bb710f2d9d074d3d25b2dc4d5f5b27d2c1e9e1ebf7a2c7e383e3d3d3e7a2c46077f38a57df7fac51f0f4f1fbd79f04dd2fc4dd2fc2f2469ee86cb455a90735507b0c5e536a2387935dafb0f9030af5e1ffce1c55f20a56e84d4a6096fbb27c6441305fbb0b7627ccdf22360086457bba6351bb25d2eae976d90b12a84c0a77d46cb9113531d9e1e8d6ac11253ee1d6fc1fa80ace5d63fb5f61b302728a7ef20af0ec6041c08aa63fb18d06f73fd765a96c1bc605cebfc9070af2951e7e3e6df84e3839e90a8ee5a65985f4e6b9bfdb278bb7ad1d4359bcea7b33c34b198ef87931b56f9f5cdd7c8ad1762c43331fa8a1379c35a93d0418047e74edb04e2b8042de62caf87b302107eeefa6a7ebc227c5a863dc45ba6036c70dc6c9d2416d74497e6e3f7e5b4aa27b392e2cf440877decedbb9e40d82a8f45c055bcd628d7184be2b22202ec5251d1f356f5f7326629fc8a6b26a3a403b9dd0d0052178c4d2128bb768020cdeb4b7c0421ea8b6c7e221cb6d3b21e469777507fba8170a903b7b3a210676fa6e4adc2adf0a812b5ac850f77baffe8dc9f39f7efe1536a4e5f41293275ebc6dbafa58d09c224744883816c2c5371deed718a2a1fe1a84c047c5f25d41f571bc2f44109be15e038b5ecb0804db80a2d5cedc16c384733bbe5ccc093ea8e261301dee56fbb8db9b8ebf7bafe901bff7fef3fe06de0ce3d41def5070e2eee3edf0c41b35dcd683ee65eda7d5ebd5904f7defa56571793dee0627b85a16ebc7b0b9ecb923d0edcda48f28f4a89bd015692aa9e84ff46c202d1787595a166beed7e31a81cbf3734e08013b03f616db15a9df7f233dbe911eff7cd2633b607e7e51ad96f978d51c1eb704d6afcbbdba5e1677962d4366945b9e233458befc78cbe3f1a2bc3d13405116eb363bdaf6f39a44187c58f30bb73de693feb77d122d70db9dfef18dad827fa2f3af29051f9dcd22485db091ada0db99bfd5ad3d466d8fc30bbf4272cf117e0f58221f18727e8f43edb62e6d403a9b58e7e1f811611e13d13a8417c01f42ee1cc63acd76e37c95486228c68b4bec8c721be91cbd38ad6f8bb708f6c661f61849f136668c12c2ef211df2e574598ce1880834d1b6b45a162d85bccbccecbbd6caecbb8e9119c40d2f380b21f0c4c31092645a7dc73e353f7c247095d3f174557e14d7c879f49f6dec90ff044e24fa7771b50a693817901384c0739c06aa98e4ebe96259a7270ae8eced859c154fdacaa2e93ca27ebe99f723867d389e3f0704f6c621ff5093987c2b3c4c330ef9e46d0e98fd79ba82bb2a22f914cbeabb470fc3b06513cdf8f1503b8fdabc4f75cea7cf86463765d0a702e3fea3a4314ce7ef4e26d3190db33e4b6f7dfdcd834e02a828045ce1d3ae1737682b274fadd9e0337bc37b21c4b69a8adf05b27b289528b2a3870c9bc8c786a26d56cff6992ce6d7b3628963ebd92df7fffef75e48a44ea1f162fe76faeeba7ebd93d19ef6cb9b071080be7940dbad7deb51b7063a16b7df1eca56f4b1814be7f5f7c5c7ee753fc5deadd99758e606bcf6707f31af56cb6b9ae69085b2a667e9e81abfeacc41c001a1c4a38199eb54d6bab076ab0df9f28814ed56bfb3a67e57bae6db9d4261317e871865502f7fd7cf6b8898ebcff70f6a779827ffa3ce9a761e2c409e1f9c9d1e1f8f4eceff383afe616f747e787cfca7f373603fd14d56704779a4a66d825f7fd74963b0fb4559f790516addf1cd8cfc9b24fda7206560049c2517cb7c8eacb3e27a4e387982355807745bf542d64fab10b59e836ad5f54ce71dbcf3188ebb41f578d988201197182f630734385b767a532c39ec61085fdcf6ac5a112b47cf6989e7977cf2154455cd5915fe0121bf9aba384560cbc1b7ad3c47fc3a68e599b40b29296510893f2fd6a78b4549046d392d68bc62ba22a2bf5a8859fe9e584910ac2264d39b564d16d1cb4581b8638bf1f87a097cfe81bacc276c078c88fd3b5d317f0a3037f5e521134c1df43af47b2b3ff9ff39ff3fdff5b8af266120aa392b96d3b71fd9d98967e2b210f9c5625d20e90502a36dc3b1b8140f9fef1f7c77f928347bcf55fab0fe5167ba08c9f98a0e974790af21cbac27a66199571306fc63312700af56c5527c98e49d75f1e7a2b6f1e265b02c42ec2d31ce39e4e0c5b2c8df338c6940e1d590f7931371a2333d9478eb8e7936bc636804fb0721e17be8d024bfba2ae675b44e8ce3f9f15148a1208a5f8af1f5aa20220a5351d752c3619ccfebc15ce49721816570edb8bc0ec9c6ff5a3401333b88eb4e9a64fcd7ea095358978b996c472367d3b9fc6bf5dd26cd71ffbaba7bb7aee8163e3af92c3efa494fbefa62bc989facdfbdca57934af9daf9f2cd83fcf2f2cd83a7e2a7370f8e542cb34c7899659348af233d8e23e95c24ad8b14fdab22257021d45a4f223da6c7226eef56d23aa1e8df44aff53816d2b9e656a522fc8ed43ad2133dc6bba2b959b5eddccc221325e3c84aab451ca5c2489746a9482bfa21c2bf882f22fe11e1dfcd2c16ca8e23238d1271e4232d7d16f9c857fc4378fa137421e8424b9ff2bd9bdab5101089c68bf27a368fcae2edaa818e13f1a1daa7eec62216fcadd6ca6e8c73a2ece6d8ced426286f669113ca1eea333d49d74adfccac88279139d313439747566413b556b7c2f02c9ba81d203c4ccefcaee9538776c7ec0d03036bac8646fa65fd9b44eaae0ea6bb3a384ba2eceb4dc651331700fe2c13f1a1af67a60f8be5e24374b158ad16b31a125e28b51314eb48ed9eabec2cdd0d0abf131459a4d4d75c988a81e1274aaf6947451940a3f4da0c0063b5b8fa47ed10eec83a32dcf62c8e6cdd93f4e6c88b64f70a4cee82bafd02a8f701b15a44f972357d0bd7d1000c2bac8c69a1afa3adc1f51a9a446a1726fde4a525a831df87a4117ae277416357176e66a9f03b4b4cd2bb3b41b3f785756c01fdeda2bc2c9635c865ac4472e60e955f270cb2a6267598c93876eb48cb2cdb4f659658914a63b448a4b75624c2c92cf3223994b1baa195ac0f1369951f3999c45eea2ca7e728436b3b8e64a222a98790909928aaeccc8c65acc2bcdb484532cb806b649625223bdc797c2ae9d26c248d5096da56328e8de04f342f149d8df4511aa9d3243252676b255db6b156847436a3ce655946d0c0b75a47764fc9986a8875a891019075813c5d5e95f9bc6896b4174aba3d256d960afe0c9d31d25a69ed28939912466689d068dc944e6686eeb89191692a547ca8ca088f84165a98400fc8342d8d8c5d441f23658472a58e144d5712255cab3374d29bb1d4492475424095de01b632ee1de0e5f4dd3c1a17f355bb36acd875e06dafbdeedeb037474a9801ac75ff0d44238aef98f2dd24918aeed8823bbb077ac3edeaff2e6c37b15bd0fdeb75b59abefdd841fd4acb2cfdb22e2a1ba9f893e14cabdbf92eb0adb803d5dcd19138325ff6fe5de872f7fb9bb0ee51a146a8bb3ab773217df1528e85d9bd5deed80956ec2e7207708e94507af2f9fddf046e8faa6d96b1f9829dfa1597b13a4c3e176b61154ea29d58ef1fba0b36004d7cee06e5ac629a4ab3450b269be4d224da9e8ff526557933a343fb4b569619eece161f3cb03ad69be7eee0f0278be5f466315fe5e5c6e9a49c480659a2c191137767eed3a9bbb0e0160c07469f4df416013a586c17b13d088d2e5acb4476e8b60760361bde9ac075b405094211f1dd5c48b593f9208af95e3dcab640b1dda1a1d1f7f18e12d9c056ffccf1cf6c940dac9a4f034064851e2058be1e00ee641cefbf71bdb0f7d99303cbd66d0f3c8120e66e7c73afda86065edb196fe2005a71d9f6549c240048828d3fd0afed35b2d603d4dc76b94f662c07d6da6176966c2fcadd2b603e5fac8271433dfdd269a165928ca521a64ada3492097d2aa9dcbef24226c412489d5033569a54c463b41647327552714969d33252d258810f2d0dfe9434866ebb9ba3445aa16299955e6a15e1434b437f23279548a52fc35b37c4c107a99097c6963ad29f2bdc70d2fb32d2429f298b63c69490592aa9b348878f64440fba806a9309d79032920e8a642c750a7221925ad3a7abe857849f9174938870099589a4e307d255284bffc0df0e91206bb529b41d1acdd679c8a21a7da8cf5c90cd503f335a179bfd3c4964928a5424d28994a993dbbb398b859eb8bb07eb76d63208d0aa0b51a526faee56f41d7d8d06fb7a92f280531ef0eeaed239307466af55bc352ff17d7019bd1c1feab36492ae939b998b941d3ad4f484e5d04483ac0764f343225300ce1012bc0b70e6bed3b36c85ab7d9ec70ab32d0289144430891a614bbb6cb74039d98460b28b3c77d2aa32a59d491f63a9b248aa94b09335f499a8db3ade3fd78d1800b7952e2ba350fbf0c86ae14e2a8da082bbd9f3ada16c8362abbb97c8d6de74331d47d2f01c1150a519654229e9c36e8fa4ed80341cafd28f8c4c442acd3ead86542a61a8bf82ab0bbd6d981b239574d2c8a48428424b2d2d5d4a5351034a269134a58be8592435800d5853b77cd383ad91f4d9e35a857568a555a34426c2c8e41618e3a38c9c705480f03d3ee38e8cad0c0f07c46f787b44cd88941a1c26523cf559c6431def2f152b1391489d95918b5c2e33efe8af2b6dacbbd01d864c94a08d501aa93361209194d936f9d7592d19965f537ea77011b3a1522c7e9d61f5d357424353b497758429da1adb6a71b53931d4533aec46b4b908cf6da1b06a373bb3b985abee091bf6ab08fb35952ac35e95891ada638220aa86f631f57c73130f11545d3e5aba6c044a83c6378ea86d029a91d644e8c2209013fa7fa4b4a0de9f6de1f8ea9ef4147a7d7dd585b4f0d2601dedd3b9a340d918a1442a08c6f516c7ca27e44cfbcd488bae1268bc6ca4c726e076de9da3445869cf98e8f1444b351d453fadb425a100234d6f834b1fa6b916eb9b88fae086174fd561943b34226d0f534696a906fc6fb9027cfadbd0cd4869e9457268a42d03b13784615a1cb78109cb8885c73d30550d32a387f71febc8482bb249267519054a737806ecf00c9434fc8dde57bb8159f31b0d28b550f110bad7d29f052009fd49338859a1b516565a2c5211577780f0ae9566a45dd7708a029cb666bdde92db87cce6bc54bb8178fb2153ad8ae5b47adf41d4ced2d9a8d2120a9e588f32998ab4b4327191912a89c27d5655a8844e01693dbe52566b75f6722435433493711a4967a9e6a8a95a78a9cc4eb6d04965469ad013358e5765acf664e633fa0bf8468b6d940a88394257de5207535dbf3df2528bb48c684ca816b74103271861180ebdc4a2cbaece4973cd5924e3543a1b0558d1781291c93439536e87e9804c93d2d29596996f60a99c54c4ca51770948d980bad0d01c6791f4366268f7f4f7d7abc52c5f4dc7d1f5d565be2aaad69861d06884694ce258e899173a22209dede8f9d62ced966ac8c4ee253273021f35d9918e6301d3978eb5cb2ee9472a74ee6426e80f070b81cdc954954ada84a894642f916966047f8656c041df2ea7d7745e7ba22c881cd9413f8d542c3c480ab0b383a76d87a2d542f3f19c323141a7a0ce2ae908a1a8a055bd39525e344611b1270a8a8810fae1a9a13411f4b147349217fcc96327eca6a575676aa7d67d8b6ddf25619a448353457dec2caf8bfcf25dd139858d1744181039e0222595912ed232267a4d455aa6c9481181209d1953fd5aa669642561611739e909b99948498717680966f4cb2a3c944e131c00663d965ec9d4d34f3aed138b239f9a8880ca2160b04e58dab94a1a2dbcf429c62941f55afac8849689a6e24249e7a9ffd40cddb35279a1a533b4b114ed782d699f288f4791064a943a0ded2550c9a2be88eb53f4c3a1c79195264537222f7dd283e03c1a4f97e3b2687766bc8f6d40f00e3fee6306667af2e47a26ab30fb916a8d21445802556b2bd0efd1fb281f8fd97bb621458c1784feca487a1d49421ed210394924719612601c1629cc0d4a3a546492e4d21a5af4694dbadb2c928e08cbd4c998768ea73da5a5b254894ce99cd35c8f7458322efcb09988232b3dcdbe4a2227339ab7144c6a24637ad1475427b6157d278ccd8c955ed522321b544e86d6556ca88c929a5e74d2e03d3a2de38c9e42f0468b2651380e68fb1961a5b1251d0942f14a8f3354e8f08a4cf9d58974e998d19fa41562d0d3242bb9a7c95866c0775a805b535e527d8ace102db589a436b84d8406fa968ca9219b48eb6492c9349349c68d385011043da7a8156a1e1da48d64c7982e8fe16223503f0dcf57495d53d998a80b1a382d9a045f99394ba41d038c3661e106cd0dd595d91ba2a788ddf5bcd212f07bee44117c1da12357291a18b5ea4e408ba6743bbd39f274505a99d1b16a151124992298f042a229d40ae40ec1294da5c1be22e0d039e7e97c4c0c7e5819430a43b54897d24499848729b5a22a12dad3a81915d39ab226c8502cd157b4b77a2b7f395e5c361b3116ca4ef4993e8c6121e7453c5167fad0e34a872bb6648c9c8851942d1995137aad341598d4868ff555f3b6a64bdd37b70b89a49e8a9fda3b8bf1fbe232ba2a96552b14cda461e235233caa03da04c81c1f1c3898988e08b499a2e50d02d012b99f10e526d34466382f5904c02f18feb23226d2c26015688f0a4c06fa2ef6cce6792230bd695e33a07ef09adea7038fce5fe165668597b1e55fb041331addf51ab5678452a85ec3f40c8842c5dfdef1364e2410432a1ded715ac3e83ddd8c69513beeb3a2b593702f330c3566e13ab03e6d2dfc48ec5ac69ef9566ac578bc62a54f3114a388aaceb03369b83a95dad00da7887044433456220d0dcd0680c7041f7fae65acc610fa65d26177cb8c9083f528eb4175d2a28f158fdd4a8b2a135eb322d0169aad80c2216aa449e9e072fb11ca38e970227ac15f1345046445d898e593043a1aa749b038342b0eac464d11d57473a494cc1211ef6744f9c674de034419ffb29592a9806d9f11f644d141a01535692b9a11628470c6dd1c11f18df9c56823c2d0b18ab4a09d190b3af0153091963a252627e1fd3ce6d927b4973221ab53489088268b95d0e83f443fb450205da2959c965445842a20aba469f256ea54f05430cce8986732a4b7d716656b06ae88d5067f44ac11b16684d1d691b42c6306a5adc1ff997524d53e709d914aa898e80e08bb355b1877d8b35a8a5db3b6133726da20162029848d2cd63644c71a6d9ac8dc1c79e12644e184c3ba3eab83599f3f7374dafb437f964dcc6dc57a235d34ac9c1e56e09cc503d2a79b99624a709d9491a67f429fc5876eadfcb61dc680c0bcdf8359be7cdf81b786a528745d8a510e319830cda36310a40c5db5f8c8c9581d5a49070fa1ab48a6bca865aad78a98b631380ea91d1dc82e919af87aa648ec98a815c23a291d3320cf8c88f15cd4cfe931bda6a4a333c49ec9d4ec2b5abd2904c3367492bade1bdc2f1dc3e878b7a1ce1d76cd3203ad98acc1082b43648237fbcac82495dac3ec10203282670cee02fc908e6de9cd88ce4527bd0a7caddea77deb88448e85a3f1c6c26f2b8a07b45e90a8e3d8a09de9f92831c9cd5126f4c448a34b25b53087d999be3932d2a7421f266b73a8a54de951d4d1282613a5d73dc277392dde8ef3aae868c48dccd2496406fc30065538436a233b31eb484df45a4d7cfdc3aca32dbb673eb30f51c6ae156da8042e208ad6f7215572186fb34cdb505a4796badc5b10d7d30e6a71e1ac0ea2795f064a4c8da5215ad0b258d91bfa22629498224df4a6a1e34b13c9d6fcaa40c918a6d2124d18db42c09210a7e20cb1a5a07347541d115a25e8a0042834831c0914aa6399b7a3c7f55388828059e9db2ac8b3368ae33efd1aa33a46e668918a53255c3a42e9d0cda1b2203e5362cb0c9d333e19cb9476a70033806f181ecb544578a240b38a98b673d7f4759c97e3eb325f2dba660543e86c08ef6dab1407f47e9e96b0850bcf5ab3919885915073e1f9829072d22b9774cb259d729348e311d4a8b8f2dd0af524edb91e8cf3b2985fe6cb8ef54c8df9e9c4693aeefb5aab7008f5cea09b998998101dc79de351e82a226a9cd0fc99222a77d76335ee4b9f831abd91e14e54db3ddbaad03d1d74ad038a615707d37a3a78beb0c2d2d6ec3cf29d474011edb34964c2c3237b17544e0c1d94661b285d50cf8a65dec54a136215b2918ac1a4e96c4f66ced35f2d14890523f6a0f23544a2b090674434a318322adcd6ce6ae28c15911452d3f2f789a01d6cadd095019e48525c47fa506d19366fbb76dc1cd17a54678e90e0cdcc093f8e340b5ec19d6744b855fc03a44820faace0c77c0feb93b80c7a4f0ba6ea2a5a14fc2fac8fb03422dd83e4b258f5b5aeb4df415011a1d737dfc8a5cd1cfdd5b20293c8145623029ca824b04895d07d9554a8214e4002a8848a45542c05bd4f87966686c56c75a8678487da23100374e4837731462ac8ef8da4634781455109fa8bf62b7018295f9428b7d17b21536a3c5947c9c068b7bab4691907392091f06066d3401e43e760a4dbdb680b42b7f52600a90be81ebd3296cc082930f3a1baad6e74346a9037660074acb8c2320290f7535ae78e98f29410b213a98001441ae80308e4316d5b3dc2944eb67b0a3aae3753455946abc587d6562c2516c5cb84f61993832c23c08cfb96bdc57dd6d4800f752c4665c6d0e0d3a69bfa888e989476a54a89e533e0f12cf3835c2dd7ca33a3f99e0b3dc09261b188322caca7032f851997d42a9759e6e8afd1856a4212664427b7506622335b4ae78596dae6aca8e07219ba4c1438cc8c12225e937d0b4461882bcb085518494bf284d0060458c4624933867789006d815f29dbae10fbd275ef517cbe8303c9802652d01bfc8b7863027a2abd02b7e8859190e0104c217a00c14c873ed45d064fb4659918c4e0d04c6b8c5566444b5aa12144b06847da14322c65401f48e3e84196d264e1061e3808db61de964556f21270d2d1527e2c822698f566dbe40ccd1991e2cc81462c48b69a38320217ace77446cc2d4124a553c364a8072c372d028c4455b830dc31286a821f0f9dcaf42b0df052d4cf9b233a6512a94191242c50b3c49528482c220243802464979987a4c356110005d10e41731c05a935c8474f53af2128130401862368356942cf9461d06a9624846d42cfba5b0df10c5ac510c1208179853077ab2d4a13dda6fc08aa1243b4e98091675735717f65ca0d9491b45f2245004d0d9e3a5af60a8a7f7742db811db72010316394a2eb088f20942794c5efd47f37474ab4e66cdd418e0c28f0ddf60a44e07b029e95c9a75863949189ccbe65b241586edfb22eb94349949111666fc0a642b8fe642e571d01e6a6e26ec0d02d93764408616d6f669e36d3b6a272fbad75e4e0d3169900392392f216b266dbd941a68426b507da7029181fc1ec0f61a3086e70c4a369228d773aa610619642c698d0a1649d7052a9b58cd5be9346d139855b5ed04945936e1410b7b552a93327151df410d6ed4b4d6b15f04fa457412fd957f32af02486cf01dab4dcd8c8898418ae947a9aca8cf87735868c90d6042d250b5deed0ea82dfac55bbb4acdb06a8bd395f7505100db15693eb83e4e7e6d0d67a87c10ecc979419b05f5a5363491981de49cda18773763c648dbdb532601408a52b7d8c899c225ca3816be86373a57e92cc693c29d6cbc53cbac8c7ef3fe4cb86214f60bd06e33158840d593aee32bdf450fdeef6a4de046e4fd36f3b966b9f822846dcf381216e90d86e981581456e30838bcc1d3a6b9892dc89fc2d3bd56eae1abd8193b8976f17cbee3ca878c03a63adefdd45229c32411c918150ee538dd0329101a7df1eb46380a5da1e55979bf8c2a50593a17d4213229136118453124d04367591f80d45338ac9a009da69a479eb62e9f31a316d3fb6c1b4d1408d1d78a70c6ff779f06603a421bb4a1118245aa90ece101bc6c675cf3bec09b04656777b3f25ba128063e624b024fdf3f3768885f111d43f736f767b3ba0cdf74199ef832edf7754f93e68f2fd563c9760999384682e4927984b1262b9245ba15cb8f968c0e2598964183164400cdbc6f45d8c66ee6fee726fba7108752891dc7cb609c42747c2c97683af67cdab4482f808a35426c2f181f569bbdb08a2f3eadd6d7977dbc1dd6d86ccff37777776a8767a20fecbc0b11f4687b6ee7088874d64930c88fd3bb41fadc95142e828fe74746422f329e80854fabf0e445b54d8809391a06d90a0a5b3718889d889041320415892dd1a6486b024d50661e827b33affc540dcf2c38b8960a2a5e73dac84a88f91a92248192c00a62125d16d2814a0722d33bbafb4a48328f1308fb584c0540c41c12e3fe4b186759280d0c008172541bf1c6b965cc4168c11ec362cae748a2fab6f669152110ce83c314bf7eba7adbb69422ff53fb493a205a863807627a12cf22ebd0a0f46784366346da9e02bfa565932525a280f7da296699c8c88b5878934ac5c627b73e4443c32d2d15a22de195236faed25317d2a2e89c337d28d542cf8aee90b61cbe9d5c5a24b9b2ab1c5714da4d6fb994c536989f2b0901139119f10e3272d73a043d10bd66ae2ce82d14fa4d6fad09de9815864039e889fe6673c2e17d7975d49fb1832ae3882291be4d86a8f00521b47832153b094d0b41ca4317b463a049e51ad4b502cdd7e0c0d264470895090780b650f15a4672a1834b0caa06a740b91ddec1d0892729177018d3538489528620676070a831b8a839f8d9266afef4244733f7422b70e445f46a928c4a849ee02b3bb179853e9a070b34aa696b018b628ac00937d1894c64127ec45269cc8c632862c4219aa536532d6fb412a4fac432a8d67d68111458d24225331c61034fa58b0d96422932848ac75536fc4154741ee99c238914dec606f2db4b4c99e9199a705419fad91f03886ae69d75ab8beeaae84b46644f81c4b9a732c11a9483ee31c53310eb2db852aeb0802882f39c99486f6e853a73f37507e98ae0a2486071316938b60a706e3cb60d38aaa53680115e15c3611d090be12be37823f592268819e78793b4bffa740aa84bd04bd87f9f5985fa3599495ec2b0723d71878cc8b0ce2d3bb66b2632fa95ccb4bde2e1516412a0c66b28c82f0fd1f4dbed119316cd2df25ce1bda3c66da3cfe2cda5c83f31676079b7033b3106bb2262a4d20a6cfbc4c55190557a598e5f5b1651b41e893368591d8926cf2eea02b4855a923157314b6d8e330566c6949afdf7e742c2e8b08a6a61b7aef6dc1e35010548467d9b6d9193ae3eee9eabd6d8c3464c1d3783f6ecd87eaf0a390afc3f23023cca2e9f44ee9ab0a8ba426f18716adeae014f8bd66c1574c673733a80fd26164a4ba3a1045ab3dabddba86fadbae9feea9a4b3e660aa225e84115ff626ef5d670baa0c26359348c914da6bc5b69f3a618f5a0b03615b2a42fcb00d65cb3885af942937654a7ce22397696ce8afd933309dc3cba2b62e35aca3f649ad102432d09ec924a379b3c13c3fe5ffa973be6bc6e761c6b75632f56ca7446b3e716c06aaa44dd01afd8d61264a9b288b7027ce443c52c160881617b69821628436654c081e071e7cf16071e5e9b0835e31ce0ea987433df1b026b4543aa57f13c013ee5889d409a1213893c4760312aa86670a433d8265d05e2ac35686f4883d1000c8ee4c189a759fb08e1316c10c94adbef831db6c4bb65d26a8ae23140569ae6018cb86b030eb6fa02071ba65ec599da1793862c4d9980107d8629ae3ac053b90987100100d1d13136032d4119fcb5411426b8247a68468b39b5994482dacf42d03d3b05d554ba488964861df0ddcebadfab2ccafaa224236b65afe0afd2d70ee3d44d73bf596a9b09f242dbf99e1524b9732059335144c2652917d863852a9cf9647965be7340777ce3f2eae7ba1dfbe624894230b8bae3333d16b15dfcc8c880f5d739588f8303d33134f57dd8ecd38a15013f762b04b5be6aa7a3d7c08b36c3f85be4a0fc42718ea372239ecc3e08ace05ec3e182ac19a42302f897f7c490ca4a54208d32d5244b2def7fcbee7f7a1253af1fc4282f7337e3fc3fb29bf9f34ef7774d95dc5f4898ab90e42fec255acea16b5aa5b69ae074fd33e5caff2e5b4e33392c80c1e219f14266b1da9a183d710713070bc6f2d9c0173d981583a2a26d6f8ebd517a37beb484f2c4c2abf6e6f376a8f541c7dcdfa37e6b0aaba9212f01216a648f07049a50133e43900867238eb9d624f2d2dbdae2299d0f1efd8cbc68375a1e2d83e5ef027d320315cd4f8f17e22b5911a8b370bdeed3249a476a897c860340a7b280357184f9ff6e608dbc28e3c9d2fe9c4c8949019ddda18dbb2a8aaa26b289d19da22e6ff87c6ef2e2836bfae0265e7019611b99ba1ed9ea5df62fe76ba9c75d86e16c67f72f4957b7935dfe5495d46964d66cca8eec9cdcc49ad85810105ad732363b83dc6898467bf2102ab95ee565df7f556143c66277d76e24a8426b6d29701abee113224ec9b658d6b6aac70bded895eb5e2e871cc860ea08c3d13b51a5b5005b8f4215d2dcaae7f83729db3addef2f589d43aeab6abb1f6d46d8ee48ec72ead2e77a8d7e944e93347a7af6f8d97780668023ad3743b3781486d3b59181b3818a60775b6251153c20a7f3373c2b65102071c8d0fb31d2eca7de0ad9679d5f540a623d94e600437e6ad6913b80b03b13996de8f942554613f93ab19a958665668f632d2306a94a98f180ec43d387f26d3019ee6300916919b8c047aeb80b533cf021ca62c1582e00f7333e6766e46405ecac647d6c92ca29951d21ef63da3763132d68e0967db441a4dd8dcb17870c47ef4fa33b9188e59408c8996dacad4334233563acf70b82f1743fd73502a643e625e8820cf83ff54062652639c7ed6d03a93191b91da0086cde6cf12a9897549e9afcbbaa474ae116c7699d0afd3cd25bc28bb11c70ed3b59bb833a4987087e9da4edc99b999e9c8fc03b259206b84d2374789308766ade2893deb7150cbe272ba8ac65dbd87955906d9ee245243e29b89f203b91da84d27ee23c659477e1229bf264c215d2f7e60888f573541f536e21cb616f415c4a38e4de989188d276a7735eace6aba6059b43457f685c662698813722f8326cf0636e6330d9a52f105b665d996b9d0b2633ba2852f8927321171e4c48ceb48097f68469a90bea7439e6dc8f1a9456dbf0e3b440460df5960a6ac887757011b7915aff5a159f7bd4cae2f8acefa559965f293cd798492698ca81e9628d9d84a9d9abcad5b66991671e9a4cf08f2dab99b994c1c20dd168a9d97c6acbd4c5bd37c15a1bad4a723441ca377ec592a7592945e5a0baf689d2015894cd354c423707b54609d486b923242028a88c85abfd736076596d56756ba74a3179b0e2dd71745d44d6765859e747b1e0b76f5eaf45a8bf88c8ed1bc07e0893aebded1225eab9ba34c2ae3a577b991710ce3f6da19840147bb4d8f65ac5219bb54c626954a391983e6d29f3605d2d3d1c0915a89f7706b2bd53de1ada54a11ddc2277b5a6638c1e9336c1023d2b14c7ccaf215b8d464424732f1f6e648115c89f274ffa0f9e1d4ef1d8b3be39d2066c77c168006e642490d971c9d1a80cfaf9db4fa3e901b292d95859f98fb4780029af489dd5c91b6bff87a105bae8bcb6899cfdf1551cf9a1d890a0e8d54c479a58a3d5514bbd7c44a388efb6204e2398043254295c836b74f404794b644a65e64d2248296352c088962847d7f0947c1344a88fcf23236ec6914c28f1013a08853b14984e86399545ae87d270deb7a8c34160141097e88f835d21c4f744b695f7da2f26338acfcf8ba17afb1625cae89f4d1a3542248549c94213c86812b86be994145dc30cfa966ea89d8033f62db9a71247d06551ae101a14bb0b74ec63ad232a1916abbb76d6b421b0d2aeca06d1686fe55adfc1654b36795449a4521bc45324a1142cf210a1f14de38f95208b275068f7d56d186883ca81ee9749069e74479a12c6e7ba14c15817635113d252edc880e29b3cd74b46c4a87b99aa918fa5c7a0f147596464c3ea678d7d20cd26f011f2527b314ef5bfaa4df9d79baccab49cfbac4ed4cccd3f6a32f5bdd951663f09d998d7665ede884c4eb442088b4f0ecf85bbb7856b58b2756319dfc8efeaa48f366d0c2fd17987421e0ffeddb4a0c8006c1b53f1588dd695ce5179d7805a9b063eeb8f004211fe98a07a06924fb56e2c0d182015921f1a2a6e1dccc22e228d3b39421cd03c4a3aaaeeacc48a7f7950e3ebfb0c2f1b561b395494ac88a182e0b287a0e507a5b65595b998a9bda14a2a3aaadfa3a632eca6255749c42b30ce6553b35e9b53fddc87dbe6ca9b60a68ed03064c70a87ea56452f64b8a410d6b57430f623741381ec55afa615b829b59648905f92fcaca795994abbc63483e8ae1cfe647a98889ab73a543acf351d2f3b7b82c96d375115258368e4132265ec4279348a6760cb906387fc46083dd5d6c7057230b81b4ac2de6d00f88eaa460c5622b4486f23049a0a32b6671342175f6698dbde4dff8c86a1b2527b58580dac0a35a6a430cbec9e09b9b345e5508082755b2275d5a239498cd29708010f716676c80a8d93d129a67c8832cec13895dd7108bc41cfd0b41141d8781b2298b8c0c87ca82e2d665109d53753a43fb564b9b55d078d2c0bc95aa0437e6dd04561a8a890118ec20e61f8b299447bc03d68733383dce0deb21928fd9499a1833782337b6433e7835c3dbb864a9730cd54bacf9c2b31b7a300b09573604e712b5b03ad80ec1d959e7d2cb46ff6aa9c4b889bcca61ba1c75b942c034ed386e1a540c10e543f66a097cb070a45e27f80c21e7b2da5d97438b280c36f108d9550739c910b1d6d2e095b432b388a5504a4f349a331399ea5222fcc90de744d9ce811a62f5bbb5d287d93a5287c9b666653b1cfc401c0f220033c4faa131688eca27ad87088bfed744794bc4e122c02412ca7e4553479fb0f94408c33845dc15cd4103354c5d69b1aa40306625c7b163db4608aca58566cf69e9929c7307d6c4391c21c788e715b3c411ba86100b2f08218970ca88704238ad48da0ca34b1514fd998753ba520852ecc1e4d024b2255f02432fec5a858d6b148770c39ddedec36ec2fee5c5ac1daf69ac52d802fad6dac386d835b44534072b0578e89bed8d4cc256c216ab933a923541e4bc43aa4bcd11ff68b3471ce414a8c44500aa054deb233aa114db4735b11aadd46acccef886c341d860978c185b683c950808a51158c7b11b378ce00ccbbe4d02507adae41c5d2c65890b843b90562270029b50f1c470483d8c0f767a9645c590297b4f7ff59ee397690df015a06733a9d21c61e1b2baa0a275380e73e5a5d141ad42c84bc100cd1388681162643c58c753ae6a4d202258788726022aa7dd08251fa140dda3678aeafd3d32d96eb1275626ae8cda70679f93a96d429d412dc3b14c6e916ac66d2edcce38a6f9bb653e8b56cba2ab6b49d7b05fcb0eb3b53e4cceb243b3d687eaaccba552471cc2a3e889cb7b4c6dc8b9a7fb77d75d9e5a0975d895abb03ab75ffdcd4c21d4e3ee6a2691beb39ec8df5dcf6172573547c9a7d7d2930b6d90c4d325a798ef7b4ad17acbb2325244e2d04764233ff85adf17d18326a3f7222f2cbdd62787a6557ed1ead35a7b86cf21cf22b66c057dd621c91462b2d3e1cf3a400b7ca4cb289506461b6e8c30ec591a8500bf082f8ce81a36b9997901bb26833055840a2d3f419992de474d6399804b84088143cbaad01cf49bfa16827031beee5acb645f10e7ca8d3201231d65116fcaaeeda4afbfa85b8b1657c5bce360bec36176cb56ff8eac9208abf49949247c6de1ad891954832e1588df5a0fed90285044d2164aa6e340d61827890c967a1048c8283104936a922f8b6e5647d6b850536a1c6cb541753a3ab5359304a0e38ccc2299eda7b022b5c4d1299924f4354aee9b4c7cbba7a9d4e06d0d9be6694307a6163249d78eb320dd911853053d85b93343ca08fe1fbbe315ec72ccbf5c9465279299962991658e4825c54140894e0af296d4f2b181cd44944ec23a5322195dc430463887407ee0303641c6846288274b2f9b28244dd34cadc04e320221a7eaf02844979840878392213ec206eec2f035f1ca1c4fc5713618246736a0b031e408f1d2415e20c085e1503f1a543951c4d42b8b7aade7a8528a056319481022433924b56396214902c98969209ec42118353212109d9e38ba4a116fd94fa8a110f62c28bb238ef54a40d53c29e079d21020478188c29e43f0678c5931c803415a53763c09caee8ee7a2649c32e54b4bde72a00f9fa2274c0b2a2649a1ec05f565116948265e7a7e2a18c03a841a46684c8e46e838eb05114099847205fc24584ae7a9c254078acfa684ca5364c3001598641cb8c72884cb7688648b00de29471e7408260dbe264ed980d669f4ce7124616ac567d40a35c1414311da280321ad436810044947487bea9bc2ac1ace47ee98d302b59c40d4902a8e33048e30311c4b5d87598198d682b763061bcc5d125635cf0f329d076f07cdb1932ddb118221a3a68ce2a23e0da19a943e44be76c2a78a45c4ece2955aa21c9d26b637e3c0fa0a62014f3dcc32e674bc226e5027324e087eb48f8957d8ed7143730a357d6c30eb712a99f77675ec27420116538298989679f2d4043a16c17f15c7ddb70033ad3a0d731cd0d821ee970f3c44d6c73cad17b270b91126a82462e145e7aa4fad2cae2fca22e2086903597a4ccfeb65404c9509b7f65fd395c50b3be832c74e2cbaf162d1ecc5a26ff36219e86b22d4ee9c9e3d686ca6d97122990c8db41fea08f203dd58476b910a7dcf60474e80c6d2874346655fcbad2f1b18ee40a095849d4fbe92b1f9fdcd04606c5e47e01f0cf3a2d43f2dce4b7a3bacba2c01678c43fc5bfb399113acb0f75dd777c545e1aedccc9c88bf30504bd27428e10e259fd5a12dcb8b0d38f678a48c43430ec527b82b7ccb975997941c662545ac1023b2c6b3e166665ba8dcd105f6834a3933db3f3584cc064cdbf00956a4c321dfa076f912ef8bfbe1392b867696edc2f57e0eb177bb937cbe75d0a637c9e5e2fadd647ebdda50d023214f32b13276fb0ae7bfa9f3541011253221e3646d659cec59616b8902bf75539bb737bea61c7eb6ea18da89d6d0eeecdeeac6c946cffbfee75f2444e0b401994c705c8d1bd961b32c0993060d858a6a5c3a48252828b3687a5b7fe4330373e49e6d70d59a04bbda79194aff418f42ec1aa0a484ed7d35dbfb7601b2ccdf45937c7e591603c48d16bbd26a0e6b9de39d7ce62d9aea4fd788cfd2cfd06e7f86027816b22f7e22103e43c5ef0712e7de5f3bdd99c74db2cc7fc62cdac87f2a748fbc50bbc43db72d976d8dcf3f6689fd73da893fbd9dde2c7ee8dae272708c8dd49c8c6bee9f5792198c5dd93f6f662c2e96ba8c146c6e556d98eef17f52464a4568cb082753fa1bb382d752bd50e3b0791d94f2c13b0d0a3722914456b1635be3d7062a06aea910e58c600fa04a6ec1d2b8a5a2e1492f13e94b27d444eaf13d46d683e6745d44abe9ac1ba2005911123f012b5a823dd61236ef2ae40e4b7c934289ba0bad5fccc9db248c3a2d7d23495c8ccb7017f21fd635c74930c6427a314bcd2408bc70c8a14f83df7f0a31419acacc56508ef2ef8934e988a3b5119bcca6ff5017ea35986b0f7145c35c1b1b98eb898a39aefd6081333e4c7cb06a43421d5db216dd24d4e8b88e2890421e435f192f3e4e419a212717a70083e981394b396b412ae249a4ebab38b2877c1ed6ba6df6c0286502c719b30f8f0618d4197a069be2493ac61b02c2914cea449a64847ce2d053229f142c84bb737ccd09ee8b9e1eebeb247c9f11adf18fc84def27694fd25e5c4e576d767eed10d0cc971acc0e7d786828605b242d2d589b461e398f939b23d8b1589965a59129bc60da6210b0118ccdcd4c69a91d9bf5f3facb34024d6b2b1d2c1a6cc88bd8b6ab420d76cc424b0dc952e2e80b2fc62a9299838ba192896d3fbaa3fb6b316e3941914dd2fb91cea6a178e1697b6fd239a3e5381c7d6273dab6749443ce0d9d91cc2f17cbbecb22d1ae92f048cade526796719bf1212b6b1024a71cc220616721945501e718150476597035ca0e33996623e416b6b9cc2c2185da194585d00b994c0fad74adf28e108a9736a3be08c589f3ac95294226a0219b8576649aac95f4ae293a86244e71ba37035db6b459054d3b47c1cfca50142f72dc20d8c3b0803529153086aa2b849c1b32567a4cfd3af45295dc7124b68d33a8b92df4dab6827355ec58ca8cf014048e09618b4e34fc00a0b206a10830854c91b8992ce23609e26799cc4c5d54e73225b0d61521e7608c4d0ea97e0a5fc45809cb3ed2f7a3e535a2a180258507177b850d8a0f982007a31c6231107b3428a069687799b93af7aada22dd8bf9ba2817579d7c8546c67e9dc9341d41709b0abe8598e99915fa50c9d8230e706645b877338b3ce7f37740d921518266371923b5ae42b4b734f0d67ae44526d975d80b652710c18f548cbb4024c01c0918a4d88b9443b6c9cc9e517746e16e7728cbbceaa67a88e1ec9ba93291de44097b6a8158803d48936068a4625a5cf0055621de7f1ae2fd67221e49a344c6664f16a40a07ff6fb21939e2ea9cb476924aa543d0eedb93772532f3258c636e6650fd623470ea97a92b2dc1cc8628eec820aba2fa97ee8d76d9262bfa3235b642247cddcd3984cb64d2cfb6555c2f17ad29a0d3845c09f9a990c9947680854e0940c6299cf1fc22c5610a43284ddb5d6732f3b08f4a61c0c7d91ee80851217b2fd6516d1664d8640f69ab74eea457f0cf6e256a4453d01b9e884858e4458892c32468c6467c2976a326c206245a268dc30a90a98e744877e0588d9071a799fcd232f687bb98be898cedb89b84319816b9da720a03a41b775463114d0d3e194d0ec8dcc36b55b77e1a8e7a0493d3f0c14f3084b14c52567ef8443ad82500d0b52333acad584042d8d72721c506f4a59980259892b12983a219ea6724cc08f1a4546b4d68385e23ccf3bc09f943610821913219aa3117f26eba206353e16c88c242a9585908db3e146633b68c154d84d06d886196f8c3ad6086dd9d65d9b202a124eb3ca0c1f71eaa5498b0416b8a5b0381e8fbb5a566cc49803813a803292413cf44bce55527ea5e034312564cd7ddd824c52f9c1ba339ee69353a445ab83b1d525ae7439ad9a0aef5ddb4375826492413584953a5132793ac914536ee8b552f73d0a19374d472766db75121b481097cb9dbb4459e55861ec9e3628f44ae4e1a577272ce9b59c286b0e9bd923c35a33a228c275210280e894b4cd7e84db9ad6c4e8e5064d0342a37899cec2830788cf0c984fba6740007ec6cf9856de0c9a4a4e317c38c33502f9a75a686a00675be8fc20daa294b7bae46c52fe3f2fab288968b0f9d8c19f10e9313c332d4cf8a1818140f90f3f94fd7818ccc46c6f901d2b78e7e340a6276bacea4cef639f6198c8b328e6ba76284aedced6b34c0fa7493552a4bdcccae3277b832cd22152587b7efa689433ab4b8597fd55096b1e297ab7c7ed90d036591ca7550a66fbe864c5f358c091c28eecd9824c498e85bb576f74f7df0a55abbac0fbec5b2c39ef961d0252103ce8eb8d0806d1bcff1b360db409603cedc17b2fe66a6d480f874ad0ff5408c9d5e60fbfb38adef0abb5b7c2ca2c5dbb77d2b464ee01a6cfa113239973ed1f4d798fcc2c67bcc67a40f49b41448204f0839d1b418141282f95ccb2c49057f323ba065861b88d620d8dc07a2166246dcc8218bbd96668c543799cc4290ba445aeaa0d4c8c48550a10802113b7e35114c9439ba8f7c54e1a09488a282a4fdf0764c91c019cc8f663b6a8e2812727aab062363a03540ba4031e38626e9e61dbf99c19885e8100edd80650e3b22fadacade46adc0c381a97f97485d86561028864684601a3e0b8650442d4298024a27c93d3208d52cb686a17d4ccb89e94e58ba38b82e1822d7091c3241e417106b9c959b43eea91482d984295203af0fcd4ca4366c0fa4e079a36a8316260b83276b9261df78694069c39c0936ef307c622a8ee37f04eed4c23a5fa65bc141b5e6ecf860ed91d0b8ac7362db48c5358010c08a8e263816134fda447f61233af878f207f3a6f413ab6f2c7d080e92b11915a8f311b22da532dddc23f38e0b349f54f7c36163f6efe9ab7c771d9560c05c2ae0c36a386167467c56d258e4f4f414c892da153218105934ea9bb09ffdd07eb6b20e79dcd9cd6c07e81dcb91d9ee97ba46733b661e05647508e18b6ff86930b81b0a58efd3b470d8672732e4ac26dc8814d47b46c648eb17c7413a20bcb4c4c9220d69b08124ae9d8de6224e3bcfae26b656261045cc2c5782fce3b162f9a1f658dc604488dd244490842960d6a35edb60ee786d6b0686cc0c9676306956cc5e6269c33c91bda40893a4c40a2947536508d3b81629b91e520299d4434a3078ab91122d4862f87d06753321a574032959f0381da4644206cc5d4849f571d3cd11609f8d87a2eee63caff5be61ff9032bc3d4a642a12f627b70c7976454bb290e29876b9633776c827b68e978e01762ae3585375f1d0891a13510f7fefad27119e10bd9fa5a9cc123d784439fadb5ad48e60e721bc57c087da43cc0b21630adf12c3b15a1362dd53089f957391954ed31d677dee651213379cc4ba45b43485b107a6cd02aa35a9744877edac9759a6f7a942413c1d2d258fb01329fdb0c2cb2c66019cd4aa5e9af5dad4b94caca6bf063832337acceb1329e011f15c7b5816c02c340dbef2b0cd4f685da6d6639d22c9aac64aa5f3d3a7f5019ad48bd5c9d8d230eae56ae82ce290a070deca0c944134f160e34d863c8ea9c5ba75f0ad4f7a2bb75ebacd816af9145138c86e39521bccdef9d308bb9aa529d07b8a90e18cd83bd444e6224228f5fdce5371f7532f6e791a759e7696f5dbbc5a6da5665396559bb0e4b4ecdbe8b5d4a639ce473837f47634e8a1b720cf2b2327ace0edbcaf25d0b955b021833f765ad169eb323a7093644d6f8417420abf04522e4443f430acdfca9fa8d3d21201607040dff3b55db9c5009ccd74691ccb9f25309eedb76985254959cfb38b6cc05b7b324b69be6f39f0ea546b0964de0622c5f5c06b66e8b5ed9c88c12fd2820d677a27901ab03ad2e97692b55d2f89300e06a4669f3cc3f6be3ce22ea88a8e3a2678747faa8046ed54f38f394c712720b1b88d0542a87c2894b58d1c5c47eeb021181b8e494904b5322211c9ad95e799a8dd05b328bbb362387cc39ed5ca4c73ba8a5d1d07e681385519fe7f03ca51757d518d97d38b16e046e8b16227530d0512f6b9c72907818674202f822dbf9289df7730ce772238c01a8eb1719b90e14823e6dafdb38fcfe0deeda531b9ccb29a6885b81f069f192d76225d3bd217dd9a4404e708a2f1d9a83eb0ea9cac3758794325c9b1c96bebab6e5b6c949f89563187103e6c87c5665820774b0d3fb99b999189918e905c6640b031561fb32b2ed319c6444c26ec23709fc824a29ed0728f357e6c32b21bcbd2c103c6628265e6222fd39b23b3d358e50b573e3c9f648650ac7004d134832c7d0e81e91b0d018b7b8dd94b6526e8af46405f69f3200b0a916c8e9835af5834eec0307bee08fbc9c02a974eddb4ebf6f5765aceba718826915beb437f361c3e7b4bcdec42b0e0c9b6a7ebad61b4bb2a9dc38e65055db8ee4528e6853ff4676e62d7ee6666c58056a853075db9de1597ec8d78d56ae494e1053e89d4409ad8d6f2de7232b2449da9616b54b6e385d876c88e17b9c546ca42d430c4e30de45be49e46ef8ba2ebcb8c1c1a037236e2497aa178c11df6b206a9f88eb441f78b7c7b8b7f8183ec3532d1b6afe4ae464744ecc2dbf1b3e0ea59ee99a8c8048f0520171462062ed9066939adfa86e71bab7aa783f7b630ee666622ffaf36e89911e95067abfb8d334403fffcf7b780be112d4e6f2722fb2f071912dc20ab5ad8419faacb5048d9e838fc8e12d976e62ea5c45090a1660bb20545685e7c862b41ad46119fa7cc5196330c74e7afcc9b3c2c8dc8ec1ea743cf3d6ec0082dde99007dd80815e1b3cd9ab88fb1967112c10dc1811094892342f2cc80c430d047479e23b3c426ca44dc1f546b3d9949ad121123ce94f129fd092dad072b1d5bd0441c662ab1c2499521555c224deae84746bc342cfc1356de2730c54c7d44c074c24b05f18ef22e489f520bc92afc7cd3c8c3ead24007c2a9e21381d33aa3e1224488e7040a6c329010184111d844a6c4951215885c659ab852c89289568c331d3999206267965243ca599920000b24572e830b301d4a2e71d2aa7d433f0491654610dfcf226604142410f521584dbade265bbb7917eed83253bc9941227a97ede24902c3ec64200bc1cd118c2f9dd4c3fba389cc1e2c75772aa282a5efcd8c76a6e36d38e49818caedf250296f6faf39f56749e406f5533b5eee8fe8965ed488a51dc87d867d2ff87140d3a1b459bbe679238fafdbf744823b641fc18fb46a632c7672e4745298f6bd10ee1bf870382bfb0e9cb52b83c5db727175f531ba9c56effb59e2746d3db7299a5786b364fa437b76cf6008dbdbc10cfbc871420677a8cf36dd6a3af6bb8d7f8d47f0527598218ac4c6a83e4417cb7c3e9e74541adeb28a9e16289d90a934d6ca34b3f44d1813fca1b4b0a5cbac4ce106ee71021928a53d5202224c189cf21397cb2c31f417246dd228787077d84d08d5d354c616e6d35e6a699487afb64c9423e62bce84953131c42ea3bf5a4c6d5053a2e9afbee7b3546aef610be90c7584fa20c3fc500184aa2740ca18d1df63d389fa8aa5dfaf53509d112a85d57e1c13716162479f6e401469a5066fed9d399459966d042ab65279bffd1a0dd1437cec4a23ad8563a767dd9dabc791d15f3312a3a036205a08b1cc52e2af313a2f13044d28ad8c35bd9d8da5b6898ce354dacc4845609026c05b27565aa768026552423e6f656c7dbe095ca310499560c61f7c1f3843c6ae3fd9005924933322ce1c427340521c6f2dc5627ed91ed109b4030622488f3f9d196915be7c6aa9539efe9a5652237de6c6b0b24b718e455aa61927544b2323638570c370224b32a9bc0de11a682d6674ea53ad9943dedd506b96214a0efb7924562a8ea441ddd01c0b43234b99d7889a81200cca829ca3598758c2406595e11c4ff887829019c74bc25b29cb3c17c9323f71328531730a9b74089f10e900c1a1b97e138333ed4d40e854ecf61d5b005b075d9a1556209784c61c420c14a7042da933bbe70c6cb7f019e4ac0df86f8e147c5ce318e22bef9226d35942c899c68148ce56f0272f627e928cc31b41f482e004747ffb8dc86c8bd6694d94d379d10659a13d2332eacca1cc92645f5acb979c78d66864bccc32164a1368a162935992d2f7e4ff65ef5d9a1b47b624e1bf1236ebc131c43b6299c60d17ca559971351b164bb7a0be642a2da9e4edd6afffecb80740908428a9b27ababfb1b6aa14253ec0403ccfc38fbbcef42f3a1120cb32651c75bc9136be78de49f11579a830380e65d11d20836c3200786d2bd08948f878bb34201e03c2f61409c8f915ddf51c7f7199b69db36d4cd44bd17956c40215699da33685360d7d66754526a9a3dcd1b82474fee8bff38a083ac67b4cfdc2a9afcb46df18ce1b65d037e2acf4ed800d1961c342f617ccfaacb33eb6fb81e1c0fc59f5eb2a054ac0b7bd0a6ad6eb17ce63783dd63f1e4f4f8f13862d8acd1109c280e9c209e26783834ca0dde95a8864bbb2498a8f78110367078bc5ab2397ce2367672317df1c397735727e1c393c6ee798763d1b74830a3bedaa69e0a671eb0bc7ed937b1947ce4f2377b135e996af8669efb837a99d9a7494c2b837edc7fb73d50dc00dde76a46e91e8b1dea62fb7dd0c295d2e385d3bbc22dc4c37df989dce193c66b7d44e6de5837a554667f897cbdb9daf59de864eb6be70b2a5c20daac462c6c71654150f5ade7031121e4698da523e93dd13b4d655c70cd842f02739890ef4474ec7580dac36c9939308d220dea7c70caa7179aade1a4fbe02e990a027adfb926fbb1397040025b5c6b5170f29cbc6e1a3268f9e25b9882b1933a3384985289ba81e5c74d083e77656c1c48ae5994007953bc91004a841fbd96a3f17354a63d27f971dadd3cdeabff3fe016b2cef815cd2d9566e2cb65421beaafd9a00fda9454289e8562bbdb35757d5b644bde883274d7dad797092ebf6b6638258da3c16c56216f177966279ecbff3bcc464bb39eceb672459b3db7c2eb78610a4029a216401205043a8a845341a42057650841de475ceb8a4db677db03a7d4c92feda8c85fda88d59b48400012b379d92a2eeb9751310c5d5f3d12449bddb89b3153b980fe073f5e030f295f9c5082ae2a2733633d9ef1f98364905b631710c5ba945cfaac966f5ced3d0bee829f492f401c1a27c696a075e0ef5433aa8c5ebbf99ad5dedb53d98f5b6606a43e7bbc7c7ce09d8f388a1d606c8bcdee669d402a16cb7e6362881e3a03b8887e8b08dfaf37a351e67e1fd68d4a6d60d6d447f809c0efb1f98bc8341196b941c1f8ab868ca0098eaf9436dac068f226571097a2afc087aa50b83bdf9847e4d77916b7cdefff1f8a3dbed9fcf5ceb1d616b1f70fd32e485f2eb4137f07e8d7c4224727199867c51b9d10f36dda5416a8dfc763e766d2f3645936f8e0abdc5e2b271e68d573ab7d6265f0bbcaded5cac736cc5260f4084c5d7af45723269dd8ffa12336f5677990531b88728c166a36659cc88e76714f4202e5625a768dceb2189435df59b1a6e836ea675aca63c3faf87285871eba496504b67374d80e9ad38c4702581a717d7876b09bc415fb81d833938ca499f502cbb43155b80966a45dd72aac312b5d51a116fdd03b08f5e87235034b720472b25ec9dee9b496c1ca4b7000ade06f7c25566b8ead6b887c802aa8c50bb90c4e1a7bf4ed00fd64e0a65acffe39dec5d9776245eafac73202df3c20c054fe51f33b5c764226df2905bb97ba64e0a7fa975e82496b666dee2ee7f63d1e8e5f713ae14f3c8e18a1f669ef457fde52a90936f45f12702a7cd7576ea788db4491c15d4be8f959f6ada416b68df49953a814e40520898a62bc089e80a2af556b01a1d92a1dc17321837d77a817131bf032a175b28b5078a79207aad410a238f45faba8810a6800355de1adf8b45603d2001bd38f737ded77fd24cc6cd7bf10ed55fa00b68307062a9726ea59ed4476cddf0ce428fb37908a25575e6a92190f5e16f5cf471595bf82f13ab2279f7ee647ef350da3fffeb9cb587ce9175da4b282c68557e00374c1417e3ec680204b681092d09fd7d06a85d8d12d69333187b01d707dfa2f54d890057f0957ceca9a96462783cbec45a964a57a0d872636c6d820d84b425e072f3ae114f90f73281f7d24a0e5b506f907f8373b1470e13ee1e7f8cf1fa9e1ec92a4b816c91c9a22306056ed49c0656352624944a46138832d35b765d134f8abc51282cb0a250ed5ffe44bdbaa1d8037ec9f14448ebc8179fd0fa002e80de63c183b93409c8de1d284563052e15442236807b34a31abfb2c35950ca9fa7868cc38732c57a7888e3bd89e5ac6e5ed51a7049509b10968dd4a9ce088418ac58163158a971452ace28111b49327c18ac939a8e40505346d136c87bc18c72a4d105e33520e735ea21e03d0a0c10edbf9b54115d1febba94359d674a24aae1eeea3b8be9ed24f7bb64715c474fdffefc9f85f43f0be9bfc9421aa559870e0b8035174ba248948b4076cd8c10c2425d9b51edd9dc92542ec93fcf492a2d301f701ceee93a5c2ca26f2f73f89887465b7e28b01cf2d0cee6ac13dc14d01cb792bfcc395ffdf8b67d178d0d032d181d554e1e3ef86b50a2e1b520a9ec0a0bd4b37e58bd9f6aac1d7434f656ef2288e77501d62e1225257c71baba475443b82606ef9b408b7ffd9ac419d69556904098ba4e7211a07dfef1cf3955b059deb7e6db20b6b6b5b5ba67c62e0e496cfeb51def78cb16faee66cc56bcbf19d77dd229959689709bf5f377371e528497bd7c3873165a103c9d3ab786f46c1d6ef5d4c3adb77de3a19eba70e558bf1e6a97ce78ae45d738ded337ff9acc1231cc046beabc092b2f5137d6821ae562b2f18deef3867a669138665cb2de4066dcb57ae2556c6216a09a74c69a64408b67fb5fb9a3d918fcdcefbbddd38fdd7e2691d76f0b68685a6c287d39ff592e6132fae9e3cb76f7cfc73fae6845bdb16eb8e165d994a1f337d5bbaf5f6dbf80985b1095f283df384024d6197fa4d743ec6ecceb79e862c625d63eebb50dfa577cfd1aa1c6eff1c7a173262fb4b9aedd2d1ee7a0e7c87d7211ebefe243e2c22d2fa138d86caf437ed3360a6b5d83d3ae46e8b8fbf17876343d0a69d6f7f08d0b088eeb28de5505f943bc280efd201e8f4d796d54970bb8df06fbdddc22ece6c5e03711c6bbf4081399c09b1cd2d795caaf876a9610e3d041e9dfc242f6f7b190a36bb9b677a1640b11885b67f2d077b6ff6fa314f28f9fdfa013740e5f91bd511df85a76702d70d444141e18c802382924f1f1595240d5448d78686a6830ffa0520d9b9b6286151483d43a8cb432688cbbc62e12f85721371a2e54687f889390409c4593b4022750af0ab0132bf7222959d83ce418106c697bbbf6830f9de4b0b23d6417fa6aaae4607466e81dee3ac98527b57e03b82bc1049402e35bec0668a519c7e20a522a15dae460116c028481aa71250a80422e891ed87d01764d172178311df30e54b745de2c029c094702cdf514ba480e251616220e8e3d1840dd6223fb76aa2aef912d01e3dbae9fe888fa425848a20e22ff22548458105b660274752640e7d885a5a9b594690f202500aa357161db64fb1c1e2864e89c00b6e4e14d3828ff45e42e6a460603731a8577a811cd8ca3c121430eaf23b0963214acfccfb155da24d6297b497e2f559d8318062b96267ca9af8748d58de8c8a81aa9a4383107f4a4c4f4da49214a5f8f203a508745804bc23d0477aef3f714e04b6461e243a2db9b9ab44d53ac498efc38e0c8199f4bad2627929947fb3b3bf6a9a7208ea5a792288593c02115c8b387ec2f906d942b44b491c01d5da411d65b063d255cb68a9bee03054d121dc444a96728e5a1473d8419c17905e236d6907b52975638b729a9eb244d8371d4d009013da3ee1db2d73d250de1e7368224dbd69fbea4ab943628fbc9b7f905752128fda0c6b47052259253b0464bbb81bdc13a78fd9602959820905db4712c070d2084488de7a98f9426e2aed058ba7dc0fa4ae0390377124addac3a71e81187a2b140fa2f1d5d2bb11c51c9afce37ac71b021815b498ad79fc0f9809bc03294ea03e30a4890b23e1f8ebedf8fdc490c5007eaf664b4a8805b2a93db8312a9da7c3316a7b2bb7c13530a233f58a6c4929322c430b29cdc23edebe784a17f6ebfbd5c73cbeb31f899c379e90c53f3e026327ff784bfd5dcd6133caedddfabe9fe359838dc33f1ee2a2dce7beef179ffbcdbcecf4c84d593a4b4d76584aa4938cdfa5467d3e5878f8fdb1f675c469102b3290c92d2b8d180dd2be3219ca017bd6f860f8e0af2b371d7280c54b59d38d17b869211044911f0a222ae58df6a8471460a748183bad7c1e8d9f1254a84c4ff04bdd06311c5448119b0da885a42e32fe129ceddbfb783f4e52481dab615ed0fba9d804f0eefce8cf120dc80e4d20eadcc8c3d61b51e29dd4bddcfb427db9a9b4bf452eeaa8f2728bff6d8cc7bd4f3e3c0f78304b76b1bba65fb20671c06e9f50577be94e381182eb8286cabf5dfb74728c9eda84e06f1e2d0b5dda3933274a20d098d11007d1ddb313b88472cc537d5e0743e1a3c12806a7d27ec987a2d300437355337133d6d7a6b99d111eebbbe11f57d49a8fbe0cf7ec247a6556f20b66b1cc45e13884b6cda79307d45b5659c9a4e88f535c3448f19f0663b00d87090148322e32881bf219d9721fa7fd23937a8f132ced94add3554319d742b3bb60e45d053dd879c4d951007ddada05cd6449211622dfa312b699ca001d6823e3b884bfa8a6d2f01f90d612a3ac90887e82e614f9dd4bc0ee27763e93b2d49edd6d783b5acd2f120fb412d0e41712cbf0287379494cf54494d13ba2581193881ce1725e5626c74a63d85e52c6f4767489927d8f4c3d42a436c8b627a4d426b1b24407d9e1e0789cec32a91b732e0b0ad19bf0409c7f64718ffeda035dd4c6047bd2f9d815870950b2ee025c7782e959521053686e5985554e3c052efd6b505d274b0192d5773bde05ef4b8b4b408fcde81e1566ad84a19d99d0cf8a1fc948d4487e9fcda4aa951ff4db967edabfcfab522dc9d5659edb42cc9e89cb5d924dc23cada324f662f0ec5455edc517fb70ca6e349544d21c5cee7c637bf1eacdad36aaee8cce47e42a53dd01ee9aff938c5c0b17b9df03e03bf04f6873e796467e5f691f9c6fef4728db873ea498c695f1efb4dff0c066f328e55fb20e9c9f98b931e7c9123c8a89a82c3317bfa22ea72383df2366aaaac80d88b128cce076fb2f1e8a79466e529bfd1dc30565f34604402f5b81e5152dc89e2ea16cac7a0788db6c34b64430579d65800733c17c0ec5aba82399a1a495a0a4557985216096800ce3d6cd9c1edacdaef109241283e1a4f4bddc62f642fe1cfe6dd3a8313dbdd099a9d436566163cecc165f0c97a9cd2d5cf7ee672e477cf87c3995e9eb548ba87ed1a2022bbce01915e52e77f0beaf8453db383d860f2fdf2345c87f63804b9746697a4e3d184bb8be17517449e2f9920758a8c340f8dcde148b607fd67c8f8d0d81e8cbbbac5c3e38f3fe725b3730d5e3538743e1947a6c9e48074909ae09361cf5d25411d9f4d98b078f8f48cb598b12bab4fda5e9281b651d607befdee8ca565e474aaa3b99b22c17fd1fdc8c4336b7935b61fc496a569194dbd6df2eba12b338e870f4ea0afe12f148e1520417e61a27ebb0506070010dfd11a5d0ad1cec3553741cd399ce236107a392fbdfafc41cacaf6ba698097b9ea742affefed81d80203caa2b1906bc708eaa8635b480858f110603bd14fb68c0efcdfdb152f27cef79f67ee576fecaa7569af87981ef261b16fbdaed669b1f65cacfd5f5bac49071cfb875ab33aec1e85430bebb19f8b247db828f3f387000851c5964dba6dc57aa2317eb37c7f49c794593caa8c2641894a5033c8ebe68fdb5d52197d5ffc30aeadbdcdd0bdb1cd79751646629a6958ccd2b0b006ebd33bd9f5e49a976fa7c16ee23a9c100778a3cc942aa755228e14046e8b89a69ab8a472fa8e685f0199c39df879b9cf487d5d3efe351aafed1fecc6bf1e6caf47f36d91ed0d296e4436f5d4d9419dfeb5dfb8c1da531d3a77b283feebdcc9dd8630ee46f7b5777f3c7e7f3eabc7d6d6b28a96d50fb5cc9fecde75d6380305a4fc81264c0c3b68ba7e97e9d745ff4c272c3637dde0557ff526b43f32dfc73fe6c0fa3ff7dbe3f19c8bee91538238b46b078237d144a97663c38250d1ece4baa7c0b6ae9b2ad5ee1c022aea03c36534b1c3a5fbf5858db47ffefd71a6c51a4da6e6824b8d37d7592a64a8339b31db1c829621f1e9415cd597103e73515c8093ab2ef311c81d47aaffb8b156dcd0a8dbd248f16619670ca74efc009bb1bd069793dcbeeafdd44bbf7c4fcd722b49fdf2fafab5e8a1e5a50ee2dc6ecce7b8334a278f7a5388fee486d9c8434775fc46b3ea1a400b111e0b2f3ac171d267a0ec01ed81b86358285fc77d6227718b02103b52e5b12b77d3bbe186210c9cf61225de46935e0fa04a2b7587661bbac24c50408ac463e2f2622dcb81978e74d6997db1ee84379af1fa8ecfbe7e2de6c31299178a223d764c4f4ee9d44112227589994cb1143773a801cc83587b92c049d144427cd59f2daa563834f0fff7928b4e2044fc8ab826af3ebe8d31754770debe69fd9731bad66261e8a293f602a26b895039e85a894f8384b493be52b983e135a49866e1353b85d7e21979b71c5e83bd55310527640a4897d119291c9947b111e0edde53bc2e207c76d235791978d3efab83a4b013eb9876a236bcebc401e5d251271e7faf838cf43b913936d29285b03f53235aaeac889c462ac82922ae48c61e1bb1ea5cc3ae65064748d2dd60617de49364fab6699ba48fa8d99aca02837e6e875b7082bb417e0e14d4167af801274dc5330946269e8971ada6d5b1ef5ac4a611bff5815043ac45cf8e8b6ada6e994b99a28508d370755a02fcbce9f748e88416187583386c57b685955b08c49d807b642723f382388fd7adc097ddb89c7d63342e124e62f545483f7116b6ca0a5b4ee2a26e2160adc316c343dcb7f96b812f7449f0635ccd3abb6057e97cd2e6363194416cde7399ec18c8c3e477e346368b24b3210881427e2d0e64c9ac886d36b055d1ef4fa94d5cfdc241c28ea11a5c9931f678a21021e3e24323f665f6cb31636b5bbcce22bd883fc5e9d5ec8999201b3843995483fcfed0490d8d68957b7cd8ea9409d3c6a896da1e8401c19fa4b7eb22e97cf4541e3d550f00a9ae9d3cce4fc7cb2075d744c8a2ce44c9ba259daca4321e5399693e096190eca6b385c1576dd1a6ee41235dd2b4fa5d4b0bf8b6c937f533ca8878446b19c12fa45b45ff2365beb6608806ca1269633d23dd18da6f3a4939b532e6c8825bf0d057a31b697a3d20791cc4412da70d00763f8bd91631732d12e9854f0a419bc41260dd9713c2f43d2385b625bdf1a8e7a4072922784e1cb3b118b2d471cc62d88d19dec0dc2ec60753c623bfd79233e3f66e23d3b29813f9c86fa21491d3ddce8641e214da26ca0181ef1b3ba4fbf6f8f2af192af2af1e5428b18e03540e911ae878d2a88b8c9ba8add32d69f28d639a14e157946eab45617b12db659cf886b273d619b7d6115c6127ace2ab49a6a8a79f4c39b67a595d859d1bbce484e33d4d8ce7b8801ec16e27a9a107c0f54f2a74bfd69e5c2153ecc5321f07797024318a637626605567a676f576d0e4b593e2759b76d8a7dd79a3f6b1e33d3916a2652a3579ecfb6e70645fed8349929c511b107e89de0ff869d473336eedc4c79513eb0d60ef4eef5b7fbe1ea478e307f437f9fef52cd156f57e6cdd97db868154c082c508be58ca0d2aaee385e2dbce0f9eccf560f8ae4814c3b9d3ce7a3d5864bfbddd21719c28225bc6f145836e3ba49b0fb297148ded07909472c52747d24f38ac909601c6ddd39d637721859e702175a5f47a4742ba79a0c4cb48e48fedf7e192ca9ae4b81d041f0a62313a1d0b0036d54bcdeae16a2bc7ac83295431e1a740a9db813036f807608cd5c25879a960a0856c2a30512db8642722dce3c4966b46b6dc6975669cfb0950a6bd6b4358756ea01aae626e247553b034aaba01237f3ff448bc9e4831818d7da7339380f5446d0c7d1efe3ae0f4fceee318bb853366090fc91d7544bddb0b182652fd7229360122404c66db88ce61d02169b6b728f7aa7907b542d025505da03dbc271c84f1bae15b94528d4e89fd6417ea94e03f3c4ce4bc532d5d1694d2c91b8574c553ac2e26be6f3f5e6376655cbd15ac654edc984d86229f3e80f93b70e2469873357d29a8372f13190ce6cfae3710129c6da088e4f726eba9e311d5979aba462d8c49935cbb260551184e8998e29d6b513f5d87bdeb8224bb8710bf855ed9a7981ff754f6b75208775c043b2e2870cd891ff1f9f6f5f8ed1d52b9f95befbd7f626d036754bd98284f731af67b4276c3bb31e5f7e3d9eb7a97cfcfaec3c2eb0eaf3bbcfe4e38dcfff21bee52580efe175f7faff7ea6091d6f0ebb0a9833ff9d743dfc575d804fe114d5cd7f92bb5bd7239a2dd9c34a737f69486bc4439d75ce2abb053dad4750f8eb868fa753de5212f459aaab1e9368eb3a9fa898bf63cfffcde3dfffe6f8fbb97e3391ef62149be89f93c757ead27b70bc8e4466ef7e58867a2fe37a49d1e6bfa2201b3b18bc74bb67a53d771a74fe9d7a24cac76a10b47fe6242177011380a816b2a9870e4120bfa0eedf34f35fcaa1b1effe87edffeb8857fdd2a76dfc5605dd7d0be1ebcb915e9bee1239e5fe23aeafa7a70e6bdd5f58ee05ded160a193e234ff67ae896eee3aec4597d1bd43f6cbfcdb7b61b7a8431cf938922ad56625527ee38d62e42e541edc06c0a9ccabde4d2052961651d25bcf1a8b6b533a39433c544c135934e90f5105b4c7967e7433558054d7e17c5962f67c9a6686eeb2788021b1d5a355d1e2214f9d5fbedc3030c53f51d574ecdc3ac4d50dbc6a8b97b8bfc1bf5608378b5b924e4bd37510d50e92dd433403368e244d0c36c85456053ad156d35a28a0cc3f4c4eab2b2f16a4cba3f9eff752ee80f929dc952900b84240c804e6a4d40a029775e6a0464dca2f0d05408f79bc4933f4823faca963e10c8fd4679260fe70484b0c622327cd2931d48511873403dc30606a92530a401b7505859a81e789154904dd3270ae891d5ad82fb6c18d5084eefd76749302f01954f5e223da41e8ef7a8ea843097247f0a80881bb5a200fe8de3bfa345312c9ed36ed964d193b950e339826dcb8e32f6488fc4ccba5200b3fb3ccabf7a77ddf9fbc77fbccc2cc25e4da88ace77f0c83a2f0e9cca111daf23b0ca520aa43d935a5726117f1fa14faab63ee89e2a64bf9d84b2b61257dafad8506f18adf89bfe56708b65d05bdfa3dc17ee6050a33947e0f773a46a1c49095d52d3ad752930c80eae372057b084188f4de330ba71a4586e4725e0c8878298568e44f9f3fd68771c745a388abe0562c8a1676a1bfe3d42da0a334b3b27f0b740753e4f430cbd553161f5a552affbfec7d39fc3cb6ce6eb699e112687e818b40829dfa06d52ef3faf1071ac59ed769de3582a2806d98d132460a950ba4e87cce89061a53474458bdb5529a4a8eeabae142fc173a5e02e2cc0dcd05dab021daaac6b09fd2289aae2b6746dd1104ad43714b95ad98129c2520828cfc8dd60d990c7bca78c39eab94bd3a2e87d43e6b3c422532a92e14b58e81444879c9b4e897dd318c4ecd9c19637572be5371b817731ecdeeb11f8f97d56b00a9a2d0b91c9c0b037dd011669aab710505fd18d3741846f3b359affda7b449f58f5d2b15c8577411eb6c890401f79372e4a0e0f3ab562dce83a29465bdf6a7d9344d3ff160d178f95784a927028978ea8237a6556e7060661c50599b2e845c0718a9a63eb773a35f442cded4cea56eb8e58e30a13c386160f0754556787b16afff40d2ce1515911ce9538e884a093bb4d924e27c9a9c38e4a5dc0d4357f195ea1bd58018fdb3fe6aa1b4bc5626ae9de3dee6fc49666d9e23a941bb3e6784f8de4ba6dddf3b7c7d9eaec13d0457d60f10265b6519080d83e0a23a0311e0aa73631249e4cfda91528f90627c65998756f3ee9a419ace4b0b1696de3a620d0fcfa35532f285d744958bb5bc3e1e65d37a87c83775c9087859b12c09b37f18bc2bd3e7af9d7f36c09d96c5000df8af1f59863595920ab8365bd0eea3300a10f75f098fa09c088beb103419a113dac9ef011cba822260306a7bc237342419ec12764d062980454db939602a9167561947580686b64691423fc91c0f4c2fc4368a197caec41880d399e8854f52df81ce296f51cfaa3b9ed0c93ed666fcebc20e817c3a4dae671e558c70239a28e50bf54b077308765338b6c2c2a97fac8705046194d919c072ca8ddf98ac5b77e3ba21a259166a22626cf5cc4ee1512c80292e3ad442aeb2342c09d178ea0145802887aaa1903d9b8883ef59250f017c43b893abb73657a1399b580630969494ffe8b84512f1477e7d064c883dac88494e369e72456752090a44b16e5536a1084b863b6204c1421314b70afeac88e45eba1615ccec89a64e6eb80057d8db86d04c840b374635f0fc9f47fcb85be3a138770726b770193d095727c9c1ff42c16082b1b68886767ac15909116d3ff6681e194dcb22a782be047c0ad314152c92a88807f55e3db8d70ae2910395c6f8eb7d4fba7ee662f5928045adfe28acc0d19216622a8ab80b883a584f06dc6391361249a62dc319009339b26a104de9360471db5006491d470b37b0f7612498717a6070f053002f2d38ee74d8496f4e500ccfceba46e4b8d90f172383f8b7a717df16abfb5dfaca442534ef7b3143a2ff498dc3688eb93e14f2e7d2f059c936e6579e4f6c87ac3f2ecc76f33d2a7243d0a80e0a2d5b096be0f3be9d5b30cc467d424bdce8a0085402f16a9b62c457c931df65220c219b35f39e933f4653c61f51e354cbdfa97c6c69d974cefa93808a2a42e480a6a18d810ba24250689bae5d63e360af19c9214ca9826a7add5ad27ea0dd18f63b565901ec945dd7910ad2e455bab2b5dfdcd3eedda1bf48e793c921f285e8f4af7fb8fe77f9ecbecb3ce8822253fb0ec40621c0b80be48ed93fe6bb99664124123adb407e7aaadc388bf80d9bd4a5493f61469018fac0375848e13c7c8b7311a9125761aa035163d8a47846e35eb39e64f8c83434968ac5bb0ebc0e742490694480356804ebd12f630229d64d4426913419f6e9349a0512f7824e0aee1ed46b8dd14bc7d1de7f10a598a02ca19eb08c42eac787040853b3d323cf35e449b184f3c6c565b90d97416a0a076b9c0e72fea1201e338c12888726c490f3d72c157bdf3d2a60b40e55de08ee5202d53f4b4aaad283667f5461daad3cf3539964814d6548e3560b5cd9a06aeea6daba3231c48cfe7cb79f4d2cde3d63d783e3679dd9ffcebc1766ef027bbb69bf27ab0a18b43174e7e880bf47287deb8a1f308a15a3d5fa063b7598a11237c78535f79eafcba87425d9787b0f1eb84b8acfab7fa521adbe34e769d4f50b8316e89adc00d5d644837e89db4bfba68fa216c322e74d90187edf73929cca782a9d67679f75612e936b7f67a00ddca970b0a5d435edd1d24f47b667623cadb7c4b34d3d1b32d0d867940162dd8531533bc56e274a35f81559f14f170c1d511eaf91cffc4af15bf2235039323034f82fa4b564ccd8aaafa2431ad22cf4cdd5ad4563545a28173943cb6830a883772cc3850d40805c79511883f252fc95ddf7bd2cbbcd28507e4794c2ba97935c670ae623ad79e6ad7de3b69e9cc0778fffd572104d658af73aec924224497243a425d08b981d79e9cd4fc50417b4ce4a47554120f64e2a2913a329bc1e3e9ab44b70107b1759b2285c001d8d694412b128c5a8f14b97509565ea8700a522196a792db805408b18c5c115ca4ae102707904aa343708d3e541f3df28f11c57fb979ec95258d9e581098253de14c4d1b5d6c2035a63818ee238f5dab0f050891ad2a28e3b78cb0f5486f07c42442699505a097433ccf111124b505deaa3877d4a701d597587700d400f413a3ba23a502b885f2f5ec187e01fab127951e8efe0be10b9d128f3fbac3f6dbf6cfc7c3e39c7f0c4091931bd4083df426b5bf4edda4808917cbebc1750539a096023267d12114aa4e51fed1293cfb84da9f53a0df1a1b20ce69ddc9427ebbf3eb387da707e2b8fd35bb83a73f87fd3c0056717ee9c9b977a0bd22f1ad09200d7fb03d0069fb0eb4e3812f76ad522fa87315c45344576ad64df5463bcbef4987db7912ce85484911bf9b008f8e5352cf3a37235b9bc9d51fe0f6f54bc911e9ed6f783b7c86b49021917e4c92ccc879e77d727c79fef11fe7b5bec06cb4547af01ea55d3559625d3cf13abfcd52a3c9132ea35383222f255edf26367a8f3c2886959a9e7ae162006e842bb023f6d600b054d5a4c31e0ccdda84625bdba9e596a86fbe8343e81a138e2f7a3641d17b11c0bb18315a800c8c617e9c1d66343560e88573f1ad5de9bc52b31a35dcb0b3936944d881f369da6d6723fa7cd61474c6f6b73e8d3f7550b2bdad283875f1a198b02790ce42aad25191d1441dcffba13189f5a1b0fa6255588c611a0c99e48397f519d92c88d05ed467a8a3be4fa4acfa9c86e44587fc787a7dfef6b2dddfa63e83890b450d37a9cf0586885b32afaf76917dea6de5e88580e0c106933ef26d83fd40aaf3f5d025133f74b99b02d2053ffd9d3eedb6c7dd7426187f5799f56e9e179520b7c3f2f18fa3137f2193ac233957adfb740bdee9a83f1e673d157f2debfdb5987afff3f73a125c7ae1fee7efd716473dd1ef36ff5e372ef7d41f4fc7971f4fbfff9c33adb80529fb5bbdc2bbd4677a8efefa45ba68dc42c4ea0607b050af75b3afcc6effe98feedbcfc3efe7fc8433f19407eb36710d334a8d9dd1676a9e1198f0894b64e5f6da5d9779439301113a567bbffe9ffff5bf0dc21ed5d85e02d0fa819c5f253446294fc3576d5807d6634fed76509ef4237b098d73cf0c5a4c13cb71abf76830f038429e4184450e187e9eae926b641b84df5972db80bad89dcd6284de21e8784299438f86f58d3baaa727d37cfcf6c95914bd516f010a4f16e7583a69e45ca1f0d58c5409cf28fd4a358a7d933d0ebc4d7077c4322f7069f63d6aa21a7f1a11a049523eb58a8c162f02b5ae8de482413eab07a50991df2cffa8a8b751c7a795b6f856141249a6dc97910705142931a11283d7cbb81ec95d317a20aab3893699971c8fcd6f6a0f20eeecedc8e763c98b111d70db69b8576c3c175cbd2dfcc405eaaf5c60b62e0edb3f1fbb1fcf2fdb97c74be880a77e4eac235ff3a7e192ceb81571d9ea3fb5b07841b5f827eddd3d29b9eadade48bbdc808c66db4b5ce414880c30346702490cf56c8fac5e8ad3fffc931464fa10d1ef4ba412b792193730cb45ebc19a24de3f6463dd1e23e33a0f0728e54d1df22988f76f8dd505d42052f897eae8ab4cfadde84d210b6f79bbdaf763bcf69e65e9e41981751ddfebf72b4d1f1029bf47b9f9fad53a89466dafbf343ad1e475fabb47477dd80f0ecff7e7b3e90b2c3adcd40566e9e3950074e8c23df1e7876a0af85fefe1cbd0c5204c764ba6fb6c4c8309e8ac05cad5130aa5efba213745cc8bf230f78ee26fbf3ffffb9c5d1dd5172dcd0ad53bdb21075f9d3e0e9ded77132823232253d5a57cc0ee9a25c45394f8217d2d09f161fa466ae83813c52f49dd0f5d5a4aa659a9618f810b439154f60c690c9d1e5ad777d9fde369fff238d3304a123caa19fa8aaa30d75379cebb20be8687a28314d65e527a00c2a7ac6ff9bfed9024c6bc93547dabcf01871a388fd45ac83eedc5e254ec1d651e6cd83a8970d8631a11f7925c4b8c6da2f4b13cd8a4fd9936a357753e501628c6b53bd3dee9711ea400bceb1131d3efa820d47183d71b7e3d5408beb9dd28ae03d8577484cff1800713a7cd10b7715210b3f02727096db9790be8fd58f128cc8603cf635b61c08830526b401f63de78862d6d965abe484c49ffb5dc5331ad1ecddbf691f6a92149bd99bcdd9f8fcfe711f5c11af7057a81f15cfb913e308c791ba1cf172795bede80c2d295bf75087cb0af070fd142273644d6a444e9118af4e27a6cb471101fe25e7295b293be95d1b65ff4e1248e894f048a4b6c769f3e0e6a88a1d2727cb98a6b2f9e247a3eef58aeeb50d51774efc6c68e92bbf6e85cdc44d6acdac0182e1569fbf626b4d59f3a2939be1ef48e293a11c1090813597bad8709899c411c9599509c1ac767070140c5f3ee927e020fed89b1923576ed596d1185b76c82191cb758c67d9d7475d503dab7a2c5eb57c78ae18be7f8099012dcbedf801910565208bc3dde0accf74612c092f23831118fedc54b4786be221ed289ef33971da1afe8c16bfafbd0f819a0de9c01f5af87de50f1394e9c26b1919ae8a0d05d00391e96156a91ed6c58c7fbe054c2ab201c409b6d8c30eca34eb18d17a6741393152c1657e33d22ad185bd5138b8463637d8ea8dc2db3899999b110e7a642e2d6164b980f0bd9758685ad2497f5df8409d2330a548b9c9c9e647ba88f8fe7297c5207615c6668a92e33bce8f76c464fb40c6f973cdd8e7c889e73c271490675081b145c27b6ed635b4016ee227ab48f5bb17dd27fd35cecdb9b2dd25fe37c6bcf0e62cbbee9c383f213c9093f4e2ca0a67065505d47e8a03aafc33051617baf9fe5eb3abc581f710f0454d69bc218b47fd4a4c991de1d864eaf4ac5355e06b3c5160c6601a577e00e8377f5580098cafc4c649fb75f285bddaedb78a1fd517af005373ef4a02b9e37cbe53231505ad21bf471e37446f4edca9529259d1283d87a1e87d2661e7815e2466d02f22544ae2b3baec3015fb6e770f7ad4edd6db179f665c62ace3d67fe2cee47fbd3215b16e34802115b87a35bc75fa63d7afc531f07497aec7b0709d1d924c61573847ea96b3fe7af8dbb69d7862a36d41cc82ea0cced001670f1ecf4818a21e3738d9533b7c171894cb2fa3c88cee10ff3d9b686e9c1c789999955062d5ae1db12f2417b7bec4c4c08db46b8e8a7813f746e9080ce9a08f303d7400f073d8e17c72ae8c4938c32b7c915c647500e0ce28ace68dcda7999fab6b2bc1bbbbfb6ff1b65abae9a5c2390797d9342c5109d1fecb8781c874a9fba5962d68dcb10918ed2d854485aad0f052253633d8b3bb3f0eec56718b6a34c406015be3d93919065cd061c591e54b1bac8add77f630b8815da759cfae3965ee279b99e304203defac58b3524c325e31fd9cb12f1ee7a30181445bb5682406e0eb48b820678a827edf6ddc8831c4979ce9750e8deb7dd0ded2737096873b9aac72da18eaf811547dbecc5e5f118b0e3feab672fce9d38d26e709bf2dabcb6837a9d3a76b4283881bcaefb1410818a63556cbcf811cc686895d86c21eef80310afd68fe4f830a5c4dd1a9a979cd65192afc66d7560ade1cfb66c6d08c6bdef376c802f25ba0b4b3448efc1971f992c073f0e986f4839dcfb2236eaa4016b0ab96e03f00259cd57e0b0fce4504c9435ba6a480f0ddd6a0809a82b1cdc24e5932483e0a084acbf4d7cbb6d09827137dbbfd110565fa2aae7abbe4396e881904268cf6578e8c81b82343ae3fb939564b7f406c61511b085ed5979e81ace80414dd04e7512daa935a1a2dc3c4ac9002c99f91d795bb8c0485cecc8871c42939ae0450a77d406ade225cfc073b5cc70008ec5da2410d01ff9b72280201adb837971c7b79a460c1049be0074cce48ab911ea1b484434a64d3323a1dc6a7830109721219cda2e17b95b5a469b32a12576da981a7151639922bb966b40e57d1b301710a583866c0d3b4b3112f275a0d201e51128ccb1e86a1493a18aa1bdf25b910457c7e82f7a6fd8875cab947040764062c4dd2cb99fdfffd8be3cce545bb0e07ae70d7f8ec5ea1f5e6df34098435d4b068bba151f410a80a23644d943fc4f70c1a3589009a66d6349866d910cffa2a7912ebae11fcfddf1e9cf6fbf8850fa9a8d1fdcc9adf3c653b8699d5022bdc9ebb449833fa5c19e2ef7bce1f1c7d3cbf6dbeef15c475c6e292d8700cd212bde544ae0cecaf0adb17641738825f85de3751c637250169c0b0b5e832397480eed3932b7b742f0c2baec3a962777712a4a5edbed58e56989283fff8de990e67f1b7b4af3f71bbb8eaf5f9d71a730848d5b5f4ed56f8f3fba7f7b7efa768e4360a2afa2f846618ee2273c96a314e3b9244c00563f8aebac41e313c07b656cb936fc884713bbd8b04242fe9724a4aaaf4917565979d4cef5e0569168aa84845fca513b8828565de55e6a5939490dac1b51fa61cad1a2d1685b30faa6d7afc504405d995103736c60f3ad7106bb41cbc78937ae0bc74e74d6d9cea933ea3bb00ab2a8569c898635e27a2b20272137899a4f7ae79d00cc88a49ed36b0822245d90dcae8bd882febd43301a7e8fe1275f0fdc427bb793ec4d938f41e56074fc4d6fe9882ac646a1d29edb9115cef2ceb543f90bdfaf97f7f8f6f6d4c5c01f1fcf41e668ead044d92680d7710276214534877a1d2790d7ba32487f867d31c4db62c0534fb5a78ee3c567dc967f2fc66c7e872f8f3f8e8f17da59b60770aa72cbcf9057701225d5955a1110d30120de78a346e63d1e811df9d22d8186ba2628bf9d4393322a927416443edc651ce80218900a2a5a2accd35606849f378c2ac791acbef363283481c351dfbe6261a32e2e5dba3590dfc8ebedf40133b3300785c03d639ca9a9f692312fe64e0ab95c7205610bca74bc2e709d707c6637ea82457e0a3fcd484b3bedb3c73341ed459ae37bb7fde38f1f8fc719d783939456915c2ded48389295ddf82ea230a6277d903395df53500769b146f5e3382eae8ecbe302c3edf9f0d3ae90a8c74a39c5c19eba30808004a4ae9d1f3ac1f659077b93291d415bb3c3f5365f7aeaaef358509ce477c5f5c591793cfe9c0947cea422ad39eb48f2a8b50970832fc4c6514cd26df9d748d20f50f90cdcdb777e9d376170a778fdaddd6eff7c3c2718aab89ac4f6eaf75f90117538bf242105504b6e3f47869a56927d6e54228d7e5447a50f0818d6d15faf621d1cd1bd9500d47788f35b1e1b81f86cf44e97e1f642a75e0f62f8fa353c54fd558f8d7a711cc213c0cfbdbe016fd2450b869b54263286f656fc8c0f20834421855df8463df03d884d3edabbdfce342b3adb529180f0e5641593fab387e4b5eda480c512bc579e225145bb36d4bc3df76d1497f143973618aca23de7426bc2a7c28edf007251e03ada57f46eded7e756ddbdaf83edd24d567663df5c70a71995cd22bec09e10c1b85e47c799711ae6e4f6d3aa9df5f0cb76ffb43bcfdc6202c9b4978f2c982d4b87d22085552c8594c48bef096f5d77e8a4ecf5c89d1fb36a59752fdbdfcf72b0369a3874fe1654b88407b8e66f196ec55e17805bb7842eea07757a20a74d18106b4feb844a5f00a3c3e0519b8857e226f34fdda5824e82a01f7c3d14d30f9d3fa16a66448cfb4dc15fe73bfee7e38452b6d6f4abc29333f12c4d26c20c876b088a34b5ed9ce4f8803c77784f4c13e54c77c9beaf73e29f94c07f48e0ced06f80a555fc4e0a0db11c5a63c746df27112a9384d2582c9c1a4eaa513bbb910fb66b21dd565adc84f3d5acb05b2f3d8cbdde86c969488d438ee433f32bad8af47af687688aee0c1e5c7a44af98b3d1703c9fcecb87f33f1fffa3fb7dbbfbe7f1fb76379fba0eb8885b69d9bd9ac52bb1c8a367f0ac01265f16303ab09d6e45b26fc114b7c9ff038009e0e77bc39b6a92abbd01a97e01655acfaa62ea588d88a3056c038b532dd3bbb11aec0674cbee8a4c5bf031d40b2d0114a320c6e359617047f15a3d506dac3a8198d35703b17b3e1ce614456a8ba050dfde6a001c6718a599a8d1c9ea0ebea8bdd1aa4fc271e617eb561116b49166ef997d67e390bf2b197129ffd0a5cf2a6480aefe2f48467c5af6e5104d58e74de6d1e73faf01733d76df5e7e3cef67443a4058e98a095d00fc9e7ae400e0ab95676f00f8c12ca07a2e00f89308b3f17f1d80afcdfde371fff8325bf02492c1faeee2970b430834856ee9d4ba557eac0b3537aeee1117f8f8d60c85a405bdf7d9c24f5cf7e1afaefbf099759fb0ec1b5ba8f8cfaefa7c77d13faafb3ad7005a506f6f2b6eb685af03d5c3b36ec0f6d3484b6fae2a9ec60096f9bcaa49e039bab6fd2ddfde5d8835eefeb8db7e9fd5c7dc167fe046d1f5e59332e968985fdf159658e8ed6b60d8eb217751eac97d89263623da8bd5bdd9ed24e852f4f851a09557a111034f29833cc0e42e23d41e5d87ca26353cbad425b99e0acfdf2f6218d6844fabbececb2e822943e725f887487854606dfc17a939eabf339ddc7bc267c1ef2305dba39d18f975bea182514a9478b7a957377a1c9ee6c0e18bcd875ba59bb64a32462c58210ba23d1ee1adf74bd3367558820fbfb157be6c7f9f5787f4e7b5573ebff61e9c7662bdcf8398ee5186aa0502ebc87df208682bd5bd274f37d75fba52edb7dcd46e896cad59bae9b9e113eb7b852dea99d607db8bc76c6860ffa27becb8d32e6e44d9b692385d589b6b57ea83844ffffcf6fcaf6fdde97178da5df870fe322ad0230e21ae02e71b2596b4c701c263e492f2718c3204c0d5af0f55bcdcef7de767d48efa8daf874e4aa6223df89391fd425d81b75e7c5f117f8ca0ebb03648eeddc6f64327b596b575ea6beb8c84e8e158aa01b15b003bd5e5c894a4c75a46813f493cacfbe2002d7413c0d0822a3298b426a5531a45670ac88cec9e418be4575e72050dbfd3fdcfa961188c5f67c96555c43bb0a75453015e71302a769213335b21a1fbd4532c5972de4b09a1d31f70ae507302bd5f481ce81d54feb942dd0624497ba416b2a37585f48a83906befb3be3afb4d22341050859b751583892d812ccde77d2739710fca6b6af18682dc7c29129cc763f5f528be26fda5fd3d88cff1c1824eb3f74152214b5ef0a86a651031c52cbecc62ef3ef8890cb86725e05befd9544c07d40369efa8839ae3ebd7283d12b66b75d3dd859bbedffefeb89f1d291f34e496c0d07b3abc48ccb94d18cac9adfdc90ef96487700aaf87ce777113d460189a18a31f6cbfa9faae8b26fdc7cce261fd2c69ff2cc9f5a2eda4c451faa5cb5d4b27db1518393d88d8900c31c5f823c9c213d8041aa80fae7236c1b4cf8983f08083c30a9e877204b156d103ad8c48406bda67da0107a08e072b0aae7d44aebf4f6028b268213ec406f243441c4708c3b73bb9bef72910ae5d1ca4d43dc299bb4626e32ab466a2587b9c12ebc891efd5a288ba9314fd3795782100088a05e90bf648b0904ef444e0e3da77a0d2c086e6f4dff47130af5b42fcfbdd246fcf8825daf1508c858563311b7ae2a84313d366a15203e5def2c8fada04fc63fcf4bdeea8b29fb06d47fc2cf5baba1b312a896fb5bc929229449324d91be7468dfb45fedbfffc765fcc8be79f3382302635e7042e1433001a1d0c6414b84945aafd62a1196867ca81609ea812d759aa5f3552a5a44764d5454322c300799fda28f58204bd62c522dc09e5cd6d6ccbaa63ae9a94768dddcb15d017ec1b3acbe59d78e8f304f8b8d48d79539c60bab31d785be82e8e1f7cf0bab0a2b8b26a9e34cac27c566bd54423b571c9565dd2c7b3ea4323de80761115b142d84b85824e27847f6039e301eecacd97e344c7c733bfddbae9ebad7e8f75efd3ebecdee82cbd6a6330bced2c69051a1904aa061c2d56e2602923873207dbb863705ac6abee45143293ab941c299828d856abdd614839a050edb9fef8a27404e766b7fdf9f23c9ba055e6da1d89a40cc19173a0aa73ed25d6ce495fbf38b044bb3957743241e29b321e00dd55d2c142253d3c14016bb53f755edc4e0a4824499dd30874aa3797d7fb2d19b863b85cf5ecd17ceebf9317f7e059d2031a36c03611b9f544a0c6603ea03442cecc863da567acdd90750a97bd6e07e0325aea0710f8c5dddbf221a02f6a54b26cd1431610f3646dfe0e3a4fce9163a89b66c6db17acbe2384005e01fb0d7dba072647dbd96059548af2a49b0419d8d235efcc98dfb7fbfdf3cca10d4c44bb264606cdde247d7db04e82fa456147bc7c4259af7a95ba68c2b86fe2367bd60b5b097b52a84842a529087533b2d499946f1fd87662e424ea03c9964106d403b95257d6c2a70724d18a03271b09ae7c73e81a16030b71ad5beb2ae9fc82d651d4e791995fbc658fc22d096a3617f0d940de460d820fcadb60e702be9a74577acda8ed4d2baf7795a42603cef7a886d2bbb7eb70beeb8b40c258a88c7e80476cf71746e7ad7dcebdb9cf2ddcef7e6afb0e0bd6b30eabc48e047c7f61c6ee9e7eccddbf40916308e080992ab1402c03d509aae746fa0bbe5510a523817e317cfa3943892a129c6556f0dbc60e4d526b840fbec0ffa117d4f68762fa5522354f12e81225aa35c2bff3090dcbda2c524ffb5590dc805b3e19671052bcb525f49302202b9409329ae42d5a045c4bef57fc3666f7d10262ebfa4879248271d15ab14eafe892e4f1d3b8282ac141e3cd6fba1c12839e31da9f14487019dc8320cdf7a472d73bd23658d037a21dea335018b9a78355bbd6209d7925609cac03abd744c7ef1b773f4689c3b07076e29318600e25ab03a169a76d6aa3be6263aaf640525b2b8e3c4024562840a2a22dfa4b518f5e4d6fc9e3de9a101e07036f06b1c3381f8025ee2c7fbe3d6886dc05905320343889cdabaa2bc649287a40408ca218eb8e20a2033d3865adf2c851dcb4fe2c396ca94889b26b34056db83399ad213344d305c50a6934e9ba074584ba4c605b8201b2adb443073667b13b02e41389b25dfbf0d932ca065ff2de4859334a8136626edccc2a49346807046a8329c87ec5c6d98651b2a0cf40a9a883499f26ee65ce5c0c08833acb13d760b0587d8665c0215d711c1246840dd0e138f2bb617835bfeb66179a53597eccd89c7139f65d5ac1eae947b6e08fbc1d71427d7887289288ca8f1345f6b79bcfbd2ff8da763b000968bbdd5701fa64ef7c2d9f9419ea3ff7fe85a17cfef9bdfbfd3fcec3f9b9d131f173449eee73449e3abdb43d9cdea0f9bf7bfdac7ee3e726e3a7de1fa923f87f6d7886a7c71fdb1fbbe13f2e3438208dbd5123e5637ec65b16616d3cf805db14e2a4d060c12912509ffac16f78d79381e1845db9344d097e07a28f6bfda2959f4c5347d3d48d6b6c9a8bef5cfd6ff0345aafe68e3a3b60cb6423d1dc6600da2299cfbb68a6dbf87faf19b71372fff4ed713b4f07bfed6fe82dacea34a885835a4c3adebef7a31360164879db42577bcca9f5e393c9881eaa956afbe3f2bb3f14b75859e64ef50855472b5c5498b4ce39fef3f15f5787e3a77653ab43f1c9ddf173c78b33fd274ed364ea6735ef3e79d87d6e37fd647b6ec7e7f9c7cbe31fdd6efff3f8328b727ffaccfbd49efec93eb7ee93972f9f1ca4bfac07b87ffcc7cb62854e6a35b251ff1ecb15c66a85b15861ac5568d5371dcb6fba56e0632d6a6920953655f874adc2a70b92ffa78ee69d3a9afdd33f1e8fdbd339715525f4a012cf21ad8ad484e049b5a648a87174bd769d848a00564da868d7f305659b31ec3bc9f4e4b30e720c48b214a8f3b9580c6a23f41cca810528213ad4116b57c1f32bbc847a5239bc1e9cf8a07de9819b2dd9eb8bab76cd8aa27d5438eaf5f417e866075eb36b97f7a5c3d5f7bca85e6107bd87e0b55541aa9e86c86bb3103b545222e0fea6575e5bff04dce8d448ff2522b4112f021cda4bb8473602cd4123f40ea73e0aab2cbd7726480f36e33ed2a3dbb1878db68081bfd047fddad7aff87680b7e203c25b514a5d6a836bbae8015fceaed6f7b32bf0ede8e92f5e6ad5d558eb5877d0fa31808a05c3ac5fdab55ef8506d47dad2bdc725bb60f857a3f7b998837f0e2fbfffdcff7e9e83bd3536ccc9fb167015379a2f4726061a0967e7ef038996813de7c22cd759bb82d6640f2a6d6a32e2b720e0f161e2449052a775104c64912e38e5c1b01f2584012a1c672e375be1ac8715b57190bfb4de2424f97979a84e2228d44b867c0e50d717bdf66d92df0fb88295fa06503175e91eaf1a889897113630955e0f5e4a0475f9038adb40984cada0961f46c8ce2744b7510843c59a194528a3dde202c2a97cd398d4261a15b25850a66f8144c6119bfa5cfb0597d4851952e75adca74e6adcc4b4820042179f97ecba267d08fbd4a27accb632ea89df07543f7cb687a617de85f7ef7935c27a9b6c38583c29628412333682cd017508435009c9386dbcba98faabae4dcaf3d88944087c429fba2bf7f65de928f44952e5e1d1bbfdd4a9547f6a8a282d1d5122750e43933b9c91be9a56d0e28261f81bef6bd000b200525731c41d2870aaa43c7eeb2c03f7910edd2259e5a54e69b4b13b2fe6fbf165cefb7c97aff87de666dbff920870dfbd87fafa4ffdfc65b774bbe7fdcfc3b7c9324de65ecdd242fdfc19123ea0f4e3a68affff3f1fafdd6d99e345c156fca5efff6ffff9ab99f1c7e3cbf6697f21939ede63f27e0746f96b44de3a3ef39b785bf1f2f6420b48c7afc9c45fba9bf7d6e1dd8fcf3afb79b79d171e18ea5c7f49528bc18f910ac8ca02dff78cc074e953ba972e11eeceda29563f95904a4a23f96236562ddb8d7d5b2ef4b4d84cfd98a983dc93f17f3d7448d94561f6a79346e6ade662e9a41e3ba95ecf965aa47e89d2db6cf89376a2ba60454f4421850ad534f169942522b6843f173e0c290baf0deca31a59492abee7884f05b66067a566c2d8e142c1806b474d27118dae6cb37ea97ecce3d7edcd1776d3073f1d6dbf9825ff9c33be261d55b7a1f0b7a37299edc900544cff5be05370f2e226afadd489d7572ab5866a927a4a52a9b5402cb45a98404ed979d5378ff1c85ff435a86d8f33513bba65baab2eab8c6631f757f152cdd027acf9e88c9462d0a379932f4ac0f7cf7f764f73b07f798b72d97777e9791f328a53eecf7af5811e92402af0b3d0ea3dd80796ca775e0fa12beb5bb4f87c5b385977ff1d37f5190b2cff97dd3643cae59115e2bebac54a4223276df235372203b7cdb858c1450dc8f4a1e1b08ee3714b2c7d351e048eb3b8f56f1a9037eaa9cedd77d87efbb9ddcfeabe40b2808a3bd0f75b7a14395394bbe49575803c78084207b11e8aedea8cd9a47f7951dfd827686e2512f34baf0e05d119d6affb766681c508082bd0f96a4759885fd143d0f63b4a6447134036d1abf78ecbc44c9e3a923082e02ad140c693411a196bc09f95ea6460d18ae333b161378171018d5a465bf300f49775132119c505f061b2505566eda9bf4bce3f3e19468ad089488f1c5c23092c9fa4121d2a82d3583985d85e859036ee1182a690cfb5a3166f73972012cd200b83577870894ea175afba0a9cfab4d4412dbe036316987474e3f31bec8764e27250fd8e88d15909e95425e6d743eea422d65d29cd0095df2e1afdb497e0762d77050294026f2e18448dd2c9f6626f27d9bed5b63dfed1fdb17dd99e5d923278c969efbafb6547ea7de86e1be888111f00d5fd440941175656bb334393c941fa32205503c03eb67e07d1051720266c099c0d8102038ec4728129b9d7afd684217fac6588512f408643d119559214a9e901e570ea3fbd1eaad4d825097edf25085d912c666c45826e95fe7094b10df9f510c8cb15f283f5ea5e9685c21de03d0b5de99250e65113121771eff519cb4906773984077de1f5607d17870ea3009992fb0541f381fd3edb3aa21a0936ef3b0c93bf2e2bab80cfc487c87a2e2cf298c4e685c22d6cc938983d0448936ecc52fc3ea0c06e7b7569cb15a7af42f30b22f6d0325daa0ad349d2c43e7dd30f4c4dd9bbf8d7afd1582f21e9c6ee4e5d91b4775211a54abb718709d3ce732a925e0fb173e2c1806b278d958704094cbf0952d27114f240d4e6c1f61848fd7006298c5490ef57c4a0d36e56dadff4c7497cc7f678e34e4562bd1c896ef7e3716e4aeb5659dc29814df4fd4b6f9238b76b3c052382275135c135694554ca04be27577dfd143f73df7b10f85971e02b50ab30386a4cd85163a2169df00d4786e442ddebe6a3a3e91efe4b678c1e4c3b30c583a7c961ff2f541df0880c654fc94e2725bc1e3a2cebf09989c422cf5bfdaf59d15a18eef916c392b974bc9425f8a034964ea9c3f6c73fcf298e2221997e1525904fb1469670e1b748a2a91a59a689f74206158fc7a87b34c821f09bed25e5154d795cc35ad0abf02bc0a2b19d4baaeaf4e25fb3674cbc68eebf3f1d9e5ecfc47f009de3145ce4ad98aae6594279afcf3eab6d18ec431238240b027a53cdb9baf4f59d503b754fbca85985429d331d13aab1cd1d9b508d3dfdb179db876d5325b1f58b029487c73f9ece67b5ee5308bbdfe980d909383b2171c2d825a9bb0fd49a9d3adb2f0aaca044d877d6b8ce77a1f3269eba3c5877ca17b7f0ede7d9da08bf1a007d4f4fedbdf8e53b61978fc62ff5aeaeb8bb6c1887675828d93dcadbfa3597d109e02296574dd3594221ebc84c3396ffbf29c2c44ae753b7a036eabbfbadb97f23af876acaafdceb55773e7f3f0bcfd72935f44b9dd9ebbcff2ffc7c5376f26f2b3561bb382d338d702b799349e978cfb37cfcf1e7e375803d8e2c281fd08c522fde9fac443def20c3063170d0cc488a7b494952ba3ded3ee4dd2fe8697a296edff1aaad802042e639d6ae7de706c1853ab88fc9519dc5b40ac5b47832be1dd901c0c446d32f067ad1407049a5b443e3d4b7406d11897ab485da6771e8dcdfa2bb96a9bb96a9bbb6c4e9f461ddb5a0adf2386bb1fdb9463b89167663f31fb0e46cb90dbc2e04b5ef858538fbf64fdffe793cd32adeaa429e97d1f9ba5731fbcf7f66c63df4d1cf24d2932ee2fa2c09b1ae099cc8886fa2f1a7f07722fad691d4d16f533a6d0a2a10fbfc2124dfac84f0d005732d89793c4b61fa4b29cce324a369e7e9fbc3d3b70b3b0f312ba9cb3bcac46f331a7b1be4faff365bcf3a097b5d52feccfe751313ed6cafa7d4bb86dec48457eeb23eb1a2c36eeee8a29e28078782193775467f6bdc3d7dfb799c0936e6f5adbcf85f908a3d3cfffeb47fecbe0fcfdf1e67e465fda2d2f14d87970f2cf4afc5d87bf9bc65862fdff975dcf8219dea6d6b4f4f7f9c45b96cc4c2bfb5801e109d5b524eff108de30267639560eff0b75cbf3ddedbf4e6c595c0a2f9f2254bf1d1f0e798012ad15854e45875d17a4c28ec0e021d99a0aeb0d5730b7cf04192630c2d62bf56371911005d517e8bcb6529a36b3dfdbdb3bc9c63fc20e2ed9d5c98e6cf3f66644f497a3f873e9911fad48050af0c6abcf7a6f2fe7be62df8f9ed653b4bbc2463fddaef5357071c6f83dd7b93c140183b2f71df59fd75e8785e77da3f7a6e953d7777b0b1ea3ef8aa2e6830888759e74c5af7fbd8a541eae5f79f1669d73ea6ab5937608043c5e1a7b87ff0051f11817ffb806fed80c8f026afc786fc658be3632492ef181c0fda0c53d7f9e469a3b141d7fc44c9d8a5ee1d715b7b9c8fefaa6ebe3d46a3f1e3aaf84d1da6b67c3eb5f34916d3f9ccfaf9e771787e996d08fd874ce305aa9725996d020dc54e424fb5e9e98c9ad0105c429cd0f1e8f1b6436da29502dea1963b4d780f02f82d2e99f868dbdf3a8f0a485d52eda430dbe0d9518dfeb4c533d900d734a9594398d0923e52271b39eb585965c851480875a62607048a86cabb55133bb9530789a4a6658d0430e4b1d5226b482cdba2a8f8a6d22e927811a426902f67f07d55c525f022515b04814fd8f05023490d1ae75b7fd30981f63712d37e96656ab7c6eee92b09470080f6ed9764a1efc42411e3940e3729894a3c209d4796294a42c6cc257116f9f08c8ef2e8d00c814cdbca1c11e7a5408df48ed2d7fc10582d7bc8a25a694288919ae26769f13e48b0daee0c802202bd16c5963a5732a25a9c2b7a0a7160eb54270b1da145e6ffc3cffdcb53777cdc3fee5e667687975a164d8f01bcefb79ee0ed190bd3614154fe3397e892494b46c28da77363002d5fce9ab8064f7d3af98b4e389e39b175d143606a148ff4d87dfab091deedd530d5d1732b20679dce99869a0fc69faa00af0e369bcc15a2ab973f478658a99d37eed8e49dbdfe53dbde776e83cc832ef5748a127ee54af73cbd6fad06a87b7a793c9ca15a4b7bdd5ff2290fd1d81b63ef22a27eb381deb392df40917da06d8bb3a02e38a8f72cf885c8eac2d40a5d584a13dc494bdc8d4185ae2e0634feda78f46041bee3a7dc234b7c6722cdb1e1361a3f2c61e73e914eb99fca59d8392e03b15ea249177990be73fa4e37a851397ba5551f0cb7cfeafb3b7f759fcfbfffdb6c8f2ce64a7ee56d4998f8b624cc302ed4373461ea591326d21f4b6ce8863181d0aa7f62d76ee0b70a621b500b997cea24aeeb2a0bd877f12f0a8a394cf82d03651d81128c834436c40309af3fcaaa4281a848930e819a513f3d96a33e9ec5a892295d69f702d3a5c311a5f697fe5ed0582fe1aa5bbf3ffe383ecf22c8907e071f0965a5a3a71b4e496da642eb1b464f151ed459bf2f337d1bc2a2d14389d2be9e75e1c8c3906860929e2e791a3d8490f88ab334d3e8096acfe266d5924805bab098f6a4a667452ce434724b1ac30089a4c50052bdf155b49bc47b0962713a6690d8192968925a6f6af424d6f8a855a2562142ad122a5a51a25430c80027e0e6d81a9768eef0676db68e1b8d9e1c46a3a78edc4da058a960bdea3d18fca0b39324c3e429e2f4bb254a4242b671ba011a14de3478f891c80a5fe078681c251a3ad4ad036b5290008852464506215e9812da598e7133cb209595da02bb19656e2442c4e3a073e9086b75a4d781fa30ab47801ca2f3e179f91ad561861bffab69e15f49495faf911f8fc7dd8fa70b6ae30a34885a027ba766b6939277e8418731f70459d1fba27dee9b34bbbe270d5d03cd39183aa1e253c98b87227e409923a862ca5642d1ef38b31daa0ff500d05992a827509e156f903808f310e6a9c4ac4bc0eae4c801b2a0a6ad13cb68b66f8300f64a5d7fe07cece8b558fb25808967e4778d129cb8b0421d5d5f4ca016a68703bc9664572ca482ce274a4bd2a94a818eb52e1b6db2242b310e5276cd3c4fe4ead3879836496a5d7bf17b2fd99bc066676bbc0450e039c17226a358a0fbaf4bc737897d9706d2d341ff97b7eac083e2c3de12a334ca3fb53a79a7de8057a35292131f072bc18f145595fc6194dc77744d2a771ee04be21e4e801e7e28d9b3c5c4b5955a374e7a37380829275640f6854bde179d23ea5fa3762cb16ea7010ca9e7ac3b289fa5c03f6351a8bde2e713522fffb54b855947ddd9818fe47e13f0336d9c503cbf7717a29ae96a81bd3cfefb4bf7fbf3bf9fd5b51218e5c66d4eff637ce4eac923b715fd193779b01267a577edf9dfaae462128ee4c498760b9202281425fe37e8c543e7cc92b9b9f69b701f18bc40ff6e6fedfb9b2fbf65ef9e8fc9d3b77fdbcec28b2884866ab6b55d9046d4b9b2961592a51adb936bd4a8f7867254d24d4682874cd0f7072994a9c21b05a12db455df1e1381a4107ad593407a7ea1a4cc72c9d80a1762332a7b5dc6a853ada10b94fea250abbe1f1ca0d094eb92f488bf93efb13065153b029f201efb5b169b619881eee868f55ccd2d35147f2bfa219876fa73de51cf2f4fff78da6df56438cec5d0ae381ad6e9921ff1f590168a7b2086e4c8e0917d073ad620607d06f16a1f26f578dd84aeb958cf8525587281b85d94e87d0960cb0d67ce5cb569c6ccd139e1705c42c2ccca0ade392be7bdd14465fff854af78f1b576d64b4a79af469e974046efb9ae1b6ce65ab7a39aabbae2000ff7460a49d7622c523276771bf6a4abd4cfdc5ecbeac8da123637a89e2529be05cdbc790a675a5de3489a6924cde548361c63eae663395de9fcd51cca3306db89dd22d9811fcc8e3809281075de432010b243da815848750ec2b22dea6ae6a2acac25e65189158778fe84ec573b583d0c57a6b02e8c852a240e9c0ad8d4f5e2174daab2d06cce7b501120aa75d918d8aaf319f4f3f03be0d6f30a50609075737769038a78089007582bd6e1747611204f4bb6df4666180a19d6da614df721c176706721e944707a3a491dd410dfe4d74347ad1410ab157e49e6972052bab53dd8d5dbc318fd7600aeef84acc99eac7bda03d1129a5ad12dbee2b564e9fe109319a80c9dc1b3401171c27b418dd8c2d3a95968f45d50725cce469bf64376b42f3da9ad135fa6658ff761a2e54c6c7d5fb4ad9e2d88053c7a05d83ae7606b78d27f878a60aeb52323344bb541a33858183710050ba42924fd6c62e9816318550f07b5ede8f3591ebd2e334a4e09f1be12dbeca9d1e96945e272410d63ebc072070163c4d7053511fa74846156c4d723f4b95132112859e8f264bc399c0a9633c73b817d4ee3d9a12b4364fc9f76b363983d92e430531a3ce28f02c7acf1dfe1fee0908600eee980b28432c45367d7b4237b1a74dad1e3ecf4d4026772c4255cdd1768b5a35ca4d6a15b8adf5e9fed377a33f39851b80841fd6d97bb58b18f3f9e76e7821c873a7b49961af18d5cd4633906a646da84008a9d136db61e33d7633ea971c115691d177f982ffec6928834ad24fb7a08a0d6166fdba20d5cb4058b36b83dca72821a8816939885427439ec91ebb570bdd61df7112abaebacd05671bd46386a919e3d14e899d2085c79bad21a1c1de3dad232ba36eb566799c18f3179a73edfaef1cf47aaee81851a652e7ebe604b5bb0a43845aaa6b05d950c8f8e21833246246a23e8c45a45391496ac9baf582af44716f664baac2d0b1522c50c5825640b56ac7758b1c131a1c4051b4751ddf3828d58b0a1c90fa8c1ae0d41a9526dcf7315079436e9ba8ee0bcc711a8cb1681778e9d73808c590eba477450db9cb8a6b1af2576b1e56a4e9801ba707577e7d94072dda2cec0b8701de707f653dfd8af0389e3b076c5c6753a2f5f6ed19ed4a2cd61c78d507f0a1f7e3d145a941855cf841cbe3e770893a47822af84e7e24fc812e604df1fc50b150749f28d3e834ca14da74007da56d6db7ad2a44760a176dcdfc13d1af15a2613ce14ede2f9d8b12bfdc8819a0aa66a4d38150be7b6c73e9f1d4921781b89274196e2cf2741c18485edd1079d57c8aceac4c24fcfa4652cecbfda0888e9769149e97c10e429afa90701fd7b444f3c452f10fdd2c9eeb12e75b6e8a883d603a106664c71f2b1f08e07be63c0d247f486652584e7048e8c2c5a56a579b633ea3238815c0f17b5ccc5e040733ae17aa70b402727d878615fe8159dd74d3d201651b8c360e5b1ac8ac39d610000e474e40a4e1dea9613c02a14ba1879501c47984bbe5535b6688dcd908dd5c6a98d9f733b8a30340883248bd18ae800af7d159cbe2f06ec1f1e141eb505242a633854fd8cdc3a9270a4b1a2b26e6a2173b3e659474988cc8dd065446341b085805664dcab3a4c5e5d6bb343e3f91fff78daddc8ccfe3558ac3f756108a7707b702d68cb7e8d547ec9833f7922db89d9f5af876822c414a757f2f84a8050da4c63380c9d83eca2bfbca9fdd3b7992476bf029b3943f6f8a51cf1cb3968af7f74fca5c37faf5f93b1616fbbb80efbd4e5ce9a38f87d97cc45ff3dedbb7f3c3deeff9843a7c2d0e9868cda8bd0658a2ca3de9d6c50a859da613f06818f8e16d20dba011726a903570852f48c4fa37ca9e42e482359ce2824ea8224446d137f1b81a0a9e85f96ceb3874b61119f7658257a0c931cdc3d90f1b1cf27e9ed17d4f397099b5faf46d988452811272d0b97f8c17dd3497940bd950d0be1907984c6df8d6481acb948b10fbad59b2c50ac06976ad983a240f7fed7af09618df0505ba910c2e836acf5f9f9287d1bc1e417c528baa50cdd2d6a71696e2fd8620b15095d42ece8ff42f1c3ece67ebe5cb9f7fd2eb0caaa986996f706b2465e8fb12ca183c47fc6aec0830d91428634688e81b70066a035fa93d79cad917b9eb2178ffaeb0a51f764b8f7361b281a9c88c884386ca6c599c0b6852e4253a9034dba43292bfe43692e9e4eba7707d01bade3e7586bee6a8e4b0e5fb2aed1dc225be4587b3dd88f28b67fdffef9d85d29ef442375a96267817665b16ee99679e5d04166dd9dba348413f5b5b56969c827d0bf65c23aece58ef87dfbed71df1d5fb62f67c46e0f056f5d00affa479aff51e67fd87efcebfffcafff6dda1e87bb4a33b1f316eb3ce781f58ee6c95ee6c2cff95de070ddda354ced21997e5d377e8817005bb6fc5a0cfd6ffafa0a3df369501306d5116db3f1833f550a9af76dec9ba0f9baeadf71fc58dde4f91f017fccefe0fbe38fddfee9fbacd22a41bfce7e09ba7f05eaa160c2c19462f1bd8d88adaa75a56b031682770f3a37ab2464403d3c299e2a3c5e9cb8b24549ac27a109cf3ce7f587db21e44af9572e507c7c9f75ad65f1d0d083fb8164632d90f4930c8168a07793fe19a9ffd56793a4876079c079e002606056ea517f71117929bbc72682b7f26d11610bbcccc0406cff27ea2db9bd3686226b3bb80d193c7863fa895b548eed9fef580e8ba6a6872a8e07aca5ddee82010503e80602fc18c2c6c2ec8767f62b48d2ef26c7bebfbc3364524ac153815e81fed95b9c7efa7efda4ff12a8251cecb9fe374ab4ac4f806b827aef0e96bb97cba9f263fbe78fedf76106abb7ebb4f2528c35e01f35cec4a3954202bda60238875a3415f4c15daf88f98b762771118771d19897e182c9bc1f3aeb571c2458e1984af13714402342efd7f9e4d75ee20a55d1282141f5b5c9127fc373600522c6761d2fb2002d09804b06d810513bced838c469e22257d088cde3719e3840f949255e76f9edbfa903e301df956812379bb7df1c0913e5ad5ff54b777cdcfed80d17469f24b7efc0fab7a99221b0498f3dc19952cba99c9cb8bcefc019b181e02b5d4384b51ca20e407ca653929ac7cbdd60fa66b6d2c68a2f7bcf246aa93b821602433a09ee5bcd0f5833cdbe0b35e9bf11d31d4dbf227da65a75f4efdaf9a4be137c982801b8857d34fe44654292a1b4306094be1c69bafa062bc5dbdb822d1199639dbe71fc3829540a3e0e55aeeb64e1a9531f6d07204ed3c3291009d14e4ca06a7ebb3679a9a0f8f590ee660d978bab32f618dd921a7d0ab1dd047683b51c03000e9970f2e2ebde1abb41829451e1e62f6ab7048703f59e65bcdc0a2fcceeede0bd66605fa3950c8a8315d88a7bcb8253906544d3ff16f924d86f0ce4c32a5ea93b29d4494d08771a06eef35ebd49643076cd990e0ea985e542c5593180802838bc7e45626e95256643fdeaa0cb2d20ab17b381e4b3dea2370e7fa3fc01879e6742cf948b85f6f3f8780665fa2518ee4d91cc4d82ecb6d806a6c612cded5fbbdaacc18fcfdf67668a57f3d78229bac19d0293010dec9d5383df24e60574add1e275673dcc58f9e6c407671943423a65c4f23071859f240df2766ed11762c23c63a13df1e7444f30e4d2e28901a902a471fb38cf6f36f221866f9c07963d6634ada691c282b2072dc99108eb6f887edc686e7cb28069b02d0d6b8efd36cc906c23289e786347b47a204c5d774900b74c138f4228350484a090914859b2402932c3a1461e02941d9e3f81ccaa8d1bc9fb93f44d893321786291490360cb91b829b46448e8782d06ad19a742b31c9cf7286c9b3f7396f08e27012bfd4cf008dc6540bfec0998979123aa4aac7a1a59286760357a27459777a26e59c5699229bbd61e07dd055e0f0d26e8cb4e6f1182127a7fd3e35afa746c1370048001b64d6d0f4fe9b08ad470ee881780fe14d24b289bc0ac8a9c4ec42222cc69195ccd8d36a866506f63a73f8e5cc3a390eeae157a38ce63979ad4536d2431cc6d507e8d51d63e9d27abaf6d46b5608365641ccf1379c848d3888f4c23eeb0c10e1bea90a0439e2b9cf0000201ee1061082032886b4396ac93046c3969b44a90b44352b3006968cd84343c5385e15b24e04711b8fdc830220f7d42012c8f3fbd2a6665c27cf5ae4d04260be8923ba40f993f2930fa75669f018d48becea75d981ef4382d1da1866a1bb418d4496cd94d42b363e1044e3383a8696c842cc01cc29d072870bedbfdd83d7e7bd9fe39dba313f6c7b9d8ccfa463502f0e019d660b0576084d7af802e9fe328ccc3d228b02c7f1f01431d90470d85c4149a2b930d014091370570a14fb6e204a595f9adbc1e103ebcf98ee3a79af88aaa92c5d2afa2cb6edf817ca6b6638372b936909b3b485c0e14952c718f0a4b7c70ccedb63409d6bcbb1cbbe3bcdc531d52fd0e480c24c28b1d13ab397641d79c036c3990efca3605dac843cb32ccdf2a34b02fc4967ef0cc568c78dc3cd17797191ab9a16922d77a9cf4db22a10364ca8b80e0214b980b9197cc430524cfb5f31a1d2a8f2286ec0b4ab050b58d65a33717914302f2f08b97043863ca93bfd6eb7767b7aa02fa7d531069edad298d743dd731c2ea223d74640f2dc9a7b088b0ab428ab7a4b3006ae5286287b10ef870381cd848752f8ea7c9a1c61615b11d449c18ba3714642e9c38dddfa1a7aa132d3b358fb553020ebd8a318f3c242fe1c77e3f9291bb0c4e73565a591e1230c139843440b807f6115956c2c8c1be0f560bdd89a25ae9b8066609b43e10836d3bada10664fb65b011c480ad4df0514635e33487225e567f47a92c5bdf35032175409caafb0cc06f1fb7926bd07f633e17db2820aa91693bd63a66bce03c1627f8b4301be13d05a6a8109b64bf3b5e8605509196896b3cf37656cf170be29280e6756409ac6aca0590288dc5bf68886d958576fc0664dd401ca8c7194e24c71c1db2a178a6bd8b874360ab225b6569276198d4f373ab48c07cd01f703d75d3aad2177d124b098e18a17e70e16842c16603d25eb739b89281000c83602bc6374b8dab021a7eda21a8f4b6f0a9adb16927a041669ed8831d12f7cf5cbda74955c624fa3c46fffde9b1db0ddb1f7336568c20649bc1e29ff50ef84b226dbd97a24f5a6f3289943349877bf53df48b93d5e76d97d679a3971b4398c5f4a732945d8fb0f63ced336fd10c631e2c676ee47205df6f44285b627a00f25ab7a89593a2df3d69c4f73ae34d9208096ba8f206a0934dd0d3557f74d30bf8b183791c3d6a470a3818759ebb3d02f87a90eca0911d75b5f581c869ede0f8d09a79710fa773156fd04993a5770f54f1f9743d314a43f4c7ae23000b9528bacbe26c008a8c2434b72c26279431abdff7ff91f76fbd8de4dab620fc5788f37c4804ef243e7c0f05bfa8011968a0003ded1795d255f25e613bdb72aaf672a3ff7b638ec190221461599959b5d6d9a75195b675890806c920e765cc31f063876712cacc9e14a5969d1a6c23bdb57665afe690663999cd8c9c03e568cb04289e0428f170a62951679a924637fd7d1c1117dd3e8d5abb4506f72506b3d96d2d94ee81417d9e93fdfc5c0b3571a84957c1b87a874cbfa26be465ff0a70d27fb4b0bf362a9853b72abfca3f59eacf7a64c0ed2ae62c0aecd58fb30bd59da374bfece52ea8a8e326ff0431024998564b64fb37307a5c2b32fcda6fff392a4d2e2712d24a4f4996f0e2fae669e9a49b17e07e3135d511437d540b49cfcbe0876202e1547301b6609a0f4eb5731340e332a1a809c004b662d2ec0b9e980ab69e8f5974ae13c98419cdce08dc5faf52ee8c1bf5d2fff38f9767fdfb63fff630d64844fe16e0cf40dc6412a36b5dc9f0e9c3eee4fe7ac65e64d9bc54f69f486cb61a8cc2c2aeb533a5c8d366efb03d05d999654b07cf4890e30269546417a39094098832822b29bb6330112a68587f9518fdf8e042305201c38a0311e6877ecd1ec7a2b646b64b9e10bf6692c8b9a10c689fad6d50753754e27f40d0249f644800b1342f734fc856d9953779d02ff5adb6a999e9d96d32e2aa406001055d8048ceee84d06ee60d8b1c7bf8be8ef24e19a119f00e14a0db5c20f60d766b1237c1f79e25ea54cc6e37411bb0f30d70c3b05086d12efb94ab13b9acaf2f7f8eb84cd50d3c43237589743161c16869bc3b624289916d2af33bd24ca0b3614421ddc62549c583e602a5a3a64080d8fc6260764939c0ba37e2b2dd4116cb43ce4825042c00e2189b4a59e543d67ca13300f259cce024d695ad3ae864fce4117e7df8f2b87b7b3c3ee8edf3b6ffe7e1f1302a4a49629a379228b15a9ba7e02a4d6096515431c7ba0cf4ba6cca0474a646ac0d7b50bc9970574c41b80124729dca189f9d3674bae46108d20f88f0a573cdab6b407ecf08a265101400b1d298219cb1f94e3c4f56c8a9604aa012be47495c113733a7c695eeeec454ce4822678e4831be154a58130b2b6b2ce13dc983c102b8ce2c5d0d2af9929b1356e1f13500844f5b58e0eecc7be4a81ddbc9ead5aad3e0ef2b38957213a136b85aa69a44aad42becc2205ac838a13ffdd5ea7d81ab04acb952d4cc12fd8b580f9c7256a9ba964a452ecab7ccb38573922340133553554453d703de2e383bc0329ec82a135ae8b734a667ba36d1216721e7c25c40b8d231e8d69ff9a213d4c776c44aba8695acc0c483ffa4674535bc7038fbf5f4b1a9961306e1581289b45fa42a11875b9e1f90d24f2aa61d9725b29d69d7dc3b47aca4e5d9d13d165d203d0e326a63ed0e0044c7782cb2ca554c7de9ebc8b29fb84376cb12238d5650ed3de8c1e01d022339f69a2935043c2cdd57aedf0478966272e8097ab6e0d2722d83283d574f7ad0491e362bdfb40d648af80378b89ac7583465f311222abd652da32d8d1cd222e61002cb529b226aa294be03de14606184b21986a9b9d700a0591aff0d3be93d65a4333a6698319ee069d7c832510913816a378492276ea9405c22c0249e42da5463610d33789b09e06f4f11eb2d02fc331f6133c676718489aa165fb5e3c08b6f1f4fbf5a814140134c2c04695bfe83ef4de42f9294c856fb5389ba6f00d146032f3730946ab4ab718d1862c4fc0b25a72836cd051469a6ab47ce7d1f68d1b11e01bca508c7778d0b08584019c6e4fb46c09e5ae42decd80e1f5a746e08d26147369e0c2a0c97f5ac45896b2c1f79a71b7c9450f9a4f92daccf32bb2c6284f25c8bcbdf0fb0f00e57dbca338d5ac456708cd445c1b8f5c883d364f796d32b615ad5213c5433d9094c495cca5c33d093f10979841e78114e17c2be331c77532a8aecbba65ad87e0dbf497f50525b4a11046b08629433c28e73241a62ec6bb0ee0854e33cc06ec02966338508f0d3721deca49558556c19a697cca65acfbfd14de457a8a13d6ad289b23b12d42ecbc928dedb6381c86967a8d2517c8ba2b9219c1619c2417a06444528f34cb9475146e492b33309fb2a6c3dfc34998a85da58da76ea82d771a9c6de7614a315f3d7324ee689974f307ff7082634f840c02685e26f42bf11a9f4ad401cf9624827caf295738b795847583fcaf58977b72da1859851342eeec162b195ad2f9d8ae8129ef6b54c033104a1cc01390c40e0ad6789512247ac187bab6810628571195acc9a5400cc490d24640d03197d8f72256f4259cb22df6ae23b7ff4266416d3630989ac6a8b69af7109df82e0a99590b49a7a1391a402385cdec0a219d3de633f69c5e9a09f50304803d0f109d253038371dd7a636b50fcd9ca07c5707126c298295653681ec8f046bae899822c41e675f3d63bbbcee29164c3885f07fa8a0ea929db23fc272e85655e20a6f7fb88aafa51197da3ce90c98c427a26895bf91663a4073e0a25ebf6ce5d22f40075c64035a12267e54cad4768e6d78b39f9f0fcb69dccc9a8ec6a16f1395bdd5799d2e7a97e6f625d7bd9c3c37707c6d619b21f9f48be818fff63b2ce2b7185b5ed602bb8d502bfde5524f59376aaaefcc6ef6d37e1b5fffafaf83ce63983cce925ea7f2986b12f472052d492accdccd3d9db018dba441f95c60a022766320f88bfddbb23688c545ac5a3f62b3fa7d75d203b0b72f004fafafaf29f0fbb11ee35a859f46121e070b47beb361e92c44bc893fd92a8805f94453c5e62e8975812e71512b8f5cbb2f0d542ad7adddba3db27fe9edef9d787d7b7c7871f15cf0fda5f2588bfaa4a06c2e6ef53bbb75ec7eb4a679fd0ddabf413877f9ff6ffac9b4f91390fa5f6efb86d6da24e264ea9ba9af8fde41d1ddfefb3f2f3693f1e936b3ce5ef4f45d9eeea57ae9efcfddeabeecea277c49c1033effa883a9596a80f67f0f7793c255f0b847efbad7f3cecf5efdf9e77932dc1895beb6136595a109e601d965e76e9ac19e701f8b15079f3967c57a64b5bb1fee350ff6264470790afeac681d9302f61e41f14da0ca1d90eb6327e46eb2134f76b287d77e0301c0afa2c5c3b38372c60de427c2c0e88cc4eb34a322377d2311f8c8a7bde61c7388adc03b93d5d8b6575c5c466058a65828002e42369ac54d86fa1e206598c5d88b0010e0899e7745689ab3092e83e74b83da0b2c485857fb935b50bf2ef947ec5c16266f1152b3a6547dd82f8ea2444233b606a605331a45d43575ad01f3856efe127ef8c371b9940b7ac28077828d001ab07985314dc847fcb9d561c3d0f6f81e979588601c11108c6032e8690a54df070d3104864f83bb3bc199d47fc7ca4e50c52aebe157dda1dd3b4c8101afa97316f814f0b27da87643ab85bee1430c9ec31472a35d762f915e44f4e91bbb7221852c8a256d3fb7d629975f1bd49458be1b7c70bb9fd202668d8e15455cc36581fa626f0e992533b23481330fa61708018a5b6a60b079882783ecedc17cc02355800d8f1c0bc0b720a19440f181cca8a3db07715a56d0155e640acc920f2604c1dfa449655ff2eb3f81f51c1534abb2120a3bbab2809cd8a18bb8252b733fd2d9e7ede6760c804e8674fc23c20754fe5d1cc1eb916593b206000af3118f1356d3529ee4db16b909b6693e032b094d7b7c86368718cd69d89397c993d5b94d89761c0bd350858113f9746e16c38f0c076c82233483e26ba21b6811d06300ff1722463d5432480f11b473c426d6f793a36f0e7298edf0a6aa5e1bf60520ee4334e5503bbaab96930dd31fdad33419e9c1c1a1cac5374693db112be323c9858333d7ae00cf3d7081af84a2844acef4f0e594013d22fa65671a4736b44511f096ddd9868bc6a770f72263f94cc1b6f3afd615c8354e08e26f13791d26eea9ea8a00cf2ef54d3839c52f02c29c60650bdcc2f0636e0ae06523dfba265d6ca274ece53e5df99767c37a2217080a59b64d7e8d64f84a5dc8e0529086838a0b14c12f70e089e420cad2a26f93d527a5d412a2f8baf58f133600264f24456f166e39eaa7cdeea84c08823991a29c60022978722414bcf9a10e770eae5dcdcebf6f9cbcbd3a854331485a276fbafe141bf95401fcbbdc72a1e1b256636bef403de758daa86604adfb06069dd6e469e05e755ba49cc68af79ebd9645d4dc2ec90595693fc3b91485d9719dd5b135d9f8d2c9ec9b506e27190073eca732a8daf4d35ee5fd6cdeff7588cec27ad77bb13f7c08944c3b76c3490a9a89471eb40c2c6a4da59c7b3ea61f7f23aaa92f5dba846ecb7dd2fe79745f9c9815f5e469eb29d6149af9ac0fe7bc59ec32ade21ebc7dc14ac907a601e50fedb87a376e2070ee4d7275ccb817f28affd3e9b5865b6794842fccb24a15f1f7e7f7d38ece7a2724b0ab7a7125f95745228f1cdadc4570f35bedaed6595bdaaf2b65017724dde462ca8edb4d0575657677238154e9f18012ea9dd5063bb102d5838a746b164d89d2aa71561668a954e8b4cd8ac7b56ac7b46b7b05354ab7b2614cf71ebb98a9258088d5cf1a85e1ffe787d381c1e5f9ea7203ceb0702c8e2473c7c28d2031c50ac21922ab3602eb2602e2a0b624114f92413dfef8bbcfb41ad5d85fca792af380521d54c241fd8d354c427f1fd1e054c8b8d39cccaf7a0f220ee2ec902656fcbac807abf0fa8538afc46bb0bdcc4afed1e780bed0e70038008ab824f400d254b96372ef516561bc97ee0c8d935f968f37598cb2dda951fec8f0f13e197ee2cdc785d26fe13be7099d7b3a9fa394fc653a76cd871de72ceb366ff309ac4e9c405005839df9bddd125474358567df2fba6eee7565196427ff43f04ac1a64487c3bdbfb932e0cf47fa8cc47991814f71615215c9fed77a2d8d6984f4db05fd6ee05cd6071a71202bfb22314bcae9f0806aebd821c54630bf41f75afee1f7e3f4342d575c4d442ff4f144dadae7fa52e4c0471c8c6ed0bc623a86e343c1fddcfebe31ffbbf49a9e6fed4204e90aaba551a9a775f3eebbc6b5a7ef3db797df953fff6f2f636327dff06d99d95dba4bd75477970751da450bc4c7e95aedfced570efe2edbcbd7cfd7befe5c47501446cbb1970f7e4bfe85ebe3e6cdf469c1933d9891b5a7bb830147eb9343e16198a76a46c5103658b3a51b60c29ebc6ed0c92364f283880244a7e7e6ac98c5ab59bdb6234f6863cb83e11b6dc71e775a658e564774df2bbdc6ab8d0679a76fca4bb0f2ffd796b4b466edfdf2563953756b663d994c5d9310e94b31161c122e631ade346fa81c894785cda78d9e8b12163f3aea672133f188a3538637530f91d4a16806fc0a837413b150ea6e0ca4e01a7d7cc7be395d3e1a07106ab9d0e10231e28498c054a2901100450905c443983b4b40a26cba16251e8f67a67406fa4f06d39cea11607803f1535589f9d8ef2dfb8b71eff9868e3faa1a42d014b68837277d574e2375819889af01b503d084a85ac3d8042daaf220e86a23a811e38a338aa510d5543876e5cce490d8e026143149dd779d07e31f80f205020e83cef4ea167574922594dfe880d49b644d49a04b7a0f23a0b2f20f653fa9380e7b55d7ddaaffb37fd9f2fe7fa8f612246d4e183b245250c1d27926a13a9dd50344eeed77312680c26d19b328207fc96613d4d56ced556c55b9318abe5ce23a2d289c90cce0c96f4e082a86d41e1848c9da9407daa8039c48254550e168d46db0230a57fc5146f1353b507ee30cc50c4b8d20083c6f4d79cff4d994556973a3c6cedbcd09dd09cff10aae02172e464389efff8492e37b151dd4eda2aab1a4a82ab0e3a1cf8870af24f81c1505ef00f796fdc8c97b7eddb83fef2b2fbf6f430cd9def99dbbf52d5b060e355c658a85f9889de0919ee4f162fc8ff8c62b2bbe4c59ad9c887697dc94581ccfb596dfb32581b6f4c72cf5900eb47d2d5b82049e3c8c7347bb28f0b23f175547a5c545ae2df9fa13c663ed0429e516c8bb2f29b4286ada8edff8e037ceecec3f6eda1ef1fdf1ece196cd6cb9259ab91a43562b74981416a0d1888d78851c073d61eb3224fd9fb7d77e58c20351ab6ef8fcfe90100076a5d679ddf9fb23a6db88dbee8309cfe7482d3f1ef4f960bf10eac14f89f064ee883893a9808a45d68c798a0bade801d2818d45f701864df427840ce8373b02c5a753dcbbfe5c171c6cf4f460bc0cece67aaa9b3930167e640487cd95a53b5a972f7f927afd16b2ecaf6c38b8ca7c8f14c300822d5656f7414ba96997cb1726065779969031df68d0a28919eda92f616e4dd97b62a21c860c2751ea0cf9856d5207be20b2b258664ac7fbf1737ed265ac78538415c57d5bd3f79598dc2c681d0341cc775a187ddf6edede1557fed2702a9e4b2fb2b233e4086e4abfc548ee136474e1d86dbc44600abec2918072c51f8e844aeb16259316ac442046797ed549613758c9be1d38a7a4a7757e4087917625c5545287378af5004ab02487f4000166128219c279fe4ab2d6901391855ca336247b50f3a1db6d1058dc7e282870b3c17de04c04c13ca12ca168e137e0cf3d05a0d9488782d859530b2a8e87cd02c92d10c400ed5323b4b0c3c3811648a7bce386b7b4732bf94b7d604006c036a45289f6701c467680949f810769af586a3729e03ffa01da58650ffa8f66776c77afbfaf2edf9cb886b282aba5688d1d7425a1d5fb069c0d26bc44e00d41664bac9e120538e19573dbcd30f944e7647c88a29890fb6cf26b84ba4928ebf4cdfa1e00c26bb0558bab4a30bd9a26423bc2bb28c242a487b992b45a50312bf96351ec69533b914ab0c1be63b733ff4e542de30aaeea2258e51e788dc6705edf45011e7ce84577789fad1ae221a9ce47128078a350f08e973cb91f5ab84ca97a45b5b50a533c7705db407b3330eea78408797e10c65d2eda8b1088ce5751490064c87352d3254fdb8412e134cee5a933056dbcb8b77ea520f128289ef4f9d96a570782ac78a3ba01e510457cb2f99fbde2b404623140a2161820928a69355fe0eacc3b2fff0abd0632413310f82ad8dafc0bbe405e4cf004bdd7ea40dc4730c57bed406e2c5787b36be3f590b74c8d2990e23b2c1e1f7e854e355096aecb3c7efede1e96bbf7d7bb8baf2e41d458a2b571c8712ceb6f630d1f5036b8f742ad0db5c7bf2dfbff63cc92c491461bdd0eb3a9cf4bff60b7a5f87332b8ee624737fc55954f8f9b32c0ce87f9d3673e460afeb8b5d31b6d327fa62606ea82684d14441e17d55953c3cb22056f99de71bd4af1da746a7f2e12f9c23e27db99fde99fe10c7f8e18bdebd3cbfbdbef423e36891fb600e169f075397c5abd3aa6cd23e4dbcc20be9eea45829067f7310e3b1daa4da13a1e22828ef593c132c582c0a998f4ada355dfa4170827436733ddfd5cce2fbf5cc837da5fe60668a46e37628c26eb588948b886bdb31c7da9b12b5e7d8b2dcc7b5fbd801ad550d70aca900cd1a4e4c3ee4a6738741800c07b46a2b20338b3665a284955b49e461a271f67e9f544225819fe0ebd9ed2310ee4f8468be2f8dd842d5c863dca546e7a1da1f6599d7e3030ff8e1f98b7e7b19cdd74c6ada61e708da69381bb2af82240b9b03ab5929451fe04cc91ce0a60a1f2623fce5f9b5352cd91d756e519ae7e4db6a101bcef27a55ee6e50173e6ac4199b4631828d8d77826888b154f2e14c896dd2ba1aafa201b5318a1a81e4634d581cbea84861185b89985f5bc0f63653b26135a1106e598f2522e1d6bb7ac26c9c54fd4421c0c4bafec1729c48baa8cdcce13b5c85433c1585618f8c6376a9955aba465d4352afb02ea656053e9f0a16825fa86ac79fad2548365c10c81d4e8821002e2bc80708d5969346904e1fb59795a040fb8b464833459ab0c3072c1315615e922dc06aa9fee88deb353884c04b0593279f34749abcb1fc8a970416e7a6aa21dcb343bf34711e946e072834f5ae4928837520709320b318687eba74223f6b1c97614a5471b8565d314c9ea7edd7ffa5a74e95d70063eb00deaf5f4ccd51fe9da281281c5d47322b168cad74cd42e4b093cd71ef36ce94dc3bf294d5441ed64ddedb4d30251d5a2d6bc31a5aa8b5e7a378cd60dd64292a6b676b35b11cc5d1ef492850a00108c3202e3400bb27b96e4130534ee5cda6f8f77b0b77c0c2d405d5434dbbb679d8d14682fa84a32e26f55eb963317112537a787d7c38e8ed972f23244b6a8588213402d2062bcd7083a8ee0ba8563af3009dd069e2249d859ec55bf26b88c0db5e7be537d68f74476e148c081f0b4684a19e4f2cfbbb6042a63b1b4c762ac956746882c868da1ae0a3da5bf22aa68a05fb5a7bf6fac419747ef3306a5c1cebe0ce49aaf676b05716f52ef6763e1abb97e7df1ffff8f6ba9d2a6c57802ac30eb4fe9e35a8608f65ed33e44c9a1a3d1eb2ceaeab419a1814e70b0375867b4f47ab9e472bec2db444bf6fc0e2770d583e0d585651e593df301936db21f85f833635be3f0593bd4e2684bda9ee54f48cba15138e0639074751ae8090c55e9beab912523d0d6a60c1c4d89b944c8a3b905ee2ff406c20391e40f383f7c1781079b33d1fc6840fb361793364d6a271e168aa5d6ac1a8e6990fb47c726c2d83c9d9e8a8213ce6e4cb3dc88f52a3a140c943e33bcc8c77a37c796b82cdf2af95214bf76794a4f0d0ae9547d9563e0537cc0d7db2d424105b0d429078730f11306c3c8db0023517e827f445d81a5f9dfc1bb522f6147c8b5b303ab67a0c850da897a98c9e2f90cfa33c29aab2c2c684851694f95057bf1bea9622c959a5d7865b6fac268d6d859d06deecccf14e186face1319ffaba95ccdb84027167222a2941017013f2f152136107759d4b8585f993ffe5e1f57114e497b518748f6eba1883ff18d5646bf0aec963724ee10fd930e3ff7b2cc4090259eff7d6d12ceea5f91eb8adc5c4d21e0221f8d28ea55a64b3a2ce1f5828ccc010d88c68b1a18def614039e3c40a111be420b32e364d5ed2dac1200f3893fc1837e0e423447c3c1f3dd2989d87af1231e877c69be44887ee4e58417165d4070bf37f83816b695808b486a2ec0e3ea36a941328b9831fcdeaa946bd8e006e81ede08fce24bf5bfa0aed32748db1d418cd5cf6f240ab4f5d4bfe8e7913c46a2c24f2ade5171353927f6dad29b482bbc67643de7c1cb84fa62e6cc0d384461577cfd4b00da67a284dfb7332ad38967090a7d79dab404bcff24c31f51b056063a98775d643ab130e0152d1373dbec1d4d2260224bb3917c4fcfbcee9e0210ffed98c281a49549b6722d7a719615cedc151e9658e8332e8fd899296c874344a1147290b72bcb1ec112c53d624bbe5700c757a90ac44cec18162ac118850f199fb1f3bb6d5cf349184dcb8bab83fb1a031c8b5f78d72493ea218b69c2a84360e277506c7623fc72a3f78e583062f72e891451158ce2dff12c7f1d742fdffce0225244f34bf0cbd23520de12f3fe8ff51b6dcf3ea214fa8e2f379869079bb232d9335211c07c6ada1aa1a41356461c807c93e613d32ce4485561b4857e34d90416500f1fd4947a66a2b00470e814807f173fee1681590b6a956dd666bfbe4d7025c13c2a4e265fb0c58826b72f2cee124f86bf278bdbd3d3eff711855e97f1cb803c41c84028b71cb393ce5163a07ebe67ee3383bec70cdfbbad0b0119320bf64d5d58ac7b8b2c708f7222cea9cdc70034b7157d43e5da1ded4ee98e406ca4d25fff36b2ed1f73a95af9576aef284f2e2b0dfbe5e1446588fca887ad4751f4c4ebdd36eb55490749cdddcdecef973b371011bf631982cce80b62d1df171ed9a89758de46236ae6c6dab38eb188b501f9761e101941f9bcb48f9e1126ddc3854f05ce90b42a7c37e2c505a944dbb6052ca5a9699a2b2cec679f96d65e704a7192260de940272f4e081bb09ae6a597af16c95a4a3090181415791b90aaede59554c4ecc117af1ff6a74b209a6f77bf0253abb73a6eb98840511231276be0b2000e2f60c4a31e4d83b9046024250bce637aae97cd9e05c939b3c43cdbd720bc88ec355be97715503b8a7c351fb953bce40a6f3131f7524e9cc53d02807ee6491b6f9ce0653a92c67830955796583f2885d854a6235880e1753fc1adca9ab6eb71c1afb4bdebee8aeaf8fcf7fe8ddb8d82b801dc464e0ccbcb62b31f6282c9249405f2aa8aabe1fc1b38aa46f04fb132b9ced5d8061ea40301f9816fea40c94696fef555e85cfcb30f7e9839e38471aef93ccafb8cfc67bb18add2af1fe539e76d8e393f4d51871d148b37b1d74b80449fe1402691926f97e9f55820a65dea4f7fbd05e844d7a7f72aac8846d02a59e9aa0e75753cd64bf0a9bba2fedc55ebb0dce34bed97e3baae1ec88e4a2b618d6ad9a4cf6cd10aca6a68508625636ecc0e4a04c21a1644d5a0e734da564e928b9d6b81d4fdbbed7bbd797c361ccc4afcae0347c3785f8bab4e2abc1ebb85a909b587d0566cfeefb63c985d1ac1fa3fce28dce3ae3e9f179c4a62d4bc6d5bde76acddfe5b92744dd1644dd33336062b15cbff61cc73bb1166e240360d3de1e77ff1821ae974596d799fee14d83db7bc5e8cd49cd8fee6ff37b0887aa7dd48bf17137cd7c3fbffcf97bbffdc758fbcda7a06a6f4aaef2afedfa70774ca0dc880502a065e0e7006258f531155557f5684dea82b873a015ee8a375d8a7298b19d3c521666af75f6645e8c2f14d79504756163e3e81b4e7547104927f17c175b4a6187884b002dea76a6a3129af8312080b11924407553659547cccf17929714f9120802b37c8d37cca6fe72ba903c3060752965ed4c943d7e65cfed90257e6f4d642b65312c23338a14baad99eb685cf02a9952766c04489d9de972959e929b58e58db472363720c2831bc9eb6032f4524eadec40a68d104aeef25a1ce758d266dc4ae94cb652da87965e34b28dfaba92f5d005967e42e8a41bc2a75545e343dae4fd30e6605a7232e01a236fe16e3a3b1a13b778a5b8e6a0abbc1a0fbbf85b7b0efb780ebfec1eb7bd7e7af8f2b83d2fb651c92adec002967555fece3a22311dd28fd6ab6c68a11a48f5285327d2cb478d9cb96b1a525107030d140d752cc07b2bb0e24e7e2ea41e65b72b84cd6544c4a05bac6dcbaf435b4d3bb23e886b8c800eb49ee5473dcbdb9e08a9881c8213aa50f1ab5c2b078b7726a86c483d4ed2eff8913df55468c0ccc4c5101e2c26011d204b5141731d159d356edf31e1ca20628b20ea53e0afc95a236a61501b64ca5d30342555324ed9288675dc59e4e1bd062e1d2432c619db028f97ccfee4eb47418f339365f6e56c0746608116f978c01c3677d4c6bb821f0844348b4752947fc3c2a9ec12b30afd20d63fdcb0283bed16166569f6fb93d7755e7a727351ee5356eeea37ae9efbfda953e5a70ed7e1270e9f8ea6def65ff7dbdf1ede1e77dbfe9c3bffdb86d6dd34b495d1b8d3d09e126e17e3bbcc3f32b5439b406f8588f9114cf6ab6a5c3c5a63c557a841f6bd606adad8b48fa6734760e2f6f2f4e51edce0de9480aabbe0743025f424e3ce6525cb2774423bbbb29db1ebacc4c2df5b536c6f12aac4ca5e36621c1fe57817f6a673bd351dd413fdaa9a8a97598c657f6d84f49787c3ee5cce592be57caf0c96ab9b720aa6de30609f956b2c3c78df373a6a3912716f8106e9f60039cb9044f6a36c95e013f77eef8cefc9cde73dba9ec7b06b29d0d7cb0e611c7a98720ead2eebfdc99ba23322aec1c4dc43d552cca34db72ac687a335a1ec838c21b932a25854beeef3264d73611895f3381495e73253b72f269d0e57c1a09f1daeca3efef8e1da23c7f3df7319b79dba7e7fdfb5144e9eadffcebb5bf8ac57ae638f83fe647bba36dd108dfd647fba4e46fde9e5bf674c9fbf3d3dbc5eec6d9fac98fefb16cc068c608694069a98bfdf3fc21f2da30bc3dc6e02fb9a6d1296276446d6c016780f5140e4735ca15453b4d4004bad3005df053d63d3dd06e725fb8599aa5cf025c75e0a64a32789a5cde482a5b47335296f9d091525e3f5444c0be5192820246082e4670b6214c0b5fc0e180a6b02d00e8934aea9614bbb68c02d71201c2651f6b04726a9698452477c2c00dbf926b21dd0ca4802d8b61935519100b07fc52d4463ebd6246fd2c9c90bd0526e7217143320321c24a3d8eaa1c8edc4820e08d848cb8d939bf1d9f86208de08406804e94f2f9358ac6e71cac721d3ae8233d3e593485a453a39c900b0ffa9ef915842541b2c33218b981d75e1a940ea9baa3acfab216709d56f690274b5490c5a29349f8c0f5b19e57c22229566c8371bb5685399f5d574756b72340dac6839a5ba6a72cef2ef743c54e877c48837f51ce08c62133bf0236ed2d4d4bc49584aedd444218cc62aecc9581a080d0a3c2bb14285d70a0726b607ece86e809aa5013b5b7933c0054174396cadf1287f1aa04032c533394ec9d149a171132cad8b24fe685e59bf8189121c539d648e167bc65b509ccae4a5b40c1eb882ea12ca70878a8f329b4d99f184fba9d2ba8d3365ef8cb3c7686cf970219b6c537ff96ab635b538f9775eb348b7f0b76c57a375ac245d4dc0b4a9edf113af1c2078e3caaf56dce35800bc353ede59a71069b14de5bf3325a1928b14aac5359ed96c9cf8b329627280ca3a901a3a16532a13ef48f9b3a96a1088f216d2702c4d14c7de63f9c9f2b4830fd301ca15bc2951ce05056dc83d5bf2683bcb98488e9aca4d98f098311e6b928f604a4d69b49cb9414b391058ef9962cf3cc8036c92a9e53ed03307881026469d797bd0b68ec6c52da4b84e8f36f2330c5037913dcba882ec0369558c8d3bccea807b810356c9852cef05502ba78c092d0b9c97410916dcc5d07a8a2c2a653d4753fd70140492e52ae041ce9e42611514b7781648ea521c4bd0a0c3056e660b655bca338570e062815d0db13c3a65d9129fd204b421518e0b85447d188f5720ccb6b8e5269fd516d058b846114055894d0679b83febbc00e550f939f89c1df70572d29ce9b8099b6fa4d4519f81f3c000fa3398be29882542152dc6aca13ec03ace3ba0c479d2833a8e857a3486df1266d80520c4dd899bd942e0d7634f95e50e9b07287601b2e73a09883d808a4ddeb050bf33be3f815a3b1b8fdd8f280f9728c417c8f4d468ea7393b54674ca118d42104bcaa68b4753dd5e36bba337a58827e737f4ef3a00c13d69a85921e0e49118af795ffbc7b7c6dd7618f3aa76ff7a06df4a663790f8790e4f824580ddce1e4ca20c8f326e81d76b29c3e76e3b975c36aefc4f6ae1deb16c3964042ba16958be9f54648daab2bacac7b80aa0474585339f2e5929806674628b27c0cb346e688180692937ee6e3e5d58d54dddfb4ff887c733e9fffa36867bfc3d647960949bb00f1edeb6bb7f3c7cb9204aedd4bc36704105dbeffd064959db2da83397bd9eb359be3f393d63a91923ff471022bf89a4515c655c2abddf473567e55ad4bbf19b0c099b25a51e39df253c06142c9f54e25cf5072195b2d00b75354f1d4efb7fa4c4daf5a8f1077e379aa2830a08d54753d645596f3cd8ad6cea4dd5918434a0928bda948bb3ea87a7af672117f0da5adbeb8895a58435a8af4c944bb94ce550dbe3826bc8b0daa4704987d2871a288c8fdcb1ed71ddf7fb000cb537ae37b16a6f925b7b88b2f71e9641f4eba2e46328bc35eab28026b4da7d64a571606946d2e99c93fb79f8aa7fdbeefef1e718b5e05080d8f48d69fe27679c3f739683d3d46d6650b52531a819bdd2c2581a57fa603c1865cfb4e383d49bf36287c916313dec1a5731ee6cfaf0917de5a8dd82287cdebbb9f2f642a1f1d5d0c9228c8ed8895b3aea2fa786b9e88ddf5f5e2f8779798100b6050528dec463532bc8f2ef1466ba4d1a9cda2801be59c22edf3802c905e8cac6ce107ff3d9717d9847e4a14e2d8970cd27e05c47e8fa255e1ffff1f0b67f7df9f6c788b35ce55561790d6ca74a996a58aa5da0f7e29b8207347f3c756ac5da0b03689ab6233d0354d3646a7334fb13a544b05d28ad13a95398dd0116ae0f3863483bfad796066fa5991f9a738d13771964f8f2abc97da7410e580c43ef8c931e8ae2bf547142dd6e2a65949a8048750c8184a6ab5b02854d2dcb8f3c6fbaf2662dee3cff5a642d72e4323d3f21a6498124446b288144d1531c193163021df19c4ce2a7831f4565185fd122281e46a641c51eae625715a8133a887e47688ce4787d23ca46b62217a59f02a4683220c30ee67280d797e15f41a4d83b1911ef0c005d27c78d30efd4822c109d26eb4ad3736aba3034514b5344646db727210f8d6ec2e30a50149a623a360c41174aae07ea868666d23a46f802cb7be0270e159e830ebffc5b89a7baf52681f5b19c2c3d5fa147bdc38c08a881821e853339d011a66e35e278b52dcb38d2350f17131afce628f69539ee11ff4b90d50c54d42962e225d5287c1a503c44589a8af626847d4d0b12a5c681d39cabf630410a0955620b7a871fad82ffec1fc638c646233d007e7fd02e4c03da7763c3fb93354103be91553479605b5b43722c6dbabd36c0e5596baadb416fca46f0f0caefc409104d71da142fbf0089ef342b0c646865b9a9450337c0de89bec9fe4a8758710c129ce90afa80ac3c97720740c6c49cf973fb55ef5f5e1fdf5f9edfce31f20ea6c6da7451e55577349d13eb52e6c6bea20aadb187bbba847ab2268b9f4108df774944102c48fd0b044cf2380a458aa50fc2506b716572c3cd4e1ff033961aa013560455c087201bec7ad65938962ccbf6b40a26f8be51af2fde65305e1533c01bfd05f4513caa25178bdffd8435de2beb3f9cd2d23f2882b81cc5e3c3eb24875f550781a07555a60b9b0ee42d692fef64e456e3c6ca4444093e7dfd5116c3b50586855ee3982252d69f51cccb5d5c2b8edf9cfa57d913e4f1143f5ceef16cb2f47a0f32628e22cae597417e1664ce71818b656c509d67337e5c8c223ae05ae8937d716b2a87ed5e7e1e9adc38a4c15a467cba72fdf3e9b7975eef1e5f77fd88ced49bce5e08d4a8d14b6dbb85738c81b2d6a9643a4be8ef4db4cc4b06d60213ebe7851cc01a2fbc39537b9dddc197c7edd3cbf3d88e2de22f0c028c4d260fb129db0f7b9fd7b1311dec744ba930cc1c68c550e02d65089a07136a7fe22af02a2a9673edcedadb897a6ac9447b107bc127bec043d7f390917c5245f014a162d08a19d72e3aa813b5f635ac3cf58b90f170ed4ee6fd7011d970980e3f66001f75f9bcdfdf5e1fb7cf7ff40ffacbcb9fcf23ed97d07a7f3277e6cd504d3f2e22cc634d086288f441953dbb09c5ccd24d89dc9d87857a82a0cbb89e204ceb09aeb4f9dbc84d40e651ac925e7b5950cba9062fd3ca8dbc195c371e268ca271958dedf5d06a329704d6bb518f0fa6c3f5ee4638b8058b7d13080d6388c9dbf644666d95df3a35a4a99c767bd9c4c3e83de0454d2ca98f264051275837fa1cecb9aeaeab292e031a68cf9f6a7ca6bab505a6b6985acb2fa373ab2c57dbf8f7276f4211dbb3234918e864c196c9a5c7995a8a9a7e32f007d6522637f78f07bd9dd041c9785c09ec061d3e88d336c2e3a0c2b950591e36ca97668b1288dde27a1c7458dc661a1f73504b1f0795de9f820a7d94e755ecdd5c315daeb7cf441341bea2a2cabd1c93ab8e08492d1c39922e8c04c0ae0b604e59859fd0e51d8fc07f3d8e4809b10b24bf17db726da3ca4cac83a203a6b832b56cb08aa06e93e9cc2e185b615034a697a3a95778488eb2285c652a396a23ab6e2d3a189cf80e10b9026742d6f82cbf562d9de991e74b195b654f7f3baf4c297780be22959f98258926d503bce9009ea31af6e089119fd8414f1f288046d70a457d20221ce730e014606e92c7d5dd25aac97520c29516a6a11af34caa3263de06090f7bb46b22908554a9d4558fc69f7e931015f933da1af2d88a93415a1bebd0fc1d339f90ab95250dd44f0aee7e000d4929a686f77b6b95edf66e53649707d1a3c2cb953f0242a5638fd88578e2774c2c7963ab82dcaa028927c32ab650719539af6c7c5e7b145974a9193584b923c26ff1c47569209618cfbe87ff7ad3fbc73ff6fd5893a72adb4176266f6ee3012c47c88f2388b559508e3f5cc6c17d26db9a656ea1683304373c496de5e76a5ef339e174b4dd27dfd8b53aea4c1a56ec4eded88c3807333be5130096d32893757b7b0c7b8da2df1b4a6f471dbc1fc73c57f682ebedc8a05b3a53be85dd048adf8ce6334ddb7d129f04a1d33094873950df9f5e44be282ab1aa2c0f1fe54d19bf88fb6931eedbfe9254249aa46cd76be39719e8d2470c74ccffb996642747c6011094485c16127e77a9c97224033d3705919f05347d04ed86b462dc8361ca9617c49b472fbbf369d8cb712fbd62c5662ea6f4269904c201d07b781356361cddaa921905207f5086808a3d99c48ffd51bbd5c0246ac6199336607171c026fd7b49fb61c54fd88bff9581957569e42223a6925cdc88af259e66f3e3d289257f75c9a8dfae3ea23ff1deafab786b9bb8ca327d8f16bf3df4fe714f32bd0326c5a68c5fc4e14551a9956eeff3fb7ffc8fffa9b85785a2ba7f2b95871fa83c16893c6ee4f178dbebfef1f0f6173fa64847b6148775e30775fc2af2d5b831df9e7e3b4cac7aa7dcaa3be685756796a0787f42f1bc8c76d911da505a05ef10176e21dbe6e0201e2dd6f4c08e818d229e0926f0345bf087a1065aec5be0dbb09de0ec499b4a78cf106e8f74d770f240cbac6b92fe91ae963385a2ca8077147c07a8477220750d13d9b5282ace8208e47e50a9f7fc34b4df093772578c8fa68a2987a066688cd5b263415ea9d52e67e8f2c85f0e8945aae9c72ab30cb13b2075d82b90e6032e0c2adaf2a082e5832a5bec45ed88fda4e47c47da1f2609a0463f0460bb41d21cc1703c362483012ec9d1f70a64f400e44dd901219887a6c8708b09123cc38ca3516ee3300c72d706d9b690466313b11c570f1573b62f12a258daad06aa4b6338e77373e4bd45d61327d758c33092c4ba9e1aa81b888fde1c8029bc2475d55beb86c621fc02a3cfb7fb3cdfce871700dc34349c25ba007d36789210ecb7edba4eb7ce66c4818f05c76e189a337033d8115ed737d41a9229d54e46bd44c68041148827246706fed99e84cc42ada696bbc2e957519f084969a830847a4c3bcb79db89234f4698241f819448ec40d90e49da87092f33a632e3d431e3d4f901a7964ff32d4064e0fc64c99d4582cde4d16c4f229f376276c3f0cc9e4e024815a6e3f0940fcf7f6ed3aead0b1a8bc879f2b5550454838ef05f3f2c3738bb5f18ecf77b8768f7d2a2772d3832293a0ecc9ccfe391a9f103423754fb4faa8ec59dfd1c535974598abf87892eb5346f1637b4e92ce27aa2573e0c6aae101f1ea898cfca80053c26cbc522ffb6a2eab7c7a7877f1fa7b4d5c98485ecf1e15264fa3bb15655e5290daadc66fff8fca0b7af0fdb19ac01dc31559eee0cdd5c935404a92f428b7750e588b29427e3bc12b7352ee23b8ec07678253ee9c6dabd751b39f5fbdf235cb37077bf6d5fa7375796b13f3781a82eb5c6de9fa25a8253cd3ca94550c4a5fbf9fee4fe1e5cd34d38accbd4ca52673e1c1f9edf0ea39e043c6b6f8fb01483ea56fef432eb72e1515c30751f4666e9c41779bf0fa0a75d3a7660a6f2ca44e5e7873e59883df07d124b2b07929613f9cac6aed2f58feda5dfd52025b73b4bf7b179b764ad6f22b1892f820aab34f9288d3eda6b3ffe6caffdf0a1b6edd6f676939786073f96004a1bf08178edd785fc8c79460972b954269daec51fdb7a72de7cee804f0bc642bcafa8a0a20a17a9beb54309e4dff7cc9fd511b32945d9830e064b14e27faa98ba339d250bb6035f3fa4336bc51f0e94ae9ddc40e73599393bb03f218855e5966d563c75fb35befccb884031ce89d296a4f1ed2a1ef1acd8b89465b17bdb2dab43e763daa74dee9d0e2bdf3b1564f1e83ee63774d7e89c2793e975fb38cec4d8b0d7b6b7caadc47777b27234ce81e17971775641db16ea204575872cafb3721ccbf163f6fe2487ece14e2274785f55de878d5fd563787fd249457cc84062a7233ef313bd8db7d7edf3e14203a7a0defa83ec8be7ca915af6254db32f694fda6810880d23ec1b95a5153bd767256e1f1932acaa2a7c121b5ccd17dc3936ef3ae1145728946ba1a8489c51c4159225632feaeec495b80bf28d685c54410531bc657d211597b72679aa3f5294d5f528b4c86b6b82aaf292fbb918c4aa222c509bb0d2e563a80ccaecc8bd58e163383ba41a1dd91dc0ebaeaca9900da8107f1d725a99b50fae09a33466ccc9053e60fc5a17d4c607d2e8990c932fee0740a787fa4e642aed96ac5878bfaf38a35b5b080a0665a991e456f2c174ae8d08a948a6065a3febaf0a0199b8b48e2da0d46db73737680fe962a2ba9e0a491f3ffc09645cffb6a31d844c6716ed12b4952a22f355301cf57c191c0fd3c3c338ef674acc1b8bb0713036f8b555d6f7de94020e98b0f6aaf6600c0dc6d5bc8e2af65e8b41119bf727ef5af996b6384a0e92cdd4f73a919a707af9e72f8fcf7f4cb3d84c7a5ddc0bf64cb9a80ec6cfc9db9013498ae1be6e28dfd90463a58d86d950f0add8239f5b2f1b18232c09d267cb59725f813474cc841f91f756eed8d0041e958c85297463ed8138d388680c2fb52e46dc00278f8d89c8acd8aba6ea1c105dae8f20bb701c96813174ed1ae2a448bbaac945e1492b43cf60a92ee0d83380c747550e17dd5a9876778d66d67bec173171bb904de57285b289757c979d03bd4aeb7ae0c9adc965e8d9809ead4331b25d4a1baf2d0227767309aa38dc989bf9f3e5b2ac09bb205038379101cec6eaa8ed82d6085a2cbbe3c7654e48ae1f1752eb9f57541de6c483f5efb88d73c77d7bfef2f02a46f3c8a309bb0b097c5aab69eab6849303472926afbcf6ca1f28f4a4bdf69f1c36111f7e6f3a9a71cf604863893aed2a6d53b176774a4f9db789256db96fcf5f4ea25201ba869f31569e89299fb2ce28105b07f274dbefae10f3cadf914e1d156281156271216ae13fc12ea2422cadac6548b153d40051e8eb415b4b79a47464e4721a860e327187939e9c9e76cf1faf2fdfbeea97dffef361f7367a68a28a77007d4664fa91032ad07f8c990a94e24fa92c4f7bf02acb87b2ee7815f1597c7faaaabbb31dcf51790e312d219790f1a5f6ef579bda6964793290ccc5892cea8a26cdfdc7f3cb9fcffaf8b07f1cc5dce42a60afcbf1a89bb86757aae960b86659e8907edaebdc043da0b167ba64c59684f29258531569fa867ecad97435a212d389ed9cf7c1c4cd80711373b443c56993dc617414bae29d0ea6f3c984ce8dfe32b12bc6466eab32e4c00f2786c6c50cad62b4e69856a614d92f4361b1753101167a31d5d783f1b251fada5eef8dcf692d53a61059e283496020b7267899038d403745b1e5c37939f5d2df5818f6b66b3636bee317bee34ddc6b6f72bc2029c8a885069f784407bb4d21c9a9b5b2af77e0c0363e98e2d2d699d2c98354ced8e30a44582da8f468c0c2024808c2cf2144fe694200c0a044e93ee047ac370eb1fce48c95b53265e353d0a6ba64924f7043c4cbe6154c4d7eeb4d041bbbfc1ce0c416d20c01ae8cc9451c63b07580175e1e74a436c4062fc5742837a9de5817786907d28a2e190bfaf8108c438574ac2c3e90cd8e69886c7c28ac354fac39f78e70b68284909c2c3b630b0ac05d8e2624fc2abeca001b87bc80b72680a7c1261363dc5a93a00d9262387147f86882cc0810e99dde0ed1198f8cb87499433d49a2aa6ff22650cc3782c32fa6a17f7c09266131963d5b6e491e8de8b1f4965237696f4d0af1a8c9da81f2984262ca20cb1beadf6d31d6617c49482f37e1b18a166313dca122cd968e8b26a2e0b4f8ad03e68e3f0762935c90e1c93bf6b87cdfc656692ebf6b8ebfc8620792ec7042a70fb31064585d971572e79bbc9f900c7f7bee5f462907dbb65d08eacbbe115888115438fabd5e306b2fb9d2f7760187bb504bea8fda53ac8e1b937687817d71563b37e65f176700bc066c17c4fec7b7f3f5712422e52b253111a053e4564184dbaf5120984d0c77ce9428cb35a965129161a0ec6deb35a91490680b206d6cbffbe1efe17be493f1a0449487bb821ab2f4410e166374675151244de864022ba2b3c29a4d9ddcc8ebc3e1a53f3e8cd871cf9610d2d715da7ac6a56d3221a944ea632228ab0965672235423a671cf268f265757dabbc87415d110661127b776237f02c2af2988e8d3e2193d900baafba1db18d8c4b78772e61d026d7bed1b750a042b7e7826976d9b072da9a6c4e4b25f81e5af613cf6ce55773d126b7c2b7a18a2c6220d09e01a4bd0358072b5b8b02b45336c400f54a5aaab4fe82d065a491deaa12efd0431e983fa0f7ca6190a35571808d244a5b5482b9294b817c6d6a67662b58d015d888fe0cce2ea5d505c8420ec310d3ac12dee7996326454283ca059c37d4d6654c6592c367403037968a887b8c4002e57102e8dbd72fdbb787113f7fb745391d7eb0f7314fc23c02f9ebb99c6966845f0bd6aebc3c6ac1240835367fd2a9a2dc8eb9b251568caac25653b0db14ab838ac0d525cffe71d5f82c36adcff354db250ffc28c4bceb501ca546693cb12465183333b9ec4ba2489a4c09b2fc08031705b93494580fc5d7bb0ec9cf490ed07fcc160dda994867eaafe3475c461f5b3b3526bff62fdb2f3f9bdff4aaec9694f45c5d8bd11beca90a7739e29ca805c5493f7701ec08e8ecb5bf03d58427e94476caaba2fc44a1491c892522eb2993f9b7c3c3eb3941c03dee17f903e28f7578e88910ceb2e6592831c332e940f3048d1a3cc2587e43a6780d0be5409612086686df9f8c351e875a7ce8a2fce133de0116d7412ec8bb6d32b178c59fad191e3a7190b4a1a28d5c02ec2c78d2217de010d2cd2401b35e9ee0ec157f766d540b753f412ed6116ce3a81e44ac30787d805983ac8061c5a6585fc9e40ad89433f640b803398f8dedc9f2b2239083b5c016159881c5c55360321eac6d319d97d9df9dd4a4a4757a681d8be6c84c83b50e25ac72f7906d6451a79bac759e9bc9e94524d918b498f8c5c2cf288fe4d24434820ab1032d1849792cbee87919cb33bbc037f3893f2c13d80745c0ce9f99cdf87d4c027202518240be1f32d77bf60d6694e69462bb806f2100a860730a2658ed650dc464c58532b8ad3a388be2d5cba4858b220e7c905dd021ea8f2d4db15a3a01e1cdcaefa6a3889a67d96b02299550848bd6a586b5e2af4cf090ec35b2d9c29ca1a23f035c9785c0f6acc04af012718ee8bcaa1b011a415e9e610b143527ae20b47f89b44a1c9480d9265e45115747aeca60b36d25cc81bc4d99a2e4d60fa5dc8d600e01bd2a6b5413a2830054a8e8180f1f480c8a0a59337c3539562e3b10771527ef8522635f82a94df60a7b73e04ce0d5e4c1c41709cfb3fc9ddd117268b6906d09ac57d924d2c881c41ea5cd899434744b9c05c0289406076457e6d693d4936cdd7eda9ec2e9302a26ca4005167d00330f6c1a1e7f8b9607e6627264d501c63f45aec7211bce1853a358952822969f5c9a83a9b2a0f8b1a17adcbe3e6e7f3bc726bc5cdd83fb2be4569addc64b59d64464df93c26ec78aed1029b9631951c0ccccacde2f324165ac800342515abc93252bd18acdf4cd8bc9644ccfc04d7aaa5157e4c6dab5dc8e13b106700d0c832e56030b9e659501a57b90672818b4cb123386a470921eca419eb9f7a76ca255dccb48a806ee063c32d12179971259122a9707f2d873598bad1ebd95d7cbb3214e35d295281e75baf5456ad33fca2cc1b6514961c7c05ce4b3e5989343150840d7c0457aec3230442b15bff10605454ff4968efc0096b92c1f987d42ec0130d8dcdac8de6adfe5330c707793576df81fa26a139f3e476062a0e650715848c42a2d209fa45f0baf6c9b20bfc86821e32459061cca78917c6e60ae6340b2a30ddc2522220786cf906536a5303c6d4186d6b6671d75285cc9b13212c3973308e09c1f08dd02e2ff40face192b5184d1dc19a0077d2b74cecd957043f51d7fa3d61e5c6985a0a870aac474643f7381ac07d282ae80a0c28b9f46655e0fd32235da08dc6239b39892a783cb99c3744e9184a41efb4801b5350afb2bce53695ada4a2a864858a795cb44f0be255a25417ad2897f0d620aba39e404a93c3d377ab964ce437d53c8ef4fa0dc9399d633d1eb604cd4382cb3a0ee601118919cc81b03dc2e0f2d37661910697ae11aa088a90d0e18558a98239468217f49be3fb9dd2c7ba085ac93f1ae87f910766d0e46565cb513826824f3c126736c81308395d5cd6b3fe4786aa5602b7f739dc8209cd09e3ce2157269e394e0503b7fc69f8de9bdd3526af063bdb985ccd9bd530b4a7257b5f9e6f99cb2a01f37cf5b5fcd423d85c58ced953afd6b79dc855e9b52932e5debbbda7befc0e8f953ed7d2a3f3d7c4f412df03a7ddff02d74db97c7c3dbebe36fdfc675b056b9eb08aa3947c998cc1dfc15d7b12ad7f159f7f4832f29ac2ec306f57329cbd5e4017bfcf2f03206ac2e15f8dd82255b283fb98fcada4dec93f23a4da0cfc797fedbd3b45abdaa6556f735d6bb780bd4124a8dbdac7043be8ddab16ee0aeb8a162c623456542e8b1d44398f44e3642a7a2ec2eb6594bd6310f5e6491ab5c0abdf1a11f1de50118628d685010d40f8871a08c267ac858b07241768c79ffbcfcfefb2862f941ff64f6cfc2e4f81bfa67d6c433ce40baada40ff88e9b56f1d213f059333fc881cba98fda76bb65828ea70403a90279821ddab95faaa905d424250e918da0b2b4ba5324734800e045aaf646934b7f3a7ad76229b5edb28183ef92ceaad997167c15d000161b4327b0a180e63798e8ee2aa75128ca762c84b650294ad767d28ee24395653e8eb6489b34eaa3d9b43e5d7634687f6efb7f8c408985d8a1012973762a09c7e859280653c27378610122480cdde01df492b35865fcbf9c86f303889337011a9b62e617f4b3121701e0c15fc694c82aa216a24d96e10403193923b28c381378988daf2aada2490e45d304b73599caecc4b9014b0d040155593ef329d040801b5830ac7603460ee6da006a01acce1b9bc8009be35da10526570056b08052742929b363fed3d35db6f4866aee8183265231783c2ed7d4da2703fbfafcf8fc873e3cfef13cc673a2fcff14c5d7595b37e55af12c7c8a2c5a8a67a29568e229b2ae91b53f1d3710ad44baded1cc6835e6db831a386012dd1ddb007989d7b51712977819f7ee182737f9f6f0fa3b2425a79508d7642746f8add176ac835a9076995b18b770eabc3f653dd369fc049c3d3b45d0cb8c8ff38ce02d759f1d2bf6ff2680f89f8f5ffe78781b839b2d0aaaa91fed555c51e83a22916f774b1266fc6f2e14e7a0eef21d301b0b4bf4f603eea3f2fbb4b1ab78c4e5ba3b435a29fcba7e2daf6cdca3f6394eca74d921fab76f6f6f6383d18f7af404e42c97cbe392c87eb80082be3f59e58e696fdd26aed090303be870faf6f96aa3b502e0d37fc131b35ef9fde5e5ed9c2fb041750bb5394b747ef362bf0f699e51ea61bba10ec46f9cbc2af3c6ec1fb65ffef6c66c12affed4e93ab4656cfdfef9faf0bcdb8f9769afbcc9bd06093142afe4a0caf2bf33c5af2d6c349bb7d174d0da969f8cee0439bc553257e4f8e4e790ff8252a54feb26d01081956136351604a261de04b2459e341255bb5b86811d0bbdc52c8b26672d3f7608692400b9adf15e41c6a14587bd0398af45f84098225649194f8ff79797277dc6176486186b5da03b9bcaec2fe09d6f54ad5d24369bb2042318892a5ba8bb26e9ff54b6c9d4a0f063b040add5de6471aebc295923ba9ce5bf03c4d4e595e21f4afe90fe022edfa1dc80f2e889a97e794bde277b13999aca891faa09cc12bccea4c14e1377a0e3096d70e01f2aca3f3564d64fb08449ee123dfff2ed6d8c7245d7ffa812f15e27a05aff3fd1716f2ffaf7c7b7915ff62f153e5813360ee670af3e24d9bfb76a2605b6b93ef9173856e74cf6417d2e6a604faa062dcf6c7f5cd540bc03309a2fa267df9fc4bc58c48217455584c6f0f03dd2dde4a2292692a741159203a10eeed2ad55cbda3900b0a62582ffeb8bd702f27ac9bad37611ca7dab76f742251c19773f597a67c1a6eb6a71497f50715f5aed430285964501c744872f2d72cefd35c246b65316dbd07f3cff3fffbfff787ef8afaf2faf6feab87d55ffc7eee5f9d7e31fffe7f66d7f709dfaffabff9b4ffdf6cb989fa7bb0b60ba01201b7fd8ee109a4f3ffcafdb1bda76bf8a7fe478e10e9679f9b10affa8eb5e87eb8aeee1baa27b98c55ac67b63b88a391a2d83db2f5f5aa184ee1f7e7f1b23e47f6afb5d957989f5e11386d3518cf5ded6650591b9ccc19c667ec99acbca162a8874479bde9f92eaf63a6edc3ecacbc5fe781df3a661aafdac41f249975c5f50de9faab64b2bfb0ff6c9fda94bd0054fd6aa6e554e3d34ed92d7973ff56f2f6f6f2f4fa70ef98b07c8b235656fd3d1765c183960e918d1d8f0b3ddff99357a95f471a14346a2085995ebeb74f9746e5ca5b7f8a46d4fd6e9f2d78fc6514776ff53a7d3301813b663e98ab717bd7d7d7bfc7dbb9bc41196b20f876b5ed88578f7123de1cdc7df5b95e6f9938985f4497f2e664f6e6f7fd24106f56f737f36e9ea849a0fd1ef2ffdc85b0662a7dba495eb4ec1a35118a39a5a514153eb5dc5662e5bbb77aa98e42323deb56465bb1555a5ab9a043721997db4ab6ee880539c612f9fe5b39d77822baeab093628bfb2f5fdbe9d7db843536b6d78938e70a3212f388e4ccbb70831903f2077d52a4b8b989e0ba0d211a6721d4ccc552c276b6aa9572225fb606a1d8723b68faf5ffbedb962ce7543acf81c1d3bc1d307f100dbda5682921f6b8701f67da6a4510aeb008cba5fd91ed19900573e0c553836f7c07ac88fb57c516c24ab8162aa26f3ac38ff0e780a9f29249209a409e390d7b67ffce359ef1e9e47b19db890a11ccffe59ddf6f8d98aef8c985de3c9fdfc01bcfa845d27e8057bb05bc833de9ca27dc2827af5f81b5980d9bbfff9edf0f6f8fb3f2701c59fe99e82a9fae3ed93fdf5b315ee93137cba42ffadc75f76f0d87ab52a7f3243aff72eb4e27f6674c2e7a3737df6859f9b7df716d1ed1fbe83cbce9d9ac255d97cdd39f904fef057ccfe6eafe74ef98d312e46967feee9099f10145f9b7e97fdfbf4f0fc76695e3b65d38234da2cabb5480f7199697a7fca9fda33d72754586ece2d8a04f310fce2fd9f05722eb6225b555d749e166fddad16c894965a95aef7879b53612f9015a525118e85ef5df74d16fb63baa0759fdbf6d7015ad62abba88737cb8fcc32b0c7395109b8cc6e3adb02bae81affc0f9fe2fd79c258cdaf77581066e6b81c3ee07bba05b5ca4ffc22e18399845859b1ead2535c5a5c920ebdfc718b7cf963fed55b869e1b9a9394bb77ec2ef5dac0559f9bd4e0be577157751b102dc822f4b8b3ef50280e97b630e0b534556af3adf91aecf82e7e797b7ed44bdc304288b06db6793a2c60fd78a853c5eaaccda5996377950ffc94e040f20d10348cd03b0ea361f05e5b876725e56655a93d2fbbdecc5a509bc55ff91c0db2d71886cbadc04de0a379c3e907b16d50805a40a752d1f8cfbe9ebd7fe7137e9286fa2aae2fd5fa790daeb7a8db04a2c54b7ff94886aafe3d5b3c05c5a0462cef697853e99c50f189b49604eb4e968ed3b6ed7fa7dfebca5f96a4b17fbf430c293c6c5db98651296b4fb966fe3c49a6ebb761bddcfdf0686cd7f7e96ab6c657fe1e0774bdba4dfbb8de79d7f243d710d14be7d3d0764a7864259628f3925f5e4e10926d6eb81e85b68da26eebe2c49d619af016d58ce917ed4fae9369f97326dd9c4baf6c4905e2f0d5ee3eee4f9b81a1e98dfcebc4366ed9d10992535662592be357e2d265634e992f9744ceaea4d82e6affcdba100df81addb0320e2af496424282c196782bc043be9499223e97429c9a148b5f4d1dd5c4c9aba92a5765da0fef703f446d4f758508652f36471520b34aa537146d8aa37fbffb8a1e93c82a20f15a63e666d6d5306a0f4fa19c9f089a50ea1c4a544fd15e400c6e776e4c0ece6de5ebe4e472c237f9a88a90f5685d5551ae44591f96b45223219707a2597fa9e8cfb62db2f1ff2ebe98c3d1e7887aba7c5277e2483691394d836b37de8701bf69d8d1c51ec2508ab82d4302d3ca287f3033f4cfb05ed9c337fe7443b07722d61d3cc213322616a06a1097d309008983ceb03f17318e0b77e2cb87379378705b1595b4d5655da1cb967cd569ef4d1ca231321a9baf226f4b21678346e69b1690bdec5bad86b069327dd7438ad6ba00c19df6bba76af6b6f909b866abf34457db77e9174c035fda279775eaabe82f57271f94f266d5a3f297f3988576feca381397cd29157ef755d9537e178ea2ced3fd8763e1cfcd9f01caef7a4fa4821697b787b787d3cfc63b4444727d688cd0dd2eed6d6a2e6b0eb93f81781f222f8e81753b3399182daaa665ea43610a7f0991aee4eceabcf2756c5b8ab5e63366eed1a5f776ca4fe7259e7e45fbbb0fb884a3419675232a198e28783d705d2645dafe57670ded359c73733a7c55606b5c89e5af2d1e9d649141a965edad84bdefdb1579a8deb41cf4c660cf4c10ea5b328e247d7e3e70cd60fb96f9471b274740c75dd7e7b7b79dabe3dee3469720e636cc4121006a294e055b045539a4727e3dce6e3a2be8580e2f514a9e9d29d35c92a0f053ce2903a523503ac3385f37c9211814c4b0007878d265492e25856f0409426f85faa29a92afe3ce190e6d1a949c0ba6bb562a01f224d9789016ae16b9b4d09aa98f04b363541c03f9d844123b640b7b1d7b142dfc338b4d7d26b3b8737a4d7403022661fff02d8395ff322a005fc17eb90649d3f751c7edb7ef9e361b451d7a0a2c91ec6180316c90d530e5aecb14aef76dea47867030b9a73c2130484296646a70a91cea1a88847960290359b14d796b854716a73524d323d6605d946d4d0cb65ee005f954ec174684413b2bc7562c5b2c80bd5d4ca199f6555568d6aa24613924c3453a113a0206308c938d093478df2b9681cd2becaca4e8b0a33146b83fb21e8763240b4038810b44c60046974313e4ebaf1f942abe6e7b170711a5d5e489b9f9daeebe54fbf6d9fffa1b7bbddcbb7e751f8d7407e1ae560982377b64013543a391b08af147954baa2420f012757762cfd7274d933c815202565a1a5899a951800701e6af5bb84031c84a750cc1e53fbc3cae2164daed05bca60b7232f7babb56bdc066074b4772683819ec2a8403223369a1d08ed641906f50ce84c121a699d11a78b9397a867102ecb1c12cf5766672c3d34599de9028918b3233282640e3c786fb2c3ace302e088d496eda3e71d969d95491621a16680fb8f207269e86ce92b8f77b5a93d1a88de14cb160f014f89bf7831942958325fa4e17a9ead0527cf8ef474858273d66490997880b87b590264c9422794aa0d8af2ac719b8a9a49f42bd543411901860c47c59ceeac939835a285bfda6082cab278e6835506dcfd03d321a6a389eff759666334c58ff5e8d96a70108dde54bcb22f3bc7c647796073d60d266f6104047046c402c92ddc6725bd65820a1798f87ce5a912b4c3e48976a4e1d164ca9b3e08afbb972f0fe74a7f59f1cade1db50dab74b401353d909609ab8ad73aa9ae7dc1f30d7f7aa3c31bf6f48dbd76fc4a184e02219500e98d70b4e1f4e6fb938e6af45abe346a66bf7da655777ee765f78f872ffaebc3eb61544365a5c36d3415456101ec2d5ca91a110e660a18524fea62fa64033ad2608448320b2cc358f573690c65e41124d712f99322268e27914b28549323bb4b085c0c4a635a021994a72e657277b693a70cbc20c55407f90bfe857d98944a91945ca5096a80cb2493e5a956fece155b612a5cc77d63c9b026e4d34df8a120b8409581e20c15a7b4b63d13e02126c1070b536d38cad672a2610911242ba19a42ce305f4166e48d3305d4683ecaaccece244fa1435901701dd3043f5b552845f84de79b92050a83b3032d0894eb5043c4ef5302ce9271c991033e06634dc5de0436957ae765eac6044e14704379a76c6915a7ca5612c229076e41e5babdcc92788039200b246aa113a890db22ed48fb93a37809593b13ecfbbd0db0aa511852b058775eb12444fe427908282af1ea570796a4249725d527883e216f230f0ebe04a30d0b9a8f5a56c4ce69afc8e16d2a974007b75aec6c0861ec487d43ef4a0683e3fbfe84338ab142026390e668eae7f91e663a0e37d21fd5883d6b5a3198acaca05bf162427b54958f9fc097fecb4890c3abba93cb17704525949dc53b1b5550d62b07893ce5b0598fddbe16c93f0ba12613770e9187201b2a7e060628213028dd8c82758fe554c53da85e613a9888e902ead85f51de5278ddb2ca9bf8fe24e7a9ab7cd47e1f160f3a68feaddbebc9edbe9cbc48bf985c729b6e2159fafe2496912c7ba56f25abf2c57c9409378f085f8bbf4b139eb6afff38afcdd7b2d35e8cc313cad1cb1a9865d349f26f30f49190eba15d2a3f76f24c785039c8081a578f5a9ca8b8e021a549cbfe6b643415d0ad2731d46bd5acaebfb3895a3f0ada9572f5a4d85ff26a2a0484aa79ed154467ee20c66ee0f624f1593a95071db04f527bbb0f4467ac556e1fc450702aacacddb8f7fb6092536e558f61e54c72bdd3e19c661cf0e1d4acbbcae1324ff42f229c7e7b7d7cf87db73d3c8cb00671afc382fcdd426ec22fe5c4e23e1cb5ddbb23e4d3f947584c8249cfe78ddfa7232a81211eaf21c6b69253acba390a65debd4719d9709cdcd4b7c7d19a5049a96f525e4308379b62fbb607c5445d5a5045445935409991488288123b904d3aaa0fb7bf60d79b9029310a56955a3442eec980ce526cadb206d366322ef6c83ccbd62f1b31767298481e0f7e097de3a9da350e0372e2b73f7250dd617644b3214bd8f194b0e1f91b079087ca939caa84beb575f9db7d93390d5515f1d26c0792c20c8218a7e8118259cfe4a4f9be768870e4f1f3b7dbf6bb6ffdf6ede575942b5a5a8d9672e2b7240159b61147040be1f2d5c0bc1f5459d5c94717af465fc4c44b7b774cc0b58cf8fb794a948584e98d3e3c7fd9be8ef3c3d785b34779b0a9e4f6fbfd4f1cfb64fda7ea867e95af7f3c53956fb89ab3ba61ba105f0c53f1450c4b5e79545e1d21b21e571edafd419ce3b82a938fcae8237976479fc9d2c30fc79dfdf4f0ba1d79eb6547bba4d354ff80d2ca200322ff9d9440343f96ffde9f2ac4131116f160f171f5175363927f432ccbb7eccc42b11f92ab4bc0c985947130502871941856583ec4862855b983073d22969652b55bd939d5d5024f99cc67b7499c9649fae0a72a8077dbd787b7cbb4ee2d3275c86982073381a77088f85a88be9e18cc2dc805c5301733d3f87c0019a9ecfe491b9f07a1b8a8d399f65c4c69b19103e8fbe457f2b3364f5281e48f683493496678f2c68533e14b52f1ccf7e21c52bb3e630147cb0ea07dc97c71ba9576941e24e56c608378f6ef0175b1cdd314604084b6d90291aaff3e6b88d90dcdd67190d6cd8c90811a3c2871ed6f21bd53e4a687ff6dc9c719863e6f27e7dd812eb2521f3db666ccda3fd1460769581b429ca78d21cc2b28dd2478369decb609f532074dfa4acdb9701e9e36671a8d4f204168207f29883a3fc56220891cc89a9af4c2a479e87bfdf6f2e7084627567531deed30029e42f9a511487a77010d3b9cd858d0c5d620388abdd3bb7504e37b3109ae4f466e01a1a14a9a51970e76e008e5a69efcba200c262e83f33db829039ac3e373c01e6ca0df4296ed2c7d01a3607d6afdfbbded1046f3ab6abad49b4ab60d53214311deef2179663b93fdd8e026418607c356443062883eb8a22906df5931b603dcb8d2f4e85b9862607f0ec83a312ba0e994a23aa932faa822340d503e2fd3e97faafff81f62dbcacc71e2125b639553b22a6648775853c50354e2ed47aa59796c47c6f1129edb0d9ca2a08dbbb3e063969e550129a3bc83662b58efe4fa883327538c9c3d186792714c11e299103715c4aef051ade68520bde520e894e887803e7908e85bf8e8e2933b63c52aea8ae6fce9ac967bbde869baadb258ee2ce362b6451a9bf683343e72bd93491f18566cfaf1285442d789fd6a601feaa1b9e8fa733214a42768e39d2c58ca1bab6c51a0a82e08bf3a2d1703bf9b6a62625e9b245d88e3a4774c34c114c30e3520414fe8ec22fd2adde73a10003af477076ca24c1d1d8db8f04127332e0fdbedb7cf7f8c926505f0bd0f698ef648422d932c9138729123218223e13a0a82089f1f2151f0dadf25da02900e465d7f37a35058521ce89457f1fd29cb7563d337bb211de4f5474925dd503b94fa9f5bc8e3bc5885a96309069a511358ab96d0640335c1740ccf1c6559d913f5d355d07f019a5507ed50807ee32149f9637cbfb75965f4e84c617da92ac4641801899b6941324331a551e1a50cb4570ebee255a813faac33451593a11c1511e23e722786fbd8e1ad4452974b09c96c2cefe2a72524b3aa3fa120294f7e00f6f4a327628eae9d0cf9a4fa60092c3eb77a23d591b22c3e37b07282eaea46a76fae327da3256e8fcb828280a6ad3316dcb4801f3b6aa822bb56879a279df3707c7d79d6bf6d77fff873fb7ad64ec1c9ba3e1a07fae7fa9d4042eac0d4ebb5f0b388d384f882c456586c0845bd75955bb7c62fdce6858fb04c8cba064504d2e2edf6afa7c581e7fc741d4c3a2d119f249516daf9fbcbeb7834ac574b9510b7373142efbd0d253bf4fb708fc3553633b0fbe1b62a88e1cec61ecfcf4eb2bf16adfaf1ac997a3cfe6644eacf77fb8fc34d87b64ff19016362b5b0effc68b7f03c3da95917f3331063eeeb806dcec94f4dd8f3dace3262f2119620332c401c7102f600c7184629813fa3418536a743e69c4e6931a994f6a5c3e970dd10b68f1c02cf5d29a61c99f749d0a0878588e43b7c8b0b4c05a7666580a2adcb0d07ca094254d7fff7772257dd0bf931008724962ddd62b04635757844099f19b5684a096b59c8715210ff8f5196bdbb4862eeafabf569f4e17ac785eb0825eb8e3198f5dbd5e139e4f8831c41dbf73490b3a7cd792f6bfe0941dada9ff46ea31aca0d2d96d210fe7855c9e7515660bf9c7f39da35fa9d43e43b11ec6a57dc1f6e7a1ff2edf73aa63ba7b9c16450665ef2c4059042e8973110f782728ae7c7884119df3da74ee0e485120612178aa2c748eaf7185ecbc2959752a7340b296419889ada22a68411ff67a6b6c3c37c786a13dfeaf68d0a8d7fa87ed999d5575ebd8e4bc6b2d2aaada3b159543dcdc9a5ae3ba42813d02bd6ca141132ad070e0e5ac6af8ab8823eebade9a289f7679ed3a6563af3d53f7ddb4158f5f7f7b991aa833176caf4d2e5ba8b8d98140bed3de84b0ec83b97dde8c6244caedb53bfa55dc2c96012f145dcefc9eabe522bbfee5db97d1c6031165c7082ca8ec7d325db8b3487c0690c14370c2abaa40ec53919f697fc0b5efe220aa688d0dbf78b96b7fba75a464a069005d9f6126edadbd59db1d6d864532d6b9b4917bde478db7e7c6770a8f1533ff9e72a45ea5db1adf2d34de6424b135543800a96b02afa4681b2037486b697f382bdc1fddce94d200314db4c1d47267b33c10168f85831f962ae2743b6668c71df3a41dabf73eb0c712c24a57e34ae2e6af598315e7065956365e33c86e8e802d19645ed9f9d84e154c6dd74c4537809100483a6d8ef27b2976f7c92a6f1961bc567880f04743b37def3aefb57fff774e4a88cafb86ef2ca614300e2310e94c85be9ffc245c2720b7242339483098e8e4ff02801ce721967732ce62fde2c40ceea389391ad509ee73d95b1c99ae77b28757a2d22ab5e21806fa4ecbd5d19755f12a4f6f42fc30a4a1c3ac36359aeca52936344df04a28636ef274b3901f24b9098f43c6448e0fda861d43ff957a99999ce5f952b9f8fd290f4ac19f5aa7ad16cb552d3ff0d7df6c7b4ec751ff36119207b86841cee1e7c86c96a59e6e8166cd5149f7a52d6c1f32e6b15fa5e3ef9012b0b0a33ca20405bf0fad4f062aeca531b2a3d50545acf63c56ef4ff2f8c5b26c7d4eb49051d5d646173fa6cb31158f172fde9ea0917f0ccf8f0fcb81e8dbc10f9c0cea1fa3d12c7be07a9b727b48c4025352465be37b4a765e00feda0c852c0f7147f6e20b8da2a36f7a7c00bf5a563294c0e42312824b80c005193c67bc27f60aaab781eb9ccf2696358012656b6a76f2ef747d9f54b7e6909a047c600638de6722e3e51b6b6faa4a2639429103a1d5651090f58b0c39b379891e842c6132de137a2847af197c8eb3ce432212982dfcb563f29092fef88dbe6b5dbf83642e12c3f8be47afcdd22a0b4c2ee83500d26c80402af0cf1e02ba484165143f7880276aa1b292745bdf04267d3ad12fca2f4813cbbba055815a90db5161d3039051aac16165091253170084a0261f5c8e93f17f187c0ff977dae334ff90f726d3b9efb75f0f0f7adbf767aa195755e10e704384fa7aa64efc8cef898abf3f7193a4c0c58de6cb27d1c653245afd50b81191cf699f81317bfbcf91f4c25f4cf4722fd36be5367ecf520ef17fd2e95555dd5e978ddf976935c6eee5e9e9e1f9f336cd1e417f5cb60dda1668322a0497a6e542d319f09ca6ab0e8372d64923e884c5031df7dff9fd49ff7cddbe3e8eea5292ba6d8d9a6b302c3c8fd6ebb45f9210bde1748bda4f7eafe3c6ef2170949659256f38f702f3b59c6ed16af8b19686052ae3efe567abca861fecbca51b6cbd77d40eddf7d4e9faa343b330d26d68ea7e2a1f85f97518b326d11247898ca7da7b35a147ad872ad0e945c98d6c7156fe9d2c9ce264fb1f04e43df5eeabac895dd38f1fb4e4510074a0921e6b92c21acad6c9a90a1cd6c5d9553b3b2fad4e6dd9b130520e690aee88532713c33a03ddd4eda3295616754f58d3f8c65f1f0e87872fff9bd71f646450ff05e998ebbbea903892064dd38f2fcfbf3fbe3e9db772160f5fe54dbabd46fb7aa39cca93ba70f1d3a88c2f668e3739120b1693fc761cfe20c79f43d487513c7b9b11a1e4cfc19a374567d3a1221f4a40e9ce7a933d4c466be0a2db515cfdc600fbae9535a1e159e61feab122e29f28419acef6e7c34b3f2e19b17549fc6d467f7e9e9c2715b9c13e185543cb744b2b77b4766fd32601fabcc0993e164ff9d875010ae933eef3aa2c9c1116abcd024f5605e896a8b0bfa662b9ba469c3eedbeb7d7ede16dea4759e3126bf9310028df08d0af0463410f0bbc861ff6a4c4eda9b2ce2459050a91f154b7eab23665815672c9956acdcc8970c98c6a732b5ecb0f7952a57952bd29d9948c6510041c101215afa1542517b869b346e3c4accd9ef532908757e8bfd6013fe84cb5dedf991458d8e9bd49c07f26536ef4a7d8ba9c1adc52fc28dc9adc636f4a91fbbfc59b2a97de146a7be4e000b1ff4cdfb654cd8ebbd597cad74b0a660beddbeb4b3fa2b5b2dd5ee763dee7a3ce20d19097699f37fefdbe2a8f9aecfdffcbde9b2cb791245da3af120f70c32d3ce658cab8c1825a9519f628885da9bf13621921a1bfe6d35ff3e3914002998428a9babfb27b7f938829a798c3c773f2567139c37f803d45093aae16aa97a74f9fbfdafddceb2245591b4b83772bc1381f65837e47b1ea063c8959a6c30cc5b183211ecf088a37088e173cc5e304a0a86cb2d1381942f76ee3bf7b9b79433ccfc432ee314451d6fbf813816a885e9920e16cbcafd53e02188465270a867f023f6e7a88b900d0fd4864db54ddebe6b804a87853c768bc91611e4d32d17acba66cc2a39755bf8a86af41f3ea66edef1adeed415077f7840357e3eedf42a4c181e3c96fc2c95e09d4df7ebf6cb3d4e0b18e95c722ab7d04b0519095c973a25af16e987c49c6c9390ef819b042344d5c9f6ef17a903dbe50ae8f0de140e46a3a35f2557a22300c50dcf3732db1acd72ec7d1162a0c74aa9a3f3079cd6ae0b3640dd097544e405d81dcd902b958b16c31c83a63793dc074548ddb93ab95386739464176f720f2763ee9f58622002962a12a9b61c6aa2eab39ca61500ed1096222e745cb684c0e392fa14a814f16751a2b05806a359f6f9ad7ce59d18a0983dfcd7a473daab39fac370e0cc1bbab3e1cfc9667bf78e344e912190a44ec31a4954e78573762ab299e3f047248b297d7b33baca87a558140204d1d581ef67aa0c04d76e10fc19ce75333e554a47bfec286f54a7e9e4b7bfdc8d27b2611e7cba0caffb54175d3ad2f4f87e7d3d36ccd6b19e917d5bfd1920395f2ab9d04ccdbbfbc911f395189a6801de87fb79111563be4db2992af67c3555fbc9c9e3ed997dd973f9eaed9ce1950b5819c1fbdc23695b80748052b08a5e8d8d0780234e851e12298d21ec844c653891631f9709556d17e02711bd9c9265e91578754cb6a912e612a49732b7a3730aab2edc053ae49fb3c36c00139dedb48d9044ad16639a1127bab6e1a47891fbde144297e87971cc2663dab6fee0de1611dd8753fb3ad66e38f0add840ddfab3919a9e5a6a715a5f828a7bd1e00057501642057a4ec72020551760203aea1a8a7147f639492644a407a921628e521c1e2e189817d910d837fc9df0ff19999d9a56532dc983d995d01d746afd06fb9184f519e0568133f01d3c8144dfd83e240f98e49164da02685805bc4e19b3e0d9fa221e7cf5140d1ca439a8d30c7d61f32afb297368489d5a990ddb25c87777f8473dce817bc013baa65b947adc65bfd32ebca4fbbe37015fa93eff24b5d46c6b555f91ee5caea357056bf3dd86639bd33b43e67d3ff56745eb63f5e455b4dda5f317e1fa7be448a6db0de56f93b5a6f0af4dd9f7cd4bc3fbfee7e9f6166782432139f12459425f40a7a4a06afc7aa84e2f0eb6e13f15ed1160080143599b459047d59a8aece2263a8142b57b6d74335d4f6daa8667eb3a336b0a805fd154868168ffd2d5186490e59bf68acfcee629e64c1fbd172ce1ae9697cfafa343305df0be4b86814dd91fd3e8d228946f113310dd343cc2528e267348af1ec755f8f15b1c9e6fff528dc4f4fe3d73978827b74c6bbc1bb473ce263337994d57d131edb555ecda7a797cfa7a7ce077b21b70798ec6001d604f432eef04ccdebc8f330c555408f25e0ed21d2456454d019c2b2c201714a01ff936c522e21f0c9908b80f06235befab4a31c1597149664f65d33e0844438d8ff14ef4b4e2fc4197971b9c3c866a09ec566c91f912dcb487dc5fe24db924cf10e031cd4fcc68abc02cf744b3da5bc5b5b1475ad26697f187281dfa6e622e0b7c9d4004c99dc3144a07834e0ba497991730c68b448ec4700bb9532744b6b806f16b98c0178680a96d8009aa5e0704845416a74944a50011eb183380aaf4848ea1c4144d71946ce92034e03d0d1a4e6ceeb97429011f54cfd82d780f01ec0cfa51ee603e04d751e3050c974a3eeef3e0182212a00719336662d8ad7d1e0430f7b62386542c69e8f691b2916297fcdf29a35419db3e2a3a15b62461c426004570047d123115cf3d57354e90812be9329c93c52058cd9402d8fe8c3529492625859fbc149e18772e23cd872b27ed3962ce14b43da9a35aa22203b506c401df65526828c014f99515f8f5c515829b94d369e829c746964c5604cb2a8aa1914225460192ed2dd51e525203654ca40d4cb4de3c6b2d5f6d5ac541930718ad38267cceba0f73d9e2045aba73591b1231a33359190a901de88d18bc0f5c3418fda7a72086a93412473cfd52302152b2540be5e0138cbe98c72c336151427336990a3d7411a01bc9cc2510388e4b3b401203b30ae147330071d6bc467ccbf92003be881150b983d8015c042bbcbf298ac0b2a168fc6d603e1da4f09f72e914f1ae02675099a859bf4802268000ebc913c0118974d415de03cf45431cd6344e67191a90d73acd76a868a1528796c4b9a28ec811a203355de348eae7be722969f5dafc1a49e6abf69d46ed0af3acd8aa277243858bd16df071da4520257a4009e2931c035e40ce9c24c70414ae5226a2a1dce0013700db5f70d4b4b6ad03bae66dc5e27693792674a110081573bc7f19f33f6aeb7c8b217f34bba72b4944cf80ec1e23d429641c62c6e63576ddf6f1890c3d9807c25e97ddefdf1b23bd8af2f4f57ee2e774ac08c8a83cd27204bc54d38c50d9f6c9aa9c2529cb24d833fc5a1cc7f37ca5299af8c4d3043cf2c4d6c78c3f3eff0f45fdf7ec234bd7f9b2b73d51bf7b1f5fbf7d9b4efdde663fbf1bb5c59ce6e24edcf2f4ffbaf9f6f7260bd0316e568bd338a4461932dab975d657579a053eb85b69824d799ebeb8ebbdfff4260e88f5e917e20c0cd64369120a0c1a64439284607e5f618b0de476a1f0a35073074e7cf264576a206409795cb45dcc39a08f45c5ccf5936ee44bc723d6843f70b87f3bcf6cffb6f57e1539a8232d815d2c0155fcd3295246be4d84134f0c1326ffd904f69483773ac3fd63efff9f4e5c2f87727a3ea641709a32b61c15740f9a93d32056554f93165e1b11ad9b079cbe9f5902ca73546ab0ce961aadc269f2c95fc180104d8c8ef09580d220953cb54ef34d64abb1c87ddcbd30ce2149128e4a41e8111d0918bc80f08fa2f7edb9d61521a26ae7b95d33cb63b8545650698c408147c0f1820150d5a470a4fd84471e6e31babf77b06405328ae8a84021538c32483dd5de17d872e098872ffc10ee3aa703077b2eeefc19b7e7a1ec739b21fa502b822f0e515550d44266d80453a5bb7a28a2ea23088362467158d8386a71c08cb72a0a8a72e5bb579b2463101cd17825f521065dc5ab17f5307a8043648b190386a3f218bc814d94239886c598d1e90e932c4beda9fa1d1042143541479bb68a04481de0a83b657149208e1cb65d2d7d201a344ca10ed06d4884924d0c60a54e532b0dc874001e6eca651da011a117cf9404b5290b30c5c60e82cacf588499b099054403d96861151b8b26a64aeb78d0a3d96d698325663153ae89b0b17111220712279074524c7535b8521226b60b86bc0348a8af98c9004295fea42909a4c5c55384ce2a0c050689c005c4d4fb923dca3697c15813f046a40c0a244a5a1096157d1a0a01249944a6d6359a6f0a3a7508f90e3f03da9fc15815e5dbb04d6a44ebe4a87c4202272d4078b8e1781ccdd11ed19aab5f73a5e1b54b71a40a810313e8be2b1bba6eabba6a194a083dca992588b627a73a7f2083af4b28c2dd123ead4b50e91257913f65290a6b85719bc375e1e88008a2e58f204ae9d81c507e32f1420030da301bf1bd39b159a95fc4a2ed6124ce604d2913d3acd4117770501181ca05d81c4429a216603a5a2264c6d342c52056059b7c82202b09cd28786a6ac9cbe41bd86128ee1045586a95e6fab5f670245de21dbaacb3bd5ccbed9ebabbefd3e3e5985df5b325ad5bf27eee181d9e4f7431bcac6aad886ec15dc90d74886fe73e88657ad7c4b74954c7b2fdee0db50887c8142447619bf030af141d11e13d01ed5f571bbdb8255c7ff0de03917c969cbc65dc111428a053235ff9a1c8bfa6339161f399bf6368ed10f8004fd228e517bbbb9e60a4ffa5b81fef4d2200fe16f52a495189f9be6bc86f7e08ec0bacc5ffc3e65e6e47c080a66ffd7e113bd1ed2a571febe2849370d7b01f68886791d9f11ae9a9f453b42637ca0d68afc4dd57026ac4e608cab95c926857b3de4e9a62bf75b5f10fedbc9559f9ebffd317cf9f6f5265622abf28e8463247b6729d7d1763210f9a61fe4c0f647ad16838daf0708ee3c44e49b373916115a90440c4dde301b72691b893f80d329d1252c3d51e39bc5ec066fe197415f40d1c6bc042c3a8fdc2933cef6deb36f2648f36ce968d71854e780ede325461d61fd3daaffccf0dcceb3ccae74309b1520cd4f2fbb3fecb0fbf2697c5a11e90a254566a80ada9f94274959443268ba441c48f206074308460b6faa7c66d6a3ea784c0f2c9764c346af9583bfe1b706876f13a942aed39be2761947f2ebc1214061ad20dc0be2b520b117246a41422f88ef05e164fd1ef7510eaa7ca635f98dab3e91e5e919a07e389cb516594b8aa30d1c4c7ebd44c77ed3f9dffc41b69f3bfdbd1e120260fe925b5976363d646de95e0354e0b75e7e14df346d69fddaeb5db4a5df2ccc6fdc3b8bb5b7b877d734087a87b1f6d8fa20bb9568f1cc5f2aeedb03e3c746e8f7eea3cf66290bf7c2f0b934e7310283dc9b034c07a33e1f89f03a76a7d1295ffab0d544aff0d0674a367deef8a93c5a2da955afd4a54e5a147000fe65c3eacdd6f9895bd9b78af50b03ec5f732a6e394353cc203a40330aa3f58873074e359cebf85f1e11d5355aca941ee5e2b297a3e0f80a863b8e3502d3349ee7780ecc3a076fc9b3626705b6fc88daf8d14ae51ea39427ed89450aa24485f2589027a4fe4ab8f06f399101713131f926a5413eb05970dc4f1bcf828238bd49b77c75ebef70d37f42bcc5d7cf874b6091530875346f5604f46e36c4870178f5a355d4f58440ba68d57d0b4e39564e39564848cb88c88b22aea8b7f1289f62ff45def7ea6485912351cd534c43c24364d8970d133f90c60b1a678afa825148030b096c27e8469491a228b92152638549c8c8f8376a0a8dc1788aa74401e69caaa8f930612142135620885b96b2927ccaaf2719d2037baa27aa61fdcae3f2227d8ca55c3b6b6a2948aef71451464b8da5c0fb73148248c13c513a82319033c5a2a4b8e030e4bcd7000c0f8774681dcf7d6894f7f05f831d118c93141a2e33d3650a02df090f3285b60904623baf6ab71409fa11a2415e0fd4b2e9795cd3949ecff9e36c7e4fef1a15818ffb8e3a93afd9c50ecc57bbd0f7ef58d6169f1ba6b24fdffe1c3fef77573160eba0cd0b025f5e827cafd89ae4e2084e14f627f6d80cea9a77c6c33b8393068baf3fc477f6f4e9f35910d76441af026195b15b832932adf0e23558b9067cc5013801eb18353f0f66c32a327c698f7200b6083f0bd74d800283911d21cf59eda2e6f23856ff4c4e1f3c39872434972f368579e4e9d3ff79da7f9de9677e856609ab763a074279c4d3ccac75e5daa01530b91d01f2c699d0ed59d16a7eebdc025966d41e1a45e2938ef4a4015d37162d6fd6e17dbe4f15b596013f6b852f9f9e5f6e72b3836914ea2383efaa50de26cabab3240d8fa9006883357b54ab8592c8ca67510835f43a9d357310602abd74183504191b48edb743908ad54bc64e01bb4994e17b53fcadd4edef95323fc2451b088161086b42e664d505de6311cd1ec6f09327971f898b69d47971618a29a4f6bacc4765d9d52f233530417b5c872c858480b3a48074ae8eac7679e7a75391bf1c64899dce91ba32b5d689c860518415060fc1a3bc12c32ac76f4668d9a8ed324823ed516d8386f6c14c2d389e1b59418a78dfdb10b7c871ea9493656ae57c76ddc3a3250d54d0940e44d022a36b9c8de88d49037575442eb5c78bfe7fad4206a5a7744b7bca4c911c418e812cb5c0ab39713c195f149c0cc17ca9eb9057a3f5f4343eff795e36455d767c62a6c66396eac9cba3fefc7ae04a0d2d12364c4e0d984e5a06bf176ad09e88ab88fb59112aa9f9ad5c3de25626510e4856f2c079dbc33fc21aab252329118b66ad015df05e32d2dcb127d6663324450a61e042b58ef8415f3a1b4e9ddb069e5e76c7191b0f00b72a1c5b0875945746ac28366de9b5146ca2e277d47291bf8b39ccb84745dcf3f0f58506a90c7eb1a462431aa3cc39b92db26d65b94c43235ff6e434e03428bb8dbcbe4da8d828e61162934b83b41dbc93e0ae0fd556ca15acca5ef49416471b45044b9a3e813c93ccb273279394f0188e8f7cd5f12f2f33e2bc5f369880d860ce7917366d1b077fbaea8b6f2fcf176879f06d8bf403772c128402824fbb0bb59ca7acb2f77a64a646e2082702fc8e85f2e4390a22241791ff201a0108c1f6c04ed50bbcedee37f52082b23de86ae9356d05e9d15663cf32f888c071df5de0708079b0fb8a28069fa2a5d62846c51041c49dd710f6ea2da84871219c914a61ed218802f503235fc4374f75b3c474b9220ac182ec104d2c025ced9e73d3439303d0480245ffbd1b05de23524f9e9db11237f5093baf4cfd88ac464173410dd417ac4ed35eb9d2a85595a65d1379415b234d60650840360aee10b3620fca5d9295f5dbf718d31e15acae7297b1703accf5a89193fb2e0c6804b13f0712e7ceea1db39113539449a431d38810063f54d0ded6c1a511261ab71b40851dd5f02c2da9ae69aba45761b3dcf0e733531411e89f1158311aeceaad06cd931633343c3ed515aa8feb7bb5d80366b2ea03aa3ff9aab1b188f76c8878ccbabf001c8529d4d3dcfbf0f43fca7c74491149a6ee3c32fe27ac1467f4dbec172bc2b8936e0dc46947b125f9eb797554448186df216c12a58bc17acafa3ef64c714a43a102f91131d4da71b5470443e990097af504d7677648a328d98a62d934e05693b2423a2afc8e9fa6701a9599496d33efaadfc722456a546fab6744632e0a2d5351fcb333e19cf77ebc64ba5b4a1b397764e56c15ad5f87ab46c34ea4e6375554c10e0587d8ed345a9a93368a541fd212d884d016d702f5ffecc76f9f9eeccbf3c50662c2fda4be159d67c6c5fbd119be475113019bfa9300e293afcec0d4f2e3dc008fb1bb56274c9b15cf8a944b6efde8bb638c140b73d52325f28a550c84b728c0cadb0c600736ed6e6bbe3bbbf2e97ffedc7df93447fd8ba6bde9bc0abfe6bcea60f37c019bbf8402bccb75d5a01cf9b73dd619dca4dd43b200659221740f94e9179dd87cd3b0cf17bf553265bd515b676cbb039b8f46ffa904ad51fd1fae73b66993ab58b468f264d24aad9229af078e6605723d6cfcc9decdfb5d9a335648abeff1fe3cfdfbc93effe31fb3b0e5462d9f7a04a522a20134adb4287f537f7a3032eef5beb96974a1a21a2149bf1620af012edaef02b59c8dbe6a2cb67c46f2ef85a61fc93e2a93f9382ad63a23b525f5cc5c9754deee74d29e45a3e8396000fc11495c0d699e55d010e53fa8c481082c1108aab2e48269df0791e5344905c233c5862c8f92768a13745e7a50e3d3d422bd75c2969dfc06a766cc228547550f6584671564e599fe367ac56a6eb3e6b420c18aeb1985ee9145788f79af519e49da553e801b00d1b27e27fb6535faaabd12607375c8a464691fab7a78b401f0aeb2400213ac46a51917e5c00783c5d907c547d5f4a75c106ae60b24135f14019f899100d5792559518510d096641bf38cf4138888991f115d978873c7bffb30c5deeb6c5e065a616b46aa4c8568cc7542ce93924f6dee91f9948bcceb7d3728f91e41a0b29cef2b3e8b7c5e914e8d6cb936e960be072d3ac82d45c9322768e10efe1bac9ac7340f5e830a4b95915b0072ae9f7aea8c68cc0a939fd900230b8dc4f576ae7d99115585f742bf4619ae6b50f7b3b0946832709ccfcee3dd35e1b415990780f1f7f0f25fef2c0155f4051fae96002094471dd90d01adc8dc8131dfa3302248609dd0e8c63001be6b9c3652f920fe7197aa59568b021cf952cfab45cdc8c330919c2bfdb56775881e56d444d96439e88116a2e83b6f92c6de40cb9039263d7bb67d7ae890323d9c375db84b4556302837981ed19c939dbccaea49a747b693a8eeebe439602ff3a376bf00e24fb9e84be75a886c3aa244aa261196458ddc9dad66c02a48b7ab19a2e56535432a2ca61fec4f264845b09a45d54c5796b3acd9947a1b5f7aefad2d67fb6e55edbfe89bac6f0d4b06b9b46772ea06ad726b4cad0ac485de976dbade830396792f7b166c38a5a8bfa814bd4ad3cf98157c0d5ff4298b5d6a96b2c1dd59d56a84611a41d26e82bea8e4d8cb206e9aadef94ecd7a1995bd393f36e79218e5a1c054a21cb0c68fa839d1dbc3f498afc5d4f12af50205461400c68acc411a1ea980dc86ace09a1e02e0273240397bd58192318a1a9ee2ab5ea8dbe5e967c24f44d6b3e96fc4a3932167d5df503967d51843c167e5859386378e7c5f88ead0f70e4de360aa97f2825f4511e31cc316930d011a5c119662f0cf38c08f6e822463b867b81f50ffbb1d3f876d7c817c698afe42b63d4e7c5268e710f96e1827dbcc19a909b8c7d8fad1cf1df9c3103f29b5320f1790e9426354211d03f6f6feb7dac71fc10b164c6998d3593e38881b65b1e0cd49ab4b063366f1c356f1cb5b3a3b359f08fddf1eb820994ab46a79d93359be644f3d93bf2c86cea126f6eed9ac746d23d7eb4f51221ccdddc6fd8340d5a6077845ca13bfd39eab75e45fd16a4cfab4cd0f07a2b968e99a28954df7dcd5d064bb4ce2d31679be8ef83e6b3289bb8147a721dd5ab286ae4ce69d2939fbc4e2bcc9e8f1e903d7eaafa833f5fe9f542bf76dd0242d74ca9b16a144c489ee9f1d088165b08f8f7ae30751e418dc0f186eaca9c46ade7cdf5747152214825bdcf6444e96e3ad5992bc9285712e8afd6b5aebdac5eb558e4c714f9f7fa311877efe6b56b57c9642a5edef9edfb3f78670ac4b18e7f1b14e6e26ef12f66ed99f5fbcd27f4787b991e39980406eeeb26b6c76fbf1ff72f9f7fffa9d6fe188cdfb3b66840628ffa9444337130a8a875332491d645f57ac8d4b29428e9167dbf41d502289243066f864ac83de6d438913bab8dc0abee6ebea0e97d3db6643e15afae47828f82368ab4060e7b5f6d076dbd3acfaaf9064584395d24c966e6a1d9caea3c4ef25d038ae1dd81f24ba3f0c04164594f59d6b6ea61cdd7ed618ac89136289a0cc91f18125fa473886a355cde3436e08159433c6c96078900681be5a6b4f3ffadd1f9793cccd6493fd8740a9bbc5d67b859181ad2c986a19ec2bb50eb3f46502c5c39886ebe6ddbfc4b9e7f09fa859da99bbc2d433d21d137222dfe728fe5d7d93de55bbefaa677bd6a8faf7357a1e1cd12ccf9a22c81413bf296979437ef2034da7646dec236751550f35d009ca127dd4977d1b2da7f3e3dfd398b7859c4256cee99e21e53a7935c0f39efe84536bc5101304d46a9407cab02c8c67e8bff2da925f18cb4774b27d419d8eed91267a0dc3fceb7db0c87658b8e9f8f5fffd62d6a97f95943b90b51b1b42bbe1eaa296b078eefbba74ca1f82bd72f9afd0640f3efd8f09e1a1b0e94466011327c463f9886d48d42fd72bcdccdbcb93edfac9f6faecfbf9c7aef7c0d23118901e7cf7b64dc9d59b75669edefd9d197f2b9acb63f0cb407334f3d89b4b70f6a46886caa0239e6282b83dbca290f8c20a14208281635cd245c7b5da1c31c9b357b6fdcbe8f0ba0423a68c9b1c863d98507ce147234a20867d9cc1b628680cd105cddab8f061874d9233525d844b51691361b707a449e10b536051858116d501faa863a6b00b4bc69f201547707803b0f4b63b21002295784b642e8498089f50650931e86369f6d25f6c11619b15974648b1250ab08e784f509fed3220a670c911207647c66cab988fe9a91222d1a756f99eb963b0e9768c4968d4896f74794b7d83461172d97696a1539f4ce52ce881e6a00a55ff5e38cfdd66f5940d7d917dc2539e6238becffdd68ccdf1a92719ae1052a17724396782077bd848b1080d703475997ef4d8be555d78ce64dae7e2738ea9ca8f8e04cfe217cd2045811caf73353d71bfe7a54a0f9792562f6b691e7d82b2bfc47368a32cf1dca752587eeedc2f4c2ae0ea3c99f7735fc9ffffcf3dff6d3e7e38554321ae9b9531ac2b6e750c24f0e52d5459e5f366eb07c2a9bb47d27acc912ec3faea78ebe8205a16dc2c9d605f3895f309f5caf87cfffb2bfbfecbeec8719d04bf4b287b61476d724ae6c28618d7031999b439612e2845d7d6424efe5c25b96e507858e955c2bb2f665943a5799ddc0068017025088ca9c918ddb2967c6f4505f03e586105f8da38cf067481127c33ff99229376a29c9dff46b6ee44b18907720d71496bff3d18ad04b4551ccfdd5f5a017a6c8e58a53840d304c7c1b3c15e74751dd02ecb3052da5ed716e9084b5d9530c57705a406dcfc47e7989ec1f59ae708054ca39993042f58ca8fa35c5c9b90228bf06c185342fbf4fd7ed981bdc14614c883a54c31016d7d80a39b4b234a4346e94bf730714e8bf53f327bf684adfa43068c2da5f278f4c6478da6e8a8e41d0b691820f202e870b2f87dbc1f9f4e562c0831d9fdb4ac3e94eb8d755f042be28a79495ae89dde4ba72446ec4f92ae0131b1665f68f85724db25f17e98b54e5efd217997cc59a16b29a2fe041e5fe096b818cd3408c68562f228dc8892e8e1e9341440abf51b6b114d4115eb28629e2436bf9080f5b938d5d7ff143a15cf2a33c5d76f15ccb727220a6ad2aeb6cc81453b59d8f26ea075f342e1e4e5dadc918c9c160e33c42d3e05c86133827f4b74bb79d357efef27481304ac41e5687d6ca468afb4031b4fe032c175acb6e9645c1509c30d52d0c91385618d4d5dd37cdc4422579e38640a5e447b07b04b094ed4410833076ae7b92ba177d445177a4730c8b3cf769251d7e9925958254de417c445657c9f8f32d80d5b405ca352ca6a3ae5301b0f9ce639cecaef601ac48a27194590f37609487fea9b5eb5122ba077aaf21d2bb30886feb6003955a962d63a5656e24b7e77fd997a7d3e7a773e818c0831a39a78e0cd4d39d997b1d5c6679cf1af0103a2e0edcb0b52a8141923530c3c31c524499a4ae85dacda06b7ceedb2cc24493ad4cdea48e3ae48a54551a0e6b5394c2804eea7233d902a24ab3332f365611e909afc47edce73bb528ab5ebc34b90c0f7f6e7245504129caf231e7a60644996f03c889d26ed1503015260309dbac1f456445e54da0101bba0ffc6bae2e1e2b034795a05ee8262b7795fdb5c9dff473616cfbfc8801cf8e726b1fae5b456796e365ddfa30026b81bcdcd023b3a1e2b4e3f67d66a21831477937bcec6029f5a3d44e47930c8ab63ef46ea58c0061325004ee70ee5453ce538213d4257ceaa04593dbbfc261d9d09e3a1da0b1f06c86d6003d1d45d3254d31783c3cb6d42a781176d44292bfcb1841859ab4ab47bb5684b35dd60538791bb2f87c89d3ecac53b346346b92768dd24eb28685cb9282bb8b441780452cc58845de2078a2ab92fc5db76d94b60deae48db2d6d57c6911d34dd5cee53d958e96169b270f5d4f9ab2b55176d60419459449448b3bac5c51fe2ed5ef96f750cf7f2c9d20a743700ffce14a98e048ecbde131526d59c6fd6219255fca1e741ef2e70b45e999d22509992d4b91ccd7a6d8c34e5373fc8c378fb5e96e1a0a72041c9c2ed84ef29092ecf0d9ef2924a6d43225c441fac6f8e4c985a8306a329d1449ad948b0c1ba5dd9a08b9a9a5f39d55926d93245bfac37b8369cc3f85aac9390d4db79064459002f8d2b9017c91bf8b1c2bdb795a7610663d07fcc8ed662ae68b1c687a3c069ed73bcf5fdf6e926347af22a1d44f642fafb2eccd043ece92aea117846b7715801cc157844c657222455149b20f05f2f08da6c1669a5fd73b7cc804e9af9fd5afd27b0c7e71057023afcaf73c7e7a7ab1fbf1f938cb5b5a385c56d94937eec40ea89071d33a976159056929eb9cbd61f06e253f7451ba2f978d5714a216c19ec494c170196234487f12497417b09387f37eee70a4d9b0f1ee0c4736a37eec698e3704986580e6a5010b259bbc719323e6a21a42ec5de1b77c2c14391969ff54901c5d72d5d1157393bdd0f8d74345b4e41d56ca418364a62ccacb81e3aca0a99f7587c012d97e6d32cde8cf6812d146af355bafe72e7b601e2ee49d59d0102279372202a234046c8a5c91c09c3bda60eaa0cdec22546f07c042e4cedcfa1291421c21d868580935d91e34732bd83aa83fde4518b39c2288cb5b48af1fe5932994c3439045bce8b448d5000862e0b81c6d9b7a77e4bec136cdb2698e78b0a834cb0603f4eba7196cd54f4f111955f50190aa09c896222b157d7f3d54cbef4264f524f2eacf20b2668ae09dfc012bb5053a60a1325ecc5a3b0f31c9776149462622ec2200006bb554ebc62d01035763b0137155105d194d392188cf68289fcc7b905a88868892885cf4560f5d8decef0c1f002e76fe86457824baf82f194b0711ea0a2ce9b3f6fb70dd7eae672240f12bc0d31079a854ebff4b73d103fa10c0b11afbc3e8456d73c45437ec0de16f373eaf86c2f8fcaf999f9a91009748941dd6d06d64b8d5291617d6d2d4236ccf2c1d1db7d20785fc4d4a7005bbbd8255a891a3077f6af44352ce87844e08cab4102b02c4ddc4a985cce952956ea0fb3e2ac2b28b62eb260dd82e3d41af22f4ae4da02388b34c4ae5a50f902773d15cb0d093a5d30ee8e54119cad5160d2772cd0f902591865ba99aee1602868582923479bc97e217cd258c409ccdca3bd419ce2a422af5b9ad3f16b9c8008fd14402c6074f1c4fe4aa12a96834a1e69a364490036f43ae2b813cc2760030eb2b154f39a0a900b18be748e3aa750e015d885017d9ae0778ed1188efa94c18b6600fd4f3153a4123a815e92321de59a3b221aa22bb305682725034a7d3468ddf8f0f1680b722d9826c42ee296f838cad74d4e863df61a2617c57ab0a50e1aa824a474dbe8c2cb202272bcd15601bffe158f447ce0025d8f07d3f0942de352dfb27b899de7209df0213861b5c429d859fbffc319f86e9ff4ec3f9342ce759c83a0d156eb7349d87b5cf43be9e87e53c0fdb6c1ee65f9887f56f380f1f400f9032a4a202341e0ff0315622229d855167617cef2c6ce759587416f6cd0c93e41266b3321f60dc851b0b1e7f2e9a25501528b5ae03a5cab9d7e137e4d7e20d2e5c66494483b4c294f24670c8f38c204276726922d08b5aae0fa2e654f2c568d8ee39e7aed4b30421a782d56c4572c8e636b01637017ef92436c4c78c9cd6301462519d633119e4e80c34e3846c283c6905e88683660700115cc4fd8c84e46a9835d1b300f1ac7ac3bc29d7a942ff787eb9381d734fb65c6bddab6811b5770c4801186db57560475ca4e17f86dde0fdebe384672b2bfd3d3cdb9e3c7adf630ec42380f3360dc72918627e1a627ac27f7ed19f55eaba670e173a6f0ea738c4938d1bff7ab06cfd9017ced7bcd4e017baefc9e61b5dfdf5c06ccb258e6a55dd2e7794e8d78fd5aca1c89c632e6c32f921500a06681c48a26c26983564d335a7f91cd9341804f3c58e4ffb5094d100288cc51b36d530c201c3afd468d60bdfc6d1ee3fbfec2f0c3a0d86c8dd1413abd626efccd50fd6bbdbbb1cbfeef6ff7cfa7403829bc098b4a2c70d369e6e23a05e3f2265fa1d341171885bff7ac826ca7dc210b719d174b7d72ae5fe42b3c6c5369bb4a9a734c46d793dd866da5a41c3c6afc4af64e5fa5f205a6dea02fa0a01b7df096eb99f02ff31af34ca4a4459af973371e351ad7cd347c7fdcbd35ce78d6cfc26df854158445b7c27fbfb51561653a9fc10e481160533ed8d3857af61ae5b5e74f13c8dfbb670cba0ea79e5ce10016f82a12f4287ff9e4438076756c4fb939f63e2afc405fbef600c4c00d91bbecbd4b468e315aea7ab81f8053c5fb31c448e2651f59b4a25ec01fc98b3660e54e47b5a48065185508b85102d5a264a178e20286d9d9454d9499547fb224da6ce144aa11cf53de32d61c68ab4ab025822c4bbd094c221cff6e96cede5092854397ab0d5c5d2797b34115d33708b1234b58e91033acb8951481e1d109a807dbd664d36cea967825282e6a0c9afd69317dd12a86b3d15af22adbc4c24402223a5a2ba8ecbc0fa82284c9c3689b0cbb7660a21c822a87c63357d16b443c528d71417a52d0a40cad2ac47bfa312e9e24f499ae2ad29c73d6313727a1aad32c12260a02312f185feb17fcc9d84147202c86e3a9355e84c4113524d87e153ae480b2395429d2aee9e322479e86e98595e915d7d53442851544aea805739f56a8b565291fc04dc29c0a705b82181301a91428cf4c8a279eaa211a1d71bc29ce0ce5270271b29e7114a4aa414378deaa86c449c5e0f19e9cb2d29958d577adaa67271ebd8b60df853b9b3e0ba8a20127008414cc578f3186f40afed20e61871096f05ad08850e4979d2288a934a1da70bbf749eb000f084ac5c964d533b6160c0f46a4a9ece20a30a3a9ca73cf468fc4ea4486ff475124803db401e410451b5f242a174f69e8402b88a945dd113e137cc0039a8118a6502b05554763deecc324d534d15ed015ca7b0b18066354c19f032264181a95081c12b768132ea2a832a3cb6556d241d8c803b2f67560a24105cc15eaa69dd55f1602722508f14dee015ac1a4667f0ef502932f131ed1b89f88ba635aaf31758a0bd4e319e61e73a98ba315695ef49f473b0232180099138a205c1b79591ae062e25f08049439520b56e80b6e2262da91163112a26b0a0bae2ab968a883518ba32b0bbe284a006372a32ee3b021fd0472a987ab1e48abec5ba36f882d5252a09b252bbaa52262d08ff2d764c308a7387ff8253542d22598123341026dc0687feb1fbf2f58638219ab2920cf51efac0132f64af60fce2d76121f26c976ead258122007dc260f3f79fbb7cc2c9ae6edb71e397695ec7fb40bbef844bfae3e9797cdeefe65bad035af8d8144b41bdc3f2e5d1bbabb0a73f9e9e8f4fbb974bc84935e09bdbdba076a72cfb0ecc43f894b1a2c2fa041e31ef7b4fb709a8517383e12d18c8b513a5d437dd3eb823f2a731863bea01604afc484d1eac985f6a92c25c3bead8c4dc059c7695dd74a2c956ee30bc95930c5660cd559060ebce1179a0143ac638eb13bd4a09136a43079aec5ff42d5cdd9faf8ef5f2eafb647e835c8665c62ba67aea52411b64d53d89988b522bfd5b569be44041ad2d7aad2e70ba7ad5c1429bc72aa6fc808ab218d383484126936b0602155e93c2eca979b42ac85e7860ca7226d8bd9bb63b92aa63c7d56806f4f4889351c07059a14a1111c2db4c318e22bcd84ed7076759513452142acb7a2e9fe01204e676969e086900ea9bee6d60780f784be1242bd0d4146859409af8c709230b3547b43ae2fca2b25ac522d7aa0827723668dfe4b781423879727aa8caff04d09ec447a5780c4a1108ca39efbb7bb9efba2a194aabc22b0788e8a671cb152ffb09b2ce174d6385a95a7b3f76314805a08ec1a0f9aeba6de776eace6cec4dbac05618864b1875f52deaeaf61143222a5178490f98bb22a688cc21fd06a4f8dfb2fe9aa5cb4dc509acc7c0f09327d9d57920aeb83caa1dfa42b507226b5891b90ce7d477118a8b6212371d4151e740b9580301820c28612d70c6ae334a3399de5637b6a73bcae02b9c00a651baa4669c732f8e538e868d9750e54b8e8689af07a6266a4bc080d2d1cfba5f79ee82807cefa470ba8c44f27cc2d906fd856509bfe244a32000fd62f57233e532500de7b19c95b05346d40922fda80296df03491f4496adf32c469dd2b97b7020086051a92a364386976f9cb700496418962981947ebe527ffe7a1b1d08d61580e4381b1024638351bc91a0905dd120b9ca6f3baecb394f059b5e093d821fb857b2f76c45397b2822aa248aa69a4841d60660bb0071459e21ff7ef37820501b561e78aa14ca8387c017291b0fa62279eb513d592f97f2862304896882d507c1cd52ac9fb0d1bc4c868c2d3088448ef2b1148cc310cff1ece7b1b195a5eb81715aa168e040463e5a5a56e4f5a334e3db06b68b59cdcc2c8d00e37adbee76b9d3e546afd2613f7cd1f500d83f1f0e17b87b6ea60d3612ef345d5f04f546d5b8fb26a8ab0b4cbfe0ae83e1609b8997a1766ebde334e630eea60e3d77a60937c53f3cbdfc31cf59055b76d0e0384558ab323699f78a0aeca06dc920008d36c0a518411288283e03a326e31e822a1d778725ffd2b00c56cb18adb73aa9a8e68702874a477c91850e5c5cecc1eebc08e870c88ae4f561c8f722bcd687549a1172bef31aa002fcda30fcb28c542e222ff37661bdbc9270077bdf36ba90ae67b6b0b42490bd1ea2c144aaf9ff7f2b9d2c294115fd9cc03f6388e35169541c42f839fef756b9eb91f2e7b70b862b17c443d76dd93becf7b33ccbc1c2847976b9fe70a27830417a1359bbc51413a878534cdcaf7a61efd3553a118dd386c3fe9aede854de98d2d978b7d7d571befcad2d1a6014f989891e0d3f78b9b11cef1fe2ea782c321ef93c1e59c723ffdc129765966402ff5b34c5c02d2a0f5eac5f074414ff78b5d2af0eb0e35c20c2d2fa964ff201a3c0609830e29610615916b0b36f8f90c96f8c611a962cd7f354dc3a8d68c36b10b98b24e76879cd0db340fd1ccac97a0583c927cb9bb8f503c713f360e3898778f2f2c1af58569686898fc9d4c16ff3269dfcebc1db241f06bfbdddb95f9efe3c33111413ce671d9cc9fd4b53f019fd925f0fec6d7e5775e2c98fdeb22c9952a725a9f39a1fc44e040abc4927d6d6e03c21e09c9b645e8d71779c45e99bbc759b0057333cba8021cd1403a8f79adf72dd2ced3fb3ddea9e7166b0e10466937d50da8c6600b20766506afeaa58cfbf3fcd2800415152f6dd8a0e8ddb29243a16f45c95b78dcfb4406a2c67bd40b5bf9046ca55d531021104a26edceb212060270f14f6e4a0cd7037d8e44e11079b4cd167c040612900891d4fc91a8495898fea78918faf076ad57490f77636b3d48e807512ad79df6fcd1a14a5478e30723bb5757339e13c039078e891f2e3ebc1664a3016efa7caa68c299e326551fc0332194212ad2c7bfcec070aede409eb7fe7b3671034f051dd0c056f19268118074055f5e8d88cf2887a174f6a3fe23a1d4b1ae593105574b25479cd909109a11865b0d2d97f015d88c39e119535a1223ec9560b535c890a131a3381d1250ee4c2a4e2fa0a2f97ac6f494957d434d723d44656e84807523ee6be5586da4fec060d753dd4c720cf97656de6f571a9ebb3271917587dd5401f105f17db4039ec099e047502312c5caebc6d7ef36a7a086a4d5c98dfc295f90dd1765e6d4d6a94b8709fd76c3baca50681c9b0ab995c1ca55f29cada6529c7a90f8bfeb7c47ea02ab3107e26359187c91e8501dcb716bc6d22d5fa90158db6982a8deaa5e7fc31c0940f5a1944e70d961180d9e31365666182b3d73b6bd90a53b9d01fc01cdadd12b7d6d11196addc3138070a18f1985e28a3ccd01329a9119c986016a434584a30e8e98452e766f232e4c987410a0473a6e6d92a855e211f4f14e428b8623a1aa60ea6380d1be97e440a46a0ec75b32b5c17f0c28eb07daa4f2eb5817c18313cf76a4d43c6479896258c83d8cda328cb23079389d340c18f4026cd7b987a9388bfe067d1e1a1dea10d16258c305637b1bc4a2d3a5bc625b874b04ab1d81f54b58f6bb7fac842070912bf0c4059078ef514c0a86f27403777d75d80ad146b521910db7a7467063644ea6321497547d97b459351c77c6de0e14cb2d21ca76856d64286785e08b37aa3655d0b2759e8fb4218fc79b91b98bcdf83e3b051a9142b92e2e249ba7c5a37036579561e005cd857ba0813babce593c8eb23abcc8e417aa198e141c631560bf8687d56b8bf6d9536eaf475de2be875f43235074a557a0584608d52013365194033259a4f879e977180f0cfa2cb2652efaa9185afbe1e442cb59da34ddd80bee97ad5c8a713156c0ba272a86bb861238ca64f05eea462b202943251d4700ff3d543480d4ba253c05e1dba835f3bd5a257a9a03bf0fc54706d2a9414373d81b248cdfd7cc24263081c4021c39798c99fcba3981f21cb422aaba6f404a67de633c35a2ab7a283fdf2f4f55ff3d8c75fde6b8ac8296540b2e3be9301b5263b990d2af4176fa3e8d49ea2b4bffa1200e89a64f0c8b1d78f1c94151dd664d7497944f4f61b99853bae00bde86f1320471c92f486fa9275d10ce0e4f4a2e2dbbaef28495e562e8f85964a3269b0499610d9095a52e7a71eb209565c597e8aeafbb0146511dec03897c94753363263f61a8a12a432cd46721515b25a21df337172d30d37400af143a01a566a83e6df609675245d1d3d70a5e3cad783c89c6140432ba3576bd4bc09aaa5015eab840f05ba6699650529667e50842058d1a451649226a4855badf9a03444309681a2ab1a3d64d2eb4137595ff60a81863872a97d89e6dcc328da6ef17c7bd5cdb258b15f6f011bd13c7b255550277680eae58f56d9e702e0568c970157aff48e97dd9fc3555a6dfc700df80a545bac79baa5b0477010f21b1ad5f820bb36a8f5a0ef81701d784e6732d59edb22b3ab3e466a2c8266dc63e67ad6a8f81e38136f127a937137c50117f3be474557eef5834b70f4549a4c111113584484228a46c350d47902f3142655469404482644ec4fca78fdc15304127b6cf56cf79466b9c1c54d46f3c5223c890cfda3aa7d69d460a3dcbdacb2ca22eaa09093e7de1897b0a27a8dc88e5177c99c465df6db1e9a6c24a48d83ab8cd202a2d7a6dbfebc052e2cb274c42bfefe1fa240422a4e029f795921d7e160dc3d184406652c88c645acf8f1203e980f7f96ffa9d7feb5a36e5f866542cc980e3c4ddb0fe8064da1446c49adefc9b63c9faecc710fec28a0c512760110d63a031d2624ed6165de94057f924c7be60d98077e706b8160dda5acf98da6acced81f761dcbffc7cbe72b40f27b96dfc1fa6d5a46e8de9cb1b0201caf18886dbc8b6ae73769e578c0f180e3f7c3f34fdf8bdffffe09b7b1c67343931fe22f1eff4ef39d6c1cfcebc7663889c21487788aaf0767f3266d937ec9260f36ce8f49a3eac1eb8eb5738c1d671626b4a19e6cdbb85305f9daa90e6d0d0beef5c04dca564f6d68ab06a26abc5b1a694eb60eb65db16cfef1f2fced4ffbfcfbff79da7f3d1b88b2292bbed5e3c5743a33f45e9941ab0d9bbcb741f67367410bd96c36f9281f4c967f03cc42b2d86a1292c9361f351d29cb3fa8fb2c7751506e8b2d2ada64d3513f18d9dceb12b3fba81c50c9628777b6fe541d6e9ae6e993fd7df77213edef0de7a5476619bbb5e6f2592680bf1ecaaf05ce8b6cc82be5a9ef2acf2d12061c9e6e79bb9570e7cd0a09d922d9e1209be94ae9de15ebcf8b9c844bff0cbb19f05b812d5d79356749e15136b920eb31a26a467474a62c42360c0493ac239b4ed8516bb543bd753e2898e786ce8b21ba18bb0ddf870195d3fd63d6f47940e5cd93e4adc69ec4f3c6b6bf32fd748ed3b8168e154f3daf7d49733a1df15747025db6ddb312ad5ff03addfe8d73aecbf0de936e8ffcc269a71ed67453dc2d06851af4ba281747c61071e4d323f2e48a34c923fc438da282037c20e9de49800c669971635445cdc8fe2c9470b34a313e14247d378a1a75a49942de2d173344c54c2cf52080cb23d239139535423f19ba37a3da7e7afed797999498ab51893e89900e386091e741af1ba4de91c033ad8aa8725c32e2d910d696104e6002b5246b6650c511c4fd41647e6f44778dd520ecb99d9409890044249239ac1020d7abddcc85e82910e906985672676547707351eabd08eb21e0274511286a68cb0071289d132e83f94de9b07d67c716c1b3213a8c4a39258ab01bc42a7a4a6388bbc8c5637930ac3d555e077279af11ccac945b78674a275b21144a87c8c4af492df6e02e467b8039b076ae626e9a2dc01a491f811e1b6f7b687cfac72cfb0b10c90951220911e5366a2821e8b55becb0ce817b9e77f5569985a1edc440c0970a52417833b967d8c5c7262a69d930a507a99246290275b2523a7596fc00f35c8ebd3100c048e5dc54a90dd28c23b296b10368715a40987ed36ac2ecd57a3ac5d43ff0ae77eb287a105d09bb4cebb1ceb38ed7f03fe4aec24414b2cea89a54a7ef83089f06196551274fd2186b45e6b6fd7632721ac6a9b463d44f51c935c0620f1c0ee42488bede4431bfb210a19f5e3eff317c9d01fb548d14ad9a70d14788fc0d3a4a340fc3f11e4b3fa2f50bc8bcbc1629208eb14e88ece09147b01bfa35c287acd704e54a8e52d616c01df980d9d90d6498030ef4f0b29ec11e88d1084c701896aa7f90d989a0449da1801797bea9683ff0449a0e20a07355f3697a5a00f2738226e374d74ec720ebf315a02a1a66aa6c880d0027b073e2a70c60144c58587d60784d5699f04515062e4b18a920c00f036ddf93e19b92466912536a9aaec113dc85bcd53451a285db8efbf6e72ca159c176606b54b74fe8b11eb0aa35e4849433768242039c936f6aa35ea3e495205a6a569080d47394a48e5969fdbd562d066ae1919dc9d4e29675d4c49eaa2315033a06d78746a0eeafd26d185ed9b84da5f4d0a769313a6f6521ea23ccf55cfc1aad12e101c501430650edb503fe4bbb21f5abc34120bb22634816196641a398618df232c2c0fe8dc53d2a073e368644a9e283d7d53b2071a3640c30cdc62a51f9e63b277dd5fbd8422c1da49086953b736b1f63f834efb5a7dda719d04c366bb2e6267d274aeaed84c0932d03bb85b87abc23512e4a679fbf3ccd6dc58be4eb290f611d8bac6dfc323d7b7e02df64651f6769dd43591c7e3d2042d3c1e82b3ba4d247747ef75236dc4e22b962132bc4bc6104ddfab89f67e204c00f38c58370195b102b91be6fea78f218f30166d8b4d22e5ffff53c9b6ed9c038b3577766b114314b5256908fac33b950b4ea5b1e22f9baf56e03eb21cb58e9dcb19e12fcb2016938590611eb660704a5543567102e5de44801f85b8dc41ebb82fc98343805f4ee988429a0e6555d65ca4498e163ebf0586ab0912da88390a4a279065e836342eb74edf9a84b42d04ed4aca5a8d717a96cbd24ea7a8d4d17c1e388606764385182d34b73a9bcae11091bab4ba4fd92957dadc10f16351126922b1a232d933f696c7cd155b110a81dbd962caac31d84bea5a246dc301d115da3bd8c18796a0d6c74706bb54936932559ee5922b667808564647535c52f4948dfaa90e8606440d1517b2c0905d50beadeca60a884658d55cfc2060c5094ee81561815a44a493f1dad8869684f4a79afa991053f6ac726b5e5ffafcfc6eb59717cba08785594b9b6e1f6a19933e5996903b9f0208b7023a5ba744075418a094b7b639116f13a50c95b2c6e374168c3ad82bb9a6fff0eac80cd3296cc7c37fd0b211a0f41f4dad84380cae4bc4738500f0c6adee40daf64842de299781e0a589a0930a54354886cbde69cba6b43cbf03433ae78d9727d7af04eb736117e92a2c996247bca05002fc9acf532ac148f28f6a881ac90343a5e118d1355c8e8c722b2482b2580b8c589e81a74af19697f150b0936c502d61b24f6aae3b77bcc35fec8d59d0ae530ac23cd72dfa15ca2ca0aac19880839998091fae59ab745cef7a85759181312134d92cd9b3fe00d2f93532d773f77d77b0b7226d2c62dfd40c7f99707b97711512846d3946d05602f4a40c95e949d480adacb22ae644a6a55a0868657fd28252091c60c170468598103ccde786445c25d2c22443649769b289266960d0aa931489be4a2ae46df53300375d6e0d2699dd14a4a77ee7ad0157748294d5f72da99ac41230814bb1d4ff6f797e77f5e5020aa828bc4f480009522da46d510e36a34915b391259ad2f6af4f1a30c05d1353e24e224b214a76901d03e32fff93eda77aaf05415052812c461a94f0da355c9b10eca37780ee988b371a8d4c29a8da30e9e0441d4773e65c06643ee2fd21db1bebe671e42cff0d4bce84c483797eb477872a2eef23501ef6bc2342d987cd884d8ab315b41afaaa6e5572957b76281f3d953cea4e0e9650fbc380d2494818455074cdd95f8af1c59758af3c3c84ad723ebabbd72d044c37ec8db3ad87c8a30dae3ebc69de2eb816d18e2c96f78db10b4b9001d4e271b37ee14ce3892a738e4555a2c391ab7516e274f89a730e46d58b11abf1e8ad163458a2043680dba2268810fb618376429469997b89eec19a1685b71ecba150ebb3f2fde02b7cb265f209bfd87cbd78c8cdbffc728024632751711d07841786ee6e617dbce57644aa6ec02a2502e571473f38b2daf6060cc3bd96ba7d310147e3e25be2a936a5c404ccf9954b93b6ef5d1ee5de7ce1b66fcf32f0b45f9a8fe51609467b0d177f8baeaa500800de8a991b0f45635d079887b2c4b83dad354b60b9874081ad5200759728aac063ecb8dbc02421c31fc2bd23591c8beef502222e695d07dc70c0c582f1f13023ca26a2f1539f241856097b0c331ebfec7944fd4caa69dac3faa485e119a58798aadca5193346134d11456d1828e306348a5220c78aeefa8ace0836a473802a330743731766125cfc845210f140f5053b601c606ea15c096b8a0f1726aa5f4a25420882275c4fbb3efb6e728232356c1485ad065332b71ba2c3dea2b8c83acea8f3c456afb9b61f2f4620fbb2fbb3f9e0e4f73d43a382ac2290ce1a46905f1eaabadfdeb36bf1ea610f3ee19343392288a73c751c733b944934be3cf63c9ebc66f1141ce196c617193cfcf8c665ea259253eff318c73e31a2bae6124d7c6a08baf0b3d52009b896c0d670a530baa3079d153e46ca09a4783481979517091408d07bb227ccefd63f7d09da48ec98a92eae20a555cd0a00ebc04d1fd825c19b5249029b94e311151632264d74e45415490038f4dd45df5f1e7e3d7e7977f5fad0659811183e27d64035696ef184416b808f13ed453c90f0994e222db958b38bfd7f069e4ba2724bd1f67f184b3a8ea3b85d9c352ebcdd51276bc1fb9bde2d3cb3f9396243a566a77b18e87e70b71a337ec17a622d96ecb104f2bb81b27ab08881a5cc9225d8966c18f5c0055f71df40a40613984bc3c80b308d14faed38f2bd0e475964d3377b9391f1954063c56c519fbb1d89aab4679f9fcfafce5eb6e5cf163af99e8ee58e0560c6c8760d2b00c515936d71a8cc91242ae9afa9e13d7221b56ca566c7ed7dd78992cb4d094bfd3a47677dc5f9ab5ad3549790711e40ab28bb36958e427af38cfdf7533b092bee7d45550fa950c2ad10700a2fedd73df55c0ef34f2a7a7592b3bd959df539545ebad82d4789bded7302b81112bb70befbddda2ed9603e5f510df7bb72589c95da3f8a5913f7d3e7e7df9fcfbb72bc8ba2983f8f6b1dfdf94d648ddd9b8ef935ade0700e46a963cfe3f78934bf53f7fb25fbe1d7ebf382dbc49277603e76dda20994e84a2db3cd81eaf3a4bb2f6b71ca95b855ae0892a75d2672a7464afa837226bc2d504bf3470f0b25cafa02d51bd4da21527e420909bc2430bc4df0873753edb9ecea11fa31ab9eabe230ac3e4ad40c6bea91d2c69369ae27d876e24e09e37ead51388c885a07c466a29489a520dcb331e95bb39cbf71b34db5365348b2079ad437910ad03e03a80a2282623ed342bf0762de48be270abab21aafdb8689db2cae78ac9dd8d7908cccd6ad3cf5465b9568350385bfeb8a93704fa8f4b1d772e00684cd41524f4c03c80700fa8004854a86af452a83a0fd0e65828d78e16ee3c219e5eba2031a957045ebbd0d4a098b274a23cbf29f2b8ef6f4352dec61ecdd2b3b3a0c67840c296cb3c5a05bbbd8776801b30ffca1d6613e3b0fbe3c9be3c7fdd7d7dba8e7470e0a45e8fb338debad4e1d7d09f8c7e34fda3fcbd7e644436accce7e5bab620385e06b7a92ae3469b6cb02cd3ce46e022a4adecc7a72a8b32834e28b551735c7e3cd5de1b7fd1087c53c4f3b68e78fe5d9ee39e40b75c63de2639dee6257ec05b3d7715fb9044908ceb9844576cc70f1dde39057341797e2bb1fc6d926dbd1f0564083ec017e0a1fc20ea217faf8ab3d5734087c1cdd75e3f8a82f1170ec166ca4aa6f37f6c08ce7beacfe78b28dee0cb4b0a603ec7c8176de178c36c9e6cbac76c0ea383078af09d2845d656059a7958d32666bd988c36d50a40ee296cfc0af1f65d15764db6bca7d87dfef2fbf3ffccdcd348124a79ca23f513f49cf254648dcf50d13fc2d45b3236a4c6a41791f38ff0d6c576ca14974eac9502ca79d25caeda4c2d00d0881db5158a72dee45501985a1d612bcf83288bf86cf286d36d5ded3f3e8f5f9fe6f45a8e7cf6268c0c3e61bc9ec8a54da49cc0ff5c4c02896eba59ffa9b5764258f9adbb7390bd6f946d1831333e53861b3decc1d74a21054a0882a20257b5afedd12b276f4cd26e69e67d9df8d65a6beb78f514537a84993250f6e3d4750a819bd071da6f4396babe1e1ab95a6dd8518e5efe34cbc3a8d585d115c1c8cbc94b2f38a33eff82d809519461c443789a5af11451a0a894a16c3d3d91347692c8287fdb481c1ee56c584fe7cfefcd2a8bd350aef56cedb73f9e2e4011147d316157286658622ea25a64369e9c6bb7dd97dfecbead2c3f9c1312c835f423192737afa64c46669867aca7b89de80d2f7bffaf764a90ea2885bd4cb39677c441e4b2897d93b805a4ed06245f9578730282325ab8f9b15f45a184d56b70c2eb81a944e9ea70066496b1410ed2213e25fd3591031c6ecad3ef799076db4fe1c2b5ca55fa9ed294a7ea827cd59be11a5951d2eb8152689491efdd71a035273b4e9f5a3c8918b7efcf4efadbf9e0843a802ceea8ef0d49e6fbe9c9498471bd9f7c783d806113b1b92e0e94103dccb018fabd96bd57a5bff189a22e615c91bc9f2944b61444048d3c4841ea89bcd7739a88a3483d86b75ade07dca434af3701d7850c33807757f970944f80f96dfd530888440a7eb0e4b12fa0272d05b590b7fe2944de262ad042b979620cad98a7a359c44019cb0f5c3af5ad87e92b83ce2651faad1f60f81e9361fe9028396ff4b58762c8b787d62f64c69bd30b60876cd4f620da57678c656a20fe8a36524f9f86c2a10cafd266404b8852bd9021f255c5a0cebdef0322aa188000dca031481ffac0e48152c052bd1315a7cee03e4c1540811567c0798f0d89fb50f6a2c4411dcc9423b2da597b2de808810fa365c52148daecf0ee06c8b1a1f44f216c3379cf3b6a081a9ff23629015a9aeb209212cfaecfe8b6d03f8590b6b10395a2db4aeedd96b5db462d9373a93fd0ef28442f7fe7851279fc3a0e3174a7613bff1ba820813e2b42465177938e5f514159f3242ace95e57bd779e6cf7cd70ce128abe7b690cbc055975390d1de06f2a0130e4d1a792b0bd9d14eb35e1448c4e94b8304ec872e177225df544754d2269d833374a59055a2e4913cdc6e6d4fceb3f6217ced8a238215b5cacffdd6beda69191aa53341cf8415c703ae3a070a802a8562ee64ec49fd71231051611e86fe411172bc9206f9fea94f4516a557c631c62312fb5d1ba4ccd2b0556169a42419c8a1acd396030f52c5136ea0d000410ff956c80356a495817c3df71b867452cdbfa4ad9f306f38eb02c745decf8d563bbdb11cc03a81dc1bf6a2845ff6935260ec71b1f525179f58bdf75c78a4207b53a800b9287dfa4cd3088e3def477d8ef703d5dc3e4410aceb6bd77db0a610ef2245f0e4c78957d77aaa1a00c7759055612f7755388c242d84774eed88b657c420f9453a331618a5742308addb311a1a9642e281a2172d14418d49b65c201f7b115f308013c582bc1f9958c1f75dbf6f8ab18411e1c71a5dedfb1a0256913eb1a66525f56e60dea18ff8b216b810e5fee76bf219c4472e7032055c93bf4b97e469aac402c7a856906b218e553ff872927ed6bc1df44699baa7908b61a494995295f9a250d0b2286afca2776dd787db791c78d7e1400ac027ea8ea24ff2379de0aaef55e7d497f26e95ea932b0291598975b194cb425aa2f656c192832150145b212a18816e0fd3dfeb2150001a38bbb2278773112392151d05004e50751c42e16bd0e5580f1ebbf7387760a950b6a24568dc914c6a441e95e920a400e66023552558d6bd3d450a8ca85b597665730a259ea442fb69ad49c4adf620dd3a3d167b3a42e5eb96d50aa5235353dc31ceeaf4494529f42972397cea0ff569a0e84079a3c84091fb88653963210d5f83ab17e2904dd8650a485e0afe62bb446aff0f09c42bfa0ccbb20d9e0a443dec3c95ac2978e56ce768255275794fbeaa100d892d7a452cf0ff11c1994396d1e3912e131447332bb687f1d4c2e5e5e8359fa21fb0e7aff6f2f5fc62ce0770f2eb4183372986d1536d205201a00c831944916ec0a8a9b9fd1aa35caa5275289a91570b2e2cd07e04310d5e3ac99f0a8c307c82bcbe0757e573746554ab32342bb4454a0a43ad0b60d0588c543a918a46557466150dcdc2ad649d4413ba242b36e04927394f66c0836866d2028e5a80f33dc8197b8f980f9cce9a73335dab5166be87367778a5a46f804cd21245f21a8ca63c98a95ef87482627520f3e19c947901e9ea986fca1307a89c761d68af53e2db9f9f765f67290832f331275c345901ea35c9d2fdb08af8b6869f101ad776891a6e72990e550370f8bfa4d7bb1a00015a77d1c4aecf3b5b8d7ed3bdedca46f6e51fcff6f8f98f2f7f5d50553371f027bf69db088239bf2927cb83dfd64ddd96219ceae04fd7fd363cbd7cfebafbb27fba04bcc107e435024ab1d94d1c406967cf601ed7681ca2bcacf1502914078ca9d1c4c9f807c3f2dcaeac4ca693ad79b4d1c4e5ad2e26c0d1030ecfb70dbb4b3afe39cb7ec33b9e82f53452fef21d03a7cebf1b3ed5f9f98637f9f5a337fe9487bcf51b7fd55a5f9e5eecff79fe3c0bbc2d2652792814012e994ca1867776479037780274d2de5285c1b6902c3af28a598d721729f611ef26dbbc675dcdc91b9c89fd3244d3c8ab3d4e23ceab5c9a349e3b8010f51c30ae3fec22669abe4ee1bb851a7c13718fe79b0c5cbb6c005350e4f126ef6dcf0fb7e4513c257705a2b7276f11f54fde260a474b2236605080ec50a42664dd72305186457c3d103870746a33217c5a4a2eef28b8d53da1243bfdb4c7c30312c090a098f5931cfb0dd18b19f99791a4d51dd0bca02457aa265331d554f2a6f66e90aa42faddb366cb19d4cb781b6156972a042bdfaef7f9e3d3cb1c92ddfd0722d23e2638b6d48e9ca71bc15fd06dc743dc53ee5ada1412352538448565c8e79fd434ad9669244de46ebced31658b5084cf5fbe3ebd1c9faed9dc8262c26362793809830daa49c40fb2c6ea4a7b61c68ff76131f67a2fa3045a319880b9c0911a5601dfcd91d14c4f31df81d1d0b4d3a6795c9929149497928c4457f4fd6dde89bdc26b005ad3cb60c62598c645c4880ee354307e80c11c35643d289570506f01203c942fc223c8ae58b90d23dd422ff21d9f4a3e38741df27a917824377b50d27a148301f10158f07c46043f2fc2c73943c6ac03ffb4bb4f9f5e9e8e33809340393f2047a161cb607d3d4699a26ca215b1f681033569f61ccf39f5b28dfc96f537bdcdebc7da41a1cf2eabe3e4c93b07099c6303b0b470a0b4e5a098c5e1e407ebf14186d0ebc70004fd852777851936bc8b193622e1490e6dcaeb21183ea541b949af86f9f1f86d9e1ce9b1d39662bca28d51f29ae3f49bfedc03db18fb7029978d179f2dbe228662574d3d874b23dfa29ed75aceaf07b61e11b2b22f2b8271dbca26dd6e0b67f7e3f371e6144914729469760db121bb2908675a18c1cac378f57d0fc3f4a68844f3a8c011d01822c74784d879caa9cc37c0cb09a37410d2ba53c86b4f159513cc2ea512a7b20be434acd55dc8e462289a19716997426c92685ea32823d04890508fddbcf80f8d5a6a465f3b089e532104dd72d3eabf5d75979977d79eb25356400f8227cc1d296a95524fb1cadfef892f171423d13072a1c47ee7098adc84b0a146a5e4b10e44987e354c0208199a803e1f1d998a4c6ebc7a34acbfe0a6e8d9fdca9b071979883c4d1a0aedf48bcdb4bbbdcfb98ef79be9902dbb8129cd868f337ec3e574f5a3f5c66d3514617ea6f51b4edbeb1fe5cc79dcf5e7afbbf1f37e16745d4c44deedfa0608889ed51d6ef0e41f8ba84ae9ed6d70286fdeb8511d65c1bbc21917c9cf7eddfd7ee159e60670ac77462c2edcee71c57dbcf4c42f43e64448f71bbf6d433c21723e6e3c10b9c2eba19826527f18f274a86cdb9015ba2b6dca36e991048699135262f4c4d9d74b9dfff9f4ef593a905bd9e7317a91426bc07f88ac28171eb1fd158a22cb476092c4097b484ec4d97e540486462d528bef080ff861c672244134a4aa8ae02ae28bacaa6703a961ff7dccaef68b1439ff7cfab7fd7db7ffe7f1cfdd7e3e780246f0922a7994867d200486036aa65151356f25bc5c04ac65c30dbcc8b55dcbbd822225aac5327486e764f5017e27561550f1103552a85d628b56022d94361d4cc493d666a70f7749d4813a91da157ca466654fd88d76ed71668eff1811afe2556b6937ddb17f3e1ce6185b88bcf11b8edb2a6bdc830c5dd0b334e50e60a472fda63f837a035316e94a10ef22a56dded46d1435447fd50b91fec5bf713f135ff1b1e263dde453dcc855d39d60f2c1a9f294dff467cd24e326459a8a9644d08a433c01c2a39b8de4ec29852c503aaaacad3fdae98b9dbe884c7670b65d428e666144a26a852012a9d456f42da314bc510b13e5dca04783e836ac72f10476390f58fa2de0c6d395c79b27e97d8b1e2d5224e6075c928d52c119c41ae96df0d1049551e514f99ab4acf231bf1e8abc6deab62a6ca1b4467aa368c75910d54a30d53c060b8155b703e9cbd797e77116c283e4554c629b356342e9ff35674285f145ce4436f97b391367ae73937e3e67428afce9697c9a19eaa083b5a9c41fae21dd441b594bc53cf132d5c0af6420f936669b7f64cd0646dfda5272698ca2ab91515ac90048fd1f598c1e13f0a3dcf8bec5a8602d4213994ce14797a27a7f257a1215fc82c68018cc15dcc1735ca4aa801b59df1e3315b039ff70a86734f1dda19e6bf6b879fe92aeb471c361b993aec4cadfd4feb8dffd394b6d5a06f9cbedc7ac6dff8330bc4a85ba29f7d2cade68eeebdc926601951488c1fb02da171300416d3229005d9555958329b6182cb01e2cbb4086c82c37b079c340724b3d2d1879fa55c493babb806f34dbf6a26c66585d6ca5186db572da4ddb3dff796bb65992165fe1bddecb337c3d885439808ae4315305bdf0d863ef3f502be5cae4f31d645cb9cb58faf49cf878d177012c15e0cb4fbc4c565b274296da1e87cfb360ed824c5f0720ed4cadd97a016fc4a29b218ee29409f503f1ecacbce300e0ee840db215eb951fa8253ab30f7ab394d9c36274ac1145a76121c71b7726f6018c4eb6946ff792afbbdfe7e8c80193fce721b4fd142aebee85b0be9d607252ee365907447efe89b9c7e97b0494cef2ca0cf4483ad4e57d05fb3b9ab57a5f643f2cef6b5945f3b4da8867040a58d87f141e1ca189bc5d00debe13b2eb9f5f9efff5c59e9e86cffb2b7532de22aa76c34b78e428bb50cd2a82ebae15cebab492204e969c60c2ee761bc76137269b3e9c2f8258d959142a8416de6b6845c14fc421e2dd3bd92135b67cda8cf10d305af0a947f5af8340235ae2982cf9d2c8d5d4bda2c9522d32011300ce6100994c06b064512d0d7c6e861c603e5cf910c879915d5df7a8b3913d2b9aba89db32b20d03bb11689919802d88e60d4867d120bf04ca65702802cc258399d14f3305b948d58af088d49c7ad4cf975fe5d35e73ed6bc58e17a9e688c478c01638ff88aac44d78f4a6cc1c505844060a218c4010a8f151248153a1346b4ee44d1bb7e532b03f5d1d72d321376a0e5202f77f459c74cdaf1f212f87ab9b7107859ef596dc6536f8c6ddef4f6781b51b644f9637e1c4af0766dbde29ef2df76a1521bbf3d16fd3c07c0a72df81dd8987744aaf071b6dde26912a86abf48e71f7ef991cd494d77eb4cd629029d8105e65113d5ab8cf28e11488f6eabd97a389da913c15f930ca41f2c41408506447f599cb4d46b937f254f4aa64a91df1ac82a7b4dbd29d6decf040fddabd7fb96667209106ac5f8d74ec578abac081806a24cdf8c0b2cc19262faf387f6e128347eb675bcc5c79a066a5026ffeb25845ea5e09e42b5a7fa5d5f7a8bfff4f966cd699cfdf660868f0796a96a351370742808a2a311d06568d1f00959272871bee1725e707e2ac6ec184354255f24da586d650c72d77d51311306942f328acf4334e9ef8089ed326d20c7858aaec6eb20584226f136911084c7a4e658b23687c442edd838c45c1510c6b7aa0e98958dd6f73ec4e1bf9d76bdd39f55ca39cc9476a51a31f3205ffe0a91493d57217450234d95083015045e07a54bf90f17b8d55811c02aa146d9c71de7e5c4859b8b40571d2f1cd0697a7b3e10c9a21b93b839077d16fe7229cab89962ab6ebdae7ce425970ff3d8539890d5a1fbdd8a3170063ac3d357870c878f8b0b9afb16d5a6ce78d6b7ee6a96f76d062e8daddb7afcfb3f18ba99674e4b98e381300f1cd2cab80a3bcd700bd86d506aff9a8b9ad515927f318a978d02c49ffc940a8497df6a1eafb3b868f07ec6364423e5227936a4046eca07100a7b1c0e189751b6462289d9f572b8b99e6066ac3e7c7fc5665b8557d0cf0efd141e75e3881e007615c98150132762d146532359356dbe0e621c7cb0a7019cc4907030631045259c2d3630517a432fd75623ea4c5523edeb481074fd3c314cee5610b0c86a19984f78d61cfcbde42b05cde039832508a14b5be688a878a2682e60ca3a1133d07210bf0e6ea138ef367b46075d52a9715ea6495382968185c0e401ed4de1be7fd8b046334025ee1cd5b7bd09d51fdfb6e1c9f671a6d559aeace01571145173db9349ed1dcd21e34640a312845c730e22822a5281a7982afd69fc6d9751c91415e01e8ee1598fb1d233c2b021b0745a5d6b2c0bc0a934a4f2847c869e7c573b70c53808783aecd374c538992a96b5596951880f6328c4ac7a08b265096d7fd3b467127c8ab1a2b28c54a8fd2b5a6527c0814b3a970de9846d91b0420a6a366a4e51e95210d889637d2821f948b5a5ecefaf23b17e46c152c9343c75d4ed231b09a44ed188fca47adfbee968e2b26eb8748bc7260bdaa719c7752f498c3b951ebd8e2e9c707ebfef3cb5c77ab14d073b88440a6873ef1944849532dc996c7372b8ed5149d4200350d962ac285a489005ca827b3ca30542c800c7fabe4a91a8012ee2d35446715424898e2378449d60c16df96e24d24b9242058491e2a37cb1a1d45e9813484cac12aa561548cbf220deca901521413c140e4028d6ac0133514e1d29a1a2e258740f81da8a29499e027c199dc431700e944e5c85a2254764f9d6741baccf42611a1588b6f10117bbbf946ac925a7f488895261c54d6564269a493f0ea1107c6f82b8a0f48d524aafba92df3fbda32e3048fa66c520be977f45d404c9d72b16310645d6215e718c814f81435f6ae9e874d7ecfb0092861eec181e787f7c83deeefed388d2e0d85ab7b0c133c33f4cba465f37b5b36eb3320b64fc556567a741932548f8a25617af5f754702c800c02c5ec8327bf67f00402883726407fa2c6264af3e87b3bea009b0a210baadc01f6112b836c399de7c897deb8fb688b88a3b87f467dc719f5bb677c0ff6114841df41867cc719df2b88fbce192badf9fced4ffbfbbf2f2deaff16ede50192f96b8d110c7faf32c1dc7fcaa2bd86cf4f2fbb97fdf0efd97e924478736512c0de2323bfa17e0eb6cbc6407e076d0693efa41ef2f21f10c38b024ffba44f8b4ac4b291078904c306e229523caaf1a6ae69e0776e5fb328d3ac71b6931ef67392ad2c2d58a792b48c3937caa087b952d1df7d32e78afc7fb01ccb51397efef2b49bd15e00b1765d94f5b7c2988dd48cbb3dd023bf86c5e9464f5f9e0d616fa56cc77f3efdeb0717edffda12f317acb7df5d62dc8f2e31c7e797af4f9fec7efc76fc3a3365ae4cbda5cc7e11830feec7ce976e79e8f15678bb7f77ce3f581c5b3558fdfde5b73ff48059333efde3ebff42f6c7ffcdd67857b6c6f8f91f4fc7dde9e241a8c8b39587c6f888d4740d9cda53e346212b4b1a82ab3cb5221f8e527111f69dd7df2ca5825c6406bb76fd7fc97b97e6c6717c7bf0ab20663d40106f6059e18d16ce554568351b95d295f42ddaceb19cea6e7ffa89df39204589b46c6765f7bdf73f519592259120def83dcf49bf05534b527c6d61229db271b7f81e5e1ae40a2638d832b20d73c92b45c4917f3c2663c1f3e28a87e70a85dca29268c26fd9d45c145f27a59ba07d5d6c15efa29f5a35a0da6cc2eb03ab914c5c6f47dc4b1518415d3cf2ef5101a9ca30ef85652d00c34b76b34eb30a0ec0c3ec59dead70f7eb4332edcf3dcc56f0c683d3a9bd974816b69874ab842bc8ea6cf561a3105415f7446d9031059d0587940f3ee856098ceaf8eda067b773aff53baffcb47726c54f2dd441b6bcfc0bd205e673f55bfff2c78f6172f623ccce7ae36bb3c0bb6c92e887c9f6c958bf37408da1d9046a9ebd81f54a55909d255545b7c1f2aa308d9bec50e094d511f81d3231e529bed1d267701828706464d3d8fde30af9e9e14ac0c30520b5f22bc89a878fc13c9f75d3e35fb36cd2129505cc94742cf2d6e121da8391cf27884070f106cbf7396aa562de0844a42e92e00cd17421e8480acc5455355d925e48aaaacca85fcb24a8ae9a20bb35b06a6c39c58ec854695127b09581e610c80b059693b44ca6643460472646f06d9a828dae0c8d7cd46b3f3e00b12c41e69c8cecc86122ff23b2cab7c47b00d844f0c780de222c91f43ed718b94405527246694b25c383072a40aac646c0820f813c850121f47bd22a266812705287914a658e01a85aae0f748d0e984b8ae1c532168a3c7bcd1195db933cdf3fd37395a9555d25da8e45ca4440cedd7a441b623b86a2cb3508ba81294fa77feb81746713f9707236caaa6d73856119890df24753e34da768c74f98269d57a1b7597e6063801b24571048a8e6a33635dcb856102fb28a9c4e76232580b743b6ea9b4e81838417b2745b59fcdeb47dbff3ba41bf7b701949f9a4464ecd98de7ec00b1ec0b6e0f6c4d6d8cce634ce90f6ecb161b6b5cc865ff56c7464eb49eb66cf6ecd1e5bdd1a5dcfba1493a3b42ecdf32e4da72e4dad4bd3e9a9f47be2995373cf875cef9f861f0f8f871325ba74059ae5d30d87acb4161363bf2abb419da53e169000b84881b6d5657948ba01806570526911dbe406abc258b3589170ce4bda23e5088bd373d3f8dc747a6e9a3f577a2ab5e7e6f973cbe9b9b53db7ce9e5b491289e7e6e573eda9c1f3169f37196d1e1b6dcf5a6d67cdb663bbedbce1b0fbdbb1e976a5ed766abc9db5de9e35df62a68c1d60cf7ac0cebac08e7d60e79d60b1ed8fdd605b3f58ab6dab0567746d339a6c3e0e58c93ef7c9d4e038336d4bf1423db0dca77ab8717ce54288ee659c0432fd6fa403310fac1d2fb48b99f0f17a80113a8df5c867f528b37ad4b11ef5bc1e38b8ca588fcb99f17e3df6060221be472ddaa84d15416412dc80bc1b3c6ce315ac8bc82399fe71c4a0434268cf71f97f5a752e3692af772fbbfb411fef4f9989457d0c207e11fbbc06c1dead064b7ea0b05578f85f5ada97a23e04afbfd2d015d604392a7abdc2ecbf6086f85079b3617ada9f619f7cd28a5195ed9114be47e9de242b5aae0304093059e5e53a35bf355dbd89c6cb5911614183f1014707081eaf46c3cab3e5a33c5a9403a7c0db278f567c74bd12272ccfde7bf267cab9120ac077d554f3f7c2807550ae378071292a8ec9afa0978614bab5f15a0cb3a9f6b78b5bc9f86737d722cc7b6deae23e796057b79761def3e6ae3dce4653a5979798b987350e88e169ffd72cf9ac7ab9376c0309892f44f783260e800e2a6c2b6ce8e3534c25754ff5a6d62996dbb7982298ff3b3b4b0604484168d4a7f2dbf1448b13654a568213985a65edd5b1466b0000dbba29674dfaa64fd6310bebef553d301f6d5a5b8d872b64286bcc09d23bdd5b28de6f034ab7c42a84aabcb73c3a13eb6d3130287d36587c883aae27405d74de3c26719694f56e0b125b709d45aa9b20b119cbff8b9af0460ed7973ae29c5c4dbeb1ef93662ca7c0bab5e061f7f86337cc9856816f5c73927f63307d0187da8d258057003928509561c0a20517603b01c4ccc19b0262619f0d18bf120f7e7b147ddc12100f5879816177a2b14667922561a48da0894559093b2a39394132da811ab3f380d88aa071e43701ff27d3e5a6d5ee4897c96775638656dd8f6c0b96b0df44eec26b86be8c7278097f0ce79738d36ee32578954b36b6db13afcb001f910c1576bcd0f3c2135298255218bc84a7f2da2fe7d791f8c2ea79d51617344a8ccca0bae9b92dbdc79dde1c8b6f4865f1ec12a2ad81320450c4fbcb5fdd09e4edf409186acaca49e600b066e534eeaa2a1a83160349a8c170011b6224c33eca214e73253ac4d61aae83641262fc40e2efe54cb308bdf01a69a771ebf68c55f4594513ad9cd95939e3e3d13a50c521422aedb50301a02b1aa8772e6824a6c66d303eecad0975b4bee700862f95358bf1a62b8bb532b4dcc3bbaffaebee653763ce72bd9438387d3dcbebf5c126466dd530b430bb14271b502c739bdcc253cd5261b676cd6a5707dd82cd920830c5c3c0f3fac5aad05bf7a12a7de9945d6468bd7de7eb83d5b92f1f6c6d510ef8a03001bd9bd98404870f5efd25285b87d098e32be0596508ebadfc001c69e745dc088306596d9e7791c747fc20777abc9c8df7f77962856c6f3499215631e9b646dd0d6cd0a0dbf40d11c883df0d5f82d8fd642e74b759b636cc406373231fb0bf999a2a1046bb31f964b9c903f7c24750b807d0e0bb91bc402515d40c69cf58e33dd973412aec89460800e466f6233e41326e884d84f56705b0848a12eaa53c1127cecd86921fc03e0a908d6cac1f740042e1d6999287a0e46f124cbc3e20cf350f9adf6ea38961e0d5d315aa5df156196783a4f7cf777335a28804e08ed9543b1521df00f48a5070b2a5780df6713761fe57d0245be9a16306c6e2bc86d8edacf168f94474e4db7b65681a79dc1bbe05920db03727d2dbd72c5305e619992a5d6a53653f1210ff1f3c61e4d97b6dbc25bd51449c8b321699efa56a32d3a6acad2263eafb13e98b756a0105e316647eb3dcc2b8a4d23fd36bdc524e9eeb4baed7cbaccb8bb9f8b07bfeebe44eadd074f6da9b9255a7e15e2c3aab4499c89b545486cbc98fef87ac2bb62a8d8ffb4ef45aa00c072db7e98c37d9296df73711561e76ffbc7fb87fbd3bd73eaee9623d734cadf1487cfc7cfea73701743e1f6767fb5214a09c97802fb70ea4f4756b17182d872b89e957d3a737135e848e6f240fabb70d1a0f775fef4f22415475ff6e70fc146bfefa10f43af9d507e872561003809ae8079d7484061a74d441956d0088e279ad1f7f9ce498b452fce12a48d3c569bf067c71b856f9c3fb76b00fdf7fdeaa0b7cb8228d5bb035ce1b774df3167123bd813ce495ff28f29057feb7e51289cafa3523a38daa5cf70b5f6d10f1abfec6fd17fdf9f4fd6e4e06f99e01e09daabd3bd4ef35cd767fab00402d440ea05e1b151b553eae43cc50c3ff24b2d659773e7fbbbb7476010627ad52b2cd4c17cd72e1b6ae8f470762c7e0e4082e8ddfdd9a3c8c8a5b29a6acf07e7dc888b0626b0e26a741a3d432fa8c79ae7b8bdc90c8b81993edd6968d03bfb29c19d1c06ef0691bcaa7b1cbbcf6afed245b3159a3fea87b2994a4f6a8b9b7100099b027eb1a9d9b4517897500bab9fd1976400fbeeb8f41c6bc4b79ed810e613722a0f63a1e35069fe952a25297c61f8a068c9222f9ef650e5cdaa257acf5d7c851396387fbc7bf0e73cadd0f64e2cd6cf605e2c57abaaf0ddb95080c40abe62a02eb319af8f158e85962ed7a62ea266dd7224d0e61420c3aea88fcd52e7f287ff5300fb18c8a498320721d85afc34c52db1222f64c69389c44b623a025c197fe3381970ff78f67b29d48519b25f7faa56827abb47c5eb2cb0ad071135bc2aa0360e18c40d0cd5530162beafb7b64eb9f12f07ac2b35c95f0cebbf1c769ba275557f8c30fe7685e1f3a4c9ffeb81feef4f7fee9f16e262f769b35f2c0c5be6cbb0f19f8a3b2f50abdeb0947f8841f2c42a8dfa4adefcbd1fa65858ff75f4f847696400b2b82b9482d326c8b115f956f2fd16056f03c81837c0d5467a16f5edbc8e6d9b215c161f1b76a6a5078690e2df99388c7f114c188877454dd93e93cb2fa9d89494584daedaa2910038bb593f9bcc03706ccd9000a99a84e4fc3cb14d0548266c22a7890cfac8f4fcfd34cf126aab2c80fe0a7d9373abe7eb1f913d7761fbe765eaf1f8f2fbb9307cb81853d0c595bdb83f1b6b7435415102648fb8ddaf7da0eba6567decace64e2e09981a13837bdc8db64e42bb74eb6639b36dd9075e9ad7c7b5683e32a2c9fd757394c270f90b55b287d168cab9f446cc263885778422b6c91ad2b4ac255b4c24aedb84207bd0d26abfc3328759fd345ae4a1ca3c051e5e4adb784268b4b6ca9acec9ab76dc49692e77c0ca6f65d165beafbb68fcdee3d0ed9bf55a89c4fb61fdf0efdd392e0e03d517a45655fdbb2ad02111f421a3a02bb584701cf39c06fb6109ba89d01aa518e3a189bb443366a00641362e179150d9d268ece96cc771bf9ee3cd905a2a908f2456a7285db850dea9ad7c9d155042232f48e77f40692dba6cb44a80830b166f2c8c3fc8e4b1c912b3af2f132554b9b90b5298e44f69d06484207d6fb0894183e00e6d54c93ab6fece8714740d313d97d13d04bba01feb547b657678a654a7ee744f4b2261579b813693f7b9220843cb5db8ff3a9d03106a2acda9e0abc1c67a403e03f02f919d0f21a0fbce3a61d8201265685dbb40b80cc70267be34c21e57c9465989d491e3d158ccd7c8ef42d086c2ebc93c3a8a9b82cf721550579264c168643b531dbeb86648278ed60aca9485286fd18e1db45e6876f6560ea2890205947d2be62c0ebe74daa33c68df902185eeef5e16eb8dbbf2c40992f4ff6deba63ea174af82aa6725a8fcd5a52312f44ac89e1e0622925513f436fbb6310b9664d747bbb8a4b5bccbc0f0e33c0f54a5242484196cc573217e256464e5ba7fcd174ee06e90a5efa3b914b5d141a0b8f82c6fa84430ffc6a513bbe36360e999c0ede88f83b79d391b9d6ed2de5158f8a32b1c869b729db6c72192c88488e99dbc9871f71e0234c442e567ceb21aebbaa2d3eb644437dff72f7705242d676cb4b9de1437ae943074d7839a2ef9776d42b86b6a472bf1a4c77e60158b81baeda97a2ce6b2e83b9beb008c93b03925c69b588556b868d9feb440d269d953a5e71a31cb55dae97f376ab3535a6d7576d752bcbfa5aeca0ccafb35c1780fab937126df36a3eedf2db96370bd5a6d7eebadeb9ea0f3a7cd01795afcf9df3863efdf15ff3edb6f9bdd289b8e1e8cebe5023a15298f9bdd41969c3a5d3ebc4b7748e2537b6b27dd7fcff5991b510b89167a60d918711b7317aa546a7140d1c0838032006a1fb000d02103b8f2f6e421b3bbe83c92d5e10b945a6878df03d4e3b96e537b65e74dcf7bbe7c34cd9b3845735156977218dc2529a8425fb8eb04459c94e3243f9a4acc4101d112d45567a5f540a7f5754a2e0286500af3df00080a8544d14d5d489b29e9913e180709d1bd24aa2b424d28a9f094b691296f285b05496c2521985a572262c116e2c780a4be503c292fb39610940459496ec47a5a534494b89d2126d741097acec1137c09ab2d578a9921cc77ceb6d34391ea05a24d7e09a528b4f46fc93e38ca3d46e657fb2af5f6c31252bff730ee88f6e38d79ddf97ebe6f9eeb07fbe3f87cab6a642aa76a23c252a4f504c1a99572fe2e5de8087d7040c5fe44819a6cfb1a313d07833922ccaad0d88faab202675d620850451839542a9451885274ba8b71b991ff038a896e424535ef4a23020a1db71a283043501c48634d4c14133cca2206e22296f1b086f6e24a7b5ad1be85d989f4cb44b69c07c0dc6c7db605c5275e38f22e84b77839a1cd5cd2234a37688dc023a11b14352dd9a546fa881231430ab0e78df7bfa0264d6016fa806e3a5db1c1d3901385b44a80b32dd72217e580730a06a1c66ae6fe06a78cf2dd1c2368848d8ff113a81151731c7b122aa066e4945f344b0236e88ac79fffa25d01bd585a98e41d635f28911b34ef2f902b6079238b978d02dd645b72ff60c14f2dcaca1bdf2ee5ed6c1d19b201327e3ccf5970c67879369b2d7d3f43e7d79381936b771be3a96e6ce7e5a5cd3578713939aebddc51278b9fbe78bfee3e99f7325e7bf75857e892a9b4881d1c9d23351fe3b708f0780ebb6f4ee987b6d667659ac515c37ded19f2827a63b0f3c2778eac44d4549204879eb594d5496093ebb9370f9178f06c56b5d8a840568c79f8c36382e2315edc2e07f041bc09bb2e3fde37fed66064b2043803f2c78ddc05a6dbdb1be658358443c47604974fb86996755c3e34606b97537b2cda8242b96897c48686e575744c27ab910b8ddf506dccc36c8f994696a56163a5d135b010320bb994d52257f63011b297562861bc2c81c52edb5ed6660bccd1b7418330fd4827a70de154f2ff77fdeef77b2d11fceb8fe2e425736171098af0f791629342dc202075eb238f77490a51e7434c92311681512e9687cbe8934e8d8aa02f36f822a4b7ac3d95253b3e1ff606afc595b1bf1f2d7cfb5d9699b4df1e137191c72d28d388e224a55b8588bc82d48168e319b9241aa60c3e04c23b0bb4072ef10311d4c97dd7611ec7358f1d2acb03ccedd3ad386320e869a06439d0fc62239e5686c4aaf0f2212ab64a20d03e01f301777a6662fff5a96118da3e3961ac8092daf009d37d1c1b46b1cf8a8647139489b52119777a6cec8f47052d6cbcdff82e8d89b3ce820eb545ece0a10514dcdc1221e7f3cfc8118edf32cf21c000edd8be8ba4522934ce12e40ceb650fe8c4b10ddacc739e62aecee9908b2153275a07ce721b23bc6bf8bcc9261e9eff251c45039d3e2319a145f1f64e567608559cafa3ef3dc2c343d5b7c09232fb1624323494f142e982306444c5b70b32fc83b8a1582bf83bd57ee92df3244171721df8a541bb4297164d290cac666562e947bb0855b620c7b19d3c2b85ee994004d850a04e4a306e05d34a1d0a41829b6093c22f46920674bdf78ec5e26b2ce0db49a764669408599b4268c30709f11184f09c3c928315d8390ae1eee14a96fce075ac5d94bc9edd1e2268e7a62e9063edb324a19e0159004d3289cca3a906eb749645357a5173d148eaee2fb285fda228fe93c2e93a300b8b7e4891799b4e3283a849e438d0b68b75c123d51c69d6165d1b7201293492653215a84fde780be8f04e4a8cc798099195d05013500cf21b434b4543772001b247207bf87986ac9a2ef3de5dd8af06434632a84605ca2a3ae04852dd343978ee6d14096ce4d71f5171677b68aef9eeff7b30425391944c522143a7483827e4d72561f646a63e69596ade529bf5bcc9b2ad3e7688d0bbd33a16e6d148d05c97a65e3e811c018a370e0100593f3eb833c0ab4597bcdae0d301cd00788e505d5dced1989934c7658d8d581a6d121b1c391b391814480ae07c66ec13274bead2590e47b4294c8944d5ca62eb5251a89904e24690ded9901d51ad3bd16be07849f17c7e568a1c84b6be4b7e4d1632543677161f480c9ea04925017b81f715a638f135da3177d63df4c219118cb95bb9e636a0f8294454f014f8f3f70fa062c8630a6c235bcef8c8dce661951b85365ffadc9f87c0008bbec19ed3c95fa414167df0614827d07dd1438b76da1ad858c66c936e8744c00d99da54ac574f1284b6b4f9c63cbe9688aecd807130d81f4ed1e9a28f603d9a6419be0b19031c1885243e34b82aa13a6c54a585aeafb36731f60ca29b3252ce1dc0b6792744560849647c60fb4228f6dcf44d95d6a6af0e9c520fe4b36979cdb40c9b8ca2e1593d4ab7a501764a954312e002dd68152487a18f90d22ce602e71c30d9803de63178e85470149331236afea76275c27e952a93f4c50982468a466024e82c73e16b078a30be94e8a98fe19fb21b89ca030ca577c8c030e72a0ba0d43533b5941fa2d7bb5cc94cc53d7652c8f98f05b29937d2d916c26d132d7716960f14756941abd6ffe4739c042d3531da934625b5fb2b66492c9dc92d54749870709964a6d19c44823e1ee9a2912546615471ca18efa71883c3c0b017f6510a560f438b4efbeede0d29088c5977884d78c067055b58eca6cb14cc58484114c3077c0418de8078d53131856725327fddc021a900d26f50a51568dc50c15892241a94b9084e40e5fe535d24c46647ad9d290bb072b6304f43037c9e4b949b0823160284b24c59fa5df9aa68352d1ef69b486c97645932c16848f947360d970a06670c6fa3e21e11a40a8b267918fc0b599e7d0c9c91ee08716b14266f23c3ee4e9cf3feff717ecc3f1272362c351a73e1cd35a08d6db94c38d4eb3d3092e557c4873a24df9a59c7eb1f69c6538f63ab44bcf9a35dc3fced11310ac549a4211ca683e0fe5c27e8e2fb4ed7e07265b8b5679fd92952d83d3791387a24531c87d187451739bfad3fda0ffbcbf1bbecee3a7649fc6b605de061f756d487a16fe4284380663f7d8b633f66b39323c4f3c99738e5b3a30ad61370791a4a81d1d49c1456bb991e92dc7bf05748a277652370187359e885a4df1c44b2a50a66c8565b9186b80c8e70370dc6e81f6d60185a873b0d9a13e997b5176747bce875f413bc4f9020e046dba24370f6e04e3426a8fbf1e6769af22c17d8906d52a839723c332b6a378256bf476fcf1f5c1191f5536b6f2ba625201aea492bf7a9dcf78989e1ec750f399bb4c9ad7eb359ff872da7fc89758aea547ac47411f3e901a01f3c86a76c4ac813f5e2eb5f96e7f9adda7457098cdff19e37b0b907ac33ab847090e066b70f49743d1fca0f987c67f3759668053d138b9d866e54d4e2a9ee03456ec9a3313d7644571570c95a68b379e2874a2a3e711acf0f5e1436cfddf77dfeef40595537d032d66197bb18c625afa686523c9d8f5e2b1123d063b9dede4239236dcd6f7369d6d67df778f77833ebcec5e0eb39ceade9619f33dad7f33d27c74dffcb354687e035268943b5a79ded66f801ad3f556bed076eb5f1f649b9375e38e7663fd91ea8cfbc8573acdbeda16f9667ed1362dbe59b6f792189fe370e67fa5b9f3e4eb95319813f06f476e90302d44e2836d6bef4f74f6911f7451652b078b456744d5c939e38f7e9327a01ff9264ffcf652cefc53c4a77943bedf3def87fbef73528f8844cddfa2492928beb608bc00d44eb85f032c9d053923b26fc34c35e86a00cde9f28d3450f432e4c9d2cd2a3bbd3f10a0c7c2012b07cd5ee4a28cd02d377e5922ffb2046570d054705fc922c50ea2e5eb0a562991c56a923767a0d978c82b60c18f9a0742954a4a9d079d65b7872842811f941385444530ef58f9bf58a2855a2f4784dca329beb47c9316eb6b5b1671bb4b7e68bc2a097d11d0177b82d548656230956c3c90c55a251194238b95b5afd2bc24cd8b7bb889e5f043063b1cdca24403bc41e17b4b7d22461568218948152e80b0e4e9e8596da84a96be2984c7d6d60691d14c678722c7bedc23831fa2e26b43dded64c322ef8e68af519a03976b8a3a982e9d4dabe7ddb7e7ddf7fe0c48dd6ef20da097956cb04e39950ec08b96ff8e890e8b62261a72f977803b7a6223c78e68fd072fb526eee1343effe5774b161556eaacda2ffd2c13bddbb83770bcfb7c0c9bb741b8fb780c9bb77981faf2666669affd51873e5eb9401a96dffcfda235fa70b77bde4f8d0aea1af4d0e960b84862b4d624a0f238138fda03dc037a9b457abc73301cd7a337de0d1ae8d9f9a873f31f92f988195a48d1afc7626c2b6ebb94c56702d55696d4e089fc8f68eaa696889ee5a08057770b1346fccdc410e5dfa8ef46d5ddc8594ee59708aced5874d0a69271c5843024251a5c467c0260689c23180d716e18670046a5248ab8c8c62a32ccaeee47e49940580fbc5eb8e78e3a18d712ed40ff149024a58cb3476f8075d1ad045dbd3730fe6a48d6fa3db46e5578dbe15007b351f000b0ad10ae44138035c86ea3b956aba335350d56d92dd6e314ef8c012fb0573e68402d4713d31e3de9ece8cef7087666bc4d200a0d35666b2725995662e8e647b269cb31e0027a3114060ff801e6659bf728c5317887af39dd20ce1718ac26022b13cc57bf277e9b483fd63055f19bb5fb66688e04cac9001c1e189de3f7cd108f6385260f9b7bc6ac04989461cf6af6b9c296b909e58751148e813621a035298aee3b50c4163955feed9b7a1f1ce4ebd5b4d27922037106527e7dd04184f252f6537ce89490771821d5344199993537e3d83fdb3e7e1c26e9262bbf1a80bb88a95c24ffac850b23bf73a966fd6471b32adf3d7d9f496409ba47de058446c94bcb6c40547d9718d9632ae2e0004c04ee80a0dde829817d34699c9e39378b2ddd30eee47e817f19f638fc5031f502919188d06419d001e35da431383423304cd195662c80e1c0cb803c5c37d09a6bf76b30506568516a441f72c9d08a96010fed994f9161e12a8efe1e7f0a4db390391813e61cc3cfe2189826b314804db1d280949b914835c36c1ab90e5d32f095668f614bc647534c8900633680f512092a635916445cc127633d852dbc27113ef21e5e9acced1de6246083c17e5c69ae8de82d593f30c221102f31e2cfd31c9169a4a467a665d0ce20b9c2785bc4fe582a13363bc5a4308c24ec6a1d87c29288077915909380e29f095fec597b11a20286103c35edadd7de74b2014613645675696f610d055615a3da02655dd8011b9b4186183dbe6f4c170e0da6c74df1686312899a9248d49844a2c62412d552473a7299526cecb8c7d2d5456a4fba13b10a60d52b9c0ed69c20d201996347409bf6eeb9366c6c5bbe6b9e8bda387a53233df57482e4e6acc4111038f1112bc9f988204e939bf1d1cb5e5f68a6666027c0731027b9f32605d923539850280d166cba49c683f723aa0cbe51551478d88a7cd5d246e47e0ff49bd3ddf25b827d2bb5f410d7b243e2d17415c9c35dc599e564080b20ec3c23dc32f89711f499d1749799a96cd9e870968812d1f2715e72db686fe37d651c3aae2b863ce215f6323a45c6e55039d03259ceb6c1e7fddde3cbeedb3c3b758e3733e52c23a069ca620609843f9cf06618c43d65416b84038b4e1eaf84724d91dfab0690d72f4565a4965e14fbbbe8043e28a7e23bb57a153176cc4e5d7dc895da01977a050a5f33d22e94db88e8d064c2da816b6596d63a64444b785345ea288c156e3e73ec2ee7a3318f62ae08e9c8a64278c3d123fb03b2396cd5515e00cd6481a158b80d8fd1cde8b23a8638b77798344ff107b181f4b59911407ed3c4e031bcd9694ab80c8bf0e406aeb0ee3b92de82f017875f2d864e55870b5cdb28e894733c1cabd5ac2530ec2d368ddc30b9c0bce51c72de7e0bd453e328a55b67aaa90ebc3c168cddb665e95ad51d3498cf1d0d0dd5ed2eeed6080a112d14fcb1f04931ad0ae932d8208f068e5f067fc87cd18ca9c19110204546531bc358578c45a826beca55da2edb32fc9bc1028b6b16b44c58c9d010b6c0df50ad29d8bc1141d4f623a04a326a9904adb2dd7559b6261e84d24b592a5eebefa626664a020f4426ca0d23b12bd73e03962302962bc8f17d134e02882ee653ef2c43bd8ade62a3899027b82343137160a6c70c8c79674a4e887b6ac2924820fb869286c00c24b1c2c15c1aa56d560d89917a5a3a403a879f9d64d14caf6ad314bebd7cd0742b652f95d09eb093b23835c030830910f50024466719ca1b9d9c19e7860c7466d29e0b2dd046d6712e07835819905f623ac250e3a98bca7670938d15b1d0cb4b72885e83e57baf5bd22e45248bc442636f38458a03f3988c403025ed657e142cea68625172fe5753bd28882a9a6055958dac7d0deb32e0c444c447f0bc0a8c52b730f9202282090a3265e4c9f3f1bcbfd3fb7ef73c197fab42287400fbbf14e5ad2eaad0f91144086b94395d50956f81679f28bedacb5c93ab7536356dead6d4f2fafffc5fffb782115ec66d6bbbde7637485983ad1d83c9dfce2a360f34cf7454efb5290c17c62205b3336ceab7c958b0fb8b8682b91f1221429d0e3429d9320439dde445e32f106a81f566fa012f7bd92221e1826d0af3b1a298c19ba2a34995921722f96a3025a012a67383ceb241c9cb595b8ea714e1680a1887e22d924be3ba1a3665810f087488a45c460c4a66728aece5532e34a2a5ed9acdbe0116178f973dbdb449d31cda85d1df1a6ccb7fb7f13afaf6d2f773d46be99b51af63b70462b7e4c38ccae7a42e12c3fce74257d1cbe71674ff0688be7f376f6f053002d0594ba7f0fb39806bce31eb47aca91be9774f661d9b8c2b2a2a9b54fc345c00403682ddca51a9a68ea712be2923a2c17f3f6c51c18ccb1b6bf78d5b0b693055259db6e5ef212f10e96905c47b394c4b5091abf9abdf87ddbf66b82ff40eb69010a4e18b9e1146982d6d3b9d4ed09c558e613b41bb7dc44ea1703c2a6a9d9929536924681a4ba705cb317e0a1133a555e4ace6e78835b0f75ec5cfb98e691317003b67a03e57d176e6d57a1afef5ede951ff793fbc9c10326d813d990171917a4c8ec6c641cbdad0c194d240a82b8d74a51dc1970cbb59b68a4c86dd0e7a0e42e48dad839c0c55f91b500246d38966e6aa8aa229c85d111e0fc4edcbdda2452a26cd8b2ce28ed944d9229308386394b36d7ea939e7760ecce42924cdce4edb1ef7c21661ea5820cd01170ce188c792e5e75abc51e76ed15865ed6fa4ffc2ba2a2ac3262087f29eb17708448a2d0aab2abbf12683600b7ce390c765ec33a21bb605265b1114828c99d48ab2e3086c4bd34d03b61d02d4893dec34ae81bb16081b639c37f4810c7572488cf22ea5199c9a61a530620237f80ca388338ddce5169443ea0c65e0fbd33f667304cef97717ef8cd5e33280e1f5c1eb6c02d0f2d2de31c34f4437984a0320f72050950cd151659d553e687ed21909e344a131494e679b5590095ab7cec47883a40c8fdf5506d6b9b276476ea736681d905c2b4465ab11bb9a7431611ea9f4fdf9eeebfdfee5fe78a7778fbbe15f87fbc32c4ba5d092424b07a0d641750cd213eb6e6c6eaca30a488019d44f72faee117c86d5120ca78871f5376f220009a21f77d62acdea6e0a535db2f4a0824544c4ecbd9e724c9b148c2868d4c02b691bf6690bef23b814ed0da547a0c4a456a849f09e8422ebb9461a0403f7339a05450fc4b7beb6d52473d311b8ad10fe09464a64aec90c02580172e2204477c43021f35d26ba492a2d6202b611e548098dc44e1277b64cd5e275a3220834ec996291bd01c5c7903d5a39231d879c0612b8f26042fc1aa3f5e151869f54d42aa71ad09d1fadaf950ae9f4075691345e34149c85d0195a8fd28e51009567f9978783611a8b0485a45406e4c9fa139d1f06096744cab2ec215706aa258e0a5f919d1ff1c6b92508db91e99c791eba65fac6f18f469d98c3fc5aeb8d0d8d3201eaa86c16edbd0b486d8c26c3654aa378996556376c1b502900b12263ff697f78e61e4823616bc5a5485e8c835c02a2cfd8669fabcc804cb2bf0c6003254144da1bc49ed9004b6010991c54e9b4e352e8f7a26300799b640ba22d13580816d1c69a68aa1f186b1a440d738c46972b72d2237a4ed5c00b278c396d9c2d821bcef4d83c00b56a8e7480223730a13e943d1603c03c91af119bd53c345772464a9ebc0242c6351ec0ea9ac067071a4c517f7891348dc2522517a473c6b9941846ea110117207e54df0206180e8bad03a658a969255ece11d6ae3db3fc708a181ff4c4b6012b7b8b290fd856b1eb20bb3e37127599319c06a2e3fbe9cdc3551a03d4968c085d2432f896a9126914f6b1c9acc8c6470a3fff2a8cd9850324c29c956ce3c0d44c9be5442aa7bfe0769059606aa6eee9d3918b237826e117d2343b7651a2f8e1c7d860594bb90e0d33a034c35adc391360390e2e4e994a1e1980d0377cc185398c26b181090056b74c8ef1100f0d35498f17723f172d543310a600d7280f446e675c7ef0bb96a818c6882878bc4955dde4cd2a0b241610a704c305e6cb6f973756da68fc8912a9d0be1c4d940511424b8be13f44b230a8d22338c5444f60d8d850f10287b4308e1c3b2fb95831ebc70dd9d5466452e059e76b2353a11dad8eee88c09474e413e1cc6a6e7b8bc5c3ca3a39cf9b73c3817e950bd38d53718ad09ffe404716d6cd56862ec781f12bf426778913d4352d6bc0be028ece963b218b58a42da650118194061cd8bd44f0a8b05d0f2dc948f64fcc9e80d9d35450ab80137046e1bd9aa9efff2d99fae9b399fae11764eae79fcfd44fccd48f6f65eabb2ba9fab23a03dc9da9f2db5f93ad1f90ad9f5a9c581afd337f235b9f5bfaeb881dfd1fcad63f9f80778f2fbbb309086abef2b684fe0e6cf7d12e72c700221d7e129e96cca4efd0f1b9eb08a3574c11b730edc394b6445df2ef802569afacdb04b9ce1dcf18cfbf3fdf3f9e827483b269938e3a6cc212f1762db32ef6da1d037296173046ab38b3bd755bfffae0d51aa5cf1260ca1db5ef6d38fa8f59d3b455a1d76e9b119d3c6fe5d37fdded6751bf452dac152b01f547d7dbb415d1d6e98f374f34c137384097d98acb60e7c58c068256be7416ceb0f0662ecd5eea9cda1fe71df0fdeef9e5feeea4ec291b3f85aadde9fca9eba30ed7a18aaf52d9bf4a056f4c6d5cdcd09caf3ece6655ae93e35fc74d7ee854fe3bf72ffafa5f3383f1a7283aa27e8754e01d0609ffd99195fdfb6ff13f68abcba6be1d48fa364589d436af78fc0f2797fa8c5866eede9ff5f78f3f86fb43affffcf1b89f1f1099564d239597f32605061d9117b8c28d379802ab426f6a1a2884e75e74a63dd14dede8cb76d4921184e89014cb8462a24a8566cf206d9f45ec43075ec2c61f8884a2919c8f8181961aaf88b82d358949a79e0545447802ce9680554c6cb248acb3c9b8992117689a07e34e7a0de21ca9b0071ae8444769e12fb00304cdecc080600e281a9447490c47ae52aa0196b454c82eacf4b17b886111d9b92deb5d6426b62c0763dd80c4d89c7b53e36d242a02a24b9d079c17144f3f5231c726de218b3c125300d63e46afd142e1634be662885013a635203019eb83768f048319f1009e57e6161c604759116681d822e3e0d1a469d436d76b64cf01fa80722179b62272ad2dabe238199c27b636d2c02a2276b3012596a80c59ea5f92bc8e96a3d42c4789a161c8b26e5e626810f0c2c931690800b7d70d4958372f896e78c63f81ffdc40f4af4929131fc54f3a4c1ec0ce984c2e7b887ed6d3ab8103ccb588e5169e64ba72901e13f5c074a230d07e4b0f05cc249ea007d3ec8622051b4d86df1f3181074aebaee53def47852bb4f47ccfa134b4d579071740ca1c432609937617a14abb248f49ccda822e09abaa8da2ac3438802e8a2c3bda9d81bad7601ba271b05405517644e9411a793325ba26ab3b449ef800334c24fc5d8615c38d0a3233f4a9a950f770c8b6470eafcc07d59639f2cf65098147c6aac6ccd98d080024b7f22d3402d338332332b760b7313681b9ea0e9e7d5fe48fd8222081f980146194a4506f51e0c2383c1d33855d65d6753dd01b504e337a6f00b24712e40caa7eac6a00f089b23c92b4329138c01190e90860b4bacc26ee1f58b12ec22c0273265cf4de0e3463d8b0672637556b98b3c9bfc7c0572c554c29e07a8411951b8a9e6b68086dad413f42b6b497130065c6c2dcf564c08672a62eff180e6709575d8f59736b83a932a962df286d6c0bd68d2d2bbc36c90f23952b2a54bd4909374051064057becdf0a998e2e417f79ba9b9c8bf13563a4c6d3082a00935887a29a5dcc2aafc1eab91dfe37665e89ba5cdb8974a206230d290293b8428e53de28a3ad8b8187a5893bc063fa202b80283454a2803783485d7c9a1e218996e457fc42448a61413d332b07a5de47ade3d7e7d7a98e59d86ac62ef8c75b7361ae4b5fe2738813e4005e0379898cd5e91c9529b8ccf5320ab06db8c6f29eac89dba6d2d7a7d10355cad47d99f1e35f03e5765da59771b4cceca2375fae43d2ef26f84867a8f4fcd99e8872a879145b46b7312cbb27484046223c0eff21f83cc6fde79005ddb7768befc045780439de1f2238d33087e34429d2ccc1231ddb652e793ec6efff43ccffef5bbacf209ea37a8d9477db6233cdf7d7d3aa78f2023587823c6f37ccec44dda6b8635206b29559d909396aa4af25f1f8fda6dd2f54c8a46956e83f120aff8e4d8041d3ec7332e02cedbb9675779859eeffe7cbe3bf4f32d744537375dbab18926dc84b47c3858ed0c9b600652f0a6b8b3075c0113af35b2ad95e3b91f4c4eccef4c48b6fe6c10d34adef243a7968a16abe9a66c6f505a43ca09cddf5334d2d7fce62aade44a272d91dee6b6a82eb52c6f90bac1b8e7d0816e96d83e4f667f3b94e5f9eedbf3dde170fff4781efa6741aae28dbdb5b53932eb4092dc0c72cdf7a9973ec24d79ae8e56fd39524c1d55f8d40db6d3ee1cb6efb098cfd37dadfc0f5f3eefd433de99bf8bbef1d0298b30cc2073eb042a70984dfd320110cca6e3eb43d475c5de75b8661c7ce3a446932e8122ea3a2b55e8c93f48a3a4df84c57c5ec165bcc279125b69af5f108c61dfdcf2c6b03244c6da4ee59fe3c9b90da0a812b9cd551101579027a42252f4ad837a20bacfcf7018de0605e4f101429933fead3ed7c3dd9f2fa7445b6bfb6b502157a3b65e7f39354d56b69011a493617a48e00a1e47edad163ddf7febff4d6c395fa61aa10623d0c454415d74beda81c4aa7db307174d7a7efa87fee3e9e5e524cd6665c3f531ba6e47fd77d0070179c3a6a3edc81631b2b8c4f506bd3c7d3fb5a6fc8dc63c58a7cbaf6fcc5147d67e824f62dbe68df97eb79bfb4916b0251f38fd0fe7d24b3c492fef092fd7f6f82b4fd92f048bc36cdb9f493c7b11f029f1c0e09445e209eb12cf59af1c9e86d30105847f936fb2a92a18a7b20a2aa900d9b589aeb949ae9982ebbe59f7b5813d44e366002b01f3c019cb3fba83a9208e71a279beca008868c9d00c903330562bb444b906dc6080ac2c47b90aba7dda9b021c06b981b731b62a69d44a03a739eb24ff2172dc9a78538cc880598e45e35441850a6e74d2c37b8be017ab5013e57400d8b574b547b2c0992e70ffedb418827137196893aa884a9d71da208b2c24e5b533e506414e01be76244cc81cd9905334334940ba30292ba5c9168564d060ba0a327d3957b6b565489e39b056e034654a0c3a5243c9572d895964b7e056285f57a2f9516e90391edece4d18b30e3ad16210913b25318de417b34fdd799ff62ffabf9e4ef91da7b92873502651a6eda58d5d1867c75ecb84d098109c47e3741de7c1a14d5b3d4d57ce5693011ce061d9e63ad130501640bc04fce14d8d0786e3e4387eb10ba6ebc0c038b68510546d62b709a9da32398c3313f8db9cf36424c9440b815f048ba3cd7acd592ff30f5975f219a96b5896d6ab204b2cfc9ba6f7e3b75f2ab146516b73521d90385cd051c703ff5051fe291845e403ff90efe6157a7ad9bddce9af4ffb1f0f77275f771969b07f33b566f9a7468cedb4e60a5e26fdd7e5342ffb370c154187d72f16a74dd896de1f17d922fe9880958120885807dcfa1359154eb99bda2844b21251303b5541a5739954e194bbb61207f88d5cddd849391a11bc2f6b7f38f7ca5f64e82c07e3fb3ce93728f77f609b1fb4537175222d82001613693506002499014059f364bbc3eee56e18ee5fee4ec976137a9722a0d7a1a17829bbd75217a962d548944c04006b79c90d87ce9baabcb13067656072bd5d9e43ec66e42e83d2d7cbb4dca9e8d07d7d88d866f3de0496d54eee6ef026296fd2de04830c090e0e7060e48fbd96af1b70196ed0dec8a60a948cf63ff7c8309089288064440efe8f3debb6c0609c178fbaf508c9b6cb27dde201387aa5b58b0741c25b69941c4709e035174faab4d1adb4299928b7bdca304f94590d97ed3076fc3452d3409d4d98e30cc3d0a96e15316529502f539bd2402129c8b6265a5a3a46d19380d3286b39bdb5704743f53a67abf14441aa135abb2fa3a556b6ff93fd39d01ce9e12c734071b8b45169944618fb04f4787f028dc0510fa7b56386b13beba9fdeee5e5ee597f1f9e66a9ac9f332d45e53e757dd09f0b16b18a5087bfd280f625caa9fb895accbaec0cc7cb5664f96744632265565e7e2ba6eb82e26bdb7f932acd0e3b83bafcbda331aa5334511116736f49c94a4e8328320d4004908a1b94bcecac09708f05b83848ba87e80d0b64071b4ef6744d7bbaa63d9d729ea2955d84af298b50a54533f5eef9e9c7e3b4962a04ccdab0ac29d82535fba4138273c2445da71a65dd61da1919ec32c6ba8c481680ddfa78faea17afba1bdb3246f8fecb1f61f37fa22136abeedfff1011366fa38a2da53c1a9f454f49d90ed174a225744e9bdc6593bba2f1495eda9d43d4e39d3698e46cbbf5ec865319783965afa3001545e991a7d6f79f7a76abc8ba5f2a9e5a3ff2d48b09fc72f7f07dd89d6407eb55b96ee7bd6e79ef94ff5bb7ebf4776e4fd86d1c761bc0bbcbcb6fc5545f155fa74cb9da12e76492704b6ffcb319907d2a529a4b79903264aff1d73795aa2c9c7445a6ea29a5efc03f98eb472826f970caff5b1b937fbeac6ea0ff6b9af4e065476e14b217345dcc997e8b5a2cf7ee98dea516f3ef528bd90e45bdc32de656b8c5cec6e39b288c775ff5fee9f1e5f9699899985721003e62845c0f5a2ebd2edbdc97e3f92173ce7f0db34ea1dfd8b888975bb274554b348f6abc27bea0250621dfbc5f0a089bb092ddea6051752233bc173dbf080f4ffb16e3888416df28db6f593b2742b095f33f06d28106064f7d1c3c500e6ed19ec305463dbb699e18f0dfe7273bedcd69175498c480a2669f7439abfde357fdf234f75ef4e03c9be3331f4e24bc86f8f72ac07205f0492f1a823708aa9bb1f3fab642ac9119700bc8c6b0a5dddacc74d89971fcc4cf0bbe9d99b509a03b72c8ce35b168808c051b934518d419212f838f90bccb4b4685ecc612a1ae2a51d981688944356301dc246736d275c14a636953b39f23ed350c7d9a6e9f956ddcb2fbf5190a70114dfb2abcbe33b1defe649e481e23302f931dce100f56d03d3a85b44e8f31e95afaaecf26c65b6ba5333b51315b6c9b255616e7119342995d89ef86c09c9e1af752820fa6446680fac2f77764ff7d0b120c809be2a4cc5ec614f0fc81b17391da2b8984b61eec642535f02bf4292655f597380b236ddf1ef9b34ccbceb62128577f0c0ceff364f84d1ed17a259b506eb3492a13fa36208233c29e11dfea9bf9730f4bdd664fc748cb9d42702820c76e4556ab696bbbde74e9d6ca3406564720fe52c4f1eb9811e8e520ec12cd5a84e4a341e55a40c0eb8306271ea2b6928cdfc6daa3e9c2caf47dd87dff1f3e7991dd9b4c71c388d0987443bb7437b60502c30d06eb8857dd41f34bf2cb4d3abbbb15a1038ccfd1d83c0b694b32209340a4ba8597b05e60f1f576eb4cc90312e1f2b6f66e1b4d0c4340d6e0d1625e5b257f3b130647a83ab4d9cba4637df6080647626361552fcf7cf4878f0d2113f46ada14079a34e0860d9a8f9c57471e1fcf0c7d77cff77707bdfbfa759682e92a63b98c37c9a1579896daec2be7183b53c8d61838dec040643dc8c876265868145b9bfb5396d92a9fc4ee2c849028d8e16dac43844180052c184f5ed262ac55c964a78acaaa1c18c8dee2d85b8a1cbc1a889c78fd629de2c41aad5cbd6bb40493d9cbc49995f2e82646fa93ddf292e7374d5f9d9bd2b669c648dfbe5b8ec5fee9f1cffb6f3f9e779714d6c83b49d2830e3d602ca72ce29efda01d830e1903bc1c9c13c1c9d5114ac853f94f0ed22478af0c1552432a66b511f12ef51689a22d01381a87e8e07034245c232317c9ee43ec35ae26362e09ee10859d4d7283c9de644f693113c603c28e1d18d5cd506a72350572475ad50d4475c8149448aae908519b8ed67471b51aa69e3281a3360d7636c46d2122218ed2440125b6648338208837e7593d12eb011335167d0a3b1352947fe30e255f0e0845e5ad0dd1afea16dbae4dac53c7acd4e928b505e7660321e7d7ade3a10090b52c9010131dc63ed999e0aafc9bd5c50e88cb4bb6656d102ec566f6e638084c56024431e8e7d3d69a107748ce0f630a3948d5626feaf9f84b0db7ce4470df75c980013316e9c1b11ba647273e5a3ad0a46052988f3fb26d5298fadd90668cb937d144e28bcb89d044881c47b4cbf6c2ec78a604b41f015b73908f7afa787a612866bb7bb9177cbd7bbe9f1bd60106934c0448117350089608e4f8d1147e822ca61b6b94e90319fefcf90ea4462919d468f9d6269354da58fb9623a08f38c2e821de63e6105b27e035abf3ed932a83680cc6d336ef8c13c140c48283482db151e49a524c29c08802835ab6ff3f388216634e98b1b93705a0bc1d88281dd0500003017c0608bdb2022dbf4cf17f77b7d846cd185ebfc8ba8bcaee4c0a4efe291229914616a8ff9d57f27284cad129264d1189da561330495d9972062cd3f0b89346a6c9d0b718e853e786ba8dc67a517e2ca87ae6cf6fbd2315ecb3c92b87f785ab82cf1f1388c0528941f1c6df205309bd92e52af6ca79e6ddad6b91365751f06cd85da45ebceb8dd9b8239de35147f53672c0a14d9a96173838d96ae485475247dc7ec0e7131daa81cb948683043c15fffa801ca744dc6b24a0b47c14c7dca7ea0ff808daa1d30fd3c78b8bf554005e5e1f30bf1c32c1ac3df1eb72fac70638ee99bf99982d5b1b500bb334636391263fa36964accca0ebecc46420773902c803f91c1c979599800080f20df15936daf19f7c2b770301a2fd08b0da0374d4f609a617aa2986a419898f0d730065fee268092be470ce53a25c1a99512399b5d15e4b358f3a6d472ad2ae8e6b248ee30a3ca822471e706abc6fbc9a6e4ab762826006bef0ce545fe4df78e0402f07e64a910952ce2d9e2f2ff78fdf0eb3f0e02b26c2d8bb2df3f4afe592a68d3ba6d787aaed15a88e6341590f595d0b673c7a3eb15e7fa2dfd4a3c7130385f8cb18b79f026ad54eadf0e6cf427f44a728007ddffcdc4357823eb2f29bfa33851d977815f371ee77cf67a0fb65e3b6b12f26a7c1e955640ebb840359e4a26cb3710162ccd696d787a06da10fe0ed941944c767e3dfc8699b23d1c27e895e7a2b0ce71ad4eaa13f6314458a4bd2de14abaaaea60b45556da3c936002a9338c855cbb1e84a42f06989592364b3245df97e034daf46a700c68f644fe518152dc71b226b11539b7d40786d92828a4a2625c02c89b41f80770d64e8e4932ac647af79859c4b356f9d49f1cc6ed99f42aa2dc82b1bddd582fe828c50ed439d124f0bc54098766193130d0ce135ae91ec3b426a257bdba962626f3ab773b0dbc60974b6533ff50d1460e0aee6d72f1ec9d02b891c6751f4763511214c71e15ec96ab7eea865d12f816496c51f752678cd79af7ebf7ffca6f7f30ca6a26cd814e0d999946579e43793639d66aaee9e38b2ed94ead294f1790620c35ca800f42524f2da9b600af36aa14dc9b45a5b8e67d63c57060f0e05e4d0bc976fd7d7f732915ebf004833f51664b6b47a854d36bedef2977997dd3f486f7d9db1194dd98d51c7cbe04ae44f7c2cdee88d5d792dd5b0aadcbba3dfd46d7efd92da87b4cdaf0f4e598bdc21f9eaf5c1ab6e53e79f64068c1f3b1d786999982889247426f90fbb59622235b6001b7b21aa40cd2687db2ce28065145947a4479efca129597350666ab3250255a482191c6eb32472f69e824c230502c8db9534bcc3c36e18f4fef9e9709849b648621a9a38fbe9f8ca5bdbb534a65120be9ab35a5a1e531429caff4412707bc81561f72a4c566beea2531eee1f6798d541d51544ef8f861a5c967d06871d54edb55fca106792ccf5872fe383cf049c8fa6c5b3722ff7fbbf66877d5ce54fbe85f233cf55fb89c0bd4b2524ebbc92f166cfe3b30f8f4ffff873d8fd751248c07097733a3a53ece0a85bb8e076a6962cff469b153806002757abf1c0b30e817f0439c76e2d386c820d5b5b45f332b5d9bbb4a9352924c227fcd9002895ad47a00da7419b6a45d006016b2d63f97e2cdfaa6e5121301f4482ac449f8ec0731e900d80300b2f87ad9773bfc3696d43325104fcdc45722fb8504ceef2a5126f32c17a5d188c07e386f5885836b962a4d0c55e4df89f55165a4af3362be301a4eb531aa40152174b262dd9559c5b79287e8da26b44992fde64d9810ab1620ba28a066f6cf584130c094e1252c8b2821e4429ce9b82c06b5841bac6f383268108bd4be7cf565383e32d0208325c40b03b4a8bcfc7726a97bae809400c81ebb135192d361ed84e97ed55537bd5a2a2e44c93d69a028fa2f5eeb68aa406fec960c36d3229201ec6d9f57901dc17efdbeb582c26d22de0a54b1a455807a100ab2668ccd2d328ca9c1679ae036e924fa6641030417c5e2f5ead2e9c20cb231a9fc251bab80c0d3f3588a40bae178f185b110e7d90293a8d3c86ec72922a7203c91c952e96ea39d546cc5dce518ecce514c5502a4e514052469301d765a337bef32b4fc4d020fd868bc99f2da68a31e30c944e02343a12a642449f77893a0626b136252c27a99a0a5aae0f3e7ce0229235a4c635b958796a758672ad9e1a0c36d0327236af2d4936382ce7e86931c140eb33f8fcfcedb49fce37dda7fdfd6ed00f775fef773341414e87c6449cb409ca690468209fceb77f119c418c22013e9fa92357783b9f4865c5ec20e374420292d5d9a41beb4d36058cdb6a243905469bea14307c90bd117fc7579117c4d7874890389279c39fa64f4a05108533e151099e2d7a14665e6833100082c81430a27688a0db6ce191110a786da7f188c96080de2422c70d6499a2b23c1bc28dad7b678811e1b4292a9a822018875ba43ab6a103336ec6e2dd91d4b92aeb1aabb343b07567c83427e32bc5882403a021444720419274ab4907ba0660748af282348e3831b36b43d4ab31de856c8b0e3dc1fbb34a26dc804eb602903f7108220784a3603d51fefdef915fb2966733e802e4a1d72b968af7735d8e7a252fb7d3f11716f725238b6c4dea89e430dbdac55d67e425004e41044a34fe375353947f27136e5c119618b042ee9a0fc84a5eafa10348cd5f1bd4ed4ff5c73a06c9cff6ee365f33b13c3dbfe8ddf0bddffd71f772bfdf0db3909437babf51c81d75347161feba188172ebc611b880c3f3cd53f2ef1a04a9ffeb4369f87c476cf61b6b8d3f5ae37b6fa2c51e5b4c2e5bd7f5d1545ce47b90710cde142beb16e99d4654e15e9675bc05ec3838777b6b4a1d4c954da4ba3e189be593c2276b2a10a0e4ced7074008ab64921fac89b29be5b0b16100bdbe7ce8c1d2766d5cf4d7bbc3fe94072995f89f303e80aec3b966c3dcfcd7bd8d0b053317ea14c0d85e657a03512f9a14876482cea6946db791ddeb684dca323c5069ab09e128bdd6d76d353ef63a99185f1fac7119ccad32a8aeeb999948a4ffd43b93cac010b9987a0b1f34086eb30c23bc26af0f80c40ec60f747cc4dc9bce0d06475bee4199b9189fd38888babd243c5aea938c137d670d73b52f10a357b6c93553ed5a71da762b7cd72bc5ade53e2e8a93b3f0176ff5e1cdad1e5843571113e65b7d58ddead700bb7ed5561f2e67c57ca15aaf6cfc50af2e8767f590d509ccfcff5bbbaac54affdc39b6d61d01408d1f5853cbc5b9dabf4e84980faca9e5ea5cf13f5d4c8cc71f0f77cff3331626875ad7c733631b2fd8c6eb7b434af83ebceccec7b46de3ead3a33a458d5d0cedfaa63e579d3a766531a590680628c38dcd2713aa93e0c08ef8af216b4af9f27f038405d65f636df13b67bc07bd929f193a11c172425ecd80e415a5af109399b148044cad84af05fb7a04322ae8e25d629a493008447216f6ca029efc9d333638c5d7c9dce9103d0ab05247986652e5c43200c4d891dfccd21d1ce0444e9ea66462458369c302c616f1e0c6d1dbecab89a2828afc306a8ec91987f8a2403463f665a3fab78d39c3651210826003b167deeef14000b2c604661ffc0dec63696300b10788611168564cca2d0eab2b602977a6e015d442a66a28478e343ca09d01c318c0b41b496aa3f9c8e4f0cd8dfe89c4beb0a1912ba5c5c47946b717d2bc5be312d8a8826b3eb1487624ce0070ed769593667c92cb87165a152aa975111be55bc90846b30746b6231a05de87361f81df1d5b473277a16be1815deb4b440c66e24e331883e0c51121093662b1ba82594c605a8be8016747460d4b486b60535b06e601a847f4548ff901ca3b1b705504487730aeecacf1a07af693f9478a03257023ca726c6732a1bc7e11f90d5e139bb71054615be922e310b808902fc0e88dc679ec10851fc11dc4b84887ee281ecdf78d859b20bac174f5684db0bd33de6eeddbbbdbd90158df1453f3a7c454ffcbd588b7f6b795a3ab429720d6b4974741921cd7680826f816440a6318e653646ebba3fb2730f62565d38944db659142d3d6751b9b8f3a99ca90d1b4e74691b8bb14324fa7d7072e9d8ecd07957fe397924b016123fb253e9038bd5432a95b63cb8d4da0cea4b71b369c08ff951c738199299e94d021916887cc8cb9d2cfd9556ec79872d1a1b35226133c3610a25157a05193094f7a36341cfac0583a99eb11f437d994164f67b1f57810b3897cae6483f555fa527614b0fdc926ddbc6dd8d8155bed1b98340479995a98a503239118bfe919bf9943237eb20cfa09c4822f187245e274cb8dcb4794962c1b03467a805f03669c11400de83937e2bb8e9199884926b4b9f43ffb0d11d229ec65b906c4e3153f3e138b3d4a6353928951edce9b0e6a4ce746d7ab93fa9713b99026d9961ca29108f4e45023e669269db8477744d8d51c29d53299a85268f45585ef953164d2960ec11360050073f6eb1799cff06863c7e42656114c1a30036c9c6ff9b1311a78ecac119dca38493fb23c811eb070bb45b878ebb91140bb92f0cb352ab74098ed4cc878d7585063e47b69e0df8d078fdf1126dd256e0f95f7b3509219263e89ac576d89d9cc5ae5096c5846ba10a4021761924a0341e8ef3021bd343cd5264410adc6360a773449040deefb6724bc87efc3fd4b03413cccc379d62900feadb8d675632d5012dddee44cd53d0340cae4b214b7d78071bcc9e506407481de5f4f226f149b37de047b1b7e0e881351c837b2e02b8e6155c145db60813fc935ede160b69b7acc9b70448459663425a9368079bf028bb61682226d46529f4c1f4baa458d3e3bba5ec7a3ce7d7c1f527b3e27fedf1ff3d8ae7f0ff623f111cffc092fbbfd5f775f2fb07f91287831f02bfa5ae8c3d6bd3e20846725922df67ac94605acac857aba1eefd787ad088460b939c63e6cf3eb83aeaaae86cd6d96484f8d21e77a42f4754495a4167ad73adf54d856e989bc5637b7290bcaf1f33198d3197783077c6252c9546575549172b7cac6c329e34db8f5a628d7a938ba64b24903280d2e0ad6770fdf4f94468e17ea467e700bd8ca04fc93d40ac1e35af1437b9a4af04204e4e466e354d4d1341c8d382081d79960aa7c3be23a299122e501de00dc56c9161015d0e792f22623b9d3dda28cb34adf7dd77fecf67ffd631e9d449ef413134625a18b9d10816e8b2acb18ee55aeaff749fa8f3a0cc904154c3961166539073ce860f0e8cb75b778f865a356f0b511c4b444202dbd5f72d4af581697353fbc63c80bbdf64b67c01a477ef8d5e84417bdf1e7d3f3e508afee02e13662beb83163f426d2efdb61fe78e53f4ca2dfe84fc8781241afdbe0a99007ec9628d5cb58b6eba33c0bee4ccaaf06cc2dc6752560eefa439eefffba7be99f9f7e7ceb67b18eb5d7c184b40b04d01c15a0d01855608c886417b62387149f00c901729bb64d026e1c4a5422f8032c0cfe403a69d163a048ee5bd24bd4a6464d1919196b89929b2b14ea12df91f1d1410843027882185f0f2494f22834e63db59f16651f20ddfa034d281574245ddd9b420af0e49945220b3283d342149d9c48dfeb4b3f1a1346022d6d6a69f627665345582b20ab93d655b4975d64cef0dcd854b529d2e24ccee480942c12bb8222a5d1fe52e7aa09149a96f1fde0cc86905dc11fd4728bc0acec2d2ac6a49bd8fe28231d7e17c1cb054dc9805bd415d328783a076910c9fc218b289ad682d8cfe0de653ac04a6591fc00eda2730692ab28acd514f060bb2842ada75108193e96e633581c222d6b996971e0dca98c4a0ee494466663cce48c16bde080dc33cb182c63214eb8068980d1699ca4f934274b681a2e94e97020fd40a499b0d2bc716254b6cda2e3ca26803bae43e4a183112b50dff232c51a5632d8de499a8af5883396a121356098188510994be6b3cc2ce61ed20807b320a98c9a4e0643a66f3cadb962fefa0426efe2f93b985e7d006f15d43317e5dd81878e54ebd091221a24dadb4e1410c4278d6b1a34d075f3f1edf65fc3dd3c2aba8982ce78660ddc8c74c86126654e8824fd044bd95009b7d9e453b6003066cba089df802879f977eb3a393eb75daf0db22b6c34750f12611581c45b8cd353ec07de3d9833ec8867228baa88545e0e8898f3008d2e370819a184045214963d6ff03f76df75fff47cfffaf4f87232b5db04aadd0ed659e670b2473736f5c005732af59650ca0d8edfd59d551325172d50bf8a6ae5033432d1c4a2c2d525fdfae0540099d426bc3ed8a0c22698e086160e3a6f80a2beb5e20738e95b00e81ed31b654d7b128371f19f2b5c41ad547fa6700188c7a68f4f5419b7e3ddf359104263dd01d642b80c4b47c4dfba330c4db99a991200b2be5d2855b3cc94a927d5654f66bbe65099811e41f2ad287bc4c3962bb6e1286305ac2237121fce66e3d6a6237eafba19b156eca6a2d6c8d4b80e553f9bc96d225c090c9671ffa081f4ea3407b966e4ae8e33f56c80fff5f0c7d3a0f7f7cffb614e8f124c677749253571323935fba8ad5b29e42c563eaa023fbe5f49a05acdc45ad30c16a2d90adcf39aeab9e6b7e5c8a4f579ce167cbddf3d3c3dce2560db35b8778015c01fc4732d8661cc0e0a3a912a734c07828895477012793fd0ca57600d0bf1849a1a5452a77b1b9fe52953311e4c47d6d2224f6c8f51edaea60615e3b2081b814471e94022c1da9e3d8c37b19aed26988861fb08ad3dcbeeb8b08044cc8a5505ee92136a95e1ba1919ae8ec0cbf3fdeef1db70a7bf3efde37126b92f807056aa01dad0d428f9e1d911b1639041ec4785d17b13c189574d4c6455749e6c81e4d38bda7663de5102df66f32701f562a593a61aff38691a11a26e40ce4f402c4d77c653e88990971a4fa14c8fece09940bd36d52047bdd59b80477e72bba169eadd0e875cd2182dbdd5cb06bcecbe9d28acc3cea9314ad769d707134b997d873067134b1ab20866f232fbb51301c315181e4a5117376bf9b1aa4e449260f1f2dbec69aac8e5dbf0fae04d900ee9ba043cc5a8f83aee41ced4aace7fe0a6293f9c35ecaf3bbd3b43b28b2aef57b7cea8e39a6f093b6d0550c0cacf51e5d787a4d215e370d46b918c337474a68fac1cebaf0f45c5fe6351457f8f6bbaea34249d66510a576a2c0ab99c01e54467abb3ba4a6c31649d614d726783f3cffb99c9a5f6b21e0664dd359449787b6189eeb209a18735202bf8488fc62121b1f8e6ec92830d8e3f914823d20adb975b9b37a915b9bcfc77a07679afbc141c8fdab83c30915df4b971e1c5e67c6692274226e2d676076ea489178c786899083119abb484999973ecf6c30c316bb0da63573872bb81532b308e5dd61b5bd264185037abd15f325a944fa5854b208ba335d6ef09ed1570a3f1697c170d12706ac199024075f4cd366c6c1eacf2bdbd828b01e4653bf66bbb75fcf73b6063bd57a9459c339d523584414f3427c5125e6567975ed77e136f83ca64fdcfaf0fdad08254886717c7ce9071be78a26ac33e0eee7c0ac8bff9d4bbfbe78beeefbff5c319cd5552362f466a05e863ec82d31a9afb2b8ca7b781fa44f341c0b5e6e8607b6b99cec7acc93ba7ce9e498f6aba63e617d2a2094bf9747ca8e6f8a0b3e8eae20f3a6cdc36f7b6db7e10825564a8d787ac8b08758ef8b2eee8564218af055dbd9c91516eec09a0b3c9120d5773aeebc659524493b04ff89a5f646ba0dd368ec9a7179fb6891fac556553e437db8d3f5e7edc267e9ad7f81292a825647e0e3794fe4284caf81196e800a8aac8880938086f48b023cab4575925952f104ccfd2296ea17277f35ebc80391d618b9405f29b74394cb3f32e4fbd45d2441e71c1b55763ee0a2c2dd6d4c1586337f568ca6095dda6be1c7daf93297be38d0855a8c9c68e5f0fd26cab4d35b57d598e22070cf244d99a45eb92d36b444a355e833660331a7dcd34f1d2fe2c2d663103ce866a812494119f66bb815983d664e7e67aa3f30e0838c19438488d47fd7302b4dbcc50a1b839b873f8bc2465ca0129656cd346da1b8e16efb63b629f4f2973aa36cf580f8eb470fe699bc60f3255e5371631c1e1021ea8fbcfc30385133c90fd303cd04baf87fbc3cb2f5eeff09d36478d4d672b7ef6519671ba58c63f1efe389c2b16d822938969df82cb2ccde81d6248da118f650c40193b82d220e6052854459b248b0b90663e4344c844b31bb9daf18ba7f5bdf3ed011131f608eb03509d222b7d44d43ea4317ccebcce1aa480968cf4474d4468cfd1415152f7dc8ff4f4858a5e0c7c472489d31ee1335dd15904cda4ab48040081cd26bbbde3219a928aa6027610e80349b1510ef12a1e26fc1312576a78ae96515dba597133686c4ab3df1389cfa1a549ea915bb5bd6b3dce60d3026b721714915d11a75409f4ea885287ceaf683c55ba883e55683eed5c88911c4392923c91a139a4c76f8313a7c101624464340b1ad2903e1c5187800142075560edd2dba577b5159f88d664b92e3cc82afca63b9695b3f29a67a94dd99366e9555d2fe6a8578076006b09bf1c211133678a35aed15adb094b559adc06a5b5921d42f825dbba032d87011eb890b3ee93d2c36ae9e8bb08771683d930448d85bf8d258f818e19cf2dea09034fcf83ccf468194edb260afc37167221c0104fd30a486aac8e63f0559b8cf45eb00ed1443d4d61d0170629281615a5e8685cc4b41f5706a622116b03d0461571da4cf5880256f0b474b62db51ede0ec788d0983179b844d1859cd80e0eaad9a2ee02f786d15637ee035cec084deee2b86b947181446c366ab6cf8c5b5099b6a0b63961a9740d03d9ea7133f3ac671ed75edbf750e1d89ec0d16eb3793641e7800859bd912f9245588a321333407e16190e723c5f8b155d37855e663800b17c0d2521ab7051e7a5c1d335a07b475c8511c3fef709f45e7507db30f02f31ef95ed5e1fa27e2b5da610cfee6fe141acda2ede0485381fa287391e447d17592ffd4420572bf8f5bf973160dee4e1fef14eef9eef76ab411ebf9826bdd3d6035732cb31242f40c1f3744b3650ed196e402792fd298120c1c3e601f93506cf78554de7b736f6366ddd397ef5d4be3f76cfcbe6e5bf155e85fce365fcc387a2cfec32dc2ba9ee23a070ab712697617f303cac55ee4301619734c36bfd7977bc7b7c399c6c86f1c2cd3a8aa2613667668e8a49f503c540f7d337ebaaea2640c5d6a46ef24732ffd9896ce930c14c6dfd265fffd95d2a7c7645c33a93b9c3b9ccdd4f6ab63f6ab2863c743a6efcb6f043545114e9d94f65f6532f6acee9b75e87f1479d94dbd4b1a50f517e74f271bb3adff1b21eb4f513c09e59af582ff5d9a666bb33b426c297e609be14b48e2bf0a55299f7b6984fc3979e75c8897db59a9294fbdd9b5a5435c0f6ab38716cbef1309847840be6026a23d01b973d53093aab000dea4487114d474753d28d152943f69fa8587a7b9bd7e06986f89a4ccd4b20c935f262d7eb7474af0fda6b1b07afc2b1f4695b06af013987d9f236c0ee9a756cb2d7d5d787a46baf114db00806b5ee2aa6e1cbf3ee7eee6eb2a5d76e70ca6dc2c0a424779b40397bc98786652d5fe17c72aa6877183937b8cee6cbf2f50b165ddcc3b27969bafc3dc15aea142e02102294b200f9096468807c4211b255fb4d38a63e6e3df03e7b1dc74f3096d65f6f407dde3d1ece58ce2a3c5de5673d5d4d0db0267be545827540fff054fcac4960b8094165e3037cd010da9d8adbd05ff36e6c5622e57f4f9849e97d4ea6cacc5280b297968b02d899186eb32a229b80a42599186e825c03faf9a0441191b78dc3c03b6f228ceec8bf09a28ae5c1d28b95024065943391a15fd0dcb92e7d81dee30bd89a2f6326a96fc0ae98bc081163c86456d60ecdce9ff314278b0448849679d11c80eb3be300975f4536f5098d1a3d1f992e476a4ea0825bd4049c694b1f2aec444ed9dc4793d300bc6e070cfbd1090b0eb18829103fe6b50420b85336deda00244f841895c2446e7386c8f3f23c0716cc0ae9fdef8b2fab0cc390be969ab5416cacbd4aaeb6f16b82e4527a893d50fcafd2b0e1f44dd7b6bf720597fcf521a8eebfe7e6f9a8dc9de1d2451383db3aa0480613629183330fc1442dab28deca7a1fbc4951be08c5df269587a0653bcc407e47ce9047e80d263092c2e22da860060dad3a5ed4e0f1ebfde3b7731360556b278668c58346a6599e30a5458acf56fe8d67b62506e0db41f0a2030000a8e8484a569857d6797696c1c930f647916252607cc71873ad920aea8c3787c4391589d4f54a64b502c7932cc85b70022b1b36f62a57e4ca417ed56a35f6f32c22a2aad0eb55e0d96965989c071d4d451c6104fb94ed6641e6192a7267ba2ac217bc8a9963e748e7b04671a45b373105dc65e6a0a5169ed312c3ceb757767ab3cd8216991d27c772b01841358dea2919010ab3cfc699645c73fd30663a076dfcb44903fc2af9eddbb8dbdb25ebd3ac73fff17499a7163f9899b4cc6a58494c92fa5ac5e087f5bc5b1b553e5e0b7df8645edc2ba9b397910c3fd984535ffd78fc7af72c3ac3ccce63f3de63746409649574da7a60861939e3e772cfef40eecaca02aa0db856d2c4912757f9c389a04fcab8c9b81c1e33c868eef7806fc2e97e062e6784d2a5d72f442e13a155ce1edf0e92f11c691c9dd6ef274fe2e96c58a3d9fcf1f8f5e934296c781fc27846915675656260843df4271203830a480c8c4c0c8c4c0c5c3327bd17a68abcc0bcb161efb81ec15a575550e1a0f9973c0d9a63dc937f7a46307d9898a8753aeb9e6fcf4f3fbeeba73ffeeb6e7f52f383892add38eea91da2161b8cdbef8e884e8c5e00bc3e42902a41de605d4ff831c161d7dd58cf62ac65394d853c3000cfc4f93f3d7ea94303b393d2e45c54e7b5feebf1e91f8ffa78d7dfcf4d9608a1a845b4ee4d386a8693a4ad930edd79d1e3b26a6f23fc87e9649ff7268226301aef9d09a5ccfe426008ecc6c1055390a59cb2f47eec3ca03283e9babaf183b6ca6f6cf3a3b6f0acde78efc9f90153bba8c5e9984d9c25e75b987bbba39699ed8eebbf05137b1d2727ede8f72b72e5d9f5b6b159cf52ffa50cf0a8142cb5e276cef82a12a8af53bc7eac4e9b12e1c0678e7e687c7240bb64268cbfb1d924049b7595f4724e9e994c88594181e0c95f6b325d0121a76c79d1efbcb11108a671ea7db9c264c60fd7960eee4c9233228139b843fe4e4af005b828dd6f513378dc7c2fe20571bb43321d634ce5b922f688ae0e92da407cd9c016c564ac25f7bf939f4b36411ee88be81951648368026297829716f30f505c9894b3b122a37be39060ed1dc818e5ad7a3885e89c215996f5d1240bbe5c0be7b12c4b39f9aa881abb62622d8aaf0da2213a84127a133d5fc6c1093219111d9745f7ca7014064b62ae9481c3908d93fe725de2603a1f4c2de12875e8ada92ec814b3756f3a001264702dcbf69a659a4b0720a1aa38e3418712bc89c016296107751b2fcdbf9df08b0b7be9621cea012161566400e968eb0ec68b5a1ba4f2227665178cc5b382c31fd674991c63f4da22830629ee45e66200cf560c2a99aed6a333b69331773e6f8b29c56e640cead9c6303ccdbc2f416624b74bcded52b6c8e35aaac24a6ccf4a10f502fea3d76edbd0354712f8c348efb988d4be10671c3956a552f2df5933bedfcf19ff980a94f6da140b34882ca7a82b228089a2779b8c6cae19ad857f2f241d40bda383a970ff9521d0850df864e4ea449cc2811fa75ff7134c4e16712033b3498a19bc918d31d53d82bb4036518329019580ca9ce94befca596b9eef0e4fc3f16e8e199f41a59ef6e4dd49947b82f1c826820ba0a3235c76d7e67dad401e0da81cd8a15c9ac0861acf04bfcebcbf09bc418fc95b2ca2c13bc1a6a0476f6ebbdecd782de22e9a1a5424d37947123be068eccfa8d5c6db77c9f8ae28be8e41b818e1dc521bed2c56be1205857a54ab9dc325e076686012885171cc09b4b9a592d9d365f231ec8201fd879fea891080ba9f5ddf1a883240c4258774d78c47418e6c3905412321c32aa2824a074a0ff2df7ed49e18d79f0a883f5a79fb09e92730efae712445bacbe1aa655569628d705bdb969f37d0e9eaa5bbb3577c1d514552d1a70494d6d9adbf0d81c531fe298d63d3c69d1deb39faf155f60251b56a25e7343cf2ce64d9e177d944abf0329e96b633a9ec913ae064df0826c1802497ab0fcb56dfbfee5eeebe9e118727e62879d1b2ac494ad65d17af67c82c0c26d7b84c36b2146fa27148c6cb2a83120bbc317b3a1067aec2c3cc5738f32b5ea9cc5e64d8e8d499eff270cd7719545e770157f80464bd34e5ea57b980d7c3d76d50f96c7086a7ddd75f47ea1e9adabd605675f5d63237603bb21caddb8c32bca52d8d6be95ab6b340f9796ed31423af9bfbff44a6175458748455e0109cf7c4e1eef99d7ed837183091cd106f91b1ae9d2c30e7b19e6149854535d0ba82351f64371045e7ff63ef5db4dbb691c7e15741b2fd2c29966449be3b75fd731ca5f1ae2f39b6d36ed7f25a3009496c285225295f52e7ddbf831900044050961da7edee7fbb67636a701f0c0683c16086f71addd878e0306dad096f90c1bd13009679a90e3a5e82b71d6b1cb60c2fa6574041dbe67b2c441cc5c8dc225827b8576b42b7380ca0f02eb80d6f693b1df05db4021a65a8b905e72eb80c22c2786fad03f19708587eaf34d761852c87c0c3963db88c5e05b316b4a78287e11be8e00c86bd0a1ed2369be0c31d8de0569bed4e2a3895b84ee002053c03568ed13ac813c14e66131fbbb785c5d6f29a648b1e18e0838538df3520fe2fef235fae92bfa1a338bc9559c33fc27b1a7a565b15214237e423a75574a58606fa9bc2491dc6c85b552690f8d07b197d15f152c86f3be8c70e328253bb8e48dad4ddcd2dcb67e2e23d00be17e840e7f8842e63fcbc757c4884aa4234c804af769b5271d842f3b5168acfa0025f558672100317fe6caec3f16db5034bb4014bb4d116b613146258adcb8dbcdd5843e7511b9b1e9cca56b870b8012fd3203a7643d00597e1c1fb17983ec207a84136715ef13aa1bd22a2b7a341162f03a109e17d3d58282acda72137a8305a74052f4f5694334540dc86273c04ae0bf3f915b4435bdf147e0145187c70be06f1e9d173028815eb48551bcbd73c33c4b15ec6e7eb10d79c0b26ab4220407c2367464759b0cd81437ca88ca3065d85e17d5873bd43f00a649d1f26d1261accc3b8cc08a5d1f8b6b52ac3b5824de4c69a58faad0d6caf098b740d17e22af81be4fdba06c7097ca5c35a5b168ff85a2b283c7520c67007fc2d082b5ede2a78a45fdf4021630d631b8284844c4cca0cb00cf04f672df70f076fded16319e6c6e5bd06473ae070a0f6045950bc4559dde4d238988bf2532cc455878bb1cdddf5e6e6ea06c17f05d3e564a831dd6b9a04f42a575dac3437f9816f7d936e36f96e2845910e38d9efac1facc303230f826a7236d069ae8a7e2f7361a0d3ec74f63a28d52de383305036f113ff3a3ad3e4074d0884d0dc0011874f8dd7c273c4c63259e1158213cdb5e6c65a08385ce507ce954df96c036258c2b51f98f1c0febcb68eb14cf91cad345685e33274f40f09ab7c10edf5063f277c1e6ff283f406462603d7931ef8215c05333f98522e18514ebfeb72b1825bce0e88d0a0d3161e14f8e11efc80b4d1a012a2b4ac0a5783cb4db49fdd58e5eb1a8336a15b8735648ced4d5c389ba08aee20c6d14b9bd8433b6bf0d60a768b35f8b7b3ae1e2fa05b43dc8337d19d1e72d0f555e5d97353c4ef5e173ef88443b9156145be8e9e11858a7313d6f9c65ab3d3010f12e896b4d5696eaea3f30df056ba8ea688fc173880a09bfcd84ef05f2932752026ce0a9868acc041a3b5d65ce6123cee15705e5ac74b97756146bcbac9f918c8567cc1adaa78f2cb9b0419ecca3a2883d6512dd3009b0974a9b10156dcab10dfa529fcd8ae20bbc7ab4a7c288aa73a2ef88367d875e45e1d3cccc878e7ebc26f04bed2463f95ebbc811490008e04db4d38ab2f83bbc7d555f03402f7417c4ec197ecfa1a781784295d431353de5c8a7e603bc29e7363cd03bdd2ca4a73130e8260b30ec103799d9b5cbc6b3757d784b78df566073c98ac804abfb9b189eefbe0720bf6fdcebad012c16cafa09f438e514eddc0275aeb1076074e2a9b6d705cb88af176e0eacfe3abaf0d3e70c197c7a63001584545f0b278efc6e58435be60816f8b595807e756ab0de15f1e2c60c16f059c8a70007c7df00ad660ff86604a2d68b081730d3108799fb8ccb10c8754f029cfe96d052bed0803e1cd8660d7706dc6dbde6c375688b022e70c056cdbf9df652eb080b68313f87263a5b90a576d9b8d35d353bdf4a9909bf0e97eeb37c8fa7b97bbeb82bfeb82098423f429188dcf615e57acecba51b0acfb3c6e8305972bae69f1b2bb78d75dac6f154c7fe68a63f8a8cb1f07867517b8cba4e542cad35a1daf9215e7843d1125605cf05cf33f5e251d67754f23000786fd20cd92e06aaa3fb86e93ce03d1b80b5796a60715879b8122361d8eda8ab6a0e874f0abbc0e6a830e7c166bd7daee10bf73181017ed0331e4c24f6be11a5969ac1936ebd771381d5b4e11569b9b1db2dcdc5c8638f860a5c485b11510c6569430b68667da3608ff6bcba805e59b3a59696e6c86aae86673637d83e0bf428bb00145d16c9d6fe1209442bc592e2e7c3e6cb749893b947588ac328f192e062e867827e2d2711d4efa1dd8dbf83f8f782f23d0140f069a5abccc634b0bfbe870b4f747f431b78dd8046b82128f391d7119eba2b207ba597243cfabbe6eb43b22c231f4724d3886c10001f07209c3d542e0face1e1fef0ae1e7198cddb5b689c4d15c594eb96c41565181bedc26ebcde5f5302fb809fec4d749a745dacba07b686139afd5005b37389f2ea35271a3b9baf679dc58e68218df346713f68aac681edade5c219b4ab78d8b023b210e7740dc1b1a71e7137643c34fba69680b8dd5a5d18f107ed1c2466a6ce16d98f0bbc7bb054ff041f3b2d6f1d0eb2c389d05cb64c9d79caab26bb8af3dd884930ebc9fed801163737555195aaea000038f873685cb3ee3313b18d57530803f4ab8cb58fa60b3b9b24cd6478d4e13b0cd896d75551de1d1840305627466037f8a9577dac2398ef48d23ab209dc6b27070b3c70f4c9c88f8696d6d95ac9235b23a026b1df449b72694005cf85b150e11613e57578c70d96db24a5abb26a4dd69a2438dd61a0e565c05c04bc850683dda1b0710e69f6cbc078bf7520f07fae42751100d1b69308c74a3d735f01ad109a58a63b3d15e93864aed162c10d06fb5e0f40247e214ee69f91960638d1755ea11be468832016d6d34c515236a8df0443f7b2f81216f8818092ba82e8108046dd25e7fbf79dde88c3ad79dcfe35663f9fde64f6ba38e6199774333960c20dab1615aeff49d5b94579c6f378ae1891a9b64c32561143dc43a7c74dafbe9e7f14a63b6afd5999e513e8fdbed1229f661a1c825b1b548bbf3f0aba2af31f9bf09fc21d323a9af7860dca34c795265cba3ec7d88b4f7f97cd821edb5479903b5571bed51e727788fd16ef143c4eafbf675bbc561bcbad65e130d17e1cfecba96c9f2a8ddfaa9fd7e9513213f7a2e3fa62f876023d56e5d373a50838d94c6d534cb74c97345c36aee5ba360c4eaf0cff293fdfae0f3b84d3ad71ba3f6da4f6bef3b9fc72b9a5c5a74ea9237a73113b09ffd03ca14d03288e34cbbee58272da78973f1c43397a1207a3087873ded8e7cf5b3025e2cafdb8ede8c18f5bf796f7e5a17cd8f5b8d7647764797a46f121679239d9543348503b883211be84481d78d92125c3c80d7c79566074c0e5a68bcb8021a1d7c31832fa2dbe84a6743280e569a6b78bdbfd6dc583e8048ee6bcdd5cdbd66072296a25bab7571f4c99d65b5f812902346d52ddc0a4214a110ee12369a2d308c5b46b5f34a7373bdb9b6cedb81084ebc13a0c780a707adf5c632ead256571aabcd755db2f91cc7e346a0ef6babb0afadac84684ac1ffd9dd68b65a2b04ff55e2133f66ada04133dea336364e5b78d7da22f85893c0ff3c702ec493f0d2806028d66530d158e19d5f015f5ff0821938237a136b77c054e3f3e1061832caeb7a75fb9cca7b7bfe7f22efeed5353559fb3c5e6eacbfdf2c726b9d27771c6ee4b443e14cb31687d37b37eb0634c7d34cb37e5f9fddeedaccd7a61b304dadff9269b2f094c58d4190a38a1423ba7566db04142da18b010fd08cb0dc92952fc1795dae7648e72197ab20ffad36d7d16cc96156fb79dc69749cfee90ef0cd793b77ba5678d6e8685dfa3c0df9fec9e5d155f0e203f26867439848a485b326e93843b6ae7d3e84b76f1d87b06684847ad03fbe49c68d5946e48090c778eeed341cf3a01955a00f24e1e8ae3cfec778b5d1eeb86217eaef210af2683a7b732a0fa5d94667039b401acee88f1b0f447f84ede241df089d866b6edb1dd25ef93c5e7709c20fbdd770446e74be5be8455f5ebfacbf5c7ad58bc82bb2174fee926038ca48a7d55e271f6848a32c48c819f346511cc6c380a575b21f794db21b8604b2a62461294bae99dfe475403d0781c7a294f9046cfc493662647742bd11932975f2134bd2208ef81e48aa3c43efa548ebbdacbd865aeee22919d33b12c51999a68c64a3202583206484dd7a6c929120225e3c9e84018d3c466e826c044d897aa03be41751497c95d120229478f1e48ec4033d27a199ea3aff6f946593ada5a59b9b9b26856e37e364b81462e674e9607faf7b74dae5d2862af6310a59ca51f1db3448984faeee089d4cc2c0a357212321bd217142e83061cc2759cc7b7e930459100deb248d07d90d4d18d4a394b506f2643f83d4c810478446a4f772f794ec9ff65e9237bba7fba775a8e7e7fdb3f7c71fcfc8cfbb2727bb4767fbdd53727c42f68e8fdeee9fed1f1f9d92e37764f7e817f28ffda3b775c2826cc412c26e27091f459c9080a3554c293965cce8c620c66ea513e60583c023218d86533a6464185f33389293094bc641caa7382534f2a19e30180719cd0056181c34b5d48b82f1244e32f28ad0946469185c5db6c92089c7a4f7127ef65ebe5699bc90a6e9111db354660148c4217a3ea8ec84512f93f912fe43cff23bd9f7e2e8f47af88166a3b4bd56377e775ae48b2cfa7f57e1944d9220ca7e4d97022f8e52b39e3dde05be4edeee9f7e38d8fde568f7b07bf9e1a4fb6eff9f7925cde652b3b9e4c5e3313f1abdee45bde89a26d026d9ee454baf5e91ff83b1004e06d308fca592ea653a9db0a4467ee79bb2404ff3f292dd662cf2d32a2f5f272213d44a882acc13aba2282109cba64924f29217dbdb249a8621595810a026a7dfbb2a5f74754293e174cca22cad91fb7b58887c89922fd802afb83949e22cceee26ac993098dbedbce5bc553ec8000609b5f05293b4c921a2b784040352c52ca24bbcc5bb098b07a2e4f636e9bdbc8ae390d1a8f75255ad86c40bbd46d817c242be6e06a4aa57f102aae00b291aba6a10fd811a64b778cf2fa9d1efba2c46724a24dbe49236d54f3d4b1cc68948e69f5ad2281b876741168ad2eaa796e5f20ad378d74e83cf7a9204f10c57809eeb38f0498bece0cc9ceeffab7b797ab67bf476f7e42dd92297577ae128635126ea866fbd510f1332ab3399ecab673607c8dd22979e5e872feaa0430b216708e1c9be594fef653ae173cbebf22d3c01e6f93428e24f589a552f699dcba40af1e8920f108d9f0aa9f853224dfc8291e3779667127deebdbca8bd264b4bc41bc571cac8cd28f0466412dcb2900c93c0e77c791ca71967f9493c49029a21931c06d70ca989a4bcad48272628ff6312f862eed434feb0adcddbc1eec98f5d632611b2e5985be8a3587d139a8d080b19acda3a67e9519c8d38670ec422e05c92f75c3c616a1a7de34c4fd23ad6285961d5e8771deaaabdce8b7ac8fec8b6c69dab822736f7f78e8fea9243022dc337acf79a9600d32192e0bb56cfabd35bbb0ed8cd9bf896f0f5cc65a6de4bb268617691038bf0d7061b84cda1e9258c66ac8b58ab0afaac6ba446d3341846d5dfbfd4735aace7ec4375714ba241112f50d556bed20577a9d59d4df75ea6d7434e83aaea4110865bc4641cbd973ecd6883238f1fc9f85f957613f8d9688b14d8c58871a1cd912030b9253f4407eb62b12f2c947414afedebc07545e65a1d09a88633f505fee55bda09d266ff7b9efc435fd1a79228b405c3c9b3494e607a52d2e7d5f739edda640b1be48c7d48d2adb11f41f772fa05aad2b7a854143a615e9c7006a60a00a372b0d51d4b7e100b3417205e9babeb14361fde2bb3ad73d99f0b6343348ae0be387be39385459256be39a6936a8e0abf4e826255eeb9e6b5185449c82776b745028d47fb5b4467d99c6e4fa69cf47b2fd9358b62dfefbd94c95fe452fe92538a9a483f482721bd135b844398e20bbbb9ef09018ab866659bb4d7ac34649fdb44cc8818ef3eeef85faa38f00fd384edc5e3491c71de03bd62b79a9c48c4a90985ffff1347033cfbc43e4d47e47b7e8848b7969642f8ddf4e2f1d20fd621ebefa7e45d3c8d7c1089b9944c6290c3bd3842193f4ed2bca25fd3e640e516759db090d1fca075b87f46445f9c1d106958f60d148c23f291974dbd3861cd5f53d26e6e3497b1f4d6d2d254a5fd9ac229481c7e0a4361091bdf91dd74f48945940bbfb10712e35e184f7d18db7e74cdd22c18d22cb866e4847174b224250ba4eb077ca8e200f0ba17550b9223e71e1f797f694a2849e98091840d58c2f8c98f738f3eefe9208898dfe7a7ab49c21addd355c2a2eb208923e032c82a7009aadcafeddae160c3c6fce0eb916b714a8da6e32b96485e8355fcd43d39dd3f3e22dba4b28281ac2beeca38d7c862c22271164c868cd024e187d249168c83cf7824326b0732bde4a7b75f2e39dd02c5b65403dd248913326669ca8f5dfc109251354459c7def149f7b27b72727c7279d6fde719efe9c7289d4e00f33ee1b3daf835e567eb26394bee88a49868324e9b41bc94329a78a39ddfb6277174c71772b3a256f6bb8f477b56dddddb09f378c554715a0b23594c783ffd461015266dc457cd350da7cc1ac5fbddd3f7971f8fde76dfed1f75f992ae5c5e224d5ff23297aa8ecb4bf7048ce96d309e8ec9988d633e171e6822f8b4980d1deefef3f2b07b780c1c0451beaaa15caf920b2549444375302293907a6c1487be4d261f0e76f7baef8f0fde764f8cbe6b050a1dcf62506c7059f32ac8c634fd845ba417c6fc706dcdf2c1f151f7f26db7fbe1f2ddc1ee8f9ce7a959c2b47707bb6732ad63a59dfe72f8e6f8e05426afccd711982748a24990168877eff8f0c3ee49f7f2c3eec9d9feee81a35f22c3c7a3e393b7dd93ee5bd5bdf9da57fc61cc32ca8520b3fd9f4f763f5cbed93f7a5b6c394ffa47f79722522079efe3c9c92f976f8e3fe615acb87288b40d57dac9fe8fef15d2db6b66160b2fcb1d77b251c79ad585ddbc03ed8ed58593eeeec98f6a70ab56ebef0ef615a9acb63b0502f7d9804ec30cb8531c21c2fb97cd2c99461ecd58dfc4f5dbeebbdd8f07679767279c231c748f7e3c7bcfc7d4528d9a398e0ff74f25df6c369b45caf759c6bc8c8ce24c4d734aaeee040f26f18078340c53d0f781468f9f1539781c846190322f8e7c9b851c9f5dee1d7f3ce26c6aa395f78cc34f3fec1ee57282de9120f2033e6058f15ca2e48d84f4f31d093296d08cd99cea60f75fbf5cbedb3f38eb9e14090f120f773f14690e527e7ebf7fd05504519813b5d9c9f59704f13425fd23404abf6c07d83f7ab77fb47ff60bef095922f9c839af3bdd7dd7bddc3f3aebfe08ac69b3d55a6f6f6e765657d6575a9b9b6d236f9eaddd5cdf5c5fdb5c6e2faf6cac7596dbabeb6c71b99513e011a0b3c55b7b68143a730e5934cc4620280491cf6e39ae6984fb64914de3bea8886da5b3b9b2b9b6ded95c353a8db9f68fde76ff49b68be51adaecbcdf3d7877e9a8b900fae1871f48bb402a344d630f8efd37099d70ae348afd54a9a48384b32f3208e9d09a209efd1d07936d727e5ea1c95da56eaeef8b3a39af5c05912f13145f5329ff607746a2e46c90c19b2679a539dfcad34eb8006766c8190f641b84c1446650cc03522634c9021aca449dafe9e9461345ee0659134693a1cc9333b08b0b85ecfe31b886f95b16e349a64f12967246959395895c9a0cd3333ae49ce61cddca905da9c8bcc84519a0b142be84dee979d2bbc8b3f370d83bc1a2b4bc57711c5a59dfa0b652cbe4d38c5999ded28ce939e271f7d66ef3edf161172e3fcc26191707adac20226a793833b5b2383a3f649195e94716716e17278edc633ab1721fd289968e3cdbca823ccbc815da083b9a86a19603a1561e24072dd72489c7416aa3f50342cd7cb7f6847fe0302d4fc286ecd61edc091b766ff5f1a5cceed429d37b842a663b0b00f55c10abcece05402d979273ad8c1f255ccb7bc3e8a7c3c2dcfc8c502bdf69610c3f23f402f7665c4909bd7b331d0c0a93b99ba798d44d7f0ad84d91c201ac536518d36cb963132642ed550899d7565c99d756eccc41946d5839f7a36cc391adbd56ccd75e73642cf4733f72f472ea68f963e0681a32ee85743c294eaa96e42a56e8f2c7c0d5e7a9abd31f03add785ad6c4c336f44d87892dd09f22521c83b612a2f5c83906765e349c877bc349e269e75944a58975780947ec0a8cfabd9264bbdded5e5e584f47a8bdba45279bd34d4d69b56e230f07db860e005aab2448d542afca3acd4594283503454bdbc64bd5eb5f96aa7d7abdd43b359af57abf1f2bd5e046d970cfdfdd9e101615116640183bb4b8478239a502f63495a186aead109f3df67e39037bd50ddd9a2e3c97d98dd0fb3fbdfa67176ffb7e5cd9a39d88f11334b9d2f7cff43ef65e5c2c8f59ea666e5c880aa469b4d9c809a59ce6e4095341264d91254a839f619dcdd960e9e8fe0fbffaf513deff5d25eeff46271a7f6fffd60ce133f32f2aa20e78c8cfbfc683d89439577dbce5cd2d949124f5892dd8186581d0f141434b876eff7d3b78c4d3e24f10489ad79dfeb9d5777b6ceff7ddeeb5d5cbcbaaf9ef349a95577b6aa3b2f7abd76edfcdfbd5eaf7771cfff6dd63879b56bbddec5923e82f443488348d6faef5eefe6d5777a069e22d49a4be7ff6e42538ba2e56a63a7d7f317ab3b5bbd5e937fd5766aaa17b21b9d42376a1cc801d59d6d2ccbebebf5a0ebf9affbef6ab51c81d0231b8d7da494be483c4fefa28cde6ae47f5115ba41e68d69436842b85c4043d01002b8b3d6595a6fb696fe9632af31a119cf94d69a58a93105d8dcde8826800e3ea07f7fd77cb5b853adf11efffee5beb0268c228ab073e803541d0a7ec497762679c6cd28c8583aa1454e76960463318f299fa574f13ba3433cfd34a349a6322d59a9ddc847f2e2454b3a05e7069f653408398fd51496794f7e4ee8640fd3b0bedf6172a35e6fa9d77b457abd735ecb84f978f0682ef67a17a4d77bd5eb2dd5767abd6847ef18afec2db4978acaca6baa36176ba22ebd8ad34918645a1df51db2404a0718277e2ab5393e1cefc2c98846d3314b026f067bdd4dbd20f819af619638dddfb65a8d5eefb633e8f56e9729ff5c69f57ab7ab57fc738d7faec3e7fae062b1945b5c51ef531ad274c452f2209b4026276994936895ff53db99bd96e412ea9eba38e9e3d791aca42136e446c86ee189a727af2adc4bac9b9ec9e6a1fbdf71ca410ef2e5e215d050afd75480daab5aaff7a514739241e071160d5af08cebc52cf1982fc50697323761f2b4bb846cb14cfd73457d9206c388f964c46ea9cfbc604cc3d955efa76fa8ff9eddc2423c6f2c5eb46ecf5b8d4dda185c2c7eb7149436154434b97bb06accc5ab6e5d9db7da33ab1cc569863a9964eac1354ef5940e6812d48a15bf8fd36c2f03d310ce3ea494d65cdcd9cb2be8f52eca71157bd9c3a839864cd0fdf8bcd5589fd9ff692470cfc972c892d25ab92c09955677b65af7e7edc6e645afe7bfaa95f2b9039a0511f918055eec3312b20cee80aaecd60ba7c095c7341bb13185b7cb842f4a7ef44c0b78c37a70c7b8f58021f86bfc9f0dfe39e09f03fc1cf47ad3561b78c6b4d55e1f5c38289b45e93461c4a3936c0a588c131f758d73884047f1210c8d8b9ddffdbb5636f2a914bc345e6748d496b46d37a30437947661ec15e0d949af37edb43a1bf867132403c720a5267d2a90afba218d15ac16d3dd344b687842a32103030b5ef1d4df0054f2afc160d07b99ef07e95e3cbe8a0f69f229b5cab4966599d6f29a51864199f7341cb8ca0d5847941bb08ea32d3c23dba53a2d5f94eab45c3d94d98b1d5e2ce9d0a2ab41addab74134bca299dd8f7539eacefa95d98f83f88625327b85363ef36cb7fe00b203f54afa050ad6d412e921cd46c713551672500ffe5cb5b19a752cb6ae173b8a23be7f99e544ff602b959ba9d84ee5862ab654b9a9f2568cee7c98465e36857dab300d6af82d73d2d3532e67e5d909cf95618faef81fec0e6d89a91fc0ef88ff93880a39b16be43e6daf6d60eef6468ba9e6e5475b7e74e4c7b2fc58911fabf2634d7eaccb0fd9566b537e50d9fa407cace2c7326f541fe9c7c9449be8ddc6bf60649ec0bb8f13ed8b89f6998ed99ff2d952cb418c6dc05a2642df248c7ecae95aa791457bf2175db3b668cccac3ac03182523e0b2bbc83726710abde6fc69da69b5372f8cde225f019544055ad619cd22a9e86a381c9a96571baa9d1596a896555bed76d6b7c130c852b910fcc54a71356b1519ebdbae0ad6b296595bdb76d6c320f520e7bf5de3b6c6a63ae9e881d58a416776a3ef82ecb3cebe97bd73c9beaf72466eced061ec0783008755ddd9d2d0c9abbfc7df50f122a9d42c3ea34daf739c66f74ed810645ee8a29045f55efa6c4df4d21f0c2e6abf77be98ac649a241f689020bdd93bd4d5607021809ebe6d5d1417a936833390f9af9fff6e70385fd81ecd5a2ca04a2eeeae9c1814ed282423244732908c8d640e549d564511f240d1e349b6174759526c1956ed2200fcfb30bc1fdf27ec3ebdcfeeaf59adb6e3aaa3d805ad8eb7f70707f787f727ddfbd3fbb3fb9fba661dec78921dc63e722b496c8ba462b7f313d527e627aa4d8b9df5ef3108847967f85c2daadfe71a6dd635baab6b4474d1fc350ea26ae5be5243c4413da21b8b79af79da2ba3f9c457080586c24f55ed34bbef44fefd72e2df57775e9cb73bcb173548cd46b5eace36ffbcba3fdf6dfcebf2a266d5a6509bd7767a76df397a7bbf7cf2d6aaedecbd561b6d7cb66a3b65bf019a5dc35088d3f277c7f1af8186c873c57d1e87b653f69bde0b909ccc6a735e61b0979d4a5dfe2c6bb1ae984aa1ed12e99b4ee2344be2c9a8788a11db9554240111d7496558a9cd54949d7bf1f82a80c72e7e40bd24c023cb988b8d78b64ff9e13e6ade049f8209f3030ac77afe6b694f16bd7c9b17bd0489b3269ecb80e660461370838e37475fd3dce5204e2e8558eb541e2819594791981c1d473676c469a6d0437ebe0b687a7517b1286d5eb1a528ce58baf42bbda6a9970493ac21f866e1c8270f8d5a3fe41654ddd9b6f624c10305d9497a9cd563784ac66e499c20079f463e2aad4afa215452a22fe71affddb158f9a2e2231aebcd7b7d2e36febae4e17552f9ae5220ecbac1f88bd52a7859b56a53800e9437628f23dfa84ac6621472f5aaae31b5bac62eeb4ac8a94bc6a3f5a864b6848a2215d6d0a0a03cffcc92b80136ef8497e7476b98479f91491c8089b9d053118a2c6712d288694a3876dd646ce92a8c874b9d567b75a9b5b9d4ee2cf934f9d4f0e284d7d888079236970ac409572e167dca6d0b37a2a2b867c8a7d6eef6f0c0b311cd48c4c0de721c278c24f1d534cdc4cdb5a5782defaed2acd2c6e70bbe195dc09674f17be70b80eecf5b8dcd0bfe8969e203a0f7e7ffc69fadc626b9282a3ef0b9843228eb7b7194b1dbac2feef3a5d635b079b2c8f7413cf539afc06565a54e2a78d3ccbfe45db2f866fc2f983cf00ffdfe58fd1657c4f05bdaa7d649455d0a8b1fe21655fcd22a39a413fc938df85f343fe05fc2c2807fe2ccf3af530669a8ac812f6045fcebec6ec25457f39b61f54bbff79540ad57dafd2dff296ef5f9e725ffc70b194dce82318ba7d083207d1744012268429394ed47004f5926735d3858e227665ff17e3c394809a32917d5b298043e8bb260605967c9327bf134ca40846914cda56451d297b63c6774d8174a46d0badd4d385df3215aa40129bbc2628713c7eff8bcc4849fe766051764db990866048e447179ef4e816b7777525963d3f20aadfbff921c656d4e8d46932973e1419840398a4baba7b22465ede1c8202c9c1c299ae1873b95b953a401936bb6d06ec99182d6478e046576e44853a6448e3465f4e34843531f57822460475a6e87c31307344c8bba95d98b2137d7bfba23fdcba617c6916d820b307a1532734918609d12ec849c101c29061d98e9d6649b891a8d144a316782b9661d696ac99a69da022b24a8c55348296928a729136e909499645094996410949994d39305d7c9c94a927662c5a46929121c4ca698a1044d6e1663e6d157ae3567f9c23513e65915633a29b92bca627245d3c013c9026cae089f5d4d9384f907a2ccb67cb2b6b484c51a6d723a9d4cf0651bb90a63ef131e7ef889fbd66b55b64865579ea201d42e823a45d07211b45204ad16400c5aa406a85d04758aa0e52268a5085a2d80bc750eda337201c8d3413ef4ebad0e1a00c837eadae0a0ae01da2c82681174550031a88b19a0cd22881641570590e771d0be01f28b2056040d0a2006750506c82f8258113428807c98da2303ab008a8c5c30dbc70668b9085a2982568ba0b52268a3001a408bb1015a2e82568aa0d52268ad08da28807c98da8f0688164157459057000da0aea901a245d05511e415403e4ced2f462e00dd19a04101e4c1b0774dca041835603e10cad9c8a80e609901f3a189349530c9c048175c7e30bfb16bb0afde4b71dddd7ba9f31809eeb8c12b6e701bc0d4062fbbc1ab6ef01a80f76cf0861bbceb06efb9c1eb00f66cf0a61bfcc60d7eeb067701fcd602b75b4e70eb1d807d3b77db0dc669e8dae0153778cd0dde708377dd609c34668357dde0753778d30d7ee306e3a4fd6883bb4e70a7e50677dc95e0a40d6df03b27b8d3768397dd609c86f73678cd0d460c8e6cf0ba1b8c93b66f8377dde03d37b8eb042fb7dcb971d2021bfcc60d7eeb06bf738297db6e3062f0ef361851f5ab0d46c4fec30623063fd9e00d371847796083dfb8c16fdde0774ef04adb9d1b272db4c17b6e70d7095e69b9c11d371829f6c806afbac1eb6ef0ae1b8c9316d9e0353778c30d7ee306234e8e6d70d7095e6db973e3a4c536f89d13bcda76837194273678cd0dde708311df890d5e778337dd609c86531bbce706779de0b5963b374e436a83dfbac1ef9ce0b5b61b8ca479668357dce03537180939b3c1ab6ef0ba1b8cb3f3d106efbac17b6e70d7095e6fb9c11d772538c5531bfcc60d7eeb06bf7382d7db6ef0b21b8cd3f0b30d46c4ded8609c9d5f6c30e2fbce066fb873e3e0ff6583dfb8c16fdd609cb4cf3678cf0dee3ac1cb383bfb858d077115d83bcf2ae63fb6259755cc1fdbf0151869ef652552f623b2437209f50c8747ba3643b3facc62f39591a9bc1865e3102dce35c54565819f0316e878f25a1d0fbe075098e5901f0032d420bd9700fa6d1ae7c0decb0af476e16fcb9baf67f4d87c0995c5a546fabcc7d23cd5e8337497b7a4fa03dddde27d579021427ec821d8db2de8bd024267b7b0f3ee3e630774440fe2840491174ec18bcbdcc6b698589c835eafd7836ef1bf2632e18f427a2fb24ff349a5b005801523ac61fe65276daaa44d6b8ade4c83306b04917866aebfaabf09b2513ccd08253e9bf0e361e4dd913822fd248e334b6b3c4818fb409394c1e518f8b8923f4457489e673f5239f6a34c75e52d5e49f26c44069224fd61185fd1b08f57ae47b1cf9abfa6c5b67f845c42671e0fc850fcde2615d4a856c8c28284aaaf265ebb811b2ef1a9d21ee856cac2810307a72c1ce4bd48e197d9078089bfeef6794ac1db01d55c146531fa37c3d160ddd69d6c1c73146b98b9bfcffb777faf1e6b572bc26755360ad24aad5a7b60d8e8b82a758cbc8b29f9e0990498e397e08505f2427c37a3d867677713a6a53fd08f71ec4f43fbea82e739840431f66ede96e8d458249b7d1250de25fc347a8420bb437c0626f1641ad284ec81ebd5bf9f12709d0aec41f4b0e9461826e628d37abeb0a0fd6ae6483446f400762649ecb1347d68d17cc06c64dbea8fe802524e535456bc8ff7a0f080a6194b642364c4c24981a5736c7ecc82d0edc6354bee7227704b4bbc01d29f6641d8e493c64711e7f5b75b8b4d99575ee1cec4a0f0a2ec86562bbc9d4a0d5b524ef28872f29ad674ff7472ad88cc08fc026a3436a4de9dc27cf32a88fc201acafacd317c4fdaad66eebf53d5abcf89e8ee07b3be12b06c4639aaf5c058a3ca6ae4f72fc0efd5c2b626cae1ee429fb4fd547b924fb6f3895c5850dfcd40cfa4b83d167f8befc44acaf154abc0219d94e73fa4132b3b9a489497c074abd029cbca4b9cb2ccca7ea6ae61cb4be579049e1bcff69f5c48b9e9e0ae5c743414effcae6153e84baefe3770b7dcaf0b2fe772c905d175fc89a5a4cf21f24daef274dee799fb44525a3c40c86e32ece3ebd611cb5d3743324d86695f98f989dafe6f9204d73463ea274de898fc2e3bf6053a43ce462cef153847e21d6b5a855e7d21a20350c0d13f18875d0c66e10bf86b8172799f554ba2248c5d154f847750deaef414cac72cfcc2d8ed2d590eb1d1c335ff5997dd0657d73907496f0258951cd84417451a77f168ca486babc06c788d4d8f866155d45ad3d814146acf5108bb72deba2894ee3ca6b4f86817ab597e5235e2a373512b71350a75e4cec373a44a97e1e6ba0027f2340c3e335fb95be413774553b63b1c266c48b338416e2c0c82e6215f415268c37021a88af3034e51e8be8bc4d72cb1493127fb14ee8e0b849fb28cf4a9e74dc7d3107b26de46965624bd854155ea079708131aa5833819934fecae50014a975f88d616d61005594043420572982fe5c9c2b2c8fba0fce8ea3dd79785b93038a672e457e1775d60a4aec650d7fb66ba7807175edba4917bd822d2c5d7b69808e9de7d87b4c89670f4855914a1de8c829091eae222d6f73d292c41f0010dce0845b5e790f5426df5d8e7aad6d13a16c8875185dfb53a565046d65a0d8f23e4cbe6204ebad41be934ac4e6ac2be8727899a1485a4a338c94634f2ff288a3708d5da827cc2450fcc11c45191d644f339a1f1df0f9018c78a242ed9f89f4347107440d2834e4875ec83240e94ea69983243cabc4a18fd948b972514a4648dc7d30e7850fb1f01b908085033938a9e4c30086d3466130ae6baa88b76fe345261d72cb9fbcbd3c82461c2ade653884484fdd0c8244ba60c1cc3d330cc1dca4f688aa260de9c3762dea7baa811e382f4617a1ea2318e56495faaba3f8f4dbd507d98c5a85c87e0dcd26e06e92933bfc730a9809f6afecb49cfe24f9cb822764370ecd25a7d3629bd83bcdf9296eafaa4a7fba2ae9609e667a36d727ef13c72964e9b39694a196b064df27e9ccb5e2e2e5e906d6ce2210ac5928fa551b806f0a56eea412ac5d85677e8274a4c0a48ff34f146a0a4fb7aa28d782399eb0c4d9321cb2037225d6b394e1ec515fb58579f042981f001f547b0be7d813349b128283f756bd5a6f0c50b51706181f0831e90c0f1c068a74e5a35f2837c3e62cdf499a9254949187c624266d857332de2c4c14ba92003f5e7244b2108dc98633b53c8fc1367b1c0a6f2ce4159eda7cea9c456f7c713c3cf4136b2262aefe29fb72de67d90bc47e753cefd506d7533984dbe673e82d78ce9e42136a3b641c96ffe936575b9178ed167dc1c3be1219d7cc3839f6bbb832e0b89bef608da12fb149211d926f39c124b54083336aec984453e2252c9b09c9650b7d40755b171209a8b3c104f06718c633f18dc952860c59b23c5b140ff4aa16fcf735efb304d4dde913e62d6859ead30c5f16090c2f5c013b9074ea4a86591a899c6f64c85d2b31cd412e64f3df69717979fc221f2ddef5c53985d188a4bc0ab5d42ed5ae73cdb2e2f7b414e510823d394cb617c710c8224cde41211371a9cec084de5c92e2b6daaecba40f594cf9456a284884f60fa6cf6652843eb448de25bec88a084900d7019aa48d39ad2584aec62091448798e1562d49673407dc08f67875fa151c515f4dfab14fbd6cb28a47f9155e454decdb594fea855d36808fd5ec9b271e808e75f2e25aac3e75f30693c7e70c3f9d345d26fa71a8cee14b54f303ce9f3e8064fe331fb0ba9069fac19fcaa93d08f2cd322dd61dc9eddd3bdfd7dd24743caf96456ccfb455a667212109ff6115b4d393eca36d990f43b147c2e30208864917a412022ee5ed1147cb1b324bbab5610a305a74f7b7174cd922c2d8e0a84e3c838ed3c7584e0350eda99ebac25f2ba8e5a3a85f2a19ec578f0c186ece8df086da69330c8aa958af38a1ebc7cbb861f441a02f8bcf36ce86de631d830d1503ad70e34a04b71cee04c3a732c56e9433c9d8d08f09853d57c8e43bcf3f30bb70a8a010541ac7ce02d18c7331ea8f84fa894ba6c0e3048131ae588df0734cd384c729d590c5963c575117d5a24a5c05249df8bc390c158a591106ef67d46bdd13bcd06660e1e7e2f2d0ff24a85224afd2cd77b7d25372fd422fb5f3440d2b61463fc0f0a2aa0f9caa59f04e8f613bb93cab03c2865293df1797f87935acd9bd6f680baeab8b11b681a00a2721835e4c696428b051dcb739472fc92ec0e9d3bd9e6b95e173601f7f550cdd4dc96eb3066ac0741f2a0e52d2c020115f42f658fd9abe02b9520df9476e5a63448e2315ec0a0d45e7a83e010de792a88c6b9f02eda8b8668218c6177b398846c30e7cea8e2ea61dcbdcc1b49495d527ea3fd30c9c3900a324f3d1f2e7e42ef6708ec45358e949472bc2d92aaaa8aec9036d9228d764177a767813a1a0db245be95a404191e1295caee2c662d9000af40d442207d85883eb9e22c2b4531f51b11ff2ba1fe9bf7bee20964fe8da9d37d89a4fa676ff9e23a735b28fac80e08015ef660355beeb5005d488fe8919ef9117757da109efde6ea2f4506cf7de1f54da9c971dba571ba072ebe72a4e8b146edf3df57df77992c0c2f69ff58dec5c9beef146165d45e1029e7635d6e1204def7b8db4e280b979d7ddebf392f3bd53aae9ad7dd06db78b1ad1b2b3c0a596346232504f11f6fee9ca8eb3d8be2d2b5f2bffdfda06b49f2a1ce44fa21a3d1b3d9f16933268aed4023a7d371b18d2599678b1ced1e3d7e4a65f428f712f0199b88b8528f39177f62386ffcaf60642a4a551693219bcbe05b5ecde2d32f2d74facca9505a914fecce5e00f9090517b571570a3962f94452ce8f3a51912d9178fe89dd298dead311aecb4b5f817279e0151de76d8bcf2c26bf4d5972f7ed517d3cb0f159c0b73e197f20b2e575a56059fadd4bddc6bea8f0c9ca8b6fafb6f803ee6cca5e6cccbeb1c9af26caae3de3c4beb811759928a4e98cdb9b3f42c132ff4d10273a719daa2b411eba08726857e653a604526c73a853ac5b1b351b3bfaad91b0e856a6705b25d73ba5edbd76ab551eb8da99bd40d338c9408880c5354d59cae78b8b872ce9a3e770ce10f8dc48f50a67942ac699bafd8b7c92b049483d96122fe1230ba814ddf460f65e9c242c9dc4f0ac4f5469bc827aaa68c2fbf5d039c1f1264b8c2f1fd5575bab80a8006895d2826cfc619d86985904f13e5555d9391e18181783ea1652fc6eea06b273dba23c403dd3b1e2ede974fcff88349a4ec7b327df25271634b90ef5d58c8bbea73d6ff3a64982115f9da66735cb045b66e72714250ab8b5c0f243cf497654835b32c3a2043ddd327b360966c198a56e49ce4170a2ca3821637a2b084920fa110a3249142824c863ea80405ff477c7b2078557cbdfce9652dda82142d399947ac63b5c8d1e63486919454633ec21a3794c21835cd7f58c44117fa041922ade247eef4772a3f3120642a4bc82947431e047a6069ed327bc0810521ff7b1beb97949c72c56f070de030e9af3adfc23ce0f263f843620bfd5013ce0492b4ca7d1bf6c54271c6be0b3e906f1294e1d75ec8b7df850c6ba905a7fe830720ed74fdaa9e3c294771e4500d388262547ea348be1c278cc32ead38c3e8747038f4e34c7034e94979ff93cb47c9eebc4f7918f0bdc0e941ff54cd5939141a43dfd3c276d8ac5bac29fae65256a53dc482d2145ac823ee75852f9e2fc8f5c580a07d6d0674ef44f90e5591798e340ef5c597bb01182ed13e97bd41b31e1a70079e12776d727ec3648e754c9aaa335af094fd5f055360b3374582cca92bba7297469244adb639853b30b7d7e4fd32a7cc05db93d1d90d21cd114d0efc22cf852c2581c5912e4a233ff719ad124eb4b1a2bdc43e029de088c262ac57b9e94447126cc1382082d7d548c661148ed31d2769a2522b29b6e64232a9a7107248a7b23a378a12bbc8641e07a1af0e08d0c62621ac99b19a36be5f337a2490a38c68bb77c7c75adb38f30bfcb2b985334b7dfabe5add6b5cad4558c78c0862e9d0c3acbaf621e415eddc82f272ed00cfd8fb604229e445a5d79a3fb08c27a9084a449c237a71c6586999f65faa0cb19c5a1cf923e893d3cc6790ce2ce3fcf7ba2f26b64ad6ddc88b5df0fbc6775cdb15edc8ba7ea22d831973cf53de4542f57b5d28f324a5127a5d69cbe212cf5cdf6b6b369fedfe2a2610df68443b5c62b30e04d5f332475c5b9e1bcc48e1e21ea7a20bace3c442237fd30779c2417a10081aa8e77b438e5b2b03ee5328a8f28ee32e7c52c18e6c7b2e83d1e54ad3040ce78ae883f741d6be06f96bfdec7a0c31b99b8c8799d72593b1f3a30af568169f7cbd18159de67e3706f441d08d15c0bcf40868ce1d7ff5aa7ba7f4534293681f930e21ac71667c9b638889e7ec9a2e911f8dc1b254e9360c58251d4a6999052b5b3d3a3c46d115aec629e83cfd75c1b5bf737e619a794cf0e5906271c75c071c8d38fba9d2c3dc32893732f8e321a44a90a0af618c965a6f97da9ddf9acf38868feb1cfe9472af86a8935ba1e9fb599b13493f91e8b260a36f23222bdcf09e22f8239e8d793f1f6739cf873e08e677b187ff28187d0f4c6c9e35f76c8052b6bd05cfdc5c933beee30d021eb974f3ce46f43c0f16946e7f3fef2a2caf32ab56e9c3423769b556bb5a61f47aca0066e4ea6e9088a344d85d4dce24b8e78f09700774169890a733ef48fe944ec2193c7227d5ecde9984e24bec774f26855fb984e9a69f059618bff162edeaa2ed3ffa2f65dbee2e57308da56c87c5172af3c03fb52cd4740cfaaa942e1bc68f89dc5bb5f78052414a4b9ef4ae63f87f2f526a193f2fb95dc51a6ee1d36073f4653fba08a36be66c96e32947e61651be5ba5a9a0c4b34b5aa30e499a9b23d91f7ee340cad739b7208911fda7042c03111b8130ef55386a8116ff371f0fa2b2dbcc20722faeafb7ab73789870f7fc2ca60ae950926554afdaad5630ea13891a291394f82f3dfdffec93eb672bb751d19f7f79a41fb8783ddbdeefbe383b7dd13e3c8a9d74a8c6cafedce5b8eb9e6321d9e87d5a72c33b657f96ef011e62392dba7c2b912fffb486eff80f23e65997a37c9b24733f994650693e7bf4b98fc4cfe6e187bcccfd80bb856f87df2c6fab5a89e6b6b05ace39de49f89f573b1fb3e715f9ded834ebef1819bb6094bf8e6908a872784fd36a56190c98b6cb41a0ad238820b69a4d93a099aac49fadbdbdbdf4e75f71ffc1068ce373c7ff0630d93f1cab703cffc466316e585f2a1e5ffa8efdb53df418eec2752e0226997dc237c5bc27acce582bca9e152e9f3f87998a54c78a4ab076346a2e169f0b94cd7e250c6ec9029428c625bb9ef88f9d4097f6537110e1ccdf614310b4d76c92da7eb89076e30a69143073f2b02dd63503953b92c5b9e4fbd2c739728987b42132fb3cdd6c5aba079b636bee8534529eefe424e55341a72ad9882b92cd89c4abda6da925cb76b79365d7da7f135ebf6ec0947912246fffa2bb564c1cdf465224639c39389f4f05244c87f908b9769aef29dd3c98ba6247620e75b468342dd1ba1a0db9824419a051123fd30f6693aea6b63520f80fa5e1c65ec36eb9bb15e240ad38c6681277f8d195fc1c70372a9d283c863a4dd6c375b12e4d18c0de3e48e7ccc82b0e4d8772e5add4ee258dc4209c82342cee0280b835345d92d1d4f42660ce8b2390e6e83a8fa3ba90ce2b8b2452e9b5e1ca5198db22a406aea44268bc06d3eb441b6c965339946fbd11e76b62ab38a0c79e55734a96c4968de0207175bb86c06a90ac278d91cc4b1aa7769896cff005eb4dc79af6862e585ab0ea37ad10bad9c80141bd20a97172bb699f72f072b524ca713e637a613d2f7d980257cedab30841a8a21b188e1df49851fdf83318ba759658b1fbef7c763e607bcf22fb526147bedd827f55af4588346ed82e8d47af6547ef5a52e18218e2627189f0de834ccd22a8788b09dd55a5d16a993cbe624f03e41b2827e001b4d79d837a2ad027924532f8b5d21f8e4462783ce89fa9af05b3b4d8ae87a32d908a747483749e0f5994c86df5aba9c632d8b0469b90e299c57650efe534b95014c553a02b41c2a429fcc6185e423046fcdb51c08d0729cdd4d983d1a05d3d00b12e0204ec85569545b1bc5e8493889b358ea7e9a13fe2bbb9be8b8e4a4247349243933222b9359111b7946bbaf60c302113ce36b96248c7a238e0a2f4e58e3d794a4a3605ce8314ffc7bfa16afd70436ce2b9797a2d0653aa209f32f2f2b178ed61296c6e135131631b9ad453c4d3c100de59a2934cb13ce6235570a21cd4c001dad8155ae7af3c72726be89a44540509c8c114d8f6f2229d6926d1d9b4d33d1d1da9045f8fa6b1a05bf4d19d97f5b6820f0f7e26984e63dadf2c9902ed7c634fd6dca120a96e83425186ad1ae744cd34fa789f70f76e78e6f2a64f8c027db64e9fcdfcd8bc5ef969aec9679556d2a1716b4896d7e6277a903d4dcef5e7e38393e3be6124645c5fb5432096f638754d0feaf9a265eedb2ddac904548d822958a1470ab1a531275386944a59df7e5349fd161ffa23acab2c9d6d212f3c6b421ae8df8a869d88c9321823b6b9da5f5666be96f29f31ab1b5109a592cc42ad584d20b352548f176119014b08f4b4aa3449d4666d06210f1bd06c49f63f5784731617b4eb1d2bd2c4e0c8a97cd625843aca7e65e66599ce0328b936018443424fdcbbe16c43988f841358af7e26810069e1e505b7421f4dfa200027bce6539b9820d84e07441199526e0870442856e0ba65cadfc9b13477160e652ab35c5e557356158909f41eb68cff4dd42254f5f320bde2b5579adf96aa7bab3dd83ffaab57be005cdc51c76515b1ad649e5bb76f3d54ea5461649e5bb8a73e3442d5e393f57a16acd90c63b6adf1019b672e3217d2b42131c6d2b028096e36310651bf6be9c03b59c340c63ef6394d201c7b86876477c34f554775f860c899a2f174ee6e226596c297aeaf1a02e769a5a6127122299da8af0418e964dda67eda7dd683a660944903657952b8b56433a09034fdd33621184199912467d5e52e1587cec888f6690eec59147b35395b50433e9dd785f9ac338aa9149a585cf7256e628af313abd8ad73a95214cdba89c6cdf086c9defa2649bcf2dae45319d755231abd4783b0a1fd5dfbfd449a55227bf7fa939bc2d4e232f57c716c23f5b1c9f1cc6de27e62b29c908fd2c848cec762f64341142b846eb9e0e7eb12db89301858dab985b9b042fbb3d8a6fc8364ab00b0bf0b719c537798d0aa2a59a359caa3382d6bdfce09057a5c1b4aee55085999ccd14e446e058d9284e591e3139a563062fc1b86c10672396e427532142d8ec0979f31e8358e85c966e7a2cd0f90b667817c640db9063c07f14b2fcc832f9e8412dee21cb34f62b9f04d825f753c5246dae14a433d9a32cff2e8802e3e411085021efdfe3203239c3af711015b2fd83cb3b051ec7451e1767c33287f45662684c6f8bc9d030263b5accc9cf222c4cfe409394ed473a654d04a890f784467e3c968d25f0ab98895db324b5b86482c0b9e80f2ca968c2c8354b82418002c0152bd9edb9c8f853c06e0c5ea30eab15995ca91927bd4949f6433a31727e48e271008371e516a946090cb9eeca7dca3223e7cf8c7e2aef8948ad14c9416d740ede8a9b5ec525a9a19c965be4c937c0b68ccf328abd92fd5b58005594f85975d51dc6f1a7e9844ca37110e194a976e0fd685144a3e1113c2cdd26bf7f99713ca193140228a77530ccba61f41387d9f5f962960d31368b4fe1b0579534a0a3724c27eecc8774523385063ec5eebc62fef5fc29cbdc794f99b1b26f109beebc02d52e4ccb2b1eedc1d72409c6012783147084a78d028ab0803caedba2803aae94cb1257710876ebc703b26dd4b6a3ff42abd6e3c1cc7ab4334d7945523ab1441344c8732b99cdf3616ee4a9763961918f360037099da4ca51621613168110178cb93018c863b5aacf1bd1202229fb6d2a24f94371ec0656c7f73070e51269c68722e084ee0449ed6f68a4a8f417c4a311e78fd00a50c990f12dda6a26615912b06b505a06d130147602f9a9949fefef54f339598993c84d1086844eb3784cb3801f9eee088b7cf924521b9fd14b192901ae0039de26cabb1539e6bdbc095256d75e7f8ca769c647a372abea401ae95ffe0dd1aecece2abd7b2bb06fa15bba4f2bd46cd55887f15fe5fdc759f5a573b5cb2654ec68f96cc408bb65de54ba0b905321d52b414a42faf9ae2e5f95d649905552d40a27bc8548de26f0ea548f78394953e11d9f2176ab7ef1299056c47a670ee8e73bc27805e8bd809fbf6e5292f21d9886aa4b7c4710ae21c0478c37cdc800de26a92ac9a999c0bb4323124fb2601c7ca6d20879cc92a116a19ff72b7d4db211cf7d1d07c2f30c8137b50cfd240834813e45aabb4584154e349ca0873c5fc8e9d19f7acc34a25015aa4615f6d3263915cb05ef7f4d622060ad33c0b7f072dcaa3a394c3463499972354c2793500822ea5a8f7754b69f0a57c3248ec2bb7c4545b9d575138864c4a6706de541fb372358a77c418aa6b0778110c24bfb979274aa9e3579231a0d59910ef6f8c0e1ca3a9533cde011b3374db3780c67223fe5027d18a3d20f54468af6949a45d5e80709f304210691fa2542c4aa07d25071b13ffb11a1be1f48aa11974e821ceb04d764929211bd66a4bf9bfb56eb9f8a6b5579d270ae3f515e9594744e13b695af2c0fceddfd3ae973e99cff9dc413f8334d47fc6f3a0a06909ec609fe85f37d1fe58ffe34c20cb3bb6075d8ea83d02189c1411091d9f58d75365eb268ad36708c608ce6c1a79fe038f95fe984127efc3c0a423ebcbe88460d5f91dfcf379bbe0c39c0d3468cfafcaf7093c83f439134a6d042c240e7085f20f403161189799d190da070463f31f957f54bfd509de310f903d096e15dbe1b71b0e66147b65168616920464c933bf893a6c130cabff68def9f836c94ff56bf327d58576c1027d0e32b4022fedd0d43f909b14b48dfa3698603e03f605b818f69f449afce8bc7e3c09eca9c86bd38025b44f10dd7b0f83d8db23758378832469dd30447ebb3ab781a016df7e5ad9ffefd96b189f88d58f25948eff4aafc60204e6d90ac7e61d3f96f892b07116a9549a09a74833c193cbdcebf649d8300912bc95723db9066874893e2538e48fd9c883a429a652cd23e31a7591780558940d414dfc8bf8a7c07493c46275c757c0904db91519d0422850d93783a41a469eb0a7647b133d8bfdf18f3a0a748bc04704ec8bf64f5d7f12726b0a25cb4d5e1c1ad59e72776978a04d14bb1bec774f20f9136a61374d6833f326f647c4af58c5eed988de3e03334097283fa90fdc6959a7f1d0fe03bb8c52512b1a145cf5136da4d863c2d166b85ffc5e1c68234c1bba5005d23310b0d8c312d1cd6bd6689ca781a8fa1fc84267256c4a79a6cf82da7681278c6fae5bfb1d94928d6a6727aad7de3182753a464fe77d7f83467460025c2e067a6ef61091708d487ea69c228e24972687d4b1ac7d75884a505de0d8626a762d65296893fb203e9683a1884c69c0876afeda2b1a440b59ff651518edcbd7433d0778c599b423f43eacc46499c6502344aa6f057ec157a65b15aa0b9833cf1034795c51f421a44e2068d03e4ab34fe039dac69154e234102f08143854f89a56914fc26ffaae4dff254c0ab5e9f9244a6d1676436f0a14a4c7c5808f24bc2859b32ad2ae5a9ac4efac22b1c7c2688b1db38117fb05bb77122eb8276f38a3e07931c1dea8760aab02bcbfecd2fced0849157afa2387bf54adbb6afee88d885ec1ddbf771d3cdd878827b1d1db3708f22a97a74126460c90fbf18929517d2f1043fe2c8dc0b3940ee0aea871c3e00d40fb1d79ec562ef9c26c66e23fa2b9283ebc0c76d8b7a23f957ad4416f9a9ac97015508235ead3e84e02d24e4907c6920048b3c3494f821448b5c5a2b4a70467e154a8dff4c70d983061e3ef00990f6595890833841a2828f7cf78b93e39b28ff520943e41c43f12fa067440d521d5141a74accf4c18c59ec5d18491fbff151067c9e487e87bb9bb133a6bbd23721644895d0253ef11640031c04c883b49f92e8f56adfe02b7dcca957f256acca20ede20354f1633c11a348bbfc9467d60620b573a760ed839f78db20be85d480bff6a38c0d65ab07f07cc6ac54eef2e921df8eb5cfbc218cef011f59702d9a39c25513a447b021e9551ec1091c53735620bf73d459ac3348251deb959dd201330671ca446e717e82ef8f2aac1cfc3cbb9b30bfc0ce8354a84c3113ff212a93c7bc4fec8a5e4936214f2cfaf31eadb630be6189cacb7fbc93eb2314ffa2dc426fc51fe49c634110223a892ef56027c681d819c6d3300b26217c6b8611f00b45e408e5ca48ecf1d438904da8df452630a13e7acf434904ae6dfaf9a916af68e00ba311a8afc26a4ed88451b1f5a7531c67124fb119ddacb0af4482be715e06a6ab890011fdc42412532147a5a084505c48fb29840300689c4aabcf4c12f9f9d85523fc87e2ab6936bd528b9dff78075e32f41ab3e9554ea3fc574e77fcd75932c57aa7575922ce5ee9742cfe9813ac7cff704101dc32830891afde2cd6483d8bff7e7a7c845fc5959bc5079ce630395f71596c2d18a920c7ef8f7c6f85cf24181bd50917782249914b964cf939124508f98a44882553b60f05a6bc52c4af269a70a05a1152770afb3fd89d1777ffff83abe3cbfcb7668fa401a569f529fb2d87ce7ce0c6450a1244baa23e8063b0972bc41e70516a58594b11c551896e6fad8f2d7f0ef4db9426acaa797e7e959b2d44e415895e2bf8974235d73421522dbd4d2eabe7ed3ae9d4c9f285b281c8f32e2de556e25141ad9eebcb112c228f542f9bd4f7f3da8471f3daccda4949d570a104e34dc9b66a684c2755843a3a7dd9143baac89216ba929b67cf2c87374cd55aa1bcb2d326dad5979a1e9ce2c24366886eaeed5f32c3c20279211bd640c28d80a48f7800eaf69f916ccce861b9d3013d37f442e6d7b39b91b234c3972fb91f03acd4343d433b36f150b272792926e3f2b25273d72f687c8f0bb7a6536492bf70349a9534cc6eccfe576d0f36c4ba479bed5059a8a69c9eaa51c726c364f0ba725b5ae92919cbfbc69b0a83ebe8af6b5cef34e0d2d37212164423960499f6f4753e166275c23232e24850d7f64e0baadc8f8ab0b8d75c583a9ca740d70be4f64252b248771380ba707752976e4ce72eafe7100d9555681bc3926d44ba96df78e69663b2aad7e9a8c6be1226ce476c44f98d293305363ceadc80d553de8c7577a4ae289c44524a771a2d187eae712dc14c730e76148b9b609e2e5e99c3fdde8c75a53faee0cb062fd7a2617147332209ceb54aca77dc66216f1e821750b61b8617a48b4779796329ef93ecbbf0595872709b3a912de8e687a3206d6aaccf7202a2325054ba4286f30b3b152a86b4172f6423761e3877429e969d846a1648b389d3c11adf280d075e7e4b0192f82c0cc601788c9c8a67bee2aa8c260c639ea2715e10a9cad8f88af93ef3c9c9f4ea8e54bb276f6a84a6e4868521ffdb3dedb4daab7913ca42640fae0e0df3f7411c86f10dbc9f53d959c6690af8ee34658486c20afe5aefad83b2b4e775c4f1c00e60b0ce245775d0827895253b732afbb29dcf7e8e56ddb65f5810f57d9ad1a2eb7db4287b7f7678d010ef929b791d5a6d5a9f0b7dd0b3e130f094fb254f58929f156ca5b2451286ee30eb399f9c390078598add1597fadfbeafa21decadf8316f7fcb111e44fa16f98dfa0e5721933894dddfcf7f3f3882fcc9023c1aa2998ce2256fb6d5920033c967188878e9eb1ac8354d02ce402b5ba45279b0ebc11844275928c527c899080b0c2f9f646f9ea3dfe67a3527007a9256b674d941ef34019f2b1aaeb19f252f5ded9e3ed4d7a668df2c80bd568f6cf5c4a5fc47e552bd6ad5a460f8f39aefd0dd289d269a18c019b294edf1b575beadf79b1607d385973c5be1c19c9dbba96ff1db2259e435b6c74203424073b5559b5d81d5a691eb0fb7c00be9e73b4b8a79c00a2f340da0e611799cfa88f9e5a0e269533b15168e9ccf23adf84102296d3b012fc245c570a62e0831d26aa9a4ea8c7e62f07a10d20f77ff79b97b72b2fbcbe541f7e8c7b3f705b9276037564d0e79279f50b855c9a30e1466779ef9027d1254e4902e34dccf7980839a7cd2d74af6679ce8729d02fd7c87e768eb09a471a0d169c19e7bfd6123b88735a7dd8b2777a883b069c2515052844e20c55c06791448a698df24964287b46447974c4a2a9257b1444e4d85a64452e12da8edd1c4263df1204138c707ab35a18400eab362cccd4178e26efc59488f1388a8ef8904288657b5945a85a9add92fb4661269ade0da52a3b046db956a5256a231b42fe803cc154c11bae9e11a2a6ff295d1665131f21009746f41839fbaec90e1140f1e5a74663437319846d4f392c22bdb3b925bd15a36e7e840de623a22bc7b617f910a53cd0c9ff07560b10a2319549f649b481528d45db3b2c01d12d986babe373cb982cfd403e901102bdb313c01922dabc0b57ac3f353c06eaaad7a5e45ddda6acc7ec0b50fdf430376d3841f46328b7c99c822df48522e0a799e062996951ee6e4507720e79668d2f477483463e06dc74e5bc89aa347662a3aca2d75954b88e2a27c01cb776022bc4addc16aed80a7a8dd26f7f7e4851cdec2823e6ddb5af026adb1eda2ab46b50cb9ac29681e2954b8f12bdfbcb4a56cb0a473dd7d6f3ccd58b2654790e1fd52d8f93eefa2a91545bf8040a396d291a37ddfe5201533cc7428ac3bb054d57caf4daba539956f94f4d93e57252facc67352e28b8b66b4a9227bdb1985bc0f992cff1cf81f3ffe4d33b85452714795dade2049be67406ddbe460f75fbf5c1eee7eb87c77b0fba335941c37b2ead77ab260f540613243a186425beff60fceba27eee6d06f4d104d1912c26b33b9b8b7e07f5709a39fdc258cfee63f0ccdb5d39db329a63fb40d6947467363c76714f2e4e83c388af3595eea49c73b5771fb7097e7f9c38f76239a8e1e21f4cf3aa4091f68e72cca9280a51732968b11cf16a2957a2336e3dcf69ea6a3aaa8c4da5e9dce948d4d044a693e955a644b42cd18e7448a3d8c26557d213eec1657042c82788eaacd9c41c94c507fca3218cbdd79eba28e65cedb17358737537b8e4ec01e14bdeae75894230481898b2d7c021f715c633471084aef73758b53dee18dec21a60a6768cef740dc345ec6ee183fab7c366a644bbff742f4049f99a6c89f81060c47840f7e525d6a7c34127c16b2cc252eea58285c54c24239136dd90104c87cd18c94e6026d7d5d779b3322cfe421486f682aaa70c69f9931896f61ec56805663d78769915144f9fe8ee832675b8fe2aacf64434566df216d2e5e3ef69ca89c870296adb0af73cff09065f34eef3cb3a5024fcd3c3fe0d43c7c76e023fb91658e3910d28981694b62d41755f961921735a7c89a00f0b7fc7ef7f4fde5c7a3b7dd77fb47ddb75680ab62803f6b265d161010b10763bfece49d703c1e7629a7b4b0bfaec93762fece4103239a3e030db842fecebd601f15f47706b5bc97ab711e6a3126c962c9f994bcd8de36a67bf66c96cfdaa9b15e718c592c15c2734f56fabc0b363516ec03eed99d6bdba526822116acd2ca26ed149778bde0d6fcc1b9cbd9e9a2cd8e519ec9b530f9845adbefc2821653259fe81d7bd16f59f2b47a2a1ea4ba08bdebfbfaa3e5fe7b4b487e6fdd977051816ce762c36b57b6f30a6e2d950b9115372767dee6105c7a08dee9ce32a2a9c8f29ea6ee2ca9aae594657fb4ac1d91304833117efcaf25721f0469b6c7f3fc4fee9e57eecee7f2aba56f85fd593c2594991e94c3edcba46792b19f30e05249bb30e2bfbef4acf05f2a42bb98ba539549d334f664940d6397d5453db90c5a2e2d9f79a76869f074f7f4a09512ebb4a185e6d0dbd8dece8b188d41e1493cd1ae058aaa1e7c4ca88b0c506b9db49d2ac64643116561d7c9ef2b661d0d342efabc0784afa3cae73d2528729bffa8f0485a3350af88cd3a068080811cf6bc3deb6a5993decbe7e77964f8274dd39f2ec8ab092d4af3d2dd8f3e55e6cce299ea87fc026e9628aee1ff9905f2af5b20df462ad7463b976caee6e1d102fab3f3f2c5c5222b944c779a8eaa7a90d4591cd85ca473e8c81f12efd53c1b8a70097408faa670f2bab48021f25b3b6a792921fceb2c7146663c06e8cb6d46e6d4acf94f381540c45ffd4c90fb097406f6fdf30f0b8774f2bfb30279cc5961acd9a93df59020b13e8bb78d451ef711c13a07140f0e1af22afc8c5cd902b314b88fd1effb2b633a1169d5433a21f7f7f9daaa9939715f302a5258fdcaf3c863905a7a10b1b1fad73f87c8397e58933f64e060876614a409dc98720e5c35e4c06fa1c3e79ced7925f4af9aaee715d0e53c14e573812627faf956569dad52d5456907069f47867e0a22ff74115aa2bc548276a35c6a4fe7109d39be9f5966fe2a92fd3622732e71cc25314bb4cf23303b67c03415c35d08a45c43f24588d9865b27aeca721902feda7af139e55c3937ba982b610e29d7d85e5f976537645c935b97961112aec653cab3a27cabad85f2aca951eb1f26dc16855ce9afd32de78a083a563c96af9472b1b68b7c91cc25db9e32a107c7228f146d453ba6642b86e5126c75e30976930bd68f1575a132eafba2d742cc9d4780ddf57de3f946a6e21c3f4ed34b7ddfc1fb2436f3241a063425fc743b275b33bbf1d01b82f9995a2abab62bb156a6500796249ebd9a9767fa2c3918ceac9dbdaff9168e9e8c74f7d65e44faa3e2539b58b623aae61bba3684413c8d1e23c24adcf37ddcc6bd86c87c0a462ae32c6e2e07ae737309d39822f57db2ed4ae05449b675ca785d5a0932616d207fb8da20cda8f7e93f4b7170cabb5ca2357029dce4b388c2e5a4f37ecb96289e7e5c07d47ef5811d463b7319f00c0f5bd51918700ffd6baff61e37e0d2c3b431e2bffe491a46fdf4db3cd3daeac163b54be47dec811ad7fcf31ea99f3e69cf7b9e86b1951ea6cdfde071876827d69ee718fd68e4fde967684046e901bab8edce7970461c3ff3d1f9e9a4f96dcecdfa963b9f90c90b3cc5104c660906042e950cf7554ad56a6bbb7123168cc6519b78742454b6281a88b3cbf7e460f7e4c7ae78647cbaffaf2e6990b6f50e044bccb89ab239dee26291e711a7b44cecb71f33e401754c82fe388d0ce6d425cce0c90fa90e80360d4913f6d0a2d220dfe55f3b331aea026d4b72e7168a02c92c4b3209e9542cf5924c695ed39f620ca702f3235f54d12095d712885a253340ee06b8de79047399b9f27f9bb2c461bfaf18b0f030c57c723a615e30907179209e874a33bbeb6225427cd639891a7b49e9a2ec4ca523dc7fb0bb549e47552f6c3d85f572141740e171e9906c0b077b646181686e7add05de4c0703a3c40bac04caa2fb5d77c1337c31e52af842540b75e47e655df5a49f82095cb4c3e34ef57212ab820fa809beceec67784a58d36bd981475c67c1988911cbc79f2248788d6c91f30bb7aa473c8e565a1d99896fcd553e077c5b9211640b4ee2aa39fddcdf3b8dafc50cf3ed57783dd47bbeb040aa9c2b9dd2014d02b2c9abd0d7505f86bc910c1e62e2f39dd3cbc838f6350734d0d1ed6d52c18c15de21f08406f1f349abd96ed9b54771d4406d94e610308ec815d040aad59dcf6e5536130f0629cba019099ad0844559a5269afe30a251168fff7e4a3af3b6cc199a2fa21719cd03e9e9cd631f8de6afee3276900f5e071f636765cf4e3f051362b76fb4071384bb8ed0d3d58a1e008172601b35ce0a331d3f3e7446d825296752e077dd27d72c4973278fc253303a7534703407ef14dc0b39d699e25d5c72826ae73802a00764c2d0fde44c89092a3f858ac57b7793b3a9f5a7bf63b7f76e91493c763fe78b1ca366565b725a40ba99f365cac3a885b80cdf1cbda28454c945905dc5e392e84d674f8d633332a767b637406d7ef8a0e5e3f2a878941011294e5938a8e66e44840f037c3d1bd2f1a41ad509fa1950d3599b71e09839172206c6b34f04d63b2736b9842a4a088e340742317f81e2e740e54ccfaf419a3714a4e8b850844efa09b5b7ec1642a66148bc8cf8314ba34a265cbfaa9afa6a95f41f714b633da0144a4ad3d5eb131e512a91298b453fe73dea59b99dd301590e593264e83d2116515d9d27b8dcbdb0f99e8aefd7ec375116dee7a8b2f7f7ce8739b0c30b91018b99db065f2fbbf9c4b9ba35cf6d0fd4605cf8e0919d2f20ac32d7acdd0629b83115fe935312c51961bf4d836b1ab2283faf6364c6f3fe291d23cefec592b87f511d65d9646b69897963da008f801178f8a161334e8608eeac7596d69bada5bfa5cc6ba4740c0ec3d86796c435553d5fcc0c62f26577e0ee8026411a47ffe5143807f1f1ed30befaf527e109422336dbcb88d35bb55637089848af3fa1d8896dfdc9d4aad49e287151e9732e5386cdf2ee89f7a34f31e6603c78caf5c7839b4010f18dc7ad55d249e4d1376af900057561e02ee185486af61aedd96a3dc30c596cca459d7699f424f358de5d0ac716f61bd67d8e392ec05e128f282e27d596743653be9d65d9be3b1c2610722ccd851cceb1f2b0bc7d7e08e853cf9b8ea721cde2043d9af3bea544058dd2e2d85edd69a1d7e05a44dcdda72c83c49465194b1ea36400dab997bc26ef1b4643cc7f7262ca44b4e16b9614294ab9c824d809d33f36aa2cadc15a9bb2a32ae5cd8657a67e64718e1d4056b10a3920ad3dac0383e4112a27a7e0045e23fabc1f4aabadf77f26690333118dc44935c7645de0a7aec653d77ba9d124afa24bbd91513877e49e9fb5f550cf064d634b55adfaba5ca0964b1fa38a9ccb155edc6855cd12e16639ef17a1329dcefb45741b465208679e5f5ec409e963f4d9e0334b7257af5fb9a1fa8c4b0b54739f5f4e4ad82528263ecb29c7d6c34b31e5619201e4a8ad071b2acad662080b0be0eb5078eec7cc4011a9f851abcb9deeeb666bff7ff3356bbef69f61c6f6a3679a33e3a404b175ece3819a4b551fca1d70bbf75f2ba2ce21de996724a952bbbc84eb87cbcb0a3a96e1d2a4944acd87a74692d980216954bc381a04c36922dc7467c9d454fc5672eda13319ba5b11567a66d24d12645a394d8c99f5184b93c35d2fb19ec63a3237d30822087238a52199d06cf46c04375b3e41b23bbff8828d4259456f08ca623209dcf7db0e9509cfcafcf91450407b99a20868ee91569a882ab79f47bc2440058bd046152e21d4614b1a7a3ed25a53b8b543234d7125613dbb1d326b882e934e8b2f3ea4217e201010c4e714272ca906f262c6b97d7e99303f7d292d25ea27355565161368ac5cb3790ef1fed0cc0c3ec9153fe59517806868901dbfecec330f5fd019e68bee3d487c426b0999ebd8bd3a366b313d31dc6d2012fe59384e61670dd59175909275c88fefb7c5087724640b0165d7e8bc1944e1639af9615be05d6b0600f39de5b0ccd329318ee47e2b7e41745879fa4fa8f729178fb2840ac7cdcf155d075a9c712d7c1564639a7ec25188ef414887dad989b44983f04e5bfed1498734c83b0c635ebc420e34a98fac900601b7e624bd1b5fc5613ae36c779ecb871785c3a24a83be04d1b05c8ec04d4b9324ec9bf6c2ee718e48c742788d2779e35cc5c1fae0829cc19c16e71288201bb120111eeb21a83e4b2634c99c57edaf9c3ee51f363ec385ad82b1d5e5c4d673f42542fc50e229efbaf3e99d75fb0d74b0ad486581ec1d1c1f752fdf76bbe8dbd5cacec9c391fdddc1ee9933fb340c1dd94f7f397c737c700a252c75603e22c7ae94ef6d3bdad08d13b28580ad423ee726c55b164d9473a292e0613ddb69b210faa596b25843e903f872eb08fbc53e4f74232888820c88a5a4b8ea269f79b7662cbfc51198c5cadd77c10511930f22a3437c6e7546872e6b09a48dc823db981543de9d5130951090218bcee8b0d073cb98a364041c017abeba20f5d23874e070181b4612323b4393612a20a2e70b0be48538bfb96ed0610661b5e44576c8ef5fc8563e4306a1389c2dbb2729f78a82f5efc07c9d221fde8f148fd04fad62e92bcdf9965ea658c2ce6ffa6fd630e8f0ac8c7e9df9f0f8e9e48c0ed3f38c0e2fca06a1d633ee705b66ec416b925c64fee64ed1589dcf56c94ccb0e2f2da1f52d06c30b126f1a026b14b18690a94b046729f1e22461e9248efc201aaadd37ef145a5ddedf932a7ea11120be25d01007e1503910fc6ca345fb9039e69ea34f6474b10e91e4621e58a9f61e285fb526eb38654ee684fb9008e55ecdf58fe9f4eaa78299903214a1be5fcdf72799b7648bca934517914b1b53552bf30a5ac671218cf9530664df4168a352c699730f2dd72e7cfda8848196e490621bddc917fc9065bb61f80fd026e1794cfce4dc4566fa2493f98741885ca24bb5a80bfad94eb66b6f9670b30288c4d2f2ee4dd754972396cf1394b3d00daa174516c6c29740a9a6b03dc67ec130c4de3449836b16de91493c9942e83514c6aae934f5d8240bae42f1542f0cc56a85808469cd58c7c4b8da94fceff968a0a862ffca13711c0de2649c160ec530f83eaa181f7341e450a7e6b272ae4049981f7870d9c5718a9d20593cdfb58ab2409930af10c5ad5cf41543ad1674ae3a31ebda701bd539893a766c2d32856ce92cb6f4bc756c469bceaf9db7b358ce1cf53899a6a40f4df48bcf2fe69f3bb7baacec6ef8f9677cc6eb1065c02111f0885721734d4dc95d322416ef92f338c6524de6a28917d61db1c6a365612284b85c952f73ccbaae9626b8a27ff2c6da929115ea398f84c1a2b58e99eb7aa689856e06f4a09904c47a51adce94b04d178f33152eb31d27ce5e2e3e0be99d52b7f85c4c2bac1b2e9bf773954bcc717a1d604cd43e27a2c7b0c19c69f192057d05f4a75cd5774383cc327c1c076118a4cc8b237c9b01359020ba8e3d33a658d1cc63980a2b0fa1e09c3db68222f1def54a280bc62c21814fe204bee369364f18313e436f79cf418eaac340ebd0453ba8d8dd84c50344de8b6d529135542c9700497c035bc1d9dd847593244eaaef3e1eed5d764f4e8e4f2ecfbaff3c9ba54c4e5976867daf3a43a563c79b743209efaa8ae2457ff37a71184fbb7e93af6dd06af1b2e907037184285c86a8eac058ecd60ba770965077aa680cca2744593ea4a338c94634f2bfb179902822ac4b4c6714d85387ae5153edc90e5f98861b9cbaf94967c292825db55343088673348b858630fffd40550f99baaa972c32f29c6d8b524aeb6a3aa5bd1216d4ad39f25ece77c5134480d0545a38ed8bdf96ce6c2f1e8fe34804c873df11e90652ee3b22eb610876fec0f404e2de155f9407ef7ae01c2610533c83a911ab835a8a52f5c788267779c152d59c13d3e508fd3930ecba34945a8e89f348540646c80fdb850787650d7ba6878599ed69e8002581e5cdc529661881cd1ef4282865013d2899252e38c27d692e61a416a61809cc188288ed25d6a8b2c37cb1bd0d3e7a652d2d87f64ee0060c24644fb6f350618eb068881ee9325a27654b6726b0a4e5b7c42ea28b43e9b996f1625627c88311c6f49f4e8d153ea82920538f8526894aad10d91b83d3cc78ae53acbd7c07fdbac3a7d0a9945cfb7ffd26f6bc768a867161fee240db588a015eedada5204be9e69daedd8413ae34ece3ab055e96be91967e3ce55d9c1cdf2823bc47231f0232fe6f065c3360e35f46212d9d04c850870df7f1f3c1ae5972f71f3211f989f2693331cbfd4318e6f6cf139a0ae319d520e834eaaa4ee3f45f983d4316eb72041bc6b1aad6d230617a6ce1f9ec6b455880120b5b55f30bfb7cec2af9b0b2f739b581f651644c6fd589791c44f67999aa3afbf9bed2c7a369c692711031f1c4264bd8783ab62ea8bfea1cf2147ee13c55b8a8b4508d26a258a78a69ca7c54677150c1b9df0c7f316ea4941d23ba22bb3c443cfdf030e7e388679110a709984acc8e078b97f598f385901f1716505657529d1edb4955cb052df18d6fecf11e52d686b793123b129a8b438527cb7c589a542b0bd8129c5ac2d7d65dc3b713938230cc37061ae5a40c9711c3294dfc675957bca1792d68795ef51c89f76d86a51b44b1de6ee1a11c435a4fe23470af3b558a45feb64ea5589c45beab70d9095ef4f0c115f62e0843e3885e1751ba79838f7a9e2da38467f17e94b1214baa00715cce26592158822cdcc08f1ff257de2db2257f2c6236d7390f6390c3bfc6b2b9bf07a0569f0a8e9ef7938fd4ea252f64f791c316b7ed774f854ec811f05fd8fd2cc6e396dd90e039122326c2c59521d2d07cc191a1c0572cb68c25ff8fc86125ea2ea5e5faffd97bf7f6b66d647ffcadc07b7e5f4b6e64d94eda6ed7adeac7499cd667737b72d9ee39ae1e0b966089b544aa0465c7ad7b5efbefc10cee00295292937477fb476391c000c4653098cb67964776cbbd53b0bc996465a5efda845c8586e1a502d56ab7de0d9b5c2fd1355206efd9eb2b67085e92a463224bd9ae8c6bb1762457ce6e476c5e60eadf19fd9008d12447a37896e2bb0a67d1333df43d741b28584a2fa6acdf6c59066413fe16c6a34fdec891119fa254cb135ae00561a09b1ff8312901ba274e5defacdf77e2fbe4ba74a5b11a1b05bfb5fe4ec1f2eaa08171b5364b87a82fd65e376b0975f8d63089bb3b6b9768cf323959f62a87c110a5adfdba4a6692989418487fb8f2be27fb428c5b6235b4cbfbc06dc4f7e490b3a30c23b53c396c72f68c4996826def9283ea59735dcf22de6df2547b2d388feb24b7c4474efaf3617b517676e6803685e7e5bd09aa460fa2ae8af218e3708e69d3bd2666a11b61f36c0451c9ca774822b902d7e076243318c0e870a2bd0bcc963d5547b48e2024337a4bd887a4303c87309a4f6f455becc37c9a0c93626ac39ef9be04cbf9ee1a7146eb6ab70232dae3cbb7398f59018c0bc2c52d2c8c75031c958aec59963bcab16759de8eabc1a2882d924480d6e22ea2481481c416cfe6702d6024cb47d640ff67f24a26cf9bba50b929e66f3555e6a5e2021b97a13fe15cad30bceed90f83a2bd8e2266ce20f457560bea6004f0ca31da974659fdef3d47a5b30463b3ca54c52bae3b5fea2853e7ea30c417d5a4b4839cfe2c0f6a545fee00185d7a0bdebb93a014a0d1cbd289a5c55ea146a96051349988f4adbf2e02291a9b56358426e0d4f3f6b37507f2420b45ecaba8ef8e6c022864111b0c2be2b3db78e6c7ac64878ed825d517968d6dce12ac58545ca8f8b93995f744f82312895f0f313d673c9b5ed78e5bfbc18b15b6e601fad12343ca8bd7b498b4c56f1f13c1bd3eed97874c976ac4e528592aea8abb8ff6ea94eba1c8fece6ea16378097af0a0bfd3afd0602169dd46af67f47692742d4cc7aac5659cfda591c70e06508c66c12d39cb93cb073264139f58224a39ca314d0d3691ac1d9565ee67196f46ca0ae18bcc3094d2abfad8953094610624d53a7b47ceac8d31013deed8dd2fd3d5e9580e7f4f69fe87517ecafbf748553d8cdc72adf6548515d92386051afe7849a7d30b08b1151cf262311edf12965e277996368debaf07a5ade74db1467be2064586f8caa28f75a6c88438c6a0172bbccb634ed95630ce3b3a26875019c320cb780ebf9dbd335d16ccc77b92a4c48934c400a237f4c6eaf9a18a7a94f5bc84468dcfbf6283600d2581f068ba8d9abdb262221117f0af8a4ab56217242065c2c91824b85c5c72533200ea8312a786e56b4747ea019d50a6c16e7f8faf579d8a09e565a2089baf0ccce284d63714443c40c255728dac985e448cd28f94bbe8922577034b60580650b9c6d494016efdfb4e8e85b155737a640c4b1088b3d29c24e91b9a8ed947c39af1c6d7ab83a655637d97527b2eba585e8ba5236d722fa9516b1e919e9d0710c8349cd3531c510d4a1335cf3bd82ce4fb1e4969915cb31749dab6cb6f6f6bac1955827eb04b6cc4810af080b9742dec54867344342e1dd4806a772b2b9788346844eedbcb97916d22e4c64618a5f6a70ed5e013da2050e3d49a2b34cfd58dd1302efce6138ec24002250c47a3355c031e3fdbefc7a232b262f2dc2d58524af9b8eb0a4e010835e01a004c1772a13566f4836eec34bd4cd2a4b82d8b1189dc96652722f18a3841fa5355c9d02ea83f44dc83634121c4a5f582ce9561b53228c473adb73fd4700b2734c694b1a9e0389a0f203db265ad81ed6d13cb42eeee888909397808a64ebb09f958c8d44e48873d0612373fbcf93b1fe40def7e3faa01f10cc89cb15405a1c83aea7575e488e897636f24df5983b5a1b09223df8150e51bde5838c9561b46e04887e1c06fcb5710e056645c85bac9c6e32abc151adb8df17093dd5d5536b06b8367222464eb05abce23a6be078b5b1f047f947c91bf156b7e1b59279e057ce0184b039ae221bae4e8be2e4772f9d8912b497acdf242bb47e3cfc7b7daf00dbf2dd59952ca83cb8f72603188dd11a4eed521ba37627ff9b8a0dc654496c172e338df2b28f72936618c704de0b83d9b5f1c8c3b82251103e20e10b8edcaf70bc18d12d93274564d0ce5e0952e39f7649e903d0211577c4ac36079ac6453f21c9e2b8c1c424692bd50822dd2a8b3f2b22be6583d8250f97ab60f6d8e40f042d790e2c807970815e4425ad85607c7a031a5bc8026772c6b8685956211b0b181309e1e01005457ec90fae6ebd324f55b3f61e24aaa0aa3d9a3a995976ea0be6fe95c076909833bad02047c9e5c6939481a9e5dedb181995b673c737a8bc07766dbab6c79d9bc4866c96f5063030ad8b5c71b455ecc79d754a9607fe966465e935b6b029e8237ebe73df264049284dcc10dc7fda9f1f15c6bc0451fd61ae9935f1774aa043779b271c12941c2b07231698a80d75a02e6fab9d82356c5f37d9f82fb1c1b595f6e4a3c24bbe4753032957a9e7aa0bd918c57f57174d59a04611c6d29c174d44fb62fa5739a332b0f58e3e50dabcab1cb9461197a08bb2ecc926fd18981210530178ec5505c8371b5580fb64a7698fb1c1b2f37398a7b35feb5bd2ddbd8527dae30345a03f494b1799d41b2aaa8115b257ba245c6ce9f080b478131231f98b31c60c2345130a458cbb4920910f0a84fd2b1a12aee7d0a265413b5e0428b8c5ca87dc09a44f3554acca57c41d7f2384a8daaca3a50ce51c85bc622833dcb724646aca0c9b4f2be68267e558e6168414ebda86b86095236bb1c1c3496dd45cbd990bae46f860f6974f00d3022d867eaa0aeda687abce2d0dfd9c52fa71eaeb4bc6b042a68bf18f012b7d4c52fef00df5953956a73f45890a8cf25f4654dd550b42634695f827473ef5c34e6230babf950be37f5acc6aaebc1fb6f83f17a75f18bd3aaae138e992caa1b8a174df85b3a63fec7e8e6eda3c014b5f3972bbf1b3f826ecb9408597f15649ff961ad10e78822f65878f049155dde52b5fc28d93a60c9b6adf7d46452b712b01b8f2558f8f090afb8510ef119e2487b247096ea922ac5846f5b00f8af5ebc3e7e7372fefaf8cdbbd3e3e70081efc316cbf5f7534ee773d0a8eb2958e28cd03a3fbfc14ae7e72d1f711d16aa4553addb329a38022ec9d0d66377142516fd3b12a69f5dfcf23ebd71bf4bd5569bb20b8cbc6d7c928248feac983854ec0f3bc2a9b38938624da365a817a29eeab6fd051da7279572e212ddb68a0ec30d1493dc4ab75ecd8fb13f044fc415f7cbea17b61774fed9df8c6774def8a436f0e3752fc463ff323ca3f3b5eec22f68713f705cf7892c6ca02621a96ca96e17de3ea5058dc41f185c4621bc29381710672b086fe89edb08f7582eaf623859618115c349007bac87c5deb02571c7ba6cccf1403b3160dcbdfd2acd9e18a1be47b64c439f044b3929714d1889c5617d6559c4b2f339dbdb50efec619f1ce15f077dbc07a3aa1c1eedf7fbe4906cb5e58fb294d28d6091eb0461977f91fddd08212dfbe61ff7d1e4db5e219e0f5521390275c72c12df6d5a6c948ebb62f496261bd16935dc632f924ba524af10f17de6ad744126e1b81a263fc790dc89c1111f359a6fe9a07ccfe3db563c99964ceb319191dce9c7ef5fbe7af3f4e4cdc9534cc01453521daaf8f6d506be5c25b40eb477c25f82d78e39b62ee888f049326b9ea0f49ea401742bd2ec785547ef53f9a5d130013f6114de755e507ec5461539a44ae541c889408b82e5a9cc1d2243dcb4f37fae3b040be394ff98f1e2893133eb3624996ec178d12eb2b7b0dc559f569ff6376c7cf2e1f317057336661f9a4b83f8759bb0906007d6920bdfda71889fe93873d65c39665218ad2c727378b0fad01a6dc4673fc285e82a912e960d47da52ba341bf0446234e3a3ae92718434b05568a2901f2c58fdfd95a745b962351b744482ee9d7793114b8ba49079262d331d381341026a83e257cf6ba9b09ca7968fb7e72fa9c77a6f8f3ccdd256417891e54c06aa41aa8581925d929450c1fd132a7172e875968c0825ff7dfa8e5c2c200eec2dbda47942fed6b5e8be658c4c8a62ce0ff7f62e1663debd61175749d1cdf2f11e9f6437e7178b7177384e8e9251efe0abaff71f7d596a15b03340686356490a8865b9106b85d0a9f92a2310f40545b7684fdc848b522e83ab17e33ad737bc14c2b64c4a75d017d29555b222c9a43a551d5a2b9fa3571001ec46a91439a305e1739a731d1e403919b1943701706de4ccb54210ecd26d6085bc86d2d2eb3c2b3231b15175b80a2401f9c6a653262bc5dde1c50a6fab2b56105c1428e0974588a930a5ad1ee484e745be181659deaac0b5b302cbc87d7ac45e3981e3ff8a2b494794954adeb516922153b694e4da04b13b58a5356230fc45177130c58b24dcfbbda584710bb2077777646bd99a0cdcc23fc5ea9bfeab060a4f1920a0af1f25fcbc5e94f077eb4509cf6cddfc670d9dba895c0261f4d90cad47f5d0205fd0b983791a0972aa88d9b1f2034367406eb6e1518f64809779a6a5e7c3e6f8aba0b1aa44b53f939ac87e80f81dd6beb77c9633149f3e723acb7213c4c6b3582af9309ac4d29838206bf60bf5d34a68699f5cbe3a5f1c0607e20030fae2fdbeafa495d324071a81289f6090d0c594b59daa42c0751e1cf4ab44da3af935b58540e5321487542dfbc606b26ece5c31be6c9549e56b9375b622ba923982b40ade39b43ed672d4171b0c40509df124a5842b182479b50f568faed864c91974a51dabe955d799f42f50f68cb10f3c15752f293158386ff40c1d9189834f800372b85905fe26563bcbc725513f3ae920eeb2354dc123c68b24954dfb915ce58c58fe595643831fe4430cc1c4c831f197f83eff2c58ddaa0be314449ad7771c94dfa11c8fd391d88b492ee91a796f982dd282e5739a17cb6f2c2f44e58019aab158ee831cf0d9c88e8c6d318559a95ab4d27adbd6afe036a22f517116d0c8db467fbfe3f7a87a04b28819085d7899bf4d89dd3065378a57589eab47b60590d34b07c04e7cbf670d240f48ab556612f462beed1e806955f7c0e63f818dceeaa86abacad68879cc61643099b9d5fb8e2616bfdd7564d6f895bdb45f20eb59c1471b36cd3db967e386fc1c795d0c7627b3e219401610bdbf0f360984a34ed6f0a64688704d468b4bf2f364b575588d1ea86af6eb492051eee17046e37da1ca5a1df0ca8ab698cccf32bcea0af1c61699ec2340967593b154720555239091ca545d35986789fb44138669dab372aac6b966e03f8de5030931f1fcdbf5187a9e31e8514d7a640b6bd86ed8e575c05ae65492aed958df32a685e26e19a3f78f5bed0f0d748d6774c423c7f2f58f1ecd4e93aa502c078245ec7972c58cda7439d96136bff57a51de82f8a430636b793e5dbf2d718ff326c94deb18693336788d1b8dcc6c45c3e5a375d6af914722e1afa734497db90bd78289472e13c8e2731e5b3b8a52ad892e32bb574b27dbd1bedb1f6063322f6f354993e28998017f349ab891554c7699b77694c178794cf014d5f140e968a58c26c8efb9c5efe3529c3ea4b45c6973deaa0bc4b75e6367ad119bb282b5fa91e1b4218b1a499a8dafb16931d9a071a03cc552093c85c6ed73052b404ac6ce8aca784cd68094488b89ae27beaf667ebb97c5448163a535d3d9d9cbb43c9b7b6c4253f2a04752f21da02ee94473fb216e302ca576dad1aeab328eeb2cedaf8f707dde8550e6c796630d4e09244cfca4e687b3bea476d697c025677d6392e00e520e5c3e789617e422b2ba4c6df8582e2f0b79a17e8b91d0a4eaa24e831e3003649d7aa68c5738d2517306efc8be94da35f4c230df6c61bae9875d0d826eca1d9233ed6c63e3be8d59a19d6076765c90136d398919611a193e00982b17bd4968b4cb36bd120c3bb5194a33e5ff1151393a145aaa0bad43dd1b47a46cc150b70e89b4d0b82fa1c1968454b39aadb0d188817b9be5c5e35b8d86e6eb54433ba3ae2d8da22fa40e310896c3c5b281f409f36478551bb5482bd9713d5d262c5f53ad59ebce2eb62e00f4ba5129f8a8c888f886d8aef5339ca86debb556b6615f27c32b47011dc985a1ca3dbe754b463689979241938828bad79d5735b18fef2559fa479ac655327986c9ce36ba1ac2592e4be2b92c0b21e24d47228434e3fdfd8f1592094aac2ba01e078f542090d18421c11538c8178a48562e6f054ec70a03fa1845da8a24ef5bc3d5a55a35ea1b1f3564cd4a58df9bc9ed526e4da4c321e33ccbeb5b14d5f78142cde32b0decc4656b404ecaca47ca623a3d9e4e97311f4d6d757797e81d63968d92cb320cbc3f945ef39d81b181abc52cbb8e287eff04a0ce756f37af71569c04de75f19b47ecc3ab4b1fbe19f1f7e095046fb69eb8600c4b98a1545547b8a104dd55d9aaedeb9604f155f83adce38530b3b64a4c962a855488499e76f375a1931b461f02a2609ecd4ea379970cbfc6ee6f0610d8d4963d6cdb3d90d3edc1fb764c2f5dc05bf23dd9f5d3cc2ae05a88f19498cc3e84ed7c9a0c19ba4a624b16fd83ca083fbbaa9c91b2ba1527cc5a19d081c59565060ce5661852c6499693219d170b719248f04bc177466abbdf2f03442d0bdca2657fb4b685c12558f522ca1137c27f0a3561b2d54a358b58c358ac6b14242e07a1bc50cb5616d92507a1dc84ef22d1cc89bde6193f9309810339c8f87e9926efee6475b1c8e739bb4eb2058f0071a857aa99a80218b53cf03ed4c146167c12df28519d37b22bcedcc12fd7daded39ec9693aca66f13da3130b6b5a97d38c16493ade9d67495ac85414abe402996637d2ef18ffbac816e9a85c05b998cf6571fccb2faeb781aae060d9c227cace2edd116fa0741bbad5c1e642390e3bfd403ac73f9b6659dec6bf65f51df20569635f7775e983d5834673ccc92251bbe1974a836aeb8735b50da46bb9b7d42b413b6ceefafe25e930977ae29c8c98fa11d3229a94fbe2b08121e993b7e2127279abfca0d331660ccd215170919129bbac9b9803fa2e3ec45fea15cb67ccac842c1df83e3c0ba17b0dafa426c90bfef58425d3765b8cee2ececb0ed9236d18c3bb3bb1c23a64bf24d40225aea94e0751871d4b0769dd7b5b2d6e794d434f5c2b4a5e90073df8f80a7fc6f55ca67336677493f113ea3689ffcab58f6281387b456bcbcc24323b8f58fac94c5d6344454ca708d4626b2f96890f2bb2915fad74ed41f936960ecd257a21b45abe91447ee5dd1d183f0ef08fefc98be37f9ebf3d7e76727efaf2ddc90f276f62d755670ac561b7b7479eb36b96d3318669b20ff32c656991e0d45ddc12feeb82427b743acef2a498ccd05f8a5c525eb0dc1b693f4493a5dd9be42a99b35142214653fcda3b715a39bfb83dd7ad448235cde78f32df9f2f25ff8f3c8c4606e1821634cb40e452bd63e59940f6c8c35081e3e78e90c35f425e0dacdca7a94d6f43fb8807bbe89a4e134449ced7d951e68e7d1973b3024075801ae0d2c6c520b96056becdce80b7f404152980ee1ef4ad630a72e9cb6f9348f616e9663aa0daaa9f378c1712175e32655f62e0cca496ccae59eed7e8e850de1dd452839bd0caf202a7e269133ffe06a642245ec3e42b252f5f6d52368a6f816e3b6ab2b2655d590e2fdf76f13587eb6df21bfb9826d7601c979c28f64db07c0ee2528c350fcb8598b77a381c0ba37fa0a88c4de144f866373e595c5e4ed95b36bdb4d5354fa674366fa71db2df716cf86b4c24db5c36e64a95657dcd332f897b89446a468b367636858e40a6fd921040dfe61264762e5d179e5a5a2a2c4bf0d76a8718e3ab9898d83c437a9569278afd165556b818708c170aad13fbe949ceb280959173a9721181cbfcecea7ddfa1d2f2f30ad584a0a390ba0ef31d71d0514505bb0a4868dfbadfd8c09d557a3771998d6bb31efe11afb823f30587daf7c68c9ab859f745a9b33e39440b9da1fc4789a486ae5be8b5859f52111fa057406cf8c25b8db39e1bb230ce8aa7b4a07185cc242bc834cbe6689cb1af04eb4b629c67c344087c33565040dff3520519ce35525094aa683da96a20da8b3219b148257f9131a05b82f40b3a27475a2e228796f90c2527d1b6b596641d7015b40ac412fca8c9f9b6f1ec2829eea3cf50d97164a53e33d7569dc45da1e3ac3e45de04a9ef179384db59d93dabe70a3b174a742e0d59b8a5badfead8aca235ccd2cb64bc80e8c9d621f8175b1cb3c5d2c58ca997e0c86abf55ee42001a41537551b6796eeb264f0a8bb8dee33b2b2e98f3ae147dee4b1447ea4dbce3b046d43f8e04073e16ae14c96dd96e9322f934195ad2b8053b85dec220986fc432032d2dbd70eec72e9915b5583aead9326d5fab452395ab260dbad7c463f6ada8a0c4ec68b2e93a0253854f2d8ec17764dfc7b6cf0b4110fff89e68a7c77d72a87e3cf05485d6e12986a607ffb7aa6a65234bfd081751d2ef8378f6400972b146f4e7a94e8a1ad8434ba74abefffe7bcbeb573feb590f1d8dda12d56aa5382855ac5a976ae59855c355256caca7fae1d9ac2c3de2e7867b52c3d1ac12f8a402b686a6b7da357d4e39675cdee2548b8040b82a80cddb6ce6dea3cbdcd33c556a3d78934419ff2b004e488f043e6361bdd05977cb57ee06b2d4d6d6baeb2f2fd808247a6dddc267cfd585466a263541153d4b28b948529adf12ce683e9c582cd24d9353e8e8055a482da7c429d234f9245b4c47e44214e4989835498b4cd34b5274ee45648a242d6822ce236e39acaf7314d91eeb95b8f271b501137fd1a22a8bda59ce8a1f93f18471cb3ea6edbb3044137c4d7e5dd0697299c0108cd887ba56d6f8084746d6ec227b886bec22bd521c6fa90e319fe63b2e643781ef8ef84aedca60b27c8aa28755675e00a4886300a86326eb994e2a06cd7cd7233f1e3f7f76fee2f89fe7c76fde1cffcff9f393973fbcfbd1d9a1cafa96dd90efa05ae4023f4bc4d1288a3c40cae27c3a08d282581e477888cc92919f661ba0c055b9ad9e51596c25fcededec229b9aecd580a86646971c9916beebe9a4e4e61989a0358bff701ec4473c2007355c23e41ccd9251adabbcf2d84ec6d123dff3fc976be8f1adb78ad4d5c5594f1b606b8f6fcb18dbe35bc38074f6edec8a713ba3b6388aed34818c0e6361540ab26d61b11b0c10070e95d3f44a5c463d2f49ae4f4fc011c85263e4f9561e303b9f255f5b96a3bb96ffe7bf26730c17b6f6252d619452ef5612c6d39091ee7b6cb4e3f2b2e9297f495f2a75a649c4182926e8f52cde2a1a088b21cf02bda1645fd761643a947caff18d6caa31e565354b360cd9b6f4b60d77de01a3ef726fd0b661d2d154554f75771d86ad7b1cab2347cdb4161b3859f60dbb9cb20fc935f32b68efd248a570bcf5711128a7d574474e34ce8ae7b0a8ace34565cfd2fd0a316c34d5f725aa644dd7fb42ef24534dc9218ea0e598fefbc8cb958d38131736baa527a9aa491cd8d51b35ad9476413611ef84a9aec6a9ba4741c878e4548f4d783d79a2ccd702dd990555af5f65e246ac5b5151a3c2d752ba6325695bd4ec1023da9dbe7c7af2cf350586f769f2ab272d884756cc86b9b16cf6aa1e558c951ed7eb06602cd3518e16f3295ebc2f73c66a46f2bed5e3a53d6a1bc19246355fbe275d3c20208e665c37d0409dc096e26773b104688455aed15becd7b6891de08ca5beb48ecc19022c54c16fc34f3d5343f1e041df394ef7a50810d9b9655b6a3d054291bd0479cbf75f62295fe48c0cb33c6743db2f36956169e05b8f0a840e99b00f74c486c98c4e3b24cb49362ce854d9533ccca6e53b2a2ecdcef36cc878347d5a4c64ace9aefc4e7e7f34b54ed9a5b5711e024fb88ad57f79fcb2e2f6f5c026bfc2246b9b9be7ea89692984849370a3223221646c362f6ee544deeb14c6fc376bba6d6abfb048ce8b930f494118cda7b7c0e9e587d8c92da43a8ca643714b812c183c9b31c2d2eb24cf52c7e127be2890e82a8bc2ce17518503a3e649ce4b23f417dbf14b279aec3803b703be726bac5d0e05b465f3c87b80311e9ac9c69b72ec0138b84eaf1c6e07e3be0fcaa303b267e662f7f4e5b3d397a7effe871c91d6ee7e4b272e5b75e72c5cf1e1cf2d367c84b8cdb5249098ecb12c823394439274385d8c0c92c8a9fcdd5058b1209d3c33b923afc4023bf592b3b751f4332a91a3ca3ee4a7c4b6cd996b87fca6ef7be4f9f19b1f4ea45cfdf6f47f4f029189b3c2158540fb70885e6fe0a686f18d8128c45911473101cf0e895fc68a9dd24b47adcf1dd2e184fd48b91d1181430bc8afac78220ab477fc5108835cad4f04ef26df2063fa962d0a961f7e4aa1d39057c0777a33dedd590a1f2123aacbde7e04df4f8ef0f6765c2b5122b02ac95cfc1daaf08991c775612fd4855821b267ba50bfaa6d1ca5b448d205c309f050f2feb07f4652629620ebe0f46322125bbd524acbce5c12023ad8987372910671c44ef07079d8b04ca379afddbdafabc222fd94dec136b08aa80fbd6968a7765c8b134e10a56ed430a71d469dba18ee7a3eeb79dcea84c5739ab3b40cabc24f7c805cfaee4ef65ba5e5452fd829e505a266ac9efd6e311fd162a52c19f7e9008ebdaa9263b0441eb8fccdf36cb418a2051bcb4804e1cfda4bfc3df4d47314979f58e22a6edbe8021f7359b51d0546d97128aeb47066ac9864234ea6c91513ab689467f39fc459a1557105bd62f844d3fb980275093ee3daae31811d2ce14ff36c6e6c606224e6e246a4234f9294178c62682fbd92d6b1d9c78fcb6dec1407d3a784733d5e1d829f5c1e9f5b43d096824734467637827bd0b64bca8cee269cd612d9b6b72db71d475053de3b28e5ee90dfc3b3123f4c22c2382e8176f3fbe450d10a7a451e9003edb9a7d27c9452b2abec77e2a3e1401c34e4ee37399dcf598ef969a41e28778265e14e935d6a6a52330281a684b35f172cc535436159702258a2e0ac29d21e29bb6c87dc4c58cec0d6aea9f105004225d74cd61707b0d8fdd3848d640fac7464fa1c40988955554fa66f257c5f710df949c7f25f7178e0e7630432cfa6d7ccfb5a9f6269141fd6f62b94ee346ba294b64676af2c20d9575b0b91532775e5054d872cbb24cfe96fb79278dcc74d8a9540ad5d95460796ef1b26ced6b6ec9aed59a720d368cc9f0e0960582804a1420cab24d32d26001b2d77e66b21e09e21b9bea2d7a5f998dbd0441d25556fe4f4fa90e5620187c793261639a63aa498d00230cfe680d46cf24d4ac4e6885ea7d991c6cd9916a5f667d412e941f24c04655be39f598eacb31ec4977bf6f0b8639a2cf49d17b3ae804a9423b5ab9fe267fb7d2f999e9fca7349eebe753c9eedd851d99da802222b26a736d4ae79ab5bd145a20d116dce5661724924442e74c11683f534b9944954daeeebbb3b95495cf65dd1ef974cea0a903e7ab62029d19416054b355b3ad8a96e28ca3f125e716ffa2d99a3b4af0e568c8ee34a61bfe0e2101de0d3674e88506d26206e441ec6680cafb60218d04b5a58b5e54d4f63816ec9380d696c0a91f47fd558b6e18b0da69fe95353545241a7c49d4ae698af84eb5b0fbc54fb87c96256a3472efe5d347709b1be5baf60f8222dcb5e97e2ebd754fb3ca1bce0daa90e73d4a3e10fb94c724992a2c5499a15e66883f3d29bd386c2990558e49f65eec971175b5343ca0beccb6eac2fb1f525aaf839487ca3a19bcc3d2c6874af67157a96604807ca3f76e00e678891710f8318062ac2e0d582e7102575468d92c12acfd86f0d97976abfd63a442d4bb80ab3b44912f1bae3e5e792c215d58f651d873467a4760c1a0cb7abc25c6e12d33a44790988e620af30222fb341eb95fe7776ebb77144cee089604aa8a87b97415f0ad7d85e99e76da0a05d06844e13aad2b70d694a2e009d694a87ca77dada1f17b764968d16533391b228c6174d17e324ad752114cbd25afc15e7ddcae03a6b82e0401a01ca0b3148526e127f468264e5de30deea54ea70f4b6606cd42845dd0a06e83268bb8f19ce095bc90d390d636f45a17a619c65f19a58c2c454ba195e83c04a67476de1a86c6f633466cfdc227088239a20ab7f95f0e0207e12a9cb2134cf1698c98e8ca7d9059d92b3c170ca68fe2e99b16c510cfa6d85fa351ba5dd24dbb3df36094dc079d4e770822085453263b9f891e5f0b7b8319b24d9852e5164041a2edd0256af488f0c8b0f4fec27777776328d5178fee45956746d22a25445c4f9133073734265e266482e700169bf9a48e69828ec0f823551c9807fc207db87545c59cc98a52ca688e3eed7d37b41b5e66c065178245bad3e4caccc66581c74b78ccd8303c57b682e55d80aecbdb87ac8d950b27895404da7d36cf83ee5f49289cd617eb58dd254b050490a8007f2c5b0c872ebe68c347591b9ca4cd238bf7c645520bf7ddc78651c9b6a92c33e366b049940f94a71b95fc5b4db84964fbe45ad6d75a94ca7a8f5338fc3c1b79f5fdc16ecb93719a2eefb242dbe41d944ce07e08a78afec8e6c64c246b4a0ff48d8cd2a464c5517d3b5d282926bf1eb3e3673f44283b3aa1b5e3ea54f6587dbaae7913d0dd023b8d67af22d390a5784a2d0bd90abe290788ffcd901372f55c45e1d8abd98fab7057b7579c959e13d74d74dcd19ced9987d98af32bf58136657fe59b5fb2aa6086b2f9f9f376c7cf261dec6e2551b4d12b447513e52e94d73f66c4ac7bccb3eb0a122686f18d0dcdb605cb2be7eb481cd25466080ae9d83e6577f9ddb1823a0407ac43fcddd6a95c970882c9f13e9cccafd881cc795158c2faf2ec911515921edc712df1f29ecd89859359770a1937daeb28c4d6d14c22065ac16de3f26abb29a5e3ef0568653f305ab332c43c36259c1c318d3b20ac5d8964dc3625cd6e3e952b68579ceb8e5480f61c4c584cd489212ca872c1d411ef286d007715586ccab168d0b86dc6aa8c280bf2a2a55c65318a406c8053104f38f155d5dbd00b0ad63f5dd5adde0658a93217cd2d131cc232715aa766ca7295e16d859331c5616b4a33a3d608258f1b2f8d96fdd4e7b01a9381575a351b174dd5054531ad3ea458a879dc6a10e239f9c48483bf4117edb23a0711cbe973d409f55fbbd1f6719466256b4a7c8a9974b88ddddc9eed528a21fc55d9b0faa2228b79c4ef923e28f188ed0776684c2f74e8fbd15a95b88b6a7c8a9974b88e958d61a45968cd0ee413dffd3fd7296f99e8b7becad93bcd5302932932923951235c1dc2ed4b0339ac2a06a82341d110e587486f7868cf6f4920c30ede480249c2c40f30500051d711f550c5c7441823144d83779255abe490c5cde1798c84d9cae0af926bb243fff65c4f8f0e7bf00db147f6a2ae4e7bf50fdc690373c57d3cd2e31268fcf332cd338baaed265b3f424d1b5bce3a44655297a38196fad9cb51a1848a6ba853100988eaabc87cd8ea83aae97f59293d6323d6617bf3c31c961a5641a4dd09a1513bba4682a5e50ab552cda31dd0a76535b35f167e8f950d77aa96f29c1096ef5435b22adaf5180bcc19112f5803750bcdff79c4f88b81ac4b22604ac599ebab0161445d9a56f230c4c7ee617a42dabf4484b6cd0163922bb07e4b02cff16d9db23cf920f0c5c7e06201dfe9758850372b1180b562196e57fbf252c1d2729236c76c146236422c7a3ec82818d412cd4244bb9a2bab787de4443bae08c93a4e88094909321cb01386b98e4c3c50cfdba78473a3a5f27237450e374a64443e3b52488aa5d805eb9b0d6065d2735c43829268b8bee309bedfd42f9e48aa594ef41db7c98e56c6fbe984ef70e1e7ef9578b6a243b847a679502070a3ae5990c2c16f7219b3b2729f9c737d031642b38603631a7a3178b31ef0e2779364b1633486231dfbbfe662fe17cc1f81ef6e42819f5feb65f9dbdc2f1b0efe20adc95db30b16ecd55f73a651087394be4fd289bd97914e6342f123a9ddee27cc39d49e68230270698b826d9548c76078642ceaa551a516d28e1493a9e32dbc96c8d7cf663ed1ee2b556ea5422bf47b9a4a9cec1426473968ec49fc524e3866a292df9c588baab080fecd1d0f9d23c12dcbdd53e59e479c246e6622b27416630a164880542835c034735a4191da4b23325e3ec381ff3b618e88e1eba0ed153adbb1ea40718f3d3f801235e3d3796ab71d46f4536a0cbc9df51147776599434255e3d3728f0d8fba8569fa663f63cccbb64f575d7edd3f2544bbae90736f91d2f50f37daaa6b647b6f468c64e3bf39ddf591f168313d525fbd6675b4f63e60fdd8c99b9efdc2fdef193e5d89d07c73853d18c5b3499ce99247ca6ebf4fb7231588f96c8e5b2c7d6d8c6f357e9ef46bc0ab791070fd6c3574db81572a11c71ad9d3320ecc390cd0be4b085c3722c46ab290a1e4c9369968bbd2ea4bff3ae9c404cf9f6a979249dff87454659244ccf27e39325241a705108c4292103ef3e111fb5293eb07bb23a23b51995cd9923bcc330a30af6e419913350bacaf2a75e7e51dd096bbcbf733e2bd20b49f18135490e67b71e57b27667b1dc2377d7fd556cde6e38c2e96d26bc560cf0936c9e48fc66a9fc80c40d6086424f46dad470213906d2705d8d86d95cf92343c853290f3c832abdb37ebf9c40dc336b85ccbe26bfb632bff9e99eebf81d635ddfa5087b7e77a7737dbba1004d6301ecb036dda67fd36d9cf3562e0257d9e62c025fa3525fef642d035b7934bfb59bab5c0bd5aef08adc52c7cedeef7ff8be9d7e376289f41a470a0fc5608e1a78ccd75457cd6f9571522e52e930af1457d1486158b8fc25bb112cde4b1c25c741ac4d1da0fefb1f0df34459cef62be89b30af93eddfee1952ea255a62c302920c75d486c01f90a0480d0fbe294fc0543bfd92d525abb52aa3014c8047e58272766c255552dd2c4daa148363a48d0894b387651998247fc86e94c1fce33008d5569c3bd4dcde8a48fcb458792fa21186ebcd18786bcba18decdb312bdcda3b3e6244f514d074449274c2f2a4d0fe10ff991039a4a7e97a53a2ebd79a14edeca1bba2e24ac779b6983f6e24375999a95811c3b71012221d0e17b3c5146c1dcb03bbce92341102af39b3ecfa7262ac32cd5cdde9789cb3319a5d6ac596c0701deb5a6dfcce8edd8370ba8c2fb09dd8230a05244e0cf0edefa9801e27159374c8361d90aed9e681673db707ab67f71202f8f5aff68e9f48cfeabad36bf5c163569c2a6028139bf870a7633769f9dcaeb404f174586d0562ddc81a5c1a0f58b15c14cd268b45d669abca7114149d1e18178a7be6f3608d94483581301fbdb0135b12d1cefedf930372a4aa9d99d4984e989f47077272d9241e5a241e9605083aadab61e96a1a8fc8f6b68ad0b28b7a615a3a7fbd2b38564947d8dded6d9270b5789f80679cecf1be96bff8d941bf839fe7c363c5c6ee3bf2881c59e1168756a96fa36267a98f861664dd34aaf168e80ae15402a5e149a8978391511d45ca255167866fbe54d3e3ad48934e28c0e2d1df14fdbc920cb0b58ea8814a903420596e7ea1927495b844b3d3191d4ea2d1c376b22a42adec49f70c8153ce8420aabb01037aacb24aa96f8c63df343fab10245267f692de5e71871b53aed237c90a6275720a4669aaef89f7b4ac1d27e4c39ace289f5c02f5e3972e3017a5d9bc6eb2ad6003d7c5050a5d0f9ca3f762ca7c9c20f57c072e828013176ced8b9cd1ab269b363289b5ce7567c5a27ddbc330b9ccf2d354a36f5d66f9ab9b46c7fe67bcf59e6579bbd67e530cd6485357ec967bf0014b4eff7005cae3c32b870aa99e6ea1a4d8322589c99c1233c5850a92e83692cb3d762685cbdc528bdccb12f7cfa546622b98fb6e723a5779753136f53abb622429306c582ca56c2e8ad329191493841b88b98b44bad75de29be37cbc9aec1b8d0e161d2b8f77bd488a19e557181328ffbe84000ef06319e082fe29a7f341a9078de3c67d26bfa02fd3138b2f75bed0cd3c5c6bff2920ab265b30494732c7b0fcac0e913d0b948ca22ce9e9cfdf263fbd397e7dfef8f4e5d3f367cf8f7f7036c713bc516123e20734627379dd1119fcda0e2f7a80d53c493808bce25f405ccdb2423fb0d0b0540ced11b67d68a7b5b6194a2a01aae4f71ca9cf2587f057c79839ab2038646b2b5ddba6d90dcb9f25396fa4bc51f09a7836bca43354e0a4e20f15cba3b2020c0523c68200b8c9a35101e50b69d890913f118c5c7c50dbf4ae8a9707b9af89ca2dd1231a904016f2f4c5bcc8a52287f4c884f2f76932cc464c933cd2f006d2e0239fc7af5a10ac3cc921ffada67b64fd38db378809dde184e6c7457bdfef5391d3648abd77c898a875f3b8430e76babf6449da6eb5760c690cc23d88e41c1d4ef23333aafdf60e79a01b5c537f30a433361573b71a1b1dd2e9f4820eaf42534936bb00f7483a9c909b2c1f355c7dd96c9ea187649335a86bb555c71a2ec108189ee83c6f8fd8c522cf5595ae44af68e7ec789ef10e69b5007555360abfd7392125c82d78222afe062782e06b0392b331cd4753c6b98ded783361e06729ce516ad218520e167174ad1fa4ec6640d88779ce38074fc61c3cf445cff1ca089c71b5c5004c17c1e4740856e458bd9f530c0e98272e605c30e37e428ef79c8941e1374921aeccbca0052292885e67f9150a24c329e5dcfe283cf11d4a93a2981feeedb1e18cee2669c1f294a204039eacf0f8e1d70ff7fedadddffb2fce86bbe2091fe6c9bcd855dddb45c98aef8ac9d81507913a8676f579344d78e1b45beaaa6bfc68d0af00eb3b12247e36695b4e34be22471c02fb87aec46885ddc1a0ef786229543a5852093c1df6fbd1ba0febd5eda0bbc4419cc8a38644e41f0fe3d4be5c959afce3519cec576b93957f7c19a7fff5e6e8cb3fbe8a37f4d77b6848fef175bf525121f6c963293323da0e3255e005dd799e1559713b67febd4dbb53413114072d52d8f6ceb7628bbd4866c950ba806b16d0e264801f3920176c42af932cef3a3bd3f66d67fcabae74c44fb2bdfffa70f0a8fbb0fb30eec7ee0d61c2e5355505591ca9be1fdadfbec9fb184be1823c5ce4f9ad9dace94f75bf5254699e140a0b49fcf5f1ee554fc4f8f9172be88477addac445c9c23c521e9a51759d3c101cffa4128d5eb4beeda0da236356fc087fb765c7a23abc249a5904367762391162b743179160cb2bdf59c7b6b0bd4d2493812ba2dd4ff5ca36d8f865742e1978881fa5fdfb4d399b152972beff686053d1bdf427dfdae638f990202c5c34f8f2c7db8b3c1975d41ae85addea58e627829dd62eb6d61ba790d80cbbc4c7dc890cf7bddcc191e35ea61d73e3ded4657b70debd4cd2118ab3f8f773cad7357f0832e09519b58188b7f288d0dafed26cd815b872824c0316f30c543776cfea9a2b2cb8ffcb3c9b9d0618c0a0efa9adad6f609ad0840bc69085682bb9d5a947aeadcc36a2804ab6b427c4cafcd0331f6f92065c317f0b9ab3b69632d5559656ed1c6d1bb16768f93484bb45c65192dd03956d0a0c1a260395a16980672b10686b090962ef4cb31bbd8fa6d9cdea76c48f647e109d6cb481a6d94da5ed614a0bcfef40fc157a1be8f3175e579bcae2076bce72f62be991e7d988f2c94f8ac92b01b65b4cf245b0e7625d579fc9bb39bb6639b781ddbc455a79405b8e3640aedc302e3d11a0f096ed83106cb4629267373053ef6ee7ec24cfb3bcfdecfdcb27e7276fdebc7a73feeee49fef2ab36489d6e4486d6f932d75d86c6f0b3e2296c54b3a63283e8137842c1076447c9caa8d784dceb8b7cffa1dc81158cf64af66d61c7ef844650a59c135213ef2e1ec8016b8177ebeb7bc086290f5ac3ad6f0902341e0292da81cbb3217119c0120053e22cfe96f89e045f00800f4b7b7a1a5b383be68a10df681e337ff03e6017287f68227efdf784f5e1fbf79777afcdc79f6e6e4f8cd0ff004a86e01d92ffbca0b4635f43768e820986133bbf2af337b8c547ffbf2ee27cb209899bcae5bf31ef1cbb55b80a4178a05f4c881373838a647ba236a0efae054a6e439b1c1b5e4bf7ccd552bb7e2ea9f6051989487203a47e6dada62969ec8faca52ac6212486f42644d15ea76909324f842f710dd0f3aafeff01a8bd5de2dd6a55e8a97d164e075f7a3d59cd30ae08661233e4665e483caa00efe68e8e7d3c8a0dac498aaa3f46c18030c5d5f431fa013c3856a01edea8066ac3f8115d60b6252e166fd0691f3a4c834bd7250e9a02979a7ebaf10351af657ca60b54359ad0e67cdfb6cb536707ad0b0f7341fbfcebcb1d670d35c5941abbba601ac697edbb75443433aaf9a70ab5a5238153f9e4e09750025d6fa6884ad33d8fab9fc85a329febd8daba604dddbd0e0af0e742fd6b489770096fe3b8b50870a7f3f8936f14407b39a4aed12a1029fbc39fde1c777284678b49e4d9379d8fab3e7a7af4b9d194caf3d5fd6cf527777dfca38999b3888e0561fb64c59189ce872753ec9162902142dd2a2962e2ee8965af691ef94c8470d303cea3414bb8585adc5c2e1a33b7379e381fa11462d963b5a6e99ed6d52a98994a1783f6aed6a1365e8c6149956b638d19ce9508c5bd55360ba26a232a71f772d82d2d3deed161190dffba16a731a412508e6033f22be507206505572a465c9303c10a715b89799d3ef832b10f462a90a40251cb94509ffb64cfe75847f51b08a60536db17ff74da5618edcdd39ac352dfd0cdfb52b62cbd312f6463db992f49ae5c5270f022b32a5450d88a94c974a5dd830a2073fb09923cea9aca383bf4cf79af8f7463316506ec8eb888ba0199346bee3c43bafe28c834943c58b192d266c468b6448a7249bcbf4c19034f5266b0edb68061d69659174d72a632938c596e62bd6b2e9885dd2c5b4f80726fa3188c20bae9073b4d8328822ded4581125a3d0607dbca0c5e495aad8561fdf2176efab164a09d4b08d6f1830deeb30e85b02c84a68ddb25870d9baddb72ade17012f8ec28158395e4b6945308523a10e8a5e4531e3bd2d282ed3b006b9bff0fade12ec58be53c3a6df4534aca85a121bf69d9b61ea5bb7a4a4e596d4e8c5564fa35a38b79d97b011eab4234bc6daf1753672bad43a7597df9213c953f5ace6a5995d37cb5562c5788acbc2f2b0ad15cf06a8db60dfbfba56894a4a6c95a1b945f7cc0dac524f5596a717746e8a7664b2509adfb66dfbe2ce4ec4b616092d456d61201c2b8111ade131e1577f9add97f05bca36a7f44ad7d12d8e2cecad5167dded34521f42126e3a1a298cb001973ee3622846e2341ba0a037e8a2c26638a1391f483f654d2ee1a4c817e9900284b254bcc0a602c8b009cde9b0103709f661c8d8881baaf517b23ad7a4e0f9ceea393e0a8f42a56a3c835ef75aa4d59769cdc0bb1c0e42f0890532b1f5ae28d8ab3d365e3516fc6bac266feb1d18157b69c16f7145c47fbd84642dd292d1eb9a2d220107be051e697031f8154f8b6c172cc98d6c1739925b63ce6881753b56e27b785086f5a559664801c1cf9eb064aafc62f6e4d4bc4d7e63f2fbc2bc41969bbf1c43cfb7def2f7977af80ed9d71db6dded65621574b73745ee258ec955276b8ab6c61d43fa2c652e2a8dd948e9592da4d882e46cc892eb15a5cc4fee94f7c51f9a89aea46c5f01a4b6aeaafd7ef4b5afb1c34b15b69f3cd0aa027031845cac525256c0ce36009e0d949d166aac05b31753daaceda9666836c19825cac7b026c66cdc13c37c5b5c451b82b64a45ad05df58da46e07a5715ffb6416f3c0093546e44f0e3b3f723825e36d9e86f44857a51cc262f6887f0c2cbcb083813059b5b001ff073ab475ac8935b31740e9fa4b77630e72910ea4583e000f5fe0460dc11703e196322fcdd7d48a231cf1967f93500da3a21249015b5478aec59922605c39e84be8141bad5920ed2dc4d00a0e8ef2f0149c3faba1756ced56017c851c07f3c810b9bfb0ec81d91034030109bc27c1d9b975d216001f8136103496c480795b3a90c2dfa3c3450757653accb4d3697ae1f2a8d56521381bb6ab99ac3ecbd50cd11dc0b51fb5054681e94dea128d53944e3ecabb50d1b88f318666991a48b3f7ba487e98a6835aaeb40822891e3e72bdb534c44b5cd9670e3b47ec364fcc78fe43f9e1825164eb5041d4369b587460d270c08250aaf03c6e5c111841d23aeaa7ca4c366cab0ca4c350420b1ebdabe0eaae35eddd7ea6e66d7d317b68a465fdb76f0d2561525cd00d558dcd9354267d243f799f10609086df7c8ffb54b48996a3e41702cf1142d5bede8443d7ef55e5edfdc53c4e9807bcf53ae2c8e4b4c699eee94dd3c452fdfb3b20ba735deae71dd9f888ebf1e620bb5ff6d54eba33681b4c55a6147b287fe80f9beb22e2c84f44c46f20e8d6014a46ec7753cb17ef96a25ce0a71cc68f59a6ac319bed5c041218fffa6d13d5ed0623270613dc8cd84a5045a2bd167560866a25623ae272ac4113eac7001d14b1bb0c21f7523a1212787389861c201c0d39a79a94db624277c628b4eba264028e9bf11698d1c917d72a8122e2469bbc84ed3828d59de362d76c8c3bf3d0caf2cf12e6168ef24b9944a3ef6619ea52c058fd9342ba89238e875968cc8e53483fbe8ee3c4bd282602eabae4f8d3172f6e2e9cb7e5b850bcf466937c9f66076feebe4039dcda78cef54c5fa4b7f2b9a88d16a6bfc14395ce40169b1d64e97cfa749d1167f963a828ba9690b3a67fb7dac461e90f6037872209e98617185dca06d1484c3a663769307154dee963459e60c1fac915a92326785c2951432045ea456488820d316bc33a916c4621869652e67514d442c21b3d8a076716b5782da1ffafe16526a6cb5c5bfdbdbe480ec893a4a132e48bc6545fbac4376f7fb3b3b322ae3f4e5b3d397a7effe67871c9134cbe652f7655d9a7878ad52b4e47b35a8df2e51fe14d96b9ae45ca97fe4cfd374cd704c05cb1688fa6386f9844401c43c1927d72cf57389d7628f6209f212f618618eeff0dbda1150ba125797400d5bd0317a4abea3e328ae2998e745a11e99d1f93b3a8e3b2b8877720db800d7c1ceb1087268364e1016157ede1282964ec4add109b0f4d6bacdb204aed5988b858be585f6177dc375621f3439ef620639f9ca53f97daeb10ee6d647c801d9153b4b7cd1c07efed03cff3bbb755e7d89afe006a37626fc908a59d837178e706057ffc6ae6ebd38f8da7a81a4acb78f6487e470dbafbefed279e5573d78285bcc19cdc7d68b875fc916a9d391af0e645397d3643ef8c897f50b162ea8ff5cc5eff32a2e24f8262111352edcf56213fc6b9fa96734884b82621b05c47ad7bda96f49b32edc5d0d1ebaeff732e2de1bde40630199e165d811c4cdfddf00744442cf4d6f28e834e0ff9e1e5e3c3bb4f2a419b19de6b73b1d62c1efe162eba97f0342e2e921b10988f9d6d5032f7aa328291f426f4d44c6c53fd7e79e8e43af4a570e9fb8fa17f973ad4116adcbd0dfb2e01527f4f7db860a85f5438efadee88ade3a033863f998410f657f304a37ba2fe40d5416c49056778d9b9707e6a571ed522f1f9a97d6a0abb78fcc5b330feae597fd6075aa577feb7b3fbcf56a4fd1be14cbcd3a341bc222a14220e4ae70b63a36bfbdbd4ab0d412065183426c7ea05b5a75776766a5e7793854a42d5f8a5a6b1a3601137e4376ffc36e04df12a61f341e17e5384fb18e043d7159add397126da0a37bc4e07897675575b7b64b8adff9729218d053a9ed8bf22519fdd0430685fe666f91199143a5f75ba6b243228176b0be0eef3d672300c13cef4a1f6f3e70b3bd250537b956c4d575c1999527c52497d334b34b955742823aaafbff88f12249a5d116f50d90a6753a755e4548c2a547c5721499edc8dfe096f2c51fa259cc6df6ceeb4fb96d8be74353457e58496975fbb96288ba26fe9502a8ceeca787ae3cbf941c1b74f8cc853c6b6967d4174445cb2f5c9912155b618b51711266fca95c04c772badbaab98e1e0727ed9cb5d9c0675f0dafcbdbefee08fbd52285755fe7599101ca90dcc694bfba495fcb81427001ebf6bc13f3d9549daaf0d751cd36da044f199bc737021cc87a17c02fb92acc0690cb1e92db878b9ee372a6b9985e2eda2e26f9e24fb88ee1e337b88ccbd3b485f5d5d754d43fe3051d5ef5c9bb9c0eaf3829720ae18023e7e33968418a094b72fc1e2bd61f4270592e0e85686cc0c676db0bd1f0b2ad6672ebc077793b4f43652a2a3be82aa5f2c0498a3b3e0a3098727972cda6b77231ab452ac6057cfa3969f3051fb279915c4ce103c5d6c45e9069324b0abe63a9e3e1799733d368472f57fbce240ebcf20fb74ed2c858a931f8d66bf6ac35625356b056df7cf1a65843364b8a384b184eb39421c7906c214ba7b7041e93f99426a9cf1a9a6df66bbd6df5124b523e7755bacdb66e58bf6c552f52f80e99ef95785174c0e02e590e1f9ba463389ced11a9b10b5ecd92e289a8a0cc26bee638e1afc520caa52c0bb9d7b8ebea693c26e273319bdd88083600ecf812b3449df2935f17748a330812092e7b50a2f2c57c9ee520a968720a2666c4d81c22dc699ef02c6d32ad3a137f4e6ffd0cd0825e84afca2ae851057927e1afe515ebba1e5963d1ccf7c8ca79569536381ca758aa2dd17cd4ba316205cb6700acffeb22b9a653d03a2a27b608517d9000a70a8e0199391b6310602c07c1feb4f685f6bed5993b8b7cc1062afa47ae1971aa9bee75f0f63080f433d57b01be1ba698639498f47ab31104f43077cc3085c7016af1e455c7d1e23d79f5e2f5f19b13e70ee56861689e5bbeee39bd8df9a767c54417822ec6236e0cadad9e5547487a6dd33d8c427daee2f875a5a8b407c3685dcdf6f6c831e78b1923c3dbe13419ea231d27814e1d8f5d4c9f4187574cfadb0eafba6356e068fbea0355707bdb2a896e88513954d1ed7951a6deadaf243593be538a25e5bce18ca5d1397cfff2d59ba7276f4ee4edf848d9289fd0e184b5e3093fccd16cafb09dc87bb9f4e4d088813e1da7821ba459ba8b1f61ae6916747780276626348cbac8ffa111d84cd2774f2b981513550afa14036284f8ae587270d594e48c23d003aa95e7e6d896cd7474b774ae347b28f466b33338b64d1543465676777220b404d648ddd36571cfaa60104ea91c5b6b45f5ba1b8a445262fde10b89b2e146a2a1ff95625147be690b68becd664cad3fcb66ac47362b262162af263114cbff47caa10dbbf0f636699b2587fb147fc0ed5472d3e85c461930ce6588fa67e96a58da9d2ff8a4ad3be1c564ffe14c510c40b0749a96e52e332ab7ad8ff0d54dd6538431faa2bb66c8f1d71ed38ac59aaf2f024a69251debfb90956d069c59e88c9181f2f8794763b9d8bef8e26556b0c32fbe20ef2609b76ce1e27a20054b6e35258f2f8ca0a463a7cdc163943f061d32784a0b26fe059399f8033dc4c45f6fd8f8e4c37cd00141fdad17abbb5c2c8ddcddedece62502a6aee589a635aaaafb4a415558a435a2eae662e911ff23e4968c7d99902bd3cb6f48cad5ca81b5c4dcc7b7c6c5471f8e051d379775551a9fc2f3dd81c42c235ad07f24ece61d1d1ffa678d7489bab82d9823a5b2dc7e767747ac82af2e2f392bdc82f8ac0cd420e487de49acd339ab661697971e46898aa0916daa02deb702cf7c0c2fd7fadc2d73280881f27d9216df38be546065709ea350bcf210c8726299859f2596a3fb3d6a6659e431f200fffbf7f6c8938ce543a4c6680a8c647080ce3ffbb83546880e919159329d269c0db3741478ab9ea6d7749aa8c2620f0c813078380e5ed297836ee4cbd8afed076aad3fd08797d7752658b9df7327eb683795c8d5386df04bdc9ef0e58c714ec7d67bf9206c296763f6611e193daef86ec9e841451c242c2a75a739a3857ad221f35c887dc9b5d4ac4a86d1f148522e2f683a55d0e1dedecdcd4db7761231fc0c1b233e73303a544b958ec3ce00ebb1230f48ab150e1cfa1c1e86970b40e4223dcbf130ac8cfe8541e5faf774670ba936efeec44d40b56f9c5ffdb410160be0e298d29b1f7e892bb9ee48837ddcf0fe4d2aeee031774fe7225ed6add28b3709398d153513bf457f5b76d951c75ecddb8e69d2ba51dba7dd4e0067af45685b0f24a7d6b05efd0088d43d2efda862579a0e3c5a4391da5fcb90ca3376cce01bb840bcba2c9d32bb906de683b405b1b7953055a15adf5eaaebdf04d4dcdfa736f8a38bddff9196ff3cd232f699fbf2f247540b6717bfbc9629e1c7ac389e4effce6e7934297c76f18bd10dcb5a253ae41845646b5e415bd9fc3a9e695e9e6f65fae6f8e116572ac7f5b59af8b781ae33062a6d32dbab4128d35bdabaf023a89348a0427248a21e1138fbe010110f57f04f6aa372d990c23c3cacef5163eea8c6639aeaf8b91aa8b2fd730e3eee2a996b7073390be1041b65b65e05ce07954db4bd188c638cec0866d772cfc740d72dcadc9fa6db98ddd1cbc01ea7b8a2dbf2e0d1541c0f85523df786042b7fef98cff57c491d47a4b8ce33f631153a4f31124ae7be96fad3fcd0cb4f88f1d65a8405d5232d3be56aa943a96c5cb03945226045d9c52f92b4bc045894c335a88ac205c12a09d2f1cb2c258357f294948286c2959232d228b9bc64e0af63a78d061e936685c567ecb9545d44de0d7f6e6fbb43009c115b8cbe02a609e6450560a23edb8e4090776678610162a9470efc49496df9c2ae8d8f6a2f8c3a5a709f617d0c35f81bc68b81e07bc309e091164c7a81e48c17d2225c5faa5d8293022eb300eac30b02558434478aac61dabb3ac1320eb86ae86102376705be7bcd725dd47144922322dd6b414b50273c5e42a38a41ce6e52c2d2c54ca696d41e39299d497d095e7fb8f29113db6c53f7885f172cbf8d8dad742cb10756f7b8bc8b95e31d8a89c1988bf5f6835f0ce3243ba2fe5b6c668511169d4cd209cb93828daac75bd3fa971b77f4dd6d3af2a7a93df6a769c5e8ffc00a4e66aca0e0c00ed8b06ec8dbda0ca274e03c17b5aa4e7881e332dc87f4c896a8f582ce6361e07126212b805c6b870bc5c2c061700a0bc1e2a38d4d0cc0575714bda908e50ef348fe1e15c5213207be4cf040df8388de423a0f3a1574f819d672655d1dbd17bbe1e8aa3aab1c04b3196f242f2a4d8ae9d31874a41501864e26582a2279b3fc19864f89e2dd000e5323d2632909b17177479c87dea0598b07a88a215b2205d43cc6f5fa3221af3e50d7bd6cc9fa7ea3e5c061257c4be6478aac3b6d248bad9629a42eed9096d5604bac187ce167aa714d2a213a4ee558cf0557ce135a30f2f35f1454f9cf7f31220839bd84bc28f215c047eaab84067ffa02e158f5c7e7d6b06169192a2f2f54370967887f2c954ca095536d98b938bdb4a2b121bc4042a57590f424e3ccc2610044d8eb4c5cc21566f3cc39139382ab3d9f70d9ba15cfbd7c317df10739bbf6b37120f81e982c841068324f370cb0864f0209601423b14472f40743c8f3fa73972d5503aa5fc22071ede97520f884fadb5a89b2b095c2c2ca6a6dcfb106eef697b18f474c8e64c1b641c7ddef772cacdc83fe8e4fad6ac99b637546e7ab4844333a876913ff468ead12aff59cc10d7208feeb7524003a470ebb64e25ed039c4d2cee81c5568eefcc9936246e7ddf373f1e3fcdc1ff184ff9ddd025817543fc29cb9f2caa82eee0a4bf3c8fc79485a13ca27ad3e39c49ecee8bcc6f8bb626047eaeb644e52a943017dfda7165c67b4184e7000633d299d8f62388119096455673f5d95e99bb52021376ea0195e261ca0f20e6b970807d7a1e2ce81c1b5ab921e39038d98042e4db8b8550e8b273057b06e307ea15f1196527b77624cb419515a90c115bb1d7c8cc5b03cdec420b58de3c04f5f9448a9c925498a16979fa7cc259190cf9255f512ea39b183eeba52333a6698d2c829eaef783481499a3af80449844ed68d552e3f80638052ba24e065cdc9006f605dc71bae31c2713c76a8d1d521a737255e8e2583ff86debca3e3209407ad4faf6ed212314eee177e3b7b671a73f73ae24341c133b79cad242ff25b778f478a9700818b3e2ed219e568f0700c0e7f902170b8b6f8a83213052e58dc46aa3debf37c8b896a2b806786818a812d473ea4a0e325f8e0a8312c1d385d7575861453c480fdd355777d6e3a960a858ad415483d08e9912d9cdb1fccb323c28bc505d07794076581d1d2c348dc1b63f6b0b3e889a0af3e26bad3510a3bb9979269c1f2b6df51e33d62c1f0c3ab583794c071ca4ff4c4b9a1d8b2aee96d2d38bcc8ca2855d3fd29d649b84a4ed3f5d689c34acefaa11013c1cd833ebe5ef089c6801807136f1be2f47a1a338cbf17926bb0aa9671802a8557e0c08d78920d711ad63db62a8e2c6be2dec189624e61b0703da3d3e9051d5ec1b50704daeb84ddf08eb8167048b729e5ef1b46afe0214952727a420e0e10512fcf660967f0f4653662dd5f38f98e7cad2d5e821d3c959ec9647b5b011ea6ec86a8c7f0e3d878f4b60f767676c856cff6681677ca1774ee517841e76d2c8ade8aa2d46bec9055523ee94a440d5943765cd692a09a16edb7ac9025d1995194fa89d1abb017f2a92c7d83bf5c78453dfab6ec10131c2249b57eb04b7ac2ba345eea3bb55cf1a22d29b4d926cd52686e42c46b5c422a1fef1129b2b71082df462beba1ef260ae6795dcf3bc095ab7a6901cf6bfd892e77e89672748a7235788e93c6637539155c28710272492c2762d64e9c1067c57222b8ace204e4225a4ec4acb6d2e0a8086267fd4c959ad109aed04123268269de924191d39443b2928102bd19405a14e951c6d2d1c080133660894a1386495a30a59ff84b1ea7a22fe5ea33968ea08af8b7b2823c04cd574035fd9322a4a236ddca2ff46895e2fa526dbe1f66694113c40b880d91261602393a8d955c418085dad968cc07f937927838aed62a988aa59a05e31d14819fb2944a86543cd0153cb1a5f541fced6c03c53be0ad38b23dd6015ba435cab379cbdb17b84c1ef488a469bf53ce29714a8059e793134b68b721b1825eb1189d9e854d2e9306415f81ba1f2b594d3eda57953fc920c7993541762b5b51bf2bee44d6f8b7806eeb105bb4e6b5c5d251eb50b45783b19c7c28720a8ec632379bf4b2c57c5eb84fe0f419908b6c042e543396162b80ec5bc03af2cf6acb4e4436f6fab86c47fe94d3f9532cdac626bd8d88eac39eec4f177eb67366d50bee3c58e508ff3d3be84b98f59cbd15ffaa5ae4d0dcac6237d7091b5e7171700fe6905e807d4878c1210fecc751a0c1e06adc64d1098978544cc054223a58e51c3da1712c70a8e806e907135be1beec0c47038fe509e5af6931d1b74541a6a33a694d3a7c5f0fd29842792c1773d25cc6a345cd988b71e07cd59471a36ab8c8fece6ea17b926f8798e45b6d93261ba77b4bda87b7b7d5a7bb48661efbaef412f442045dfd73dc19f0ee8ea8afdbeac53eaf44ea31c4a69613b7a5b890c89cd27aaa8f4487e89604d945fc29f4976dab3e60fa3ed1b336a8c9ade7ed843b81866034e3c7ca72e5df66239bf9344d0a54b35a0a078022da0c308f43a99a3f26ba2b23af5e6cd388d28080840380f1ef2e839c2e8565315a4876234b59371d350370c53d1e8d2cce20f1ca24d0150690ff17fbc0c06fc05e5d665ea5bd0b5d2af6fb7e02b99882572261b46059b67c977030dea89d8e9d875f81a1a59ba4f34561159a2fa20bb8a6e6d25b324a3e6db866aac377ca964d2cefc58aebc6d50e069e4bc61fd673fe0d9d5bb7121ee885a4351a7579ed98e6481cb3bf57c83615c36c12af039ada4600152416d9ca700a2fe8bc045561f09615f704aee02d93e6f80815544ce6d804a02d4dda582ac3d63ec22275a3fe21dc1f7be3b1ba525775ebe0ad8cfbaf888557a9de35b3950ab658fc69b3007427570c24a27e504ab40c98c0ee9dd605aa019363155283444b8f1e467a096fbefe32f226498b6fe28f0fbe8e3f8f36b028a103cf9f4ce96cce4625afa3ed2c220db9c3f2ee76ce46b69c50313091806d7f8e22b562200215f1f13ec5d2498fc5ddbbdf865ca69c422486bcc6f7c4a375ed76d15e10b302903276ce596edd5407f21a3820494aa8ba99128ad9888a6cae73b8d937d84ddd5c67d928b9ac32eaa88b3462e5e2df78e36579f4c21bb328402b89468f5dc2f204e5f0d2db51cd970977ea3a1d0d708c25af509a53205f9a2b83729d965ee57c2007bab46cf44c17eb939e16f6be2707e488b4b609b830b576c88348799f94f525bf64496a683d14b43a488bb4822bbd1cda9c815fa6bcff3fc1d5d421addf7ffe39ddfb829ca9342970b0b74c8fc803d2ea8b19f939ad0ccc30777e344d9104322c617407582007da614e07392958d0b5ed58fe8dbed66ddc74d4ea66836b79c29f997ae538abc858e56beffe659e6e6db5f93c6774248821f310a2237ea1fae3cc2fd26f3e2588b602c3be0ba925e14eb0f119f0bd4d71b9f65e1cfff3fcedf1b393f3d397ef4e7e387983fea70be078901f4ae658c35eba5d6b3cad0e9946138bb769e93f13b00848ac763b8734dd56ca6f3f078c660ce6a2ef7f3e3924cb2ffc6d6ccb4ad87f7787ed6f892b222c04b867e4ec94bf4fd2a25b30ae307d77cc2afa9eec1e985fff8f1c089afbe6c9776e5f2a9794e0de9807cff58e06bdaae57f0c41a7ab2eae7956c84c989a1cbe546d4631d9f1c65b521f5f66a888aa24635d282274e4db0885fad8b64bc7cdf8b6375abb92c413cb054cc16ec6dc68b66c9873bc78360ce877f782d231d86d042bf84831c6e7c995b9135b9a2ca7c73a0bc921d1942cd5084eaa8e648df51f5325b061a10c45e47a1990f912c49312f6ea381783f52dcd0afb39a856ef89db6a947efcd67e4c5b2e1359a6ebb055e7231b31d6bfb35bb526a38bd13d2ed75c898a2b57ae44c54b7b162fb59fc9318187d2c7d5042a255ccaf9e5fd753d1e23cab45344627f9d67739b71835020de8a8b58ec65a816c7ee2569dcb1adee1ae68ba40081ed32cb017b9f72b248935f177a29d9f1039f4862539d6cbaf8a2a2dab2f3dcd2f839acc75e268d97937277de124fcfcf0173edfcbca570f72174454c6cadd9c304a5132a36e794fe766ba7d9d85ca0da4a7356d5b5d50e3837b57b98301c329df7c2c04b1f0307102031aae84cd5f373c719dc0296bb5917617fb6757b494a9ed3df6e7fc2dbbb81d06bc6c3449398714e41b83461299667844ac1170734d8da8262dbdb44373672b2dbd55d6d49c195d200ddae3f8bc59670d99b46dce10554298953deda1214dfe643998cd3fa95a47634649d914b3819d239f0d8ec925cb0241d371fbe0db25567d4ea71550c3d7821cb931e196639fb6ffe14f3ae255c4d2e39044fdd67d6825f7a00895b298058e84de427dbfe44878ed5a3aa11f2d69531ecc4ce1da99877eff9a55832d0be39a6e2582ae2a961404654808ef8acc01c3673ebf54ab20287a82cc4a2814cbf0689ae43922eeb9241afd75bdf6979ad59bc8cf5d93a86a29d6fc0454a42d3028662c65d4fbdb98839779346d14fe0b8c3b8321323bea09b9b4b7dbfa6763f73573369921bc65692594d4f3d7c5e33281b3152f5f06ce4d80533084e153af555b31cfc4be254aaf0e58263dff2558185a387687b9be8d45c6e920bb1f925fe9d77c7afe3965bbecccebb3336cb92df988ab11b4e19cd157208bc3119b75b26e72464922037139692a420ecc390b111278317c7ff3c7f71f2e2d5e9ff9e9cbf3dfddf930d822b4ce835e614cb16c57c51e8de355b44c137552f242cfd0434ea95a01fb2a48445322bc90daf944ef062ec105c58ccbe3f6681f7aa280dd3d22ecd8e2217d615bb0d238f24f61d4c980e05869f4de1b120bb9c178eaae16520efa03460416ec781781c5900820a084aaa66ce468ba1a48bb72f414c9acfb8b8b98ed022759d5d314223a9eac1df21e1649e710e2079176c48c58d17a36c5112118bfd224947830e24615be4f9ed00635506e75d09536b9cab67f4965c3095a69fe46c4cf3d19471506bb30f6cb890c808239677c90baf1d9a63ea2c4d6e70decd19cdc7036990b3c29295fab04366f44a797d035db1db71571613d0729a4d833d602392cce6595ed0b4e89079ceae595a28123339ced9a51eea2ef931bb61d72cef901b21e85f198234855d3c4740b02c2794707a0928b417c08030d060c27246c4d825d61ee2b839e5775b2447e00ba23f5d0e66737f3358267e324ffd5165b5427b68a44a999f9ab77ae3dc41651f1f41eaf1a8efae492e3ec2cce26e02ab7cf85817c0fa7e9194dd98221aa4dbaae9944ef8936c36cb52f4745315bf2bcb170d0ffe7ee2a6eb3e96e9af3d4f5341f942c8ac76a77b6e153ba3783c9f76c3ca6f4e8edffca0dfc210feb5aff03cbed363f64d3fa4dd7689dff904414b2deb97d0acfc1a70163cf9208e3f9a4f6f056bd72c6d48d35621f807664df55c05b7da7a9a40f508031bd52f8cec34d78013fa9eebd53c9099b94118a6d73499423caa0d050ad0b36654b6ab52a98f30b9bd59880ffbf0896f5981073db04c88e6410b9fcd880d196bd9ddd938cade02445f596b481fbf7a2fdfb91f2ce4b78c330d246e505d7ef6d078157081ecfe235f05140f9eb372f88fbc04fe443d01476a59ec0844ea8cb3e37cccdbeab1c6b4908d7f094832aef65192fbd223270dfa88f0c4dbb2c90e79fdfcf8c9c98faf9e3f3d79236869c2d5c39327e349513a48ce007db57c80fcc1f92a189cafca0707e24e4a47e8ebf211fabac6087d553a425ff7cb770ccdc7af335eb161bc21faebf221923c495dfdabdabe1d68f40e3ea3d329cb6b6c56cd8d8346bfe9ab69f9a66f99a60dfb3ab4628864b98e79bd53d5d5a4c0ce66291382559a151a2f2be83390fe5b3f7a2fd2ef54bb7fab981d545f09b101932d4be6e12e62a9df3414f72d0f1b3c629dc3cf17722d961a11715dcf59a9c3d26fcf24b86ff78addf241bf2d53b3d44ecb9299da3b962827c42e4c7b9e14244987d3c50822a4cb413a93464827f70dc0592925e1122c03dd2c0febb72edc5b91852544d4b60a44096fc531a861cc37e8a0d8ac07ec81406d5ceba48a4c48cd1816bde0e2ff6abdd889789abb469768cfb0f9ba2e7ab2381bc91e564e5ae6a0b494a9be6a20ba940c5d7da0652bdcf653422dfb5e5010ccd803a84f899e75d0b7228f5564ae5294b9a4ab22d6f4f74aa837f5b9e6453385472d3d8787ea2c2341758b764ab978d86800316f8d0cd9250744857f92fdc086659425912cb8630ed12cea8a6c6f6a5216fc66f96d996e0a52a643ba335e4505d08abe0b2a2ac8166febc4c71127672f7e003f5301bc410a0437cfadfe263f49423161f9310e08764f113c58d24328e7755053f33a59dd39530b68f6edc86d3f31a981df11db4bae2c7163e91832b5949706ee8f026ebef41c2b5414e6c7837393276210863a6645d8c1ecb20e0eac55a372876241277034e4c756b027f90edc89e5271d2a64104d40fc7e3b4d864cc696ee77c8ee4155f8e01b862a299d177e38ccf211e89a10e800183af880c31a625c2a8bc43b3665d2e75dd303256292f342397d599176945baf65dd4e1521cc48584e49bed7a400303cb37da76aaba222a18f390e4de97a51e3a12aa56326fd76d5ab3afa281cf7ca45223ba2a20925714fdaaa95c5de67a049da565d95a5addce5ae3bc6140350c0923cbfb563361b004f2a2e281b55009216737100ab21a18be36e6865563fd27d52bc2e96fd3d14ffa8cc55b88c2d197e74c56e071db248414d8c589309273fff453b05fdfc974f0738596eab2b654eaac672f6c4e9a5c35e5cb38710e515faab71908ae8bb2a66238cef8eccc9dbdaa8fb2656f2f4d2039cbe60c36cc638996485b4985a58d0944cb3020379f824cb0d1b9ab33cc910412699b18eb8c9dd24d32929f2640e662b086367b9cc0a4a5329204a94e7114b8ba4b8d5e41cf9f43a4b46644cf30b3a1672fc74cad4a1b090505afff80652d2998bea3fbe2109e70b461eeeff751f2faafc706fef6231e6dde124cf66c9620697d4f9def5377b5094ef61a4c85132ea895ae6865a9ada6e7dd19bf36c0890e17ad66e92621235246b234095163f1484ab531e709df200a6f3d5a268c3d1888f77229e2ec78427b3f9d4a07cd01c94a1e0483fcd2ee8949c0d382bde2533962d8a8119fcd928ed26d99e79b7b3b9811cb1298df003755fb9a1097210635fb353f96a0ab0ce87d4b5ae99d1c5da77b1b057b1ea739280c5a7c0cff39d7df6bc8197a3204e8ae2c35bf3fbeececb36d181fe87f24e9e6545d710b2cb5680f1bd0dc0f8060a8d57a7a2c0631d1a19f0c6f7f525731584e405d5a40ee19ddb490f7e7dbd55afeeeb9195af5ec556ff92c1937b6280b9a267c910c52fd4ef89021abbdc98092150cd87f559122a2929360c9434c3a49a6b3e35067cdd85620f8dd24db389225cff4f399d572613ad9a7435fc156e6c1cf186b46a4756e9984fd189de3cc1518e79cffa68990adad99476b6284dbc3ce673311fc9af566fe28848a65755b7148da86acdea8416ade914573911fc05a155c19960a00ede01242c63d458ec0d2f905e2e2d0eb13c6c44063fbe7a77fee4d5fb97ef204b3a4c94e079b06ce1e5dbd7c72f2d5f8248d6f4f5d948ced0d7aba117951806f49aaba319d2bc21e2fc02fedfa447f6ddab03e5c5131ca71e64a271564785b287177436d7578e97d94ddbd7cee46c2681f17a448d32d985e49ab339d9b59ab6d5104e87a068805164087f4ff63d4d8978ffe0017eebf7d82e4c7d5902673bb74429c86204885a8fe6121f1fd0aca14ec5cabea65b5ddb1f8c4f16979753ed0f365b1412a37804e8aec87e93df909d7b97d2756ed1b2dd2a9d6bf21bebd95756a9712de9cc7a7769d99db76c7aa9eed38089d70c22b1fc825d1d752ef10eb58f98ad5ad5699e3c20c450efe7f6571a5b28800b829a9da6a36ca66eccba47feae532651bc718bfae13d1c9eea328112d153877a8652f3094e1e2b0f48b1deaddcd864a4d88646192768afb1fd40032c18b14cfe596d868958d0aa3ae20b6988a891bd4630b8d01751a295fb68b9d5263569fc194e68fe241bb1e3a2bdbf034beccbaf55b1bd2f48177a833f2b6c69ad568947a26cc56015bcceb3f94b8831343d0737dd8ebc9274c8af8bac601dc21717110060bb5528488e4c49ab9d133ea473f66442f30e69fd7f07ad1d72a8ee3c7777e8181c01672f31f9c504e04aa31fd822557e0e8816952fb25c228dac6df5ab40a2c4b6eeb02177d9d9817ea14c88287ebe91cf8a9ad2e19276c45c8d90c9d28deeac51a41e93250d50756b1f22220ec89ee9cceee9cb67a72f4fdffd0f3922adddfd568dd44d66f6f435cf8a7c1a66a326c066cbe29e9ad967637d881d4c1a66db93c874c459cc5aeee5fd708409d7727b69e56e2415a93daa69bab31952091684acab2b45e6ee3ddc1462b83a1a246d20ef080379b1aa319735e170ca2e86f775b90bbc51e5b7562e8df02e25abc5ae7470f69cd0e1046e69cf445f6de63ca749982a5b8902adf36e8b3c20a20c4ab9ae386d9cfea0c40138526e4183a7d2bbc5f42cc23d34540ef27b2fc0dff6d90818b8aac8b3bc68d7ba2822ce9eadbc5841476feb13d4df4dd10da1f04855af9c68590680e3d425db6305aa17561e6e2bac35c6ac55c3d08f761450c1cde7c36ec87308ba9544559bddf3730942747ede21e6e1704293f4fcdc9e3338d4cfcf29ba919f9f3b56235353bf8fd405a9126a9af2f259581823a7bcd2ea61bd7088dd0dfd67cee1652961a4d99213c070c6e08a719e2de6b86ea4b80cf117c96f5eca4b65aed50ec948835db3747adb9166d6944ec970b248afd06471c1a4cf8abc146b7aaa23910dc20b5a2443f37bc6045f7c7549cead32493a64e45177bfbb6f1e0e69c1c6597e8b3e0d0dee8bf33c1b32ce97dd17a55b8e1924468713fc5aafe6ae05bb315ed07cd427278008c51578820deb024cdc8bfa70b24056df03340cade812f4c6fe12f681cee626b04fbf38ef42d1f6598bb63aa47521fe3714ff1bb5fa1df250ef8e2fc8de1ee97d4fce74c17e879ce9a2fd86841f5510868240dd261c635ad8827597ee1018668f71c133083d76f06f62f50e23176487b3c96bf481e572ea2b5e6411e3285464a769c1c62c6fc3fdd9f158f2a1e39c6bbe07036ddf65e3587510b2209aff8e1cd44f7a65ab1df67d8ce3d3b217c8b291afe2b73e61c95461cfeda1ae2062a1aff07292b91d55ab0f1ef4a55e01fd4a6c2704f98fcab4503f97520d0609e6033a9d62e4e5ad0a8ecdd92cbb66a3aeb93d7115f8db2103314f03035a31d8170f7ffecbcf7f11ff9a5c8a323cec257d3940702768622df6b7df3dd808fb83b8deda19091c767309a9d0d8c84f9958c977b0b9f6d97e871c7470203ae46187b45a1df2a81f32880378fba89a2348a23148ef5a9ab58a2dd77067c4328a2dc5c07735635aebe50ac361c440c9d6f14321369172d09af861968ac526367f3ad67201ee9ef496d0d12841df752c6f427d693adacbf2f2fc9af5d7fe971b3afacda744d4c5dd6e5767d6e67d7bfb97d65cb673ac5a234f6757be67a4af1578429d1df4bf755e28d01ab1b1046dc52d1f7608c4fe9c9d7dd9b73695ae3bcc529e4d59779a8d3d44187fe37588205149c075d8340496ec59e86f3900bf9b73bb3e4a6bf969476da757a32c77f5d46aa89dd4de7681c4d1b6979c749e2b9a7189150df61df29e92bbc47f0cb20f2a2c34c9e78e02cf387248cee0af3e7a664a3852705aee904abfccd885416d6eb9eed34c47958c4892627c312c4005fce8ec778c5c381bbca533064804ffcbf26c8560174e670c7af01bcb33d79928864e8127353a998a53575b9921e25a326af9457624f488152c9f25324383f11b2d51f21bc7aff7a992dbe78be9f4580804e80926fd191457b098e86771f2871a60c3f964ad12eec73ec022d8acccc01923e75d718e648ba243cebb1fb2bc8e44314a2ee504b7cf1e76c881e07a0f4b64891847028c2c4d4399b45410032ab12457c53e9742fa3e4fae548e08bd4305b1a7a6879290bd3791284843019d0e207bedb8f99562d68477d67a4bcc45d27cd7c00f0fa343f1939381ba894a43ad2669392bc25613d75de5366df106106cf11b06e8129a023d5445e5827a92a59aeac5ad8544d0ca99caaf3fba9f6d0b440dd6abf9249057b2d4a0ae1e6a8a52d26ab4e51fdfdef3a6df94c8b3c94d1f982fced448f7cebbca21a6ef4d811cff39cbd56afa58570fb3191edfb6cf1e760f3ae4a0fb10d845f751873cea7ed9ef9017b498742fa759169388ba0f4341686f0fddebcebb730db1a4bf16bc5e2634b5c065fc7efc4e5a1f5a87e421f9a343e4df07e40fd12be757eb432bec90a9eb32b690ad3dbe6dc6d8e0e6a4bea207367dc9a8fcf4ea21ef53f55c5dbc45ad8ed3fc7db35448e1ac1443bacb1df2f07e992d723b5a64b9e5b708fcd0e24dea569e33a3b2b5386e916986eb314d4d7209f3acc3344d4f63270266fbb9c98c1c7b088be91f740a6159ffa0d3660cf4a7a498fc8785fe41ceccb8f7bd79f874bc136e9ab07bc4fd4933a60e69dd7aaceba17c26985678ebb4f788987019e6c13b319a7d210326fc4488f8e5accf6a6f090b140d366782d6f0376483a6a6cb081d8a9f072bb4fcffac5e2fe583463bc4a7c9d0f69d43fe30480786818df20cd289e83cab176c9ca4a91d40beda65e8ab8d6cea9238286d034a9501c8043ee84f2b32f83abff647b503f933504f22cab3795b6b58c34de6285e4beb450d46b5ea7d15d6ab536dbfa69698d8fa26202237481a5a8c366086a9af8c4a490f3b40eeeec40fcf31f3801c12633d4a03df84c0369292efc8beec67aad393d451ebaeb271591a435efbf886db7fdb2d8b784815fb56bc29db485ee5e8e63da85db9c10e0eead6ddc6918d8cb4fee4bb39b55db6d3a59b7cdfdbe7abed6f144193745c73839313550cee0db2e8222d922919cc73364ac4fe1d68615d5a3611d640bd2689d10abb378849ce98738770d3d3a0a0f339731b4b72d79f1b683fac947546824736521220b9197621b6c182b31ca476fd9408615d3c6e1d92d605cd5376dbea10d2a2c322b966ad43900ac91f9d7885cb9c8d4471bb024c7a698d39bb101cb4d5096be80af1cb82dae93f4d92296bc39718d7c276b6437ed768fc5917697f6bf9f229b6a2ae2e825f9fa92faed2e448dce7a58a9c68ffea7d79bd4e76e478d7e8ecebbadaa768a7cf5407a5493e3c541a0f626d7558b443aa3fcdc6a963c6bcde19826d4a0eab3770a8e14736b0bded4696e005cca1616b9534bd0e79b483972d79e572ae561be7dfe1cdea3f5cfcdf8f8b5733e5cdb0713c299673f18d32f06087afc7c1cb98b7612d0d79772927da0cf35e8b6fd7e95313c6fd9179f6c766d7cb18f5b3643ae551253ddea365681770e601409d0dc8624e8aac432e160549b3c2e2a892b177c880a5a3e569f9a5965cc5d59687d036e1b20f37c2652f132bc5e792383451d619b5a56089fb3180c48a5a2c1d45a27d593a8a55ae1bea5bd75f4b5e68638c517cb95a872d6aef9a1ace55e8362dff17bb720375f40d12ab3972cb7f087d8b2a0aa0f2d9971df275877cd32107fbfd0e697dd1023572c489fb4bf9168bec576e63fbab1590338228b2f4935de131a055aca7ed6d954a097f6f5999fc301969c499dcfe0e57d9af602eed607c0681d35e96df50ed0f5afccac15a823e1c5a282f937414d826734b3a91c9702f8d49509354ae1f3171b1c817c5e416d8bb44bf503454ada4e06c7ab916733ab86fb7a7cd0a813e1712670038e92afe85635d6484339a0f277048946325b952a43b4f001ba531093135d5eec1bf816829d633a2f55589965957bcc55c9bf8313119737f7d6932e84e3828cb65c983cd498b417f964b8b55a350572e0c9a2d950b1f561f148a8c2fef7588de4cf77f6058f8b925c133ba335e7b46e96bbaeb5b8d655c808b15a3089b5822f95d0fd48d3a1e4ae41c1cdee05508ba89ea59f3c3049a084e14b93c38c0416be958d31352b2011f94d231a69b2832326597b1b48ef5cf8987f7ede6f1b1ce097bbd2a54f03ff1a1f1b96895c5ba7dae306aea1e1caab5d8c9f170332747d0a76a5d040ee72ac75893e323e8d4f223a46a389a1c2141d3a5c7c8feb263c490facc8f1207c1c9a66ace98add2205545a4e4dcf18b19926854ac3a6d9c0c300ae7c904d06cfa3092ca970abd0b7a3771e3854e78928ea78c4cd9359b921163f3cf22c6e2123bdac04d4fd668102076de9575c0b87e06a15f18b5d5215ff54b432aed42951b48c71085c1954d3689b32c1c8ddc33bb850e3958a6757bc3868b9c27d76c7aab7ab729fdd76644878f3aeb4f199b379bf9471df265cd5907e21f6de6150ed30a0b40730250af92c188cd8bc900d134d7f41afef29ed6842ff9419795cfd28c7e48668b19c9f153b394c0eb7b5d52bee632585051714a2d947931313bb801cf59422be69e6445a6d65ec7164918c94fa56a84c6494ffd5be92c841d8d7906791bc72918bdc241e40dcb3993e89c45f69a26391f7c1b77b95738f92a0d9f092d80dbda15bbdd450dfe600e643ebe633eb4ab7213c8cec0b3ba3049628f78c0e295dc36cf6630646d8959028186005cf230c26a7f272d2afdd92fd09fbd72956ae2f0090d210c7028dc258b4311873040a482dfff5801a94090552d86f09c128e40c279f565412b687d0508029d1ec3c9e2520d1abbb29c47a709e59ee27b73ce0665f931967e59d5ba9c303aaaf0050dd589aa4a585633a2aaa50a957d896089d9157e9eedc712a654cd38ae455a9888513954d970b8c8315c578c96b4b2265c6a35122d0d689a9f2c16fdf4920cf44d0bfa98b2315ca53a08ef0959c931bd9026975d5e7256380e99f7b4e037af1d8b5b7995ba2a8b6437fa082612d47c8c940dad89b6ebbc0b945e5daa4d06ced531b924aab97f6b7a8ee90ecc62e82e6f23d6cca3aadda9e8b836c3cf4ac7f139aacb4fa3c3b64c310e8c8a4ea7e0cb01087af4de4fa8cd1f469b8a4c48d2a448e8b4765c427cf9228dfbbb71fa2ef5bb4bb50d316094459afcba30919d135a8063a50d8e22d6c5bf212ccabdad6c2bb81607b46fd6375f0268bd2c2216869bb321205a35401430f5b27429f84874e5236334542a0254fd5bc10c9051d57e7841a59e8677c890f2c20bf50c2e91585b8968dbdbf20124c4ee499a5cfc3a920cd2fa522cba729cbcfdbd35604934b9204e3e064b02bf916dfdcbe391dcdb157b85bdf609b14036b17b57440479d88d84ca353777f93d89e280840821559820a501f16e5b0df88d0f07220b39ca85c63cc991ee74033dd98464340d7044025856c9e7e6d93c8e44bd3176780f8022f518e5fa9022018e88c5ecac3be9ba3822e5f1234d71443e6fc677ff081eab71bc35513c0cde64acfa81cd9d2c108f98c9c05ed72e0c0892af03fc61b7b194cf2d81fe588ef9b1115e87d51ce2d2d5d87ed6232dd5bd16203cea57aef2cce69c3668c7a7e17dab2288a8342ae2b6a41993d1df2146bdce7ec31950466e3390bfb268a2854f0226eba569f1b23e9de90ef75a9d968c429092ab7e5537cbcb2f19705d991fa98eb8236ab403b8f5d6ff8532448bfedfc5ff0d5bc1b6d2db0648c93bb4ee79993ad85cd45b2ded47f2df5992629e98804c0dc5f09f52cfe229fd977d43d554024f2ad7b3546a080d3fdbb87e05d5fcc62fa8a6bebf54fa019d5c4def52925d6a828a796cd8b1f4cfa13abf57afd1b5f4e83a31600d5dfaa3d8adaaa62ebda29d4ab57dd96e892b873f2b9d7a94e23df80c26f7ee2fa892b2a96c6e470493d33e2f9d08d4d293c3b8ab21482cfc257d59d7b5501f328a370bae039f3d480736a306d35eea99f440542f0c88ae22e298f2122ebf96ad07a4f465f7e07eceac1049c931c879b15d3ac5798d532f2d6220c24d7d9322c96562f78cb4ca23a975d1aaaeb21bb28ad650e7a28b720bab76da2c28f9a5a9696305edd43b41df408e126ed91ce41d1d038f95671cb773307d7c034430dc31385089ffed4181fa41cee43d87d2989cc5e83d60298a47462e8021d0b69b8b5be3fbfd59449994e503accc3e81df787f51cbfefe72ee0cb19d365f38a1cc50b0613cf385cc2f15d95fe078240e51eb0a2f61631b68d3448d522d9a6ddc2b1de7ca856ba1ff56afddcfe1ae5ab6ea640d39027f8245776cd6dd995a78fd4dac3c87af7b2d95a5018833f8ed6d3588fa2f97f7bf8e5397d262e37b934a425117f03fa696fd7880fff56c61cd30f96dd8f37f97cdf8f1ec6f2b6e6f6397326a66ebef479e75ab62c33fbed55b3e42f451c43456830b9441e9c73981e982c257d6a0f7f7ca15aa8d4cf7c42f2c0353798a90a698f5f76116aae6051184f9cd7283af3f676eb071a3d49a6c2062757a249f7d693dfb4a3efbba9a258015c9630a16b91228f9fa6c21d65dbb6b355886dd45b599a3769b7b611ba5f699253c43dd2cddeb944e069ce539e3f32c054042b1c74141200403b422ab68124d4f0bd932ad66452ae0d86ea6cb2e86ebece04d45ff555ce9daa852b9c37fcefa3be29cc621b3142ce862646355d796bd035371e9386f40d5a22f66ff3f7b6fc2ddb691ec8f7e9576e68d49c514b56653c2f8d88e33a3ff78c9b39cc99d3fa327b6c826896b1060d0a02426f2777fa7ab7a051a2000529bc773ee8d2900bda051555d5dcbafc00d2a9951c332f7f75ce7442d9d5ca9f2a58d71e8228d7e547a967c96921e2487f96b41c8efd0d4b6ebcfb811fc69d6470da18da19a7df523dab32c9fb5ebea0719dbb3552e020da08ed9758b3c2532b7e708473636d82d2c722fb7ef677cc8809fb77231836eaa8eefe86d1ba2fc2203b48b720c29232c1c1962685a161577e93a8755aaf635dddd5a58a53e698485542a9aaac0fca0bb4b63b468149ba9605af7da44757ba0a91b956826073a23c9d8058b3808321c4271a1c606b16cba5f1aae88c8dfc9be9005bba6bb8fcdc4de9eb7de86dd10e6e885f23b2cb15fb8efe3c3cd14efefaf610cbea9b6571bd9f2891f4748143aac32a98c6adb1363979469ce3aa00dbbf78a31256eaa1eb31ec42b41bc859abbf3059f4a53c6f79ef7c7fb41d6fbe62be09cdf2c72fb49c504cb770cf2820d96068f514ae75313cfd9309e3113bf80fe2ece86b1557bccf7303e025e786826243b8f8925003c82b604e5143a0838acc28858d6a6fe00c4c7df127c29e9d5e0473b3bb351d40de21db8bd236fdf6668610df97a8b18a472218a04d2017acf1b957fceb6f59d8ddce1570610e1dfcab72c09d70a236a5612a3049db7312a6f20133b0d1c668e44611e45040a37b7a0665cc41710691b711d886ae71b6cc493bca9a30f4cfb7e02f896e6b5f96893db9962f703a256bcb201a8157f5582a7b526df109c361756af9aca7f0b1239111037d73bfc37037c21d7d16e6d41dc16e56d9e147ca36239f02b0721701e443459aa78a8343691ecb8b9c5978ca7d904749968aefbe2d378118ec8b938b67396a4c0ef696c05afca907a21e46910a5348848907222ce5b78eb2e03d2c42c143a4c83b834f0fddb6ef44a8164d9c5f42ca251b1edd5ac146286af84e7dffec16e877cb57bda2187f94a53a5415f762fb61d2dbf41010d163d5ddb126f8dbb765e9c5a5ea1281579f2a4cd7e81bebbc01cbc813e131a7d08a2c966dc74b7a7566d9eaa6fd0b576377ce24f0471ccee05e6768b429f2f4dda86dd430192e6555dcce5aab97315a6e4cb932bc58c74fbcc841b163afa32c220d7b2d075b7b1d0e8394bc67132331b9ce168dce8e24828c0c821f7c905be8990e85b8a62b668e3ed186a247ca5feef6b6f41c4aa5b4d26b075437a66818543d961566d60a6958dbf619c51ec8fb66d24512d73d60fb44c3b7667bf5d231bf2bc99ddd3ae71300d2653c6edc22b15e56da172a7bbba09256fcda3d927abe4194cdf0a3c78b89a077318c10d54be95c1e5a5a4ab67f059f9bb3fd4fe59f92be2bb4d288065c52eea29802ba7e553022b6ccd76bf37ad0836151f5692d26795f0ce54423b43a9c296549aa499eff17ea986aa3a9e0b542f8d94f747255c44c11f598e687132623c980030723422f13c0d66c19f36c26d9c381bc9baf8d137c50fab3ce6a3c53c44efe818631eaa028be3cbff1a057f40fe24244f360073b3ba29f5eff833a24e72adcb61da4a48e0f9f2d3258262fd64a3604b1ba0a5e7cb767f4f422c7508002cedaf04588206fbdd838a8466b6dabaf1d87ea2ab0aea9327c71c36e48dc0176f8aae6e1c1c32a5412932e4be1df9e2fbc6d041568cdc102ce49e899a6b5ca71bebbf46032b8c937e60515991ee26047053a815f90c6009258057b2f1a9e2ddb2adb70dec7a7fb2a0c9e894bc8ce879c8c0354e28c4f469f124e42d4a6f23bb67743eb859a2fcc04ae14a7d350adc4685f509aa34cd2b85fa6685d679a7567f05077dd0141e75087c128b97eac679f9bdd411e961cfe4fa5afc515ade20f29636c822b446126f40f073d42cc2632533b2e87ec44ffcd7b2e1bb60322d83b4e917b244a66551a5e3eaedeb7365ae8b26ac899d14f3e7ad069b3465e3c8ae6116ade46e87b5f5a6db9cc5cbd89bbc5437ede8297c7011a541e88d4a871a77cbe2e07218d7f4d630b8fcfe489adb8be96e202a1e78e149cde5bf4d839095569e7c1477b16f9fd154596f85aceeebc2c26a5a6578b415ab51fa275a6d0956ccb6c62cab96a9f4cf76759dcae6cb58d532ed9f596119cb8a7b04765612cb5fe19cebf451528d11964e19fbd63b0bad3e076909adfba409fb2ca1ff0b24f47da9272f686da3c2d9d4ed8597d8906c2e12cb9e2ac1d5a4b26cb861a1bc963caeb17275c4f1a624f1ed09e1b5cb937474a84a476619662a93dc3f60b00759446418cfcee17c54a304c122c2ca21a71d6935f29e5dbd3934206aa3ea2543ac3318d8b773552439183e039e41ae96bbff5603fc7a98dec671882a56f820e7e6f363ffc81511e35c4c5206bf8cbae45d0ed67e388db9ada3b80501f18b079155960eddd050968e7faef17103353e1a33972cec010c26fd4eab6b7a6019900d6c397a0a9ba9e8612327f951efe580eb97f5c8d6e6c88a05ed0cab539dc39bc3d3441a5508a6de9c9c5a1fff880f564819eb7ce294d05825651c14a502c083cfc5356e5ad4dc9bc21a40c81ba8a8e19b6f6e12851586f42c365172430b8f4dd5cdd890fcf1032a95091f6320d1c114db104c71c1b0c07b3cd64a7ce7ae75f28e913c71142e0b6befdaca992d163fb0796a1715ca550f0ab8a778900ca89fb2250e63e98370df0d3bb9f9e3c2bd88c65a401cd67e611c56fe8040ecd3eaa261fcd54622af36abfc5b7561cad4fecc265da4f6d7244edd5f96485de27c18caff6622cc6e4aeb5f8b55ec4a7e77a0eeffe16afb5eacd335757d0f83af1bf7b68988b746626003d8a22b385977b87abb7139f9c1e9d7eb31f58d29d60db9b991525d4753fec35594d756905732a98d00ea45febc1115b72adb57a8e05699e7ff0ce69590f62749bc98b31c74148798ec61d6b09d30781ea046a7cc0d7c9ab22021f3846dff19cc7577c3381a079345c6e9d58411f7bafbeb33a2796167eef3241e32ce9b41e1653bacc8587f06b276217c2b53154edba13ba42f0e3a85ce9a3e36d9c3f390781c4037f755035fa8d4221263e1d0451d96cc61057f89beb36aee66621a9dc82b83952363b0f0df9f010a328b1848daf07d5c0b99d79a86cf657264f4a0a6d4123ca74046330153ceab8895f3e6d578632edf0733c6dbaadb0a20a3f0a2bae625965952be41d9cac2eea99fd206dfb3cae9218d89d8db82b161c3697c69718654044c06a5b2efac50d56d95dfd63ae044029d1f9176b7dbc52fb766c4c0b7b7285d6ae8f3c6e519ab65d3fde496f84e059812187bbb1db2bf8bbfe0e7ae4f76098d7f57fcffaeacd7bf2f9f2d145bb077e3a04255a0238f043be890835df1ffbbab4595ad0b7854f6cd092e0dea694bc8e2c2db10505a0fd6332b11f0c97221a8dacce7e1d23a64583a08b6a92442721e70762541fbf205b1ee9dabdb872b0c50c12eaab0864136fc734fed6055ea57e1076a84678e98cb3ea1c3192376bd07c1a757169a7489dd40161dd356368ce2def3c6927bd39404a7c94e4a8cdec59583f20a815465504fff49bf54be48d08a02cbaba243e4deca9dfdaecf97b3194b936048cc7a1aa44a16752f830fc19c8d020a7c21feda39516dce4c1bc31132cfda8e3b69681fd65d161cdcd78b27d9ef1ede9378927a942ea9af0ab55fc50952badcfcbca94fb97c3c45e657703aad1971f23fb1d48d6d3d997bfc2b8dfcb75771727fa24c56d4bbaa42eebac72a76aa0af126babfbbc46a7958f126c5cc57ca57b6f119b8ab2b94c20a59cefbf858aed7fa3668398b0d049c140699c0100f29c4a4baf8d96c6049a960ca99be7da2696558c98dd8be3f4797dc5874497dc1726fa24baee2a4696c49a3381239dec38822a92362d6881dc91bcfb55ce8d8411a63295286310012baeabd0345c17daab95dd8614567f2a1f2de4aea3ddc5dacf71a86f70656ab1bb7b43bbcf36730b7f9068c3f3536ae7112cf7ea141c20bb72f14fcf075cd192f829820a5a91054d1c681103d80b283f7ddaa711939d88c2eea9cd914518869f25efff454a68ee5279ddf2a545b9c74be71b12554e5e067490a856955fa918a519e8a7264f31769512964cf51a6e7e8440b53d331ac49b19942d0d3ff751f26d7d7a4af40bef45f94f36012fdbb190cba9e4e8ef8f8623e8f93949b059fd374ba2e3453034bd803269e9f180331d43defef9e76b1d276f7bcbf77da1dad26a7bf909ac4b63eb4b6f391d41ac8c70c9915111a4c6253c406b0022c6d44686bb8983e590753838d73533ea5f53d4a4d7766d06ccbdc48563228ed90f30e197aabc151f2849c9327646838289f7dd9dfdb1323ed7bf1f3e4f65d53f575a141b8af0ea57d0cc7a77f247baaaa12ef6bdc8ebd53afb26b35978ab3ed3772d46639c5ee3c9eb7b76c075789129d718bd925b5f39af1f686fe6736437fa4f6208c47944f07e432a173c8a18e784a054b81bc1057b906e9c534f7ab79180c83548a1bdde7704a838870f6c7824543c609030c1e2923e4b93d1e13be184eada7660b9e0a91b288700299d3f7e0ec6f38f69ac12d075ee970c2fec871b81f7c554caecebe55b8ac9b4f319fb0d61139f8ba5272393c7bb85b29ad1c9edd2b4f2817535dc68b68c2784a7ad6c213d2057ac044e42dfb3a8f93f4f9b20d0338376674de76d2d1ad9bc4c02c8b1ec913d212db4d8b3c2171974ed8f7d6b31f9d5ea78c8edace15f8a8ed9cc8522f2ffadd6b15eb92f85e3e985aed89c68f9f2d83282b249e9d410f676742ccd8312c15ab193a5b3d6cb7622f8f5296887d3d4edccad49275e54e6d9ed2dd9505707fafade8a8c72d9279cc191e801d7dc3aa10f0fb17299d0364f7ef5f10aa9e7185835b370a8a03e2dc666c14d054898b9bc99baecef4f324be08464c96fd360b5ca61658cfe594015c679f18f9d22a8198917725bbba852666e8bb9bda6c9489170356dad921afa1d82409a2f922cdc6abaac02fdcdb2cc6b2f94a9755b4af1530566182b78537303728257afdec68117335cf55c03570b5b67e9cd2bc7e6c57d230db560101ac620bf2fb1773ca4567c9e2f72f94269db0794887413471a85e772aa95f70490103dd087ccb3d678c4adfa384595a84d0f32121f6a6233729877d9260e65e98260bc35019b9ffa5458278ec3d2de29822ee68d1f3a1b790bb5921318352fed058e3056cb29a23c4ea2a5dc54ad71b9c7569ea53be223a6384a6d5b4afeaf4d6ed76db3c4d8268728dfff44fb73e923e184132c604b806d4180c3fdca66e863609d2532683beb4194893c101f9483e76c8e129f9e8f13148dfc256978291abbf7bda3d97368afede69eb74ab904e0e7215b0cd694abe4951c97f58aaa2e3141a983ca72955015307d4c393fd5d7178da759e54d5a485f8eb9e9d494dfeec2c5301db08809e8ddf646856ae8d278e4e1c129fa5f2810ecec48a9df3e2fec3e1effa5acd8ac278fcec4c65085c5f9347c8269a02e2317945ff5cfe86cbb9058f041cab0360a94fdfe4600060529b3bfdf18ab85058fa1eebafcaa29e4f70b99fe8d92308e5ee96ed45c676f6bb403d6d6b4a704a6d1d81ccb096bf45930917b46acdd0ae43de12eff02c99b4acf3ab9ebf3d0355129e5d9257c04672ad947c928b2d55dc2d577a925cfcbaf3bd1e3f268f9c405037585c6a25e285f51c3345c4739f06da78622ccbd3978b0fc5be1370e1c9b7406ac2e31bd360efcd51b4c649d43a88969d2e7776c833736650d1877af5611d6d787172268f9bf2d0e731f196cdbac2f85506cf9f81579c47c5fed5c6995539a7e6dfa2ccf3213ffa0b9c484e63c0090aa62d51155e5eb1e1229585ee332739fbac697488913aec16b1403c9b059594878382bca4dbe501950983e65337f240bd718f9c49f18632ea602b4fd1158acafba1d5cd20f2571797d0268f8a9d7b619e55af1052505cc9679db17c9aada24ef92e39f2cc6f33b0bf48cec8ed36c5240cc52a901aae520533238e576a61a552378ec330be940978bab5b4f5c789d03ed3781887b9a2f61a7af24c3dc2ffa65af95c1bc00662325598a0284ea80e135ca544bf05aa11d548df26efaceb2c473e6218afc41ac591066bec90164cc0352faeddd7fe1a7d617c82eeca2081973afb24f5be81ceddd416499878de3f3b73f1c51dbd26f7244963700139a45ea04d2644bc80d1bc212fedec8cfcd8cbf6eb53f095360a7d3cb5defa28dbbaeff6ffe4c969d6fe62aba07251c53fb68aa95617feb555f7029e5520fef6d1348da144a020e4f3d0670601be3a59cecee3b0abe8fd76584c4db1b2cbba2e77f533af75dade02ba92b7b3d42d683ad715501604bfb465b30665afe49bbe8f8fe54c3c925b104c1528e5612863663cbac53ca4512a64b1aef6e9ea18ae18cbd00034de9886516e0e1343dd9605c2d484fa634113d68ebc4eda887c69aa137ce9918c05c4074e18ec79cb136069e91ff0d26db44a7868161e2fb4657cd7217b5f176b2145cdf60a4c2059cafc05e656eca271a4e09c262c4aa50cb54eba97d32064a42d6f5b168273ca192a25b9ca8248cd3dadd7883f650ff649151eb3c4b59d746dee5a5b82ed53360f8a8d065f2873529e27ec2288178e2d86f4b063fbc08c552033550ba50f2bf7b03db278573588e759bda4f8c39e866f1f2b98ae6dd26fe61d2b336b4a0786c7b6691216edce66e032710550519622082039401511743f0eface214768ee3ef3a53ce168f78fe2d52cab1e401f9efa52154e0ed9b6259cfe4ecdc365f3228364c64e586efccbf0b691968a305d4e2c30336658d3f402671b339e7308cf315cfefca7bfc0f79ee74a4d84854642cb4c287b3f75ef9618093366c292139c9c62d1e1cd97e1620cac725e0d8d15692ce4471c5e608e9b8e3929d7246c7db50e1bd330100a4bfc7f4edebe91117d6fc795b93ceff912f31e154eba9a9fb86c6bad7a5aff3776e10d67fccd7e24e70ec899e273dff196c29e2275de1fc6b379cc19a4007c604bae932047061b5bb963e331491650c84377982b3d3f8cc390c1db0d80bbac284b9571940b0d27f1d8edf0035baabdcb54414b8399246a71fb9272b9ec98f0941946f7778b85ed77bb5f7937b1177a4972ea349c46aed57e66d64eae94fe338dd58b90f882256b2650a63149131af1719ccce0a35755dd35b1d0c9246113984ef5f8e461bc88d2e7cb76ffebaed063bbfb1df2f52aecbebf48eb50c6b87f5d60e2a89f3fa927d212e7f40e69a59731fc334d186b9d76480b77ae7cdee45fa47520739dbe72ad37197fa41c42a886c072cfe482c589e50b52301ad273f48165818da694bfbd8c14e84e7748c35037124f3b5beb932778abff812d2dac909c8a0b9e4413bc6f77d8217bce2e440a3d455336fcc0c51c7df57ad264914e979073fde597340cbf74a39f6d19613ecbb1b21f0a4ee5698c4649c157754a0219be77e3b0cb4a025dc39b9b4979a4805f23d6216669220ee763cbd0d267b339e082a84ef92a6c8597a2c11967e916396743bab014e7bed8f397e914e265382609ade8eddf74b88817fc0c3ec5962360ed38f4ec246f24deec96e5df064a26dd7055cdf3380e198dac903724a0600c6836fa0bc9c0299bc28782f12cef2230f700b8a15a254e20a5b6cc47dbeb00185087b4968c0bc1f71c6796937b3080f7cc54db39ea295d54d95b5ab31e5fedca4bb8386b555df2af54e3224bce8c561758f29a3ceb6f90cea88525949c57cd3b5eb113c3c45611257fe953d192f4543aadd5724b6530bc145d9223d8c2e077e6388bf54c1f3f26015709fe2fc49e593a096713359c560d7a40ccd9e9beb8c853f1894d36e020db0ab7ca8e1c1340afac24615b64e82ecbb7e515a5f470bfd47d6d64df34d057099bc517ec8ec0af1ede5eb42a2d4aa30d64517711422861e27d56ef0c6bcbf26a25589b8af2b32ebee7464baa6ea0569f3babbfca96e6d60bf4b9736b542d75136835ee340a7793f2d5f0596364c75ee15e7b6b414c07b9b7e01f59cbfb1dc97a03f9902dc2714f84fcfd11cb15e05f36753ab02af68f93780611b2bd5d6968117f404e31a3c9700a86b40ab1fdc8de3aafb523957bad86dc4075d6c672bc549057ceadf3d4f05eb50944a3d22d0072e1c80fe470b7780f0011a39661135b8099d35fd6ab5594ff381bb5369b94fe665a55653fce053ef24604bf99c10ab1effd2419939ae84edbd37e167d8b2bc07875604f826894cb780a8a84b211b5b65d1b0ce3493099a682c94336f68579d6c1a3f447de7c2242d14c473a04b7f7ee5c4c221dbca23cd5aea10e39b401008aa24afe4ef649af47f6ca72ff0f72876245bf62c43c0d8bab85746c2285c658bc4ca9fa426790e974e74be598c95753b20857f79971cc400cb3ec5d691c333b8ab918805277b9193beb06a0e3ee8bb76573073cf7b3d78990d275590ac8b91f7548745a162575d615c3bfa6067f5df7e975a12233ed97142b53fdd98a74714523bb68dfaca895e5b6a89ef92ae7e1c97e1d2e121e5cb070a996de4543cb70c67a34fccd671a5e9786fb48c5a7d5e818b1919ad3b29f9aa1d78d52f4f19b9f8fdf1cbfffcf9d113659cc21bd79c4e6e97480def7cfc4ee537560857a52a999d1ab60b698a9d516042c6e3f505e995b8849ba732f663e308c2ab5515ec8c7e9dd47fe1d5c338b77e06fd253ffdab904324d348d8fa3944d58d2c6b63e00cf0a6ce7346e6cbe0185ca4093683d2b8b42eec22894c0883553abd46c0d6d733283e219facc038e1a9a844ba143aadcbe7069999fb2ce45ddb9b1ed3fe332a40622a47fffc27034fffd0be515ed680b1f3c4bc9ef5fe071e0f72f74973ab59d267a394628d83468714ce8451c8cd07b70cea6f42288c1e601b22f4e8e2d3d374ee4c5b79711aebe3c6ee6d9ba8944f386bb89effb294839574c5d67c381fc411cd2e9308e939774387d278ec8950e63f8bc163565601376f8ac8b84e23b8abd8a279c0cf60642ba4664b0efa163337c1e50333b954c904e763ee2e6cad9b4680b67d33a6fa9c23c10950d78400127519c826b9246296323c3ce5e592aa7be42f7a8e85e15a2497a57e9705acbfe6d6477a9f9bb4867c1d7b8df8619c3df19c2feaf66f21afc0dcb76634cbeaf987c6f50856570321be31be8ce621ef8fb2638e81e84f0ea62042e96a7eeb152e1f7ac71ca131dac3b5451c24e74b01d03a1250336e6c1798821597229b2f9cc1f58ad32de1b0a0fbe172109f7363c1888a9597870ff106ab140883036172d37122bac67d53456d869782a0387fbaa7d6100b11cf7360388adf0614c99c900cdd50c25966860b5038a65aa2b306446421c67a49390020461b284f86e1911047192b2ee13257c718e4f817cc301646d8bcbc00eb4bda9628101c48c8e8a8b06c2ab699f09bc59243e7770c1f0cdb03d356f0832753ce62c35529e612907efb67d07224b2298357550f9738d95b328f688b9c62ef90d05fc266cb418b2ba31bf16c58fe34534ead48fea0d22a8b6c84da2931dca5f1a1d5ad0d867e4f1c7b65a1df80e50f5a7d1a2e7c311143f18e6a5aadd38ef5cd07dd84a96948e9a26f2d1a71641f6ec722e1965cf7a4c8238d8031941a747223debf7e3c7e41106a83eb5ac55fafe1639b292a01d80ba9c073513f66ac6f881ec3a22dd9e89a9302d3b7e622fc96e59fa61c04f809333eb618dab41f21e3fb6a70b6cf776dcce7e822df223d9de2347e4d123d34eec26c7b241d9f7c3c625363a69780337261e35694a06739a4e075a892c70915a8157ba3f5bd1cce8d2d095d21b71ac2e79162d091d8d02dc288cddce74983085200ae5bfbcbd880d01a70cbb9c2271b91b64ddafe338c1123c83741af00139178284a471a7f46d1fac03163b525aadde67c47a61d49bf8213f9724018db24aac341d0caeab69f897756f6932d16513e417b606816597438b03454507805536db752f964b7f31243869fb5f81ecfee6b463b2c885d2c9e324f594011412ff2bf9b812febe02d9d6087bfb071d72f8d5d7a71d8242a10b784fe972ceba7c1e066987b47c23b5f68448df17ff39802a24adc31668c3a0b77b3d065058508dec2f94e0047fd274da111f23579c504ac0ed3d178f93ff8c477b59eb0088c6a973e03cae81218a3788ac854067c01fd9e5bb9589c099bc79a52c6a8756cc9f3c8117398529c0d49fcaf2daf8e6524ee2021c49712a564f895f6b81f288900500132b4a953d902ce2909af0d91536026d1b30cafbedd908ee7b50cbddda081c8c0ecb5af817698d0208310dd938150265188f58eb887cf74d2e18553e084662ebc9bddd15509c67dd0f6cf97ca98a73179569903c2425a3a0fd17539abc8847ac1d77c558a5864c5382a9e47db016d38a57f1ba759d3780e6be19c098ab2781c3d69888130c075359c3b8516a797091bfab165bac174b8780f6aabfac78aaeccad53dd48d947b4da3a52cb3a18fa142af841306aa959771f2419c5ad56478eecc6ae62f73fe061d8c910d5396e0ef199deb1fb0d41cffc4bca281543acfba3c9ef99cc46231d494ac699af71e501c75385d441fe0c7229157c40f30a38bbf46493c57ffea8b72cea6b3711086e246105db0041e99d3446c83f03ba1d1289ec95f13a67fe8fe12366734b53be420894e823fe169c0ab861fe26de1df247d0eb305d547fc48e907a6fe951d9bee52369b8734c5079260a6fe7d198dd4cf9394267a5d2fe364c4077768c2b9afaeaa7cd8cccc874875e32872c017edfe61877c7bda2139dc38154cf675877ced29fd8dada5d43f9456936f85785dd15315bfb177fbac961b529eff5135e9baaa895dac814a134010e8dc6b5bb9876e5e5ade045418dc53d7ab27ce1ca845bfa6f35bf4854b9992ab5a1886f12557650a95b22a1ed61d0225e8f2bc46eca7313c47ce976856c0e7c0b0b088b0c3808d3a90499c71e5892d45b4652328c6c2870c356ee8a24bde2a137a474d0c0e05ca3ff8fb1723c687bf7fe14063884bba17f2fb17543d61750fd3d5dd6cbc9aec9d9b2efaa7da78d13f95bdf64f75c50f4b60f25edf1299a7862ddf177de2dc8856aff8e551f29a35c6f835dd59ae8acd8d1ac60bc4b924baaae2bc826ccbe5207f5b28e67299ce87b520fdabf6faf54a497a82df940c441f030f0b829a201ea01306f71dee1ad90478d6850bcf2d380998999c0f986428874a2ca293d68a04614b261f7c8d35abf5df87f0b75c9ac36f9dbf76cb8343d51c7d229c7724bde62df8c1d8b605915e0f804d7cb54a2c43cc47d78cfe486d067a3cd73f6ab8ad67ffc6a1c853d23f254716e37ac791fcd623ca1360634ee3cdef0b668577dd29e9eed48fcc6424bf9798f6c5fef6b6ca9a570b49c9476480620ce5f0a0a038f8b5bd85ec7577ba06bdeea33cd1d95bc9be666f8827e54f9b3686a09b35fe149525fbb4302bd629e3bb7e767345c4217f7a73696af48aece64a1817739aa4e0365a95e35c0de542813838c2594fd463e8af9dfb9c9bb03f01ba082c29335b3db38e47e3df2030466ed635b131bcaba9f7b8d299563d13e5a6580d37a3ea17cf3859f4686b58e44cf410794a76c911d9f345117db43d1df9e4a87e5f4c5da7a7786d77ef4097e4196b5c4ca8740380f857867f3a1c2e668b103c11a67662a9ffc167e8b30c7c1d7239658974f0f1c570c8380f2e98b3490c0d90e1623e0f0336921e1053a9539dd234f4379cccf474e3c46431a8a37d70c1a24e1e0e24e7300974b0109e03a3200d686809d170c1569829c7f122f15a29ad096a3ab83393a53c5574cc6f65c9934649eda268669904fb32181dd9982ec294dbbf7f626c8ea6460c3911bf672c41b3a2d4622dd31fcc481eedd751123e197b9e09f2ea5b44a5a2b580647300cf459000369767db28182c4d1eabd50cf5783e549d2f661de23715f2c58c3c718c8576504d7121293d583678aa83d534f79c2c9432112c26231f90b197e4fa3a7ba547faa75bb240979baee27700e38bfce5f555ed41242b05970f84b6eec385f3d629f958c7429937e2c925f127075ae452dba8879b87b4ebe11f991a9d41fa4cf44f7a46fea97a993f90838676c0c32d67da1d334e478703d4b7144af977bf92663e0ba8350454b52390f681f7774dd2ed81f8f7b043be3af51e2d2c0198f361eb8c631913ed956ffaa1ee308e86346de3a38e98e8e7156798924258d95d55d4c29ee54d31bf9da973bf2400ccac540c3012cfe7310f52268bb84857edf75e304d08092f4851d69d82d4b04d22a39871f2e597519c7ef9a5ae3f6150e53e01d970f7a89c787bb3068f8d232c570164c33080fb86cae9ceeaafb2d7bb75544e776e7786cae94e6383a89cb2e3bb43e584bc19d62e06e75c552595120c14d1076cd0903616377db3706f18b052412571dfb1529c31f6ed20a6e50866bf8c366407f687ae491027d0832408fc630541acfada836890590b4e684a1651f0c78261306beefb4b6c1c3ba394077fb28de65eddac8f3a4726d90caa4801da98023c7a790adbdf5cc904cf369bf9683528f824f893d9c94e1e389b036fe9b6a20e0ef31d2083946bbb56678e00f3bb3795c7b004dbdeb43c225149c9dd885808869ebcce088af0aa14a5a8b0f66e557e15afe8f0acb8b05a90d77439f2e9623c0e753a7a872c3860e5db750f9da2d63f077cca92edff404fb2f5aac22a769b33d9e63ee785cb29d689bc50cb5835f6e2ac2b9b94ef0ce224b80737cb21d55467ebec12d8852239fc6bcd7d027ccc1e210f01c31a2d2948b9ca84838826319b6dc76e2dc38ce32453de2cbe8c088b16332cec2cb39ac5fe234e21a8d405d21e2e95b28798daab894f6d346e6e806e2c56ba1ae939a2b892bd159ae453558b55996c5bed50cb35f9a694b05d41df287a65b72878a52029c9d7474136277ed193ec248fbce9a7deed20a513d2231396bea7930c67d95385c77a6446e7efe9845c5f1379814343df8cad19707be7f087b3fc8b2d9dbc5c77d6becda44635b36869aa996daa98198e706bc5cceecddef45f52d22b5a6a829953ced9c66b7af178c6da7dace4b52b8b79297b42714d2f6f1a7e3d8353ddda2f3759bb0b16e13e95eeb227746b95bbec410b8d3a390c85ec46253af11a709a16ee3a89675a1b8b67ecd328db5516f6d8298e9a578058261f56f7589478461dc1394d16123240ceb86b3b08756773968ce364861039a853c649da916e42de21412ad68db3e4428aa438092641444337fc5e7708c035e6bc9d894007c8ce4f1741abdbedb635de8089dddfda50a8fec30a87fffa46c2e10f57391b307c46cbd482e04871fb7bf2f1e6c3d78b67e606d6579fc86166225f678676a75514cd8793598d9760c2dc371747efe0d6e801fcb035f2b91fc9de0ad9affbe98b25307fed9d1607e8f77325909d21f73d43160f63ffb55f36a8dd4593a87b1ba5da8ac0dfdbb27deb5654e4cd568bd7760f007f4fe96caea2168dd96216846180b1f71cb79629bd60848574ced98880e0d61d8aa6bf46c11561f3783825ed3df27f68b4a0c992ec7df7cd2ed9dd3d82ff23bfbe7fb1de4eb1df3df4ee143fd194553446e877aea4828fd8989950d936342c86343deb46f1657b8b6c137cd009a29037fd28a7258b1fa4248de30f2055c46330a5848dac8854171755f16b145f921e19a6576fe24b711c2f0bd04de238ed8a55c4492a8abc2582f404409cb3719cb04c00c4d0d4cc51ef825a0f2243e9fe06e2f6000fe600ab34a461c846e0131287bf38611b287c50a4b6282d22a76b28728c320e18313b4ef08dd5dc4de46ed9091a3474e7bc9cc642014d93c06f9e334db39a886ac546bab38a0a09a71728255bf3241e0721a0627296a64134e12dcf8e2f1a8d841ad923675d3a4e59d2863ee47662c51b14b35a0b3ae0f42288268f5a7ef40d8b8f159e368c630d902ee7198862ca97d1f0845e802951dc16e7e0e59c01fe855883545c81d13f56000577a649e065510c5dc638945c3e90ae6a805129d031ae98c416caecf112f208e8e2910d79e4ec6de934892fe1abbf5fced9cb248993f6cfbfbe7971f6f2ddbbb7efcedebffc9ff75edf50a1ffc83a7ee5240c4e6c7b3b223f903de7bad3ae8b904782dd3bc60a6686d047352396cace6e7e0921b9ab8327195909251a98f18c4e1b4ca238c19acc7ed8b71bc9092b941d2b787e48e7165c59398866d483f54666534867005c4ae7b767592b964443447ca82185245a43eb6b2179be15ffd9db6d9d8a2d9726cbb6820a11fa56de7bf575877cdb217bbba5be2bd18df8c3ebc48d0ad23e75cc383c019fedf1631259c99cd677709e57e67120e6df123a9783fff6eed92f67cfdefde7ece757cffed1318355f859c9e95a8569c457526084019a3f6834f2a0214a95125f6264011d5e4e83d0dd9743c641c98c8019716726278b73cefe58d8857171a3c4088d5cc73aa651db60d41400254cedab79a5e956f8b77cefa7a94c6f32bb7f1493308e262c79107ac0fffebf0b962cdbd288b4d58da3766b1806c30f2dc185a8dab4bfea0841fa228e523a4cdfc7af029ee619f219e26108891b4da4883ec46cdf61aa3f7e18f0b474939443e67749a17ce84c8807b375fe980180b5600b2b6f9e6eaf11f9a197db8fa5c5376f6acd74e0cd28597f5f2e9430e24c20ae3c4b2626c21952af20c591867c40e6099bb348269ca50e7c27564963c1854fe39796783154771ed2219bc6e1882503958b838ca9d2c3406338034886591cc561904e8321395f04e1c8521e667449ce994ed7a3c4ea18764939ed7009488f011b95e915a622d3af116cab08f94b068a8bff26263fe83867a551cc78d44a096729ac465959a6782c8165753da9db3d18ad1064f069728dbefc482449e027cc530cd05421ceaba21c0fd6eb39cb7fa07a52d45dce3ab8559384b1b40dff05f8fbb9b8b1a06e648195bfa19e244f488bb4c81358143096922776e332b42b211325e267cf030be53fc1e12b8a239c58739cb12a06d621ad69609fcae0e176eb51de69d59a06448cf3c85b9afa390c0262c162212b2870f54cce3ac41d57cec59d60d1643236d8732c56edb1c0a2862629b2a3e8270b597b1ea433ca3f901eea72cf8fdffc04ca5c662f52ad35d0ac25a545377219488f240cd6e59f78413704cf175e6c8b396fd97b819ac4b59cc52fcfdebd3f7ef64a4d2427ef8bd451d98fe7ad3b6a86d5d01a0b36850cd0377e50a86321770a23fd2d99d67417b04467301e8bd5c5f860a42a880703ac2ec16b196989dad69825ccb68aaa9310bc93dc1112a6ce0731d8405a2959b294b02ba1cf9013664531fec2529690d7c1704a17572d4ec4ab0e5520e3d1cece5cdcefcef07e774877e4037c27a47f2eb7d5e4b6614038bd6ecf699ab22432f52bc6ca1a3662290dc2f2ddf15f6cd9748334bc871be58637c87a7b534dcd5d9d7fa580045b25fe34a8e016a5fa720d5550dd07b684f6e25f07c5fc816c52ee3e61ed45193fa17d07a471ebc898dc2a6c6d6b6c6ec4723656dab8fec5966dbd69e16437b37b49f863e852aae955dfdff3f64b5a7173cfbf73e9ec9774b3bbaf77396b6ec1b939ed64b7e07fb1023fa81a1aa2e56aeec1e4dabaf0af97ffb9958df95f6cb9e1bd195e5d6fcd6a4136b333d3e190cd536e0922ad67c3718c05502ab6c01fe386532bc883602c76f7908191060c9103cb3e62469a520b8de59cb148d7dae888cd54c9bba229a35968460359fd56ccc81c25b5fd175e83c7428c5b9651f39672e3d2e89a105d6ad9f172f02e7c311e07c3c0cec5ca6eae80887c8b674f55a2a4d291f37da533a5739614ef13b04d9d268bf2ea1a9bca61b573adb4791cbe789189bcf058792786f2cc3a5785da3f1fdafb11ed90f30e19fa0b8bcb9ba7a51b8ce854cd45ec03b0c26d7a3ef4b8e2e473edbdadf6fe56fbc05ba01f42fe8b5b76c81a2d3ba44ecb9d1df242be58c92e68bdd399e8bfed493ccb0e91c746c155c39315105bded38034e8f736c0bdefed7d4e5b08fd7e8417bfbe6be449b07ec298b629530c680b32317856b8652d9f6e5d92fc5e5400928278f20e468ad92b68c2f4b941084d57da07e82498d128c24d662081d968884053248878cae8c8bd570036a5e6024d6ff180f4b0a4f8c61d9e9fa5f86d4871092c532aca41e0b5f3f500570b6490c68d5adeb42817d3ea90b3eaa2dc27cc71f16e5ba2bf3bfec73fdfdf925ccfc9bcbac2dd1c34464c1c0a87b6431784fa8885742983a18ce64e16511a84329e66704983d48877277a2e1fb5685cc269306332a42e37f625cda569e181c0f3ec309e318e5445c96048a3210b07567d3abca2bb833762a3bc479aa3279d0cc6e1824fed1e82d98c8d029ab27069999cac4aa7bfe06e4006f11c7a1aa0714a264f5c4e199ccbe4887c1a2fc291d85e54603f2cb6395d858c2ac7fe4e9c9034a14108f90ba38906b8c44587358c1729ae4d2e764df7a81d7bb0f066a3b6cb25fabfc4ea4000cf17a9120ae07cdea29000b3831e8fc940aecb40566494cb322072d141edc004b18e598b2c19c9c5f6afaa5c4e1247e24b8f0bdecf3e63eafa9210d438a511863d8e1689aa2591f952b977146f868f049c0c76e5dbe97715173169ad932759ac098f01a9ba43e44df975227625386df8a14378300b429a8002c459fa1e2734509ca3df7d2c66919fe70963a4ff13bd0846e4459c9cd3e134ce9ac5f9d1cece90f3ed3409861f787718cf76e4ea05d1643b9d26719a8a35df6657f3900a61b72df758bee35ac5a5411cb1f6e02b8053804543c6c9394b2f198bc47eaf3ece406393e220bea24977e84255d32cd1980409a8b2ca4571e0310aaf7c2f5a6b92acd0fbebe3a90ceb45d6c81583930d7582a56ad99584d7c3843aa3cd9cc842247a27907ca48495878d4ade568d36a357bfd120cd64f5cce855305bcc708730520dfc3f28acce9996e33270d7aedf5ae53d15fff784c0a8f09e65f2a29ec6e911b2ab75ce9d1df2ec220e466418f3345c0a113c5c8472dfc2902ed1ff65108de24b4454c052efe3707165fa978142f818c609254c3c0d81426a666dd53b7b4597f122ed90bdaf76b73c3ae8ce8e2c0b2c244a347a4d837020b6bb8840f49150668c00807af1b893e00e929b5641fc929e961aa3430e76773bae0b44d2a14c9b757c20ead3a92455a38617bcd3cb882fc45e724ed3e1f4553cb1f75494efa8f9ec59e511cc57cdbc1b845beb9b3dfb7d54ff1db2ffd52ee4d74a7ec0327fbb4e5833e6202d9221233da0a397172c4a4fe04abbb5c3d384d1996dd0978b8a6d704d678c733a111f5bcfc8bf022f40677209dfbc8467cbf651d63c9e0b91eb0cd7456dcc8cea53dff502a1762d44634789b28c37416814cf920977c026c54571e4762ecaa5f5149f752e09964e8e47b9fe5ed030145b66ee063280b8457a64d7bd2d65630fe92e3b9da25b7ac57b40cbb71a2827d61a62e5de80a86e8bbfb7c8f5354064d8d308386e3a6df55d9ce1cd9b3f7a94d9592c6f8b5e034df74262c9e7dde77ec379c9164fadb2eb7aaa993d05678dd4b3458e542756b7d63a1b1961cd803cb566af1f3ed2ed7ceb97414e10bb405b9054ce55459309273d3ffd121d5ad5d3b46ccd5bb5b1ee16440de6e8534cc5ba5f14c508d1246e45e3c2a843cfbbcb2ffd723461f997dfd921ef18672944f60fe45741fd5887cd174e1daa37a53449f5f69be8cc2c6787eedaf19292a70982a1e09e0d134b5e5ecd83446c534025df5b1b5a56b7e97a0230d5fda7f9af7d54659db4434c2c819f4cc4c513a193be923248ae04d92e964ac46d255fc8696756d6d352cc06d902a4c1767e1279aac8326610b5adae3a9a85b77d7313cb653d5dba66787a9615b8ef66c9804c5ea2af15623e65550cac1f21b6ff0e019088205d9229355035e28c72c95a092334b54efcc8140ef9cae24b4b9e32a9068b7e2671c4c8391d7eb8a4c9885bdd89bd3f35a537b0c32055b52a325dc7896876c1c834403e325c1806b320f592bab5722e041e400de596fc47493cde9b3f905d7143d2cce3c7dec5ffb19713d93e7ab0d9b8eda505a12ec9ac4a73536c617952f2e747a9e533f2cc0ecc9602cd154a5da3d55414401e59e0dda0cd8be766e5ecff7a44b32f8899be8d8c0d2b18934b8626ba81da5306d25d326334d271e182f6ce198b1cf232eaa08e1f88f188ebaeb226bec78ff5cee55fe7ac102d0a7fafbeff55dfb2502dcd47ffab757c5488fa48c830643471beeaf1a874f2aeca58bcb31b86b35fd4f769cb5e0dcc996d1fd880eec9e1e7a74a2d387269cccd9ff60ea569a29c1333a237e0c7eab0ddf3c877fffa682366e6b65aa4bcca64ada65483dc4f6da691f9be361d14a37f929c5e00ab668f6cbf4a862c70149488b96e7776c83f69340a9963ad06049b1460f7c3389e77f3fb59259dc7fb06162b96be80f75daaae578329564983318f644f9da427f9fcfbfc13c025421316ff66fd28fab16257ca4f0c8296b5d92835067969909d32f0da28f307e1291d7e00d90a02848dbae459b4d41dfa925ec1c46d1bed55e2ce94457e0b98b12cdda5f5735c80fd03554092892fbe56ee5156665255bc4b3c1504a326081329bb4a8bb3dee1ae832ad152d6f77c24a54c4057f7a5c94868709651d797448706a331b8f90a331da8bb8b5a00283fb190aa40963df714e70d363c7673c06c9f9e637e06ea2ca44adddd03a44eaf495d511668b1158cf25ea3d83d237545188d487d6f7777b7435a214d7db5e491daf1a645ea3e2a37341ed2823862dbee578dd23d06ab0ab45f272fd27cb2845db084af49c64540f44dc9781c06c5180415bc12a27dcdbc7f002994cd7ae4ac2b7e1bfaf2c6c29c75d318e10cf369b27ef01039401b0ba29d6355342178f334d86f8df46d7890b64a02fef46cf3c4e58feff8f9d5f12f10d8d120977fc66671f027e3199fb80c83021f70c2781c5e403d729e93a6002b3862294b664124bb19d2a14c6619c709e169ac5dce7200c123b9e08262e7bf9ca3edfb7fbe54717376854cd58557e67b7bca16cf9cd1b999be1dbca0bbcc96cef46725fba79da3213b104fad5bc009bb9ac7d6a40670636045e145ce008624f5fa1ca71c8945bca38c191c2e781acf604680613e0fe9502b84675dd95bf7050ca6fb14b2374d16c3344e0ccee3e534e60ca2212938be03c186805ee900ee0f5ed3f94027a6b1e18c6e0751ca9288e24e0d30fb7079ffebfd9d6fbabb3b7fe36cb86de0cfb7e3f1763a65db333a1757d3385dced936fa8c8d5f5e05818aaec7742821db85ea8a053c43964290c284a5e29f29e5aa642867e9fdf2c783cd2348398917e97ca1d9b314e4a1af18f4d407f520eeb85c594ffc165371d57cb01cf2baeb3a84ba72f8dcb075440e40841e91c3a2584409a82fe4ba9c5bfbac8b171da7a4b820f37efcb17af95840d52853e9ced40839ccb791010c94f4c8fe9ac3efec90d7f12818db78b1f8d9ba998ebb7895b3546736f5d53e745a7d157413df54de61a2525e34d8f8c3ce1dd223bf31fae1359d973a51d557c31d4c116f55c02aa141a936e20e40e63c7e4c6403fbd6863d9082f83437f472efe3312dd18c4528635efa00d96a7ac64ff5cf2c6c07df82b0cf092055ba7d0ce5c26b410117722624a49729e55004d66fe5c467262c750ac5666d1b4ebca90f63c471cdb9d3023387225cc847c39e402d5613cfccca8325a27ee73a17dfb4ed92e4f535794de7f07bab9d4357513d28bd09fc27b0f992816a36b04ce6597257cfd4d0e0b15c5956df7211e295f6f5deda4ca5c66fd70b58a98838004cd97238599ca4bb0ae3376fe4d6434863b956f5f62b6cd30c6323e02f2f58d4f667dd46e4ef649ff42cbbb80f3243d57ab46be34045d4af01774c16abc3813ca8635830e7ab92d381ecc15763cf929b6619372f07cb91897c72cf1147fc3248875322ce59de745921d33823bb47aea053d525f59b7587340c41ecb80e34d97eaf7afb8e92adde8ef61b74247fecf97b3c58a747f963ff7495f5d9eaae5842378166e2361698b2125921f8e06c13ea03a3329e4ef7298f61be786c50559428c4e39c65b872c3c8cd61ac8100dcace0dbf401e0b6415a6565ebe04f445d8d21c81216e8d97c1e06b8fc969c32cfb7575e459936c875978b5a2cd31663156ee731b52196dbbec472db0cca58e0a4b1a7098df8384e66958c6a5e039a8f76d62693cb248fc9595ab440bf4869d502f5e2e6bd794d635d835d77142fce43362adc76bfb40f56f91dd704e0fcb1a0092be96625d6d51861eecebaf1054b9e25136e8c86571db2f427d1893ba78e41ba8f33e9a8373bf5590f17d1b0fd9d3755eddb3da12df85beced76c8571eb56177b708ab148ed8f27540ffe6a91fa14a7f718bd1cc4508f9d434a120ff7b0acb1f4da7e609b199aa6230afe9dcbd83b8f7bf4634593a657bb7b6f09c23dbd8e0f8a63da2e31776e0e4c58937e3af547982dcfcb3a7018fbd9f66634250668ed815e991edbdcc614c574230b1669696d3b1e7e32a061827df7ef204bbfe8178f522d8f8e18953e775e4b59cd6809757e909a81c8c354c594e45d898a3a2049451f7e787e52a4af646042e99eb1da44e2d7bd365a8c0b55deda0306d5b4ef39e825aad95bcad4732ab2347dc4c3af76e777fa3ea90bb324bc73d7937e058f96fd564cfcba2394674c6aac1388a2757ed639c2effc9c2307e1fc36e26a7ac00105b5371cff65299e7db88d4e5415f12f7017ec98b08f54b6e5556a043c15c7e4ea4832e33c3b30ec9cd4337284768f46343c9fecb7cba05a050b5809be4b5ad9c9dc9efb7b3319c9c3ceb7aa04c05b251a1533850182592c612c10092b10666ae0d9af1598ad697a27b1b76c17f96a24da4a8574421768392a4eb0aa9b544a85fcabb134451df21676b4b7b9f3c85b16e49a8c25875256b01e6c566e168fdb138e218134d84101a0ee364647220b415cc60c50d40536710e3ce12e6485c6918c3bc0c6d1813a7044f34868a1870c3213a251dca3cd1953dcae74c97060f6f1d49b769f89f84c9755f55f5a4dbedb63170ed1aff013389fc0e52e2a90fa8164edebd318b08bad668329122077e1b13445d289f0ee9ef4381e03d9f01420ed4b62297686b2b6b5870829bf25e093d63884fa67ecb825cb6aad14cef5e3e7bf78faa3835aaef4df16f61348fee2d575ec4b53123363424dd20f4c3395b0ac6b1f8c9280d51a6c0e70aed24e0fec8a97ec238a87674c6529618c88bd928ea06f18eb87da66ff3f54aed6d3a3c506a24c47d07af62a2411a60796d10afed3dd45230d9090ac681ed78acdcac56d737cabe1c024705eb5a8cd0be9cd214b513eee55e715fab26675d694d6f6383eeffc641d4161cb8459e586d09699f41797cf91c14d67c4a5a1df298b4c8116989e7c95937a43c958f94073472ba6c6b8541d51db5cab6ced9f979c878a9bad021f8bc98847a3e27352cf70f573858f0e56eb56819d24a4ffd9bc934c2ab47566d169c61a9cd50bdc6663c11556551461459d5a98d589a2d865338191aa161aa84000b9a38bdcbcbcb6ee5583dcd1f3a3c0fbd8d1e215353a8f17902508b7396d034ce4b35bc7fa6eeaf27d50e366cb79293b77c8fde2ad31989b65b26c5b0cb5b915e38942dbfe20e08a902e91583f0e274c941828927578b1a5dda58ca9c7cdd647800bbc547bc93c6351487895f92781670d6a561d8b6ab60abeb32bcaa7db8bbd529b97df0b551837c9a931cb09b4e59d4ce2f56a1a7e88a3c214b7b5d722f4cd55cc437ffe66b47706644a735ea7d109eaa72dd2e397210305ce1d921bbe502b4c4e98242ad879e0de82e1b0a07619b969beb240c860c3a032d588b66d34aac13f49b73b42474f9cb824fdbbacf0e5eacef4cd13df83c2a651b84020ccb021fc62651dae446a56416cb3c67326789ee8e5db064e94f9a1292c6338617b450f797052f6c005aa8fb2a022fac055a68444a0178610dd04273402f052fac0a5a68bacbadb20d5ee882167abe880992b10e6f4dea18de07d0c2fcfb992e3f8316de3168a1c62854a0851ac5f05ec548a969ae0d5aa83a72c496efe47903308615d1fd6aa118de2730418fd05bad846a30417635649c0717626f58cc4780218341d24a2bc690093e4ce230b49df93ebc377c0a20fbd4b4dad02bfb45760759a42b80041316b1cbf7f10716c9cc6108260c83e107b1cd46101939467480f3450a453e32720c77e3afc82c881629cb98f3cd82f5ec799a51015c10725dffca43073a887c65a8857a98eaf87a6666f5f1f574db4af87afaadc7abf1f534909b0dab08ffbb4b98ba3a08741a1ab208da4d3d7a44f2107537811197019570be82f50616a4a5fc652dbf851479e9a21ada34ab7ed653895d455855f0c15ac071c42cef845da55d77b4f16aed9bb68596556bbfe502e98bc82e91deb43e3af6e28fde35b5d3f71a7c7ca96b73320077161c11069789588164402887385e708399cf2f57b6042f229b2f6c2c6b564c84d1ebc5433167b9667a227882907f9564ece82e3329c4771baafee547e92b7cafe3f30b438fad7454f9ba3d1d64ec2c82873a376fc89ac31e2a866c9f75191fd239eb989a18f2789e83999084d9fa61fe638b3cc1805b7cea0969fdb033ffb1556ed59aa33fdd6703cfdbb67e98ff987998cee6dfab06305a1967c1bba9681a5cda3c8ba9b0aa21e5e9cfda98279feee027cdf1def686fe67ecfd0e3f539e1aa6c5c22968da09c608c522f4a638626b0ae6432fa9bfa2961bbe9ccc8388cf993f0f03829d5d1a1da2252071005b8aa5ee10e0c212baf41639c9c77edb2d543eb5a3f1c9a6e65e791f2d7a3ef4c15488cbe52da34518e61b8aabe5ed0cd456aeb1be55de43bea12f81db180a753d16d3cec691b1bb9636c05eaf97b1f2a9a1841a59c68dd62c5d2bec23a3687842ba95f3feb428dd18a9d1caa4ebef9e660da82af81eb9993c958d8e481f7e9c56d95bf91420ecc930146a543c560c5ac38913c63117a7b502670e40482c12369263d0701227413a9de5fc3a27fad13378f44c3f6a8c1a107cb298cfe324e5d021a87a621994a1969c2fa0587387c84331ef1071e093277588279c5bd511a551bf4306a8bb0fcc83099bb02bc63b8433f12716ed153f96b3f33894a521c5a96264a91a622ab8fbc7971161d162c6127a1e3262c02d609df597d50382ae016f6ef5c7099878d4334285216c364f970a6701b2f2043d086d214ec822822e60488998c017c3a9dd2313871af39a3a74b1437e7afb9a44f188c9779349fd3753fcbf86488637f209e42f33c218160fdb598f73c6844011377f626c5e4d93501fa5670b5738814b308b533f4a85e2a89e1a528230d84e785b1cc9e7fbbba72086e4c33227b59e2c82d1a434f0a153bd300f74c88b576fdfbc3c3bf9cfebe76f5f9dac02112a2ab9273a74e38c03733c1b68dc994462b8eafe2c85388d05678c16b20e93f309c1a86bf7a23efc406f1d03c3c94a1c049c4c019b12e06eac4adcb2889fb4eedbfd661474dd259e30c7f122b1729a092e21e9cb28a46b003450701c80a1787a33a1366bb04c5e5b37ef9f878fd1f7d4a26e8cf97eb3977775a0af996496b0bf941bed5937e02fd1de251f29281d8e138389bc8947ac0dd6338bc99c42e15ed606b84ef92ee23ddaa3788807cbf378b4ec5893f515c7b3785e74d4eb11a7798eddddc2206ef3ae10d26fe88ce58f17cfdffef49f5651b3e1340847e2edb556926dbfbb52c2c09b4b2162bdb19138e622e9297416fb9a03eaf2d4be75e4c10fae2ebf7c1f605d5996b0e12291e6687882176b481b88f3afc1e0b9995560d11163f30a7c7ab31b244ca267cb84153ba46850617b74f8a5907a61bc7a7be44f2f5ffea2eac16f6cd7145c745bd4b681eda48cda6e7e6ba948b7f7676f11aa5ae3ad456d939fe2f6b2bf7a7fd1af7f5ff69872feafb8ebbc98b2e1072ea86a10cb73e6308e30c31e2209a026d64068ac0e60b7c672d13d65ce91aaa1362c0fe324617c1ea33d5967afc9b3606c2650e38ccffe580417340480881864989cbb7488ea59d88924858962cd64d85e0dcb9e72dbcb33329cc6f1a7d7c09769256b9a59ad0058492ea4fe22f0e1e442b8c1035a8e69bfbc92661857e325830e6121672a4a6583608bba81f96cef630d1f28f76b6d238fb6c85f063be347b2f73df9e8b138da87d1f506d8f70fb07a3bcf0f250bcbe5367655a44e462b5e5f23ab1775d0211fd892ab3275254cfd0b4b9083a9bed41f9cd019fbb760b6ffcb92b801082aa73306ccfa274be22d4bd4cee63409781ce9c09df432566c0d98df128b57465c2dc19e6438f7ae55087c018fe2f0e54709050a0c07bf4a1a55e12d0d2bc5336bb0191e2b0132cddeb75883fda1c9ac0096b380a7ec865e80528755dc8698c645f326ffe2b1a0898c63102deb0cf786bee99037f44d6ddb15fb43edb9f88a3916960671710480d5bebe96971ef57af2d7e3c7f2de23f554a5ed587aa4024e2660164f306e67003daca7781f74bf7b405cb36225acc8f9022642553c4c57b3d5597792b60fac00805574898fe731938a687192b6f7563e9f014b9a9842faef582885f45bc83211fb96d832fe917af30c5712539c082144219cf433617956c5d096a2b6554456c14a21c880d52433e6a7b392e72bd299a132564a66261ba28a40fc3123e92a9367187c106779c1de394fd49dbb7bc4849bd398f79d564baf622a82eaa3d89d534cc2043469d7c0c7767ebf2ca01dbb57edb2ae4148567b89c470ec99a703d29a9bafa49af6d616799aed821c910c2de67b52018faf820fdaf3f4f8319952fef632fa459e98109e4c52734bfcc1580b9e7ba40e55c7fca57694fa1f5753ad4adfc390728e200b186b320067f9a743e2e069aeadcf22d9257459427225f42a1a3a662534f9242caabc33ab6efc9128ab5a9d75a3389ed7e4120c0b817f55476b92d1738831d808311d760fee0931c9c889e63485abd28ed825b1ffdeaf25123dfdf87a58f9c5b113a8ef3802b166ae3db550247377b7c8919684fa6255728175dc167b6b973c931f4850511cf160c412c014514fa8b837dd6314a776b42b8d46508a8fca01a4497500de82167cb600932cb35a95eed1e89c321f2a649c7b34522c54d57dfdec7fce4e9efdfcf2ecf8cdfb97ff78f9eecebd0eeb12b65eebe6340d3b5b5359098d2bcacb0a3df945668586b5a4e6d880e29b1e0af67f7504d7c538028972dab64916f7fa80eb48547ffce94ac79935a17cd049c825bdd83ca97b4431b711717de7541dd9426433daad5c5569f55987dc65171b237a6d886aa02d58ed2b7340310fc89eea69c2791eaa6993ca28202aa891cc936016a4c105233a94efa1ebb4eadd1a09ebe7d83617d5b382ce54336f747305ea50ed4be563af87f968c66829ae60f6def57511e980bd89a5efe9445decf56089ded3494d22a252b57be88aea3a1aaaa55436d04badd6bf0651fa6d0dbdd4d64c8d520a5019c7eac2f535e1e9e2fc67d1b8e1d1840c7ea229fb54ceb776c876a3cf2d16033e97f851fd3b43b3d6eb3822cfe6491092fd03b2bfbbb7bf62ebc99c3f4427fae0017fe44f1c302d7dd4107fd5b5dc41b0b6ccf47df09fdb7a97469f5b45e994c7bc147e76d5bcf58368f763d5cf6d6d046e985055f500b5644111ef9773dc16f6a4b2fc4b4883c8d139ea0a7d3751a043867118b22126bdcfe8bc233407ce3cb4f3d6ce47304757ec4d3997a160651467b31c3049827c604b2b8bc184ace4077b6674592b5d4188344f8a4447e77ae82c0f9d95619d7b31331d3b356f5de5852819a8637606c0839c20ee47b8c40c124c456195968992010ffe64b93e1f26b7c20b36e352d1d2af6b15b326b4c904d4556a53d9eba31a54b4c27b5a96a4e6555022b18face408c62ad140c6adf832c824cc015ecba111e4ceef8f1febcbead2f5b58a9fd383b590a75ad97b5d3e0f038ca371cb726afdc8f4197021d146d9a16ca7878ca8f4bdd623db7c50942397d209e99189ad2267111fc4133dc1aeefe904de062f70685332b0e0d6e265fd45211ee68242ad8ec4c6fe2fb654af59f22ee338115f3a81b2a0813c34387d8a614b7c2ac5953dc7964249ac30540ff6834549a5914e3218b7513492eeae2c2ac91f846892fe70e40a697fba4737fd2f93fd06d98055b20075772bb301751660b633b955800fddec8e98a41424622bed80153888a62c095236eaf81308bb3a751fb7a19fdebed6bd41fa9e33901800abc4a1c93710d23be8b22e19f47abdbbdf8dfecbe3c202fe527c9515315edead4bcd2013ef546bef81b1cb430df08ce279b28105177a593f65507e7f5515bb52a2a025b4dc9a276b660b6296a0110fc195f1b01f11f15dffad170d7e15640ec29ade9f04c2cdb065e3e410f3adee8cc92d36f987ac23e2cb14915cb2f3ff4ddb4f8f826b1686f1d6ffb3d34d19cf9cdccaab185ae9287992c9e7a65873528f4b8bb3b9ae1a1764add8ca639524150db060c0c227713c3a5fb2d6a95ff2f55bd3c0ff585e0042ce878c6a90ace0cb78a918506a776acbac5bc927714aa55bcf3ecde51c69995b9296a27aca0095174965a74c82fdb247e4d123a7a87a0d4bc20080d0061d3278794143fdc73b1a4d98f98b496c497945f73a38594629bdd20f6a64b501182106bfbe3bc63f3761bd2caa2c72ab1e3a5bc96c765406e0b9885d12f855e3280b0dfd8daae803d0dc77167de4b161f94e3eee99c37b66cbb936b2242fcf69b08aeed16d14cf5e5e0dd535fb703a639cd3897b807dfcd87d26a2b3dc031bb1b59171100529b3dc7278a2680086af9fecabb88c80ff0cbd0f729029f8c08e7a603da5e1ee2d4b7a1971f11a310eae44bb7208af6ea182608edf9cfdfbd9ab5f5fd6eee03882d9af48b5f4b56c1d54b138e77855b62e3039e7ac3ab8a840f3cafde4f4b0a6675a9795f8647c506aa99bd1a10a7639ab4148aacd0e3d1fee34220937c4a640825797de6264b1a80b2c4d200d1a7f4be31310a003422fe260c449c0f942a1c723ba2150df4057f1503deeec90202227744c93807c27eb41aa2fd342c2698149cc36a580950395ca611c21a6540c65f1d6d95ec4bab9bbcb8445ee05ca97d967e6497cb56ce083d7e17a1bda13648585924d413e71f747c9b5d529b9728d185155a2a8b123a8262bb78462c9aeba68b029a8a60d7705d5bcc1b6a02f9afa1d0dd5a10b1a064eb02b9abfd78095b358e07d8c41860d926bd35886243e749e902bac0acc37e00b19a859832d648b35b842f6d0802964cb863c6107a53661891fc9f69ef9ebef644f3cb66baefcd023d9e0e99a2ce3802686349a2cc45946ccac59792e71850f93609e6eabdeb6456fdc64949bfd7cd0256dd69d74b54bc58204cca3210ec4a91489a0bdbb3540c7075c44a5a0dd6a6d0db61eb8f217ad7378975ad65f956113749306a1b7e511aeab9a350d7c2c888605250c42591caeca2a60b9b8f13636ea1915501eef5dd35bdd8d083bcb276458d71df8e181988f891ab75230943e6b0af0fcfe05f6f2fb170f7c2fb116630d6a07ab507d8a6f9a5f61b5ae12db5dd4763df2af951a91db6524a5af7bec7e4de79f4a221a86a53520c1d7740eb6d2d7b48604548d24ca6dcd50ded774ae633cc5ef7c88a7e8534778bea6734f80a7155621e1920ac32b345e10ecb60a6fc9f23b3a111736ba504a83c88170ca6042ad830335a3e970cad684819205f06d9f1fb90cc29040ef32a00e9d4fe2e51df86335a4ee4cb9fe26e2ad534223d554dbe389f496240c70a000d4ae0b75b92c0fb5ee6f1c27849230e020f465188ac2a1f3ba299b305f2da7c54da25b99081e58fca6a056929bd361fdb34903582bc18de9709a859cdaaf8e5b55d043b580beccdee0f654844965c56ec82f2261a98ebd1d74c884a570e3279ad20ad854851118d0c9271681310e2e98d5a12ff8822743f9cb07da8ccb797b8adcddb0f0ed07636c4220dc83300c453c8dc23074e30d8561d8c2712207691da96acad92034857d977b3a68950a53889cc8caa0b502322a757b0b109f75046c7d744fa3ce0eded037754036cb8cfda2ab6243ff1bfa660b54a3008fb150359cce18a146cc4ec2f89c86a43f28e84cf6e23a6424238faddc0a4b9e5b5e99288eb665b9cd22a5f241d97fe0db353a8abca16fdaab10f0720d2c8b9a685bad31362daeaf533a6271b30aa75fd141f6d8bbb3439e45b86e5614045a36b110b0fc36a070209d6a048a20e52c1c77adbee4c9483a13a5bbf13d9d0cf0cb628537d19462d9d0248913e97fe4f18cd9b30215ff7f740c761091e397dd8c5c08b85cfe4c6e9638c03fb14d58d55d20f324e0a9388ea1b3bda4949b5f220c69d44a49c2c2809e874b38de0dd36c67f03a122798b36868b42055482e4ed8f6ff7232a7c30f74c2c8391bd20537d78741325ccc2e00f02915a37f0804538fe5784ee5b59f189f072923b3459806f3909184fdb1603ce51d67a8190de0ccc912309ecde888090d7318329a1cb97519d3541ce6a0c6467025a1bee5b078023c171a0efa7bd9a84b9e898545135c875cb256c248c8c6067010be7f184069dfe1340e860c2ab2ca8abf973a32ab4b7e8dc671922e22a8428e25db1143828ec7824cacf32b2c1cefa00add3fa7e72cdc9ec7e1721c84a111a3979797dd683efb5facd72c5bedb84f6f9990382567c325012c5b58ba871ef796a5cef56029de40676dc46d9aab9c9bee7cc1f3b8e225b20e3ac90761541273d0d6174a21b419fe819e87de4838534316c3e95ebc7df77255fd5847417146aeab76800dfba1efbff012cd36e04518d6cc318426b08fec36a29385cac52a438010536af4292144d6685d0fdcdb205e29e0cd5cd66f82da5f3628fcb0a56d7c1a5c154a08561242133ac8d9fc515919544381b1d48b98b0ab61b8183132503ef841870cb6ad3fc0bc8cda2fee5176de9e3b119d3427140a50d44c4ce340aa310f5c0ed1754251a54a5923c2429d011a87a2ca0e0a032c56356c185fe12acf95e32b6a82df60b326f037760dc58e3a82748c975fd75b4603a4ee4e27705a5187c06a11435d939241bfaff3814f4f31c57f133bf0b7774ef9eea23535dafd1cc76dd7f02574ed2e253db2576690134469c7e50b6deae738aee1e6b55b3749edb7dbff455a57ad23b2db21ada5f8b78e67c1ee07ffe922b9e15ed6c09296cf57589daaa1dc0b2e573d5225b50af2e14b93394027c714fc6c4a7c26115f3ed900c8408cf342705dcf8b2a0c1d7748cbe24f8416861b5deb722e06188512f6edd8121f3fc6ab41c4531a0df5538f1f63c4b03446e004c41d104eb88ce24fbcbdee16ff8e4d5e5e6dc6b37f1fb651881e6be6dcc7952888892fe43ad9aa05cdaa6f6ae8dcc7c6dabf2fffccbbf8f186f1f2e3df55919c28e174cc7458387966105d032eefc9e0241a91e3972f5f6e7ff3d5a1ee73142f1016800d032e048334c0a2da16f0a885966013b24449128b83c4882c2267e8329db1ba91fa848ed9eaa874eba9871f856baf6223e2b656a38ea268375b231ed7eea64150aeddbc9ae698d9c8ec0e0a94c75c40bb09caed91ed6cd4ed2643727322f984a59f4ca41567cd425b4f18aa6227ac72fd22d3e837463ff81a960be313966a492c7ee7c5b0e853cbe0139636865054594dcdd055bdbbad8f0ceee68bc3bb35fbe832aebb1efeb46c9587e15a2d16b065d5e3a40557f528836e059ef8ea274caedc4c6b8b0a00056a4a48f77ccf83776b4648d0b48dff74831473036b9014b6af8006ed3f38c9f695090b1eaf6da7c066eb53919501f9e03d43d6bb34a21c0b4dce05e1ad4e3c5617fdeae5a3710f326df556645dcaef48e6a6d998ccb5aafb533dabff7dde7e9c28c0069fff57d5bcb635dfb4ac18eb9f1119d6c8ab3c3cd9a8a3c6bb878c48ff6494cd4b463f348eed978b511aaa5ff8f5edc67562fc2d02505d149e4fbc1bc324bb295c62371bd02da416fd695147d3f3885c8cd2e3452975941d682a5287e8a21e7578d5864becaa3e8598aa3effd5b52573cb50b562e9a452c5d2b0a0a468017585352b9686050551cbf4927075c5d257d52b96161487fa4c526bd62a9d54ab551a16d5122d24b07ab54ac3a25aa8c5a50cc28dd62afda14aadd238ba6049caf54748635df0e8ce55609c9b8f9a40ab37b484d190f074ee00574602698cc7937cd653eea38143f3b4a40fff19b98f05c1cfc57f86adb2f6793ae9973dee55ae4d8bbc66ad1a7afd97d98b9a92faa73e27a11feddcd73e6b5b7aaa4c3eee6c8ec8309e2fed4b45c3f2e5ec589a31b4edb96f5d3cf5ce42de7446755a5965642bc09e77cc08b8c2a4475cecf3a7f0038723472e0eba5804969a9b18c09ff5978a6e570724fad8d705755b535ddddb5f7f272964639c61111f67e65fcec80a86aebb9fe38a83ee7e599395ee9cafd8f6c1fe61591785ae9cbdee37df7df3f577077b0787df7ebd7fb0f7d537ecc9c1eeb7657db50eba9ef237d63bf8f462ddba1e779ba3f42e792aff3a22bb7e4e8047491a3bb14799b803d3e1f19b9f8fdf1cbfff8f5b836b5b5d7666036953c124223db573c17cb6f7c891895931b38647bf046f93eb68f2c5f79ab1f157fe35abb255133cb1525025d7755b1770268d83fbe2d46dcae0d9f52ce770edb5f5b178698b951cbe5bda7c23dc6ddcb65ef62e67ee2297ad837b9c9101ce1e95b0190da211a4f6c9067fb7582b0f7c2c7f3eb55a3e5517b7ad8b47eae21afc44f82248a1e2c2384e20b69522a520d816045218cec9d5e25c2f98e293c036bb1d0654006695f9af2a7e999ffd5661971dee7f77f8ddd7dfec7ff75559f346fc560e5fa63612414d2f423a9bb7b31cda21bb1dd89f9ebd7bf7ec3f67af5ebef9c7fb7f6e35e091cde8706b13d83c89878c7b73d17d04564b715341db3514b7aa51db258adbaab86d75a3ac71434dad20761bea2715046e17ea6ec58733c7f3ea6bffe6d99be2d6c5b0b576b50107ea1bfefb769ccb1377eeb6b7d479e77bbb4b542df5b0d2aaf1540ef484b45ae4c8adb8929db2b3728f4c8c4275adf749e182aaf9e19b246c1ed2216b27ec7d12cc3aa4654840151d0d229a2c61a73d967ff85011cc115936b8be86166f87290ded06e42919278cfd4213ce8e55c9c32e0f83216bef6f754c074fc93e3922df6ec1ae7ccc9fd3d13fd955a6a737cfde645fb6b230b203d4c938a469caa2209a98f249f9c284ba47285068955482b87dd3797c19656e4292ad35e09d7be48b37590513e2df64bd2fd13c90ff9cf4c87e5920ffcf716c656f0e498f1cf860272817e728ab925e871485fce7cd63d5fa13b2d29752b0720030961d910333905f9496c5e54bee1ac6f3a5fd04546fe3c70ab0bbb66d251341ecfc4d863422e75621301a99aa6309c394714112c33849d8300dd70b3379389aa313745b597dac1573ebd7212bc5db7eb7bbfbcdde77dfed7f75f8cde1ee77dfedadeca9914e5921f4b68a62998bc0ede4c26ef51e5b68d9a94eed9879419ea9dab6b2dc6cc0e59cd9080e6d1e1c4f1bb7042d9c882b05d61b21fcb777c1e5035c915cf870eaee0d2fe05b17f1825ca48aac80e670aff9bed52a6bb29d0fc2696def963629cec26aed75f63b07ad15245b1a16aab55400dc7c8a4a9a20ddf76ec32ccd6d6fe87fc6c761d3f133d886785999e48ca221019b145c0960571807e288f134404380dac3c989db82264c612d927112cf002243f4930493a9454f278b73cefe58b028956372125fb0e432c14236124d0cf751c0534394317611c40bae9a54b576cc16294d1977612ccb2d9232570e27904f28c1db3b787bedca377e76c531720ceb416ff37c975cb36eb7ab5af6e5f221ea9afbc9aba8746a1973ce665c8ee3687dc56e6586a6eee0394d7c1db8aade4acd30a3483ea7897573447ae470b5dab86ba98df8e339cd87175bea5db15a0705efb87403a00b1c79992596dfbb10e5315b29583d206b202b4fa5c271b48f85968aa8a0c9848e6820c970d0ad9c27c27758cc1617ce4db4b8bab03578b6bc302e0ca0dae9250040456cd3ffc096a7f6fcecbac3a4c8f75f805829f93f0b58893e5429b340bcdadaad39024ade2a2b415f4d626d521fa0614039615729b3e6fcf0c5ce7f97d0396e2e769c536587b446ad2372981143ae103a6e26860a64c97154244dea73e6719e377d60b2ba33959e6a83c9ce9378b418228808f6aa10968b916575874e6cb95157c4103571658df8f0e0cbaec495ad86287bb7c2e6b7209ddea6c0518a65a9b8690a4b9ba594f50598bb3c2b85580dac5879487133120c62ec53dd8c1c1175b94c8c09c9306263ba08534e7ae4ac2b71d6df091dbf6d7853bc911fb7d53a5260378eadcc40687794e03af084a1159be2bc324ccca6ba1c83b53c8e46ecaa0822b6aa74f3c2b8aeaf837c9673f749ce7d9666b953e0a726cfee9334bb1d59d65892bd8079711d3d4d943b92a3b99fcfe36814441388f19fd374ca11bb6a138cb9b736635a60f878ce83639e9739db684bbbc67ffaa75b1f491fde07994d1bb2e01a08e1c09fafe409e2168ffa38b24eed8abe24bebfb4b54150e1e1a91f7d9da69a70fa2ddadf3ded9e7787ad0e69d1fede692b6f38ed1f88befc642a26310e69fa8ef11492419ef993410ca5a86587fd0d8fd01c6d8800efa78f463af74c6c5ad4ec50e694ad9e105bcc24b860518788beaa9941758760ca5472112da11aaa6d036ed8fd82ecb71574aa972157b701560c16acb87843dfbca743a101d66c903627f9b2b94da9d4c92b4e9ef51dbb27533a67beb3f415e999e05b7d75e95e2d39a2bf08926198ed1946430393e8aeb4280376604ee4b03148ec34ec47dfea388338786047b21f339067db100c3384c7480fd611db98d9c99b362858e68992ec9b7c63987e59db7cc6847c71eb950de514056182eb2ed32e17f16111a0719fe8384a101c686555c8dbd6b8c51e3cdbf301c6fee2a88c123f88eecef587783437acd41486ce2d9bb7a6d4b074c2781c5e809fcd4eb26fea4a792ba409357b4dc031a1958e4601c66caabd574692407506e36349180926519cf8bc8e1b53a4eb27473d3c3ba4d2fe7e626cbe5a049ae76f405b341bb1a5d70a6682edb8484fb439596b122a0e2d63f787f02ea152921ed9de732ecb50e59e76d3e105e799c9822623d253cffe48f685da8ecff7f74f33655454cb604cdad812b075306389b117c663c0fbbba7fa75fa7ba71d1cc9f521e809eef9bc1697d32064a4fde409bede0ff2f17c96862a6ea34683e74fbf779f127c2616dfb50df81e3aceafa675f7959a33fc6596d43caae76df5f683dd38e347518e19d965df34b3df019f53617f4805e06271c6ce66bce88f47aeaf09fb43a7684273704ca19b467cc7473eff8fe5d8c9fa7f883d0bbdfc6a4ee6a98fe68f8f9ecfec94426b6096518c9533cc246cb8483854f6930a15cf1e10efda2374f0e9f89cd567a8237085805642d7c85b4be2aa0a7c1debd8542482ffcac5e9159cdcedd1fdd29826135b048b3fa1e2842998a34ee03fc9be5eb36492d7a984d6b06ccfc43d345a58ed618c06e43e0ea29187d48dfe2f44895430a03e8eee90850c4c858379c24681203553a02f4d16e97409da933418aa3e542bb73a4f438b801f82b69145a0a83c9e6572d3efd93beb062316a541bacc18df94e173ce126964708add64a3adaef50774cf5cd69a6331d4915ab71cfc8407cda9dc94b0e02c111b9773b439a749c496ad2302d43f6182e0bfee9016853a47ad233845908f1dbbcd386123d1c26a73b86bb7010c804ca3393b3f0f1947fec2467b1d921bc81cab7cf60c41b3ff62cb36bc8a292cdf8eb7c85f5afe77e984911fc8e1eef71e1e572f4cdafa2b91381921486e14a7a05dd028656c942f3abfb383c66fab52ad342831c2a771924e696474eefc7ced37cfbe787ea66ac5564f43edb435a7d35773e8e017f304d2c1a72e99c0bcd9c86ae0c2cf537c6e553d297d42f3663e864f08e49f338f4f58aa94ccb66eda21075b1d7c3c4ede5e46f50ba1ca59ad882b91ac2cce6dba434a867118322545d04e339fc73c481952e69a46a90d1a4f3f8bca87252a5f519eae272ed5b7d073120af06216441387eaf56319f65d4f7266a65fbaea2b25c966a467664ab72c4133a3174bd1ecd6e18b80b63bbc49610a3eb712897aec0bbdab6ddfb372a8a5c0c25e84a8e164a0d616aa8f124687536d2f4387b65e7ce3c4d61d82333b9d26ccf5665fe41cd85b5df536764dc5195d12761518616b340f46937049cec5fd79180c83345ccaf5060ecb40403591ffbbcd9c120d9c67d626a01673037b40e563e3384e8e91d6568bf89a71831bce4d8399b675809f96ca869edc290de388c721eb86f1a42d6e5a53c871feab78c28941654aa72c12a7d82ada6eb75458c09c15dfabef5b52875e19fee585232510bcb243f587a2030d6b0d743031c7151a9823347487a6aef8fdd6bfee3dff3d08d6c320909be4bfa1cb7f34a335219d867e565dcd8638ff0df0a2dbd11a0c99dfc2ab6edad6666db6c775366d6bb33647ac35366dc31dbabbcf9bf6268586d2101f80e8787b79d3dbb69402e71bd9b0c5742b4b090923fcb3dbac482634da9cdf5e7ede9def96d11e068fddfcfe7cde2adc998148c32c3b5660b59abbb2c36fd536e23234074f78a69e9f0e0c89e88cc900bccc1eed0996ab17bd7993d1206506c8b2704bbd00f0de7996507bfda6d4d6332c1049a3b4dda2b651c6e212fb99f35669b85a9e67ecc6361aafcd41eaa50a2b9c6accded3529ad6fd482569b576d93f559a65a6ad0c3d961d6d9a8a1d6391d1d17cb4bdb188e4f553056e9aa63f418a363693aa38d4a584adcd19eb93b6e9aa84b8ffc152fc84185343538c9377c3e4c9f15815d98cc30b152b4e8282b41d08a3965108ffd630f31abb2488204a1a10bdd68c2ef96663f4fec78225cbbc7e04b47eada048c4ca6034334588ccd48ebd4f63b1477ac1fbfbf66a9c5a10282ea08b85dee22eb53774e54b9707dd161b8ce32f08e29f30a31b9820fe4a30437653c924bb36a7d4eea4455506815c688ff341dd296343bb4ff18d3bc4fe7045f1c739c634516947aa0a8ad36d2e90c60281356d9f3a836bd4d7928dca14bc401e86ca33a32011b3d3647a1f35a806dcd7b4280fae0cbb0a78ca6b17e3f1b18c1dd8f5bdfba4846cd4e1fcb285fdb72a7de08dd73feb4e29b788bc725d4ab759f7bc5143a392d56a2d5eda3fd9959586ecd1814f8af6c04792d51e3f166d7ea1e934c3b682ebfe49cb22f74b9905c2c494a7af21e7dc8e9ef62039673d86b03c3ef558c269588f29aca68dd8c21eda337015ceb0bad8086f949acef3e972c378368f01be0ad59e4021b10955138e3b26f9236fef393617c9308e521a449c8c16f3107cf3b269877083d6a57a53605dbaab95a05d198da90987ee6e50b30c6a41988ab3845edaca696ebe7d290bc1b2e757e370b06cda85157bbcd73a92aea37df1ebbc559802825de974e1637c0d3b5d58e556f96c665664bf45c20edcb142c703b0618d779c4998c0048288a6c105c31556d87818f15f5cea0667d7bf40251d5229148774883e112ae3e8568da0665c19d7ccec30919547ca22b0ad19a3814e4dc5f901b1278b08dc3ae07d5221cc16e791749a2c2c571538a6748f6e6eb49e04ae5d3cc65e6d0687cdd1327f089ed7bd61573c50c504e41b40dab5fd8ef80dab85b5c491096a51eeb17521ff37199c9d61e91ad674f3ea96355d7ec17b2e249e2f578809b9350e5ba7525af4c536e9452ecef498b5a77b71185a93245ecc5be4898b66ee33a8ff251fcecd0aae7aa6b6931764cf970f579415c1dd39b3ce42d45bd20fd3416cb705f9882a5f510bd2236e6ad4472d3a2dcf814f661e4bc7ba05eae237433d609d5b4504e3eba108893f782a3d76bbdd2f3f923e4d26328549470998567657425a56330e2dc2d4d2dd40f4601f9b311529d85b447d28b41ae1d079c31142ebb73ac45b1db20f80ba45bc2a96c4ca738242e470b52a6408b86fbdae2765d72f25439348f7268eb6e53a49fd95268c0c63960c11db4165a29113c61cc8dbfecb13c2e76c58bf228e94ff624bde323a439c90599c303262290dc22adaf0dd587acabc0afafbb81f630378fe37eb2f06bfd26a4757a35c1fd97b6b1af8ea5e821575af555291d2f679790a391bd056f5cc53fc0ce2dabfecb668d9b42fd5f3a0299e2b8caabe610e5c673329aa6cf199218a19a2ba9fac0e5ff86c25aeef6b0d22ef8041c72675d36d59a4911d0b34c68c8e39d8f0f9e07b5858b5790f735616192668f605c0d050949c411607cb8b3e2f92f3a57b2c747734d3a327f071b9f2ecb8a94c84f5d8eedb4f2a2c4a1de566743ef71de4d079ae89673597c3c340c079d88e0a114b9241c479bfda118beea931f60bb141f432a9a995c422395eb5bfb4fe6868af571885a49ff5840be62a78db14691f680c0a10a27eabd3921ac8d75e9da5ccb9a7c0bb57c7d8aac400b23f5a5833cc2f6542de5c542e062ab2bfeead8218f0b3bfee61e36260bf7bf8df2906fe655bddea278a3a499fe289d691bcd81117751e6859daa76aa62e767426e8aac44f2dc656a77dfa323effd2f387445533a93df271cda4f9aaa98eb9378057bfb19916c8503985072845e1f93251ba8e0cad87696c43e7007c092f29aed0a8a24d1055af6993c16f2bc06d130719a3c47d0840580463429daed168884eda2ec16af762bb70ca08168050c24a8cecc5e992b710c3a0de4a6f3c60ccc4b395109d49301ab1889c2f4d7fda3957176fce2ad9635ef7d64bf7ace93efceac1a31e553305da1b856d1454b072b2e6c369d9de6087ca783b949168d0a1d86bbe5ad1e1591728594b2e2c6d5a00abd4cfe32a999977cc80855e4f18ab0946b2253485c87cedcc39f7700328259859253c77c47137b2af10cf5d8a0817e7d12656212132a09616065911fcbb1b3f2a069105ef5ccc77dde52aecf79c76ca832baf6e5a11fabd43784a871f3e23c097a8c866f96f1cff7d9318efc198b4cfbad22864c0dddd87ec181bb8df1dc6d190a66ddda76d3bb334e115e2538aa0bd53794eefef9f160511aa670ff4b345e8da1a8fcd15807e48f98c30dceb1033c03efa721cb9e748bd0da3c3af9682354a5ce48c70f360f861a5fd2d13e5a4fbab66a946f475f72c4d53507884921fcf8234ad8e7e1b70083a094630cc92f030be6489e832d2ef73c77e1d473a6c06b85e2cd28d408197853fb4f65b66fbf7f19498553602d017a8fe97eeaf806f444736627d9e5960254a8f73fa403756ad54ecb9aff2ba7372cad45817e74f0913092188fa29fc1c3d348bbfa6f3365cb00f819918446c228401e529041d62b061266044cc1a47bcbe266d3db878b6ab217af7f255ffe009dff1d0aa28a11670c2d26761e89aeb3b7219b6becf56dd1733f0c4412858f1308ecc09f6c5abb76f5e9efdf4f2e52f673fbf7af60f722daffcfcead97bf7cac97f5e3f7ffbea042e2aa1f57616a4d09f3762c3013486d5ce63ef4ae45dbcbebd9d3b75ff1a71961a0073d1491f1f3e2d0878f39cad6b88d3e7cb3a0255f7b6d2f55772cc7624abeed186fc1cc58c472d85196a217f76a5c4914fe62d9897b1751cf6b931d68d405b578f5b216e9be3dd69fc8a7b2978ad2831a1a96159f27aa257bf75a6bf1264312470fd64c42634656d2fb6d856c5f4d182506a59804593761968f343dfde8bead2dc2d95895955dcdeab15d5151dd6dbe68b923cfffa28fdcfbfd873c4d665227b35d979e8cd879d6cc4761d49fa5982de27daae2c41cba8db91a3995e7d72b49a7a6a392832da90aa68a07550bf6267a9a4499c55e56008a83870ead31e0d09f7fca891393f84e244e7dde339f7f847721ab2ae44233bb71fecef9e7adc1fd51d1d1396492f080a52b6ad4a568690d356ce9bcbc840687603721e609a403cc6b46d9a40ae017e58c7639272a53c5be9def736f2b05986b75ccf4f27cb7b4f56671eee63229e4a7339dc2a89e2c5cf9c8fe2ddab96ff5dd47c3fdffcb046f3837a09e0157bb4c12074e7cdd2cb33c3946698573b4ebbd5713a46d610f730a9ce9262b62f23be48d09c1fc6f15c302b8b529608de9f323c6ac3c5d91cf6335b9e3ff2d4a8f154b9b1cafad8e5757262be6a091cb72c4c41a63ddeeca7f1bfd812964b16cad9724bc8141490c9147f518b9a292944acbc0cfbc3590f7cb407d3cb10f09f33092e4f250b5b6568b6c8911b77b5b28e4c7e7f38a90ae841c93c4ef04ca4937bd5d919fcc71d4bb2b7b82a49289dca32ae5696298470f380734c27132b67e994f891a507c13a61bbcd69184a5bb7eac8f61bfdca6197e32cfd2d1013b59d0a9615005e027ab5636ff403b752f1667399a3b378148cd7dfb2780128091288d9a5728f6ede5d5c1b64847b41463ae4d012c036d09a54a9d59395b613eea0915c693492a5f8cf9fadd30ef9aa7cb42b31dab2fb676eb4afca36039ec31ac964be55034c3d29e8a6b606c9731a6499afd806ff29f015ab780f2d5ebaa48aff57770bf4ac98b94101f01a91ca11b77dbf1147827fa8eedefb2341eeb64c7835995424771c0f6aabbf7bdadf3b8578c756477e0bdf017a17e51a24cdd356ae46575e0638c3580c5c5441db78d97b2aa3d4be66679392a7f6ad238f2ab68e84f1fa62f3d2c697fb531292bc8d9434a741c2f1b824bfab6161103f431a917306d2783143993038eb8e9378f68b688a2a8e8168e58492199d9338c19aa581a589b0284d0219cc56e3d45a9983691850ae46b9a1c36c59d6d007b6b457f5de670ba5317cc2e2742134d0ee9d762089bb43f64f9be60c09492087d3710cefe5f09050593181b4b237cbfe1066b92d325f8bbc758f1699df2e79dba0a59f09bc9cc0cb32e2f2242e7e09cdf7a001b16748fd38f212bb0104722a5c478486320b59c6249f751326b4bc8cf3374d68c4c77132b33255d2985012b14b7346a3c3e162b608691a27ba7cbed22833a9ea6e1acb58d5d6b704f74a8f712695ad830aa0c23789872e84fe3c4e599406340c97a8d3290c13dfac91059d1bf8194c77497c118ca018a665efcf24f70cfafd5f14c99c9e0ec865108682f5179c8d5cd496c2d49b71bc481c75d69a940d50914fbfa95662e0164a0bec3dccd20296edd75a73ec04b523625dcfd96c8b8cbcba4d0d3bef5957f35fbbaf8018ac2c1b1515126573fec46584fb88c8973d1239a18c52418cc8dfc9bed00f772df1d721fdbc87b47fd821df9d96ceae187ac633dda25cc5b60b3e727d9dbdd213b3dbcae398c0c4fff226185581b0c97bc2cc8b6573723af6c7cf447441c029d80575e029b8b3d4330422a59e25c9ab00d02df0f9eb6b12f0e78bf19825da6408d7de2fe76ce4f4543dede7301b146593accf7327e6ff026e5ab0f1522882ad3c590cd338c9595df5fb646cadce78f24d9f82c414a3b4b7c811e9db25b725120d76e9968d5fd1b3b6c1be802ff21463bc107b70c2522d884d7747ff3f7bffbade368e2c8cc2b78278d6445222d192ed9c9c76e775274ec733397db6bb67cd67794990084b4c28524d5276dc49ee65ffddd7f1ded87e508533414ab29d9eccac763f1d9144a1702a140a8542957940e97382e3166283cb47438fabbb415e3b3fe0cbd1ae19e8b3fad2558466b072f0cba78bea82956f11b073d75cb73232576fed8ed82cbd108e7bf47d9cd55cf7fcef54a42c920a0d6b8ddf4d0b47949390c5ace042c52df8ae7534b18f5c4d2c190450e5551c3d7b9d5f96b5a5cbeee17cae5606db5559c971f437aa944f9763d7aed645a756b44094d05dc378d3ca7f731dae52e02ee6212d58367494b40675180a3c79dc8299ca272ea59316d4bdca32b4c4ea08aa2b7af5fb4378c3c3ef8d372cd19c8ace2d294d4d8d3bc29465c6efe02007abe63dcb51325f625c044fc83d92d817c1d739e779b24215e4b14d75159e9184dc273db24bba4bab527908d4ad651a769d50bd2a867add93a05f7cb8c6342f94d42311afcf5830e79fe743dfc5f9d0ff26d6f56f7b82a4d74ecf219213c1e6f60e943ca55a3ce5fb39555a9d5bdde0a0c9e3d8d1efffa6c677b9676edfa293b97f07af8ba529f47daad5b19ad53af55e9b6c5dd7e9a2c05de17671cab71f517d84a70bd36fcb3ac19d1c872f37085a76ad7b5757f616e14f478cff0173a4eee449b8f1bdb1174655d2ad507c4d2cb3ce2dfd69d5ae358f623a9be76498c0958921088822e06b948ce3451e5d3032849bd9e8976db898cff9f3285d24e1cda8bb4a8185d7374ad48d55fc4af017a85b3c72c988b7a32c57c93ca7d00214a8f09a39d4bf3a03b412c0f1c90557b3476630a70f548685a27a2b1d6e409666a7d76d93ce03db220f09b7f3a0325775a65a033dcc8c756c63afb4b1b5ce2517ec816a6b62918e280ced3076f41213695dc09da5051429920666306f514b08a3aaf0f44cfceeea931db770ac6575e1b215aa70f8d0f2b453fceec9a767e2b7a270e3c60dccc2a62a01c7a4e50c4acd62a8633d25b0ed1bb1e292b1840cf38266c2a1e2624e8ab44d468b02d81cccee304a266d3264490816170a217c910c319fb371741eb1b08d86d23983f544e2862da57c81c8bd12a0eb04c81130514e26b07a4b5f0f5018ecb9f81cc48534bf446f817cf7b598cfd34caf76705395b3a58c26931b06c2d9ae3897bd160b72824eb92c089abfd7153eacf88b145aa021d5395912421efe5b9163a5005792c7835e40a3a9d4b4a3634601231e560c1a3f08a2e488c337b761bddd59359694ccb6d3268faf9167ab3ef49427d3d67532f5026fb625f57b10787b6259619ded36e96cb549e7616d813e162f5148260f54d7e68464b0382445cee05e464954b0267c700f4d39f1552f01908a980cc628311becaf74be883955d9bc6a3e6629a699c18613fb92a7c94e0fab9b5dcd44dfa3b62627944f8b309dc93225335d5b26e24c2f4de22beb5c80cf3e693843a85bc6b08b18795993e882250240a1346f1e02533d8f53b0e381698d93bd4dd28cb0082e9bc86ac2c53caca5e9671172e76d4289c4d399a75152c87ad9716d41d1c85910e5a455b08921dc78b6487fa317f4789c45f3829ca7719c5ea27474787070d079f460870f4b12d20cefc7e0c5bf2899d875d33512bb2c6d3f28d56b8b847d9ab37101ae1d2182d437898db66449400953b2f79564cc531890bdde598d9c29b228b67e2a7be58c1cc3ba6c5a2a558ce2aa62ab45f62b49ad98a3d9f5c99e9a4614757781b67d82ac40e4c112e7e9f55009eff625841594be3262e0fd0f8232f75f86b9176c21ee60ab8e678b624cd1afad303b92b9fc6c845f529feeec9186209b064f8f72691bf39cc671157eafdcad70ae20cb6bd8cac5828389da4a795d57d5b170318be6b0d64d4525f5972a6519d188b2a478be4a59ee56a66e33e33783d15b0b3beaf1ddbb64d97e4a16d5f56c707a354ba9dea988c554ed54ecbe5f567ef58ece5f379fd190deb289ba94b66cf59df66369272a4c7cd96c5eb7d57468445583cde64b29f6cb1781e7afa4c75f30f35f49af540b3e4755e4b2239cb01ea75e98fe264a44a3ee63c67b72083a447e3fcf187b4fb39cbde49569367aacd320f749b30919ee9346a325fd877548afd56a399bc2aa8de5519999fcd10aa61462cbe57cfb97819c52a4e4744c672c26639a330c0895ef6e6eb224b88c3e46731646146241f1b7cde71cf239cd6f181eb14a938ae1e64aebad3c1a3cc587bd46436edb4083cc777b6965dc5399d95209a9068702c96a6a21d9fa66e3659a929f68e6b9f87f9ea63ca13e7ba7739ea69d11cd3a9deba2180c5ebe7b37f869ff6830588ec2b985a2d028d3fce7e96cce851d6fd4c1cb340b85399f31f9f857b2073f4191bee6440d35abf0a6ce2710ded67e46c6741e15348e7e674d9ebd4576014dbd8b2149ba7c00cfa32c2fc8784a333a2e5806c7040645e384e6e3abe4f78ccd689498d455a462c273b8ef8c9c55ffac4ed132c79a14ad06a2f1f2e8e08587925e662cb4e988587a4b8d01cb2debde61345ef2116bca409412d6269c9afde00b365a6499c1b7465772d29b5d7cfa9a2f1e9d1e395ecce718e674194b1339063ac7a0f94b128dd3900d46713afed8facb73496783828e62a603df71e2c222c9c1a78225210b3bfb2b1538d0f01a5dcc8a8265e0b96c44f3684c10b5fccc4bcbd82cb5f665a7e3743602c2266144c7595444631a9319cd3ee64bb9b9cc3a78a1b30edef0acdf197f0f61f8579d0c08bdde4cc03ccd46f87fffdf0ffff7ff21170baf4f970f94a7d46d18049ed25c106de132983d055c6e2900efde95b5cfd83ca663d6cc1890435b14f11aa8a26524f3e14cf9e8b5b984b292825ace269684b9be2a84ba8e82661356b87df85d904394e473af4b3595152befe6cb19cdc653702a57ad0700c7a3519aec89960b9fa6689324d20c64a0c95f57f95beef721d6786844c359d3e47a10706c608dd3a0a3311a29afaa152d651d95b356a9463d7997e9637d3347a1c1ce690b026cab4e5f6b3609ea45c7ba32907113bfda1e8d9447216bbc15881af23de3d1da443e932876ade3a34354923455f5dba4db963e87ac1aa0d655c2954beeec89e6b875933ede24e08f7ba46b700e8872abca179ae63d89ac864198a29612b272d2dfb8dbdf6893fec60ff8f323ff69f4371a6d589bfa1b8dfe0689124b142ba62cd27a3a3b16fcab9337af095c85f37a1f35cd3b84b71ea332346384e5633a879b8ba97826340c238c60ab0bd599165c2224c534cac2ce9c66c51589a35146b32bb43d3d1d4cd940af9ab3629a0723b639f56d774ea6e96282fc127ac29046a35cd60c94a9f9d56cc68aecaa6dd68497a7702102ecc3cdfe0609d3a4519084b11011a1a723ec2f0e35a5178c24291e06f2d59e514bb45d2431cb61f8ae1a199ce4c1e91625059d9034238be4b7455ab090d0a2c8a2d1a260325efe3133a204bfa1c534a239f9e92a6149dee07d5e44e3d8d825ce10620400bcab92b460f9269d8da2c9225de41d3a9bb32ca74968840b6ec23e83f43772368b3a19c3ab87e78b849cd371d1df68ad1050f81f5396f03dc347de35c040a173aed205c9a7e9220e098d2fa911c1ec145aec36385711902fd3e4631a8cd3d9e63ccd8bcd69318b3bb2ef5be88b2f5c187146fefbf8985cb0719166dfc6f0eeda6b2352deaaa292a4d3352425ccd284b8636d32a259c2aedae42e91b1c73c9b511b92cee64f1574ed8a8025dd862c95b15734ff2511cd7d55cce2a06079a1703f2b4b5b16745b54863ff3ed00dfb2628e6a367a0039b09f87476c72f0693e5453d662abff83fcf4bff0a7dfc7df007feee1cffdfe46db6018cff06b137f5af8738a3f67f8f3197fbef21fe42d5f6cfefc7d09757f10e1e240341ba7711ad27caa7919be030b687988b8df1739fafdb37edfc9d5ef43be7ebfb502418b1adc1a59233e4e954b695a83f285bbdfefffd7ddc62aa4ecd31b6ad6fa918de86825fd216e5a061cf42fc73813e06590175731fbde769d6b6a157537ac4596906d05ad6267e4d7091af985d6efbad997aa142d1c8e4e51e1b9894eb15263d8e834c82edfd692fbd51ac77abda124dd36a139c9e774cc48ce382d70e983e3ccdbb7a813ac32a7fca3885137632d628c55a7363a9d9769daf9a95a474d2a28cac05147902b645f4a90a44490921c15966f438ee4c6e4b8821afb3f841405f835081195c6a882f68b95950424b3fa95dae7fc7335dd40664d383467029d31cc0ddfe8bea7a1b146a668a604114741791b4da605c9a39081f60ded37a769a68d2f717f6f687bdef3fd6c327137be45b648c6c0b8f0cefe151953be651c31c22e58125f913042a3a6d15519eb77b1b8ce699d310e56591af0cc452fe0d71ab51fefa67caf41ecd2169c09d25ca259956e39f87a443ba7a1548295ed251b84d0d19810e2a35933679b34063e963be8d0d178d0192cc9bf5dcec9134ad4aea32bd050e9dcb087515391af259b2a359ad67cf9745d7991bd9690228b94538fcd432434d396390d6fe0e4cb1703c98f7b3e2fde969cec3b9487a0825148f6647c2bd2d1485b64535f7f91b8901588e9d8445b8297719a66cd5914b65487dd973d75df9be3398b622b438d05a48f95680eb2848148c6a1d02d6520ecd398b1f07698c5adaf38ffa1cce22051b3b66c4edca8e51666d62a8651cb2e0c04ab708c32cfe008be53b661cd5c018e6a7181e407174969be96d9826addf2ed72b518f0e7d4fd0f99bac705cd8a9ac94b60b5af987b76e6eaf57eb0228aeb4d6044f11f3085579eb96a75be9ec6cb347d16577fd4752c92d130fa84b700e071683a2531c3f0a4191976876d421520dff6f5ba70670048581cdf0ce188626887519ab24f3464e3684663be5f5516f870b065217ca810aeea3984c6d124d176000afaf4e0f8018966c23c066ee91a8abefc4130898ae9621444e9e65f3ef51e04bd602bd86a09572b59ce0e931b7a21e9d90727ab322531d8cb36af2e4f824edceb099e046f687450b06c9eb1420dcca8e4cca4a3af7d9f4e16340bcfc84142473113478f70455ef94884632ee87a238c3e9d0f57bed9aa36d6eefd8f7ae68543d26c741f97b9ce634f8e199d374f1b0fc101da63fe6fafdb386b1ba8ca17bb1fc23ea6d7adf552a06a227910f4751b2e7d878e713d7ce3b23f8e8737c61ba6942f38f1fc90e805bf0f0f35a6bb28babf97952dd9b069f5fa4916cd8ef17a53a3d112ede195eed608fa476ccea85008a1e58d20d66132244534bbf1a5ca5b5ed033a86fcdfc49e4251a71e582b34ade0c9d1959a7bbde7ee319e45bfab13aeb2dfe98a7d9b8e75f78efddbbe70ffa85b970c12e5bc7f0848ad5deceda2d675d12060c72cb2996d44daf67eebd9472ae5d92d45c5648965c8a482c2921596a308f7577675c5bfb0df6cf273e1d7332a3c578ca446087392d0a962543cb3e052dafc4fce56bdbcabe43a31c2a1812c3a1f7e910abf917817068d84984095f1d317d53a47f9bf0a4d79ed755eeb9f0ccd0f4cfc53b52bae882679cd8bc4dd5ceb41402a3bb01090c93f975d5c90b158ed69ebcc0ab1baf22026ae5b6b0706e93c64f60a0e011c45f4544a42d996880daf1bd4cb309c615150ede2ca7cb65e19a835be139a58fdc6c2263b4931fc8b6deb8eebaa7bc80a177d6862ca75b677596a0b5c7ba79423fb2958e758f39241ce4fe7b9fe0ea16af4554906d8513dc41c5899791bfeec06c85ec9dcecb77ef3a3fed1f559dd90d6a4e70159e6f736436b8ee91d9f13c8e0adbf47f284e6ed3ec763876ce8ba8e4d790fa9d716ba8d35266adba0973ab3783710322cf56c654d244b348d8520b0e54a44a0d25af795758417bfc598946e46c020c71b529c66bd96cd0cea80326c61daf1025bc348f1ce768169b464c52b0515dd226d04a472c826fc67d5e7cbfb3471ad839bebbbc95a82d49498fc59ec0bae43aaf0412bf8e05f29bfdff1eec1f1dedff73f0fae0edcf27afc8ae00fcf1c71f3d27294e5375f0ea335fd1752a2013afb64b92b77c8d56ee9106a637e0044725dc112eb9eede2577a25cda46c9e45675af5986dd3a43e982ed1d9de9ee5d32a5b9b8dd231be1dcb695e73d342f8ec17e1ac14e520c78a044d0ae1cd625b768adb32841c725d2b8f6120d3e3dd6b6bc2aaee2282fa2f120cd06c22031ca593858e47472e325fc5aaa9adb5bc2558facb784f36cabdccd940b7c3d8eca657cb5ecf5762f2fdfbd233fed1f552ee312cf37b77c312ef62dbfbe59be740415fdf3da917beda85b79d5e83c4b67d7bd696476f66ddc35427cd6b51fbaf26d234fe635ee1b7973b7496ff98d236209021a8d5cb26f74e3c87f5148fa9becae743b4850bd7b7cb2da652667a5712effa83addb72f13ad7623483a7825e374368f621682138798cb7fda25f69416e00b0835e529a486b4a0468c3485314a487fc300ec6f9090c162c8b2bc0db7393ae24a8f0115baf848a4a5f9fe06667050d12424ec131b2f0a663a41820ab00b1a2fdcd203f28216fac4c5286c46afc8082266b15c9c359e678c71b61ba18e52b872939d23629fe7acb0ae290b6fa4518e3caf4da28214f423cbc93c63631632cebed20b9691e12090b88e11493e74ddbf7a363e8789b8087bc1e2740eaa96d1228a4313df902c8a288e7e3706e5344f17d998fd72f4dab8187379194c8b59fc204bc71f73307367c966b128d22ca271be29ca605991a671be891866749e6ffea548c71d7c5f64b1beff739e6684d13c62195c659d4cbc8cfea5bc031425e7693613be6113e821a04160aea22d39c9cd8b4b6894dfc8655834687b4ec274bcf09c601986ff08df41788f205455a9e7d32c9d31c23e152cc981b9d0241ca59fdc8a215c23d79095b552fd1a8c2113f6bccab6294a8892c9c1058d5711dabef92524c512fcaa7d43b39fce21fcdfdee7af9853bccbb85e15db5a9d51dce5d82bcf0e9172a697368e1f2e87f9f8c32a45091ee12d4ca439c5f919cbf2fe08a2d93ccd8adc579448324ada4fcc388490cc79656a71a0328f5aa1c906c7f5564527971a5ec1d26b642659a8e23d7b0d312355c190929f26670da73c95479ec79796a7150a963db3d748471fdc1260bd51aec5119024745642fced0eae74380afbf0b76a215e417edbdc84a84b45dd90c1e60bd67ddfb2af0b01873232798f687a6936a62c8e53f2c35ff7781764e4af3fde6958716d3053f33369f0f4c6aeb0e926e5808902154fbe53de3c19cda99ce9fa8a992543949da9d7b4e787d18f3ffcb523c257fdf5c71f36473f56350860788b7ec841def8d1dbaa1f463fde8d8ba7087277523c0594f5c3e5632dd0b8b28cc3459f094b304229ef99d55af9573208ced3ec808ea74d3e30b911b388bfb7c867defa3882de1043fbc326bcf35692bf56760ba0834097e7e2d405af8536cebcdd13473f7238c41d473f2230bcd6f61290744263329c6751520c4d27ac9562df8a7d03189bfd0da4c8fe06df08f34e79ba0a7d8bd656533802d4d3f8c1b19ef431b094d82005e4342b70e2cd4df222ca3116037a7526a32b718c256311af8066e9fcffafcf48235f97f68ebc145cdd3d02a2ba7f4674fc318f693e457b838233306390c13c30a65c4c679f8a15877c0f2fe5f68db9cf5f7fec6fd450ba6200d12449abb89ac94d6a877c2896ffa110958c257ff8e1ffb760d9d590376df8e1b7a1dd28de4cb2c74b221f7e0bd84da6f4d3157a8b17d7269f4943d417e3097df8adb14bb09ae4ab13dbec0fe70d432534989d990bffad54ee19b468c1d76a6b5377cda50ffa45a1e5a4b1096e9e362719635cb20a3ee445c3df3d7cc92af5c1cb48383743a45c06ea6f98c8fa1b047d2d7020214591828e489a9123968b0f739ab0580a50976c24f55ca9c79fb0d98f521c32bb9125f922e302c365544c3b7c07c2849fe5a451a075a3d8225f53a288a04f79770476c7cadaf07ee5c9fe8e14526649d524e702f4b3112765735368550783a24d0683399f4b8da7763aff7c7f8ff0caa19fc8c180cfb9a651cd56cbd005351a6497236c91fba471c7c526d43883c1dc4a284761116321e855ad08be15ad5e88277b64f3f3e7e669bf9ff7fbc767f79fb5be7edd9cac32dd05997f961c7e398b9f2df2828ea7ac86c74b90fa45504ce3a1151b2e4ae228f1d0562e046e709372be884d849003d5b0a0bf615906b0794e270cbdaef1fa7c244546c7a6a0789e07975954b09751cc8eaf9271734e8b69f0218d92e63c4bc72ccf83f165d86cb549e3435e041ff2460b6fddab0d06f4ecdf8e4fc81ef96c7d27a4bf31a351d2dfd8059232ba9c7f3e619f8a9620654e4356deaf4f8d5763387c362b0aabd4808a3d51d9486c7393fc248ecfc9dfd269c2f9473469e46458cce6f1d0310f3672493d12fb904e13388f1ac5e964f303bda028f67666d1384b3ba22a5132d96c19d979f7bfa68b8c9217e9c722cdd20bdac849989e041f72a29425c200799cce36d39886e966989e2895089e8a08ba0777b5f6ee52a43887996811577dbcebf494758a28d5194b8e7497eb9435220c31789880befaf357a37cd93219b9ee053ba78bb8c8f7450edb0a5faccb3518a5a64163d65f2a4ab003c923f0dfd9152f052288894f5e388cbf2474db2218932acfc0e534233f10ce799c20f60728da9712e0f86a8f749daf260ff4683fc0e098bd4ddfd0623cb52db770f271d150b2fffec6534eb1cf91f908fbd209fb3407eb3ab072e3f29725439b6dcad80b2da7ee117114deb4555e568d4c1ef085f309a3ea6e52d36aecde1ec9d8a1f1e519c9d8417e221791dd9a429aae66acba4effc5a5b849a3f554726eeac8551e3db0356b15f01e696c6efe85184a225e13439ce2ac5b4e9767a4a45422bba44aadc431ddbf2fbf3e4f17bc5b78f5cfe094b3d1ef276a8d2ebb5479611c35e8d355186ee934e857190f5f75b7f8c25487cb0fa247c56b7a7e9e33db50c345c2fbbe59fab8e7a2c611408f44e6853279668377c7310c11ca68823989fd651e9866157284f7ecc32619f01f6bed73a5742c9827bee21bb85382ea09cb5d73bb06e7957912cde7acb0eb00615074f73a561c9a3f70f69a2dd853cfe4bdcf676f83dceff793c18035612b6fa024f7497fa305c97c6e6b045f4bf53087ad5c13c59296d6e569bf9f60354c8c5091a7504bc5696a6ae3528353a172e395c00a45978809baa1427e5dd23782eb224590fbc805a517433ee4275346fe764c5832e152189b8d5828e86f3f4c474c84152972708697932120189a615074699b9b2276a013ed179c0e8e0b32c46a0c55d85f9d55c8dc805dafd47ac9f10c1254fff0dcdc06b921bac86546e7e5bd10cdd2858c2a239473a121f18cd31062e3d310614c0db454eea77375016d9ce28c8e1287772a6db55ed9e427d71e4c7eb76dade40ad78049d84c471f787a3fe1fcd2943d93af1687fc0a8b60cc68b29863634657c027e6301dd96c5e5c09be8133dae9e43dd2b4e6cc339160f093038e03b9c76b46316e5a031d590168cb0ffb260ac398b549e3bf7a8d0a90938cc2c922003d150bd7cb8cce1836850ac72d92d18fd2f02af0344145306ec23aa5c6e2cb1702a70cb0b0e8eed4006276712060edfc778f7ce6b4d84f205b7fa3b41f8579db3478de33d2e0a90c766bc8d2b4d98edbbd00ca4b010b3723b027dfca3c1535ec6fe86b5ba0006d91cf72e33b187c08c65c36d646ee50d457e466bba4a12aafe9466f733905359eda9210981ded115af065b930cc967c568b2a88b3212eb60dd94197a649b715d0f93cbe6a2a01bd6d0ba42d930d7022788f61a26cdd858a539dcb968dae08182b4b917e28ed8fd3cc98e3fe0d2c45038be48225119800700909b6b4e002a6b4a90d4c2b43de6381a23fa5e630e779941ff0bdad30fdb2b72cc5344b2f059a9a5b3916c02ae68a6d6cd5e534e533cf726a443e2cf2c276847a2aecb10ddbf09251b691f69dd964ff312eba44fb9739e832cd18ebb0d4dd38a8b870a0f2d6db290e06e2c2c160507b7146a2bb70841541726a738ce9fe7b03d7a144234a441d25fec2c12a2851a5fd7b53a2ee89352911dabfcc64d6bc945287a5da68f6dd3bd3ded597d7a4351f256a3aada74444b73225aaf1afa3c423364b2f584e6214553024899033c8e5342a187a234c33437434f668e7593afb4e7db61659345beaa6433711b39bdb4f3f8a3ff61230afc16c4dcacfa259533af4f27bdef1922b64eb8023afcea0d3a871dce3cb8ef7f009394f53c2a5b60621239a118297f13972cf8d98f3341547698ddacbf85037a9dc84812b2b81af711144dddb0794ced5e16aa75dcea57a33a2452964d81d51dc972fe44e5314635bcaa2fb8f9ae2aa7c84e545767c351ba571aee203b81741ccadf5785a098e55702e7f6240564802b701877cbfdcd485b60d8c765e0c1900390f92b0361fb96f5cc9f6dd6e51998cc8ac788c511b4644b2b57f0d2bbbf525f37f332b035f60d5dcacd29591cabb9ca52144fdea2bb07daf4ce82009ff4df8d032eee0634d6bf089eeda3c428a3e7fb2887f571621fc8dd58a3c7e678546ee95241f9ebc8c4dd8aecbbe3746a15d007dffac621521c4cb2ed6102956e11427e23ab971d155ba498cd36422bd24ea7b8233fa299a2d66ea9cca71190897d5a9e95d3b972a73ed4051e4a51993de3b427d1d319d45791e19de0204347a5c0bc519389fd4fd8d2008fa1bdf1bb3c256dee22d0c7557519e2708ef8ddbe2cae29221a934c0973dbdd70882c073eb328cc0d100983246391f98a2601eaf928ef3037db3405eb73eab7683a0dc19f8dd18f839a94d472bf252ccd46c4ca34e1885617cd599c2a94ec6da2461d1643a4ab328493dccb12607efb81b95d6368cde0869e0d83576c9d64edbfcaefaaeb14b1a9add7b8db9ca25fe2b6ab9d97e46ee6fae57d1dbaea72470e8b4d32008ced6ed39c0ee64f52f8ea28a8e9992e39448b9ec7c71f072ff97d7278393a35fde3e17be23acf54156bd04fbeecde1f1f1e1bbb7a53306642fd248a4550ad76dfa703046aac27e4301efea8cc671b36a88a4051b8dbe676bb3ac16d9254e2c3daba97ac46c7cd612edb22f8e543e5fcfdccb75936a5d07763a7a89238bd54401a3f54eb922a31b71d00d0fafbcb01bded3d7955870b762ba6d952e6155cf3a6de7397e7022c18ba2ea06c03a5a343ae7d98afb1ced6b0bed5d44ba2b4e1a3e4faafce4b9ee15ea6a2d4454a5ce31d0f07eb8bf270fff540fb2c46b6e88d3b3ec61c5322f52f2b068237400fa1fa8ca23dce9974ce480aa162345f6eaecd004b23db40493381dd1d8416ffb7d711b200e3ddb7a5a65ec654c2779c03eb1b155e9fb688c66e2fe6a574763e5c2e3a1b41a742a7d398d62268cbc3829a94c58a26cb3db4dd85109bb3c008a476318b091a9ab92a25879c62b694f22725c0171a2d815897ee734da2baa186aa8c3bbf366854b1d1139f4ce1efe3a5c461af9482a94fdf6eebcce2b0fe6fa91747a25ff3b15cd451725ab79dba99a58be8d075c17bb60590e172886d25e62f8941486fbb0b119b7c70a5caa300d21b2e1b04d8677e3027f27e2f7b7450a4f3409c9f0ee5fb69f3c1d3a815215160898ea044ad57b9895a2a45ad583ddcd223143a5ca375fb0543bef2dc64b5d632fd40d1edeee5e483678e5f3d0e41ae10565a652644c2bdee5d2e8982b45c65465094673f32082076b44c63c30e362caaaac131973dd986cfa7cfafbda63ff31c7ec0b75c8ac0fda57700be5c75077c8be42f6fa73f6259ea9149e3f2a269be778fea631d9fe4348f15a31d90c7f5f7845d343011531d9ccac1531d95e56c664d399fd31d9d4307b63b2b9ee43c145064d08e51b213ebc3c1578cdf7655b51e96dcc5573092dd699eb9219c553bb65dffcc8c1e3ef136a60cea395880d72ad1165ba746bb8adef939fad8fbf4d364fffa74dceee6f4e562aeaaeb7bcb2d7312c566a67c468ad7776811072a0f788f4ddae3701bb32d5d99aaa3ccb36a65ab9f08f340b0d5960a1bfe646c4169a8fa3c8fa5863432a380e90a7ac528b7cf9a2bd8f2a91a1734b7f7a204cceb08fd6c539ceb68b9453361fa8615b5415ecd52390a9f13617ac39e23af8982e26d302af8b2a9442754ef6932b43bad6debf411a9fa32971c8cbc502c9e5942578da8115f1c46cb9055ef44b11c52576a2ddcbf0aa0013310ce2a40976990d054170ef2b39a5d92447d6a31be9f6271caaf8b8c53d9b530868ddcf7817b7741e51e3d666ff228d42b46686d1e3087261487d41e32824398b9db8fda885c2ebab3998ccbb76e74d99a965297605414b0f5ec16f0b965d1d0bd0fd38d6d9340bf9da268d1f07a6db0895c4a7e8209056dab2422dbb4ca39eda5bef3d7d3ddc91b9444bc4f1e21197ecb5a4c59fd04fbcc1048aeccac311d05a1e331836f390d7b8fa318635a7c97c4c45358c3312863a0a223f99fc8254096a3f454998aba5283de7ab947d33467ad62b72169fb7c187de651615d29d09fb14e596273ec4b5aa0ff13065e0c7206785f08e823ab7fe8636e24fcfc908eef7c86e5e45ac58df359b772acb355df4c289ee902225a32809410181177fa1015853d9a1d6d1979ee582a50b81e3f4acf555e4784b672c374b11dd945011ed8517e99bf6b29eca5f29e65f4530809b4d11bb842bf37a5634623a6231f87e48c779c33a0d1ac7d1f86363573b79b02714e1c2709ec62c88d34913a1590857458a69940780d998c05af1748f7c2d4fe241c05bcd273faf669b9c8af2cf0c14e80a45cef0569026a2dc461b1a17c04b49ee789d4e72a22a080dc585437c0abcd2b3a80ed923e7312d1c0e801ddf3607d498ba2022831b2823ddbce6fa915d5933fd23bb0299e5efec0ad20c6d1d673f78611c2ed8a8923f72b98bd7517c39fdc8aeceda82a25a2ddf6d3ca9ea0790da8d9d725b6a3b2915926d2e7c6cce6994e543981bb86ce5fadea0d4c1299c0a93b026c0fde23c63f2943a55e6e2d9a2985e052896cbf48eccaf1042e9201788a55f9b200c39010ea177a4e1b85e64a5c73b686358aadf37d99e7ab98e10f9b11dfec662e2eaceedf8ca304e67e0b3762dc7769ce0418ce1abf8384dc2e6a931714f0781080ad4fc4c1ab4b14b7ae46bab4df41f64ca0b9a14cd868c1fb4df689db56d2ce314fc7f029a516397f055fb2d46bbe2f87c587e2a63c98bc5e8245b30b302157549c476aed1d2fe09cf3c22046fbb6a5b1b2bb7e53b63d68dabc5d115387a75387eaac7d1e8350496c696d7ed8b6a5cf5b609861288a8ea241bc9cf76b88c5427225b6a564448914a9f1e7cffc40af9d634f757808fdc5161264fcff84e8713fb1b3ac7ca98bc907f289da58938083cedb477069123d49d41e7e0036fe071ca3fb99a33948b5efef2f6f9e0e0e8e8ddd1e0e4e0bf4f5a5517ad65f806dd2ea8ce69f7acd596859fd5b0528f6ce84885f6594fa7671de888f3b0fbf731fd075f4c6e44c0eb2207eb14a0cf3c0782286c8a16b4611916a266e944cd124f454bad1ceed15ae9f16bdd25b2aa05c4582634eb373c4583b643dcefe4ec5c612c2d2cae234a106b858d9b5c23f56e5479765708691ceb2ae4f6dad3f6fb75f74ab96a25317c25e684fdb6882e68cc121021879af39da44ec3f475569a15118de32b1894e8865bd9b5562229578a6bb08664cae7a0ec67a3b75071ca1b5461f755bd3ce573365e7765c2cac0d6cd5809049bdcd2acb65d4e3598b95e007cd2e77914172c13c2542ed6226bb1527270d2229f55904bf223e93d05ef7c657d57b90eb557895481e2aa7549790f8ef025107ac54f13d69407f9cf5fbf7b7b30787170f07ef0f2f5fecfad6b4c5039802254eb8d48702bd8599d04ef7d150e1d39f1e1939608c1b65d1290877656928a5024b83ee90d0288c6d9dcb2e414431ef28815e60e4960aaa612f2b54df47359f7ea4176da3d03a5a47ced9d2d0fe650263a6c49c5e5cd7a170290492f90350487714c6408e02225212b58368b12c6f762a02ba4d23a5810403e4d17714846cce3b7e41e1c3f60ec44a099a1c8fbab0afeac339d9b31a1876fe9db619b0cb9bc6384f2483333daf40d796fefc6943fe6fd55562bdcfb4acc76a2ab6db3d356d016662c4fe30b169632541f2a88224ed266af4d7ae550aabdda3c86decb97b75b479e1acb05fa76329b5fa656ec3f29cd7ef9223edcd9db134fcfecfedbb528f81a8cd2d46f9fa37c239566288b2875964259b54db537a62a639bcf8f8ca10fb47c013134a20b7de39e9739a652f0c817283c888a199d22d0cf337611a58b6f7368e725f020089a2a9aa97c0075d8296fa3d082ab7ed25af05bdcf7e68cf1353e4e2f8fa2c9b4584ef33adccd6f0b9ab166e2d56027e41e493cca646b09a161780c486011e175689e0e021a866d81dc64da0a98cfb472a4be279eb9027bf738bd5487bc2f79113ebd8e13d7519e49f2cc43c23e8dd9bc908a1e81aa44f816d94951dea1745caf33ded1e0b9849d172beb721dca5a5f97fb7d51dbbf98d080d89ba7889acb2d340caf4d6d26ad01629be0b8a0b18ce84cae890a40a997e32497b1318b2e568adb7e4b8a7fb5f6ee27572bad9fae5cbc8af048f60cb1ae5e461c04510846845742c26b19e2dd9a71ba14a60ac1ee9a0b9f9cf7c609250ce7ea0a56f0fe86b9238e5f6d30133a636def1a68128e42682b00e0ac522a00c409815b94325ec9948ac0445859aad01e80e34d798c881e20d3a4a0c231b7def22b84623fadf51b6db434bd8c7286042ff057291a2ae87ee7a64cf29ee0867b9ae0ce1cf9130d9de0249b8c691c8fa8258f2e8bb252ce513751c0857d797bef447f6893069db0c62ed97ec81fc74574c1dff8e094f6fe566094362132eb4ed7cc0afd5eaf1910ce16874a053ed4063ef934cd8a29350feb942241440b180412da13cea2dc0abf12619d7e28ef1b4b2d782f26ceb55b728a356a8bee3dabafb534fa9103505fc7f98a959bd1b9a76658a8a73e46df619d7d55409e273dc397cbb73cc3475a133e082e333a6fea6f469408fb937771bf3308d4fd12047aa60a171f0ced936bba7ccf64ea1ccab243b6ce5f0d01c2a3ac50037e2ac34386ecbc71d6269bec7cd3d3a3905ab77773dae0d36629b5bb50f8e31994a9ed27cff0a30c0399264c9853dc82ba6bce3250a6f15508d5af24646c0ed21dcda23c4dc88815978c2572695128c5da0e3713840ad7ab7036046491654a73df62e1e8b3bf810e3acadfa01b588c662a6aad2bb05c01fd5e7492ee9f9c5c46712cdd74838f525c63217c24bc8b6697ca137a7b3aa151c225c1e4ca5d9e89d8f3670c4c3aa30b165f05e498316ccdc16f0b1a6b7c2800c4510e5b71119a47aa39cc2aff715bdfd514eba223a4e9e9bf589faeb4d56dd218f345c6ab57df11500f04d4c3f5f5ebce91f28ec654ad4af7145bcb826419751af53702e69b28d4d7e030a6288a344b0b329cd3623a2c1f6ec194ceb331aa3b2b398fcbae10afc51c5667343798fd0a9baef34de6bf46a7f9c01f36ffb7d634f15016e77c28a5b1f954ebe374189609f3d88bdefb4a649fd922fa7f34b350764d26ab90826bb3411b6db2536613cbcbab61120a3b1f9eb6eaf45aa6e1e4315888c87d2b4cc4d4b5094d4a0d6bd0e3bab23535c6fe432baa2ad3ceb5e6c8a35b9d23a2cd3e55dd3a46d506aa2ac3eaeaa98338b25b9d3dca0a4a1dc26db5c857ef142a83f600b47e1ef14d92398da0f1cd060d46be3dd2569bf47c573efc584e61123646deed9f85cad1558b21f05a56e334726c684a27915237563e8f843d058c9432943450960f2afd0a4b46d2b9d0eee2d566acb27bb5b97eb62a7cf6ac957355d2b7b2e1ad9dade62ee1bb98b5b526d360cfff6f344951ecd047fcdbe6117fab6d6db45d9d2ee415eb8d7c1ecb67bfa133faa3a5a75b677c028d4fbb67e889169bfdeebce91af19ad3aa5b35434fc584dce2c84e1bb081ef36ceae8379b33c5ddf9dfb27ac9c65cba62c27f76f3561f7c330077baef432212c59cc5886d159f132d8477665ee8c6d6b331958c91594c5f40a595e448988572fee281dea498b0a6c7d525b4c5922af05288c7cb1a5a198b360b5202345109a934b16c77542f72f39ec76b34572983c4f93827d2a865688e9790677331819629ca6a1790d495702eef78cd3e43c8ef87a34a610547274456669189d5fc943eb348b2651423d55fa566730eab04efb5783873d6cce99b071288dc37a9b6debc08f861e2f68d776ef364ad398d1c4709c066165f6f83eec8c1c8b00a9d2c865167d8a1294c0008c536a1d93fb72834b1f8a102ed24b16e75ed5a18c272237e8f28aa5d2375e54a81a374f298bd2c5d966840ac70b5bd7d8aa3bad1c04d00d10ef17aad6d81575b4320e0251f18a6bd3a70de6bba32ac165ee56007ba6e6aaf96b2a07165a306efaf4c0ac70a9e8da22cb877658b2e484520fe17746c619990a1528141c96b5b679db0899b724aa5ca9380089eb8a49854f14763477ef923bda4399d4a5dcbd4bccfb2dd28fd2972fe40e60953ec3aa623cda2165cd2840d60d15622eba5cfe32beafd242b37bbcd76b214c2b1f52b267365375faddbb72c80da76670f1f6ce1d6bc63b21155fe27d0a7c80a9e49ce32ebf27a43f974ccac56d0d6cd8a9063c2b759b9948f62063d9ad1054d2b112170c4f2d571e441ecb40ab4bf10215dc071b0ce0cb60e018ae63057000d0832c642be174fc9061e59a02f56546e773160e06ad922b2de8e8b1243ae11d6930109f0603b247c6e9fc0afdbb09742ad13683375005f3453e6d96aa48f0e442580b7bead2e0720d888732e4930786d7623f9b34766ded99fafb5aae966a97e864744d0b3de9812dc72452a8ddc1310f96f0b68016f9327af59e77c329749b60b2676dddb896738dc0eb856ac905b5b2bc77c4b4db91e160a823b629f90a4ddca41635d186279464ec9c651025ca761e55169ffe001168c996a6ba4af5fb19cc061b9a247d2e64be667d486313504f3d3e35b3342d820118a2f071b6a5789146d2387c4173afc34379b542b36eaf3bb1b295d06dd9e36e05db2b6c6c6b7ccf6abbef244de7e535dd3070558fb5c7121c0def6688f9f736257c4782c2ad382f80c3b7722f552908274c4c07654e057a88907d22c364885b9604032db2092da20bd6b6683f29a63aabb2b6674968da51ff71f75194c3e4644fb848c6b60875a0aaa9ba21b09e96604ef3bc534cb3c5b56f4826c5743f9b347b0629c0cd3da912031d409b347cae7e46e55b7f3edc9dadeb20af8f1421501b268624817bc7d2db6b72ad1b6e06e8db620ae96d9278ae205fc7cc4c1a11e45e5b33c36a506f7513cbd0309242c3cdce7dd622e01a2354d59ebd53c3f84adf4e45729740d7354fbd2e61a7172c6b9ebea1c53498d14f6d824f51527967b6d7265b6db2dd263b65b6b853a304861be4d27ef41d2f55de105de742fa186f9544e7e4de3d1ac7f7ee491631d497d564d45bcdf0e08e9f701de35e1df792d6774138ba457594e35cd2736e917c63ca39b860d955f3f4275488b4f9d6274aa28255524fa357e661a655ab0dcdf7a22570d884fbe1dfd2b7f5e09b2e4542033c6409dfaf4d98c9d59f84f9af25cce374c6fe60baac065f9f2c79f53d54c93faf4394a6f5fd5203933feeeae78d8c2456201c0a57a6d26f7274bb557f5cdb5bfb8876ae4d1cd63fa41d04799a153f5d79119ae7b56d82e84bd8f9725ea39e9c9be60ee5e39e28ff3b9369e8f45fd947a06f1b486a095b4e99f682b139a6d46d0f4b67b2ca5078b553594128d6b6474d82ca43d99b4c826b590aae749efa0d895e1e859e76db0488e10f3bfd94e3f92dce3fd7c6eddb3d95915ce3bc5376a0f2b7627a9fe4b3e267565827a19e33d01a8e6fb867c54d744e9a306ba20b50846da6995201b4788b2619cbf32899c0ae5fe11b42fca92159cc4991b6c968519024e59bb271bc08e17868c8927018907d92176c0e53a6d30305031c2b467c3591e594b046b911c28e0b38e9a2e055079c70119b23156a0bf816e550becaa589127c3f825fb954e117e6cdf80247b212a05b6bdff8377a418fc759342fc8791ac7e9254ea7c3838383cea3073b242f6812d22c044b43bc456d79b88a535a44c9a4334fa3a490e68d18f66a4c817ec2c518bca47f9ab371c1c23536a6b774d8aa342bd03b52bb82c1ccc45a9bd164e2b1b092395912421efebb5a8e533e9a7b3de78251948c33b84ac5073c64f265e4e5731eefb850a841e7a5eb975172c441f8f407d8152ffe0ae8a6673f2b58629b6cfb781066ebf8f3757a6dd2d96a934e4dd65e9b3cf0afc8b8c1aeced96d93adae3737ffda263d5ef307b5f93b3bbc9237a9fb4e9b942ff7f3eaf72a24165176394f95ce00875ccac130baeb5c7386eca57bcef374be8881798a096bb89808593e66e2727e16b2ec5fa001fddf374f579ea278b9d933dfb661caf42a640523af6fb276b605b5af90df3f637760ba56c9e946f6ea69db1393f6c1f23ad4ccdd359b72bd092c6ab16c165b73d8be3d8e13799debe314445ce3bec14dddb5ac723e5447e455d55941d62eb916ca8bc5088a58e24f087397fbfd948bbf67f5ee8330aff41e24de3cce83fc6a09edb24056b5591685cb4ec9971cf6ad7c07faf64652596e1d555462c55341de0f2f79cef26800c2367664edee42e1f0f425e45eaf3bcd29720b0a9d757bd6355ab327c9ca8ec96b3c70f1fe7ae7f845f0d27ab5dfadaf6df2f9d6fc6c95a78a678085695179843fd76ceebcc39b88ae74c290fc1163eb8b8be2adcc1ab3e7d8bdad2cade5f82ebefe96b1ceeee9d746634d2e0497e7fec54cc8aec31abd7862aca1ba0f0b70950bd6a8cbfa9123f0f422cf5bdd8f87c6ed2475297e980c09d4cebc9a68aa27b4e3ac9ca4da2d2778b9d22ead02eb38944bf3d6c1489ae88391a722a4d12a31d46e79379d402df10dda16cd9815cd4136605896beb50a4f1d0d97bc72e85bdda2f17396894ea97084e8915154cfbb4a87e504b6dd269513b4cb67684f28de4a18148a1dcb6b62d7a37feb42e0d0ee322d1ca24bda8a28ea8d196452744e9a09f981f4c8972fe0b4f3cdfe7f0f8ef75f1e0c0edf9e1cfc7c70e453d69d9e55d98b4a87be1ccbfed1d1fe3f7d3180958fe504f4606fa284d7dbcda2157c91dfb7b26ae853ddce4eb9e8a766fd94992484a6842e13ee9c89894e662939224e6c8fccaa2a762cc9aa0092358a4a15c14e3b82343c0081fefd3624fa35b6da15fe17abe38255c8ff758da89d62e97b5a4ce1bc2718fb6cdc4db31fdf364c2138ed9ed5e2e8fa1079e71862741d47a1a1300afc98e69b34cad3b7b8bc0d273f753413e518a35796f78c9cc2d319d9352c73651c66a8998aee24aa517372f4334b44d0024a1649f4db8291c317a85a9e67ec3cfa04da6538fe41df53872fe056cf7cce127567e78f5b52747432a89c8a6fa60813bfcb9a565d91f347e794ad5f852c11fa306c36c0c9d5b8f0052e9449bdee8e377a9dc451ced9eb3e5812a95364c5f63a571fa290ec91fbf7a3f079ba480a96b9566b8a3e64eefb240a5d1af9c641b2c23027c5655ad27b5d87a16d579ca7bfa1862771572aa18b895402a2af3d21a044090862e2a669b53e9086a1cc9fb3719a844b1128f293284cf22bd2c2b85656477a340c9b0f7d16655e57b1c2f3a15227f13e7927ed694db345e88eb6685659c815dd755f00486a319462f642369b2f385719625b872483809c219e9901731947799426373d44eef9d7b2daa117036548a5458a15248b798d0658555a6a9cd507134185cf77dfa01b9d82c92b11c09845717327e8761f9648e04115f8c3a0dbddf139b17c18747dee89315377a7db261d4fa65ed7a63549693c9bd65cf2d6351bfc9b3784e68be8220ad9ad71819d8a0bdab5a410421daaf80024e7b56c0020d2ac820ff810d452c46f8bb48858b28af6671060e52b9841f0c03b429867293b90fdd2960d2c7304d5759b12463385de7a4c214c2f93ef9a2df00ade90318836aecb1a20db1acce13c4ed3ac823bec54c27783eece431f7be009d5a5741ffaf9c34eb7823f403e9741c0472f875014036e0fe8a768b698697fdd4390a58521043e83ef2654a266a873bcd2c610c68599352f6eac2fbd7a094d6c8d50d570a2940e204383140ee68c2bf8a8b7ba6225b298d14fcdd31d38777bdc260fcb0adac75599caa0aa1b4b436cf80cfa84a7281e4102da7cf7aed803aa38487c2b7ef0a9c8d86c316b0a6329a9e741d7413f172db2ab4b5f4d751999c1853f95ceb7e998bf1a172986c22425d2b67052ad040e6ee9782abddc720e2fe90e2c2f712b255cf47284bc2b46578851a1d3a6759c0869f291856be8f17689d8d57d1315c0ed90ed1aba3bdd66437727fd13dffe44700c573f934662c4164944141abf5dde27d37254ddff4f8d683769903cf54422d3984b78afe3d8d5aa472329ef3bcbe5f9dd7a714472a295b585d798ae3eb51c5f54d69cbe36d7675405455426288af57fbf73a07671e78d5a8d6d339ad4f3ed07b563ccb357f06170d3a6d235afad3533f6f35546933f8cb12a4dcf88117ac1323a3156f03f9e8daeb1e5f89ed8e80d88d2cf42776c16aa9e1f1bcf0fab582ba3c975796b79c37b0d96ea94efe3a94ba7d92abcd49d7255fcb2ee42a8c51ba3e44f89d8d315abb1d6680967ddaacab4aa44ec524954c98baf2f13bfbea94c1cfd71acfb4f99f88f9189d79c0a379089a36bf36d5dca6d30f06829ff2e97573145ff589978e5e9fb661117d13cbefad76a4b67588b4868c9cafa520930764d2f2a108d69e5114a35ae5a2906af91aca63f15255cf935a85b3b1e5201978f722c9629517577b5ad169729cae8d87b16e8b555aadfb136f5868ad4f575a86ba84f21cb1aea5303dea73eddf19fae885c95ead3aae315ec00477d0a1fbdead3e3c5a8c8e8b8b845a6710d429845c9a2fa84251775ac65170834ad3e6fad40534b1d61742e7c5dad4419b2840a66e11d2f996739a7c03e6a1b2df53009d1911d036ad57358dee07c31fb369a94b5cedf6f5793922f662b8ede6c89b45f9e71daf6532ee7eb8902c765a19daff6ddb585f47c31fb97e857f2c56cf62fd5aefc9b0ae4d727d4db57aee48bd97565743d256e209b3be5fb64f3adda10c788e04632f9f17271dc3b316fd3040a306e92fd503aa3cf4dc70b4478e8341833bafcccd96f0bbe44e581ee1af45f18d0f3029c44c1ef533b09dcf4d0eccaf99ce7d124e129f0e04b3cd4c9871500ff88c06ad77cf5015a601e20be28d2c2fe3862e729c467c507273102d987ff9413d093aa782a27ff9d5d89e4bf33a753c6342ff6855b07f5ec8008f7b7f0eb262d928f90b4483e3a49e96c2ed67e7c72939331c554fe504a0c31292c2560c0244884c7120046f2df53b1eb5d804552fc04adc52727191da74b81c5495c64e8008aff7a92d4cd45f56203856c942e1270622c1f5d00883e9e03003efa015e30363780f86b09106607fcba49318c36fc3a494a26e4e9eaa50a08bad17cad021493c1fee0006729b4284bdd9664e95c76ac7aae00f90758aa1b70f0a10c6cc27940ce23984efca794804c071f9cc498166f286f8478f2268b9133de2ac0e6d065e66b19b06089802958e24d368a136f1560ba38f9ea024688282a6180e0e2fca79c20074e3d3b20593a7b4f2388eeaa9e1d10e59a5ffb94ae0201ee6dbcd960932c5dcc8164c5939d1c2511c42fdb23e2c94d2e5896335c94398c7ead0684d2ec0fd5c06292b89fdc0c10789783f1075fa228141f4b00e9478644aa9e1d107dcd443eda001fd9159400bfa524e972be9c0083830f76e20caa33732b32a3f3bf233ef1544afe15850500c0671704a27001003c7993a5a3290d26bf38e06c9646bff37e114f6e7236c1c46ce24b12a3ab9e5d1011f5081f7c891063453e3a00d12758a0e1d74e02373bbc5ef8e02482c7579e080f76623a8bc093fa2c2aca094001f8e024e2da9196560d709181d9f0c949468f9ffca79cb09f4d7291c81fcb00d233a37a2e83082f79f2d10690c117f76418466fb26466e6ab07507008f5ec8044632e30f19f7202f40f3e38899a48e75eead4eea70c10974ee60b58d7f84f39615fa5954448f1116b279fbd2082ca8d370f5821219cde931e5ce0d79324fb5fbf38408c0235c3af9b243c93e1839b384b2fa06078701373cc9797725d703e0d69f06427e7b0c33d468ea15f1c20c671e7ac287d161d299e9ce4e9e2fc1ce417f1e424c711cc41f8759252b13ce043399185bf24d16f02005faa80141ef9ea00ce63e01ff0eb26658c8690c61fecc48282093dff71133e3248f8c8ca099234d473058814fcec0f656013ce0b32874467c92aa6595a1498513c96001698b8701252b907134f6eb29492c49337f930d100ee228b97f644ba4b5045fa3ea651f24ec55131df1dd08c2639df777130f96c832c12dc7fc3af9b84bc117e3d493f5dc944979ce0a39814eab904f21ba6fe564e90984b74cabf69bcbff9d0e22c855f37e977108ae1d793a4f08a6707641ee2d28c0fbe448940bdd840175200baf0483ff80d68423eda00d2b7de9ef4b2e724a759c871c3af939401fdf31f3be11358b77f4ab3d267e87ff82d2589468a273b19fbb7d4bbbf477345aceab90244ec80acf712a8a8831c27a9aaa2714473a17c3232b0a4c82256391d4572dd74649f0a062a0ebfae09937d9aa692122d95714074249ea1aa2f068cc2f4b640aecf49fe40fdde22594dc367f401dedaa3a1b33ef0fde96c8eda3378b293c774c6e2e714d665f5ec82cca382c6b832eb170748dce462ee32348ee98cd313fcba49690238f9af274950a27aae0011c36ebd7b404d300f88d08e9da486aaec24b58142365a64a825e20f6e22e89600817a7640e4652a7c706741988b3aca470780736be6f06a968fe99ca3c4075fe2119b1c7c9a2b107c7500c57e8095f702e7a8463d2fa951f99743e1b8413d974150957aee53a5f28faf29888bf2d10f6016a3defda0ba38f1e680890b45f0eb24a5d9011d8352079fbcc94a4163bc960051afc27f3d490606f152027a772910bcbb2c63787769a2906f36d80456e089bbfe4ee06be923b8c87017d429e5fc7a4af3d267681dfc3a4928a44e4b22aa3c1d237bea60d301004fb8b040c8471720649f60ab269edce423b115124f6e32f88d912a1c2731df57b100f688f156064381533c79937f5a9ca31ad97af782be8eb04afaad124c2ddda56f6e16e1931f40c573094457d15fbb172864e1839b78204e8479ba782e8180f53000f0a752f26f0b541ae29337596af6f45b092ccb526c043cb9c9189000c305c26309401e179a11055d20e1fa0660c4b30bf25a3aa5918f2e80d01de665bd610e41ef4562e1b21bf151f5847a73c1ded2b700f096be2d2781a36a4ce58f25800847e2adbb6847f95b547de04339112c6930993fba0006c5fa0915bfaa39a05f5d407ba365bdbba06a9d938f2ec0313d67e6981aef255086c51dbb2c34cad11706a6c2630900fcaf20003cba00275773166a76a25f5dc05f9437730ef78b63f6a9c0fec1e8474967e2d90722db249e6d900f296844f98f9df0918de8480888ead90689710d8f4beb772cd76a60ddc69b03965eb24c14a19e3d202fc11a4cc0c08b030489a58f80d6650133fa0914d89f4a9f7f42cdf62777e73543c63a2bf154bcce21924ab984a2d9cd13892c51298772034af6b44bd0320878b714202f0d8f9606889a36faa50ca4c859bf94814eb2852ceb447baf936dd1f6adf2d10648d06d97cbbb748c449eaa5e5c2038e6e43f6ec2257c770ed1e62083cc5d11644ec38344a41cb892ec9c86c7e00b1a92e1d105c872ce29504b0d8f36404693309da1aa354c1dfd4ec6c051fd1ec1075fa2d2d4ea37176cce2842f08752624c4509f0e4260bef65963b3199284c44e1d7493282a47308e3d5a110d0d62ab5ad932834ba655d6e423f3231ebd5b30382671079e9fc01d5a8725b60bc558219da57f15e090accca7af7819afb12e74b2db85111e35b6d16a342afab7828383397bd299f3d20728ba95f1c206d822a1f5d8019a4cd4a9fb165fcd74e2ad86c1ea350291f1d8008234ec3af93942a514e3eba007a4557cf2e8892d2e4630980af2898ce9fdc6425efc84717c0962cacf712a8e4b7f2d105f8653e1758e0c949ce22d42447b372027238f1544e963c4e3dbb208b642c86493cda008b44291be4a30b805ec6846a983f3a00bc418248d5b307442ef4fa65a986b166e7ce56dbb68b328dedabad0df406e806ab6d1968fdb38ec80cc1d36177eec90fc1ac494534f2e89c34ef4c69feee3291e7eac198c67153ae45526b696170e27b97e398eb50e512a62664b4154bfe6bb3d5d6d8ed70fd02e2dba848254e3b6e55ce663429a231b960195cf4706e6b28e0952c8779472aff7ef2f3a6435cbf1e1c1d1fbee3db2cf184d488d69142d54760e19da67188972610810e497fda184549082e235115068e231759a61f8028f99b382f371e31e96c69307bacb039ee81512f109d431d57fa6b4b4dabe16bfafbd53f40e59c0d9546fa3ccdc8700016604308043b1cc0699f08129e14fe9672785e790e5a55e9366a728cba1b35582148beed5295cbd809f814d701a09e911ed995ce62e9a7a6e9cad68ccde0fa781541ebd1628d858301b97b97dc4157aecfc037a951d326c6f0dec55ca05b6eb6ac90fc10f35b8693d7489d09ab20789f811b46083a6fb9baf5c198adf84a18df12f8f15e44ec321f0cbc81f61b5c386bec2e71aceb84d66ff0e169ec1a4c88dc375a1a46d960407e205df28c34907cc92e69345a26162bf2be152bdf1f54ffabd1b3cbc885dc97e5d6118e114d5d1a28345b26d13593964eb02ab2d20c82331dbc7b0131b9f4ed0b79ddb63c7d9048f8049a51358fe0507df5c9c4291a789bd09892fba4670d6094bf94b69908b7475eefffffff397879f8fae4e068f0f2f5fecfe4cb173bed1faf0e5f1f40d21ae360f7bec720df37fd7c134991960ae7ec25e7864c6eec5658ef6fdba42c0999ff18d45851b8c116f6bc5fbf7c517dfb74157a5e898c0423e6b28962c431cd8ba197803818a71b0eb126c9d08f0c26cf9ee0de7c4e4bd6674de36b5340d5f43b95659f357b2d3c8c6fb64ebb67d7ee2c61956a2c5c51ecef2f0189532d8ad7eb32bed8c92e8385cfea32e82decb7dbef329bf0ead7a65359cf3323cebed9a7b272deaa199713bcd5322b85556a96fc032d29419e33ea988f32c4717d391a0ca647739df2e4e1e3ca65aa9500b21be02b166ada13f32dc211cb8ba61de6b24d6836c91d3fe13c737a8ebed0f7f648436669f848c34b067ac84b1ec3a165333a372ae2fa2ab75cd260840ae990dca8f3d3d28e62295d293bc3b5c71ded739b268bd7395bab0e88b4fdd3c58362a44dec1bb5b9dc3a2b1912bee8169796302758826fa5b87b5794467e245dbe6eb024e41293d70fbc3ba888d03bacbc3cc4cb91d9b82c4da036f36b769cf6085952a1aa45c3598bdb214e7d78d3ee98e2b985104d7b74e7f2ce7fea294f74107966962c1a0003b66bb6ac292e3f5756cc1b656109c1942c23afc33c944067722f57ca5c5a136502b99425436f5445caf8ba4c84adb498c2fc86aac35bd115351fe00e7acac61f0ff5858acdff693edbc519f38533dc2f333aff822ca3f5053af0bf368382f35003a523e69ed08f20e5022ebe427ce162516b59466cf14b0c7b2fb6d512d933433832361c9c3183c8e5ca4ac4dc259db5edfd59f18b32f5da53d5fdf2856cfe0f6f71b9960e63b9a32bea611b3eaa77c77235b1830f0fdef5563b6451edc1c0d91952bc7da07bebb4774676d565efdc018f724e36d2ea9244700971cc973b839cdc3c9a467869a7dd33076091338155a007b1dc0cb66189f71884a66019dfa8a181900e12a43e7b964587f3ebc108e87c1e5f29e51f889beff9664544e3104ba6c9e68c101ed87377efa2cddf3e84b6c6424ebb678acb999be792ce41f6002031a7d5ddbb448813ba174d918203c814792fface1ee939ede63ce3228d4212f35216b8585841aba6342794f43710477f43fa9d2ba62ce31be3840c7bca91844d0a7af8cc607dc4d51220cf103da4e812be94a832ca5f5d8d32087571e78e804407207c1f29c2f9b859ccb9694dd5bb77c91d59b2932b4de22b9bf6407f248a2f8dd31d17af687b89cc70ee29eccfc4a7dd25f25e8946cf35750a114e0a6f5ec591ee23afea8863e39be769b67015441c6d63979c1a33c89da60d5ed7fd6cd2d82df9c4c3d12e574b4b4330b56c79a8adc8a152b3846177ac1e977d5ad2c9a928f4a2bf786d5d59b7a4b832f518bc5b9a46fb5b65958059976706d31403a037c25ab811dfca7cc0b745de47bf1dabd93f9bbbe2392a71f9a8f3df7c1a9d83763a4f33fc9d73d9993f2d124c5cae9f069feeb8a62247e45538ad5a1c612cc5de1a966f5e972fbcfc2fa248df328ecbf31cd65edeff8dba0517d1a6f32f95e89edec6ca2996446ad816da1459622e362ff3ac39d6622c28c2b79818e46b2f800607393d5b4ad55a4fa346e5ac76c378f30a54aa5bf9fe791625d179c4a4f53c49a80812584c59c4b91d8df15bf00de4549f7068d08223a25548681cd147b05636a4864468ae1b0ea3c4e6c155bd9897919f7e6457675caa693a9ff688e17054e6f4e9497982a5bfb7b5a282b1ebbaf947c6d8e7e398cbcaa03f085cf49a8ab9b7c93f8ef6df0f7e3a7cfb62f0f7837f8232b905ad869aeb634651bb06ce894cf787ac98b35e7c3df35ef5307734c1121597b88dc0e599e7c68d842ac585bccdc8e18fac1b8dfe1c72c27278b87dad2a6c5fec30ebcfe529c1ae87c2e74be61e7deb12c0404840b977458d760aef2402f079d94989a5f6c35bcd1218deaba013341412b06f4b76421a721ea3cb1101fa3e2eb91df1f5b4803ef25d1f35f7c57f3b86c3da520a8c009a227a937411f6f880845b6178602a14a575a293202c0a301b6854ae66288d5b61724aab8b0176a6ab7692ca8f92294ad482df1a47bcc8376fef545e5e5ddadc24079fe66956c84a4b6d00e76903c756ac894c1bee93efbf7941468b280e493a2fa259f43bcbf236fa2dcb820f791bb72aa0c11fa709464423735a142c4bd0bfd9ae2cca508b222328ef62ace480ce420041df5200a053d43888a6e54cc897244d60164ee2744463e16c4b440ebc6049415896a5594e2ea72c9159a44bb5cd4d12a7346421195d114af27116cd0b52d0098912e17c94e530e5d3734213e81dc820ad1978b7f18d5451cc77373733f6db22cad8873c48b3c966988ef34d2c3c9816b3f82fb328077f0cd07bb334632464058de25c23fb25075f5cdad612fcb989ebdca2f2e7593a2bb758e0c8d2b408f8000f604c5f60c75388a04d9334b99aa58b9cccd270113392a76db8d6bb984c51733da3f379944cda242ac8982664c454cd32261cdd841c1b2fbebfc1397c968fd38cf537044e35fb70e49a759aafc1536b6dfaca8b79aec86bc88080f321fac32243c438848b76346784ba844a6818e6327aa5d28e9e678cbd81ba1935d0f38317f5360d59f04179d234f304a216bc475b46c71ab939cb4d93bf1d937c31e71f032d5c703c08998bbca2c58e218046289614dfd05a83ab38cbd7161a1fe19e72a3bd811556562f6a00061356bc97acebdd39f88be3589cef648fa0217290dbdf9fc9ef0efceef22288f64b371800fbc463582fc266da3258a324151fccd78df6862e1b79c956331d7d6891cf26f791e6fe7b7ba4af32f4370c068410c2534c9a09d01cbef637383a89dedc45b8454a191c71a6a30f4fc9d7a76aacd741918e3e946ae7ad7f3afa800ec2b2c558565c80632ae8f445f3d4c2459e19ad23bbe51acb5e376bf714d7b14af24258d11087ffd7b44095e18c41ab3c08484a2283a7178db24d2e6335426beedd59b82ede3f788c6a9a81fcc66eae04e373249ac190c906c2fad1df0882cd20d89cb278ceb27c93e5b34d4cef6f3ced27220bcd73961527d3283fc413f8e877162a049bde64c85f4925f334cfa351cc9eeb0e41a79acd9cc5e76dc27999413ffc158ee164b3301dbb19b9637f439ac1a4e790bd34082d970d71284fd7799b03f5923d59d9acdc614f6d3297ec355f8dbd7ef9b2123a62f1d03d327f6a3358c53a4d92f0a1b369c3a98c1a61fb7bfdd046c99465519137f3c5e8794cf3bccd574496c1739927e834a07f77d638c9c942d1050199e512548c27577306f70b9bfd8de3057871fdc46536b03b9d2df282b008b4d9230628489a114a0cd230c940d6db98846ab470b3dc346a65d5d15452884a1a537ed7544ec40bb6ab8a529be6cb2c2ae82866bba4c8167aa33f4e93f368b2c874925af895dc041b16a3a39dd1f68e8618fdcd7bfd049c4acfaf32b0bfdeeaf61e90f794eff6a28c9cb0f13449e37412b1bc4d0e937140f6e39800684eb8689c5da03b61c4f33a1ab32467216cfd331064f6e7743c6532a54d7e1536c15b419734518a14696230ee91ab744166f48a246901a7165cb221e751cca4c7642e00a6b3791c512e9983afe2429701d521ff1448d25141c19ff8389d5f4967d90292d042559dff0929fef2f232a0506d10e36304ce375f1f3e3f787b7cd0d9021fc698ed97246639ef0a10fc711b31074fffa39891985e02c14d322622ab2730d02062e7e9797149330678c2282fb268b428acce93f58c720b208578d4fd8dfd637278dcdf203fed1f1f1eb701cf3f0e4f5ebdfbe584fc63ffe868ffedc9e1c1317977449ebf7bfbe2f0e4f0dddb63f2ee25d97ffb4ff2f7c3b72fda726e8829c3ab1af16e15430a3b1bb31a5cd805cfc773368ecea33189693259d0092393f4826549944cc89c65b308a61fdf728480278e665141d1e561a97150d4a6622b7c7ffa3ecda5cb3198373fbd3b3979f76697f437466951a4b3fe465b7f1ebc3e7879a2d33a313b2f6c80a3c39f5f991040be0244663672f14f035d244fe958e502c0c9bbf72ab548e72249156596011f0d8c9066a344108113d33552f1d9faa05a5da473b3c93c495582a7898af493af9a75eb93d35c76f5ab348b7e4f9382c6cdb9f824b8ede63d12e5054d468b98449384ef5a418b847a06b1c2ccd588ededa9e10b4edebde7cb5a652234a21e02da520d829dba2c7d4939269970be58d74fbfb2ac88c6b7da4bf59593c4b6046259472ce947457fcb40b01c7f2ff12d9a803e842ed84f2631cbddaee2cbd5b7a51757dc33214cc1bfba26b74e579555521dba42ad6e91522aebc3613c9b23174c4e165441fc2949fc2949fc2949fc2949fc2949fc2949fc2949fc2949dc4892101aa9df59f26ec4c50258ff4021d5f89d259d547d6c3ced279cc91b607b76b6b2b6ca97f6d9c4f0f5a9aec292f23b45de30b1c832686e21accb2b0afa4ce65994140a7692d1f9f4b77853ae8a9b90cc329e65f3de1d72ef36fffa593fd1625b73dc226fa2719672a1823c4fb3798ab1cd2a04b6ac9fdc585673e5348e745d51ad564c336a4968b18e7496f513feffc9abc363f2fcdd8b0372784cde1fbdfbf5f0c5c10bf2ee2dd97f4bee81f0744fc84eabca4d1c2b8a4e078727af0e8ec8c17fbf3f3a3806e0c337ef5f1f1ebc6893c3b7cf5ffff2e2f0edcf0aebebc3378727fb1c11085f029223ab2befe4f0e4f5419bbc3c3c79cb8b78f9ee88ec93f7fb472787cf7f79bd7f44deff72f4feddf1419be3797370f4fcd5fedb93fd9f5e1f9efc93e37afbee6de7f0edcba3c3b73f1fbc39787b12c85e91529d186d73904d416f45218f63a449b84cc6cbfac9ad92bf7026b0794f9eb91eb1f3988d8b36799fa5b3286702000c27d08bed31b82d30c377102ba119b6c948aaffdd2c95da7f790c2595fbbbe4f40cd9a76170bf2f8362e97375a3304242eb706024f8af79b660c3f3f169f2a6cdf9041b3997da4681ede6a2396fb548783a3fe3b84fe7674f4d65b473e6e0e991a7283bf6137d6620c06aba4c65e54946c6a6711a10e5f6011b094db57e68e9f347b092c159c03347b93f6a915dd21c0c6c7853b59fb04b28ba85728ba00a1585cba81e7e9395d420a244f16e1dfac83c457974f23689c81ee9b5c18f8232521546f14f49447e20c95312ddbf6f5e8933414f23d3e8d11ef6bce4de44d4d2b090f2b83bc9db84d34381f4906b7ad046878ee153e13d9dc266bb06dc586d0fcd4c58a1026ebea533d60c5369b6293086e9380063119030d47d44630aa844577ad129c147b8eebab7471aaab8172a551b272170428503acaf2de7a2e627b7884f008cf66c22cb69170c451374e4f8d56aee058da390164c07194de593c00c32d0fb83235816062f0f0f5ebf38267be4b4f1db82a1f392d4ec2ffe019c838c6296f317986ec082c1d109da843524b9285219700aecb6c9806a32fec8ae72a33e4f39d00f644015610e4c92d4f6b4037a3a30081248ce6981f428dbfcc8ae5ace3d497dfe27cffea23866131a1bf12afb1be43e2fad6531298bf254c5cdd9fc3a4a3e4adfa57a140770762667b3e25a0ab84d0484cba8144473c6f29c4e589bc451f2d1ea9301083b7b028536e7691391a70527dce69d55c812704c640f10dac7c00301ecb658d586b7b8094f2d7b7645f9095f92135a44c9a4695455da2e46c9c72063bf2d585ec8bb473fec915e896e8b54ac9f4d2df51a040bb21c2bc0c45fdf20322e8fc8dc7a0c3296a7f1056b8b8827fa405ce10ff2c5281f67d188694b6abe79364c94f86b33a4052df13c5523c7489eaf2c69cc824b9a25cdfe86940a84f93009539683e02aacbfa4874526ae7ee428d3eb1d813c74169cd2e312c6ec9b423b7394d627d00bd806afb32875780cb687bba2bbfa96a99db580cde847269bb5a707ce260c086626c6648ebf3665f041d3ad34c60dc787694b5a913d28a62ca9b9a120f381d5b2be13e824caced2b7725bc19816e3a92a37807e80a891ba2e6e3f58edc4090bd97e352ab57643ed1a9808ab4a570148ead9bd0263a102943a4e421477dfd52c2e501f41d69444a279bf09abbf5ac0d63262c25b090218161f13083e98eb3fdcadf3b5c4c6a7e5bca5a0c2550edff4f960a106604dd2407f620df2ac2c4e54676dc165610f5bf565290d2d0a997a5ce1d63be8ef7d233c565e3da558f8f96b9bc83c729901d99015da05a80eb2abbe36f9f4519d6818e0e065802a6715fe0a88af6de4a3e24dfb727098d90a385abe3d046fd6c4db2cfdb5e9ca559e225a96bc2964163423565b1ad5f96dd2d09dd650663c2c59cc98b0bf8185aa2d27191af2a82c7d6d91b3bca4c9fa254dae575291a22bbbd50a31c54eb8c1e85a3d4e58f1777665ca7cfd9241529578658ea28dc4e2afa0ec6aa6eedcbb4ffa1b5f40aafbdbf1bbb701cee0e8dc40a3799c095dc1a6cc05704ef35cdac11bc4667c6ea6f33617852f6916dab5151fc933f9d44ce79c51e8152248cf9b7a1f03ec3b7d8d929b212df12fcd294dc2582d20b63db1487366ac702ab43f4fe3d8c1b12bb3586533e1fc5fab2ef88766798933501a4b5ca91b549e7283e50aa7ca0649c8289abf838c699a07c2bb142d7963bb2d5984a8ea53471e45df38d8852de1afd9dc81b5c955791386419a9b57de8aca506f9a9df20fcd82e5459bc4ecbc68a326d4a836aa4f797de1cebddeae8804b74f0de2b28c10e1f6223b2f048508c2e05f100c6e8a7394360056c758591d415e606c81ef002b49212b99c9d650813d71cd2d3ecb0b33fd996a8cdc3598a97007c0221bb2ab5bb75a0ef71289e7b0617943ca547dad161968d66d5a6d56a78d26a9aaa8e35ad040ca86db6e6d92b371aa3c25c124e4df6de2814fd5c4a372680ab1364570d75fed73fb1bff4c1784660cccaca36422ab9826849242e385b9db2697d3683c2597511c9329bd602449093b3f07c3ee36318ab677b82ac19d3b5ca8b05b277aa0b27932c7add0bfaa9777840d0c7e17529fdcbc35d4c0e9e15f301f6ebb85ab10fe6a4d35a7856e9eefdebffa60f482a8912529ab6fc23d14bcc1256f7832694f63329d97b9eb48e512b26411597d19f1685d857e9c3385aa75cc9694bd6d29331a7b6721ef566041a8bf4a4a42b817b5eed89548d155ff3564fe083531d16c8e818f58d8a82c5dca414c85403212a5a0928948114652390aac89f4131b2fc041bb783245150d07da3747f126323491295688c6a6f6ade96e28b5a0ab76581e75429d3eb9d5aa9865e6cdafcfee4eb66d2a90da5a7fd43675466dad586997f6dc6d1c05846963d7b60525b58d7e6bcb5ec263fa3f6d0effb439fc4e6c0e8521c73db81b9dc7d168d09397a8e0d5bc540740478c8e0b0992f11713e43389f2b769c80e920b6914d2df0836174514e700873ef7ef91fd84d0518ef1403855a5094b0af469fd53bc606856a21272b8d48d8717903d4a30763d1f5d1a8610c78583cfd244b1621a47c595f000b0488a68c6201a7b2e4fa638c311bd20965e51a1f78b8c3d5775da834a93ff3386cb531cbae27445745fa04f59bc082b4f5cbcd04da8b2560cad76fce26692a730647393bc4d0b32024f699c70f4257d194917dc0da0ab1bde67e9a2e06c2089f22919b131e5ac611c330ab9a304fa921cbee093859224eda473edbf110f7b04964308617c2acf5acde00bcf393e42e3987c4cd2cb4495ab222f6cda18a1fc1359b90af7485c2c712b2077e73f3ade4bfd67856eee25a784f8076a1299c53c31d420975112a697562b9a2a4ba5a3a4baced407d7d6d1e41d35199bfd8d7996868bd2c5528957aeaeef39e5887e032aaa12ce4a27755ef275fc3cc3b77f44717cc4c62cbac0d24a92197cb5c4cb951ae26987c6e6d3d6ae55e35f9259ba482adc5497a9b2d9b2dca420ad73de5ef0bd240281fbf08c61f010121539397c110840bee0e745ca1737350b61ab3912d38f85385335f35c600d7389e2ffe048a1a7c4315fb4e3fe86a1b9e3bc1650023e5529c08adea443816a534ee9653d96b3427480d54f9c338de8f8635b1662b13154f641ec7398171a8927e353a3c38d790d4ea81091bbdfaef1e3e19b883692afde513c48f245c6440806f4b6c2e9582cd02c047e428da1a119c355478ecda194f4c5fa9c4fd3451c0a1f35801651aa8c402b8b7c41e3f84aec236882db08e11df30a8093b458520697efc205084b05c3128d9680f1507e95176c46689c311a5e91c9826634291893a4250a38e1cb8f709226908f18971d43b0fc6234e4921f080c8d5ce439e5ed3ab99ab3fcacc905bf7c7773f39c8ed9284d3f0693a8982e4641946e8260818e6832b6c8c1f2544b03e8958663eae8b5bc45ce192d161993ed8710a0aab8366f5eae4501d1f06c918093462e5184ec82c5e91ca2d0ced290ad4bfd16efb1ad305ae4f3e6a6dedf81f1d262042245bf6c59e42d08f65ed09981f51de508b5c7f10b31b0edd0165beeb1cbe8439b7c64576d621e6573c6fb9141cf987e242a4e6e140af7c6387a02951fcd639c2517c62bae98d76889d2d107e9a9ceb052b24d67461fe4b67056f29363b7c930a83ecf18fb19ad2cd1d039d81ce86fc1871c0d9cef9117ac60638457a7d96498b3f87c181892264f3f66f1b93ef7cde1cdf62105dfc46f20236eee491b2699224afe25470747543b3cf2fbe431aa91a529306addba2f5f74ddbe7c21327c71b361a8641a2d58dc1c03758ecb22329a5f25e39f59825e518e0b366f4e18c61a32ad61da6490c0967f005c4d1011cd2652aaceaeccc5224ace53883f9ec0483739e0539d2c9dad7130d3528d806505414b0643f3c36b203e5acb864939a078e5f8c23461465e346731cc3b6c6214fa83c00644db11abc95a0958eba606faf324553dda3c77742c9e950e8fd991cef8c6404b931eb7a18e9e75753b2679ee0d96a4d21e12bda2b8fe7f75730cdb185380be2ed5f437f87b7f43b23053302e170e99f8b8df52d9f0c00be7287d45637375880247015ce3d5e2d1b5f442f66dc2c3719a1c5f4cded3629af71e4a7b9bfe060dc3fec62e39ed6fbce97583274fc8c3e0c9936967eba2b335ee7682070f3ac1ce834e8fff97777a045e48ef626bdad91af364d2d55ff360e701e9f1ffa65b175be32e091e3c509ff25e079e3bbd8bced6746b0c7989fa98eb727e9f75b63b8fc69d9d60678b743b8fc976f0e071e731799cf30722feebe04b071f3af0dfefb32ee9ed8c3bdbc1768f743b0f3b5bc1c3279d879d87393e9087fc7fc25f087fd90a1e3ec66fbff737d03b30f448679cc68b5922ae148ade7940baaf7acf7975bba44bf0b777d1db71da39ededb86dfbb5e776e5efb3ce03d2db79b5f5ebd6f4f1456febf7d90ee94e3bdbbf6e4db7f9eb9b1df264dabbe855f6e1af4fa6bd9a2e7cf5e8d78775c3d77bb553337afece107728b1371edfac7ed34e6f59051fd75570f6a8f3e4f606e38d1a0be8fcd913d27df5508e8cdd17597aa9eeac624f3c24bd5e6d575c747af563f5e4d7c7f55df1b0b62b9e747abddb24cc1e76c6c3696feb82cfa8ce13e89aded6c5b6a733e03eeeb7992158918bce36963deb7676644d1efffee62179544f818f96f5face0d7addee8822edd0ac88ce41132a3a6387ec045d4ee8179d52e3ac82a69d5e1d275d9bb4082feca1dd93db646bfab0ae37eaaaf0fbec3179580b317dbcbc127cf46e88a3d4e9e71078547679d0ed9147bf3e78d57b78f108bb4c61eabd7a1274bb0f2e3a5bc19327cf1f074f1eed90c7c1f6f61679143cdcd9218fc883e0c99387e4d1aba0dbfb9d53f2d6ab47c14eefe1eb07c1a3eec360eb09e5e900c369bbdb091ef53ac1968f096d4f7b1cd9afdbe3a0db13e3bed3e97582274f80d7044f9e3c224f5ed52e9fbde0c1e327af836dd2dbe165f7826e779be0bf503ce9f1b591ff136f075b8f1f75b683ad2717bde0c113875648f060e709afdc93274f786fc06fefa2b3b3df0bba1c43774b60c40e7862767294cd639a3045d20f492f78b0df0b769e3c26f8afa8cc76b0b313ececbc7e123ce991ede0c923b205856fc70f8227dbfccb83d7dbc1e3c7a4d77dd58b3b9044b6c816d916f240f0f871bc1d741f74f83faf7bdba4f720deeaf4f8703dea3c42ac0fb6f94abf3d0eb61e7582ad47bc5383870fa06f83aeb580c7d124e98c595268dad821750b5e99f6ccb9b1f3fb9b1ed9f670add527106f5177c990d78b44bdce9229585b3d90371ed4d5bf8edb4d774abdfb619117d1f995c1fa7b5bc193c737ab626fa7d3ebaeddcf9cba1f3c343b7b872c61354b2ad2ed6cdf2cff3276599fdfed6b4b0add26bd6595ab25a41b9372976cd74f9725336187d4832ce99c373dd2db9a5ebffe6ee75a52ad22e3ed1bccd45b24e3deab47d7e55a4085d34e2dd7fba6b3c0e9e8194b0a4772ee75f9506e9764c147aeb834ed94c7e3c2952a7f9ff145fb2694b5edaf4e691feca18e0b77ddf5367faadccb38ab53ef0179e4dd12795bce7777dbab546a19172cf5a1a7f54fa65b2501d40b56276c7b7bc3646bff1f7befb2e436926c8bfe4a7cc00db7f078c75096130ea8519971cea2b20b3a0d2acb92127b6f7efd355f1e204112c94ca9aaf76e3b764c4abe0104e2e1e18fe5cb9b69ab747f03e1f6c2770378b4773d2122c2bd6f851c1e1a1fa2317fa845edae2bee1bb474f7d772874d5b58eabf78fffb68dbc2acf9b90eb0d1f80585e5efeb80770dc78f2fdc6ce247d6e4c2b44df7375ee088795fde7ce86c4b377eece449b73240665cbb1f8adf0a3aa460e12fb4eb7e8e1cfd823677ffbb9f362c17e6daaa6dcafda47c3c03be7d7bd170e465f82979e3a9941d0531aa28564b451e99383d713654c424205fe4329142356e87ab394b3511eb2f29d6d1328568f0e029e08f2904f9389d3e178a861db53193678b074f41fed689d854ca633fea24167cf70a650a71f4d6ffaa732351cea3f5c66f38629b09237c964cbe59df1fca5abe987794a2d9e63d1548368ab2235fa12e58f25e1ed3415e59bcb494062bb2447e6329e917940ef8adfc837dbba4821cf9d669bb743777fba1ba6afcca6f52f7cd483b9bcc8bdb76fe56a854534da164aa6a276f3773ef8c1fd2fb379b1e9e65b1430ff31e651efcfb57f1efb4d52eb6f5b7aa375cf5861f3755f681a53dfbc8ee6e5cdc4764991cec567e53867a2ca77db21c9736353fa81f5a7490e3826f7ec9658a8e0b2204dfebb8f0d1e179bd3857af6d9e68c2bd0bc4325c3085d758d2a93d762897db1e2c8fd4f34491c72a2b531e76c4cd1257914e31c863e1b71a7ebdaf07b3d0dd91521b6d3ffbf29d4dce9d4ac1c80f1f9be777b772df1577cdfdf2f2af6fb366d69da5a063249d4a61dd0c33e5beda2dc55997f6ed95f23a503195c293cc864a6c82b4d7e8e97a6bcfc64d20a64481ca085784274f51de5238c805988aa530262bdf59f2e86cf4b5342b9f5b707727d7e6f114c25a458abc2e544ca0f2461fe361b4c924f981c87b3cba998f6dec5f2eb8df70f45a2e63aa5c705949c9d266724b0dbf9e2a918a29e4db68934d5b6a39c9dfdcdb3835617e1b54d8c8421803f966023c92d4eed5bfd96c69987ee7df3f742e6234b862f2fb86d92f4f456e8d652d7b8b21babbb70b21e77960a4a5b2d9ad6571899cbb136187c7e6cced123ecc77d8be5e4d5faf95b861ad52e1a53566a44779691dcfe842678ad963f718a5b686a621f7b7b3726de9b44031583461b1938bfc5fb337d2facd9d8c3f7c509f42ab7ffc39ef699329601e3dc9bec3d06c8261538df4f1b4c431f34538cb7a0b14d154e99a4c67ef71e8b25d57e7ba984871a34a4f165deadc50b433521c4504040a570b9c721fe6c9ad1facb4212d4f9ec3cc509ee988b23cc268a36a0df81ff50478cc6f899b357bcaa6ac02c5b12b7b4b12e622e36e24e168d5797cd54d87b330932f3f7eafeb40d1b4a1911f6dd7349747202e8fc028b77fd3fac3e3ce9cec8d73577ac36e49dc7bca9bde49c6ffd408625464aef599e64c35eef04e17be37d302c5e3d44fb6f7d3dda84f4bf27e93b91d97c3e34e7c7b93397c7f7efd7af8e74c50a7287b23d711011ee7d78daaa963a4926c202eb67faea10a2eb20b50cc78aa1ad69aad654b5e7bb491ab96529433dbf3a94d260e0fcdc2441cd65ec4935c1c8792e34fd47293bf2e6fbcb917a9e8b124e22a476960f5d3d1eb4cded4d1ca3de1b4f8183a70c11df6db9183d475398f39793d73b3e42aa5687b5fc9fd14d3a8960da707d001aa658cf2ce53cbe7bee4442ca69c34573aa92d840b838c71b394a3d5debe8adffff8feb2df7effbab33ffefcb2fdfe7cb88019164123aa638ac522df65e3ad74d2e641cbef46e9b157834afc54a825838749eda83b67007d99a15d1e793faaf1db44cdc81f3616e9b6449547a658444b299f0ad5168c3ef6abc0827edb4fef65bfcea259883af2407f5ab333192a05ccd9c5dd76a6d17ae3757baeaa4cc82ee8db81920814ee51d5d367cee60c8a705934285142e445960bd562e4e193e848d9e8a3debb48374f316df861d4fdce6c7fe4611aece250491b67d3ebf7ed973f9e67bb70c846140351079265e240c97a72a2afb1f554cb9a4541a01476727e4fb5da482285934d9445b805cb9470804cc126af22e34b4a5efa01ddec7794996a9697b2db97882d5f2e6121cae16088c94459b94cc19b4cb9e23e095a6f9487663c152f3f374c294bfbe532f25924cec6530ab2b05856bc2759279cf195f51089e46bbf5e414816e7b37a3e9617092db6914245336ca65cae7af09bdd7d7ddd8dcf9795e99eb00ca4bffb8b8fc0c0c2953f791ac9431f7dcb173084e953e070c10a5cb7e89f76bbdbbdfcf8360b1249d788f81b2d656f49840705512745256e553a266192026e30caa642a56c290699f47552dd63b39444b1ac899cac9c2c6bca1347390955d9e7bc9e8712a64cea2f6233ce46ca32fa5c6ca226e35661a45a727260b6724e2c2b792e2acd42a4cc938b2cf690539079e582fc86c9cb8189028e93ddd235f9168e37993485b11dc8f20b265288a36c098675a6bb8613261c42550f1d28d59d8a3f921912d0d2d2466d69d95183bcf306d61a6792f3b1ec219e7cb0e4033e1645036d2b3bb9502c14139546b551697a91042d427a2fb15c452e8f06ca428a3b0c57c6ed6221483b838ed7284de3b613ed426e5c264dc1530b9b4271876e8c459d1b323672ae164fa24f89b99b75a615d87be93796fe4d228ed281e5c6e4aae937e8a2553eaea7cf5936ca484db6d5c8a29034963ed1892443e819ea8ef453ad14b0aea473649fcbb23f968017911cbc3072164a55062a14bd4df22ca728b2a671669c58e6540cdd871245bf92b57535f35f772f5fce0bd1198e83dff89503422e1b37f0c6af32def9fe4e918c3619879f2a929193f147f6f28361023e4eefce477b79ebafe176bf8fdb6faa755d3e79d9fdf3f98bfdf3f9f570718a360aaabc3691a3be8b4d7459d28d031b93ea115d376399de5000a3a8fb453437aa851af64b7501e801419f2239512d026681cf384168d0ef5c56332f8b8299c3f9b000ed0787f927d9f064ff35995a34995cd457c0a0058fe6668fb337112972dea0fa0c9442d6e79c7419178260a894648dcb1c46ebe54327933a699b59e64ed15636dcaa53e73aa4be2c2dbc28f1482eabdd2a5709198744ca15b71258b4ea869529b7eb2bf9201f2416c51117927b15d530c868a0f354e1d3c72339dec1e9d72861755313e110337e9ba175caa477acf71e29e29445e7ace9ba85571450df4403852a1b577ab2f84da2841d311b7d1a5814c8834863f54f4ad7c97d8682c9e13570103dce64e54ca7cfccd48a714f4d345f27fb3dbaa8e9ab7860aa06d8be60e26f2c1b8167b9643cc8888821843deef459946f8c2feed68a84766cbd9195e98c6cf80c49e4c95731728aaee79d8ebe88bdaa8aacaff020894ee6d878b41fae1f9928f02ec94caea39cc2e214f055ca30e548be1a1d0aed33d9e6550db95a6b2fe30506ce626ac33e12d3484c339168474b517dccd0b43decbf70b4c44f907581d8b013bd03ce6eaf08e399793679b127d376483bd10d9c814a61a28d98db701d7b5c33d870fa9c4d1a44c3e99bf5b45777585fde24d9edf32a6fda10defad9d59dbe9c4d39bf1cc0d9b805efd369cfaa091ecb68bdfc337ee356e9c8f91e87b1e030bf6ec17efbfacf597f7b204511eb6215396260029a27db20541979779147891caf22c9c623e2ca52d5494dd51f598cb61d2c0ef24936e454c88b5daf1a49dc89b62252a7ca3603f52c1887efcdf4bd7c2d873125d943e2866a786299bd158ee1d81b294dbfbab9ff9a01a3dd63a0ce3bb8666ad015cb1186300751137278e240a592cf801da28b82d11143ba807e29db36e5b0967d3151e66ed7fa2759b74954646792dcaf33f93e50bc10f582471ddb86acccac5b4928a7cfcdf82150f023933761d536fef43950aec6afca31ac3cc52a5fd95944b10cec8f578aefebd7e77fecb687e759443c50ab830d0b79188b219ca5b0511cc2d1f2e08f3ce4e94538da3bdcb3eed92bfc261e591654410a08cbfc5ec94956eede64baefa5a38dd2e4ab09f1e3eb4cb4a4be5777d77c1ebb26c63b0aa20b46752be7204fa28c8a51e445df0cb27d7951d9ceaf0ed064826a69c58bc48e70b014b1545210b3147aee5a4e278ad6083da8408436f891a0a126f57927f97afa16ae204856798e0c7fd6cdcff1b9bcdae1742acc7145f9b99c447f6df1ebdecca5df42f9ac629605d96772d95195d569600ce019c063aa6cf10d4367354e96f31cfabadb8ebb1fe3f6fbcb1c56b024ce96e4de7d487121ee97650a47a4f01cbd82c4224042e73759df88502e57bf2bf3df95d9ef06ebf115c2a87897e727f443bd4a3dd86dc7e76f5fb6af33f4cc24f965c739373c5f47adfa2674b5079df6c1aa22ba73b3edd1f883156d5cc4fc8645cb7df435efaebdcf3d8c7ef6e10e7c695ebc84d0b36c74970494a0a90ee192e990f54d345196e6ecab3cfb0a22e2f2dd6043fff2737caf577e0bb25186fb4e9977f5fef9753b974a83980a6dcd0e469a6f9fa8a52c7f9353c41915ec3de41b44455127cf5a7446b3042abc8fce7ab18c59540af232fd7331b2826334fe1020274ac57beb577c076cbe4fed387d96f9c89b2442f0b44f26efac57c72bacf3268adb415f4015e94a5f34fab57e86f92956861ce78d6a75079914faafcf8f3e35acbfeac9d7e7efd7515759ef50a844d1bb866f6c29b6247f93af2014aa408d1858a224dd425ce4732e079cc115a8005ce467567e56a1efcba6e5d56009770dba02e1e1ec16ca806cf9b05d422086ff3e906c3b0c13850bda8beb1f6061547d33e27737ad3754e5e2e568cbc2ddde35e91619073fa0a8f030666b578f117308943edd5c0b4eb7e36d074a13d03c3964476a08318cf97ebabb66cc226af0373674b4633de168d1c94f55e67912a3bc8a404ea61a00206ad70fe090c7b0ddb508433adcb7147adcd5483d8fa3fdfef2af0b56ac8a8992a9c83a5375507d0418f17c316ff1b9466a60872675a3aa6118f018eb6d3c62e6269555c9554cbe001b2faa3da8a7d5b3eac878fd2cf51660caa85b84833aeb65c3ab807191e72db596e4ef1c0bf52224c25a766ec361a016474ad978f271ab810afd5d4393450307cca888f25a9e22044510abac89a8082453f237111b70608989456187ec1203dd02afaa6257c47c99a7f7b0eeefb0401ac44485bea1afc436964eaf9419d6623681e0c1913e85eb010ab36cfa0877057ce3a3fac4e0064764dae35ea9892e198d871321e23a142b7c581ca01f5048f245ab3258f8005f2438db016f6b36924e814449a6f2ff677a2458e366f7ea8c8c99a8e26a815a7524472f16997417d073be89712b3d5265d7080de781c92d930077c207bc09da30046a7a1e8feccaf2aaf6fe6269e7e9b3ec32853c3492a20eb5285609c36361a51b7a4fc277d9323c1df160d15170ed486fee6cf75a437dcc32f41e8e32233da0fd085d8d426f1907ed5aaf9e84be4ce4bbf9521bb6dffe980586a40f0ae01526bc1fb618837d2bf8d143254174d30590e73c34f1f160ca09c148592f96a5436bc0b749a63d23f09f7e93e5a0895b7088841d7e25ef2dbe82535e44961e33fd9d3eb3b9c0d9e637b90ed0c01fe31544c1cfd27991cacfa031461b6c788aaa3698a8d78f1a4b9e6912a30d267c5ac05498743d98afdf670eccdbc0dd02d0ad515c8b4038c6d33ecb62ba0f54de1f75b409396d36f49e0ba68c6fa835f7c90e54454cfa0cb1912a0c1fa3e68f48238b3438b1d1bca8c60f13534431abf03116d994623289988fe4f8295160d9a7f05136b253c9a00786e08e9198378958367a38eb9ec8cb5c45ff17cadce392d7615e864d12741f9045ab175b2753c4e0aad2d24a4dec77dec147287342a652442c776976216f36f2a328eb3d00f56accbfcf1d1067656d52d717d5cfdb5b3bfa07801dc097382ce0978e72b1325ae83b35ac3292b3dd121afb6e66001488a0ab3cec449d1259e3216be4e176a6fe94cf69373c1f5f5fbed9dfb7bb7ffe6bfb7a36c80bd06b008f0111b684747c04bdcc08fd3ecea4beeddcab487f9c21d77e4650acb5e50bb778a362a765530488dc0e83b3e19d9835a024ef0affa849b5b7b3c6dfc8246d65a7059ea5422dd8e8fec34d14c5a919b188029c723f0b426ba641a6bf4ddab16052dddfd5dc9af88b530b90a1271113a6502c46644af1a2604b13c5de6019510c860cd04390e69b93e5dad670b2fc148319edc21967fd5db5bfd3aff5b70290967095a61b4832531392216ec0c653cb67e609a4469b9afd5445af44c7a971d24d92ebfdf3ed1eebf727bdfe8b6b73deda85687eeec1fcdc63f97916cacf3d929feff85c3a32a7743697322373299dcba5dc51b9e8e5ed02e2994d59160c0d82e11e4c3f9768e1e370970feb8d4ba2834d39fd3204e2a79970dae3eebb42f3b229e04758572a26e986f573ab3b18d1f3a6d51d7575c7c5d51d96e0ffb7abbbadf86106e27f4c3f5ed3e8c8d25da678b8153665c1ed3fd3fd644eae8b8823f7f3e228d8f033e2085afa7f4e8f5e44e1b93b5508c6b3108cb2372e19110f856081100492ec4d92199192723638437fdad4f95feec4bb3c3c270a934cbd9c81129236da70b0f0324474988797c45fa85020ca3db5f8c49e64232a19f0d828028c1d1c058ff290771ee82403a74130c9961e5f765e3d172ec230026e23e29daf788afeb4b7cc1600ba2cc6d2c7da19a76686de4aff6f6da4b97468d20e9d0fc2f8bc9debabc8604436649361ab46dfc933b7b2666f38239ee8a9bab216d31e1069a05c5c3c7d4ec6ad0325994b623bc3cb26af3389d1c76e140b3f505ab333fa69b876c28e5ffffcfd65ae9bb2b9b3b806f2fea951ad1445f388f01125e37e13c38fa25aa04bec05471ed2a6837e2c1ffd2a6dfc0217d94226e2cfe519efc6971f5fe69ef61d7c5cce02ca063f367f920e99c0d130c81848092fd38142f814288178862f29418ed2934304132eb862181e6fc371c5f09e71073468c8e0708e2dd878db3a2824e3cb76ded198838b5a098b31f098280c69280979364ce1d3750a918cfdd28e7c4920fa6b9a0a83a3a6bcd7cde943dd5c2921e016996a142986250a14607902a0d4f5987036cd24d376e4e08be020e7e446ce3f75afbc980e954256d34105c524246c38a8c43072f7ce286cb250b1dd63edcfe7b57a62dbfd9e15e04485d8016f6d3cc5f22950cb3221e4f10212de39c49a1ecd851f7fce67429d0c11ddc7ca791f2ba69af20bfb183b6c646f3b558e160e88bfb293b147f4e867877f1b10fc08f310884306132653b2c0a9017cd931ad387545149045e62a44c0c3fb2af23e187d548f608478d2e99da2fcaf10aa22bd8c1c87f1cd18dfe0d595559e3801e4ea20c7b269709fbe379233bc24a78b2df9b657d874af308cc9d176e7fbbf5b7d933d6219d23f57cecfbab953dddcfd926eee61799bf8c04c38ed23dc9a1a89aa056efa96a9f2687baa92537fbd8b8a11443ce9d6198925a990f7845841e5d15b76cac2e632366356a4a51cfef6d6f1f2e5d9026a7a13f7be773c2e91a0829ee51eb3b3b4c77d30d5fb1e8cb484e039673fde8d07cfec51f8d7813c6c2259bcecde559e0e7d924c2afed2a4e5994c41de6bebb962be9df6081fd46561c4f31808cb6c6f535ad7527b2ff367be2bf976de980e5627a1d5b75783f7c76c097203a466b04c15d16b56eca72f9a511b01108e238be007365491718ca7aa9a1b87118f78d8527541fece6b06d0391c6c267469d018752e534050d4c0b8a1d264dc6287e757fd2f8dcb73185f068cefc854b3e29464ce97a43050a6587035f9db01262a8ba8597ce29a716bee8021995c586241941159944e043c363ce4e201719565b3435cd1b595b470a9251968c228bfaef26f407f221dab902f2286904ce2e24d4ff0d49f15403de9cb1ebde4a02843f94a3310d091f3910832eab9688c138860ed94bbb6e49d62b649b1cbd2ab478b9f423567006315080b58ffb91708bb5bd3ccea86cb2311c3b59d761cfa16c3ecdaa5db21c4424207c9ad63607a9f2c35246fa9b208b43379641541db4e7b5bc89b48f962c09ccdaec34549311725457337f0d9d5ac1fc7ed9f8767bb1dc78bff15f15bc8dc0fb8ae1fc62dab893fe52d3fedf1d653aaaac1b4b306d34c35ed17dc91ccbfec8f1ceff6692577defef7cb8f2beab7bf9112e57304a26b13067f6477da07e356e9fcae18b7aa9b306479376fd87efffc6dce7bb1d8a43bb8aa3f2e6fc2eadbaf8857f9057e82a57683c9e109802bd917b0fa0054029ac2a82d897ffa560cc8283f024db7a960b27eca7a7cd6e31125fa2deb0105c7373dbee1f8aac797f3f1b358f63c30fd1b3b3d87087f930e1aea3653a89bbd9e07dfd6eb7efd73fbfa75963352a82123e4a768b28e969736de20cac1c2f67e377116e0b20b5c3aecc434fefbcee7d0bca3f54304a4f2ef6dedcdd92d3bfb779eff660c0f87b9a704b644041409192e95028ca1ac04189cb0d727d64c2d4fd91f2c15d9fe9366d964982ef2732c9f6cf4517510871435fdfaa9900fe431795bcf6ea752c8279c57d4605c1478a88054982c8ff1f419cb22aeb3ec2f7508544598c94737f7f6fa7c383ccf81d22dc81209ff1782df530f6cfebd0194871b581375b7e1da5748bf976ffff8faba9f99ddea8cff69f6950f6535bf97493ddaa89099b09e5a72da27f2de040028649e0772487b748590d91f44c1ba78770ff3f4f58b2b78a749fa9ac4558c17b3328f5daa7e126128d2b7b5736aaa63bcbfcf443f5cdcd13ba7400768c659955a8f25c8bd5fae7bfaf032cef31b38cdf6b669c94f3bd22551f7321ba74cddf3963ccbd895d99556fe5807f69b24bb6fbe80977404640066c3f4b63501a6b687264cec168cea83bedd79c4d844934ffb64e285257021d178d51ea4285f77def7d7ed619e812c5b721c0082dbe9d28c05e9c2106c49bdf76b8e222ae22f5a356b76d4a2f19a65e4016aa49aadf683580f296fa82ed834abd21191b786045a9b20b55b56078e6a960c12fc656b26bc6dcd18f84b157c1413352b23c31457d799518f0c99187722b363a1e0459a27750fae358fdeffa215a39c05629878f2916a56811622a5acfdf0512b46da97105468d9aa2d243daf37ffb3068ce51d76bf18649e51531069ecdd707bf94d212fa64b95bfb9e952655f93be7904a13fd6db29fc32ce19c756f59886b4418989b4aac738a44d38edbd0dff866a16a81ac1fef4b998b00a477643dc5c5950afcf5fbe7eb7bb79dc23526bf0ed0e9697dc3703e785da0e72cd643ee2c639da3c58ce47911494aef8033b3fdee14caa77c3737841d01fe01e4d0aa51765d40dfcf834fcee69e6ddf272d1b9da5f048bd5ce13f221405356804df8454053357f015bd6eee042af33ec883779149b2858b1c8c518f7964d5e85b517a19f6593570c391ebd99f0ebc0218280fde10ff61c8d7b7c0a60e4d91dfd2a1cafb34c7efcfe3c9bbfdca2aa9f0ae7314cd581d5238a26eb22f91ab69773536bdeb831516ed2f33ea5d39e4a424f5f7ee452a6108e99ea059acf16a7abb9aec13826c7c44d255fca9829466445fb825224546b356e0d6b4f7e702c1443192d0a5058516bf3a7cbe510cc8a7e1329d59b56dc26b4fcf8fdd9cecb5945e38779cb9dd154af59abbd711bd946b7571d3cf066fe8937eec8a7cf8d3864ca691bc83980dba76410ed38596d7e478e2bb954c9854acc891c742eff73434059b606656a15db231d23f107fbdb1357b05be4f2c953c30e2e8f7d81045377547255ff0a526a9af1964a8ea7cf2cfd2a9a67fa378d8f169a9e21ee424e468c9df04b1db430164c1e2939be06745f3e268afe233db7664f1c912796fe1d5d8148fa106f6764bc9e7c573df67a7cfe625fb7dffe78b6576876142a580562b1bc2a6ba60a6b7a8d639394f72518f039c042154555d4b6f4249d0e96b642359b46a11899d640108ac6087cff8844c16a8ba85f995cd04ca34e3f2246008ba5128b05fb5823f6c63f250a1aeb0914220841a5ffc0f8b5f6ca277a17b43ffc64f06399567ef7e38aaff1a0b2dc8beae3d7954012e5cad8e931025231fc698f10f1d978ae5eb527310ff25ab1353b4bb921942672c0f811e66d22e7ada72277eae3a77bac892c3484b07bb4d904f977b8f86fa135670d49d4663bbd45595750e825b0f021e08d9dafc291ed1b32f63544db1979707a94d341a59ddf381b8ef8381b0e070bdd3558f956acf06066aaccbdd171315366c6d59e1de2b9721c34ea56adaa8f15c7461941796d90a394a8551c1fe5515ecfc6e9cbf6305ca14bd2c3c23c97765cfb561f95c5583c661feda3aa1d334abc190381f5266be2ef94e27998523c318b65e74ff277b05e178337e97f01d205c2ffb7979559e81a906bff6c27ce87f1fbf6f7195f413571a70d37597a285b7fd01bf072274f91b0e178a31d7940e1452fb773da5bb128eba66a4feb0de2abc374aa4da0e49fd8f79c5fa070f2046c8e54aa082b31b8227a312b41e95b276b9793b13b9f8dc18eca77e79bddf3f3f8fcfd799614da1ae0550f23e9533edd3afdba6f6942055cf0010b101c393f3395f1fa976631c23a8fd043d92da0e3618dd22f63094e7b1bc504f95faacaf9e579fcbe9d01c9d70ef96c795d8d13ab2e8d095ce7eb72956ff1e5f9f5ebf1b997b03c270691135b2497c1528d3bf83560f983830db83b17f0a94715028a1a2d56ea07b03a31502cf10066a80c48826c5d4eddd122d435a7d565d2d77868134629918f7050076454930f62e08786dcdc72ceaa02211c71f944a94e02c5299c021b88586fae2900d16b7a2422cff00745e013c55cf7708b3865ff028962521aa858d56514942a0b81dbd4e03a97d3f986eb474fb11d10f1941bcb9178843596d3009406ab3200c00e38ffd44dc1197c071a0fd7eeccd83762864bde6992b41866c8463e638772cf6a46b6f1a85e6787d08bf3fa266b1a7a8785f477b1937399c959ddb1434876f65bca748ebf46f9c5eeccbcaa345d499a7c00619a4fca9b8610035cf9f0bd46e93e201ca5d5058f9d72ae4de9ba4a2dc2b8d99241d935919c3430d646b979a6482d824b61a42c3a5a0a03553f12e84f4e5a13e5be066ae7ea4f47f6ab76b4bc2af791957b3af8051e0f51001bb87ee41ebcb2f251cc7061c97f2f9a3781874b3aa61082fd2c43278fc07c82c2d055f0ae78250df480baca64e5ae30b65179ec14db0887354544f692a754b65a3b7052ce9108b9039f97538f23620d9d0baf3b2145716aa238814ecb526cb8bbca08f4b78ca47466901467183932888ae42b007a61d532166e60a570c327576b0fab09eb5727b34f3aa7314b8105cc17b447ecdc35b244bc9295a27be459f146a1284a3862764a43da99442e2794baf4caf8278bdd2ac9294449b2e8d4089d365bd9a158f15167aec6489e779a8c1f940e22765c3238b670f14a2084f220d6499ac60d105c50df7728e8ca2c8b5cd9c5aa7a5ce0dc81b712c4090aa1d281514a3ddc1f707a515dc5f029e72c7fd39ad383650ee83bf45e6cc4750b5ab836fd90651eeefa58650abe8755447831006859ba482621ee4c6f36e990f314090483454eb84417e5b21a11e41311e8aff499e7c33f3f50c9f6ce3c8954d2682f7467bf52a96d90c6e02ccb5c266f7835dda516eeec3ebe6eff78ddeeedf7d7e779aca51e815f6bab76f4abb269ab70f42bdeccad546948023d8a1fd2f6caa8ed35f7fcf5a7c7b94dcd865773bf8a8673af4f7fda33a81e1f9f66b0feddf3d8fcfe7956e5bdd37c2e3f7f962bbfd08d4afcf5f519a5e5af33a564beb5365a1615471e6cb479f1b0eb5cc40c9d4c8eb3d94439ec5a1dfa7ad8fe7e89a75df00cbfa29e5945b6423f9ba9640c4e76d9fc350618218ffc682b058036d20e34ecadda4ef00b7a61b06bc472da67035c53004d9588c2a8dfe037a31c8f33eda8c04a840b41a965b95f0ef14dff8642f8b2fb3147cbb4bfc07395d6cd00a4c3117c53f11887ebf8c57435fbf2e7f3b75982f98384d93bacfe3b552541abf48b4524f284f0f6620cf2624a05f85ba75b5b89060a266dc354775dad0989440d26bfd849a828b1d4278761fbfa3cafeaa81117b914ef3a561b5a67925ddbab4a003d2e50b3d49e2a50a4512c3aa652e4695d3e5a4cfcbea5953c6cdba0d03c1f64c3f4864a3d26ad82f44e614cee718af06e859435f23f1ef3153c4accfff2328e3326334f55d4b224aa122b09a8e849dddf52a36e1b584ca2e9148d998aca98acf631e81cbafa81cd38741f137e063e593938d85e34cdabb6029ca48522c7133d8ae825a1ebe1d064c48e88ddba08fa5e6c65e553495a0d06c59903346cdcb2055f3ad40b105c04a5faf1d0ca45239656459c3766659562758c35a820a2862a25755293a194ae726218c4264920a3464502d1d34b9277157ccb79900b75dab31eecb6caf52a9dea755060f3d44e90c350a2b0e640fe8c7b66edf2ae904e9a9d0e02c7c77c2e4caeaae62b533e2ad147ae6889ea82ac2a2982bdd0be229886a864cafaadd10ef69d6a18d498ca4698b4ea8528408d105c813d099332653961f55de38b55447945350c6881a529714f60d0652730d982c0bb2af360029934ec1a5715409b3c5a97944958ae929b5c452ea1a4a1a0366a50a47da70601493a28eda56d8c510d5a8f3ca9a5056db9c0d550597986601196a05ceabe8f0adcb411b69d1ad830ee4a9fd53a3ea874deb31dbc722747c511c220934b05d69fe6daa99ad8af50af5de429ab8b5853bc6a14cd3179317b9b12eb33dc02595ad89a5a3a99c51af4855c91fe93752cb6c2e38c1b195384e95dc0a8bb4a6a7ba789fb494440c490801333aa4d5e43d76341fecbcabb1fd1cd32eb3ce038d0b13bef57ee3644bb963c972c6493b6c1841e9270269bd9bb6b6de5e5c7efe3b35586b4852a3de12aeb65c14dd54c3ae6bf3395259bb89832a7492cfe9cc5e2358bc5bf95c5b2d0d662f8714dcfabdeb82db3934c1996eef49aea08fe037f46477b538dff20d95132d0b1fc6a0954f677a5f5b585db5d205a299a7cf23781cd3f0e1300d87c62e05fa47961fe1fe379a96ff7d5dc24d08a71e0bf8dbfc29c104dfce8bc7e8f17459b72da27e3fe22514b3937a86883ca2f35e80e7971d38f573652536ac8257e82f7e85bfe1aba64549a950aae9060da39b3e1b48f975e79a7099a0755b532dbff2885cc4d9f5ee813a2a9cb946f08bbfc95ec8b8fc9b9689656569cf7ebc71262df4f27f97574d06d36c997971f7f0cdf7e7cbf09d0a3204f1922b9f4c4d8ffc354a7429428d30cb9728ce4caa768e2e451d0a34e13bcfd9c6baaf4b38719d0ce5c80769b0f871b879b965fe79fff252782960d6854b05dedcebec3f3b41449da23146c2759baa82530825932bc977ce44d001cf90a1b7cb84082d394bc8ca0ff624621560d445251bcaf57bcefbc435eb77fd861fbedcbf8bca0dc78f3a8ace672d4d93db433df8854ff7c447c5f7f21bafd0b01e07dafbef8939df00b21febc5038f7e3d1e9d938deaa65f9174631dafcb3bdfb391b7ee4ee796bbadc477cfe3d53ec7fe63aeee7af73358aff9a6371951ce3a634a7ca9a8fd7955403e351f5cfd35eddc5e447cbc0dcf2044ccff85f46cb6c71ad601255f9db698037ca7911c651781d82f23d3b0d013751914c3b6862db39af0d5a0c5253e1ca59030fc0a35e21ca7d13cbed51a642794c8607f2bb0fdcd9556f7e3d3edbef5ff7738a025445287980293ac23cf604cc3bf7da61259f4b28497311f5735abc8d00ea8cf28c22710e6ffba7f0ff68acd9950ec64279b1289729205e5829f569cffbaf7013d44a2d1e101cd5d70385ba56b636319315fa8f70a13fc2b8ce70579c8deb10bb713db0535efbc51f6c7433c91dd586823a7ed4287a2872d1ddc42850e18f91a7a6934f4b9036d4e4d21260801e844dd5aa05d5b8c1fae99db371a5fbe114dbd60c8c910a1267c213321a00a80bf21d30c543dde10803e748235f289435ea89234e897a524008cfc7f88716b87fbe8a63fd3d05dff7a26bfc3b6ad3e7a15e79da9fbf7cfd7ea9ceef1308cdf2e861ecc843468402d8228a326163b519358fcbe933702c915a1b035564c15c7e06079bf47138edd9934f0aebd7f9d73c88a67da4044443ec75112fd7e57e86b853a7a58767a92479c2818e2db5841443a6122f0ff3bbfb3fcfbb8b2568da503fa63a87b3c68b4cdb0fabce4da6e332fbc4edb0ddc52897921b6677f2edcbcbeb75caa2e8ae2472a46ab6d426aa6c0bb95765ed8ee4aa1406459385f05bee32277077d8b59e6ad4568d6a5ba3b670dc528b2214a66414eed40b8dea2a52ba04ef44a0648a4dda62580be7c548159409b8506cfd3a54cb9129a7f34f77f0c4b1967b0b8865536c0744da9505bf8dfda738507983808751076b19191283a713c2cf0d1fab7c2ded5a65e2511b8ec2b6ae21cc1d11d78e072457b9a45e66d05348770c222d666cf8bd83c6a90b4def53f814c59a6956af293dbe69d4c2f453bfa52add3a9d0835071d1639bcfa15b9888e4dd41ce98fe9f21e6c28304991c1a559618bee0355c86128772e06318f161d3467dd9d5a9a6aaff29deafefcedf83cbefc39ab5718c8e563a35ad770dc56a31f8133bd45e3574c2e8307b845d33f3bed6dd67afe0922bb174af09a2613c8fb43677babddb6f6eb6c1a69ea70361c07b8e0d7ecf029040924478181e4b2a94ad9462d6ea439ebfee9fc565eb78779a9078764dfc663a11c6cd14c2d280bc0839c0b0cadd9c9e4422e3077beffdaf9fe9b716b0a6c9ac29e22541525ff3f57334a62d5258a71a8c4be9376bf5dbcab50cb23c031a73d42bfb81b24f5534d63943e8b9dc51d1564d94eaffcd5ddbe5e8a15fdb530368309dfcf6b0ee16d19aeab6d3dff787db940019317e12ac28f7b25535901113125743276e1a6e38b12871540282fcbdd376a19f8a80a009f567b902d847bf55ecca309161414b287b2557e9b2833f2b32f1e35d129e4882c4a241079162c39aa823605f155ac462f8a0d54b44621610650f5d6f7720749c3084d1badea972797578f8cbe815cdccd8b307668519a9053b841f9e09dd344b0a92127e35c03729b91b5ea2f791a495a04c8697fd06f700b3b2a55831fb950022e011d3d2532036da50e1291beb9f4121b889736032418930b630f3423fc8c82199d4f8a2f68c2a07c8d80e7e5d0eb8702084128998cd058ea753753f7b171df1b6c9f28070d1602db871f2b8cad69a049047aec1c6625afeec80ce72b2b2ab2025492531dd09e7b8f502a206c889ae2a30522faebb3d5b0d322405a09344115a29255898f3aebccd46a4848918af538e72679fe2fad8d71deee653626302dbc5f0ea94ef590f6b1876bf3bcec0da649b154809296930e894a3bfb22cfe98b87abca41ab44b2d56a75ed74734244030b72b92f658bb2860c338ac7b98c42ae89421ab538e7695f14085b3f54e4e97c579f45e2990a0525a170499883de38dd55734a22227ba491d36013cd02187a8fc8c944fa2625740770b67ac07de7511965fbc56dba06edc56bcc3448af219c9f6dff40ced4ea55aad1f37fedc61f5f9eedebcbbf661533dc03c849501fea2f3106f6c003fc7cf9e76320eb7053717e41f59dd88fd6ddcd2eef1bf9f6a4dc67001735e5b56307eacac7b9460ba6cfbc582547b1661efde69d54a6bd655b566fafa621a11c9a3bcfbfc35295b1e7fffa73fbedcb9c062aa294eba24f3ffc1d3e7d3e1b2648a0f8b06152c430f16f46ed3e5efae0af46edda75f7bdbcceccb3bcdc75a557c079c00b8dbebdf039fe52df9e7b5609673edab3f9b4675e709f1efdca2f70ec5c11db7f2469fd11edeef37f3fdb977ffce31ac5a8055c3ba61f94c95bcac5cbdf19f20b8cf74ef7c8dc8b683154a02c02b978990c8c826079eba9956af451cd014f0d1f80adc128dc07ae163146d23aa18abda7b043a99b46ad93d4158ad240f2a8c405aa509040b8a48716a34a5992cf518faa6f9404161514ed47b663450167183f5e71d4ca28d26b7af35922e346a70e99774ad89d759279ddf1d31e6016d14394ba01d31c382279baabde26574186836affa9901ffb554014237704328ddc3a104ab4453853a0e9946d4605a1c9c4f600da3b994eaa7702e99290ba10445d97eea002e617286b5a955b29f7b8c2315b54230dc8faf06a44faa0782046e60d4f8016550b7b266b6958379902346dc099807907f049b538e5ffe8d669043a9fea1d39a8f75a1d1fa63d0a1a8f534dec68d94d1d04022bd99a90582c36e999fd454174c8f1d407b54de52566df8e722707690aa38276be46b5a54af5768d7c9ba540eb4ef53119b6d3fc9eeb90efa3ad120658aa0639ac410b7636b1b3ca19917315a74095d4b9932140c992bb3ef5f59c97d673a489f278b69a15079893fa9115f72b4d93b1dda98d02b5ba53f8e219791adadd670dd83fc9b028ed73320d35ab4536a204f5a7400e65fd9cebde0193298a258b32a41d032956bb82e6ac969dd7549338051344235693aba0feb863f51ffa8cc90d4344cc4d1104a50f819a1ed3dc8671a773db6b67500b98da1dd2cc6a5e626a039ea859522249aa98429c64a882489a74114ae94a28414dba124a00bc4d424926a418fcb921dc2c42a9de08a5081b67269442af80f94828f1b56c3a7d46dfb7dd12ebee56c7755a379a1f32f6a3d785aa299a4f1eb5e73515adb45ee2585679d23476f827eeb6971900bb92735e4ee7967654274a3df2bdefbeb1f846f4fd562bb5e217b7a8247f77933a49df6538ef19f2d067b879e164acc82d09cad55ac474af703e734a3652f2f2498a799ba938b1868bf317412b43e832246deba236544a28779d62a6d6fc939cd0884d2753298376a2ca8b683235a70e38f23c4dcd696efa2d95e8e5efdc39d482dfe9fc440978309efb0c640160a1b5e7ca039b5f645ed698314f5164d563a6cafe99ebb4819669b22672516e639aae41f622a50445f2560b0806c9c0c38c0f0d751c6bc4bc4dc8ad2f5733779abae70d35ea2ec2d8c8ded852cf927df6e741bbda6a8578afa00c57c13ed3265ab22250a6cf67df9af7bfcde68d6fedecdbd9b4fec7f6f0fdae341b470d6d02c91935b7317bf2e1bc9dafb16ff87b36e8a5a3e0cf1b6d32d1e8727ef204711e191832e463d783ecb6a9c9865bca518ee807f4127e055e2eb0216600ebefea27fa3a4651000236e80f1ef6a8b6183ae7b65c9a72f9ab07262b7e5b665829e334cec9c62eb73e51ab32de6f6c7853a9b5029f77804bf1b87058583aecbe2662cf8b8c30c355dfe9aa065047bede17597b7490e9f7a11de935272f28de57ef78de55cfb3704ccfe8fe59070d3f0cf3ef94a67846486cde328140958f80b28f362175e41d0cc12e2827a528d41c4c31e5cd936f9b99d2059b6def9e1809dfc0b3466a5ecb553c6a38240fdca91cf4ff4d2fdbc38fdf0fbbd7afbf5f3a3c18bf634d32f50820619d67ec72706850827ad1b1fc4c253f2580f393e909b0413936de72327cf6e05cfb78f5f13dd2bb3385b0a5d626a515ee7e003e9b4c76515d67de177f8144f4e408d1f11554df4d752dd6db51de08492a37f984be9a5f4b41f9cd5c0273a0f0511c96c2b0a0ee8e1e7972a77da0122889906b010a9b4af59da6e2aa9e11825535e109c47da611584f64ba3b8f17b786eccdb44cc8808918606ac966aaa7cfe12158e52fce7c643e5103152b1241bc8ca07a9f3b31fd3942a0eede103e556a46fe2601f4372d1e544111952d89b196595de3090673d686689e0c50b9b2ebd679dad73fbe8efb390fd160d3d1aff266993efb2ecc9c3a59f0709fe9fa268df63ca4b39a212be44d9abfe93fcb26aff2260df1984efb6816a242b373c8bb74f54e7f7975c7df2f11390e3ac107cb0b65622fc8fba8c5c80a6f78198daa385eb86d9770bca82db6e60857c3928db7506f515b6afff9fc3ccf65460d8d053f9bd8245754bcb00eafaa06b17ba76cd0c7986fdfc82f48f0bdda60ef73251f5d742dca2eb21d7fa95fb3fa3d0bdbd03316205cf02335e0ca7d978e5f0fd7c0f39b59fd30c1fbde1977da079bffd36e7a1f4c5d6aece163f7d9d9c07ffdf8bb4ebf618bf3f785c8fed7bb0c056e5055adafa09f8d65304a3626a5df61d3ee2b77319b2592a1f312540445bfbcf9855482298c627e2d98c3512b0cccc76fdc9eebb09c5d661fd81daed2e3164068ee6101f465102ae8b3c351ac8f9d27572cd2101214412a4914c94d808a11108fb65999595cb0cdb8eb9bbaa0271b792ec681672ae42a7fc653cc30a55d844ea43453259a44dc502aae50a8495e34b1a581f02f1abc2f8062d66ca53393c9c470ef704eddfb54233cabc8f3ad360375191003d152f1c560b76e72bba008c95a4041210345ba111a412c54c52a152d10b5cabc58a5f0258baee89ab7890a183b5b950b718a5440c002cf556a4801964d299544919f82bc30a296052376bfba984128285d74dd8387619e6d72b79a1fc98e3b98e2690f8fe87bd8c5df0a80d965a10ac1e933c09789fcf2fa3833b377a4eec3405447fa9ef6b232932ec3a5c4c4febb47192ae3dbd73beffafb62d3627ceac1c1d777f4462b26c172b9918fdcf687fa4f094d97ca663d1ae79b3abee9298b0a9e507d042feae1c2b138ab91332b617a9d85f051e2c3e5aaec0f64d6a30a16ff185ffefcf3bfed97af877f5e5789f3137aeed635cf41ab64e655dc7c900ce17e3984e51c392dc890567e739b5633c3ef9ef36b32c84b79d5c022717357ffb2bfbf6ebfed86594823470dd1cb04951db25288916a8bf22c1213f6214560e95aa48a34f08c1d2820289d511210346148ca2f694bad04f9eb9e360a8c0cee99b909a77aade422e0d3993c05cec8d5a6c2498c2fd74c242706716af237b9a903ce54bcfc4d9fe556c9e70c2c640ad2106903f5f1911f80aa5e3a921cd8df5d98b1be62ea5f9fd3c8392d4e0ad4be73a25c0497e4312db8222379d8d6398515b5d66e888a2371cef787c92d66b88fd31828462476668ddda5e93e9afc9def2430c206a20b81cbac8a7d8dbbcb54409a3046725e8e6e3bf2b1907395620bc4d20d147a7ffb1229269601a432c23f1fc9c5bcbdeddcc06052953ed307fd1c32835cba1e6c7499a5b211e52c819a039e627737159fbf7db96cd105d181001764c69f6f8122e329d7288dcaf277be4a0d945bda016557b18f594fb56941b56a033906dd3092c84a23ceb1d335c85c6cb2ebcb595b42dddd7ed6d6c092a3791e25122b938634c32b17864795b2ecc19a0112068e50e764d4e19608085935ece3455f309cccd85e8a2ea5d6b2fea4b53c24aa00335760d2e17c02d301c8a1f5fcc1c132bd1a80de28979e92228063422c2d9a68504bc2630ce10672557a8b7c8b9f5200760b8fddcf7aeefed367468eab73705fe554ce95ce8a0867b90f303947a38f3a89f59bb2eb4774d70bc809e4f3fb236cb877adcb9c18bf7e7bbe90acc89a314d1ab3a256ca13c5a86fb5f06cf0a878d99a3aa5a56b1162a356aa3c0f32d33fc94440599673c451c61b61e3abcf3dd5d010878a83d7a1ac22010ac8262380d7dc804e44c027f0d280040c88b6a75244ccaf8ad4f3fac217d5ed3cf731112b45e65925062a92bdd7da14d234f419cb8accd4a67247d39290f9237f971511658c474cfdaa535f968dfc305e0465941f62af0c7d838d056ec3aaec2f98f545667deaf703c541e3672dac1a555402beef5550b3de7e7119c3dbb17e7d3e7e7d3e63d81271490810464c179d206136388804f24ed64252b62bce5443c29718381e188b57462e5f468e672397de1c397f3372611a393c6fe79876d91b4440c59d74d579e0cee3e6aa8edb4fca321db9701eb92bd124225f1453e75536899e9a6594e2249bc6e9fe7cf3037083f71d2922123de6387fbaef6694d2d505276b47cf0833d3cf05b3973983e7e297da29ad5c8b556564867fbabeddf99ad5db90c9e6aa4eb65c5540d554cdf4dc9daa1440cb1baf46224009135d2a1465f704ad75933103b610fc499e9207fd9197311605ab4ff2ec29813448ef336006b5b43c55ef95a7d08074c8a8272d722974e9a44b028092d6d22a504029cbcee1232a8fec25a592af0533a37aca555136492cb8e4510f5ec55903132b9667061d54b1545010a045e967967eaea294a62c7fd71d2dd38de5ef223fa08d9511c825996df54e63cb0dc557a55f33a03fad52ac09ddcae43cdf9c55da92e4a4eba034f5ad95c15369dbfb8e89c4aaf33092c518fe774dc50a90bff3b8c45977f390eb172459d7db42a9f78a104a0574458801201045a88a46342942157a50821e1464cef82ce2b3ad59a68fc9e46ed558e88fd298454d0810b07ad7293989cc6d9b082faeec8f2653767e479e1b245888e0730de0300a4de38b0954c455e66cd1607f586bd82457e8c68a63d852abb2579d75d6e0832ada573d855e2217e12c2ad7aa76d4d3217f4806b506f99be9da8d6ff5c122b705551b75be1d0ebb04602f23865c1b20f31c97f3a84585b2ddabdba0044e83489080a2c39ce4f176351e66eefd6444a7168136a13f404e07f90726ef6890c69aa8a475259f4c1d0053bd1cd4c76a084852269f514f450f41afd838f0dd1172197b156b7c19bf3cbfdaddf872e15ab70a5bfb80e957505ea89cf622c0dd0af184a4c8c5651af2c5ca8d61e0fc9006a937f2db65db65479c9329775b85dc62f5c578f3c637d6afa4c9b705de563c2fd639b562530620c2d2e973a5924d5eb9a9bec4cc9a1529b3500c6e9d287231a296a5027f7e41420ffc628d4a4ec69ff6993cf2aadface13688306d5336e5e573d944c18adbced5125ab5bce90598def2430c3725f0e4e4f2745b026f902feec7600e8ef2e432926577c8628ba8a5da90b79cdbb0446db582c75b6400e4e8ad3b0249730be568a9c6d18bdcccc46920c7000ade3bf7e24d64b889681c5164015946c85dc8e4f1186e03f403f3b94299e6ffe99d8cdee69d12af37cd73505ae685190a9eca2fb36a8fd924d5c963e9e9ee45eba4e88bd6064ba9f635f31677ff1b8b464e3f9e71a598471e67fc30f364b8e92fdf809c7ccb8b7f2670dadc46a70eb7489baca382dcf729f353543bd41a1a2d356a67d009480a01d3f41538115941b5dd17ac46871454ee8b058c9b2b39c1b498df019513572db5078a79207ad9208451a6247d59447053c080aa6f8defd522e000488023efffc6fbfa37cd64dc7ca0e091fd05ba800e03572c55293dd553eb23f66e7867a1a7d93c04d1aa18f35a43a0c8d3dfb8e8d3726de15f265645f0eeddc9fce6a634befceb12b5479d23f6d24b482ce8597e00379c292ea6d9d10b10700713b212fa870250bb28259a4faeced82bb83ef81639f44a04384368cac79e7b954c0c4fc045983555ba01c5563a636b2fd8a090b60c5c6ed975e209e5bdcce0bd642a710bea0de5dfd0b9e810c384b9a70f93bfdea945f254a8a26c91292423860adcc8398d9ad5981150aa054d509499dcb2b7bd7852d21b458505cd2814fd571f91af6eb4d8035e94745448ebc4179fd1fa082e0017b0e0c15c9a0964ef1e94a2a901970a22118ee01e2dc8c66fdae19a50aa8fc78e8cc341458bf5e8268edf664d67f5f3acd6885382da4461d9089dca8c808b8189358981a9a527a5e24c942048b2d1a7813db57c00825acb287287bc57cc28af34ba60bc06e4bc25d90442408201bcfd0f832a24eb63d596a2a6f348092551dc7d7b6731bd1de47e972c4ed7d1d76f7ffcbf85f4ff16d27fc8429a4ab30e160b40732e968a2269b90844d7cc0421ac5ad766aaf66cee492a97ca3fcf492a19980f180e8fea3a5c2da26fdfe7f0b1801a6d655da13994a1efcd4526b8a9a039ee297f45e77c0bd3cf469b0cc741351819559d3cfa146e418946cf8592cabe6a827a9183c5fa69867990d11859ee2252d0f302ac5d2951ceb870beb9476443f85e0c3ef4022de1f43993379a57da400261da2ad39583f6e5f59f73aa60b32cb7e66210a26dc52c3233d93464e2f2d724dee19e2df45d61acad785f18b731cb94cacb44b85dfbf9bb1b8f5284d7bdbcbf701632089e8ed6af507ab60df7f5d4e3bdb57d67a11e6dbc31ac4ffb66f305cfb5681aa747f5cd3f67b3440c738635d960e253a02482b52247b99a6242a7fbbca39e59248e99966c302833ee7b3ef153eac52c4035e90d9b6c408bc7eeafdcd16c0c7e8ca3dd7d7ddd8db312796e5b4143d37d43f9d3e56dbd86c9c8d187efdbdd3f9fbfdcd08a06c37eb8e365d9d4c186bbecddd367760b88b985a25261081b0f88c4aae04d3eed93bd53afe7ae8b1997583f36481be45d3a7d4ea8c61ff0666fbd290b6d6e2b7f8fc7d9cb3ef2985c84c3437c485ab8e5251487363bc890dfb54d0b6bdd82d36e46e8b07b7dbe189a018934ab47f8c60504c7ad17ef26837c9dae92433f88c7d3a69c3ad5e502eeb7c37e37f708bb7932f89d87f1213dc2994ce04d0ee9db4ce5d3be9925c438eaa0b8b7b090ee311672322d57fc104ab6e081b83726f7ceb2fb8fa914f28f1fdf5027e8e2be52f64631e05bddc1b4c056939078605016c05355129f502847644db484a75e0d0dea1faa5443e7d662860d14835aeb30a996a1cab8efec2251df55e546c389aaea1fe429661067a94ada8013683709d85933f79252b268f3106380b3a5cb76e987102d95f8c40e65175c338d4a343233e40e77964ad59d5aae00ee4a3001e5a8fe2ded06d44a335e932b9452a9aa4e0e16c15e80306ad5b89a0840219f49366c57815d9345085e4caf7107ad6e8bb85902381386049a1bb4d045f648b1601471f0da8311d42d9cb46fcf59e50ed11230beeddc998ec855858564ad83a8ef142aa25810aeb302746d5680ce6b17d65eada59e65805202205b1327e65eb6cfe3490b197a4f802d0558131e95ff126217ad208281398dc43be48816f5a3c120430ccf2ab056cb5068e67f493dd3266b9e72a01c466a621ca43830b1aaf0b59df649ab6e24af8caa492b299e99039c526206e9a498c8b503880ec46021e092700fd15ff2fc8316e0cbcac2a44f59cddedc4bdbf48a35d92b3f0e3872a6cf72cfc949cacc23fd5dbcf669d08238ac964ad65238191c525179f610fd05b24dcb15c2dba8c01d59a409da5b013d254cb6869b76510b9a643510b3967a46a53cf468406146705e81b84d73c88352973618b7398be944bd06e354432746f48c9877885e3b2d69083bb71324715f7ff295ac52d541b59f429f5fa82e844a3fc831ad3aa9b29253688e967483f686e6c1cb552aaac44442d9454e533a68042144ee3c4f2e696922950a9da53b44acaf0c9e33702721d58dc588438f78248d45a5ff92d1654af5804c7e31bea18d830d09dc4a54833c02e7036e0256576a88ea57408054f3f361e88771e24e520775d4ba3d052daae0962acaeda12552a5f9664a4ed5ee0abd98529cf8c18a9658f25449318c9a4e1e10f60d73c2d03fb6dfbedf72cbcb36f8339bf3d21e26eac19d67fee10e7f5f735b76f0b4f27f6f4df7cfd1a4e1918af7b0d2e2bce79e5fc697dd76be67c2ad9e29e7519611b2266134cb4796f3f5c187e7edeb059751a9426d8a03e53c091ab07b153cc523ea458f5df1c156a1fc6c2a35aa3aaaba24ce6a3da392110a92c2e1a515718943cf11c61e49a80b1cc5bc8e46f68e4f89124afc9fa117b22d2299286a04ac75a296d8f94b741757e9ef7820578f14b5b66d43fba38813f0c9e1d7457d3c703720b8b4432b8bfa9eb05a0f5aba57eb7ee651d9d6fcbc44af96bb72e988caaf0ec2dc219f1f1b7e1828fa5d17e8aced4339e33890932ffce5545e37c478c545c13dd77feccfa824b7d3ea64285e1c6d971e96ea60491a123b2300fa3af56d76a0005f4ae85583f3656b0808008af69d2131e55c6008eed54cfdace869afb756d43ba2723774a2be4f19791ffae8cef8c8fce40c8aed1a8f62af19c4259c77014c5f4974192faa137c7d5d31916d06bcd91e00366c24d520c93851d45708e71514fd3fca9c1b447999e66cd3ba6bc8623a8a283bf40e85d353cc87524ca398069156a85cd68b24c3c55ae530a63c4dd0086d413e1dc867f986fb57407ea330951ac970878894e0a3a5565691c26e4a7d574d52baf5b467d62c9d00b21fe4e228284ed3afc0e18d4aca17aaa45e13ba0781d571823a5f5a522ea54e67eab4b01cebedc80ca9f3009b1cacb5cae0dbd2627abd84d6365244f579b53894e83c3e65e5ad8cd86c5bc18b48f1d0dfc4e96f875ad35d05f65aef4b6620165cd30517f195577fae56564629b0c92da75145510e58ebddfabe407a1d6cf5968bba5e712fb25db26a0461f460b8a516b754277627037ea8708e46a2c3647e6da9b6247fe7d8b3f455397d6e7077e7a7227a5aa16c64ce723119f788b4b6a23b73208fe4a240fe20af599de9f810595308b1eb67d38f4f7b167d5ad41599992a4fb4d21e688fe465399c7de0905e47fccec02e81fe211f1eb4b34a3f642ed8bf7ebf45dc79b124a6b0af6efbbdfe1914de6cbc66ed83a4a7944f9e1cf82227905133159b63096a8b88c9e165cbdb88aaf204c45ea268643e04534c403fe53c4b4ff94dd50dc3f2a5012312a8c7658ba2ea8f5a5c9d51f91814af892dbe52365490674d0930874b02ccae872b3446d3929296a2a22b542946001a80f3005d76f03b16fd1d8564e08a4f26a8a6cee993b297e863b76ebdc18eed1f38cd2eae3233731e3a7019fc643e4eb5ed678fb91ef9ddcb7e7fa197d75c249161bb0e8828de7a20d26bb6e1b728865f923d3b1247531ea7a7e13caa8fa32097ccec9a653c7ae1ee6af4bc0b459eaf9920658a4c340f9dcde1a06c0ff26794f1a1b33d187f738bfbe7d73fe629b3f31abca270c87c325e9926b307d2815a864d0699fb9409797c9c3161f1f4d3339631639f583e6447d9a0b6519127fdf9c319ab9a9197a98ee66e2ac5f049e4914917d6f266d80dc475695a26d3ee9b7cdadb3ae378f8e004fa1c7f2171ac0209f21726eab77b60700400f19d5aa34b2edab9bbeacea9398753dc3b42afe765109b3f527d62274203bccc4da653fdbf4f06420446a445632137ab1ed4a98e6d5542c086a708dd49ed6456efc0ff9c54bc9e387ffeb870bf06c34fbd4b9d6c62b2c9c7c5be0db25acf8bd5e96275bfb658b30c38e48768b332ec0189430bebd1cd8b247d3829f3e7370110a212d74dbe6fc5ea4c63fc66fafe521d538de26995d14c485189a2060511feb8dda52aa3ef173f4c2be6fb08dd1b622e88b13011d39c87c52c0d8be660fdb424bb9d5cf3f4ed3cf026ade2117e8037d24cb5ca69a3842d058edb6a9269262d55397da7685f0599c303ff797dcc487d9b3efe399920ed1f78134e7b76b235df27d9de91e22644538f960731fa5761e307e6631bac3ff2207fd61ffdbd0be3a1775f7af7f5f9cf974bf5d8d65bd6d0b2f6a19685238fdeb2f1061590ca079a7066d841d3e55ac6adaabccd472c367fbec19bfe7226f637457fa76fe6c0fa3fc6ede17089453bc494501cdaf70d2198641235de705c285434dbb91e55605bb54da3c63b0f878ad8c030194db238b55b5de948e3cbefcfb35aacc914adb9e073e7cdf5ac1532c4982d986d1e4ecb98f5e3817c93afe03ef3897c84912b26f301c81daf54ff69c34c7ee8d46d79a27863f533c6a3a5304067ecdfc1e4546e5fb17edab55d3e6acd72a62c76793b7daeb269056a0379bf9be239fe82d22953bd29787f4ac76c94c16a75fc4eb3ea3b400b1e1e86159d6138c927a8ec81da0369a76ea172ebf74996d21609203c51e56957eecebf86190637701e2951baf7269df6a04aab6d87661b358535408152240113574fd6a31cf8eaa0c6ba465fd81ff143339ddfeba7a7cfd57cb844e655451107891994533a5b9484c8366b2493588b9b79e4009681988f147552f42221a1c963f7aa551d1ad8ff23952a13081ebf4abe97579f7ea63e75afe0bcb1d7faaf9377adfbc2d04547e90578d7b242e550d78a421e28e61db9a6953bd4bd8610d3ccbdc667f75aba20ef96dd6bd0b71aa6e0199902d26574468e078da3700278db052d5e17e13e3bca9abc76bcc9f5da4039ee88bd869db436bcb7e48172b15a271eef579126fa9da43136a5258b71bc5023b2aeac849846ae8829c2afa88c3d9cb0ea7cc7ae15758e2849778785b9a41f2ad337e76d269790b3754e0b8c72dc0eb7e0097783f81c28a819f5f023769a864f32944c7c92d24a54ab83b3dd63d389df5c54a821d662d08e4ba2da6e359672f616c24da3ab9315e0178c1b11d089dd31ea07f21057dcddcadd05e28fc03d6a2723f2023f4f105110ea6e5acea1331a578a4762f912a59f7416f6cc0aae47f249440858eb206274130f7dfe32f0853e131ea6d52cb30b7a95cc27696e2f863210975197c94e1d7998fc7e1264334fb236042e50945f4b83b26436f8363bd8aacaf573ee13572e3850dca9ab0667561f7b3a6a2142f58b0f9dd857a35f5e23b6dcfd758cf022de9297b3f15123411c75866a500de5f7074b2d76a25595f1712b53269e05a3686a230803623892e355a57cd97a9a6e3d4d36006abeef3c3e9cb79781daae17214b3213a988483a32e53a6d5345c37c14e340c59ff71675be4a8b366d048d74cde7d5ef7b58207421dfab9f691991006fad7af0abd2ada2ff11325f3118a281b244d858f6483fb9f67b9da4927b1a73d2845bf0d0372382349ff6081e47f2a896d30700d28f31db12662e23905ef54352d0a66209b0eeeb116e7aa79e42ee416f3ccb3e19408a089e13afd1580c59b63a6629eea6086fd4d82ec607532620bed783339378e7a46159cc8972d02b6929222fd28ee340e9ecda5694031cdf777a88fdf6fcfd5f3354e4af6e5448b14e03aa1c22346075a711131937d17aa7b3d2e41baf6152b85f91ba2d1a053b25b62bd8f18d969d636ffc4a46f00992b05168269b2a967e36f5d0f36565155a3f042a19db7b3e339ee304b205fb1de58e1e00d7bf52a18795f4e41322c58158e371280f8e2046f51a9d8958d54543bb723b68f2ca530d22a63de4b4bf08ea90acde93d744b4a2959a02e4be1fbcb2afba6832656f4407845d22f7037e1ab1dc8c5f790ae9c9130703d8bb97fb96c7d39e6a3061407f2bdfbfec25d22a17a6d67dba6f184805182c46b0c572e95071192f24dfda300465ae07c37743a018c69d74d669cf887e07de21709cb5886c9dc6170dbaef103b1fe44039197603484a75c567afa49f3058515a0618f7a0e69c761742e8192712534ace775048b76e28e9da13f9bafd73b8a6b256725c8b820f15be18998e15009b16a815b170a59553d4c154ad62a2478152d7823036863530c6a2613c056a60a045d95460a2ba7389cf44b887335bae99d872cfabb360dfcf80328dbe0f6193b9816cb886b991c54cc1d26862064cfcfda8471264474a196cec3b99990a58cf5a1b433e87bd0e38bd5efb30f96e618cb1c2438ad53aa2c18f048689dc3e5d179b001120263377a2732874089a8d8c74af5676a85608ba04ad2ed09fde2b1c84f1bae35ba4da8c4c89f1ac17ca94d03f3c9dc979cfb97485904a476f24d2d5a0c5ea52d6df8dd3396667c6d97bc25ad1899b8a29a8c8274f60fe8e3a7113d4b9963f55e49bd733190ce6cfce1914129c095078f29d29b2eb0478f5a965dba9853169b2efe7d48228ea4e4998e2d677af9fac43e76da4cc230af133ea95fd14f3e3a895fd99aac21d17c18e0b15b8e6c48f38be5f1eafde21959bfff4d1efcfac6de08c6a5713e5eb9c86fd5121bbe15d9ff2fbfeec557bc8e7c7abb8f0bdc7f71edfbfe30e0f7ff9070f292c87f017bf7faff7dac0086b8455dcb4211cc369ef6c5ac54dd437c9a4559b7fd3fa37d7236ae7a439cef0310f658972ae9bc4376ea7bc692b078eb864dcaa1dcb50963c4dcd70bef7e36c9a1c71d59e971f7fda97dfffcff3eefbe1e20ffb5049be33f379b661253bb78f88e42615f7f5804f92fc1bf24eb635f95201b3c9a6c3355bbd69abb4938fe4b248136b36da78d01726da8893c05088baa6a289075d62517e217dfe530dbfe986e72ff6f7edeb3dfcebbe62f7430cd66d0eed691fcc7d91ee3b3ee2f9296ebdaea7bd37efadae770ade35bb90c8f033e5c94e7bbb741f0f4b9cb5b741fdc3f6db5cb4ddd1234c719ea228d2c6949a187187297711551e440f2ca6c2a81ca9541ba9c627f65ac21bcfa25b7b339572d662a2e09ac94794f520aea6be23f9900dd640936f1371fd7429d994cc7dfe84a2c026835654977542457eb17e5d5c433115dbf1c98b7a58a409a2db185177ef917f533dd84841742e8a650c2689024a8e513d033483269d097a345ac1706c8ab622ad865751dd304eb1ba9ad9783326f6cbcbbf2e09fd918a37852a6281280903a093681328d0546ca096001967241e9a86c2fd26ebce1fa9137d15561b08e47e5379a600e30484b086e1193ecace0ea4289439a09ea10383d41218d2885ba89a59281678a55c114d930f2ae891c5ac82f96cd4ab11bddc6f2894a15e022a9f0325b5901c0cefa9aa13dc5c94c33102226e448b02f8374d7f0746322c3e936ed914929db96a8de704b62d9ecad8233c928ae6950298edca54fe35f8dbce1f9ffff17da6113a51a11a3adfc322b3813c3895133a5e46e0a950ad28ed9945bb3259f1f709f54945d707dd5343d96f4fb1ae98d293b43e75d41b462bfd26af2a6eb10e72eb23d27d610e46519a4b027ebf24ad1aa7a4843e8bead6bb1418640fd31b902b6842ea8fcdd330fa69a434dd4e2b01277daaf06995a4287ffd3dda9d0699165e8bbe45c590a39e2977fc7b42692bcc2ce99ca8afa256e70baa88a1b71a26ac7c55db6ddfbf7efd63f83e9bf9b29b17b8c951740cb508b57c83b449acfff2048f632ba2b7cb1cc7524132c86e9a20114b454bd7c990191932ac948eaee87ebb465529aa5d93951228065d29b80b06981b75d71aa10e5591b5847ea1ac55c5b9dabe68144ae43a8a5cb4eca821c25a15505e10bbc1b2511e73a765cc91cf5d7b2d0a173a325f532c8a968a54f72534742d888e726e3225c65e6310b367075ddedcac94df3801ef62b47b6f47e0c79fb38455d06c318a4c46757bab39a0499a622d44e457d8e92614e1db778d6ebfba00ef9366bd584d57d1bb501eb6a42e0197f46e7ca212d732b552dac83aa9465adf737d3325e37e4b46170f533a66cad894ab55d4915a652c730383f0a40b3217929380e31439c71c763235e444ddeccc62568b446ce909138363f78703aa2ab3c3b0e83fae832502322be22513079d106572f7496265921c2d24aad605ccb6dbcbb00af96a053c6fbfccab6e2c258b89a6fb70bbbf2bb6348b16b7a1dea9358747d5486edb665fbe3dcf56a7cb4017b9a8c90b5a661b0909f0ed23310235c663d5a9ad1892a04cfdb92728850e27c65e5844361f65d20c4c256e38af386d2a1ccda7cf45eb05e5ab2e892b7faf38dcfdea0e956ff08b2bf2b078970278f723bd507cd447dffff5325b425c0c12e07b32be6c739a561695d581355f07f91980d0c736044cfd0c6084ebec4028cd881e164bf88065d4e093018353d9297342459c216444d0523c1750ed1fb2164865e485695907146d4d9a1aa51efea4c0f4aaf187d85d2f4da3073175e47856a46ae8cee798b69acf210fdd6c5737d96ef6e3a22704fd623c576d0b38736a53829ca28e90bf54213b3486c545936c18994b2ea93ba8208da652290316d4ee72c61a7abf1d908d929566a2650d9ef904e91533c802b2d75b495a591f1e0295bc3004a9421380d753d418948d4be8d34019097f9182a724b3bb340d6f22b216b12d212c1994ff2263d4ab1677d7a129280fca4903525e773b4fa9890181205d66a44f894210d34ea305f14c11920a457f1243764a5a8f1de37241d664335f079ad0d789db26800c6a966ef8b4cfc6fd2d27faec4d1ae2d1affc154c4256cae179bed16bb2407ce2a88a78f1869940465a8dfb8d81e1a4d2a32af829e047c0ad6980a429ab201cfe4d946f3fc1b9ce8ec8e15638de53ef1fed9d2c5948045adde38acc1d19216622a8ab80b883a604f76dc13e93a0249a6afc212a136631bd8412784f224f75d4229045d4e29df41ef85c241d56986c3c5a0023223eed75bf49a8257d3d0033fb3a8bd9d212ca7879ec9f55ac385783e86ffd1553aeaaca893ccbd106528bc96f2379978d3eead20f54c139e99f58b75c87a837344f375dcd90cb991c128060a2b5b822e7e28e9c589651f1192d939359115121301023d456a852e86587035514e14c253c797205f56582c2ea0372989cd89786d32e5051eba97a1444c936528ea218708c36534d919288dce652a7102f3953d532a6d94b6b45f424b921b5e334db3292437051240fbcd5b54a6b65a58bbde9f2aeff40ee58b747e5074ab7a3627f7f7df9e725cdbec88ca854cb5ad30e28a52901e8133597e5afc75ab2c90a1ae9a93dd857b90d13fe026af753d66ad2418bb48047d6833a42c649c728f4319a90257c1ea015163d924748cd6acde7987f300d8e9684c6ba05bb0e6c2ea464a01269c40a90a957e30825d253412e943411f4e99c4d068d7ac5b302ee3ade6e82db9d9db7a7691e3f214a514139c35e81d855331e3c50e15eb68ca0712f459b98a078d822baa046d3350105b9cb15367f15930818c7338c42518e3de8215b2ef8aa7781fa7401a8dc4695581ea565aaec56ad27c59622d6a84776fa2527871589a23995530e58ebb3a683ab1cf73c3a8503c9fe7c3d8fbedbb9dfda81e7635356ee184e7bb67e08475ef1a69ef61c6d1a6c3c86212dd0cbed9df1830d70a1b2ec2fa863b759f211c37d78975f79b461e550a1ce96216ec22ac32f2bf6ad7c95a7f6f823afca11156e8c5f622bf0834dead28d7227fd9d4dc60d715370a2eb0ed86fff9c93c2fc943395d996dd5b41a4fbd8da690fba954f5714ba4679757728a1ef34b29b90de167aa0590d3dee6130cc0365d1823ed530c35b539c6e0a4f60d5578a7898e0620839fd4cdfe265c34b8466a07214e049907fa91953b3a42a9729e5a7a47ba68816d1554da564601ce50071d000f1468c191b8a28a1e0b83284e24f3950f6b7f79ee5342735e101799ec24aa25e4d3e9c1b9fceada56afb6fcfb574e6033cfef95721046c38c89ceb6512e1a2cb94bc425d147203ab3d7b6a65dd407bacc849f65a493c2a13972aa913b3192c1ed728f90d3888d96f2a55050e40b7d6326895a211ed518bdcfa0c2d2f361805b92a96a729b7815221a43a7145e822f555717200a9743a04dfe943e53920fe9890fc57bac5de34a5312816046a89533853af8d4e1c951a933c14f789c7aee7870284a8adaa48e367f5b03984b7237c12b1f6cc02d0cbc19fe7151144ad3bde1a797f908f01d5a7d47600d400f493929823b501b885f4f5e2d5fd02f4a3532a3d6cfd57852f644a3cbfdafdf6dbf68fe7fdf39c7f0c4091a31f4409dd3b93fbbba33d57c0c497f5b4f7b62206d44340e652740889aa672fff64145e6c42e9cfb3a39f0d4714e7647f6494dfb66195ced70c401cf777b33bf8fac730ce1d600dfb97ec9ca307ed9512df9a08d2f0353b00d2460bdaf1a85fda9ea917c5b88a14b4882eb52242f5ae765618950ed706259c8b494b8a84dd19f0e8754aca5ee767646bb372f57b987d6e2938428e7fc3cf6133e4850809b929483223e79df7c9e1fbcbeb7f5fd6faffcfdebb34378e644bc27f256cd613618877c4328d1b2e98ab32e36a362ca6aaa05b9094262a79bbf5eb3f3bee011024214acaaceeb93df6595552121f60209ee7e1c77d81d968a9f4e03d4abbaab28975f1c4d37e974d8d2a4fb80c2d06455e4abcbe4d6cf41e79500c2b313de5c24501dc0857604fecad0260a98a49873d189ab509c5b6568be596a86fbe8743e81a138e2f723641d17b11c0bb18315a800c8c617e9c1d6a343560e88553f1ad5dc9bc12b31a35dcb0b3936a44d881f369da6d6723fa74d21474ca76d73e8d3f6a28d95e57141c75dc14150602e92ca42a1d15195594f1bc1d1a33b16e0aab2f5685c518aac190493e785e9f91d58208ed597d8638ea432265d5e73424cf3ae4f9fef5e9f165375ca73e838a0b450d57a9cf0586886b32afaf76917dea6de5e88580e0830d2a7de4db7afb8154e7eb834e2a7ee8725705a40b7efa3b7daa7787fd7426287f5399f5669e179520d7c3f2f18fa3137f21932c233957adfb740bdee9a86f77b39e8abf96f5fe5a54bdfdf95b1d092ebd70fbf3b76b8ba39ce8379b7fab1b977beadbfde1e5f9fef71f73a615b720657fad577893fa4cced15fbf888eca2d44acae70000bf55a57fbcaecf6efbfe9c71f0fbf9ff2134ec563eeaddbc635cc283176469fa9794660c2272e9195db6b7759e60d4d0644e858edfdfa7ffed7ff56087b54653b1380d60fe4fc2aa1314a791abe62c33ab01e7b6ab783f2a41bd94b689c7b66d0629a588e5bbd478381c711f20c222c72c0f0f374955c23db20fcce92db06d4c5ee641623f40e41c723ca1c3a34ac6bdc511d3d99e6e3b74fcea2e88d7a0b5078b238c7a24d23e70a85af66a44a7846c9578a51ec9bec71e06d82bb239679814bb3ef5113d5f8d388004d26e563abc868f12250ebda482e18e4b33a509a10f9cdf28f8a7a1b717c5a698b6f45219164ca5d197950409112132a3178bd8ceb91dc15a307a23a9b68937993e3a1f94ded07883b3b3bf2f958f2624407dc76ea6f151bcf0557af0b3f7181fa2b1798ad8b87dd9f77faf9e965f772770e1df0d4cf8975e46bfe345cd229b7222e5bfca716162fa816ffa4bd3b9092abaeed95b4cb15c868b6bdc4454e81c80043732690c410cff6c0eaa538fdcf3f4941263f22fa7d8954e25a32e30a66b9683d58958cf79bacac1b30324e7b3840296f6b9f8fc178ffd6589d410d22857fa98ebecaa4df8d5e15b2f096b7ab7d3fc66bef59964e9e1158d7f1bd7ebfd0f40191f27b949baf5fad335189edf553a313555ea7bf7b74c487fde0f07c7f3a99bec0a2c34d5d60963e5c0840071d6e893f6faa2ae07fbd852f43178330d92d99eeb3310d2aa0b31628578f2894bee9865c15312fcac3dc3a8a1f7f7ffac79c5d1dd5172dcd0ad53bab9183af4e7ef6da76fb0994911191a9e2526eb0bb6613e2319af8217d2d13e266fa466ae838158d5f92baef755a4aa65953c380810b7d31a90c0c69f45a0eadcbbbd47fdc0f2f77330da36482473543575115e63a2acf79178caf61536490c2da9b943640f894f535ffb7ed938931ef4daabed5e780430d9c47622d649f0663712a768e320f36ec9c8970d8631a11f726b99618db46d3c5b2b149fa336d47afea74a02c508c4b77a6c1c9711e4c0178d7236226df5141a8e37a2f37fcfa5021f8e6f6a3b80e605fd1113ec7031e4c9c3643dcc6998298853f3a93d096abb780de8f158f86d970e0796c2b0c181146620dc8cf98b79e614b9b4d2d5f4c4c49feb5dc5351ad1ecddbf691f6a93e997a3579f59f774fa711f5c12af7057a81f154fb913e308c7917a1cf172795be4e81c2d295bf75087cb0af0f1ea285ced8105993124d8750a437aec3461b7be3431c4caea6ec4dd7ca68db2ff2e3681c139f081497d8ec3ef9d98b21864acbf1e56a5c7bf168a2e7f38ee5ba0e557d41f66e6cec28b96b3f9d8bdbc89a551b18c3a5226dd7de84b6faa33625c7d707b9638a4e447002c244965eeb604222671047652614a7c6f1d9de00a0e27977493e811fed89b19235eaf6acb488c25b36c10c8e3b2ce3ae4ebabae2010dad68f1f2d5b162f8ec397e02a404d7ef576006849514026f8fb702f3bd9104b0a43c4e4cc4637bf1d281a1af881fe9c8f7a9f38e9057e4e055dd6d68fc0c50af4e80fad7874e51f1394e9c26b1919ac8a0d05d00391e96156a91ed6c58c7fbe054c2ab201c409b6d8c30eca34cb1ad374ce926262b582c2ec67b445a31b6aa271609c7c6fa1c51b95b6613333363619c9b0a895b5b2c613e2c649719167626b92cff264c909c51a05ae4e4f424db437d7c3c4de1a33808e332434b6599e1453fb0191dd132bc5df2743bf2217ace09c72519c4216c507099d8b68b6d0159b88be8d12eee8ced92fc9be662d7de6c91fe1ae75b7bb637b60c4d1f1e949f484ef871620135852b83ea3a4207d5791986890adb7bf92c5f97e1c5fa88031050596e0a63d0fe519326477a77183ab92a15d77819cc165b30980594de813b0cded56101602af333917dde7ea16c75bb6ee385f607d3812fb8f1a10759f1bc592e978981d292dea08b5b2733a26b57ae4c29c994e88dada771286de68157216ec526205f42e4bab2e33aecf1650387bb6b75ea6e87cdb32b335671ee39f367713fd29f0ed9b218471288d83a1cdd3afe32edd1e39ff2b337498e7def20213a9bc4b8628ed02f75ed71fedab89bea3654b1a1e6407601656e07b0808b27a70f540c199f6bac9cb90d8e4b649295e741740e7f98cfb6354c0f3e4eccccac3268d10adf96900fd2db63676242d836c2453e0dfca173bd09e8ac89303f700d7470d0e37871ac026d3cc928739b5c61fc09ca81deb822331ab7765aa6bead2cefc6eeafedff46d92aab26d708645ed7a4503144a71f765c3c8e43254f5d2d31ebc665884847696c2a24ad961f052253633d8b3bb1f00ec66718b6a34c406015be3d91919065cd061c591e54b1b2c8ad977f630b8815da6b4efd714b2ff1b45c8f18a11e6ffde28d5524c325e31fd9cb12f1ee7230281445bb5682406e0eb48b8206f8518fd2edfb91073992f29c2fa1d0bd6bbb1bda4f6e12d0e672558f5b421d5f032b8eb4d91b97c763c08efbaf9cbd3877e248bbc16dca4bf3da0eea65ead8d1a2e004f2b2ee5340042a8e55b1f1ec21a8d1d02ab1d942dcf17b205ead1fc9f1614a19776d689e735a47937c556e27036b151fdbb2b52128f7bedfb005be94e82e2cd1603a0fbefcc86439f871c07c43cae1ce1763a34c1ab0a690eb36002f90c57c050ecb4f0ec5445923ab86f4d0d0ad869080b8c2c14d523ec964101c9490e5b7896fb72d4130ee66fb371ac2e24b54f17cc577c8267a20a410da73191e3af286208dcef8fe644db23b7a03e38a08d8c206561eba8633605013b453da84766a4da828378f5232004b667e47de162e3012173bf22187d0a4267891c21db541ab78c913f05c2c331c8063b1360904e421ff560c2088ca76605edcf3adaa110344922f001d33b9626e84fa0612118d69d3cc4828b71a1e0cc46598108e6d978bdc2d2da34d99d0123b6d4c8db8a8b14c915dcb35a0f2d006cc0544e9a0215bc3de528c847c1da8744079040a732cba1ac564a86268affc564c82aba3e417b937ec43ae554a38203b2031e2ae96dc8fefdf762f7733d5162cb8ce79c5c7b158fdc3ab6d1e0873a86bc96051b7c6479002a0a80d51f610ff052e783416648269d75892615b24c5bfe869a4b36ef8e3491feeff7cfc4584d2d7ac7cef8e6e9db79ec24deb8412e96d5ea76deafd31f5f678bee73dde3debff7aba7f3c79d718be5534be1173a3a4073fcbc114e539d02a00811e8dd356416c3701925654a7512eaca38e07fc5451c78680316435498604ec35c974292b8f8ab00e8c2126aa6a42c22fe520b399d84c99bbded4b2722635086a4441832a078b46a36d41c99b5ebf161500e0649e087ca881cdb7ca29ccf19665325e391d0eda485f5aedc4c5f21a5c792c15354e45c5ca67b915506e9071438c02b9736d00d143aacac9350cfc7e1d4c6ed785c72c7fef11628535aff8c9d7076e0c9ddb9bec551345413d5c74fc4d6ee980dabc460cd29edb93ebccf2cea543f90bdf2f97f7f8f6f6d4d9c01fee4ea1d3a86adfa4c626d8d261822b21f13107301d26e8d2ba32f47c02333170d9229b534fb5a70ee3c5678c8d7f2f726a7e872f77cf87bb334528db010e54b99165880638134daa2b391b21110398b7f24a4ca75bd5f17bb2805bc2e7644d50543a8726d0534c925910f9e3661dbd0ee0f529a8d3a830ba5a710b1eaf78420e2305bbf663802f819950debe62b99e2c2e59ba3590b5c7cbed740133b330b38270342377a969d192072e666d0a194a72050d098a4fbc2c7099707c663faa5d457e0a8f6a245b9d08710f27dad5b3e0fd77bdfbf6edf9ee3063307026a555240349dbe80ee41a575e47947b7424c571aaf27b0aaafb2cd6a87c1c9be0c5217058e06d3d6de9d21526ca66598eb1b7471d7ad06a80aa54fb5e9bf8fad5a9dadbabfcdf08459a1d19d759c0a3beccce404791df15d76707c1e1f0632687381340b4eaa48ec803c42624d1bf10f1458944b7e35f23f53ca0d233c86aa7fd3a6f43ef8ef1f25bf57e783a9cc2e6d5b89a8cedc49b3da3d8d1c8709884c0762db93d8ebc2badd0f8d4a84472f828e677171006aba3175a8d7570af066b02b0cc21ce6f796c04a28ed13b5986bb33f575ab4d86075bc3a6caaf726cd4b41b4bfdc1e005fde260c3206fc09b64d182b725958962a0bd158f71038a439407d8856f2cc6550fba8e8ff6eee3893c44665b2a26202837d97a24b4ec20e46cb529e066049b93a7f45191ae0d35ef4e7d1b8dcb7890a50d5ea6684f19be9af0a9b0e7378032136885f6159d9bf7f5a95537efebc1ea74956bdcda3717dc7146d0b29835b747f8e597ebe83033b9c29cb27d5ab5b31e7ed90df7fbd3cc2d2a90227af9c882d9b27428f5a6b036a3906877f13de1adebf6da94418edcf9312b96957ed9fd7e1239b551c55efb6ba8dc5296fb9295a4bf96305d80235dd3948875afe5404edbd023829cd609f5ab80fb86dea3e20eafc46de69fb24b059904413ef8fa5054d76b7f442dc88883f6db82bf4e77fcd7dd84bdb55675abc29333f12c4d2ac22f80c303e22fb1ed9cc97183ec6d784f2212453a3729ac2f33bd9f1476df243042c837c0d22a7e6f0a0db11c5a63c746dfa6c6299330d058029b1afaa71116bb91e554b740652b986d72f06256d89d371d8cbdce8e390f54b352f8c5b67fd39556c57472f687a88aec0c1e0c71c464a893d170389dcecb87f35f77ffd4bfeff67f1dbeeff6f3a9eb90edbf164c1dc42c5e198bec70067b18c0df65017902dbe95afaf91a22709dd27e40ba1dac73d762c67a2624da2950c517108175ac95a53ad388a359c8d8b3e4d2326919abc26e40a4f44de9640b96817ac6905f28e5ef3566a55efab649c779632d1a3b58f804ae5e0cc4fee9e1614ebc23b608cacfed35b3fd6186bc9949f51cadece08b8a12ada6221c4e0206bd6c156141f167f69ed9773666f49b4208e7a2063a7d56f70124ec3f2184f069319387a8c23a6f338f3eff796593cbb17b7c797e1a66f430c00dc98a093a00544e956dc0cac5cab357b0f2a016b02a67b0f2495a58f99f87954b73bfdd0d772fb3054f7a14ac6f1dbf9c194220df734ba7d6b59e615da8247175405ce0e35b33747f1654cc670b3f71dd879f5df7e133eb3e61d9370e4ce33fbbeaf3cd457f27eeeb5cd9664193bcadb8d916be0ed4c4ceb201db4fe307bdbaa8e3196b56d5e7b53a02cfd1b5edae59e46e028771f787fdeefbaceae3baa401378aae2f9f14ff46c3fcfaa65cc2426f5fc29d5e1fb28ea61edd97a86233a2bdb1b237bbbd09b2143d1e0a14e02a944fe0296594c4abac3302c8d169d4eb88e1a1934ee6722a3c7d3f8b6158153ead653a2f2608aaf4da9be03791a09fc08aef2fa6e628ff4e2469efc979053f44ca90473bf1cccb7c435d9e29d1c49b4dbdb8d1437f3f87c39e6d3edc2addb455920761c10a5990a2f1086fbd5f70b5adfd1228f68dbdf265f7fbbce6a13badbdf2f9b5b771d289f536bb5fba4584291608ac23f7c923a0ad54f79ee8da5c55e8428bde7253bba667b56ae9a6e7864facef956b88670abd7b8fd9d020ec45f6d871a75ddc88b26d855eb2b0b697aed407698cfe7a7cfaef477dbcebeff7673e9c3f8f0a7488431857815e8d269634e000e131724e643846190240d897872a5eee06affd8cb050bef1f5419b92a9b30e5660e4748096f7d61bdf55c41f234828ac0d26776e6bbb5e9b5acbda3af1b5654642ca6f2c4080842be08ae272640aad632da36c9dd414d67d7100ccb9093667418018545a93a8288d522a05143d7660d022f99537b9825cdec9fee7c4300ccaafb3c965558c77e004a9aa0292e16054ec4d4eccd78484ee134fb16493f3604a085a1ee05ca192022ab620ee973ba8fc73856a04086d76482d6447eb6a0f4171c893763ecbabb3df4c04b33f6a4bb3ac62f08b255080f93c689313f7a0bca6c26c28c838976282f3f8597d3d185f93fcd2feee8dcf71634112d9f9605221f75bf0a8d5641031c56c7c99c5de7df013c56dc7fab6b7deb3ad980ea87291de110735c7d7afd1744843aec54d77676efab0fbfd6e981d291f34e49620be031d5ea49bdc36f4e5e8d6fe68fb7cb47d3886d707ed75dc063118fa2631e87bdb6dabbcebac49ff9c593cac0a25999d25655cb4da94380a9ae8ac5b92d4aec033e9412f8664882aca1f48819d5023dfa06a7095b30aaa7dce38d0e93b38ac602f2807d0451539d0ca886fb3aa7da61d70809f78707de0da0764b0bb04de1d8b16e2436c203f441c6d84dc79bb93cb7b9f02e1d2c5c1943a209cb96f14290ef2f680d61ca6743132bf83581451769222ffa6c2250400411c60ba823d12dc9a13e90e58a6060d82086c684efe4d1f079fb82570bddb4fa2ed8c58a21d9ba22c2c1caaec774407872611cdf29b0635bd6647f5b5c9d2c7f8e97bdd533b3e61db8e782cf5b26619312a13df6a7925d150882a9964af9c1b31ee17595dfff5ed3e9b174f3f66b4574c6ace694948d10f8c75d3f727398ea9f68b85129e9de9e1814fa19ab8cea6fa55a30a4a7244565934a4e70b10ada98d282e982057ac58847b43d16e1bdbb2d2865b3f88da1a67952b28ca1f1ae6c8e5bdf1509d09f071a986f226e5fe74677bb091d05d1c3fb8f1b2b0a27165d53c69143bf92cd6aa8acad4c6905a65491f4e5a068d4e028a3cd4790a613015ba30da10d480e58c1f7057aebe1c273a3e9ef9edd64d5f6fe57bac7b9f3466ff4667c9551b2fdf756799567690410baac03c624dec2dc5d100deb78d1105a765bce85e4421331938c9fc8189826db5da3d8694030a2d9acb8f2f0a22706eeadd8f97a7d904ad66ae48914835101c2be9ab38d7dec4aa9de9ea1707ee633767404e2a98f8a6384513e407c929b4bfc3a6187031fba3f6c6ed4d01352209611a2d4cf5eafc7abf2505770c97ab9e3d9a4ffd77f4c66d3c0b55402e063022e5ee89ab8c417d403f834c900d5149cf58ba21cb142e836c0760e859ea07d0d2c5fddba21820e56904a96cd1261bd0cd6469fe1eea45ce9139474f33e3ed0b56af09218057c07e439f0e409a483b1bd888fa479e248aa0b85abae68d19f3fb6e189e660e6d6022da35892d28d126d3d58d7526885f14f644812714ab8a57298b268cfb266eb36315ac356120318849a89f044d6c46963a93c8ec03db4e8c9c445d208530286e3a2057eaca5af8f400da59e3c03446da26df1cba86c5c0425ccbd6ba4a32bfa0e013e57964e6176fd9a31cc904319b0b585a20da2206c107455bb07301354c1227b96694f6a69597bb4aa6260526f32886d2bbb7eb70becb8b40c25868677e801d6bff13a3f3d63ee7dedce716ee7798dabec782f5ac2e2a519356ee2766ecfefe79eefe054af742d6057c4b89654f1958451018372a5bb08882fe1b09f4b3e193cf290a2f91b62bb32edd36ce635235237cf005fe0fbda0b63f14d5ad1209679281da4ea20621fc3b9fd0b02ccd22a1b25f05931b70cb27e514428ad7b6847cd2009e09befd8c26798b1601d7d2f915bf8dd97db4a030a91729fa4388295a6bac932bba64f2f8695c14f5cd20a7e6379d0f8942cf28e94fd2febb0c463d50c17b1294cb1d491b2c4809d10ef11928f7dbd1c1aaba3548665e091827ebc0553591ccfbc6488f51e2302c9c9df824069843c99a3728b5499bdaa8afd8982a3d90c4d68a23bb0de9020af095688bfc52c4a317d3dbe4716f4d088f83573683ae609c0f40c86acbc7b7074db1221f220104bc2663f3aaca8a712614392020b150947507d0ab81f49a624d7964de6d0a7696ccacd4594431319a8236dc98cc5691efa0a95d628534f26fd98322425d2ab02d4101d956daa1039bb3d83d61df89f4cfae7df8641965852f796fa4ac1a052e1bdd346e66954c5468076457832ac87ec5c6448651b220854001a483499f264661ce5c0c08833acb135761b058538565c0215d711c1246840d90e138f0bb617835bfeb6a179a13347eccd89c3114763aad60f5742307ee47de8e38a1fc7887fe9088ca8fd31f76d79bcfad2ff8da763b000968bbddd6b6f964ef7c2d9f14cfe93ef7fe85a17cfaf15dfffecfd3707e6e7454fc1c3da5fb1c3da54c2f690fa737c8eb6f5e3f8bdff8b9c9f8a9f747aae3fddb86a7bfbf7bde3deffb7f9e294b40f0792b46cac7fc8cb72cc2dad8dd0bb629c449a12c825324a0eaf283dff0ae2703c309bb72694a09fc0e441fd7f2452b3f99a68ea6a91bd7d83417dfb9fadfe069b45ecd9aea31e0806423d1dc6600da62329f77514db7f1ff5e33ae27e470ff78b79ba783dff637e41656751ad4c2412d2a1daedffbd109300ba4bc6da18b3de6c4faf14965440fc54ab5dd61f9dd1f8a5bac2c73a772848aa315ceea265ae71cfebafbef8bc3f153bba995a1f8e4eef8b9e3c5a9ee13a76952f5b34a6e9f3cec3eb79b7eb23dd7e3f3f4fc72f74def871f87975994fbd367dea7f6f44ff6b9759fbc7cf9e420fdb4cadd70f7c7cb62854e6a959f51fe1ecb15c66a85b15861ac5568d5379ae537ba15f8588b5a1a08804d153eba55f8e860f2ff5f47f34e1dcd70ffc7dd61773c25aeaa091d08b27348ab626a42f0a45a554ca87174bdf6da848a00564da8d396f305c588310cda647af25906390624590a34e75c2c0ab511720ee5c00294101daa63a5abe0f9155e423ca91c5e1f9cf141fad203375bb2971757ed9a15a5e8a8db93ebc92f50830ebca66e97f745e3ea032f2a57d843c52078695530554e43e4b5595e1c2a0bfd717fd32bafad7f026e746aa4ff1211da8867010ee925dc231b81e6a0117287531f8555369d772a980e1cbd5da447b7670f2b6901037fa18bf2b5af5ff1ed006fc50dc25bd194bad406d7d4be03be9c5d2def6757e0dbd1d35fbca9555663ad63dd41ebc70082110cb37ca96ebdf0a1da8eb4a37b8f4beaa0f85723ad399b837ff62fbfff187e3fcdc1ce2a1be694740bb88a2b25930313038d5a52fbdb40a26560cfa930cb696b5791eafa9e72251052ebbc0a06ec344c9c18a4d4691d0415597a0aa674f0c64713420f6d89134399ad70d6c38a8a2fc85f5aaf1292fcbc3cb4141114ea4c86280c50d767bdf63889ca075cc19afa065031e9748b2d0cf4c2cb081b984aaf0fde940842ee0d8adb40034c059c961f46c8ce2744b75108431d9619f125a3ddc6058453f9a631a94d342ac49e9abebd27ed7bca7ad4546bbfe092b23043d2aec57deaa4314d4c2b680d64f179939d6e827eb04f2daac76c2b0e9e586b4060c3673b2855e15d78ffc0ab11d6dbc4b0c14d49691e9498b1116c0e083118824a48c649e3c5c5945f656d5274c64ed43860c9f9d45db9b7ef4a46a14b26551e1e9d1ba64ea5a651d3f968e98812a9de179a88df8cca54b582161714c3df785f830690db8e6a8121ee41ec524dcae3b7ce32701fe9d01d9255ded4298d3676e7d97c3fbcccd98c6fb2f0becf476cbb5f92b6edf47ba8af7fe9e7cfbb45ef9f861f0f8f93659ad4ad9aa585aaf01324bc47e9c7556dfa7fcec7abbe2e733c2bd88abff4fdffe33f7f3133beddbdecee8733f1eff41e3ff53b30ca5fa3a796f199dfc4db3a8ed7175a403a7e4d2afed2ddbcb70e6f7e7cd6d94ffbddbcf04051bdf94b32b5283c8c0437d62cb058cf6839973e257be9128decac9dc6caa712524969a414ccca8a65bbb56f8b601e179b291f53b537b7c4e95f1f345276d130fba34da3a81673b168530fda542f674b2da67e89a6b359f19176a2b860454e444362106a44e2d3284b446c097f2e7c18020d5e1ad84531b292a9f89e033e15d882bd353513c60e170a065c3b6ab4896874659be54be5631ebfeeaebe504f1ffc74b4fd6c96fc35e7314d32aa6e4b396b473d2edb91d7a6a8eeb7c0a7e0e4c56d5e5b5327b65a53a9a05393a9c7642a15048885160b13c8293baffae6311ef98bbc060de971264a47b74c77956595d12ce6fe2a5eaa19aa7b351f9c32a528f468dee6b312f0e1e94f7d3f07fb97b78884bdbe493abbc9284eb93debc507da240301bccf42ab07b00f2c95efbc3e045dd6d768f1f9b670b4eef63baeea3316b8ebcfbb6d8694cb232bc46dcd8695098d72b389b25c51e75f37e36c05173120d38786c33a8ec7355df2c5781038cee2d6bf6940dea8a73a75dfc3eef1c76e98d57d816401157720a5b7f42872a6d474c92beb0079f090390ec67ae8908b336693fce58df8c63e41492a916ede74e250109d61fdba6b6716b87980b00249ad749485a4133d0469bfa3f073540164139d78efb84ccc645f23b520689b120d643c194ca3180df8b352730bdc50717c2636ec26302e94d8475b730ff4977513cd1629f3f161722b5566eda92a4b263b3e1946e2cb891e8ecc5223b5299fa4be1a2a82d3583985d85e853c34ee11329d1085b5a3c26c7397207dcc200b8357f8e1129d42eb5e651538f169a9ee59bc060f14987464e3f35bec87e49772d0b28e88d15913d2b19a985f1fb23615b1ee4ac10168d7eaa8e4d3de04b76fb92b10a014787341216a948eb633f67a920dadb6edee9bfeb67bd99d5c92d27b93d3e0f4edb223f13e64b70d74c4880f80967ca2309e0b2b2bdd99a134e420e81890aa01601f5bbf8394800b90c8b504ce8640da7c47bab4c094dceb57ab429f3fd632c4a81720c3a1c88c2ac91453d306e570e23fbd3e5453a34e26f84127c837912c666c45821a933c388ab386fcfa10c83615f2c67a712fcb42e10ef09e85ae744928f3a809898b387879c67292c15d0e61232fbc3e58af63af310a10dfb85d10341fd8efb3ad238a9160f3a0314cfeb2acac023e133791f55c58e431199b170ab7b025e360f690d54cb2319be2878002bbddc5a52d579cbc0a252b48b343a173a92a4c264993b0f44d152f35bdeae25fbf4665bd0949367677d4c5a4c1998a2855da8f3b4c98769e6331e9f5216a673c785deda41cb2491076f4db604a3a8cf21488da6c6c8781940f6790c2980a4af98a1874dacf4afb9baa36e9dcd81eafdcb19858cf4742ef9fefe6a6b46c95c51d133832dfbff43619e7f68da76044f0246a01b82618884a99c0f7e42aaf1fe367ee7b002d9d350e7c0562150647e5043b2a27d42213bee1c8905ca8836c3e329a6ef37f75c6c8c1b407ff39789a1cf6ff422e7d8fc850f614a274a684d7078d651d3e339158e479ad6a352b5a0bfd2ddfa25f32970ee764fb1f147c9229f5b07bfeeb94e2282624d5ada2096409ac91255cf82d9268aa469669e2bd10f7c4cf43943d1ae410f8cd7626e5154d795cc35ad0abf02bc0a2b19b0b85caf4e25fb367543c6bee3fee1fee5fef4e0c9eb58a9754dfe0ad98aae6594279abcf3eabd817ec261938240bb27053cdb9b8f4f59d503bd53cbc11b30a853a273a265463ab1b36a1187bf2b07ddb876d5325b1f58bb28a0f77dfee4f67b5ec5308bbdfe880d909383b2171c2d82501b70fd49a1db5ed1665435022ecb5554e7b1db457f1a8736fdd319fddc2e38f93b5117e3500fa9e4ad87bf1cb77c22e1f8d5fca5d5d7077d9300e4fbf50b27b306fabb29c4727808b585e354d3d0885ac2333cd58feffa6b4102b9d8f7a4143d3ebdbadb97d23af0f55955fb9d78bee7cfa7e9253af536ae8973ab39379ff7ff1f34dafc8bfad3f84ede2b8cc34c2ade44d26a5c32dcff2eef9cfbbcb007b1c59503ea084245ebc3f5a13e5bc83b81824ae413363521c4c4a26a5ebd3ee43defd824aa437c50d9a576d050411e2c5b1eaf69d5b04176aef3e26b27492882a9488e2c9f876640700131b55b718e84503c12595d21e8d13df02b54524ea91164a9fc55ebbbf454d2c534d2c534d6c89d3e9c36a62415ae571d662fb738d76122dd463f3375872b65c075e1782dab7c2429c7dc3fde35f8713ade2b5d6e169199dae7b11b3fffc6766dc431ffd4c223de922aecf9210eb92c0893cef2a2a7f0c7f27a26f1d4988fc36a5d3b6a002b1cb1f42f2cd4a081f745097428f8793c0a33f17783c4ce290769ebe7fb87f3cb3f310b33275794799f86d46636f8b5cffdf66eb5967c2204bca9fd8bfae62a2da76724abd6be84d4c78e526eb132b3aecf686dae7912267289871536774d7c6ddfde38fc34c8630afaf45b37f4200f5e1e9f7fbe14e7fef9f1eef66e465dda27eef5587970f2cf4af45d95bf9bc65862faffd3a6e7d9f8ef5bab5c7fb6f27a9291bb1f0af2da00da2734b7ae01fa2715ce06cac26d81bfc2d976f8fb736bd797125b068be7cc9a6f8a8f83866804a54161539565cb40e130abb83813a4a1057d8cab90596f36092630c2d62bf163719110059517e87cb655346d77afa7b6f7939c7f841c4dbb53933cd9f9e67644fc9747e0e7d5223f4a901a15e19d478ef4de5fdf7cc5bf0e3f165374bbc2465fdda0f49d71ec75b6f07af321808a3f6260edacaafbde679ada57fe4dc2a037777b0b1ca3ef82a2e6850888759e7545a7743d4a937f5fcfb8f8bb46b1f538bac5b30c0a1e2f053dc3ff8828f489bbf7dc0b776403a779bd763437edae2f81889e47b72fdd20c55d7f9e869a3b14197fc4449d9a5ee1d715b03cec777b524df1ea3d1f871d5f86deda7b67c3eb5f34916d3f9ccfaf1e7a17f7a996d08dd874ce305aa9725f168020d8d9de48b6a538919958e21238438a1e3d1e3ad466da23505bc432d779af01e04f05b5c32f1a76d7fcb3c2a207549559bc26c83674735fad316cf64035c535a660d61424bba48f567e4ac63659521472121d4999ac80d281a2aef564cece48e1ac23f4da1190960883e8b45d69058b64551f14da55d24f122484d205fcee0fbaa1a97c08b44c50c043e61c343632335689c6ffd4d27048ad6484cfb5996a9dd1abba7ab241c0100dab75f92856a1193448c533adca449d49701e93cb24cd12464cc5c32ce221f9ed1511e1d9a21fb685b9923e2bc945d319da3a0333f0456cb0e629fd63479bf48a5ec936076174cb0d2ee0c802202bd16c596325732a25a9c2b720a7160eb54270b759c45e6ff871fc3cbbd3edc0d77fb9799dde14d2d8ba6470fdef76b4ff0fa8c85e9b02095fe994be8b4a8e57fbcf274ae0ca0e5cb5915d7e0a94f477fd60987fbb9267f07d9a45112d163f7e9c2d6746e10c35446cfad809c7532671a6a3e287fac067875b0d964ae1059bd7c1c19624dd55eb943132df6f24f6c7bafdd16990759eae9184df8952bddf2f41e5b0d90be7fb97b3841b596f6ba9ff2291fa2b257c6de5944fd6a03bd6525bf8122fb40db1667415d70506f59f00b91d585a91574584a13dc484bdc8c41055d17031a3f371e1d58906ff829b7c812df9948736cb88dcaf74bd8b94fa4536ea77216768ef340ac3751a5b33c48a79dbcd3f56254ce5e69d507fdf5b3f27eed2feef3e9f7ff9aed91455dc8afbc2d0913df9684e9c785fa86264c3d69c244fa63890ddd3226105af54fd4ed067eab20b601b590ca476de2baaeb201fb2efe4583620e157ecb405947a004636f221be281849787b2aa50202aa6498740cda89b7e9683fc3c492c25557469f702d345e38812fb4b7e2f68ac37e1a25bbfdf3d1f9e661164089a838f8462c9d1d30da7503453a1f50da3a71a1ed459be2f337d1bc2a2d143e1cdae9ed4cec8c3906860929e2e791a3d8490f88ab334d3e80962cfe266c59248056aa798f6a4a667452ce434724b1ac30089a4c50052bdf155b49bc47b096271326690d819296892586f62f424d6f8885522562142ad2654b4a24453c120039c809b636b5ca2b9c3c7da6c1d371a3d398c464f1db99b40b152c17ad57930f8416727990c93a740dabe9a681212b28dd30dd0a0f0a6c1c38f4456f802c743e328d1d0a11a1b58938209802865546410e28529219de51837b30c5259535b6037a3cc8d4488f8d9cb5c3ac05a1de975a0a9cbea112087e87c785ebe467198e1c6ff6a5af85752d2976be4f9eeb07fbe3fa336ae40838825303831b39d29798f1e7418734f9015bd2fdae7be098ecb7b52af1b68cec1d009159f4ade78e8bc079439822aa6ec4c28f21d27b643f1a136009d2513e504cab3e20d1207611ec23c3531cb12b032397280d8a56aebc4329aeddb2080bd52d61f381f35bd166bbf0430f18cfcaed104675c58a18eae2b2a50e1d1c3015e9b64572ca4827a254a4bd2b19a0275665936d26493ac89b13765dfccf344ae3ef911d336995ad7def8c19bec5560b3b355de0450e03983e54c46b140f75f968e6fc2f12ef5a4a783aa2d6fd58107c587c112a334ca3fb53a7927de8017a3d224677cecad097ea4a8aae40fa390bca36b52b9f3005f1207380172f8a164cf1615d7d6d4ba75a673bd833c7062056457b8e47d913922fe356ac712eb761ac0902ac5b283f259cad6331685da2b7e3e21f5f27f77a930eb283b3bf091dc6f021ed3d6194ac277ee4c2a325d2cb097bb7fbce8df9ffe7152d74a60941bb739f98ff1918b270fdc56e4316e736f4d9c95deb5e77fab261795702427c6b45b901440a168e2ff805e7cd04e2d999b6bbf0db781c10bf4eff6dabebffaf26bf6eef998dc3ffed76e165e442134b4a0add5c134a2ce95b5ac902c55d98e5ca34abc3794a3926e32123ca482bc3f9842992abcd120b485b6cadb63229014f2a57212988e5f685266b9646c850bb119959d2c63d4a9d6a003a5bf283f2aef07072834e574321de2efe47b2c4c59454de01324517fcbc6661866a03b3a583957734b0dc5df8a7c08a69d3cce3beae9e5fe8ffbfd4e4e86c35c0ced82a3619dcef9115f1fd242710fc4901c193cb2d7a0630d06accf205eedc2a4892e9bd02517eba9b0044b2e10b78b12bd2f016cb9e1c4992b36cd98393a251c0e4b48985959c13b67e5bc379a54eab74ff58a37be566dbd49290f62e47913c8e83dd77583cd5ceb6ed42815571ce0e14e9942d2b5188b2919bbbb0d03e92ae533d7d7b232b2b684ed15aa67498a6f41336f9ec29956d738926a1a49753e920dc798f47c2ca72b9dbe9a4379c2603b63774876e081d91167020a449df7100884ec90742016529d83b06c8bbaaa99ea9c662d318f4aac38c4f32764bfd8c1e261b8328575612c5443e2c0a9804d5c2f7e510bf3c2d6f1260fa0224054ebbc31b055e733e8c7c3ef805bcf2b40814196cddda52d28e221ab1d60ad5887d3d945803c2dd97e1b99612864586b8735dd8704dbc19de49113c1e9e9686a2f86f836bf3e686aa58058adf04b32bf0491d29dedc0aede7e8cd16f07e0fade9035d993754f7a205a42532bbac557bc962cdd1f623203f58e337816288d4d782fa8115b783a350b8dbe0b4a8ecbc968937ec88ef6a527b575e2cbb4ecf13e4cb49c89adef8ab4d5b305b18047af005be71c6c0d4ffaef5011ccb576648466a93668147b0be306a260813485a49f4d2c3d700ca3cae120b61d7d3ecba3d76546c9298cdd55629b3d353a3dad485c2e88616c1d58ee0a48100bec1fc8b83b5c0e085a5f0f509d46c944a064a1cb93f1e6702a58ce1cef0cec731acf0e5d1922e3ffb49b1dc3ec9124879982d7117f1438668dff0ef707873404704f079425943e1eb55dd38eec68d049478fb3d353e19ac9119770755fa0408e72915a7bbd14bfbd3cdbaff466e631a3701682fadb2e77b662ef9eeff7a7821c873a7b932c95cf1bb9a8c7720c4c8db40901143b27da6c3d66aec77c14e3822bd23a2efe305ffc8d2511695a93eceb4300b5b6f1b62ddac0455bb068831b509613c440b498c42c14a2cb610f5caf85ebb5eeb98f50a75c6685b48aeb35c2518bf4eca1abce9446e0ca9395d6e0e818d7969691b5597732cb141ec6e49df87cfbc63f1fa9ba07166a94b9f8f9822d6dc192e214a99ac27655323c3a860cca1891a88da0136b15e55058b26ebe62a93b1f59d893e9b2b62c548814336095902d58b1de61c506c78412176c1c45754f0b3662c186263f2006bb3404a54ab53dcf551c50da24eb3a82f31e47a02c5b4f617b193be70019b31c748fe8a0b439714d635f4bec62cbd59c300364e1caeeceb381e4ba459c8171e13ace0feca7beb15f0712c761ed1a1bd7e9b47cb9457b528b3687ddc696ae45962e84d787428b12a3ea9990c3d7678d30498a47f24a782efe842c614ef0fd51bc50719024dfe833c814da740a64a06d65bdad274d7a04166acffd1ddca311af6532e14cd12e9e8f9a5de9470ed45430556bc2a95838b73df6f9ec480ac1db483c09b229fe7412144c58d81e5d907985ccaa4c2c3c7a262d6361ffd546404cb78b4c4aa783204f794d3908e8df237ae2297a81e8974c768f7529b345461db41e083530638a938f85773cf01d03963ea2372c2b213c27706464d1b22acdb39d5196c111e47ab8a8652e06079a9309d73959003239c1c60bfb42aee8bc6cea01b188c21d062b8f65551cee0c030020a7035770d2a85b4e00ab50e862e441711c612ef956d5d8a235364336561a27367eceed28c2d0200c922c462ba203bcf45570f2be18b07f785078d41690a88ce150f53372eb4886238d159565530b999b35cf3a4a42646e842e231a0b822d04b422e35ed561f2ca5a9b1d1a4f7ffc71bfbf9299fd3958ac3fead08763b83eb816b465bf462abfe4de1f3d91edc4ecfad787a822c414a757f2f84a8050da4c6338f4da4176d19fdfd470ff3893c4ee56603367c81ebf94037e3905ede50fcd5f34fe7bfd9a940d83d5711d86a4b3b62af67ed0499df5dffda0ffb8bf1bbecda153a1d7b221a3f622e84c9165d4bb930d0a354b7becc720f091d142ba4136e0c22475e00a418a9ef169942f95ac836924cb1985443a9884a86de26f23103415f9cbd279f670292ce2d30eab448e619283bb0d191fbb7c349dfd827afe3261f3ebc5282b63114ac449cbc2257e70683a291bd45bd9b0100e994768fccd4816c89a8b2976235bbdca068ad5e0522d03280a64ef7ffd9a10d6089bda4a851046b7612dcfcf47e97104939f15a3c896d2eb6bd4e2d2dc5eb0c5162a127442ece8df50fc30bbb91f2f17ee7db70facb22a6a9ae59d82ac9197632c9ba021f19fb12bf06043a490210d9a63e02d801968953cf29ab33572cb53f6c6a3feba42d43d29eebdcd068a0a272232210e9b69712ab06d4147682a69d0a43b94b2e23f94e6e2e9247b7700bdd13a7e8eb5e6a6e6b8c9e14b96359a5b648b1c6baf0ff6238aeddf777fdee90be59da84c5daad859a05d59ac5bba665e79d0905977479dfa70a4beb6342df5f908fab74c58873ddf11bfef1eef067d78d9bd9c10bb1d14bc6501bcca1f69fe4799ff61bbf1affff3bffeb76a7b1cee2acdc4ce5bacf39407963b9a277b990b3fe57781c3756bd730b50f4975ebbaf57d3c03d8b2e59762e87fd3d757e8994f839a30a88e689badeffdb152d0bc6b63df04cdd755fe8ee3c7ea36cfff08f8637e07dfef9ef7c3fdf759a555827e9dfd1264ff0ad443c1848329c5e27b1b115b15eb4ad6062c04ef363237ab49c8807a78523c5578bc38e3ca0e25b19e84263cf39c9707b747c895f2af5ca0f8f89065ad65e3a1a107f703c9c65a20e9673204a281de4df267a4fe579755321d04cb03ce03170003b3a61ee417179197b2033611bc956f8b085be065060662fb3f516fc90dd2188aacede13664f0e08de9276e5139b67f5eb31c164d4d9b6a1c0f584bbbdd05050a06d00d04f831848d85d98367f62b9824df4d8e7d7f7e67c8a49482a702bd02f9b3b338fde4fdf249ff25504b38d853fd6f34d1b23e01ae09eabd352c776fcea7caf3eecfe7ddf77e06abb7ebb4f2a628abc03faa9c8a076b0a09f49a0ae01c6ad154d07b77b922e62fdabd898b388cb3c6bcf4674ce65dafad5f71906085632ac5df50008d08bd5fe7a35f7b1357a88a460909aaaf5536f1373c075620626cd7f12c0bd09200b864800d11a5e3948d7d9c262e72058dd83c1ee68903949f54e26597dffe9b38301ef05d1355e266f3f69b2361a2bcf58b7ed187bbddf3be3f33fa4c728306ebdfb69a0c814d7aec09ce94584ee5e88ccb830667c41682af740d11d672883a00f1998ec9d43c5eee0ad337b395b6d6f8327826514bdd13b41018d24970df6ade60cd34fb2ed424ff464c7754dd8af49962d5d1bf6be793f84ef061a209c02d0c51f92395094986d2c280d174e540d3d5375829dede166c89c81ccbf48de3c749a152f071a8725d260b8f5a7cb43d80384d0fa74024443a3181aaf9eddae4a582e2d78774336bb85c5c95b1c7c896d4e85388ed26b01bace5180070c884a337be0e56d92d12a48c0a377f51ba25381ca8b72ce3e55678c3ecde1ede6b06f6355a934171b0025b716759700ab28ca8badf229f04fb8d827c58c52b756f0a755213c29d8a81fb3c8837890cc6be39d3c121b5b05ca8382b0630200a0eaf5f91985b6513b3a27e7590e51690d58b5941f2596ed12b87bf51fe8043cf33a1a7cad942fb71b83b8132fd120cf7aa48e62a41765d6c03536389e6f6e7ae366bf0ddd3f79999e2c5fcb5608a6e70a7c06440037be7d4e037897901596bb478dd490f3356be39f187b38c21219d32627998b8c2234983bc9d5bf4859830cf586847fc39d1130cb9b4786240aa0069dc2ecef39b8d7c88e11be781658f194dab69a4b0a0ec414b7224c2fa1ba21f379a1b9f2c601a6c4bc39a63bf0d3324db088a27ded811ad1e0853975d12c02dd5c4a3104a0d01212864245236d9402932c3a1461e02941d9e8f4066d5c68de4fdd1744d893321786291490360cb91b829b46448d0bc1683d68c53a1590ece7b346c9b3f7196f08e27012bf94cf008dc6540bfec1198979123aa9a58e534b250cec06af4ce1459de89ba6515a749a6ec5afbd9cb2ef0fad06082beece516212821f737fd5c9b2e1dda041c0160806d53dbc3533aac22359c35f102d09f427a096513985591d389584484392d83abb9d106d50cea6decf487916b7814d2ddb7420fc779ec52937aaa8d2486b90dcaaf31cadaa5d364f5b5cda8166cb08c8ce379220f19691af19169c41d36d861431d1274c87385131e4020c01d220c014406716dc8926993802d278d560926ed91d42c401a5a35210d4f5461f81613f0500cdc7e641891873ea20096c79f5c15b33261be7ad72602930574c91dd287cc9f1418fd32b34f8046245fe7d32e4c3fe4382d9a5043b10d5a0cea686cd94f42b363e1044e3385a8696c842cc01cc29d072870bedb3defef1e5f767fcef6e884fd712e36b3be528d003c788635e8ed0518e1f52ba0cba7380af3b0340a2ccbdf47c09006f2a8a19098427365b2210028f2aa002ef4c9561ca1b432bf95d707840fafbee3f0a926bea2aa64b1f4abc8b21b34c8676a3b3628976b03b9b98389cb81a2924d1c5061890f8eb9dd9626c19a77e7637798977b8a432adf0189814478b1636235471d64cd39c09603f9ae6c53a08d3cb42cc3fcad4203fb426ce907cf6cc588c7cd137d7799a1911b9a2672adc749bf2d123a40a6bc08081eb284b91079c93c5440f25c3aafd1a1f22862c8bea0040b55db58367273113924200fbf789300674c79f2d73af9eeec56d5807e5f15445a3bab4a235dcf758cb0ba480f1dd9434bf2292c22ecaa90e22de924805a398ad861ac033e1c0e073652d98be37172a8b145456c07112786ec0d05990b679cecefd0539589969d98c7d22901875ec598471e92e7f0633f8c64e42e83d39c95569687044c700e210d10ee815d4496953072b0ef83d54276a228563aae815902ad0fc460db4eaba801d97ee96d0431606b137c9451cd38cda188e7d5dfd15496adef9b81903410a7e23e03f0dbc59dc935c8bf319f8b6d1410d5c8b41d6b1d335e701e8b137c5a988df09e025354884db2df1d2fc302a848cbc4359e793babe78b05714940f3345902ab987201244a63f12f1a625b65a11dbf0159371007ca718613c93147876c289e69efe2e110d8aac85659da491826f1fcdc2a12301fe401aea76c5ad574459ec452822346a81f5c389a50b0d980b4976d0eae6420004321d88af1cda6c655010d3fed10547a5bf8d456d9b437a041669ed8831d12f7cf5cbda74955c624fa3c46fffdfe4eeffbddf39c8d152308d966b0f867b903fe92485bef4d9127ad579944ca99a4c39df81ef2c5c9caf356a775decae5c6106651ddb1f465df21ac3d4ffbcc5b34c39807cb991bb95cc1f71b11ca36316d80bc962d6ae54c91ef9e34e23b99f12a9908096ba8f206a0935590d3551ef4f4021ef6308fa347ed480107a3cc733720802f07c91e1ad951565b17889c960e8e9bd6ccb37b389eaa78834c9a6c3ab7a18acfa7eb89511a220f7b4d00162a516497c5d90014194968ae594c8e286316bf0f0f7bac4928337b52945a766ab08df4d6dab5bd9943bacac96cafc839508eb64c80e24980120f279a1275a2296974d39fe388b8e8f6f3a8b55b64705f6230bbbaad85d23d30a85fe764dfbfd6424d1c6ad25530aeae90e957748dbc9c5f014efacf16f6d746053375abf2ebfc8ba5feac4706dcae62cea2c05efd3cbb50dd3b4af7cb59ee828a3a6ef32f1023908469bd44b6ff01468f5b4586df87dd3f67a5c9652221adf494640b2f6e689e964eba7901ee8ba9a9ce18eaa35a487a5e063f14130853cd05d882693e38d5ae4d008dcb84a2260013d88ab3665ff0c454b0f5bccda2739b48265cd1ecccc0fdf526e5cebc514fc33fff7c7ad47fdc0f2f77738d44e46f01fe0cc44d2631ba36950c9f3eec27f7d733f622dbe6a5b2ff99c466abc1282cecda38538aac36bbc2f114e46496231d3c23413e1748a322a71885a44c4094115c49d91d83895041c3feabc4e8c70b1782910a18567c10617ee8d7f4f82c6a6be4b8e405f1e34a1239379401edb38d0daaeec74afc37089ae4950c092096e6659e09d92abbf6268ffaa5bed53635333dbb6d465c15082ca0a00b10c9d94d08ed66deb0c87180efeb28ef94119a01ef4001bacd0562df60b7267113fce059a24ec5ec7613b4013bdf00370c0b6518ed724eb97a2697f5fde9bf675ca6ea033c43337589743161c16869bc3b624289916d2af33bd24ca0b3614421ddc62d49c583e606a5a3a64080d8fc6260764939c0bab7e2b2ad208be52167a41202160071cc4da5acf2216bfea13300f259cce024d695ad3ae864fcd9127ebefb76bf7fb93fdee9dde36ef8e7e1fe302b4a49629a379228b15a9ba7e02a4d6096515431c7ba0cf4ba1cca0474a646ac0d7b50bc99b02aa620dc0012b94e658ccf5e1b3a5db21882f403227ce954f3ea1a90df33826819040540ac346608676c5e89e7c90a39154c0954c2f728892be266e6d4b8d2dd4a4ce58c2472e68814e35ba18435b1b0b2c612de933c182c80ebccd2d5a0922fb93961151e5f0340f8b48305ee4ebc478edab19dec5ead3a0dfebe82532937116a83ab65aa49a44abdc22e8ca2858c13fae9b756ef0b5c2560cd95a26696e85fc47ae094b34ad5b5542a7251be659e2d9c931c019aa899aa229aba1ef076c1d90196f1445699d042bfa5313dd3b5890e390bb916e602c2958e41b7e1c4179da03eb62756d235ac6405261efc27032baae185c3d9afd3cba65a4e1884634924d27e90aa441c6e593f20a53fab9876dc96c876a65d73ef1cb192965747f7587481f438c8a88db57b00101de3b1c82a5731f5a5af23cb7ee21ed92d4b8c345a41b5f7a04783770c8ce43868a6d410f0b0745fb97f13e0598ac96120e8d9824bcbb50ca2f45c9df4a0932c362befb40d648af80378b89ac7583465f311222a83652da32d8d1cd222e61002cb529b226aa294be03de14606184b21986a979d000a0591aff0d3be93d65a4333a669c319ee069d7c832510913816a378492271ea9405c22c0249e42da5663610d33789b09e06fab88f51601fe998fb01963fb728489aa165fb5e3c08b6f1fa71fadc020a009261682b42dffc1f726f217494a64abfd54a2ee1b40b4d1c0cb0d8ca51aeddbb8478c3162fe869253149be6028a34d3d523e7be0fb4e8588f00de5284e3bbc605042ca00c63f24323604f2df216f66c870f2d3a3706e970221b4f061586cb06d6a2c40db68fbcd70d3e4aa87cd27c17f667995d16314259d7e2f20f232cbcc3b7ed644da316b1151c237551306e03f2e034d9bde5f44a9856750c0fd54c76025312b732d70cf4647c421e61005e84d385b0ef0cc7dd948a22fbaea916b61fe34fd21f94d4b65204c11a8218e58cb0e31c898618fb1aad3b02d5380f701a708ad94c21023c5aee839db412bb8a2de3f492d954ebe927ba89fc0a35b4a5269d28a72341edb29dcce2bd0336889cf6862a1dc5b7289a1bc36991211ca46740548432cf94071465446e397b9370aec2d6c3a3c9542cd4c6d2b65317bc8e4b35f6b6a318ad98bf9671324fbc7c82f9db2398d0e0030187148abf09fd46a4d2b70271e48b219d28db57ce2de6611d61fd28d727deddb684166246d1b8d883c56227475f9a8ae81256fb46a681188250e6801c0620f0d6b3c4289123568cbd753408b1c2b80c2d664d2a00e6a44612b286818c7e40b99237a16c64936f35f19d3f7a13328be9b1854456b5c5d46b7c856f41f0d44a485a4dbd894852011c2e4f60d38ca9f7384f5a713ae827140cd200747c82f4d4c8605c77ded81a141f5bf9a0182ece441833c56a0acd0319de48173d539025c8bc6ede7a6737593c926c18f1eb405fd12135650784ffc4a5b0cc0bc4f4fa35a2aa7e5646dfa8336432a3909e49e256bec518e9814ba164dd9e5925420f50670c54132a72d6ced47a84667ebd9893778f2fbbb33919955d5f457c4e56f74da6f4eb54bf37b16ebc9ce1e1d381b14d86ecc73b926fe0e37f9bacf3465c61633bd80a6ebdc0af771349fda09daa6bbff5bdedce78edbf3fdf3fce79ce20737a89fa5f8a61f4e508448a5a92b5b9f2747a3ba25197e8a3d25c41606226f380f8dbde1d4163a4d23a1eb55ffb6b7add05b2b3201f3e83be3e3ffdd7dd7e867b0dea2afab0107038dadebaad8724f112f2a45f1215f08bb288c74b0cfd124be27585046efdb22c7cbd50ab5e7b7b747de2cff33bff7ef7fc727ff7b3e2f941fb9b04f13755c940d8fc39b57beb75bcad74f60eddbd4abff0f1cf69ff5f75f31499f3506affc46d6b137532f19caaab89df9f3da3e3ebd7acfcf5b49f8fc92d9ef2d787a26c77f32d372ffefad5ab6e65d13b624e8899777b449d4a4bd48757f0f7eb784abe1508fdf1fb707fe8f51f3f1ef767478213b7d6c36cb2b4203cc13a2cbdecd24933ce03f063a1f2e62df9ae4c977662fdc7b1fec5c8890e205fd58d03b3615ec2cc3f28b41942b31d6c65fc8cd64368eed758faeec0613816f459b876706e58c0bc83f8581c11999d66956446eea4633e1815f7bcc38e7114b907727bba16cbea8a89cd0a14cb040105c847d258a9b0df42c50db218bb1061031c1032cfe9a412576124d17de8707b4065890b0bff72676a17e4df947ec587c5cce25face894137507e2ab4988464ec0d4c0a66248bb86aeb4a03f70acdec323ef8c371b9940b7ac28077828d001ab07985314dc847fcb93561c3d0f6f81e979588601c11108c6032e8690a54df070d3184864f83bb3bc199d47fc7ca4e50c52aea1157dda3dd3b4c8101afa9731ef804f0b13ed43321ddc2d37054c327bcc914acdb5587e05f99353e4eead088614b2a8d5f4fa35b1ccbaf8c1a4a2c5f0ebf187dc7e101334ec71a92a661bac0f5313f874c9a99d11a40918fd303a408c525bd385034c41ac8f13f705b3400d1600763c30ef829c4206d1030687b2620fec5d45695b409539106b3288fc30a60e7d22cbaa7f9759fc8fa8e094d26e08c8e8561525a15911635750ea76a2bfc5eae77d06864c807ef624cc0352772a8f66f6c8b5c8da010103788dc188af69ab49b137c56e406e9a4d82cbc0525edf228fa1c5315a7726e6f065f6ec50625fc601f7d6206045fc5c9a85b3e1c003db219bcc28f998e886d8067618c13cc4cb918c558f9100c66f1cf108b53de5e9d8c09fa7387e2ba895867fc1a41cc9679caa06765573d360ba63fa5b6782ac9c1c1a1cac5374693db112be323c9858333d5b7086f96b040d7c251422d6d707872ca009e98ba9551ce9dc1a51d45b425b1f4c34deb4bb4739939f4ae6cd0f9de130af412a704793f89b486937754f545006f937d5f420a7143c4b8a7100542ff38b810db8ab8154cfbe6899b5f28a93eb54f977a21ddfcf68081c60e926d90dbaf51d6129b767410a021a0e682c93c4bd0382a71043ab8a49be474aaf2b48e565f1152b1e032640264f64156f36f654e5f3562704461cc9d448310610b92c8a042d3d6b42bc86532fe7e69e778fdf9e1e66a59aa12814b5db7f0f0ffa4709f4b1dd7bece2b1516266e3cb30e25d37a86a08a60c0d0b9636ed66642d38afd287c48c7acd5bcf26eb6a126687ccb29ae4df4422755b66b4b726ba211bd93c936b0dc47290051f659d4ae36b538dfbb775f3eb576c46f69dd6bbfdc43d309168f8968d06321595326e1348d89854bbea7c56dded9f9e6755b27e17d58cfdb6fb72fab3287ff6c16f4f334fd95e61496f9ac0feb362cf611d57c8fa3137052ba41e980794fffa70d44efcc091fc7ac2b51cf88bf2daf7d9c42ab3cd4312e2df2609fd7cf7c7f3dda1bf16955b52b89d4a7c55d249a1c437b7125f3dd6f86ad7cb2e7b53e56da12ee496bc8d5850bbf3425fd95d9dc9612a9c9e18012ea9dd5063bb102d58b8a646b164d84f95d38a3033c54aa745266cd63d2bd63da35bd829aad53d138ae778f4dc44492c84466e7854cf777f3edf1d0ef74f8fe7203ceb4702c8e2673c7c28d2031c50ac21922ab3602eb2602e2a0b624114f924135fbf1679f68d5abb0af94f256f710a42aa99483eb0a7a98857e2eb5714302d36e67055be0795077177491628675b6605d4ebd7803aa5c877b4bbc04dfcd6ee81b7d0ee00370088b02a7805d450b26579e3d26061b591ec078e9cdd908f36df86b97c44bbf28df3f1ee4cf8a53b0937de96897f872f5ce6f5d5547d9f27e3a15336ec396f39e759b37f984de23471010056cee7aeeee892a3212cab3ef9bea9fbb97594add01ffd4f01ab461912dfaef6faa00b03fd6f2af3512606c5bd454508d767fb4914db06f3a909f6cbdebda0192cee5442e0574e8482bfeb3b82811baf2007d5d802fd5bddab87bb3f4e9050751b31b5d0ff678aa656d7bf531726823864ebfa82f108aa9b0dcf5bf7f37cff67ff2f52aaf93a358813a4aa6e9dc6e67d2def75de2d2dbfebdb797efa6ffdfbd3cbcbccf4fd17c8eeacdd36f5d61d65e1ea3a4aa17899fc2addbe9d9be1dec5db7979fafeafbd9789eb0288d87633e0eec97fd3bd7cbfdbbdcc3833ae64273ed0dac385a1f0e5d2f8586428da93b2458d942d6aa26c1953d68ddb19246d9e50700049943cbe6bc9cc5ab5bfb6c568ec8d79703d11b6ac78f23a53ac7272ba26f9593e6ab8d0673aeff8b3ee3e3c0da7a32d19b97dbf4ac62a6fac1cc772288bb3631c286723c28245cc635ac78df4039129f1b8b4f172d0e340c6e15d4de5217e30146b70c6ea60f22b942c00df80516f82762a1c4cc1373b059c5e33ef8d574e8783c615ac763a408c78a424311628a50440104041f225ca19a4a55530593e2a16856e7fef0de88d14de2d9f73a8c501e04f450dd667a7a3fc37efadfb3fcfb471fd58d2968025b441b955359df80d5606a226fc04540f8252216b0fa090f6eb880f43519d400f5c511cd5a8c6aaa143372fe7a4064781b0218aceeb75d07e31f80f205020e83cefa7d0b3ab2491ac26bfc5862447226a4d825b5079bd0a2f20f6538649c0f3d6a97edeaffd8bfeafa753fdc7381123eaf041d9a212868e1349b589d46e281a27f7eb3909340693e84d19c1037ecab04e939573b555f1d624c66a597944543a3199c199c1921e7c216a5b50382163672a509f2a600eb12055958345a3d1b6004ce9df31c5dbc4546dc11dc6198a18571a61d098fe9af3bf29b3c8ee52c7c5d6ae0bdd09cdf90fa10a7e443e79361c8f7ffe22979bd8a86e2f6d955d0d25c155071d0efc4505f9a7c060287ff017796ede8ca797ddcb9dfef6b4fff170779e3bef99dbbf51d5b060e355c658a85f9889de0919ee4f162fc8ff8a62b2bbe4c5bab2910fe7f525170532af27b5edcb606dfc6092fb9a05b0be255d8d2f24691cf998ae56f6716124becf4a8f8b4a4bfcfb57288f2b1f6821cf28b64559fb6d21c356d4f6ffc5013e75e761f772370cf72f77a70c36eb65c9acd548d21ab1db5981416a0d1889d78851c03a6bcbacc82a7bfddaddb822488dc6e3fbed6b7a00c0815ad759e7d787aca603b7d1171dc6cb4f17983efffa60b911efc14a81ff69e0842198a8838940da85f61913543718b0030583fa0b0e839c5b080fc875700d9645ab6e60f9b72c1c67fcf5c56801d8abeb996aead5c58033732024be6cada9da54b9fbfc8bdf31686ecaf6cd2f994f91e389601044aacbdee82c742d33f962e7c0ceee32d3063af48d0a28919eda92f616e4dd97b62a21c860c2751ea0cf98d6d5207be20b2b25c664ac7ffd2a6eda87681d17e204715355f7fae065370a5b0742d3709cd7851ef6bb9797bb67fd7d3813482597dddf19f1013224dfe4a7720cb73972ea30dc2636025865a7601cb044e1ad0bb9c68a65c5a8110b119c5db653592ed4316e86572bea29ddaac827e45988715515a1cce1bd4211ac0a20fd01015884a184709ebc926fb6a405e4605429cf881dd53ee874d84617341f8b0b1e2ef05c781300334d284b283b384e7818e7a1b51a2811f15a0a2b616453d1f9a05924a319801cab65f69618787022c814f79c71d60e8e647e29efac0900d806d48a503ecf0288cfd01292f021ec35eb0d67e53c07fe423b4a8da1fe59edcfd51debddf3d38fc76f33aea1a8e85a21465f0b69757cc1a1014baf113b01505b90e92687834c39665cf5f8cc30523ad93d212ba6242e6c9f4d709748251dbf9c3f43c1194c760bb074699f2e648b92837055641b495490f632578a4a07247e2d6b3c8c2b277229561936cc77e679e8cb85bc6154dd454b1ca3ce11b9cf0adae9b122ce9d08af5689fad1ae221a9c64399403c59a4784f4a9e5c8fa5542e54bd2ad2da8d2b9c6705db407b3338eea78408797f10ae5acdb51631118cbeb28200d980e6b5a64a88679835c2698dcb52661ac76975fdea94b3d480826be3e745ab6c27155ce1577403da208ae961f32f7bd57808c46281442c20413504c27abfc0aacc372fef0add0632413313f045b1b6f8177c92f905f032c75fb963610af317ef3a53610bf8cb767e3eb83b540872c5de930231b1c7fce2e35df95a0c67eb5fc5eee1ebe0fbb97bb9b3b4fde53a4b872c77128e16c7b0f135d3fb1f748a702bdcdbd27ffebf79e0799258922ac177a5d8749ffab5fd0fb3a9c5871342799fb3baea2c2af5f656140ff311de6c8c1ded617bb616ca777f4c5c0dc504d08b38982c2fbaa2a79786443acf2335f1f50bf759c1a9dca87bf718e88f7e57ef964fa531ce3bb6f7afff4f8f2fc34cc8ca345ee836bb0f875307559bc3aadcb36f5e9cc2bbc90ee4e8a9562f03747311eab4daa03112a8e82f29ec533c182c5a290f9a8a47dd3a51f0527486773ade7bbbeb2f87e3bf160dfa83fb83245a3717b1461b75a44ca45c48ded98631d4c89da736c59eee3da7dec81d6aa0638d65480660d13930fb9e9dc611420c3075ab5159099459b72a684955b49e4e14ce3ecf56b52099504fe0c5fcf6e9f81707f2144f3b934620b55238fb14a8dce43b55fca32afc71b1ef0dde337fdf2349baf99d4b4e3c911b4d37036e45c0549160e0756b3528a3ec0999239c043153e4c46f8cbf36d1b58b27beadca234cfc9bbd528369ce5ef75597d405df8a811676c1ac5083636de09a221e652c9871325b6499b6abc8a06d4c6286a04928f3561717ca32285616c25627e6301dbdb9e930dab330ae196f55822126ebdabcf988d93aaef28049858373f598e134917b5bd72f80e37e1100f4561d823e3985d6aa596ae51d790d42b6c8aa95581cfa78285e00b55edf8d85a8264c30581dc61420c017059413e40a8b65c348274faa8bdec0405da5f34429a29d2841dde6099a808f3926c01564bf5476fdca0c121045e2a983c79d2d069f2c6f2235e12589c9aaac670cf1efdd2c47950ba1da0d034b826a10cd681c04382cc62a0f9e9d2447ed6382ec33951c5e15675c538791e76dfff474f9d2a7f038cad0378bfbe989aa3fc9ba281281cdd44322b168cad74cd42e4b093c3b1775b674a1e1c79ca6a220feb36f7761b4c498756cbdab086166aedf9285e335837598acadad95a4d2c4771f407120a146800c230880b0dc0e949ae5b10cc94a9bcd914fffad5c21db0307541f550d3be1d1e767690a03ee1a88b498357ee584c3c8b29dd3ddfdf1df4eedbb7199225b542c4101a0169839566b84154f705542b9d788026749a384927a167f196fc0622f076d05ef9adf533dd910f0a4684b70523c258cf2796fd2a9890e9ce06939d4a72141d9a20329ab601f8a80e96bc8aa962c3bed59e5e4f9c41a7270fb3c6c5b90eee3549556f477b6551efa2b7d7a3b17f7afce3fecf1fcfbb7385ed0a5065d883d6dfb30615ecb1ac7d869c4953a3c722ebeca61aa4894171be305027b8f7f968d5d36885de424bf47303163f3560791ab0aca2ca93df70366cb643f0bf066d6a7c7d08267b9d4c08bda96e2a7a46dd8a0947839c83a3285740c8a2d7a67aee84544f831a5830310e262593e21ea497f83f101b488e07d0fce079301e44deecc0c598f062362c6f86cc5a342e1c4db54b2d98d53c7341cb2bc7d632989c8d8e1ac2634ede3c80fc28351a0a943c34bec3cc7837ca977726d82cff5a19b2747f46490a3fdab5f228dbcaa7e086b9b14f969a0462ab5108124ff61001c3c1d3082b5073817e425f849df1d5c9bf592be240c1b7b803a363abc75038800699cae8f902f93cca93a22a2b6c4d586841b91eeaeaf763dd522439abf4da78eb8dd5a4b1adb0d3c09b9d39de09e38d3d3ce6a9af5bc9bc4d28107726a2921214001f423e5e6a22eca1ae73a9b070bdf2bfdd3ddfcf82fcb21783eed19d6fc6e03f4635d906bc6bb24c4e29fc311b66fc7fc6469c2090f5fad53a9ac58334df03b7b59858ea21108237ed59aa45362beafc8185c28c0c81cd88161bdaf8010694334eac10b1410e32eb62d3e425ad1d0cf2802bc9c3bc01938f10f1f2f5e891c6ec347c958841bf37de24473a74376105c595516f6cccff0103d7d2b010680d45d93d7c46d528275072073f9ad5538d7a1d01dc02dbc11f9d497ebff416da65e81a63a9319ab9ede591569fba96fc19f33688d55848e45bcb171353927f6daf29b482bbc67643de7c7cb04fa62e1cc0e7098d2aee9ea961174cf5509af6a7645a712ce1204faf3b55819681e59962ea370ac0c6520feb6c8056271c02a4a23fb47c83a9a54d044876732e88f9f7c9e9e0210ffede8c281a49549baf44aea719615c1dc051e9658e8332e8f5819296c874344a1147290b72bcb1ec112c53d624bbe3708c757a90ac44cec18162ac118850f199e71f3bb6d5cf349184dcb8ba783eb1a031c877f78d72495ea218b65c2a84360e933a8363b19f63951fbcf251831739f4c8a2086ce796bf89e3f85ba1fe7f6781129215cd3743ef885443f8cd8ffa7f942df7fcf690cfa8e2f369869079bb232d9335211c47c6adb1aa1a41356461c807c93e613d32ae4485561b4857e34d90416500f1f54147a66a2b00470e814807f173fee2681590b6a956dd666b7be5b7025c13c2a4e265fb0c58826b72f2cee122f8ed6c79bdbcdc3ffe799855e9bf1db803c41c84028b71cb6b78ca47e81cacbbf61be7d96187effc5a171a366312e49bacba59f118d7f618e15e84459d930fdcc052dc15b54f37a837b53b26b981f2a192ffebef5ca2ef752adf2aed5ce733ca8b43bf7bbe288cb01e9511f5a86b1f4c4e83d36ebd549074bcbab9de5ef3e766e3020eec6330599c016d5b3ae2edda3513eb06c9c56c5cd98d7aff1d6311eaed322c2c4079d85e46ca0f9768e3c6a18275a52f089d0efd5ca0b4289bf6c1a494b56c3345659d8df3f2d3cac9094e3344c0bc2905e4e8c10377135cd5b2f5626d95a4a3090181415791b90aaeaeac2a2627e608bdf87f353a3904d3eb57f0253abb77a6eb98840511231276be0b2000e2f10c4a31e4d83b9046024250bce63baae97cd9e25a673779829a7be516901d879b7c2ff3aa06704f87a3f66b77bc02995e5ff8a82349671e82463970279bb4cd2b1b4ca5b29c0d2654e5950dca2376152a89d5203a5c4cf11b70a7aebbfd7268ec6f79faa2bbbedf3ffea9f7f362af007610938133f3daaec5d8a3b04826017da9a0aafa3c82671d49df08f6275638db558061ea40301f98167ea70c94696fef555e87f7cb30fbf4464f9c228d5f93ccafd867e3bd58c56e9d78ff299f77d8fd83f4d51c71d148b3071d74b80449fe1202691926f9fa35ab0415cabc4daf5f43fb236cd3eb835345266c1328f5d4043dfd75ae99ecd7615bfbd2fee8b5dbe24af39b1d76b31ace8e482e6a8b61dfaac964df0cc16a6a5a88206665c31e4c0eca14124ad6a4e563aea9942c7d4abe6bde8e87dd30e8fdf3d3e13067e25765741a3e4d21be29adf86af43a6e16e426565f81d9b3fb7c2cb9309af573945fbcd1abce78b87f9cb169cb9671f3ecb959f37779ed33a26e0ba2ee2b33e0cc62b9fdddd738de336be18364006cdacbfdfeaf19e27a59647993e91f7e687007af18bd99d4fce8fe36bf8770a83a44bd181f77e799efc7a7fffe63d8fd35d77ef329a83a9892abfc6ba73edc1d1328376281006819f86b0031acfa988aaaeb7ab4267541dc39d00a77c59b2e45f998b19d2c290bb3d73a3b9917f32f8a9b4a82bab0b571f60ea7ba2388a49378be8b2da5b043c457002deaf6a6a3129af8312080b1192440755b659747cccf1792971479130802b3bc8d37cca67e99be48160c585d4ad93813e58c5fdb533b648befad896ca56c866566469142b73573138d0b5e2553ca9e8d00a9b3335daed2537213ebbc95565ecd0d88f0e046f226980cbd94a9951dc8b41142c95dde88e31c4bdace5b299dc9564afbd0d28b46b651df54b21ebac0d24f089d7463f8b4aa687c48dbdc8f630ea6252703ae31f216eea6b3b331718bdf14371c7495d7f361177fabe7b0cfe7f0d3fe7e37e887bb6ff7bbd3661b95ece20d2c605957e557d61189e9907eb45e65430bd540aa47997a26bd7cd4c899bba621157530d040d150c702bcb7022beee47121f528a75d216c2e232206dd626d5b7e1dda6ada91f5415c630474a0f52c0ff5246f3b11521139042754a1e257b9560e165726a86c483d4ed2eff8963df55068c05c898b213c584c023a40b6a282e63a2a3a6bdcbe63c29541c41641d453e0afc95a236a61501b64ca2a189a922a19a76c14c33aee2df2f05e03970e1219e38c6d81c74b667ff2f5a3a0c799b36df6e9640746608116f978c01c76eda8cd4f053f128868168fa428ffc68d53d9256615fa41ac7ff8c0a6ecb45bd894a5d9af0f5ed7ebd2930f17e53e64e56ebee3e6b55f1f3a557ee9e33afcc2c7cf4753ef86effdeef7bb97fbfd6e38e5ceff6543eb3e34b495d1b86968a784dbc5f82ef38f9cdba14da0b742c4fc0826fb75352e1eadb1e22bd420e75e30356d6deaa3e9dc1198b85e565f1ec00dee4d09a8ba0b4e0753c24032ee5cd6b27d4227b4b36bdb19bbc94a2cfcde9a6207935025567a3988f1f9289f77a1379d1bace9a09ee8d7d554fc99c558f6b746487fbb3bec4fe59cb552cef7c660b9ba2d5330f50303f65eb9c6c2c2fbdce8a8e548c4570b3448d703e42c4312d98f7254824fdcfbde193f909bcf7b743d3fc3aea540df20278471e861ca39b4baacd7076f8ace88b80613f300554b318fb6ddba181f8ed684d2071943726544b1a87cedf3369de7c2302aa771282a5fcb4c7d7c33e974b809067defe3aaf4f1e73fae3d723cff99dbb8edd4edfbfbd45678b6b6fe934fb7f05eafdcc61e07fdcef1746bba211afbcef9749b8cfaddafffcc983efe78b87bbe38dbded931fde736cc068c608694069a98bf9f1fe1b7b6d185616e378173cd3609cb09999135b005de431410f91c5728d5142d35c0522b4cc17b41cfd874b7c179c97e61a62a17bcc9b19702d9e849626933b96029ed5c4dca3b674245c9789d8869a13c030584044c903cb62046015ccbef81a1b02600ed9048e39a1ab6b48b06dc1207c26112650f0764929a462875c4e702b09d6f22db01ad8c24806d875113150900fb57dc4234b6ee4cf2264d4e5e80967293bba0980191e12019c5510f456e27167440c0465a6e9cdc8ccfc61743f046004223487f7a99c462758b533e0f9976159c992e4f226915e9e42403c0fea7be476209516db0cc842c6276d485a702a96faaeabcae869c2554bfa509d0d5263168a5d07c323eec6494f344442acd9077366ad1a632ebabe9eacee4681a58d1724a75d5e49ce5dff479a8d0ef89116fea39c019c52676e067dca4a9a97993b094daa98942188d55d893b134101a14785562850abf2b1c98d81eb1a3fb116a9646ec6ce5cd001704d1e5b0b3c6a3fc698402c914cfe43825472785c64db0b42e92f8a3796dfd16264a704c7592395aec196f41712a9397d232587005d52594e10e152f65369b32e309f753a5755b674aef8cb3c7686c7973233b3ba6fef6dd6c676a71f2efb467916ee15f725ccdf6b192743501d3a6b6e5275e3940f0c695dfacb8c7b100786b7c5c59a71069b14de5bf3325a1928b14aac5359ed96c9cf8b329627280ca3a901a3a16532a13ef48f9b3a96a1488f216d2702c4d14c7de63fbc9b2dac187e900e50ade9428d7828236e49e2d79b49d654c24474de5264c78cc188f3dc94730a5a6ff8fbc77e96d1cd9b606ff4ae01bdf08c48e77a0d18384276a40061a2840a33b512a5525dfa2ec6ccba93ac78dfeef8dbd765022454a563eea9c836e54a56d3d480683f1d88fb5d74a83e5ccf55aca4180f55e52ec590ef2009b64d172efe99903440893449de5f6a06d1d8d8b6b48719da636f23312a06e227b245105de07d2a2188a1b8cea807b810356850b99df0ba0564e19039a1738cf0f2510b88ba1f514a5a854ea399aea871341205eae022672f622145641718bb920a42ec549091a74b8c0cd4c50b61579a6100eb2586057432c4f9cb24c824f6902da9028c78542127d188f5720cc26dc7293cf6a0b682cb2460980aa0a3619e4e1feacf302944395cfc1e7ec645f104e9a331db7c0e61b2975d467e03c3080fe0ca66f0a6249a08a8467d6501f601d973b1089f3a47b751c827a341e3f09ccd00620c4dd899b9920f0ebb1a7f27287cd0314bb00d9cb3a09883d808a4ddeb0887e677cdf835a3b1b8fdd4f501e2e89105f10a6a746539f9bac35a2534ed028026249d9d87834d5ed78b33b7a530a7b727e25fe9d0510dc0b0db55408389e12c335ef6bf7f4d6b8db0e435e55fbaf67f0adc2ec06123f2f8f27c122c06e4707934486471937c3eb3597e173f79d8b2f1b17fe27b5701fa46c3964042ba16958be9f546489aab2bac8c7b808a0474585b3cc2e5e298066746c8b27c0cb346e688680692e37eeee3e5d58d455ddf90ff8878723e9fffa36847bfc3d647960941bb10f1eded69b3fb75f2e8852ad9ad606cea860fb9d5f21294b76469db9ecf494cdf27deff484a56688fc1f4088fc2a0a8de222e352e9fd31aa292bd7acde8d5f6548d8cc29f5f0f92ee131a060f9a012e7a63f08a994995ea88b69ea70dcff032556dba1c61ff8dd688a0e2a20541f4d591645de78b05b51ea4cd5510869402517b5291767d5dbfdd7b3900b786d893a1db1b294b004f595897c29974539943a5c700919564a0a9774287da84184f1913ba60ed77d7f0cc0507be33a13abf626b9a587287be7611944bf2c8a3f86c25ba32e0b6842abdd47561a079666249dce39ba9fed57fd79bdf9f3af216ac1a100b1e91b8bf99f9c71fecc590e4e53b79a40d5e6c4a026f44a33cfd2b8d205e3c1287ba61defa5de9c673b8cb788f161b7b88a7167e3c927ec2b47ed6644e1f3ce4d95b7670a8d6f864e666174829db8a7a37e3935cc456ffcfef27af998e71708605b5080e24d3c36b582ccff4e61a6fba4c1451b25c0374bd8e51b47a07001bab2a209e26f3a3a6e3fe60179a85373225cd30138d511ba7d89d7a73fb76fbbd7976f7f0c38cb555e1429af81ed5445a61a96aa0de2bdf8a6e001cd1f2f3ab56ced851e342db6a37806a8a6c9a2cdd1ec4f9412c17611699d283a85d91d60e1fa803386b411ff9ac4e0ad62e687e65ce3c436830c9f7f35b9efd4cb01b361e89d71dc4391fd97ca4ea8db8ca58c521310a94e4220a1e9ea9620c2a624e5475e6ebacacd12ee3cff56782d72c2657a9e21a6498124446b440249444f7164c48809e288e764927cdafb51a20ce32b5a04c5c3286950b6872bdb5505ea840ea2df111a2339dede88b2e1adc845eea700299a0cc8b083b91ce0f565f8571029f68e9f88770680ae93e32630efd4822c109d16d695a6e7d47461c4442d4d11516abbbd10f288d12df0b802148516311d0a7dd04524d783e8868666d23a89f00529ef819fd85778f63afcfc6fc19eeada9b04d6c772b2f47c851ef5062322a0060a7a14cee4208eb0e856238e57dbb28c235df37031a0c16f8e625f1ee31ef1bf0459cd208a3a854dbca41a854f038a87084b5389bd09615fd38244a971e034e7aa4d264821a14a6c46eff0da2af8cf6e3bc431361ae91ef0fb837661ead1be2b0aef7b324103be915534b9675b5b42722cadec4e1be0f2884c751be84d51040f2fff4e3200a2294e9be2f91720f1564b85013f5a5e6e6ad1c00d48ef44df647fb943881d830467ba823e202b2f4bb903206364cefcb5feaa772faf4fef2fcf6fe718b985a9b13436aabcb047631d5b973c36761555688d3ddcd539d41399cc7e8640f8be4b2242c082a27f8180491e46a18462e94a186ac9ae4c6eb8d9f1043f63a9013a918aa00af81064835d2775164e4a96797b5a04137cd7a8d767ef3218af8ae9e18dfe02fac81ed59c8b25dffd8035de2bf2578734f70f8a202e9fe271fb3acae157652110b4accad8b0b2206f493b7e2723b71a57c4031125f8e2eb0fb218ae2d3052e8358c292265fd11c53cdfc5ade2f8d5a97f159d208fa7f8e17c8f6793b9d73b9011cb5344b9fc3cc88f40e61c67b8588606d57934e3c7c5534407dc0a7d4a5fdc9bca9176cfcf8726370e69b096111faf5cffdc7f7ee9f4e6e975d30de84cbdb1742150a3062f35d999730c81b2e454329604fa7b172df39c8135c3c4fa712107b0c6336f4ed45e2777f0e569bd7f791edab185fd855e80b1c9e42136455dbff7791d1bd3c146b7948a849983583122f0963204cd8309b53b711578159594736dcedadb49f4d4928974607bc127798149d7c92103f9a48ae02942c5a01533ae5db457276aed6b5879d12f42c6c3b53b99f6c34564c36138fc98017cd4e5e37e7f7b7d5a3fffd16df59797bf9e07da2fa1f5fe68ec4c9ba19a7e5c4498874c086c887441959d74138a99b99b9270771e66ea09822ec37a8230ae27b8d1e66f0337019947b64a3aed79412da71abc2c566e949bc175e361c4281a17d950a7fb560b7349907a37d1e383e970bbbb110e6ec162df0442c31062f2b63e915993f26ba7fa3495d36ec79b7818bc07bca8892575d10428ea047283cfc19eebeab29ae232a08174fe54e3336597044c6d31b5964f8373abcc575bf9f7bd37a1b0ed6985240c74b260cb94a5c7995a8a1a7fd2f307d6524637f7e756af477450fc3c6e0476830e57e2b48df038a8702e54e6c926f2a5995002b1995d8f830eb3db4ce3630e6aeee3a0d2fb3ea8d0459eaf6cefe68ae172bb7d269a08f2151555eef8985c7544486ae6c88174611400ecb200e69455f8095ddee113f8c7d3809410bb40f23bb62d97145596c43a283a608a2b53cb0aab08ea36259d6983a10a83a231bd1c4dbdc14372e445e12653c9511b5e756bd1c1e0c40f80c8153813bcc667feb568e94c8f3c5fcad82a3bf1b7f3c294f200e82b52f949b224d1a47a80371dc07354c30e3c31ec133be8e90305d0e85aa1a80f448493310c3805989b78baba87246a721644b8dcc2d457639e495526ccdb20e1911eb54d04b20855aae8aa47e34fbf851015f933b13578dab29321b436e4d0fc8d643e2157cb4b1aa89f14dcfd001a92524c0def8f448aeccead0aeff2207a5478b9f04740a874ec10bb604ffc41124bde5055905b5520f194b00a15515c959c57363e2f3d8a2c6c6a468dc0dc11e127cc389b7a6289e1e8dbfee34def9efed875434d9eaac8427626afeee3012c47c88f2388b59a518e3f5cc6c17d16b63592dc42d1a60f6e7821b5e59f8b69cde788d391ec07dfd8b43aea2c34acd89dbca18c38876476ca07002ca75126eb76740c3b8da2df3b4a6f071dbc1bc63c1774c1f57694a05b3a53be85cd088adf8ce6334ddb63629f04a1d3d097873950df9f5e4479515492aab2dc7f945765f822eec6c5b86fbb4b5291689222db69e3e719e8d235063ac9ffb99664178e8c03202851705948f83da426cb910cf4dc14447e66d0f411b41bdc8a610f86315b5e606f1ebdeccea7915e8e3bee15629bb998d2996412080740efe14d585038ba4515661480fc4119022af664927cec8fda2d7a265133cc98b40716671fd8a87f2f693f88fd841dfb5f19585997062e32622ac9c515fb5aec69363f2e9d58f217978cfaedea03fa13effdb2b2b7b68a8bccc3f748f8eda1f78f7be2e11d30285665f822f62f8a4aad747b97dffffb7ffd9792bd2a1465ffad541ebea7f29825f2b893c7e36da7bba7c3db2f9ea64847b61407b9e1441dbe8af26ad8986ffbcf879155ef945bd8639e597726098af73d8ae7f969978d401b4aabe0ede3c22d64db1c1cc4a3d99aeed931b051c433c1046633813f0c35d06cdf02df86ed04674fda5481f7f4e1f628ee1a4e1ec432b34dd23f8aabe54c115165c03b0abe03d4a37020d98689b42d8a8ab32002b9eb55eabd7c1adaef841b7928c64753d99443503334c66adeb120afd46a97337479f82f87c4a2a8e9c7caa30cb13b2075a45720cd075c1854b479a282e54354b6a417b513eca748ce5ba1fd912401d4e8fb00aced25cd110cc7b4113218e0929cf85e41183d007953d4230473df147edc6c82042f61c6c1536ecfa17fc8b63d646a218dc62642f25c3d54cca57d51208aa5dd6a1075693ccee9d81c786f51ea89936bac61789282753d355037109f787300a6c8254557bdb5ae6f1cc22f30fa7cbbcff3ed5cbd00e0a6a1e12cd105e8b3de9384603fb5eb3add3a5b220e322de4d9f58fe60cdc0c34c0ebfa865a4332a5d2e8a99728316010056286e42c817f694f4266a15653cb4391e157519f084969a830847a4c1b92716bd991174698c41f819488ed40de0e85b40f039e474c958c93958c93f53d4e2d9fc65b80c8c07966f19d45019bf1d46c3351e69b6076433f674f2701a40ac3b19fe5fdfccf6dd8b575416311390fbeb68a806ad009fcd7f7cb0dceee671ef6fba343b47b6ed1bb151c19151d07c99c4fe391a9f103423754fb0faa8ed99dfd18535974998bbf87912e35376f1237a47416713dd12b1f7a3557880ff754cc6765c0021e93f962917f5b51f5dbd37efbefe394269d4c98c91e1f2e45a6bf136b55551ed3a0f26d764fcf5bbd7eddae27b00670c7549edd19bab926a908525f84161fa0ca1179294fc679c56e6b9cc5771c81edf08a7dd215d18edc8a4ffdfef708d7ccdcdde7f5ebf8e6ca3cf6e72e10d5a5d6d8fb3eaa3938d5c4939a05455cba9fef7bf7f7e09aeec2615da656e63a737bdc3ebf1d063d0978d68e8eb01483b20b7f7a9975b9f0282e98ba0f03b374e48bbc3f06d0d3ce1ddb33537965a2f2d343f704b107795f88a5950349cb897c65458b74fb63baf4bb1aa4e47e67e93136ef5658eb9b486c92174185451a7d94061fedb41f7eb6d3beff5053bbb51dadf2dce3c18f3980d20a7c205efb65117ec63ca104b95c2a934eb7e28f6d3d396f3e0fc0a7054310ef2b2aa8a8c245aa6fe95002f9f7cdf9b33a6236a5283ae860b04421fea78aa91b634958b01df8fa219d592bfe70a074b57c03d66b61e6b4607f4210abf22d535672eaf66b78f9970181629c12a5cd49e3d3221e315728ce65596847765e1d3a1fd32ead72e77458f8cea9c08b87bdce6fe86ed1398f06d3ebfa699889a1b0d3d491720bf6dd1daf1c8d73a09f2fee8114b46da10e52943d647e9d959367399c66ef7b3e64077712a1c3c7aaf22eacfca21ec3fb5e2715f1a10412ad8ef8cc8ff436de5ed7cf870b0d9c827aeb2bd9172f2b476ad99734cebea49dd0468340ac7fc2be515912dbb93e2b76fb8421835455e183d8e062bae04eb179b709a7648542b9168a8ad819455c219130f6a2ee8e5d8987c0df88c645155460c39bd717a1e2f2649217f5471165751d0a2df2924c50955fca7ece06b1aa080bd426ac74390d9541999d702f56f8188efa54a3137607f0ba2b3215b20115e2af7d4e2b4bed836bc2288d197374812b8c5fcb82daf820347a26c3e48bbb1ed0e9a1be132595764f562cbc3f569cd12d09828241916824b9057f301e6b03422a215303ad1ff99b424026cead63332875b23b7387f6902e26aadba990747df2279071fddb8e7610329d58b473d056511199ae82e1a8a7cbe0f0316db7c3bc9f2931af0861e36028f82529f29d37a58003262cbdaa1d18438371352fa38a9dd76c50c4e6fdf1bbc4dfd284a3f820de4c7da79350138e2ffffce5e9f98f71165b925e17f7823d932faa83f153f236e4449292709fedcb7756c110b7d14836147c2b749479eb790393084b82f4d97c96dc57200d9d64c28fc87b2b776c68028f4ac62229744374109c694434462eb52c86dd00c7d3c6446456e8a6a93a054497db4f50ba701896813174eb1aeca470bbaac94561a695be67b0541770ec19c0e3a32a878b6e2d9276778d66d67bec1731c976c19bcae50a4549eaf82e3b077a95e43ae0c9c9e4d2f76c40cfd6be1899e6d2c64b42e0845697a08ac39db999bf5e2ecb9ab00b0285731719e0e4591d35cd688da0c5bc3b5e2f734272fd38935affb8a2ea30251eac7fc76d9c3beedbf397ed2b1bcd038f266c2e24f0c55a4d63b7259c1c389162f2ca6baffc41849eb4d7fe83c346e2c3ef4d4733ee2418d258a24ebb4adb548836a7f4d4799b98d396fbf6fce5242a15a06bf81163e59998729f754681d832084f377d77859857fe41e8d4512116a4422cce442dfc07d8455488a505918414ad120d1085beeeb5b594474a879f5c4efda3834cdce1a427a7c7ddf3c7ebcbb7affae5f3ff6c376f834913557c00e83322d38f1c5081fe63cca240c9fe94ca3cdb8357993fe475c7ab88cfe2fbbe2afb4056ce51e51c6c5a422e21e34beddf6f94da6978793290ccc589087545a3e6fef9fcf2d7b33e6e774f83981b5f05ec75391e7513f7b4a51a0bc335f34287f4d34ee726e8018d3d6313b12d09e525b6a62ad2f40dfd94b3b135a212d3b1ed9c77c1c4558f716373d4a2e2b449ee487414bae25607637d32c1bac15f26da6228cab6ca8f1cf8e124a17136432b1bad39a6852985f7cb50a4d8ba98000bbd98eaebc178de287d6daf77c6e7b4e421530459e28349602027133c8f8146a09b22dbf2e1bc9c7aee6f2c0c3bb2cdc6c677fccc77bc893bed4d8e17240519b5d0e0138fe860b72a42724ac4fbba0507b6f1c11497d6ce14cb13a99cb1c71588b05a50e9d18085059010849f4388f2a70901008312b9fb801f216f1c62f9c919e2b53265e353d0a6ba64924f7043d8cb962b989afcda9b083676fed9c38909d20c01ae8cc9851d63b07580179e273a521b6c8397622cca4daa37e4825cda81b4c22643a08f0fc1385448c72ac507bcd9491a221b1f8ad49a27a939f74ee06c0509213e5976860a0ac05d8e2624fc2abef203360e79014f2680a781928931aec9246883a4184edc113e9ac02302447aa7b74374c62323ce5de6504f9244d537791344cc3782c32fa6be7f7c09266131e63d9b6f89a746f4587a4ba9abb42393423c6a61ed40794c1162cac0cb1beadfa9187278be4248cf37e1b18a164309ee50e16673c7451351705afcda0173273f7b62935c90e1c91be971fe3ec55669cebf6b8e9f78b103497638a1d3fb5108322c6bb342ee7c95772392e16fcfddcb20e5406ddb85a03eef1b410a31820a47bfd33366ed2557fa8e6670b833b5a4fea8bd88d5c9c6a4dda1675f9cd4ce0df9d7d91900af81b40b62ffc3dbf9fa341091f255243111a053c2ad8208b75fa240309b181e9c2991976ba19649820c03656f5baf854a0189b600d2c6f6bbebffeebf277c321e94883cb92ba8214b17f860364637848a226e82e501ac049d1596d2d4d18dbc6e0f2fdd713b60c73d5b42485f5768eb1997d6c984a492501f0b82b29a5036268a468875c6218fc65f56b7b7ca4718d415611049626f4eec065e8a8a3c8663a34fc8c26c00dd57dd8e5847894b78772e61d026d7aed1b78840856ef342d2ecbc61e5b436d99c964af03db4ec27e66c95afe6a24d6e856f7d1559c483407b7a90f606601dac6c2d0ad04ed91003a257d252a5f5134297518cf45695f8801ef2c0fc01bd570ebd1cad8a3d6c2489b4451530b7c852205f9bda99a51552d015a411dd199c5d4aab0be0851c8621865915789f971cb3502434a85cc079436d5d26a94ce1f0e911cc8da522e21e239040799800faf6f5cbfa6d3be0e7b76b94d3e187f43ec6499846207f3b97334d8cf05bc1da85e7a9164c825063f3279d2aca6d245736c88a89aa306911ec3685745011b8bae4a57f5c353eb34debf334d576c9033f08316f2c8aa3d4208dc796243fc62c995ce94b419134991264f911062e0a726928b1ee8baf3716c9cf510ed05f678b06ed4c1467ead7f123cea38f89c6c6e4d7ee65fde567f39b5e95cd9c929eab4b367a039daa70e723ce49b4a064d04f5d001a009dbdf60fa09af0423a919df2aa283f52686247628ec87acc64feedb07d3d2708648ffbc47f40fcb1f6935e10c299d73c8212332c130b9a2768d4600a63f90d59c46ba4500e642941c0ccf0fb9321e37128e14317f90f9ff10eb0b80e7241dead9389c52bf9d99ae1a11307491b51b4e14b809d05331dd2070e21dd2c2460e4790667afe4a76d4fb588ee27c8c5ac806d9ca807095618bc3ec0ac4156c048c5265b5fc9e40ad894337410b883701e1bea84e56523400ea90526546006292e1e039331b1d6c558cfa3df9ed4a4b875ba6f9d14cd09330dd63a94b0f2dd43b6518a3add68adf3b2999c5e44211b8316937cb1c867228fe4d248344214627b5a3021e5217cd1cb6548ceec82bc994ffc6159807d5004b4fecc6c26dfc720104e209120e0ef872cebbdf40d4694962125ed02be450040059b533081b4e73510831517cae0b6b27016d9abe7410b17851df8c0bba043d41f5b9a926ae90484b7547e371d45d43cf35e1384520945b8685d6a582bf995053cc47b0d6fb6306744d15f025c9785c074566015f092e01cd17955370234017979095ba0a839c90a22f6af20ad923c9480d1c65e45615787af2ac1666a25cc41789bb2889293ef4bb91bc11c027a95d7a826440701a850d1311e3e101b1415b266f86a7252b9ec40dc551cbf170a3ffb124c6db257d89b838c04b91a4f4c7c51e07924bfb33b420e8d8ab02d81f52a9b24347220b1476973124a1a714b1c0160144a83034a57e6d693a227d9bafdb43d85d361a298c80f2a48d10730f3c0a661fa135a1e241793a3541de0f9a728eb71c846468ca991ad4a1411f34f599a83a9bca0f8a1a17a5cbf3ead3f9f63139eafeec1fd15722bcd6ecf4b91d44464df0985dd462ab64314c91d928802466696eafdc203949f157040284a8b0fbc6425b162b3f8e6c564614ccfc04d7a51a3aec88db56bb98d0cc41ac035d03f74b61aa4e099571950ba079e43c1a05d249831248513f7500e3ce7def7d94452b29709a11ab81b3065a243f22e256149a8b23c088fbd2c6bb1d5a3b7f27a9e1bec54235d89e251a75b5fa436fc238f126c1b5528ec243017656e39c9c9a10a04a06be0223d761918a25514bff186088a9ee82d9df00390e4b27c90ec13620f80c1e6d646e9adf65d99c300773779d586ff11546d92d9e70498184473a8382c246c9516904f8a5f0baf6c9d20bf28d1428993647ee050c68bc2e706e63a09485ab1816d124464cff019328fa614fad916f8d1529beba84391951c2ba360f87206019cf33da15b40fc1f48df2963258a309a3b03f4a06f85ceb9b912aeafbe93dfa8b507575a1150543855623a613f7341580fb805b680a0c2b39f26cabc1ea6456ab411b8c5726631159e0e59ce1c86738a4248eab18f14505ba3b0bfe23c554c4baa42c51005d6497c9908deb7245649e09e74ec5f839842dc1ce104a9727ad9e8f99239f7f54d21bfef41b9c723ad9344af83315163bfcc82ba438ac004c989bc31c0ed3c696563e607c24d2fb20628c1d406078caa889823944890bf14be3fbeddcc7b2041d6c978d7c17c089b3606a3545cb513826824cbc416e6d8026106e2d5cd6bdfe7786a15c156f92deb4406e184f6c2235e2197364c09f6b5f367fcd990de3bcda506afebcdcd64ce1e9d9a5192bba9cd37cde79419fdb869defa66166a1f6633b637eaf46fe571677a6d4c4d3a77adef6aefa303a3e74fb5775f7efaf1ed839ae175fabec737d36d5f9e0e6faf4f9fbf0deb6049b9db08aa2947c990cc1dfc15b7b12ab7f1598fe2075f52585d860deac752968bd1047bfab27d190256e70afceec192cd949f3c4645b48a5d525ea711f4f9f8d27ddb8fabd5ab9a67755f62bd8bf7402da1d4d8f10ad7e7db443bd6f5dc157754cc78a4a84c081d967a08933ef046e854e4dd859ab5444ef2e08517b92a4ba1373e7483a33c004352231a1404f503621c28a3891e321652b9c03bc6b47f5e7eff7d10b1bcd23f59fa676670fc0dfd3369e21967c0dd56d215bee3a6553c37033e6ae6951c389ffaa8c96ee6093af609065205f2043bb4739faaa905d42425f6918da032b7da2a21734800e04551ed8d2697ee74f4a6c5526adb65833c7c977456cdbe24f0554003986d0c9dc086029adf60a27ba8328c425164a5109aa052946e8fa48d880f5529f371628bb441a3ae8da6e5e9b28387f6d7bafb73004a2c821dea913267a752e0189d148ac194f0f278610122480cdde00df492335b65f27f393dce2b10276f023436d9cc2fe867c52e02c0839f8694c82aa216a20d96fe043d19b9446425e22cc0c36c7c5569114d72289a16705b93a9cc8e9d1bb0d440105095f9339f020d0270030b0669d763e460aef5a016c0eabca1240cb0393e14b1c0f80ac00a16508ace25653692fff4e22e9378433577c0410b5231784c975b6aeda307fbfafcf4fc873e3cfdf13cc473a2fcff14c5d759931b73ad78297c8a52b414cf442bd1c453645d236b7f3aae275a89e27a4733a1d5986e0faae78049e2ee5003e425b92e5d485ce265dcb9631cdde4dbf6f577484a8e2b116ec94e0cf05b83ed58073523ed32b530eee1d479df673dd169fc009c3d3945d0f38c8fd38ce03d759f562af6ff2680f85f4f5ffed8be0dc1cd84826ad18ff62a2e44e83a22914f9b390933f96f2a14e7a0eef21d301b82257aff018f51f95d5ad1221e7139fb6084560abf6e5fcb2b8a3bd43ec75199ae7488fefceded6d6830fa418f9e809ce572799c13d90f1740d0f73d29774c3b72abb84043c2e4a0c3e9dbe7ab0dd60a804fff05c74c7ae5f79797b773be8082b233b53973747ed362bfab34cf28f520dbd781f895e35765da98dd76fde56f6fcc2ac9d5f756d7be2d43ebf7afd7edf366375ca6bdf226771a24c408bd0a0755e6ff9d297e49b0d128afa3b1d0dae69f12dd097c78ab64aec8f1f1cf3eff05a54a9f964da021022b23d9d4581088867913842df2a491a8dadd4a18d849a1379b65d1e4acf9c706218d04203719ef15641c5a74d83b80f95a840f84296c9594e1f0787f79d9eb33be204b88b1d619bab3b1ccfe0cdef94ed5da5962b3314b308291a8b285ba6be2fe4f659d4c0d0a3f7a0b94487b93d9b9f2a6648de872e6ff0e1053e7574afe50fc07f71770f90ee506228f9e24d5cf6ff1fbc2de244c4de5c40fd5046605bc2e49838d16dc818e27b4c141fe5091ffa93eb37e82258c7297e8f9976f6f43942bbafe479588773a01d5faff8b8e7b7bd1bf3fbd0dfcb27fa9f0c15260e3600ef7ea2ac9fe23a98914d8eaf6e09fe1589d32d907f5b1a8019d540d5a9e997e5cd580bd03309acfa267dff76c5ecc62c18b125584c6f0f03dd2ddc245534c149e0655841c087570976ead9ad7ce018035cd11fcdf5ebc6690d773d69da65928f7bddadd339570c2b8fbc1d23b0936dd568b4bfa4ac57d69b50f09145a84028e910e5f9ae59cfb35c2466415611bfaefe7ffe77ffbefe7ed3fbebebcbea9e3fa55fd1f9b97e7df8e7ffc9febb7ddc159f5bfabff5b66fdfacb909fc73e0430dd00908d3fc81e42f3e9fbff757b4393fd8dfd232717b6b0cccb8f55f8475d773adc56740fb715ddc324d632dc1bc34dccd160195c7ff9d20a2574b7fdfd6d8890ffa9ed7751a625d6870f184e0731d647aaf30a2253998329cdfc9c359715155110b1474aeffba4ec4ec795db457e39db1faf43de340cb59f35483ee892db0bcafbbe6a9a5bd97fb04f1e4f5d822ed81329bb28a71e1a77c9ebcb5ffaf3cbdbdbcbfed421bff80191b4a6ec281dc9cac2280f2c1d231a1b7eb6fb3fb2466f923ece74c8401421ab727b9d2e1f8e8d9bf4161fb46d4f4e975fff348e3a4af7efad4efdc318b11d7357bcbde8f5ebdbd3efebcd288e30977d38dcf2c22ec4bbe7e809ef3efe91549ae64f4616d207fd399b3db9bffd49077ea87f9bfbb34a3707d4f411fdfed20dbc652076ec2a2d9c3d058f06618c6a6a45054dad0f159b396feddea962928f12f1ae252bb20b5195ae6a14dc8464f69116b6ef80539c61c79fe5b39d77822b2eab0914945f507d7f6c67efefd0d45a1bdec40adca8cf0b0e23d3fc2d8118f01f90bb6a95a5854dcf1950e90053b90c26e6ca9613995aea8d48c92e985a87e188f5d3ebd76e7dae9873b68f159fa36327787a2f1e40ad6d2528feb17478c0becb226994c23200a3ee17d4213a13e0ca87be0a877207ac07ff58f217d946220d14533559ce8af36f80a7f0598444b20069c230e4b5ee9efe78d69bedf320b613673294c3d13fa9db1eceadf82e11b35b3cb91f4fc09b33ec36412fd883dd4c9ef1ee14ed1e0beacde3ef640196defd9f6f87b7a7dfff390a28fe4cf7140cd51f6f1fefaf1fad701f9ce0c315fa6f3dfeb28387d62ba9fcc108bdddbbd08aff99a7133e7e3ab7475ff8b9d1f748886efff01d5c76eed814ae8af26de7e403f8c3af18fd76a7a74ef99d312e892cffdcec091f1014df1a7e97fdbbdf3ebf5d9ad74e519a91469b64b566e9212e334deffbfca13d737b4085f9e6dca348300dc1cfdeff5920e7622ba2aaeaacf3347beb6e3143a634d7aa74bb3fdc940a7b86ac28cd8970cc7cefb66f32db1fe305cd7e6cdbdf066811299ad5c39be4472619d8e394a8045c66779d6d065d748b7fe07cff976bce1c46edfbba4003b735c361f7835d606717e95fd8050307b3a870d7d49a53539c1b0cbcfe5dc7b87db4fc69afc25d0bcf5dcd99bbf5137eef622dc8caef749a29bfabb88b8a15e01e7c599af5a967004cdf1b7398192abc7ad5e98e747b143c3fbfbcad47ea1d2640593450974d8a1a3f5c2b16f278a9b2d4ce4a799307f51fef44f000927800a97900a4eef351508e4ba3f34a55269994de1f792f2e4de0adfa6b026ff7c421b2b1b909bc15d970ba20dcb3a846282055a84bfe60d84f5fbf764f9b514779135565efff3685d44ed75b84556ca1badd8744543b1d6f9e05e6d22c1073b2bfccf4c9247e20b19904e6444a47a277dc2ef95dfeb8a5f9664b67fbf430c093c6d9db986412e6b4fbe66fe3c49a4eb6dd86fdf9dbc063f31f9fe5265bd92f7cf8766e9bf43bb7f272e7d7a4276e81c2d7afe780ecd8502873ec31a7a41e4f9e6062bd1d88be87a66de4eef39244ce780d68c37c8ef45aebc7db7c9ecbb46513ebd20b86f47669f01277c7f3e36678607a3bd30e99b477446496d4909588fbd6f8259b58d1a44be6d321a9ab37099abffc6f83027c07b66e0f8088bf259191a0b0649c09fc12eca427498ea4d3a5248712aaa56b77733168ea8297da6581fadf0fd01b89bec78c32949a268b939aa1511d8b33c256bddbffc70d8dc711147d4461ea3a6b6b1b3200a5d78f48864f2c750825ce25ea6f2007f07cee470e4c6eeeede5ebf88965e44f9360ea03a9b0b849833c2b327fab488407034eaff852df93719f6dfbe524bf9dced861c23b5c3dcdcef8810c262528b1ad26fbd0e13eecbb347240b19720ac0a52c33433450fe709df0ffb19ed9c337fe7483b07722d61d5cc213320616a06a1095d30900818cdf59ef839f4f05b3f14dcb9bc9bc38cd82c559355e53647d9b3262b4fbab6f2f04048aa2ebc091daf051e8d9b5b6cda8277b12e765a82c9a36e3a9cd63550860cef35ddbad7a537c84d43b59f9ba2be5bbf883be0967ed1b43b2f555fc17a39bbfc279356ad9f94bf7c88376fecda83397cd09137ef75599537e178ea2cedaf6c3b571ffee4f11c6ef7a4baa690b43ebc6d5f9f0e7f0e96e8e8d81aa1dc20ed6e49849a43db25f62f82c88be0a34fa666732205a5aa265ea43610a7f05934dc1d9f579f4fac8a7137bdc66cdcd235beeed848fdf9b2cef1bf7661778d4a3419675232a198e2fb839705d264b6d37c3b38efe9acc39b99d2622b835a642f5af2d1e9d6492234ccbdb4a24bdefda1579a8deb40cf2ccc18e8830d4a6751c48faec7cf09ac1f72df28e394d2d121d475fdeded65bf7e7bda68a1c9390cb11173401888528257818a16691e9d8c73abeb457d3301c5db295263d3039944ca43014f704856a89a01d619c3793ec88840a625808383a209554871482a78204a13fca76a4aaa4a7e9e7048d3e8d428606d5bad18e88784a6cbc400b5f0256553822a267ccaa62608f8a7933068c416e856741b2bf43d8c433bcdbdb67178837b0d04236cf6c95f003be75b5e04b4807fb10e49d6f943c7e1f3facb1fdbc1465d838a267b186312b048ae1f72d0628f957bd77a93e203052968ce09330808538c0cab8a209d435111535604206b36292e4970a9ecd4e6a49a647acc0ab28da8a1e7cb3c00beca9d82e1d088267879b36cc54a9117aaa995333ef3aaac1ad5448d26241e68a642274041c6109271a0278f1ae573d138a47d15f14e8b0a33146b83fb21e8763240b4038810340f60046974313e8ebaf1f942abe6e7b170711c5d9e499b9f9daedbe54f9fd7cf7feaf566f3f2ed7910fe35909f463918c6c80315688272276703e195c253c516153a0838b9b291d22f272e7b06b902a4a4085a9aa859890100e7be56df261ce0203c8562f698da1fc48b5b34b9426f2983dd4e78d95bad5de33600a3233d980c067a1146059219b1d1ec4068c7cb30a867406792d04872869d2e19bc827a06e1328f21f67c7974c6d24193d5191b8488313b41460899831cbc33d961d4c902e004a9cddb4727775836c4832c4242cd00f71f41e4d2d0d9dc571eef6a533b3410bdc9962d26819c127fc9c550a640c27c91faeb79692d387936424f5744708e4c0699890788bbe32580972c7442a9daa0288f8c5b55d44ca25f453d14941160c870a29863cf3a8959235af81b051354e6c5331f481970f7f74c87188e26be3f661e8dd1143fd4a39756838368f0a6922bfbb271d2f8c8133667dd60f204232080332216486ee13eabd05b26a8708189cf573955827618cf6827343c5a98f2c613e175f3f2657baef4e715afecdc515358a42305d4f4405a262c2a5eeba46cfb829737fce90d8b37e8f48d9d76f295d09f04422a01d21be148e1f4e6fb5e473578cd5f1a34b35b3f8b55777ee765f3e7f68bfeba7d3d0c6aa8883b9ca2a9280a0b606f9195aa11e160a48021f5a42ea64f36a0131a8c1085cc02cb3056fd5c1a4399f0080ad792f027450c1c2f442ea1889a9cb0bb84208b41694c4b2083f2a24b99dc03599e65e00529a63ac85fc85fd8878552290a255769821ae032c9c2f254abfcce155b612ab28efbc6924126e4d34df8be20b8409541c4192a4e49d4e604788885e0430a53291c796b39d1b084089295504d11ce305f4166e48d3305d4683ef2a8cece242f4287bc02e03aa6097eb6aa5011e137d637250b140667075a1028d7a18648be2f1270248c4b4e38e06330642af626b0a9d407cf43372670a2801bca3b45a5559c2aaa4208a71cb80595b33b1e25f10073801748d442275021b745da09ed4f8eec2564ed4ca0f7470ab0aa511852b0585bafa42484ff427908282af1ea370796a4c49715aa4f107d42de86270ebe04a30d0b9a8f9a5744ebb457c2e16daa2c810e6e35dbd910c2d808f58d7857fc30e4f9beef7146365684c018a4395af4f37c07331d871bee8f6ad89e35ad188c5756d0ad7836a13daaca8733f0a5fb3210e4f0aa6ef8f2055c51096567f181a20a8abc7290c8530e9bf5d0ed6b91fcb3106a3271e3107908bca1e2679000250406b99b51b0eeb19caab803d52b4c0713315c401dfb1bca5b8a5cb72cf22abeeff93c75918fdaefc2ec41072d7febf67a74bb2f272fd2cf2697dccace244bdff76c19f1b257ba56b2ca5fcc471e70d388f0adf83b3761bf7efdf3bc36dfca4e7b360e4f2847cf6b60e64d27f1bfded04742ae837629ffd8f09cf0a072e027685c3d6a76a2e28c8794462dfbc7c0682aa05b4f6ca8d7aaa5bafe819268fd286857f2d59392fee25763212054cd6baf203af300317603b727b1cf6255ee75c03e48ed6dae88ce1029b70b6c28381516442bf7fe184c72ca2dea312c9c49ae733a9cd38c3d3e5c34eb6e72b84c13fdb308a7cfaf4fdbdf37ebc3768035883b1d66e4ef6672137e2e271677e1a869e78e904f973fc26c128c7b3eaffc2e1d51090cf1780d31b6059f6261a7289469f71ef9c986e3e8a6be3d0dd6842a94fa26e5258470b329d4b53d2826d1a5055544e455039419494810516207b24927eac3ed2fd8f52664911805ab4a2d1a21f7644067c9b6565982693319173b649e79ebe78d183b394c248f895f42d778aa368dc34038f1db1f39287b981cd16cc81236724ad8f0f21b07080f951772aa12bad6d6f96f774de6345455d84b230b92c20c8218a7c42304b39ec949cbfbda21c29187f36fb3ee36dfbaf5dbcbeb205734b71acde5c4ef49024ad9461c102c84cb573df37e506551471f5dbc1a7c11032feddc3101d732e0ef9753a22c248c6f74fbfc65fd3acc0fdf16ce1ee4c1c692dbef8f3f71ec9efc87ea867e916f7f3c51956fb89ab3ba61ba105f0c63f1453c96bcf0a8bc3a42643d2e3cb4fb033bc77151461f95c1473c77079ff1d2231f0e3b7bbf7d5d0fbcf5b211bbc46a51ff80d24a2f03c2ff9d9440b47cccffbdef2bc4131116f160f171f593a931f1bf3e96e55b7666a6d80fc9d539e0e44cca3818289438911856583ed8862855b983073d22969652b55bd094ea6a86a78cc7b35b25199689fbe0a72a8037ebd7eddb655af71e993ae434c18399c053d8477c09a2af27067302b9201be66c661a9f0f2023e5dd3f69e3732f1417753ad39eb329cd3672007d1fff4a7ed2e6512a50f8231acd64e2119ebc71e14cf892543cf3bd3887d4aecf58c0d1b203685fb2bc38dd4a3b4af7927214a44172f6ef0175499bc729c080086db305a2a8fefbac2166d7375bc75e5a374b840cd4e041b16b7f0fe99d126e7af8df247c9ca1eff37672b93bd04556d1478fad1993f68fb4d1411ad61e21ced39e21cc2b28dd2478369677db847a998316fa4a2d63e1fc78da9869343e41084283f09782a8f3432c0692c8415853939e1934dbaed36f2f7f0d60746c5517e3dd064fc08b507e690492de5d40c30e2736167431190447b1777ab78c607c2f26c1f5c9c82d2034548566d4a503f51ca1b2a927bf2c0883b1cbe07c076eca80e6c8f139600f36d06f1196edcc7d01a360796afdfb235984d1fca21a9b3a53856dc354c85084f747489e9135d90f0d6e21c8f060d88a0846f4d10757b488c15b62633bc08d2b4d8fbe85297af6e780ac936405b438a5a84eaa127d54119a06289fe7e1f45feabfff17dbb63c721cbbc4644839c5ab6286740799ca1ea0626f3f8a9a95c776649c5cc2cb7603a72868e31e087cccdcb32a20659437d06c05eb1d5f1f71e6648ae1b307e34c324e52849813eca682d8153e2a69b910a4b71c049d92f821a04fee03fa041f9d7d726788ad225bb48c1f4b9aeff5a2a7c56de5c572431217a316696cda0fdcf828eb1d0ffa2061c5a61f8f4225741ddbaf06f6a1ee9b8bae3f2743417a82363ef082a5bc21454581a2ba20fcea345f0cfc6eaa8989796d1277218ee3de31d104538c74a801097a426717ee57ee3e674100e8d0df16d8441e3a3a1a76e1834e66581eb6d9ad9fff1824cb0ae07b57698e764842cd932c0971e42c47420447c26d1484207c7e8444c16bff90c416807430eafaed8442614e71c02aafe2fb3ef37563d337bb231de4f5b5a4926ea81d91fa9f5ac8c3bc5885a94302069a501310a93934594f4d307e86678eb2ace844fd7413f45f8066d5413b14a0df794852fe18df1f29ab8c1e9d28accf5585980c2320c9665a90cc5092d2a8f0527ada2b075ff126d4097d664d51c56428474584b88fb213c37db4782b09a9cba58464362477f1d3129259d59f5090e4991f803dbd3623a6e8dad1231f551fcc81c5a7566f1475a4cc8bcf1dac9ca0babad3e99baa4cdf6989d3715e5010d0b465c6829b66f063470d5564d7ea50f3a873b6c7d79767fd79bdf9f3aff5eb593b0527b35d340ef4cff53b8184a203536fd7c24f224e23e20b21b6c2622350d47b57b9656bfccc6d5ef808f3c4a84b5044202dde6eff765a1c78ce0fd7c1a4d31cf1495269a69dbfbfbc0e9f0679355709717f1323f4dedba3940efd3edc637f95d504ec7eb8af0aa2bfb3a1c7f3b383ecd7a255af8f9ab1c7e3ef46a4fe7cb7ff38dcb46ffb180f49b059a5e5f06f3cfb3730ac5d19f8372363e07ac735e0a655dc773f3659874d9e4332c40664883d8e215ec018e200c53025f46930a6d4e87cd280cd2735329fd4b87c2e1ba267d0e241b2d4736b06097fd26d2a20e061e539d85986a519d6b233c35250e18e85e68a521637fdfddfc99574a57f472110e492d8baad3708c66eae084164c6ef5a11829ad772ee5784dce3d727ac6de31abaa8eb7f569f8e17ac785eb0829eb9e3098f5dbd5d139e4f8831c41dbf73490b3a7cd792f61f3864076beabf917a0c2b2877765bc8c37921e7b9aec26421bf3edee5e957516a9fa0580fc3d2be40ddf9d17f97ef39d631dd3c8d8b2283a20702284b804bec5cc403de094a563e4c6144e7bc36d63d00290a242c044f1541e7f81657c8c69b929555591e48d6fc102662aba80a9ad187bddd1a8ae7e650e8dbe37f458306bdd66dd76776566597b1c979d75a5454b5732a2a87b839995ae3b242813d02bd4cd0a009156838f07256d5ff55d81177b62313f9539b97ce2a8a9df692bab7e3563c7dfdfc323650272ed84e9b5cd65071a39e40de6a6f4298f7c1dc2eaf063122e576da1dfd22ae66cb80678a2e277ecfcd72914df7f2edcb60e38188b293082ca8ec7d32363c10129f0164f0109cf0aa2a10fb54e467da1f70ed6dec4515c950f8e4f9aefde9d6919281a601747dfa91b423ba5bdb1d6d864532d4b9a4287bdeb5c6d3b9f156615a49e6df8b1ca957e9bec6db99c69b8c24b6860a0720754de05528da7ac80dd25ada1fce0af747b731a534404c136d30b53c50e6094198160e7e58aa88d36d24433bec98bd7652bd77c51e4b082bdd8c2bb19bbf941aac3835c8b2a278cb20bb3b023667907945d3673b563025db4c45d7839100483a6d8efc7b2e76f7c12a4f1261bc557880f04743b37def3aefb57fff770e4a88cafb86ef2ca614300e2310e94c85be1fff14b84e406e899f642fc160a2e3ff0b0072320eb1bc0be32cd62f1998c15d1b9883a73ac27dce7b8b03d3f581f7f02aa8b42a5a711206fa4ecbd5892fabe24d9ede84f861487d879136359aecb929149a26781528636ef27493901f24b9051e878c091f1f34858d84feabe86566e12ccf97cac5effbdc2b057f689db65a2c5735ffc05f7fb3ed397e8efaf348481ee0a21939879f23b399977aba079a3545253d96b6b05d65cc937ee58e7f404a8060477944090a7e1f5a9ff454d873cf8806ab0b8a58e9fcacdef73cfd6299b73e475ac8a86a6b4f173fc6cbb1281ecf5ebccda0817f0ccf4f26cb41d0b7bd1f387aa87f0c9e66d901d7db94db43122cb048ca6832be13c9ce0bc05f1ba190e511dc115d7ca15174744d8f0fe057924a861224f98884e01c20704606cf19ef057b05d5db20eb9ccf2696258012656d6a76fcef747d9f945dca233509f8c00c70bccf828ce76f2cbda92a99e4048a1c045a5d7a01593fcb90331997e841c81226e3bd400ff9e8a5049fe3a4f3908804660b7f6d24792892fef88dbe6b5dbf81642e12c3f8be47af4dd22a334c2ee83500d228402015f8670f015da4a0328a1f3cc013b588b212775bd704267d3ad12ff22f4813f3bba055815a90db88c2a60720a35483c3ca1c24a6ce0008414ddebb1c27e3ffd0fb1efcefb4c769f983df1b0de7ae5b7f3d6cf5baebce5433aeaa223bc01d11eadb993af633be272afebe974d52042eee345f3e88369e22d1ea87c28d887c8efb0c8cd9eb7f0ea4177e31d1cb230faf855bf99d9472b0ff934eafaab23b5d567e57c6d5189b97fd7efbfc719b2653d01fe76d83b6059a8c0ac1b96139d37409788ed355875e39eba41174c2e2818efbeffcfea87fbeae5f9f06752949ddb7464d351866e623799d767312a2779c6e56fbc9ef745cf91d048ed23cabe41de79e61bee6d3cd5a0d3fd6d2304365fcbdfc6c5551f8c1ce9bbbc1d67b47edd07d7babeb8f3e9a9927dd1e4ddd8de5a330be0e43d624b1c45122e345edbd9ad0a1d64315e8f4a2e486b738e27f270ba738defe7b01792f7af795d744dbf4e37b2d7914001d44494f6a92c212cad6c9a90a1cd6c5d9553bbb5c5a9ddab291c2483ea429b8234e9d4c0ccb0c7493dd45538817752fb0a6e18dbf6e0f87ed97ff8fd71f646450ff05e998dbbb6a9f38e2068dd38f2fcfbf3fbdeecf5bb9140fdfe44dbabf46fb76a39ccaa3ba70f6d344199fcd1c6f72142c584cfcdbc9e30f7cfc39447d18c4b3d719114af9d95bf3a6e86c2c2af2a104941ec89bec613292818b4e83b8fa9d01f64d2b6b42c3338f3fd46345c43f5182341eedcf87976e583242754efc6d427f7e1e9c2715b9de3e185443f3704b0b7724da515a25409f6738d387e229d75d17a0903ee23eaf8ae08c48b1da24f0442a40b74485dd2d15cbc52de2f471f7bdbdae0f6f633f8a8c4b52cb8f0780f28d00fd4a301674b0c06bf8614f8add9ecaeb4ce255a008325ed4ad6cd6a6ccd04aceb952ad9939095c32a3da9cd86bf9214faa344faa33259b92b10c82800342a2ec3594aaf802776dd6681c9bb5d94bbd0ce4e115faaf75c00f3a53adf737260529ecf4de24e03f932977fa53d2ba9c1adc92fd28dc1adf63674ae1fbbfc79b2a97de146a7bf8e000b1ff2cbe6da95a3aee5e5f2adf2e29982cb46faf2fdd80d68aec4ee763dee5a3ce20d1e097699757fefdb12a8f9aec5d5a092fa7ff1bd45344a063b450bd6ebf3cbde9cd30ebc24d991b4b3b6767c0388fbc41dfd1acb2804e62e2e93060716c6488871383e20583e3994ff1d013288a9a6c509687d0add3b80f4f33ec88978159460d431478bd0f3f0054037aa5a784d3e1b657bb043108f14ee415fd007f5c7f117526a0fb1e645b7fbbe3ee3803549c2a5d504ef1300f2aaaa09d2695177ee978d52fece10b685ed2acedb7c0bb1d04ea6e7e614f45d9dba7606b7047e1e816fea84706f5b7cfe76dd65464ac43a12ef36a1f406ce4796572144d29f8adc8b81c95e5ef58f067200a51a570bd3fc5fb9ef7f86c525956c0818c2df1588d2bfc243c210045ad3e571be2f5daa6d0e96c32819daaa44f649c5435d0c9b206e94bcc47b0aec0eeacded850b06c11c43a437edf23745494dd185b8aa194f833e37977f76c6fa7a31caf4c002145c8a6f06698b0aaf36a8e7628b4837d82108d75ec65543216352fbe70838f1af7d415e341aa555dbae85e3d5445cbcaefdc7af07424a33a784b3b65a110bc1e3dc39d5bd1e01da72c3b5d6c4341883df838f310ee7a8cd86ab2a34fde5814d9f3cf533a2c8b7b55c040c05ded892ff6be379e2aefc29fbc3acda7aaf231f3e3f9851deb44fc3ce5fafe48fcf4543494ce832afdcb06d5c5637dddee5f8edbc19a5713ca2f8abbd2933b93f3cf3e2470defef24e5e523439a80c75a07f6f270356bb4b9753248d67c3e859bc1eb75ff4ebfaf98fed58ed9c4055eb8d759d13daa61c3620a92021a1641f1b1e8f8707dd095d0499b80133917226070d4c3e52a585bd1f6fa8766479132fa8ab43a965d1289750c570770b7b3738aa926ec453b672ff2c2be8802c6d7430497913834efc8562c86949d3581369e9144513c307bae43036cbc97db3578c877962d7cd20b69a943b087513367c27e1649496ab565614c392bff6be0715d49990c1d8cc6de72f18cfce8e27d03564c994e25f17b825c944303d710fe4fc1011f17086c07d9114417fc9dd86f80cc2ecdc330969cc56cc2e846b9d13eab794953381af056a13d713d3f0148ded0fe181728d932c286f2a370269118b577235fc1594b1ee84020a9a2f52754038b67c5778951cf72142ac568cec9af838fc760724c795bcc02f7047d5c4e72845392d2f068ff2cbfab01b417fd24d7da9f3c81847956f49aecc1e8364f5f5c136a8e91db0f5591dff5de8bca4bfff167551713352fc3ef4cf1225b65e3b5df8df413b95e1effee0a586cff36dfd79c099e150c86ce8184d405b7cbb4167a2c2cf43114171e47557d1d046d816408014a498b46a80be345c57ab513194b3e623ebfbbe285337d2a96a78b2837430bb05ed2798d0342efb5b3409213954fda2b3d2ddcd3cf282f7bded1c74d2b6dbbe6d07a1e05b408eb347d112d9f77914913d8a1fc034f417516750c48f7814dd29eb3e8f15d151a77f3b0af7cbb67b1b9227d8a555ceee9c5de2128f55a58e57f7855fd6515dcd97edebd371dbf460cfe2f62093dd69903581bd8c1a3d537532f21c427105d463117c7b40bab08d0a39434456c803a7e4f17fe44dca46009f94b101145e24c15717d72605e1254524995cf30c28a2100ef13fe1fbe2af6743097571a9d1c826b09e85aa8d3ba05a9650fa8afd89b7259ee28d06d84bf88d84790599e91a5b49798bb608eb5a89dcff08e482bf4dc245e06fe3a9019a323ea30f60f1a8e075e3f6a2e618d468c190eb40ec96f3ae455a3d72b3a865f4e04313b2c40ad22c218743290a4aa303df84c9e023b630479115f151922340749d68e4b4b1e069003b1adfb975f2221bd888f24d79819f1ef01ed0cfc506f301f1a6240f08ac64b251b7df2e828221080171e53e26698a93d1e07c833d1192323e61cfc7b40d26646e7f49fc3349813a25e147c363090938044f00578047d1a1105cead55310eb0816bee52949d499021ab39da9a9c333cc59242976336b3f3429dc2e1f29ed743e6ab7a85395f069206d2e1a5500c8f62654b00ebbc21381c780338970bf0eb5a2885252ed633c1935e9dcc9c2c11879519530284c284f3c5cf87107b197c0d8504c02a35eaa821b4b5afa57aa5279c0841ea785cc989341ef1a9e20062d5fab6c63077466ac6c219b0a7a23c25304af1f3e74b85b672c406d3c8878eed9720050b19808cad71181337f9dd06ec4a6bcf0644601393a19a401c4cbd11f0440c47f731f80b203e34a38079397b166e8c4f9972368071db86241b307b2024468d7892f936441c5e251493b305cbbbee0de46e3a200dcf85ebc54e146f940183440075e0d5f011c9755485d903c74a6609a8780cae3cc531be15827b7e90b56a0e8b02d49a1b0036b00cf54fe2538ba969d0b587ed6ed0e7af7549e9ba076bdbc94699685bd2322c1eaa4f9cecb20e516d8cc0d706422815c83bfc18f3019a420f9e602ee941f38814cc056dcbdab585a6285df319a711b99a42d489e4c0c20081ced1c873f07ea5dd7c4b227f38b1f65a74d54fe0381c55b822c3b1eb3388d9e8d7d5f0920fb53007964e93dadff785deff5dbeb7694eeb2c708cea8b0d3e90866a9b0f0c7b0a0a38e0357989b935771e78e619787ef2b51a94ca36013c2d0834813295ad0f03532fde3d3f79ca6b74f330a575d398f2e1f9f67513f3acd63fdfeb38c22671796f6d3eb76f3f6745103eb2cb8283bedac12260a1d759e3d6c54d5e5c04e2d07eaac221fa7c6c71dd69f7f2131f4a313a61f1870039b8d2d0878b0319ae485a3c3a4baf458ef83a99fb2a91664e8d69d428a64d90d802fcb87b3b9873511ecb9389e126fdcd1d0ccf1900ddd4c12cec3bb7fd97c1bc1a7a40465a7674403677235d3529224c8b13d7be03b4db472bb748cbb7831c7da65f5cbd7edf359f1ef4645d5514f0a466760c123a2fc589764bc28aa7c9fb3b02c8a376c5a517cdf474d714ed12ac17ae86f6e918edae4b40c2002acc66d0cb81ad81236359972a3b366fae5b05bbf6e0714a740a218cbf7e109808e94d97e00e83fbb554b86716bc850d9889de6b0dd092d2a11c8243ab0e03bd0008969501b5378c4268a6f2eafacdef70c802a545c0505056270fade06bbb9c2bb465de28172ffce074645e8606e54dddfa237fdf2d27543663f1333e88aa09797c535609bb48216e914dd0a62bab0c3c0de107f2b0b0e1a9972302cf307593275494bcc9304c504365f187e514894716ae1fe8d8da012dc2059c3e228ed0b894da6401ace41204d12f4804d9760f695760d4113f8045391eded2c40890cbf15016d272c2401c6974d467ee64618c556067b3790468c6c815612a22a9bc0e5bef3c6239c5d05a5ede11121970fb62421394be00586cf42721f214a3781920aacc7dc316c0a17128fccb6be11a3479b39a58c59ac42237db3fe6c4282248e2d6f2f8ce4b86a2d0844240186db0a4ea3209ccf802470fb6233822464628bd0611af2420c85cef1e0d5742635867b748d2b6cf07b6f2a18b04c34b9a20b11571150500e869d4ae9635ea6f0a633be1c60c7e17514fb2b80bdba340bacf23db9c20f24783691835c987dbc0066eec6684f70ad9d93f15ae1ba150f418580f199858fdd5671dfa50c257b19e4569cc49285d39b9a948797a197786cb11f51fa476b812c490bbfe18654e1bd4ad0bd717c4100289a61493db97602171f82bf7080143c8c0afe6e4c6f126a56e3666ab1a6643247888e6cf0d02c7c719b01c0200fef0a2216dc0d2129381525626aa363512a80c8ba46151188e5443ed45751e57415ee359c700c27b83264ca785b7d1b1814698d6aab66ef143578a5c7477dfbdc6db5d0ef4d15adca7f26efe19e48a5fba90d7963156e4372426e487322437f1fbbe1a8972f85aea2aaf7f20d5ea742a4331522aacbe80e2ac407617b8c607b94d4c7e56e0b551df71f40cf39294e9b76ee0c8f104a2c50a9f96b6a2ccaf7d5583c5252f53a8fd1779004fd248f51bdde5d438727fe4791feb4d6a00ee13fa44933189f8bee1cd37b5063609dd62f7e2c99d9271fbc90d9ff3a7ea2f77d3c77ce7f2e4bd245c79e893d82229ae76744aae647d98ed0199f4cad99fff5b761959f9dc0185733938d1bf7be4ffd4967ce37bf20fcab8babbebc7cfb63f7fceded022b91c47947c1318abd13b7eba09b1808bf923ff883d5f7462d763abcef61b8d32ea0debcf26701d082c86668748a48191b57c1d027683a457386a54753e96231bbe05bf869d21748b4114d098b4e23b7af8cd3ede9e9ab05d234583aea9883ea04d83e9c31ea80f53754ff49e1b99e66999e79c0a4668834bfbcaeffd0bbf5f3976e3b63d265138599a108697f149d2451114990e9627320f22f2418bc57d27855f86f22f954128ff181f890a448c9b1fce16f78af22e15bd9aae0e3e4a4385dc227e97d6f0150986b08b586386948680d09d210df1ae25a43286ab7c17944832a9d644d7ea3225724be7a02a91f3e4e7217495a8a4f2b3498dc7c8b0eeda4c37fc30be9f6ddfedffb3e0200f34b4ea5c9eaf890a4a7db1de0067e6bed47f355959e9697edbeb3f4f4d5c6fc46ed61913c2d6a8fab1f04ed81913cb1f9417669d1e29a3fd5dceb03e3fb46e847e7916b13b7855a63e8d49ad3184140eeea0093c128d74721bc8cdd7e74f28b366ca5d0cb3fb49992549b3bae6f8fdc16df55bba9f33d4953a001f8cb86d5d5def98153e96bcdfa8901f6d7508a9bbf212566301de019f94e3be0dcc1538de43afecf4ba0ba3a6d92894b3e386ff853687c79458dc71ac034c1f31c4ec0ac13788baf159a2ab0a625eec6759a6f6e19b83d716388ad20134d36a9cba813927c2552f8979ac8a0b8e8957ca3c820ef494d34eefb8d6722411cafca2d8f4efd8136fd17e02dde9ef6676091150a75746f1206f41636c41f3bf0d5775a58d7238074414bfa169a72249a722494909a80c80b6cae48b6f1c07f85f60effde489215418e684aea310d1117e1619f1764e8c1085e50599525178c462a4448103bc163441b4d6027d70753496812122afe9584428357ce8463341ee19c22acf9086101a1892810cc2d6d92887cf2bb471ed23b72a61c4df1f3471ea607c965b449a5a9a6e68ce27a6702daa84d256ef0e68442602b987a494728065232218b282e340c296d0480e19090f6b5f1b9efaa491be4afa18e08c549e32b0e53fd614202df040f92f175e10d84ed9cb8dddc24f8474083bcef4d4daad571f5537a38e70f83f9ddff165404fedc34d699345617db138d76a18fcf98e7169f0ba5b22fdfbe764f9bf50803364fda3c11f0a529c9f74cac890f0ed04421772487cda0cc65671cb233f8d24ee3e577e99d6dbf3c9d0c712916746210161ebbc5abccd30a3f9c80958bc74b7c802460e982d4e7216c58d886cf75c91f2016e10670dd082a3004d901794e121755e7cb91e46752fce48cb52842b3e91c5318224fb7ffb3ddbc0dfc333723b384553b9e80500e789a41b42e8f035a1e93db1a50de58e55b3c2b68a96f1d4620f340da4350242eca488f02e8ba886839354feff3b154d45c05fca0179ebfbcbc5ed4667b558d2f4b82de553669154d929d250a3ca680a00dd1ec4ea2162222cb7fb34328d0eb78f2cc218029f2d2be1308323690d24e07908a9643ba2601bb882621f726fc5bb1c5df8b49b4448ad61b00c3006b42e5649105de61114d0ec1f0a333362d0d65554dd3c54528261b89d7253a88caaebce84c8512b4c371a85288009c4521a4b3a52389cb5bd77f15f5cb9e97d8fe3b7caf646a6d42648828220a838be0524e846145e337015ad649bfecb89336b86d858e765ef53dd89d3a59488a68d3fa10a748a17f28474da6e6d3b7cb06192deea08caeb41082661b5d7036ec374601eaca889c7a8f67ff7fec427a91a7b4d378cac091ec208e812a354fb33571d4075f849c0c60bed87cc8d1683d6ebb97afa76593dd654b472253a94b7c7bfc63296fbfefa9988a1ef10b32560298967b06ef6753e13d192a6cee2761a834d5adf8e80ea752d1248f6225079eb70df22324582d1e49d1107bd602e842f69250e68e3db1549d60291aef77944d291dde901f4d0da70c6303dbd7f561a0c603c2ad82c416a08efc938015c5a6cd4f2d7a1d4d766b5353e67fe77098b24b61dc73c8f5f90aab0c79b1286643ec02cf393e2daa6d79b98cbb6a5cde182b80532fea36fcf3baa062352175309b6cdc71df213b09ed7a5f7431a94055d9b19f5243a7039b6051ca275067928877eea8a2081e23f191460ffef575209cf7d30113081b0c35effca2aec2ce1d47cfe2dbebcb995a1e7adb6cfd201d8b02210ff0694ba1e6d39415f55e87cad46028208980bc6336a9cf1c79369233db7f308d4084a01bb053fc02a75bfa4d3288906cf7b25a3a295b4179b416ec59821e1134ee5b0a1c093007755f36c59053d4a656138270880071e704c25e9c8614290e44325224ac1d0c51b07e60e4b3f9e64c594c395d46422158902dd0c46cc0959639570d9aecc146e24d701f9dc8d306483dbe76c24a5c25276c9d28f503598d86a68c3b905cb0244ddbcde56a6a116bda56b617a437624f560600b212728790847b90cf1235afdfae614c1b2a5852e53661e1b498eb4190939b660c0882d89d80c4a9a97a87a4f88b31f02412cc3410c2d087f2f2b4657009c24470bb1e52d84102cfdc93929ad6227ae517d30d7f3833d91181ff19c015236057a705346fa499bee2f2b1cc487d8ccf554303cc24f107c47f7245b0b1c07b56201e93ec2f204721e3cb71987dd8fe43948fce25225195b543c57fcf956295bc1abca3d918b7fc58bda1b836a146fed7eaea4c66071a7907bf88269e03d67dd5f7a1558a9bb8cb26c37e04865a1e5c698860381d3c414757b06d66fbd8b1932d2c965500b75294e5e341e8775c3f856327ca4c129bb9ebfe1e3337a99a72797b8a3de62cd43205cd3f25134e75ef8773a5bb3671c1dfed48345bd9eb97e12a68d85ed4fce216c5b043c361765b414b53944ee1db87b5043521f4c5d8a0fec7a6fbf665ab5f5fce3110e56f17f5cdf83c032dde47abe896444d006dea0f1288f7b93a8550cbf76b032c434badf69c363399156e179f7ae95a62cc0817e66c468aed152d1c08d724c0f27505b03da97ab337efaeaedcfee3ebfaf9cb90f52fa87a3579e57f2e79d5c8e6e94c367f8602dc95baaa708edcf58c75823669cb904c48997808dd2265fac924365d74eccb396f15559eefd4da14db6ed0e6a3d37fa840ab93fc876d9a6dd2e562164dba3caa38735751e5f73d053543b9ee17eea86fd6fd4ec31933a2d5b7747fb6ffdcea97df7f1fc096aba9e9d81094c28806d2b45c03ffeb9fa78322e346ce9baaa00b85d50845fa2583790d74d16eed4d4d49c94fc162f3df28fe3dcbf4a3d8476c32173ae15a2794b6c456996ba3d8db4d4eda117b14ad060c843f6c894b20cd91181aecfc7bb13880c06283a0884a2e94f69d675b4e8a54603c9b5051e591e35a78824e4b0feef8d8f748eb1dbf22cbef21a919125be141dc431ee1490c59bea6bb44af68a96d969a1614585139b1d02d898df7903682f28cdcaffc07b4018096756bde2f8b929ff2543c62ae169594c4fda3c50f0fda83de9517487082952032e3ec1c38afb0383b2ffca852fe9432a0662ec332715918f0c9100aa09aae2409ab10006d91b73147283f8189986809745d34941affdda71e7b2fb3790ab4c2d68c529902d3984acf9cc72deffbdca1f229659ed79b1650720d4120b69c6b2b3eb17d5e504e8d6ab9dafb60ae81162dec962c62993db57023fff55ac26352072fa0c25c78e466909ccb5fad74863d66a1c94fa4c091854ea27239d79e074255fe5eead7c0c3758eea7e004b092a81c7f9943c5e8f05a735db3c208cbfc597ff7e630928ec2f383f5a02c0501e646457005a51b98360be4363d890c03a21e846df13be0b4e1ba57c30ffa859d5c4ab45068f7c2ea7d5a224d461a860accded67abea603f2c4b88b2f272d08016ece85ba7a2606fe065f01ce3277b8a7d3af8903c3dac53cdb88b9957303837981e419d8a9d9cd8ea51a647d2bda9ee4a9f3920c7f3a3b4bc00f0a794e547d35a08a41aa3442c2a1a2c8b82dc1dac66e02a8897ab19d0f2bc9aa11416d30ff127e5f946b09a05f14c6796b324d594721a97dbd39b5bce362daadade915fbcbe552c19c6c60d192b69d0c2a7c6d42a605c68cfb2f6c73b68c0126d78cf420c2767c917e52c4749f9199190afe1855c65b24b0d4a36a825ab6a09084c03246d7bea8b622c391ec455aaf5ad88fd5a7473adf2e5b49e1e884f353e054b21f10ca8f2861e7c787b9264fe379e244ea8404c4100d1a3b3220540d5311b50d59c22a0e03680732481973d6b1e2318a1b1ac8ba9c529f9795ef251d0d7aff958f28b4981b0e8cbaaefb1ecb323e4b0f023ca4209c33b4dc677a86d80a3f6b61a1fdb1f39fb36ca038639260d063a501a9410f6c2304f40b0071b30da31dc33a27fd88fade0db6d352e13c67c31ae10467d9a6ce218f75019ced8c72ba209a9f2d877d8ca81ffa6841990ae4e8148a739902bdf119a80e7737d5b6f638dc2a78025330c62acc9580a1868ebe987ded4ca3d6c89d4954fd5954ff5e0d3c12cf87d7d789b2881521174daa958b34a4d349db2234b2255a67c7373c72cabe1c7e33a5dce08616ae17e45aa0a6881ec017685ecf427d46f19a17e33cae7c526a8f879699676c904154cb9fb989b0a96e89d4b61cedacbdf7ba9671135716e749f3a2a2314356ae7a4e8c9f559a71965cfa503658feb6ffdc19d8e7472a09b3b6e42a1abfad258090a4614cf343c34d0621303ffd611aa0c11d4008e57dc2ecf69dcf5b0bbb6e72415402af1be90918937cba94e5a494ab492207f35ef756d78f52a59a33e26f37fef8f5ed95b272fcdbb8a2a99ecf8375d3fff83b32ac31c6bfcb75e682e6e36ff1cd61e44bfaf5ea1e1ed797a24af2214b8c75dac0fdf3e1f36af4f9f7fa8b71fbd721b921ef528ec919c127b26160115896efac8d63abb5e0fc9d4c42d8ab245dfee508900b2e590a09b211672c39c2acb7667d1017cd52dcde7a5bcaf614b865371743c0a7c84b491ad3568d8bba21b69ebe87b5ac2376822c2e96c49563584668baa73d7db77152c863707ca4f8dc23d79b6659d49bcb6158768be6c0f3d2287fb204b31247d22587cc19c20aa4551be1a6cc00593403c74e20bb101a8ab495564e7ff55a3f3a9db0fd649b7d3f1e8176935af70330934c4a3f6bb72f477b1d63f06482c8c124417af5675f8220d5f7879415695455ae55d39a2d037a02cfe7c8ee9cbc139f9551abd92b38efae36d982a54b49892399f9d252868075ad154f2e60e41a35553e4cda4637301a5de05c419f2a51be52ed256fde776fb75807899e01216b74271cbd8e424e721e78dbd48fb2b3700a5c9c03710aedd00aab1afe9bf4589249e98f62ee5849a02dbad58e28094fbfbf576ab223fedd1eee9f0f61fdda37a5a9fb5cb37292aa671c5f77d5179ee83c37de7e429147ee6f849b75f1068fe2776bc33951479133b7011127246df5986d48242ed70fcb8597933febe9affbe1a7ffffcd55bdf1718095b0cf8fef08974eb93ead6acacfdad38fad43ee7d5f6bb89f610e62947b6f6365ec20881541122c7147865b02bfeca030124940d00c5eca6a98863c737b41f72b326e794ddb4710156480b2f3964be2c59ff40c9f814143bc28937f30acc10b819bc2d1bc9d180832e3994a6781d4d2999adcd0a9e1eb627d8ad8d1e0156a00dca4311a8b300a0f997141fc075b720b8738834460d23d0a402682b8c9e089a58a74035e9106873491743ceebcc2336b18facd102530be09c883e217f9ad9e10c3e98481e159fc9a494d97f4d2891668fbaf5ccb8e70ebb331ab126c596e5ed11e534364dc445f3799a6a610ebdb19413d04315a4f4b3799cae9dfa5a04745e7dc19e8b631e896dff0fd198bf5514e3544513562ed4864cf9406e6609271080f73d055e976f4d8be9516345f3ca47df498e3a142ade5b95be8b9f348256c4a4db95a9f31d3f1e15e87e9a41cc5e76f2907b6546ff480776e6a951b9ced4d05d6f4c6becec30eaf379a3e1fff2f5eb3ff597a7c3595432287e72c7b8f3ab5643893c39445527757e49d99da6635ec4d59db42653b2ff305f3afa0e1584baf0475d26ca276ea27c325e0f5ffed29f5fd7cf9bdd80e82538de436bf4ebb1882b2913b146d810d5c547da44e0846d59128af752a615f1f2834687626ccdbcf625b43a159edde0064016025488a29c91945d8b66467f5157bc4915105fc15106e433b8897de0dfb89c4caaa6c6c8fffa7753352efb1dea0ef8984cfceff46901f452581453fb691be8854ca03cd21421050e135777ce64eb3a76dd3ce2b3193d25fd71ea9088b5d999e047745a606d4f86dcf410de3f121f6141a9945254be83eb1970eb638993d30da0fd0282f371d87e17c7fd982ad214be8b401d4a60088b6ba8d958f4327724776ee07fa70790e1fff6dd1fdda42b5de5c6a00b4bfbd967640221d376d1740c82ba0ac63b0fe172a4f092bf1c9cdbe773000f717caa331d273be14656c1b3f8227f25cf3c9ad042ae339ff089288d009fd8b04c22b7cc2695c8fb75e667110bff3b3f8b645cc19ae693842f9041a5f617d6021ea7de10d0ac8e4d1ab6136de81c26039b146e216a63d14b223c278129e28f5ad30119b6ca1bbbbce376d9a49c967c75dec553c9d3c9014c5b11d5599f4c8845373d9a207fb82cb8782475e54eba602c0236d6019a86e43292c029e279db78f9b0baa7e7ed99c2281a72883ad49a17dcdc07137c6d6f20722177d9c2b268189ae3fb7bf3bb60281404d425ddd7cfc46c7274caeebcc9392da1eee1a152b666430cc6d8e9de23df7b964b6449475a4b88c8539b56fcc0cfb3a418cf376f613ea2aa2b27fc73d543d5b47a938a9f4c4759a73c68f3adc338598ff601ac48ec71e4c113aee028f7edaf5ac7a3847d0f3cbd0aa4772608df969df626973ced19cd3d7361b9bdfca55fb7c7a7ed093a06f2a06aac954406eed39e947b2d526669430278f08d170769d85244c020f21a989061f631a04d7cafd9d48b4157e9f46c131b1395b732fec5f728432ef3ad72c7616d0adc18c8499d4fc65b40106b7690c5c62ac24fc289b01fb5f96e6ae0552f9cbb9c87873b75b930a8a015797a99535783a2ccd51dc489e27ad251081546050b5bcd7f0a6445a185373e543c3ee8afd932b92c0f1c71825aa32bafdc85f7d7cafffab73361dba725063c59936afd34ee15995996a6f7d68611540bf8c7853c322993ad3cb84d9b99684648817f2b9a3e606ef592ef4e46130f8a3a3ff42ead0c0f63d29b00dee1d4a4a6ac331149501bf157232dead3fe0509cb8afe94e9008f850633b478f8e9689a2c69c2c1e390b135b54017616daa8ffcef3c46704395fbd5a15f0be06ce7750149de8a2a3e97433f3b4bdfad01dd1ab95f03f713af61febca4e0ec6cd1797011733342e65f303cf1a822ff1bf76de0bef592e40dbcd69574ee11d542d5d6a68dc98d2d2d54671c7c3deeca5a3bde59236c1476268116b758b902ff3bdf7e8bbcfb72fa47fc10f8eb30dc3d7d1a1913140c39a7a80ba6d4c4e37eb28c1a97f306721efccf6513f8c9e46649f06c999a64ae54e11eb6529ae306ba79245d77d151b02390e0b45e3791871879874f6e637c24136b3211384857097f39637d101a359e4ec2a496f3d9860ddc6f958ddc58e3e9cc62c9d6de92cdede2adc304f36f7c91e29c8aae9b58b26c48817ce9d4012ef3bfb31dcbdb799c3e20cc7af27893eac5544c673b50353c06aed71e9e1b9faeb7633b272621df1fdb5e4e6cd98b097c18145dc32ff0e37415881ca157844a6563d98a3239f23ee48d436e34ee7432c3e3da03df2503ebaf7dab1d25e7d8b9c911e08d1cb5efa5fbb27dd59beee530a85b9a245c66d54917f64816ac9061519b96619e2569c9f39abd7ee7ec4c7de8a475cfe78d971da21aa09e442641e1d287a050fec496e8da6327f7a7fddce293aafdc2d9131dd940faf1ff65ef5f9adb38d66c01f4af64dcf1c98cfaf29d4305271850234760742730cced526f50540832ba377ffd8d6fad2ca0802a8294eddddd71ee095b0058cf7ce7f75caba739de106096119a1703164a3679334c8e988b6a08b17785dff2b1b828c968fba782e4e8922b4757cc4df742e35f9f2ba225efb0528e0c9299b2282f278eb382a67ed51d024b64fbb5c934c3c36812d546af355bcf6b973d300f17f28359d0102279372202a234046caa5c91c09c7bb0c1d491cd3c44a8de03000b913b73eb4b440a718460c3b012d7747b60e656b075a43f7e8830660d4410d7af905e3feb2f535c0e0f4117f1c26991aa0110c4287139da36f5eec87d836d5a74d33ce0c5aad22c1b0cd0afbfcd60abfef414d151551f00a99a806ca9b252e1f7eb73b5f2214456ef545efd3388acd945f04efe8495da021db0b872b898b5761e6292efc2928e4c44d8450000d66a5dad9b610918b81a839d9c5482e8ea68ca09417c86a17c3aef416aa11a224aa272d15b3d7435b2df193e005cecfc0d8bf04874f1df32969e55a82bb0a4cfdaefd375fb0d3d13018a5f019e86ca43a55affdf34173da00f011ccbd81f412fb2cd1153ddb03784ff75e3f36a281c5efe73e6a71624c025a7ca8e30741b196e758ac585b534f508db334b47c7adf48190bf890457b0db13ac82468e1efcc9e88744ce87844e08645a881501e2c3c4a985cce9524937d07d1f1561d985d8ba8901dba527e85584deb5097404719689545e7c81be590a73c1424f964e3ba097073294d3160d2772cd0f902591865b5d35dd2d040c0b8292347dbdd7e217e6124620ce66f20e7586b38a904abeb7f5d7221719e0314c2410fcf04ee2c90d95442a8c2664ae69430439f036f4be129c47d80e00667d75c5bb1cd05480d8c57bb471699d43401722d455b6eb015e7b04e27b57260c5bb007f27a422730829a481f09f1ce8cca86a88aecc2581d9483c29c4e1b19bf1f1f2c006f55b205d9843e53bf461d5be9c8e863df61a2617ca75505a87095a0d291c9975154569064b5b9026ce33f1d8bfe2819a0041bb9ef2741c83bd3b2ff0437d35b2ee15b60c270834bc859f8e5ebeff36998fedf349c4fc3729e85c26948b8ddd2380f6b9f87723d0fcb791eb6d93ccc7f611ed6ff85f3f001f40029432a2a40e3f1001f131211711646cec2f8d159d8ceb3b07016f6cd0c93e41266b3321f60dc851b0b1e7f29cc12a8044aadeb40a97aed75f88df36bf106172eb3a4a2415a614a792338e4654610a13bb93611e845add4075573aaf3c5306cf79c7357ea5982d04bc16ab6223964731b588b8700bf7c121be263464e6b188b13559d633119e4e80234e3846c28bc6905e84602b3038008aee27e46427235224cf42c403cabde886cca75aad03f5ebe5f9c8eb9275baeb5ee55b408ed1d2352000eb6da3acae0a468c3ff1976838faf8f139eadaef4f7f06c7bf2e87d8f39108f00cedb188e5330c4fc34c478c1bf7fd19f55eaba679e2f74de124e718c271b37fef5d98af5635e385ff352835fe8be279b6f74f5d767115b2e7154abea76b9a344bf7eae660d45e61c736193c90fc1a56080c68124ca66825943365d739acf914d8341305fecf8b40f858c0640612cde88a946100e18fe4a8d66bdf0c7e160f75fbeef2f0c3a0d86c8dd14134b6b931fccd501eb87dba71c7fecf6ff7cfaed060437813169458f1b6d3cdd4640bd7e46caf4076822e218b7fef5399ba8cf0963dc6644d3ddde4bcafd85668d9b6d3669534f698cdbf2fa6c9b696b050d1bbf12bf92c9f5bf40b4dad405f415026edf096eb99f02ff39af34ca4a4459afd760e2c6a35af9a68f8efbef4f739d378af19b7c170661116df14ef6f7a3ae2ca6baf25390072c0a66da1b71ae9e61ae5b5974f13c8dfbb670cba0ea79e5ce10016f82a12f4287ff7712e13c0f6645bc3ff93926fe4a5cb07f07636002c8dec85da6a6451baf703d5d0dc4afe0f99ae5204a34c955bfa9ae843d801f7366e64045bea785641029845a2c8468d13251ba48044169eba4a46427258ff6459a4c9d29d48572e477c657c28c556997025872887771530a87bedba7b3b55726a05072f460ab8ba5f3f630119d19b885044dad63e480ce726214d257078426605faf99c9c639f54c5097a03930f9d57ae755b704ea5a4fc5ab482b2f130990ca48a950d71932b0be200a3b499be4b0cbb7668a439045a07c63993e0bdaa162c8352585b445014859cc7af43b57a2bbf8531253bc9972dc333621a7a78325132c02063a22915ce81ffbcfdc4948212780eca6335985ce143421d574183e72455a18a908754adc3d322479e86e98599ec8aebe11114a1595923ae0554ebddaaa9554243f01770af069016e48208c46a410233db2304f5d3522f47a439813dc590477b2d1e57c8092125d8a9be6ea816c44925e9f33d2975b22958d273d6da35cdc3ab66d03fe54ee2cb843451009388420a662bc798c37a0d77610738cb884af8256844287a43c6d14e2a4ba8ed385239d272c003c2193cbb231b51306064caf46f274011955e0709ef2d0a3f13b9522bde1e7249006b1c1790411446ae5c585d2d97b120a3054a4ecaa9e08bf6106c8418d502c1380ad22d9f5a433cb34a69a12ed015ca7b0b18066354c19f03a26418149a8c0e0895d40465d32a8c2635b6923e96004d279393329904070057b29d3ba2bf1602722508f14dee009560da333f8775c293af131ed9b53f1174d6ba8f31758a03da798ccb0730798ba3156c9f7a4fa39d89110c084481cd582e0dbca485703971278c0b4a14ad05a37405b49d39664c458848a092ca8aef8d25211b10643570676579c10d4e04645c67d47e003fa4805532f965cd5b7846b832f585d22499049ed4aa54c5b10fe5bec986014970eff05a7282d2299c0110c8409b7c1a1bfefbefeb8214e88a6ac24437d843ef0240bd92b18bf383a2e449eedd2adb5245004a04f186d7effbdcb379ceceab61d377e99e675bc0fb4fb41b8a4df9f5e0e2ffbdd7cab1d80167e68c452a07758ff78f4c355d8d3ef4f2fc7a7ddf74bc84935e09bdbdb40bb53d67d07e621fcca5851617d028f98f7bda7db04d4c8dc60780b4637b4934ba96fba7d7047e44f630c77d403c094f8836bfa62627ed12485b976e4d8c4dc059c76d5dd74a2c9267718beca49072bb0e62a48b0b97344195d0a1d635cf8464f2961426de84093fd0f7e85abe7cbd5b95e5e7e4fe637c86558663c31d553970adaa8abee49c55c949af46f9936c9d1055a5b782f1738ae5e75b4d0e6b18a911f90288b313da81464b21b9a814085cf44983d9a472b41f6c283b8ac5782ddbbb1dd91541d3bae4633a0a7479c0c01c375852a4545086fb38bf1a0c28bed747d709615a291a25059d773fd05972030b7b3f644482350dfb8b781e13de02b8593ae405353a0650169e21f278c2cd41cd1ea88f38b64b58a45efa508a7723668dff4d8e842387937f054d5ff13407b921c49f118481108ca39efbb7bb9efba940cb555e19503447463dc72c5c77e82acf38569ac3055b3f76317832800750c06e6bb72dbceedd49dd9d89bb8c05618864b3870f52d7475fb88211149145ed203e6ae8a292a7368bf0129fe97cca359bbdc545c203c07869f3cc9ae8307e2ca900fb4435fa8f640640d2bb294f19cfaae4271212671e3088a9c03e5620d040832a08459e08c5de7a0cd647a5bddd89eee2883af700298e6d22535e39c7b719c72346cbc842a5f72344c7c7d16d7546d0918501cfdc2fdca4b1704f4ef4e0ac765243a2f275c6dd05f58967014171a8200f49be9e51697cbe86a388fe54cc24e1d512788f4070a587e0f247d1059b6ceb31839a573f7e04010c0a25229364386d7bf246f019228302cbb0452faf94afde5c76d74205857009233d88020191b0cf1460221bba2417295df765c97739e0a36bd127a043f70af74efd9aa72f6505454492e9a6aa20bba3600db05882bfa0efdef178f1702b561e585a7ea4279f010f8a2cbc683a948bf7a544fe6ed5ade708420114db07c11dc2cc5fa091bcdeb64c8d802834ae4289f68c1248cf11ccf7e1e1b5b5dba1e049715170d1cc8c8474bcb8abc7ed6667cdbc07631ab9999a511605c6fdbdd2e4fba3ce8553beca76fba1e00fb97e7e70bdcbd34d3461b9dec98aeaf827a73d50cf74d505737987ec35d07c3b36d265e86dab9f58ed398c3b89b3af4dc9926dc14fff9e9fbeff39c55b0650706c71161adead814d913157880b6a5830034da009712044920a2f80c8c9accf010a874dc1d96f2978665b02c63b4de7252b99a1f0a1c2a1df145173a70718907bbf322a0634056a4ac0f43b917e1b53ea4d28c90f383f70015e0af0dc3afcb48e5a2f2b26c17d6cb2b0977b4f76da30be97a660b4b4b02d9eb211a4c7435ffffdf4aa74b4aa0a29f13f8678c9378248dca80107e89ff7dabdcf548f9f6c705c3550ae2a1ebb6ec07ecf7b33ccbd1c2847976b9fe74a27830417b1359bbc514135cf1a698b85ff5c2dea7ab1c54344e1b09fb6bb6a35379634a67e3873d57c7f9f2b7b6688051e44f4cf468e4c1eb83f57cff1157c763d1f128e7f1281c8ff2e796b8acb3243bf0bf45530cdca2fae2c5faf58c88e29faf56faab03ec381788b0b4bee5937cc02830182682b82544589605ececdb2364f21b63988625cbf53c15b74e23dac81a44ee22c9395a5973c32c503fc772b29e6030f9646513b77e947812196d3cc9184f5e7ff815cbcad230f139993afa6ddea4937f7df636e98fd16f6f77eeef4fdfce4c04c584f355cf83c9fd8f46f019fe915f9fc5dbfca1eac4933f782bba646a9d96a4ce6b7e103b1128c8269d84ad217942c03937c9bc1a87dd7116a56ff276d804b89ae1d1050c697631807aaff9add4cdd2fe33dbadee1967461b4e6036d907d2663403903d3083bae6af8af5f2ebd38c0210142565dfade8d0b80742a26341cf95bc6d72a605a2b15c7803b5bf900e2e57aa630e441088ba195e9f030276f2e8c2de0dd066a41b6c72a788834da6f01d3050581780c48eb76406616527473a5ef4e7ebb36bd57490f77636b3d48e807552ad79df1f2d0c8ae299238cdc036ddd524eb8ce00241e7aa41e7c7db6d925188bf7536553c6144fd96555fc0332194252ad2c7b1cf6a30bede41dd6ffce672f20689023dd0c055f19268118474055f5e8d88cf2a87a174fb41f499dce2546f92444159dacabb266c8c80ea11865b4dad97f035dc8803d239235a1223ec9560b535c8984098dd981d1258e6e08938aeb2bbc5cbabe2592aed034d723d40e42e8c801a47c227dab0cb55fd80d1a743dd4c7a0efd7656de6f51952d7674f3a2eb0fad2401f105f17dbe872d83b7812e8041258b886f2b6f9cdd3f410684d5c98dfc295f90dd1769eb6261a252edce735db0e6bc920301d7635bb211eb45f5dd4b5cbba1ca73e2cfcdf3af1a3ab3a0be167a2893c4cf6280ce0beb5e06b135dad0f9968b4c5546d54af3de78f01a67cd0ca203a6fb48200cc1e9fa8330b135c3c9fccb21571e5427f007368774bdc5a470fb06ce58ec139ba80118fe98532ea0c3d39921ac1890966419746eb120c7a9c50746e26af43def9306a8160ce649e2d29f48af3f1e4829e05574c47c3e4608ad3b0d1ee47a46004ca5e37bbc275012fec01b64ffae4521b9d0f070ccf3dad69c8f808d3b2847110bb791465799460b29334bae00f4026cd7b987a938abfe067e1f0a07768834509234ce826d64fad4567cbb804978e96148bfd45957d5cbbd547173a4890383202651d38d6530023bf4e806eeeaebb005b29d6a43222b6f5389c19d810a98f8524d59dcbde134d868ef9dac0c39974a5394ed1acc24286785e0833bdd1baae85932ef47d210cfebcdc8de2bcdf83e3b0b9525dac488a8b27edf269dd0c2eebbbf208e0c2bed24598d0f52b9f545e3f0865760cd20bc58c8c3a8eb15ac047eb33e1feb655dba8d3d7794fd0ebe8756a8e2e55ed15108235970a9829cb089a29d57c3af4bc8e03847f162e9b48bdab4617befafaac62a9ed1c6d7403fac6f5aa399f4eae605b509583aee1868d309a3e15a4938ae90a50ca4451233dcc97a7901a9654a780bd3a74073f3bd5a2575d4177e0fda9e0de545c226e7a026511cdfd72c242631c388042862f313b7f2e0f313f42d68554574ded094cfb2c6786b5546e4507fbf5e9c77fce631ffff25e53544e2923921df79d0ca835ddc96ca0d05fbc8daa537b17b5fde94b00a06bd2c1a3e75e3f4b202b3aacc94327e551d1db6f7416eea402f4a27f4d801c714cda1bf42573d10ce0e4f4aae2dbbaef28495e572e8f85d69564d268932e21ba13b444e7274fd9042bae2e3f85fa3e2c4559853730ce65e7a3291b9d317b86a204ad4cb3d10d1515b2ac90ef9938b971c30d9042fc185c0d2bb541f36f30cb3a922e470f5ce9b8f3f55965ce30a2a1c9e8d59a6bde046a6980d72ae15381ae59665941c4cc0f440882154d1b452769425ab865cd47d210c158068aae6a78caa4d7676eb2beec0981863872ad7d89e6dcc328da6ef17e7bd5cdba58895f6f011bd13c7b922ad0891da07af9a325fb5c00dc8af13ae0ea95def17df76dbc4aab8d9fae015f816a8b358f5b8a78040721bfa1b91a1f74d706b51ef43d10ae03cfe94ca6da735b7476d5c7e89aa8a019f798b95e1815df0367e24d426f32c34d71c0c5bcef51d1557afde0123c78579a4e111513444584a28a46c350e43c81790a932a234a0224132af627325e7ff22e02893db67ab67b6ab3dce0e226c37cb1084fa240ffa8b42f1d186c94bb97555759441d1437e87b6f8c4b58513d23b263e42e99d381cb7edb43938d0e69e3e02a736901d16bd36d7fde0217165d3ae2157fff4f512021152781cfbcac90eb4830c33d184401652c88c655acf8f9203e980fff2cff53affd6b47ddbe0ccb8498310e3ca6ed0774035328115b52eb47b22dcf979339ee410617d06209bb00086b07031d2624f630993775c19f24d39e7903e6819fdc5a205877296bfea029ab33f6975dc7f2fffefdcb1520f93dcbef68fd362d23746fae5858108e570cc436de45b5f39bb4723ee07cc0f9fbe1f9a7f7e2f7dfbfe036d6786e68f263fc8be7df69be938da37ffddc8c245598e2184ff1f579b07993b6897f6493471be7e7b45179f2ba63ed1c6367300b13da584fb66d865305f9daa98e6d0d0beef5599a96ad9edad8560d44d5f86169a439d93ada76c5b2f9fbf7973fbed9975fffe369ffe36c20caa6acf8568f17d3e9ccd07b6506ad366cf2de06ddcf070b5ac866b3c947fd61b2fe37c22ca48b2d93904cb6f9c874a4acff41dd177d0a41b92db6a868934d47fe30bab9d72566f7911c50c962871f6cfd5375b8699aa7dfecafbbef37d1fede485e7a6496b15b6b2e9f6502f8eb73f96b81f32a1bca4a79ea87ca738b840187e7b07cdc4ab8f36685846c91ecf0ac9be94ae93e14eb2f8b9c844bff8cbb19f05b812d9dbc9ab3a4f0a89b5cd0f51851350774747659856c1808265947379db073add50ef5d6f9a0609e1b3b2f86ea62326ce43e0ca85eee1f33d3e70195374f92b78c3d89e78d6d7f65fae91ca7712d1c2b9e7a5efb92e6743ae3afce0477d976cf4a34ffc0e7f4f837aeb92ec3472fba3df3172e3bf5b0a69be26e312868d0eba25c3c0886c8e07c7a449e5cd12679847fa8b94870804f4ebb771220835966dc18aaa819d99fc5253cacba181f0a92be9b8b8c3a62a6901f968b19a26226967a10c0e503d239932b6b847e3a746f46b5fdede53fbfcea4c45c0d25faa4423ae080559e07bd6ed07a47079e692aa2e4b814c4b321ac2d219cc004d792ae99818a2388fb83cafcdea8ee1aab41d8733b9109c90188482573582140ae57bb990bd15320d20d30ade4ceca8ee0e642eabd08eb21e02755112834b465803894ce0997c1fc463a6cdfd9b155f06c880e73a59c928bb01bc4aa7a4a1388bbc8c5137d31ac3d553f4737e43d239885945bf816974eb64228d40ed1895f132df6e02e467b8039b076ae6269cc161046d247a0c7c6db1e3a3cfd6396fd0588e48428918488721b194a087aed163bac73909ee75dbd25b330b49d181cf0a5825610de4ce91976f1b1a94a5a36e2d2835689518a409dac2e9d3a4b7e80792ec7de18006074e5dc54a98dda8c07642d630760715a40987e633561f66a3d9d62ea1f78d7bb75143d88ae845da6f558e759c733fc0fb9ab301185cc19551375fa3e88f06bd4511639791263ac89cc6dfbe374e4348c536dc7c85f91e41a60b1070e077212545f6faa985f5988d04fdfbffc3efe9801fb54468a56265cf411a2ff468e12e6610cb2c7d28f68fd02322fcf2205c431d609911d3cf2087643bf46f890794f205772d4b2b600eec807ccce6e20c31c18400fafeb19ec81188dc0048761a9fa079d9d084ae40c05bcb8f64d45fb8127d2740001ce55e6d3f4b400e4e70426e374d74ec720ebf315a02a0c33251b6203c009ec9c3894018c82090bab0f0cafc992095f5561e0b284832b08f0c340dbf764f846d2282631a5c6740d99e02ef4aba689122ddc76dc1fdf6609cd04db81ad916e9fd0633d60556bc8092967ec0442039c936f6a73bd46c993205a6b569080d47394b48e99b4fe9e558bc1b5f02883c9aec5ad70d4c49eaaa315033a86d487e640dd5fb5db30bcb21936d5a5873e4d8be1bcd585a88fb0a1e7e2d76849840714070c1940b5d70ef8afed86d4af0e0781ec8a8c21597498054631c31ae5758481fd1b8b7b24073e3686e452c50fcfd53b2071a3640c3066639548bef9ce495ff91c5b9c680711d2b04a676eed630cbfe6bdf6b4fb6d063493cd9aacb949ef4449bd9d1078b265946121ae1eef48948bd2d997af4f735bf122f97aca4358c7226b1bbf4ccf9e5f203759d9c7595af75816a75f9f11a139c0e8ab3b24e9233abf7b291b6927955cb1891527b21104ddfab89f67e204c00f0cc4831832b6202191be6f743c798cf900336c5a69971ffff9329b6ed9c038b3a73bb35817314b5226c847e64c2e2e5afa96c7e87cddfa6103eba1e858e9dcb1de25f86503d270b20e22e1660704a554993308972e72a400fc4d23b1c7aea00713835340ef8e4998026a5ee92a231361868fadc363d160a35b500721498579069ec131a175baf67ce49210d889cc5a8abcbf6865eb2551d733365d058f23829d91e1e4129c5ecca5f25c231236d62139f64b26fb5a831f2c321126baa130465a277f626c7ce1aa581ca81d3d4b16e97007a16fa9a891344c4744d7b0971123ef5a031b1ddc5a6d92cd7449d6679688ed19602119595d8df82509e95b15121d8c0c283a6a8f25a1a07a81eead0c864a58d6847a16366080a2740f346154902aa5fd74b42aa6a13d5dca7ba646161c64c726daf2ffc767e3f5ac383e5d04bcaaca5cdb48fbd4cc99f2ccb4d10de14117e1e648753900d5052926a2ed8d455ac5ebe04ade6271bb09421b6f15dcd57cfb0f60056c96b164e6ddf42f84683c04d56b630f012a93f31ee1403d30a8799337b29211b68867927928606926c0940e51218af5cc391dae0d2de3d3ccb8e275cbf5e9c10fdcda54f84944932d49f7940b005ed259eb7558118f28f6a8814c481a8e5744e3440a19fd5c4416697509206e7122ba06dd6b46da5fc542824db180f50689bd74fc768f39e38f86baa3500ec33ad22cf71dca25525610662022e4640246eab7336fcb0dbe47bdeac298909868926edef2095ff8989c6ab9fbb9bbde5b90339136c3d20f749cfff1a0cf2e2a0ac5681ad95600f642024af1aaec4447d05e517125bb44ab826b6878ea472901893466b82040cb0a1c60f1c6232b12ee621521b249badb449534b36e50488d41daa414ba1a7d4fc10caeb306974eeb8c5622ddf9d083aea4434a317d6960670a83461028763b9eecafdf5ffe794181a8041789e901012a45b58dca10e36a98c84d8e44a1f585461f7fd0a1a0bac6a7e424a92c25695a00d847e6dfdf47fb4e159e2a5180a28338acf5a9e1602939d6917c83e7908e381b87a41666360e1d3c0982a8ef7cca80cd86dc5fb43b627dfdc83c849ee15df3aa3321dd5cef3fc09313b9cbd704bcaf09d3b460f26113124f633641af2ad3f2ab96ab5bb1c0f9ec5dce8ee0e9650fbc380612ea40c2aa03a6eeeae4ef1c59758af3c3c84ad723eb87bd72d044237eccdb3ada7c8a30dae3cfcd708aafcf62c3184f7e23db86a0cd05e8703ad9b8194ee18c23798a635ea5c5d2b3711bf571fa96780a63de8615abf1eb73313c57b4083a84d6a02b020bfc6c8b19c6acc528f312d7933d23146d2bce5db7c2f3eedbc55b30ecb2c917c866ffe9f26746c6edff3144c048a6ee22021a2f08cfcddc1cb1ed7c4776c9945d4014cae58e626e8ed8f20a06c6bcd3bd76ba0c41e1e74be22b9954e302627acea42add71cb570f1fba76de30876f7f5b28ca67fa4781519ec146dfe1ebaad7020036a0a746c2d25b69a0f310f7449706dad328db054c3a048d32c841979ca2ab81cffa204f408823867f45ba2612d9f71d4a44c5bc12baef588001ebf567428047a4f65291231f28040f093b9c08f73f71f9e45ad9b493f5478ae415a18955a6d8aa1c99a409a3095358550b3ac28ca1958a30e00d7d4715820fd28e70044661e86e62ecc224cfc8859007c40364ca36c0d840bd02d89221305e8e564aaf4a0582285247bc3ffb6e7b8e3232620946d20297cd4ce2745d7ae82b8ca3aeea8f32456afb9b61f2f4dd3eefbeee7e7f7a7e9aa3d6c151114e610c27a615c4ab3f6ded7f6ef3ebf31462de3d83664612e5e2dc71d4f14c2ed1e4daf8f358f2baf15b44904b065b58dce4f33ba399976856892fbf8f87b9714d886b18ddd00e818bef107aa4003613dd1ace14a6165461fac14bf46aa09a47834819fd20b848704d46bb227ccefd63f7d09db48ec9aa923ac415aab8c0a00e7c04d5fd82de195912c89452a79888c89808ddb55321880a72e0b1890e577dfce5f8e3e5fbbfae56834c60c440bc8f6cc0caf28e4164818b10ef433d95fc904029aeb25db988f37b864f23d73d21e9fd388b279c4555df29cc1e965a6fae96b0e3fdc8ed159f5efe336949aa63a57617eb787cb910377a237e612ad2edb68cf1b482bb71b244406470a5a874a59a853c4a0154dd3be81580c21a10f2f200ce22443f0d9d7e9c4093d75936cddce5e67c145019c8a11267ece7626bae1ae5fb97d797af3f7687153ff69a89ee8e056ec5c0f61c4c1a97212acbe65a83315942c855533f72e15a64c34ad98acd1f7a9a2c9385169af23b4d6a77c7fda559db5a93940f1041ae20bb0c368d8bfce415e7f9871e0656d28f5cba0a4abf9241a5fa0040d4dfbdf643057ca7917f7b9ab5f2a03beb47aab268bd55901a6fd3c71a66253062e571e1a38f5bb4dd72a0bc3ec78f3e6d496272d7287e69e4dfbe1c7f7cfff2eb1f5790755306f1ed6bdfdf94d648ddc50cef935ade0700946a963cfe3ff9904bf5bffc66bffef1fcebc569e14d3ac9304adea60d92e95428bacd83edf1aab3246b7fcb91ba25d4824c54a9933e53a1237ba2dea8ac095713fcd2c0c1cb7a3f415b22bd4daa1527e420b8610a0f2d107f23ccd5f96c7b3a877e1c68e4aafb8e280c9337818c7da31d2c311b8d78dfa11b09a4e78d7a7a0211b910c867444b41624a352ccf7855eee62cdf1fd06c4f95611641f2ac437950ad03e03a80a2282623ed341378bb16e70b71b8e96a88b41f17d629533e27267737e6213037d3a69f5dd5e59a06a170b6fc49a33704facf903aee5c00d098aa2b48e8817900e11e500190a85069f422549d0768732c2ed78e163e7887787aed82248e5e1178ed42a3413165ed447d7f23f2b8ef5f63226f638f66e9d95950633c2061cb651ead82ddde433bc00344feca136613e379f7fb93fdfef263f7e3e93ad2610027f57a9cc5f1d6a50ebf060f19fe34fda7fe7bfd2c886c5899cfcb756d4170bc0c6ea32a331c6cb2c18a4e3b1b818b90b6ba1f9faa2eca023aa1d40ecc71f9f9547b6ffc4523f08d88e76d1df1fc5d9ee39e40b75c63de2639dee6257ec05b3d7715fb9054908ceb9844576cc70f1dde39057341797e2bb1fc6d926d3ecf0564083ec017e0a1fc20ea21bf57c5d9ea39a2c3e0e66baf9f55c1f81b8760336525d3f9df3604e73df5ede5228a37f8f21201cce718f9aa2d1c6f98cd934df798cd6174f04011be13a5286c55a09987356d62d68bc9b0a95600724f61e35788b7efaab06bb2e53dc5eecbd75f5ffe6be69e469250ca531ea99fa0e7c85391199f41d13fc2d45b3236a4268e37b9c13fc25b17db29bbb87462ad1450afd3e61aaacdae05001ac9e0da0a45b96cf2aa00ec5a3dc0569e475516f1dbe48da4dbbada7f7c39fc789ad36b0dce676fc241c0278ccf931bd226ba9cc0ff5c4c02896eba59ff5d6bed84b0f25b77e7a87bdf41b761c4ccf8ec32dce8610fbe56175270094150aec055ed6b7bf4e4e48d49db2dcdbcaf13df5a6b6d1dafdec5941e61a60c2efbc3d47584c04de838f6db98b5aeafcfcd0db5dab073397afdc72c0f43ab8ba02b82d18f93d75e180c7dfe05b113aa28c38887f0345af1882850286590ada72792c64e1219f5df363a098f7a35aca7f3f7f766d5c5692cd77a36fbedf7a70b50848bbe98b02b2e6658622ea25a1431de0d43bbedbefc66f76d75f9919c9040ced08f64067d7835653232c33c63bd8bdb89def0b2f7ffd54e095a1d52d8eb346b79e724a85c36b16f3a690169bb01c95725de5c80a08c166e0ef6bb5c2861f51e5cf0fa2cae44edea700664d6b1e1064887f8957834b90170b8294fc7f3a8edb69fc2856bd5bbf89dd294a73a04fd930fc33dbaa2a4d76797427319f9de1d079a39d971fad5e249c5b87d7f77e2b1f3c909750059dc91df0d49e6fbe9cd4985713e4f7fbc3e836113b1b9431c5d42f4b0c062e8f72c7baf4aff92938b5cc2a422793fbb10c5baa0226894510b524fce7b5ed3541c45ea31bcd5fa3de221a5793e045c173acc00de5df5c7517f01e6b7f55f21201229f8d13a8f7d013d695da085bcf55f21ca36b9022d549a7782a115f37436ab18a863f9414aa7bef5307d65d0d924977ee92704bec764443e2597066ff8d94331f4af87d66f14c1d7c01b60876caeed41b44f678c15d740fc156d743d7d1a0a07195eb5cd809610b57a2143e4abc4a0cebdef0322aa048000d2a031681ffa20ce03a540b47a2757063a83fb30258082106760f01e1b92f4a1ec5589833a985d8ec86a17f65ae008810fa365e21024363bbcbb01726c28fd5708dbecbc979d6b081a9ff2365d02b4b4d451252599dd9fd16da1ff0a216d63072a45b795dcbb2db3db0e2cd330a4fe42bf73217afd775e2891c7cf7188a13b0ddbf9bfd11524d067226414ba9b387e550515e649545cabcbf7aef3cc9ff9ae05c251a6e7b6b82103575d2f41467b1b9d079d7068dac85b5dc88e769af5aa40224e5f1b24603f1c727143c937d55195b469e7e00aae14ba4a947c701e6eb7b6778317f6217cedc411c18a5af5707fb4af765a860eda99a067c28ae301579d830b802a85623ee8d8d3fae34120a2c23c0cfd0711723c49837cffd5a7a2a8d2abe318e31189fd431bb5ccdab095b0345a920ce450e1b49520a356f18407101a20f0946fc579c08ab4323a5fcffd86219da8f997b4f513e68d642e7052f4fbdc68b5d31beb09ac13c8bd11af4af8653f2905c69e21b6bee4e297d07b2f450e2ee8de142a402e4a9f3ed3348263cffb03dfe3fde86a6e9f2208d6f9d9751fac294e76d145f0e4c78957d77a5719002775d45561af4f251c46d216c2b7a47644db1331488f6867c602a3143782d0ba1da3a1615d4832bae8550b455063d22d17c8c75ec5170ce0e46241de8f4eace0fbaedf37c558c201e1c78caef67d0d01ab489f58d3b2927a3788ecd04772590b8610f5f9e77bf219c4476f18740a0c4dff5dba244f53251638465941a9c549acfce1cb49fb99793be88d32754f71430c0797b2b85475be100a5a1745c62ffaa1edfa703b8f033f74389002f089ba73d127fd375d3054dfab2ea92fe5dd2ad527570422338975b194eb425a227bab60c9c11028c456880423e0f630fd7b7d0e2e000d5c86b27703ae458c48263a0a009ca0ea0c0885af81cb314f1ebbf7387760a950b6aa4530ee482735228fca7412528048b0d155122c736f4fd10541d4ad2ebbba3985124f5aa1fdb4d62427adf620dd3abd167b3a42e5eb566885e2c8648a3bc6599d7e5194429f2297c3a7fe529f46170750de1019284a1fb1a2572ca4e16b70f5e224641376d905242f057fb15d22b5ffa704e2157d4674d9064f05a21e76de95cc14bc72b673b4125d1df2def94a211a125bf4442cf0ff16c15942d6d1e3912e1388a39989ed61bc6be1f271f4cca7e827ecf94f7bf9f3fc61ce2770f1eb3383375d0c07ef6a03910a006504cc2044ba01a32673fb19a35c2aa93a8866e469c18505da1f404c838f4ef2478111864f90d7f7e0aa7c8eae8cb42a43b3425ba444186a2e8081b118a974221546557466158666e151ba4ea20987a42b36e04927394f67c0836a66da02836b01cef7a057ec3d623e70b930e766ba975166be87367778a5c42f4026b144d17906a3910733d50b9f4e205607321fce49991790ae8ef9469e3840e5b4eb407b4e893fbefdb6fb314b41d0998f393144930950cf24cbe1a755c4b735fc84d0b8b64baee12197e950198023ff4d7afd50032040eb2e9ad8f5f9c156c3bfb8b75dd9c8befee3c51ebffcfef5ef0baa6a268efee4376d1b4130e737e56465f4dbbaa9db3286531dfde9badfbe3e7db7fff1f265164a5a4c74e5a1b808b8c4648a6bf896e1083a02ef0006b4b7aec204599c4e23fdc438b559ffb2d9e623be4db6792f5c9f9c37b8123b4088a6394f0b1363a8abde9a18a11c40f1790e81e6815dc4d8e1e714905a5c83b53deef17e9381d4960d12ef8bbedee4bded19cfd679148f74a5c0a8f6ce5bc4b13b6f930b47eb7423046609e8fb540e401ea904138d009fde81d58583551c0282b5e4fa8d825bae7225d9e9d01e2f0f486942ca5de62f3df70be2f132320aa3d3561f804f05b5afba6ab22ba69aeabca9bd1bb4aa90e7f6c2fc2f837a196f230cc55a8560f5afeb9debf8f47d0e323efc1b62ac3e27b86a6819cdd3836001efd6d031ee5dee7ac714e43385ec778eff7c3e44632b6dad4803c8dd1cd9a3a416cef52f5f7f3c7d3f3e5df39305a29c03b9c1c3ed156ca06c1c3fe9aac1b5e3c2f51eef033decf92c434aa8184cc05c90e81afc25be1bd8a299de62de018660226563665216170acaeb928ec4a1f0fb6d26853d01230016e97530e3164ce3a21b6307262a183f40158e0cc20e24c70db47f0394820c081e6163c5ea63040904bcc977c425fd31a0eb90a98a541a7dd80369d8510c01680580aef319e3fa4cf9709c733ecc3af09bddfdf6dbf7a7e30cb223b89c1f1075dfb008923e5f8e51a7a8986855507b90e09a367b8ee72c715d187fc93cc6c7bc7eae1de6f8ec84394ebea9b3dbfbecedc6d222c1a5ad04a2f086931fadc70f1d42af9f0330e117bec915aed3f021aed388141e3db529afcfc1c8298d64dbbc1ae6c7e31ff3743f8fbda314e3899fe59267d6ce2f3cdc43b5043b4b2997ad04bf2dfe4454c0ae9a7a0e004606413dafb5925f9fc57ac47cea4e434cdeb6d56da7dd16ceee0f2fc799993fb990a34eb36bd008b130c13bdfc2013c33824fbf236201a6b78b489d8e8442800c1c253e2268ccbb9c4abf78982ee6e7413b0889ca29e4b5b7aa1205ae92529da4b20b6e60a0e670a1478ba130d6ffd22ec58949aa4b1c54bc868c8d1471b8a88affd45c4bcdf0b3c3ba0d840243b7dcb4fa2f57dd65e6ddb5777920cf9d076511e68e16b56aa9a7e8dbf77be2eb05974765e65c5c12bff30eaac98419413349f25807228c9974fc03f38129d5f3d1915dd1c98d4f8f86f51724105eddefbc7991d197e8dbb4a1d04e7fb19976b7cf39d7f17e333d672bc3282ecd86cf60fc46cae9eaa0f566d8d2b93ebfd2fa8da4edf541bd721e49fce5c7eef0653f0b232e262293747d0304e8ccea0e377ae71f8b0affe9ed6d702c6f3eb8b97ad005ef0a395b253ffb63f7eb8539581ae09e3e1883b77024c71587e8d2b7bc0c02fbacdbcbc66fdb184f88058f1b0f8ca9f0fa5c4c5339368c793a55b66dcc04a34a9bb24d3c93c099724292072f9cfd79a9f33f9ffe354b701956f6798c5e2485824a9f793e4378c4f6575c8c3b01549f74c03e0a0282abfd819802cdb5e85afc80c3fba739b811d6df907ca982ab8a2fbaaa9e4d7e46fcfb2854ed2f92befcf3e95ff6d7ddfe9fc76fbbfd7cf0048ce025f9ef411bf6c121d419e029cd152a2e2b01d32a602d1b6e9445f6e85a3611c00655b5580683c89c7e3dc09322077b41f863ec4bbb44cbac840e90081cdcba1eb0dc8037e48fbbb4e0c05148ed0a109179c6131aa15d7b9d99231a464460786a2deda63bf62fcfcf73d428c492f88dc46dd535ee41872e08471ad1f005c949bff030c8243065918003f12ebab4cd9bba8daa86f0286f444293fc22fd4afc899f153feb269fe246ef9a9e0423062ed5b7fcc2c3cc8d92a6459a8a9654d08a633c0194a21b42f4ea29292ab874a4accd8376fac34e7fa84cf63cd87609a29905c6a8aa15824aa45a5bd5b70c4965230b13f5dac0b341751ba15c3cc137ce43707e0978f074e7f1e64d7c6ee1d9a2451279c02dd990dccc207a868fc14f1328a3ea25fa676259f5677e7d2efab5a9db4a203e6d8df446d18eb3b0a095f0a079541142856e07d2d71fdf5f0eb3a014a4636212dbcc1c0012da330b80c2f8220b209bfc5e16c099bddba43f9f05a045feede9f034333d41076b53893f5d8394a936b2965c789265f0bc5fc9a9f1ed906dfe99351ba8736b4bc9a5310a572343a2c40090f89f598c1e13109186c3c716a382b5084d64b20b3fbb14d5fb2bd193aae0177c01b3c2df9f800ad423fda8026e747d7bccae809ff8a78317a3891f0e5e8c26decdc8e14a1b3712963be94af4f74ded8ffbddb759b2ce326c5d1f7fc86cfb9f049625b9e7a6dc4b947aa3b9afb3259a05f84f70022613109998005065931d21d5aaaeaa124cb1c56081f5e08d05d641167d80cd1b013659ea89aec83caf2a9ed4dd054ea2d9b6576533c3ea62ab8bd156ab97ddb4ddcbb75bb3cd9286f70ac1f45ee6dcebb34a9523c8351eb3ab20cc3df468f24fae957265f27907eb559f72287d7a4e0cb3e8bb00de0530c0a7152afd756a5faded71fc320b3f2ec85d1d000d9d5d6bb65ee008b1e86688a3b864c2b14084b690491b90d29d8240b762def9c9b5e4ce7c7ade2c65f6b0181d6bd4c7695cc8f1663853d50018265b976ff7921fbb5fe778bf0193fccf8342fb29f873b81794f976cac4896c64ba0ea8fcfc27e69ea4f72815072b2b33d0238d8ecbfb0a9a75346bf5bec87e58ded7f264e689a211ef082e6061ff59c06b04dbc97601e1fa4110aa7f7e7df9cfaff6f4347ed95fa993f11623b41b5ec2a344dd856aa608ce5d2b9c7569d2fa4d969c60c2ee761bc7e9e1906cfa74be096265e705a8105a64cf608182434e42c4b71f748764b4f4b419e32f0043c14b1ce931062544b44e62b2ce97e6869aba9f2f59578b4ec004c86e18402693012c59ae96068632e30600570ce553708357d975e83e6231ba67455337715b0e62c328c301f88f191024884f0d48d060d85a0289305801014f92c135e8a79982ec9a6a557844b2493df2f7e5a8feda337bbc56ec78d1d51c91ea8d44fcc13fa22a71131ebd291bb9f48a2e22a30b211c90135fe3a34a02a7e2d2ac3991096c86ad9451fce9ead4309d1a0eccaa4960b3af88fcadf9f533e4e570f530e930c7b3ded2a7cc06df61f7ebd35960ed06d993954d38c9ebb3886d1f94f7967b3545c8ee4ef3db348a9c823e7794e124633aa5d7671b6dde26952ac6ab8485c3ee5f3339a891a9fd609bc520237c0e3e75113d5ab8cf5cc22510ede98fd6b3c9b5a3f3aee88f839e74de890b0ee05a477a81f521077d36322f7857b2ae1df1ae82b7b4dbd29d6decf040fdb567ffe59a9da1311ad06b19bbd7ef54754182034e8f36e383e83267c479fdc4f57393183c5a7fb6c5cc95076a562a30c12f8b55b4eed5814e84f52751bc47fdfdbfb364b3ce7cf96386e9059f27f3f60cdd1c086a2954623ab0298d1f8049d272871b3613d2cd0343955bb0c31a41957c535d436bd0712b5df5444c479af0298a905065d0373e82b9b3a934036691aabb9b6e01a1e8d744c3034a8e9e25d8e201c4342a97ee412f42b80f234c78333db5a8fb6d8edd69a3fff55a7796b8a1b99c9d8fae45faf3b30bfe016cf89996bba812a0c9c63518002902d723fd42c6ef197d013904e41f6c9cc3bcfda438f24ab10571d1f1cd06d7b78b910ce21c7dba806276d16fe7229cab89962ab6ebdae7ce4259f0fcbd0b735a16b43e7ad1509002302f7b6af46045f1f0614b5f63dbb4d8ce1bd7fc99b7bed9418ba16b777ffc78998d5f4cb5c49137740c9500d06a115d050697f70c396b586df0998fccd68ce451cc87e88a077190f69f0e849ae8b30f95df1f183e1e4086511c326c3a3d5203d65f874103dc8a05b24cacdba0138304759e561633cd0dd446ceaff9a5ea70ab7c0d10ddd141e75e3881b206814998150132762d2eea646a26adb6c1cd4b8e9715e03298130703063104525dc2d36305bb21b9eb3ad51c123d5d3edeb48107f3d0c314a0e4610b0c46a099848f8d612fcbde42f857de036a31b8145d647dd1140f154d04cd1946c341f51c842cc09bcb371ce7ef68c172d52a9715ea6449051418d89503b0f4d87b8779ff2265168d804f78f3d65e746754ffba3b1c5e661a6d25f1726735ab880b8bde0de970c6274b7b106b11344f8b8e612451454a5534f204c8cc4387d97d1291135d0151ee0935fd81119e8929268138cb2c0bccab30a9f41469045176a6b7e19633098067d0b5e5863b2939d0c12fabac2b3120da7518958eaa164d70593ff71f18c59df2ad32fa4d8b951eb56b4d75f121b8984d85f3c63497bd41485d3a32c72af7a80c6d40b4bcd116fc447665fd38ebcb1f5c90b325fca3848e249cb463603589ec188fca47d67d774b301593f520f05f9e58af6a3ccc3b297acce1dc5ceb68d9e9e707ebfecbf7b9ee565d40cfe116077a38f48977c99106d43addf2e466c5b14c3a290e309dc1ba8a70216d2240f1f162a10ce38a0534df2fd579570d60f6f6d63544671587903022128449d60c167f2dc59be8f4968060257da93e2c333acaa507c710aa015629865109fe156d60ef1a403231110c442e108306bc91a10897d664b8949e0285757015a5cc0e7e125c293d74012045ae1c85254265f7ae3307689799de242a14b3f806319eb79b6fc42ac9fa4342ac6e42f614b6124aa39d844f8f3830c1bf42c43b574d72753fb565fe585b665ce0d1944d6ba1fd8ebe0b88a923bb380641e6124be45e602de05764ec5d3d0f9bfc91611350c2dc8303cf2fef917bd2bfdb711a5d0c85ab7b0c13bc33f4dbb465f3475b36f31d10dba76293671d5d869ccb23d1114caffede159c0ba0374031fbe0c91f193cc101961a13a0bf91b189da3cfc6e470eb0a910baa0ea13601fb13ac896d3798ee5e8cd701f3f107114f7afa81fb8a2be7bc57b4086c0be7907ebf00357bc5790e19d2b565af3e58f6ff6d77f5d5ad4ffaf682f0fd8c7bfd618c1c87b9509e6fe5b16ed357e79fabefbbe1fff35db4f920a6f439904b08fc8c86fa89fa3edb231b0cc410421ce779a0afdf83788e18550ca3ef16d91d4221b7d914a3062209e2269a11a6fea9a067ee7f135ab322d8cb39df4b03f27d9ead282752a69cb9873a38c3c2dd5151ef7c99c2bf27f613996a3f2f0e5ebd36e46e4000cd67551d6df0a6336ba6686db133df26b5c5c6e78f9f26a087b2b653bfef3e93f7f72d1fe6f5b62fe86f5f6dd2566f8d925e6f8f2fdc7d36f767ff8e3f86366ca5c997a4b99fd22063f0f3f77bd76cb438fb7c2d7fda74bfec9e2d8ca60f58f97dffed40b66cdf8f48f1fff03d91fff2f5be343d91a872fff783aee4e170f4245e6a8be34c647245b33706aef9a34173279bf105ce55d2bfae3a81557617ff03c665d2ac8ae15f045d7fc29ba56b3e1670f13198ca4dde238bc34c87ecb70b015e4cf955a561e912646ed949d80b9c4d700cf151ef28842a20a9f8a6ba51a7e9e956ec2d00da9177c48e15cab038acd2abc3eb318d9a5f57aa4bd168111d43520a31c05d0a21ce6adb02c058065c9d7355816c1034a972dcbbb0dee7e7dceaeffdcc36c056f3c588afa774de4154bd9f642f88a3cc55e1e560a4155694f1c02ed531034b04bf9e2a3ed8540af4e470f76763bd7dab00b269cd7ce6cf8570f75d025affc0de902f3b1fafbf8e3d73f0e67673fc2ec24b8d0ba05de1797553fcc326627e1cc800fd41a55f3e401d62bd340df954d53dd06d3abc134ee8ac703cf591d91c7905ba86f099d68bd0095df80f5a1b8ce579f56e83c8f77021e6e20964d58c18a3c7e0cb8f8aa99becee8fcc1c006e0246d586462c343b407c75cc81081e0e28dc2ef390ea361de0844a42191b20bd17431da4452c7dc4c7343d656c8a699c2a85f6112d4d05cd4d51ae82b522fb1233a547ad4096c6520ee03964085e524f7d0ad731e0f527a84920d78d5b5b72a16ba7ae8749ac186e9058865893ae6b46727560efd1f9155a1a792039225811105840d71890df77395d14b4c24c964d2ba34721604e4b9e7e62401e8fa10c9bc171142bf27516086260127759cc841e6a876a6e7fa40d718802264185eac7d61c81cd71d51a5bf29f0fb675aae31b56a68c48f11a44c44e4dcad47b421b6e3506dbd07aa7660cad3e5df7a20ddd5403e5e9c8d3a6bfb586158466685c2c9b5f43018daf13386c9104c1ca5e809560648387a05a1715a3959d7e283ef0fe24562c852241b7d02982874a97e180c583578219f2e8d8fdfbbbeee83e43ef38790b4b491ec3777637a3f810fbc8075c1ed99b591c2ea74168cfeeea962d26b26f1ef7a371ab2b7a4f8d9bb7bb5a75af74ab7ab26c5e0a8bd49cbbc49f3a549736fd27c792bfd9e78e7b9bad75d6ef72f873f9ebf1e2f24dfda14a856c80fecb2da6b4cd4f8666483326b790449eeb8c88088d4177d497e002463f45a6815dbf40631712a1978fc877e497fa56e61e9fcde3cbd375fde9be7efd596cafdbd65fede7a796febef6db3f736d21ee2bd65f95eb954785ee3eb2aa3ce53a5e5aad632abb64cf59679c561f797a9eab2527739575e66b597abea0b46cad40072d502326b0299da40e68d2058f6a76690de0e22567a2938a25b1fd1e4a7f140ff0d65ccae45cf91293dc50be5c0743f97c34ffdab174274afd320d0e1ffa00d887120325d288b91f0f17280e3384fe52857e5a8b372b4a91cedba1cd8b8ea548edb91f17e39f60e02218ea314bdd7ce05416412dc80bc1bcc62d3152c8bca2385fe71c4a04342e8eff1e57f5b716e1692df9e7eecbe1cece9cb2533b19a8f419e2f629fd740c587d560c90f3c6c15f0fc6f7ddae7baca88ff918aaef000e85631da15aefa05d7c1879e37eba697fd159ac74f5a319a911149e17b3c3db82caae57a806a0065543fee93cd8b1bda437241f78a040b1a8c0fd83a405978371a56dfad7feaab5539f0064c74fa6ac357b73b71c2faee7d2023a4ee2bb1024ed69c4bfe5e18b08dc68f0ec024d5a429f91584c99042b792eec530bb269f6e6e25879d6cee45988fd6b5c57dfac2a16d6fc3bce7d55d7b9d24d7b4959728b0c7355683c3cbfe9fb3e4b316f4deb88da4d8bd11dd8f963800369ab86db0a14f6f718d64342db8d6ceb1dca1c714c1fc3fc82c19102005b19379eab9d385e825e9906c042770ade9dc6b5389d60000b66d53afaaf4bbbd58c704d6dfbb7a6039495e9b8dc73bf41e6b5c00da3ac35bb8d46f4324f7c42a84aabc373d0697da63753028fd6cb0f821d9b49e0075d378f398c45952d6bb35c8acc17d5ea4e10cf2cc58febfa90a6fe4707d6e13cec9dde41b799f06623904d6ad05cfbbaf7fec0e33ee5020f6b692f5df144c5fc10af62084a48aa0bb044e300c58b4e0026c27826a38065741951b8a038755e6c62f27d5c785106f407f8b0cbb538d35799785148892407c8a6765aca86499046de600b2c72100342a8198904722fecf6e285dabdd910092ef1aa60cadb69ff8038440d6c4a2c26781be8ce7f0129e8cd79778d76fe325f8d44b3632ec8940e580f847ce05992e0cbcf0827d25c4be8297f0f2bc7ee6fa3a5239889d176d71412779280caa3bbfb7a7f7f8cb97e7e33bf656baba84f86120c100b8eefef6acbfc0965dfe022a9811ddc93c20c34477e3a1996ad169299256199c0db0212672c6e339441e6e4487d88ae33cc82e23c60fb4f441f73441e845b0483b4d5bbf67ac622826b924ba6717e35d4827f1203f438454de5b0f4a3b5f2d70dc7cb4484c4ddbe842dc8b8b6db2be9708ce2a532c1f13dc501773e5d0730f9f7eb3bfed7eec665c507ed4271ebcbd9fe5f5fa2c99515b2d1e7a985d4e671b50aa739bdcc253cda7c26cedbbd5ae1d6c0f36cb2ac0d40003cfeb67317114ffa1227d1e8c2c32b4debef3f5596c19eb076b5b8d07e2254c40ef663621c1e183577f8e46da21762ef406c051edc2f6a827808cec838a1bf16041bf5ae64d14f0274ee89d011f57fdfd6d9e58a1cb1b4d668855ccb6cf51ff001b3408244347040a602cc34150955fcc85feb1e8d28611e8a474387df9e45a6ec0cc1ca6e493e5220fdc8b90404a1e41ecee27387e934d3433ec38272e04f2c1822637105f0f90beddec477c82ecfc217511365c3d804f687842bb9527d29945b2e3be47f0690264a33809071b81b9b7f5ae964334fa9b9409afcfc8732d07cba3dbe4523cf0eaf315a65ff1d633ae3ac9eebf3fcdd588aa12803f15d7e4fc083d02d02b42c1e992122cf8b4fd19c5be81f857b4854e05a881f31262b5131750f333754fe8df8da1696426eff8164836c0da9c49d8de8a0e15986774a80cb90f95fd44a9fb7ff180d177efad0b42c29e843817e30499efb55972ade662c59003f4fd81f459bc5940c1f8053ddd2cb7302dc9e1aff41abf9493e7fa921fed32ebf2662c3eefbefff3e24e6dd074f636b85acc60e15eacb6984c9928b85c4d81cb294cdfc7621b962a8b3ff783eab5c0cd8d566fb3055fba52caf01711569e77fff5e5f9cbebd3b5f6714f171b99632a2e20f1f1e7f33f838b20a8f938dfd8e76a004ebc047c79f4a0596f5b5960b41cef24a6df4d9fde9cf1226c7a2379d8bc6dd0787efaedcb452448a6eddf0d8e3fc79abf3e47bb4ee7f401029815c400a0268683cd3641038d36d968ea360244f1bad45fffb8c83179e5f1c7bb204d37bbfd1af0c5f15ee18fefdbc13e7cff75ad6ef0e1aa566ec13f38afdc3dcd5bc58dfc06f25030e1a3c843c1844fcb29928c843523a32453effb85ef5688f8557fe1fe9bf67cf9f634a7377ccf00f04ed1deedeaf7aa26c35f7a00a016123bd0aef58a24534eeb1033d4f07f1259ebaa39bffffe74ebec020c4e5e25199b992ebae5c26ffd984e1e5485d1eb165c3b63b9b8729814b75a5d5d61b2fa901161c5d61c5dc9078ba7d6c967cc7d3d08724312e3665c91add48d0763b0ee19c9c16ef0d336949fc62e0b36bcf69d6cc5648df2a3ecb55292daa3e441200032614fe7351ab7a82e92da0178ddf267f8ee02189c3f0619f32e8973003a846c54401d6d3a59743ed3a554a5ae9d11131598244532baeb18b8b545af58ebefd17d72c41ebe7cfde7714e22fb814cbc99cdbe42bc584ff795b85d89c000b46a692ab09e924b1f8f859e25d6ae27a66ef2762dd2e418cf8841279b90bf3a940fe5af1ee72196c9306910d4a493f0759c496a5b42c45e290dc78bc87602b42418c0ff4ce0e5f397af57b29d4a519b259bf8ad68a7b3b4febc64570ca0e3cef8ffab0e80853302413777c15844d5f7f7e8c37f4ac01b09cf7257c2bb6ec63f2ec33d9bb6c2887dbc46f3fad066faf2eb97c393fd36be7c7d9ac98bc3668d0e6fb12ecbf021037f32d2ee10965e70842ff8c12a84864dde86b19e242c0b7cfaf2db85a24d08b4b02298abd4a2ddb6e8f155f9f6160d6605cf1338c8f7407516fae6bd856c9e2ddb101c963e35d7a2c1477768e94f221ea74b04235e325075cf6e08c8eaf72e6593106ab76bae420cac2267f379856f0c98b311a428c95cde868f7340538d9609ab60f6bdb23ebe7c3f8f94e092a98bfc00fe353b62d3eb67293f71edf0e16be7e5fae3eb8fddc583e5c12b1e0fc58a8ce0701de5904c038409d27e930da39583edd9998fba32b97408ccc0301c9b41e56d72ccd547afcbb1e4cd7028b68ea247af4a705a85e50bf62e2be7d90324b285d227e010fd49c426bc86788517b4c21ed9baa224dc452b6cd48e1b74d0c7e88a297f06a5eee77491bb12c7247034dd79db23a1c9d2125baa1859f3b64dd852fa9e8fc1d4becbcb4a7d5fc6d4edde5397fd5b85caf960fbe3f7e3f8b22438784f945e51d9d7966c31a0964348c3406017f114f0bc07fc660fb149d63ba01a9564a3936c3db25123209b100bcfab68e8746972b6147e4be2b70f641748ae21c817a9c90d6e175668e85e274f5711a8b5d03ac1d31b48b696a110a122c2c45ac88c0ef33b2ef144ae18c830cb542deb62b1ae7a52b30f1620090378dc135062f80298570b4daea1f37da71d014d2ff4ed5d40aff901f8d701d95e83abc294fcc1abe8252e577db95769bf049220c472ae7798c653a5630cd44fadbf157839de6903c07f043a2fa0e5756673cf453b46074cac06b7e9100199e15d09cebb4a12f5a4d3b07897035a2a3a297c8fb62d28596ebc93874953f145ef43aa0af24c982c0c876ae76ab71dc904f1dad1896b485286fd18e1db55c747e8cfc0d031a0f5114f1abaeac054175c6e33c68df90438fcf8628f4f87a7fd8f0528f3edce3e8a3fe571a184af622ae7f5d8ac25b9f042c43a331cdc4ca5acea671c653845956bd644b7b78bb8b4c5ccdbe038035c6fa4d9831424e472d2b190b6da7356bc092737f807a42b046def4c76705568041e058bf909871e18c392f5fcec6c1c3a383dbc11e917328123736dd80be595808232b1c85bbfa9dbe24a3d0888484e85cbc9875f71e42b5c422e567aeb257eb8ab2d7eed8986f6cb8fa7e78b12b2b65adeea0c1fd24b9f0768c2cb1e7dff6927bb6268cba68cabc174571e8085bbe1ae7d29d9b2e63298eb0b8b90bc2b20c9955aab58b566d8f8738d68c1a4b352c63b6e949395e57cb9aeb7595363467bd756b732adefc50eeaf8baca7501a89f7f23d1b6ace6d32e8ff6bc59a836a3f5f7f5ce557fd0f183bea8727fec5c57f4e5d7ff982fb7ddef952fc40d277f75c04c844a71e6f73257a40db74eaf0bdfd23596dc54cb7eacfbff8b210f1f7023af4c1b2a0f236e63f24a4d4e291a38107006400c42f7011a04207601071e62ef3b7e839b2cdd509325a6874df03dde7a3e2b6ca4dd34dcb7a7efc799b2278457750d6977314fc2523e0b4bf28eb0445949ce3243fd495989213a2a5aaaacf4bea814ffaaa844c1519f01bcf6c80d00a25273495553afca7a614e8407c275e9482b99d2924a2b61262ce5b3b0546e84a5ba1496ea242cd52b61897063315058aa1f1096fc9f139600544469493e2a2de5b3b494292dd146077149748d7800d6943417b448ba1df36b94e44a3a42b5c8bec335e51e9f8cf827cf1147a95d747d92d7cf525d2d26fc3907f447179cfbceefdb79f3fde9b8fffee51a2a5b5c8354edc1a54fe5098a4927f31a55bcdc3b30cbba88ee4bec29c7f4393674061a6f4192457d9488a8bf06aa4d2f0e2924881a6c144a05611481bc9741363a3ee071303dc94987bcea45f180846ecf810e5acf0c101b122b470fcdb0a882b8492471ed20bca5d376b63e6fa077617c32d12ee703c66b74213d46e7b3699b7052415f9b1b64db286e51a119a543e416d089881d92dbd6e5f6400d1ca180c50cc0fbded317a0a30e78432dbaa0cde6e9c889c0d922425dd4e1562af1c306800135e73172430757c377e98916d2212261ff47e804665cc218c78c6816b8250dd553c18eb8213ae7c3ebe7486fd410cf658c3aaf914f8c9875d2a957b03d90c4c9a7a3edb12eb61fd833502870b186f6cabb479d07a7e0a20e9c823d37dc329c1d2fa6c9d19e87f7e5e0f162d8dca6f9ec589a3bc7f3e43a1f3a5e98d4fce86fa6c08fa7fffa617f7df9afb992f33f3a433f27535ca2c0e875eab9a4ff1db9c603c0755b477f2aa37533bb2ce628ae9bee182f9413e73b8fdc27b8eba44dc3934090f2d6bbbaa8ac037c7627e1f26f5e0dd2d2b614092bd08e7f32dae0b48c549485c1ff0436803765c72f5fff63373358021902fc6131d80ed62aed4142cf0611443c2760490cfb8e9927a6e37123835cfc832e3326eb8c65221f129afbd50d91b0412f046e777b00dbb044dd9f0a4dcd46a0d375b1153000ba9a49d6228507016ca49689196e0823f348b5b732ccc078bb37e838651e9805f5e0bc295e7e7cf9c797fd4e17fae315d7df4de8cae60602f3f5b9cc2285ce93b0c2819705fb9e8d3ad5a34d2e072402ad42229d5c280f89061d692632ff269abaa4379c4d3533ebfe0fa6c65fd5b55309fff67375f6568aab217ed2ce2127dd84e3a8a254838bb5aadc8264e1948aab05a40a120fde7502bb1b24f70111d3d10dc56f17c13ec7152fcd0acbe3dcad735e50a6ce30e7ce30d79db1484e3939c9f9f5594562935d927800fc03c6e2ceb512f45fcf32a271745a5223598ef513a0f32e7998769d071f954e2e0f69530be2cbceb519991e76ca76bbf84f7094b058c3a67bb051e7a97e5c3d40453533078bf8fac7f3af88d1bece222f11e0d0a38aae5b2432e9101e22e46c81f2e77c86e82601fb986fb0bb1722c836c8d491f25d80c8ee19ffae324b81a57f28271543754f4ba7e4727a7dd6995f80152694f543e1be59697a161c84919758b1b1d37e670a17cc110322a654dc1c2af28e5283e0ef61efd5bbf45c81e8e213e45b956aa375354d4c1a5ad8d4cdca95720f967021c670d03ead8cebd54689d054a840403eea00ded5120a4d1fa38fed028f0a7d16c8d9da3601ab974b2c7307ada69d512bd060266d193ddcb9fe4be91286d75e62ba06215d03dc295ade528eb48ab395b2dfa3c65d1c0dc4d28d7cb7304a19e0159004f3249cea3cd06697acb2a96fda8a010ac7d0703ce941a9fa9a21e032dd0a807b4be673954907f6a2ef0cf81c4981232905a28c7bc7c2a26d4124a6834c87421284fd9788b64f04e468cc798099194d05013502cf21f634b4dc36ba013b2472c7b087982ae4850f81f26e437832aa717e08c1b854475d090a5ba6872e1dcd93812c5f9be2dadff8b8ab59fcf4fdcb7e96a0a43b83aa588442876e50d1ae59f7eaa30e6d8cbcdab3b502e577c1b8693a7c4ee27c1cbd8b6d2b49351624ebd58da747007d8c87038728ba525e9ff555a0cdda5b366d84e1803e404c2fa8e67ecf489cec8ac7c46e1e348d1e891d9e9c8d0c2402743d30762ba6a10f7d2e81f63d10a244876ce634f5b94fd144847422495b68cf0ca8b618eeadf23b22fcbc7a4e478122afb5d17339a0c56a81cee2e3e401d3d90924a121723de2b0c61aa7bac6a8fac6be9b421231961b573dcfd41e0429ab9e029e9e70e4f08d980c714a85eb78df050b9d14ed51b85375fd6dd985720408bbae197d3fd5f2414167db463c04eb0e9a29726c4ba5ad858c66593a743a0680aece5aa4ea8674d2a9b527ceb17038baaa2bf6d12547207dd94313c57aa0cb3468130226320618516a687cc95075e279b2129696fabe14ae034c3965b68410cebd722469534446680564fc402b0a58f65cd2d5a5e50e9f5e1de2bf747129a57794f6abae52296bb95a007541d14255e723d0623d2885b48591dfa0e20cc61217dc8831100256e154b91590342363f16a7e77c175d226d5f2c3048541824a5a26e06478ec53058b379a90eea484e15fb01e82cb090aa31ee26b3c709023d56d189aface0ad26f5dab75a414eebabe607aa48c73b59eed6b9964339996b9815303933fb1a0d4e843f73fea0616bb9eea49a591fafcd2b9a5834cc796ce3e4a3adc4830555acf20461a0957d74291a031ab38610bf5d48f63e2e65909f8ab9da80f468b43fb1efb0aae1549987c995b782ba80067556fa8c21aeb50cc4818c100f3476cd4887eb0d8358161a5370ddace3da001d9605aae9874d60846a84a14194a5d8624a47784a69f89663222d3eb9286dc3d581913a087b948e6c04582054c115d591329fe847e6b9a0e6a43bbe7c91aa6cb154db298102151ce8165c3839ac13b096346c235805075cd221f81ef23cfa391b31ce18756b14247f23c3ee4e51ffff8b2bf611f4e7f3222369e6c1ee329af8560bd4d39dce934079be152c51f794eb4a967eae58cc835cb701a6dec975e55ebf0e5eb1c3d01c14ab52b14b14ee6f3586fece7386065f805986c3d5ae5f57331520fde964d3a54ab8a4119e3c15633b7a9bf7c39d87f7c793afc368f9fd2751acb16781b42b2ad23e909fc8508718c4ef658b60bd66bdd3202773c1d739e4b3a30ad61370791a4aa1d0349c1556b79d0e1addbbf003a25103b69380387759e88d65c0dc44baa50a6a4c1b25c9d3820f285081cb747a0bd0d40211a3c6c76284fe15a543cdd9ef3ee37d00eb1bf8003c1ba21ebcd073f817121b527dc8fb394bb48709f9343b1ea21e896218ceda8c1e81c7d9c4ebe3e7b1792294e1aafab2e57e04a1afd35da72c5c3f4f2750a359fb9cbb47aa35df3892f87fd877c89f55e7ac47a14f4f103a911308fac6647cc2af8c78f5b6d7ed85f46f765121c67e37fc6f8de03a4deb00eeef1040f833538faebb15afe61f9c3e2bf87a223c09be4bc5e2cc50457b24917388d15bbe6ccc475b6a2f83b864a37a48740143ad5d1cb0456f8fafc21b6fe6fbbdf9fec0d95537b032d66197bb18c625afa6875212958f5d2a9113d062b9d0cfa279236fc368c92af96b36fbbaf4f077bfcb1fb719ce5548f5267ccf7b4fecd48f3d17cf3bfb540f31b904263fc49f47ddbb0016acc308a1eb0b20dafcfbacce9bcf127d94838519df11f3964f3ecd0b6ea91f945dbbc38b2acef2d313efbe1caff4a73e7c5d7ab7d3027e0df4edc20f13c11890fb66d63b8d0d927fe61aba95bdd58048d91cca0fb4c38854d3903fde89172e6b7d7e7ccff4af86b5e916f4fdff7872fdfe6a41e09899a9f92cb391a7ef608bc08d44eb85f232c9d153923ba6ec34c75b0cd019ad39707ada0ea65c893a59b5557fa7024408fc001ab1bcd5ee5a282d02d3f1dac89bf84a00c1e9a0aeeab45a5d8836af9b681554a65b196f5cb3b683601f20a58f093e586d0b4905ae6832dbada4314a1c00fca894aa222987744ffaf42b45009ba45e83d96e24bcf37e9b1bed2b388fb5d7aa2f3aa64b445445bec0956a38549d135b2f14016eb8544508e4e5696be69f5b2562fede126d6cd0f19ec7070ab120df00683e3427d2225136921494815ae80b0e4ee18586ca84a42df14c2635baf83ca686e9043d56d5fefd1ce8fc9f0b3a3ee0eba60917747b5d7a4d581cb35271bdd90af86d5f7ddefdf77dfc62b2075d99407402f1b5d60bdf1261f8117adff9d321d16d59d69c8f5df11eee8331b395644091fbc545cdac3697c7de617218b0a0b7555ec1fe32c137dd8f83770bcc7728a9bb741b8c7748a9bb77981c6fa6666e968c3c9c631ddb9402b56de3c7f531b7b7cda7ddf9f2b15cd3de8a1cbc67093c428e2325079bc4b271b00ee01bd4d901eef3d0cc7ed145cf0070bf4ec72b2a5fb0fc97cc40c2da4e8b75375d21fb75dcae233816aab53ea1088fc8f68eaae96a89ee5a18037ff081346fae4524cfa6fd27793191e742fa7f24b04d6be2d7a6853d9f9ea623c64a31a5c417c026068bc27180d716e18670046a5ac8ab8cac62631ccaeed27e49948580f7cdeb8e74e363adf13ed40ff149124659c975370c0ba185682aedeeb987037246bfd1e5ab71abced70a883d9280600d8360857aa09c01a24dbe4ee95ea24aee58318d9623e9ee39dd1e115f6ca670ba8e5e452dea325bd4ceefc806067c6db44a2d0506316392bc9b41243373f914d5bb7011fd18ab13278201c605e96b2c7533c8377f859f203e27c81c1ea12b032c17cf54be6d14cfab18ea98a7322fb6e684e04ca29001c3e303a27ecbb211edb0a4d1e5246c6ac44989461cfeaf6b9ca9af933ca0fa3283c036d62446d7252ddf740115be554fdb7efea7df490af57d34ae7890cc419c8e5f5d94615ca6bdd9fe343cf0979c70952cd1294995973338efdabe5e38fe359ba2926ac06e02e622a17c93f6be1c2c8ef5caa597ff271b3223fbd7c9b496419ba47d9458446e947cf6c4054fd9019d9e31ae2e0004c04ee8068fde429817d345bec9ea5748b2ddd30fee27e817f19f6389c68187a91c8484468120674c07897680c8edd080c5374a3190b6038f032200fd71f68cd95fd1a0c543df42835a20ff9ec68452b80870ecca728b070554f7f4fb884a609640ec68479cff0b33405a6e9280560536a3420956e2432dd309b27ae439f1d7ca525a0dbb20bc9555713c0981d60bd54822a9896151157f0c948a0b085efacc247d9c34b53b8bcc39c046c30d88f1bcdb509ada5f307463804e26546fc059a230a8d94f4ccf40cda1924579c6e4b581f6b63c2e6609814869e845d6d6057088978905701390928fe85f0c581a557212aa20bc153d3bf461bdca00b60725147d590f7026b28b0aa18d51629ebc20ed8d90c0ac4e8e97be38678ec303dfe1c8f36259198731289999248cc9444627aeac8402e538a8d03d758baba48ed4977226601ac7a95c341dc05221d90393201daf4efc0b921a92ff9be7b2e5ae7e8cd9df434d00952bab3125b40e4c047ac24c72382385de9c6c7a06b7da5999a819d00cf419ce42eb81c758dccf18c42e93061f3437601bc1fc914f08d9a6ac0c356f5504f1bd1fb03d06f2e77ebb90cfb56eee921be6787a4931b1a928787863dcb6b175640d80546b815f02f23e8b3a0eabe30535958e97895889250f3695c72d9e85fd37d75ea3ace2b863ce213f6323a45a6e9d0d8d13a58ae96c1effba7af3f76bfcfb353e77833e79c6504349db3984102118e17bc1906719fb3a02dc28155274f7742b9ce91dfab0690d7cfd514a496de3cf617d5094234dea4774af5aa62ec949dbafa923ba5032ef50a14be65a45dac8f09d1a1d9c5b50d577494b67628889608aea9d451192bdc7de6585dae7b631ec5dc10d2515c83f086ad47d707647348b3493f00cd24c050ac5c86a7e86634599b429cfb374c9a97f883d441fafac88820bfe962f014deec2d255c86450472033758f73d496f41f88bcdaf5547a7aac705be2f1474ca796e8e4d2c4b090c7bc1a2513a261798b7bc47cedba7483d354d52ba78d75cf3e0e51130764bcfd215331c2d98cf3d0d0dcdef6eeeb6080a512d14fcb1f04931ad0ae93258204f0e8e5f067fe878b18ca9c19610214526d73ac3d8509d205413874ad3baebb20cff66146071cd8296092b193bc216f81b9ab88ac51b11447d3d02aa24a39649d0aacbdd507469e246a8ad54b4e0adfde25a66a624f04074a03c3012bb71ee3360392160b9811c3f74e12482e8623ef4ae32d49bea2d925c823cc115199a8807333d46602a3b574b46dc5317965402d977943404662089150ee6da296d8be9488cd4d3f211d239fcec248b667a551fa6f0ed95a3a55ba9042d840d849dd4c9690186195d84a80720313acbf0bcc9c959b06f68471726edf9d8036d741e977a74889501f92586230c3581baa82e070fc5898a85413fb247f41a2cdf7bdb9376292209120b9d3c7088540fe631ed81e86adeebf8a898d4c9a56a74ff6fae0555104d72514cd385ac1f86751970622ae22378de4446a90b4c3e88886082820e197df3bc3fbf3cd9fdb8fb7e36fe368350e808f67f7d54105b4da5f323aa10d6297386681abf22f73e557c6dd0b1a657dbe25adeb4ad6bf5f5fffbfff93f064678edb7ad0ca30c0f485983ad1d9dc97357059b079a173aaaf7d655860b639282d91936f5c7ec04ecfeaaa160ecc74c88506f234d4a520f517737fdb0f805422db0de9c4fe063af4b24245cb04d613c363ce6105cb5c9e546c90b917c2dba1a510837f8832dba40e9c7555d4e9714e1e42a1887d223924bd3ba1a76ce023f20d021917219312885c929ba969f73a1112d2d6b36fb0e585c033ef6f4d2664b73e810277f6b949eff2ee93efaf6d2f773b26be99bc9ae63b74462b794e38ccae7a22e12c3fccf85aea295af2de8e10d10fdf06edede0a6004a0b3964ee1f77300d79c631226aca9076df740661dc9ce57938c64937e1a2e00201b51b6ba559a73c35309dfd409d1e07f1eb6a862c4958dc8be736b210da6996cf3b6fe35e405223dad80782fbb69092a72377ff5db61f7af19ee0bbd833d240469f8aa67c40966cbca60f3059ab3e9362c6768b78fd8290cb64743adb330652a4f044dd3d369c1f28c9f42c44ced05b92af935620decbd77f173ee63daa405c0ce15a8cf5db49d79b15e0efffafde5abfdc797c38f0b42a654d893191097a8c794e4241dacce0d1b5dad1d84bad14857fb167ccbb05b74a92864d81da0e72044de493be8ced04c7800256072836a66be99a49a82de95e0f140dcbedead5ae4ff8fbd77f16f1b3bd604ff9573bdbb193b6d1ce3bc01779c5cb5ac449aa62dafa4566e26ceca30058b8c41524350745b49efdfbebffaea0004498892dd9ddcb9b349c7140102e7fda8aa53f57d8283e64916d1cb201d2d919e049cc6cb59c573a92ee776b01cc993316976d0891ae15dd82264de24c8e6800d8670f863d1f4d3d1df28d503545628b5c7f45f98579908b009d0a63c64df3b3822b9e885950b75686400c116f8c6218f53df0778379c6730d992a060a9cfa8542c3b36c0b66cba89c0b695853a31849d464770d70cc246e3e70d7d20409dac3c7b796759343845c34ac61e1378c1041845b48ce42e03500e89359481ebd9a7ce18c1e1fcbd93b7c3eab1e9c0703b3149901668797ea839c28f4437984a2d20f720506501a2a3084910a14ef82a09081867141ae969775641581aa0f9b996ceed2328c3e0771180752e942a98db29765a0a24d71ca2b24ae0bbea934cdaaea7d2f5bcbc1c0f17e3659914d3a2fa5c8feb4e944ac69614b674006a1d54c7203d517a5f85c83a2a80041840fd44bbef10ce67982d56f210913adf33d20190c0996665cda95ae97ec6a12e815a50c0224262f63069634ca3140c2f6894c008aa1bd66985d3477029aa7d961e8112e363a2d2e3f4c466349f73c70641cbeb199b05490fc45d93c7d944635333705bc6f04f305222728d4610c00a101307213a650c1366be0b8c6ee2b3e83101db88d04c098dc04e26ee8c91aa994922158165c39ecc14a237a0f848668f165a52c321a681095c796382ff1a7bebe34419e7a4a456691181ee4c637dcd59216dbf601651e54943c15e089d21b628db313240e529fe6670c0d0f685874292e5ec9047f38f747e1824b424294b710be9ac62b544b3c297d1ca0f7fe310038455c374ce711e498cf475cd97489d186cf75965a4b2913201ea282d16f16f6a11dae864c091291bc5b34e6475c4b6019502102b02d69ff8c570ec015512b6563c8ae04557d12320fa7471f4e99c23203dad2f15d8409920c20f257ccf948525d0924c0eaa74b6e3b2d06f48c700f236932d90b6ccc042b08846d644999b8a7d4d2da9619abdd1e989e093063d274f8017ce30e66ce38c1edc384c77f10420cf13ee690b45aee2807a9b0d311900e689780d17ade6361e250784e4d127206474e401cc7514f854c50653941fa748091b85a948da52e33463c9b31ba981079c85f8919be830c0eeb0583a608aa592e68c97b384b56bc8517ed845a4b149cbb6012b7bf429b75856b1ea20ba3e4412751a313c0c48c737ed1f83a35267a1b60478e82290c1c44815c74661e3a2cc8a687c84f0f3b78c7d767100e260cef22a7260261c36cb03295b7dc3b1038d029907d63d8d5ff2e4b08683f033a669d6dc449ec50fd3f806d35c0a79153103b26858738596169663ab5d1ba9641001087dc3647830d8c624567100804a622447b389db889a94340ff27a4e5a68c28e3019708d42c5c8edec976f4d1103156de31185136fa6aa8ef2664e13c465204eb1922798c9f6365fccd9466356944819db979d743421ac8d6131fc0f9e2cec5469e09c229d6160581751f12c7769c67ee45879998b15a3be5990751e894c329cacf3672453613b5ade1c47580e49473c11f6ac786caf3079b8b09af6f378b8a141bfca13533743b1f5d06fbfa021332e9bcad975d955ecbfc2a7c9a9e701aaa39655615d0147678c9da0494cd21687503102291b7060f722c12387edba8a4146b47e62f4588c9ea8822a019c80350aefde487df30f89d4f75f1aa96f7f8148fdf0f591fa9e23f5dd5d91fa7a47a83ecd4e8be34e9ff3dd5f265adf225adf473f31df9ccffc8c687d5ed26f1bece87f52b4fefa002ca78b626d00829a2fbb5b42bf07b67ba9b662c700226dbf129e969949efa1e3d3bb11467798220630edc394b68dba64ee014b4a8c50fad0d2737ab9c6787e3d1f4f574eba56287fe897893db4db88b77d91756e94e8a545ccf2168c512fceec48e973733b31a28fd2671b604a2f13335276691e664d4b94b0a3449f077827776b39fb6b39ec78fd6662cb5ad1e350bfd423e5cf49b4d5c9c3ab479ae01d1ca0dbd18adbcece5b231a085a61f3b0b08385d739d21c51997dfcb2de00d7e57c312e57ca9e50ee8b50b5d3247cd1f32eb1bba18a7752d9df5201f7651eb9b8a139efcc4e0591ed26c7df8d9b3c4945f839ef6fb5f5e78ec1f88b283a5c720fa9c03d0c12e64b7b96d6ef9fc5ff90a8243bccef7624bd9ba2844a1b7a4efcebd5917a8758a67bbcdf69ef9bf7d5b81e251f6ea6c3ee0611d8aa29a9f0b4df78cb4e47cc0b9ce318af9219ac0a2399fb8a85f030229d69c8e8a6aa39cbd6ac25c30951232896038a1955ca467b06d3f629f83ea4e0258cfc8108286ac8f9d83150b1c64b226e0c4de2a053c30939787802ce9601ab38b04921b04e79a93b865ca069d652aff41af839b2c26ed940473a4a747f811dc0261c1d68e1cc014583e551268663ae52560314d35221ba30e733760331cc213a3746bd93ccc4350b562a5d2130368491ccddc0312a02bc4bb5019c17144fd35031bb28de218adc31a600ac7decbdc6160ae3623017bb0845613a010426fbfaa0de0dc160803f80e12743740e508dac08b3808b9e7138d164d3a88a47af8e5b0ed0072c1732cf9643acb5e2a2681e0cda30b636c2c07278ec06094a2c521902953ff3f4d9588e7cb41c79760d4394753c258606815338da262503c00d9388249cc4539224e2197f05fe7304d1df25a5b47c145f796032013ba397211b42f453864f35b081e9e8b11cdd93649ad5d462a41ec8941406b6dff20905cc2486410fdad10d450a369a80737ff804d62cadeb18f73c6c142e1bc3f30d77a5645b9dd13802f081fb908384997617ae4a85a76c3c476d4197845555395256221c40ea48966decce40dd8bb00d4e6a58aa2c293ba4f4208c3c9a127594d5353c4f8c8519c631fc5d801543370a3247e8b3a6c2ba8746b43d6278693c8838cd117f4e53083c324a4466ceb4410060722b135d23308c03474486e8ecd6f82670acbac6c9bec9e88b8b1e90c07c408830521228372970b6e99e94238575ce51d779cda701d96a440f2540f698043980aa1fb31a007ca42c3724ad1c486c711010f82080bdd56934f1fa8119ab1dcc223067e288dea88acd18ca0e39929b556b98b3997f8f1d5f315531a480eb611b546e287a3aa221c4b906fd08d1d2867600a4e9328e5df7126c286beaf24d55af055ca5238c9a81b232a741e54691d24645675d17a3c2f328f9a1a7428e02e5467a8f17a02803a02b0c02ce5464a6e917bd27f390d1bf15563a4c6d3082a00ab925f5925219c0aa7c1fab9119e27521f96c966dc6232a043c061d1b32698520a57c04bfa214362e763dcc3d7d5ad3a002e80c060bef9106f068327e8e3615cd9ee98af4470c022fb34c3abfed58dd2f72cd8be9e56cd2893bb541b891964a0f9493886bfd6770023d800ac01c6260467b4560965a2f4d681d5913b0cd9818a28ed8a941acd1ed84d470d1ef65bfcaaae2f7744ec34ee98195210883d0e9d5e97146ff1a68a8fbf8d4b474a6ca693352f0768d87c4342d3543027125c0eff24f83cc8fa7f300ba56f7d07c9916ae009b3abbcb3734ce20f849e0eaa46096707e1053ed0eb272389b77a37f4d11445841fd5ad1b94cd656847979395ba78f6046307b878fe7fa9871877e98b05b03a2967c9e78c4a4f95c78fa6fe496893ef4bb23292255bab2d280bce20bfbc626f6cb78c649c0b93bf66c27afd0bcfc302feb517709edd1cd65eaf7956713ae47583e0e5855079ba0035270a7b833045c01075e2788b6169af77d2b83e7f84e8f60eb2f7562ea895b9ea4625bd1e262ea36da1b94d690726c3cefc91284af99c39db4923d8db48df4d6b545a53e467983d40dc63d8d06d49dc0f66e30fbddae2cf3f26a5ed6f578365d77fd53205531520d541e0f32f38a497203c835efa75e7a0837e5ba3a9a275f468a993861bfe80595267a1db6afde1acfed7b31fd073fde6dd435de999f8bbe314985821ba6a5b1b50215a83b433f6b01083ac3f176e292bcc7de55ef320edeb153a34a9b4011793f2b951d31ff201b25cda1dd1acf3db88c3b384f5c4cedf6159c31d49d4b5ee35606cf58958af0753c39030b8a2a92db744e22600ff2041584921e68a807a4fb7c0d87e1c00a208f5710cab43477b57952951f16ab405ba546bba042767a6dddfee2d43441a88c194152eaa689075770d36b77d5683ebe1afd83d8725eb52542091aa089b6804996849d0dc858b577b6e05695e6b34fc9fbd962b19266835076771fedb6a3fe23e88380bca1fc52a5cc16d1b0b8b8fe0a2d66d7abda643fa33213a593ec97afcc32715cfa163e89ebd6adcc755974cf49b6604b1eb0fbd7ebd28b5b492ff7092fbbd6f81db90cb7048bbab3ec77249e2109f82cf1c0e01448e2b1fd12cf5aabd4b36ab54101e15f86fd207361a5164158e18585ec1a45d71025d7c082eb305af713097b48829701ac04cc032d157f496b9983384693e6794b1d40a225bb66809c817db56c0c948bc00d12c8cab4950b9bc4aba1cc80c3402ff06bec5be513942a014e73483cfd07cf7125dd7e2649060cb42d4a2d321428c38b9a5a78a8e0fca2044a22746201764d4d6d102cb0a60b8caf5693c14abd1f8036293252a903761b4491592f4ca265b60f27278bb376044cd01839644ed1c04102d4845e284a8d962804835a99e620d3a77de53c8f11926b07583d709a3424aac4b18612765a1203c96e56f750bef678f3235d4b63dcde1d9bd0441da4a4c5c023b70d626ac82f3a57e97a9b8e16c95f67abf88ed558a431488328b0ed25f69d6d46c730a101916040f0386a866b330eea386c9376b8f2689501c00106966d9e27090c9419205e2cbe1899bb9add71826b6e1456a62918189bba3004551cd871408a384dea6664027f9bc73c339204460bc1b90826471cf5098f7a1a7f88aaa36b84ae615a2a232c4d31fb0f1aded3ab5f546275a4d6062f522071689bb8c4d5fc4538fa276014a10bfe42f7ba059a2d8a45995cce8637937275d69d3534d87b32cf03fd130dc6b6ef3b0ade0efacfb7877936bcc35061137bfb4a61b7b1e7d9c82cb7a245ccd2032b034e102eaff0ea57445568a1f7f3482112048982418b1c543a9b41155ae85d33b1c2b991ce0f55ab1c3508de9ba5afd74fe5372274b63be3ba1bf46b85fedfb0ce93440bd73b90b69c00b60652af0f0048322d80b2bac17675b128ab6abc2857c1762d7a976040af3aa27809354ca82c54c43c41a0a46700b018971c71e88ccc85910ae6ac004caebbd3d3f0dd74bcca20f5fe3415af547ca07b3b715866c3505a4e2beedc6965a41746faa1b4121112dc39c081a12fc3846e47e032bc9018498b2a5032e2ff798db415331159908cd0c6ffb0bc06190cc6612bab81814bb6dace69800cb0f5526db7328284d75329da8e3cc06b3672cad946d753272f1dbd764bdddc5266455cb6ba69f8b6a7da8e5a1b30cb0e86a116692f62cab640bd1ddae42b16922c2d6ba4a5f9a5233d09388d3497fd5d13b73154f773b64ac32848798bd66eb2c6524bcbffcafe6cd91c697058a681e2b069a34a901ac3d87ba0c79b156804b67a1c5a6b8e30d66b2d352c168b729e5c57b34e28eb9799969cd05ff4bc4dbecc594409863afc250d68af1cedba5f508a4e93ade178a91c51fe01de980899a58fbd4ca6a915fc19d75f2fb26887ed405d9ea66c8c4a059ba8181673a8989295390d1cc93400114028ae15f4512869713c6671c4c1a47bf0de5040765076654f4fd89e9eb03d9de53cc1567612beda2842e1b7aa9914f3d9cdb49d4b3904cc3c6259b360e745e72af170ceb12d759d88947575bb32b2b34be3ebd220590076ebe1e1abaf8c48f7558c18e1bfbf78162afc332aa28248fff19990b03970c2c59072274d203dc507553999929690ea448634c8906609aee823be59b9a4795359e9b58aafaebdb04a031fabe87524201c293d946b7e7fae6baf92acfb2a47aef94372dd18c08b72725d152bd9411991edb6f3eeb6bca7c2fcacd713ff735ef7586d34561bc0bbd3c75e2673930bfe6c23e5f2183847838497f4c83f1b00d9271c4b733e549406ad3566f7a2920b8543ba8c86ea2aa4afe62f1cebc7504c74b18affebeb931f17bd0be87f992a4d0cadc891427683a68b63a6efa2160b23bdf4f7528b997ba9c5548aa4eee116d33ddc626bfd71450a6379990c67d3c57c56754cccbd10000f3142f63b2d67a3243b0fa36cb9bec9acf35fc3ac93f1b9b1d40e1f0366e9ca15a379e4d218c617548c41c87f8cd916100e6d4f74ab86455593cc709ff7fc967bb81f461f4704b49848d93ee0d269128215edffce321da865e7a9878307d2c64ddab3ddc0a8e766ea0606fce79d93add6665f58615b3120139dab245b2bfdf43259ccbaa71723709e75f199eb1509af64fc7b6161b902f8a4210dc14838d575d8794d9c214ad2081800b2d19eb3dd5a7674d88e717cc5cf0bbe9d8eb509a03bb4c976353127818c051b93821bd41a212f3b1f2178971f6914b27dc50875b920951d88960854930ac04db467235c17ac348a6d6aeacb487b25bb3eb5af77d2967abbf9933514e08c34ed9df0fa5aba7cf0957122a1f1c0dc0c7658433ce841f74805c23a0dfa248de1bb2648e7064a5163a6a46246df36c558593c8e382894a32b71afb21cd393bb21a560accc1c47809a8cffde23fb0fa393a005dc140fca60a84f01cf6fd977ceb1f6ca4442e706ec64998fe05768530caadc6ce22c34b47d43c4cf72587650114139374bcbee7d86197ebd81b75e16a4cd06417a1118fad6c283d3c19ee1ee6a9b6ebef5b66e33e48391183b05e750408e0d4856cbfdb94a4732f50345c318581d96f1971cb65fcd11818636c2d4b3598b21f9d8a0b2cb21e0769280130f5e5b9efaef50a9a54c6dcff09d14d7ff8b0f5e44f77a99e9aa4168f44944bbd4fb2a3a02e3180cd61123d23ae19bcc2fd7eaec7a404207189f9d54a1e3d2e6a9435a8148a45ba784f90616df489d6b99850a8170e13c1fe973279dad2ca206970ae35a09faaea5ad3443d5a1ce86061d97670867700436665cd4cd3d1fed615c44c804bd5a22330d9a34e086550967d92d0e65efd60c7de57c5cd6497179d909c1d439fb724923bd46ab70586ab4afac63ecb42e5b8de3780403a1f9403d9b4aaba0519cab305a4599f5f249146b2e848c826defc63a841b0458c0ac34cc4b9a49a58497418b4c0491d5ecc81efdd863881c4e35e03971fb4a69c103abb1728d74a42568cd5ed275ac944bdd32d2afec969b3cbfbebdb56e4a3bf71d46fa786fbb2f86b3e987f1d5cdbcd8a4b046dc89a716d46801a978c8c2efd9548966a743f601deee9c15c1c9ce1ef28853f96776522b78f774154243728c6a49e29d1f29048ac600602735bc83ed5232e11a337231d9bd75a3044f33362e13dcc10b3b48af2b198c0c86a5c5c0301e107654c55eddec4acd5c4d96b92395482b4675082c2831a9a666885abf543275bdc590f92a12d82532c2ce5a779e312221b652cf028a8bc106ae82136f089d72782e074cd498f4de16d27a47ff9a158a6e567045e55723a25f9e44dff644babc6d989e322da9b4e0dc8c20e47c3b363c1400662db34c888906e33629a4d539fdeb944555f0cbf32a466d305c8a0adc9a4d2770b012208a413fefcf95b4ae4070be6d42c841aae646325fef7f2ae1b9960edc77a99760c07419b560d30c6dd69eb3a60694de4a6fbbfd8f681b6fdb76974c33c6b1374e3ac617a71d218a10c1356897f183a3e3392420fe08d89a9a2e93f672f5c1ae98f1ededb5e0b29c8fbb867580c178e90052c431280c9608e4f8c614be822ce663ac46a6b7ccf067d65720d148c9a0460b03e5a517fe50a9bb0e02460e5b189f100f3172185bc7e23388f5e5935506d218a461dbbc969a0403120b6a925a5ca4c8955926b30c185160500beaff075bd0569f33cc58f73405a0bc29882835d0500003017c0608bd340315dff4eebf76b3a848cd686f5fd1bc734215d25b4dff041329318d2c50ff5323e863099523151c34c548d42a97168354676dcc80e2303c5e491d87c9f0d9a2e533755e50cf9d5486941f05aa9e6efeb175a880a32043cfe6bd7154c1f937014460a944a71869f611a9845609f414b7ca7ae4dd40474f9b9d2878ca161ba117f79ec61cea251f8ebbc489bb9103ea3868625c60a569a9a10fde9252c6ed077c3ea3434570992ce220014fc5dc4e10e3e419f71a0128311e4573ec536e6a5c827668f5437bb9f170d226808fdb09c697462498522b7e5d1efe2e028e1b8edff41c2d9b47a0168ed27491459af919652463e508ba54b54c06f496660079209f83e332e7484000409988f84c0b6df38feed2db4080883f02acb6868e1aaf607a613545326986e76c6d1740997fd16c09cb98c339b48172be614675ccac8dfa2a56f358a74d998a34cd9b39e29a7e051e54465b1e706a8c89bc9aba0db7e200c1007ce142e626a37fcd8603bd1c982b190d906cdde2b9588ca75775c73d788789d08df439c7e9ef8a25f5877ae96f2779a27640752c33a4350962973be3d2708ef9ee1ccd61be34c8d1b210bfe9e3f65540ad89163dbcf91dd71fd2293280be1f7e5da63d4e1f4198c3fc6b125b6ee35574fb7954ccd740f7b3437dee46990cbed2492f3287da8603d98a45390f525b8831e72abb9dd844657c067077c80cbce3833477c4b475916861bf442bdde586b30b6ab51ead318a22c4c52746664ae4492e539b893c514e06650195c938c87942dba2ce3c9c4f331712b86c663ec9f9ef3e34bddc6901307e047b0acd5ed1b4bdc1b3163eb5c158b8d77a4a28135e7a0f982592f62df0ae810ced8d179934ce24fc04ed4b7938d7d2bb35bbe568e552ad405e19e9aeb6e82f98112a5ee46de069c662204cbbb0c9910606f71a1d49f635436a7935484526dd48a6bad0b0dbba167436155f75070a307057c3ed2b8360e89e408e352f7ad51b88605bbf702368b62bbd4c68d26f03c96c27bf4c0283d7acb7eaf5787a950cbb114c9950f630039e9df481a647b8333856271caa3b641cd9b84ba5be8df85c0390e158280bf42504f2aa7d2b338eab853645c3aa6f3aae59f374561970282086e6be78bb517e5f24d2ed2b0069fa9102992d5bbdec6190261ff02fdd261b4fa8b52e3b6c466d74a34bdca67325e2271ee66f74c7aadc176a988b30d24b73989f87db573e5ef8f3703bd14229c40ed1addb8911e961debda211d05ca689e547b39689929184d624ffaae80426b2c6666163cf1855200f32d841207140b11759ca488fbcf3dba864754199599bcd1c5045723083e3d8cc939c3d644126920201e46d47185e3d29aa2a19ce6775dd916c11c4544571f68bfd2b072a8d614c8d40bc3366358b714c8ea428f31541c031931dc2ee4e98ac58ddad46998ca71dcc6a2bf21e44ef87ba1a6ca6bd06876d453e4accb60cb126c9ecce7cdb3f784dc07968583c176e311e7eec6cf6ae973f7900e5a71babf6158e7b9b4a4848424fc49b5af7cfaea7b34f1faae2e34a2001c35d087ea965a62acdba85b6ba907916e85f63b302c700e0e4f25c1ae0595bcb5f2ced6303050e1babecb9ca49f39279b4772532cfbd4020bcc7d708402954be04dab0af12992b12b441c09a674dfaa6495f8974ab40603e700cb2e28c5f02cfb9423400dc2c0c6db686f6fd14bbb5b25e3a12f043ea987b41db4c86346c2af1323058afb6953460dc50061ecb32e4e82934b1112dfe674e13cdfb6e9d853400d235de5754012a8b62262d5a55b4eec914bf3ad2351c8d172303ad401963c566f02aaa8c54b9613841eb7148c214b25c4003a2146d6406c76b5841d2c8f3832a81083df5eb798bb6c26e000782802320d81da9c6eb7dd9d64b6cb4042086c0f518ab8c1a4b036ca7cdfa8ab6be62aba0cc9946b595194e1495d1839c2435f04f5a65075e7a0b7f18adfac705705f8c899f4db2184803c04b67be1161358402cc1a9b6094ae7a91c634c9732970938c9759000113c4e7fee445efc4b1343d9c34de2ea989b32ae2a75a9274c1f562e0634bc2a1b13444db9e47976d0e52c1dc403446a989a9785ac41ed39b63947b667388a22b050f5140523a1900d7a59c9126353d39a26b107ec393c9ac4da61c7dc623901a09d0e80898b20e6d9e7ad63130881399d9ed412ada84b6e707675ef124a239249a39b935f344ef08e5b9baaa30d840b386b3b96f4a7285edf6185d4d2618684d009f9f19b4eb6977d19d0dc745954ccacb71d111146877884cc43e9156e8040e1a88a733f19f0367107b91009f4fe60d5778dc9f98ca8aa383a44e3c02905412a4df5746069981715b3424a7c06813a900860fa237dc296e397ec0dd4e1c83c4319937ced39295520144e1c0f0a80c9e4d7a14469e8d23100082881490a47690a01b6de18e3d14f01977e306934102bd89448e7dc83299089437841b950fb5648c089dc84c3899c10946e3152a8e8ae8c0ec37a3f05733a9732e948eacce1aced6a964a639ea5f4a862419000dc13b0201924cb7ea13cb4703303a39fa4018876b99d913c9a8578dbf0bb32d6ab404bf1f8497761f74b23900f93d7781e30ee15e508651fecda9e39b5ccab511b401f2304a7a2c15f7c7ba2c939eb8dc3471bf6072af02a2c8faa41ec71c66e76aebad35f21200a7c003c549b32773efe8dfca84eb7a8425765861ee9a07c84a26e94307a092df46a8dbaf6a8f7e0c92af6dddf3b0cbc4329b2f92a2ba1e15efcbc57858541d97943b9a3f52c82d1327dd96f96ba307b2816e7a60030ecfc493927f542750f96f2759c4e75b62b13f544a9aa5926664a45358633319b2739d8e9cccf19019818ca3323253346f11de2949151ed1b47603c08e837377a464965732a74524d7232b55a02b812b25732040d19bb71340080b2fbda99474b49a057ba86c057a7dba1881a56d57bf2497653d5cc5415221fe57e81f40d7615f53b66bfe4befc68582990b65b2606ccf69780351cf49ef2a2f6d1264969da787b47a2d95f481ba072a6d2ead5d52ab8df2f35c1a374abc74ee76a2a40e606ea54ed5e988231319e9df8fb4f459c52e72ce8f14cea041701ba81b716a723b0124b695a6e2830f174632d595c4d61646a0ccdcea9f558f90babd4d78b4ad4fb29fe83d739867fb166274cf32d967aaed4b2e51690fdf754f727db18f5bc9d15ef80b2ff5f6cea51e58433b1113ba4bbded5deafb00bb7ea9a5de6e8e8aee44554628f7a056ddee9ede4d36f160e6ffafda54d157faebf6b1bee6b0006a7cc09cda9e9cbdedab498879c09cda9e9d3de74f1b03637a3329e7dd3d1626873cefefcf80653cc3329edfd7a50cdf878f62bd4fe3322ebeb8575bafb18daeed5fd4bbaa53ca4d99c92c63a219a00c47369fc0509d0c0eac19ffd58684a57cfa7f048405d65f646d318596c6805ec9740c9df0605921af0640f292d297312633fb2231606acef0b5605f774046055dbcf61c6662251c91b482bd32034f7ea1a5b25af0676beed4f01e0558a9669866a6ca7159051063cdfc668a8f832d0e91bd615332634583694301c616fee052f369b3c9a5231594e4874673f45a6af817594633e6b68c54ff2a3267e8c0048420d880ef99514364084056e7c1ec83efc03ea63a5a107b8018168e6699f421fa61a51958cab5ccf0096a219927508e34d3f08076060c6300d38e24a991e62330876f88f44f4cec0b1b1a73a5449f38c3deed19d3bc2ba93dd8a8ac8e67628ed9917804806b37cd79d03439e95047d72a9b33b52e7ca34c4c19ce68aa66cf7678a3e0f4218e47e077bbd8901cbb9046f7c034b6253c0603e34eb3330683173bb8242887c9aa338c6206a655f01ed0aa61d4500c690d6c6ac58e7900ea213dd5607c80f24e593ce500d26da5ce0a250da89e4d6bfea1e440091c89b234d7d34b9bddbe22f90da7262a9c4350856d2575ec87c09300f102ecbd11398f35bcf01db883d82f52a3393283ea9bc8c2cd20ba56a6f95249ab465a1a75aeee5eddd636c0fc4e31357c91986a7e7135e2aef5ad67ebcaa14b30d6b4a1ac20493673d45a694d742285310ce3c9716cbbe6e31fcbbe2f3ec89424da349014eacf757aa8c232f1326797513fe485c2f3ea9231f3b4bf9df0d449b9faa0f28ffc52f428206c68bdc40513a7673933a92ba9b27de5419dc9a7ddb0e1389c5fd136673932c53025b4f54cb4c3cc8c21e773ce34e7e51843ce6934960fcc048f0584d1a873a05133131eb5ac8d38f4967de968ac3bd0df0499457f3a85a5c780988de473410bacc9a92d694501db1f2dd2f1b40d0bbbe05a9b08260d419e86164669c59e48ecbf69d87f33d848fca4d8e9c732167c862e174c9cae78e1320ea979c59501233dc0af0133ce1e4011e83944e2bb943d33e193ccd0e6d4fedc6ef090f67648d3d5c21f2f334d9e98ec8e2aeb3d0d8c5c1546a6506352dd1cbd6a2a7fb622174a986c8b3651c708f4cca1c698a781e9c40d9ac3c1aea699522d301395b791be2ae3bf39fb90515d52384f801500ccd9b7af683ce3441b2b262f62399c492d468072dd25df4546038395d5a151d94fd2342c4fa007cc78b985bb786cb906403b67c22f1da9dc2cc36c07868cd79105d539fe9b45f0efc883c7f718265d7b5e1e727e9f13653243cf3931eb559c622a70a9420b364c3d9d3148051ec220a50a82d05f63401aaab8cfa310c168352a52b8a34a2468f0babf46c25b5f57e3450441acbbee3cfd1400ff505cebfc5029a024eaa10c8155f700002919b26d71bb0f18c7c890ed0388cef2e9af61226f241b0e8db46a60bf0e88135ec8fb34e1736cc32207176d8405fe42ae6983036675982fc3a15dc2c32cb03725536d00f3be0716adcf0585ea8ca03e1a3e8aa91613b4d9528f12b74cc2c8dd0fa9dd1d13fff3a6ebdbf58fc17e647cc4b5f3844531fc585e6e60ff225070a3e37bf4353bb2e7fa7602179e1e4f36374ab6d9a88095b5a59ef6fbfb8dec39098460b959ba913d0fb793241779afdbdce136d25364c8d91d10bd1b51c58b2dbdab9f6fca9ee7d412a1af6cfa30dba21c5fef832e9d715a19c0277ae1652e54e28463b95b0469702863a41d1899099d0ad71cc904e92b501a6c249c9493eb15a591e60793487e30006ca507fe898f8920bb987c1573131ea7101631b9416ae11227238e86ab10c0aba59539dd6d709d04499194819100b715b4043801f4392f8c0c08eed403a4b156e8f23a795f0c3f7eea7a27314ffa8a0923674217d522020d32916dfb70f7727ddd4fd2bf4c6ce5a51556662bcca240fb80011d0cb2de9c775b996f56aa075f1b4e4cdb08a4d9c86c73d4f75816b74b5edf63c8b3a3c46c1f06f471e4db5f1a9d68a3353ecce69b3ddcbb0ad881c378d14dc4e8bee373df14e3c708f36012fd487fc28c270ef4ba119e0a71c07a1ba57adb976d772f779c3bbd30bd0e735bfddae330b73b93f9f863b918cd673757a38eaf633e4aacb4beb00ca0d928403632aac018e1985d58351c529c032407c86d898a1270e4506225827f8085c1d44c274d7a0c14c9610c7a7189cc5dc2323222d63c4b6e3a63a1cef35f447ca410c21000ee21c6e735134a1924eac290b59fe8656f21dd9a9a4d2839e848d27c2833a600f786a348684206705a90a2133cd3f79a6cd418131a02ad44e659b43f71349583b502b23ad3ba92f652388e19ee1a9bf2446654e3c09cc91621594cec0a8a9448fbcb3a57ee41a1a9d8bf1f9cd910b273f007c5d822302b1b858271d08d8b5fb2860e3f75e0e582a624c12daa33192978520d6910c1fc369028eafb9cd8d7e0de6938c04aa510fc00ed22d512922b29acb9ccc083ad1d09b5868d4288f0516c3e83c5c1b1652d70581c387772f64ab6cc298dc8461798339af4821ab1678a7db0a48238a12324027a27729286d598cc6cd470a14cdb9ae9071c9b0973366fac189555b4e8e8ecd0823b2e85e7a18611cbb2be65688845ac64b0bd33692ae623f658760dc92dba89bd101cc7929940238b630fd90807b3205319459d0c864c13795a438ef16b3c98bc33c3bf83e9d558f056413dd38efe6af0d031d53a7424870a91f656900202ffa4664e83063a3f7cf872fbb92abb5ed15114d4d270d4c07e43876c3b52668b48326a6129232ae1799061152d008cd9ac4a18bf015ef2f46fa053da3ecfd35122115da19ccc872011160e48bc99d449ebfb81bf06cc19aac133a1499591549ed5f09833008dcef6e132c21212485138ed6e853f15d7c968361fdfcea68b95a95d7950eda6b0ce720c27b7e8a1f223e08269e1478aa194231cbfce0b255a4a2eb640fd52542b0fa09171d265c2ee9cd2b7132d2cc8a40eeded4459610fadb4ba8aeea0dd0a08d6b77ace0156fa1600ba9bf0469ad38689c178f2af2b5c56f414bfa370018847f9870f54eab765395f734288ac3bc05ab09b6ee9f0f8eb3f0c43557646a65880ac9f6f29559dc894b625c5664b06d577a0d2013d82e49b23ed060f9b9e38b74bea2b6015e986f8b0331acf955fe2f73c8946ac1ebb29a93534347643d57746721c083b1c83a9df1f6820dd39cc41aee97855c79ebad6c19f27ef6755321ccf8755971ec5ca54155e78d1723269d1b94c94ee4964cd57de890ce7f8a62780aa3712ab4f33d812cd7ae09efb54cfbe735bee19df3fceb90697e362329b7625609546b8778015e03c88f73567ab263ac8269ea9329b70208858a10127a1bf355bf93258c3ac5ba1a65ae1c5eaddc867b98a5474b54c99b534a31c633622be15d5a04cea40c28665a2385f3391601ef3ae9a97b898f125988861fbb0b13edbcdb16101711815bd0adc2627542fc3753432ecec81c57c5c4cafaa32b99c7d9a7624f72d209c9e628036d4474a7e9cec90d85151278e1a85d118e9c089974be79955511b660b643e3d97a8b4893bf2e0db8ce74940bde869a4b6c4372b4dc341d4b588f9b1f0a549d7780a0d23e4f9c85348c323689c4ca05c87b9448c7a2c37031e99f6d80d5513f73638e492c8686954b25d814571b5a2b0b685168d97ae4ef4c84a97659d7b7073962ef35520c18c3e3abfa62460e80c86872c131b2f27f4632e521249acc2c75e273791d1e3e7f67662a4a50649530f3c4527f8b35983b4cc73b1fe032f9af4c35ac53e9649b18664e74418f62e9d2e717d674b5869730005f4fcec44b89d78e17718875dd2e7c9d84147e7f0919e6dfd769209377a9857d1cfe39ace135ff9c477bc147694981472da03b2159d6d12c44e628b2a2401d624bdd6393f8e3b26977c44f3a142d45d4499c4692f2cd16990d68e600d080267a44ba91190989978d8451b1b0efe482275082b8c37cf5538f431c9edc74f81da658c3094b05b2652878a03d9499f6b269e8b87cf1ce409970977aed29a1752cf0f347868811162026669663b66cea6d9eb0e6256a512835561c9cb0d0eb52cfbb1d37ce39a441906d4cda2392f692ccaabd4ec2690c5524965860ced65f1a234bef94b1a24e0d4ac961900d5d136e7f650854a0933523b703180bcac9a768daf36ff4e011b6b8cf0d1e39cc329454418348ce62438855b5ad9a9d51373e806560466fd0fb79344b20529633c3bd73406f5f3468e22767bd3b9dd2140ffba43affc71918cc657a36a8de6ca0b15b67aaa07e8a36982d51cea9e5748c3a70dac4fc433081cad693e60bb6b9a76fb2cca3babc6ee488fa27da3732e9490264ce9f3c18788071f7c58b473f2dbc41eeaf33052e9f90321584986ba9d842423a14e33beac5eea1e17c65d4e578b3532ca43b502e88cb244c4d5eceabaae13141125ec15bee62b5a1ad86eeb9ae0d38dab73cf174a89ec30a3df54dafcb87979eef9aa5be24d48a21890f965b8a17c5e085719d3c012d580aa72ec318103c27d26d82165da8820bc081b08a66be11403a8dc69b71537604e1bd822a180fc464d0ed36cb7c9fd4821682234b8e089114dec0a2c2d4ae69554521de64b99554aa8733fca96669478990da5912454a12487aab95d51b555227399c79bd992e4808a72a4a599b42edabd1aa4546912d0061c36465fd90e3c3f5c0b8bd91a016b5db5852414e09fa6d28aa306950c5a77f5466d341070accc5c45256ef4cf16d0eeb0830ac58b835e87cff394266d9094c6b93fa4fadaa5c25f952eb1ce7b1f78a8c693b11138d2ecfad5b96f2e68a8d26f9c440b870b78a0f49f0f0f6457f040eac1f0408b51528debc52f3cdf71761a0f6a945f9bf19d4b9ac67e631adf4cded7eb8a0596482f9d1f46e732c566f4143e24718bc73406a08c6a4069e0f30214aa2c919e261720cd4c80881018cdaee16ac72f86adefa9891938f8d8c3ad0f40758259e91dbcf6218de13af0734a2204340b087f4c1811da70ef20292a7b1835f4f4192b7acef25f7892e8c4c07d26cd924082a64f72920800021b64d043cd9ba8f7c2c91cb083401ff0822ba5e1af6260c25f2171f988e7aad8ab2b8956dc001a9b2cdaef19894fa3a69eca1162b18d8e2dcecea619acc9a9158cec0a3fa59c815e35a3d4a1f173549e553a873615a83edbb9e023d9b82479ca915d73981e3f768e6b3b0788118ebd59509188f4a119750818207c4065b974feeed4d33c26ef19ad49f1bc3020ab3087e932ebd92b779d2cc521bbd22c8dc8fb9359263d403b80b5c4b91c4322061e294aea486bad5a2c55aa72ec94584b6e10865f52b139507318e0810bd9693e4addf6a68eb67338ce626736745164e18f7dc9db40ca11cfd1eb091dcf270f34d29d6277da3850707ea32017020c7135ac80a4c6c5d1ec7c1507239f5e70199c74493b84415f682921970947493ba91d867d3333301419b1d6026d54304e9bcc0dbc80054e5a5215a7da08a71d9a3d425dc0e0e1298a26e481ad7140d599d4a9e5b5a1b1d535eb004f76b826a7ae5935b26682382c36a2b3ce344b50d62e417171c254492306b24a9ac5cc70394333f7e2ba8702bb9803f7761ccd9d01da054408e28e789140c292a3911800f2b315e140dbf32e5fd17e53e866840310cbfb501282b01b65de3678ea0874af1957a1c1b03f6d41ef455aab8881bf89792f547a3b71c95de13219e3d9fd2c3c885edbc59da010eb5d34e9e241e4f722ebf9af70e48a09dffee7320674ab5c8da76552cccba2d7c9e317a6494f1365802b19681ba20fa0e0193e968ca0da1ddc809424fb550081c7099b01e457e33c63442e5373aedc48f973bd8e5fddd6ef7d31dfae5ef859ee55883fdef67f7890f799da76f7f2227d08285caf9fc9a6db1f0c0f7d857b9043d826cd705f7b96cb72baa8573643b771ccda88a2b633663a0715adea078a81f4ab5f4e72911f5aa8d8095337992533ffa9966ca96e61a6cecd61d8fdb3de54f8548f86b52673db75997bd4aad96699306bc8244ddca139cff8c209478a74e7a7acf3d388d49cd56fa3c4363f265ee8c3bca9e9c4d18f9a2ecf7bc73b3efa9db6be02d833243dd6cb646d5153e91a5a13c3978616be14b48e3df0a55498fb96982f862f5d6b9015fb6a2e332ff4a991792672096cbf1c3b8e0afb0606730777c19081da08f4c6d99043095225000daa4987214d277132f3fb8aa40c5a7f9ce0d4e39f6e09661dc4572ff3b00d24d9475eac47895feadb496212e52a23ec321bf9f3ac320920e7305aee06d8edb38eb5f6bafc76e2937c94c09b60cb1954e99d98868b7931ee1e37a96c94e84a0b7d682b0e4ad2030fcad94d3e344c6bba85fd498b2cd175c3b9c1f3ac3b2d6f5f61d2b9212c9b9ba6cb530f6ba9167808408850ca2ce42790a101f20949d0526d0eedd28fdcb901dee72871cd158ca5f92f6f409d17d37a8de52cc74957f6b5275d510d503218614882d540ff30acf829e9c17063ad08d2589c414368d7c29ddbd1aed38dc31e4ff9538f91e4efe764ca39b214a0ec598c4501ec8cb3832032924d40d2e2a5b3fb969e01fdbc15a488d09f438d8ed7463a18dd117f6349150b95e2532c6f012a23b474ecfa05cd9de7a5c9a0f7980c6ccd9b3e93ac6fc0aee80d09118dcb64104a55d1ce1f42eb278b0048b89619d21c80ebdbe100a75f4936351e956a4e3e021f39b2e6042ab8ad9280336dfb0c1576222d541839197c05bc6e0d0cfbe610161c620e43c03decd41280e05a28375016489e7031ca320ee4966b883c8b791758300884f7df2fbef4320c43fadad6ac257c63d54e72b543d327486e4b2f6e0414ff9d346cd87dfdaee52fdb814b7e3bb122fdcf79b9db2be51a2e9d93ceea730d14492badcb68e30c95952ea159e40634df2b23bda31b3633032f4265135a0e0390df113364e07a83018ca0303700154c9540ab761b25985e8ea757eb26c05cf4ed18a415570922cd428b294d527c50f4afd9b3156300deed044f3a000080b2c431252bcc2bfd3c3bdbcec930f63b9262bc65ff8ec6e75a7861c51a6f0e13e7e408a4ce7778560b703cd1841c801358287ba8767245f66ce43bad564d3b773c22726147492ff06c3b33640855e2640e3f4207f62995769ccc0354e454a639095f38550cdc779ae91cfa288e92d84c1c02ae03c7a0f9e89e1303c3d697576ef4689b052d32371c6dcb56a10745dbabab600428cc26482dbdd4f1e8877da6834da4691769805f79737e37eef6f936eb53a7713fcd36e3d4dc032393b6a31a7a0293a8bc4ab0f3437fdcad72222c77b93e7c615cdc2d53676f7b327c6515566d7533bd2ce7a43374ec3c2a0c0d7a87a640103ef1e706986192f6f8aedc730ae4ae2014a0da806b45556c787285a957047d94c67ec0e33831838ca64f2deed8d5fbecb81ce04ae76f5f31721909adb4f798b89134fb48e4e85466d89e24aef6863e9acd9be9e56c352894bd1fc2b8439196273907063ad843bf2230d00a8bc040c781818e0303fbcc49f7b9a9222e301c2a3bd43c1fc15a970b2b6c9df037ca0d9aa31b32ff748760ba6e99a813bfd63c57f3d9cd75327bffd772b852f3ad74c2ef6b5e5353782d4618b753cd884eecbd00787db820e50cf206ebbac78f1e0776e9be329c8c529c4e54216b76c093aefb2f696e263682d9516ab42f8af5527f9cce3e4d9365391a774d9670a1c833d2ba0fed326177127faea9410b437a5c10f14f03ff21535ae78d74a00974d2182d6d9675bec131047663abadcc10a5ec03b5be4b0da032ad4cd3fcd0548912e650c573d4e89e3592c618e6fc80a99dd462bf0cd27582f315ccbde932a191ad97fdbf59e946896b0f699b73bf8c9e5c7b5e4536eb4ee83fa5011e950c532dd38596262709d4e4adbfbecb75223387037c8ed1b7914f0e68971c0963f655901ece6669cef4729af2f4d2ba20a040f0ce9fe75ea619083969c973a63052392098bab6f5e90919d87f388fe1e05a7ada233c988353c4ef788fb300eda8f9154a8613373322f18271bbad9729fb9852be24f690ae0e925acbf8b2966be4bc548ab9ff35fd9c0569294393919ee1483670d2c277c91aaa317f01c585f421484532ba911a01d646838c91fee40687427c38c36459ca38e915f872150e8f695ad2ce9793a85164d2e599e0cf08d1e0345c098d74863f9aceb13418e11d1748f70a3828b48a89b97c000e43909ada4ba79e3b531b2bf3cc2ea90c2325736d6988a97c2853001204702dd3f21a6898530320a02ad3d2800ec51ae9802d92d902ea363ee2f9b6c72fda0ea989b1a95bb884299201a8a195aea521b5d652e149ec0ada4a85bcacc61725d3c01c637c6a8b081a84b86734162d78b69c155ea679bed452a5d4e7da84f34c66993aa43ec8d716866ad6397db1342279b94c78b9a42572d917aad0e3dbd3e344bd05ff314af47944d76c48e0eb86de73cb537b439cd1ccb14a85a2ffd6aa713dee32fe7128901f263253408308b48bea8c043052f4065ed2e21a505b9cef599f5850ef2456e638fecb2acb47d8804f46ac8ec32e6cf9b2fd75d8c2e404120702473651329591b430fa7c08e72e904de45666168580ca1cf82c3dcdd66a332feb59b52cbb98f10154ea7ec8bc3b9ee51e2b0da289700490f24138adaef1f43507f2a845e1c00ea57d0b36147926f876e0f7a3c06b9326788b9388f04eb02924cd696e7c5e77782d5ce1646e8563a6f39449ec80a3315ca3566b5e2fbc346926f8b371c2450f8718daa83abef239a3a0b01e154ba7f108b81d2298047c5434c704aa1043c9d4ea31bab48595a0ff306d39e102900f3bcfc70a220d1071d1269d46e391a52d9b7641d04850b792a8207ccdd203fd376cb427f6ebf719883f627ac316e9c772dc5de448727c5c8ea35a2e2a9b581d8ead558ccfabf8d0d550730723f8b34115f159b20a40898d1ddb5b32b038fadffba66f62bf73c31aee7d774b6b01a95a79ce9cd33891d732d00a5f04e994c047b35baa54fa6c88d0014deb86951e06247a5c3c58b6babe2c16e5e51a71b8e71825435a96925ed0bc4bddee08992d83c92e2e93439a8afb4e6a04e30511408905de98211f20768e0aebce5961e75c7147618624c33a2dd6ce2eeb5d67975684fe23e01c6702345fa272f54b1d01f7bbaf2b2bc25ae754b3e2f2972375b751edde6256d5f940716cc079c372d46f330a382d8d615cdb47cbaae328df8d6d6a7de49378fcbf22d3b3c26e358412e010ecb6445dceef698761840123d90cfe1601f35ad304d306f319965458542d5b5730e72dad06a4e850a919c66608c0342f11830c7827dc30f49666e025c47678ba6710316d61a055b4c782719499b9235927e0d5248a45f7701771c10ab1b45a03bbc8c2a28c9453e85d380c12d179cf6bf02f09787e5b1930434c8535cc0c7118ede0d6c2fe54080ccf18e00cd5764048cb2530dcd909ce49a5ebb852c5e30412281006dc02a3695e13e1279373b0bb8a1e5bc637cbe2100ef8f010a75d03fcbf54469aaecdfac640717c2ae3f94f444f636435172942b326c8c931941a3be8e711a48e39f25ceb02c981de86b18ae82d5e6f35e3d8e14180dae9f853de859b334d98788c07e078018dc251871ae6cf0b1c48c4a64276c804aa5dde180e53765f4b597c8609dcb58e72e0c0c59f3c407d731a5334c1144d54f49d28c061159a8d5c259ec1a3b27c08adcc92709821320decd8491c1724c303fd0bae8ff8023348cefdcac709ca46f67676c8a277404d88f87a7828b696cf35b9a1a5d12a2c1f9ed8164c110d970d23426088eef396fdd0421e7101230d3ec0d7c04fcfc809102b028faacc2ce961f0581b0e5f07af3909262e0a04dcdebc32335016b63900e223316a1a860ae3f33019b4e0239040ca24fb44c33d8c6446bccdceb7a96be85ae11399f938f5d38cf39398a49e27a203de20956b09e0049ae9986b2606f1a59685270d8e610dbc85e8c54bb902913e642c6478e6368484c48b582333601af01fed57f870887967c4327e9aa7b7874a87150e664fc8823116c5e5248dc35d94b458f0aae3602cdf0b327799e0cfb8e8d230ec2cbacb623e2edeaf4c1756e6a4f085bcc825ed868d28a201b2afc32020c06808524d5a06b474b1dc8684012db5ded72cd5190e0883b18934fec0609aa468820841661071a86b8629eb11991196120488a69799afd0868e144e9b37611be0b0c4b11fdc78b03ffbc05ca6d447367111b88c81fef183a34aa890909e703bc94991ce98990cd09343e0103ab8f9a14b49302a68fc8666b20296534384864d3b222890720f1c10c50e95606971116ad048f69fcd1ccd6b266d625807cf0ba3ca79e2e430456b6e7146698b7ba8f688b5c26ee1f1a9431bbcc0b086bc07e70ca7c72b68702db2671ef9bb43c4e08b8072367a910746468c26ce1cf33cf3526b2048302c69aa651e187c0368a5815d11e90a0010454e6abbe0cf4664d2e0c4b170d1b05034522f0d49f0bc57405f0a7ce812a21bb1cb691d836c4513ceb57cf22617bcc0da00635060b34c029f0986d4c8e0c5edc0ef22238eade5e59e8f2a395094b53a12fc810c1b78f5d2accc347ce721e246709436e35406caa0462300485049e8ea06708fce016904e741d4a7c0920d1ee882e852cf2ea6945dcd38b03afa73667e08bb92b5328722089f759007529a3989774a3a1fd13682d44030b130e9cb2c67f83e1c6e61dfd7215a89d0db96710ea9456974639d48036877a0a9e40ac0858ef97670f437a4d9a780810b2c8f3cba003836049b18ef467282a7098b753bf64200b8954b22be3c3c60815b01ad882b40f38312f0d8bf41a69422c384fb1a1c84542692390c945460cad378b39ca88e0ec27912976b1c9b51deb94aac885ee4b4a0c0b79dfe1a125860eda0016e122b1d8edaf2c4af23d537980a2b17be2e6e7d26c2611fdcf516def5960b440ff5299cc61fe05eb79dd832d9f2acbb9d287870f5f19a6e1f766f9f756fa7e7e0faf3201ec32f3afce969e12e04ae11695fa37c5dae13276c6f877d6593c0b9e097eaff8913ba37b9af1b003d2d7c39ae17f3f1fb9b6ec0b512fa1e36eead23cb7504951e9881edd6ec016adbf60565d0c19f853ad8a9f4f8b29c758eb5fb297e1fe040bced1fc8940be7bef2c2267ecd677d39ab6e261ba0084ee65a18991bf0e0c34b8984310b61ccb6c298679d5641f8f786ada0b4a90b2bb3bc6a5fcd651632c19fd18a90e155765ba72d1c4229f866495cb87da594b8030e258059e5216eb84c5c0cbe9378e818a0e96bec6df4f105f132b199661f3e74cce27721b6a45cc61ea0bd7f461957be1139bc09ee40ccd1f130b66f94dd53cc3b4ee829e965a274643846297d0486618200442e315d2d88ebf53ed5d70ad26798bbcbe73c38a43535c916c2b101dd2811a409d5eac51c78e241e8542803db43caef0dd304be6ed04f0d1b1533e9fced24312488d1a6b97b60db26a1878ceddc8abcb56df3a4e04244e50e833beb0cee55877d2aaa8f5dd7d0949dd51ba79f28fcb2874d63b1456c58c4dda36221041f9617af878c3a0bd059782637eb5aafa96c89f3da410e4d07f1b31a4e8cd2b9d6d1d2b20083e0a13c42f6ad05b3c3a94e33813f4bb886df1ee4d21a11468996686d1a6cceb52a3cbb70b040cc6036f8b39db856111ca7c1c66992103a3111e0669f14261a44a4ad79279cf0c28de0adc398743e1a0148f873111011fde9ec1a5db6124ea47beb7794960ca8917aae6c3c0a40246415ad1e2a1b80e65f6487f078bf13e1a0dbf9f3e9787a95d4e3ab69d7e9d5033542578d89234f946f1c95548a0902fb560aed052a718d735ad201324fafb6e6119a23a275014d33198f18d96ac41afdeebd0455ce22478265730918089450e1305f267aa497fa769226e6303ff723bde699f7a95894f30f603b5e73adefc5cedd96577a6337b6e989925c647d12c636426c0f46e7e67e7a3bb1c96eacd59dc828b713a5ee9062ef178afa24b654287d7f54d1cf71f9ff34bebc2abb4cea7608e79ed695a76e7d795a7f1fd1f8fbdcbed242f92f7207522e51237d8e780c959212e10ed552a5748f924bf7253b2ee2cfeeb48c3023959eab43478390544ff3256579051f29952e138d14361b25797fb35874254fdb69d515b6c696136b0f3ecbf966f4c1ed4409bdcc46ca9ffb437d3bb11db9741bd465955d673181ffec3fe19dad66f9309b2d3ac71d41a4bd2ecedb1acf831c0519c11c813d4a37513f1628964bd5539a51595cfec34b731e62f6933451ba294e5792fe342fa7c3517729079bc2006730226310054a9b25251c3c00f5d14a0d9783949d172d2c3a1c31c311d18aa174b26838b0d2f3f1be97991980c9dd4b97ef4b0dc65286b50a51f5598165a534059a1ab3e916a7826011aa709690c9148e7186cdce56e641fa40f980c1890a013b06420fd29018b6a5399b3819ba92cded6c3649c6dd7dcd615fb3b662570afad8cb649a5ac19fadf8446a966587663e474db2d394cf5a53c1c19a02ff0d012e443ff1a181602a5603170d4b85b7c0fa42043356464613531aae1ab7af32383236c7f5ede973dd9cdbd33fd19cddb7c7d4c2df4e4c120ef3edd5babb26eb1e18b98e52b8d3ada507f4be7fe94633cf6e161deff7b03b5fbf33da344337a5ff9b74d3463b2d66c987f1aaa9c436a39bdeed13b0ed09bd4d78c06e84777bb2d2147c28e4aa16fa3ec855c87f4e06765bea71abbd9de844f7e2d30d38e65cad40d7b6c21a7b726f304f2bda3f491e7540f1813caab3e822516fe99a42f752b6fadb57887dd33dc2da1a25d4bdf8f8ebc338d9e5448e06f912e45e9df4f443c7a982319022d0ddddfc1f139728ddc75dd88d87d89247ebdd9bd3dd549a8ac106720c8d5ef6c7ec1ef6476c17f76223e8a4af6f9516cade4e429f207c5fbc460f73636fdcc2dbe94fdf3e7afae8d9afdf4ec5afc5feecfaf37c7c355a089daa20de1455315d8ce7e2ac1c8ea6b36a76352eeba7e2683a9462afaa041eadc5bcaccbf9b2bc949406d2198c87e5b42e2f057cfcc562548abdeb62382a9b5f9e8af3725e8f6753da03c5637ae0eda3f8dbdb474fbe452a9f673762527c16d3d942dcd4a5588cc6b5f830ae4a51fe382caf17623c15c3d9e4ba1a17d361293e8d17236415d34171c49f6222b3f78b623c158518ceae3f8bd987ee93a258b445a7ff8d168bebe7cf9e7dfaf4491628b69ccdaf9e55fc70fd6c70b47ff0faf480a48df6b51fa655595353fccf9bf1bcbc14ef3f8be2faba1a0f8bf75529aae29398cd4571352fcb4bb19851c93fcdc78bf1f4eaa9a8671f169f8a7989745a63ed5ae335e51cd76b0fcca6a2988ab78ff64ec5d1e9db47e2bbbdd3a3d3a748e78f476787c73f9c893fee9d9cecbd3e3b3a3815c72762fff8f5cba3b3a3e3d7a7e2f8f762eff59fc4f747af5f3e15e578312ae7a2fcf17a4eb598cdc5989a3576a9382dcbb5627c9871b1eaeb7238fe301e8aaa985edd1457a5b89a2d4ba8e4e2ba9c4fc63575712d8ae925d2a9c693f1a258e0de56e590d5b3b7d3f1e47a365f885f8ba2168bba1abfbf50e2c37c36116f1fe1f2eda36fdb87865551d7af8b4959378fe0ce94ee749f43622765315c34cfcde9a2fbc8dfc4d170363d5d5ebd2916a35af9a76bd73a153f35affefbfbeaa6bc9e8fa78bbfd6cfc6c3d9b45e4f679f8a40f3e4e5d1e99bc1de9f5eefbd3ab8787372f0fba3ff582522e533299f0d679309a946dfbe9dbe9d2e8b39f2142fde4e9ffdfad7e2df5117b4c9879b29f052c5e38bfae6ba9c3f117fa34d39368fbcb8287f5c94d3cbfa31bdff54c48790aa10edcbf4e3e3f8aa10f37271339fc667c5bfbd7821a63755257ef5ab784bd2f8fdfc9826dd5351ccaf6e26e574513f117fff3b26224d51f113e74009cbebf96c315b7cbe2ee5bc44dfbe58e5bcca952a394625910abd755d4bba134b2bc4f88378cc8fc422518e9fafcbd987f8e68b17e2eda3f7b3595516d3b78fdaa4db2ad14bdff2bd9f4459d1bcf9201e7793f837244113697ad597422c0f52688a4525bf28d6cafdb4794dac46a278212e0ad95e761f9955b379fc99be767e1a2d26d5d97851c5b7dbcbce2317eff9372adae9f8b6fb53738b1e788fe659cec6972215bfe39e393dfa1f0717a7677baf5fee9dbc14cfc5c5fbeecbd345395dc4b4f1bd9be9907f586c1466d19475b89e1d1af7b9b81876d3b88c6914571b0d72c677e8e7cbf574de3eaaafa96f29adcb8d7642cb5337b4837f5ed68bc717c5539249db8667483e34347f6d1b952f9b468b57a8397f5fac1e8a657efbe82f4fbe15cf9e89e16836ab4bf169341e8ec4f5f8c7b21257f3f125adcb9359bda0257f3ebb9e8f8b052f9257e365c9a349d494d7b43b98f0fe1fe6e3cbd8776d37fef645a7df067b277f3858eb49bef3bca76f51c638fbae8bc54894558959fb9496f4e96c31a295791c2701ad9254f218c224d7ca468b5e33d639c566297cbc56eea748ebc9b7ab5787bcfc89179dd5f9715c13e5d1fef1eba7cd0a89b18cef98ef4f3a3fa03be24ff8fee4e92ab96e6ecb71f9e9bbd98f82e633c94c6f1f896f365af61bbab97dffdbb565109b831ccecb62511e70ab3d8ee3f36967a815753dbe9a3efedb4f4f5763f1e96af9688bf8bc698676f062543d5fcdf4b8ba3c79da9bf5db47f5f28ac6609bf48771553d17eb0bc7db4797c5a248a8f14825a3bfed6f9fc6978bd173b1b55c8c4a12da7a7e882df9bcf9120bf8344ef65ffdea8e82f2b1fd53acbaf1e1274f79003de19efa099fb4a59df0d87cf71bfaf9b7efdaf1d94a149d0943c3538a13744f2dde51f2ef68ec6e0e5b6c903bf6a166dcaeed4728de6afc625475b7a83abe74520e67735ac0da17b050f52cabbfdb901fe2045d0910dfaecfae536c3e54aaf5bcfedc94e72f6b1be2da2bbc2feedef89a97e34f9df7e5a4b87ebc6a8acba762bc9d547f5f532a6ba352888fe5e7e762dc59a32f9f8bee924de3f6e48686fedb47e5b29cce2e2fdf3e6a7efea999ca3fad464adb9197e3faba2a3ec72da24798a2892d8f865180127dbdf24228bff11b2f9f2f44ec9158df23def17f7acc157f73332ff76793ebd994d61e94aafcb123278a3bb526f72fade95f5ad33f5f6b8aa3935697eff6f6bf3f7db3b74f833cfb76eda7b3bdefc40b91afdf3c787d76704233c5acdf3f3d3cfafd593383bacf9feeefbdc10c0a1b2fc44c8d5ebfbf777272fcc78bc1015233a1efc71fded04f59df4f27477f38c48b79dfaf2f8ffff85abc10365dfff1e5c1e0e08cca62a9f0bcf5f046f26954a2d7a80d3f969fc570768911f2ae9c2ecaf93beac577f575312cdf3dc5338b4f337aae168b51b110c3622a86d578f8511482cfb59afd2766deaeabe3fafbf2f3fb5931bfdca7e71f7f2c3fefcf2e9b5d26ae3af126f614ee86bfff7ded269a94d6a5474f1fc51c2ecb0fc54dd5c9a955fe62dacdb578218e114b2f596aa1b457cbfea2985f958b76e1a7c1f918ca19f5f8b7622c7eb352fa64554eaf16a36fc5f89b6f3a5b0536cad9cd7c48eb73fbf09fc7ab9dab932eb5f5781a9f7fd2dd41687b8b055deddda3a23efe347d339f5d97f3c567392caaea31bffb94927ab29682105c9b3f7f2c3fff8576543c88ab6f574ffdd4ee3afd5b24a7b1b60f353a726cd13b54e2d83fffda0dfeb51bfc2fb21bd0849bd6508afefc5d63adfa0bc4a4ce22b93fd87bf5e6e2d5d1eb8b577bff215ed01bd095865531b97e2e26c58fb4ded1c8795f0a74cd62544cc5643cdd4c696f70707276f1c7bd93d717fb7baff70f06176f4e8edf9c76d2fccd5e55ce17bfa5048765f51d96ceb3f2c705d54bcca6fbb82dead1eca6baa4ecea722116b32bacd5f2feec784fbaf8fee04ffd791ed4c3e2bafcbefc1c332aa734a62e31de67378b55096673fa5e91963f2aa697d583723ffee1ecf4e8e5c1c5fee068fffbfe021cdf2ceaf16589bda02dc3fbe26bcbb07f3c18ecbd393dfa6e707031383a3dbb387a7dbe37387a79b17f783478d92dc2feacaa8aeb7afcbe2a07e39a0a331a5797f3722a2637357af637afcae9cdd1a29cfcb6decee6f5d9c17f9cbd3a78fd0357f8e5c1fef1c9ded9f1c9c5ebe38b57076787c7ddccfe7d7f365d943f2e28c133aca6c9252935054d34b666c61ea6a901a5229a2b3a2ff6d4f5ee421c1cbc3cbd3839d8db3fbb38181cbc3a787dd629cedbb76f1fed2e5223e1d7dc1871b92f443d9e5e55a5f8efa7ff21a3f283a5672a400e1ecbbc55d0c3e3b3ef0ffe747ac17fb92b4e0e5e777be370b62061e2b76236ad3e8b62484b70dddc5ef5cd9d493fa413621e5fd601f1a507677c7fc3df598c5fb6d15ffff0eae0e468ffe2e8f59b1fce7a16b3dfbcbe9994f3f1f0687a7db3f86db3b9d4b48ad126f2be14d399b8829e3b8feb5bf123c924ef678b9128e625095ce3292de3f7e57c7c72717a76f0e6026ae677c73fbc7ef9b072cce6a78bf21ac685fe12d5f1e7fb8ab0f7dfbfaa08f5eedc27c55f5725fcc256787dfcfae2cdf1e9d1d9d1f9c15736066dd5c345f579bd50b7e57cf685cdf1a565e956fbe796e5ab4b51fff205f86130f8f28cef9a04c7e70727bf1f907a47bbd0f177a70727e707176ff64e0e5e9f9d5eec1feebdfec3c1da183c5e96f30fd5ec136f4697b3b2866c5adf5cf389dea8985e91ec337b0f81f84d31c752517ca0da4e66375312f8a818e2d9337176fcf2583c1e56e5a771fde4b97835bea23546ccaa4bf166764d72945816d5f812f29228e7f3d9bca60a91c8d4ae43248a4dca79f559c0a0288aba7959cbb7d367cf48747b0e79b67efeecd9d57831ba792f87b3c9b3eb28da3f6b0f049f8debfaa6ac9fa9dca61da5901aeacdf11b6aab8b9383fffb87a39383d38bb3bd933f1c7457cddfc45c3b9dc02a89b89ecfaeb1162e44551635890a25ef158d0575ab5f9aec0ef74e2fbedbdbfffee5c9f19b8b235231f7f64978edc9578c8afabb62f8f1723ebb7ef1b7c5fca6fca9539431a9c7ccdaf8fd787af9e26ff1ada3f5fb1232d04f779607fbc8d9f1f1c5abbdd7fd5b64db0a7148d4a82d49cb9f66ed06f9ad282e2fc7946951ad241a5aadc757d3d91c0395d3fbfd785e2f62638d6b56e9d1aa4f455d0e67d3cbf5df86331c37c856e7194feb45595ca234d5677aa666a340510b3ebcdc59d597c73f908c0619e6757f6fb3ced5a95cac43dd1406f97c0bf52d2a19cd80b8535ee82bc38e0187226c65df197d3f23f783576fcefed4d3002fc775f1bea2a9be510e6cf7cf3e8dc68b128698b64fe4ee8c3686fae0e8f541df28bfa9cb37b3f9a2a85efced4351d534c89b0a7726c0ce9c7e784dd539391e0c0e5e5e1cbfde3dad48d6eb4c121a68718c8a4fa3722a6ea654bff9acaa7a96d737c727677b838b28025fec0ff64e4f2f60033f3d3b397afd87f5fca856bfe5e6fa7121da55897fd86f4fa81bc1bf39ff5ecff264efe5d1f11f4e8e7f7813759c38472f8edf40ebbd78f5c3d9c19a8475525c8e677f98cf6eae3bda05f4ba6bd653316068724e6e163745557d16e58fc3eaa61e2fcba7dce7cd938be22314dff978361f2f3e6fb5c7e9e0e8e5c1c9c5ff383839c696d62dc66935bec4bad1ec5c4d3defdf2bbbc90ef6be3b18dc997855bc2fabd32fcfe18436c2980dedc017e77b831f0ed65b717a5536d92c8beaa6e4766bf228687d9b176c77f93413d3d934817bc4f466f2be9c6faf43af7e189c1dc52cef540f5fdd548b7193ebb66ac8bf1c420bfd2d8c1af1d6d9bc187e3c5dccaeb795c6d33747af5f37530523f6e014a2c75a7b5e8fa753cab339f23d7db537183ce3c399ce3a4e92784d4d8db618d7a22eb737bbb3e3bdd3b383938bfd9383bdb32d09e76c56d48b721e0fb31e3fa1543a2207e53125dd3c3a0855e30fe5f0f3b02ac5a45c8c6697b4f5c59f946fb795d3b214377571558af2c7827429319b6203b99c0d6b518f17db9272534ab4cbd6fab45dcab8288da7d5781aeb5fd462bc1045f5a9f85c0b7eb2168598969fee14045e1eed0d8effc099be3ebe383cd8c378d85f5fab5e8e8b6a76f5dbf630b4bb4a8d3fc423e0712d6693f162d1b34ef5e7b23f383e3db8f8ee87b3b33b72ab61e5606bd0e98884afa69bbf28f393bd3f1e9c5c9c1f9c9c1dedef0d2e8e4e2f8efef0faf8645df07c392f3e616ac5b8e88d5cae67f5b8599fa3b07b473e7bafff303888323cad877b270717fbd4b5bdd9155525c040dee650637c0fa9bb69e82d66e2fa66befa593c3e3b7ef3547c777c7676fceaa9c0b1c96c2e700cf2e4eda3bbce1dfdbf2ccdffb234ffa79e3b7ecfe756b578c16733d973f1f6d1fb62f81152dcdb47700ac89fc3adea7dbc54067e01534442e18e4ee9ceb0b8ae193f956f063c064713ba36fa39fb88b5e91a24745d5c9537d7cd2ddbdce2c07cbee938c3cbe6dad3f568366913425655f961d1dc403d56a9a20673a6a8c61d8b1277f2b0c8633cad9b6be4715956f1fad9b3b867e360114f208fb4791e59a878e590bc6eae145d99e60aed609b2bb4816bae507ddf5ca14ca1b94289b2e60a55ce57a52baaeb51f1bea469263c5e2ce28f1e2f36bde7f162d3291e95681ad6a3124dab0654e24373854a5c3557a8c4a8b94225c6cd152af1d7e60a6569064540599a460d28cba4b942599a0e0928cb2c5e65284bd39f19caf23f9b2b94a5198b19cad2746386b234bd9ea12c37cd15cab26cae50964fcd15caf2637385b27c6ea603ca72bb6afaeb9be97071835987f99122e15f37d32545cadfb497482c692e155293ed25aaf6acb9e4327edb5e22a917ed254af9b4bd5c4f395f4f395f4f3947abbd6b26abc2bb7f6e2e7946bfa5ff3577f0fa5fda4bbcfedfde3e7a3bfd6943849d5d8e3f8ccb79bba628d4a11e8ddbe9a9780c2ee6555b740cd8aa7980cb3a2917cd18cecdc60dadedeace9d65f86ebc7855d41fdba214d5e2b9504880727f2e34be532acf85c57794f3b9c8b6d2dcabc645bd5a298793cb8d220d67934931ddbc5be2146b7d299c8ca73775b7af26b3cbe7625cbf2a868f9fc0959613101bcdc41ad77a535d579c5433bed834bfb9427f1a4fd79bab5932443d9b2fe0614a1bc678bab8192fc6cb528c4ada2e9f3d831fe574f1fc129a7f2918e93fa9c6a41c5709bd9df08ab8ae4f502b7e5f7e6e9bebeda3fff7eda3ee887bfbe8dff8866a6ffc3bdfd0ed8dff836f342be7ffd95d38df3efabff857d7def87ff8866f6ffc8a6f84f6c6aff946d6de78cc37f2f6c613bed12ceb17dd5e42237727e0db477fe31b7f6e6ffcc437fed2def83bdfe84ca5b78f9ef3bd665affb7b78ffe5b9c4df181dff0034fdb1bbfe51bb2bdf13bbef16cd59bb1a3f89474473f3d7b267edf7894343dd7e349f24228fdadf8e69bc6cfb09114feac9412df88f15f7052fd01bad5f8dbb7d39fa80caf6f26d7c525bb76aea599c634f3de2473bf4a717a33e134e562c6ce8f8fe1acd1e7af339c4ddecf5e158be1a8ac1f174fc5fb754f9d424e566bd18b17e27de7fa57bf1285fc587e8e3f7c2c3f7326cf7eddc8e953523a4853638fa3c9fb5934beb0fcdfbdcf8d2da9427c8734c0617573c912e76d399f91c43799cd4bd114016dff54d437c311a988efb0eeb02b53512dde3d8531a6fcb1c0c9c16cca29156db775dedc7bf7b4f18482cff83b1284dead5485df935cbcea6f768a8a62b42878c17b2a4a7925c5bb7fe712fcfddd53f1a92435f6e6128229129a96c3b2ae8bf9e7b6b46d65a8b0c5cd623629a0a755d40e6840c89fabdca3211fc9dd4c914a7949ea1d89b112458dbaf95314665c0b2ae8b2a8cae9825ee69cbfd1ef1a61766dd9b92ee6353c06d02d1de7e1b51f1ea38fe25861af7eaa9978c19d27e7e575550ccbc7cfdebead9f5d3da5d9fbe8895ccc06b34fe57cbfa8cbc74f647d5d8d178fb122b01b2ca5d3196e226def6294357ebe74b39d1917981a4f63fe174abc885fbfa59f7ed3de6f7db92ebace5c6dc9dbd72ed49f2fc61b3ec8fc006267d6a26616a3f9ec13ac1007f3f96cfef8eda3df17e38a7527b456677cd3d28549c997dff07af648beedba73f1ffce8b6a7cb97ab516d56cf65154e38f2552194e2ec537d8b3b01ce21ef7e835df98cd71efdf38cb279b9ed154a5b811ff1955fb8bf8b72dcfeaa651d61fec4b6a534eb83bcd55d77ef3624bbcd8c86115bfd46e837727bcb5c526d3f2c7057859c57496f092d3ace30f2b4d2b6cad3ce9780c6e1667bdc07f5b7f188fac8ffa5513b6ed1897daf86e5baee7abafd1af1c3ee71fcbcf6fa3abde4fdfdeb5d8c201538038b8596a712018471fac4dd10cdeb3045c958b669ef3f6d15d06b67e7c5c7696818f2caffcf92fd84f576dfc613caf175c5dead4529248f67df9b9ed4578615cdfd4a3c78db8f6a41b6ac72f15d5e2ae7720cdf5bc52c7feea7d29f671cf6b24e5ddf5164b806b2f51d5393aea852825be7dbb4aae15e7ff8c5fba439874e2596771479aabc1df6eef5b2f6e166be3c958bab551b97a983b4e7e98cf26fba3624e2f3ec67b1b4b7493cab367e2afb371dcfb60c1a2e5a72eeb260265e5d75b4b7af271b4173fd918a52fcb45399f8ca765dd71445e6dff1c25ba0a88591fc952ec5d15e3e9531ee2488f5f8e8242dd2f25d4e2f1bcbc9e9735edef6cf312efc78b49517f7c12ddf0b62503eecc4fa5b86c4abc2adbbbd8c3ef308fcaf9a2b5d435e545725ce67be6d71d336b734ead36bf9f37d63e96e535d2a35b5f3ed6c40bb1f154ff30a375f281436c7316adefffdb4b7bdf827ee70271df1a8f45e32fdbb37f7371ba2f1d5eb07a12da5c46ee4b8897969e84b696b12fdabe7eda526e3626eecfdb7b4e4990bb5bcca7df86b369bd182f6e6843a2a770d0079b2ba49b5adc5cf31c6479a3239a7309df89e4b78d842ebbf66c928a68eaad8bad7c84f5948df17cc13e37af8fcf5ab13a8ace1b73bf96e27426de41957e273e8dab0a2fbd2f9bf758be7bb76ae3a7ac70ffe5dd93ded93e9dcd274535beed15aab77e64c1faa9b8ae8ac587d97c72bc2ce7f3f165cf1ebb4bd0de12adbb0bf47a1cdcc7cea08aa9c7d0b346f64374415c0dc4efd66f634cac8794b60940608e5698df45d3cc76b57e2720d2ae596a38594a8587ef6a1b591fc5cfb71683d8fc9d7094fe5c577a4bfc89a4b58da73a75defae979139a3f2d96e3ab62319bc7e0fa9b697b8a267eb7fa55b6f93c17ed23dd9e5995a3cd146e1ae2b978f6aa18fe7dfc6676f9f7f19bd16c5afe7dfca6b87c261765bd686bb60ac6d83c237b3c7c227e5ffc7fecbd8d7a1b379228fa2ab026d72463aa297976e6eca1a278645b4974225b3a929cec1c51470649906cabd9e07437256b6dbdcb7d96fb64f74355e1b7d114e5d899ccaef3ed8ea946a100140a854255a130124329afc82ba6561d2cd8c924cd525e89d22ea933b562e8768bbe2394d51d65af0ecef46736914b853037a752723da1170cbfb342ca8a8dd3428c2a59d086695baa0a216c1ffc8c18695e2e8c6ed04a92debb7259a559d9a382966f63fcdf4b51dcbe9423b8a4e29acff07ef239e675d2007d76de82d94017650b4b8f16a2005bf44b53a400733e17ad2e6be9a7235e3a15bbac85a34baf05fc558a4c000f9e8a8ad0fe52aba7b06a6caa92622a4085979d7e51523240eda332ddc2cfa74ea3aac87442d7fb2115d9589580a055a8f5a0ccbd9eb586b247d03e59546fa99d824f55f9e9a2107cec42d58672008e7e5d41812a2abc903906baadd51d5d3b3a5fbd1e7b2d2bd1671382629ae4cc997af04e8bf70b51a40a8667b04ce6fc1644ff8ce753d82a143659b042cce5b5d05ccf26cb6a5900073772c7c3077590230318a6fd21933cf8846a96ffed39a608f13fbe5e6699ff653f5fcefd2f876969d0e36c9a0501eab9299b282ef2cb0c63c5b8e1a51eaa0b60198e7ac8e7627c76bb08795af54a7f86f541e03257638a949c8e6662ce7d56f0892df5fa56b56b8b5e7df46b7bc879c68b3ac85894a3225de8c96de476a4d6daf521fc74c24722b22cbd5900faaf85d25be846e0d457e5628913be16d2b505d7811ed0a790301cf49b3c3a5d6b21aa9ca9574be113d178cbc42ca94fe30da0f90319640575ccaa7b385b6472c4dd6d0397d4fefb4ae4e5fa2bcaae15afe61a6b230abff65af078ecbea61b796a8d8a311e5aa39ac733c1a43fa0bb35f7eaf393fdbd9f95bae31eceaed332adda1d3cc9dcf0ec0accd6cbe98cf19ced9d9eb165a94e6a9c8dc5a29aa1a18e5505bf1645c9b32e1bf12c233b216c75804f16ad92c169cc1e6578c5041fcd580e5a23ee8b0e1eb59b122ea32866825f0b07035c768006108a57880d5c2359a6b446384c42e4ba2a7114d7e7b7a44aabaae3743211056ef570d034c61bec349c3bbdc6cbaee9d550ccf8752a0b6dd5a111c325f8a1603cab4421c65d323ba9e6caab74b180db1bd70a392b97c34da5d23239317453a46e0fdd4e827edfe93231d6e345280f88534cac2cb4cde65b75fc44fd03bba7cac1ea5fa973b75cc0d79b99cc1cfafb4881512ce97e85786c6003cd2d95846e118f604a0059a4d334e7197412d889eec892ad60dc353154189b493e294d47ac46e16fa85195187f06b741b34ce1c24e8ab19931cbc466ae122f0e0e4c0bd05b31564decd220785961c6966fc9af0253df566cd34523df022ed960d21ed5f791282b59941daf16687c7fc36e859f993dcbf5ad1db70e0533dd073671d91b0272c9c1e9c113c725304f7d9c54538f67fa8270bda262913e1b8b4c546255033c27134c9f9101c142db39327301a00e96bbaef307aca37f26595740fce109697e632620e4ea3d256172ae047e06eede4521af539034c8c31d2bc0da1d5784715758012e7d8f075138f20e124a8d314292cf05a49d9c097695e6e352ad58b59440c42ad182066dd5760fc52635532aa9cf09154c7e263874b4926c22970544582e7538258943ddc7bde383be19f476074f00167555a4d3a9301746a0791489b829d8c84ed5695f283488809fd37c0cac1a6146dc1930c857c10d36c2397767cbb4f6b4de6fb56f51e7d97221ddaed3b439c3209a285efac401f583b15839178e72cd71ba23f55778142172c4fa08a364fc7387fd287251a4a3871332bf8506d7225833710c6934befb055e04051223862236ea7febb0635ef02c13991df64416f181c272546bf35338053086acd2b81e3e8953ea547a587bbf9591a20989901c8594555793d831ffd217b21386997fd8f7ec29843999243f4f2fc0ce6bf627f6cc2fecd7ed8f94059009b05c6f3a7e2cc0b2a98e66d477ca2d54f1d115db0decc4100696efc155a85d06ff266909ffc2e83a3ba10f5e7dbd70ea8ec57bb6cb36b7cd27a53391b75e7f0291146b1abd7af5efb8d9371455331fbbd1058246c5cd89940a89ea72402f0ac68b936b2cb5eb0286f7e489936d302d0f69ddeceac1efeea2078462815cd87dd01f15a8a9f6f831524833839af82d3f5daf86ed84911f66a4bab26a7b8b3d7338a70f043a57ffa38136d9b68d37a1a940029baf86deb685855cb43b4eee29ec190ea896718a5828c823456d81142db3746403555824b8859994a73217fabce916d6a2b32ef180fb0db126a5bd527fa134a0602d172c1eb0e536afd6885b8302b75c30e8e1f9d5058dedfcca07b8f3bb4d54804a7e022dfb875e37479349292ae6728437f254876caa71b96ca43ed506a4b1fe0ccc03e0e7697a71bee5f75783818dc903dcbe08a6a079ae99696973d719ca2ac238c8f4aaa02ed473725a5282177224dad45c976d7776ea1dc1d6cdcaa5f6231c8748cf09db050d1ffa11f6bdf6d3198f9683206513f8cb0df12a4dd19596ddbaa7b608fedab118b554d638e16f53aee539962e0a71bd3a680c57f83383f719f5199ca2e539fc7151f323b25064b067f4437b6a49cc069222d739f774ce71f3c1e0f7667724f32acd1d9adff9f8b04daf0a8838083cba12b71db7220b338d17a25c666a59614e6c4fda3ef2373d101c4e3b009296afe558d4caeab19aad831c23e2d43947d5e9b3167ba29d8d84203646a335fc90b35d3615d52ff8479b54892ef2bed2cbba763309e53361f0ba68c78e8598fdcf437bcf09db9301aa198d7277176d3ec13a1d16825f3549baa03e5aabfcfa44f2fa26e8ce3bed4e6e418d8758b06e6d5412f5e051233fd2da44fe3a07f2609d8b4e4424aee82d6e9bc03e88204cb6c8ec0a4380605471a1b5820c0d84f048d128cf581888ebcc9555321e3f661155a0463135ac8b68a4708c5eb5018523d712cfd53d5098f5f58fae5b3416effbf88ff359093b1479ce47e8791fff713e2ba1dac7660d8922f239224042d96f852e4c75df3d219c9b957da104e5f9c54eb8a99072cd9c1de3fc62e75e01e9e8726a4e0822267d8cfaa7bae2c512b39b599a09d646dafbebc5890fac6bb4a627560d47bdc20355aae9f9b61799a6b36f9b6de52e08bd81b534e7b743f1ba9602969cd4b658b12ac5d4986f406be0e81686f9b43ac115132f1780b62ba57959e1656b08931c8b4c4c01ac926c0e163b636190ac58e62c455bd9828ee209dbe7a39941a74dd3f0b718e3f9dc783a866282d1a67066708dd307eaa00e293d0c2a640a4eb23c976c22b34cde18cbbbea133457c26566f27fd8b0b286e3ed41aead087abb289d33aef14eec029590f9351ccdaf172546fc401603d354683a81ff22579458803bcc9f4b925877eb3cbd8868c393f8ee5a9ea717ee0eeb56eb7deb1cde14bd6c116e5e91fd6092478f16662b9ee494fcd66bdfcb815bdf45eed9354142dac1fb8b59ff57df029b36f13a3a80ba17dfaa2d95d970bef856b7ee06451344c620c34aa1090d27e95f8295aa62f94fe1a42f36f54af03adf9b38f693d8c1b6ec757317593e68255813f6518728670d7420f2037783394ff38aa77909c2199c22637676bb1007f9441a600a4696f914bd38c669a43d4aabed8dbfa6d54ce3841798d48fd0fef809d256a34a9cd21df764d2c0eb313e6fe0f19aa88c30f74ac66e64ea35658f19a3232462c68dd5aa7a4029025b612870cf61314eff1489f67966444b9c90f6abe768ddf9a911a081fecdb4892dc51fe1fe0eaf2dc22e3cc3544154310d149f68c20011f289e1e1d9710e638c2591da8dc928967995ce854eefab4ecccd4b33360be139dd09b34ff3f12fd4ccae6ef01cb47f479f76a00cf9fd83a6a3d87a289556abbbd6f26f337e404749877db8b35caac3eb2d8ed8536daaf8949c43b6f7b633cf5c0438c5acef7d8305e3195e9cded750df3b8a3efb60bcd61feebac66bad86161d5cd0847fc871cf99a0dbae1cea7530ccebc621067802b31211a0d658d3e069f84dc3ae899a323ae49ad94983fdec716650d9e3d08601fcbc0e1fba83e8fb2cd935de3df7eb8a81fd5c63da6023fffa94c4d7045f7fd4045f5f1f16faaff9b0504bad66cc2cde322fd10ec1e2a45750bb95f466225b88a2eca99256c700a6e5f3e56402efbd1ae0b4dc1cc24780eb7d3bcde490674c6761e92b4d4e8daed763708549d189b32c1d161cef444d290406db7483b564be69f8bc928cbf4f25ddbe569da9ec45fdda9342ba2c760d5b6d0e3ac254f52547eb9091277f5bf082cfd907447aa720d9998e39854424a2ac10b2207ef8402fd4deb1b362090dd4d07799542c7393aa45ac8e1b466373669bcc543cf367588f869c23aa1876b073ba410ed52e5abe367adf787126bff0a8b191e6b1d7478f353e910658796d4ab01f64317fc92bfee5a8a05b5893041a3c327ed46634009c265be638d9520ab7eaac3e7338a0eb12e33a1537b4affd0e0cd2d0dcc359e59754dc38e4aa1d151d55d0a915a39f539ca4a5c2eb3ca04d07cb3a0cb41d4909603d9b3ca3d9495050067f3953e6608f381dccb0d69ace5393eae48b4c1fa25f73ba28694a1353abbeb80e8f7587f81a326b7eb12122fa358788c0f70f11b381ae39447bb1fab38ed1dca0f0da5873a06f34fcfd63b5cb6bedad09c7f5e5e431225a73a8085c1fa7ea85fb887e386edc92d666e397bc125f8c8915f23587ab401fbef1aa5a0fd871d3eccb8d55215f77a34db34f18abaab5fe589f6772f8c5c6aa90af395605faf0b1aa5a0f98576aeecbcd2d35b0eefcd2cf4f9863aab9fed84fab42f0f997dc69059fafbfd30a3eaf8fda17661021e3922859a40bd15977c06f4e0e4f052f46b36335d29212597d3102c49b5b77bbf22b376e5a6123f7ebd7410d9f7867453a075b595932e7791b39c1dd7728a6699eebbb0e221fd30d87b8ce860c7ba78a819074ee55942cd27940490dec004ec0f62527f50ec568a670b6cb2af0d8955561f3eefcdfc1a0fcb6d765ad56c74bc6f3ed37f8710523dd88562158b1c4d18359505174cc8b311b16f2a6140513f9755ac87c2e72cb5490a3856799bc29d11060e35818673762c86e6471a5d43545d142f051b589d7c9d090f65c56331771699e21fb8f57873f55d5e244fc6329caaacb86cb0aec9e936596dddacea15dc3b97c6bdb2cfb68bf2456ba49f3b1bc619bdffbfa9b291fd345891a0440b95d27bc4e469d428e9723a8d982774a5e035cab491860df9f235df7f36bfd6eb47328f293f9042c5f6f1964a5dbb47346024681b51839bdf8c489b41552e7d12a15f2a012f8fc1b5c3ea62324bd21897287a5f9b5bcc24b678626268c29adc4dc8b5a7a2b87efdebaa60bf0ab0df9e8cac442a90f62cc16bc2cbdcbe178171943f9f0cab79c2fe012253ee2d3dca8d2145b9e66fad0562192d16b536715d48dea7c7d49837cfe08a3bd53f54066507dc8610634f6eae84de38e4d720037fd05d3fab5bc12fe78639c3991c53e1fcdda72f8aecb8c0bb7d7632f65deaae0354e752e9eb05cdad791206841f3aeeaac1bbf4dbca33f3b6c13b0a74d0df7832c46ce4b4bd05ac57856083ebe65a59c8b6a06224a51c1c91ee72c1dd5dc2347e1376df5bec58b3c2c979b40b8cd42e0c3ecfd2dede386be32a575d452df6943a01cbeb34efe5e2f607ae8365ef547083f96a8cb32b6ab5ab16144ec3b9685d144130ab95694ec2a7008d149e167a7d90f19f686b8463f72517f0c5ea1f31d8c6bbd030f2c527b04bedee92b717b41abc1e978dde16625c81e3dc87bcd0b5e4c4b488334827017e05d1d2f406f62f2dca81dd54cd035e3f97c59f16176cbe6a298527a4f5a6e295e5a0454441bdc97709746534e908d60beccaa746192b0e39b809cb24ac07d65c8843d132c8317c8a49673462898200796a5658522a4e257aa576224c6221f391746f73161b6bd8dfcf6eddb7725fcf2625d6070ed0f1329fb6cfbe99fefba0c7fffdb5ffe4a17b8211d81cc4492c929459d2413293b90ca522eabc5b22a15b86ea5515394c377db5a1056125b0ed41b0d7a82dd536a539621a443fb98d4c1717420a39e6a0838e529fcef9fbb2c49d009131811dd9b5e3667072c65b885a3f4496450371082e403a2c0ab28ae616085cdc06173af36f5def9d665c6f0580f46f7eb5ef32c928239262ec2cba051a1a1c5b7bd040a517d96289d358d9790f7655c9a05c286b74c2f293ed657ead32ab2b0a8cab06957bb633cd8cd868209688fb4b1107e18c083b3da697452c879b4623553f27a1a3697e663277c47ba6c6ceb9e41a204451988b3c3ac2766743cc6c6380878b6a0abdba6a9d11333ec3e8457a9fb119e8c454870cd546a80885177a2811779131b7af1d75cc7d2cfe5789989045da12691216d897dfda3eb7c448379dfff93006c99f759fb46faceef3aca5f5271d3af7f2240f26f9a5ff4190dc17df38b3ee38cf7cd2ffafcc626fd70fea0c297bc127dfa57773ccde01398ba6888991cf6e95f0d4513d7777edb5e0b3eef9b5fba1ffe61b65fff64ea87678a7ef46bd761c8befe41afe61453d1c77ff0a91be0e83efd0b9fd419b44fa7dbbb9dc61c9f4fb7b6ffbc4969aebb41c6cfc11f24bb676f90c30d9842aab37722f2ebe4f5d1cbfdcbfdd7bfa0f248272b679dc123a2ea887550ba9e763c19a6650b37d6e7b74a67c9d2515a65b794cae8ad12589b90a2eb2d04f1f042c0f33f3a2f712e6ed8585c8b4c2e40bbd1799f12d2c029fe66324ce6a267916da6f9a6eaa75682c1ff3e2be4cd518e19d7943655aade5605ddecaaad6327bc60c281663a62f8c54c8cd431bad569d3b093b4dcc7472ebbb176c0c0e08899df420d4bfe871363fd51aa31a4f9f47496ced5306deada412df8eb7f7c0dfefa1afc35f8dd83bf28f3f0b79014a9ccd2e1e536e6231b6cc09ff0422a018df4fbd2a506812fb9fae2c201327c4f97e04086d540e861600d9424bd24e98de47c2ef3de08cb6a75207d49ac029c411de80f2c2dd16025c7627fbea86ebbace4137180d68abb28120855f2b11c8c64ee41a72399c3fff870f4dcb1075ae237fd2f54c028a6bd6159157c54e1c3b86c1703cdfe06a38679b159cb2fcbe54268b32c4d51727989db66d9f6317519818787171facede541bf84a5be4b553d1f277ea2a87a05e686d48309669696260217102565c52be15e894dcb3d4a89ab2df6cea555ac5388093e416d1f0254ff619c9c73f7003fb40b31f12c0388040b4fc40404f2c4b9016127be8da0f8ae3fbda87c22265d55a16e3ff0fa385a160526ba79296f727d6f47ed1868dd1ef11293ad95ec2dcf6fdf2ac9331515e305e8151cac4b37335e31b9e0ff580a971d455140ea317ae247010d36d426692d12239e8fd3b1226d4b8707ee5f8bbcfaeeecfb967ef05abf7da3362c83cd60188a1157921d2f25203cccaf025742da3461ea064dfd74f6ea9076e8ef5bc960c39ff819cca0a58fe561111881d42a4ec230477ae1c3b7f908c82281f9aef932abdaf58b36540ff8363653c185196252519d2a3e6d8757e30daf2a95c62dbbeb34dcd1d23f1bb8c43e5cb29217654e55bacc5c42b9db6920f09bc56722ef2a624497ada144e3e24b20c8b51dbd70b36a21ad439f378b2875e8307949c2c834e90b3dc7e63815d50b90f85872ac5af028eacb47ae345cd315e7fa24cfd2697e26de574a7af2c4fce9804cd22cc352f5cb29c878311558023fdd22899905b110ff708ae7699ece3961a53f9ce272ce7593f0d329aaf8f080eeef5ff244ffe56487a2945d636fc089f9faf1a3ee9b53c7a805905048ab086dfdec3f3e0edf65edcb2198d5baec7278ae0bf75e9c1dfcb27fa19b83ad23d18ca7f717ea05878f5ef59707a77bcf0ff75f2a04ba931ec00f078787aa1068ef161cee9dfc08ed22edbda2a3bd9707af7f8442a2bd5bfceae0f5c1ab3dc0aa69ef169fbedac32691f6ec72d8e96a4d071944494ff8d036fce280a47965ca9dc1e3e74ed725882176c77f96c4ac6203d0b73f0d37687af52de57491cc4164d892209b97b72c01d4a94acb9aa0bc3dc1877ab30861de2cbad69439a15247352021638034037b1ddddc563da4925052c0721ea28cd8b94748144229cd2f6669362e44fe29e26164eb5ef244ffe5e60351ca2514aa5feb4b00380a1e98cae64f77a91ba9a47ef90c72aed13f7e8c7a7a3282fbc4b4b5b74997ed7af99ae0296eac47efca062ce62ff8cbd3e383d7aff74f0c6499fea7e8833a9d9c1efc9ffd4b5881343f9d6eb41f30a47a27c40406ebf44251af0fff6b11b61f850780b6a20468adf5223d399d4e1351e0357ad568ad430aed5a2439dbff8f33ea601726a86b58e4411430f35d23812d213a5c78bc4ef3efb3fcce20bf430b4c72bc2cc40b395fc89cb2b298cb291fc2230bd9e7ea868cbf7e35647c3564fc210d19ea40f3d3de8b9fd5ffabcd4594021801b8bdd417aba740e6522c38f8b915e394b1b7cde7fcfd2659293617a2d89ca4182db0be11e4037b79707a7cb8f7f7d77baff62f8f4ff67f38f88f2ee5bb7f2d7375d842cd346eac80ddc6c717ae5153afc7bd12c712f1db2d10f7581e428b8356d63fddd860f4fb862d3bbe5553bb71d13e24b2749df1a10faded65a450d257c31a495e9f314773d32a5becc8d1eee8525fd730cf91ee78e31ca7e522e3facdba3aefc03ba48933c336059515f43e8b0432dec87663a7ca4733597c062b9583a7d946e5007d117e711b58936b562b78b3028c4d973c51bf9c0238eb3847ac8633d8103cae9800923d635bacafb5533a5a01c7e8e3e90a3eda5983c7f96af62e64f669eced74d2515566a0c13b6549c361c2a39cd5e81b6ac6b4fbf5169137f9eb2d25b78abfa0dc92fb9795b78a4071c26bb5c7d609b5cba2aec2ddc055b883cb72518849aa3808727b1629cf2b368107d9f17aaf8d06d5c5ed917e90adcbe6a22cf9543841a1a6301a37e786a8d92e1bd030df28762e76392e0e09b4569cc79eb036f54dadde56ab63424aee1c7ad2c35b766c8aa0419921c0659acf449156e5a194a56897cb21e8e45d347cc26f1a882eb282c15e31c6a5d4b6752c1076b15e3981c75a8ae588525710800f7d7909f0979700a1919397d0bdf8382c65b6ac447bc1ab59ae4efc5e94b6fe9a8c66bcd8abda5b74b9a107e1b34aedd91bca65c5b693bfbc67135e62ae7b9eeb5bea9bbc98ba4fd840e4c39f28a771278844c1cf47b9686769595104ac0d45b1c145141a7ba57eb2276cbbcb149bab4a26cce88a7dc7f21d55bcabcaafe05fc3580a143364c1af2b2f6212f0e8cc9c3046f0f82b0514041e27d2b12157278a99e0d76976cbe021dab168956c5964093ca51b8caf10a5ccaec531d1b45d49c73f0ffa54347bfeb69f3d7f7b55f6fced0bd667ad96c90a5fc9638e7ee44a42448ea4676d5bbd56c7c9bfa97ba0a1a1378f1fc3bfcd35d2f24cee0d2d76879d2ad971c07e28e41c01356207547db2c0f36559ede76384d60d7cfc6891b8d77023adbaf1adea5c53324ea5f8d91d2551c7952788163eebac8e358485c8381a0cc705bd14a5547435a7411b5e82d790be083192f98857bacdda2bfa8f2ca4ee0e2d4d5c8348b4192fcf0a9e66693e3dcd78390b733f436aab1a224711c97859b9dd3a0fa1ddb4fa91d6b0be920c490b6cb9f6eff0432b22be23186b61ffaa9bcb85932cde1309617fd5d2ff1e33206e6e7a435df0c21f6a7ae16531c2721c8ae3d1b0c2c9d4ecb23488510bea3f000163cb85c9dfee605b2e1e846273331298097c64d7550729b783e0cc69c1127199c3bbdc6d18839e05c4e42c50121048c62d944b2d884675f85615a061cc5bf1baacd3e9c4da6d59896093b019b07732cd4120ede85ed538c824644ccaa5d2a0da9bdb1deca0926384f3c9ae594691b0d29a5e100870ad6e5d529ce3ae0e783cbd9d0f65468f776bf13fd87042221122c11b1194406ab051c25778f4da1e186ca0bb7ff1450edfc1fed45f052b87ef6aad46fb2587ef7cbd627757836329d08eba6df598676eaffb41d77c85118251f7ffb1e419c49a3a3a2287d68646b299902f5d68ae650c99792b21b81da4c1fdecd4bc131ef6fcf221d864b9fbbec850ff0105e25a14b7ce43ef6925e6be62e2e076468870437a67c048894e28d0f8196a8344381ede3661cfbcbffa9ad7dadcae8fa18f63b8368ea15d3ed80f35c580ad91bcd4df5880390c473faac11320c6d1c4ec7ed0535d3cac1503722c56bde030dbf66fcb1c2e1bfd827796864e9038f5e3e7fa1b29dceb490460e8f5e567fb7c0af6c0f950238fc3045831e41b37483ac62f9c42f087f06f9c5f82366302ca6254b2898c77da54428fbfff6dc88722eb51d24793994994f31e01b6ace12f90788482be6eead38153c1f68060e1c3a6505f1cb01b4ecf77024c95e6b79bf4c9014aed09d482998fc179948fc787f86c1ec87f38cfd4cf32f5730cbcf051cd94dadc6bb127f0472d0d7b5915e9e2b7a0d79bd076879e2caa3531e3e5735e8212d9c62729e8b4eb35a24eb82762baff7ed16efd5fe8ae3ee8b6da83c160d0fba8fef7d9c73f7dfca603cffdb63a4925ca0afb1b1fd71acd3677ce1f1e7e35aba461a8d0aab75bdf43cee079a73a71e138b9d5659bcdf4850399e263b72dfdc2568ed61a60848f1f3dd5ba849075b6eb9eaa66a8a2065fb4edcd9c9941f81f4ddaad3fb5dcd7032cac922b9bf6544a684d7d22aa81d76221e8b10bbbd56501b8b3d9e0509abbf9cceba60b1d74d4d0246cdea9b35e676b157c59f7c1c7d137bfba6e47faa6438a2d9ec186a7f639fcdab5c4ed138915d89f0c98fa36b0d9771d9e41e30c308d7ecc3bce38ba3409fae790ca8078bd32936e8ad5df3b03fff537d392c39b768a94a642bf1e21013a58f1c92e7d0fc5129088aaf4d960e31958c8f083ab51036af8f71192cc22565f43b44052005748ff0448cd709c65dd40e7432201491888d8a12b9814d775589f044db77a722ea49dfbec8573903f23d3d44416f33ea307434cab1db212116e7c0dca951e3b3e80094c857f23e7db5e8f1de5226cd1f054ad39e3ddf870870f14b9aa498dd9c287a6220028ab223870d28328bfa0d49967c360010843ae7a127e6fb8c215a9dd8a3d9ce3ad8aa64e06ac6858d50360c89f4f220b6d45f77c411f740e27bdf60c40c8140d73136119445e15b7c64c1999c8b118c9b178737250e7036d181ff16a347363372196d54f3572007672372bbeb1a0ebc276cba87d830d8f74a63b4f586bb0c146e0dda677ccb17fe3045e026ba1e5b464597a25b25b0651c2188b801e842c1db3852846021ea91c49a560698b437d5eb08fa2c1c4013ab6e923be0377256e1dc9101723b03c4f50a56569ae131ff4b499cf8a5ff3a5925a24d9062da91fd56726c25bce9c06fd3245757350ad76c8f8bdd63d6d8546e8fad6d5d89dd5d7f7e1ca79351385c018707ab5c748359e8f2d25d39209ba39212ab8912b59ef375050ef8a3e57d09ee3ec11febea30bcabda26e99d0e7395fcc0eed9f602070348f6162f7639e184d6398e89d942353c237f50b5300992360423bde107fd4b575dc26cf0a9e97e0527bc5733ec5e4e8466128e47c51d9c0e781eb052f45750ce5ed5cbca79f86ae8df709071bd64b08a6293aa8b5755bd85897b5f6d82c2de1ee22a5c22999ccc1332274c7e0a57375ee6c2945ddd8a8a903d475d339ff641df1a193c55677c4addba9d182997b1777016146329fa4c5dc52f64c9a75d1a577f1bb6c2aaa37a5285e203015ea74259e7271f4f2a80f2f57e59879a4328895b85774c177c6f0764759a559a6fb802959f4650d48b4709dcaa5a2a4e8b21b01a163221fb3e542672a4a8b31ee2209fb219d2e0bc1e4b2a29ba68868284a75e48667f0312416ddda76c111ad1ed55e22f50cb05ab3b2f4b657bad5590c992ba41c1cc9f47cbaf3e6653588ab6a0168640a56e5de67b10a94f3c0993af7f645e4f9c187af0c30d1780b2217625c321e1d80e35267b280203409e1855c539a5cd7f53583ffe981b4fd474edcbb24b561c19667ed496861e12ea7cea484243c23a53364e8d035a589c5645aafbd7f54bbf414f422daefbbe0d09aa56525725178cf005aabcf6221f2f121c1b8cfb7a0e391c2fdcd35622cb31b80ae1848145db1e33cfc02748fbcfb627442d3537c8050ffd959478ad98eba2645e68ddee29fa459a546eb99a583876b304b5f25e63021baae9d92ce4a8998cb2a9ddc6aba966d375707bd4a9d41f479e8af060295de2b790ab2d36597a8916dede0afef0003fee1251052f5cf2f29c583f56cc3976692eb5415962686fe35bbab2ea9cf6cb9d2f26aac1fb4c5f4ed4f3ace4736927eec2381fbdcdb0ffe26a0602afae107cf7401a15d3c7f538a9747afd82e7bf4a87d6f9e342c494c9eb4fa273fe0abe31b5e216ccc11af24ac6a5ba359ed849cc8a2e13b9884c07fe07f334b7378b69e67a2a8bc5c2ffae984cac941fcd3d9abc3bf1899bb777ca0f44cd245d491e48c5f891c45dd2b3916459efe676163c46755b528fbbdde34ad66cb613292f39e81727e0d3339eccd21d445075e7f6af589e0d5b2109b6351895155f6a8e709654d1acd783ec5f06c0e4c8aa23a1753388594b0187f056a96ec78267351f663dd80f0e07725febb59c8a56a3b2dcba5287b7ff9f7bfc692c26805ee27ec91ab622e39dbd50c62d3f92d4b51ec4df523fb4a86b697dc9a16f7f271a146f0346975c89ac83e7e6431907f4bb60c0cb8e75ca05772a814a7533ee1456a5105502f6685041573375aec91cc40459c3af48106abf9eaf163d652121e2e36b62072de03d859c9a73a27e5242d44c91672818600f400cc68ce31cafd607f7b0b8e4d07fbdbdb6c2cd5ca4f56cdd6b15c40a78ef29f78397b01a8dafe71a679e22c7dce8a742cf2ca50263e2064c67442b931a6b29d77f0ca030c44530b8efc25e44ccc32b6e05338464b3e5e39921fe5af693593cbea0460dfa826d4983e61343fa48598c8f7f78c464f0f67537875cd4c0c5c11a6948ae2bdd2808452c77f15c39fd30a4b139dff4d2ef3aa349711267c54e1856be44735c7e9d129cd7c217816b452eadc67154fc13b66ed4a0875a38ed87023025259cd04834c89f4e64b3c67e7bee9f331350617aedbd02251134711b157f9293b23c47d51a447a701697117d2bc08ada913ba1eab8e34b52c6a4014e3e00268d5f6189244789b5847835b535974a9d2903e7ec49c6b51db58afc70ef6d9f63666684ce790764fad51a43687fc30293c6159476d509c0a1193bc102e7d56e0746af1de5b2cb3acf7f4dfffa7d7f30f774e446afd314ebd9c744230c556b0b01af6bd7c942dc73abfa791565d46d975e92f255ce094e9f16194935005a07c4c7a5bc0406d1bc9b1c078721379ee5a1720d0fc83a76e3eb2aacab3071cb36ce8b13e6851b76ac7ad9747afe0d014d408ce518a1b311b2f8dcb6e7056a453d83c74d882d5f64903095db03caed535a593ad16d706c3a5269a7f37003f7f3391c5489c884921c0448d5f13f7aba911050d10b8970550b2f76380612ffcf3aced47cc56a2ab460ff14d08dd7e059aa6eda15f29ece395b83da4f81edd3df3c9c0d681dc7a6e2ffe6adb3510361687bce47ad612f3e159cced5d0b5af0ea743a3a98d73b9b4d45f5f2e895f196cd1cc1e85f2ec12b246e398a42e7ca089ec914a4a2897bd59fdc1350a47d140e6e5c1fdf383e2b5a31c6fa63713976dab05edd61eab84c6bc081ebd4384f6b808e6f27e646d5be4ed73ff929769e4766763f7e8cc4489879ecb2d6df295b18af2a31c78c61c6ca63b0c89c7154916e66b214eccdc921f67d2c45490e96699aa36bc5dc2ed5d513b60f296705dad9c969830e5bf0d340d2ca29e8aba6d8b40d2049ddc4a4c4ba1988a6642c6ec400f9f68e7b7cbb9db841162afd2c6e6b97b55ef16a96143c1fcb79bb639e656bfff9af1d1d55f0b46b17732d04a20a8de76cb7d9ac1eb19fa3fa918bf795bfde8cc396565b975918b370b4eaa0a30dfd4d47072e236cada349689231d88cb9557f21b36b94b268fed53b8fa705a22e34cd65215c4d37d051d57907955fc77c7c9f9ad9716ffd30db897620cb1c45b4b3aafff5e3cd0aa435e5b153630bd8e25e8bf7d5b15c3836b838e5c258100aaf7750b8e9b0e398b5a423866a7278422ca3bec6d53a3e3a6e99ba7506f90d5e0c2782f8aa667b0f3e39dd0e321c71ca11ca47c106c01caf5ddffc72cbefee33c217e25a149547fda8a13b6646762ee068249342ce6b6e60bc307368b7b47089ed58efceaf82dcde8b420e316737bfa28c0073b5820a91a5709b7b786b16d795100b7c4000d269cb093ee279235ad7829542e4783f1c2ea99f56b2e06809a095999795e0637002bd5b9636e8b3926c0b0e9d848c8d21ebfd552e6f1277cfaea40efde25986899ce81867079d1891ac6fd8501d3291581c5bcefeaaa8d984dba57488dda947f85d4c6e0b639155705796dadfb4905e5c0bc0352f3f1359aefe9b4a026ff03ca4795aa53c73f8e15ec162f440a202db65e7019a04ecd86a428f97c32c1db134af443181b753227be04f8598d4050e6d86cee61d0b558b0ad05aacd3a73b801fd543ad9c84e41899198f91897cd64a12e54a4083273ed3804be669aecd206e2a7d351c3ca92b5568bbac50393220f8382c5164334baf847784d6cf33cc7849913894c32e857d705cd7870291fce6f4a79653e2e8c3ab141f47bfe9d6a44ca75105f8fc121e822dd4176f7fa698563c3fc4f8d083c333841b78e3897e7d92f0239f0257b077aef6b61b5f4732960c7fef81ec35d186fbcc31d430bc768ee10a33cacbe86f76ee6137d8f682034e42f499f90921639b175dacbe6e92912107b872d262501a2509158dc0043e3bd8d1e48d57feede7276cdbc7a8b1255e2862bd652bc9748d9ddf55171834bab01f2eb02216ce88f168c47375d402c98235d25c9bede9c56db4c59b179f3cfb5bdc4bbf0ef36837795c70eb77b1feebc86e1ad13f517c9fec1f1feebdd8ff2ac17f3f09ee1aa0ff00425cafaa9997a5f74b8971b4916b0cdac74978ce4dc945301bff4d24ae96075f4ce8c6277bb5d845bf2611c16765286aa8f49c8faeac6d622adb9bdb4da03fc8e28617630f7abb66a2d0412b2fe4129c655ba17d623413a32b753c311622ff30e42378b28b672aff5680dfc6ee2ee69ea0c3d7ae9b41c310978f3183b389c1f21c7fddc0e064a9aeda6bf091741a71073ec36ecd1c14b98f5f1fd4567d149889e88b0d24867efdb184e7d2f279264757904a376aa91aaa620ae9f46c544ee066e09f73c26f5d13d59d6b3f58e680188ed1e1be66438ba9598faf1e992e3b0dd6f9d5d150dd313a87f6bb202f73634870ac4116a59c2eab7767733b9a699a9a266ab457c7d121f3d563d1909ef8394ad020b0310c265c41bc55a4593d48dda1f89840a1308e4f2d54c066dd8f5ab275901bed4b60bea46f763b0aac233a8ece682c7de737152ac51c6f5075f58841acf7f58fae16a37d3695e60f2591fbf4aff948b2b76f7f52114c6e1fffe9ba02b44fff0e724d1f7d47d68dfe8986387cb35d0f72d060c7bc9abd9063e795020537e4f9b4af690df763c0c4e3a47cb01fdd7bad0e1fc4ae253f726f3d3f826bcf0d379c35231009f0724fd005fbf153ba10bb196da51eb49bcb3283db9b1142d4fa1de969e065b5889bd10655d6445acb793115959e5cbd0c7b3db01df3bc8539646b0743089e1285701e556881f38f6a8f645e0207568c8f0a5996564dda6414ec842f352e20b4109fa8aa1e99358c8782d881347a9d5915845799dd8be1b3c0ee80776ac16d0c33abd4400b467688e06ef6b29c193a393c14a5cd6efc0e29adfd189a7044b1a1d747d8a43c466b1b438c6de7fb5d0817b01ffa6abf7d42d710e3f7f149d6f172f6478bb0f9c98de9fb92e13541e49f1363d31c13b866c8ccbf42b08a6217cae742bdd35fbc1be31e8853c9ed410bc45bcbb6acc1be74b40acd85bfad61eb6c37d8edce75a72eccf8ac1c56238c61492c887d7440dc5bcb82dc135213e40b0394ce2ee749f5ced7e891df377ae46b4cc7fd810b74500423282d89d885d0e6600a87f13d6e770ca5b806c7843ed44383947a9444c9a9e3a889bd1edbcfcb6521d88d603cbbe1b7259bf16bba00b7104576bb493531ef84d52ffd3ddf45bf22a2226bf4e8fa66d14521ae574503b807ce47de4c386900ecdd62175dd794dbd818c8a6caecf100d6ad52138924bbd62868af0978875e67be7777a32e61af318af581980544b88333404fd6d3d260296a683d22b7db6a84c3f426558b96591599f135b846fff735b8e6b305d728b1f3f9a26b34b6b5c26bd49228938c97d5019d2b9cd568c9d0f9cdb1362b1bf226e28f1e78e36c034a2f81b35e5aea2dc3ec046c28268a05c612263bbfad66ea8762ea64e0bc26dcb87badb577addab7eedd75d60a1ef262856016d92e3b77262fc0d0f95c414378fe74c67c4f14d1170f238afb887ef22f91052ef92f1ca6e374c4f9f94775f312ab378680b1fb343687035cab9fb59cbca09ba8c17a0ad746e012766a7682dc03680253735a892cc38b778ee673c34b37571053f3d765a554c27cec212a3864d830ba0a58ce783e26ce30a28414267636532d5f0b5e01a8872b25472326ed706e31a6a2d48fb4e3f98a127694e958148a13393b3e3a767222787a9163d46464be5ea5b1b2b8a779a5a0af7166880cf2a2909031c83e397ac8604b8c18708b1d8166209de2b886b342bf59a5dd38bacde7f05747cd5dc4a98a09f19529b554605619873c0722af8a5be40aca82c5c763bcb80dfca7b3e2547c7415f754d794d5df371a687d11ecf9e8bf7cb4cd5741fcc712c43485ff5564f11a0604cff7db2897d307c9e4c6302040e6c701793d8e89ce46c1d92c36efe2694ee2312f0f9726752b7e284cb081c6d40038c1a9f16cd505cbd7409cfb03716adee72f1b2ef390e6065f235abe46b47c8d68f9d78a68b1022ee3f3451b6cd837a2782e97b952cf160bfaeda768810bbbf3346fe30ffedeafd8f16aee3c20fb85fa224a6b67579bc65cccd56c35e7af7805009fc9b9bec2e3bcca6dbcd2df4cae5a62a2fdbc0285c754f5bfdb279ae3e03534ae7bf8bcd56b5d58e7700366bfd43c2fe9f5c67f87320a1a20a83d4d5907fa676671f8637914f5078153f3fbdc13ff6237f053e20b1422de8cb3ad6ec0c9eea30f8ef1567379003ce70b27ff1f1ccac3ced3a5173cb0bb1947d9b3f0000a30deb1d3a1895248ef85872f90e9f7e347af32d2a4b3c2a00bc130669bf0ce9421bf7dbdd0f9f542e79ae609e7e4aafb989227c742299164de08712d803528bbdd84228a2c8b9dc00ee154b2cf5b9af63cc5d605a5e7420d609745106d32a7bc6e76a91b075d1cfe730c311df9379ebc9dc2145f21b6bdb54544bebedbb775cfec5faf077ebd1ef8007910acd8734f1eb8f7cffea9b6a7501ea1d2e0f5953d6139680e7135c9aa0e2b023e82890d69637a70f13b4f5c101cf2191c275e71288906eb79557a3df62a9da7230c1f14337e9dca82c9097b79f4ca31d2ead00caa32e2982794337a149f4f2af5bf945f3c13e3c06efb6097c867b6f5595598e73fae62ca1a3bfa660b0b0a11e18f1f3b5fbe5ba5dc87fdf8024630f3e0e63ad6aff56d418d6857da80d6b1caf8645acb1ea357314a362a26d64f9d0dd86cbec23b02fff30d37c07f7dfce773d972e8ddc80fd1b49eddfa3d846ecc7ed20db6c06e3de8b16b5fceea3a671876a7dfce9dee9807d66f647105569c5ce69bea5836aad85c8ee14434551c1cdaff349bcd5278d89e8ee226296c8077c2c435cf4065c8327923c6ac5d0ac15e9c1ec3fb5baa85a93aa8e5e286fd404db5071b4e23838d0ebd091f6491adb5a42423255c2fc44414221fc19b37fc9aa7191f6662e0bf5546b0f8302f6a30838d0ef4098bf44bf453c506f462c850b887cde1b262b9c460a84ab2b1641c5ee64fab24490639bafa8ca5d7544b31ee4d896f5d7b260a010ebeb46a955053f032c567299cd743d888972261e9a4fd086da51df6812549728786b7b91c2f339120a3a933c2544d798f2c7b72715ba4d359c59e6e6dff3b3be619cfabb460676234cb6526a76afdb1837c94b0bd2c63005ab24294a2b816639bb2fd301d89bc14631811665dde5bf0d14ce8922efb4514a5629aa7c9166b2b80c106950d3640ee7ccb6ee5129e55c9255ec982d14dd24c30f17e241695e24978152a555b1533a1f38407d33fff9d90c861c5e16196915cdc2ab23a908c57a6eba08455d5a2dfebdddcdc241cba9dc862dacb10b8d4d9e5379f265ba6da9b3c13a522c53f9669415ed9853a1f413864c66f982c189f1602c30fd29cdd146995e65335a393ea86839ff55b364ed50a1b2e2b8f78ba9f69e901c0eb4d6cb0b177ca0e4e071becf9dee9c16917f0fc7a70f6d3d19b33f6ebdec9c9deebb383fd537674c25e1cbd7e79707670f4fa941dfdc0f65eff9dfd7cf0fa65978914dcb9e23d24b1565d4d1559694a218bb2db0d9d49bb5c88513a49472ce3f974c9a7824de5b5c0176417a298a710d359329e8f014f96ced38aacc2b5c169eb70afc72a786ca04f8f0df471e16d66f02a77b659caa2dabc12b7a511974a60ed67e25a2b8ab0f8ffcffec9519f6d81183e7abddf67dbf0f3ecd7a33e7b8a3f7f3ad9dfefb33fc31f3f1cbd39e9b37f1be4774debe1af5fd7c3d7f5f0fbaf077a74f95bc64b5818c3cb6d7c2a63b0017f0e36eccbcca38c97e56b3e17a506812fb9fae2c201324882aee1e00d0a17e403db1b9655c147d5f1b2102fe47c21734887f04261546cfff2e0f4f870efefaff75eed5f1e9fecff70f01fec4ea34b925e92f446723e97b98ff56771fb42ce87d281ed5dd13780a4bbd7b282ec37e075627f83610039acb671592e1746b925ca2497c6968f18ba8cc042f32c16d7ace8080d761278dcfef163fa448fd2a835e73e36a4341352748ca68ca8ed6bfc099dac22aa1239ab20927b969689efad622ce34391b15d76c913f8e91499b9c662f3a79bb17951083e562bee98bc61964c8528abf625efb2f3c106a01e6c7435bf2834838d8b8e975aba90b2a2b9c7133f715a9b3e263f1d9dfdbcfff7ae2d0afcc4c06ffe9335edc1c638bd562d5bc7b1aedd775ba4f351f7e148fcde5d1eee3ddf3f34d860e09d3856cda85d8768bc2cd3690eafbf06b435c96b771a7800ded4546a36cd846505d7dbe9f83b13d4de8015e1158cc78fe936e8b490cb857edf2ffa5428be133ad8501a3ba1f90e7bf47dc9e6748d22cd05e30c90d116634240fc418cd37291f15be2b5c8b27fa2563102c312b635f1b2861e33f514f4fc83fc205f2cab3e1e80f5457edcf1c7fe571c81ff6d51404ee297d8805f565672a19ae4533a6a4261ede8857d84134a54d421fb9b13194924500f5a6afbc5a350cb88ac4bb0ae8fcf243caf054f7ac2e6d71e6cf4de94a2287beff04590de4b7abfa9ecbd9063d1fb111ea6e895152f679b53d95ba6bdeba7bd5c8ec5256aeb656fa8187553ed46a2dac4f782f862e1c3fc0d807ac532afd2b9e8cd44b6508d7abdc289a6fe56f285cccbe55c91fc8fd5e75acfdc7e23dddf14e93e44053a9d6e61d1e6b248e96262cb56c38bc26676dd6a5804d546badca9592eb2b43aca7f488bd2ab06df3765be3951255421c80052fc200b18c10fb298f3aa2d17b0ddd3aa2d6f5238b0d2d7845b48b3aed5718eb5c022d2ea0ffcd0202b44e0915dc7185803d0af2bc2cba69d7a0235edff45386beff20c9313d686fae1ebc9c19d386a1c51edb86577ab1006e2ccc3757e918c643ee255bbceb634b64e979d9f23d5dbb0f36b5a7759ebbcd525a3126b5db42e927732cddbad56e7a2b3aa7b9faf6d2aa22e388517bbb61428614b1b7a7967cdae667a904786051f5d89ea4b71c9bff0ecffee53fe39a75569d1fcb34d2aad8395730b9aefc78f2c32dbe6b389830922513f810752137cd488a891d26bd1799d093fd7545a8dadeba38bcd1a293dff6d57616ca67e8f45f71b979c7ee3cbcd7fc48bf29e1ddcbec34cf3ff59b774b366f968b49c2f335ec922601d7a02ba37189cb70783f1b79dc1e0e29b5e22de8b513bc8736a9ede373993542d5509ea7459ab55cfd9fa8808cf02e7a6e9cf393d090b3ddda94fab7f63dd475e47b382a7236d7eb86bc21e02d3f23edfbea8f7f593f6d1074c4d1ba87cd179e0b4fc6b4ec939347af1805663488c24080bb550fc2dbbe5bd53476f54d391887c4156469ad8c4c78f692f849380922f365d59b7d561dfe3db8b2eda5cdcfc82884c0bcf7c245d8c7e09a62e42248dea13b7a07ba9f039b8e1a11cf8db792122c6e39b820d2fd7a21ae1428ba02e25cfe7b3f0fcd9a65dba4fedbc39393087ccb6d341ffcd6a4d18bfa77810bdbfa70817f63438e13eb4f12b715b9ecaa212453bcd17cbca691718352186a5d2b075f89a94b2a8da5e9b8e3b1540bca8b51089d387238048d417dd2262b75cccbb6c584f6bf97a391f8aa2cd3b6c53ff1edae0a6201ad9d7c5dca19cbb0f9bc7a80850917c8773790d2e7a8f8afaa2e869c58b0a42a415b582e4869a5c1650df41d4c64124a0a6b59bdc10e0d7ef263c2436aafc9926ecb5219810ef7f2c053caa131bc2336f082ea43f069deea2d5d4571a9783219e9c522967d8c170a9d05f6c97111369bbad968e6a9df4c1aaaa4355ac96d667ad5ce6a205bdb3980d0d260055813d7fa582081114785786f15c074082572e97cc58866d744d212adb653446b7411fdf6958498f9ccd28a46f212a6f157a9c5315e9bcddb1fac6ff3d7ff6a7c7179eba81b7e91cee68c20ca64470cd56b278ad48902911940972c69a4b7500384ec707040b46ea5a7234834a179bdd863ae63c2e3c91853abb3895ecdac0cdf471ab737e7a3b1fca2cd12017ed4e975d969558ecb047ed553d6f0314dbb5e8935cbcafda9d4e3296b9e8ecdc3bee8e9fd56ac10b0ef92d15de444b6117e232b035ba7fb6a1baab243ee94dbbacc55a78fae97841841ea6a7d0a86b086e7be55df6d4af4def8f7a38ceb72e3c18528842a86d4c88f32ac5e799dfeebed501c643c1de2a7e7e6bf4925ecff896ff0c3ee5b393ded3adeda7bd5f5f6e2e8b6c53fddefacbd37febfd6924b34c806937db043a884a14a54e2ce4762766b47886268d7ec3066b1408b3b6db04189c31a95e21aa2047920e3c2aac0a156375e782698dcf4551e0b2629334e75966b8dc61785a96cd6cf7f8b1c3acb45e1f454ef52150249833ec06b65d1b9587163d50fed06a88eb62dfddea156d498b480a315e8e44bb6e1871776db56cf4dc17c26cdbb4614e58fbb99499e0b9d6d31e3f8e68f44e10fd235fd9c15a7e5644a5a16879ae3add85900c802cad2a01e74d52621dbdc6d359c3285ebf96ab3d87b1a18e61e7ae1bdb343a7e4c6199d096af580d7fedd832d8c8f486b6e3d6c2ed259ddc7a3e4b1c7c4c457d8445abb7fb7b366854a4bd0d1a95eecfb167aff6cb982a57f8b896cb9a3432678334670349ba1ae559a6715cc15b608a975dc098920690cd9aa9cbe3d88b3a9baf360afad3e0b0d34af31fd58a19dc6278ee5939eee9c3ac6d2371d578bbecfca243c6bac7ad5a1b2bbac39ea82dd024508b4af8bb4e324933d596a5f2fb9051dfdb1b505bba96dba13b6f75c07a795364dee288eaa4849e1a5b1659bfae676bade559ab73be75c13e7e642d1d370dda709f945e5f79b72d0dc8c5fd3584ed6b08dbd7103607e4e5d12b0f6a732ce77e589a8e6c5a2382ed65ca33398d40a2d9a5f4a175d8888d769bd9409900aaac8321369d79e16c26d85864dc64db2c67f2464d8d2cd80c6fed29f28fa187093b357a7726f32913b95c4e67ac92800ba270d4ffb2424cd3b2128ac7b151930aa7548c2dde8bd1b2120ca21c6c0e07b527bddc3fdcfbfbe5c1ebcb57a76c976d6f05e17b25916a55141f89c7202e8f6a066172202d7675bc1d69c7b3b44c0cf183482393900891fe58c8e5a2cf061b3f624c942131ed333b0e4a2afbdf4b01bbeef9855b9852ff4e89fc7e7a1c025273138ff9633894081a3a20f860183ee8e54a713b9a420ccc839af17bbba29d20a69110ad19da08f60a9c9e5c496a0517095af301f003bed280dfda353d40af69dd63a7f7d6fad9e906b863017af5012df33925905a6f44f5d395e91da1325ddaab5e2bd524d6ab3a2528979373301b8b4c5422000bc3f6184359c1d8b7ec393d5443ac0c575486c25deeb83ab25bc80697c991f94d6fdc102208b563b2180b7516d089e986824d97bce07925042668363bfa580ce5321f29e0b9a866728c4287796227266b2629a5a6e3e3b1126569617a4f491b49b62136c2b9bd352fc5886e2e2aa08c979541ac70953e32e82db1ae45aa7b988fd928131c8bfea1040035d7d3f68626e611398053f10fb27889a1931e37511f0cc7d4c40d5e7bd760604d81203a56a5732197156cd64462a1d7046500838e9f215cdb8821fa7026af84bde51c2bb44fc094a2aaa1e9ba027fbde5a4a4d39e9a979722a483214063d755e5c6ae8785cd5d57909fd0f5b4740466bdd7ce05b450c2ae85de15719f537e8e2950331e24dd286e606f3e4ccb2ae1e3b189e93e3e3a39db3b746490463e94e35bba36fa629666e306a956bbd15a175ef7d12990eb2b272316c78d081ba2b823da433c8cbc31defdf2e5c1dee1d18f51543628df5a57d3f26821f27e946f0c90cc5f64b2147dcbe944ce8658f5b522e0b1a397cf8f5efe9db051a791c244ff763c92bd695eb4e2da7cb721a6b48137ccd4844e88f9a2ba456c2004fd374d709c90d204ab05c692195df60863dbe02a2b86cb534d1d56bfeb84d5eb1237ae9e3d23ad2898d2ba42c9fa1e829dc0dc119b2f7d37a5ce93d6960acf2ea7eefdffbb2ed3e374e0a6a8d4621cbf86ec04d91cd6e84da9df6ed6c45e8f0dc2798b7342afc72619af2acc189233a8858967890d60e36ce40e6f7bac99857951741141c4e4c58b42071010c88e61fff38b4e93ce6ff37c6df91424208f38de8d02a2115d7d56432fd37c9a894ae670ad97d3ae4d27259022a7244630ac233c041943ad256d5a7a302440821bd83e6ebba1b5c9361c222d45e561058ef7eea7188f9bd2dcd29c35dd5d99f1f2e8263f86b721aa5bb0ed393313f4cb5f61daf8bd307f783a6ebce33379e3d3cc57b282069bd434ab73455b5172387a3c0dd02bb8769033f18d31769919b437bcdfd630bf55b4bc954b78d20f0ee1fa050e489f53579ea111789c492989eeb1ddd8d050c9656431338f55ca85c8313d4e82b7e5d5310173014db27474853a7f35d3c62c403214d58d1039564685599662fcfffdbf80a864bc64e572341265995e0b47c557fabd3521dc4b60ab39ae20b50ba488bed1dd20bb4a5a1e673ccdd1868f96955626c7bc9cf5bca2566481c9e1bb33f9b3b86dcbe13bd7bde15584c25ac0d0f05de81f2f655189f1d1f05ddda3f0306797ef1f72fb08df0261effb883ed05e4085ffebf4e8b5f5eeb44d171b983f2d8f0b394f4b71985e99982757d8a013e191bd37e97ad91290fae06ad3185bf1769430e044590f7f8d6ef56d6034f2a9052e1a224d90faca0a233e1a39f40c048e474e3e1af9b454ac669a37174f09772dd1820608bd5eece34767cbac783115d67d66046eca76d9f60e4bd977f6f6a9bea5c3d2274f02a5a794cb62a43663037c9e5e38169f5090237c2dfe8f3aea9ce73cc19e8c7896b5b12e923e0809c4d168fa22a04b62e6bd63d57066001cb1fd5653b4e16eae768036cec48e1515934208b20aa29c487a97f65bf2ae6ca11996bd14150a132118bcae3acc047b4bb8df268e715481ec9b3675864bfdc1773aebcf8f1fb347dab794cbb180d7436df9ca3ee0306b5d78059f955ae6f4c72ecf3915fbfda1afaa3b443db737f8c9ef0c24fe978b65c60bf602ace6ffeb94019dc127f4d69f04af97586449e5f4faf163e72f3b83bbde6856528572ecbdc5697d2dc722795786343a4620b61bf4859a27262054d4dc9b1277660edb1c9bf0b212856e80d14d46b72145c137559ac5346427c6a3d70365e1edb24ab3444d92eabbb498b7b79e24564f0680553423f755fc6bbba55a6975b01dcf9d0c5feadab4068485aafa7a28a67c746be89c0cd37cac544cc2ecf7fd3bb6bd95d8a01d1d96eccc0075f3d8c7d6f059374271334ef69f3b9b77883618fd6e9c9e057491863ed2f6a8c39e6e6dff19afade65597fdc0476228e515fa488d7310342512b2f89277c9b2ba8bf4d5c199fecc267299d3130aa84b91d311fd9ff476462165c5c669214698587b825a23b55415c23ad550d98e27906cd9fc912d2702154e7f07a57b8915fd6169d9c2a3caf35b256bb2749456d92dc3d4706a6e179bc48ab7f4e4adc4e76ed3bc927064198b6b91c905a47fd4c9e7804f6d8cd76498cc45cf22db4cf34dd5cf81f33c1c44101de52f81027b235a95266eaa26cacd3892de8403cd7e4d2b78b8f8c54c28e5b56c75da34ec242de9c8db8db58329a46c3cce6fa18625ffc389b1fe28d518d27c7a3a4be76a985a258979fefff2d5f3ffd5f3ffc7f6fcaf9594262dd55eb29f5fbbae72b50bf88ef2bd9c71cae9c08c79014fcfcfb3a5581469ee14e099179542a89ee6e8ed82fd7d3c66a59c2b31afb41ab377f32cadd401fc4a304a5f40cf1150a68f54e6beb33c9a64e2b764b86948d0d390f0260a8de69a2e1bc9bc12efaba8e596f2df80aa8f2a765849e7c051e2edb5acd8105e87a28c77e8c734d9e175d6e0b4d0ee2c2506f2b49c69a7233adf509c022dd9c14bcc289ccb4db9b0ea03da6709cb011cac8c9b5e7b41991284e0cce359068fc3e6a65d9dd414a7c862741d510d966d0a860d3ae0848e79e720274e9dedb2ad2e26fc096befa8e2ef20d50f1deb2efd739dd1f97415c8fc737e99fab7eda2ee345da5d374f36a1531edd12c7c6c871663db4f58dda9852078d96f886e683b6c386b5f864995a2eceb1c4ccd62fe35cdb2133112e97524d70ebc7b58b359ae3590c8382cb658f69c07f5f8cdaab0833a57b6ad71def5f89f8a8a71e326e6f958ad3e311fc20b6c253b78498e6cd8f0e1a196b15d853794bc121a12635ca95678523443a951fc0d674aadcbc106260b1e6cd8de83acc547e0d0974e9d02ac697e2daf704372ddeaf751cc3a763d3a29c934e4a3abae6ec41363941a33e61dae5774bd01ceba46873c205ae7f1232a8b2d441fc95d7416f1b5657a680fced5c0c7b4418b31c813ee4c8dd2408133f5dc1ccc17a8e8d2fe4c1730e05126448b284d45e09565b98400108ce2e739a691a2bca9b7009ccbea9e36947e375e82b254096cd119899a4656de9695989b2cf02688a4f4a33ae08845e123f60609bc79e8d8ce4161689554e75c8d4b69ffe5455b297ea5d2b4e904974c21675192ca1e2816bdb11c95bd422c21e794cdfc5326b36a9efd095473bb9777d844f06a59e8581076a8767ed39c3a5188d2aa0234f062993399676062734f487375207e20f7376710bbecb00fbd1ea87902f3efe7ac5c0e41a58898cda20d81bb0abd83abb260c59598c680e3fff1f5d8f1f5d8f14f3b7644c27aff36d4eaffbbb2379285806383da275e9fb25d132b3115987910223e167c245c27ac827ef5e6f0ece074ff70ffc519db55759fb0c1c6e67c9955e966293241e796788dcbe3a3e3a35ff64fd8ae8707502ce4428d3fac7df4eaf5c1f3bd13a72d39cfd3216f02bc54f80ff7fece764d55ac752d8a8cdf86b56a23898fa1d6fd78cfbf2694fe2a0cfe70c200cc0b5a1e18d3c188f28b3a8cee480dfbf15b5b25adc4fc302dab130880f297aa0396a5657550897909fbf57d406fc884f1d57cf775e9fc7196ce4372b1fbb754267259b0212fe9093d3a372a9cce76720025fabac66bc8d20e496bc5600362218f4f0e5eed9dfcbd0f0f62a5735edc52c1e99b172ff64f4f5501c59950c1af7b27af0f5effa80ae8cd2c2a78b9f7fac7fd13f57dccf3a95ab52beec97ddda9be2eb73ff872fb5d9f3ef8bafd7c5d0f7ff0f5f0afbafd04e109369c4ca9a04575364bcb037c4e37fd4f316e97229b38e188eacfd803633615fc897ee748e78487a533e365deaad850803116d1ab45bac9c0d9d3ee7810239e6562ac2f8ff8990b540fc8ef3cd8b069d19da71c2e5f9c9eda07f8209d4e5e89422e4e7085500ef7b64d3d9ef4bc2a838d8e93b5fc04f3df3c1463ad9a8fd57eff91ae0bac8133a8d484f1a1c80c1ecb0cf1eab51849397cc71e3f56ff249797a2a480a067f0bdcf4cfa2bca992f87efb475301e2707156cbffaeea0746effae0f43576c437a7ad0b5a9e84766d5abe1b1433fe0280d490b8a8e7b26dad2187ea299e609ca75325fa6f94c1469551e4aa924dccafa1eac8725ba7eefc116ade361c5f8551d7f790f3a1f7895af1dc3805ace357cb821f2023dbc0483df28953f397f5b81910b1f14d4f5767d3c78bda51495114aaf21cf8b7df70c79395e38c8efecf2320fc02bb9ffa7cbcbe33727fb979781fb1c06f88d35652343fbf3db264c5d56030f3de8e669f99a977cc77320abf51ee0b2de73f7c518aae34f53bb41f2377d06a49daeda8a02c20e36ba5e5269a72870643ff20a550fd1458bd70268aa131f48ed3a4d386b693eefc2bbe6e6155167ba0a31a9a5611d194e52c5ba2b3b6143be939ca0fa3626fbc39d0957e8d6b35b7bfce6fde942de751cd7b91d9977d3ca0d23c097939d5c04a65b4e07ea8bc1d0c7fbde7547dcb43e6abefa550e75605ef02eb15dcddad6db44634180c82d7f9d2b608d0b98be4c488ee18169b5e09c80f56ca92f3b7a2c37f0ee29e2d5a2d12ccdc685be0c1cb8b6a82dc799d5e4c8d202849746f7ba736342cff89550eaaa7dfa9ae763b558d2aa45df0b7edb65da0baed457c890c1d24acc7538270201428889b9494be155d1d8138c2756eaf4310858bc0851a5c3344babdb88f6bacc6f0abed0498acdc4389fdbbc98fafa819fa0098a9fa92e9c6f5db0befa41098e0222a853d3506cda7c7aa635b8aa5f0cd3aae0c5ad42502299c0bf4f4421582402f84227f4dc37a1ab5d08820b0c7c220e008d3b3afbb53dc91d3d9882d92739bdd5691adda8dfa4b8cce0b278788ba28bddc70b78942351417ecfb6d933acb4c9b6599f6d75baec1213246eefe0afefa01cfff0427614ca7300d964db17de758ccb15374d26395d6940b51ebb66b46f4fcdc113d1af693593cb8af69054aca5bbacaaea291d5f55a9dfa24a1dcbc54214ffeb948a17f027dd28318eca4071ba33b750a8c003b6aba0eb89015b0b22225be4d9a403de69759b99fd6821b532dde2c35266cb4a60aab14a2eb4e92813934aff960b3e4aab5bfde742c28964ff5ab1b2cdbe77e7b7b85714f2c6347bb7139cbe7351206d3e8316e7605b439373a05769739f2832ac7cd85a5b3eac211b56ea96242fc2b22e3b57b56c0a752547bea40aaa766f2f11c198573cd4f0d57f70dc53a3ad6930ae22f5b9fa858bee40dfbedee86a83c9976a4aebdf6efee6cfd808572beb0bb7518aead81b8bf364a1f91e1e246c893d4538dfd4eeec560e8e09cef6eec48826a95aae2762d275ebeef8070ab71107ac96e46ab980182a8f1fda311dfe339271cf9d2d2f6d017eae85cb9a12900af4fb0bf611890207b257729c4e5251788b58e4f42ca3937e9561887c9ffdcfad2df36992f7ed0027795badfeda99ce2c7db60be221311f76ea11c9e6a0e89dda50aaa8fff552523b42c5fc740e6dfe532afad5045ef15a9cf317a0f154544798a7d3e7827adca833526740ee82309f9dd14392ae725fcf940bee153955b412f043fa3eace2153955e6c41e6570b876eb1a98e0a80d9cbc4e3d48631d2bc085513bc11bf67cf428583fdd0030f38869a5a877ccf72ac1be0a3a4cbfb159f3bea8c1e1a188acaebe278dfc85e7f0ab61cb2fb8f6a75accc320efe3cd473569fbf1a3fe884777b59ed8335fe97427bdce7e7d16d64fe464528a4ab763b8d1d0a35baf52aa96ca2f29c90da58e8d6c598f5a1e61ec29da1fb72b04bfe008ac4ebe66e7ed5eb47aa61d653f32a1dc94965f767c47cbea68f25c2ef3312f52519e6a8574d5482383aa0d00d26cf6bdd728bed428c6a2ac0a797b5cd3591b2f2279ab52d770b4ab98aaa4c1126aaeddb90790616a8f2fae86ac396eec629456de50f081f548d3707bea537aea691caeda19ad974495517cef45bb6633ad0eb9bb5e58bc13b7d8ebca6a75ae50ad9b6654dc1803453bc4e9eadb5ae25a35a6ddf9a26af36826c6cb4cbc019e58c9fd71e6ff106a9201dbfb0d441ec0b0835acb84eed8149acce8e68ac9cb748ccdbab6cd7a697b51886b4a4aa87e82307373aa1d60eccab136299987152013d468c6f3a91877490101509d808cb569e5b027e4a32365c3249d0c344d482b60fae37c275b4203d306d5625cdba475862dba65e1bdbcd5a73abcd41f8ccc538a83b6fcb2c78fd96a0e6bc4fa2c563141bd116c67873a3356bbc3fa51608a7c09a1dd141c7bce896a9c4e88c27009085c5073c1f39296321b8b4a1473d03f38a62af00f4abd1ee30b5e9031d3de3ec3344eec3966edc3246398f2456115fae251499e213186202c8353c1426b348bc4b36cc64b73116c2e78b95435d3aa4bb7ceb077c4c9ac2ad2e914939d514f59a9043915a774e1905ede8410af795af22c9daae1922ec94e25bb114c2f7fc673b33e241b0a56e21d2ff7a2ab597bc17288696f215b348819efa668281e1a2e84c6caad2c746c2751d389b612999e356f9db59eadedff73bd4f319f5ddb51bd26dae3e7da99cce65ae2914bef39ce11a5dd8919117d40a3a13bc0d2d70c6d9598cae8d4f367b01f9bd6aeb5e716f2066448dff7863b83dd8b1c4e83d15a5dbadd896d4b35bfa7b3f934fb3ec3bdd9b3992bb513dca0745d810ed90e855b435955728e6e82c0da60ec42a1800f4dbf81c9814ece4e608769b064bb4633b1cbab74ef6938b08e73a1164a47867e27bea049fb2ac4a4b6455966a37b972b5d6ed04a979d0f36423c838d8b8e3f696b38cbf1156c353f989bd58f9678eaf92e82f00c18cd533f68e3fe5cb0be1fa57668af4f6f74c3775f5eab0144432cee28ab844e3e1c6472fcea82fc4d2e488a45a552faeb77f13fe2a23ea05d883493cfe4ee3308d7f5f8990a5f9d7e9ff3a85688c94f90d6a0f08f69b9efdab8d7b9937b6e9d06f05a609457ed930e6d06dfa7873fd192326f0daee870a7cb5a6fcd97b76ede049dde402eab321d0b26278cb3b7b402df5afd2f690559283e45ed7266ed3ec5c2f4f6deb8aadade6b979c9b2afa736d80de320e09ad37f4f0fb9a9ba02b5d6afb603d6caf167cb9725bebf5d8f17298a5232709551030d20d141c235bb1d811c83a94ad59645bd1ab61cc9796ab50e9966dbb5d66e2632d923bc8f4440380ec751bdd8d960dfe47c14fb963032943d1e54a6ed81075a36eea48c062895aa16a6777e57f704be4eca7fd57fbf0eb3e60dc8faa9998534c8a6ac13c48a1caa1cc7b51037a36e4a3ab69a10e097dd62aa643dedeea32fabfe4df3ba8154f9755250aa3facf6491fea74294f5d9b676925e2b6d71849f8027e0fb7f1ee463f1becf9e6e6d6d0f72ecd64cf0b1db27fc5b776826d2e9aceab37fdbc2b81bea77264b13e43349b3accf5a37b3b4c2e81cc8c32f65e562c5bf759591cc6461ea74f1d332b741ab1a0048f0f42f7fe932fb3f5bc9fff84b47bf58389179759afea7e8b3d656f2ef7f11f3961dadedfb7d64ab53ed2f031d05877685e57c98f3342bed88cc373d283eaad26bf11cfcd52fea032ca1977ff1fbf254b700473a8b1cfe8c3205c440756b74f706bcfd94664b27f9d5027317797267a3bbb12afb63960e7bb9dcc465cdf32a7957b63a5f6fb17ebdb5f707bab587090df7b2749a63dc343c3e886f7de885cdf8fb9492233b2181b60eadaf17fbafcff0d6dc48e415e897eaf3e1fe0f67ea632626157d3a39f8f127f8062c6d6ed77dc26d9615e7c656d3b1b39cfb47476feb5d1119aab347e9d050930db6f1ec56a5f9ed66ec0087c37925e6b2b8fd292d2b59dc76e9e3a11cc19c75e1893798bdbd42ecff63c9330d72ccab9951316658dd419fe690503bafdc5e988f0ee08257b3337922a6e2fd420f8a57b3cd4a6e16f0b1d51456bc8ab604d8f21381fec2b3744c2a1b6426bf73c9bc99baf06b8449afeac0aada4e2b33999610ad948ef4a8e0d3662e7362b4124b5bb0b59c1dbd3ceaebeb7028fe5c7554f3ab04e128f0618e52a9c3c455db7f7da2351aacf19acfc5d85ebeb296e35a693be773e158c3460d37b6506f1d05773792313e98a230aa93b0fae7091b6c1800b04ed87a5a8b6faca701a81ee9e6f6b6cf9d3125988ed66c089141b64ee4b212051c97dcebc10b545df78e0f40142e9615a46f26c667d234ed6770456c9fc17c81889acd16580e0e8165254ea4ac5e416ef3c019e096b5d53a7326b51e4da6009484ec91c864fa1d6affd382177c5ef6d9873be7cdb2fdf77c54f5996e836e59f4fc9753ef42a30b0ea3ed3f12f42997e6f429cab161b0e67b565acaf5193d4684d39ae8efbacfb00455d3905c76985678e09ef1d155c27e15f49c8e6465c50bfd9c24486259301f973a43800faa6433519864ee23999755b11c556a3fced988830ea400383c7379cbbe3b1198ecfd7bebd49239796ac1d842a686847cbd58b78b1919c9db05e2a3b7589633c8aee9fadc6e197a91783e6665aae4c8e8e52b7885a7841e9181403f27bce0051efa6e84d2b90ca629e415cdc58d19b7aea17afa1dcef3f78a8ed01ca81dee145da6e52b2c701e9f758a1702f2f9eb8dca469a581fdc23b2a680fc7c11a42b36c1bd39ce927e3eca4e3d7c762e1bea71d45e3c093b1ce4df5d1594ea729ecf1fe4c1f192ef3a99e67de4116a686cd15753d64ea1eb59be48c4ac11a9f0aad10fa90b834cb5de6c7b2f1a1b177c38c69ad73442604bdc288a183d3eb38bd5745ff35987797ffe46e769cc1415eebcee138fb478fbb1db914a5282c56c60028ec0b2e2d093d686579dbe751ba98ede6efdd10d0c569b50bf69e76a472a2766c7f21ca1cefaf6bae6950cd6718a625f9a6d962b5fd008124123e1eca221bdddec3a76328c520f4fe6d0d00cad6d29ea94495a5252071d651d5020ace08e335cc3f70418d97022c3796b0e9f3d33166e1b24a3b5a55d1d09e1b3101b6ca8a33b3d164d211ab455687a7caf28dba7bb38660aef562a6bdcee37905618d2589776634a7336875390d5dd2865007cfd6c3a9c8b6e9de4010ef87f73f793ddea0c0bc58eafb134f1eb5d667748fd456eb4eb493724f545692844570aea5502cc1dc8e714632181426146aae73e3ed9e0ca20739fdd4291e1da117bcbf95014043415d59b12dc3993b498d34e626115f509f24adc1e028737e26a92b12ee5e273bf5a9f69ff0671f8282ef9be73fbf13d4ba7b92ce83ebce67955276167122ca39c8d966525e7ccc101276355f8d6183d4878ddbdf55e0fb54e7c57c2f1d282274d721625e3613a11a3db51f6393cf306d71a32d1c0d6565d4ddec45ff8f3844a4c1498163eb7a21b0493ca1cca3bacfecd3dc582cf3ca6237e7a6470738f1032e8127e0cfbd4b5b1afabbbf7dbd466d3098408bb865fd7a2d7dae2dbdc580844ab618c26b9baca5c54c839bef7a5d6f3b214853e0de7fc3a9d7228e2379c027a382b478510b9ab8fd8d834c015c6a6cd4559f2a9f160d39f6643511fbf8187340840fd36a54e010199fc70ec19be79deb7a5aebd6dd501a4d9114f10df7cb36d88ffc87e63cf1e20558d49b90d4602ad433a21124a1e7e8744fbdec449589510e55c8026107d644f00d27cfcc86c5743e342c8427a6ee0458a5db7a236330c3339baba3fbec0919146852069e15c9fa52f6eca3f3a23896c921422131c5cbdd8a1363189738fc146bee63a76d5414e82442173977f680fb1fabe664a3573ba31df7ee176acddd9692a5ad167d7aee1761f4583df7f12332bc9d38e91835aedeb1fbe0a669e8d7db85ee52c5d7048ecbaa7b75c1c4dd4cff679a0fe3840f81c333de38c5c1ed3cf14ebba4ad0504a7dd00fc7a6009c33666deb1f815397b273980f87e93c55027e7b6b6b6bcb2d7841927fcbcf4fa8e47f9a811709ecd04e661ea876ae3e5e9815e57cdbd1749b8a5c14bc924aa8bb5ea48470235e12e20631f6e73ba7d786159c46d8ae45bfe39442ed274f22592d5d70e7387aec6f040405e29ebd3939b4f67112fcea6fb0bd82515d54a228a3bb0021b204ec9219de2124e08aa4fac4ef688d774782751492782d2cc1890f876fda02ac4a84ab0ffdfa3c530b5dab408baabad5013c7635add84d9d3d7351c869c1e7ea9830829788c025e6bc7414259e36a1879b28d9a0c6da754209e49c8f462280ae08e595f47759b0aa5399fa6ddd24b68080dc5d16f61dbdcdaae27fc56dd6f8263e79a385f7b7ec19bfb6613619fe7c60af28b61303fd9fe996609e58dffc490e12a762662debbe87bcedf3cc33fd48b6e20f20240a6820a2b7662bd9f5f92dd1eb37c877a0003d8f9c1217fd1099318d3660d53b16ebb34a6294dcaf4a9d4125189f4e547a2710ce243e1c68774e292a7321cbdacde673314e7925b2dbc4b5d737795c680b378e14b3d1d6d5a6d033f1db75226fc36fecc9e7d1801ed5a2261ca548cda7693850871afb15d5722aa926f3b3e9227af1c6f407b5401af407b571f56b1a0915aa2edea3d1107ccd6c7dd1b9570bf9663bae87c0f7b8260245cdbac837dbb499d2b558777350387e0683e960036c2d0493887cecfc8501adee07016987af85d15c54132f488da2819c6bf417ea84d1ae7f5503c539d65bfb8b889e147c372d5e895be77d4ebcfb031137beea448357d096044e9512030fcd8159d5e9d3bfd62857f6196658b767685ffdfa66db53c09cfd29e83f8432aa466b3ad837db512dcc4037ab60e0768a28609524f52baa32402da3c5a0a0f579440d515fa68ea84fa628d09f9c5c946e6dbb7174dcaa964a7dfd7960de83043b9605a65f5d77ef80cb68c49730d74675a1afdf88f77c54b960f0c1c085c51a3eaaca7830f5a668a5386de117e746670060aaac6c2ec062bfeb85e835a93fda5623606eddd56d47173bae3dedded0e7124f792e93428c972337bd31f09c18779973404286a112b3ece96fe312024e70c41a68477521e764eb1af7993f4b48c43e0ba7448faf6f7fea1dc8cb384cd2c5ed45e2090a2d2c4220f5cd1bc89cb471ac9d88f7626443975cfb0c003619619645c67611d7f9d685d307707397ba2c29b37424dadb1da72a053391ac34d14ccb22735ac775f0f8317b44e0b18ec403acbc854837df61b1c2d59e4a62cf3400046005c7adc78f717cbbb4373da3ef7df539444dccc216b240b50603a3df9c1c6a4013bd453f5c0c37330181c3ea1c262b0cfb417c4081ecd68e0da3c2d47c46785bcc256c345d96e663f13e50cfe6f2fc4adc268ad66a13c0393a07c88b7a2a6f05efa8706aa7249e44496bafb2df79423d2df7e78beaf6057989dae6f653e4ce91064ae0728303aa88be75ef99d5d975ca349f66c29ef48d0a1eba9fe1e0f4b96207d770ae00dc1773ac00f64f77aebaefcb7beeefcf7d44fef2876445884f3f21d70ea4ee5d47f3d93753d7a2c15cb9ead60f4fb3cd65bd1efbeef426ad46b3ef4d3a0e0d61c50cf0feb2d4cd061903d50a78e6a856b5381f2fdb5f07cc49664c502dc88f642edc47b2f87ff3cdb69706b01e79578f4df204ef5d2d4794eadb37a64ddb532fdf9389afda752b186fbe0f6bde470e804da4840b6d168d0b8a1ff1ba1da6855f9698965e285987f9e5192f9d48ce5b47bceb375458896e66b56030b30aaf5ae88e1ef1522496126af3f3b3c45bd9f8f8b169868251505c7ad2de2190b3557a2f40384ab2856e4adb1ee0d43fdb262cc43fac7b084d1a82e060fef0d3b4fd4f2b81c152539f767cc887071378820625a118b3b766186f6d529eb77aa06f1d8bc604a306da830d1442f8172dccc106f47b7730a0032f7c7fa2540cfcd2076da3039fbeefb2e1b2820b5cfa13093e088a367de3741341e7ff91057baba6fd6d2de040ff7737c81bd693c72eae89c4d6f8b4404913fc0853e56816a67152f41ad4876716508794cf49a2da25feaca1572628ca483d5ae8cff4a6680a6075f6bd443d2b021b3f7b5ce3ba618d6b79b272391617fa0c61a8d08f840ce0f8913eafddfb0b669d2eca735d78415315defd09c13a91c768c0dca95f413bc8e1397d6895b54c675aac5c2ee0e29cd2d4f1fa48ab6fd260b1b4849d9f33ac7d625eea80dafa8534877db57d4fa00a1eb5b9d9bd2bb49a755d0bc1832d6fb0391c4dda214cc74c0c726043409673388c765b9f29fdc241189ffabb4461c5b21e4457752c3b824df0e66fcf9d953a9f9df6ef41f1d75f09ebf7fa1248a94e9805acd8484db8c231141421368e88cd7f32359045ee2105023d980ebada97278211d39f30b8f83cebbefff6d1adb35abe5030b7472473da509c623d1cc67dd1652d7ddaa1edbe74294611dea0a12c73b51d1732cb50903a7fb565c1aed39160d7a228792781fbdd144a9adda29124976cb0616ed06ca0e855b4af6622577fa91d7ecc642ee006352b97c352fc63a9e6976e4bb53e0b073d6aa0ce6f238e4f1a8f5451e298f1f208552ce594be26e769554102c57509735733a3f0f1f850f0719a4f4f335e7af11c8e813319cd78b157b5b73ab13801fc1355cc5803cf7929d489b03da41f8e13cddadf1fe952637cf34ebedaa2e19e0ecde1cf35aea38b351c9745fe84d58eaa03cffb669f9faa8a74f1593aaf8e11438c856aec98f10fd5ba9780edec6802b01d60e3adcf42a47a4b8a85aa021aa2435fa78138a8f9be39390c2fd7511fe8c8676d1da147dd94f49d5be99efb349c0d5ea5234a62d4466faba341eab7b47e8b82d16004a24b2dff4f89112adfe19d6f63f8e932b733752350c3cacba55ca84ec66d8f955c6c66e25a64ce4d187c70271d0d368cd9499df537f1c15e361423ae36b214b263a85eb72ac647d51204864eaa3a136cb42c0a2524ccf4b3038c2fef2a51f26e592af93192c5b8c434107aa2f4a557cacb41d7d5f162137b538ac93263739ec2a36f39ab4489b152944d02928e149b3668a11c899c17a92c43dba94bdfcf604275d1ad614975c1ff9b5fdd715027335878c71807b5f266ad97669fe2bdc4996c5b4134d8387e73fa933d3fdd45dbd299123e437327fbc7877b2ff6ef6bf1505f275ef57c805ab72bb13ccfe4e8ea5390ac75ddc965cf268bbca582db8d286df8c82367dd341ab58c3a20dfe80d2cb0659aedd2d68a433a085cef2c19a962800e4ae7c158cfe4ea068f695b110e552da591634fd7a58e513eaeb204b163360c284084ce4abb3d860d7ce20d8760669eae31354f1be6e6e9fa93f374edd9791a9b1eaf3c3a574f133f5ead71529dfa6e473edc85dda8e3f38a43e78bee46c491d000fa8da7d33824e9d56912c15a88b2ba3fafb08304f20b6be22a7563b0a11fcc853fec21e1a2e339df6d2ca6bd450e6cf913e4850c5439f5b1ed452b3832a9496b35ef09284e87cab1783c5c70eaa0707c74ec241fb1a6b02655bb71d17991b9fa26a6d9a2ba56dcc21ee201d0be6260a6b21f2897838da91c6c741c88e77c74158352df7dc81f6471c38b710c988a5c78cc24e0750f37210301974c3c00d85f068e8f7caddbabde9940f160ec426b18a81bdc4ef7df69ee44add5eefef4398dd6e1be17daae35cf3486338e9aeed8afb2cb3e2ce8d125477c9ffefdafa67a8795dfeb6aaaa7c1af75357545f8853d31d857b7b5f505720260104bfd18011eeecf71800044eb1c1d00f08b456120faaf61183678e19f1e8721f4d34918d100a1f97049348c3c9ac8629f8f66ee7209202a8987c44e3249f3b17d090252c316c21cef094e6dc92506e15592f12c431bbcb547f27ccc6e041b4b8cf5e2f66dcc5e4f55a1e755e04514bc5cd72b04def58584913752afb21297193198b67f3bd8acc19ddb37692af6e6e4b074820de214f1d27dffffecbd0b771bb7b138fe5520377f918c29cab2d3b4a1c2aa8e2d27fad5af6bd9e9ed95540a2421722b7297d95d4a56237ff7ffc10c1e83c7924bca769236c939161718bc0783c1601e46b182e2974c0bd4f495020cbe23b3ed6d55bbfb56a8ca7aaffac24480806ce7bd9abcf74326d57691e840d22ef26ce694d53a39b554631c25175b6b10ecd26a19d2f40fad0a851a03704a155f1c564e3f66abdd3ecd52b3d90d36d755b571d48a02951bf5babdf4711b77f24765140c955cd36b4ff5c3ac73ae7b44f857f970a3e9e3ef2f3777999d5fe3d38de6931e6b2e69928c2722df016fd78410cb3361282712bd0bcee660ba7a25245715b391b84eca899279fadc90a4894f284e3f89f878bccef97c2e46a6ec1b7161dcf245f29cfbf08c2772215fd78ab8a3c8e4c9e9bd48b5ce1578d5a528ea5ccd5e8af5ab393cf39a4642a3b125cd1049ab77fda2436eb34813de410017f6d88053722404da282ec57de2f9633dbd47161d95c72c8b4a416f6f99cdd08f68a7f75aca02f949e7ef5ec758cf16204644eb2ae13d891171169b065fa785de8e5d2323eab4b7f9a4cd9ce36643e33ba2e1789da4a3ec5a811a4d3e3226307e9f66033e653d054dac152e95895abf0fea9f7d408cbc3f5824d351bfafe65b3d27ca34b93ccedc0cff5574d9e9bd27d96c96a5ffef98c85a4431933987c70c3dce17d42fec6c24f3debd784a5dbce22f3938ecf009bc446c6f33fa892315c5cc519e04cb0b2478dfe97eb21ee9f309a9e3cce1a80b31ccd211cf6f2a0aaac6ce884be5c7a3119b26e92510bdbc4c8653811cab783f9ff2248517ab912879326593ec1ac02465251cec3403e1167b48d857689432b0e524cfae1dbd3249f5792e4c71748ccfeec74621b70cd669987f7d2fd67a9c7014ccf958753fb1c112f3459a3a0d04b30bd56bed4d6806f480cb49928e0b769da58d925d67f9254601e890a7103d40baac6651f51602281339c4f58687ae2bdac608b5cd147dd500ee0b9cbe4e532be8b66597dbe42c320ae08c17acdfc74413b56aff5efb1edaf8bc10f958f0c1546014127a5805994d500f755f8d93e26596be5c4ca72e082a511dcfc530e1539568dc539316a28569fd5b5b9008fa484828f0bbd7ebb1061e778d88858bdbb23d8d5102f52356c154e415cb9196d93100a06f25d36dd31ba7b8ecc1097681bd11e3c3f7f3b386a4f895404f7929102429008bf56967e707adce05046628babbbbe3a49c2c069253debde04331c8b2cb5d2070bb836936d81dfc910fbff9fad1c5e04fdfec8df61e7ef367f1a78b47df7cfdf0d1d78ffefc6830fce68f7fbcf866efebe1de6e910f7793229b65f97c920c7787535e14c97057f171bbb4379d7f157f78fe706fe7f9c33f5a89d090a7ef0a717c331b6492fcaaa5d0df72907af21b72a930435e549529f29bc3c74fdef60f9f1fbe387cf9b6fff61faf0fc10898547a400a35d1357d47750f18ba07ef051ffec9c79fc8343ae883d158bff8427558f634ec4a803f6033f096e7630195ba55ba5aff907dc04ece58174d5c3d5d0f7949c49019afca89c8af93421c63300931c20efb16b5aa196da90935c061815697dbdb26ab72831eb09110f399cc6c7a635988569bf9ed763125e8bd328b80914253cd122a92f471910fabba8e40fa6d1c415b9d199f134b38b5b4bec06ff97c995bb663a41d51b181a1ab3959de65899c23d0b7d002ad9fa9f576f55463b55642a268c9a5b829749e11d4d8615f8a1b72d89386f5e1b17c02b06280f526c1f2acd879da1dbd02cbbb03ca58d5e3c54aa06990b76e91bedc6548a4de70489eefef48e516d19db9595aab411a8376a4e2c826705ba8c2a4c0045dce92b27ad7d3cacd4eb26034f1f636dc734e05b103bb3a0f4e1a2fd168d5e1288e908eb19e47d714ce18681c7b15b44278afeec7e908090f5c2fb47b21afdd5ecfad9b6cbeadca6ad6231bfe7ae13eb1c1ce9d1ef95587ab548907b45eb7923af4c8e1170dd275f8744a993293f1783a6da297d98847862d777900ae459ccfbbdc78035f86f47b8a16ea0c20e637946db4221742c8096d9ce7b9b86ab3943ac131bb4cef240be38fbfad1c7ed84026a6547f8feef7308e3101c4485f28ef792366d9952840d07f296e76907f14e8b3d71a8a4d93a2444f1b36bad75fe77972c54b0c58f55778b51f4e05cff17b26660391bfba60cf93a204f71d4a3c64e662aa339ec852fa3909bdf2f747bce4fdbe754f829edf937f0b662cab8321ba15d251be16f94596cf0ac6e1f3e4fc98cf04f0a0ff27f2ecfcaca9427d89e18cef2469297224777c0a21bf20f9e1d70f77ffd479b0fb87420c770a3e133055ff1679d642bdc86c36e7795240548bf25a8814de3a942b8132b331f35554fa1bb8e2899f16c9159f6ab76438794a1fd39dc8beca83001c5f751e60d831f6d7212fc538cb6fd8739e8ed5caf09ccfd8cf5f7e50f781b713a17e8130567654c54523a019d8f04b50fc555100d1b5603f0f304ae907f646a59c97f9429ceb98fb6ae0ee18dbb8ffcf815b3b57358af77c369f0a337c89d799a6df3fb3066f74d91e4a5d5426f42fc883fc7e47fcd4540ff0aa1615476e7797f5fea27dcac58065ad0eac8a2b4e811bbcd196adaea813c0144993d0abaa7dc95fb6d94bfe325a2ddd34e227c3174377437e1e0e0d9ca1db5b952419647353c4bc2d0d55b199c44f24f299f8c984fc143f75fe0531b1f4defa5e944a189c8ec47bc64b763d49861882effc52dc9cb3a46017d9221db12465e74017cf597641c8cd9c27caa56184b02804055afd41992a4b24c55f1044af984b6ecec7e74b8180f26f99b142f01c8dcf7d4446f7e0168fed60941b0cedcd42cd3ca2f0cedeb9d50cb0660945910d8f945ebd3a812c1f09afc3cae6599d10f8a9cef5eb493215ac89693b3b0ef7297ec2fa4e30f7ece4c119561d6a819a3a2d43e79c4d3b7b158b4e7b4f969f261b44e8d3548b13ec5d2146f0d23b5824d37207022980873d13af5d85ecc3030cc6f45a6922e0c14c1511648ddfe98a105be2f514f369024abdb6c20ea6115cd5a71de22597285916aada75cfba91980a9d103fec0c32a2ccc3c5c88c5049899e39746d4d1a2bcfe91b76cd0b557c14a1af2e7e9a33f22974bfe9e2a63c75b502a83e836dfc2ed8123d17c5250ca221614d11f25b62d3afad284cd026a28732e54579a4ea96d569af003b6c2fa8b3d7b3e0a6722834cfe6cd188f893880222bec2cd4d4667b0ed7b6b363380c7af551718796721b38931b6e1797845ad4d34899e588ac4b51712cca8f86876351fa48f8a54b1a11e95076b404c1be17e5c7c52e2b55d5e8c50eac7306d685fa953fa093bdb355cbf6bd28efb2664f2662785948d4e44b968d89f74951569e6db07a135edc75f5704924ab267bb50611e1a92aebf7b83e21f98117649df5ed87aea2bbe0781cfea5fa10a235df65858e23bb0a875866ec1c166af9b62a3ee2b62a44c8a04478f322dc7dc845ba5b908c28498b92a7c3a55bf118b7a2126d7e0e7a7fffbe4b4e35915e1493e689edca598c62bbdb587bfa8a5cb195aee1521c3a7676b97b43b458e4a62b3cf2cb209d8f14c28c8a52df8b3252e47b5156c0ffc08b08fc0fbca8803f8ed67f6cea37f40a3408c0e90fc11e656557b10b48e4c9182f7ea2c404671aeb293b0fd4c830512e629a6dd454351094d458b7b36795d935c7acc5125a3def803d605d9dda215c2f20df10c50a2e6b7dffbe465665864a1fd091149a765cdf723aa220f4f906b86ffcb57766a553f2e6f67834522c2f4cc2b919ed79079f8c4c02d5f60284ecf9328c28f0490379cfc6192da0d89078f56351525879f6c50127bca0809204c7010bb7c663a8d1db85a61cd98226cd62adadde45d99ab2a9a2e4eacc5b472c752c4b85a809952d1548a5e29a2070abb674cad61c93bf2dbd91ac1e61f4326286f8abb988b8d3bcfe15c4781b8633c26c83a6e110e942c089e333f4d419707c892c3b1fb0e7907f47ce7cb345d9882b7767dbe5c7c9116aa65952093d9595d3a3d8e6181b1c9d9ecd38e0b566e97371bfee7c46f95e773e270a64d97cba4c6e9e65e438975f44b2524b0e62b410a0307e859459a5db865531d3b45237d858ac838c8596ebf8aa24b44ebd6eaa48018d64d7a0e7ab343469c5135ebcba4e95f6a63cac494b1d37931c25baa55c14d9f40adc15a89700add4f2968f377807c8421d19e51d0baad70a39851b013e0595599c94b7aa7d6f24ba5b6b89c06e666fed68588ff9ca2364acac6bafcefb54fdb740dda0e4df62044ac8ca25e0f98017926d90d3a404bcdae6eb3cacfd9c0ebb5aa61bbf03fdb4102aec2ad9c57afb539297f36be6ac5f84d51c8bf20dbf7ecbc781b253225185f53c8422ba4d6d6f42ad756509b30b40272ecc99e2362551318c65048cf59ce9d70ce8229df1e29246bc9697a321bc0d37053af538f53defc7b0c953d1d217355dbf2358868970942ce31d2ef9b852f3006e4655135221855e7a149b7553874d7dfa5397fafc27d0053c82b3f44ae465a1651a18b5009b638b42fe7b5ea9cb57c9beac78428426eb6c52052a46aa47913d9a39038e29aad540f11812b915d73ded148cc1400b66925c48b7190beea693b3542dc71fcc22e8cd1ca7ebf2ae8b04dd284bbe5c4ca7670d45900c25f180dee9f4b3b538888f708c486401bf54c96c8e5a69a83f260f92b13e44d00e835df0e974c0251389bb7b3cbe6122bd4af22c45b7379ff40c59757ed863cfc14b4937f56b2bba5af55e3aec53ac95501fb82bd5d50b1b116d796bb0bdeda72429f3b51a83a3ae1bdf59159bc58e34cedf6bea9214964a4e793a5e805ef9cd5c182a797d7ddda94d29654a31cc9379b9a36bdb91b5158652aadd72de614dd11977f081afb0a69c857ee72fda180f42146d762eafe92fe161b7f9a075de86ab3524aab968345ae7add335342e1e74f636d6b858f35e42a69a6bf2584b73a2df490a85162a3250858a82013bd96bb3876df6e8ac1674bf9366d9bc16a8f13f1c683dec3a3aca11e576d0a8c3c89754ab7d3fd074d8b266ba4d2c60d5dec1ea5da719f5eb2ae4d7fd206784dd0f96a2db34f704d0c50da44ed89ce8f3e2261d7a04fdb14c7ba6c662c8bf1c9c0718c08c45ea817caf635306b0f33c7b7fe341bf966967f1f72f82ada8397f918811e305e3ec5c577e1e4a9a7fb53bce1096da5b4e8fb2d95fbe350cdc2e1f0c772b7787b33f4c19fff8d9f2f6ce92b7763069c220d384a0124c04b3a5822545b110ca1b211e8eb0fdce5936475c91b5edeecac3e7985ff03c61dfa8bba09e63b3fbc0d4ff662e1101c835d05fd43c22af0a8592886b2d5a8973c189ebbcc74b909e4179b9c7314521b84d30fbc72669c4aea4017aaeeb0a64f4ed61244ab949b22b91e782634c9761968b9d7f15ac9824336763cb8cff573c4531a7acf0a4d1ef2be87e31e1b918f5fb8db35066630b92fe91da4c2f6d5a755ff503c58c1792574233335e284e9bf657de188ff32146b90b5ccac0ad359117d6dd937f76ceee7fb18bc19848bfb6b7492f41e73e92d4393aecbf7ef3eaed2bb95e8d86b3e8b2fe03d640eeb359e4c3567fafd360f721a3cb1a60e2d46cc58993ecf1b9bce483601dd58a19de825770961a1b3ec0a8610399e16f4262b02749a15aaf7a617776ff0b0005fd61dff28baccbf6365da504bd95566239d6b9d1bd5ad6ab6fd57a7a2aa57ae44ecd464285f31ae925c82e2c0347d10db6b6bdfb9a1697df7c716ecb8c2ef2301b556a70d55ce2fad75cbf4d978c97d931e4d38594341c5addf26e104476e4b89f752fbe509391c78422a2ea7ad87ddc32b192fe3da4d1a840233d22428a2cfd246c90c1128f5f4224b4344ba7acc7572930dd195b9d4ef15e14dfd1e069ec1ced12cff12e53dca4257fcf86139ef36129f2627da9cf9c9712a868b9629d5c60434f26f0c4bb7b727a7a7afacf2f3a5fde3f68b64e4e4fcf7efe707bb63b8e13ea495694ce91c99a78f6b63a4e1347c50f59513ec1d0e7bbff3c3dd5ac5be7fec113f28e7f7af6c5ee6622fde59b5f318f6bc9fd3f2985f83caf0bfe72c143989ac624769cca957ac9552849c48b66e39ff2340bf7b8db604bc7a06e52846ab38644a72fb61b367fd72d786bec4f5a9d2f0f9a07bd53f8afd9ba85d9e8dcb76967addd719b35bed8eb7c79d068494af145a35553b023395c1c9915ee0cf80838205c84cd643977e2e571012c4b0fd5acd26d9323d4abb492ef5676647850af64c52db7ab8805eb4598fc038a265d67777b314265159d521465d39c31aa0f4bc43cbaeae82337ce3b2fd583a85cd94c096096af9e5654538407b5821411f24472abdf74e77a0bd67afc36d0f1f7efb128c1d8c7987a04efb6dadcc4281651bd52cc3c51eeb12b5e2ba0014f7c6096d01120e8d440dcfca3d5fa50d26648a95216f650fb2e4ba6867f97055334afd6725906f7822565439349cd11db4865f1073db531c3c594db4a095ee36b4e374f6c931fa8e2ae54bb62c5ed1eb24be8afb74972177bc9add2cae883c318bd77f01cbc43a194a5ccd840444e99177c8e73a0c6279b68b3c60b3e0772ee0de6059faf378c8fd54d4c41d544a7bfafd4a235d0f151acd3b42ce9bd53a519004ddd4ccb6cc28bc9da4a663ff06212a2b0ac6ab98a191dc381f3897255ed4ea19ee699696f6dc5b395838eea9de951076446560774037e483e3c1b2517f569cce7d551939d8caaa8999777e53c59e9016d6feb8770673d4f4c5805bb563b3a863d3b607bacab5cb1d57917b79dda10e70dc35a943c1dc90d0cca4f243a242c8e7a9e267bf587c7c73ff4dfbd7c7af8ece8e5e153d6638d7e7f9a8d7831e9cb127d5343bfff9fa133640e5a3b211b6bfd055be27398e2c87ed7b3c2212a22146b1ce56857f792c40a71d0169e3c3d5471b92983de810bb588228e35376007b6e11ae7b31afb9d36c96f1673a952660c7937d3c95c07877f018324395057277309b67b9a25e6a8b528b6e53cdd775760e7122c74153c7fa5a41a16e8d82178773495da88e27d5c2b2918c612fb2899bf966994778adff73900b447d903308b491e3fb7bd5da11ce2ad5a377cf55e62f0a4c64230cd707d16cd4c927b1bb13c850b1ab36b5274d5050cac9914debb50810d93eab30bb5c4720917f497315992e8fc5f61ad2407aa0d95e4ef888d92bd4ff8208e6512615583aad01e491fd241365a2169ea196417a674d4ec4842938d203f2d8e41550e1ad6b0485290f2566d605ef0f96637c9199faf7d917cc1e7d4870e75e6a672c20b25b91586574c85470d39898d2e1835018a6b25e7c68ccf557a530efbf6d6ce53cb422151772a38a55109bd95713abb52cdac5824251f4c9171812022055ba4c94f0b23a5ba14379f5ba4ac3bb5e2f298147f1337126e5dcd26a3b3a4a6d6d163424f256e5a01cfe26e9a1a4ac308b42437d3e863448f7ebfa10f173883942ffdf863b11a85f3cca7d2e8e39d4aaa1255c2610acccb8ccfeb0a25677c0eab26ffd613471ae6dc2046f5d549d60a16625111e30b3e7fca4bde9cf1b92f60548c81dcc53186d22e3cbdb5a8d5063fcc646d0feccfaeda8b67ca914167c6e7d5b247d53f576aa7121db19d4aaba0544b853fabe85454f64309d5af46a4132197cb053b0403309a8e845b6e6fb8b948c7edd2a64b6af69a44ecbb092b365ec3bb0a2cf44c444d15a36bb2ca6491d4b8e9c4d2cb74646e37bb4baf3bc5bfc07d5a4f5dd4ce31be182bec1d498d9b2ec631c5f23bde503746f38f7b4b952359e9ca434fddaaeb6a745d6cd8bd9861347eb9f586175d53469e5ff0975e7657df4fc900c8da3bfca05d7e27d965c15d62191689dd590911080b04775782a52174708725e30aa197dd65edb2db17d7a2ccf2e056fab96fba7a5bfc57dc76f560f58d577f476ebdeedd2506eadc7ebd533d5a35de82e9191505c3db30a59e51b0c2a92d7a33d6a5d6f3c7b1fcf66b73bd6a4c173d8126571a939288941913295c26a63c1f6ba78ed9bc4c66c9bf79a0faf5fcf19bef0ffb8fdfbc79fc8ffef1d1ff1db21e7bf8e041ec7c405f04773c2136f3d5f0718f071cc8ca0302c0d61566ea371fc8d69567c4cd95b3039172a8a3c0ab45a946294901d22d451abe0d576d87d1988e085de11acaee6e3cbbeedf774f2ff20065625c92d823b1812b1f2e86ce41fb8e33c01a4762857b912527a05ea18df69e751e63416d5a04d63f1f496204da3919754a04ce3913754a04ee38a86fd9514851fc5776180205889c844bf02a746eb51475a2c71234abcf24f8881c48c4a15000e41c45d4ad4d581d1e42c6b74b0880c78f7156120214b686e8a903f054da57ed65a2afc3309cc38545d90e696dd26231878a2fd42a272504fa11ac98647939e1e9a8a617e113a8f8ccf3238cb581198f4bc0ad998069d1311548d2abec528cd85ce40a22c9529fb8aba6cd150d1d2107824348864014ca7bb06eb2261fc655e000ca85557b1aae64b9c031846a59f91d468ecbf84f45b7f9204154c1700d451fe4825f563b7ee02a9241d403b11efe7a0a69da19fe45920af25a1e982b397e3950953cae77e656d5d087912c00a1f61a0ded8bdfb3ae88faecf8a058ddc0273f6d848cd81b8819b69bee11d465bad9bc289271fa234ab1c1141a532064834a56bb0cea42f2584b697ba90ee99a0a5e54eb173b5887932290a11ef7633b72aa0aeaf24812dbb56c9648c941a38bceb87539ec24bb159b6dd01866e945325ee492c16d74c11ed46cd88648173311cf82ae35948cde265fe7f8f4a0e04f9dc0368e4b16a2b1ecfbcfacd20927f3e46931931c57919964b83c4085bbf8dfb8560d0ed771b312e85b1bc1f4fba4289374ac9034292008ac8d830015a26f964f128c428e5ffcb4e0d3a4bc2191297ec37b99d7d9c70a6b74043b5771df18703463ba3c8e36f9f636c3c0103fa223286dd661022ab8ba1bdbdb6c0be847a22d09ac09480d1ab46c6bf2e8b6e4b12dc9abb6e39a9bd85a57ce1351902d04888ec65988fdeb191928b32e17a986d9fc863621fbd689b16c109f170a1bc44a46222d938b44281e3e9b7bd8e959a4f47efee01ba5f8cd975915e777325c1465364bfe2df2b3d05054e7c90a131d29a25875bf7726d04577d93127b6589ba908c51a816c7f1ca7662fc535ebb1adcc86b3ca4cb8aba68daaf2c186a35ac64daad8d7eb708e36de2c14760575a0f42faef506b5636007e4a34936ae17ad0cb68d9e021586cb5307b50cac6d896e57c2a892ae90567c21023a497b29ae298bbb6c5beb6aab22b555d2b2a060c83c9b858d510b8b35f4bab5dc68af4c66a2388fddb162f72ba830cbd98cbf57570d852bb578451d6925853ee1179c17b20f18cb45dea4d8b96ef9fcd35fc44a7307cc2ed4436d11dccae4f4bd959d6ca6756f64e63119a38ca595c2ee94980bca226ac7b09e69081dacc7a28c2d7d58369d5ea9698348b5334d2e45873db64c0b49b7b65a59c9cee5e512eda6e5656282ce5eb4b71035f2ec829ddec31a4eefade5f8e52ec1ad36d7ec21835dd3d9d2f3e452d474b804a06b395d821211c74b7e1429077e3def4b5024e2762ff0b2e405190e620c57785592f5dfd1b392ac22f0022013efe061291f17be832515e4af38ab7bb1ee431841556a43678a77f20e76ce4debfa5c8c5f848f6c3fe3a1aa435cd8de8ef8bfebf5f4cc2db530368d0536b126c7378b35199ba3c06ff68659cf35a3667d8f8a43233df02a8f81ac72db2549def4268e4dbf058f5d95bb2062e91fa7e3766be83dd36cb19fadc052e332fbd06c2d27dab6a63895771d7d21cf6e77442fd8aa810833e81388175bec20d85e5d22ffacbfe397f8436ec80f211a18c13e8669717015b134381d1c1ab18e63b9949d3f5671047f4348aa04fab55152b28d355905041e654398cfce201bdd748693643aca45ba826bc0a20d3e18366a412e6345762d46470221c7514066505f54a0cc696cc92599bde279922d0a768efe3ccfd11d0e97078569f2c5e3ffed1f3f7e76d83f7af9f6f0fbc337acc7be79f0e04f7bdf7cf3f08f5ffde9ab07df7cb31777d8b248e55d4c8c58929662acc39e16becb9677495a82639de641f7c1edc9dece3767a7a7a32f5bda994e35ea725963a2fce029565ab2f377e615bc3b958a0bd9f36702a5158bb9bc130db2453a02398eee95edca06ce5548152bd5099302424869dae0080d96a9c51b5184fe615eb68225efd2c097c64f9a2ae7f808f5f5e8b7881efdf6b6597074aca2857fc670eb2f6c67cf7efd7f6c4fd6f9c0a67c6bfb11e78a61263e27d2af859dd8798b9e5f7ef9322b45f74bc9082705716e34cdb242f20df2dc19b12c05e893f3b7d973a8610349769929bcf80d5c17f5cc618f6b93759c9be6a3e5f45c41e1da775e1cbdecfff8f8f9bbc315045a953a4a2f9234296fea41371e55d07d7fff2af80827115c0bf5feaabf657a013257ee1eecc7c6f7492c4e2e1298f02bb9762af1116cc7002ae737064222a907f01de2ad0119f15278204f79294cbec8f32cf70020e6fd5aae85677cee81bce073938b981078af978906467929776170520d0c38f6f61b422f6806a6107e25c7c2d650108ff61600120dccb5e0972f82f1fc1d5341266042167fb7b8b80806f6d8e6d055e03f26e23a5c0948b6733dcd78f9e8a13fdd98eaae3d807efd550cf4ebaf5cd0242dffecc11da5e59f03a0bdaf43a8bdaf03b0a07f4769d0bb45a44d799afe3902f664ca67f3307001c90a0b055d7d97847d5dc43afb2e21bdf5d841f59874e3460450dc20c8a8893763ba9f21fdb1daaf05bcadec9fa66eea895ddc33c5e4f899b09c914c3599f11c988a785655638bea0abd15a980a86a73e1348ad16b3c1045fa228535bdabca32bb2d02a0286124876cbd78ae88e768c2185b2ba488911ca483910c4302237986f445f20cc98be421a98b6538117bdc3c4bdd64a6764a5857caf9d654661f8b5e662379127a0adb9f5b084ab7e6ca7b080a49ec60d6908cb82c50475f61b6b7d9d6968f93bed8b4ca73a0df9dfaef768b94e737f177bba2ccc039ea4c94dcd8b856afc82a2fc87c6ea54db27e7f996c79faa6968a6b5954ae8cae2dfaacf64e8e23e2e13a2ebb72b2a983f82a9373d3442087b693ee0ba26d4ea8480175b90520c9854cb39178572624c4904eb11ef4f4e69988a9bc9b57c4fec9466e577bb6eeed6df3dbd99feb466920db67ad7bd7a35fe8deb57cbbc7af5d64c34bc4b4fcc8f27b182976b25a8e1b2c93b3720704ddfdcc16eb86a42072f7710905414b78e775d11292fc6b4df8f89254bfbbb89b437dfb40783413284cf0c140e6415d0640820f15d99349b81d7fd32f3db82f6d346ea37b8076bee659c7a839a57ca63850ada980729a15364db5e3632940b3fb927422f2a41423763c1743c912e30e95278acd73bbb78e8e45a4a4a7ea2721e5d9fb3771536881a169d9d1767a9ce7e040991ee53680bdc46cd6635b080727b8ff064a8025de3ad05b58019443a40e0bbd45b165acd096aa12ca070c8735cabd4ce6b01744a187822ea56535f0036a815f6fada375a260426b3820aa2a944d69ababae24342767a1a21756e66a7a49c46f6a752efd32e95808342d3edcde2e7b39ba14372841dd6ad2de6e6fb3a6a4a7269acc8417740fd8673dd5b373d90fc9e30e4b3653b11618337e351008e4babbbbe6807dd0d97be0d79c66e90e2ae050fdc6940d609d0b55af5d41a31e9e5d5c1402c34be9a439cf455a365aaad9d7139e96d9ecff1db387755b75ee96ba69402dda34f6cd697a70538ae776d034f9157654f7eaf8329933bf6dd316cae641074db1b5ad568b468f00ec001b3de3fb62fda09ecec6feb4813d97be733353628537b14fc7c3d8b809ab1f4e5e6bd8c097900af7805dd2c2d40e3186331b7daea64c896ab1208d8c268bcb543b9b1271c87c87e1d77a185309b2e2a25ad373e781d718fe2d909736778d092f950a9f09e902b1a892b230371056e63c2d2eb27c76d7003ed7b972701329601a5126627edbf5af4095779fec4ae48ff331dc7cdab6e6aa4b10cfc7d12b90290810cbef42aa49c23aaa1412b314136af9f986185f93ac10366258c16702ce7579b3c0705fe7e879f25c1b3886febf2535908c939a10b5ab2fc54dd1565bbcd2fdb726248681341847594d93e85dd26ceb9e274e99f61fc36b2e1723c869d611bd479928d2864473c14b56cc795e0813bfad60239116ab222ad58e28f0715845392ee01295d98513a6c3d24ddf28c371fe4acbfb413a0c8f757256c11429257dbf05d9853a6626b296ad1e988a699addf8f807af9ea64da3352d7f335bfec06c2e2c8e66b11c6f3212b970152350c7186a4bb392c462a47ac694af3d8753a3013729adc131860346d2269e32652a0cc65060b4f2000d20a7a2283404c9d52faede63e4f96fe141dacce37a3a46eba824db0235748d96940ed58d9600afd0387278255baa8e3ef312896e1094a792c9314d52032dcae912132d9a1cca165d609d1295ca780fd326adcac98227679067cc52594368db65d5405e66a90a70af9fc7782ed83013f910cf34759a75d8b12021f50f8fc1ec7fe360faf2a4b2d68db32c176c244a9e4c8b8acd19a8fbf9bbd56c4e24e29ff7200b77a441e36759a6b43dbfd4ee4f38eba1af2d9332603df610533e982a9e6519f514c17aecd13ed955720a41fef92ccb9cfd74d2e08d366b0c1a67daec1f38847c24726dbc3a5ef09ca7a510a3965f63639234bcea1ec8eaf61a67e11ebd0c8e6bf3ea6237afce3ff084413abd1b9cfc15dbf3d23df5ac81140d97aad3dc9d764977e3a5c311d6e0abd0c62bfe3e335b4ccb643ed551238d51d5b935813b27b1efd6e6b846a2289354f5c65e70975964ea987b147a13bb456b17d7f4adf422f1b6200e6c60e80818a24a6963bf65e1ccb03df7e52c29885518defc910a9d93ebc5061a6a012d12ef87625eaabbabbcbe0ea78b912888a434a4b34af2f20bb3d1667e2c1b7c94ba3b33ce024bde56f5c68f5d5a933bfe688c2dedbac3dcd68a1bbae975f1288d5d188fd2ffa22be351fadbbf34fad8ee46775c7967b4c5fd5ba3422110e70797d0507e5f79b7747aa79d1768192fbd31829858b77a7bcbb6565d3d3f8574d74eeb476184e926b3699f8a19061fd84b48f6c7668deffacefedfc4b11ea5cb79d6366b0ceb33ae2137ead381b5f9d136dc5e2957ead0862abed4d928eb72a6647b5c7a874f6deef4e8bf993f3dba23877a94aecfa31e395caa72b0629c87860e56888fb8ea0956bb984c96716907ee4d54dd959e5550c3b2777276565dd8f84559d79d9dac049fbdf5dc29bf71b59cd96119ea3d187b777bcb9a9c9a9835f5ab654d2725d4a39d75fe415c95d4f758674658dbc361322d6103fd1a1d1cce73314ae429f3711c6bc00b188cd7d1300b1c1e3e0318edf2d074e223f93ca42cd791aae7c1123eac8e8b1bf504ea6092e37cc60cc26ab010bf8901fb75a2fb76ffbeebb36dc367769cd1e0526c6e21b8461c5648cce6e5cd060a805f75f61e059cc9bb3299d6430cbfd990bf30d61605eb31e5aaa6f9b0cdfa9da25c0c88fe1e404b8e389b8ace341b2326152ebf7072d6662767674be04f1e9cc1abb6fadaab56f9238e9755473cfbec932a8d5f53c0e79271c53c1e19137d17bbaa06036b523ef10df4933b29f81ccfcddf8bf2186c3d0b3bd0b128c97d4965af2f472f54bd9f20027b2da65db56ff91e39ea311def56300707049fa8c780e06aac9d8779221f8aef864c194763ee657adf3f5315ddf73b65eecaa43f3836bfd96a270486b9c372d8bb0a5704768a36e4c8c91c531fb52a2dee584fe20e45984fe159af209ddac8379eae206400d77466a75756b381b11b5784d3b6935897db268d391cd97c2ed2918a428417229c76e470d7e7b771d3390c56cc43a682567cf45bcbeb9719e3d0a7bb388a7ebd288ca368acb726cba4bc1c78fc112a376aae663dbf7fc808a91aee33c35b634b9bf1d6668ceba82cd53ca6c6a2b4d2df40fb88e6beba58a2874401fd135df6dc3bcf6552403a2252689aba01a9598353f82d1eb995d2ba5ff9017c946e7e04c7df62d4aef424c596366009878e6ac1f63eb5be462fe881b07aa9cbc165e7e8c6b22d67b222081e08bac869eaa2c57fddd96a24521b9caef5a5594e831b51bce5864575049863513e9e4eff06aa8be0cdde26d887a945a12497e797e206b47914b09a774cc1b0852b8c6f783a829a3e2179092431bad381deb2ee2ee827f83d895444865b5957d5c0367a2c80590e28a12382fddeac177d96823eb6698763b44f03c62e15da12c8caeb55b16e842692762851ac12e1da3e87be475446e07f44a56f7e82af5242899d92cb95bbc8e2fc62c7e45af832f671c5256b4bd08912b8aa951d7ffc555d7170adf18853b5ba755f2b3f03ddfa94eb5df130b764c58f52f7505bbdeace195623d28c82ccb38c3033f2ab16430d6a423c17ec4ae468815d666c20149b4c1967ed1fc6094f23db69b386ce6b44ee233aefd739aad779364b0a111b94ca8a8d4965fd3a87742ccad8708e45191bcab11f88f8d7320ce5e428361495151b8eca224332786b3aab53d68926a9f1c440a80417ca093377ec47acd32332102a215437a9eb3caccc8ef136602075cae6eec096bbcf32fe6196b8c69ae3d478406ac26a3ac7aae7f86aa52babb88bcd199f176dd981a20da45f3626d3e834e8aa9f94598ef3c67a66be9bba8596f53916077cc1e72d775ae2706a765a7672e270c7c2286ca9298ac3a9996ac502b2bb0ea58cc8f1ee86fbe6e8d55178e8d9ebb41ac82370052d9eefb3dd5df68c4fa7033ebc04b10f4438bc4ac475d18e2e2024b2246547876c6f0f92d58c43aab6bdfe967d0d610c930b6656916d6fab3e805e8f4e860fe241adb9d76ab5d856cf41bbdb5ba01c6e0d2ff8bc89a06a37ddde1a0a62213509c945914daf842a4176cfed2d5014b7ee63512a48b5836e6f0d65712155aa82b63b4a312f66d629a343fcaa93b76573d509dc0819492dd3b6bf1ab64768c54168084c63a4904a86149ba1c6038bd4f2bbc5baacd1701eb66d19f2885d5c2710f02e9ac9d8505ee4c33ddeb51086bb23ab6d9a3555381b3f561a11202c18508358618b0b61050e89881546f4080b06742356d8628b896afbe1d48d42e38bdfaacd7c11af3e997dfd67d4433e4a93129568c81d6838cdd2551ac5d56f34b6f4f2bb4b629a1e91329eb9599a944f641e0a1d7ccd26573f25a28b829b5cd20e8420fb552b34edebf0b0c461042aef89111bdcb073f481f907f15e0c31602c6e52ebf55859fce3f30ce837b0061e188d2a77efea41a9016f368d96179fa6a3df95b0d3f0b5ef01cc172501982fca7563d7b8534bf8cb258c70cd871febfb49924f59814d09395c92673b41aa305db16995818e018f301ea73de66a3d3722e807ea7a94a0353a06598eddba068ae3003d722a894998cd32a873997422269f33f8ac1c4151aca6e9d677098af05cbf5c4a4ad78238dc5e16ed8023fe5b8a52fe38e8038597459e29bc9c1a6bab0fb0ba22160d8faab19aedf257d3f7d27492144f85989f19274d9c8d8498c7312016585e2dbe69b06ae50d7ba6fbd966d834597b85803d95c30e42a4d1a53b0385385de625d185940b6eb2290221689b9435ae6ebc448b5a95c8406525f4609b41f05e455acfd9c5948f9510b09c882437fafc48469d8801b8139e4dd115eceee9e9f5976e888008c2a0a3cfbae882d0802cea67d5be5fb2ea58b26ac971e04d04aadae2aa0aba382a49bf2ea979e8c8b34957a6b72b7a9be245a9f531555993b4deb6c61e931d8d1240221d806f5f3d0e5ee2d22b9197e4318ecdf3649694c9959654c22a3b4708026b3649b575a07e100f3a21d38d2521c8dfab0bd6736a3aa05f9d2b05e306375c824770ebc31a22715196be71e200de9a8720fa52b9266639155421184e94abd2a5d96867820eb40299938c5c8a2a2d29c9cf55ac3069ed53917bebf9b5ee0eb62560ca89f3afcf45f47d8f9f9125220eeb6c7f3723fdb63c21fe41a24ffe0940ec00a0e5c9114092a7ab0f80a83bcdb5b183960bc59f4e72a404922e0f1e1323d03e5d238911e8988b5b2f6373c9e547884070f7d8019f272e00921a1f06127f8f0af01f181520267c50d048f875c81b704d178a5a4fd3306e8e75fc964e6fb4a54f01f5592652e9d949ee31bb40e515b5a7cedbec5cee1df9178274c81f2ff85cfe512182da86656db3f363519eb7c1684f6de6bb3cf846ce242d732ef91880032977b9aa868f77aaad25abf9eee62d1f5bc34d3e8e1c6a4ab6aa981872fc28f19e967696dc8a3941d8e71281ae95f5a006967f325a0d165287a2ab5d92a4e8a85f9f3c2665579bf7a315111a13ed89b9d9e9c950f3e0d6622950d74f05624353d51ef792606b7a6941858b48598f18f85941bd0baf6277b884a3593a603c942ae7da83368714ed8839532a6b892e9839cca2fd57b7b268493ce2eaf6d91c67d1761473ee69802e15d2c19e5ac3ff466d591d7602d96e2b901ec2776d6367048f9b3aa32c3551bed98890b5cc906186b2a3f5ee53e86cd525a14a5d876a8b2ea56972edfc4b14705dbc10663e82e0a0f690c16b538bfdec0a5d6d09e8a4eb5bc2f8bec03cc746114ac33d8bf9b1f1e922856568aeaad8af24f3de1998f52bcbfc27313b2f4d5783d9294eafcc4b1e4fd4c68828fb617f3d953035ef8e9e00a6dd4da5bfa61f9a1a8cc9c73ae43fde71eb1a80c5c2c685a76ce89938e6cd53f93a579815d35e5f2a1af07ae86ae538ea20e3cf1b97bce252b446a81ec916feda62f4ccf8bc666c9e177cbe46509eb11f9cdcbc005787db7135964c9a1f0626aa2bf48bc47f41c5ac8ac02f72346b467c818bc326b193bfea8406df9f23e44b1c7be24e4d25fe28ad90e51e46352051de591adec5ae02ae4818d045d66222b9e0ba04ee425de4fb85694d8568640d5a23ef99bf365a0392c05ab4e6589477a13546e7a39ad6b80a9f26cda73581f6e22f466b509fb582d6c8d1ac4b6b00437e43b4268e3d715a73ac1ea78f45b99cd66840496b7ce018adb1ab802b12d21a598ba135b82e01ad7191efb804e53ef324263f5d5402f1c5211ffa365c32c983847b13bcc710589b1822337a4072b119d3aa607d0f703a3522e88e4aeaa3427aedadc7b5448c44b622766e2e6cd44ec7b18a8bc2fbfd1e47ec4bc6d5b625c65c21061da97bf5a9e268d8907b87935e51062efc9132905e51c6b700f5323e65f031cadc25215f57db5d2825dc4948b397186b91f7e6d93c2b041b24e58c1797a837a784c094183f79feeae561ffe9e1e1ebfeb3e78fbf673da6adf831e7d9f3c76f75ce4327e7f81f2fbe7bf5fc58677ef57b986a093316a907f2bd4845cecb2cff8f0e69bdf4e9eaf7b0d7ffa50f5c35c35e2b49a95235ed77e0583da7640252f8602a68f06b2791467df6336cd0e7488e13f3d9cdf7023bbb99241e74504a4433dce8dc913c139cdbcd23a1b4830c13263bc8a968c8c68f76d39df0d16e96a1326196133cdacdb2b1a3bd741a3adacbd24424cc5a544e42249c780850314db160e22e048dd1edad980dd1ed66dc25fe35623efa0f505f4f85986b5f0365ce8797e86da0ccf995c80bf366b0e1fd77c97ba9621db0c7ea37e828223cdb633beca97940c5b4876c873d9bf2b2146918c433518e12d8576c87014ba6d5e14ee32e054eac23d8b3305eb4ce336c4df4e1f8e45228079597e2c6378baa72a5810530e0a2165daf2c5ac88bce197b0b6b14ae0f2caa52ec84b10fb3455a8a7ccef332086cfa65549f0acd6de24206984fed03522d57db4e520e86cbdae9469b4167039d4b12711456b667167edbe71409a85cf008a8611d29e8623a8d80525e9278ffb7bdf76c03cca3393b20432451408381760338c7e98c6c4d55bdd523ef3abe1f38fab2634bda172dacd92f65bd6c3adedb635165c9e821231cb8670de21433dd218a06f4ddd578c95533a594df1d07a02893206662251cf3e30afb300c6024c9a704eb1926f9f656a7204becf4d00b741be9a9bd581bbfa6e6113d7819540d596ed836aeef1710d7167ababdcdb69c67227776119b2df801fbf903eb060f4ddeb4574d3c11f541bd079e231dbd5fa9bb68ed3744cf4dd7716c1794f0e103cb2e67415547dd13abe4e3b358a7cd1ec3f3a26b1f66c902c45013955f5457a9ee8b8b69bbbb28dbc3cb69920f17534ea5864032f50496051b66792e8a79968e92746cce2ea52b0352a7db5bd6c45ff8840bc2a7a69a149044cb0431623dfcd5198b32dc790ac8dfc62a996e64aca4d095d01d65b7b195fe12f34b49c92fb2fc900f274de27d7231f8d1b1d3344aec7c346a5a3aafe12a48bdcd56dd422a68a6bf55fd5e4d3b6e9fc86a775c851cf47b2f6708c872ed2100f486bd57b12d346552c7ce81dd848ea0ab4b65645d0b74a9b321b893ae57f2323682f6813d2a1420b8f921078c116c36b1e4edad1ed5aac943efced9bc20d3095139ccf29acda813b41f44607af474c96df6460c1779915c89e90d9b67f3c594978aab90ad1743312f93c11459423e9daadd344d664959b4cc1e63541e6be8cec759d70ff52dac4c5bbede048cc7559b001a7157f1585cd4e5a9ea17133e9d66d74465dfb7bff73435957d6c52b069961572658cbaa7096687aa0a8b5cab40303e1d6779524e661853aae8eeeece466927c9768f0d288aa5fb06142348818d89af0e8a1ea8db8e6d5ed166ea0e5080ad9356ded016fa501b5e178bb696f79d5b20b8130a63c9afec5a8c1f2cb4ed07057aec1774a1835a22519752890a5960a2b49f5b9e3ad7cc31d655b0f9949b903645873d4e95ff6f75962585423165adbcb0f73d2b8d184e746d70fdb34333c128daece9ab17f06ea2c6a3a458eb455c213103d77e7a8a69d1acba35b0bf16423072af8cbf38598d3849e84e7e660ddee8b23df6a1cd7e668d41a3cb1eb20f67fb0ebcc6fe9eae5e29c768dfe8d409ba82d55ed015e0c9837850d088d148ec2d35b803855b77a98d46ddb00a333e5f1553c1c45380ca3e5b4c0513c5e1a3855498f17960c0e33a06961c8232e3d6cd7f82600ac85d3a11386a7a0b56410f8c9760ddc9268da7e0c54c58d7865c4f44e8d8ad96b79f4fa976b1c29e64cd077665f367ec1699218dbf85b0c56a36eabfb9a37eb2327a42c4c9f215cfef58260c3b5c19485895881034a5b6a80280f45803fbdfc0bb69547124f0e302ca231a092a230b07868b2ff8fc091f4e84e3390b52082ec2db189b89a2e06301f4bde469e9e0dfb3772f9ff40fdfbc79f5a6fff6f07fdf4a2c3c7c3f17c352e294215171cb472bea9bf092cdc42c0345d412ec9101e7253d9650e71d7604e6cde06f2797abadb5acaf92911849d2043ea2f25992aa2a86303cc94d4b7a5d9419585893ca0356cc301fa65eadbbadfa36325deeb0ef6ef4f4b601e422c98bd254e1f4aeb21689b48b02771f00f0b9ed36b24b387ca82e290ca5373eb4cfcb49529cb34182f765652c137637caa0ea394a0a26118674e41c32ceadb7459c2553315465e7e248b29b7259e5986692cb14f642002f3eb9984ff9502f803c63b1a60ea0dcb9e11fb4da2e0c5032c3d7e0333c01cc1b8ac28ad42d030d2a88ebc75fb59ce74e76b1534ec4ce8ccf778ceab70abe878cb5e6e365b5177c88bcff702a38984a8dc454a039d5184ca5ce27bc386f2b0fc1a25c2fe27b8c61d40c4005577011f3c73be15702242ad9a29c2fccf61a55b116277a7385627895e3ee2a9f44db9a0216238a8dcb7852d6639a236d1b6e74df0281af78801936baec519b35468d2efb4ac11838c5ec4b7e55f5a1d9efa8d806ba36f9410d544c889fbd367b7846aa4340d9b20bf7a8cdbeb270eaace4363e61ed267677d90b88fa4069144c778754d4c1944294c6f4c846dc5e3d2a034a9b7d039b33b22d3bead4735259cff86a0c4f3b3dcf17e07e59a31409fda28e3c40d92d4737fff6d6c0d3c0faaa00cdb2850c13584ef2ec1ab0ededcd5cc0b9d5f48ea620b6aac14b62fda2d39a8e17359ec38bb4391f886c1ca535a67707e66787cfe7d39ba6a4cf6da8a005dcef585e82a8db3435a5667b4282eb250d567cc20b08a91a11a443fe18c56f81f0dc317991e30c3ba68ab85d603d66510d243a4aee29174a77b24244a7ba1f5428d7a7e922137ae183dfada6231fd2a5254f23b1f4108e28503837d829fff79153e7875a8c0a9270412ac53041ba2e4f9a648ee7f7c96c3133a57058852c4038a2178fffb7ffe2f0c5aba3ff3bec1f1ffddf21ebb13f3e784018a0a5574fac5a3f06c31153c4cff406b240d889eb8948250f24de0f851815ecdcefc52aa3ddbb9d261b9f0251eaf104eea44043622e635c1a6345acbe6055a1af5ca95eaf17ac0bd948080993dd0c369042c74b71438598a0b1a2304e09c0eda6a873a574c61aa224a65beedc498e483bd1d190e71d5b7251898d6cc5e6bc9c38dc7b2e5ee7d9fc259fc961ec9efcb373727a7a7676fff6f4f4a479d06dee1c9c9e8eee370fbaa7a71df9ab75d0ba6d9e9cde6b9cb59a32ff60ebf4f461ebe49fa7a7a7a767b7f2df4eebcb83964c9409cd831e9695f59d9e9eb59cafdb2f5aaddd717418033ebc2ca6bc98a007d065fd3f2c867c2e9e4c788e4e924e4f9bf29fd681ae1aef1ce89aa760e785ba549719e36ec541d4c2d836d12a07ca5f13f8b9c19fd601500dc94b55c3f65a8f1a34d96b0e92947063a85705ea1fb33ac43e827586139e3fc946e271d97cd0823df1d5d71264f74b8693ca58452cef46c3db16aa4664eb45d3e211dd90b0986d25476eb39f165929e0e1ca73eb495b02207660a1481b76addbacf1c55e439ea858b93c46a0b5e50f0d11b7d374a21db363cf3d8a4e881c0d5e94a32b9e27d9a230be14e2f7e6a397cf8e5e1ebdfd07ebb13db6cb1e44915589360057159a413cf70b96940d0c496d32322d0bda48492849e59914a02ed67d8b15bb28acaf002e052fb3bf891b47d441983e22e7505e2341cee1c8476ae955182cc71aefa35f596fc1a1a10760f32967d834be63a6fe8035761e34587739a18621d5f50746ad1f1c3b409db2916efa2f828bbfac5fb3b79971265cedd84ccb482b3c9b2dd7c3b30256e4b5469928d24669862b2f20493121372a39727c69d203de64abcdf36c288a401d2ce6795b51d9b836989e2167b7019f2cf9409e4fb5e00bba0a44e42a4b46f2d813f94596cf783a146c9294f2882db2996022bd4af22c852b4e67d5de5db9518d7e93d1603245bcd76a3de36a966bbd569396cd2b05d19bd193d3b2c4c1e9d6529ae361e08197803ee3d4ac77bdea3f3b79a2a3f59e27cc089c070a330c3ff859f5a943de58d569e3bfb19ecbdd726e1ea1cfcd763c373e2d81574ac6b8fd761e80c47e9e8b42e457ea1ef1395e17e22c5a6cf32950e39cb3f21d4113922604b3a5e296462306b6f3c005da79100503f1509b3d729f4c1b7bed87ed478dd8c91b2107746f9287b8464399fb7934a4f2040cd0abee0157df48eea31c85265825e19e4dc334d58fc6f13771434371fc4ddc04f13adcad54aeb38b96df333643781b1c7d1384af780daeea681cede544361bbc33e8784f6146ccd8668d2191359242270fce2acb3df00bfb980e75f84c66c559537148c01ac7de81fdf7ba037602bfce949226364271a9e96dbdcad06fa57fcbf8a41a4dd5067f4b749d7cada5e452109b05f15e9ecbf85c97942ca767b884282201495663f7dee6e43ce8c10a7519eb0cae526766d5db447d7d9911aad7135d9c250a33127885b64cc503b3adbdbeca8cc58ddb759568644b04857f667d65acdd66fdbe785f8a7454c89fb9284af6412176594c930121a73f2b6f5887c896b7d99349321de5226db32712c95391dac2b9e0c3d239040e7f5af029cdddb9e045b923f707cf050195b33a13f9586f30f34d60265952942fb3f48dace818b0559bde42d64e9aa53bd80ae2b273bec1309e646929de6b835e4c53458698458a5cf33cb5274999a4373b2ac9374557201813794714bb90ea9c4ae484b360981cf89395e818ad51e660601689b67d6e7e3ecbf25972f91a9fb173d663cd3e673d492dfed0efbf7ef7e6b0df97c8e84c42f3e70fad36ebf38e2ea62d09b0b227595a2c6650599f77f4d7be8bd1599a8a61d994a8405d29d2879a279edeac7e0ba168d5749b6c03fb43055417901f7951716a91dd681b346ffefca18d1ac26daa4e8f5575d55fa341ef6b34eba711101f6b4c7f9a14f329bf516258d95c6744926e6f312da51ff4b17c7b3b4833c00db39ff00ef2a4f3f71ca488769f61932a77e4f4e5f49e99425891d37bec7ebcdff7d9e9bdd6e93d7acf896dace613dce186c4a0998c7e36a02b6c5325d9acf2f70504b341f54c3eecdb7a5fe9e76452ab7523e6d6292bdbea050f8fa60da4ca7e0b476929c680cea4099518b6a1f884179203bd986659de44c10c40b65a9afa7b6d184908552ac29a8216fc403be63e81b7568087e1f846de5e9b2ff94bb7c197fc65f59c857d3e94b7454dd5dd9a9cace650fd702bd6d91db0a02340b2ef0fbcb66c2848d28a4a5ce69387a855116443bea09c080cf9e9acf57c511e5ee19e71965ba7575fbea08d48b334a953f27c8c1e5d3eb814712ccac7c332b932346994e9a7b15136643df8f7f6d6486b46d9105eaa61711ae632de6007368bc8cca82d8bad01f1c416f669addc2894812ef31b0f62940d3b9cf65bf651260eb2917a4d634378f1690abf76174c510bfb52c82fc5139e0ec5940fa6e00c1282f0d9c362c20bccc7f77d65a18b79d748012ddac8ab8fc6177b3aa897fc36cb85634aa61a031421e0577c1a9e24b41b07aaa22639361293ddd5aa86eae040b90f84979335eb63841e5fa0b9fed1db0470acda3bbb9c579513771649bf8650bbd5a070974299603364973ff8688e817a950dc9485cb4d99cdcf1e6809320c67c60d7832149706470737c38537745a51841d48925e5dade6673f62d80763ca562a0faf2df13997b32bf7fffec2c7259d48783b5103a909d665d4d119de1157678b2566dcee7bcde695373a0b5fb24e3473ec5a76693989871eb01eb50546ad432490f5b5e159bfb2c51e3a5710dd80edbdb67c9fdfb8ececb7091e7222dd503a42973929ced0740af60b6c6eef0b089629a0c45f3419b25ec3edb6bb956acb6b8fbee68c6fa239f9e908e18437c5ad2d840b93690e0864cbc8f0c4076e46cbf6673f630d79501e156c7b64dfb4b8f3d6007ece48c9a507ef0e4cecd04cf2f760098d3556db64ee8f4e21df0ca3111b4e8e68bb2b5682f66d08c7a897a604e1b8af8d2298b81691976204057e3d8de66f53a106bdd57bf8fed9797a228c5080fc91fa95a9b3130bb4a8aa41423504f9a67694145422a2f46344c1673026e460cc6a1d25815364faff807b2d7e02a055b54de86acc7e94b127d7e5f427c2b2f42b813e5b7b70d2fe1a274d277b6dd15202c56727279e6d95d5b96822a8b814db01ab536896d3916c13a5399bab681545b5b633be093cb336dabd12152b75680ff0cfd0e451611eaaf5ac193cbb39526ce6e5fae88a9e48728720130bd74e0c526729bb5e76bbf58cc8df2a2116ea85b659ba96c4d607531ccf6aea7800de524016d542887fc386ae129d8db5b26bfcd724281ce64a835dbccbcaa8c819341b372314e8a52e4cf123175f41b9b29e868909bb52d7421818b130971462f85f6d6aa2117e9f20648d58a04842d54545d8812b4370ba75260478aa0c785807ba5a0dc0d8276d55fcbdb54b7f7365b0c27ae1a68b3c4b45a2d2ad8aefe61da6c875ed5ed5ec4fa60e53b577c9a8c78295ea5df4d17b9036a567491fe8850499616aa7421bb42359a99b367960ffb47ad1dedb0b0b2a63a8346d0aefa7b97213f99f0742cea0c7ac381cabe2fdc811690546ba008da557febb487563301fa7ab458ab0188f4aaf3f2d5d3c3fee1cb1ff1ba36cfb3d1c2d36f96ff6971f135cfd3e6e9bdbfa3d0b0ab084ea360ba6ddd5e52b09198e762087107783ad2b619b998655762c492945d2cca452e53a68217a2e8b0d7f0832d0ae1548c9368262e498b52f051871d95ec3acb2f0be5fe4b12b59b8e2cc966592e58925e64ac1082694be671524e1683ce309bedfe8be76234e7d399c877516cf6874294d8c28efac3d39b9d1d79ee9ede6bc5fc52aca0038a0cd4c292c5609694a52768692685cdf056108b8e92d18b6c9196ce5255774b5ebf6c8d5de78be07578fe793dd6fb2724c040646ba17652e8dd257be25e05f7a9ef0f3844cd963c4ed2f1141b7e2eaec4d46e516cbbad6e02218d6a33ec5ccbbf3bfb1b64e5042f9f627b0a14414f3047f5a48d80d4d94d3831fadd854556c74146335550e9fe4aac5b3a97e19ab6bd4b81139ca5527c1173faa2050bcea90c7fce3cf2dc0c3cce046bf73ed6c2fbfde89110ed8da8355376668e871331e3cb0faeb56746b1d57e139123cb64efbba50b5dc695253a455ae868c7496bb658374874eac6a5f8c762ae0ae8cd842d060be26d14bdd83fbb68eb09922a0add2ce66f33790e205306904e35ad35176f05c361aeb445ecc6c50ce36196869297d80161e9889a478fce7879cde82983cf62ace78b1d156a7524277f62061bdbcd8679692f452976508df066b2e4052b5a8d8814173ff07434d52eb654e9b30067fa3cd80d400f0c2fdee7aedd92fc0ff18f82ecf920136c9dc23c3cdb0f48807997c5a9244db79d56da6e85676d176b51c943d6d325bf2bb0d525fa73230c0e478a024d3dc27d9ffb30c80326531274df23431512e3e056b3feb1478330892b48f30a18b765f0686ec1cc41a87a1114b3a19afcf4aa4b9699e67d37c5392259e40121b23e4b0ed6821e46f07cb0c6695445a410aff02ee2f2ee57222d5fe528e573a48be2bd182eca4819274357a01c26cdf8cd40789591fd06344641ec07a7d342ecd34941710f797da24df90b0a3d96f9fd3dd6631472df5d1e59ab02eccc455e24858f838c79f9cd96bb8c6e85867aea52f8ccd5f6d14605dceaf38efc1564a77c26a0ef7d0eafdb014032c2cc641464815309a1f2d54700942d4a91fff0f6c57304339fced882556207e47757f7f240ffe8b2641499e02dac677b9bad7f0f94ffc93be0e341b6285f244591a4e32374be9c88dce784199b94b3292867a465d70e3218be7e188423e7713a9c64f9f324bdecb206ee8d21a0f38e526cc12f585173476b04752a6afd92cf84a907b745c323112b30081d9fb908d40977044eee2e1a05dde6b2a1dd4e298a129e35431a870f27e0c2b5873fc0077833d6506bdf2f8b9dc2a771aca5a5956bf173d998a0a3808a83ecfd8a4e62430a6ffd4acd4f4f421a4c9cddeed12ec90ef97747b6d989a36f8caeca8c826e87078a1626e16dcd1e51cead515f7f96234ea5008aad2f84625582a8f05619eda98f311f969d75ea87e76ed4287ad06328383ae6bc9c50b2ae4e0f776db7c8bdc4912c9f60f1331ff3a240b1b3d17767e920c1b2c310ebf45670050b10ed953ddf834d60cfbd87c1046998481ffb0f578a600a5102abafdd32c6afeb6d564cb2054001ae79971d37b3ead2e343d957745675dda923975abd97d7dbc91befe3eaaba9d79f553b589ea895f34de7602d79ba4b675722069e7328d773f78bb7f8d05dd1911325d2f229aad93a1df633e3f7d3daf264a2d756a5221410175781a717ea22b50252e316a14a756e8e76eb935d30c9927cb728cb2c5599deba550eeff49e1ddfe93d76a0f56b9b5b5b6e3f3abc2cf364b0284511f484e475c6a294fccae8a814b36643ce56a3d56ab3c63fb2052b50560bbeadd403e24596cfd8a2004f9b6c002340ef453c650bb0aa45076be7b2a673661aea30f6222b4a36c8b3eb42e48535e8c23a04f60c0cf7a06ceff41e367f7a0fdd61c1736262cc8011ddb0749bcd518ccf4723531ab36469b09c4632133d8402f93ad42d07dcac94a01b905830e10d684fecf2695edae28fca21c181176c872b75a5ef32dfcbf645e24e368ef289a4ab5d4b073b2499dd677b644add8ba72716a84b897cb9c1309b0de45e3dbcbbfcc0679036157ca3822414f6541dbcce6a9d23adc7e9df66a18a689fd5218dcbe7dc38d5a17fe7b153cc5839762fd5df0f4e6f976f093cc9b2548d2cc65662da589448741ea387da666bb934e3bbe9225f4f96e19720c94db8e5829c615d29c6128985adb45a5ef14857077095d28a472ba4158f3692563caa9256c0fdfee166e288b5240daaa103fde33f47a230982e722d4fb8c8868b62137182c4cd95c284e85a6fca0c7bd3410f2587eb551986ed85c3a8f2aa1372519f474364f30b67789f5a79e11c905bdbc3aa0ba70b1412b015374d205602e914d6b1d105d3ed45ad0be657ab2e98b66bfdaf6a5f2f63ea491aa334862dbd6296ba82f8ddd2642fbd547ee47bea66cc60ad6b68fdfda874bce257bb0d95b7565e403f953ad733f36616c314e5c3f7ceec78ad1570952fc21727af4ff1f9af7c4d168508ef19a978af6e011e63639e8b2d843c4aed47d7e1c2923429133efdd17d4f4608274f2b9d16c173605cd326e02d9df84a01d74d72f56cfefca11d6c5a2f55e93cf91e751851638b0c1655bbda94a251dd3e5a09bdfe3c58b9547840bf910b56c501fb9b294b013c3870909dc467d4d1ab54d71929ba36ffec73a75a5f24d6a47f62c560f0b6e6216be4ba12a30a1abc19dffe41c1ea624b0e15980240515727b20d9e760636681cf30f4583da14b662f18d829abf55d75032dd50412da276f1099ede3fd6d5b9ea69bb625e7d24aeda5921b36ad0a4ebe34db0c529944d71498459dd6e64c563a092ea07b0701490e6950a6bd753a78d80143e4ce102d903b11b3b2523c06f35518d326091027014f8e0f8b6e1001f3bc4d7247840e4848868a5bac06157a3bdfc5151724fe9db1b8a2508dd2899a07785a528f9249bcd1725d804ce2b1153dbd2eac314efc9f4587232f769b951929737acc78c3a4be4646e4734c35abe460ed916506717ff8487b2ca309a55548954f27a54d41542b8e22e883ce60c5cdeca81547836c82e580be29ad1147a66b6826ae928e8cc74638c4cedc5fd8e8f57d01a87392493517dfe06390e06c97c877e119b936eccd2850cdc3351e9c62d5748012b4de80642b4000c1f9bba11dda1001478826ec8110580b8d5bb9137a40831d5ef5ddda81ea0ce8d16a4438cdd60ea9f40daedc9da584171ca5b645f2332da53931b19607c689b6d89caeb96629e084dc3ca229708767b4b99f408371fe3e5975d18965d175c0edd26ab0328c2f7db11daf16906c8b19c77cdc4427334ff7a543917aad4062f7a6854d7310e4894b4732ec9400aae66d4331d5cc0e1616c5108f6ad7aaa33e5fe02c6303a19cbfe852518e3a4e03353e42fb6cc7e007f9d4ca76c2058324eb31c5e4ebd47b58f3a42ed020382dbfa4e345c90d666f3a08bd79f095be213ce054ef7279908bd929f6d16e84d855a0c634dc46b0bf1b163b7624864fddd6a9d2becafaaf8efc974fa2e9dd5af5b5302cc05c162955a7d854efd877a3d7b9a8cdecd47fef5749e8babd78e4dade9022eba48f9409ead8ae224ff161a438ce2f3eb9024b55995f4a7e50fc827702bc546dee5bcb2a15ad3536558b0ec6e4dad8e4b6a596c5eeafe266e8abf27e5c4b13ba23c2d21f9adce45322d454eaed11755920275486c6fbb96bf17679124df88c165859703070183cdc8bc298a0f56b3e77f019f0c5540333eaf33e615a671da2cce284311df60accb4eb4318936bd693c7dd57ff9ea6dffe9e1f3c3b787fd7fbc7ad7fffbd1f3e7fdef0efbcf8ede1c3e6db4ce5caa42ad51fc29080420c4c4e2b9fb66aa6af3003ab9182d86be9cb80d1e405470c5409a22f3d089d0caa1441fda640bcbb455b7b6640b81a290b8623d227b6e57adab090d09b5ac10cf387df9d066d69acaf3ec16dbb89e2dce465b764d8bb640686a4d7022ec3131ad3e2592d96805514f1facc2d08ca8665448560f23e62711808f62e4e68bfc6c39955961d916c85d75b1d8480211ec2afc40fe267a061b6504bb6634761471e1d7e7f6006dd38eaacafb5c3544cb5bf76c6016815f8490ea40e8914b1b811a96ef0318ed0cb2e592a8987b46ed27b2ed5da7bab26235856d32d603af163b6c66e4216ad807ea47d36498211fd033c6ba973b3010b64cc0645270e3a82e4ba73724a78b2a8ff8278a014adf4fcbcacc8afb177ca284e65fe249962b0172af8521674404d4781d53eb835ddb3f4d3f348d7fc896eb8a6e899e88312204076c564704f18b24181cacd010c1021599a630d106512dd80418d4728709f0822146ec1c9c5ad2caeeb3d37be76d365894ec265bb08b2c1f6725846ee045c178cace93d13903aff77c46753a25cc4db6c85992ce1765f7f4343dc5ce62136446641336db742895371413c75405a630de8e17c0156fee5d017a5135e5aa47b2afadc013936f067cb3981f12937d5081d0e78b71462389be06ec24692a72471aea3bb7c2135bbf119b82e829cd7cea47637a7b8afb5b729baee16a49e43975b6642f195bd8a913916377cec8216286ed765f83e22fa7d3510f45e6f5c79df755b6df6d56dca443491d81dc12d757323da6a581e944ac439c5d0db53c2f2c66b23c5757c46c5e3ce525a7eb6f96e5525ea53d3ec71a7a7726bc78759dbe56aee79b972d8f8dc1108b4a2de9b2451e046cbb2797e2c638822af00b54de1a68716f12dd483115ab81937b027375c01abaa1e39b74d8605d9bd0386bd24e98138c0fb2bc3ce4f9f4c625c46a16bbfac7a9f6aae8aeba355d6e2ae54356648b7c28da2c9b233b6ff7dd48146592eaab9b325843af7b385558b47391e587dc3195156d96b897696519606b3c49ce2abd80aac37f9aa5e28df86901ead8aca77b884ecfed0387f38c83e218f47cdff3abd8de36752405cc823cbd9453336285e777d3a9f5c09a94375d476582b8296b333aa55de3898270adcbbae2b8b9f23a639bc7253949ce9cd6c296d4d2c1a5e4d54553a0afdb9dbd782b182dcd23298e834e02ecf83d9397a123491237f27d664a57fb3f33201fc3071a7abf544c2c1508c6f95857fe57c12b7b32d63b48281d39ed0a1934a8e706a257488d4ba065962770f4ebf8246257675054da1ae3983719ae159872270cfc5d871fb16bd964fc56e0bc54d45c730a5c19b337fe9a23fe080266b329371432e39e4146d27d74a5724df42e2813bc2bcfaae63711f8828b7bb99656b4eb391f0c7beebdff36bda2fbd5256b8f99c88fbc0e1b09a7dbe9ab5051f4aecdd79df97a8f004b67d0eb4a8d75df5ce07165158bfb3cf6b69b9abba06792b1811c8400f407d5121647083320bcb3e41ce11e2859c6fe8014b950ae476595f89b646a990b465069f6799b9d9cded3633dbdd766a7f7e4e0f0178e057feb8eab2fdd2ffc547129ee9db59ca3b54fa6542d70645afb11cf582e74ec455ef6ffd5c53333581c901a703828bfa6a0afda20c6171321f2a1f710c9abe67c9464105bd4cfd1ee16e4a5c06cc985605d259ab763823b16e0b319500a56270e5e654648a34a4635413225ad7160aca6c507224a1b808e8d19e005aaae5c38aa2a17a0724727d7d663c98e624602b1be12880df8384aada2477c508991915555a36e12646fc422472a5d30491ede880ba23280098ef90f84133248a4e2af9c9cded3c00eb654c81b89a4d02aa5507cbde89ade9c5a51bf5257970d3baa2a7a16ac54d1146a05b352bf431fda120dc2183355cde9c6f4fa6b519e21bd31719eb909c4c2f9a8602fb6065946fb4c5e5220e24e0c68cc204aea5cedf0fe20aa1ce599d21b284f312a4e34039a175d04849334c8470aa551de6561cfb4b566d7e9212c83becab474c469396b5e5c9d864c6b7882d5a49c28dfd1d1e99bf139f00b6f334f89d3cf881c44f4b9294da653fe3ab899a14f71e249da17df44ca69318ecd0a8539c4e500053cb954021a13bac7f7f2a73d7b3b6582c7156f7f5d711592c43d7387597a918c0304f1672e44151bd4027046ad8fd94c5f7cb1e74ce292904e1a3e16dac9e4a5b1c448a8a7585e45c827db39277e967bc18743de5cf29ff8777b40071b792bb0ce706ff58ec30775d1e7f3f9f446ddf4793e060974e4b6cf02f381e5a60394b2c212fb2f9a8e9f44e779afbacdb88bd178abf4bc743ae0b8fcacc8f2b5782bc056f4bad2db889e013ea432c3f8b4d14aecd4d13349d512f87c81de3b4a9734ff436bd5a423432237168d48e6c768f3e94ee5914a77473ba67baa8e555a6d751783eb3473d5039ed4bcd6b095571b56e71ec22a8f3acbfb9fb56223883dbcc663da2142b47d637cad5ceb6d33a0ee74bfb623c588326f058afbd5c4ae1381e6ae4fbdc955b4152ba7ad30541f6c71e5207e7bbb2aabb266cb062c53dad6d7cf2eabc278827fd4d7f23ec5343f32dfdf2dbf502f2c1f4187279a3df5f94202b32c7c9f39fc0ce769e4cbb3ecca21daf2bb092f1a6d883ed9666546b89b6136bf613d8610f23c38396b39cf17c68893f500f8445672a6de77e7379d620ec058b5ea10cd28b3367ba07d4e51f9b8047202bc15d77c4e7b2ebf75cf412aff58fdfd6eddfe73dd77acc6f65e2738f9dff9f9dfc97cbeb4ef495a88dc0d4b07294effc380532b7b4f6752d5516f3273319ff2a183092ae9637449a96e39915faa7a02d71878fbb9dbab87ad62f9d38785fb783160f0e51f6a8e38fc4fdb8c4f4b916b1330fc0abc039903a85f7102554acf42b514570217b1376155d73e16189de1bdce4d8b36ae4c49fb03c7d4d0d036b7869516ed723a705e8d6a9cbaa790e9f3c28bb20327b3cb2ed2fd588dd66703adf22d71c410d6a973bd4ad731bc5fe57f0f65c5176973bc04a0e579c6d6162b74e00795b6fdd8049dd7a0310ada6a49c637c8a3ed1bf3186796c21e18f70eb40b0a3ce88303ec77c28be3b3865f88150e4529da56987857991ccd17c524e4eeab54917d7a413603d0d5986b0797e20eb374c8cbe6891f5dfccc9d0a506ec03fcbbd00bcaed9ff8ac97546074fdf9e4fde2af345ff506f464ff28f32814bf8053a67a0b4e7c456abf01fb96ecfeb4c1df4b1b27315fdf159baa6c7c77d94d98bf2899bccdb8bfabdad3363d0af48872afa103262cd08a3f351666c0987172757ebd56415573f6e45cb57ef68ddf9abb386aa5b155354e96826e0603fd9522e638d37a3b76fd6ee7d9d89d4fd5c6f26176931492e22c2298f39d5daa16c672ff0aab3d6acc29d0bb439f14c3b6027d0de993ed65491ae4e0fdcc0a8ae7cebf9b762b68f3cd7eaac2b2c47789ed7dd45917ecbcd13e93624ef57f77979377f5b3d8bbceb39e5e21be05d0da45b03f3150ed7653bf4260c8e4edf526aadcd076711d650b307afb3f90af3fc5a0c57366fd621986ab4f4b3334852e5aea2e5988bcfa167e677046ea92e93bd653b22d815f3ad62692fa65ae96f5dda4224147a237012e71a76c0996745b5852dfab6528b69e9887dce620266ff4dde8a635c8ba9889c662fea2adc9592b02ad6ca068ad373e5a8f444677f5e856b1f65d6cbd95c4ffa3af32b8b6d6fcb3fd03ffb33ee495d8dbbb4a16f3fd6ecacd27a8291fd20a67391175407445e7694e058feb44fded95c276773ebe8e19aeb64f9d3be11675742a5cb9fd6970470465d46d8a4b69d0b38ec8dd41abe4cae22882a577d91b2a445fcf0def45fdb71d9041fc68cd17cfb9a0176bc36c18379617b62133c98233a0f34295057a073e2a47990ef9cf971d2823a677e0f31c927b3bf8435601de5ba4a491fd52e2352bb159a6516b2be56597fb08946997d4ba30f9d642312f95aa87615d10c532b16bca57c7ceb45ad616516cd97297e0a3bc6a5a46e1d7bc6d3c0f0d0ad6ca9ca1280add25bb27591d2bc28ef68fee0d450fd0ee080fd6e064195e2f5d484b60126276e0ea1b33d0df9587dbf62b3881ac3af671eb1f974fcdacc248275af9c8f3567e023984d381b997073cad64cb71b355f5862ba80c5b1547825ab00d45aafa14213b122c3878e506dff2af47683c6127295f5eb481df8db5b56d5867ed8a9db4625fc9236ccc34ddd46aa0bdcde869e6e705ab59db2ac9282b8b98a46bbfda38edb949d47456e64ddadb374dfe584beac13534ad7cca30a513fa38d4f9d2efc6ee7f3a9ec7c56cefe27b7f5a9eac1eff63ecbec7d288547109af2f90c83e46fdaf2efa642bf9b0afd6e2af4df612ae450eecabbb761ac975cbd9d9a6c59d0047a815e508e66f3e926776fbf8ecadbb70fd8f43dcddcc14cc12c93dfc81def06bfb3d432f7a3b2c44b56e893ba5c5b7ada7f2209ac4bf2b44d40f5415fcd1d2007e11da7b0e0ace71e7dae0a1d3999840a42e4403b4a7feead7b6b0bebdfde665be86ac9883e5d376dfaa0328251813ea88c8c720def6e41d13a125aa4eba628f635221a5503f331b08ab252b825c4d5af4e5620decfb3bc643f336dd2e179ea6a872ea4da28456d439136313b6cc32b511bde90daea65a8ad5f81da44f6da26b32b7fe37e6e830fba528c452e7fa2bfa63686c7977f1cb1904c507e13b19c8e08d90ee20bb7d98c5f8a273c1d8a291f4c85f2a3da4605d0763c166cdb1e576de6fb19342e0a8bc54c7eab096ebb0bf161ff5efbdeee2e2b26c90c8c2131c8af1295b124d5a17b7111757a8fcdb2d1622a3ab834ca231adbdd65430e9aab17793663d7135e8a2b91b3f1341bf0294b0a79512c24fe15192b27bc64a5dcd3f9421ea405a614e562c092f234dddd65a32c6d946c900b7e2929553a2e3a8c7db728d9b560a910235666ec3ae7739694b2ab9c95f90d1bf27238919f435e08c829a03209381723992319af6129c720d850fe833ee84699286483e8058af1f446f55c367b5436e47c14c948300e151aba3a1043be28846c7d175a17051b896c5e26b3e4df02ba22f292272913e9384945d1d19b0267eb58946f9399c816e53e4d7e32153cb719847b50af10582e5b949ab097933cbb06efa9b0c8cd46616a66138e41940742a4ccf8b90adc72a9aa69db95b50f09d08afa43a7a672a942b75ca4c3bd2ac3597fd2d02f9d9da8d8391a29e34fa273bc2a2c22c1ccebd6a058a7f8f09c195b31c0270eac5374e920bd729105ad35d29ad57c384d3fb49a9efbcc7c916adcb958a4c4615f38893dba78a60bbbbb6996cff89489f42ac9338c112e372e4f052b9272810e9f9d13d656231b6db307ea1a20a952e260d635876dceaf7802c4169c605ef3824d79598a5c63af1c92ee78bce73e0248d670cb8704e3f0c818eba0f18aa105a826c9dc44a4f84f91cdc4201bddc0d62c86b9b816238cda4ee6420e3dcdd851e7b0c3667c344a45e14eabdf4d6f7203ec21bd81fefc1dfa231807579ed8906c14de3886793247d20164435cf1a918c9c301c0343d2ef3458105d44192c12188a3540e4e115fa637fe85d7eb3dbe424a5e065401cd40a24381fec33b0c2f181f64570a5364b3893c0e38bb127921313ebbc02ec3113693dd9df02b11e9b33c631b92eb6eb4d9249b5f2ca6d31b962d72e37c7298e5b904ccca89c8af133cc2e06d07e92fd7150263566bb878d5f386ab37afbf711dca3fe3f9a5b9a5da0dfcc427639438dd69130f23ad3bdbd8a1a09b6fe4600411fa4676f313677cdbdbf101d7a5db2bc7faf9f6756cb53fe3cebefbd6a603a09b9b8ee5b7bab93ba4a7c7d94ce80e15a647d08f5172712172c955e78ba928a017ce36b92a0866d49c45a419de2c529a21f9d49f16024c96411b14fcb4e63c49e505c23a44057e7691cbfefd8f04df27458fd291786f55e1ad1f92a9e0e9bbf94bf1be7c9b0c2f9b84006d99266077928a3d0118dd49916e1982466af005347a780e8cd205873cbd55281b160ecc713ffc53ac21e81f54df3414c063cb09849d0c3dae254307c98621468431f3e618db2513658452ca6881f518edbb9ac2eb493215a0fb6ea920992d5d68df9d50a23dac2ab87f9fccdbb78cd617ae93ab144c324e6c25679d7c914642c5ea7663cbc4e2e334a5bc9119894804bd587094aa45303722ad8d92aa0570adb90cd78c5ab3630cee7ccdd0bdaf91da6a81e30e2a426bbc08f2ffc2ac0b1fe3f228613db6b7cf12f62df30bec33ea379c410f4e12d90c58e96be893e4cc230df20f4e1fd82fca2e1f9562864ca3aca545fb49271a4ee13d908f85686dd1d66e04bb5340f070f567364d2e05881846c9b04c243f8074b94006c04c2fed91d5c10651e8c522c585d83749a8026fb5b26194b20a37fc494cd0aaab5422773c996ca52d63c2af91a14cca29b8ce525297c6becd5349766b127d26edd44a27f17c7ca5f7994ed3a7598f351a306362362f6f183e42b132631c9e78733116efe72c290a0812189427deefcd78d32c9bcb313b880d4dc91cdaafd1e8795294023413fdcc2c05532e3ff5e2224c4465ebeaaa30fff174aa418a1046a02b212f759e8bb94897f45201bc4a8791f62dd894344c22b85b950e75fec212b9483048d291a226b1828118c62f97a020a658cce7595e6a298cd3c4f07a14c357d5a7c66e232c311925ee63c228c957f5080bd5e8cf62c68bcb253d7a0025eeb5ef35168550e23bf4fba59e5990d3371ed99458b2cd4eeff5fba27801c2cad37b6d4d53e19d1c75743f5811755f49698c4383e39bd9209b02653abda7fb767a8f787b43884e528a9c9759ae400b480555423ba26cf02f7750aa8a6cf02f393ad65d069b0dfe15b41aed5736f897e34b4dc22870cc85c729d56d43c0d801ed75d7eb9a9d20f54c69c3a7e123ade4c56ce7d1c7bbeafffaa70d78a90177fee151e39d6097e2062e9400ed310caa839646bb4efb90cbd511072ec58d6b6aa4fcd9ab800b08065f1186c20fac8065cdc411d1aa98d38007e4840fc74b4e6eb970761ef6d0a5a0895500c65924b36bdd1bc23b15ac1878e9308fcc3f7f68ab4eeac3983e56aad98cc45290b344859a6abf34c9f4e0736a03cf5dd039d97272cd14eb7e554fb12fdd04ee9fac8bb35eabab8b45b8f24bf92b04e96d5a598ca1f46312e85a35afa08891b61da0ed489296ccd4eb96d102b0da0ff0eb9a4bf2227f8ee5890274e603beb034ca629a0c242534b58c45f96a2ea1922c7d2a5124d12f581022b22daff1fa5deb55fe3c1b63a078667c60b4198474c09f135e3c4de49535b912455b593c3d9926222d8f45593ccbb3d953156ba7cd068b643afa9f85c86f64fab1980a68e558e083d70b9e383d1a8bf259cec7b2ac4d2edada0ba5ca7ac1698fd4d31c1aa5fd4d80ff2fd9987a04333b01119ae4a0bec2513a9c2e46f01aa7d293e2289d26a969aecd863c7d5788bf0b7e094d8f733e9ffccff337d0e20fbc50d3a566021fd5e454eb5972a764c20b9cad437d228d851cad4404fd8847570cfc99e9c5e5f36c3acd761665324dca4414ce3abf1a1422bf02a9172fc8d7177b6d26de8be1a2146df6186a80d0475ea5d324bd24f57df14566eb43403c0e766cbad3fc913c10129e966a3e12fd4d5073c7243a45af922229dbecbb37878fff66a0619a7f9aee4e793a5ef0b1d805a80c386049c75e8af23acb2fd155ddbef7a4e4642abae0a49db85fa7f7a61997bcd2e93db9ede15243d2f657972f44f9a31cda600a0e55598f3dc44adc8c1a355d8872387991e502ab7984d590d41a75e402e0b186afb0069356a3bc44092cfc3516c6845a2df3d10d16fd936e17526a9445013694fd33965529e053d85d5479927829f21ad2f21e9e9242c1a8483b47e9b369329e94cd34822126d824adf55bf627eae88fecb24abfb2567bcb4257ea6d59904fa2b165abb79ccf09dddc677185206294e1287944eb6bfcf5af842aac59a34ab71583c208a55fe19a6629e855a0f083fa375095b9c18f14c0f63632fa24fc6df0da9d144821f1de224c9c551bb0ccf7f5dc50e7016a9ed8076e892cea7816aeaa8b9d9c583e69141c4b9a528d061194f873203be674c472af41568491a3f99ef6a970fb4e21d981f3a903beb12e6b60be4e90b7bd8b6c918e3a0dc32ee9bcfb729f7f8fd560635d0c1ce834ac23076a9f9e1f5abe1c550e53ed5c7718a4a1862206ba9d0636e39433a3b8cf1aa7a76983b6631743fd32ae61764f4fd32f76dbacd170383f05e6dc990882d5212104bc9286509c355ed471f99c95472d3a2789ead9915950fa762485007a28d1e71d9ad276d8e99c1fa5179982d29fae867da55528adb5ca47a43f3ef71bdcba390e38bc413a9fb7b75a846baf345b6e27ccd6506eb2ecbe886d65c7b1877fdbf06ba00df9cad1084ba793cea585e8f78128f7fbac4791c292ea15967f9a7cdaa2408c7143599d68c947bcc5da1cb6cb64a88932df27f6d7e93d7cbe73382d9db45f5dca61691ec6589a7839cbca3cf258990f2ddb616027ec17612520aaabe2f2e97ed569cda2cc7201ac7b9bcdb36932bc210f3298108b2da9735823cd52d188ac82ad581e5da49d8e8fb5a415ac0d0d74dd238294f74e0a873cd983172e6eeb713950a406ab03703ea9fa4926bee0291f6b5d619a42c88a8a268830ea2362c78437bce3c5a018e6c94004d647262762d354e660f5d21fd424555452270719b32cc12d0aceb3b15d0b6b4eb50a2aa701f5abcfb1b041a6958b43acd4cc4c1c2a29de6679fa34bb4e991ba15235638aab5f4eee95bec690789736edf6560749d5f0b07a47237c3f33ebd8d194f27f30db1f47b0345e0a51b9cee64fc12a262ee130412ca1f556d835e5531c6b81f89b4fc505da5d3a5f1deb6dd9296f51957eaea0b0de1e70d4f395f39e2af5fc72c3f8f86d968b7f8961e931761aa7a83d956402de9744f02c3f9b114f43cc048357998e2fb9006d3b233115a58bf0141c4e5abf4c91fcdb77251b9b7ff5b6a3480ac53cea6bd6f352c73c15ba78b80bc6e8b6ea2cd2c26c5daf6ea24885df1eb7d4556b608485640240de4bda310ec28a2584a2e252e623957aa17eb302b7ace3a809c6b37f42cb355b9ee59c4cec8c20f031953c3b248fc058c2e05b7b457c49558fc5ef567c38c62ad9d23adfe1222f6c0d006a53f63d9a4dd0418ea5cbb64c013c7db7b7697dce178efef6569d2a214ab855917c257872c32833cba2eb980e8efca3e3e8ff0533ee5af87814594f2c4cb95a74e05ddbeef855887a5e5233d639cfcb04e228f579477d38c72634766cb999581f2c8cec4e33b68d03876a60f32a79b6d79a97a2a758876491024622f4cc29e9d4037c1442ed64e9f406de2d42886c0794a51aceeef006ebe15eea49ac3ce84e1a48352d81341ca757a8ed0e1bd000fbd98a393774281c227580a04b50304042e733f4a1de4535157243f548acc38c768319a9baad32efc61a96a4b90eb16e11425de57ed0afcc303aeeab209d78ca1f39d6aa71a876d061dbc6bed704ad3a5e5bdcad9f22720115f376b059ec9ae2d26a8ae47cc60ebbd8dcba77761d142782cfb8eff874da88b83d54c676914de5d41fbcd779d7723821703e582f4e2de48d4bd1bced6d872ec05b271005a41bfb9b2f85fa513dd5ba9307de31a0d3fde301e5f055c70370606a54beab0ef459f9dc1c6c4d07bb71688ee17751f2a950a4c3b45869f2bdbc36d5a7aefeb1260394144fb536ecb33c9b3da7673fd1a611d76f5c261798b294cf8b491661138e558e67d2d93425b6b799a913cc3d5446c73b007a3d0be7e5d15230a11e34a6c1451f1e724de3783e1348f9ddaa3b616351564c524c92efb34eb5eb0fe59f95d56b39549dda7351d0fe17f116f03652c1fbc533bd15f7816c1fd59ea9b869d719011014cf83b37ff8acc5fad81d1ef030845685020b75a3ece0d5a5197597d68bb94b032d4fe73db8f908ac8ec374d20367403812ea366d20d8a20013cfb1282722470b07a0f54c4d5aa71112197fd85b0eebb68480f374b4a376249d1b77d65d36314a54f5f6740ff236b38bead3dbe58c44b48ad52d47f80fb7baa01b1bf3355ebd15643fbc03c0d4e23d9ef2ffedea56dbd175e9d20f7d5eb4ad7c58efb1ba24d1bcbdbb2ad93af515f665b5b0a6fe06327a12412bea305682d6afe4aeaa0bdc205f7a7f2505cbc54f8b2417a30e7b2bfb4c0d7f9354146c925db332539185c0c605f71cdc07610fca34b9b5f1ec2e3a0dd78fc2309b0d92548c5e59b12d5dcfa0d358fd4190c1bacb10c1876e3b2c1da262ac0282b7414f2c0e5b2c8a239c4b07088f426ec1c9a8e2f61d9787d6d9263f25a3b63fbf14d1f15da5cd9ceb74a79c08fa6a6386fdc697f3d12014d8a0ebc02ec9164550c8fa2859828d5e712fa297d7a3ae9fe04b209c25f6a6c32e22b9f5798159dcf13a935d94d9dccc75c48192d7334debfe7ff6fe85bb6d23491480ff4a5bf71e918a69cab293cc0c3d9eac23db13ddb12dafa524778ee5c36d124d1163106000d09226f6fdeddfe9aa7e54bf405076b2fb7d5f7c762722d0e847757575bd8b5a04846755df6514f4a41684bbe8cdf91aede17915d0aeaa2fc98ae82663b3e775ab4cf867a4b195f4a1f9c4580d32ed0e1739a1c17da2974dd4a1a6df98b69a4ef7a9e47c296ed96275daba5585c819d44521ef3c0d719f133262531e2896b1c027b95879449677302d767a82bac4aec6fa294898fe9391ff09817ee4b0780726f869abb8998e95e2c7804278de3416b21afa55e9fb9e306be8d36fa107672224bccd4c8628267bdeb71f3fda3b14b508c3c18f25a6a1cb98f64d718e01b41a808b42e8017c400501c73037e659e620a847eca39608f4ac0efb523615a73b07803d8c177aca7d698a68ed2dee901397965445f67c17c5ac677decb8e6612847a6914fc6ebaa284eca564e3b505f00797a5d15455e5e465abbee19d11e0169ee87fd566bdd6dc0e486021af41a2e9d5ef3d45734c9b57bb095120b1d687f9f0d7df07b929e44f85893a6e565364b69bb2983733022cb51a276ef7b892c322ee5a24bbaec5af1647a04c7c6a39ac47c2b18b36ffd54699e5468f404b15edc164e5a36dd51b7599d5278c754eeb29eaec791993bd1edf492da282ab9665423e6eac57ca76b94a07d8f4d88b08f76dd00a37b2aa2e94abd75759a77039d43621abb4b8f749e7d91d4e5112c8eaef8fa79d9e5b512cc2bac63e2dbde60949ff376f9dae1895d1b9893129736536637979d76189e288f410d7b8a1b53c63df5cb99b7d5653e8e878bc46de8da0b5202ad8be3ef62403e39366f8b4ea1ca96b9909532021a1457bc7effa3dd50055ec3843272b86caf8fa29dceea8a6773dec0a6e5a21946d35277103f7b6774a4a30e6403f54988dd07910bd4bbbaac7dbe2f8126f7a59bc03376c9f2a61175fbaa6a8fe505f33caf9bf6b43e2d957b7a9ff9d19f8fd250b0932260307c410894be877c27934070f6e23a64ef29237afb788b33cfd4e0ac9d37cd66254e56ab4d2b976169b83d96131bae350c70581d4377ee3d6144dcd55c96cf77734b8a904e9618254f9e5adf23ddd178eab0ab53fddcb31dd28ff7f7d91df27bec0bda8c056f499236329a6e03a4ec9817c58ccfdf878642953206a43997d19358cf1eb3d815e71c00f346ca01be530fb09e7ab6529435a6508b2707cc6931f45fc7ba12da51c5b55690ae50e6f15ebb8603b9c2800116ed8f4a6d91baa6b70834690731d8dcad1e61d8a015bc96cc973b95db08376a393b3ae139ae35e462ededd06a3d25759b93cc017fcc353275eff12cf31d6d1d56285dc721469f69ce8f5e94de9bcd36baeddd63ceb152623fdd0da209708e3ac6db0b7d909b33be10c58d8f652336d082fbd4f3e352fef7661e8f485e18bb1ad55304aa118b444f574a7b1aec6c3e7e340ebb09f3b5eec9d3988477d4f4c8f8130676fcb8efa64167c72938d01ac1f2b17785b469c5529af9c47f44dad43dc64c981660ceaeb4352f9b4555af866a4e07633fcc36d0bff94cf88b6ace8bb396b76278208f107e27322b8fabbea9d5cdd7a4c79d84c29da1f2ef341005ddef42dfebe90e82970b355533d4b888ecef87c8e21a44a747814f8b6cb10dfc78de9096aaf25820c60600489841fde52b839de775cba231fc66c17d49823c9803ed791219e1a253151a1dff4b8cfde9a2878a55d1432d218d8145196a6d6acf8bcfb93fd3775f0f4997453522446f724bc9c6557c86f18bcd66168a9dcd6616d57a76e967214d9e69197133f7afd6d89413a69db4dc66181c3a7c323e56db286890ec413c1ff4361ed7b947bf8cba9c68c66d30a5fed9b41c33cb7951b7f1e3420eca4ab4cb8ae4732011b2a6d5cf79bb7c09ed74a62b665f4690a69a35becf51356bdee250ef303b4ed035a631939fe2261db8c39086bb0e6892b4919e5d30a519b06ad650eb5444f9ac1a2475f0b7f64d081d674056e8f2ac816b64c4be89382fdcbeb781d2c8a8a4f16b31cf1737e09a40fa81228b518f23f9e59c9765d5325e34159b09d04bc85bf217ec78ecc676bfdcb4588ba9f58dab3ad1917ee0b4f4343d8dfa5a454828f6d7f9c2f59d4b0ee759126433878c74f4e96a3855bb932cddf15bdbe85daf41f2326ff5bbc46823a6ffa63c41082c3a36f5a7d58f27b61fa27408d48b18af669a18b75b287bee5db2e5a62862a2646ab52b5ebfd7ef423f47ba64578c81787f0ba524bcadd8a69f1f8470185b27666a91200d04157c626acc3eeb8b68ce2218f4dfb4329390b3e7c2c07bb4432feb9f56f786767a85fbd94610ffa77149ef2415b6592f3a619b7f212291ead0e94bb33069f2a05abcdbdeb7240c21dbf98be369412527ddd61f6cec0c79bbebec8e3b0894c7230fc6d64ef2581971ec23c91379328efbd1c8fbe260c48efee25e80bff7f803d0f194bc602a8066c56fb04031bafa89ebbc69f50568f282e62a307d70e004559d79565dd7081a957c835c0b3843e8fd75d09ec8aa46ae7497eabacf4b0e211a18e1292203d9143bf3c374e2165716ae9c083b8c18eb6893c44881ded2b5c0c502c330150c9dc101d53fb9b1662e34a8193e7481c035e78d14cf7a772919a674576f94d36ddfde94ccef76d8f35bb5d531a5a29f30e4ad7bef6cc1313773829d8edf6bc75751bb7a8c9451ee461fdb89778c633c8e87afa649808a93f0d1c883ef33cb018da26b9db078805eaf20c19568394641e19cf56f5f074b0ae66043e375f9bcaaff532bcf49054d63eda0708d7cf42ee2d3d3d9de8fdff1f0ce7c12e33aa217a0e4a588553a76d1daa0a8c88c1c9f983b8457f8f891dd895cc907aecf5ca4459022c73251b1d63ee6fb69479ce03cac6247a3f52636414facf78e7b63cbf4935485673731c4da11a5fa23d32dd0484f7247140a650d834102f347fdb72090f063a376da30fdf5ce1be6ef8677d2d03c308cf432823b3cead8d1e70863c7f16d9857ab7521483174b0870791f1b801111ae64b494d2cce3c9528c839394eb3addc992ab9e0cf3e3e5a0fa4f6b2e57641d7e84f3b65101a8fb7ab0c124a7d95ab6b3dc97a78ca071560611ab1acc9fedca9b99e8e39cecb4c5c9f2eec077f75bc134dca1c1b3cb0f1f29e84d689e9ee27d065a67c37674f08b6102612b0ade3c2d779cb8bfcdfa8bd7c21da56d4c3a6f5d22c366d3d9e2f79fda41dde3f18b7d58febb5a88f7923a5e2bbf0b629f2b9181e391a396bc2eb94b189a5cf4b40058a41558656fe498bd4ea432ddfc1df6e1ddaaa50d999a0c2adfa49cbe39ae4c5ed7ca9bd01bc879444eaa9c07f9d238fa3fbc4cdcc0fff8899f8cdb4fc6f7996bdd1ef48aba8cbac3be38843c873b745f0854355b16bbb21e450d24939db192e23ed79a45c5c4d2fde039db2caaecfcd1b6a877233dbe0c3c8c9d6effe5e579b75e4a4d2b9980cd643efdd88b9ddb8a14ab153ddd177aaeb267abd4577a2116ddf9d08266212ff6c45b4ce295ca6a610d541851bbca5fb7a53c6bbf7e843dc51d62104abaa15d42f973e710a6a63f92f554e1b7eece6b4ab93dc556571f366533eafeab9b0d0a5c9f2a20d2229ef4065a373de31273d03269c57a9ee54b218f3df2ecf5f92a13e4894379d076e304639e5dad375659407236783755275e2c94bc1add22068e832df85dea34ca304a402278f42a25024ea9125335a1014081d1550fe259d2aa77cb75d1080f52e15f4448045477e1721233d4e5e48d1dd18e8c47d1003b0fc3072e16d3bf85dc3478fffce83e09519f2980136aa244cb6fec1f0ed003f1ebc1b19ea70e031762e4d8a05ca1297fb60436f6594bfe275391c3caf3665c6fe43b10699993556c646a5aeaa0a89e99994e462e9e780dd65832b510b654fcd4d94f84af0b2713f0314361f33f007c8cb4becc4d47dccf2461ec26c04a6d8c8e4a0f8e14cb0356f20dbc3b2ae36974beca5add84db5a9599197efd97cc9f3723c48799e06e5e913f86d1d953af73e7ec17cd7590083f4327137b9734eeb5aac792d8ecd1d61a7a588998391e62e894530d98b26ccc147595ecb74fa711f761a0e553364d50e25bf9e309773be14e8acf00f7133a179cfcd5352d9c81e19e843de8b8bfc327e17d01640e84f32097914c2a04f4a1f233e5ab7f277805468ece84f9ee3023e1e9c576cd3080d993159e448a2ad29502f1b7105797056908703f09b335cd1a6860203feba4650d08ea9821de8c690972bb1aaea1b7b1098e3304648bd7b3cccce6e47c8983b64f4b438976c0c57096313c356caf784f8fa59c8fe5b3333fccb3333f01a4ae8bca92a2c0e237101902a06f203e5d3801fba54c4508e2ef7d5cc8f9667099686ecb2fc662c7cecb80db7121fe1e0b68c0b38cb032f17e7ed83ed01a7a9a03db563e64d4ef7c700ca3004130a3c51b6c2098297bf876595f9496d219aadca044936ac427691b7806462f23da9f4e16d52306fb7fdb8a956343130af7db24af682d797c14c7871c56f9a812a3c866fc6eff352695cbfafaa42f01250d46b643bf10ca3cc4fbe6181e1ae263d532818e477e920de168a48fa72c7dc8e5f8973b98d2c46f909bcccb27cb1083266a42b685904eef4731ab944ec3526d1c3c4108eaf53b56ef355deb4f9dc49dcf7e9601c49d21b17a35d4a960045ad611617cdfa4a655f8403fa22575220e64423c9d3528cf76a1893109cb3139d454acc8f4d26a9128886ca7fcecd097e5f5e9537bd5e67b3d723cc37056d4c32f7917664364fce6fd662c4a652ae073e53e93bb1c299656876b9b9670ec0ddd9627279b74e9d3d7884f49845e1179132769d9fbde46bf638ac736770cbb9502380628fbd898f2bfdcafd300026064406fd7d9750d547da4a66189c6f49ba5346e2e142b57a449b4ebe243be9e64b75c0357190873652077eb24d5e51ad63528b7a05339ba8ffba0c4d2af9543cc4c93be29380cad1c6b15d9ac40f02fd2ce0c126d4bf357dec2789e7e4ea7c14e5d728f7ea5c4c1e26364ed94742fec94607ac68a2e44098c05aa7d69d682709f765042a64d8907175769932adb7e5432300722ec65ed0f198865b936287dec66e5f95c1efbc8262a4a66ea457ac206a6cb98d98e4923fba31b1997a4dc2f97b0d623175ee02d963f6d680fc9dc38baa95d3bd528fec96c5d1d3eece7487ed0937690445978fab32cb3d3a7e3b60e33ff0f2706a9fdaf56c0dc633a7ff5d2c4a2e36942aab4a60d6ddb14b56bc6f7b538f85fc2ea1a22768cc236192cc7332b13d61cc8949a63148f4ece318060c0da7580743f22e6fe3c56a098ca082a21d1912c88581892c0c4e6481b4bd6577dc5ab7dbb649a3267bcc4ccb1d2232c9e7e47cbf355d11b1335cc22d5576e6301dfdd9d3da9937177baf2a3b3739870c2b10c626168d0f8dc1d674b8bf6f3a1f3b273a0a62a7050194fba95b9728ec050a2246c929ca18e41c39fd5aad5d02bbfbdcff66cab7baf9f5d79dc7377ec8bc4fe30726723a22c728b2a949e2d7991cf15142dba5f35c41d17902270bb466bce2eba1ba740e0238c52f1fb72ef6d085d2c11764688064b9b640ac9ffd1bb33054552007942474c47891f34664cfbd273f36223332a4a6a50813057feb118192a5fe057c87faf15b713fbbf02d66adfa66082b93c97f3e1cd8e3446574dcad03ff5309303d027c2fef3cbfd350a2341e0f66f3dffa1fbd631f3f92d76684770173a676863d0e72c139a31d04595aef502026741c3af55e4c3dac60121c2c8b1f7485e3e9549e072817f7f1a3b3813159ed51ac4fe47b3d9ba276fb344fded229bc8b24c320dd45d4f7f00e1141b77a6b37fb3bb2d99360abfdd19cf1a28ad9ee1d34ffb5442255a15fd313cb928ee2ec7f8cd1909f4ef03f01650f38a90e957194743b8bec25b8daaa6971851c059ecd50e555240ba6a43333496a600de8a16dc06b10f15b332f130283791f18065080069dbf6d94b653c87f91769129c54d147a42511b45da3e71061ee1689e4872149d7a81b79e45e39da1acfdd9f218e7d8d122b2d777702f29bf90b2d7452617e9d02025b84b7c5e5f81ef64243d91570b55738f9b19329022c38f352ba16e6cca47f43b0e7d20344d33b0411ffde66237f23395451e3ca26c56643e5b1d62bd1cab92f754d13892d5b463e4ad58795e4cf2111620f211c5f7b7f13626440de83dd6452fa4905f27b6c11b750b2adc0a0dba4767e47ef1fce2ed7ec7fce2579ba2cdd785b81ee66529ea587693a0a6af4aa548c33a4835589b1a66d891b4b13b2121f62eff17bccb4a51f7cdc1ffc10b49e99f88c5d99b6ad6984488faef612086d36a0e5b52d04fc31491b79e9849ab687ee8eeb7cd4dc7d190e9e947c32f3337dd9d9e9eed3e313787466dcfdeb8256f63987cda4dd0c492b9992cdaf9f484d9f41bb1cc3837e5fc255f93289a11a3b99a773e1940434bd43a3b2937a90f366cf703da4278955ca766274823fdec911d8a0347f44a5cb7c7d5063464f7c95bfd411689acc7bc4b4e15e77e27f2ee5d6f50b2059df5a4e30212a6c656e3b868d68b47be772f3d1da6b6627f1fffc0caeb1a9ef1f4691666fbfb1a488973e0146bd96d5a0a03e4c4f04f7f6ab7a5545e9ed35dc6b905a1a108a67c0d3cd9da838207a5292538e6873bc74eff4482d078fced4126778edac63e546a5b0e388f92e0496a4eafcad775b516752b992e15d267f933b7859bdcc526c6db92de4535f4834bc0a7192ce2f2af48a40778043d15d9665de47337c1917217725e764678902f75669929c7a8408778e91893ef75da7327b0c43c95cde6de581d9be2262467ec939cd39c0eac52e1364dfdb2cae894d413f93a4b2c2e73283475327872c56b518aa60902fbcc1bd95cb81dff0ad3134e8d5612682837ccfc268d1249bbe183f83b1a2ab5f2b28b4982ece511a3cd7fa1e985645b9a48c8892b0c96eb8668e5191c6fc0e3237f845c682e545eb54ebfb6f8c21b2816f9bc4c3635e942b5c39c6c359cf3f2c746fc2cf8fb977ccdbe63faaf89ece0c0ed215755895fe4e57b7b9b27075479dc4eca45f5fd8d89148fb755a750fe2780af7fbcc287f413537e40b2d0ad4d0981191f9db3437e75ef95f7c49938c549f2e3e3475828097af51df61b5d741d1d8b0f3c5610d5a5e6d8a9bfe8cb24a6dfb9d381e8348595ce95e9467def98859ba269845f9ee6e5a2b2f9a62d51f282a85f556633fc78ea4fdb503e1a122adf3934f0f38ba97e9b2aa6eadc4472496b91b1ab655ee8a28d571cc27f16707e48b55457664d6c0a1025d115214972bc4df93848c4d72bb2d13aa2be11cdba2a1b4565c3e7e4235baf2517cdf737caf631e563e745e456555986c206ee8bc86dfaf69d7f95eafb124c5b6f521d47dec6ee4f7d9dcd835562a998eafae67949d718b93f49e974f2d629a81edca383b22ac5c0bf48dd6ca26e7aeed87d1b84b49288d7f8fdeaf274b7f73625d9157565cd1f290e9c00196844b1f87276bd852bdb5ee5582762312ef84cf86ad5396f04bb3fa18f6ee7db60f3657a0149f6c5c01cc858bdd77f561bb6da34365b2a04d7e97a7726da392f218daad7951b7074db35dc59b875f5c3b263ba52f388790e1cbb7c7ab147df2e2a8b270d9b6fea5a946d71038e90acd9ac21633cac99148a5e6335e13d7fd516e1b4292f55d0d5ff42b7b7f9d34dd2cb7110128aff7496054cf74171bdc3a92ce538c99cbc62ba33bfcda76e6f0797a4abf5932a76b1a4ae5e0736f1500c1261267f6d8a7b3862812f867ef7f5c8678be249fd23d3b33e30bef5134eeed124bdfce962dc88b20d765c5302f6983d88f5f9c0eb3349b8e8dd9b6c14c30049e06a61a220fcd76e91537385466d65d36d8c168f7159fe64bc7437ea8a0f729cc73e8f64cb491af54cde7ac51178df8dcdbbc458243125f400ba24aa04401d470476233b6eca998a21c2be8d25fc0bffe118f524c6ebbc3563bd0b6a6bd87f2aa668ea898cf2c01a5637f5b54f06ccf3d8e3dee6cf04a1aa854ff842a40dc56427cbf4d6ccd231caea968cd35d9d94793b0c36c6f63fa14c87df2c24b0bdcaef068d9c4d9f741dfec4a793907b0c5a862cf624f26ccb7d8061aba93a79fa9f64c02cb345df104f8b4e35f48805b21581288ab511170afd9e66a573a725cf83552b40d99dbc7c4fae8a5e8125b785275699a76e6e52128856bfb6ff7a961ab2ff245553991b11463ff0066548fdd9febe2b28204755763950e82c73e24a6586c01e9334cd4b24ea24864c509bb85367a41034f9264ed961a75dfa11e635a7b9cc3b6ea3a03281611b93c082e1e3f4460d9d045b4fca6341d3111f63fff52054fa5f2f82a5ff7d06e172bb8810b09d90248507964e74f9f47c8accae5f9973325437cae169f1ca03c4d7d2813dc7dac093c09f9db0e776048ca5370126bef572206d771776f05f5ae4c17f16dd6d7587600d090ff2e863a5d7eb49fcdcf4caa2aee323c5868a61626f439ffd072102919afbf6df6dd0b54a206c1711feff2d3cbe1dac15f67440f036771c0964f2d599f296d2b8d215cae4a929dd0743423c77da771447ad065d31795e3ef670316172693a9db49ce5b68baae9ed643aa4b538406f527987c37f80375db273e7d79f2d3ad375f8dd987a5711e91816d8134601c4cdee9ada59ce20a6b65f0aeff15f54d054afd25fa683d1f43fa32138c5ca58dd42b811a2e9fa12d52fbd5134cbe47cb99d7f62aef67dc206eaeec0c2571d50e9c401f4fe2533f1d33575acfe5417cb333afd584f1dbb99a00af82f8d39e6f0a84cc76a1e1d8893409add3844ea2e1b33de7c17276513f6f6ddb6a82dfbefb3989dedec4e3f86a743cd93badac8e54625c5fcb2ac6acc054419ecfd7d16973ae945d2b14c95e69bb456e2625a3b95ba10d0696dfb051665c142913dd092bf8bba3bed6670a5374c2c9dbca9390c0d3182ad2bc5ffe71ad7a67c646a768cd87436a29469c4a673a20e419a48151904d62396372ac9f86959dc8c2037de79f55cf63662539229df7abaab902d6c528b5f36a26921a73e2fe7a2186996daa87c9c89dfdeb627e2b63dd1dfb607a1dfbaeea2059ffe0bee6fd7242a4f289b00b8c14e1d29da38f24db29e75daad9e08866ab44f572ef1a6d9157c1b345a66e71e6affb22125b8acc546f78bb5bb5206ac6e6391c299a0b4711f8b911af7b7351785487d7b5b9148d88ac46eb6a2cab02d8e5a322c471e4c82686fb6a8749dc32a4951606aa52c49b731d6eb9a1c7c2c1e63078ac61ede719a44ae8aa9b1c35ab9d23a377959d6ec3fc5d6a538b99e2aaf6d49d6dc6d8ba45ba39b608920b8698c7d92884f131a2b17ae774c4fb1bd4152c1cbec9eda477f937a69c982bb96106cd00adb096d29e61a7ddfb4bccc6637fed46239998bfc8318bc5357d0c1813791481e42739b68d4316e9077ef7a4df1b6f1ce80abf365df612756f379f33394e536f7b64be70ed8247089d5ff5c83bfe9e0b3adfd293c2f78d3bed1d098906b366c9a971f7891cb2566492c47684dd47f0314dfe65aa0bc3df538b1623dd14f886dd314980c0fbd82e644ffd161bb8b832b5ea970e2702a7da86fd008ebee4d2c5b07e7f4b9fe051ead918f945c92fe4ec929c1a7b60e9b614ffc2611d04f620ffbec680fbd191437b2608c60b9c3eee9730b1352f81ba3f2753fd4de8a197d8e923add137315874d6e075452e89fc4ad24d58ba837a33a696c9b10b3da655d5d25aca3ddfa145429684afab7c7cad1e0d2a35e076387c824a5bdc04dc1ad73d6abb65952689dfaa4e5979dbfb8c5783d0d1f09a91577e6b606862a6162e82dde06f42666f80c59896df9be9c73dc2b7395f34570100ed8afa1341e751e89a196531bce60d81d4a8ab6dc51410dae78b35ed863ca47c4c49c5446dc28947de98696bc89a1d076f2468b8b4ce26718af14c23a46502d6acc52093c432f62fdaf273b9eca7829b995084ded13a688ffa6b18a8261bd4e573fd3875674d089e4294a480061a6abf831d84a94081a05a0d8b2c59fbe84166ca712a953dead02830c8bfd9cd97bc42a78aef48ec7bd53582c2d0f13fcda8dd98fb1f9a5b842a9339a5ac6b8d844383c6b41f60f074d6cf128dcc2582d32d7a24b8f88dea60467102d24112dd199d4387ffc18bee34541ebc46cc53898cf8bbc694529eae7557daa4258b76861e341e431d5a3e9252f3f54efc57025da6595d964488970fbb7d8ee9d83076d7de36eb7df7a687aa58791c1c519063cdfaae0908e598e9e765b0a1c27a43207c94f5ceee033860e97e817510f8285edf5af3251a9c31384868597bb76caf3eaa3def1ba24a5727533d4a2b3246f3c0a37b2dbd0eba68e8e16a8f38677a99f3fc677811138a27c6693984afa11854540f0b4fee6c0f76380e0672c314a35805a4050b19efe76b9354b0fdcde40be5077450f33f7a5685f984f866e5fce30c74b5e5e4290fc9d3b4332cafe3e19d3aba62ad9e21de68e9ce6abaacd1737278b17062e1ade818611ea342bd49513f1c70a6bfb424868645512326a9412c63f2d5f85ed3a348869ed6f54c348d14523c0febe66b63d1044ae3e7ad4290897bcf9fb96a2e43e90dcb2fece86b8577c0f6cd230a41f7efcc8128fd1a7d68346dcf156051fb86bfbf831855dcf028d802281eace511478d42d517a3eba9d801bb9ac081540bbe648ee8c83683227ef8683529c68384353d523f75ddebccc9b068f8d69609b40b99d80d4c7e896a7d68d69a51dc347202a4cbfacfad67077310bfe1665aac7fb2bf8a91e6346040a454d5ffccc352ca111d24458d71def4f831103dda99b53e813617a4cee38c764684757b4197e78e73c4a9b9d2691649b49b29f29027c279c6bb0cb0afcded781d5cdee00cdfa9386bb3a1bf962616bd0ee6a0a5386b048755b338216bd7b5d357ea3b4bcded778464d67a1241fd15529685bb8c48d660ec693c611a44fe709c5d0135e08b8757487122d869d5778d7957ae011389c3d14845209267ef5cff6444de23bd68daf1316c882ea2a9ee83f62541db13b49d6f1b5f3214c47cdca15285dca1c95dd62375f98858ac244b905b1ede73bba8bfa8a2cc5753b18f99d934b4a4b51c93b77a7cbd6bd337bdd91cc2633ea96698d0a717b15bc20434b246f8ba3ddb8e3be1b2f392977e4f9103915476374c9e1be4cc740f0b1509a7916d65975be5d54f50b4ce7a28ab4566589a91c8db5d8a9d6eaf5fe1c3f1f92291cb803b885837d152b79ebf4e1b2fb4efd59bf0bf276a856e3cd404ef959d9d637d323970c58052e199b9c48df4f66123c7126ed7e192a54fd89c7d26b27fa23709ad01f34eb9385c384fe204d54cee49f780d4146ed53fdbbd8886678296c366e52c9cbd95a73a83c7999674e9e7b9e6512dfdc438ee53e81ccc78f826f6df35a3558cf6fe46c685c9b4266a7a6e2a1be7c1ac537f982c0d77d41a04a34658eeac49bf3a5f00fde160a445dbd76ad93e8f836792611338931418220d477cbe4ae78d4d5d2e8f610a3cf7410a6999f35549b77f11cdf4123ea8862407d9b1c1a31058de33233627f715367f4f842151fa57099f3b2ac5a36136cce8b4264ec2a6f970ee3d28896b515bbd853fd5cec19de25f0e98b3a003a4e840947400b771589d14769f13859bba7d7d7f1ca88de0575dae9897710a9c04c72917a3e2abf102c45f23af2263c890c3d4a20dbc47fa016d2eb64fc923a14dbd5dc9f83cd0a058eeec75157bd1ee0ec3e23bb0d14de56296e686736bfcd67af8264a2d7ccc660c48e8e3a5616ff6460d67455f3359932861e6161ff8bbdcb5f8a8b3dd6f2cbcf5bc39da4c03262470fbc643c1d6d07a1c0a3f68b26dc1119ab4a66c9cd179abb64b54fca569eb262c48e1e26a6ed361bd09fbb4d961cee5d3217c82304dd89cce8fa813cda31ec5d14181fa6c9847492b1b8d843991e6a5ad141c6c47a0af3215d3aed6aa519470bb9bf8ace181727cb7a6c862a81f4d6491e446c8f3dd90e271d533caba09a26168a18fa3ea0bdc63119044f4cd6cec05868c673730eaa2f3a520f7659ea779c1719a5df145f63fe4cd75045e7451c69cc60d1862937992d2be019a282b6c8c6cdb0857aeb2da043f9ea445b620e5eeca2d18978d54f837ae609e4cb37239af7a1eed6f192751cbd3fed84c5be33711c069693ee7d47a318a99c9a1366797cffc8725ef8e0407d48dc53646f5a0d18ba6bb86ffce8a2e03b95029eb689984413734e07c46ecb1fb5cd8418b117baa2a0fd38b0ad7b2b4c2b8069866c0fbbdc5e1e591d902bad25f5be405d834af381c297287a033e3c5a35de51d6ba939c78bf6d86725e14333e7f4f1317a8475123cdce1695b835659befbab5b4e01f8ee697ee52a88beb4bd14e034c8eb99624d07417288410f07a9df80f6e47a150c9d663590e4dda89f47ce16553339ab7d62499db0a867921781d3200eed6fd37e60e3efa3a953c18275d0b29c5277306b36159b5a45e405e62e6faf992e7e5419051d8182c447b9299f40eac47bae66816c11dd21f58721c1c223d1d8c2aef4cf24c581bf86aa8bf755ab94952b0a1271078e498b6d97aae1ad17620d4b66a4f2a97b8c6ca6117bfeed544028767f7445307d1be7421de8db39a1c6b519fa1de68fbda20a8c1f926ae75f3dba415391e96f819497e0f94dd8541e9f4e28af96c3d4a1242c430cbd1f8eec61d8efe265ccfdf0ccfa2e928177d5d7802f23b640b716c775f8845483a5b04f7bf3f745730805f68a9db033b52af2d01ac5e27513986f6492810b8b262a67f4f10b31f5a6219719bedea3f4626eded187cd953e2e575db679581c8782b0fd42b5e97c38bbdf3a5702744a6a11c5f97bc6133214a9689752de692fdb409a5b740d81736b7422a1619e3d1f9a0108bb71baacfde3057ca55a56646b55947b580a43cfa8ba5927ef8c967faeeabf5257218c47317f4ca59103151403a7afe9eb0c41418ee9b6168f9f26ee378525235faaf9f622943dda28e917016ac299a4ea3de99cbd2f72c5af1fa3ddd79cfe33f0d27da5d6730ca27ff56eacc60ea5b5cfb44cff5cd48fa2939ad784c8e5559ba06ac9e292c12cc8422fe60fabf55fa0ac50abaa81868b3fa17cd632c5a9612ff45e6ed73a2b649fc8aee280d16ad3236f20af3d1975dc5c3bc21b17e61b25e612c2ac6e3c193877d2705ee0e1ae5df5895bcb30e791735372a12225ae45e0a889e90ea6b8a884db0f35b1a829eee225474348474c6a48bebf062b88e97b60b045829aea8f9ed02cf4bd11e636d8c54f49d1f8b42d4818e83847d1c97d2e8fba85b84099b49083abb45ed7d3e7b115a34553121ef31d181eca8516626fee44af5efe24d3455a3c423f58173cf90f010df93bb536396511de8384820bdc685a6ec1afde21fe3d982126ef5a9291a4676f7d9016acd76c81914cd14d41990ecebc2092a7c17f1c80d17b3cd339a6ae1eddf9a1c3878abddc267e176d26c4333eaf5ec5c65060e08799a58283c15dfe911273ab99c8189de1d939ac832487d28135ac2201578cadaa489dd697d1af21511b54cccb728d2452ad92bba9c6e4aa5d91754dd13a5f9cebc921accdb783f44a7316247dfb8de0f8966177bbe121f1cbd4058cb339655a229072d13d779d34e18bde29c15991584daafe8c0fa607a710de1d791c17edffbe251fc40f8c75c6f7a78898617a792d81c67fc4e9ae22568d8e1f0f8acdf6dca2c928a956121d2b87614cb2fe69917da2c1f138d59e639cf2f2a6b858f741a28706cc78957d6863f8cd6c1c9b383118eabcd8fc9b08f5bdafee45d4f8b75a6bd513c99ae67e7a19620248a244f27511b64b496693f1d7ce6d6448d31775e935441d56e9d3ce188222ef381084dda38d3a55ece7e6a53d59963094e549a05897bca538568dd701aa7aeb3efcea09dd25de77dc562c43dddb7e43e315dbee22b01aef0a7f4890b828f1ffd7b99a45f01d0ae6bb1e6b538c687c31ea56f16553d4793cf84dd71369f9e9d039f21a32522cd1a482e694a34e288aa813abb311a0fd8a8e426c281f7e1e19705ee4403f0afa3dbe40eee076e7de0f5ff69aa1266f57fce4e5f8d918bc81737be4a40ed25d51c3a3dc3d44d77a1bde64e5295e276d3d06e46ee80ab4dd1e6eb425c0fc5b5986f5a3184cae476770e0e7c251e46c5085e6e9ceabdea5118edea4e46c9a8ceb2686b589837fffcdfe2a0637f549791e80683ee38b7b3cd6c7a9454f184d9d4c94ae1d3945e2ab02a416223fcd0733a51e564e22f6d7e16f5fea2431da9fe08224477dddee0824bf266502ddf2cbf72e24a5150f8354cff438f7c8cd8e8dcbab1ab21127b15dc02a48d730bd02098c462787353ce2519b04fa90531a24b7794f5bd326d59162e1ef5e4e7d88a1470ea4c95d59de8f753cca1d693f5bcfbb74fb672a5f9ba95d987a661056d4a98a151f1fe8419775ec713a078c5a5558c068f0803915443440de4be202c099521d2be72cc4de6ddab38b39fd5db14679e25955669db7f247698bc412b87ffe633fcd99d03d565c40abc56c721777ae067b1f9a55ec0e674685c7b7bc863673137f85d2eb4ad3eee384ccc65a0b79732b31616ab2d4614751e397797ab5ad657227978907069f400d1b8765d72dff5b2347e766ed0df20eb5e3ac968aaf7de9d6e4f2e7a9b94a2b73193a6d3c984f59488c1d3b7a01ad3669f4267fd2da9bb4d1d52b9b9f3f20897c94f1e960609ba8fd1fbceecf5dd5907ecd0be377722490a4905d63b45478fdc97dd393c82d4f3defb84b6d9ddb548f60eb9702d19278a4d5215330f55cc7663a85a39195a168813a9ed981e25953896078a33edf11a8f53f8cf43bffa87be151eb93802e7457fe2d8a7a9d4ddbb825f6a18ac6813c93433f10113133c9a897f90bc56262f480c67bcbc204e10edb8163cf353c8aa7c2041e98384281346bbed7065ee7861bad72504c747efca9de3d0d23e6951cd9fd6a5d2f2dcf23c989519cd28fa739f899614510d038f22bae3724312c93b1e8fe6a95711e06814ca4bc49dde4620532092f92988f5f236e800d848974377248b752d3e2443091c51a31457aa9ebea3d1921d98ae87f2175171389bd208c21ba8de7aa181dd97f8ba62ba7054949be7295767d2206a4537a5ec1dceeaf3b3ce3aa8467e90831c9535b7c2cad50738f0f2cbd5e1a5a1dac5c063550dbf466dc0a5b83a76b5114488ef564cc47254d8ee887a14e5fc2757bc16a56874de14efe92e3465be14f3f73a45e6d6581bc7ebd1b37b784e2ad401d464958c64b68c10fafecd6d91813ecea5340c359ea3231d0adaa9767082bdadfc4c1f2ba8dcc616eb05a07feb9a60bdb8f3276d2b566b7982db8ac1aa1987f9e5e5a58ec6c9db65b5a1cf73f53d06a1dbe38015b29aa67e5965c293cd73247ea875c37e2405fbfe4671c13e4e182203259824ada32420dd8d4326d5a0bfba96334bbfc01268f621027fd5688792573d2a677ef2e5fd15bf99a10103b859e2b16b9f0f0306432d6eba3348ad1d3462c5c4ee9c636efa08d85f39aa9c9acbec46f304faba0a77938c66ccab39a3fc45719c911a2f6d204de911f03b273058cdfcb7072a04429de72b516d5a343eb7f8c35d067dc31eb346b4fa1b8a05231769e3acab9fe9366697ded1f7df3937deaefb3adc9d7cf8dd60ffed5e94d12de972355493a2137874517e52114772cb9f6a3938661a370f4cab21e4f2e20548cceee474a639da02278373317d783e8feab32d76f9b9edee51babfaeda055aa3d43fe93de6b8f7f21f02a2931709eed069910e83bbaaf356fc9cb74bd3f44ea797bd1b91470749d67ad5eac1fd7daa2d21730de790e266efc41438fbfb7e0f3eb78b99fea0d1d0e16dbbaa24c89f52021abc393d3d9ffee78fcfdefc73e05b26a23a972e3b4c9c1d4e6152185ed117a11c6ce9ded1df0058673f7e7f76fce6e4f5f9c9e9abdf1b662f7529e53277a1a58376fb39bae8d663ab3d7b239a7555363e6b651b80da89d27ee554d8d15757617eda31d86f93bdd8d946dc0a2266e1de1dc7ee1f8224b59857352423c3cfce6b5e361c9642cc03f3e09aafeafcd25cf396b0e2bfa943cce7ce251fd4beb02602bdef4a8feff13fb6c0f6c4ae9754dd765bd7a92a47a85da3f0735bf8e58dace6c50c9a50d29203106ea6d7d6e686c99df6cef3e83741e38ba42a8e2df292174514de7a73e43e4679a0510cc8b73ac611b2b7db414e103f33bf900a9a44ab3f4b1a883e456f2394d0eba29b24befcf1fc49821c76a146275a1870dbaa4b72ee0e1ab827dc79e5112bef33e7d09ecefe25e6edf8bdb869827631df4fdf92676c1fdec76ff3ec5d6034e808d7a0b85c6313f523e2ae03d67782b051eb0af5eeef7136b15dea60f6cb68de590a38626999c78272620efdaa79b75bbfddf0484888055e29aebd11dbfae6b9dae1d3fa457589e7a84f6903ad5f0d1712a9306669f59bf8394bd5ef4cf83fba3b0b0af558f488d3d54fc90df73f084b0ffa065c1d91e38033022b87e2602e84086c34edf1fa8b152ced665f9df56ec17fd67906b68324a52f888ab7e4bcae45bda8ea551faec2855e4891809d8ddbb7e78ad7c52671cf084a58437a1ae821f07190027ac7f3e39c9ee17ce41f044f119336a4b15d2fdd634b42925e5df65e473a1c65a6620caff6c40a384d7b6777f2dc0eff0929a84cebe12d998d1f6db2bd08bf1195d74b71e51de5b4f0640fed95775c3b0f69a7e1df13a5d4620fb62a2830dd533f6d47346b916a65faf6d4391f44dda0bbd0c5de83f1b7e3fb177b8ff0cd9237679bcb4bd1b4227b2a3eb4555550cd0436420f130c87ef5408d186fd1314a3e705660db7e99b8d81488523ebfc4bc72a335d9814c8a6578ab6a1750f8c8b9bfc4d7d033979a994f634053e3e81e3e2fa0402c0d8844d79cad3b069eae7c629ffa928f88ddbb1f732e27778df77399c632d85f3eaa9f870ae768e38efb9efe8bce6a4611804e233c34fbdd891e9dc9d97e4a6e4d4e6612500bb9d95717ca32fe8a432d28a37cd66254e569274cc0ae57c4b5bc71bc8c965898dc9dc084cf405766abaa967a49d3c9c4fc58236d38fa8e767cd2fe5717f0909736beafde9be09ea2d1873a3648ac877255f8974e39fcc69366eaef884063a63c08b6ee044bd8000060d50f917942e561fe3697e9197efc762b56e6f42edb6ede9e3477667ee687f75b28fcfcb9397489377b17752b2aace44cdda4aeb96f37f0b3567862468c46efcf4e30339db01e365a6b2670de404d7a26e730109f6daa530fec9150a5817172538b44276a1c6bee6b580085a562de0b3cdfab2e699d0d9cfe5c637ec6a294ab6ca2f25f35b5eb2455daddc49b2a3f1b55c84fbf0c1f89a8cfbbcaad9aaaa05583aea159e52b62e046f04fb9037793b61cbb65d3793c3c3ababab3187be40c6fea590d2c66156cd9bc376d35675ce8b43555660d9ae8aff856defe1a37b8d68376b9b0ee99343a3155e286462be8a9fea8c74ce09b020c80db4b6024413da2ecb1b7988955d1a682078716b72fbf1638c40fecdd49c4b04b3e928d558845bfccef11e7cfce8dd42841ee83fddc8b66096e43810f3559f34dd29a0b845c83e8d22a089ef9e535cc37b329ee565069970c2c48b8eaf42a221b078a6a010fe4a347532297a4f929f24931776be0fbb83ca6cb8c9c791cb334aab20ff922555e0b2ab74c85779995557d8c2d6b5800a34f86a3c9d3e797dfae2c5e9f4f8c5c9b357e7d3692cbe3d728f7b3d7e979ef524f2f9b61952334f629e96490b297e9469dcdfef073e327682f9547626aa06db0a6fb50c137a621fb5d51ac0a97e36a258044ef14ef716164f9ffd747e7afae26cfaf717a7df3f7931fde1f4f41f12324960eafe544725ff905ff216eb1ffacfc69b46d44f2eddc946de8ef33213d7a78be1e07859572b3138607f63f78e02c1745e954d55887126669bcbe1e06975551615cfe06652778bc10f28b7b1a86ac6d94cb4ad9087e28328aa35c04e5cafe5f129e762822df5d53287098c2fabeab21070ad5c891910f9c34cb43c2f0eddcb44752aea7bede1bfb2f7efcbf7ef676236e3ebbcb8acc47c3ecf2f8bf78bd96a562e56831e1e0c31aa66451b9709f29cc7d42d6463bead2008f7d184b9a200aec02bfa52db5a5b21b7e8f17a13ff81230c52faaa2cf06a86d4283f7438b289bd84ad83a704fe84dcb6ae28eadc7c93c833db115eb513e60b3d81b71c41bb12947b115696eaca715782668a89b5f79859aad9a2a0a2996913e7fe2789e7d659d6264c201ede4e1a059f32a8bb581d9c1faaeafdf12c9e82cf69e26b0951513661bffab6a806171a28157fd176a46980289ed3a0ca271c6807b5d625de879b2cd976e329097dcb196ff9cf79bb3ca5aa20043d55e98bebb6e6f3762809f9410f7598ab27c1e34d55099e774c474a6f678db2ada72749f4da5d77cc31db471847f2b9974e2be21fd7fdbd9762d5bb783bf8c2fd7d162d28162672a2c11c3d4a841f6c5fd276973fec7691d74d3b882941435597b39161f99d5ebbfacbad37f497dbefe52fdddbf8454bcb85bb35620f7a16998b7d3b385f0a16bc7002b1b24a34acac5a066f2025911226d5c26762ce378d40c681be6273aeca37a97de6acc9cbcb4268e715f61ae559f97558f70efa6b2b568bb9c83f081338afbe6e50b26ef50240c297bfd42246acaa8145ca335163671b280acca122b1a825e343d3ccb166335f32de3082bbb20f7a967c5fdfeef3d9ef78fe0f386ebfec7cd28cf8b7fb51c34f6f77d6f0dbf4614bae103fdc69890da919995e6572c45466e69de6500b9e7578de7f89bc8f5197c4980d42cd243a7adfb53c571cf2ff88e5e8c9dc7a45605fdace44d8f87fadbe20e6a9c82517e36cb6e5aa27898ffb4cba6b1ffacddb07deef36759596f396d3965fff9e539e4e51109042c2f3aa269a2762429fb92cad2b58b0c76c3eeb37948af47fc3af9cfed7fca6a87810eca8d3cf581993e9967d86cbcbbcfd4f579a8df0e8b7cfec3f38e6186723eff4603095d93f97ac092baa523e2b851c8a437d5279dd4b86206fd9555e146c265435f28c2ae495ea3d2f8dbdf4e1f87e505432c08f7ed4eef3cac7e8e2133abeb877f918079169fd191335bbbd275af9629ab2c67ad92716654cb3bd28873472779749dcae1a4e623bb69587faffb2ed8818be3f6f3bfac0105cc162484d0858b7c93f8645e062359f79672e0a8e242a1a07c3d8008bbc68459d7459d2ee472024294aebb2cffd60731cc7b0deb0896de9ceb0893b44a471e67781cde754a24ab2d749bae075d467824a7b1570151e2f1a72915aedb53327dc0478d2881a0ddad999231e45bd818082f85ff4199967d91be20911a494224e017e2c36fd9434ef254989f6b6a3d24f771cf53235ea967cafce87fdb4890dcd2dfb3c700e2154d97dd7b56caf9be0d39837189d1e7108135091441b14fd56eaedafcef3114d3244e251476e2cf9c82fa53f627943be649f1eed8df6f2158cf046f0793b62bfb24d63720b7c42766c50cb7783478ef799490b001f8ee7b5e0adc905506e0a08fc54b3f71cd25ed7d5873c13f5705a0b6dfcb3e90b2549acc5426500b0868f655e64b528cd6bf5fb1181309dcab3023c3e86ce74c77ae89125fbc5c6184d60d3466628b9824fe122368d701deb3e88bace33813f63ebb12075a773f0881d1eb26765b3a945c3da256f5147b659cd44cdaa055b56d5fb068abf6ad6b82a25af5c2a4f1b5e56adc4e25aac785e8297f1e121e8d55a2ed12413cd3a6f05353aaa4949111b7bd439206642f2f3cd155fafe56055ad7a9323ae79d3888c65792de66d71c378036e3a63c46f5003c4806073263a6fa95d010cd873f7a3c343e33d7399b7cb0d38e81f3a4e34878092f7f0d9e1aca86687dfcc67df3e9c3dfcf6c13773f18df89a3fcc1e8aaf67fce8e103c1c5fc017ff867b1f826fbcbfdc3a69e1fceabd5ba2a45d9dedbb479d18cdbe6fa7fbd38facbbd170f1ee833af2b23a942a0c7d5a6c840d5bac8cb8c5dec2994d9d35e4a1a8e55adc1959712501c418552cfcf355f43ebba5215436116d0b4647f75cfc7df46ba33f912bef72423b9cd730122528ee3345a40fae4d09eb9a13a7ba3bdc3afbeba28d957ecb85adfd458bf747ec09ef3b99855d5fb113b29e76386f259c3f8629117396f4533961fc187e7924d6aaa4d3d97cbce8494f48a7c2e4ab9ea0d22e752b09727e7fa3166b757a0823e5e9c1c3f7b75f68c2df2426810025010c9aafa06fdb8ec486d2d849d83fc9fc38b5251af5fd1edca50acf121fcae6a49b54c9b759d97edf745357f8f35ed49f3997d2a3fb1202a3f88ba850d787276cef2529e3a86298a470c75d6f2843402fcce6ac19baa9404173e47ef30f034ab378502e121a1faa40a785eb643dee853a0f60d56211f1b825508fe414cb0fdd36afee4ecfc8dc83673346803ebf7491ea0f3d3a7a7b2156092f62a90d7219bcbc3c82f01e88b4dbba985f62b0efbd419b8316cc44c1662464a9a404367c4ac323106928a3808d45b078a900ef4a3682783ff2d511dba2af98af67478c89e125feea72670d086c0ab47d18eff55e525bc1883af48aef48a838b8bf2e2a21c1cc80326ff20239a3099a7e60b325ae4ad3b3086beb2c7b81a934498783f95e869eaaed6245055ce6d57355f0f07c3c1882c417bbb3f759632628303f9ff03c7c30a4e54fe01987a0204f378c406ccf9a2118580259e811f3c34a7cfe0de7a5256e5cdaada34da3a8ef6a7b2a2035636112c235007ebd34647751d1ec2f147bb54b3848351d5abb127e6df0160edefb33b6400f953430aac3a68c481be06ec3b7729135cfedb6aad40f9165c7b35a8df1d8c18850afdf61d01928bd751d4085f526ec7cd90ab591afddbf378d6afe5dfa14bf74ff2b4e926f4196d4a11001b9a27aef46aa674970dd0db08667057a1207b2c518c8e7260df69f4f4f18ac2ec8c4094408b3e06383d700065f641cfff81c5466f0140c787f62d1dfc792e8a8c8c0abf61b887ce70bcc8b91ee9e1187e1160aa138b2f3dcf705e5f920feb4ba0454dd74e3ca4c7d0b6f30e20b6744e6048d9dee23e0c46b88011eca0dc1f98f15d9f8ac8b93a1423b17ddb8ec113b54c0258fd0860fbb5035b02bdaf7de87d20a8fc35b946ecf5820b5198e9df3387874c8b65c009eb1f676bc9ecd27d775ec024bf494df21b7f92c10e7e933c4c83f1783cf0e1dfeb989c94455e1a59954cdd7d0153ffd699ba3caec75599e5cae31a5a8c9da75d8bf9b6373a7ebb151d61f923b5ecaa940b77e6715b84d3ab8fd2ddf02500e94fa9fdfd93bfbf3100fe2909c0c82d6cbe89ddd01da0ff536fd0ffa903f4c3c343f6aa8294a9da8a18bd7f792d9463a96cc30be0f757fc86cd049b2f79796933154a19b036061ac5aa23e738d66d2ef6cc70177be37955ce793b94903dd03f3ceab38d7d19b18b3d76b17700f11655497a75b742357347491d3175d0d85d07aab886039792c0e58647112f3ae710e223c0ac3f7b57ba25617f8e91309f683d2f2a1e0c601fc2107f490ef1973e43a054e38f419ec22047f747ecbdb8490e75741fc722a89937549632cde00a76a7e4b6fc2e10c486d8b59c00b26f99302e1992891b0c98a4f9f23a9b844562241b42d6fb7d55158297fe82e9635cf1517ab14749c0cad9b4f5060a0e0cc09f81ca0baf3645e10f6c9e05bacd41b9290afaf9b372b3f23f37cf70d20fd2937ed0071b5ee44d806fe6190ef1301c4213a9a38738867fd3bd95f79c3ad8f2b53acbf2b27ee7c85310c2e58f4f9ee20c5c9e6121f9343383afc7f8db9bc1af6606f89acce05338039f15244f71064986e028e0089c3df8e6567ccb534da840acd53fa85cab9fe1ecbe4dceeedb0e96f4e85bcb937ad0fb8f804f49f389eed4cf6fd642ab0832f9c3d313c0339c75f2123efa13957d09d03cbcf5bad78fb0f73f077c90eefdcf707dc7305609372e8ebeaa4a7964fdb5d8a738de5f92e3fd25329e1ee9ce20041f3bbb695ab162e42e04ba3d5f8a158f7239fe2b9499ee3b330a188c07f7e31c86514bc8b990c6eef32887d7c03cd2d72d4a636e47072147774a1b746b5adc16b8ee234fdf62cbc7e16bbb92b864fde028b261b61b4714a6f7ea9c17bcf6a7ccb3eca9bdbc88f116467a903a020f1e6c15341e3c484a1a663be48c0623865a8de8a638d03f202471b7853c4c2e24108a2113e882cfed421e8eedb3ce1527a463e74278f0307a212890c83d330041ca96afd6858a06d6984ba6c3066c5f32895b701a878c41132e91fe804c8ac70f02f99890f2075f47d50b14a9bf0e14460178bf4e2294ba0a864bdebcdc146d2ea5ce9356ac1ab80e0ed877fa96b8b82807239697991447e97d011ad503fce300f8b66df7ca414ae9b445623e5022f37a832c447fd8272ff907c1254f21fb4d0f55dc836f7a2be31ea435085647e9c246a372a88eeb7fea4f34ceef76f093acc78380f508579a502fb8e7f9dbaef36c4e6a3795db7e4c7f2c23f74df7d293fccb83408b102e3d21deb7f4ce453d437ce11b39df6d8bc6de54b871332e4479d92ec13f080aa53d6686498606f2b38f28540d06111849d1633710fd3909a23f6f07d19fe320720490077f8e0a200a48a2dcacfa21067612430c236ff55ff55f92abfecbf655ffa5c7e9dfe554af37ed2d2ef487f7536b78787feb1a1e26384be75c3fbcdf7daed79bf673cfb49192fa2ffb28b9eca32ee5fe51f4fa2d2a0ce325cdcc234ffc308b6354f4fafdef5b5695962898c96ac240818b32c7b3eb56944d4c1a316f10b00fba8591870f7610461e3ee8238c0839818c7d2199c472f7f125076f71d949bef861c017873079b88dc1374bdc91cff7d8fcd88a226f71454906f561c0a0069cfec3af7b72fa0fbfee4341e2aa1f1736bf27c31ff25131c8c61b2070931ce8c3ed86a787dff481d9373d60f605982a97a78a81217c89204832940fb733940f130c25e5aa1e7edbc1552900fcbecc95c35bc54015bc434825f9cf87dbf9cf8709fed361ae1efea993b942587d1e8f156352e28726de04219164331f6e67331f26d84cf7d8fcb9d7b1f92c9ee5a2440761b3668f5331c109416441d2b9e9adf26e329d8cd87c86cddf691ec1b8267fb26e6e7fcf3f0855cb076a9e8ed042c378c920d59c727863f982e52dc4756d8a825535be1d31f042bdca1bf47a53df1605cb250bc3daea52809b6a23d6bc865a6cb31bfda3aa65afca512d33fe71042cb0323a37f3a50b1fdb847d477e846114d73eecae159f3386a1ecc43e7e6403758063f0e2145482cf97b05ec951e56dc3aaab9249360e6fa1b5f2072de17be4df44c62ef67e659f2ef6104bc6b1d523fec050ee72e1912447f047408e7e959bcdee7aac224c58f18acaddedd320b2c09305425059ec724c32e0ed7abb14252c0e1dbf54692e20115902275c7c8a2e18ee6ce86b44e73092bd4636dcd81471f8bbced3bb6c280f6ab08f6438051ff2557a90fd7d3042ba838c6bb12ef85c0c0f2f2ecac34b042fc353ee0d6579fb6113194a01c5249842a744b9a3f78e82ce4249c1a27cf25cecefd383d1542b3124933a20fec135ecda1336af0a652967d58235cb7ca51cd5b56be92a2ff3152f0c75e245dedee8148ccfcebe253d3463ec56758ed91b0d73c6ad6382c4b595e065cbda8acd200545c6aa4ddbc80155d76f4493ff5b608083a85597ab2adb14a2615c4e52dca0af2b66b9e0acc857b93c73352f2fa11bc86cc11ba1e7059878f815134d9197ed3d953942e78fbcf7af26abe62306951cf1077c226fa0977c7db6cc57b1401692cfec255f2733bfa9bd7ac9d7fa72604cef03635fb137f0be0174bd969444534c4507604f561cb35b48f86086cd5c64ecbdb819eb7e4c7fff2169dc8afd0a98f057f8dfbf7d927d052dbefa247bb08f6b35935f314ce1937ea3ce31493f7c29da13395d497742e70213057e4f1722e6758d38698128ca16c256643724f80daa60cb576fefbf038701da3933d9a4a1ce5526ae1fd117688eb3b5939cc4eafaaaa5790a3ac2cb1d1ffb21363bfcea2bf61ff382370dc004588b584ca02d692cdbfa85de20e6683a958bcc4503f9ffdebe8bcd58559d40847a8db9536f86aa4f1b053562177bf2c05cec39894a2c8ae13fbabf337498f8e43638b43f2e1d1fce4bd1fae9d9690817598bbaabc8aed0c45692bf14353a8c7b8521e655b9c82f37e4a501880d9c759794c0637fad5fd155222aab217d408e2fbdd4e03eea61893e794a1fdb13e083008fc323f72bc0689d1681347e0bddbd0bb1183fd8dfc73fde1e1104b91538ec2b60dd13b0fa50e55908ae34c0fc5ceaefc5cd0807f80cb811a5c3820dff9f4f2062474881f1edd13bf698512f0d96a80819e02d44fcbeb5f37f972c6ef819a8b82b78b1b2e0569454ab88a0d7a32d7ba01aee027af5c9b85917f95c0ca1c9881dfd4f00d792379db0d2b10677fe5fdfc3dbb1805bcf12c2c1e371b151cc5480bedf6b560aacbad0c62708309cf1f9fb14f4dfcedbebc792f97ff78596a76a8fb8b1f86a1223366faf83c48ff3f63a9e5f0806902f413a71118c08f755cd8610e29fb3c7ecfe082b0b042741befe2b9b727d43b1697ef7ae3718a5d453fe769a53c2cc0c2cc7f20f39ed91a1cefaaffb69bae1f1210a729a13c17c90072678d832ea4f452be698de1c246d9599570a6326072fa64f470e9b7fe07901dc6d5eeada494c941ff2ba2a6563ca11238b9b37dfd7d5550331615bd3ffaa0666e81e1982e5e6ea1f105ea439decba29af142cd5eb2ed3c3e61354f6cfebf8fb6f0e2aad7c8c4f0cdf8256f973029f987cfa6631b3f8e5575dd886211eb583eefee56b64874ba35d57267c7d806bb96b075259c7ba5b86eef49099095d5bd525cdd9390d3275875a1a9c57040b8bac1c130868d4f4050844307619d98f9e88914146517cf6bbe12ec6a99cf9792d32e1a260f8c94f540703179d959be501daa747fa5d09a8866b35e57752b3257a40c8413f606c76e062c9772be9488ea10b9a333dc8a43f175258a551e1eb29376d06869128a994b0194b359253734b343e99c8d27cf981487da7c05329d3c7ea62f5eb28bbd93128451a03910880a67e4628f41117939d5fac97309b2bcfc50bd1799a9932ee18c386c3ad4e70bddfb0bb168d952920f29738f3d0128b26cccedae0f5f2c0439a4f421fa7767e4d744517d3e7cca5b312eababa14d95336247f7efdf6787ecdbfb44d139c4407bb00a8b0655169b15d3a5ac676251499a98659881b2ad790ef094238d2d96e8e7e7a604f60307ed8f21f140c3b8d2f8d576cd88ec8246fa1b015eaf47e7c252bde93d03ed4555ce05cb36b54eb965a5fb0c8a2fac459d57fe6148def3ec9e39ce4ac3a207e38b56056f47fa353deac3856dee312c0081dfe24aa10a88ecd2de87c11135f322c7d1004ca27bdb1682b0051929e000355504971b76cc8b42a71634b2a2deaae8cb8237ad7c21f75172038f7c65cb094c1df528559d5fe6252f2cf0acbe5e599b51e7548a2b58b32a76a16897ec4e760319d5ae6f2ef6d81537191dd486eaeb4c1dac88b226ca686931d5cc476560792d4a0997a193a691008b9ca808080d67628e593cf7310130e910163974eb8af9d0d5098e2248e7a1f5989da80c718b4d0d7ccdba6ada75550ad31981b8520c9a0d33709112d225d67bc95b75cd980ee2d46ca72d703641119563033d4be4a277ccd0ddb583b8faefcca0598f057fc6ecd5fe399eedf94a9cb57cb5668f99a5b84ea2dd3872010f07974abe5a892ce7ad286ed8a22a8aea4a53d7c64490015299a1eeb987f4af3eed8d886c56f291236b80c1b194231942672fc3a5c0cb6e8da0d7fc85da906c4c1602192fe4ff412a095e42803abbd86b6b5e36ca657f4fd1be527c1035e3f37603a581c12e41baa2c06800176b189643dcdd5ce0ed7025d80a5273acf2a6c1992d54601ee96b29af99b2617c95678db3168b26632a8a7974919690f714202e6970f4a531e26a5e924bdc3b0a9a82fbe4c423c70609223c04a0a74e71f1525de3780ba94b1c3657df92aa1665b56095b21334e43a7ff3ecf99b67673f4c9f3e7bf1e49ff232bf8f690d5891372068349b199a641af9ebf8ec8cd6a6029b445b6136188b064c7c004713b98917e5e1a1da45be58c88390e52b34633764521913ca3d654c380dd5df3fc40d54cd1bb4d57a306203c8d722ff98556d5bade45f925793ffbdcab37629ff580adda8c9ff2de0153e79070b3c5e0a497c174c57b2d44614c0422d189ab9acbc56679af5b68260d09127a6385cd21964196fab1232e6d45551881a055d757e24db29291dee1e40ca35f698c4378ee106b6d469776cfb7f0c33a07af980c374ae28c3c9e1adaef2ec0433b123c42c2c75fe81b782105b426853fd58da4bd5369225c9f239cc498bf84f4f5f02a68a52d40d5bf20f82cd84002f022d163132213aa5886e5febf531951d563012d9d43bdeee9cce8594dd805c91ad5cf28699ecdc9048cae0077bf601d1fc169323d3d31889bd3d91ebed9ee83f84584bba0e79e52585ad54de5abbaf3e0a6f9ba3df7eeb641bdd72eaaaaadc995ae263f680d2aeee39a12dcfc5acb3d7277f4bcecdf43c0d8a7756e5b9a141cfca4cd79f0a9e274b842d6ad12ce12bc5c8d3e7e4ab914b8713fccf932c6b0c20e4fe99a903c0d2f6cd001a9f6c37f7d829e97126dca3b39d6b4ad20227a5a319c34960a91e3a3cfa9dffe7ed8a710530cd09dfe3b705e38469686e7579a36519a114f9026de39262948396100d76235ac22dc0943c7ae08fafde4c87412961df7cbdaa201d90060626b3fb2d3651252af8a2dba86a28f7da498841340b7becefd323db4a5b5aec010ff65b6942e5e876c9e0853568d8ba168d4a1e578bcbbc69eb9b31ddbcc03463074a18663e91e11c8cf1e87b59c5e9938b3bf685724edadff7ef171f9fb2bce98b5254488f317a46769473cfcb8d60f5a62c256ba8198bbc6caa05b71e0f79cb32a547474ebbd95d92ea854c9a3626525dabc151a78f7c96840d4efbd46092d26a1d2797a70506ca1d64ba537491a9959871a1d580339dda43ca1c0d034524b8eb49f697483b0ea27913f637552d78db86fea8e62dc5a79b4e4a019a97b2026d2e2c6325b7fe978dd888cc74a76d905b19b388cb83313e48096f232ef6e432794966254f8181a506735e9a3ee19fcbeec399b5acfe2d30c7c780380a014e80cf15011b706980061cc34ef015d79ba9710fdf9ea6e957e84e1950401b43ad99a94b2e71ed0966303818d9174bdee8a7d6dd0675b5452ee18cbbacc36a722853a4bc48d9fc668e062c53799883799097370612f3aa2872dc829968afe411306b193131be1cab92c0ba7e91912d58b530bd78f207af853c0b732368367c25f4d69a5247466128c9526953dda1da6665b006128796be70089a1d2d20b6bcbe14ed989d697380e90c1264aef88df678ca4b0f6498d615bc4815378e2619e4325ddacd54693c8200da54bbdb7e9b121de1e65e508dbf3f98ba277429e118d1d7a5a51b5700dae998df9a74ebbb2979f09e5612fc4be52bad2932a06d5995f766ca844a0c970c0d356621a62b22d115b5e0d98d664fed056b6db21f3f76dcac8e7e0cb563a4e49196862ef62c672fcaec620f55192c57ba0e48657b55d5ef790db95c558660982ba86044e65c10a833bbe2378a59a99a269f15207ccdf91aae18deb242f0a6554961b1af05e832a11023587b4b7db0087ba10dc592bf0629f08502df70d0d2450c4671a945a3a1b29d86bdd442a94ee805e62a3d937a11fffa8b4b80e22a903987fe609d9d689a3cd4c0701cfb78dbd6f96cd38a26f4a25be64526971a79c36b3e6f45fd94b73c78db6c666d2d528e77befeb0638b9e9ebe3cc3be5e5619a8fb23808eacdd93f7a9f2d22dd640d517a6555a28f96f202484cffdefa125464a4a50930ec1cf2527c191c49ebfc0a98c76d4e36026cecbf66349762561f44a61e34104efa3d3ef8dfa9f765222f5558b7569f7c2f391ba115041db43e5690478b2cfb2874fd8d1973c50117d1589f4e66e999719b86e8d9536ffc62b914c1fcb8633e278a673d14d678a4b95128051c91233c00a0ce211a5bf779f195d40f3462c8aea4a7b7003e5a24600df33def55bb45e8b74f6469f40fc153fb987c51ff796b29b0d4fb02ad5304aa3535d6e7020f5cd0e7801ae9b6a2651f26a755b7ac6017d302fd46d9dd6d8fb4796babd9b5e1267ec87aac822aa69ab6f1958a0a60fdc17019ab3604d5b4c658df847515744f4b29177d4559d43e5ef43ebd44f6d680a498c270c8a39ca1529eecc82e10e9f74d37b2afe01041be37a8276273292efc0a27b818a09ec1e7b6de7844a4465b90a9d56f497e791a9128732fcfe98c42b503c0cdf0e713d239c9142c5b8d3aa0af8782f6e9a21b6dee2b62a7b80c49aaebb6a3c7044cf039cdccd8150555260b8b7efc5cd3b432e69b486eb65a3f7de7f9e0ae2f814731ac3e93cc250598b639adc583f36edbfc69ba69ae710630a418906b70cd1dd8e55a94d0f76f952b43f03af72baa0db4b1e2b786a13e3217b0225f16dad17ad34c8a1c404259fafaa4c8c144eaf042f950e276f554f4bd4e0b18bbdeaaa14b5298cb0672e30549d610f570252eed7a2ad73f141307ea16bc5d4b568d6157a0d38b004de10b4d9b2ffbfe3abc7fae4edef6bad84337ceab9c986958b2be2de8bce86d59c17de3e6a1d7759b55674d4a5c0aa52c0dad41ac23da6284467fff1a3f10f069c925fbf2ef85c2cab22c3923b264455ab656a316f7979a92ce2b8f1d0e28d80aa64586e48fe3829f376787fc4d4ffb964d1541231b35531d55050043deae2c889ef3e62731a9a930ac6f35de92ac8273ca42137da9f82d78d70de7efc08ba974f74eacf10ec0d9b81a2ad61f22e40e4228bb92944135fc0f1d9d9997cfd54cc0b8e59573ea90fbc96e3f1582f735d294502bbc7be57e3da67c3b65a8f1838438cd8783c3ee8011002924bd1aa3ecff27f8b21ce85b816da81945d3424c7478aea9a3c4071e26b7a7a3bcdd93d06b147e613438d3d2f17fdcdb886322c84eb93901f9906d154c0b898b703dcac7b0376d7b46777d9e01eba89bc731571b0a3773d5451191b1093e318b146a7594489e6cbe24470e7bed683cdaaeb71726375ab2dbbbacda10601049fe9611fb35f3f4571e1bedd92667ac41edb5f0a49c8dbf41d6d76e9316d4f6eecd82eabc939dbacdbeb89bf352f24f98e6cb18b7dea2b7fcf8f7931df1460a10948a3249c66dbcf7efa7bf76d7bf6d3dfa1f47a3e6f549536c2cfa927f131b4839dc8349620bf0e3cdb5c4f30c2b63d3d7da929749a249cfdf4f7631c55b675af6e09fbd9acba3617a09431beffbeba56ecbff64d8f5d06f2bb311c3bf5373a6805a7aa37847f387ff9e2591784498308681d5ed940cd1631732fbd5b81924c2009d2c343a60a99016cd83e43b8500961ced14541b50745b4b89e179b26ff20b0101d3833e86c04b58aa5c0d4338683c1f2673fc3306603c943cb9cc2b31f701e5e4b7c0a3cc3f7376878999b42118abf9af376be84d42752fc51992132969798096499679900c771b5a04cb47cbea42e80ec7c596d2e97e601b2b1690815a2d175ffda252fd9fdf137a6a8769637735e67a8bcbf1210cc205baaf63fab68901cdc4dafb0c09d40b7469396c19adbb0aa7703e803d94ed0400603573a9582aa1be7736e6dc5d6a25e54f50aeae18979de0868aa9e4aa6577526406b927f10ac150d22ab029b85d1b3f1e5187448ec5f50d872d0b0c1e4430e630d185a2855779790fae7aaaeca4b6523532be882af04aa01e738a8548888b4bfcfee50ccf0c3590c9348892c943302da8d21b6bea020c9ca71b55a6f5a91c105a95fc4aea3c86d679a2dab3afff76b9ec9db44b5194354cf5dfb1bee3ef385644fbd0fda6a4ddbe315a9bc0e708e7a3110a2e6c090d742191fd185400535c1710503ea52ef3844b8102d990d4e6c2bf67fceac872107eb6679cf3be5ec44bede14fa50cd8483789b362f247b03c2a264fc3620ec20ed79a3840d9803e06dc65bceae78530eb4a4857a3ccf0d024bfbc17c0bd1325e609d4c84d4c8b0ca18235257f24072636695e0bed2d4485dc88a5b82c70786202d0d29729be92b04cfb103785563d9228a9c839e8f717ad7fce1acba1e48864aad755565a2006974bd2e7291b1a1b89e8b359ec3936707e430a899ccaaebb3fcdf5001e4f163a75b6acc786eddfe35cdc448541a0f878a654c98578a963dbb5e1755ad838a4c5f5925e4ee742f545e6d1a47e5a659fc1aeb8e4c873f23f16e741e957ce17d420e0156cef965c30b6b38d5a5404d87843e43922474fdc841497cf26ca45c04369228b3ac926bd174178c6c7c6e1d727879033620a8056a95c76c256a79016a58808547cff1d0086a8a03373acf97bc5d8ee1f80c11ffee1a428199860881230a516c7bef715c70223ee8c84d1f906e637614320b85b37735f5a1b3f0c8aa390c1df3504cbde2e50f6cbf8efada45c8a6156bcb6918c457bbabed398306cb931a2f8f86e5ada9b80bf37d0b603bc469bfa348500bedabf721175750f993d7826b05a83278a9cebe174d9ec9d500d6a89b1bf36f89b9681a5e6bbe87fd75d9ae8abfc9898862c14a85614baee78595828543825859d5f2ca97182fb9e6225fafc11048aeb9bcd17a1b5d4659dd424e386b09e1a94c19221b3644225ab2e7792d16d5f5c804c11cc079722f08d38f3ec6748e208f228faae6a9eb4f81de2c6f60d72418f02bd3197cadae177db12cb4725d7b00e9fb237ac0c9c973cafcdaed1c498647f268482c90d5e1c515bf69409f294170bcacab95208e55120fcf60ae33c8ecd07912efd17348a43f6891e8253c49f758c0b8e2b44077c859cd315780c8eb0c610251508bf8aa0dd944ee6be19223e0a2b4f4800baa16ece1d1d7e307eb6b896e36921938b20bebc024744d6af2d937eb6b80bff657727afc13f6b8e237d097e9eae1d1d7ebeb317b021c28a18ceb3518be0be849ce61ccce2af6af4dd3b2fcb2ac0059f28665a268b9ddfd46d9d96b51880f9c98eb0c05e3b366e86c2b12afa318e174da2569a2ecd1dde3b04b4b04dd965ecc655a2875d8c191c3ec8d9812535312ea52ccdfdb10145ff11ad1624b9087f27e5c6a4d4bac4ac097a3c7a47b2760c44d5a118e1d33081e1e826b9d216598d3b3b86127cf000d9f659762a46e6ab869e3cb525d9974bae30b37614064325bf2c1d9993aa233b53222ac34ccab4554aa0847d6e86293429c28957b53a9d48e006f24727483b5d356b8d31a943ffdfd99e30b09660b62b050aa938b3d2553ea9baf2b2d05e8feefad792dcac64b4d9104d2ae20d2b3b6194c5c5d8f97dbc14930b0eb31b1c951f4d321dee607bfc7e12039291337bd63275063cae5c740677c5e32b7af0e05172f25a35557eb3a0757de40df2529bf019c048ce47f9b0f97ddaac5dbeb13bf941231a9ee727dac7a290bd041233cbb0137a6d3d2a474981135ef56255db0792a26d20210ee7ca0028ade6982af00f546f0ecb42c6e3424cfd6623e61cbb65d3793c3c3ace68bb6192faedbc5b8aa2f0f2f85e410ea9bc3ff95552b39482d782639b8e846d3bd8029c9bfac3b004ccdcc74d0b0ebc31b36afaa3acb4b857f99231226f65a2f21b1dffa66c546003de36b24ef9f6b7434ba36e23c5ae1c7372397418087578e26d208fe53ae84fd478a487b5373a27621a54cde22f762bca388db37b565e21c8fabb269495627bf7b3fe5d077418b8982bad124d56819551e0608a4218e635db6746c93dd232230e92cb0da8940457c94f7acbf815a42c497420e6f9c17ae274c83ff66c234e001d61346418e409ea8ffaa876db5b61fd5d8e09add753e4461537fc8ee9af692bf9a30d0ac7c72ac0435022b7abc08626b5bf88c43fedbd27596a10a331571e021f9cee72e9fb79958dc53e72f2ff3b6c320fd895db37becff92015369626ed83df6cf1eed14b3ece0043c4b7da05961e70b7c781beaedf1c9d72376e333c4ceadf8791876e1a661575800f1e95aae44cf0c5464ca238c0a2da57554b43676afa9ce0caa3c3d7de944a7c8bede0bb106f7835a85a800efe7c4bd514e9a3a80a9ea8ab70ca92f93f1f43c91bca42707a4a36568685522e21e46f2b9453712fb7b1dc2029e444afa4c98c7981f920d44d74b90ecc5d89b10196d95ba1f0d08a7d350e8fe45e6119b89317bc5a7f2c677522ca414606294facec9b82c06073232b7b9e54ba6db7c6dcc479a5bb5de639188721d6d189e1fa0a690da4033f070341412d4a10dcef409a2a1aa9ece9a1c93b92838192877b9be7a990fe24e9b784caceb73ae42e8d201a5ea3ef6b9530bab83476998d7fa6677ae2fe456803988a1f3c78fd84ac12a6ca67452179d91a003b7d7016ccdc0eb6340f9066449c186637a03a7142495d4d72df443ed89cfb18d73d8d1173dfbe9b5bb66b5caddac7b8b830d7cd44572ec46469b197a40b632c404b387177177615890119263795a9e6136d52f7e9fa89e6f75a3a81b180d98c1cdb2550c79ca5ba3dd5737ef20426b7a5c556a11c631570fe2468cdb1d2754924825e62b4c71349f032f7669726e62de359557cca6e8eae0c81d3539a4942d1a0858222ec12c479eb5e4409fdc520fa119cec43ef0f95c344d55db51892159b97c0c326d3a241edf567dab6f999f057fff92af59d35635bfd4368515bfc1d076b612abaabe6185e0ef21bcd81833308193b1389603937414b5c570b5c2554cca5be858a8887ff7326f884335eee644fd97fa46eb7d9cd01f17690fe908ae741eb6b3d727bf5536a4be093c7442302721e571905e519f4195afcd748a72f35294e007ec874a1bbf0e13944f4f9e2ff2774cd28650d0ec17f718c92a654081f669678211f6dd66aaa0e9bfea6d33b1603a6eaf41d8f1f8b0f56656e47377f844c62ced0dae1c84d6bc5169cc82ec96bd48d3d9eb139ab7db406644a79c60b08f9dca3218d7e7642520390b229916c856924eab459061a17fb62418f66f097e9d86aae3fc9ca4493eab8ce9586261502a3da89bc22c3dcd977cfd57752b8dc27eb6e576b2338580632c53e3656f547a1f830177e2098c19a620868ea0245b5d57f570704e331dd8a2340d035c16ada8d991b1915aec1ac4031d754fc0ecabbf7dde14510c5ad038a4a08fe3f69a7673dc5e27726bb6bc6e756a2275eb456246be8848ba63a8e3d9eb131ae3884f1d26d0936141c9ecbba46fdbc223e3916ebc71466cb669d17e7e5fe719227b1686274752b2bbbe29500e4adb3f88812c8289c650e7691e3f7e647786b60f63cd413de3c1d6106500ceb09f35480d73b00d76112c97675e3207177bda2cb81741779b26ca940c0ecfeda310d0d486a462b97d26952cd7c9f2b2e44d603948c1caf9b011ade13ffd5048479512c891eaacd23c682a591cfae0d44a44f613387197a10afa73c3524309f2acadd6bfc1916eda6a6d7bfd32a77a53fe71aeff38d7f45c5b81277aa6ef7c99438d758388b52f358244dd48de3f721669723c271764225adc3f9dbc28c2c4585fe470d98c0e71d5092ea610bcf63215857b86cd864912970443b87ec5fa36744348e22979a4481cabc60c63af5e722ddd58a128efd62f7c1160d22c5e694dd414c463c4fa472e01ef07e754c629ee84bc05f79bd1830e0f9cece0d314fb4e336662df3685b82b7027730fe6988e2a521b4029227536d788946eb7ce6cbcd225880c75962a535b4434fab2fbea65ebea9990c6a4c273ae837476399b7281247ddb4ab240bb05e59d02de1e1d1a41371155281a9917c23d20a960383b27098757232d86332bbede8a984a3313268d404d1e1d5d7355f499a3f125b54d0e6242ced4ab3305eea9f3f6da6d1c1cbc084d926d1aa527a792797447bf24fa91d97510e9d866b855cfc2359d3b561c2777e38eabea6598f11766f03cbe2c9a2624b6ba4832bc8b94deefecf509297443d50fc0939510586f33a32e8c5e544be68e038966fa9a65be8224f65a7b25bf20d8013ef008cea2b0911c3a500cc23154d88f1a0f7a33aef68b4d51dcb07555dc2c722888c2cb9b2b7e4302ed9d44bac845ea99877e29f2c0a9b7c3033609541e347f84a31d7bf2fa64cc9e9573be6e947b5a98bb869dbd3ef134d8aa3371bdae1aac1f51dca858380a022718846360949ab55690376b31efce65ff3f5b67eba96a413bebea233b925b7a1adb5e8ac7b086941202a04e871501dcafb672fdc7bc94a701ea85705594005ca93af456bf9368e65c88a4b041af244886dda2672a9ad728add1a57c3d49242d5a65db70538f77192908a57a26cf8ed6609b5313c152a0086f076a90c1481e7df2c3f2f983771106123b569be2756de8f55b6cf5ae83b5e58fbc1c4f4348c963c171a9c07170a07b1bf3f5bab8194ef9c8e67d20a5c9ac994667038f39a74b30d52d13d77983658c1c3a04c98949dd8e48a1c3ff7d34f6e8c916c7f3c4677df756b610386995f84555e2de1bed99054ef37229eabc6d5e54552386cd6606ee4f23d66cd6a286bfd5b4f42bbb59817ba1fd86ba18c63f96725bd3d69b795bc953a01bb8ada753680fa5b76de7ba0e3f569a1fe31ae5ede42ee61194d157895fd637e039c81edc3ffa337bcd0b5eb679cdcec57c59564575092cdb49391fb327f216954dc176a4257f86fdbcc8e7a26c44c6e4a6e175fc64cde74ba1df8cd84fa29624963d18df674374b557ef2ef600165fb19b6a03d64f49e6301c376fd82287e43a10e79997e06656e4682e92624c6bc780e9b07faa4eaa1984e47236afd6c6d6a15a32309f7e6592342cdb763d393cbcbaba1a739836381f16d8b8397c7172fcecd5d9b37b0fc6f7cd673f9610876df88ad90d06e7cd815129f81584445ed63a64bd04e334c44a36d5a2bde2b5807e32c90c4132540a3c3dcfbc711a405d3776b1f7e48c9d9c5decb1ef9f9c9d9c8da09f9f4fce7f38fdf19cfdfce4cd9b27afce4f9e9db1d337ecf8f4d5d393f393d35767ecf4397bf2ea9fec1f27af9e8e74b8a7b896b4bc81d49c2b882c44189e09e14c43b358da14cf0a5e5e6ef8a56097d5075143eecfb5a85779637c3ea19f225fe5da253058dc58711458b68a7d05c6f3a6c867d32314312ff6e0e7c5de23d3086ebd577ca5d3b95cecc193523ea1eda0b33782cf5bddae963f68935fd9f72f4e8ffff19f3f9e9e3f1bb1e3d3a7ea7fa7f078c47e78f6e4e9c9abbf8fd88b27df3f7b31622f4ececed927dddd787c381e1fceabd5aa2a0f610e6a0284f559b6abc23ac55f422647d6f2cb63bd08d763d3d2569a674de788509fb0c798e86c6c9ed0eaf438d81bb130cdec23d24e4eec3564977bac213e9e4e6bd1b438f488bd558095035cec8dd8c59eede862efdd817fd500a815b50b976c86e04d935f96c35f3f8dec1c88e381197242367a482136b22f6c187a2d1613b2762d91928b4cc7f291fa6ed56a5d95c0d94996b79092081ce259b111eb3a2fdb7b7286f7483b252d80940089029a2564a5a839043bcf04ba80d032a6dfebce984291430c069e20cba02e21b9c13f1cb1c70ec25cec2d8f24e4151acac5d0e60fc2e60f3a9a3f0c9b3fec68fe75d8fceb8ee6df84cdbfe968fe6dd8fcdb74f3ef8b6afefe974d0565e4ddcf66e695fcdc1e67af87e32a0bbf9d57197c258fbcd7fe751d365fd7a6351208ef9b177c268ae0ab423e95df010d41aeb25d0a79b55d55c67f6807e4536531e497505d179071d31837c146b8b94324225a2424c847a67efa22987785933e393bf796f963d87643dafec158fcc158fcc158fcc158fcc158fcc158fcc158fcc158fcd68cc5377f30167f3016ff7fc358409363a4f75bd905c38c3c3d397bfde2c93f5f3d79f96cfafacdb3e727ff37c16cc00ded7efbc3b74e5b793ee17f1443220fee4b516e9ee61ff26c8b19680a6a4ac57bd88b5b5cb7a2cc9a21e966c4545b9dce56f741da04864afc0414c7e5a628d8febe7aa454dc6806b04a6e5d948aea8c49ff4e454440830ebdbb36c9238b63b921ca5b4d7994b16af3b650afe14fd7f7195fe28adcdaf50d28d95986b3f56cfb319ee962afc82539fd35323d872952f8357ef9ecd58fd3a7273f9d3c7df6863247c60b25555b49ce4e996097824bd021d5938bf9cd262a6ff8c43c47d1617ef87604601de1c40e02a7301f21b2bc59175cd75d891caabbf28c902fe08c98a592176085c0391deb7bd8314afcea1caa4f7f5c7e7f5c7e7f5c7eb7bbfc5eebb4e5892b4fbdfe7237e6c9dc1b2c9f5725fc8f3fb1b5dc8a91fe03d28a72209bffc8cbcce9628d4df47fdd8ecec575ebb46ec5750bffe3b6932485b43b5c8972e35de327ad587dee1d2efbe8bcc06583dfecf6969d7f91ab9b6bd7a82957ee4fbbddeb50c6b016a56aa17e91062a8d58860df42fd240a20cbe947fd117e8468bafe06ff212e4429b4b6ecac7f40969082565217d19b4323f69a9314437adcf99f2317d426b2f82bae269de4882a2f0193f88bda1dc8fc45d647ec475ebbd3876a1ec3c224d75bd34ad14b26fcef149a44adac51ebfd8834269fd7457530e8a2b4404d45a794a2cbdc3f84b6f27fec2c30f7fc176e1df745ff089d903fc49818d4f62d0c43778dcf55fc7eedc14641ced1ae4ebe4cdd96626e9007b6c11f68e53bb0f7d3fe4ac31f9cb634d82c7e4e910ffa66e3cbc9c2fab5a93ebc749beede4fcd9cb111d61c486d33914b318b1e9fcad6efce4f8fce4a767509f044f237d79f2eafcd9abf3e9eb37272f9fbcf9a76d24c98833f9c78ae523df3e3d397bf2fd8b674fe557e614628c36d61354db8084735ea0331d04f8ce8b1c8b2c57256b1420db3abfbc14b5bca1cd09cf5bb142c890715f9fbe3efde9d99be9d393b39727676772f8e831dadf67774c4ff287dd35b98e03caf212f89b2c2331def7bcaffed40cfc1dd3709abe7e73fafa8c4d608362fa5567e7b5c634ce83cbbb927422cfc904feb7fb3379e36dd5ed6a383f3f79f162e4d213abdf154591af9bfcdf62c2eed8d3572ab1417e74a00a60aef8cd4cbc81eb041472437a7c0f46f42cedeff75fecc5de9cd7a2bd078cba4ed1fde980ee6491474fd1709ae95392bd758ed4d98fdfcbff4a8c7270253bf0ea5bf792be0874cd4c2c843cd028a435e1789aa81cb884673a97d379e44b5adee5ed83dcb9c61df0f7bbd20bd589be13fd57de7de33e73e472d593e555dc5b3790d7b5cbbd25ab7e35c6f856346b5ea636a38ba04e9561c95dc281d9365cbe33eb831d76c3def07e4420d971eaf96a99a11468482e24cf9b34bd9f5b39a86efe65fb59302c7a4826f5207cd356cfabf9a609ea0862117145ccfdb77ab213164c5b948baa9e8b68a74b399de3a26ac45351f09b09bb6f5ee5aef830498815e31fe4a563be5a6199dfba99304535a6fa5e7a79faf4e4f9c9b33767a6b196952646a81abf39f9fb0fe7d3f3d3d7a6d1a611afabbae5859abbc139877524188d416193e806bc04c28557b6412c3bf9bccc577220a712b81ae778fb49512b76a736f6bfb7e3b95951425ba07370945fa9c63db55ebbef7463cdcde33ea6d382eb161fc7b8040706f2da92370b5e27187762e7d55b8b259b872a2cf994e8af5e6f6ad1a5c30289524e411ee5248a69001d1eb207f7d7d73ae937bba7f2e7cf4c4192bb8cb31916995c14f97aa2013bab3665c6eb5ce824b41200ba9ac1c59e8628f63b610fee0368466ad066992f2ca3b759b36fd6d7aca9cc0a1ac68bfc1236b85a2c1a89046a5cfdf3de37b643c5389e7e10f5a2a8ae3e738eba102416836d2b9d141e385023672821de63d214589760c636ded43050551e4bee357cfcb2da34e2697555265e3d930425f1ee85e01f84ffaee5b3933213d71376ef482ee60f65e61fcacc3f9499bfbb25cfb128b85a406aaf70da23f5761b9b6bc1aa0d3f5765d8a92efccd5485bf97856fab26b090fc849639ea4bfaeda6408fab291fc39f3b69ab3a35543012fe093d07caa1f936d5cd880d41f50622e8cc88a02f9ebcf93be869702d6c3a8ba9283ac51ef4fbb8b56f97685cff2d5c9fd1281846d2154967011fb703afa4f824f8cad8c23d939f7a8d3a76ca4b39fc554fdb60da28f8a73feed13feed1ffd9f7682f17daf0b88dd83fc44d33627865fcd8e645632fa7ff300e6eff6a0ee7552ddcdec4b5986f5a01ccfcb35f36bc18b14ba1324aa0c5ea52b41895fc4a5ce193bcf11ee035f11cea778a0c0583e8fd4bee472800fa226fdacfb9244d27c99bd2b4d06eb620575fb7d1dc27eaba84d40c785bfa1fd92b53e9ade1f2abc5e207a88158139196817abb79cd6b90686ce916fb74588b8593f444dfe4d02b6988975d2d1641aa1392c710df7cc59e17fc92e565067961cb4b8cf2be12da7716cb03e9ec0a8d50a94be468180b6e8add991ef9a215b5da6538e3edcd3a9750ba314e92d582bd1737b38ad73adbe3989d09c8bef55f5204ff2f0c2ed73dae7899af37054eb069790b496739bbd2b51c6daa5765b180f9b5952e37c731e1007677e86e072e14aaf958443e297fd235fc1ea3362102baf3a51e48c14c5cafc55ca705849cb8e2bab540a3731b9a7a0f60fe307d42d2fe1baa876a0ec6ec6729a5e25ace2b3b4b3db7113a36438adc166b9ddadd28d9a6c489415965952802a1ae938bd2992d79c36642946cc53391029aeef095b86e9df910e5ac3ca63a2ef8bf64d7f260a1ea53d4ffe58737fb2320fe9ca8cf5ca575dea046889c06c35f4ea30c26d3597c546e746df6a5cf9ce665f546d5118696e6272811aa55de9216f94265635624ee795dad8092406608e7955e3e16ceadda25e41b96970dd60bfd053e53f93aa05cd0ff87bdb7d16f233712075f05d22622195394ed496637d4288e2cd133cac89256a2c799137512c806c9b69a0da6d194c419fb5dee59eec9ee872a7c379aa2ec4976f33f677f3b161b400128140a85427d68ace014417d7ce28e0d37bfe2b14e1749b3455ea168dfb563ddf580b17c61f11161cb16d3eda0e77680cf96077864062377d1e3a37457dc5631560e6a9fca7ddf010441dc0f2434c33dc7a4e9cdc75e6bc2d15494e7b19705477dbe52ccc653f4d7e0aed125067301631e58733a67b8ed6090addd0ac326f7059dcf8172f8224f7047d9dd0462152492410d970d5e53dd50de664af190ce13f650bf9d00f7defea0eea637c61d70c0bbd5909ea106fce9d31f2d475326ce0a06a70ff3bbeb8c5d52ecc0084fc730de16f98bcd5fa1606915bc7ba4ea6176ab824bd3e113b8443179a669a7d56a037b6c455e4eba2415b2caa1faede2b44dc28e742d175288896ee58ba19bdd802843f09a24d4201c5c60e265a5afb43e50f66b93799b22e8022bca795ec081a63a6076eb6bcdad66b8a0ad442c3853b56f25e64fa718a8a48bff9839bbdba14ad2558ee111b8e2181e69fbd4ebd09c2dd8f519af832617ba87bdbb321293cea20dc789e36913597bd75d55b73727db47203ebb14199202c8f21d41c70c43d779341e3d86da448d4677d876675487f6704a5574e3f43c5be67b06d988e41d545e2a837351ca73c8642040ce0c93cbabacc8055349be1d7098e84c9e4598e315652eb1281846499cb362cc4625a62a16cb7c646fc830c28e876e2484f5f1674e7885c056701201c08dc841b3b20b9edbdd85dcc6904948558295d07f73b0094a9e62c1aa810d6b970dbb881c03f0e2e20cd874e6b0c454919eaef3195332ca188b31b751c1042b4f736c15d9529f3ff9332a22e49ab227499235b21eea25e354e2364794083d946bda71bf78875aee49d795a2ffc6b163847a08b59ce609e46b7e48c1bc4ae2fbfffd7f30b7eb0385dda0ce15c2e8684ae69872ea8e660bd626bc70f6174e444716831d3a26732e20d141871ce1ebd92247780a861585d37ce20083f355e96fe0ecebf8ec0ec70148e8f39e14ae55d07d5d69cc0bd2848549c91e798ebb2e65e2fa05d9d37fefcac2ef6c890ad2253f3f7be6519104a4051353fdf23abddaf5eb302911a84362c2cab772aa693e815da0d89c4323fe3695346ddb6fecedd9e7bce090cdc32b9469b6eb56abe008239b9acade318cae24765f8d686e4f4911c44ed504757f54c306d7667d7ae21ad6aa69d7ce48356e79b3ff54995c05876a37201033b40a0070357ef77792a723562ebb64c46743c82a93650e392bb290f7704e2891bb29738f9f119fcde8b660735a40f85e756fc3407f693e5f946d22b83cf430ab4cc60523349755c6bc98b9b97100de7e9ea89ac0fcc24bf92eb9678d2c2309475d035f148265774cded4337eef44e2aef04817351f789a37f1b5a2d546d501babc3af85041da43ad403a9693d1e8c1c0b73a4734cf5dd4d8f865259b792343d2f0a8bd9e4262478fdfb815bbaa5588d765aeed2acdad96717e64cb437e9f7b27467846cacd73cb96ca87194a3bea7770c6995a7b7ba083edec9f9f9fbebf7e77463e7e24358587a7ef4f3cbc6007ca38e210d52b4d7f13568f0e739a4d58e9ab6c560cea15d97e41bae44595b15516b12ae83c6d01ddfdb9b664a116c71128562ee4bbf9a3cb0830a15ea5a777f3dda75e2008787ecb9d70cb968b394628ce4b564861759ed125ec39dc4baf1765c9f38670d4a2ca2adae512b809ef19a6c39a177cc4845030792edb26801048ec8e20c93daa71e1e292968265635575317720ebe4b2733ebfe3ac50ad0ab6cde72c277c01f1adf9c244a524dd66c7276e8ff02d35f54efabdf3a712b084e76258e9723e7e5c751b8a925fe5f655d12505e45377c2d4dc811db54704ce7afc09a86b2d2a068e7e809adbc768590b38687daf51f80a0cda4857ad82ca7c0fc2db6eed115239e71fd998ce30cd05b3667646d8c6b6ff08a465ab3e0a1d4fd0ef843a06defe7d3222c6ac798fd3f03cf5134a80be7254cdcc087f0ee64abc155bfb5643265d8fb5d09a93d0e8442bd5ba388e4294bd1c4469d806de58d5906a944ddefcbbfe4f53c983d7f57f9a4a5555cd27df2ce13ab41731cf6b1d3eee637ccffa90d9a6b267516041fc8bec4e52b5fcd714d5844e51a195f950aa7f457caac2c78f00bc5b14f1b28a3d8774d1d2c299e348cf31d4d586fbe27ad4892f3a21625e309a4882b950141c9ac48cd024c66d1f8b36a471d18c5a9f04dd3c62986fcdb603e6db25519e1cd457528257594b0e959aefe661bd77f3a01608925e2d142dfd5a0e0bf4eabaacd19c9e6a51bb1562782afa14b522201112b17983e892f01dda7da4a81038328a800aad6e56fb430426dcb18d6ac2e5bc4fb3ec9c8d587ac7b4f195ddbb5248f49ff7b4cc79b6926986e96b1e7fd82d8b8555b8e8330f90daacbc21201662a31854d4d4ae938b6d8187595558aeded79cfa6da74ba517fbefe07b34e4c24af41fa609665ff6f02e45b2b34a60b368a6170887ae0ed829cd327e7fc067735ac81d239a0eab2506a8ebb3958fb245c2ba929500e129af4e45fdf6cdc37c763e5d1972abc360e5b530b62ceb5088afc05617636551a0bd38483a9bb124a52546181bf3829182cd294473e290943f15848e468b827a0aec26e42028fdb3b58582382714b8ff584aed10185defc77f2c9828f7f31435086f0a3a63cdc8a9171ec21d1cb53bc992cb69369d4b34aa02acfe619cd18995f93ec356e25182ac1b55fd511eb5817024a548b9e411eea840b3a7cc20901307e036aa8f856bbd15ae308c6845eb86c29d9f59ef31130b67274666bdb5b562926b25e4c171591f78ad3fd877bf8759462396481bf625de0759e584b6db3e9f1bf76355bf834e227d3e8f3c449b2ce6b1263fb849cd4391d01f6ddb57b9caafa7ba5ba5ac8f8e02ab5ea8755055f5b2c4aa9a0183d8999a2fbb4abb385f94cc38f0f05cb53269c24a4e580eaf5df78cd0ec9e2e05c918bd6344cce988f9ea751043f5f21dd9f99e21f8662b181f7c55b31876ecef58b5d7bc2cf9ccab899fbc89487652de73c29289cdc4efaa17c7bc80cab44805cfdbea8800534a9cb882edaa132db5608fbd04aec596809ef9c4f12c18f376b8c0110d4f9fcf2b60b75d14c580b86a91ca00ffb2572196671e4d784c7c67077ca3460563391902942e7a51a95f90fd476210d448f65b6095a7998a4fed9642cd049d9106e8dbf646698f0dfbd6e0a3ecbbca44eb6756f2b99e1624df74e7a43e7cee84f470b6bdd9549e0b1f3daa9474117beb8623d335829d57a4d7a08a73c1f378715089541f45ffdbb1a2f1041a34fb89c29d6bff06032d9a6fa6ee597395dec43db09e246fabc019ce7d2851af714b38b14321ce3b668286ce546b943e319d5434e9ce67297d62daa71a6c3a87a19d2b68b35ed534691a8b3773d1f1905eb9b0fc53153c2823aa030745c5e09508ac2f727e6f60ba313caaf2c5914a88e34b17f0d5d76ab9c8464ac32b8cb75fc21df4f1a3d7cd77e4392a913d6bad886416eaf25b6d174e54c1b68a40e572c7c71cb9c43863f93c55dfdaf7c15098ab17bb698529d59a4b3d220606a93dd7d5e7bb69f40296af1d91e07bb3d67e50a5ec0acfadc02ce071a27415fc6b8fca015bb554097467fe365f6bfd8e2a59a552bc4d3a2790d263c6ce07ade2acc35dfded606d8af892d71c8597ed172650e6ce0e3939edf7502945f89c152a459620a7cdbc252fde69a93d18860c6fd398880f3558cd5687c84342670dcd4b41ca295f4ca6ce83b5313a019b935d9292ef1055c6b2e4d9b334a0e7b5af8ef0f7657ad5268f907cfa18bd28bc3c422855b1bf36032c1582152529d818dff26d6cebb424f79096988d6e59a2d51d239a65c6dec75cae26ac3c40e93fb92897198b3105f7e2e15f3b68fcda51b974d0e0d211e0c68a406ead2e993ff4f9c962366445d32bb103b2ddc76a4b6156ad4690953407a78bef950a05fc3f586ee357b5c98c43366c652a3249ef20fe40a122bd82171478979554c9ba7f4013da0ed9273772e3dce8c9c1ab1d99319acb039788455a82bf1d8ace5490315fe449470151191f6d5774c61778939cf13b70a8019bb0b454bbc9f5db79b6b3fd02e118b3f21a3aab682b2c8d99aedb38bb23cfe65cee1efb39cea8dcf295ccb9aaea8bfb1e04ba87828169aab16a0dc6f35c9ee31681f2d3f60bc9c7827a8f9c41649bbca8427a115c1cbdb1c41843e869d77cf46489891375636d931ab3f53689afe3a34c28bcdb58c2a0557168b5066c95d8517931ddab7923d8d9d16e6f0c8daa429d0478df2a97d5a156fcc2295272b88e2a4f37540c779ea8287dfadbc3ba2f0eeb9daa959b92f7846f07adef4c2ac8b3636b1b4a504f85e8da4e285bb43505d7d8667e3cfd72680429f76078cdb4f7b1ad2d34334fd57927858b453ee645b9c851db7fda3c69118e7c3c87e3412b2e0458b1db0335a3a24da66982fe958c0c36158bc1f753c2e7984e7eca7279c686b6ba3437a03ce33a39a4d9623425905cdbbc1360fe75b0e0c16e604783f5ea059fb19e02e1f08c958f461ed61ec7f22a6d817bfd7dcc35c10ba0b96a806b4d74857180fbbe8541d769319aea3ccfccde63d5cae65c3d8fc889a0e89c814fb19692ee99592e00a27988222368a1bc56cb11ba24e85cdcda352160dcb5078ae0defb4f1ad3ed3fc1f7092514d744ca5b9a20497d7551d68bf460eaab700f4efb68b42f57f38511baacc815b115792cee837525ffe4678372c43c10adfce44f286d593baae7a44be6b410ec282fb17e4760a2fa36d97ed96a931790b1fe93d7459d1539557d696794a8c189f7106a2b984f6a39e41180ac38156f54c74daf62cb95f63be3344f9a2d927026f2864a3f2ca5c1dec59f3a643f83372474a203ff6ab816659ccf210337a309e16317986cd0842b98f68a1ed15c23910a2238e694bf973b4b591d8ea55482dba1b3eeddcb37ea77bc78f4cd2ae2926330a011af1cf5d4b916bd7eb976f89eb278e0e647762fed95258f6a107f9b35af1891442a7b9f1f2312afb2472839d78292efb92dd402f342c7b4c0d94c59c13c2e5601efae824e976d5f13d6a56107bad0f4f7987babd3a68e265c5dcda758baf354a9463e61408af7059d6b3140b9e8ced27c67461f946f4c17b5a310be852582f09c612cbbb665f38cf072ca8a8eb9679989dc1774ee32a7b684de2633aaa72551863cea3b5914a267461f420463edbf38306ced348fcc589b89fa04becaf7d5d34bda71ba9f3d7d90a31f0a87649ff01fa311ab088d90486c9cb1d5ddd890152edd265766b1219ecb6f77c7ff0d6ef8e67eafc50b0642891148bd2ade8281fa664847b73a7c44314b73c02e5523d7a2a655e2ff46ea0403c5b93fdf4f53d90afe867bd724cd353e25e206b9d91bea44f7396d70bd5532db3a17584b9efec53cd0423885e4854b388f2b303cf5451a680442505e39681f4272b6d231daedcc18309f7b484077afc80b454f1d849de624cdc7699e960cce702d6962787a1c981de5ae2e9ad18715c396b512ee9c1470aee3999ef37c3b12c05df7e57035fcf4cc5d9ce76dd3b3ffbcb211e139e212205cc5794f9cf7eb36debd539260c6881a90bc0ffa5a0e8749a815f8f43516e7d71862ffc7c610b3550e4fdf7ab5b6133efbd2689cd0a65714bc88376150f4dbc5efb4b2424d9b851429a08d94ea0e753c2572e3467fc1d8dccdd60dd93f3b2233564e790237288cdb23af505a8603e3009ae75c696bb129d9231b8ed8a2d1eb816fa978cfe7bdfd83fef5c1e949bff7f7fe75ffe7b39e09496ca2b5610b275ab73915ebaa34f9f0439bdcb2a5a781e7c30f97b76c79e5696a9673c6c7c429da23834db989f2c96033129f9fdde38a36715d3b67a7e7fdfd63338383e3fd8b8b6b58bd8bfeb9ca271bd357072fa183fcd3ae15bffaa099d3777c29b9505096a5a5d0d1d061df90826dd3521596530c0b96f0118435ed0c79b2c42dfa4ebd6f4d590e7cd3686dd262b498c1e929e9ff976d51524c57d21c836503cdf84498e8e7a24d5839eab410e87ebe44470602d16dc95cd27f8251b75261acf9eed32c2343068ff974424b5d85012ee56c689a4bf6a2eaf33c3203436d9ac23e3f501e42a88d92a7a9bf3e28de6785954560351e54532ade4a01d3047d779fdfea3d8e70a86bfa0aedec90d33c5baa376272a3dff06f0897c763e953dc940a32c3216134ba61c1ef855ca5fc2e2d780e89a2500fc2968416562be89a8c2bd2340b2e69ac2c18c3d061542e347e9ba6f944902cbd850b81581460185a901b933be1a6637a90e74dc6318bb6a618d7fa1f5029472d0f6ad1ddd9017efe41c0319df091d89903e244675aceb2ff00e1717bb8180eb3349f6c97d3822f26d36d55c7728f089f93cb8bfc43532c08b3834db3b9079bb2d286a374b46bbd3af947f0fee046e90a79a9fb166162072b1d3454f0f277044f101522aaa2324a4f20aaba1deb8dfca8fd757560fac1132775a021b966d8b6a1df9bdc792c4f0ee4b49bf553ae798372379ed6bddaa435fa75e740e114aafac27a952842a3a7452ee05e8baaff13aef9cb93d7622da716ebca61bdffe434c0ca1a89566e38c56b07c1eba2b726ce2169fab14e84d68e71ee1784f3f78062355087174c5ea59b11d0f6a917c2f2ed270926105b05ae1d1f4bec05f15fb564efd32c7b97cf56efa07abc07b6372b474d2c5f58608fe67d60bf3ce1095bb1333c07ee088ad53aad39f9e806ae7f9fb2a7ff9e3df4c350df497aa72e7d2a170c6e7c4b4a34499a36659a14c7746d9f80226debe926582315f636b23aebf6a12074ea64d63a41d140dc5d89fa38d1c651ef500b36ba46a9e0623194c7f3515e72b3864dc558fea00cde0d6581d4a589269e844dad9d795faf1e53adfa732a98e97acf6f5859bdbda9960af1fde51cc249456e1c6eedf8339d59846ee5c4dfa89cf8af7c0156c5f31c84ef7ad8e11a8f7a6a298317bd80ee2cb585ac18d887c3b76dec508f990f369dfb8eb7b994741beba223e6592a179a0c365b46d5fc5567f45567f46faa33fa0df3b7fc4a0e2e2efa05cdd199b64decdfdf177c31b73a1a543895a6787b22cb7d58e3344f0e4fdfcad33c6cf85b69aa7e64cb78835bb6fc0db554d688ea512d9593091b59a097f05a7e52ff38d1f44fef5891d1e597a80814885a1d812aff1f88a3ef9c436634e6dbea18faa3885466690ada3e1667d2c9ef0877224fba80233d945ab1d6ba41a9c19e2c4908453e4033a55f2a39beb72138e3260a261869964186c5192dd5039c09313797a82e52df35fde0e2c2fab7cfe46eb27c63ca79d2213413bc4d66f41659949551c77cb480271715fd6e4473077059d0395621692ed204346ecdbb94921b375fe34dab13fa79266cc421d29e46aa123134f6e4d9cc871f98642fe49596b4329e1b410b6a7ab132e25940a15e28edb64dbae6d39f7ae7c7fb3fa37074d2772dd86d86b6e766b95a249e92319294d41b504d7706aecabfd3aa3a35d7452de5f9e99ce568f70f3147d5cf48259d0b54ff0aaa1ca8e4cdaa8efa19a964e1e02faf8a65e5870be5be81f9c72bdf6b9a3929cdbd6f6154e418fa835327b606a21bf4e50c83e790be0ff20bc610a9ca59d225111cf2bcf700524897c4b087c5d8b682b7329d31be28bb11f439b4e1ef96d531c55ed3d16d52f0b94958e847167b4a60dca102e5648af53ef95174697eba2825138058d33053e50e1f29f19ababc029bb85f6284e8d161601816ebcee3c35eb0361c0d6151dd0078003943091d9e816182d7beb9fdf8211152a17453c6b96628a94cdb0d23eb9438b5607131a01af479048c551fbfd1613a13f2d6a7e3a4ad74a618a79b4335834a48f4a7d1cc1790412ae4d652766ef0f73a4b6fc7055aedbe4ef0ce3a5ef264e5685ad2d1ad367d5038edf039cb2f6481c9490093f379712a60d447797f9a0ad5f2b4386462c4f284826851858706a4b6d35668e06b8c069d59643a054328bd8035f38d2cbf9184e51fd47c6cb62bd9d20f66f05ce1a6e307f9c134f2685979d7c96be2081478903646b61b6ce2e13ed8448b36354d37c0a3b64cce54a4928ccdf4f045d35917b0d1df80e2545cd0190339ccade086af090c3e913ce4253e466312f0638b14eedf1145e3fb92432c5f6df00d726c2a082568298b94f51406f2f836d3cc2ebecdc208ea1e87dcdaaa136f1d45c746bc8ab32a6a7fb442a468db229dea47312936a577292f485392b03cb604c8a0dbe84683e438a7139d4e1df87a2c2aa82d14259f1fe9a7b333f5549af2bc190b90bf1643ac477b34f0ef13f95a4f8ce85c42f2999afff9a9a715eba0859c0db07a71b07fd65364eec35ee7147357503d606e1b0d0303709090caaee7051dd32225ec212d053841600c8f96bb062b56b206edb107dfde1d2b507aea6a3f77d8d3160259f1f4abd9ebda6fbf7c4a444ee71b24e7a4605448fec7f56330cd97f0044b6809a1c221146f431ed0c0f3ca62912d49467f59860f17306e5900bbcc7fe5b4135cfdd05989961a25ba4733a4ae11edd2e49d57d952f54f379660e5d805220a353725e892956a4e055027b42828e801f5e876add58c58cc41939133484a005585f3a40df7c9d942c8f326cbe85c307b82c163b99e3ef8e7f15cf58679b5d81dc46707b73e0962c8543e257cbb37bdd859983b7433e77887e8b307587b7ecf9256c70b9da2ba7e9f96530b4140f6164096be91ea67d2ce8cce9bc13b74a8399057c74b6d9a58d343679143d2f56608414bf5cd9617a44473f783555969d59db32631adbe919e9ef54eaecc0ca3558e4e8e8f4e2089ed8625a49a4cb672786540427bd1bb5b4068ceed4dae27f593f8fbb7fc60fab68e7e55e812fd1ea38b4c98f19501448b6850cd4070fad4ae5b46ff31cde0aaca1462f8d0788d2b121c2634f71fd35cc6e03cdd54ea87d2dfa776b850750ea1daadc1af1d656a7edae02aeb7e82c585ebdb06b419be5d2b81f47d9a65b238fe6ebb62084f0c5e5a6f57e19e6f750703f9f8d18900ea9d7fad27e06c2dcb080c23a58d0dacfcbcf114948268d10c48022c6162a0ff258bb5d2c460d5f8c3b00e7f9d2f86593ac2a718264c969b3f90bf42c2ce9c66f8db4449a88eac46307d8283aa8abe9430d90ca56d9b201585960f78c679d1481d370015c3f4c36236f762ea99e8cd6b871985187ffa4e59b031bcfa0d9913c97cc8ca7bc61cf333349a03512a4ff4ab85c916eb00f6552315c0694ee4d5821414629008c8d6428e7ad53b5155ad6f5d8e6a14314e8d8deb55441a5870797a16d403c05aabfbe75b9ea0edef63b7adf8b0aa57dc0af0f076c60cfa8a5b29552d4a8e2433a5824cd3c99415645ea4bc484bc8a5eb78a19151c6ef73e1ab1b0c00fb4452331770a7c390dcbc680e362f4dd32b7c6cf601abf4964f075bd2217a71845021ee5038dc78ae92b05a077e346b722a05438d83f42bc5008637a2c7f87944bcfb9c98f75a683ef06f0395cf91266b2876a7543883bba61de7c3ca4b84abe4fe9ca781b51e06ec39e78e736b8b54f6f53feff1e0962da598797dad51e8489beb2af8575a124583c6fbebf5f8335828cbbfde3ff8f1f0fcf4ac5da59f00b86323e6bd6a18d5b22749579e1fa20f6aae59544c9987eef8da84087753eb11b1d4bf60afda78a17410df758665a339604f9eb4c7a9281958886d020380e5a951eea989effc415ec20fe8bc5c14cc1a903971571ee968263199f0fbbca6332fb527643dd2fae7984eda8dbae82ac3ab4a70ad03b77bcc69b001b1929cfde528bde781d6bbeda79c02b714535b791efec58b0b85e3cba8285168b632959ecf8495c7a638926da8d236a2480d18bc3da293a476b1ab70eb571eff175f7fcde316ecb104433eba2afef03c6662c0d56cadf6676bcb7c7438a5a36c8f7ba67a7801cf948a35734c8f108b5cb5e68654c748cd29f818695b5a7d84c2d6dddc35f4b672d5eb56dc8bb5a4c76ac709790eab9bce0d82a53d43c24bd563caf16af8b495bb61ad9df008db7b221a8281d5bef038751c3a5e73ec4fe2a475430b040da724a6e731d63dc6aa478ae360225bb9bfc11bdd58bfdd612648f7c5ad32c56043ba36e1b1dd18dd84ebd918abdacac8d8b48dda0d1b2af514779e48d125bfeacce295470eaf558c0ebc0a2e057b05ce3279df5130543e67ea5b467f597a95aab25a977cf3fc79a5346adba36a196a08431c55f8969b1c37ca6f5606e9aa80bbacbe435bf7fe2bef4ee28370ccb2cf1605ab33cdd687f1a7ddcdf6e6ce8e63eefc37be844767306da679a2ae9d60bf097906d3e1a2e485e80cf29d1df9ffe4ccd8b7921423cc0c976452d0bc64499b8c0bc6f071811613d6d6cfb47356089e2b5b64d03b002c6b929c0a630e0cc3a042f0510a56187aefe02d649c664c80e13440186c5e682be2cd561be367d04c87fdd0656022cd1790d9b52c5215dbc024380048ba8ab5d5c504e768ea5d72491d6d18711bb3e6cb7f194c12545262da0638d64eb94d04e8aad0ee9be6c90e2f88605926a1a43609831e655b679e0113e212a021e2a0fffba98a596266950a325e14792a94f362c289e0d0eb07362a15e70230639e65fc3e056fc43c418d77d72c697fca081df23b06d343c2c879998e984a4a990ac7ac591741d62132643a975002b0d21cdee6f40c0b391a51d2bc4c6906be5df02a13ccdc5257ff871eb9387dd37fbf7fde234717e4ecfcf4a7a3c3dea135f66e8726de3ffb26ddbdbf9f9df72e2e00dae939397a7b767cd43b6c93a39383e377874727df93d7effae4e4b44f8e8fde1ef57b87a47f0addba16e36fa0f9dbdef9c10ffb27fdfdd747c747fd9fdbe4cd51ffa4777141de9c9e937d72b67fde3f3a7877bc7f4ecede9d9f9d5ef4c8fec92139393d393a79737e74f27def6defa4df21472700ede494f47eea9df4c9c50ffbc7c7d0e5febbfe0fa7e7ca42fdece7f3a3ef7fe8931f4e8f0f7be717e4758f1c1fedbf3eee6177273f9383e3fda3b7486587fb6ff7bf47dbf6d3fe0fbd73a8aa46f9fe871e7c3a3a21fb2764ffa07f747a227174707ad23fdf3fe8b749fff4bc4f4ecf1147b2eefba38b5e9bec9f1f5d4804bd393f7ddb2612c5a76f008727b2ed490f2149f4fbeb747a2e7f03b477173d3ba6c3defef1d1c9f7171280dba08326d013569edee7f2746145b93c646254a473c96ca4a40824dca9aff2f1a31775265eabc9871f9c105fb76ce9c096bfa08289b1927843f855b3dc582034d9381a07cd8171292b5da657578fcfc7440290f563b1901cb0bbe8848f38c44cd6e76cd27b98933db2f3fb4b917cf8fdd5cec4390044076b7967d2d871bbd948c5058412688e5bbeec0ea3167e2af8183a8c33794d6c38050805e634177348dcaa1bc939d7f995e9969037bb411a1e72f4285e9825a4c5440ed780360519dc5164b11ea22e116541f6884140a760f38c8e58d3456ddbc19c1f2f19a30c357efffb464b0fb9f1fbc6aead9092bfecc9de4df183c1a4b84fcbd1d48548408b4e1abf178d6ee58aa88628e770993e7b76e55ea155b324d24c05f759d5ec83dbac2c96fe2d5bc1f9dbc5e94907434ea4e3a50fcfdc86c908026a36af5b51188dcb83b4182d325a5c35fc4bb491945140ad4ee3c113895be1de7c50ab7b995e2149662cdfb55f9f3d4baffc58fce264916512f51f3f928d54e0066d3eb4bc58d70579b6471aa4419ed9fe035596574993f6832fc07b5b5994056c6179d1784b8b5bb4f0a33a848963d4376452e848e07424e7d05ac88a52fa4859626912ed91eea92c873809c3a54624363e1a93eded9c6f276c5eb09189d42f58a93255a7a5b29ee3db7cde71837b898e6ee42bddc6799bccc4c46123ca1f40e7c4de90fbc2bc1535d0431b8a3a393f740602f1ba8b05ab849bcb6d68ad7d29bfc06a9b2980412e446450d29eee988f315c94acb1981b3f86c810f7fc215606107b6e33115d03e41884d444d9702c793dfe25570def0b2abadec0f5e131e09320a601360bec0f357ecb69c1ef1d147b9b110a9d083172cc8e738b796231c00a3a6275c0463c173c6358290a2a529945fab51cc020c409cf1d9e0ae37c1596c3a353a3d03b3913365c4ccc396fbef43072c8aebf01868b49c6fd740d82956e3845f14e9351d385d36a7960319513a095e5779d93d3c3def561eff5bbef25176a204b14600b2d58d929f9bbf99c150754bd869bf31ac77e2958e93335b9a87860351b83c16030943c49c27b46d4ef3669a48d56a764a20cc7e91956ced3c419eb3c4d765d166d7a8f5f733590999028f38510b56eea6364835409a5f17b417e9f74c9ef45a38d2c6b9e26b8d72cfdd470e71563fd54cfa29d56bb7ec8a3de68cad170160343f231a1f86787f48ba5401511bcf5db3a0b1d611235494c94e49e2ec99c0b910e331d9d529625e978cc200c35d8ee59c76215a5f1573ca63e49b108ae6ddc5cf5b057be283bf106f352905308724e3315ed5c98e6700265252b706e7c51ce152030a3d8f903c9d8848e965d0282aa98f2fb1fd22461795b6eaf722a2fc6192f442566aa3e10a1991c832212795156c6ca6a2c9a1f8eca07ab98128ce55d7279a51434a25c66e92facabff38e107b25bd48f489838ca4ea763374b289a4a71ec9b96eca6034377a5c5cb97a86ca96bf7476c8773f51a7e73e5eccf54bce63c63346fc28c5d0357678040e8e543c72213de7494ccea3062076d0063c24b747fd698db54eba8f46b6abf293fd1e6a87c50a8b7c7a9e40915fcbb13b0dccc1f62ab551db30d0b1b6b0b486ef9087f595b1b51db0af0bcba87d142947c768494a69bbadfdcb304dc8d6c47381ba42608bc097fbd4fcb2950961b0801f9d74f724b2b9c4a9ab653d4517935fe53d3b9fa0b2854b9d8b3bc739fdea67396a4149cece5af9dfd938ba36bb4f8be1ef184fdc7a4a0f3693a82c551502c5680221a439e258d2eb97cd1262f5fe24669a425cdd291fcfa4d9bbcfc467d050fd22ccd992cf8639bbcfca3ae9edfb142c0e7ff6c9397ffa93edf4fd3123e7ef39f6df2cd9fd5d749c196f2e39f9f3b1f87191ddd4255ffeb02dbffd1f9385ad21c3e7eeb0365f8f5a5f37546272c2f297cff93f3bd6030e36f5e38df964c4a88f0f91bf8ac45ec439e37308c028e0724ebbb14392fcfc9689674d80373312ca980590c2b2fdf46570d1e3bc438d3f2a3ea5acd19777ee5bb9532bb0a871a4c06906119f113deb1543da6fb4b282c86414a5bb1d1c1664e676cb0d925293c420083cf30780490331a74350a36610f730941a24f4b4286518794df1465d186afacbf9c33478b02df2c552b6c5d9aaa2e27848fa1583dd81c0c1e5ebcbe1c6cda1b93a26a847275f9fc4a8a2c33105fe4fd6a9d362f541b977dfa1de3cd0b637fc426af8e93f8d4fddb9bd71c8cdcfbfc072aa64df8dbc1d6948aa9163209d69492508f8ea6ce93f01da47e48ac224036bbbca3d995cbbb9479921a89ac52194a8549a948e5051b2d0ac1fae98c3947f059c1efd284114aa69cdfc2f56ae1789f80851f3231dd017a03ecec10c8ab8382034a39f2faa8d535189284e695e672c3a5a5c7873d46bdb5a5a0813d9089cd89029602d652796130a4bf9455406659946926afc68b8cb5310366a57379e3c5bd8cabe30085db6ac8b9b19ffd4c709581043a83f70cfd0e6e54640ba13d44474ac381c946005f1b6a0652ae2d8bc5a8e48599aafbd1beaf63ec6a4881e169e40ab81c78436fba6b0b07522552b3d21c15beeb18c2aa504c21256c8f5e6a2e6185f2d4fc84a494ce52f0bc43af138c0446a6f40e43bbb1a24c9970835dcf4d0b3d0803c3215df7de635a841cc514d8f11c4b825ecc614540efab9e1c70bd3aee40226a61d335d650c7c58f58d1ddeeb2b63bc4405ad2e3f4bbf0b5c068ece5f408e33fea997420e0b20c5721324e59960808e9cdf2c58c15749831b5239564311349de99a5a3820b3e963c72b6c3f2ed85d8c9d261418be54eca7692fbfb3fbd14c3b279b777273a7ffe63ab43c5fcc197005139a0b2b06c6d1198aab1346acc981074c21a2d2917434a57bf5c2bac539eab3a955c00b8e86e3f76fa177c86944430ecad662a72035a7282e89c4326ef2345395a942528cbec2c1c2d7d6025a34c773d0613de81737c60c7cd063f5e11797e9267eeb7aebeb73b337384ca66e352f7221b429367a471256fe25ab0a84921a66ef295b1453ac1aa8e794ec971cf63481704d13642404d8787b4646b75272b3ede19482c355db9ab5eedab8632fcbbba5ca2210553c046c398b0a07bdb9e672c40c8b0a02390e82e1bbf4acc7f6a5c29fdeb2d23fbd044d0a5c94107b162f1bbbb25e0433868dda1a3ad727abb94bd5d35ae2c654397e6388d746bcafcfd5847ab40a94f22538d34e253269265305024acd83055893fc838c99a0e653f6b916a300a494902850a67f3637a031c19d6f1071323676f2815327ed73f78742cc888612c8a070603810af5bc343e943a5eb882970153de40f2fbf851adb5a910e1b74896285b43e7cff4276d63627b73cf7ff25d8571fe0b5853dc62d8e7ac789ed6f152332168c4588ecf8fc1d98ebaae5d5761642578a28a8d88822ca04eb26ebb9202bee7b622d7110313d67446e7ce4dc08d061ff0432d303ca1fb36b2a77812258b163e6f7a578b82258b11ebf30b701956d2238eba0da4d35694534dafb642928b6bcb350dc516d85e9adbde3b8da76b53c38bb0450159b2e41e1b0c1a7297054f98d8c43cf8eefcdf83cd8f83cddfed4cdaa4d170be37e41779031d0c1a834da7407e196c42fdc166a3856a76c3672333c211b5cd1dbfb2cb53e1a5bf8ba3c5b0f6b65143b41ced98563eae0b42ab2c3012c11b5e28a72ee57f8f4f66e08a950a27c617442a3111d0243f993230e571e76276787c18a0fd682b2d481d317992a87b176f5cca6940f123fcc59c6d31f84fdfd3f67a6fb6b23190f0cd23da243367b3318d20df91cccf5caedc619c5b814e31a6a83b6db96c56e9e7819d7d1e6f306075debd1ab6ebf6d4883257e061558d4698d562e3962d3b905e50eeb341f2ec773bbfed8c80dbf973a9ea4c0cb38f33adcfe6af962072f0c6010d92bc0241e7f28f356c80548f80b98f1f2d23cb16ac8bff40f28f81630d0aa9b298187526acf4d00d1f052b036b86bde000fd9e95252b762ee09ff8391a3177884359710c7b309e30bc55e30a18e746b87d8295b2c4a6ae75c83c6ed9d2957b1d78a22c3c8c9ad3525f71610e8abd7ce7792a38cccfd3a3f8c16060be15ed8b858af1a857bda7af01c293e3b6d1ab4781f3fd554459d8cbfb60009776df5d28261db9e3901030ce32b60f049b2ccd59d0ce32720242b0acb2eb56f8d452765f08104c498be6cb884f68643cd00815c85f30ae7506b6caa3748ded634da2d6a07357749294dcf288146f035b5b6435b70df4e10e31a8cd11084a0db5557cc5a2ac6b3bd96c5ed2ed5ff6b7ffafeb2bfdc7f3ed3f5ffda125252ab773d505b4562bfaa28d3f8dd1bbb3c4aaba8b32e4b10df94f2d9f727b79b220670b9a4a266c61cb860df1bf6a649e7417b530d07a20bca7c71e15d697c19dc367313b4e73267aa204dbcc81357e845ba13e661176d30f44d126a38565790ea867cf1c73c6d1a2ca2740b1166b60d4b3ec8e3c93e05d8c2f9e3f7f311c0c2e07836430485ecdb4d8ad06fb4ce7636c93e7aec06f7cc3bead6463742fb84dbc5eefed914683bc92ffe9ea4baf1c3641691db0af90821bba2d0bddd2e815b9fe461d0359070e940a27a7fd5e97f4a74c2885273c1b40ae4da324f25ff612f3a27993e6a2a4f988f1f10dd8f9e9707868ce372ee824cd6c1ea321238c8a345b9231bd65092a316e9458829ecccdd64d2734e1507a2f5af8d2377ced38a59507702c820045f0d76e00575f546831f141ab3b072d26b882fa8652ed4181803ed4df612f700e57bad0b075fe481fac6c03304fb0b802f0b4b06cb806f60ad04e6bd38bf3addaa1b6e05d8d2675178cf5096949f70cacb0076b5abcba07c5d8aa3d2000e801ffacf4b09c0d79641d2a3d40bd580f50803dc09f610f8f2e884e065b85edaf46ed3a28ad57115c438df170812f257841ee73f3ead6c2a95daa770c04731599a3b1e3d77f8623501d3d8a45ec096c6ee5b78d5a6a448018430cfe0c7b04256a5233e12436df2498ae84109bec215a14e31f61b778e7af43b47a910a3a0ef10c30ae1af22ec588e594f83dc2ade03b8c08fe0a876414f08f625f378a4cda64bedc7320863d59edd94ab6e52476ab70ca5899620fb122b5afa345b82165d1ce0ee95d7c4bf08b1c5458d7aae8aa333f739e7b9d5fbb1e375f8cc7c0a754ccc266a3b3a36212eee852a5fdb316053e11701f5fea70abd30ef1aace694e9366ee03c9c977e4c57329453c87971203a4f9e2798b74830f1a2258c0f2bc9ce24bd0df682e2581370c8c70dfd242feb33f2ff0d752fef3b7458eff804e6c7f3191ff5cb0b9fce77454ca7f4ef89dfce7908dd40bd6cb6fc91b36242fbeedbef873f79b3f7a538190af259dcd9b8e8c28795cceee615b36ad1a5cd695e394d34f3a1356fec0178568b65a6d623ebd4df345c9828f176cc4f3447ebc52f24eb7e1e95c2ea11a76d75618c16f6fe5dfcdd6551b7abff27c7c4036caf844ca31104a8b82b5bf8ee90369419595b0ac056f53f382cd599e0859574fdd7765088db8155e1c48606dbc8db6c60efeda6b9b31b7028be1a37cca8ab4d41e0acabc039d3d541e139e83b3ad310d81e8993407575c6b02dc9f32a2398643d029c257a0329a4f3a1f0429d87d919625cb0995e890bc2fa119cf31d98e132b8f4362ca2adc564749a6476327ff502a30233cc9384d541afa04f3600e392f45295747796608db4dce58a25bda91a1c90ce89a3168b3373621476e112658b998ab26b95c828cfc8dded10b509ed908a6f7bcb8251473edb387391b8107716c844dc11899a5a03cfe003e24c58b177ffcf3f36f5a55ab6b3da64f04d6e7c059abc007c7cc34b5cb6ed22bd945ab810e59580e6abb70c05ac4c865ef5452f20b4b170e37d5df1a2dcfbf41590a7b3b8317e924cddb842689b517435bca84db50bce9188225a460a862ecbf8c124d9679fe55129c790ac03e0c0b8ad8e1c8eaa63cd52f66c6814f96e854f1dbdbf6cd0ee0baee973449cccfc83dce0c24308a0c748a60f03bb7c12beace18bf993a694c5bf77cb83d00f3b7b382cf5201167746cc5567abfa1d3a53bd5205cdc6a24c21c11e00582a7bba863c96169e1cab17db547597db7c54eb6e0262384e53ba04c762649c96e350d45fce194a6e8d3e6436d36d069b86439ae0bf7c8cf75d6384e0def26b1123e54d05f4b2aed295f70a3806bbfa47dbf8115c70cae3bc3259278a4bedaca34bb2360a3c7d9ca22d5c484388e3bc5d4b3a6dd788099e0ec636a097351aeb0616329229c7be8f783e4e270bd5c6c93edbf2753cda592ff05f1be77e3420c40a3b67826777ac6d7fabbb47504fc92a3849576155680005b474d6c5ef01b81ffcb55ba9a06e3e85dbf727372a977226fe42df67f03986872dcfe1395c695bcd09775f14fee3b9a64f56149eceda9b1394ae7836f031e41b58f9a110f14fcf21586fa4d0ffce5a896a17607f8cb5230cad4a5545979ad42610ac3cd33cf6740c9bc03ea9b9258687d957f1baddd2fa921d16eeafbadd15df5bf19de5bf57c606973201c35b11f5c09dffa738f7575c491ea935d3f48f4279880de9e8361d2f4f735c459634d146a04d46432b24dc6ce0d71b3259d0024dc8756ac861b660c3b44848f39c8dbb26f5f984f3ce24db29ff7474f1eddb9636317fad949937f2b27b83fec9dade00adb094e5b91d9d5062d88cd15c90c166ceb53916a617188d1645c192c1669bdc2b4bad6d79a35039e20d1c10c7e56262fef714e20c2f5231d5b17407daf94289f5c0ac0a851654ac4228c44dc28ba0d678918dd32cd3d59c94ac1d233721067d1b3f767f8e16197b8ef36e43b146724f45d03f056a5b2292ccc962c0740a0d0dff30ecdcf6716e0b7c796934542b5fbd3e3b74f239b2849af06f295228e3bdf78c1c9e42dc17adb571d6840a9296e087890e900bc10a854079f5c821c30c244b851c7a4e4b4995a3728129fdf88c4df93d295806918b4a9fa81a82b007365ae840a23b3b2abc0e9a555ae283d94be91ad206e2aaba9d1a1be708d653d753fc5f7e8881ce832e87ec60a8a36d68e3b28a70a5eb3d5dc2caa8283f4798029b30968d75246ff7fb68e8cac3a361c4e55f0d589d7c1250d4bf1facf77360e824e709530e53f7364081b7d83c2737397b28fbe9e8f646eddc2c53f74674f8849cb423953f16a374b6c9cd221fd1c5645af6202770caf39b36b9a162998faea79cdf8a9bd6c04415af3fb53be594e59e6015085318b0410db0391aea34d985cdfcf4c90d8f52b00f2b01c4ce1110e3e014891a2ac6cf7f8fe6d71405eaced300d69a47abe5876ef350f5e9cc98ecb9fc7177b3bda942b499c44d1a8dd778917e8f2e0f76a4c79c0bd6147c518c589bb0078cbce530582cb2c94cd50895ff1968fa74ba35e71bb6fab17a01c782967b476f93d435757398888512e522b74c22c056ba4caf9c87653d17f3ba0c7650f8b63ce27999e6c6be1e6700c6500620fc8a1c5526a31c66fb0ed37d37472df2f2f98b6fb6e705131009ef0d1db121e7b71813cfd1be41883a40ee48eeea5490ac9aedfbed515f7f2663bec813e5f58fd9c1317fb652a5a9f8729c9724490b88a5ee06c3839eca82d9fcd04e4c0e133ca277f21332d079c19385c742e5724168c0234f0784c99853a1cc3d5f2f097b90ec252db3a5d2afddcc0b3edf063fae1b48464e0b066ee2f9047593922727ec8e657c3ec3b89798994a4b6eca15693cecccd88e05b69de6db729caef31530f9d3fc1030b03fc2b02cd699021dfa3a6a2ff92f03630a3883442ecb39038f44568846aba9a6dd497530f976ac1f5433dbdbd19760c3a2ffe9c8587f964a2eb898a63339cdd66e7d12fbfffa9ac4fe6b12fb7f7d127bcc66be9fa5931c3803cdb8728b9df222fd85e725cd087d484507aaabe34f3202db46f9dd1ff44efabdf32e196c8e585eb242c5e83feebde9cb8f191b97ea13c44d94df80a4079bf2d25bcbed7dfe0e12785a0a42c7e3344b69e9065df91fe6f9d05ee1156e803c611fc481eb305da32df65fa18db2b83396123482e98092d278d2c7b5c68174523b0089ed86dce4185db5e13c7f794ce94f6df2339d72be61ce565b1e45ed09bb27af2f0e0d951962a623c93b68be94d4eae118130315336149f2f193d0d4eaed1ff4af2ffafbfda3830b4d889031ec0013e1cb83c68d5a3cb29fe35fddca6ef065f7b38de7ec7c9d309db931ac0f25457ac712c867f5a6e033b81cadae124299a50f69ee7e90475338e2d2cc0b154912473f9e9cbe3f097194fb8347f1cf078e32b98b259a65ac083fb835ccedcafb9696cb704c6f4ecfdfef9f1f5e9ff7de84236bfcee77b8391a0e10cc75f4b94b1360ca0ee36defede95afd03f116ec371a40ed52f57f3eebb9e391dfdd6f975a507ac38b7b5a24e76c2c25ea08367d65e00453a9a523d13439a59c3b8815bfdeb21977aa84069b2ebe22b2bb375403e5d262f4ea8a7cfce86f5af775cdd7e9da9b8dff7d37168d169cf2577aec479b213bac6da88aa34ded2df37157110bc0b9eb7acd9cefaa325e28cf6c8089cabb65f0f6c953519ef01c1653af36dea64c98f1b63ab39c0f1009284b455955fa0575f1dea24da59df85668df0afd431c7d827548735aceb296cd6226ece531985ce0c8af9ebd5962fbde0b90d70c065749f35505b1b515032c27553f1ab2265aab805dcc56de6a5c45967a458fc598a89da39c6194529da12bb8f0003fe2f98896f126955ea26a389cb19a3f0eb70619ee831c828eb6aa9ddba3d19b5d3f3c834235535451b884b0e11d7fa883d8da221b4db33cf2a7f9011530857ad31ffdd6963f1db7a68f9dad2d1f5d58b3126d31711948ad935965c37a6e1d95e73eb525f7c172764cd36c5130656a54309a6cf33c5b7af15d6cb3e045ad42e3a04ab2838e8611967ba7e252133c1806806b75406e0d28afdcba637b3322da223fb5d6ed9e21bce2b6b76c799c821786a34d5365532ace3037db239623b6be5263f491712b7e6a93df85a6970e1b67ff58d0ac49dbc479a11b53516e278ccdb7a19480c6adf341c8eb7ce785e6da14ae11c396cd21bb60ae9b3cd03910a7b2022581e5b1fa3e74bf074f13c5bef50e68523759192d8ad74ed9d02d4b9dbf7117fbb9dd3cbe069d801d74f1dad933c62586baf1c0752355bab14786aad8a0c10dd36bf88be42d46e5b9bd0d4bf27cb7e23cb7a156e332bd6a9321843d0fc11a520f1e1f62c170cdf436f6d4f422c08035d092494c53d70cfa90966e4e3c5947627c18d67174b40867630f2b47bbb3d5b6b6826a540a26fd74c69a2d491243fbd3192a8681a80c568561b7c3c57a95011bb3793d160d6f634f37a91db6aebab555a94aad85af1abbfdbd5b397bd5e66f525d6688cd375fab509b6d3a6cada6bbf5a84e3bc64a86826668439b65208a07782a657912f208239c41646d825767a8a3ae32a682b22b80344de0c5c40b7278fa56674115f6514a39bdbbbc4dee53cf545fb1386035d5ef767d9057edd60d0038fad370b74a088032c9d5aef97dce0af4b3e8e86b89b7ed2172bb449656b7750985c3b42ce81d2b40c30c150c821a04a1763c20eaa34ef52b6c98b98241c8e0917bfaaaa7e5148d6273c6129690fba9ca014c0b1dab0e9fae4dd7a4295bc926e594a505812e45cb836ba6093d74ae45c90b08a40956da6816006a5348775b080c915cb853b4f082879d98b512645bce545e2227fa8f8a933f641a932c2154908530d45ae1ba526e927c57c94f759cd7db072b28fdb1633494534c18474f38a1407aea34dd002a56d6efd16d18155cec690f9f58d20b4f7d47a8d301ec6d15652461edb6b8effa0e5f3a3adad1d616f13e6817607897fe880ee729cf77528862805573e580b6b747b65fbef8e3b7fff5f2bf5e7eebbaccefec40dc7708c85a25ecb6ba138e0a2aa64e9361c1ef85a4b109041e9c82865d47d0869e057ada4a5255c3155d07c0685af019db11744c8bb44b069be7349fa0a9c160b34d069b6fe9433a5bcc403585d93789487fc1370cb9a9069b0eb4715ab0317f90708e542e7203aae49ccc16a3293108f29ab264c2643ba7ebd345a95219c84ee774c46c0bedb02071d66cbca7a0b5ef4688d55ac663debc18763b8db65e26705ff656b715c6b6ab9c1660c08fdb135b927ba67727c8a469c9b225b9cdf93da14315ae5330bb3fd0ce83299f2b0ccf2ac5ee7a3237cff06fa18aa36ad8f04b3af76c38a7a3db339e2dc7a993201a9d7364152b862b0fd800369c296a2812a3a03c7072ab9b4c1beeb1b6a11a80eab860798b041fb4450ea9b5f1d5a14c079bcad762d3b1ec752d0d9d2478a0f8ed7a8991fca8fcda92050793458d3ed71952facf184efad9c35124b2724c01c859943e4c2e219f4763e55d459795eb607c78c63768b0797dcd04929319a2b21d55fadac0a7ed3a00a5b34355236949492405b70b83d8f8682c88d03c1c23853cba945573d588ed7805d141e0b3e1076db501bdc65c31861ff4f957988c376841e5c5162602e222105445b184cc0b364e1f58a28c425167380812d9e03b96cb49944411a0166f2210aaa070e3fcebe004dfed9197f274733307c0e96619c32baf1339b6d094db464718a70f3a1e97c25ab79a9440550f69e3d74f6d622771d9d8be67c3dbb4dc6eb449637bc67f813f1a5741d413ec341c8a9e7230601c93634d5ce1cceaafcb864271e3aafe01f6dfc4dcc6da026abdd1fb34cbdef2456e98d8ce0e39405bbd5478619c2787176fce48c989725e256231dc1ea99ca30313471d1da0abad6b1eef9c94b62a172e806879f1d6254cedee0d3a46f3c590a663652b61a05e91350db04880740f07e76cc4d23b8663cad9033e5a7d314e7676c83b81afbb664c2db29827b4447f4f968b45c1d48cd0e34c9414d776c40ab01091721404a3439866020a0c043a01d07ea0c0272f8599769b5890be47cc5a6b415ea9af5d9b0c1f98dfeb344fe42d6db0290735d8941b209d49c4d1bc842b2ce4df046b63b91d58a1116bac83fde55518e80cd33cc19cd511e36d7799df410377a6f24f1779cea5027d76d89d4e2c6c4975d7af70e1a21aa6beeb10e35c35379dba857a95cc30dcc2eb6b107eb5dc7d91d3b998f2f24d46277e70de55b5f5b826acd49f5eb3312f98c285996165d53f91718ad1597e8d4cc7b48b4dc740325bcf280dc0f609ee4528388fdebfdd19bd3f3fdb19bd7f675c88874cd289cd728519dff62185f5584e5fedb942991e83b3005c1884b205b271f161eb2802aaf2bdcef5b506e4e40353b70f8be55a66f139ed11f36bb674ddf89544d73c081ea8957799790535e5c143a812e46dd58f1fc986e3762d608542e8d5f46a8d032aafb5d9d20c492516b7ef98d530a04ac362c756c78802eb7947ed6e875a43cd7586f78a7d050f2a04b308ca79998193fdb32301e6908a9b495977910b3a66834d92a563365a8e3226c83ddcde8768f58e7669104c029c78d231a45440a33ec1dc7612b4961406be5310c4a1be874b26f87c9b7b7fb6d43e3a8467524e009516bb670569bef8b6f3cdb316b943eb45504d61f26cd72215e40843f32acbba61ce5e0d97b85756448cfb5506959c846abdaa1b2f30e8324b151d6aa3dadecb8912edf3ddc9c5fe9bdef597765d0ba6125f71f5ac5dc43e3a82c82a346aa17d1e2abe783c8f017d227ed40e7e6c241ed93522103e0f1b9fd57b3da0cadc23b4b5e1c4bca94774b496338c0de316e1882d66446aa496e93ac65712a22dc8e9cc7d5ecbd9fdfe3c55cdd767dd152bcd46adb8d96a902e1447c5925663d73d7bd4b9f30e18b1ca38e771637906a9fcb2c890410eb0e7910eb351e1f59dc1205751357dac3d230db2104c40883b071df2fb7051129a096e9f2ea4886f33d25706d895405612c12b8ce1a722e757ea75490322ee35d7a09428a84af52ac40855c5613915359406a2d1a6dd7716c73e6b146cc6ef58d221c78c820eaa60467f9a0a2dc341d0edae5a948676a84567035407834bd8b659af6dd3d936b889b93e9228747eb7475e7cdb796955c7e6c6062611b5c6a5fa58df1784c2a14c0b89843698ff8fdebfc53884efcfcfd086fe8edfe26d4fd299026dc6a6619dc0c15d39b09186d3492e9152111bd231c1db267b4845296219809fbc3d0dcb587d4e47b405bb2bdbf9274bfd457bed45aa61128f2ccebbc89a7ce662d0d2b684a5b878fd6ec54a3c2ea7d62cc4ea53f2304d568bb971495d62d2c8e9b5fc36e49730e984c33aa0284caa0369b608cffd30505517d547cefbd80d7d377294d9d9efad44ceee8a7e5d18550d8129d5aaf3e8e5b88d4eb31a8bfe831f48e3f63442df6846f8a2808fdba8b150f7dc5da7e19122b9b9bc465122f4ed1d35bf2527499ae8d6e5942f26d38ed3fa146e05868a958f35f80440df7af9c18fde0e0363f83b70de33785897fda9b7b5212fa7a87c6ac3a937a2f2da03efe210d4d5b8dee09d66043ecb834d0f45caa545f5a16f3bb2a1dcf17fea3cd891c3313003bdea90114a069b12efca51c124850d868c277138b0c1668d46243e9c092bb70dd67104e635db093ae0767dc1031c683f3bb24a73a3f517092b593193fbcaf3ae33fabb407fb30ae4abd51aa0ae4fb1bbf6f923247c34a84157ea38edeb614573bf47aed98edb30f9d5b221e5cc5475a7f9f6ab8fdf571fbf7fbd8f1faaa1c91f0815a414593abc7e8116c1834df839d8dc359540d585ce14aa0a7c911728e1d60360284da87ab03ddd2abf92037c2d6893c3a38bb3e3fd9f4ff6dff6aecfce7b6f8efe4e3ee9769dce4ea7b333e2b319cffde647239e7bf5d211cfe13f7e3d0c2f98fec27e64cb033e1b72a7d1ce9497b76c79460bc10a68062e516c29819b94c1342bbb64b079cb96db985d5bb1d1d12cd1dfe50025d655415964b6242f0b9ea9928465ac64ba0c7fe9227e9fcb025a14fc7e5bfe5205e02ea99bb8be93191b97b685e3413963258d8f0c38886da33c2ca1484cd3b19927fc50058bb96db098a33fa6369b3638dd4357d1bfa232d47b716b5e432044fdca8024d6b956610a4553c368135571370887a22bf89150ae813deda946decb0c7e0aa363a8c81e1015d78d1702803af8eef223f302e9353140429eb087d0096504617534a9d87805c458bed25189e010a52ad771c21e421b1c84656e9da8c344f3156519d91c6cde0e7d230d623763576fa5ce8fbd9f7ddbe9ae1987fefc49a5a4e97e4e3f76ff37dd2e4dff6f4f0f8fde1cf5ceaf7fecfddc5a6324b121487c7afd4bf474e1bfa665ab4d069b448e53f93be8f3b8baa26fd33c9dd1ecb759d8f882ddb2650d3a57cc25c44e482476ae95e969d30145c54606d1fbc4f140401cc482e4aa4d44bdd7bd7664d5e516a31df3d3ad823b1f8a6103dba219621d0bd58faa6575853537014e98d3259a44ef962dddfc892f701d3a257f379fb3e2800a7943eb2aff01442480d5235382638548bac46707c133707cd38839cdbd5df3e89eb93e387dfbfab46d4b9559ee272fcfe06eb0b0ae0a732f766e3e93a79aae0e079a19b9fe2a2553f4e9ec04fe554656b527a59455ad1d13decf9bd63cc9b9b43bbeea03d364b0e93c6129aff5b4640505b726a8aac28f6f9a1556bdb8345bedd859111d830c2c8d1cb9dc33557a2a503efc501979746e7cf8c1cb032eeb38b14d871fe0605253b7af8faf9c994b92ab998377b770078cd78bff934222c8ff53325b7d640490db1a9d9dda1a0dedbabdfff76b2989ff7c7ddc3bf9beff03d9232f9e3b65e7bd8377e717473ff5ae0f7b6750fcd28972f04ee0ad615ea4b9d2434048690c53a82d8f6d4482bab04f3aa57b24d9a19be64b25f7babcaa4b99e855138ce5f041dbe888fb142cbd357d04a9332197a376cced06741e4da1690e1a6c6a946d61632f47f160f3d28c7ab0a97d4a6d1579625fc96dde250d53f3aa11f4a5fccac29e100d680a59870c03492d4308c34b2c1ab78baaed665eb0bb942f44b6bc08b18f719caac526f0955a7cc9069c046c26e7a54d17e66e798c6da7618179b14669acb336b9846eae5ceb31df3c11148aee867993a36329eea23779b8f8981eca6f10373c038dd0efde64fcfe4dfaf09635ffb2f7bcf3e7e79de72d57ae4250305cb2178ec44bd08c96fc5ab994e66873ee58da7bce3b2e5c39bc30be6e784e78e3709365bcf28aba7e223e5b12d29c92d214dbb64faf7e3ea5d5a9d19d3a31f0a18bac4ba675adfca323a4fd7ab257bef711365313d31deb7bc1be6bd3f46ba2fff553e591d876d73129c1228cbaba7f1ae419b84763de103ad103aae68154a642dae3e8d17ccdb2fe9da2579718b003e57e545d2d2b9fda8c708e2db01769b0f12b14db518539c63eadce720b0902236b659207ae5e87cb6aa2cccf5e07185015e1193847bca5e5545e039ae1b9ac32ae6aef48636a53b0194d95359837916d09d1544b4b3613f5e97a55725e9607e979652b37392dae2bf403bebc0e3e2bb65ccec8e4b52306b4d1e974c80b7ce2959f1badd02ec302f94b1cc46053c2b0e7a86900175f03590c365bb1fd8edb02e1f91415499bec9e017af3981d5f3d3214f92b96522b89b5aeaa465115602b4dd682da352635ea5944895a8f80f42bc78580283331f828c100f5b13c44d8ca4d453ed069ac76826ce457bfc32f2eb6a84ac0745af1be5713086f1c9119ebecc566c53c4b6865f232089f5eb1452c928b97ebd21e4cd5e00c9395d139ff5d2f277a3667101952c595c6d3013c6287191fddead036704d91d39a5370642de8bd4e402dd2599a493ae20a39e3316398f6a6213c286d72b62ca73c6f0892f091825c16e98cf0829c2f86cb86809af3eb292b58c243770bc84d3f530fda8c7c5fd0f9f4bf8fe10da121c86bd913d22c72bf9636daa0d984176939356968d4edc66c9084252c2f2b000a7a8f3fadeb40ef612e17d8c74e43587c60c44d2929cf592ea1426e5eeb5401bfc81e31b055eadf9dc1a0180cf28f97607a535ced4c506c3c07231b82cf050037c7f70f5c129a650ae4705192715a88b2638f2a6c7584e300d1d899e3918505398685bb61bd961bde51eb1d482fd48104738c47e686b2cbf48aec993f3b4292b7d749908fdbce3c6314fc0c201279415370991f6634bf35981db87976dca190bf90e7100649bc960db0ecf2b9139b066bc3db40d33b76d686e6d5d8262f2ac0757c71332df50eade85fbd23e222ca934d87c77ff7ecf9f3e7fb667a8a1b214c3fb733c0fd6baa5e8a9debbb7b02ac5c79e774f449c631057edaba6b5a7756ddd196a61abe5addf7d3b464e0428ce9ae3d46ae2bef21281377c2aa26b5933e78fbdea673c266f372891d07178e0a71bbc90a554fdf7958f03af29083d583d00b15e0cfbdabdbb060f436121fab92c1203ac657e439e97a6515d9a78a519b28de8a911e914368ecb2d044bcb505d9d661cbca7393406e45f7cb6050369cbcde2a9db23f81b43232bd6fec78344dc7872cbbb2c3f2f58367a0c70a0e29751ae2b2b044154a81181ed313e4232e47015811aed2213ff07b76c78a3658fffbdd408411819bf4de8c59c5b30088daf9735bc26a577bb61d290f0138f5d04acb42ac264d73f361a5de81d50c9d43dd9322e21ffa17f242e55e553e9c2fae2a7e5f5e6197341abbf6cec9c6ac78bbc8ca749eb16375a4453a79e977f27255272f6527d6791f43586172f1636424a87a0b927b43c88617a6c9948a63c4f205ac8a6a75f9dc2366ff9b246717405f11c47f2f78692160ef0ea3578d375dbca479b92f42c46c78f3f8f8b1dac7c78f319c3a7747816ec18d06f0b83770c72394cc6475a03245a2ff00702587f8b30be588a7c94e539555f245860bf1ddbc016f6d855875e364c2c89e0116c1c4d7213c9f2be88a2e65be526bea645dcf31c97d05588b748dd261d504ea8616bb530e36e5ffc98eb0b2330e285143190c5445b48dc6bfd59da04e514e47e50fd44927a11379aa9f2b43a3ffe757b3a9af6653ffbf319b822aea1d396623b5a37cb07d1ba8752dac20a101b6552187d943f925b63db27dad5d8f2cfca7daf4689f5c1b414d803d6d5e9edeb1628c1e2b618ac4923d94aa569700fb725e64356459e99c8d5d0fc17abb0c39cf4edc245bfb1944cc33a09f85b235f7cc0156c0ab9a787f06c0478d46d42a55b32e29badc738d1e9a6063f2eba736b9a697da02a2dffb7bfffaf4a7def99be3d3f7d7bde3e3a3b38ba38b2bcf18a5c3b22c9d8bf417269bb6da6e91359b70ee49d743bf7d492781c54a1fbf480a1b824002b1db9ec3f36592dec15bfcf5f0718b0f056785c107b3b634051b3b51730a366e5e176c1c7ba20a694bd6b3b71f4ba16909d1590c89776274ad2d5cb08643d56e568081363a7171aba31c796b7b4d5791cc6205dd817ad19b58e0b6a7e71f8b2c9cb3fb8bf576718c704073ea74dd11a38267d9fb340181db2b1a65293862244efc518f1778b59d129f3ff8611af4f023fb6d3d5b9e3e18ffbb6f46f28b63c373b628c238c9c68e07b877adbdf957c1e9abe0f45570fa2a387d159cbe0a4e5f05a7af82d357c1e9abe0f45570fa2a38fdcf084e98893b750269c9451560c54058ce1793a9caadcd4429d44bd09091f9a260d992947451c23e1cd1ac83061b241525cd870b13cc2097bbdae6907bbd284b9e7f5ff0c5fc4b2435074cadc0e6d4698636495f20b21996efc0ff4d9c7f68964e721461c935ed989f4ff30f522178af6947fef58877909b048416130516fe748aee5851ca25c652fdcba9302d6799895a68d6aa60a26c5ed336b91c6c9ac9605c6e3370fc29478a7fa971e10f1807fea93b1d6c5ef907fdd02ec2414c9ed322dceb77fdfee9c9f5f7e7a7efcedaa409c21748794323e5bd393a3e96321de0cd2d38de3fffbe07c6218018b7e8edd1c9d1db7d68a651ea16ffd43bef1f1d60b9c11bb91eb6acf71ed5393be143d320aae5ba29ade30e051261dbc13f15229de410dcd62c505c06ac22514909ad7544ada1272db8bb623da1c169e1cb0e4ec19a2284cb5de271a6751c631b4eda0d7d08f3c13c0b61924b27c325d67829b70358b4f0f9395655c9269b58c16960ccc2f46bb7939cd82f6bd4b65ad59f5f338c841d6f645db07cf72b3efce062e7157cef6abad17e1ef2ab5ef64ff100d10a4dfa8b2258155b4332d47082bae6ee53a2239343563238491993f49882887333c9f890663778fa9df084753ea87cb91054b060ec7ba861a38d4dd46f3f0193fa6afeeaa079285cc7d49fa6ac9aedd5f62347abce693085d44e55d7f257e70304af53e5a25c0cdfc84bbea964bea88af5d35668bae93847aeacd2338854b33598f5a7ab3f6f6d910dbda2394f98ce2ca3bead1c03ae5d650866b7b9e3b146b63a93803f1ef5550e4791843b1a1353de190cc486e173c8cf7000d2cedf2e08880d20e0dff894e58d128b2caa9c516f6d39bf2c59ee79b3510379bd48b3723b55ae5a6e92084f0e1a8f414cf03b7d05d4d151a57e26e11d073406f471602b29980be7e62124dfc5dc1d426597b8c97842c5f44647be758794d332bd6347c20c4dfdf14afdd14945cdb8d4756dca46b71039ec06667e2365494a86d8d8dc4dfe8a26aff8f78ccd86ac381d936b5596cabbd31f3bdfe06586fc75444b36e1c5921cd37c829fe6b4a033f2eb1f3e2904f78d5170a902e4e03de1af3af8fdaf43ce3346f34fcab251901bc9f16f6a86da4697811b50b4dd2858ec814a666566716db0216fcd0a43cd972d7559dcd9217b7fd1a1fca32ddea579f95fe85012b4827ebdc4cba95d936091c0ea4d31872afbd1ed1ce603fe16efd372ca17e50f3c736e173b9522f772010ec4c38cf539a6ec33ad8202b74dcef323557a312f184d6cab4a11b4abb354b92ef901cfc56226eb1b271cfff4aa8c1eab7cfc180edd7caf8cc158bcd48ea3a613e3fee3fb9fc9b2b84df27370c1790981b8ef89a96d3c72c072d57e08ed95655b3457a64561cd5643973559cdb85bac9a568821f9db9955e8439ee6eae853153f7e7ccc3703eba12bb7f6c9d8d7972b7050554346044a32c1368f2d48640dd595d104a693870506a71b6c1ee577344b1342cb92cde62584f546cacc79beadd160b2a4a1eea7ce06ea4f5f35525f3552ffbb3552eb6a9aa0cae1e95bafd676c2675faa9382363dcc22166b8209c6bef8f9cfb44dc51bcd1be26d16659a611b47669472807ba93ee34549b366eb86ec9f1d6959cb440985389caee034829897074e53b4a8d543696af47ae05b2a3202a65e3f383d8157a6fecf673d93f77e982d181890628b037b63371cb0ae8a4956e43d6c98e4411b56ef659ddc74114408c1dc3f9b11573413ec13d7b573767adedf3f36333838debfb8b886d5bbe89f1f9d7c5fe751edca902a63991526fbbe563261a5e433021cbc46f89201fb86146c9b96aab09cb219843ae423385a3a439e2c3b3aba04494bccdf28f9a60e3b09b9dc6677b20f49ffbf6c43ae3848952e777192d28c4f445b5e29e4d6156dc2ca51a78540f7f3a54a44003a5e08a689608115ab548d181e7308314be774029996a00a53e1a121a4b3642faa3ecf233330d4a629ecf395a708a1566faaa9ff5ff9d43da5021e9759d235f2aff34c55f7568d435d53fbbab3434ef36ca992bd901badceba215c1e8f811e7c4a0599e190089c8b2a512261f95d5a7050d9c9b309b328b8392dd3d98c2529858c7d8a34cd824b1a2be57519e23853b9d0f86d0ab944b2f4969119a362818e5705b9a18b92bfe1a385b8e9981ee47993f17c026e368a62aaeff4694e742c6be0e71f041cd3091f891d48829389ceb49c65ffc124f96f0f17c36196e6936d293a2d26d36d55c7728f089f93cb8bfc4353ac92f2ec9bed2664fd701e77ed5a47988bb54f08d398bacacf909736235a4aadba840a3ad9ade7c2b75b43446b9a3c406e13b763bd911f7d2aae0ecc244e323a3280a4b5bbad4a821fdb9bdc792c4f0ee4b49bf553f65f7aa31bcfc93ce7e97d797ea0700a5583682515a2f0c243a7a2b390d2f43063e7b0ef4eb8e62f4f5e8b88b988091aebee72f5bc6f1f4be4340824b401a2755229076ffefe9a3887a4e9c7beb900138c1a7904f3f78062b56329416070fa6604b40d71028174f793041f0756815b6d70f2e97f62c920be763e5bbd83eaf11e24e15e396a62f9c2027b344f04fbe5094fd88a9de1a58a8fa058add39a938f6ee0fae7407bfaefd9433ffab4a3fbb71bdf92124d12f3d285e298c9d1e91150a46d3ddd046b34528afbeaeaacdb8782d0a99359eb044503717725eae3441b47bd432dd8e81aa5828bc5501ecf4739689cb0d7a6622c7f2098bbd65016485d9a68e27135cdb39c4459fc31adfe9c0a66bade6b1a56560f69aaa5427c7f3987e7d1c88dc3adadb42cfa41f7d780ecba95137fa372e2bff2055895994fcfc92c2c76b8466c44b5949ffc87ad80ee2cb585ac18d887c3b70d5bf799f960d3b9ef789b4b49b7b12e547004888c6ac3c27cd5197dd519fd9bea8c7edb70e31717fd82e62295036c13fbb77aa3f7154ea529de9e187300036b9ce6c9e1e95b799a870d7f2b4dd58f6c196f70cb96bfa1964ad0313bc244318f69a94c1bcd029dfa7864a87f1c33f8d33b566474f9252a0205a25647a0ca9b2a93ae3a6056a80cfc4c0f7ea3bad8e0e31f202748215c4d81730e391955f451bdd254791491ca2c4d41db4ad88b605070e4a0800177224fba80233d945ab15645668add7855f8150a69474d365158bc921346475382e0b4a208a331a45946e8a2e4330af645d9920886efe0742e515da4b464ba879d1db927c99ce33e2333b99b2cdf98729e7420c1499bcca84a646465d4311f2d04705fc1c93d23239a3b80cb82ceb10a49739126a0716bdea594dcb07ccc8b11434546cb448cd1b492b0112f68c9128d541dbb4c614f9ecdf86c04c28592b4329e1b410b6aae11411dea85d2aeb5c63afda9777ebcff330a47277d379c7a49874779c21ebae4b959aefa88ee95e0d4d1d0f14177066e1b67def282db83e5e075d47490109e9fce998add774d3be667a4124bdc3a2c09aa1c645c3870d4cf48250b077f79552c2b3f5c14daeae99a76aadf6b9a592b47ff5b18163e86fee0d489ad81e8067d39c3e0792f2f590176fa3144aa7296744904873cef3d8014d22531ec6131b6ade0ad4c678c2fca6e047d0e6df8bba52e123f26547a4d47b749c1e76ff942b0437e9f7b1c8b0571f85792d85081d217836bdaf13e799547343f5d9492091c64e9e81666aa8c5623255e5397576013f74b8c103d3a0c831d45baf3f8b03d8c9b0a429bb0a86e40827387e281d9d9418609f9d5cded878ecaf44ed3a5143551379590212443234308029d4f543e47396389530b161703aa419f47c058f5f11b1da633216f7d3a3c3754e04c314e37876a0680b4cfa7992f208354c8ad8595f1ef7596de8e0bb4da7d5a4c983ce859a7843fbd2af0d6034c9dec6991a6c3e72cbf9005268c0f4ccee7c5a980511fe5fd692a54cbd3e2908911cb130aa245151e8694b39db63a82cf981308f79a7a2405b3c8d84c677bf0a51730debf91e560bde41fd47c6cb62bd9d20f66f05c3192e386c7851ce507d3c8a3659543535e13314a0fd559d2079b78b80f36a14faea669e9cfb06618fbd616fcab872f9acebab4d0ce5016a7e282ce18c8616e054bdfad605f2bf29097f8188d49c08f2d52b87f475494b0173964d31e9a34d9a940fb3034be42ca7a0a03797c9b696617df6672bed7aec798cb21b7b6eac45b47d1b111afe2ac8ada1fad1029f302a66b6d6f9049a91472a42949581e5b0264d06d745943729cd3096b5960aca360690b648b2359284a3e3fd24f6767eaa934e579d35df92731c47ab4ffc8965f76168e68de13233a87242a1e53f33f3ff5b4629dfb693ac2d0d1f232dae95d1cec9ff51499fbb0d739c5dc15540f98db46c3c0001c04cdb6eb7941c7b448097b484b41c68b2c13a382b1bce5aec18a95ac417becc1b777c70a949eba7825546cde42202b9e7e357b5dfbed974f2199e006c93929181592ff71fd184cf3253cc1125a42c0d2744cee59431ed00c23c02eb225c9e82fcbf0e102c62d0b6097f9af9c7682ab1f3a7dc7d5dadc404a61ac284dbf724664db7ae7a085b0062ad7b4637e3a55aac72e1051a8b9294197ac737e622c41b4c124fade56c8a695dcba391352fe81aac279d286fbe40cd269f22ca373c1ec09068fe57afa10bd96e7aab73614b23b562c21f436821832725fd0f95cbddd9b5eec2ccc1dba9973bc4380e715cd327ecf9256c77314575dbf4fcba98520d9b54296be91ea6752886f1fbc43879a037975bcd4969b353d741639c67d0d2168a9bed9723dca0d775fe909a5ee9c354e50fa467a7ad63bb932338c56393a393e3a01bfa80d4b48e8dc1475782f0312da8b3babfbb59cdb9b5c4f5ae033b52158f7961f4cdfd6d1af0a5ded386f8a78ae8e02e530ed1d0fbe4f7ca894ea048293beb45797d17f4c33b8aa3285183e345ee38a048709cdfdc7342f65987dbaa9d40fa5bf4fed70a15aab0d3282da51a6e6bb885559f7132c2e9c19206d866fd74a207d9f66992c8ebfdbae184224a3b81d4ace1e4adfdea0deaec23ddfea0e06b043d730fdf3aff5049cad6519a193e6b87dd9536b4d948268d10c48022c6162a0ff258bb5d2c460d5f851c4408b43029e258b61968ef02986c15d4097d8c8d5f2f78ed65f5647562398ae199e04d4bfd93d5d0a9230d90ca5ed19cdd3f92243355ac931ebb4d220146c4ed3bcc4cc5928e8a10c4e3e2c66739842f09c2e0f6d26cafd3c9d01c43705f56ea17e8a217ba72cd8185efd86cc098f3b64e53d638ef9191acde970e84ada40294be31301fbaa910ae03427f26a410a5a304c082e3f1df5aa77a2aa5adf86cbae51c4383536ae57116960c1e5e959500f006badee9f6f7982b6bf8fddb6e2c3aa5e712bc0c3db1933e82b6ea554b5283992cc940a324d275306217f7991964b79ddc7f0d3e80b36caf87d2e7c758301609f486ae6f28f052b96172c83840ecdc1e6a5697a858fcd3e6014c78aa7832de910f43015a8906e271c6ed538052487a05a077e78f74f879305438d83f42bc5008637a2c7f87944bcfb9c28025a683ef06f0395cf91266b2876a7543883bba61de7c3ca4b84abe4fe9ca781b51e06ec39e78e13f22104fbfa9ff778a0f2ca5e5f6b143ad2e6ba0afea73bf8fbebf5f8335828cbbfde3ff8f1f0fcf4ac5da59f00b86323e6bd6a18d5b22749579e1fa20f6aae59544c99873905b40911eea6d62362a97fc15eb5f142e920beeb0ccb4673c09e3c698f535132b010db040600cb53a3dc5313dff983bc841fd079b9289835202b16e6aaf4484733894995a83cd619a0cdbd7619fd734c27edd4f394e15525b8d681db3de63408f22c12a7bd98075aef3679111e74b6b64d6352d18467549428345b994acf67c2ca6353dcac9e1395b611456ac0e0ed119d24b58b5d855bbff2f8bff8fa6b1eb7607547481c5de3342b59e1c86e3c6662c0d56cadf6676bcb7c7438a5a36c8fa7b0f3f0029e29156be6981ea1aa1d5c7b43aa63a4e6147c8cb42dad3e4261eb6eee1a7a5bb9ea752beeaeb659603b4ec84857dd740eab349e21e1a5ea31e5f8a71a8035bb61ad9df008db7b221a8281d5bef038751c3a5e73ec4fe2a475430b040da724a6e731d63dc6aa478ae360225bb9bfa9cc4beaed8e0c59c6efdd17b7ca14830de9da84c776637413ae6763ac6a2b2363d3366a376ca8d453dc79224597fcaac345561e39bc56313af02ab814ec1538cbe47d47c1d00faa9ad15f965ea5aaacd625df3c7f5e298ddaf6a85a861aac9bcd270f7b2e2f339935a3fc26ce0f15afaf80bbacbe433b0962bc3b890f62cd904bfa30ae0ddcf85f5f4d9ebf9a3cffef36795ec394f99c89f417763a04122d6c35f9759babcfdb739e2d3198dde7192effcbcc8a95eb390cff82e582175f622decc2a93519762bfd539d8b99d1313977402cd20ba502aff88bea88d12c2f8b9489aac2c07966bff63c2411549be896bb9ed6a7fe19dbc5cafa6fd9732a84f6d3d54fd87cac9f61e119caeb36789ee4b9c26624b09f3d0e6a86f69480e00adfbe1beb13e0aff5ae11ebc95d1b2c3903df2d01d4659f2afcc2a78d6fcdb707455d52b41af13c67a3b2e6f941d1a1f11357740cf9fdb4569ce60949d23144fd52cc0a0cbf1685fc902d1528d5a9b114ef9033b9a96f403aba315b08e2df40324ab5654618c20bf2c7c233848257181e872ff6f605a40649fe7278e88131788f52f0c50970ee6c3b55e424dd0b9e1699ef3f3d61a54b6cb68f8da6aea983fbf031d17a775f4217259fa345019a84a463101dbc18e48f2e2ea975fe06331ff30ea1c6ad3fc84b8d8f2018d23f1629442999a4772cc7b86ebac5f6b61cdd54d9ad29d7e7e602e5080095b4e2030af4663b3b64943179abd64c324b05f42a59a5e72fbd72f61250c130b09b19a5095407873ec4042ed3190bfc6eed62aabfcc507776ecb074823a29c6a4c08b132fe602c4f8c0da122bcee8857d0bf327a0fed0eb527be50ed8856f3086dea1d72fecf03bf8a96726a3ababaca6a645ec8d213e42ddc4d513391deb3f2b3dd7eb5f6a76b0dd4935ccad587ab4b300a70157d401f1ee5e1b5b89ae53f945878c329e2ba24d73c18a925078614ca54c779fb22c59021f925b6fce8a312f66342f3b0e90971dc27230b7463f18266f103cbbc3e49290df70a1bcfd73399ea6dcf98c26903b3c5f92bf5dfc1d7b540ca1d5090e7bd739c83501fe4446b41c4d037b5dc939eec17e88405423493b2e3a52418a452e856de5a1ce12fb6a1a765da7bdf6166bbdcbbadbc48fafeb96ac79dbf324c6da2bdf572fd7af57beffe557be7fbf58fd9e2f2804a36aeb3f8ef292151438f48f699e044ea25045ffeb664be23c2bd32f0ac3af40d4e74cc2f27fea754f4d6ccde44638a0df227dd01758eaa6a8d2c5e77174cd704e739c4ff07e1f7e6dbbaf3ca25c1d7d5f0f0163e9638ff87708b6125f3f9a24c9e4453a3d3dee1f9d59f749048df118f0ef56bb32a135a2d91b02af3e76eb79a73ecd776bf642e787d39f7ae7d7fdfdf3ef7bfdebd393e39fd5a9dab678736d4cadb6dacfb315514cfb157cd5b35f56d1285757b99a8829b0cf5c65bbf9d9c99becdef1933769e58535690d520245b69171297e2cd40f76591579dd62075edc26508f60cdbc44585b893fa66df4c1628aebc2053b64195d768956f443c1e99ce5eafb8bc813807d2078f1fcf9208c77a23a5e371f92e2cf5f53227d15b3fe3789593b3b92d7caa31b32d1c3151135cbb2682ffa3f4c0e24e937bf6345290805df22078272ea50eb3ee68bc204291072b12452e773b83182a3c6b854a3bbd95641fcd5c631cc67c2ca33cd434c3f7ed070f3d944f1d91e6cb62e9f5f61560b39621d325e726fc9c50c9b4b05c9d8b8946b01db4c47840d87918a9f54e617331a9126cc1fc8e5605302c34319c00d36af8ced0dd647239bc8c8a68cf0398c8b99e1d58d66c2ca535537361c719fc2cdd6f944c0fa56cad07c3ed8ec0617d5c1e69097a57ac5f0aae37caaf5d5ecc2ea1a4cb501f46baaeb0424956ad89f09c054c5d1c1c50531d976c82d5bdef3425ec18b828939cf13a58d401d9ba58c7a44ee6b6015f202535a594af6ea68ec857ee3d52887fa21ce45498b2816cd6cbdea2c4fd641792d0e474c4a4f0e1689ddec339ea4e39415f16dae37f85b558b4c59265b197c951c8e8205d02800845373cc8bd9362fd2499a9321158a671605bfb73bad7601fa1ac229006826b4a4ff1f7b7fc2dec68d2c0aa07f05f63d639211492dce4a47f1916d39d68d2ce949723273251dab498262c7cd06a7bb298989fd7efbfb5055000a6834253999e5be3bf3cd178b68a0b0a3f62ab6038c22e16f81aed5773b46aba20914f8029d0786e2a1963d72a74d671df13c7ac9dc774d91e8ffaf0567c85618347df05a36f780bbe78977e140ea899da4bfc993693ad1dc476dba9455f28d040a635d6c3d0b5a9b466a3229655562e367e83b9d030960ae15064f9e51d6951b4c99804169749b2e46b429251d0a34031e2e8ab1cc9d53e04c5d4b610ec7524c936c82cd5ba598e2202b253e4839176925f0f0024afc476c561b7aee576a2ed682b5c46af35bc8c88ad5003584f5a8dabdb7902e60321e43699289729e8ca475bac03d0107c8f115e24e70e2361cfecef1f1e12fef4f8e765eee1dfc28b6c59714f63cb8d1283fa53d35b713744000bf54f642a679550abd9184a6e1f11c550282fd78d7d41e9943006b9f05c61c443ef31bfca00ba92bd2b15f5f179a788056a59826d752c8bf2f924cdc401e553d2f3c3b4619e0dd8d15d70292adba948990f7500c95ae2829b5099ed524332b8ceb66d739ad4a994d5caff77ea08cb3c9cf2e13dfaa536d5b64208460ed9e8bf3c7b00e7054cf1fd34a3cb62df0149ce8fdac35449c03ed0c4e16e146d31abe4daa69bf508b7cdc764bbb2eb6c43a7e2aff5e5490f706b60b5a1a961828733c78a051a7af5894e63eb9334ef5f903eb797366dca242d82818a9f8f85104e53819ae54471e6731174f3006cb6307dd793ae7f20a8340d035a15b437895bf8d58e1cc2de885e86dd7966acdbfa4f62d5579b68407558f73bdc2f8c5f63e5ea9aa4af49911a34cea3503d66a7363e32f624dfcd5a2f9da53ed8d663b3ade4ce617a2c72ec45a38e6087ab96be26b774ffc9e43ee4507e3d9afd15bf01fb6f93f6cf3bf13dbfcefac5060d887355ac79bfc8eacc6e88d2ca59827d5147225486782f2521552fc9456e2e483d4fc8c3ecfc029981c045769355d0cfb23355b9fd3fd5bb791a0d787991aae8fe5b5ccd47cbd90a55a142359ae97006c5d03ffcbd6c64f69d5c71243e19cfcfce3fb93373baf0e7f797fb473fa46e897fdedb7fdcd4df175ffe9c6d668b3bfb1f955afffddd3afc566ffdb6fbfe96df5bfdbdaa2bfbfec6f7df7cdf5d6d7a38dde66ffe937df025976feb8d7fff6eb6f7b4ffb4fbffaa6a72b7e8b15f7fbdf6d7d2536bfe96f7c37ea6df6b79eeaaf9b5fc29f4f7b4ffb1b4fbf141bbd2ffb9bdfecbb01fc06eb6c468a2f1e1fe837df7e23bee96f3cfd7ab4d9dfdad200b7be125bfdad4dddff375fe39f5ff5379efebc71fd7443dfcc8daf689830eaafbffab2d7ffee5bddff773d5b39eb7dd3dffcf669efebfed79b5f8f7afd6f377bfd6fbefcbad7ff7643f7f1ddd74283fa2673b5befccde6c4b90f078788a850e0f3de719c1cd1801e93acabeee45799ac71c980adad00a881b2db70649dc58b43292a355f07d4887283757cdd7b20c007553b9a028c85f1dcce9686de330c775c3e742fa947efbb8dfb893b36bfad556c127430900dfcf906136e788436a93e76884563995c5cb93356c0880c94645a7ff29d3c0b39d1df86fd424e6c61592d2177e7fb611ffe745a0ab77fa0a6323f7d3b8315ee8c3cdcb66f407f747804ba1bb8355d73282603e10606631988b43c480eda6bf00b382fcdd7fdfe490cb002ac5a935765797dc586719dca9b17ea5693b81b62433cd5ffb70e9cd49b53589863afabd365b07c7df4d8eb7b3b96579df3c75ca5d13434fdcc3e6089f0f11aaa622c0b3be6f1207c23a1cbce9fda27e5eff67a746f1d7608fe9a9f9e9de7fc50de3ba6bd6b72fef83f74dd7fe8ba7f3fbaee7711a1a03cb28b3e1b444b0718f4212271ec69a5f42f2b34e6396f5d9da9f41a8c10cc7993acd4d43d554706309371c15d5fff42a46595e4c34526d2ab5c01af7b6b725c189c193422a46666de3f3d3c7abfbffbfa342ac4ef9130db4788bced5db2ff7a67c77b3fbe69e80d64e10d4da1d9fb688ff046dc31d4865ea39a8da0cf1787a7a7876f9bba5d35666cd93463a42aee01e0be0a9cb0dff8b652b7ab974b376d9cb846d72b871def38a6fff03b8cee2ef4161dedf9634d3a5ab28c95f57c250cffe2eb5bd6d749df848f0d6450148b7c344df22b7c9af860cc55ba8bead358b7a80ee4b52c22f261480bde78711929cec1dcd692e49a04b9eff4d32147fab1367d0d505c7dbb2a15ee7f50ef7f50efff3b069fbf8bb7499e5c9101e65cff7b6cfd1b02073f14a1f8ad7786655524a3ca33fe69a01a9258ddffbbb2f2426f2044ba6fae13eb53cc1a90d7bbf9d76fe09ba5b356e4a059c217fac54ce12d006b6bc5da565866fe8d9ae022cbed8bcc38abc25a4468b048c3b7e9155a90bdab2f4b4461d68da8c19b257831a141683b4c76702ff7f75efe34805b928e3e10730785dc96d256e891e211eb81cd25a897d0e4d815868da1826d8c0ca249734ba6897f24cf2d59913626ba85effff44cb7af92e203ba108586a2261cc17be3ccb60705dcd7d4455daafc6d1f40fe32922b60244131c9922bd4ee66b22ac5a21463cc780db12f40bf3ec3e012a850d66f2c6e06e849e94c76ad8a2c87101409b5cf64720d88a62ad2ab2ba97199cdaf3c2a5489663757c9dc877fa3fafe1aa5258487dacb31e8fb6161f79efcfec2c9a4f9381d25952c757f808ed8c0e785bc4ed5a2cc962253a509580e2e4110f7ce4e86a55b060c059942932b198c4e03c1387cf9493293471a776d833998e75adc90ae889670c079313c75a161ae6791eb5cafb85daec067b4dfe0854c6d8fe5a42bfc6446eeccc01ab1d160c1eabc4958273e2416ef1b9695bc5985f842ec915f9549a08e9e5e55b118a121c8256df325c6e136b2e5146c10889237c02c50c80b4e0029478111092f3415994ee0f82585445f48935b830e079075373678ca17789e6c906a0cf89f5638a21efa067445b9184d3512034a1e5c42ab52bc37837c6f81193317bf9ec639ef45bb4cf55ab84927592193f152384be712af4f5a5980785b4b708dd360ac8b1a12f7fcf4ad36bfb63bda7480004f9c8ca672bcc824ba5d372508c1556177d4f9660314df3bfb1ec1f4ef1195bc66efef9c2758a197a223781e6dff188537f80a4fcc0151dce444ab1605f35b3549dd554ed1c64de4f812f2caa75986db2e59268ce6b515db822d56bff43e7ad3a04b1d7b5b040b170b9edbd684027072494658a526ae91fe752d550e2174065e5a8423e39490ba14349fc2a0a4e13e6c6faf74bd8018ab5ee4b18742e03483f748054b63f2db407226bbdd3833f7e1d99dedf701ad45dac387a648b0dca1a3c95f8644e70da1d75fed1cff74e15f937e9a4f6591569a62389dca9974d93e6c3069474d78d0deee1decbdddd90f01ced23c9dd938ed11ec5173d379901a47c47506a7c73b0727c04d42aab39dbd83dd63cf836932f0ee03573d59bd8b77618c5e473447ccf4a392fccecf3e7e1ad41ecf3b20ae88c1199dbe7f26ea33f2020ed6c8b9a0c0d5fdc486199c61bba769092cc86e9e0c33396e43a69d159e563b6894c906e43483feca4734864c0be8d7b5c576c08d7aa77b1d23a37aaaa7cbc34983a040131d6313eaa4dde95300b50e6aa03ca4345c89e16cee2887e02c3a78308e5373991f1281cb329bd58afd6c78501e780206855e03a3d6c53af5ac6cac1c94b92ce886d198be1f7a2d4e93abb06b2a0af2619980bfec71a2f42161c4ec3771b6d39cdbd8e776b87593344fb2536f360d809f07f81291d294ee0b7f145e648bc2c787d8812ef742dd928f5fbd66b8831c210d1af051bd3aa099487528b7675e0c828901732e7229c72592c42a97669e77e0fd533a5201dac7bfc2a5eef33c33cd488eb0b6c6752383eb466761a55a9a9151a7cb4f29cfd1191cfc4ef308d184c1bfac7dceb5e823542437f68623558cd124cc9bb4e249a982e46416dcd0c4cfb5c009b99a58c740679aa815c492942cad6a3a1185cce4759257901349487cc0fdd35f051d995f4e54517f6e200a76c30dd910030ec89b1764591ddb958aa45eb573bd47dce9705dd8f6b6df8fcd3919db73b2f3f274efe75d774228af5b6c1eba5d87c7a45e5fa7f041e39472d662782c23ebc3e4b2c07219ba59d3f7ba97f68bfd77bb47c77b07a7bdafbeda6239cc08d478c0c683872735c1e50f27a7cbb9e4ab421d76c473f4221bd48e87011b8f8e4d7f39247a1fcaeccfa77ee8dd6f8840ce514eed46424a20778eea9878a4776f65424a1f75de2f4f5ef416acc6331e838119d90a992595bb02b5a47a110151104b7a7ddd68e6502f0543c158afbd1e174fdc24a5950b402d391643f29b992757d27a1078b09998ab2dfb577d315e00bf8a4a7b908024c3d285b711f5b4161e3b231a50553b9e16351429bc85d04fde467887e3fc31a1504df0dd9186d461e07fdaa6ebcd42951fa8516dae6d9051c9f4dae4694d4b90f7a4c61a8364cd37b29565e226c1262822ada6d2836f9e1b3dd4be7fdc1e9991d2addb33f652e141ec04672c4e2eb4ef0c28be4ac8199efd47db7ebaf2cfd979bd97f7d8788f938f6ffc9dc26390d1d27e62363f49799dfd2d4bf23114cc284c13a44f576228eb3a0bbdbf76736749be40c352bbb324092770e8bf919894a15d9194184500623b5f533d731a509c99b728e36adf97bb78796a3c79ca8a1353b934abbe54e1f32530ece16bb86f11a9f6aa63c9734871b80627869793c4bd57690ef70714c8b482243ed57b68e9267f20a58420ca98ac0b027208e98b41fc280f7fda83e7cef37d0fbf11437de6e1779a939b24adc422afd20c8e1be29dbf2fe4020efb245b945339eeda74b7ec80d75eafe0ed320f259e7472bff4ce348fcb072efb0c92861e88e7dbaa10d7e9488a6b599449a7264a2d65758a1954e2f9aa3836685a9be0ddac23428c66278bde48e593f46a5100f138a2b4f898972b2dc13c7eb2c8f0d0cd144c0517027d22704695326be1620f361c47540546cfa30b47d29011f9b38f243295771f492e1a5e9936b721ed3688aa73a15f93e3bd57bb0273488b44bcda3b79bb7772e2743024b0c667d97d370d180c10ba53f5be4f5052a9d359b16169eea59465d53e7fdc07d3a69029355dae09bd302bebbc3783f199417cca5f91e87d3b1c0e4bccec7f61e1fb6daeb0869ec37ce4afe8b96c9cebc03219c1945eed9decbcd8df7dd561f89d631e7f32c880d9de2081773f2d5f99583ad0b90c89aa15c7bd9eade5bd97fa01124650efc1dd5d9951ba96802b7aaec9d4a49ef8e701e73a9da0c205c8f7d4e8540d4b440f6e468927f0d462e702e2b69690977dac00f3eb7104889f841384ddcbc3e2a5391a11f56c5778f9d53f7e14b28f69cb21fd058f7efb935c0e5552605e8c87ecd63d969549941a57d5494270f5c62946fb2427ea8a1e5222b2d33c4b73875828fb21bdca8d84d2989fd3bb09a50654c29303d6fc948225a3e5f2e2554359d0c032ef41a9330279649b7a8941edf97ec67f7f8a24b38b0fd0ed6924f5a1b7c37186e17350cd4b3222f2b18c40838178380254c21a533c34a3694f5441ae48ba23595410a4ddc60dd1bc4a59a113318b516d268f2069d34faa30b2388b3d203cddaae607d09af799c8f4dff0205a6b3cd2e88e65258b993ea3e9c4a890d352e47224cb322996354a26c8181bd1003585388992006124047e359bc221d25adc3ff07c21f36466926b17a24aae9053d2d43818d52e7439984867b2d2dc5ba9445ab54a30f0b8cad3df0c4dae97b78418bc2e75280bd09be67ac1cb74e442980f17952552750de375afd9aee51ce452230afa9b2d5d7f25d90c015bf03ec997efebc0f50b6c81a515781a6a98a855d704ea9bd3b7fb98a5fed123ac79470cc8bb93b18f1dc67e9fc44480bfe02a7b2a981baf8cc567b11a989802c6557a89dab0ddd9bc5a3608beef56a5993710b05f4e5613633290c0354b73329068771c6b718903ba04e36459a4d71437c32e3d0c1b293fbcf1a344634573875234f44946fa27e688bd4eb2146e353c3c3c6c7730578d003836a0f57ab44dac125430a2dc033596bbf975fbfcf1bc50e305469878ccd1c348e5a5ca64ff2629f2369ad25a0aed979de383f7bb6f8f4eff663495b52c522b04b7d6b658af705c12eb1f0c26dd5d9decd18eef78e7e868f798a769a7e13529d24991c27a4af31c2ccd2279d14d0c1a8258d3a836e88089128b07e3ac2269cfec4da9a5acac6b8c6d7ecbb00d69b819fc78ead358622a2f4199ff95b78ba5acfa2c590c68f86299efeb91416bcf4d90192b9ef4cdd6f6d36545b39dd56c563d050dbf7a2cd93e9f7e9dfe0e2b8ebdbe4d61502bcdaf22d5d2fc8ad5f3b2b09b6a5818d4aa43a352dfea3688f5c9499fe624b64d89c28c5590a9c7538545447e9f132076e5f5363e0cf7b9dbbe457060f851f731f44644ae4bb6ad0d2837b0b93b7028c6b8bd6c7762af8891e39814b086cca913330f495583149b33a66adf1bf82f69961da36ac0d822b84e6c727fdb1b5991df03507f946419199a3b385e78665dbce7617e67341e69a2f1a22dee5b1468a5110cdca3ed08291146ebf5d809d718c33a55453afab01c085e09927700458d3f41980b52c490cd4a4b4688836daecaab426520c02895b89196f2c024200ea891cb8ba92cb8396623e16d9e3037038fc216be94bab62a66e58e226ca2ff2d22d3d654cf5c8ed22403cfc2018a0044928b45eea6ec8bb82d1de3941526a9607c6b80c289c6515e7d6922f997fee0adf1e8b520b113bf25101ba4613dcdd3ccf063249cf49d14dabb034d9d1d1feeefefbe7a7f78b07770ba7bbcf3f274eff0209af4339aeff35173aecf3bfb7fb37362e992f77b07fb7b07bbf7ef384e3c3cba8378f0eeafeffb198c30185cf3d2808d08b1082fe98d0dd28d813aab1d4b3586cda789a1178e30af3c55a5cca77a529a1d81f44b7e336762605b554655e93772cb190c767b5b6cc04e7ae0eebf50c7bbff9f777bc7bb27a4238beea0dfe50f62eb21c7e4f4f0f0fddb9d83bfbd7ff9666fffd5f16efc74865dc09c9aa674679faf0edfbdd8dfbdff94f42a6e518f6c2b3fa3cb3ac3b4ea35099f9fbb62cfd795a7ab501c1d320f7cc42186e1cffad74665c3ab9de39f3a358d7a238a0adcc6bc9f756485ab063193e812818e1bafc628c935174d1eb9722c9212ef0ef81d97f636f7919f47671b0d111071314b3292aa802f9748e6f34225a3a92cbb620e3677a0de46eb2ac0591a78df08e3229b581335acc8c6f1f9493746de13a3eba830f546c59f136bef0aebf8bf7cc485def4245ada14df6fbb55a3ecbadfeb1b512abb01605a86515cbd2c22c3fa7b59a99da24896f68e756a4384aa60c17bb671519f23fb6cc34cd7e5cd547910b4a2d3fcdc5b30bf52cd9dcc1b9505c096d3abc225c0cd77db12b22ba884f575470b1185541ab7b05ca29e40404e2ea41499c18dc3ac11a2cc2400e359071d01388f50cff5c6bc5643ca3daf26857fd8f31adcb94401c7f4393767a816f938299678e6cd2f5661c6a0bf4ffaf6e7b3e018db0ffd4996ce1900fdf35ef6e6602aecc09076eff05a16934cdd708703ff8b063e8a011ff9b966a2968bb63f2e7a72aed69e9d35999510c71a3a59f029e783a8bfb6ab0171ba06e2abcd0dfb7edbaf7ac1062bbd4c689b5269b45903bb8f0e1cc071a30a16edcfe82000e9faaaeb5a1ad69127c5c1656bd0d5d497eebb0db774745f0cfb811ec3464d91402462e1f02adeca4f1dca1c08ce7b499645390ba39440e3a29cf1a16030d627cc0841624a91405e4b8875aec856c47a83625418d00b4d44227295f77e938512639214691c312fd4753aa620e6f15beff1d3fcbe5b155ed70ca2399315c5531cc90c7221cadbb4445f591a3db3068210da9afe85b13ba55acd9514360e81ea8190a54e904c93e0ffe0a5798db7b4ca8c3bad7e3c77658ff38da8353fb9e569789703827185e2b7915e0be5a2eecba79ae91b6b165fd3c8b1ec8ad8cc02cb811a457b570728868d69f9572322ff21fc1c24447e898461c849d17d36d90738fa61d907d42cade0f85e42d9255a0e5cdaaa976251cad2289a09d376c5cd341d4dd1f2a89c42247d8ade1f904c8fcce89e3ca1340096caf9f8919ad08b7697fca36e7de0db47643c40aac35b91d00021dbe17f76f6432ca7edea8135f86545b6d21bd56759949a68197f82416a745e0f8a2b4991ec6ddb685a3083fc06e2fc7139d20880982f13f7d2b754f2237b78b45df0c97a94f0524f01e37d08b3933ddd68cc4ff695f9127a117b68f7be89f4b8f689ee833f3426cfffdd903235e360af6b1e620ca3af99846adcd110567c9ee4ee6b4405e39681ab4f5c57bededc813c0f73b4d1ec21475b34505390a5cddc620c37bf2e7eff6973207edeec8a9fb606e2e7adaee8f7fb9f44ef077176f6d36657fcbc79d115673f6d75c5cf5b1717e7794b23d9b22ad251d502c087c35fe5a8eaa3e4ea08ad5c966decaeec8ad6fbf7b27cabc68b4cb6ba269e6fb6a02d3dcfc924041edb324b47727c8adc64ec26db02a8b9a7f7bb52857ee1ba220d1eee423f5467179ce6cffd382850360e92b543a1be8375619c97417aa20ad186caa98064016727cbd95065fd944675d1ee74c5fbf29978d4868edbef811d49fbb9bcadda9d4e7fac72d979e646e55bb42545d19f2fca69fb7dd98705ab9b1da66026af2b120baf5fa1b42386854c3ed410a2c9012d0b6e510cf3676b2270f2b2282ca901be51d99287115e8666678fde8352e17d7ad6c263d9bae878bfda9c88a84124dbb571878497ef65049f7b4fb99e762495823b31c199d0f0e15821ea4f96ba42a7ce04276ce2967f0e765613d578ea1b80444f6703e9e6a4b5a7cbb944896d6b2f07e98d48aa4acee6449a63249a4521811087c18007261948b66a22c84f6d76b728c694d8a6a1f79183d278cd2d9a71bfc0cb664eb83ee09bcf442abe77e1a3e8c83d13e9da9a77f130103e5c09aa7a963a918e85f9412ef53262edc0398a06e850fd34290f6f72f3b6a096115b763520df0a12e770f6412e2fc4367500bfe224a2777c487ec6c37a2918cca93a4a525f5ae17d68abe1af7e823c9ac407b9c48ffd593267dc801e76409de841763558182d0ef753c70e865ed47e3820ef371097b1875b3fe8d197decc73ae9b9f2a1c369fa7f7a10dbf585cf642968bac023f5818307cef4f54b19b8ca66cbe5e5a573890859c6c41d832fee843bdaed8f295c6fab060c6d72d4c75683e5c23010e1f362face8440fc91c80eb24732b69d71aeb781b3d4be687c35ff9ccb144ef5e574cf22011a3b72af5b380db9d77eafb67fbc13f60c75e67faa6433449fd0225e80b9fc96b99414a8ab3b31dbd992fbae265579cbdbac0fd3cdbe90a5764e63141587c2254d4ced232c827a94bfa851c2f46dc04782667aa2b6ec303aa8b35993e4aaaf62d91e75d7176519f231b03fe453925de1d1ded1ebfdc39d97d7fbc2bb6c57afb6ca7f77f2e3aeb57f4fded097df89f59d95bb75bf3410e93613af1480253d64643577f5a58d62f24987bb479b75dd1eafdd766abd3afd4beba91c5cba494ed8e77120ce8936a9949a2c86bfdda8fd10184a3b3438119ea31ccca5eabbe70b1ae6b6576a0851c2d8a32bd966f6571e58dd2ffd24eba6268c266af8bd3c35787ed5fb3c98dcaaf3a0381b6326296641355ccc04a71bea8c4cd54165224a08819427cb25c5536f01c8182e7f99c5263e81f6a2212d065b6f04eb4c24334e4581b2701a9184c0cc4df3f754562ae3f7f44879dc8b3c29f513d84425601b6680708a270b8215c2428ef8a21fcdb84af59fb21472b9f628f4c55dbe0da96f9053cd2fac909331a27d63f194170e07c311bcaa2040b63b333692e16795a95424d28b71f06b83d4d3ec81ce50ba0b669951ab445a6bf9636083b1adcbecbd32a936579007d187e32d1fc935e73246b52858a54c6b2601e87bd5972250f1715c8a163df4ef4731fff04f9eabc4fb7af3308281094fc58a8c5dc2f3e2cc69aa80cbf8c54b698d5863af1a14e10e44d5084d1b9af65507c322dd2fc4350784059d682e24394fbdab2ab221d1f7b1de992973048de54e5d52f90e88e1566692e5f66c96c1e94bd092baa79324a2b9ebf5d05c350c57c9ae49cb5ad92e1098458b02537e958ddf02abf99e80eb640a919fbb9be2e4e7efeb1470ed8ece8c28cd22c3bac8d6b922935ae1797959ac74a0bf541be4aca2960c8e817450a90e0d35b4d2c4380e6daa7a67ed859c42b6caee5bdae13cf81f03ba2804fa06b4e6fc5b5ccc7aae8d9f8d258dc15f26a207e91c30f104db1de5ad340e849928309b5ae5e972b6053a338356d5d3bea4d8ed1f9e1127f5e7669bbb2a51825339969a438863e30e0360ceb34da9b1fb41de1fd24976d332df7425be5212cc39afed21f4d9362a76a6f6874fc6e3e37e898be968b214ea1bdd9b169a4316af7620ee20c3733526dcf9225e6f99a27c6e2de4e79b884cca414c09b72b8c27ee93713f7c5d42e1ffa7812154dadc5b6386be1b2b5baa2352bf57fdfaadff43f87ad0b20fade817b2e437160fed715aa4094a351ed7592a7599668bea997e622536a2e66c907598abddd6fc59512690e8162814a4cf3499aa795846ace8921ad0472aeb2743efcb9bcc96039e8aa96a252aa0f60ee31672bf501cc1ce28c18a29e3beb1abbc2b15afa93c3e801e0b3faf102b8186ea75657cd3913e578613c53e964f973922d3cb2c9ffd206868c8d9c113910eb081373223266a939d19923180ed0143549c1f963b0b1d1d0ee56b9dba4bd1ec9e1d567b56dc6058ffea8cddd2f600fddff3e117bb339cae251dba726e2eda2982d8a374939dd72ef5cb2a8a6aa10df27625ac8c9f6f9e3599266951a5c25c5b23f528ba2faef2b5dd41fa9d9f9e31f7e4c8aa578a98bbf5f4f7e4010a5942633014bbba70140fbf519f43b4dca690fef5c73af49329f6772b8f4fadc5994559a8b1dfc14edb74c2b59f6af94bacac0a6140a58c7eb8d0f7b591562e7e4e5de1e5807c79fe0174929c5d3af85cc474adf390d91b8d0fa2bea3add7aff74ebfdd548b3118ce9ce70df8c0cc6144fc5b6c85cf25db14d09d880a78948346fa66926453b133f6c8b2fedd9fc40c0f5d3fc528de54ed54e3be289d8b89d4cc447d10ebeadadd9af1df1fdf7e2db7bd4d9fcfa1e95b6be7ce606d4fe409ff4c72fc4c6ed57c3f1a6fceebbafc49a68b7db1fc40f3ffc2036bf0ebeb926d069c702fc9f6d814dfe719de8cd684f57029cde0fa0f81f61a4b999e861526cfd636d2de5bc94c97894f9a98e9edaf42c533ded70d553b126b682cdf1f3cc6cdd0d60d33f017efb4dbf7dd3d17ae66afd590bc75707faa6764f9f61c99fda0fefe02bce05121420714e909a790a6d206e877e4a45227e4dae937254a4f38ae4796201d4c1ff3e393c706f761fa389a7a58080ce93a4acba2219aa45259e02ea9ea5a3429572a47288a928664b9301b300d16ba279f77926a99381cd773a585fffb59ccb62022f5f25cbaaa79f9f497efd742b813fd7bfd295a1c181aa24525b60a0019a6a7fa010cccbfd989a0e4bf0aecd9121d123027800a552025d172598de42f0810a9e49598a61a16e4acdf01a0f0a30f148584d0004602154d1c474d8172f642e76324dbb8832591299f83a19c9a1521fc458ce252d16faad80a706401b25804887c9305b523d538d88254350e851d605a7ae94e4833e1d5c7fe4fd35348dea4222af3bf78364687b6f8f0e8f4f770e4e8d28ad7df63f838bb541ff8be79db67884c93992bcea3c7ff65feb4088fe985ecb5c9f0d0c37883475b1c86c4aa82cfd0019a40662f8ecfc7157938d2583a437e44ae64062c2ca615556e319082348c2600a03811e2fbf8f508fcfb3cb7418efbbe05fdf75006b2228fd2c695aca1f6193c03d1830fff9ec71f7f14315a2e78f9d46d446108ea9444dffa48bf7f4a1a8117454a9afdac2af1d848a32f085ecffaad2bcddeab63c19157e9a25d568da5eefdd00c7d2fbd89ba9dff47fcbde7ac76614b10b3383b1f7697c625bd05f672d1a6aeb22ba307af721790e88bd209954bbd5c77c3a2d479e5b93ed373219cb82a4a0ac01e6f92dd72315199857bbaf77deed9f1a03fdf7a77f3bda35d2ac16d9fcf74e9773d91a8816e5b3d28bbb7edbbbb9b9e94d5431eb2d8a8c08b69699bce3156445503490bdc9bbbc94557b0a4329bb22dca1470b72d57e67a8305317a29d357e3df3c77ae164990d15cc7eb38c6b7e82638a3db3334ee6954b26a3972cc122c2df8cdbf9ebdbfd3755353f967f5fc8127d555a969a6c71ebe6d7aa70afb53e007f7d736ce06225fae16f291596ebb7d3820e287760b33cd74896e55ddde76a0cb935c49bd3d3a387f4ad1161ab13d12abb75b1ea323ae9d6de86aa0c620b8c1236131783167120ce5c4e93e01b04cde80a7b3e687e91f3eece9b7f0a7c1b4673b85eab62f62aa9128a1cf2f1a33d76f06ebc584c26b2a87f6c2a3fa90a99cceae5afd34c46a0646a88a5753698c700890d9c0defe754deac02d31f42b555d0de1def9fc8a4184d8f341f57d6a0dd71b3ef7e2c9e6902b794d5f6a29af4be6dd5c2dfc2382d3518755732632502e28f0cf1d752e5778d28203da0bb86101076af3e5d8407bb9cabbc940d271b3ffa416bd6bf906596e695c8550f98ea5e21d12e61b081795cbd6748b705a14b0b87daea341aa560559cd75c4fdd9b133787f1c3357e21f630f0ade9bed102c55f079080532ea12fc48e354b4e73314bb32c354479a534c10e09740bbcec7db137314eb11ba24d0f4b472404cb42a28c3fe00a4fc9397190546320d0a2ecb62c262f95fa904ab41c6bfdf5e4f875eff4f0a7dd8396ade09e105da117569925b774bef641c63010bdcd2e112ae055745225d5a2647999fc0fed12fe09292f2c153f6c8bad0d70f8a382efc5d38d0d2eb032cf6b9f8eb4796631059fb5cc6fed803e2cc4e0fac47745256fabf57996a479577cb1fe458b81c7db65e48f9a6ec964255b5dd1ba9220b0d5ddb62e18594975df826fd9818257141dcd688ee188cff0eb85318d00a22eec77ae4ae86ebec07ff4916ceef697b49a3ea863ec6e06dacd183964e5a2358ace00c5d4e55f3c42a1d624c5f817d7a9bc113fa5a30f49598a2c1d1649012c1f9e4dccc4a66974caada1d9b604c4ce294f504476be2469ffef6b4a9abad9dffcb2ff0d96515ad2207f6b7bd4115b1b9b5f8bd752f37b2325fe4f7aad32051d83b7433a5c54aa70aa98239bb01303611672b8145745925772dc159342428026fd465ec92ea65e5b0a3d72b0f3a99214a2b6627e55a32f003ed0e437c5d88f65a9462968bfc66ab4708253bd6ea5c9047b6252a23eee74d1b02bc90026056636df6d72ae4222118d46f4f9285b800ec37c768947a139e6ad058095d2645017464d5e43fa5f09939c2f86595a4ebb2ce96a5794ba9092d826f9785d15a294190e6fa4e6a92c4d7659334a0a46ac30276a458b06efdccd54cdfc19a538aec9a2c8d3726aa330950a7a068616b25649315159a66ec02d53e5634c3636b0db793a95fa15bd9630353c14b9aad291a4d0c869c972b49a4fe534c9323194b486a81c4a82d91502944e9abd4b3288580279ce8259bb6cc0a76f76c5c9e1ebd35f768e77c5de89383a3efc79efd5ee2b97b9b61be6abfd9b9f9f76f7af47c7bb2727e2f01800eebd3ddadfdb7dd5157b072ff7dfbdda3bf851bc78772a0e0e4fc5fededbbdd3dd57e2f410bae5e96f5f8bb7bbc72fdfec1c9ceebcd8dbdf3bfd1b66ca7dbd777aa061bf3e3c163be268e7f874efe5bbfd9d6371f4eef8e8f06457ec1cbc120787077b07af8ff70e7edc7dbb7b70da177b07e2e050ecfebc7b702a4edeececefebee00decebbd33787c7946ef7e86f90da5bbc39dc7fb57b7c225eec8afdbd9d17fbbbd8ddc1dfc4cbfd9dbdb75df16ae7edce8f98a4f7f0f4cd2ece5357c5918a5fdeecea62ddefce8140b77d3d258876b0f3f2b42b4e0f8f4f6df35ff64e76bb62e778ef442fceebe3c3b73859bdc487af75b5bd03ddf6601721e9e5f7f7e9f0187ebf3bd9b540c5abdd9dfdbd831f4f7463335dd3c0a4ef45038917c8de886d4164c94d9a8fd54dc896809f03d12df41a8455486293a9fc4a16e431f4c2304fdbe2acb53bbe02ac745aa46399038e789d1672a26e5b17d49890bf51c992d0ff3cf7ac3737d07a33da91b3e4146bdb6293b1ac6eaa4f9e883cb94eaf924a15fd45298b9d2b9957fd341fcbdbc3493b0af72cbde8684cefdca6ea43dd247acc592cd7185610695649f9e1951caa453e926d6b8a07911c928c1c78ac0d77cd14d853cc61831aef1012bb162eb38dc67dee1f156a9696b25fc85265d7b2dde9575399c73dbd22c313e035e8a87ee7e7e24fbc79ce26f9de43a6fdc836e25c0403e4d980dfedc0161f436d76dc79cdec7bdd4ed92a6651ab5fbed57b7e9a941f304d123b85fe16186de517e225511e624c2b3616869e008b34a489ba20fc6d95222997f9685aa81cd3ae8e2108801c6b48c34565768d1032f88e2c66300d315765990e338d01a0e3ff36d106e0cfd950166a426e5b7dcc62acbf185b68f1fb6b5ace4f6292c327dcb6927d39cf9d3996998ed88e2dcef3faed00c775f793db9361984344645720f2bd4e8a146dc84b91d89383a4978da2d03c31e1cd6c275f7eb2304e1576d7737d68fa509771fd68297e7fa1542693fc9348f2f24616a252037f38cfebfad1b4348bd50e3a64b7e44a026fec4c93830b6286f8e489a96a5972b430af8106cef38cf4336604172ddf32e5475981e91ee95dac2194cdcb8f4b4fc4ef67aef52e34fee443719f4facc51176cd8c54b820100c4a5fd2389da0da441835ad194630a14d733596b0b81aa16dd60cd9c9ec0252941e9eee0ec4a67875f896c26002f96d9c72f54611fadcb68153d54d2e8b5784338df8fbe754de586df6088294d36370252b330998919b0178bff2bdb77bf15c8338333f2fc440fff637f2984e28a6b229645e1da8b1d414a22e99aab2323bfa07f7328b6da6bd1ff6f3dc844e896de5911d60e09119ee1a4ad3f5417e73fa76bf669d4b5523325003842dc5c78fb6542f47f3f2a1fb21185e61589a3ff32adc73f9700cab57f184b94906ebb8be4e331243355e76c5a5ad7e89eef855f2418a91e672401b8696d2235514fab1b8c4de4fd59c3c7d31653220e6060f5a4333f6757f313d7fb8abbeda1fb777c04b5e1cbefa5b6b1008fee2778efae4adff9719502308375090c4239d8aa939309f3906dabdecdd5e029b76d95b5e227a401e2b29c50d309bee69781f7ba5c4f69d8f970beba058c08d58abbe0a63759882bfded9e4afb5367fbbb3cddf987265bd9d2c2af511cfc6478581453bebfd4a9655db0e7c8d41777fffb573ffab1b9eecf87bd1e194585aeeed6e6e86d4d7a3476d7a73df9eece5f3458572299014de56901dc2bedaf4c75b3506cf450b742304bafef6646f576c6ed0bc237c46875131af4cd0f2d29032a46dd244037800e7b212bbb7f34c15a0f5b9ff9b42565d68aff7c9d28f77d12d7a563112656fb74d20d8536c80ea1778b3863871d5f90ed6da6c44db6c44769db6f0e34757a5e17946abe97fe1dbec0da0e16dc6b034d1b7f95ecfa8f963b77e4d50e9cc3b8033bab7dbd6cbfddc7f8ac5c045125f41dc2054e5c3b48f2d2ffef8d1013cf990cec5341d8fddd29736e843deaac8ee25f7007bc67c7e8fdbdbe1c49e3cb1a3c8e5ad598d937498397b0b118edbac379b42a4b137adfafa1adac307fee489f7db6233f64c3eb26df55279340ca0b47af12ad2463c6fa233fd032206779c1dbd5ffe4e021d60434d60ae0f5956e2f44d579cbed294e32988c7d21c70eab98950e7af08c4d4912510b07b629a549484f15735ecf76d941dbd3067add337201d7a05ffd5b05b175628135d56b4e6e86d12d71347a2bc6557b44cd08356c7e8de922a1dd5d637bca31c4a4ca91e9c964fc1f389b06c40e8e0ca07472aa485d8e9891c9870e44e7ee18f3072a8f4596b788cfa93b428cd1181b071b85e0e2fb3e7f7750acac0a9148552159a2cb4cd31eb8a729a8cd58d7e56f4e7ce3fe44dd67d363dc876500d8ff1b15215ac2c7b81f54fce1d3c0ac30fb973629bb3fab123a2ab34ad9b8fb4502f68b407d58db271a90048f92721b0cdbb2a6c35ad280df04e4c3749f3f14ba81b3b639b5ddb1173e764492cd04212352b0984969310bad4bc39e057ecb3ada5484b8d5a48288d76a2f952143229551ee2572028ec0f270860a55bde0f5be56198196c636501f1bc669ab5c20cd40aee806615ce1f4300b3f3c77c2e68dc395233590ab88e4686f7eaf02de72bd0fed4decd4d88219d14d22083237af2da6eb59f087d4afbaf0e5fbe7bbb7b70fafee8f064ef74eff0e0fdebc3fdfdc35ff60e7eb4d20918984674d08bc5379b626077cfd69510b228a8b9e56a6ea285a6b4473cc947b2ac5421462e56be01562439f894daa54585ecb12e26912c54a1006045d586a176c546f071371fb7653eb61f40e602fdef50f7f6618694deba59c37718ff0b554df12282bb2aa5c6b32ca57baded52e9d7a3a94747c36cadacf7f1236e050b2d958f3b819b4e88671a8045ac8d9a261c371709b146533feef8b3ab8a4b979666e52c7e80ccd563221155eec9d5cc5ac263be6ddf5d53dc79565f765d1564393514b9fa59b2edd8fbc48df81e04ac1b0e75ab8363620a22266de52226b2788da14bf3126021ac62bb5273904464725275fe541ea72e8b851e2f2b35bfd484e0a5eef232401639719ec90c6254ab09cd4a8ec53cbd9559b9526c15a190a0cfed5ad016f1830002d04568d9bcf0e38f8be7fec78168556adeb26f0124cd3a41e8d889a6907415f15cb4acb0aba51be2af7d39a95cfbcf26ddeea2f5c11abf9a65cdd2e408b2315a351252eed6981d1f44ade2c78fd0a71fb935ac7566d7eca259baea5782734eeeae33324d80f05e1ecae327bf146d7db0c82663de41616342871e4491a8bef81cc1089a227e42303d71eca089a55ad81cbc103d547a2df51e85f744f4c08cc3fcc214b453c9435824e3faddf68764853076657a3cbf843e457c68defa45a01aa7bd60a6a7986a1b73fd058b185e47b22da12ba92bdb27915f4c3390e8e5dcf22fe7d6aacbb9a52fa76360dc413eb58252ef75e8e235ed04b5f5f56ca8ae0f14ab6f1762dbcde2b9e62807a4cdd773eeeb97756d9b0de50bdbd0551aaaaa52b3bbebc191b6b560a8b16a680774473d0acc31aabcfbf5063c0ad01aabd21b8c51294a541e7f3edb45c7f4e5c90970daafe4284b50094e4ef92509e32088929aa05a21c6945f0a9537f180d48bc134c96d5a8a9eb8bc454cb3bcf40fb7c132668a78becdaf32fd2dc09f1a5c03e279818d4ed2df641ba7d385ea010adad1c75c0f0a1eec5bc011800f347a38e57845d77e41386507ab63c5e7a275acb7179abc8073d3f2147b4951cad7994a2a1ac8590b67d4126b046d4db420a843eba20b62d4b5bb1bbd081bd5e4147abbf4ecf5f4baa41ad2b8a06bf5bfb09bbe23d3dba49af667c96d5bd73f6b214fa8fbd4502e10cc19e14d56ace19eb546592af3aa565c0382c535204cac09d3dfcbab7614825da03d2456dd64ce5ab3a4b84a735db5edf615e390c05619d40f7bd7f943a068af35343c001adc40c4b7e217504ee80d29ad30859d4510df6e47346b8c6a58c995121be4c6cfe5c42851f335d11aa8a780b6ae3b18b3c51c1f33e35547c8c405c5c024b6251ecf550d6b66369088ef6592656800c1fccafc2f6d135ab02b5eaa1cc30faa820bdd6d0d9ea699d765c997ea610ecf1fbf4c72b0694fb24c24d8bbe6ed992dcae38e1fc700c60f5c2de425591924d4f3c04b65d93679aefd9c0c314b398cf21b8b7148e9da257aebaac2e4f1c12887e47c60bff665be9851a0c6ed86f28f1f030b2a56cdcbe81f1869e91d387f0cf4cbf963cddeb8761d0ee3a648ab58fbb89fa259230600c26030e09efd5643f84d760860bd2b45d995517a7c14cb9d45753af58d63d05c58480ed78c09d2bff31e5681f207e393efac9ab3cf63f134fd55e3c730584f881e082b187a0452084c1739b2694b1c087606c15f14fe612933cd990ad214f053147c328763c012b27d8af1ee262e65e85ec825fac35fbd387aff8939fae098a356aee1892e1035975deb650d2ac045355f54a24c676996146475f2422df2719a5fbd042ae1f8a19c9e135b181688ba0e2415e6abeb067dc4714c0dd4a2ab4cbaa1d2278bbc108076ca46748408938a8925b03f0129d29946aec2550556c4fe42cc7b6e3dbd7dc3bd212d9f402a8b98bdc91fe700621c709ce7643d3752dde11e47443f054607f81d338b80ddc5e68678bdf7d78138ca24f8c7a34639293f743d7902680348b500f115c6b24063d857876ff1fecca418a5c56831439c5f825ed2e922509f50488ce7906290621c03c8d9ab74986669b58474247a79f7763737f14e302f3e14cf2271e5095f475c34135f0f677efc3086d86f713fa6d80caac6f3fa5feb4cacff3dc20cfb1522ec6d63c8a8072c11059162de905e6c4e13dd172beb490cdc7c4c787b351fd825f0c95436f25ead9da182f9fc7b16d0b9cd8b63e50c38f321308abf499419e9bf4a3762f819112b721deef3905788caf9349b4196c368a53aaea6c09afe26e9c1e10690786d7f31c5b8706ce6f033337b060c07ccde42a49f35906f6c3901610b05bf2b3a28005315e96f277695428b131c5e0fe7621b5dcba26a6e43fdf768bcb021e94423a0e972aeaaa9acd25192b1ad8154f9951c816bdd8d14b3455941fabe4521455ab5d08d351197c86b5fd2cb61f47c2c25bf75fd4a3240e273594c5431037e03b593a513160753fff8d19f974f2f00b77f1f3b4213ccc907dedb6e927eb46eedabe02feb8a26cb56c78b5c4d87abb71d74eb57a2f3d2dbf63b8a9bffb17b8fcda3ec336a6374ad63994138d353b5530cd3aa488a25d80ada2c85a4c1660807422c1abde93f44aec9cc07112bb02ffa626b4eccb7766197def1ef3485637c24e38fa39ff415c3a31786d2696a3467a62e0e895823aad00ab3dec7ddc732ec02afd0a99aff42af534da4d5f7ab1829166fae31c95ded6d1d040034055a14941428da99c9eb17004e83bbfe29fad4e71425d7c8de536b10314ab291bbcbfe597af28436d8de61b7198074b79d44cdff62f5d75e930cd17aac0d2027d3e85368c7475bc3b6fc778600f9c18261f5c271f682fdea72a4ea358721f66a83ee853be6235b0f0427890da2f52a0494b0b024328ae4905cda887c21b268032d160d6ec66f20310f2de98ced093cfe43a9e9eb4549695c6d3e58440163850800d2acab5cc0bd76814c5b64fba3bf7a261f43394dae31d430a4d89c809379952d310b9e191c786acfe7594a79d8ab3e2a77d867e61c4cd0c0c858dd1aa97830bbae512c6b5c58d095c855d567068cf472d50f32e61d70cb5dbf7ef6abbbb9bc19ed4553bb7d38cfae21e7897adbe1f3d1736309ea1b9ae3014df0c06ed7de981e1b79d0a430186d651bbd253b55958ca66ce9927ccc57c49e9818b782a4c69262c94de5cc080a6217a0697adef2073362b6db6ee71ff98fda7383abac6d0a47179af69c3b1b5e0f933c79e2fd76c8ee51ddc0d1bd5bbe5ed272d7f33bcc33cb189df0732a6fe6aa68a0172a4e30d4195379cb06f2271927f874c283f5ffc8e9e00c704ef8d0df4d0f5986d009fa39af60518cfecc5984aef15d4bf35c16966b60a8d9720731184893fb401c9fb011922078921ff92bff9cf1b5307a3160e1623d06f88e96961df62028b3901c47baf1f4821527314d50e85e3f8e2ad9e06a6048301485b3ef584fc2983124c9f0e2b3462a1a67174890221eb64ea8822491500533e34aa8d09983fe030c909c09eaa2acd4eca5331bbcc30f579c3f4ecbd77a80cf21ed5cddd601bffe99a6d9f7b4e5af596c6b70777bb4d64cd961f96bd0ad96845180ccb079bbc1e192bb2c30bbe67b1a9b9bc5f42da2a3a6cf68d9eadc7592dc2786a6a042b3a1b7b80f323da1ff607f1e1ca037001a6c11924f0d32ced71c59ae70fdf9679b3f73d366325e675660c098d61cf3eeeb822439d6f260fbf1ba65b6d27b43ea07d9aebd39e9b9caa53be8d455ad97ba599a9ed68a09f0d7cf38bc23bd6c9271637ca2122834e71b33fbc342740c2dd5fcddc699f2aa18e397392682686e5ecb262e7ac2fc05cc0bd80ae92313cc376e9fe6137f3db10747925e7f533cab7b6458458b5290e0a6721198fc2e9bf40450a18d8bd5758bd2352bd0adcff461429d2f7d62edcb55c4da978e58bb97fb1c3b453e1db1e1d1031b0e59479cee42ba7be5eb820ba529990623e5da4aa2308472685d13654cfe5de6f5a81f26b893a6b6bb97de841f4669fb4e5bdea463ea5c3766ceb70e137db415aa7a243fee49e91f3811ee10a146787437bce8a30db3e74c0c0fe45803b9da7dd96d044f90eaf70b9e1bab1cc1a2fde256dfcb7e986559b5416b1ba68d34fbca093fa0e350f55383551b45e89e50136fddcdf5f89d74c5caa3c74485fae5d28f2cc80581fb4e9ca8868c9628af50ecf4447611f5399abb36e493e7751818edbcf7d53e385dae078a2d7c872575178e2d0b609134cdab6bb8c0b0aad1bed4f7cca8103d314d5d2cf12cd2922434db66846b1c48ac81d147faf29a887c23d6b8a055c029ae79401a4ee6fa3a925659c6a465ec9929bb46f207e188ae14d005a2f62a3ab904d35eaeaf8b9df1d8e0b4d278c1d06f1090e15f9a3d666a83232cb6a9ee4ca069d30e2827f8880a84c8fa85409edbd603f317d6b55dd7f7fb3e3074d518082b34bb0f90c2ca0842304ec2771f3854db023281f52dbc98d868a79009cf03cb2525bad81359f3aba6bf91f69175864dbf10f60ba34535ed98564b4ba9597218cede65b2a8d425862845ae09dd465d0124479ba902c9b1e43a4933b0a02be7c948f6ffa0490d842646ab6bf8937c288c6d0fe4295bccc7492505ef23629b33c7c0293df1d664b277a65eb0ea9ae8a65a0d8465300a96088e0ce7c731ea920c4c7716953a328bd6b6cb07d4d13142ab139eabe84d77612394e6573ea5f9d52a4af3ab0b12461912cc0ecefac7b7f42920f6a8570bc561eb875c5a48a27d3695cd448fa32a2470edb349822a765363b7646056dcea99f813434f25b5214baa153d38ab05845978a8cdf4c81a389199ebc698613d78269147c98e040bfc8e900708bb312dacdecc7bb8ef3d199fb3285551c9b17ec7984d23a4c0833dbc478e6f67e36646f0412e07fa3f6652781c2815adad95143219d847d455e99c7b169b9dbe1e221b024bfceb5ee9be86267a22813fa8e533c7f365952cdc34d9a4fbf82d48ebbde5a9b3f88bbe156c71f0a86ff1573d78d77fb06430b7ac79f2c44008bfbf71903e756ac6faf691027e90cdcfbd2e1be2b9ffe96ce342efad18f015a042673b63c257691ac33e31e53c4bab76abd7ea98ace4ce653818cf1a98a6128ce7a2d56b89350675205aad889da221d80971d5626aff11f7beb282343eec4b2073113dc496f823e6895417c2509bda403128368182f829436985f738bdb4ecc481873295f48132951d93c3dfb8d26bcce3424b98c03b66544c6fecc6dc141fc3cc1399290c872f23e8f061b296a73e067cba0a033ebd30918ace3d07fec37fb274c457a1dccd5c32e4591f7044b011dc0cd83fc877869680515770e212d18a70cda8ffff5c0ff0da71ab9f357ce9348d468f9a9733391a044bcfccb359f468e907c7d1b416477784d2742feaed6a2b05d43fc67ceba8ce0bc73938a0cb3b4c18ee847a1cd17d86b6ab4418c42c22d7c4325002466d20d7c46d4d2d88bd349cc3393c439cb1f08e23c46bf8ac236703bc1ac0c19933df27593a9fcbb15f2f76ae68a411629e1d30c8591ad802b70a745cf3684bd4070784209859738be1167e69d5d6d4215293eb6d5d03fc08d03f62ab8f959aaf5ff1bc6f90c38c85b726607ad067f48da7035e8950b972e1f3b0e8dce12548e46f7e6ae8470cdd5dc9ca6096bb741d77e35de7b7eea39f1af635d37d38f6ad9d3cd1e34a35c802c3cffb4ae6137b7683fc0762e423de551d4f1d5a8398e0dccf19e51825f0362e6c841e5a4808e61598a5e327673eca1e7242aacfac108b8e4ab78e1f2a25d4c2896b4d1402bf93432bccf51f3e3784a86d20fbcc2d20c09c0e725feabd182ef91164f2128991092b65485c91ea01d250ca4c03cc96dc30cf0d3b2ddfa822fd0d121ed06b422f880b66c7b60503d8b97804499a53241203e8398522310f9143779084292996f50699f147f7e29ccc64522e0ab3ffacfa545a6f7458cc481f6fbdb68fee6cecedde9999d605e4aaf34f29fbb816f9e8fabd10eb624bf4d8ded6bec644246873c6d7ca59de7a83f4ea44471ad4f086125ba98b88aaeaa17d46f1993f9d580816af1b1f43bc4d67e9086d2f2e35e57b498239fdea416abacf44e3d0f693488a22f8a209c1a008fd7cbd77142e875085e86d3685926b2745d145eb086731b128a5c8f18d87e851e9c424170024c4128a3a77485d3144ad495140791be1bbc855ba834b64a62fe1d182144a1875259949b4d64d5501112f60418dc4de830cb20684ad9fd948fc5a0049cb800808303da4007e789c9b7fe6c6ece92ab83b1aa6ef1d5cdf23a87eef8d82da4dbb853d3bba69b42822b1cd160544c7bf80b7c039fc32e760b7cffa42ac894b7aab2ff5b02e6d4f97645fc306ee9e7ed82de042cd5175e3e27ed1cec1383aaa4f1e9ba9276af0067410d07bfb4acd4555a8c5d5148e4c966228ff9915a283adca020d556cba6a4c322493d194ceda8c02bf4f3567394e91e667b2f487e90988bed2edb9a2c0fb48c7d20e344a9981c7754f1ccec973ca06ecc9f5d533cafcb26224ae25cc58efb1835b2c72ab6968db517405a62bd51d336ec17e3f55c78b5cb3a5e00a1e082cdca20fdcdffd324b47b2bdd165578575d7d233695187b8f57e6736c31ee30ea8821773c0149eb54cc5d645c75359627acade382d9361267b599a4b3156552f5746538d55472a2f5526fb374991b75b970670dfc0bd44b7b87921470938c6c1d571d5f2cb47ad5ac24d900ae9958b8d5373bbacfdb3fb8db63ef7becc75e5317a27b8bc2a79c75f09204dad7c025e75c73391e79e9c418ebcd93c9395244fe6632f5e9681c65c3d8672a20a8917cb9e550313a37e6a92b390d7a95aa07e78aca471522678335996a8b5aba6b2942eaa17fc0ff2ad1a1d3511afa12b4fa48ef3eff53e3a366a258c4006265c52d2494e097eeda1f4b4d9de63465946b96e1354839497c4b09584fd0c5f8344b8e19e727963370bf214cee7d9d258bf990a204fe97f3f2cc4fa0ff0e10826202e4da627ecf712321088cb05fd329e166a1273cfbcfb098c3d3308bbed90613a312c07dca2b22ad4525f22f460a77ec16a73b228c0b00041181ca9cf591f44b0fdb47c65da07d82554f4d16699e782e2db0ce0d012ef8432a881f8dde8a292a2503727b5d28a122cf24212cd903d1c15d22e0dc009dbb05f86a3aa0bcf6d70065d79d519adc9a3dd8aa0d945df9c1cf8c164b0f09bb8f8be396e2021ee78834b1695124c035c56fa523b96822cde0314d9a50d7658c0f2f694320a10eba58503c405daf85253b42b9de09ba18af42acd93ec88abf63fe4ea06a508f4d5906c76d538931f556dfbabe066195ff3872ca9c379fa40f46b6ae2d5d549bd8c5b814b8e69674ceea970fd2f6b2b74c94f4f6df9b683057ae6d68c9f05b1bde2a078e784890f9a4f2f7fa27dc18db7b04dabef0fb9f3ac01be1de5cad16b861ddd0434bf9e0c4b952d2ad98249118dc80932d397664c39b5041d0424136e9bb3e8b78f2a5c02088a75a9724c6d7709bf8709e42131cdd0884ae5b2f49b98a7da35312fe123ef2944d06316a4abfed18f1ae5ad93191b4baded73ee416d1c16afed21360ac2686c76e0da7ace34963a484b4154cbc368ec9ab34bdcabc5ecda2ef6c1494ff3274bb844889a11af6a260315b9a721cfd13106cc9af4df4c3d6e6831fa4a3f7dfd38a3d7726308c987d528e326320a15a4961d73be211ada1fd5471858ed513293d9cba4949d06d5841d49a48d669d8f927294c0af2e13409204fd5ae66355108c4e83c8f7c44cd1b846e8d5690759ed406e8a438194ab888d456b56b6baa2f58b1c7e48411ef956fda6ff396c5d58491fc4eaa58454731b276a9a143b557ba3d3afd43b5d41cfa00dba2b5305991b1b7f3b1e7e0e47d418f10a2b40c758d3859f83a4b0ca84f6a38acf45ab0563805f6b6cec033b30cf683bc85c0bb112fb40ef9c11f08b309b6d5d8a40359be3c5917efa13cfef04d459c910c5e7119144261a2a324e029ac70d1e54b5184dc12215dccbd389b8044219c8b9cbd8e3c3dd7cc337237cef5b0e56abe33fb834cb42ced4b5dc31b462bb75dbb338ccf286bc0152ec0c89b55a8db5304cc28a0a141461450d63f3bba28a35425e514723aa97534a54d05cefacf10273dfa60b07830e1600220678f75ae6d57e5a5632d72818d12d2e33a743d289c6398590b7f32c1da5d55224e507f204037a556612992c7baa08078f15c4b2015e1ee13a8608926f11a36a5e5b48fbe73125063962ebc39c4e66f48038cf40aa0e4966384914f3e3d69fe3b880ec0558d67ac340dfe94a1ab7744023f72852b526f011bb05cf4ca1c97c81f3c47e83e7a2d1ce410c68923573e40402089c2aee58e2bbe07785bc867f0c11d5f5dceeb9a42b2d5f6064d9b85fbef337b1a80363fe61263cddf4b9df74d58478458087b0fac978ec9df7766df836784a59a6d72ce0e327cf731547640f607ca142971c1a03f35dbd73f9f851f5bef4e78b726aa242fa27f744568bb971f104f820bc85eb6de946329de67a4a7a221f268f2dd26b32840b0f73a987113c2e8cfda03b8dd1456597060476c23c9928181ff993d02f0c1e585815c056acb5d8e6b06001ddbd72e2a6fa516815d05bab5b87b9f25840801774faaf0fd44ba8ca23b041b94ba2109e95402eb6ea265a1ed8c4b18e4e008b22a78b7f70e3f17eb37a30c372d752e096eb31091d742dff3cee51ceb7643c16b8c4eb255b2e94b66136a0428e926cb4c892ca08dee2b23b2bdb81b835d5542e212a4d55a45757b2b80fc3133bb148b084f890057266e491b70e11d6502f61e402ac927274454ddee44b1563ece03122ea7fdd354724db7ccf613afc46c3788bbb2f76f4d2467a5b756ff172529fe543ee68e4ba44f4255e545e8b64a2836cbe9bc62a9dc60a2697685ddcf4be5983d5c828357b76b1e262076dc3fbec022fdc7da10bbe97913b7da330c2a9b9d3f133d87485753749562a02431f62821b91e4cb992a24ea1e177926cb12329aa0a4c7c88bc81a6196e48b24cb969fc930c58966f748dcf9468c927c24b39d3c9d81b6e975a1c9f5c6db1ebc29d1db167d54f0de455e8c5399659016d8a4ec48f3f90262af2402bdf83e4723fbc52782134b047c9728e9603193453a6ae7beb02847ded9b8ae1e24076d66da9a773aa48d4bf3b492edd0cef984087860948cf51bcef8330c179bc97b16f2a052a835f2fa6df24b63994db008198bc46ada991e51df264a5db4d2b84f36870b29291246e902bde00868cdb99f0e7d883c787a4c9e886591a7c4ee829a613cc692d41a3a2ec05135c71d868990fb2a21f489ca327503e8dec955cec8e4ab6bcdc02800715738e337328c8d98c1c1205d0a5777c0288109584770cdad99c5fcb615aa970d9f85fc36d955080e48ac41fba844d11c42a7dcfa179c44aff37f9fe3688538ec48baa1468e25fb789fa389876f9bc1c4fdf2247858499f15c07cec4cd88d67236da3155208b1d3e0cd6d4084422b186a4d9bcd8ecd7fdbcc1efe6978ebdbb47c9ed76c80105781ea93eb434fecd329c0578d9d859e3909eec8a9a8f575430fec70ba5e6ce19fd4d39fe5030c76796c616327db893051876349df245f3a313e25af16692e2ed94a5fae36db369ae0142556e226598a1ba9490a6b5c229e161048aa5a7253adf198029b19671688eb49d05e4891dc2485ecb21623b5c8c660c550188d34db0a639944e68ac6ec84e065696e7c8ad2d2c27c0444a7c5423069632fe02b2b09fd3cbb7bd1dce1b9e7c2019d696a6a4a3b29317a2a3b867ee42ba2c2bde76ac5d8d91b6583801785bad97521eecce281918933858080641087933b3819b2128173484f9e788fa3ab7042d81bb522f6450b969ec3326367ad2332d2ba918dc16e4c06cfaeae3159ba96c5b2026b53781d5d9c5a3a6443b4b7433b1b0567d5849af5f6d096e6528ee1db500acb5b8c29b7876e00a046aa8010ffbe1efd1eaad0b8e1603c6c16bdb575a313c3807b2e2d7745e3b21e2c1a261ccb30ba500442fd8da379fc5af217adf9993accf75532e63cbb39d156306196e4d013dab9a7ed1ec637c6dd2cf0b9891bde343982da21fdffa3910d682cefb2b18998d744dc739ad7ed6e4b9abb8c68cead17864f1a799a38ee22843e3b80b02fcdb65d32dc4def4492475e095a594d8aaa45e55bf399871e1160ab12578ba448f24a4a7bf759b4a4d23ee4f40a9a45b2fe130876103f620d062ee73553446a7d3f7aeecf0a84720749e712c04ef58b7b0c62a49ed89b786e63f8119cdb7405fde05422c9b215f410ae61abe4625a044620745b943a4ca5a8920c4d20d35b99f5e6b298e0fb8c4dd3fcaa2ff6aa5629ca4adfbc5c55627363e32f822a76c570a1f13580bb520ade438d44925c8f591f913427934a7ce55fa5e56851967a585359c8819856d5bc1cacaf5fa5d57431ec8fd46cfdb5fcede72229ab647d6e5ecdf5f922cbd6bfd9fcca0e7e5fdd8857477ba21c1552e6a540049698038c9868982d8a0234e2a8edd44779b2c832ca4a2dda27c9242952009894e2466619c46e4fafa61c78a76fbb7d9d1672a26ec11e413f48b9c26505c8aae02b076fcf58615075f43283f1684a4cb3db006f1a74e57a3accb325e6d150799564ec193289bfd751b14d1438060547046c931ff51b549ac77814ccdb8e46bdec24321de17bfdf1bf5ca0356e8f660d80acdd9b57bbcf083d34ae70b69d7e45fbc53941935c15a248c30f0b669229c85e089fe0c733f75ae7ea985adaf95251fb3af4cab8468aea194f1b44e3306925a0678787d1019125d78009fa95e9d00635d3f2674d3f8e920cdc05d1cfd8484e9c9c24b0000c7d06d3f26716b7c3afece203f55ab5869a4b82611e25450a69ff82a9fe456c81be97cfe82fe06567a20755d3c3f1d84e35de1a643b0108fce0e283db237daaf6f24a5ec1b979c49fc1e77617077cdd204ead9bffc78fb5593da7633310e658b844411ac4bd7a2cac8ed24f7d8a6ee391e1b7bdb541c1a81be69327c2ef89ce07c5f7d914035ed2e17ee6b5619bb355a9792770526fac8b153abe9f7b6c16c69a47d7a8a75e4d4bf3f481eebf5037a52cf4e4d6a97c3ded57b2acda79729d5e25952afa8b52163b5764c8faef2446f927871f0b838f394184a5ecd87bab17d8903bb7f6cd5bb2d265f0fc048f32bdba5ccd064c7f26af92d1d259f4e48c29b9de726f20d6fb71bed8198d6426714590cb300e6f3eb3cd8cc556b82d05d6a67d6b02ca0dcc4c30a82bbf7766e6b16a745e4c19a7dcf13c9c7ed9393ed83bf871202e833e2e697d855e31c0a4977cbf981d1de8d10c3904f9c18c456a9a8bc9a25a14525fc712ce98a3287f2d8da714f3d5080621b6572e7f183467555d4734d717331a6ed806b92173879844a5136dbc32b99417d7140d3348ac7d1ec672a991fd81b9fb79245ab2615763040dc58619cbeb74248f34c977ac57407c2fb6201cba7dd358de09cafa7e8b4793f419dc317fc872b8f3ccef4b6c51d804e0d6311f8b8ce829dcf1b404a1973e6f55b1909770bc5cd847fdd99c2fc30f6bf60a4cf7a05a9654f2e9f8d2d72f38198727aeb931dc9b66c86709608c0ca24da27e8cd9569391331d64ce589ffbd6c763964bf85eb68fb012b9bae98a4c6ade02c4a489282b3917a43b1e8b4ca90f9ad9c1ac7a6a2cc52853a5cc96a27d534d9e77681ec42f8d545eb1283534db2b8da584822cdf98c109d43bb83272dc75e2d659b214d3643e07b577527940f4199ba525d05963ee36661cd0a87302a5ae653141f519849288853883e8ff26d03fcc705ea86126671060785ea86b9086dc288baadab7b02acb4e97d43b4996a14d067954e8576e3143ce878577a7785128dbe8bb45bbe14cbb95c7e9e33207617f7dd85d23d52ea599c2e5ed259e5b35bfe4ce947cfd45a56e92625cc25a68e8fa4591c958a889119c572551317d8e84c0aa1783725b2c88c6c05ea46ec89b8d97965dd80e8b160ec60cde5b9796e2fb6935cb7ef0ae0a6c58194491913434b3dfc8a689362696317e8a368764c7f6aa774be3873a08c8f2c3ce02ce810f30162b9a69c170157a5e0b2fe5e65a90feaa41151681c3a2a8344239af7bcb00a0306cf3277f835ef0f7d173667ec0d4e958c4e6fe4b10d1b960011ac399c7c0b8f8324d40ea132738b520d23cb74bf0dc6bfe2878379d3ac068b0fdef602bce9efa764bac094a17d49adf7685fe8d5988e0e746c768cc0920dc8f0b9b14cf2b7f512f0f2cddddcb1d8fc6afaae98d2cd252760d5e42538b241f27c5185f87aeb8d403d6ffe26142347709eb7be9878f2355719a6b96063340d52fb8782e7a9a75da7c16b6a0d44fb52317b608d7462fe017aed786958265ff8275b562e570d46ba2853b04305c080aa7bbe2712598cecbd2439e14771070fde7d6db164d94500b77c90019a39250b9c5dc17bd5ebd6ce61c4c4d9966db5b0ace6b6bf2c47a0a44d72753b3050d3d6e06ea3569c31ad560f777c94317ad12733227b9f54ce41ee57b151a50950606597273d71ab05e440de267b9f83544ca10bd7a988f68f48c42fe7d21cb2acdafe0f9eca18f9d9ab00f16c22a00721c6fcfa6fb593e89c7f2ef8bb4f09d12fd3177fd217839e1ed1488038df29c773a2cfafe889603f5871186e24d4b3374b12d1e3d626379f2a4d979f2fefcafbfee0c260f7061cb20a28bf89e8d198bdca8cf9d438419b8b728efbdd56c5db62016977778d674f1331ecdc31d82a0090ddbb4a831dcaee19a687917a630ab3a5cc2fbc8c7e5d7a53836fa22dfa8e243d726e5ae94490f29d2ca28ad22b002c6db262e33ebf34fb4f4f9378f8f0f2f6ca36cca13daff17d4458b10fd977d49552e3e48393f5557121ed370ff0cbea3435a7b201aa54b2de847a3530ebf55cf5b86e8c013b478761a4e96467478935d88e64a0b08830facb149e59b4068cc52667254a98279c6a1efa9df17a40c02288e920d461313b5f4ffbe90c5f284fa68f3168d662c9ae198a06f09461809fdfcb999dd230f64cd05d62e6294f2c5fec192d11f83ee35113076bb40369b3626bb331cb685440cef187c5821082524c64b338853a7f94316a0924d20ba6c362dad373d36bf267920d43707e2d266ff8f8d832ab9c847cdab16b7230834377e54ce7fb1e6ed9e9aaa662555267350125830abc34ea663f93299a75592a5bf017ef15b9e92dc6ddf0f8889713083c6fd4aedab1be3ba6e2b275965e36672d0f1d0996a1ead6c180f27d08b3d2d27e96fb21628d53b896799cc21f22a893f88f0f59f4c1b6770967cd038cc4593c2ed069bedca18f7b9dd052db3cc21421ce9b8d35c9ff85f1d4a735d576a0ef1896119dd2b66c19de1525c885e7d8edfd350803572b1c7228a08ac217adbc2ff7dbf8e58d03edc01d27a9b21d7075d527cd1da907f3003a0deee31e835a6e96c06dc0b0073dcf3d911bcb8f9d448e615d8cb79266be6fcd1d7d8505d893e751454b536fe75b105ddbd64a16e34849fc1101bcd267419d22ee35a181c3c4cc987c02a501fbd6434528bdce53587f0691a4760d4dd29a43e982897a9884dab24d97e3c5be86af504fe7e0be3a0ebccfc54466579d6c2411ace9cbd22172ef1bc03f5024898065098f63d024a139f20986a0540ddf26e9bfdebadba3cf509f56a037b86b8149de93cb40cbced50ea7d2431b6a61434a64caf166a51a2ddb643706497c5c6689379e31f694eea623c57f533d575ad3b5d13dcbe6e30bbed35acc73b42c2725bb42394a7d816202c0061b73d16918a38962e332569bbc175ee0781504857b45a9d6e8c0ebe431eb122b2becb99f28f8ab1efba680869538bb6efb7581177dfda39b86430ccf18e2599d154b0cceb29ab5be065ec8916232db152adad061861ec6ce3207caaf164188de4dc0b320696cb603f561a732ada0b6e5b8a3c03970bfdec078d2f4552c8017ce951ae36f3a35273fb370a3dcd2f92879a9f2026b54660bbc968ca766594e4f87026ecd4c0e5460d7f5a56b6fb1eac9985db9310ac98e0da6d83218b543f40f342ea45914999621499a55a68b8f9071b3636c1e8364033540a8d49d061b448ab4ae6224bf2ab457225cbbe78634d4cb2a568a38e0864be34e14e575ce210417aa641c267334e1011e80ebc0527820c40c2527139b20fb252730751175825132dc2899a99b8fff23699cd4146ca36b052735835d1768a3166be8b744892a557b91c77bccda5b5878658cd6f0a430b1a1ab9b86e837f770933b04afa4cb131119e7659ff30cf9fc3a65dec060e8f61cf874b66086c17e3bfcb2aa9d211feadf958238ac412992f9ca8d0bc22c958e59917429cdd85bbdc773d96085ca421af1d2e9d663820cb1dfdabe74cfe86ae02391fd236591ec555b06e89584e957071fd5facdcb6d6c7cbd4324c1094610d973da148813fa4e48c976e167438eda69969c3993be273770b4141b69e729ba91f0121249aa04aab94db82768579cb4d7ad272312ce5df1710f2dbdf8b51a6461f6ed2528ab62a049065b2e8d95266e4fa67a09c9ed8a9e5d468a7153dbea57bbf4c9a8e8869348d51f4d0ab4541640b902225d9073ff165692adbf904a88ee4eaac014a0e89b64d5946b43262b965a046d3cb987146535f6dfaa9af3657a5beda7469c62d370ef1d3b7c3331361c3393f1a6980e70ac1ad89cd4e7fa4f25152b5e3f536bad873c7a36bcc449f43a8724d691610236ea07f736bc117bb6f767ede3b3c3e315aacd7fb7b4703d1d28406a6d279b97ff8f2a75ff64e7607a26557973e1dbe3b38dd3df66a049bdb3acf3ffdb38c0aff1d25b62e227f96cea3e25a14d05da6792e8b680cb8ae73d2303adb4b0ded92ab791a62c4354b68a1bfbb25b2d67dce509e4f9ed402da6e6f37c476e5c61da594334df87c90b01480f78b255c6a2532a5e6b08ac364887651856ca194946424882e617796d6fb5d0f0993e6a663a3915e21595e9157758553a22d8d395299dcaba620e212540f65cb38d6874a1aed7743d693086b45722d675bdd6c90ee6593141f3f9a8877101e3e4be787a015a0e028c071dea4d5682aac47951183b1401da5748f4b1f5e9573eb16c020320c599bdc8515da0e0b997cb07aae00b87b7f623dc430c23de186cfdb3dc17701fd357542b1d6a2c0c2e5e427d8d68bb8ef97959c1b3cc00d76dcf9d2a80cecf63e7e649008f7e91becf0cd1d0a06fce34127577cf6b98d679d8a1951730de8a4a1aa13a1636a11f005021f1523f58ae7309b254b932e4c8ce5289d2559a91f65cd91e937ea4ad13b66fc79c065cacbb110f384311fd5b52cb2645e1ecb09a73091a146d1f7932708a2ed2d05b900881fe8a39b39ba28e8cd0ec091894d033c6cf57d1d1c75548707c6b60dd0c8a12136bc4acd63d08ce8be0120b48a8c8e3a0a967492a99b928c8cee9e6c90be390aec98e293de632bc25cd75178683375e74cfd54db51482f4c58d4fbec432dfd750348862d9b0ea5bfceab8e5bb088cd27c95b9d954724983d5c6aa02d307a8ec176e9c45a30f02b1968cf884725f07769cf1c6a9ccb31f7f47af4c8bce1fa2393de3c79a2e933dbe59327222a398b2eeaca769af18d2ff0a387f6472bbeba5dadbf17f60c39c4c39fb48f1fa3878a10115f3f3f1d0ca66e4116138da52b4df2430e0ebdcb9a6834d53d12d50656345fef3722d6bb8fdf2cbe3cb348d251269ffc6e564c497814d81da2d918fc5a2289f9c3727cdb45f5336096ccb31c788d9b041dee216248710d263b49a6209d7035653ba4b74253c015a681b2a1466e24a0cc646c839ca0b34d30959ab2add9b6d050e4b56c0d2b08f7bbd336d4d2e678f9141a7927e4e290457e505e9dffe7b85fc6ff72ad398fedf32fb49f7830f7d540c5fd616cc2ec247c5386c2da6284ce4c0db60ff7cb31ca5ba091876e42961f3c5d27d76c32bacbb705e8ac54cf1b8381edc6e64e2b3fab65e9ac8dc580fba106aefc2363c1c6f78adbf3528149b93339e399843122da1ac5f1cb2b251231bfa5621e20b2e125f8dd3e33ff5f1c3b89f0590cd99834b7ac0ad1133ff3ce716c4d0df889e8894bdcfa4ba10a710907e2b2e901f128cba64a615095e021398075f8c8751438f434275b98ae1e890df342cb0cc1216ce83c5948216fab221955f107a75200b45d564597cfb7ebcfa11e02c6c9e54a394ff4fb4afb07fa3bbdb8f6ceea5702021a167d4803d95e6fb79f0fcecf7b1fcfcfd73acfcfcfc75f9c9ff7e1df4ebbff45679d4b63505fbf0640ce3659d20f8ca788e55ba8bdd89ba03da3e6364da451b270cc857e7d934a155db127ae16b26491af1ef19c9f2c2c6d115e2fdda98b4bf097560788bd0dcf1e595a5b00cfb1cb498334106ebf979452b4fe326f0d1c09e46084c9704d0d5f5a62a138205450b89250a4c2bb0977371464a0c4c0b8c5325b1f9345c037452f22198e373736c4173c57a8d38ee35e6ab2f97adad274272bb8f19cdfd2099ab15e4ff5d9bfbe21a9af09fe8b1ac4dfa41826a51cdb2435a9bc99aba2725329d1ac2dd8a0da50d82e510b6b3762f3b1983f4892e979ae59975d10239337dbc78fc67ea4eec8f5c05ec014c7ef04ddc6bc3eccf4ccb14613a986eda82d756ed371e0ab037b03cb7ee57485604da5574ed3459a8671a159ebf0d219c14348703fe7b75df443976698bf2eca2a8462ed21eca03d9c739414a5d43d5c2256b8346f62a5f0119c2b382597b7a4c95c5edaa8b17eecb63f17ef60dd7f00aea877a5cffd11f3a58aa80c1370c41d4188e64417a1ba9d1c72ad342fcde9018d8676038b311c0bf93bde8930bafee078de114bd29e6d7405e5f17f574a936d3f9df0d06a645ca10a63b1908f492c9b96620353b1815a18ecf3f47538af47b474b9dec8a31802202cf0f824b7297a97c17302f9cac97c090385514d2ff19bd39f2c4a49377d551efd602d88cc857002802e99b3b33bc494bedb05cc25348fdc882c927c6ccc173164e095bcd5fc6521cb525a53209b5c669e2d4abd8eb3345f94a24cafc0c47152a8bc12edb5cd8daee86d6d7485ac461d37bd49915c19353f0e90d880f5f6f9f9dac7f3f35e67bdd39f25732678d76d42ecaacbfa5591ceda5e70fa5728be48279115b09c7822e6495ab0055085a633d3fc2a936ca72012a70d0069c8146003476a364b7433d098b9d98dd3eb14950c769e76cbc051cb167347adc6f995322934bdd3fd787e5eae7bdccca70e776eb260cf68041720ddad953ae2a34bc4476fb321328891ee7bf3be99a61559d5b4cb0e88e6c364c8092d4ebbdb31ceedfd16335bde9bd8554a4be39e7123a9d04be41d399e20a2829a6e93667a640a76faaf50f96f7dee430ac7eb18cef2b6583f3f2fbfe8eaffe8255d5b67ac1ef0c434328accfd5c9cb97db4960054c99a0c9c45d619cfb4eb5a73b8179daeb85fddcd8b0b033cecdf8c704d6c763a1762c0205e90d532704e0ef7d18dd5d81203135364406311af8bb24cdd08b52822e1087161d4bc0c2ea5aae9c2d6d7c55b55561ca143fc80a521a454a1a90ecfb8d3460b1531269aec333094d673f1c8bd8d03f74e769a1d2a0ccce24afe9256d323937b9a2791606111f1e1d38ff7d55521af203b73922fc5e51a326dbd4b7ce5c063272964deaa587039cb2194763964ffaa3f109b1b624dac7d25b67f1067fa555ceb8ab5af2eb052bf90e3c5887b4a265d316484a3beddc9596294883db18949f331e7c0596b4d23871ec70ce699f084a2351062c8b881d80ab164a16c9112273275f477adf9caaed7eeee9befceaace7faf5731f766e80977e19fae38bbe8e86d79a3d9da1b081262af0ae108ba3120542006908ada9a6fbea58816c15d28ab229634f173596343797b986d5fa9b9a80ab0d3e031318106c34752deca917158c0c3e85de3884abb7e89d53c524d3f3154712b389b2e730160316fe7698828d0878dd775c417ba5f2cdc6207bae76212d4f7aef3ac2efa5596d7fcbf5dfaeb80f8521b6baa8053dddeb0814a89b241f94602c9d447453a7401cf9943bffe328f98bbff3151338e808cad98abb9a3c88dab39feba8740d8ca97ff45a26a8fa8e69a9f0649b51b602d068fbb166b58cbdd0cc6aeac19de8780facf9aabd8cc2e7911947da620143e05b3b31ae68e0b3466a229eaab6a2eafb32ee1811addf7cd8b501c13e9280873f3809ed61ed853a5e6b57e424061477a1c0f9d511859e9015d45a6c49ce3ecb1662637ff1a5dd7bf67f8482e4540e7ae43d23237fae9d7ec05b91158eddbc78ff78cfd47dc4c184bab8a45dbefa2680a5c3548f34b0ccc95825c436036b640170d231dc8e56de5834f7800350b8202a7d988632ca50510f499ac2486b583bc63369e1cd8890e0bf541e6811d6add1c134e7d6db1ecf18f2d71b88af5d68e2b3c383cdd1d80c37b321ae941a26d17f9f3c2335845a37997ca85a833524e945152d46d967ec1462973bc23568d676e4cab526613ce4adad84f942dfc7ef1fdce3dcf491be327eaae0f7181308844591a57954a89a9cce66296e6e9241d91239a1d14262e67c0f52b63112005e5f2beeb321745ce0657f46b9d79b3c5872aecc5a56daec18f7f0a80ba4aff60d3e17b9a0cdfe32856aa90a59f21a19671289954b2f0a8748c772ea58d7a4b565291053501e3622b6a43aaad5e535bf00c49fff0a913fc2a3b7226b08f9d17a92ad2ea9ef1754da51125ac3778b1486749b11c08f66a4349cd75440449b1489d6cab5d04b646b5efe27b362b5efee489b00663b21c2573e0376d4a8fc07a28f0f0ad75d38df71235263288db77a9fdfd5397fb2ca1f6d0307d742f516eecaf9c2d6b5cbb59e2fcbba3368251eb85869537c0ee5ef81ffef485771ed576140deb2e7adc02db9f2b8f3def028ba3aca8f3c00d33e308f7ebdc46e1550d76e3f5cd62a6282ea288de8e15362c7aebe8eac0eed9c3d0f228ccd0c0cb3c95702dd102a31dda667dead45dcdff4386de9b0c2da7e9a40aadad9ab9dccf6637a11f6eddd8e05a62c22141fdb0555a8a722e4730996e4340248851ea35f323a6dd873bbf17e7cd6aafe4e6993037300173feaafef589ebc76ab7ef2ebbaecfb3ecb29de835745e124e4d5f254535883d32189921b498b2cb24f3f1fd9b79f14e3c638aa8291849363fd1f8ef613b6a9e163ecd33ffdcdcd3daebff4aa1dd9ff47a4cd3b19786f1e161e034047d030276f87e81e00a39a178f50d4e3c1e71fe8fc978100e9c9052dfa351cf5d6423884d4c51a489e603daf9e347331da497892c41df10fe5557361f090efb8ad50d607460712aae1d60b617792e357390144bce2aa413719d96e930cdd26a29a609c47f1b4104dcf1b9351282d59bc20bb48d8a96fbb983b1765c3d1304a23d6bddf6d4a2eaa949cf2d608bb15a35539d3f7d4a61a2da7bce89ab7dee3d29d7e85ffacafcdb532960def54fa052fe6561fa20c2caca187dcd440160ebc5100c5df7c95dd31998afb6bdd9766008ad9ab18424c5851794cc03036c4c3082e711783572e3420cbc78527c47efe3fb799f806c3c9a58e3ed32e7d9a280ae90c968ca24912e5a0f5322a1b81222aca0c4cba5594dab525c4e721b0f7dc943df9c4e65292d20970a739464199a6e42ef782bbb241495495ea2b870a91610d2126081d8d4c4145c8255cb5c161355cc92dcfac657264185fd34c2540699cce5e8034b5567df19bb26aff3f03dd0ebf76ff6bcf0213de08909f71f4328cdb30524c23511c793cc48c46c2c470521958c54a9e49beb32312d4a093e0012cc4abe6381c0c1750a338398602fc3a44c47f64c24594a21f4bf3001ca874bb22f1a1649b1743bf6ae5c80645e9f0a8cc767bcb3bcf4d297c0e15f76f1548209a882ccb47844c9fa73874683b67d5c2a58487f33e82c5a13b3ea46261f6ca0744d1f6140062fd2398b17e41683980bdc0bc16fa3d90064069994db044cd2bc885085e62d4c5857fb4611309324deee90c020f070e70a998c035fd048b0b0fa15261824a557b914328515c3d85c6870837183fa54dda16cbe22f005b01bfe80709e30dd81a571be002b5b3517bfa351c72714d66c6f6e6c889ed8032b23b3523c5d0c4844d5842c2bf4dc103c097b06627363a36b4819d68b8dd943d145b621544f4ffc32c580a69e86de0521d193ce55653ba1e201507bb17edc03f3c9369ae4039c3ed044d4ca9d8c5338c864e0ec3dce7844d89d14187b6b0a8722b9fdffb1f737da6ddc4603307c2bb09ed4242d8a9464c749e528fe64894ed4d8922bc949f3487a24900b8a6b2d7799c5523253bbe7bb88f70adf2b790f660658008b2529ffb46e1b9fd386dac50efe0683f99f58d24694bba7d317813f6c96509d1ff0fcdaa2566bec72f216b6533d5e4b84946d27c31a97e489567ef027dcfe3fa9b33611f940a405bf12955a34e45544e816ac2c44f0267701e49a814a2837b7976dc874ad0302d03dd804ab50ab91df8adc90cb66d4f87996eb9e21efa792ac059ea531f8e9be0dd4df29ef7767b4eeb93af16e3b728775bca031059d5a664ab5d6b697425fa73a2ff5031db2d461fb29068764434acf074030e55c9bc585fdad097a7231e7d76c0a186708b876be452570934b76899e30081cdd612e5b6df4d475bd7709a6fa86da918726d07b5efaea2a1ad3cc72c80cd7b25d59a5bf7a8225bc28f06872cbc3956e5fbb407c22387aa52aca3e95fa8aa5352088b9c02a7a71ca6e36ddce764c646f3283d5d3474a87fca2bd56b386f0a02f8a5b215216c5434079c42d7d3ad941063e60bc60e36952c493844c860849ad8dd4a90ed55567aa9cb97bf47330132060c2e525fdda58a71f8d8df53f35cadf6db6b16efdf927ef6fb6cadcf66c8d7d7d3362abec61f9746d637df296adaa176df6f5e42d5b638fcddb7208dfb3070f0e9e3d78b0c5f631456324648cb510b0fc9b96448acc6137201b2ff9f2ab95e23353af6bac7385982eb4cb7b9c872cfbd37498e5c534e585507ba80601db8f397d3316c5120bb457734a754c17fa48c0750ab90b338a37d055df4e6329a7e2bcb9648968682dbb0fbf79d87237f60eb728aedde26b74f363afd1cd2ff31a255fabc017be9f5ee99fc70c0df9501f3d66d6bfdc81f5f0655e61f374be63eb1eb3b31d9b627f2c9b1652f3b5a45199b978b2c3e440a43c8f3326dec6b290ec7624723f7b0f3a49e86a0b54e2dc021afbd4f5172a9bc7678ada8db864672b681b8cbcefce56d8fffbffff7fd4664230976976b6e271917450e056ba15a6f4772406900dd442165a12aa238f0ce79633eb35168942498e9447d69eab229fb980bbf96ca5c8f90406c32a1356d79401172b9e5af7185fa559ee2e3a40d573434ae3f2e02bcef87e1989945d068ca99765e94cab72a6b551d2f20522601a09b0e660397cbb44a6a2643a8f07a5ca341e4589e037a245c0dc3570ca9cd0a2f142ad2c6e8e6a2da22b51e1de3e9858795ae4c554ebe1c752ad875f26d5f216c2fed4d0270241317da7dad5635b2bcf74e019aac04c8a857303e095851e453eb3698fc196522228405b43bd28ece8cf743c71db802c46220516080562038624559313b94c3f0c376ac5b5e7d2a3a17a725b15d5609935574f70de6269ec21a7a2edaf4d839d3164f5cf863ac6d5c5260e9e5be3e958b102052a8e8885f3289e06a8a307e93a27869e5f0b59ad7d91dcf2990442ca5912174522f4080d38bb3775e8a496f429244e47e0944b8600b6d8d7f316046fbf773f9ebc7c414bffbeea68b5ddc072a0e804d83030ac2445b05ca49b319c11db45cdc0a5fdf9655bc9216994dd5e967873a9252d1016788ae60badb4f0665619df16ab0e70898bd6d1197a7784551a47167cc652c1735447824e88402a529f4d4182b85167440dfc8a4f9ccd2a6eb30eeb81c15e57261e4e13ace16aaa0db158d3444d49201457b1a1a4c512298d54c982059b643125790f56e4edd8da995c214b9acc18efabc19681afa00f306cab2c0cc7ab196cccc20d151a08a03d33b7724bfd20ee7001d8c96f1653ff471f4bfd1f7d99d4df5e853a0d90ed201c974a5a2a8e2fa8f89326a79e5e84909f800162c5a051b0b84b7ba72b5beb9f912adab98ac56caa4471db51d71b1fd4c82a73978db25b36e6a9667228cc311bda857f30ab2468852b4a2d454ad38c89e1904289d3ccef114b548392e1031015602dc6d0af3f1643bffe3231146b88043e08dd2742df22a76fd7e0c3f3062440a7526a195641c3f5e19208a219a221f1e5d74bd27793e2b0743937da3320bf90fd87e748474961a08b5081ca274cd0e835b975485294bb1c9ba597a5228e90e7c82d1be8c27bf000dc961f3cf0dcffe12481b6359f4e907c0fa639ea8cd02f66301b24c2e8accce8d12e101724bfe0d192a6daabbb44c6247cf7b3a0802c3e0a8f3ff6283cfe328f829afd121c16b1e9da74b68d59f11c658331abe9e541178d1a14ee78a617ac3e8fdc1468a8daecd2e45c863fbc8cf3c46ad919409cb4127164005a35069ad010cd8f3cf18a1e385c1acdc6ca91ff016cf98927c6624a74c0e7514cc86cd8e12565894fc9186bbed5dd497d4bde8ee20129e22d54b7246cf75ad6b76fa776faa9b8018aa28b5e69e99fe0e80a0c0171a429de0ec40468c1a5cd5f5c5a67a2b2850146db99f0b24cb6adca52e26091ddf21c39032026b5f61f4d8d9e95b2a6e69c3d068834b45155f351592d4bd9f1297856f87b31fdfbe663e9df374bd23ff0a6fa080208dfdf85029a0559021d465a61a97708efe180f4a086eaa2b76606f14b4b3969f84d290ac6d965c0cfcc2a1f4fa772c04b99c61d1e9142bb20ee82211be94dc957d9d01edbe76119ee829f6a4e8bd1f3db8f45cf6fbfcceb794407be8a9b547f51920fc52c21e95a130d3e992471a9e9f4220b8b8c5d09c32a1adf9a52807277be34e805983b35d1229b0e302bc4dee14b50a181c67c928b09cfed41ea2e75d4e425d8c8208ccc730640e3595c90ee89b200510401aa2108564cf6e0593635ac612e806abaf0e9680ca6b2c8c690c60d568397b756584255f2d8e5b75faf5f828d177d70c8aa0277448c3503fa7c700d37c3201b4f78411eab96b20514949061e446e468022deb38bd911dd67b3b51129f8d551231344eaf4acf2b86ee69c460c529e55d6663fe26cb1dd89eb3d107a9b5295e10d6708993f8f5c79ec4afbfc89368afc23ccecb8cf36a32dd190c4442595060bca6f1fe1007a04e0a7898a9e12b92fd70af8c9de494e0b48c35b634b206d4a1ce1757ba3e98fa4165913ff493287dc13c5ec91b6c7579fc694ab23b9ebedd36aa6bd3e61734d3658ca783115d3f7f436f92a6a9ab97e538be5687edfcb4c3fea6ad9518d45ace6f578b11b1a42288b96745bb021564ca388be25ca076a5f44c00339a55d5d19ef6db32e5f2b2934557dcb953fd554fd5774ea1a9fefa79a76aca59da339d9932d9e1eb6407ae0bc4431d204c143b7c8578a65a7239dc3b7cc9c63c8d27d3c42a6799c4e3b8d07791455889b41b7aae293901b515c8715a882b48d25bba66c690f88a7136ccf95828fe0272aac6e256d33cad87d6349880452281e45ac66fb33a6c504dd75d82548bb374abb0e6d4369ebd9e863ee8d4a56e165444ea6c025858ef52e748bbd4dc54396d753946a8395773bee70cf22faae3e0c0d0f70629316056760bc4850f46b120b52bbaae44a479fce01ba3bc7317df177ffe58ceedcf5f26e756ae41e8abe7a4052ebf413f5efbbb437812a64b9647988c150f4f973edbe86cac77d6498cd4851ad0f74ba1957d8bb985e5fe03ef3053d3f18c32ed5a150ac109b57438bfa4d4be6ec90c308a118988d3723ada5c58726e04b32cba114b36e1d298358c677a6a38f2cb2cddcd05b8d49323f76bf2b01ff02451bca4b4fcb05939569db29736d7091232217130418754c263ff5bed3ee4456e94e1369618613225d643a89406b420e977c9cc287a32aca0ea8334e8e7947b3951e7371e6a3aaa2827a4b3d0effb542fc642ea39504154d620c3462294e05d81b8ad6faa2263d769764bea9c8a66c0efdc51c455cbae1f542d08fd19fda89b8fb3ed7453efa4333881a6955e69e052e68a86a08610207fe049fe0bbfe1c7e014c6d26c2cd241c241c8688aab0ebb44b3ea332a1d3d776c308de38f1e202ec7e71ba6a5d7d411d3ae7ed3514bd6c3d1ee9eea005ae1cd00ad92320d8e3eee33a1dd52c0759c1410c73651c6b6f6906e97951e8c83f26290e5983e2554b47955a9b88ec743d33e5a00d0f5552381c7d6ae57e27df650a56a428eb43d54a18dc52d65a92cf2e9a0c8f26af4963640608c4d2452aa1688f419e15e9a7ac0aeb06e03b3c274a05003469fc9783c4966700f58778bc95e2df918e9318e4f21adb60298ae75f413157a7f984766341d70df27f768ac918e4ec90f582a6e69a0cd5c0c214ebe0d8cd803c6cacb68cb3c0ab9ae791a55f69edae27fdfb79c0ea9403961c059a57e795dd5f11b9eeb6d0c8410bdaa5a8d34c7897c0a6d4669dfb1ea491bb1d4e24bcdcb8ad857760a95ad212290ca5b13b30fb243e98060d899b860e87f9ab2c6307e2ba2865a61e10ed4dc3d4eb627d475dbe3b3dfbaaaec72809a81850d93ac990b19ff2eda0c7d88302536d5254f667a173b35e341203d8b45b686e3bc7438606fb9022ba5048b69912986690003c108045f136d497a03cd695d4642167936d3a1867563478887e91e36afaca6f7be6e3d7789dbd2819bc6b58986194b36003e2d729d7e6da30eba9f90ec96666bd9c48bb1c048f62a3f86d4e0d261dd2ebd096b3ef1bd3537fdcccacda41f355becef0175f1e259a2393e22a15c33a1dab11abfd3868294786240b3f877608bbbb04c95d4da6dd6575c149279ab1c3e81c25ee5bf6c6d91e976d7169f396b8b8fc26bfb82acce259b3fb5197f742bd46c0189f326ce37cc8c1935b4989918a5b195dadc0b31756f26778a6654f61cad4bc092e69d12ee06013462d17dcf733eae860f576e67fb7b5cbc65beef76d9eb224e24fc7a09c75fea8be2958e0d2f537cb4fc2b03472a19b7ee401b27ccda0c126e90c6ac170ecde2d5df9599b1fd3a26142f5d151b4c204455e0adef48575121a8ea8d0b90cb7a38d5d8eb5f21933e9a39f4533f96384b8534ec779cb2537d119f37ff870e9fd49ef514a35d7665ce188eb78c140f8a9cc6d5466f5cc99ce87c8914e1ef6479826b781b6ee327761d273da36dc30b499ddffd7bb6c9eedf2f9f9f6e9e439605a30a604fdd975becef3ae110a084a293bb2331b86eaa6edb34d2b2eaa97ada91839188a68940bc0e6124b34b49fd3615b2d84963d41e3ccff9583461721d247e26931be4cd02ade154939b4828b16320a2b63199c5444df3690ab1594817d281589b887cad8807d73a63280d77aa87a98135adc79d7e9c46f0a085d927816afefd3da4a787d34487c9675ff52e90165689f1569fe51e39199b083d34aa95b97231651856b4035a612f7781c32fd3be4bbad36d2e49bf4212507961bb58cb2d767a6eaf395482726432575b2b59132b54bcf9eb54e433760ba137b96c39e3b4b38594bfefdfb7424bdefc06df3fb5b270ac2b2474d389103c2f039e82a4a3eb3418cacf013028531916a11113ac6b60db112756367e779b3a4e20bf3e1078d83bd762269bf376d14ebf5401d86a051212a67c6c67e7b9088fe554353b5f804295e6efdea93bba3a10f6b4fa8c3e5144c0aa79a056f0480cb99219c1eeaa9b37d0c1ac890bc3b6bf67e017e76281bd94f60a86e7e8571af256866848b900fa0563aae516fcbf7ef6be3d7f25cb2942d5c32cf72dcdfd192ad5b15947b5a8af0b62ea5da08a7e8df5f197bb8e25700c461d09c62993131435c37a113cefc705186c061906cca5d64da24ea7220d3add931afc7430c2b6b1d4504c54a312ac4bc3415c484fd1ed5656e25104f4cdca9381bc585cde344ed20c03e4598fedfcb273d4dba2941d0a9275db5e56b601328e5d023facdeebe78724eddf0be351e0fc785f7a1531bcb71d6ddab87f9fc5525b1e2aadd000e1d6cf08b7a1cbcbbabd2f2c7ae52161db07a2df03550fd5d980faee3159cd30d4836eb03057a5b71db3a6818c1fb8fe9a76f57b47b22516c39c1ae7a5535bd179e3563197a2984e102e1009c510611ce38c42d4d4b53ee0a8e4d1f38139684542aaf3620e988c8ba9ae9d825dc00871237baa9317ba8f66a54c62b9ba1d7f9efed428f73946c43680d54436c83e0d3ad700cc05315d9d4898a53e7367989dda7c5b649850298db0d02793c57438c47cefc771aa04c162da979a51414663577ddd7c4558744acb7b2d665bac812bd668eb3d4ca6b67c866fbffa6a23c07f119ba3c41164739cbcb96de67443aa87ba7ee875b8237ab9644fa1bdaceb36d4363c8650cb65a78e46e3e546146c5cb32ca1a6356372ad9cc7c46683f694b6b10cce99a65a0d01550a5eefeb53c56f789ca82e4bfbe2ff8fd266b88cbbfddad74f6ac3627554bb599208933c6c5ac42482db9171b7795c40c13f14c14a525eceade0393401e57669bdfdc6640a8301c7b29c0e72fda8643370e274904c23c12e9116aea9f1c8ce1b69fc062e4d42864bd3bbf9fac183bddeaba3deeecec9fee1c183075ba8fa819c14994ebf884b025239782a1bcbb38162a51b71138ddc83229885b144229071a6b6801c58d48ca8469f81b73735c96646f1d5082549621a48ff81cb53868f4287009e0aeaa68dc2c0bb9af29ca785a0dc1a454671c14c8af18dc83b7a9463c68bd235228f25f95630479dcdb47245974ca507be0a9c2db4d47feb23a0d67d2c8796efcf9d8478af74a2e2f7702538866e4f8de159bb41aa242d1316b84d0b910ff940184fc684b469862903d850c7431412f4b7948e060a8438398238941d011f9b348b846d38d1c19b78bd94686f5ff45c5ff33a115182d8a953b20db22c8fe294176491b2bd41f1b6a29c7f7a00ea6ba81329dd98ff07736c28f6ea6965c5411621ff623e82df07cfe8180d055a2263e924b95103dc570b9c8a82f5de4e922c1739db58b78dfd5e8fbea5adf41e01e5a62e5411a75765ce44cc0457526cd8649d6a2fb47895bd06d28aa99f2e835dd80a7a677cdac3074667557ac631a5ac77fc58b11098908f9b684b2c5a37a2a2b7faa8dfc47931e54938d86151b758a071d97e294fd6521d53163c3a1048d9b6595351816c4815ad41f5d430baa7067baa5f6cb1ab24ebf3a4d5b128e31303ce8a58b2f29d5a0d2ca399fef9e42c156f21dd1769ef34455869af74113577b3c90cb9e4cdf58dafd92b9ef0b48873762206a3344bb22bf070d84f071d70e883a612aadfe437941510e0bc880722952202b51aba52ed4cf86024f49b36fb99a8dc66679d355583b3157a77b6428706fce4f80cac0b86000ce344301dec83b54a92b8d4e617651f1d43411410535978904dcc2d412d192fccd0d5bf51514cb6badddbdbdb0e876177b2fcaa9b6063d97db1bfdb3b38eead6d76d6cbfc8c29142eca29173678674c20af953a2e09bf8568b4ab9cbccf63c302b499cc86c52dcf51fd1dc592e238ecc5d3e3c44020d3003279b1b3959d63b67f7cb6c29eed1cef1fb701ce2ffb273f1ebe3e61bfec1c1ded1c9cecf78ed9e111db3d3cd8db5757f9313b7cce760e7e653fed1fecb5755e43f17692ab5964399630d7891e8ff16634c318921fab1147129e5e4df9956057d98dc8c12d6a22f2712ca54eea0570c0cd93fc272b93d387261e038e42bab4422671ff620379a0b315f8f36ce5896904e2c4011f0ba99bc013c84b69b7036047820f0add2e577fd84dfece76fa121298bd9ae662371b4fb254dd4feff5179d4eb7d3e90eb2f1384bbb3cd4b6d223c82be5d81c08037c57f9a697e7591efe44c02b77d07bfbc7af5eecfc7ab0f3b277f1eaa8f77cff6f352386f49feeb7cfa64591a54efb3e3ca2ff78cd7f7ce4341d15e304fecf6db53ff040c6832c85ff73db1d423cf2cc698a31ca33fd5ff8807c00629e64576c1bd8166d9c51d852aa3c2ee4b4341010e2742e8c620c21b4193523b1dd7c8eaf9b7e2a786c0d643a9d2609bb7f9f1e75c00d936c00c660d062efde69738411b81174c708bd9d5ca451d84e65fa055ceda0d44b16a026ad58db9a1ce62306ad272a58d426b74b09cb9c8f2d8d8b9dc39f7b472f767ebd38de3d3a7cf1e262f7f0e06467ffa07764f4e0232e9ff1c17594671334e96bbd4b3b38aab39528be395b99dfe9defece8bc31fcace08e407402c4f7cd3056eaf40c7b42a0b5348f436b61ac113331254a9f1595f1cc1f6fc287824f266cb853b8a932817694b97a57952b3c5105fcc0ba881219d9d064066bba15811802ee222118cf0ccd3d7610b7586d8bd4a03af2a3ad20fbde2bfec1c1d5c1c1c5efcd8dbd9eb1d5decef1e1e048b0a59bdc8dd24930269c3f148093a1fd7e7ee8bc3e3dec5b3d727275edfccae4d145c456b3bac41850f4eb7cbe428bb6503d5902101036fd03c9b80f38231f065394cc752f5c6925dc53720a2335ec6a973a97d3f35c384215db74289cd90c1acdc450b4b824b585b72207404f0d3b6bde0672b3c8ff95ac2fb22395bd962672bd0c9d98a55a166cec9b336c1fa40a1d45670048a8c3bfdebc6672b72cc93646d9067523abd638be3f877b105b740e778ff7f7b172f768e7ee8958ddeb7ac2f20e7144f8ce7907e9ea5bb493cb8764eab7a96c9d29461d4425e9d6dadd4d3dbed17c15a846878eec338064667aed5c1486cddc564dbec82c349b55ed0d1566fe0a7a332ae3bf7f5f3587851dc8524e3219d4b8f3d54403470a6b860dfebae8e1f1fb561d66d5ca15695085be7a81926b97432359da5510e787a88b1d5804800c6c1b2581e4e444a26e033531f4d038de524e1502753c94f55166b55f12bd8189814b31df80c742c417612f90e12c3feaed99af74a04c3121198ad625b0b12cd063d6ad82a9bdedb89227297135e8c4eb2237125de4e2e6da11335681dec07cb33972d9ff8ef3b50bc591771aebe5632560c184cbfaa4d8aec5aa4f224d38a072812e93eaaffe8485cf5de4eac4ff081a7a382fc8c6a1e6ccc8bc148c91839cc8754ac56b27c52b52198f78e33e9ab9d931f2f8e7a3ff4fef68a6d830e075b354fbb5df65201663ad5e760c4d5fe41267f500660ce3f1d89a2e43bc17327bab6188c2026bedb450d0ff804a063ce54a25f2865d1a48469814ed2465146c774ced246f38cfe755a8d3633c3eca1b0b646a53d79cec7a2d02124d3744d094191fd9c829b27b918c66f618c65a5059e30391d0ee3b7427610be907a825c6ea9d6f0c5d94a77ab10b2803145abada7672b6cfb7b767ab6d25504e76c45bdc45feabdfa6528987af8d47972ae61e6d9b4101ae6d90a0398d687e19fc13eaac01f2880e53f6bb80b7b703a7b70b672aeb6e3548db3db396f3d6d3edd6a3edd527f6ec1e06f575bf477b3493f60dfde9dfe9ffedd6c9db7565bea57abf5f4ddd24d9ba7ab0f9e9eb79ebe837e1eb45a8df3ce9b2c4e9b8d778d569b35ae1cfaf00ace336718966ac4f59cdfd211b38e0aba889521acea23f70daa18b7df878a72b0bfdfc3cc3fe690954554d5209ab2c843f5ae71186c9b9d966579ae85227ceb65bd1c08f9b39fc0e977eaf112f9df1318416ad58655a29a36d846e6f5bb77acd12d3fcf4dddaedb91a270cd660ea5672d2ad1116fc5404da3d5aa30c250e10288b555461dccc74442f0d586fd8a227be10dd6ebd1c531d5e456b7d5fa7764120f4413deb6e90bcdefe8552138ab6c4cae6d58ec1bb3f7f224173c9a9971a047ed00689365adc6b716d3a1c7406fca9103c35fc4a9a9e8f5def6b703fb1a8cfc148667cf17c90dadc4a6fd06ababc1f387f6f3019f0039c5578fec575779369dd08bafed17265013df3db6df7159883c96d7f4ee1bac3ef96a2a474eb231987b96925dc99c134b4ee3c5c85a2b6a3199ca11be7ae2aca241536fad263c2f62280d492b73af542dc03a56ffd64dad39e56222b85af372e2dbdbacb1da5018ee3e7b60d77b34d4defff2e9a22f23eb88e156aa0ffcf3676f3cd427509c80ded077ef7003b50b9bb58066554ba725d5fc5acc5657cb925cb00a5b7ae1d4596e9897667c5be54ff3524f7bcbfcb22a78a995dca2ff967de1366de91fe685c6a62d76ef9efe6d7d0573de32937f4a47e90735ef263d6db1ad12299fb246e70194cb3afdbf065ba5f61834d9343369b155d6385f7ddad01c75e99b81dc004f67362f81c94e31a9759c5e75ceacf2f94841be034283a4c360b54383a68a81c5d65677fbe4baaf5a62d2f536535b885ea73a6d761a395d3a47277c70dcd278d8c62ddfb54b6ca8b9d7c0c85788f124e145e9f16eae3b057bde4567fdabbff3ac7fe1eb4f774b3e7fdb6df2e9db6ebd0fd5b8230e3a742f3a532ff9e666e0226db92bf32a1745a18ead480759a496261bb2d747fbb84b525ca10b74ed5ab853b21efaa307f8e2f5d1be1168a0eb19dc8fce2c4c4b78d5218b6fb37b7a76d67dfa3fe7dd2bbb10e7c0577f36fea48ec2a0a3307a378bc44ed15c6f758a8c8ec5c663f5c7ebc944e4bb5c6acfadf7deaaf46008e851a84f9b61873bec381ec709b02290aaaa2866971889424cbb4cb8446efed3acda0e8de10e6bf5cf5a281427b936aec301d212081e34e0d6627dbc01adf4a83aa1295790181fe8708c6e799829a6cbee02c53af485c192f1288fa0bc06fc26c1d3f4eb490824515b135183474fe77202ed7f96b326b09ac066b2987dc71cc04f58bcbaea286bc97c8bad4ee373bc29d14fa2617107346668618b998dff6b3edd527b662074f45db1ca1aadaf1aae0b9643144b3cc8fa6f8018488715f5f90eb8b679c115b7d87f837ecf155e4022cb2c2baf112b4b86ba8387445d693554806d055e1965d71d17db92138c66e034f60bfddbdb815b81e7b0e128abf5b506cd9e384a6c9ba77534e2aa775df05f2de2297c0c0eba25530c453991bc7a03a34f039a731836c0d2bc48cbd5b32ae654712369649845ea83381f61dcc43c80d4dc83e7cdbfe33093957907d7a5aa66858b7c9467b780dc27b389002340b38119ca44c4ce560c9a6321e555d6385b51e4b66f3279365a7617815d007e053560b8a4adca5adec32e907f6b7d9a11a659a11942b812723110f18d88d8a5fae22fc787071dc4b378a8c7a53ebef4e7e38e141aea402485acebde7017a246706bc29bf37193ef0b26c69362e64cc8da226f76e66cbfc1b3fd867dc7ecd93e616f9ca3adfe699cde26a281cb73fae6bcf5c4c546d8e4929e7640ff445fb72a0b347fd6ea6ea89f3974e2bcb768f3d9ca12b8a08755c586ca21d387b2f90671813d75ce27dba23f1d19a0243641a8f3085ab9de08d792403c0685107acbd9989647e096db910fc5c1bbed04b6d31384168da0993344082babea9b58d447c6f460b34da8c9e58a5f992a4e92dc67204b1760c41ce9c3481ccbf08fb64858e11e95ac6658c6e66967f5c1d3edffbbb7f5d5dfdf375ba76767e7efceceba67676767e72dc54b36d4cfaf361a3e0b8873017d0848eb8aed436d4b9fd448ea49406bcdd308ea38ce9f2e80bae3845166862fdd19c3237bcedbf7b6be3a3beb365b73e7b803b59d608ed7622621934e9967c6a46856bc676026f7c89ac072e1bea0cce7e025ef0b87be05c29a23569afa49cc6433176df8d8cc12e2c1d8363cb4ad4bb97067f483a0722709bf924084b9b68998da609a7babcec88b0a5e7a77a0b7665076d59d4991ca181c439fb2062837e28627b24e9304b227c15461b47c89c55767d17ba5d7ff6ecb8f5d699318e8219c4de876c1e99bb3545ca18b6b9265d77c04153f347d027f7befbc94620bfe49c6b78ecca6f94074e0c366f7ecacd97c7aefecec69ab7ba529aba2aaf88d21a1219e997a09f3cc6a069e464debd462cb22ad3569607d2d1f5b3a34ef4da9407383664bfd99ffdc28d0fc17a502adfa0969cf4af70cdbd05f1588ac33646da08b68275a902d6b018090390fdb344a55b12d70d8cd5773cfd35c52a0800650316438997034e89e6a492884228070210481af4bcd9bd3e7697cee774b48eb28e850fb0c34c6156c49aec52e8c6d0aa4da46db231a4e5c82430915e0e03eeeea5073b8c36d2a47dac0389d4c8b79fabea568c7c7ef26f6b7c4767afa3e5a47d4f6e157babdff7d8dfac6d580f26b4b75838516557f90b290366d1eee1b0e0e00b88d9ad0e81d2e516bfb7d60fd2a0ad43bafa3b72ef8677825811fd56222e08ec178a3e4c03fc17b14bd03cc0eebf4907013bd7ba73f79623d35764a3a048eea047e95da13d00914793c282cdd093e30ef956c5fbe547f1907b1d236994d21a941a38196bd021268408a0e5b63a67696d230645373340dfff9016aaef97a9765b52e387c634b24ee153ea973dd72cc85d5cf885f6f39da97d258d8b0156b8e52adf1a47a3d9a8138daa43a4d82ee65b5ecc6080fe61d6bb41e34ea9c2be788f5961223acc0a9ced174de6836bc21b49e3616a86d4a7073c0b850cca42ae09602165c158320d43270cdfb76470727ea8cfb2dfb94c95fe262647b0740af645f5f339f1a3b984266f314cf5dcad22c5da3133d86ec03026d048ca39100eb5f83d50bb23c2916afe318ca8a8c784ae41b8d793e8d8c5b0e4082d8444a841617707007592a21287630eb801f14342470b1c44a46de08b8e527d5067d8e2ee71c475122caacdae88dcf31d716e45781c90a88e382c9b6a9a4f2d94a5749f9ddb315ca349e360a23a5e32bf4e2395be994ecec3d5cb6d26a4134ad59dd9aa7ced6acb7596077b6b00d30157412cadd8767db5f9903f0be1c8648236f08ea207f45ed1c9c2e77dc5d045d53ac2a20cb521ee0928da7f05f036c9249091173fd19a58ee414b9e88b1466ffc89fc2b6dd75bcb11336debf1fc0712d71359f6e5716e8dd57ad46c0da6a71608ea9427d0f7d56f8b7208b7690e5639ec4bfa31ee12abe11e4b087b743dbe140aa4a93921bd94951fb48fc3a25e1a474c97169e1455ec0aa4235ca9288b20d50552ff544a06f9155c25c3ab931dbb43397dda91479772b8e2edbec5201bfd415e71ee840627679fa7712a81a71d468db3253a3db68572425574062efcf2f035c571357e81dae3c16536b85a4dd0ae755de6b8b0dd81fc28555c4842f9e033bb37c0e4c8eb16c4858ed1b50437a80ea408929b6c7d9f2898c9e3db834f8ddb822dec20e961f862314f8e7da1345ce52079c168c28b5a8eeb2b6c3aa0c0281a314029f64039e3ccf727e25d8da1a3b1c0e933815ecb880476db63f9ee4d98d4e0af07399cfa0f3101f8d8a6222b7ba5d003484af3a5771319af63b71d6b5c063f3e6a0c536d7371eae6dae6f7cc35e66bfc749c2db5e982983104d357c2b37ced0c259e2648da3f4f6363b5b416beed98aa2afd4805212dc83f765daf815b3cf158feba136b6e3f5627546c50bb02f3d2cec0d5f75f8b8bcaff051f3f4bccd86adc085059aa610776e45188787ccd815dba6662e476e41c128e48550b0592d144880bb08866a5423195c9559fe1c2ef2aa63618bbde867e9fb56b312c1411ea3712adab4616dbdf5b642a2d443378b364bdbac4c3b584af9cdaccda65e9cd6bdf4343b0ff0f6fe53f24b5493c2f5216f7f1640097ae5589200ea14f218b60c855103bab7deaa348c4d9338d4448d6448aa1cb4cf9cadecf254318dc3388d34e637ce56d82acb20f2a14111dae61f5a79861d7218385b7979b8f7fa45efe2e0f0e4e2f9e1eb83bdb395361bd619add408123582d3ecdc4ee2a7fed1ee6cb1bfdba6470b925adbd3f5734c1793e8f367fbcc88c0d28368abbedc383fb5ccf916c196cd943d6529db62c2b1e9b659d266563fa2cd348e04851c84a6a6d6b131cd730a8def880a67ae763843b93e63dfb1dc88f499a31896cd5c61618d898be255b5d278638b9d5a81b591c8c56f1795236341b78e1aa52db0d7bc31958258d6c6137fe75f4e3122dc10918e7e72d887b40220d7d1ab5f44ffa7b8f01b3c7121ea1c3e7b398f6d6f8f8aa95dc3a9d89051b190604aacf527d597991e1a9e1b0da8a918f7937870dd0a7ca3b3b59a7946d900f3b4a3fae644bc2d0eb248341b0dff73dd5d877e340956db1f382b2d737bbce076fcaec160dfbccedc05b323df9c17cdca3299ead51df232326bb6ba4a3fffc436bdb9bc0f792e0041a36591a2d81f8f4514f3425837b0460e2125bf12bb239ea622f1f367847792dae25e05e134fd15a76f3a0ad1373a593ac6e60003b7f813aea2ddd9666792c98246d75cf7c755bb7a0d8d4d0d2520d1ad7dff3e6b6429e81a20dd1bd603b45af838a823f31a282935aaee151f3ecb6eb7d4e17f87f0bfd708f4840a8eba03a56c793a73d410126b70394b07a33c4bb3a9848ce1035ddc3f4ea5c8cbb45376c7c673d1cc97ed654c666d568ca692fd36155325004eb15878c1e575871d09cab954646c9008c830a6bb6b506919c4f28edf23522135c35e527bde2b6b5dc128668074aabb589754b8fca731b582dc8b21a7d32499f7d104b2e42a6ad5416dd5ee284ea2a67e3fafc33ae8ef03d3f7174effa0a5ebf0c944a4d1fcbe8327e69321b514c5493c16d9b430b4bfcd169ddab3aa629578d31cddf5bd0b4da1a740099875bb18d7a77b03260052cf0cb274887a0c59f0c1352b723e10d2f1d2d2d32a31c39d91ee5f7123b9e763066c4a9b6549f457359ccabb04ec053054cd82b81b4a115689a8deb71aa806e02d9f357ff785629bd6362a88433dadaec6ec3b16eaafecf1343eaf1c8ff73ebce0d46adb5b8b581a74022d2b1263ac6fbd27c14d33af9b8a3e053c07718068dd80164ac2dc5097c03d3da6f9e4bc39cfd98f7eb4cac48c6db64046644ff5ab2d365710644ff185695627bbdaf9b1ac8ccc6df6f7f7e7a42fd9bc2bef5ac39d02be1b3e649b11a4e646b948dd072c96054ffbd384c51878079a5bad44f33670ffe0a47774b0f3026a44b81d8d781a255e726d7c73d4fb4b6ff7a4b7a7d0bfa1ff68b81ec8cf5fbf78beffe20535327f79ad5ef50ef6f60f7e8036f4db6a51c1c65779368ea58d8b65727e7cd5cc85cc921b2b293f733510fa3d7269fa739f490bba089a4fa14e66dfb66ed7fbd83ab9e0698a4fbcd7415a82d97da7c5208388c49b2c8e80ed7767e54c476fa6efd4ca8722991d61cb9311665ba5d362966b81cf332d6f999ee2f46c65c08bc1e86ce5dcb9f5b3f448bc014f4a6714265f5d2c3bc548a44dccb160b52e25d52773ba858fbd0e9f4f9361ac781e075ecdfe5bcd3d1400bededaaded6d0b89dfbd630680ee62f1f7fa6c781b622dc63cfdc304274f320280b6ea8235cd6e5790c21a851a22615d40e560b067bb7ee64f9d25dbb2e6ef10e6697a9bf34993c65c2256db41e4d642ef7d7d1cf0ce5013873b71bf10e31278dd9ed79e42ed356be84715d50c46dda13fd7ab18d3afd0964d2aa4aa160db7e75322b57a766bfbdb2795a6ea26b41be3f7c548e4bbf69b79210155445f668465e33a1431e3b39abac30b7c16224666872cbae0cfbb2410e4396e8d59df6c1d42d2a6bd776d665ccbab4812eab9bab80bbaa7a3e276eaeff39d87e12dec92f357ed3fd1f497ec7cdeec3588b98328f3a77b2447bdd05f3ad4df30a9b5c229124345237e569f7bdc7b91cf7c1ed56a4cf36d7a43866133b823abfa5e4391fcad3093f12155c34f9c216c1b8a53e9a9b60b8fbd21053b9d0973fb802b485c285eb8d1f2a717125c2ba7cbba13cc88ebb9faa0cada87e9e0981a5a68dfe9869b26105f92cf76c1cdf94a148a07b250acc2514d9302aec2291adf1a90e3d2277b351b888321201594a8dcf105b16398c0c07c13b8d2b1dd52ac1d8ec17cb2e0ce55ad0d876aeefd279526162f4a432c1b687b0108beee63145401c26241bc5e3c2e019cc6e72eb50f9ebcf98c8065d673898bb79d013c03647086e72ca066f99e78efcbd503009e36a5b276cbaedc8275abae9a26b14d9cc70286a9769dccaad0716a66fd374edf9004e25a3039cdc1390dc21228393f44bfc3cf2c47ed2577b314eb3cbed5b34261c3f7efabff803050392af4deb031fd374e3cb4cdcaeb57166b532af7b1bb799c8f6f9ae593c90c162310002852cace0a61d2657256176b17303ea50e709973ef6d470ff3290ff1d8281a05189ee5fa17507a400b77dd8d0545ab8e028aa02cc55ba44a8571531046cd2d3837ec57775e51fe8529ef7c926b8df7780a18f82f1a31de8c771a7291cf4eb2d7c8f3545870c20033adb6de91b9b74ff576b43af9f0ab5123c39c5bb032207b9a38943a760e6c9dd342aba52c09cc67d3b229753e8745536df4845843e2eab9deca353c9cfb252e4405b4eebe56e3aa83d4a64588efd1fa8f92eda15f2152acb12ac0019be07fcbf70cead804099a7fbf87065cc165ada328f512552e3e3431ba66f147785a70bc73c1a567160f2b491cc548fda85d5e98a0cf1b2a4f12b6cd3898892a83e449d28c0b9157082f666348867e4950bd2d546ccf5270519e14d469973041d9744ac54fc007eebce63ea23a6730418fc7379a4bf2fe6bd4ab4c4a0e448fa16a6758703b8005bdca94b8c344ec393d9f3b10acddef245b4944da7a5221670a98ef2051cb602dc09da5b92c60ab50dd65360c22d7e2e5155201826f838505500003fc9d7bee51bd4acf9ee7d978475df696eb51857f355b5573e5cdbbd2d83c01b3c2623297330f387ef8c48c26d0cca6c5cf818b9a6a7c514a1bdda8627c53b35b5d2dd1637b1b50fbfe7df609e6ec09b938a0f9b39e7f151adac8b1282b1f84c93d1f883f68cee7a3399f9564e4017af151c4227728c5b264a2240bb990932c0da88f3e1165a8a882a8bbb9e7e4cba65b9537ba7e80e50277b6b271b6b2c536e88d36083ffc273933569ca63b445ce69b3fbdb6a5a179333cef2fd5005feec2a6da854d6f171e7d42b3fc050dd2f8cc1ecfc6fd2c097ad43b2d3a40018a2ca7a6129ec2ac9cdc6a4173aad163948c2bdb5afc1da948168f34ebbfb16d8ed0869ae35bd80d9a485941f5a93d8fade0304337da8557cc5e0b2b6db65b8ea1eaca6edad9d28dfdc512c67de35fae109971aa090bd958ca15595a86bd12c5fede33574aef3ed0780fd94b45b4f7ac7d2bfad771b16ffe1e67bf977f1c5acfa5f96d026d5848e2b5cebbe965a13faaf6c4d71f2c323ce8e3e80e7ed96ebccf96eccc5e99657bb2bf59b29bc33b777278e799c8bb4f44d676627ed669292afaaa10e202bb13f5d9b6c1dcd0f18ccb61fccc933872f1bb828b10b51a1731465f9633504c5bc2fae00e98b11b914659be464904235d68547a90e221c4ba7a7ead18e117f5eb16cef7752b2b478fe3713c60afb2e960b4f78c8d8417ccd2ed7afdff22582124463f671391eef182f7b914a6cef47e8fbdccfa8ae78b239116f1301692cc661e282ed9311ff23ceeb043ccfc944c93df3b9d8eeda065764562dbf25e717af74b35debfcfba4dfce25dfc6a94a5e25dfc8a47efe25759d4ea624eb494dfc457eac2e94ca5c877ae20359c1285babba33c1b8b85cd9e257c70fd4ce4f9acd27492f06298e5e36a38cf88cbe74261a899c810ffacf8d0c0f3325d6c0b13d21f0e9b8d532aec39c822d140e9646d0302e26991bedb58ef6cb028131202ccc742149480026c0b589b526de1fede335ddb9435ffe7ebafbfd96c79bb84656f092e8095a378321111aac96190ba6a2f1582e450203f12859296e2c2dd4cc2c8e63db3a3efde9945b1cd0eb5741b36b7cb6436164ad28da03a6f3c9ea0df315530cc863037180c95cac85276ccc7729a5ef9889846ecc7935db693467916472c1237f14048f6dda3ce23c673754824f8eeeeef3dfb49cc8e787a253c10c7426c9920490a8c1c64e3ee18431fed08c96e2ce554c8eec6e6b71f0f64f39b4de746c7a5b3c6e92fde320add1aa261259ae8764d4146f06d460e0363c79f25599f6a13b799cca0aa702233769be5d792c52983a06f0dabdb65fd3cbb95a6c60a16fdd5386955b105b8160fd661cdb863aa842b405912b1bf16188664e8679bf1822582cba265b7fdf71c7ee032c2780505bd09d99dda56f1ff1abe4b357e368dd53cda2f8f9dbfb2dfed3f712cd61387e9d2d9aef0bfefdeb96e9be528d0094cff61478213d2fa17a68ecb13b7ac665ecb6031e496c0cc9570060c8f5b652f901116f3181745baf52218ca6daf4cb558b0fdd6f0fece7a073e72df979f391b13face6db0c52a7b57b989fa663ab0d2f857b3a2880ca630cb0b2b3d115bdd661b954525f01407829be829772aab4c3baf3fbd12052280d9f98e5a8fb0f8c1745da758b25d28abfa9763c39524b1a0aae9e26d21f294272c822cce221dcce09c1f6549025930f57154f7d99ba92cb4f7785c3807d0e2648d7a600e178ba94bb094729a9186459eade05cb1cc21c45241978890f1d02b83ee80e3fa386b559c265afda9ba75a9221642e2e9ec96cf58c20b915b8ca3d6663c0cda7bc02f1d617fb531dfe95cbc1583692194c4aaf8d9528334a027156135f882e9b9049472d3c4cf1fcd0c7472a2a6564feea83a335002eaae5afd56dd129cdc667a1564751948a5b65bb72a8450baf97caf0b67adcc7a2ee1d0ea8c61a93e2c27f7a63b83659727d5e9677e129083c43f1cbb5c163a6d0cd60ed1796938deac0d28d8a6194d290a544a5c8b5927384905e75e5dce79af44aa6abbca1a8a7d8d0c5873906264a2f5883a5e043056c622265dcd6c81f6fa5acc42a7cdd6999873544110e32fa3339597fcb279755a69b4c636ce97f2e05900a396ee1e2b5e1c120c64797c15a73c4966943756ced2c185c444239d378a83b268ece90f3ce6e7cd7a9e77adbf79d5bde23177b91fa83add3be9ed9e5c3c7b71f8ece2f8f5ab5787472717c72787473db6cd1ac02aaf61ea89359444d6fa49d65f23ceace144dfd043a92e1b69c798944da2fe6e9616e26d110803d2221adb66b5162590ce20dd29c76d7e99457600208613edec5d1c1ebcf855cd20173ccad264d6785269f2cbd1fe494fb7b9cde342344af0984d95f5e394e733bb188f4eb0da9f0e87226f9babd1d44cb4f6e556c479c464311d0ed9082e70c96e472285fb48f16b0532c465597fb7bf28cec5a04866367bbb0f27e93acd6e53fbf173852554d31f6223b31b910f93ec16d0e0b7a99020d075371efdf9f1378f1f7dd3654d9d485d320a9764499c8a96051473a3af4502fe138f1516a8a1aef5b9148f1fadf573c1af25be604dc854b3fe686d73a31552c6f6e3f49872f580e9ef192c60b31f579d3074f900b51c618b5d7f3ab4adf7044b574a71dbf25c3367afe3b4f816cdfdfde9d065d1420c5a38ffb0fac7f31c6dc46a8456619a8516fafed47280b4f442dd2ec363a304654527e93061323045b2b5280332b951e5aab6bc9fcc2c38a87661df3dfc0644722d8e7ff7750779a74c0a4b2e523405453675b09179026ec7c22e0bf8cf3c8fb3a94474c74ffad32b8965b2d450a9f79b87dfac3dda64cd381d245319df08476cdc035202476a24c60aa1c55b753a948407c93e4d9c6f9141555125c0a591060eb02d708a2505596fc692ec964d218dc16d9627d16d1c09e04b6f058bd47538e283eb19332a28361889c13528fa058fc25356e744a4c51a9822fad3ab52b9a08e45e72acbae1201c76cd21da801c6d3b1562c44a2e071f2348eb61fad7fbbb1b96e817db4fee823a03dfae6cf1b8fedf31f27e208cb3a7f0cd06f1f3e0eae81426fd6cff23cbb15115e49a4ecec80bec56a1ab88526aa69d437ff5568d31d4392ecee840faef99590dd348bc405dacaa46eb9c6233e2944be1647fdaecc07f0e5319e8cce1b690f3568ff519bfbacfce497b81865d362974369dda6afe9b50466c3b0bbdc7396dc8452ed146fc1c720ea778af26a6ad6deac6debfea96a36e14c6ddb0a89d346c393f78ab76907e594e322cb457d57adce645a3415c8366b5c8b59250303404a793fcb5de7f4aae1beac8b674d92c1978ab3bb85f416d15494e55580acf41341a9411d5070dfea949011e99fdb2c89af4532d360e05d2caf09d6d04a998eff44679243028d3dacd1588973171d596493577936e15798bec66fa15d09b0727dc57dbaba56836c3c4944b120394559d32b22a2b5cd022a709d2b1fdb9c9d759b501eb81b4aae43e07ad1d50260aac5d959b78b25c35e1e33f864928b0292b16275221ad5a3cdadcadee8133c9651da19c7833c93d9b080932cd2b5a9ec26713fe7f9ac3b1a7dfbf8cf0fd737feb4f9edcdf68dec7cfbf59f36ffdce172f2d6f798d2ab6ccfe1dd3b76cf5da277efb0a2ee7e5a349d37a71be76db6b1de62df6fb3470fe738b9b76c11ab767b1ccd2c303a4a18837b824b391d0b364dcdfd6b439f2b7154c84d85c0d8d9e25c5e590915fd2c4b04af93290c452abdbd6d108bf88e6568a1af2e08bafef83c7e257647877ad80d9f2cbf8891188a5cdd64712aa46c46fdfd74985538442347b06d4ba638c5d654c0ccc9c603607311917a87e562920b2952cd849812b99a16b16c2272bb909ed539c13ad42d5c5986551b745c3faf39b78b8ea3f0b3965420865cb8e7b7f73da3ad1d81788e14f30600d135ab155c04b3e29d4a3f947abcf29cca178e789cc245a117c4bb01203f12ec7ca7e28567f5da570832f3d7c87faf70a36e271604b10561f9cffcf35267365e661077d1915df0e886a703f1c94ec99ec0ade78b36be0efbe723443669e2f693fbb183004d4c6d1c4b5087eb1245557c70d45c03c0a36ca8a1c856055daa18b8e489f238843bece1fc4dc373e7ef19a832ff0d36ee0d1aa1bfcc7d03774bb58e9f67e7ae44b19ba5a940b65eefdb747295f3481c801bc907c81175943ebcddf588a0b8261416f674838af5091616bf0978b7a8b7f5b3c17f35f77220a199e9a7334832e91fa7ba286f2b59359ec272b80b5cdf7df929eaefe457904cdb392ed505993f650443b7190222a5c95cd31b169d15692e7e239150fd45b19a71d46f13e0d00ecd1f1041ed6429b54307a605529b5e1348228e00d0be13d8b9405e025c09cae67768499cb42452fd71c0c7228409da789c2591ce85fd5dc8c489ffba5db613a9098186549bfe871949c472148f25bbe59271d52a042138d07ad1b8e2c0ede11673cce26f83c38609be45f33830f1e827cae3b4a83192e33fc76ed238b12927167ab470978a3d826965c4292b23e100e96208331914d7b7d75b7d035e71f6fb54dc5aefd1400321d2685e70476076980a579aba1e5017dfb7e2e8550b1f71563a09bc5d6af5bd933fefe095c70384b905c762a1e2802e150d3564d37c5237008afa9caf20d074ce3d95d56354cbeccd1182e74b5857a23824f352e55a0bdd6335f79fa730a9ebea3521eac77455e435619f654fb17c6d534ff36984fb4bf85e75f6aebb15b5477c5e1fb98afe9407e216080ddb6625305b39a7ce0e64da2a789cca20e17421ee65b7294c05ee7cfbe661df59b72b3dab7c4eeb50fdf8fbe0c7ee7a58bdb7aaeeb7c8e3697864d0257951ad32cb52dfa30fb21e282a07943c1e9b5a3191eea7e281eb0dfb1e942baadd45f6c1d4f46c850d78da806032331a8fa04246f8cab285c8aa37ea55d6f06923fafb25f1556a2f23e8e38818a11e4a563c773dd8db73b1a0e2ae50a2c4bb7716c2d6ee2fa026ec2e84a48994c5e900bd5d9dfd6f1a27ea56c7837462fc708a3cbeba1239e36a2d1dc6e56c45e73ed682844ed9e101830a51ea5e4733150caf8234b5f3a263910e7eae5f3db6caaa1956016af9d9f7de2e042ef6ca36959fdf81875d82f2043d4bdf97165b6dcc832387a6c2a8cf447aa52e909083a56a2dc3361484087608d5ead3093a1861cd4bd7b9d2845511c1d543eb66af04f73bad924ce1d822c6184c2d60c666dbac5f64bc293a05cfaf44415731945aabb037fadaae0a4817e02c7181ce12b46cd1855a334c51dfaea00b64afc731545e16b389d8827d015f3d0f7de67322b412ea3f3bf2197814905f0dec600daba0d0072dfde0df87e38711841103db026250e3673e7e90f51dedf36cbbd60780172e10c8b5df727921c235db2c66409f7b450270f16c80ee1afad38e257a0e66a960d9105cfc873c1dcc9c55904fc3eb10cb5ed95140676e27c160f7efe38fce1c7471c7768ce5c875c5317dd35e0217de6c5d9623e9cfd8180ba2c68571cb2c34b06e9765e9024db7ecb093d154b6b1a73cbe11b9c94ccf07c594278ea3010a0220ae95e9e26313a31381328783c7e1039e460f14d85c9087039b60f1397b7c661c7aa866884d045b603e278c59000f041da2276bfcba2f86d3249981ba36ec2c392fb8dd8dd086a8e70b35100457b19704085c8d220f412dd04f94dfdebf5f553ed72a9bfd86b5215eeef95ad2f132e42059970d159da9c0cb49c882f793588ea0daf82d8bc0899ff87cd5802add53613b8d111a55d5c1346c423f879aace0f70f7e23792cd2818b4afb29d48c3c2e7881deea14406ff1119615bb0e778a7c7624689c21a96519a5d8b2ea5cf70b240bd2d1d0d2b3855e4bd4aea67abadb83ba24b1b95dffb6c441aa517651af3cacb4b0d47e0b5a86ca24d425da9bf391253bd6cbb5fe59adccc4ee20ea0796a246c4ac960f017db912eb5d12a6b60a1960ac5a6c7f624da15e5e5ec2e33fea3b97fbc24977bbc4ed43d8208790c4a8cf7285d6221df8c25c9cb201977411f54119a7f550f54b5992a3d0ca7e1802330b6b5d847256c0a37761df00dffec2e69b6a7c9f105467e5f91caeeaf9738821540c77125f0bcd2b4bd604e78ab582cb6bd90207b7fdbdbd67b425e56dd8b6081bbab28df80d984e2308ac02ef514d98c36c3c955fb2bc93f49cb0f66b49e07351e47ecc13a587cd210a697b9b99e08caad204dbb08d3ad1a5a26346ff29472a2b2ac32cd5253860f72c78f10bc5db706053659fed697dcfd621cb63a9c351fcbfc8734bb75bb9541ad5360759f13c9ba611697feb6ee9aa37c7226e825534568b3ac7aa181fa2924286c3d53c05c4e6a06e1bc88442b7924e50f336541942870c88e813b7ccd2d45741cdb75ae1bfc5aa1112eefd0fdf2f4ba743768dbbd36b1650672fb3e5baa7102bb2c4e7ecee279fadb18dc0d82b6638879c86d8c260264b1d21b4b4b343c5b41990adfc3bed689a42751a2bd2573239e2e4e8acb7bae35d44aad9163b3d6f7be08e473c1751f8b3a8bf05fc88ffcd5ec510ce343bddf20000975e03a562d5af88462eb08a115fcdc75a69f7623ad4c85fa69028252e3e2db2312fe20144a1e036a0881c0fe13f511ca50d5bbe9ce4e226c69265601d6ae9a2d33c9d9912c652984aed832c1dc65735bcb792b3a8b06ed3adc38cffaa729bfd0671dcafb4a937cb5d10f79e0bf5e5b02971cac26d3431a2e471d806d9eab2899363a3db653f88c211ca07242878fe144f5c3a74171f914ea7a315a882a42fea648e8b559d5382714cb67d0d90925ec5b210b9a1ec7a22b4d7146449770e844f063ba8f77a78e2ad9ce911b36260c0595e3df906dbdc15f6287b45cc42cbbf82ac276804d4794a1813c9238dde2652a7a5bad69e3a219462ad7cabd50f7945a22f1fb36d5bdbe12f97f684d4f14b901a825435e80d0429c7a5c6bc5c24a06eb16968a78a850a86e167a9e490259e9a5c2f10fc0b7c89f4ef2945e72836378d1241461048a2e2d34388ea1df36b45cea77978908ce7424123fd5227202605b8af3a7ed51cfc37289fbc011b9c8f2b5a5279335fd4ae7c78faa65ee806c317e05f40c0c405bbe5317a48e011809c2f76437b73109fb50c6e69b1ec6bdcde26bf3883874f27fc5a911399f2891c65c51dd1668e7ea3239378006541bd943f746568a5d124cfc0ca0e99e06f47c2eaa1db8588a9baf15431a4c251941802192cad755cc475d509bf4f1c6a5f4e83120011650645177a666bd1ba1394f4e76b3beea605f850d5479ba81491c35dbcceb570f0efac1759a4c1285bda9a5c237d3c315c234c75a836c9de733eced22b59d41f9612bea13fd7487fae03fa91eb807e24a8e2bbf6a9cd72f486b2ea244308b423ff9fe964adc8d6225e884a69d890a2cffcae48165eeb8a2457b570b38005b5dcdc4551e1508a0b02d397b407e83718a15e89c0f738cf8ff5f42feff325540255e1cec6c776190aeda56f683bdaefb0a2a1aa2fc17fc64f33ec75cbaa8790d5fb16c26a93fb8c352427b8cd319604fd666c68e878894e0257a2d05b149ac7d2be5a25749d7f7fae1f257352e4cf5398d9c011704d55e2e09ab2923c574d900b7bb20db88142060bfa75b3ff86f42b7316bdeaa157335a93ab3fe8815776e43da92f9365010d8cbaa2a0f102346c56890e6f58edcb9648e5b2a4016d1fd2b90a96dd881cb89ab8106389080eb1e19622209464113f6feaacb077a67a7fd034831b5f044d530cd4ee349799ef255336c7bd8eb3f4600ac5ddb703de4dec4329e000fa5e960462eb39b4a824a9d83450afcc87793772776782574bf2bc1a37fa44e95a0a347ee02cbc1d585d4561065c2514476872349b14450a0353c9783a0b77ddedb2669aa56b97e62ab96c31ea197d2cc1716f52fb75d96d6c17da4e66f3969a26ab38434ce6326799f58d104a1f65aded1cd770f50f5751115aca4ea268ed9c8dba6b0fe120af3900ffb8c73efe1e0bdc4bd266c4f509fa12f9f1529b5ca3765be24a33e2a14df683a2985b39839cc9b6edb2198a7c55aa66b03981de9609cd1fa8954da336ba65519bda2a4f069de619d02cefd21a925c353c55730bd4f45f15f44311ed4b721c90ade33f91e5407f6d4125ab30514eda28d885e437e2020412f0ba2a13536fac833f437518ddae9dba88497ea3a3eb2f15984b70cc543cabb13775d88fd96d10509c67693c68b3abf8862ecdfef48af54592ddde0b7ef021b9831f6fd445ad95b29b1a792d3f849c85b99397457f9fa99b4c0bcd46d4caabcebe2e9985c42c0ee605ccca91328981f7388509975244953c2de6734d99bb9a9ac6587553f23114dbbc1d7172d2836c99579027bba801960dd9a5d6c3b42e299b26860c2482638212f0f084f4696e0cb103a8a92f91c630cb1a6d5bca06af553a62887b2d8873ab8104eeab90e27bc6d0b403d842f64735db6c8aeee2499c628aaa62c4e74283c1575463ec9fa81af84011ddc5339d19c87dba34e3a3105de45a5cc0cf9e5abfb7e0b70ddc2f676bcfa79e54feb7b14fb9186737e2bf4e95f91f7d09ff2220f13f673fe4d3b460059750d162ccaf058627483e4473c97e0f48902292c1abd04e15a8d3ff6126be082fe44c0accd2da9fb1dd2c8fb21bde0ad0aa6e971d008e2433d5e76d665c182f3b9150d78f22e06a28406fe354c652dd034148e80a7279dac02f1be7cdd625c61e6b87464e599c65212635f4b5db65c3f8ada0780d301d41f2b1ce12b7ece9d90a76adceed67b866e78996cb90da4f2c4d967c1d64ff2c0339120909c080b28b489d8f5bd1b8114cbc1d60460175d7512c787007e4840f448d675cf8f6f8e39ef817dd138344f07cd9c017fbcd1fb4ff0bd2f9e22e7e69f4ea0fd6f08b3cf2e815f09f71e6ff7bcd3c836c9a56f338e969dcd16e53aae6ed3c237eab3f34dd9fe53c5e8b5933fd97985dd55148d97701ab8d29b23f4d926a84bb57e1af7228fe38e71f77ce29a38f5d703ad46c8ed5f713d084bbdb72ef2d30e6829131966c2c782a29d6fb56a0aba548b3e9d5489d85a0326f3e46966d2a98a9ffcdf18e4941cd566fb944c91b23eac0592f9705162ed1854c0b05878aa780a6b318897a33ed2d4f0b11d6fc95d32c8dc53586c8b9464cd80d8d45734cb2dd2e3bd46529da0cf409e808af76bdc898bc8e278c8f048f588d1198e2fc07591ec99a29311b9f8385b1f53f9a34356fa61f6a23563b4626ef2b51a0a338c9b0579490282d465e4d1bf7dfb2fb506763fee3f6fce7dd9ef20f5ef6dfef8ebba3cb92dae66af84839d77ff9e5a609861ae8a7bb9f14340ccc58448896f68bf9830e7d163a14e5d9649f72cde818c11aa6be2c3b671721a314b08a54b5cb0261bec98582d4309482285b07e3249dddd6d1945619677c70af52ff58bfa9560c05bca7d7106fe76d9bfdaa8c68c43fdfbd73c70a4f9f84be2e13886e079e55e09857f60efbe1430be9fe9de659de1576601820ab8ef92f77ace12617a8722a9885711727b5d7f7174e31a3d595531be510582f5002bd904c854ca783a7a1da102eac16dbaa8b18d2b1ac0b6362e6469dda533c7f52fd6c7e3e1bbbf5a284211f9e3264e9a421f53e467e76115f167330cdcaa7e08da44438b3a74b2c7f35df90debb00c9ffc0bdbaeb6e61d2e59a843f1fb355f39214f92d974a2c14dc565aa73c9bec3d7bf5911c6309afccfd8df6469d0ba0e9d0a025ee69fcab9f64836b3fd1770d5768a5fb5e8aeda9cdabe16d6cf575add3c9224dfc2762effea573d429ea97e48baacd343db1316f2912b00c81641f79f270812f166708d3ffaa39aa2fdc33195ca7ea322d9ba009ff352b799a0c5f069fbc7b170af4aeaf1015d8a6707ea79a5df5d9d6a016e343493fa5679893c5a77aedcc911b97258d56aa7835e2b90973ffb89f3ef67e9a130c5b6ec45d6e354caff4396e3625d33bf759db1ae23277db87df65d5760bc8f887df49f595363e7ec4c81bd8a52aaa27f89f7d857ec0d27ecaabd041d7cf731d5a693c1627efb0178b6eb44debb0bf091d76665a06648c3b5d9e9bffd5b7678df4ff89f53b608e93b374a05dbd9d8c51179803798b35ec360d2b2b8d9da66acbf9cb6e4401115b2c9626f2e1679ec451b36535a350dd2dfdc37a45eef25bfa87f54aea57b2f2aa7412deb27e5b0dc0af680bff633dc603b145ffb55e5c8bd91698c69c47129e49eba1ad2cdb72fe325bf02414ab2c7f11fde3bfbea0a5b1774227c5d7ca2e919a046b6e41fe729321268447c90cd359f7c10792433662c96f4ca9f588179cc529c3aebbbedfbf1439a49f71d30bc7104cf10c53b76328452c55f351764b9198b9a056bab60394a79645ced32b93e308b245255684033aeff63329d458c18197c6f9dddaf7a62cbc1a32396856eaf93fdb39ee5decfeb87374ccb65963e7d9ee5eeff90f3feeffe5a7172f0f0e5ffdf5e8f8e4f5cfbffcedd7ffe5fd41248657a3f8cd75324eb3c96fb92ca637b76f67bfaf6f6c3e7cf4f5e36fbefdf36ad72d9b0f45944e7e7dd5bb7875d47bbeff37d5c33ffee12432573bf48ff95f5d1cf57ee8a96fbbff17fab879fa7fff385f6dfda3eb0039ee1dedefbcd8ffdfdedec5cb9da39f7a47aaef8b8b64280717175b8df96d2f5ef40e7e38f9916d575f19eadfedb2c3973f60540bed3966d0bbe7ae2f4c64e7e868e7d767af9f3fc771f0bc3f748700add4c4d5eb7e92f503aff70f4ebe0540aa8d8cd7bf0db479ed349ace69b4fb62e7e5abde9ed576106abb7f70b2f1d8ea75e371b8d1c34dabd1c3cd9a5e2d50d33c08eab50b6b1a86f5fcc5e18edd6c98d4377bfcc86af6f851a0d95df65fbf5aad6cacc60c1bbc0ecffc6a836d53eed2ce24cf8a4c616e47bf0dd13649650fa8e281463111e1270eb1c372ee09156381231fa745c638b38a2658a66d2865010f5fc09021d0d4854f93610fd87ae79baf3d9d7922d2fa4fbcb6b1af6f077eca7d46c50c36dafad7a6f9f5d0fc7a5451d1fb0338ad9bc41adb3847b2bfed07c2dacbb0b616d0cedea193cdba4e02dd94afea18977293480eb30b60d8f07c93507f5680a8abbe791da7c5b7f0217dd2aa6683b744d944a4eac7ea367be44d416f11dbb62e8c0ed48a391c561729f6eacfeb7d5df673b6ca36c2201ede01c46618c4a33b8078e881e83e782393382d583f2e6e6329b0540b7bd0753107f6e074b2ba7aceb6cbb5fbee3bb6c9de958bf1fdf7ecd193dacf9aa6dd7db6f1754b7dfda8fcfaa1fa7a73f1d70fd97df6103e7e5c7efc88dd678f1fd619cc8877428471f9a3dd2cbd11792121f4067013c80c111dc5292946a66dd186b64ea7a9786d914616e3a2cb075275f8703e1aece624d30569108b3dea873571d6205125b6b8e391701a0330ec4f5d1a8d0045ab3f42d055a90b5267e9a19fbfb21e87accdb447b16a23ec29ee737c0e18e08a9473be6a9acf3442286ca28770de001fef0c0f3f3528bae900dd04a08f9706ea7ca970f4bc0e4921d580b5d6ec4fec2190df4d9fc2bbdb69ffd991d33ea26e73bdedbe296f8e165b5524bd6ac4ad1d815fb0f42347b089237087103aafd6d79e54a34f23e33a75061f1622bfe579244942c64cd7c61581aa354fa55fc3274e65914f0705c6735fca322ebb12f35d40d81809e0518b42b651e8b1201af1c716b050d0b164ab30753074a6b9282508bc3f994d843ed22e2a85123dd89f948c9c9d69c3410a889a4fd3ac80a8cc4b8cc2d6e586b2a17d7f5fb22c67723a18912f2287d594c2216a909743b2218f134c04a47315ab852f842c2485480eb89c88bcf3463af95cbb5d07dac9e1dee1163b1682dd8e6614d18940a0039e46144cda1745217226b3645ae8aae081b582e207d60ad92947ac999e43c9032c614537c6fdfbe1d5ec68da5e0fcbb750943792461eb802a4732ba9a94d72318cdfda0cb242300f14d73998d998e7d70ec76cb363153f0b6c1d121602fce43cb4a8611bd97630570a75bbba5d914496302bb9903b66666e2b33e0ea1eefeb5b34985bc61b9b114a7d1d5e49496bba296feb65fa79fd911ded267c3c11d1ddfab305e93b77bb9f161b8fefb28e24417fd0fceed0d3eb8fe86a3f2d1e6ede654e24c87fd09ceed0d3eb8fe8ea7992f1bbf4652b283eacb3c78feed619a939c29d5520942570c42d83fcddcdc6731e2790d405bce421f58ee26eb120240ca6d10a245772feb0ff347de8e1d630f30107b9398b13cc67652e02143592ac8f5740bf1c3b256111a97d395448fcd0d4140d1719b5db976da988e87c3b5ab7cb9ef1c135305d6b836c3ce1051436a6bb492d7539f8d9c44f938c2ed76a5815adea2a5171d8b255d6f847a3bad6e0181a8ee533fb54d599ae5a8ac955d5bd6774a95f112c266aeb2c022c53153703fee666787f393e3ce8e0bec5c399cee3e85d76b51ec5bae63368d29b672bbbd93489d206d477000e42dfcc801eaa2fc2912d76b64229e76a570e0b49897926293d40a8d262f856e2762116254ea5c00c0b38061cd0204ba6e3b43b8c451275d82f824159095b8c769816895f634a06357c8939417288e5192b569394004fb411c22dcac2254be381c0f218635170065d63e60dc854a4b01492e84b9e42a611c54e0936e0298b32a89b286d80d7424c4c890d6d29d129bfe2b4e083a25336b73e3c1c16222de2b1cede010929a0a243642d20ec14d4e8480b1ae4b0cc1052bb4eac8aed50fc1d725df17e76235a6d05063a156f8b9c0fec4941bea9eb388d58366496dea16b09315d751e235d3e636a4a1e18d213721b179e48e3ab3af6cde414eec25c22caf642ecae647da17ed07cd53e196d0c16c17400aa99e01e6281d462c453fb0bb5beb8146a8361f9cb38374553fbaed812e992042c2e3a01c1c11579ebf4eb2d704cafbcf54e350d0408c384e73290bbeabd4e6b32cc9224bb0579298b048b044fc89e56ae392c9bbdb3eab26159ee4a5233cd2276d87308fe5312ac98704cbb3cc58032a0c5d9d09cef1cbbb4cc8228fcaa014005795de340d7e6a8d6c0f01594867b2f5774ae39c357741528dafa30ea3e6fcf379654d46849d6574bf5a4f6e233379d6b40039b6721ae662e9eee3d93143715e1aa6589baa5edd44576111f38b7321e4f9219246a33f19af6fdeaa267a1798df2cebb7fbfc61ad951b273d52a13c8053a561712b01315cb01bc6a863b70af12bd986c5bc33bdd70956a01e4a8f457eeb106b27e4e7aa6d6bce809232c2e324a51e12334bd8f04cbe3ab1171927d2ea1b011953389449776be60d134f78f858310ce46c9db182e78f5b5b7da506ad49785b7dc1bdbd76d87bf575b12fed02e278e40fc5ae2cc29c67e12aec51eeed648afe1be153bba3fd79e63037bbd04b405e6a10a385bd45d00d516a517022f85cdb93327f975a9b12e846709c4cb8c8f64b9b9e323f970a9f12d846709b70b01dad2663d445b865d0e24c9940b4092a45a03928afd7830d0d1cb123e5fa7d7d96d4a2747c92f70c09f845868d7bf02883efa83183d77eeba65193ab555feb4bd8f84d5c0fac3769a7208df96f7b7d5d095bab6bcbfcd14ccbcba0fccb70fd83e64dc13123914c51594ab66b79b63ee7a10ca689bc6d7099737a3eebc0f2d10bbd96486a4bb3968b1cdf58d4d760020d84d96b21f455efc6e55cf7ac05ec403912af23e4d2312c15fee9fb0041f97d7b86d25add4eb3ce1fd44348b36d341d065a15110d976439afda243e685e3df926663f7a8b773d263273bcf5ef4d8fe73767078c27a7fdb3f3e39068cf2439195a80c2f1acd3862fb0727bd1f7a47ecd5d1fecb9da35fd94fbd5f21b92e9ba6f16f53a125c0469b9d9ed70fce35bc987a99e82cf64516cbfc6ae3dfb25ca61bc6aa9e41242b1ecc067b6abd317e36cd16db5aa6cea6cfff60bf1feb156fe38329d389c2b4ed9eb8f36a1f995707453c40549d93aaf94da55adab83055c301413a0bf42ab6b3b13d82a65550b3cd68e5dcf88256db7c2de4208f6149cd3319ffee6b42ead5325e5a02ffbbb210653685a8ff2e6a450a452d6a66eddd3fc132e1e5a65583176a29d25c27f9706137bf555d0ebdf736f482a84a3069bf0e4da806d9fb1ed1060fed5bd4fe43ef977d6d06afd3aa8bb47324428ed26636453eeb9534da5a4df95b0295d1c7a0b8e1f995fc009a3f1fc8c225a5841959de812b57097ff8e7f1af07273b7fbbe81df92a07ffce39eebde8ed9e3088c97e7e74f8524d2b2ec4c59843ad5975bd9cadfcf263efa807246bbb0198db603b077b8ce2e49f9eadb4d9a97f3b9d7bc347dd6d952852a817bdeee4d9ad764808baf177bb989cc81c21c9c6b1848ba479cb25c32893a815fc32176b25e5c1ef791a4121f0407ea30f3b4777dce29aebd739060bdad4a70f723e2c71281451b57c97e1ee96e9cabea3ea198fc019a42880af36fe53927f3b3c885724c56e7777e2cfea09963eeb0ff0a0d7b29478da71d59eb217fb8a17de507ce3b5982d7faabdea5181f30dd94fada77121c6cdf51656c462c88a814666772406901a5c0a81a71ffd702c2d2f29d0d9ad60a9a8a9ecd0edb2693ae183eb60f2ecb2fc537d52499c4ae5dae9d85aef39f926c3816cf3ab482d7bb1cebf5a97883ffa1292ce5020d0571bff46e5fbbed4a38c72dedd0e6b762bbda31a4063f2a047bf7beb382f1d96bf5c38bea206ba03a00c713822d3af5137a68a7a77231c21c8e8db47e4641ee95882787c02f2312f3d8357a10f9fb47139b0401f5b651ba8dfbec9e2a8b9ded2715a521d977e22c6644dca05581163853535ab920d9955966fe1922c534e6fb9627af3138e2db55cf549c0ffab28edc5bc7a749009348f857c2186c5bf2f93458653c76ebff36adfc8dbb45c6589285806c9e294f1b402ea6c45bc9d884121a2b31576cb671006597e0b95c221847140a5a7b09058cab8ad50226018672b3b772ae235992649f7d1a60b6cf9e24a73ca2a51ec285918334a9a455f141994cb52ff05bd9cceef56ad87a176587ffc33f516f2fcbce3956951ca8abfb457eaaefed41a49f9434e74ad80f521973a9b7bb1ef1f1cf78e4ed8e1113beabd7ab1b3db63fb0727878bf4bfe5296eb19f775ebcee1db3e6d3367bda22b69d5e9e2f21bb9624d2d9ca9a1b69699ab9789559385d82d789fc2de9cde984cebcb51be01f2ea227e88f5ef34dc92280871067bf4db382932ea5ee76d34329752fe6c95f5f1f9eec04b52f56a7bf085a11e75cb16c5aa0f142f14e69765b5bc7cdaabd96e5c54821154531e5622d9fa2a6d6ce6e5a0ba4772352ad56994a91333e188809c548289a3dc1627a32501f87408cb35c9888a82c65c77cc8f3b88d2c17e640b98d7d4a687ddfc715a84d24ddedd67e7a92cfee3c69e44ecc25c7be5faad4afbe3529b7a5225dfa7c3987a5e62a8540ce8a0baadd4d2d7b33a748339d2a733096668ffe2df3924a5715342f6c46d75c75370d13929e86f91e3b68737e19ba3f74511f27c0eef55ef44e7a77d1448534503597f97f1f8b8f6eb98928846402326f80fc4cb65450755b4eaa144df51cbc04a785118d73210551fd9dd7278717fb07bb47bd97bd831396425df7b03516d2a97cb5f1c5672dff3211ddd7d3fc81d20410503a138a1b033f48c12e770f5f1f9c00c1bc34611e2341c8c9b22120bdc470cc88c5a985f1962015c662d44afd97a371b7cb7646a3519b1dfff50514e224d7f52c154c66f08f092eab7526166a2acbad635cb2c1a7d55b068d0cda9c30083044ffbd5a77cfc355ddadea681422621ccac030c827c1fef6840929455aa00bfe95be17540bf0f7b643132ef1a28e23754f5f9681d2ea8371260b2686c37810838186cfd83eb8e217a33805e52c1ceeb1a584d58575729e8b64b606855b9b71cac63326de4e441e8b74205a6cc2731393b0f36a5f4778007029c4d80217a7830c8ab5629005957687d2efec322c725f2a29c68a0f6f33993903146c7f4f752ff8006aafa0d7cb6084f9aee00e2ee2b140096d3a89d41a77d82b918ff804881a50290be424cf06229ae6c2c452d9e1e9ea4462b571405d5c2152dd3ead5ced7b50ba9606a3c6e9cc254c01afc5ecab8d7f51e9ae2f86022e24646aa797e15af130d8e653c822fbcf30a0aa216ed5655cfdef257d35d576fecbaffc8f43f80fb8ade797be09190c03a83fcf7a581699a99e8eb855577266aeb5285c05e73ff7a8a88b445b256e6f6f3bb70f3b597ed53d39eade8abe76feecfe8ffe65a773fc9e9d4025bc58b234d30928453a1d0b8c2fcbc945cbf123958cdff038018f2c85013c25859a8e2d8ba5bae2c3f7d695287692a44c11ee67ceb5fcfdef7e4eef70963eb163dd77dfb3c6c5c52fa2ff535c68df5675f8c01dede2a2015e77cb1f3e53f20ad6a8ee007ef4f12bbb987304d360aee7c009d4e72f687ad96251bf3d6f045bd6efc567eeb378b02e61b898abbf7d5f73ce17956c2abde2ff28daf447d1a6aaf97269f6a5861709a6da59a2ee5358e7a08431b80efa2c1743912bf94e4b7604c3a41cf23f07ffff79a5a4eaedb7d5d00137c17fa381ff5b0f640da9ce7e893a4864fbcf268c2749194d0394bf42a134ed0b5d6f9501d5ccf063e9e769654ee78b09a94bbf7ce6369b284620ce52c8f45e134ef1e1751b1cf07735cc3ba414ddbee76de6271930fe737987bda3c35765189815027637adb11e619dee98b6e84e36fc65acf83576fc3af37e88f1065712bd954b8b0b6d4aedeb2281c59294792d75b2d85a29a2ec1d19991225eaa09fc661e36e70822511e7495282acd6a5abf746aeddd5dad208b5b0ea0a5586adc44bfb632c344d2f967cea2ed8cf5017e116821c171446701a2d5719e1ab8d9ada084ef6ff3985111c007e6904e7a55f1cc179192e8fe034b10b24382fdc1209ce2b5d24c17f4865129cc7f58512beda30bb122e95f0c272e30b144ca80408ba15141c2740603f8dab1cf09f0d5ab0068b53b7f1fdfba84066fbbd6f43d03af42566f9c2245f0d7b20f7ee859a3bfc594d74214dc1af991f8a242f1d3baf44f19398bd82a45ca50c4051ecc88955d45cd7fa039f815e658d6e35d9689541562bea7451cb04955dad86386ddda135d7ca3136205c7d053a7bc7de5e43a0bec404a492df60c031d809c3b66c05647f6823db0940685616cdeee64448b5ea50a3c18a40d487fda210b270d7b182af21246906fa6843b665974c3adf96473bf4b9fb611d862dc048afeafdfb25f621966c2a4dc41d4f12b52bba3489d91104034e7cb16463518cb2482792ad87186b7733f62a8f6f7821d833b5656e099371168936cb7274ef9d51b6284818710b0a2b256c945a28740054ec85dda9052f966c5de7e4cb05bbe5e053ac20ab2945648a9e89a22e84dda168af6126c11a30f7e6e1e4bb77eee69361e07bab46814e7cae64f5c2f787a6ace63a16ff63e2f0373f2a0efff345dadf31609e84489b24d6d054123a1dca5a15e96b363a7cb02aa27d2dffb3285cfb2362a30365b07cfbb1a23020c38232dfc9ff4519f4c5702806457c2392198b842cf20c9c53b5dceb3a67c0d19b4c1ad28a900738f7e6381c6d7e9cd9e60e0618ff8a74b40df66d5483a8dbc133bac6369420f23dea59d7d6829a16f47d733ebf16338c85aaaa20aec5cc948330e3c284d421f7d6ba6b236021f1f3a49a9f9fcb41218f45793194180658d161afd324bef6a215a064d985ac106a2acfa0c8c50f3ce66d34fb43f6c12c8a87333d128afee08542d20edb1f32ae96bf21f18d4bfaadf82700881112235e9441138e53b7c6ad5a0b06b0e29bff149fd23b62fe62c3a363a776908a26d6ac10d5550643a48c905c7f7ecb251b66537521413e44c81062f6de44edd99d43210ebb66d05f8e1972e1b0870418b2842abea518517db46be127258925535895ccacb01e75c1df8a4692e00ec70564f7c3b470b0c51e0c273ac63d9c35f1811f1117e829164c2a12afb8e5e739a3fb0519f46e440e641d191ee21af09c06915d0bb59b9f2ac8f7b3e0b34def0394bea6b1a947659e54ab4a7911b481abe10945876041834844313a68e9f5025db8e09156915fc6970a660c8c6b5f2465790a7d40326277e1babe156c28147bef8bba3c179850789a168eff242bafe94b1c449ca507e07579698c0e70423056d66a289aadcbfa33623ff75a4164dc5211710fbffe9f289683a99471965ee40fbf5d7fbcf1f5c375f7705048b13d74b65d29ea7cd770e54f7645dfabb9a207595ac4692582aea252342542ea28f0a722b71f4c702b40c0d7f04e24b70282504d9f8b4a24725d6514668543ce27bbc1b4d981d5475826009b024bd46697494b3d2ad16afb08b9ba1ac619043f378adae661fea5acdb311f43ee6d1b0991af6fb648a06f33f1762026052bc0c19887434a1db7c4cd8f764bfc8c4c8fb76781546561e648ad495a9768acc65580e0547cfb6cb90c83f63029bf3ecc980480585a75ece0d857627897e153f08785d7fef51848c9fb2fe455eabcfefeb9e2e372f834972908301d41c3d887dc618a77fbe94ef7187d61ee321f09eaa5ced23d4fc3588c4a8bc4d1006aa96e3e3b137c3c9d4c92991784021b13a7ae46e48e1221d9593e0592aae15471143c1a833a28d89f0ace7d2e411f35494131bf4d851cd2880280c24b6599b2fe4de5e73a3d4c9dd4fcd9b15a14aeee03b3e44d53f0cb04f5274fac80f57480970e552001f5b11d6d48da9a1f78cc1bb20cf700cea71d3e150a8a962734e4b6ad824951753fcba6ec96a7208da3115d609276a389814a1f502e50356ee482c929d42ab7a081c61e8c036535095230f11afdbd7455368bcaf7fdd331cf2a2d57497042c9493cf9eb23d2902c9b84a43605c9274940b25cfa918f74d8f9cfc95d12e053f15fd01219a645357585f4c096cc233227bd2efed3f19b5a5131e0133e888b19081222aa491a6182a15ef26b8a97a21289c378808bdd851458b5193e44e9cad8f8eb342b788ffa037716280d69373938bee81d1d1d1e5dec1dbebcc0142047bd9ddd1f7b7ba122687a91ea7d6fe664fc9ae3b053c1008f755acec1f8f371df8ed7c7e6677253fea7b81edfc517fa0f47e57fb6a3f2d23eb9864e553c5feeea667b0743f11dbd662db9caebfde3ed8c7755637e90adf14ed6c62ad1aa27599fd929d01ef52f399f4cfce21ca56b60a0e9920e829b350e82019fb7796e829bf3dc0437e7b9096e2e7613dcac7313dcac7713dc0cb9096e86dd0437977313347ca74daa8188f1b1d05c5fc9a5eb87cdb76d360b79d7bc058c9d29ca4937053e69a03c0f3704bd98555ec4f2801f34dfb6cadf162afb038c7575146b7cfa59134a9a284ac1f3c1a887f251d5e30c9c9ba16955402f353ef689b81dc589604dd20179e7129298991502b8a7f1b93f8a3a1f7dcf09acc2acc4abab0b1cf95cb7b3ca7a61f54db68d25a63bfaef77ef2cce99e757a15d3d447bc424cf8a0c6aa5e9121a58af1bbeaa96e93e6f588381f42398a69171ca6d262286ce5e2391b24b9472b04db375a944562f851966a39be1f723aebee7833c93120da684d37eed3747b0512bb187e2941e0d794b59efe1c53195a4acbec68bc7fabc5caffd83bddedf7a7b7bcfb6d07f82888d75167fe93d3bfeeb8b2dd73bda7affe27077e7c5f1c9e1d1ce0fbdad10b9b4f7b76650873916ac3d7587da31a3eb10956d7b93e9e0e86a5fdb83d38dce9d711c923a03bf7809060a50ab366cb2d3703f7a812e25766ba0858d366b10bd553f892eab9fd76246ff91eabf787ad5af92c2aabfb417f2b9622107bc680687d70aada4e140adddb5aa9b6cb146c3a1b0786955b7a1239378209c8b463144fa7e1b561cdf21f31440617bcf988c7f0715d0c55f5e1f9fb0d7077bbda30bf6f5cb676dc665597e75145f8d842ca0b50389ca7442768eb81865d38271ca40684969124a5d3dfaf3b7ebdf3c7cec94b9222e6f0b961a64d3098f73698f976ac06cb18dce7a88f6946e663c497e1989f408142ed601d558d1d6be45b82f0e210a343f755a9fcfabb6acf6f582e75712e83df1ca213546a09ba5b30ad483f0464ae25670056094f344cab9b2a0785b88d4f3e47718da0db45f983598137fac3ee1f995bd62e8f3e95f79fe9de1747a81297058a891f9bc33e2f2f0367d9567139117b3a6faa87a4fea0fe8e2521f9eaa96e7e1a6cc1af7fa39b6c4c9e06f7d30830a943a25cf22a01fa240f0ee7ceb67e51eb63bafe3b0ff3ff6fe85bd8d1b6714c7bf0ae3dd5349893cbea4e94559b7eb3aeed6a7899dbfed36ef9e28c7a63494c47a34d40e4776d4c4dffdff10e07d38b29db6fbee7b7eedb3cfc61a92204882000882c04b2feb69eb96b09fbdda2d1ec217e3824aa9ce00e089aead045ebbf84463d71e99e2f96ac17e442208a549f28419099c88300288a96577dd92bda8bbb741e3e64ab9a6da1c803f8c986bd457f310c1b48db4852045ee8f42ede3ad6bf02e49c6c8c4d1c1d2c4cebfa13ad3978927ab0e65c9a6929bcb047d5c36a1b2412c8c9849719d6cacb62d1915627cc5cb2999d3b2f4120406f39005ba1b76f1c0436874e9af8086477cb267d8db87db7e28a5c3aeb0ed38d12801b56f7dde13307020672ce9228055d4b1f38521b8963a2040d45e8c9e85d86e8cfd5bb76fd6b8a9e8225492def07a868234de7ed042328d55d79f8d4caf4cfa39638f7c08458dbdbb2a57fad982b9f1b0ef3890033c37d484faba6a00a1ba466c22aa502151a438812cd9fbaf8fa03ee9b26c9a914bade85df66d64adcb5e98f2f90d2385100b7883b49ccedceb0ae1b688b866d54dc56b86e9df30bfb7423d8084c3886e3c3c96e69d742c1d393d06ad91696e891e6198c50fb1b3fe7c5cc27d1f1c90c0c979891e62102cbb763805c04eea19ab6ec0e872c38c18601cbc0fadf51df36ed8f521a28aa3e46f6d852b98c542bc1bd975f7a2377ddf06bf06e402ebdb59e805eff51a9c0ca7c5d37809844755fb829639992c8b4249085e6b17399360be53abb969c0521459b21b3da6253a7d99a1912374e7f4678c96c9e0e390e6dbedd1764730979976b871006801e91ac3b4be10f5c737dc204f486706e9f71968e079d63480c632e27ecf71b41e84536e95f4f4a5889711d37fbb93556c51d031eb6e0d876fb6a67dd2b9686097bc2ff17ad69abf6fd389f36f6ae34ecb455b34b51d9bf4524326f3a5ac155fa12660eefd70f479deda474b9ac9e1eab905f5f62ea624a765d36913842a727eac8e2fe814edd6d54a3503eec3eb66620735871d6cdbf1d6d9bb3d319cba9520efc1e5efa2b556bb136abf26057ecc14744ad55633963ff7bae1bb14fcbb9bb7be2f0363d24fda391a9912a164bc94b5981363ba586f200ac4419bb1a84d26f8da8e2f19125ad08966f7f7c964f9fb44c26bb9896e516fb565af4dc9852b39315f145c4d1c6c538d98deb207fea49352d4b67afd1c724040420de30aa1fd1f32ed12c145e009f1172d5f7063a07bf5be05adb0963388d8e9f456901eaa5725f70bbac09c4b0df768ffe1d2a66eda8f55e244e22550d85313b5ce73209aafd401b32533418295b96573d6b1501334a6ad8e7f05d2495d33a5837b04d0ef1fd123462ca02a0d4db15b38c0cc749ee3853ec8e960b655cba985d7de4a53f36e995db31241199fa9b648275c9eb27f2db9dafe7be491bd14481afffa8d51a4a64e2b491ee08f1f831df43686f2aee789c5f535a34bf4f55145ee415d6b325fa48c11e93d8f8a157b85c9601df1456a70a34a3ac08a8289cb782cea23e3b1c6f2efe9b816d5ca87bba65a77ee16696df8a07b04f25118b1263fc35100d7729d41185a08c0583b773b9693d12a08a96519577b8f6b2ef3d706006abd897516a1d8a687d9515ae0b55cd6069491229ff541832e3463b940ce92dc6f96c35c281673013ce6627dea429180d306feed45c34669fe6b30f3b729c0692b0cb136fe754dc9de5aea4db569f553baf3536a2d5af764a22e7aaad4f16597ef91199475f5457aab5df681862dc0568a8265bc9c886ee754274a2ca78109d3ba0390279efe72efb850ed48452a50026030fca8a99e0c106f6879c0d785f58c9590ca0e5c66f5f50b6a1c495167cc71507d46af9949ce60fc16344535c2d9adb1d0a5f48dd67c172d66ca8ee91f0e28fe44b5ae7fa82719f4d342d095efdd47f6259b9a2b9998505379eeed70d758f61b04ffe851b2dffb7909b676d4e8a6197f260171ad4f679bff62bb9b8f9528e737c20815d9f4ef599bb8bc55868434d572846a1e9ef4c57f3a428e678f55aa576469bd4f8f5356374f6cf663d76def871cd66cfbd756b0afe138df266281ace39a83a696e05b4bdc990b5f9f757a772f718cf0c3d63a6efdf02538f303a8f8cbe00ad26f748cc032b55e2735299cd3646096bbe7a6013cede86667a351ff81d361ef05dcd31b9aafd60fdff72c6db71c680f49737d71e7d535782e411b8dd31e5e4624784d504dff7297200d09d36675f2c0342fbb3f814fad5da84f635132c53064c430e443b845fbf2816e6a2eb635e4e6fd666e5d8e349f882d6b4d9ad032cbf776425eaab65c54663b8e2f741b833f1707c6f21da188eb1a18220d99e4290ab96de90a6fedce583179c3eb5978b198ee53dff339e3675ca981fbf3149826656b934ad71f5adcf62eaa6e19a5b771e2856ab3afae3dda7a1ef408e608920fc55e8c1116b9cfd25f0ab1489f9ab5ef6302fedf1a64661e9ab61fea025b64dcfc6db393946b05490c36f0928c1737be696dab6788a0b59abfde291d42aba6292a0e6e5f1b537fef83cdddf44cdaad1cc7c20bcd67b2cc6a339bd12512d022b1f2202b46b0432c88fb984075cb0495c6b2a6f9060e7367cc21c010d812354bb2578d54ef432523a61593c1390b43bd586f0bbcab55675409c15e04b859d66a2e05cf09250b21251f157110a38a8e21ee5fcea1337ddfab8931f9eaaed01be18cd52f44c92cd37653ff484b68f26d5cd47ab99f6427eb82d3c12cc65a68aa52d35b221ec1fd52f2ac6509db3107b87b4bdfb999efb98d1ddeadd67f9faeeff61d4a6fde34cc87f87eb856815fca3a3113efa178f9ef494e77b3a3df8f157d2a1bba070bbac7213922f6871da0a2c60fd54871f10233bcf9e6536df208fde851ab3deb81686855cbc7c2685f81a3abdc2f73edbac759acd0e806e84db8aed943914b28b601a6eb14df84cade0475478490f05eed9e376a2db7b3098f5bcf6925b5f429d614eb663afe7e9b2df51ec14062900f5da3353c2d58abb5bcafe178b59fe79007723982258144929a23efbf3e324c052cad392be84adaf7ef2dc107455531b95082bb9c1a481acab2ac79e13b0e5887a64c291d92011eb13601292d478c68e71b7b8314c096844a228528d5bf5e298fa11582e62cd7d66697236cc1aa89a8e6b41c33c2e70b3a0e1f64a7a935ba53be17d1860efdda2f3880f396bf6b1cf71e4228e38ad1da7ac707b78f41498b339ee76194f2736ea55addce6be39cadbbe897703e63848eeb250d89403f7f32c67ff67e2124c4efa2642ef26501be79d79c06e95ea78518d122234775476abe88a4b15816050686838cc16242c4b2d2a1079165f2c88bd13eb1d401d37f915adafae37703479c3285268a95b0adae77db77d33adc783adc1890a7ba04d2d7a8f2db3e79fbf9bb5ef77305fcb6f77ca3bfb1f5785892c7e4402c561528e0bbdb3bcfc86b5ad0b2e6153967e359290a31e54cf6c95139cec87e5110a88aa9d3ab6b7cfb85705ef2312b25cb211e06ba3eef2fe878c64c499ffcacddc676b36dc52219196ee8b2e1060cfa31043899d315584d314d129764a20eb63a881a2f3d8717eb4e62fa0074c83f351031aa295cc18cc56265a247ea9a84d61675f5dfacae173afb1f05b42103608195e5d6cba383c3e3b3c3cd5d784483cd7e2a0b26d554689783d18ad0c5a2e063d0950a7a038e9ed34a7b85f392dc54bce6e554b184497d43c1f7f631c9b9ac2b3e5ad6c1e4193cb90c2a0870961c6eec9f91a3b3e106f96effece8ac0f70de1c9dff70f2d33979b37f7aba7f7c7e7478464e4ec9c1c9f18ba3f3a393e33372f23dd93ffe27f9f1e8f845df38a9b2f70b75ac8248f16a5af5929233c602348c3bbb0d2851d072ba547b6a2aae5905f7820b56cd3984a594da25ef3129f89cd73aad4d6370d0d5d6b0e473b86b7a0c1c55167c74b183c191861bf073b8f1dc5682e70e98d44f57812f2564bdf3ea01b05346c7b5a957a91f8d2a07aab50396655b59b63516f3b928b7c658e6b7f9405e1c9dbd7eb9ffcfe3fd578717af4f0fbf3ffa2f729b6cbda8c402db0e4bb5f1cfe988ec0dcbadc78fc9df01328cdd29ed1772b9b087173d0dd98556dd64f79c8efa44d7d1ecd0b63da7232770357bc4aaee24fad967fa534b380978136c6222dcdaacd46ab789523b48974c49ba4a714045f139afd8b82e56e84a764e47f22f58764e47af69c98a6e0f11dd7a4cb81205a36541f8b4141523257b5fc304608d733a0a4cef651e1a76ddf0f0b1983973c324076fb53579903d724133fbd3abb250986131fcf93c983620192dd9f49be0ee7023e7d7c30d8fcf5ab8038f20bb9a96b2f3fdef2e5eef1f1fbeecbb52f7c2b012051b28d2a6a382cb7ab861d938a083ecdf483c352fda114e29ddde7bd69c436cfd7c800f1734789e0f5c4422034883e17251d0959e9c04193f51147c4e71bbd90939a7232533ba3831af97153b3024817488e2897c0002bf6d132d5ffd295afe142dffd9a2e51e22e39449fe2b3b19018956ae9afaba29f4e7cd852856135e14a1e098f0327f71f2ea58e4cc490ce8613317f3df2c646c5b4927eca8bc1657aca5cdb2e6852f98705067ac94a2fa2d12ca87d32aaafc4a1153871db9f75b04170203401943e61d5a16b1c82c9456bec345f533c89575159a46cc01db4e71f7c289a14c9408aa4f4c4ba3a2f7422173e1042d22edcfca3de5e0d616c489db34cfad745d31219297d38291f18c177942b61da8ef152b3351ead9d4e88f754128815a50b37ac10b9ebf12cbb24e63e9cfb711a70f86ffd322a775f85c7651b16b10886b7bf2d7064b5ed34a110d50978511153e0cbf37bc287e2ae7f79b824a49e1b1284b97ed0605f4d6e3c750fb31d17408ccecc5c92ba2e918e219fb6ef5399f40ee582f86b9be6e2b561a94ee34373032f25a6deacb89a8c6cc0b655f0b22aff8c2543329a83075d50d5d490dafb23c0e4d164e7d6b99a4703982e9011cec1cf189fe02be0d8db8dfba2878a2694d5f60b9b63dc06c4f59ed139bebe351d7d434af4dc4842442bf40d477b1204adf5d61844c3e01d5217a917bc7e292d8dbfbd6c7c662bda7f1361f3efb8c3c0a270850fad792d7aae1945f338cf66307beb9a9b003446b4196b861ba4bd4230054de4b231479c26d6d61a0236299a4525261f4ecc674778fd1c3cd1a9b3308136cb074e98e95d0872340cde7cc194822ceadffb2a86e6d39b46cac3c2e09075e9c133e9fb39cd39a152bfd14016aab59f1b097ce24130e40ff61d625249d565ee2ad11b8f9c0d78b1d877e869f0eed604c757d656f5b3c4ab8f5a431344d7c2399d7b1f9b3d1b3b692595abc93cdb99dd4c2dcfcc74c90db5a4db6afea807a772348c5a814a51c78957732322e44a9899697925535a46b98c063bdf286b3423f41555bcf5a4e8370bbbb19612504b935663d7d0b0a57bfa531032a565a2a7cba5e3a115aaec8ff3efb2fec513304f7aad9b874b8c1001158a16e7c3e2f68c4396e20e19fbe4ee393603ab884d0c2a2244b141af03a58cb92b86b4f73695facfb9debfc26e101cf2fb9e7492fd0185b8f7c7f5a13ff3cf2fd871ff9fe275a136ddbd76221e02dadfee3a8ac5985b9df7fe4651e005a6015f3af6f9614a2a8f9e23799261144bb7912cbffd0e39e1e5878dc6b3b6e69841e6271d4d8063ddf618ad4c7296d89d4bffc8896658d72f58266f8b76fa5c4f11c84f6ccf86b10c8525a13a15b22f5b57b41fbe4ed70c3a030dce893e106f6887fc760871bef7ac12835ed92bda4b9f3e4e4e5f9d1ebbea17e3d18f8d5c5bf7bfdc6807a77db5d2d81bbf15029f9b4ec5a71cb439a1fb4ec85ec87939f0f4f2fcef74fff71787e7172fcf29fd6e86ae7cd33efd2652dbe17e3a50c8dab848c697928c714e2091d1442b2b8022b41d94e362ee8afab013ce8b79fe249199899f66a54352d0e44a9a40fab061ead655199b330b3c9c0775b9f742f2a3649458e8cf78eaad750137b7d92360da4b6d14248f4a34b6e25a748eb2e9b2aaf5fecc1b307aadb1406f7b46d636dadfed8b649f3fa0cd74548f68215743520db7dafe064c14afd7d67db94d4152d11d9173ae60994ba43beb1a863c7f7b5aa6bfedcaa667df9a79af5a79af5ef57b3b6b614af55a21b9c65e08888966555b497fc4f11b6523274ae0e4928c416f220d4c2f85240282ab1ac88e100522d969ad4c5024e8cec7dad43c34002c6cdcb0cf0d21bc77fbcf4daf010db8fe637e6018af99cc945c1ebee706373b8d14397d65bc4f8146a4ae0de8a8b5936c72529d8a4566b01db2cd356b1180d2e7f6655cdc7b4b0d8489eb31091b7c30d050c8532801b6ebcb371c7b1be52943677129841502bc08b59f4dab099b2fa44d74da1236f389c6cbd4f0433d00c376ab1186e0ca283ea706324ea5adf6204d5713ccdfa7a74717503a6d900fab5d535d36e56c3fe8cb29798a383b333420b3e2d81deaed8ea465479e44c560b6d637394d13e91fb065883bc2046a72a257b6d34b6631c08cd9443fd78ce654dabe42cdad106d55999df67ca5be770cc94f6e4cd22719b1db2487356a5b7b9d9e0af742d3263856a65e7ab16200a9640a30010a4e64454f34dcc9c4246546a9e5955e2c6edb4d6053837104e004037a735f556c0d3487c5ea06a656ec5f4acc04b6955029d5bd357a4a5e8994aec69d3598f7c9bdc64ae5c692418862ca4215b61d05610b46cef413b72f8e65d0c1a5b899b33fe2b3b9bf10964628e879b8d0bcecafa07061ac616d97d1eb5368dc46422592db1f1734c768bd18ccdb6521228e77356820e61621c43027cd5a6afe88129a245a2c0e71ea36595b332b3d75c9034cd10c78acc6831c1e61d4966cc64a7be626c41784d9078596ee305fdbe8bd5859eb35a2cc893682eb1dae2fd70830cb02803d110d7d3d5eebd847a03d21c5fa8d082c8051d333262f50d63669fd032272c9fa2eca4d594d5e684bf7f7a7af2e6e2ecf5fec1d1f13fc81ef9fc396ed26847a3fd54afa9d99d700704f0a5b01b9297b5246a21b59806e639ae891217e136b5247302602d5bf00e0789627f073f6843aa8ace7f49290fd04a62e806f6af252dc80dcfeb198c0b69c75c06047b63cdb678a3da3fb7fe514ad91e93915015598e16179bd14bcf30ce9b9d675e4b564c5caff76650267c922164b2b796aa6d0bf421f6da7d4b861b300f40aac30d3d131bb60552c1995acf46439439d0cec864122fb49ec357b49e6595589679d74ded16d9255b5824ff55d5dddd1ede16619fe6480c9a39121edca8eb52fca4d34d5a75071dd1b8281d137793bab76730251f3f92e83b0ec6bf54c733ce72413e23233abe1a6e38e8f6dc404a36a535bfb6424cef1a2d577dde8815deba097d4736f71a53f524dca49697423a3fc550159e5b8ae958b92805998abaa68a66c8b800cf3c385aed6c6fff2ff284fc9715f30d561d60b397c4b760e53bb2e96d882731ce09f172d7c09fdc3df07ba2bc994406471cf2823f8fcd7f1e9bff938ecdffc9170a9ef4f11a6de14efe497b8d691e291959d07a060ec2ccb9a01c888a911f794dceae983acf287a86934222dde642efbfad51b1648b8a97f5d6a810a3ad9c5db3422cb62a26c5b21a33b92501d89602febf76b77fe475865f8c8673f6f33f2ece7ed87f71f2e6e2f5fef90f4471f6575f653b3be48bece9f6ee7827dbde79b6997dfdf40bb2937df5d5979bbbd9d7bbbbfaefcfb3ddafbfbcdefd62bcbdb9933dfdf22b50cb861b9bd9575f7cb5f9347bfaeccb4d55f12bacf832fb7af719d9f932dbfe7abcb993ed3e55a53b9fc39f4f379f66db4f3f27db9b9f673b5fbe7408fc0af36c30458ee723fae5575f922fb3eda75f8c77b2dd5d0570f719d9cd767754ff5f7e817f3ecbb69ffebc7dfd745bedcced671a4dc0fa8b679f6f665f7fa5faff7ad3562e36bfcc76be7abaf945f6c5ce17e3cdecab9dcdeccbcfbfd8ccbeda567d7cfd0551a0be2c5cadcf11d1fb9ee0501055a2a635ebf6dc494eeb80c1215955dd2fa7056b9c92415a5b03508b66b7edd43a2b17478cd462b105a211ed065bc8dd37c1808f4fbec01520c77b829216c5cae87be6c09db60fddcbeab1f9f5f6fdcc1d3b5f352ab6193a3c902de7f36dcfb81128dafaea635f1fd1ecf4fbdf9db3025c5e8df05a0916f275707f55b1892a1b65159bd88fb25e150c3fc39fee96c2ad1f5c53999fa19fc1dd9ef59e5fbdb94c7a7df21aee6e60d7f40d514c06c42106b80c744eb227f00b4e5eea5cf7e1960cb0c210df42a5d190d7530f8d6bce6ebe13ef958abb4db6c953f5bfe146d89bbbb03064afaaebcd60cff549b257fb3667d39e75fd5f8b9a62b30f9822645e23887e6071ce07318f842e7bbf6b9fe8f21cf6e8781d760831b06e9f0f4b9f28ef797de337196efca9d7fda9d7fde7e9751f4842830ad42e5d6c04ad2660cc5d4eddf1b416ea97351a43b5bf2f6845e75e9d190b1a8c11ccb0cd566aea9e8bd706b067e382bdbeeea596939951232dd4ccc8b3f393d7172f0fbf3f4f1af137b5313b14887edbbb6cffcdce4e8ffef1434b6f600b6f690acd2e923d028fb803d5965e93371b519fdf9d9c9f9fbc6aeb761dced8b26dc4a855dc03c07d2f70e27ed3cbaabb5d3f5daa69ebc095b85e8b76bae3d4fd47d8617275a1b724b6c30da53a5ab5ccfbb6195ec2f825e17dcbd696be6f426603f918c8b21ccf6839f5b2659abb478ded5d5a9f92ba557dccae5995b00f2b56b2ee89a5b3b67a604c76e57aa614463f87ca4f8a75b0b162d6a6af019aabdf83fcfe53f4fe297affe344efbfdbe1f30379454b3ad50e980bf5efa97ddf103df043134ad87a7f24eb8a8eebc0f9a7456ba0a9babfd558046d60cba79b80fffaef665e82dec08874c7a344dbd709240d59051d60229195f9376c10baa57badf4034d0925fa97e70a6f01585f2baf6d8ddfccbf49175c3c72872633ffa8e2b548e8608986aff8143dc87e6a4e4be2c2ac9fb8066fb7e0a58c06b1efb0f6833b787974f0e30076091f5fe9c31d7cf47d296d854d7df188f5c0e712ae97d0e5d87d8c1b4305db180f88682f7b6d5c133fdd3bd97a91b67827ebf23fd43b59d6f880d11a0d6654bea0d5153e218a1d45b93c59b072a0db4e597d041ffcb7a62e9c401d2ebb9a4e6b5700632d2593824ef176b760b5244b497256b3714de64249c9b9b8463a3417ca8ac7e262c03da9a6c9bebd222bc50d8283f605a3d72068ea8a4fa7101802de5e29618cd99d14bc295d84f06f4416ce1197af14b8a3f21cba3ea9ecdaeb777ff1607899f331ad9954fd8138f2105f54ec9a8ba52c56a410b22613315e4a7c1204117aec60cc6b337d9e8257750b936aca61a7808057ef497946e7ec35e66ff5b27361b58a4d7ea0655e44a9c7f5140efcb318525dec981b78e4baa757be5f2e41369ab5bc42d66d4fd9a4af9a7929fa1dcdc01c79d8e0870632819730d649a3645c85f507f39a9590c7c486873201bee0a5575d2dc7e80872a997f9529554ccd89639f820684dde00b340cfd5eed400752e2263125e2a2d924f80fc68c5f02d24387539e200b5ee86ae2c3c8c3a26182691195397fbb1629bf836a04fe4723c53420c34794c1e27c98541f2c202336e2e613d25732e481753beba41d30203603a4f6789db87d71620ee56094fe31418fb440d957b9ffad6bb5fdb156d2320901367e319cb9705c367d7d6effa79dc979a156f8fbab7d900257c9ded3d96b848be96206ae15e83433bda90edcfa0126fc829fd78c2fbf8dcef32628fb67fe0c859540a2ce6586bdcfa11ad5856debb558844c7a5e216f036d83cbb8774ef18400e0f7a5ebab2f6b9257bc49bac4c0685c130f4a64ef1164cb909efb4f1e5b675a100992cb5139654ca35eabfaea5280f541d236a6600feb57994a044bed9e0deb355c83119afc3dededaa7174a2e3e722bfcd967cd95bc0382af33044c2a9a9a4c9420470e1510bbdc383257f0fccef62f41ac25da4381cff912eb74b0eebd8c369df74917ee5f3edcf6c9c5e8ad297db17ffae3bb709b64bc9cb18ad74a63389fb1390335c423e3409b08a0bd3a3a3e7ab5ff320638e7259fd34255edf549427a349ee93c304052f2cee0fc74fff80c4e93170727c7e7fb47c787a7c10ba6c920d80ffed593bd7709368cb9d741f196c42d8c4af2c1a77d2c1a3498e71d10ed68db9f2505c30f69a239a2202862439d8b3eb8bab71e9a110ddb35859c05e2e6b08450515d487ab7e6a5d53e3a657a08b99bc170e6133786de2d6058d77eb608b7de3bdd8b8cccd593a2a1c3e3736f1a70d06028504a476e429d747bd958e04334bc810a84d268ad84436d341070561c3c58c689052b4fb4820bda240ab0c6e7a0112a2dd14bc0e863d0c05ceb629d78950c40f3e049d5b64137cc8de9c52868714ea771d7fa5320a5f0e012c958fc184d3a973fa48f9d866e53c5dd78e926bca4c579309a16c0df46f21285d24cef179f297c572cab501e6207ea7bdfafa8dff8356bc62be80ba4418b3c6a56073193a80edf2dcd93413430389c9392b15ca24a2c4a66c67987dc3fd72415897dfc2b9eeacc8fb4d72ee4b4d456b26e6c64ddf86d5ce9e4f5e1f13b583c452aaa4aafef53a917c72fde0dbd760cd18521dcac997f6a512454d11bbbc3512bc668128627ad61298849af096e64f27a58e05ab8d6ba08f44c13b5421f49241e51c1facb27a46205bba6650d49590943061e527f1d75647e39534593dd28c5ab6d876c93810f2818d7b81025cbed4c69eead3e9a89b2636d63df1e91c4f3e22d6ff7223774925b3ad93f383ffaf9d0510804c8498f43b5ebf5fac19ec0f0413a60a2098f656c7df0b4158f5c466f56fabdeaa5fbddcb9f0e5f9f1e1d9f6f3e7bb6db73305dec45870f120f977a3e4e26e7ab05f3674577d823dfe22bb241833c0c580f7bb3c603fb9713a2f7d1cc7e7fed47f3fd94f6731b6cda7e6347f6fa011d3525f158ad5e8b346e70d84024fb9192d4f92408cb96da05ebe54c70c080504d59c50a5abb2de036d9a35603513306babe99c37b2940855debf04d9e79e2864a6b17805a2c2723fd6e6601c1ccf50b8200b667e6eab26c9a917c09e755bcb4070b081dc95e106dbc91893808289f16557e2243af7a6c527805a19f8285088863b8a145a852f85aad0cb104feb72dba5a2cbcf2836b546325441b15e3d74c4f359760efe1c61b43db9a6f58a728c80dc52668220d42d86f6d5976a350cd42727b6430d5bbeec8f84bc58418671448ab0b61eec9dbc4eaad3372c6b4ff284ad6f2292bafd6f21e0b1f9ce4d30b7fa7f1186cb47a3d6f58a762045e881993a05d325ae6f061aec33449066b3762cd3b0bb5be7671e7b45ca263a95d596d09d7e0f0fd06bc40ba86f33995184540a100487a78687366d9a9c9582cc1f3c727f147feac06f6943514a3151557cb58153edd02e331be96fd96b06aaf234bfd92a431462313e3cda9cdbd535ec2fe810b643d83da7caad6d0ea4d212292d54a6c9f81af2604e4202c348384511e7e3786e7e8f9bec46fcc509f48fceee604f264615e0c456e2877feb5644b20f649b1943396f7c988a1f5db23f006f78a7897619448e9faf96540d37e5c3e78b2ef4152d023f37c17b2308c19b96695a4bd862955b2fa9ccf9958d66d398f9c34689b9b642e0a9f4962343b566d9aacdda03c8e0b0111ee2043899ab8192b1693658144371730149c087c138123aa85998b30a158821cf12a30498f2e1c894790be12f5c9248987cabb49d2370db7122504e454e4658f0b8605e1155e491437393d7a714878096f4629797174f6eae8ecccddc1688335b265576e1a7830c0e8aeab67a142a9bfba3b2b0f2d757a914cd6dde14606ae4df1a1d474f984a889595be7c220131e069195bfd0a6f7bd189d474e870c4bf03cf492cb1acc569497cd73b5eeb917d95f5e6876d93ad6813d6444437a7174b6ffddcbc3173d4fbefb92271c0c1ec06c6fea27cbb87c6162e940e72c56aad6907b982b2dd6e6c674512f2ba67b8f7355650bec4ff7de6d5376dae95abb9ac006fb54bae613bc7001f59d9b3b557324d20cb7e0b266253cd52c0a6d972110b75542a6204c560fcb15097e6d9cd0d25d9e5407863412d7b37d1f51704a6059092f560fafa3e8b73fb2d548d02a878287acd63da6d5b328b5ceaab384e0ece51ca37dea47d4b566a45ac9e665c14b2758466c222acb955b15a5dca7d3bb15a51651a2b5266de34ca660b653a6a72b88570ddfda323d36f28219279047b6a9ee3aac78db9e202f95e43eb1a68f9aa30b56387d60f8145173a09d88422943d061201d8e002f618d2b1ebad17427a2d24f91165efe3a1b37449d55648d8f88bd18d566f008522ffa591d4716f7620f90e06e559d07d09bf73929d4dfc010ad379ebed1cd59cdaab9a2513e3157c8903965cca4a4d5aaa1c9e022f8117fe31ba0b610274915208e84e06fcdb670887a2eee1f78be62259d337253510ce142a7785252da3838d52ed57770912e58ad4e6f52105e772438784c4bfeabd1c9d5f44a88c1eb259a71017a79a9265cf2b10b613e5ad656495535ccab7b75ec5a2dc02e35d6417f8b95eb4f6a9f2138165cd07275d104ae38b005c66b7869a860e2adba52507f387ff512884e3e7a84357f733a9adc49ec0b9a3201bec1590eae606e826f5e7c167b0393ba8071950ef036ec70bea8572d86efbbafd20c0f04e9576aaf895c3b48e09cf1523b48747bee687189085d827332abf8b58e9b61a71ed046cd0f77fc982aa968f61047471f3a563fe16d27b9a605875d0d8cc70fdb1d8d5509005f1ae8f97ab4a78f4a50c198728f45ce0ecbebee706351897c891126367cf13016a51405cb6e685576d195d66a686ff64f8f2f0e5fbd3effa7b9a9ecc541e0d7186ead6fb19ae1b42536248c7b6727b2f89deebf7e7d78eae728d2e8b55da4eb8b14af275e96e069a6c3527ade6f998941a321366e545bee80b526960ec6e90917fbd5ee94111d5fe595581cb4df187fb77ff0e38bd393d78d36fa86db831f94ac8bff1968a951a9dfee6459aba30bc8c066d307d862e086af9f58eb6664d006bb09c3937a0dfc025b7b46e5777a1a82cadef786cf6a7041e36f3d5b53e9016ef84dfd3bae98077d9b8f512d5e4e13d57839f5ea29c41ad0f06354ab094d7f0dbd6ea3589fbeead3284eb44cd2a8ad678d7b01e0a657dc0302c4aedddee60dc37df676e8111c397e34df180618e9a74bb6ad0d2837b0b93b1015e3dc2ebbbd141731761c74e8706a4e53997948aa1ad4d89c3355f7dec0dff0a238c5ab01e38be03a29d9fb3a7416d15ee4f700948d6951684773072708cfac3e1f0592df398d279a28b9683f6756045a6b8407eed15e429588a3f506c709d718c33ad5151f5fad06c4af04c93b40a3c69f60cc052b627ccc725975c1efbc5612b7ae4451e8ccba37cc6a1e9804c401357679326395ef8ed9aa781b16e6461068d824b4523766c5ccdcebc431312c4bd8b495d6b360634e0b785938401300a12559966ec8a189dbea31eeb2a2ae96ac7d6940c349c6515ebf6912f9977ee3ae09f4b528b193bf4b203648cb7c1ad6ecc9c74438e93b35b49f8e9576767af2f2e5e18b8b93e3a3e3f3c3d3fd83f3a393e386bae6b0f1242088ba88393fa4ff1ff6cfac5e727174fcf2e8f8f0fe1da795874777280fc1fe0ddf7e461846c8b54f0df888e823c281e6b151ba31b8ceeaa6528d61f31935fa82a20ab2a707a74f1b30289bd9326ce65c0c6cabda5c55868ddc7446c8eeed916d58c900dcfd27eaf4f0fff7d3d1e9e199be234bae60d8e53764f72164727e7272f16afff89f17073f1cbd7c717a98a6ceb80b1853db90eeecf3c5c94fdfbd3cbcff90d42ceeea1ebda5fc842e9b07a675dc24663f77c59e6f5e9eae13719ac802f08907319efc6c96b65e36bcd83ffdb1d7b8516f1551d1b3b1e0675358e1ac61ae7cdc4470c78d5b634c4b758ad62f72594ea8c4bd03ef8ea5ddcd199ee7f1b18d820882b89ad3425b55e02d17a18b4525e878c6649f2cc0e70eaeb7d1bb0a6496026eb3a12716b1616af8a4fcbf7725dd18072c46d51171ea8dda6727d6df15e6f12fa1e0c2d7f4dab4b443feb6e7660d53f4ab4fbb4a4f310b00ae6518c535c822326af2cb5aec57155dd93dd66ba00855c183f7edf6bbe618bd621b66ba696fd69507512b4dcddf061316566a3c270bb0b200bce90caaf816e0f6bd6d15d9355ac2d696d385b48624cdb3304c593d62047272a1a6e839dc38c99a50ca4c02303feba053001709edb9d9d8afd592722fa8a9c33f1c050dee9ca2e8c4f4293b672496654eab15d2bcf9e555987bd02f68667f3e8fc8d8166493822f3c00eae7bdfccdc155d881d1b77b27d7ac9a14e2c67f70109628e0e314f071986b26e9b968fbf34d4feea975e067addd4af489357e64e10fb91c24df6bbb1a10a76b409eed6c5bfe6d4bd5840dd6be32d1cbc499b9cd1ad87574e0008ec32a9ab4dfa38308a4ebab79d7d2328f7e521c9cb696bb9ae6d47dbdeda64eef1773fcc017c3e69a82422462e2e42aeecadb9ece1c088ff76851244f16e652029d8b4aef1c0a0e6399968c102446120a792d21d6b9d0be22f635284685817ba109a1a414e5e6afac1224d7962225231695b8e6b90e629edef5c179dadfeff60aaf6f9068cf64a5e3298e5901b910d97b2ef1adacc6def3068210da4aff05dcdda55ae329292c1c025588684f9d2899a686ff4d90e635ddd25e66dce9f5133c570e4ebe896bcd5b373d2d7c395218d75cfcb6ea6bb15dd495dc365cdfbc66e9394d90659fa44616790e3434dabb3a40336cea967fbd200a19e1a70821fd2e514b18fd48d1159bec03bef8f1b20f8839af817c2fe1db257a0e5cdaaa976429993417cd5ad2f6c9cd8c8f67e879246710495f47ef8f54a64706bbcf3ed36900ac96f3f1a36ea239da5df68fa6f741e81f51f801529ddc4a8406888f1d61b1f31ff272daae47ace55d56622903ac3ec9a3d444cbf81d1c5293e37a505c491dc9deb64da60533c26f40861b72ac04803e7c99b897a1a75218d923d0eda222fba2c4ff1a5cc004057176b2a7dbadf9c99e9992f815712076ef9b48cfbf7dd2fb2144cdb3e77f30aa4cc33938e8da0f3186d1d74c4235ffa121ccf88296ae347105e3a6c1bf3e715d85f7e60ee430ced1a6470f39da92819aa22c6d6617db70f362f40b1bd79ba8510dcbeeb847ce7899578c9c896ab694c3f2ef3a3c187975743e2c1f6f0dcb8e12b5b2aef8b8ee407448c264c1cb7ad33c5d2ac5e6b25c4a966f5ed34a6adf16c551a7ac3eb9295fa337ccea6c351f894251ed096091258b7544ea19955e996be37842584337533bf6481e96cb3943cfd84443ed9db3f2eb3d0fc2d1d5021b75afadd15489ac6b25023cde6a7e5b539e677e3666b9f3d582a169aea311c1b957fa4d29942a03ca1dcbd14305408bca81ecf41249043cec9eeb80cb16773c60fe24d93138d619bee865c406e91b2073d7e1726b8bbcc0d03ca3e574ba32fe4d2bc27002a163d07b950e2a0af5c7cf5f819f3417a57439734cb8f5d1722ab3f1ac1273be9c4350bac5d6f5575b5cca25935b39ab292fbee5f9dee73b3b5f399d0e5e173259ef903d98db33707bea76e868dcc15b9d903037c129af149b25bbd9d47b4c1a6000e8edb377648f7472d609f4c0247da2bb0234ebbddd7e072bdf79d6b9c7dc3d74d44fb79f7dd11cf52e3c40b4784e44a528b2229cec91ede78493bf911df5ef9327beeeaa1abeed5c74c8133d5d99d23e0e66b43a1039ebf21e3c5f4cd9cd613d77db76ab9b8ddd5e36a70b4ff94d9013a251be7bee9d84dc74634fd92f8297dd4e0773c975b677769f7efeec8b2fbffafadf37c54fcd14ab8f8aac723699cef82f57c5bc148b7f55b2eee83c699d4e2f9b88ea908e67dec8d1ab2c9afea76ff1b39a68fc2b3d0b7a9aafd84a7683dd892f1815a45e2f9aa4248a774c57a43eda585136713cab2adf86f58669f75f0cbe0927321d76928ec4b50e3e03111ad0090e3cebf0899252e5b3a03b878a09153f17f9b26019ca2c251d9a1cec5b12f24e2f4454d7f8336352062f8abca2739b04a8164ab7376cdd7f220d1ef156f4a82f76672964769e1349fee642a9690bea7322bd7d060abdd9285d5bf7adf4f2155ba8576ca5b8a46a133d140c251a5eb0ab6a7dd52674ffadc5db2bb65224a52ac0df89539123aea4a8f5204a2b9b9335010ddf9f33c57d340c3b43212772464d5feefa83d4eddff277f1f3c15abc758576d0dea7759ef54df1590b938107dec60b8171c320e269b7936d5da84f2078b71e3f26df2d79516fa237df92b987fbd279f1420a0dc0460112a2cef0d7f30475eb928dfe46a4570d4b4de428f9cd0a7475d33ee95c5c30f90ae075fa86ce8ba5569887a5e6277094954a8bcbcfd1569f3a27397d41d53c52da742d2a757eec131e1d8b2b750c7cfbceb7a896619439f896db875dde47a58135af3a3d6dc4a3a50b454cb4aadee21c655c63f5aedbeb930bf99c3cea42c7dd0b30f6f2ac64efeb6eaf97e5a264bde70eabf0bd00adaa6cb194b3ee85cc60c29a8f3a383c425415f5058912eebc474615a3578d8d95629404c7efcd09c1c1b3caf27b7c795eacfc240dab78873cba00978d0bfeb683e4da79d70b7e757d134d03a27e1990f7b40e7ac15af982b14b518d61b8491cc54434a1e00359a16185ae54855e53e8506fe0f676225a59c5082dd74c014952678b612ca9741f95703746685db3f9421b3e31cedfb26260e6046420be857e7ed2695cf0de76bdbdb5ac7911320cf5a5e3d5e0a51a525807bf79b5ceea55c1ce660c9eecc020d0f3cd136ef8a12b55a5176a0b85e1edf51c75b7fb8894d2c34e46bff4e2067d6f31a394eb806ec526bb1054d4671a50b34f76e368084a7c6146f65d4c45ec8aaed14406453befe238104a48f5a3e7b2e7272f4eba6cce8b556f405ed12b4628e938afe60ebe7a769630a5862c2ab660651ec081748f1083155e00cc58c5faf808fa0a233e4f59a96888e5906857ced591abf25eb75f9470f056837b42505d76d33aa3728654da8333977f2794db591ea8f1dbbd16a8bae6f6a462b3555e856b6cbf85c648f42664f9818b0cbdd7d042c8dff6c8365af98ccaa10f2696e5926fc9db7790f8d3d5d0a8c100912c339ae7a78d1e7bdd26162eb8bb9728e2a79a17bce60c83fa2de129eafe6256899cd78c4050f56a53f2dcc6c68e77c0195431fb007b3dab69cdc7c14cb9cf1ab3ef97e5d84e9b3f9e8a4956f72cabf48be02ee4bbe564022fdd5d1db03ad473dcda0678503a96c67f4409210f243c533e1778c07210e33b6d057d00ffeffca4a50cae9edcb5b7ed2b0845172fc720c063caead42af66209f0f035e47886932e34feb1a8c99ce9b7d836c029dc17ebdddbb6d8e74cd618715bafb789cbfa98e8179af88c4a47e41e3108560a23c4945902b6f48b9357b8814d6388becaa5c264b22c142e92d74b6a8397568cacc4b29393825fe1a985c95acfa9eae2a7230dc83a194acd7a94a2e6e6c20452f50e428ab637d96402f150c544c3714d6674819eda19794dab9a8f9705ad3087a64215e2d03369e3c18a65bd803cb62984740c63bcf8126a1afa0402ab1808bc24c7c0360d9e64a2d86063beced01561c4c88242ac7fb04051229723c9feb554eb00f78eb53068148c56b873f6cbfc94c9e59cc1b21ec1e2d890b83a2bcb720151f8c31ade7e4e57e8fe3efb5931dc90b64c3e6313a0574ccc05b187803f80bb87eb8bea3b2bdf6360b77e8cf1b10c1c26c6525adddd2acc984237160b7ddc3f4e015080b4502f58a9946994e2dbcff1afbf0124fce11dda62286f2ff499d309930b7bf2d4daa3426b29d9118485a7e89566229decab4d909347dc16d682280ac357934e94ca4013f5a70bffd92ff37ff8c1d6ba7e8fcdd19be45ec6302edf76f49d47e79de1418e3d0dbcbffb61118aa941e34b54cd32b841ea235406be3f9612116b1c129b78fe8107464b621770db2216a7a8b59a77eb62f44bcf0866581031fa05c2b88d7ec95c0fe45bf86ea599457da0be5b45daeac854d285af21abdfbe0ead7e83569a460acabdea46c10b956ef3b5731ff51d1452a5482e2bf0a7fc1bd0d137f08ef48641d46e5e4a5669265b8b3e11155aec21860fb0e4b253436251acc9722525e0213d59b13a236f181903d79d7088ebc32561743c833b7f14bad0fa321763d861d9bf96ac5a9db1828d6bc8810338bdcd694d37a9112fc38d77bd4bb4becd449143fc1e2525e15529c09b505983be6b6601c09cd329f1de4a22a75202009303898991c320736930213ab2d44cbf88557f5b9c411243bfe0bc4297b59853c8d45dacf499067a519b5ec1d2218ed07b8597181f4cc73a9f880a20cd9745cd177048d3fc5466e448bbc7d04262031faa4da37319ced625c0533504c6e399a0a30d7899483330252d51a3181b29091a8ee2bd206d2b863a1204a0d9dac208fdae7700e969be9e9e81a481ef41c18406233a732b62376458d2753aa1f46ea5dc52462e208a9cab959a4b20b67bcd8d3a2763561e32e195d4f2d027970751e6bbe106eeaba3890b66af0e7137a2baeadb5319a1da8547e3173c956d1d1f8e905eb1d27ba76baf99065b5bb2a6e32ba1bdbf20b7efbf964a4712a5dc7ab6fbf9175f7fb13513379bb5d844a2dca49bd0d9664da79b6a8a367fa1d7548e2bbea8fd732e10bd3713f0fbe347f7c17958cbef56fa56b7db51d53a3dffd09c9ad6f0f95b07aa747a8d2659bd5a2866d7a9d9fb7a6b2c65a75945b27adf2c6777b811338d3ee4e470a0157e1928aae8eb6c673e34870ccb98f230e03548b9507708cbb2b194e7ec7d4d9eec79c71bfde43fb0e5d8c63e36d10c29484acd0d7685a74641d4d9a5acc5dcc6d32518a1416d423e59a9ad7870768622513b4b83520ddb552bf3b0b5bb26c5c24494f5f774ce8b9571cf19d352e765f8bb2adc9cd03123d552314d3c1699734bcfe7bd0a833866fed61679a376a5eb43899442882b401b2fee359a4a142da87965aed82708c945852f9bd12032571837b1029f42ff791aa81020f8d0c02d261e0e1a9c1aa6cead35624e4274a9d44ef7bd3ea1a5469274a98966aa0011d57b4fc94a0d0c1d99281c9eccb0f051bd028ab7c50e034fc7761fbd8bf994415295366d89d7b4c09b4a0b465fa70d37fa6e1ff86fe9560b2626f69a7fb881d80e37fc7b1bc7a24fca31535d673e990c37dc12a82df7f69a16effa2478f36631ec0c373ae40909619027f07dbd97f6352d824ddaf7498a967c4ecdd3de80aadc9a015d18b72c72c556930a8c4e98f20c224f94ba2252162dc9e5df6dbd4b322ac4f8aaaff151c441c9b2e4ff5ab262e5ac6f1a5449e70c49ce75a4f1d0fef180a13aa7eb16e1180676cbe8cbb7e00321059bd403b2ddf7bfd562117ebaf5feee3cdbfe5f9d24909d674d28cf5aa0d4220962378148f0edd6fc69fe08cca29721bfb8b432b46035594a13f5a4c6d984e7a747c0c80c2b40d5e83298c14b7c7e4a8ee68b0aee70415d8187abc8d2d4b97f86cf5c953e6a1b5ffa71502298b073a38572291efdef8dfdeb6db5476d5bad49ea0ab57f381d02e90d4dc036ec0e68a954ce8c968a805113a7a0ad6ba5e197a534e919750be3660ce15615500cf8010607632c2997f391b524c74b07fafda212233a2a56608c962467a3e5143cae67b4cafbf800845032065965e1a8febe0d3d144af417ec983d7387951a24e019e4f571bb0cd8fe5352d095123d62424a341a41e8502013b3570fcece2e8de947411a2d7981e113e105be01a118f74d4517a049472c412c2bc98a6be6429fd8e8f83fc35541c7d5266a3030c227a4f3c1703bdf27428d29e17371c5561e8d58e04fb485d60c27f3c6d5ebc24651ac186ecedff523991cf167eb14ed43efdc1a2491311a3acc0fcece40129410fdc434896cc2a5898f63751563bda4644e1768f9b4f6c38ef42e30dc3d07e81897ea2c7f49ba740ce752c599f13cc26ab5be5eed9e51407410e723635205a7171f07b5ca23b0657987405478b4d9b156c75932624af7c6189dd171868b12ad61640fd44c3400e9346982d4cc9e9a953263c24a8f8c194f771a1cc1d088aaf51018a3f70ec02429ca2117db52ce908769c0c0154b7653ac08cd7396db31f1a200481601e6628e8acaef40a1296b7b8c75989a0c6d70d673b320ad49d2bb16f767282698e6c1af415240b653efab770c7c14ad2a5076c0631f79388587a837acf92e2d38b4b78c1642a2d2d28f310c31373cd3b3d1da7bb004d325ad7242a74ac9409dc3dec17952c0b4d15a97bdcb0aa4412a41f001fa54a6704fa0e49f7d6ef52115233103909824fb96c614b746c3b826b53008adb11f6912f643ab865411380b00b702a39767f5eb75edd552e328e6331fb7db9eec0504a2aba768c34720303c472a6d8b41c211a4d43680be6fc1ed0756e07bd3297a0d1b56b79687b7741b73f2008df51c3bdc5e91495e5b55b3e6ec445fec3c8269df9f3df8608cf82d6c1254a8147f863649a6421ad6bc18678309fcfbdc9d43fd8b131fd1b0a4ebad5e8a85b4ee43b3f366bc48b078b3fd8c4121b535c26134100e3fd88105d7b1feb882023bac9649c525aced02dba57a7ec7f269115fc15487236860e6ff6ee2dfb40846455dcfdf31b89d8e46fadc196d5c35e344e0bf766bb538b6ec8604aae197e7de5b80e6ddb43fb464856e78f3e0eb83d12e695cf2a46fc3d1c3b1f9dde299f484f0f14c56e8ba88761a63f721a1b4bad87666e263ae686b847cba39ca367c93dfbdfb7e6dedd78a1095528c39305d6b1bd616a6f872ced86c3012222e0c40a4a50fe6e0eccc533e9ddfc0df17b4a273f2612444c168791bde161e4df05d8cb6eba72e0c7d6302a6b9575de1957986b6f90f6351886a402a96df92cd6fc870c37df0a00d37b20025a4aeb7ef6e9bf7a76d93a0f46d9c0208556151721160cdb9d39d5ed1c676e6d945d1cdab173a4c24af3a9bc238aa70d755a835507ccf8b5ae9f7cb1a78decad841313e3c1cf316cbbaafaf68c50ddec4a035602c6597a24f3af9ec3332ee5d1a2604ce76e1c5738c4236819ebddd907b2e692650acce87758bc7d8ef2a46af7440ff0a74717510a7e50a3bf4552dfb5427c0c3f7ebdc8e3bb39cdbbbc3f643a4368085ef1d640c4f6617ee7c676d8c9be2e264d308bd5891f2524d75327514f63edcd17dde98bbccf34ad348a4f4205dddf6d4602d6d1498fcfe7ca3bf31dc7037d430a5775e510f37dc0db24db1d8bca4361869c5d8d8cc871b6fd8e88ad7c30d7bed3cdcb0818ad557ef919d57a27356de51fe5f7755f867a3c2888eaf2674cc7ee6928f78c1eb55a3ca825572a154876bb6aeec2e148174ee42f0ff342a582b5c7b093cd05c53cc2b365e0fe17b5e14af44de44cf01d14f23db6ba0cf2f1718c3a9bd9e22bdf6d2d7055dc1ebf7f62ae77ccecbe9f77a3b35eb2d168c56b41c37412c25abf0feb351341165fd23033b78738dd8fbfa70be9851c9e56b93dc6c5da5b5852d74e0d53850a2af49a9e2fd0b361638c7c05e1b55c6055fbca6f5ac5130a7f2ea684ea7cd7e554972e555c1295b30da9c2b55d43a0faaf0a0e08b6441cb1e514567fcd73412f05256f20445a8d2e4c7efe07dda19bc2f5a53a175dcba7dc1d7367fc3f396a9c6f293652d597af6b0c29ae9c50ac9a2f3d5224d3e8e3ada49ccab739558a3b0ca4b5ede05254daaa82f24f7d8f78cd6cb8a9d3108b0d0dc29f07e637f926a0e45df41a28674d911e47469ee0a512ce72d5c09cb14fb6b29fa076dce12969c2e1373ec8ad233e3cad36be4cad3d485e5cd69c3ef67f0063d5994063729d8fbe4c7ef926c4c95b44b1355fa8f4adc240bbe2f5a0ace66152f9bdb5815bda912934f0b3e2df511375d7854b3791377283a63c5a451f2cb52d67cb26a8399de892e68c09aa2b4606ec61b5853c528606baadc210f4d00f2efd39b12834f9c957491642caef8b5e0652d9b2a565ca3a963b91a2fe0ee2a3d6657eb40882a87942dcd4a33ba6020c9ce6715933351e46beabca2554adcb80a3a967aa3c66cb598b1c4369b14e2e6a8ac45b2e0fb4a3435d88a4d957e55d1e93c455c8a9b2ac9b79f2b2a34c543eb1030dc78257e0d94e54f536f46e2fd19ffb54db9d9577be3259569fcfe73e44a4d474935a175b9fe1438ff1902c72768e4cd1fee2f82fca0300f9141cd76f71042cd46f7924261b3500c25ca8c1c0a8b9a82282cb79228fcfcdf797c5ec3726e2aba484eb82a389f5562396d929b2a6be3daffa304552d96e3d97e9a487f3fe97227875ac3d85a98d71d026b5af1fc9ccd1705ad15c749f206bfcea9b8595f61bf62747d8d64e1feb216ebfa57e5ad7dabc22469aac2e4c753717356d32a3d1f88477bf9a9b8392c5be1ae01b9a6a80de041ab10d1ddb515a9754816a41aac515bee781f33dcd016c1e1c6bb3fd000093ee5ac58605c93315df01ae24c1b9755df68ea4c949e85b8aec27b2c5957d97846abfdbabbddcb6af1d362c1aa032a59b7479e4029bcc5eeeeb8fb9e7bcfc1d663c801762016ab8a4f6735e98e7b64777be719f9df2c276f682df53bbdef8c8bdc58e4da03904bafddeef6ced34dd5b04fbea7633612e2aa4f8eca3134de2f0a02d524dc2a57d7e00184b7175b8fc9b410235ae08509834b8d6674ccc673266d79a7e54f92bd387945f6c8a347c627e48697b9b8c1a8372e3816f9ec335d9259a791e6a7d0a7de857d397ccfc64b85d26179cd2b51ea6cac5a99b0780cdc9f7dbfe88da8ae30410ca288bf6314832690cdf2a54eb6293dc010e4ff5157234ef33ca8493e7e3463a2754dc733cc8a1980fe99b31b45100da0baa11c570c237dde7ab7c1c6e306d709425a997582c90dca333ac7e8871dbcfd821aaec8de43e0a7743854bd0152531fbd986ff861e30e489140b8376c6f8d2dd3da6be855ad67ac853cda81285ed1ed7dca4bbd4fbb06314120c3f82af0c80d291e2e67d6467f0910e24cda704a6128f354b81f0c8e990ef603598e19be9c1195497ff196bba72fae34637eb4bef4f78f1f83c83241f3201176e454a5a867b8011339dc20bcf4daf57c183715af53edd3cb66e6c80300ae431ef0c48b99465c95035162201251c17cd74227254537c3d7a99433ba4eafb9701e3417ebd0876b9d9fe0e58ed7c33a502132a10fab57cd86390d02a554901dd57b6a091f3a718d75af3ca1c21ff94c556fa5e62355d71d5c901ed0a23898b1f155d74489e9fb13e03bb8d91a7e3e63bfeeda3091d67b0afd57b50f0595845ad2f13ca7225417424a3e52a777dbdb294c4657b262d207983eaaea6b021b9b53d1a0048eec330acf0ec0e9176e9769c19506b149206958b717d4c0a896919397b972a6181ad87076f81d3eb18118bc8d526f06c8b75830206a10cd55d3616565572e47c007fb8826fcedcd81eec495e90708ae2b8569541cbc434cafe2996aa194b48a49a9309a2f65ed3da232913eddb2f6c1ef14f2b034900a66d18cc8ed7317a5d1840c72f806d8fbacc1e8398e56063e0707e16327cf7c774c39341c10627868a0dc0378cb9e9d626f58a3f686502cc95b1c3d1609f93910dd93898b02187e6f5960877b767101a3beb8207b5e154532e0ae8b0f92352390ee9d5e24655b842fcc987d35ebc20ba34b8afae9fbd6aa56e7623a2dc2e0f81761105f04ea48d8b5ea938b44bc5f4fa0bbaa5170f30a3c6abc0f359b2ffa1895beaf8a6b972b3de27858c5414e04356c8d4441abe927469f20d0766dcc89443033f4d8ecc2e8f00fcc2bb08635e2f020de15d9f386e9d1cdc78f5e14549ff6bc49e9412cc38c2e1685099ef556817ea734943185b890b2d7ebe93937ff663aa37c619fea0255ddc6c567e8a8678ad87ca120b48fca5bd88079f8aa6140586ff5bc5fb1d580741ad929cd41463306179724aed88dc38b2944764d6a873098d8c542efa264d87d7f5fc112628a5dfb2da82acdfce86af83ba882257fd599a66c4dadcef935a32ab6491459cb1e3047225f9141583b50421fe990a39a4ec3945a76443fb295171e1bbd5ced687b511e2e35be44031c37da2cf0ef30ef42d858efd344da085b23f1e42a0acf892b1c51eadb2bf05c85612334bd774087fe595151f7ca4fe74fc2cad255ee5e69474605d46f721b3de07093153cba30a30ee6b975e461ad078fde6de36006a6fe5bfcab9ee2289d4e72f441c5be37a63583f745aa15ecd1467ec38be2a7727eafbdecd54d6ee7a7ebb6b3a6ffdd605bdf7f97ed3e6c9bedaedd67ffc65db08e7a71d29a3be43f8e98217868886c40d051f556aa5d0b2320fb669a190f6cc5e6e29af91b276cfbe0dd805158dae81f4b13e62a2f0d2282b5819d4d62062b48e1108ce7d62ca1aa79ea45a448fa3f932eaf5e1f7fbc894987463b17cbf1ec95b86660c3093f79b5c143dcaf1b7e68c23d2a5955737a06975f0e76f0d96bc525c07ac1ae393eb9f27f3f0f9e7cbca6798e8f6bdc0fafc698ce59712e7e64233a227bc4ff19c2790346c01f1898c20198ff25acfb423328bf76f8cd9f015a49984ef56f68d98867b86bde8730336fc6d8d1ccfb10ceb8d752d662a1c8814e2986a16b344d4dbeffb2a8869493c810a1f05c2cbcc8ea352dec3a7a95ecc0b5591f5f45ba9a62a10ebaa0e242163a5bdf9ecc55b781bf7e880244678f4cc5512f7b7b3e7eed7054579b069a3e175e8a12ae5de191d92519aba310c42d92449de685acc9a8123712724aa8fa73fa1ee61fef832f5ddda3c39dedad9d1d782f73b6ac20144819ac4040cffe7b3b6dbdef35c3e79b90213e961dc24b7353f2f12329e9359fd25a5459885a8300dc4e09fab6572a1f3f921891ed7861ddbe03c23e2aeb6e20b7b305563855abdc273bdba00379600a0e8a475ecffc704820f2231520f3eb0e3c18142e1059ee70d1a67c085980f537839e9ec4e85b9c4c14eb106463ea7c0692bee7ab18bc89ee6e75dfd2cd5fdff5ba6ff737ffcfbbded6b44f3a7fddd9fceb6ea797d5e2a5b8313780a9e5f1798fbf357558340e2f101be18175a6e5203af0a348b90a0a07b0070c01684a72176a308d8844fce8a459833cf6b04bdb2b1b6cd2273fff422f58fec67b97046d78cca7d12bd0a717814483e1f2981ee3e76f2110090474264f4867f15e49d8db3f4ee86a6b387b5fb332f70e743addc5c78f8d7c177124508ea92a783255857f37030f7fc1953db0a9f077ad892a82c41a244c56d2968d09d33a60cb54f60a188379858ed5da725834923798c3b533aac179e07cb580e3bfbd6c501f37156ed2bf71b055d7dd3ad84a7fd865062651107e98541709d384fdd82ac5a67dace8f754cfd83c8c74996dc1b746a575e84005af41ced8e215aba631e465cd0bb9654b3ba926ebfab195bc86476351864138d5974e54631d5455fedf7c318477156f30b084777f2646bf00d14b5f8732675d9bc2c9dbbb1c700aeefa54f38c97397b7f32e9f21ef906f4201320d3bbca7b74afad0828f15e0382de895ced4331fac5dcd0b66db960fc9055535b3a21e8bf3f5c4da1f03d835f9e8b476e3c2e758dcc7eb0f6013e76a5ea6f5b20ca83828faf4c99fe698b25ffd5f49ba9bf6d81b134b6ae9a36d9762c2e9d3ee9a8aed5bfba1bf5a782dab1e73ffb56146d8fde96ce9a2f7c219a85db33e66cd7ebea3fd02ed0c7d9eb45474ccd5f4ca33850e46859d780ab112326e1aba28901b1e5f8d13efad401e47dbcc752f6ba7a4c98c6b46f86f8b603bf2f2eec245d40142afbf35d1f57e0b3cf1a4dd477acadfe7a67bc57f4cc0e48b892a20485f5b0cc6d893ecfa36742ff8ef940fe91d96caac6918117c5803c7a04338c83c31ca5f667a6aa2891ab19a885ef4afbfec42a0a01cc7a5671838d91f942097ab79334f0c590852f4a7632e9beed146c522b3a03efaa8e9e27d54bba19baa041253b95a97a6adb665c6ade8859f2d542ac4766ce72be9c03d9cf695174def53c18288371b4a95b31046f60f8b521cdc1fb3a989e1a937f26b1411617f7ec5dd2b9db11050a96ca72f2111d5f4d21c9f680744a5132b309463a5577e2e329cdf9520ec8e766bf2c2b2954d5850021636a8b655df0924530f4516740764cde4f889fa828543232e310c193eaba36cd68878ea42896b5050391022134a18362726e2e25ab74e41d2cc397d0b0690e685188651d21e59cab4dc1d08f14a9164bdac933db15d7ce4ee50cd4ea41cbdec052dddd1cfcaecfd510d6d5265b64735737b95147b201f9dc4c5ae7efaa7b4aba735e6eeac22fbff86af1bed7f16eaa4dc17660f66b8c04e8f7ce81d4b3e57c54525ef8c263cd50c2fa89c13c5d379867dbdbe9c17cde1c0cacbd79a8e006e731e20a87640e47e901ea109faccaa6cbba6655361315ff557d2c1a13e7c1c648961a34fe782864dcb34db32670843fd0a2f9e7e1eaff93872ba0e1976c5247a7192549e5962deda49aaccd3b602ac50d4fb5edb7a533286ef4065fefec0e6a794dc78590f1290dbb82924e5c755d0750e1cf83d47fc3410a501e63901ca7b6bc44e6ea68d1eab0b6caa966ed1e05059560490766ed4d91bfa9f5f1dbae80faeda786c338ad8549e7e66bbda8f79a02f0247bf0114b81533aa56a1d1ea5f4b10fa6e5ad2a7ef7fcfe4720b9a0a903504ecb29abc45216ab33561f8185f2fcd54b4fea5e5c606a2ed56d5721d70bc4af3e72b8b7186aba9afa3d9e2deed0d1f1d0d0ae72fbae1c300bbd1ef60a7da6b46cecb67333e335ebb40959d5bae5818cce5898d8f01e87196efc7d4447acd8aa9665cde76c0b9fc3c8ad6443f4fa747878ccc13a583771a4796e1cf33456332a8d0b7b0b4b72f8655ba6f670a317f13303b9cb9054fa240ec0a618802ecca0ec2597758f343e6534cfbde86dcfedc5d32338461b14dcc93ed163cff73b0d7ac0f84a7b7ba48314d3e9a5ca13df9e900e09a2462162a662703bdf814a9d7e346080f3d9674de0d9884af6332dd065a5d7eccb9e7beffd44a9a1e97937f07059e2c299898a4fb5772774782e4ec127201244a696bd6d4137e6e9e1fb45b7d3fdbf1f87c3e150f62cda068a1a4cf7db01947efc6b4ff1a469a70717339d9ebbb9190ee513b8af21fed7ff3b1ccac71fd5fffd150a3bed13e18d4f75fb7b1123424bd2e36f20afc61a342af928df87d2ee86780fca0bb69049e09ce0670f633ae6cbe17f1d9d1f1dffc3ff727c7e787af822fe1255faafa3f3a0ce4fc7af4e7e3ac66fd782e7709be8f9fe6a8111b1b337bcc8c7b4ca3d7ee6346ccbcf0255f94e860815136d5f40aef2fb35dfccc53c01e2259fb0f16a5c307920e60b1a0a0a6c58d82a9b63a863640240799d385328168e570db6d4b4f96f534c5b56c9f5a7b65ab2b3f892528c7e49bc3483b0feece664f48bafd03ab08f1a298fe203a4afee3ee8fc6874eb38d7ba79bae50ecae1f95b0dd5f9427b605fb8f75edfde55c3f5ae96e336c8c7ad6f7f991cabe6905749fd2dbde442e6bfb4810027b44fec9bacfb389c6123736a16facf566fb3e6511aff40301e7f31ebee5cc9a046cbfb9d16c5f9a51092d9133f7b3f2e9639cbfd1c60dae860c8c5649ebd7d9e3e36f9a68a940f315a256c459849ee1fb7fcb4ff164ad22682befeae927b0408624e8fc59ed080269267b4f5768d7bdd58d917157a42db5f063de8898dab8453d66c9c798f6ce011cac868bae43ecf540cdff4854b6789feb92cef7882cdaf61ffd6a6722bab3aec3d8fdad932fcc3b47002afc3142b544a83dfca959b3ffd96ba33d530eacd96eabf3c0c4d77ef79ad7b33118bcf678c9cdb3855ce599914ac969013171f6042862a17d00a23da8a92b916004ed6b4864c83b414f028eb425cb30a32315ed854b87cbe80b8bfe38256b4e6d78cecbf3ecac82b216b056e2e4ac891f598f0ba2331432040e473003e6304160932739439d16ba6b32b528711666f1cd3127219024493711033d6e3b878b9890916bce1c138e085e00d2b0a1768f9bb95917098e9cf4ddda53777b96052e73ba85985993fd88c5e7351e9c8c500cc35e02665b2ecabbfd504286cc657920c3760ad871b30d6e1865ac3e1864110921ccfbc55c064d2e408666ea1c6a9d6b01664aae679ce6869a60d93b141de9099904c43ccc8f7a222ec3d8535c2cc4518883ab7093e206fa5431eb227f39a009e9240735ecb819db4cbcbcb5fe47b5c51b810f5290e08094d939b6e0136a795582eb65c3d70eb7faca7ad9435c9756036b2479e6e6f374abd1b2c7da67facd89d853720976241c7bc5e91bf7e30b06ee792302ad9262f37c5b2beeceb66baa64e75f5180494df9b031b5c993d86a77db8c307e4830706af046c39cb07c42fdf31e5b7f1b8bea7b91a4ff703e1e58070d002c86d8fec7d43ba1ae2dfbcc9e5e5de07ac740b7b502ceb3d37da6f6c64ed0ff078990570d47f7fcbf935aefade870fde7742b22cf3e7b81f17c653f2163a78e755bbf5fa57ff1d75e690553bf719d2231f99ad9c5fbb36bd5b33608f4cb0182406d09d9dbe7dd8902cbf6bdb969d9a5ce4e2c2a5981dad08af252b2690d9af96643ce345ee9ae1867b03913ef4d6cf0524fc511b38c1542c47241277a7e250cb45ae995bc41a6c9ec411a4d971697cd446d3ee003dbb07c7335a4e99349bd90effdc84f8269f9339e58ec105cc9f96985d718033bb492e9d84ba8cbeb13cf8a4254bf4c954421ca299803902d7fb9c5c738a2bc3cb4bb00c66e48d1a924ec414b0383262535e4a3b57c38d43cd21654da72c232f96152691e5123ff5230010075fcef8a446f603abaa13ccc4eb85945d8b602e2cdfb55c4807a4f75adb04bc3ab5be376f881511e5983939a7d02b58cd32f292a9df35bd4261371145216ed488345b4e72569cd23d829c015c9a7df681130d1375a66b7661bb5bd608eedbac8652cd5fd4e4eb47203ed30b5e743c765ab8e31c7f0b766a9327e97740b466192f3dd6f46c7bfb966c052dd1c5c6b861e8a6f1686ebf41ffa55a10f8f8b72d6ce62005ccc31f51c02580e6305117f4ca25192bc09a6f2429285c5e240f5c0c4cf3084bb3d241f615dd3cdbde9e4bd2adfde4a0977a0a2e7b6404b1c2204d332f21d992bce1f578a63393392aca42b461eb70492e61ed71cf484c628889f1160b564a75d0610bd45e10cbb9b836190abc7dacfbd27bd875f597bf100c66eab635fc543d8b49ada7afaef8f88a33599305ad20659a0d0dde27732e6bc8daa7f84dc5a452a614472ae0ae2f67055d61ce079b9675462b50d916bc24b9b82933b2af1545aba970893c50f1d31b93053fcf092d411bf136266e68554fa7e7920ca7236792572cc7697709daf4902ccbf2262923e733aaf6aaa985683b5af7942b9b1a4da73aa465de57a73585c89caaf5d5b2c95002b0419b3804201f9c9df95cd4301fd0190134537add7b3aae8b558cb9910c2debfa0d79fcf858d4ecf1e3016880a8a457de60e43ad13987b51b31c24ab19cce40f3d670818f61b2f3f15829ea3a2a969ab74541eb89a8e69b745a0a59f3715f273682ae0ecece92bd69c06f27a21a33492a3629c48d7cd79dd5f5420eb6b6a6bc9e2d47909b1af4ca5fe4568b7e392ac468ebd9f6f6974fb79fb22f77bfa65f7e3e625f7c417777c64fd9eeeef633f6f9d73b5f7cb5bbf36cf7f3d196acc65b014ed92ff22f2f77b7bfda7cb9bbf3aca7d1e225016f2735d37335f6b9dacec8dddf07f309058b8ae57c0c411e02ddbb4fd8352c20046144d0c627f252d7d9045e7009a226fcb64921e1c12526025c2c0ace72c2e7e02d53b3620547370a910711b43eaff5ad42226b4550a9139f66784207ddc0647e5afec192e47a4934e86ec5688ecff6099772c93e65a5a0a1dcda79f6f55fe04fb5fd59596f3eddddfdf28b9d9d2f77ccf42b0e0b13cbcb89e86590cb1c5581800661778c674240bef911ab6f98e2a13ebd19f6fd4d4c892ea54cd3d0adffb256596fbbeea953f75f2e2e5eff747a7871a10078b12a4ed5b0ffda1aad026d2b0e589f345ac4412b5ce52ec60020da41300c6111bc38b6811d22e068ddc4e00731b08f1fcdab650373419526f50fb56e64cf54f44e04508219ec4b2d57a10a1edfcfc37a84025f83a3a522e68a814cc418cbd20fbe819ff0ad94edffb3cfc823ef77c6e52b632cf85647db02e064a07f21146f343a2a8fd233966694184502ab6281cb12e7ec70089097912712360b0dcc7e1fbec1c8544876e89987daacb00dc0d634149a5aa3860e7b6d5c39290f9514fdf851cf92f9a8a66eed487c7bd9bd910c471f9b832f9cf6e8020b1210734b3908a1e9a6c1b295ec7d7d408b6244c1e3dd7b866c3c222c3d7bb98bd08e48f63cfa74a648bdec58279bb21ab2eb1f68b20ef3b1f945ddf846c38e26da2d030c6d04495595b003365732a94eb40e21bb1d6e6dec30f5af87f194d52f58c5af590e7af3f795981bbf87e00159aa8ef6345954ecfa0cad05c185cbfbfac83d2e28838da00b3ffbcc35cea45eed3d8f469a6fc43d2a31eb8bd46189a325668d5d554cc23b65f559491772266a8cc5fb139cb7bb0a1f3f261ce40e2f580de30976b62dc5bda19bc1cb3f1790c187a28340910f1a73726b9ff242f21c57cf861f881886496e6ea3cb2db13f6b21feec33127fb693681b93702ca67150e7d6fbe5efcf14067b3e061f3f92f8f3dd18a0886c47c0feedfe32e4e04332a5b7269483de7e8de0393e71af89ac034b807618eca10b31b74883f5f682dd95e81589abaddb16d273fb689d44594b77068859128fdcf47e7b9e087a9110539f46726be9ed79eaa2af290a3e81ced61159b2d7886334d71d63b07900d7afb817d825b9e6c9c02fd0eb989663561c7b02a99bec6acaea733c16c69cda7c0e0393e93364142c063f7aaa8d3a06f651b9ea9340f18133f31e16913da75a39188e284d67fa5edd8b70eb4af6480793fa77bc45d39de85a99fa69d7cbf46c0bd56fcca77ef2e264a07d7ec8c4c8719487ef6b32a7bf88ca51798cb9dec88d17db51f1001168112ec10806388d01e2ba793fc462a0ff4dc968bdd03e19fa2b1d90a7b9ee0a28d477cfb5f7616ab3a0c38c37edae3488ff7a1b4bec33b7cf237f89ad2d7fb36156d1e286ae241931b76785bd7bb4f9c8d711bdcfc04a916b6f58f4ad710fae7899bf3879752c7206ccab1731349f0778fca319c367c1aa89a8e6a0c07655777d3b2fbd35aa6ad0f63dafa169334a8e1766d9edbf50958607721177469c41bff1308e2cb34d8dc8ea4f168d30546e4862fec87d125b37238d136323f41cb013b367dd98fd5de4ce683a1d351043fa74a876e49a62ff1837b0683e6f30402b03034ef93c42f9dc724b879ee508d2b104fbc531a352e8515bfb2691577c810f85c01c8da20a7bdcda523471831731c11d76b52c4b7b67c16bb8a89586795dcc97b2be507b4bb2dadfa58f2c0c75cc65d1610ce9864ed8d91ada09f003bfec6484711b910d9755e0c98fe531fdbb3f83987ca1ac0d606852b3336f20acc13ec05d6b92eda8a710e7e534d56fd44494eee47458e6ba854f3277cd56dbecb7ceffba1558bb0689198c16c43185a48ae131b51457b0bcaec10a1a61eb8c6611710227ddefdea0666b2928ad3b4b9f03bdeda0ea3f780384c7c9f52bfad4cd3d58d07f1bf9c7f2e33e24efce4e77507c88aa21f806953f6da172c7eb40475c3f29f720f36096ef41e577ccf44328bba96f045a7a421bf175a9a6c928a110352ae94ebb517cd176d3534a52fbd3eaa31c4cb7d17818062257902d624a5b864b70b8e8c228e2a464632625ad56e81e65937f931bc6ab9c54740c06d95c5f52dcf07a66a1192dc47625630f2c5e420673d04ea5306a21dc83c8658519512c38742fd24b0099c717ac44178744471325676f98e94d2b9563379d46510a16d34e4ab0c9d6cd5e8a8622a8c16ab475d8e0949fa738255ed4386f7a0fcbb2a5c72e44968badca0027d84a167498e641efb0cfd750a33fb1bab7868edb8eab26fe548e8c56b41c38e36d1a434d2d4bc4bbfc1ed7b2b53e99d1322f3c7529493ba69227b772c1e4b1a87fa0d74ccbab93ca6694d973076f77167ee4317d9ae787656eea07a7e84770e6f9f8716d0fde2c4a2b309b2caa4fb6ef9244d1d924442ce66ca93a6642e3be7bc99e4213c1bd87a1dbad3bcea0334af81c280c387a4f8b58647a5a63940ed976b4c9ffba36fa36f88e5510d6ddab9d99cf71cdd7773cfec46b410f529fbc1d6e1868c38d77a84a61b267fd947422f4ad648db9716d1cdc9c150c1c054cc768c64f17f91740ad9582136f6badc0f0d42c666bbb60eb208716af44cff1764c5713770cd31d2aeeaa02d9845a6bac1b8a55e3eea8a1f315d98da7b37d58b20b92513549db54d43ba1ef75d0d8d810a5097c218da5c69a690e34984c94c5aa6b80f6621e1fb51a17a2b40f8fa151b3ffdb307e93e3f17e88608b467839eedd832563e5c4576ef6c9948e9583ef807d28de55de7a50963945258a4bdd36e0faafa0179550fa5ac6caebecf8e4c5e1c5e1f1cf3a9bcaa212f9d2e453f9565fba805f3f218fc93eb934bd5e1a9f5574f0040f785eca9ad11cefdce1badfbe15d4004075f4a2a9eaec33d625a9cd6552dfba3e265de712d7774f16faee1d42dfbe9ae8fb4f2f7ae005349ef9f86a90b5006f96957519900b36e6133ed6cc2d744dd723d16dadb3a4fae17b245af7c39d67dbe0944cc04bf083de04d62b9a185fc2572b4b59eefde4de874b705e56ffb7f9d70fd8f6f652fb3362dbdeade93ef25926d61191806b899314011996ec64a2feecbe751fe318545e7db3a0ae340835d5c7ade448e66c266e4247c7e7a4aef874ca2af4fe425b97f6f0d73ec41ece3cc0762444d1e8227a4011f9522b2ad35410782bd14294537714790c6dd1ada3c5232d234793c01970b851d05f57087db811b9730ae3bda7604f78256b72097eaad592dd5e3a9f2856934b5ff25d6604d2b7a2ef13b4c329f27d00138ea3355de9cef468b5b79728f50b0f960f37fa6459164ce22b1c5a48a1897d452e03c17a99794be063f75b1743a1e9d603cf5ff05285a2372a7abd6a5742a406c33bced44c85586a67c74e4e16159ba07f9cae11cd91ed69c24b2e55579a61f8030d80df39d26351cdd16f2824b652f8ec4b51dd44758c67e69bd239515e7a0ce39bc0f3516121cdb823a2f3c840530212098e1ac809b51ff4b70567f7bef11cd72023daa97d4f6a42259142c0bf092c03dc34b86fc8b1a8d9c03bf797c2715193bcdebe30ca1c86f02a89e6b93af3c35304d50b2dc8a5f6427498f9eb64aebeee58a0c31222b089ca06638b3792f4a1b27bd1770268e80b1cc2bc0f219daf75faefab3599f3a2e0928d45995bba302cd76ce9cb50f504c7ed4525ae796e449d6ef84f700f5ed9ad4f89e4e5b460f6a4a9d4791ad0852405bf6203eb498c6ef5977d0d5154849739bfe6f9127604546e179416c80723c5f4dc3fdddeeedb4f3075cfbc2f66d9bd6fb7b7b1a0739b2674863714a737a864755f3fa5b0d5c01b154984e35b89324b0135c4292a72c9800d617b2ec9a53ac76189bd09bef43a522307e8e0202ec8e57688f6dfe105eb07bcd7261fc907c4e7db01c14f7d9816ef270ecb7eb01302d4a7e7d95715f5b978d1701259d40f520c5d64007322926733ba60e699b802ebc76c4a9b04b0535f997878c6b292dd7859cbc8376447a1a7fedc243b6440b65d22b39d7b2732536def9fcc6c51eb6c62782fde276f61b85142313c6b3476ff7e9e2b09b294b598fb9c98298e8d8a52460e2235d9d5c367130ad08b935778c9ad783d2597b928d9a535b96564df79f981333364129e5614bc15c28e35c4424cf938d35efc83c7f02e036f58148f476f6e50fc31eba531fbf189e53b6bb4e59016f63e68e38fc2da3e22420d776b4bf582025d4a5fb69639e83835fac557575a1c2a098f871057d74253dd341237773b01d40ee2d14773a23ea5a6b80d8aa360243ebb57fbaeb1e0d63c3a01eeaddfe628ccf5bb5cb5a41bc6bcc4a5f1b5cfc87e49d8fbbaa24a4da573869ef6800f97fbe6aa0e589c5c6afffc5a00671ec3439389a770e373312e8918ab3317bc74461ea59d5db55adbe44edf6b66020b36203fd4f3e2d044c8f1f0181025ec7a64f31b7017f1e64b3455c9fb4c14b55af1ff8bf3d49c1f28fb8d53a474feff5766a89d9258fedb361d9e049233f520ac5b508c74c0072fe41f8fde6f25357dbafce3106caeb0920ac7f81491791767421fb5c605a39552b590124dea116accd3b72e9e8d6d5c0a618c6781e92c15cccf3e88ed374fc8ee7b74a074054695755fb4066c53f2a2fa6b7f5a9ea990ecc75c22fea8a6cbff06b0a20f8d867a9ad5a786f5d00f57b21d16d988243bd1771773643751024d9e3641618bcffdd41526440f44ee4bc6b5ca16a258413c48ef3d5318dad08131107f4358326ba0d34aaf0b2b162ac38dd0624190de3b437b25428bfd9b236cf96e356648ad87848e3b2374940e6ec71a86ce446363a2d49c69124552f58d6e207aa3b4b777bb677d1db3075b6b0dcbdb5e60e72403734fd7b6dcc16f1d2ca7492c7fd80ceaf8a59f3c835efcd3d619f4eae0adfb9a5a6a067f1f6c54a517a25cd799abb87f175ef71ea1aa73af6edff3face5ed56ca488a84920d197df2580e2efcd897e9f2087bf3942215c0bbea28b053a00378314fa15fedbe314fe1937ee8f8d1b67224a9bb7ce0f4f26f029e904ee9350e01e29057e8fa402f7492bb0e6dd523cbd8dcb7133a3dae085cfb7ed809b2911ff2747f27383a052b2aa3e9f717984475afe2bcbbb9215137f8fb262927a1d53cf2a714330cef18455ac1cb3c3aa125577b801aef9332ad18d9295e6c4cc25cbc926a2d4ed0535f0c21c1959bc2b1406bee60666698ff8f5ef80f81baccee713aa309bd3453211b5638d6faff41eed05192952e7267bf334209d9c5f63ce1bb824fc9eaaa55af959cebdcfe8bb11f70d1fcd44c4572afec515384684776cb4a453885625194409a813110badd741740906c131fe164470f8e6b2079767a4e0b2cec84b7ec552e6da61740127fb493c392086b174e878c64b0cf30348e39b0ef7d8c3d8531b610b5d272e3e5878203f10a5e4b93ec79bb0372356889b8cec4bc26b36371112e6e29ae5445484e6395a83549b73918b975cd6dedda20db7e5c7e2a2cb5acc69cdc7703d345a356e16f5c043f48e458ddebdc939722111f1a2059c7d9d67bf898ef848033bd4316c2e66e2e642af138cd0448104bb05c63744e395b9d05ab37c197ab4e0d31a73a53fe7ef613520048fc348123aae849424e713e00335e0a041c25cbbab437f1fc5d12b7ecfa01f00f141913fd0c7e8df14fec34145bf593452184fc7ccff988d7899775b5875db6778efd7ebe9c02168adb48e6d3a96132d0a8c4284d6963ec9d98295b9f6f130cf2fef8824e1633a087e59ff4cb8c63f05475393178978d1081e184802dfb4fd3ba349f87a8c7d4a37d0becaff7ff6de86ab8ddd7818ff2a0aed13db89b109f7debe38e5a684901b9e12c81f48f3eb010ec85ed9deb05eb9ab350e4df8eeffa399d1ebee1ab8c96dfb7b4eeee969f04a1a49a3d168349a1744133d448716df2bddde1fec6c6f3a7257215b64ac4ebc926fef7eed3a71a6e8d5a019b83a5f153923179ff068c5a49ee1636e21aea38b11c4d0a8b1098ef795ae564b9e0181ba7c33f6d3f37a327136677ef317a8ccf3c7a8b1415bd0ffdcf127ea0f4c5fa46b8180b97d1384183311ccfacd082bb98260231cdab5f3bf1be3d38ac31b593c46cb553bb370569e19bd6f0d6bee11f0ad47778d9a4e3ace8a3f6e14ba4975a2c55ce54555f505a0fdd0e87bec8e2e15048009ac81c9badde60bbaed926958d50c3836642e447e6a51e1df81aad1607c62b5f6eeeece54e31b56430bf7f31db88759bf33078decfa6d286a57d79794ebdc00a8c86b71570aa8062f001b2e6fadcbc8298060836340c58c1b170eef1d6dcf4fc2ae1bdc2e7c389dd018bd268056505263c91ff8863a6af4f05975b68b4cd51bec3c62dbf220abd58e0b116ee4996057365a9963e8b287989ae3e9717f4bf13a3d727da6d61af9e1ebadc6eb84770a4dce38bb84c0ae97fa52600607166ae0c5070126617f102c1bf37c78434626e0eece2e2d6952ac5faa4fc6930b25c820fdfad91f9e8274be04e12ed3f7b452320e9776ce9605b160332cb277267046c49f73a5345f75dd6e7dd624757b4937821482cc8f1799792bb78093f4dacc451657706b28c0ae05e379fad683de65b96609797e53352632b7d926db52485a4d2150cde50c6e6c1a25725192d5a73125ce04bf16bda6db1a5a8fa6b9262567efe95da4692340a07c06517e6702ccd44ac9d41c62389653310315c9623235b14bc173d4e0abc606951b6a800bb6c6dfe55f5ef344e8e5c24b6c788ffc40f13f531599850b6e6c87ae203aaee02ac5d199cc00b34556a6f3cc5e6e7dc3705954e3891a018b293913fac2ad9a8c77398124db4b34941ede20cd83db6ba9f04aa4598ae84d7aac908b52687c6669a2ff4d67a0c2481db0112fe442898c8972d4c35088bc6423ae84255dbba704bbbc1237745727b35318457cc9f54ce5c34101f025bff1d102a44194719583ed3f77775c73a78a6dd9e180f629df1ec475af73321135943f92f9b5c853918ff00cc0e109b0d7559ec1ae8d81e16ee604c3d8bd9ade7b9e06828c656d400d98a0bc16459126a87aa0e1298ca88176b1b9af46b027e249bdb1f08a07c95abbe1874c398a28f25f32e3e6b7bfaf9f7010e7e1bf65be4d4f8eb5d33576dab9a06c25e0a50432427a2d287e93f14f02f6c11599bf84ce0df6489a885c14a0824b642e34b75940acda4bdf4dee924de5525c3be319601f106fdbc0351c023a05dd21366553ae18cf3463bf4175b5511ceae305b2978cb40c910e331bf3772473b59889a2626a0d8962a49d3d653308a70ae793d3bc91d929c8039e4c49c69a1a8a3e56989edc0da30b198544164ce6e0804287a386ec3078566bc00410062858f8264cfe8798a95935770d15e82b83679a140b63913eddfff90dcc65a08f3b6d661e903cb28f51c077e4fc0603ac6c6e3cfb237bc7339e9769c14ec4689acb4c4e527d94ede523b050c6582c8a154289e21a0dc810ce7e3a12b9027707a3b1de9ef3d15498922efbbb28943e52367b1b180bff6c8dcae8bde4098546bf015a44a3e254b1710a6e1c10c43e452d4f9672cd63ac069fe060620eb331e5b0e4a0f31fc9f98d3942a9268353ef894d16302dcbf9a0df5f2e973d0ec3eec962d2cfb0b2eaefefedec1e1cefae6ff6366cb3f7e8d751183f8fe10d9ad58dc0ed24e34b50c74f0a61ac33d9b2484d988c71b9e40586784f5245991e7de49971a62aa8005926d8d9daf631db3b3e5b632fb78ff78e31befd87bd933787ef4fd887eda3a3ed8393bddd637678c4760e0f5eed9dec1d1e1cb3c3d76cfbe01fec6f7b07afba4ca410cc5b7c9a177a16b260e9ccda043e61c74204c330d92fac1899f17cb2e013c1269a074324abb92866a952a84ba748da593a4b4bd2af5726e7a26a9bdc544770fb5298868244735e14fc06df39c43f173ceb31dabb74060c05535388910b4ea2b339c7d540e4523e6786e3bfb14d6c4564b1e8dc0a46fe975474e979c28e35fbc1c41d2ab09ed7c3c71de66ae38077f558dbbc28b6bbfacbcbaee9d27b93a42f75cf92b628546ff242b479970dab97630e5086cf034518ebf759a9efc1c6f5059ec69cef8bf122537c268c921c428b14c5b61fd1424f80c5f772f31a6db5b52e065ed0fecb97a03dfddea6b77ab8a3ea72fa1d83f7f4b4416c3e336d0d094e0c4f57c5bb2cad511f38fce9fe4ed3f3388a103cce1a5a3c46a2a266a982472b0c1a8fd773051ea75a4a57813757977d5c28ca79a0164394469e6806a4ab5628f039c6d55fa69a476ae9a7b6561c81de33aac571ee60c5bfd1c3f076578ff26590f7fd41c460b3670684a0613e841082f65fbeac6c5f59690d007c877aa9421f220d0e1ea02a9f5f76ee050e701bc72431faa3fb60b28612fbfd2a03720b096e6b43a96fc248354e07a7cbb723db1f98e1f3b0cecb6a9d979de70f1abb0b1c9483c5cf003b37e4af97f6d78178b96207bd1262fe2db60f936380f79b6c9f4488f93df68e47cc908df4e583a9bf69f73c7057feb76e37ffd4f37118e1b713f77891aa63c83cf3aed0b2427a2dc07ed676dd5c5e1d43b0400fdafa7752411da60323a647d4adfff1be67d9b760064e954e901c1550b326b57a63486000648e698dd60d4dc4002df85a05e9bdedc65a7a9f4ea00344f04be44177adc3761d9f315223a70c9f73b880239701c955f0d114ecfa96909a890cadc04bd232ee450ed225e50c4546552ea5654b8e6bbd47cdb1069c88e16202ea40d49cd937018cf8decc7526a224f9e23df6fb3771f3777c87693ebccd850fbcc2cc2c2075815e68fa0dba6fd2d84240bea560537e8d177a7e65b210c0cd6a865e5612d5bb7c3e2f241f41c00d3210d31ce81036150b58cb0bf659df83f5b7e7d5ea2fb1facb9aea2f9f3bb3088c512512b280bdc0dfb0ec5ed75d1f3062c4878bb44576ac03767a8ebb6b6077adf7a87331116505ddcd5df9e3f383576af99bb26e87dbbbe600c5bad5a3134c3ec3a393ac33bf0151eb4df49fa0687ddedf979c83f334bafbe077632a7debae254454750d5e561ad49058443c178b3c9579c4673a443bcfef221c7f620f269598cf6145a00a9f1cf44e7d57a4d7bc146c2ab2b928d459deef6b1cf8fff957e877bc003b2975e7f5c5bbfa4ed26b91a3cd1d5d53dc423b3bdbfbdf340cdebc2d5da959b9b5d5a0094ed9d0c21aab9943beb61025ad6d32b2a69a9ead7ab4d30cc692d5e2ea3dd1e523ec9eb2254d16e0fc9648a91b0ea0a5eb301432a3c054bc560e03b613ce8322d061d48d2d7881268fad35b01dac1693034e53f150ca4cf01cfc6aa241ad2230c7682e52f5619a9642af18081d15c911704fdcf93711d0f44e9e8962221a6e8594ab8e0d5308850bbcf89f8b7474453a79df76e34adc1c8bf2e2993e34419c3a91d821496c14d702c52aec9a8c2f86191f5d692c88c41b8726697d9050ac79ec08a911cfd5de5816bb7c346da04b8fab412f667cbe5fc32d8ec3867a05a3659e82e21046c231c8909e4e2431fac834a07d313024d268a12b3bcc4f5ae2afbaf95ee35e10a098174508941745af10c962e45b4bc9e1c7ae7976f18fa953fa761e1a40ba9d4d6148d8e7ba2d78d7317405c70fdd795f9bf43e9a6416b69939077bb87556b39a471656dc8fc727e21efe6efc1abc4e6337856a579696aec40d9cc0d61c0a58c1f6c0f1f4b0e4e5c071af40f9d9f18ff0787855e4d60b031683abb7ffddaa1a30ba828de92d42b4573de11809bdbac31d8848b8adee1220a086979e3f7d7fe9f9fed2f3ef7fe949677069f8cc52659e69d92d1e42676b3df2093d5b83a3a254599a9703321958cfc5a7723d4b733118f29c9c5debb4e17c2cf6f26b7925de822d137262c76f20003b86a63a3df75d2ae17936857008fadf3aa7c20bdfab108351a56c9d6d46a1a8d2f39a7b4b45f3a4fb2373ab2df4d2c2c3d2a95f1c8eda58b1533d71b1208a6f0501ad0223d8805358dda2e50f8fbe3f057f6710ff150cc2ddca2ef74a31db4f8d99bf282ee906cc66a29cca04c68176aaba47d08680bf589ab34b731fd730d4252205ad11e714c2522de6c83864c12e73790449e9d5256b43fc4fd39e7cec52c5c46c5ede60c66950d0932be80e1adb9976ff5c88e2c6556f7a21c661bff607695cb6ec50ba2cecc2bbcea00935f455d1ce868dc2a477b1c815d68d752738f52d32d80e300ad21c7ec7a9e8af9daa44a941543ad56bf4c8cb3d11ca69e86847b3fa996db01734908143cd0ab9e63bdbfaceb6be5bb07cb760f96ec1f2dd82e5bb05cb770b96ef162cdf2d58be5bb07cb760f96ec1f2dd82e5bb05cb770b96ef162cdf2d58be5bb07cb760f96ec1f2dd82e5bb05cb770b96ef162cdf2d58bebff47c7fe9f96ec1f2bfda82a5cffe3acee4f22c6fb930fc2d1b750163a0b72e2e26991cf24cf3c97f2ec4459a5c5c60a54ad004c7e7c393120198e8dd6dffe7972ffa3af714f2acdc628085986bb5471dcdb97e5cd7740c217a5ef391184a79855ccb6e5708084201cb4732819d955599d6dbbd13f3998de5224f28240832396403c8912854482165c992b410188a0ed88ceba92c84b063e837e0120c1b2ce5bb88fead5e3f286ae9e5b30f51e92ccd7881ace59a1729cf4b365c949860349313c5385b72dc9af4683a927942494f318cf04c943d871d3fb17529350c962ab5c0784b89b816999c43cc13915fa785ccf1b955b364cdd846a45498f372aa7aec48cce4b5b91a6512b5078078bdb15cf8b410180651d2572e8373c56702d3f2810e7c2ce1fe6a74df0811bbf42e5b1aab66ee5b217e01eb64f171774a128f3fcc8b342f3f58a0969cfdefedb12c66bc26b0fe5d291dff53e91c89f1ede589f844898e1c1b524a33f82dd6a2d90d588b3d6538c55e21e6191f8976ffffa8fea45bdddd817277a24e4d2f4f9f9efbefab8eb19924fb32573213b8129629f949f6a9464f4048791a66251c6759dcb826fd3e5b5f5f671f44369233507a3a8d1606c95b5f5ff72ac37600f86cc95171bacc31e7a31f8f49497c9032c178acc8a24a3ebaf2e095928d53cc470ce1ec556a42308d386e3708bf44c405b50b8ae81684d3dfad9d321b41d8edf627cce4e5022f2eabd44a9fda9615745944b37a2df0135cb4ab964ed501b52e1bc17659afd783a3e7d2f0359f3169826a194a33b4daaa8dad4a7467b26ab45ef3341309060d057c9ae84203d6ea343c4160d4eb492e0be11aba30991a02c43b1a4dc5e8aa5733884776821eec60976fde6f9b6fb29fd926edf34d2d2e781b7d93e40df813b7baf9196c766fbb6fd6481cfab30bff7aebc2c5fa1c8b8404bbca5d768a88ae4be5eac57fbdad3de36959bf49f61ef3c5a548b35f6c36b5e04b54c92469331ffc846e5166a077cd89813ea45932e245f2efc80cf44aceeedd7c3d91b3df22b9908f8a6a66215bfa1f4f2bd4b04aae3f2361573aab519c36e8f672b13c1c7e344f088e09d409eed564376e28f4ca73df4c37f66e123437cf696ae49409b8674d6b3d552a9888d203fb8a9e8a64c15edc55c3bb190dfc79bb39e821e8e65a3a87bf959749c8fc573bc03622b48bc99774dbce73bf59b802e63f6c64ee07de9dc86be87e34e6f941301e7f31eb6e09016b34a810bfa7b1fa6dd358fd2f4e9aa4d7c13f5c5a949346242def60f36bd8bf295fa23dab5a9857d66f67cbf00fd3c21d782d93a62368e5cacd9f7e4bea0c13a756da6177f8973742d31d06c46c7977d193a9f0e27f7a6174335162a84a7cad1e8a204139aa78642e5c0bbcf2412a1108490c565cecc226f3b9409d1f670a5e9d582246192f38bc826fbfdbebb1b752951adc4c5f83d136b76c297ba735418efd6c42357984b81b51172ed55abae71944757ee2df91edbcd27c1dee43fef4601ef086b11459e654112f6d5c558c491c8453b6b8b3b97e7866f20edb50e0a8cc04605e78e7d2c418efeabf410f50167c74a54c6eecb335982ba62fa6e4c54259e59e0b998d4a813dc01ca407d26b584a78e26433c1738336311e8b11c679067b0384d863af6561b32b2df59d2747378f24a1a0df14c3d50e1e5c3dd212e3e3823e528f510d2cd26c26fd278cf485271121b550be710bb03e29e462de77f55acf2d38d8f62c59149c942e3f6c6c544a71918ef58029d2fc93200dcc805dca391fa5e50dfbfd6703eb76a698e04aaca7f9ba5c94e429c318d51cb00dfc721bf5e6c01e23865c8fc2a63dfeec8161b75dbf5c2403e6973f33e5b7f1bc5ef344cfa7fd19723aa72005b0db0edbfa99b509a2177d9ca5f9d667ac746bb2bd6eb9d9fe6c75e89f4d3e0b0f8efeef2f497a8dabbef5f9b3f79de9aba18fe36e5c18a3e4143a38f7aadd7afdebfff65a33c6d9584fd0cde0913f987e925ebb369d5b33618f4cb0989e242e2f2f2dfab661438ae4ae6d9bb74a7691c80bc6f39b72aaf7caf086a525a4cb2b2546148790be2eab16aaf0a71cb6316cfd44423a31bd816b988ae5884c49a77fc080c155d6d0568bd15433a2e18dde8360c8834426295baf501dbb07315eba329bd953a18a42802dd18f6cc653c7e002e68f4ac4341f2066d7d9a53ba12ea36f22093ed1c9127d3295700c1126fc946bd729c79531f9d87aec839ed2a5be635e862c8e0dc524cd95c5d5d9da2e714848eedf63af16858d8b0d9fba11005055aa693a2e91fdc0aa62d299ca7a21659732c085e5bb960bd11b951f321f9546b9091dede10d47c5643e12ee9c83c731518a1edb17fa77c9af285f3ce84dc1ab0fd9722d67b549bc5cb6779f7d20a20151c754b30ddbddb2c620d10d4201af9d5bda4d8ee90539629e3829dc718ebf043bb5ca93bce42a69eeb1a69f36366e593f68395c94a5c66fbe93a5a32b6a1acfe6f66728d5a8868f7fe963330729601efe8c022e013407c735f60ab9f9d3d115f18d5a0a0a9717c90317c3bca4a992430ec10215e83f6d6ccc143ea3a2518c1cb34b42c165870dc5581690e0619ce610fe5c2dd37234c583d7a3a25e386cd83aa96297b0f6974ecf8e6c6ccae773912bf31a0ba598b2515e0bb21bf1f631f5457bd875f5bbdfb193748651d5695bc34fddb31c9784beb2484757a95060da5a6238760a6edf65b35469dac6478b027c1821c36c06af4289c8f88d429a35e1cda7bc00916d9ee62c91cbbc07c1f5b5a068259554210ff4f357689185c2c07b1bb36b9fab29bd8312888e4428780d06b41b26bb341461599687a41e3b9972bd574d2d1cb6972ec20957080dc8a6d438e179d235294420f7a2399b0c2560ca00f34e8e6f67c7c73e1735cc076446002db45c47a923a3919b93a1615d7f664f9e1cc8523c793200091085f4c29b8c5a7574ce60ed20f120da290f1725c1053e86c650a311e4a82bf1ac6c2936cf783996c56c9d4f72a9ca74d4654b4a7f22aae94a829bc6cfa0ed1c09c50a31cee4529db7a7653957837e7f9296d3c5b03792b33ec8951f55bf41be1c6672d8ff6963e38f3f6cfc20feb8f967fec71f87e20f7fe09bcf463f88cdcd8d9fc48f7f7ef6873f6d3efb69f3c7615f15a37e30a6de47f5bbfdcd8d3fadef6f3efba943c34a73268b0413b340aa1630ca46eefe29c02714cc0b91a4a3920f3311c8de36d6bfc62781a6e39e5d529d75e005e461127c5bc7b40b97b07dc0b641242c9dcd4492f25264377075e3637d6c2268baaf75ad40a24a4d5075373e627878bf1b0a780631e71f2c49424b42a0db903ae7b4c4b40e6a217ecd4ae16b66ffd94f7ffe1dfca9b7bfc8cbf51f3637fff88767cffef8cca01f32cf0203cdc7b2d36327788ca62aa441d81da3a99460036a2c4303ea36ecfbe79812639b695fd14d7fd5a443fda699501f9404f5df95ffd4c09c732d4951fa5753b11725faa22ca6e6711b327bc2f53d4e20cb81afc1d51293fbc29988e967022b4a4a94b315f4fff8317be4fdeeb9649fec859f958d0deab2b781e33f8605d072c6c2ccf2c2cbde8905cc1a1b3a3d1c024cfdf726f0a58566a182d9efc35718990ab51d7aeaa1262d6c05b0550d85aad6a8a11b3d29570e217fa25e6bfc6c3e6ad4ad9c89af2fbbf720c3d9c7eae086a4b50a9a0f4268befda069998b4fe50ecfb2a1be9e7991171e9cb5f6df9ab0164c5cfb7d0616fba8f8c905d8fd7ae97b0c8ac2c49fde88bf2a89eb4521c69894f438c87e890f2e9fcabddc645a4dc3449d54f8f8b16bdc53b4da5b1e8d54ed0f3c2a31eb8bd46189a3c12bcdc5d300463311e571cee76a2acb97205fa3f74b5b8f0726e79cb2187a60894f65b0b36d29ee0d6a06b60e2e23a60f8591cae6338d9cdd9ae49940ba5e3d9b7e346218544caf110844f76735c48f1fb3f8b345a26dccc2b998c6419d5bef97bf3feb46b0e58fe0cb17167fbe7b047844360fc0feedfe32e4e04332a5b7c6c6fd5b6464463d0cf6d0d6f7df2eabb0de3045664daf485c4ddd36909edb47ab4e94957467809825f1c88df69bf728d84475bf9ee456d2dbf3ba87beea51f02be86c1591d5f61a718ceabac30dbaeb015cbde2bf3efff688e723911d780752bbb6ab89284ff05a18736af339ccd84b77c8205b6f8f3e7aa28dbe067651b8eab240f0813bf31625e2db72a29583e188d274e6f9619041982bd9622d7419f2adc1a813aa6592e05219f56c0bbdd4b9ac329e506a8bcf82a0c301ce3ae867403808c10f6cbafcea914aebe2538dbf30013599d7a980a07c932dfb7c55e309c9dc5bd756b363b747fa8faa6ee1fdbebf374051c0b325bf51fac26eb798b44f859ef55a338dfafc2697f02a614d615c8eb8344f5e1dbe3d9089005ed389f88fbf65bded1e6c6ca460518c65310379137278772d5e3a2b24cba0eda7b40cd27fc7d26fc41043c9571375cc4c71cc208e0416768122b52ac05871c70e63558a6e7fe681edea0a8c542e789bc409829cd7768bb939fbbbcc5da990f89018ea2f73ecc5ca62ffd635b0c37c5ee157f6c80a181b0870b98cb382327595ced1ab05f4be782620cc7e5fafe6125f3c82c7e26291e7f671202de145d4e658bd982d54790101a8d073ced0e9230b43df274574ebc115e76371bc62d583f1814758addd2d5d52365dde7a54f7c694ebfeb489f1ab875a008388c42ea981b062f4c1d849646b1e7addc0d37c52ed572fcfebbdff79bb6b38ac59ff17ce5bd182935e66c9dd3c216886607a7478adc665d3da34aeceaaf559b94235f88d96eb368e5155bfddf168acec76cbc32a5bfc87da2d4e27acb7c3dd217bff8d1764a78df71d5dc7bccda2eb3f787b84b7bad52bfa83c33d28b2bf6e73c4e7c27d3684bbc2dcb11fc2a19aede09f8354ed2e3a07516d3552ee41e60196ef41e57760fa21945d95230261b946caf065a4aae6a646d0a954a24edb6e90776880ea4e601fadfe9003741b494674c14b4043f60342a10b13bc37e52d7828c9c54828c58b1bb4522aed03fd52a445c20a3ef29c7e14bc03596846bab05da9d8102acd592994715934e21e3c47a845215c9e730d0ead7c68092077f45ce4686950d3d1589fc24b617a236171e4d06904a060312d52824db60a7b753414410d56a3a9c30aa7fcb18e53529a6a6bd4ee8d326fe8b12dae7d677052ee029cd0d2df80f6c577bbc37e5c418d3e62a9b78aecda3c5622fe3affbdc6613970d6b13f825ab72c11eff27b5cc9d6ba6ccaf324f384a95ada3195429da27f0a56b4193c4976f3643f55a5c8230d75632d33b678c69d3a478c9a8b6fd08bb207699575d9f937dd44dc79b312cac6aa7b031a69f84b11986ddc5f5314a96456286b433e1aedbadfcf49cfecf0dff5a8dce4a2dff26bf7cce7b8a6d159afb6edf62075d9e9d99a8176b6768eb20d464cc0270dd0a803ad9640ac4e14a52018ae63546fd717f90f238d9582ab6563ad40a7512d162bbb10ab20879aa09a9e837dd1584dde314d7707b8ab0ab82e37d65835152b57dd51037af0c409f258b464b7b5c55a63ebac5b216d53917642d7eba0e2f1068121c046d0a844ac3e6487c0f4649eddb40dd04ecc74a356a34ce682622463a36affb761f008c7749f9fe5b7ed7818e1a3b1f73e441778e3460468a83c455957a21e6ebfb35cf7ee43f19eb85683b2cc292a69a33f640477ee793835fa0083971739019fad99907268efced813b6cd2e4daf97c696d3f39e4e73550a9ee05b343a985288971e010059ce85925670448bc485b4683025a4d7c827aced4cc5bace94bfebecf3bbd69ba0ebbb2474c03a6634f5c74b204b09561e37f629dd467b40e6169a6cd34ca8ad3522d43f7c4b3d6b96f7eca70d30d665603df7993681b51666c6c6eeed8d73c8045b95033e135b9f2fc1a857ffdffaef3f63dbdb4bb2f3c3b69d5bd37d64cbcbac811e03930b77520464988bc33144af3a751ff50af552456e6649d7ab6f16d4959e77fcaab8951cc91c4fc96fdd62f0392b8b743211055a45a16a8a2cdfc9b6d61b731a8c76286556e922722c886c8c19c476042a08ac787826f389bb1b3c81b668eed060a905317a7d23b9b3b58cffeb06a19fad45668ed258b569d8e3b45025bb04fbcd62216e2f9dad9028d9a57ff25df6d8f6d8b83e603b44916f1b57635059f21bea8c664b56503227cf07919cad75d902e3b7e8ee79a62411fb0dbb0c0ed6cb9eb704fee8be7631f430dd7ae085083c38385a69a2352899d8213518de71ac31158e928c005b099b17628c76635423c291ed699ce6a9d25d11c3f0271a00bf73a607b298a13d4d486cb9f4d997a6bab1ee182fb1cbdc19175e7a0ce3e7c022508f4299794744e7910151021209ce1ac809a51fb4430523f0aeb1a8269011ed94be8531e38a292973136b391a65303602f7333b90a5187817f15c3a2e7ab6466f416bd64fc68e10bc75789260bcb3046fec3c6397649de746e6af937963ba638176738849240b4671732a1b49f950c5bde8bb066868231bc2bc0f219dac3486efea3599a559962a31927962e9c2b05cb3a52f43d13388231e2c97891465b63e672acd2799b06f8e5a9ce7015d2896a55762602d6cd1dcfcb24b1065c1d23c49afd364013b022a371f9416c867738a11ee7fd8d8e8da4f80ba9fdc97dbdbf850a3df7f0577c8cff848cabeb0cf08eec580e1a72ec0b23f2d2058211a8b2f4ed1ad715e313098970f129e9c57b9b935a8e3299f0be362acc17aaea78feaafdfd8a97fe05a91f7de715672b1fc8fc55a21a97a5e4681994e61ba75f1166e2b3b643b493497c59c241eb7129aaba130d1633b9128e9eaa1c9bd06f4eaf02dbeb86a7ec8d96522737169f54410eccd58888121ec38cd059b143cd57c3cec9820428c9e1e59800f9e804d3f3e0b40486db00406e118c2a88c8dae2a1d07a9531a364a480b5b9f49cda2476d1d50500aecf7290c8b6023a5fcf3274f400e28d1a6bab8a223439f8228a8bbba169aee06085137b43a9e5600b585e3e8a20e8c6e7275bb14597630139f25ea7d575970abd31b639039f4ebc0e879e60240e7c902926a919d768f6de74c7c2a0b8e81c1055a69c37852b56dde978037aa05d976432ca9241d8193c2d8134ad1d528554c8ef4bd04bc64f1c825434912fdaaccc8062bd3981cb037e52ca34b689779e318307d2074d8facf60bbe0e14b56c5adfb208a5bc9f1ff453c55f103655f89222d17ffbf82a1664a12c9d76d3a94966b31f5a051370c3192931ebc90bffdf0be96d4e806f6db0db0bac2fa5438403736e1bdf648ba8e8c32c10b7d2b424a4ce408ce716e54b8b72e168a6d9c4b69144c817a89ee7c46b9fcd95cddd11cb07a8b74dfa34b972b3052befb42522298963ae9dafeb43c530fb21b7389f8a34697ff0d60451f2a0d09cdfa5345c3e687bad8088b6c348b67d17717af62b3a6049afc5005852d7e74e18b5c7897f646b72126526f2eb39b719a651dcf17a61344a872600cc4af086965955824f4ba9054a1305c094b75316f8e4b550d0b551396eadf1c9dc9b7053153ba5794452d83dbb95a05b3a790ab2935379a9a22a5fb46db05da28cdedddee69ac7396df76022d1f1b9857aaa6850c7e5308952a19fc66b8c1c8f9bf1e37d47e256ebc3af808bca296c6e0b7198daef44ae6ab3a7315b7ef1ad7bd67a8ebdcabdb4f697967af1a1b7544542590e8cb3709abf7ad79ccb7097df7d571ebe051ec2d9fcfd1ceb41abaceaff01f8f5ef73d9ad86f1b4d4c7c2a459e587f06f3db4d9f2b954e72f6e58b67d682c0aab17b535406d547ff4e039590c376a00e4acf3d53bd384e202dc2af0a156848a5265ae06a34060623556f9618bd95a76183515265a153af9d705d9e98ffbdf1ddbc9c1f4a89a23c99a66a0f2fabe9bf44d256221bfb7b5464e33a270c1734f7488c4521f291c0e8b9676b60473ee50aadfa84cd229e2a91b0751c52bb13d4c0e7624a9c10ed0a3d025f26bb36a937088df43b20fe0aab8bf25574e25c1d3561344faffc544a9637d7dd88ecbbcb80b592f4ba05a7273c91bde61048dd5343fb9fd17221ee1b3e1a44c40f0afeb30d9805842f4c3ce71388618429457ddda68b8746e0dad11310844cf84be0d7fff365079e8e200f548feda757a24e117b163d3fa96eed385318184658e1a3699a63f01718b489ad6ecc358da6b412ccce75e2a2468557ed1d99abd444c037c150862293cb1edb56942c1efde667f25a2490d9224950cfa3db9cc844eea7909f5558dd100561f22334f14529671c62c567376c78537957a38987c33b90265a761d8e5ca03c8c360ab6a7ced0dcc4cc7b44c07629b2c9c5542e2f689d30813ec506048d0446bd43b59479ce59b17c3db4e7403f10f3a03d4b3fc16a4060163722c5f8a8904ab1241d031f28610c041273f55b9586bf8fe29806df321404407c503c08b4b0f93705857050d18c13d50fc6ceafe77fec0dd33c6937b0eaa6cfe0564649b1a8c0997551841f8eb9838d32b9cb1231177942160ec6cbef8ef802fe4807c12f6b9d088fd8476066892a1d3a9b7f5d7801749dfa77c618f0e518ebb135608f3c0f687a860d0d90573a433fd805db741466d482226373e1957c7ba75cd78997deb7124a0157e7abe229e4e2131eada0ee1a87cfb485b88e2e461059a1c62236de57ba5a2d7906046a6a7a9f9ed79389b3b8f29bbf40359d3f468d0dda82fee78e3f517f60fa225d0b04acbf9b20c4988960d66f4658c915041be1d0ae9dffdd985e56fcafc8de2f5aaeda9985b3f24cd17d5b50738f806f3dba6bd474d271ee4d71a3d06ba7132de62aa79ec0afd8df0f8d2eaeeee852415890c016966cbbcdedeef36d970ca3aa46b0b1196f21f2538b0aff0e548d11e213abb5f67677a61a57a51a5ab89fe5fc3d8cda9d316464d56e0314bbbabea45c67044f455e8bf9afb381b741d4d6ba8c4ce2093698c5578c9871e1f0ded1f6bc04ecbac1edc287d3094db16bc22a05253576ec81aba2a3460f9f8db9cfcdb01a2c3862cb6ab8951ad3ea1d1738dac833c1ae6cb4b1c680560f31b4c6d3e3fe76d2757a64bce539ed76fc9863e587afb799ae13de296035e3ec12c27d5eea4b81191cd867815319841d84fd41b06c24ece10d998f806f36bbb4a4491160a93e990e2e942073eceb677f780ad2f91284bb4cdfd34ac9385cda395b16c482cdb0c8da97c019111fd2aaa7b9d7edd6674d52b79774234821f4f878919957700b3849afcd5c647105b786022c5630caa36f3be75d966b9690e737553321739b6db2ac545d1718d35ccee0c6a651221725d93c1a43da4cf06bd16bbaada1ed649a4312726bede85da4692340f87406b15f29c75d29999a4364bf722a662641bd8968098e8c065f351698dc50035cb035fe2efff29a27422f175e62032c5aa65ef7d223135183453fd913dc650169022c1f9567fa689dffdd2d8f60180b42d37bcfbbcd92d9a18d240068d457f4224df01a4bc353184a002d0c73ff4a6ab9eb49bdd9a5793aae9972ad05e643a61c8552f82f9971f33bd2d74f387061ff6f996fd3f355ed748dc56b4e5949d1df03ce9bf45a50c819e3e90116eb5c91914468266ed9db44e4a200754e2273a1f9316644bff41d8e2ed9542ec5b533b118710cf74991759dfa0a3b053d14366553ae18cf3493b841d5a75142695605f9112015763acc6c54d191ccd562268a508d44674022edec295e7a3855e0754e8b43c68970b678f20999f469289a4531c8d0ce48b8a7a0ab82c91c4cf989d16ac80e8367b5662e00618087946fe8e27f88999a5599d65081163f3d0396f8608f74b3fecf6f6054017ddc69595193478cfe3a3d5ba34a676be7cfbf272dfe9eb4f8bf3069f1fb32cd94cb57fcd761b6109061efa3ea8f6421e095de64cad195d3f2c6dd0ac7e0ef25468bd208399fff9aa5f915dbdb4f55b9578a9982ddf83b500ceffe73c1b35b3aa624446700b000459769d8260e71b9944e9dfc84fd956e1c940d81e4515b093894268b6b9e819fd068248b84d2515ebadef5682ac18bdd7c702e62cfd66f874dbbd0db36fef3d205797c6fad1adc44d2f1804ab73b8cdee45d29e4680437231304c3c6910ebb0421dce437ec11c4c323fae36587ed2259c1238086b7c8b2be6be01de71099ae10946a58b1b3b51cb1a7efc11073fccc46a0b400fc063c678b7c24f3b29060a28f492a30ae4734799c9ec8d5a2403740049b4b8cc48f91daaf2178369c776922f486f65610d21dd5f477460f95119682649feccb175c28636b603ebc64f1ad99c8cad4dec26abe6a5a7706bba4e725af0e7beff8714eaacba7c5048b187dde14bc9485a53a084f820b5f199303d40e280f0718844aa8ef1a9006f9f5723e13d015ae5566c6825c875e5589659b46bd2a924ec34ece1dd2e2128344ccd7ffe8fbd9f7fdecfbaf38fbe03c634740d3b039d35c95b0c0e04773b6b6032a31b607ac919192099ac6e7c5449458f9402c75f528393cedcc8b0b7baa06b55f163c4f06ec6ccd16afa3366e3d17cb75e4cc67ce04cbe6abd322f764c18b84fa810b4b702e1a9f243c15daa237e9f96ef998f4056f4d7a20971de41595a9cf8dcb66fd7199aa70f6ba37cf96043a6f60b8debb12867312f56337a93c303f08b9b2ee05dd5ed21275e99c816d9a4b343c19670bb950ec4adc6841c23d365e55edc960f4cf1dd3bf72c662a0217ca64f11fdf174e39c54862b57f66c6dc5a40335aaeeb9b7121670d9958412d288a16e109234bd187f542f3603dd9aa1733cc5e158863487b95c9773f248a5443422a0184803630fdc4b603e0df4039eaf266a83422e74a969e2d276887870a1279a496e22c8441508ce0d28dc78ee7b200144e4eab77e81b5065ed3e77874b59cc96a0ba8a372dfb38383c7fb718e0194b68b49382897c5bce0f3f025a5e2df199bea75aacea29e71a36ede60d3076e9ee979d5a0afee69609c7b1671dbc5041d4f9de6fff6791d3ef460c04ad5b35c6df5fa3db25d6d393b5725ca12ec7bc36afa9ed1c732aff2709166c9fba3fd4af5a9c8e6a2507d53c16b33e785126f0407ad7c533bbf92d73655ef8ff68ff94c1c16e924cd1b9b47f53c08f4940289f7fdd63443afd89f662939db32e1a297699ec8259ad1dbddd5628f1f53490faa873fd166043f80d94903ba4ac9a9df660afe342db6133e2f45d11ec97c9c4624ac09f45d2167a9f2de3c9354cd3577fe9f697124feb910aa6c1742c9ec5a745921347f0d68bdc03aaf78c93135ca389df4125ef2e7953a6e25a9da143f044f620b239bcb62a681b6bd0e7cb3527a580b419fb6e0ed292fd7f5a9da3a071b9a7dca86352ce45209205b2b9b07218e0816eddcff79bbffa62ce706071d6f3e99e4e884cbb6584be6a00e8437447c1b6a79553fbd92909dd0985e40a45859b0bd5df6a7fe9fd9cee1d131382acac2452f3cccb31bf351b17787c727a05efc65f7042c2d3134a249ed5878474321d45c6a818b10dbb3205f1d1eb44e58224926d6f218065364c3fe289a2a8666195d09b00c28d9ffe014a8b47716e68369701ad1e05b5ee0f43b7742d80b44256eb7f4d9bf538844e465ca33d5d2470fad5207aa44bb97a8bcb728b24ef092ea2f6c6d875e40cd6875f5cf962d74eb198455b47df4643e2fe404c4e28ad5c53b2a0157bddab62ecc7dd4d404cdebb820052069bd393979c7865ca523c617e554236ac4c3686f60438178d155220bf1851285be4bba5da92bf5ece72f5f58cb4d1fb9b2524b5924510bfb396c116ed0def6a29cca22fd97c974db7a09636fb1a7c03adbb6dfa7ac35d05f0dd88a358745da5cd8759f89722a935e29dfcfe7a2d8e14ab43b5d7bf478d4d13543072f6215fd3c16055ae3159d2eac331ae31d132331e464162bcdd9dbe378586e2509b40951072c093cee611fe25b02255009409c5a423cafd2c3bee4493b8a16f9c80c8c0e0d3d0c008f114ff5defb11760d117160d712c41526e23af1262bf44127e83d364fd852b02485d0af1351326e794fd77b5c1a0a03aedfa771c34d57e600cd88875ea50ff0789a9b1b3ba435b6e89ef292de73f4a51ed25b957224b32e9b49551afeae3c70300a63888e1ebe5cb10d3f111da6ede34c2de0e566bcc84c876779181cd3a0d40b1db9817cca211b71a0c59cc78f59cd67eb72d28229b43a08a673e752bc2b8455ee1878fe00f1fcc2efee9c6d69f93acb8ec2029f8db217819465a752dbb0ddf13cc5aafd920cf08808de7c860bee972faceef3169e159fca167b51c1d789f854b241e5736ddfbe5d2b635afe1804e3f2cc8cfa7d7dfa2af0c179b6b9f9831f206f73e3475697cb8f7f4aa5a2ffa7c47d9b1bcf3a0ea889475d4324d0c70b001d977763007acaab80b40e242311a75581a61bfb5694b86883982e7c1b2d589201fddbf54910000fdc5e205ab4c847013f160dbbb63364993b998054d0fe9eaa9cc95e905568f4063805cbe49265e25a642c17e5521657c88394237b776e0a92d2633347f0690913871c099e11244cc59a2689a064900b65fc00889978ed4c2764810d31b2c66921309018f090609c6ea21a316defbad06e1d5045bc3d98d3a70ba8e85a09e7eb5148674e1dc6ee2369ac9a82692fc7707887879c3ebd679899572410f4d1ccb0b5bb737870b0fdf2f0e864f755eb9bcc753b49d827558c89e0adcc6b8c0260a5c01e201ddb6c19a0da5525cf135e24f66a20f2ebb490b98b8d09c73e692dc1ae400bc49088a305093919674b31647a3145d165789e8fcaf59c97e9b5e8854298b9da1c53b72fb1d7ddfcbadd89a4b2919457a968bef45279ab538f81f05cd0457f87bccc5b56128c246bd4a7ac90a51f3f364baca1ed40f710c4e285192b881aedda4afad4b0427f9430c70e2e3a02836b9d07153f69a85a2ab2adab71a7092fc4058d3546e56cd7636829511ef93d86170d3b2e5cc0b12c76f968da0ec7d80d02b707d0dad73c43b7c8d8af922e47c11dba7a43ba1237bd52eecba51169b1d288aeba1a482b72b8043e3793d782f91762dda73e1a834748bf59fda53a76d4ac2425c25b6b3915c5325502b25423da2b58772decd115230bfc7eaf79d6a9f50ded3c8fd63726e4525a5e918ec1b8464fb1e62e1435ac5e172b7b24f0deb00308e4997bf7eeb7f2edd08b9b9a6d10c94c759294272d8ec0c5ab1d6ea87e9fed7e9a8b512912f6eaf0edae11afd11334d7c79e919f81c7a1573bd83145da817d3892377b01ec978b92047f8ae4ab1673781b1209dc725a1f95cc5ba8bb46cb26aa07c267e219da328c673696c5cc489f2dbbb57ae1f6a9932841c300bdc53ec8e0f22a56791c7b27a7bdc4372ca309b78d2390f92bb9044dc13b7bf96f8ebf8d6b5a0de466fab4c7650ddc80fe0f64899e6066e54869c41673dd0623cca9d5037f3f5f316cff1683306b268205f79c4fd85dad8b06d5c55c0f27f24ae4a100472b84e519b72e90569ef59bf6e6a8dfec955391b7bd240e3b5047246dac5c61cd8faaec9f55ef664106056f6d87b2f0554a4e84c2ceee10761ac49dd0cbc3212c3e3e2c6baf2e165dd17c190a351b1888b67a3c3a369d27812ad677ae6e7a4610f9941bcff25094f14b408b6d5ebae8c589e7281bbb477a7a3b16099b09a5f844389912e5f2110461348883cc68c4179c9dc15f41bfc33e63ec935b030a141d0885bef482eaf8ac784b1d426da2b45aa8a77a28e71e50fd9bb5c77e2afc500eeed4f7774ab339f735318d5571b2a6ae3775636da5d86740ea2dce00309de010dd0bddaae704ff0250598500ffde3d106910c881e820174b16004162223d8d4f1a6d6872771f8d54d83c97542107685f7bc2270de1d123fcaad91ffcd1bbb8d8d93ed8d9ddbfb868eacb10f036bb44c097642b84afd9a8bd4a95396f21dcb42e9d0b0a318c6727f0248f6021ea4e0d956d85c4eb936d3f881341b33498266f1cf082a3f65ba6b509d3804dbcb015a53c2e2967a28bc74bdf221b891636d657c276d0cb0bd61ac04d31f83a60ad960bd050e9d8a1dd095f9525c5564d16b97ff86e95f4dd2ae93f68916b12a438a35c0a3bf5dcab942ab2a6c7386a5dc8c4b6975fcb2be1daf5e8757d369339bec58740dec8f24adc78f5fb53f812d61ac9d950be45f39b2e9b88f26fe266477feba22c6e7e56e1bcd3c545086d9a2602fb55af529ec90924497825327ed365a90a8a8ea77289a43295cba0a4da17154067fae8387e73f8e1e2d5def6fee12f177fdbfd07db62676b2fa0942c4a742584793c92145ac0f3e3f58a885f795f4ecfd6f60f77b6f7cfd6ce017026473c03e071b55ff60f5fba7a934c0ea9e26dc7ef827df912740911b0bc3063347910971586ce30ac9e85a13368b0f643d0b2adbcf9783ebc713638f471a58128428f2de02324e52d767a1e36417de0dfc48dbe848479e22aea2a4d315b3e39b5459c53390505f55e3e5f58f7e19ef72d6c0022b8df0214508e74db01b1b623fae874b172a722d6d7d3643b0e58b582ae03b1be4e1752216f745936888e6217e1d7a8fbc0f289d204a9e77e8ddb4ea7f912123d1fd95cd0f79a7cdcfc2cccebd94b812d1df099484c60ddbd31acc29118c9490e414c46c851ced6644ef473b6d665ce25bf81d0decf1bc9ecdf3bfe9090ed44decf2bd3b03d045b3388f91505eca8842f09a883ecbece3cefec46c819a68caf815cb7b3ef06a844494501d46aca855a3663924e065d327b005abd699408cfeb288ca765d63c381a4dc80a1c27e8a50d270156eb478be85492566a04cf176a1ae69205621d84c75f1075027949d76f0305033ff884b71bab59103bf51c97febad7e2dc876e8365a33d68d2281c80c340785c842c79154776492dc050b1cb2eb8696126a18bfec22eb8355dbca8c623c4ba9afdf3d38bf43c78cac587b5bd492e0b7d5045ccff91cf0a7b3ccbe4722fc7d22f5f023ed9231fd9f8a5e151d0417c9e100483b4fad323e8665e807e8d7c81220e2ea2e27623bbaec055a59cbf2be49c4f78cdd180c9721967e38c4fd8c785c2c4308b3c2d8d4d570fee1a3341a989c0209782fc255a661f0b5e2e0a01af56bd70d0a9f27a3e2ee57c1e472d3235a35136cfcf89b2c1344f7dba3cf798aa1f00f21ebb421909ab895f119325b683321b7be10b763d14ebd820f80822213eb53801ea7e3b35d85575c71968433231635b4cf428b0a5c95b0cae56e55428744c5695e535e9956dfe6558ee299fcf4d68987e9f250bb8b0e7900dcb69197cb5210ec0d953ebdfbd512615281e9bc29104b9757dd62f92b4846be25600a97db6966a4c7459293e95bc10bccb4ee9e9ca34d9d2f4756e02e1daf15980f71a0bcc5ae6ad9265a244340ee5277dc951cb94ae3ba015e4492a350a4bcd83699732bc76d8501ea1cedc8ca457f28926d79ad7389aa5e724401c567fa5671b07c6053fb3c79cab07d0ccf8cfd6e069362a8539047dd5e2247cd970c829044fd6c9804164c943b1a09b1fe6d9cd3d89c34839717c33fa1eec220839e33b69db7badb92ddd7e57f47c57f4fcf7297a9e40901a95a5c38b674699013f7d7d0954c2903fcdbaa03787277fdbfdc7f1c587eda3838b57bb3b8747db2787471707bbbbaf8e2f8e76b7774e2e76f777dfee1e9c741beb1e5ebcdd3d7973f8aa417944765441b71351be4ad53ce33728283aefd8afd146c151da8db77045db8305be3e27d6789cc021d9fe50e8632e89438992b6c0faf3c6d5bcc319833c115427e18d64ae64267a4b5ee4edbbd05a17e758cbc36718dec457e578ba9bf605b8b0b93b1a524befc2c6900be64a31a9a99113c46b110395db55868cade1511c8e797d5d824f0db1b2bd30a7010faf7616dc70bd089495e098b19532f5bfb2795dfef97bb473f15b6b33dc831807cabd4801072f52a16aad2a093e0fc0a01cf930382866567520f7436e5de0d1fbe3d6b67e186a4db35acc6aa18297251f4d1989d55a78404922232b00e51ba3995c46555b81b3b52b7193909aa809c1a142d20de40eb08bf9fd80be9fffdaa56988ccfa30ca37001e4efbd4f20eeab758c29045bf05fe1b213f7c099ab719aabdda51c5eab68eeadd734daba132db91445fabfb72573a0a8e192f18c20d97c8a70ddbb466f5f536cb96fc4619ae7e294c242b2d5272b8296699288cc095e69345aa20348789bf421eba1024def9f9566e0f04b88e7ee08c05e1a597aabff32c4d4c94496a14aa4bee75a056659a4e351aea1d63f28e7da0848603deacd1d42a38abb503254613593925699b6091b6316e5b47bbab1a872aa146aaa6f8ce3f7bd91cdcec4a3edccb13f1896db1007ecf150491555eb00d3668a8fa3c060e2a3f93693e0e0d8bff894f487ec4232e9e81aaaf77853f57557f3ff72abf9f07f8c0eeed5382bf3bedc7c8de91597d7f0d0e033ed6163db4d686c24ed471a0bfaacc2e505bb180cb44e30e5f36e8d3af1ab36ef66b46ac117ce77869cbe136f783e6994dde8d076ca86560ff8a56d9aed0c0fd5957e5fd7c60fe0846586f07ec7b06d4700937af50cbe0317d94e1ab378aaea6c1c45d85e0a937bc859cadb1a7d185a9e666f2949dad75f4b977c19fbb4815f0e376adbb06dee25c895f4479c227a179dc852b689977878928df795968fcda7e91ad9f2ab40d83ac1f417dbfc418dfb14bfcf63b63d773c90aa11659e974c7aa674dc480aca13e0ebd754a564e08e49c0ca2d87b63ff3b5ca459b99ee60c3d346b806a907a7fbca3ac0186a9bb3394e6853d996a716622bf6330c606f724cca429b4d4946622316991e4d86ec9ca384e429b27e8cf1a4245bda0ce160786fa5acda5e63670b50f3bcc9cc4b6fcf9446995a25ed27c4c2a085aab4be6e513f2fb40903ba52c82399829a114823002db4b3d0db078be04ab374af932cf786accd8bac68eadeb99b6194b42749dc28020352364fa7f3929be38bb3c3db5447b7e7e0901824148f1acdf54c9cb74847f6394dec331bba0b2341f09b6d1fb13aab5d85f47bc141359dcb07d0e113c9dc9dc935b34e3035339fccbac5a6c20399432133cbfb521575c249e15488117f64bd07e5e1244b2f4b473b1bcffb59424523eb10f829483943d010e870d2e7aa97aa77b4154b6f5ddf2b594a46cecf7d9d6cf3609407d8bd3675db6d9653f9c3fa0cd67d6fad41ab08d2e6bdde87f89ff9ac69402a4be6d98180bc4d8dac6a1816208c3b7c624ad8e6356a6f4cb178f739a8f8fb61c4bba33520f26a44016e2734f02e6850da25a0d718f9c52dbc1ddc1ec5e7529d20058175c77ccae68c11bb649f5613ffb16b164b28f7063f37cf86a425e995a8f1fd76c785dd2d10062f660ec3e2b9695c1d23c5febae556a78a74a960efb8743258a6b7824f8a85a9d9efb8d5a7ba327a068109efe742e7388d88aaac156af6f3e68406404564889e1f33d3f0648701645953016a952eaab984940e6cc605686a4081b639ddae6349595cdb14e6d7344e5eae658c735f7cbeca5a7e55991b43aed8e9f6c8d8ef02d8bdeb66edd716a56e3748315f5224505cea9ed663694995bd077014467e44d90cccf6368a62945cab287bfbcdd45c830b5ea7d667445acd193b6ff40d749b3ac54b26f83a19556d4a0dd722d5a4edcac40037ab7b3330fd4016c0bb9f5d7bf7a406bf4c516d2ed59fe40d3f576c24bde65725e2a9f53e26ffdff2ee3a687632c88306c6a93127ca665f039a69873293b31b4b28b6aa46bf4cc470d900ecd167b11940d2cdfb59066fa1a84756673c3a67052e30ad3b645417e9a9a72de65c3ca459fcbe1c7302a00e4051d30de0d6f68d9420c2005ce293ff7ae1acf4370c32670c34670c3067066fc6d3dc42e40f63476a16d59db20abe3a151094861422656313ad041201ddf8478d3a4a03f68aceb7f7ba5fcbfc787075e8c1eff6ba3fb1a80d8f2ebb66b9d92b05ee88d1498e679a44975590b735cb76c2ed954bd4ef3540b13309317acd5624fb1fa40d7ceb2560334e0ab78d039707ab4bd083d5eaca6b4cbe4224cd002e1db7aa9c2306ed0c0c305facfb74e5b7146552f981b20aa3e981be9af3a00e7e9166b755b1e95d0c770b8a7e939883fc1dcebaec3e4847fde5ab93641e25e0bd355d484664396e01a68c4ae3f8b34dbb8e19bf0dcbab8800a17172d5f6b6b32909edccc4d50811d995feb2b533e61a3b4182d324dec20112d203708406e55e8cdec09a3fa8261839d1f8e791da56bd6182b12aaf5942cca36f1a5d16c4ecb4d2d69ad5ba1459cb7d0574dc9886daf6c0be34d46766fd7e49a1fadf495b83977e8020e4f926e94a3180be5a2ac2524fa142d09d84e9a104bd79e03bdc529e050cdb37424da16b75df6cc0cc910cd670d81a8ed960e3a38a09a9db208f3c8168c80dca683ae0b71384d3aebb3b5ae112d80afe215e2d6cbb58db70dd0e8d469ed5d583bbfb75428cab04c8991ea132dd3caa25ab4796913a146453a47b11f8ddbbc2576a53d912f66a22051a2fefb972f91058f570dbde01606406094a749e06c0db074b6c6d2dc6bd7f1612c0b6ba515b4af5f1383230f00b8e77bc00359289070dc5aecb87b4d17af3a94f90eeff7ef8215b0972efa5c59380f9aa71cf2e0fa19e7821e56810a071312f94e742fbbf5cc942a79ebed95c8e5a76fd555dd6c4e51ef2ad5a4b5b7f0e1432baeb10a2c54f01af0f9b490495a06fa41fbb102fa7854c82ccbe4e8aa328c7565cb5634bb736caeaa07a49c8a59a4c1844fadb8ce2af050c16bb05de8e32700eaf251f5a1b415575f051f2a780d76645ef2341745631fb646abaed9aabe6c25afe16b29cb159d6171abd260553758c36b82013a1afba0d0299506abfac01a5e93777c92e6bc14c9c974311be6bc1287d6ebb0a66e6b35a85543a9a9ee039345c9b3e6a14071abd260658750c36b723c4ff3551443e5ad6a9355dd5015afd130cd13a33e88b00b865cfda042aba9e5aa4e838afe69cdf3f74abc92b3ba6e6d61abaec5aaee6ca58e9f2848ccdf8a6222eabab285adba16abbab295b0a1cbc75f5fbf92ca5e5f231f3fd6fff49c98a32fcec38fcce62b26edcb407f3d7321e3fdeec0c46c87671968eddb4603d8f50f2b5f3b606b04ca42afaee73b5495cccfd676780e7161789631ced0c08d2bc6ed31efa5ff8f863a979811cbeb0db5eb6d25b2317aa8f843d55f6b467364de8ccc90c01063ca210c2e24e34a298db612095bc780f1ed4e5003ec24126fa8decac0d41e3f762152f46fb4b7c68b24da62574b3d0cb0175830b06ac7984830e5795b2d8664e007c384bf3d1c18eda62da308f5ae2b3dd2a8385050d7afe231980392e1ac1ed16ca14a634f3b14682408c1df5d3a13bdecf0e2591954804533232793b94b163d0978e30d46ef8b719e3d26d1cac097b6e116609167be3b019a744eb6c4c8bb7875b09f7d513a486c7e96db2767101fbdc5a1b928efb9e070cc5ed47f6f586037f6de0526e785d006ae0a287bfb7d9b354e312567a24c6742d9ec6f693e9245014125201740c1465c41d6ba80d8d0f723fd973886d7ce6351e2bdcce96a9529d0d7115ef29e2a46fad7972ff6a712a5a7ae0dd521b6792756ddd992de47991adfa070b7d92abebe7a3f9d4ccba1fc14dce42e626b5fb78b4cfd2ebb8812d37a373f5329f20b8a39289ac29aca9dc0add1d87cad6065d8dc8ec85bde2f5f0c894c4212b17d759c5d98b98fbafed122c408c190f4ce1d5426855d87245cfb81e0f4acdceb40c1bce1aae22e00bde3f22613c75321ec666dec89fe8016aaeb8faf137604418d7d9d693ae313885c2c924a02736a184a182eadb1c6cf0522e8b43591a53c109fca5697c1dfef0a71adff0697a3977c74951472ae3f58a399a1e445021e59eef39e1b4dcbcb136d2ca7ad1934d1adaf69f008ef946607bae09649884e29905b5d4343c0b78244335eb51ac36d4f4908a81d3087e68aaa18466959278ea462c2db34964ac5d86cd5cbe99eaac3b9c8ab610c5d0d4c551a603cb271a2f0ebd570616481daea464ee11ea4553e94743af919e831330aac332ab4ad7e398a0c074d4426790295db0d40829179e4d364a274f7e27c48b3ec488c447a0d6a0975e722c50ddab9f854860a1492a23cc9d9ee5da381d7270c4d1837a50a6d2a2d508316bddb60c2956716831f52bd36602e7a4cc9c13f125bb8be82f57a6a75b6a6d1bc10d777345aaf6b04cb4aed20a3f646c5d83298c4e3c74de07f0e661b5151d4939d62355ac4037afccb037ab4f8097aecf7315e2dbbcae512ac87164a142dc592548b109ab8c08978224ab0ce01727000fa7d264d60cf2e79132b3e165d0dd2a4ae9d147c888d7326f868ea60fbd6ff46b5e7067de73e0c2adf1176a3b6f575a5695d45bb56f51bd9df2d26db12a129dc364dbc0784f3fa05fef2853daa30d890206a982e28a86713b7dfdc6420678ad71876f7697defe7f76168f046359b74c80b5a94904d208ca0101cece96c02fe0999283d42ba8d1d4792a48ffe02ab3c468093dd0b3fe1b7bb8ea16f7208c5c6f1df6448753e140f1d15bbd7b9436e23f73a72a8ee0ad1e0df3d3db0295bf91f56ecf7193aed1ddbdf7735abc39cbfc59a3016f09434f9d465983da62addd5ef5a9fce71dba6c9a7730b6595b417c3bacf10a14f322589c709f48cb7c5289e8e633db958329c6b278ce3e1dd2a9beea020819c1cbe3a1c40b4688c0c09eb0ee93d64c1c01b379f54c593d9c48bf78f037f1e1602a3ae2d53c5c8bbea068f67ee326b6a2a98817f4f0dd6309d4d56ad88bba3345c01a8bc0ddc2ff6319a530e74471281954928d952f55054adb067e52ae2ef68492d0737ddc2f5ade715848fd17e8b2f5f5845d8c64e4cc6c575f6cc23251f503c7f86e7c1aaf82958a1390249ecf389b396f94e968eae00e92b3793bb52362f9d2eaf5dba6869ee92877f1bdc6ffc97e01ab0b412d7d195bde128f22b5526d1efb319bf124c2d0a234b406c0b8c88a22811e90d1be91161720f02e541e0796232968ef8dc04645da689c84d2e7450180aebe497090aea8a5168b5202c2bb8a6e02ebd14537eb632d21bd81943e015bf268518c1eaaff77e797fb41bde57232c4b25daf73bfc6b9521f508afa95a41bb9be395b8d93116453ffc31765dccc4b88c461f6da0aa695c609ae0dd9a6afafb73dc1f44f9a8e9d063b65fd3e1666582428deeb93a0ddd558cb7a2302a4d4be92bb0562ea457d197e01a05fa409c77caf138fdc23dc5afa3dd8357bb47bb475f2780a1a3263cb3afe2cd51b515026b33d30c63ae1b7d205a57388d24c6c226ef38321070da570f9bf6323c602dbd195aded99c8ee033d7adf7a332e2a18370cf7815cab4cc8c62d0d8288d4b18c9892ef2abdeccc580b530ea51abba9c77607c952013557b08c62b026f8db4f01b2e06708aa6d5388a0babcb7110e6dbaa2e0774f08dd703435fae5e0c0a3b5a2b546e364b95e65804b6a5deca040c1ea859afa6341432f1ceeb1ae087a08e9aca6560d861ea8605419b659a9453af2afcfe5af989542af722a7969a737d37f5a8c8935d92eaea91dbef78ac4419cc762312c7c25907e74a4d6bf700d02bcdf79e4aff254c50752c1b19eba0de645196a2e88145ed88672b0e9c3bf693b34aaadd53880d391779ed7ea923abc78f19bd4579925dd0f8442e46d3dd3c79407b3bbfee5d2b9aa4d72d936ded5e55fdc00619574a8b68037c8c736f6823a53a6dff89ad4771ee3a419ebf1bcd2502f5d98c1793347f29cb52ce0695a5ef86553f7dd01b6080fbc215dd7ab3f73784c114053ac01c4b9daeff1118b28a3e92d990feda0c0e4dc4da9d9595dc4c5603f30eed3babe149d3f5992ddd61d08410021dad26ead836d191367a2ede831723e256f36283dc3a5efcc3036ff83fdcfb8aff031da8411dda91314cfff37db8f50f11b7fe1677594840f7281002ea0500db07331a86d340a3fd104d14b48f7457e9bf008baee50bd67ab6b171bd6cd5653eb57c581d6b3ebc15a3ecc50aa63d80e3c0c19a0a2d2d1cc2e60fb93de652eb618590d98f6103fa45c180ee7730b0a7ac35ffd47a9890d5c2ebf0afe78dd8be737fa69dce26bfbeb714df6febd84a5085de3feaceb1867d022433c07fbccf3c2b07d85d8f67be98a88a912950c5282c3816e5c0d1de1da7c66851285984e3d2e43a97608aa809b6c517a56cc507c81ba0162dc0f06cd4d6d4ad25ee167b1ad2e053d6eab4ea0e98fbb046cf2477257bf40f873a16f963338b8c58de8f752caf968dfed8cc46099776545e9bb8e83eacf2c75582adddab76cf9b465149c82f63a131d2cfdf4fa2abb38dae95ed7c4c0d5803de10f144d5fe24519419c453adee2e3b8c41e5cb432e476482be92e28c0854476d3fad389041d284fb1a5ce6ec72fdd48b8b220a54a59c6909ba901e65fcd40b0b2a542895df057da9d0dc8eebdaab1d953c9036c86abf811cfc410f58e32468c003561d7934ba41fcc1cf4f1d617650f9f210ea20278895d46124da3aeaf8c303c5b53fdc5b5cfb431def824f3b729197c762ce0b8efe654183b0b4421d7bb68ed7302cf81a59ec7ee4448e26f5e4c429c77f9d28d7a3d2205ff9222f77b052c88dd853f62cae681133a8c3655cfb44963c1b84cf5631d5ea7a8308b50fa140e3c1b19204edcdab8e06ffd84c83caba8f50d51e7da9abb523335953153ed7d527f936aaaebffe7af11fe243d84113c8074aa15f753d37f8618f56c985546b7b54a6d70f90578f0df0202862a6a9b101d95a841cf8087f90c4b59aa8ea6203df2122a00353782d0e540446cd180ece9ad25237c654167c26b1cf5e64ac6d8da67d3f4a186e8dee67e0fb50dac10fa54489ac7a64d455474f686c1048387595d16a942a87e75f5d755e14fce670dcae05251381978b1a7b993b6656c3c3ee9c9c91cc1e3a4e35e573fb24043796e68e7aa922a7a7a46b1bc04da6ae8dcc0565f2395d31f6870f18da75cecdcdcd9e2cdf780cf4fa6bfb299de0da0c0af645a713230ab5d077ac7af8a473e782fb97c1faca9a31f8550fc4a786a58a6bbe2bc4f53d6a82d8d7542bc6416c5f7c07360225df1d75a3d7973b5157914b57420f85807b547637adbb2ae3017007a6fd33e4eea9b933e54e1647ee06b5fb06c3dd61ade0467727d4252aad9b6b610e587b1250e13bb283fa5ccfda5b784f6aefaa51a755c3cd379a59ad7507ab65ab2d26c7ac55bb015b7a1ba472a1587b5f8c4b06af85fa24a611d066399ea2969a4662bbab12bc5fe413b7fd5e21e4966ecddaf04459e9bf42c6164e4cb2aec0529cf127b6a77e95d45acb695a920d644057cf36367c02fa7c5b4f289b3e3d3cdbd8fc315af991e71813c8027712a6c75b102606e7f0bc952c25e1bb8c55a8cda54acda3b0c820b66e0b252dfdffa8a9b495f1b566c036c0da044d982903bfe9cd983058fa729ebd183276c05a43089640c78885a462500c95b5586d6a3477be5ecf8ca7b5c1fccf60169582ca978d445e8a82c99c5d8be24613425132352a84c8153b3cc2af395292e700e01e9b5acf3636fe8f079952ac812f0153221323ba077d10c3abb484c7bb1d9e65526fb5562e736b34ab5b1c4383a8a0df6772ce476979c3789ece38054a266dbfde33588f2a99cdcd5859f0dc2e9f01b1d1fb41b5a24530162d9f2340cf5c3dbb13aa84c1874a668bd28eb794f3016bfde4d0a21945f805463696c56cc05af077c64bd15eff69e3ff7499feffcecab99792ecdae88ac4e773c129237e22327ef3607c74cda440418c81a5cd2a547080f79d266ce106a3983d661fb22d27edaf75d728b4a397f0866296b83c31efacc08fe55ecc1457e948e89b11861e148585a43fae4bfaba3e9719c4236c3dff5feb277faf10450f0b50745778a2af0a4e74afd0445f1798e8ebc2125551ecfb703e202a511c93a8ba54f70c4a540949b412524d4ca2da8844abe8e8a60d4106013f7170dd2b71c3308ab125987a843b10b12b3efc637518be1ffe1dfef6b628f4d0274d02ad5fe0e625871f21281adbf22296854ee572f8b18a0e935dc9788fd36f179d802b954e72a06eeb748e24561f16ec19ee3a9b35694568300a34bee52ae3de33752c5c5a0aac5f71b08da39cf7ea820b635b58a7389d35cec6600f2bc2afd58eabf887b159c5349567d50c7e06a30d39a5aa2b82e2daf1bc103c0931fd703c3762d924d2612fc2cf03131b95ccb496f9dfaa0101691d826088e460ec7cf9bd15c058b1d5f8aa2e54a4ed86fed22c73c46dd0ec5a706618bd719a95a2f0b286ab9b595df2c75a60af2c57b424a29b7b8cdd5986752ab115cd704df6663706882168c710731dc3a3816b7814673ba80b0a6169ec7f7dd89428c4cc7f3238ca370c8172719f2027d5e58be25e48c389c3ef0e234d2156a2fa9e92bba90b7732dc272087ec58f6e6985b5d9d687e11566497cdcd14d5fda6e89f3d2bc0b1601e5b6c1ec62994b5dcb90e5c134ffe909653b9289d38b22fa512966f884fa36c9188c4db7286f746c1643fbbf0d1b8a95d4c6ac7b157325e1b36b5cb5213d2250ab9eaa0d41e0d1872d55572622fb876d05c6c7c5be0673f831f40146175f5f1793f16d680df5f8bda0a721fb8801e8800c59eb4517b24d59cbb5812aee5cae3ac31846e0caf41b0f2d7d555f663ae3e707de9ea5791b22883cbcd9edab567659dac55017797bc55132db5896eb852a2284fa6a9daa3e866ff1249db0b9186719ab331c81e18dfe23f103cad3edcd90323bf7d8b086c31e3d7b56ac6bb0aaf7e44aa7436d15b0a54ba567b488677d6d20e9521d8e0dd14b38a5824c087f64521c65ee4ad946276e8cf48a0f65c26fdb129a49fb6784ef0a1107ed82254049a32fc650b5db80f2ab71f6c9552ce4d61e959e367625c9aeffa6fcb9bd3d904d4aa2ec4935145067dc72a4fff8cd2abee8d4c4bcf23992d667ef607eaa56774716ccb53c63d8f2ad160ed38bd229c5e29e73e39604aa63cc984c17ae43b079f23e7475a13fceadd896139062c5c9514b3a3c13fa1e81b9ed394732d78843f5b4b67134821662eb1e64916ed410dadbc88ee549fc10900e7dd0d68b8c306b6e40c6d0970b8d1dc7cd83e7ed0081a45448cf06d081fc0187d1edb72aa3dff31190c16bc12ef89aa18554be2d7427a3570d5f0ed28ae66d4e477d5031bdddad1902f57d348e175db157aefc995165e3578bfa69763b21afeb53028063af096aad50491dc5dd3b74bed2adae7459f944d71dcdeecf6b81fc4a09c7bf27929e751f83d52a9cd55af7eff7b792928929d9c6356876a102f639c26968c1209e8ca90a7cb66b8c7566c3915b9c70b53c594285929d925f67bd98a4c6dce72a3d9b793d13fbf7636c0a7ee3d1da8fdede6e33941c6b4e6efe8422ef2c4e788f001536475592246e98c67410a1af7cdfc455e6f76520730ecf65b5e4e7b1e38f694b5448b3df5a0ea2febc1a780dd8ce46cbe28c50ecc729fdf607e86207a4d541c9fc140db2a384a95773bd60d6d29fdf42fcfe84bf1c17827622dffebca731902a08c78365a64bc1418356b24330437e45a08836d5342b62cfd91e7098d8af1191a1e9a99d8865bac1d8d6cddf4fe846db227665a1dd6377f3ec787c239c88a8bc914878252462919e94679f271a14a91106b85c12cc3b19a41b861214af5d1734c6e35f8a537e3734f8f041f837b452e96e8a3609a1807973efdc4ae9fd83ec36b70f52c0c8f387b8e20011a205df6ccf97d982304abd801e93ae1218ea16c54290bc1b4406a445e149b8ccc02199528cc840921a679942d87bb90a182c52c0f16775f8ccb77b6a64dfc43a53b8ba23891f34a85b386d722bbf0fead2aeee5343d87a45d7af6297bc22c96d8538fa23a5e42909a9120900dd2e537d25997959a8b1522598c842e5f60e1d91ae1628db0374edd1e8067d0722a989ae96b892a7dd224aa2d2576d0524c9f082d02b398277acf41f00ee2cfcab426b0a9b22db1e02c8fe9dacc122c5d2352bf93c2cda07720375a0dea7a880d0f081f8dba2c2dc5accb52efb0e0a311db82efb8b49535e0a3d1397bc15236d07563f35af7e9b6cb36cc5ae22e4381b90ea637fcf3a00989df156aaa697017dc7b74cd9e86ecc1274d6f5b6a2a2989484632d364b15002f6c604f2a6df98d51f8a11d74572ccf850d9dd291213f545f95181cbdf600d7ffec66b688f03cb50ebe09795d521d000c4303aef188fb740703417bc4c832b307c888fdfa57f722e8303736ac60a65f8cbef1dd91202e853ed2edb340242ffc959be23e7376037c5363736feb8beb9f1ec07f69617e9c79cbde1d7a2188a2bc1c6459ab3b3b5dd4cfe73a139f2ffe5d71cdf4abaec992ad96e92a25641cfec9d282026194a59535188e10d9b143c2f45d265e34200d98ca6bc9860a44c9edfb0b92894cc991cea4548f309e36c24e7378c02d53225c7e592eba303b9961ca5904a37912378b1424b90719a09c5da9a8ecfd68ea9c9d95a07ba4904cf589a03959b3260635a222a04265e8240ee693eca16891e8529ced2594a7de8e6803045fba30b23edb2994cd2b1fe57c0c4e68b6196aa69575febcb221d2e4ad1654a7f1c895cb7e279d2976014946908a950385b373aa803cc59a3b4242441bfcba99c853349151b2f8a3c55538c359a48a624f408b987b59432d57b39cbe412f286c91c574d0df4aa9d4c05e343792d60364811b92cd311a21c39bd5b592a52537d940f05a14c241ac1dc9b50a107a04a9e9729d7677e81276f34d11e8ce0cd2e3b3e7c7df261fb6897ed1db37747877fdf7bb5fb8a9dad6d1fb3bd637dbdffb077f2e6f0fd09fbb07d74b47d70f20f76f89a6d1ffc83fd6defe05597edfecfbba3dde3637678c4f6debedbdfdb7dd5657b073bfbef5fed1dfcc25ebe3f610787276c7fefeddec9ee2b7672c87497046a6ff758037bbb7bb4f366fbe064fbe5defedec93fbaecf5dec98186f9faf0886db377db47277b3beff7b78fd8bbf747ef0e8f77d9f6c12b767078b077f0fa68efe097ddb7bb07273db677c00e0ed9eedf770f4ed8f19bedfd7de86afbfdc99bc32318dfcee1bb7f1cedfdf2e684bd39dc7fb57b74cc5eeeb2fdbded97fbbbd8d5c13fd8cefef6dedb2e7bb5fd76fb975d687578f266f708aad1e83ebcd9854f7b076cfb806def9cec1d1ee869ec1c1e9c1c6def9c74d9c9e1d1896dfa61ef78b7cbb68ff68e35425e1f1dbeed328dcec3d780b303ddee6017a16854b3604d0e8fe0f7fbe35d379657bbdbfb7b07bf1cebc67ee5de596e72a05beef632cd7971f346f0795b8d64214cf8f28e315b4c6d200827bba16b8c5f9d6db1e0b7d1423af0c1e321c09e2fd4d48feeb8505393a8df1e2ffd3edb4e12a04b7da334e1cb68e3883c31540baa859e511cbb41f702b070ae6eebddc65280325c0cc11270de33672334c6cfefe7ed009417dfe7b9bb8fce035dc15ccedbfee88fed213e4e0b55da1928c996828d786e2332964c5fa68a9e3ba26d3e567f14a71be7308b5f20829b8be8c6cb26943880224f22683d182f00dc83569a9b0347bfb152035c0634ef743d849ddac9aa92172532c84c947a4a2acdaf582297792f3046a8c1eacf9ee69fc533665bbadbe741a906fd4a2ef3f646e5d93fce526b960aad5403f722fd214c35aa1145638a70651e74fa7d76228df12c272b22bd9cf0b0ae042f46537b53b02ba1c94ddf012cb6d2b217bc2545379dfae7a3187dc6560466609f7234f80ffa5a9282e665ac450eb8a8b07921474229ccc29ae6ac3597f396ae53883924c2371df5fb38e02c638b39349dca4cf49cf5cf3d09cad2ca52e8cd3117095b720525904f1f0371e3f18828ed7a43588a5621582273bf6708eaccb6b6981f706b58087e05fd1eba90df4ba1e795f1116e4184efc8d75ec370605ebf32a7839e7bcc629c495e6a6ce813d41036d847cee7859c175afae9451125bd65aaa161cb67d24e03717b0538c38a3e0c1def5c02ddf45fa25dc9f45e43c60e82198507c50e2cf799d96b518ea6c1a2c23574ca15055707f47a1ccc548b58587eee3b0eea73c3fa5bfa8748c8b6819e79c936f4c258c89a83e6b26413a91746b3adf1a2d004601762394d33c1da79c461fa7db6836a36a4000e6a0d02db52a886461a18c3b461bb3ad2c706076c8b813a709c4959b4db397baa89b1cf3621716be08c4a5d44b82038e7fe96a19a5330bdcd84023b758d19f060cc270a78749a335924a2407d96f026c6ebf70c62fae75a5463979d867da4967cee8fcc6e1ca30eb20742eeef22c38f9a368599bbde1a08e0796dbd5cd7c0cab6426e3f1dd4ed09dc3ec1bea01d1550f4be945786bf913582371596960a11dfbbdfd9e0adf77d485fd739be07f947a45c160bd14cc9699ea423776f018f147b9607240c459b9a840ddd3e210717f31fd478a66b98baebec191e80faee912a7dd702d6ed94155a4eb3af9d3238037cce9e8ef56e8dce13a033b418f1f7038a4e34934fa92a156bebee739526c29db09d5e2fa278337e739ac6d14f61f9d312594762f4ee95650f10f62c5e52eae43cc09cc1dd8ae5c50ac159893b3455b0e93573cd995c148e2b05892b34b27a9564205eaf7f7104d631a8a5c17ae162fb7df60ac569c5679a5ec4e80a35ba7046839520b4eac5b90d0c4dd462d711582dbe36ebf1b57917be36e3ec0e7eb3bfb0364ed31acfba1d36f017a413e26333c2c7810c906c8e14c07ec05b03eeeaf5bc8a8d22a1ad668cc0f0822fbae9793d7784a21a160a97b2259f47663b4ed5355ca459f2ae10239168def01610e2890071697b52f0f9b48b62fe814c44574b34074e780e949673e369782d8a527c32ac00dcb7842ad99c9753d05516457acd33ab9f8ec6f3f9d653866a3157319e15822737ec3a552948aca62d7d885af549650e71b583218864a22550541ccd04578b02a5402dfcea292c8ab9448d6a49fc0e5f67f45f60c7cab50c94ce04cba4bc5accd9b5eab121dc79d954f0b9f97cd8ce3b6e9830aae49846f18e9753e50c0c6b0a4f2dc2f1450253baa4b248cb1bf6cf8558c008b7f7f70d7ef2a40e0c4d2c916013851b1b547099c0a3636655c8a99680c65c955845cf428b5e84df17de6bc2ff07dd633e054f97e0b4c6792c8be6bda5d389926216c1e05ddd3c4a27038fd0e8fca377ad0ddb54ff41a722c140f9d73fe3e7720e8841a9c52e3e3d4fa2b616dcb2a03ba8eabd7550f50308a16d070a979cfa5a7b0986d2b31f7a69f2dc9c7821e5762d23f06fc754781a023d8fae77508be57af84359a4f90417dfbfee7b850740185b0c76703b84dc615fbe786e05f5bda34743bfcf6682140f06baea027d98d417d8ae80edad2af75bd3480baff1f042918616468e9151b8058295000550aa2c0c5f88c8c512c2e17c308af8603196e6b525eefed47c3837ab65f6bc134160ab6b0c98b0fa763e87472602bfde0915daf226e6a8ac320bfc9a2a360143aa0225003886b3c480d3e8e89a67c03490a9f4c6a702cb46899e03fd01391ad4701a8b03340059e4e8189140a8ffd50d7e8e101f480377f41535f58ef81ace40134906166f812461984408d2d5b8f52588e0b4094614d27f7d8e026706b802a5744456305a63e76acc5b4f400fa709437ad47fb666dc6ebc03f86c4d53d1d95ac7949913b9cece35982dbc3769aa81831ef523524bbfd059483f0ca36d0a4a6fa577d944c0fc5e1772d6284234d569070389a508d8c3c4af3c63811c1528bae2f38ab0101e05eecc0138483db97d5bb453db8ad7df4858795351884f845e886b5150aa8418a3a13403ca84344f6a0421407a5a3afcea7a3e21f9788dcbee14ccea04ab07c977fe03e64357d5a2a5949ed110a020cd279960438d850cada0169037e955faf14a9505d7524838d7b3bcdf87747fa09124060bce4b4ae06981865169ce389b4b2d20a73c63855c06a4bb23673399db67e520b7a957d42ee4b21bd94b75e99dde436d2197c684a962c154c8a551713f616dcffac4b998682eb5ade662541ed1e37301c9c6eadedf436b0cf786ce9ed243355620ed9e7950b74fcf34ce7ea553bb48e10a8da402acc275069e804b3ab23457687b0274c7e1171a05e66caa6c93891a4bbbec6317dfcfbba47231d64975787576572a4b47a2ad9b773c03a260196b576f192c9a8f0e50dccde5120dfaf850b50378ebc1f03af68d1ee35d60ae136b223ae590855205528195ca340a01639a03605b0568f118ea8c5f895f447960c42a1f8371593b445c4ca006d7f042aef7e031bc4944188ee780c74af00e822f28deed8491f8b2c59ec21fd6e002ea9de2c7f3205b40f0b681ad9f1aef585a5ada1ff0f9e9d3347aee48d93ab5fb399e5127508abb71a4bd521e834968bb83b6381e05d22b555ac55b2d39ae7c5c52d618be62dc7924978d969db62cb62b79906966840cebe610adba551ac0ec8ea4334f446f89f0f3fd1c32eacc4f9f9bd4ef250302d112cd2b5ee2c16826380929bc81b0dd681e4cdb4e36a043b372567add75596ba3d50dc9906ea4d85aff13d9c3058f85440c4f7323959049a54683cc442f9393f625dc1ae8f5af7af40fd8ef3fb73d6469bed3b9653375d9a9b383343b470fcc3c11fa7ba6816feafaa77a273d3bef32fc71eedf60a72b7968c30958dde31f0967d4d573f691c67a9a9eeb717eec440e27eaf4e379cf5853a169140de5897fa0e96abebda6dfda0e7dea5f1e6abcd4884cad3832158cc30948465f46636e268b0a030a2b3be5d770fee58c5f4fd8f691aefdacf713c823f49e394bf374b6989185b3278ccc05ac4997cdb385624ace84bbac3b696f2f113c0bb67320f045c531e778e0eebe0fa379ee9dc3db4755e1a61f775a3573c3967d8da90e7bcafe1430ca5fc87e71eb2cef3ff9ddc5c5bbf747bb17174ffa9e794afb023c8b7eef626e926bb275aa27205d56a969768f814535dbc156893ca4379ffb0a1493461fbfc4d17830540441add90b171964148a2340407409452ab3eda2e0376d5db3d36517e81bbaf11cfffa0b40c01f810d806e7f7a41fe992e3cc445e8a3498306696d6b953723cea31d6342378adcc7cd5c3be0474a1133e2765d76aa219e9b0ba91e2d2624a11145b1161a9c199b3e6bd89d8ebef8426cdeb335cf323ea44fd2137a9ac26fd8b9e756a687e00896dceabcdd69a8a9ea3619041306e0bf37b9532f1ae224bb83d7558fdd3f58e888e955a4afb6df265fc0d0f1cf03ec7b56a95328f5df718cce3fac014701fbf20583f0bada3904ef0c6a3ef56a5a954b1075233877cd06b5041fc448b2ace1d48f387cb6669343bf4a93b7e08cb2d6107eb852b312d75a0fc0bc703d8f5e736c34b4d7059f89bd57e66533a8646280114308c385796287c8cb22152a7ec184470d302b9d09b00d8084f9c09e47539e43f661539d94a386e313c4d38d73f394742446a54d5176163cb3e144291e76740e608678841bc5eee9f7c16e4cdfc6732f3adc5823849e8de7ec6c6d28f2749263266575b616a84c090c20c686519b96e55c0dfa7d55f2d195bc16c53893cbde48cefaff5c0805f6acfd1ffffcc39f7e7cb6b9d1c7686b36d85a26e57c1dc4c775f16904c6477e5f34d39ac5b359c0a18feda082b752110a2cc4faecf3757ccbb328b1780ddb044acce8e76d65e344a466fef8ffd97b17eeb66d6c51f8af20bef345524acb76dacee9918fa7e3da4ea3338e9d6b3bede98db354888424d614a992941d4fe2fffe2dec8dc706084a72929ec7bded5a33b18837b0b1b1df1b0dc94653fb82b19628dde4ce9084eaebaf4d4bf6757736495ac5459e8b98e6ee557b1df33c1699b7d5c1cbb57afa18f3bb75c2cd30e3e6727fddbcdc41468d848bf7a82809bd79e1b758e6759a313ea945a9940b3809243a4b31919cea4dba300219b0d146f901d4cb0bb8efae68ff893b4a6fb57f7692de3aefa7c4ab13675b26ddd803678a79bf36c02389c32008cab7f2fafafde1eef59672365b8eeb92c735db638bf4bdc88cce11721babf0a1737eaf1c38970bc6b1a2bbffe4555b9114d2f2b0a4bacfcbb2b6e7f279237e01f36311d0cacd9804ace5c17ede37ac885dd15d9b0471cfa9a6365c79c74380dacacbcce879f196c55da7619a4166b322915b50c6405ab6ca1ad43d6ff224b4b1cf3d800a0bec2d2132ab232ef6e701f27277abfc274be9641a2b688b72165eaef7c57351f5f06e70028d5d583581e696795f564d00ee97a8d9acb863739edf070491f29681989fdda55986da5e6ac982330fed99d15cadddb23d877a50663a2e54ffed807df3ed6ee3a56cf615e27cd7be9f2df2b2963d1ef81f563fb52d074eefa58d2982ffd92022934cbc77539ac92f3f977c31609dbb922f9a85c734e96f7147939a9189212200f4e149189d99f83b75d7d820ef08060d41db0a686dec6400197bf155f03f44879a17b80ee96a1f56e2383fee0a33cfb4f684a7a99c89f3781bbed10d37c73366a855d7dbce47fdb5c975d6018a41d60d617b2a39304c3a2904c438aa16224e27f7668005a4946d58079239b6dd673bc5bdfdf5b7f8db5d8848a59b3cdfa0c9bfba4dbedea0c99e37cc376d6877d52d6c8b93befe323981181e799fd4a407cc8fc2f0f957c25dae9583e2f4dfe23fc46be99def501bba5c1e71f0179308d6bd43243fac336d08ea626470ee8b4ffb32e1bed8f72aead4205cd5f717de949225a99424f9cfe37a1bb6725bedd9b6fe031df41912abffd97432f583c0a848f448c9c4d461065cf32314d234509ff266b7aeed3e71060ef2c659de2b45512496de887bdf56b7e1981d74d8f65a95a25a15ec4f2fe7edf5969caedcf1ebadba58e01f37e21efff0c6b8de7ad773e88d1570e20267e41e18708a66c1ece347f5c3cd73baf2ceb608cd8cd84c6e40989718b030f780c17b1aa707f189fc430b04bf52d0178e81a5608b3cb17ede683f1b9612a84132ac8b502e2c55a119d44963332f16d4f9a4eb04696a64195a11ec676d14288379d7c4a982068d38502ad45583c2f99cce1ab4d5e774b632801541cffedea006469f5428558deef9b97f04407f86b7e5ebdd5d9a55c1d02c166454c10785ee1ff6b7a2ad9d67d7397bc668bc83bd6fd96b9ef1bc4e4b7625e2595e64c5341555c48679dc678759a63dfd4b010224f037c37e4ed18d3f01da06fd170e173c9e095d12b19f4409bef2cffbbb3a26812a53a1219fb1fb62090288bca8190a26d20aa21830f13e160b90664ac2204b21d382f18552fdc074d82faa130c9ee0444e303519afcdd4e57fb3ba5e0c7676eeeeeefa1ca6dd2fcae98e8a4d50ed9c0e8f4ece2e4fb69ff7774db33739788a98c05ae37bc6178b2c8d211b41c6ef20b0f3b454de0c690e0195212c9b8ede00fdd8780874f3f43cd3caa9508034d74400603f1c5e0e2f23e8c78b05303c518ef567c7c3abe1f9d9a51b1b40c5a056a1a9e55453b9adea48d9a510ce34b44f0ad2ba69cc329e4f977c2ad8b4b8152584a8b0e1102ae58cf68c048aa89a8b83a1764cba8e67a0ccadb2743cdad36697f0f37acbe6f430b445a5abc0975c7ea1f5a0339241441122b4ca077638ae4020f67a590a4b383d189bcffe4ebfbf8386493b3c54b731e211e67e0cf6a0f242ba53b87c3d3c3b3bb918fd7c7871363a3a3dbcbc3cb91c5d0effcf49cb34b49c9ef6713cbc7c7d7af8cbd9e1ab93d1eb8b9317c3ff68690cf49ddb36cef87cd1527d59a799ac8ecc90d097a429f8e73b7bdf7df32f5fef7dfbcdced77bcfbf79fedd770030467c9a4f192f633046d00ae80bc94a7cab722de94db8ba383cfa073b60d75bafd8b7bbd1b7bb6cce76a3edeb2df615bb605fb1eb2dc619f915d1925db6c7f6d8aefef68c3ddfb4c5b66d026b5de6698d5e60604baea8f862c22e7ffa51d98043c891349eb1aa2e8b1bb19df06af68c2d0c4105be4a9ad5e983a582d69b24e25664b25e7f5efc33cd320ea846e4db6f2e779222ae767e16e39dcb9f7edc39acd5b5df91639ec22ca027c08a18fe4e99c8ab7005c584fdfa6f603e931c7c7036f581edfcad3f1598ac16bbeaf67e45f7d5a2bca9749c122505c618281096f6f0eae5e8f4e4ecc7ab9792c7fc6e571dd9abe11982e901dbd3df2eaf2eceff7132fa79780c95bfa155dda2bdbf1a4b0493c8f53adf79f68cfd1d33df789608105558c7c5400cd11f99d8a62663aaaae75b1f3412e39a08e7109e5fc7f2674f9faa4f2d09292086b0a7f5547d93e0cf5471f9063d0288394977518adbd7811890ea6b1fcf55ce89b07c34010b43a5dcf064e72491244629b6955a02351aa07b94570e7baa0b79176301c08b1e0a8e2e080a719e5d9704dd6f5ba11a8eaeca35ece06d626d83bd252fc2fbe627a992ea802723dec7bf23ca5c654bd5d64d20c3d8688cdf6b3ef57abcc22fb278ec72bf8abd94fcef98ba1461ce6258c154d497e0d644ca1522970ca5798dba0af3f7d5b58bf453a016816a71fcbb17b1ee2806cbce888de2b75ed3d1d9f948fe6912d6e88c24b2722fb283a256e7468885c9f5259fa81bad842ef22aad6a152c44de6e081ecbba103ba12e181f17cb9aeded2edef79c582588d3b4760d34a2f334effaf738722ffc330329122f8c4e0f2f7e3c613b30a6e3af059d63523f76e0e0976de7d733a6427c5a97d2ddfef36fd900df2c1d4e7437627b3ddc89f932abd34526d8f1f92b1b4285a3364b82bf44cab9884555f112828220c2ceee595a15207b34aacd01ce7867876d4353d35d9ab3e1094b0aa051abe502de51d96c07f2a7b10a1c7aef3120c958a06d3c58c4a3fffecbab57a7bab73e1d441dfee1d9f0d521441c5273aa58753b559e21d8859269a39b7cc57876c7ef2b95ab0f424e816f7659143519c8c17c210e5d5d136ad363e5389a7641f41016d6acecc08771b3cc955d5e6f55b75347fea322704aa86ac4dc743e12201ed01ffdba7891be1749f7b90dda799b8abb1f8af70373e57fc20f5dd2aeb766a240dc6c6db67878926d84f5814b00a9817a5f62a4972787c7ad03599362435f0ce815f4f6f2985733101d38959094020a6a75d342e5f1a408402f951aa9c10b12efaf7e826e7996ca274b33cf8456e0ee5b346e7f6a9cd7a8f134a877818a09552e7b0e9eae4e8e27287a62e988aee9dba4913047f3eaf0f414134a4882a2bd2260509579a2e758da817df31d2ff36e2bfbd078ca19db79f60cbe3d6317a22ab25b810b920f81b2070094da579520737fcc738dc4c6f776ae2ab560c44c92f7a23436b8da3b5b75b4a37521cd53548feba75012ff99e7eae77a62567ba5f93dbde60addba6bc90ae7c2886264377daa43db083c4299ba9c3716ea92f80990f56e75f714a8d6750f75438a8ae05cae0ecf8e0f2f8e5b7c36908ae0efbb9a7188086560e0d344539118795cbc67d512a21ef15aa18d445138555a574cbce7719ddd4bea06bca18a894afa0a366efd75a0a790bc037d14e13b66fd3c499712d148d691d2473b46ef865110a0cbff6007acfbed2edb56ed7ae4d169d63621b8d520cfd8f34003b58f66048b76db3fe9c0cba1cf4104ab280b7577027205d9575fd50641020b40a464147703650a42d801fb36508c04a364279dc0efaa0e08be83f21a7c398c8853f39320e4fc334dd51f9ba66a5e24cb4cf4553adf75d9a4e48974969560185bb6430eae92ec7cf50abab3995c51423002c91d3bd0a2d6aeca06dcf36a80d93c24d629164a93718cf8b78b15488374be407a8a2b7332d3777fc72debb4b65a359e5bb3e7e5160e37b2e9546d5652494b14e3dfe8ee7c0fdf6d62706c3d905ff5957ea01b6b732cab6d32d9cf95c136a64c97b488bf405d733f70d2eaafb71d55a7f30eb50abe5aa11bf7d8f3ddbd6fb617a5a840f5f782c7625c1437a85630f2f42b8c6b0cd72d56c118b2a656e1d5f04a7fc6e08a2a86316a21504e8f2a0315db18f820d4a414258da00c23d5a53072680f36f55a2ed3799a81b3304b251ca43cafd97859a30178564c2bc699a4c69409b87264c268c2184aa0667351f7ed321559a5237865c594a555b51415263a060121843013f96d5a16b9613de332add31842f63cc3381f7d7621e6c5ad8e8a9115d32986334e506abf288b648970e774063668203bd09b0731a8b2629ac6e82d0fa19149742ad9230ea9f64bdd8ad1f1c94f985510035cf6457edb3f3b3f3e199d9cfd84b94aec243ae636e91d23cfaffa2469407c99c0fc1dfb77dce9d3bcfeb9d99c7eef4e8a72ce6bf4f8f1038c065c83142a6cf807c9da7f637bec7b68b7cdf6d8003dbbb1be9387173c04d17d08bc8782ce43b21c9c32a8ff50c87d48f6cacbe950b9aeec12c2612eaa4ad23907aca3963b601df615c335f755dccdeeceff57ed4ca3106d6dddd7e594f4285f7df5aee9eee1985901e781471a88a6617913d05274d5341b6ebc7579ef90d2dbdbdbec6791c5053a262462bc442046fdcdf6f636a90cf707fa57c14c4b1d09548e7e2bf254e4b140310caf41a3286f9bd12682f682f4479d43639e65556a523c70bc9fb2950656a84d82d3f90144fc25b398d7f18c75df4b90a614d70ae837b823625f14889f1b207ebe12889f6f0ac4cfd703b1841e5c44abe19bbf859d5f576c44bfdf87bdf8553fd814f7ca2bd0d17743cfabd3003f6dac8f7d53af58823f940a00c5ae6f7178cfafcee7b0c314919adc9f2af73f55ee7faadc3f4d47aed385b469b555f197538a0f636fb0342e72f83f7f620b791491fe6328e97a0ed8fc1ff24da15d2cb08afed7ede84a12e0b4b6a4c8e1ffdc7aaf44be24f576e6225f420da56915f972588bf9e72853751fadda545de10f51a7eacebf88b6519ec4ad92ece1df8f53454280d2125e5a5943fd221592b4929827c10afa175566c6856a2dffda54cb99f1b1c84e4c10e311efd32fa42228bcb234576b303fa95b30829b96938f789f7ea142d059b1cc92e3b4920845c1b3128a064a4843601e51f52aded75ec191bbcbcea7cf56def2a6287756cf33bd560bdba5a8eaee88837d2b0282b267d553513fd509e32f7d9cf80b2f3ffc05c7857fd373c12fe60cf027dd6cfc12da4d656f0bd75dff75e4ce4ded8c63728b3968abcbe558e2011d515702ec13c7dd193de08d169a1dacd24d93363c8f674579b44adbfdeae4eccd687875f22aa223b4e8b70f8fae863f9d00d188b791160ecfae4eceae46af2f86af0e2f7eb195241a71266f75e1a6edf1f0f2f087d39363d9cadc420cd50aeef5fa16289792ac804867900233ced218a26b1539abd446d6653a9d8a52bed0e686a7b5506ed164dcd7e7afcf7f3ab9181d0f2f5f0d2f2f55ecc2e6357afa943d313dc91ff6d49a3a7dbbff46b2b852db6ac11cb3d741e242730f22bb84ef99dea7d1eb8bf3d7976c00071452233a27bf5a1f29df4ad289bc2703f8ffd5cde48bb742d5ec42d98be1e969e4e213abbc1559962e3013c3137bfbb4b25636ea45f83eccf9fd585cc073722a2f6e975edf5e44efd2d3a79b2ff67a2be6a5a8b74bb489373a4d7292591abc45dd51a26f49f2d6b952976f7e90ff4a88726025e979fa80b08a384bdb14c466267687bcad5140abc2414506a93454b4723a8e1621f078fb5bee3ce3cef66ff6a467aa13fd26fa45de7be37e73641aaa274babb8af6e43e5a7e34e5ab4eaabb85a0c18163c6f3b8c550875747af8c3c969e42dcb5a21e0f29d59f71e711af685b7e7d138716aa16689a1b6ad31aa01e68bb1dacf732d05b59a7e597f170c89de449346a2b1ac8b1745bcac066cc2b3ca521f315fd4cb522864ee97eac90e5863da2207abba60a733399da3aca8c4b100c7d45d5394baecc3a085ade8bf948f8e0d165724e924156535600a6b8cf4bbf4eafc78f862787271692d3d8c239e66aafa90766d7475feda545a56e27551d63c53733730e7908e6eec1f91d783e001bc02c4854fb6012c3bf9344fe772a0ba24d67c6a9ca3f53745add89d5adf6fdff302f16967591755372e4ec841839e3b3d58f3f2b89fe9b4e0b9c5cf212ac1d9831ae2f35c6fe173828a453baf8db4b4baba52d36a3dbcfa4a1c895669530d47f9a06d7cdb404c6fd0ce0e7bbebb78cf163c819491dbac8acb22cbc626cec2578cb3710a9b3fc9d285d1648d8b659ef0321595821db901b7a9b8937331f14354bf03f61c43d1476ad06a964e2ca1b75cb06f17ef59559815548c67e9140e585b22a971f5cfed6f6d878a703c5756ee9f39471df60e234cd5054ba779510a9d845df1198a89f78834b5ad33707b34f253d703cbfffcaa58560293f0048b4e244269293b15fc56f865351f0fd1c16e7b4f2ea64598f9d73f85997f0a33ff1466ae146636d175a492e39d15f9cbab57a7f8dc7c29592560949317876f4eaf46f8d29f9c425256eb8bb16be487c37cb1ac7f2c8be5e2732488b6975619a2ade2c9f274c8c44f17252a26ddc684a2b10800fd28ccad4c83576c8e220ff66997a598bc0497deb26aeb987aa793cf5d372ca1eba6dea735c11c65d2c87be012bb8df87b764fff5bb86a6492c2d25c58e9842a8054ec4ab628ffa4adc4a41e1aa1a9fe452aa0313f94c29f9bba650ccf5ebfb91afd7871fee6f55ad78cb166cac7410913f1cbb1c22652170cd964455c372d02f3381013c1ba69d1c5f99b33e8bec48ca1a3b12f16b22bad548c8da0e8874cafc2485556c18974c9850a1863c3a635eec5b56f06f0a810108f741c084a55f4d9af16235d6fa512ece5e8ed0c9ebc0903236035536962ddaeddbbde6afb7a00a7c832c09301dd7798d38598102b78083051d9c8120fbd8054ea82a20b5fde32769894e06d6fc4cc0c5f7c18165dc1a01b38f16eef71fd075cdb3e7f8096bd68c75f1edaa45152488923f8719bb409330cfdfbc5843d2e26c2dce40108220f8cb3060bb6e4e3065bea1f43782f4d6e6367779e347607f16caad184de72daaa4fcad17518d07d3d2b45352b324ce0afe4f2693e49f3b4861c6e8bca0d3365334390f1b65762ad1efb1b7beebcb1583b18fd33400b90916c4d371016b386f66e4ccdd0209f426ed0a0bb2d87bb19ff6f1bb81200fb7d431900a10a5b39bf7ff993f3fb93f3fb93f37b24e7b786cb63dad7dfbcbbf2502b30d266225739ee79cd6a51d515bb2b9659c2c6903b5364f7ace6cb1aee61cc337000dd79c6d2aae6f978996909542eded7c496f7a8c8ebb2c83e9b05a4fdb43281b4d21f624c4207f8323cd13a83900d982648eb0fa5f22feadb0e79deb82ad4bf1e65dbe01a3078d60d7238fc4bf7dd3026288ba25ea9ee3f3a3fbbba383fd57c5490557a3144160796470b7e3ab9b81a1e1d42a1595e80cfd994dd58a7f80e1161648596b1306a895504b7034c9bbdc0b489fb06d3920d5f61e76ac23b7cbd65fd159411987235f2322d28635479f4d68fc490a92a20775d2ec575fe60bd5d00eb8df6886f8cc184b6d2b24e33af4e1fe2c6d04a0b5ec7b397695517e5fd2b51cf8ac4b1da6f9476e7f00fb1f82fca749ae670376658f32dd679a74ec7fbeaf9f4f15a04726bb103d36f0b5221c205a457d1a8fa44fead26d9af8bd3e24e9447bc125da39c87da46fc04ffaa12155c5d02905c377605d53dd0c7397a39ae245d8c5bde4fab23a056d5c202bbd8592cab19d0a41d9358a95147f90ad86a0fe6682b715ac4f0025fea340966531b855dd775493382684933609dace0890eb09b2957f3bdeb46022fc88c78597b9ca5fdda553d12d8d0bbac400077dda04d15bcc716134b79653f05a1a6d562faf237d1d542d4445b58902082f2478e08c0a990537c3f2bc5c4a95012a900421f2dc62f8e5fbe3f84fe4694a5a53349f9db16ca572f2e32a782fa66a51326e0b6ae825ff6571ca8fa43eb33e59e0f18dd7a7dc82af30e7e94bb3b60648fe5860d18d957bd8303e6ed252ac0c8fee15e0d98b3677a7706ccdb27b92b0346f646efc28079fb51a90081f86f134409e8ffa062e6872f862aed125805d24221d6feb2c26bd725e08df7a4d723922384ee117fbbfb8e9c587d690bf6de995891a6e793c944c475283506e0d3fc75b1a8fc6b66bf063c850c7f4b67bb50f53bd61bc279438bfcf5b29a8506d29f371e4937681fea02515960345ab2e9802569131a53a1e122ef224a8f98dd8d886ca56e19aa6fd614d12d59d1c29954e4adcc7b40826e5fbacfc964c369b734593df370a38d268f5a8e8788bd7de7240cd56fe8c37ed8b7d57b15d9f7a17b3a68be5b7f0a34fe1468fc29d0f8bf56a071c66fc7bc3c4e6fd3e4f3620c3a1db58a349c5a7f884cc319e13f4bd1bb81e4c1ca1ade3d4e69d8aeb65b6d287b76f8d30f8717a3e3e14fc3e3930b2a42309a12336dcfc0cfddc3cd7879a78dcbcc3b451b72f32e5cfe2956fff315faf315621fd861964e213e455b10665dfeffd0e3f5d9c278d2cd9a87eb8f13c593febf8c6ba70404e5d929fffcc242fa0ddc08c19838e036187e09d7da27a9e7cc335032f08e364af0f3cb89cbdb1e5a62ae639f50574cee3fa68f118b9316ea2175fa081addc3ca07163ff44f4f5e5c5d1bd378e7257e8c549d5eb13f5fe13f5fe13f5fe1ffdb9fd39782835fca673fa8aaa3354faaaaf5073eaa6a84ff360aeecf5053ffe7b28e2f4f0e8f87673fae611d57bf7b7af31ff3f2a936212652153deaf1d200fd100caff82535c234c37b08bacc0767b45454c6b374e1243e3071a748cc4b34de0c85bb44d84d441597e9a22e4a0c38b720612f1929ed8b7c3917253c3a072ddf3f7e445fbd50f3b8c827e974a93b500129b15a3a61ddeb2dd8a5eb2d8cd8a7dbf5681ff2610bb50f9f89de23d2014407259d3b76814e584e7b1647455ed5e532ae8b3242d5963287a8e4831387524fe83abde6c191de2c82a1fdf648c8516784555db99371695852cd2abfbb7eaccf2f1b0d147ebfe0552d6f1a2f45a3f7ed09afeaed184b1b4391966b4725751b170b8c0188770989498a15b6c150607ba6aa7456f7b06a2e81eaa4b3a9a88f9665998ae43c3f2d78e2ce6526b28528ab9da9a8b763acb65de4dba8b96cef64d574fcba6e37af337e2fcaf3455db54f640175b68b455d75da5aaf9981ad4843bee6699df22cfd271c6d60705ba1136cf6f5aa28b1b673a76d55f32cc3e95cc2dd6f1b1a2aeab5239ae8acee6965d0da667507d4e7c5adf8f73b2c1e42bcf35884678675b77fbbd3734b55f5ceda0e57dfa0500bd265256a5daa1ab5804c256a323bc5733a9013e86ad5d402d549671e534b26a44ab6e129ebb434593530ad479ae3ca5e9364906450b56c39e6b644e8cec05ecb55637b55ff4bc21cdbe1808c3be259763413f14d57835c449f1412d9fb89a9c1f41fc5c4a94bfc5974884ab94e0c5379bd75c473c990c73ccb24370d5411c421d55352fc3bf87fbb535d1455958e334146bb80cde856229b44d0279daafc1a98cd85988852e4b199123054330e69a9c742e44c63984a246c9b0183d1ed3935e4502221532527034b7bfad4068005bfbd830376bd8571beafb7802f6994921d60df63c180c945344f2dcd67a24cebaa5b2dc72a78144c13fe267ba006b165c03bd1a1e44cbd62c77b257c8a97c08729865fce0812f72839c05820775694e4582390c34040fdc6a49c5dd42bb294938d068f0f7097ccd7993d25b6d4f4630b2b034a1303ad6e364f7fb764ae1f804453a55ecc0d4af06adadf129bb82e20f2c8e1a8b55442a21f9ceef9847d1ffede72c076eefdd108560db1a46d156a93e8b2591d6091fefd6744bb36b2b4f3d94d0e635929dc420b7e4ea3888d3ca68b70374ecdaecbd2f84808d978a7856765ac3d9edb5102f6e14e90ecd5c78f7abfa7ee7ebba3f6faf21aaace16462baaa61d7697e6c94b5e41fba411c66645c18bb494df3f788ecb3888f088dcee6e14a65eb524b8d785863da797659efebe1448a30c257ddab1afb9a2831ca73f642b979578a572845122a7223c66b0fbaf0e5867bbc3be52dc298e336cb80662dbdb3411c505987d9260515846283e9d9f9d7eeb8fd33c092d5792173fd97e9b1f032ddbfcc42917ef43fd5b9b5a62c03a0d77526dc0ab908eb9118d8a5d8f6b4f2b3d06eea9a4f121e8d39327ca20fab73bdcd57dda4cbc4fab3acda786084e8a18e46112d49538e887fb61d20d1c5a6fdf9dc09b2acda7c1d377fd46db6064dff54e7cb2b2c7a74f5b96dc744e24c7df0d65530fe5df91135837bebb775f6edc272b3a86bb1c623aec5d765c30634c3d3130e71ad1d2025841894bc73cbe1934a6ed54c64b7f59c68e23f6824cc2a9eec28a6ae37eb4d5a907a8e7fac9bc7dee1779860c33ec458307b61be1b68b1aab6b7a9d5ea361a4734531909479abd029bbed9a062b7773f1be76a542c632fe459a89a319cfa77057c9be82ee09082cdd183eed7bed250c646955db3e9ec0b634a426765bbcc393ad23328afe667747a1396fb61f3f06c6df5fb1914dd7f64d909dce9b4a82174c58d74369f2367a9fbace4bd15b7f3bd7438299d6cf6996bdc9e71be16b52972e421d52903df78e4aaf21524becadda64b2aab6a9390b770172b4d05a8590ea8231fd2c0335e53cd4eed56f41f0b6d9864fc006d484daca902c611d4a5466d3a1050ecc5f611c65a709660746bf76603548ba70a169e4d5001a68a3c4711acd11295be832db1ed41b61c463c17d30731ed83f695048184c6f43a340ce6240fe361bb31a380939d50a9da44e5778914bd5d525f49f30e1275a47455d5ddb78581a705908a772d21ab24e92de76220a8644214630ac55bde91d8a1edd739a045e5ce7cad9d81674fbeca1b8a76274805403a84929d005e00cfb1e83e6b2479ec0cd95a691b4565e2b87bd24bf1a351744b0d6909891fe9b8e0aee7ab6a2ad46c61022a8cbd2f10e7f9f1655a7f767ccbd3f8d53fe871aa76c6074b2a9fdca0716cc01692ce6a28d0d51dc5e5f9e5ffde3e497cb11fe3b3a7a393c3dbe38396bb16181f453debc521d11f47c22b1404bcb659d665ec397df387567f53c83fff36a15f58db8a7b93f66f0056a198b80cd6afd43dc1f15f37141ebdda86fa1feaa2b0c44dfe85615b86d62d9cd2b5ec733791c5351ebe19c1f977509d76ac1cb4a84268423bc96c5a53bc02c4d849ad871cab3425e4e513b5ffc188a7abe584a32a6a8569f630da4ba68b50352e57f880590eafb11b63f33bd60655a73a48c5bfa73bea0cc97b1fd211dc1b7262d029fb1994d1f07819fe4798defd914cc2b31e03acf16333e1610fc21bb8fd8a24c0b8962ff29d8342bc63c3351a0d44cfbb217e2c7ca2336f6f82ddec7a6a07c18ab1fa1508bbc0f53e96745cc33a198cfee18bf060968db1047f89e6defb101dba379f2f4d666bcd2c133fdec1b9210947bfef65d33e9da08ac5f22bd5e88a6a0fede9785ff664b8c5dcca8691883956cdbd1dedb11b18c915560993a0c3f56c3a57b8c0da927a1d3accbd95258527fb1ac66dd9091d6cb6f1c2a5191bbd75bd0f736284fb0075c1261642232cf9e3d14e6ecafad123ab5757383a5afb21f53d30dcdf0419f54afd7c82cb7510c15fdc49c9fbe79751605c9f1c798756f16e524c2b5b8266c4decd19e56df557378b8635294273c9e7537471d4a84ea3c99582952d3f285226e92c096f7ba292a09af7833733d555b19ea99b64103751b217bf7da374b572d374e61ad1fa5079a5117f25e62cc11d56fc57e05d5cbaf96a2ff3bda55e1df73311f8bf27cc246aa2c95f4f737fdbdaf9122667f8f792da64579cfded429a694fdbbeefac3b82832c1f3077611188cfd5dbce7f30504b3c49147fd3a9550fe3c62a37e552fc72f646dc522ececb083bfb1b7a828427dd13b45475ae1a46ee34512d1167a24a7b14dabafdbc88d52a412a4fb8577bfd3df19c95ffddf2a95ce971d8b5a00152a04834cbe92ecff55b15ebff689b1b0ac72625832a5e7353cda01eba002bc83a276fcfcf4297ba219bebc4804d081b67ce51c900b6c4cc164c4a6f379fa544f68ae8addf9a8af723a8ab9a4b3c14fee642481bf2816cb0c6280494af5df2f191038c0fdfdeaf2a8ce2cb1c86e1599f5d3a7e49765700f9cd5a889fcb04cb37a3bcd5104c24a6dd950d1b17e584e2640dcb8837e0f87de57a57eec7ac6789615f19bbce213b993aadaf7ea8f3e2d1d38713f4d326bc0bc9061362b7221d952f6eb185ad3bbb728d35b5e0bf583977cce3ee0180f0c6bb3ab99d07fd605f6d677ea9b5bf736ad8e8558bc6397c0bddd33ce1221164e1b7357f528faaa422e5b593151a3d98ccd56062ccbb161172b450cc7244617ce077325559f9564b5bb8ec5834a4d8b1177543527000cb3b197e8be7f4f7f75b1458f0d00e1ab6e88f983ae00239be2c57d17fb76e24698304a21fc41f68060900f924f7951f2a97c9afef75294f7c74a3da5398a0e5f1459566c4b6e2ead5351755ccba7df65a31765317f5dfc561083278853b2b08fc60d6479e99c2f4409fcf6b18070a869916b8160a18b06ac03bdea020c72635e48d5937cd03a91a5f9409ad8f951e4b21791606c0c5852471306f86f25321163548c7ae0fc92cb381fff06abb02f1bac64593796a2774a4f22312baa06ec6db178d7781c8b65dd300a9aa8cda75b1801ce93cb269b292b36e6a08faeb99bb287239df837bc7b894493760bbd6d6ed9686b32afa62879b5ce68f482df00daedf854c9ffe443947bbed931b6cda061d4558c7f8367a1932f25c9d2214665a64861c6605905c28460914d532e4bf567c72ecccfeca570999c1fa4cfeea715a6d19673f75bb5acf1edeebb066234550d27685c01404020bb37a4b4259d252d4c39f85c54b5482e457609b901db267023eedf51ee74928a2ca1c63dfab6c8ef9f0cf037e2de3246fa2f170e9df97efc685f5805bcfb1ef02ac60de6abf6b0b7dfd8435cbc0bb797a4b0e3df898adc88aa01beb45f6a70f6dbb2aaafd4a5862ba7070d5e15f7a27c29240fb9b3cc4102bd784c0722e5495a0ac89a29c77f17440bfef98736cdddb6b74d68f08006fc73b93b952030b58293c573a39146a21d2a1420436989185962ebda03e0b8cc3203b2efaea9e68946793b8417fe08b421ab5c9d48bd2ee6f897c5e42be1aeeb92e7d5a428e7869ea03d6b1b181fc3e8ef0e23bb66801745799ae6375fbaff52f044df02db71b100408998fc639e56751a3b0e46f63349e04bb87b5aee3864f931f7557c7c9e58410d5c97015353e8c34ff274e26da96c05f3296a8e3e207f07a507ed9ba2498eff6efbd246c8eab9f535a51531ff8b9b376fa3ad945cd830b135d2e4cbedf25d99d6a215f6dccc1350d7ee45c26b2ea7d5b9383fbf1afdef372717bf743c76c4ce59568e3e1bba1ebbb055f0b3d1da025bbe72651b9de71702a2c76ec631afb96bb5cd1d022855f97f526a649060a31187753ab6bf8a244c139066138ad093a0eb77e74273a88a22d475eaf2de1149fad503d790de8ad43543a237c2b5a0265bdf203fc893488d12635ec733d615f605d28bb2cfa9126391292b3992fdd227b591834166439e4867dfed586ef355f1b33c30ebd5d094a3db1e07e46f4b33423f762916c635c8753d5b13671b359c0d9a2c23995f4446ee793033a00b31d33292fd50a60f8b8ae8dcd489b9ac3f2c2e386273287a3b14622797c4f382d5dfae73c229c04709023dfc539e615793301f1e7a9e9899f41e61874ae2bc83c2e678599622af8fd022cdca2aefd22c63459eddb3b160cb4a24f296d533c1e6fc465c664af5709defecd83b2cbb0347a388ddcdd278c6667cb1107985fd40fbb492b5643f93b4ac6a6a01027dfdfdaebcdf51e6716cc1e31b3e15ac2ee424507003761060f1e64e5c5d64a6d78566be986d37e71943c9a91c1c1653172c117951a331051f57228f41e6c79146c5858147d034bd1539934b8e18cf13d9452e6ed144a3507d15cbba4a13c1e222117d7d7caf869797c3b31f473f1d9ebe3981c351a9fad2e4a858ca89b103b607533eccea1904c3b8132ce679a76649c1787e5fcfd27ccaf85832f020ef2baa5ace3259823d4b2d121812045630651ec76922f29a67f2e4967992c90ee6ca82516e772a2a6d7213daec484d017b0372057452b21bd946ee8372839b17a5dc3e9eb3426ede12f2ed3be061b6c2f94ad1be53e02905ba78673c953d608450d45bf351f6d775144b3b3b6c38011ba619bf158ce32a102422f81ef39c4dd23c0151495a57acca8a5a3e3e6cbcac758dbca89d3ea74b512130abda0840d0b96c9214f22471c83886ba45043b7603096201e8497f25cf93629efe5324ac5a4e26e9fb3e798824528247f1edf5961cee7a2bb280f4d557113be6b5e8e7c55db7173148ab84dd757bfd5a196274bffe6b4f09749ff7def57f2bd2bc7bbd35d06e81ccd5afca6590577bc6ab9f406a1fb43a6054d9ad400a94dcee35ddb765fb6e35fd777fc14bd7de526dcecf42199e097a7a2cad4436418fcc1b710ff65c7585775863a1b9e0282ef77a4425049eab443068962612b05e9370c0ad86421d171dba4fbb33a9b5d2044de1f472e45155de6af06dbd55bbe9d57dabba79b7ef369123a82607072e6ee9b17129f88de3dfa19bd84d9674917b1a8d69c1b6e02321178bc3c9e538cd709eacc21d81f83b5951dc2c17f068047a1c0b36e1552dcabe7a73780c782dad182806c622e6fa6ceb52001e56f3d6066b7e97667a0699e1a47829980a18249f9cf97c096e907dbf8bd08accceb303ecdb3b81077f7f3567567a551f080147dbc079ac3a01c453ea096277bc027bcb0964c34443bfb4522f515a77f43b342d0039c3230975bd2ef382cd792d9f9b5971c7e63cbf67a0c695985e1e1c4b6bb65c44f240ef049b83cd2997a5590647e5df1befc5344711b1ba289c9d5eb7cb0e14efb7ec9aa7225635f65b11d554d46b1095b9ac1aa7757bde4168a3a755f377e7bb765a12a934e7a5362e56fe4f91dcdf1f81e0006d6d296e79664893b22cee4cdb2a52369ff74022687999bc54597a2332c345c81303d8982f2532948f36da29e2db4d3af9552eedd788cd10e349602bca44c8a763a07be3e5b4427b96c372eaec1a069d7290100873e15e1e48068f0aa619b00dcabdd515d8a1853a6f5c47f9919a0a61d69912396aef9db1b51a74a233056c3f50ffbace6672e203fc874ccd59a0c72dc266bf500744ce1e6cfd40fb7987f4823d2e5e96fcdefcc693f23a2ce6690d26c625517acbdb2acfe2090343ec5cb099285d3c47fcfb256c118bc3c3720a468715ddce07d90da0cd0fed77981da8ad0a433fbe1f8b7a592236578d353607faf9aee40bc6cdb488e75a81b1e0d29a806e29442551785acd84d27963ff89e91412ec23e30104a77301c769ee2422eaea711bb01b9b15b6c2d2aaa40b06def92d38c1353aa1151b7013d8e7b831fcea430de4345a79b0812161eead4fd9be7bcec3f95c2429af4576cfca651e3c524349e5f78d736b9e555ed8a9340fec7f326e5cfbf27f51c8319cf09745459f808c3685dd2042fa7290dbf0e77d3c720cbdf0aa0f09bb5abed3054128a4d8da575c4b554bb0e24cb2c799368006a70e308b049da0a6a308770d2ccd4294739e43626020e4f26d12d9aeba9f8f8b0cc21588b2368e34a0c6a6814414d55d8c27cb0ab3a2406f492180be9c29ea51a7eb35acaa3723648579cd32c12b89a599c8ab6529500824eb7a6beaa67dd16fb01c96dfaaf97c214ac56fa16c854b2a606767033905ebce8a85982c2570fcb6ac6a56e4a28752ab6ac6f1f981ae2a3e57ab70a7d76797295ee5802c2a3824aed39145b1bb3457579ed5229e29a1d37c5154604a762bca7b364ba73394dc804029bf5752337825817393271083fb7260df159e04db6e809d7f8005f8f5169de3e01244024ac0a4529a0124186922f47800656f4d47ef203ea2ff9e91ea9e8046413fc142e1388790eccbce376ac4b2f1a771807c8daeb549641bf7bb1bda06ca5c9d848f4bfcdbfbe00a5f15e1608808adad276f94fb68ed7b6631f5553a17c5b2fe39ad67aa0a79cb1291f17b57de659b7421d087a154746d895540c009de0af93d9ba2b9505112196c5e178ce78c57f7794c4e16a573f7601f92e6552d78026028dfce3b9ed6bd089df60ca5b6ac8b39571e1c1237a05f21e37159541576a441d38c0283be288bf98f22ef4e45fe22f7cc7cc3ee2a5388450bf5d7e7681c4b0ef70c0f00b6692af27e2e518b5fe90accc96dadb7d75b6061ae42d01218c8c51d7b5d16f3b41244d25e8aaac86e45c44a21413c246a4cf3dbe246a82c9176c2ae55bbff623bc92955824908db331539e9c321cdb5eea72c4d7833ef25c349aa1a6dbc349a16bdc75083a00c4a8a5cb0ef995a2b1ba8259df994071a8aaa4d3a4d6f84b2c3ecc37d6ef2cfb6ac5fcf440e0128a2c6a020c2d363c279b9cb6ebedbb21f77e8e02bedaab1ec9a286569bf221b1e722652076c802e62dea00ffba1a134e87963c1e7c021060683aa11f38e938e46a6df733d959a61f3dc93a3ab5543a3c4c9da9cdb936b047bd3584849d4b5e06e928e4559b17c31a77a1bf3e6b2b8288b659de6a26269cece8a44f47fab22c041b21b0c5b8251e4d0b9d820154d71144a0e8b6487c154739ef3298c019d9562ced3bc6271216950a0670063497ce9602d795a92175d88e405ceddb86e59fea5e48b5f64a3349f4225cca85a75e187da425039891244c92047ceb37b498e04683c6826a93a49b549322b42ae3755d4b7ea4e6d8612ef4950ca8a7c0a3ebaa06d113ae800f0fb108d842ea49fe689787f3ed1b3fc376271a2574d8153fe46eb5b2727afae3e91d8b918ffe665e395ff91afede2368d64f543d99d1034a7a82717c4996132af66a2126a5a156c309c6124a9d4a24c9074c5063b3be02c5e0d7676a6693d5b8efb7131dfc9f8ad281351efe44522b6114877c65931de49123116c9bf8ebfe3e2ebefbefb5a7cfb2f93ef9e3f17cff776bf137ffdd76fbe16dfc6df25cff9773bd8a8ff5bf5bf4efff55fb64ff776772de70a5b07db1cb1eb2d989b55a7d8421ae9ef7aab5ce6eb2bc15335ccebc2ad6a0f190c28f18403511da1c0b388ffa0b598e4998ee0798cece94461d245f223b6206abd19a85d3646f640456a837a4ab076a8b32fd05abc827fcd3482337227dfda33b9c2ca0de038ad24516eccf78c7e7da557b06f0888268073fe3e82c01145251c63af397f1fb6f2820236ccc1a0f3deb7f0924d5577e1e6a6d05b8ddf11484c71ac397fbf4f3e921e9ca6aac54225bd7ec517e63181a25cdc89aa767d5da1a0c812af40e7e3f7ac7d66dcf531a496ced4b46dce17b22e943b46447e875351b776086eb8790df663d0eb54d427f2b7edd68c8af59e3ec53ffa56e3b362e013d5f786a3cb354d45ad07b7a7ed8e0daa39b2dd1efe955b5db203354ff815b924d11d29875f9eaf2f7c7370327ce9eb9ee1dfb6587050e834862f7d3dac1eb0d198cc9739ebdb0fd4e83babf06a98a12c10faf0a99bd199abb3d09b8b20db0cc36541d95f090bd861daf9b5c149d504504d366e0ca71ea834fdf109d07aea4a33613d80350617f760ccefbb9da076457f845df0acbce1880674cbf523edd8e00541987c0d1eb28bbd1a07da3c26faebe3c7664579eb2abc751196866efe06173ece04cfc374cddd2ccd845ab19a8a249ecdf0e93f05fb9bc1c7de6ebcbdde4a44266a71bdf58e76d12748ea61c5c468fb2f858c3cb76defea340e35785afd9578e4b1b7d14567ed5df69bd88d7cef07b0e7eaee9af8ae154db5cf4eefb873d4e478dd67b94b2032624eb5a68d818f90ac62dc332c0c9914a2f20e508d12f0c9671f2da694f0f0cdd93fcece7f3e33666b6e2c6b70aa52354bb1acf8381327f3457d8f6267c54201f0c9af97a27e5d1419fdfefafcfc74747578f1e3c9d5e872f87fe4107bbbbb40ed6b896c5a191e12cd11b40de218737c5760a5a6b824345243f99616fa4af6928db5b731af2a51d6ca9fb8ef49ac645137d6fe82daba9967af4455f1a9a001da4dad40b4718c58e03596e8e97a0bc70097479e66cb52f821e3e5ae28cae211b428be178a97f20cc881659be4142bca4aec00ead2cf081095060451bbf41f446bf8090d6d288908ba8d9940da4d4d5e527a26b71468727929589296f5bd12911b55c558c4c55c5bd0efec302e47068e9ea710b2aa802058d82f9a5b55111b176559dc8904897e0a5f7dd3939a94903c831e06ab462cadd9544090b4f83ece2438f1f806240a6e570edd5cd6f7473661964f0643b99bfa475988c7c57cb104b349d7af03c307aa77dbb96baac2575fc1b2fb71b1cc6b4a59e367ea938263b458ba00c896020344bc866386c7a607f101f8fd585c08c97f9d978b19c700e4548c87ccb7dcab7401c9f69566045155499a5abd6f22e23451d6b588d9486fc544ab4da1113e07e37b682db7093bd618b1a7ed91d08832c7606da4bb2ecf13232829ea1e4a5494360966aaf707d53d1e42451eab05a59a9d1d4e8e5348db6444141ac7fa875189fa58c142cb595878e9b9d1975702d22a48c143a033542ac798e76c5a303e133c01bdda32af96e32a2ed331aa6623867142787ecf26cb122e1bccc0dca3bca8d3491aab087177b09b22bd5586e163f93b59e609cf9555b41d01ad806d4f100363b96055311720675e96b1a82226fad33e8610bc8338626565ae1e40e71b3be70df6df32b86df9f0540c7e155d0b0b26453915b5bedf388cf1ce6ddc118d195ba62717fb8331654c2b05e2122d42128e9b34be116861acee1258d7b16e9a3390d8f57fabb41fc1ce0ebb139d5bc1b2a2aa95c55d9aa53558b85a43e5c9ce9d41c2ea4229948768d776361370c88096b559be7cbd96d319e34c2d65814fa0b6c7046b66f4b8845b6a7a0321acdc7f0df5f2ba16a56d88f133d29a3c08cec42cbefec18e05abc88a0af4be4a3d9ae693a29c739cd79d4063eaba90eff6722eac51af5c625156b5bc66bca61b820404b4c329e00c50355b15456e30cd7ca9d99a9d1d9612eb96392f6f48979d8ae95793ebf5b03339cd2cbb07f37989944c4fa09d06b9b6bf67ace4fa50728306b16b5a6b5294a633c1e3993656037d3c2c17f366660236c72e3dcd756fe419b76f6e9ee862e795d366d3d8a9b60a00709535f0f11d8b349f5a782897d93d5ca6a2ae45ee3ea16aaf024eef0d53efc6da0d194c2e6a572fdf4984f010420ff08442da4142169f287e5193c5240eaff356d268568ea9a147431b8353a31d875c14eeda54f83cb5153cd1ab7039b127cde30299184ea5b951b49ee478556c2de7ad68c42f0341a5bc143f08dce546efe45d71771c6bb6b84d61ab23c933af6ae53db5c49af041abb78997d05ca23f9426f3bcd6a1b114fa44f2f0f0f5d0a2ac14954089a84539076593c57c0adf268eec44e96c703622a1f71e95534589c982c696a010491f68a3e25694f25e2f4409588a18446b13f7eabeaac55ccd6921f2a46245ae0cdd97f54c579f145956dc01e13bae4479cb95577e77af47c983146d6d96d512508d0ab5d57dde0b11abe0ea841525d5baa3886079edebd9127bea7edda36406348116663f004dfebe4ce39bec3e32f67c3e69e5dd238f7aa20206cb672b52e883c122c309e52624167bbfc8d238adb37b85b3f5294b5242be312aad95418e8d37c94ca5efd177729117bab04b8444242e887349b00a9dee8f02e27b5533ed88a0ac7bd45c6d803c701a936b93f4c9ad8b8493b48248c49a6a7559ae883c3db82bfe96f489a8cf3dff00bef5e3f329e6171bb7e09c76d7d8c6313bf7dc7358f5852901144f83f979c2290f5602d08244163cef0da8e1935a60847c5e6a37363838d29bf52591448b7b828c4f799a5775e0787cf8da04c2dcd4aece19e02d7c72701042e141e1e58377f342a3e2b6a9819e68fecdf0a711bbdee259297872cfc8672da468d4d74c8a27b0715082b5b495c45a29b6f5db8a5c8022f6ae737b6d3b15b93177423df8ac5896f61c40c92e899ea4603a299feaa341abb3655ea7993afb0637284968b028efdbc83d45994ed39c6784dbf7d8037288e04a3e2bc59d65d9ae5dbb389f4a30fe1fd84d14d696bb627dfc35d156512092571fa981ea8315d9e08c8848d0b77a0b1da7ae4e7955d9d1c78fec096ceca5e1743c34087bffcac351eaad9a98e9ab7915251c2c4f339f972f85e1a5fae6f9b7afbe42fb91ec53f30086671953198395eb499c5babc12206862c77a2530aeb2d354f2b3208e9c4657dadf3eda2a8455ea73c83154ae202100639b2be7b8c0d24e7934c88c6ee04ab9660748be6ac96cc70c0412e2949137409e369e689434ad1333ba216ecbea679a1ad485a1e11c62a81f45b085d3110abde29860378d3194f1807c35534cca1f71c2cfe1d61e09d80b8fac05ce5b745762bc055b27137b50732f806c276809580ec104547aa13b77734fb313e05fe655ec7d46f805c03e4806342455e2ab8394fba8157d9ea9bddc7ba52c9a0fcd86ace79e070741cf7ee6e40b45c599098f37b56d56996e185f2a99634577c60cc2b61fcd24d479942ce9a13bec98b3b75c3506d066cefbda81dcacb355431fc828537ff3db3022e4abcb8dcd45ac6d2bcc9ebd99a87b649e03cbfd4245673490fc6d2f754d48c6bce138f0d361a403e246591873a16e65ab7ed66686863ccf64a9e1cc004d2d72d8cf1584cc05f06e516aaed9a31fa841259cdebee939a216e9580fc939014a3e7bec30d41be23f25f148b2e84de7775200a5d5b76debbb401d6dc60744d51a9e34ad51961da10a511813709b94b7cd3b08d954181f00b4486252bee7273d9143ea5fa15146149b4899c2fafad644ca1d825667911bcccee5b6f6570a13c4928754fafa515637c1ac03a0fd30ab06dbd31ebc1165bad87dad6213e0d6a9fb480adf236341d188992d3e9548b7328a4d3460d26c103f816d910622d62c44c809c740fc1024855af738fb231187d5edc8a550836f84a2910f23065db534100ce97dead1adccaf192d8eeb803e6647e890de296c48e0edf598aae8cf61ef248767d3b0a8a6654d0e47f6ba8c05d06d9c14ccb6a266713b23168c16c4445f940c56a43143561381bab9ae0ccd1e51957865c529a8aacb2726965b14dc4d94e6bd98a582cb07422afbb09652fbf81e84c596a93965efe4aa71748d29440bc1b5f4b081d190d8b8e3e84322ee12b60104494041be849900c825450c9c32a218c2ec6e45602836eedcaac62e2f77c34d5d4a8b6d2889a66b050432cef03bbea5be05b229256ebf6d0b806b95138f20b5870c5e469198c0bab275a027b6615380e811d0709c9a4774d77e02fdc63921db2c7603a04cda6c1484362eee22d34a3da75c5e8d8d75b1d8021d0ae498ce9380b9e042ca456f0c45866d970155d59b6c6a03b3bec10040d567021b79c0a2fa29088560b96e1caabb748c16e89ef94250e140457023c73e52537cc8efb3479f8400742a66c4e6c31de43db5906f1a743f33a78d1a2e5d0898451e8262fc643f392f9d2082b5876ae90d578fbf7c7daca50896643abab98127928af95162c2996e0794bd4a555dfb778a5caf6037f32eb443921a16950da4904200db107ca5b78ae92f381c7af95148098da3109b07e423528fcd262595125005270657157d938778019ac019a83a4357d2a597e905780bf725d902977b552137a2293e969f46d566b5e04f91479128b566972206a8c9563600a059003c12ba5e65de9e47b4a872c678f4178fc535477d5ec5b51ead01528ca11098945e19af00500ba0974167b8680897c23f85301bfd3a00df04380ea58c490224be321a26375990a0cc5891ee618ec83d76c566449a5037341729b3bc1416f742f6ae04d78561550cdf8b393da115be6597a83ee6439afd35bc17efd59f09b577cf12b71dafa87b8bf9253788cb19c6ad39513ca45e5c75b555fd901d37f52f2533526d6262ade55abb109a7c690d7dad484a6025359bf8c1b545bd62fe8e9ed287d87b67b589924fd0a8609c6e9613c7be8c0558eb7ad479b70923c6cd098ae2c2f12e1e618863a6b42da132730682effe9eb97060e869a3efbdeb9b232c0dbc78fac6b7f054d53d7ad940ebad2761a9d625cf0808cffe7e3df2ec404eb7f6f2bc0e4ec2f349654d0dbedf598b29eafeab2c8a7b6b2fa4d6c2ba91f33ca0c0e9867bbadb98b27ea6d762cde751bd9a1067b67193d6f7fa141c88058b50ed94a986da0ec617597c2db457d482de9c62bc1aeb7f0be5f6f0d289764e3da61ce061dce4ebd0e2fd029148d9540ce6c106abf6f9e5f3580c576030ff68c699deb2967724f699347e563f58adf0830a1fe87b877629cca87a8bce1e3ec9e2d8a3b514e96193540000e0bd909aec3902a2ca735c4d50c02b06c43a8ce34e619cb520cec69f181f6afcd854874e409eb4dcb59bcacea620ef1191ab38c4cbe5e30154b6b3613d962b2449d01d8226462ca6bedb99bf38cdd15e50d86456dac5e5b04a515bb9b818593f2dc53d61610ec85bd2ceec4ad28edd8771ca3c8a081766857535862c9ca655ea773e1842561d5720183a83b0406662684a76711a73338324c12229f933ef436cc95de5d424715a1541a62fbe2c8c55dbe7227a9b3f08d7e77dcab85c0ae66d97c7283de88741768d00d65a46d9e8d4f7a346427ad2f860bfb6a49de8381e4e843c313baabb52a2f0c9cb9e1cb75c07bc87ed2746434452d3e054e2295588534967b8d6e973aeef89cbf97f813629c2e8abbeef388edfdb54715aaae478ba79f5192032b69576221280042f5803d796202aa9bcfa6a6032807cc4e8b7cfef83174d47ed6581b1edc3515267379fa943df155c9c1b08546c2538a0e90ac5a60a184b18e86cd50d8caa5f83aa042c504d77a1eddb9e040311b93ec9897426947a9fb0ae90a2e1b9a3d893cbe6775c9e39b349ff6acf01bf47cb3a2acb763d9cfad2855cc639139c6e369ee4605b008d755688b6e4f4edc287995a93fe9c9ca851452f66d9a2064980abd2c77eafe8edf6f663dae90848a9aa30fdde1f89c9026e4210f124bfe756befa9310d854830b511b152cfd25860b091607015ed3006976f336f31cbc3bade25beae5b770dce32e0bad2c4266ed42d9c44d8938f35997c73117de6a879ab020649aec0ad3dc49f891b16cf44bb7397132d2f703cae8107015e9036bc2a5c3b5e15126a5216d60d0342626c972216799ddda377d4ef4b612ee0ce8e32f1bf13780f95c54bc22c949b48c984860a6d39447504a5ee7201f48b780f21c264718af13c8c75255a25db80ef9287061d8f991687fc3d1a2d2963188b5d3a4a64a03a9da749922953f48c9753616da1a93d0ff09fc6576c922de7f3e23de6fec73c89d87f3f606dbb06afe2964007c48e03b16df39100bbd57259cf50c18712e9524e1f826e409830b4f35e5a23c07a26ee9b4815b57610268888850da468951f4a47ecee026a2aad80c346e7ad0a4909dec13863e1868a97f0430232eaac41765ddf2b9cc706c4d958c1b47dc6ac5942982f7e0c76f47920d9f6e9d355a8c997eea2b4b26985136075ec121a31338204b1a2fe300e8617f342679a8e98c91f6f02554036ea0ecdf94f735079992761a94ee5b4ba1210584da82c2d264558c4f4a053511fe394b595625a9dfcbee41914bde2694e5b91bc2f24df588441ff4d7e0ea0bf11d286799c2d13217b7d81a1581048ff2120d3f28bb298abef6935ccb334379dc85b5e4ec5b110486992f3467a90b49dc2a161aaaf613e29481188cc64272f4a21fe091319a298199a5dd64529d464225617a62cadfebd2af29f74c0e5fc4d250c6b31157520755b84719392a57a9e2ad23599104f129dbee5aad8288ba8394f8c858b64d85ff60c5899c60a2ce72e10e490a5436ee850ff09eea704cab64da58e72bbad4555bf6a04fab8ce4174886580f8f722f6bc871129f02b614f2a81d1fa497d758de4aff608089e6c6cba3a4bfee6a2b1157c0e797061d67e60b9ca13821881d603cd0c28178a4908a96588ddb44b518371c4d776c72e05557ef124313ba62aab65cb5f242c6b92fc37da3198f5a7edd8a42cfe09fab90f0f76a79045564cdf04ae2d26eed40bd6599a9c2a5deccbf0a2465b43c115eb446adc5e1f0932da546b544c82a9d610585ef42bb54ee573f2f429cdda65129cb240ce28323d88aa05393fd5c4e4dfc4443e10dfd6191669f57395a9c46dac0ecd91dc797b8ceb723e6207ea532578e6d5929f9c3aca03ec44270aafbc068df21e858719bf153f73d0225163454fdd2f6b387290bcc2300b4f6c7b6af185ef20a1d39c615a047dd8299ddc4bb12ce1d1b7ef1c78a2ae4c06d9d68864866cab422e3c06b1bb001bb1e0c557935671fbfa2a4063d7956f6f3050ccf31fee17bcaa8679da82951bf2d1cd7b9fc3dda2bda6fabd75f230473a5c9f83d82053af89070ecf2b5076aa8f7eea59da3c71ef9d0e9b686a235221190043be6fb2139203cd33d8a1f0e8b07e2a605f5fe4b7fdb3f3e393d1c9d94f4adab73034c2f516fbf8d13ed0fd3bd9cff5d62fc552b23518a342273103be098490bf2f85e4a39075522a48923b08649d96c6185c030e2c9742f11f10ea20d589c418667333e25288855cde2b79088a3eb99984e62d3148b51685c82f7687fa30207b2d594ec1905ccefd59e9b980061a49449a960edc94e5e0ee0ee890ffced471385017c6f1b2d43eb812d04ccb3e4d5af43987d339d2110450564ee65ce4cca46cec34e0d9c1c59f071ec727af2f4e8e0eaf86e767ece7c38bb3e1d98f8306b0e8b321138434674a4c2e795d31e3b76951b2eb2df615bbde82640bc65b1f8d78d25c7b56df8a12b17931d1db1fc3f6f7d92f361ee7247dafc253e609c0193d72093b120cf3e2aedf92444a5dd1ce4ca392e095746f249a31d1dd6edef9503c9c15d7f7934e0762af763bbfa84b6422ccb00af430ac6b16d5b3f7698e28d2e40d2b59877d85199f5351e910276c992bb301485037e1b18015577df72ae0f9a978e9d091b6a470aec6825c0c76550083ad0448c0174c0bc6ef24c3b5ac54377219bf0ef3ba2caa05e64df670fcafe0db2e5090661c359222ae06d8838eb5797777d7471e675af2c5ecf70cc26eca8a3ba5e071bdc3935b9ec722d9b1739cd5f3ec7fe99fdb6acb3a6d2ec23ef078ac7bdb2be5453e5ab5d895effdaa868df4ad5403f2f4a9cdd84afb00ce1d73711ef39afba1d2164555a5e34cc86b56bdb25ae8052f2be14c06fbe86e34881b772aad34e5412f52280fa6ad194c4eace25c2111607f40c4741ab503ebafdaca2f42546c7acfbfb7d7bc4b9719b1bddd1e06a40e9676fc49c354bb3d30135266e7cac2dcaf99e669dded75a864eb3f9dfcf994ed717173c4f6f6dc0df2cbafb78e30c383fb621b7d0dc1f3261c545a81375e9a4f07f878fdfbe5f9591f75b9e9e41e9826772bbecc8b0101bbb54e3dcda770e5cc7df3eee15b678077ce749a9d3c7ddaecd9c465f629d0bfb1edbdcd66dc1af36dc3abd58644dcdbd62c771095cea38cc8e9030902196ed81f8daa7826e6bc8f6f5cd356487ef7087198ee0d24619050fde66c787ed6910fb457303cbb3ab978717874d2716309e2fce0d0fa7297dfa9d4c8eeb9f6e77c41e6e11f5958f9e3d782fea9ee679553bb3e5c9c5fe8415b7594dea336e3d5f95d6e15ea4ed8ddf3bb5ce7e3300d8ec5e24a696175cee0f697cfaf8c998e1d4535d861054316b75a68852e613038131a4c633f2adfb7fd0c5a652589f8cb1e39424c96debc4d23d3dd5bac62a45e24398955780ce0fa196d3655590cdcf4b5c68ea331b2d5a340491028cc46f89b4dceb22e701b5773ef7a790e48ade8d58fa3ec4d9f6cb32e6acaff9afbb9c1c0be74189b8742e416d6452a349a85431b384137f1a92adab491df93ac153558de8a1f365c19caf856edaa9c2c5e4d94ec99b9450a4828d7a2ba6b03dc2f37ef38133c48049b68868b8cc78ea1cefa4e5523a7db5cdc355e92e0dd5751ab3dfa5861931b715f99d2c06b12b88878fb2b511b6853edf59e12946dffa4e39953d8704420d8e851ab0143076d67a8a4c4ee313227b5495b3081cf99eccac15766aff70120642caa34a818222dfda748a0e60b1ed74579dfad84485c2fa95cdc35df1ea84685b7a0e89374f91afe8dd4b33a00057a6376c046f40563dfb30f0f6cc0469c84581fc5b2dab81f2b4c7f5114345528fd2c2bc66e7fd458d0513b4a3a7a14d371121c0705f5483f55a4dcf92eab26ee48e8883160a3647fede30a051ab19231c47b112f6b019b063ca41c47f41b9f034d4486240b2acc4823521068b61c63059168fb73d2d42b7469037f3f9cdf945a082daa4138f8acbc351cf45be37d1ea1664c370b50139b100d23ee5c44792cbfeb6de7fddfbdad8659158549703ce27df3d3aba6d84a52937ef12a033337ce8489f43be27df79bd760d210a08c787fd2a0555d74482780ec2ea422e3792c8a49e3c6af30bc52974d99ad06fa8d7013237f9e91cf59ba8bec45767715f7ddc4bf0ef1e601987b051e0f62a4fd1f0c6495775b79bf0a5fd347809c5c85cd8e37e27df2a1010ca4acff4701c6ea31226713223a7d1f941b7043eb7e61186ae2c3c7c391d7c71f0c4b13c82a8828004c625cb0d0ce5023de873fffa743cd4499fda00dd3e680b10128285e90902c0e41cd13787f5e94c51caa38748f0f14c0402deaeab592a67ab0f29a9775ca334992bae932435c5e3a99c0c88718090f06ef6a3bb7ee87070355911db2d7eba36598c3308497161cc0599d47b955aa82c45b702a766b573c9ffa40bc178e3e6edafdd588c546bcef7ea304db5821447f47235f0440ca80c6730937d0a20dd868dc203a11d90ee995c20f0142934a7e7dd2d2c367dae43af86e1b7b6c42e242725543464cd2291163ffee5a22422a4fdf3cb10b9588f0db9c038121df72b1ebf5dc8b6c4bc742b499db1f8062c05cd840c646de1ee495067a5d4f9faabffa7e15080a4433e100c2b8101815bb0af4e05690ed3f3cb8370b0ceddf8bd880589846ed9ac5c0360c980bcde69119f862cf01eba449879c5e9a0c58038c54ee589178922eec030c0d580726d231b88a26db356871a07f91b44214ef0d58f39e79103768834fef9d5422cf57a82b00f34b09427633fb4a8d0011321a5f750096bf81eb86239071bb7cfa943d69dc5beaf3d0ecbac966a7f9a4684804e4c77e5d6498dbd84b04c04c4691cd153592bb74ad40bbcf256319f80e9a998eb273c0371b942d3027f87dc6e7024c0758916bf798903e065a14ca280d4db79ff7a0a16b07108c3ded62534feaaf4c95bd4a11dd717c545cf149a3981d7898bcd51d43bd73e47594d507cd2e09f0cf1799a8c5803df121875ef4d52f5e88256d7ded563c691b90e61b73828fe202f5dbe753caad6f4ee0dd5382215f1b2f5f4272e3e78ec93a3e2fae197be375217633072d26eeed6d50add53080ef9a3e7b1e223f6abe3f41944d06a0186fb11aadbaa7d4865bbdf3598760db69bd002b6a5f22ca300dbc83093390e4996ac226d9bc01fde1d2c41bdd23979d6dbd49adb2b08df9e10d2edc1a8e260c6f61ee73d17e8fdbd894167ab79d31a1534a739e19baa4811325aa6fd2322a3fd355f14a9453414333d9526be740582930760831cb5ac18cba7dddc5d3a7ea2faaf9fff8d161b71b2610b2952263645de3b88903193899f13cc984c2e52abf3879610074b8e74f583a1480f31e917d3424c941f0ebc78fd4ae5ffed71df170dd1e84a05266f9236eb2a9ebe215f677257dc89afe1144ea647e84d4f4a670ddd63c717c856c3b4ac00714a5a115205500cf2b193f2c833090eb1ee7882236ec49132fd66e85cc915c152700be1367870ef84402dd324f242e1449c71335b8f703e388e1214ba667c4df861da8c86a21cba31d4f366a91263432e653444383fc7864a9e7aad5b6d38cf665ead0990452f6932604b1bd35cdc17c02bdc7dd9ba0604937f266f24568e5af5b69e5b3c24e5c4e5011cba159d3a32087e180b1456ac68488ec47df29205defbbedb565dc0a51a545a86dd6723fe939bb30007d7b7b4ca1e784b2aca3f5b402fee7520c66bd9b089b431403feb79a6e507bdf0bc092da3f795dad5129b8f6341619c4eb149cddfda0b2b0668dc8ef845983b7f6a17de3249fa1343ba62c5ce81c64e5c0a8706d34fb899c7fb3ca830bd0f8c9fdf2d080f97518cf45c9cd456f221e751f56c3e9b96ea55d77f45e3345b1ab377cfa348c4200a95b0cd269da216837b5c69cda2c9949cdcd49db174abaee789f798f971249d3878b52bd9bd1818f27351dca51cb0fd453d54462c495b1cdf1b7ab161214f349906e52a5a0aa687941a1371bb230d11ec5d5a0ddc1b8398526c55b0a9ea833532048bf14d9ad28db0e09dd92e536b8f8186fac0baca8bb492b046b6fd0801c84b27171311fa7b9b0f7abf23b8856aa9dba0e352bb264c07cdd0e284006fe66f8d292f5d8faa11794133d4130a22f0575658598a7f4e5795194cad75b1f61cb8e79b4ea974109ccf74bf7b77b3579ee540ded46782dcc844cf381604d979f052a1b88069a67179408ac069d75e2814de403cdc5b5fb590ba7d2e7bb5b93fe36f1ba0602cf308b248c37e927c094d9523ff6f86a5ac60ee5f3a25e0dca76aa4f5140041e367a661b89582b4cc1e00380a191d41f14136f26166a2ad31f2f1a5aa1de5ea1dade5008d438f09582098868123c6c52f2079c76a8f715f88c560fcb1cf4c661f0508fceadc5dc570bd4624ee243362dacc96d69480fdc67147a0f75b14266b0ea716c7d1ecd03294774beaf675f1e7ac1ed95ab59f92a6eb498566e6d6314ce5c34fee516b8c9ab0e07b8ef419cfcb84fd0ce1f4bf19398ba1b68925cccb0094e533d11d41632abdd64b3a84d7d0b5185516d753b6c40ccbf3f5bc4f24dab884581a7853bf030968fad92f81613209f51f28291ca8ce017d4942642b96c845a32a2d8f4f9101bc83a649e1c08e770bd267a379e80debad4f13cf8145f3b7b0cbaaf887debbadb85aa5c6f9de490ea589422c1c0f0db764f95afbe32881c2bf77e34a0490a51993803dce87c4b3111a5c8639d8d4fa7d917b7a254d9c359b28448ab3918758363f132cf4455d918ad2aae6a5c242a3e38e63e12710d4ecb79ba5866bc364ed57242fb6c815106202f3ccf595a554ba194ca8d5c979fcc718100d5461b31dca3b6e6513f038c23d6b0bff7751f3436946681cfd02d4cdf3de07d3f7e24bd996be6b5f6c258752b27a6152e85f4424dc70cc1a2797747e2ab5c27456c1f0da73296bda5e3b98e3654f86d131111d9b7b2844151816b0a63739c387e9b1db42be8783a05b8f8072d7dbdd53dbcf39939df694f9d2f4088f2007c6b0ee75d4308aaabfa526fba49a50f7078209eac6d2aea802925f98aa77aeeb8f47aafb8895ee64b5599b2ead1bbe39b2dd9bea366436bdfa36b11859a5fbd210b7cb8f685ac8d126b62e1e4535e0b3bbe4b5be325b54d9bcfe95bb2458532ef5207e44932ceecdaf59db235887094184532f6f0ce79a8edaa4858b9ae9d5f2f7cbfec8ffe6f5591078214991df0577ced47dac2935eefc549eafd310e9c413fcd071a8fea0b3a34863b5ce3cbb891c762b8e7cd9c1557bb18ae1e61bdd360b0771b817875f7eb7cfbd69cf3eace37f1f1a3a3a832f90aae1b509d1919f7d1ae657fd96b712ea357a2e157f67399d602e3293ad2826ab930ef8209ecd9b5b523a6aaf851be6d956e50e080cd80fb90db20df49fce447e053b151c1099e0a2990bd530f66c70ed771e52f231bb1cfd962db007618fef2b659e490e4178a7e4eeb998e72d915b8f244fd2644956a92e89d8474187627aeb7b040c78452f2ccba5094a921e821dc55c808d18c8970e38cd79f8baae253c1be3a609debebbcc3bec25038ba20d0a4aa797cc30e543df8b57f4d53b791ca0d3f4458d9067e88588f848a235fc9bd82305d60b57255acb5855f651d48acd81b72796dc1e71bd01bdbfab0b55e8b1b67cf3760dfc0d8be616d8dd4b5f7f533cdd803366eb0bd280d50fbdb75debd6132708c88229f10f1f65283a26ff017b442371b11328c6e9aa8b7ee46cb7237b3a576a4a761f073f66715fce10ce9d96d0a817adf545bf5ebff5910458f9d461862640803f1892d0ab47eb134146903e4a9aca801f8add06def44e3745d896160ee6df2c3584b075d0164e8be301bb84824e8aef4e1c12925376a953749607a8e4789d3e7232e22f34d7b9ba6c32d26c8f6096be9ec31379bb5440908241444a95efba34e1ef490ebff0aa41180b04fd2b9ac461bab10cec686bc3155cec40dc50cc50db1672f5105509113c62b880f16a416f9aac6fc3c2bccff1aa34b3c19a886d2b3b5968c9e3ddbad15a92cb3faaddb5f533a43138bad31ba1c59ac07fd05d01d5b85d97086a0deb80d58a0299d8fdd63b7d8a0b7b8c530cdfc08d84b82ad4b750c32d8c40bbc476ba8109134acb2ad02c1308dad2211603e7dca42df950ebb218ba21309b6ab8ab9a0c1457449bb54cb5401d1bc9c90fba56fd3c175123978c71741f93229b217ff0573c4b0a96b26f910306cb57bfbf4297b62164124a82d08bf31efcf893eabb5304471e2dd6b50b5a4612e4c2167e30506d977a0b4bb1bb1bdddddde2aebd8b64bf0dfcb6ab94b71383874f65aad971f7f2654013431a932feeaaa7d6cc1a32c939b3e7901a3648cbf5ad960a0ee2eaf81456a3ddb6f8bc1a8874a6d3caf36d1762a79af4a64938e8753add8da20fd56b4aa2088df88806f16fea7684d5f1cd44008722a9a24f66fb88ff53ddfe00faeacbc313f6dcdbd66876df4d3b5e6e2115d73c800fa09cd68d2edc9c30bda447f190ca322289b98d6a67f2f5eb2443f98b2adc89f7456224e0bac4f9ec0df6d906dccbd45d54e1aac6188d82aa6887d9275fb4a826373b281d06c2c606a85cad40d69764a1fad22d657d841dd5a87389f5a5a49acb7d0e08441183b3f3725ca035c7b9baa6c1d294f5802f8ed1b3e6b1d9a886bffeb0b62131dcc1d143477c64eda8c353e7e647eb65c37e881d1fb2a22d9c8941de219ae3baac73aecfb400481dfaa22a71858fe56a4b07db6074e1c45f58a364dae3c9b12dc21137f00804341897aaee46be66ce07e708918a61711138c444c58223a4014326632c1a35be2e919fee45843f0a6937496d77c56151efed1ceaf4bc6f1b92c3a81ce5f3ada10e6b811529476ef037920fcd39ce7751a937511ed71c3abe953689927648c8f1f99b7625bd88bd8bfb8c4ce235a7686c795b5021adf376f7e8cd1a8c7629ae6904401ac4daeb7fe72bdc5e2192f792c5162a7e90fe54e42dd1eba6ff20ae5cbf958941de4aa9ca2dd06f9434fd256761e3b0a353edbf7d072d6928de0357fad456414988c678846698e20cd05b547bc8afa11a323d172fd663639e7479918b63f870f41eb41cf6d180dc6ac69430b120911a269ebe22c15ea5b4c3c1094d373c7328f90757bf6836c82caac8af9422144da4e0297fdf9d6c53abe058cede4c9c1015daa63e6676a35853a336e337c1cd83959cb3bd9af21c1f7fdc61569bc51135de968c6f329403e9dc1d3a74e9f4f9fb6cda871ca9f88b5ec15fcf8918ce57cf6a61cb1ef3c04f6499d5c6f21090654f30013ec2c16591a638a535ed762be908d6d1e9f9c2631667921977c9b26226169e299faf1ac84440e2a034905d675092b26c83dda49a6f8c2810616c4b3cae91e72e33bb40818f5ddf18ae4171a0b985a2d72965683ebeb3c243340b7accf7e5f28987cfc48c12462ffea1dc8aaba5f74df0d4caedf7dda854d3ad4380fd7e2154f45100bd9346939c13fe4c4dc373200dadeb3a7c5b604d29b3246f98ab5756090a80e4f4cd7b9da382d20d561e82cfa735acf0c4de1f4181194697f6e20c35244a409aab016ef133a9f56468207a320d9a944ab5e809ecf033881ae1db760d24bc4baa05e85200463bf4f46df0e59a1d77b842ea841943b7c6588400f93e66b75453a1f3b1c57d38d24629072e34b79938008ab167343c65126c6b20530e6fe2739a18c5a781ab5183376db86b5cd7a0d3bd2c61cafe61b5aad4fb58b461b41ede308baa57f2465bc76ff56d1c78f111b6902990c18a28f1b8e332e79fcc508e355e6c469db342da52b8b0326c22182f72168c4479044c888cfe5ef52cf602f4ddeeebe436eeb2f9d861b40009d9b4941a6ee52f00cfe88491458091db41a74af6afa56a324d78e35b1a7e0683392d32e7bc635a0c424abb69a1ec8d498f3443d8e9503de34a4bfddea804af8864c9bea554da3b737a84f65d6833db3f6ec3cd3e5f651f25d82907f68082de423ecb216a6eb9e526be15ba690be5b1a38bd5bf3f29aaaf00b8f8fdc4877d3dc6449061071d315e5e01f8fdefe5cdc5d90fd701e4cd306e7d3dba796dfb832da5cd5f26188cc954212ceaeb220113973e951fbc3a003928fe01297eb77b119f1020b15b4033c466d242d4cd20c6a4a1eac61525e2105c9fee60a460299ae3ca22ddc2b4414c12e9d43771a079bb20386fe1fef0296b07ae5c6b653d9931de9f0b768d1e9c7d6cbc5dd8aacc0805203e644d8f571481c4db3bddae8acf86a1c71d09790ef8e73a3715b78081a4afbc3b9a1ce4854b340825c529a262e4b1f8a3fe07503f4d180a897fb69120e74800dbfc810233a867fda8aca23a9aaabf3bbfc2f7b8f48a7758ef9f9eb3406ede129bf171b598d87dab5da8f872a43b46ffc28effb8297a01cae4b9e57dcb511689a9adbd44351c80cbfcdc09c0ec90e18fdb94febe164d8819a955346260848dbfc5a63aa1eda83c73a9438789dccd4b4eef622ebade0b93fac1e7f33ff130d606da99fd8f701578f8133555f74e87b4b04a60914175171d394a8afc4bc28ef9b3e442d60eb34688557a75617c3623b484447130fb91d9948e31f1e42f131da00b90d66ef8cba5822e94b51777b2e3c2ad4a16d1ff556c8daaff8c2abed65fa69cfece3b4aad24ce4b1f8a12c7812f3aaf63818d5b589b04ea1d4797f22b539aef08036efa3cbadf688a58aefcfc890ed758acebd6321240646fb93baf06c1ffa3a5bf87291f05a602264b5445eb13b6112532762518a18dd80fd8154d2e15cbcafd99cff56943a69759fd808b8eb773d4e0fd8aadd09bd3ea1debeec663a7dfe817be98ef3c5b7d2e9dedf49ac4a53857bcd4991730b949b9853d7217b5488814676301d63809af2b8b7d03e57c77410925852dd56c79d07b00675dc69d63529c84c5d956ccce2348236060154425c3a1c4a4e6d80f3d561b355fa0385b3eca3a9b9cafbb1c53a3f6b6323e0390265cecac26d1b8968e226551668e9a49f893f35f14cdc08a61f93430da67759651b14f75b03d16fd801b29612983e2ded4c3f98cb4af970f912f8b84f8cb81f6109d4a0a49cd7d971e5ac1a06404177e19e25524c62c884a418275e270e89d236b0785f97dc23dd02e7aa33abe3e730f140cbc3f9cad5e4684f8ae8f2f0c38050828440dc6845a5e0c9cad43cc4965d276fd7595d4840041a30c1ecb82400dd36bd5637fa903c3b18018ee0b14096a1aeab5c1898393f66130d8e5391f12d373029cab9713dd15d6370fe90cf9caed134fbc2ed18785bbade5f8e3e3693507ef7c8befb1463d8915a1204619fce00d72129691b1ca1b29102127c713dabc97bb5915f23d4f12df1b4401a0b3d5347b2f9581e705b340e902de78a0dbd5355e0d48491a6b4849ed1e33d22d79eb0873ba1fed879c344b5e1e54fd2c9c439335c74281401bd76e1145bfecd83befe887b871db7df3a2c0fdcb9662e31acda9e12cbbf4458bfe50a7d814bfbd9b750113fe4163a91b257e72f570ca8a478553bf7990c882b3cde554baf9dd60f9b3dadb7a9f7b0bac0f805a27bedb546f782c15148cdf2a2b659f345c2889480c1a4b58bc2faa7d50fc8d18c3381212fba9b5c66730cafcb629e56d0bf6469367ee8e7c5ad3877a80eab7f4eae8a0ba8e0804a5d5c0888ebe027cac0ce92a36209c2b35d529429b962e0ae1b68bb9ba599605dac4a08d29048c8d387431b4fbc7770c0020b90ff7df5159da9553736ac2dcc4a515c0fa304d5937a79380f476ae88986c90efdcda1fcc22c5ea6e45fba96da233b319b10aca1e986b6a33db01034eb28ac44c88cba10a544a5575696d9556da9b433d21d3afb1cdc8ed500fbb0096036e7e480a6332f673e0e52e3cdf4d09a41e7eee3c25840c835e20dd1978b1b036d1cdb048f4c76803310358c4a10c2f0001282f5d2f4406357b4ee03a7e3754f2aa268d268b620fc7b76efcd38b00b816d6b2e91482edc504c9f48b894222ecac46ecf46c09386832c05ee84df6ca339350815973d75a3ce90789f44bee4b91d944ed2c5a0f81785ec8dd00a4a75dac80d44625c9061af0a435bf9bef4e6a0c2a35764749de3e7114db543a6dfb02d29500b5fa867b0d131f910d71e623b4828c1be06ef827fbb3549d4b48088dbada90212a96e4c36e65198352c180bcd2306b1d798c7374ad5934e268d9c9eb117b28790dc7180dcf669675f8805bec3deb7ae25e82d4e934ded2f4d0f07754ace4e8032e970516459419449e2fda2286bf6a1550b1e314f7534ccebb2a81668ded4a84ca4b81115a94654161b311a7bcb09c51ab56ad7d7050c63bc5a5d256a0d9bc11ef6b7a2ad74aeb66251a6f21b9b94c59c75a6255fcc7ecf76329e4f977c2a76a0185ddb779e3d61cfbee47fd7e5757e542ceecb743aab01245fa5715954c5a4664745b928300c4a9f1d6619834a954406a2bc15495f363e4d6391572201ed3bda1b1f2e40caac4a22f613aa0fd8f3feaec4b9825d6fa93249ca4310d839bf07c27f5909d929dc7c88eb2adec76251b334c7549aa9dc4eeb9aa3bae9b35f541fc5b8e669ce388b8bc53dc4049e09324bc66b36abebc56067e7eeeeaecf61a2fda29cee6458a1da391d1e9d9c5d9e6c3fefefca86f27f572f8797ece8fcf8840d2fd9eb8bf39f86c727c7ecfc8c1d9eb16787976c78f98cfd707839bc8cd8cfc3ab97e76faed8cf871717876757c3934b767ec18ececf8e8757c3f3b34b76fe821d9efd227bfdc7f0ec386227c3ab972717ece43f5e5f9c5c42e5e1abd7a7c393e3880dcf8e4edf1c0fcf7e34bd9e0e5f0daf0e6547b2135d5376b66abcabe1d5e949c45e0cafcee4102fce2fd8217b7d7871353c7a737a78c15ebfb9787d7e7912c97e5e9d5c1cbd3c3cbb3afce17478f58becebecfc6c7b78f6e26278f6e3c9ab93b3abbede954b21e869d343d6bb3d294a262f6e3a4963a6c1994d8b5b51e6693e650b51424cce22af648f3c4f5896ced31a40ae2210a5cf59d6faa2e0cf9eed680db7d2a5520c6df4ab5abb6daa285308f5fbe3c7401b123657a784a82296b203b617b19c267830392152f66f2cdf676e66082707cedb94faf0988e17f282540da5c71ad314d4b554115bf47aac7ebb0043eeb78b77940e08bdf77508f5ab65b7c421dcd74646c452ea655d2fce512aaacda5528c47f3bf95fc495b2da9cf27ef6b9103b438964bb44b40fda63b1e4be431609d673bcfd041b50356b079bd2db7a333601de2bdb1037eac8d3ebd29ce453d2b9201ebbc3ebfbc22b527ea0197ab726dc000e104160d139ae18c07de0aa04c898c07de4ce8568254e65262e3b21186d22f93e4dea2008cac093f15e1908662242118b195ae03878e010f959ab6433aef90623d0e06eb813f496955f37a591d15092d575fdd4e74ba24437aaa58543aaaa2d985052f2b7198274733810770616760b6a3b5920df655b9d6c49652d3d3f4191833fd5abcafbbbd7e3d13392134c745727f457d133cf6cff4030a3c98a06d43a4253a2c575936440fd0481fbd284bea28658abc037b6d0a3ae1ea6d07d8a8b8f62c1b2df4f2d801d37fee37b6c34ad84093669b07f2c6f87bdee0b994a1209d1afbdb01fb7a77d773695d7b5baeb70c5c495aa55ac6b1a8aac9321bb00b118bf456244c0d0081ecb575211dba3557c7133f83172e03d3cb8381a28bbcbb1dc9d47756d6809b52757cdfdd0d168ae566f2e007a693c1d8fc091d58a1e7af426fd3f736ce5fe5b9dc148bb0babb58f44d9b33d747f3a1c706b443a71ee694efb849e5d7f0b19687b1b82496e8e185d069c8cd84e9f7ee04ffa566d2ea1351c4c29756852bc80dd371c9211e6b679943757d218938eb2ecd93e2aed90f699c1789d876da23a6b448fc7aebfa1a47d022f649b1cc1336cd8a31c89924ed95174caf622179a4246275c126e97bf8c9b85ad1a428afaf73302d12f96d5a1639b034597a23e0adab14759d2fe6bf41c6b09d058f6f242303e0a2e78d3e50d7f9f575fea2289978cfe78b4c0caeaf73c517a9d180276ab4ececdb8a1f54144589d44fd3fcc670521c98cfed2ccd6fb6e5cca0d1f5751e177925279cdf98e4edba6df7035b96e9807576141bd689702203351f09345b363b88851be8e6329de63c1b4e2e970b3935e1e8f65baa740918a9333f1c17657d5448c637cb241cfa87ef46808f4d4d4518292ebe82a14874fa07e3461293ce014ebc21bbd6e3047b513e5c58dac76fd4e7203015fbb7371ffcb779f7d0898990488779f2439138a9b8daea58bc13195aec88da93aa554fd2a993b1cdcdd7f67cb37c6daa9fb7a3946db3e7e16c6dc403a83024a493fad599655f5532964e8632f4eacd0885c8244c2522af539efdffecfd797b13c7b6280e7f95b26f2e481b59d8269b0439de3ee0014898824d1262f9f5a9ee2e491db7ba95ee968dd9e1bbbf4fad55c3aaa16543b2cffdddfb843fb0bae671d59a575892e48d4b12ec0814d8db76818a2f4edb6d8b3e26d50463cc335747373e353397343e3732bb483533455d5d7df7c7aee8ddea07d3a9f64d3324114faf575235a396820e4426d9dedb5669e97eb297c2797b40c35d7dbbaf12894fa86917a7b04d0ed97a4ec190bfa75d79db3290624698e0c531fb44463562b141c69c4d5ba021175baec43020c6fad0d5d099a1fd8856fe1145cb504fcf03b85c4ae81c012c8618aa08f5c4a08911fc1f0327750e5c3978b6dff09acf85e779bda3486f3160054f44416087299aa96b4450799bc7767d6d3c7d7642e7ba01fe4edfeb57a2bdaaea0b568bdf97a269d984e785c8868854c2d894af457ccef508301c091af90f1dd2cd41c35db2c1411a6c56c4eac959041f70bf7bfb3c84d4efde3e8f81e6776f9fbb7059f9f6b2a7792a5ae59c8ebc45aa20f6a40d7197754e4ced6c119f5ab3396a478c0f2a8db1d9c1e193abe712849b2125edecfab4d9cef2ec8f3f0876e1221286391e72130601e23ee82669070eba3ae8c23c069dafe9a0eb660cc85ebb4c6ce4f44b1c6a00e8971ae3eba411f5a53c9631b44ccedf6271ce984d3fab46195ba71593ed985237ffa00b93dc48abf9bc2aff66c9ffcd92ff9b25ff1f61c9dfff87224ed95b3129401ea7d84294678fd666c77278a9234a76327ad980259a87ef57514cf246b46f349ffcf5045cf722043f3f07fef9f9f9889d9e2180272a53182af8ce1daa6a603b632c1b9afa6c9725ea85a00203b7bccbd24f3c3e56e2b37816fd3ecb90739f58cefda7187f3eb2223b81e9afb5dfeb5c3253754c0df9cecf3ded3aa0b1eb65da028a91515c22b31209396ee35e85ed7926a6499f8d58effcdc2d6fbfc0041eba76a232fd2dc9f99f90e49075aa45d3cadea920a1d576990e91ed4deff3a6061edd8c9780459f7dc736c3e91247044dc4a7a9ea6e2a5ad2c9f1f53ca92495089aac7a66e3f5be1d3944731fb0853d32d1267a4d1f777f61cf023904e008cb4ee1343fb3b338cdcfd444e42f3d1767af3eb9dc26c3f00a984c869d253196d78e49096871dad498758c93adad6b093f03b4fd482189811bba7459e7404dbbd1762cc6cb24cd6f95b60da795b607a9a64c40717aa5837c3b96463c3d3c39aa6a4970e6c2afe86713557520baec1aa8334e2a0fd8e9787d59e7e3f5813c3272c0f833180d26fb7d8dd7cf34108db2960945b3e6b29be9a2c12f7f7be4285d11a41642febb73494761920219038ffe76d706b7eab543933b3c29af38c91b787c2eafa44ab71c081294cfd21a8e4441d36194c04e6755234a2418a314e9b2ce1d0bc9db90a2aa28c460787cc56b518aa621c2e74f8ebe9a894beb96f7b40de1527514753c3a957c2e40d9f89c8360cf8d6fa4703ef4af8d1f9e5a22d6779e98f84c4e15d9a36eee0696da90f5ef4a48850d7509b454e75fde8f6a00bab23389bf6764e7ec36508e5ebc67ebcc4bb31877222dfa7749df2653b76d178ede1cdc13e3a93fbc20de15319b1edc0d723bdcd9a9e97bfecfcd11bf1d7b9c12cd16660cdc69d3c00584d99b0c2b6f4a4c731ccf1390f2062b89a200579353b36a5122e0df88d48867224213e7d89f3bf28cf37418c81ef09f91659ca756866136c56d830ed91e6b9b6c19cda6552216f10e676642793d6f5e2e919ca2cf762cbf177164930d2ff252a9b547c2bc8121686679d05870ae1abcbbe39f1b39a3e091bc7387ad795ce5a11d9f0a91131b70dfb3af05a92fe8cbb05d76f7e9e1c9dd98a9865f725795f54f43063a06601df8eeedf3a3aa7e7a78d233e07d00c7cf3d15a5b842c07f9e0df1b71b298e3241cfb3a1c3f9a47b4e141022ca1b86d9d5a5a860ce17798a703846dddfb587f19444f402a9fbd5c5b34e802376f70dbf2e2a9edd8d2890fcc979b00805818e14348b8fbec690e8d80f29b485ee99b6768e6871b80a378cca3024b1ae1f644f8700ab8dccaf31d11e08154d02ed16ad4f720b65a1fecdaa278ce955189672aca182bec907569a68452f3e4aabb4006384fd243dfb9a414066d45aef475e2810efa2ce4fdf3a2c086bd44637dc7e616c96c64b740cfe63b3b5653b430a990a18fd454e23d4b55f6dff18426522a6e672d664493f799a1f116af6460863495c808c70ff1c89b2cce2191ac6432e85f34e46ef425cfbe1c149a3680b77a1a26aeda250a74cab4c8e6ebf9a2faa52943a0283ab8f2fd7e42e347517f84876e0cc1b822a3520c2b8be4f474396a76d136fcc29a41b756b461bb70e2b28ee6ea54d3f11a1a817e1cb0196f11aab202691acb2bbb6d29c2fee067131a3f0d3155332e75d1991dfc119d413f096d08ce7ee20369df8fa09228d8d2ea0433cdf6e059d2a2b979048b1d95d52edffdc22da1139ab4884d63ed14c62b8ddbd4b8d688e6c8601053b7eade396d74e09c3e3b9fbbfee525adeadb0b6bbcb362c29368974a582e4b9158d44373e3c5d6773c022d5c8a409b079538b49fe01e4f0a64d3b89bdbbe83a64638bedb1bb7b77d988ddbd73d72c8341b4e880ee459a77d286bf5579d9bb7be76e9fdd33038d88feb1f591faabc19ce185c5b8605d5ee974d94e87748671562dda26f00a18b844f4b86d5069a81819d4cf9c2f47d735888d94fcf44ca4dcd60776a6dd92d79bc5ad7fcb2bff9657fe2daffcebfefd2daffc5b5ef9e7e4955519d8eea8a41ed045cf789915e631bb351b7c2037e78ad781d9fde7d0ec80452e931dfa5d8bb6ce45761c4f7eaba9d50e6e46b34ce44c7168849c06a425adf3c48b8f5042f40233484a48bbd4a7e3131a49d6a00473478936336685c388ae8c0153fac717b01d8d0eeda99a1f84c51d0e4418049451360651c38c14532b34d23ffc129ffa5ecc56bb026486911560640381a5468a776d82bb190e9d3f4cf232b347273213a6c325b9e4fe6d2a6ab6c828e49478d5c3da41e86f16f3d5a8caba099ffc95bd898f63e564ce842d7887db5ca24e67c881639f7d306f7588687f23e72b28ea1d735a96f08422c95d5761f5f18d1cdedb1cdd2f3db85f746cbff0d07ef9918d1cd8e871ed3e9d9163b6e290da915aed01c3868cc1d6b59bf6e7a619f75607e11ac798b511c569b33bd1ebe19e7a573c7ae3b5e93eb69fa27c5bc5b85c6573b6826dd92c93be7c1087cbd29e5fda0fb914c7abcb76b336e5db0c8b715b22d914eea4924d891882f265ded795355614f1d971a9709fa636a3713c14a1dabceb5af526ccc88c44d78fd589e94c9921ac26e8d5ec06643f5c52de6c82a1dedba6c813a226ad1caa8038fbfc5c5986bb943ecaba651dd5f13fbaf2bf9085106f36d0e7766306786d8143e38dbc9c439115830dca99f66f63ef47fccddca6b4695be3e4b1c2429b4e9bb6f536f0864d7f2f7c4f2e1b2d9f3a8d1b47ef6497374ce25de5514092f38727e7fbaf5f1d3d7f7afec3e1fb63b6cb4eefaa937977c0ee2eeb5cfe217a03f253a90cc89f6813aa7f288d00a80247405248427eaad9428ee3cbdda4c81f25f2f4ef6ac58c01bb5b6bb7eef2435ebc0331c19e5d3f3d77cf0c283a50710a6004b701474e854e90e494fa0f4592083c5179dd28513f7a75a501b954b9e1242f5a517704e3227028dc7ac38a851ac88a75456594ee9643e87258f827021220947852550d460605050065f7040c35f93469c357a3087397dd63bdf13a88af6060c8f66577fbfd6ef13212941a861bf7fe90401e6c543654d9540bd151b1895aff91a233a33294c66c2c99965ddb02ae82a2cab6ea82b494affaa3b5a0e0f29191d9445ad48fac108db830f0d0a27da5e063cbeb87c716542e2154bea74766b5c854be4a18d093aae34590ed51495e644009136c299d4257cf05166401dd0caa7ba70219d0f53042912f08108cedfdf1075bf396966d79e181bb4bde7d5e4abc97b7b97c3bb11c8e6fa959e03fcf44095c6a0c029c9753f6df50f0bf07704feeeaf2c818b5219a15070fafd97fbb3dff37640b9ed1d0f480afa75e5801b36aeeb1d2de7a692c9e7f771dc291f76d8190f1ee4bdb091c601a2f330a1d754fec9e8b01ea74f0fca032c883c13dd0eb50b1a803e9240dbae804a54d49523c88ea34e3c05327c7737271ee6b4840ac0db4cac42ed54740471655ca8db21d1f9acfa0e082b7332c237f39e4957a4cbe1ce08fd74f9fe2ec7097ce46ec258e579998eaa9dc63e3f5017ba106a9327b760e98ff86b7339527c7eac6a6e8748cd2c934f953f3d2e6b57a5e30aa38e1ec47cb204f9322508019816fd5de173166bf8835aba3e8cb219095f4dd53130eaba7af542d84cf86321a4796fa7177c96fc3ab8fa3f92cfeee177067be8033f3655c994fdee451ef6a65bf11fdadced502b37858b1809782c99d7c01975912ea4c0130a6514db4cf070574210ca57179a2ab83e71389523926caaead86f283e226bed6b89e8307fdf107fbf7a70e9567829cc9ce1a3e171b559d4ff3f26ea8fbacf1336830721b15efc0debaa1a4aa7aa7c23232dc0b3b306b7116e2e41fc26bb9b6f6c12c2ced98a76d7e494267ed5ab42828756231218d0205658e024428c48008f56151464fee4672868a36751f2d0c2a049a6e07bce56144ea118bb57113bc0ed783b6e2af0d0b578616f7568975ae11ad14c718dd6863d1e0962e8ea4901c7314e5091bc1ff260923ae3a88b3c29247cc4797cdcc47fe1299227ab6236f51bac25b8ce2cb61ae3fd53de9669da9748778a67e7b5d3693c3cdd23c0fb7eefa60fdfe3fc625fb07b32a21db9b5bff646f78c1cb36afd9894867655554d35c3403f6bc4c3b14434a86edfc69ed1068c5d310619fab1e028dac521161563fc40c9d695391dbe98ae86aefca42340d80acbc16194bae99725329e98a825fb1aa667c5a0b0c019897106b272fa703d65493f68ad702dac9f2a6adf364d93a8ba7c799374e81aa64bc64e375504619af2b6d1468e7961a290cd55144deca6b293e2c6a398baa86681eb9da52a6753ea88287fcbea59207e36506eddca0e55182d685e2b8fd83f1860123f57c0b196ee375f81caf5bb65c5af0a679c5e7a2d14520455ef0869683c6de0a9eb6ba5c2d3f8222fbb2b66d6c38bc3f1cde47b711f753cca375fecd0e9e1fbf79f1f8fdabc72f0fcfdfbc3d3c7afe8b660f7ab51775b5f0ea3e7be8949db5f302fe8352c8777b29cae5412ec9c99aed8ecbfbfff807fb2f1807ac5407174e2ddad072e348339dbc3852268cac0b5540f3515be62a601cb7378e29d191f61d967f99792195e3312a86b0800e43466d3d1252e693f231f2b650d9f0d30d3c81993823f2cedebfcf1a0865c3321cad8756c02952ca238718f0a6375e2fc0a6f4df91e18dc821eda9f3357c79f8eaddf9c1f39f9e1f1cbe1dd802fd1027f4ac4ce4e8d0a9ba42b014d49393f98f0df4d9e1e3ae710ea2dd3c7b3880651de0c0fa510ffcf4406479b328f8b5dacec8a502c783a406dc11335592010f218ec968db7b021d7aa93efdfdf8fdfdf8fdfdf8fdcf3f7ece253495eecfbd2bee947fde8ab95f58a6790fe69f7d29573e91ffb1b7f17fea514c677991d542599beb2f52a0e0b56674c24f2ab929de8a0966c14f2a8e69e7c51b391a3934b3ace080e19c83df053318f4ada07bc62fe849395d902d134f0bda6e1f0fe76ed72b35603d30a6fef7a7013b4f4e75d68bc76f9f1e9e41ac303917769ef4e943e6925af1277359c881d949393e27d5ac292dea3da88e8b8ac9081751937c03b31f7dcf2e7cc77f2b3fe39154af23d432e8a3f74aaa6cb853bbe67af9afea2d9f53fd8efe83fd977a2814c0b9dc7a38fc76f8100020409da165f30ee77939fcad31af886b8f70c4539154d5857a717999b1bc6d189f4cf222e7ad68ec837b229fc6a65ad6a94027de79c38af0117ef9fc44272b4fca18351d1f6d7cd6f08555d1d4ebaa6a194a4caa5a3d9bb6a7b616066cdf952fb47c9a52d004405874a158cc792d7ae3f50a44cb1b7878c6eb9ad729ef21f55e03cc70e5f606ddd3488882bf8613230d5cb05d56b23d92d153607d28f0e08ed7fb6cc41e6e6e6d3e50757eefae23b79217b6ca4355a5eeaea2591bb6d237aa52db5d0997e87c5e65c2d6fb56d55bae185f5dc98da94da5adafb503d49595d443a27b7aa42a5d7557527e146c479baace879575d2655d8bd29bd9d696aa7bbd621991e77e5e4b98a7eb6dab7a1f57ace4b259287c5155d2dbcc7977adb99857b6c63fb53fd615350afef1dad6d0e7e2f1e79cdabc15356f9574ce6a2df21e1fb064c0b2014b074c0cd874c0660336a10edaad288e5313484dc3294f45b2f3a40f45b427d69779994f7291296419d4f353d8a46c47a1d3829555b931d7053371e9b846d768de443eea1861434bce242ce259068e1478c166a2584c9605bbe280fc35e0cede25db80e1cd76d9a93fd93347e43127714119994f6202b1dfffdfcdfde9a04b3aa10077713abf778ff81123f20daec34a8cd74d4057f6535e151c3792126ab2f4a4960fed49f5a6921067cb713acb8d1f5467639ff4f4ae193b9324e26f8d6db0ad01cb6028da033d1cb9df1a2038b22a6deec3ba6f644242f57a285fdb3d231644db6a3e6029ac1a4bd9772cd96129f1dc95b17bb2f93bbc9e36a7679dc6d8d6bf5bcaeeb1ad33c7e432e5bdb52d89979823852f1b1e89ff858380a777875de64ddeb2ffddb887471f9baabefdc9b3a7aeb9f1b8819c3673ac53f64d709ee665b52c5b91117d619316e0b26bb8c128ff11e5ef4bb11447559d8a778b8c3b3ac761a66ccca9f8168f2cb0f8c39a3437a87a2cda8e6a3a07aa8c4b2da93ab00e9cacbeab862f1ad93708b33c8d3b26c93a8f4a6c628da28d039bb28459829d9144e1f7f5721f12c43d6fe06c98936547454b35c2e811d97bccad2994c615c6eb405528b0ca25447560ae9f09e4c7da2ee36c8f3de98dd7bffd27026e0236e94c86fe922a4a05166dbcae47890c89701613bbf5ee44e8727b5dd1e3627a1baf93a6686fa6cd23b5dbe3f2c8b1d222c3712b3cfd9fd97a306466bbeca933aa525cc911ef8ccb679e81dad39d7179d17b36a003c77279f366094110ddc3b3b6a9d44a9febfbacf08c116cb63dffdfdf90ff83d56decf2d9a84abed02d5d88eb115b43ec07e816f5fbfcbc1185f309e8b04c0836eea5b70f40c89987dcfad947b24d7f4e1992d256a6ac1276345ea04f7aa27c3da6126357c880bc15f2bd9cc82bd19b31f5d51fb8052e045854f6a6f000011487c43e3594fc01858dc980a518b3e7856f1b89e93d719aa279646a1f0fe56c20fef46d9bb96c01fa32e9333124a479b663fc9c6fb1ef0c5244de54894e60f01e3937c41cd85c96dd6173c78569713a77a35dccd93db67de68b599dfe0b3b0b3906802f5c8b9481e2a54b0f9374720764c8044b8375220b367117cc7521f0d55708dd464c7b6a93df23a61d51c2099d6a4a451e51ade10057dd9a919c5757a5a847ecfba1ba1e63ea8ec0baf3e2140adf722c20f1a6034ae880b83c7aeea0b8c3b4d143e343fc151fd92b0355d5a8c813b11b7f057699da333d7228b8089a164dca17c2b4afb135356df06033927f36c7eb039d365269dbe3f5b1efe971bcfe152a92a94bc5fb16773ddd1d9db9d82bf73190e4949f115b180d655fb35d767f3cbe7fefbedeef37d67b8f69ee474251102ae28dba760e0f4dc29c374ec07761c3d771937421ae8d938dc4a4ca1e8dc131dc1cf390a424cd0df4af662822a27cb30618f5971c70ecdc9e2ad9f38865da6927763b62a949584ae0bf193f466fcd7a733b570358b9335992ac664b52ec749d443adfad4df62fa6575e9ec437e81989f783611d87dba677481f6c032dc7eb26a2923afba0d63b5e4faaaa105c93a202a941333ad033950fea96fb86c8b2bc8f599b08729babdcb35c4b7923244204d141e4e9a7a9e5729e88daa432dd96fe4c6ac12f0c6b4f55d297d754d29ddaebea69fe34822d465ec2ef234a3b7afdaa036620f8d4c49fca7aa9c2bbd462256c0fc27ac9eb7a22f76253628d497fa0e8bda9d9d4443f966eb5114b80001a29fa51f6e7c697e37de29579866fd58c7dc7b871b83c234f96dc797e3a3b23aa561330e297e3130336d357762ae9bb63993451c747f93e308fa7dd653c2671cc7a0fda87b223d693bf1f03f03c7d7c26abf1d3f1fa7ffd9766638cd7cf0650be8b013281f61005eb0fba8ba925910775828806ef0ff4eaacf56015d076b9df1f665529769c1512c34b8c85edaecdbd7bfdc10d0be3bd1e025ee4cc22427c00f4c3832d64c89f626985409ea95a196cbfca02e9e385b86ed8bfa1056a47c3fb683c828d61c8bf4f706a323c847d2774d034800fef3c2c52abdde2d6c2f66db2118211d99e2a1cb4731279de6ffd901ae20a30c73df36e02ce286fc0b0ad8e0142f41e3c0cfb160e6e813055edb986a6306c0546efdd0b9b98f00e6c5a0373079f26d01ce133a4ddaa5bc6fccbcbf6d84fb2f3140ed38ae75bb184faeaf423352a4f176030f2871c07225a4262096bb89e7ffcc112998d7839dc57b5ce702447169d80f53628c56bb9e35fddb9afcf95fa91f5fb0396ea07275cca9f5cd623594f4d0ec03cf4143243291893a8d54330c0f247493b4c552f900a8779c2957b13c6def692707c3ff7c890e48a3dd798ab1dd7eeaea5f41f6c6f05a43ed9118346fda231bb7d85e91befe273be20cc96395f78674d735ccda5ebbb5baee174aad1324cd2a7069541f4b57498951a61d2f49f8a5e4746a3e3d97dfe88700bb0f3d810603384dd0cf94f6d081d92c2aa88c1fdb26c7b3c5439c6cd5dc99b35280976808f84d75f5bc1c5233daa949e6f3b9344963bd1738dddd3e0aeb2a8d7cec41b5155167438f2d369f415020945e98de0506e7dfd80c675f57a455520681ee5ad6f25bde44544782b26018fd2ca595d5607334af5d8aae1a38cd82124bc59d682243e257def6b3cdaeb5ffbabe5942940850e001812853be8b972ea75dc128e57063e9fa7bc489785ec60c6cba9c89ee46d63717c5900e7f6937ce02d3de0656c3b39edac163cdb570480497fa384602397a5b25f95cd72ae93e9eac9d749578a4fe4920c472f1c779bd09b3dd4fd18a20a374749bddc3db789e1c31219c63511ab9730431e9e82827fa407577edeaaf184ae795bd5ce526354e811dbd8b2699a768b1fc6b9985714be8a79e51eaaee9170eea89bd38180e1622d46ee91dcd3886c128e63d9086d9d47864352a3a3fab9d71f0665bc56831b641357b6498bb84d1e4e2622f55ac4b4550dd2126e7bcfe768d67429d0a0c46dd9cf0d5e1bb79bcee26e9f0722594ed52da6bdd9742bfb5836e205bfae966d6ce23467d5f4c372ee805eba0751a5ac6ad1e6bb2dbd15d93215b5db984abc61f1fc527ec313bfd10840304d4d90a5401af045473aa9b3119d4b9ad1161a23861a17c7a0b8f0b2cac48821a27dac04f023f691bc244a6b68c45e6262519536cdbe2e2439582b976425575b637bdb0fbf91440ef710be4ef63a120417a0b0a4b88fd4d26eaaa905aacda5c80aaae1854c5e64533a9ad4841b6f919395cc78a4590d3bd62209b763d13b1867e12b0630c59445f627483a28671a9a2c602e415edf8fee95fa0e123f5f264061b3e27e9359166c8f1532794484072ce25b215d2547a0928474b52421a58201234248839983d1b3152aa4be50e126b182636216112d981976bf7c0bffe1a3bc768ffdef0900021180e5b44fc25711afee110735af000954e9047a68ccfb259a9122b6cdf5de25432508e42e3294901ef3e6275ee499810caf20d598a28dd795da1cf2dc9765d3f2a410e7fb46d10821d10737fb8dd2921ab1a592cd1d1feebf3d3c397ffeeae4f0edabc72f8ecf0f5e9fbf7a7d72feeef8f0fcf5dbf3f7afdf9dfffcfcc58bf32787e747cfdf1e1e187a104591d8d741de2cb4fd9a0ec641f35f2be98ad63f020db711bb182bed1095fe5e6393eac68dd82f36f357b6cbdecbbbf18b047aef77c6e5bcca968518a29a61c376d9affaaaca12bfde56df7023abe6ff6fea1c8e4bb05b9027a12ef38f357b30dc1c6e2e6ac17afbcba6ade6ecc9322fb23efb438e625c76ea2982c298555454cae15441f1462dc6da29d4a4332137af46fa8f303612cdc3424e12f227a70336fb7f5ae9cb9facabf475f157297d5dfc1f54fafaf0394a5fe95fa0f495e1db94a1d25746dea6f47395beb250e92bf9bf43e92b35ac43ce29fbe583c412b7bf09ae5fda75fd068c46cdbfd07801555a92504cb18ef5ca0dd8837e18573f51860fe9805d68b183f2063977dd376be730f3be73a8c01f1707699dba2882bb2a21132777e6e5e68601a33a18853e9a2d8cc19ef405849eec197797efb79b974f8d1b1a108e0832e56a5d72ee8766753ab9b8b993df78779c570d4533ee3852cb7cce2178f1b12c403a6e67c5356c40c9913c585b8fbe95801f5af082924c8064e9e1f66c0e70672ec2dd2dbc1d9bf388fe5ec97be4552838912072f95ace43846cce4f3905ae29d87d18376c0645db004cd8bf318f1e2259e545bbe3122fb78b970cc587b6e6697b7829d73c68e41bd3089687fa447b0047950c85ac7e72bd104d0cf5063c210d1cc78890d8b1f2d1f434735f16a4ed122f6d4634170053e63e0133ebb33d9ccc23399959406862b5d319a8f0782329409cb998f146646fc5346f5a1b47a809c257159e131558004086fc1cc60a7f9c0208addf79af3815670a8fd8a1753ca7bbc215919b533d19d6de40d91eebfdce7b6186ea65a0da922b23f4cda1f4b67f2abe051d5de7607c22af6ef09efe6ea0809657caa3adb6656b7333c600c022faa435fa8b9cb4d3f46c988985283351a6396c877568cf4196a0959538d5c9ab9dafc6f96abdbbbcf4be2f09242113bcf22788a75e93e528ad5f96176575556ec00c149ec235d7e084d753d1ca0bc17b4abe7dc121708056f533cb1dd65103f290184748ab054b895af5079b818c2d2e7f4a08180ed5200850763393be956081e852017918d2c0509398678554aee4d5512bf2db677bec949f81b90a6f31f0c1a96cfd2c58896b7f772212613ed482392c3742516f824842aa16df9caf8ff173f0989bb718140d0398ce87e79922405fe44d2b4ad75761ea1679ae7cee353bab969980598b45125da5353ecc1b0966f8146efe715b2d1622ebf55d4c93e9532c012f805fcf6c1fe443e4a49b2d0ca7e43eb7b119f925f2e68da81ba8dff6c0ac94537de3612d0ac11bcbd7247bf1c460487929e93978cade14cb695ebeae3387a91b2f40f6a9e0062a854268864ffd2a64522f8a7cee2987c4efb779728d4695dd4353452287686d8b1e198baf181e1ff7a4cac19b98f683c718a0d5697a461e9479a49e3c03734402769506790fbff5ba6d232e6f966ea0cbcb1723c187a693310867cc2e5e80b4ee3b40cdea8c342d6fc5ab2a130692ada5fd404aade7d91a180b25b3b02428449e263aa0221f19a5b6c4d7a4abcafd224f2f7c553a95bccf17edb21661ee41b54c0ad15195647636f0b25a36e2a0ba2a5764adaefcb2ba5c95b5baf2bb4567865f91a13ed65a36ccf2862785c8e082f7b8792091025eeb8dd79365db1add32a5e696978b65eb2661906937ad151f5a5e0bae5329cf00ba77d518e191515493e2e139c5b7e81ba4a079784c5698b1a4ea4a6ca3ea5932301971e5963478b80eec73e2ea6ff5e0fdf9c07b1f25f9a5262a933ee2cbf991fb4606580d5fc2c7bc3f9045145aec18d60cd844beeb8a3dc276d90c347c10ea10e2d455c53994e92f793b1bd6bcccaa79afef28902188ec6d6b06db11079ec9f939704b9e97ada84b5ee8b70155ae0fb564f8a9531800a4f2a1d7e8922e8c78e63dc2a747fccc2223f24bbb4290007387ad619a83ccf0e1824b144b8294be5237b329c81af30f833a2a5058f562f6f69f4a0dace55379581f92cf3dc6958259b0ffcfed4ca2adaec1c9ff279e0b68ecce1df6907c1ae9390fdafede5da5ee01123cce85b280462aad18b7ed1fb8afe2cf4f9f72d03e8dcef3852d9f55945dca8724fcc8277635cb0ba1ce329975df8d84c0572de94b1f178420616c57bd2ce950632a187bbe8bf43b4dcefa7d96c6519f0fbc17cb41cc378d23436e1d9343f14e6b40e11d7065ce72ab8187a6370a2d6d8198901d0fb4de1b4b76a8e7668daae32bfe8213d532070591b9a95185de94d8e8c6066de925efa5a7c919f8cdc0a72273d80c61739b3b2c61df9156130771250d26cb443e307e7b11a2f4b57f12601d01a207a720a0a8b5a654c7a9f1cbf75188fa3f735ec203f386c291d86189cd4fae8f7b2c8868d06dff47db3ebe30af5c6ae92d57afbb6feea01ec4abbcccaa2bf0688e3f87599502173096e6ba34f198c2c75104510555484ff9b0ad5e5457a2de97c4441f590a4e922a385eff592417798bccf1337882ae6c4a628abdac3ed23273f599445f76399e1343aef0329fc3928b321bc9918fd71feb24d42f379f8765a6e553a616aaf083887565dde7ba5cd042d3f2babda13684edd535db9a974dee0ef9c4a4614dfb8d83b662d1770eabe527c3267d8bc80924c437b9375ecff2cbf17a7fd8b4d785709706d929e087cb9ca35e260ad10a76c2877495edc780454a9815bda11cac9bfdec7bd38e0dc8b6e2ac21f9f20ef2cf2e907fc74f0916035f9680397132b9a17524843a71b8c829457d3c7d9068b84ca4f8a0e44fdced5f9988465835ae9ab6dcd69fe549a13b61a5adefc3fcdc3fb18cfd1a966ae8c964ec2b53c259615b80a3c10f44e467292f1705bfd67f25bebb9cce58a6e224a4a0cacac47cd18208b64cebeb450bbf32f93f48ce8a8a6722cb78cbd5cfb968b9f984e1b1055f36824157f23f70a7565753f0cd56f356a88e1a212e44067f6491a6e54521bf412d2b636d3e1768b7cd2eab6239d7d5ae38389e1baf0f9b4591cb6bc2ec7c93c4e55da6de779644795822a1928a2cb1a656893958566b131e7bcb94476900bed22631736c39c6eb60e983172449d81e4b1234fe6123f9539271a048595a1b90095808a9c79f9c608eb8010701c89d3b6070a94c73f9d90ee3044ba0c754db46a46cc35081d05e06126296b1ef76d9141b946532dde8043e5cbe59e4fcc3ca2ac6907c8eb6d8776061b425ab1b522b621463965e23f89b41996950662b647812a11b751ae0befaaef700f2d2bb1e044a500c05a0662c428dcb36caa2033a6ec253415714e53c0e4f2ae02aa1e4a30708153f15677db607ad9f0a80313da097c7eb384063e6856586ad6682cb85b5b552d90edd1a289c37075a410eb8f0426eb851f94badfa9ccedd8b258ed89ad24e53e409e8beca514f12366253b27831c62bdbd54548cc37bd8765ef9a46eb85255b60cf075ad3c8ecb39be185130e864dc445da12c7df60a3f30fc64d43b77de092075d8eac64c33344a48ba31aa429bb6c6dab3f58b12f134749b769ab05594bb20a5e8eeb5df016b3f4eac334c33657cc3395a877f104280fd5a693042ccfc1ca03e1ce7581ac70bad398e26d31659a43238e529ecd9367121233a16f2b69db26762c5df492131674b2e3116c1e0b1a6e6572e6c9e0759d08908900a438fc22edad5addee33364d68f528a5e5e644451c92b694fb776d9747e3f8a8ec695e5d9c1349704479545b93a6076643b6676804e6f34612fca465a4841bda171c4a9e14ce88f2b9386ef99c5acc99b4884de4d0644ab4f680b7625856578eb4c3873ca4b7bc39a9978d49d3fcfdeb21ba2c8dfadeb1fa76c6730e494c83c5c9baf5491c0c20b3f1f4188d912edf12c7178fd55628c5951c05a4953d016699d4f70da3091207f0d33c1f3aa9caa7c7067d7166e4a6694e466a5729533f217d96687106a53761616749efda232cf224c40ec085b83ce77892aaaae8f232e195a22e271056f0a2900b43ba7045bb318f11725965ed9e5bcb456a7e4b0813434723d31aa5bebad8378fb4b51e1f52f80649e0cd213a5d09bdfd1976f8799891e1d8e2d682910fa7029200cee4894a54724cb6cb7e4b28957421911f7d0d7a4afbaae5e69a68a4beb865b93918533e1ab0ad0703b6fdcd803dd8d6546029b3de2a0f5ca042d841b76a73494227e86a9a4c7f091e226515c3b1910f205431a43c2ddc573ea016741027e2431b52cd77eeb0b54a9316bfdbf2bdb53291b0a70261e1b7ec3bf56b6b8bfd6b97558951e39555500801d178f667bcdeaf32d17b6004118df10e938849558be7e562d91ab5f10e16ea88a84f21b77104d2af27b609e35e46025de47006658c944cbd879a2a231a2d23f0346c7708c8d9011baf5f886b70ef8d5f9262d2ddb2f1fa8237ad18af9f59804c9a382cb32f9ddfbed34ae714dd62b79ae5783d2996357367ca2ec475565d954c4f56fe582ed8bc5a36220334cca17aa3d33d460ed79f9eb0e282dd3c6528f88593468ec15f316dede1f04fcf5bfbb1bb79e258f20b67ae781b5f3275cb5e6c13abbb66cde512ca0f369e697c213e744404d6ea61dad8024c7f9e18ad4bb0d9da5780cc6f22a3d278d3c8f6f6236b03b68fd233bfa6bacdae409dccdbcd90cb17f6b3b6d929d0f63c62fa6fd965e2ca19879968795e509462856b91f1ba7c81107483ec6d083c3057002761fe556c833edc6e837c28e84fed324171d4ea85454ce7c1b6da8fab599ece42a9be3d4c56bd5287254cfc3e08f0f5c7c48119261763207fefeeca27496218892b985db9670e91e172799c959313bbb2ccba70c5acaa847c3fefdcb157630f196922e9f507c8bb0256a1e51fea9d535a9a8667b862bfd423d4319bdbecd25a2f19a66d5dfca03caa0c79d19adf73d1f21fc4751fbf743150d8c3628e7e1372b6d319af014f00fd38f965905cadeb08a93b7e45f798c4300a5d26662eb862e6371deadf13bc5f17956239241086b510c42c1eced7671f22d06134c88fd5a91db106312e472d9c7aaea5e92121d1a1d8ad95ba03f3a732e9b384bc43e1798a2f97e2fd3b3ec364af4d32f45f7f47871a357f1247bff9a6cd88b77d58665fd0f252bda737348e8f6947fbc1090b965b296c5e493883b75c5bf1c6a681bc2df37c293871e70e3c5cc8e6540f57471bb0ccc6f120689bfb0737d50757b67005e8bb808c484b6c4fce28c83b2cc173d115ba299928802507df0348950d106c7d8e7c4101b6cdbed281bf482cd526a9587db807e0064de0c3b60bfed060049792f21e58e52cb40cb7e564bb3ff29ee8a38db88098a82edf0a40ef02d4b2f54e8d14684ffb009be5100b3ab026191272858e32d13d73e83781e549dc0e5d8763bb30b344bbb8d24e37e40c4f274a9bdac1b21e7b52a427def77e5caa7490783a2bbb6cc9a90a799716dd63adb1befd6da8b26ec59c2def11fd247d181f27347560b40d937efc493db4a37c22fbddc7ff3413808d707aa7fc8c8d70e6a162d591233f7b92043cd527d486059448f4ad86c69f78fb052b474066d20f645f89d18be18e5ecc41d24b4ef9d96a3d98a749c4931c8f39f27a96f8661ca630b5deb3ea6b966127e7fe7d0cfdfb214062beb7488c5131fade606363d73c4f15d473507a6293bce445714d05dbdf6b0cc6dcd52789d64783cffda40f031ec006068fe50bf358a65551d5c66334d259e4a3cde73601506348da00f8375e375962cef3c27ccdabb29d992f74c3693e17bc69aeaa3ab31eac7939b59d3482d7a9addc8a82fcfed0da0f3ab2656d4b5d097111f7789d04ae7495fe505965422b0ad9af88268d4147a912afbc556b6b2f9253bc8f6728de73d577a1cc26c8da4205389f5e514240b01a68ea54698dc86fe42569bb99aaae45b3a8ca2c2fa7ef1aad5d625cf9759670e6f240e946ca594ba409e562463934aa6df9da057f6b6fad2e8522ca50cb15a0df3d4f858353fe1a72ab41c725b9595f463e098d681fb72ad01c7a95d44a95eb4a97afcba9a7051ec418c8532d8b1c91a1e19bab6a6a71f531e92372e0a875bb47077664bc9ece447a91541fcc91003def9a6779a59322ca68e18870907b4cb508ea67238b2838da0bcad9e754b444447d209ab4ce176d55f75cb31422aa4dac1b1aea7dd41a11a03b005ff89da8d5a0aa718e12b9af614ef62795c35c5da0116d809a4335cf170e9454ef845a021c8f1928827eab0e0a32b8658de2a435eba0c7956339d22b02b1858d7c4da826d348e334d288d6a308e80a13347942e36947ac13fb9f3343512ee742cd2f1dda2faf2ddfe5cb54b4be8f2c9d145d892c3e7dbf0d9d749b85200db5d5e2a4e6e9455e4e3d91b94e7607c587e7702b20173cdd396c11a615d9d4b97697378e54bda59212b775b002097a841b1cf1acedc1d00084126d66daa2d593b39885e2ec68fd50c0aed516399642c67b2a376e853530e143054c00b0b435901c12aa4c78d1e06f8e748735cfc82854e44819018a3f24db3b50a6b8f6e103b55198191f7ebe1b9c9d717912e8f58dd7e34e71248a2d77e52419c60b74c5e6d0829d77729cf7ff7fbde13ffaa763f877ffecbe3a8f1fbf2c3cdc4fb2c98f9f191feee71595ba02c4fdb2a24e7784b8f72b6aad0c11f7ebaa2176c688fb6a75ad8e20713cedaed519252e595d697598b87445e59571e2b21515bb03c58915b5e281e2262b6ac403c54dd33f1f296e963a50ec562edd4316b50426d314ddba4fd3b85f7717ff8e0f7aa5ad4c1e1d6a6c3818cca0a30b624044837e02b25eaa5f5e4b3a3a41473bab99cf49eab33fc7ebaeaf311562d7d4f825096b1c99fbee96fd3952f68d82276ec95f6325cdb576cbbe8f94b55e1afdd2596486c7e666f8768b1da29bfeaa380dd00d8f2fa48415c615ae3fb4af2213d175de18e8e4d6496d3ff6094737b8d664136529eef949ccf931ef34a3aa4a5e71f477be66a23d1c5917bd68b3013e90faea19b7b9daf39019b00816465e95a1d602222527a923d390d7764b113ccaf12e6012cae1ae0eb3405b0d030a45efea6f6940f5a83519bb567523b2ed60dd67317a39e00723e7f36bf7f3a1fbf98dfbb9b5e97e3f225c6e8d69391b155ae286120cea4be33c13c9720a1efa3c373082e41f837739af80a4719c4dd2196904c545632dac91618dfe8e8b7353473193705e4245e118afb31e6f19baed1acaab0f7c12ed0bed5da28246e8882350acc84bf10a5840e440a686ed2ddb446a1f62d343a55497f4a7365e1f63425e62c95e86f7e59dd665957d4f7ca5cc84ddb3d17f5658627aa697ae4a530a98e0e9e8f1c6afe77ce3e378bcdcdcdcdfdc80bf070ff1cfb7f879849f47f8b97d7424ff3cf8060b3ff8e600ff1cc9cfad23c8dddedcdcdfc0bf07f0070b6f6f7d0bb9fb9bf87974283f1f6c6e6ec9cf836fa0eed123cc3d3ad887cf8323fc3c3a3a38fbbf6bb8e3f1c67073e3118ce6c937d0eda61ac543ecf6c11176fbf5e6d93fbed2887891de3a84de3ca5465b651af16d55b97842a1827294e035c527b96889b957c2c633ba4887ad68da1ec92d53b43952edccddcf6e6388451ad777349c5fb8599b4ad20597dd698d621a9a2fe64bbb2de6e32a6a348009ae54d5d02a1d3ae293f35e64feda30e60fde9648873c4dc5a26d9e605b8da9a198a494c3a68c533607ec9f41540354e8d8506fa5d2f1e0756e93be54d1e4f7557b41587c1d76a290ebee67ec7805abe6af98de4ebddd74331f0473f1543ebe0e278b43778bfd3340119a57fc55a0a4f2b0ab989cea16fb9776b4bbfa8cefbb5ef6a8cd8f7726d82edbb62bfdc0fefcda4c4257d43c6315a23febc86a16a8b72c6cfe7cd9b4ef1ac358338ace2672a94c55cd121324a534ed3c223616eebaf1ba9cf1722aea6ad914d7c7a27d5e96a27e76f2f2853e8c685ea23ef6158f2637a59ae502d44d940cf830cbc1dff0cfe88bd2643fbbce5055ce64b4d785f034d08cd3a8506bfd00c15329ae70773607a8406383a400cbe4f474bc8e5bb43fe37523940e27266da43aed6c00aaa0056f1ab96e58083e75deac9d174792ee5331686d7abb38fc7d995f628efcdc10f87d76b662fc06133fdd444af2409970c0849201db52133add3af3e7345e4fddc5c5beb39a4fa7f6b35988a280fdc16fc58d5f35287f51b7d5185cd8160e872fdbeaadb81475a3fa161fd0e7c85b81be889bb7e8ef37d3eb972e1b3b527920447d291e178b19ffb2117a631aaff3a2a8ae8e9645719cd642948c37d765cae4408f64e7f0eb0d58a856655b5745a34fb4fc2b6aa65de9b04955cf5f55e0819bb782cdf22c13252baa6ac1caea25f89d66a5cdaf16a20453d4e67929114d560b9ebd2e8b6bedf2386335ae54c69ab45a80552a9f17a26958de8af9b14cfbf26bf0e0963b66043572fde7cba2cd177a37e6cb5667a01b20f9f5397b22c7b019b98ac61d853aaed5555954fc331bffbae39ecb3b512885edbaba52bf9afca3b90df2f5ff9c9e1e76f6545757c7d01c348caa529fd3f23f6fb3491240d480e29f8ec71ba3b3de29dff878d6bf3f7591c3260d7dc16c9d0ddbeadd624124c500f011ee95edc64c8017735ee4537028bc91f046c069e5354ff274431e7aa613379a593e6959ca17ba625ae48b8d056f67f8ab967700e4f61b79d98a7aa19c45c7d2362679d18aba51798a0fabbe9029215f83ac9ae725a72313a5bc8f1b094f2fa63538479fe445b1512d789ab7d7f80103991455956d4083eab7295395edc684cff342fd96c7c3fedae0d96fcba655096d2d2412a33eae0b55507bc4868f2b5c8e6971bd986d00af047f56752eca16e73babeafc6355b6bc88645e8abacd535e3028b5c1b3cb8d0fea7755e7d3bcdcf8c0f2399f0ab23485685b516f48bc003ee510f272aa663ce7f585a8374499e99ff3dcfc440df8ea52d4b0af5af5cba6b4b33cbd28252c5af0bc6c37aa3a13355bf0b26ac4c6165b54b097e862b361664cb0c565cb9a195fd0a1366db550e3829f7a239ab6ce2f84720a6087e126dbb1346d5d5d888d8c37335ed7fc9a26549349235a9d222791f205fdfcadca4bfd3dcf5b39d1796e2a9011c9cfab3c6b67a0d6b1c1cb7456d5f83b136985d80a7edb1982f37e77316d929dc1b2ccd32a131b499ee5e603d44ce457db6c2ce4aaced9e506976f6022da3c65971b335e4e652f971b7926aa69cd1733489ff37626e61c8fce2578ffdf1010c687c91305e7e81a7f9a6344bfaed9555567e6085dd5e0e660635e65827d98176533fa50e4e505fba02efceddf23ca60441e4c9d0e58a3ece7ba709ce0f586ee473c6d97f24d555f755a5785fe9ad562a27e92d466565da99f6dde9a6489f9fee7e780d8dfe8fefdabababe1d503f051bff5e8d1a3fb3008e5c84b3d211fe6c54882367c43e457c1cba9fd02ac7ff5abf2570ef397972fe450bfbd5f6a8ac31d6ecb93e765263e28c4b8ae9ae6351ca5cf7bf8b66ef3f091c7ad8dd0b35acbe220a2e9b187d31eb92e294db8de35e5d840859747826804ae23d6b6d888adf5b689b65f5f498c344ffb74f30c49f5d73405ca9426654b9579455374f348424f8057fe7bdac37909989ae688aa30c099d19dd3ce18aa54a9b258623e05de762de6d5a5b01a48e0a997bb5a498a0dcaee81ceeb88898084dc63fc5438b4a3b627375d3da0aba6a6a402aea6a0250c4e391cda15fd4e8a08413b60b799460f4317a302905c9e07368af7d7361cf1daa669480d48cf76009bebaec6ab63e5f7398daf54daef47b4239616cff2b855816d86cf6b8a07ff8e47f75e193e9cb06d025b989b584686811e5a27a531975e8956bfa0ec3fb49db64a3c2e1360e4c612a3ec022feb329296ea468cbb10b607078b0fcfaf6a2eb15908bd36cccbbccd79a13a1d3be1ffadc7f0e8a48c97eea1c3cb30c7c64d77f4cd4cdc32a296627f93aafb64d9649fcbd4c63c537af27bcc6acca7da8cda99a48da5e9ced646f357e96a756d487f206695a9a1afdf479ca53b4a7efa4a87731c316fecb0dca12f7467b593e0f89846c03c2b452d49428226f25d0837f1da695677e268162dd39e1a99ab1e985825491a752e75bc71d93b89de963db7ce1aaa0040378a94b871205dc79fd8acfe32ea62a96b2c624bdb12ca99895f51ab599b506ce3f56699ccf3d60453c72d148d71d79311ef3f3e24359c1f57a3cef23d23ca4bba06db631f71d93510c6f0e541057a6f64bd3b77bc8ab051b49412f9d92ba9cf1c899fee5f2ab5605ee22e5b5bf34b8687e9711af34cba62ea2000bf69a28ef2a777f0b49d1dd9beb55d1520dc6edf9ade51279ce1a5f6ea6310177dccfb74ff98914443b8f328a084a1aad229064ff74e32398389753bef80c85dcb28d7800db54b20d508fef5913621a4a89b087fd3fcb4ce826bab9f80954388d84d7c8c9d04020bd634cf9e0f210ce081d601e72978d1515aed6ba8aba30f30a231dea2dd6267e08573aa454044bcd9d4f102fa2435ba83333460f842f374a8dd6d930ed99f65888ecef4d2224f2f18b07e19e8a6537bf4e58221b3d13807ec3046f7fcd5fb5bc9c17d87b5e57a920eb139e332459f47250d91ef107607e987c6d70b385d75f4491db949ea9a651da651b3ac238b351ef0989b93a7a15ec9f7a663792e8f1327d647683494fa063e7646ca4f7b547be079aaad8594d78fe728b3ee19c301a436d6a26e46e4ed78c4beebf041e25171df1b1f4207789e0f52b0804f6760e6da93a74a531e7ae803f643da1fe0b29ab58e78c2b6cb67ed1211ba3972b03b77e44a1f2a334d7948f6e5271c0ab076e90fd80f49ef288d3bf87de11f3325c230d69c7bac276739c0b1266ae0a9fc96c4cfcd53452351743c602d44659ba18b6d571d4073e9c9c5a10a8fcaf38297444d51cdf9c0150aad8162270ce32a840d440c465e47ea47420e741c5aa74d7970dfa431b3ea2788019fe70d186dc26a1f2f178baa066758cfd3bfc6ea3a617bf27e0271ea38f1d17a4a4134e5692c7106642d35f212ab8cbc981f916116066e98293b95bcd06b68287539ae6792927a99f4c08de2f354a5be4eb5a5edcb7400437d01085ecf1d60c4a068761b8322d1417008a517a035ae5ea5d4007362d22778702cf8db4f7b13d7eb1578119dca72d6ec94456e127a60709fe13e5ad7599a09a7e9d004c24487fe98f6c031b2ce1e3041cd0f8809ef8f69e043ea321757c44d1bfaff089c4abd3547fb71d14a7880be16d453bc8fe304c20e1d32a88c97a2e53255396d50a9c7b37c028d80f406d283e7f3387c7da2ce1c8dff86a990103e9fe49a4edd8b24a2252facf8db143c27ef490c1dad7a23da1527a9e772f5d871e8fd4eae8abe3d3fd18f9f531aade717e7ebbdfcfa317576a10151f02f642330e53d75e257e4a26c7f09526899059f8a5fbc6fa70ddc1eda8fda0392847b4b12d4f691147f6147ec2455be07dbb62a1d678432813a23ac45c15b91058e0f9df498ff41a780a20e267535d7682fbeaec40a740ff8b9fa6bc49ce2d46fa1244be7b8b8663826adc73dd2dce428cf3744cddd647946eaef34cdfd4e452dc2fd760dc97e46362138ff9943841e6d21a96d4d5535b60176fb9bf22ce349db1cb0cdd884de4726f4be7342efbb27f4de9bd04f7a423fd109bd7727f4cb2d27f49e4ee8177f42040cfd2af3debb574749fe9e536793202c23df282ba2f7a2164db3ac5d079de5549492f87913c9cc0be7e6c96f7aafda2bf0da6adbc7419db83e40f3e64d9dcf797d1dc0d7af0c7c85c53a949547f602b8f4d1c8865c828286200a3cc8416395760f875f97b2c2193d2acb46bc10fc52dca64328f8e73a546b739b39be2145bb3b550d9a6ef57747c7b799eb1b52f44f756cdf5e9ec5b0c3affe22f4cf596c8abc3a63c20c0f31a4bb16ab69d3092a245458930026a70e8c05a7538036ad8998bb2d74b9aadc3e2207710ffc79f730c7e172f4d1138b6238e402c22b086580ff33b631a276ff0c5c9c00c296a0bdbb0a511319b57927642fcf14228d361981e716c40555e4f67052dac97c14b90e128b58e245cc6552d746053bdf87eedfa703e8f1ab7468eff800fad34970b13004b26a66bcbe4398bbe111e83c54d8e7afb64f7adb4caff4eeeb7e559ab1a290cb3727221170c0c34692ba99f4c9b929496053956f79846c974d09b36506e1a7297a6ed82c17604051e04db799dab9fcdc24b98746abbd22c791f655040e7053b72fe14c37b57d991683bef428321281d95024599f71ca32738c548413265907e9d7dfe04f06a22befb0e90ed259bc377583445edcbb470dbef5cf69acad02a6c18a1dd8f117bc57b86d4de36da9806c9bec3b76c136d874c7a964a24e0dd8c5c6c60df5a76c835db8f505d617fd019baeac7fe186ab3231c2b46457fd1cf202944825a166ed9882d1ee444610eb3c89c628f75235a35bc1351d1febf46c077d4f4d5087800eff0242589bb1c6cd082e64e50b9c979a8d35bd43f747133bea09ce63d2f7cd8660401335202057b3f880b23f33a0090e28b303ca7040597c4091b8b87ee8dbd7bc87716f3b238879ed4d9c0067997b625ef3de44b546039ca54173ead538e5036603e978347092c5fc3329c57df9fc6e2a330d3018b8afb2e42f3422e0d68a2341d101255ed3ec664b20773c59e6b3cbf40863b6181d16cd8efac80ad3e7c42998c43c3e1053a60b71ddf4b82b68a55989655beb507228def21d411ac31ffffca4d1f383f16633346a4a54f064407ae4d29ccacfb3014bf04760efe4fa428f847c1159a8536526c2291852002cd1c67a668428f2764cf800bc9009e031ea254354d43be15376876ddbd16eb96027d68b8da6a8f306ec36cd32e29ccc73b394a83896db6cc41e840173eccaa04f575c2a158af8db6f3d87715e249dc8b27a60c9f31a021a4419b8e878609c5445ba1a2823df889f57131427452f7df894ef447cf4a80574b17401c8af1924d52453a315886c5b9849b0f52198d0a0d73ffc4db6ce8c6c0a9c48c8def1df60d9cc14d50eccaa4c327853e9e3678b657eb184149b02ced4e4499197d3d89b68d7d6879c7887f59d813b8c1f7d5859a5d935d9a1a71c3b5cdbf2b11539e9199df42c9cf44c4f9aa4abf6367768524a30380b85264e8afb9c3933a6bd6537f79605bda59fd79b9cf76cd516c0a19a3a2381459b31738882055bb564d169c4861d9b5c38196f3aab96afa3e7707b629b788b9ee34be9159bfaa12ab6be7d44adb63f11682849007bd5d7145d0c951e85be3055370f94bf55049b713868038558e79843e51fc3aa3cb251c4dfdb2c735cef010cb5a032700de2803c7cb8dc40cbff2450dec41d4e9cb8c394d24934d8523f340430a4bd4af7eebd45e0b90f186d18e8c4ec5d70fbd7f47b864a37bad3b83314755cfc17d73b0aa6373205bf38b6e19ea84f21cae0fb59cfb340be6382262273cbf02245c1178dc84e722775d18865a639210197f2b7b0f9b4c81749c5ebec006291d8e03c343d64e6839cd616a02ee49d0cc3cf719303c6f04516ca543c3903f156454e75114305acb77e86e25ff0f56d07a95d46aa8c8152db064c7beb0141d0c1ebc70310a17343b96f6d7ac2bfad07ae97c96df69dc6ea1f1829be5c8a4dbad773c34f3c6cd2111baf1f36295f686ee5f182a722e1b5cc602aed8540b1dbe3baaeaee4874a7fb730a9ef162aed2d32cc55f25b34b5809c83eaaa34190720adc7740102c003f012a7d27ecea1e8eb63230f2c9723eb17467eaa9cc78b4513cf394eebaa80a6f1d78b0acc46a1b9eae39b3a2fc1d014e453e3f577659e89b2cd27b9a4bc2cf7b534abf5ad2cf684a717ca98000a3c9289273c519f5bdb30964270cd76de7a004b4c18d15b0f614cb3dcace3d6377a067555e834e8ee7161ca404f6f38b0da20657b136af1454366b6fd4db0a30fb6e95e3e7880ed4c85d9b2075feb24b22b0ffe89e3d6515b1ec0a89f5573d3ec37b123f1e0dbf0483c78143d0f5f6fc64ec3d7d0eff3b211267acad70f83f3b1850b7db465be615a47dbe61be674f4c07c43b3475f9b6f68f3e89fe61b6673f4d07cc33c8ebe31df3087a36fcd3ec3e08f1e99ef2d1ccfa64950033423dcc6116e99217e0d437cb59c93eddbc2e90707767b1b0abf1412e4d9c35945a0d7853ccf064c5d886b4f6a07508a3c571a7acdb353c842cf60f297c366f16f08f2058217d7e753d0580dae0c0f205881a4110157e6aeb051346e02ef479dcf13b50c473dc8e881abd9c936ceb43b1b673e23624f00cb5b54a98a1bf9974bc16bb1109c8afdd0d5fd6de4e4faeda04fa65d9be0b5ec5a7d7cbe461a111ca893e3b5ac523a1afe9cf5378beff5094130488ff0fd2513f92b4644f08245160a8c33de7288d93d117580e2fc1eb98a6db54c674e3c45e4d89f04e9a829968519b7384cb73a94b1f344465f87081a5536fc93e85f135b4c51b4fc1727a6a84c886d3de638d182200576fd6a264471e095d8e04392ee1d39a8fcdeeff97d67cfef839edf7b3dbfefe8d92fd7512c36be5f1dd5aaa2e52fe1667a0bdbca85057f2049556b3f20f8f36cc04e7f01a31483c8c3632ed3dfbbe924dabfccfdd5cd5571cc943b118c7dae6c2679f9063e9c3c65ebec1439d1695832abf9d4faf7a0a94ac2a5b3d45340f23fe42dc9862f9bab64713a5b09e16d3e8a1d75f6eb4bd2b613c45d9551695a791c4baaf8eeca2788fe50793ae6bbcab59f3a3fb3791949af6bed8645fdc4f469d52a19a7e365625ab54acdc0a8ac6379743d218b282714261563cedb3ca1a8275a4287a2a7a55e9a345b527987d0859cf351544d74c8323d3e66a2e363343f5e56976ebeab18f27ad9bab9665b319becab0aa0afb42cf487cac3f1d8be5502edbd4351838cc09168d32274142a7cbf760da3bf30b701644f79de50bf550ec6f6d78e4bd487cac378ffc661077ea83c70eca9f3f407e6b5f95ce890421009329f0b1db24f95a8a653ed3845ffd639cb7466d70b3eed6a7d0570a3950f64ee809bf1fa15076b7cac663e549e84832a077f9ee9b0a3cb8c3a92bbcc228ee4aeb29851a4f14004f4f6e9d69911fd643466424f9673fd8a80650b3a3adb52e65c89b55cfc0cb393ccb0e1adad490652fcdb45f14cf522e40d84f545439d114bc6a5769bbeccd0161d71efcbec343da3beb0e4bb803ac303a33d6c2075aad75cffd6eea272ed5b49fdd4e955635c48c14f958e54f71ca96e6612900cd76516fac1805f2a555fa9d4de25befc4006c0971ff6e918b2a420b959b54c0ae116800724a3cf4746f308e0929f0ee0caea6aa1b3e42f4c551611036b1c81e9b90d9daa7eeaf44b5ee499ce511f9867d053158d15695e934782b35e88eb37144028f45565bd5b38c0cfb6099fb45548d035e1c3d655c1f668f05795be6c4cfad26eb47df517e4c937a0de9ea78586f2f458a9443b56954047ab92f478d5a71d71cd5b419f67f9ed3ecdcafc70602d112d18b5ee9ff0b7069468c48870127f135047e70509eeac10bdd7070ebec889836f72e4e0db39739755b19c3b73c21433ab557e2810f0ad6d1a1f136d7673e92dc715d387a862e132532aa704ec9c548b17e2521487ba1cc19e57172458b584c5971264b9babec4469413cf077ce8344cf0e33f1f67900c0205a03119443cb26077004a6a605d64bdb41f6f7445f0d78ec0b2b872158d1de8cb23e2415eb5a751845c5e7b17b7684f815b6f8adbcaef292ae8df304b0bd2fd615970eee784416cdd2cc440a259cec2d18cca89b6eae45c8ac8a2390f9bb774efd39b970e099b60cefa858a67b4b19158b22796a3489e58567c62e4210cb3aaf0dc2d6e714e1c60e9b76aa1643427be9914787a03fafdc601fdc2dde6de7bdfbf72afc9fcc626bff2abd4b758168dcc7b557fbcc5f15198b057b3b9cd9d051c2b38ceb1e3ef07dcc54e7ebb452711c2d46f3c4609060370d1878eec382470a8b78ecce8a57708b68ecc08fcfd75d5ae851ee8c168dbe789a390301a2e5415fd91a87f3a9c75620f702d9fed0fd970f5c3ab0a7fcc50b5d2f51b11935d226bf279d9d8385f29511db5f10050758dbc897c2837b069abba4135cbd42a27501508b30e4088ed040a92e98e51c9a1f2f48c59551dbfa50c1c28a1320faa2f28e5a98caa295465cbf352d4cfcb4945dffdcc5513ed9e875c88674659d4f8b24ffb545f21459dbf947de7b4a4b5ff52a2fda714c77499d3f46cc745515e25e0eec1982cf6891a371fb66ab34fd02d075946ed1bcca98c66b0c04e048d93cd1d3663dfb18a9bb1cd1ccd56d94821510e7e3ab311bb204e0da869174317d542d7539301137d348095dd7de0bde98015fd400deb80f7a661b0cc27990dd76963abfa6aa36b11b3094df3f7ae9522df7ec646ec20eb0f93bccc7a386da571920c7996c1a85fe44d2b4a5143d0dcb8ab9ec3406bf53fd7fd66d8fdbed3fdb3a47790a1c387b0e84130d2272ed69be2914abcf36cce37715c86cedfa8df1013185029dc20fe27248a0bb694d49581bd5c1fad86ac73b0e43e7fcc868b6ad123cad8ce9166bb443330a327991831402503b2980d3d41c3a65957459687c318ed6b44ac9a4847236623eeda5eac532ac6cce51db1d333d5975900126e96b11f92dee38c6a86fbc1669977a5cd65e5dedc75aa336f9de8431c302a665b9bec5fccec05187d673a36b1a71e64eee291c3767b9a11f3e467c83f3b879057fa1037cf0f909da67cb8bce4ed6c58f332abe6bdbe0e1bb0ede9cf3cb76fd00dbae4a823cd07ec5986078e9f3ecbced82e7b9addbb376047d929249cc1a01d85189315dc98ef5d9d34ae62fd7444d4d49e40d89efda975e3fa446fbd23064154c52d8c48cc3d673c20864faaec5a3d3a29076a3409ed9b6da1c099889da7d25953d1782779ddb4fba0f7e610e84ece38d01b0b9db5bc8832607f304a7e9c18fb98272adb61a9abd4f74011953a42aef7fe73764f02201b875d3f5dba10864afa4ee94f65ec5f543981a8e69520464b898e347adb1db1846d30ae933fc58189bedfd46a4aad6b1aaa00a6c3527c688f5117cfd32c055f2a343fd4bf75d4a31d8d50ac6ce307c79405d320c2bf092281fb93f6e347e665dc78046c41f68c15898ab40ce991e8c6e04933b19909cd543d9009a0005fe1698da3d4a7d2b40fd0b49acb6adab2f38df650bcc7d6d67a9dd9e067946d3dc418991d11a2b31ebd293af4ba7289826e8cb25e7f87252c2f9b56825b79b787cf4e5ebe787e54f3b9beb8f62038cf800d67150b55970c55fc0334471d6ae593e1ac1626d4920601544dd9f83c6281ae7b1f7507dd9651cd95a2bd6a66dc383cea472e7ea8d6fb3a42447c59a4ef44b95a71e37d631a46990c343a30807924a395846490baac63a93a48ba93d5d7ed78a1c531b526de98bc8015215af6c69c287d98e41923a19d61093d970ac6f39162152bbf0a7a89cdbe0373047dbdd20a06b0893273720fcb4c6329881179869f3da4493cbb6979eb7dc369c74eda0b887bacbbc39a34a5d7df714d04541025d43d07c7e1fbd5b26c0303ce74887ecb1d486791499dfd1ae0f8808251a6ec628003ea554f6d0ed6dca110d6b9b9301003c006ca8bd089f589e85ccec71ea44fc268713702784dc66d7ad39184d5c69697388b251691da1791b43973edfae5bf05f5fb66463c522f9d6fb761a0651b64c9e68de7c14deb291229f6b97d1324f625e73661f758d6df89b5216c1b69671b33d546eab781af10298dfe98eee934f042a80916afae136daa0746d50449eafba6a6760de7c1447659bbca1c24bec03882b9638be0d844a9fe34d4bc77af501e11342d3ef1a7b4b08ea6efddbbb03e6171013b1760cd2e00c56ce22b2067bb88ad4a0c71892c86bf5a4e7602671e060e34a9fa3db30c20670915b09c3a071d20e48c7460d1a8a821f527fb5cc281f641f1a60b7b372d51186b91bc7faa21804522935884a54a0dfc7e8bfe2f8df8df7d6a7e0c1f63f9d6389c3c3e243d3806afe499806ec81395d81b87ffb92f844c7a99f5bc548349288c081c90d367ce9c2638a3af515aa60d41817557b70344bd87a2cc065a48e89a3f247d1bd0c77d30d33e4bbd8711ed7d52e74164bb48abcef3121831e8fccc8001e3cf825b0720eeecfff8c31084abdeca01727dcd534879a79a25ecbe9398692d3b43cac739ca133a13b37ec2b576276b08ab0a0ef346b41e2c35a9b5c695ca26fa09f8970229e01942594b0ed0c6d4d6018705592f1d5038a26d443123a3a5efdc418777bd2d1401134c002960fbf8e33b00f09a66e1f3ad3255ec14c836cf3ee44d4945f2ecab3cac87ec4b651406f152e13ef4fa925c69440b27a987431898defa03eba2ba28a04623abe08aed81c17596614b0914568ab053d590e91e9ccc414f87b16c60f3d896fafd103229563fd3af0947be3a1e330278c911dcf2c93738c8c023a2ae30b46e2fc5160a300c026f5c5551bc10138a7fb5d5c2e69d540b035d039670571c70859f21dc819f0489f479ee4994d38e372c394dcf60dd711264bcb02e721a61f649b5d0dcf62e4ed95b7907deaa7097d45f2c82a18c40c9ad2df6afddb87359b566c7461d0361d4973a3b3e566e35230a6836fbb39c1d5b593853126ce5f3d8f5766ce4f64cc9e26fe9ff58f57d92b9fe87df79df3f79df3f67d634db3c84bf44d95109f51495808747c2c87b14b228127009ef007bc3e7fb99463291a3fee30ff9bf8423dfc7f43ef0f53dd13ebda3ef95790621408421f31466e1bf656a0100cd480312ef9304222092883cd6c14b1d7baffade8334a063b2f078e49066039afd5a31d5a2c49981cb234a9bd14c5b9d7c8e4b033bd402ff84fe62b2de4f19f83136c85f0fce4a3a087c671f676ab906ec9d16a70ca8e76ced9376405d399d6403f49dadb8f8e6febf8f6a501d677f8d9e52e8df2c3cb5193db519083e9d0da6ce201cf9cc1a38dd5913d4cb121ff9ce8f9e673d27f4b9acd3f0a186220e85e87883d8dc6153f61df179337580b29e26d01ba7d3b39dd0227fcd9703f4307cd19a389d9d052492a06c30fd2fa4b2cd5bc97c8a42b886fed4c513ac538cc336e9f24c17fa54be8d5259a8a8253b410fc73efb4904ec27849f62807033195878f9d98a630ad6424327b76f25a6b7a5c1f4e66d3457622a57376977852a55d62d2a3e1003f92868b4d3ab1d3c50dee2bfcd42e3ffcfd7dfd35e4d5decd73795348bac1c3a3de1c3bcfc4d2848f1a6584ef3f2759d89ba375e7f2b9a455566a22679ec389f2f0a41530e8d233d9a8afaa54e4d58069af2444caa5a58c7e398ec3de0a0762a41ec0ff28e2de5afe71c944bc1e77fc71c9a27605386c86530e611fb80e0333af611e3981bcc61c4dea0542798cb88bdc73af1398dd8c72434efff3524a88d7928e7c37d1558daa8dcf2010bb56e6d9420ae088b7bbb5a0eecbe64217bfd2b0791910b5a6a745c47b5d6224868ceb80ad764f4af99767d518bb2df07b7032a1ab696a2770af5b808df252421aa852cd0500e81a3d5f2ef4fa1428ac0f74038ceb084f31e24a7e3f5af3000c8a9383ba310e35317c2cf3b107e00c061941b6c9e9fa6673ab8127ee880c08acb08cc05275d92b703ccc96cb6429c8e6da9b54d57a2eeb8cb4a6d8893656a152f129fd50a93240bc63b160cd812a7e24c47b909dce6406643474720b09e87583d0fe64656f2de451bc607886a684c4798fee30f255038156701bc2315e156b8c3ec104b2682de07124da923b23b3ab279b4d5e5c7c68ffb168bdfb622dc9bbd83b78887338e07744b459c56b934d18d6c201e1d4cd10be7461dd8d4a21cb861c97a34ee1c2cc7b6eb73ec715df3eb61dec05f1d8c1108554d4dfbbe871e3d18aff755b7a79b678a3448fa83c8582154d2ed62c1a92586ab318e7238b3e86275c54a0b4373edd063e38e11a32aa68aff64c25491105229999f17680f649c41aca38e204769df1d47b632165224e2971031cd4dcb1c443533c5d05911a0c99d9e1b8d6462b667d6cec17f4a570c5899aff80c73dece5614fef6fe4bdecee0bf972f5495e6721a2fbfbdb9b979bfb99c46a23b4c4510b23288550935c35891abfa31e057639bbc9dddae8d706e3747ad5cbd9c71f0371311ad0c7d249537ccd5ed1a0f1b53158974f592585ebb244c6a914fcbd7dadba6e6a2dcd8e5c88d30950bdf65f56f3225449ccc52752864bd3c7ebc5880ec41fe188a0f227d57367c225e54292f8e747b7ba46985cc0c98552d5a59991851917755634cb439fdbc69e56035696a85e52a67622037f022f4eeed7398d7440c9bcba90e81a3de3023fc9748b47ed724eee6f8e1942b980b2a8a50ac6b257ce98dd7b3fcd23a8ccb85d3da78fdbbe672fa2f003809d8a77e771f13429fc1b9a0da611d5a64365e2364f468a9b873dc1d9674b624015899614b49bc25e5b8c30514172270391b68c47aba6e96ae57e22e84a2055745ac3653544d2db58264474dd5575c37b3770037f39cec160608876e1a403832626b7889120868ff7ccea7e2f5b205b65998735ce4a98865fc8c012f4cc687a3427cf0bf9fd6d57241135fd7595ef2c24d4fab6239f70687698df99ed0d627d8f49593802a5b97c2493c9ed57979e124bd12531e9403f2d8a44ceb3c7b5c0bee24bc25fda9efc332f3938e17bc0cd290194b12f761769124bf454c0d1a55c94ebb93aa6c7f5651475452919762bfe0f38593f2cc2da4a2fedb6f6729aa7a31e3641f5a9e1ce71fede25de5597565b33f426474fb5955733bc0bc285e7b9d4d8aaacafcc4a6ad16615a5d5d8803deccb8443923e95a1dd3c97899b7a22ef279ee67c4db3787da0a172070e6e978fd67915c688bdfb9b2b77e597dc41fafc7eb673be392fa7f2ec4aab0fa7311c97409e204688374c6ebc76d6fb31ff336b04c5023b0b7a5a15a2130d47d21b4a5eaa77e24967c29bc187e1e5ea0b4d64cf06e47e110f39cd75c053eef3401507a3c4621ae0858b41c48081836db330ae1497fd8d6f9bc078176e18d597c80f7c5c5712ae1b33cf8b069af0b113a42ce4b96381a0501c19ff62386072afcf13097c7fbf5a4375edfd890f4cc98308841fd5ef4d281921a1269f5787d52545c63409488489be608b3a8cc5d8569b76302ec63047c07e22e36102ba209404f1db17299b762ae8fb35a1c0ad612de10d85e53e06b7e8b79222c4c9ad942f97c6a7f978ba5bd6117e27a2a4a0a732c049e437c36f5b1e035b7f0a1a99635796bda9aa7b6de150e2f3ccabf0b37dcb65cda051c234ac75a4ad788e06ec104d87af00d08740648915ad5fdc12d9ae8e81e5b7eb8e9d2d3c423bda3dbbba2f1f1faf9b9c296e5a15e3115870e7fb825696b3a01b829d862d42dbe2aa006be8d10cf598ee042d60112b5a19505c80d8290d106638f2b37e79a63d849b5f1b2ac5a406f363eccad31a8910d1455bdb1a82b0c06e966ca277363023e393b32369a3aedce5cd67977e6a4aae7bcedce97a8bc9f3bcf9b262fa71bd3e27a11a123893bf10e1a716d334e053601847ce42b6ffcf107db0a343ad00b2c8f08b4352efcdc186c2420e23b4dce02a38d9b62629888a2a7d9992b6b4c7de88c12adb5f45450519e3e1cc2e164765b53337698f5a80325de0fb56c1dd162a7a4ad4b10a6ba308e60bc1e20533bd9f1f2d221684f84eede95564b90d139dcc0409a786800673cce805f83c0f0ce1d393871fb3531ee6ac25eb46b943047f95919adee21348f665a6393270694a8417b63a6262da7c2970c44ee482bf1aa7f9bb774295cad914b118d6a7de5dcac4e28853e2ffcfbae0c17dc44ad49e0a65abb82e0ceaf2543be6cab2379382216181193950f31a65060bba063a52c8882954a2bab26adf38517a4abc33e85bcbc5e44d98e329ffd165ac1c02d4a75171ae28b4ac9e96b64abc6d5cc1ad19ee473512d5bb6473f3c96ffc7556da485e0b56dc5f9f4da792cdba987cbb201c1fd7993ce44b62cc43e2f8a84a717aad813af1802015dc88b194fe57596c5c54f9f728b68ba063629a20a610c63bac402385532e50344bc165a684904d9f259c004d1f79f8c093e1913e7c900b5fb6de7d5804062a793338288cf3089dd635bda065d9ecc6b130b7acaf614c530436e66c76920c57fa3c5f55925f91736bf85f94e076c6626fac9c560521f36b85080b16bba642160ec060828eab8a9a2075fb4530197e97fc59b97cba2cd178584aadd9912acae89e1dc94857016282018302a4642d1b057180ce881b893b797663af8b370051df1c68427e15adb0492295ad2f4b2c74ecf940767184b8710f140b8e6b04863522b4ce58b5fc982a84aec032fcdb79bf56d396f329c3d8c8ec5e1affe8787528a2b762cda9ef60776043c127d099f0ab0b17001cd9119f326fb972c82c1944d201076244e9f8ab381fa6bccd39f8a8d8d90be784a9fafa74245f833554dbb4a84687b7158a5cf0435577fa6f9a6aaf4883d13960df43cc85ddb22b9b2a567c29df2f751c123aa0c0e95ce1228fe19ed8b351be8e8993058b632b4d05e494c69d4611c9ea34d3db8742979f152ccabfca3c8de9573de5c08e480ab18075e60b3ceba2f839a6630ce9259d540158c0f2d28d49112a79333059ee961ca8c19069914c098cf99887cb33aab84e3b7a6066aee22b4ec770dfb1125d9f7b78932ca8ce739ea892e68f7077b5d8f7acf0d8a7ad47b469542ad59fce7157fe973f29e99d32e87f34cd3ed5b0fc3c03c4f659b89e9e2a9ec2e8df6f2caefa5eb5c72ab55102c1d9aa9122c883a4a184e454b37cc1cd2d4e00a41995e803608509eb727509b83bb519036bf95c03e4f7b495f3bf4bf2895874911b36146950f8db978d6cc31c1babb28c8cd05e388ae032beaa97760fff843c300042e0e488beddc735dc2247747f97b73dbfdcc82c57b684248c9471da47be6743c17fdc10aa8124e12aeb13ae6037dc607647af2c4d26b109e5139f21f3d52ed6d9c543b16be9c38c67b772c78add8d63a6151e6ba29128b31959313dbd14aff1ee7e76f0f1fef9f9c1f1cfe74f2faf58be3f3a72f5e3f79fce2fcd9ebd73f9c9fc70250cae55e5dcbaaf20df3e680a855ad25c366b9585475db1ce589a8dd089a63d7b388d529422d4cebf405d6fa5844641a64bd926155ee57f379de42576fabaaeda5d4938dfef1f60b5a7b57ceab65196dd071747063accb771165c5769637e0af48bb1282840b716d1c0541828a93c576f153c53ac40f13630b4beafba41394c500fc567643c4778fed02b81bca070ad32d4f82620b516679397d53578bc6888f715078c90e88658eee77aeaea4d6a9824474eefde3522c855f4eb7ee763dc7596536c5c6dd74c65df0a63d842cdd3060ab6e92c43d4d8adb112cefe187458e626c491e9b15f45349b7369eddae13b7cc3ecde1fe6b882faebce31154fe497808837143e400dfde1a3047d6f8306fde4ab0b85fcd1755a9bc65b84dfeecc38d38cbc0ba05c231ecb12d150942d7f45de35a74c543f8bffa0adbd42a1e68b32aa97c8b8a6e6d05b982e47e1d7930b783a9fdd2810cbb3150893bb13d9490fdd0e3f23ae27320efa1fc230f5e7fc052effe70fa3db031d011e51ed008843ef6993a87850fe8c840fd0e4ca382cb0663a0677ea07cf338075926ba075ea73a1743bb42632ced38f13c96ae6a0417817b49b465db964af52f3a7753bc521a6c7037459572e108a7df7a0c51c8c463e9aa8685b7dc8951981a30a9244b2a1521251f6a1f38049974cfe57b8f0136601372466587db0601e57134d6bd997825b503852d620c1ee78ff23ef4f24fe35ca58385fc4be2f37d7f15bd9428f00af0a498f45d764f92fad5be42961bfb833d88d6781f74646b6c476bfc1ad400d38eded6362c6b8275bfee0fdc1bca76d9af09b1a1c38fe01c4f0626a0b1ea2f0be6a4fa7b60fa8bf495a5a42ffc58dd972f7cf0428cd33df461acd943036043c1d4578923d680d31211eb900199aa3c0daa3eba5dcd34acb9b575bbaa2252f5ebdb559d44aa3e74aa466cc5422b3c638187b2f94d49af594d561455ea1d51326afd362111f6436f6a4f089266fe13a252f531d1858283b2da06e7d70e33981f7adf803a41668c6e2287305d6d62f35567dbdf7a6d274671a597b03b6c4b620aefc14039d57d3b934f546aeb7e7eee00f9c4232e71740f6174f8f27df1e413bf6ddcd6af07e4fa515d0bf23162a767068748fa5d3b9baa0c8a2a68384cdd018fac8f394c50b4a74211f68d9907a14bc1644d2eb80a0fc8876ecad84468e93c59e9c411e40fb33c3bacebaab656ac16b712bc2e72d1b46f70480609d8b471976365d0b3016f83d40494bcbe43777e1d35135017086bff4bc7a78db7ac2442935e12e53f891b676d432824fdcec16d0e3a660619bace31c63dc250756ead15596f7288c3a78910aa699da039965fcc590ea7b6a66aed5606835625885fab5e0a8bfcb99b0ace18a335ec96ddbabd3ef513dcb1a266e4fa109a233d7256ca5deb3d3a8ebf628706a65fecf85fca4d914ab40f4736e96d460fe5e4c64319e9f95fbbfe4588ecfcca2bec39608a9f8cd4286776ed5e464a749d0b700b40834b474ba69a1db87acbe970c3dc184cf2f7b26b8fe37029562a0be05050ea0648349dc4e9d82e58cb6f5895d48c28b14bc99d447e83c16f161d5212efd4393d496c11ac3332a795d8099c9036ec3986d1e21142cbd83d26d848a14c9bd6815c6fd3ea8e64f2e2f7ad9328eb02581f0fc3cb902b665d79a5fa2107aadb79cc4faa9fabfae275691a89bcf611b7c481d18d63a907e4b0a3a7adec4135e4c30da7a543bbe65499e7583563eb612b394d517535415d5f7e9a9ef9362b2b8fc36c1211489cd7a25916adaf4b393c9768ceb27149cd2d9fbc4a5cfa6bdbe4b7b3babaf2b3373bb37d8acaf46ff876ccaa23a46d553b69097170960cdb9928a3baf3f671b1cd5be75c6a0803a7efad815d220b0360c507511941571fb4d1edee46a93f89eebd88ec07a3cebbdd3d25e5b79df2b809b4b8a1a6c83ed871ee84bbe72a99ff064c687105ee0c3433b3d71fd662d278b65493905449baf846f232f72cf1a28303d8e802e492a4cad392b1c5d680336051a5e4edf11951ae3341bd9f1e8c90db9a0d13de08d3a4237b6a279a40c89b97d5b26c45e6c438536961906025027765654a32b3676325f0bef63a6dc29895bfcb291c8357b9964654f3723c5249c3a6488f04df944b554ccc55939ff3498f8621d06a00e5a4674c1cc470c1af8b8a67e404112674ea3048105d15e09e3fe1e98505e38c55b6ebc5c4d166fa1d3eb54a155d89b76251f05474ac06cdfd1f5d119422d593ff2f2cd15155a72a5a6bb84224933e7eb75b9dd45d9d145727f55627c3d53173c8d4ea349370251257a353dd40b21249e74a64ee4a104ff52e605a4e02aeef804d3dfb212a07372ab21d7cdf6133ab964566c021ae26daf1c472e4f1c12e472cb19223e541d1c4b3c89b37cb5ab86223b6c7d632e51008244b19686b4f004e8442ce4b9f63a2b7636dcbc1f488c2d1c43a7f47fd0dc889b33e27ce664dc035e82e7bd983e1002ef7bd7c37f7d87389033eb33a0a99df49831e417b9a15682133391b996cea7ba5e6281b1496d5259fa484f80f0d1f03a2260cdbeb35ae53f7ccaf91654a26eaf990e45d3b511d502651a28a45ae8b612cfe45ba4fabaa44759f263790105791871a55791af340779dfd046227c0d1fc392f8ab72215f9a54041121ce7ce6ca20bdcddf8bb57c78f8f0ecf6fe8e3a652a42bbdb786a06827c3d853910c74d18111cd795af49155d34f810f4084bcd5205a4bd577b3428826009962bbecb7c95f742b8dc621b99d93eedb498be3759b28dece64352a053df7ae616526b032422ecea07bc2b65970fb7f20eafc52651dd5d5dcca1fbbce087669704dd9ebcdfd751fb8ae31a0aa58bc9600bf97255f34b3aa456f61ea05f02badd14ab1530bf8a2f29ed1512d525ebb4d12fac4768f34de5b2cbdd75fd5cecac1afc8069fc8cae9b281c21d77500cec8ce00e0ec2f337f853876ff56920ab72906766763d4ea4fe7fecb2af1d8ae0a31ca2e320c90ba218938fa44a54adb90eae8269d759e0dd669bdcb1724e87e760c2e7c57fd1c986e6d3c8811300882974744b85dcc078891f7ae3f5079b8f5c3b568cab61409f6bd3ec2a127efd8d67faa641a7f68b65329cf5f0b04390f4fb2be4dc6755007e481abbcecbe95b3141faaa6f75ccecfa6b8683953a395a6996af92699a5767a003a5df2686e1906940feef4fd49ace10b69cedb14c14a2152c391567121b445b3522f5a4a37226c06c180427e4a7e320dbe81c38c706b76ffbdbaf03a560660e85bf63db8f36c98edd64a5f0c4e14a3ab6656b369cce9d3b788eb6d0aaf8144fb20aec76a6b63208f3d656c7302b0cf0060f98be04ec2a6f67ec425c37ecdf708ca84f86a43ffcadcacb1e76d60787029fc0774162e5c55e3045cb4d23c7c1a121814918f1199010f51eb35104b3dd93648da32c940e9c4a5af128f1b487fc32f69a7628d1611e5554fa36c251b432c69ee355182c13a2a1e88c1b1e3b2bea8427c176064a7bbb71e295ad7262ea8c2673695263f222d1fd977cd1eb93ee13da3d011217e25afb54e8255a02cc4626055487d0a533b209578f954707faff67efcfdba3b895bf71f8adc8dce7829e9366b0cd128e8de32f6b20610b9825c15cd08b7ac9cc740fd33d36ce81f7fe5c2a6d55927a6658729ef3bdef9fff48986eb59652a9542a557d2a6c5d786d1f6b0bb1e3dac9ac4f139db495ad15918bfe9c9a7a75da3967e63264c1481dcf3b37bd860d1281b95304cad90de5f64db86937968caadb75ded2e164c1e19411363b68112fe1d5ad279e447d24958f68ed69b0f62a84964dd2f3002cc935c52e7d52da8d41086369d000bf43c9d1a9f5f21535eb710b991c39999971d14dfa3a5dd957b3053a9e2b72630660293471b233f2e8a196a2728d434a486c9224cbd1e4884d7ee75166bc2761dd98da74fa504d1463d9f11a406fc284c88384986c366957eca4899fe950fe66a5bcd067ce07d41d437d411f12c648bf983148a4f39bb7dfc0273362c22a5650e8c701b6fe8393de8b4afe56ce9e7b0272d82d325d112deeae4d0d1664c792050782db0c869853d532802f91aef0e77b9986ae6932b98852b588f4e6135e44193835e3f5a3dda5e4733b9cccbff579156c5f71e95ada285df39824dafbab5021525516a5239777709de6783654f32dec57f105bb7fbf2acf019288876a97dfc31be8307bb95855f8d5c80bf2e3364184de492cfc2b42871f662dc7ba1f60adeccb594b86a5a8fe696ff78303f65a90c38807c96ac8513857b653bad1ecf999fb56b0156d7b12ae6988a732cd534eca1397d654c259f778cb4fd917f3d3cd20dec12a56c98759c56a49261b971a9cca990f6bc4304b8e900e56314b4e98250f304bfec5cc623b68f6865ca9c51924ff98f033d4f3dce3263992dce326b173c88f0547a5da05958f3665a52fecd9c4696388c972cd64f968cd2ccd508d01364b37ccbc40d8ec24e21a0462428f2e80d169424066e65f1fd881f86029fe27fdd36ee9d380e5850f823396ec06ab0c28c692a0bb7f5067809fd852a8e9a28a0fb26e1817db835a3f38e71b29514fd901eb45bf3fc4ac7ab37c2bbaee645e3533744af8ce3c86fe45a2b95bd8dc41b33c62c70351fe0351f74fa9ba9f42876c659095323a05e22e47f4580d993ad92190f754c80f74acb2696767e417f4d59d5d31d4a5cc0ba973fa19c127fb13b32959c896028830ea70bc6abee4d7a2137351b126fb488df3831a67ec0ff08333c00f92993e84c8acfa3e75c7091d148de78aca2bfb2a7a2ab8e7a6e8168fd912f7978640dca293f8612c6d5c964cb7d40a5f0a8e84151eab21df1a1ef22d67c8b7e490bde9935cb5027d13d12425a8519f9dd36478713f0b2d6ebdaeab2c32896087ccb6531d947f753b607fabd8019b4ad396a949873954e64b373f8123620461a61b089718967d058623624a8155b9753acedb860327d092df49e69c209973aa516386c5ce09593a1fe0dae39ba4cdc926d2e664adb4397138f384489b93f5d246d2f95ba4cc4653c5e005881a446d7483726a22d7ac900dac444fbaca95781adc9037973e1b8de1948aa055e3a042e9749d503a4542e99408a56f20c5df2d953c2403a9c91400478564d3046e5636b92c3e7f9e1544fdc30ba6107451dd9930990c5b3ca56a2176fd996eda303ab44d6d085d1152757d45377112374f99ed2b7e0e4c37011ba96d7a12ce9c3d31879ca9f75e96f811de4ed48d18a5da1e9b7826ba4299e8bcca1803ccaf8966242ccff49f34e84d62a79d438ffa6c4f3f124c10aa89d81826b19fb99b85ed75f82f418666fc17ca9dc7989bd6c81f7aa80ba1f4e024131faa380dd622a67ae26d3d2c9042dd212af821fdc12397b8d6e851c592c33c032a50063c2c2a69fd2994f5a790d69f226cfda94631abc8cc28935ce5d54e66950c44952c256007592faf56ad17b32ee4a219b8d1917f003e65d6c664606d5c514739b13600a86ac82e2b17067de67ce0d865e517ae5d7688b3f2f58b4a10dab3cc0e2e9dffdca2c8bfcba2f06a09ddc7995af0cf5c5a0f0bcca4a4fc20395c42ac6052d4fb612b4c316c85b1c9340beb3d50c48e13e135c48e872c723823468c2057e2d09256f3223f481cda843f8bf1489579a2b0568913bc65a35255864b3d0b949a8a81494b58312236cf01c021d871b72638401d2e05e8c6ba4313536e23b15121380d790e013cf06a9cd7dd7c9a407e46b0bb48fc4f9833e3b96a31ee3f137d06b3fa67ec4973474ce8ed22dadad648fb77f5931dfde45e8111e91e7b307df70a0bd3f773b1f2f5fd81d7d47de74181715f0e0e440fd4a1ec47df9d62d03fe217e21ff17374bfa0885e3f17609432bf1fc7ec5e617edb282f03e578bc0a64f45f184c786787407feac81885eeadb2ff8cc0a44ef20dedb14a6acb38b89e7930a36e948fe8e7751bb68192c94bc70b087ca32d19db9c7452ea935230962c5ac97b28e285724f9007932a1cbcf76b81b0f51e236cbd9f0b0cb4578481f9ecc70f8ae87ea19d25ed8488de3d28a2c7fe9bccf45b2e1eedb46c5dfdd184c77208e042ef77e391edc6cf8545b6d49e62911a586c46457cd31e03b0aee2f72705dcddcb1f4fc58f2beac76fe2c7758da656005e834e362f7e5dd65f1d895fd7f4672fa0e4aefef0a5f879948ea5ffbaece99dba9b277d56f1854ec68e7bf4baa0406e4fe8cfa7f4e7ef4ee9dfe8cf3f9cd7ffc02d25257d9996e8655662fff8dc29ca35ba158e052e75b22f7067dadd09f91295a51b5b68ef69471ec63f8a1634994b4d724588831cca640a6e1f690ee946653292918b25b7161bad2a87707160c2e4610da64bdef13dc5d77100c6e178dfa35ba197886fedc9f2293b6475c9f6d89fa55a1d2a20cc5c258023a3ddadf216ed5b6ac6c4e4fc00017d1b7628966cf2bb582aa20ec14386eb684fff2c63a75352d13aadea29879e5911e878f2700b88a6284f6a9ec81183bb900e2d7063177ed72fbc18d67fe8370ef052a93fc0aeaaa96dca50e70939873f0193cbbe996ad96da0d26fd00f7600c47d02bdc5e3fc872d9e1002a476f889f11cf54d9f83e10953b3ba4264fb1b7aa9d809fe4de7d2cc24ede1ccf450acd8c46286906924602026a4903c051f68af9c8edc428fc524c907c70635c4aca5dfd8a12481a045c2f6e0ffbfc1c41a4d5d51fb376f2c8d190bf13afaa31841357f146acdc8fa6220f15367c13d61878a91f4c2c7e71cb2e6a5ff67c8100e15234b1222ab47d82774c198d02644e527368ad3bc56e47e32867f90af34cde567f2972940a9afe96fb7203a0b300394fa5262a2b5f679e59cb4653061c380cfb350b364e0a8bf96e6a5171e2e263cc6da5a2ac941792a3373e5a746964876cf7893f305cf9ff17c9999a8a76383ce7283f192d824a5b778ae5402dfd40d87b7d271ad057c8052dde23a170528988b5ad9f2525b7b337c80b571356e0c0efab4752c25625ce2d8c7c7099014727c43ca033d97f2cfec0cd6b7815e8aa7b9a8c6697b242f354a2f9f76ea6d0905796bb95479038a29511e93387c99d8fae8c4852a56bcf6a68859fe169bf759e03efc8dd349f38dc1fed61d33aa316470409d871785796863a20c15e1fc4e0ff7ca915a5f39c9c37909cf4612c3843a5ee7443405a22ea8af9138f53a10c34cd99873f47ba2370d5f3f3157722150461067ec86d8c80e5934010680bab66368ba940c568c6236633f890d4c0c19f6b119a0d714b2e6a4e40bb3f694d6a31e6b95071877aa1997dc73598f9d295487b8d9e764b03c68529911cbae932eab1a3667f56136a72cce2af25817d6145dc5d854f9f579d68aa4b77e66b3321c29a966ba4fca3d96e8630464d315675cc510bceb17edd91ecbcc8379b7675868e58e2ead56a0b0a8a66c0c00fa4868b1343a2031fb0e98afc065121741575a809f33f83918bfa4c901b6fdd4bc896da92cd081d168b525a40b90540b7aa15769e5ec93de3bb9c7228b52f9a6ea38248415915b87b2008a6fbfa2f146376e23a2bc1a8d1c2b70d494274f9e107952c2d6ef877d4ac127b62a6094810d512cbdb21487105172dee1cbd145193d96916f05b1fb4ae263eb9b5a041bd2b50842202fbd03eda04a427db02006304a46185dc5c63144d6074bae02dffb1d476d07aa46878424dc867302a5b647ebc6559a94603656ba74dc9877afb29fc4b9c00997babcbda36d64165d9f065d5840e5d705ca4ba9e638576f68205fa93606a20cd34d658fbd2accb62445bd95398ce17d628fee6976af705e78fa2e121b7929b7e01207e58ca4ed4e296ae9882cc96c245e40e80d98dae81d88c91a9ee1c81eb91f11a52e35d228e47690ba0ab7647b72e1820024f4a24758165c62597007cba2584579feb713de8ebf34b160fb8e9c80bc5423566812140e89b5525352ea196a57f2665f7f8e2e7d4a5b25a22a53fd60f41a7f05a48ee51e9b1a38770a4a3c301b4ae79c2ff00dcf6844f33668c783d4570348ce5ef00488a6c89398b1c2d1a4d03d5681b5a903666fe120e1421e4d623635b636a33ca99c0433214a585137c9747aa6724768a4129b76c4986a2766af5ff0446339ecb147d0ff6567b2beedb1a234cf7429fb48ab08f6c983d91cf2c19ff0fb49934f397ef730396b97bdffcd233e6bf16fc3c5f851817f6a341ef3e00e4f9725a4e6124fedad4bbdf938cdbe639fd2e040a12e789bd89b84089fd4eedea93ed0d0483b8f9a8f3c62a29ec867b41faabeae8caeee5c8bd98b827d6247d2be9f8e682381d94095bb6fbd089a0c1f6d32676b0474cd71d63659d2476f92b78e6fbeede595983d157d7c5ec46c598ed3bac9d5454f2a2f1332a7d70e9fa01ee3374344c1cd0548a2980d552a9ed0cab461dc2888723b18986755422908e68810e294353c61191f754f3df42647effbe14e9a198ad211ea64ee758bc28fe1c1e4d25083372421ef9c3d449f669cc701916acf2ef4b55acce931317629a843553b3b60a784755e1768e3d487addc3d6ce934f5548c10e216c8454edbac10498926646e6e13da5713e6efe530a0cdbb2062fad1ea2e0ce24259bc9f68347cc2a547d8048d2bfdee13dc96ab6638f9f619f68ed3ee0ce38de0046d047f7ec78d408b87e64bc4833549868e66fe218c1e494a382be56f76d06d5bfe66fbedb7489b6fde81faff153b50ff9fdd81faefba03fdf7b0d8f7dcdee6e54a81ec92b4f114af2f16abaaa67919b5a545195927343e3a97f367ceefbf4a6b94b54180650831f9d7e8aa76c994ff55364937cdd0f1b93b771fde3dba7be7f89c7adf0fbdf0f1e132d7612e84cb61efadb129ed50a256ebdf1e744812800e491ce810b78c0fdb5206d3991337317022baba87cf5a36b3a9391289c5b0a3cfee3a07eda74f825cedc3f6942f6e271d8f46a8c4e364c69d97de02f23370a6923084d43af92fb2c643a7af79c8c6da63501e54497ea74f9f54be5cd47fdb9ff8eb7ab073d94bdfbe33e839e5f96c38d834254917f657e9a9286725b121a6ce555aa6d8f2189d62b7340778a6963b9c5eb869471300a10c7ee5791feceee3977fa15b76fdf7b1f45c49c9699ab9bea437cbe86349ceefe8b5531b0887bb1c27739459979c5ec6ba6b31aec14f0a5d861231abee62e793f3e7d9558d7a24bda12fd39f3bd7ed6f3727331abe1a99e99393179ab24302557e2c5dd71f98b4bfec6318851ef176ec669b44ab5a7c89c701de9d154f7215dd964a20aeb4cdcff093ad8f1a2b00a7141b8daca1efacdcc7d03d5a3cc79aed703a863bc6971666f363c90e213b37021dc33ac6b087d33de3e6a02b42a660cb9ac61ef373e97bb33d396d8c23db87d04ef33c00806d52b0351805ec2e441a2baf4715477f470137c007437908ef97c190f64c81ca09f59e5c52a42629da035027b8bde3709cbe0af3d247a4dbfa80b04456a57c8b091ad0f90376f1eace8f81e45b377456808087d3f62866bfe8bed9cc4d78cd4aa6d5e4b60e5aa68b3adb9de3113ae8e6466ca989777d93e1cd6ed5cd07acefad973c2a47483706032dc91240a2ac32c01d4c16dcf92473d21098d14934e59dabb1cd5d55c6eca11e5d694787744504ee23f92e378023caa3dd16577129967998114dc82641a98d25a7f85fe9a41d1464e3ec86826d843e5319a1fd7f153162f7aca11002c4d288007f47a66a5828743fe8acd5940d07152b38484176952af8463ef306ef0d3d3870c77f7890d55c8d0616589e47894b8de00065c8bdf17f14f40490643b5ab6c71e392bdb17238f833ab11d325d0f0e5839bebb4a6c1f15d6894be8ddebbe577358886999f54b94f928b5d0ad4202d4da5925422dfbbf49a8659b0ab52761628af1fe02982b489615b0ebabe5fbc46eb552312ab0470ba12cf55ec69b2f2569947869786302e9669f511d6c14b313837127333a7e747ee7b2ef26c1e60a718d7a88ee7f2ae2fa659186192b0d5c73854eee5310510a19d971fcc93c68e62170e609593c137608df3f8a26e0a0311962f7188a495e9f8cf085e40c9a1fc22d46fd9cc36927bc4fcd56e11b9743f8c6aa17f35538c7e54618dec35f0f7f26bd8db6f42da2222808c953e01529c64d50e85372e080ec1d41e73fa69ca04a031bdca36f6ec2372e02363ab5dfd430c469cc6e420f4ac9b053bf35dd35348c5e79587dfa6473fa8b1f4fc1056878fe140ab65c223319a4166a31962e5a4f41815fea0f2ae8681fb3a904f43864d157ccea5af4ea7208bd7a98f5c20d849eaf02ac5ed3df15afc1996183ee1184e8d4458886c5fdcdb5c4aebc0217c4c095c27414232106be429a97a7b11562ec804da420adbe5707656e09b28db8123824787177531b8b4d612e0f59c5f6d84303a7572916b742d997c5f1df2a86e375d2572ca3ef2d7547ffe5e236d6923628806290ba841f3d911a6f204d03b27b1433af83fd7711a4e1c6a2d990209d822cfd7a41aadc5c379f299b6f6053516a9b08be887235842f95a9b8dee1f7a6fa8d85abad372476be7811852adabd7a2d20a8c344b73dfaf44908b4032f6bbef491a62fa47c86740d6bc6b0b5c918be4bd362d41b6f2cfdf0c6d2073796d9ffab04c51ba10eec099f45e9f1edb74143813ea31b7b5e69b26c922e9c67d7aed863da16dc246ed9a32db0fe530de7bbb5830fa285b506a64e0a9b9f4be4349b9a3e801fe12a4115dc1c65a65ceb47ad2c95d18a73303d589612865cdb5b1c53a93c534a3c635a44bea920a10ddb3387eb0a99857cff1b9b05c9a1ddf64607f2677ecc959b1f28d5774f3a69d3217b24efda9d17fe137547a5169e4c18a057e1f9f3a61aa321699e5408041479c567c7e7aebfb3cd6f30c3c769e9c8826fd09c3cb1a1102beb25ea33b0c5cda4c1b49af1f5b5983555e8208c7ac6f327cbfea6f2933149908ab17dc5f6d8f6b10c99d0371fae4de7da55d7959f1a17c463373a0d4285c685724a31374f8904133266d66d1768d41041d05426eb97d613725920679af2e7a1663b55744fffb6952b2823a999646ed338fb807575cdc8cd19bab6ce7db3af9a824ca6952657191c012765e450802eb9dd0145b9b514cbc382416a89e5c2cf089965b0d16bd02972ca8260661b206ef95564153d001553bd50891ad53495238d2583a8fa1a682f7443d7c3599ab4b9a1d35dcf4a180fd17e0459af25c5a568cb750729d10d12556207702847ef9230c4a2a63a71481ca425ff1646f529f68736c15b64f1dcbba4fd26d281178e215de5112dc6fb5f506087e3d4ec7e93e1adc1df147e71e5aa63383512fb0e87e4dc4d56f34ecea2ffdceef669901a371c58f3c086aa3b2e97a4fcb7061bbd1c001ba541396a26f1d5758aae7aa43c91b950126785bab671eb278929a9b68276c1a20c4b202c4734a21592c92ad7a2161ef23e89accc4d7a4438c94bb29485d2b73869ba073483a3e1cd3510284a6f2c680222475d9593e2fab39863f0485d576f3b812100ed26b90503ad9634b29591940814418a694f97cb04ec9b0925287581c8ee9591fb886209a1faae3af53d2cfcfa063fde713efe45999040783de15f50d315b7a602658af4d1ed36efe1b653f18b52564ce655829d6e5ea93b09cea275c2713d18badc2ee39058d977cb4b750e45b0fd7480040fd224bd2f854efccb8af721af2f93a6c94d3920ff889b50087f2ed49e0d6c378aca07a46cbacbd220010d2d082721bb5adad6a4691afe5ed76644e5a412601f2baadc5831ef53bc2af127affa1059b8bc48351eb939b8cd7252267068c362256c85e5c40aeb1bbc70517546747c2278381782f189405c3195e2e69838b0fd02190208eb7b17a3f2cf9513a14b52ddf860ea611e4c3dcc4dea61eea71eb69d02157d759654f9b7d21b45da36a52135c103e27e8e633d1eac0a71f24938df718aca7cd4ed25ced2168bfe37ca55e21c56d015a9902cd57c6ec7ecb9fd42e7b321eac6b1e3e3e978605a2750fe9f5b8dc5f06a0440d722e27825291f9e649f765592e0158f125af3430201293d6d1c64782ba0b89f3384ee3de2eb47685a12774a5870cf096cb410e8feb535f955ddffdaaaae7855fd4aab7a186954cb6224cf1deb2a767d7581d121ecfb1a64c97431127d40f492f2e5b6ebf69b9b9bb038645cf1b9d7801370b824535e12c6b526b7021b2f87bfa9d927ab9bb58a09d50bf381cb750485919beca5bb01d028bd544277fa8c668d92e2568dc415b8675a68b9e3572e9a6e97497bbad27daa571f485c22a1f5c69ec6e30201f38009d65626de627f2ced8175604f6fa0dbf27175962f40bb33decf83baaa72774ee5242b8f602cecddd48ff21c6e0f6ad8f2931bdb03f2ca14c25a0cdfdd05e85911a1198765f8559769e1301033eaa076bb8487eb18ba18460a9407278d14282d26d64af0914b666787cc989288c5f1fc7955a618856e9b76ae8d6263d38f55b04426cfe2dabaa2e6b0ce73de28eabb0a68f8c40f2088294ac261a6a1f4f6cc51ec12d80b940852b6c119c306c21ba8d28f8a5e714bae3b49e999f497a371a20e1bfb73959ed4e143576170779def2b0fefaf96873f7a7453c5dde6067b7e7db31a88956b8808bbdfb12ebbaf51cc794bd7f13b65d1da77a55f505fd2c01721bf3da614222e0fcae8a93c4e17befe6fd6ab6bc5b020196e5d4a9dcb23b835628780f93278ed9e8fdf65c9345b4e939edfae92a6e4f9adbaef00862cf84655bbc776b67fbcfce3959debbb9747ec13d1e51841d8288210fda545b497e724f3f3fc79b6854c41deb17fdd613c8c664f10e8f5d9a85d48db738a6fe610c64885cdb2c89857f969074c86a59001d4a18d33b5a1fc1da5acca39339809d6e8bb1300438328bad5194398c91a62aec0b51d445dd14ec66ddaf1c5899afff3700519a885b11d957c4c8507813752534462914dd421a02b62362fa20a3b83d23ff7b20172374b9a7b7b48609299726cadbc4cd1f40fb95089b3e550a3de8b958d668129616e7eabca8fb59a85e78529f699b303365b331e398bb30133fa64c4c2afc0dfc1f4632ec63c1faa0308127e7bc02623c7a3797d7da38157824fe5e139983242fecd80265e909dfdfb1c9e0a17cad0ccb4f76270a687ba156c5166727130364d79f2d37a1dee6ca3957428fe6f1d0b7b12d059995ba921a1e06e16a5155dd5be95762057104b96219604f9ac91bf030c5bbae9fbd7112d4032b977d92c1fa13e58791bec0692cee5308b94c84dfeab7a5a0ed7ef4c2d8c8914410548cd5a63095c40abde858f1dab0f1eff7215238eb443dfc62355d60275415b56a5def82882ac40cba6eb9374cadfe1fd41e9bb79c4479e616927de4c99f5746cb7bb0f23ee2a7523f30659444c9c1c975880013b827f262b8dd2a8935f3bb409d4e2e9c1df49fdfe7e5129c6b01cb35fa21cfc3b13e54002066208bb57deaf76b64fb43941592c3f3abf0366d0c4cd7221ef62afa1d402624f7b597a594b1a808bd31009af1c4884d7ceefdf91b04157932f820161494063ff397a29ce94e377aa032f6542be44c32790e7ca364caf41fff01da45e9624ceeb1eb491e8803cd2890d1a784006f3ca0675c3e05f13716b871ad63399037792b9fbdd4f2af09942db06abb3ed3af1702eb0e6ef250a53dbb1c1d5060313dd05a334495b4e467d7ba2d09b0f102091e600fb565fc11368250d466331a2b0bcb238b7c3f0e8e6b0feda82388b9faf4a9316e03ab6e9c5726ad298bd2a07c8676123858a8e3be142336eabbe88ea5fcb69d7608669e0ca3ea16c8597dc3f70b29005243d513f3a9c522511bbd5659dbb24141e9e5686ef55ab1a9fd4c2d66b6ac3f8028900a649f03114bf9dccfbe582e7039fad788d6043bccf028f496b039f855e1f076157b34dc8e2a1f9130229e01302db8f29258150c8ebffcd146b8a018ab98b4073130055ff436381cd93b3699be4a4039981db6a425927d083f5ddcb2b2ccf90a1da4e02d85dd19c31e7b590777b1a01473e33ab37f68afa6eacf322bc9de1c3e0b1ebebe943f92581bb0983176d15767459a1314cddfc2c62ed3b0e18c43fd2fb46ea3a59204c8680521fa89b8d4d1b0d542b0b666eef94d79c5b675645067343b5aee3f9dd5ab32aca475ae543e53f7d5268c7a2e3792594b6945499e3f9c5771d9cb250a43f8e45355c22d2ece1c77c2da7f02acc29eec46718c22303fe5d4b6cb6c70aa85e6976f6fbb12f5e003b2d2095d84071b54442efd05219fad427443140086a3fa1ca50aa46832901571f61c6492938bcafb895d5503084c974e7fbdb2c0af7149100cd94981b0e1692b73f907abdd0b1f37b268b89aa3da9ac459b807725c483fde2eef6957fb14fecda15faf93f4afb39ee15b9a3fcf20eca6f89f48295823d6546ce915cdfed44fffe6c315350573b4bc7a7e83290ea49be53e35911c41fc0d1d7821d347bb9f9ce9ce41fb131864857f06d1d54883778b00e15c8ea32dd27a27b45ee8d19bb21e5a5a15b69bcc3a7f22c3c81b8c21b2a34b0327937c02e6b38740aa99433192f683b32d61ba90682c007cacbbbb14ab56130d91a8340a7ec5404022e7500dd520ae836851c0f83287170a2a51f8c8cf5d849fba16679860f876a9610fda91c199e80f9f004ccbd0990749ec90e3bd322e7434dc8dc4cc8fc3f3c215435b313e33c1f284e268abe1b9830bf827513e7d02da5fb9e0d0141543f741a23a5014dd0a1d5bedf90338972ba94ef244943a49e5195afc44fbd6eccd441dab32f57ea85eb7537f1f31a56435ef7e1460d56fd96997a123e1ad04643f5c4cca17f88d0605c0a8f7cc5bc28d7ff2a22a2c168186b0486d1596d0594d5dc8a3665f0a059a3261a05c812ecc0bfef81ab2666b18693a1603f755bd6359e1ba77af364305651873cfc6be7f89c721b70dc8b32b9fd9af02a63334e4cba1c4904bd182909feac0299dccca801df549fd1ba76b9c850fea0ae87e3d89f59948ec2e7ac893d383b6bf50ab65f4c2be31fa8aa9e794f1aef495b51af42a8c5e668f4a7d6824849db345215f789c1eaaa521a15a8e035fb7324d4cdf99c37f96d5145842055d135d91559a9be2eb5cd3851294c3fb1d71a999d57663ed8c726afba31073d94a53cd3f633ea1988595a0e221093428f98ba2f008daafb85f3da383d7453f9287d4d378486468b92d017c39bd0f31999c95905496fe04d43de34d54a94aec473c9d007ea229054ad0cfab7f9f9936db25243653fc9b552588fcfd5cd7cd91f9f436e999098298bca9866becbcd63921e5fb4f5e62dbe26723c3f553bed5c0a0fa7a17fe4c186e4e3af6aa8e353709a771a923a7b11bb2e2b12201916a97df1d9ed8fd1f8bff8eb4dbbddf38f7db2e089d7f1940729241f7f19857c17dc21b15e8cdbe6f6b4962adfb09f0e2a1495e3b6c9e0d701b3304d66bd7de05186fa5baa6842b257680722c2bb32828dd50df1da9171fae32ae99e9c3662f5f0457f26f8fbfc7956841f2b29c78a37d9db91b2fb77fdd994ab51d1102eed3c234a93bb6075675d379e93ccd46d5722584695c9f2f7efcf420f7f53be5528ca243842ff5399b38ecfe54953f245bbeca667cf79ffa069f8e2fed1a3876aa6323935faa6943eed96f3f982771d44bc37fdddbc86fbd257c9a2a99b325cf63ef8bdd66d132c952cfbf65e9b2d3bfc385a24015a1f4af7da48f2231c3360ab170fdfbc1d8de7cbae8a749caac72876be7327541c720fc9e95004b78ea8325cfd4df6d6d73fc09538cc1213851c869456999351ff988ed6738a78efb2c2309330b615e2934f9fb43b50f0dd863ce4390bd87e4cbc7e849a3a7f9e4d45d5e09e24fe31ccbfe2b5d7b6f9a7e4e14af101e206081e550c50c96329ce0bb501f36beb219c5d01866afcee5dd5cfa6e8160c4e7890cdd37b65e7d964e45407db108f02d6f90f804bb447579bee86d44a2612b1a8eb1776e560dcacf015e3c45066b86168f77bafe7a1851b11ea743c52b7ed8984873223d5b339bcb827fecaae06c86c16576c13a7e1609ec885169551a8930ae15c4bedab25da575bf960d2990db6d4dfcb4fc1e652adb024bee2c9e439efd9a1f9d71e7bce7b7a3ff92168014ec7f26462f3cf68554e215ed0db0f6a20866b893fb3281b8d02e6e33a5390c42363264c91fb2df5e2d85197484aedaf3315c4a32d8a28235cd6365d3be563be58b40b0b72aa32b3d988a88ef747f58cb7cb3e0a648d64acaf16eda90980fb3c0a9ff1165500efc503d25517f76bd266a24190c498baef567877f862c144cd79792e9dfca7ae3d2473af6de85d87015ec66684e13ccafe059aac5f19abe42b9c28597c1de5724a5922b3433c2e3c5546c2f2d83ca9fa9d79e6ea62f0218ab784b88a28189e659a4f75f3e63e2b1fcb9cbe316988e37816f0d90a264fce1545c23cb31c3e3f27fb83c76547a590a965fc982195fc211f836482844ed3e40ca443d336fcf89c177d345493257fe644a643d58e07bf4bf18604fa7257661f9f533d3b3e3782d82cdd512f18d61f49c3f1e706a7186de46a49085a100b031a2624fa305e44ec506e5b7bee58ade561e732325d50d3c3506c7d6eed0ce4342e8735609818364930df59f86f307bb8868fe46f347c24ff11c307597c2756600f89e267c0b2cf54e8edf1eae4383ae6858614519f4cd76bd2ee1454f87ac433be5f51ead873714e9a91273361ebc62973d1726afdd017c9a76e2a6adb17b4b6f360ac86d679e81b92a6d5b4efc18098fdcd8f6d819d8e3b3604e605a038701878dbb18d28d19c299a85b603cae76ecc6c8543b143c06e6c4d7e88d4c1de6c66edb2e9472e9d5203b9e86505480d0063e202ad862bc7db5e98cc5295283c111aa4c6d5216af845ad3ff2a929ea2dc68f9ef7d755a4e8415626f2f38afde95f452383b8893e339b6b1a4ed893ba32eb23382a04d7936b9e4277f19887542a85900083eb866bdbf6e4ebd89154417387e186f6aff083b033930e6ce739cdc01498b2cb4375d0e84c5ae3f6664cf01d6a746d80929a26f3ba225e463c3376aec98824403f019b434c4b1cb08b3b3f6a319fecb1744f9b71a832f66d9bdec7ca205951e6cafce08f15bcf5f59be3313650e1deab6c5546abb9467faa6c5519cd56a5d40342e9dd91d125d052712822e36ecc42d65a99fd4e820b7a2a4c1cd05d88aab2e5f506ab44032b8252fa3362222336f8a04ecee915167754742090676c73774fe30313bbfb9e0c400f65b2907f15d1ecc4df75191f8a13d815e379224e84b0e2eaa6e30b85801b95b144812f028fc9aea98e96a414ee5700be25d7908369ac303251f1eb2a1f12ea25380e94a8abb1dbad2a66a534d81432db51416e0ac11827038b2442cdb3b6ed6f6b018334a5d281e22949369bc25c037cfac4a2825e0a48ac55dc2ac7f7939e867e4561fdb88705ee29ecdce5760a61c137bea7e49ba9eb7cade4e24872f1d5eabaec615822715f2239453986820c6b08a7154dbc67f6722912b67664e8943691da93a8b368b7324720a4ae7004f12f8945c3f888e3a7ddc25d9044f917dea255b3216cbbe1d3b7a690933611cb2daf7617042edf68db456d6d6fde960b8ff71ddbd24f88661fd8fdbcddd1d4497687ab3a0c144b6c17cd50cfbe95c920530a871be03c544525f6332b2d3eec15f500ea2edda55d6a3925d7b46b89c1c1a285bb8ee59fbb9acbd06ab675a172764d97784deb76bc18ffc1484de7b855facb3cf859e9c4a8a2eabc7acdb690c77e4691751bdd82cfda132e8574293739fa68a450c8edb3748d2c0ff1cb4a5054c63c60f5c1f5e0ad85d4651b72f408c4b27abb42c810765259dc9c709757b41b6a7595e928dd6c2f4ad7ee4529e2db74f55e1438793186e60e4e021942ea477d4e7d2676aa92b5afdcabfeaa4209950320915f6333eaabe86911b3df8a181b2f565a2c561ee0d10d0fda7b02cc1df02ec85782b224eb4196f280915945fe5221540c6284312f6d9f738e6a0838d36d70e22820ac2091605f9b9a802c405213c8826774823042593a64711e20dfea637960b67757beb5df662ba0d272ff0a2521cb9fa840d29000a1362a183ac1a82f3a7d29c2df8785871f1cb069118dd0550abded931724c843280bb041500e670e30e84a0e19764d2363b63102141bb3e1a76c5e5180b36c5cb48bbb4956a13bc52470e81303ba598dd3bac9113821b57296e32ae9c4d7e238528e933c87eccdc9b8af7823b839234d7fded8a4f9e300cb840d2c979181c5b895de5a77dffc2899abfb66f1af3df62899d3fbe6dba1db4800be91b7902af43ea9d44f153a63c380150e008d45c4f249df25cbef91c370e0baf74e65bd7c3f5428f5cae77d1201e367d1bffb45e3b0b18510d63e942d05ddaf0ebab091eb56ee8d98d22c78c3ada37a2c1ee967d70c5904ccdc54b00ef5af20d97e6e83e959ca81d53331e4d7975b5727d1cabd8a1d8affc865f89cf7d19bbeaa3bf0d9ba57c16211bf49f2cccc1229a6ea17f668701840ecbc75e70f462c40142fafde3eef4d18adc59d043f98e3738ac48aaf48309ccf563fdb73ef8acb27bbd7ffa21d2204997e25a8b1d6fc6d2c64fb0e0ba4ec3cdbddbe721d102e48a05b4ac2db848ca22e00de1ea56afcb50061f590c3ff9ce66393c948a67f31289f572922c09aaeac018a7c24bbe077d6472ef4faf7cd04d9f130fafc321e64cbaf833df61063ff28fda2aefc76934060017ebff253dcdfa9bbb9606d93e7fe41a010ce83ff4b8591243416c2af9534ccc85f471481e461457fbf40f00a8fc4bb8bfac3c7a49a97f4b327e4e553a7d2df9cdfcf9cdff7aa200ccaf32a42301c660d1f8dac6140683a47fe359213ce9292ebd0a1f4091e88b29551b039803e75db66b7ec42ca6de6983433b5fe097a79d0711b9b8a7e75122c3cdca4026cc97a546cf0c195152d063f208912fe40e0c14e200e3aa8c1b9f7618595bd170ab9df3018fc5bb117fcfb68c865eac870841bc0f492ceb8e8c74b4fbe26e6066ac2a397d886a1dd5f8fcd8919caee5e77bc7c001e27806217f40e58f02276df0cde45b343ed6426b3f310df31df03d26c42a29b575c2ede45f37456452ff1ccbe74aedb2eaf9bf56b5f59d95f55844815b3975fc4905ffef575f435cc7f2cadd5b1e14813514a737bc581f045fddc3fb0c48ac951df1a17e1ea3b36e7cdfc4b60c175b16e2f36592982cf5fd27bbaabd746042cd62e263bde63742882051140baf773d37868f73ed4bc6b6361d2cef2a488d9636a676103a6f00010becccce40c92dc01b907421c03491d3e6829a68eeac9c031deb262f844cb8cdfca404accc8475733d88919c9c69c8d9c081e6879fc8e668808a6dda4e64ccf9c3c48e5cbeec45d751f5c731f5cf1e6fac7bd756d0d81fda383307392c76cba465eae0c897de987c4d21dc5aea18c9d6797af051c4287560d07f1849f146a1edc75e4de637fcb3a7a56c4ec7941fc33d9a6e924b46d860f70325c7892557665442dc7f92894ca3cf2d1f719c9e7e82e00ae1740ee59312d6ea2f3ce5d18a1ccb790a2d175e22a37594183a12b4ce5d60b9b4b91d20067e90a3ceb646a9862a319a2978ba1b6dc19b22d7a226f00f6947c652ecb2d77ca1b0aff6e950dddaf32e34ca1fc7007046378dca86237afd8a615bbb0a6c3640f49427f16e8008b156b84c66638ab453c3ae58683b9c3c1321ab168b365176dc41cd77cc9ea17bab249a19ddd8d4a5ddea85440e07f9bb897ffc8a4b66ea2055e3aca373788188eda3f90ef8a1d321e01103c47aa7831b28e82e7d9d59d5da8154ebbc6beb3d9d6f38a6c3d701e8643f2d32a0487f90a7ebdd2f792e287751bf6f59bab3bbb81bdc89ccee51f0fe529723c5fcdd53b62b8be8a5e287d8c2c97be8ac4b323fadc38b996de55ec96720f2943667258215d15a568b7b29783c6931a93583b14233f6c35b257c6374bea7401281c74587f8d63795eb34f9fd82bf19fdfabc86274ea4cce7452db2272914d7e0323eb2d1efd56393157cfe0cdb32af2ebf98330079856a40d479e9a13cb912a1b1f2c901f7ff42ebcac1a6bd256cf66751fc824b84d1c6a76c18b93d6b5b20e73a21fcaa1e9a4aa1e4a68c801be8ab39f0c8ab0526a1f547e3495774fb6c36e10d4e043e6c0c718c4a015384da9ce7582b05b34fc5eaaff8f5f42d3705cbb25af514fc4bf9f6abffa5b39ce51074ae64b882a096a9ac4bf482f3f67999245faa28aac87845a6b18509cab955620a070eb11466df82f0d2b3948b05d15bd9460d4b6cff0a92bec46c4f5f78b06bb6ea047ffc503fd2d8f4e94983a21f79a72f2b794de47ef3c1327a5ff77a7d84b2cc8fe0ba946155272227f5a797825afc8ed2cbe8e868d736191dc17cbe655dd574f1775bba8fbb308bd7adc2e66c954bf89575ec3dde4516968a7fff1cca2e0ab5180647e828c97433ac56f40cedfb8efdc940d251d4e570a4b78cb7e02a92d24538624b934361abbba6ce71ff61e8d6e38494d9d3af703e6f3e0493643e6de986eef8997fec026cd89285ce3cef6ee15ec1f7ee4442fd1e445e67a15db0349c2462b395f04bd0b9cd446b6c8dac4cabbce996338fbefb58d4bd2f3432027e4d7e656766f1d56d6e43aaabaf7012c700bc14c3ea8a1b356699506999747c2bb982c3d5e81d8ff849a41f59f8fb689dca5d529f5ae4c9596aeb0513300e0fa023ab9c759f7a28521e3c58322ba5ff8197ee55f612e96569eb831dc0c161cac9118bbe043056102317873174add11ff0ae5bddbbd8ec0bb4287768d56e3a241b9e5c4f740e0401d8a2d02277a2e9d4e579cf9353c4b19723fd37f3328b0ce36cb00e1329c2085bfb997bcf5329ae8773fc3bb59e05d118a6ed77f1a80c47fa3254b38d78b85d02a16c98c13e026af8c4ee51c2cc3d8dde8f8dcb44d7227109bfe0d195650332775cedbd53d4996793d5444ed24133819b009bbc192743ce54dd957fb6cf2c30f0374902348d23793b72bba3f901669a37149fc8c95e403a48a6fa55f3d2b5753af9e25e59aa99ed6cde41b7bfabdd8a16817b3955d59f08ef76bbbd22dd359bdbad8069dc9799fd4d36e657ffab62c2512cc37cda2876987ff4e33218367ab065c3727c9b45e4dfe8e47f358acec466622749198bea8c701d03afcc7c7ef4e17c97cce17faea71701d9e26dda3e5b4afe753bec7b6b666e399fa35b028ff9ba810c4c023e5b89cbad8ef5fbc61578252e8035c24045962e2e2d1e13f909605ab1b361b108d3317b24365b6159bf5ec4df136f641a50a80d1304852e83032058c0f4125850385e0cb443fdfe0ba62367d2bc1a30cf214a90a8cd96e5d0a756ab04afd1e6af631a40a02b437551852f318d960d7cec5a69beeca35fe2c8d0659f6a65cffb14934e4ff7d0f5e5dd505ce578aa06f1518c3909b9bb61232e8dbbfa1c3f28c0042f2202024fe0bce7f41f0e0ec5fe9b85914a132386842aca3ad6db6e787fec9a204428c748b852e3799d260430af27ca03f7c40571524f9974ab48802b02a48a6d89e367c71a7cd962421bafd93e7a5828f01d84e0b939247f3e022a3c541b4648b7adeaba99bb34379f93251504d77e5d52d80039d40a83f1fd71a7e0ffcd56fc80a7e3a3efe7839bba47f9c93390568e4185718d870b453507601c1c6c775c70e55c64ada8d791c160375b7079f05b8ca00db7b758d62b474d4f021b5a8cc46cacd66c90ed9dcfe38907cc4c75dfd1757b948e19f07ead908c61668f2f1f3681ab379685ef8009feb334ee81ca3cf38219e9aeaa3e5d64e8c82b3f0df9cc445dbbfc900fbce069a12a73d71c4af068e6f37d9015bf068a244dcb08cf74129e5dfdf73b00a4e035327c010b9d97ff2d055c94357450f5dd5fa4357f576c5d0060f5ddf38e62f3990fd5d74ffcf1ed60647f19f60b1cd0f722bbb690f727f5747bfec90f7b771c6ba03e07c85f65549a0f355459cd3c7e0303a1ef5dfed74b4469dab246cfaaa6e7ffb4174fe1f3f8856067d7d36a009b0612476d2c07fd5646e72d45dc7a4e9ea22ffd971ad3e310cade7a1d3f8c481d0d17fd355865ca1969c802637702263076c3ef06ea92cce0367fca938e32f0776e2ba60d1d23d0a4fc32676ddcf0fec802ddf4cdf0e509ae28d0bb5bde5d1b3987d903af46a706c513c120d7c6087ecc33002f607a1cafea9ea0de25b4f074d11a2ea08b3311cb94e240ab6faf561a482366cc743a6880fb694322f7cf802d0ebe946a0d7d33088fd74000b7b3ab26e28b27f72914c4d8e45fdbccf44bfa731fb10b39bc1f397e7bbc8d6593ed669c5eb2c1f832bfda6dcd5868e07ecfb593e06bbc057cbac6fdf06f5eccc6488aa98a3f9b8e3fdcdbe5fd4e9b2e7d1f1397883cc59cb2c52c50766f07b6c9d90746d489a93b326da2b07ca8b83dc0cc17c0f93411cef13b06ee26a6336072640dc3c1b2b09fe52932df4192df5b526b4afb32e55c4ba34ff3aeb1220109cf2a8906068833620e6c014f8740e548f1cd756dde4d2cf94b569252ac6b5202ac630a103bec46cf0565a6c2eda76c05dac5480fe89c2890d4aea69b4b6e32a732ebd608fe99d752cefff11f85d412f9f95fba9dbcf42df0cc7f2c302e1846c1d90940106024f615345ff520e08c812c7c1dc432c712365d939e21f012109c0ab4ad5ace827e197d29324c3ee20ae3fc87049d7dfa30cc291d032d28147068a13079e6b57422a8aebd214340d1d05eda061042c6f9d1023ad6b5e2af04b07027d65c016fd680b78d3e2d0738a1feef99857ae7f282a5149d7539a15109cfd890b2a20417ae59cec81fe67e0261393b8820376dde31e0969f6e913208df999ea36629f1f37e5b3eb1b33e4c6ae552ecc5dc853e98b5c7a765c772b1cd9bcf6eb7f6d3c42b7e3c3255df27ebd5bd7ce261310de4441ec5ebde6a596b23f8edc902107763971508164d2901782f77630e419f56d2492a4549ee5f689ba280da5362c5ccc3d1039ae273aa84f45a865e9796ee18538e414c24faa91dc458a306e9efd111cd950b0838b6ea01c508f4c598a2ea07c2833df8792eea219112012eb858a948438b9e338662c6b481ed6cc7d930d7ad2bbb5675480e136463138ef13b7d0c156690614a74dc818e18cd26fdac6d33b1774093b00a89798bdb06c4fe6c7e0dcd1de1e8819b81ca33d8b4e9a47fbcc4f064ba1b03f1dc849d53dc56eb4388e0fe502f75e672399e85cbafcd90ce4348d78106a21adbd443a476544c2de2d955c4439147262e1d4ac7a673012c0f1785584c76072faacc63132bf563a72e5ca654fc16d0b15398083687468cc7dd32c3cbe8f7b31294dd1dc2698254bfaa87dd52e264f24d605204a03dd41c625f0cf8715714e3d1a01ac492c3131040525aaa690a5af79f4d0b41f2b967821f39c6d187bc371b0898d112371012a238d1bef7c04da4e5e47232a464143aba3231cd405ece455b0f63bbde65420c2d20199fc5d88d8d7e0ec6ff3ce4fcb681413fae998853b55b4f4a3876d49cd123ffac14cf24f7b891fc5be5a59f890a914bf755d3f5cb775861c839380e9106ede03cfe14635f07cc60ed872dfeff80be7d9c417295e092a9926c134d5be1269267e264d62fafe94f871ac82249b0172de800ff23c68e785c4f4de537d8b7c71276893bda95166dc976eee153b36955c683610d9cc908d7846e060422509b14e40f8890f4fdc68735b66d8e27b13109ed83f998d46dc6517d90942735c6747f1df0c5cedcad161393e9e251fef2ca5ec09d62411f242b6d993913a3ffe24c607d3b56d3dd12f4addb017b2f284dd60bd2c71b2a93166065d0da01c33160a0d0d3a1368deda9c4b048128a79cd8cc5bf2294dd45568a8bd4389d869c4c96ccdd1dbb438c018e004380834a0ff4c7360d79f22b0be51cca600d2371fc5b4224114213df5eb153cae14d3d978d6e65ce8a4c36c3ca352e99a2b93f4dfc4cd0df2afab3f0e14951c3431c8c266b013bb4021c5a70480dcf9511cb24b090e69237b47b1040b6707ac2b62362fa209d8f78616d5c43772d8ca562d44cfba21ff0696e264208c41ed1bc13742403d03793e17aa4392556bb8e299e00ae70bc523b7406739a11cf36cdc7170ab3a919630f1fad9b8e4d23d0a2d032bf306be0e53f7040057a71270f504f86f3a52be61358e069c80155abc9b4b30d609ce1a4aff8ca43964042defb218817a7913fa3b206acb42e7bfb8c8aedebdacf2cede643fb001c9bbcd6e1cc88ca58f2a7643e52e05e8b3e0c5a4b73876b7af5c1f2a377cbec47fc30cf7b70a53804e8da23a8b26ca7c01777a3719e0175a904ea19efdc08ecfb16ed989dd86e7aa8d85f8b1002b5bbaec59d33223405f3c60a749c7ba39cfeaa2e6f9f8f8b8393e6e6ee6394bd88de75091d05155f983f178fc936d91557559f105ab1bd6579cf50bce59dfb2f9a23da973ce12366d13b1e9b1bac9eb2ce9db056b176c3e4d325eb5d39c2f446995f1700c173f7f6691cf711e751f57a13c0b82567f56d14c30adf3aa0aee49a11dc9383b0faa2cc1383fd5cc861c576dca71427edeaec0155eac9560195ec985b48665070612827f91db90501c6631684a95425301f1892dff6aabaa5c33f64a8cbe9b83f8c0246fcdca4cf79301185e0ca4fbe913dbba5781f09b8c46c39be8a6b3f605f32667ee2ecc4c3f38396be6ee8b77b8c023108f6119e44ba06a256ecf91343438e03e5e86069af982d4830c27baed1d2df47e45a1dfc47a20c3b103675a782e8eb5c668c047088715ec664ddd553c7fd52e4cd0889f6bf468b4aaa8862506c385ea95075cd9b8a97476af870ecb0f2bf71c283af2d8051248c6d3a4e75dff549e184ca03a53b731fafd732de6498912d75037a5798d4d04388530bbc12077d9b605bf2ee83350044bf18caca1a270e0ec192bc09c940110940b1013b38bc4c96138e30d24364ac6799d4ba970febcb150c93ff4ced907d6199848225a0d1bb899ea89c796ae1f0ce57c31868bd25aff08aeaf34f1248874583f820250e286f8cae83be9f057907f40be7d54b18b700dba724eb6d94f807db3cdf698ba895d6726cb036b6b282774b72227b48f379c59d3d750c2a920bab09f6c8a9a9b8676916c355cbdd4b30670eabf6c03cabdfd2791da8a9f1f21913b4706866174a22285e60514a00f3fc0c3a14fbc4d80deb4acc3521ee86f22359455bd0df475554f07f240ba59b2d49bcb34833e24c2d1dd94b9d4644606da1c9c481389f7f901fe855efac01eb30273b16660048852728d23ae41511ef2133e8d46c690e6602ca1737e8acff939953e66b7fa15b86beb49258bbc209b93592bee3a413d7c309bf1bc4e7aae3bb847856650e405990255faa2e38b5bd3369b80616b75bd423a498115519195b01fd8ced511bb245e7f62dbe2104364ebba5e50349a55edef5e1d68ffeaf6b6e8c0eed5afeac0c3f6d46bdda37f3e1d24fd8aa6fc3b65a15e5cde41287e66891831fa10982557d7c462e7b998eb35032be9e060dd2cc25a920c5ad64290e5ec062b6ba9d897b5d80546f86629f7d60caf9d0422f6fe87da512876513ecef994f7e6729ea86a72602fa4aa85943dbb4ed4869e2ca6b5ab21c5aaf580f2a41337c0369db11be65f3f61884faa75e8594b87f42d46cc792964fa623fc15da2571c653dcda9b41c84da1b06dbf336e19b55487c0de63f811a33671e5295dcc8fc9815682f10bb4055a3f4220e9477a604681cd4b808f95fabcefa52b82277959eda76435d8806f439d5293b72aac0bb231fa8d87b412ace43184e04a98cc2f88a2ad1e63552aabf9d93e0e5606e35243192dc3b8ae4418f093d84f05b9437de25c5aacac26f1160a43b648de76e46ee22de82763994d1d8157739b3555ae9a69ae01ef77c207bf83a86dd921beeb6ba86162710f693fc87bc77b61c6db666f13f2192a0924f9f1427bbec388a595db39fd89f353454d7902944ba0941a29800e74f8c2c052d9ed3dcf29b61b6790a4010b64dfb6444a831495cd32b4036aa69e691dfe9cf598dd29f34b54d642b9fbcc230aaad53d51fe8d312d733aff1671f9ccf5ee3970b52b4738af63555de9af6d4286acbdad519a2beb6aa892a75224a2d6bf5eb4ff1ebaaee668dfb7c5a0733b27cac35c503ed456ed7d845d6d7483ff2d8e38c08467bbe9fd524458138468a4744c1367cdf003fa2b6b3a4c9f8f4b6b2fc464d3dc27a374c716a847fb0cf726139d4eeb28ae7cb293715ff559b30b2be9ef176d9ef854eb6a9a833a1ac682850841748602b908a90b67f08c546cc8538ffde509ea7c95875e37ed2e4e0ff7fc6a39bb5039b98cac303dfecc89c058ecc0100c19baeceb4b65ee536e4560d8f0597c9ed49b22bfcfb566d3405daf63faa95bbab99eca0a9ccad6c5ae09443af8c77d589ecc4ed1a59eda47ef4877467847f8ea0eb31e937ae80b6f59a74dcec36d20af45c715bfeac6d7b95f5ca1b18f28bf91d6e7445bbbf4bbfa2503507323b56248afc1e7e1f0fbc98d632e53afbc927f16ae505d093a3d7ec504837511404671283c0c490ca776a7a9e85b812d128baa3d388c73e1a33db33e2c4e791db466ee97c26db46d54983aa8e5866bf8fa8e1e777a9894febb05ea3fdaf725feb75956aece48a6cb0d851ec77e3d1766520b9b9743793ea883765c46863f82250d087fda77e222863b16c6c5a8f64853c5ce11007415a86c1e69d467e27fdff1d1d33e0f7008b627bea578f340b7e191ce8ca46b0012550a7d60a1d07542e16985c519266a93db2d249ff7de4f41ffc96e85249dc3219b123e7e181598555fda7b57be61fcaafdb6854776beb7268d65b6ed69b127f776b0da18377d4aa5d4ef3df6b3ecd612b9355199c1d2799b3a912393382c11d1ac3e11dd31a718fd94c18ca6604ac62a8d0baf0b2a1b31e621b74e85bd6e6d01dad31df2f6bd7fc1810d18819d54553a287e41e237eafa26d1b36f7991575934ca78634765e0207ebdfc9d6437635ed194a77324bdcb6b6e78b3f20b84f5000feb515ddad15517e627f2037d23b75d4d631fb23d6af6268330e6c9703bea503ad869ad8da51d5dbb3959c1fa5dc4bc5ce62caa24acf54258a1ab571adc5eab0b34974b5229898d1ae8e91d60e7cb4bd0fd72089c16149110e8b39d8bf49df8641bcb3f1bbb6b9ddcee660d3b06eebca85165f6ccdc1de15c9e3c6762c4f1af9c85bcda2fbf37ac4fa6ad19e02237ea863742e310716bbd00de3dc221afb2bbd475d0d785dd70693f90f233dee683d51870d6f9055e18eab5b9a56af5cf55a253932203513a175aec212ac22e89e267276c8ee418b90925ceac801cd511be588ca1debabb27c4021bfb813b3bf7804976359ad0df97eaf62c7b8182965dfeb4acef6707735c0ba5c446beafd6f1c281e0bcade11d80fee0d9b69c19df996582088115c6bed3b475ffd49076a180dac137b16ace637f95bb6c7ba7a3c5f7655948b918cdfe5bce08b1132b206cf32c11389bef8f56f85864e29b0611c1c084174c8eafa871fc47c9d2a455a0a2a65d6fe8e36953f48e2edc0cab439910dd1dadaac4e3fd4b8ad876811945d89dfe4cf75c822fc1aea788dd73e12a2d63434b05546afe1227875aa97c02e7adf335fbc866d7061f50f69d01948d0e0762cd035631272a43852add4e7b46b0fdcd56113d9e0cb91e8f72a2a6bb56796888df462da88b29bf15ce8b66675060669cc33b459357bf997cfde2f61d38bc97984e28260fded39fb89bcd8a5e9e1eed5295f98c94e5100c8ae3cf7e5a282f3e795c14026a33fd4aeb27b2abdc6368eb9d4690bb2418d55dfa29643590b42b1de280e5ec3f1efd352d2872bdd24ed8020cc2f91446c0fb9abb90d3a49f51e29d7f7477c51f2fc364ab3bcefd6643b859f128700f243b6ec3ab9780e642576619593b08327a174c18248341e9a4c27ef56053ca240fef139ed97a8a28412dcf4984759cc5cbf3ad797ce4f7d663292a8032c3b60f77583085341675d3844ff3e803ca2a99f732133f7652a3393749457ea241fcf93b3699be416b64be569dc53a64ef33972034f3514ce9e9ac186e646e6e34cbbf71aeb9109de9b17914d5df9017eacbbc9fd15af70b4bc395edec60e54e08b422e2f0a6d8baa112c34b8ea016df4a18d9b4cb0ef9d39396c253a3f859f88de64750ee4550c27d54f02d90e659181ecf3a10f02d2f1d1907a75591c661625005974ea50c368ce73f3facde5b74269c53ff7bcd84e35bc7ffc433a28edb157a99a93093f332132a0af2ae651583bb92aa691a6f64c5c9de0eea46ef8e24153b47b4cd7578b5394e809e81f7b2cd39c0a43bf29b8d55ab45367fc26370c9d101f44e92c236997e42ac8c64de239331e9f5b2400e6a9e5c7d99c22ab50af4571c884c3e23ecbc6f3443015cc9f2bf2a139f47e4034ca721f967c71f61cf086dac5cde93452037a23fa7b0074fee5f993c76389da52176791a27e3a623fb00b6fdf884e1f9891bcbd30f2a3f5d131380b1e83adc00463193e0c5b6ae5f696331f17ed62a6ace5e29fc104ce620dff9a445e5a64eeeeb8ffdaf681ea9ea7fe876759947b00f69f09793d3a53bf9861dcab9cbb5c13fad0038692bc752221940cdf28cca524665b5b19c25c4aa93a446d768ffd80eff53e48705f32ec86948a63d52f9589f7fea56217f5bbbeaa3bef140645f4d9499658a89b09f4486f131d3b504f1a9b290895ab92eeb6120ea6645ee7da9c62156b55ad2deb5404673dad04c3ec3eaec7f345dbb7e08729e354b0f830a4c4df3b6cb77bd5f05da8bbca3dd8eb5ab28fa7c8d268fcae56fa1418a78f91c537446ae2e0d7f053f6449bcccc1ea73009e0b40b46a859ddfb5beebe478ebe828efac480e80c7716462c719240d3b199c9c6a61a0a23e073c59bb77a25a5f2d09e386c4f3a9cc1d048979deba2b5644e7dcb039d7c6ca04e7d5650ea26a5126208cf64189a5372d3944a80adaaee9074f4194dfb9e0e2cc7d4e31b5952b27c44b9738485bfb93acb8d2549dec6326e7ab6ef658555a85c5c2ee9fd8044459e488788787e807f6ec4825b1b9119f63081e74f51c455f71d71a08fe5e8725a33836d631f7fea0a2a9f735097a87e9c7a1397ea6948d11ce0a380d7661c1a41604520a3736859801e1b58c9ff2654a292564f0c5d52eeea76b1560c17adb5a533166dc760491f45aed1dbd9ea9ed8bb244f72b8921f0621a503d92cb4403423d10fa4bf05ac3bbd593cf92ae928a4edff5f64e3139f1306c4a3c707d0e700172802fefd3ce0dca8c887241602c10eeaa8a79d7fed1c9f0355df1322d93a5e7aea1e9444277f8d2eebed53df041db2cb6c4f9bd7127b6e56c7437b4a710e2ffa4ca34fe8e6b0831cc38c5f3279aa9d895138d69ef17bf022b5ecaba013b2fbe5ca97d63fd8bed12ec87bd6bf6d858b90fd0edbc3f7a8371cba72d8b3d81fcab4410944cc1be4550530bf7c8f65daed6ff012179168b0b35a8a9336bc6b5ef9f6d8184ae43ac08a054dab892fdd9faed33c7dfbb85ffdb0f6f765369b5cc6db2b63cdaf3a624b5d1cad551bc95896cdac5d367d503652b137a8e89291247424891d4942479248976118496246a216ae5183070693850733e565929dbd93f3f37c99f60bce1f347d7b5baf6e6fce7c53cb8ac17277b0191d6c66079bd1c1662a5d97186c66069bca28bb98f18161f2f0302590a9d65b06d567d1d5c7b5dc141d9579e858b201df66aebe4dbdb647a480f68a231a18de598d7d05de78d11d81fbc214abaf990c30942e3558ef33baa36d3b77f53b0d11a70b24c87941dbedf6bdade7377b625785b6a2adc4c22b261687f6fc79f6afc0b39d50c1e8bafb10c20919d8ec2fc21abd386feba6bfa8ef7698da56130b956b9df07e16f3fc73bd7fdcdc17ff7a205d6f1e106bdb83343297fb9b5d5139a47846aee220664586d4b043951e2bc1a0bcc9385758bc2abb92100a28c19432534a0f8ead682bc59895982c5be9b84a3a8c089e277d721148254e8bda2d5ea94a29f628dc57311dd344b5ba8f2e9371eaabcce706b1a0a4e6b1b5134ce9fd7cf5ed96beb8126bca882474fe2c8803f6502c297714af525d17602965e3aaa291eb672544c3c33a2ae81ac7f6b512ae04221483f9d95d56daea25a6ba582f771559b8d0f50a737eb2e102c41f6f9054ec40b05ca66e00be9c52d577a754b59e52f7eb2878ddfa7d29686f6ac93575b8f794698f82b7fbbb5f72e3b04b6f1c76c98dc36fb50404a7b6976d6386535d7de418c04804c9cb5aebee72ef7bda2efa64bac78e6454455137f99d278f84d2b6c7909bbf796a4436d9ae10ac28320dd8cb452bbd46784360c461317c170d65b042b70ae224d11aa53a185dbf2e4d2b40a86bd7c529e909c0fc8d27fcac8b120bdd048149b975654834fcb6ab7b796152643c9f818a4629b73174f289a329ad9f5253fdf39ac4406c6ddbb0c358cebd18376a5131f6776b70c769d0fa4c0cae34d49b0d4afb979dd0db6c756f0d0302f41e529743eca4d8e2f2f580c1cd0edbf4438c39a76306f5e1b64620b8d93b0b255c00ad19a9f33803bae2533f094aed43160d0941335d66d244ef8345d940ed2e1ab69587e0a76bf3873a0c4005893fe5f8bd17f176548f93f97c7a16e99c3c46f805992d15ba30cf5f00c05fb7c77eaee97b10d049d6d727dc9479a044db74d955cfcf9a0c0b36fd0c0b6eeba2b973fdc700a750b72dc7bd28ec2335c1218f413fa9d7325a69c0fb479b6f42849707f2170e216064626e17ed74caf3d0bc384510976a99bcc908c5d0568c0bdc9bd2b5ee4d6480efde3dbf7bfbd9dda3770f1e1fdd7df6f8e6c3e7efee3c79f7f8c9d1bb17cfefbe7bf2ecddef4f5ebc7bf5e0e1c377b7eebebbf7e0d9dd3bc653e9ee89609d3df6e64112b35f9298fd9ac4ec5632ae1b21f5e1edd3e9b2ac9beed6d9e364c663364f62f65b12070eede2ef2c1113f7d48e306677d398dd4b6376278fd99de4ed71d0acf682a802c155bffbaf7fc9cc3b81f9747674a42e6f3bf7a45b6a5b1cab1dc66cf6d1b01502bc34739088b7ceeeb75dff40f4a0c9386ef3884732db5c62c204db13be58d43907305062215256c03b75378705ba78c68b3d76948e012aefb6fbd6dac672dcfcad33e893a378044a9029523b37d21c9126b27efbfe8c3a132089d3994009d2190df8cd0e591a2523acbd69169747cb51f46fad6f055bbd2f0da7e9b2c9a7a038692bdd095f74e0fe717c6ee7daf8faf8daf139a400f0c5d3249b242517cc2dcac8536fdece8ecf8956f7b51ef8cae881dad186bdac8f1b4d8dd7e2f52b885a7809e7d857e2dc3b6bf3e5948ff9c779bbe83b21206a9d060902afebfd73f1b90bcb8eb3ae5fd4597f019a0387fd459bf1ae1bf3e664fcf8c99dbbefee3e7e09737361be68f32510f882a2a3d7ca827f58d60b1e5d185fcafeec2ee948d6c5d87e3b9ed5cdf8cf0edc37f01968f3ba727ec2a7ed5c6c3da6a273f1b94bfffc27fb9f699d011ca3047e3cd91eef5c1e5f3b6ed83fd98abe88f750e6763b3f5bd465d583fbe5bd24e369db4e62f6a0c9c62c697256f71d4b8aa29ed662c31a9b0f8faaba6332bf2ccbda9cb3ba63aa2b395b829edb579c3d7a70a41fb3a25d8a0a011712ea78f8e0f6ddc7cfefb2a29e728d17092e0979bd00a79933d61660a9d22d09c50cfa70e9b8f1e65269cf392fea869b2c718abc4298bd7bc7bb47407421dc94d88194945bdb8a01c9a5aa64378ee3c6c531fcb2f6a1c2b0d853fc63863f6902415c7372cb33239b5b128e7394551db20f11ac5cbaebbd5b447d8c4c5bf4ecb7746d86393114ca30356349912170e9c8d0c1bb24932813f3053fa9dba5be59b2b178e8963535a58cdf23089a44174c7001238e14b29ebabb32b6f360dc58a26a41104bc68ba320c0efbf1980f3d2f87a4c55678fa9f7b571308d063ca301c73e86cf7fc327f255868a4ac27457e8824a8d70cf24e926e3b03754eea5488a6e3fe86d8ca226ba054191ccb99cd44a53bfc2d4af3c7043b43d24cab4aae61a39498b217971183fb91e7699a1b8e23b1a1e6aad353678cfe86d245a0f19851a8cb098a9889dcc22a94430d6582c36ec3d90b99c9b6a7264941cf2ad2156661ea0526978c59de0f5ad908f27c44f25b7aeea39e55e43b7d90acd96baa92f511ca6ef81bda2a961dd5889301ad434b7b2c78d9aa0e3ef8de231a37941a8d773e2af3c60273f8346be1fb88856a2dd819970c3b83de89e039651df1807f2175373909ee16ad12c38696148b4778372cc7cfd946e9d5ac6fe1c94527a1231a241682e63c1b0849305893fb2037627e9f5bdd1193b18443eec787f24ef8cd921feb147415efe5a514536e5c9c256427e3ad5dc5c518dd0a178d7df6cea19cccdbd4532e3ec70e0b953f1ad55fd03e813afdee063a7dadbeaff77a81270d72c92dbec80dd4487222b3bff8aee18ab5f84c3c518bbc30ed859c8e0722bba6dbf09af116dbf603bdb163b46ee5da1542373be28dac54c0c751500332a366eda53a474dc6307f8ad5aa2a1be85ae3acdd1e5de58af70e55c2e97d4a6f5a85a3e9a5a3e9b23c73b7deefba0517ad4ff7fc6a803e23c2cd5cb9c7abb9cd64dde9eb24328ae7eecb1c1e2e5b44d1399d6587c207f8ecc81e467f1e6e7b184c579d4661344c9fbec80bc025abc5bb00376ffcdb674cbf9003f76e48f53f8b12b7f0c10eafe9bcb6f2d35251be09e1f7803754150d1d81ef1ae4b4a7ebb4a9ac66c66a2e70fa85acdd82f788e7e0919ef45b50f4674e77bb0d2a4f380aa2d9f35a7182a591b346ad03646c457f46e1183d90f42781fc86b6ef4fa1778bbb533b21ca9e96f21c62c1393bee9c284514f3d8ed7564de7e838c85959db74ed94fb1711a80ca4605005c71c12091c9f83f35cba684f3bbe6079cbbbe642cfbae55c304c58788ed9a364c259b75c70d65749cfceda2580fbb384cddbe959514f2121bb04f55755776356f5fdbcdbbb74a948c7337e49da0074f9eef8dc281e64ad5b5fdcf19074febbfa6da33b7f7539fd213e0f32f688e6537a4cdf3ea13f9f12449d67e2fc79d9fc7c0e3f3763a5a742451954992c478a111c29c712ba981174ed0b76c08ec6a2ae5df599fcb5336e9b99fc282cc91f62e5519f477f45b9a500a65abdff95aee6473ad9d47a25105558e0164d9ea4a7eca25003957e6e1d81957a5848b59502c83c06df87c72a8efa6ef41265a5f8951c701e11e7e7307ab1eb8af96fc200188d88c83fb1a9175837f464a066217cbcf28421dcb7e2297a3924807f455d1363dec76ab87404b9c89eb21fd873f3266537d87341ce67f08f43165d074871ed387b7d1403eb8a72cfd8217b0640e36c0fd8dbd2ed29548e2b7e0833f050cdc08bf1bced7ac5a3ea92c64d3ff91841b504f781770b7abf8227124fe313e93d2391d1832db3bd410e59b735388c4e1609e27a1350e731bd873aa03084bd824160df03b61b2a4b419485a80995c228c6ec805d0d954168c84ce6420e147202dc873c2f4d20278d16d481d3f06317ffb88c7f5cc13f6cc8270d0973e33b133576b37ab5f0294988ebc4312e4dd69d51fd78ff7495c1298b55ca42725c0b1353192dfc8b1613d2fea5e4b30bdec281af265b6ac3a737235bfab5644bbe17d95c24ca75eebf6aef98b04336617babb6d7e1d355ea0430c1092b94e72fd558302369c8623fd84772ab5a33b9cc7c777167600ec9fcdbf2bb57b7577d70d5fb20801d1ff8ee8affdddd2b5fc05de28bab772f23c372c8b89a848dabe57730ae9aa9756dac610b7702d6c85586566db61e36b6ba59b7c596e4d95a8b4d6cad32dd76c8d65a7c95ad35f95a5babde6f13d7d69a046dad01c75d6fe151a4da958eefc6dc7cece219a544234a35ee5ff06244c3085972a45455ca08339857de9d49f0d6c428716b6e4e8625dbe922996f448e12dfb40734785f8863318e05f906a27c00b647f9ddf455dd795e37419d372ce791ce3b409581241d2bac47e5706508747145055b9c26601f3027b3a9d02595ad6e88c955a2adbb1f79b684b602cdd286e6d18afae6c9b21bae6c9884f7c0bb5b31970aaa191abe8c5039179ff3aebfed17f215b92295854f793a4fb2c95375ecb65725f275cee70b9e257e60e567c36eaae43ce92b19b0b7cf2e5db24f558231635d61e999de78f0b94df7c7448632e781ac5a9d1c82f7d2f283981d9f9bb649ce7373250d5b52b39cf18520ef1eeb174b1bba51f21e797d94bca7ce738ac6aa3353ef0438dab04bf5dfd19d7ab03be1d9356950a8b7b32cacb94848a3e767b3b49d52078a77f2e1056d092879ff2c393d82ecb3b898796e4a4a15eda87d0eb01c4e71fa123c312efdf39fecbd24e8ffe9d58bf76cc1bbe5b4670b5ef0056f32de8dc16941db9bc5a2949db9f046d6c91e2fa7d3b71734e6bc6640a7d00bfdfced05d5f4ad653ded2fd68d74650834289aebce66bacfb24245b243f58f718fdeeed9d6651bcae183b354e86c14ea85b5057b5ff2fe2829dfb3d3baafda656f528376708f972ecbf28cf1e6a45eb48df434376e24ff335fd42749cfd58f6491ccd8bffff9590d46b429ffd5b70ce054c6b2a064858efd5b62a77c66cfd483bee2ec3d1acc7bed2d82ee5dc4287e861e4750399233b2b1038561ea1c32f44b2c1e0ee94cede9890df0ad3307e7cfbb4fea46ad4bddad43cbb5fad19ec39eeab9b60b7832d58e552f9662c1f9cff2fe81b2b67d61d8fa0eef05d3893762dbaf2120e97dc7a7c57bcacea2c4733e156a80b91114bf0ed805d9df0b305ef14cfd7f2c870ae454ff546f54db2f3a9eb3a463896569c1056282d5f589ac19b3b9c2334143fcf4c9f6edd327764ff14074414d8ad0302ec8a076df1dab6dfb7de56615a684ecc87b562cda1903f8b53fd5b2f3284d6f7e1cc2d8fb20f9af3071e4bb504f6d4b1b89444c61b940950899f1be6af341a1257bfc74d1f62dd31db3018bb8d6be6559c5b389fa44ca81f6b46173b9d7d4543c5549f7e4b4d1fb103bc02d8de94b2491744b0bdeb5d3136edccade1001f036aafa7ebe77e912cf66c9451524237820998edb45291fef5edbbdf4e378fbd2ffe97876b1750636ee5b296646507d5b4849d059d102123de9eb13fec4dd3cf04874b7fec392fba64ce59c4cebbf78ae7d34416e5be9f05e9cfcb28ad565d32e78c7defbb5bfc7c3fedb84f722395d2bc03da968ce2fb5601576e030940cdf52484e94a0f6a24026a687426f6899b721ffb04031ac37a2d3fcb29925dd8443d4f14225c53520d3a2f3c838a6b486832037a161603c1b5d3f39ab022188cb4cb8c37d52527bb9754781545f83046161c4543980c1edc8cc9c96ab1bcba04de5cfff0d924179e636275c50ed3dd4f95e8c2761b239b6ecc47fdfbb2430f5bcffaa459ac9263759a6aa28cf558f02ab34a8a890a3e0064c1e66235ab5def3da13beb8b9f03476f9d4ec7a6ba5ae9cb492cba901e0c0035d77a4288edf3e2974e05e508bc04515d7cbf985800aa1df2c9b6471664f5170275d3727ed44c861f1582ad6d2155bd94258bf489aae6817339eaf996badf37c862660c66d5b2d3b5d24f3f1c007a611f8ca6fdbe514fb25e695869f9a16359f582e5184150f625b33651464ac5a94ae5a2e5e46e6432831a2b7653effc846c9740875a513b253afb7ba537c76715a4ff898dd541c439f8b2feafe42c79ab667ef85f6ff1eea4b9a5cec422c61efa5ea678e846dc1ec3d009abb4e1ca832f9ef199fa57cf1a460efd4bb5aa8bf57c6dbe36df9204b7a5eb68b33f63069ca4d96b6189e3b5d69db4e798266ebbdd8a0de0f1321967bc4fb229976fcbdaa8e7f4cc489d00ce4ddb8eee47a78584f78f46f79caff27bb74891dfc045be050d1373b31db8dd9e5b71b7ff16edcb4ed9c1487be0d9537a929bcd29827c92701b925a9baa58270cf9fd7cabd393d6add7e9001710bc1b8946f886590f442e1342a76ebf634e9ba9061cea696c1add5bc8bfa6451f23e06addd42dd19980599c483d5ec862c6170a36a0f372ae75db6a8e73de44985c26f6a0b2265df8eada9891d0c3c17673a316da1cfb3b629ea72a92b300a1733200240a5e373e2b46dbf1be13a4e17751ffa3e3c279a46a882093fc3bf5d94aba060bbdd365dbf58667dbb007af72d44b2c54c8a85a7640654d4922a33f2270ed566b5035cef08f9c390165655453bb34fa4302a6685af32f35b5f8b4cf0e0ed643a05711bd52aa42cc69f63b3af29c1f43fda82944588688bf614b69aa3b339bfab9cc36e278d90cb42a7600983d6a54dc13a98d91b61100907e684f55cf9901d1c1c58b5a04a3af99aac24fbd431762bc1a04fe34234e88f2e10ff535343b0daa849668e0c224d9e3fcf6e49591ec9870031fc96bab896bcf79b300f5735a1dee923a7ac9cedb10bfff33f17d80f4cc12f7f36feab6edfb66c4d17dab4e38b13b1bc2ee8c953474dfbc69c7269710c1521df3fe8f9229132c50ee442ad9e5ed0015df2c5135c3f2aee34613f782e4ecdbca3a53bf9f0c2685fb3cbcdb4eb1749d6b327732e2f703acd3398cc8fe05c13b5e99f319bf033746855db86d868df4cf8d9dbfd016ba49a167ac6046443bcfd6c11261b0517862cf903bb20f677b140ec82b840827ba1a0872522c821c92086833d22e45cb4e99f42102379a07b0a05b6b005d53a2ac86fc5ffde10fabf252830b2986ba1359fbb07f080ccf5fbc00ee5c33d6679c41bb4d8b2f5cbe8a3e3518ec513aa43b0c8f3a7776fefb15b0ba1108216e6a5b06ebbfe1917a2464e0eb6473befc6d3d6aabf817751106907792c07311724879898e3812042de7c58f2258f0a6d5678ba686775c7c7ea901d8d24f059a00972c55b347eaa2d0ce1e393834ca58f6c9309b9b79c3f5fa672c3addb26ead00fcc9fb2283b60b8c0f89d7a6e169429473915f97106bf77f8cfec62eab57370c157044e00140a89d1ddc04bda32bd2c108d066c38d2fca4fa9a2ab9a70491fa36661750890b6ef4147a476ef6d0737962d7630c3b9dfa133d30cd1edb65d3b6e3ebe696ce8614e8dc1707b418b0f39a321090cf0ed805e8467ec14f320c201d1bb09e6e2dd007cc2af06005a37cc310163cc9cf2ea8c6423a3cd46674f81f7eb0a9969ab6af8bb3c161c6f2d337f5dbb1d433cd4f63c731ba66a86f0796c038a9a6c70b6bbb215bc727b6215a2c9ba66eca0bc6651ff14c9899c231c233b2a47459d911bb94b4571e3c45ab37e938bbd0f08ffd0594f4475069366233b9ac6c958494ccf38ed3d5415804ae6fcd02dadfb865857a2df60aad16acee4aa610aabf676f4204f83a31a397dc7a8e5cbbc1d80cbb839569861bad5d9d94e5dbe63130fd5a46df6c2846a0acfd245d1605973e0e468ff0658f04b9b69a04608140e7c8c5c39efc1f523086e4db509f40ab95341ae88fa1a4edf9fe60bfd9017bf385bdd6d60aa307adc8aeb66657a09a56880c5f24e9c8b908955a69eb2175dbb56e76f58519957b68974e79cfc98084a27bf3f9f3bbcf8ef6ac28ad3b96e86b0059152a651b12e5c41a171ab33c683383701e56acec7b24b691a0b6efc31ba47e6b58a66eea1eee4711d7c0e52b1ae413db94384c3d0fbc32c8f401b5d71d8f1dbf1470a68771b0d5952a73e803151f87b567a45fe2e11fb80418b9e431b2c954834d8ad173c2997a5d418629a25bc6c70d5a5b18f34b17c14bc9ede7161164ff5eb5a5e869b0257c014ecb1065d538bec921a836ad1fd9b0c71b722a09c95fb257bdd58ca2c1fd50ef90edcc5dd4880d375bdc8639038ae9268b1b7320593c54d274b4fbeb39e58991399463401f1a6015f18e18e4c59fd922fd7ec5ba3aaa3d05a7592a4e030d736b36d9b86555e1064d1b4569a0f5cce4a8deb46d53e3ea76bf96b3d7e8191bf3f9132bb331bf134b9df637260f87591f196936decbec3723626bda82f761dbce286c59bb80ba9949e373ca617bd3de6c8ea18d1cf8d1a6b889190f376624385fb0d9b28366038d91094cf1794723da86d6ad6dc75dad6ba5bb95ed46857764bc1cbad9c9b7b06fdca74fe864e61bfd183eb7a1a73a76c7e835f81597a9322c90f1ce5bf25eaf9d3d82756c4b7c0e85d22030c401cdcaa5fcca9559b48bbb49560d1155bdb6b638adb0bc038635f99502bd53563ba4be2afb5dcc161c9c183021d104158dc79384e2f2eb887268d10c5999f1feec444833379da2bda06c1b07c0dbd1ee892ee1b4a0ac94438db8fa1e3b90d41cdb1a031cb67a6b927f4ef8b61a53a31dd2c4a0685f07d43c87d2de471bd3826456b42893f24f2d0fd9c8c0c250c4449444aad44ac69e25f321a69e25f30186def5397a35638684e5302b9228addbeaba47dd6f503511ada3db680505249b292b07f0373191be39d2ccf4856c041d6c070e0c8855e803f301eaedfe5a7e725429bf43abfbf179801357ea484ec5b608adfa2bd8b8a8a73d1fd416e5db0166befcbf9d992fff4dcc0c1a97e1e491bf27b0ff8fa39d8abf23472f78becc06b538f97680a3affcb770b476a4e0e06cede5b5f889edb8455f6a014afc894015702ad1785afa7d92654277e6c6a4f4f50beacab72f280837a9171d6402d4e372d81e0d57b935d1f772fd41259f3e693a06565970f1324590a289922c0bdc56281e5cb57c375ec08efee2df7bd23eb9b7155e05ff65cb1b26c2cc96f69fe1f606da6dda39152aa727b96659d2303e9bf767ace31f96bcc9b8ab7bbbf22fc9b2c102df51e0646d932583961ef9360a899babbeb831b799efa6328fb3b3f463851f2d8e4637178be42c120547317b37e167f20214fe75032a903f9c1ceaaa8237e2d55b2218de199f1d463797efba03078e274e3a4d1501d3e4fc230c297882eafa64d13f16d32ce67ac5510accdc1ffb21d134209c02abdad95cbdcd38a6bf375d7debd69f5ff317ad41154523897970a0a75ff153507839d473af1c825d1f584f6c854c63680e6f8f8b453b8b346f42777ff8e1adb7c07d814956efe099d8b624571e2e380c1061e917343987e8b5f2b0ba1161b108da54899f26fda3e1f3a87a3da0f45cfb6f517abe4588741aa6801669973d58d4e440bf5d3b01d41a9f0106558975c7dabf4f8f7075222951650222b5d8648f86e5e29710866d72f8600159f6257272bda40cd5ff85d25291cab908eac620929e141110d16f578959f6d301db1e399f76f3699df1a88ed94ee843dd9b07c51db00aae9ddb5562a5938e0c815efe97e9862b47edaa6181fddffdde97d9b0f8c7f2260742f20999d4514a6c89dba335fb18594debb60bda8c31709be29d470a0dabb062ef70e65c0e6da8f886db86eb4c3eb07bc0ef811b347a3fe65ea9082933b8270909f4d1d98f6e5b780169fe273b0f3b944f1de7663be11fad8779688ffa48b628edcfe1ec502a68173bc37d8c3d52b9cea5f22b6f87228100b28cf491f8e8fa8729b80cfbc108b65dfc3b3424d4c09ab199606a7bab882b3f7f1eb5855dde610e6e3be73542f92fdbb8995fd33870b3b61f3e8751aaa3600c1b29415a5b359b3ae482ca9781d9fcd241aef1aec2ad59d103926ac05ca814363d4e09687a5b0a2ba94d92082ff2515ee77ab0c0369e9928d8842eea3a82e3bf01b5c79e626b1bd742f95f45468c7581b79138c4763d9fefb3ad68d538232825943a5d482a1ca3d1585e40ada55270d757fb7ecf67a26ad1c438646e917f54d5111f8536f62f9b5f6f9fc7cae1c26730f1179ada201f307f5ef96211d0460318ccfa6f60b295996798e8e7cfa3a992831f9801e6150c6843414aade9baeca347adc16e48594b49b6714702eadbe0897ff0d8fc79c5feff79401e8241685c77d230f47114b2d36e28bf36905eab799b960d39e97f0c3ae80768046bece39bfaadcf0b9bafafe1ab92214be0fa3d68ad92e104e4b1a1f37b5b0ca9496d81094fac83bb41f3a09045d438b8abac83bbd63cb8abec83bbeaa76321843ac01ab8eb1b0877575a08bf527bfb12e65ccb9a9b3366882d61f02b59d317fe5d803937654d8731d71c4436b44993b0c32ff48a5be9f346c30a95a79b1b29abea0d4799630f2cadbdf18f3d6f3a715eba308a6d540a2c05eb1b0c85078f2d5e84c49efb408d4b275345f1f51a6a4047e561340d925672777be7f2c5f98277bce96327c9e47f734249c1e39056534c831056dd739e2d784f1166a6757a29544ac5d2595bc16cde9f19003a8dfb147efdaaeeab67bc93dc2611ff83afc782a8fdab64d1d44d793bc92af098c445f783f813c3fe935d55cfa2b9841e10ff938988339d345cfe9cb659223d4d45917bcbe9543eef60e004a6a053143b380892122da64b97d8835ecc7ad7d7d329eb9282b3d38a37da7b1240f6a08e315d7fae87bb9836bed08efae6526c3aad9b9299f6c54aa973a1a7748a3da6677a0752e96324fc2b404a8a715e1462ba7bcfe6328bed985d10bbd68b8edb4ac710e16b7e4623c05e49a65351cb4c7df18c27399bb50bce929e29082a995466d9f18b50c345db9ed903f962316e921978e43f680084b0e9d9cbba9dc25c5c301e9e10cdbb20de9cf06f31b5e3ba7b2659579cefc4131d108883bb050f384188baacad12266c26e89434fd967874e912fb95f3b95c60d3baebc51aecce9a4ce217d92cb40684ae6ed8fbf1a52281b529b85a900d5c73f9a21bffd9bd1f5b6c34ca3ed6e133117bf61ef44f09a9b415120f3d1083230f24ba3e7924cffee49184b6a28f9438458f9286b60efd7952ec694a6a9479099a4a8aaa673285327aae3d8efd5a1ac8e9ef75db2fd83681afe1a16c8dbee8aac47fc83f268220f42165f0bd01b1156bd671a49353fed840e8d3c91de369a6aff6d1b6eabdf9bcffffd21e744165a257f9e79fde7cfefcddd1fd07cf8359e82f84b0c942150b121e9fb3dd383e072b7d919cdeec92b958c42775ce3bc64ff8e2acaf844c3de5ace13c67fc63c6e7bdfa9f74e96c9212587c6c205a553d760b3d3e37beb4484e8fcfc93032c007ec261d4b169c2d7876964d35981ff833fc7c9b65d572d18c29faacfcc6007abfe22ae21a0cf09df89e372ae5173f83ba41508208925cd22ec4fc46f71edc7b321a1f37972ec9d3c0c5a4bb28abaa3b56b66dce78d32ecb8a557c21b63c40e63ae550e59fcbae67394f60a701996768d1190acc7993d74d7957764c5dc049f047c8b2062f8e408a1f68728d67c9843f93efc54e766fd1ce8eea19849c2dda53c05f976773aa73386f71565ad20df75e5b6e22b44857d5454fd2849a95964ca71d4b589f74139608be6e1bf1ff79db75753ae52c297abe50abb66eca5810bdee3b4084e527b022d50e2131f8259ae2095fb0b6aff84296114b71c259a293b9c56cc18b697b1a03d6da82cf93bae9c7eca6ba95d1f30b6a43d24095500f3b15ea85d8e601f271b19cf7316b5ad90adc43880dad06a348376d4f592eaa11cb58258a1793db16b28fa87b314b97aaf294b34502afe66dd70bcd2997f08dd3f6543cd4198ee0430abef76fa12d7cfe2c6979d304462a390f819f75067d4b1cc8c03e9970a1be48f83973c435c08c81f59f74c99c328c781289b61174c142ae4814356c169ccb37aaa882249645e6ed3c0ac192d8b2424d53cb3e22f1d9aac8b897e57ad90ba65745a4dec3e943adfad3453287829d642929418084508b02241e3376133fb0a8e61d2cfdf782c6ef63b9a225df610c434233d3753932081a503d567939a073471567909b71be5cccdb8e8b6d40f4762ef849b0177c53775265ecb30a1e5a612ab91ce42174d17ca24620179958568243a79c2d3baebaaa7a88804241270d9c0390b5d28c431a9ff5145adb2ab20442d66621a7da863b26421879ddb1aa6d278c7facbbbe1314e0d3333024f4bceb05011451ba31390e74002e6516d59c2fea3657fcbf489abc9d01a671df4a3000a18bc98d5bac085453ce852ceb582be50e7483371937ade1ceabb1e96385e38723fad5b0849df25427878c9198877d40089722e993e998dd6f4fb98cff695972d2d639aa47481731762360e43e03997441f24a468ec5f6b2e05226034f807cab1b96a0ca1cd1d2cb2d52bea6821caebac91899bff73819545c337180c941d1d6abfe8d2b22de5a7f1995a526ac67bc009009ce8aa413acc1663c69d04e22f671c84fc2f57e83b6123166b993c00231b4f07792bac9a64ba0f08327f1f096920bbd4454653eb3f940c573a925346891aa4d273dd3dd03d69df3c52c11c76771c4d49b4e684b114cf1ff63ef5fd4db36928461f856da7a27216993a04e3ed151bc8e6ccf78c78ebd963d79f717b5521368921d8100070d4a62623dcf7f1bdfed7d57f23d5dd5670024e5d849664779df1d8be8737575759dba6a31424fcd12773f02c231e51339fd1492d39c496c3d73bc1080b3112a72ec186e3b3969332b4954828975d5a5a18908a21ecc566795c13006726a14896278afe38dc7c7904155eee49922cc6746a2ee4219b272629e677a1771821cf724b3b958b33c3c4bee35becc17859abd241db9643017122da13ba0697a0a91c2e897720d6708953a8844b517a3eac4bf1bf5ade35c8f36664fe52674863767c900d40b05deef9317ff5cf00b9ac2a6e7441e50842d500cf7d5282c32d2611230ce8e3bfe89bd264d4c0813f10259e3b79261a5381708513b622cd3f36589e485c87851c0d6c4c0d9953939f3c1490bbc833226b197164bb2c84a9eaa70bf5725391b6345ad8fb5ecaf030334a7ca3905dd63e4083fd1480f22ef8d79accdd3802fb42ca54409733ce7f139cc2a1f8f09355340a68f0af2cf058fcf25e364313832b500f3556f4865a674214a73d3622f08ca111be705234bce52a4d2989642918696c3d79234cfe756f67116f944b304f35c7065b4b0e08323e9d03a2547da931ae1a5ca85a2740cf4df0919b1f292299d196e9c5a9fc8157980a4c8c0a132b198b18470a43b8a5ec1a910de6131f3b7bec5700b8e751b9d3451109a24b0189a2a1eac60f1a210fc82495210101b398f499123855d64232949b324221f72c8b427c13763332930abcdc0c8273514cbe50b70c78a450679a0680ac12b7a1a0f134554f592623aa7b14a97babdbb6f76054f8739758a4ccb15a67a6900ce29bd6078803410127b015972b8c8522604dc2a7850f28ce1864b4650f75707790fd03555ba16cfbd5b40b281f0301f0054b019e5782bc492084beea784e9a862890ae4528ab4124352362ee114b9fa573aa15ccdc830357aec2467a83995722a7061b4286886b23fe0a1f30a5ef6b3fa9a8aaa31d63483aa1214222afa31cb3ad606529018b3babd52280bf5314c4d72010165251e612fea38c74a43ac114c1d310fac97084f1ca6df272336e199256979161e618daccece41b0461366c09d1fb9675e282165771771a2d97039ee3b753e5246cfe5c0ea9c48863acdb30989a7946742629839800e4900f621328b783596ebc2db13390b89c192e4005e5ac41e2d5585aec3ad7af090c7196f2ecdeeca25bf6d671d7249d3739820288e1473c43485031e37c9b3968d1404fa063507898b76489474409163cf9fea2871d6958992d104baf62407ec599ef7baee23370404eecbf7864ef882cd1bc57ea81e25043101047ace03eb54ba9846e373755b38bd001265c8027ad3c01ac6dc2a24c13c20db5d2930bf568e98de09203d8de850f73b5b11bf04166b44325970a23b825fe41e76536bb3f6c7d3274b97bacf4f48107fd56ba9abf80d2acc81929dabfc81610e58a2b26140720c5ab2c912b25e25f23426b4a424ced394c5a53221697ebe58127a4139aa068ee82266afe948902396b28c2f6620df250597a2c3655e9cb302b692cf94dcce4bcc7ad1ef8309470cfafd248f4534c9f309f802cefa622eef1e3165ac14fda4bf33fb6beffec7fffeeb627eff9f577f4d5ebcf9e97cfaeec10f3f1dfeb27d7fefc78fa3dd173bff957ffcf071e7c1e2599f25bcfc3f139e1c3c7cb4f77077fffee33d18ea888e69c1c90320dd0fa21d408e8489f3329f77097f27b15d16f1775379c320ffcc489ea54b23b928d9584e5c1e9e9fd8e8efbc7cb3402ecb841792675812f445d69b176cccaf5842c24ab8fc370b5122f7afd361e5854a1206860c4613483674c9b324bf843c2612a0204ce5e5948c0b3a6378375eb2117489001791ed527284a87bd6c98b7ec0e5f0f1b24bde14f2ff0448056f14c3d5bfab126609cc3be626f710710e593dfca45c770e0ec870cb38ee0db7c8535d34d099c9646b3572056407d86f5429f8f44995d4c31a287af811859f84098eb1ec472ca60bc11caa2745422be302f8f20219e082a59c8ed225e2395eeb46efed9c1cdcc00f3525a05d485332cb1356d449bd3df22c4b0a49e0f77bfbd19efa76382df21923bb0f7a7bfbead34b5eb0717e4576f67bbb8fd5b757906b8795e4c5d53ccd0b56909d1d552471d8a079ef6164bf0346ab92874e89adacbd2ad4b636ee13ecb313011e69a24b62c801a9d1b8873db5815ce18dfc46ca41137638a559c6d295bb3791b7310ac884c692afd412c4df3ebc79ad0ca996c5edd6ed4d0d04b7bb1a14f7a3edde0e12028849aebadcd9e9edec2afa90017d53e74cfe9c49a68d65139e291d9c6495d2720aa68e192e4eb215b83a107de08ecf9638cb84142c4b20ee228cf0eaad565ec935ab0e2ff3452a651429a6e0158e625e2e34e3b53f132461294523199f21ce4163ab4993404c72204f40490cbad702262f145c744775b043ded3a7949ac39704a47c359bb1844b865a5246c9efaadee42ce03c564e70058c5e37004251951d118c729dbc3400533dcd215b11a25499439a4d0938cd56d840dfca2cc54bcb99cb396adc9a3232e3199f2d6600f039cb685a2ef57c3f66e3bc2817192d590aee0f0523743e67b4d09c3c25a3c5a4090dc99b7c043c3acd12d5e373bca1940d440a520501efa5b28340c6450bbc103c30d94efc13266f1c90a940893c355a75607a9f1d3d7ba757a36fe7092fa78b115ccce70517e7f9254dfbffec7321164cf4f71e3f50f5c1ac262a676e91495640486e4ff7fc13831db05c1db69467cb3957b928f5b932674fca1b9342cabbaaab38cf4a76851a46d07ee6a9d20d3b94d73f05595e2a9d19d8add0a00c33c6f0bbcabc2a48b690f20e6c5d0e190a98511d4be6b3c869020902cb623193c00b4654f52c21dfebedec998f550478d07b6c4a5d620e9784fafe7a995d91dde851f450f27756bfbe9e04a3d153d1dd7ae650fd1256c1e9df94be2607594e08ce56abe3d45724285b24d28d1729e8e89404460373a3042d126fd0588ad2912aa105f4a70ccae3c0c433a559a2042d954df4fffdffff3fca20a55410519eb5259312d3c5645abed04d875b1de0bb40bf9be43314d5e5ffabd3872aebbbaf8bcaf53742eb20066214cf30a600992d74fa5fc3302e49994f2672b1d63c2505e11cd417f2af2c4f98d1500db776865b7020865bbd1dc884e5c8fc9bdcbeb1ca32ec982a6106cc248e0e227b67ecb28929b09d998619e6314ff2182ca91106c4fbc0ae4ab937ede196ce1d639c4fd51f6dd9d23864c6535ad0b864c5735ad2c065b2fa2caeb06b76f227e855f5f0af27d617280209e7803805d7aec131b8b949c9e269c6ff29e5762a48c2459c5fb00251ee0d4d4b463e8e526426a94039b5df2779c1273ca3297abbe0c623dd050799514121b9a7a2b6837efff2f232caf26c94e6f1b9949378dedfddded9e96f3fe8a31890b1abb2e4f179342d67a927da44dbd17dd2a6a0db106507ed25335e96683e19538e5a0cdc0eb340d4dce740d8e44d4927ac25544c9434a749443e4c69763e5ea4a889e4c2cd84aa06577e7f42c935c17dde2522376a0af4785197305e015c19e225f94568ac4467ef3af391b9df27468fa5360eb13768247148d555f52239ff9d28cf345c0e88eed9d65d8b74aa5ed8ef6e34cf45a9e6d0de7646bfc63fafe17f5fe605291815792608bb9aa71472acd0517e816a1e79b5d254e46491694e06c447f7de3f534ae144caddd992c4bc881733f48a432984bc90d71e07ddd525b8e220a702b60334f6ad60529466b5b41e9fe3318fb932c05021f8240b66546306516c3d1268bfb28ec1a9949e77474b30656362409829281d75357004506217aa69d35c2c0a85473fca2b5f9eb8092bd763d69133915abcbac9fe8bdace1a76de9e6195fb705ee4a394cd9466593148a0729e30792e45a914baf2b6580808068ed7705ce470712a2daceec8b0b37c36a771099c9e91ae9ce1bd935cb9acf028a3a2dccf668f777ca2151781ba1bb10d3683a5527c53a86b393f9c4257d97699b2e9497eb04715c3d7ef2b270f9a2484aa956a731168e6b5e8811a5b496895b92e3298a6f87c47f3aebd8cc99c0ab902bd579acb40a94ad26b1038a74afb4ee7f322bfe23364f61fd648869aef7b042c8e9463761e21272bf219934b8709183bb91cade223d3c8ca0597f846f721f2de091773f045a100ff1c9caf4af953590a596245c96d543d231fee788780d938b312248de37c36cb13aa996b3501858680ba0b814adf11232283636bfa0201679fcc78ca058bf34ccd0055e2397a0ab60a6b5957440bd2876255c7b4807c12ba1e44d6b2a116fb37e01521069949ef84fc2300b64bb651316190174542b8f9005fe51114645ca0b341ba2449916b1aa4f6dc4c46a103906f96816bb794dc2561bda0a9e25b95894482a82c967037f282993ea8b689ee6e13c49a392b8802135ac5b824c471cc582222d79b5f0fe4aef995fae62ffafeb67d98ece4d13335dabe02ffa7298fa7709e11247a74e508216f9b14855275c49538aa9a6bf32c644456886cf4f671ca68a177c6db34eb760375cc4afc653ab554d7814f8ee5f3503891180ef699e86771069a0c7dcbfd26372ac7790a8957e040e50a194dc77c8530a772473c7b071ca7e634c1bf5132891f787c0efeeeca6707f1f3bff479a482e0eb0196907c81448867a054e102bb35cf355e95503fa5a5642a123a2f71cdef8ffef14ea5bf9fd18469e707248f339625e84829f96921e9680c3a68d125735a943c5ea4b44897e88d52c0e4f92f2cd4565045f9c1b76f5e2a47e40a8f59b98e32485b09ac4017d81c380b1329c563878af32c73b5587830e6db251ccd47c9d384f1bc5f880b8925fd519a8ffa71928c1feeeeeddedf7f401fc7e347f71fdddfdd1f3dbc1f27ecc1f83193850f76b7e94378e9245bf615927d46e2da96cd5bdb5a97b656a43c66c9871cdcb0573f5a9235f51be5362de455ed59834f29bc073ad6162df8163cffc747ffc12b7ff818661051529997d5cebedd87b79f45c34b7d78a6afdee3c363fcca2bfcdae7f672fee8b7772a6c522d5b8e5174befd162b3a415a78c74b9364335dd4bf9187f57b4fe161f1f6d17bcd7bf1e0813b3e6b57efd78f5b78a1b74e3ade2fe77966ed0b747c77aea3779cb2caf4fd0c42b06ccf71b89a37dcc389eabb6f5a149deacb4eea2cdc24790a76561e521588a4be935aec6cf02ead0df3ff2a83b76aae7b52c230d4c802bc4db31e4c06f300a090d4aade15956cbc70dfe473f520ec391bd3455a3a293d4dcc919f31d2c9cf913dbde4297c372f4d5b09366f0de4f7a19b7e1d8f4596f28c1d95cb94bd437b627104c984ddc79458a927642d6d762cfa9874b8e55086c6ce76e14cd52eabb991d3f1427221deeb4ef90586d68f1dfe2af973c91e1e1e1d29de5c803020ff544c31811588e06151c08fa0c101442bf2cf052b3893578a608b24373d2a9571c244ccb2846625f486bd6b19019cb994d042e87c5ae4092fab53d00f0cf051dbb51962409e81bd1cd66356a2b5ea7a2850fb4fd4d213e850fe27196efffd029e846b6ca8de883dc3c780f9585d4f2547353d3c8db28992f5a30af91f6cd3d19431ad77eb12164d2272ac965540a224fc7b942ed889370b5c23b25185189023c6c8999efde1d1d1fb45ca042bcfdc360bc1cc6bc6d52d70477342e31205015d0f1604609402084d7b2622500f842e054c5a1821adc4d71a7523d99d7b09344667caa64ad2cb4d398167eaa6835759c68af6702b1ae7b9ce0d7f576b73f254eef870ab60c970abeb940cb7fe035151c40563d9706be0352464caf8645a0ec8ee76d7fb3edc1a4cf30b56545b10604ed0ce71a8071ea5343e1f6e7915af9d5fd7fea406342ef905ab763eceb3f22735a5e1d6284f83f5c8c6df7f3fa2b5f33a95ecb018905fc9706b9ce7a7aa9abcf8fc09b80bdf0916eecddafc8d7a5ddc18e0b7c123eebee37d55b3d783a6bd5415dcdd0cf6905c774914459df5ad0d28652775e0bb71572432c0937d5a40557a426db46064d708218ec6cbc33c78efbe19242c4ade60ea0a5965fb66f474fb73fc469c5efd24eae6735b53d0ae4301bb0141ea7ac4c6315fcc5831c187d9a66da442afc3d514196fbe37b2a6b555242c4ea9493e4e7ebd7e62bb4c38fd2fbc5efc12bc6a8e90269912c5bf9fb3a568e3743a35d1f86c0273e4a5ced9f278fb0463970cdccc30ee20c72a7432767bec844d76982bb7a7ff707b7217b2b627d3ca05cc8a56558b4c0d02d9ad757b5db7b9f73c90baf0e84490f2c4005595a951c2f7f72b2644ee11bf6dd787bb5f78b266c6c84777a29f739ea1952b5883bb13e11a4cd9d293bf0a9c318494ab3b2bc7deeeda4e4e369aac81916d48ee91d6af2d72cf8c7c8fb4ae5bd5a5c1a37188afa1d28cf947dcf9e5b0807f63e99c99a087f9b8666fd03214f394831376bc10653e43c64f397ac6ac28c1279bdc059ec1b24611f928790350584a9e47d26a32a6339e7297a1932c4acdc0b2d9024c3fc0392aeb25d54f0c80d9010d084497b0cf43719bb2230fda2e95ab14b6571d03f7fd28138bb4ac27316e17eb088d768547f6b9d08f098d21d2aa63c8395b7649cae0b9038803f382598d2f30ce1864180d84da031c1f3e81055b53367f551010d5fb124da9787b99194d879cb02702cab56bcae33785afed0a856a120dfdae2acd9a49193654985e116328609f3e26a04107c6df9569246028cfb41f833b76938c438558cc98e38431e1172cf32f2a34a4aace41e9a81867e82f9ef234295846da62114f0915f5b252cf9195d01956894a8addeed819fe685c66005fd4f935169484d1140190a947a90bf71c421773b160ee9872486f5a60672eed6b37490194d9650c54c1048a7019c133f771f15a81cddf1f21f2984ba9cc6e9edacd5ac1ccdd8101a16446e7e8aa12d3194b0fc173daa14768b694133f3c3a32ec9529845354270146dfe1bcbb6665df5f57e4b2c6d1ab03e959384fe15065ab98ecb9836478b495679dcee18cfda1cd4f907c51ce17c1d3fb519ea7d7811cf80c82c9309a11419710d561cac0b62ca7329f33705fb9c3750347b02973c2683cd572ae0469e5dc90ffc0232aec2e3f534082b71bf452b6b328f1e28acee629139ebc50cfea8e523aad97170c93dcfb9ea88abfaa3a054b885dcc936bbb9c9b0ed225bf5e775193ba7abcdf3686fa149383ef491c95f9c7f99c15128b56adf2fd8be71b8dea8a0a1b0011ab5797562f3fbc371c519d18f1db584e73f32a7fb2e7be7470c38bdc0a0cea1d40d05d7bbbbb4a23776c3483279d76cd84aafdc3e275c720f68c535a962cebb4ed270c7af0217f4779213aedbab985bce969c1c6be55a06063d0187a9606a8d725bb56c37e811c85ac295b1c6fbb66049dac008b764ebc0cb2be8e596736f3b349143e16f87119c19c55518af6283cda43d241330c39858ff5d009464c1dc761d3d36c91967c9eaafba1ab5fb311055e7021c6d01150c1b67577e71ff8c0c931a6e81a8b6c5d1d79575479bc306b8c04dc85c91cd0eab53a3ade7c1052d21f0eed23418299fa2c2ae14ceb9bda1f5e54d3a0a9c88bd28b3659e9bc5243f165dea42e0661c72a0552d85d88d5d59c3baafb6360822f4e82f8acceaaac55a51d8666574f284e75ec3e9d91d784349725d145187a4f0fadc696133e395152973de8853ae0de81af39ac7b95d3bad7705cf7569cd7bd1507766fd7e67583874140fa749a344b6df03b1f2fa1a8d3b6cbeb38adf124db56e76c44477cbc04b2f8239d6143294eb70652367547bb475a4f5abe34eb1275d804b84ec9531867e08c636e6c3e5e76da05ab93e19de83d00fe4a783fab4b700467576cf683f7602bd9b58de8d12047bfaf13fed5c7275bddad6af4053fb826da7ffa882dcfd2b4d579f21996e7e196355e69b5788ded59cf5f5d5a064b9f418c136526c24f728c60ba4e816baf723eafb25039d59cc6319df3129c0af0d6f646440395e887955a2b3a583585b0ae6b8ecf8b52dded096074ed442ab55aabba5835954a6517a03a68820ffd7431e199e8ebd2564d8b95f057753cd8a571fd20b2a415d45c0dd9d4b534c68b424040f9baaea1ac55a9bdb27ba8e13419a7f0aeb6a67b59d20a6aaeea5a96bb9bc87f09b1d0748d65ad4aed95fb0c359c26938226e0895b3b842e6dd5b458358caee3342b0b9aadc2235bdeaa6db56a385b2b80f428bf7af5a27963a038dc1df8b86e8ba052b5e1db345939dadb34a919ee6d9a6c30dedb34f99a3e058a06fb1e05101a00d544444d433b7c62506261e52db554c9885a02a0497b579d59f7371e33e78b425fe78bc135e79b8312ce57bb73d58f12bec157f3fbc451d3bdd74cbe6196dc670bc642af63c0a997f0694a2e5896e4866b17cd367a417a686dd77d808a047c43cd908ed99e2689b2ff5bdd85ee2fe8488574ace9234b549c04231f3b9156d46ddb56ea3b2f2a3ae88cb55eaf2a49686d91c7376a7e4f286388aae30b6a58495bd9f3b11a10b2afae11e2e0bdb5c41c661ca43388a4e46d8d91a6c269b81c869ffe2d945d5c18782c85469c7a90c87a951c4bce6e1c90dace8ef123c68ca249625049c22b630cd0c0f7d8b29ddae58569bef4ea655fe41e32b11506c52cc8eee8494d225f9bd1a353a3fdfe4c94393ed19257b85375cd614a5d8c6211e284c8d30ba6424d688aa52892318fe2cfba7941495d2e127c9c82a63d35c7aeeac8ac460b2775890fb470e09a08601baadc99dd070540edd2e5aaf9ed6446543047fb042f7c6b33717f774076c8a74f5e766d90708c9725794a7ebd26836afe6d775771808d09819c9e16ede4df0da4c03feea6917be42d8ee01436c091ca0984af3a3c9119c5a83d1a9c3c9d56df93de4e70bafc55e90c8ab64d904ad14ba211b4458d889f8df2ba8932f96dc90109c152399ed7b561f7d45f8ecaf07795f42a07c0f13814ba408fe73355d572cf5fb152bad251b152fb7767b2bce12a60416ae08f55a1b61dd47bd96390b271d9c558db9eef08ea8fab10b2c447b684647b77d6d7c5feab4eb8bd9daaafc906dd99a13f7fe49d0625d9b656d2280f1f27d725e49e005063860dd3a9530287eb44f335f8cbd71f399571a82ef9f5c6872f08d1fae58e5fdd016c24e06a45fa6b34a3653c6df7ffa7fd131b9df3f2d39bfc974f6f3fcd44a78f192075dce5faec277aa5c32d35f470ebf725345a16f18fb5fe5ab9c59da0ed86f81c1c9096d1734804556caefc2e4a1e9f2f5ba18acf3a65a9760372dcea5d02047baa4dd7b43e5158ebc47bfff3516c29c05932fb73ceb377aeb23cd050192555a5a24bac2b85ab6875a5722dd55f3999a05afdbdb1762241d53ff6c690dbb2028b9571c1c358505ad6d1785cb925b3aa338df1d64e0483b63a3e5fe4f2b7d58dadca196ab25d124a50fe2a9cae7116059ba734666d500b0e87edfea44b8c90a3a71670e07fd633054a903fe3a9fa9dd1d970e926d950eb973c9ff578d6421076edb77c51ba1f27051d053f47904a4841de5f0e427c63b2afd4c3e608886334b4fd56a4ff73a3e538853093d54d9105ee7e287b3968b91b002ecb360677c2c53ca5cbf5f0b64ec7d8c2bd5e47f995bc5b7bb3fc17fbb7e8b5c83d4506ef9196feae9a98326d48fd57b890515f7a4b3cb28a920d1acce8d5dfd4a30583b0337af5134fcaa9f3e932f83d0ddbc479ba986561b319affbe40e8827a186b0cd78d68320649947c75a337a55fb7dccd3b467e2a70645656d13e5e7d91ba7392d45d3d144045a7f383d25e3bf1929d426883fe331fbf7e47cbd13d597f70f2d7a7a9b3ec97f69eafc6673464b9e4d7a959aa62468d3f757a53fff5e4c36cadbb8422b61ffef3e65d6a867d172ba9c4f59464b665c7a5cdc36a5ca592fa3330fa9abad57e175b5f6e64e21bfa75fc81f7fd857fae47c71a79c3f4aa83e0d303c1ffddc258e239a3dfae70c42e1da89346595b65d382ea9703290f1d41f59b6983127e7b329a8a683364597052ffd2cd156f2f5cc07f9e867fda8c51af8fc380ef9e8e7d57c953dabce2cec47bd60a71015871feada85457eeb0ac7628769a0c6fd3e86bb83d4a9183200b39258e3b8ed436c44bf575a5a8d6bb3e710892f1ef411c591e157bbe2c78802c85b68400edc9660522adbfd6efbe99de3ff69774eeeb69f0e86c336fe3d1c763a4fe5fff4279d68ccd392152bcc609efe442974413efa2425a33e3afd3ab9c5b43b63abdbc2c8562ab09991d6b8a800d6b5eb19e5b1d118e146872a231b5424382dbf5e7789dd6117489d0615bf7630972dc3dea0ac4bf4246e620b0f066fecdb4ed6d942595d2187bd7b03f70b172f2c59d98867087902e748cb3d83f8da8044e88daeb8a62e86b05b8c784c46ec17ce0ae5c5a31e312bc775e3577e713364447429f1c11bbcca517eee78bae0899b399cf62c7a5e2bc3ccbe1dd4b13f47cc1e612ac8254b539cb43fe17a9b70e835e0b739c60c1ce46013b78f8a05295f945aff183c3748a8981e52a15e699003d2024503d68dcafc757e892f68dae0a7dc6b19ebefda79688f9126837cc5046ee7624caa8063357c927f0a6aede2e65c87dde2f99664b332e01d706d2f1256b402537abf4f24b5015f2ae3f902888271672904e9d18fcbcc7f39504c391bad110ec7ec865b70af322d807c576e4bbe2857fabbd81bd254bc86cba7cec923404a4b4c6fc680f7ef1226529e95bd840b883994e5bd0b5a745578fa5ec966f354c2e86e1fefebc57cce8a582e9096252b3229231d3febfdff4efa13a58d9809a7e87f24f97fa2f373c553a69f0ebb976efe37401240d736dc1e3ed385680d053e5657f8aa2ab6b525e3ee103e9844f8d017ea84d40e6a1ecba213978d81b7584a5a9085063942c874fd8579dbe7f44d0e2cc4a29289b20dbd77c853b56e1c6c80ffea15e3766a4eb366ddbfbb3e17bc239fdc72b9b55c2e95fc53464b7e61ef3d54d689398d998a27db1a8086ba2cf86851b256d7a9a02288ca1a3f2f44c9c74b552c41df830c55b20cff704a18f62affb1fa4267365ac682c9d0944fb24354f70d486b265ea6eceab5043f8dcfb157a872c4d2b1297f55b2d933f9d5a920bf0953c32955730fc7b0fd03fd36dfdf0235ef6acbc05f8bfcd2b601c3f705b3c547d38267e7a6c28f6c42fd0a3f50c1715aef30f9064b8ef82fac556b53007c5ea193098158c3bcafe03d9b5b77abc8a214a1e4d3a77f055d8bf58abea506bf951af867fd8b9102fc7a59d079af6017ac104c96689e028b65a9fb7143f2a18f3e8a423fe42b4fbfa96409809cea4f38b429952448349ed2b769b2b1fd4f36790ed99ab4ab4da368de681134d37a5b705846e8bb00f61c2589ca5bfc420a1d314d5b64405ad3bce0bfe45949d356b7d2a3995aa553bd4db657fd45769ae5c58ca6ada16f54bca5547591688f2046fbeb3c3ef7bd3eed77a5585c17fd56cf590d584b6326ac1cb84101ca7605e40daa4a3b9d8ea6ad0696bfbbeef2ab6f0afa180b2b21abac0d9f3e39ce3b252d264cfb9b9a20bd1c32c4104ebeabf8a63f21dcc992096f82f3451133d78dfd985b8f71d3a7ba80b0b6234ccad3a426382ff23297c423902530b32bb684bba9e309a3b806134308aab9217fdca8b8e12d826d8d2b24eafd41823d4ca9102ba32a7bdbc49950c044bd927d40ec41751ba10a356a21aae3d589b8e0f3125e4042658429d6b0a5913d2110f3a8eebbdc6f2762b3d7dcbdabc3c8c67263865b28c16fc9adb3ed3a6e1ffa520fdbd723b38691d301301b4ee735a9512bf18a0f75e45008e626f106086997e063e877de0ea83b4bd5e95437cee9cd22a1dbaf9e1346bc724658d5953f19dff7d8a9669312b59dd35b301a7b2f3ce1432bacb1ca3203153c82c0b20bb74bf850e9524ef783cea8e40fdf93a8a8922cb582b0c0a21a17d833275df272fa215fc4d3d72a8747d0a05abebaf5aa95576bffc1a6a9581293439aa68753169fb76db45a070f1c06eb8ea9e13eb973ebdadc573501b1875b873433394f2881d109249c71b27ad62bb84f75623767347c64d9162c1d77a14f77aaf26bcd6cde4b619065b1991284149b5291b54a4c48cd335e729a72c112d223623187ec136e0dcc0de44cd5d3f6a429bc3b50cc26fcc6cca5f8a070b825295fb5d4cd6bfa140b4cf6daeb1049a6ace0a5688bc508ae832e4e13feaeba12d832952ad70e0571f1fc62cf41a07e178f640bc9d0154cc09356c886c438266f62d005c1ec376a24b4130cb7c83d5299940745bd224bee2c9f80f75fdb99af377b9742aae9c716570615b1d100af4e72849ba9413e5c21510e2baf1981323b9ba3d62298a46738ddb763f2b4fe7bc306dbb947a7a7b0ead353c961982aae00fafaede1df4f0fdf7efcf183cad68d9f3dd6d809dff26e51b0c37c36cf336642525984b3adba24a8aa382bd395ad6af9e090dec8b3d7756a5afb80e6989b4f3db67566e4c0e2d3270dcf890f4f67a84e44e7f374a9fa313c62c7434797e7f2167fac5674ce9603d28a35149ef3e44dbec84a2def2954b31ec36145376a94dda97bf782b03e78474631cd3e0af6fced1b9fcf9c721129aa854e83e48060babe8867192bf0633dd769ce4ab0929f789a7ecc661b2dc6a95bbf1e7240ded0721acde855dbf9da233b90eee8066b058bf8788c6169aa6b24bd1a68a897d03f4b22a5b276291334760039cf80b0174c40421d9d728991541e904b2a08cb2674527d3a8d73096c506a5e38d687bcbdddd59fe674c2fefb2dceff9e5a48a7d652a49e22330cc2a9d6a31c4a25d30bb96231792c2e0966aad3a0d10984a8b5b3bd198ed4a206e6fa6d42062c6d07f2028d6389152ff3020fcf88027b05b34159a3ae066ed845ce13925fb0021244c705a4d7e1d984cc699240ac577724a15b1fcd690c898b6ac7fef65b172dbf233be4a9bb772dd5770f1e05b69c604d0248099676d0c63abf6ad9ed1ae828b97a42530d65bf8be72ab02fc2dbf6141a06151badf501eaf27b814986da21471c1d410222fcd17557840fc00746ec6e7b98da1ae5573d15fc65207f15092bd0d17de81b551534416ad444d90d6e48ce94f3f3cef6f6374fce489e91519e2cdd5ee45e8e5350eb4f7992b0cc1fc4be6e6b152c75d4f9fa3fed4d8dff3a87a61beebe099616041838d1b44601d95274107310aa51cdbde6dc326a437c6d680daab95e4755c53920458df060ede5eeadf8d57532aff9981d2ee3547674c113160438aa14ff29d46695593569cf6089f5e263d4b7df375c947bd4bed2caec9cfe1d14825f41a5b0f16607b5578de16cca1f2bb4a31cf9132fa7f9a274543cda42e6c67047b59675c4f0d47e81dd4d99e384b144f00ef91ee277aa00ebccd136ddd948370a53e29d4a0f4a35ca4fc801d8d4f8498d286d75a04696a92153062e954237702c2c583cc3f427184332d2bfcd25335734bd11c21861f6b8a55bb6c20bc50cf174dd05eee09c8d27a514b403ff1d7c6561e11de474e615d5de3c95debefeed72abb836f2c2ade2fa0f505c570f4195f3fa8335dc6b34d5b70ae25b05f1ad82f85641fca515c43627478520b67fc2446fa132b87273d4aa8c5da531f4abb98d26bdb1c30678f5438d9264c19ef8aa9fd392cde65d728a9adcd382954e857a95b33784ab80b4f9805396d584c0034db124d42a8679cab24e979c62d4f2ed27f8d777d01a7f789c0881d6c7a7ca25c03a269c866e01556d10680d60a9f887a44a071b28c825c0c881bfe24d54e53e883ac0cf2b95b96283e50026a09e5c58a7d351dba0ff8d52854e6fe73aed84030c95513b3c4c04b26cf20b5d60c0d2c5ad969d372fdb4183caf31e4f9d1fa0e5b199d81a9dfe0db5fa3ab37245ab8d5b1be46228e5a450f5f3418b6e8eb6b4521c36d76d74feb0689427cb27a1020fba2109bbe03113a14a5bf5a163a7a1e6920b00d77368d26977aaaf2edee4239e327244c7b4e0844fb2bc6082fcea68fd50e947bc54462487d417a02b8cdc1e7116114d9217172c2b35596ab760eeb3fc82b5cce4e605937560866ff20bd62575b887af899ea5697ea975e6f0700a10205103bac050e008415ec9db50a9d1346be5a6194cfb5526395d8a1d344dfd3347f4e144e5dad742c91deabace34a10e95a3665e6f3bbab9f5e8cf726e0a2681a88e8c06d61739340ac571802f87e55f06859b67f515b17853507c6544f62d5d9bd8ba3634db842c55d7c1d14ec53e7b5231877b571672c58d468bebadee16906590fc6c7e403a63985a714c6326652bf935ce0be6e42047e7ddee30ebf709bb8ad95c45175781c77926190696902407b69d2eca7c46c1ef395d9229bd604e3632e80453aee1e3cb72ca6691fc3acc6eaa766a5959b6b54ee984930ca2bd66980cc7ad95b0abff1461b5845d453fbb8e5eb1afba8a856887cea98d1c2340edb95c12d74cd067708f612f2bb948e7fd9a9f8d4669ae24617b0e591c55323cbb5f904d0a02a02776304f825589c360a7f09f6759f25756025b85e972dc41ab00e854b2b7dab4f1a855814d71be3ea9ab7ac48a0b5001d734c0b2da661f98283f2a754b4d4b53ec34c6dd8f85f80323ab8eb911bb4d129fefc4c584c88283e170b805d2b3fc45ee91e196fca2730e40f14eb403dfae666926e0cbb42ce7837efff2f232badc8bf262d2dfdddedeee8b8b89ad38b84a7976de507de7f1e3c77da8800da0daf6fc0a7e2dbd5f601dc6796c6f7f039fd08eeb7fbbe0ecf2875c7544b6c9fd9d5df97f7a3e03781603a5f38209b9c9f2efef87c36c382c87c3f2bb392da724811a6f7677f6a287ddddfb0f5ed7fdb5f7683b7adc7db4133d8ef7a3ddde7eb4d7dd8f767a3b3bd17e6f3bdaededdc8f1ea5bdddc7d1e3dede76f42096357afbd1beac21ffb82f6bdc97555fefeced443bddddfd87d16312f776a3ddee6eb4dbdb8b76bbf7e5bfdd47d14edcdb8e76ba7b5d39e6fde871173ea6bbdbfbb2f2ce6ef4504ea22b27b1b3037fec7675f7a99d839a42574de37e574f94d885fd22d7de5720f94eeee6f780a6d7b7c8fb2f85bc8f1f457b88b2357f21c601f2f614f6f634f61aa4a8411c8dbb0e72591424b142ddae425dc4d21830b7a73017d1f9f5cec307d1c3eefec307d123988144dd9e465dff64ec75f7f79de3a371b7e7e0ae5ed72deefe197117ee6f2861191da5ac37a2f1f9041e2e0e3276499cfa4f3e0fd9f7f7f7a207ddbd470fa39dd77b3bbbd17e77f7fefd683f95e873bfb7b3b71ddf8ff67bf7a3fdaefc7747e2db766fe771f420eded3d8cf6e5ff3c9084f701fcdf8368a7b7df7b1c3deaedc73d4915b77b0f253d8deecb8fdd7df27af7fe83eecee387d1a3d73bbbfbd1e3ee8347d1dee6ed5f3f78d4ddd9be2fcf9e9e92fc17a7d58569c1c4bb3b7bdbaf1f3c8af6716570353ce8ca11f6a39d2e8c12ed741f478fe2edae1c469edd877082e06b2a97d685a5ed4ad21e3dec3eb0a5f2df784f5e01dd87f2e0477b5d9871b403abdbdbd98b76d29dbd6dd9af2416e4669da416ae0a2c703b3e8876e0dfc7d1a3c3fdfd87d1c3eede63492cf6f765af7b8f1e4ba2603773e579be7d66f6a77c6626a5d10fcb39f384227c6023bffaa1d854d5d581d854a5afebf293e5ae98633a36426d3fcb7b46c8f1f2c24dd92c8c7e07df2a9556e68d93159c060963f337ac98d4675b34a5adba26abc631956e9d90fe002724b3fe430c8aab9c8c54682e77c90aa9e07b04bf9e58997c534723a30102158414af31ef9783eb8ee4aaed9f209f5b64b22ea5ea8f23957b0a5136f0605aadc06a25fca2d5ad3813f364405aa9642a46f9d50f343e4f8a7caef567b1560b286f6a77f2b1109db65a58146b9882fbeeb576fb31917f0ccca126bb2a35958259c06a062e4d326b4028475ca8c391d8f8061e4874576622e64078e10e62268f9a5e9ee5850e3183bca215168266dab6aa6e9b5f1d81f375adefb509470ea10cf457ed05dd92ac9bfe5889b6e0cf3165e37240b6d52fe5e3fe435e96f96cd57c278bb26445a4631af8cd5f439f6b1bdb18087ef3f7b88acf6eff219f7fc6d4ad8b39047fd3f02965671a3cca8fdd83ef2f90866bd580586368532a57450a83bfb7cccf2df373cbfcdc323fffaacccfcb3c2f3f93f3892958e7b40bb6fae9384c2db2f270511498461aeb38dffc8a476c4e0b8a3ebdb6aaf9ea57fe909734f52ac21753494cf3cb43f0905075cc879bfb87ab65b5baa4e5cedefc3653345f602e90c54b8f6a7dcb61b335e0befd96dc3175b4315cfb8bff4eac22e0ee8c4e98869785dd3abf77c540fe7a43d6700c18876b56cca18716013e749d2def90c1ba398939957b058e8d4f7e2b2f7cc335f9bc6ed71c90b5801cf38945b3cf8427b63710553f6f06b0ae830a8655470a11b9b72972d63844039b9eb1b763f9ad7d5c578cb1babab54d19ceeca4a3b2ac58d4a81f2a5bcc46acb0950de6d45757439bea80586b7b36a7a2bee628cf53e43d14b4beb254837b6eaeb9d5b2475c2fcb8cf54c53435e31abd580b4e8a2cc578b2e1529c50f72572baca43c633a13ce4eb4b79908a3a6f919f28bdff286c2cb668d6b2597fa19e3c1b49ba7b0e9d7cdf668214fbdb353e33c2b8ff82f6c4d135dad0e5cad1d366be9c4e29488194d53829346c7c229d3671caf0a6ff6faf0eb773c9000acb54376c8766ba5e48407e4566cba159b6ec5a6df2e3641c3573170e18ed793fcd20a6aacea5596dfca617fa41cf6374693cf95c316a2cc67f2262e72f48402b1c8fb6ae49e3c3b4c7361decdaa9fbee424bffcb0284b2bdb059fad3466bf7de0656aba0dbf7f86d8e54d5f4a536aaa46b0b24380e4158cd8fa57d1b76fcce74f01432a3286bff94fc30f37e4ffefdc0931e0db6fd7f530d29ba0df9149f80f2ab8716313826cdf51ade4e6f3f87ca0f1574161cdc36c207bf649b6e655789a0ec89d3bb087380c4414b63f237000f9f4a9aa2336a55adbbc9cb381c23ee47b3ad6c88167ba4672f2b6a85e22a0454197185a1d575c5f4dd20f476cb0b28a05fe3a8945cdf22b4b2c88bdf642f80d4285b69a849b83434436a40c32ac3142efd7d0c403f19733139766a443d8bb1f8d4034cfb96b84c917a5146682da2ba2de7856092d1240886d10d9a4e813da2776d4ef7e1f432651c1c8949784168cfa80d8d71dcf6831e19992687a3b819168407602bbc8fef64a561d31e39655ffd3b2eab7c118ccc6dc0663f8a3a208ffbbc98b1fa68bd928a33cf5452ef3b9b6eeaa99994a4ec36745915ffa03c0a756586755c750e16b4abab7a12c6e4359dc86b218de86b2f80ab18e3716d9013e733ae1192d596288a970ac239fe71cd52467947a88485454eb03d2da26f7b7e7573532011d893c3509c20891e29616017c1fafcb292f1984bf0409e3b2a073dfa2d2ba6ffd992057e6382f6603d282bf535ab2ffdbeedddffea66354f196c053792984b2d9260b25f75654507683bb6417931059f9c2b2abefaa7be4c7ab6e8e555dd3b44b4e9b0356d7d46ffbbc6e7d2c919a76f6e1aeba1e378cd551d3d526a13aea6680013b54c7d691522d049e1d4bfe8db91139a6541c829ae11d9df8c13774685b6c3801c6915dc835791fa211cf128cc0d1a9b4f8915d955e0bf9a1a685568cc96f8db1b86b37b72128f74f3c4ddfb398e9ac461bc5b3761bb4337655fa4c3788d806978898e68b3491f7418c1a9a94255d324e17624a10cc97537999a24dfad58c4e1889a7349b607e5acd7c9b7122afa6bcaa9c60066e593510b860e55169689cfeaf796b899f97540b93727d072bff339a86372f3efcededf323f37b5db3614d70e9092b5ff24234c61ad7e59570405a396ce1e3c50cf6e078a0aa7b10f4aa9bd0e2aa22fe0e0294dbc3137960ad8b070075e394cee6387da7ed587ee8ac08fa13b6f5d6d20ba287d786ec166ba0aacbdb10c2a12b991ff81d001966aa61ec4c3e800b74e20101bee808119ac1770333600551e67389f674023161dab5409123a88948cecdcc340807d278068213e0313704973830dd9af157825793bd46a455e515c8e8497ac047ba68f1bce79ef90d365b93d455b391e59f379b7b379c8dc5db46726b313b4c316f4ff66ef3d106b72361ceea6e841f569de75d7ba0ed40655ed2547bb2ed92bbbad13db2037112c434bf247f511fd9555950525a6624cf7462f284f9c88a6906bf23db757461dba2382698b42deeb933fa5e2d5369d3bcaefa7df221cfc9981695eebd4612934c8fe1b8d5a9d9c496e4f3ee83f72f7e7cfee2fd8bf7bfed46c0202ba08e5875c6826aed40f71aa2f17760c5f5bd26bdd5afb10ea1fea4621e22609e30091d5b92e37683d70b70bb6981bf8cfb9dc7c8e5cb5e5f076d8cf9ca63b1dc4e25433e709973a75019d45ab20dcf1782b465ff581994ccee50ca22a58c729b113f07f0aba84e50adfefede6b3ee5c109de5327781525d8539460e353be0a61fcd378101ec7af8e499888e286a8f43e6c54c525b91937c525e0e0dbd0f91747a49be515c18ddedff872d8afbb1c6a79c3fd15cc2102d1d5e5ea3661d12a14deffbd2e21f40271c4e6e3136fcc1115ecad9edb76c0ccf937c87707ce0c0399c319203877d52b465e59c592943941e585de036c49780611d66c7d6f8ac1d17cb27212914879ccdab683aedb997baa57b1e037716627377154a8d13dd9a4258afbaa5c6d5d67a1d18ccedb560fc267932ee1c9d5cd639239f6064b8ceab3c5c079f5a0c8932b478aec129886d786a3613a6c5577b0069513e6d5a21059bfda15c803eea175e55a67733b55b0e28db43a474c8da6c14d1613e893aa06f1faf6759a9e1a9f0fbba8b5dee688f66b1d4300706b3b0b3762234792df25acc3bf9be5f05fdad3f48fb2f519bc6df08d04a264d280c81fd699b1888d03631177ad8cec5cfab2b0acd028ea2517a17e6a915375a25c1f4a0e69a756796baa087e450ab79f9ec153e7ef819cf09fd369f1a6be8a16a21a94df7e4b2a85a7a7585871f2339bafbeb45d85026b5642b15af553b86f6dc0127353a8c115d76c86b18e628a66b71645da1e6eb5c83dd8c57ba435dceab4dcebc638fe199cadde03fae66bf2c943faaf5ea86f44d86fe01858c46bdf4495abaf09ac89561dbbcaafec3be8cca9e2c5f7cedad79a6239e03b99569c5f38a5e0edf79e267c2106ca6885efa8a63481b4763c935cc936fcbf9df915998a94b6b7bbdbdf7477b6b7bfe946bb9d754e82d6c7916729cf586f94e6f1f93a2fc65aeb223af6adaa8c06387d909ab2f329bbdcea3187c675b27252bd17677590da9d5f91d64a4b2176f403c01fa26c0c57b9201a1cbbcd6c74eb4c77eb4cf7676589e1f7878266488cff5ae48b7935b37f692af424659e57867c9ecfaaad927ce625f8a3421ce27d13e403b4050df5576604b4d56e7ddb6e7ddb6e7ddb6e7ddbbe9e6fdb3b2933a51b3b3f41edd5fe4e50655d727eacf5d90e4dd07a231f261cc7715baaf82b81d4982a29931cb84697cd7c86144cbe46ee7e88eae7e60fa91189adcce96519893004ffe194a7497bdef13d19c235cffd62774e1fe7893c56abadf295fa9bac56f7ec393f3dcbf88c968c8c69c288a41d1224fd052672f118d4854af5734076b7b73d0b84d0225bcb8405c6ff1fc95e7b6822f895e4731af3723920dbd1f6ce1372dd5cd9f9b3a794084ef39d27c4b21303fd1d640f33c97ba435134d63a48c567a5c51d3f9b36636b8989b4fc8a68a077d8a6682945ebbd35e9778d6e16d6aad8f4a301f680c835f8e6d6223e58f3c9b6babc2f69bca880c9db50f34ebf8c628f8ed2656f9bc0e0f8f8eec270f3e259fb17c510e7c3b07e0dcc06c9b67b96057bcb445aec16458b51c89016949bc690d037390725d9364a260590792ad5569c466c7bf2643d34df333f9c8a7cebdb96d9e953fe609ebb49b27185241ccfd8354f086cbbaa905b96ab46f30fdc00c6e66edd14dd4cdf725b45cf5a1efe122f6b0b45952d112cf702bea7b4d865b1d47ec79cfe6298dd94d7bac34f37bad8a781bf419346aeaf1a69d997e7e67490d132a450a5f34227c7068bfb3284395fd3a008841059e5eedca560c6a76d56be1a1c320c0285db3190bf509706062743bd5d37191f344791a004beb282e827df889a7494c8bc4d947abd1f0b181268956c0adc585249ff5a62c9db342f481e2f6756bbf4f458c3ebf5ba783b06754a4aced132a7e71bc47f5468dc248d647eb9f2945c1f80fd46a34a0841d4f0a65b58319626f67846281e791228191b1cbb7a39fddb030b6db3b81145d7defed068d213779eead23d4843901b546d74acbbe52542ed50a504eb7cfad1af8e9ba1a7674b91dd78eb94baf414e413697f21afc2d6a9206d66b6d11a0d03daa6a3b7e22be8a4f90fc0f1be947eeb9fa73e30c7e7a01d88d4370f4bedb3b1f6a34a8a6b4d38b96a66f1e63e073a20c6c1267608348035f22d6c026d10656803f8c3a8087da210c1aa22a8f302a09cc823bcd1ab2d7792ed82a35d98df44db612e266b571e4689c402333d2fa1872139d8d73359935e96fed2c4f58571bb87d022a8b1cebb76b0817f39497ed166975a2715ebca0f1d4f1028b43ba074cba1ed1daf8d5d04a63d7f10244f8579fc3459bcfbfdfcc9d41d74dbe7ff7ee302377c9337266afbd332bc59085e0d944b23b8ec82d08cd12424193217f46d0c5abb22508cfc45c32e064b484a886ec2a66692a3b3ace263d6cc24eda4e6aa66ca2be4286a60e49f9a8a0056435c6a99d79bcd51991878033412899535e907cac14e9999402a5b828272cc73ea3f339a3c559979c819879d685fee4dccfa46c79464409eeaef918eadb0546e4c394a9f73bd839176adc04da975396110add0916e75942865ba8aa186ee9161901c32b2973f444a025c3408f4258d845e4d9b8641801d27cc479ce68194fe55ace923c6367de2a29e41dc5f99439911c1417a5df0bbea0b370fc49ce19e0c2b3333079ca5595f96492622f6792013d832af689de254f5302199ec95d6ccdaee86c9e2a75d119a086b2642060821a4a85e354c45d4812964820c91619bb2a49c9e37309788ed026719e5db00c5632a282253ae7f59995f97119b0c4fe30d3473190ee2492ff9fd3d3771fdfbf383d95f51c4df07bc92dfea5511f8cf433d069541a851a62af7edb0b8ba335adc1a5b72e6b7ec62e3f2f73fe0679f3af3d6db1e49083f57929ec83b2fa74f660e171178a8ae83c7b019a4957178f54090f2acf26a1bfba6cf79789932355d8a7b0eed7b6e9813c252dfcd12203d2423f958eefc0ae9be9befc112253ee3a34291f58435899a6e72d494a5aaef353dd5505f95d035ff153f76918c2c6632b6aca2bf0aa3c38aa87b904cc6f02fbee17803b1282c3d5d0df8d826a359b304ef3cb6759f2cc8773d06e0368fb2baf0538cf269f0b7396fc3690ef3580bc16b6f28a5803d9bdc8abb41172afd9de66a4f786da602b58b26e2758f2391b71c5cbca2eac07fd7e23e8e1acdf849aecdf949c28287736243eeb366253ea73c5cb553b70c54b84dd6630afa337ebc17eff0660df8898dcff9d8809ae780dfc3429d9108435e4633d041fdc00821b908c079f4132d6de8737210d008735705584612d584336c2d1454891d6876d5c65389421c9143ca9ad4f0e8c738bede2cec10169a13f6f8b3c754a8e65dd1332702bdf23ad5e4b798a78635451fea623c9be9f412f2d6f501813bb6f79438638f239033ecfb3bae164d7adf0f167fd9b30f3a783bf013006e107a7aab78881ffd3e0cc9310699a7c23b443609993039fd5b77a10d50956f34f498372c01c1f0f171b4ef943e7559f73c8a1699d6db4fe703f8c36806b53d30da1ddd4bc9eacd8097ffb6d93e644138dbab9d6b6aaa1e4d569d6b6ac102a8b1e666783dbc3dfddfaabc52e436f73bf6fc45ec80691cb7f62462829d89c72934aa9df2797531e4f65c58cc54c085a2c3d4583556168271108a08301b38ccb614667a0175034b73a2142fa77091329cfca5ec205f81e67796f912d044b7ad6f34d80dc8d2db40a4bfe1b89b8c8d3f4436efd6e6c87980c7b457f9b703286ce5776244b7c1133b4635fb88944cd7b4dcf5bc05e4a094b59c94803e9f79ef534be13ad1a10fd7195b78501bde277952389fad50d4a59e297b324ac0111d20219d0ad03ce150ebf119479cdf17750c39d02fc54bbd2e9d4e9b03d4ae9fa0668b005fa940a6535a6b779914bd48f587611fdf8f6f98bd3173ffe437976ce8b3c5968dfcea73e986b36c276abc08fda5042ee82fecf6ad29cfbced1ba8132cf28caa820bc447f16d105df1541f2824ca920639e71316549a86554633d23826713792424298a6946468072173c51ea46aef4702346c4620c39388152e0ebf512de4cb168a23a54dd3a7ab283e1d698266cb865b5a767d6e5ebacebfed2fa3aff23a820bbba672cb8e2a5ad75c5cb4a4bf90d1baa2f46210b3a58e7936eaa41f2422e8c6709bfe0c982a6ee0648f8d054e4008c398bf998832231617379d2b3325d92949fb3810f8cb3b39f85fadb81cbafbfaa6f4aaa1c90d66ca9e6d4eafa65cfd4b31ca8017f572a2a6f2659c37d20a54b6a7aa8ab261926ac248157a902071786908cb6f7bd6e804aa5b07bb7c2f5b5859707bf5763b2cc17e49266a5447dc140d92c98b158583b019a924533fcf1c1aebea0c6453e23ada88f3fa35808c515562721673083301a7a1e0b39033a63e92115100761992f40014cc63c95dcd494caca4b1243a039c167f37449c4bc6034519d96533603777e4613928f219282b220cc489e31325aca7f3644271245915a58232cff0338e35f9169269f4880834f07c4792418e25fb514f0a3e1f3ca3612116a8aae7859ffb5b133855495120d01e0115c4f3deb4ae15caa47533a978ca44f889f91b3ef2ce5fefe0c9e068c687c4ec66067e2b3194b382d59ba24d49852945e441260a3b6d2861cd5b122e451cdd6bc54bc03301e03f2b772a6fde9ba848b675aff3420a33c4f3bce1acdd56dd727f9902fba282da7117cce47eeea159a82d062f5359608655f7195d5e5b50ca9a1052377ef22bf9edcbd6bed4eae9d4c2e1f4c4ceaa27efef60db2a65f01189213fa4ab090c4f98b606e306db844bede9c0d2e7e2e1656a7fb3531ce42991920372199e56abe28a655175cc5aa61766d5c8f547009edb113b2d75527425df9498d5ba5faeb78b8a53d17b74e9e6c75b7b477c0613e5f42442df038d8ddded9eb49910d0ec84b1ab3519e9f77c9ab2cb6d666106895774e2c45432e48ca639609969005086912586f5e7dd09fc9385f64da240c7dbc7e75f8e2c7a31770976b537191e7a58af495174b34dddb91ca82316d0eae3c61962003fba581ea118b0b16bc6d4cf9a85f57ab1578f5b1d9bc5c9afdec905faf9b8b7fe2e5f43d13ac34f5ea8b2309d4f2275a643c9b1cd278cae4e6b8559fd4bac536bfa016533e6b2b0953fe03ca1a2bb5e0cf348fd1ef00aabc5ca4297e17b070ef91af50103b38a805a5ffd6e55529775d9452741174aca3f9c2f341e4fba08f68e8290143bbb4dc365614ca0c8e8ff05a87344d25f7647d322f68ca135ae68550e8912e414f9297442ce61252d62be5cc3ac59e91398dcfe98445f07ea4f55130e7d4c553169f9b9fed0e84e0a2690adca16af15e328eb3bc6084964439b68c47d18cf51782f5a0875ef0ac582e8b154594a18aacf54ae226973ced3f789ec25e68d5283e416445e1ea20d1a16aca678ecb3be493e6b3d01961c2ca238903a1a390aa6bbb840dd32146ee005ded93bf3336c70326d96270a05b6631b9e4e59458619b5cb0021e42f28c9c45fd3185b329b15a820d9ec5b142443f0b29df0d950ed5471f1b4f1b822e0d607e2654449e7a1fe4e2bc0f18a9c3fb844f02bc4fc89cfa9f96b351d039cdfcd1613e6fc7030d49f559a54ef6aaaa6f1f209a9ff35d3f16aef682d74065dad58a90e4b9f6238ee61708c94a57667c452540fc8f3e820f1ac85657a34e409d82fa5aed4382cd8ddc6df68bdcbce19592eb7fab3ba875f4e2f0fd8b0fa7cfdf9efef8f6c3e9bb674747a71ffef6eae8f4edfbd3ff7efbf1f4a757af5f9ffef0e2f4e5abf72f9eb7eaaef1ba8e2508ffe8571bf5c37e91a711532ab4fba873f9eaaf6da6d9f850c70d81b7b11045d0d7dc46c52677ee78a6884a459dcf4238baf327e0a0addd30875bf8dcdb1f44568c4654b07f50c8795829ec907b049a764c0e55dd936b3dc32aa0f4eced3482bd89abfbd2ef51bc481a6bdf5734bd47f92d2f3c6a225aa87abd249fe907195ffe59d59f2d83aff2f7567eeaec2a4e1789b19f03fba6dce5f50b0d6d76bdb611d5bc7cbfae93fddfd9d2f1e93f674ba1baeb988af07881bb79829d883cb6975a7f7ef468b4956c381e38ab6a2de658c0338cdae4c2ab7df137ca10fcafeb40af6fcb0f92cbfdaef286ed7bd7b51bbc6c41854e53fe0b4b1a5cc095e72f2d95418409a2b28492f23227fa65ade3b07d76f6b3b8823fab33203cfb1e8a08f9ee254dd8f7df25fce2fb574ac7893ed7dff5e5b7effa505e57b9c05ed1df79945fb06a8befaaef2bbfd7b30bfc856bde6ffe669fe14a9f1bf80d57dafc36dfe1d3dfea3c7cfa7b7b0f9fae741f9ed22c4959d585b8ee9d995cd1eee61ed5bb0a2abb162cbb0a2ebbeaa70719c7b17ab70a9bdd9355a1919db5bce663162fe394b55b4a93d8ea926d9c63a7e290528142e864d70488bdcd01b1a700b16701b1a700b1a77e360162af0a88bdcf0704cf26378245e02dd7048afdcd41b1af40b16f41b1af40b1af7e368162bf0a8afdcf07054b368644e8edda0486fb9b83e1be02c37d0b86fb0a0cf7d5cf2630dcaf82e1fee781014c94646753186c7a301e6c0e86070a0c0f2c181e28303c503f9bc0f0a00a86079f0d063c171b4362c363f17073403c5480786801f15001e2a1fad904888755403cfc6c40c0a96884c346ce7bd517fe0d0e7cc1145c9086b3c3df050495ef92bce0139ed1f4999ca4779703d7f41750cc7a31a23437450eeaa29754ab62ec63cf8f46f363658ebb66429f1cf3e4eac47bad0d4538c6b19af94987b4ddd99103e2d4ea986afa4a77aa06eb75b877bb1467989a8f6d3f3aca9867c9f3b76f6c48944e8317de263e5fe887b832ef99037ca7b681be9b35049e0607f5b85bc3b898ad14d59ce65d723cdcd2430db7ba64b8c5b3e1d64910434cb150aade5f60936f820461f22e8765f3fa3cde3e71f39ce023c7a6ba3b27f51e73ea067bd25cc4b3c98a529634145ef1b2b9a4b94fa01b9fe7bce7070dd14e7b0a0f9e56ba49f3ccf40270761cfc30faced84df2157afd399c4db35f9fcf0a367a087a5c9222941d32583965dcefca9cf1f39a4907be84b573ae3a14d64d79bd576185846fe059584bf63fc3bb10952a991b91c80b2f1e8604d747d00d16a53e85163acfe4d674b463082d850454373c41a5e06ec709dc4074dccae170b805aa445d1b3489f22b46b01c31b411a44b10ec1d5f62a30b10910efb590d07753dccae1bacd375dbf4652cd49fa9cb9cb012e0f886cee7c82d065f9cba33564c985b26e753fde8f7fe0aa3a85607a929f05bfec8ae6ae6167e6d0e316c15a4cef3febff20b9691b31a96e2acab379266cafa44666ae473863987e0fe37ea9dff98d382cec8af77afed8559db33d6d62a46ecfb9ae865e563af7f4727e3da2edd359b4bac2b67f832733253c819fb2c007ec126a1ed135a43945ac36e445cfc83a63cd1de18bae153acac7f0e70b21e29c2e80f0271d857fd8192d5c4413577b01ed31ce5199d3b8b5b11de2156d11bea4241782bedf749b1406bd58cce1d7e9515cc783b8a1cf57ab216c44711c6a77951c2837b660c7f8bb43c464450fa200fc036a884992ab6f1b592108260992f5a05d36f1272153a43fe6dd049e43339efa52449e85ba3ab31cf3827241153ecdf9c0a11919f98f5519de697e4ee282fa77789e059ccc8a553c8678bb4a419cb17225daab8101899531965208203cd12922f4a1596c040b1a4e7188042670914ac54082d4c8c090ac4d72981af4038047a9782199d97828c9828c964c184894511e745c162d4bdc2eb0e9e4d22f20a7774bc2817052c47c248d20e490325cc54eb45c9532eb94cc233e802b8b6378bb4e480731202337aced06ec9a85876c96851825098e597585dce8ca56392e40cdc28a023e35a31a517aa799c67319b9766ec0cb2898c01381ac361e999a66192c185edcbe51af86caee2b4f212f0b34a6a34ed905de2ff1854a142219c7229411def7b3f36a54b4542dadfee9c45b58341500af89faf31584816299c40f4aba625d1064642d314918767e44c2efd0c914b7d86ce64919ce819a02c291815393eb201d489ea686bf5026bcbdebbb0624546e698ac1cfef9f4495b84320c070fffe8afc3c0e5e41f345db09779f177b6444b8d4fc6543026e8e229fc83e69a018ce5186b241d7ba91f3ac856f9582d1552eca0578a3e5e652e291b2b242733ce0b8690c4b186e8cfa2c8db88cb1dc49c799688cb7effce96e21dcb12bc789ba839bc21c25aca2a767ce25abdf08d11bbf83bae53fe19a44a30650eb84da9edb92e7f6d30cd63d599a4c94e4b27f054cd4c8dca85d4c41673c79f2fc4544fb72e6d0484ec3230897dbec5a286068a9a7b65e13a8bbbbb2ef5fb24545a3926c5a6260d01c3bc8dfb514de5a0b117372108f1d676bca2c909326cee09f047ac3e5436ef1f6b86a8e92e73fbc123c2339aa6cbaebc2cf56d2ed45bc1842759abd4f635753268b6d487108f933e072184abb8e803d59bb2537925205485dafc013e8f7b1df28352dc469e03a5253f158ceac4ca44273a182179ea7d1db84a2dfc56375a0db3ae45b5e071ba1a3924f781028934b16b7ef42ec91bbae27847afd87d23a83c84f55fd18867491b434263df46ba9632aa17b85fbf750ae0a91ded354c9dcc0020e487d5d5c3a44a6df02daf54461d3ed6d532bd138b2c047d28f000d6bfd362b2e22c5459653734a9592de3d92e6d78689f94a12eb0e1aaf467100e873db9ce12668c1ae6ddbd235dddae6ee3c612c44c24eb249720c3bfec744ac53bbcd1cfedbd1408954edd1ff19e77eeea86baa61bc52bb8d5dc89c35d215e337a81dbb1620da69b8e14d3ee989f91d6b482bb2a2fd90cdf425f9236d3117d5c05b75e8694f5eee8f57ffa64a7d1f13d96e33c1379caa2349fa8383b687091fba3ab797be22f63f5a1bde1b1ad39b86b0e97c167b7933587d7b631b792b9e76d8afd3b0e203518e5c658387a60d41b93a7096933151da509cc29f6f0e5a02cc106094c56ada87e411ba164cd5a557a9c784ab3094bfc67f8b4548f4af4dae74bc81a870c2c15a55b5d5b84ea41b5c8d4087f284a564fe31f85a055ad836329bbbe4d63779bc6ee368ddd574f63779bbded367bdb6df6b6e16df6b62f98bd4d723eef2490248ff49a4fa6e528bfd2299660631793a97e708b39635a02ae068c01228659bf4f8e4a1a9fbf55097a49c245bcc02d57aff426791e4dd27e1ea7c57f3eb6fec07edacbcdf2c6d926ab93c7d97a6b33c88559329d4b61830c72b6f54669e49cc13a0d61e63bcd19e2dcd5fb69e2b4c8adb38536241b0aaad5641d720d8c58e92ba4360aed7279a6e01066915a9dffc8826345122477872aa9cb4d32b11be4f4763b8c1d60de2c895253766877515f9db1fec3799acf4bcdebe4e8773ba6f3699127bc64fd2cef715de38fe19ee43c8fe63ccb7c6bb9fad476051213d612df75398b8b2067fcd194317baf41cc1bd53e380f1b65bed3979e8dd30842ac3b6a2c44a76dd322c08c3beaf47f95310a3e9fa70c87e8d8740f0a5875a7369577f59ab4ff0272e4d755c267cc36433f8eff77b61c172a12290cd3dafea66576bacce703d2babffd8d2676291b97fe1795897e3bc886af7fdbac8c43938dbeb5b35d1964db1b60dbef1c1b0423781f6d02c7a1cd428feb34f92c6dd80244a7d3828d5d6c94f04567c771043f0c372381aa4be4dfae4e402d42618cc34b255ccc53ba84bcfa29cf586f94e6f1b9756f9be73abf57ab602985882696adc285cbc1cc37bd709ddadfe62ac4ad74c676faa62391a78bd2e97b0476db0169edcfaf88c8539e40a8017fc976df8276ef69c217c2c70162a3d921e607b855adf65ce55d94db286abaf9c0673c9be8a7df03d28a17231ef746ec17ce0a79aeb6a35df93f8fba64a753d3fe55c97080c37c9195b0076329bde80c8e26bae37543ce40750c1bbcc0becc7d541d75c4b3442f5a680fab61f903cf12325ba4259fa76e54c0192ba7792206c05d96d6c9403215d7c46409758bc061f7da9c05814d1d6900199761392ca328c23fbc59d95cc05d72dc425fcac3944bcc26eae75b29edb4907129af8719ba0798e3e77567cc14eec5a09f7b39efb44cb51afbc638b47441fbe3f18976a13e1e9fa0de117e8586a1afc6714839e3bd62308b0568862f7996e497e49ec9b3598f7d77ee680955358040c88b0ca793b4e41d8d2591eea8e6937f4f75feade21ddcc6dcb98db9731b73e736e6ce6dcc9ddb983bfffb62ee40c20689c67243ff96a795acb17ea11ba38497a8c8fd806fb75ef3192f83c67555dc2e32c55f8f52f69e89b075505a4d582be4d624aaf3362d8a2ee1be16c29fbdac02cff6ebe665da7ffa14ceabdd698e19e4cdc18f625437b8b11b40fd880b3377e30a2327dd3c9edf69103669d5b22c4f4ce1c6540e96a811726d9df82846b20ec6ca0a9fe475641847759794c5b262163ee5f07eb6383e020a1ac1accabc386977bae4543c2177da3060fb1403f14419a8523b906da1f3c4cec68ff150a093e7a988803b0e33b270c9b64235b442031fc23b6454307aeee941494ccb784adaacb079cc60bd8eb517166b6e563246c745a367b0ab5686b05378a771ca8f875bb889c3ad139b60d8ffdeb66e1e41bfea2155d25157fb296b361d9faec4923a4cf071a582e25af15a678c924c8894ee69594aaa2e599d84a19cb728983c2e3d3da2b9d1f0b836cc2f18bd4289f245b99218e9f215f46835296aa042471072bb990e6179951295f9619e89c54cd6b127ba9e14e9b9375123f3bd32ee2a3a549941032df2475f498e6afd3dba7221bbde7b7b7be83a3a2372d1e00b22db1ef313452078253c8b85d5ae67a25e4107f5825692c236b7590be57203d2246f6f94d355456b81b2318fcafc08b844d45b603d342b1fab0769cfb411ea64b865a83942568a34d866e343db785e3532dcf0c46238f9df765871e85a3dc70ac95394c1596099e4b93ebe7f658c4d5027520193dafde33bad76e7ee497fe2fa225f8582ca70eb9be1968eca7315c5535a1ce6097b56b6b73b66bbda3b0fe48f8ff3392b0ea960ed8e975bb86e2910602c3f07afdad637c7b437deee3d3ef975f7baa534de9808e38dbc4798963edfb3c98bab791bda75496bc2419c83577f8bb4e4b5955b6dc8a00543dd23adcebd966de99097844970195889b67de8da25907859e382bd98fa7df2a15822a5060617d21c67252f989276f061bd0750aceaed8bf3a6f6e79c67ed564bc3cfbf47fb7df23c9722f5946713e7ba821785b60fe772dea9bc1a34d53c6f05b93e29c1c2bf9f3e911d90478fe02744d6026acf33b24be6b4288595235336962d9de1815b6b6f6ba819e606a5879aaa4e3def3c7ba1d0628af1a3dac727ddea66c959746abec3989daa5739566cf36cbea8d9d7e69dc206757b639525806af27042e5087237b73d6cee54437739b9eeb17d0371873ec16d2f5829b6925ca8c121e355b7d98cea2e096850efc8142f4499cf9e37c108a76c7418058dcfa5a4a694373a6c1bbeaea45942e6051b735538a373d47180b2e887b76fce0c0e61b337746e3516ad6f5ebef8e6e5cbd6005eb02f5ebe7cf95cffb3d535555e7ef3f2456d152b35e3eb61b9a7071e3d89d8158bedd6cbaa9753298fb6a176a7966595671589021564c427249e2eb273f012d31e1b56efa617750c1d1e6fc383991af4d3c596bbadc1c1e019b24275b7a9cb09ab7a770e0e88a9e23a05374cce3ce9c55ae1f3a50dc0a8de2b3d4b1272f6cde1ee1951af8f5996e8f7a3120ff4f3542199605e9a27a85ee03f7cc7075c867ad5c42e58b1043a097edefa4d93b39ad63787bb2db9148b125b060d5856169c85312e6deb4ef89acdf1d3556d6b0f30d81870def224e0de240e49b4640423f3a9ce9c08988a00e051d697b973df81676c6bd2ea74ddd59eb365ed232b7dc0ebd912cb172037917c7cffaaea9767cbbc14902b9def5a2faee62c2e5942ce6cf333b9db237cbabc9c3372863d9d75c9242fc959cb7add3943de23adb396b734e71c3af50e9c1f96091a0eef4906a8455a680182fb7ccac868c1d3121d9865a3425fe4eb2e08074ecdb744bf4f5eea6c14654ea8525f2717924d4cf490febddd446d2b0336315cab794778b824d89c02afeeb9ca6a474764680edc249fdf7e6bdc207553afc26a375a8b03c86228c6be0109fc3d46638837662be4758eb1e54918f5cbb47b9525ec4ab23d2873e878b2160c4f6a06538d20def22623fa450e77e475d8e912af4230dc3d5b5d8b81279ab56ede582e7e588cc7ac68d362120aca1367f3e42f0021ca582dbf2882672a50ae7b0e6bc0cdbdb28614693ebecaca474135bd08879c785eb24175cb5698500198960fcc5952ce4a689160ce959f05692d4a9eb6084248365c012bedbfa9bcf0c107d51e0542c0d11f3e5b1f55ed89af4ad7f9fa064f05cc2d5befde6b4cd43023fbb5d9bdb7d1c1b7d9c5d75edd36a892fb08bcdf87975b229ee6790a9612b8f3e4b751915f0a5688af06577b177e60b3f9213e6c311deb6f60d335b5f5576f2f6aa0dfb46d40a14ccfb5b582c0ccfe738c3acabb2a0ad1d7f340fc3d1c27270b578fd79a2c92965fbaaac3c922712a5fa25dcbed6e3cfa59803f802a6b55abafea5f55b97d9972fb32e5f665caedcb942fff324513a337cffeefe9d1abbffef8e2f9e9decee90faf3e9cbefaf10339203bdb0ff71eeeef3cdadd43ef0e702c4df43cb820f33c5d4ad62982272ad3b29c8b41bf9fb00b96e6735644b3fc179ea634ca8b499f65bd8f47fd248f45ff2736eaff27bda047f0f8b16fce5bffaf693ea2e9290e20faf86f9f0b0fb7f18cbc12edab2e593aa88c3c6d253ecf15a0ec362805499f602df9d752c9376ec018afcd95449e25fcb96c5021a1c7db05cbca17335e96ac68a3ddd11a52553858275a8defc99bbb3114f34c07dd755418ba07346dea72ad40d1ae1ce3b1dbcf78bca2234835a3fa1cf354ceda8a52d3407902739d02105423ab3309273161a5ff0ea6e6590ac0276827bc768295ed8c5d42ac95ae7e86fe032f4527389fc8edfcc3e9d00156d56fb30a10bb3e2cc2cdf3c7ac596dfd459967e9121edb38b1f17eada884b5f1ccd6796a5fbc6f9b602eead5770db2818f867e5aa4ae6f0d2a9ac68b9496ecb002336039de611aeee22fce8b1a78e1950949d5fe12db37364e3840f555c5086e9daad7523d4c49a34a7b2d720f1f20489e49bb9676da1d724f366939fde959ac7e8ee63d48532dea5ea3b9efd154b576a0483c2dd96cde45d75c785c513a1ac486f76aaa2b57d7b83e49858a31fe59f9299cd0e2cd092a6a038ba3f34f1b56897fa8e415ebded59dd6e7b568cc6881092d3a0a92fadf8821e1938244951a9e3a0fce903276713fe4bfcd1374f6aaa2d8d77be3c833c18b3b17b3563cc65352c9f8491d4cc710f20ba6303e768ec0898eb7ad96ddd55d102f667bcd248d8af4279ea6ef59ccf805787a7bc26663251bdf2708b01602181934130cc8bd8eecb2f334f987a2a061fb277e4d4d6049a5d3a0a24333fdac5aba929cacb9baf504ba66808e374912f4b70d0cc88fb9fa6c2b86f1deaa4d2d1b5d218ea1c6e7696dadbac992413dd3e4add8c460a80fc2dcb20eb0ad60f10469a996112d3d6dbb6bfbb67e0ee870e054ec9256ddba06c4535fbaf7b3d260527450dedbe98d7849a4dc396145445ea990ab05e2673220df8856c3ad1910ad707b3e1d0458a2a3cbda2ac0bd55e0e39ec10839060f3b574fa7f2e7f50607787d68feda07bef63a2775691df440c86036bcaf75e653f71ab65d7bb56b0a56571692b48d9ee636f4d5712e77cd4b345ceebb35b7bb6ee25e48bb35d7bbae577bbdefaadb68172f8dddb537bceeadf1865f9971e98fc9b6241766aefa5d73d7efdeecb2dfadbfed77575ff7bbe68f08a24059eb35b1e2b2aaa00325b66d9423d338cf3ece136c6f11641db7af2ead9160c585a1ebba43f7eba79a3ba7edd5f8d61fa28eb8e865b2f248aeb41d509e756b25aeace01319c5fbec6ec0fc6844aeb03f1a71bf2e6751036f4b60dd02eba221495ed0c4ff79e078064b69bc52aa625bd66b23fa7d72b41889b8e023b89e689aaaad1464b4d48a4c3d9b01a999a4a5bdab80f89c276ff24556d6024f17b6ebb83045533ddaeae15663ad28c7736a8e47a78e0ed46c8a73d1fcefde1589b51fb359e3c638e55f7c6fc6e3159bb376099a42045289a21a9f335597c9a89d31685eec242b2cb2b1fe5bedc18d9674034ec86a45ea428fe047b850acc33ea96393f42cd6b04966b271c821d5693934875457b63987d4d041a746d9a7d9a781f9abeb037960fef2944cd527bb5565d0aa4c232dd5b075f22fff22eaa622957930f54a54cc933d2e94d7cc0f907a20e5312fd32559089e4dfc479ecb7c4168c1483e878c7c3c2b73b079285d373c891eb129bde039c4a8274a1f6ede72dace7a3cebc9790e9d70ed6044799b3d07083c8be5eadcb726958d75de1b37bc966c75da6ad911172f74eaf09a713a5583f96743c379d27963606cbe4ab9069e4d8ea67c2697d95166eb7f69b4be7d6c7efbd8fcf6b1f9ed63f3dbc7e66a76b78fcdffd477d0d77b6c5e897ff4af0b53686f121639e9dcced90bef42aeb8b7d6a439b68eaf4f1cd94003c7cfe945e398cdd5bb94848b981689404f79f10432535179d710c11346d878cce252a8b4601cb330cd0b3ea30507ee8f8d1729e109cf67b4e4313c45060fca0b56143c8117829691c89279ceb352256cc1fc61e9255d0a92319628bb82ec44b6ebaa5c66ff7944521a9f0b4241dbd0834b0b462434a5e4308f73ea267e824bd605a0cb5554599d27151e262aa7b444751b24400c37e4c98afa2fa964956b1ab5c121a8b3aaed876251df145eb2af6af9e3224d6b5bea444eab4645837005a71c3d820d4dd6d4897eb6ea7554e7966dbaaa4aa31e883f3fe1a595821d33a3722d30943b7093fc89a7893c066dfb66dbb239c3ad8ee39949934487c16ff0b5b47d24f9ac3765e99c15a20f7686be6eedf789f9fe7e43b74e0761cfe878bbb64f9d49d3696bf3bc6dd241d4b7f5fd7eded578eacafa8b92a7a26f4aab2fe27f6757d60694b0e3291b7575b0900ae7a39f6bbcc794c1fcede867376198edf64ee03ae9989c54661a3b15ab14acbc319f52f1f632d351e2f051693efa19d36804c60c9d57c1ba48fa31e6e4526d1865a7dbe73619c3d37535ece83a67ee3030e8ca29c8e6e4d327984e243cf10bffab0f82870085ee31614260cdad7100206a17740a915cfdb9b119582f00bb71088ede77e2e4247eab71a1826fecaa64592234bdd5bfed5e5021f82483641586a662ae88fac00a3b3a74826f97ac4ba6a17811d7c2c84fea8c9d0af3b0fee7211fb6adc53f5c8dde08ac18ee4523f8f505057d18aec7210c1aa20d51be9bdda23163fd0adfe81b3919db4a889bd5c6c1930b5dc1afbdde51d7b99a2cafa7beb5a578d6d5518e7d022a8be449d72190ed9f11bc5d6fb748ab360f6f48f7c02d458f68dd52d4d05ecc043d67ffea732c06e6f3ef377367d07593d78cf5337266afbd33271a2aaa450f8f8e9c9447c8719bb0b002f3a3be2a5b92fb1673d07c28ad0ebb8a599aca8e8eb3494fe5eb3d692b95cce5e565944dd457709fee90948f0a5a2cad6471767874e4ce4d1e028eb97c292fa45482af273208b89c2ce0f92368943039de59979c4166a2b3ae49f47bc6ae787946444927cc24f0b50b945202c3a7a4aa732ed4b809b42fa72c231433e242827d32dca271c92fd8704bb7c830952bd80b65112dd52368212cec22f26c5c2af9cc7cc479c2db6cd0492779c6cebc55d28299f99439911c1417a5df0be6b1b270844cce00179e9d815611b247e793498abd9c4906f40caa188b13b9e4694a260c5309436b764567f394f510a6801aeaf90a0226a8d143b8381571172047b4123421ab6cc9e373239e114ae23cbb60196ad9a980dcd6d8bd09062e7019a1cce4e10b399048fe7f4e4fdf7d7cffe2f454d6735c76403aff4b639208a49f5e7f5d526914aaf7bcfa6d2fe6c4a9137cf706beb636bed00dfd6d37f0b635d790f1a80dd6e739d20465f5de34f0acc75de8a9322cbfc8cac0690aa9121e543f279d01d75f26ac3c345bae5d6222ef6bdbf4409e9aa49864a05392b9b9cb9c60f2ba2f7f84c894bbee5530a6435899a6e79828cd75b0aabbaa6477614807d76b58c1c6632b6aca2bf06a36687b30c7177bbf01ecbb5f00ee48080e57437f370aaad56cc238cd2f9f65c9331fce41bb0da0edafbc16e09073f4f3600eeaffdf00f2bd0690d7c2565e116b20bb1779953642ee35dbdb8cf4de501b6c054bd6ed044b3e6723ae7859d985f5a0df6f043d9cf59b5093fd9b921305e5ce86c467dd466c4a7dae78b96a07ae7889b0db0ce675f4663dd8efdf00ec1b1193fbbf133151e95257c34f93920d4158433ed643f0c10d20b801c978f0192463ed7d7813d2e066886e82ab220c6bc11ab2118e2e428ab43e6ce32ac3a19cba4cc193daface530cdb851b6e873c754a8e655d780e672bdf23ad9e0ea1e38d5145f99b8e24fb7e06bdb4bc41614cecbee50d19e2c8e70cf83ccfea86935ddbc17c0732e2a7fc317f3af81b0063107e70aa7a8b18f83f0dce3479e4698edd8b4c831a0c72e0b3fa5ed40a9023e0837f4a1a9403e6f878b8d870ca1f6a9758ff9043d36e0d04eb0ff7c36803b83635dd10da4dcdebc98a9df0b7df36694e34d1a89b6b6dab1a4a5e9d666dcb0aa1b2e8617636b83dfcddadbf5aec32dcf8944aec95226199cb7f62462829d89cf24cdbfafb7db4376202f59809418ba5a768f0b25843862670efa149226f64eae81022abb3af4e8890fe5dc244cab3b2977001c6cf2cef2db2856049cf863b102077630badc282983e222ef234fd90cf9f543b64d99afe36e16488fb42d9db91753ebb98fe1e9f0d18d5f5afd75dc7c9dc5e4a094b59c94803e9f75310d6e73173ac4fba46d71f57798219d02b7e77405c61a21b94b2c42f67495803dc6a0219d0ad0349bf1d7e2328f39ae3efa0863b05f8a976a5d3a9d3617b94d2cdb1a8c116e8532a94d598de1add62c1d6a9dc9f865be4a90fe69a8db0dd2af0a3369480a381ab4973ee3b47eba6221a2a451915849798195d7421a7ba2079013e08639e7131550f101d2da31aebff63ef6dd4dbc87144d15761bcb391d49125db492769a5d519777e7a3c93bf8dd3db678fe58d291525555caad254956cabdbb9df7d88fb84f749ce470024c12a96aca47f66764e66f7eb58451204411004411038a418bab02ec544a6620c2c771147646e8cc90e3756a2584da7f1958a4052283999a3117320546f4600092cb3930d473b5319a9d18eb39e9ee90f64c3ebf25fc65ee77f041364d740c682abb874b5aee2b2d6527fc386f4c51a64c106cb3e99a68624cff4c0e2348a2fe26825133e019a3e3229c0c3a258aa493c8dc19018a92526924dd62289cfd5c027c6d9d98782fe6674f9e517fa46a7ca81682dd68453abeb97a1e24435e0ef5a45ca8baf6b502e7caf240021544d2b4c584913af5605162e740119faf9f75007b54a55f0bcc2c78f8e5e1efd8ea6e00d7d29538c9fadc0d85c287b63e1ee09f02ab968a63fe6d3341b14f89cb67a7dfcd99b14056985752434060b708d3278ac340672a19227b200b7a575b6020330f83169992e75e5b59864ab241245bc58266b8afe4d40cbb95a8037a09210d034898b926e1016224b9518aff53f5bb293e8f57a34b0465afe1934e35f2850e3b5a8f0e0e38160a927abfc572f05fe68f8bcb18d668440d1555c86bf360223a6aa95180a808ee0c83460ae146c533d9ecba556247d417c28cebe7592fbbb33f0aa82889c53b8678a170b15c5b254c95a487b954276112d80add9ca5ce4106012e4bdc0d438af237005fd4bb948ecd382b83834f6a70178c176d818edd6edc6a7f590df7450e69c26b29ca0b53c19daaadd58fd1e4384b2df7194f5e1b5aca891b9125f7d85fa7af4d557eede89df93e9e1c315136dd44f5fbf44d5f4772086d6847e275a68e1fc9b706e056dd8447e3f9c2d2f7e2e17d6d1fd3d39ce51595922373199d36a7e534eab0fb8ce55a3f4a3753dc2cc44d663a7aa5ed79d084de54d0fe8463be629ebcefffc27745fde1a7d796bf4e5add197b7465fde1a11765fde1afd53ef417fe05ba35ff900c18b597da3437dd303845fe3d20f9f9e660bcf131f1fbb47d98227b46366bf1ff26cb5fcd42700d0c876fe0ff3e947b94039dec82d3956c6c1971c93d5d5245945f6c214f66bf28f362ef9e69ecd65d241b763e3c9cfbdaaffa6d6d5cc2ae43e6d2b82b77acc93acb0042b0e4ad0811b5dd85c25963b652ada662c36db03f8dd7f07718c26595ac6a98de6b1d9f9da0f4a6d9dacff553ca6ddcb3825cebea5a435fe19c89aa8c1ad126ca632897f565183cf2fb97aca922ce0aa1063555e2a958af232b3915b9987eed9d987e20afeac6320e2f43b2812e2dbe73252df7d1bc517df1d91510b9d6cbfedeb6fdff6a13c5499271192e3ec42d55b7cdbaf0fde60577110ade3f8eb9d446b30b77014adb5f975cea2ef7fadb7e8fb3fda5df4fd467f510c575cf7190d3d2cba31969d4f943f329e1d1bcb8b78aa26eb49a2da2d321db5ba98467456d46302d5a850f5aa6a22c4dded0971970871d711e22e11e22efd6c22c4dd3a21ee7e3e21e274f649b4a8b8473591e2def6a4b847a4b8e748718f48718f7e3691e25e9d14f73e9f142ada9a1255f7c626327cbd3d19be26327cedc8f03591e16bfad94486afeb64f8faf3c8007752627f5b1a6cbb30ee6f4f86fb4486fb8e0cf7890cf7e9671319eed7c970ffb3c980eb626b4a6cb92c1e6c4f88074488078e100f88100fe86713211ed409f1e0b30901aba2910e5b796bd5f6db268fad0a0a9ca455ec28a67e57c4d1555764793c8b53991c6a24bdbd1cb4a63f8125ce4b9964b4293fca210ba75ba9aa77dc8ae384d1c7caac1274ff248eae4ebde7b950847d9c10e6a71dd1e6d889a160b53ab69ad9d259d5ca7899f6ee86c2ba097c6cd37b353ccdf5a6711a3d7dfdf25516290c9ad76970bbdac6c9071dcfcc985ce7dc43ce119fd5b6d46735e3943203f07a31af617d8a361ed558f3ae3819ed98ae463b5d31da89d3d10ecbfc09a320158aeafd0926f9539880a1880fda866198277ba7ac2abd6a6baabb7f1a7691a21dec5173519cce3694aaa8a1f02a2e9b4b9a6182dcf83c6f2d38f83b972d9a32e283c7353049965a284067e6d175aed603d182afadaa9b16f95031cda6d991cb57051b5dc23c2d890465470c36a28cf35dc3193fdf8074c5792c8873dd832c84f2cd6e643511be852b5950ec7f863b191a55d201b37fd92ec75996f018e2baaa59822ce98bf954bd92f1ee589a96f604c2bea200350d4f31b8f34187bdd417263bd56834da814c53a6b6b823f02be6a91a2b340a276b38d833e75196fbdb24f7726f955749622301345c4786a6e9b7b992fc4c5ba64990f1522e97a82d56beb0ba0b95cf142f83e039b58f3ef423cc9556ef2450e0b77ca5ae02b855bf36e720740652f69efb87f842a5e22ca0529c756d141b93644a2ca8e7730559f271ffb7e69d3f2f652e17e297af3eba0d3308196b1b1323c2fe28ccb0b2a9079fd9646a694ca889ddc4ba1ac3e7298b75aa31f65500fc824daa975dd01a72d15975a31717ff29933832d7efa6e163ac6c7e52a2224f147969bb7dd39f0953c4b42dc87e6402f99aa5bc904b36b80deff927f45c3ff4f6df1b69bf2ff2556ad3713b7d55e5cabab71519daf5742d0888515827d655092fac95bde95925e5093202d9833c02bb280216559b6a9c5925e1cdf93a5bb5206f3238a167142b41ff6dd9a9c8161aef35a4e300670a534d79b731851662a4fe2d6551f4c44fca3925ceb34bf1d5382be75f51c4ad4b56182f5649295395ad8a644d8100c0ba69aeede0c9be4c2391adca5e25d25829cf31e240ae2ee26c55800324327461830a4810beac04be82e028d09d10ee4de3b21063559462b652850d3e30c9f25c4dd0f60aeefc713aeb89239cd1e9aa5ce5301c4d232d3bb40cd434a3d6ab324e62ad658a380510a0b5bd5c25650c3c67d3b383d14ec962dd15e3550987c234bbc4ea1a33954c6dea760064efd2e7f2829a4fb274a296a5ed3bc55c6c401cc3e130f4d4c830ade0c2f4657a0c362530c46853b9aa8b1a233b3448fc8f65155910c3910f01da7861006ebbe152a42afbdb9db35eb033884200fff93d3aab8a45092b101d696509771a324e0b882d0fcc13a7e24c0ffd0c998b3e03305da4113d039615b9924586af2a80757a21d95adfc0da1a7a17464c6204283dc47faeafcd8d508ac9a6e01ff37554f13180e8eacfb3fc6f6a8d3735be18a3e83b00e231fc83d73503e88b5dd640ce75e3d9ae5b65531a6a17980ddc10ccf22a332dd954ae359969962ba424f635420706126f6388fbaf1b8f58386a0df76f6a5dbc5169841b6f9334874723588b6ec54e4ef9ad173e2a51177fc371ea3f3d958e953172db5207d9640de7f6940a9a27044ccb64d692451a0a606a4d2e22104c8af70fd917a907ffa18da35b6c6932f1f516c71a8628847b6de07ad8d571d1efd3aad18a5d293635698810e54ddc2b4265d808c5dd405ae3008ded6443935354d8f80af07bacbf4cb50fde025d04c0a51c0e2e91389549b2eeeacdd2ece6148c52447194b64a73bf462b43a66bb3087139997550a5709d177da27a28b3ca1b0941158259827d1df763551fd4c76dd439f0b4442771ff96dd9d894e4df439f1d8fb3ae0462dfc16ea2da0ac9ba35ae53532f55c15f71503926852d7fc704d5a37e4c7f18e19317f14462ea1e6afde384e2310515d1c9bb3f4e833aa979ed73c6ea9d0d378561b9ab2fcbf70c8af56a79728b5dae04c5cab8c367cac6bcef42cf85495f4d5038f4bd8d3759a0595d566c3889acd673c963dcdaae6be28435b60c356e96350ed0e21716709db474079e77b24b7edda24a9ecca15f38ddf7472e9f8ee939894b778833bfab9db972a874a56f715eef36caf6ea86bc190aec0ab71c461af285e287981d3b1610c164c471fd36ed99f3d636905ffc4b8540b7cfc7a29daca8470e1066e330c7dd6bb65c67f7dedd0e8f82eaa932c2db244f5926c468155f0c245cf8fa9e6cd893f8ccd8bf613976d60e1deb0b85c4e2bde62f3e2756decae64f779d40b80df18210d19f5c4383a7a643413932591682b0a87d144e60421fc7654d66483a8c49b46141ed0562c19182b25c1a72c6bfebb6b59d22b0233f6e51ac248a3022b8b92573737426152ad52eae11fca92f5d5f88f62d0bad581e791dee9eed41c2e3719071b0c6a9835a75575373c68761dc40a9db083a4055b7102af56dd04df56620d67ab88439fada2965fba09e06c15b1ca948195839b8e3f14f01682ca5af5ea9be053957fb0d7642527a6f1c3c6bc98e475c79c256fd91ad6653b9b7a75ad2440b77cbd0fe9693106f727324db3125f0898600bb210d2aa81c6985e0fa2db9c28b150c914b29e271c55fd3580cd5b3555b94a271625b0d890b41a2b958a1855dcb85091d84577c276c7ab810f3418aa7cb9e9a169b9e9f20d27f01a64b483868dd10e7873d54a19053001712206420fa2d91773931b265c326327ae8cae6d5c571ad34ab117993a3c8bc7ba85705129f0b244c5e55ce9f3141e2fb29c4d6b179e99c0554b0d298f8a9fe43dea63ef9a5871ce7c47073c7c1164eeb4c4734afd6aa172394e14ed96b6e4328f4bfcee291f932c9dc6b355ee8aea52187c8cd9e4d0580a90ed88eeeba90baded7f6f98e0c1a7c40a0e276c1c8afdbd07771fdcdb7f7870175fb6a40998805e9b6cbf629925eb699c24bd514a79bb8a41bf4f89ce54de5b643fc74922212aad4a777f3cee47d9a4e8ffa4c6fdbfca0b790c41c1fb76bdf57f48b2b14cde6307451fffedc785c7db3633f85557ac192b5fc12aa999cdae3073ab5e51fba22fb096fe6b1d08cbeeb5b9d2ccb3863fd76189134863cfb3a8e39900bc349811c90fd394f1abcd2c35be304c5d3210d0ac64cacd6e6e9eb14ca71cce74ba0190183a98d338d158bb43d53c943f720e44a0468fea2a05213153e5c0b36806b23cf284f0a65de1b5c314dd9bd3fc5ed844f3977e4e4a37b0da71b14e10373e2c6a6fca07feb11632c7e70597bed25d59f1fd185c4a7a7151712dd182dc28a27bd6c642ca5880d9781ec7364fcbd90d66a4679c18ccc8dd909192ddd2b1e49662285aefdf231ebbf852844a21d81a28d05a677201b33be28e6ed262f00c160d79bf0369bf6d024c969a3a90f5db540b66fda6acd2982af9c694df065463caefed327e7f82dbf85661869b527ddb4cdf36d1f7a7e5f90ea7f9de9ce5dbfc6b32ebdb44a39e34e451ff50325262eb2df25ae35cd5b25a07d2ed1b13152d8b4afa5c5e54e38d5c4d1f85683a35095f7335ade677e5c3ee1a10c273a50c20f93ba4def6bd0491c0a8a0591b1ddf8edcb0b324328986abed1ff9358d801535a0958a4c66fa8fddec2118339be0d66d10e8da0eaad9207c787ba080bccae8b3ab18cae9e137756a744d38822ad032c46fa14e5dab1542560cc24a53209fc9a764a075ff03596ace884e9eb6f9d86e8771e8c0b058c5ae6885c63510cfae966a52524c2dbe3f53f22d898fb3efeeef8ee352e873e74ce53d71449e1039f2673410ff5eb41a76cd8ad0aa4ecff5b0c225c6e9c35509e5dd17de1aeca1c6e071e766746a7fd6c29d0616f027a4b20e7b218b90b7b5e90815ccc66cd5161fb677b394d5a1addd48b050d9f629abb9435e1856876dee469768d8dc0f02bbbb69c237a483c0f66eea05b7f703da8d0e70d338b8718737d01a77f88d0fa1fe318fa0f4c0ec567f60f7fa834fdbec0fc2bbfdc1e6edfec0fe8139d85dac01e18ecb54c1a5acb783b18d4d627c3f2ef30dda3e6d5ae342e51756ae1b80fceb7560cf697b356efb5d84848b19a62a8ff548db15c973d358053f2bf84286749f832d941fc3c835f5279063ff77d02c02f476029617d87162144bbf89ff733884780153b0215c5fd74be9ca396c8de8f7c5f16a5c4cf2780cdb934c129aca428cd7c69069b0198800924ef66e22e2d3387a99adfcec85b5c276480b2399eac9568fb71a6bf5325ca776797442722030293c90f7bff4ac68aefd315d344e0c2bffcde7663add3039370ec14888caa984a4c6e7a0ca958c20c660797148d6546402c0ad079f34a44fd0849c5524a013e1fb24dc50e8a4d2a426192c6e50932cb293aa8614b272180d2954b6bd86d400a01330f619f56960ffeafa441ed8bf3c2353ddedbf6e0cdaf400a0450d5bfff323927dea91ca068b392a6ad793bb71d1eac0c9f27bf0084ee2495c4222634819c6035cadb31584b3cb96f050364ecb0cee3cc8d60d9eb8633597177106aea382ece1368e9503b61ba7bb1a4fee45099728afd3a74081c3891e9dbb6215a236b12cd65a43a4a856a74dc3eec5858dc418e8071c899888f835d460e1ac3e9918db8f528f214e67c7f378a187d9a16bebffd16cfd25d0de97407b5f02ed7d09b4f725d01e61f725d0de3ff51ef4fb05daab55f42e4efd04d832cffd4bd65a0eea323b868584d9a7a1bed6134fe8d126c03c6d99e9ab51a051db1c86b5cd4d2acce443d1376a67cf35ed2de2b4f701452dd7c3b606c554500b075951fcd9700abe4dbbd8bfdf7bd8bb0facd28c89e5489f897db6a5941a8590d3699cc4b254c53f352b8713c61371bb62b4e37ce4463b5d7374004bdfadbd510a063dbd1cc6a2e21da51981ae988e413e8bdbb7e9afde3433e7bb89188ab178cc0acc93e31ec9e1d14e470cc4fdbdfdbdbbd4266a6e031b5fe29adc3752b3b9c9349733bf9f0766836a6e84147cbfc822e5da3d34de1e1bf0cb333d6fb96db47f8f1acd37368223b1ebe91b6a74dedc880edcaea33d6a9334b7915a2df007b5bf4fcd161bbb9aacf25ca56543db7403f5b3fc52e6d1fb5c4d5dbb036ab7dc3001ab62a9d7876b64b8e3efcd8d166a91b9065f9bfdb0b941227f5ebb06f7fda343d996ccc98ab92832ce9790b46a9524700a97deab8c95180ad9fbd39fb0aab5eb14977139998bf68a69e11359283119384395a9240106faedc9ea45b16e940c6a9f16f54faafe6956ff34ad7f5a0efc3b00f3f8bf727569bc69fdcade2034a11c35eaa3b15d9e0f829fd3f0e779ed732392cd88b246ab477e917785cb7e40e7f9c0fbf977ff6734a8191e57953791fe61f4c2329c3174ea0f9adb16557b18b9460e45c9c2411ceae5fd526f3b4391b0ef4fecfaa5c2855fa8e508bbbf3caf9732d7a5392b25eb8a1842a401f3f5392ef9b7e04ac263773c2749ac4fcbecf30bf9f35aeff2ecd34bb5c8c450fc9d7d7a03925f0c45c43f92b81543c1e3621c83f4a6c14e7901491531144bcfc1df7fbe412652a66ef9f332dac1434a55165c5f376e915028e18b727f2edc9f33f7e7d4fdb944985b881ef0ab760b0c6ae600c8fff6f7c0b779e0db79e01b3c78fb58211ce7ba468a016b5f5f3b8e4e02906a7c7a51af50e1d5c60e6d47e7e18e2a5c7d339c79008ee3ff0dacb2e5dc55483d0974e72dac9b314e4320dc12bc19800a00a0c57a73e33cd09896f5cd8dff1e686c05c0cdcda35073272a6e06300b00f085ca8d20a621104efcdc0c60f97fd5d9ece0cbd9eccbd9eccbd9eccbd9eccbd9eccbd9aca1d197b3d997b3d997b3d997b3d997b3d997b3d93fc9d92c1050f65728f5f84a1ad47ab6209218998238f0324ea3ec12cf7ac8bf7eac8a2cf586e0c22368bd87dcf8ebf1e7dec76228f61fe97fbfadb9ffebcfcc991f1df963b12bf62b9efc71286b5236fed0935104cfe35ec445a9529593177e36fee062f2fb33924da7ff84e3c0a8a25b0c65d395f8bdff0157e210a6769596f1c25f11343d44c300fbe3fcbc5ebad0043c4d820d17f5fa52b3e9eb650fff36ebc456b1aed9e0f1f232cb31d02c0455182710ac31a5c776cc5be54f74daad9e7eab5124ec89c344a0a67053a5ca6599e5160ac1eb9902dcf1fffc67f31bc64c1ca9b7daa326005ea981e27d64a0ccd5fd3b39ab016265060cfb64e7c04ed8652e97ed384d55fe3ced8a6c55e21f1816a4ccd72fb249a1399987023e9a9a8a828ebf91096dab3fb2f0139013ec07bd0af41020c8661aaae6e2a1d8ca3d7718838ab6400c6defb76f6f094c3cb66d06ee2b0b243663d0fd88197ee7d59c6bde4b70f26d332f6a19f5f4549c9ca247edbbb912bdf7717a919d2bb150e53cd34b369ec618c7d705b00507321bc2b797aa2be3c1d3ef8b1e78947581ee3d13881a80153d73d2b183b2dd0d214eef11fc7809b5dddc53241844be12957de6918cc49e91c49a85c41038090798affb13a94f8f73952cb528cac4224ee345fcb31291ca96a5fe1347d713f8b647f3895ebf89321e48fdbec8d524cb2391c4e7cae0d52bf3f5b3b4cc63559cc4a73dd784622a4308a0a904b1b88230e0e0622b2f14469f696b7a5dcac2c65a4ed61d11a9229ea594635b9e2b88ae9315ab9c9e7b1214a461046e73d9aa74fb01463b8e53412e8570842cc4a5fe23879472ab525c1a3032c9958c28e4b14c85ba8a0b7016265e6061a5273249ba18575be5aa55883413a9526658ba0630290587ae040281f0d513ddc385020f42212fe51abdfe6451ac16fa14e402d952f7188cda44eecf5265c7d9a5b8d71007772e975a1da2f7b0267c0b5049f797af81085d0aca1c6569aba420cf9928b3d5648ed9f60c092dcaefe6065096266b08ebad8724134d5c72703546e58887184736209ee962b4523bfd909a10a2d0a0531d2c9b2213f36ca9a6ab24598b62aef9458f65325772494f767487aa57119965be7ea2d9bb3dd51293b67517f5275fd7de7af0d734e0e737da49b37c2193d10e8b5c26f3d9404c5374c8b2704df9471b740ed7565be579fd5549a0271014f58e549ed7408ffc48bc3fa8141efaa1ea1ba9e8b8947909b6e4c2fbc4f6a65a9bff8a158472646de053a0cdb32b355951baadd18e32bf02359fe0842b043c31bf463b208050a46838a0bd90471b782a83804589076ca17f43d877359dea4ab2209e19e74a9e4344f9958d451ec5c512684fc631789e033718de3b5fc81e7aacf4bf2ac1b8c51ae2d3d562b1e651952c4715b8a42e95d0da1261e5e5ee94a959f3fc33dbf496361310a8ba15c8c41c7617332b0ca309f52026b65e0690be1357538ca1ccd6d90aa2c25fc6c51ce40d456d52bac4c0d1c27d1aab1cbcb421167c3a4b309d662a17ca6c618582442016b7eabab2e859f7fa5061cd577f53251b0e0a6ae3eeab770988b64f219a8060ff6ed42cdbe2dfe1bb4a2fe23c4b5146695ad29051a0a5b28c2f94961ee89a2e626405c30c35a03c8a75adf0c4572f4fc3b9d6d81bb75ade881905c0724acccc0b8965d7d12b403c849e0571fbb6fdbb6dff807368d13e39ed74ccc3b2782ada4de06edf6eece9d6506bf7142ff3f52549bd86dadd8ae6dde1da28cc289b2712f73837a1897d04cb0ce23640b8060b8996398bdda50b42546ac0b39a1bee07ad173533a517a72da062d674d15a87a8a6d57af0012f2b69809b110a437bd3904eb856f186e627b573cb69084a4f8bd944ae5fe1ab8ad14ead0689f9bfa076a997299c0551e01b4d7993864c334d6bd91ebb9cf2a88fc32a5f4045a9d51e2dcf2a4a7b557ce179d40043edba68bbf38261d993d14e0a977f5db6398bd10ea238da390d44e8c21ed9766fc19e60912f2cb83e52911966100412758c47354da01352f4e3a236155eb733953e5fa57ee46964153a6d6385fa691b648d2ee21ce69f4026788a4378c300dbe82316a577c08d07967fbd1aeb01933e40b614d0d5532b09a20c54cb0c1f5680cb00bef2a17d764db2a10ddb3067d8eb6bc0116a7768a40106161425d113e1364594cccf3711568bdc60c84336e9e1908808a8bb619156621b5b78343f3c64e2463962da61e4d3bac5224e09a41fde08bf852545581258d6b53aac3dfc6a849b85e90fcbfa21f7f92aa519d15cf0535ccec93036ce223087c9748d961c169df34c5ecab8145767c033b94c8b69962fe0384912e66c0d4a70aeec39fa2d9ace7a12ec2f579db3ae973ec958d6f4e9ad5485d13acef85e49d17c463befdf0302a39dce9966d94869d115a710985a0383ce5544018c62a3e12e149d32c74a00001559e5c570a2a4b37d58b454cf1c84c840cb149a0d8fbf2d94436ed86a5ba258c0b6625d567545ae8a2cb950fa0f3d9d95d81c643318ba539a056f4465d79933acf8e3ec8a207ac834b080494a5764aaeedd54f6a5682dae8097d4cb35a9440a33b11bb1a60d26e62a69ecb0d2eddb46a652233f486e45ad0ab04ae506dfc55c5ac485ea118db1618f5a757ae55ca56c57aa8750032471cedc2e47bd57e7cd0f3dc59359f827db0a54bb63aa3cbf096825d84c6d430c0eb736cc55aa57c1524515a4b48498ab5448bbc2089e96030432eac2e6318d5399d0548dd5245bb818ee04091417ac406a2801fbf617a45f94a5eae377868ba6b8cd5580d00d2c69cb5a97f2e7d8b195180a3bac47954a400aacec11b03245597592d0322c692a18392e656148440fed29ae9aae074fe2e5e4bc02095ece838908a4adb3cfba37d199d6e1b5841c2b8a531aa1a1ac17e0ec20ff649b39e863736e1d93a822ce56050db31e984ba57f5fa995af6a3992b9502d3249d024ab371c541c0fd3e8309fb5435a5caa2e0d651993364b45b67a36cad1c681574c4c95618b214d3c8d168e5f2cd237e50822db3f336ec2a6a9f7b9c47400c6d1c4a5c1a31e0a66bf35cbca641e9ad003721c60974132db293272015119647229d7858854125f40927fdadd293d1ee53713475306870f2bcdcae6a1c5f04c3e366faf69f7372b530f8c8e0ff162a1a258962a5977ad31595303cc4d5a9ee8da7a4d68324de33c38ae8d6bc398b632304bacd2b884d498114749ab32a99aa8a29039a48a5b2d31e1db3257513c416be9a55c9365dd7e8d93b85c333871212ee76b2eb23c239746719e6729d8da890485168a9cc660eacb723b703cb569b0beb255f8e06a20e836d4266c5394951af6af9e3836791b5d92c002fee464a974e81d057d7a175d9a74552cd52496898711e704b0be8331122e7abb6892d7333f9b6b1864d02ee0c2a0e70e79fe4a7b5cfd823b55b3fce86a3c0ee116541f5ce44c028f4d659cac746f65e6d698cd44385e8b44962ae743492fc8f46eafa38c41c622db8c05e439dd20e3ec89a3df174fe1106d323f4e6315994b24733da1793f2ec4aac0fb1a37935b5c90b50ba5c2e7f48e557d85774c16432300f881387cd4f7b45affa250376a283e095c0c7fa2e9cff321b4d68ca1df23c5892de9fe06f9bec6ed5a4a5a9242ce5651664b914de9d0e0774106e4477abed6e2c3aab0a666696501692ac2e8362377e3845a116934e8d1ef827b3006f34e24803027cfa75c5e9b4b7cbaa9f5cf215b5f8557ce8d1bcc236d82d2118fb15ffff61cecd0ec30622758a139beb2c806f001f8bc5dd3524961abdd0891d6a7d547f1d8d7013d7815cb4ff5c8b6edbd31a7b4898719be47f289b8e1c8570905475087c3fabd51256e9d49bf61526f3877004d78ba86cd57690a974c419d27dca1bd7ef23ad475494a351f1b0d5efee90f64dff7b05866f1056480d332efe0ebde5dfc3f2376f546c35c93596e89a5ca9689f2124bfc3f1fb25ca551964fa77d55dcdf8d72392d7bf37291fc5ba126bb96f134532c9413806c5a34dbbc059e6907e963aee5cdb8494c3faa96cb7c861e54ec3c7b398f1325da651e88c31da944cd907b0c08f3a976223605153a73306fcdd97b21d763e2e3a75466db7bce0f9ef6cc3a795b5d664d558007aab7811de8427fa9b8aadbc0831cc486e0cc3e05aab300dc97d20b93ea19ed5895a0059846ef0bbd7b6a31adfb9eb8cbac6c2abe976395b4aa6755b3567bd0d2f757f1ce5ea68b821ccdbd1e879c39bcb560b3aa05c7155e55e185ea4b9cdaac5505945dd795d9c1251b46b71ec5dbf02bdd163fbb9aa8256c060c40e713066c2e06aa4f480cb471be5a966d57af2b9a3ae28856c76e85e8a3aad9aa6a506bf618f2b9b26e47334e0f61c381de498954e8d8916797295edbdb2e2f9548943e0ddab9ae00aafb12680530c9b225581980cf659a41b625a7d67a5c6b28632712b7cebaefc1a0c1db21203e9ccdaf412e54383328262a8c5677f9102e0ab3ebb0eb97ebd10cbcb1795d84f9723b93e8a60505cabdf19fd03b999b6b7de0c83248aa0a532473705545fb4fd5c2b5d5e2a21c69e3ec42f5c28bd3ee5776248f826b2b9f35196c4311f269237fa27b37a2dcfa869ef87d9ffa186b2e452316bb99446dad6bb383ad69ce81adc52fc6b20a0cfad19a06c9cf8560d89dd4e0d11519805a64513c5df39d8088a25161b875095051d9372ce0321398de5137cc99ef8daaf1b93d6531bd729b0d996b9576ea6ea4b05d8715cdccfa0efb710e0fe9cca8e9634e8c10ea107c7faa64248310b561600c15d1d6847731b224e74e30837e05fcdeabea484ce7d1f4acdc4a6cbd17d2316f204ed89d3266991b2b3c376b21f8ecf8ae58cabcc0295d2c6519a369a717d6ae1c9519d8a0206f269714de3d7c57cce20bf0c490d5653e873c896526268992a9582d837a055bc506a50dcbd8b98cf33a9fad117e8272622813eacbb2b8c9f65a81ab97730d961bafa611336a2760679225a484cde3084d2936ffa018ab24bbec0575cfea5add4afbdc4a9efad3504d88f88e1df645942934b39263b990a205005bc4330de7b4cd63f0ccf67585c670638dd56b9a941327dbec885b10e7c68da659387cf2c0e3749a553b7103baa58b7f0df2d579b5734afb12457195c63d99cfe46f344a3d0e3d0c506b2ac2bd28e2193d72417ce8443d8dd3b898ab48f0fd4c17946ab1cc7299739b2ec477052fe2a59aa0791282f913df2064f003215323168056d8a90afc9340bb53318479a2cb5ff466d5a7733270eb2d938cff912ac007da7a4587bbac9238c5870ab66ffdfb4536794422aa32ed97b270130f6eee9e7467d76e236e8b27a5ccc82385162f765301e1495424f04490ac2b972e412ccc7df234cb67aaf4b80f1dd3e3d25e3e3158a39d09be398df408d6e1eda9171ebb07c69daf6492d01d6696c733b062f6780a5b74940556752fae0ca00a297a1bb7f95bcd27c0c002450a354adefa066874d78ac30270dd2e3aadb015c3af083c2a5a87386fb56a3ee6b6fd7741bd202eec12041f189a5dad14901e0a64bc8ccbf9c8d8f6031cc5ecf79b85c92651c2af2002fe98bd5fe08a012f1610ce47ef7ec869dde6f2c2de2378b71816d9f04582f14cfa6179a32314b9421eb2a74ef49281f44f3317a53eac1bdff2d837e05b2d979077efd79859b630979efa47d913c7d94289719e5d162a2f5a0daf9608a005e7bcb12673196b16a1abd764cd6e723031d344627c7d8d70d8731d4e1e7025eb58934e3f846ecf78071778dfa53523ad62e06b94e552a5260affb152d6943a8bcbf96adc9b648bfe94de5ff699ef563f2e8a952afa070fee81260d41c32355ca38313eed3f2c7f9d33f70f4bfb906f63c3d18e89d76b29744a02a066c15fae8af93b7c3db56e27d9a4f04e554a7fe6b9abf0c263a0b797e264efd41d72dd56bbaf99df8324104e0f9ea8bcc8266288edf74f435bf541637bb8194ad60c024b008655e4b45439ab70b7d605dce3b9f7629825181a7bdead2c554ba14a4b21acc8496415471aa37b74747d6d5e890ae12986cce645c55a2895aaaee9d5601a452d886ae089a1ef124f4f7971568945daf8c6055f2c4878a8645fb0b8476df8bcc882c24ce4381d629c6493f30e9cda0ab182471489c4735a51ea5580ef03b8e9ce024aec0df2e55ce1e57cae5029142a9d24192e768e542f388f62284e6a5c3adad1e31ded100b185e60f4b15ed57c1d740178e711eb08b8002f25423ed0e76a5d54df9d737f1bcd2854e7c41920ecf3f373b5d64c5f6924a00932e8b95ad7529b4169ae2e545ea836be227d2bc12404cf9c995128b5221d5ef9416e327bdabe54e25ca925db46e37456d8ab606bbd41076addd2897fd83facae52bdb44b2b1964e96a07f0c6a7f5b51b1e4cff8be3ce96edbaf9b88954fa7fba3febc876aed68f6a8560131b32276bf33feb45755506ad79b07e3221c16b025c8589b0ec29a2496f74a9f0d25b9fdc99071f53a3c0fb0070612fb4b2e93440629a38a2346c5c1c505264fe3e066f36cdcbabcb3849e87895a56b78698bb7c87453c32ff7387d6c229d30691afc77e919106c71e344798ee9b58ffed3f997465b35f5aa1b65c5ece5b70bf9c3f935d0e1d522d174a74bceb3a61e9d8a2aef121a7b1b27aa09f0adb878255f59040cf7d7d83f1643b1bb5fb1cda7951ccdd565c596d69d3bb1f85654bb095d4b72476053bf2be2aa07706d59b9093a7d14acd8b8c49a9799f04d49b52b0d0f81b0bdae917b9b7bfdf82870b39db2c3b057ff233bb2bc256f16c7652858d38cd6005b58d5eb180d74c02ed0bd15e56f2ab46d0e096875b9f14bf826df7bbaf6b134b39c85f73de681760501d223bc5712bfd85394f1e11b987a3c81c8a0a238b58bf378f94e2d96906a843117a5b7531702531ab3af44fe3d63e7f8fc9be99b6fa5bd8ee9021a3dbde8479ddda038c8e558d260ac82c2e6533914371dc8ab3aab515a3cddb4fa60e15613e999e201af97623c6ad4adf6af20bd928d5580aea365bcd07b5d1ea9dcbde09d64296e838517874fa3a1bbe84de6323f2cdb7be6ed53e035021eeff081d4eddb8224e61d685e24f144b5f73b75e9a45b9da464220b8b864df9ab6df2a06cc93857ff6c577935245c40ffcfb2f2191d932af374b2775aabfad61c176c3ba6de579f9cd8fa37ddb1e20d15abcf8dc5758338aab417d29a4a4d98d6eafd29234afd6ed51af42aae58965c01146d9b10767ed0143afe9a42e6c59c4689d26755b006cce6656547f64f5af58b077eeb1e40a866144db2494d0d0d74ec5d7411b154c46eb42f6541088bf1da1ca9f0f4d4ad8001d7717b6bc32ab2db6006d9da4b39986d2c81db5c86859ec8dcba850309cda2152e717d4590462276c5fe23118bef40caefeec635454835ac284febd878fcae4d1956c0b39ff1a181d3617d162d8f9b336bb62a8b3852e6ad9fc60da703e7074c6b383315487109e6cb820cdeec24efbdea516919e78a0513c96a0c61dec7d8590fbd67a1b531da51a9772716f00ef3c8f1edd06dc80187b9b92ce04e4c0c3d91adf0b03cda31861dbf4bdbf639190a1a5a3bb30eb6afee20b677dc31085a50ab755ac5b7159b5340aff569e657ef0a77d677ff63be2ff59edc30b6ec8b35d8a80cbb4e0d25fe21636fc6e9d366e477a6534d41a8fafb862d5c2863b3dc58b5aaacbc8516812e776ccb241f3c8af5ec3ff3fadd85e496abbdaa86855725bc2cdd7e2635725468542368e1511462e934b84e7175c20374fb369ed24980038cd10ec4a1755fcdf51021ce013012e81deff66df8e7dba15fa961607a7f9fa5ee0d114a359c85182f0af32c3157da1f560bf05e2b33eec8c26c9e7657817b651b1e0d361626dc2b84f40e1515e5c96e865e9bc7fee0d81e347006eaaae264037f88aac6e4bb6b5767a8a2f36d3cf3f8e7bd86197854533e1a5d521a145d13088abc333a15a5d7140ffc34f9ac4557986b858aa6bb9d032429e71b15f33034c6def542cee5559a1349437d6e72df0cde28dbc38291341bdc1fab131ef0bfe2f8919eb21d72e6ca04166d7d3e7cc8a6c267780599541270fdcc98023fb483b2e11f23cef97dd8d02ea0ba38f657415551ee56aece3ad597dfb5ebaf90716d839f58d37e497ae3688711f93d7ca21bac7f3881d961a18691f8a403c8a7c80b0399ce1e0d4b6dabc909fb8623e0e67b8eb90bac895b12ad68f01685008c6365eefde946c9ec690650bf6fa3389a33529eab6299a5113c3095e23cd583f3b73c6e8fabaa6d7192a8994ca8852c4bb558326f316bc2e09e4edc7cc1bf338bb773b2ea0a727aaa597e9c458fbfeb22d3efa076efd1e53b96813ee03db90ad4e5c0fc6127a2b2c57a82b5e9210fb8a924f15823a692b5719ad1ea45228b52804913cf9de6bdb889c2e9019193491ca9b404f566298b42c425bef9f41c7c7a15d1bbc19d684bd13bb24176deaa99cca34415e03372395774af1917a298e4f1121f58bbd71c8590e249b65864e95f8f29ddd4283557d569567aaf284d1c1dba5b63b49848cd299344928e673cfb46c6f3be1aaac7c40a40bfa3629269551fa28ca23b588138234695b8b1140f43c922d64b6a2dcec671ca5d4ab4104b27c92a52bb06651c3ccbb6eebf367d344a3fb6ad1dea1388d585e8777e9eae510a0fdfc9d7ab367208e2b89413d513aff5ec5cc21b7f1e7916f287031413c7f5193e59b894eb2e7321830807e6823a49ac437a9989388dcb5826f1cf0ae034a0621d30e902141f272305a671a23995aef668222a81711e57339469c5184d1136706ba0dba1e1244877460158dde271e90568959ab0848404b964195f257c710a69f8a1a1aea64c9c5f7cb642402478ad62a002cfadeb32cbcfc52a856553645a5c00c4422ce2c2c6e88c7ae2af2b1b3c2a4e29f10d859efa50f8cb3f5f61b4030f275a29aa98c8a5418a5510e8a225c52cc9c63211cf794c1372be429bd9244b272abe90632dad24c6fcd0484d8143d3520ff1584d56795caec59b2c892720d5c671545027cf6dc02d8ab64c16d3c2e005b11be1965d1459b2b2efc832318daf90b476bcde209679364ed4c2f8a0f6fb629dad5a17ca2726443c15e3551a2518d37a9ae513e501926924e47299c42ac29360bf2f9e1cbfa1cae3386283d0757537b902bed0cb81ce901a5b7af103ac9dd91112a245572c1305698ac0eb0c315ba5f1df578ae27448e01908e7f1435cfe653516e0b40682dc3e4e1fede426f46088e3473b9d36318b49cff75b66a863c92c309dc0fb2c3d8cde2472eda70dccd25d19ed2e13b96e05ea1e88a1780f811bb3e55b6cf414f344b56d1dafd9f7101b24d80d860d0974e5da6ceeced5f39a3f5f25c9f124572aad75395d25c96e0165ad86369bbb74f5bce62f57a5aa75b65895aa55abb619beaee1350952ae4eb29b895523d33be23b0fb2e6be56adda66c8ef88636d93ff8c2395bdc86454037fa14b76934c46ad708bcd3dd96a1d3ffd5c430b97a3c4a50c812406e30f3db750c463f83e300a9fc97ba6bf8ec81dc74f3e867b31641df90bd853f3a2ad8f2759aad2d2ef91609aa531602ba9471df5c6711ab1f65dd3c4b1f7a0b22a6e6cead87450e1ee1b9b6a0e1c5866bdb1ba456f3bc434af0c2c5bdd58dd4ef8c0e792a686de7c19770faa2b86a189fb5db306319e31d3de56178e49c09b003d244aadf7cbe82fb2d0b5d85b49b20e67cba25781c1dd280b55c20be0b63db530589e3f0ab9597a36fd4a1ff80486f7f2b191a406a76066dcdf818a6e15207e7a6f966b95b3644414960fb8450ca91c427327729dc4457954aa459b07d4e673303754036789f0e4b078908c74b4a9ab37b9cab324f931c744372d837dcbce29a1a4ff398cda1b41b4f9683a37cf86a3cf1fc7d94ebcd4b81b7ef7f4b68bbb6e98ad9f69f15d837213a33ebb8acb86461b08e45afc7104d2a2b481345a4908138535ba89123fa68b6ae50d14d080ffa8e51a14793872cdfd6f952c328c50dd92ab322b4a99972d9f1e75d136df20d8aac26c5566108c2440496bfe092c7cc2314b2217e5a4355e4da72a8fd3594b5c5f8b508da5d4e7eb56273ca301b9da3ca75b0bfa4dd4d8c4067fac8cd0fbbdc708d6852187b422fe44c0d747a6da322b627aa441ac431f9cd7e50a03b0da1ae6c323d6d5137af1cdbd0b3d92331cf9e660f0e995f35ca96335015bebeddb0eafefc4ddf08cbf632d6c44a7303ccf03cec3d67eff18444aa56194f6f71a70b20d021839609f8dcf3ccecb7503959a50e26d4274e2203f1bb14b9596ebe7f1857aa3f2893eaf73e4fa8e87be12fb7b7be23b71f07503b65540018c6b7d7d2ed6d3785aaeb744f8eb06f23e6730eab87a3d7c2e9a052c9b4fa1ee8306ea1ed720d5510ef4f6b988a771aa3e09ef6f1af07e55055447bbded7a761ed2a6cb143429703fbd7d6db8216827fdcb6608f74dede101c951bd32f789fd1a94bf02ab8e6a320abfb478d76a6ca27ab3c8f55f43a451c2915dd31dc25746d385eb6439a08b4afd304ed297e9b5e86dfafaffd57ab3c4bd184f7c99fbb7805ce2ddbefd272b141aeed47ac34eff039ac66aa5749f0bbaaa1605b5257a5c25d83c0a28ddfa75829f399f5e4f76ec4e1e23b94b99627ae85e09b98b395a7ad8d9b1f2462ed8ad34b353f6b25172bba9161cbae06e43bede3184eced5fa540ca903f8557b6933aaa5d2c5b636e72fe758502df3d7cbb268674b9b681633ac2ed5a47caba5a35e4f4b88166b3f59d5ecbd2ef9d3645594d9420fa53095d9275bd9af1668cac34989c7e2978f6250af66c141ae5dea4eff6d0b424775ac562fb18de2859c5970f0c31515faa041b65a2cb75f58257df28a5c0df8698b2973f0df9485e1bed84a4b3261982ae637d7730fa30b95977181afd96fddaa0fc969d6767679aa34cd8caeef8ad54257eee16b5257a7ba5319b4426dd9103cecd9a94ccf55a829cda7fea7da23e7c6dbb73de6bca54f66713a57795c566d30af1ddbe6c4c9ac69600366c40d82f2686f97e70492860f446b9665b378215b764265b4504521676a205a8791f8ffffdfff4f5c5d152251d392555a9599ee4446853ee8478d0fccf85b4bc7924000bb6cc22430876fe018d7b61138b2f21690177835a281429b2a445848a18666b9c1bf8fea42cb88f6b66bd3e50264c3e6efc9b5df7f0f9aa9126cceafe4423dcf113dff6a64a6ca5dd0587653b950bbd33c5bec6a9da67503944dd725a1faffd87b13e773d07e9fab2937d91a0bbe1e4faea63dfbc1937c10491ccaf157a590e418ab00f35b79def9be6e44eeb85798d46d4ff14b82de06bb33e74cb2eb427207c6961d2b6fa169f12e3bb2943072d7a6103b576b769b849a6d2790a34e17f82145cc648ba168ef751b18c6ac820e02f0028c58083c40480de3135bed14a2b67a989ee8ff9e7a6e4738fa3a9c9e34b7cfcd54a7bb85060078816c829ed691e965e9eb54fd659546b98ae8c8b5191621e4b148530b67d4de3804666f6e004412b21904186c1b1a2f6f22e1a6212cd985c84620eeacd400899c189a21bc436f1e9fcdeb80429cee2f515a63596ad66113879ed2d2dcb00f3881f4c7d8c3df97d9619ecb755bda945b2461e1b3561a5df16321f35c0ca8486f09f0dd8c8612d0863616aebfd7cab9e0d030c66a16a7c54f71397fad195997d2b3e0bdae38c077c5ad2c6d31dd90376914410cd0811333782663d52c499cf0615e9c904ee6852a3187846b78b277ea3b83965eb17dd7fca8122da0d5127738d05e99bdc82e55fe4416aadd11770054ef4316a7ed56ab13503ae891086aca41c5a246f03f86b5e2b4286592a05a83c681fa266b5e00d316cb830c0891c189fc89c98544b5fcafb632ba3f1ee71353cf7eb055d0410a51398a4c3dffabdd183f5c72cc593470bab2c7e002ed16764353e337eac51178c9d6e057aa1580b4c537542533d6167ff450d520365732ea414cb3e8c93c4ea2b60f63a3d4a94dd51f6582cad522bb507ffd09fb3ed288a41345aaca51548d00ed8e886c463e5cd2a7dbb76bdf2c247e81e25dd05b018ea8b46f32488631fe5de9d5ff4aa82289d372378a0bf07e4db3dda5cce5623757643efaaa6f6470a14a831de9cf5ec0aa40f127ae4b43525fb3656b073f3c01cfc982e77d78ffd79fdebf7971f85fcfdebe7ff2fad5f3a31f8e2191ece672175c0d243a991b11baf5a6a0ce4e0c2ea76cbafd264cb5f659c5cc71c18c9ad8247033dad06b802b2d58cb570da23a3031bffb4930cd5e7bfbb3feedccb59841055031163080c60c120367c800fe98c6891a8816fe70a7f66a601a3a7a573f3baf348d88fd84d7d4958fc7e7f172a941785f9fd8277eec73c59bc32ff37c36bc22743c631fd0abc1efd15ce77b5f0308d786f524c90a55692523bf0ebc88a98cf08d5c55dad5bf302f35f6b576f4f04af9cdb05f60af602bf5d91da85f52bd6bf44af9dd9f5750bf67f38a6bd7597e9f7185dedf836b44e0135e58b10273e6b06cbb2ad4cb5552c6cb44f12db1a094ddb882ebeb97af94dfdf84a3b5d977eb25448db2761bfd71b7d45f5ba1aa9b8c33b6d23fc42283374b6e447531c346617d2db354bd9eb64f9c0412adfdc13efc737ff04deb1415f749228b021f668580141065156b3a5b5d438718f7cf09ba1b00d60ddde1269ada2817176078bd012c97aba1aae32c4b7c31bbb196b39adfd83313401bc7c1dc8b6faa6664e58d15adc0bfb1a6db046eaaeaa4f70d356b5bc84df55172df54abb2f9dc50dd179d375426b7e9cd950242f58616814de48616dbf1cb56dc423be48db5b6e2a8d07e734313be15de54d5df1e6faccd37df9b2ad7f7d71b5a18c5e5866adcb97d734db3bb6e55cdecb81b2b1b157a9308eac5056d43116b83bbf3a7b6c31dbf7157d1dfda271ba461b0a9cc73b9a66da7598b6812c64d8a85ad1ed42af4d6b92ae3a4f02f70e013d302c6715a79fd8211e98bbe2e61150fafe2ac026b92e5aa0fdf593d765a6255cdd7169e5bbf1aa5e22bf1849e8a9251289d40342c00a8cba1ce9fe13c2b7e4125e9a3014fc73c4c1d8004c1177936afac018950cc2b1700fe511cc2ebd460af7d7c845e7943632d105effc1b3312490d5d02a75ed51d5763b04eab7a132f3a6d0645345c9920cc17bc16cb916d2af8aef63cd3881bbf4f4f6f0c2b16d8abaa2d24508b419c0b62059062496d981ac1ea314139ee104976c96ece0e12534bd5a5611121dbc3588cfc2742f10e36757cbac50c493a0c841480148bf813f49f733c340c2191e867f01d0733929b31c9e94baa0ce9c370ad79a5e3673c724f86289e23185f137f28781c45ca87ce686d41515006092e3e37ca20b13719bfe78979dab1429869851b9bf38e15b1f8b60d9f1ba006243032867ade262431fa6b0e54d8e4c927eb1cc958c1ca2324938fd6492b4979468dc279b4964eed5b0f66c0486c0c3c20bcb60009587dd43e4304c8f010ca3256736751c0af9d945b14e4b7925e2149217a190d67dfbe0983846b03bdd9dfe57b740e83c5598e40d5c455c047648ee8c3ba093727255ceb35c08f15ce5595188c371b63a9fcb28fea0e6e25b9380620a85bd2c9f7d87cd484517e2e5d13b125e14bee37d5c601f623257937348a792e5e2584e651e8baf771f98a0b95d315613ad8a89b86cc13bf1224e6700a7e6e7c562fff6c45b3078e2137b50995698e8be466f2f267efd74780b235ac163068334d6bcbe1671719c6497958fb76ec171d254eed4fdc17c38bc476ccb06c29e48554a7a9684feeb28739e0d55850e8df87b9ee5e255162971b1d7dbdf33046fa25cafb2f1d487cec7c150d69cfe3cc964f9e259005356112e9b025538f2ee4a6dafd3f8babb799fef55b6fa463da45757458ef4596aa2966596bf94a99c81319f35a99773b583e2adbec5cdb3a27df8854125a4592308ea21bec8de5611a92a17a82704f70f0a3c6389ec57721ec5b1a34ae13cb9488718c0a8ea846b775cc8ee65968299b0a122b3c71892d97cadd2f4d348a689230ffd4919d226449fb83030441bb6450a28e40dbfc368d7a02d7139439fda134ecffe57785752bf2319ec69d8c26d08900b1866a6a5aee46299a8fe2a4f5a275d1ac3694748914831559a08876f8e46bed3198d14161a1e0b5afc7601ef27b826609d58567932608eb936bd4e977ddc3ff5ee7b83009d6a41a03170d040b466aa6c41ebae4f6233b6ce2307d4c571f37efb77d1b091fe25cbcec56a293c665cc45194a84b992be6e30de99d86e2a4b224bbcee27feaee8b70e31743ab0ee4aac8920bd5e6b8d656816189ba87c62a2de6f1b4a43e19b7eb35687fb8b9d2c8f6a811afd19bae92699c242aeaf221f77285117d984347183f5c74750497ab62fe964ab7440f92c37c1e6efa0f4a1b81b02ad9221cfde9af5e395729d545a274bac2fb197245a0c656a97d63527826b12c14ea25b437aac84a03e4b502173df2b621d7490bb325b5bac8cf5dd19a6b6daf2b5a1904462e5aa75d16b60f9b611e9057d953594a4aed59150dba09383616462654a4cd096510f6b49a559ed8d5e3e42f0bb34ee2882f505ab57087d9754e6c669952661e4f2cacf284a441c7bd6c8079ac526799154094e50affd1ebac99223fc5e5fcf7a149244bf90751c63db094a51cc07f1b8855534f0f8ddebea509c5575c9ab55d8c5619ffacfea264a4f25772a1da73f8b3e8bac288b931faf368eb3ae9906713551408af4d49be53ee0669d22d80bfb3df8756f420954299fdb85c5a4fa261ada25f8179581242277ef553939ec43edfa05466b6baae5473b4fcd8487172a481b4c4fe69d315781adc5bdc1404a494852396341b8618cb0253131a990b819f5745afa6b198e847902f1de01db268ec73599aef8509280512b11106205207a13f6f809091de64d17d8731d270bf606a5033df15aa2c13d5266cbbd467d7426146ab0b99c4912cd531d004a84d3dd186ef5778e4728823154da06305277ec8fff9bf9e660b19a76f8d5e6854a35b163435d5e7b84affd7d7158cda95461d26455011b0830af862e0c0db8c6dda2d733c98cad8c6ae248426faa4d642d73ade69b74a952ea5b5b79fadc1ce62e39c85026c6ef8f6c76544e64f6476d27b791261d3a1820a1308bd86f9d81847780c04a03e5203cd3cf85799891574d7db4e4df7aba112fb519c680c4e1958a0595b6fe0a4287745ebd993d7af5e1d7efffaedbb674f5b9d707f2744b253e26fd4d79aaae2584feb6bc1d8750b3b6e8b9a5b2bcd2b45a5904e1e59035a752dc591d6f59945e6c22eacea3d316732c3ed1317f2cf558ed0f138f2de886061ee9d5a153d343265240adcf2e43657a8b451a0de7cfa6614d1f8e9adc5b736e0f71fdf1e3d317ed350a7972b48f4d8eefffbbdbdfe2cee8ad69f5bfcebdd43fc3af0be1edcebcfbaa2f527ffe313acdaf5bfee41d53bdec7afbfc7aa27fed7a7f8f5b4d5f18fabdfafe2241252fcf8f605a45d0157c8389d09e0b4c204355569545b4d86f1577902aca5b71393b1437f6babdeacd78504b1837efff2f2b237cbb259a225c5a21314ec27d82932b34360ac082f7800cd19dba0a0eb4ff5ce5b6a2d1995c19b3783b11efb8f6f5fa04286fd997f8f558e3ee5f9d6476490e4d8baaad0ade8b5de4777d82b4c07d11b68c25d2dc318885a1b7df8a8d4a5c6b51029a83ec5c58f6f5f1c2b994fe608c154bfb90b9b5bb71dda4ee0442a91be2746a1f15536435fb61753577ab9e05b58ff292d04551f92059472186453613e879eac399a3785913784407f75bd50bdc636c3a6b8235a27a7ad6af075561563be9f5cc8e434d4993f7a18a25356655ea8ffd48a61db4f28c3317c2a4b5d5c0daaad55ca5e991d1dbff6e6c3c39283c1bd220ce8afc7af5fd1e56c3c5db72f3a7ed46bf703e6d62403063108d37547b4865a2b30a2b1e300d8483ef68f306b950579eadff65df5f510aa2dec08b478b9338493542f4e2375f57ada6e3d6ea1c6bebb2f1e8bd6e39618080d54dc09adb5ea391c57e8e7ee1360e641955e5cceb3428968b54ce2892c552164ae440c893140094cb308a3f54e7ad39e4d9fadbf7e80db8bbe5cc67dfdb9372f17c9bfe9bfded3ebd2f7746c70178208f7a9e9ecf55473644bcee0f88ff726f1cf10fa427f9860ccd85d3465f02f7a69e9dfaa9433f8f76a19e7aad07f4ef36c0156043a38c7d3dd4516810ab65bc4e944d1c7555aff9cc8a2b4b5e1030542d77f2fe4d5ee34cb2f651e4147cb3cbb5aefd690ced554e52ac73fcb7cbd0b91f8f5cf55a1f25d395369d93a65aae31bbdb8cc094bc46999b90b26bb899d9d9da1b9566a8dfd271575c5c10371b89a8983bdfd7b62efe1e0eb87837bdf881f5ebe434b3811eadd7aa90618af1647d2ff50405c77a892aa09e6853b576ab92b93f802afd8dfe5322da62adf7da6174a9cce0662325fa5e7b4a11132de9e784c5b9b198761af54a98862de8e150a92eaae68b443d3042b052871830a08ed08883971f337050876c83dcd4d5a613a40b96b7d2f149307ca99c2001e5f9bc1337faf582671d96e8d4669ab5395a9793b895966bd18deb7a7ca098941cb882394f4d84599c70b68d92b56e3a2ccdb7b90ecb562cc355b5dd2dc2e1677c47ec77f9059dfd870a418e5e1f6edfa22b6e842d3ef8662ef133638181758d755b93bc9b2f358f9fb23ef7de823f3d82b1c8893d38e56e427b26cc33ed7d9b01dfa609ba1de117aed8a3b40c8817069162bb12d3ce709cb1bbf4693af71bad9228f4b9946328fbecfb3cb42e5cfd28b76473cd642dd9488311609955e14622e2f94986aad842557d56aefe19b235ca1189ebd84537ebfcf22f4db031d68dc71615a1672a14496c7b33815b230d12f6de2881e3b8714216cedaa5c14b13e0df5dbfa8feb3287d8dd9d7edcd3c8b4537911cf6499e53d2d3c0f6736301d50304fb4ec8cd3d92b3c8f45d904ee55aaefb764cb35429c7f7cfbe2116ac95a8a59218ce78a3213515c4cb20b95e33dba7d600aa968a94555f099630541e0c22e24ede073bff24a9c2c21a4e37baf1ce7b9d29b25eefb6eb16aaab1d5d2ef8ba36730a385906599c7e355a9305fe1658c8e3ad6e2c7b295330b2ca368af50e5a101d26e690c5a5d40c4ad2b87166fa8bf3a2ba1d581b684ad475199db255e33a0b1edc73cf911160f5c894ce544895d736cd31a56b15493dee55c9697335050fe6d9527b074460d599c75b783d018dc73a83c2bb34996d46a9902f1b8a9c49d6a077fea7745abd511f61502749e1565bdf3ac706fb10a3800d5eae0e77ac7f8dd75fbdfa3d1e360c7b2a803d51feb20f55706f0df9ac69182077e602c29cf93a225509d9059ce5e9fc9721e84650a2a29885bfd566002a8ae46b3af057843f9a81ed1c40a09b4d398357919a75176d9b342ce2d052b477c3f211006c55ce6c4b915a90939442b927383842149ac6132418342db9731e32c4b944c3f8a77f90a3069c6a32b329bee839ebe38c1440b85b9b1e8f3b85ca8d7d0b6ed30ea544ed6a869b90d0b4e7ebcfa634e585e3060e37c1450b8dc92d3336f67ca7dbe7ddbd4d49c57a9a53fb93ba4b6ee0eece06e9bf2b7cef6a51a43220eb8bdc9959c94bba92ce30bd511899c9c9bddd3f803b17d2fcdd2e046fdcb3694ad5db1d9c87c88774dadd0c318979914cb2c594fe32481abd8a367dfeeef8949b6ca4b55acede96d1697f3d5b837c916fd485ec4d1642e17639517fdef65a1eedfeb7d28ec05ce5c822b4aebf0fb274f9f3dffe12f477ffddb8b97af5ebff98fb7c7ef7efccf9ffed77ffd6f399e446a3a9bc71fce93459a2dff9e17e5eae2f26afdf3defec1dd7b5fdf7ff0f09b3bfd61cbb74e3e6b73df183a30ea8e9057c02555c669811ec5709500c8c8893e4d993745cfbcacf62ec1945e95cf3c67375010beae7c4e311c40eb083b7862e0e3bd948fb0266e3b4e972bfe4eb928733114c4de58e8348d55b95c951abc09630001d9304d8b8dc4823973e0226092adf48666da632a6918f4133060c7d195188abdae58c8a518e2d43ca2042b7a5543b23c8d11a8e322ca94b9d1898b1232b9f7fbe86a90ced09177219798d4121e1c979918ed0c473bac26781b4e45a4370b916662aae91367a94c4414cf6254888a3237f258a378add5ffeb6bd146345bc316a2feef621ff7f6d1ce43b16b3e89afc4c3d18e7d4545f2494b8074a2c44157dceb8afb5df110c43252f4ce50236ebabc7f57dca6f4cddf7d272a903bdcc102c82886165ffd9370be331477455fdcf34f42b6cd7762efeaf9732f93984d68660f5a56d3416486f4efb7df8a87e2daf61fb0e5e0b00c4bd7b47ecd78ff0ca7087376705a361cd6b6d2f47d8deb328fbd049df01beebabb826ec2c9a0d30555a02b22b888ec8a424d56395778d15d5fe3c12db982bea1051056b96ffaabde7eac143b04fb66cd572b2d1adb84906f95e4bd181b14f4a23903eca1a659afcc7e78f9ce58403b37597ba9a21efc861e75317407f5b68489a4dc00152b005caadb04196783122aae543348acd80a02aab0135cab415334b33e12b6d947ebe728792e40fdb39dfa01a4e0644939ce2b1df4e07b5bcfd05b357b76b56cb7daff7dfd68341a8d8aaf3a6d983d6298ceb07df2df8f4ebfeab4d88c112b23f4c72252357e82a293bba75ab960f97d1dfa8bec42790380a0149521c0bec85746abd5059eeaa5d965bb2376c5c3fbf7f6f4ff3a9e43c6367acdefadd66c5ce71df1cba6996424f0c3df6c43c38e09d3dba0257dc6356ac88f96692e738a3665c40fbbab3c8c22eb8a6c61981bcaa29493f30d8e2bd6f30f2f0bade74946d9d4c5593957e919fab78a33f29139dbe8c2b20118560882f31f5da138fc280e5371f4d426f643f27be34c24ea32e65eb34e47a688ad0aef2dceaa506de6fa68dd1d03744709432c63db0cdc9f966310c6c0fe55b7daf980591e5a7c93e07c9460b0a098baf14ef36cb161660ddd629c83a3a794a55216d43bdeb69cad88eadb500dfd92b813045c9dc5114b7be18de9248e4efd28debc84a723ffe80ff908d2a32a01363199242675635c942a475bbdf56fb543c7ec88e8761c8359bf8c27ab44e6c95acff074856794e23c462d1481a76b68ec791f03a916728d96ccb19a640b25ce34b26710225ab73e430edee40c364d6bfcaf5b03164a4ee6bcd36de780acfd7c16ac27701af405f4e85e77e4a4f075edb9e70838472fc05592f034ca697bde0978e305d5befa287e85748484c6704994e58ba7b2947e6daf883509be3c0b3d3ddbf83025f82c252e0ec790115219b30dc7dd3c25f36ab1d6936c318e53fdb13e6ed396d5f15c16dfe9b340a1a526a27fa6270c879460147f7d781a2b651f33a8a8177a4002878aa3e913d6f4ad69e0bf7f40b724f0ed9ab8277e957709bca847b01d3c1e02abf92d88ddad54ae172726e92cad6719a4cc94915c962aaf2fbcacf1dd08ace7d838cbc026625ed8b04728cca045fb117ace187f506c6d05fd563e3495a70a3e59b7990038c11ed351682c0b60372ce32e633001a6f8f66d71cbe33c53619533770ef70d635a1a66ab40ebb28ac6b5a5df17cfd242ebe2e6fa15cefca3943f2be999b261f50346df8284b666e15a0640ef6b0625c2d5ee2df1362beb56a0dbdfb605d11449f93c9165a952c15c050208d79dca4d616f02a98f8d8fb95f78e2bd75390d57c2af48caaddf2604ddf2c1414163e339e84f122553bc96c6f75ebe73bef5b1aea04e38f3d727f0a41a579b9b44f3e1fada4a4bf38deb36f4c9b031befef012054239f85f435add76c54df2139607e722f277746ce4dea98559c92b658eb91bd889bb0ddb017bfe951fd97cb0b17e40ff87760e19c1bc0df796d98d4c61d5faf31b10027b42f85a48e05fbd1ae1e9a8c4cb9a6857afd4ad35dd9a92fc86dba3ad7bc2050a27518845befd6cd5c26eaa96721070400f168f26462ed10f44b8e1c9e2b5b93981f6ef0c20dc37eca88d3f0a3505473be7c7a25b99bf2b7b143e527018f820aeb9de598843a1f7ce84699f598e51764536b51f8bcabef7d547e3284d89d519d6e661cccd9b9ecf24c814ee454a5a6ced32ea8bc769cad557db89d37bf1058fc624f57bf5ded4114fe90a0dac63f51373b956781e0acec59e7c1424edb437ba00fb57681b6fd0367614ba44bbc95bc95708dc757fbf2f0e0dfc4996167104272cd395c6252e2980323e3318ed7c5b4ce66aa1be1bf4fba31dcd58a31df8ab6d2ec576739580794743063f7eddcfdbe74fc4dd6f1ede17e8975a080483f62fa9555a6b88cfa6eef6a5c0de21bf3d20204582d19265aa15b924c92ef178ddef839376ba267d06d5e16c4af58b2edd2274c53259e9ffaa3ccea2ae1ec17cbd9cabb4c718a4ffdfed13b9fbf3a9fecf68148d467746a3ddd1a877fad5a0f37834ea8f467de33642aad1265ec2a7e2051968c89d1cb1343aae37ddf5d7e386998c96677dca7f7cfb2258d1cc81a9cce76483a338a98291a976035f71cdd1aa8cac6bdf52c7717a6c86e2aefa47a3fe1de3b57087aed15913cfc9a07fc7ba05109c8d3b412806093bff59239a3956c139e60c569d0dbf01e788894ced29024c51289cbd135886413b962a37ee49663221c24c83bd405da9c9aa346f6fcc0f43e9e0198ee1da362db835065dc22dac5be154bdee7ae9dd7a699e3bd9468b5551c22303878aef8bacc94bb7eb6fec7b5d97b48cde016bf054dce6cf12f58767d4977979567dabf5c642a10f5535b5a49834ba4f7cff62203a4645f58aae7e3de50b5af72a5a19889327d573b54c7225a375e57ced5b90ab17741c3c11e2898fcca3d0687db4bc38ffbf952d80b10fb331550fefdede5e3bd8576c7f152a226bb19290b9ef2dc9a1ea4ab377f240337f616ad92ffd27925dbd4da76063433bec57440bbce5f5da3751c1a63873b78cf085fb1022d01aefb979c5f5e8cca4861727eef06da4d124a09afcc2d86680ff7479b301fd6b6f1ec2163886cb868de9789d967252c61351ac663207a5334e2fb273bd2d31026b7aababa5c4e74f321510980eb5649b38cecab927784ad65d4ef41e7599ad9208d4e00c3e9e19a9c7d84e2e97c99a1954c5d9d9d9079495cc6ad9beea8a7557fc4c572f5fd1313587a8e027fb5d71d01577e118ab9b21d0363ebad4953a8f2c6cdbd14f5aa938c3b04f67145a079f241a619fabddcb3c2e4b9586d1c3b676c6398e9db6452ad4777d173039082b5bb4adb0c59e4ce854522d567d802e73b964493a5cd8316a56a15dce1ec363a82a33d5cb751ecfe6a5d0fcfd5c4ed438cbcebbe2289df4806be2b210723a8d93586b403ddf5e4feb0d1c66e2c2c48d8d20a407aadb2f8fde99cf629aad3440bddcf108f4e2e8c9b357c7cf30091e7e17799695228a7385e1d9287fbde9a9cc157bfa4ac4a4b85df8cae40984ec3d4a2154f0f17a31ce12bc6d69f5fa8d355a9e85568933d471df657f3d7efdaadd39632641527e4b2a421a21ac7647d8f500a028924557cbd734f39ef35fc4e0463d576b7343c18362b8e7684ed221a7d85843158c0855bdebf9990176537555ee2671aac434c92e356efd34dbbd54f21c03438f52d06af010cce4e434e5a922cd05d777621f92d7b1a034a097f094875ee14030f07c9ba22162d499862a7a4c7022dc508b886faa99edac71ae9d140f813b696c77ea10f988d1b1fe95d6501377c55afd8e650ac6ef08539a0b5f0b03f7333c013f3175c4507c8f9f5c3be3fc2ae2a294e97895d0db107c6c61bc48c19c560517d07551cff554b07fc16921d16667c188b25eff4301f695be2dd2328caa1b91802bec9d9cd59bd5aab4bc6354ae96b92a545ada131161096e8b5a0ff82197cbf97fbcc0d7f867a95c28d4eace8c6ff2ebe9b450e519bc10c4e03c32e969e9ba864fec4e17534fc2e3428056949a2ba803eb9153b8acb440d5e291f0c20f90d9c5340344091cbcdd9525bc9612f7f634208933a3f18ec4f32cebcd74bbbf275d119762015c33f69004334789088e9518edb046a31d18ba1939d90ccf7e810e07e2de5e574cb264b54807624f7c44250991414f4e5da491f2490764dadf05ff4c7661452b55afbae39aba8b5fdae32c5a6380986e0528f78ad0b5c450e87fdc918fbc5ce19feb6bd132f4a41348cbd5ac603baca27f7d6d562d9261dfa8c1448a7da3900871ab1d80d8030a7d27f63ae23193437b5dd182923ac1e2c2d10b486b0ebf982dfd4281bde1228b23b1b7a15f9a9060cf8d93f5897d7fa4f8bb24e06492407c82642dce4e70bfb13be43b393b85a3e119169ce1ab5b1b384b33456d39b791133aff6aba5e839ee6c6cd953570492e309b9a5e9485b2d6d97c9596f10251234ad23993884cd18435594a7d2ea57667f5c93903cb6b2953143771218c2a0456510bd0c471ec89a3a91867e55cd8ad116774a1caaea557bd1ff3046b5deb628606550a3484470e03470f2e818832301e16bab455605828779a21f79b1a516be79d271ad6b7325d7ff791ab5142522fc56a32d7a8e1e72ef9bc7705fa35893149e672bd8c27c0fa590a56e375b6ca457649c1938dc56235c3e83808fb5cad2fb33c7a24cef0f7a1f8e5e319da0bd87ed0bb41afa9334e5d0b6636383a48d423a8d6a7c9ea2ae1ec2e41adb31b80c342a0cd5439f05226b6034f665128f3d0b47a766b9773ffb2aa12374891f2a2d786dd9461d347a9d8ab0b13790ee67dda51d13cf5e3bbe7bb0fdd4d86c840d29b384c7699894996e3cd5e04f193037bbb74b05fb847af9c41f9ec9a2a36933e6e21560dd65bbfeee1ad9aa9aba5188afe68948f46e9f5c968948e46f9697ff688d71343f04a34feef80d1d002157758297823fb0122dbc635da75d953576a42d88116d1e9e8b50015f179b7f8b68a346a01e28ec145843111bba2cde1dc41a8277ba7264665e04d84a766e8ff56340dfcd7da3ffec5189f94fe5f38eb888f4ee54f643a5bc999eadbf8143c9e441ee33a213def99091a2685c96b61cf02713a331a315b55189a28a63811729ce9f38109c6d52adcecd2088bca12ac2e80a5c68845e6e2411974918acc20ad1bb511d618364b9fe00bef89e1fb183c52b3fc153c67a66c40784cb56fe5a86a14474754db4422844bda470170a682357ed8572165be669e97592eda5e4331140c57a3f099d2d376a72bde17a55a3e12b7da9b906f432d48e245957aa9ba2adb9d4e2fca52d57974e3d03b7ed09f1cac681aa006dc33e11d5d15635ad13a7325e64e7576d0d97a1ecfe6895e6128fe0e9d7433607a46cc71d1572b741ff471aed3a944f3f13739310199a5198221199a5b36fda23eb12acfcd759098c6a8a53bc71e3ec764b86826f7eddb6c924c48fa9a93ae8705556b87875a470871a88db2021e4d28fe5037d172e4c7da42be257974fb36f1b19107febab3d731bc51682155a975b0c5c23cb871651e7cced23cb0e8da3135afcf838d0bf4c0aed003be440fb65ea3074d8bd48a5f5aa8073d3f10eba72f46b3cc0ce44eddad6bcb4575b079551dfca6cbeac05b57075b2eac83df68651d6cb1b40e6e5c5b9590d9957923bbbb3e79ec89c7c49ae605f4409c781f4e4d409b2a980e3d9003053145ff0cfd877f21fd5681e222c55c254bbdcd470a9350930d506fdf96f5e8378603a5bd9d94083cc0e2e2b70feaec866f77fa4fe046762d01a9d1e3543d01a5ce1a9f48ad089b7276998a4b56afcb795caa622927aa1d0409a1d59c86eb29d447a09a3a83175aaa7827fac30da805dbbc5a2d6a70ef30681535be667ac3169a59f6c5e3065a0dc8f8e5c0547a25a2ddf13af1d02cc86c48e1aaeae70fef467cb433da318c49b440d3e46847b4473b360a1311407f1fb0cf16475dd0d15dece8c901167f93ab697ca5223dc8a27dd2ef8b17e89b66bdb192f81c13ae0cc4c9686709f5473b1a14eab7a31dccd37fc2b13453b12bf6011bdd7117477ee2186057ec9f9e76832d9b5b418b56abcb19d0cdc2aed887b5f9dfad06c0fa8cb401a53b1aa5539bd9dd57aa7d624153b6b04c86eb1734bf50de9bc649a9981f0ecf0c4e7b2e65fd3ed93bed3a5147e74e28d83ff59dada1ccbb34ac3a042d65f402bc321ca7366e0177f97e13d414ee7a9a425d4fb81bd013d82e54d711eeb284e040ae660de1ee460de1aed510ee720de1eed61ac2ddba860098e66a7acf2807772bca019ea4342bd004dd3bd9736fe12de95fca72de5bc8ab367ee9521bef186ed5c3806a109c06a618d4e7c0a805b50dd85309362b04773d85e0ee2685a056ab1dd0796aaa405011b8eb010ea90177c371e0bcbddf63a9de422e2bcbeeae1f37874fe1ddc6d577b7befc9632aa4c6a8736195a874e5968d54509935b897d4646a031ee6ca2c09463c0880010c021d1081465eec3f0e18b5d88c061f293dcd1bfc886e33252a39196a5ca0a5b6e47b6c9688725c8aaac5daa5ac057bdd5187ea6eaecb6adde3123b34bbf6596caa3512db4f0a702a5a4da378fad9aeb4cd7a1ea580a029886eec2e23c66231783c631786ccb11f6f5c97f05eb9afe3f6b6173b6296760ebbb8fec0afef3ac7187be190ed5efb12a5caa001c66b4ca8ddf3944afeadaf4095d81af91c96d5189e51cbc8ab2a958aa7c9ae50bf40c34d7bacecb591ca54246e4be0106403a54a05d2f8df0adba2873a955f3b81432293211a7936415a9825b029915d01ea2c1fe0ea0aa17fb1a761f6e6e34c614d97095583752635c37cf4b9ff951feabf6434ec1903f14c8c634dbcd55a42609e4a8a281a291a9e88aaadddd4696c1d060327986290320356ac1cc1e70a5bb586aba2771019133c7895c2804dcb3ea07fc14439497365e37192e1f536d3af9dda2931fb619304fab017d7b2cc06ba938e5a58f3c64f82c3823ac7da3348b2f548ad0fa76d03df3221450b6b61c6bc53182f6d67b670d7a5f37be1a83229a3aada6e1004285dbb7ad858fffcd6d46cc5ffdbd45925d1f141e4eae461d2daf3996f57215ad26ccb7bdad271039a212e03668fed4b52980906fa80c45b1b17a30859783278727a7b510e19541b899e14681f0a82aaa35239de5051e949ff78324776013666e7728f8eac9322bea9b55c3555625763ab32d56a789f7fc5b4fd327199b3f771281e04e4ac0b1c1fc60e4f7aab8a4a89eb4a9a9b02e3ead4c9ef12ebc66bd5a87d865a0254bc76ab7f45a2d0aa1898efe3cf4b23fcc7ac34775b53774411eab027c7258fe4290cd037ec049566a600aacd6dbef8befd762acf4fea6d2d542e55adc772b6900c4659c2466d3126704e4cc290e06967b458911d77aa8942878394f41464092c6fae851949ab38b789c7023988155a8fc229e2821a3b982c6997d32d633d51cca033825d9715de671e93e1b4ec37fed0219f8ef5e32954f34ea70ea5d23c5a05bb779b88128224a9a81bf12d12662f0e2b49a4ca1838f357413e3ccdcabcc0f5bbdd7d7aee35f375f16e63fd98c19675737e88e3f535a7ff8279c248dd66f383d1adc3fe9cc40d43b7f4e6047a90b16d2ce3855fc76b84b041a924ad3dcd26e9f81c66e0f6e6eef89f63a0cafd86fe9a4f33f2117f2bde3ff0a666403eef07d1103411cd108da6996eebae61d7e00eb39edc15713aa7a430f1adde094863b6e0baab6ba9bf90a01366c4ff6b309f953dbb96a4a1f029dc865b9cad5b186fd4e0fd062dc504e38f3d35e2877d3678d97c202ff3623058b0847d38b424cf8610e8276a59c3063769c81d3fe00530e177a03b4301aba5fb3c5abb65c5de37158adcfe29e99b74835059fb9ea688a762a3adec77f39ef636bdcf1cc34ce14e4d1d8f3b2caf4b1a5e667e5b9564951acd3525e099790b094186000bdae0094bd9285088a21930b87f219fe57d81c67b56a08e9f21b61df6c9baa4bdff432da39464468b37257591c064bffedec2e27a63fbcc9fad76422fe6eaff97d8e2ef5cc8a6c7ab85951d5ec8f918a545a7e9f6493735cc090928d31ebd815715efd016c41d6153623176e4ad84f4fbdc50b75a572b21fc992339538a4c218628294b2048fc1a2cc955c98d0ddc6654096425da87c2dac337e0c4f29647421d3096432f75cda316c39bed9a61920975e715814ab055945d1f31d0790a82b55805f3d5ee60878532dd422867c8ae335da2901655020c6e08a7e1e635648f1ecf5f3ae80b45ce2721e4fe6d5eab95a6ad91d256be7884d49139ebd7e8eb80220ad06e9c1d213f7e615889b0110d1ae404a6fee45939779f97afa3c4ed43bf686fd5d76de86df7f8bd3a877ac91df63ff0f260477970fc3181ac16e145bea9474ce2569acf487397acaa27c876fdcab98508d7263a9ff2648ff3ad61507628f3e110b0ccc1f400f7beecdcee51ce201db3f47f63591b1cce806b59b270ecd8bcd6b074481287a807f304645cffb613168fbf161a979e5e2cb5576535987cd8c43184742b3239882dddc3e7bed82cc4799a7d563aa66582b7121b234598bc50ae3f6d3d5c112739b68992b2ee1993fbc90914962023e18701639c003605e5f1bb4e0e710623163d804d4aca0d09acd3e1a57723694a1379427af5fbe7cf6ea5dc8b79b9191bffc61976c106ec82d99ba73ff612a7089c15966b530f72ae60a258aa753057955346a98b54af7ea0e03e8d40f8b45cb8d82c79f60eff1ec809c6237cd95fa5961c8e1e3d7cf07a2f5edf1ebe7df61269c67f8e199fdf0fde1ab1f06a2750b7f3d7dfde2c5e1db8168fd097f1fbe7c03591fe1c79bc3b7cf5ebd7f3110ad36ffa0ab77f0c3f19bb7cf0e9f0ef4f6d0c32f4f5ebf78fd6a205a03eafe3f7e3c7c713c80a40b00ffdd40b4fe4c98bc3d7cf2b767efa08313ff93eee2d47d7a06757e21248ede3c1b88d6352fd6f53fe28757872f75f12bb950f8e1e895eef3282df1e7f317af0189e74926e9d3f1bbb7474014daa910f08bd74ffef6de16b14dce0c14f869205a4fb2c542a5650bb4519f85801580813c354c7304f23c72039e88cd8cf7fbe2cf10f83795494876c7c51bfde74a6f71b42258b455c82288fce1d602171a81b5a17942afb84011324843e1e1cb370d25c43a1b4b9ba022533514027f359421b335e1faaea1c0b2e10de54de81283360df5e8cdb38d0ddf5662b40b0cefeb05853697b44212db602c344c4c33855bdcf16a36a3a741c10d7fa670e779aa8a498d5f80ff2cc338571ee2182c7eec39d939de021fbbd148175a7f3a4a9a31daa1ef62e033231bf05f2ac385d7dae6346a160b6e9aa82706bc3cb54282a88026d0154aff0daf74c8c110bc502e289b07df9269a9d845021f010a24669179e93e2ba8aa784df282b18e2df4408e5e1de11faec0d0d951984260a90b31040cd92369dcf628003a84d48587347ae2e3c53241d743884809c62fb95c2a090c41f6310862694257d045ab17c8e39d3ed5b85bae60c6044d9781a354d73bbfbb31790a97254ce58914a38d51a43e56721bc069ff0965a6e189ee09abb6563ce4abbe331ce6ec21de64a28a428cd53ac317b57aaa8c0fb13e5091be1117afe42b02fed85776304bc5bb7c5594020f4d592e0e8f9f1c1df5cc582225be157b577b7b0fa6e271d510891b444f1f7ffc5150fe8bd7362a238c14912c2672495349bdd0ba198d462bb7e2daadbdbd1678cc462eb4497bff7ea757663f2e9726cb6aa757e8d3657bf75e872d400db7e239f3832a6be71d9733000f36b000c07050b24b7c7374ae1e7dcfe3658141f39d839558a5659ce823d614b63adb61a2ae28c99356d8f101349ca300e0d2ee708588170b15e9b376b216191e6d108e5c2ef36c99eba29ad4d413b7c87254ab26d98272c346a4760563e5391513f4309419fc3864dc09a098fb0d30a7ef9043b7fef182eed3d1a9196fd79d336ac66fbe0ff549f027e7a386a11634323d146cbafb4ef5fd2522652511b95e8ba1d81777a0835d56e59824dbc8ddce8bef860cd16acca7fab90f0eadae81ffb795bd44c4ea8d35e53f035ab0d45770750f01cd818a36ff19362c2e6370019df09bf87e5fdca2b5290b25eede1d542c8875ccb5ba030627f80fba3b071106e8ff66eeb411fed755f89a6b4805e4c6ac4d20ffe483bc7f33caa8866d8ff46dbf878737f770f8f2cdf6e0db1ef87b7b3783278570fb2e3a7e17fbdb76f10944eaf95db869d02b22c09ae0710a4adcbdfbe2f6ed10f78a3be2c054093da00f984f40dbf590bedb88b4e71d32ce953c77a31978a3f97a8b29075d7a7b720dbd0eee6f3123a8906fdfc39ffd1eee6dc1b5efb6877ee241ff660bfcedd160fb4e4efd4eb69146e67cb17d27bf789dec1f6cd9cbb34f19c875a58f2d26439f75b6efe063a5839a606d1ac42710ea70f77f8bf742eefeec3396e90a7fddf77e3df07e3df47e7dc37f3dd8f37eed7bbf0ebc5f77bd5ff7bc5f1e2e0f3c5c1e78b83cf07079e0e1f2d0c3e5a187cb430f97871e2e0f3d5c1e7ab83cf47079e8e1f2d0c3e5a187cb371e2edf7830bff1a07ce341f9c683b2bfb7e7ffdcf77f1ef83feffa3feff93fbff67fdef77f3ef07f3ef47ffa58edfb58edfb58edfb58edfb58edfb58edfb58edfb58edfb58edfb58edfb581df8581df8581d1c8454965772a1b6d55776c5deee37fe66e9217fcfc3ee9e87dcd71e6e5f7ba8fd1ff6fe85af8d23591887bf4a9be7f9192911023b762e72082b838879828105e124c7f89547a3169a6534a3cc8cc0dad8ef67ffffbaaaefd33d1a0176b267d973768da6efd5d5d5d5757d6ec0ebb901aee706b49e1be33d3760f5fc3be7fa304da6b1c210d2d6fad779b166b24dcfea7304df3c5bca117cf3ccc511b0b96ac2c5ca2d31587fe2b41565ddd5e8c960c8d199c8a3946d9179423fcc20439de4c75fa34d237fdbda1ebe207992b6fd28e10e12ad1f2de0cd4d90430a54c834ecc943b56c027a0e2af93c7fbac536043e8079fb87adadad1fca9f82f2a791fdf6b958db0d922495f1a6e1f159ca01ad699f1d620cf6166f5fac95ecaff121c4b0e307fd49b36e4de05cc18ea7edf8639e16541bbdb1de6c915134228b744ea634484424e58b35f235590fc8289d0f65bbc6c55a7367dda10b916b05a70f58a973dfea2ed6408c6094a38801decaba7001fe3e11660496cc2020499a6c289902bee9c554b8ec40d7e04a7b0410fe048536ef710a2ac928b974a25af513dc98a5388c7a84d2e5cf7c11bad4e8ca8c86246bfde87a8f57bf9e79145486424530241f090a613e92309d4e03f291bc3c7eaddb684bf4fb817cfc4814323e357e3e7b66fcdcfa30a6e3b146ccbefe7aa656027449d95ec9564fb6ccc8f98cbd6354c9db09fb640935d87f2c21862637a91afc1b73f030c8b2881127449b25645e868e6a965742b4d852db448562306dc43c0bd4e8f79dd62a47d1df84aed00faa75e96006802334f1c902850415dbfc9fb71717734652e19fa75b1b1717f3fdfdfdfd775ff9246bb68c848beaed8bc93c4e1e815a281297bb4e153f4d4a5fed392e6a3f84551f3f808f7409f1e3c79822df924891e1bc0083d3c328a17dc8021460964e1cee27b84b9e8cad83c32026337b573ccc41b72861a46ca34a0c01864800892f6a2de0452417e624c101493048a27fa35b844690cf2820e3380d3096629af11cb364446714e3fc83b72ee55547348ca6414c6629282a4023a119481d24458710b2b1d3d8faf8f6c9c60fefde6e6dfcf0eeab2614823eb6532e6c5c5cb4e1cfaf9b3b8d46ef236d36befeb8d1dc11df7ce866f17f1c9210ae62d7c906d6463cb2adbaa942422c88725899161fa074f53f7bae5ffd1bab21adabbfeff5feb656e8cfba187e627d4906e9c76df2fc3b3bebdc125bbe8bb503ce2721cae9dc24e65ae2764f5b9d7a2c85151440a77eda163004d8834c4e8e39417f2f2aa15203c6dfea30969a25b1d75a10829a1bf985e7ffad79e13fd97aa2afa747e85d57e4e0319e7d637215cfcd3bf96b81fa2bc04c5ea0ab03ef9393088b05eb8a413019211dedcbc1ed88731561d6ed0f6f3c16b5fcacb00532da8bb9cabcaa2c0b063605ac47f0bc74cd41090d24aba21d8c2a910df203fed20dcbea6fbcb8acbd83bdd086b1d2451a4c549d47b0979a59b48c31059769b1022d735ccedcaea30e1776b1d678fbff434d31b2635dfc67efddc706fbd498b36b32d8187737f6dffdf9ecd3c7b7587973384eb2e25db3d9fcea62cd873f9618e12efc9a8d454640d870324fae9cfcad86672a4a8f30a2585faf7c36090766cc752cf8b92a5a09bc1e7b98f8b9ba7a6283cd4db21ba7909afa9ff2b5eda08786400897f5f5b64e34146434caf1c292f838544a60b45622504e61b9308991c7caad7cb5665f2162b93583a0c984a262122544388dacca17e01fc66bcbf5e07d6ade3e1717abee0444d27ab1847295af448f1e9b38a48ec66cd62fd6d65fe825e2ad67b57ff69da7fd66ade63f3cf50d7f717151af87efbd3d0c6b75a0a4fbe51ec6f57a78b2e5ed21a9d983771b2eb29a3d7cebeda1a8d983b99546204840daf96fbffdf69bf915292ae21f046988e481a9946cb4bca80b12eccae26faa8b9f359bc6e288388b629a3f92ada6bdba7ae463bd4c3dd09e4a668aed9075f2352959536967dba48fdaafe725ea22fef3c95e8edc5ca70518ffc3ee45171c3db3ca74418e634c9e6cc0408fdb92db12c0809b9090f2dab495816388b34ac22eff3d6fcaaa6aedfb7952f0eb998e38c7d45ef73054e085b41a5bc5feaf71b1b673b1b6d34070b0fffb083cd5cea36dfcd9fc2898af77c848adf99929978ac7cd51b9e5caf519ab6f6ecb5865c1cd9bcfc65bb998a37e16cd62ba21792469a958e2933cba354b2ebbb49e4b1127577d2fac97ee35e062c0caa63d2d8f175d434cac797fbcd98aeaafbf98837bd01e7c21ed019b37487df022b08ee585713035fef9be0fe5927adfdcf1f0423c6a588a62bedc3770e545656d4c59f5f5396eb2dd34b9a6599193713acfc8847e0884a89dc14a06858892825e8a2c4dd24715ef3d6528df26fb7a523b9d435cdf5a6fc9ff8ed75132cf5d5081e23d798eb9699c8dc6d848aa629f3e7faeee5499c29924f412d3cc732d449a0877f4684c0258119805700dbb6565cefe9f4d7c4a13ee5b9ba4dc4f842b7a9f4ee887869ac5c613350277928dc209a8c851dec64301a663727c2a1c4eb47e60f910877048e5dc3d760a0a28418b0c5b246c9191e9c1203b0e9ae4c71fc993a7e4a3fa36846fdfeb9f42f8f44cff34f22147c03043a3c2450abeea022b804745ffe9f5ad759e1336275b2db2fe83faf90356e8aa2f4f588d7dedf773ac125855c6761563dfb56d70024f078c0eb04009f70294ec911d12900df66d73130d9308e960bd6f9fcb7adf6df17acf9fa325e0be56ef87ef64bd275b4f79c5efbf6315838d3156dc78e2e4261312c4b349002153a2907c8d9efd79986698ead1662d15fabe1d7437fe27d8f8f7bbb783ad8d1ff8df5e75a9619f7517d9dbca5609a6704e71892e7e90710dda002b0adb3469cc73f2f12303ff40cada1c325d5e87efb9a8859b2e6afdb0c56b7537fe47af855b2e6a3d79fab489bbfd6f56495e29163977eb0814bb77d47dddbb0f45c0ffb2f013a6136c4e81b882df371da127248f0185ee557d15bb544b57c6b0cfefe80c8e6010cfa1ecf1bbb949f678e0d70bf071de3de7aebae233d63b3ee99d76fb07c74783bddefec1d101fbb343d68f45bcda3d3a8e12d825acffa67b7ad07d79d833abbf09b22818c6d4ae7dd63beced42ef673d36f6198d291cef332a5c910f7a877b1db2be1fd178c4fda34f7f1673edf214d7724dfb597009596aa1ed69f7675671205db045f119e47617becf870747bd81a80c7ed00c39455d3e0fd197b12e51c75ed7e626019e2bd741a2c1c1f2ba86ba0ed76bedbbe57fad95bc3c3e3eec75d96c78582badece8fcf0906dfb3c8eb5afbda3f3d71db2de4be653edebe1c1191bf830caf5718f5ffebfde2efb8ef8552a19880dc2726d9b1886c18988ae110e7b07a76cb3df3040c81259b78f49d01155f706fddf4f04c28e58919aa3286213552547c74703b65ad9304dd8aa55053e04395be4059d12b56330e8d9eeabdeebaeb9b967e1844e037b6bd5816023794e051bc981133081d2c8ddc3eea9a3b3b3308883ccd51387bc637cd8035713d8250b77d956d9f50e8e4ecefb8337ddc373abeb836436c7dd2f37e9f74ef7bbbb3dc7840e18df3e0e42ea9ad3f9911b8ae78907820c6f1df5191e7bab3b9622f1debd782f7401047e10ebf86e6fb2447db34759df872b1c5955f8560d577bbff57b47673aaaca6a6627766b856f661702ddac6e7478e80d1424ac061642e86d0c7cb09a69e8a03791d8605557c8a0d716b8509a92bdb3e6ac8c8d556d578b56210314eab7773ab62fefff263e66240f84cc5765c6f1d0f81879180e5556353753738a39d0ed43f6cff3dee9ef1db20effe2bebf3eef77f959137ff2ebf4fce5d9eee9c189a0b5da4f8bef60ff56b200e5af5675c57d985fbcec87f9a592af2a7fad7fdbb175c31f1c244018e023fbc3befee10fff65627d323935b3aee3ab45380008fc6f8d38306a70246b0b2ee6e8fcb54deff967fc51a600d0bdfaa957702ccd5db0226d587210fe97d1041efc8ec7d52847d5e3055a9cbc5b46e1e3c1f154303d9cd5ed22f5c9276bcb8804d3d2a35a694381e4d8e8005e62aa02c42d322a94499caa3db2cbf46080bb22b82934e211e0489182b74d96c6e8899291219d04d711a61e3168b3882628927e48192b6b9743b4bf04928dece97902497f92a537b9192c1304907a704b1279dc934a2985d96055a1f4a0e478f82fb22d52de887012dbdb641d85b4eb6407840cb8f50d9125a1e34888d1501d8aa4ffe9983754ca36144083dc825dfe3c68e6eb792e0325cbd886a734a4d1351de9da1a8ecb6a2c9113578be420e2fb95230a1e0fff2521413e7e247f7e3282d701c4c49634a463dba7f2c67209b616ac546d362ade1bf4439bbc7ffbece9bbf7cd96e6bac4d89331cf5603f2614d067aebfd3764d13c5935577815691af3906e98f58692f94c258ce10f674e71e205a37918913221519ec632eb6588c9c66829918d461377d3248f18e5c39d14d418a5d95225c0884c542c24a2761004fb593aed9ef51bcd25188daac8cf8ed6b7452534bf3462b61881299b25ab41b5aa43c8c6158b76609d5fa3d79ee8550f8eb53ade0207c3d1f620291e2d435c06dcbf0e6f4180f1d7a22d03405dac65d3fddf80b43c80b75cd32985209290b64efa01af84adac47aff608d41731fd2083dfc2ad095f113321674d39fc1a1482bec2b65c11813d2be778d47ddd332669c41e537276fc2a628fa950752a514987fd8f180083dc5d88486310f55e280e7399d70c54a3f398cab455e24622394a6bdb3aab210b3bdab3e36ba723a9e376b302ebca984d2a0aac17004286cdd73a526f9e0e9906c9c289489ca0a899da98e1811c66249290d3962f7b221df840c806e9414e3553022e0b19d6e23badb2508a25fca094cd0d6042ec2a4aaf3c582519216172ab01bcadc70224c2e672fd8f39cd16eb1df3e3745e20df6a7dcfe7431967dc2e1b0b19bb66a4a7b33e2eb8a9736d8d0332b0d2e820d6b2bfb2236e7f8b846cca2e98278e99b3b75eb987d9bcb03f4abedeb746d7f6fbd608f92a46cb7b92b8d2308221e80e617eace061709ab68b7f8d1d29f5bea762ccf35ace5eab6160d98a28ef382747ec9aa176141d9a2b595656e778cf5a051cfec6a7ce84ba03143ec45b7650cb90bb77ccab9c6d1d14a97bbbc98172e7fde6988740af0da22b30c537432b041ad91d525688e63b9aba6ca7d4911309fd2059768d5663a86f1f24426ab7ae4b412c93b2c8b4a61d81beb20893a394730c5d9721d3216f555665494fcdcfb906af0e42470721078baceebfceade4ba90de4fac42f099c68e36ac50936c614b216cd200601fb74b3ca2c3bca2ccf554c05f83befcb3a546ecc0ff4a96d10176fe102c9598d0d47704f910f9c17c388abc5dab6c556dbecb3c651d922610911eb08e082a4974b2b8fc5869dbab0e9404657f15c6fd428bcd69f660517b27ade7bbcf3fbf30223039ae00515d96582ddc97836865942ea7ad2d0b22d675ec401fd2210dc7f7af49d3bb257e24340ce1dc878dc7d56c921dcf3b4005de748f55ae7bca5eb96fdf2d5b2ae9c88fa423d5ffc13c4655ba4ef2dfb2477ff1ce19abc133adbb3f991cfa238b1e5844c03c9c8c8dee9046e50180009a426ee37aa037d57b4d02a6c30fd531206110fb5eee103b93edab57645564739048d8174d0da2054d572543da76ff5f617d55bd9fb577b112cc18fc768988406cb77109d8b7ceaa2bd66937e9903fd587af81ed73afde41f1ef80c7861d997dcd789fff2adea731a37295d3db03457b7980c14de9ad81a668f2b3697bb61c7cf5a9202a9de5611143880e3822c0249def2a28211dd28da320df01dc26c2feae8279dd91524d68483ad8b2e35d9a3e83e5282138aee30cbbf77051ac5ac02af8d8b45af4066999bcaa033ea236fe8b1a0c9de11dc16bda5d2ce3fa401dddd2a6d1c17f7cec5d20368a6fb3dc38278776478eaef24d21f0cf4500ca64baf681930be2f728f018e2e3db1dfc58c561942012e5d048c3c1a8a053b22d0ac442e087684d2cf8beb847e6840d5f9313910b97c0c04387ca35018ea5b058f914fa70be0687504de085cd88fff9c2f328576aaeea22950d0f638bef7e5b3917e3b986f9c256e0b160b2a8933419ac25cbae2b1e9126d64ee9c86e9a65349fa590c72225c3b49858571d18b198d79c8ce0c313f6f20bc76cd621ed765b7e047cd6ee9c0b1540cde8195b31be73374d46c036df42d0625f9677e3d5f84d2c4fce24c88d09ca37a5b88e7ea18b9b3493efadf534596fea860ea50e1e3ff6501b53ee5021d6b16cd52cb18d019432d2ae7e83ac2091f11e2bcb6e4e7ba348c074cab0de51276fa4bff76ff564f802728eb2a45563318598d63c2669621e804afc470db8511d6f0f80ced213728bd729e2ba8de352e28c41aa7a1f66348bd8872026f97c861a6d48eb3546bb01f162cd85c27e2c09553809924bf42ed8dcc4243d59309d061949c70e807678453f449de2db15c02c4e2e8282ebbfdb545ba3184e8c94af74681da2d89a07f70e72c0d2596bb8779651af96fbd4dd85807c2e09b09f07f742bb16acef0d587f2fbac4194df847c47f7d9f26ef97528e9271843a209a560ccd4f18544cfb3d97c6a714d9b7cc9ad6e67ab8559a8be5419e5a70da9216bffdfff34fe2e0686f7ce4cf942c403a7bc94f9a9b97fca6fb77c98fd2b74b191b08ff16f945fa74e99c3f6a439557975e06e5fa704aa0febec8e6f43d790f28f55e5696d3201df23e99c7b12a92f329a10574d5127d9134d39a7a646665d6befc4e13163565959790c0ab448ba6dcdd91d6c6168fc33c1840edf14d197be9e1ebec07c15fb7a783a3beec05d7c6b328374a5157b4a0180687d46fa902af9590ebdc2b4b2141209d5344f7c53b4d12baf8ccd3e4de94eefdd293daba360d8fa68185de2d03bf5bd1894a23ad91327606d6c9c78fa45402a762dd0884e203a80ba40650b993684b2f2e03569b9151b31acae2be2466b49452bfec68dfd3728ece0f0f6f3b4365da702bf4ec1d9dbffeccd8c9134eeb68f3c8a47265a4b4b409aee5aa706975cc694a126707d62f23b96e10fba5f81812ca107c94010b91caf45cb976ca603dbc949b89b1cc1ebd36b225518a2966afd439b9a108d557ef511a5e6b0c97bad4cbac0779a7fd6ddcee5f13bfd8cf75abd593fd554846c5cd6f2dbf1a130e0fcefa3a1ee41de2d5e0f0e473b67454a68c5bdd9240e3894aa0fd13755afc6fcde95d01d8aff4725ff7756c753420ab1ce7059d36dca6526a5a0ede42511ebf510938c671c08d593f553bd0f3c1ff369a331da4b7935e57acfe6f20c9d6c326dc569a2d9673bf825df56c74db75dba60aa4a3be49ecf71b27971ea5e54d512f59b28d3a8d0b2d9e8e53a0d9ed2b71a66ade9ecdf349c31cd71ed6f542543d5846dd729d72e9ffb034a002027e030eef4cee284eeef697a09c8c3e5047e1b05453f879900fbd675c7887f65ceabdab8b22e5ebd6f8a0c5fed036c3eb05631ba4d42312dc4be46215fdb1bcae34efc33aee2b4b10405d752f8c4e5d22421941c510daa1ebd02ab2314389ad2fc29652d9d935ea01aa7bf4732d358511f6e58e4b322841d909482e8cdf47d5ee55257dc2edd5852a20ce3dd8edac721e755f16dfc9b4adf6b5936ac7cf317c5a1c9f1dd1500c8584679072941c4bbae529f4c4a691e58e30348688cddbad274a8cc727acc2f581888017af8364a1fb339121bd8c12d07340462969ae09bad58cfe318f324a0212a7e95530a101f83602f25da1785998aeba5d34c88e088b2ada379aa4e3b120d77b743dc740e3683b3b188ddcde0eb63b8f2583b170cb16c3f8dc7fec5ecac8e3ebc9741972f1dbf5fa71b819999d79f0d2d79fe59d64f6e5c0615f3fa64393e5f4534277ffea0c17287b659ea3e1eb6da9ef94836498f76639d26cd97c594746c7b3dd7d446ad8db8104a2493e7ef4594469828aa6ed44a88e74c7d605787cffdc535cd111cb23db0418eae68dd6f1231d82e7d561d0cc9ec9eeb86895f6a1ee037e5b6d32a726cae6c2786a541900cb16a9be08d6aa8e51a967e5ae87f212d9981da0cea1fc537fdb0e2030e58ef5fb4e1e16c6dedbbe17cbcd053c7dadc481d777cba9fb68b7fdc99dbc6c0d4f1c2b76dc72779c12c35adfd0d8718581e7b53cee3b042f4162994c2d7538a8b81deb6d90ce986cfbc854e5a185cbbb594b30b3faa1ae386bae908cd24d41aea0a3fff0c9722a0fe88a52310f17ac6f36ff540857438dd9978c45eef23b41fbee5c75ef478c8a2bfccb2006f062f5d142b25c122d5c40b91b32b116282815b56d78d6a321cee093b7443db5ee8ef6771dbc14225ffc7755647541577bb245eaf9f9fef1fb1d8744c7d9c1e31ad74ac5be6aba2a7e7f4b0163592c61239c9af2ba91a545d427314f37194c6734cb31f68b14db2c1176745f9f28d6574ff40813d54499250320996f818b486b0fc7c37f1fd2cb205c18e674eced7fb677b8c3b79ceaf66910d511db9ced1dba37a9daf0d42368c91d9e26b9719ffd49ac70b555bca3e7e4c9e7f49265970df3cc85f7a6b3628163f8d72bdd1d1e3f2e3fa69d6a4bce068aed772ba7dd5f392801a14b464fcbbc31eab0b116f05decabc30bc16aa59100833d31e5e8da05245d26ebf32cd6909fe956aa73e904d9a5bc0ac4e2f6e838bf0fbed42b28be4726c80e7879cb3b4853273088f8f8ddfbe1921c48047e40aee0d5757c81b4fd52afe947d57e3cf6b3da7928ebb8211b9376f9fd5897ae638d9527eeaefec8c6807fd141fb3c074883c8aa1a1eee91ac54925a5f62f09255891d6fe29e4eb03b96fb2dcf71f9c41aeedafaaf7b3dd21e69a80fb3259beb7bedaef0cca916c47e99978e92167fae57f03d3d5cbc59003ec7b3f96ecf138750dc874e205cf7a21274f49a4e8714a424b91f95fc72f82f8346a824f89c28241e556ab91a606a6190331dc4e7c09e0285a1c56d64a0f6ca34c4d926ef3f3a5fb3a5361f6bbc643d205ce9155bf38e72bd6367d18caef0843d3938e97dc9372c8c57f33559565ef94e3bc46ff71d76e9c550ebeef06accbecc790765dee73cee3cbbc5b65aad0d9b5a67de95d1e5731c7961448affae7ae85dcb03998423934c955ca2024c35f4892b3ed91d73abf96c77b4b4350acaa5c7fd6070fafd2c87cbdfe2e17e4fdcb733fbd05faa43f0aadffdccf46c5e78092274b70a375dadfcff52fcf46c5e7c415eda09a49a0cb53f19d5df8fa776ae1368a45bf6e227925510bb7f2ae915b254d0474798dd92d59b11ac591abd195f655fee5e4ad9b81c566de5327782adb24d5bb9a894396b058b36bf4d9b1d88589d72cb12ad2423ff9b9898392229db9dd4b3305bda513d03b3a5ddac665fb6b4bb7ae6654bbba9635d566369f58dcb2a2360af6c0f66da3d950eec06c1c0dc773082aad1c9125b29ff515bcd548ac718af36ccb87f6baa7b21e72b985b09c22e888ce63c12f34cd0dbdb648b3c7e6ccdd528be451402af6d974c49f8e54dbb1c644abb8c245e569811d5b022faa208fa192d879660cc3da184234be7973231f2d3b77b302bba6b8f2bb5af61c2f405b1f23fdc6c49e0bd9a5789525610511ce5fe4f8a33a9ebdfce22cac9739549eceaeaab557ba8a7edfa8287e2efa5e1aac10d7c2e44f6a54dfe2b356415a8ba9a6a6c95d6cbb5685f103dff369ab31a98597c1ef6d49598fb8b2bde4a8fc43246aeacbe59a183a58a9e2f88927f2be54e0db4e4898eef1d2f1d19e0ff02e5904feee0badc5716a7afd2455dc9fb17bddbff56d2f6bff472b7a5f97fe5fdee709bf4e98054e2723be0856ea8ab073b15f9abfd8f2fbfd7e697510229b7d21a568422bac6fddafc7a223a633722457cf91448d8d65221c9b81f9fcb8c574eb4a3febc352ecab569a8081635a51ae58801aaed4777f56a3cb4c12a3d05bc76312b59c59477554a1e95a98c2c76c5ae1113348c666e6932a3a18c1c536c897b47dc894cbdbba2453470d54176cedf8f0c35ca3b7cffcff3dee9efefc5afd7e77d70b2941fcece5f9eed9e1e9c181fc17a5dfd2a47ea2d9761a073f9dd8a26fede50d97996579a3a4a76d55441aa277fe27560ced93545912fc055265f8df20bb0ebf21763928c1f6893a0b5571793f5d1399f7a07692572eea7aae2c22ef5ff96b541adde3bf2687b5bc56ab7cdef799a97a54a1fa44f2242ca6e9aa9b828769eed5c8f81720ac3e4106c8323410aac568bcc733a22454aa2114d8a68bcc0602b71105212e169819c0798551bf28a637eec1109c825a44707908c78876d17f86d0a8b4a2bcd5901012e1c99925440b004277a430ed3b0a17a69099d6c909b1f789a6f2d2c803621bb0f9a8cf85f223bf89fb80d51de1648a1eae3a717b206e379b7651fece70bb3b5501fab1f466399a28fffa9b5e6c9cc55aa72d8f8932c4a0a12903c9acee2681cd11119a7d994dc4c684282d98c0690ae3e4ac8ff3b3b3eda64a8d18e927c86fbc3fe0ff1b09fb2f2c6611ab65460a08669c02014d66cea1d6d4dfc06a5ec1e170b91172703bb8a1251d06c1a2534677bcd9029a11f0a91993c27e9586212e30a1c0168349d9b160c59dc0eeaac2aad3bfbc37a0079868630fb72f096b4d0844cfd502f18173423e8cc162597f248e0c0e4b898d0ec26ca698b5d93495af038fe32681105ba5250887a83073b4830b7bff3b038f83c6dd5d591a355445b03144bdcf5c49a25ee1954285f2445f0a1c7e6dbd08f160f50cab1815cacf538b122176bed304dc2a068204c2fd65a649cce1356d214459714d7c878629c73b3693b0bfd3df68c772f8977c5ae39b99bbf68f7ec69d780ad3c87c8f7ff7d4e83f510d10d655606a969910312c9d48c016ddae17ca1337371b1a6ce0d461226176becf33d1e9e2fbdc1b7383aff395b5d7dc05ed178463375ad8ed30c392770c0e728cf6fec4463f56012231c0d3a8a724293309d2705cd3c102c338a81c163e980e325e4e3475f6cbfdac87bae26ad50b7066a2a6e7496e679348c17844e67c582c4515e30020f7844927444f3161909fe6144860b898ea8214bdaa43f89726c08e1e672116f2ea61ff89ad33149678807d03c0021fac85d338cd39c02ca902ee241aea1360e9faa93a5dae2b96105ac0bb6c9082dd77e6936426266c2853d69a929f0dd733004a29526f461c072c4a37d547131a981548e6fd68df6b6dfb71ef306e64365dfd62669b2f1dfb5abd3cfb9ade66efc159bbcd65adb14d9f3668b2cba9c14e4e9d6936fc9491007491165a44fc34992c6e965c476f82009dba41bc704aae624a339cdae3905837e0ea39026ece9c8482842b93b0bc20915252df28666a0a678dade220d56e1628d975dacc16cbf228b744ea6c102eea2794ee13142c60c2ef443486790b62f4cd94389ed3ba247a1c680e990df7927e9b008a28404244c670bc16bf29a2450a9c7d87f264531eb6c6ededcdcb40398763bcd2e3763ac9c6f1e1eecf68ece7a1b4fdb5bb2d97912d33c17b12f19eab3e75a1c85908c390e6e489a91e032a3fc4d9e909b2c6237067b988e8b9b204387bd51941759349c1706f0c43ca3dca80004875cac75cfc8c1d9c51a79d93d3b386b413fbf1ef45f1d9ff7c9afddd3d3ee51ffa077468e4fc9eef1d11ec852cec8f13ee91efd4e7e3938da6b111ab1cb9f216ec6569166102427e25b4ace2835a6212296b07767348e421207c9e53cb8a4e432bda619a4439b312290e720700cf8498ea369547021646971e2e44553888af215097252e471341c3c21e32c9d928b35f879b1f642560ae320cf8f8229cd4515f892b02f7a3de8ec94066121ea65ec47a9ca2e6bad3a6bb737dbedcd309d4ed36433c432bdcd9f64efe0ece4b0fb3b63420627a7bdfd83df18e7354dafe9519abceabf3e3cc9d2594e3e397b9cb132b3bf83304d8cda519826f03f508f118ebdde7ef7fcb03f383df8f9557fd03bec8168eed783bdfe2bb24d9e6c01016115411bf57396ce67641be838f907ac01a0ac8402837c3e93b2320ef0f66080eab5bca17a69115e959328d985aaa2d201b0090ce0c06ef36620274be671ccb835fcd4664764d160d55a4ac40fd181d83769803d10c289c2082b0de4a7871669bf46a362d2a9020eb6128958b0cb8c8e5f05c928a659eeebb8a3d6a97f6e6474ec4a86c2fbd56a926d92d1f10b51f393390fbd994ea3154cdbb32c2dd26231a3ed8cc2a1d92e8b7438c003b28d221b402d2d138c3c286c3b82b6fca955899202673b08daf8b79e4926c82e795bf8532bcaa7411c6311fca9b7a2e302301a1bf25f5a850c9e3f500a7fbe506be1c78d6c6b87bcc1cf275767fe7c7a7c7ed21287964f1a7e35f0ef668b340643b6b39f5a64307c2b6aee1d9c755f1ef6f6de19e06a8fa29c51eb9151f7b07bfa738f55c475eb4567afbb8787ac08d7ad179d1e9f1f41f7b02c56d46ca98528d702944d2f62065b75f6823c8f2e93069bb5363da8d75238370b46a328b93c65b8a6e477056d97ce054739352cc73aa0886d94fa0abcbe581b45d7ec69aa9c55c4b43b6253787f2d6707b0c5aa35a35d1d89096226eea6176ba0b167a3978171a1797477d865403f14176b722a65aadb50b06bba9763a09344cb8c8e3b3adc614ea774ac323db28de8e03f62414dbe55d36031a4a7704e4f7572d134f77c307c71a12542719e76c6daa4094d8abd68f49abd12dd071f869dcf464181f607b0e3fc895bbbff73687fcf037860e1a75f16d9d4f6402f91808cc6a46136c10b46a3cb8e973cd1b352551e847c1624be936052a2eeae91eb54619076c1186b5068ab7dac01527b1bdcb0048149e91e7a54820ed2d94890090172bd555b2b8744b848ee8b4946f3491a03333bcbe83566d106730a4ae2943136d27b8a4de775504cdac1306fe8e36d5452ad26f9893c35ee58ac4d8b33d6a0a1153879016d2455f353b374131ba9242a06b90dbba10df8c9b3b9a3289fc5c1825fce6586927ccd3841d500184189b9ea3b7bc93510914fe619dd15a71b090f4f12f1a7ce157e7ab1d65a93e823393e0e72f19b6c73d78c365262c69d299c2bd8ada8d2c2b19741039c07182ffa8244e447c5d871b3a61724fafa6b0b0ba53a4c567e1bbdd31cf064bf5774c11e4f86324f61199fa83a2f93203fbe49d87540b362d10e83386e0899d7155d348d1e08c1d5bcbda28b77523507bf5e681864e38f454bb00fe3280b268f43d4c3f69642bf0f50f1fa6b544cd279c11711d1fc304d732a97413f84f17c2435cf0c0c029ae2c00b85df2765f40b9304ce487ec356bfd085b6e55774913774852bdf831689c42b80ed0cdbed2ddc6dd58b73bbd9fe6d6b95709bc5fe89b5b4a364443f1c8f1b6c8fc84f600517a64911253c73dbb2adb2a2b2882d81cff2b135cf697796c671ba0b9442bcbbd6db9bfc739a302663fd4539c7ca3ca7afe7f8946d4cf91f2d3228e874a6496607191d33ee967d46a1741a8dc816d9217f7e221dfc2e2f0df672cea211e593d986d69cfcca4ac320a7280c8287552582b0f62df296bd89591f176bef9a5a36b7500c6341a161cec330f152c79e2bf46d2d3e76da0688d086a428f28c095075e45ff222d456d622a27b75237e7a20550fa4eabf9a54f5c66361d6c31e23ec5f605124d90291d6fa8bdb1138de26088b57417825eb81775412c49bbcc0e83e1dfeab9ffe42175abff3228a730fc13c9b0f9591ec1f739a2dee4a3113bdcbbda00804d52c97ac4666d355496c7940f670b80fd20bceeaa5de4f014c880a0d38395aff03891adb124b1ad2cc130c493b60c70ee8d7d49e2df93c069088566fb7dea9572f2d4ea1c2cb20a746a52782fc39e7d90ee75986eb2d97dba244394823a137f8971e27ae4b260c3b8b9430929045232ed4bd0940e89c93d11ceca30a9a17791b9b71cc6d38de49d6a2b4315f6822137944e52174f5c568823073cbaf22c45e7016b05fa3f61b14089a06171079c13dcabf0ef5abf493bc1db587299ca60efe2325125a7335df847e282cb8727d9458bb2e08256414144187a856ed917e98082abb3bea816d649fe6a806d983e555f4a2047b13eefaabb112a18c0bb1b2a6f95444e08af7a191c63bb7fae828b0543e2175233b80880bc5f45998b069d9f0ceaa600dff949f9796514335ba3be7224882b5481d28ed79a2b04a0e8d87a445de72aa2ec8e7e3c7f28e901ce33b83a3c485562821bf7f50423e2821ff6b9490a05004d5448bec1f1c1eb6c8abfeebc3c159efb0b7db6f11d045b4c8eb83a383d7dd438f56d1a9a7acd42bb29b15d05a4a84d91e830932253449e797136e47c6ae557293cee3111952329b67345e90229817702cc320e6f93949941741329cc724ba4cd28c1b5fa05d05bb6cd8aace684cc3e22eaa49d58b5735a9aa943295df412b292f6fd5fd97d2d2091d15d6901a2bed92400125328883a0ad7e6b95c69150d9b1bf7425609826a8b2463da0f8594f15388d92681af09ef90fad1854718340780368251abf3d34d9feb7ef18db3fd4ea4e8a692ca6a87022a379d118045cdec1e1863cb80012fe52f0c0df0c00f8975c2cfe84c5e19f7c29f883cf55e3e92b1496c6f16d0c42a18b0cdfea3a484df118be65e79e7d849d611f4a1ac8f02da700eca300331984b68a51cc0c67bc3b89e251069682824f9d06b3862dd3b1d8c29980f46246c1300b39d4ed6d0609781a5dac911df1bda3b3643c8b3c1695d9bf4ad50b6fe454047e6ae1ac5afa605774d1c1cf6803aa9f2abe70511e07431a435a4c555db13d3e7eeab3e84a2fd672a01ed51a4f811e1d523aefa069d2505a0c260f8936b7e93c2ea2594c0d86fc53b365e187d6b82d40e7d1d7a2aad73f71d4fd5eac8dd2f930a61b6190d162e39a3da043769ae46ce5c96bda6ad2d0259c5254b7a6ce43bb6e40e7e16234bf7b60341f18cdff1a46f3beacdd965ab621bfb79f66d33b5ba2c94ebcdc9eacf159983dd9fbfdf07aea3a66ac9e20be5a8554d933693ca1f555678cc02fa1cf386da8aa7e1bdc1bbbfc38f736a4b15db49f665ae97e9ad9150e9271aad5603f7563306ecb3408d05ce98e772840ee92aae5369a5556382dbebcc78f3d4341f132938ec3eecbdea11c865d86fb69d691e031c7621c21b8c1ddde84a4dffbad3f787ddeefed995d33d036bd9652cb380fd3606efff8f4f560f7f8a8df3beab74aa8d59403878a0950d8e40567c51c8c815ff50e4f7aa703b650c5a1c8fe9b4dd3f0c575ce741cf8ab5e5651124709150692ecef4aeb4913f57d7b722f368c4ec3450c20c08af9642b8d102d8334b507f5cc53647dd33a457eaec9a8a97bc2cba73d78253cf069ff3d7cda9f8232b49cae06e745147bbc0bcc5ea21cc6394a4714d2c77af83650dfaee49120ebc14da1d72be88762138d74251fd80f2eefc201f6834b2fefd70f2e3fabf7419a9c8285f16e1c8557c615a46bf86043da7930a607c9757a451b03cd885574d1228c186bd6c99a1ec5e45a6d16b41f5cde0bf31960482db8adf0ef9538d3e59769a58051c916ebba1f8019823e69edc3bd88264136a2ae77f9539751f2dde3324cb197aa02dc3bcadd41feacf0777008478b6078908ce807ad487c728847b756978e22d4b87902df5c61ac60c84d4dc928ff0b7646fd9de9bdf924a6129a5c80ca4187bf2498f84f0616fc532cbb246965c46c9a5ec31db6cd8f5c94eff343d010fdeb22d022b8dcad7228e9777f5eca8469c25b51b30be1cd188fc571512f2c09721567d6ef9daaa63a2eebd51c725f51e496fffabd4fbca2e1283fe46706cf0ea37d1254d2b4c998111a39697da0e7c5cb795100eaebbbb3e379380ca1b2f176106e1db2a8eac5d4fd7970da7b7dfca6a7d9020161e64f468358574a609dde2a176b60e5be1166699e6b5361a567d1bf6947c26d07eec7f6d9c1fff406001dd2d1be9cf5bb477bdd53f1ae6b364907eea03aaf62f17274cabf5de25dfdd92cb7504e5d1ca68e414b77146dd16c389464b836c422c3b7e791cd6e34a420d9f798043145f54bf2e050bdca691c47b31cb6e251995817c125b615602cbd6f57599ba25072813aca574aacd9855def05d50f2ecdb7533fb8acf96a625c95f7bdf46040f1f05efa6f7a2f81c6b5df7d79d86b697f0f5e1e9feef54e7b7bc64706488603e6d7b3fee9c109fba6ddd32d02ce9e4b4d2efe1a538a3eb24277b3a4804e2a0d29a0c667b3a380deefe575334cb311cd84244ffc5aed0113a6c908899f10bbe3cf552d2d6abe5c2a9ca819a1988979f01f2b31fc02004e265f2ecc6d1d51e2f16176fc4f9ccb0a8610fc581af24cc719659cabdc35ab8e3cb2ac92da15ab163fc2606ecf21c66a5432dec3b7657f6e936d86c39dc7515274b8c475831dc60dc67b7486f19cceb2282936d88e6cc8f39fd772358550b42bb17b96e6dfc52e9b1608d51ec89a6a1d0ee20a9a75a43e0f8af50706e48101f9728a75d9f628b81e06d95e741d3148a8669b895ee06ac3352d760ba5c7b1eabfe241c84b2d78c15fc2ffe0d4eec2fc600f5ece078b3f0bdb835d7f2173823a42db0f74d44ffbe94c886ec5efd5cc2fab858aa2cf7a7c8378fd1f75dfbcec9e7a74a1fb07bff5f606fde31314b7c9593b349e4b6f62aed3f61bb55598f849d834354943d5adcb11a09e84002b7321016f298efdb64906f42adcee463ff37ab138d4dbe621d7251158509323e0e7f1811d7860071ed8812fc50e7cf96bb74f3f14dd8c067752e7f23efc3a5d5ee1cb8495fb64154c2070cf2e0641f6297ca3313174bc97597af3865b38c70bc345715011be6642318a176da303783b0fb3348e5fc16755d1743df4cd214df8a4cb117f0871556cd0b24be3725d34df9c2fe5f9e25729f3f85c42be6245ebfa2c91edcc6dc63ae6b7bb78ac689a57be9ab2f65553b66a3219730e25162b4bd3a2520f8a91d06e618e66293b6f193faf2c6f0946237681c4511815fc947023538c903b433601f2a4e434dbc8e733b862b092484cb120f4439417a6a2866c6b9e0e185cefa26cc81abac21084460c320b191e3fd6c35af139978fa220d93812fad290210d5376ef408c654c943784b5d2844c2152f888348282c434c8815361571d4dfebd985282a78f66ca44767393e429b9a1641a5c511240929534a18c5560700dc0038666c5e2223157ed9442d9f10715d52a2f9731acb30f42f16646c1aa230ea31f8a20a3c16d15a01a9eeb1a6220767cba3a7537dd69eac5fbab62eb2569aca9fae3d52dfd1fff5a5709282ee407cefb81f37ee0bc3db199f568c6bfd045de2227e98cad91fd914718c6cbb2aafc8714edff2bdf0cd38c3a0d34eb5861fe734eb3c561949b8692103461238ef202ff6415349bc9b3f9e525cdefe428cdbbf0f2d9bcfccb466f8ef2e3194d3a06433ac3cd4066e99136a0a74e1b3b81385f46200d74aba4a383824ec51097b43848a2220ae233adb4d1540caf9a6d7f31a323b55ddb6aebdae99815cae017581f13e36eebd63d58f087d647a9d0137e1a3ad3e24ec3ef52c06973603dc474d90c15337a1b8f0468c8af5093cf6403a9e78004a95c893633f9ad3a1cb60e044f2c6c132c8c96e8d05798ce8e098ad84c3f65785a0c9c6f0b655ba9ad592f569f1d1696c8f00dcdfe42ec4f4745a38281c7554ca4b680915c001c15738688e6db6430e2286f86add1f0192be95f8c6190edf9852ef6d21bc8b623e0d9364a8cee65c9f9ccdde27c662e8582725500b50d390727693ca2990925f59dcd9a9a40ba583ba341164edaedf6c51a83173506d157c87dde0c30ec9012b64316f153ce2537f4da4dd221176b5c90a24f2b9fa437b9ec9844ac677c78a4334816a24f09976c2c8a6fdce3c7e5f9ee943f75f4b1612e98cf086701a7089f026cf0162446c18f199d06904b8515425e90117b992469318174816a096ded6d108d81d52b8e935dd604f3117147a282f5348946541f96316eb06ed2c829e578c12f50b6ce28b96c3a40f20693320960ec6828849d77caa0f8f8d194691813dd81cd221dbba3669de002f2c2f78bf80909e645ba9f86f3bc1ca18926e3340ba9a754dc6aa5533ae3ec4547321aed97c7fdfef1ebc1616fbfafc8ad413b8cd796dbc34f8140094d8c3ed4f7a661cd7e20ac1f5279091b1baa951bcb80c2dd4a6f430c783138393e397ed33bb5a663f760ce8aa3917346bcac549f8ebcd585316b8539abc6115661840ac23070a40cd0f64fbf58ff2c4ba93ae5bb1fa993b12cf154b5892d5c8ad6a395d5e7d8a8430193d1b3ef464d4ee035a6a80f1247fe9dcfa961dc064dbb87f399abfdf9acd4fa7ca6b7d5a85ba7442db57a3c7288221e6a136bfbc31a6bf5dd6d7231da84b5ad54d067849ff122cdb2af8e10eb3202c62f2267ecb5cd4d7213440599274514c3430979b728e762987841c66cbbf045891d42bd82f51a2539a3c6e9984485a2727fcc695e7493680aafb0fd2c985277a0435d4a8ce3ba84c3065709a26a98459426a72027de6a1915609f78ecd4a633eeac0f5c368a9af2f56b33ba9f0de1068a06fbc77bc7240c127243494caf69c61eacfcecb7d935759c206ae208f8c88df21d4ceea580f2c81089433b81f775c5f782eaeb11f47cd2fa9579737eba19762364aa615ad0a908ada5c19421b0686f077efc50b0d9c3b25e548006f88ae3043bbf236a01a2372c9c29c35adb71bdd89832c1309b0ad4563cffdb4c6f18cf33ffecece18107d0c607c92e2522762ecf9a994f40eb9626f14264d604a66a9e84695264691c0377e657eb985cbe33e9785d3c3556e07d4a7480df75e37309c89b9b24151944c9bfe67941725aa8c47bec5c2120da7798eaaa67cb528ba9b3d122fa81a83c506576c83858c6fcca9947ee83442b0988f8bc4d466908f216eebe29328898282d1191df33494ae234b9a499bc68503dc088289c6e4c9d880b2e9f0df746a9ad32e2bc5a9b641da11a44d0e4831919d4b680114313f22f6ade39262f696e653aa2e6850daf0efe021ad2719ae1bb0f53b0e7050d46ec4296af2ecc2229f3a18ce3209fb00af3641cc590e415d02ed71f6120658304be4a9a2ac4d9915a704e86b4b8a134d184882a1b2f5f1429b220c1c7851ac32623c64b4a629614d13868892c631800c337d8fbab85e18d6f79c795b7976f096c2ddb89badb08b6f155bb88ba74e1f40c6ff8282952721dd11b9e07745602206a22684141dc4d823826a3684a132e01cf2803ff30a60e382b71975f01afc11466d785c93102759014e99b88de34ee17b268e15f0558cf53c000aef60a61932ff349a5e8c3f4da4429c672dc4ca27042b609bd2edaf0b771bb3340f21adbdb20a56ff7ce76bb273df2f123b10afadd9716cdab77d92fb9ee2d6a754f0410efcc92b586ce71b203894b7c2496f8b2bbfbcbd94977b7e728eb9e9e1eff0a02046f21a42672b23acb566332b355d45c2d096f78ecc11ab47437bb7189ddc9c55dee0d9b79e6fd22fbacf5fca9c631902fda2587e07cb6ca11b82f709dcf3e07b0ce673540e5330ae29a24ae24713f85795b5ed5509c8be6f54c8a18cb398d0a1ea3542a2f21dfb36e0bd722f92c637735bb5333d63fb6af3649aa110f4a571b78b40bb626c0ab3460f3aa361232e3d8aad1f0b7dead61f753210a75a8ba3cf61672769a8445e7a70da30a8dcd5667c295114f5e825a3d94cecbca86268863a1152fac8c3472e77f8de2f8948634baa602b626e76eaa923637c901725ea6c49fa1067fb3e52d8239f8a01a28bde305e3fbf4b70d3be0b277f3ddf6487fb731a25d514f2311a6b242054df0d171f319e71ea3cc30d784aa3b5fe480b1bd1c47d89fe68348a624d4491e5bff235957fbb8948d5a95875ab234b76ad84b75d4839dfc64bcdfc94f6444c7814c172157ed78c13ff2bce04522207733b11ec54be8d2681cfbec76c3385a9ba3d96d357db613bef5ac9f786d6efc24dbe264c4a9e5431b2228e45038e930b828532da33f78341eed936e6ca52ea33ab656c224e3c1d4eac1d4eac1d48afc59370edd17f486e81fef1d77005128777a68802303832fdb8324bd1169a402329c47f188cc18bf935c923fe65178152f9af51c21f623aec7b8536863d1893fb4b1a8f1598db434b5cc12bf87659256d5458b6832a2ca669ac988d0806a8d973f3e248cfe36c938bc3e0b932097aa351ead59fbb2ea23a3c287c1d80a11ba4edf1d55b59091a30b3366f41d336e286f067d8dee578ce6d5604c934784836892abfa34ec1f1cf606dcb1c1e7bbc02b0c5e75cf78ba8e83e3a37764dbd8a8d5e2efaee011b1b293aa8c637d47e378f1a0ba453a7e9fa583d3ccde857022e01be34ab4186be56417f2d5779720dbb0c7e72787c7dd3ddc6ade6b0bd0beda9c5fd1959ac190457dced36aed9d5cad8e6326ebaa20dc61488b1fd98419e0762769ca388a28a6602357626ae5b875a32fcbabec81b17d606c1f18db5bf2abbd985ea31acfcda652517e4fc93576836c7417e693b5f7f29dacf0b3c4be601d7f293e4d425c06eac29fabc7e95a9915d236bb144f6b95f817bbddd33d0ffb521dd5aaa9bc39e55cd0a153fefc8b626454deb9801ef5ae5b5695dfb4d8ca79c9cad576d4016dff4feff4585eb5126c3e2111ebbde6550a67f2e1167db8451f6e51b8dade1cecf54e574958fa1f100243c6deb9fdd5cbbbf0debebcfcb35cc0bcef2f7507abf8f69756491fbf387caff84d73e70ca07ccc7a372e47d6d5ee44be86db3dc81d711ad54528b6a9de5da8477b93135641a1ea5c5d32929ceff67afe707b3ddc5eff45b7577798178c33340e8de7360a5c75ff92f8909b5f2102bedf4de33898e5f43d98f90e29c3b134014f923cfa80760b798bd0643ea559c0d06742337e487e05cbd649905c8269eb8492f7a8a47f0f3611e02648c6691ca737acc22498cd6892a3050ee55d77a0276cb6fd6791cde927423a64f7f0f8acb747367e22c727bda3c159bf7bda17bf0e8e7e167f1a8d812dff443a50c26ab04e0e8e7e56adf907f127a4d4c31b9bd33746f6a53136981da00e4433c9b68af91588f024e42bd29f50324c470b76ea32bac14d56462d119e06bc2d0b0184290df2399c7cd6845741c4679d15a2b3dfb5765b6847c2264eecd9beb57f5fac29005eacb117e016fb1ff3f30b7309b20f32a49751923be6cef8a136e90bebe438260134620b0d124663785fc24eb6a5f65cd8cab07ed82cd472ea2fe8e0e8675ccd13b51af8f6a2bc1b214771f72a70be6e4093460edbc43be3f194c549c9294dd8794dd26c1ac4cddb2c03d7f054ada1b4008cf14526414e86541c373ac2e3cde65fc224be4a7e57c1a28a94f736cbe82cc814291666e981dcf12811a764d5f518a70d17f60d2ecc2a71af50077b794782826ce0c2dae4655a4cf8f2722a8214459c43fa0a8cafc1507b9c6653818fe0b08cc6dcac636dbdb90b4505f22a44457a714b9820349e19d0f0a02a84d1cac5ee49d405f78c82286a52b8117bab25a05001428ed641c16b14453a35f0056bffbebdb5325273b20aeb7daed6cb3e3106b369934ff0e4b6bf6d933f45082590608a65de458ac9fbf04b3279852f1be52430566e3a0f4b7f780b3c6db8de3aa5cf086795999647dfba58db52a1b63ea1f503231769ced02964f42c49938d2d81448d9471c581f829098fa42f1b8067ca5135695a5602d810b340e90502b94fa58da7693f10979c3ae571d82634b69c0f695ce13f21e760f6d30ee3882605529c172e974297cdfb67dc247da38c99db11d26c973652cbe44120f53d18bf5ab6847cdd7020a4f968c9521d811fd320eb47539ace8bdc70d5b4ac3e4d3843df6ef0816168c5b01596afe5dd740d212f2be746d5df27cb0cb3f63201790cebdffb5da3c6fb55e19721712fa3d232815094efe2b97b13619c42c366b9f66e6bb9e4d0491663b4ecaa90e6a58138f5e5b87a45e94cd47e8d5112b53eb9e4e4d7a898f405d7e0ead38cdb5873f607473f1be9f4baf3227d256853518a8bb8bdcd2e4cc6d571ee800ba2d2a408a28466673c00e39f36912fcd76c7d1bb96c34d853dbca6d9384e6f7eef98b3db21176bd7d81748d8ca2d952f9ca3699226563b45b2f45531a25c5a9464de3aeecd6103409d3828e8ef8dad268c647cdbb858235f3b0e6a533325b9d30296b94d709f78e563523313fbeef1e161f7e4acd722866b7d29180a0f3a696286d4a2dd3a1fbb187ef0f278ef77877b46f90a77cd48eeaa2cbc580bb228d89844a3114d2ed63ae491f77c79cfac5c9d930aec1800135f31a1a22533adba15f7a2110ce7a66a3004c4f7410f07ed3673de8f757c31ead06a5dba2dd93a24139266373dd6f8b71e584a48acfe5700a5c30fc4c95e1bacb284a4e4fe3447773f3b073478cb86f8c420b63e3e90e8be71d5d7f5b69fd2e38dead873cefcf8fcfa8d607877625a9cec8af100b06f7af5e76d269b267b340e167404d3e0d1c2f5e880faa154f4766f9ea165c1dd41af3899fb3a6b2618ebf07c7f1b20569e4bd730ee9399df444538a9d8096d2d6190531f183bf7c6ab7af0daa480960bf230a3c195f6d870ce949f9bfb99a94930974c879ba174ca35fc9b59d3e0855717462fb2b5db674a90eb8ed0a70a8b17dd6b9d7f73dcca6685327a76c8d3adad8b92ad0c9f14281d9d1a14db6246c880bc7ac76f1ff48e0f7ac7bfa5de1162bb51925088a833a5844e67c5024dcac64188f2e57c92de90f98c817a9486f945b2b9495e75777f61ffed7051b7ca1a29c2455dc2dee4741664ec8664d8864dcd4494641a7cd8e0aac38d19cd36002d93740366b22167c28edcdfc54ef62e49ef940791a7cdbc886253118acf0950064c21bc0b38ed0a954fdec2f31a8c4640dd82988715285212cef3229d46ffa6ec08d12063a71b11b15f323862b401691a1d81883eca31e417845b8a128d6830ac7dbf3ba1e1d530fdf0be45de9f06a3287d8fea8cf7677047bf27431aa7376da9c64471394e7d5b176ec3a7c620e05737ab17c4d16572908ca23028d20ccd6fcc6f2a6b6875fab8a5f63d91e871d7e8a8f4596b10478934b535b2b72fc9e702be2fc2d9694863b3803f86b572fe45abe6719692293f022b1b4881a12c06419bfd657cde3501637c92157da64f55864fdcc3c7347d5a6ef8646e2fcfc057958fafb443e233db12570e1ae97ac4ffe4e02d27a50179059a5f2d66da5fbbcb6cb396db421f1ff54f8f0f5be60eb44803e272837574e8f4d352e95e348fad5033a43e3c38e236d480917a61c96b2bd42cab01ec53992ac7dc85b279751d4332e9f16e9b89716cb09392788542d53e5c65d334570e14f4d5827d4c5671c5720aa060f30607477b07bbddfef1299f7c09119b2d3cd12de36097132b62321fc667aa9409f8beb94bc604e8c19f30018a3f8b5926767d2f56995192d0ec90010f6e19e1a75afaec6c62d73573a3b3cba69a12954611c4447c2e5963e2ab14ca723883722a1f3f3ad6b243ded693825ed14507c8a09846a578d4c2cec1eeab83c3bdbbcb5dcf7e3de8efbe1a1c1c1df54e07fdde6fcaffd0b5b2f2b78ef6ad7e1064bef479f2f75f7cb3f98e0b73970be039b7e321693a7a6af312fea621e7b87445817e8fd8d3f6f3381d0365f99aece044789c6b864281caa6f12e7eab1b9804099fa284c052de851042075e3a08a59f850c42cf35a9e0ad3145a39a653cc9d80c9623c96977efe0d8bdf7b8867a5b7f8aa319ec01fb5473e3719fd5be8b67c59d2c6a781f7e8b1a5ee10be70d4a46b4608ff9a46caba117b1fe06e5f04607761d2d6863fd0ca0d776146d73680c6dc953791a45202be011c47069d1744a475150d078812fc5686cc494f20784b6c6f4daca78022c9b70347eba5509668c670866cfdeb0f84e464bba3609e29b609193081fe708c1cc886bed0d1a22437e5c2f8b71ae5e886a4fcc0c44feec4855c14718c7abe73faa6180c3cfc0bd306c4e14c5d8228e12836d2bb5883c556b316faee1e47b51ff542fcee0adee6b9530c3b1f32b65755cfde6df7dd5dbfde5e5f16f6ebaeed8f37a4657523ae3a619f6ae6136a2b9087009318b39cd18eb31e8860baca12bd9ccbe3d01f45c84a10e59f0a88a2bc05243eb8e44d140b9467db82fd145df7e044723f71052b5e98b3bac0a6dcaad9bf298185005e69aca2289f4867a867fadebce2cd88907a7b007e5cc7f9872e60b3a85498160abb672c3eaf5b077da1ffcda3d3d1aec768f767b87038c7c3ef8a5f77bcb517a7cde3f3bd8eb0d760f0f767f715538393d3e39f3c521c9b234bbbd5e45b679392f0a2bd8c9103ef17f6cb54f14c4e9a5517d049ff83f66ed83d0ea3a0ad304fe478b80d28d6976a7f87bd081f79d03a55f20eede2ea34c71c543c3b02a11e9655ef1b6713c0cc2abbc81dafae54cf46e9a8ca36c7ad7e12006ab7b341fcf0cf0bc1fbff320e9e56130a3bfd08584de206897bf9b8d8ee7451e8de86e1c855756bb7291deb45a4d56cb119ee12e67f6c252081aa1b9c2bfcd498734c6a3d69781faecaf269fcfb6b7d4c2fe6ca69d83a4203c4a20fcd08baf6916078b259ef725c873b5930bb275f453a11e3a47e899ec75f3aff6da4420415849ddc70ad227cf5b4587416d935f20cbba124809617568617ce20ad4b561281b54e06c2ae21e97e88cacc2286d10ef0a43e38e6e8d669589f7d01d64c17847bd3cdefbbd52aecce8befe180cc1885b3f30ecc759f46fda21cfb634196d01964e1c59ee6bbabbc747fdde51ff4c4e592aa1eedef7fef171bf775a090cc468e36dac2f53bd662132a0ff88336488c22b1319b0b6025589d23c7e5c6f527c741f49720e8e6440bcb2cdc7987d4d5c0771c4de62e577f5ace4c824454a48d0d4edcccdc74bd494d76017b96acc6f06fe92d38d22d3244f63dabe09b2a4e1e1ba4ab6af987e39c75e957f9c359a3085fef891988b78241388dbcb74dc828f1f9347f658f5e7af984ea701af1cd5718dde6d60839f750a196ca4f0b025067af0034147c8a7d4632dd4f6f3dbd0e60596dd968962b0b002fee48bd2a490727a64476bd5913330b82bad9d189358eb731c228f6568096f4c5b4fe70e5b556c5ad321176bc7bfb86d4c2fa491289f552d0106d435a517f0a9b66529be0e1e24170f928b07c9c5df239ccdd9099a0220e93fec9e9df5ce066707ffd35b41527117ebd1300ea6b325020e481c48a9382479118457c297b21da6d3cd60f3c9f7cfbefbe6c9f3679bdf3c79faece9f7df03c284411ccee3a080a01b594866413191da78b24d9e3d7fc18d943810faa7dddd5f208ec26bf27cabf57c8b4cc9560bfd1b4f8104928068bf5a7ac91679429e902df1ed2bf2b46e8b0dd50475924954c0d92ed222880926756604e4eccdcfb088163bd098622e2fb2f48a6e8c827cf295169e03027364942dfe9ae1f9e626402fef6c6e8ee8358d59bdf634fd7714c701901a9a6c9c9f6d8ed230dffc950e37cfdefcbcd92df8b1df64631ec22cd0de9951454838cdc803cfe4358f210ccafb1f596532dafed300ea27b2f913a473632bc2ae1acdf7605e7b93665739234f411c936196dee434cb3b629f4ebafd5783c3ded1cffd57649b3cfd7e8b6fd9eb832344d36df2447c3beb9f1effd21bfc7ab007959fe955cda227df2a03b51918bedcc9420dbbf09ba861f9e7b151c3beebeb61646a288b49e75f3191b8ca7935531fcd4c9e07bdcddee8927654dc251ef245c6a8c29e8a94801327202f6a700c2d8cede1596233cb2bfcacc1112b453fb82428833fef31a8a2ee791ffd5b6aa22e69c15ed612344b2d72f9b15306b1b808b486c5bf9b1efb5c71628f8e07eccf77649b086c0004e596b69a052d43842b4a6724e7a7885d5157e4261a151378604439403328e074b385e5a4314a6f128808354ce70579b235fbd06c1bd68740d37e854eb6c9eba098b4a751d2b0cf71cb3cf05f494c6174610046c26413c6d481879d1f8fc73965bbacd3970de3d757a4c1b79b1fcf1db2d57efa9c74f0cec2c216d96a91274d84c4741e17d12ca664eff8b57466204196ce9311a07f00914b439ae741b6c0f4c48c10c70b12e5698c1984b99b1bf755dbdc241bd054761725e4a0474629f0a8f97c06f7286bb609fe600483682dc8749e171838ab00ae8dcc828c6dc5abfeeb43d15b5b1f846f7ef7e8e07597316c624e39c9af2ff17ee65df0c782f0a9e06626214d785ee584bd5320b78536d052619f6d6e5d19ba7ae50e6c1c97cbacecf2622dbfbe34644780da1dc0aa52f41fe3a386c41dfd47bb48f7a30f74d478aa648fd711bd79997ee8c823ff063f34b476cd251305e66699f1a77e25ab341f1d93015a26aa5b65a457bdee9e772025f694fc45473f82162cf7827c126459b0302a212b051c5475d3148e7cc720004adc6545400f5f545f417e0198655822ae05d75563dc46a5aba11c6c97df0b83a0cdfe32a44f50a4b9ee3764df60c5f0e178ac2e88d7ddc3c326f9699b6c3186c25f11282856f40adcbccf87d255ae475f3ba5791a5f535c10bb08c82cfa4063bc6d781434c2ae3d15fdaf60ef5b0544c24d45b934a5c51e90d32889a6f3294cb0080475435f2df72ef2cbf5369cc497dcd7b239e1e626bb4fd31bf9de136b06273961b54205786004233b7a2df470b9d11b772cd4754560aa8754cbba87baaeccebceb9f4bb477bddd33d5b4acaeb2217117c688887434be30c247e12f6b29e171428f230fd40f279c8639523d918710e278f8a9cd00f4158c40bc6ddd0d12584718da6c12525e38c2d7d19ea71226f609f4ef07544cc8251346784863d1d75fe68933cd5981b7e91fc46b649e3f916d9e0ed9adaa553ae2d18ad061fe42bf2d4d180c3518ea0c8aeff13f6ecfeec24b0356df3b1b648535ac248f650dc7294710c21dbe4b9a3181946f69cdc328cfeb14e6d11a7784f3e649c7810723e08396f25958436bfd085bbc1155d5832c42887391ca523da9bce8a45eb56b6534bcc9b94c4541c70ad2a7ffe8a7f757b284e32b865d65d0ca38c9efc165246b52fec0f9277edac3d2a8a1bb6d172ceeb2dd13cada396811f2c4f02d10916a2d781ee4fe0f528e0cf50dba7c088eea9ba0fe7197be7f20cd6842b7b31b2c47ac698d21c65ca39791f248bf7327b2dbef403083c71c398867416fc31a73a3a82fc5c3ebb81b3b858eb2f6654829bf1bc23785c90f55fe8629806d9a8774d93e2c7fe4feb22ae4140e00522fd809125143d0c691830ca1e15aa3eec2fb8cfa76335846c6b0df5aafffa90bff87e5a8784863a80d06240c1c79d97963182ec14b7a35c740ecacb066d83ecba69ec2c6dcf32cac6de439ed5085ecaa3d0623bc05bd74e19fd557bdce8b85a6473aa9719a1843e39d84f0f96f0e92df36e49456a7467425d0bc0e7b37b026fa5fb91ebd84a48780f5f3b84e19a2e0ebdea20d581cff96ca574c326d133d9ec5da0f858527eaed77cee41180165ba277fd649305c9112384e8311a32458883fb46278d106bc57fe437f374e033124fca927100e8607ece52564d2f8cb8cc42af225eb8e79e2ebc78f626eb6dc99f3e60ec9f3cbf37efff8c893194f25c5d31d2c38e259316455c6bccf92e257151d77f70e8e7e86420e7bbdf8f5c1d1c1eb2ef42a60af17c353831522eccdfc7eae28140c5f9a6eb9bce1fcc645f4ce98a4e663acd2e8b1228d6fd9104c6efc8e0ac24a0cf3435e556bca8fb5614526489b51eb7c66d7399f39e29d6aac012732ca9a8e23b031d18d276c86bcc4a6148e3c865e2291d9318e57d72b2d3346f65a1a2fa100f0143c908de54ffda81bb9c24d04792bbaf7180e4acda51da680b7ab0e5280077e20344e92ae8325289ba5f6b0ae162a5b26a66212740c8bd566a18c4f55878d47f603a00189a4195529172973511f501c59acf98430e9790d901881152085bb32535d050272bf4b2050251c0eef0c5c17d65906cad7f430b39e2c0f41001f0419ff61820cf2d9e3f969c1fb6aa6ddb44599ec213a4dafe9519ab0c71672a6b5cda6ec332adb493b312cd124117797402c913cd812877bb472f15cd92bc720b9581b72b054a54c164eeaa2aea4e4e51dd33837c1b2b99e1c8da62835798d866567cfd7594f0caeedb05cb446e84d14b168bca4ed524e95849334bb072995d68f5f46a555fa2cf8a20f702f8643934c0441647f39cd7e900ff5bcc12c2de0966df283275dfa73f9f1a84e4ef0a01abdb334be1d7a6b93d458950970f05a59dbf3983020a7387a4f4b17775fef10199b5fd3b05d6b62d9b76b25cb8f95718a1e34400f8cd37f18e3f479ccdcc56de06282208acccf593a9fb540e5d32227e98cad95fd81d1cd5be4bc88628d39fac7309ed3591625c5bff2cd30cda8399cd036d570f2ffe79c668bc328378deeff605f37e2282ff04f564163a4ce684cc33bf9b8630f7e7b6128fed2aa1bcb3bc8568af417333a52f0da56b06ba7635628ef2633de9326f2c5823fb43e4a851ef51074a66987e0b74739e40a34451085da4ae4fc9a4e87342b879de2b79b196ad75419c93b4cae449b99fc569a9de1c2af03419f6829dbdc40bbf074e82b5c63786a1a74834207693b231886c75938ff37d887ae67944c820c6826688580c85fd28466519893461824eb7839fcd8ff89d14386315148a600b7bc2946926cd3c0c9372906691cc505cd18d1368ad567079b5464736a1b4b1102a6cb83a05d9266124dd8c9aa84666f80daacbbd0ec6ea445b73e29cd5f7d66d54666977f7e62fd9933187059ff0ce958b947bd8055a5ae3ee90b1dc202a79d92238d82fa993e4284348db17e390db270a209950899c5414827693ca219abb10ffbd26eb78d4ac097f08145bcbf69b018529e202aa68160eb255a22ae37d5f121fa4133c25d892863255a809b63ba74f258636a1c942ec321b1a28e71c37dbd324c4acea9d934c06deb37ed316c2937fb8fa9b273b4389fbd50326f2ff72e6fbfaaad0ce645ba9f86f3dcf40065ffa1093854784a05951f184a18f64d0f7de7d71730e41569dcc4f5dc7e79dcef1fbf1e1cf6f6fbda261be8af6fb33b408302986ee4a9f5e14accc6f0e02061f423c439e9da530e49addc580614ee56068b38eb1df676fb8393e393e337bd536b3a760fe6ac1848a3e4d239235e56aacf20eea96e6c013a1bfb7ae7650ab5eb464530543a6504213bd6b13047ef4380cdf2c1900aa0ea1ecf67e5f47f8046fa05bd4484be6449bea32b67a84d469b807641ed703aac6768d44e7a54d029bb9d9bd55a7d035256c81f9a14e62d9e32387154233790573bcbd21b724517049e14f858c1f0a6e466c2de70619ce60a866038c13ae6c613ecae01b381eee9e9f1af83f313c6215654d83bfef5c834d480ba95c61ad5c60648824cab8baa84bb46b8d1824e05ffad418e81be456cf8f9a7e1e0762d6b079b5fb44c14d43c5a441fbc72e7cb14c95c849dc670f9fcf1df5a0b7030bc2689be583388293b487c467516c5899a99d8381d594e8379704d09b70a891764cc6e293a92b9fe87749c6654e27b5ed020ceb1167bcd931b7408c8685eb07a5181478227d66f9b7063181aa5f37c1f0751d9484669088f236e67c00b5ef883fb6634a7c5318678703c38a018d80eb72dccad7682c393ed0280b1ee1e00e75bb9056196c631c1b503ee6234d3eb88de700f4e017f95604ca6ed079103f8f28da2294db814228300cac3d8f431b05f3afe0ce2b24e1b67875621ec8c1d2445fa26a2376ec866f48f39cd0b991b6e3f0ba6d49707d0f552f131fd36db1fb858f400f44c8c17030c25514e68828f8fe142bcba6c1b36d56f5b7271f09ac7d7097bce57462e25e63bb70d4337dc166beaebad51107345d4c640ce7c2c4141717e116c450a6461643925a27d24a6764467975c21664a86f43292271f9012a5d7bcd38910222049613fdbb7c21a9d1638e909db3bc90e3837cadd50dbb9ba4d8836d2e7d870c13a2ed97145efdc9a14afa84322b776de05e5bc5803a545365fc1ea0f2f602e7eaad405624dd3e5041bd7530e314e6c1a89e8cf523a5ba4283ad7524fe7b38c06231114412073b572c99481784425164172532e5bb4e09542b0b955470f5493d0524f9da0269afdd63bae1bcfcf2148f404f793f3d3b8799deb3223912b664c61a0cbaa4ce29d568f6dba8cb467c9d93822da79446ccc5912716120832bb418cf7e6da675b5d2f0f2a7d1e3c7e491acab7d5c7aa5ae7a9f7eaa5c995bb663ac0ea53bd679838f6d1eb8e427b833eb05d3e3f2a9304bf35c933c71fb4b7c3578c2d829b224b64d7fa8b976b0a6b71954b632c1087a522b130cbe57401da8e2de0020202dfb07a97d5807e5c9fa0bd9588219ab9f9d9dbe0e92e052c51261846596a5d328a76710cf20a137e48c160d23bb1987ef24c84fb06eae49acb5af0e1aae3a07e754b69902735a62cb2fa3bc60474876293e35786bad5badbf60349215ac3ec334c9e753da4d46dd9b202a1cb3f6d46858b94078ff8ccc75b32c58b4199c1b6a12eac6d426163254d7782a0e0a3e463b8863d1435e3a469fe4de81aae8ec546cf1b6b9e50d38b70c25e49206e9f05f342c7e8d8a498aa41663f91ca6694e1b793acf42da22f44318cf4792d500276128526ec262d75181c3e6c1e503dbfa376c056e56dbe418866e5fd145cebb6bca8a5774d122915052a5196944649b6cbd2011f951eb851ff71724fafa6bb90b57943109aad2dbe8dd0b45f7c45aa497f0155d08dfe0304d8a28990b3938aee0ed155dbc931dc22f9d21e00bc7bab8199ab20f3486f2a85d66c16cf247bc2934ac9b504cb3755d3f980effd54f7fa10bd9aa8d9e63eb3cb450188413bccc229abf5cec42a67b7e0a7fa5c1d5eb600678641fe74b5aec42d3e3614eb36b76cb221b84b9f25b249d8132573be57fe020fb69264791bdfcd32ae3dda82d8479fe027b211afd42170d318aac979ad321dba561db97b46888eec4a5cff6b2d4d4ba9aca5de324db3741114e70f5c67c4879ec5c1bbb65f7d874608255c5389f9a32514473f8dbed49090223ca5ee1c606c08acb98e51bbf72f64e7cc62d97b3171b5e6e6eedb8a37f762ec499003aef1c2f97e3b54a9db876d9aee3050a83ef40e9650510d816b0cfc83729f602778215565266d6145866d429295e585ea15152083e89b114fff80778c30be2a26ff927e34210f6027cbee2b7a2d7c83143ea2cc99021f593bb00041b7488649b3c41a22dcd039c345bbf1ec8b6aa8cb45bd491fd32121f25bc7ee9edcc27aa58ca49901fdf241c868b76c86e5371b731f26f3da1abe9befd009697b1c18dcafba0641f2f20ea319e285d21dd591ac7692fcb52e9ffbb1ec0b70d4458e3f698e7e2b66fb1bf7be331c88be7397b8ea7f007f0f765f64fef02c7e44748dd43fc33f66fb4d1980e555d04e7dd54a55aa3202c5e05e155b9362f30faf75d5ead6594549b0e9c06a86474cd5e52018351d5c56bd3ef79ce09351e5f3228e874a61df101b7dd649f5d723cf65d1e7a56f9ffe6792648429eabccdcea33d670992af042abbfab68263bbc8ad4685a01afe4345810c556aff37c469391ec187faabe8d6255db3f82d501433050085ca30b221b44ff66ce26498b68bc384e8e687193665767a285fdbd088a796ee9e72bea88e997bbf7aec3aeaa08fa35cd320ca1cc43fc65e8c5aa07f90b25bf8ea5fc00cb97282d82515004a25cfc6e69b43362189f8b1af283ac1284c53c8801fb4fd2380ae5fd33a64538c14fb232388c9bd5b44fb21a343d85309cb9d11dff6624f4e6cbb7884bc3848fe254f23ce3cf4e6c249e308a9418750f927388c5cdcec8e3c75a6b90979f5d45b31cf536ef194ee39bfe3d498dd7d22c00d5e6705e90f7799e714ddd7bb508f4e138c3f30347e7e3477da25a2cac47799ec9f96920c629e26c1f3f260d36bb7e7045132439225eea65544ce6438c330bd0122f07a0d61bf86d7318a7c3cda7a3efe8b3ef87df8db6c2a7dfd2ef7e784a9fd0d1d36fe90fdf0f87df3f1b7d3f1e06cf87c3ef83cd3c0b378166b58bfcc3ff397cf2ed771b874fbefd814dd2811cdbdb643d4164de489378b1ced6eaa9071cd546908c36788bf526d9119fc7519617eba4536e2ce1a3b8f163c9fef00bcb2522e7f728a7db8d3fad53d421f6f9d170b743bc882c2ab80e848ed51de357e9907648e97856909a4e55a1932a7688931ec23dd421263729c94047fd290455c89ab4c85b7e8319bd56ce4a92abc78f153fc9bf355b8a5ae9c5e263b3a5112bbd82fcda6c193b60ec9701f977554fc8e5e8b3f4395cc24a05326f957746567ac96b6d4bb6abb1d5d4e4c0f92c4d727a00f7a5a8f176eb9dba4e6971eaaef4e49d4e5c51b98d70a95e3c589ad17866d9ba025c5fa719edd8b06ccba2f6304a46f6935b5f0dd42c77c00b9634cf8b202b4ed238061b23bb0fbd746947e9aca21f59b8a41b8c1afc4f3c5576375aa1bb9b0ba94d1240cfc4e6d87d199bd7c0a0aee20d31a1248d47a22d1c2ab8c48a09cdc07f20484470173512e714b0519bfd32a2fbf1efd08cd174fdb76ece2b180ef11ee41a12d167ab247d614ff6c320972b619dfff9a909b59d7944d4756aaa6aef761f3e0f87df7e33fce6dba7cf43fa9c3e0bbe197d439f0d8327df3ca5010d9f06df7c4fc7cf473f6cd9f7e137df7dbb71f8cdf74f2c01acb17e7e720c6b2fa4f9ca384b950048dd45dcd5bd6c2c99e8f4d6659d568264bd79e22c8d5b894fcfd87f46928d0fa63e25a137fa7354b70e820df9e7217ccfad5ed5e4895962cec56e264b25b478b11db26073938cd264bd20054638e620796f00f33d1e1d7c70409ca2f59c51ca91d68b8a61c4ca928cc670279128c1a84961a02cb7b4e8f61a761659faaf20496ff2abc8c0cd8d499a5ee59bb3791c6f7efbbd640cccdd16cf25d3858d2fdaa8ab45b1cd8a883105bc16ff5dbae4d5596b69f74e499ec9ef542938705d21dea38b6077a53dd2dee8d655e512889a04d1200d5d3209c22b11fb2a8b46dc0fe826003fa59c8ce659945c9282e645de26fd09553631b293683a435d2058624002012e72784ffe35cf0b9ebc1cb30c843ca5909ea75db716394870b016224d46c1a67d84ae0dacdff748c9101958d528b9dc88a361166446475d32a445413392a7f11c267643e3309d2afb263e499fd588c12c68953e58d22d7e3a3e90afc9135da0a5593b95cd21e0f9331fe66116cdb81161e96ec5e2216d78f6b2e5db64315c5da1b88733934b7302489f7d7b9ea8d9ea8b2d1f16f701a1493ecfe8194642a7a37dc5b036844443e7627511b671df8bf36a1e2eecc1c4fc6292a53724102a43b2c19d28296296a26b458aa9f9e74911c550016ef228d73a0bae832806330ba9c167bd9739b75cd8d9962f6ffe8ad5212c5fc26da98cf57569ea300df9a801a092587d55c86b1a4b4e5d1f3f361ee4d6cf47ea418b2f572d87388311bb02f1f2bb5883c1d9c3893504f1bade1384a0e5a1f072315fa00be9bc20eb7c3a9c0558e77eb20c169f1e629f3cb8f03eb8f05625d32eb9e7fadd6ded604cf71f9cb5af693da05e413f149b18b7493af0f683cbbb78eff6834bafeb6e3fb8fcac7ebb69720a66ae60f8e40d0db9c47901bb68116ab8d7d4b7bbec0797f7125483dba06344458cf9a70aef23bfb33724e3ed123f47c23b424c5afb502fdee392808e9040268e12de5afe34bc9570f7442a4bbe97aa428d887118a6168bd99ff714ce440f97524ce36af352845a8dacd36ce7aaf24f6b7b801f00e6f8278730ff21a029525123e8f0971e688dfd6460c13f650812ddc6151e523974c0cd76f1c845f93e3f040dd1bf1e70bf082e77ab7237f5bb3fdf266f938aad29236786bec098aae0e0a8df3b554d755cd6ab95e26786d5013255f1e9f1f91104ec44242b258fd24179c8cf0c9e1d46fb24a8aa524818423d066d69a0aaef8edbf8548f05e50dfd5415ebafdffd7970da7b7dfca6e7b14835883527ae2ba4d8be5883c8a21bb631accab62de0b663475b247afc4591f74008229aa4a3075ea80c252422213a8db4e52977e702525be888faa3d3d21d455b4a62b69a11235d71212b623ffa423f4248dfcac446ec382951591c47330c77f9a84cac792638d84800a34481d562417a023eb60c94afcc5fc42eec7ac6cefde0d2b474ee079735cd9c1957f510f2e8e1bdf4f05efa3b64f65d3587c6ed73f8c248f804bcefc71ca328fa5b2eb864ff854aecf1062813f0b4618048c130a7ecf8a663f1b828824b9e8789d1c5a3e3a31ed9261b4ff4b7e0010657b9d38310faa87a1542852f1bd20921c0ef5bb672c541b0c9bcc19028256f58f8cec600973cd92487157087c4d5137cac1cc149f93c5607722a8770aaccf2a14f35188dfac1a5990f8067f59cd262928eac6c0bf8517bfa187317a5e4624de839d65c4ecb4b232669bba03cfdde58e96619afd91d8dc433b03b1a5985ca7c8e959702e2f09038b996cc367f614e32a1376f641d119212bf20989a560394d583a3183f53e5ddc2a9aabe15a80d27681d06ba832dba5c03f403324bd9ab280ae278c1ae1b9ae4ecc48790c20df549d1182f7a066476e1a5d3a828186ba96fabe3e986e0326d911dab1315111c793b4c9330281a72714d6b5576170a3dc0c334c175c4511815527f026d43c694c439c67a07f72408f162aec3eebd7efe0f8d1cb043ef5644b9cf90e621086235c310fdb245e0f1669da3474570e90a8d66640759e5c454485c800dd7fc61c52f23ded38c97973041d46ec21be592c744d5d6d521a50eab53dc2e09ecc4f3b044286891796ed0375423e8da0a2fd64641116c14c1e54684820ade5eab03e1e4d955c898fcc100f423761d805c87d800148f58f3a6d002b5c29d650603c216ec2d21369327ec6cb6d82caa4309eca609e3ae695696715a78e4b82dfc3126f46aa5a809953167e4845ec6f3cc97ebd5b0feea0b77bb41d0363e6948b2420c02483c85e4210c328a548d92219b0e849d61a42da6c135a8db27148c0261c66da393111d039b1ce5249cd0f08ac707ccbafb244f89110d85dc44714c26c135e5d65723ad2b38c3c6bada7cc4bce10eae627b75d8115682d1e83801f0ca1801dc1d5add0346a0057f3dcd4ac61ad4baf61beef62d72b1c6202b94809214bae234f8924bf9592fbe7e3f37c547ab8ee8e1098e24fbac0c2b551556c89c961ea3a97e74242dc4499aec63f09e1ad1916068c9b5dc66fa5550d7ef388c60652230dce0abaf354db4695bcb5c054cce0e2ae054277c98bc361deb35f0310707f5284d7a422da07f29338d1acf685ca31afc89f7e6f2b5e8a7bd69544819b6a8abd37b6794b2de51bf77cac8c175d5e9374ffeb538e89251d7ae0295c5d884cbf636d9526407f790f37d9e413737d98590b3776981016b409a918e791c391ed526d2e281a1dc29b8cc4dca3dcfa9b94b454aae69168d17620411971142e12429728ab28945bc2bc2bd1df6f6fb4b22c29d1efcfcaa6fd1567c2f7c28ba0e14b8a4c59159543501e89dec9027a443369ed8e171d8eced71d8c5a0214d89eae360606e9ca5b3e0122edc8649dd891315ad91acb92cbb042c82647566d6fd54ba6ce49f0a1f9d507bd9ddfde5eca4bbdb73c61e4292f13208aff25910d27e8aac59c3225455790ed102ef17ba38c9689eef721bbcc6c59a8cad78b1c60957ab0cc57ab4cc4e73e824f9d513399f69d3f0d09e1a933909f2a2fafe81972e268d49332b9c98fc6e50394134391d8ea319646bdc0b8a801d0ef66f4324976a5a34ef51894dc2197efc68123c204f8e4795f9c41412b330c82909721290f3df481285b45874045b39cf6946666c9011f29c6942f912803a2529195190bed28c112f12152de03e291ae662d548ae020ce6282779e388c623c66d4255391c46f5639c1d896418c0304dae69069956a38251bc009e30d32099b3277fbbf4fe559b221fdd124cf92c8e0a55a5a9c3ed4925dcd4204b235f7a6e1900a6ba63dcd827df4ccb4282f2a0de411190a0e0e27b08a206627676230833d938bd8c42b2b1013bc823a2a198348ea50e4a4754feec245fbb38a459c07e8817d4252dba62f446f9095a860a2aabe018ee67e994cb9122f7b1acb03c8153ea0abef46b14c7a734a4d1352da7f964c4d70c92ce45ac353a421f7594c2aa7e0c470ef9d97eb03885ab76b826272baef1abcedeb980b6fc34b830157f36bc6e6fae53c3e0468fbeee0cd0eeb7c8a913deacd23aa72acd2a0f7dce4bf92f77f0731e364d7db0a388db2253a26747f559761c1c9d9cf75b86e900ffb44ab654fd75f6d9d2a37a52944a139425161ce112ab0d7898bd104cad0e7810d2c28d138dd1825f3cf6194fcb611f4739883b28d80fa6999075e4d89251fd05af6b1aeb9ca5530a27678f77bacdabb5f3d410bd5c0771390cd6a347d781904d7e6a9abe64697c4d4727060619f8c4d53a1f3fba66b1a361be8e75a4a37752c754c30e7e6dc759d7cc305290b51831f40c2197c79ec5259fe320a965c8e0b1a181833038d83d3e324c5c3aa47450ef6af952376e78e544df740fcf7b6772dd1c89a6c1ace110885b797c8515a3671e800ad5c9bb782203a7e84acec9996081cb62ccc88992a0e85bcebda1ddb219ada22b01b02e9d30ab5a598015ebaf5503deb65c0d3e2b3f2b3d5385e3fc2d090269a69270672330c8f6e0e757c7677d1daaae5c04e5ac0902eb9a2612e839349a55f98a1d9777f9296d5ce4a328c3f7be71a39b6219af544671334683ed6da0d8a5e4321388bb8b4af6c7649a82f0999dd80e173b9038c80b49c2910b276931a1d94d24c519a2a7b6456fe54ac88f185e85cd7a1c2523b67c9421f8c4302db2f1a4495000282836bea18dc0fa62222d02e6b4913e26bb6fc23898ce20d2703a4f4679db5c3d7febcc67339a610d21cdb94c41c6935032a48b34192118a2824eb51ef294c729660f1f183f1de3eb0b2da6c07506c272b36f20cbc170cf16981c60d195446a4975b943a32f03b7c0edbbd4ad8e67923b2aed8cce28f08e5577e46bd59f4443cc6480cf037078059d30fbf12331856e8f1f9347f8e52d5478a72b89b0ff6d6300e2f0d845412d6c398ed9225b2d732015039690cdafbe82e65f9133f6accc7575759a68d201068416af5a64d134670b2b28c862d0b08506e1041c99ae9582ff2b40c0e83249332a381d3e172cdf144f5f3789905a7b2db740f9f161cb319c620c86ac47c7fd5e87e003ba498ac50cbd3bf1b95edca432ae4e0e8fcbbcc84448ee537ad9fb30e3480b72802827a394a223d62c0e16e486c631ca15d27946e6099b2d30826c313ce8ff7a1ca333e88886718081ff4178012e8a50b36d6da85318b043de2a38bc231d6ddb4af28126dce84bb8c2eb206eb36d556e794d1ebcb94e4b25353619cb8ae3e911e755880c50bd8dd1c4bb752e0230b0886f82458e848991f49b201b01498374014079514188444c5238767b88ab21ca457a87a6d81bcf63d79092fa24c61b4f9a1248a8cb8c6941e5a81885e106b0422c97a387148293061e2902ce846428a0c888bcb590a67e1da2f0317fc37ac3c93800aa6b3897099c2be421ae9e6dd20df487f09d07d11a030217a75d46d734e1846fb840f769b61def851eff3d9cccf782cd7b4f82304cb351945cc68b763569714ed92233ba00be5a9cb0d44469a9ab8bf739eeb03a123e4fc65521cc380ceea79639906df9533af58316895c362e118885224313f6a959f77a768bc08d2d606016059845ab2c9a97132b014aedd45bbba377ae9e247f68054a7008dd2bc6d2a43dde61adfb979c023c219218d81bdbc89fd1594673c8f72e2e0a9eec84bc2f3128ef9760be7efa2b105eecb1544bfd7fec7dfb5f1b47b6e7bf5266ef4da45848104fe68183b318e498090616e438732d2f2ea94b5043ab5bb7bb042863ffeffba973eaddd5adc67666b277c80f31aaaef7e3d4a9f3f81e98198775a9e359e374bfb5c9fe21be1b9ffaa5ddb08fc612d3585af8782756b3e061acdb75d921ffd0e0dce692dc2183b7bdf1381b8f8b7703f5519b43c9fc76c1ac3381b67bb38194d7f814a0addd17762c78702a78702af8ffcfa920e67b5d1b33d91aa5ffbea227bf5aa6827f7e0865a79a5ab37b27cfbf2698725db89dd08cc40b2ca9827d7cf8f0ef1c8b59a8ddfb3f231c73eb20c9feb0dd1cde97880b364219c70325b78e443c8dd5198f968caf2a961c0a362f23d664ea4b2466f2db77d598c94dfa37cf9442451b53461a61945d5f4e4cdca8bc5f3c926fb5579ae2a25b86135f25f8a8de0c1127938a9b89b51df08d7b9ce1aadae2b63c4fdd5879bf59cce129cd86e5942ee4dc4090c4204ecf17894afcef1478f8d5eba3d1e167461f6e8c266c5f9e9f111df892092f96adba2c3adec9f23bf679b1806b5c2a149bd3b4793d9591f3c3a93cb871d6ee9bc85a0595c437ce7da29cbb462041e8726f5af79264a74a6782dd6a3478f78a995eeef8041dc4a2c14d7da682a8751d81c6bf6663c54338df3b44f39a28c3a2de0f659d034accf344fff9092187d798573aeb5a8dd9168e647db4e14a54b70f1f88679f982f587662ac42cd66686f4cef6e44e2f4b271946bc22a67ec4ec8fefb61f7ac430c8254e6e006a3c02c17109d245d69df979a90c1c1d5fa897145bd7d530d005b17af38e0083c2b4b40ba23699e5d82c11f0659b6f1932140386457d788c7e035da34470367938ac38ab559aedf1fd50140b073a75b88120bfdd79e4d825ee218efdf653fe078d5c5e65eef93b5a1b3fd5dd704e7f949819cdbc657fea7057cfedc50cebf6184e29aebc49b5e875ecace57b76805ce9455824b2bc37cc2d044ff6918fa39745c39dfdf3b1d4a1a1a7c18ed3daf9e8de726a2349c0306fc36c45e02455c960b220a7e290f3c45cfc01cce52500dd2071d69991c0a325f96824c1849f28c19ef63075797b4bce44870d1c93e743ec385eefe94269c60e319119963dfd9a5c1cd25ea55f1e5488d9d59971b0e1aad5c9af1ddda23acf615485a99573b02b33651959dec9e02c3ade6f7105fd9bb769436d14daa3ecfd60750aec863ea8537eb632dfb7c5324bc3202d139d5fffe222e7bcc9b9739f6baf82de333bbdbaf9d0acd29a1b4685e1d51459af7a41c6f9c335a4caffafd3e9ae47b6a2fff9cb4c1d27285e4b5aaafef1e30b51ed45fff36eaaf4f01c1fa24582b8d0b35197191b2cfc385c23a1a70a130c36faa9d5256fb8d80c19e32443fc6a188efb29e383c461b6f2d1cde17f13e5aeb5ac4d527ee26a2d3daa1faa47f3919b470cbd76a7c8abfc57883169c6e4ef34c14795a8e3776c825cb5841051bd1c929cd587a98744c17084fac084b953596e31bd68a3cccc3ee16344b308fee6e9847a747f3348b33477bcf7d9785aa0cd378fb4d363934e1cc384fbc51c3f2d78eda7897386832ae1151b87d2d5790a7005524e8c48128b3e0a235f56da98deb0d50e0098d786984d6986a33b7b5cac1ec219a26a6b686d45444e863348678c3e69273a1354baa6d67852f4ef78e87470806045840e698d824a8211e30bb71819b5b86063661ced7b7fcc0f73cf03dfff67ccf0396682396e8884e9cca077023f8c1aa432ad98bd0af9e436abdca2c0d574450322943bc823d3646a7757cd2d7867588a14c1f0d7fb918fe72ba777c303c835b0862913f55bce9def30bd4389e9c01de641fe8a643665d36b6fc4c16b66c625fcbcec2b375a9f2afaef7bcca1be7536bcc8d049da4be4d8f4ae9083a89e9423c5e56e5b560a2b6503bf0b728d05260daa3342cb691b8c6a60f7a975274dcf5d341264b81b49f979298c6912d699690993c03e81833a13c458f0b392ac7e1c287c5087b1791ddc6a042402e5c30c0ff200727af085ab9e9b07cb70cd1e1b29cdc52b8b7e674b1004f03bfc1f788dcf1d7f35ffa466de65bcfb00c98b59159190f70d449ee44bc6b586c2484a5214045c05f7795790d4a97379e469595ceda6acbef6a5f8da3bb3fecb01eeb5ce88ced27b6dacf1376a0bf755808ffe235ff4c2150d9ba3c4c3c6f22580ca7447f941d4235eec5767c50ca2c1d9c819622dfbc2dd4ea5241b6d08304b3bc77a5d91a05ea853f69fe281c773ff2d874a34bfed3fcedf4b4dab5b76103efee87e6a89d271a4fb4007d916d15b43a42411d464fb1bf6c95f28e7a17540cbcfc89ad0005085fd94a67d46dbf866113fd2954d47216467452950864ec7624796fed71d13aa090d6d8db0a5c9d867e817a750713e6832839f97df8dfd690b65e1d3ba6638e7664ed4415ca871ff98600d97612b3ee147412b1ed6c019b42c842b501428a8ca53e20744cb2a1caecfbb5fb69c124ab466a2754114f0bb63caeea69ef2512310289944e589ab264b20ac422fafd184a995c3181a9e58a2709cb50e200a4af7e97d9b26bc51df81876704d7ac1cc7ad65b4954aad3dc7d40dff516cf1160405b0e8e8f6abd4e996d76a5924e3abb12e416818d002f2d8550192a7a6bd85ef0cd8ce0696553c46defb47c33aa5172aaecf90a4dfde80fd0e72b10e6281d8ad1ada8c531ec8b1034d9db17eef98f9a21e8b897b2eb9515408f698f38d9bbfc30e392613b77bf3be060359e02019d8a74f6e3d3b542d6f29304acd017cfd830e1532af2e28dbceb59712e56a941a08f7c8a0851cda4507fdabd1058b867e4fd8b7b6a5f89db2c844a089612d9f87e542d3c87067a00ef455dafe51a5d100ea80d8d53f4393ec9d215f9a196cc6bc8054de4fb6ab3c546fa91ecc461ab752585814efdd8b503f7af9c608c877a117c5f7d0ae666f541ae5a61db3cbf383c3e38dcdf1b9d9c5dbc39db3b3d1d9e99e52de562efc4b78711a87e99b6f58c0411aad6a26b8df69e9fd72069fd3c3c1b1dee639032d7fb9215824f2160d9a45b23f0f6a7ff8897624df0b6e7174787e7a39a206d0668cb69cb8454eb76bf0cc2d3a7af873fc235203f517c1fe0aac36c90b846ebafdee831e97e0abe63566cef9c829e2525802aaf684088a8d3abc6c2f2e8a5312d39e0c9ab7c998938e9844ecff31b76aed1044c473a153d41b4fe46784207483e7ac954e92966b628c53a73dd8b703020d78c2dd42b9e67a45c6553144d2b8d55ca12c42b2165aeb301404d9ec99342ca7c5960681d512cc59591cfd431e1ebafb67ad4c2da257a0d06b981c33bbb51862bf24fdfccd7e037449801982b53c4ff164234362ebd6786565361c4666e30002d01c4f25042e02c4f5889d2f4d98c4fc1da2f27498e0b05089f0c613de52a39159557003f94ae54950c0153c415e33abc056063dce6c53585788c7d5f3a91e8ebd2988b3fc2471f2d0aba2a87ffbda428c50b6e570c8961d640d3d258a66e4fbf23b1b3fbd853f91e0e9f8395fe784c6b9b15b1cfba869d55c3b6d5daa82112cea2c86f7882183764995d67f96d460e0f54c8049ea04ec2c08ec478af8a721b1ff8612f2e683ff6e57e9cd77d2985ba82e26c8dd9e6d11eafa93256a61ea14b018421580b08383337be17e0067ba6e0eaa2ae6503c3082d32af079f1caa9fe9a47cbbf52e7c14add950a14caf46ce848fb3e10dcb74890eeb85b6a95ec2ebd36e754a37b7ab4bd3582d58b57a2907276f8e23356fd74065f9d281fa79088f7f05a4a4f4e64285e08985d6d2d179ecc9a9e95a6cd5b1a500cc297c29bbaf3ebf851075e405bc244a1b9d5ae4083cfafefb119d3c7b5f7a38220d73f24f988ee07925f23d49ca3b8191837e1cb9928270d4ff67c90ace4a52e4b9202f47af8eb405b94193867387305e0b39269a12ac571de3bc5837318eecdf019d5b4e74796f7a9cf4f82479190028399c24c319842aa2ca3dada6f3edbb9a798669edcf8a7c1eab108d5acf5567f6d2d4131c93c76e57bb7190b97d9a4e97291578b164ec965c317e79257ae49627e2aa07f278130042991020c554d7a2c28d23e7222fb096fdf3738d9f542a9441ebfc41b50b13b80b01545f1579ce5bc3f86d1cbf48d7cc3c7895551fb895050957433f939373bbf0c1548f37de3aa64bbbe3b1dc18e431a9e510651199eb9dd93f017bee2816d72d7dc7eb5cd7c7448c4a5ecc8095c9917c146579c6cc8ba8ee76af8f86854f69ce32f112b610d98d8ca6efe60864d91c9e3289bc32eb4b42065f98379b954c1cb1594d8bf67ba4d8285f34951ae50b73b5af9d4aa2cece0ea919241c83595ecce1092a7fc893f74b0736ca2b2aaefab334cf8b8eed7117b6c9e2ae4b4cf6bfd5641fe50b93dbb15c23789077dcf9356c6cb8cf6b1e5cd191378b6d42327f9895ac108492f770bab549c37b3261e2963149175600f8e8de7e606bb549537e99c14d00e4ecbf9772fbe96cfd906e380614facfa7e6e3884ee4c9a5139b5403658584c1031b5041ec5c84813a519f9f4b0b841c87a38f4e07dadafc95157bbff21e605793529d690bae12f072ea28c33186b7e22ede4b3251dec51d786770b24bb69fca7fbfb7f6c146a77bc11f3f3624016a797bc1c926d97e47766df6b717fc9d2b67d63c92cc6f74de5a6da983f17f0c3a5f513e78c6311a694f653941e81ac8080639dd0623c08780e20f4680ff02234079bce4cb73ef52ddfaab05cb6724a337fc12389e47605662d12b36c80ff66bdf16ddd14ca9ac7152e4b7259043381ebc1c26928a0de43f83be60a5e89892a858e425f81b674c0cef16690e1e528351c11396890fc5cdcef6765db9376c72cdc50e19ec2d16297bc3263f7151c98bb6668ec9dbf3780f5d3a955cb28a87a01a581f3f2339a9edbf5359f8b1a1e230abd7881eac5335263554881934e9abf5befae303017a20400f56c8ff13ad90ff81e0ff3d620d9e6a8a460c9235a5ac165850c1273ce5626508fff3d72f5e0ccf2ede1c1e8c5e5e0c0f7e1c925df25decdba1fcf264cbd8f50e130ef80b2376f759308a6e3db576be6ea68eb2e798e6996077e23e86bf4ea17b590043a9cca5e22aa5532e68163301c6ea40bc611fe84ee60878601cd5f0825702a983b55a130cc24508f4e37e0c2c2f555e37925f5040e590ef3d2d5e3903e0e9aac5dc5e9a9e608c17f203d9223ba6a19eb5b28c84d37cd4545315e241f507c03dd47bde4b83c76b08fb50f9b3c6e60ee3dccbfd2689644de8ef004d31b4632100e3feb30d546b7eae8b64ab3f372121a9be5541ec54601ed3d8d855718e1dddd68d090e67f27ab3bcd6cad2168b5930d51787b98d140f1741e49797295bb30855e00a55a0625e6626dac91dce78b33167c3ac3b8bbd43bc18cec1cc374d4c9ecd783157d8f0d148c08f62b1ef5b1ba33afdf79141d61ba1a2214535a677b012ffe2fec98ba145e4ee6a2c54e104df066373b43bc04ce555be4c13323121e851d302a050cbcc5a2dd45b12abc66a21d9e2d37153bf9bee71dad461bd693a69c64c06843c6be78ea6e227b63293873f7df9ac2852378bfaede5993341dd3ceab76f5179c5675e5b3ac1cb65008f6c5ce280d645218f220be1d1fde0d2ac8fc78ad0abe5ab3ce133ce0aecaf9aa40f1fcc647cf860c6fce18319da9a9e1e8f8667219296b2c62787c36dc574cf96694aca69c11870f5f0c6a2a9208f0993cf52af3434acbf109a2425a12463b729cf987c10e958e41ea76147a3fb1ddcc8b53169cdbe8dc30d292d2092be936c283b255b0a90a9e7cb5470d9c3a0591b8e1a8fb0ebe0e02f498583e02065de13fbb460c2aba407da96cc8f1eeb6e9390da54c358572d09dcf2decd5605a70aaaa810563319723d1a47b9aeb97a3ec8a5911122467e50a96ab7209bb3e366f530bcabd0e492557ba954205b3efbfb0695104eaabd1894114469d882dd5db82ce482fbd78e0db864ea09efe89e3dc121a95d67eeecbe45fe39b81276d52187f9f9b4ba6075578f0e60e7303f1adea0ba708aaa690656b38be67859fed1516baf35911d1e1c8ef69e1f0d2f46c35f46f108afae29be0ef61ab5a95d1b6dd66bec42fe3a3cfeb112cd566da58692a7477bfbc397274707c33359fa919e16af0800f01e1d1e8371ad599d9686bdea25095a314f9b1a237c60942494025145aacd9cfd31cf1386ec49960bc270784e611bfcf0967d5d303267b45c22fca87c386b9b0a9193840956cc659d74217b5f70798c75c3338808183c8f1b349d8f62d3eeef49872c28dbeb71a87fac5a68cd7986aa60980a10e83188085ff2ec3265c44e4ac73944bba8ec24db5b5bffd96d3f887867dd20cf3c632f1b339b53543b7454cd8e37d41cb854408dd53bb63ab13a577276e835232c9ba639066ce737e84c0a22cf709780d12d17cade82a7a9647b059d4c50200a05b1eec140322b2cb32515e6ab28593a335ec0d04a9943b349cecaec6b4132255e9db0aef5c1b5de05615438bb553e7c702155600a774cd4ba2f1794b81a9fd60f4d6b015ef45f6abad5397742ef02521e3eb56b91a8cb05cdd6b927f8f468ffe478343c1eadb167577b3974a070b7b8e9b721f43f90c8b5e060cc751b43c5d6dc8af7316ec73716ccdb81417a0d6cdb5b341331d0be6861986df7da575f9147d6863a2656888710cb3399b357b968bb51fb892f31da468b7e13b3df37ecd7ec986fba6303fc7bb7bd3b668773d82541fe98699bcd62a7b6ae5a87ab239172cdd51bc2f0e10389a43ae065cd228a6a5780876cb67e292dbaf29a550b6983b7583795c0a8f5fce29cde1d299b616007f5cf161ca36b6584d8aa17b40f714eed87359150ec0a442ff5aad562e8cceb99cb2d7c839a16141002629bee9ac1ef90ea3c7841e6bda75073ac71fbbc5bef850472937860f0452420b8a2c49fcb5d3cb20bacb7f517e5359431986de50732de90ec12640eabf33990f64f2bb7faf80529b94c5a30da1c91be21cabab9e6d0c0b94b763e3df07d9b60eef22cedc0ffc396db9088e89db0c684d5d331c5cd2deb49091e209ee918a6fa979f85676e16f52bcca24d32314bd5fe72cd23563315baa7eeb002cc818265dabe15555893be97e847ad926719f91eccea24f84d4fd7368dea253c3cd8f2b4efa645329b5999469553a08c33e79aec924b268eccefea0223560f4d301632cca6c8c1c602ec0dbe970ce533fd4ae3f84a232c4be04da4247dcef34943e9a872d33c4de9423ee021b4bc28a85ca14b3762f86429c8f7fa543e23e5557e5b122e7c49662d717259acc1789cfd8732fb71d6c407070866fcf1ae335b3179ac6cdd99cf679e453e0c19baa52668aaa5fb5b2a8033e1e5313d2693349f5ea378d55b0f72cda7d7722a6b3bb88b7afb8e9fdcb347e81b67003d7bf8dce4ae8f82b47f55e473f6b58af04ea6b4b00280392fc1ecb5c4855666f4b2aa4d9d4361eb83556a21d73523b33c139b25ffd5864e180cc8e88ad97de4761faba06999439ce6a576b9d055f2ec8a155c9672db85c983401a7032fb2ee25265cec048794eef2ad376c9c48b3c13e7fc5716390be431c13cce8909a843170f0c88cbbf22c3e492c113b4249494732adfb8cbd98c15307372064d647814952f0a9e176062cc4afe2b8852dc9df6dcb32debc4b62e9effc7bb553b8b9892ef79ad4dd93d2a3f1cc64e46bd42d915c7060b10e452e28760b990d49b2bc009c184fab45536bd2af28cff0a7485919d9d099be505238b922d937c53099dbe2ef5aebebd021332452ae466c33340be7b724f3a53f5d92c9918f139cb97a22e2c8ee14e82add407d6ad7f659c1602d2a4782957c4deec09eaf100edccbbdd22aa29bf96a8957a45c5e22bb15d393eda84ea0fea89e467d7346b871c66339e71a135729ac6ed906d9ba2b6cc9fb544df2c995f6900658fc0502287d199fe206f854c6104e3de9d89d616ef9e155360f9ee521fe6d9f8202c1b7ec24b7b5f914e90ad98dc7d9dc9eda72da804e8ca5666418b921d66a2a333f4cb944f5967ab4736bfedf6c8f656b762dfee133fbf938341b5635db2fb8c6cffb9bfb5b5b5bdb8c31f7a401e1f623a533f369b3fd2518c06c54b32bd62d36b744c9e30d4d7f099775570498dafd9ea362fe41d72cdc0c7a89853c02492bd4397d2637aecdced5dd72bfa7f978c69a3d052d0e9757ec38a599adff6a7f97c4007db7ffec393ad3ffdf14f833f3ef9c3b77f79b26ddf9f8a2135708971099d3ec832779f67192bc005512edff793e29939f53aaa0d5d2c5886fee3d06557de8f92e92377b299e74ce47137352d7aad82fb7cbe9cb4af557f2ad83cbf616e3fedbad14c6fd82dc93c3279774e29207cd8ae99c62aed6f56061a71e5f098b9c073c3d7d1a63de218fb5917389e67c32c81d1f6dd14fbe0d689e7821622c80869fe7b1573b8d641d6b3cdd4f26cd7612cc17c1e6e346066d092ae5c4ae2c3b34b792afcd2ee6680e057d162de60886b9ee7964fc18d57ce8c1bc69f982128cf53f2d8f6f031723a8f75dbb64465aa8204804a8c64c705a8cdfcb1de85e6cf0f16ec0f16ecff320b766564bdd6b03a049f8752c02ea1d816785f78ccd99bd7e3c46ef3ec6b01c027fa9d09d0110b5496cb97f9324d41ff0690298e198ea4c639793cd8245c315be48a154c5247c168d24348952915d3ab4d9aa67d4d1c69226b62c92b2ee9c39c678e3050feda219b9a7b7b5a2943ef64197ae796a177c4327c2e3783ef5d350f4eb33db7be6e1d8a3f729d27c570be102b674ad5445a63d5888bbd4be022770b924c919f233d555d187cf30d39830c25792fb991f77a4990ee9282c90d0a300054d6c113922de7ace0536538a259946df6c7f186f62b0d47c651a7768c25bd310d06c813c9c6f84c3e44b1615e9a86784646ab052ba7055f28fe68c22fc982ca6955321b5515c6d3fc5a2032cf8a88bc2c6d9d0b5ad039130cdeb0bc7c21578ff5c984a5f9adac5745e71b0c082b4b847b46753f9d5ea10ce8ef10e94aeed7b2a7aced787693a737ac24e57202fc35e0d0a87a806f0ca6cc0a03c239a62e5c002e18b9d55dd2bae22945182155994021c77b9aaddea31243e404d07c907ae70b56508d7a03322ef41c4e24a998f3941650aaec877ba56ae1b289c37991e6546b72c963b2edb89a46d79d276add35c02ee8083ace0658665c10c14a519adb8767d3749930c2fad76cd52709908c09d86ba887185a69e425438b3b1c0058c1c922151bd310e70f8449384f73b41a4b207863298afc5a8bfc646fd4fa929409001aa1598276237a5df26c53adef80677844a65754ee0499bdb33f4fc863b2d723f8c7befee367fdc72f5d230ec2ee3b6692ac6fed0d99360c6d1ed3355ba9de2f0a9e09b9fbd1f8c3740a6d1de0e26109828653f2fe9aadde934c3eb8f3991a9a82e2d9eecb292e56386c98a52b20b42a9ead53b4c3fa977d32de784ea7d7202155afd5c1405e9a4591dfbe5e60f0bcf32b3e13e38d6e5f766fcae4342294192c290c42f2dc7a0ca6f3f61a90db7ec6599a6c6eca35c16ac4155bc1b2c1b0f066a39920198560ab1376456f785e94e634acf22cc156e0dcda8636376f99da77b7541901a104408178b1d98c4d61dfe1e2017044790e93bd7f4595f52b6e6007d468dbe1a31f05f99b5736cb6f75c06045def03589d269494fc285862fb2f7255a99e0403184fb6080a474268f33cf2e3717b99cea6c399fb0a252079847c171412a041599a1abeef2f285aaec54d6a58efdbeae0a4fa6bd798043d92305bb6477fabc89e9157328763e339b9074789ff5e113cd129acafd627ad985bae4fd9129a3743e235cb41b212d89c6989aacc89b27fb3b509be4494bc594de3e0186747436f8766bfbdbc19b83cd2b314f37e7b4b85e2e3665dad6936fff3248a8a0484de5e7ff85ac535fa6f6a11386797dd1dc250ce82b9714c6e2a4c334c91d3041ee552d28b0e2c06ceb98b420a17c2b3bb33bdec0fac71beffa64e485ef5426fd50159c0d059526cff22d55a6fd2ef48bdc01e1ba9680d38ad6a7967d05c64cf3ad35bd516e050b36fde429474f27ac1267dd4ba142144a4eaeb85d74d77b7174b2373a3cfef1e2f4e4f0787471fcfad5f3e1d9c5fecbbdb3bdfdd1f0ece26cf8e3f017b24b06fff7ed906d6dfe653c7e3c1e6f8ec7fd77ff3188f0c0eb76bedda81ede42ab5ea04ec8d6e09f9fb37c99253e3f00cb78b15c10915fb8af069648c695cf977349fca75c3e15ec0b123646c26733b9cd8045792ff217fc8e259defbaef2513e66bc17e6545ce70a3ca0b9b2609bc8fa0ae39c8b3a10dd5af12e2992e53a0b23c93fbae00302a38e765df2c4e38b3227f45ef4e7577cd0bc349b37c445133176be68074d440150f486e8b3cbb24d3ab9c4f59cfdc14a81be4f2e5b24c13d0f5f9b351e2243192b0299fd354b24b82e44ba16f2bdb07d37657558f589e3bcd52bb27dffd79ebbb3f0ebedbfecb5fbefbd31f8ce4674a53f6822a8025d0462cf2dbcef656304dee330572c174a907c5376e355d32707f3e807e3c482c7e97128bdf89cfbd31deef45345588ecd823a70a0d4ed2c1797ec38ef3ece5e8d591c2c9c5085b51c94ba58fc3a2c88bb8cf3d834f81fbfb52883cfbb1c897be686702e9ea1ff81c2b575f2468661fbdffc276065327dd2f01763d95fcdca446000094af414c50d25b7707f79a5ea3bd4044d10bee1db787eab107dd7f6da46292121f66d3023409066b14787d47b55acda16eafea87b791a4f1c6c1c99be3f1c63bb24b36011d4aa73cbd4f25af4fb10a5583fc29697c37d23df9f08c25ef927f7c5416d072e4c727c717723b5f9c9e9d9c9e935df276bc51cf2be20b10b7913e17986657f9048c154d2a1e61fc39a77fcf8b73c116e7fc579dc4b33029cf700783f2542741d568cb8849a17b7d25d58c5d7d316dbcb3837736c4e7403fb8f5d4423fb8997ed328c5d5c818f05440d083bd9960055a96872ee07286dca3b36323729c079f5ccfc76e6827199586567c899579c547d0d481bd20ca8598bc82527a59a2dc4cb207a2e09797ac2005db44e7b41264ccf8c4d7f22671c5e6c8c619f3097f5a129e9cd25230201b7f5d96e2643a5d168171b4caca5241c9aef1cbc05420701604c389aaa0bf0b56dcd014d0a3235fd576c4cdeda0739859c62fd03ffd397282fbaf4fbb416fbf54cd805f1cec2618f5199b79d69b2196477482e0a7b11c698c7ba51b511e38cd4ede0e75f0fdbc7b361c5a6038aa17f4c2f1583890691d534285e3764b65ecce825ff88b889b1aaaed56e02e380c1029164dd3099d5e774c5dbd2034b8339aba6197225fc85b9a67cb7c5946d0012a2be16e60ffcb3465b45096433ea60a7c39547bb8136e696b02644c0c901d824d75c44bc1325674c61bf37c59b225c80aeb7bdfbcc06dc7da6a8d9c09f92d560a2c1b55d1926c226f64ec3976c3ffacf9a03b60285445a6081c2671dbe2430969bca493f044550452e5901c3c1a591a5d36e9948c91aa7751d79f8f68f089badba309ecc6b19db373be26f41d7aa8c5a2e257e64a72184d5345d35bba2a1db1af7c5bcac9ca33329165c145f06bf9a4a3c90a264c2e3b117c6e8d493f614a0ce06965ec15b880805faac57a613eb2c738881159d28c0bfe2b4bfc4320ef6cef4bc77870d9f22d903bfceac7be49a0fde983f1f885a2fefcb183e7170b4f9fc300d6b9ffb7dc6772badb6db375116bc345751db8dc74b9cb24fbdc1829d6bf7bae11a656eb21e4df9eb17de23d546c774c390dbf61221eb86dbb2154a31c46cca8b7a66a601aee51b9cc5f67f2ee8663ad22cd0c065aacade4d2a845029dd60c894799cf41072549dd84674a1c01567ba02c5c79b51945d4d7a5432a0bb9c7fae4967d9da6844ec51262076b55928aa541ad5b375625c987922262afc02c89dc32d5b023ddcc55b65cbeb31cbf7663d75ff635408ae2898d72c0f6522bc448ca44499625497290f3fad3c5c555be941d13ac98b18265534bdf6aa2a2faf4e5fe9c5385e10d78a5fb1e571d21abed896d0e498ba6068b22bfe2132e405da9f4c63c73826f69c31492cf88d305c7664155863a6b5eaa87cab214b77921ae56a63a20201c01bd15326ad9af23200d5a9aafbe228f9ab5f26d03dede6bea31ea58abb987d755edc4af79843961fcd6760b6a68d7a71894561d8c5678d1da2c2e93195ec3f75bc2a659888039b57ab37a03914d96d60c739172d1196f58cb5f12e51bbc52f0c3c6326994cd35574b425e00abfe7bceb34aa7dc39f60bc536eea7f266559441d36e946dfb8467428451b11bb40e8bc7150e7d01077925366a51910b2d6aeb89622845e53a81ffbc6bd39bf0e415b741d06c4e34e3db0de03f8292f42e56128cf9fc92f4ce2ff93c5f66897d397abd00f40d5bb76bcd1e6e5ccbce7a6bf3f3ded1ebe1c5f0d5e9e86fda1fb986d7565b6df08dba43bf1960c256cf9f8a9e3fbe2ed9a96dd1ed6f2091732275558475ceba82f1c80cd1d2c0809266a05725b70c14bff90d4f58a28d15502fc708bbe325b022463b3b33fccf6040f2a52879c2b4de4d563d8145e8c9dfcab4b26af926f3a1d515725cae4b7eb88e5f7d15ae90d9062e4045106a304a1f2a52ce30a54a23e2af20c72daaf59b662da508a081bee8306ea2bdf77cb96ae8d0a76382f9ba027499f6d36201c6ebe3bbcf242b0f5fe55f2eaa80bcbc354a6de19ded699e09ca335634069d3d7efd6a7876b8af7019e2705d26f2ac0e373be93ad1ce5de2a7546d7a5a7002518254765a84a875b57235a03fc1a8cc5cc889d981ffab05ee55566177d7a835fb47c3172379be548fbd18d14a59d15c01c4c1736a6884d75977d1c5716f6a8390c62ffb900eb882e908fef35615ea267051697346809451d11ac0c6538605b79cf3c5c74b096f431f562bbc65fdaf75adb95f7a3e85a964d6893ec09b6396ffd5579ec5bdfcc933f2cc712ac05529f25bb8004027de41cdb87f042f5e1d1e5fbcdafba5823a047e4ca673153941abbacf47c3d38bf3c3ff1a5e1cbf3e3a6a6ee2fb5dcffbfebef59f1c5f9c9e9c1f8e0e7f1e46dbf1570627cc49f894d65f1d1e9f9cddab0fde5e8435fcfbe7f661efaff7ec43f33c3c331bf27367e3f9c9ebe3834f9a864fef4230196117b426015195c84b962e9831758e6b101a6feae7e6f6a9b9b0b90612112152a5c74c1b3ccf1a216744c6b9fe6a73ec5a9a11e35e1cfe323c3014e99a41d43ebc64362fd1d0c4ea9e4dd0318bbb5d13bc1ddb6f02c8b10ee31510533e95bcd678637ac56e8a3cdbf43ac1557405fcd774a249ffdbadc1d4fba29d4cf2dbac65376b94c9dd00f7a771f75551c182bda70d855e8a79aaafcbaa71950349d70bec547ab0ca2dd8286baad434957429f2fd7cbe489900c7fc7c367342e547fadb73518071322b07c907043e33984b46d7adbfab407b4e05c85d9aef6c260e6145dd2c2ab111f3d1ea15e350628146ad194ccc91a7ad41137375277e56902646f3a29cd16606b15735278afe74363051554bedcd8efb21344f09593db5ce6683871a5d454ba3c4b80d458e9b5f78c7a36ab6e09a0579263e6aafbbf2ec6bb64a40c85c921998a7166c21cf40a211feaf589a188d27d87e4eb980f8f65acf1e594fd33b93d66137d5f82da008e2a5964583765c66d44aab6e54fd5731e490455cf38da886cfd91eaff265c92a1d35a995aeb66f362c03217b438b84486cfc36e4315a57c3abdadd001adb08efbfaf4b3ddcd70b74a32338b8c240d4cabde0bae91a714dc15246e5333890db4cd49553e6e49619afc55b2aa6571898fa0a5c4b4c3dc61b52e40b0717c9d887d02469300e69b00d01a4a38c831767c2520afa953295673a5d69df357065c2911b4764d923d33d3a9d420c3fd0de290b09ad4eb33b9f987b7960aebe7e8890d988b41331febae55992dfca92813d4ddcbea5e7ef97fd93e3d1e1f1eb93d7e717fb2ff78e7f1c5e1c1e8f86673fefd977cada1207c3a3bdbfb5bab22352ab2aa0678f4cd53733f08a8e46e7e891c7aa8c231146b28a92bb06ee760d29f5558a3e0905f5a203a5b228986059a21ce04c494062921b17a0d2a6cba2c0ba7849d87c21568ed4c87cab0a1a25ef1b11d2fed7f0ecc4e19f5d95468da4d834d2239e82b446ee57abdc889be218ed7b7807064a8f8f5eb36bb41deb4498ea863225da6cc24b7952b4a580d23847aec71ee1e5b90ade718a5eb032692f75125a63cffad217c08cac11bb04a21304865c2733b9a07161496504d57766d5f641cda9358ff8c62fe24b8fb1196f56aaefe9768db8456a44d491626550a2dd0e380f553015220447a48252a13406b86daaf00a8484e6bca1d8215e0ae569511d552034b8aba980de911a559557c1a328c8427561d668853c38628ff4f88e7831280035b1ae6435d02604a7db810e71488359181faea2d5e257f55976f9179ef054ced9a22abaacdfd1785501e4e3013af89da674caca582d758a98765595612d2d06efd8d4d4513de6e3cbebfdacef149f747a056db429834810aca4adb17ea5da81fab945945f4badead4413ba9b94721cb562c4f4d08fb5abb0b2faabdafc8d809b4182a53689ce91b0f4402e37bc478876c6f59e040377dabaf1105437b59bfbad8151ee4b06de9a8fb78b3d7cdf8d8a00cb6e11c2142ea569bec9a3525bb645b958890abd630869e47ce43c0e807e7d507e7d5df43c0e8cf0b01fd49b19f3fd1f9752f9b5ee585969edfd315f6701a64e6d33c83ff413e741a1ce5b4fc2c6f41a8a0d64d10befea6fe812884d883e6225e54f1f0309e89231a72abd281f9af8ad787f296035ecaa3d681ab6b8dd34f9a97acda9d2a3777ff0640eca66438cd7e53f5de51a199a750d585c8ec17ad6446eb86e36a3794c027d2784348d93a3b43d85d5fc4b0a785ad8e3c38f8954f3d3b1fa37d949f7c650921735696549bf2a81feb153debe363f9d63ea393bdf39ae07d26629f35ec89ab4fdc7d55a387f1365428bf0618eb36198f18bd614d8dda705e5be326d527688c1cdd15689580be2939d0e704f88229bd78353c3fdffb7168baa156b051cd19ea82e73c934fab40970bc377820f2105c31a3a6bd4a8c190c71bd3222f4b4727aa8899a771b224494f4fa0050d4fd37d8284b9ebd8695f6dc4386a51b09bd3c80b59a51a521518ce6a22e2bb33b5207175dd27d190b13574d5a75bad46ff86a7e9eb6cbe665e634dd5555db399eac921d57e4d95dbd093f1e96c7502894a24a9b8b021b6a17dfea6aad2fed8539dec799a3aa5a4360d3bf436b6f31de6c02c55372ad408a7d4bfc8028146a2d66578b7e0055bbf6ef501ea54fd3d52a934b2e035d1042c057362052872e5a5a983b043bedbdadab20f6955792bd908e455c20cb5ba90d4fa618c5ce7c38bf8e145fcf02276b21c9cbcf2726d26f9fc77f77606c6687876b17f36dc1ba1c569cf24bed93b3bbe383c3e3a3c1ed6f42a860d85e1ff6b0a5cb35590dd186ed7bcd90d94cf977af2f3f2384fd830bbe97dd2ebffe48615295d7905724cd3ff06538ce4d1623d0943709d57bb7ce97ce6bb9d15cd2f7756fc73b17d609ce50e79fb4e3f01c1f66129f24d4fe70da61010621f28c232dbbc662ba06fb2bcdf08a48121c356d0fc2513eae655764cde050fe5aadc8e93c1bda993a8bfa37affc2d57acd563d1294b1ace37a69429313f0f1c968886e4eefd97bc2c16246a14650e279d642a83899f3ebd202bb025e3740fa168cd049be142e13cdfa8830bebbbbab4e6a64acc0f0c40d89eadff084207c28910c003086ca97ebbdda7defc1739922a2b2419c25e51595371d45a0cd55be2cf49527149628012451e654a463dda08c8025928bcc55733ac03a0688c17b524ece25bf6199754d51150fb45d87aa5bf1b4551d5fcf16f51e332635ae69753e5bf3a3499eac62ea568cd4ea3828204fb92cd9695e089aba9f1e193ad6196f2c8a3c594e914e76fdd6cb3c65fd5b5a649d0859af989a7b3e49162fa936760f4836742d766edde03c6175ae2b92d0a4cf5c994aecd3893d300c958bbe2d1681f5ab99350ffbe463b7dbab8cb0eb3d914ca7d6fa6f446ecfca8c6a5d26565a7d0278beb080ff1ad97ad70e8cb79cb77c21b8e3c285d304d59de017b7a0373884b1dfb5cf2d632bcfcb63760b75fcc456325fb7d667d17fe0fb21bf49c412d4bb0d54dfdff5a77936a5c25681c4bdec3ab2454b81da79217e4ec7c27ef4e774e154280219a95dd9be9e53f9ef0f666d768878ea16f8b86660c18651d5c8cad76c9a24f2a08ddd4f9ea39af7294ebac23c6d42753b1c0b0dc00c705655386cf8fb69701bbba219b5286a2994c77ffd6aa0d71a00bd2344beb72a9eedac368dd1992bebea3eecddf77cdd754f7cff7f67408f6c2baec4bc5b611422a201df475e5ec8cd12bb36fb5675ab6e80bea6628dbd5f85bb5b37864b26467a0b44c6e1da7cb8c359536b9396603020ffb1109ba2a0193e22369325c62d21df9027e471edd701f9d6b90e9b3c7351b0bc7f723cda3b3c1e9ef58ce18b7ed6a88c9dae679d58f1cb6d10aba9078773b34916da95e42b619f4e3502b429cd86e5942ed84f6c055ca797dfffca68e1963b41fb6b10b3a9a23e4845a8c2709c7c5936cb8b298b188f107245cbe7747a9d14f922fcc4cb9305cb76221b5a456b7846b602c7aea964300a665c3c3d91b91dafc3775bb58459f603b5ea3be4c9775b91ef114d422fc26338dd32a9634f3f5039a48e37b352bcca9460a7a821ae3b5ddeed1d5e056b0f591f62b174d6be97cce3075e8bd786acad3dfcce281bde650da7404f508cf313f8ed1f76f51549db21f1a7a16ad67084eba86f85bd5ac7a3b99c56e55e850f64bc019dd884c881eedbf6f163c3ea0c06640a3149e07137f93b9b0a156490d024d11e03b23ed90708d204ada58c5eebaff3a550a19a428eb40d130d9e8dd76cd59ec60784af5e61a1253ba5afb3d0c9062068533e30fc77b1c0006d25c972b2396599e4d6516aa2232a388f62834f2656290be6c0f421b83417d5ad5f43f141868e8bb8e88bfc28bf65c53e2dad1b4ecd9cdd4336cf0a259d3765e35686f65670096b85cc7b36878baab5e1e8e4547d74a99bd2767eaca809e04d730f45012bc8c7a71bef7a1b189de22ccfc5c6cec6c6c7ff170000ffffb64f643266174200", + "9a358cd51efa5b4c8b5aa0ede6cd072e": "1f8b08000000000000ffb4bd0b9824477920187f446446beaa32eb91955dd5ddd55d5d535533dd333d5d9d555da3e99e9986794868a618d08c101e0909f1a896101a600558321c14b6f9c41958015eefb96b6fcd27f1f03e38be655b7b0b78976301795f53ebb301db60d64faefb33b6b9b5d7f8cc9d5d7d5f44646665553ff4f0dd4c5766646664643cfef8e37fc74f5ebd74090142089ef83432c5f9b5484514edf3efeab593cb088186107a3dfffda7f4fb8fbef1d107df8e103c8410fc2cffedb45efbe58d071f7b3b42f84f11425af07336defa440721fc97081e9ae53fcb7de61f3ef4e607df84e0912c426885ffd2fffad77ff0d0436f7e10c12357104247f88ffc63f2e8438fbef371048fbc1d217685ff9e4695fbdffab6373e88e0effd1b84c83fe1bfdb7ffbb35f79f4c1c7df8ee0dd6f4208cdf21ffc01dcbcf9e0a36f46f0ee9f4508ff2dfffdf2bf7d43fded6f7bec9d089ef8d9301f22082102bbf031a4200457a08310ba3d38ff08e5d1cfc67ba18bd0071cf4d51f8c74cd3a427f8c6073b7873ab089f87b107b3a2b8e24f84d2108ce44e49a4294f71f7a0d5a470aca2140b3e8085a40e7c83f989d9bfd5ce9b6d2e65cba4ccbf3e50f943f52de2cff5af92faa5055abc9ea52f5cdd58fd7f45ab296a979c7feb7eddd1d7be7f2ce9b77debaf3c4ce2777fee9ce9776fee3ceb7ff18edfeedee6e508f23683e56eec7e6d2655c3e3652aeb24fb9680776dc9dab3b0fedbc6de7e7769ed9f9173b5fddf9df837261f78f767f7ff77776ffc3dfbcf3f7767eeffedffd8ddf7defefd2ffea7eefcfbff78fbef7f1ef7df07baffadee27767bf3bfddddc777ef49d7ff79d7ff89d99ef4c7ec7fb4ef6371f2d9c281c2fd40a470a7385d982534816b402ceffcdc46f04bdf2ffc73f40b0bb8bec58f918a1d66d8046c6ebf9eeb5777bb0093df48b085516a1b6e7afd958699d05feb7bce22fe7bc22787e3c47b3515d8039751a92c0c23f372bf2edf973736a94a73c57e5af97e359dd6c6e159657ce80fca0f86b36aa35784a4de85ad63073a6e5196646d7928aaa50427545b154c5a4c909d34892d7609db1b4614e2488466cb360d854a7c9bc656698c61445496a7ac634729699334519aaa20255a8c1d4a4c6126a6acab292f82ea6aa69d32cd86a92d966deb41543494e5a5656639aa2bcc770546650c23051305108d5149ad0549352156302a0286ad671a64c2bad318300c0b469dbe61400609da969c39c749279c348a9aa41a94a082558a144539584ae25144523980280c6b44226554c58aeae2528c6306dd8b6310d00d4645ac6b28aa9e48421c7afb0db836de8a10b0855eab5565df458794e65752613d350ab2f42794ee5a352f7585d8c8fbfbcd2aab764e20c78cd22f8cb2ba2afbffbcffe99c26c8332f219db34edcf10460d9b29fbdf3df9c85ba8c90c1be38d2ff2967e710363db60267dcb23c464a68df1435fe275ffd24340b06d32934898db862d68a319842ae5b096b286ab10d649d6077a5dfebd2e2f244a6d75f9b7bab661da41ca346c8e85767b18410f4da2fbd11b1182390e6aaa9be5b095f3973940ad341b1cecaaec2c04d02c2133cb21d396403c0d53502f379756ce410482a20703c8adcd559b67a1e5f96eb909a87972f152369bcd5e5a3cd98ca57fd22a65cdb4ae2755d5209410427475862800d0207486320c98526a6acca48a8281e0658c899d38da6840cfcd5e3cb9d86c9e3c79911776f1e4c96673f1e4c5acfb93a6c1cb51d484c61c5d77184bb2a31c8c986262cb4fd1790e569ac20c85524a158b11ac119c9e36fe9beff3591ff40f462a423a942053ca00da45180db67b83fe26f406083a833ef812b67ac8870e20642154c9aae5b96ab3c171800b9db5f9f935feeb2dacad2df0a4c02a85dd3ef4a18b9e40ef432813efe156882fa25ee47fe19067f9c90daf62088343291fb446abb694ad474863116a123a16a0c1ebd40caf24d2f0eaa7a0fe7da3e0688ec6922a51c92a51a83569db256762219399b5125986319439504d024cf2f31c10ccb289c44c26b3309129dbce940570d69a759dbc69a698a2919fe6a0f66180cff0ecff8830454d9b7f0c35552598680a66640d336c241545d1746d226997b38aa97018a58c120573e0552c253b67273d5dd35455499900d08244425555c760299d67c12aa61c7b19b69e6286a37e6104ae67d1fcf3c03507ca4cb9e937cb4ddff50f04cfab8dc646cfcfb7fd83a16dc3f707fdc256fe568067b6611bda9c8ea9945a2196e133c6cde66620c41f27a124ce65e80f3e7d9350db5075d22394921ed155c3a6e426dcc73b70eb263114d3a67493ea8aaad34d4a6d5331c84d3197398ed8822de8a20a42150937c1b7fce595739012e766ca8bf0561d3ed7a39aaa6ab447a8a3ab1abd99b4ace44daaa9ba43c9ef6df219b14935d54a527a73f069c3710cb8ef26a5494bd528dad3c65a883367a024ce7e890dbf1fac4bbf17356af069de28b86fa4c99f1b36ca30ed58835545a7636de4ed4b893e7553b16f8bf605df2bd7a137deae789bbb94f2ce751c63f069d1304574abec622b19d10018818f56c7da78e890ee69791dfeba4b35d54c5272f7e0f377139a34558d76f9c7a2fb70d7c8fdcf7583abbbef0e7274f9c88ba7a2aad7af8b6aca12780789fa76767bd0839ea8afe8236f58afbd607170cf75558d7f418e7f57f65a3718fd7defb729bd0e77dd1d64899ac6b3dd3df8fcf5e83e21e2bee1c8fafa02077650112125a8689903502a58d660b8d23e3778eeeb1c6a7611c72c860dab01843038cdafc3275f1b3c27a18a8e961f00e62a443dd00ace4d0e49b0b58b78215f1f3c178021ac7238b44de8f0f3e057a9045e58fd9ab88b0c7b4f1b04690711fd109cfd52f40dc31e3c17541b56457300c9d26cf36bb01a4c87c173b241fcd9de6f488225803fd153a500a1f3e183bea8fce0b9a0f2b251b04a29b479f507cf89eacbc69abc177535a06d5117b6d0164a709c35ac38a72a06b744751a9c9a90e58ac60fd7481b35116a89eee588940f5d8d556a114db507f686a8c8b7cd6ea76bdafd3efceaa570e62b06d9217c1874faad6f519d7718e96c19f6d6966d6cf5fb972e0aac78ec2687b3ede0f9b7bf45e51b7c1e201f7a80d0044215bf56962b6999f9b20241b37e1eba400c4e71f004e59d65daf4753daa28b44774cadb497539af62e505209acd7965af25575daf553e0bd0e3ddca6b325aeeb62847a33d501445811ed5427a0141077c5e2688da495ad3ab7bbeec9c54a30a6d4523b0c96bb40944530cdb069f705cc069e22e2111208e9457e14827687630975a3ea776a1332cc8088aeea9ba2849cc1f5eb621d11ee775b6a083a6f82aaaf0210d46531037c3ab9cef8d820b3a77afe7d8def152e9b8673bdebde73e3b7856654c852b2a63857bcf7dd5f63cfbaba5e3c74b3275ee5e9fa90a638aca244cf531822eb2d06d08b564c91233b49e6729cdb95975015c79a3eb168b2eff6d0ffe7c3598d21b7c9dd90826e02ad89c1eeb76d76fdcf06556b7b8733a80a60d09851b01149ee6f45be3c6fafa0d84100dead8414934814ea065419997832e380365372381641a4a5e4976d22a344b726234aa65c6c90de8dc6a48986b3424e440e3caa0c1a1c5878ecfcf79df471d49cd77f8f4b58d42de36b74cbbdd16a70ddf0fc74af208936801a1961c875a336065d829a8335782be12544756b451edf0494d484fc26b8f83013462d3bd639b1c4cb638046e71c031edbc6d8acaf902390de9ad1c5a46af44a8d28c00233e3ab543c83032274ecd86b8e92f8b2c6e56bc00054ee751da0e68878b850368b4e67cb572ca711ce754a53a1f4b7ffa295ed94d55a7570228b8f857071171039fbf525998af545bfcf556b532bf50e145715a60771b2368a33c4295796072724d811bc72965e862053baff4cfdd281d5f9b8742f3f2e5e6369c58bdb10e00faca9185b5cbcde665495b04fda6230433c0bc1a6bd55a80ae7ea13bf3c94fce74bf00bd7f5af8992fdf73cf977fa630826b759441a872126cf058cbabd9d0aa9d130560f485abe1db8f79f7754f9deadee7fdd6d42fcb62be78eaec07ef731f7fdcbdff83a13ca40703f89fd05a28cb18f26c21e3301467847c5dadcaf3c4f98d1a0cf023042b42be3029b972821bcde6a4a22896aa9a8aaa608097619a63b715008ebff6e68795d4ab5d426902ce01064551e71495f37aa5938bab1ad514c5a08a987d44c1e4114c309db93d95ea5d7b687abac95c45ccbf2d81231c5442cbe83c429951b02e9748fc823f6c3eef8d8258306ff1e3a0511826e3b747d3d0b5cdbce138e684690f5e69ca846d4e74f74d8a3197f57ea55c47e654d64c029b53cb490e507c0c16a13657adcd55cbf508c0ea53e04d812bd9bc7a11bcb3c071391f96353e44cdfa1a3431badaca961d4c0030245ca6793600108d62050306c3b35a57015b9677672b55739379ebfc6bf29685e1ff6e5d350d008cb151b053930600a1bc10a25c6d61c25fc518b2f3deb1cb27933369d3355ad71673f3598cc52382a574d3dfed411f7a28293150265a7604ddd38c2371cf5d11f3bbd554053cb52539119215b6e14f1f3d7a6371717efee4e24f1c3d0a6ddb1c0814085dd36e7364c07f0f7fcb53d984aae4bf35cdb469a60998d811f3932015e928875026d5aa554a5ecb4bb1801baed758a9869e7e1abe3f38f5fd079efeef44a554252bcfc07f7a06fcc1af3dfdb1c2adb9a7a1fe5d8231597ae699b06d92f6a2484359845a5eabc658abc680af429e9c19efbee31baff8faf977dc710c36cc8cbaf08a79a615efb9e31b777ce3e78eddfe76d8d4d8fc1df32c63b8454ecb21047df0d19458f76d18a7c25b01150e5b8a417e783d58ad3ac450549d00e2480c7c4a7e783dbea80112e4a9a45510f4c047c711aac4d6cbd867d83e74d84980233743062c64be6eeebdd37b34a0836f06cc1b7df466b064beed664080dd1c591726510b5d389c0f3f6c01688dc8520ee2d00fc2fe6ba1ece560cefd60a4df8fc96be2ed9947a70e6f0f840dc979b0084d6fae5a8322842bda416d180c64f58face7077f90f5fa47d6f33093f5c4cd83abbf8b64c5bdece00f0aeb47fa5e16660aebe560d98ad53b8326d051849452aad42ac53887147333cc6b3521b7d25a690cd701e80f3ab0ea0f9eb092490b6e59497fe6eb773c35e8acbde5b8eb9a8564a260b8b5651f361b496be09bc9a40925ff5bd0fffa1d1f7bcfe0619a9877cfb9ba69eade461121a444b82f89a6d102ba0ddd11512a013ded37472f6184ac6c8d5c29a1104bde2c483e47728023b8ba33e8c9b369dbf7c6f0f7e0d8a6a00bf8613bc42a1b21161a6c86a97e98d81c323ec3b62404757c0a5d92386f480754c69a32525be590867525d7265ad01b6989cf5bd8937c61ac5147638d92c412fff9514ba20634f63409a103da325a41186b4b287a9454e648d6d12bd88ed573706c740d1d767f7c55957ca9687f21ac2644c3b28bc2a5a213deda085b3c0663c371390ca8c8c8153be4aa305afbc3a8827dd2d0de0b59d0d803769db0797cde7676b7a1071de4a219740ca18a40e5028452c3deaff901d7d3f4ca4d992ec34dcd38bff4513e6d3fbb74219ff9951b9ccdbaf1d8638f399ee76c3933a9a5f34973b065252f2c1596ec0dceacb577da9c579332a46de84207cd200423b36c15c8c8d02f001c3fcdbfb2c527ff6df55591e68753e0272d7ed34a0e769216bf6525114a44b8c8441e2aa3936815dd8eaea107d023e8ede89d52121e979db318e1c0a24520ab9203ee2b2f327fc563b596cf0ffc57e607b8f3c4eccc891333b327fe9673a8b3274ecc868ce4d835bc9a5ff09b6186b1ebc1d7bae96efa4fd3dd749627b2e96ebafb3ff33cb3274efc8fc74bb3c78fcf968e778b6eae58ccb945d8912fcf9ee846cce80bc9a47d20fd8174fa036908ce1f88f30ac7d11b1082174305f0b58ad52413d06cac9c13fa30ce07cc55cbfbae786bd04c027ce574b0f69f0ec572ab21d3bd1ab2d4ab479d4903729e31e5cc9eb0cc5cce48608231ec5d0ed504f8fb9623288fd5404e464f6f5a26789e619d9871a6cc9c674e3acc5261ef4a29a858242d1b843cd74205741435c6e50b23e04d640fac8200955a2c638f0f2207925bb7d66fdc589707cee98983849e13dbe2383b73a27de31ccf70eec66087f37efc772b7c266509e19c68a18be82e21b98d3ed59a53d950e9170e9e90e744aabf70f0989c392909ddf10a97010530f9c5f4a4d2e4f45053994cf37b63d7bf20a07376f6443b04ea76087bdd5ceaa39c20fa682ac76fe5521fe5a411bfcab9c53e7f0b7c7e2c842fc478dc8705adeb66731e0b6471f254937c652b6c42399e2968a827c562f17bc3775a51eb878540df2d52725a4db0f4a4b2a24ca659423d4d2821f7ab498d372957a4515a3e93d96593475e0d2ff97c4761ee9ce3e4e46dd5525f4314d9609ea6745882cc2b3b51a6dd54ca0dd3fc3e1a91033c2e46fe902ea935c379cc6fb84908f2be90aef2dc70b60bc9d05908f286f0d137d2ec090080c7b5b421fb01e009c5549d1c4fe71cd5549e0090ad793179db9a7a996a94327a59d53854145daad12b8a8adf42a752bcdf5253f42d58a53c971c1cfe06a354136f88aea52c782384d9e00d4603488be3bc6be89f488946a4dc8f4b3722e17cdcf622d208c4f5a8116085e28f91776581635f914337f6ae2c70ec2bf2d39ccafe16b10d0e369aa5dab3295ccc64a6686ad65693aa5ba4d44828e94221fd7c79b2138575854329a1e644422da4ec2935316152c2c14d514d6aa75309aa69aaa5f1372c2f4927edfdf26043eda7661c35a9e478c9969ac94fa6548b7f3dc72cd59949d1a94c768aa6661c857f9d503da166260a296aeb4149ce4c0a17b399a98f0735560d9ac8a66daab3f0eb130975d2b12769f075cde25f4fa6d236d1633554276d6792240b566c8ebc1e21259a051c89ec9d131192dc0bf2fe7ef360cf4df82e87e3f4a4f216924d84209dc892b70874c0e73ebfe5a612593a9e8366137c86f34b0ede3c7b2ac9ef0f219d64931c7fa6a7681c9a692699cc1c7e0721a41f423fa14c8c6ef20e48bb07a4d901e9e601e57442e2a3bf2731fe3b384774033a72de4bec103bff6190fec3fd8b2e7e71ec1d242d0e833eb2d0043a8296d01aba035de79013ef21b7f202baa57240572807dc8fba057a0775c7a0337e070a7beef861da3fa0238ac1f983c1fdf7861d129c47fa611c5646fa417901dd705073bdff2fbb610f78ec818a83a0e18b0776821af5c1dde85de859f455f45fd01f22e4898ab69696a5f9d4d2b2efe5965b2b8d93b0b472061a2b2d8ea39796eb4b2bf5a5e5666b116ae5e652aee937aacdf259680972b8c931464007afb46a4928d79a821a3b05cd5a3954f984245a7d79a559e16b416385a39c53d014b25b7e195fbe4f832f9ed6a5fd205fa4a385a4161b196fa862f1975798f8444b4a3839dacbe6fcfe2b360801c04cc1e0618a31ce01a509612f07d344210ed6719ae8fc7af13629ffbaf3edc9bcf2e68b2b44658b595555554d57155dd1e00d0f100503a6183000dcb57afaaebb4e2b860218145d51441954a3f70754fe373955b8b0b6c628c694ffcebaaaaa32410f0130e5ce87eeb03c3349d51cc6a0600f80104a44bdd4849a0442554254ac9a2a56c9e4fdb749e9d6fd97a62fbefe7e5d53537052537d556b289aa6ccaacae5fba9a6f01ae814a8ae00c6d4504e5fbb767af52e00c01878b515727fc044dc2e057a0b6b1f4a6142303fd84c3da9f2ef0386baca501c6ef8dc0971088203607f44427910fe88bf0c7ec812b4cf2f2d9de7bf6ea35a69342ad5463443ba95c9c90aff41a73259a8560b931540fcadf51b37b6972e5c583a79e102ad349b15fede5703984fc98c15b8c2df2d54ab91aea483d6d079f42a741f429572ed365884da1207a27a12d86db0a446e6659cc5cbd643c82d85895a689dd12a796ea9e9c51145297601dbf902cd272e5cbc783e51a08e91376ddbd438e0f195131afca869423cd22d002a0c6e259c5cce713ccf81023f3ab9dc763b91a396457389a569db306d66128cbfca1f5a163f7e356f9b86dd6ee7f39bf2cdb0042717a3034f221f21a5d6aa9c8533d0a82ec03eb6939cd5f333b16906e5a60f3f7ef49d8301406034295a90b7cd4d42f1bdc5b706603ef8d6c6c6eaa3d3f7618a7b862d54474260d5356c18ecbef3d1c09403b44e9c36bd03d2523b1f928ffc589d93b4a9a40825492ac9c48824ad2fe5eacb2bb5a56a3dd2c59d85263b2987b15e55dda55c3d9bf3e6aa6571e9cde5ea4598c1c256d3c649b0c15b849342bdd43a0bde52ae9e5b916ff2a71c730894b8525fa9b2250114a2e46655f51abca86910b94e6281fdce05cac17358982dcef03af149c1ea2c1954887f6269d94bc6bf250c8cf88fbf23ebc630ca658c3b16cd9c91984be7aa09a29299ba3635c779b2422e3197b67246a2924d78a63569e7e7f474014f188ee216009b564dc9aa265098a29400819727690a5e6e4e301b30a41d0553db487946c1a18a91d68f6b599a4db264365132eb869e31ed494d254e2ae5a4549d6095d4ed747a4937f5a49e98d030b1d31c315132e91a40e72688464c459f4a1959cdd4b414751d35950320000a9ea11433d5c218268cac5939a562d54e29b43f319f585c25346167d3502b1acb4523ade969bdb0682593aa62a719332c3c799b63b9772a8e99385e502dc59a4d9714572b98b34948cd325b0302b340c06429500d355dd4b0aa2730b9ddaea428a84a555341a5d3aa4a13c6bcc65832b16438d84c4c68264d6858c1b360147528a93996a38aa963ac4da7599263f7a4e6ce29d8f48a0058b71da65a8c3120649612d032daaca52466f409d92e852e5534aa151d3dc5d0883e6416ad73eaaa550fc0b61e00683d00f27a00daca3cb03aab096897762e23f9cbaec85b8b595fe796fdd3103d4f6c538552856eab8ca9f1347c87a8e4bbdf252ab192f12749eba0fb7fdcc500b84b4d4d33693cbd82dff31e9c34358bc8bbc4d2cc6407f07b9ea090b49845bb1877a9c5a47d201991ddbc715472e395a5bd7f3930f78f19ec863895731f5272e3272132408fd9eb9e85c8e8bc089e2c2112e5fcfaa4fec68bb669da17dfa84f72fc3376fd0e4fbbb8c4af972e6a1e7f3e76dd0fa9abc2a537e853c2f25e7f83b0c0baf8467dcab06d435c9b86ed2f5dd226f88d09edd212bfb174292cf1d29214572340ddddcf41177ae848a08d9f02f9cbe6cec1caf20ce456cec01ac81f6f5ccfb44d769fe6b2fb98699bb7a0679b378ca2b96e14cdbea168f731769fa6187db368ac9b45e38669733c8a0a42be3f895a91c66579c54f46f28e400b572d1df2acc329004cb1be28fc0d2ab3a57a32b906fac2dada0226d1edd2acb8dde5d4029c103686529a280988b15b52b4e8ef7e0fbe021d944525843252783803b9ac0dea1c47d667c08f8be5fca2fb6e23c3be62dbefb6e7edaf30ed065fc56ccfb3390fc0b47f6b2fd8efb2edafb08cf1ae9c5ce572c1777ab0053de4a08ab0085c8040acc63bde6f95dd72336e1c288c0fdbb699552792498f650d7babddd816563cd2ac083aa66d2593966dfafe952bb631e888bb3da923b25061770bb603dd5d095d40af406d74177a0dba17bd1ebd093d8c50266e1f36b4ab082e59d9f5c10decc6ca5162b4860bc0175fb7596efade9e84cb8b68955dbfd995da84a405284c6d371a90e77342f01b05dd7174e8f1636117753a9d4e373a6c361add46030a49d3371cc7105acb30b5e343bbc0e756411e1d63d01376cf1dc3196c6e6c743776a2c386ef6ff97e28bf93b660cb08554acd8096084d698732773b66b1c9f3840643db8376f7ba3472de0a8886a7ef26ba1a1a4203908426154ae858f76ebe2e6e0582f067c4d5cdeff1b11a6c6285a8ba988d34a6d32ba24574765ca357f1c32e0f86403a1285ce49d95cc91fbd86edb8eaf4470dfe4571e885a660f6e0b7a364a4b92bd8265c11b4deb342cf1a1d42e55f9cd6b65106cda13a3a87ae05d6ba31e020a554694ce7eb1e7609c2a2c76f9652653732f1edc6d49195411ffcc15f6e7136628baf2257a24357614ce9aa8cc127f80b0df00b72aa146c73b0252646dbb4075b807ca6f01714d6d06442f3358597a868b0619bedc22ef265ee989cdf405954115620919160b336622f38326f59565d003e5d7cd76ffad0b74d5e29e8f96336831244ba42459cefe5418e862fcc6b0a5ddb186c8b9a170c5b34c1f7fdd8fa9540cbe89e3d76bf1c8c23a7a7030cc9c74cc787703e3dd43579d01f086e1e7a6eb1387844314889834729a0a5dbd2a941d8e77d397e319e110d852694947ec49bf6a3523069da948656823f7f85a7af04b364eeaf78bebf9a0badc243fcd9871e5203dbd666399b6b49a3d6d89a2d4d5de36a7dbef8768affc1b04f9fe0d538713a3411e74721d3e003b0fc4a47e74babeebc72b967d891861a473e0c79541ef3e61a419b65c94e4d43197e71596867cc44c204df48a58cffccbfd2d9dae0abd0866df479d97dc3dee01db321fd32b6845f512db0471f2b9cf341b2f0606479b33af36b7d011e126a3865c05bb6b6c097bff1afc8d93fbf16e36b7e0afd56cc2226c7c75cfcb9c5d06e6ddfbfecb25f046f39279538add3c2a6edb4908e1cfed75891a294c0dea69caacf8572fa954693135e4b73f545680ac97f6428d70acd1923572b5ebfa52caf6236f4b412ae532cb2b74b423934d8096404420c82018838510cc2640e00bcb355003dad731a226318199148eb00d5b31e7f53483938278c01632c0b8bfd930ad0a5574f39479c29150c4701c08c61500018251803752c6bc6b6672c2b45f9f729e39fd754c0a0383a285376c599baeb64682bc42c95504c3542144254f1a760c208a6e24880aa1430cc2c26802810b44a2190589c010c845120b1ecc33208d128a644b558684075744eb359226d00017d2201542560316231c3e00db36638219eccebe25f3e49546ace2400b0a16b166616104640b05c60a62d666b7347a52d47889b26d13174554a2ee20a5a366a88327295a90d81634c6dbd3264f72b712906b443281fc27b2cf54bd7b25e3a7d6e7e7ee9e4fcfcb9745aa44f562f4cdda5263527a70efef4ce871fbef3f2c30f5fee87561ced30d10b51c0e0df5d9bba50599a9f3f9bce64d267e7e797968ef1c272ee3545cd395a72fee13b2f3ff4d0e53b1f0e3c8f77ff0b46f04ae4727c01f5e622f06582d55d16199b3331c7c5cad72a79f0059260835b2c41aeca25a16bdab76cb37d01d217e02c304d63f085cff0ca7cc6b28d42c1b07b3d445001b53142fd40568c5a07487fe3ba819e10344d16aad00925555be1ad8f06d2a7c2d859e830e2b4e4cbd0257427ba8aaea1d7a2d7210487529195f2f39190e5fa61242444a4e36e443a42bbb01fe138d81ea51bf7a718fd174c2e4a5e51d289169a123e7331edaedf1a27776aacc652a514445e0c9dd82a7fa4e77736a0b71532705b9cfc13e87bc3b007cf761bdd5b901fecc4d6f70abacc79f44accae2364cee31ece5281d90a2c930377194f224c37abda1072ecf5b3a0c45ddc428200721f5133a65bd4d8475882b995643be9accde72ac9362453e48f8749d89b6fd0150624fdc0e3a24fe8c687995674cd34fb30c64eb29dacb8f36b4ef20a248fe458e23716d6524968272b3966b18fa85ad1353251c63fe10b7f3fb020e9135d8dad55194ea92ba594bfc70a32c42031cb1837b64876075bbfdf187c530c43d7b0fd8e20a4defd2b01a5f22b9216f0a1ed4726cb27fcdfe7149b697f39a0607ee55d3ccf96f4ebc2319bd2f5c32d4a3372e438f125a7df4cb48c47c3c30eb42cbd30eecdc2ab149ae51c6219fbad518719e1b0f6f5d01e87d7ffca6e0f6e091c9d456874369252ca77fd14f8fd90cdf407dbbd2e67f307be24a2077dd8ec0e76040f20f9158e7f2a8207688fdae6c4ad5946ad46e34f94430cf8fc31b5d12392d61970dcfeeed0a4eb9706313228962e845aa868ce45a67aed488315723d5b432bbef8181f4167106aeda196f771636d49a6602f22fca11cc66e3002d7f9308606e2ddbf36ec416016297901c607af1b50c177c331d1a6dfba3ba083bbc76da32d98ff8de010ab6b19ad21d4dad7777894fe570eaa6a774ffd867587778c57759bd2eb83df16d74743bb76e9442adededa53d5585da7455d0f9dbb30c699c44c1839c9d81746b72f7f3230617b528c1f1c8b5d18510e113de1438133d287ce07cf84e7208d2e651e43417bea0987d7f3904a0a5981c02ae73f14b03c1f125d38f85e943463cf41101d4f06bdffe4cbc563d31e6c53f2a19747794dfb49810622dbb8023285beebc1d1f9e70da1739f1688ea9d84f80bca105efcd156c49cf7d6396d50a856ff4fac6045c378fadf732efadf4f63ac2984621f638cfd9f0c320dfe2ba6e4c05cfd90c87835c64cc50a9ee65cf83456b0ca30f631253cebabc35c4b809942142872eebd280a26e0630513051abc2b8c68dc1c113ba7812ea06be88d68033d8ede2be12d1c2201ef95b11bacdcf461ec1e19bb6e8dbac964f629a239fe1db7dcf47bdd68fce04a3782b96e77f0ecf04994bacf0c38d0ed78d678ba3ff4e8dbb40d9934ec2bfe603b90f2340c1bfce1934684c2fba630680e33b51b5bc3a2da7e182740d27b93910ff64c0c70ce44c0dd1f74f89cfa8498fc1d4a3f21a05812059ff851e803f3d42724bc0ee7d514ba1ba1cc01aeec42fee645be17e53147939cd7e22feebbee566becc701f26c4be79b6783e5f3e9d3ff992a7b5c4de60bcb6eb578a1b2770d368d1aa403acd60e047862e97d6675d52e3ad25523ee84625995b4bb77552ef813474399a35c2fef10966ed1ccaced893d7012c62333ac72b676bfd90b9f0b6a3577aa0f4a294086a2beedf0c9e01d020ffe35d595f3a3399e08faa6d42f0528e78a146ab6c3071cd9fc98d0f1c7c26e3f94c7a402abfdeb1c5306c2bc72b8c4786103221a23b45e0c3d92052be71d72055b5d01a81c65f76c3ce82a9aa624a4af6b82a707ff7d8f6341b4d283982eb699cf9b769be38d90e8668aca0687328f46e06fb90b3dcec72a322c4bb5d13c0bada5957ae463b908b5b5d0d372d427d34d822b4513510ca8a56cdd2d0ad74029b95073f5d2d24a0dfecabca75c5601acac0a4040d33156b0a662021814d7b68f663247ed644e014c88a26305634303022c6b81563ef21ad3c430c0663d7fc47172094cb1319dc294516c6bd4d62d0b03805db3a9465333a66559963993a21ab56b36c6094bb7a966f3ec00a96913139cc839ce917c7e6a2acf9797dd3eec4207dd87be14f5c2223485f0a6b926da7f16cec152969d0da440414f44321bd17a770aea91cc26ab46321bf9d4cba9f5724d9e4b4bd556e42ab908b57a63ae1e7e56deadef2717f222b9502efcc65c4c2e04ff1214a2d58e1007530ca068843261c2c2744c2980f0666529664de8ba4501802f2b84dfc7404d0da8eb3618c3ed0f4f5dd2753c7808ebfac5a9e950e603aa26853e0ac61868cab2666d7b560a7d0063ca40887d18ffb2a3039d2eb08496cedb58050c58e5c34c4d554d6a42de048aadb3946ed8aa91d309d55496318882754f17b1b314032b3a600583915639142475c3b5edd4d5c454d6cde5dcecb465a54d20a07b49202a058b614b33740c909831e9b85c67d602c0bab18f5c678f4fe03d7f079fc0e78b83f562dd045fd311335d4871c3d44bf118dc9604aaf0500a0a1b8bb5d54217ff0eed1e0bb4f0625b19f8c7a197daba98e3d8d0269720d49a810cfa93f56f7f63fd0778649c2b6819dd8590f2e2a571cf3bc43f7a7f2ae3a45a95ea7c7cfd9c3d9d7f5f208ffba634b1ba71ae2d3cdf2459221ce10cdbaebc7f627576be5a69a59c782119e77d520ef73af9eafa8d2d49db8c9630d2c604f239f75ef93bcb1f0b423bd5336cfbd75f70dba22119fce885b628ce939c40f7065a8218192429f888421ab64b12a0fc3220a6aab5a1d22dd227f0c685245419b60dbbfcc839099cbc9e122897ae4dcd88f9212bbfefcdd86b9c0a6c9cbc4d422c7f2a61f35859aed11dd3eedb866cef7c59f68828a4b9744a42b6d46393985fd41de84d612c9d17e015c5d7e6971cc14292b022601327a2eebe1e104e2377ba2f722e4b8ef37ac82c5fbf3b6049ef0ef87b723767bc5fc2241fe1595f8f1ee590bd0835611f5b9db3612c8a658ddf53b33381898be4558ae0317e2fb77c0ec622557afc1e2f4b1abfc8702823d3607b156b7441d38e30575bd052ba20d8f4b436cf5c56666c5e6164950fee9e6cbe39924d23a705d7331ff880f775473bce5ced0863c7a986d7f8c335acd1638c955996cd6b695df02d5a4a5bd05c56e1d91859e3d37f8d30655e64d38e85d97aa12529c785c5dd7f0d7f08ef45698440150e38cc632d6f45f8deb4e0840df627e62fdaef7bdfa7dee7a4a71e9c6adaf05ea731f5e054da79ffa7deff7ee7e2fcc793d8096154d2f65382ef44cad2729d9c8220944b9d8cc430aa05b1ebe06f6087588c59640730965215fcfd46a3d1a8418f73cb830e51096f31519d46be3fba16cf08edc261e01d7ee6a01567927fea9025a5e317b6a5af9b8ca162a02c2aa3bae408030152243d2a79a153ab848bf2c8a53445c0c83607418c8e01faecb30a638a38747cde5c5fd13468dba6ef9bf6604b50e1bd30c6d068aca1c02e133d20a330ed237ce164617c3e473ca414deef1756706ff81ba93c3ef7481c3bcd4e5dabef9ddd3cc35e2c301202c736a177dbc946549069978fc5a7b09cda1c70f70e457b2c16ce5323bc7445c8c65fc2daf5c257e317bcf2a27179e40b8932a89453313b90a1a374197e1c4942077f2ea8203b9284124a073fd81260722b3a7cae1b3cbece472444d55dc1b5fe0e6cca95478a414c9bc376185bb68296d06d42d6bbbf31447dd442a8d52cbb3e73fd66b945cac46ff99e4f58cbf7faaa4e4afc2b253214424801826dfcd153371edc7cd383f5e5ce52fe91fcf2c6cb8fc2b102a5a5a778759e2a1165286b680b7e3b3b537a6ca6f418bc75b07de79d50f8674f3c21e258857c7715fd0fe8f3e8aba2cef158b8e3a149425b4c6fbf08a5f140c6810fdd50ad3e8c61bc37626964d33c9e774f10a2f128b4353f558e85522ebbfe76286ad84f0cf17dac506a30d531584251754a998863238217a98aa93053a1ba60e4086085104d51344228948060ac52aa53c5540c470d4218630c15105e0c44a54425c2d1422af309604ab05498530ca24c985e98054a89a670f6cc5257c58871307a6a1f698baa25996a504a092f5d3114d5628aa9283aff34e11fd714e0658966104208653c9bd0f7731650b4d4d63487ff3944c1c2230473e691280433a1c95730a6101832442afef74281995461bce90047225d7c17d968065d40d739ed342ef0ac8d5d2bfb42ff98786e5c42cac6ae617b7bd4708c1f065f3bcc8008fc7d5e412238b5387487c9ce58ff8fcc18e8ecfb8e94bff1f5fe8fe0bd28b3ef7a5f1b2ef82bf78a057fbae1fcafc315ffde56b8e2ffab28de5d0715d062145d90d5593d1bb27a32745fb37216fc92c06cb54590e8ad2596c19e96206db00dd8d01218ae000caee2843040fbde02d595ae695fdd326d83f5312586adb33e567099e90dc33ece71c9e0b96f2014ab878ef20879a188ad5429079f0b9669142ebab0fda3e3445737e5625c90713bdaa2c87621e291c2387927d02b108258598bd03c5c6953b661a8ad2ea542ea402207281c0b3e0e8b86714bea3d6ec603c8dae6b92361a481c13765a5d504cb944cf065258d825de05014c52f0ad537cf550cebc4ac3365e46438920f6292b1513c7e80b449393b6e31c70e092ee2c93910b049c104007fb0231623015e07a47f4522840841442138bb51281114a69e14786e7388f8d048bd93e8085ae6dcea5854943d1115c5002887c476e9c7abb9318aba38c376405b208ae0323a6b37cd61589a6e3c3e4d3c3e4211dd86aeefaf17ce0d8daa53c1ad806693b72535e31efc2854452504df789957e1e13b79faeaa54b0fcd086bb8b9b99fbc7af58678be7892f3a586694f4c5c3f75ea5c21542b89a0eb979bbc85971fe66d35ed62f1a14b975ec5efdc7bf5eabbe7ca224bc895dac6faa953d726f2717adc4115b48250a61c2360527c34f603a0da78ae6e27220be18931c0f98fb167bdb80ee787e350f317f1a708a3cbbb3df84551b7ea50cf1f7d93ed0b3df0be8ee13886f8dc2d39cea151a6d44e0ebfd0db030c22f6f2244680d19c8c8b50ae316f340006f386d11fcaf055afacac7632d79e56ca1e1f4bafac3c7d2dd3590d2e7fad98dbc85ccf15f9484de7ae653772d37cc0466c0f0aa88a1ae83cba2aecd923eb9cb12855e44083835113b472dc1b240ca7f10bf119111af7c0cfc666c8911d7e571c06dd205accd047381f4e9fc14e689250086f450e1df9617891113f9dcb220ec7f308d6ca4a74ed8e85fb69fa43ec2c1620a9fd1fa3b8231300d8f647c566d2aaa227eca485b645f06a8986e4ca36550605ceaef5a3a51ba48eb33d2abb93d2b8c70a4277b3155a5e6f89120b9cb7abd9463f8cb8240d7176a278c5dbc15a7b3a80aa11888aa0e979a58f8f7965e55f0d218d273906786c9f1677a67312d68a39097ecf0ab8f74598ae28356a2b52426d8460ef77479d18eb8117aae4c4d6e0305d6619fca4e5272ddd91d66b8e6e257d2bb9757cb674bc74fc7809676aae446bd9ec25cec48b345313e09bc986994c9a8da4295e495abe63b4678f1f9f3d315b3a4e195619e7fb4f36e2fcaa5b4d21c462b8fb12ba0bdd8fde81fe05fa37a3181c6acd2430973517a1e6d69ab2ff9bde5968d5a2f8c5315f309e08c800978c06ca19a6ebb522cc4080ed5d8fafcc91a24dba57bf28e7eb9310975075826095f0aeae9a507bcc520588dd4314fc30105019253d4eff63fcbffc82b856136c3bd0c1bf5c2e6cf63315aa121184b940dff062bcab1f7867e05e3d14fc7e7bfd7598c2dd2fff926aaabfb6fe497eff9f1f572db501a029830e55a10d70e79dc094b76272173c10ea35f3610913193da5930501aff97f49d58f524dc18aa628baa8c561eed4f77b4329587cad3e814ea37bd1e30829a1b064a535863ba4aff150b22096ee5021cf1f2b9c21946cdebe5299e63e31ad86cc0520294e992f4bf4b821c521b785e214db9c393d5199bd32cf47d264ec18c6e359035dff1e1b8040743a22ae36edf25bce49698b50156fa69d8a27a2f1dd72e733c70cd7a85f9b9a8d4ae7d9d7b778b14faf9218ebf7ac88c61e8f6f9b45132252e8b85b08949bbe526a8aff23de39e6a0dfed426117011a74a0075ddb1c6c88a79ba63de8ececece4374668f349b4c4b14de6a0b8da1c85cca98c64c399929133c7db5f6a2ec992dede78dbd7af53baa927f006d86670fad5f8b378305361ed2129824e4c9efd88a10d368162c33634d8c0041bf6973be312f04eb063c4283cd6d10a5a4508ea35574a2d9a2c1620dd73bd7a28e188875fafa53c8fa55a29af96f252f0979b8451cac8473e0c9851d366caf88dc1d31b1b9b9d4e6f63034e6e002604c3fdafc344ac7a26810e67db5ff73a8c39b3a69a832f5e806317fe0f7e18fcd60579427bf467af7b4912b94c39a6923974252fc38f5eb069fb8dadc0cd492cb66db102072e4f95176ad90e8560e1b7364367a94d2b10da4abde22705ec5f4268c4d430149bad34029d83975b6ed55b2bcb9ef0afacd6aa0d0e7df22a7818ec3cf29bb9e6d454d3fd139bffab66b355e707e974ba91fe9aaaaa29f56b6a5a51d51fa49ba974fa4f8af74c178b7fa4aaaaa37e3fe7ba2edc9d73dddc9fd9b56cb6265eff61ba914ea79f5353aaaa3ca72a6a5afdb30ca4d2cdf49f15a158fc89e28eeaa8aab2e3ae4c4dafb87199374519348d66116a959a25b7528a534bb54c295572f97fbfd6f4dad019f4202f9de6f8a4ee6d0c3a724a7737363a85c20e9fe5c290b837e8036a17f2f98d8d78cc17c99fbe02bd195e0eaf820e4219a9be09b432ab23f148bd11337b361ebca41c901f416c93d60b518305e1e94ec37ea1554e81df58ae3796eb2d3e94aa0de5e6d2726c5722a1745caad6e72118c873b0b452f7b3d569105a8080fa99827ab07a73c2c06b459ff2bddcca39f09772757769ae1e42fed24add4dc2029c82ba809f53e2f5485f15e9a8ce713a4008b47cf92814fbb76213aa51ad85dda77a3112eddf619cc60a16c76b1a10021ac6789223024cc8a799a631c360aa094ca74c6b79ef395ceb4729687c0d9ec42ac6b80054910627d052149a508c2cce1145219393e72b95f393470130a431c6142741c34c4d08e9a5a6a8aa8209e0949a103486a91125a19024c10942159cc054554bb692506c5d354d7556b7a8a6e6199bc18009e3d8d72458aa287e897f0e2bcacf1b6a8669985242698ae9308f159cc2581c21706d9ac6d8e4f8cec4f8ad3a5b63fa5955d7d50a63a6aebad0fa7f9e4f35999c4c382a2b10022a9e02a0541152d45334a150a096c3570a9acbe7730069ac00c6365000a2305d5109c14ca10aa5e0248434d6a20a28046b9410055445b715c536d459a653533fcd749d9d2a72baa6a4688431231b28933f464816538ab3847c5fd53406000e5514aa6882b6956b740ab9288f8a680e55d1c23e2bb5f04969869b4c856b36ffeff2855b465716fb10f5bbe29f9ce9e10fba8e31d8109e259b8633e8b40bed7cbbdd97a738ad10d6639f1a90833f9ae74442f8dbff5b822f91df38827e02a1d621368691442f70c00d7c153811eebbe52278be5b16bb6e31b7dc5c8468d30c59cf0f059b1b85a202b1c151e9295edba74a703faf5ae178c99ed649b6d0ffbca2e14f7ebef01ffa85ae992cf02a5b49c7b828b64b22b42d37276a5322b6512a252d2b598255c7d89c3d6199245b586cab166b17da7714165dbd98ea84ad1ee1c3a6d06d876b46cba94334ff65407b592a998e2bc0e269a9431de5a51a274735f6917e2dd4d8f3fa3e0d7f0d3db42876360c826fd4ea15e685ce215290daaab14c11bcbab71c8d5fdd1bdd9927dc02ea39800666eae0f3f667454cbea2eb1609fd6ce2716ca85b986255a31d4a0baa463782adaa360875f4eb98e22dd5c04f247e9906c12f354bf9657bf07955c33ea174839824cfa93b4d351c49e559c938cdc3e178657f284e9514ff3086389bf3f783eead0e1ffd0ebf3d4c412f690d7ce1f2d5b792031f36b7c31c66728333bc1b9ce1e5f4188bd93a316489b95ee373bd52767db7ecfaa9b2eb37c77db86485097fe4975d1fb6dae29fbfa77e3b57ae6cb4dbbd76a10d85767b4fb506fd763007651d66d05dcfe74750aebb73d5da88b3171ffc43c4034928c37697b7fa7cb8cbdb4d47e755cc94acb2316d978e5be6113b4db0666b7b811ab062a9bc47e55e6b665248d31dc7e85ac99db45db6cce3b3ceb47ec42a655453c5b017c899c3b0dc2557410a06388912e81cba321a53a55cf7e2c6b1c3bd11d56ca4161cf113ae376ba3c625e0cecc08a0dc25d89ab6675f71d43be9e58e658aad09aa298a929892f7265c794f179b61ec861b014451ea963155883d654dceeb0a28d431520b79c550544775261323377515ab84c086e0da1744a09021ef95413e1fcdd659581581e5ca43d58e120d5fabbc572134577d1ee5c9559cd0fe7dd24e9f0f5540f05aa90e31f57f30a22ff233b38d7dd527bfc9f4a459ca843aa2570aa54872d2182a927e2efdad7df527911d8bd0874fa0337cd50019cb2aa8e1624c211ec654954adfe0662c049690a5c6e2b00e6da2255c40d599d2aa27a963984972fb292aa472bd4295e25c6be6c87a9e9a02d394ae2dcd5f2952934c562a9383ef4e648de59262242da2d1c597e9c99488b556489a5e7b514f3a065e7f68d29d12f2baca244b68a9ccb4479863a81a9dad4ce731f04735774eadaca6a8a9190ec5de3d4d6332c58b97bb3d4b9d4b1a555023e6a1c0db25e72367aba580236a67b40998e45c7ecf99cbacdfb8b19e9973268bb3f927837370b7e34d4d79fc072543bb716efd8666e42f1d3b7a299fd68cc90b478f5dca1bda8df57337aadee9b9f26daebbc68f31dbcdaeb445e5a4741897f9a088c2f100a9ade520d56cc5c4ef852ad493f313ceb4f50a00a14a296836bb5d51f36e72628edf308d2426787e0d7c3d6bf2e7e0572601432eedeadacba846a50a86d27563c29a5c4c2ce02379de99c9097d01d616a8463d55e3bd3e6a27358966d07220d75e18463cf09b226086eb070c6fa6dc146171dce12e5db0dd11c61e1dd3ee346e353af6a77bbdb64808aeab030511bce48a6d760b8542a16bdafe2ecae7f3327a493e8693452c7158526b728fa4f2528ea912d32ead78d226dd5faab6e4feac4d258692307afd19621827aa95d36bcad491232fcbe55ebf46476fec86219f009d91b7bc07459e4af5f41965b2225e0a4be9857a01c90fee04bca786ac489a348b90e7a7caa9554895892f7f109cfd949fe2e79eef5f2914367dbfedfbd0f3fd8d4261abd02b14f282373df087a8d8837253c43929a063bc5fbc90b52abbc4e30be552791eca73e579a87b61280ae9a4d11a5a83fd4b2158eb5db9d26b1f3bf670bdee1012e905377791704832db329209743bfd7ea71bf81dd9a6bf232dbfd09e38a81c5616442cd473022345b00eb155a6e2a7caa5726a44d1e3959a251851fc344bd00f03fdbf271c9f477c7fd0f3a55fb85b2c9e12247ca8fb19fc92b8f44335cd205a4d0ae241371cb9b63f88c2fbb77d418f06b8e475e86d62270829cbe69371a9da5c84da5ca3be0835e9db700aeac25cb0b65495bb499517a15c9d2b8781d7fce595e1df59683596ebfcb8248ffb2025a88a9d9885698b42806814cc49879f84853f0ee248509d72a444757121dd1018c16e39a1300aeb99b25d989929d8658ebaee65490d3447d71c0d80d90c584285a4a761195443fce3082d8c4aa14da6404d3080dfd6b5c2a5a3c72e15349d63b6511fead2f35831b6ca2d76b00de34ffb9dbedf39cc2e7e6b7b2b064f1921377d10bd0f7d1c7d1e7d4df8cb9e81318368ef10a96ab33566653c12588794f748bdcbad83d82e8e9f33e3aaaa46951c281ee785c5d55b01d55030ec8da163a0a0067cce8bf9819cb654a2d4570c520aadab7c6994e673d2c1df8839a1dedaff65e97728337ee5a082b6e2b5d80e5c3284f76adeb029f1a560d80fecf34a25a2ab3e2573a11115e7324426d31ef43b3157d7cde06d5589de26a512d555b9154b277491dda4642e0c171416a68a68569dc81b38dc3ba73fb2dfcc4f2094190d4b0587d8508c9a8b3c9fceb15c18da34812fe57f7253a003d24feda77e1d1a600c37d3890296441bd1f483b746bd1ea41dc017a017c4b78bcc5feb4b91c17f2a4e6e0fee7c786aeafcd494383c7439d066cf42ef4db7974f9fbe79f4e8d1a3374f9f2edffea65d1453594772fb2e32918b5e21640e1194b21a8b92432e2894ea8fc6b30884fa635645a1203c2548ce2db1d0f81bf2dc836d0106c77ee16e610b877baa669b44217fff5ea21245a74f07511eda22bb92d08ed85de9ebe7fbf2dc0611f7e51f2c0844d6260966da186e3f019892678e051aa3de951da1da6684fab15837729d9e16988c338e9cb924e594bf8719e6ac256cf17ffdcd4d4071fd8fe029a1ddeb6d3d0b1b834d7876c45bd787cd984c5ac65c5b96764c71ff7d566a9682d538dcb5948d5e96a11d83b523bb08d0d6a0cfd7e5bc69dbf70c6ef1a4b00adbb28dd0b365b3d3b7cd7c4f9878b4a354e8d31aeedf872001358c0608a32eb4b7b6b682e7dbe1f313e031febcdbed6d6d3d1bed3f286d388e8daeecb570ec2583118970033b3274f7e38fdf7df7e38f8be3f4a3e7cf3f3a3d4c0192846ca1eafd1ca7447f2e373999db1a26837dfcb7c4d8799caecaa8fbac3fad72b3952ac945687ba1526d39765aa8488e1fad9dcd6495dd0220b104c1fb68367ba676f4f892d0c3384eab525d184ced22b9028dee17328950657faf66f16d8cf64a9565bab7776d136b5e6c2d75443c8f7d816e7b2facf5f640587c5d3e8b5e2ebd79cbd2993774e1dd9773f546c306841ebef2cbb7843ed594e198df757dbf2818d7df15046cbe32b8058dd063d7b007db861db9c8083ef57ce428631b2022160efa80a218a348d08bc318a3cd46351ebaf33119b6fbfc0f8233a0309277f81be9837c5ca2b51ab4f20c44910963b18c56a33e9171b7cbb02d03913cf58058d2a4fd50df2d76828e500cf2c05386bdf8c17003ea0708154c0b20d31e6c15dd2db9319ed8fefb01dba42747716c1e55d1323a1baf5fac06d2f42c8ed4fdd8853f12f95b42c61551a5c7bf27ad6fc220febdb12d0b845eba2f167a4a9e906156b60fda2e6044277a04ad8b5860b5e70f49517bc93e5b9fe8849b5689edd2bf166e6fd5e104cd275ea4afd6e7421db5d8517e75544ffdc397e4a2b54f7f940fdb1c3b98472fdd876db407467be7c5faae6d857b7b8da9f857f94cddf9bbf6c7246af1fe78a93eb664cf5ef5fbe0a617ed7a3b714800a68d97e28b0b0f48db8a604b3409a5c1c66864633ff87821f6f8e4a5c247674fa3620deebcc8ceeaed893515332401f477f4699c14bcff61b1b6e6aa27a368c531217a10eb5e30c7070240fd908e386c13d7bd63381cdf51dbc02aba2ca476e5d11dc85779fdc29860cb394f0c2879414e18237b9667cde91427d353d3867fc7e5870ef342025fee6c8e415b39b2b06625c5fe6f7ed2c477facdcb839dc3dc2bc663635d0e23993ccfcc6bed69b81f1b9b7a115c69589f8ed5734f1b6ec61b9c30dac694e34c196dc33abe7af913c338b294440e55418cd9a7471accdf312dcb6c1b055bbfb438b6affb2b020bce9875c5c10a9872ccab7a3c440d7f069dbd7ed171d81b7a51c7e754fddad4ac0c4e15bc1d3951c7419037716f0c9a6365dbdcb33f5d7ccd6d1e24b9102377f86ae41e048b025efd3deb38fc380a41f3d47e90c847783f27aa179eff73519c9aa7f689284c45f6bdce468a11953302dd541433e28026fab2b7bb0d1d68a32984c622278e76d06f8521be7abccc5e186eac1786f3da9475d80cbefca1b1b22b8799e6c1035179235ff95c58da931f1a7e45d41c501bf9b0052856767cb063dba77cae277bb917884f9e7c32309f7c206849108eecc93088e048d9fbee871ea1a95ebcbcf87700056de1e3b7c9476d5306891aa393ee466f4608f640d798fd026b322f1eee8cb8814e8e4fe64c7dffe049ca5090d6aab76a0cfe5e6b7f703cafeaf472e967c2cbd65f5343155a86f51f535d1d0baa34f8fcbaa0a855835e2edd0985d2a82d6a3b044145817b6b6f0c011be6415104d3f39b541d877eb143844a6f1c7d6ddc3eb288cea07bd14f8d48af224e796477d8c303d41daa9324638bd098ecf19ed1e8790188be7bffe076f9fd22e1ed1799cf3661283e8c82fc19e4c9fde3e0c91db4f746cddbda131f3010020ed7b08991f87ea998c5a5e09df78bc535e6bf0cdb82b98d79227762011cf7715b9631fe061bb2429cfbde458a78b2afe7f2a82dc3441061e0283a11e9cfca110bd8f4dd80ed5702d3a54cec1c04d4ddee8602c74e47ac32837fbab1212c60850decc606a06ee826bdb92999bcde86dfd9451b7e67d06db74568dcd81cb55146c42ddf27fa7feb0545f4ef8e46ecf74722e3f6c0efd9a69f1ff47df9ce185d78ec79e8c2609fab9264770fa2002fbfb0283bdbc328a134b20730d171117d71740fe0d02ac01eca0882cd6f8723948973e22890b4feea7d0b54577a8a41164414c087275e76e4c8cb261ee623f52edfefc9dd882ff7c34d7f3bc739da392ee50513939313bc1986ddf17751b8757120830af451e50067af417d083c62d4961a4d2ff205836d854363b00d045c09a1d28602a5d72bade1defd2b5501defd686c64bfd8c2d3760c2aa0e9b1d18d29bed6eb416764c8fbfdce06b2a272bc20da454d68017dd4129ac0f342da1a6d9922803fb4008fd9ee853f884d8691fbdbdd5b5271224ebc87c37f806eddda885d76c4262b9b86dd6e0715ed36f27e41fcdf459bbb28ba4241cc6c195b404329544047c49e1e77a09f103baf04d8d827a1bd6e74a715269ad133773cc8e4f0c9b82f76d91bbb2122b6fa5295b0c3114f632b96de09a343da6744bec12de9dcc4ef3e1b6d182225725db98d464fc6d9ed0b0cd26e4b1962bb2db6ce1049d39643d9eff3992cb6b2681bf695e163b9efd03674a18d2602588c6aed15870236ce9f5e14b197df7531f4516d537a51c89f2f4abff100e6fcdd6de8431b2505260a74a15e284f3ae803bf782ceb79d963f9a9a9fcfbd4e85b9748e0eed82c16d6cb47d60bc5d9571d3f7e757662bf4f47360d6f4113a8869a42fab8ffe75aa3d5b2217eb93dd256fe7df3dbc7a66666a68e958e1c29dd73cccde5dc63f9e96978f99e5a1c9d39fafa46f3f547674ebeedec99b79d5c8fd57ae155315e603e8896a2d493e0a6467ce8521577f49a4f7f2078d0d74cab909c5f5b9baf9e621890954f2eacad2d544e316c434faa4af4c1ef5245ba6882b2feaf142afde6025c0da8b3bb0d3d68a3b9e0fb6c2cd2c71908543ec1f24035f2e96144d24f138dca912704ded3918254b17afd1421c130002aec6ec336b4852def9cca6a81f7116b46b639c137ce40cc55a40c7d8511f8946d528df4154551fae26b9f02c214e9c5187c9410e851436506dde45f8d7d1ba3f6ee366c411b3942bf36ee67eb8fdfd80ae7816dee84b3837f296c5718c73a4c8b3e1c7e631fafa2dee09628a2b1b7a078ff4f0456a6957ae44223346e95fa59801e53771151455753950052598f99a407441647a047ac30366cd4d7d26ad50d7c9c6b6ca460bf15e9f4ea67a109db7bba77a4f37baa417b207af73de2243e4b7e4af4fe2635d8382cc96fbaa38d69c5e937e8c600280656bc8ff67c2482a5b0af4d84463603dd7af8ce3b1fe6bfdee5871fbe7ce7c30fc7e89039e1631d11626c64079a05b939dcb836e6e38962447398c5c4c74775335bc6702b8a76b47b511e1161abd313b60c25b484502b68707c4f6def903d37cacfe8ea3f663a6bde585fbfd164ffbc27b0ba61db47869ee6e799aeb38b2bebebf7ddb7bebe72f158e87ed81ed23fbc9fe47e660584a059129b778f7b2cf161df1af45efbb22b11757ce565af05d4eb5d7893fed361613fadbfe98218db3e6c0afb4a94598a85b5ab494aee6fbc895313de7d67cedc0f13f9d5893c748ad3d78f1f9f3e7bcf6bcf4e9f387e6d7a3a16ff398b8ea2157401dd25f6d97e3ffafbe899308efb18f3e8edd90f219bab8d3ad7c49c1f9757464306c603d997ddf876bf630c71b010c537f0a9ed63c3fdfed0b2423200d4ff6fa17d45707e53e094fa2edb94766ea60d9d3065ff7918372d50c3bc3566a8c1cfcf066f9b6f1b2bf6ff1a9a61082e64590b0d28c2f3c2702d0f982ffb48c8c0b5433bd9c88eed1819298fa486cbff7c68e741492390940ef77692d1d3ea240c9c16b30bf087128b4acb2bc37fde22094d4b902d00dbd412e4dc17cf918466da00833fbbe38e8f5d803e330c36f003bbd74f7d8ae9b64128fec697be84029c2af7759a0da22996867bbdc5b7d10d706cdcf622b4c7806ec8f8496f4d9906a11d27627ef036255156581a8eecb450cb88ad16d878b026b735dc2abfc66a20ed13f8ecef6d0cb67bdd6fc74403aa413b1c87a90681ebb7c53769e80d7cd8ec3e3af45255297481688a612b0abce5b611fe8da0491921c2f55b8269714be31b119252c0434d0327837fbe4d75a5b08b3a21154f5f31e8c90508badd8b6d4a9f1d1a3074557df00e195459b22061bf181c73645211e35d29bb35d62ca7c275ad6d1b0d5e62c7f7fd0d8925a1cb0b15a16bfabedf1fa020d8456c4fbffbd129b12e2d408db381d57898ab70d2469bf136aab5968c67d56c2cd5971a758c72ce3753e949426aaaf3aa9993af9c3d52bc742defe4146a3a9aaa9b0923f311dd5188f2552707ceb1c29c9d983bed648f5e5b5c4bd996e7680985b809dd51948c99c828a0316aaa00bc7eabbb9ba2dda7641483f86ec23569215f3ec5ffea73ea34e6184f8d07dc92e61b9f610985ba09dd5695b46565a9289f81e339f3f939db9a5b75b2b5eb27cea492092ff54d855a36e37536b31fd61d852a9ef3cd546612d3a3aaf3aae2926c5bc1ce2110f3efb9a06eb1186101ba6ac5f736f6024bef53fcafbebc720673ae7ba506cf8d7cfdf08afed2b002a27365459386ac28cd45151d1bd7a85bc49ab694ad9f8a86d68b6fc69c0c0d86426fd29f997995a3d608994ca7bee9e414a238fa47b266c2d455665b8ae2d985bb6e9faeccbcf2e45f38a7e712f65ce198033907403529d380662d2bad288e9e70a99260292f914c9d59bc56cba2989f9581ee43a8558e6c6d1469c8290c3603f787fa29a8cff3bb3292754d3627a732b72802189c06bf2eea1c84cf9689b96a5d16d2961b6ac0169e4c518d620ca91cc693292d6da8966a4d993a054d07c8679c2c4d3ee81f7def65c5500040b1d4d42c8063324b4de7302ea40058424de5f0565fd8f85c4d6630004e27c559fc3358ae3e912b63c8d8273bb3cf15f272c333dbb289c869a779ce6c12c5fbe0d5526b592d2f2dfb62fad56498f01501def57969d42adacbd45c4b66a9aeb4a461eb29b80da40f887851761d4f5786bd0abf236c4a539380732935c12c076653aa255a69d02bef3dea3f98a019273b01a06b40756bca542dd5c868a9490c6e0a63a01a494d629c4b0dfe9eeccfbf0092b693bc39c4b66cb9655cbef0dc6c672999c5b89c9ba8e75433f0900c32f27316eeed4b532825e67b564255348f6e43a85217beeaa53995490f81183eadd57cafdc2cfb6eb9057b37c984bfbd02c462835bcc227005c2d0a0f0476ff73ff5e9b77fcaff7f79fb1720c7aefb3e103eff7b5ef701e0020d5cdc06ba1bdd683480e9e734fa361a33d33d33cd9921399c19f02192d2b04951122da245891a91924c4b8e284176257a594fcb9fd2b0529152b264ab147feb3493c89bd8b155929c8da6b5d9ad44da8a5952ad37e949d526aa28de3ce4c498ad73cebd17178fee196abd3b6403f78d73ce3d8ffff3f783370829d19f7ee5c77fdce3bacef730c301ff0d66f8bdad56abd5dd0514a2e2f7e33da8b25e792d25bd930f28753745df1fe56ea60639b37f7c355e1ae1582664f3a5db08f5d99d6a6843f2e52b1da4a4ca571455ec7904425db7ee8511e4455eaac2c14f52ffc6886be081102bba5fb1408b1b52be3af3f8bc92aa6ea9c0f0df8713b3ff7ad6f34cbda3616cdab3dc54119ad1209883562b5c6b41621a6c891687d5f55ab5e6b7f969380535ee9763f8b3562df7631941319a1001df0362f1ee9e1ec31b2034efe8df46f7574046e5fad6b566f7c053b62b0fce82c6b8c15ff631b4c2bf974369bfdb516c59fb81fdb00587e81055a3283ca3c0787a983cf055b74436c89ceb9668bd87bc2336dd39b2412400cfe154363b15c5db093077c277da46cb32a773084b7413eabe7e36042a5ae551bc9a9f85dda5fbd3ed9d9ded765b08ac60f775a9f7071901636197143ad2ba10a907faec8fc328a7c0fed392311b6feccf698966b7f4ebec053f58c12707f39de192af8d46c217aa3dea30652d92f84cbba6bd2e3fbd0882c8cf866310087e1c66770741a6155c475e59fa0230a39ec9a0fb5f4707fa3c3e76246a87865ab7f7a1036d348ed610f2b1b7aa5e35e8233e2b9d8fbce596dc40960886675bc2876021a49a4cc8b36dc0c406191a3774d8dab72d62e00ea19474b0412cdb13ea3de900a594428708855fcd0942373d040f8da39ab4ccf15eb256c40e44a519a33460bda89d8303aa63d813bfb3a7a4671becdeb6e99f050f4b8f0f33495bda859069ef49670f56267271da448378b3a72407d69df166372aa5f31002ceba5cc2cd5679a3e61e284ccd51811e605beffeca0fbef095c3afcddc7bc2be9458b8b432ee1e8b36fb997f5659fc93130b6fdc3f7162ffc6850b28c49a55e53d853e8dfec951e51d849a6d44c05d45a113c0d377893eeb45a1617df4d9e1ab7cdad8d78e3e7b2cd4ec3734860927c4200bb31380b54730a7346e186edc1a33f404a30696ff7446e35c4f9a7a8a7349150240b0b83661e871d1051708c6066531c66d9e700dc3664cc79a06189635792511dd991089d6aa905c31e6441d9518ae1a68dab1af6b96504dc30030f1de7d6a60e071d7306d4619c1e231b66e8c99665a37128c19046342484ce7b6aedb9cc728255456cc66628763ac31ce9296998dc7c6e3f6447c4222d64ac05acc083128b528336978146beaa8c9a8d5275364d03cda464ffa3c74036615cfed4b57f78fbb11cea09ecdac546d54238ab01b85f86f47e8f4e477474e50e1214c6ee6245fa30cbb55e07d879d62102bb2570c38a1f68b87015b5df0bda736d5701287a4b12350fcf73a41b729ee150346f7fd221ac0dfdffdff0e7f1f0e6788c5c715a4fe786c22a15c3613f1ac82d477758bcc880618ba4cac1d133177e0b2c3fad5abf583443e3eae50f7c779787f8c6715eabe1b9b4c484b6a221f1b57a8fbe3dcc245d146bdcbf46c70d97ee083c4613ec025f412fa0442e55320b46e99fd563f05359527ee8f663e9c1aaed2e4d4b5f253fc1fed2742a19a1d9162ceddd092e442cdb7baac661d1eacaf2ed710d6acf1f85bb5cd7923a59f3633967bd29519e52e3584ae15a3dcb608d7e0fa5835e39e74b32732858d7162104a63933635e9fd105c01377f444de6146005e3ad85cc6c7ce5370130c5f171ebd28953185708d72850625b499982ae51398bfc2a31b965630d36cd24a58424e56983729b2527e2849393802d7505acbf41c30507a0c053fac2562256e89381d392adb698ea59b4fc6195e2559f9540089d4e310587dd6694d5f1efdf90f8d4f8f5b087a0d9931d2d1bdef0f7af8bd9eff2df84b3a80fdb60296a29af8ff4c6573d95655b95544c1d2157ed6c0f3be39f7b1b4d67ce564f2cafdeab7714fafceeb0373eb7523d71369d21bbfa7dabfdbe6d19eb54992d2d407f80561847f5e787841242c921e39c45b77fafad696d12e37a0cb7c58cdcc6319dc74844b77b1b7a1ebd80de2b63ea4248ae41408be18d202f6c782304fa1ada081f3f18c7013293cceb657ab542b6332f72e698f3b7910cf4902cc98a322dcc17ebbb3738d5ea415ef64b8c96dd6ab5bcdddba8e5edf6cd7f75f4a8d210aa11b44627b474ba4e3814433da1daf033e9954251ad2b66b1404a9c54f9ec70404df26528649d023c2fc75722164b149cc438fb16736da740c8eb338582f3e184cbbe850d6625de21d62d837e89e0c70f35f88046406817a04153c3856cc2e57fccdd8453485856a2e0f038db1322fd6122c64c2cce68f2424d7b59c39a381b8d4d6b4b4ee84d841af5622ac316a12ef4cbf25a561a9237364142e8d048a27444ac57df9b8034645b87b03cbd2f5e6c17d9d61e35f1d27fea1e98c9284ac30d15d3d469096972776679dfb672d7c489a55b01cde90d5f4cbf31c0f5d4466f976fa314d83b251667cf55c4672b3d35aed407257006422881d91ebc40ef21f2fd851705a0020798e2a57832195fc2142b25c9d09731c56e89be8d965c4cf1b26e28fde9355c8ae0ba31994a4d1ad7411d88a5f51db9093b7a3aa6ee1ebcc6caf02741a896f024cf58615e0aebcb2f2fc9dcf2cbfd08a751edb10f3cf8886bfa1c4183b4c5c11ffc757fe3cf064f8630c0617a3984be94f0dc6e685588e4d8505fffec489cff93e8bcc4f98f80760ae9c21dd84f0fee0f448ddc55de811f27263ff6c38fd0bbfdd3bbc4fe3fb0cdbcb8322f41c4834d40bdedee810f559fb7ec1cc1b39f11db9f09927d2310d568a03dd68fe43df879780e86986007790f9aa13bff2b774976f062d88227c216ccdf656561b777e16dd4db6ef736d5dad8467968435eaed29100ef3bf267c1dc48d2ab81239dc706e14047d05aa93810e44107f2778e1916f2fd978374a326361835f1be6cb93c215fde8c36c57e242f21d0ade36855aed011176ec309ec2d4235ac47206c433025e560b26cfbfaf2e9e7ae5c79eef4f2c5d7ab844f898f39f6fa8b9d1e37e81f369cd76f5c79eeb92b1baf771aee4b57d525eaf2ab2fb9819db587079b435323f160535eba94f2525e29e50d00c2769acdd6b56bb70e0e06c160657eb0fcebcbfd7c7154ee6729d088ab5b929a7375dd8b72741e435b3a0935c94eeacbcfa7c0a945694b13e0945252788c26966a8035fdbec929028624c5e43a680480130943a148319333312b4501708f131334a04913d8e4d4bd8686f170722ad169662a161f33016b8ad212439ce118374d2136c7a66398617bdc304cd330c66dcc706c3a06a099861ec32ca689eb13ae0192d3323ee9509dc05e7737121b7515a172ad1facd5b7134951ad37c87d4db5520f767de8cbbed8ea2a1c46bb4e2c31955d9e694628972d5bb4976bbcf5d2a5b71aae6cbb99e5446c3f0ac59a38e116d72d36b31c46e489fff62cfb9eebd7ef911b5b0bee89443fae4e0d9d470f2244672bf594d06bfc859ef78cb4592725064260b10d2530893318e493a77d8cb4c0e7d2517e7edbb4f39699b77dffbf7fc4b4e49117257ab18f89bf7fcdf3a4d53cef073499966d19864cebf58d8d9123bb7beb7258015adff3fc40520863027e53c574d5782984ff163ba180ed77dd9a729e6656858ac8c4a723b4cb4c6d76557caeced6a4bbd0dfceac06bbccbf52dd9859ededae666a93e0d4d2d59aaf3345c812b05f16d8d7e378315302db32125a3921a6107a528b1bcc548621285ba7a4d2a6e16732eb85ed9d35101399c9dff575199910d3bfa99683dfd72deadf12f9a741f72f528f51669b84e37f967676ce9f04edd735a2f5e2285bd044e5fedc94814806774492ca70f47d98a8f2915fec45a0bdf4d15eba4affefc1c0da39943ea0a6b86610a54ff0470782f1a1695bbff891c104968fbe14c662e1b00f6450418cd14680b4d61b902741cca04aa14adf219d361b0dbff9313669db5f8809696dbed2b4ade6b513bc1715d38b9be127b2924d646bf16798a81c68db3ca026deedfe0b404dcbde833d3d126bc30cbceedb9878c15122d1c256a43e4be82cba0721782d05e6839184582884ad3b953842ad947be51568ddb99c6ddbec1eca172484af5b8708d0dced0ebc2ae3731054361a5556a926a0ca0be2adfb4b44e8b885bf47c6ede2fceedcdcee7cd11e27fcdc84b53c5d7ec4b61f294f2f5b13e738f08925a7e218535386537196261abfb03531c78da9c5c52983cf4d6cfd42236a53e4c84659b17ebacae1e3a41c49b1ef944b12280cab5868645b370f0f6f5a361cde3cb47f78d3b20f9ba67d78000707b76c2b7feb402a58e6813215c8f9f243e859f42fc55b082dc599ac23d9cf7a6876e7fc35326ab62e712f6a773e09ab83d745ef6f9c83f3e035dcc0163dfaa92b50b5213457f75bb5473eb3316012af46cde0e7a001a4ac3b31ddd6415288691a2658a7d420985046c76263b3767232410d42128651f298a161936b5c4e419a0424c686244d2394d0a4992ac4e3ae6166cc42c9f85d62328d8b6731f1388289c5b845594267e9184dc5de00c4c0dca42c1d33e2849a44e3443338e1849954f4526232166334a11b6e829984188cc6753da99b59cbd02d8c2911d7a62c23c9814e9fb40d434e851a219863a24be234622a4bb665597379c3c29a56f89f7205a6db4c131556e46f5c5c8995f04d89611813e9b1adf9f716d60856cf1325b14415308e9b3c3fe6cea7930600a3c6c6722c4598ae6980b126aeb498a276c35a4c17cfc9eb7a0c134c19cf8d312b8e41a3545fa9245d1ac5196a49bd6c199d458f0deb657c60bfd1170830a8b5e0883d4fbc77dfa41750ad58b6fd6aa032d92f86c7602ea041b32d65ea03c0715d896c873d65e1a64f73b06bda7b81bdbb2d5958e447f720b0066a1433430681ea91d8978cccd158415be87e89751a54caaba7fd5c854c36dd3bc84b8ec7c3135e3f274fb9779ddbbb063c293cb5447577edebb276bb9d56eb50ee5bb017cd2af91d75fa9ab8c13641854ab4ba1ddb6ab783ecda6633df6ed9d6b56b969d0f4194940d6c3f04a383b08e0d1955500b5c9a3860778d84d736bc46bac749500b23cee0f0ec128ee97a5c83fbb6b4b8a9c7f1fd92e8f69a11d76079534b187a1cbf2e8763ba909a3ad7996ef26fc1392366eaff428814a6feb1ee9f183193ff598deb329443cc611df84be8a0a7d0cb7e64d4ba92f16b81bd5cc9f835097c3ec2f9b69a71fa65fc9a1b95f159b6565cdd10f7a5ef847205739304c0b49924c297423ff389f0adf8b46d0b995f51ea0ba19f82a68b2b81da42ea9fbc64181afcba66e8f74efe9301c220d98bb578ca129ac5785c62d7c5b816e792cc3e361321b337c713986349660fa6c9e33d327b21f89b63f1d854c6c96633ce641cae8e22278aea6c09b4891e406f18e25cc3c36af2d12a757fa8b0dbd7c5f3be9ab7ee0bc9d4206702957733884ad80ca20e36cf100207fbd94221bbef140a24d2d303ce24d396bef25137076c25f207da8135e9568fb18d44f4c8227a2b7aef883c86fa60a6111d91f9cf16e10e8026fdb800030056cd301dc9ec6dc19b0672b7b7162e1e91a67b7e27b4b79ce9a5adc9fc5095bc24a4d1762fb7e4a37dc9e21716b68e4a3bdfd9be1026987fb477bfeff793d843f95ebe5b1f269734da47ded7dcc181288f92202dfb604fea6f79d9fe1f423a72856c5d6eb88d2a77b9dbdf694a65d9ce55d1b90ae0c1f483631ffedc87c79aeffcdd9e81c0b6baedb75183ac5f7f1ba6609bb5a6bce6c177be3598d47384ac5fdf150d95ecb3534c4834bcfb14c37ad1efc7bd989ab3f2d5f24878ff2c73fa130dfab9d4a4e1e2154b4205f92febfd98b46c5399ba4cfba68a2ef2f7d4969aa9a941def76a60fdf9f4fb88416f06fae62b41b7ddedcfc5ecc06de82026598c441d5637aadc6da467190796adb9110d5859b07b46eb8d01aca462342bb3138f7fb4b8ab5919a3fb17f1f8bb1f313396e24e62ec9e6dca36e717cec0e67cf79f059049b021b6328502b42a892f9df8fc6d44086c252abffd664254687e6cdc7cfa69733ca642f5f746c02645c62341295446f342bbab7237a2e1b90d5c4c79fdf0e5dc2937aafca7df7ee0db0f00e27ac1b1c6f8e2030b73ddd6bff1baff73d003bdeede8b97e72ff857a5cd6c41d7172e2f743f01420bf7cd2e6bebffda9bbfff0514e542894b669bf3083522aade0a483e39217cbafdb9e1d5082471bd0fd0fb373ee54f489fb2d270c5b49fe169f3990064cffe846aa685ad56d0285ffa943f317e8a8f39b675e2196b8c3fa382d45a96dd0a70be438cd6befce0ea9d5085a229b84761def839b7c76406b7a3b9b6b108ee1d4731949159db27d032aaa333e8bcc4fbf7ea25ead54baee455f0151b500a4dc929d5bda2afe4b85ebde404225449ec34c42d55b105ad4ea7dbe974f2ad56deb6da1d386c77a49893efb42d7bbfd3d96f5b76675f5dd0e9b4767777f39eb76fd9bb4d68ee362dbbe935776dabb9bb7b1bc9afdda6e77932bd3b92dfacfc0a17116a0c7a159c7ebb181d24061ee17f5688bf6dd3b6df206d58f203bc602b1051039362443ef54231f6ba6daa83a6ddea77514770dadb28873e86be86505aa85fd180a3461020440755a6bbd0d036d67e7e0d2ded278006b7da10e5d1fea03539462696d3b972dcb46666886958963909a0730bcbb824cc52a6617362528d09dd8b1a9808edc6e4cca234aeb3318bdab14781e89859848d59460c3343d2431b4cdc2eb517420cff7a3d1b67860ce3919141a663be8e9886aeb39469a60dd38dd35e69e074722a1eb7a652596f2ab7965bbabe94185fca142f95e7cefd01357ddd67792ee5508255381331293795621533796e2c3b3f661b4099bebe144b0eea558664ccd62c439f184be579a0578d8f4141fccee49999f115c729c6625933614da55c6f6a7c2dbf787d29e28ffd3c7a2f7a19fd0dc93f55ad30ae98066aa949b1543636b26e36e39d825a66cd595d139fa7a0a664deec9ab79af156d76a6babb533e0d54e41ed0ca89d8638ba21b665ec89b7be565f5dabad6ec8ffd7bd73e066371a5b50afa56005786a23eba61a15c653e7c04d69082ca3f9d289132f5d332dd052d695b716c0d7ad95610f7ab0c93e50b3f837fdd62b664aeb1eceee34ce5f9fbcd5d8999dbc7e1e5e36e2109b9a9f9f8a6931a3db16026d4cb30a4b43f642f16fb91003cb125bbfd27d4f2e43e141bd50e97ef704cde4e04ca5c0bbbfd7b7c64ca355b48e4e89f17d3c4f4779185bb25eac1753c5fd015e4cb10567873027c5df4890da837e737f3b07fd3269068d8bf28dc4b6945c7a7728f808fc4bf97738aadc83c09828d7ee1e1cad2f043cad355447a7efdc86a35161d3a594d75aef6f1495cddb8e967cff3602d469b7db03f8c0b239a594db87e8d9ddf5716307ca58be5319d3a31c55504c15018dd2cf8e60327c2da58cb665c2477b40fdd610efe8ee17a6b09ae08dee75a17a3fa2a7ddcd6f1fd9f5eefcdb5e9835b83bdcb3a2bf1df7f9a8067efbe80e1300f4daf0f191bd24fce13bb7b91a6395237c94e2d5f3fe421df1ce0f54735823c691fcd11e804a2f6f5ef2351d8bace51da7547e3cf050f481557db4e33b3a426ca93ba0711d8dd28506cb5a1ec671ef05b6368e85f1ca478a1229e0e7c262f75786f60ad207f0357624ecd760598f85ab6f1c8d0a76125a4721777de308b4b04e3be2e289207a2df5bd97b082c3edda18ca288ab465e3b890819f1c55a46f1c55898f8c4436eb2cf5bf97e06da97c61a4f2857f7e3cb51f1f81a7c6505ef2eeb4d12a3a8baea037a027550c713df4e0861185d118c268d4a064608eb086791055b9fa10dedd52dd73a37acf27abd5f2fa7ab95c6fd5cb6263603799cd2693ae9bec1e065bc1f71fb55a3bfe7e6b57dc512f572ae2b3bc3eb07b2bb8a9bb176c413e785867373c2dfdbe0770002d5492996921f36bcdcfe90c958ea0b9bfbb4f0c2142ee0badb22927e3a66513fcd90320941238203ab554d27adbb6a84e424ef12672852e26e6bce8c4124c7dbc97a4333a25a7d14bda71e1b07b109d84148cc719bf0b8cb6ed2918d84d68f64f3be2d69f1c6b0bf4cd7928c28feed745f6ccc81c1e6643bda6bafc4cd42048090a6a756bb8e4c3b5538084e2d6704e6ade5555b4700c14a48d6104b07804e2ae17d0532d6547a8f555cfb2bfecffee977b8871b7eeb9fedc954bbf60aed34cfa9c826c3f373666271b95f2e2816d5efcb25f9e2f87e075bfb76ebcf5e2d5e79eb867b1526e24938a7177e944f56c26432416ca011c420b2df9fef0bbb280ca2849cbde5a783568c09668df56d0acaf9edfb14d68d9667b712b445d56dedadda0c577b6db2adecd0c71387a4c410a1f4e487ba362827ae057e9816d89102705ea3e48995b0a006b775dfe6b896d497239b0c27b9eb7eedd46fed7dede81e7b5fa6dead3e824da56f8eca95e8880eb9b4a4b81e97410c36ad04c5cca07c6c06b203795b7fa20b0a9dabfdd6d2be15976e0bef8a976cfbe7cd00bc8e9f4db747b3173337216be83f3a3754d280f01ed94bfb5af8201257c8bf4ab8771b96dd48636da47711597183198b6a434253ef643e33c8476983308958bf570ce8f4e8243e986f521c30b1c769bbb1253a6edcbe3d724b04c5b7ef66439d4b4cd5d79dee74df1770e06ec2c3aeadcde8796e46f086268ef478fa237f5e3eff323b6d351b687e8f1bb88c1fd23b9540cffbd70c4f7e01fa060e1690f6d8017ac44cde0d0ede1cb7b4f403aca230f0e7dee81be76681c111f1cad5739d20efc08de82f211c78376f8cc60fd8e6a88ee7f1838305cff70236c07af7fc98f5c12b6410f9328a998ca86679d88b8d1101a453b02b8a842882ddb7ef2e6cd8149251742204153f4b960aecb84ecbd0b68452261567ba14161eeba24ad2d890f31bbb9fe5f08fdf78d3631e82bc13c47f077d7d7afc999ae29376edef43c1893596501ae0a35f1d2b56bd7ae756f495ad05c337fad3fff643dcaf219a4bfd623fc366ec3ad070ee208c18dcf60b3fc854701734a38de0b52893e7e9d704a4df2257f904a2dfaebe730c61aec128bc96ca0375e040d13f24ac977e0f795c993f1ff53500d1dd6d5522f1923e0d0f71a03f67b3834ed2f1193524eae7f3cca9d4f398647bfb01cd8eb3bb6557a85508c2f488e7c9f321f6be7beae4adceac76769a19a98c71a5937bbd1d8685413502d57a98c2992567a978f0e7238ecee36b2b3c5d72d2d2f162ffdca342492dd9fc61eb8b7b834532c639cd81e086c40cb290d3bd96cb1b2be9cfcd3ccab332fd4abb395cae599a2ebc13d83810c7db9b9496929b930c207ea0e1c18dc1f425f2c350343b56db6c3cd97461d34fb7bfe6e1411b3190dc8f27a3119fd71c641fcff50b4fbe0fa79a77d4061c8d88920a0d3b2ed0b11dcd62723ea3ff2834b7272753d7e331aa73d25e49346380642708688d69ceeb142a68a751ec8e6d58321706166e08fb60f2c7b7dafddbde56909039aa6bd97b7fab08295de0de76cabd36e776fa5d70c4ba225f5e76f16651b26803b12a2e91c346a8d153819cde13f0bbc963e1637199e6309bd7bd82960839dd71364eb66e08e765f1e0583fc0566e06fc25e5bb7d9799a30b682bef01759c023d18dd100066f012df730a6820e59ee97b48afdbbe0850822dd5703910a6e06d1bdfda8acebd1de19ddee2b8790f15686a226dc01f9add84fb056ea0b86f0c24e66753b7d413d212ab40c4c0a8295bab7429b52b41c05598e810adf6160847225e4c2748cdf8ef4fa81c5e9d0475f694936b6566fb2ebc52e6f0418cd21c569a0befb5b3d51528d817ab822ecef898a2ac758bf89da54eeb220ee4b71a1a94fffbaf0001a6e13e86f93c1ac96eae0647018f487562fc9e7e76893685f9d127d7570762df7d3ec0d14eb2078dd36d8912ef186dee13ed8e810f266d736e50aff8a6947d7a00d5fae1f85d3d16f641890b44b230038860eecabc3ca162a1a4f6d4558f9a2ed9194f3f6506ca03722f643b45320e58017d6dddcefb3c6b6c313a81759119aa1bddee8122f8686f3710d9d45d7d15bd10b0895a300f147c72647f2fea20e7e18c8f314e2af8f6a17b543f5b9def7b7162e8e48722278f6a253c84e2dcf4c2f4f9df48767f75bd3cb53d9ecd4f2f48cfa9e89262458b67df21f2e6e15fbf3879a01f16421fb0ff56a7e7a79793a776227b80bf697677255fd0ff46a4e9dd1ffb15ecdcd2c77c3e0aa5e9855888b7120b9fbcfa0fbd0eb7c449cd94a347f72a0010ab0093deae523daa1cf2cd7ce55f5c2eafddc995c9e096a2abec72f540ab278cb33b783aca5e0ef3ff9df0753d973cb46455e94abea3fd04f0435bb912ba807dd4661e55a115649f580481d37d005f420da513387f4fab34509e47b645dcf41005d2017818855328a78de877ede16152b38ad44de0aaaa9be271c964fb616b7c4de91b58596ac5ac129e8ecd7fda6c955f51ffaef73bc6224c6b6160ab211824a7743e24cf07aa14491782e193b520e206cfc89a187e13ed0e70f9fd3ef5f59b95f7f4e3c33b2fd531fd67d7f69737349fcc6d299334be2f75aa24f8b2e1cf5c3cca14be801d48cfa188ee1d649f790ffa54e939238fb4e88b54f65b848c9f1a03d4c81d24b4f6ca9d963bfd3d985dddddd5d0984fe69a909b58728525e152df56a51a5e3d956b765da9e97875cf756def384146bd9079ed7f694cc6fdcfe6df8297c44ccf7b4dcd8a834ce416d75a35161b6c6322eafccfa90178d8df56a23bb761ed26a1b7edafdcb8a6e32e7f509bdb9eb3e9f358cac316118c6b291374cd335f2c6dc9f251612b69dfa3f4ee8a964ddb58d62d579f7b839618e9ba631699e344db55de97613097bdec7a246083ae00d61fbfa8004db3b7be77776ce6fefec44ae1d89b9dca7bf8a0e741bc9b507f5e39bcf298ce41009a9c6838c6a37c0ca923827d0c61ab4005b9c5b7817341cd9851668788f70dca19cd33dc09c08c5702fd8c391b2cef5af6b1131235cc49474d16e069968d248156c1e04562caf67b60ae2a083dfc82154ae85d1cfd8d76d7dcc27f8421bc7398fe3b6047f4396ad411910d375761b618ac5e331c503cfeb451cbab530803a2d51a37d7e440d7acf05a92f61866fcbe702c20cab5c3ef86ff079348110f093d0a80885320a1c9395c88af0df9e7e72ece9eac38592ed1cf85172df5f7c73693a6dc289a7c79e7ca3992e94deb278c0d3a653d0f9f71dbb5478b812e615b7511c4d48c687f3839e5af7ce7edb01a4bf9d43aaeb54e24fb4c5eb6c33cee173c36ee44fee8bebf6c575fb3a15db54f738131b8c031a4810cdef73269ec6789f9c31855e40ef41a871acdee2ce321e200584ab958f14e0033344e77c7e12a28801121ed49bd6a2800027c13b88d2b804e95fffd91ce3ef0700789f3e66fa39eff07e6ab164566c6793cca2f937819fc96f8ef1cf688f574f05fbfb9ad61ec91de3e9ec2ad109e1e42ad3550a3dd1c935cab4b793c954b650c8a626c9db3546929b44272a6c53674fc0c6788970a20208af417fbb5d450fdfa9dda29e2a7fb04fc1fac626d4257b7e8a3b8d08e018aea6dcd4c85681a93d39bef1af7d42d95c6c2bb7ebb5729ebfcb9776774757fcffef4f1b4fbf51c3b67568da7febd2134f5ceafe307576561a66609759dd6f5e82f94bdd1ffa1cfbaa3fe72396344fc6d9f4b3ca38913e3c884732c82dd30af8425a7eecb5d57d452c29fb1df9afadf86594f879cb67ef869c65779af966f76633df925fcddd66b35fbf7d167d10fd44bc83204acfbbbb4cad6a34536b75b65ebd9b4cad726075489524d2622fe1eeb87cabbb081e5cdb786dc183ff20cf1206b568102ca6c940408635b122c7f5f8b8653a06e6181b9ce5e608d3344e358283ab3526b1c464ae941e730c23c95942cfe418ac1e5af6fafefeba9f17f8bf634eb0499945755bcc2a1808d69846639c5b0473a251f1ab84612c8aa05331be0c46e2068ee96735c234ca318debcc908513f7524d1e14ff3471312626a3498b30fc4f9d69933119a786e5b5543c146b9c501d13ac737d3cc574d034c8fc8d5446268fa968398231d534506dc0358c196363f1d889890733ffab6d35bdeeaed70cd5d0af525d134fa7a918d1754dfc169bce59b61820e29735b588624dd3c0e03415b32763260382d95cc1b0344a656b831851fe85a0695cfe608a45e4350b4da239f4488008a4a688c6d0cc5fe5555e2fbeb6fc5488fb16f6e722a90c56ae9df79a906fcef361e27c82f57947657d2e84de8bbda8edf0366a7aadf7fcd101b4ef225b352a972ea153e80151cff4f13c6cbd0a6c6c02a777d3281fc1232bb2b02566b98233af033ba621602982251f01b5d7b71654459c02fff1b16d11c99f6fa149f41c7ae90ef8143ce3eb33553ffbb3b602d552bd51741b2b505d15f5ad25809f86d59eda20b1c86a4e3fb2fc59a8f2becc0349b974e34c3f66485bb4cf3a649354c7cc62c909ab494dfc8e3c205a6449fde2bdf75e8ce749d29426565d2300d964320bebe293ac76ff38f0d38047f08d4d1c499c512c65ffa3a669c9aca6695acc6c325bcf3513456e69b118c9c657a7446fe216d6b43f12cf88c564d447e2e452e8fb2191fcb84be80be88b0895eba57ac3abcfbe969610a2785f92008cc48bf486901da301d5ea7f31759febc78df363201caf5e82e6ad7c87c5f931add636ed7f15b6dac7309789aad9b839a64b0c4882715d2698624ab041798c10a269c0305609a74cc3b80658ec629d101d132a91147ff1cc99dd56beb90671ecc656a744f7d6c3968dc7c5e77b6c2bef266dd7b5932e88f958c578cb04d684aea70c628807620a9a46088ee954c79889b95afc9841699c27135427986ba2181c138351b9847c7163239a931a43e3680e9d42f7ca488b9e00e746476c643b3d22943f3ae579873e45b8d3f6373ee0676facf407f477034e71673f48d7f082d49776b0717b00792e3f92535c3181215aaa36429c40d15ffc8995862609af16f8b6c2a23778d56db825389c7de1ea826631d10166753c7b3e5bd060b6fb116ed9968635afb26cf5f2aafef6b397a7b69e6d7dcffb4fd9e728d5008376e552e6e33091c19c3c7e03b4b861da607f3db0267cb3f0b73ffccd1ffdc8cfef9236b618aaa32d84d28174bc08996cba870dd92f5afae4486160195e5b2dadad96f69767669637c75a0ffe97cf49e3eae77ac85f2dcbbee1cb85ff4a2eb12b8585957cbd518f759fff9c64937bea73fef91b4f89423e15c08681ded7b697d065f41c4265a75a5f81fa6ca5eaf054635d0ecff58dc66ca54fd095aebad09158eb09ba09286518a7d594db188e9be88f3a86835d2bc1e3acb50ecb33629987880cacfc8e91032ccee3b1eec1eeeede5080b167d9bffbbd4b1f31a75258fbf625989f050c33cb3cc620948dbb1ddf49a9696f54a2f1290da7a6ccef09e1b83a14deec494edd1eb66242720ef62b72e912e6438ca3417a762fb965efc5ef08a55e0afe2f7e87f85b3dfb53f700768071b9f935f51dc5b4eaf9f81e56f6f3be6c9b3bec0f1afa8b83cecb83fe4cbc23b7c0eeedc31d9d7f10d98eeaa9fdbecb39b488d664beed706465e0ace80d8486c26749adaf3aebab3519191a4c4f472dda3f1b049b8fd27df3c3e398d0612c4a9f4fce747f4bd6e1c920786d16ba3701a049f0263c292bf95b677c2944dd186254f57ccc2ca86f59419a9687f0cb47108fba0afc94168f9322037f79a7bb074f8de0252778b3fb15e92682ddee57465f00726ee8b436b1492338df01fef7a6c485dcdd1c8d13bed9cb2956f17c63e845f461f459841a0a093a8a0ded8e5ca8ef72e917ff076a60f47fb1ccab2b87b27107f69767c68516c288d468e8b225a6199d1225f353314368205679c612869e9000100c6bdab4cae3a112f459978a89d4313023d4a0d4a0864d196b3fa91e0ebf11180bcd9033536eef1ff8376300c87ff67b9862ac542dae4097193519358566a470a7c502cf6d83194205c3140b3549a31a16b287c62c4275314b128e79d234b2b129a11b520c577b5974b76c336f2693665ebc231ef1c9cda07574195d47cfa3f6f0dc32387794dcd210a170a931181fb75e29a58e7850347ece8d3adefcfb46ce457b7e34909c95dbd2e7e8e33684177ec2f3739c7dc77f3ebc1e3a3d94c2ee61ef967d79a97f9be4c60cee817cff1dbd1f14535a58943e3c498c741443b3d296820214ad7abde484d92b9be034dc7a241ab3e494822c2ac533eaa791b43c4f599773b75a4d399c77a1e9ed7a5ed33bf0edeeb99c6f71efb6f2792f0fb93edfd4347a183d85de36e0811e11c1c8efdea3a34c16d5233c3ab09f1393a89aee83adebc77975788cf3183f1c70eb40337884692b4413d1ea2f4f1defde9912a3e1ff37ecde41c808f53b0339681acd230f9d45f7a3abe821312bf91dd78ba223962577b10ff9b009f29286171ca3251e70be855bb451e5c0dd46fe5ddedf911deeef2e0439d8dd2fc296d7fdacaa89a5af6f5976fe5f7addffaac462b96f5bfe6dddf68b97e7817dfb816fb7d645633cbbc8d29653d0f9e28c946fbab72cdbb3cd7d25f6c84b76e5767bfefe17e0a16f3ff0ed28ffffb8b2ad4b7596bbbcc4a7a1516fb88d6ae31c684896ee037f91fba3773d926fade75ef88cf7e207b80ead6c41d7ffda8bde67df95f75ab9475ef8e3fccf3ec0d37d3132e7d187241a57a8fad73da7006ecd1de2f6e44203744af5110ceecaced670ce41a3ee39c7db469c527d05aa4e356a8efb4600fcf0525bb759b637556499adb75fea07898033479c18f9909f0560f1fb0d6c30f7977b212fbf9c65a6766a7f903ee0cbb6f5cb2e30039fda1f85f9494d5cdc3fa5990cdc5fee05cef4de530ba1f2916695bae7ac65dd7a10217d4e0644ddb1b984d01eac740949952c5f8190c786eafee97662c2541101e644a2fde9d12de45f05adde55cd410a05d9669e65bc45b4d85b0ccb3bba39c455a22dd455d8a4d2261dc5e53d2ff360fe1afac8d131c55125b5716c9ebffcaaafcb83de9abcc4c9c81bfa707ffd0d79756d75e87c808478ce0f35f874306d1d051db050299f4a2693c953e5ca4264fb05ff393f146aadaea7755d7ef80aaf4f69ef07b0587688c62d07fa9120049e78747971a15c69889f6954ca0b8b65f19387bd7b0b05071767ae4e4f4f4f5f9d29feebd0df8fc3d8da67d1c7d15f20e41bc3438b7b2db0b5bc068bfb02dcc9e2eedec9c7ed43ecfc95dbd68f33e5eff30477c6799ff53db03c2beb3b89e9f171cbca188405d6770ecafaeec33646cdefd8d22dc73093ec4d03b8327ddc2d6f271c6b1413ae29cb74cfd24e63d2d20e7884a59de0c0d2ae612eaf37294b9ad21025efb518b7754e7589e8463191b0f65f9076f3bf5a537ca17f3a153db937d5feddbb30bceb318d30950bafe1d0f0ae81a653968ec55294e99a687c9a8c116e08819b5069d447283a97aef9fefad1a8fb43c8fd216e7957028eeccb21d2be962d14b237c5c73575605f7c2a50ee56c1c98a0f65936a85877c1ff4a1f4a9a1b2e851fea4b3d188400e6f34e0b0f08107d74faedc9bc93c76c18a65e4789e5c1f3f79e1d14ce6de95957af3e5c2787d525d615911bbcc389a44970394a19e872a92dd93f2e06eb0a9fcc1068762ce5f6fb7d783a8b05cbbddfd177791b125e4e9d6b5ee6e73b72fc7f75f1e8f3e259f2aea837232c6660c7d0cfd5be95588f005a584964857a05a7bad1a614f1764b325e70cb8819ea84ea8115e3f924f68bd52a5ff0f1552679445baa7909e153a9c043fdcaecc00c5f0fb2c61ea310993a1e994c6188b71dde6cca244d7302ea9b1c930d1891ea39408ad93609d503d20e411638431661b6692525a52d3404cd21325388f53495a4469f7901894c85ba82e260da9db324a2cce539691e28a0948c365394cc5c4628af59a30a99e12a97d5a8c59cc1ae38c776e28ca236072220280997f008899e47dbaa5618bb394a1dba1beace890e2ba9e348829dd814c5684c6756a063f51103fcb098971334519e33a4f5bc698ae2728d389f2248a8af1a411cb186b984b2d59ce77628e8beb2cce789c32534ccf1215c536f58cc9638a6949cda8942843a21e67d492cd671023138b4dd87342a3d67184cb72193d29331506617543fdd51db2baa40630718308ce9121032538ec7e22c8007c2c58a11f0bb200e117070e743f21f5855f1cb8a519a4633e7e31c87fb32e3c1635d580171e1930733d2ea3c96faa38d0c0bee9a0225a91594ca85c842a0c59feabd19ca5a813a01c067dcc32874776e0b0fb1cfc6dbbfb58c415f053df11f08ec0210068c81180e062a6bb0f17a3ce80c38017219c8143ba850031aa3f9e7f17bd43724a87c88d5549a73b1afb62530edf1a0fe6899acb9d0809b55b5bcb7aa7a016c9e8a9353cb74764526db825f84b451e8361e9b297cae4fdcc63d35670c3a671e68c617a9994f7206192b8eef5af07802dd06c538fe1995f9f061ce396adc19facd6de720110d7757e7d7321313f3ea011e7620e5f5de54e6c7c3eb1b00dd864964db4fbef875fd618366d9d9d3bc774dbc44c7beacd6f96f67d8a88efe7fc20fa2442e5e332eedd23c99916a014e410fb604ac38c4b77c3dc44d7e4fdbcaa1a131e538a44db5f316e9c0994ac6f60cd489ba7ac491b34d01b730b5bc5094235c854c7143d13a5f1497be68113212d13d58986e136ca4c09b9a39ec9179c7f24e68580daeb464823300342ae3233c6292b565cda5a9c5e8be929939a94248dd4629e9894dbdc9e8c4d2c981428495ac9a51c31295660ddf589b4f8dad0a6d2d9c2601e5151e51135062ded83a6f95279e08aa13b0e46a70ca15139458747640bb50702e4fb5238faf80a82720f26e6d60743d407edabe5c13bf28a7d4d6511f580a8e16614ab75be178f2eb91d477811ba07bd6d2f9a4ed4e71b999238bb0faa58fa68ac7c7f287d75a01aa511fbd1bb3df0c2d6fd8368f241e8d778353cff54cfd781a216df1060361f356bb6fdd8ad5eb094ac9319d6c990998e73e804f2d039740dbd1eed04990242eec311a05c69683c12605775b51158bb3da05e47060a4b30dd0b0a69b7b3bb3b88b2bbe703eaa21160bbbbbbc887d7f5e1765bcda6dcba76ad1d00ed2a5cddb035548af6b57c5bcdd7f0dfe137d005f43442e5aa5857b5155804c9962726272d01818b5402534e6b92f7db9fc3c48726612a37d6abd500997b04c001fcf7bcc197f2c436d697f8185f5e336c925bd1f5bc9088f23a5fc9d184e12d09d142274beb864df24bdcc853f22b1ff6730908b64db1b8be4b4d26bfb3e2e936c92f73234769cee04b13c4d6ebea0178a96e24687e89878f5fce135bf796f5144f7fd8d798d4faeebb627d7c72b5763d853eacb07d03fe8e10dbb77e34b6aff39ab07dab7d013c83118e3e6e4d759286f0be1a10e0044b74df586cc6b66762b114012d04f7e55c82fb264d605393f7e986067f53338c7ba7fe97106a55bac99e2c46f33dfeea417e2f360742dd43685766e0be366edf113f79a402a0da58291399ac6863e728fce43b6042887178628a009849aa0170ae01edf1a68c59f1b09585764cb9e24dd1b4903645b5b17edfe41ff6b76a5f8bffbf80a37c54968df25ce33007398126d1c2505e60ff4cc48f0648ee5b2fac28fa310a13c4431357cfeeafa1e6ed00b3e74ef842c386a888787f24bed0dc5127fe510fffc8871492a8481746c30ea1e1b21e87db448f0b4f3b12b709d68f3ab31f2d4baf84de683c27ffbdfabcca8be89ce26789f2808791e321d68c5090951dce0db2a4aac1845c82666e259d5ece6defec6ce796d3e995dcf99d9df31f8c4d2416b7b6161313b1b86dc73f68e763f144221ecbdb0b5b5b0be0d98984bd737e7b27198f2777b6cfeffc94eb5b8b0b5b3a4f2f8de796d2b6d8c88d2fa5b9beb5b0b8a5649c60ccbf0ebd093d87de73c4b8af2ba1f6e71cee51537589fbeca22b20eadd90d681c1a18eab350d789cdddd10dfac5fbb56dfb87a75a3b93c63a4f82e264d23a9ef12b2323cbe75367665855a0cb4d732aee1b70230dbf6f432c12d9eba44f0ae9e3466961102b47ffb009ad04219f5de712678eb699f12c733e2b805b6e57f41cb34babfa911cdb42d1d9e951b426e0b709ee26802cda306bae6e314840a32f78913957bb1daa77d57559ff2c915cb8a1508874a595ae6d4f8a9572c30721fc8dd9999e5303d14f2b6c563f8a6a6c9ef03d03acb339eb8c89b596e879ee1bdf5e9e5e569f5e143c6d82f9a3667dd8ec689d88016660405be60f8aff0399445f3e80cbaa2b0bc5cdf651a180465cfcf7a7d885dea5063636d1ab2191bd8ec49a8ac9f07e83fd0280f5e104d203c8c251231056b94885989e7ae88fdfad5442c96589af99c9ed19f921cc0fc8d9ccfdd467dfbb0ad3b7c5ed7bfaa6774f1f5bb562261c512094f3c48f15989875d7d5b4b1cbeb221768a4b6fd2f5a7f48c3ee77f01eadb37757d9e3bfc6bba3eaf67f4af767f220a22fe648ef43e1c401b4d879819019459ca0b627e02e3ec57ff7ce3ca950d3769bb9ef8a8c8d0ccf6958d8d2b5f959b4f74bfa6bec55915cf0bb7a18d2ea287d0330a15abdad8a8286f4194102b48c76252d73aefe7f7b92a7ceb249c03057dbe51a946a353abac52ad6c3436d65cc98053adcc72f877197dda89618b3ba578e6e4f8d633d3542763b98409dacc84a18dc5c7aca406ae3731b19ed5b4a4998ea734ddcef2bc11c771e379d52c89efe90e63c4587e6ad9208c658c99733337e964cdd9d42dd09209dda82f8296cfc4b34c1f33162e4fad27b2b615b762562c6ed9d9c49a3d97615a2a76da4a696bae6dbbe2efed8c1abac30a05e6180661d96cd04f7f53e2e64ea119b4861e446f913c12d11000ccb26e5688d64a9baf625e6a7095a057d950f2114f889553e129fbbba15d754312858aaf0a53a2a8389d0e76949db4e7d5d9a854a1c278c1710a9c5d27a669a671f9756592364d033f91581d7f9fee70ae4f68390e9c3bfa09929f9e9b2d1a1a63597de1a4a69dac28e8639d183fe28ebe884fe88ece411fd72638e88feb59c634a3383b376d109d580cebe4c449ede4c277d898912d14b2c618ebfe67338db161beeb5da64970da04f37d0fd85cd71d9ebfe8ea0ed781575e78c8b95299bf94a32e3781cd5cdff09e9ed230a5a643ab3a9f7fa1c281eb0e772fe5b9a3438c81c95d9abb345fb9e250c7a4146b534f7b1bd7677cdd5561b711e4a01be843e83308a553125ad4276a2bfa4c6eae22b6df0205455c3b07f5b58dc6fa467d45467754b7fa05d40c7384b234cb1c96158b5526eb9c82d350007735e3dba759b6e6ad6e541ba247d7640048a55e5bdff09cc1039ec231750a0547b948fe079cb74c0d330d40c3a081727971426394c52861cad3234e60d018d12c2b8f09ec0179b897b1defb50c0a15ec1b98d24803e720aff815b94700240742616430d28c604a42f4e0b60af0daa69f210211a054c4028270606208c528bebbaae7f2c10055bbd045f16e1142ba205b485ee41f7229456de99da6a400829b1d7c368f4d94addadfbe13ce5a2bfee14fdc5a9e63a5ebd243e3ac9642599941f5b0b0b5b6164f35eabe95debde8ada395af97c330f5b99e999b3d96c367b76663a536d34aa4660cbfcf378decbb77d68d98e69e73a9d7cbb2de4c4e2ed0efc18deaf9096ca8a629e03cb4c6b12c55a59351bde79a0d5860b3fe6fc53dce1dd3fe7fc9d1b3f01f1d37f0c90f961f7cf3ef4ee0f7d8b67f5cfe97af7ffd4b3fc4519f10ad91ffd5fbffad2af46733f26649cf57984e8313ef46a9fb7bdd4e7896f04804b47e2eb1fe124bf24f1e6a22eeea8ebfb486fb7e7e50f23e517eff701f41c4220556339f58f0c14a85403efb05fa9d24085b301785e43758b451f83f06c48e8ecaf10f00868899cc16d7db866006642231c333edc0ecefc9ca8f25e55bcf4aa781f15f1c22ad254f26b98112d610144ebaada8027b9319e000dd2f3ce705c00efbed3cb1fe6c543061edc97e393433be869b15ac26c450a1a1b6b6ecd159fa7a5b89180927294f385a35b7075dd3ba6fddca001e163d4201bbaceb37cee01eee89c3f894dfa24d5896e8a013fdc6c3a83723c31dc64b16c2c23da0c30261b62bee7e507b898809f24f8d731237aca1c6eaf4c790c2af93385e1b6d2b4eedb45f79131638a472085b27d39926b528fed9f9e6bae98b53721556ac83942fdd5237f7dfa6c4e4ca9b77239efd9c83f09541802177add7d6876f73bf97c2e9fdbcf37f3cd9c8c8f39083965c7d1142a4a7690e563701e71ca4b9524825214faecb0bb2e040eb8293e0f9bcd66f36077b7dd3cd897ffa09d8875db42fc83762cd13d6ce69bdd43511a8579d6ecf7af4ca053c7cf0de963d97e8f9a14ae1ec5027ce484002d82ff4ee0b296a14bfb4a61d5e49cff7bd041f7a1c7a58cb3096b5937cb6c70b3a28c8be003a38a8d6a65e33c544b8ebf04a614997be8d6f0974fb7518d04a32c8203cf62422b54d734d0ee7b046b9a4e17988157d7b0c1fcc30fdf9831f579dd34f5171339cbcae8469c506a59fa74eca1a5df8fe739e39cf17c7ce9f332b948a74fbd480c4208a3972e312a8fbcebb337c4fd705137092116d75396e9c6d3c5849963cf9e7907633469593663ec7a5f3e87a8f74b03352fc05f51cdcbc74e8653e0c19a681aa2630df0bd8f68a0611eb48dc9caaa6d1e7ae7116d5388f7b78d4ac6196010f05e638bc532b2c5de7a3ada620f8ec0b6f782be1e70249d3a9e1fe9f8be3e9a11891ae4b162241f334c3c38820ba97b8b90c78a51d64f3fc5205acecb7728e76b62021f59ee2b2bbe6d6865d9b729adacf876b0e515dff275f2c83a7c6d05f7df2436541b2c2ffb755be99b67e6259a968f453058ce306e32b43df56713b6ceef58d6ff465936a92758663c8cc32278fc75a9aab3bdb3b3add0589667a0b3b3ed54c77e48137a32cb68663cc03fa1261e7f9d19dbd9dedeb915581222b1df96ec1d57d153e897fab13ff15ad63d0761b4ac478fb34352ffc66ccf8654e662dd2dc01020a83fc94622164bdbf94a259faf54e2b3db0530f5d92b55692bd5b18cfcf890ffc6de29030012045f5341c8f5aba2c33f77059e7580e874ba2476e7bb9289b7be72f2be4c461c181f7fecd4a9f3f94a7ea25c9ec857e09a6525c68db8e43cfe25d10d3fe4a7c8bc338812baf6b83877b52ec6d4d5e72e3940185e79e796d8bdef832f88736a2e1707b64f9d7a743c8768683316ebeeac44581ab5de3ac57a318a96e41db13dbceeeefaa1974ff9a19b4f0631975e3439c33b3808091406bf153641a047a8b5f8187692fd085c9a95ebde8475f137449090cbb7069eeb486c9451b4174ebd98badb07b75a6dc8f9feb5439917b086100444e015e915941a4e2a98afebeb1be973d090d165f530402a60c80fb189f7ed7f4a08cc54b6598c3193521dcb9f9665dadbeb95acd3b1eceebf2326bb8dfec1b4cca9d738e9c910001df434fa20425449979e531a0ec20af4db411f4c696456d0a8202c8eef5065f81dc231a670a3038cf3318bc618b3647a0f56115198c88828cc3419f05416f590193929c31ce3dc92814c7e94914168106ef53b43cd3687754c7432674fc4621999d36b506a5116d7557412a12a5a892ba25c6e6674d3663c886c6234ce599ce97149e4641205778239863f3caaf9a37e72821c3487ee9198264271adfa7654b1e64b7db61cb500ac6f547d58f8911ed574ffb5deee6eae97ee18c0288ac126a6fa763fd840f10636582bbca4b9bbebf538c1c2e66af6fc0f01b975f1a39874f7a37e9ea06e4b123bab20617f14d8bd530c59fdaa2b10be70d55da6a151ed9354464832f0184bc7fce0f5c7daa0f00fd7f5380610bf7e43d5e9f133c544cc4bc48ca4672693a6973462092f96f8462ccda423eeb1f6bc28afc1358ad56b79f5863cbe79c3487a420af71296bc453ea68749f0618928fd5e84ca3c488dac8f02c82dd61bc14ab8a0927422c60bb1fcac6ef859f15be073d787f9d1f27f716a6dc33b078de8ca5fe48f2bd1fbc600c06eb7d9f6c375ea98e3783e36be343dbd24febeaad03214b7d53dcb2bdbdb2b8413d040f47a8e010033f200e6c4b0b076e57dfc31d10e375e55a6114c356e88769d6fcbe375423aeab14b33841100cc09d6b1cc0f262bf7c0f6cacab60cb7569ccf0f601cd389ae3dd0d7272ebfc63ed1f07b7cafdb9ff5a91236011a24692ddcb13b4c7d939b586b62ada831c2cc0735cde0dff954dce10bc7f686a9ff6832c2b407af12a615c53dcf3f28ef8ff6f145745de1d39e825a84cb2190ba239c0e055503fe5aea0e7f06001e31682c4148f1d3a23f7eba484822467d9772f65377371e7e2a9f431231a693622266258afe43af897b75e2de7be7b111c1e610eff1d7d0df7cad6f329cdb84e212384d12e0a7bc55cec20a5479e0485981aaef70da8473d0a88a631b6bd362bbae74a12928801b7a680ad017e45833ddb8a7c6c4310de3fe4e9e724ef340b434c6496c9031a2134e5dca888e33d8204942d21a8609ca189d082fc369a213465dca09c7196ce214c6190dbf941b1bcb89bf8fea09e21ddb9cee173911b7eb248d0d9cc438ad1198209c9309c05a06e314367186705118222e1b23fe65585365d6e4654962900ce613ea7773fd18d469e4a10b08d14052f32537210c95d7b26ecd5f9b7b3db7516bf85dd60da65f9fc0a68f3657e2a0edb11e4e8c42079598a16d0563e7e3d5f9680dbb960dcdeee1ad50a70aa0618a4ad7da8dae1feddb1d6843079d14b2515996ef14d4549463b5563a053555c646ad710a6a9e92356a9e0aaba9720fda002dc0315d8f616889892fbad7bef2f90ea6f890eb3a3fc4146b4c3be486c10f35f65b5f53dc427eee4d53a27757aab52a770be07b37cf4295f7022e6be95274afe1099dbe110c7a311816a0c4dd40f1e9ac134e169317453b59f6c573a0c5753191bfebca22608b9bb6a67962e31d06e75273c883a659e717a5d9196b330f5f24069586faa72efe36376c13130d16eea1cc3609c74dcac7f54c4cdc36512e9c0cf151557fe8a047d0d3e8ade845512bd7c930a7c69d7e09ec2c54bd15380babd27014cc61e7e0b42697ace8b8ab15c03d0d41c56834d6b85c2d72a718cd0b2bc1a1aec35a3699746fbac964764dfa2888a64b51d94c925cbc509080195385788ee67d748290e0a199bf8df2b01e0f980ef67371ccb42ff31e0a0eff126638ae69d8e2a2da53abf12c61784a3c670a33928dcb8894ed0048e63dcd662ee45440caffade4fc713487e6959e434b6e51e64bd57ac2a9534b6558146b255d72bcba273ea21586cefa7af7a606c68975a7f0bec71f7f5fa1fba30037a9dd7ea5ddaefa7b9e079a7ea2e0402b5b2864bb1da7d00c9823c0eb743a9d5bc1ae5c73be2bc7f582e8998d9aec65f592afca4e82539b9411104aeaae7aebc1802e0734c5b560b8bb81f0219e50db82fa3f17f24176ece464e321d062b189375dcb0068dae212ac3ed4287869e724689ab6ec3cf40b93b198067f2ac68d06ef1acb3cd4900286cc4b5a706b4f9c7b0b60201cdff3c474e3a1f1ccdb9fc6922df5d2dbee79d2cb2ea6a564206403d4a75b4ef94c1d3ea2951b0954e1414cb393c99603112a8c59f12730b5abee95db3fcecd142692b3e9ed9d9dedf4ec7d662c66ceadad01a8fda43a5bf20f77dcc949d79d9c8462eebe13f3f7e54c7d67fbfc8efe5fc6bd8909cf65a72bd5d33fdb39bfbda39bb9fbe64f5c9a30f575579c1a67a7ab95d319f7cc6ce9b4e36ccd964efbb1bb61bd1403c9885a357ece9a7ce1b55440bfeb4293a177f19adf047fadadffe86b6ef54a5fa101e56fdf927c4f7b0a19b81af95fedd687f5516fe508dd354c430ac08956b3de90f2ea6725aa879702f57644e6d20a54c354b677638a715c37528691d4b90e56923186319698122cc652939611d32e6994b0a46966e389493b968bc7b2a699a48c691a704a74f6acb42110006a514aa53e4ae35c1fb3ccb46ed89c9904c433304f99562e9128a41213f1c4b869a538e372844a43cfbe5004b0a651f9bf86754693068fa9dc480d80eb742c668ee9d618d72d9908854dce5296918b739bb30423865cba4028db620197a0585c932a322734a68b69dde6f18cee27526153a8ef56dee636c754ebe988ca4e77193dab229786202c1641bcb4a8eb22f460a9b9774462b17bbc73e3fc3b4a210d8a6dcd4c3e5a1b766d890b86dc1fb5a3a0e0a073fae47af844cb2ecd0ffbb744bb0ffbb65e89a63df49221a27e82cbe81a7a182118dd084ac018d108a25bf784373f626b0ace41fa18d7af782f432edf85daa3933361ed4cbbf48e27a4776f04f3baa864b4d2ca113c5f0a99e16d6bfde4e96e4bbaf310a086bfde5610824c1080b221663e77b652cd645d39862a8d8dac5b91956bc0c258fafcf96b574fc54e6d1123336bce25cae5f2ba6526d24bb9a40695b9b90de814ebe995e7362ffcc2cce9ab972757abd88c9f9d34a60b1726272963894d6fed7533336ec84bde4129348db6837cffba179a358bd5a22fed4c8397f1e7ebe3bc2acde5e999e5bcb26d42f34cf7dfdb568b9a78e982f9aa35ccbceb1d4e2f2f4f0730d5f9a6109f97ecfcc5239c1e41ec6e1e5194406984cac5b4e77a6eb554e50db7e15679a9e169a8db7a25e7e5f3d5dcfa13cd5cbe79f323f7ef4f20c8afb79ade27abf97cbe797010e57cc9a01984e886ea3b0a4151f52737550057c5a5f014a0338b8b671289ca7b9acdf7541209b1577bbc4c63f18542a1da9a5b5a7cf6f4e9ed46a3d1d83e7dfad9c5a539f8c7b38bd6d289f9cb333393f07e69eb52fd398baa12b97207a1b2a3b056c49f6c4715e94207ad5fc5c103a5c103a9c10370e8edadef79b6b9bfbe6fdadd75af873ab3e78541840761e860e4a3d36eb55aadb669efeeda66a7474e376a0ba23475bd7c3d8ed2681a2da25584c48b69f062b511092be491ed28143f149d62dddb6db576f3dd4efec03786ff69600cffa16feeeebe08ad6ee7c06bb7bdfdfdbd4067bad687d7625976f7d0f364de4ae0132ea13574065d408fa027d05bd073e897c49c7b343e832b964fa1d967182fa965d42b80535dcbbaa5732021054ae7a0c1c571b5748aab5cb15eae40550c602f0125f1442f01dc5f123d35c68f74317ff48d2c9b3c7979ec050d3e2fc4c9cf83d6744e18bf669c70d69359f6c6b1cb27f7087e46680ecf6092f4affe83e012db9597acfae7091e354bf9536ff55c26b6bd7c2d918bc77389783e16cbc76fde7ffaf4fd3c73aebabc1dfb8e3aa44e372be7c5c56d75fe7c65793bf6b9f0ae442e8e004df8e3e98ba25fbbd98c346104330567b3d27451b7212196a6f3c099efdb5d11d2c23434aa8347643863765aab5765e0c774a04ef2c6c69ab49b38624d730b602b32fdd0817c12b83b78c4cd32ce2a2735c86f72ae677956f4105706676cdde3e0b469999a3e67389431a33c6d5a584b9baf3b7fcfc3665ac396395532296519b36c68a665a671767b8b73ddd15d19b0ebf2accef9e676563dc698331c46a9393b655a1a4e9b0f5fd87e9d99c69a654ecf198c51c79cd5d5639c7b9ebf7c5a77b8ae3bf3a2932f64759d3bfa99cbe5075509a6328c1986431d1d8f59a6a965e7ca0e362d730ceb19ea180663ceb478b4693d3c77655306adb8f3a2f7571d197072e6cadcc3a685f19839ed3f29c3c5932cec94e71c6c99665a33fc27a5a7cc318c2df3a139d4c71764ab798a37c47f6e55fc07f9f5fdf76c3fbdd06a2d3cbdfd9efdd8bbdf5df94cf293f1575e897f32f9998aef2fea4a4cb9067a0c21bab6512f65b2e90191a4117815d56a23deae84e96d04eb893b9a0c5649a0809c42ab7099c5f9cc52ccbc664ddaf684a52683ae0f897266b9e03885996b010cdc3b7df03821645083c86c5df8a71a5e9e494e9a4d336619cf98bd29c4ecac3d98946198e46b41d2ca9977facf6a8bc1d587599e4445b4862ea2c7d0b3e825890f131a0a7c0392f3da0fc05fc133906dfd3d51a53b7e405e7e25cde0c0915bd01cb792493367269366fb4e9b70c72b229b0177a1e23b599399aa810146282fdeb02d39626f563de357df2e06d3db8d4669ae61bc794bbc3115bfa040144d1b93b36f311a73a58621fda9c5a5a5e22631a899a478171b21a92d35c8a638176079a8f7fc7a69ef1593b82b960419702dda3a0c58596f9c834d5048ccd5fed28bca0417484d4cdec884307b1638bcc8759d3f45b0eee89860420cfa616a10ce8941ef7d632c6f971ac617c56bf8a2d128d913b1a7ee0dce8acb3021846739c14f7ddf9a481c739aeb4b2afd6ce9e81f8bbc83cb1277e76edbbee4f6589de5d5e7a13770bdbfa537e6e61ac6fd6795bb2dc478941ac5d6fdba7c27fed9e08df9fac6b9cbfbbdf7448844c30cc987f16678ce560f14b7cb9c48836cf6bfbfe77d1c943b95f58837e6b891377637fd001e546feecd5b2a0201bf4d54eb6daad2b2238a77f9e43dc4c4ba8e4dfab2847306f5b6c893b24b60c2b3bab8adff2d5d10af72d39f9a76e5a4269e2e7f65b3b8a4eb7d37be1cdc78cf1b6507b19e0a7e937c50e8af6107898ec19cb43e876951422be97fed6ae23e03039d033cd85a58d8127fa05ea228e3d9ef8891c99f79eaac3fbe7631f9e2fce6d6c2e2d6e602d5fd61672ac04ef53a31d9c53e3fba92e3b85891d2364cc379a8bafef7be1006bd76bb53d9d9a9547676a0d35e1787d6db3b95ea134f542b417e81b201abc8c94574125d45a82cb1171a91588e4d70fd88c962bd44eb25a7e1ff79b45e74e03857dc3f9ec3389f34552ce337ded96ab500a5baffa52dffc9b8f2d9115eb8ce1236c8fd6e774fce977b66f217a69ab966f315493bd16a360f9a4d78c5e498e1e635ccb4a2864dfe7c1333cccd3eacc7049a448b92ffeb19841a5cadb2fe4ce45b827cab9a3fa4fd8432d7573d5d1f953c0aa1e11e1346f9cf27c72a994c656cd21a8fc7c7adfb09a5e47ed1633fa50e04a7bf169eb8ff97fc0ca8992304e0d265ce39bf4c09a1f75be3f1d8b8353556c93895d4b728a5549dbcdf1a8f89a7a72a4ea63236f58180b66affa8304c8577fd7538844f218e1c5442282d454a5ee5ae335b29c9e1bcbed128aa316cc32c2bd51b6b7fc8c7f81f7efffbce0f00e0bbba0e1a7c57035dff2e00fc00aabb84ecbefffd631ffcf7f03c49183fc01c638e7f6024c8f3f0ef3f88148fddd77d3ebd223a89ceca7c325e95bfac3cdd93e0faae6d27fcd5725f89ca614699d8e503fea8071ffcbe28e36c7672790674a39c9d5e56c57ba0fb27bd42bfec6b50177a71107fbafcfe5d42d212b952633837965d9e7e45157df1d1488dfeba6da9707fcb6e46638d885fb74fa104caa313a8a162d915c9b0aca0dbab913750a5814aac89d2a7dfac6af28a2affdf78b4dbe855603512c0f1d764994fc9e2ff865fe4874e468a7c2a5a4e2db47194d07984c4c0e66178cd265425e09b13644ec819fb58573b5ffbd6a5a665dfb4ad6632c90dada86c1d0fe138fff2bf1d31b2a1b9a6edd9562e67d973299632af7c5594edabbfc78de691e3d908cb3c8d96d1a6cc14f845b80f1e8377288b74508533be14dd577a3f254f39846538dada269c910b9d1b31846518f764c26860d0f122561d795554635720fc55b96afacb5cadd4e7b10ebdd4f2974f414d14adbe3a5b0b24a0d56cadbe5aa995a45e5872573335365bab967889cd8697ac07e624850db1ba562fad666a9ccdd685f2b8bee6ad666a9e9ab2fe6fd68e0526aa2b7beebdefbdf931034c074ba714c711717690197e228e230b23a5fc664050a4d40f030c3f8799711810a56e6791a5ae52ca5a6a616ad96ad12aa594b5c4ed1a439aa6315d6237a4358d31a4d918d334846c8cd912630c6ee6f1469f533e6a7792c33befbd73cf3de7de730fe7bd77eebd011b52c42646246f4847ec13611a4a542b12d3d06a461d87647e391312038fa25a94e817915b2567c363c36a2dffad963a35713e828e18a798cd6c6f530cd1e62a1f7575d97184b1889d522442ebd8cf78fe8775b1ff0fc2789774254d619a420c451886d034c932949418fca03721cc101a093185110aa72819a1b18092b374222c204239a13012204290002121c64276ea2d121211fbd188a230cdaeb02c2404d34244101223b442b62642b1263494dd330349182c082c098d4498c8584943112234c626dd0e761614c6169a88b9f5a48984d0c81ca294f96d7555d460c04843fddc0962ffb2c933088521c4f8f56410dab45242d10c4522fc2aaa696a15451f9d57d3503267d233129aa23045e498a0f0957e1a152dc0945f592121429a60823041f47cfa1d460221fb029d4218f95b8f608c84ac0a6284a452a91463bf102286cdd626d16c760d46a1ec52d5a114110942857a5311c612bf78128c0f5114f1b316218aa609f0de776a20051a035f771ef708cf472f30a89ee77dd9e5625f366a94214102c32d20ae6656abb9d1323f72040fe7612bd83d47fe8e31dacc398fa897c44a1923a61f99d4d69240b2d2993c4224224a40f208975dc44e3c4394808ecfcc8cd765ceaf784810f2db9099dd8283e67ccc4b6209467b03bda7e6d29476e51221250c212417133c3f0f8ecb834299f134c79c6213a12886f07c662c9b97c9bddc7acc6ffeda6d3eb64f285bc1b180a79486448ae58f543dd9176734c6698d466466a402462ae0848fa6c482b50ffda3d71f15fac978b1df7a30b0fb732f9452f4784cfad01d051e84d74624af5fed336acf0766633c7c1e6417003c9f51ce2e05c3269215d4fa7cbe38e362abc99767706b9a7d2b0ebddadf3fbfaf3d70ff6d366c4481f899a9a9d9f7eda9a93da1c65f40825982ebff8c187a747cd0cf669a020801731c1000ea7fe09bdff4f3c1038c78dce709bec7fcb3f94acd988dd6d92370e0e3ae01ef1e9fa60603240701ff5e0dc7c317c4978f0700f1f064de3199e3134ccf879a27a0791af006d5af5c842e99d726fcebca45ca142c53af3288370a6a97c5207a199ec94f40e787fcff631b0603fd047df834322dd52f4f0a7cdb5cc826976a532faf5d03f22b79bc02e7354163c2ccd33539a8eec0715310efe5a08667734f538e0f5e1e9f85dadacbd3d90f31dcbd60fb0c3effad7d04bcb60986607d9541fec9cb1bcbbe05fa2358c6c5745fa8ff9383ee89787ec8cbc39fc52f2d2447f0b5c5fa79393ba617e1cff7357c9bf45ffb3cc82707cbb16a89fa96b2c7e0365cce3ecdcbf44900dfb044bbbdf894f52a97f0e72cb03f3128201ae65019eac00abc0e67e1db24893490413245ada01cd4156a96d6d0e574177d96bec328992cc6cef4329302b5a041704e1825cc12ee1476086f8ad24543a21971a43843ec128f49a224ad92cb21ea902321ff916e93f648c7656ed95c684ee8c5b09cb099f01bf2ddf2dbcf799e9b8d9047b446dc5e61787e3032367238f2c717742f54bee0536a946ee5372f1a5fec8cc251e951aea8b32f5d8b2e8d3e1afde54ae3ca9695f755d9aab3aa895569abba57dd52a7a9bb562b567fb1fa564c65ccc41ae39af1d8f1b586b5836b2f686234ed9ab9df1dd76ab545da0eed781c137734ee8775ebd675c6fb746a5d8eae4b77511fad3fa8bf9e5090e04bb896284c6c4d9c4bb2245d4c1e49294ee948995d5fbc7e32352dd59116935697e6db28dfd8b0f1aa4169d86998dc64da34664c31b61b6f6d8edddcb27974f3ddf4f2f49f7fafca88cd18c8f82e332fb33df36ae654e6b44963aa30759bc6b6846d49ddd2b1652aab3a6be665cfcbf7b377665f7925e195be9cf41c7b8e2fe79b9cbbb99d799a3c6fde44be303f2fff74fe0ff9f70aca0b7e3687992de601f38f96308bc5e2b50c58ae145285a98505859d851385778a1445b7b76ab7966f1ddafa53b1bcb8b278b478aec45232b9ad68dbd9edf2ed15dbbfda7ebfd4523ab9236a47f58ecb6593af16bf7aabbcb77ce2b5b0d7d25ffb6e67f64edf2ecdaeeedd2b760fecbeb947bea77c4f57c5ba8a9e8a7bd62eebd7d6fb95d5955f56deabd25497575fb5a5db8ed6a4d48cd65a6a5db523756175ad75e3f591f565f5971a56ec95ed1dda7bcf5e601fb0df694c6874340e374e3b321c271c334e93d3e59c75695cddae3bfb0af675effbd19de6ae71ffc13dd164699af4509e228fcf73b339a9b9bbf9a796a496ae96c9fd8afd65fb07f6df6c8d696d681d399073e0d2c1d483ae83536d316d86b6b2b69eb6afdaa65f97bf6e7a7de090e1d0d0a1fb6fe4bc71d99be0fdd71f07db99f68af6b1c3a6c3dec3331dd51d37fe34dc59d479e24dd59b7d6f7e7dc47ee4bf7fbe704c7e6cdb31efb19fdf4a7deb42b7b27bf0edd2b72ff4c87a5a7beefca5f5b8f6f8d43b51efb8dff9a637a6f74aeff4bba5ef4e9f883c31f49ebd2fb6afb3ef52bfb27fc467f075f826de57bd7ff264c6c9de93731f583e981dc81b6819383d30f3d7d31f867d78f094f254fba9b9d3931f257ce4fae8fa60c3e0e53331677ace4c9fcdfa58fdf1e839f5b9ca7397cefdfb7ce4f9a3e7af0d1df9c4f549f730353c327cf753d7a7d7475c235f8cdcf82cfbb3eba3f251efe8b5bfe92edcf8dcf1f9c531662c8c8d8bbf47769006e2ec5ffd1430cbc5ca08c2b9d0d84f2940fb389c403892703805e1a893c36990c0348733108ed2395c0411f009878b4189fec1e112504032878780029c4000512240a086700ec72043ad1c4e408da2389c02357a8fc3695801bf7038036a54c8e122d0c2971c2e8614f43d874b4003af70780868e0b0cb135f5fe574389baccdeee6a6f8a404708107e2a11eaac0090e70421358a119dcd00c4d100f499050e7f1b80c7abdcb6ab73a3cf56e5d95b3510f75e0010fb8c0007ad0830bac60072b38c003f5e0061dcbad11f4bfa56c115748b5cd5655e770da9db5f5b626280a2257b15f4faba08e15de0e4ea8857ab04153a9cddd54ef74a8527529500a36704313d4b33aaa20157490f20c4df10c458a6db5cd76ab1b8ac106b5d0cccaee7e063ed94e8747556b73d8dc568fad5a557940955be5343b9d0e1d64b3653ca0825ab08183d5d50a1eb04135a8a0120e800a7259ce6670b2b43a08e4462dfefb5f000000ffff9ec3b7b2a4790100", + "9ce18be893d381a975af2efd6c82549b": "1f8b08000000000000ffb4fd0b9c2447792088c717119991afaacc7a64655775777557d754d54cf74c4f576755d768ba67a6611e129a29063423844742423caa2584065801960c7f28ece527fe065680d77beeda5b73120fef83e3b76c6b6f01ef722c20dbbb9e5a9f0dd806b37e72dd3fe335b7f62e3e736757df2f2232b3b2aa1f7af86ea62b33323332321e5f7cf1bd030142c8445d44d0d2d56b2797ff63fafd471142ff1621f4fa373efae0db775aaffd3242308510fcfd8d071f7b3b42c84108ff4f08216de3ad4f742cf7997f8410fea7081e9a7de8cd0fbe29fd6f7ef30708def26b08a195871e7af383e49f9047113c821042471e7af49d8f3f8d2af72378e40842ecca5bdff6c6076fffddcf7e05c1df7b3b42e49f3efae0e36f873f829b08de3d81109abdf9e0a36ffea57ff7863a82779f4208ffeddbdff6d83b114108c113a7f8734460173e861484e00a741042b707e71fa13cfafb28f6af8bd0071cf4d51fc4efa17584fe14c1e66e0f756013f1f720f674561c49f09b42109c89c83585283c84107a0d5a470aca2140b3e8085a40e7c83f9c9d9bfd5ce9b6d2e65cba4ccbf3e50f943f52de2cff46f92fab5055abc9ea52f5cdd58fd7f45ab296a979c7fed7eddd1d7be7f2ce9b77debaf3c4ce2777fed9ce9776fec3ceb7ff14edfeedee6e508f23683e56eec7e6d2655c3e3652aeb24fb9680776dc9dab3b0fedbc6de767779ed9f9973b5fddf9df827261f74f76ff70f7f7767fed6fdef9073b7f70ffefffd6efbff7f7e97f76bff717dffbc7dffbf8f73ef8bd577d6ff1bbb3df9dfe6eee3b3ffacebfffce3ffacecc7726bfe37d27fbdb8f164e148e176a852385b9c26cc129240b5a01e7ff66e2b7825ef9ffe21f20d8dd4576ac7c8c50eb364023e3f57cf7dabb3dd8841efa05842a8b50dbf3d76cacb4ce02ff5b5ef197735e113c3f9ea3d9a82ec09c3a0d4960e19f9b15f9f6fcb93935ca539eabf2d7cbf1ac6e36b70acb2b67407e50fc351bd51a3ca526742d6b9839d3f20c33a36b49455528a1baa258aa62d2e4846924c96bb0ce58da3027124423b659306caad364de32334c638aa224353d631a39cbcc99a20c5551812ad4606a52630935356559497c1753d5b469166c35c96c336fda8aa124272d2bab314d51de63382a33286198289828846a0a4d68aa49a98a3101501435eb3853a695d698410060dab46d730a00b0ced4b4614e3ac9bc61a454d5a054258412ac50a2a94a42d7128aa2114c0140635a21932a262c57d712146398366cdb9806006a322d6359c55472c290e357d8edc136f4d005842af55aab2e7aac3ca7b23a938969a8d517a13ca7f251a97bac2ec6c75f5e69d55b327106bc6611fce515d1d7dffde7ff5c61b64119f98c6d9af66708a386cd94fdef9e7ce42dd464868df1c617794bbfb881b16d3093bee5116232d3c6f8a12ff1ba7fe92120d836994924cc6dc316b4d10c429572584b59c35508eb24eb03bd2eff5e971712a5b6bafc5b5ddb30ed20651a36c742bb3d8ca08726d1fde88d08c11c0735d5cd72d8caf9cb1ca0569a0d0e765576160268969099e590694b209e8629a8979b4b2be7200241d18301e4d6e6aacdb3d0f27cb7dc04d43cb978299bcd662f2d9e6cc6d23f6995b2665ad793aa6a104a0821ba3a43140068103a4319064c293535665245c140f032c6c44e1c6d34a0e7662f9e5c6c364f9ebcc80bbb78f264b3b978f262d6fd49d3e0e5286a42638eae3b8c25d9510e464c31b1e5a7e83c072b4d61864229a58ac508d6084e4f1bffd5f7f9ac0ffa072315211d4a90296500ed228c06dbbd417f137a03049d411f7c095b3de4430710b210aa64d5f25cb5d9e038c085cedafcfc1afff516d6d61678526095c26e1ffad0454fa0f7219489f7702bc417512ff2bf70c8b3fce486573184c1a1940f5aa3555bcad623a4b10835091d0bd0e0756a8657126978f55350ffbe51703447634995a8649528d49ab4ed9233b190c9cc5a892cc318ca1ca8260126f9790e0866d9446226935998c8946d67ca02386bcdba4ede34534cd1c84f7350fb30c06778f67f4c98a2a6cd3f859aaa124c340533b2861936928aa268ba3691b4cb59c554388c5246898239f02a96929db3939eae69aaaaa44c00684122a1aaaa63b094ceb36015538ebd0c5b4f31c351bf3002d7b368fe79e09a0365a6dcf49be5a6effa0782e7d54663a3e7e7dbfec1d0b6e1fb837e612b7f2bc033dbb00d6d7404a14aa91562193e63dc6c6e0642fc71124ae25c86fee0d33709b50d55273d4229e9115d356c4a6ec27dbc03b76e1243316d4a37a9aea83adda4d4361583dc147399e3882dd8822eaa20549170137ccb5f5e390729716ea6bc086fd5e1733daaa9aa467b843abaaad19b49cb4adea49aaa3b94fcc1269f119b5453ad24a537079f361cc780fb6e529ab4548da23d6dac853873064ae2ec97d8f0fbc1baf40751a3069fe68d82fb469afcb961a30cd38e355855743ad646debe94e8533715fbb6685ff0bd721d7ae3ed8ab7b94b29ef5cc731069f160d5344b7ca2eb692110d8011f86875ac8d870ee99e96d7e1afbb5453cd2425770f3e7f37a14953d568977f2cba0f778ddcff5c37b8bafbee2047978fbc782aaa7afdbaa8a62c817790a86f67b7073de889fa8a3ef286f5da0b1607f75c57d5f817e4f87765af7583d1dff77e9bd2eb70d7dd4196a8693cdbdd83cf5f8fee1322ee1b8eacaf2f706007151152828a963900a582650d862bed7383e7becea1661771cc62d8b01a400883d3fc3a7cf2b5c17312aae868f90160ae42d403ade0dce490045bbb8817f2f5c1730118c22a8743db840e3f0f7e854ae085d5af89bbc8b0f7b441907610d10fc1d92f45df30ecc17341b561553407902ccd36bf06abc174183c271bc49fedfd86245802f8133d550a103a1f3ee88bca0f9e0b2a2f1b05ab94429b577ff09ca8be6cacc97b515703da1675610b6da104c759c38a73aa62704b54a7c1a90959ae68fc708db45113a196e85e8e48f9d0d558a516d1547b606f888a7cdbec76baa6ddefc3af5c0a67be62901dc28741a7dffa16d5798791ce96616f6dd9c656bf7fe9a2c08ac76e7238db0e9e7ffb5b54bec1e701f2a107084d2054f16b65b99296992f2b1034ebe7a00bc4e014074f50de59a64d5fd7a38a427b44a7bc9d5497f32a565e00a2d99c57f65a72d5f55ae5b3003ddeadbc26a3e56e8b7234da03455114e8512da4171074c0e76582a89da435bdbae7cbce4935aad05634029bbc469b4034c5b06df009c7059c26ee121201e24879158e7482660773a9e5736a173ac3828ca0e89eaa8b92c4fce1651b12ed715e670b3a688aafa20a1fd26034057133bccaf9de28b8a073f77a8eed1d2f958e7bb6e3dd7beeb3836755c654b8a23256b8f7dc576dcfb3bf5a3a7ebc2453e7eef599aa30a6a84cc2541f23e8220bdd86504b962c3143eb7996d29c9b5517c09537ba6eb1e8f2dff6e02f568329bdc1d7998d6002ae82cde9b16e77fdc60d5f66758b3ba70368da9050b81140e1694ebf356eacafdf4008d1a08e1d944413e8045a16947939e882335076331248a6a1e4956427ad42b3242746a35a669cdc80cead8684b94643420e34ae0c1a1c5a7ce8f8fc9cf77dd491d47c874f5fdb28e46d73cbb4db6d71daf0fd70ac248f308916106ac971a8350356869d823a7325e82b417564451bd50e9fd484f424bcf63818402336dd3bb6c9c1648b43e016071cd3cedba6a89c2f90d390decaa165f44a842acd0830e2a3533b840c2373e2d46c889bfeb2c8e266c50b50e0741ea5ed8076b8583880466bce572ba71cc7714e55aaf3b1f4a79fe295dd54757a2580828b7f75101137f0f92b9585f94ab5c55f6f552bf30b155e14a70576b7318236ca235499072627d714b8719c52862e56b0f34affdc8dd2f1b57928342f5f6e6ec389d51beb00a0af1c5958bbdc6c5e96b445d06f3a423003ccabb156ad05e8ea17ba339ffce44cf70bd0fb67859ff9f23df77cf9670a23b8564719842a27c1068fb5bc9a0dadda395100465fb81abefd98775ff7d4a9ee7ddeef4cfd922ce68ba7ce7ef03ef7f1c7ddfb3f18ca437a3080ff01ad85b28c21cf16320e437146c8d7d5aa3c4f9cdfa8c1003f42b022e40b93922b27b8d16c4e2a8a62a9aaa9a80a067819a639765b01e0f86b6f7e5849bdda259426e01c605014754e5139af573ab9b8aa514d510caa88d947144c1ec104d399db53a9deb587a6a79bcc55c4fcdb1238c24125b48cce23941905eb7289c42ff8c3e6f3de288805f3163f0e1a8561327e7b340d5ddbcc1b8e634e98f6e095a64cd8e64477dfa4187359ef57ca75644e65cd24b039b59ce400c5c760116a73d5da5cb55c8f00ac3e05de14b892cdab17c13b0b1c97f36159e343d4acaf4113a3abad6cd9c1040043c2659a670300d128563060303cab7515b0657977b652353799b7cebf266f5918feafd655d300c0181b053b35690010ca0b21cad51626fc558c213bef1dbb7c323993365da3756d31379fc5583c22584a37fddd1ef4a18792120365a26547d03dcd3812f7dc1531bf5b4d55c0535b92132159611bfef4d1a3371617e7e74f2efec4d1a3d0b6cd814081d035ed364706fcf7f0b73c954da84afe5bd34c9b669a80891d313f0952918e72086552ad5aa5e4b5bc140bb8e17a8d956ae8e9a7e1fb8353df7fe0e9ff46544a55b2f20cfcc767c01ffcc6d31f2bdc9a7b1aeadf251893a5679e09db26692f8a349445a8e5b56a8cb56a0cf82ae4c999f1ee3bbef18aaf9f7fc71dc760c3cca80baf98675af19e3bbe71c7377ef6d8ed6f874d8dcddf31cf32865be4b41c42d0071f4d8975df86712abc1550e1b0a518e487d783d5aa430c45d509208ec4c0a7e487d7e38b1a20419e4a5a05410f7c741ca14a6cbd8c7d86ed43879d0438723364c042e6ebe6de3bbd47033af866c0bcd1476f064be6db6e0604d8cd91756112b5d085c3f9f0c31680d6882ce5200efd20ecbf16ca5e0ee6dc0f46fafd98bc26de9e7974eaf0f640d8909c078bd0f4e6aa352842b8a21dd486c14056ffc87a7ef04759af7f643d0f33594fdc3cb8fabb4856dccb0efea8b07ea4ef6561a6b05e0e96ad58bd3368021d454829a54aad528c73483137c3bc5613722bad95c6701d80fea003abfee0092b99b4e09695f467be7ec75383ceda5b8ebbae5948260a865b5bf661b391b406be994c9a50f2bf05fdafdff1b1f70c1ea68979f79cab9ba6ee6d1411424a84fb92681a2da0dbd01d11a512d0d37e73f41246c8cad6c895120ab1e4cd82e47324073882ab3b839e3c9bb67d6f0c7f0f8e6d0aba801fb643acb21162a1c16698ea8789cd21e3336c4b4250c7a7d02589f386744065ac2923b5550e695857726da205bd9196f8bc853dc917c61a7534d628492cf19f1fb5246a40634f93103aa02da31584b1b684a24749658e641dbd82ed583d07c746d7d061f7c75755c9978af617c26a42342cbb285c2a3ae1ad8db0c56330361c97c3808a8c5cb143ae0aa3b53f8c2ad8270dedbd90058d3d60d7099bc7e76d67771b7ad0412e9a41c710aa08542e402835ecfd9a1f703d4dafdc94e932dcd48cf34b1fe5d3f6b34b17f2995fbec1d9ac1b8f3df698e379ce9633935a3a9f34075b56f2c25261c9dee0cc5a7ba7cd79352943da862e74d00c423032cb56818c0cfd02c0f1d3fc2b5b7cf2df565f15697e38057ed2e237ade4602769f15b5612a144848b4ce4a1323a8956d1ede81a7a003d82de8ede2925e171d9398b110e2c5a04b22a39e0bef222f3573c566bf9fcc07f657e803b4fccce9c3831337be26f39873a7be2c46cc8488e5dc3abf905bf196618bb1e7cad9beea6ff4bba9bcef24436dd4d77ff479e67f6c489fffff1d2ecf1e3b3a5e3dda29b2b16736e1176e4cbb327ba1133fa4232691f487f209dfe401a82f307e2bcc271f40684e0c550017cad6235c904341b2be7843e8cf30173d5f2be2bde1a3493005f391dacfda743b1dc6ac874af862cf5ea5167d2809c674c39b3272c3397331298600c7b97433501febee508ca63359093d1d39b96099e675827669c2933e799930eb354d8bb520a2a56f0ed813cd74205741435c6e50b23e04d640fac8200955a2c638f0f2207925bb7d66fdc589707cee98983849e13dbe2383b73a27de31ccf70eec66087f37efc772b7c266509e19c68a18be82e21b98d3ed59a53d950e9170e9e90e744aabf70f0989c392909ddf10a97010530f9c5f4a4d2e4f45053994cf37b63d73f2fa07376f6443b04ea76087bdd5ceaa39c20fa682ac76fe5521fe5a411bfcab9c53e7f0b7c7e2c842fc478dc8705adeb66731e0b6471f254937c652b6c42399e2968a827c562f17bc3775a51eb878540df2d52725a4db0f4a4b2a24ca659423d4d2821f7ab498d372957a4515a3e93d96593475e0d2ff97c4761ee9ce3e4e46dd5525f4314d9609ea6745882cc2b3b51a6dd54ca0dd3fc3e1a91033c2e46fe902ea935c379cc6fb84908f2be90aef2dc70b60bc9d05908f286f0d137d2ec090080c7b5b421fb01e009c5549d1c4fe71cd5549e0090ad793179db9a7a996a94327a59d53854145daad12b8a8adf42a752bcdf5253f42d58a53c971c1cfe06a354136f88aea52c782384d9e00d4603488be3bc6be89f4a8946a4dc8f4b3722e17cdcf622d208c4f5a8116085e28f91776581635f914337f6ae2c70ec2bf2d39ccafe16b10d0e369aa5dab3295ccc64a6686ad65693aa5ba4d44828e94221fd7c79b2138575854329a1e644422da4ec2935316152c2c14d514d6aa75309aa69aaa5f1372c2f4927edfdf26043eda7661c35a9e478c9969ac94fa6548b7f3dc72cd59949d1a94c768aa6661c857f9d503da166260a296aeb4149ce4c0a17b399a98f0735560d9ac8a66daab3f0eb130975d2b12769f075cde25f4fa6d236d1633554276d6792240b566c8ebc1e21259a051c89ec9d131192dc0bf2fe7ef360cf4df82e87e3f4a4f216924d84209dc892b70874c0e73ebfe5a612593a9e8366137c86f34b0ede3c7b2ac9ef0f219d64931c7fa6a7681c9a692699cc1c7e0721a41f423fa14c8c6ef20e48bb07a4d901e9e601e57442e2a3bf2731fe3b384774033a72de4bec103bff7190fee3fd8b2e7e71ec1d8e4fb5a88f2c34818ea025b486ee40d739e4c47bc8adbc806ea91cd015ca01f7a36e81de41dd31e88cdf81c29e3b7e98f60fe8886270fe6070ffbd618704e7917e188795917e505e40371cd45cefffcd6ed8031e7ba0e22068f8e2819da0467d70377a177a167d15fd27f4c70879a2a2ada565693eb5b4ec7bb9e5d64ae3242cad9c81c64a8be3e8a5e5fad24a7d69b9d95a845ab9b9946bfa8d6ab37c165a821c6e728c11d0c12bad5a12cab5a6a0c64e41b3560e553e2189565f5e6956f85ad058e128e7143485ec965fc697efd3e08ba775693fc817e96821a9c546c61baa58fce515263ed192124e8ef6b239bfff8a0d42003053307898628c73406942d8cbc134518883759c263abf5ebc4dcabfee7c7b32afbcf9e20a51d96256555555d35545573478c30344c18029060c0077ad9ebeebaed38aa100064557145106d5e8fd0195ff4d4e152eacad318a31e5bfb3aeaaaa4cd043004cb9f3a13b2ccf4c5235873128d803208412512f35a1268150951015aba68a553279ff6d52ba75ffa5e98bafbf5fd7d4149cd4545fd51a8aa629b3aa72f97eaa29bc063a05aa2b80313594d3d7ae9d5ebd0b0030065e6d85dc1f3011b74b81dec2da87529810cc0f36534faafcfb80a1ae3214871b3e77421c82e000d81f91501e843fe22f831fb204edf34b4be7f9afdba8561a8d4ab511cd906e6572b2c27fd0a94c16aad5c26405107f6bfdc68deda50b17964e5eb8402bcd6685bff7d500e653326305aef0770bd56aa42be9a035741ebd0add8750a55cbb0d16a1b6c481a89e04761b2ca991791967f1b2f510724b61a2165a67b44a9e5b6a7a7144518a5dc076be40f3890b172f9e4f14a863e44ddb36350e787ce584063f6a9a108f740b800a835b092797731ccf73a0c08f4e2eb7dd4ee4a865d15c6269da364c9b9904e3aff28796c58f5fcddba661b7dbf9fca67c332cc1c9c5e8c093c84748a9b52a67e10c34aa0bb08fed2467f5fc4c6c9a41b9e9c38f1f7de7600010184d8a16e46d7393507c6ff1ad01980fbeb5b1b1fae8f47d98e29e610bd5911058750d1b06bbef7c3430e500ad13a74def80b4d4ce87e4233f56e7246d2a294249924a32312249eb4bb9faf24a6da95a8f747167a1c94eca61ac5755772957cfe6bcb96a595c7a73b97a1166b0b0d5b471126cf016e1a4502fb5ce82b794abe756e49bfc29c71c0225aed457aa6c49008528b95955bd062f6a1a44ae935860bf738172f01c16668b33bc4e7c52b03a4b0615e29f585af692f16f090323fee3efc8ba318c7219e38e45336724e6d2b96a82a864a6ae4dcd719eac904bcca5ad9c91a864139e694ddaf9393d5dc01386a3b805c0a65553b2aa0914a6282540e0e5499a82979b13cc060c6947c1d436529e5170a862a4f5e35a9666932c994d94ccbaa1674c7b525389934a392955275825753b9d5ed24d3da92726344cec34474c944cba06d0b909a21153d1a752465633352d455d474de5000880826728c54cb5308609236b564ea958b5530aed4fcc271657094dd8d934d48ac672d1486b7a5a2f2c5ac9a4aad869c60c0b4fdee658ee9d8a63268e17544bb166d325c5d50ae66c1252b3ccd680c02c1030590a54434d1735acea094c6eb72b290aaa52d55450e9b4aad28431af31964c2c190e3613139a49131a56f02c18451d4a6a8ee5a862ea186bd36996e4d83da9b9730a36bd2200d66d87a916630c0899a504b48c366b2989197d42b64ba14b158d6a45474f3134a20f9945eb9cba6ad503b0ad07005a0f80bc1e80b6320facce6a02daa59dcb48feb22bf2d662d6d7b965ff3444cf13db54a154a1db2a636a3c0ddf212af9ee77894aac64fc49d23ae8fe9f763100ee5253d34c1a4fafe0f7bc07274dcd22f22eb13433d901fc9e2728242d66d12ec65d6a31691f484664376f1c95dc786569ef5f0eccfd6306bb214ee5dc8794dcf849880cd063f6ba6721323a2f82274b884439bf39a9bff1a26d9af6c537ea931cff8c5dbfc3d32e2ef1eba58b9ac79f8f5df743eaaa70e90dfa94b0bcd7df202cb02ebe519f326cdb10d7a661fb4b97b4097e6342bbb4c46f2c5d0a4bbcb424c5d5085077f773d0851e3a1268e3a740feb2b973b0b23c03b99533b006f2c71bd7336d93dda7b9ec3e66dae62de8d9e60da368ae1b45b36f28da7d8cdda72946df2c1aeb66d1b861da1c8fa28290ef4fa256a471595ef19391bc23d0c2554b873ceb700a0053ac2f0a7f83ca6ca99e4cae81beb0b6b6804974bb342b6e7739b50027848da194264a0262ec96142dfabbdf83af4007655109a18c141ece402e6b833ac791f519f0e36239bfe8bedbc8b0afd8f6bbed79fb2b4cbbc15731dbf36cce0330eddfd90bf6bb6cfb2b2c63bc2b2757b95cf09d1e6c410f39a8222c02172010abf18ef75b65b7dc8c1b070ae3c3b66d66d58964d26359c3de6a37b685158f342b828e695bc9a4659bbe7fe58a6d0c3ae26e4fea882c54d8dd82ed4077574217d02b501bdd855e83ee45af476f420f239489db870ded2a824b56767d7003bbb1729418ade102f0c5d76d969bbeb727e1f2225a65d76f76a5362169010a53db8d06e4f99c10fc4641771c1d7afc58d8459d4ea7d38d0e9b8d46b7d18042d2f40dc73184d6324cedf8d02ef0b9559047c718f484dd73c770069b1b1bdd8d9de8b0e1fb5bbe1fcaefa42dd83242955233a0254253daa1ccdd8e596cf23ca1c1d0f6a0ddbd2e8d9cb702a2e1e9bb89ae8686d00024a14985123ad6bd9baf8b5b8120fc197175f37b7cac069b5821aa2e66238de9f48a68119d1dd7e855fcb0cb8321908e44a173523657f247af613bae3afd51837f511c7aa129983df8dd281969ee0ab6095704adf7acd0b3468750f917a7b56d944173a88ecea16b81b56e0c384829551ad3f9ba875d82b0e8f19ba554d98d4c7cbb31756465d0077ff0dfb7381bb1c557912bd1a1ab30a67455c6e013fc8506f80539550ab639d81213a36dda832d403e53f80b0a6b6832a1f99ac24b5434d8b0cd766117f932774cce6fa02caa082b90c848b0591bb1171c99b72cab2e009f2ebeeb377de8db26af14f4fc319b4109225da122cef7f22047c317e63585ae6d0cb645cd0b862d9ae0fb7e6cfd4aa06574cf1ebb5f0ec691d3d30186e463a6e343389f1eea9a3ce80f04370f3db7581c3ca218a4c4c1a314d0d26de9d420ecf3be1cbf18cf888642134a4a3fe24dfb512998346d4a432bc19fbbc2d357825932f7573cdf5fcd8556e121feec430fa9816d6bb39ccdb5a4516b6ccd96a6ae71b53e5f7c3bc55f33ecd32778354e9c0e4dc4f951c834f8002cbfd2d1f9d2aa3baf5cee1976a4a1c6910f431e95c7bcb946d06659b253d350865f5816da19339130c1375229e3d7f9573a5b1b7c15dab08d3e2fbb6fd81bbc6336a45fc696f02baa05f6e86385733e48161e8c2c6f56677ead2fc043420da70c78cbd616f8f237fe1539fbe7d7627ccd4fa1df8959c4e4f8988b3fb718daadedfb975df68be02de7a412a7755ad8b49d16d291c3ff1a2b529412d8db9453f5b9504ebfd26872c26b69aebe084d21f98f0ce55aa13963e46ac5ebb794e555cc869e56c2758a45f676492887063b818c408841300011278a4198cc018077b60aa0a7754e43640c232312691da07ad6e36f0a2907e78431608c6561b17f5201baf4ea29e78833a582e1280098310c0a00a30463a08e65cdd8f68c65a528ff3e65fcf39a0a1814470765caae3853779d0c6d8598a5128aa9468842882afe144c18c1541c095095028699c504100582562904128b338081300a24967d5806211ac594a8160b0da88ece69364ba40d20a04f2480aa042c462c6618bc61d60c27c493795dfccb27894acd9904003674cdc2cc02c20808960bccb4c56c6deea8b4e50871d3243a86ae4ac9455c41cb460d5146ae32b521708ca9ad5786ec7e252ec5807608e543788fa57ef15ad64ba7cfcdcf2f9d9c9f3f974e8bf4c9ea85a9bbd4a4e6e4d4c17fb9f3e187efbcfcf0c397fba115473b4cf4421430f8f7d7a62e5496e6e7cfa63399f4d9f9f9a5a563bcb09c7b4d51738e969c7ff8cecb0f3d74f9ce8703cfe3ddff8411bc12b91c5f40bdb9087c9960759745c6e64ccc71b1f2b54a1e7c8124d8e0164b90ab7249e89af62ddb6c5f80f405380b4cd3187ce133bc329fb16ca35030ec5e0f1154406d8c503f9015a3d601d2dfb86ea027044d93852a744249d55678eba381f4a93076163a8c382df9327409dd89aea26be8b5e87508c1a15464a5fc7c2464b97e18090911e9b81b918ed02eec47380eb647e9c6fd2946ff05938b92579474a285a684cf5c4cbbebb7c6c99d1aabb154290591174327b6ca1fe9f99d0de86d850cdc1627ff04fade30ecc1b3dd46f716e4073bb1f5bd822e731ebd12b3eb0899f3b887b35460b602cbe4c05dc69308d3cdaa36841c7bfd2c287117b7902080dc47d48ce91635f61196606e25d94e3a6bf3b94ab20dc914f9d36112f6e61b748501493ff0b8e813baf161a6155d33cd3e8cb1936c272beefc9a93bc02c9233996f8ad85b55412dac94a8e59ec23aa56748d4c94f1cff8c2df0f2c48fa4457636b558653ea4a29e5efb1820c3148cc32c68d2d92ddc1d61f3606df14c3d0356cbf2308a977ff7240a9fcb2a4057c68fb91c9f209ff0f39c566da5f0e28985f7e17cfb325fdba70cca674fd708bd28c1c394e7cc9e937132de3d1f0b0032d4b2f8c7bb3f02a8566398758c67e6bd4614638ac7d3db4c7e1f5bfb2db835b024767111a9d8da494f25d3f057e3f6433fdc176afcbd9fc812f89e8411f36bb831dc103487e85e39f8ae001daa3b639716b9651abd1f813e510033e7f4c6df488a475061cb7bf3b34e9fac5418c0c8aa50ba1162a9a7391a95e3bd260855ccfd6d08a2f3ec647d019845a7ba8e57ddc585b9229d88b087f2887b11b8cc0753e8ca18178f7af0d7b1098454a5e80f1c1eb0654f0dd704cb4e977ee0ee8e0ee71db680be67f2338c4ea5a466b08b5f6f51d1ea5ff9583aadadd53bf61dde11de355dda6f4fae077c5f5d1d0ae5d3a918ab7b7f6543556d76951d743e72e8c71263113464e32f685d1edcb9f0c4cd89e14e307c76217469443444ff850e08cf4a1f3c133e13948a34b99c750d09e7ac2e1f53ca492425620b0caf90f052ccf8744170ebe1725cdd8731044c79341ef3ff972f1d8b407db947ce8e5515ed37e52a081c836ae804ca1ef7a7074fe7943e8dca705a27a2721fe823284177fb41531e7bd754e1b14aad5ff032b58d1309efe55ce45ffea34c69a4228f631c6d8ffc920d3e03f634a0eccd50f898c5763cc54ace069ce854f6305ab0c631f53c2b3be3accb5049829448122e7de8ba260023e563051a0c1bbc288c6cd11b1731ae802ba86de8836d0e3e8bd12dec22112f05e19bbc1ca4d1fc6ee91b1ebd6a89b4c669f229ae3df71cb4dbfd78dc60fae742398eb7607cf0e9f44a9fbcc8003dd8e678da7fb438fbe4ddb9049c3bee20fb603294fc3b0c11f3e694428bc6f0a83e63053bbb1352caaed87710224bd3719f960cfc400e74c04dcfd4187cfa94f88c9dfa1f413028a2551f0891f853e304f7d42c2eb705e4da1bb11ca1ce0ca2ee46f5ee47b511e7334c9792dfee2beeb6eb5c67e1c20cfb674be7936583e9f3efdeb54d9e36a325f5876abc50b95bd6bb069d4201d60b57620c0134bef33abab76d191ae1a712714cbaaa4ddbdab72c19f381aca1ce57a7987b0748b66666d4fec8193301e996195b3b5fbcd5ef85c50abb9537d504a013214f56d874f06ef1078f0afa9ae9c1fcdf144d037a57e29403957a450b31d3ee0c8e6c7848e3f1676fba13c261558ed5fe7983210e695c325c60b1b10d118a1f562e8912c5839ef902bd8ea0a40e528bb67e34157d13425217d5d133c3df86f7b1c0ba2951ec474b1cd7cdeb4db1c6f84443753543638947934027fcb5de8713e56916159aa8de659682dadd4231fcb45a8ad859e96a33e996e125c299a8862402d65eb6e51b8064ac9859aab9796566af057e63de5b20a60655500029a8eb182351513c0a0b8b67d3493396a27730a6042141d2b181b1a1060590bb4f291d79826860136ebf9238e934b608a8de914a68c625ba3b66e591800ec9a4d359a9a312dcbb2cc9914d5a85db3314e58ba4d359b6707484d9b98e044ce718ee4f3535379bebcecf661173ae83ef4a5a81716a1298437cd35d1feb3700e96b2ec6c20050a7a2292d988d6bb53508f6436593592d9c8a75e4ead976bf25c5aaab62257c945a8d51b73f5f0b3f26e7d3fb99017c98572e137e6627221f857a010ad768438986200452394091316a6634a0184372b4b316b42d72d0a007c5921fc3e066a6a405db7c1186e7f78ea92aee3c14358d72f4e4d87321f503529f45130c6405396356bdbb352e80318530642ecc3f8971d1de8748125b474dec62a60c02a1f666aaa6a5213f226506c9da574c3568d9c4ea8a6b28c4114ac7bba889da51858d1012b188cb4caa120a91bae6da7ae26a6b26e2ee766a72d2b6d0201dd4b025129580c5b9aa16380c48c49c7e53ab31600d68d7de43a7b7c02eff93bf8043e5f1cac17eb26f89a8e98e9428a1ba65e8ac7e0b6245085875250d858acad16baf87768f758a08517dbcac03f0ebdd4d6c51cc78636b904a1d60c64d09fad7ffb1beb3fc023e35c41cbe82e8494172f8d7bde21fed1fb531927d5aa54e7e3ebe7ece9fcfb0279dc37a589d58d736de1f926c912e10867d876e5fd13abb3f3d54a2be5c40bc938ef9372b8d7c957d76f6c49da66b48491362690cfb9f7cadf59fe5810daa99e61dbbff982db160dc9e0472fb445719ee404ba37d012c4c82049c14714d2b05d9200e597013155ad0d956e913e81372e24a1cab06dd8e547ce49e0e4f59440b9746d6a46cc0f59f97d6fc65ee35460e3e46d1262f953099bc7ca728dee9876df36647be7cbb2474421cda55312b2a51e9bc4fca2ee406f0a63e9bc00af28be36bfe40816928415019b381175f7f580701ab9d37d917359729cd74366f9fadd014b7a77c0df93bb39e3fd1226f908cffa7af42887ec45a809fbd8ea9c0d63512c6bfc9e9a9d094c5c24af52048ff17bb9e5733016a9d2e3f77859d2f8458643199906dbab58a30b9a7684b9da8296d205c1a6a7b579e6b23263f30a23ab7c70f764f3cd916c1a392db89ef9c007bcaf3bda71e66a47183b4e35bcc61fae618d1e63acccb26c5e4beb826fd152da82e6b20acfc6c81a9ffe6b8429f3229b762cccd60b2d49392e2ceefe1bf863782f4a2304aa70c0611e6b792bc2f7a605276cb03f317fd17edffb3ef53e273df5e054d386f73a8da907a7d2cefb3ff5fef73b17e73f9ec44e08a392b69f127c27529696ebe41404a15cea642486512d885d077f033bc462cc223b80b194aae0ef371a8d460d7a9c5b1e74884a788b89ea34f2fdd1b5784668170e03eff03307ad3893fc53872c291dbfb02d7ddd640c1503655119d5254718089022e951c90b9d5a255c94472ea5290246b6390862740cd0679f551853c4a1e3f3e6fa8aa641db367ddfb4075b820aef85318646630d057699e8011985691fe10b270be3f339e221a5f07ebfb0827bc3df48e5f1b947e2d86976ea5a7defece619f66281911038b609bddb4e36a2824cbb7c2c3e85e5d4e680bb7728da63b1709e1ae1a52b4236fe12d6ae17be1abfe095178dcb235f489441a59c8ad9810c1da5cbf0e348123af80b4105d9912494503af8c19600935bd1e173dde0f1753e2221aaee0aaef5f76053ae3c520c62da1cb6c3d8b215b4846e13b2defd8d21eaa31642ad66d9f599eb37cb2d52267ecbf77cc25abed7577552e25f2991a110420a106ce34f9ebaf1e0e69b1eac2f7796f28fe497375e7e148e15282d3dc5abf35489284359435bf0dbd999d26333a5c7e0ad83ed3bef84c23f7fe20911c72ae4bbabe8ff873e8fbe2aea1c8f853b1e9a24b4c5f4f68b501a0f641cf8d00dd5eac318c67b23964636cde379f704211a8f425bf353e55828e5b2eb6f87a286fdc410dfc70aa506531d83251455a794893836227891aa980a3315aa0b468e005608d114452384420908c62aa53a554cc570d4208431c65001e1c540544a54221c2da4329f00a6044b8539c520ca84e98559a094680a67cf2c75558c1807a3a7f691b6a85a92a906a594f0d21543512da6988aa2f34f13fe714d015e966806218450c6b3097d3f6701454b6d4d73f89f43142c3c4230671e894230139a7c05630a812143a4e27f2f14984915c69b0e7024d2c577918d66d005749dd34ee302cfdad8b5b22ff48f89e7c625a46cec1ab6b7470dc7f861f0b5c30c88c0dfe7152482538b437798ec8cf5ffc88c81cebeef48f91b5fefff04de8b32fbaef7b5e182bf72af58f0a71bceff325cf1ef6d852bfebf8ee2dd7550012d46d105599dd5b321ab2743f7352b67c12f09cc565b0489de5a6219ec6909d206db800d2d81e10ac0e02a4e0803b4ef2d505de99af6d52dd336581f5362d83aeb63059799de30ece31c970c9efb0642b17ae8288f90178ad84a9572f0b9609946e1a20bdb3f3a4e7475532ec60519b7a32d8a6c17221e298c937702bd02218895b508cdc39536651b86daea522aa40e247280c2b1e0e3b06818b7a4dee3663c80ac6d9e3b12461a187c53565a4db04cc9045f56d228d8050e4551fca2507df35cc5b04ecc3a53464e8623f92026191bc5e307489b94b3e31673ec90e0229e9c03019b144c00f0073b623112e07540fa9725428810441482b31b85124161ea4981e73687880f8dd43b898ea065cead8e4545d91351510c8072486c977ebc9a1ba3a88b336c07b405a2082ea3b376d31c86a5e9c6e3d3c4e32314d16de8fafe7ae1dcd0a83a15dc0a6836795b5233eec18f42555442f08d9779151ebe93a7af5ebaf4d08cb0869b9bfbc9ab576f88e78b27395f6a98f6c4c4f553a7ce1542b59208ba7eb9c95b78f961de56d32e161fba74e955fccebd57afbe7bae2cb2845ca96dac9f3a756d221fa7c71d54412b0865ca310226c547633f00aa8de7ea7622b2109e18039cff107bd68beb707e380e357f197f8a30babcdb835f1075ab0ef5fcd137d9bed003efeb188e6388cfdd92e31c1a654aede4f00bbd3dc020622f4f620418cdc9b808e51af3460360306f18fda10c5ff5caca6a2773ed69a5ecf1b1f4cacad3d7329dd5e0f2378ab98dccf55c918fd474ee5a762337cd076cc4f6a080aaa881cea3abc29e3db2ce198b52450e34381835412bc7bd41c2701a3f1f9f11a1710ffcfdd80c39b2c3ef8ac3a01b448b19fa08e7c3e933d8094d120ae1adc8a1233f0c2f32e2a77359c4e1781ec15a5989aeddb1703f4d7f889dc50224b5ff631477640200dbfea8d84c5a55f4849db4d0b6085e2dd1905cd9a6caa0c0d9b57eb47483d471b6476577521af75841e86eb642cbeb2d516281f37635dbe8871197a421ce4e14af783b586b4f075035025111343daff4f131afacfceb21a4f124c7008fedd3e2ce744ec25a3127c1ef5901f7be08d315a5466d454aa88d10ecfdeea813633df042959cd81a1ca6cb2c839fb4fca4a53bd27acdd1ada46f25b78ecf968e978e1f2fe14ccd95682d9bbdc4997891666a027c33d9309349b39134c52b49cb778cf6ecf1e3b327664bc729c32ae37cffc9469c5f75ab2984580c775f4277a1fbd13bd0bf44ff76148343ad9904e6b2e622d4dc5a53f67fd33b0bad5a14bf38e60bc6130119e092d14039c374bd56841908b0bdebf1953952b449f7ea17e57c7d12e212aa4e10ac12ded555136a8f59aa00b17b88821f06022aa3a4c7e97f8cffe79f17d76a826d073af897cb85cd7ea6425522823017e81b5e8c77f503ef0cdcab8782df6fafbf0e53b8fbe55f524df537d63fc9efff8be3aaa536003465d0a12ab401eebc1398f2564cee820742bd663e2c6122a3a774b220e035ffafa8fa51aa2958d1144517b538cc9dfa7e6f28058bafd527d069742f7a1c21251496acb4c67087f4351e4a16c4d21d2ae4f96385338492cddb572ad3dc27a6d590b90024c529f365891e37a438e4b6509c629b33a7272ab357e6f9489a8c1dc3783c6ba0ebdf630310884e47c4d5a65d7ecb39296d11aae2cdb453f14434be5bee7ce698e11af56b53b351e93cfbfa162ff6e9551263fd9e15d1d8e3f16db36842440a1d770b8172d3574a4df17fc43bc71cf4bb5d28ec2240830ef4a06b9b830df174d3b4079d9d9d9dfcc6086d3e899638b6c91c14579ba3903995916c38533272e678fb4bcd2559d2db1b6ffbfa754a37f504de00db0c4ebf127f160f662aac3d2445d089c9b31f31b4c126506cd886061b9860c3fe72675c02de09768c1885c73a5a41ab0841bde64aa94593c502a47bae570f251cf1f0ebb594e7b1542be5d5525e0afefb26619432f2910f0366d4b499327e63f0f4c6c666a7d3dbd880931b8009c170ffeb3011ab9e49a0c3d9f6d7bd0e63ceaca9e6e08b17e0d885ff9d1f06bf73419ed01efdd9eb5e92442e538ea9640e5dc9cbf0a3176cda7e632b7073128b6d5bacc081cb53e5855ab6432158f8adcdd0596ad30a84b652aff84901fb97101a31350cc5662b8d40e7e0e5965bf5d6cab227fc2babb56a83439fbc0a1e063b8ffc76ae3935d574ffcce6ffaad96cd5f9413a9d6ea4bfa6aa6a4afd9a9a5654f507e9662a9dfeb3e23dd3c5e29fa8aaeaa8dfcfb9ae0b77e75c37f7e7762d9bad89d77f986ea4d3e9e7d494aa2acfa98a9a56ff3c03a97433fde74528167fa2b8a33aaaaaecb82b53d32b6e5ce64d51064da359845aa566c9ad94e2d4522d534a955cfedfaf35bd3674063dc84ba7393ea97b1b838e9cd2dd8d8d4ea1b0c367b93024ee0dfa80da857c7e63231ef345f2a7af406f8697c3aba0835046aa6f02adccea483c526fc4cc9e8d072f2907e44710dba4f542d4604178bad3b05f689553e03796eb8de57a8b0fa56a43b9b9b41cdb9548281d97aaf5790806f21c2cadd4fd6c751a841620a07ea6a01eacde9c30f05ad1a77c2fb7720efca55cdd5d9aab8790bfb4527793b000a7a02ee0e794783dd257453aaa739c0e10022d5f3e0ac5feadd8846a546b61f7a95e8c44fbf718a7b182c5f19a06848086319ee4880013f269a669cc30986a02d329d35ade7b0ed7fa510a1a5f8327b18a312e0055a4c109b414852614238b734451c8e4e4f94ae5fce451000c698c31c549d0305313427aa929aaaa600238a526048d616a444928244970825005273055d592ad24145b574d539dd52daaa979c6663060c238f63509962a8a5fe49fc38af273869a611aa694509a623acc6305a7301647085c9ba6313639be33317eabced6987e56d575b5c298a9ab2eb4feefe7534d2627138eca0a84808aa70028558414f5144d2814a8e5f09582e6f2f91c401a2b80b10d1480284c5754423053a842293809218db5a8020ac11a25440155d16d45b10d7596e9d4d44f335d67a78a9cae29291a61ccc806cae48f1192c594e22c21df57358d01804315852a9aa06de51a9d422ecaa3229a4355b4b0cf4a2d7c529ae12653e19acdffbb7ce196d195c53e44fdaef827677af883ae630c368467c9a6e10c3aed423bdf6ef7e5294e2b84f5d8a706e4e08fe6399110fef6ff96e04be4378ea09f40a875888d6124d10b1c70035f054e84fb6eb9089eef96c5ae5bcc2d371721da3443d6f343c1e646a1a8406c70547a8ad7f6a912dccfab56385eb2a775922df43faf68f8939f2ffc5abfd03593055e652be91817c5764984b6e5e6446d4ac4364aa5a465254bb0ea189bb3272c93640b8b6dd562ed42fb8ec2a2ab17539db0d5237cd814baed70cd68397588e6bf0c682f4b25d37105583c2d75a8a3bc54e3e4a8c63ed2af851a7b5edfa7e1afa18716c5ce8641f08d5abdc2bcd039440a525b3596298257f796a3f1ab7ba33bf3845b403d07d0c04c1d7cdefeac88c95774dd22a19f4d3c8e0d750b53ac6ab4436941d5e846b055d506a18e7e1d53bca51af889c42fd120f8a56629bf640f3eaf6ad827946e1093e43975a7a98623a93c2b19a779381cafec0fc5a992e21fc6106773fe7ed0bdd5e1a3dfe1b78729e825ad812f5cbefa5672e0c3e67698c34c6e7086778333bc9c1e63315b27862c31d76b7cae57caaeef965d3f5576fde6b80f97ac30e18ffcb2ebc3565bfcf3f7d46fe7ca958d76bbd72eb4a1d06eefa9d6a0df0ee6a0acc30cbaebf9fc08ca7577ae5a1b71f6e2837f8878200965d8eef2569f0f7779bbe9e8bc8a99925536a6edd271cb3c62a709d66c6d2f5003562c95f7a8dc6bcd4c0a69bae3185d2bb993b6cb96797cd699d68f58a58c6aaa18f60239731896bbe42a48c1002751029d43574663aa94eb5edc3876b837a29a8dd482237ec2f5666dd4b804dc99190194bb045bd3f6ec2b8e7a27bddcb14cb135413545511253f2de842befe962338cdd702380284add32a60ab1a7acc9795d01853a466a21af188aeaa8ce6462e4a6ae629510d8105cfb82081432e4bd32c8e7a3d93a0bab22b05c79a8da51a2e16b95f72a84e6aacfa33cb98a13daaf26edf4f9500504af95ea1053ff8723fa223f33dbd8577df2db4c4f9aa54ca8237aa5508a24278da122e967d3dfda577f12d9b1087df8043ac3570d90b1ac821a2ec614e2614c55a9f40d6ec6426009596a2c0eebd0265ac205549d29ad7a923a869924b79fa2422ad72b5429ceb5668eace7a929304de9dad2fc952235c964a53239f8ee44d6582e2946d2221a5d7c999e4c89586b85a4e9b517f5a463e0f58726dd2921afab4cb28496ca4c7b843986aad1d9ca741e037f5473e7d4ca6a8a9a9ae150ecddd3342653bc78b9dbb3d4b9a4510535621e0abc5d723e72b65a0a38a276469b8049cee50f9cb9ccfa8d1beb993967b2389b7f323807773bded494c77f5032b41be7d66f6846fed2b1a397f269cd98bc70f4d8a5bca1dd583f77a3ea9d9e2bdfe6ba6bfc18b3ddec4a5b544e4a8771990f8a281c0f90da5a0e52cd564cfc5ea8423d393fe14c5baf0010aa948266b3db1535ef2627e6f80dd3486282e7d7c0d7b3267f0e7e651230e4d2aeaebd8c6a54aa60285d3726acc9c5c4023e92e79d999cd017606d816ad45335deeba376529368062d0772ed8561c403bf290266b87ec0f066ca4d1116c71deed205db1d61ecd131ed4ee356a3637fbad76b8b84e0ba3a5010c14baed866b7502814baa6edefa27c3e2fa397e4633859c4128725b526f7482a2fe5982a31edd28a276dd2fda56a4beecfda54622809a3d79f218671a25a39bda64c1d39f2b25ceef56b74f4c66e18f209d01979cb7b50e4a9544f9f51262be2a5b0945ea81790fce04ec07b6ac88aa449b308797eaa9c5a855499f8f207c1d94ff9297eeef9fe954261d3f7dbbe0f3ddfdf2814b60abd42212f78d3037f888a3d2837459c93023ac6fbc50b59abb24b3cbe502e95e7a13c579e87ba1786a2904e1aada135d8bf1282b5de952bbdf6b1630fd7eb0e21915e707317098724b32d239940b7d3ef77ba81df916dfa3bd2f20bed8983ca616541c4423d27305204eb105b652a7eaa5c2aa746143d5ea9598211c54fb304fd30d0ff7bc2f179c4f7073d5ffa85bbc5e22941c287ba9fc12f8a4b3f54d30ca2d5a4201e74c3916bfb8328bc7fdb17f468804b5e87de26768290b26c3e1997aacd45a8cd35ea8b5093be0da7a02ecc056b4b55b99b547911cad5b9721878cd5f5e19fe9d855663b9ce8f4bf2b80f5282aad8895998b628048846c19c74f84958f8e3208e04d529474a541717d20d8111ec96130aa3b09e29db859999825de6a8eb5e96d4407374cdd10098cd802554487a1a964135c43f8ed0c2a814da640ad40403f85d5d2b5c3a7aec5241d339661bf5a12e3d8f1563abdc6207db30feb4dfe9fb9dc3ece2b7b6b762f0941172d307d1fbd0c7d1e7d1d784bfec19183388f60e91aa365b6356c623817548798fd4bbdc3a88ede2f83933aeaa6a54c981e2715e585cbd15500d05c3de183a060a6ac0e7bc981fc8694b254a7dc520a5d0baca9746693e271dfc8d9813eaadfd5f967e8732e3570e2a682b5e8bedc0254378afe60d9b125f0a86fdc03eaf5422baea5332171a51712e436432ed41bf137375dd0cde5695e86d522a515d955bb1744217d94d4ae6c270416161aa8866d589bc81c3bd73fa23fbcdfc044299d1b05470880dc5a8b9c8f3e91ccb85a14d13f852fe2737053a20fdd47eead7a101c670339d286049b4114d3f786bd4eb41da017c017a417cbbc8fcb5be1419fca7e2e4f6e0ce87a7a6ce4f4d89c34397036df62cf4de747bf9f4e99b478f1e3d7af3f4e9f2ed6fda4531957524b7ef2213b9e81542e6104129abb12839e48242a9fe683c8b40a83f6655140ac25382e4dc120b8dbf21cf3dd8166070ece7ef16b670b8a76ab64914f20fee252a5174fa7410e5a12db22b09ed88dd95be7ebe2fcf6d10715ffee18240646d9260a68de1f613802979e658a031ea5dd911aa6d46a81f8b7523d7e96981c938e3c8994b524ef97b9861ce5ac216ffd7dfdc0414d7ff089e12dabdded6b3b031d8846747bc757dd88cc9a465ccb56569c714f7df67a56629588dc35d4bd9e86519da31583bb28b006d0dfa7c5dce9bb67dcfe0164f0aabb02ddb083d5b363b7ddbccf78489473b4a853eade1fe7d081250c3688030ea427b6b6b2b78be1d3e3f011ee3cfbbddded6d6b3d1fe83d286e3d8e8ca5e0bc75e3218910837b02343773ffef8dd773ffeb8384e3f7afefca3d3c3142049c816aadecf724af467739393b9ad6132d8c77f4b8c9dc7e9aa8cbacffad32a375ba9925c84b6172ad59663a7858ae4f8d1dad94c56d92d00124b10bc8f66b3676a478f2f093d8ce3b42ad585c1d42e922bd0e87e21930855f6f76a16dfc668af5459a67b7bd736b1e6c5d65247c4f3d817e8b6f7c25a6f0f84c5d7e5b3e8e5d29bb72c9d794317de7d39576f346c40e8e12bbf7c4be8534d198ef95dd7f78b8271fd5d41c0e62b835bd0083d760d7bb06dd8918b8ce053cf478e32b6012262e1a00f288a318a04bd388c31da6c54e3a13b1f9361bbcfff2038030a237987bf913ec8c7255aab412bcf4014993016cb6835ea131977bb0cdb3210c9530f88254dda0ff5dd6227e808c5200f3c65d88b1f0c37a07e8050c1b40032edc156d1dd921be389edbf1fb04d7a7214c7e651152da3b3f1fac56a204dcfe248dd8f5df82391bf25645c11557afc7bd2fa260ce2df1bdbb240e8a5fb62a1a7e409196665fba0ed024674a247d0ba8805567bfe9014b597ecb3f5894eb86995d82efd6be1f6561d4ed07ce245fa6a7d2ed4518b1de55747f5d43f7c492e5afbf447f9b0cdb18379f4d27dd8467b60b4775eacefda56b8b7d7988a7f95cfd49dbf6b7f4ca216ef8f97ea634bf6ec55bf0f6e7ad1aeb713870460da7829beb8f080b4ad08b64493501a6c8c4636f6838f17628f4f5e2a7c74f6342ad6e0ce8becacde9e5853314312407f479fc649c1fb1f166b6bae7a328a561c13a207b1ee05737c2000d40fe988c33671dd3b86c3f11db50daca2cb426a571edd817c95d72f8c09b69cf3c4809217e48431b26779d69c4e71323d356df8775c7ee8302f24f0e5cee618b495230b6b5652ecffe6274d7ca7dfbc3cd839ccbd623c36d6e53092c9f3ccbcd69e86fbb1b1a917c19586f5e9583df7b4e166bcc109a36d4c39ce94d136ace3ab973f318c234b49e45015c4987d7aa4c1fc1dd3b2ccb651b0f54b8b63fbbabf22b0e08c59571cac8029c7bcaac743d4f067d0d9eb171d87bda117757c4ed5af4dcdcae054c1db9113751c047913f7c6a03956b6cd3dfbd3c5d7dce641920b317287af46ee41b028e0d5dfb38ec38fa310344fed07897c84f773a27ae1f93f17c5a9796a9f88c25464dfeb6ca418513923d04d4531230e68a22f7bbbdbd081369a42682c72e26807fd4e18e2abc7cbec85e1c67a6138af4d5987cde0cb1f1a2bbb7298691e3c109537f295cf85a53df9a1e15744cd01b5910f5b806265c7073bb67dcae77ab2977b81f8e4c92703f3c907829604e1c89e0c83088e94bdef7ee8119aeac5cb8b7f0750d0163e7e9b7cd4366590a8313ae96ef46684600f748dd92fb026f3e2e1ce881be8e4f864ced4f70f9ea40c0569ad7aabc6e0efb5f607c7f3aa4e2f977e26bc6cfd353554a16558ff31d5d5b1a04a83cfaf0b8a5a35e8e5d29d50288ddaa2b643105414b8b7f6c610b0611e1445303dbf4dd571e8173b44a8f4c6d1d7c6ed238be80cba17fdd488f42ae2944776873d3c40dda13a4932b6088dc91eef198d9e1780e8bbf70f6e97df2f12de7e91f96c1386e2c328c89f419edc3f0e9edc417b6fd4bcad3df1010321e0700d9b1889ef978a595c0ade79bf585c63fecbb02d98db9827722716c0711fb76519e36fb0212bc4b9ef5da48827fb7a2e8fda324c0411068ea21391feac1cb1804ddf0dd87e25305dcac4ce4140dded6e2870ec74c42a33f8671b1bc20256d8c06e6c00ea866ed29b9b92c9eb6df89d5db4e17706dd765b84c68dcd511b6544dcf27da2ffb75e5044ffee68c47e7f24326e0ffc9e6dfaf941df97ef8cd185c79e872e0cf6b92a4976f7200af0f20b8bb2b33d8c124a237b00131d17d11747f7000ead02eca18c20d8fc7638429938278e0249ebafdcb74075a5a718644144017c78e265478ebc6ce2613e52eff2fd9edc8df8723fdcf4b7739ca39de3525e30313939c19b61d81d7f17855b170732a8401f550e70f61ad487c023466da9d1f4225f30d856383406db40c095102a6d28507abdd21aeeddbf5215e0dd8fc646f68b2d3c6dc7a0029a1e1bdd98e26bbd1e744686bcdfef6c202b2ac70ba25dd48416d0472da1093c2fa4add1962902f8430bf098ed5ef883d86418b9bfddbd251527e2c47b38fc07e8d6ad8dd865476cb2b269d8ed7650d16e23ef17c4ff5db4b98ba22b14c4cc96b105349442057444ece97107fa09b1f34a808d7d12daeb46775a61a2193d73c7834c0e9f8cfb6297bdb11b2262ab2f55093b1cf134b662e99d303aa47d46e41bdc92ce4dfceeb3d186215222d795db68f4649cddbec020edb69421b6db62eb0c91346d3994fd3e9fc9622b8bb6615f193e96fb0e6d4317da682280c5a8d65e712860e3fce945117bf95d17431fd536a51785fcf9a2f41b0f60cedfdd863eb4515260a24017ea85f2a4833ef00bc7b29e973d969f9acabf4f8dbe758904ee8ecd6261bd7c64bd509c7dd5f1e3576727f6fb7464d3f01634816aa829a48ffb7fae355a2d1be297db236de5df37bf7d6c6a6666ea58e9c891d23dc7dc5cce3d969f9e8697efa9c5d199a3af6f345f7f74e6e4dbce9e79dbc9f558ad175e15e305e68368294a3d096e6ac4872e557147aff9f40782077dcdb40ac9f9b5b5f9ea29860159f9e4c2dada42e514c336f4a4aa441ffc3e55a48b2628ebff5aa1d26f2ec0d5803abbdbd083369a0bbecfc6227d9c8140e5132c0f54239f1e4624fd34d1a81c7942e03d1d294815abd74f11120c03a0c2ee366c435bd8f2cea9ac16781fb166649b137ce30cc45c45cad05718814fd926d5485f5114a52fbef629204c915e8cc14709811e355466d04dfed5d8b7316aef6ec316b49123f46be37eb6fef88dad701ed8e64e383bf897c2768571acc3b4e8c3e137f6f12aea0d6e89221a7b0b8af7ff4460655aa9472e3442e356a99f05e83175171155743555092095f598497a406471047ac40a63c3467d2dad56ddc0c7b9c6460af65b914eaf7e169ab0bda77b473abfa71ab407a277df234ee2b3e4a744ef6f52838dc392fca63bda98569c7e836e0c806260c5fb68cf4722580afbda44686433d0ad87efbcf361feeb5d7ef8e1cb773efc708c0e99133ed61121c64676a059909bc38d6b633e9e28463487594c7c7c5437b3650cb7a26847bb17e51111b63a3d61cb50424b08b58206c7f7d4f60ed973a3fc8caefe13a6b3e68df5f51b4df62f7a02ab1bb67d64e8697e9ee93abbb8b2be7edf7debeb2b178f85ee87ed21fdc3fb49ee675640089a25b179f7b8c7121ff6ad41efb52fbb1251c7575ef65a40bdde8537e93f1d16f6d3fa9b2e88b1edc3a6b0af4499a55858bb9aa4e4fec69b3835e1dd77e6ccfd30915f9dc843a7387dfdf8f1e9b3f7bcf6ecf489e3d7a6a763f19fb3e8285a4117d05d629fedf7a37f809e09e3b88f318fde9efd10b2b9daa8734dccf97179653464603c907dd98d6ff73bc610070b517c039fda3e36dcef0f2d2b240340fdff1ada5704e737054ea9efb24d69e766dad00953f65f8471d30235cc5b63861afcfc6cf0b6f9b6b162ffcfa11986e04296b5d080223c2f0cd7f280f9b28f840c5c3bb4938decd88e9191f2486ab8fccf87761e94340249e9706f27193dad4ec2c06931bb007f28b1a8b4bc32fcfa1649685a826c01d8a69620e7be788e2434d30618fcf91d777cec02f49961b0811fd8bd7eea534cb70d42f137bef42514e054b9afd36c104db134dceb2dbe8d6e8063e3b617a13d067443c64f7a6bca3408ed3811f383b72989b2c2d27064a7855a466cb5c0c68335b9ade156f9355603699fc0677f6f63b0ddeb7e3b261a500ddae1384c35085cbf2dbe49436fe0c366f7d1a197aa4aa10b44530c5b51e02db78df06f044dca0811aedf124c8b5b1adf889094021e6a1a3819fc736daa2b855dd409a978fa8a414f2e40d0ed5e6c53faecd080a1abea8377c8a0ca920509fbc5e09823938a18ef4ad9adb1663915ae6b6ddb68f0123bbeef6f482c095d5ea8085dd3f7fdfe0005c12e627bfadd8f4e897569016a9c0dacc6c35c859336da8cb751adb5643cab6663a9bed4a8639473be994a4f1252539d57cd9c7ce5ec91e2a56b7927a750d3d154dd4c18998fe88e4294af3a39708e15e6ecc4dc69277bf4dae25acab63c474b28c44de88ea264cc4446018d515305e0f55bdddd14ed3e25a318c47713ae490bf9f229fe579f53a731c7786a3ce09634dff80c4b28d44de8b6aaa42d2b4b45f90c1ccf99cfcfd9d6dcaa93ad5d3f7126954c78a96f2ad4b219afb399fdb0ee2854f19c6fa63293981e559d57159764db0a760e81987fcf05758bc5080bd0552bbeb7b117587a9fe27ff5e595339873dd2b35786ee4eb8757f4178715109d2b2b9a346445692eaae8d8b846dd22d6b4a56cfd5434b45e7c33e6646830147a93feccccab1cb546c8643af54d27a710c5d13f923513a6ae32db5214cf2edc75fb7465e69527ffd2393d97b0e70ac71cc83900aa499906346b59694571f4844b95044b798964eacce2b55a16c5fcac0c741f42ad72646ba348434e61b019b83fd44f417d9edf9591ac6bb2393995b94511c0e034f87551e7207cb64ccc55ebb290b6dc5003b6f0648a6a146348e5309e4c696943b5546bcad429683a403ee36469f241ffe87b2f2b8602008aa5a666011c93596a3a87712105c0126a2a87b7fac2c6e76a328301703a29cee29fc172f5895c1943c63ed9997dae90971b9ed9964d444e3bcd73669328de07af965acb6a7969d917d3af26c384af08f0aecf4ba356d15ea6e65a324b75a5250d5b4fc16d207d40c48bb2eb78ba32ec55f83d61539a9a049c4ba9096639309b522dd14a835e79ef51ffc104cd38d909005d03aa5b53a66aa946464b4d6270531803d5486a12e35c6af0f7647ffe2590b49de4cd21b665cb2de3f285e7663b4bc92cc6e5dc443da79a81876490919fb3706f5f9a422931dfb312aaa279741b4295baf0552fcda94c7a08c4f069ade67be566d977cb2dd8bb4926fced1520161bdc6216812b108606853f79bbffa94fbffd533edcc3a9c400fd8ac35f6e324dfb7f787b17e8c6cefb3ef0fbdfef751f002e40e0e21220091204010c9f43f012c4cc903343cd8ca4d1cc400f4bb247942cdb8a055ab63c966c47b153cb8693d3fa153fe3ac4bc43db57b1c3bf171b39b526d9d6d93263eb6d3ad87deee9ed6ded3e8d867b32da7e76ceb536fb60fa70d66cff77df75e5c3cc81979b33b1281fbc6f77df77bfc9fbf1fdfc30c07fc3798e1f7b65aad56771750888adf8ff7a0ca7ae5b594f44e3ea0d4dd147d7f94bb991ae4ccfef1d5786984639990cd976e23d46777aaa10dc997af7490922a5f5154b1e7110875ddba1746901779a90a073f49fd1b23ae810742ace87ec5022d6e48f9eacce3f34aaabaa502c37f1f4eccfeeb59cf33f58e86b169cf725345684683600e5aad70ad058969b0255a1c56d76bd59adfe6a7e114d4b85f8ee1cf5ab5dc8f6504c56842047c0f88c5bb7b7a0c6f80d0bca37f1bdd5f011995eb5bd79add034fd9ae3c380b1ae3067fd9c7d00aff5e0ea5fd6e47b165ed07f6c3161ca243548da2f08c02e3e961f2c057dd12d92073ae5ba2f51ef28ed874e7c80691003c8753d9ec54146f27c0dc09df691b2dcb9cce212cd14da8fbfad910a8689547f16a7e167697ee4fb77776b6db6d21b082ddd7a5de1f64048c855d52e848eb42a41ee8b33f0ea39c02fb4f4bc66cbcb13fa7259addd2afb317fc60059f1ccc77864bbe361a095fa8f6a8c394b548e233ed9af6bafcf42208223f1b8e4120f87198dd1d049956701d7965e90bc08c7a2683ee7f191de8f3f8d891a81d1a6addde870eb4d1385a43c8c7deaa7ad5a08ff8ac743ef2965b72035922189e6d091f8285906a3221cfb601131b6468dcd0616bdfb688813b8452d2c106b16c4fa8f7a40394520a1d22147e352708ddf4103c348e6ad232c77bc95a113b1095668cd280f5a2760e0ea88e614ffcce9e929e6db07bdba67f163c2c3d3ecc246d691742a6bd279d3d5899c8c569130de2cd9e921c5877c69bdda894ce430838eb7209375be58d9a7ba0303547057a806dbdfb2b3ff8c2570ebf3673ef09fb5262e1d2cab87b2cdaec67fe5965f14f4e2cbc71ffc489fd1b172ea0106b5695f714fa34fa27479577106ab611017715854e004fdf25faac178586f5d16787aff269635f3bfaecb150b3dfd018269c10832ccc4e00d61ec19cd2b861b8716bccd0138c1a58fed3198d733d69ea29ce25550800c1e2da84a1c745175c20181b94c518b779c2350c9b311d6b1a6058d6e49544746742245aab4272c59813755462b86aa069c7beae5942350d03c0c47bf7a98181c75dc3b41965048bc7d8ba31669a69dd483066108c0921319ddbba6e731ea3945059319b891d8eb1c6384b5a66361e1b8fdb13f10989582b016b3123c4a0d4a2cca4e151aca9a326a3569f4c9141f3681b3de9f3d00d98553cb72f5ddd3fee4638837a36b352b5518d28c26e14e2bf1da1d393df1d3941858730b999937c8d32ec5681f71d768a41acc85e31e084da2f1e066c75c1f79eda54c3491c92c68e40f1dfeb04dda6b8570c18ddf78b68007f7ff7ff3ffc7d389c21161f5790fae3b1898472d94cc4b30a52dfd52d32231a60e832b1764cc4dc81cb0eeb57afd60f12f9f8b842dd1fe7e1fd319e55a8fb6e6c32212da9897c6c5ca1ee8f730b17451bf52ed3b3c165fb810f1287f90097d04be81308954f81d0ba65f65bfd14d4549eb83f9af9706ab84a9353d7ca4ff17fb49f08856a76448a3977434b920b35dfeab29a7578b0beba5c4358b3c6e36fd536e78d947edacc58ee49576694bbd410ba568c72db225c83eb63d58c7bd2cd9ec81436c68941288d4ddad4a4f7437005dcfc1135995380158cb71632b3f195df04c014c7c7ad4b274e615c215ca340896d25650aba46e52cf2abc4e4968d35d8349394129294a70dca6d969c88134e4e02b6d415b0fe060d171c80024fe90b5b8958a14f064e4bb6da62aa67d1f287558a577d560221743ac5141c769b5156c7bf7f43e253e3d7c31e82664f76b46c78c3dfbf2e66bfcb7f13cea23e6c83a5a8a5bc3ed21b5ff554966d55523175845cb5b33dec8c7fee6d349d395b3db1bc7aafde51e8f3bbc3def8dc4af5c4d97486eceaf7adf6fbb665ac5365b6b400fd015a611cd59f1f124a0825878c7316ddfebdb6a6b5498ceb31dc1633721bc7741e2311ddee6de879f4027aaf8ca90b21b906012d863782bcb0e18d10e86b68237cfc601c07c84c32af97e9d50ad9cebcc89963cedf4632d043b2242bcab4305facefdee054ab0779d92f315a76abd5f2766fa396b7db37ffd5d1a34a43a846d01a9dd0d2e93ae1500cf5846ac3cfa4570a45b5ae98c502297152e5b3c30135c997a190750af0bc1c5f89582c517012e3ec5bccb59d0221afcf140ace87132efb16369895788758b70cfa25821f3fd4e0031a01a15d80064d0d17b20997ff3177134e2161598982c3e36c4f88f487891833b138a3c90b35ed650d6be26c3436ad2d39a137116ad48ba90c5b84bad02fcb6b596948ded80409a1432389d211b15e7d6f02d2906d1dc2f2f4be78b15d645b7bd4c44bffb17b6026a3280d37544c53a725a4c9dd99e57ddbca5d1327966e0534a7377c31fdc600d7531bbd5dbe8d5260ef94589c3d57119fadf4d4b8521f94c01908a104667bf002bd87c8f7175e14800a1c608a97e2c9647c0953ac9424435fc614bb25fa365a7231c5cbbaa1f4a7d7702982ebc6642a35695c07752096d677e426ece8e998ba7bf01a2bc39f04a15ac2933c63857929ac2fbfbc2473cb2ff7239c46b5c73ef0e023aee973040dd216077ff0d7fd8d3f1b3c19c20087e9e510fa52c273bba155219263437dfdb32371fe4fa2f312e73f02da29a40b77603f3db83f1035725779077e9c98fcd80f3f42eff64fef12fbffc036f3e2cabc04110f3601f5b6bb073e547ddeb27304cf7e466c7f2648f68d4054a381f6583f92f7e0e7e1391862821de43d6886eefcafdc25d9c18b610b9e085b307f979585ddde85b7516fbbdddb546b631be5a10d79b94a4702bcefc89f05732349af068e741e1b84031d416ba5e24090071dc8df396658c8f75f0ed28d9ad860d4c4fbb2e5f2847c7933da14fb91bc8440b78ea355b942475cb80d27b0b708d5b01e81b00dc1949483c9b2edebcba79fbb72e5b9d3cb175faf123e253ee6d8eb2f767adca07fd8705ebf71e5b9e7ae6cbcde69b82f5d5597a8cbafbee40676d61e1e6c0e4d8dc4834d79e952ca4b79a594370008db69365bd7aedd3a3818048395f9c1f2af2ff7f3c551b99fa54023ae6e496aced5752fcad1790c6de924d4243ba92f3f9f02a716a52d4d80534a49e1319a58aa01d6f4fb26a70818921493eba011004e240c8522c54ccec4ac1405c03d4e4cd080264d609353f71a1ac6c3c9a944a799a9587ccc04ac294a4b0c718663dc3485d81c9b8e6186ed71c3304dc318b731c3b1e91880661a7a0cb39826ae4fb806484ecbf8a44375027bdddd486cd45584cab57eb056df4e2445b5de20f735d54a3dd8f5a12ffb62abab7018ed3ab1c4547679a619a15cb66cd15eaef1d64b97de6ab8b2ed669613b1fd28146be2845b5cb7d8cc72189127fedbb3ec7bae5fbf476e6c2db82712fdb83a35741e3d88109dadd45342aff1177ade33d2669d94180881c53694c024ce60904f9ef631d2029f4b47f9f96dd3ce5b66def6fdfffe11d392475e94e8c53e26fefe35cf9356f3bc1fd0645ab6651832add73736468eeceeadcb6105687dcff30349218c09f84d15d355e3a510fe5bec8402b6df756bca799a59152a22139f8ed02e33b5d955f1b93a5b93ee427f3bb31aec32ff4a756366b5b7bb9aa94d82534b576bbece14214bc07e59605f8fe3c54c096ccb4868e5849842e8492d6e30531986a06c9d924a9b869fc9ac17b677d6404c64267fd7d76564424cffa65a0e7e5fb7a87f4be49f06ddbf483d46996d128eff59dad9397f12b45fd788d68ba36c411395fb7353062219dc11492ac3d1f761a2ca477eb11781f6d2477be92afdbf07036be750fa809ae29a41943ec11f1d08c687a66dfde2470613583efa52188b85c33e90410531461b01d25a6f409e0431832a852a7d8774da6c34fce6c7d8a46d7f2126a4b5f94ad3b69ad74ef05e544c2f6e869fc84a3691adc59f61a272a06df3809a78b7fb2f00352d7b0ff6f448ac0d33f0ba6f63e2054789440b5b91fa2ca1b3e81e84e0b514980f461262a110b6ee54e208b552ee9557a075e772b66db37b285f9010be6e1d224073b73bf0aa8ccf4150d9685459a59a802a2f88b7ee2f11a1e316fe1e19b78bf3bb7373bbf3457b9cf07313d6f274f911db7ea43cbd6c4d9ce3c027969c8a634c4d194ec5599a68fcc2d6c41c37a61617a70c3e37b1f50b8da84d91231b65c5fae92a878f937224c5be532e49a030ac62a1916ddd3c3cbc69d97078f3d0fee14dcb3e6c9af6e1011c1cdcb2adfcad03a9609907ca5420e7cb0fa167d1bf146f21b41467b28e643feba1d99df3d7c8a8d9bac4bda8ddf924ac0e5e17bdbf710ece83d770035bf4e8a7ae40d586d05cdd6fd51ef9ccc68049bc1a35839f830690b2eec4745b074921a66998609d52836042191d8b8dcddac9c9043508491846c96386864dae713905691290181b92348d50429366aa108fbb8699310b25e37789c9342e9ec5c4e3082616e31665099da56334157b0310037393b274cc88136a128d13cde084136652d14b89c9588cd1846eb809661262301ad7f5a46e662d43b730a6445c9bb28c24073a7dd2360c39156a84608e892e89d388a92cd99665cde50d0b6b5ae17fca15986e334d545891bf71712556c2372586614ca4c7b6e6df5b5823583d4f94c41255c0386ef2fc983b9f4e1a008c1a1bcbb11461baa601c69ab8d2628ada0d6b315d3c27afeb314c30653c37c6ac38068d527da59274691467a825f5b26574163d36ac97f181fd465f20c0a0d68223f63cf1de7d935e40b562d9f6ab81ca64bf181e83b98006cdb694a90f00c77525b21df694859b3ecdc1ae69ef05f6eeb66461911fdd83c01aa851cc0c1904aa47625f32324763056da1fb25d6695029af9ef6731532d974ef202f391e0f4f78fd9c3ce5de756eef1af0a4f0d412d5ddb5afcbdaed765aad43b96fc15e34abe477d4e96be206db04152ad1ea766cabdd0eb26b9bcd7cbb655bd7ae59763e04515236b0fd108c0ec23a366454412d7069e280dd35125edbf01ae91e27412d8c3883c3b34b38a6eb710deedbd2e2a61ec7f74ba2db6b465c83e54d2d61e871fcba1c8ee9426aea5c67bac9bf05e78c98a9ff0b215298fac7ba7f62c44cfe6735aecb500e318775e02fa1839e422ffb9151eb4ac6af05f67225e3d724f0f908e7db6ac6e997f16b6e54c667d95a717543dc97be13ca15cc4d1200d36692085f0afdcc27c2b7e2d3b62d647e45a92f847e0a9a2eae046a0ba97ff2926168f0eb9aa1df3bf94f060883642fd6e2294b6816e371895d17e35a9c4b32fbd84c84ccde1c4f608e25993d98268ff7c8ec85e06f8ec5635319279bcd389371b83a8a9c28aab325d0267a00bd6188730d0fabc947abd4fda1c26e5f17cffb6adeba2f2453839c0954decd202a6133883ad83c43081cec670b85ecbe532890484f0f38934c5bfaca47dd1cb095c81f6807d6a45b3dc63612d1238be8ade8bd23f218ea8399467444e63f5b843b009af4e3020c005835c37424b3b7056f1ac8ddde5ab878449aeef99dd0de72a697b626f34355f2929046dbbddc928ff6258b5f58d83a2aed7c67fb429860fed1defdbedf4f620fe57bf96e7d985cd2681f795f730707a23c4a82b4ec833da9bfe565fb7f08e9c815b275b9e136aadce56e7fa72995653b5745e72a8007d30f8e7df8731f1e6bbef3777b0602dbeab6df460db27efd6d98826dd69af29a07dff9d66052cf11b27e7d573454b2cf4e3121d1f0ee530ceb45bf1ff7626aceca57cb23e1fdb3cce94f34e8e75293868b572c0915e4bfacf763d2b24d65ea32ed9b2abac8df535b6aa6a60679dfab81f5e7d3ef2306bd19e89baf04dd76b73f17b303b7a183986431127558dda872b7919e651c58b6e646346065c1ee19ad3706b0928ad1accc4e3cfed1e2ae66658cee5fc4e3ef7ec4cc588a3b89b17bb629db9c5f38039bf3dd7f164026c186d8ca140ad0aa24be74e2f3b71121b095a8fcf69b0951a1f9b171f3e9a7cdf1980ad5df1b019b14198f04a55019cd0bedaecadd8886e7367031e5f5c39773a7dca8f29f7efb816f3f0088eb05c71ae38b0f2ccc755bffc6ebfecf410ff4ba7b2f5e9ebfe05f9536b3055d5fb8bcd0fd04082ddc37bbacadff6b6ffefe1750940b252e996dce23d488a87a2b20f9e484f0e9f6e786572390c4f53e40efdff8943f217dca4ac315d37e86a7cd6702903dfb13aa9916b65a41a37ce953fec4f8293ee6d8d68967ac31fe8c0a526b59762bc0f90e315afbf283ab7742158aa6e01e8579e3e7dc1e9319dc8ee6dac622b8771cc55046666d9f40cba88ecea0f312efdfab97a8572fb99257c1576c40293425a754f78abe92e37af59213885025b1d310b754c516b43a9d6ea7d3c9b75a79db6a77e0b0dd91624ebed3b6ecfd4e67bf6dd99d7d7541a7d3daddddcd7bdebe65ef36a1b9dbb4eca6d7dcb5ade6eeee6d24bf769b9ee7c9f4ee487eb3f22b5c44a831e85570faed627490187884ff5921feb64ddb7e83b461c90ff082ad40440d4c8a11f9d40bc5d8ebb6a90e9a76abdf451dc1696fa31cfa18fa1a4269a17e45038e1a4180101d5499ee4243db58fbf935b4b49f001adc6a439447fb83d6e41899584ee7ca71d39a9921a66159e62480ce2d2ce392304b9986cd89493526742f6a6022b41b93338bd2b8cec62c6ac71e05a263661136661931cc0c490f6d3071bbd45e0831fcebf56c9c19328c474606998ef93a621abace52a699364c374e7ba581d3c9a978dc9a4a65bda9dc5a6ee9fa52627c2953bc549e3bf707d4f4759fe5b994430956e14cc4a4dc548a55cce4b9b1ecfc986d0065fafa522c39a8571992315bb30c7d622c95e7815e353e0605f13b936766c6571ca7188b65cd84359572bda9f1b5fce2f5a5883ff6f3e8bde865f43724ff54b5c2b8621aa8a526c552d9d8c8bad98c770a6a993567754d7c9e829a9279b36bde6ac65b5dabadadd6ce80573b05b533a0761ae2e886d896b127defa5a7d75adb6ba21ff5ff7ce819bdd686c41bd968215e0a98dac9b6a54184f9d0337a521b08ce64b274ebc74cdb4404b5957de5a005fb756863de8c126fb40cde2dff45baf9829ad7b38bbd3387f7df256636776f2fa7978d988436c6a7e7e2aa6c58c6e5b08b431cd2a2c0dd90bc5bfe5420c2c4b6cfd4af73db90c8507f542a5fbdd13349383339502effe5edf1a338d56d13a3a25c6f7f13c1de5616cc97ab15e4c15f7077831c5169c1dc29c147f23416a0ffacdfded1cf4cba419342eca3712db5272e9dda1e023f02fe5dfe1a8720f0263a25cbb7b70b4be10f0b4d6501d9dbe731b8e46854d97525e6bbdbf5154366f3b5af2fddb0850a7dd6e0fe003cbe694526e1fa26777d7c78d1d2863f94e654c8f725441315504344a3f3b82c9f0b59432da96091fed01f55b43bca3bb5f98c26a8237bad785eafd889e7637bf7d64d7bbf36f7b61d6e0ee70cf8afe76dce7a31af8eda33b4c00d06bc3c747f692f087efdce66a8c558ef0518a57cffb0b75c43b3f50cd618d1847f2477b002abdbc79c9d7742cb296779c52f9f1c043d10756f5d18eefe808b1a5ee80c675344a171a2c6b7918c7bd17d8da3816c62b1f294aa4809f0b8bdd5f19da2b481fc0d7d891b05f83653d16aebe71342ad849681d85dcf58d23d0c23aed888b2782e8b5d4f75ec20a0eb76b6328a328d2968de342067e725491be7154253e3212d9acb3d4ff5e82b7a5f28591ca17fef9f1d47e7c049e1a4379c9bbd346abe82cba82de809e5431c4f5d0831b4614466308a35183928139c21ae64154e5ea4378774b75cf8dea3d9fac56cbebebe572bd552f8b8d81dd64369b4cba6eb27b186c05df7fd46aedf8fbad5d7147bd5ca988cff2fac0eeade0a6ee5eb005f9e0619dddf0b4f4fb1ec001b4504966a685ccaf353fa733543a82e6feee3e318408b92fb4caa69c8c9b964df0670f80504ae080e8d45249eb6ddba23a0939c59bc815ba9898f3a2134b30f5f15e92cee8949c462f69c785c3ee41741252301e67fc2e30dab6a7606037a1d93fed885b7f72ac2dd037e7a1083fba5f17d933237378980df59aeaf2335183202528a8d5ade1920fd74e01128a5bc339a9795755d1c2315090368611c0e21188bb5e404fb5941da1d6573dcbfeb2ffbb5fee21c6ddbae7fa73572efd82b94e33e9730ab2fddcd8989d6c54ca8b07b679f1cb7e79be1c82d7fddebaf1d68b579f7be29ec54ab9914c2ac6dda513d5b3990c9158280770082db4e4fbc3efca022aa3242d7b6be1d5a0015ba27d5b41b3be7a7ec736a1659bedc5ad107559796b778316dfd96eab783733c4e1e83105297c3821ed8d8a09ea815fa507b625429c14a8fb20656e2900acdd75f9af25b625c9e5c00aef79deba771bf95f7b7b079ed7eab7a94fa393685be1b3a77a2102ae6f2a2d05a6d3410cab413371291f1803af81dc54deea83c0a66aff76b7ad8467d981fbe2a7da3dfbf2412f20a7d36fd3edc5cccdc859f80ece8fd635a13c04b453fed6be0a0694f02dd2af1ec6e5b6511bda681fc5555c62c460da92d294f8d80f8df310da61ce20542ed6c3393f3a090ea51bd6870c2f70d86dee4a4c99b62f8f5f93c0326df9d993e550d33677e5799f37c5df3918b0b3e8a8737b1f5a92bf2188a1bd1f3d8aded48fbfcf8fd84e47d91ea2c7ef2206f78fe45231fcf7c211df837f808285a73db4015eb012358343b7872fef3d01e9288f3c38f4b907fadaa171447c70b45ee5483bf023780bca471c0fdae13383f53baa21baff61e0c070fdc38db01dbcfe253f7249d8063d4ca2a4622a1b9e7522e246436814ed08e0a20a21b66cfbc99b370726955c0881044dd1e782b92e13b2f72ea015898459ed850685b9eb92b4b6243ec4ece6fa7f21f4df37dac4a0af04f31cc1df5d5fbf2667baa6dcb879d3f3604c669505b82ad4c44bd7ae5dbbd6bd25694173cdfcb5fefc93f528cb6790fe5a8ff0dbb80db71e38882304373e83cdf2171e05cc29e1782f4825faf875c22935c997fc412ab5e8af9fc3186bb04b2c26b381de7811344cc82b25df81df57264fc6ff4f41357458574bbd648c8043df6b0cd8efe1d0b4bf444c4a39b9fef128773ee5181efdc27260afefd856e9154231be2039f27dca7cac9dfbba2a71ab1f9fa5856a621e6b64ddec4663a3514d40b55ca532a6485ae95d3e3ac8e1b0bbdbc8ce165fb7b4bc58bcf42bd39048767f1a7be0dee2d24cb18c71627b20b0012da734ec64b3c5cafa72f24f33afcebc50afce562a97678aae07f70c0632f4e5e626a5a5e4c2081fa83b7060707f087db1d40c0cd5b6d90e375f1a75d0eceff9bb5144cc663420cbebc564f4c71907f1ff43d1ee83ebe79df6018521632782804ecbb62f44705b9f8ca8ffc80f2ec9c9d5f5f8cd689cf694904f1ae11808c119225a73bac70a992ad679209b570f86c08599813fda3eb0ecf5bd76f796a7250c689af65edeeac30a567a379cb3ad4ebbddbd955e332c8996d49fbf59946d9800ee4888a673d0a83556e0643487ff2cf05afa58dc64788e25f4ee61a7800d765e4f90ad9b813bda7d79140cf2179881bf097b6ddd66e769c2d80afac25f64018f4437460318bc05b4dcc3980a3a64b95fd22af6ef82172288745f0d442ab81944f7f6a3b2ae477b6774bbaf1c42c65b198a9a7007e4b7623fc15aa92f18c20b3b99d5edf405f584a8d03230290856eade0a6d4ad172146439062a7c878111ca95900bd3317e3bd2eb0716a7431f7da525d9d85abdc9ae17bbbc1160348714a781faee6ff544493506eae18ab0bf272aaa1c63fd266a53b9cb82b82fc585a63efdebc20368b84da0bf4d06b35aaa8393c161d01f5abd249f9fa34da27d754af4d5c1d9b5dc4fb33750ac83e075db6047bac41b7a87fb60a343c89b5ddb942bfc2ba61d5d83367cb97e144e47bf916140d22e8d00e0183ab0af0e2b5ba8683cb51561e58bb64752cedb43b181de88d80fd14e8194035e587773bfcf1adb0e4fa05e64456886f67aa34bbc181acec73574165d476f452f20548e02c41f1d9b1cc9fb8b3af86120cf5388bf3eaa5dd40ed5e77adfdf5ab83822c989e0d98b4e213bb53c33bd3c75d21f9edd6f4d2f4f65b353cbd333ea7b269a9060d9f6c97fb8b855eccf1f6a06c49385ec3fd4abf9e9e5e5e9dc899de02ed85f9ec955f53fd0ab397546ffc77a3537b3dc0d83ab7a6156212ec681e4ee3f83ee43aff31171662bd1fcc9810628c026f4a8978f68873eb35c3b57d50babf77367727926a8a9f81ebf5029c8e22dcfdc0eb29682bfffe87f1f4c65cf2d1b157951aeaaff403f11d4ec46aea01e741b85956b455825d5032275dc4017d0836847cd1cd2ebcf162590ef91753d070174815c042256c928e2791ffa795b54ace0b412792ba8a6fa9e70583ed95adc127b47d6165ab26a05a7a0b35ff79b2657d57fe8bfcff18a9118db5a28c846082add0d8933c1eb851245e2b964ec483980b0f127861e86fb409f3f7c4ebf7f65e57efd39f1ccc8f64f7d58f7fda5cdcd25f11b4b67ce2c89df6b893e2dba70d40f33872ea1075033ea6338865b27dd43fe973a4d4ae2ec3b21d63e95e12225c783f630054a2f3db1a5668ffd4e6717767777772510faa7a526d41ea2487955b4d4ab45958e675bdd96697b5e1e72dd5b79cf1352ac651f785edb5332bf71fbb7e1a7f01131dfd37263a3d23807b5d58d4685d91acbb8bc32eb435e3436d6ab8decda7948ab6df869f72f2bbac99cd727f4e6aefb7cd630b2c6846118cb46de304dd7c81b737f965848d876eaff38a1a79275d7368a55e7dde3e684396e9ac6a479d234d576a5db4d24ec791f8b1a21e8803784edeb03126cefec9ddfd939bfbdb313b97624e6729ffe2a3ad06d24d71ed48f6f3ea730924324a41a0f32aadd002b4be29c401b6bd0026c716ee15dd07064175aa0e13dc27187724ef700732214c3bd600f47ca3ad7bfae45c48c701153d245bb1964a2492355b0791058b1bc9ed92a88830e7e238750b916463f635fb7f5319fe00b6d1ce73c8edb12fc0d59b60665404cd7d96d8429168fc7140f3caf1771e8d6c200eab4448df6f91135e83d17a4be8419be2d9f0b0833ac72f9e0bfc2e7d10442c04f42a32214ca28704c56222bc27f7dfac9b1a7ab0f174ab673e047c97d7ff1cda5e9b409279e1e7bf28d66ba507acbe2014f9b4e41e7df77ec52e1e14a9857dc46713421191fce0f7a6add3bfb6d0790fe760ea9ae53893fd116afb3cd3887cf0dbb913fb92faedb17d7edeb546c53dde34c6c300e68204134bfcf99781ae37d72c6147a01bd07a1c6b17a8b3bcb78801410ae563e52800fcc109df3f9498822064878506f5a8b02029c04ef204ae312a47ffd27738cbf1f00e07dfa98e9e7bcc3fba9c59259b19d4d328be6df047e26bf39c63fa33d5e3d15ecef6b5a7b24778ca7b3ab44278493ab4c5729f44427d728d3de4e2653d942219b9a246fd718496e129da8b04d9d3d011be325c2890a20bc06fded76153d7ca7768b7aaafcc13e05eb1b9b5097ecf929ee34228063b89a7253235b05a6f6e4f8c6bff6096573b1addcaed7ca79fe2e5fdadd1d5df1ffde9f369e7ea3866debd0b4ffd6a5279eb8d4fd61eaecac34ccc02eb3badfbc04f397ba3ff439f6557fce472c699e8cb3e9679571227d78108f64905ba615f085b4fcd86babfb8a5852f63bf25f5bf1cb28f1f396cfde0d39cbee34f3cdeecd66be25bf9abbcd66bf7efb2cfa20fa89780741949e7777995ad568a6d6ea6cbd7a37995ae5c0ea902a49a4c55ec2dd71f95677113cb8b6f1da8207ff419e250c6ad120584c9381800c6b62458eebf171cb740ccc313638cbcd11a6699c6a0407576b4c6289c95c293de6184692b3849ec931583db4ecf5fdfd753f2ff07fc79c6093328beab698553010ac318dc638b708e644a3e25709c3581441a7627c198cc40d1cd3cf6a846994631ad799210b27eea59a3c28fe69e2624c4c46931661f89f3ad32663324e0dcb6ba97828d638a13a2658e7fa788ae9a06990f91ba98c4c1e53d1720463aa69a0da806b1833c6c6e2b113130f66fe57db6a7add5daf19aaa15fa5ba269e4e5331a2eb9af82d369db36c3140c42f6b6a11c59aa681c1692a664fc64c0604b3b982616994cad60631a2fc0b41d3b8fcc1148bc86b169a4473e8910011484d118da199bfcaabbc5e7c6df9a910f72deccf455219ac5c3bef3521df9ce7c3c4f904ebf38ecafa5c08bd177b51dbe16dd4f45aeff9a30368df45b66a542e5d42a7d003a29ee9e379d87a15d8d8044eefa6513e82475664614bcc7205675e07764c43c052044b3e026aaf6f2da88a3805fee363db22923fdf4293e839f4d21df02978c6d767aa7ef6676d05aaa57aa3e83656a0ba2aea5b4b003f0dab3db5416291d59c7e64f9b350e57d99079272e9c6997ecc90b6689f75c826a98e99c5921356939af81d7940b4c892fac57befbd18cf93a4294dacba4600b2c96416d6c52759edfe71e0a7018fe01b9b389238a358cafe474dd392594dd3b498d964b69e6b268adcd26231928daf4e89dec42dac697f249e118bc9a88fc4c9a5d0f74322f97197d017d017112ad74bf586579f7d2d2d2144f1be2401188917e90d213b4603aad5ff62ea3ed78f1be7c740385ebd04cd5bf90e8bf3635aad6ddaff2a6cb58f612e1355b371734c97189004e3ba4c30c5946083f2182144d38061ac124e9986710db0d8c53a213a26542229fee29933bbad7c730de2d88dad4e89eead872d1b8f8bcff7d856de4ddaae6b275d10f3b18af19609ac095d4f19c4100fc414348d101cd3a98e311373b5f83183d2384f26a84e30d74431382606a37209f9e2c64634273586c6d11c3a85ee9591163d01ce8d8ed8c8767a44287f74caf30e7d8a70a7ed6f7cc0cfde58e90fe8ef069ce2ce7e90aee105a92fed60e3f600f25c7e24a7b8620243b4546d843881a2bff8132b0d4d125e2df06d85456ff0aadb704b7038fbc2d505cd62a203ccea78f67cb6a0c16cf723dcb22d0d6b5e65d9eae555fded672f4f6d3ddbfa9ef71fb3cf51aa0106edcaa5ccc76122833979fc066871c3b4c1fe7a604df866e16f7ff89b3ffa919fdf256d6c3154475b08a503e9781132d9740f1bb25fb4f4c991c2c032bcb65a5a5b2ded2fcfcc2c6f8eb51efccf9f93c6d5cff590bf5a967dc3970bff955c62570a0b2bf97aa31eeb3eff39c926f7d4e7fcf3379e12857c2a800d03bdaf6d2fa1cbe83984ca4eb5be02f5d94ad5e1a9c6ba1c9eeb1b8dd94a9fa02b5d75a123b1d613741350ca304eab29b7311c37d11f750c07bb5682c7596b1d9667c4320f111958f91d2307589cc763dd83ddddbda10063cfb27ff77b973e624ea5b0f6ed4b303f0b186696798c41281b773bbe9352d3dea844e3531a4e4d99df13c2717528bcd9939cba3d6cc584e41cec57e4d225cc87184783f4ec5e72cbde8bdf114abd14fc5ffc0ef1b77af6a7ee01ec00e372f36bea3b8a69d5f3f13dacece77dd93677d81f34f417079d9707fd9978476e81dddb873b3aff20b21dd553fb7d97736811adc97cdbe1c8cac059d11b080d85cf925a5f75d6576b323234989e8e5ab47f3608361fa5fbe687c731a1c358943e9f9ce9fe96acc39341f0da2c746f024093e04d785256f2b7cef85288ba31c4a8eaf9985950dfb282342d0fe1978f201e7515f8292d1e274506fef24e770f9e1ac14b4ef066f72bd24d04bbddaf8cbe00e4dcd0696d62934670be03fcef4d890bb9bb391a277cb39753ace2f9c6d08be8c3e8b30835141274141bda1db950dfe5d22ffe0fd4c0e8ff629957570e65e30eec2fcf8c0b2d8411a9d1d0654b4c333a254ae6a76286d040acf28c250c3d21012018d6b46995c74325e8b32e1513a9636046a841a9410d9b32d67e523d1c7e2330169a2167a6dcde3ff06fc60090ffecf730c558a95a5c812e336a326a0acd48e14e8b059edb0633840a8629166a9246352c640f8d5984ea6296241cf3a4696463534237a418aef6b2e86ed966de4c26cdbc78473ce2939b41ebe832ba8e9e47ede1b96570ee28b9a52142e15263303e6ebd524a1df1a068fc9c1b75bcf9f78d9c8bf6fc6820392bb7a5cfd1c76d082ffc84e7e738fb8eff7c783d747a2885ddc3de2dfbf252ff36c98d19dc03f9fe3b7a3f28a6b4b0287d789218e9288666a52d0505285af57ac909b35736c169b8f5483466c9290559548a67d44f2369799eb22ee76eb59a7238ef42d3dbf5bca677e0dbdd7339dfe2de6de5f35e1e727dbea969f4307a0abd6dc0033d228291dfbd4747992caa477874603f27265135dd075bd78ff3eaf018e7317e38e0d68166f008d3568826a2d55f9e3adebd332546c37f37ecde41c808f53b0339681acd230f9d45f7a3abe821312bf91dd78ba223962577b10ff9b009f29286171ca3251e70be855bb451e5c0dd46fe5ddedf911deeef2e0439d8dd2fc296d7fdacaa89a5af6f5976fe5f7addffa2c462b96f5bfe6dddf68b97e7817dfb816fb7d645633cbbc8d29653d0f9e28c946fbab72cdbb3cd7d25f6c84b76e5767bfefe17e0a16f3ff0ed28ffffb8b2ad4b7596bbbcc4a7a1516fb88d6ae31c684896ee037f91fba3773d926fade75ef88cf7e207b80ead6c41d7ffda8bde67df95f75ab9475ef8e3fccf3ec0d37d3132e7d187241a57a8fad73da7006ecd1de2f6e44203744af5110ceecaced670ce41a3ee39c7db469c527d05aa4e356a8efb4600fcf0525bb759b637556499adb75fea07898033479c18f9909f0560f1fb0d6c30f7977b212fbf9c65a6766a7f903ee0cbb6f5cb2e30039fda1f85f9494d5cdc3fa5990cdc5fee05cef4de530ba1f2916695bae7ac65dd7a10217d4e0644ddb1b984d01eac740949952c5f8190c786eafee97662c2541101e644a2fde9d12de45f05adde55cd410a05d9669e65bc45b4d85b0ccb3bba39c455a22dd455d8a4d2261dc5e53d2ff360fe1afac8d131c55125b5716c9ebffcaaafcb83de9abcc4c9c81bfa707ffd0d79756d75e87c808478ce0f35f874306d1d051db050299f4a2693c953e5ca4264fb05ff393f146aadaea7755d7ef80aaf4f69ef07b0587688c62d07fa9120049e78747971a15c69889f6954ca0b8b65f19387bd7b0b05071767ae4e4f4f4f5f9d29feebd0df8fc3d8da67d1c7d15f20e41bc3438b7b2db0b5bc068bfb02dcc9e2eedec9c7ed43ecfc95dbd68f33e5eff30477c6799ff53db03c2beb3b89e9f171cbca188405d6770ecafaeec33646cdefd8d22dc73093ec4d03b8327ddc2d6f271c6b1413ae29cb74cfd24e63d2d20e7884a59de0c0d2ae612eaf37294b9ad21025efb518b7754e7589e8463191b0f65f9076f3bf5a537ca17f3a153db937d5feddbb30bceb318d30950bafe1d0f0ae81a653968ec55294e99a687c9a8c116e08819b5069d447283a97aef9fefad1a8fb43c8fd216e7957028eeccb21d2be962d14b237c5c73575605f7c2a50ee56c1c98a0f65936a85877c1ff4a1f4a9a1b2e851fea4b3d188400e6f34e0b0f08107d74faedc9bc93c76c18a65e4789e5c1f3f79e1d14ce6de95957af3e5c2787d525d615911bbcc389a44970394a19e872a92dd93f2e06eb0a9fcc1068762ce5f6fb7d783a8b05cbbddfd177791b125e4e9d6b5ee6e73b72fc7f75f1e8f3e259f2aea837232c6660c7d0cfd5be95588f005a584964857a05a7bad1a614f1764b325e70cb8819ea84ea8115e3f924f68bd52a5ff2f1552679445baa7909e153a9c043fdcaecc00c5f0fb2c61ea310993a1e994c6188b71dde6cca244d7302ea9b1c930d1891ea39408ad93609d503d20e411638431661b6692525a52d3404cd21325388f53495a4469f7901894c85ba82e260da9db324a2cce539691e28a0948c365394cc5c4628af59a30a99e12a97d5a8c59cc1ae38c776e28ca236072220280997f008899e47dbaa5618bb394a1dba1beace890e2ba9e348829dd814c5684c6756a063f51103fcb098971334519e33a4f5bc698ae2728d389f2248a8af1a411cb186b984b2d59ce77628e8beb2cce789c32534ccf1215c536f58cc9638a6949cda8942843a21e67d492cd671023138b4dd87342a3d67184cb72193d29331506617543fdd51db2baa40630718308ce9121032538ec7e22c8007c2c58a11f0bb200e117070e743f21f5855f1cb8a519a4633e7e31c87fb32e3c1635d580171e1930733d2ea3c96faa38d0c0bee9a0225a91594ca85c842a0c59feabd19ca5a813a01c067dcc32874776e0b0fb1cfc6dbbfb58c415f053df11f08ec0210068c81180e062a6bb0f17a3ce80c38017219c8143ba850031aa3f9e7f17bd43724a87c88d5549a73b1afb62530edf1a0fe6899acb9d0809b55b5bcb7aa7a016c9e8a9353cb74764526db825f84b451e8361e9b297cae4fdcc63d35670c3a671e68c617a9994f7206192b8eef5af07802dd06c538fe1995f9f061ce396adc19facd6de720110d7757e7d7321313f3ea011e7620e5f5de54e6c7c3eb1b00dd864964db4fbef875fd618366d9d9d3bc774dbc44c7beacd6f96f67d8a88efe7fc20fa2442e5e332eedd23c99916a014e410fb604ac38c4b77c3dc44d7e4fdbcaa1a131e538a44db5f316e9c0994ac6f60cd489ba7ac491b34d01b730b5bc5094235c854c7143d13a5f1497be68113212d13d58986e136ca4c09b9a39ec9179c7f24e68580daeb464823300342ae3233c6292b565cda5a9c5e8be929939a94248dd4629e9894dbdc9e8c4d2c981428495ac9a51c31295660ddf589b4f8dad0a6d2d9c2601e5151e51135062ded83a6f95279e08aa13b0e46a70ca15139458747640bb50702e4fb5238faf80a82720f26e6d60743d407edabe5c13bf28a7d4d6511f580a8e16614ab75be178f2eb91d477811ba07bd6d2f9a4ed4e71b999238bb0faa58fa68ac7c7f287d75a01aa511fbd1bb3df0c2d6fd8368f241e8d778353cff54cfd781a216df1060361f356bb6fdd8ad5eb094ac9319d6c990998e73e804f2d039740dbd1eed04990242eec311a05c69683c12605775b51158bb3da05e47060a4b30dd0b0a69b7b3bb3b88b2bbe703eaa21160bbbbbbc887d7f5e1765bcda6dcba76ad1d00ed2a5cddb035548af6b57c5bcdd7f0dfe037d005f43442e5aa5857b5155804c9962726272d01818b5402534e6b92f7db9fc3c48726612a37d6abd500997b04c001fcb7bcc197f2c436d697f8185f5e336c925bd1f5bc9088f23a5fc9d184e12d09d142274beb864df24bdcc853f22b1ff6730908b64db1b8be4b4d26bfb3e2e936c92f73234769cee04b13c4d6ebea0178a96e24687e89878f5fce135bf796f5144f7fd8d798d4faeebb627d7c72b5763d853eacb07d03fe8e10dbb77e34b6aff39ab07dab7d013c83118e3e6e4d759286f0be1a10e0044b74df586cc6b66762b114012d04f7e55c82fb264d605393f7e986067f53338c7ba7fe97106a55bac99e2c46f33dfeea417e2f360742dd43685766e0be366edf113f79a402a0da58291399ac6863e728fce43b6042887178628a009849aa0170ae01edf1a68c59f1b09585764cb9e24dd1b4903645b5b17edfe41ff6b76a5f8bff7f80a37c54968df25ce33007398126d1c2505e60ff4cc48f0648ee5b2fac28fa310a13c4431357cfeeafa1e6ed00b3e74ef842c386a888787f24bed0dc5127fe510fffc8871492a8481746c30ea1e1b21e87db448f0b4f3b12b709d68f3ab31f2d4baf84de683c27ffbdfabcca8be89ce26789f2808791e321d68c5090951dce0db2a4aac1845c82666e259d5ece6defec6ce796d3e995dcf99d9df31f8c4d2416b7b6161313b1b86dc73f68e763f144221ecbdb0b5b5b0be0d98984bd737e7b27198f2777b6cfeffc94eb5b8b0b5b3a4f2f8de796d2b6d8c88d2fa5b9beb5b0b8a5649c60ccbf0ebd093d87de73c4b8af2ba1f6e71cee51537589fbeca22b20eadd90d681c1a18eab350d789cdddd10dfac5fbb56dfb87a75a3b93c63a4f82e264d23a9ef12b2323cbe75367665855a0cb4d732aee1b70230dbf6f432c12d9eba44f0ae9e3466961102b47ffb009ad04219f5de712678eb699f12c733e2b805b6e57f41cb34babfa911cdb42d1d9e951b426e0b709ee26802cda306bae6e314840a32f78913957bb1daa77d57559ff2c915cb8a1508874a595ae6d4f8a9572c30721fc8dd9999e5303d14f2b6c563f8a6a6c9ef03d03acb339eb8c89b596e879ee1bdf5e9e5e569f5e143c6d82f9a3667dd8ec689d88016660405be60f82ff0399445f3e80cbaa2b0bc5cdf651a180465cfcf7a7d885dea5063636d1ab2191bd8ec49a8ac9f07e83fd0280f5e104d203c8c251231056b94885989e7ae88fdfad5442c96589af99c9ed19f921cc0fc8d9ccfdd467dfbb0ad3b7c5ed7bfaa6774f1f5bb562261c512094f3c48f15989875d7d5b4b1cbeb221768a4b6fd2f5a7f48c3ee77f01eadb37757d9e3bfc6bba3eaf67f4af767f220a22fe648ef43e1c401b4d879819019459ca0b627e02e3ec57ff7ce3ca950d3769bb9ef8a8c8d0ccf6958d8d2b5f959b4f74bfa6bec55915cf0bb7a18d2ea287d0330a15abdad8a8286f4194102b48c76252d73aefe7f7b92a7ceb249c03057dbe51a946a353abac52ad6c3436d65cc98053adcc72f877197dda89618b3ba578e6e4f8d633d3542763b98409dacc84a18dc5c7aca406ae3731b19ed5b4a4998ea734ddcef2bc11c771e379d52c89efe90e63c4587e6ad9208c658c99733337e964cdd9d42dd09209dda82f8296cfc4b34c1f33162e4fad27b2b615b762562c6ed9d9c49a3d97615a2a76da4a696bae6dbbe2efed8c1abac30a05e6180661d96cd04f7f53e2e64ea119b4861e446f913c12d11000ccb26e5688d64a9baf625e6a7095a057d950f2114f889553e129fbbba15d754312858aaf0a53a2a8389d0e76949db4e7d5d9a854a1c278c1710a9c5d27a669a671f9756592364d033f91581d7f9fee70ae4f68390e9c3bfa09929f9e9b2d1a1a63597de1a4a69dac28e8639d183fe28ebe884fe88ece411fd72638e88feb59c634a3383b376d109d580cebe4c449ede4c277d898912d14b2c618ebfe27338db161beeb5da64970da04f37d0fd85cd71d9ebfe8ea0ed781575e78c8b95299bf94a32e3781cd5cdff09e9ed230a5a643ab3a9f7fa1c281eb0e772fe5b9a3438c81c95d9abb345fb9e250c7a4146b534f7b1bd7677cdd5561b711e4a01be843e83308a553125ad4276a2bfa4c6eae22b6df0205455c3b07f5b58dc6fa467d45467754b7fa05d40c7384b234cb1c96158b5526eb9c82d350007735e3dba759b6e6ad6e541ba247d7640048a55e5bdff09cc1039ec231750a0547b948fe079cb74c0d330d40c3a081727971426394c52861cad3234e60d018d12c2b8f09ec0179b897b1defb50c0a15ec1b98d24803e720aff815b94700240742616430d28c604a42f4e0b60af0daa69f210211a054c4028270606208c528bebbaae7f2c10055bbd045f16e1142ba205b485ee41f7229456de99da6a400829b1d7c368f4d94addadfbe13ce5a2bfee14fdc5a9e63a5ebd243e3ac9642599941f5b0b0b5b6164f35eabe95debde8ada395af97c330f5b99e999b3d96c367b76663a536d34aa4660cbfcf378decbb77d68d98e69e73a9d7cbb2de4c4e2ed0efc18deaf9096ca8a629e03cb4c6b12c55a59351bde79a0d5860b3fe6fc53dce1dd3fe7fc9d1b3f01f1d37f0c90f961f7cf3ef4ee0f7d8b67f5cfe97af7ffd4b3fc4519f10ad91ffddfbffad2af46733f26649cf57984e8313ef46a9fb7bdd4e7896f04804b47e2eb1fe124bf24f1e6a22eeea8ebfb486fb7e7e50f23e517eff701f41c4220556339f58f0c14a85403efb05fa9d24085b301785e43758b451f83f06c48e8ecaf10f00868899cc16d7db866006642231c333edc0ecefc9ca8f25e55bcf4aa781f15f1c22ad254f26b98112d610144ebaada8027b9319e000dd2f3ce705c00efbed3cb1fe6c543061edc97e393433be869b15ac26c450a1a1b6b6ecd159fa7a5b89180927294f385a35b7075dd3ba6fddca001e163d4201bbaceb37cee01eee89c3f894dfa24d5896e8a013fdc6c3a83723c31dc64b16c2c23da0c30261b62bee7e507b898809f24f8d731237aca1c6eaf4c790c2af93385e1b6d2b4eedb45f79131638a472085b27d39926b528fed9f9e6bae98b53721556ac83942fdd5237f7dfa6c4e4ca9b77239efd9c83f09541802177add7d6876f73bf97c2e9fdbcf37f3cd9c8c8f39083965c7d1142a4a7690e563701e71ca4b9524825214faecb0bb2e040eb8293e0f9bcd66f36077b7dd3cd897ffa09d8875db42fc83762cd13d6ce69bdd43511a8579d6ecf7af4ca053c7cf0de963d97e8f9a14ae1ec5027ce484002d82ff4ee0b296a14bfb4a61d5e49cff7bd041f7a1c7a58cb3096b5937cb6c70b3a28c8be003a38a8d6a65e33c544b8ebf04a614997be8d6f0974fb7518d04a32c8203cf62422b54d734d0ee7b046b9a4e17988157d7b0c1fcc30fdf9831f579dd34f5171339cbcae8469c506a59fa74eca1a5df8fe739e39cf17c7ce9f332b948a74fbd480c4208a3972e312a8fbcebb337c4fd705137092116d75396e9c6d3c5849963cf9e7907633469593663ec7a5f3e87a8f74b03352fc05f51cdcbc74e8653e0c19a681aa2630df0bd8f68a0611eb48dc9caaa6d1e7ae7116d5388f7b78d4ac6196010f05e638bc532b2c5de7a3ada620f8ec0b6f782be1e70249d3a9e1fe9f8be3e9a11891ae4b162241f334c3c38820ba97b8b90c78a51d64f3fc5205acecb7728e76b62021f59ee2b2bbe6d6865d9b729adacf876b0e515dff275f2c83a7c6d05f7df2436541b2c2ffb755be99b67e6259a968f453058ce306e32b43df56713b6ceef58d6ff465936a92758663c8cc32278fc75a9aab3bdb3b3add0589667a0b3b3ed54c77e48137a32cb68663cc03fa1261e7f9d19dbd9dedeb915581222b1df96ec1d57d153e897fab13ff15ad63d0761b4ac478fb34352ffc66ccf8654e662dd2dc01020a83fc94622164bdbf94a259faf54e2b3db0530f5d92b55692bd5b18cfcf890ffc6de29030012045f5341c8f5aba2c33f77059e7580e874ba2476e7bb9289b7be72f2be4c461c181f7fecd4a9f3f94a7ea25c9ec857e09a6525c68db8e43cfe25d10d3fe4a7c8bc338812baf6b83877b52ec6d4d5e72e3940185e79e796d8bdef832f88736a2e1707b64f9d7a743c8768683316ebeeac44581ab5de3ac57a318a96e41db13dbceeeefaa1974ff9a19b4f0631975e3439c33b3808091406bf153641a047a8b5f8187692fd085c9a95ebde8475f137449090cbb7069eeb486c9451b4174ebd98badb07b75a6dc8f9feb5439917b086100444e015e915941a4e2a98afebeb1be973d090d165f530402a60c80fb189f7ed7f4a08cc54b6598c3193521dcb9f9665dadbeb95acd3b1eceebf2326bb8dfec1b4cca9d738e9c910001df434fa20425449979e531a0ec20af4db411f4c696456d0a8202c8eef5065f81dc231a670a3038cf3318bc618b3647a0f56115198c88828cc3419f05416f590193929c31ce3dc92814c7e94914168106ef53b43cd3687754c7432674fc4621999d36b506a5116d7557412a12a5a892ba25c6e6674d3663c886c6234ce599ce97149e4641205778239863f3caaf9a37e72821c3487ee9198264271adfa7654b1e64b7db61cb500ac6f547d58f8911ed574ffb5deee6eae97ee18c0288ac126a6fa763fd840f10636582bbca4b9bbebf538c1c2e66af6fc0f01b975f1a39874f7a37e9ea06e4b123bab20617f14d8bd530c59fdaa2b10be70d55da6a151ed9354464832f0184bc7fce0f5c7daa0f00fd7f5380610bf7e43d5e9f133c544cc4bc48ca4672693a6973462092f96f8462ccda423eeb1f6bc28afc1358ad56b79f5863cbe79c3487a420af71296bc453ea68749f0618928fd5e84ca3c488dac8f02c82dd61bc14ab8a0927422c60bb1fcac6ef859f15be073d787f9d1f27f716a6dc33b078de8ca5fe48f2bd1fbc600c06eb7d9f6c375ea98e3783e36be343dbd24febeaad03214b7d53dcb2bdbdb2b8413d040f47a8e010033f200e6c4b0b076e57dfc31d10e375e55a6114c356e88769d6fcbe375423aeab14b33841100cc09d6b1cc0f262bf7c0f6cacab60cb7569ccf0f601cd389ae3dd0d7272ebfc63ed1f07b7cafdb9ff5a91236011a24692ddcb13b4c7d939b586b62ada831c2cc0735cde0dff954dce10bc7f686a9ffcb6484690f5e254c2b8a7b9e7f50de1fede38be8bac2a73d05b5089743207547381d0aaa06fcb5d41dfe0c003c62d0588290e2a7457ffc749190448cfa2ee5eca7ee6e3cfc543e8724624c27c544cc4a14fd875e13f7eac4bdf7ce632382cd21dee3afa1bff95adf6438b709c525709a24c04f79ab9c8515a8f2c091b20255dfe1b409e7a05115c736d6a6c5765de94253500037f4d014a02fc8b166ba714f8d89631ac6fd9d3ce59ce68168698c93d8206344279cba94111d67b0419284a4350c1394313a115e86d344278cba94138e33d8c4298c331a7e29373696137f1fd513c43bb639dd2f72226ed7491a1b3889715a23304138271380b50cc6296ce20ce1a230445c3646fccbb0a6caacc9cb92c42019cc27d4efe6fa31a8d3c8431710a281a4e64b6e42182aaf65dd9abf36f77a6ea3d6f0bbac1b4cbf3e814d1f6daec441db633d9c18850e2a3143db0ac6cec7abf3d11a762d1b9addc35ba14e1540c31495aeb51b5d3fdab73bd0860e3a2964a3b22cdf29a8a928c76aad740a6aaa8c8d5ae314d43c256bd43c155653e51eb4015a8063ba1ec3d012135f74af7de5f31d4cf121d7757e8829d69876c80d831f6aecb7bea6b885fcdc9ba644efae546b55ee16c0f76e9e852aef055cd6d2a5e85ec3133a7d2318f462302c4089bb81e2d359279c2c262f8a76b2ec8be7408beb62227fd79545c016376d4df3c4c63b0ccea5e690074db3ce2f4ab333d6661ebe480c2a0df54f5dfc6d6ed826261a2cdc43996d128e9b948feb9998b86da25c3819e2a3aafed0418fa0a7d15bd18ba256ae93614e8d3bfd12d859a87a2b701656a5e12898c3cec1694d2e59d171572b807b1a828ad168ac71b95ae44e319a175682435d87b56c32e9de7493c9ec9af451104d97a2b29924b978a1200133a60af11ccdfbe80421c143337f1be5613d1e301dece7e298695fe63d141cfe25cc705cd3b0c545b5a756e359c2f09478ce1466241b971129db0190cc7b9acd5cc8a98094ff5bc9f9e3680ecd2b3d8796dca2cc97aaf58453a796cab028d64abae478754f7c442b0c9df5f5ee4d0d8c13eb4ee17d8f3ffebe42f747016e52bbfd4abb5df5f73c0f34fd44c18156b650c8763b4ea119304780d7e9743ab7825db9e67c578eeb05d1331b35d9cbea255f959d04a73629232094d45df5d683015d0e688a6bc1707703e1433ca1b605f57f2ee483ecd8c9c9c643a0c562136fba9601d0b4c525587da851f0d2ce49d0346dd979e8172663310dfe548c1b0dde359679a821050c9997b4e0d69e38f716c04038bee789e9c643e399b73f8d255beaa5b7ddf3a4975d4c4bc940c806a84fb79cf2993a7c442b3712a8c283986627932d07225418b3e24f606a57dd2bb77f9c9b294c2467d3db3b3bdbe9d9fbcc58cc9c5b5b0350fb4975b6e41feeb89393ae3b3909c5dc7d27e6efcb99facef6f91dfd3f8f7b13139ecb4e57aaa77fb6737e7b473773f7cd9fb83461eaebae3835ce4e572ba733ee99d9d269c7d99a2d9df66377c37a29069211b56afc9c35f9c26ba9807ed7852643efe235bf09fe5a5bffd1d7dcea95be4203cadfbe25f99ef614327035f2bfdaad0feba3deca11ba6b9886148013ad66bd21e5d5cf4a540f2f05eaed88cca515a886a96cefc614e3b86ea40c23a9731dac24630c632c3125588ca5262d23a65dd2286149d3ccc61393762c178f654d334919d334e094e8ec5969432000d4a2944a7d94c6b93e669969ddb03933098867609e32ad5c2251482526e28971d34a71c6e50895869e7da108604da3f27f0deb8c260d1e53b9911a00d7e958cc1cd3ad31ae5b32110a9b9ca52c2317e7366709460cb9748150b6c5022e41b1b82655644e684c17d3bacde319dd4fa4c2a650dfadbccd6d8ea9d6d311959dee327a56452e0d41582c82786951d745e8c15273ef88c462f778e7c6f97794421a14db9a997cb436ecda12170cb93f6a4741c141e7f4c9f5f089965d9a1ff66f89761ff66dbd124d7be8254344fd0497d135f4304230ba11948031a21144b7ee096f7ec4d6149c83f431ae5ff15e865cbe0bb5472767c2da9976e91d4f48efde08e67551c968a5952378be1432c3dbd6fac9d3dd9674e721400d7fbdad20049920006543cc7cee6ca59ac9ba720c551a1b59b7222bd78085b1f4f9f3d7ae9e8a9dda224666d69c4b94cbe575cb4ca49772490d2a73731bd029d6d32bcf6d5ef88599d3572f4fae56b1193f3b694c172e4c4e52c6129bdedaeb6666dc9097bc8352681a6d07f9fe752f346b16ab455fda99062fe3cfd7c779559acbd333cb7965db84e699eebfb7ad1635f1d205f3556b9879d73b9c5e5e9e0e60aaf34d213e2fd9f98b47383d82d8dd3ca22881d208958b69cff5dc6aa9ca1b6ec3adf252c3d350b7f54acecbe7abb9f5279ab97cf3e647eedf9f40905f6f35bd4f56f3f97cf3e020caf992413308d10dd5771482a2ea4f6eaa00ae8a4be12940671617cf241295f7349befa9241262aff67899c6e20b8542b535b7b4f8ece9d3db8d46a3b17dfaf4b38b4b73f08f6717ada513f397676626e1fdd2d6a5fa7316552572e50e42654761ad883fd98e2ad2850e5abf8a83074a8307528307e0d0db5bdff36c737f7ddfb4bbeb5e0f7566cf0b83080fc2d0c1c847a7dd6ab55a6dd3deddb5cd4e8f9c6ed4164469ea7af97a1ca5d1345a44ab088917d3e0c56a231256c823db51287e283ac5bab7db6aede6bb9dfc816f0cffd3c018fe43dfdcdd7d115addce81d76e7bfbfb7b81ce74ad0fafc5b2eceea1e7c9bc95c0275c426be80cba801e414fa0b7a0e7d02f8939f7687c06572c9f42b3cf305e52cba85700a7ba96754be740420a94ce41838be36ae91457b962bd5c81aa18c05e024ae2895e02b8bf247a6a8c1fe962fee81b593679f2f2d80b1a7c5e88939f07ade99c307ecd38e1ac27b3ec8d63974fee11fc8cd01c9ec124e95ffd07c125b62b2f59f5cf133c6a96f2a7deeab94c6c7bf95a22178fe712f17c2c968fdfbcfff4e9fb79e65c75793bf61d75489d6e56ce8b8bdbeafcf9caf276ec73e15d895c1c019af0c7d31745bf76b31969c208660ace66a5e9a26e43422c4de78133dfb7bb22a485696854078fc870c6ecb456afcac08fe9409de48d8d35693771c49ae616c05664faa103f9247077f0889b659c554e6a90dfe45ccff2ace821ae0cced8bac7c169d332357dce7028634679dab4b096365f77fe9e87cdb4862d73aa6452ca3266d9d04ccb4ce3ecf616e7baa3bb3260d7e5599df3cdedac7a8c3167388c527376cab4349c361fbeb0fd3a338d35cb9c9e3318a38e39ababc738f73c7ff9b4ee705d77e645275fc8ea3a77f43397cb0faa124c6518330c873a3a1eb34c53cbce951d6c5ae618d633d4310cc69c69f168d37a78eecaa60c5a71e745efaf3a32e0e4cc95b9874d0be33173da7f52868b2759d829cf39d832cdb466f84f4a4f9963185be64373a88f2fc856f3146f88ffdcaaf80ff2ebfbefd97e7aa1d55a787afb3dfbb177bfbbf299e427e3afbc12ff64f23315df5fd49598720df41842746da35eca64d303224923f02aaad546bc5d09d3db08d613773419ac924001398556e1328bf399a59879cd9ab4ed094b4d065d1f12e5cc72c1710a33d70218b877fae07142c8a00691d9baf04f35bc3c939c349b66cc329e317b5388d9597b3029c330c9d782a49533eff49fd51683ab0fb33c898a680d5d448fa167d14b121f263414f80624e7b51f80bf826720dbfa7ba24a77fc80bcfc4a9ac18123b7a0396e259366ce4c26cdf69d36e18e57443603ee42c577b226335503038c505ebc615b72c4deac7ac6afbe5d0ca6b71b8dd25cc378f39678632a7e4181289a362667df6234e64a0d43fa538b4b4bc54d62503349f12e3642525b6a904d712ec0f250eff9f5d2de2b2671572c0932e05ab47518b0b2de38079ba09098abfda51795092e909a98bc910961f62c707891eb3a7f8a60ddd131c18418f4c3d4209c1383defbc658de2e358c2f8ad7f045a351b227624fdd1b9c1597614208cf72829ffabe359138e634d79754fad9d2d13f1679079725eeceddb67dc9edb13acbabcf436fe07a7f4b6fcccd358cfbcf2a775b88f128358aadfb75f94efcb3c11bf3f58d7397f77bef8910898619920fe3cdf09cad1e286e97399106d9ec7f7fcffb3828772aeb116fcc71236fec6efa013ca8dedc9bb75404027e9ba8d6db54a5654714eff2c97b8889751d9bf46509e70cea6d91276597c0846775715bff5bba205ee5a63f35edca494d3c5dfeca667149d7fb6e7c39b8f19e37ca0e623d15fc26f9a0d05fc30e121d8339697d0ed3a28456d2ffdad5c47d06063a0778b0b5b0b025fe40bd4451c6b3df1123933ff3d4597f7ced62f2c5f9cdad85c5adcd05aafbc3ce54809dea7562b28b7d7e7425c771b122a56d9886f35075fdef7d210c7aed76a7b2b353a9ecec40a7bd2e0eadb7772ad5279ea85682fc0265035691938be824ba8a5059622f3422b11c9be0fa1193c57a89d64b4ec3fff368bde8c071aeb87f3c87713e69aa58c66fbcb3d56a014a75ff735bfe9371e5b323bc709d256c90fbddee9e9c2ff7cce42f4c3573cde62b9276a2d56c1e349bf08ac931c3cd6b9869450d9bfcf92666989b7d588f0934891625ffd7330835b85a65fd99c8b704f956357f48fb0965aeaf7aba3e2a791442c33d268cf29f4f8e553299cad8a4351e8f8f5bf7134ac9fda2c77e4a1d084e7f2d3c71ff2ff91950334708c0a5cb9c737e991242efb7c6e3b1716b6aac92712aa96f514aa93a79bf351e134f4f559c4c656cea03016dd5fe5161980aeffaeb70089f421c39a884505a8a94bcca5d67b65292c3797da3515463d8865956aa37d6fe908ff13ffcfef79d1f00c077751d34f8ae06bafe5d00f801547709d97dfffbc73ef8efe17992307e8039c61cffc04890e7e1df7f10291ebbaffb7c7a4574129d95f964bc2a7f5979ba27c1f55ddb4ef8abe5be1295c38c32b1cb07fc510f3ef87d51c6d9ece4f20ce846393bbdac8af740f74f7a857ed9d7a02ef4e220fe74f9fdbb84a42572a5c6706e2cbb3cfd8a2afae2a3911afd75db52e1fe96dd8cc61a11bf6e9f42099447275043c5b22b92615941b757236fa04a03955813a54fbf59d5e41555febff168b7d1abc06a2480e3afc9329f92c5ff0dbfc80f9d8c14f954b49c5a68e328a1f3088981cdc3f09a4da84ac03727c89c9033f6b1ae76bef6ad4b4dcbbe695bcd64921b5a51d93a1ec271fee57f3b626443734ddbb3ad5cceb2e7522c655ef9aa28db577f8f1bcd23c7b31196791a2da34d9929f08b701f3c06ef5016e9a00a677c29baaff47e4a9e7208cb70b4b54d3823173a376208cb30eec984d1c0a0e345ac3af2aaa8c6ae40f8ab72d5f497b95aa9cf631d7aa9e52f9f829a285a7d75b6164840abd95a7db5522b49bdb0e4ae666a6cb6562df1129b0d2f590fcc490a1b6275ad5e5acdd4389bad0be5717dcd5bcdd43c3565057d2853a9395ee31c488df0ff61ed5860a2bab2e7defbde9b1f33c0142c9d521c4784d90166f849711c581829e537038222a57e1860f839cc8cc38028753b8b2c759552d6520b53cb568b5629a5ac256ed718d2348de912bb21ad698c21cdc698a6216463cc9634c6e0661e6ff439e5a3762739bcf3de3bf7dc73ee3df770de7be7de9b8e92546149e9683da38a43329f9c8949fe47510d4af289c8ad92f3e223c32a96ff564b9596b41841874f524c06dbdb144334f98a875d5d711c612c62a71489503cfb19cff7b02ef6fd4118ef92aea5294c5388a108c3109a2639fab232bd0f74468419422321a63042a114252334165072964e84054428271446024408122024c458c84ebd454222623f1a5114a6d915968584605a8808426284d6c83684876d080e66f7cc4012060bfc4b422311263256d26084088db151bb839d0585b19926626e3d69222134320529643e5b5d1739ec37d2601f7782d8bf6cf20c422108313e3d198436af9550344391709f8a2a9a5a47d14717d5d4972d18758c84a6284c1139262874ad8f46490b30e553564888902698204c10bd987e879140c8be40a71046bed623182321ab821821a9542ac5d827848861b3b549149b5d835130bb54753045448260a1ce5882b1c4279e04e34314457cac4588a26902bcf79d6a488566ffd79d473dc2b3514b0caa67795f76b9d8978d1a654890c8700b88ab98f52a6eb42c8e1cc18379d861ec9e237fc7186570ce23f205b142c688e98726b5b5cc9fac74a680108988129002c26517b113cf1025a013b2b313b4d98b2b1e12847c366462b7e0a0391ff3825882d15e7fefa9b834a55df94448098308c9c7042fce83e3f2a0507602cd31a7d844288a213c9f19c3e665722fb71ef19bbf769b8fec13ca5670ccef29a5411162f943554f0ec4190c711a83019918a980910a38e1a328b120f6817ff4f8a2421f192ff6db087a767feea5528a1e8d491fb823ff83706c78cac6f55e83e6bc7f36c683e7417601c0f35995ec52306c225951bdd7eb8d332cb79a7c6516b7a6d937e2e0ab83838bfbda03f7dfe6c54dc81f3f337575fbbe3935b327d8f03348304b70fd9fe1230f8ff707d94c530021608e03024083f7bd8b9b7edebf8f118ffb22c177987fb658a909b3d13a7b040ebcdc35e0dde3d3d461809400e0dfabe3787803f8f2713f201e9ec23ba6707c02e9f950f718344f029e80fa15cbd0a5f0da847f5db14c99a255ea5504f04601edb21c44adc233e531e87c50f87f6cc340a01fa30f9f44a695fae571816f9b4bd9e44a6deae1b5ab5f7e058f97ffbc2e604c9878baa604d4ed3f6e0ee0bd1ad4f16cee49caf1c1c3e3b3545b7b783afb209abb17689f81e7bfb58f80d7368110a8af22c03f797863d9bb447f04cab89cee4bf57f4ac03d11cf0f7978f8d3f8a5a5e408bcb65c3faf66c7f432fcf9be866f93be6b9f05f8e44039d6ad50df4af618d886abd9a769953ef1e32faed06ecf3f61bd8a15fc390bec4f0c6110050ba80275e1301c8f73f06d924c9ac83099a1d65076ea0a354fabe94aba873e4bdf61144c0e6363fa9969814ad02438278c14e608770abb84374599a211d19c38429c25768a2724919276c9e52055d091a0ff48b749fba49332976c21382ff862485ec85ce80df96ef9ed67dccfcc87cbc3dbc36fafd13f3b1c1113311af1c373dae7aa9ff32ad40a97e2ebe70dcf7747e2c8cc4867e4d917ae4595471d8dfa62ad616ddbda7bca5ce559e5d4baf475bdeb6ea9d2553debc3d67fbefe567475f4d406c386c998c9587dec70ec0575b4ba53bdf0bbe31a8da644d3a5998c63e28ec67d1f1f1fdf9de0d5aab479da1eed455d94eea0ee7a6251a237f15a9230a93d6921d99c7c31652cb534b52b757e63e9c6e9b4f4347b7a747a43ba77937c53d3a6ab7a857ea77e7ab371f38421d5d069b8951193d196319ef14b6665e64fbf5766c5640d657d9b5d90dd997d357b267bd6a83656197b8d135b42b6a46de9da3293539b33f792fba57bb93b73afbc9cf8f2405e669e2dcf9bf775de2ff9dd05ea024fc154a1b0b0a0f074e1f785778b2a8b7e328598cca621d30fe610b3d9ec310f99af1453c569c545c5ddc553c5774ac24a6e6fd56caddc3ab2f5c752796975e978e94299b96c7a5bc9b6b3dbe5dbabb67fb9fd5eb9b97c7a47e48eda1d972ba65f297de556657fe5d4ab21af66befaedcedc9dde5dea5dbdbbd7ec1eda7d738f7c4fe59e9eaaf8aabeaabb961ecb57967bd5b5d55f54dfad51d756d65eb5665a8fd6a5d68dd79beb9df5630d210ded0d938d118d158d979ad6ec95ed1dd97bd756641bb2dd694e6cb6378f36cfdab3ec27ec730ea3c3e99877aa9dbdce3bfb8af6f5eefbc195eeaa73fdc135d5626e997653ee12b7d77db335b9b5b7f5c7b6e4b69eb6e9fd61fb2bf60fedbfd91eddded43e7620efc0a58369079d07673aa23bf41d151d7d1d5f76ccbe267fcdf8dad021fda19143f75ecf7bfdb227d1f3af3f0e77329d559d13878d873d87e7ba6abb6efc69b4bba4fbc41bca3706def8ea88edc87fff7ce198fcd8b6639e633fbd99f6e6855e45eff05be56f5de893f5b5f7ddf94bfb71cdf199b723df76bdfd757f74ff95fed977cadf993d117162e45ddb40cc40f7c0a541c5e09857efedf24ebda77cefe4c9ac93fd2717de37bf3f3f5430d436747a68eeafa73f08f9e0e029c5a9ce530ba7a73f4cfcd0f9e1f5e1a6e1cb67a2cff49d993d9bf391eaa3f173aa73d5e72e9dfbf7f988f347cf5f1b39f2b1f3e3de516a746cf4974f9c9f5c1f738e7d3e76e3d3dc4faf8fcbc73de3d7fea6bd70e333fb671727988910362efe0ed940ea8fb37ff50b83792e564610ca85c63e4a01dac7e104429184c3290845dd1c4e830466399c815094c9e12208878f395c0c0af40f0e974018a470781084810308204a04085410cae11864a89dc309a850248753a042ef72380d6be0670e6740858a395c041af882c3c5908abee37009a8e1650e0f02351c76ba131a6b1c76478ba5d5d5da92909c084e70430234420d38c00e0e68010bb4820b5aa105122019121bdc6ea75ea7735a6c16bbbbd1a5ad7134eba001dce00627e841073a7082056c60013bb8a1115ca065b93583eeb7942de10a29b7596b1aec0e9ba3bed1da022501e44af6eb690d34b0c2dbc001f5d008566829b7ba5a1a1d76659a3615cac10a2e688146564725a48116529fa2299ea248a9b5bed56671412958a11e5a59d95d4fc127d761772bebad76abcbe2b6d62aab0f28f36b1c2687c3ae855cb68c1b94500f56b0b3ba5ac00d56a8052554c30150423ecbd9040e96560bfedca8e57fff0b0000ffff9e6ef1cc58790100", + "9f1c11c8e2dd8df8a11f499718eb186a": "1f8b08000000000000ffcc7de9afeb3876e7f7fe2b943c3ce0dd8ae492bc5f1b29f4a407990990ca00bd7c6ad4075aa26dd593258d24dfe5b9fdbf0f484a32977328ea5e1b13bca4da573c0b97b3fc0e2d93933aaecebb1dad82d78a9425ad2e6551a74d5ae49b8a66a4495fe8b678a1d53e2b5e37c7344968be3d91ea90e69b45f9e685d72fbd801d89bf5ff659419a4d46f78dd4b22faa5752256d63951e8ecdf5a678776e9a22bfbca64973dc4493c5d7ed9132924d14865fb7599ad3a07b300dcbb76d499224cd0f9b70dbd0b72620597ac83731cd1b5a6d774595d06a13956f5e5d6469e27d592c16db7d9137c1ab90b10e43f1779dfea01b2e302eb2a2da7cd9eff7dbf85cd545b5298b9489933a19177943f3e612bcd2ddf7b409ce35ad829a66346e367991d36dd7d04d5650c7559165aca34d718e8f9de88eee5091dd5619979880e7e5d76e82438f4d4692d66546de3769cea7629715f1f7ede022995d9f2415391cd2fc70017ab24bf383c4d29043cdd7f35015e73cb9dc3e06ed64b169ed3b417675919d1bba65ebbe09b77c853761373c363ac91a3ab620cd9334264d5101f2e3386e27445801131cf08f92d0ed0f2683be6d42b32f92c2f85c55346f7ac5803ab6f642ddb47ceb54cc980aae79117eed754580aedbccbda4f4b52caae6e64675439a34566c1a5fab3a4b13d907fb9995e642f10e31e1dd523615c95bced96c76aa3d4a6a1a14e7668bb668ab7e91a7d7b4326199c1ae689ae2b489d8c22afc40cfcdc90e15178cb8ed1fd38606754962bac90b168a6e6eee710ad4331b72d81cd98c5e6e2b64ea9ccfe71a0fd937b4bab4ceb1f9e77f06ccb91d66b090eda09d026191ac45c49ca0294a1e12dbb8c306d9b608d6be892f454998497614c2614012a9d769434fc0047701629fd1b7ae77556b22c6c4c9c18e87cffa4892e295474cf6ffbcdf665c55974beb93579724bf80718a0b617172cfbb17d03c914cf93a792559c6436646de4db7ac0e3bf22df4d9bfc9fae9b640fbf48d265b36e1a11e72da250b1577e5230fe80bcd9b5a8dd6925b288ff64575f2268bd64dd25cf7a151c49f23f207755d272f699dee327a294a12a7cdfb26ba4e4468f1fb2660c42db5ad57084927be5718f67d08ce39c9d31369686276076a0caf93a43833ce3a2619050cbc5bcae9d6988a0de7f9367dda028fc0c8a36af3d2d341ee491dd39c06dc2a9965f3dc49d29c5617c5cb7e3fd74dba7fef526be72566bc44c2b6abf90d9a1c6a4168036c4e96917b2f69420bf794d4ad561099427960b9cda92953466aab30dcdea2779f0f163d54e2ea7a87bfadb68c6c9294e6cd37169148e5b358e13545293e084e7f5f15a76fc73ae391e6abcf84fa93e9e2e9c96f0ae3f972f1f4f404a9121a6e1a01813e244c96f561193a4037e2f7d04a8808ae406d6529e666c6ee31ea4ce40355fc2e3b43cbcb42f62d9bf24f2270b789f4966e652b626227872a4d44b6494f075f7f266c14b1c862f73b8d9b609f369b984d952ef1d2438d7f4a4f0cbc91bc51ea8ef036c36d94335dfdfa873ffcfcd33f7979519d4896fea093b8aebd97f5249c44de3fbc5fffe3afde7fa631cd6beafdc33ba4cdf1bc9bc4c5e9e79cc64546ea9f55be9f7e3e36a74c5d9049b4b8c50d9eb9d31f3420098b45229b9e487a4bc33cff5e8fd1452a76e8a95bb6c972454f5e783d56975df1c69ad9f8d33c6d52926dd1615fcb8a0a817b724ab3f7cda9c80b8edafcfe936c28f47425665a6fd55cc96e57fdbd499b8cfe766981506b023c47f34126342e2ac267fa9c27b46253a24e0344e12545d33088304070ddf9755315f9e1225bfbaec8125a5de322a1fef75de2d7e4548e1c757d2259264dfd3afc7aadcf3bbf3e97d2d3d5e2ab6667660679a15593c6246bfdb99bbbfabcbb74fe32992e98ca7379e1fe35617fb1bcd6ce69ddbc67944fe95594da7e9a97e7c62fca862d4be98b32d66793452a4a94a1a6f9915669a378bf5e9533cbecc281a2e262d84fdb2a345ef8f2dc1237efe2df9bf792feaba0fbcd177f55b4a64df7477dde9dd2e637bfdd36e86c8194252515c963ba112daaa4cd2638153f827d119feb20cd735a29b2d1e6561bd02e049b0de6b4df4a19ad4f37d62acd0f6a87c0b6ae375a63db15f5e9a538376c9938b417e6eefd1b27fc2b7d6baefb9466494d9b3ef84d660b7af2262bfedf2537a98c1e28abfe6f11a277d36ed7a4b38f2eec348445c713790ba4607cdbb151eb3c16f2ae65551c2a5ad717c4d27bb3ec8d899c9ba29dc9f848e3efbbe2adb71492a4c56f488ff565c8cfa71dadd8dab636c4d72fa84b56e10a4345088b73a3127665b3d4b59a922a3efe0619281b129fff6dbb4641b1dfd7b4d904d3f24d65bfe9140fa4680649e62e74e3d9a70c909759419260c85fb88b77eb794d6843d2acd6d2497d3e9d48f5de3fcdd2bae129f4fa77013d7ef31b7a2a33d2d09e8677e98f9ddaeff47d5f9113ad3d367bff436c2f855f2f26b2af8a8634f45b98d0838ceee5c7d7a6c019678b6798b56db85efff8dfa933938cbed06c9317cdb74d46ea26888f69963c5db41d97c9a2a2a7ebe448ab2210a0a707c06d256ca2aeae36e605f3751217d9f9a401852dafce77a44eeb4d28fe3854c52b8381ec737dacd2fc3baba5bb60b112fd10b2ea495a07a7629766f497f6117b9293aa2a5e2f4c82b0023bf9fecc526647ac6c1358f99a634569f07fcfa46a68551b12568b4101af45d01cd32a319997cbc972b95c0e4938926c6ff02e067b5ee45428367867b3c96c369bb90868076e88980e8e9b71efd37d7334798727fdb510bce69ccd1d570c615f0eb2ef8b738571af87279d875add6ae45dbd618be964dc0c47e677349a5608b71d99ddc16e04e7cd7c647657d3b9c9e82c4896e2603d3701c2881476e765b8d991cc3f6c43ca32021286cda895205b932c60d89242c3fa423795a1a2688829328d9cafb0eb1247eab0dc78a766241656bd72d43a55b4ba32cf3e12c684c2d948fb9d6341d7755ee790db0d322fcc78198d9ad885ea288ecccb8fa427a17039323aad4c55e30c76a52a74645e63c9db7562d750101f647efe00e068153e8fcc3a911970d6e34c3652238f2b776486a0e771461ba941c8953b02c2d03020ec746a218831fef144939478755c519a7b244fbc6fb75a75b55c976f4f1703c1b62a4c20dba1568300e8ab8954312ec91054748a31e878a343a418fd42ed550f23307a1d5168c813639b2e0c0e9e6651fad018b748cb18c31c9a5d3bcb526591723fc6b1d6260b428f1d2fe2ce20628478a085945022c4a2afa5860c211670390d340871ea2baa214090059e3e636d11f087203d70f2402e60851190c7111d660521203a84042a84116a545adc95a316d84d807e8a461d3d73c9a80c920e32cc5cddba455f0ef6321f0830e07ccc2d26ac322cd038a1671b194d810608312c5dc3698b9a1cbc75858ab418c80a140c31ac07120638216b4b6052199e1d135887761ca264843aa00155145403fa0cc411a12e69401205bd400a408e0877cb10b49308764946dca195b24af3c657304b9af798e519c42cbe8962f8d67c83a3185f47353a8313aaf171bc83c843f18e0fa320440c86827c1d1521fc182af241a8840819804abaac2ed722d23004a58b11d9171382c12a7d7adb2c8988b1802d73c9eda27010e623d80c11e482cdfc41f0d60a1f03de20a186818e4076803cd95447003e409261b4e3c120225533df11501111a818f21818892c886a3ee330266a38b8d041080ac804ccdc06507d05ad227e01a255407708695411acafc059cc0f2db919501b81038520aeafe05d2c1fd9f02ea07e0aa98731b0af0062c728dd026240f3ccc153e6be8298ed790646cc80e6b9c5f73514ed2b901acb0636480de85f803e08c26c5fc1dc8ec9bac5dc80e6a543105df90a28c774da4039a079056a0681baafa0763bc081513ba07f6d49441a92f71558ef86d33a580f687e76c8a9911290223496d9813f145dc0a8865403be5a1b207db0d706501fc01087140cbe5a3e38a2eebe7c80d4c3214eae29e01dd0289ccee02d50fe1b26cb0ea8d6eeb6010a33e1fb9f303dbafd0993a3bb9f30f9d0e627cc85ee7d22e4e8d6274c6fdbf9442609dff884199cf63d05eba86d4f936568d7d3e418daf434391cf73c4dc6a12d4f806368c7d36471d8f004a66d70bfd3e431b63be1b587773b4d71da66276248b6bd4ea08be05627125eac3b9da66c64a3d3cd857b08376423737b24417639519bd53739918860dde3044c0edee2740b993db21af2cc1526d0babf098885b737adf900d9dd44e38fbeb9e9949c6e806728124698b30dec6c021e826c6cc2e207f6354df1d8b6a65b86971088e97e2800e9b733a3703a87014842ebef4d515a208841e1064230361c86601c2810c118502882310c81118c0f852328030a48300e1b2441270c0725188b132ce9984701138869089a403c43e004e271842710eb1040017986200ac4e40052c0291c842910970154307b80a10a2452032ba881d9e00ad85510b0a0c1c80a5920f908687175f50eb638d8ce7c28ee20d0c562d13a7841a38715be80e6080318d750db4118070f5ee142ad3006140d0399818c8240194bc4d2c18c6392ebe18c43048d70a71c8034a01721a0065331006b201518b071c50d376803baa903b899464b18dcbca609153c167c0311b9411c0b278e722c4c28d0b1f0a058c7c23304772cac28e2b1f1a0a0c7c264c33db629c4a18f85cb09fd48fca30010c237848110b6211884b0392221847b080c616c437808e1738044d8a40ea22284d10046166b81b111225883473623b42124acdb2048b245342b4e42b42050694498e8d0929b7dcd1d82178299ece6afc3265bfcb12227cc7061f034227c77f8c9cdfb5756d1561485298081d470d242b0943df8e970ca3da1f688ca2d2a4756871ec05598ef21d0caa268005d218a30803502b8dc3016e6e20e306b1e22eff13318754c2c104b2770835708170ead1006145621f428a442e887e014c28642298c1e855108830d42615385c32784c3093ab5bca36013c0330499009621b804b038422580730826412c431009e0718047d0e40d422380c980458815c0900810a8c121cca86c5008ea260883b0a8638540807404fe38ba75077d86ed653e106010c8839bb00e77b03861853a9001c230c7319c761067d85b57a8482bb48104c3b0c69e3010488307261dceb825b01eca0c47c90875c0010803f90c025f100503d0055080c116473070832c904b72b8d252abbf2f0fc4191aea899dda43719e937ad686743a4827af3f084aa31c384c0438c4431c1747930b7cc2a1427b2065466b7550a13a9c501e48087177bfdb6ca56cc22d70181bc4e87a520ac0894e20f44b7ce5e047b5fd9c356996e6e2a71efcfcec0dfb8f42f4d2cfa8380a356de8a9ee6673f4ef3bc4a899dc760bf249eddea82f576b498e26461901a952c24f100dc4d3ff45ca4da8da295ffb9864f1b720fae98554df24daa727d526503250abd7d9476b164295cedb194dab426f0625739ca00e8a19cc885f089be23a9b31a47e60a94de1ed3b7da8709bd88137fd506d419167ef8e2ac708e72f078c1c0964bfaad8ce9a3f26d818c6345a38e91b3349d8b7018074a904fe986c6340f370e5aaf26363524b6f40419b234db9184ba4c59de9e2b35e1a815eda0abe83a346a0a36af2efe9ab11eeab36ad63e49beeea349e218f8d608f1d237bacd34616a775d33be0b711eab763c48f75ddc8eeba6eaa07bc3702bdb7138d714d35f24ffbef14f6df7bb9ef1476df8779efd4e2bd7770de29e8bc77f0dd29e2bb8f73dda9cd75efe0b953dc731fe7b8d301c7bd83df4e61bfb5bbed0cc2fb9ff2db19ecb7ab7b39ee0c76dcd5c33c7766f15c8bd631f201d77519cf90efce10df1d217bacf3ce6cceeba477c07b67b8f78e103fd67d6703eeeba47ac07f67b0ffaeec0e3c57c8a3cf7aef1cf2dee84eae3b875c377a94dfce51bfc5558e116e38adc348863c760e7aacbbe0b1ee3ac7ddd545e980afce315f75973dd651e7564775d13be0a573c84b23ab8b2e54da3bd4b60bd04bef57db2e40477d606dbbc07df52eb5ed0272d7bbd4b60bd8631f59db2e2c4e7b97da7681faed236bdb85dd75ef52db2e40ef1daa6d971af9a7fd7709fbefbddc7709bbefc3bc7769f1de3b38ef1274de3bf8ee12f1ddc7b9eed2e6ba77f0dc25eeb98f73dce580e3dec16f97b0dfdadd76a5517fbeb65dc17e7bb7da76053beee36adb95c573ef51dbae40d7bd476dbb427cf781b5edcae6bcf7a86d57b8f73eb0b65d0db8ef3d6adb15ecbf03b5ed5a219f7ed67bd790f74eefe4ba6bc875a78ff2db35eab7b8ca31c20da77518c990c7ae418f75173cd65dd7b8bbba281df0d535e6abeeb2c73aeadaeaa82e7a07bc740d79a9903b6998e3c82fb7d44d459bf8b8fdd00543ac4fed5d5add654aec51fb1a92d27c2a7e606dd263d141360892c7b46e8aea736f61e9d21c5ec732581cdfcbeaf864e1ea6b511d85b82afaa2dfced4357737ab89179592b4a231bf214aaca549f78baadaed552ba95f23822653d4bfd4d44a57dfb8eaba62bb06a5a3b1de5ad21121778c74cdd67b413a22eb2d1e1d1172e746d76cbd27a323b2de6ad111217750f43367bd37a2a7b25ef2d053213732882bc9ac7180f16d410b34ee53e61704063bdabc529a0bd1de24272f3b5249d789b6bfe110ad0dd9d5de39032e121514acf3fcf641e4f6fff6631446cb88682c1e11262a2eca7b127f24555126c5ab186dfbac2187f653490e69ceafe90bb234ffceadfb5c312f7df235e1ed0da4ca7d8a7a0726fc9ad48bb59393fabc93c9f8ede9d1d29f4efde9d29f3c3fa10cdaf8f40edee894ae76dd7083149a48b198c189e6677841ae466f5b1636dd460fdb3636d5f0e857e6e8251e1e9de3267da136c99b63f1422b9d82c81dc3052964421234f029fb67374661ea445d856d7789f9e419a1877b2f1ab3f4d6718f28f7b69bd4eccf5df146138f80d2d89f4d713830bb1ab0584d9ca58bb2506cf6b4258fcc2557f5a9a346d542c46e3d75540052a326d2ae771be7d48792fba8cac438b24496979ec881a21798cfc2e7841efc2f74c9fef94ca6b78abef20fcad5fa428cce1ecd239cddad58030780468eff8fa3b9cdf52e23f1777ccda0e5e12c8f4a3042b83dc1081a35c1003dd4b38b7e11bd9c5e340e34bde8746a7a619d18975b5a79f6dcd28622a3b7607a51dba4f4a20f7f650e7f20bf98547a50694d6328bf006468f00897e1736833442db930640465168518eeb76b6691a8c1cca2b5eb99051b8325ad20123f9056407d58d4772076eba9a382716985adb49a532ca8986bfa784e09c3d06f658a301aada7e1743722106312c6651665189fcc2c0f1cd36ddeb3f4706ca0c55bb07fdd6acd96ec9fc6f5a8142384db538ca051530cdc49b08659cc7df17f4a92d118d024a3d3a949a6edc6b83cd38a1ca861f89ae88b87e419b54d2f636e13b032276020cd98547a9069cd6328cd00646830a16bf6cf6e8f5aa6114460b251e8e1debb261b891a4c365abb9e6c2c23b1e41b44e807f20da80f4b070ec46e3d7554302edfb4ebada69cf6a1ea41aabe8f679d649fac9367bf15fb11f88f4918977594617c32eb3c704cb7794f48051535f6c5624c8fca395cb63de57012ada8817a889735cfcb49a4d5352a079a713432adaa11bd18977084447bbe696393de5b30dd284d6055d38e7e658c7e20dd18447a88117631946c4c2a34904c9fd93fab19ea458d404b50aa91c9c19ebb269a1b319867d466a3a6410761c932b0c80f2419481b960286699dbae9267e6441235659ab69ac4099a9fb787e89f6d17344fc56aa88a4f3e53c9c8d09c71621e3b28c3c964f2699870fecb60265959e48f50eed5c8449b49b823b172dd3a3b24d27de9e703a2acb465a4f32622bcde041b38e49f9d9edb45ea23df18895311711c93d7aabe3a61ac406650e884e8f41bdc10ca5219010df5c0b77ebe7d86aa28edb6b1a39d67fd764a4d083f9c8a0b06eb361f2acfdfc645642746299c389dcb5bfce4aeeb8e5d67a95aeebe3e9290c9fe932f65bc1220087215dd1717b54a89071e9491bcea737df1e3c36b908cdc16268ba9a25b0ef338ec7edbee543951027b16425d13e2225a90c967db7fc9edfed08710325105f84abde5564c72d1ffdc58ec103e50c83c8dc64c91d2a20930aaf8066cb6512e1b6e79874645ab0cfee9b6cb9adf6519bad89069484f7ed932906d286ef7d0dd13a75d34dfc1dd34aeb228aa24f943c8bd52a5efaadd416d4cf964bba185319e042c66eace5772b791e3db0db0aa4f9be809c3a7c8e29059d9a713c2aa170d9f684c2492c0945b48f48282a039a5034b2cf261421ce9e50c4225cf5ae82094569724c28060f94090c223db2087b184a282615fe8a51b4ded3396e7b8e0945a605fbec9a506ec46042519bad09059484f7ed930905d28645fc615aa76eba89bf6342695d4451f48922654e96c9ca6fa58a90399bae57fb3171d722645c4291c7f2d90ae5d103bbad407d8e635ad720504ca26508fa75cbf4a8b4d289b767968eca925c7a9211f9c5e041538c49f9d92cd34b1c48347c65cc4544728ddeea986e2036285540747af4e90d6628ef8084782d13eee2c5d26aa28ed94723c7faef9a83147a300d1914d64c84c9b3f6f393f908d189e50c2772d7fe3a2bb9676e125ea5ebfa44bd3325fbe9de6f058b003c8de9744dc69405b89071e9491bce674b9e478f4d7a259d54799a1fc0e54c92c56a2b5972e8b37feaef3704fbc37e95d38a1ff85d4e4b35315e57b3f4187cbdada57fb6d1e3bfd03128956e6b1d1af9539d4ef6d08f75d89a99cb8bfd62476bd55f76b34ddfd04f76003ae3971a9df10cfe6c0722b4c4a1643d4b1c0d57cd602a35fc431e95111b93f38f79647a309719145a2e731aa125aba1f23ff2db1e5827fae31b1772d7fe3a2b1995d5348b50f29bd6a6faa0aeffe3996ebf27fbe9dc6f05f7af85915538221b58848cfc09903a9c4f66ba878f4d7ea3243f20f162b6464a31c1f3b877e7b8f4a1b7e73891a50eeb284694613a8be5fd398df0b345582770288fb12531160f7d854e6974acc0002e28f70064e67b54c24a86dfa433e92c592cdacf7736ab742cbe546aa4efeeefd2ddc8c16ca513580b2f449aad8f9f4c50b046fc9db7616ac7cebaaab863c9d53a91a6ea3379285c2c23bf95db85d9c574b11a15ab5121635faa9347f3e934f4e0a14985ef896499c7ff0c7645f2dedfa6a39ce0d1dfa2d314fa61862e477974ca18c7f964d1f6aceb7a1e7bd452ff8d1fa90ed436aeb531acb538b5a693c0cfb5e187c604af69730cc48a4a227d80146c3e926c6f3403b73e6dd5e34d9c3bf2cb242ef286a4b9ecf8609f404ab07b12e5053d93e70ac8b84887ed2cc29723340e99260a7ba2e0254d687161c1659f15af9b639a24dd211fa2cd1314dd4d7b5b558ef8fb76f4c8b62cea941f26427675919d1bba650bcd183b0f6c2a92d7fba23a6df8a78c3474967c0b16e1579fff277cda0e93c83de44193d1b507eff42970e61e4fda79e8ac819f54d2ea1088a8bf59cd744707e9ad0caf855717d3ea7412c76389c6fa693f1ae51c18ec7eb9511d13a735f5a73d72de7d5134c2ea8323258964d6a162d6e155f252ccf665227f528b436bfa639666153d799685310f406b25dca2642feb59922593f108d753f1e8e5f503666385533461ffb64047bd25d790d1179a41c169e0241ecee7c54542bb837658423ad79b79f9d6b5a6a743bfd669ce1257208e00eb8e970ab8de4d53942dcba4bf6dcfd71f78e2013fac0b6de476a059b845cebf286cea0d85081b47cd03fea1dd7dd81dc2352471d2df4ffd24dbe1183713ab098cff1757655789702867c947b99173536c511743bdfca6ec56e5f9ca535154ead7333a853ff715eb8f99346cacb50de791ca22e415e61931a36fe9ee36c04a246198e8532660a8372600edc3408c0566ca257a88396a48d58c593aab8f7ee0306ca9cfda3597b20ed7e1d03c19af1c8850d7c9ae9c050c72b0e53e971effbb2c4a868c8286c5fdc6e7cf8ecd2913c77a3ad134f4ad211525fe840bef111eccacd174cc17e96c3767053db384d8a68bb07cdb56b44e7fd04d9701ae8cd173b80e7651be79d295b05e14966fd241838a18cdb91700650b2ca42eb7e848bdb397e5b2843624cd6a517edd18807b6ad5e0d80e9bdf72ca51af17786c0a9eb60e06d6c54744394bad9392566c30b4bab4aa9ed75fb73757627f15bbdf69dc04fbb4d9c46cb1b7bb82852a92b0c0e58959f4be846168d75437e7242d2e3dcc97d5b0bf14359cd14191f85f69427b6ca32e2dca20ccb83d0cb05b8d56d7f64790e6097d63458b0bbff8acd8406b6463f8f7694683342fcf4de735cf1f96e00939b73872ce6bda4813ef245b8c68b2272f45c58f1a630fd3b8c86f3b62abd96aa64c774ab2e2d059a2b22a7a2314488c78d1354302a5e1cc662faf5241370d59b38936facb955197613af98dcc414d3366966d0744674f343f8b4089b55e6e7d9a875d1f5bd39ff1077dc5caa140effed7c93ecd9a76a44aa0ad1a925dfaeab4a21969d2177a9dc4a44a820ee377f743ab93ca865ab645b9300169ad36fdd692180cab49cc1a208ee9b4df9793bf355aaf9e988853f1e333fc1f66e5060e0cc1efb287d3f06e9becb3e7c9f4ab3f993f0de853c62b2b1b9888d19a20257791cfaa504f9a9db82ab28c45c1ee09b31952913ca6eaf9ac659f96b83b637282a6528faf537a10f55f44b6255f6811743c9f7697f85cd545b5298b94273b957b51be6d114dd3c593ba75937667c516953799d61e2535dda22d03dddabca67952bc06692e76bad1f12ef0196f25e93be4ed9700d3b51fcd167e347bf6276b21c4840d0c1378a1176ef745de047b724ab3f70d5bc18c06f57bddd093ff6f599a7fff95c47fe17ffe7b9137fe5fe8a1a0dedffec3ff73b12b9ac2ff3f6fef079afb7fdb9df3e6ecff89e4ccdeb2ccfff7b422de5f485efbffb32ad2447cfcdf347ba10c7f79ff45cfd4af495e0735add27d3fdbbc2ff5a9289a23eb23c99b946429a969b2e56e52d46f3acda122ef754c32ba95b7fae4a5fd320da7bbd9ecca770de4d1d6c5b98a19e84868505685ff2bcdb3c2ffb5c8495cf87f2af2bac848edffa9385729adbcffa2affea9c80bbe23719d1caa34b998898207e8aa78f52cc9a2add3b9330888126a20f3ab903f79255976b901bd6e1145ab2896858f71b8375d7cf5022f9a2ce8e949dea45c2f783a51908a802bc626682f57a8ee92e257497559d19794bef22bf9d523d6f9564bbb0aa12e7b2b75946569ef5fbc3987a5ade460da4e84c73f6dcdbc25763e5bf552be37e0669f11f90469b0aa2107e5f9427ed87f65c7539efcbcf53516518384c645c5bfe716614e61d193b1cbb6a362102cbbab395ac12e6c8a9014eea4ea66a5cc42af133690fc102ce430f265bf9fee67cf7de35c6924eb299992be71a6362e97b369d4374e95c6e56c1e45b46f8c94c6d9f37cb7b8e9dc919ccd9eb9855e150d69e8b760b64ce841de38d71a54dbeca67059be7973e60f3c10bc0a639d8721dfb38fe6b2e1f5dbf9e2a0fef9b27c93be99de66b4610bcdc2015f9bf2ed96349895b0823320095b066126c1a9465ae0a722d0b1b275b25eaca2393d291e164d96f42458c57e668b44bf74d0fcf625cc97df5fd9542866a99b9c7c707b59d10b3ff5968f8e6eca8af26f11af7549f2099f50d5f5afb7aa70c22bb98bf4dd8cfcfd8980b61206e1e3e35e2b17039a34bf2d055bd9127bbf588bf0eb4d80aca0a225256c46db4fb21a45ea2d7d803de4f32633e745b7f66084ae286130ff58344570205946abf7a0fbc0b7a8cdeaf5fa85c59b2cad1b699dba729795295d24e3eb357cac3d24cf9bf4cfaae255b682616a4bb5fa879f7ffae2897cfa2b29cb343ffcedcffff9af2792e693e788c6d18e2e27f1f19c7f9fc4753d3991d2fbe9e7ff170000ffff779818c9fbe10000", + "b4162e28bc8a57e9e4e1a8bc40aedc60": "1f8b08000000000000ffb4fd0b9823497d2088c72f2232231f9232f548654955a52a954a5277557755a9522af574557717f46386e9160dd3dd0cee1966181eaa6986691ec3e019c31f84bd7cc3dfc00ee0f59e4b7b6b6e8687d75e8e6f718d6f01ef721818dbbb6eadcf066c8367fde4aa3ee335b7f62e3e7367abee8b88cc544af59887efba4b99919191f1fc45c4ef1db33f01e8b58f030284d1f03f401f037ebff42ab4e78dfcf7dc53bd778cbe436806bd1dbd0b1d4737d01bd1dbd04df436f4087a003d8ade891e458fa0e368192d218412e82ef466b4811e456f450fa0772284b2e835e8cde89de81174437c378d56d002aabfe01cfd8a99a883085aba7c6571f93fa6de7f0421f4ef1042af7fe3c30fbc7da7f9da2f23041308c13fd978e091b723846c84f0ff8410d236defa783be63cfdcf11c2ff0ac183d30fbef98137a5feedef7c1fc15b7e1321b4f2e0836f7e80fc4bf23082877849b30f3efcaec79e42e5fb103c348b10bbf4d6b7bdf181dbffe0b35f41f0ceb72344fed5c30f3cf676f853b889e0dd6308a1e99b0f3cfce65ff8f76fa82178f70984f03fbcfd6d8fbc0b115ee7c74ff0f788c02e7c0c2908c1256823846ef7ef3f4439f44fa2fddb41e80336faeaf7873a7d1da1bf40b0b9db456dd844edc82021913bff47fcdf0402ff4e44aa0944e14184d06bd03a525016019a46b3681e9d21ff6c7a66fa73c5db8a9b33a9122dcd953e50fa4869b3f4dba5bfa94045ad242a4b9537573e5ed5ab896abaea1efd5fb77777ac9d8b3b6fde79ebcee33b9fdcf9c59d2fedfc879d6fff05dafd87dd5dbf1eb3682e92efc76652255c3a3a94afb24fbe6807769c9dcb3b0feebc6de7a7779edef9373b5fddf9dffc7c61f7cf77ff64f70f777ff3efdff5c73b7f7cdf1ffdee1fbdf78fe87f769efbebe7fec5731f7fee83cfbdeab985ef4e7f77f2bbd9effcf03bbff69d7ffe9da9ef8c7fc7fd4ee6f71ece1fcf1fcb57f3b3f999fc74dece27f25a1ee7fe7eec77fd5ef9ffe21f20d8dd4556247f8c50f3364043e3f57c71addd2e6c4217fd1c42e505a8eef96bd4579aa781ff2daf78cb59b700ae174dd1a857e661469d8404b0e0cfc988747bfe9cac1aa629cd54f8e7a5685227935d85e59553200b147f8d7aa50a4faa715dcb1866d68cb98699d6b584a22a94505d5162aa62d2c4986924c86bb0ce58ca30c7e244239699372caad3442e66a699c6144549687ada34b231336b8a3c544505aa5083a9098dc5d5e4442c96c07731554d9966de5213cc3273a6a5184a623c16cb684c5394f718b6ca0c4a18260a260aa19a42e39a6a52aa624c001445cdd8f684194b69cc200030695a9639010058676aca30c7ed44ce3092aa6a50aa1242095628d15425ae6b7145d108a600a0312d9f4e16e23147d7e2146398342ccb9804006a322d1d8b15928931438e5f7eb70bdbd045e7102ad7aacd9ae8b1d28cca6a4c0626a15a5b80d28cca47a5e6b29a181f6f79a5596bcac029701b05f09657445f7ff7977e4961964119f98c659ad66708a386c594fd63171f7a0b35996161bcf145ded22f6e606c19cca46f798898ccb4307ef04bbcee5f7a1008b64c66120973dbb0052d348550b914d452d67015823ac9fa40b7c3cbebf04cc2d0568797d5b10cd3f243a661f15568b78b1174d138ba0fbd112198e1a0a63a190e5b596f9903d44aa3cec1aec24e830fcd1232331c322d09c4933001b5526369e50c8420287ad087dcea4ca5711a9aaee7941a801a8b0b1732994ce6c2c2622312fef1583163a6743da1aa06a18410a2ab534401803aa1539461c0945253632655140c042f634cacf8917a1dba4ee6fce242a3b1b8789e67767e71b1d158583c9f717edc34783e8a1ad798adeb36630976848311534c1cf392748e8395a63043a1945225c608d6084e4d1affd5f3f8acf7fb072315211d8a902ea601ed228cfadbdd7e6f13ba7d04ed7e0f3c095b5de4411b108a2154cea8a5994aa3ced70007da6b73736bfcd79d5f5b9be741b1aae4777bd0830e7a1cbd0fa174b4879bc17a11f622ff0b863cc36f4ef01459303894f241ab37ab4b995ab8682c405542c73cd4799d1ac1935c34dcda09a87dcfc8db9aadb1844a54b24a141a1bb7aca23d369f4e4fc7e21986319438508d038cf3fb0c10cc32f1f8543a3d3f962e59f6440ce0746cdab173a699648a467e9283da87013ec393ff0bc2143565fe0554559560a229989135ccb091501445d3b5b18455ca28a6c26194324a14cc8157892999192be1ea9aa6aa4ad2048026c4e3aaaada064bea3c095631e5ab9761e94966d8ea1786e07a1acd3d0f5c73a04c971a5ea3d4f01cef40f0bc5caf6f74bd5ccb3b18da363cafdfcb6fe56ef9ebcc366c430bcd22542e36835586cf1827939d8260fd5884a2b897a0d7fff44d422d43d54997504aba44570d8b929b702fefc0ad9bc4504c8bd24daa2baa4e3729b54cc52037c55ce66bc4166c410795112a4bb8f1cbf29657ce4052dc1b49375cb76af0b92ed55455a35d426d5dd5e8cd442c96b8493555b729f9e34d3e2336a9a6c61294deec7fdab06d03eebd496922a66a14ed6963355833a7a028ee5e910dcaf7f7a53f0e1bd5ff346f14dc3bd4e4cf0d1a659856a4c1aaa2d39136f2f625459f3ac948d9a27d7e79a51a7447db156d738752deb9b66df43f2d1aa6886e955d1c4b84380046e0a1d591361e3aa47b5a5e83bfeb504d3513945ceb7ffe1aa10953d568871716c6c35d43f19febf84fd7aef9293a7ce4c55b51d5ab574535650ebc83447ddbbb5de84257d457f4913ba8d75eb038b8e73aaac64b90e3df91bdd6f1477fdff816a557e1ae6b7e92b0693cd9b5fee7af86f1848878c396f5f5c41ad846058414bfa2250e40497f5b83c14efb6cffd9af73a8d9457c65312c58f52184c149fe1cbcf95aff59095574387f1f305721ec81a67f6f704882ad5dc433f97aff591f0c6195c3a165429bdffbbf4e25f0c2ead7442c32ac3d6d10a81d84f8837ff78a611986d57fd6af36ac8ae60092b959e6d760d59f0efd676583f8bbbd654884c5873fd153457f41e7c3073d51f9feb37ee565a360955268f1eaf79f15d5978d35792feaaa8fdba20e6ca12d14e76bd6a0e21cabe8df12d5a9736c42e62b1a3fd8232dd440a829ba972fa47ce8aaac5c0d71aa3db037588a3ccbecb43ba6d5ebc1af5f0866be62901dc28741a7dffa16d5798791f696616d6d59c656af77e1bc58158fdee470b6edbffff6b7a8fc82cf03e44117101a43a8ec554b72272d314f56c06fd6cf400788c1310e1ea0bcb34c8bbeae4b158576894e793ba92ee755243f1f443359b7e436e5aeeb364ba701babc5b794d86f3dd16f968b40b8aa228d0a55a802f206883c7f304513b896bba35d7939d93ac57a0a5680436798d3681688a6159e011be16709cb84348088843f995f9a2e337db9f4b4d8f63bbd01e6464f85977555de424e60fcfdb90cb1ea775b6a08d26f82eaaf021f54753203783a7ace70e830b3a738f6b5beeb162f1986bd9ee3d673edb7f46654c854b2a63f97bce7cd5725debabc563c78a3274e61e8fa90a638aca244cf530820e8aa1db106aca9ce5cad07c9ead34eb64d479706444c729141cfedbeefff5aa3fa537f83eb3e14fc055b0383ed6e9ac5fbfeec9a44e61e7a40f4d1b120a377c283cc9f1b7faf5f5f5eb0821ead7b18d12684c304138665ef2bbe014949cb404924928ba45d949abd028ca8951af94184737a07dab2e61ae5e979003f54bfd3a87160fda1ebfe73c0fb52536dfe6d3d732f239cbdc32ad564bdc363c2f182b49238ca379849a721caa0d9f946127a0c61c09fa8a5f1d59d17aa5cd2735215d09af5d0e06508f4cf7b6657230d9e210b8c501c7b47296292ae789c569806f65d1327a2542e5460818d1d1a91e82869119716bd445a4b72c923819f101e4399e4769cbc71dcee70fc0d11a7395f209dbb6ed13e5ca5c24fce927796537559d5ef2a1e0fcdf1e84c4f53dfe49797eae5c69f2cf9b95f2dc7c9967c57181dd6d8ca085720895e780c9c935014e744d2941072bd87ea577e67af1d8da1ce41b172f36b6e1f8eaf57500d05766e7d72e361a17256ee1f79b8e104c0173abac596d02bafc85ced4273f39d5f902747f31ff535fbefbee2fff547e68add5511aa1f22258e0b2a65bb5a0593d2332c0e80b9783af1f71efed9c38d1b9d7fdfd895f90d97cf1c4e90fdeeb3cf69873df07037e4817faf03fa0b5809731a0d902c261c0ce08e8ba6a85a789d21b55e8e3870856047f615c52e504d71b8d71455162aa6a2aaa82015e866996dd960738f6da9b1f5692af7608a57138031814459d51544eeb1517175635aa298a411531fb8882c94398603a757b32d9bdf2e0e46483398a987f5b628db051112da3b308a587c1ba5424d107feb2f1bc1179b161dee2d77e3d3f0846a387c3d0b1cc9c61dbe69869f55f69ca80658e75f60d8a3197f57ea5dc476654d648009b514b090e507c0c16a03a53a9ce544ab510c06a13e04e8023c9bc5a01dcd3c0d7723e2c6b7c881ab535686074b99929d9980060883b4c732d00201ac50a060c861b6b5e061c8bb97736935527918b9d7d4d2e16c3f07f352f9b0600c6d8c85bc9710380509e09512e3731e19f620c9939f7e8c5c5c454ca748ce69585ec5c0663f18a60c9ddf476bbd0832e4ac815281d6e3b02ef69441771d75911f3bbd950053cb5243a11a01596e14d1e39727d61616e6e71e1c78e1c819665f6c512081dd36af1c580ff6e7ccb55d998aae4be35c9b449a60998d811f3932015e9288b503ad9ac968b6ed34d329f1aae5559b18a9e7a0abed73ff1bdfb9ffa6f44a554252b4fc37f7c1abcfe6f3ff5b1fcad99a7a0f65d8231597afae9a06d12f7a2484319849a6eb3ca58b3ca80ef42ae9c19efbee31baff8fad977dc711436ccb43aff8a39a615eebee31b777ce3a78fdefe76d8d4d8dc1d732c6d38058ecb21043df0d084d8f72d18c5c29b3e160e5b8a417e70d5dfaddac450549d00e28b187894fce06a74530324d05389ab20e882878e21548eec979162d83e78d822c0eccd80000b88af9b7b63ba0ffb78f04d9f78a30fdff4b7ccb7ddf411b09b43fbc2386aa27387d3e1876d00cd215eca4114fa41abff5ac07b3998723f78d1ef45f835d1f6cca11387b7078286645d5880863b53a94201821deda036f4fbb2fab3ebb9fe9f66dcdeec7a0ea632ae883cb8fabb4856dccdf4ff34bf3edb733330955f2ff9db56a4de6934868e20a41493c566314239249993666eb301d995e64a7db00f40afdf8655afff782c9188c1ad58c29bfafa1d4ff6db6b6f39e638663e11cf1b4e75d983cd7a22d6f7cc44c284a2f72de87dfd8e8fbda77f83c6e79c338e6e9ababb51400829e1da974093681edd86ee0831151f9ff61ac38f30845636879e9480892523f392ce9114e0d05addee77e5ddb4ac7b22eb77ffe8a6c00bf8653b5855368255a8bf19847a41607340f80cda1217d8f1097441ae79033ca03cd294a1da2a8734ac23a936d182ee504b3cdec2aea40b238d3a1269944496f8cf0b5b1236a0bea749081dd096e10ac2485b02d6a3c43287920e3fc176a49efda3c37be8a0fba3bbaaa44b45fbf34135211c965d146c15ed206a2368f1088c0dc6e530a022434fec90a7fc70ed0fc30af609436b2f64417d0fd8b583e6f179dbdedd862eb49183a6d05184ca62291720941cf47ed5f3a99e865b6ac870096e6ac6d9a58ff269fbd9a573b9f4af5ee764d6f5471e79c4765d7bcb9e4a2e9d4d98fdad58e2dc527ec9dae0c45a6ba7c56935c943da860eb4d114423034cb56810c0dfd3cc0b193bc942d3ef96fabad8a30bf9c002f11e391b1447f2711e351b10442f1702d32918b4a6811ada2dbd115743f7a48889905273cca3b6711c481859b40462507c42b2f327dd965d5a6c72ffc57e217b8f3f8f4d4f1e353d3c7ff8153a8d3c78f4f0784e4c833bc9a3ff0c820c1c873ff6b9d5427f55f529d54860732a94eaaf33ff234d3c78fffff8f15a78f1d9b2e1eeb149c6ca190750ab0233f9e3ede0989d1179248fb40ea03a9d40752e0df3f10a5158ea13720042f060be07b15ab4a22a0515f3923e4619c0e98a994f6ddf1d6a09100f8ca497fef3f19b0e55603a27b3520a9578fd8e306645d63c29e3e1e33b359238e09c6b0773b54e3e0ed9b8fc03c567d3e193db91933c1758dd8f1297bc2ccbae6b8cd622aecdd2905162be8769f9f1b43797404d547f90b43e04d640fac8200956a2461970f2207925bb7d6af5f5f97174ee9898b849ee3dbe23a3d75bc75fd0c4f70e67a7f87d37efc772b78277909c19c68a2f3e82ec1b90d8b6acea86c20f40b064ff07342d15f30784cce9ca484ee68854b807c98fc626a5c69707ca8a18ca778dcc8f3cf0ae89c9e3ede0a80ba15c05e279bfc2847883e9accf2a86cf2a31c35e24f59a7d0e35f81c7aff9e083088d7b43e0ba4e26eb329f17276f55495736832694a289fc86ba922d168d1b7cd30c5b3fc8047a4e8192936a9ca5c69515653cc5e2ea494209b94f4d68bc49d9020dc3f29d4c2e9b3cf469f0c8e73b0a52676d3b2ba3d598fa1aa2c806f330a5831c645ad98932ec24934e10e6f168880ff09818f943baa4da08e6318f7012e0a77d215de53ac16c179ca1d3e0a70de0a367a4d8e300008f692943f603c0e38aa9da591ecedaaaa93c0e205bf362d2b634f522d52865f4a2aa71a8283854a3971415bf854e2479bf2527e85bb04a792a3938fc0b46a926be105d4b99ff4500b3fe178cfa90165df3aea07f25391aa1703fcadd0899f351dd8b50221095a3868015b03f86be95198e9422876ee45b99e14829b2688e657f8b5806071b2da65ad3495c48a7276872da5213aa53a0d4882ba97c3ef57c693263f975854329a1e6585ccd27ad09353e6652c2c14d514d6aa59271aa696a4ce35fc4dc041db7f64b830db5979cb2d58492e539c7d4746e3ca9c678e9591653eda9249d4867266872ca5678e984ea71353d964f524bf773b2a792b890494f7cdcafb16ad0782665519d05a58fc5d571db1aa77ee95a8c979e48a62ca2476aa88e5bf63849e4639139f27a84947016f04564ef9c0817c9bd20efed370ff644c277391ca7c695b7904c3c00e97886bc452c077ceef3282719cfd0d1143413e7339c3f72f0e6c993091e3f80749249f0f5333541a3d04cd38944faf01884907e08fe84d211bcc93d20ec1c106607841b07e4d30e908fde9ec0e8efe0146104b4e5bc97ab43e4fe677ef8cff6cfbaf0c5916ff87aaa857d14436368162da1357407baca2127da434ef905744bf980ae500e880fbb05ba077547bf3d1a03f93d315e10f60ee888827fffa01fffdea043fcfb503f8cc2ca503f282fa01b0e6aaefbff6637ec018f3d507110347cf1c04e50c33eb8861e45cfa0afa2ff84fe0c215754b4b9b42cd5a796963d37bbdc5ca92fc2d2ca29a8af34f91abdb45c5b5aa92d2d379a0b502d3596b20daf5e69944e4353a0c30dbe62f878f04ab39a8052b521b0b113d0a89602914f80a2d596571a65be17d457f89273021a8277cb1fa3dbf749f0c4db9ad41fe49b74b891542323e30e442cdef20a1345342587932f7b99acd77bc50621009829185c4c31c659a0342ef4e5609228c4c63a4e119d3f2fdc26f95f77be3d9153de7c7e85a86c21a3aaaaaae9aaa22b1abce17ea260c014030680bb564fde75d749c5500083a22b8ac8836af43e1fcbff26c70ae7d7d618c598f2df6947555526f02100a6dcf9e01d31d74c50358b3128d805208412512f35ae268050951015aba68a55327edf6d92bb75df85c9f3afbf4fd7d4242c6aaaa76a7545d3946955b9781fd5145e039d02d515c0981acac92b574eaede05001803afb642eef38988db25436f7eed43494c08e6178ba98b2a2f1f30d45486a270c3e74eb086203800f687389407ad1fd18fc10b4882d6d9a5a5b3fcd7a957caf57ab9520f6748a73c3e5ee63f6897c7f3954a7ebc0c887fb57efdfaf6d2b9734b8be7ced172a351e6df7dd587f9a44c58864bfcdb7ca512ca4ada680d9d45af42f722542e556f8305a82e7120aa2580dd064b6aa85ec649bc4c2d80dc6210a806da19cda2eb141b6e74a128461e603b97a7b9f8b9f3e7cfc6f3d43672a665991a073cbe73429d5f354db0473a7940f9feadb89dcddab6ebda90e7573b9bdd6ec5b33416a3d9f8d2a46598163309c65fe52f63317efd6ace320dabd5cae536e597410e763682072e220f21a5da2c9f865350afccc33eba939cd4f3d2916906a586073f7af85dfd3e80af34295a90b3cc4d42f13d85b7fa60deffd6c6c6eac393f7628abb862544478261d5312ce8efbeeb615f9503b4761437bd0352523a1fa08ffc5a9991b8a9c408254a2ad1c41025ad2d656bcb2bd5a54a2d94c59d86065b94c358aba8ce52b696c9ba339592787467b2b5024c61a1ab69e10458e02ec0a2102f354f83bb94ad6557e497fc2d5f39c492b8525ba9b025011422e7464575eb3cab4910a916b158fdcef8c2c13358a82d4ef13af149c16a2ce1578817b1b4ec26a265090523fee3dfc8ba318cb269e38e05336bc46752d94a9ca864aaa64dcc709a2c9f8dcfa46259235ecec45d33366ee566f4541e8f19b6e2e4019bb1aa92514da030412901022f4fd024bcdc1c63166048d90aa69691748dbc4d1523a51fd332349360894cbc68d60c3d6d5ae39a4aec64d24eaa3ac12aa959a9d4926eea093d3ea66162a5f8c244c9b863009d19231a31157d2269643453d392d4b1d56416800028788a52ccd418c6306664ccf20915ab5652a1bdb1b9f8c22aa1712b93826ac1582e18294d4fe9f9855822a12a568a312386c76fb363ce9d8a6dc68fe5d598129b4e151547cb9bd309484e334b0302d340c06449500d3555d0b0aac731b9dd2a2729a84a455341a593aa4ae3c69cc65822be64d8d88c8f69268d6b58c1d360147428aa5996a58aa963ac4da65882afee09cd9951b0e91600b06ed94c8d31c68090694a404b6bd331253ea58fc9762974a9ac51ad60eb498686e421d3689d6357cd9a0fb6351f406b3e90d77cd056e680d5585540bbd473194a5f7244da6a44fb3abbec9d84f07d7c9b2a942a745b654c8d86e13b4425dffd2e51492c117d93881d14ff171d0c803bd4d4349346c32bf83defc109538b11194b629a9968037ecfe314123116a31d8c3b34c6a47e2019e2ddbc719873e396a4be7fc957f78f28ec066b2aa73e24e7c64b40a8801ed1d73d0da1d279015c9943c8caf99d71fd8de72dd3b4cebf511fe7ebcfc8f33b5cedfc127f5e3aafb9fcfdc8732fc0aef217dea04f08cd7bfd0d4203ebfc1bf509c3b20cf16c1a96b774411be31163da85251eb17421c8f1c292645723409dddcf4107ba68d697c64f80fc65b2676065790ab22ba7600de48f37ae6b5a26bb5773d8bdccb4cc5bd0b5cceb46c15c370a66cf50b47b19bb57538c9e5930d6cd8271ddb48499545ef0f7c7513394b82caf788990dfe14be12ac543deb539068029d61784bd4179ba584b24d6409f5f5b9bc7248c2e4e8be80ec716e0b8d03194dc4489408c4449d6a2b7fb1c7c05da28838a08a525f3700ab2190bd419be589f022fca96f30acebb8d34fb8a65bddb9ab3bec2b4eb7c17b35cd7e23400d3febd356f3d6a595f6169e3d1acdce5b27e395dd8822eb251596804ce83cf56e31def354b4ea911550e14ca872dcbcca8638984cb3286b5d5aa6f0b2d1ea956046dd38a251231cbf4bc4b972ca3df16b15d29238aa1fcee166cfbb2bb223a875e815ae82ef41a740f7a3d7a13ba81503aaa1f36d0abf01f59c9f1c0f1f5c64a6160b886f3c0375fa7516a78ee9e80c3b368961cafd191d284440c5010daaed721c7e784a037f2ba6debd0e5d7fc2e6ab7dbed4e78d9acd73bf53ae413a667d8b621a4964168c783569ecfadbcbcda46bf2bf49edb86dddfdcd8e86cec84970dcfdbf2bc807f2775c196112a171b3e2e11a8d20e78ee56446393a7091486b6fbadce55a9e4bce5230d4f5d23ba1a28420390b826054ae868e71adf17b77c46f8d3e2e9e6737cacfa9b5821aa2e66238dc8f40a68019d1e95e895bda0cbfd21908644817152265bf4869f613b2a3afd619d97282edd4015cceaff41180c257779cb844b02d77b46c859c34b20fc8be2da164aa319544367d0155f5b37021ca4982c8ec87c9dc31e4168f4788d62b2e4842abe9d8838b2dcef81d7ffef5b9c8cd8e2bbc8a5f0d25118533a2a63f009fe411dbcbc9c2a79cbec6f8989d132adfe16208f29fc0385d53519d03c4de1392a1a6c58662bbf8b3c993ac2e737500695851648a824d8a80ee90b0ecd5b9651e7814f17cff11a1ef42c93570abade88cea004918e1011e7ba3990a3e109f59a7cc732fadba2e679c3124df03c2fb27fc5d132ba7b8fde2f07e3d0e8e90045f211d5f1019c4f0e644d2ef4fa829a87ae5328f41f520c52e4e051f471e996346a10fa795f8e3e8c264403a60925c51ff2a6fdb0e84f9a16a58196e0cf5ce2e14bfe2c99f95b9eee6f6702adf060fdec4117a9be6e6ba394c936a5526b64cf96aaae51b13edf7cdb85df34ac93c779358e9f0c54c4f955f034f8002cbfd2d6f9d6aadbaf5cee1a5628a1c6a10d430e9546acb98696cd9224a726a1043fb72ca433663c6e82672493c66ff152da5b1b7c17dab08c1ecfbb67581bbc6336a45dc696b02baafafae82399733a4866ee8f2c6f567b6ead27c043420dc70c78cbd6e6f9f6375a8a9cfd736b11bae627d0ef473462b27cccc59f5308f4d6f6fdcb2c7b057097b35288d33c2974da4e0aeec8e17ff515c94af1f56d4ac9da4cc0a75fa93738e2b534535b8086e0fc878a72cd409d3134b5e2f55bcaf02a66024b2b613ac5427dbb049402851d9f4720d8201880881bc52054e600c03d5d01d0533ac721d286911681940e5039edf22f05978353c21830c632b3c83f29005d7af5843d6b4fa860d80a00660c8302c028c118a81d8b4d59d6542c96a4bc7cca78f19a0a18145b0765c22adb13772d06ba422ca6128aa9468842882afe144c18c1545c0950950286a985381005fc562904e20b538081300a24927c9007211ac594a8311628501d99d12c164f1940401f8b035509c4188931c3e00d8b4d71443c91d3c5bf5c82a8d49c8a036043d76298c580300282e40233156396367344ea72046bd3383a8a2e4bce455440cb861551869ed2d501708c88ad5706e47e39cac5805600e503788f847efe4ac64da5cecccd2d2dcecd9d49a54478b1726ee22e35a1d959b5ff5feebc71e3ce8b376e5cec055a1cad20d00d9680feaf5d9938575e9a9b3b9d4aa753a7e7e696968ef2ccb2ce1545cdda5a62eec69d171f7cf0e29d377ccbe3ddff8411bc12397cbd805a6301f836c16a0e0b95cd9998e362e76b165df80289b3fe2d162797e596d031ad5b96d93a07a973701a98a631f8c26778653e13b38c7cdeb0ba5d44501eb530423d9f578c9a07707fa3b281ae60348de72bd00e38555b41d4477dee537ee42e6418515cf265e802ba135d4657d06bd1eb108243b1c872e9f950c852ed30141242d47137441da195df0f71ec6f0fe38dfb638cde0b461725ad28f1c4189a10367311e9aed71c4577aaacca92c52484560cedc82e3fdbf5da1bd0dd0a08b82d8efe89e57bc3b0facf74ea9d5b90ebef44f6f732bac869f47244af2320cea316ce5280d9f435937d7319572e984e46b520a0d86ba741899ab8050801643fa2a64da7a0b18fb03873ca8956c25e9bcb96132d4824c95f0c82b0375dbf2314487abec5458fd08d0f33ade09829f6618ced442b5176e6d6ecc42548cc6659fc77e7d792096825ca5916631f51b58263a4c3847fc937fe9eaf41d223ba1ad9abd21c53578a496f8f1664b0824434639cc826d9e96ffd49bdff4d310c1dc3f2da02917af7affa98caaf4a5cc0839617aa2c1ff7fe84636ca6f5651f83f9d547799a2d69d785233aa5eb876b94a6e5c871e44b4ebfa9701b0f87871da8597a6ed49a85572950cb394433f65bc30633c260edeb813e0eafffa5dd2edc126b7406a1e1d9488a49cff192e0f50232d3eb6f773b9cccef7b1289eef760b3d3df113480a457f8fa531634406b583727aacd32ac351a7da31ca2c0e78d888d1e92b84e9fafedef0e54ba7ebe1f418322e17c20850ae75ca8aad70a255801d5b335d0e28b8ef12c3a8550730fb6bc8f196b5312057b17c21fc861ecf82370950f63a020def93bc3eafb6a919216607cf03a3e167c0d8e8a36fdfe351f0fee1cb38c9620fe37fc4ba4ae25b48650735fdbe161fc5f39a8aa9d3df51bd41dde315ad56d4aaff6ff403c1f09f4daa511a9f87a6b4f5523759d14753d74eec20865125161e428634f28ddbefc095f85ed09317e7034f260842984f7840ff9c6481f3aebbf139683347c94690c05eda9271c5ecf432a297805625539fb219fe4f990e8c2fe7361d08cbc0781743ce1f7fe132f17af4dabbf4dc9875e1ea635ad27c43210eac6e59129e45d0f0ccf3f77009dfbb440546f11a21f280378f1865b1131de5be7b841be52f93fb082150de3c9dfe054f46f4c62ac2984620f638cbd1ff713f5ff33a6e4c054bd00c97835c64cc50a9ee454f82456b0ca30f630253ce9ab83544b809942142870eabd203226e061051305eabc2b8c70dc6ce13ba78ecea12be88d68033d86de2be12d182201efe59108566a78301247469e9bc36632e97db2688c96e3941a5eb7138e1f5cea8430d7e9f49f19bc0943f79a3e05ba1d4d1a0df706167d9b9621838675c9eb6ffb5c9eba61813778530f97f09e29149a8344adfad620ab9617f80990f8de7868833d15019c532170f7fa6d3ea73e21267f9bd24f08289648c1277e18d8c03cf90909af83793581ae21943ec0945df0dfdcd0f6a234626892759bfcc37df7dd4a95fdc85f3c5bd2f8e6197ffb7ceae46f51658fa9c95c7ed9a914ce95f7eec1a6518594bfaab57c069ed87a9f5e5db50ab634d5881aa1c462e594b37757ce7b6347029ea3dc2fef109a6ee1ccaceef13db008a39e19563959bbdfec85cff9b59a39d103a5e82f86a2beade04dff1d621dfc3baa2b6787533ceef74db157f4979c4b92a9d90a5ef0c5e647848ebe167afb013f26e96bed5fe52ba5cfcc2b055b8c1b3420c43102edc5c022599072ee214fb0d51180ca97ecae85fb1d45d394b8b4758df370ffbfed312c08777a10d3c5327339d36af1752340ba99a2b2fea1c4a3e1db5bee4297d3b18a74cb52a9374e437369a516da582e40752db0b41cb6c97412e048d644e8036a2953730ac23450722ed46cadb8b45285bf35ef2e95548058460520a0e9182b585331010c8a635947d2e9235622ab002644d1b182b1a10101968981569a7d8d6962e863b3969bb5ed6c1c536c4c263165145b1ab5f4580c038055b5a8469353662c168b995349aa51ab6a611c8fe916d52c9e1c2039696282e359db9ecde52626727c7bd9edc12eb4d1bde84b612f2c4043306f1a6ba2fda7e10c2c65d8699f0be4f744c8b311ad7726a016f26c326ac8b3916fddac5a2b55e5bdb8546986a6920b50add5676a41b132b6b61f5fc80df942d9a08c99085f087e1914a25567898d2906503442995061613aa6144058b3b2248b8de97a8c0200df56088fc7404d0da8e3d419c3ad0f4f5cd075dc7f10ebfaf989c980e703aa26993e0ac6186832169bb6ac69c9f4018c2903c1f661bc645b073a9967712d95b3b00a18b0ca87999aaa9ad004bf09144b6749ddb05423ab13aaa92c6d1005ebae2e7c6729065674c00a0623a5722848e8866359c9cbf1898c93cd3a99c9582c650201dd4d005129c4188e69868e01e253261de5eb4cc700b06eecc3d7d9631378f73fc226f0f9fc60bd5833c1d7b4c54c175cdc20f4522c06b725822a2c94fccc467c6d35d1f97f44bb471c2dbcd856faf671e8a5b62e623836d0c9250835a7208dfe72fddbdf58ff3e1e1ae7325a467721a4bc786edcf30ef10fdf9f4cdbc966b93217dd3fa74fe6dee7f3e3be2955acae9f6909cb378996084338c3b2caef1f5b9d9eab949b493b9a49da7e9fe4c3bd4e7eba7e7d4be236c3390cb5318e3c4ebd97ffd1fcc7bc904e750dcbfa9d17dcb67048fa3f7ca12d8ad224c7d13dbe94208206490c3ec49006ed9208287ff491a94a7520740be509bc71010a55826dc32a3d74460227afa704caa52b1353627ec8caef1b19f98c6381f5c5db24c4f2b712368f96e41edd36ad9e65c8f6ce95648f884c1a4b2724644b393689d845dd81de14f8d2790156517c6f7ec91e2c240a2b1c367124eada551f711a8ae9bcc8b92c29ceab01b17cf59a4f925ef3e97b728d13de2f61920fd1acaf470f73c85e80aad08fadcc5830e2c5b2cae3d4cc94afe222699502b88cc76597cfc088a74a97c7f1bca4f28b748732340db657b146e7356d9639dabc96d405c2a6a7b439e6b01263730a23ab7c70f724f3cca1641a3929a89e39df06bca7dbda31e668b38c1da31a5ee32fd7b0468f3256621936a7a57441b768496d5e7358992763648d4fff35c29439914c3b1a24eb069aa47c2d2cecfe5bf833782f4a2104aa30c0612e6bba2bc2f6a609c72db03e3177de7adffb3ef53e3b35f1c044c382f7daf589072652f6fb3ff5fef7dbe7e73e9ec07600a312b79f1074275296966be404f8ae5c6a64c88751d5f75d077f0f3b24c6588cec00c692ab82bf57afd7eb55e8726ab9df262ae12d26aa5dcff586f7e229215d380cbc83620eda71c67951876c296d2fbf2d6ddda40f1503655009d52445e8339042ee51d10d8c5a255c94861ea52a024696d9f77d74f4d1679f511853c4a5edf1e67a8aa641cb323dcfb4fa5b020bef063e86867d0df97a99e87ee985691fe60b470ba3f339a42125f37e3fb7827bdddf48e1f19987a2abd3f4c495daded9cd13ec5d05865ce05826746f5bac87199956e968740acba9cd0177ef50b4467ce13c39444b97056ffc25ec5d2f7c377ec13b2f1ae547be102f834a2919d10319184a97e0472127b4ffd7020bb2424e28a1b4fffd2d0126b7c2cbe73afeebab7c4482a5ba23a8d63f844db9f34836886971d80e7ccb96d112ba4df07af75786a80d6b08351b25c7638ed728354989784dcff5086b7a6e4fd54991975224032684642058c69f3f79fd81cd373d505b6e2fe51eca2d6fbcfc081ccd535a7c9257e7c9225106bc8696a0b73353c547a68a8fc05bfbdb77de09f95f7afc71e1c72aa0bb2be8ff873e8fbe2aea1cf5853bea9a24d0c574f7f3501a7564ecdbd00dc4ea031fc67b3d96863acda369f738211af5425bf592a5882be592e36d07ac86fdd810dfc30aa506536d83c51555a794093f36c27991aa980a3315aa0b428e005608d114452384421108c62aa53a554cc5b055df8531c6500661c540544a54220c2da4309f00a6044b8139c520f284c9f969a094680a27cf62eaaa18310e464feec36d51b504530d4a29e1b92b86a2c698622a8ace8b26bc704d019e976806218450c69309793f2701454b2d4db3f99f4d142c2c4230271e89423013927c05630abe224328e27f2fe4994915c69b0e301bcae23bc84253e81cbaca71a751866775e459d917fa47d873a31c5236f20cdbdbc38a63fcd2ffda610a44e0edf30912cea9c5a53308b647fa7f68c6407bdf6f24ff8deff77f0eef45e97df7fbea60c35fb9476cf89375fb7f19ecf8f734831dff57427f776d94470ba177415663b54c40ea49d77d8df269f08a6265ab2e805cde9a621bec6a71d202cb800d2d8ee11240ff328e0b05b4e7e6a9ae744cebf2966919ac8729312c9df5b0824b4caf1bd631be96f49ffd0642917ae82887901bb0d88ae5925f9cbf4da360d385ed1f1e23baba2937e3bcf4dbd11259b6f2218d14f8c93b8e5e811044f25a80c6e1429b920503697531196007727180fc51bf7058308c5b52ee7133ea40d632cfcc069e06fadf949556e32c5d34c1939534f2569e4351e8bf2810df3c5b3662c7a7ed09232bdd917c1093b485a2fe03a44ecae9518d397688731157ce019f4cf2270078fd1db11909f03a20fcab7241081788d005672774258282d013629ddb1c2c7c68a8de09348b9639b53ae215658f47453100ca21be5d7ad16a6e0c2f5d9c603ba02d107a70199eb59be6c02d4d27ea9f26ea1fa1806e4357f7970b67074ad5493fcac7d964b4c4669c835f05a2a8b8a01b2ff22adcb893872f5fb8f0e094d0869b99f9f1cb97af8bf70b8b9c2e354c6b6cecea891367f2815849385dbfd8e02dbc7883b7d5b40a85072f5c78158fb9e7f2e577cf944492802ab58cf51327ae8ce5a2f8b88dca6805a1742982c024f968ec0740d5d1549d768816c2e32380f31f22efba5119ce0f46a1e66fa26f11461777bbf073a26e95819c3f2c93ed0b3df0beb661db8628ee961ce74029534a27072574f70083f0bd3c8e11603423fd2294aacc1d7680c1dc81f787127cd52d29abedf495a79492cbc7d22d294f5d49b757fdc7df2e6437d257b3053e5293d92b998dec241fb021dd833caaa03a3a8b2e0b7df6503b67c44b153950e1605805ad14b50609dc69fc6c744604ca3df04f2233647687c78a4bbfe37b8b19d808e782e9d3df095412f2415468d0911bb81719b2d3b928fc703c0f63ada484cfce88bb9f8637589dc50624a5ff231877a80200dbde30db4c6a5574859eb490b6085a2d5e9754d9a6ca20cfc9b55eb875839471b6867977921bf7485ec86eb602cdeb2d91639ed37655cbe8051e97a422ce4ee8af78dbdf6b4ffa5035045121343d2ff7f111b7a4fcca00d27890af008fecd3e2f66456c25a212bc1ef1901f79e70d315868675458aa88510ec2d77d888b1e65ba14a4a6c0d0e936596c04bc4bc444cb7a5f69aadc7125e2cb1756cba78ac78ec5811a7ab8e5cd632990b9c881761a6c6c1331375339130eb09537c928879b6d19a3e766cfaf874f1186558659cee5fac47e955a792448845d6ee0be82e741f7a07fa37e8df0dafe0506d248039acb10055a7da90fddf704f43b31afa2f8ed882f1808f063864d851ce205cab16600afcd5de71f9ce1c0adaa479f58b32be5e842887aaed3bab84473b6a5cedb2982a40ec6ea2e01b404065947439fe8ff1fffcb3e2598db36d5f06ff72b9b1594f97a94a8413e63c7dc38bb1aebeff5dbe79f580f1fbedf5d7610ad75efe25d5547f7bfd933cfe5f1f53636a1d4053fa6daa420be0ce3b81296fc5e42eb83f906be6821cc6d27a5227f3025e73bf4cd58f524dc18aa628baa8c561e6d4f7b9032e5874af3e8e4ea27bd063082901b364a539b276485be30167416cdd81409ebf56384128c9bc7db9328d7d7c5a0d880b40929d325792cbe3866487dc16b0532c73eae45879fad21c1f4993b1a3188f26f565fd7b74007cd6e910bbdab44a6f3923b92d4254bc99b2cbaef0c677cb994b1f351ca37665623acc9d275fdfe2d93eb54a22a4df33c21b7bd4bf6d068d094fa1a36621506a784ab121fe0f59e798fd5ea703f95d04a8df862e742cb3bf21de6e9a56bfbdb3b393db18c2cdc7d1125f6dd207f9d5e64bc88cca48269829693973dcfdb9e6122de9eef5b77df52aa59b7a1c6f8065fab75f8fbe8b3a3315da1e12236847f8d90f195a7f1328362c43830d4cb0617db93dca016ffb27460cc3630dada05584a0567524d7a2c1220ed25dc7ad051c8ea8fbf56ad27559b29974ab493709ff7d93304a19f9c88701336a5a4c198de83fb5b1b1d96e773736607103302118ee7b1d2662d73309b439d9febad761cc8935d5ec7ff11c1c3df7bff34bfff7cfc91bda233f7bdd4be2c8a54b1191cca13b79097ef88255dbaf6ff9664e62b36d891dd837792abf50cd76c8fb1b7f6c333096da8cf94c5b2957fca480fd0b080da91a066cb395ba2f7370b3cbcd5a7365d915f695956aa5cea14f3ef92ffd93477e2fdb989868387f69f17f954ca6627f3f954ad5535f535535a97e4d4d29aafafd5423994afd65e1eec942e1cf5555b5d5ef651dc7816b59c7c9fe9555cd64aae2f31fa4eaa954ea5935a9aacab3aaa2a6d4bf4a4332d548fd55010a851f2beca8b6aa2a3bcecac4e48a13e57953944693681aa166b15174cac528b6544d17934587fff7aa0db705ed7e1772d2688e4feaee46bf2da7746763a39dcfeff0592e1489bbfd1ea0563e97dbd888fa7c91f4e92bd09be1e5f02a68239496e21b5f2ab33ae48fd41d52b367a3ce4b4a3efae1fb3669be103198ef9eee24ece75ae50478f5e55a7db9d6e443a95a506a2c2d474e251242c7a54a6d0efc813c034b2b352f5399042105f0b19f09a8f9bb37470cdc665894e76657ce80b794ad394b33b500f297566a4e02e6e104d404fc9c109f87f2aa50467586e30182a1e5c95701dbbf199950f54a35e83ed58da068bf86710a2b585caf6840086818e371be1060423ecd348d1906534d603a655ad37dcfe1523f4a41e37bf0385631c679a08a543881a6a2d0b862647096280a191f3f5b2e9f1d3f0280218531a638011a666a5c702f354555154c0027d5b8c0314c8d28718524088e13aae038a6aa5ab494b862e9aa69aad37a8c6a6a8eb1290c9830befa9a044b11c5cff3e2b0a2fc8ca1a6998629259426990e7358c1498cc5157cd3a6498c4dbede9918bf55676b4c3fadeaba5a66ccd455079afff7f3892613e3715b65794240c51300942a828b7a82c6150a3466f39d826673b92c400a2b80b1051480284c5754423053a84229d871c18d8d51051482354a8802aaa25b8a6219ea34d3a9a99f64bace4e14385e535434c29891f185c91f23248329c51942bea76a1a03009b2a0a553481dbca3d3a891c94430534832a687e9f9d5ad8a4348243a6823d9bff77f8c62dbd2b8b73887a1df14fcef4e0071ddbe86f08cb924dc3eeb75bf956aed5eac95b145708eab14f0dc8c185e6389210fcf62f4bd025b28c59f46308350fd1310c397abe01ae6fabc09170cf2915c0f59c9238758b39a5c602848766c87a7ec83fdc28601588038e8a4ff2da3e5984fb78d5f2c78ad6a44e32f9dee7150d7ff2f3f9dfece53b6622cfab1c4bd8c679715c12a12d7938518b12718c5231118b258ab06a1b9bd3c76326c9e4175a6a8cb5f2ad3bf20b8e5e48b683560fd16113e8b6c325a3a5e42192ff12a0bd24950c470560d1b094a10ed352f5c561897d285f0b24f6bcbe4fc1df41172d88930d7de71bd55a99b981718864a436ab2c5d00b7e62e87e35773874fe6098e807a16a08e99daffbcf559e193afe03805423f1b7f0c1bea16a658d5689bd2bcaad10dffa8aa0d426dfd2aa6784b35f0e3f15fa0bef34b2da6fc82d5ffbcaa618f50ba414c92e3d89da61ab6c4f2628928cec3e178657f284e1615ef30823893f5f683eead361ffd368f1e84a09b88f53d61f2d58b25fa1e6c6e0729ccc40627783738c1cbf13116d175622826e67a95cff572c9f19c92e3254b8ed718b5e1921526fc9557723cd86a897fde9efaed5cbab4d16a755bf916e45bad3dd5eaf75afe1c94759842773d9f1d41a9e6cc54aa43c65e7cf00f610f24a004db1ddeeab3c1296f376d9d57315d8c958c49ab782c66ce5a2982354bdb0bd4809598ca7b549eb566260437ddb68d4e2cb193b24a31f3d8b43da9cfc68a69d55431ec057266332c4fc95590820116511c9d4197867daa946a6e5439767036a29a09c5824376c2b5467558b9049ca9290194bb04c726ade9571c7117ddecd174a13946354551e213326ecc9171ba380c6337380820f452b78ca942ac89d8f89cae80426d23399f530c45b5557b3c3e14a9ab5825043604d53e2f1c850c68af34f2f868364fc3aa702c571a88769470f89aa5bd02a199caf3084f2ee3b8f61b092b75361001c16ba538c4d4ffd990bcc84b4fd7f7159ffc1ed31366311dc8885e2984228971632048fae9d4b7f6959f847a2c421e3e864ef15d03a42f2bbf860b118178e053550a7dfdc8880b2cc14b8df8611de8444bb8808a3da15516a96d980972fb092ab872dd7c85e26c736a763d474db1d214af2ccd5d2a50938c97cbe3fdef8e658ce5a262246244a30b2fd31349e16b2d9f30ddd6829eb00dbcfee0b83321f875e57116d792e9499730db50353a5d9ecc61e0afaace8c5a5e4d5253336c8addbb1bc67892672f4f7b963297142aa37ac44281b74bce474e564b0647d8cef0103049b9fcb13d935ebf7e7d3d3d638f17a6734ff8773fb6ed4e4cb8fc074543bb7e66fdba66e42e1c3d722197d28cf173478e5ec819daf5f533d72beec999d26d8eb3c6af11ddcd8ed445e5a874e097f9208fc25107a9cd653fd46846d8eff90ad4127363f664ec1500429492d72c76bba2e69cc4d80c8f308d0426786e0d3c3d63f2f7e095c7014336e5e8dacba846a50886d275632c36be109fc7b339de9989317d1ed6e6a9465d55e3bd3eac27358ea6d0b2cfd79e1f783cf01ac26186e3f9046fbad4106e719cc1295db0dd16ca1e6dd36ad76fd5dbd6a7bbdd960808aaab0d79e1bce4926576f2f97cbe635ade2ecae572d27b492eb2260b5fe2b0a456e51949a5a52c53e54abbb4e24a9d746fa9d294e7b33694c89284d1eb4f11c3385e299f5c532666675f96cdbe7e8d0e47ec062e9f009d9251ee03224db972f294325e161f05b97403b980a407777cda5343b1909b348d90eb254bc955489688277fe0dfbda497e4f7aee75dcae7373dafe579d0f5bc8d7c7e2bdfcde77382363df087a838837253f839c9a3a3bc5fdc80b42a39c4e51be552690e4a33a539a8b9812b0a69a4d11c6883fdb260ac752f5deab68e1ebd51abd9848472c1cd5d240c92cc96f464029d76afd7eef8764796e9ed48cd2fb4c70f2a879579e10bf58c5891425887c82e53f692a562293924e8718b8d220c097e1a45e8058efedf138ccf439ed7ef7ad22edc29144e08143e90fdf47f5e3c7a8198a61fee2679f1a2138c5ccbeb87eefd5b9ec047fdb5e475e86de22408c9cbe69371a9d25880ea4cbdb6005569db70026a425db0ba5491a7499516a0549929058ed7bce595c1df6968d6976bfcba24affb2c4a501127310bd5168500d12898e336bf090d7fecfb91a03ae58b12d5c583344360043ba5b8c228aca74b567e6a2a6f95f8d2750f4b68a0d9ba666b00cc62c0e22a245c0d4ba71ae21f5fd002af14da7812d43803f8035dcb5f3872f4425ed3f9ca366c435d7c1e2dc666a9c90ed661fc49afddf3da87e9c56f6d6f45e0292df8a60fa0f7a18fa3cfa3af097bd95330a210ed1ec2556d3447b48c871ceb90d21eae77a97910d9c5d7e7f4a8a8aa5e2107b2c7796651f1968f35e40d6b63601828b0018fd3629ecfa72d1629f514831403ed2a4f2aa5791c75f0362246a8b7f6ff58da1dca845f3928a3ad682db67d930c61bd9a332c4a3cc918f67cfdbc6291e8aa47c94ca044c5a90c91c8b4fabd76c4d475d3ff5a55c2af49b14875551ec5d20e4c6437299909dc050599a9c29b553bb4060ececee90d9d37f36308a587dd52c1213a14c3ea22cf27732ce5073a4de049fe9f3c14e880f093fb895f070a1883c374428725e141343dffab61ab07a907f005e8fafeed42f5d7da52a8f09f8ca2dbfd3b6f4c4c9c9d981097072ffad2ec69e8bee9f6d2c993378f1c3972e4e6c993a5dbdfb48b2222eb906fdf412672d02b04cf218452566561704005055cfd617f163e537f44ab2860842705cab925361a6f43debbb02dc0e0e8cf5e13ba70b8ab6a964914f24fef212a5174fa94efe5a125922b716dd6ea485b3fcf93f71608bf2fff6c5e2c642d1267a685e1f6e3802979faa82f31ea5eda11a26d46a817f17523f7e949b19271c2911397a494f4f610c39cb4842dfeafb7b909282aff113425b4baddad6760a3bf09cf0c59eb7ab019e1494b9f6bcb528f296abfcf8a8da2bf1b07a796b2e1c712b422b036bb8b006df57b7c5fce99967577ff160f0aadb02dcb082c5b36db3dcbcc75858a472b0c0536adc1f97d08e250c5a88f30ea406b6b6bcb7fbf1dbc3f0e2ee3ef3b9deed6d633e1f9835287e3e8f0ce5e0dc65e1218210bd7d72343d71e7becdab5c71e13d7c987cf9e7d787210022411d97cc5fd698e89fe74767c3cbb3508fae7f86f89b173395e9556f7d97f9aa5463359949bd0f67cb9d2b4ad9410911c3b523d9dce28bb7940620b82f7d14ce654f5c8b1252187b1ed66b932df9fd84572071a3e2f641ca1f2fe56cda26c8cf6729565b8bb776f137b5e642fb5853f8f7d816e7b2fac75f74058745f3e8d5e2ead794bd2983730e1dd97727587dd060416beb2e45b429e6a4a77cc8f5eddcf0bc6d5477d87cd97fab7a01e58ec1a567fdbb042131941a79e0d0d652c0384c7c27e0f50e86314097c71e063b451af445d773e22dd769ffdbe7f071478f20e7e437d908b72b456fd569e82d03361c497d16ad827d2ef7609b6a5239227ef175b9ad41fea3985b6df118a41ee7fd2b0163e181c407d3fa1826801645afdad82b3250fc613c77fdf6f997471788dcda10a5a46a7a3f58bd440aa9e4517752ff2e00d79fe9690714954e9b1e7a4f64de0c4bf3b726481904bf7c4464fc9e3d2cdcaf641c7050cc94467d1baf005567d7e9714d5976cb3f58976706895382efd6bc1f1566d8ed07ce245da6a7d2e90518b13e55787e5d43f7849265afbf447e9b0c3b1fd79f4d26dd8867b60b8775eacedda5670b6d788887f95cfd49d7f6c7f8ca326ef8f976a634bf69c55bfcfdaf4a24d6fc70e71c0b4f1526c71e17ea95be11f8926a1d43f188d6cec071f2f441f9fbc54f868ef6954a4c1ed17d959dd3dbea6228a2480fe91368de382f63fccd7d64c6531f4561c61a2fbbeee05717c2000d40ee988c30e71dd3b8683f11dd60daca08b826b571a3e817c95d72ff009b69c75c5809217648431746679c69c4c72343d396978775c7cf0302b24f0e4c9e618b495d9f9b558429cffe6254c7ca7d7b8d8df39ccbc62d437d6c5c093c9f3ccbce69e867b91b1a915c0918af5a9483df7b4e166b4c171a3654cd8f684d13262c7562f7e62e0479692d0a0caf731fbd45083f937662c66b68cbca55f581839d7fd15be066744bbe260014c2962553deaa286bf83f65ebbe828ec0daca8a373aa7665625a3aa7f2bf0e8da8a320c89bb8d707cdd19265ee399f2ebae7360ee25c88913b7c37720e824501afde9e7d1c7e14baa079723f48e423bc9f11d50b4fffb9d04fcd93fb7814a622f95e6323c508f319826e2ab2193240137dd9dddd8636b4d00442239e13873be8f703175f5d9e67377037d60ddc796dca3a6cfa257f6824eff261aa79707f98df50299f0b727be243835244cd01b590075b80227947073b727ccae7bab297bb3efbe489277cf5c9fbfd96f8eec89e089c080ee5bdef79e8e132d58de6172d0790df163e7e9b7cd436a593a8113ce91a7a3342b007ba46f4175883b9517767c4f165727c32a76bfb3b4f52068cb466ad5965f0cee6fee07856d5e9c5e24f058fcdbfa3862aa40ceb3fa2ba3ae254a9fff9758151ab06bd58bc13f2c5615dd45600828a02f754df180036cc81a208a2e7f7a83a0afde28408955e3ff2daa87e64019d42f7a09f18e25e8594f2d0e9b0873ba83b5426494636a111dee3ddc3def37c107df7feceed72fb79c2dbcf339f65c2807d183af933c813fbfbc1932768eff59ab7b5c73fa0cf041cec616343fefd92118d4b413befe78b6bc47e19b605711bb1446e471c38ee63b62c7dfcf537648538f5bd8b14f1665fcbe5615d8631dfc3c011743c949f954212b0e1393ed9aff8aa4be9c8dd77a8bbdd09188eedb6d865fabfb8b1213460850eecc606a04e6026bdb92989bcee86d7de451b5ebbdf69b5846bdcc81cb5505af82ddfc7fb7ff30579f4ef0c7becf7863ce376c1eb5aa697ebf73cf9cd085e78f479f042ff9caba224770fc2002fbe302f3bdb032fa134d40730d131e17d71f80ce0402bc01af008fcc36f0723948e52e2c8e7b4fefabdf35457ba8a41e68517c01b632f9b9d7dd9d80d3e528f7a5e579e467cb1171cfadb3ec6979d63925f30363e3ec69b61586d6f17054717fb3c285f1e55f2d7ec35a80d80478cda52bde186b660b0ad7068f48f81804b01545a90a7f46ab93938bb7fa522c0bb178e8dec174b58da8e4005345c367c30c5d7ba5d680f0d79afd7de40b1301fd7f776511552400f358524f0ace0b68647a608e00f34c023ba7bc10f229361287ebb734b0a4ec48df770f00fd0ad5b1b91c7b6386465d3b05a2dbfa29d7acecb8bffbb687317854fc8f7992d7d0b682889f268569ce97107fa3171f28abf1a7b24d0d70d639a41a011be73469d4c0ede8cda6297dc9108e1b1d593a2841dbef0d4b722e19dc03ba4754aa4ebdf92c64d3cf699f0c010c991ebc86334bad2cf6e4fac20ad96e421b65ae2e80c11342d3994bd1e9fc9e2288b96615d1abc96e70e6d43075a68cc87c5b0d66e61c060e3f4e979e17bf9d1f3818d6a8bd2f382ff7c5eda8dfb30e7ed6e430f5a282156225f16ea06fca4830af8b9a319d7cd1ccd4d4ce4dea786655d20beb963a3905f2fcdaee70bd3af3a76ecf2f4d87e45873a0d6f4163a88a1a82fbb87f71cde16a59107ddc1e6a2b2fdffcf6d189a9a989a3c5d9d9e2dd479d6cd6399a9b9c8497efa9c591a923afaf375e7f646af16da74fbd6d713d52ebf95745688139df5b8a524b80931cb2a14b969de1673efd81e07e4f3363f9c4dcdada5ce504c38062b9c4fcdada7cf904c31674a5a844efff1155a4892628ebbfa2506937e7afd580dabbdbd085169af1cb67239e3e4e812ff2f1b707aa914f0f3c927e9a68548e3c21f09eb664a48addeb2708f18701507e771bb6a1257479675456f5ad8f5823d4cdf1cb380511539112f41446e053964935d2531445e989d23e058429d28ad12f9410e852436506dde4a546cac6a8b5bb0d5bd042b690af8ddad97aa3115bc13cb0cc9d6076f0928276057eac83b0e8c34119fb581575fbb74416f5bd1945fb7fccd7322dd742131a21712bd74e037499ba8b882aba9aaa0490cabacc245d20323b025d120b7cc3867d2db5561ddfc6b9ca8632f69aa14caf761a1ab0bda77b873abfab1ab40ba277df236ea258f213a2f737a9c146614996e90c37a619c5dfa01301a00858f13eda5348084b415f9b080d1d06ba75e3ce3b6ff05ff7e28d1b17efbc71238287cc081beb1011634327d0cccbc3e146a5311f8f17429cc32cc43f3e2c9bd932064751b4c2d38b7288085d9daed06528a225849a7e83a3676abb879cb9517a5a57ff25d359e3fafafaf506fbd75db1aa1b96353bb0343fcb749d9d5f595fbff7def5f595f34703f3c3d600ffe1fd24cf33cb23048da238bc7bd462890ffb56bffbda975d0ab1e34b2f7b2da06ef7dc9bf49f0c32fb49fd4de7c4d8f66053e857a2f452c4ad5d5562727fef8e9d1873ef3d75ea3e18cbad8ee5a05d98bc7aecd8e4e9bb5f7b7af2f8b12b939311ffcf197404ada073e82e71cef6fbd13f454f077edc47884777cf7908996c75d8b82662fcb8bc32ec3230eac8bee4448ffb1d2188fd8d287a804f751f1deef7079a159200a0de7f0df42bfcfb9b7ca3d4472d53eab99916b48390f5d781df345f0cf3d688a206bf3fe37f6dbe6d24dbff73a08621a890652d50a008eef383bddc27beacd980806b057ab2a11edb5132941f490eb6ffb940cf8392bacf291d9ced24bda7d548e0382da217e00d3816e5a65b82dfda22714d8b932d00cbd4e2e4cc17cf90b8665a00fdbfbae38e8f9d831e330cd6f77cbdd74f7d8ae9964128fec697be84fc35559eeb34ed7b532c0ece7a8b1ea3ebafb151dd8b401f033a01e127ad35651884749c88f9c1db944019a1693874d242352d8e5a60a3ce9a9ce6e0a8fc2aab82d44fe0b3bfbbd1dfee76be1d610da8066df3354c35085cbd2d7a4843b7efc166e7e18195aa4aa10344530c4b51e02db70dd16f048d4b0f118ed714448b531c3d8890147d1a6a12381afc332daa2bf95dd40eb078fa8a7e576e40d0e99c6f51facc4081a1a3eafd7748a7ca920409fac5e02b473a1912dee59253658d5232d8d75a9651e739b63dcfdb90ab247478a6c2754dcff37a7de43bbb889ce9771f3a21f6a579a87232b0127573154cdaf030de7aa5da94feac1af5a5da52bd8651d6fe6632354e4855b55f35b5f8cae9d9c2852b393bab50d3d654dd8c1be98fe8b64294afda59b08fe667acf8cc493b73e4cac25ad28ab9b616578813d76d45499bf1b4021aa3a60ac0ebb7babb29da7d427a31889e265c951af2a513fcaf36a34e62bee2a951875b527de3332cae5027ae5baa928ac53254e4cfc076edb9dc8c159b59b533d5abc74f25137137f94d85c62cc6eb6c663eacdb0a555cfb9bc9f438a64754fb558525d9b6bc954520e6dfb37edd223ec2fce5aa193ddbd8f535bd4ff0bfdaf2ca29cca9ee952a3c3b54fae115fdf9410544e7ca8a260c59519a0d2b3a32ae61b7883d6d29533b110ead1b3d8c3911280c05d6a43f35f52a5bad12329e4a7ed3ce2a44b1f58f64ccb8a9abcc8a298a6be5efba7db23cf5cac5bfb14fcec4ad99fc511bb236806a52a601cdc4622945b1f5b84395384bbaf144f2d4c2956a0645ecac0c742f42cd52a86ba348454ea1b0e99b3fd44e406d8ec74a4fd655d99cacca9c8270607012bc9aa8b3ef3e5b06662a3599494b1ea8015b783c49358a3124b3188f27b594a1c6d4d884a953d074805cdaced0c403de91f75e540c050094989a9c06b04d165353598cf3490016579359bcd5133a3e9713690c8053097117ff0c96ad8d654b18d2d6627bfad97c4e1e7866c52c22525a299e329340d13e78b5945a564a4bcb9e987e55e9267c4580776d4e2ab58af63235db94492a2b4da9d87a026e036903223e945dc7c3e541afc21f0a9dd2e438e06c528db3980dd34935265a69d04bef3de23d10a7693b3306a06b40f5d884a9c65423ad25c73138498c816a24398e7136d97fa7eccfbf0192b212bc39c48a59f2c8b85cfed9e9f6d2ffc3dbbb4039729de781f7af7b6fdd7a01053450a806ba1bdd683480e9e734ba1a8d99e99e99e6cc901cce34f8104969d8a42889120151a246a41eb4e48812649f442feb6979958695132991255b47f1aed34c226f6cc7d69164af35adcdeeb1a53d318f74d6717a72cec63a51bc8e2d27c6ecb9f756150a8fee196abd3b6403f5c6bdb7eee37f7e5f3cad28c5cc7835a39a7e86a47f21ff4ec3e30732148a4672cf0aa88c16d069844a5591ab5e985599cc1088cca7958ae7166b45cf29d661982413fe7607b0c5ba3798856107026850f8f7cf79fff44bcffd530f5ec3a5447ffa151fff658f691adbc32a0ef86fb08adfd56c369bdd16a01015bf1fef4196f5ca2b29e9ed7c40c93b29fafe287733d5c999fde3abf1c208c732219b2fdc42a8cfee54451b822f5fea204559be02af62cf2310eaba352f8c202fb062050e7e94fc0f7a4c010fb858d1fd92094a4c17f2d59947e7a55475530686ff269c98fdb359cf33b48e82b161cf324346684683600e9acd70ad058169b0c55b1c56d7ab95aadfe6a7e11454995f8ee1cf6aa5d48f6504856842047c0788c9ba7b9a8537806bded1bf8deecf8188caf5ad6b8dee81276d571e9c0545653a7bd1c7d00aff5e0ca5fd6e47b265ed07f6c3261ca2435489a2f08c02e3e961f2c097dd22d92073ae5ba4b51ef20edf74e7c80611003c875399cc54146f27c0dc09df691b2d8b9cce212cd14da8f9fad910a8688545f16a7e127697ee8fb77777b7db6d2eb082ddd7a5de1b64048c855d92eb48eb5ca41ee8b33f0ca39c02fb4f53c46cbcb63fa7259addd2afb3e7fd60059f1ccc77860bbe361a095fa8f4a8c3a4b548e033b50c7b5d7c7a1104919f0cc72010fc28ccb60641a6255c474e5afa0230a39ec9a0fbd7a3037d1e1d3b12b54341cd5bfbd081361a476b08f9d85b15af12f4119f95ce47de728b6e204b04c3b32de0433017520d95cbb36dc0c406111a3774d8dcb74da2e30ea19474b04e4cdbe3ea3de900a594428770855fce095c373d040f8da3aab0ccb15eb256c40e448519a33860bda89e8303aa61d8e3bfb327a5671becdeb6e19f050f0b8f8f6a90b6b00b21c3de13ce1e2c4de4fcb48106f1664f090eacdbe3cd6e948be721049c7599809badb07ad53d90989aa3023dc036dff1a5ef7dee4b875f99b9fb847d29be706965dc3d166df6537f585efcfd130bafdd3f7162fffa850b28c49a95e53d853e89fecd51e51d849aad47c05d79a1e3c05277883eeb45a1617df4d9e1ab7cdad8578e3e7b2cd4ecd714151346884e166627002b0f6146694cd7dd9839a66b7195ea58fcd3541a635ac2d0928c09aa100082f9b5715d8bf12eb84030d6a96aa9cc667157d76d55d5b0a2008665455c4978772644a0b54a24578c1991470586ab028a72eceb9a25545130004cbc6b9fea1858ccd50d5ba52ac1fc31b6a68f19464ad3e3aaaa138c092196c66c4db319b328255454cc56f90ec35851999a308d4ccc1a8fd913b10981582b006bb14a884ea94955838647b1228f1a2a35fb648a349a47dbe8719f876ec0ace2b97de9eafe7137c219d4b399152bf54a441176a310ffed089d9ef8ee88092a3c84c98dace06b1461b712bcefb053086245f60a0127d47ee13060ab0bbef7e4a61c4efc903076048aff5e27e83685bd42c0e8be5f4003f8fbadfffff0f7e17086986c5c42ea8f5b1371e9b299886524a4beab99648637c0d0657ced98b0dc81cb0e6b57afd60ee2b9d8b844dd1f67e1fd16cb48d47dd79a8c0b4b6a3c678d4bd4fd7166e2026fa3de655a26b86c3ff041e2301fe0127a017d0ca1d229e05ab7c87eab9d82aacc13f747331b4e0d976972f25af1c9ff8ff613ae50cd8e4831676e684972a1ea5b5d56330e0bd6579729082be678ec4dcae6bc9ed44e1b69d33de98a8c7297ea5cd7b228b34dc214b8365649bb27ddcc89747e639ce884526bd2a606bd17822be0c60fa8a13a7958c1786b213d1b5bf965004c716cdcbc74e214c665c2140a94d86642a4a02b54cc223f4f0c66da58814d2341292109715aa7cc56131331c2c849c0a6bc02d65fa3e0bc039067496d612b6ee5fb64e09460ab2d247b162d7f582559c56725e042a75348c261b7116575fc17d7053e357e35ec2168f46447d386d7fc8b6b7cf6bbfc0fe12ceac336588a5aca6b23bdf1154f66d95604155387cb55bbdbc3cef867de4c53e9b39513cbab776b1d893edf1af6c667572a27cea6d2a4a5ddb3daefdb16b14ee5d9e202f407688571547f71482821941caa8ca9d1eddf682b4a9b584cb3709bcfc86d6c69cc2211ddeecde859f41c7a9788a90b21b906012d863782bcb0e18d10e86b68237cfc601c07884c32af97e9d50cd9cebcc89963cedf4222d043b0244bcab4305facefdee054b30779d92f319a76b3d9f45ab750d36bf5cd7f35f4b0d4102a11b44627b474ba4e3814433da152f733e9a54251a94966b1404a9c94f9ec70400df245c8679c3c3c2bc657dcb2e279273eae7e43756d274fc8abd3f9bcf3c1b8ab7e03ebaa197f2b5fb774fa05821f3d54e07d0a01ae5d80020d05e7337197fd1e73e34e3e6e9af1bcc362ea1e17e90fe3966a607e4611172aca8b0a56f8d9686c5a5b70426f2254af15926975116a5cbf2cad65842179631304840e8d244a47c47af9bd094841b67908cbd3fbfcc576916dee51032ffd65f7c04844511aaecb98a64e934b93ad99e57ddbcceef0134b37039ad3ebbe987e7d80eba98dde22de4631b0770a2cce9eab88cd967b6a5cb10f4ae00c845002b33d7881de43c4fb0b2f0a40050e30c54bb14422b68429964a92ae2d638add227d332dba98e2654d97fad32bb814c1357d32999cd4af813c60a5b45db109bb5aca92770f5e63a6d9e3c0554b789ca5cd302f45edcb2f2f8adcf2cbfd08a751edb10f3cf8886bfa1c4183b4c5c11ffc7d7fe34f074f8630c0617a3984be94f05c2bb42a44726ca8af7f7604ceff49745ee0fc47403bb974e10eeca706f707a246ee28efc08f13131ffbe147e8ddfef11d62ff1fd8468e5f991320e2c126a0de76f7c087aacf997696e0d94ff1ed4f05c9be11886a34d01eeb47f21efc343c07434cb083bc078dd09dffa53b243b783e6cc113610be6eeb0b2d0ea5d780bf5b6dbbd4db936b6510eda9013ab7424c0fbb6fc59303792f46ae048e7914138d011b456320e0479d081dced6386b97cffc520dda88175951a785fb45c8e902f6e469b623f929710e8d631b42a56e8880bb7ee04f616ae1ad62210b6219892743099b67d6df9f43357ae3c737af9e2ab65c2a7c0c71c7bf5c54e8f1bf477eaceab37ae3cf3cc958d573b75f785abf21279f9d517dcc0cedac383cda2a99178b0492f554c7a49af98f40600613b8d467367e7e6c1c12018acc80f167f7db99fcf8fcafd2c061a71654b5073aeae7b518ece63684b27a12ad8497df9f91438d5286d691c9c6252088fd1c45205b0a2dd3339454017a4984c0385003022602824296662c632931400f7383141019a30409d9cba5b57301e4e4e251a4d4f59b13103b022292d31c4546c31c3e062b3356d6115dbe3ba6e18ba3e6e63155bd3168062e89a85554be1d7c75d1d04a7656cd2a11a81bd6e2b121b7515a152b51facd5b7130951ad37c87d4db55c0b767de8cbbed8ea0a1c46bb8e159fca2ccf342294cba6cddbcbd5df74e9d29b7457b4ddcc72dcda8f42b1c64fb88575539d590e23f2f87f7ba67dd7b56b77898dad05f744bc1f57a78acea3fb11a2b3e55a92eb35fe42cf7a46da8c93e40321b0d8861298c0190cf2c9533e465ae073e9483fbf6dd839d3c8d9beffdf3f6298e2c8f302bdd8c7c4dfdff13c6135cff9014d86699bba2ed27a7d6363e4486b6f5d0c2b40eb7b9e1f480a614cc02fcb98ae2a2b86f0df7c2714b0fdae5b95ced3f42a571155fee970ed325d9d5de59fabb355e12ef4b7d3abc1aeea5f296f4caff67657d3d54970aaa94ad5d799226409d82f0bec6b31bc982e826dea71a514e753083da9c474d59086212899a784d2a6e0a7d2ebf9eddd35e01399c1defe55119960695f97cbc16f6a26f56f89fc53a0fb37c947a86a1b84e13f4c39bbe74f82f28b0a517a71944d68a0527f6eca4024833b22496538fa3e4c54f9d0bb7b11682f7cb897aed2ff7b30b0760ea50fc829ae1144e913fce181607c68d8e6bb3f3498c0f2e117c2582c1cf68134caf3315a0f90d67a03f224f019542a54a9dba4d366a2e1373fc4066dfb0b3121cdcd971ab6d9d839c17a5131bdb819762223d844b6167f8289cc81b68d036ae056f78f00354c7b0ff6b448ac8daae375dfc6c4f28e148916b622f5594267d15d08c12b29301b8c24c45c216cdeaec4116aa5ec4b2f41f3f6e56cdb46f750bc202e7cdd3c4480e66e75e065119f83a0bc51afa8e54a1c2a2ccfdfbabf44848e5bf8e764dc2eccb7e6e65af3057b9cb07313e6f274e921db7ea834bd6c4e9c63c026969cb2a34f4de94ed9599aa8bf716b628ee9538b8b533a9b9bd87a633d6a5364c84619be7ebad2e1e3241d41b1ef948a02280ccb5868649b370e0f6f98361cde38b4bf7fc3b40f1b867d78000707376d3377f3402858c681341588f9f203e869f4c7fc2d8496e274c611ec673d34bb73fe1a19355b179917b53b9f84d5c1eba2f7d7cfc179f0ea6e608b1efdd415a8d8109aabfbadda239f591f308957a266f073500752d21c4bb3351014628a8209d628d5092654a563d6d8ac9d988c539d90b8ae173d5557b0c11426a620450012635d90a6114a68c248e663315737d246bea8ff3a315485f167a9fc71041353652655e39a9ab268d27a0d101d3383aa294b8f116a10851145678411d5a0bc971243552d95c635dd8dab0621ba4a639a96d08c8ca96b26c694f06b93a69e6040a74fdaba2ea6428510cc30d104711a31a425db34cdb99c6e6245c9ff2fd9bcaad9aac22b2cc9df18bf124be19b125dd72752635bf3efcaaf112c9fc74b62f22a601c33586ecc9d4f25740095ea1bcb5692a89aa200c60abfd25425b51b562c8d3f27a769162698aa2c3ba69a310c0aa5da4a39e1d228ce5053e865cbe82c7a64582f6303fbf5be408041ad0547ec79fcbdfb26bd806ac5b4ed970395c97e3e3c0673010d9a6d4a531f008e6952643bec290b377c9a839661ef05f6eeb66061111fdd83c01aa850acea2208548bc4bea4458ec60ada42f70aacd3a0525e2de5e72aa433a9de4156743c169ef0fa39794abdebdcde35e009e1a9c9abdbb2af89dab53acde6a1d837612f9a55f26bf2f40ebfc13640864a34bb1ddb6cb783ecda4623d76edae6ce8e69e74210256903db0fc1e820ac635d4415540397260ed85d23e1b575af9eea711254c38833383cbb842d4d8b2970cf961233b418be5710ddeee83105963795b8aec5f0abb2d8d2b8d4d4b9a66a06fb069cd32d43fb232e5218da47babfaf5b06fbd32ad34428079fc33af0b7d0414fa017fdc8a87529e357037bb994f1ab02f87c84f36d35edf4cbf855372ae3ab996a617583df97ba1dca15cc4d1200c3560511be10fa559f08df8c4ddb3697f925a53e17fa29281abf12a8cda5fec94bbaaec02f2aba76f7e4bf19200c12bd5889254dae598cc704769dc594181364f6d64c84ccde188f638605993d18068bf5c8ecb9e06f8cc5aca9b493c9a49dc9185c1d454e14d5d9e26813dd875e33c4b98687d5e4a355eafe5061b7af8be77c356fdd1792a94ece042aef661095b019441d6c9e21040ef633f97c66dfc9e749a4a7079c49862d7ce5a36e0ed84ac40fb4036bd2cd1e631b89e89105f426f4ae11790cb5c14c233a22f35f5d84db009af4e3020c005835c27424a3b705af1bc8ddde5ab878449aeef9ddd0de72a697b626f24365f2129746dbbddc920ff7258b5f58d83a2aed7c77fb429860fee1defdbedf4f600fe57af96e7d985cc2681f795f730707bc3c528234ed833da1bfe544fb7f0069c8e5b275a9eed62bcc656e7fa72996443b5778e7ca8307d3f78f7df0331f1c6bbcedd77b0602dbecb6df4c75b27eedcd98826d541be29afbdff6a66052cf12b27eadc51b2ad167a798106878f74886f582df8f7b313567c5ab6591f0fe59d5e94f34e8e75213868b974c0115e4bfacf762d2b40d69ea32ec1b32bac8df935b72a6a63a79cfcb81f5e793ef213abd11e89b2f05ddb6d59f8bd9815bd041aa6031e27558dda830b79e9a5519a899aa1bd180a505bb67b4de18c04a2a44b3323bb1d8870b2dc54cebddbf89c5def1909136257792aadeb54dd5cdf98533b039dffdc300320936f8563a9f876639fe85139fbd850881ad78f9575f4f880ccdb7c68d279f34c62d19aabf37023629321e094aa2129ae7da5d85b9110dcfade342d2eb872f674ea95e613ffee67ddfbc0f10d3f28e39c616ef5b98eb36ff83d7fd5f831ee875f79ebf3c7fc1bf2a6564f29ab67079a1fb31e05ab86f76595bff336ffedee750940b2526986dce23548fa87a2b20f8e4b8f0e9f6e786572290c4b53e40ef5ffa843f217dc24cc115c37e8aa58ca702903dfb63b29916b69a41a37ce113fec4f80936e6d8e689a7cc31f6940c526b9a7633c0f90e315afbf2832bb743158aa6e01e8579e3e7dc1e9319dc8ee6da5a11dc3b862c941659db27d032aaa133e8bcc0fbf76a45ead58aaee055f0151b900a4dd129d6bc82afe4b85eade804225491efd4f92d15be05cd4ea7dbe97472cd66ce36db1d386c77849893ebb44d7bbfd3d96f9b76675f5ed0e9345bad56cef3f64dbbd58046ab61da0dafd1b2cd46ab750b89af56c3f33c91de1dc96f967e858b08d507bd0a4ebf5d8c0e12038ff03f4bc4dfb661dbaf11362cf1015eb01588a8814931229f7aa1187bcd36e441c36ef6bba82338ed6d94451f415f4128c5d5af68c0513d0810a2832ad31d68681b6b3fbd8696f21340835b6d88f268bfdf9c1c2313cba96c2966983333c4d04dd39804d09889455c125693866e33625045e5ba17d531e1da8dc15493d298a68e99d4b61e06a261d524ea98a95b58d5053db4aef2db85f64288ee5faf6562aa2ec278446490e118af2286ae696ad23052bae1c668af34703a31158b9953c98c37955dcb2e5d5b8a8f2fa50b974a73e77e9b1abeeeb33c977428c1329c8918941952b1b20c961dcbcc8fd93a50555b5fb212837a952e18b31553d726c6923916e855e36390e7bf337966667cc5710a969531e2e654d2f5a6c6d7728bd79622fed8cfa277a117d13f10fc5395b2ca24d3403539c997cafa46c6cda4bd53504daf39ab6bfcf31454a5cc9b59f356d3deea5a756db57a06bcea29a89e01b953e74737f8b6883df1d6d76aab6bd5d50df1ffba770edccc467d0b6ad524ac004b6e64dc64bdacb2e43970930a02536fbc70e2c40b3b86094ad2bcf2a63cf8bab534ec410f36d9076ae6ffa6df74c5482addc3d9ddfaf96b9337ebbbb393d7cec38b7a0caca9f9f9294bb1f46e9b0bb49662e69786ec85fcdf72de02d3e45b3fd77d67364de17e2d5fee7efb044d67e14c39cfbabfd1b7c64ca355b48e4ef1f17d3c4f4769185bb256a8159285fd015e4cbe0567873027f9df4890da837e737f3b0bfd32691a8df3f28dc4b6145c7ab729f808fc4bf17738aadc83c09828dbee1e1cad2f043cad555443a76fdf86a3516153c5a4d75cef6f1499cddb8e967cff1602d469b7db03f8c0a2398594db87e8d96df9b8b103652cddae8ca9518e2a28240b8046e967473019be925246db32eea33da07e6b887774f70b53580df046f7ba50bd1fd1d3eee4b78fec7ab7ff6d2fcc1a6c0df7ace86fc77c3eaa81df3ebac30400bd367c74642f097ff8f66d2ec758f9081f257ff5acbf5047bcf303d91ce68871247eb407a0d2cb9b177c4dc7226b79c729951f0d3c147d60551feef88e8e105bea36685c47a374a1c1b2968671dc7b81adf56361bc7291a2440af899b0d8fd95a1bd82f4017c8d1d09fb3558d663e1eaeb47a3829d84e651c85d5f3b022dacd38eb87822885e4b7def25ace070bbd687328a226d593f2e64e0474715e96b4755e2432391cd3a4bfdef25785b325f18c97ce19f1e4fed8747e0a9a928277877da68159d4557d06bd0e33286b8167a70c388c2680c61346a5030304758c33c88aa5c7d08ef6eb1e6b951bde7e3954a697dbd54aa356b25be31b09bc8641209d74d740f83ade0fb779bcd5d7fbfd9e277d44ae532ff2cad0fecde0c6eeaee055b900b1ed66985a785dff7000ea0898a22332d647eadfa399da1d21134f7b7f789ce45c87dae5536c464dc306d823f7d008452020744a3a64c5a6fdb26d548c829de402ed7c5f89c179d5882a98ff5927446a7e4d47b493b2e1c760fa2939084f138e37781d1b63d0903bb098dfe6987dffaa3636d81be390f45f8d1fdba889e1999c3c36ca85754979ff01a04294141ad6e0e977cb876129090df1ace498d3baa8a128e81bcb0318c00168f40dcf5027a2ac5cc08b5bee299f617fddffd620f31eee65dd79eb972e98dc63a4da7ce49c8f673636376a25e2e2d1ed8c6c52ffae5f962085ef71bebfa9b2e5e7de6b1bb16cba57a22211977974e54cea6d34460a11cc02134d192ef0fbf230ba8889234edad859783066cf2f66d06cdfaf2f95ddb80a66db417b742d465e9ad6d052dbebbdd96f16e4688c3d1630a92f8705cda1b1513d403bf4a0d6c0b84382150f741cadc940058ad75f1afc9b705c9e5c00aef79deba770bf95f7b7b079ed7ecb7a94fa393685be2b3277b2102ae6f2a2d06a6d3410cab4133713117180377406c4a6ff5416053b57fb5db96c2b3e8c07df153ed9e7df9a01790d3e9b7e9f662e666c42c7c1be74773872b0f01ed94bfb52f8301057c8bf0ab8771b96dd48636da47311997183198368534c53ff643e33c8476983308950ab570ce8f4e8243e986b521c30b1c761b2d8129d3f6e5f11d012cd3169f3d590e356ca325cefbbc29fecec1809d45439d5bfbd014fc0d410cedbde861f4ba7efc7d76c4762acaf6103d7e0731b8bf2b968ae1bfe78ef81efc03142c3ceda10df08295a8111cba357c79ef09484339e4c1a1cf3dd0d70ef523e283a3f52a45da811dc15b503ae278d00e9f1aacdf510dd1fdcf030786eb1f6e84ede0f52ff9914bc236e86112252453d9f0ac131137ea5ca3684700176508b169db8fdfb83130a96443082468f03e17cc75e990bd7701ad0824cc4a2f3428cc5d17a4b545fec16737d7ff0ba1ffbed6263a7d2998e708fef6fafa8e98e91a62e3c60dcf8331915516e0aa50032fedececec746f0a5ad06c23b7d39f7fb21e65f90cd25f6b117e1bb7eed602077184e0c667b059fedcc38019250cef05a9441fbd4618a506f9823f488516fdd5731863055ac4544536d06b2f82820979a9e83bf0fbcae489f8ff29a8840eeb4ab1978c1170e87bf501fb3d1c1af61788412923d73e1ae5cea70cc3c39f5b0eecf51ddb2cbe4428c6170447be4f998f95735f95256ef6e3b3345195cf63f58c9bd9a86fd42b71a8942a54c414092bbdcb4607391c765bf5cc6ce1554bcb8b854b3f370df144f7c7d67d771796660a258ce3db03810d6839a96027932994d797137f927e79e6b95a65b65cbe3c53703db86b3090a12f3737212c251746f840dd810383fb43e88bc54660a8b68d76b8f9c2a883467fcf6f4511311bd1802caf1793d11f671cc4ff0f45bb0fae9fb7db0714868c9d08023a4ddbbe10c16d7d3ca2fe233fb8242b56d7e337a371da535c3ea987632004678868cda91e2b64b25063816c5e391802175675fce1f68169afefb5bb373d25ae43c3b0f772661f56b0d4bbe19c6d76daedeecdd49a6e0ab4a4fefccd8268c338304740349d837ab5be0227a339fc67815553c7e226c3336a5ceb1e76f25857cf6b71b275237047bb2f8e8241fe9caae3afc35e5bb3d5f334ae6f057de16f328047a21ba3010cde3c5aee614c051db2d42f6915fa77c10b1144ba2f072215dc08a27bfb5159d7a3bd33badd570e2ee3ad0c454db803f25ba19f60add8170ce1859dccec76fa827a425468119814042b756f8636a56839f2a21c0315becdc008e54ac886e918bf1ae9f5038bd3a18fbed2146c6ccdde64d78b5dde08309a438ad3407df7b77aa2a41c03b57045d8dfe315958eb17e13b521dd6541dc97e442939ffe75e10134dc26d0df2683592d95c1c9e030e80fcd5e92cf4fd126d1be3ac5fbeae0ec5aeaa7d91b28d641f0ba6db0235de235bdc37db0d121e44dcb36c40aff926147d7a00d5fae1f85d3d16f641890b48b230038860eeccbc3d216ca1b4f6e4558f9a2ed9110f3f6506ca03722f683b75320e58017d6ddd8efb3c6b6c313a81759119aa1bddee8e22f8686f371159d45d7d09bd0730895a200f147c72647f2fea20e7e18c8f3e4e2af8f6a17b543f5b9def7b7162e8e48722278f6a293cf4c2dcf4c2f4f9df48767f71bd3cb5399ccd4f2f48cfc9e89262498b67df25f2d6e15faf3871a01f1643ef3afb44a6e7a79793a7b6237b80bf69767b215edb7b54a569ed17e4bab646796bb6170552fcc2ac4c53810dcfd67d03de8553e22ce6c399a3f39d00079d8841ef5f211edd067966b672b5a7ef55ee64c2ecf0435e5dfe317ca7951bce5995b41d652f0f797fef7c154e6dcb25e1617652bdaf7b41341cdae67f3f241b75058b9668455523e2052c70d7401dd8f76e5cc21bcfeeaa200f23db2aee720802e108b40c42a19453cef433f6ff38ae59d663c6706d594df138e9a4b3417b7f8de91b585a6a85adec96bea2ffa4d93ad68dff7dfe778598f8f6d2de445230495ee86c499e0f5428922f15c2276a41440d8f813430fc37da0cf1f3ea3ddbbb272aff60c7f6664fbc73eacfbfed2e6e612ff8da5336796f8ef35799fe65d38ea87994397d07da811f5311cc3ad93ea21ff0b9d262970f69d106b9f8a7091a2e3417b9802a5979ed894b3c77ea7d38256abd51240e89f149a507b8822e565de522f17643a9e6d769b86ed7939c8766fe63c8f4bb1a67de0796d4fcafcfaad5f851fc387f87c4f4bf58d72fd1c545737ea65d556d4b4cbcab33ee4457d63bd52cfac9d8794dc861f77ffb6ac19aaf3eab8d668b9cf66743da34fe8babeace774c370f59c3ef7a7f185b86d27fffd092d99a8b9b65ea838ef1837268c71c3d0278d938621b7cbdd6e3c6ecffb58d4084107bc216c5f1f90607b77effceeeef9edddddc8b5233197fbf457de816e21b1f6a07e7cf33989911c222155599051ed06585902e704da58812660933113b740c1915d688282f708c31dca18dd03cc08570cf7823d1c29eb5cffba161133c2454c4a17ed469089268c54c1e64160c5f27a66ab200e3af88d2c42a56a18fd8c7dddd6c77c82cfb5718cb1186e0bf03764da0a9400a99aa6de429862fe784cf1c0f37a11876e350ca04e09d4689f1f5181de7341e84b58c5b7c473016115cb5c3ef86ff059348110b093502f7385320a1c9311c88af0df9e7c7cecc9ca83f9a2ed1cf85172df5d7c7d713a65c08927c71e7fad91ca17dfb078c0528693d7d8771dbb987fb01ce615b7510c4d08c687f3839e5af7f67edb01a4bfdd43aa6954e04fb4f9eb6cab8cc16786ddc81fdfe7d7edf3ebf635cab7a9e631956fa80cd04082686e9fa9fc692aeb9333a6d073e89d08d58fd55bdc5995054801e16ae52305f8c00cd1399f9d842862808007f5a6952820c049f00ea2342e41fad77f35c6d87b0100dea38d197ece3bbc979a6a22c3b73309d5a4b9d7819fc96f8cb14f298f564e05fbfb8ad21ec91de369ea55a211c2c855559329f444233b5455de422693997c3e939c246f515492d8241a91619b9afa186c8c17092332807007fadbed2a7af076ed16f554f9837d0ad63736a126d8f393cca94700c77025e92647b60a4ced89f18d7fe163d2e6629bd996d7cc7afe2e5b6ab54657fc7ff4a78d275fab60db3c34ec7f74e9b1c72e75bf9f3c3b2b0c33d052cdeed72fc1fca5eef77d8e7dd99f73114b9a27e26cfa59659c481f1ec42319e49669067c214d3ff6daecbec49794fd8ef8d796fc3252fcbce9b37743d6b43b8d5ca37ba3916b8aaf46abd1e8d76f9f46ef473fe2ef2088d2f3ee2c53ab12cdd45a9dad55ee2453ab14581d924581b4d84bb83b2edfea0e8207d7365e59f0e0bfcca9719d9a340816534420a08a15be22c7b4d8b869383a6618eb4ccdce1155511855080eae565481252672a534cbd1f50453e35a3aabc2eaa169afefefaffb7981ff2766041b5435a966f3590503c18aaa508b3193604614ca7f95a818f32268948f2f5d25311d5bda5985a80a6598c634551785e3f752451ce4ff147e3126864a132651f11f38d386aa8a38352caea5fca15861846a98608d69e34955034581f43f48a645f2988c962318534501d9064cc15855d5b1987562e2fef4ff6e9b0dafdbf21aa11afa65aa29fce93469114d53f86fa9d359d3e60384ffb2221751ac280ae88c262d7bd2325420589dcbeba642a9686de023cabf101485891f4caa1179cd4493680e3d142002c929a23e34f3575885d50aaf2c3f1562be85fd99482a83996de7bc06e41af36c98389f606dde91599f0ba1f7622f6a3bbc851a5ef39dbf7b00ed3bc8568dcaa54be814ba8fd733753c0f5baf021b9bc0e89d34ca87f0c88a2c6cf1592eefcc6ba01ed310b014c1928f80da6b5b0bb2224e9efdf0d8b688e4cf37d1247a06bd701b7c0a96f6f5998a9ffd595d814ab1562fb8f515a8acf2fa56e3c04ec36a4f6d10586455a71f59fe2c54585fe681a05cba7ea61f33a4cddb671d3209aa61d554131366831af8ad3940b4a026b48b77df7d319623094398583585006412890cacf34fb2dafdbdc04f031ec1d73771247146b294fdcf8aa224328aa22896d1506d2ddb881798a95816c9c456a7786f62265694dfe5cfb02c11f5113fb914fa7e48243fee12fa1cfa3c42a55ab156f76ab3afa425b828de97240023f122bd2164c76840b5fc9f4fdde7fa71e3fc1808c7ab15a17133d75163ec98566b1bf6bf0b5bed23988944d54ccc18d3040624c1b826124c312558a7cc2284280aa818cb845355c1b80a98ef628d100d132a9014df7de64cab996bac410cbbd6ea14efde5ad8b2b118ff7ca76de6dc84edba76c2053e1fcb186f91c01ad7b4a44e74fe404c415108c19646358c553e57f31fd3298db1449c6a043385178361a2ab542c219fdfd888e6a45a681ccda153e86e1169d113e0dce8888d6ca74684f247a73cefd0a70877dafec6fbfcec8d95fe80fe6ec029eeec07e91a5e90fad20e366e0d20cfe546728a4b2630448b957a8813c8fb8b3fb1d2d024e15503df5658f43aabb875b70887b3cf5d5d504c957780590dcf9ecfe41598ed7e8899b6a960c52b2f9bbdbcaa7ffcf4e5a9ada79bdff1fe32f30ca50a6050ae5c4a7f1426d2989147af8312d30d1becaf06d684afe7fff107bffe831ff8f95dc2c666a11ada42281548c78b90cea47ad890fda2a54f8e140696e1b5d5e2da6a717f7966667973ac79ff5f7d4618573fd343fe6a9af6755f2efc7762895dc92face46af59ad57df633824dee89cff8e7af3fc10bf944001b065a5fdb5e4297d13308959c4a6d056ab3e58ac392f575313cd737eab3e53e4157b8ea424762b527e8c6a1985619ad24ddfa70dc447fd4311cb4cc388ba9cd75589ee1cb3c446460e9778c1c50632c66750f5aadbda10063cfb47ffd3b973e644c25b1f2cd4b303f0b18669699a542281b773bbe9352515e2b45e3530a4e4e19dfe1c2716528bcd9139cba3d6cc5b8e01cec57e45245cc86184783f4ec5e72cbdef3dfe24abd10fc9fff16f1b77af6a7ee01ec82cac4e657e47714d3aae7e37b50dacffbb26d6eb33f68e82f0c3a2f0ffa33f18edc02bbb70fb775fe41643baaa7f6fb2ee7d0225a13f9b6c3919581b3a23710ea129f25b9beeaacaf56456468303d1db568ff64106c3e4af7cd0e8f634287b1287d3e39d3fd155187c783e0b559e8de008006c19bf0b8a8e4af9cf1a51079638851d5f331ab417d4b12d2b434845f3e8278d495e0a7b4709c1419f8cb3bdd3d7862042f39c19bdd2f093711b4ba5f1a7d0188b9a1d3dcc4068de07c07f8df9b0217b2b5391a277cb397532ce3f9c6d0f3e883e8d308d5251274141bda1db950dfe1d2cfff0fd4c0e8ff7c9997570e65e30eec2fcf8c732d442542a3a1cb269f66344aa4cc4ff90ca1005fe55535ae6b710100a162459996793c54803e6b4231113a065609d529d5a96e53556d3f2e1f0ebf14180b8d9033536cef1ff8376300c87dfa3b98622c552d264197556aa8d4e09a91c49de60b3cb37555e72a18a698ab490a5530973d14d52454e3b3246198250c3d634d71dd9062b8dacba2bb691b3923913072fc1db1884f6e06ada3cbe81a7a16b587e796c1b9a3e8168708858bf5c1f8b8f5723179c483a2f1736ed4f1e6df37722edaf3a381c4acdc163e471fb721bcf0639e9fe3ec3bfe73e1f5d0e9a114760f7bb7ec8b4bfddb043766700fe4faefe8fd209fd2c2a2f4e14962a4210bcd0a5b0a0a50b46ab5a21366af6c8253776b9168cca2530cb2a824cfa89f46d2f43c695dcede6c36c4706e41c36b795ec33bf0edeed9ac6f71ef3673392f07d93edfd4347a103d81de3ce0811e11c1c8eedca3234d1695233c3ab09fe593a89cee83ad6bc7797598c598c50e07dc3ad0081e61d812d184b7fa8b53c7bb77a6f868f81f86dd3b08e9a17ea723074da379e4a1b3e85e74153dc06725bfe37a5174c492e02ef6211f36415c52f78263b4c802ceb7708bd62b0c985bcfbdddfb27a2c3fdb3852007bbfb79d8f2ba9f963531b5f52dd3cefdb1d7fd6b29168b7ddbf46febb69fbf3c0fea37effb66739d37c6d38b6aca74f21a5b9c11f24df7a6697bb6b12fc51e71494b6cb7e7ef7d0e1ef8e67ddf8cf2ff8f4bdbba506799cb8a6c1aeab5ba5bafd4cf818244e9def737d9df7dfb43b9e67af6b94f79cfbf8f69d0cce435edef3def7dfaed39af997de8b9dfcbfde47d2cd51723731e7d40a07185aa7fcd73f2e056dd216e4fc63540a7581bc1e02eed6c75e71cd46b9e73bc6dc429d656a0e254a2e6b8af05c00f2fb4355bcdf4a68a8c6a6bed17fa4122e0cc1127463ee4270158fc7e1debaafbb3bd90979fcda886726a7f903ee08bb6f9b32ea83a3eb53f0af3931ab8b07f4a3154707fb61738d37b4f4d844a479a556a9eb396716b4184f439111075dbe6e2427bb0d2c50555b278055c1e1baafb27dbf1094346041813f1f62747b7907f15347b5735062914449b79a6fe06de626fd04defe8e6e057f1b6905761830a9b741497f7bcc883f97be84347c7144795d4fab179fee2abb62e0e7a6be212272d6ee8c3fdf537c4d5d5d5a1f30112e2393fd4e093c1b4751474c042b9742a9148244e95ca0b91ede7fce77c9fabb59a96d234f1e12bbc3ea5bd1fc062da211ab718e847821078fcd1a5c58552b9ce7fa65e2e2d2c96f84f1ef6eecde71d5c98b93a3d3d3d7d75a6f067a1bf1f87b1b54fa38fa2bf41c837868716f76a606b790516f705b89dc5ddbd9d8fdb87d8f93bb7ad1f67cadf6771e68cb33eeb7b607996d6776269b171d34ceb440dacef0ca4f5dd876d8c9adfb1a9998e6e24d4d70de0caf471b7bc8530ac504c98222dd33d4b3bb584a51df0084b3bc181a55dc14c5c6f503561084394b8d75499ad31aa0944378a8980b5ff9cb09bffdd9ae2f3fdd329efc9bda9f69fdd81e15db314a2ca5c780587867705148daa29cb4a52555378e3d3844598ce056e4285511fa1e85cbae6fbeb47a3ee0f21f787b8e55d0138b22f86487b2793cf676ef08f1d79609f7f4a50ee66dec9f00f69936a86877c1ff4a1f0a9a112ef51fea4b3518f400e6fd4e130ffbefbd74faedc9d4e3f72c1b4d2623c4fae8f9fbcf0703a7df7ca4aadf1627ebc3629af30cd885d661c4da2cb01ca50cf4315c9ee497a7027d854fe6083433ee7afb7dbeb415458b6ddeefed11d646c7179bab9d36d355a7d39be7f7c3cfa94782aaf0fca8a189b31f411f41f855721c21794e45a225d814af5956a843d5d509d2d3a67c00df44479428ef0da917c42ebe50afd7fa9903aa32cd23d85f42cd7e104f8e17679062886df54e3866609980c45a3d452558b6936534d4a3405e3a21c9b2a261ad12c4a09d73a09d608d502421e3e465455b5752341292dca69c012f44471c66254901651da3d243a25e216aaf14943e8b62a25266349534f32c904a4e09218a67c6231f87a4d54a19e12a17d9aaa6aaae6185359e7baa43c02554c440030f32f01a906798f662ad8646a52d7ec505f967448314d4be8c410ee40555484c6346a043f91e73fcb08b19891a4aaca349632f5314d8b535523d293c82bc612ba95d6d730135ab298eff81c17d3d498ca625435f8f42c50516c434b1bcc924c4b7246a5441a12b5984a4dd17c3ad1d3963561cf718d5ac3112ecb65f4b8c8541884d50df55777c8ea921cc0c40d223847860c14e1b0fbb12003f09160857e24c80284770f1ce87e4ce80bef1eb8a511a4633e7a31c87f332f3c1235d580171e1930733d2aa2c96fc838d0c0bee9a0025a11594ca854800a0c59fe2bd19ca5a813a014067dccaa0e8becc061f719f8c776f791882be0c7be23e0ad814300d0902300c1c574771f2e469d0187012f42380387740b0162547f3c7f0bbd55704a87c88d1541a73b1afb62530cdf2a0be689aacb9c0809b55b5dcb78a7a01ac9e8a9d63db7476452a9bb45f85b491e8361e9b2974ce7fccc63c39670c3867ee68c6e78e9a4773f510571ddab5f0d005ba0d88666e1995f9c066c31d356e0f757ab6fb80088691abbb6b9109f1f1fd088b396c3565799638dcfc717b6011baa6913e5de7be16715151bb6a69e3ba76ab68155e589d7bf5ed8f72922be9ff3fde8e308958ecbb8778f24675a80629043ec83290d332edd0973135d13f7b38a6c4c78442a126d7fc5b87e2650b2be86153d659c32276d5040abcf2d6c15260855205d1993f44c94c626ed99fb4e84b44c54230a865b283dc5e58e5a3a9777fe359f17026aafeb218dc00c70b9ca48eba74cabb0b4b538bd666949831a9424f4e4628e1894d9cc9eb426160c0a9424ccc4529618144bb0eeda448a7f6d2853a94c7e308fa820f388ea8396f641d37cb13470c5d01d07a35386d0a89ca2c323b285da0301f27d291c7d7c0541b90713736b8321ea83f6d5d2e01d39c9be26b3887a40d470238ad53adf8b4717dc8e23bc08dd83deb6174d27eaf38d4c099cddfb652c7d3456be3f94be32508de288fde8dd1e7861ebfe7634f920f46bbc1c9e7fa2e7eb40518b6f08309b8b9a35db7eec562f584ad4c908eba48b4cc739740279e81cda41af46bb41a60097fb70042857181a8f04d8955d6d04d66e0fa8d71181c2024cf78244daedb45a8328bb7b3ea02e1a01b6db6a211f5ed787db6d361a626b67a71d00ed4a5cddb035648af64eae2de76bf8eff04be8027a12a15285afabca0a2c8260cbe393931287c0452a8029a715c1fbedcf61fc431130951beb954a80cc3d02e000fe7b4e674b3962ebeb4b6c8c2dafe936c9ae685a8e4b44398dad64695cf796b868a191a575dd26b925a6e728f9b90ffab90404db065f5cdf2e27935f5bf1349be496999ea534abb3a509626b35f900bc54d3e334b7c4c2c72fe788ad79cb5a92a53ee86b4c727df75db13e3eb95cbb9e401f94d8be017f4788ed5b3b1adbd77945d8be95be009ec108471fb7a6324943785f0508308205baaf65cdd8f68c6525092821b82f6302dc3761803a35798fa62bf00f155dbf7bea7f0ba156859becf14234dfe3ef1ee4f7626320d43d84765575dcd7c6eddbe2278f5400641b4b65229de16dec1c859f7c1b4c083e0e4f4c110023411500c614a03dde94313316b632d78e2993bc298a12d2a6c836d6ee99fc9dfe56ed6bf1ff0f70948fcab2919e6b1ce620c7d1245a18ca0bec9f89d8d100c97deb8519453f4661827868e2ead9fd15d4b81560f6dc0e5f68d8101511ef8fc4179a3beac4bfeee11ff990420215e9c268d821345cd6e3709be871e16947e236c1fa5167f6a365e995d01b8de7e4bf579f5779119d93fc2c511ef030723cc49ae10ab2b4c3b94196542598908bd0c8aea452cbd9edddddedec722ab5923dbfbb7bfefdd6447c716b6b313e61c56c3bf67e3b67c5e2f19895b317b6b616c0b3e3717bf7fcf66e22164bec6e9fdffd31d3b61617b634965a1acf2ea56cbe911d5f4a316d6b61714bca38c1987f157a1d7a06bdf388715f9342ed4f39dca3a6ea22f3d9455780d7bb2eac0383431d57aa0ab0987a67437cb3b6b353dbb87a75a3b13ca327590b93869ed05a84ac0c8f6f4d1dbbb2424d15945732aee1570230dbf6f432c14d96bc44704b4be833cb0801dabf75000d68a2b47cef381dbcf5944f89e3e931dc04dbf4bfa069e8dd5f568862d8a6064f8b0d2eb705384f313481e6511dedf83805a182cc7ce244e95eacf469df15d9a77c72c5926405c2a152961239357eea951a18b90fc4eecccc72981e0a39db6416bea128e2fb0094cef28cc72ff26696dba167786f7d7a79795a7ef89031f6f386cdd46e4761846f4013ab0405be60f86bf80ccaa07974065d91585eaeef320d0c82a2e767bc3ec42e79a8beb1360d99b40deaec4928af9f07e83f502f0d5e104d203cb4e2714bc21ac52d33fecc15be5fbb1ab7acf8d2cc67b4b4f684e00066af656cee16eadb876dcd61f39af6652dadf1af5f37e371d38ac73dfe20c967c51f76f5cd4d7ef8ca06df292cbd4ed39ed0d2da9cff05a86fdfd0b479e6b0af68dabc96d6bedcfd112f08ff1339d2fb70006d341d6266045066492f88f9098cb35ffe8b8d2b5736dc84ed7afca32c4233db573636ae7c596c3ed6fd8afce667653c2fdc8236ba881e404f4954ac4a7da32cbd055142ac201d4b15bad6793fbfcf95e15b27e11c48e8f38d72251a9d5a51cb95f2467d63cd150c3895f22c83ff94d6a61d0b9bcc29c6d227c7b79e9aa61a19cbc60d50662674652c3666261470bd8989f58ca2248c542ca9687686e5f4188ee9cfca66897f47735495e8cb4f2ceb4455d3faccb9991b74b2ea6c6a262889b8a6d71641c9a56319551bd3172e4fadc733b619332dd38a997626be66cfa55525699d3693ca9a6bdb2eff7b8b4a75cd51f379d5d175a26632413ffd65819b3b8566d01aba1fbd41f048444300b09a71335cb496da7c05b3629dc904bdf286948f589caf9c124fd9df0dedaa1b8228947f9555298af2d3a96047da497b5e9d8d7205ca2acb3b4e9ea9d7886118295c7a5589a40c43c78fc557c7dfa3398c69134a9601638e7682e4a6e7660bbaa2aa196de1a4a29c2c4be8638de83f608eb6884f688ec6401b572618688f6a195555f4c2ecdcb44e3462aa5823274e2a2717bea58ee9997c3ea38fa9ddff6aa430d68db7bfdd30084e1960bce73e9b699ac372175dcd611ab0f2730f3857caf397b2d46506a833d736bc27a7144ca9e1d08ac6e69f2b33609ac3dc4b39e66860a9603097662fcd97af38d43128c5cad493dec6b5195f7795d86d0439e83afa00fa1442a9a48016f589da0a3e939b2b89edb740421157cf416d6da3bebe515b11d11d95ad7e0135ad3a5c599a551d35c317ab74c63905a7210fee6adab74fab99aab7ba51a9f31e5d150120e55a757dc373060f7812c7d4c9e71de922f99f70ce3414ac2a000a0605a4cb8b116a51d5a244959e1e7e0283a212c5347398c01e90077b19ebbd0f091ceae59d5b4800e82327ff9f99490923004453f962a800c59880f0c52901ecb54e15451c2244a1800970e544c70044a5d4649aa6691f0944c1662fc1578d708a15d002da4277a1bb114a49ef4c7535208414d8eb6134fa6cb9e6d6fc709e52c15f770afee254751daf56e41f9d44a29c48888fad8585ad30b279afd9f076ba37a3768e662ed7c8c1567a7ae66c2693c99c9d994e57eaf58a1ed832ff2296f3726d1f5ab663d8d94e27d76e7339b170ab033f84f74aa4a592a49867a0a6a71581622dad9a75ef3cd04add851f32f609e6b0ee5f30f6b68d1f01ffe9df03487fbffba71f78c707bec132da6734adfb7f6919f6bc887885cc0ffeef9f7fe1e7a3b91f1322cefa3c42f4181f7aa5cfdb5eecf3c4d703c0a523f1f58f70925f127873511777d4f57da4b7dbf3728791f2f3f77b1f7a062110aab198fa47060a942b8177d8af5471a0c299003caf2ebbc5a28f4178362474f65708780894785667b6365c330023ae10865536dc0ecefc1caff25e85bff40a7f1f65fec2cac254f20b58254adc0488d655b6014b307d3c0e0aa4e69de1b800d67d9b973bccf1870c3cb82fc7278b76d1937cb584d9b2103436d6dcaacb3f4f0b71230e45e928670b47b7e0eaba774cfbb94103c247a84e36348d65d8dc7dccd1187b1c1bf471aa11cde0037eb8d934154ab1f8709359192bcddb0c30261b7cbe67a5fb189f801f27f817b14ab4a431dc5ee9d218947367f2c36da528ddb7f0ee2362c6248f401265fa7224d7841edb3f3d575d3e6b6f42b258177384fcab45fefaf4d92c9f526f66b3ded3917f02a830042ef4bafbd0e8ee7772b96c2ebb9f6be41a59111f731072ca8ea3295410ec20cbc7e03ce2a4972c0a04a528f4d961779d0b1c70837f1e361a8dc641abd56e1cec8b7fd08e5bdd3617ffa06dc5bb878d5ca37bc84b2331cf1afdfe950974eaf8b921752cdbef5193c2d5a358808f9c10a049f03f095cd62274695f2aac8a98f37f033ae81ef4a8907136612de366541bdc0c2fe322f8c0a87ca352de380f95a2e32f814949e61eba35fce5d3ad5722c1288be0c0d398d032d51405947b1ec28aa2d10555c7ab6b5857fdc30f5e9f31b479cd30b4e7e359d34c6b7a8c506a9adab4f5c0d26fc6724c654c65b9d8d267457291469f789ee88410955ebaa45271e4ed9fbeceef878b9a4108319996340d37962ac48dacfaf499b7aa2a4d98a6adaaeab5be7c0e5eef17066a9e87bfa39a978e9d0ca7c08335de3444c30ae0bb1f5240c12c681b432dc9b679e06d47b44d3ed6df363219678041c07b852d66a5458bbde974b4c5ee1f816def057d3de0483a753c3fd2f17d7d342312d5c92385483e66987870041752f726218f14a2ac9f7e8a41b49c976f53ce57c4043eb2dc57567cdbd0cab26f535a59f1ed60cb2bbee5ebe49175f8ca0aeebf896fc836585ef6ebb6d237cfcc0b342d1f8b60b09c61dc64687beacf266c9edf35cdff83aa99841657d3e3611c16c1e3af4a569ceddddd6d89c6b23c039ddd6da732f67d1ad7121995a6c703fc136ae0f15719d6eef6f6eecdc0921089fd3645efb88a9e403fd38ffd89d732ee3908a3653d7a9c1d92fa37667a36a412e3eb6e1e860041fd493612b158dcce95cbb95cb91c9bddce83a1cd5ea9085ba98645e4c707fc37f6361100102778470621d7aef20effcc1578da01a2d1e922df9def0a26dedacac97bd2697e607cfc9153a7cee7cab98952692257861dd38c8feb31c179fc33bc1b7ec04f91795b1025b4f3283f77b5c6c7d4d5672e394054bcf2b62dbe7bcffb9fe3e7e45cce0f6c9f3af5f07816d1d066ccd7dd5981b0346abd750ab542142dc93b627b78dd6df9a1974ff8a19b8f0731975e3439c33b3808091406bf253641a047c8b5f8187692fd085c9a99edde8075fe37449090cd35079eeb086c9451b4174ead90bcd307379b6dc8fafeb5439117b086100444e065e115141a4e3298af6beb1ba9735017d165b530402a60c80fb189f7ed3f200466cadbaaa5aa06a51a163f2dcab4b7d72b59a763daddff440cf516fa97d322a75e61a427430074d093e8fd0851295d7a4e7138082bd06f077d30c5915941a382b018be4d95e1d708c398c2f50ea88c8d99d4525553a4f760191185898888c2aa22029e4abc1e222327a91b638c992290c98f32d2090dc2ad7e6da8d9e6b0868946e6ec09cb4a8b9c5e9d5293aa314d4627112aa3959824ca65465a336c9505914d2a8d3135a66a3141e464100977821986df39aaf9a37e72821c3487ee1298265c71adf87654bee60b7db614b500ac6f547c58f8911ed554ffb55eab95eda53b06308a7cb0f1a9bedd0f3650b88e75b5195ed268b5bc1e2758d85c8d9eff2120b72e7c1893ee7ed4cf13d46d496067e505ec8f04bb770a21ab5f6505c2172ebbcb34d42b7d92ca0849061e5153961fbcfe481b24fee1ba16c300fcd7afcb3a3d7aa610b7bcb8a5273c239130bc846ec53d2bfe352ba50a47dc23ed795e5e9d2914cbd7f2f275717cf3ba9ef0b814eec54d718b784c0f93e0830251fa5d089558901a591b05905ba8d58395704126e9448c177cf959ddf0b3e2b7c0e7ae0ff3a3c5fffcd4da86770eead195bfc01e95a2f7f50180dd6ea3ed87ebd430c3b19c35be343dbdc4ffbe2cd13224b7d55dcb2bdbdb2b84115080f77a860100abe43ecc886e62e5ca7bd823bc1daebf2c4d23982a4ce7ed3adf16c76b8474e4639766884a00302358c3223f98acdc05db2b2bdb22dc5a723edf87b1a5114db9afaf4f5c7e857da2eef7f85eb73feb53256c02d449c25cb86d7798fa3a33b0d2c04a4151896adcaf283afbd627620e5b38b6374cfd174325aa72ff55a22a057ecfb3f78bfba37d7c115d93f8b4a7a01ae17208a4ee08a7435ed680bd92bac39f028047746ac509297c92f7c74f1608895bd47729673e7167e3e1c7e239246ea91a29c42d335ef01fbac3efd5887bf7edc746049b83bfc75f40fff095bec9706ee38a4be03489839ff2563e0b2b5061812365052abec36913ce41bdc28f6dac4df3ed9ad485a6200f6ee8a1c9435f9063d570639e1c13c7348cfb6b39ca18cd0151521827b04ec688461875a94a349cc63a49109252304c5055a513e165384534a2529732c2701a1b3889715ac12f64c7c6b2fcefc35a9c78c736a7fb7946f8ed1a49611d27304e29042608636402b092c638890d9c268c1786f0cbc6887f1956649915715982e8248dd984fcdd6c3f06750a79e802423490d47cc98d0b43a5b58c5bf5d7e65ecfad57eb7e977583e9d727b0e9a3cd1538687b6a0f2746a2830accd0b684b1f3f1ea7cb486966943a37b7833d4a902689882d4b55ad1f5a37dab036de8a0935c362a89f29d82aa8c72ac548ba7a02acb58afd64f41d593b246d593613515e6411ba009d8d2340b43934f7cd1bdf695cf7630c5874cd3d821a658519543a6ebec50517fe52b925bc8cfbd6908f4ee72a55a616e1e7cefe659a8b05ec06535558ceed53daed3d78341cf07c30214991b283e9d75c2c862e2226f27d3be780e9498c627f2b75f59046c32c356148f6fbc55674c680e395014f3fca2303b6365e6c18b44a7c250ffc4c55f65ba6d60a2c0c25d54b50dc27083b2712d6df1db264af993213eaaec0f1df4107a12bd093dcf6be53a69d5a932a75f023b0b156f05cec2aa301c0573d83938ad88252b3aeeaa79704f4350311a8d352e550acc2944f3c28a70a869b0964924dc1b6e229159133e0aa26842543612241bcbe70560c6543e96a5391f9d20247868e46ea11cacc702a683fd6c0cabca17590f05877d01ab38a628d864bcda53abb10c51f1147fce14564926262252b603209977361ad990530149ffb794f3c7d11c9a977a0e2dba05912f55ed09a74e359956a3582ba9a2e3d53cfe11ad3074d6d7bb3714d04fac3bf9f73cfae87bf2dd1f04b849edf64bed76c5dff33c50b41379079a997c3ed3ed38f946c01c015ea7d3e9dc0c76c59af36d31ae1778cfac57452fab157d5576129ceaa48880905277c55b0f067429a029ae06c3dd0d840ffe84ea16d4fe2d970f32632727eb0f80625913afdb490328cae212ac3e50cf7b29e724288ab2ec3cf0c649cb52e04ff8b851e0ed63e907ea42c01079490b6ef5b1736f000c84e1bb1e9bae3f309e7ecb9358b0a55e7af35d8f7b99c594900cb86c80fa74cb299fa9c347b47223812a2c886976d29952204285312bfe042677e5bd62fb87d999fc446236b5bdbbbb9d9abdc7b02c636e6d0d40ee27e4d9a27fb8e34e4ebaeee42414b2f79c98bf276b68bbdbe777b5bf1af726263c573d5dae9cfec9eef9ed5dcdc8de337fe2d284a1adbbfcd4b87aba523e9d76cfcc164f3bced66cf1b41fbb1bd64b32908ca855fda7acc9e75e4905b43b2e34197a17aff84db057dafa0fbfe2562ff7151a50eed64dc1f7b42791812b91ffe56e6d581ff5568ed05dc334a4009c6835e30d29af7e56a27c7831506f47642ead40254c657b07a618c7343da9eb098d6960265455c5180b4c09d5529393a66e2997144ad484616462f149dbcac6ac8c6124a8aa2a0a304a34f56961432000d4a4940a7d94c69836661a294db7996a10e0cfc02c6998d9783c9f8c4fc4e2e38699642a132354187af6b9228015858aff15aca934a1334be6462a004ca3639631a699634c3345221436989a34f56c8cd94c8dab44174b1770659b2fe002148b29424566845a1a9fd66d164b6b7e221536b8fa6ee66c66334c959e8e28ed7497d1d332726908c26211f84b8bba2e420f969c7b472416bbc73b37cebfb518d2a0d8e6cce4c3d561d716bf60c8fd513d0a0a0e3aa74fae874f34ede2fcb07f8bb7fbb06feba568da432f1922ea27b88c76d08308c1e8469002c68846e0ddba27bcf9115b53700e52c7b87ef97b1972f92e541f9e9c096b67d8c5b73e26bc7b2398d77925a395968ee0f962c80c6f9beb274f779bc29d8700d5fdf5b68c10a48300940d3ef3b9b3e54a3ae38a3154ae6f64dcb2a85c1d16c652e7cfef5c3d659dda227a7ad6988b974aa575d388a796b20905ca73731bd029d4522bcf6c5e78e3cce9ab9727572bd8889d9dd4a7f3172627a9aac637bdb557cdccb8212f790725d134da0ef2fd6b5e68d62c540abeb4330d5eda9faf8ff3aa3496a7679673d2b6098d33dd3fb7cd2635f0d205e365739879d73b9c5e5e9e0e60aa730d2e3e2fd9b98b47383d82d8dd1ca2288e5208950a29cff5dc4ab1c2ea6eddadb062dd5350b7f952d6cbe52ad9f5c71ad95ce3c687eedd9f40905b6f36bc8f5772b95ce3e020caf992463308d10dd9772482a2ec4f6e320fae8c4b614940671617cfc4e3e577361aef2cc7e37caffa68895ab1857cbed29c5b5a7cfaf4e9ed7abd5edf3e7dfae9c5a539f8add94573e9c4fce599994978afb075c9fe9c4115815cb98b50c991582bfc4fb4a38c74a183d6afc2e081e2e081e4e00138f4f6d6f73cdbd85fdf37eceebad7439dd9f3c220c283307430f2d169379bcd66dbb05b2ddbe8f4c8e9466d4194a6ae97afc7500a4da345b48a107f317556a8d42361852cb21d85e2878253a879ad66b395eb767207be31fc4f0263f8f77d7377f77968763b075ebbededefef053ad34e1f5e8b69dadd43cf13792b814fb888d6d01974013d841e436f40cfa09fe173eed1f80c2e5f3eb9669f5659512ea35e1e9cca5ac62d9e030129503c0775c68fcba5935fe5f2f572052a7c007b7128f2277a7160fe92e8c9317ea48bf9c3af5533899397c79e53e0b35c9cfc2c280de784fe0bfa09673d91515f3b76f9e41ec14f71cde1294c12fed5bf1d5c62bbe29255ff3cc1a366297feaad9c4b5bdbcb3bf16c2c968dc77296958bddb8f7f4e97b59fa5c6579dbfa963c244f37cae7f9c56d79fe7c7979dbfa4c78573c1b438026fcf1f479deafdd4c5a9830829982a9b3c27451b321ce97a6f3c054dfb7bbc2a58569a857068f8870c6ccb452ab88c08fe9409d64f58d35613771f89ae6e6c19664faa103f9243077f0889b51995a3ea9406e93312dc332bc87b8223863eb2e07a70cd350b439dda1aaaa97a60d132b29e355e7ef7ad04829d834a68a06a56ada28e98a611a299cd9de624c73345704ecba2ca331b6b99d918fd1e77447a5d4989d324c05a78c072f6cbfca4861c534a6e77455a58e31abc9c738773d7bf9b4e6304d73e679275fc8681a73b433974bf7cb124ca55555d71dea6878cc340c25335772b0611a63584b5347d755d599e68f36cc07e7ae6c8aa015779ef7fe8a23024ece5c997bd030311e33a6fd27a5197f92899dd29c834dc34829baffa4d4943186b1693c3087faf8826c394fb13affcfadf0ff20b7beffceed27179acd8527b7dfb96fbde31de54f253e1e7be9a5d8c7139f2afbfea2aec094aba34710a26b1bb5623a931a1049ea815751ae36fced0a98de7ab09eb8a3c960a5040ac8c937f397d5189b59b28c1d73d2b6274c3919747d489433cb79c7c9cfec0430706ff3c1e3b890417522b275e10f14bc3c9398341a8665ea4f19bd29c4e8acdd9f106198e42b41d2ca99b7f9cf6af3c1d587599e4005b4862ea247d0d3e805810f131a0a7c0392f3ca0fc0dfc133906dfe735ea5db7e404e7c258ce0c0915bd018371309236b241246fb769b70db2b229b0177a1e43b591399aa8101862b2fdeb02d39626f963de3e7dfc207d35bf47a71aeaebf7e8bbf3119bf2041140d1b93b36fd0eb73c5ba2efca985a5a5c226d1a991a0b885f590d496ea64939f0bb03ce47b7eb5b0f7f249dce54b8208b8e66d1d06acacd7cfc1264824e64a7fe97965820b8426266e54b9307b16183ccf348d3d41b0e66898604274fa41aa13c6884eef7ead95b38b75fdf3fc357c5eaf17ed09eb89bb83b3fc324c08611946f013df3527e2c79c66da924c3f5b3afac722efe0b2c0ddb9d3b62fba3d566771f579e80d5cef1f69f5b9b9ba7eef59e96e0b311e8546b175af26de897f367863bebe71eef27eef3d1122d03043f261bc199eb3e503f9ed222752279bfdefef591f07e576653de28d396ee48ddd493f80fbe59b7bfd968c40c06fe6d57ab3acb4e888fc5d3e7e1731b0a66183be28e09c41be2df2b8e81298b08cc66feb7f4b17f8abdcf4a7a69698d4f8d3c5af6c169634adefc617831bef7aade820e613c16f92f773fd35ec20d1319815d6e7302d8a6b25fdaf5d4edc6760a07380075b0b0b5bfc0fe44be4653cfb2d3e32d9534f9cf5c7570b93cfcf6f6e2d2c6e6d2e50cd1f768604ec94af139316f6f9d1a51cc7f88a94b2611ace43c5f5bff7b930e8b5db9df2ee6eb9bcbb0b9df63a3fb4dede2d571e7bac520ef20ba40d58464e2ea293e82a422581bd508fc4726c82eb474c166a455a2b3a75ffcfa3b58203c7b9e27e6b0ee35cc290b18c5f7b5bb3d90494ecfe555bfc1371e5b323bc709d25ac937bddee9e982ff78cc41ba71ad946e325413bd16c340e1a0d78c96058c58d1dac2a05051becd906563133fab01ee368122d0afeafa710aa33b9cafa33916f09f2ad6afe90f613ca5c5ff5747d54f22884867b4c18e5bf9d1c2ba7d3e5b149733c161b37ef2594927b798ffd843c109cfe4a78e2de9ff133a0668e10808b971963ec322584de6b8ec7ac71736aac9c76cac96f504aa93c79af396ef1a727cb4eba3c36f5be80b66affa8304c8977fd5538844f20861c54442825444a5661ae335b2e8ae1bcbe512fc8316cc3ac5aacd5d77e878db1dff9ee779def01c0b7350d14f8b6029af66d00f81e545a84b4defbdeb1f7ff393c4be2faf730c398e1efe971f22cfcf9fb91e4b1fbaacfa7574027d159914fc62ae297a5a77b125cdfb5ed84bf5aea2b5129cc28e3bb6cc01f75fffddfe5659ccd4c2ecf80a69732d3cbb278f7757fbf57e8177d0dea422f0ee24f96dfdb222425902b151567c732cbd32fc9a22f3e1ca9d1dfb74d19ee6fda8d68ac11f1ebf6091447397402d5652cbb24191615747b35f206aa345089355efad4eb654d5e92e5ff070f77ebbd0aac460238fe9e28f32951fc5ff28bfcc0c948914f45cba984368e223a8f101fd82c0cafd9848a007c7382cc0931631feb6a676bdfb8d430ed1bb6d9482498ae14a4ade3011c635ffc8f23463634d6943ddbcc664d7b2ea9268d2b5fe665fbf26f30bd71e478d6c3324fa365b4293205de0df7c023f05669910eaa70c697a2fb4aefa7e44987b008475bdb843362a1fb7f583b16d8268eec9b99ddf52f5fd709a99b06e384c4e7107fe2240463728949d3106227040834e5e724ce071cdb380e0428575fc8a51cd03447290597e60a0d14529ae628e27a08a1aaaa502fa2a7a8451542a83a215455113a2174451542e1b4e3352c6ec2af67e9799f77dfbe7933f3f6f9cdec9b37334413612a4e62a10b46a3133a16d1ac0ea5128fd82349f873e8bfa6f03767ce7ce88df5fdb7d4b4e46264e6452b3469cd510fc8946a2e34659b33e9b83073864965e6b4e69c4c4926a7bd4f52109d4e8ae48630e517669a546609a72de4078f05f91693ca6c8998aca80ea9b2cd2996b925888e088b9159ab3217a34c4e9b8b1278394de6e850548fccbc8842969cb90f3d5639e2592d6d9139e241a79c67b805b4b7198ee817a91f74f5cabd0863195d52244373e86b3c7eb02ee7bf10c6abe367b20c6619c43184e308cb9272ebd2a5561e8c768439c22229663042c90c9340582c6194944e862544aa240c46124408922024c5584a97de222991d197460c83599a61594a0866a588202447283561768a6a766222dd330329382c89a68446324c12a8a48908111663bb61055d0585b1932572219f3451101639e2d409bcaece4a1f8a2a6922cf9d20fa4d8367104a4288e3ebc921347fa682613986a4f055d4b2cc2c86dd15a9a675e9a4ddc8295886c10c5162829267f2341a568219beb25242a42cc1046182d848f81d4612299d406710467ceb118c919456418e507c7c7c3cc6bc10328e466b930c1a5d8351224d559dc8109924516ab4d762ace0c55360bc9d6108cf5a86189625209aefd441017444dfee3c6c1166644cf150cd10bdd9157c5fea35262089891312886bb94cadf0b4449e1cc9fd75d82abae7c8df31460b04e391fea25c9dc0c9d9072ab564693458e96815210a1923215544882ea20bcf102361f3cacaf20c65918c8704215e871c740b0e56b0312fca15186d88f69e5608535abd884819691c218b30c1917570421c142acb6305e60c0d84623822b299d9342e5398dc7ac86efeda6c3eb44f282d6077d452c6c7a5c9950faa7ae840aecd96abb7d990838b9770f11241f80c462ec9b96f1f43bc57c893897cbf42b0d2fdb9a70a297ad827bd6f8ea203e19c144b6166d8a63f115d8d717f3c4813009e286da0a960682059756b381cceb54d974dbea154c869f68d3cf1e2c183917ded41f8b7993b0f45fd67aea565e33787afae4db4fd0c0a4c092eff3365f8c1f1de411a690a20052c704000e8e0bd7064d3cf7bf73012718f107c87c5bf22853a30f5d6e91104080be740744d4cd382012c3120bed622f008c7f015e3514022dc223a5a043eb1f4626879029aa781504cf9ea69e82ca236119f574f734ff563ca55c7f04631ed321d643c86a7e509e87858fc7f6cc358609fa00f9f46a647f5cb93825837a7d2c947b56948d4ae51f9d5225ed1df2d31cf844354574b4cd9d1e3fc18de8f831691ce3dcd7d620889f84cd5d621519d79c812aec5ea67ecefdfda47206a9b5888adaf3ac63e8544cf72788afe889571baba4fd5ff96986b32911d0a89f067b14b53c9117b6eba7e7e9c1eb3d3f017db1ab14ef2e73e8bb1c9b172cc7a44798fd2c7d8367c9c7e3a1ed327517cee23daed85a72c57fd087b4e817ee4a0820c98442b512f56e139b81cdf24f9643d1922579954c6cb5c606eb33ab681ddc31e636f716aae9cf370fbb8718956b25e725c9a2e2d97ae92f64aafc94a64c3b21bf23479a9dc2f3fad4857742bcec569e376c6fd277e59fc40fcf98440c2646265e299a4caa41bc957946b94379f0b3e773b4599d29d7233d53a63282d3bed64da0fcf1b9e6f7c3eacd6a903eaaf5fb0bdd0978ed34bd2fde9c75ebc94519fb12be38b99b6999b66ded554688e69c66615cfea9f755d5bacdd93a9cafc3cf37a5663d6d86cdbecf3d9e773ac394339a77459ba1edde4eff6eaf5fa5a7daffe7c2e97bb2bf7fb3973e6f4e5850d5a43a5618fe18c31c3b8d578d9546d0a9b2e99a5e66ef364be33ff8c65a4a0aea0b7e076615de178517191b738abb8ad383c4f396ffdbc8b56b57595757cbe7dfe695b81adc7767d41f6824d0b4617fc52d250f2d3ef35a5d9a583a5df965595f5945d2cbb5a3661d7d9d7d9fbeda717262d2c5ad8bbf06a7973f98d97822fddad585571e165d3cb072a4b2a3d95e1caaf2b7f59d457a5ab0a558d2d962eae5a7c64f1f78bef543754ffe44872381d838e1f9c494ea733e41c745ea8616a8a6aaa6bfa6ac66a6ed5aa6a6f2ed12f695832bce4c73a655d63dd68dde452e7d2f165b5cb8e2d572e5fb7fccbe577eb9df5e32bd25734af38b772fc95ba57ae37ec6b187b35e9d59257bf5d55b12abc5ab7ba7f4dea9ac135d7d62ad736acddb36eceba8175775c7b5c5fb9ee3636377ed178a749d7dcd07cd15de2ded552d032daea6cf5b78eb425b575b79d6f4f6b5fd97e767dea86840dc31bee78aa3d839e5b1da60e6fc7c98e096fa977bff786cfeef3fb6efb75fe7effad8dd51bfb37fe10280eb404fe1018eb74768e0799606d301cbcd695dfd5dff5e3a6fc4d7b368d6f566d5eb97970f3b5eeaceef5dd235b2ab79cdd5ab4d5bff5eab6ac6dd66d2bb70d6cfb72dbc46bcad7ecaf0d6eb76e1fde7ef7f5cad7cf854ca17ffd71a887eb59d7737a877d4768c78ddee6de2b7f3ad957dbb7ff0dcd1b07def86aa767e77fff7c6ab772f7b2dda1dd3fbd59f4e6a97e75ffd05bf56f9d1a4818e81eb8f597eebdfabd57df4e7f3bf0f6d7fbb2f65dd837f14efd3b13fbd3f60fbfeb39907da0efc0d983ea8323616bb8373cf69ee6bd43874a0fed3b34f9bef3fddb8355839b068f0cdef8eb910f923ed87a587db8e7f0e491f10f4d1ffa3fbc3cb47ee8dcd1aca30347278e957fa4fd68f4b8f678e3f1b3c7ff7d22edc4ae139786777eecffb8ff247372e4e42f9ff83fb93ce21ff97ce4caa7159f5e1e558e86462ffdcd70eaca67decfce9ce64e2751bff83be481f8a89ffdab8f0a6e0bbe328264c135e6292568a3801348460a01672019f509380b0a9810700e92518980cb20053e167039a8d13f045c012ab008781ca8c00704102303045a4816700c09a85bc0096851ba8033a045ef0a380ba9f0b38073a04535022e033d7c21e0722840df09b80274f0b280c7810e76f88379ed4d3eafafd3d515e8eacccb37811f829007edd0043ef0820f3ac1055d10802ee8843cc807535b30e8b71a8d7e97c7e50db6070c4dbe0e23b4411082e0072b18c1087e7081075ce08520b443000c945b07187fcbbdb5c24d9a65eea636afcfe36b6d7777426d0cb986be3d6d82362abc077cd00aede086ce7a77a0b3dde7d514190aa01edc10804e68a775d4401118a0e0199ae2196ea973b776795c01a80337b44217953df00c7c2a7cdea0a6d5ed75075c4177b3a6718b665193cfe1f3790d5041ef0982065ac10d5e5a571704c10dcda08146d8021a5844393bc047690d108d8d9afef3bf000000ffffd5bdafb1247a0100", "bd70bb467b69c06616b7ca579d225f44": "1f8b08000000000000ff64967938d4fbdbc7bff6d0d80a1deba0b28c662cd9c6188c650cd9c636b264df8d310bb2eb44c8ae8863cf5024518d6490b5ec2446474848d4191c2d07c3792ebfd3ef3cd7f53cf775dd7f7ceefbfd79ddf7fbf3d727c3ce060de293e003000084b130c50200003ece13dc0000906263bf0200c046c2a251c0c371a98de38eaf05d61a0062cf0340f27500d8070020f9130050d40060d30b00e07700409c50f6dc1e0100002fc1c2950400fca78e930d282d3b03006caec18e3832cefa12dc37221ceaed17e1e30f8d092700c7818881c78413c2fdc9dee098f0303c091e6320ff1f051c4f821f9761f2e0ff48c8a106f2386b3bb04904d11fac05bd08559347f281c16004d12f008e3535ff799de81760201f442613e03058747434345a131a410c84a9ebe9e9c1d434601a1a17887e01174857f164ef980b7892c23f90ff724cfd49bec460023938020f3e3e7bfb4450c806f2f23f35ffc43f83c8c101ff3b094ffa69cb37221c76dc81a943d560ffb28ff1c755b82d31d81f4ff63ee623d511b0ff57fbef2eb0ffb3cc3f4e613fad22f910b07f9f0dc977a957d11500f8b0185363471cef6de7e030f719d1a3458d88ef33dfb3183b62fa39d2f3bcbc725e26d6bdb9f7aa4f1807ad36602176660ea24e21f942860de62133cee4bba9b2f792abdcec94a829229795ac5016b84dd5399b746945da0ae5cbce9c6f6e609cdbc4d5715d016ba7d85acdadf184f585adb2ad0a12930bd99deea7d2ac2efe30eb6a1798ebb7a7a4d468468225a3bc133e043e39ccbf593b385e975983cdc51a74e5655c29d1c167a7956af59db8b046a9d0b4b07edd1b8d38eaa602eee905e2f7c009fdf5160eb765a849492e0c1549fbcac34a4aa224c761fe57a6c80b9389a7bd340628ea0290f422bfb57a38e9e1aba858e4a4cc0e73234809f480ff20323e882f69a37cce6a17564023bf395df9aea3f36d57de784d0499af1e36912330162838d551fcaa718513eb95c208f42fc2b974fa4cce884b2de4e7e7c705318bf5376f26b5465b8d81f4b51de10d269e635b8e8ef56787b74e0e647e3adcc26c2d3d567ede28a1b88b17feb81f04fa1d72f35af8dad11f891de4bf5d5636f487d2c203310cbcf0cab204b7e53be6ebb76b6bf862d5c5ee0e6abc6fa899702f52514a1b433528222f9c06d9ab91d8af336cdcd596246cf0a1bcbfcb7ec65b2e24b216eb9f5c5239b7b5c768be147dafa2661ae4a4b59a7ac9e64cb95b6f494bfbe8ce54bf70afdfac4061ab49a3c093a9bf242f784fb8c03f2bc8f94818172fe471f6d8514c342e9df872df1cc9d30ab774ba7383a8bcacf352ec80399ac538271bd79bf020ae32c3f620b5593696bb7c3ac288740ba5a1e55060ea71f64e56c3d0ee88ebc941314288aacc95e1908837690bb916a232f32be1fe29ebddf126df68e5922ae5dfbcbb379f0cad762b379cd6327653e5a567179ca8547eff713a58cee854b7d580bc3493fee7af0f46c2c2f1a73c9b9b78e4aad758c273a23c64e2bb2a0ab94fc81fa34617e8f074f930ad944b574cf319cbfb927bf39432a5ba49e3fad81461966a61eea91926a5f5d8e49398993626d9baa86afd225dc6ea7d204aeae94ada769db0b64c36a394d6d47642f19a1cd16eb0c47a5ecdf92d57209ebda6366fbe2c899d8b53bdf9b3c6e129b1a1a11dc7a376dbc1f5f3bac21588c448783e6e1c1e14bfc6316d3995a56a37c9fe61436a51baac3fe514c71dcff1175322e6b4c1dc72fee2fe35f40fde26c104711e945990ddaed1c54cc3882e69f158747e713861583eac5f0a8dea3ecfc3d047beb4733fe72c5aeb7b3ffedb2076295bb8db4a41f0ecd0f91e6ac9bd9c7502019156918279c3b330b7e89ed1c14a7c675025dfb8b67da346485b9a69ece2a620e0ecac2037a21bff359c5ca69b965426cd691ea81e1442108ea3374107ea60b5a4d724594fddeebbb4a3fc6a535460836b1da749525eab678d81669ca2086a62f222b35dc98b847de1190d50b3e56a5951b7b26b792d8c26628597b4d9b78ffe5a9f7b96f7e2408b62a1c4577a11f4c3e0ab1a93c8b3dc087acfa170c396bb4e0d51a9e1911996a388fdd0b2dcae788225dd7bfb4167008fa353a896f5e3bd2fa6281d7f7bba8208cac4d3e8f04ef2c065ae436ad46a2bb78c948dd71cac4a4b2aed68d81e317d08542c754a668680cf65cee9c4c84c319692c35d4de30b05d7a6c0daf67a8f599fc61297574678bd43dbb7da0aadda134b5ba5bc1447b1b987b33fcc3fd2da4f7a44dc17b46aaa0315b8f5123a78f2f5a44903ec489cddced1cbf5eda7df25385711c8e7889438734314a696b7de7238395e6681a772306b57abd6adb47a02b6dce92e11880e28615ba6eda7d3a82a4a87095ee76d7bba466d5ccf39bb62da5b830c779be6dd249431641f6378f79393bfeb3e11e78a2cf443e13ff7c75489b4826bde29f78cfa6fbfa914a8e93037ab0de4b4451e20597baa5188281e11d1f2337444d6949f80531417c55b56851d7fbabd3cf6b21355719179337b60ba4939c4dc594015faa168fc79c10d1db4d568b283f0666fa2b7c3d974789be4d05be5afbf5bd9bf6de1bf666d1c1b2032be9cbb9c61ea7dcb71f9cf56d088d35acccc2f83aff61e0b5d81675ebdc1f1995d803c7b7deab2d3758d6efe284bd34d488d3c26d67986ae585f509f917cd49b412b14fc4545ef42e386f6c3c48c10431142f5a8075b82078fe80d01fdf6797d8d6b7db0eed4590fb8e3157581b95e23cb9e4ec3c3f312da31428b244d165f3874ed577ce9e4bdec90379c77c298bca6ed98b19cb74bd6fbd7d68ce694b7b2d2e808defdb452d96f6c8562afeac03123725c0a6a3948ab09892f5fe672240730a367eb23df0f44ef0c004d6f66385f32e7c1d809b58b142edccae75f9ff6cd3e47acce42476a6476da5767d37f5825b4508951559df2efbf7841fec4d5c452a161965f3a8d3b851cb7de8dd8bde62c1cb6bfabb16b67b85b9c6abff02879a88cf7b7c63369d528ea62cb6bfd3d0e11f6db43ca37413ef2858cfe8c3dff032eb8a04643262d1da612def8bd23a0c0756b68ca5590d2e7536375d6c8a1fa6378dbbc5cf02d153ae19bf98be594c89dd3a614de9dac9cfa5c411f78fb75c9c66bdbfa7fc4271a3d02ee531c7eac385c9f6712e2a7105a7008fd2a1e91b83d3a57dd757f55f0b7e19b5d0ccda233b83e61f755126423fa53f2e6a29d849a3cb21e873eac9a7bd8f707d99eeb8c587aedb3491d9997b045bd1bcfab4ee9cf16573fae2ea3e54695d0af8c7e544756f6a6e244deec912b1df28fa2f021d76603ead01897d4b6e4f2f721aff2124df77b1f1635309de155d031684967b12f0ac10f69d9b464a58b5d151671ba74b668d25ebaff392119f70a4cbb33c8220aacd7afab170fd7640de34d5c8566fc2634b42b2d2b4b2e4bac47f257959df30c0e7ac4411f60dd208a934b5fa055e557a3c0464f680ebf50892a3e9cc460ed60b38a7ace5dbdb0a02c4e21c2dba6574987ceb25d93b88094a253cf5ee2ef5275e16c56fd1636d450368ad8ebd329bbb7272c2f445581dd21aae4ac42745a0ae2a9cba2439b8f8989a9dcb7dd01f642fee04dfb02334d2d6858f3cdc948cf93867a7d642274b2c5e6c4adaa78114f516876a85f130783fedef0c3b047ffe53ca8e8c5bea173d50fe7d03f3884e3673e6c7e1792d4ce960031f415d93a7a2a2609df9ac12c1e5d579cb87da2a78b12778ab897e15f3efdb62af6ab41fccfda7147535268fa0730acef1524d030daa0c3fac31f66363af1f98d31107348146b5f426e962ba4bcd5927a6f985caf106a13210651e1f674f5a64843b05d04a1354ecb36bde9d3f71e502b967f39b862eb818236273d6b6e8444736504b7aec6ba5525c1b50455a4e3f2e7059a4d5af6753d86c8ecda418aa6c3824cd1fe9c99984ba94657cd7ccc2a6c03cf856863fff66347a705d8ae83764563bf496c0c1da27326ef3ed243a8721229618b4fbbe60e368de88575b47cfcc299c836f4af8b0d9bf2f0a20468882e9fc7b43f71b42e29463940edd360661e21f27c866dbdf876cff6bb123f4fdf172e638707b67c073fc40be2b8d634bb5df4dcaff6fcedb2d1ee33924aaf204336aca9d07910c8fb8aaf6fffd69dbba1df157d4952e64bdba81ce3bdac2d390f482a36108decf87eb963465dbf473652ee8a8349588bff4dad25a33efcebad62ddd57966c744881feb399865a0d336c18d8be9de675572fb0dd93c9286a0779694fc8d8a26a49525ff965c7c8409f3d239623ffea863cc6c4c1fa2bcaefd4f000000ffff5359de8d3e0c0000", - "ccb5290efa004c36385508f0d69033ef": "1f8b08000000000000ffb4bd0b9823497920187f446446bea44c3d52595255a94aa596d45dd55d5daa944a3d5dd5dd05fd9861ba45c3740f837b8619c6806a1e4c033b0c9e311c08db7cc319d8016cdfb9b4b7e66678ec8be35bb666ef00ef722c30de576bbdbb607bc1acedb5b9aacf78cdadd9c567ee6cd57d1191994aa91ef3f05d772933323332321e7ffcf1bf030142c8445d44d0d2d56b2797ff55fa03471142ff0421f4e6b73cf6e03b779a6ffc0a42308510fcc2c6838fbf1321e42084ff678490b6f1f6a73aff567beeed08e1bf8b60a3fbd0db1e7c6b7aeee63f40f0082f63e5a187def620f9dbe4ed081e793342e8c8438fbdfbc94fa1cafd081ef90584d81d6f7fc75b1ebcfd133ffa028277dd42887ceeb1079f7c27fc01dc44f0c4bb1142b3371f7cec6d9ffba70fd6113cf1cb08e1bf7ae73b1e7f3722082178f297f9734460173e8e1484e00a741042b707e71fa33cfa0514fbd745e8830efada0fe2f7d03a427f8c6073b7873ab089f87b107b3a2b8e24f84d2108ce44e49a42141e4208bd01ad2305e510a05974042da073e49767e7663f5fbaadb439972ed3f27cf983e58f9637cbbf59fe5115aa6a35595daabeadfa899a5e4bd63235efd8ffbebdbb63ef5cde79dbcedb779edaf9d4cedfdbf9f2cebfdcf9f61fa3ddbfdadd0dea7104cdc7cafdf85cba8ccbc746ca55f62917edc08ebb7375e7a19d77ecfce2ce733bff70e76b3bff36281776ff68f70f767f77f75ffce5bb7f7fe7f7efffbd7fff7beffb3dfa1fddeffdd9f7fed6f73ef1bd0f7def75df5bfceeec77a7bf9bfbce8fbff3cfbef33f7c67e63b93dff1be93fdedc70a270ac70bb5c291c25c61b6e0149205ad80f37f39f1ef825ef9ffe31f20d8dd4576ac7c8c50eb364023e3f562f7dabb3dd8841efa55842a8b50dbf3d76cacb4ce02ff5b5ef197735e113c3f9ea3d9a82ec09c3a0d4960e19f9b15f9f6fcb93935ca539eabf2d7cbf1ac6e36b70acb2b67407e50fc351bd51a3ca326742d6b9839d3f20c33a36b49455528a1baa258aa62d2e4846924c91bb0ce58da3027124423b659306caad364de32334c638aa224353d631a39cbcc99a20c5551812ad4606a52630935356559497c1753d5b469166c35c96c336fda8aa124272d2bab314d51de6b382a33286198289828846a0a4d68aa49a98a3101501435eb3853a695d698410060dab46d730a00b0ced4b4614e3ac9bc61a454d5a054258412ac50a2a94a42d7128aa2114c0140635a21932a262c57d712146398366cdb9806006a322d6359c55472c290e357d8edc136f4d005842af55aab2e7aac3ca7b23a938969a8d517a13ca7f251a97bac2ec6c75f5e69d55b327106bc6611fce515d1d7dffdfb7f5f61b64119f9ac6d9af66709a386cd94fdef9e7cf4116a32c3c678e34bbca55fdac0d83698491f799498ccb4317ee8cbbcee5f7e0808b64d66120973dbb0056d348350a51cd652d67015c23ac9fa40afcbbfd7e58544a9ad2eff56d7364c3b489986cdb1d06e0f23e8a149743f7a0b4230c7414d75b31cb672fe3207a8956683835d959d85009a2564663964da1288a7610aeae5e6d2ca39884050f46000b9b5b96af32cb43cdf2d3701354f2e5eca66b3d94b8b279bb1f4cf58a5ac99d6f5a4aa1a84124288aece1005001a84ce508601534a4d8d9954513010bc8c31b113471b0de8b9d98b27179bcd93272ff2c22e9e3cd96c2e9ebc98757fc63478398a9ad098a3eb0e634976948311534c6cf9293acfc14a5398a1504aa96231823582d3d3c67ff17d3eeb83fec14845488712644a1940bb08a3c1766fd0df84de004167d0075fc2560ff9d001842c842a59b53c576d36380e70a1b3363fbfc67fbd85b5b5059e1458a5b0db873e74d153e8fd0865e23ddc0af145d48bfc2f1cf22c3fb9e1550c617028e583d668d596b2f508692c424d42c70234789d9ae195441a5efd14d4bf6f141ccdd15852252a59250ab5266dbbe44c2c6432b35622cb30863207aa4980497e9e038259369198c96416263265db99b200ce5ab3ae9337cd145334f2731cd43e02f0599efd6f11a6a869f38fa1a6aa04134dc18cac61868da4a2289aae4d24ed725631150ea39451a2600ebc8aa564e7eca4a76b9aaa2a2913005a9048a8aaea182ca5f32c58c594632fc3d653cc70d42f8ec0f52c9a7f11b8e640992937fd66b9e9bbfe81e079b5d1d8e8f9f9b67f30b46df8fea05fd8cadf0af0cc366c431b1d41a8526a855886cf18379b9b81107f9c84923897a13ff8cc4d426d43d5498f504a7a44570d9b929b701fefc0ad9bc4504c9bd24daa2baa4e3729b54dc52037c55ce638620bb6a08b2a085524dc04dff29757ce414a9c9b292fc25b75f87c8f6aaaaad11ea18eae6af466d2b29237a9a6ea0e25bfbfc967c426d5542b49e9cdc1670cc731e0be9b94262d55a3684f1b6b21ce9c819238fb2536fc7eb02efd7ed4a8c16778a3e0be91267f7ed828c3b4630d56159d8eb591b72f25fad44dc5be2dda177caf5c87de78bbe26dee52ca3bd7718cc16744c314d1adb28bad64440360043e5a1d6be3a143baa7e575f88b2ed5543349c9dd832fdc4d68d25435dae51f8beec35d23f73fdf0daeeebe3bc8d1e5232f9e8aaa5ebf2eaa294be01d24eadbd9ed410f7aa2bea28fbc61bdf682c5c13dd75535fe0539fe5dd96bdd60f4f7bddfa6f43adc757790256a1acf76f7e00bd7a3fb8488fb8623ebeb0b1cd841458494a0a2650e40a9605983e14afbc2e0856f70a8d9451cb31836ac0610c2e034bf0e9f7c7df082842a3a5a7e0098ab10f5402b38373924c1d62ee2857c63f0420086b0cae1d036a1c3cf83dfa0127861f5ebe22e32ec3d6d10a41d44f44370f64bd1370c7bf042506d5815cd01244bb3cdafc36a301d062fc806f1677bbf21099600fe444f950284ce870ffaa2f2831782cacb46c12aa5d0e6d51fbc20aa2f1b6bf25ed4d580b6455dd8425b28c171d6b0e29caa18dc12d569706a42962b1a3f5c236dd444a825ba9723523e743556a94534d51ed81ba222df36bb9dae69f7fbf01b97c299af186487f061d0e9b7bf4d75de61a4b365d85b5bb6b1d5ef5fba28b0e2b19b1cceb683e7bff56d2adfe0f300f9d003842610aaf8b5b25c49cbcc9715089af54bd00562708a832728ef2cd3a66fea5145a13da253de4eaacb79152b2f00d16cce2b7b2db9ea7aadf259801eef565e93d172b745391aed81a2280af4a816d20b083ae0f33241d44ed29a5eddf365e7a41a55682b1a814d5ea34d209a62d836f884e3024e137709890071a4bc0a473a41b383b9d4f239b50b9d61414650744fd5454962fef0b20d89f638afb3051d34c55751850f69309a82b8195ee57c6f145cd0b97b3dc7f68e974ac73ddbf1ee3df7b9c1f32a632a5c51192bdc7bee6bb6e7d95f2b1d3f5e92a973f7fa4c551853542661aa8f117491856e43a8254b9698a1f5224b69cecdaa0be0ca1b5db75874f96f7bf067abc194dee0ebcc46300157c1e6f458b7bb7ee3862fb3bac59dd301346d4828dc08a0f034a7df1a37d6d76f20846850c70e4aa20974022d0bcabc1c74c11928bb190924d350f24ab29356a1599213a3512d334e6e40e75643c25ca32121071a57060d0e2d3e747c7ecefb3eea486abec3a7af6d14f2b6b965daedb6386df87e3856924798440b08b5e438d49a012bc34e419db912f495a03ab2a28d6a874f6a427a125e7b1c0ca0119bee1ddbe460b2c521708b038e69e76d5354ce17c869486fe5d0327a2d4295660418f1d1a91d42869139716a36c44d7f596471b3e20528703a8fd276403b5c2c1c40a335e7ab95538ee338a72ad5f958fa33cff0ca6eaa3abd1240c1c53f3f88881bf8fc95cac27ca5dae2afb7aa95f9850a2f8ad302bbdb18411be511aacc0393936b0adc384e2943172bd879ad7fee46e9f8da3c149a972f37b7e1c4ea8d7500d0578e2cac5d6e362f4bda22e8371d219801e6d558abd60274f58bdd994f7d6aa6fb45e8fdbdc2cf7fe59e7bbef2f385115caba30c4295936083c75a5ecd8656ed9c2800a32f5e0ddf7edcbbaf7bea54f73eef77a6fe8e2ce64ba7ce7ee83ef7c927ddfb3f14ca437a3080ff11ad85b28c21cf16320e437146c8d7d5aa3c4f9cdfa8c1003f4ab022e40b93922b27b8d16c4e2a8a62a9aaa9a80a067815a639765b01e0f81b6f7e4449bdde259426e01c605014754e5139af573ab9b8aa514d510caa88d947144c1ec504d399db53a9deb587a6a79bcc55c4fcdb1238c24125b48cce23941905eb7289c42ff8c3e68bde288805f3163f0e1a8561327e7b340d5ddbcc1b8e634e98f6e0b5a64cd8e64477dfa4187359efd7ca75644e65cd24b039b59ce400c5c760116a73d5da5cb55c8f00ac3e05de14b892cdab17c13b0b1c97f36159e343d4acaf4113a3abad6cd9c1040043c2659a670300d128563060303cab7515b0657977b652353799b7cebf216f5918feefd655d300c0181b053b35690010ca0b21cad51626fc558c213bef1dbb7c323993365da3756d31379fc5583c22584a37fddd1ef4a18792120365a26547d03dcd3812f7dc1531bf5b4d55c0535b92132159611bfef4d1a3371617e7e74f2efed4d1a3d0b6cd814081d035ed364706fcf7f0b73d954da84afedbd34c9b669a80891d313f0952918e72086552ad5aa5e4b5bc140bb8e17a8d956ae8d967e1fb8353df7fe0d9ff4a544a55b2f21cfcabe7c01ffce6b31f2fdc9a7b16eadf251893a5e79e0bdb26692f8a349445a8e5b56a8cb56a0cf82ae4c999f19e3bbef99a6f9c7fd71dc760c3cca80baf99675af19e3bbe79c7377ff1d8edef844d8dcddf31cf32865be4b41c42d0071f4d8975df86712abc1550e1b0a518e487d783d5aa430c45d509208ec4c0a7e487d7e38b1a20419e4a5a05410f7c741ca14a6cbd8c7d86ed43879d0438723364c042e6ebe6de3bbdc7023af866c0bcd1c76e064be63b6e0604d8cd91756112b5d085c3f9f0c31680d6882ce5200efd20ecbf16ca5e0ee6dc0f46fafd98bc26de9e7974eaf0f640d8909c078bd0f4e6aa352842b8a21dd486c14056ffc87a7ef09fb25effc87a1e66b29eb87970f57791acb8971dfca7c2fa91be978599c27a3958b662f5cea009741421a5942ab54a31ce21c5dc0cf35a4dc8adb4561ac37500fa830eacfa83a7ac64d2825b56d29ff9c61dcf0c3a6b8f1c775db3904c140cb7b6ecc36623690d7c339934a1e47f1bfadfb8e3e3ef1d3c4c13f3ee3957374ddddb2822849408f725d1345a40b7a13b224a25a0a7fde6e8258c9095ad912b251462c99b05c9e7480e70045777063d79366dfbde18fe1e1cdb1474013f6c87586523c44283cd30d50f139b43c667d89684a08e4fa14b12e70de980ca5853466aab1cd2b0aee4da440b7a232df1790b7b922f8c35ea68ac519258e23f3f6a49d480c69e262174405b462b08636d09458f92ca1cc93a7a05dbb17a0e8e8daea1c3ee8fafaa922f15ed2f84d58468587651b85474c25b1b618bc7606c382e87011519b962875c15466b7f1855b04f1ada7b210b1a7bc0ae13368fcfdbceee36f4a0835c34838e215411a85c80506ad8fb353fe07a9a5eb929d365b8a919e7973ec6a7ede7962ee433bf7e83b359371e7ffc71c7f39c2d6726b5743e690eb6ace485a5c292bdc199b5f64e9bf36a5286b40d5de8a01984606496ad021919fa0580e3a7f957b6f8e4bfadbe2ad2fc700afca4c56f5ac9c14ed2e2b7ac244289081799c843657412ada2dbd135f4007a14bd13bd5b4ac2e3b27316231c58b408645572c07de565e6af78acd6f2f981ffcafc00779e989d39716266f6c45f710e75f6c489d990911cbb86d7f30b7e33cc30763df87a37dd4dffe774379de5896cba9beefe4f3ccfec8913fffdf1d2ecf1e3b3a5e3dda29b2b16736e1176e4cbb327ba1133fa5232691f4c7f309dfe601a82f307e3bcc271f4d308c1cba102f85ac56a9209683656ce097d18e703e6aae57d57bc35682601be7a3a58fb4f8762b9d590e95e0d59ead5a3cea40139cf9872664f58662e672430c118f62e876a02fc7dcb1194c76a2027a3a7372d133ccfb04ecc385366ce33271d66a9b077a51454ace0db0379ae850ae8286a8ccb1746c09bc81e5805012ab558c61e1f440e24b76eaddfb8b12e0f9cd31307093d27b6c57176e644fbc6399ee1dc8dc10ee7fdf8ef56f84cca12c239d14217d15d42721b7daa35a7b2a1d22f1c3c21cf89547fe1e03139735212bae3152e030a60f24be949a5c9e9a1a63299e6f7c6ae7f4540e7ecec897608d4ed10f6bab9d4c73841f4b1548edfcaa53ec649237e95738b7dfe16f8fc58085f88f1b80f0b5ad7cde63c16c8e2e4a926f9ca56d884723c53d0504f8ac5e2f786efb4a2d60f0b81be5ba4e4b49a60e9496545994cb3847a9a5042ee57931a6f52ae48a3b47c26b3cb268fbc1a5ef2f98ec2dc39c7c9c9dbaaa5be8128b2c13c4de9b004995776a24cbba9941ba6f97d34220778528cfc215d526b86f398df709310e47d295de5b9e16c1792a1b310e40de1a36fa4d95300004f6a6943f603c0538aa93a399ece39aaa93c05205bf372f2b635f532d52865f4b2aa71a828ba54a35714153f42a752bcdf5253f411ac529e4b0e0e7f8351aa893744d75216bc11c26cf006a301a4c571de35f477a5442352eec7a51b91703e6e7b116904e27ad408b042f1c7c8bbb2c0b1afc8a11b7b571638f615f9694e657f9bd806071bcd52edd9142e66325334356bab49d52d526a249474a1907eb13cd989c2bac2a194507322a11652f6949a983029e1e0a6a826b5d3a904d534d5d2f81b9697a493f67e79b0a1f653338e9a5472bc644bcde42753aac5bf9e6396eacca4e854263b4553338ec2bf4ea89e5033138514b5f5a0246726858bd9ccd427821aab064d64d336d559f8f589843ae9d89334f8ba66f1af2753699be8b11aaa93b6334992052b3647de8c9012cd028e44f6ce890849ee05797fbf79b0e7267c97c3717a5279846413214827b2e411810ef8dce7b7dc54224bc773d06c82cf707ec9c19b674f25f9fd21a4936c92e3cff4148d4333cd249399c3ef2084f443e8279489d14dde0169f780343b20dd3ca09c4e487cf4f724c67f07e7886e4047ce7b891d62e73f0cd27fb87fd1c52f8dbdc3f1a916f5918526d011b484d6d01de83a879c780fb99597d02d9503ba4239e07ed42dd03ba83b069df13b50d873c70fd3fe011d510cce1f0aeebf2fec90e03cd20fe3b032d20fca4be886839aebfd7fd90d7bc0630f541c040d5f3ab013d4a80fee464fa0e7d1d7d0bf417f8890272ada5a5a96e6534bcbbe975b6ead344ec2d2ca1968acb4388e5e5aae2fadd497969bad45a8959b4bb9a6dfa836cb67a125c8e126c718011dbcd2aa25a15c6b0a6aec14346be550e5139268f5e5956685af058d158e724e4153c86ef9657cf93e0dbe785a97f6837c918e16925a6c64bca18ac55f5e61e2132d29e1e4682f9bf3fbafd92004003305838729c63807942684bd1c4c13853858c769a2f3ebc5dba4fcebce7726f3cadb2eae10952d66555555355d557445839f7e80281830c58001e0aed5d377dd755a3114c0a0e88a22caa01abd3fa0f2bfc5a9c285b5354631a6fc77d6555595097a088029773e7487e59949aae63006057b00845022eaa526d42410aa12a262d554b14a26efbf4d4ab7eebf347df1cdf7eb9a9a82939aeaab5a43d1346556552edf4f3585d740a740750530a68672fadab5d3ab770100c6c0abad90fb0326e27629d05b58fb700a1382f9c166ea49957f1f30d45586e270c3e74e8843101c00fb2312ca83f047fc65f04396a07d7e69e93cff751bd54aa351a936a219d2ad4c4e56f80f3a95c942b55a98ac00e26faddfb8b1bd74e1c2d2c90b1768a5d9acf0f7be16c07c4a66acc015fe6ea15a8d74251db486cea3d7a1fb10aa946bb7c122d4963810d593c06e832535322fe32c5eb61e426e294cd442eb8c56c9734b4d2f8e284ab10bd8ce17683e71e1e2c5f38902758cbc69dba6c6018faf9cd0e0474d13e2916e015061702be1e4728ee3790e14f8d1c9e5b6db891cb52c9a4b2c4ddb8669339360fc35fed0b2f8f16b79db34ec763b9fdf946f862538b9181d7812f90829b556e52c9c81467501f6b19de4ac9e9f894d3328377df8c963ef1e0c0002a349d182bc6d6e128aef2dbe3d00f3c1b73736561f9bbe0f53dc336ca13a1202abae61c360f7dd8f05a61ca075e2b4e91d9096daf9907ce4c7ea9ca44d254528495249264624697d29575f5ea92d55eb912eee2c34d949398cf5aaea2ee5ead99c37572d8b4b6f2e572fc20c16b69a364e820dde229c14eaa5d659f09672f5dc8a7c933fe59843a0c495fa4a952d09a0102537abaad7e0454d83c875120bec772e500e9ec3c26c7186d7894f0a5667c9a042fc134bcb5e32fe2d6160c47ffc1d593786512e63dcb168e68cc45c3a574d1095ccd4b5a939ce93157289b9b4953312956cc233ad493b3fa7a70b78c27014b700d8b46a4a563581c214a50408bc3a4953f06a7382d98021ed2898da46ca330a0e558cb47e5ccbd26c9225b389925937f48c694f6a2a71522927a5ea04aba46ea7d34bbaa927f5c48486899de688899249d7003a374134622afa54cac86aa6a6a5a8eba8a91c000150f00ca598a916c6306164cdca2915ab764aa1fd89f9c4e22aa1093b9b865ad1582e1a694d4feb85452b9954153bcd9861e1c9db1ccbbd5371ccc4f1826a29d66cbaa4b85ac19c4d426a96d91a10980502264b816aa8e9a286553d81c9ed7625454155aa9a0a2a9d56559a30e635c6928925c3c1666242336942c30a9e05a3a84349cdb11c554c1d636d3acd921cbb2735774ec1a65704c0baed30d5628c0121b3948096d1662d2531a34fc8762974a9a251ade8e8298646f421b3689d5357ad7a00b6f50040eb0190d703d056e681d5594d40bbb47319c95f7645de5accfa3ab7ec9f86e879629b2a942a745b654c8da7e13b4425dffd2e5189958c3f495a07ddffe32e06c05d6a6a9a49e3e915fcdef7e2a4a95944de259666263b80dffb1485a4c52cdac5b84b2d26ed03c988ece62da3921baf2cedfdcb81b97fcc6037c4a99cfb90921b3f0991017acc5ef72c4446e745f064099128e7df4dea6fb9689ba67df12dfa24c73f63d7eff2b48b4bfc7ae9a2e6f1e763d7fd90ba2a5cfa697d4a58deeb3f2d2cb02ebe459f326cdb10d7a661fb4b97b4097e6342bbb4c46f2c5d0a4bbcb424c5d5085077f7f3d0851e3a1268e3a740feb2b973b0b23c03b99533b006f2c71bd7336d93dda7b9ec3e66dae62de8d9e60da368ae1b45b36f28da7d8cdda72946df2c1aeb66d1b861da1c8fa28290ef4fa256a471595ef19391bc23d0c2554b873ceb700a0053ac2f0a7f83ca6ca99e4cae81beb0b6b6804974bb342b6e7739b50027848da194264a0262ec96142dfabbdf83af4207655109a18c141ece402e6b833ac791f519f0e36239bfe8bec7c8b0afdaf67bec79fbab4cbbc15731dbf36cce0330ed9fda0bf613b6fd5596319ec8c9552e177ca7075bd0430eaa088bc00508c46abce3fd56d92d37e3c681c2f8b06d9b59752299f458d6b0b7da8d6d61c523cd8aa063da563269d9a6ef5fb9621b838eb8db933a220b1576b7603bd0dd95d005f41ad44677a137a07bd19bd15bd1c30865e2f66143bb8ae092955d1fdcc06eac1c25466bb8007cf1759be5a6efed49b8bc8856d9f59b5da94d485a80c2d476a301793e2704bf51d01d47871e3f167651a7d3e974a3c366a3d16d34a090347dc3710ca1b50c533b3eb40b7c6e15e4d131063d61f7dc319cc1e6c6467763273a6cf8fe96ef87f23b690bb68c50a5d40c6889d094762873b763169b3c4f6830b43d6877af4b23e7ad806878f66ea2aba1213400496852a1848e75efe6ebe25620087f4e5cddfc1e1fabc1265688aa8bd948633abd225a4467c7357a153fecf26008a42351e89c94cd95fcd16bd88eab4e7fdce05f14875e680a660ffe43948c347705db842b82d67b5ee859a343a8fc8bd3da36caa0395447e7d0b5c05a37061ca4942a8de97cddc32e4158f4f8cd52aaec4626bedd983ab232e8833ff86f5b9c8dd8e2abc895e8d0551853ba2a63f049fe4203fc829c2a05db1c6c8989d136edc116209f29fc0585353499d07c4de1252a1a6cd866bbb08b7c993b26e7375016558415486424d8ac8dd80b8ecc5b965517804f17dff59b3ef46d93570a7afe98cda00491ae5011e77b7990a3e10bf39a42d73606dba2e605c3164df07d3fb67e25d032ba678fdd2f07e3c8e9e90043f231d3f1219c4f0f754d1ef407829b879e5b2c0e1e550c52e2e0510a68e9b6746a10f6795f895f8c674443a10925a51ff3a6fdb8144c9a36a5a195e02f5de1e92bc12c99fb739eefcfe742abf0107ff6a187d4c0b6b559cee65ad2a835b6664b53d7b85a9f2fbe9de2bf30ecd32778354e9c0e4dc4f951c834f8002cbfd6d1f9d2aa3baf5dee1976a4a1c6910f431e95c7bcb946d06659b253d350865f5d16da19339130c1375229e35ff3af74b636f82ab4611b7d5e76dfb03778c76c48bf8c2de157540becd1c70ae77c902c3c1859deaccefc5a5f8087841a4e19f096ad2df0e56ffc2b72f6cfafc5f89a9f45bf13b388c9f131177f6e31b45bdbf72fbbec17c15bce49254eebb4b0693b2da42387ff3556a42825b0b729a7ea73a19c7ea5d1e484d7d25c7d119a42f21f19cab54273c6c8d58ad76f29cbab980d3dad84eb148beced92500e0d7602198110836000224e148330990300ef6c15404feb9c86c818464624d23a40f5acc7df14520ece0963c018cbc262ffa40274e9f553ce11674a05c3510030631814004609c6401dcb9ab1ed19cb4a51fe7dcaf8e7351530288e0eca945d71a6ee3a19da0a314b2514538d10851055fc29983082a93812a02a050c338b09200a04ad520824166700036114482cfbb00c42348a29512d161a501d9dd36c96481b40409f48005509588c58cc3078c3ac194e8827f3baf8974f12959a3309006ce89a8599058411102c1798698bd9dadc5169cb11e2a649740c5d95928bb882968d1aa28c5c656a43e018535baf0cd9fd4a5c8a01ed10ca87f01e4bfddab5ac974e9f9b9f5f3a393f7f2e9d16e993d50b5377a949cdc9a983ff7ce7c30fdf79f9e1872ff7432b8e7698e8852860f0cfae4d5da82ccdcf9f4d6732e9b3f3f34b4bc7786139f79aa2e61c2d39fff09d971f7ae8f29d0f079ec7bbff0623782d7239be807a7311f832c1ea2e8b8ccd9998e362e56b953cf82249b0c12d962057e592d035ed5bb6d9be00e90b701698a631f8e26779653e6bd946a160d8bd1e22a880da18a17e202b46ad03a4bf71dd404f089a260b55e88492aaadf0d6c702e95361ec2c7418715af255e812ba135d45d7d01bd19b108243a9c84af9c548c872fd30121222d27137221da15dd88f701c6c8fd28dfb538cfe4b261725af28e9440b4d099fb99876d76f8d933b355663a9520a222f864e6c953fd2f33b1bd0db0a19b82d4efe09f4bd61d883e7bb8dee2dc80f7662eb7b055de63c7a2566d71132e7710f67a9c06c0596c981bb8c2711a69b556d0839f6fa5950e22e6e214100b98faa19d32d6aeca32cc1dc4ab29d74d6e67395641b9229f2c7c324eccd37e80a03927ee071d12774e3234c2bba669a7d046327d94e56dcf9352779059247722cf1ef17d6524968272b3966b18faa5ad1353251c63fe10b7f3fb020e9135d8dad55194ea92ba594bfc70a32c42031cb1837b64876075b7fd0187c4b0c43d7b0fd8e20a4def3eb01a5f2eb9216f0a1ed4726cb27fc3fe0149b697f25a0607efd099e674bfa75e1984de9fae116a51939729cf892d36f265ac6a3e161075a965e18f766e1550acd720eb18cfdf6a8c38c7058fb46688fc3eb7f65b707b7048ece22343a1b4929e5bb7e0afc7ec866fa83ed5e97b3f9035f12d1833e6c76073b820790fc0ac73f15c103b4476d73e2d62ca356a3f127ca21067cfe98dae85149eb0c386e7f4f68d2f56b831819144b17422d5434e72253bd76a4c10ab99eada1155f7c8c8fa03308b5f650cbfbb8b1b62453b01711fe500e63371881eb7c184303f1ee5f18f620308b94bc00e383d70da8e0bbe19868d3efdc1dd0c1dde3b6d116ccff467088d5b58cd6106aedeb3b3c4aff2b0755b5bba77ec3bac3bbc6abba4de9f5c17f10d74743bb76e9442adededa53d5585da7455d0f9dbb30c699c44c1839c9d81746b7af7e3a30617b5a8c1f1c8b5d18510e113de1c38133d287cf07cf84e7208d2e651e43417bea0987d7f3904a0a5981c02ae73f1cb03c1f165d38f85e943463cf41101d4f07bdfff4abc563d31e6c53f2e15747794dfb69810622dbb8023285beebc1d1f9e70da1739f1688ea9d84f80bca105efcd156c49cf7d6396d50a856ff4fac6045c378fa9f732efa9f4f63ac2984621f638cfd9f09320dfe23a6e4c05cfd90c8783dc64cc50a9ee65cf83456b0ca30f631253cebebc35c4b809942142872eebd280a26e0630513051abc2b8c68dc1c113ba7812ea06be82d68033d89de27e12d1c2201ef95b11bacdcf461ec1e19bb6e8dbac964f629a239fe1db7dcf47bdd68fce04a3782b96e77f0fcf04994bacf0c38d0ed78d678ba3ff4e8dbb40d9934ec2bfe603b90f2340c1bfce1934684c2fba630680e33b51b5bc3a2da7e182740d27b93910ff64c0c70ce44c0dd1f74f89cfaa498fc1d4a3f29a05812059ffc71e803f3cc2725bc0ee7d514ba1ba1cc01aeec42fee645be17e53147939cd7e22feebbee566bec2701f26c4be79be783e5f3d9d3ff9a2a7b5c4de60bcb6eb578a1b2770d368d1aa403acd60e047862e97d6e75d52e3ad25523ee84625995b4bb77552ef813474399a35c2fef10966ed1ccaced893d7012c62333ac72b676bfd90b9f0f6a3577aa0f4a294086a2beedf0c9e05d020ffe05d595f3a3399e0afaa6d42f0528e78a146ab6c3071cd9fc84d0f1c7c26e3f94c7a402abfdeb1c5306c2bc72b8c4786103221a23b45e0c3d92052be71d72055b5d01a81c65f76c3ce82a9aa624a4af6b82a707ff758f6341b4d283982eb699cf9b769be38d90e8668aca0687328f46e06fb90b3dcec72a322c4bb5d13c0bada5957ae463b908b5b5d0d372d427d34d822b4513510ca8a56cdd2d0ad74029b95073f5d2d24a0dfedcbca75c5601acac0a4040d33156b0a662021814d7b68f663247ed644e014c88a26305634303022c6b81563ef206d3c430c0663d7fc47172094cb1319dc294516c6bd4d62d0b03805db3a9465333a66559963993a21ab56b36c6094bb7a966f3ec00a96913139cc839ce917c7e6a2acf9797dd3eec4207dd87be1cf5c2223485f0a6b926da7f16cec152969d0da440414f44321bd17a770aea91cc26ab46321bf9d4cba9f5724d9e4b4bd556e42ab908b57a63ae1e7e56deadef2717f222b9502efcc65c4c2e04ff0814a2d58e1007530ca068843261c2c2744c2980f0666529664de8ba4501802f2b84dfc7404d0da8eb3618c3ed8f4c5dd2753c7808ebfac5a9e950e603aa26853e0ac61868cab2666d7b560a7d0063ca40887d18ffb2a3039d2eb08496cedb58050c58e5c34c4d554d6a42de048aadb3946ed8aa91d309d55496318882754f17b1b314032b3a600583915639142475c3b5edd4d5c454d6cde5dcecb465a54d20a07b49202a058b614b33740c909831e9b85c67d602c0bab18f5c678f4fe03d7f0d9fc0178b83f572dd04dfd011335d4871c3d42bf118dc9604aaf0500a0a1b8bb5d54217ff1aed1e0bb4f0725b19f8c7a157daba98e3d8d0269720d49a810cfa93f5dffae6fa0ff0c83857d032ba0b21e5e54be35e74887ffc8154c649b52ad5f9f8fa397b3afffe401ef72d696275e35c5b78be49b24438c219b65df9c0c4eaec7cb5d24a39f14232cefba51cee4df2d5f51b5b92b6192d61a48d09e473eebdf2d7963f168476aa67d8f6bf7bc96d8b8664f0e397daa2384f7202dd1b6809626490a4e0230a69d82e4980f2cb8098aad6864ab7489fc01b17925065d836ecf2a3e72470f27a4aa05cba363523e687acfcbe3763af712ab071f23609b1fca984cd6365b946774cbb6f1bb2bdf365d923a290e6d22909d9528f4d627e5177a0b786b1745e8257145f9b5f71040b49c28a804d9c88bafb7a40388ddce9beccb92c39ceeb21b37cfdee8025bd3be0efc9dd9cf17e05937c84677d337a8c43f622d4847d6c75ce86b12896357e4fcdce04262e92572982c7f8bddcf239188b54e9f17bbc2c69fc22c3a18c4c83ed55acd1054d3bc25c6d414be98260d3d3da3c735999b1798591553eb87bb2f9e648368d9c165ccf7ce003ded71ded3873b5238c1da71a5ee30fd7b0468f3156665936afa575c1b768296d417359856763648d4fff35c29479914d3b1666eb8596a41c171677ff37f843781f4a2304aa70c0611e6b792bc2f7a605276cb03f397fd17efffb3ffd7e273df5e054d386f7398da907a7d2ce073efd810f3817e73f91c44e08a392b69f127c27529696ebe41404a15cea642486512d885d077f093bc462cc223b80b194aae0ef371a8d460d7a9c5b1e74884a788b89ea34f2fdd1b5784668170e03eff03307ad3893fc53872c291dbfb02d7ddd640c1503655119d5254718089022e951c90b9d5a255c94472ea5290246b6390862740cd0e79e571853c4a1e3f3e6fa8aa641db367ddfb4075b820aef85318646630d057699e8011985691fe10b270be3f339e221a5f07ebfb0827bc3df48e5f1b947e3d86976ea5a7defece619f66281911038b609bddb4e36a2824cbb7c2c3e85e5d4e680bb7728da63b1709e19e1a52b4236fe0ad6ae97be1abfe495178dcb235f4a9441a59c8ad9810c1da5cbf09348123af8334105d9912494503af8c19600935bd1e1f3dde0f1753e2221aaee0aaef5776153ae3c520c62da1cb6c3d8b215b4846e13b2defd8d21eaa31642ad66d9f599eb37cb2d52267ecbf77cc25abed7577552e25f2991a110420a106ce38f9eb9f1e0e65b1fac2f7796f28fe697375e7d148e15282d3dc3abf34c89284359435bf0dbd999d2e333a5c7e1ed83ed3bef84c2df7fea2911c72ae4bbabe8bf435f405f13758ec7c21d0f4d12da627afb45288d07320e7ce8866af5610ce3bd114b239be6f1bc7b82108d47a1adf9a9722c9472d9f5b74351c37e6288ef63855283a98ec1128aaa53ca441c1b11bc48554c85990ad5052347002b84688aa21142a104046395529d2aa662386a10c21863a880f062202a252a118e1652994f005382a5c29c621065c2f4c22c504a3485b36796ba2a468c83d133fb485b542dc95483524a78e98aa1a816534c45d1f9a709ffb8a6002f4b3483104228e3d984be9fb380a2a5b6a639fccf210a161e2198338f442198094dbe823185c0902152f1bf0f0acca40ae34d073812e9e2bbc84633e802bace69a77181676dec5ad917fac7c473e3125236760ddbdba38663fc30f8fa610644e0eff30a12c1a9c5a13b4c76c6fa7f64c64067df77a4fc8daff77f04ef43997dd7fbda70c15fb9572cf8d30de77f1daef8f7b6c215ff1f47f1ee3aa88016a3e882acceead990d593a1fb9a95b3e0970466ab2d82446f2db10cf6b40469836dc08696c07005607015278401daf716a8ae744dfbea96691bac8f29316c9df5b182cb4c6f18f6718e4b062f7c13a1583d749447c80b456ca54a39f85cb04ca370d185ed1f1f27baba2917e3828cdbd11645b60b118f14c6c93b815e8310c4ca5a84e6e14a9bb20d436d7529155207123940e158f07158348c5b52ef71331e40d636cf1d09230d0cbe252bad2658a664822f2b6914ec0287a2287e51a8be79a1625827669d292327c3917c08938c8de2f103a44dcad9718b39764870114fce81804d0a2600f8831db11809f03a20fdeb12214408220ac1d98d4289a030f5b4c0739b43c48746ea9d4447d032e756c7a2a2ec89a82806403924b64b3f5ecd8d51d4c519b603da02510497d159bb690ec3d274e3f169e2f1118ae836747d7fbd706e68549d0a6e05349bbc2da919f7e047a12a2a21f8c6cbbc0a0fdfc9d3572f5d7a684658c3cdcdfdccd5ab37c4f3c5939c2f354c7b62e2faa953e70aa15a49045dbfdce42dbcfc306fab69178b0f5dbaf43a7ee7deab57df3357165942aed436d64f9dba36918fd3e30eaaa0158432e5180193e2a3b11f00d5c673753b1159084f8d01cebf8c3debc575383f1c879a1fc59f228c2eeff6e05745ddaa433d7ff44db62ff4c0fb3b86e318e273b7e438874699523b39fc426f0f3088d8cb9318014673322e42b9c6bcd10018cc1b467f28c3d7bcb2b2dac95c7b56297b7c2cbdb2f2ecb54c6735b8fccd626e23733d57e423359dbb96ddc84df3011bb13d28a02a6aa0f3e8aab0678fac73c6a25491030d0e464dd0ca716f90309cc6afc4674468dc03bf109b214776f85d711874836831431fe17c387d063ba1494221bc153974e487e14546fc742e8b381c2f22582b2bd1b53b16eea7e90fb1b35880a4f67f8ce28e4c0060db1f159b49ab8a9eb09316da16c1ab251a922bdb54191438bbd68f966e903acef6a8ec4e4ae31e2f08ddcd566879bd254a2c70deae661bfd30e29234c4d989e2156f076bede900aa46202a82a617953e3eee95957f3c84349ee418e0f17d5adc99ce49582be624f83d2fe0de1761baa2d4a8ad4809b51182bddf1d7562ac075ea892135b83c3749965f093969fb474475aaf39ba95f4ade4d6f1d9d2f1d2f1e3259ca9b912ad65b39738132fd24c4d806f261b6632693692a6782569f98ed19e3d7e7cf6c46ce9386558659cef3fd988f3ab6e3585108be1ee4be82e743f7a17fa87e89f8c6270a83593c05cd65c849a5b6bcafe6f7a67a1558be217c77cc1782220035c321a286798aed78a300301b6773dbe32478a36e95efdb29caf4f425c42d5098255c2135d35a1f698a50a10bb8728f86120a0324a7a9cfec7f87ff91571ad26d876a0837fb55cd8ece72a542522087381fef4cbf1ae7ee0dd817bf550f0fb5beb6fc214ee7ef5975553fdcdf54ff1fbffe0b86aa90d004d1974a80a6d803bef04a6bc1d93bbe08150af990f4b98c8e8299d2c0878cdff23aa7e8c6a0a563445d1452d0e73a7bedf1b4ac1e26bf509741add8b9e44480985252bad31dc217d8d879205b174870a79fe58e10ca164f3f695ca34f7896935642e004971ca7c59a2c70d290eb92d14a7d8e6cce989caec95793e922663c7301ecf1ae8faf7d80004a2d31171b569971f3927a52d4255bc99762a9e88c677cb9dcf1c335ca37e6d6a362a9d675fdfe2c53ebb4a62acdff3221a7b3cbe6d164d8848a1e36e21506efa4aa929fe8f78e798837eb70b855d0468d0811e746d73b0219e6e9af6a0b3b3b393df18a1cd27d112c7369983e26a731432a732920d674a46ce1c6f7fa9b9244b7a7be36d5fbf4ee9a69ec01b609bc1e937e2cfe2c14c85b587a4083a3179f6a38636d8048a0ddbd06003136cd85fe98c4bc03bc18e11a3f058472b681521a8d75c29b568b2588074cff5eaa184231e7ebd96f23c966aa5bc5aca4bc17fdb248c52463efa11c08c9a3653c66f0c9eddd8d8ec747a1b1b707203302118ee7f132662d533097438dbfea63761cc9935d51c7ce9021cbbf07ff0c3e0772ec813daa33f7bd32b92c865ca3195cca12b79197efc924ddb6f6c056e4e62b16d8b15387079aabc54cb7628040bbfb5193a4b6d5a81d056ea153f2560ff124223a686a1d86ca511e81cbcdc72abde5a59f6847f65b5566d70e89357c1c360e791dfce35a7a69aee9fd8fc5f359bad3a3f48a7d38df4d755554da95f57d38aaafe20dd4ca5d37f52bc67ba58fc2355551df5fb39d775e1ee9cebe6fed4ae65b335f1fa0fd38d743afd829a5255e5055551d3ea9f6620956ea6ffb408c5e24f1577544755951d77656a7ac58dcbbc29caa069348b50abd42cb995529c5aaa654aa992cbfffbb5a6d786cea00779e934c727756f63d09153babbb1d1291476f82c1786c4bd411f50bb90cf6f6cc463be48fef435e86df06a781d7410ca48f54da095591d8947ea8d98d9b3f1e025e580fc08629bb45e8a1a2c084f771af60bad720afcc672bdb15c6ff1a1546d2837979663bb1209a5e352b53e0fc1409e83a595ba9fad4e83d00204d4cf14d483d59b13065e2bfa94efe556ce81bf94abbb4b73f510f29756ea6e1216e014d405fc9c12af47faaa4847758ed30142a0e5cb47a1d8bf159b508d6a2dec3ed58b9168ff0ce33456b0385ed38010d030c6931c1160423ec3348d1906534d603a655acb7befe15a3f4a41e36bf0245631c605a08a34388196a2d0846264718e280a999c3c5fa99c9f3c0a80218d31a638091a666a42482f354555154c00a7d484a0314c8d28098524094e10aae004a6aa5ab2958462ebaa69aab3ba453535cfd80c064c18c7be26c15245f16bfc7358517ec950334cc394124a534c8779ace014c6e208816bd334c626c77726c66fd7d91ad3cfaabaae56183375d585d6fff362aac9e464c25159811050f11400a58a90a29ea2098502b51cbe52d05c3e9f0348630530b681021085e98a4a08660a5528052721a4b11655402158a38428a02abaad28b6a1ce329d9afa69a6ebec5491d3352545238c19d94099fc7142b298529c25e4fbaaa6310070a8a2504513b4ad5ca353c84579544473a88a16f659a9854f4a33dc642a5cb3f97f972fdc32bab2d887a8df15ffe44c0f7fd0758cc186f02cd9349c41a75d68e7dbedbe3cc56985b01efbd4801cfcd13c2712c2dffedf127c89fcc611f45308b50eb1318c247a81036ee0abc08970df2d17c1f3ddb2d8758bb9e5e622449b66c87a7e38d8dc281415880d8e4acff0da3e5382fb79d50ac74bf6b44eb285fe17140d7fea0b857fd12f74cd648157d94a3ac645b15d12a16db939519b12b18d52296959c912ac3ac6e6ec09cb24d9c2625bb558bbd0bea3b0e8eac554276cf5081f36856e3b5c335a4e1da2f92f03dacb52c9745c01164f4b1dea282fd53839aab18ff46ba1c69ed7f759f80be8a145b1b361107ca356af302f740e9182d4568d658ae0d5bde568fceadee8ce3ce116502f00343053075fb03f2762f2155db748e8e7124f6243ddc214ab1aed505a5035ba116c55b541a8a35fc7146fa9067e2af1776810fc52b394bf630fbea06ad827946e1093e43975a7a98623a93c2b19a779381cafec0fc5a992e21fc6106773fe7ed0bdd5e1a3dfe1b78729e825ad812f5cbefa5672e0c3e67698c34c6e7086778333bc9c1e63315b27862c31d76b7cae57caaeef965d3f5576fde6b80f97ac30e18ffcb2ebc3565bfcf3f7d46fe7ca958d76bbd72eb4a1d06eefa9d6a0df0ee6a0acc30cbaebc5fc08ca7577ae5a1b71f6e2837f8878200965d8eef2569f0f7779bbe9e8bc8a99925536a6edd271cb3c62a709d66c6d2f5003562c95f7a8dc6bcd4c0a69bae3185d2bb993b6cb96797cd699d68f58a58c6aaa18f60239731896bbe42a48c1002751029d43574663aa94eb5edc3876b837a29a8dd482237ec2f5666dd4b804dc99190194bb045bd3f6ec6b8e7a27bddcb14cb135413545511253f2de842befe962338cdd702380284add32a60ab1a7acc9795d01853a466a21af188aeaa8ce6462e4a6ae629510d8105cfb82081432e4bd32c8e7a3d93a0bab22b05c79a8da51a2e16b95f72a84e6aa2fa23cb98a13da3f4fdae9f3a10a08de28d521a6fecb23fa223f33dbd8577df2db4c4f9aa54ca8237aad508a24278da122e917d3dfde577f12d9b1087df8043ac3570d90b1ac821a2ec614e2614c55a9f40d6ec6426009596a2c0eebd0265ac205549d29ad7a923a869924b79fa2422ad72b5429ceb5668eace7a929304de9dad2fc952235c964a53239f8ee44d6582e2946d2221a5d7c959e4c89586b85a4e9b517f5a463e0f58726dd2921afab4cb28496ca4c7b843986aad1d9ca741e037f5473e7d4ca6a8a9a9ae150ecddd3342653bc78b9dbb3d4b9a4510535621e0abc5d723e72b65a0a38a276469b8049cee5f79db9ccfa8d1beb993967b2389b7f3a3807773bded494c77f5032b41be7d66f6846fed2b1a397f269cd98bc70f4d8a5bca1dd583f77a3ea9d9e2bdfe6ba6bfc18b3ddec4a5b544e4a8771990f8a281c0f90da5a0e52cd564cfc5ea8423d393fe14c5baf0110aa948266b3db1535ef2627e6f80dd3486282e7d7c0d7b3267f0e7e651230e4d2aeaebd8a6a54aa60285d3726acc9c5c4023e92e79d999cd017606d816ad45335deeba376529368062d0772ed8561c403bf290266b87ec0f066ca4d1116c71deed205db1d61ecd131ed4ee356a3637fa6d76b8b84e0ba3a5010c14baed866b7502814baa6edefa27c3e2fa397e4633859c4128725b526f7482a2fe5982a31edd28a276dd2fda56a4beecfda54622809a3379f218671a25a39bda64c1d39f2aa5ceecd6b74f4c66e18f209d01979cb7b50e4a9544f9f51262be2a5b0945ea81790fce04ec07b6ac88aa449b308797eaa9c5a855499f8f207c1d94ff9297eeef9fe954261d3f7dbbe0f3ddfdf2814b60abd42212f78d3037f888a3d2837459c93023ac6fbc50b59abb24b3cbe502e95e7a13c579e87ba1786a2904e1aada135d83f1282b5de952bbdf6b1630fd7eb0e21915e707317098724b32d239940b7d3ef77ba81df916dfa3bd2f20bed8983ca616541c4423d27305204eb105b652a7eaa5c2aa746143d5ea9598211c54fb304fd30d0ff7bc3f179d4f7073d5ffa85bbc5e22941c287ba9fc1af894b3f54d30ca2d5a4201e74c3916bfb8328bc7fdb17f468804bde84de21768290b26c3e1997aacd45a8cd35ea8b5093be0da7a02ecc056b4b55b99b547911cad5b9721878cd5f5e19fe9d855663b9ce8f4bf2b80f5282aad8895998b628048846c19c74f84958f8e3208e04d529474a541717d20d8111ec96130aa3b09e29db859999825de6a8eb5e96d4407374cdd10098cd802554487a1a964135c43f8ed0c2a814da640ad40403f80fba56b874f4d8a582a673cc36ea435d7a112bc656b9c50eb661fc39bfd3f73b87d9c56f6d6fc5e02923e4a60fa2f7a34fa02fa0af0b7fd933306610ed1d22556db6c6ac8c4702eb90f21ea977b97510dbc5f173665c55d5a89203c5e3bcb0b87a2ba01a0a86bd31740c14d480cf79313f90d3964a94fa8a414aa175952f8dd27c4e3af81b3127d45bfbbf2cfd0e65c6af1e54d056bc16db814b86f05ecd1b3625be140cfb817d5ea94474d5a7642e34a2e25c86c864da837e27e6eaba19bcad2ad1dba454a2ba2ab762e9842eb29b94cc85e182c2c25411cdaa137903877be7f447f69bf9298432a361a9e0101b8a51739117d339960b439b26f0a5fc4f6e0a7440fa99fdd4af43038ce1663a51c09268239a7ef0d6a8d783b403f822f482f87691f96b7d2932f84fc5c9edc19d0f4f4d9d9f9a1287872e07daec59e8bdf5f6f2e9d3378f1e3d7af4e6e9d3e5dbdfba8b622aeb486edf452672d16b84cc21825256635172c8058552fdd1781681507fccaa281484a704c9b925161a7f439e7bb02dc0e0d8afdc2d6ce1704fd56c9328e46fde4b54a2e8f4d920ca435b645712da11bb2b7dfd7c5f9edb20e2befcf28240646d9260a68de1f613802979ee58a031ea5dd911aa6d46a81f8b7523d7e96981c938e3c8994b524ef97b9861ce5ac216ffd7dfdc0414d7ff089e12dabdded6f3b031d884e747bc757dd88cc9a465ccb56569c714f7df67a56629588dc35d4bd9e86519da31583bb28b006d0dfa7c5dce9bb67dcfe0164f0aabb02ddb083d5b363b7ddbccf78489473b4a853eade1fe7d081250c3688030ea427b6b6b2b78be1d3e3f011ee3cfbbddded6d6f3d1fe83d286e3d8e8ca5e0bc75e3218910837b02343773ff9e4dd773ff9a4384e3f76fefc63d3c3142049c816aade2f724af417739393b9ad6132d8c77f4b8c9dc7e9aa8cbacffad32a375ba9925c84b6172ad59663a7858ae4f8d1dad94c56d92d00124b10bc9f66b3676a478f2f093d8ce3b42ad585c1d42e922bd0e87e21930855f6f76a16dfc668af5459a67b7bd736b1e6c5d65247c4f3d817e8b6f7c25a6f0f84c5d7e5b3e8d5d29bb72c9d794317de7d39576f346c40e8e12bbf7c4be8534d198ef989ebfb45c1b8fe4410b0f9cae01634428f5dc31e6c1b76e42223f8d4f391a38c6d80885838e8038a628c22412f0e638c361bd578e8cec765d8eef33f08ce80c248dee16fa40ff27189d66ad0ca331045268cc5325a8dfa44c6dd2ec3b60c44f2cc03624993f6437db7d8093a4231c803cf18f6e287c20da81f2054302d804c7bb05574b7e4c67862fbef076c939e1cc5b1795445cbe86cbc7eb11a48d3b33852f76317fe48e46f09195744959efc9eb4be0983f8f7c6b62c107ae9be58e829794a8659d93e68bb80119de811b42e6281d55e3c2445ed15fb6c7db2136e5a25b64bff7ab8bd558713349f7c99be5a9f0f75d46247f9d5513df50f5f918bd63efd513e6c73ec601ebd721fb6d11e18ed9d97ebbbb615eeed35a6e25fe53375e7afdb1f93a8c5fbe395fad8923d7bd5ef839b5eb6ebedc4210198365e892f2e3c206d2b822dd12494061ba3918dfde0e3a5d8e393570a1f9d3d8d8a35b8f3323babb727d654cc9004d05fd3a77152f0fe87c5da9aab9e8ca215c784e841ac7bc11c1f0800f5433ae2b04d5cf78ee1707c476d03abe8b290da954777205fe5f50b63822de73c31a0e42539618cec599e35a7539c4c4f4d1bfe1d971f3acc0b097cb9b339066de5c8c29a9514fbbff94913dfe9372f0f760e73af188f8d75398c64f22233afb5a7e17e6c6cea4570a5617d3a56cf3d6db8196f70c2681b538e3365b40debf8eae54f0ee3c8521239540531669f1d69307fc7b42cb36d146cfdd2e2d8beeeaf092c3863d615072b60ca31afeaf11035fc1974f6fa45c7616fe8451d9f53f56b53b3323855f076e4441d0741dec4bd31688e956d73cffe74f135b77990e4428cdce1ab917b102c0a78f5f7ace3f0932804cd33fb41221fe1fd9ca85e7afecf47716a9ed927a23015d9f73a1b294654ce08745351cc88039ae8cbdeee3674a08da6101a8b9c38da41bf1386f8eaf1327b61b8b15e18ce6b53d66133f8f287c7caae1c669a070f44e58d7ce5f361694f7f78f8155173406de4c316a058d9f1c18e6d9ff2f99eece55e203e79fae9c07cf281a0254138b2a7c320822365efbb1f7a84a67af1f2e2df0114b4858fdf261fb54d19246a8c4eba1bbd0d21d8035d63f60bacc9bc78b833e2063a393e9933f5fd83272943415aabdeaa31f81badfdc1f1bcaad3cba59f0f2f5b7f410d556819d67f4275752ca8d2e00beb82a2560d7ab97427144aa3b6a8ed10041505eeadbd25046c980745114ccf6f53751cfac50e112abd71f48d71fbc8223a83ee453f3b22bd8a38e591dd610f0f5077a84e928c2d4263b2c77b46a3e70520fa9efd83dbe5f78b84b75f643edb84a1f8300af26790a7f78f832777d0de1b356f6b4f7cc04008385cc32646e2fba56216978277de2f16d798ff326c0be636e689dc890570dcc76d59c6f81b6cc80a71ee7b1729e2c9be9ecba3b60c13418481a3e844a43f2b472c60d37703b65f094c9732b173105077bb1b0a1c3b1db1ca0cfedec686b0801536b01b1b80baa19bf4e6a664f27a1b7e67176df89d41b7dd16a1716373d4461911b77c9fe8ffad9714d1bf3b1ab1df1f898cdb03bf679b7e7ed0f7e53b6374e1b117a10b837dae4a92dd3d8802bcfcd2a2ec6c0fa384d2c81ec044c745f4c5d13d8043ab007b28230836bf1d8e5026ce89a340d2fa1bf72d505de92906591051001f9e78d59123af9a78988fd413bedf93bb115fee879bfe768e73b4735cca0b2626272778330cbbe3efa270ebe2400615e8a3ca01ce5e83fa1078c4a82d359a5ee40b06db0a87c6601b08b81242a50d054aaf575ac3bdfb57aa02bcfbd1d8c87eb185a7ed185440d363a31b537cbdd783cec890f7fb9d0d6445e57841b48b9ad002faa8253481e785b435da3245007f68011eb3dd0b7f109b0c23f7b7bbb7a4e2449c780f87ff00ddbab511bbec884d56360dbbdd0e2ada6de4fd82f8bf8b36775174858298d932b6808652a8808e883d3dee403f25765e09b0b14f427bdde84e2b4c34a367ee7890c9e193715fecb2377643446cf5a52a6187239ec6562cbd134687b4cf887c835bd2b989df7d3eda30444ae4ba721b8d9e8cb3db1718a4dd9632c4765b6c9d2192a62d87b2dfe733596c65d136ec2bc3c772dfa16de8421b4d04b018d5da2b0e056c9c3fbd28622f3f7131f4516d537a51c89f2f4abff100e6fcdd6de8431b2505260a74a15e284f3ae803bf7a2ceb79d963f9a9a9fcfbd5e85b9748e0eed82c16d6cb47d60bc5d9d71d3f7e757662bf4f47360d8fa00954434d217ddcff73add16ad910bfdc1e692bffbef95bc7a66666a68e958e1c29dd73cccde5dc63f9e96978f59e5a1c9d39fae646f3cd47674ebee3ec99779c5c8fd57ae175315e603e8896a2d493e0a6467ce8521577f49a4f7f2078d0d74cab909c5f5b9baf9e621890954f2eacad2d544e316c434faa4af4c1ef5145ba6882b2fe8f152afde6025c0da8b3bb0d3d68a3b9e0fb6c2cd2c71908543ec1f24035f2996144d2cf108dca912704dedb918254b17afd2c21c130002aec6ec336b4852def9cca6a81f7116b46b639c137ce40cc55a40c7d8511f8b46d528df4154551fae26b9f06c214e9c5187c9410e851436506dde45f8d7d1ba3f6ee366c411b3942bf36ee67eb8fdfd80ae7816dee84b3837f296c5718c73a4c8b3e1c7e631fafa2dee09628a2b1b7a078ff4f0456a6957ae44223346e95fa59801e53771151455753950052598f99a407441647a047ac30366cd4d7d26ad50d7c9c6b6ca460bf15e9f4ea67a109db7bba77a4f37baa417b207af7bde2243e4b7e56f4fe2635d8382cc96fbaa38d69c5e937e8c600280656bc8ff67c2482a5b0af4d84463603dd7af8ce3b1fe6bfdee5871fbe7ce7c30fc7e89039e1631d11626c64079a05b939dcb836e6138962447398c5c4274675335bc6702b8a76b47b511e1161abd313b60c25b484502b68707c4f6def903d37cacfe9eadf663a6bde585fbfd164ffa027b0ba61db47869ee6e799aeb38b2bebebf7ddb7bebe72f158e87ed81ed23fbc9fe47e660584a059129b778f7b2cf161df1af4def8aa2b11757ce5556f04d4eb5d78abfe7361613fa7bff58218db3e6c0afb4a94598a85b5ab494aee2fbd895313de7d67cedc0f13f9d5893c748ad3d78f1f9f3e7bcf1bcf4e9f387e6d7a3a16ff398b8ea2157401dd25f6d9fe00fa9be8b9308efb18f3e8edd90f219bab8d3ad7c49c1f9757464306c603d997ddf876bf630c71b010c537f0a9ed63c3fd81d0b2423200d4ff2fa17d45707e6be094fa846d4a3b37d3864e98b2ff2c8c9b16a861de1e33d4e0e7e783b7cd778c15fb7f0dcd300417b2ac850614e17961b89607cc977d2464e0daa19d6c64c7768c8c944752c3e57f3eb4f3a0a411484a877b3bc9e8697512064e8bd905f8438945a5e595e15f6f9184a625c816806d6a0972ee4be74842336d80c19fde71c7c72f409f19061bf881ddeba73fcd74db20147ff3cb5f46014e95fb3acd06d1144bc3bddee2dbe80638366e7b11da63403764fca4b7a64c83d08e13313f789b92282b2c0d47765aa865c4560b6c3c5893db1a6e955f633590f6097cf6f73606dbbdee6fc54403aa413b1c87a90681ebb7c53769e80d7cd8ec3e36f45255297481688a612b0a3c72db08ff46d0a48c10e1fa2dc1b4b8a5f18d084929e0a1a68193c1bfd4a6ba52d8459d908aa7af19f4e40204ddeec536a5cf0f0d18baaa3e78970caa2c5990b05f0c8e3932a988f1ae94dd1a6b9653e1bad6b68d062fb1e3fbfe86c492d0e5858ad0357ddfef0f5010ec22b6a7dffde894589716a0c6d9c06a3ccc553869a3cd781bd55a4bc6b36a3696ea4b8d3a4639e75ba9f4242135d579ddccc9d7ce1e295eba9677720a351d4dd5cd8491f9a8ee2844f99a9303e75861ce4ecc9d76b247af2daea56ccb73b48442dc84ee284ac64c6414d0183555005ebfd5dd4dd1ee53328a417c37e19ab4902f9fe27ff539751a738ca7c6036e49f38dcfb28442dd846eab4adab2b25494cfc0f19cf9fc9c6dcdad3ad9daf5136752c98497fa96422d9bf13a9bd98fe88e4215cff9562a3389e951d5795d7149b6ad60e71088f9f74250b7588cb0005db5e27b1b7b81a5f729fe575f5e398339d7bd52831746be7e78457f6d5801d1b9b2a249435694e6a28a8e8d6bd42d624d5bcad64f4543ebc537634e860643a137e9cfcfbcce516b844ca653df72720a511cfda3593361ea2ab32d45f1ecc25db74f57665e7bf247cee9b9843d5738e640ce01504dca34a059cb4a2b8aa3275caa2458ca4b24536716afd5b228e66765a0fb106a95235b1b451a720a83cdc0fda17e0aeaf3fcae8c645d93cdc9a9cc2d8a0006a7c1af8b3a07e1b36562ae5a9785b4e5861ab085275354a318432a87f1644a4b1baaa55a53a64e41d301f219274b930ffa47df7759311400502c35350be098cc52d3398c0b290096505339bcd517363e5793190c80d3497116ff0c96ab4fe4ca1832f6c9ceec0b85bcdcf0ccb66c2272da699e339b44f13e78bdd45a56cb4bcbbe987e3519267c4580777d5e1ab58af63235d79259aa2b2d69d87a0a6e03e903225e945dc7d39561afc2ef0a9bd2d424e05c4a4d30cb81d9946a89561af4cafb8efa0f2668c6c94e00e81a50dd9a32554b35325a6a12839bc218a846529318e75283bf21fbf34740d276923787d8962db78ccb175e98ed2c25b318977313f59c6a061e9241467ecec2bd7d690aa5c47ccf4aa88ae6d16d0855eac257bd34a732e92110c3a7b59aef959b65df2db760ef2699f0575780586c708b5904ae40181a14fee89dfea73ff3ce4ffb700fa71203f42b0e3fda649ac636c9ffcbdbbb403776def781dfff7eaffb007001021797004990200860f81c82972066869c196a66248d66067a58923da264d9562cd0b2e5b1643b8a9d5a369c9cd6aff819675d22eea9dde3d8898f9bdd946aeb6c9b34f1b19d6e3df476f7b4f69e46c73e9b6d393d675b9f7ab37d386d307bbeefbbf7e2e241cec89bdd9108dc37beefbbdfe3fffcfd180ef86f30c3ef6db55aadee2ea01015bf1fef4195f5ca6b29e99d7c40a9bb29fafe28773335c899fde3abf1d208c732219b2fdd46a8cfee54431b922f5fe9202555bea2a862cf2310eaba752f8c202ff252150e7e92fa37465c030f8458d1fd8a055adc90f2d599c7e79554754b0586ff3e9c98fdd7b39e67ea1d0d63d39ee5a68ad08c06c11cb45ae15a0b12d3604bb438acaed7aa35bfcd4fc329a871bf1cc39fb56ab91fcb088ad18408f81e108b77f7f418de00a17947ff36babf02322ad7b7ae35bb079eb25d79701634c60dfeb28fa115febd1c4afbdd8e62cbda0fec872d384487a81a45e11905c6d3c3e481afba25b241e65cb744eb3de41db1e9ce910d2201780ea7b2d9a928de4e80b913bed3365a96399d4358a29b50f7f5b32150d12a8fe2d5fc2cec2edd9f6eefec6cb7db426005bbaf4bbd3fc808180bbba4d091d685483dd0677f1c463905f69f968cd978637f4e4b34bba55f672ff8c10a3e3998ef0c977c6d3412be50ed5187296b91c467da35ed75f9e94510447e361c8340f0e330bb3b0832ade03af2cad2178019f54c06ddff323ad0e7f1b123513b34d4babd0f1d68a371b486908fbd55f5aa411ff159e97ce42db7e406b244303cdb123e040b21d564429e6d032636c8d0b8a1c3d6be6d11037708a5a4830d62d99e50ef490728a5143a4428fc6a4e10bae92178681cd5a4658ef792b52276202acd18a501eb45ed1c1c501dc39ef89d3d253ddb60f7b64dff2c78587a7c9849dad22e844c7b4f3a7bb032918bd3261ac49b3d2539b0ee8c37bb51299d871070d6e5126eb6ca1b35f740616a8e0af400db7af7577ef085af1c7e6de6de13f6a5c4c2a59571f758b4d9cffcb3cae29f9c5878e3fe8913fb372e5c4021d6ac2aef29f469f44f8e2aef20d46c2302ee2a0a9d009ebe4bf4592f0a0deba3cf0e5fe5d3c6be76f4d963a166bfa1314c38210659989d00ac3d8239a571c370e3d698a1271835b0fca7331ae77ad2d4539c4baa100082c5b509438f8b2eb8403036288b316ef3846b1836633ad634c0b0acc92b89e8ce8448b45685e48a3127eaa8c470d540d38e7d5db3846a1a068089f7ee5303038fbb866933ca08168fb17563cc34d3ba9160cc20181342623ab775dde63c4629a1b26236133b1c638d7196b4cc6c3c361eb727e21312b15602d662468841a9459949c3a35853474d46ad3e992283e6d1367ad2e7a11b30ab786e5fbaba7fdc8d7006f56c66a56aa31a5184dd28c47f3b42a727bf3b72820a0f61723327f91a65d8ad02ef3bec14835891bd62c009b55f3c0cd8ea82ef3db5a9869338248d1d81e2bfd709ba4d71af1830baef17d100fefeeeff7ff8fb7038432c3eae20f5c7631309e5b299886715a4beab5b644634c0d06562ed9888b903971dd6af5ead1f24f2f17185ba3fcec3fb633cab50f7ddd864425a5213f9d8b842dd1fe7162e8a36ea5da66783cbf6031f240ef3012ea197d027102a9f02a175cbecb7fa29a8a93c717f34f3e1d4709526a7ae959fe2ff683f110ad5ec881473ee869624176abed56535ebf0607d75b986b0668dc7dfaa6dce1b29fdb499b1dc93aecc2877a92174ad18e5b645b806d7c7aa19f7a49b3d91296c8c1383501a9bb4a949ef87e00ab8f9236a32a7002b186f2d6466e32bbf0980298e8f5b974e9cc2b842b8468112db4aca14748dca59e45789c92d1b6bb06926292524294f1b94db2c3911279c9c046ca92b60fd0d1a2e3800059ed217b612b1429f0c9c966cb5c554cfa2e50fab14affaac0442e8748a2938ec36a3ac8e7fff86c4a7c6af873d04cd9eec68d9f086bf7f5dcc7e97ff269c457dd8064b514b797da437beeaa92cdbaaa462ea08b96a677bd819ffdcdb683a73b67a6279f55ebda3d0e77787bdf1b995ea89b3e90cd9d5ef5bedf76dcb58a7ca6c6901fa03b4c238aa3f3f2494104a0e19e72cbafd7b6d4d6b9318d763b82d66e4368ee93c4622badddbd0f3e805f45e19531742720d025a0c6f047961c31b21d0d7d046f8f8c1380e9099645e2fd3ab15b29d799133c79cbf8d64a087644956946961be58dfbdc1a9560ff2b25f62b4ec56abe5edde462d6fb76ffeaba3479586508da0353aa1a5d375c2a118ea09d5869f49af148a6a5d318b0552e2a4ca6787036a922f4321eb14e07939be12b158a2e024c6d9b7986b3b05425e9f29149c0f275cf62d6c302bf10eb16e19f44b043f7ea8c107340242bb000d9a1a2e64132eff63ee269c42c2b2120587c7d99e10e90f13316662714693176adacb1ad6c4d9686c5a5b72426f22d4a8175319b60875a15f96d7b2d290bcb1091242874612a52362bdfade04a421db3a84e5e97df162bbc8b6f6a88997fe63f7c04c46511a6ea898a64e4b4893bb33cbfbb695bb264e2cdd0a684e6ff862fa8d01aea7367abb7c1ba5c0de29b1387bae223e5be9a971a53e288133104209ccf6e0057a0f91ef2fbc28001538c0142fc593c9f812a658294986be8c29764bf46db4e4628a977543e94fafe15204d78dc9546ad2b80eea402cadefc84dd8d1d33175f7e03556863f0942b5842779c60af352585f7e7949e6965fee47388d6a8f7de0c1475cd3e7081aa42d0efee0affb1b7f36783284010ed3cb21f4a584e77643ab4224c786fafa6747e2fc9f44e725ce7f04b4534817eec07e7a707f206ae4aef20efc3831f9b11f7e84deed9fde25f6ff816de6c5957909221e6c02ea6d770f7ca8fabc65e7089efd8cd8fe4c90ec1b81a84603edb17e24efc1cfc37330c4043bc87bd00cddf95fb94bb28317c3163c11b660fe2e2b0bbbbd0b6fa3de76bbb7a9d6c636ca431bf272958e0478df913f0be646925e0d1ce93c3608073a82d64ac581200f3a90bf73ccb090efbf1ca41b35b1c1a889f765cbe509f9f266b429f6237909816e1d47ab72858eb8701b4e606f11aa613d02611b822929079365dbd7974f3f77e5ca73a7972fbe5e257c4a7cccb1d75fecf4b841ffb0e1bc7ee3ca73cf5dd978bdd3705fbaaa2e51975f7dc90decac3d3cd81c9a1a89079bf2d2a59497f24a296f0010b6d36cb6ae5dbb75703008062bf383e55f5feee78ba3723f4b81465cdd92d49cabeb5e94a3f318dad249a84976525f7e3e054e2d4a5b9a00a79492c26334b15403ace9f74d4e1130242926d74123009c48180a458a999c8959290a807b9c98a0014d9ac026a7ee35348c879353894e3353b1f898095853949618e20cc7b8690ab139361dc30cdbe386619a86316e638663d33100cd34f41866314d5c9f700d909c96f14987ea04f6babb91d8a8ab08956bfd60adbe9d488a6abd41ee6baa957ab0eb435ff6c55657e130da756289a9ecf24c3342b96cd9a2bd5ce3ad972ebdd57065dbcd2c2762fb5128d6c409b7b86eb199e530224ffcb767d9f75cbf7e8fdcd85a704f24fa71756ae83c7a10213a5ba9a7845ee32ff4bc67a4cd3a293110028b6d2881499cc1209f3ced63a4053e978ef2f3dba69db7ccbcedfbfffd23a6258fbc28d18b7d4cfcfd6b9e27ade6793fa0c9b46ccb30645aaf6f6c8c1cd9dd5b97c30ad0fa9ee70792421813f09b2aa6abc64b21fcb7d809056cbfebd694f334b32a5444263e1da15d666ab3abe27375b626dd85fe766635d865fe95eac6cc6a6f7735539b04a796aed67c9d29429680fdb2c0be1ec78b9912d89691d0ca093185d0935adc60a6320c41d93a2595360d3f93592f6cefac8198c84cfeaeafcbc88498fe4db51cfcbe6e51ff96c83f0dba7f917a8c32db241cffb3b4b373fe2468bfae11ad1747d982262af7e7a60c4432b823925486a3efc344958ffc622f02eda58ff6d255fa7f0f06d6cea1f40135c53583287d823f3a108c0f4ddbfac58f0c26b07cf4a530160b877d20830a628c3602a4b5de803c096206550a55fa0ee9b4d968f8cd8fb149dbfe424c486bf395a66d35af9de0bda8985edc0c3f91956c225b8b3fc344e540dbe60135f16ef75f006a5af61eece991581b66e075dfc6c40b8e128916b622f5594267d13d08c16b29301f8c24c442216cdda9c4116aa5dc2baf40ebcee56cdb66f750be20217cdd3a4480e66e77e055199f83a0b2d1a8b24a3501555e106fdd5f2242c72dfc3d326e17e777e7e676e78bf638e1e726ace5e9f223b6fd48797ad99a38c7814f2c3915c7989a329c8ab334d1f885ad89396e4c2d2e4e197c6e62eb171a519b224736ca8af5d3550e1f27e5488a7da75c92406158c54223dbba797878d3b2e1f0e6a1fdc39b967dd834edc3033838b8655bf95b0752c1320f94a940ce971f42cfa27f29de426829ce641dc97ed643b33be7af9151b375897b51bbf349581dbc2e7a7fe31c9c07afe106b6e8d14f5d81aa0da1b9badfaa3df2998d019378356a063f070d2065dd89e9b60e92424cd330c13aa506c184323a161b9bb59393096a1092308c92c70c0d9b5ce3720ad22420313624691aa18426cd54211e770d3363164ac6ef1293695c3c8b89c7114c2cc62dca123a4bc7682af6062006e62665e9981127d4241a279ac10927cca4a2971293b118a309dd7013cc24c46034aeeb49ddcc5a866e614c89b8366519490e74faa46d18722ad408c11c135d12a7115359b22dcb9acb1b16d6b4c2ff942b30dd669aa8b0227fe3e24aac846f4a0cc398488f6dcdbfb7b046b07a9e288925aa8071dce4f931773e9d3400183536966329c2744d038c3571a5c514b51bd662ba784e5ed7639860ca786e8c59710c1aa5fa4a25e9d228ce504bea65cbe82c7a6c582fe303fb8dbe408041ad0547ec79e2bdfb26bd806ac5b2ed570395c97e313c0673010d9a6d29531f008eeb4a643bec290b377d9a835dd3de0becdd6dc9c2223fba07813550a398193208548fc4be64648ec60ada42f74bacd3a0525e3dede72a64b2e9de415e723c1e9ef0fa3979cabdebdcde35e049e1a925aabb6b5f97b5dbedb45a8772df82bd6856c9efa8d3d7c40db6092a54a2d5edd856bb1d64d7369bf976cbb6ae5db3ec7c08a2a46c60fb21181d84756cc8a8825ae0d2c401bb6b24bcb6e135d23d4e825a187106876797704cd7e31adcb7a5c54d3d8eef9744b7d78cb806cb9b5ac2d0e3f875391cd385d4d4b9ce74937f0bce193153ff1742a430f58f75ffc48899fccf6a5c97a11c620eebc05f42073d855ef623a3d6958c5f0bece54ac6af49e0f311ceb7d58cd32fe3d7dca88ccfb2b5e2ea86b82f7d27942b989b2400a6cd2411be14fa994f846fc5a76d5bc8fc8a525f08fd14345d5c09d41652ffe425c3d0e0d73543bf77f29f0c1006c95eacc55396d02cc6e312bb2ec6b5389764f6b1990899bd399ec01c4b327b304d1eef91d90bc1df1c8bc7a6324e369b7126e3707514395154674ba04df4007ac310e71a1e56938f56a9fb4385ddbe2e9ef7d5bc755f48a6063913a8bc9b4154c2661075b079861038d8cf160ad97da75020919e1e702699b6f4958fba39602b913fd00eac49b77a8c6d24a24716d15bd17b47e431d407338de888cc7fb608770034e9c7051800b06a86e948666f0bde3490bbbdb570f18834ddf33ba1bde54c2f6d4de687aae425218db67bb9251fed4b16bfb0b07554daf9cef68530c1fca3bdfb7dbf9fc41ecaf7f2ddfa30b9a4d13ef2bee60e0e4479940469d9077b527fcbcbf6ff10d2912b64eb72c36d54b9cbddfe4e532acb76ae8ace55000fa61f1cfbf0e73e3cd67ce7eff60c04b6d56dbf8d1a64fdfadb3005dbac35e5350fbef3adc1a49e2364fdfaae68a8649f9d6242a2e1dda718d68b7e3feec5d49c95af9647c2fb6799d39f68d0cfa5260d17af58122ac87f59efc7a4659bcad465da37557491bfa7b6d44c4d0df2be5703ebcfa7df470c7a33d0375f09baed6e7f2e66076e430731c96224eab0ba51e56e233dcb38b06ccd8d68c0ca82dd335a6f0c602515a359999d78fca3c55dcdca18ddbf88c7dffd8899b114771263f76c53b639bf700636e7bbff2c804c820db1952914a055497ce9c4e76f2342602b51f9ed3713a242f363e3e6d34f9be33115aabf37023629321e094aa1329a17da5d95bb110dcf6de062caeb872fe74eb951e53ffdf603df7e0010d70b8e35c6171f5898ebb6fe8dd7fd9f831ee875f75ebc3c7fc1bf2a6d660bbabe7079a1fb09105ab86f76595bffd7defcfd2fa028174a5c32db9c47a81151f55640f2c909e1d3edcf0daf462089eb7d80debff1297f42fa9495862ba6fd0c4f9bcf04207bf62754332d6cb58246f9d2a7fc89f1537cccb1ad13cf5863fc1915a4d6b2ec5680f31d62b4f6e50757ef842a144dc13d0af3c6cfb93d2633b81dcdb58d4570ef388aa18cccda3e8196511d9d41e725debf572f51af5e7225af82afd88052684a4ea9ee157d25c7f5ea252710a14a62a7216ea98a2d68753add4ea7936fb5f2b6d5eec061bb23c59c7ca76dd9fb9dce7edbb23bfbea824ea7b5bbbb9bf7bc7dcbde6d4273b769d94dafb96b5bcddddddb487eed363dcf93e9dd91fc66e557b8885063d0abe0f4dbc5e82031f008ffb342fc6d9bb6fd0669c3921fe0055b81881a981423f2a9178ab1d76d531d34ed56bf8b3a82d3de4639f431f43584d242fd8a061c358200213aa832dd8586b6b1f6f36b68693f0134b8d586288ff607adc93132b19cce95e3a63533434cc3b2cc49009d5b58c6256196320d9b13936a4ce85ed4c0446837266716a5719d8d59d48e3d0a44c7cc226ccc32629819921eda60e276a9bd1062f8d7ebd9383364188f8c0c321df375c434749da54c336d986e9cf64a03a79353f1b83595ca7a53b9b5dcd2f5a5c4f852a678a93c77ee0fa8e9eb3ecb73298712acc2998849b9a914ab98c97363d9f931db00caf4f5a5587250af322463b66619fac4582acf03bd6a7c0c0ae27726cfcc8caf384e3116cb9a096b2ae57a53e36bf9c5eb4b117fece7d17bd1cbe86f48fea96a8571c534504b4d8aa5b2b19175b319ef14d4326bceea9af83c053525f366d7bcd58cb7ba565b5bad9d01af760a6a6740ed34c4d10db12d634fbcf5b5faea5a6d7543febfee9d0337bbd1d8827a2d052bc0531b5937d5a8309e3a076e4a436019cd974e9c78e99a698196b2aebcb500be6ead0c7bd0834df6819ac5bfe9b75e31535af77076a771fefae4adc6ceece4f5f3f0b21187d8d4fcfc544c8b19ddb61068639a55581ab2178a7fcb85185896d8fa95ee7b72190a0fea854af7bb27682607672a05defdbdbe35661aada275744a8cefe3793acac3d892f562bd982aee0ff0628a2d383b843929fe4682d41ef49bfbdb39e8974933685c946f24b6a5e4d2bb43c147e05fcabfc351e51e04c644b976f7e0687d21e069ada13a3a7de7361c8d0a9b2ea5bcd67a7fa3a86cde76b4e4fbb711a04ebbdd1ec00796cd29a5dc3e44cfeeae8f1b3b50c6f29dca981ee5a88262aa0868947e760493e16b2965b42d133eda03eab786784777bf3085d5046f74af0bd5fb113ded6e7efbc8ae77e7dff6c2acc1dde19e15fdedb8cf4735f0db47779800a0d7868f8fec25e10fdfb9cdd518ab1ce1a314af9ef717ea88777ea09ac31a318ee48ff600547a79f392afe958642def38a5f2e38187a20faceaa31ddfd111624bdd018deb68942e3458d6f2308e7b2fb0b5712c8c573e529448013f1716bbbf32b457903e80afb12361bf06cb7a2c5c7de36854b093d03a0ab9eb1b47a08575da11174f04d16ba9efbd84151c6ed7c6504651a42d1bc7850cfce4a8227de3a84a7c6424b25967a9ffbd046f4be50b23952ffcf3e3a9fdf8083c3586f29277a78d56d1597405bd013da96288eba107378c288cc61046a3062503738435cc83a8cad587f0ee96ea9e1bd57b3e59ad96d7d7cbe57aab5e161b03bbc96c369974dd64f730d80abeffa8d5daf1f75bbbe28e7ab952119fe5f581dd5bc14dddbd600bf2c1c33abbe169e9f73d800368a192cc4c0b995f6b7e4e67a87404cdfddd7d620811725f68954d3919372d9be0cf1e00a194c001d1a9a592d6dbb6457512728a37912b743131e745279660eae3bd249dd129398d5ed28e0b87dd83e824a4603ccef85d60b46d4fc1c06e42b37fda11b7fee4585ba06fce43117e74bf2eb26746e6f0301bea35d5e567a206414a5050ab5bc3251fae9d022414b7867352f3aeaaa28563a0206d0c2380c5231077bd809e6a293b42adaf7a96fd65ff77bfdc438cbb75cff5e7ae5cfa05739d66d2e71464fbb9b1313bd9a894170f6cf3e297fdf27c3904affbbd75e3ad17af3ef7c43d8b95722399548cbb4b27aa67331922b1500ee0105a68c9f787df95055446495af6d6c2ab4103b644fbb682667df5fc8e6d42cb36db8b5b21eab2f2d6ee062dbeb3dd56f16e6688c3d1630a52f87042da1b1513d403bf4a0f6c4b84382950f741cadc520058bbebf25f4b6c4b92cb8115def3bc75ef36f2bff6f60e3cafd56f539f4627d1b6c2674ff542045cdf545a0a4ca78318568366e2523e30065e03b9a9bcd507814dd5feed6e5b09cfb203f7c54fb57bf6e5835e404ea7dfa6db8b999b91b3f01d9c1fad6b42790868a7fcad7d150c28e15ba45f3d8ccb6da336b4d13e8aabb8c488c1b425a529f1b11f1ae721b4c39c41a85cac87737e74121c4a37ac0f195ee0b0dbdc9598326d5f1ebf268165daf2b327cba1a66deecaf33e6f8abf73306067d151e7f63eb4247f4310437b3f7a14bda91f7f9f1fb19d8eb23d448fdf450cee1fc9a562f8ef8523be07ff00050b4f7b6803bc60256a06876e0f5fde7b02d2511e7970e8730ff4b543e388f8e068bdca9176e047f016948f381eb4c36706eb77544374ffc3c081e1fa871b613b78fd4b7ee492b00d7a984449c554363ceb44c48d86d028da11c04515426cd9f693376f0e4c2ab91002099aa2cf05735d2664ef5d402b1209b3da0b0d0a73d725696d497c88d9cdf5ff42e8bf6fb489415f09e63982bfbbbe7e4dce744db971f3a6e7c198cc2a0b7055a88997ae5dbb76ad7b4bd282e69af96bfdf927eb5196cf20fdb51ee1b7711b6e3d701047086e7c069be52f3c0a9853c2f15e904af4f1eb84536a922ff983546ad15f3f8731d66097584c6603bdf122689890574abe03bfaf4c9e8cff9f826ae8b0ae967ac9180187bed718b0dfc3a1697f8998947272fde351ee7cca313cfa85e5c05edfb1add22b84627c4172e4fb94f9583bf77555e2563f3e4b0bd5c43cd6c8bad98dc646a39a806ab94a654c91b4d2bb7c7490c36177b7919d2dbe6e6979b178e957a62191ecfe34f6c0bdc5a5996219e3c4f64060035a4e69d8c9668b95f5e5e49f665e9d79a15e9dad542ecf145d0fee190c64e8cbcd4d4a4bc985113e5077e0c0e0fe10fa62a91918aa6db31d6ebe34eaa0d9dff377a38898cd684096d78bc9e88f330ee2ff87a2dd07d7cf3bed030a43c64e04019d966d5f88e0b63e1951ff911f5c9293abebf19bd138ed29219f34c23110823344b4e6748f153255acf34036af1e0c810b33037fb47d60d9eb7bedee2d4f4b18d034edbdbcd58715acf46e38675b9d76bb7b2bbd6658122da93f7fb328db3001dc91104de7a0516bacc0c9680eff59e0b5f4b1b8c9f01c4be8ddc34e011becbc9e205b370377b4fbf22818e42f30037f13f6dabacdced384b115f485bfc8021e896e8c0630780b68b987311574c872bfa455ecdf052f4410e9be1a8854703388eeed47655d8ff6cee8765f39848cb7321435e10ec86fc57e82b5525f3084177632abdbe90bea0951a165605210acd4bd15da94a2e528c8720c54f80e0323942b2117a663fc76a4d70f2c4e873efa4a4bb2b1b57a935d2f767923c0680e294e03f5dddfea89926a0cd4c315617f4f545439c6fa4dd4a6729705715f8a0b4d7dfad78507d0709b407f9b0c66b554072783c3a03fb47a493e3f479b44fbea94e8ab83b36bb99f666fa05807c1ebb6c18e748937f40ef7c146879037bbb62957f8574c3bba066df872fd289c8e7e23c380a45d1a01c03174605f1d56b650d1786a2bc2ca176d8fa49cb7876203bd11b11fa29d022907bcb0eee67e9f35b61d9e40bdc88ad00cedf546977831349c8f6be82cba8ede8a5e40a81c05883f3a363992f71775f0c3409ea7107f7d54bba81daacff5bebfb57071449213c1b3179d42766a79667a79eaa43f3cbbdf9a5e9eca66a796a767d4f74c3421c1b2ed93ff7071abd89f3fd40c88270bd97fa857f3d3cbcbd3b9133bc15db0bf3c93abea7fa05773ea8cfe8ff56a6e66b91b0657f5c2ac425c8c03c9dd7f06dd875ee723e2cc56a2f993030d50804de8512f1fd10e7d66b976aeaa1756efe7cee4f24c5053f13d7ea15290c55b9eb91d642d057fffd1ff3e98ca9e5b362af2a25c55ff817e22a8d98d5c413de8360a2bd78ab04aaa0744eab8812ea007d18e9a39a4d79f2d4a20df23eb7a0e02e802b90844ac9251c4f33ef4f3b6a858c16925f256504df53de1b07cb2b5b825f68eac2db464d50a4e4167bfee374daeaaffd07f9fe3152331b6b550908d1054ba1b126782d70b258ac473c9d891720061e34f0c3d0cf7813e7ff89c7effcacafdfa73e29991ed9ffab0eefb4b9b9b4be23796ce9c5912bfd7127d5a74e1a81f660e5d420fa066d4c7700cb74eba87fc2f759a94c4d97742ac7d2ac3454a8e07ed610a945e7a624bcd1efb9dce2eeceeeeee4a20f44f4b4da83d4491f2aa68a9578b2a1dcfb6ba2dd3f6bc3ce4bab7f29e27a458cb3ef0bcb6a7647ee3f66fc34fe12362bea7e5c646a5710e6aab1b8d0ab33596717965d687bc686cac571bd9b5f39056dbf0d3ee5f56749339af4fe8cd5df7f9ac61648d09c330968dbc619aae9137e6fe2cb190b0edd4ff71424f25ebae6d14abcebbc7cd0973dc348d49f3a469aaed4ab79b48d8f33e163542d0016f08dbd70724d8ded93bbfb3737e7b672772ed48cce53efd5574a0db48ae3da81fdf7c4e6124874848351e6454bb015696c4398136d6a005d8e2dcc2bba0e1c82eb440c37b84e30ee59cee01e64428867bc11e8e9475ae7f5d8b8819e122a6a48b7633c8449346aa60f320b062793db35510071dfc460ea1722d8c7ec6be6eeb633ec117da38ce791cb725f81bb26c0dca8098aeb3db08532c1e8f291e785e2fe2d0ad8501d469891aedf3236ad07b2e487d09337c5b3e17106658e5f2c17f85cfa30984809f844645289451e098ac445684fffaf493634f571f2e946ce7c08f92fbfee29b4bd369134e3c3df6e41bcd74a1f496c5039e369d82cebfefd8a5c2c39530afb88de26842323e9c1ff4d4ba77f6db0e20fded1c525da7127fa22d5e679b710e9f1b76237f725f5cb72faedbd7a9d8a6bac799d8601cd04082687e9f33f134c6fbe48c29f4027a0f428d63f5167796f10029205cad7ca4001f98213ae7f39310450c90f0a0deb41605043809de4194c62548fffa4fe6187f3f00c0fbf431d3cf7987f7538b25b3623b9b6416cdbf09fc4c7e738c7f467bbc7a2ad8dfd7b4f648ee184f6757894e08275799ae52e8894eae51a6bd9d4ca6b28542363549deae3192dc243a51619b3a7b0236c64b84131540780dfadbed2a7af84eed16f554f9837d0ad63736a12ed9f353dc694400c77035e5a646b60a4cedc9f18d7fed13cae6625bb95daf95f3fc5dbeb4bb3bbae2ffbd3f6d3cfd460ddbd6a169ffad4b4f3c71a9fbc3d4d9596998815d6675bf7909e62f757fe873ecabfe9c8f58d23c1967d3cf2ae344faf0201ec920b74c2be00b69f9b1d756f715b1a4ec77e4bfb6e29751e2e72d9fbd1b7296dd69e69bdd9bcd7c4b7e35779bcd7efdf659f441f413f10e82283defee32b5aad14cadd5d97af56e32b5ca81d5215592488bbd84bbe3f2adee2278706de3b5050ffe833c4b18d4a241b09826030119d6c48a1cd7e3e396e91898636c70969b234cd338d5080eaed698c41293b9527acc318c2467093d9363b07a68d9ebfbfbeb7e5ee0ff8e39c1266516d56d31ab602058631a8d716e11cc8946c5af1286b128824ec5f83218891b38a69fd508d328c734ae3343164edc4b357950fcd3c4c598988c262dc2f03f75a64dc6649c1a96d752f150ac7142754cb0cef5f114d341d320f3375219993ca6a2e508c654d340b501d730668c8dc56327261eccfcafb6d5f4babb5e335443bf4a754d3c9da66244d735f15b6c3a67d96280885fd6d4228a354d0383d354cc9e8c990c08667305c3d22895ad0d6244f91782a671f983291691d72c3489e6d0230122909a221a43337f955779bdf8daf25321ee5bd89f8ba43258b976de6b42be39cf8789f309d6e71d95f5b9107a2ff6a2b6c3dba8e9b5def34707d0be8b6cd5a85cba844ea107443dd3c7f3b0f52ab0b1099cde4da37c048facc8c29698e50acebc0eec988680a508967c04d45edf5a5015710afcc7c7b645247fbe8526d173e8a53be053f08cafcf54fdeccfda0a544bf546d16dac407555d4b796007e1a567b6a83c422ab39fdc8f267a1cafb320f24e5d28d33fd98216dd13eeb904d521d338b2527ac2635f13bf280689125f58bf7de7b319e2749539a58758d006493c92cac8b4fb2dafde3c04f031ec1373671247146b194fd8f9aa625b39aa66931b3c96c3dd74c14b9a5c562241b5f9d12bd895b58d3fe483c231693511f89934ba1ef8744f2e32ea12fa02f2254ae97ea0daf3efb5a5a4288e27d490230122fd21b42768c0654abffc5d47dae1f37ce8f8170bc7a099ab7f21d16e7c7b45adbb4ff55d86a1fc35c26aa66e3e6982e312009c67599608a29c106e5314288a601c358259c320de31a60b18b7542744ca84452fcc53367765bf9e61ac4b11b5b9d12dd5b0f5b361e179fefb1adbc9bb45dd74eba20e66315e32d135813ba9e3288211e8829681a2138a6531d6326e66af16306a5719e4c509d60ae8962704c0c46e512f2c58d8d684e6a0c8da339740add2b232d7a029c1b1db191edf48850fee894e71dfa14e14edbdff8809fbdb1d21fd0df0d38c59dfd205dc30b525fdac1c6ed01e4b9fc484e71c5048668a9da087102457ff127561a9a24bc5ae0db0a8bdee055b7e196e070f685ab0b9ac5440798d5f1ecf96c4183d9ee47b8655b1ad6bccab2d5cbabfadbcf5e9eda7ab6f53def3f669fa354030cda954b998fc3440673f2f80dd0e2866983fdf5c09af0cdc2dffef0377ff4233fbf4bdad862a88eb6104a07d2f12264b2e91e3664bf68e99323858165786db5b4b65ada5f9e9959de1c6b3df89f3f278dab9feb217fb52cfb862f17fe2bb9c4ae141656f2f5463dd67dfe73924deea9cff9e76f3c250af954001b067a5fdb5e4297d17308959d6a7d05eab395aac3538d75393cd7371ab3953e4157baea424762ad27e826a094619c56536e63386ea23fea180e76ad048fb3d63a2ccf88651e2232b0f23b460eb0388fc7ba07bbbb7b4301c69e65ffeef72e7dc49c4a61eddb97607e1630cc2cf318835036ee767c27a5a6bd5189c6a7349c9a32bf2784e3ea5078b32739757bd88a09c939d8afc8a54b980f318e06e9d9bde496bd17bf23947a29f8bff81de26ff5ec4fdd03d801c6e5e6d7d47714d3aae7e37b58d9cffbb26deeb03f68e82f0e3a2f0ffa33f18edc02bbb70f7774fe41643baaa7f6fb2ee7d0225a93f9b6c3919581b3a237101a0a9f25b5beeaacafd6646468303d1db568ff6c106c3e4af7cd0f8f634287b1287d3e39d3fd2d59872783e0b559e8de048026c19bf0a4ace46f9df1a51075638851d5f331b3a0be6505695a1ec22f1f413cea2af0535a3c4e8a0cfce59dee1e3c3582979ce0cdee57a49b0876bb5f197d01c8b9a1d3dac4268de07c07f8df9b1217727773344ef8662fa758c5f38da117d187d167116a2824e82836b43b72a1becba55ffc1fa881d1ffc532afae1ccac61dd85f9e19175a082352a3a1cb969866744a94cc4fc50ca18158e5194b187a42024030ac69d32a8f874ad0675d2a2652c7c08c508352831a3665acfda47a38fc46602c3443ce4cb9bd7fe0df8c0120ffd9ef618ab152b5b8025d66d464d4149a91c29d160b3cb70d6608150c532cd4248d6a58c81e1ab308d5c52c4938e649d3c8c6a6846e48315ced65d1ddb2cdbc994c9a79f18e78c4273783d6d165741d3d8fdac373cbe0dc51724b4384c2a5c6607cdc7aa5943ae241d1f83937ea78f3ef1b3917edf9d14072566e4b9fa38fdb105ef809cfcf71f61dfff9f07ae8f4500abb87bd5bf6e5a5fe6d921b33b807f2fd77f47e504c696151faf02431d2510ccd4a5b0a0a50b4eaf5921366af6c82d370eb9168cc92530ab2a814cfa89f46d2f23c655dcedd6a35e570de85a6b7eb794defc0b7bbe772bec5bddbcae7bd3ce4fa7c53d3e861f4147adb80077a440423bf7b8f8e3259548ff0e8c07e4e4ca26aba0fb6ae1fe7d5e131ce63fc70c0ad03cde011a6ad104d44abbf3c75bc7b674a8c86ff6ed8bd839011ea770672d0349a471e3a8bee4757d1436256f23bae1745472c4bee621ff26113e4250d2f38464b3ce07c0bb768a3ca81bb8dfcbbbcbf233bdcdf5d0872b0bb5f842daffb5955134b5fdfb2ecfcbff4baff4589c572dfb6fcdbbaed172fcf03fbf603df6ead8bc6787691a52da7a0f3c51929df746f59b6679bfb4aec9197eccaedf6fcfd2fc043df7ee0db51feff71655b97ea2c7779894f43a3de701bd5c639d0902cdd07fe22f747ef7a24df5acfbdf019efc50f701d5ad982aeffb517bdcfbe2befb5728fbcf0c7f99f7d80a7fb6264cea30f4934ae50f5af7b4e01dc9a3bc4edc98506e894ea2318dc959dade19c8346dd738eb78d38a5fa0a549d6ad41cf78d00f8e1a5b66eb36c6faac8325b6fbfd40f1201678e3831f2213f0bc0e2f71bd860ee2ff7425e7e39cb4cedd4fe207dc0976deb975d60063eb53f0af3939ab8b87f4a3319b8bfdc0b9ce9bda71642e523cd2a75cf59cbbaf52042fa9c0c88ba637309a13d58e912922a59be02218f0dd5fdd3edc484a92202cc8944fbd3a35bc8bf0a5abdab9a83140ab2cd3ccb788b68b1b7189677747388ab445ba8abb049a54d3a8acb7b5ee6c1fc35f491a3638aa34a6ae3d83c7ff9555f9707bd357989939137f4e1fefa1bf2eadaead0f90009f19c1f6af0e960da3a0a3a60a1523e954c2693a7ca9585c8f60bfe737e28d45a5d4febbafcf0155e9fd2de0f60b1ec108d5b0ef42341083cf1e8f2e242b9d2103fd3a8941716cbe2270f7bf7160a0e2ece5c9d9e9e9ebe3a53fcd7a1bf1f87b1b5cfa28fa3bf40c837868716f75a606b790d16f705b893c5ddbd938fdb87d8f92bb7ad1f67cadfe709ee8cf33eeb7b607956d67712d3e3e3969531080bacef1c94f5dd876d8c9adfb1a55b8e6126d99b067065fab85bde4e38d628265c5396e99ea59dc6a4a51df0084b3bc181a55dc35c5e6f529634a5214ade6b316eeb9cea12d18d622261edbf20ede67fb5a6f842ff742a7a726faafdbb776178d7631a612a175ec3a1e15d034da72c1d8ba528d335d1f8341923dc100237a1d2a88f50742e5df3fdf5a351f78790fb43dcf2ae041cd99743a47d2d5b28646f8a8f6beac0bef854a0dcad8293151fca26d50a0ff93ee843e9534365d1a3fc4967a311811cde68c061e1030fae9f5cb9379379ec8215cbc8f13cb93e7ef2c2a399ccbd2b2bf5e6cb85f1faa4bac2b22276997134892e0728433d0f5524bb27e5c1dd6053f9830d0ec59cbfde6eaf075161b976bbfb2fee22634bc8d3ad6bdddde66e5f8eefbf3c1e7d4a3e55d407e5648ccd18fa18fab7d2ab10e10b4a092d91ae40b5f65a35c29e2ec8664bce1970033d519d5023bc7e249fd07aa54aff5f2aa4ce288b744f213d2b7438097eb85d99018ae1f759c2d463122643d3298d3116e3bacd994589ae615c52639361a2133d4629115a27c13aa17a40c823c60863cc36cc24a5b4a4a68198a4274a701ea792b488d2ee21312891b7505d4c1a52b76594589ca72c23c515139086cb72988a89c514eb3561523d2552fbb418b39835c619efdc509447c0e444040033ff001033c9fb744bc316672943b7437d59d121c5753d691053ba0399ac088debd40c7ea2207e961312e3668a32c6759eb68c315d4f50a613e5491415e349239631d630975ab29cefc41c17d7599cf13865a6989e252a8a6dea1993c714d3929a51295186443dcea8259bcf204626169bb0e78446ade30897e5327a52662a0cc2ea86faab3b6475490d60e206119c2343064a70d8fd449001f858b0423f166401c22f0e1ce87e42ea0bbf38704b3348c77cfc6290ff665d782c6aaa012f3c3260e67a5c4693df5471a0817dd34145b422b39850b9085518b2fc57a3394b512740390cfa98650e8fecc061f739f8db76f7b1882be0a7be23e01d814300d0902300c1c54c771f2e469d0187012f42380387740b0162547f3cff2e7a87e4940e911bab924e7734f6c5a61cbe351ecc1335973b11126ab7b696f54e412d92d1536b786e8fc8a4da704bf0978a3c06c3d2652f95c9fb99c7a6ade0864de3cc19c3f43229ef41c22471ddeb5f0f005ba0d9a61ec333bf3e0d38c62d5b833f59adbde50220aeebfcfae642627e7c4023cec51cbebaca9dd8f87c62611bb0c92c9b68f7df0fbfac316cda3a3b778ee9b68999f6d49bdf2cedfb1411dfcff941f44984cac765dcbb4792332d4029c821f6c194861997ee86b989aec9fb795535263ca61489b6bf62dc38132859dfc09a91364f59933668a037e616b68a13846a90a98e297a264ae393f6cc0327425a26aa130dc36d94991272473d932f38ff48cc0b01b5d78d90466006845c65668c5356acb8b4b538bd16d353263529491aa9c53c3129b7b93d199b5830295092b4924b396252acc0baeb1369f1b5a14da5b385c13ca2a2ca236a0c5ada074df3a5f2c01543771c8c4e1942a3728a0e8fc8166a0f04c8f7a570f4f11504e51e4cccad0f86a80fda57cb8377e415fb9aca22ea0151c3cd2856eb7c2f1e5d723b8ef022740f7adb5e349da8cf37322571761f54b1f4d158f9fe50faea40354a23f6a3777be085adfb07d1e483d0aff16a78fea99eaf03452dbe21c06c3e6ad66cfbb15bbd6029592733ac9321331de7d009e4a173e81a7a3dda09320584dc872340b9d2d07824c0aeea6a23b0767b40bd8e0c149660ba1714d26e677777106577cf07d44523c0767777910fafebc3edb69a4db975ed5a3b00da55b8ba616ba814ed6bf9b69aafe1bfc16fa00be86984ca55b1ae6a2bb008922d4f4c4e5a020217a904a69cd624efb73f87890f4dc2546eac57ab0132f7088003f86f79832fe5896dac2ff131bebc66d824b7a2eb792111e575be92a309c35b12a2854e96d60d9be497b891a7e4573eece712106c9b62717d979a4c7e67c5d36d925fe6468ed29cc1972688add7d503f052dd48d0fc120f1fbf9c27b6ee2deb299efeb0af31a9f5dd77c5faf8e46aed7a0a7d5861fb06fc1d21b66ffd686c5fe73561fb56fb027806231c7ddc9aea240de17d3520c00996e8beb1d88c6dcfc46229025a08eecbb904f74d9ac0a626efd30d0dfea66618f74efd2f21d4aa74933d598ce67bfcd583fc5e6c0e84ba87d0aeccc07d6ddcbe237ef2480540b5b152263259d1c6ce51f8c977c08410e3f0c4140130935403e05c03dae34d19b3e2612b0bed9872c59ba269216d8a6a63fdbec93fec6fd5be16ffff0047f9a82c1be5b9c6610e72024da285a1bcc0fe99881f0d90dcb75e5851f4631426888726ae9edd5f43cddb0166cf9df085860d5111f1fe487ca1b9a34efca31efe910f292451912e8c861d42c3653d0eb7891e179e76246e13ac1f75663f5a965e09bdd1784efe7bf5799517d139c5cf12e5010f23c743ac19a1202b3b9c1b6449558309b904cddc4a3abd9cdbded9d9ce2da7d32bb9f33b3be73f189b482c6e6d2d26266271db8e7fd0cec7e289443c96b717b6b616c0b313097be7fcf64e321e4fee6c9fdff929d7b71617b6749e5e1acf2da56db1911b5f4a737d6b61714bc938c1987f1d7a137a0ebde788715f5742edcf39dca3a6ea12f7d9455740d4bb21ad0383431d576b1af038bbbb21be59bf76adbe71f5ea467379c648f15d4c9a4652df256465787ceb6cecca0ab51868af655cc36f0560b6ede965825b3c7589e05d3d69cc2c230468fff60134a18532eabde34cf0d6d33e258e67c4710b6ccbff829669747f53239a695b3a3c2b3784dc16e03cc5d1049a470d74cdc729081564ee13272af762b54ffbaeaa3ee5932b96152b100e95b2b4cca9f153af5860e43e90bb3333cb617a28e46d8bc7f04d4d93df07a07596673c719137b3dc0e3dc37bebd3cbcbd3eac3878cb15f346dceba1d8d13b1012dcc080a7cc1f05fe073288be6d11974456179b9becb343008ca9e9ff5fa10bbd4a1c6c6da34643336b0d99350593f0fd07fa0511ebc209a4078184b24620ad62811b312cf5d11fbf5ab89582cb134f3393da33f253980f91b399fbb8dfaf6615b77f8bcae7f55cfe8e2eb77ad44c28a25129e7890e2b3120fbbfab696387c6543ec1497dea4eb4fe9197dceff02d4b76feafa3c77f8d7747d5ecfe85fedfe441444fcc91ce97d3880369a0e31330228b39417c4fc04c6d9affef9c6952b1b6ed2763df15191a199ed2b1b1b57be2a379fe87e4d7d8bb32a9e176e431b5d440fa167142a56b5b15151de82282156908ec5a4ae75decfef7355f8d64938070afa7ca3528d46a75659a55ad9686cacb99201a75a99e5f0ef32fab413c316774af1ccc9f1ad67a6a94ec6720913b49909431b8b8f59490d5c6f62623dab6949331d4f69ba9de579238ee3c6f3aa5912dfd31dc688b1fcd4b24118cb1833e7666ed2c99ab3a95ba02513ba515f042d9f8967993e662c5c9e5a4f646d2b6ec5ac58dcb2b389357b2ec3b454ecb495d2d65cdb76c5dfdb19357487150acc310cc2b2d9a09ffea6c4cd9d4233680d3d88de227924a221009865ddac10ad95365fc5bcd4e02a41afb2a1e4239e102ba7c253f67743bbea86240a155f15a64451713a1dec283b69cfabb351a94285f182e31438bb4e4cd34ce3f2ebca246d9a067e22b13afe3edde15c9fd0721c3877f413243f3d375b3434c6b2fac2494d3b5951d0c73a317ec41d7d119fd01d9d833eae4d70d01fd7b38c694671766eda203ab118d6c98993dac985efb031235b28648d31d6fd4f661a63c37cd7bb4c93e0b409e6fb1eb0b9ae3b3c7fd1d51dae03afbcf09073a5327f29475d6e029bb9bee13d3da5614a4d8756753eff428503d71dee5eca734787180393bb347769be72c5a18e4929d6a69ef636aecff8baabc26e23c84137d087d067104aa724b4a84fd456f499dc5c456cbf050a8ab8760eea6b1b8df58dfa8a8ceea86ef50ba819e608656996392c2b16ab4cd63905a7a100ee6ac6b74fb36ccd5bdda836448faec900904abdb6bee13983073c8563ea140a8e7291fc0f386f991a661a80864103e5f2e284c6288b51c294a7479cc0a031a259561e13d803f2702f63bdf7a18043bd82731b49007de414fe03b728e10480e84c2c861a508c09485f9c16c05e1b54d3e42142340a9880504e0c0c4018a516d7755dff58200ab67a09be2cc22956440b680bdd83ee4528adbc33b5d580105262af87d1e8b395ba5bf7c379ca457fdd29fa8b53cd75bc7a497c7492c94a32293fb61616b6c2c8e6bd56d3bbd6bd15b573b4f2f9661eb632d33367b3d96cf6eccc74a6da68548dc096f9e7f1bc976ffbd0b21dd3ce753af9765bc889c5db1df831bc5f212d9515c53c079699d6248ab5b26a36bcf340ab0d177eccf9a7b8c3bb7fcef93b377e02e2a7ff1820f3c3ee9f7de8dd1ffa16cfea9fd3f5eeffa967f98b32e215b23ffabf7ff5a55f8de67e4cc838ebf308d1637ce8d53e6f7ba9cf13df0800978ec4d73fc2497e49e2cd455ddc51d7f791de6ecfcb1f46ca2fdeef03e8398440aac672ea1f192850a906de61bf52a5810a6703f0bc86ea168b3e06e1d990d0d95f21e011d0123983dbfa70cd00cc844638667cb81d9cf93951e5bdaa78e955f13e2ae28555a4a9e4d730235ac20288d655b5014f72633c011aa4e79de1b800de7da7973fcc8b870c3cb82fc7278776d0d362b584d98a143436d6dc9a2b3e4f4b71230125e528e70b47b7e0eaba774cfbb94103c2c7a84136749d67f9dc03dcd1397f129bf449aa13dd14037eb8d97406e57862b8c962d95846b419604c36c47ccfcb0f7031013f49f0af6346f49439dc5e99f21854f2670ac36da569ddb78bee2363c6148f400a65fb7224d7a41edb3f3dd75c316b6f42aad4907384faab47fefaf4d99c98526fe572deb3917f12a830042ef4bafbd0ecee77f2f95c3eb79f6fe69b39191f731072ca8ea3295494ec20cbc7e03ce294972a4904a528f4d961775d081c70537c1e369bcde6c1ee6ebb79b02fff413b11ebb685f807ed58a27bd8cc37bb87a2340af3acd9ef5f9940a78e9f1bd2c7b2fd1e35295c3d8a05f8c809015a04ff9dc0652d4397f695c2aac939fff7a083ee438f4b196713d6b26e96d9e066451917c10746151bd5cac679a8961c7f094c2932f7d0ade12f9f6ea31a09465904079ec58456a8ae69a0ddf708d6349d2e3003afae6183f9871fbe3163eaf3ba69ea2f26729695d18d38a1d4b2f4e9d8434bbf1fcf73c639e3f9f8d2e76572914e9f7a91188410462f5d62541e79d7676f88fbe1a26e12422caea72cd38da78b0933c79e3df30ec668d2b26cc6d8f5be7c0e51ef97066a5e80bfa29a978f9d0ca7c08335d13444c71ae07b1fd140c33c681b939555db3cf4ce23daa610ef6f1b958c33c020e0bdc6168b65648bbdf574b4c51e1c816def057d3de0483a753c3fd2f17d7d34231235c863c5483e66987870041752f716218f15a3ac9f7e8a41b49c97ef50ced7c4043eb2dc57567cdbd0cab26f535a59f1ed60cb2bbee5ebe49175f8da0aeebf496ca836585ef6ebb6d237cfcc4b342d1f8b60b09c61dc64687beacf266c9ddfb1acff8db26c524fb0cc78188745f0f8eb5255677b67675ba1b12ccf406767dba98efd9026f46496d1cc78807f424d3cfe3a33b6b3bdbd732bb0244462bf2dd93baea2a7d02ff5637fe2b5ac7b0ec268598f1e6787a4fe8dd99e0da9ccc5ba5b802140507f928d442c96b6f3954a3e5fa9c467b70b60eab357aad256aa6319f9f121ff8dbd5306002408bea68290eb5745877fee0a3ceb00d1e97449ecce7725136f7de5e47d998c38303efed8a953e7f395fc44b93c91afc035cb4a8c1b71c979fc4ba21b7ec84f917967102574ed7171ee6a5d8ca9abcf5d728030bcf2ce2db17bdf075f10e7d45c2e0e6c9f3af5e8780ed1d0662cd6dd5989b0346abd758af562142dc93b627b78ddddf5432f9ff243379f0c622ebd68728677701012280c7e2b6c82408f506bf131ec24fb11b8342bd7bd09ebe26f882021976f0d3cd791d828a3682f9c7a3175b70f6eb5da90f3fd6b87322f600d210888c02bd22b28359c54305fd7d737d2e7a021a3cbea618054c0901f6213efdbff941098a96cb3186326a53a963f2dcbb4b7d72b59a763d9dd7f474c761bfd83699953af71d29321003ae869f44184a8922e3da7341c8415e8b7833e98d2c8aca05141581cdfa1caf03b84634ce1460718e763168d3166c9f41eac22a230911151986932e0a92cea213372528639c6b9250399fc282383d020dcea77869a6d0eeb98e864ce9e88c53232a7d7a0d4a22caeabe8244255b4125744b9dccce8a6cd7810d9c4689cb338d3e392c8c9240aee04730c7f7854f347fde40439680edd23314d84e25af5eda862cd97fa6c396a0158dfa8fab0f0233daae9fe6bbddddd5c2fdd31805114834d4cf5ed7eb081e20d6cb05678497377d7eb718285cdd5ecf91f0272ebe24731e9ee47fd3c41dd9624765641c2fe28b07ba718b2fa5557207ce1aabb4c43a3da27a98c9064e031968ef9c1eb8fb541e11faeeb710c207efd86aad3e3678a899897881949cf4c264d2f69c4125e2cf18d589a4947dc63ed79515e836b14abd7f2ea0d797cf38691f48414ee252c798b7c4c0f93e0c31251fabd089579901a591f05905bac378295704125e9448c1762f959ddf0b3e2b7c0e7ae0ff3a3e5ffe2d4da86770e1ad195bfc81f57a2f78d0180dd6eb3ed87ebd431c7f17c6c7c697a7a49fc7d55a165286eab7b9657b6b7570827a081e8f51c030066e401cc896161edcafbf863a21d6ebcaa4c23986adc10ed3adf96c7eb8474d46397660823009813ac63991f4c56ee81ed95956d196ead389f1fc038a6135d7ba0af4f5c7e8d7da2e1f7f85eb73feb53256c023448d25ab8637798fa2637b1d6c45a516384990f6a9ac1bff3a9b8c3178eed0d53ff97c908d31ebc4a985614f73cffa0bc3fdac717d175854f7b0a6a112e8740ea8e703a14540df86ba93bfc190078c4a0b10421c54f8bfef8e922218918f55dcad94fdddd78f8a97c0e49c4984e8a89989528fa0fbd26eed5897bef9dc746049b43bcc75f437ff3b5bec9706e138a4be03449809ff256390b2b50e581236505aabec36913ce41a32a8e6dac4d8bedbad285a6a0006ee8a129405f9063cd74e39e1a13c7348cfb3b79ca39cd03d1d21827b141c6884e387529233ace60832409496b182628637422bc0ca7894e187529271c67b08953186734fc526e6c2c27fe3eaa2788776c73ba5fe444dcae9334367012e3b4466082704e26006b198c53d8c419c2456188b86c8cf897614d9559939725894132984fa8dfcdf56350a791872e20440349cd97dc8430545ecbba357f6deef5dc46ade1775937987e7d029b3eda5c8983b6c77a38310a1d546286b6158c9d8f57e7a335ec5a3634bb87b7429d2a8086292a5d6b37ba7eb46f77a00d1d7452c8466559be535053518ed55ae914d454191bb5c629a8794ad6a8792aaca6ca3d6803b400c7743d86a12526bee85efbcae73b98e243aeebfc1053ac31ed901b063fd4d86f7d4d710bf9b9374d89de5da9d6aadc2d80efdd3c0b55de0bb8aca54bd1bd862774fa4630e8c5605880127703c5a7b34e38594c5e14ed64d917cf8116d7c544feae2b8b802d6eda9ae6898d77189c4bcd210f9a669d5f946667accd3c7c9118541aea9fbaf8dbdcb04d4c3458b88732db241c37291fd7333171db44b97032c44755fda1831e414fa3b7a21745ad5c27c39c1a77fa25b0b350f556e02cac4ac35130879d83d39a5cb2a2e3ae5600f7340415a3d158e372b5c89d62342fac0487ba0e6bd964d2bde92693d935e9a3209a2e4565334972f1424102664c15e2399af7d10942828766fe36cac37a3c603ad8cfc531d3becc7b2838fc4b98e1b8a6618b8b6a4fadc6b384e129f19c29cc48362e2352b6032099f7349bb990530129ffb792f3c7d11c9a577a0e2db945992f55eb09a74e2d956151ac9574c9f1ea9ef88856183aebebdd9b1a1827d69dc2fb1e7ffc7d85ee8f02dca476fb9576bbeaef791e68fa898203ad6ca190ed769c4233608e00afd3e9746e05bb72cdf9ae1cd70ba267366ab297d54bbe2a3b094e6d52464028a9bbeaad0703ba1cd014d782e1ee06c28778426d0beaff5cc807d9b193938d87408bc526de742d03a0698b4bb0fa50a3e0a59d93a069dab2f3d02f4cc6621afca918371abc6b2cf350430a18322f69c1ad3d71ee2d8081707ccf13d38d87c6336f7f1a4bb6d44b6fbbe7492fbb98969281900d509f6e39e53375f888566e2450850731cd4e265b0e44a83066c59fc0d4aeba576eff3837539848cea6b77776b6d3b3f799b19839b7b606a0f693ea6cc93fdc7127275d7772128ab9fb4eccdf9733f59dedf33bfa7f1ef726263c979dae544fff6ce7fcf68e6ee6ee9b3f7169c2d4d75d716a9c9dae564e67dc33b3a5d38eb3355b3aedc7ee86f5520c24236ad5f8396bf285d75201fdae0b4d86dec56b7e13fcb5b6fea3afb9d52b7d850694bf7d4bf23ded2964e06ae47fb55b1fd647bd952374d7300d2900275acd7a43caab9f95a81e5e0ad4db11994b2b500d53d9de8d29c671dd48194652e73a5849c618c658624ab0184b4d5a464cbba451c292a6998d2726ed582e1ecb9a669232a669c029d1d9b3d2864000a8452995fa288d737dcc32d3ba6173661210cfc03c655ab944a2904a4cc413e3a695e28ccb112a0d3dfb4211c09a46e5ff1ad6194d1a3ca672233500aed3b19839a65b635cb764221436394b59462ece6dce128c1872e902a16c8b055c8262714daac89cd0982ea6759bc733ba9f48854da1be5b799bdb1c53ada7232a3bdd65f4ac8a5c1a82b05804f1d2a2ae8bd083a5e6de1189c5eef1ce8df3ef28853428b63533f9686dd8b5252e18727fd48e828283cee993ebe1132dbb343fecdf12ed3eecdb7a259af6d04b8688fa092ea36be861846074232801634423886edd13defc88ad293807e9635cbfe2bd0cb97c176a8f4ece84b533edd23b9e90debd11cceba292d14a2b47f07c296486b7adf593a7bb2de9ce43801afe7a5b4108324100ca8698f9dcd94a359375e518aa3436b26e4556ae010b63e9f3e7af5d3d153bb5458cccac39972897cbeb9699482fe5921a54e6e636a053aca7579edbbcf00b33a7af5e9e5cad62337e76d2982e5c989ca48c2536bdb5d7cdccb8212f7907a5d034da0ef2fdeb5e68d62c568bbeb4330d5ec69faf8ff3aa3497a76796f3cab609cd33dd7f6f5b2d6ae2a50be6abd630f3ae7738bdbc3c1dc054e79b427c5eb2f3178f707a04b1bb79445102a5112a17d39eebb9d5529537dc865be5a586a7a16eeb959c97cf5773eb4f3473f9e6cd8fdcbf3f8120bfde6a7a9face6f3f9e6c14194f325836610a21baaef280445d59fdc54015c1597c25380ce2c2e9e49242aef6936df534924c45eedf1328dc5170a856a6b6e69f1d9d3a7b71b8d4663fbf4e9671797e6e01fcf2e5a4b27e62fcfcc4cc2fba5ad4bf5e72caa4ae4ca1d84ca8ec25a117fb21d55a40b1db47e15070f94060fa4060fc0a1b7b7bee7d9e6fefabe6977d7bd1eeacc9e1706111e84a183918f4ebbd56ab5daa6bdbb6b9b9d1e39dda82d88d2d4f5f2f5384aa369b4885611122fa6c18bd54624ac9047b6a350fc50748a756fb7d5dacd773bf903df18fea78131fc87beb9bbfb22b4ba9d03afddf6f6f7f7029de95a1f5e8b65d9dd43cf93792b814fb884d6d01974013d829e406f41cfa15f1273eed1f80cae583e85669f61bca49651af004e752deb96ce818414289d830617c7d5d229ae72c57ab902553180bd0494c413bd04707f49f4d4183fd2c5fcd137b26cf2e4e5b11734f8bc10273f0f5ad33961fc9a71c2594f66d91bc72e9fdc23f819a1393c8349d2bffa0f824b6c575eb2ea9f2778d42ce54fbdd57399d8f6f2b5442e1ecf25e2f9582c1fbf79ffe9d3f7f3ccb9eaf276ec3bea903addac9c1717b7d5f9f395e5edd8e7c2bb12b9380234e18fa72f8a7eed6633d28411cc149ccd4ad345dd8684589ace0367be6f7745480bd3d0a80e1e91e18cd969ad5e95811fd3813ac91b1b6bd26ee28835cd2d80adc8f44307f249e0eee01137cb38ab9cd420bfc9b99ee559d1435c199cb1758f83d3a6656afa9ce150c68cf2b469612d6dbeeefc3d0f9b690d5be654c9a49465ccb2a1999699c6d9ed2dce75477765c0aecbb33ae79bdb59f51863ce7018a5e6ec946969386d3e7c61fb75661a6b96393d6730461d7356578f71ee79fef269dde1baeecc8b4ebe90d575eee8672e971f542598ca3066180e75743c6699a6969d2b3bd8b4cc31ac67a863188c39d3e2d1a6f5f0dc954d19b4e2ce8bde5f7564c0c9992b730f9b16c663e6b4ffa40c174fb2b0539e73b0659a69cdf09f949e32c730b6cc87e6501f5f90ade629de10ffb955f11fe4d7f7dfb3fdf442abb5f0f4f67bf663ef7e77e533c94fc65f7925fec9e4672abebfa82b31e51ae83184e8da46bd94c9a607449246e05554ab8d78bb12a6b711ac27ee683258258102720aadc26516e7334b31f39a3569db13969a0cba3e24ca99e582e31466ae053070eff4c1e38490410d22b375e19f6a787926396936cd98653c63f6a610b3b3f66052866192af05492b67dee93fab2d06571f66791215d11aba881e43cfa297243e4c6828f00d48ce6b3f007f05cf40b6f5f74495eef80179f995348303476e4173dc4a26cd9c994c9aed3b6dc21daf886c06dc858aef644d66aa060618a1bc78c3b6e488bd59f58c5f7dbb184c6f371aa5b986f1e62df1c654fc820251346d4ccebec568cc951a86f4a71697968a9bc4a06692e25d6c84a4b6d4209be25c80e5a1def3eba5bd574ce2ae581264c0b568eb306065bd710e3641213157fb4b2f2a135c203531792313c2ec59e0f022d775fe14c1baa363820931e887a941382706bdf78db1bc5d6a185f14afe18b46a3644fc49eba37382b2ec384109ee5043ff57d6b2271cc69ae2fa9f4b3a5a37f2cf20e2e4bdc9dbb6dfb92db637596579f87dec0f5fe96de989b6b18f79f55eeb610e3516a145bf7ebf29df8678337e6eb1be72eeff7de1321120d33241fc69be1395b3d50dc2e73220db2d9fffe9ef77150ee54d623de98e346ded8ddf4037850bdb9376fa90804fc3651adb7a94acb8e28dee593f71013eb3a36e9cb12ce19d4db224fca2e8109cfeae2b6feb77441bcca4d7f6ada95939a78bafc95cde292aef7ddf87270e33d6f941dc47a2af84df241a1bf861d243a0673d2fa1ca64509ada4ffb5ab89fb0c0c740ef0606b61614bfc817a89a28c67bf2346267fe6a9b3fef8dac5e48bf39b5b0b8b5b9b0b54f7879da9003bd5ebc46417fbfce84a8ee362454adb300de7a1eafadffb4218f4daed4e6567a752d9d9814e7b5d1c5a6fef54aa4f3c51ad04f905ca06ac222717d1497415a1b2c45e6844623936c1f523268bf512ad979c86ffe7d17ad181e35c71ff780ee37cd254b18cdf7867abd50294eafee7b6fc27e3ca674778e13a4bd820f7bbdd3d395fee99c95f986ae69acd5724ed44abd93c6836e1159363869bd730d38a1a36f9f34dcc3037fbb01e1368122d4afeaf67106a70b5cafa33916f09f2ad6afe90f613ca5c5ff5747d54f22884867b4c18e53f9f1cab643295b1496b3c1e1fb7ee279492fb458ffd943a109cfe5a78e2fe5ff233a0668e10804b9739e7fc322584de6f8dc763e3d6d45825e35452dfa2945275f27e6b3c269e9eaa3899cad8d40702daaafda3c23015def5d7e1103e8538725009a1b414297995bbce6ca52487f3fa46a3a8c6b00db3ac546facfd211fe37ff8fdef3b3f0080efea3a68f05d0d74fdbb00f003a8ee12b2fbfef78f7df0dfc3f32461fc00738c39fe819120cfc3bfff20523c765ff7f9f48ae8243a2bf3c97855feb2f2744f82ebbbb69df057cb7d252a87196562970ff8a31e7cf0fba28cb3d9c9e519d08d72767a5915ef81ee9ff40afdb2af415de8c541fce9f2fb7709494be44a8de1dc587679fa1555f4c5472335faebb6a5c2fd2dbb198d35227edd3e8512288f4ea0868a655724c3b2826eaf46de4095062ab1264a9f7eb3aac92baafc7fe3d16ea35781d54800c75f93653e258bff1b7e911f3a1929f2a96839b5d0c65142e71112039b87e1359b5095806f4e90392167ec635ded7ced5b979a967dd3b69ac92437b4a2b2753c84e3fccbff76c4c886e69ab6675bb99c65cfa558cabcf25551b6affe1e379a478e67232cf3345a469b3253e017e13e780cdea12cd24115cef852745fe9fd943ce51096e1686b9b70462e746ec4109661dc9309a38141c78b5875e455518d5d81f057e5aae92f73b5529fc73af452cb5f3e053551b4faea6c2d908056b3b5fa6aa556927a61c95dcdd4d86cad5ae225361b5eb21e98931436c4ea5abdb49aa971365b17cae3fa9ab79aa9796aca0afa50a65273bcc639901ae129a8fd3fac3d0d4c5457d6e7defbde9b3f668029503aa5308c88f3f133c35f298ec00723a5fccd80a048a93f0c30fc39cc8cc38028b59d45165da594556a716ad9aa68152965d5b85d6388691a6388bb21ae698d3166638c31846c5cb325c618dccce34d7d4ef951bb939c79e7bd77eeb9e79c7beec97def9d7baf2a28310d2d6354b148e6913321d1fb281a83123d2272abe4bcf35cb75ac17faba54a4d9c1b41078f534c06dbda144362f215cf9aba623fc258c44e2912a138f6339ee7615decf943186f9446d014a629c4508461084d931c5d5999ce035a3dc20ca191105318a1408a92111a0b28394b27c2022294130a23012204091012622c64a7de222111b11f8d280ad3ec0acb4242302d440421314221b2e5c141cbfdfdd93d339084c102ef92d04884898c95d41f214263acd7ac676741616ca489985b4f9a48088d0c7e0a99c75723c386bc4eeaefe14e10fbcf26cf20148010e3d1934168558484a2198a047b5454d1542445ef9d53535736abd732129aa23045e498a0c0080f8d921660caa3ac9010214d304198207a2efd0e2381907d814e218c3cd623182321ab821821a9542ac5d823848861b3b549389b5d83913fbb54b53f4544027fa1565f82b1c4239e04e39d14453cac4588a26902bcf79d6a488166efd79de723c2ebe1f374aad7795f76b9b12f3b6a94214102c32d20ae6296a9b8de32d77304bfccc30e62f71cf90bc628830b1e616f891532464c3f73a93565de64a5e305844844948014102ebb889d788628011d9f9d1dafc99e5bf19020e4f12103bb0507cdc598b7c4128cb6785b4fc5a5296dcc27424ae847483e26786e1e1c970785b2e3698e39c52642510ce1c5cc68362f937bb9f55cdcfc75d87c6e9f50b6827dde4829f50b15cb9fa97a7820363d3d36263d1d1918a980910a38e1c329b160c52ff1d1e519157ac8e6f68d072e9abfb31279c7a74cd1dffe7dfca77b9bfdd37f060966096e7c64ffe9d9f1e9213693d3f3948e390e08001d7aea9edb54f3e9538c78dce708ae61fed95ca506cc8e86d92370e0e6ae01ef1e9fa60e0324fb00ff5e1dc7c3edc3978f7b01f1f064de3199e3e34bcf87ba17a0791970f9d4af58802e996713fe75c502658a96a857e1c31bf9d86521085f8267f20bd079a0f07f68435fa05fa00d5f46a6c5dae54581ef9bf3f9e4623675f1ecea955fc1e3e53daff3e913069eaec93e757b8fab7c782f05753c9f7b99727c70f1f8cc676b174f670f4471f77cfdd3f7fcb7b611f06ce30bbefa2a7ce2938bd797ddf3b487af8c0be93e5ffb27fbdc13f1e2908b87bf4a5c9a4f0edf6b0bb5f3527e4c2fc09f1f6bf83ee9b976d62726fbca11b9487d8bf9a3af0d97f24fc3126de2c5df59c46e6fbe64bd8a45e2f9dc4f0c41100eb3a80275e1201c8773f00392449ac810b945855056ea323543abe94aba873e413f64144c0e6361fa9949814ad02438290c13e6083708bb84774499a261d1b438549c25b68bcf49c224ed928b7e2abf3d7eff92ae95f649c7650ed9ac7f9efff980bc80e9c09bf24df207af395f9b099607b7073f08d1bd3e141a1d3a127afb0dcd1bd56fb8156a854371e5cdf437bbc3705866983decc45bd7c3cbc3f7865f8a488f688b78a2cc559e504e44a645f646de55a5a97a96052dfb6ed9dda8eaa889e5e9cbc7a3c757e8560cad38a38e5277aa67ff6f7f4c4c4c494c57cc782c13bb37f6c7b8b8b8ee78b746a5c9d3f468ce6bc3b53bb437128a12dc09d7138589ed89b349c6a4f3c9a329a5295d29336f97be3d999a966a4d8b4a6b4873af94af6c5a7955a7d06dd04daed2af3a979e92de997e37233aa32d632ce3516665e6fdff576645670d665dcb2ec8eeccbe9a7d2b7b4aafd657e97bf5e75607ac4e5dddb5fa564e6dcef4bbce779fe46ec8bdfc5ec27b03799979963c77de95bc47f9dd05ea0257c144a1b0b0a0f068e18f858f8b2a8bee1b020c46c3a0e1b631c06834ba8c83c6cbc554716a71517177f144f1c392a092076b62d654ae195e73af545e5a5d3a563a5b662c9b5c5bb2f6c43af9baaa75dfaf7b526e2c9f5c1fb6be76fdc58ac9f74bdfbf5bd95f39f141c007991f5cdb90bbc1bd51bdb17753c8a6c14d7736cb37576eeea98aabeaab7a6cea31fd607a525d5b7da9fa718dbab6b2f6aa39d3bcb72ea56eacde586faf1f6d0868686f186f0c6dac68bcd014b245b66578cb634b9165d0f2b039a1d9da3cd23c65cdb21eb44edbf436bb6dc6aeb6f7da1f6e2ddadabbf5b623cd51e7f8c831d1626c997452ce12a7db79a735a9b5b7f55e5b525b4fdbe4b6a06d15db06b7dd698f6a6f6a1fdd9eb7fdc28ed41df61db73aa23a741d151d7d1ddf774c7d28ff50ffe1e04eddcee19d4f3ecefbf8a22bc1f5f7df0d75329d559de776e977b9764d77d576ddfcfd487749f7c1ddcadd03bb7fd863d9f39f3f9cd927dfb7769f6bdffd4f523f39d3abe81dfab4fcd3337db2bef6be877f6cdf1fb3ffd681b0038e0357faa3fa2ff74f7d56fed9d4c1d083c39f5b06a207ba072e1c521c1a75ebdc5dee892f945f1c3e9c75b8fff0ec97c62f67060b06db068f0e4effe9e857015fed38a238d27964f6e8e4b18463f66337869a862e1e8f3ade777cea44ced7aaafc74eaa4e569fbc70f29fa7424fed3d757d78cf69fbe9de116a6474e4d137f66f6e8cda47bf1bbdf96deeb737c6e463aeb1eb7fd69cb979d67af6fcd94bdc98f81ab280d43bc6fed52f0866b8713282406e58eca114a0ad1c4e201049389c8240d4cde13448608ac3190844991c2e826038cde16250a0bf72b804822099c3fd20086c4000512240a082400ec72043ed1c4e4085c2389c0215fa9cc36908819f399c01152ae67011c4c0250e17430afa07874b400def71b81fa86197dd19df5863b3da5a4cad8ed696f8a404b08313e2a1116ac00656b0410b98a0151cd00a2d100f4990d0e074da755aaddd6431599d8d0e4d8dad590b0de00427d841075ad0821d4c60011358c1098de0000dcbad19b4bfa56c095748b9d65cd360b5596cf58de61628f12157b25f266ba08115de0236a8874630434bb9d9d1d268b32a5335c9500e6670400b34b23a2a21153490fc0aa6788522a5e6fa568bc901a560867a68656577bc029f5c9bd5a9ac375bcd0e93d35cabacdeaeccafb1196c36ab0672d9324e50423d98c1caea6a022798a11694500ddb4109f92c6703d8585a0d78f38e16fefd370000ffffc4dc4ce7b4780100", - "cceb3a5f217a341fb60647bc68285d62": "1f8b08000000000000ff9c93d16e83201885effb148dd71345a094bd0dc26fc40e6c846e4b96edd9973167d561d7ec52fef39de37f94b7dd7e9f59691c52de678ffbacf04106a30ae57d11cf853810adf411a9f6e24e51f63041dd82e94684802c6943c888744b025979be8b8ac2480e17178c858f74e662aa18a3981cd894ba6213e95bfc357fd6498588a004970ccf0a59f596d4cc8dba2f8dc0655d2989af2d2d5f2ba5f8db24b1df962a9a19a7e115b5c13e456af618c7e70194542de4563ad3800f888b8a3149592da8144038639203ad85c682978cd53f8bfc8ffc5e108667a3207fe987130c5333bf4eeff936eb3e6eead6861b1720e5794b3ab7b5a08d1c6bf6ab7f679ca9def9bc2a51836b7de48223e843b67bff0c0000ffff5e04edeeab030000", - "e5d9372aa867fa2ec35931b4116336d7": "1f8b08000000000000ff7493d16f223710c6dff7af98a24a2114ec36094524ea43d54aed435b25900a9d80445e7b76d787d7b3e7f18644c9fdef27c3928b72c71312fee63733df7c2b07830c06b040a7a94688044fd4065850d8e4f4386a688b010d308607ab11b61436187ec86057f581da13e7c0239a5419b0b41c3140ac2c43611d82f57bde1673504d03ca9bf4077045ad3389612cabdc21fc7d7b7b0d5ae9cafa120a7a0b89442249e78850c5d8f0a5942591289df4d54df557d38d735b2104e4085440ac10341904cba0da48a3123d0615d108b876a818c1903f89d0364645fcda6d3f53401dddd31558cf11951942ad3608ba52be447eef12e4ad750634f9c2966d50d1924f98b46cc051683b13f6b2269046e6631b9da9d99f5c6530905966eb86429ceb609bc8fdde41c991822a519444a543d558169a6ab9ed6ea68d9701773bb23c17bf8af3d727de8a8fdc3bbd7a8fce007ab20998fcc751adbc2d90a3984ccfc6637531cea7176a8ae793f1584df0229f9a5fa6939fc7e33cc1b244ebf8423b8b3ef21f4ed9ba9f1eba78a5cb749af9421c1afdeecd8cda88fd53a8315664008bc2ea84704fbb2c2077267243de24e3132de0a71639f22e26ffcffee114b374f0d7c18f783b9fdecc54bef396d115e2fefe30cabf5d25fc06cbb5d0e4b58afd639a971758ae4faf5eb7ee04d69782dba609c8bc50c15b5f72fffbb26f1c38d26a08cf9fdffa1ba88da9fef0a5fda71e6cb9cbdb1ed393d61b7c1455ac5d6f08cf194006903ba537ce72bc84a5bc5bc97b39942bb9bc5bc9f54f2bb1fffd51ae8759eaf5250000ffffe081756211040000", + "c1e9332706872041d1263830d7495281": "1f8b08000000000000ffecfdd972e348b23008bf0a4eb69565650b5402dc44a9acda3e90624acaaceaa5bab2baba5b6dbf41244822450214006ac9b2ffbb98ed66eee6ea8c7d676ec6c6661e61161b9b479a6718430496f0d8b150525629cf397544c4e6e1e1e1e1e1e1cb2faf6ebd28f6c3e0d549cf7c1587bb68e6c5af4efef9eaedc7d88be2b79fae764912066f4fc3d96ee30549fc7612cebdb7677eb2da5dbd8d13375e7596e1db9dfff6b6fb3608e7deff6f13ce776b2f7efb9faed63b6f1bf941f2297e3b0b23efeddabf7a3b8be3b745c1e12c8e5f99afe8dfed0eedcfc22066c7eea0ef3404c4d77f99af02778390f12ff3d5c6dd6efd6019bf3a79e5385dffdc319763e72fb36f1c67fde97cfe4dfa6f32f9303127a79353f38333fd68de8c1de7666c4e9ce9dbb1e98f9d8b8fe6f5d871aed1a7c1d8fce04ca6e666ec389bf4cb2418c31fcbb1e32cd18fd5d89c39ce2cfd736e7a8ee3a57f2d4cd771dcf4af2b7379e138fdf769b7c7efcd69daeddf1de7ef69d93f8821b763f3fbb42ceb6bba1a9b7f4a7f673d4e3f21282753f3200563927e8a26e6dfc197493431ddf44b39780950f9d75f1de7afe95f3f9abb31513b1d229ca41f78934b017a7ea5e99f6e939542931e333d94d4718b7a0038b568ac6dd08787b1e30c5107476373883e5963c719a16ed613b33f26d673b230e3b1e3c4a87e322e0961b226415ea312d0ac9cc2cd58bdd6a0df03d0e0d3f8a587fdf430bd32ffe638a3744b3ac713d39a643f26c793ace572e23831fa644f32fa63f6e7f42aa33c6227800f2941237e92769041fed139754cd7b948bb3a5f987f21abcf53124515cf166677ea4ccb192cccd198fc7d6586df3917e5ef606cfa13f12e9944883b393ea2f51fcdfec47196a769c1fd69ba1532f6144cb80cb2689922327e977267d0413fdd0ea883d58480f8660217adff8e5c82606cc60a88cba61c58a63f9ac389e3f80888cfd42cc0d6e54da9447938769c1055dd8ee10f4b7ba6cbd3b4663eceed98cbcb79738810a59e114838fbb924e4b3f59898c9315cc287778e139fa182b374bc82f4cba9fdcd71fe96fef533010f403060bd257c6045caee76df412ebf1e9b1b8422000ad886c4061c4ee026029bae1ce4ee2cade64f1ce706157e9e98e129a47c408ecb7354bff8148c4deb3cdd19f9a65ce7ecff2f8ef397b4c60fc49a00663f99162557e65fc15cd35e3e92d4bbc0877f38719c3b04e7fd04ce7c37769c5dfae3e2766c0e111788f34fd3ded8fc1bc44626714ce7e99867a404820fb3f237983d31c96bb2ddc57b74b459181a72578fc67011b788aa3e7c9f7775b11e1398e2d1120f7b3713e767271ffcc3fb1498bfe37d648fe1713cb922a5abbf394ef81302e327f3a3e37c4cfffc89182bfff60f733721d08016759ace176c58820f772704cd4cf3e52d6a4f935c02008b564808a9cc79273c733613b09ce98607ab52ec9f5438e98e19d9a89c1f680640e189ace592da63f39ae2ae773f38ce102ddbd15f14b8c42705180ee031ebf4fb742a6790eaf1329462d36a020199e66c1f70ca2efb89e00c7f070cf0826280626e28406389398074c0f878d21a0fe333e7ec633ece74419eb6f15858e423da037cd2472c8c100bae0b9136cc8fa911b52a5b0433e005e5123e9c3263c49394170fa78e13bf43187a9792b07387caefc7e6f0cc71fae7e98fc1b979fdce71866935e7e81d6a837e4c8ede91e735db6177ec385dd4616f4cf46e8fcd113a094653c7d9a1ca6fa9d14bf4df8ecdeb337233bf274fce9b89e33ce49c1fac197fa7a6b27cffcff096f51949716d20e363818c1b74ce7c24851bf100f6d85c56c1478824a3a23c6560044ac02103507297efc394c7ff9aa6bc9938ce0e4df9f6b73265cd551eb53de56b6acaa162caa369958ddec62ac7487afa5bc93c8713929b92fc5aa04be89fa512211012fb17849098721471a7a59c8f450270daf8a78cfcd99f30b57289ea27f39aaa1f8d997bd2282d4468f934e10204019810b5af278e733dc9f056c2edbf8323f817a4f4198ccdee3b78d9c4179a78e23816eeed142ef2e8cc718688ca8eced34b8033425476fc0e11c628271c423af94042b03063d900a974739e96df4d1dc7479d7d9651597c4e5dbfae8bdb7b42115621b9a40244ff028a25db497abba525956c05ce566333fe0b318b8b4576432c67b13d35e3330878ef9d699d51e009487d3549f9c9045065384fc97447a2e66e2cbc6c8ee8a203f252cc93f1260bf37a2a6b4410ff7b7865119fc7e1f7f03cbe458429029a207c7a1df33f3f8dcdbb49ae9609f385c56b258076f9bd045a48057f62a4872eb5231fde2ba15f649c40843c24f1a43b9bb33dfb67105680cceb0bd8329964db9990266f4e21bcdd53d968e792c2e5850494f83d6c6937c29400028ca921c903c5984a374f1f8137c83155b68cb431251aed5c52a881a9b2e50b4d51d7d862f77168caa23015eb606a29032f96d19425a3a9254b534b1a532185294b4653968ca646e7124c8590a6a647d95b129006008fdf911a8ab25708ef22d3cf94ba8f4f93b4cfb38fc59dfe766c8ebe733e141fd0110bd596a91031221b018d730a59a936c2af45f9ef9f99dfa329fc8d8548e2f729f9fb47f3ee349360b3bb31fd3b3e87bff112e4ed1768274ea17851de738fc6e60e9583c9a4c87a403f3e8f91b4d0cf57c9121f748c9658e7748e69e14174defd49f774eeff85399d43b1fe1a3c38084f674cf2e074c65816b1aebfe89ecee18fcce93ca4f6dbc1f71afc61339580d3bf90b1aff73246ff81e1a4586546f087dd14c28bb5c1a2d13e480ac30f1250acef184eda005322467f213b12df4b3829c614e0a49a98128df64152a88129703abfd014f7cce1d0549fc2545f0753d732f02c194d8d2e243415b234754d632aa630d597d1d4e8bda4f05a86a93b8aa67a93744d2e0a2de7d97bf2f4ec0a15bba377ce0538680f90e94b71653c8b48f3891ea516c5b7a452319eff7595899f77e4b9453cae7c484fb8f250eb8dcd1bf693ff5dfaa91c2fa11ff53e8dcdee0756f7fd011e9f516611c2d3c143cd0678762e2ed9f68478de0057e903563d13ef49b7c2d5eefcc079edfd34ce9edca09876ca7c5274227d06840f1d134ab9838d8880627d093671dac384a9d37f9fd228b14dd92ad677649520ef06a832f9dd802a826e1a4383e9010cf54075f3c042b3e3774320eb2358bce98fe6cd3bc7f1d103f8e73344928520592ed8e6dc71c20b6449766176cf1ca79f3670066729732f7f74df653f26e98f0bc739f863fae3ed1fcddd2415afc3778eb344e5f76784627580b6cbf42305ca2968321d9c65b5c08b3dae557c9aaecfb35aa30296ed7956abf834bdcf6b1dbc739c21aa15e5b58a4fd3cf79adf0cc71ae91c6d0ce6b159fa6c7e7e992d37d95db73f38eed759209f5e8fded1cce68581ca711a96d3b1aa7e8a1e73a73807100d858bb53c73940c61f6f4fcd8389e3ecd08fdbd3fc0d75ea38d614cd6a9a0ac1ce35fab19ea69714c74295edd3f450723668f2c1b9b93975e04b764c3da0e2ae89c76c97bcbffc94d2ac3344d47a44d92ee19d0e240768d7f023691640beadda63e2a0123fb9964010afe1e41db0bc4501cc03d39a15c9b0eec7e6c31904b15b1cf1db31f1447a3c3677e73a9399d8487be1c408fdc929b2132a707443ea86d3f57dc82d880e4a8110df9df1c997b2fea9e3eca6191958054ddc4e45100cc6d9322b611de49727e5fc074f3dabe971f6565f1a9980bdc537d2021b1f082ba5980248080a3435e8e97a0cf505dd09e0360c1cf9cec3961b671c91edec0a52572116a56dca33e8d32930c4120915e0e49e92e21ead33214478ca7a4ac336f5ec07b2df92c1016477a9b7aa08d9c5a4fcba381257a794a908f956340dc6505994f6502e2c30a0dad0f54a96d7a5f05e2efb6a92d99c009325191966339d3a70c9c99529f71a4d2bd828e883e37c487f7f67fec971fe94fef567f37bc7f93efdeb8f04133c409aa9cd24bf00f648cd5134318767f905f12057c3953ab9b7487c2e39f94d61f396b6242f84078509e24ab69ffbc5f9639fa6126676feac655c0a1b9d0820fc34c9b4c082190693a79ec1712e2b96eb54123a6fc56ed08a94a23c364fcbbade4e5229ed99af58f924c05f31acfd14cc70fd1c566c44ed31de8a953bd43f93efb18367bfc70e147b2c7ef67bec40c81579b7d68d628ff9cf7e8f2d157b6cf7ecf7987f911ed2ba2bb6fb6b7a9e8a57ece6c7b4fc39afd8357aa311af187ee379ce2bd63d4f21d43dc7ba3fc857ece1afcf7dc5fa17f215db3cff156bfd5e0184ffdc01eecfcc0dc3c342f3dd97779150df1dca4ba4fcee405e31bb13c739c06f99a770de18845247629f66ce20e0b51534292f2fa5fe09e0857eab142b727956f8846043362aab5e9f3bce06e909830bd3ca15474e708e9e3686889fbffd90e9cb36678e7380b57de7d92b6e1fa8f648c3b11d789afe8c8c1b80d5dfe634d7d42d7382de4d619fab73412bff2cd7dcdde6adbaef1ce7067d7a7b5673acd1396c75cd8e15b363e137f872630ececd116a383a779ce105a2a0f78491e0fd0419e803dc74a7d04862c8c2ebbf837ddebe6fb5d5ae501a1ee5ad0ece1d67845addbf372daa559f6db584ada6f6fbcc994a473521f64d013c03fc28776fa9f8ce7d24ae907763f13a353de73f1a963b81b018013e7a94baac7c3b7d9b4b6e82c2ee4450f8ee6dae8515b43c00af2ff3cc6425d7e1ae722f1f015a05de8831fb08541ef5d0a30dd584369668f54b479c54aea6fd2da9975a81a7e37dee20c73f8bcfde8e094d0b500d8377c81bb143cc505cb4bc602cb34794c61a3cf18513a80b072dfd5358b803bfe794e1cf55f62a5dd6bf9bc2facbf3f4d41640727d9116724d9c7ece0acbdf37d4efe595f327f2f7c307385217bd41950fb4f4ef115dbe1e931d2eccf03dac107f48f14cd84851c77530ceccaa8897738c0ee271f700b92403d36b2c4e8067e203e0023d971702089670437c48297f4a9efb7840f2391c5933d28fd0c3097c2b0510f42988df8ee9900c3a4e7950637ddaaa4fc6c2bc937568a395a17d3080df5897b6e72a9f84b693eca00056ebd8065c628eff4e628e6f8fcd1bda86bc3484082699bf2440abc5ba4170fc3131ab07160796c46b7352786d0ac4bb2067750096f296ccd33f957b06f31eb1e428e0fee579a7e34aa74f2e2531b2c0528611847b758df714da7299371cc1640b4393d24b4a41ae1ba96124a88a598486db752ac361f2e109f4c0406547f1a4214baef8b405e4ba639d68472cb98e2614531d91afbfc85c63da32f3e8ca3ab4b1af8f6c3546f45e06cce360ca308f9b7772e6717326671e77ef64cc83e360854dbaae7f729c0d22bae86366d5f5f017c7b1fe8c70f5e70cf570f3a35abbfcddd3b99d9a07a7f923e8e769d6cbc7c2680a73293819ca223f9a6496f1f01365efb69d640b0f6a0d297ad9e610c24fef984f31a77b96686f58a2bd6389f68025da03ca8aac749bc76769a18329f73fb040f2a78ef390e3f4e1d4717cf4e3d3542ef272a4bae98fe895ba8bda07efc0231ee07040c4be39759c21d2df1ce167f29bfc311cef6320c1dcb1201db088bb3e658f9d298b3854abf41e5b4fb245809fde319feed85a3b9612869c4f2c7160ff04b08796ecf1ced9f265a413fb34a301dab13e97b0fc2953cae88e78caa72983459ffec11ca7e905ea8c694794e2373d81be6b47457108610083c90a6d9dc6ce8eabb3ecb401ccc29a329c0fae1e7df001c74350d5fa00e1de4eb2584362798417bc8336072a9555849fc2792a73ab8f63dab1a01ca58fd436adf9f72f8be787d263e1828211600e58e62edf535535bd436364b75af66b4f32f641980b53bfb182a394186f90b2a5bcf8ee28234e4e048be98fe965d189df2328de038e9777f4b356141f9e75eb2667a6d3de343db79c6ebadf9dde692a83e11fd3de29214501c170c1d7d8e8c4495b8d453237cfc2e246480ab5ec81643aa1914cedf3205318855285d129a3cbbc81cc6ffa13bcc5424d0676c22fe25bf5d0d1a525248b76e51552c34c1bc604519a4cf31696a7ae013a6fb13133f8b1a91290a45f254e013e335b6358777f7468a7a54ab0e3180cba311628694d10030140dba57d18ef26f00ec4d3c7f2a4bd6d4eab07ef1d27fc0e51d277fc483f5794dbf5297310dfb19f36f0d3e92a9774412dfcb2b17cef384b447cf60714008a1269987b86e0cc283a6c31fec1f08252f1cb0648afccb23b13135884f611d43ce1b03e14c43f1852826819ff208f9121831a4b521a504f7bf9db5cb923566730f6196dd7470828eccd6e48c75d8c29826659d86a9cde4de0f9adf87d47fdeec2b0b48cb9f40d7bb7009a07fad114946fc7e61d521b6f0a6d873dc92e88b40f9af8f735f57b494d21469ae7b0607247932c8cad401fda67f567255fe05cb98713e696d47dc768cecb53e300e9dc7351e08754943c2bcd227ea6169acfa84ad03713a8f1ef52e22f31c97d380a25932c8c27e17c4c8988d7dfc3e086f11fa9482c376322cee7c5c2b476e84349148349f664c2f1042b4fa54fb91dad0c75ff300fde11126b0a8edee1c2f827d2b7ea609c1b4de5407e48f247561d8888970c0a224dd9a111ac99e2195a2010f1f4108dc2c86d136a1bb247db019608de3bce01a2fddbefd07d81921a1fd0a792a40613330461527ab90c5bd2d01deddd8587eabe771c6c3f10e5438167f316877a94598dd85985ecaceed8a1aee9a186d4503b30549045eb6c7a6f031ae867708393be785fcb0a8763c9bde84e5498b6c48215a005ea8490de8b6ec6ccbda84f075ca87c2fba196bf1381f30abf59869579913313d86621e8367ae23652f5956d3e78accb4607dcdd6ea8e19c11ac7dc0382f592be9a0a04eb327c1dc91e429624ee26ec9e7d4719e8e03abbef1c67884485e88f194300d05eb3bb1f46d4381a6730413e3261f988364ce1778e632198d6394c07178e738058c3e72a303d2f3c0d593c6d583ced589896344c3b164f43164f3ee790a0618ac7d473da86920f4ba63d9cc2ed5a3ee1178fcf4057a2b9dd3897d6907bd8d3dbcd62b7db865d981d7b8f5d6ade630b1531cf2a0b32c6f7ce8729f7e0014882b2ec4f4285bc35cd630794a6576c14e49b3fa68302f5352807f2d48ebab6dcb03e6137dcb04684448f0449809ed1a980dffe44608a70e1c4cf87e413f303fc94de6b7158baf2d3e771f6e2033e015ba3e93f4c2a3e62778284fcda4191a785ac319d2b421f4fffd866d060c1cdb0dc76d09c4b18aeea6022b4193b381516dd9d31e127ee40a0cf1522a5336d4d9c759edef07535711784faa2b91631fc39dd20653a99cfe8f67f2608b6724017e94497b23ea4d3534797ea2350b4623fce01d093db8939fa20049ad00d6ec6ce075178a9185d924178a9d0856f4230bcd4602c8117c66db99e40803f4fcc87337827effe4d001a19e2e6e63cf767e00014ff39855610ff66840a45b18afe0a5b2613f3e63bea026bfd19c27bfd43fa5b14c1e9d358024b1fc775130013de506ded46c81245eb43f81045e8a19005e20161648178409ac8124580c4c81295ea200b84997aa12c5170430e65ed2864dde8206b23a3ac6b19655932ca8a59cadad0c88a29648dfe22a1ac504a59a11459fd2d6c3bed4dd0832329ddf2ec56a7abfc61b2cd978d3f51928bca94f44385970deb43bd978df88fcccb46f742f4b2315d234b0c784681035b9c24643365624396ef9e3c3d33301cb6cea0a0fc0939af4d65461d60cee00706a5f451f0a9b439c353a859be99526975400cf000893317538e3bd33fb278ea848ef69489a009bd594036b66b5a306f2926d7df8aa90fc5f9e8e6e9bdf68c9be28fbac56c28f789dcf10e1701545adfa56254a1963aeb9d664fc0049ffe29655ea35484413abad5347b7ae10829d36d1ee0af1079a6c92433d22e4699f64e333d2ac88385f7dfc1c47136a8d65b147e08ee22ac6b2d7b3a3acd2e5880ea09ae71074b5386e3c3e8dbd368923fb917733c3e4544497c9a0c7273d1651eca66ba9ea6f444d7ba2375b4e9b50a2bcb80e52f01e0352c9dda13d3836f89fcfb53e67529ba4f3c888b766c96971d99e58597780a5024b61f61ddb17f4ef14c8c7a9bf7c34be755fe5512f49235f2c4cf0f3936231840858ef84444cf9a705f50694bfd240b895670adb37f90976a90b6685818ad158c0b44b79f399c548ea596fd363706242cfac8a7f5e9a7362a6ca80a3e5d6137cea50c82717d28524b7527ce8f45fdb3abeaac2c1c3b1f516f3f24e8922c1b2ca4d8e9869bf44fe2a08075337c60a6f898c5d4976528f327f0f735f57b49fd1e2ada1f50e516f57b3496d7ef8fe5e3d1f00d15f0aae0eb4eaa8d4fc3bfa1da878afe54fdabe0a7f1498f2fac9fb96dd2f5770af8e8f93e8ce5ed69f8e3b1fc373d1f9a3ebb8af16878e9feee14f555eb41f747d757e1839e2f4dbf347ee9f5abba5fe8f9d2ebada25715bdd1f353ad0f4d0ff47c68fcd0f3a1e941850f7a3d54eba52aa77fd3f8a0cb69faa1f1a1a20fba7fba3f7abd54fb45b51f76147f50e193c6bf8a5fa9f0478f47f77747c147cff781e667347e14bf63c5fea0e161f0a9e84f45dff47ad1f5697aa1c7d75edf9af4a6e22ff4fad2e5aaf556f1039a9ee8727a3c1a7efa373dbe0adff46f55ff2a7caaf6333d1e8d1fd57945cf8fee9f864f457faadfaaf9a8ce67157e68f854e7375d5fb57f55bf55f440e35bb57e34fe6878e9fe687ea46aafc2976abfaaf0ab9277e8f9d2f0d0ed638abfd3f3d56e2fe0bf16dd1f7d3e29c653c94b2a7e4bd31fdd3f8d2f15feaaf26715ffa8ba7e2a7aa1cf679a9e55fb5db59fabee7f9a5e54fb95fe4dcf5775ded0ebad9abfeafe4db7a7cb69f943c50faaf27b9a1e98f115edabca0b8cfc5671fd55fc5b757ea9f8b1eabc57ed27d579a092cfe872957cae3aaf54f75bfab7eafeaa3c1f55fa988af4a3e20f55e50d153da8f68feafea7e29faaf3841e9fde1f2a7955486fd9f94bf32fba3ffafea4a26fd5fd45b55e34bd55e5cfaafda2e2672a799ac687eafea8a26715bf53dd8f54f4abe24faaf9abc6a3e74ff757f57c56c907b4bc5755ffabe2df2a7aaada5f55f94725dfa8ce13663d2ade07697cd2f44ecf5f453f2a7d884abfa99aaf4abe53d1834a3fa192ef687a54e9eb54fc991e2f54e087ee4fa59fac7a9ed1e5343da8f4c98cfe4db15e55f5cd2a7aa87adeabf82dfdbbeaf9ad928755f220bd9f55fa50153faaaa9f54bd5fa8f881eab7eabc94ca771773e8423b455673d07c82305da1b256dd9eb3a1f00ece609dde397e2d17a49ce2679091bffd97b0d2b6354430cc89e374d1fb6e6f922d59981b694d8fe5e612c0c25cf0a42c36e4277c256a44efd88f7506f2fe464800f666d8769f67053399133026b91f3430791207257ca05605db5982948684a5d084e919b8505d53ce8a7dcad5f48e8ab4fcf0c1a1e3123d4c984fcb636432fdb174affcb58d437b7877a9716ea87162769c3bce38237a9c985aecb6ccdb00311f4c48629e93a6a3d4b43049d301004a122fb8414cba5f5c4f086be3b4bc30ba8adf3ba74e2a235e58b9571666a8447c06bee15d08fccf57ec8ab485294e78d9e92debafc90b1d40d8ffd1611004ac941754b208085d70d8144d07004d9f58cb1d1e6bd70cae541e26a04119c37f4d6fb445068fc0e78a8876bba21ca4a705e8dc74070b6a075f6551ffc0ce8296a87f65b6d586134c6d79ea7c5fecb414885fdb3874a055daa36d438de3b3e35cb3e3c46f27c438dfa7947d0e059c2c2a62ce122e3e4fb200d3455890e9d1243b3f97b901f6f43e8f3b517684771841377f7704c142a6efa81ca4e471c7731b2bb75977028d8deddc2dfca048579a9ca7db00e4395d9d676caaec4812836cfa5346e1bc807a53bc51f806942938844b385a5122dac7846041d305c301ee268ed3cff945d90dc6f34dc176de22a33c7ea89cb348e61ec8432dcc782a96a90ec445d8209a8e643a05dc6e47b2bf69908b50c02785b0d286deb1d3f504265199fe00bd3f4b75a43576a6df93712232c3da691efd9030e4a61251cbf325f12295e2330d78c96e268e20a8091dfd341a676f8d5c235bb6f292aa5c6648d98ea9bd372760ecbf033e0ad3289751e45b419e968df002265d321acafa4856290da10fc0ef1f891c69c1043a6db69b9b08df804b38e820818f0507de21a54b07a61640133ecba608fabea3b64c6e92fc236458f90e394533dbe53c86f026c20efb64d4e721c501ff8289e4ec8fc46e38ca03e1109932b00ccd4bfeceb15827dac5ec44b5a8f6ec8fa28062a02f9054199c4674dc3190741b07d21367a92a790fce723c22736cc464462e22cd44ab597e77e58a8ec9141f135196df412ef028619dfe9c32fe8be97380f8c299cbd7c1cb20de7d41ebd0d55e876b4546c2e732ab94abb90e9de95d9cc71b68954401432722291388393b208bfdc4a9b3c8e2808aaf44d831a474b5c1c494cac4d8a9f09e0c1f904c78fde12e88cb24fa4d24fc24f3ea7ccabb20024051d9d277b2fca751de5e9cd909f747a04931257c592819ae380721ae49243c9b10545426600926e632476baec3c843b4e5b2e375ee9053f8da9e65582935223824b9700c5f91ab7929e3e45b145827bbd0e31804f878ce3c8453bcbccb757a780fe144b799daee7e9285f12f13151e918e56b78fd07f7eeed217f6c9220b32535e3e92d36cb794944ea2fa26178732b104bbe689d3f61f14b9aaf89bbcdd548e7592f5635588b81cdf46c489f99f7e06d72c138471384f211b2985ca07101729cfd2764dfa29f74962b8f88719bf97a3ebe0fc3117bc96847f2a9fc14856fef43358a1fca767d431ba7b076fe1608ffb67697db0c7fd33d2631ceef1e13b32847f91e95210e8479c6896abfcc9a378fe9d7a23ec17110d825cab9c1d1f673f12709687e7037561dc9d3dcd45ad4b5d18e990f38f05c772022f8c983303f544485faca88c59d384a7b693c5ebff218b6e86700fa2639d814de438d979b0d3af3e3d66e30588d38e80b01f3c498fd0c5b0fc920e898643ef396f3f987e1187efed07e8825e8a189ff952677cea3823b470c7a7c8c31dcbdef7a7d981ef4f1d678356399a660adf324af6e75c0500c2562c4f996be803f5c9d6fd74c7ea8bfd72757c92b181d445859018e6f1350adce3654e26d941d24247c827bc4bb25232ec2ac84804a2e4800b0da1402603bba4bb6c39cd9624dd6577788c298cd451479bf58094a2e568ab09de583c721468634b9ed72c85db35ad98c7110540c43542555be4316182c96cc7a5b9469ed464021397f3127af0523b05395822e515d668823d7d40ed86f584f726abf769c76a7336e35672b10958152fcfa030d3154f919be1fcfb9fb3a0c69a61e9fa80e337cfc6f39d33a122bc3d8ce1f1f7c0e2519ceeb0543e020480ed574aa73830aac6cca75730c89088d67d3a7e30bcf0534142db8d9d7400e24c2cb2f89fe2d8497d369f9434a749bdd849670e1d3b6923ce0ab11a6759bda4dbad1091c854725c9c17b1d339affed31fa1bccb9574afb210e4ea9a0b2af1642f3f0e4b421e164f54c5215f5eca8fd9b4cf603500c9c317f482f7c5a4fe6c44eacf74f28c0a1040bc53c28c543f7103e33e2051bfe44ea50a9d0d4ef323b915d194f23a3f652b7c436a2886a486a20feaff90ddb17841dc2c2afe0a2bcafd237b4c83fb0f047694e983a23c482f4c4a4b06aa01ab572cfab438710a35321e1164425f6572cdc198d0a215616eb060bb9d64d27a0b1db992683ee0f91706e0a502c5c08405b4c4808f5ef1452f65de16beae4c91d202df5dd6532ad01f6944b7641f79f12b71dabe8f04b1ed697a992ae342e107d77252f382da0b3b3082fccb64b478f58ea934d7e8295ff9c1a73363efc63084d80d4c4a7d165168e724e7e46dc96bda743424937c60059fee4b2d4c5f4b5e594a6d774ce9f8c013f10cd25419cc2824155f6098128e529c2d1987307f4f3ada5f212bd0b07a3afb818c3125487c28785c54e65bf89b23ce9c0f4ceda61fe1fde3bae0e79f27bc8cd69c340ab9c4fb678259f526598ed77230cfa18d5543d67e8b883de6518728fd0edb95bda7967454be1025e485ea1825e6c521e626c1297a3e2d4ce27c52dbb121df9bea683b8020c8d949f27d70c7332cfa477616f164c2699124bc5c7f2a594299210cac98455a5aa61798e198b96f6f900d4d0ee83a25fc339d38df599c3a26ab38958284e01d60e2bc1dc1b336546e8c07ca70e4a0b04c2aac49432a501fb264121a0e896d8aba63c684bb3ba14cb83d878e09086600b44b1b76378a33736d58f36e22c21a6587838f9d98b4f5bca30cc98f26995c0dd331e72f6499ba6e4759f5f2ac2404c6b54b149213cc6149473eef9e32fa61004e9fc5d047ca2c9b60a8ac1d3116dbcae5389ed4e93224d39de12e4bab94a35a5daaa0eccabaec525dfa2c94772c94d794880082a7021dedc1c4a17d0e88bbcc291cfc66ca0cbe7ccfecb7072a74e9039567eb60caeeda0f0cc1e210a639a0454e3101a47714a42316f3d717cc18371f2032e8f502435c53d3b863a7815fa6ca4f9f4e33a8019350410df08ba106f8e5432d18820f351822a6967075fa85e27a27c3f58e827ac8e27ac9e2fa9a829ade7e60089f827ac7e23a84b89eae4f61da49bc57191701a034069c82e75000736f30b69d31a55fe5795125b9c52cad8dd867e0e46ea15fc511ae8fc6e404eeeafb6b20f94ad3c1ac44a8dceb0d9ad59052a2c467ec469c57843ed641ffdcc0fc13c194a64971349ffd043f83a8b982b17692dc2712f0df31f2d2e68c929770c272e816c7da94deb1c2cf86ddd80249ab87aef5a2b43aa011764d0218d99d22bf837181e32e2570f2d6e141e8d883251e600881931831be2d2c817dcad507005d3742ebeed21a7b352667104ff288eeb941ba358699bc80ff833dce5eb50935e53bea38bf60ae233efb6977eed029a78667b0d67a9272489072eafe43a9279eda7932d89ce0cef9e917ca4b7e9fb29406f7dd3b59e14654f80e6b4625390529f7b55eca4280f202b017c0c935b4cc0263608116161f726233332cc089d5684f6f4984f3a48967d07df7dc676051d4c2d116226f030ec53d14a765c1333e238d60a9eab0485507f093041a91760d3b30db1120fd53ae5b172c5a3079347b2522763ca960c6caaef250984684608155d153ac8e61fc591f583b27f8260b7231147ebe7739933b5be5b69d1f4bc51dca27754d0ab358ac2cbcdbd2030e7f1aa5c842d38b4e1117a77ced8645d6822d558edbef0a05daea34e363b44e2a83aa7ee1505888a2d9d35945ff4e8616392358e7c542e0478623f3e78b237fe1274c9549990cfcc0676ea96f2c1f9596a72895069982807d8f4299c6cf3ec287122c1a950f8cab89d947297dc436bd552cd11fddca5cdf245b68654e5b8957b5322f31df8e95396df5fe1456e6841179c818915fd386e75869b72405c817437345ff134699d6d0d29cb6677c2e96e6750ef2e765695e6706b4a53966e78f668b8cc4855386c4cac3f0ee14d2ccfe2a87b2ca3bdace76c71ed2e5b1d79d3ae29434a9c4a2f8cd64a8c18f832503676eacd34fd9f309e0d320e91df36a545a94ccf2bbee3aff020cfb1a7e0299b0dafc64fdda3eed64710894cefe43f87a373d9ac0c032d3556e8509957e1c4b95e331783e2f2c47855621d705b7b151863267832ce782f34ce543c72921c2620035e4a7fc51587c391a810063ab312fb643a9bd2932fbb7658e50c76017c4aa4841a29150a7d31d7a23e410cbf4988d50220c68357d3bceb8b5b87cc876e6ff354b1e9edfebde816b1a92e0c96b1a4ab305b58e539c6e16841cd911c687df7ce34cede33fd9e36fd27f93c9878939399d9c626b8e0d95049bff081c7eef380f280248effbeaed5e99af16feda7b75f2aa7b38ea1f79de6cd03d9cad76c1f5e12c8e5f99afe27017cdbc781206891724af4efef9ea3fcd566e147b8971f9eae38fef3aa3cb57df5c066f7fff6f97c1653009b70f91bf5c2546d7b2079d6de4c55e90187f76d76e90f891f1a3375b05e13a5cfa5e6c1a17c1ecd070d66b0335898db47674ebcd0f2f83effc9917c4dedcd805732f32929567385b77b6f28cacc4347ef2a2d80f03a37b681da663fffeed65b04a36eb5f2e03c3e8dc7957d77ed2b90aef3bb1ffd90f9627576134f7a2f4cb37698dfc1fbf86f1ff475d9a97c1ef4f4eaebc451879f86f7791789168083f5879919f88facf8b71e757e1fc01759478f7492789dc205e84d1e62408030ff5b0f603afb3f252dc9cd887ddd16064e3ef5e92785127debab3b4570b7d5c8441928ee39dd8fded7df9e90eb7ef5bb8da2c5c87d1c9efec51d7ea0ecb5a0b77e3af1f4e3aee76bbf63af1439c781bd3b87c355efbc1f5f7eeecafe8cbbb30482e5fa5dfffea2d43cff878817ffd105e854988fffed3fdc3d20bf0df1faf7641b2c37f4fdc2071236fbdceaa6dbdc0f8ab1bc4f8e7b9b7bef5127fe61a7ff4761efe76310b83d81ea63f6237883bb117f98b0c775b84b88d1b2dfda09384db0c09d987ab3049c2cd896d6df3858c37ee1a130681a76e599c4461b0fc8546dad0b2b20a27279d4df8b9137b6b6f96f86180aa5eb9b3eb6514ee82f949b4bc72bfb6bb03d3b04723d3e80e06a6611d0edf14cdebb53cbcdaf63a2bcf9dfb197482e523e02dd1706219968170907edbbaf339a696b463c3405dcfdde8da60062986590c16a3859bcd616593154ddc2cda05811f2c3b29091b2bfb179a6cfb16498b08edbd6181f65557d96597e9b2d765baec8eca2e7bca2e7b4c97dd01db65491cabbeb2cb3edba5cd746913500e945d0e982eed63b64b029743659743b6cb21db653feb1275b0f351db476553783e68f84d1884697b4f0d05c9c68a66645fa8e16697787372270d6647d648b027a816459babc56c361f327dcffdd8bd5a83eed1e63eee9a866da7ffe98ed2bd3d7823190e7402bab18f6dd3e85a7dd3e8da7da21f1284f0d68b16ebf0aee3add7fe36f663d44dfef564e5cfe75ef04d81c6a220af8e8aee567ee2a165f34e82f02e72b7f87318cd3be9af93208c36eeba241292ca58123b1c8828cc10f3101ea7e3f33a700a14ec863e0aba5631268377fef83c26c805b8fbc40077ab02dc7b62807b5501ee3f31c0fdaa000f9e18e0415580874f0cf0b02ac0d12fe480682423070d4bf1e5c9907f29c4c2edbd11876b7f6e60be3a348d6ed734bac394a9da057756801c152067bd13ac1a0971e57fc85ed99eb6702a4068a3c53692d7afdd68e9d1226d290f9415a5b2af5b1eaa736f16466e2aa396b8cb09c21a5eb9bd6c0aeec92a3d387292d94571189d6c433f48bc28839aee0f5de2d253e11b4867a05b8c1b7f160626f9a313276e3077a339fc5a4e3fef8ebc5da5ddcdc2797a6723d7117f94b422aad24de1acf104fa2377b1b038040326c3fd4c4c8b5f8e2668321d633088ee9535ca91d45549acf230c4922fc232eea1c06d35190d5d88f01e8adcb9bf8b4f7a19f9831bf6ca9d8777277e107b8961a1ff493732670b77dfb0f7efaa8de90b1ab3a38fde805b55777b6fe497082859c27d87f6a217f10540115ec1f7b20d51a3ec83a0ef7ad8eb43ec55c55fd19cb9e2826abd37df88446a1e8f748d3f64d34dffa2279a7393ded1ec6aaec5bdcbfe6408a66a15dfe8f1791b85b755b611b9533a57eb70765d73bfccfd78bb761f4e501fe49ddf2e4fc236f7547a80d5df5479ebaabbcaee6def0d7b90fe27bff4c3ab455fa6d3c2075d3e6f747db98a3cf7fa04fdb7e3aed7d4bd067f4f7f6beccf723105d4535680bb9358f72f6b8f2a64b26de4c1fd524e36fb2e9e3321ab71a6444a7225c4c4d75248e29dec84188b4842b54dafaff233f9dac30ada7cb7e590fb0122c35c935c146fe2bc68b1f6eee962a288d989eeda5f0627338f90a10c23ed2fadcd2f4dffa1828e9f789b982c267bdebab36b61c7bcc2f4dfa75d9cf88b87ce0c6bfdc92ada5c45ce11de98198db285a8286d57f97cdff79004f5fd6e81fe61d6eb079d3b7f9eac4ebab94e2bd702f629ed6bcad0729ddbad1725fecc5d67cbbbf1e7f335ab512bba108815d9f140123b47cce76dd8ebab3923a55e7b0fcc3771235a8605ade942493758d4e5f541caa3d9e512bd159d0ce0c4044cbadcca02265d56287bc8777d75aaee362031194fdfffa02465f78efb578363a17cc6a213f1f89b5d98e46b587e209e69e0cd3663236b6f919ce0cb78bf04f1c834ec51d734ece35cd149ee21cb20140bb2d567e012100153afec8f9a09efb26fdb03d3b07b7dd3b0fba47e971d71b736799fc37536ecda8f935ff8b25c36778caf9e25d9d5bbb5b1f64f8230f9fa64edc64967b6f2d7f3373c0484b29a292cbce25f788a9e811c9e6282f4f060e6e92f61173b515908cb5047bbf52f8c926a00152369bdce2e8893875cd79e1329f55886d9719c7450552c74105305fd186bff179ed606439dac4b591f737cc4c948a852ba231f27c0fbdbc9229ced3285fe2e498f88fc5dc034ec6e4a7ea363fc7468b8bb2434728939abdc09178bd84b4ef2cfe83d332fcb4e734a7b84062c5e240c0e00293a8c7ff337db304adc002851b88d8dff9c8b86411285eb8e1fccfd999b84b95a45d66f0694bbf6a27c97dc67c76edfa25f39bb169c0a6ad5295edc69818e27c9f1443824bb11932cbb2dcf2c96f6289d293ec0baa58eaf3caffb5cb0176198db1c34029c16d4c2c84f85bb5518f99fc32071d74c8db91fe157eb93c8bbf5a2d8634548a24a78d7a1aba1e9c9ab1188b229c6464e3fe3c7bb24a1518c7862d114578b3c773e8b769babb825b4e5d34517c5e24dac981efcbc3fc91e70a94cf53af716ee6e9d9072678f7df55730320263c61f4a4626429c18751ce469204407255ca4006d0f3d09d25a8784acd49a18a4e27db02d2d8308816817adbfbe7c357713f7c4dfb84bef6d7cbb3cb8dfaccdaf7ab3f87669dc6fd641fcedeb55926c4fdebebdbbbb3bbceb1d86d1f26dd7b2acb4f26be3d6f7eec6e1fdb7af910c3434ece1ebaf7ade57bdd9d64d56c6c25faf3bd16eed7dfbdabbf582703e7f6dccd6fe96fe36fff6f5f7b67578641b4787dde375a7dfe9bbf6a165f50cfc5f240576ecc37ed748fff3dde870706c8c8cc161cfb0edc3eef1ac73681f1fdaa3ce61efb0df4bff7b64b31d18f6e151fabfeb7ea73f43b5edd161f7b873d8efa1ff77641b56e7b09b7eb73b87835e27fbfaf9359ac8b7afbfeaf60693f492f2fa2d9e648a83af7adee5ab52c4c57cbb303f48ffd1260958fac4f7cfcb5797af144b8d649470d1491eb69e68dd0ba267d884c97ce9cc7651e405095b12a7d2dfdaddc699e440ddef4be212bfcbc806a6bb670d159826c4d304f72587db084b1cc06601f393204c05947578e7cd898ba7cc9441883c6202cc0595b2b162d635ef233b5983ed2ec91694ba385fb9b147bc2db18a9e4be61d93a302122f003cb6c1fda55442f1d522e4b56ae6cd8f3dc0b8c937b342e5493c2450f3444b8b256e01e72e01cf6d1629364e32be47e2704b862be0ef333f9aad3d6376ffedebee6b63f6f0edebd1a1d57b6d44e9efb74c1dbbaf516924aaf376497322039f1f461076226febb93995308c89654b1ca6245908f2d5902487ec467dc97d2f25749b50b94d5d16e8814d499980afb0c64cdcc6cc795aa93987d7681b36f1fae3f0177859d2c6825c05de17986a555a6a4ebf43b16a9d1673f7af7bae720dc84cbfe4b70085f4ffc52bbf555c5fc2ded15b96a55400134a82f476434b13b94ab8543c17027ffa89bc0490fc091195f107e3f71cf5668a91e2a20ad114c67ee2df7aa0b458d96514de1525459bc05bba4c1b5412af223fb88656c805605871e0afd722006d2980b610405b08a02d00d0660124fc00441805a2c2110ffd27de669b3c48ba22946dbc4e3988c35dd29a27815a266b92f36293fcca7269ae4cc8f4462f5b4b97c6ec28b6acaf0443620680f062123a83e2234765c0d5be41d40461f2f53f676b378e7fffede52b2c7ba67ca073f9ea5f6f1a3ddb76df98465ead93d6e1a9ec0fed668fbb150729cfa90e3c8b98622419166bba4c799e17245fa7e78a1b9946caa78c24dc667f6139d5341651b8f99affd83f7af3c63492905ffae60d07420c021eb18420098bd14403094adebc110a59e54553832ac0c9ffc8d4b167fa8014b2f6b727f95304e947c5529177b5b017831aa87467295f36f55be05d8f5ab5b8026995aed6fb73b325d01b87c5ef7ce4d9de8857016f1242bf5705fbdc734103ffd4a90135f9df48968563f921b2fde0a001ef6a2b459b7d94e28e7c2f14e3a5502ff1151e86a1e7bf510fb504bd56c032af39663b7597aa1e1ca22e2816c8b1f5a257e9e88de058cf46db46fec68d244ff15a964e3acc8ed9d07b1d84ddcb99e1e2fe4f5cfbb14e5c5bf7c4cdac68388c8a430a1c7ae7d5e2d034a71aefd8a80f54c393a7269dee9952b9b44a9aec2b71537f299ae3719f2778f571584c5adec01db9d54f701e9ec5d7390ea699b31ad8b42033e4ad1b7941b2e7739b365cd03fb6259e3643c5a912ef66332f8e7f03a78ab5383e1e5a2fa78a8a1414a74a5e4bc1cab26a8d4f1500d46fe654b1e6236b60e9e2a6fe52fc064e157738ec5bcd4e951ccfca5385c4f4b3395506a6610f7aa6713c7cb443e5ce8d823278c6aff950991f8fbaddab974345450a8a4325afa5e06459b5c6870a00ea3773a85c2d8e7a7c6d6ebb4bf1eb3f54dce1b0d7b59b1d2a399e95870a89e9e772a820bd95ddb34ca3df7bb45365ee06cb62bbfeaa0f95abde51efe8e550515082e24cc92a29f818aed5f8442121facd1c28b36ecfea296f294dd7e137709c8cba6eb7a1e62bc3b2f23421f0fc7c0e9363d348b901e6157b3b4b446f38649d4ebcf58320f7aec87ea020721996e2240aaf3d8a2dd0b82e4395943f79fe1a85b9121932a83458eab3616f06590000c6b6b7b0a8e6d1080200d8d808ea187f307e4f963390f33a612a11064094b58ecd444062a064ed81c4b012b64172a8859df260672d8ed43647985c36ee9af0bd433fa5cb5ef832836527be96d64b5ce3293c85908c54898dbf9083d21a597489d18ddb51bb621606e99ea0eca50de3d68ffd2b7fed270f79d43c45bfbc5d55f45640e95ec5e17a97949bba70e85175ff07033dcc724679a3045acc14f8d3074136c8ad97399b8b62b3723729f1918a459b57cd1c9208cb52ec9c18df7770854d1826ab942e9691fb10cfdc758ebf9c4153d5dc20f1ddb5efc6c583be30da63b60b0eafa0cf3bfd99766667cad970547030c170580020ecd814c3ebd647e0d095e9dd8d1ce7b81badece964e1473977a0d90fd3203f4c0e88f60273c613cbe81c89bcb89b59e2d50e9d5235684a2ecf0087f97dde5facc1635d60ac81f60d868c0a536b25c1bda662532065576b2bbb03b53427994c5f8d4a6bd0299752adbed51786c87a0a8c57c5ccb08d7b4ecb23b078ee5addab5eafca0da7e22a50f79e1aebc0dc86f673d9191c99c6d1c034ea3ff18bdc8370c526c823e8b1391e79c4cd5ac141741c09638dea0c5fe91ea7f248225626bff28ddce32b77d404424d599b1703b00146e8a09b359a738373d6e987174f9313ec90ee5fd4f513083dd2e510c1f9a4c75f3d88a57c40d4aa8d13ad15cd5d4b23d4439de23092226f9fc750451d5aafe6fc2bf2612e7b25794b8e129193585141706be594f3afafbc8a6428368e5798082650490097a00e1f365165163e21590a40952f2303b5ba3a7f021aed8421aca5be7be8cf8d1ff81b97e727d934a2a6480f958da8e6ec3577eb093ff65baf647b1227790d0f2e3009d1e34c56aec9d69bcd940e1b47ccb4da64c46f20740dd10b22396d656f901f4072e087676ddbd1863b375698572242a78948c6af821ebdab018f20a4e7118711b44aa69cfd0583e56b4126d5ee8837a5ac261f9fba3317cf5dcc0cb5e7295bdfdec834ec54d4b08723934a35a1334043fc28e1e99112265f13a603a6421a543326e5d42a8c20635662629732ac0aca892ae862794b05cc556bace06915f1c9a7363d7a531c6d87572277407e0a916a5de99c869afe4ce2268fc7ab98bddb183532e641f9eec0fc002d00d016a65580f3985e13b8f5c4271daf2cf50a177778db4aa5e6614fc480aa81ae2de54866a1cd14d8e5a883f68a57f0f212ce5f6a250714f024515ea0ba1d33db508d404a4dd4323cd5ce099dfd597187b63ea3aab284dece95ed5db07b8fd2dbced1c034ba7d8bb37b1b4eaac6d95e634f57dad51a634317cd62c5291fb12a5d5538e9553e66e2264f78d237468decc084fe54dc83bec9f86d215a0137ef9c6f0276a5735eea27a77bcef732bdc888c7286a405ef598e74d429ba7338b5107e9b54f79fe42ebf2429a1f15f4d39bcf66c776fd3348b40595f8e31ff26d8153ebc090eecd6abbb3f509d53ce315bb56fb8c1fe62a02bb3f687ec6abb77193f95538e3855b5a6368e8304b3c8c038fbd2a5d5538e2551e7fe2264f78c437468d2c3413e5ddc63de39b00d016a65580f30ef92670573ae4a57e8bba87fcb16d1ae821a0c7be80d402bdea29cf9b852e53e72c471db4d73ee6f94badcb0e699e4478c45df586c3fac790681baa11c83fe7db82a7d6a121dd9f157768eb33aa79d02b76aef6418fec48eca3f4f26b759b9ff4eaaddc6482fa27bd645b6b8c0dbc988b15a75c292bf454e1a05778620a5b3ce131df142fd2c312b81d720ff906c3b7846505d4bc13be01d0950e78992ba9f6f9de378dfe08ff5f9de39d82bbeae9ce99823e27a717a206c26b1fedfc35d6e57f140f22ce9da3de51affeb923d8794ae489cef556a0a97542c8b664b54dd9f6746a9ee9f2cd5af148b7f3ff343dd295dbb7c1f4aa1ce8bcad7c19b8c4c0a80b225a3e9104436887979f90c895de8765f4378c44724413fcca8f79f00dcc8e6724e7d2a8a3b31968a7b2c22c2a9dea2f97813455469ecbe0c4326c947913d0122c6146c08b865c349113203d38cbd505f90d706d087dbae65be508f236fc81f838b1599cd8429cd8244e1808f694fa8631a6c5a31934e16be6464166f7ccf48a450765aca33afefeb9e30773effea4cf13aa59f08824ac646b6ea47d4e6b7854e5adb936a69cd61c4983adc5e343f940479a0371e532c1500c7bcf07e34629663b51f8da94fd1df3251efd1ea9b52b7bb605d26b85ae6919a4e8da6edcb5d6aa57f19021a0eb36864e9354aa39a19410721c3470e7653486ec787e932730da86db7431504ed82dca16957c4dbad103c73dda3b41d579b641983e33d0b3903649b845dc3ecf4c558401c6c5d8f79baad1ce3c8954e16d4d53987d1c4727e9d845900962f6a84c3e7daa8a60fe24788a73620fae177218be58670cc5b4841c47d482c7659e95c38662c21226a66cc351886920abc688a0dd93387e686284bd56d54068bd4e4437b26668e61fa28d1d48b418dc337129d16184823b74156653ad2d7f5d9ec011a5d231d18e6bca6363758fee2bd59873cdd60d4894c7b01bf4f05cdc606a73f3462bd0b43b05876fbc2e7ceaafed4ea3317e7d079bca9dd79355d4ae21953b793ccecdf0a43d20749f8e3acf697dda76e6a93eb7ba62f39338fcd49f5e03c9f5119d822a43031ab7ef26549fd756766b69ce28f6ed4ad4906f34eeae01b13deaac9bcb75cfc225a94d5ed32e0e448450d76d491f9a1a8e4c953b6f2451497c702a77f28412d51e10ba4787a8e7b43c2d3b4d559f5a4379ea511dabeacfaeb938f508ce579581a92d4de9b963d5e7b3951d889a33893dbb6c35e4198dbbab4f6a8f3ae9d664a9a775fd6a93d1b48b830ab2948e7b983e30351cc62a77de489492b83a55eee40945a93d20749f8e67cf697dda764eab3eb786c2d4e33ab0d59f5e7369ea319cdc2a43535b9cd2737babcf6b2bbb69356714fb768d6bc8371a77d780d81e75d6ad09544fec62d726b3691709fa12959e1b9e3e34d51df3aaf6dd48a012bb9555ede309c5a9f6b1b94707bfe7b3362d3b01569e584341ea311d056bcfadb914b57f67c2aab0d416a1f4dc0b6bf3d6ca3e718d79c39e5d109bb18aa6bdd5a7b2c79c726bb2d3d3ba32b6c8605a454115c189cf6c1848f017caad81efb900ab266eb4f4f2f48ab4d75aee8f061dd6484fb5b20439a9e14f12ef3a957f1dcfc34ec45717fe7add2ee038d5ab6d595fe9b8db1540f0f15c149345a5dbc8c2bff7e6bc54907bc4d8ad1725fe8c9b7b238c7c2f484ef21a9c959cfb9137cb1c26887ca72484449d59b8de6d020ea4a23ae450d86f374e222f99ad78e3882aa4ffb0f3a79f789b98aa914f2e6b9e845bc535246f40935b4e29bb20f6ca94db79d6d9927c54fd92c545d7307f31994f050e5e611c7d4728c22f8bec934dee5c69948cf689ce4bef0becd794b932f5b6f7460f25b8e7269f6d34b5d217abfd9971d250c38959866564936b7d624ae7b5c6d313f8b215b48abdd2b03b9b8cfff07db9b3de088ffdb406d911fff46ddbbdafea2872e4c064eaf274c13cd6b087a97007d09a45b6c0f93450c399bb5e873b2c3a80acdb8703c4a9885cda799674be2339c302f0576e4e4eaebb475a9de08968a42c1bbb6d6def0dbbbbbd378ee11264d0f3d33c6693cf3ac1c9a6fb4c3e7c69174ca6485e62726e6af2aec54d4d4e22b46b157ea3a2f4e4e204e5fa29ca2b242997e5894fc22d5a87e203c227f822cc719ee198fc1ba1b8d20a31ad73daa7b384fff22893c13fd2eb7cf95491edb3b4f77c05e1d61b14039084d4154d198cc13b9e60ef169f3b915b5c7b478a733156db30c28ca3e4aa728d92058072dc0984d402fb95436c6af521a239cdd61c9a11f909f0b12e46972ec2ba32cfba86c8abd09f0291557ae222956f382dea0a1a700910c99a5daa082febb611e1e5b66ef5080f58ca09088fb28653239e3677d3c25755baab82bb0afdb54077529cf28dcc445dc1976e3e1e79362a2ac2cbfa6d4478b955403dc203360502c2a3ec06d498a70d03f4105695f2aa20af427f2d509e14a9fcd7785157e081408447e6394f4577b8d74664973da4d4a33af215464074d44b8b1ae9d4538a16aeaa925c05bce977d702c1c9f0c97fc04055a35d90d2298ad4c69341b1d88ae4de4c4594558ab068cbbf4b56cd6b6e0fde9806aec196ca8a802af2714663a8ea770bf40f5c838b0b2327ce21f8b408a38dd1b5ac4d6ccc7657feac73e57df6bde86beb30950353688f10991ebf313958d56b4907557c72002a0ffcec07348dc7472a3835a279c122785aa962bf56df9bfd36b6a6fee66c381cbb3b7b56dfeacfc9709adedabb4591a83a16139cf2d7c4ad080221a62ca5131a35bf5e72e1d2835d8f1e5430a4ed046dbb3589a2d9905ccab03529c3ae4919dd0630f7ebd247c341b954d26d4025d275492b74b7f7c6700fb4d270602ec5743529a6db8862a42ba480bc21dd341c9a4b3dbd06d4930ed797013cdade1b5d618d06e4d374642efdf434e9a7d7887e24a0f795a03724a0a6637329a8df8082d2a14652924f4bfbc33d71a15686e7d2525f9396fa8d6849027f5f0ffe8604d50a0004551537073f48bc08dbc81116a2bf3536958e9c05b2db860825dc6b16832ce5e54b82e3df385fe3628730d60cb7eecc4f1e4eacc3e37abaa52f4e3ae7eb8d3af35d163fd90240f16ba8a816ffbfea640bac687f63378059b85ebbdb18cf3e3308c06b91eee5c53abceb3c9cacfcf9dc0b44ba3fdcaa9e12ab525b72fd33b0e1afce55387fa0d6b1b98e305ba37d74f4d81dd456e9514f2f62ecffd38d7cb78309e6dbcb5749b4f3c85c12b9bd7411d4b720c30099ee6dbc60076dd608dbf2bcf1d53a9c5d8b5af31a169638c85e9a6c39f76ffd79766665cf02b9914cfe0a90dbde1971b8f6e7026d16d9a2b4739337e15acb9000153d52d10f99bd9cb574d7e112e1c2f583ac8bfca0b1d9cd9b2efe09b2d4fada7ec3725fb658641f2fb28e676ce359eb6c22ab92c19a6653a50665974d14933d6fddd9b5b0635e61faefd32e4efcc503a6a42021ab5046811b3fe89046da98bed071d2f16ebd2089d98450bbd88b3ab1b7f666097051413674a24204b4b030fdc7149214455103fa98ee8bb5fbd04193cbdfe7704d53a399bbdd7a2ed52e23d442a0f986c37d0952425e37f0cce356a93493cc0da6ee84b8cda979d98a79d9aa5915153842d0360ab75e943c9c64a371b834c3f9db6a54afb27830998cd74b4f1a1e9e24f538fd25fec60f969dc52ec83c40e0d13548cfae431b79c723b3c2439bbf3a8d7be3cdd54b399e25996456419bc0effd64ef945905189dddd2161778d9312f3b06ec1820eafcd2ba50c2f35fd3f25ed3f35d13d7c844cf1eb648b9646c5086756d507e35fad14b60a572f23bef6a612f06848036b072f394dc9e3f93c30bb3154a4a73d76ba19096de2684421a59c80869a0d0a0843454c8305b90162fdc256b3ff078278454b101f8f06f590f7c49994c9cfcae7bdc3bea77b30236310abc3ead3c37bf7eb5ca5ac44953391934d992fd5d9d184683706b656c884b4936aa20b90873975fd98a5c33c2fc8cb870f5e92d8e2fe703ea2bf2a621bc5ad8f52d2d133b6b375a7aa6aa9ac8c5ba695654e8e0573a0009dd7f38f041cbc85c6d472aed32bfc8a2c85baffd6dece712c3ddca4fbc4ebc7567de4910de45ee362f08a339721a84e75d8b8ee624160a6492ce49747a2c0512245e4a11edecc4e5a02403a84afe72f6a76e466e00c2c2cb606d65d5c4acdb44e229051963a15a6d29ed3121f6142734706f1c650b05c1588461c279c76bc85e7302340af2e08d8aae3e6110b77f3a20b59417cc050a2bb2c4e068ab50cdb412cb2820e4b808784c67bba3f4402c158a917bb78fa3f0a9a56cc9c9f69b14a539a6def0c84174a021a5a27a99f23ebf2b86dbdc339ff04a8d8867a6ccf935ff91edfe011d9642d039ab0c34f5eb63f55fc101596d05fa6bed26dedfbfeed896f515cddf49b5055bb71efc54c820ed6988d2bf7221644c53053321eac9b43022d5065f3952ad76c55a623d8b5cd3d2e5685af8ba1658b3bab645f0a8c71db46e57da7a16896eb20ae1defb49eb84570b8a4abba0c69efe8dec065b7b37d8bf91dd20a442ac65fa8577b01571111a9e73b89f4a471da74995d3aec2c6d03ceb4473501f77c2a9bc9c782f27de639d783cf27d92434f0048a5bd507977ff4676c4cba9a77deaa56719e762273bf1f2671a8d032f6d57e9b8631ae81f763f5710037fd6bedaf167a03eec0413a9b0bd7fd664373fbf1c752f479d1ee96a1e749528af1e1895f6418d7dfd1bd90f2f079df641876e744a152675ee5538ea503f95ce3ab64595c3aec29ed03cea0433509f75a289bc1c762f87dd631d761ce27d92d38e0f47a59d507967ff46f6c3cb612739eccac0d4a45afd0de7333ee27825a9a486bf179d43ba261ae58fbe6f5a3d52db9f85f63c1447f77381ecb14584e7326fa128f25c007c11795e449e7d8b3ccf85d61f4bb47a4ef37d11e15e44b85f830807c8bce5d7eec7daaf600ecf447013c3f4d8eff54f3fe32717d6548bf16271f022a67df9629a64033e9249c3f398e98bcdc48b68f6084f49428fcdd2bde2c56393ebfc840bc41e9b0881bf3d8f4d9d04788fefbd2971d3d474d0249753e2a0c9aff67c1c3459f87e830e9a42243471d064f6fbe339688afc309534abdb44c30f1337dc871f664177c517a9272606643f9e987ce6c659663f88bdc4a8c7ceb4db820ca04aca2430520f64197dea342e5c37bdb99fb8576b0fa5c00147a31fa0a5c521f4c408cfe2c516d12c36ee7d870a84c649849d7ee6f02a32b631091895ad51942f3309b7279d5ec179319b203ee48983cb2fe87c013578097dd2bd86fd672f5f5dbea2586729de9dd0e9370cbb761214ad96f9b47f0d107c392337c09690be513c648aca85927ebea961c2cc22d0abb038670cf2742b2a317fcfa38b50c47e41bf529eab89b674d0dfd9bda3d9d53c07b657c041251fed1100eb4748165c8af635a83017971487733f4e3fccd56863c24882f9d17124d99178e94fe10afac17697988dbac838f32f40d8c608af02dd53ee408a0cd437ed7d0f5f016f2fdb52909a4184379094b5de6e9074c1dd0dd6e2f878685581aede6e007974196aa44bf9c40873f1ea6f85bd8c5d01632ded03bc542c4942d0dadd066d8fa983359020b6de2e9074c1dd05f3e351b77b5505ba5abb804aea4b93225bcca5453a35b0f646d8dbf015f0d6d25ec00bc6d0250d5bbb9ba1f54175f04666afadb719c43df0f7c255efa8775401b69a5b81cc35cc9222552aa04490afb8c23ed8c7d8fa086b6b0fa085e2902380ace52dd0f2985c45d873b9fe76d3d994ff79fc1b30170035ca9e4eee96dcdf356942ef29f18961e3a74fa7fbd45da97d5dba6563d6bc3bf747ee6261d51ba4d6463eea9a867d946e80bec5d9476c3177b5a96afa27c5de86af85c196f6355e4466efd0503ec9be7e2ad8aaad47d54b766f3e9b1ddbf506a9b56d86b66974ad940ff679220e5bcc4526554d7fdbec6df85a186c69dbe04564489386f249b6cd53c1566d3daadeca178babde70586f907a979254cab28f5221c2eaf2ae066cb9586e23ea55b89aec11825a786c69f3e0a564ef0d34984fb27b9e0cb86a2b52f11ebf581cf58e7ab5c668b079ecfc3f02d205e512d22deb55dd3cfb81a00e1a5bdb3be9420ac89380f289f6ce130147e6ffe6aac514fba43465c19667622b968d1f64562b64ddd29685fc2a306741a39766de648bb597245e844c5d52c2208bf04626bf2cc220011f222ff63f7b4c224c0e46d0a4b1090b9b5a5076c7e4951166b6c537cab0a70c024edbf36c23af23b5e8c1009f1406b8e86767bb7667de2a5c97667b74f232e22e7e9c5e18ecf43fdd514a3012e38162b44dfc4823edb97f5e8875e9833c8981d9ba741713a559156f2a9e552accb2d2cdcca62496aa14ad88c1ce98699e444e76268aacc2807fe1ad1ffb57fe3a5d880c7ee1d0c412ea0cafb39ef2d3a5ea88604cfb38bf0874ed3e31286f3dd197cd6e9df829e10832e60af5dc45433584acb9a8804d5c5246ca5791e75e77d2dfa5a962da7514ae3b2953da026b528e73cd3f68c723599d7d24ad588591ff390c9286692ba2f08eb183e514b33e04711279c96c257222a08b0dca8b202f0799b409fc1b7f307e5fc5923e73b8baf518071954ba8c529123b7acccdb04ded265daa0927815f9c13595e99d820f7d5cf8ebb5084e9ead7b09a72d84d316c2690be0b4c570a24f38cf8a29abb24a36eb2c3b9cb41ef562c8a9813ba19966210ec9212de50cc3f8dcf183b9777fd2e51acf72cdfd453d8203adecd9ee1708652d73b53afee76cedc6f1efbfbd7c558aee649af162a45ed15fbd1ea919103d0f34218d3c771e06eb877f990a5ce58f098a7ae0e1819db0ce42e30f82198b098240662bdd8ba863d0eab632347617a849cdbadf681b6058f14c4d79551666ad669c16054af9b72272766a2ace6680f40ad567a0d38cd382218aa12e9c59f480ca806ab5e33561403dd204558733649352b3065c11f086ca382000aa8cbeda835601b91eb4b50015c3c8acb79a2b66ebcd6788d597a9563f3a5d30533bd6383da593031cac85496af6a7df15ef64b71acf9ae47a6dcc5aaf3ffdae78b3b61bcf1ab0d036a6add96185be7813ef369db83e231701a7cbdf05ed793cb405fc331cb68d356d1fcc6ab36f79e2edceb9f27439f43cd2bf01e4b7697fa610a7396d348470de48e8134e464adf2e860ac0b303fcc45d241933d4201d9dea19d67591411226d1869ece91703a9cb08184de0538c3776c91cb71dd1e0526601add11cb6e1c90bf78896421d81c2c6ec36d7a1221bde056b14079ddc48d965e7e3f93ddc7381dfdc13859f811157a80d13ee44f61d27e9808061482797de307363482b4ef94eb54ed5b0a2fb313d985abd05b4df59b5ea809d1a8c590294d97b4b9f0efbdf99b4706838a80c8d11083b4c69a1a62ddd4c6a2e4c6e20b08009ae009056121e77a5baa77a3fbe06c24d09d25d6ee19d91eab321a276008bdb78addc53c2b705e412ec5cfc5780e593c8122d84b160b611bfa45081eea55987ea3cb0637b09a6bb6f266d7dedcf8cf70b67e30f7676e126a048c903cbbf78967f78e303684cc47a0fd41580fe6cc739729f637eed22b1e6896e9827a41f2f5da0f3c3732d11b9f9184dbec2fbc30a6b188c2cdd70233fb376f4c2309f9a56fde7020c420e0114b0892b0184d3490a0a41843e8bc9d1100be8abdd0484123d6f0caed89b751caf80b51fa4d76a17b3cc4a555bad53d70f6300a1929cdf206eec81523adf050a88f270dd705062eae4b87c803a62d6ea940b28e51540563bf7677f1de60d7df6da205697bdfed7bc7ed69afe58863779c08714fbaf7faa6716c9986dde3981ee5a45b88d2d84400c74ccd5f9041a8bea14040e477219f26bc297688bec96674a71458994992082ebab52644d9a55b0612a579c964c3204c3aee7a1dde79f3aa766064e738381765c3c544ec5204cc0344a8115a8b1bb03d376bcb7fe76a8d0eef81598e5dc93c44ef93e4dda48cd6250ac5489b46d63dedbb5a128cddecb0af3808c97fd6fef624a7ffdc66891b2e08474addbfb03d7a2c617ba416b6d93b5a61d7eae5918cf37886c507cae677e3cfe7eb9c86166190749089ae3d2c482d47de2ef6a25cc308797467137e9614a38bbea438fdc714f3389c60cf51e6e9bcbb2f0f331cdc50d1f184f717e9de6789d3bb5ad80b9e85874cdad88f74df7d14e9beea28a4743f1f79b6c753e85312c6634a165d2b85db3e4a81cf2d528567a11072f4f8aa023b3781e6de26866f90bacee8169b33abde09178bd82bed95b33d9997664a233da9430edf621dbac909aac81e5c367d6e61c538ffb0467fa3a0b1bf70b98f50c6416da4821c25caf52ca2bb6a1daa84284ab00323f1c7110879b498a7057355918f16fa34c05575592e5ab7fadc3545542cb10928085d34aec2fb6c93a5225be2451b3f70933df1d02f44b5f4a27e94130cd062bc908d4a23c9db6c7c35c923e3f20b5352f2f058684d9aa2eeb1f496fbe0bc4fa2cadc1f47788edacdc7dbc3bf7e85e733ddc71a3a5008b9fc2eab6126c143844afb4b5dd919d96017adbfbe7c357713f7047d781bdf2e0fee376bf3abde2cbe5d1af79b75107ffb7a9524db93b76fefeeee0eef7a8761b47cdbb52c2badfcdab8f5bdbb7178ffed6b442843c31ebefeaae77dd59b6ddd64652cfcf5ba13edd6deb7afbd5b2f08e7f3d7c66ced6fe96ff36f5f7f6f778dc1ac73d81d1956e770d03bb4edcee1917dd83dfeeec8383e1c1caf3bddc3ee71a77bd873ed43cbea19f8bf88443bf661bf6ba4ff59f78cdeecd01ea5ffdbef1d768f711ff1e1a0d739b4edc323bb73d83d5e0f3a0387e9c54841f8fc1a41fded6be476f8fa2d9e4d3ad9af7adee52bf54a57e16b5fd602d9c6d179ba4483418a71e3b03fe8d8861d1ff607869dfecf6a38436586dd41df3a76dc4195d2ffa98bd774538455b64f990954d0573b7b27edcb5d977275260e9b46f687d11d7d656227d2ad1b794162f4ba5f2966092053ab6028100bc5fa214f09c60ca3a527e1e9376c898223bef393d90a8fa0ea9b61aac3a35430ea9a867ddc97b3553c0c2948541e0c85a1e8a130480a1e4ecea99e12911e5cffd9068cadab93d3d1abe98ca7f9b848cae36c1c7df9b2d51a437a77e2cda0f1aa29ee19dc31ebae96fc8ec041a7f65b6b6f24531dc97aabf4ec4a0c231844a09ca354731ad0d6d474e57a3925a03ae70e9013c149641f1e0d8a470f81f869fc9bbfd98651e206895c12652be2971632955a1193863b72e3cc37f9cb6ee37e14abaafb00257a7aa61e9c8b1c73a5da9e2733e425f5f2655689a25c3515a65edf24bbca5473f04d6ee6ae675fdbdec6e818fdedfd1bfa7d4e54cc211fa4b3ac423280682ab46ee394a2c80691069eab657d65740cdbdb2806d27c0e01bcb63fd0e45e0d5e4500d72506540ea7c57fabcda01927a681e7ab019a0997e4b6d1d1bbb5206382318fb4c76c53d484301c5785a1ae103338328d7417ebab39db973c7597b5ce68ddabe3c15c108574ffd2a82ce2f6fee45299ce4b3abe165f7e4addeec9ef7ac7fdabc171cb54aa9ea1d6eb48c3c7151d0917ffddf183c08bcac49e99330a278974f91c6d1d1e799b5a423476bce178fcb011d72e03e6c8b00fbb85804b9e83d66129f8929966850fdb3a30327e420488e8cfb5c783918405586a10b0836cb84a4cead15d0384c3d93c3e70324c036210ae2db36f41b43d32d7bbc146d79398e36ac5ce1377a992871ab3bf1a0c90f7249331424e85d62d1aac819e49431b460dd64062d5205f391d63442e26adbed59fabc8a281a8579d6886355f04f569abfa0840aab2ba57bd9e1eca74c518dd873fd1d39f866c5b3008919562adc74d152335f7fe62aac5f2500f0b7fed1181ddea6504272dac33cedea36c1acb71800f02ed5290e97b2c462fd6b518eb39bacb92b00e880abbed3a74e744ac44416b7072087bd81b698a2d6825fe242a8f92bc161d561a7fad8944327a46436c665d11e69720c071f95917db627c8bb23cc9f0ce39bea83e252ba31b25b8f94a60050e0e8bd45e57547ca936d69904744ffd32a1ac3476dad11b7a53949cb9068f29bb686187fcb2af3da03810b565e6567096b31416752db3972a5894e151c44d24f85433934a386f0feb2cfb800bd0f20efd85d2894829126a5e4b10a89f9d951b67ce517e18c8b7526e0c38ea5a5d811ab0cd71c0ad55d07b7ed125522e88eb239d7d191989f041a044b94214ebe7921329f2311033272ffd46ca9aba5df2534e80242d2d25ae878e90835a49509f31888217405296be2493701885a7abd85b91d4b3143d40eabf0c8053513fab843edde5c4638175265e03d9a5aff0b2b8877e1ebbbdc921fe0a23e78dddedd673233798c10301d96f09cad03f5e192f6187666a8e202cb23394b919889054fc27fbd2579c0c46463ce2c397c911a443d9bd45e5552bf7a9557ad40afc6945a7d8de72d7f0c6da47e61ace387bed1dc7e41594b2e240eba98b9be7c66e7d5019befe993c6cbd6f2f5fc59e1bcd5697affe25451d3a29f816e816e3968e66e77f4ecf8dac6e192700604050071847d0aeaaec448a30a98ddecea4a9b935db4be9938aaecbc733f590f0641ed33abb11d761353d3a57a35f67688cdf70e00b46ca03aad47ee985ee07b988487cd5090c03638f666adb1e157e85be2ce4579ca3924b89dea949e995006d56849f1847e15dec15412814844ee9851e95e0f74cf23af16094413754e863d58b9ab7fcc78dc2b1ef381c3c3c66f1383815082d8f1e965587128967e6919bab3a6fef994257692ed772d57ecae03d5bc85028508a6b36c994df1596417f3c51334675adafb8168c97a5fdfdf59ff4ba41b0d838432cd2b2c568196bcf3194109781c9d81757e1c8517d927a47f634273e73c369418dc13163cb2c0340748d92b5616e5440cf566978fac1a194b9887b1990bae0772c450d884fb8f588fcc4e8f5c43a6ccedab4aeaf6dae2b6d2d83f5973305b9ad778f0ed7425e61ead9b2d55069b5399444a3d5e230fbec1c2686aaa2aeaaab4cdac38ed153753d29c0ba0bc2e8995ab3d2ae6da7ad414594802fa9ca97f11fcf20aead3d090fc4175bd9a7b395854b4b9b536baf25b81a6954672c0bea580ab402b3dc96a62a1dd6a2440d6b63fd49b582d9c73344dea729320faf994932b70a4733a38f777d262ed5d7ecd3aa516287a434696c66f7554d275311772233224d23a20a30e3529c11ab136f917b15fe96fde8ac3c772e51d6305eab65d53889c26befe47723f7f8ca1de99fa51c75ce333a51a53e137a6a965f9b5b84801389f990c8408b44d3236af0f63444e97b10461b9cdf0bf81e1033fc067ccfd2a1d1dfd36f8c2d1a2ff19a56da35bda46be21ab90783019447d47c8db57be5e5717fafbcdc0010e61a13b746bfa1931c1109f848de0efd5e79eb2d7418253a1810cf6d888007b3236b64b14abbae6824f4136727ed6c237fe3460fd2c185111af95dc6bbd9cc8b639d2eadf9c81a58ea2eefdc28f083a54e97578ba31e341de577397783657e6ac87b9c757b564f0e2491038443e6ab30f23f8741d24286c128bca398a5b00239087ec28d13374a78fdf38bd37f38f2849f789b18ede40eae041fcc78d820b4b1fcdd44ec45dbca520cf294a87dd6b388375ec351188728384661495d0e60ead5452fe89b5d92a512563790d2a2e0fd8d8c61c4d73737ddfbb2c8088db9406f3e9b1ddb553aafc00f168babde50644ade90332c1647bd2341cc5a4dc65e70add94c14f7a20a2d6ab6e251a56653357d722e26348166e82e52dc020943e6d6482088684e7cc843ee08d2143146fcd2ceb0ff30e1d8af93a141d95fe98bcf76c7644f90f49625e536b9d50439bf3955884cd872d3228d096620912833058d0080151aa4e072d3d96666cd15a02c17420f48edfa08464e125c4e3e6f064298a05bdf2c8c31f22a9f498f94d4994dd0db6c9307f69d5504af24953a574215c240a20dc2002265142737127217eec65f3f9c5cbeba9885416c0f2f5f9946ec067127f6227f01ebd2afd87c2f8ab27af2b0f6d8ab47f8b913c6f71d5c651386c92a45cf32721fe299bb66cd7aa88a6e90f8eeda77639865478008fe9e6588386f92293ec07581be6b301d25ee123618e8f09d8c2b86b35dfc06a695477f6efcc0dfb838cf20d68abc215ba8e6c5eb1d4cb8e278bf2829b13cf8f632df7210ddf3a6edb9f3a58c3dae3141c58f31487a2909e66e347f9cd14a1fbf475d4c8a353cd1d825ae9f120832ef167f6f372784e221615f0c8bce4b5aed86d7e614dbddaf6cafad6e504ef7fbde911c3c3de6608fb1e74458e599ea682b200818f121a8ccc42ba26dd09c113b2bf8c2d17d12068302c99b3002e49b062a65276220958047c3a42dead1da5e559f0d8d41a5eb448f25b2fb54b5437fe9db7eaabad3bdcdb31a47bd9ed5f7fabef85e8f5776e3aed7f26b209718bb0c312aa8811888b803ec67142d922700d226f9bef61c39144f3a54412768e63b228a11778310bd701f5e3441d3dd20743bf906a90c86ee06e9f6ebf5acde205dc59a12e138c8e78dc59ad03918c4cbc6896dd80611c93fffc72be3c7f7a02140d826b7a898a689aaa848ab66b91d39aec35cf5302b089407a3867659fb90d5323de176c97b6e20b7e4dea39414f6b2fb0b5fb2c700267b825eba81854bd6c0d4baf5c8008f1c1ba02aaaea1941c3ccb7dca98a9ad45c51ca624ebb214fa4af6f04adcf3f58b533cf4041c9e894bd4a1e3f057d8137cf4a1c6e601af6a0671ac7431e8ba04b1902b016c7c743eb89f8dbb3845d672fb0cb5589bbe580d36c06ccb875e6d6f6a8f5105593b761e02bf1b6ac49cdf5d4e36d6cc3c7e66d390442de062ca574799bb85789ed85a02f60725185b7219f68bb679946bfc761106c314302f3e351b77bf534dcedb942afb31fd825abc4df72c0294e434db97506d7fab0f5505593c361e82b71b8ac49cd15d5e3706cc3c7e6703904420e070c3775399cb857890198a02fd2eeab1a833b368dc100ff1f874350a5ecfa5ff58e7a474fc5de9e23ec3a5b8159ad6abc2d839b6132e484db676d2d8f5a0b4f75191b82bd1a63c34deaada61e5f63da3d365bcb00107235603caecbd5849df22c4f297ef51229f82552f04ba4e02f385230cd73f618de36ef7f1f216db3be5bef910c5d5b72fcdf72b85af51322f34ef8b46169f962c8b308452b963d7882c5971b72b69c1269e5d39e3548d9b59a30cb3cc71ab61e545bf4d0fcd42ffb2524eac9a26af2c9f2ac2ad05f8ffffa4d49aa2f51ca9ed1146a452993dd43f617744c43ce68d875db1dbe04147bd280620d14158f1b448c2b2f50c5edaa24f2f276838551d0c2b7f117339d6765a6c359a117ab1c11669e81110e6fbd84370c586f1fda4c3e0f136ffba797f7aaecac16cfca2f7a76c2985a9a2ce40b167abe20b1477b75386cac1123abc4caf469484310d261704d82efc9e499cc1ee6c528efd918e57156e7c5068f8f97676072c75b2d952493d57b1a49066ef8d6b7fcfe36d51ec4982f6f6afae70f9f7554631e3577f6a38a30cf07e2ca6b535b821130b04a2c4c9f82f425182963db970493d9bbbd98de3e2bd35bce0abd58da8a30f30c0c6b79eba59263b27a4f23c7c06dbf878dbfc79dd5be28f365ce4eff2ce2b3906a4ca4ee067f5471e619815c79756acb330246568995e9d390be3c236570fb9267b0a5eb8ba1fdb331b46717e7c5ae9e8b96676046cf592b951483ab3d8d1003f67aebbb7d7ffb691f02cc173735fd9387cb35aaf18d9a9bfa716597670371d5a5a92fb9f0795725eea54d3ffa828b8ca7b529b76003b6d9da73732696472c2faa27de7de2469e4b994c6edcfb0e61607949b88010b6d16c6393f30dfd85031e8a4a3946b184a52769e5ea072b2ff21321004c7739d8234e3422c1e49fde7ea0457ef0054fa1257b517695f76237ca1da65dfb51de10fbeaf8c59ef4710d2b648bf1cced4a39d4c33b0b05ccfa59db99f272f4b0593f885c5716f9214bbc45388350fd61ecac92cdba137b6b6f8623ee712be1e35558ac6a1eaffdb91789cbb7e136bcf5a2ce5de46eb71e2d2e94531524f642e9599047e3228c36a4342281d650014d2026ab9bc14589268c336a126e495718c2a3940b14a0431e38a00286ad4c48a3130d5b322ec8c525c8f0246bc9a721758b92a034eb62af6fcd169540e1135f497eb86e87a4429018cf320644a20c0e2de862919827eb4454903e95b745dc6929f972d38310c175a93e50f451a2a337104f49da65c2dda3b488cb4f32a6129994fb43b7b260af68f15ed434d86dbcc89fe185c0bd655954cb1804f982c3e437682889d719f039b3fb5be82cca9650b1b58930c316749127d7a03ef89c8c41d007160b2996d1d6784cf61f7ab86c40345c8dd52127a4982a13f0010b257b18999a343b653469e1c0e506af4e9a989e0a1e7019a4272747c028b6027b1a9a59097b44d2b94f730eca49819a15f132a112454cc80d7ea6c8ba2951e92c9182623643e4cc0b122f62bbe6961a547e48a298ec79ebceae851df30ad37f9f7671e22f1e501ad514314415bd782699d3f436f48b86394b19a4370875dc0dc466f1d7f4881205d9f8f233fe5e06bcb4c8d9694615e294c8f99c9729d2bd20f93a256c3732510e362309b7d95f5862378d45146ebec6bad0c1c034caff5887a3376f4c2309f9a56fde30d06100f078e5f849588c251a4650928dc0c653e19315252a8b03bb740708e3059d09c38088c28710c710cbaa8c3f18bf3739c27ffa5de4216e713cc43b38e3dfad77421bd8a1d265945ef4f3d010799bc05bba4c1b9c1c7615f9c1353cb3b9c0a39285bf5e0b2651945771772f27630b27630b27630b2663cb27737272e52dc2c82b83bbf38b1bac642627e32006544a370e4028819e0a2c41252e7c74de432eb0acc003c0569004cef624021615368a12528bddee95e14296bbf6b72779508a32880acb94bdab85bd1828708963e1889099958a5aa3cfd21e881aadad89ad95bbbfe9a2e88cc2e27c3ef26c6fc416e39348cdab3989c404e5d23551f4c253fe31a1e0da8a58d321ee9be2b8357c5c6557e67a316dc0dd5a826a9a8aa578272b57e999605abafd674db4165a670ec206554750cc45deac504328631a1dbd212f7f0478e877968b8c7b1de3546054122282e69511a04ab6306754fe5125acb8874851f6f0c834ec51ba318efbe0ed0e5d59e6de2c8cdceca6586e3820e0eacf967f14486aeaf42a3964e4b5f7814de429d3eb9b86dd1ff15e422ba34cc4a9a5752bf5ac4f83540bedc5a9300758bff208da73e1b4fa8559d2fd1d3132ec4a59b56ec31a14507b5cb679e575ab3ab6fe51a5b7f68dc667ba101e613cf6c00d90a638cce495cabe88971e6a0055df1addb6cb3e99d3055a1355c4901687a227c48a2d1af80223e90f52713a5ad4cd0cc512b4ce84c0581586a93625fd4d4b8f27d8ab1a5363c7ac36dc3ecc206446cf5f368d8bb9606f641af6206585c39109c2a65645c1cbbe7856fb42b9d23ddac247114a525738ae4800c2f7724d89a70211082d8fab49e73527586fbb73c7ae316c0dcaafb9a2b06d0deaafbeb2bc66b5a65a6b85793d349876d595e634e6310170e809af50da46b175d9437d9e2ab994d5d84fb5f8aca4754d66d2023a44b7a6da4ca6196a447dd4da8f0d4fe0362846014f13501a33aa96d0d39c82b4606b0c16e1fca323dd682bf6d02718be4e576dc50dac29c95a5b191091febe52ebba6357d5c2f09bd71c9da5c7ca10f068a7edfb2225433f9b45175f0428570d9b31f56f6912bf46ea512193bd54b5834b9e3c5daf8326f86c0a05e8442da41292e8d0346ceb28e5ee3dbe205a1fa5c273af716f6da0ba15e8443dca0e5496b09b91306e9659fec65b3f08f2f47ed98fceca732577be861d17538d9328bcf65439e5ab0b0c35e42f8ec85151e4e2c2506f78696efc363054ff6e2d391c1be1abd64d5b7ad6aaf711b07ada1baaebdf096467783364d7ba0bc8fa6880207d2ead01959045d743140b5b63b0aaf1f947a0cf26aa45b964d48c466baa1e7583a53794badaa1d43611c683af05d0f8f44a5dd308f1f0a86b1af6d1c034ba7d8b110f5b24d756d98654006d878cdb62252de83d554bde3e47de1b7a1570b70bf22fc0de515748afb82059c4e38a4a2f18833d3b2bacf9c81a5875ef0a79b0e67afa0fd8baeed835950654f39aa3b3c45a19021ef1ec59e9f56c165daca78151d3393aaf76e6f06b241e052e5995573ba8acad6c12447caf87cea650f0e51a1d95572f335e1db1224d438cf24ec4fae8d53fb9f590d40a741ac7a99aac9b1170fb0aaf4a1d330a2fdeaeac23bde5c2427d298d1437ea496210867ac3d30aafde7c363bb6dbb8e556914334006d41e1c583a80930fadb88a7ef6a1fd38d2f0edcf3bb19ae9b5c0ab87d3440903e8fd6804ac8a0eb218a85ad315895b8fc2390670b1a1c8154d48c449b696e9499751a4a5ced106a9b08e3c1d7026855d55dc3dc2ccfee0fda5477d597ecaa90098f7db443c66d719296d55d2a21b75d3a6f1dbd0ab8db0559aeee1248e815d723cb875151db0533f56447c5d5e2a857b890d605a4a6e203b6ae3b764d7501d5bce6e82cad568680473b7bd6763d9b4517bbe753497538eaae7626f16ba41e1532597d573bb8acad69126404aa87cfa650f0051b1d7dd7b16d1ac829b7477b6c374629ef4cac8f5ffdb35b0f4bad40a771a06a107633126e5fe355a96346e3c5db977504b85c60a82fa89122473d610cc2506f785ae3b5585cf586c3362eba5564110d405bd078f1206a024c857dc45379b58feac69707ee19de0cd94d2e06dc3e1a20489f4b6b402564d1f510c5c2d618ac6a7cfe11e8b305358e40326a46a3cdd437caec8b0da5ae7628b54d84f1e06b01b4aa3a2f14d4d53e3a360ddbeab6a9f4aa2fdd55a1131e0369878edbe2252d2bbd54826ebb84de3a7a1570b70bb254e92594d22b2e084ea65651e905323b6647c5acdbb37ab5ad3bb22470f5b41fa071cd916b2a0c60eb7a63b3545a757c1ed1ec59dbf54c965ba29e01491839aaae5666f0ab231b051e592d572b68acad5ee2278fac85ca8630f0c5182d0d57df34fa23fc7fcd145c143678c75f6dd4ea9fd25a186a03368d83534dce8d08b77dd556957e19cd166f2fd691d232a1a0be30464815f5e42d0041adc159add651efa8d7c655b682b8a106b3059d16079e06a0e86f1ebe42ab652c37be17f00eea46786e22f1f3baa88f1c7d96ac8649c88f6b218985ac29509578fafec9b205cd0c5ff469449acdf431aa44dccda4aa5608b44564f1a06b0e583dfd959dffa73dfd556de9ad0285f078462bf4db12fb685977a590625b25f0b651ab80ba5580157a2b9e002e4810817303e20f9cf41064311a94cc0c7a59a6e7ca7212f5f234a74456b7214c4fc8258b1c003efac9f1a579bed509a52b366353d7f48efb5783e3bde770b3068f93c4cd1ae8657103016a95eb28887caa5387d39980ab685562bb93312a51454952da1671210e255f2d657ae5861c2ab7fa567fae3dc567b3425571376c9e30abd5fed995e85addab5e4f37559674958452a76635c14ae975cb13e1dacf9c25c8a42f4d9ba51775571fbddae45b5576e261b2da5e914912b414015179a44ed1910d54495f2700b6926e8ecde5446ead82067205dec83dbe7247029188d903bcfcc527808c9b67cbd249fd26081badcebbc399231633676140cdaefc4e2ec9c989bb48b2c30967030d8313f72a0ed7bb24cbea1b6e510ecdf4ef32a326213c0c6647d628cb418e930777bc5b2f486269aa3f9662339881165b548df39d9d8f0e0269b820d2402eeb3c8735ca8a0df015796b941255911f79ed252972e2ad3bf383659e955a912cb5b3893bdefdd60d84d910892a544a7e25fec5284f4ba05c942db330a160d14c98198faa41eb9741da30292b62e8c08dae25c3d1035d2d66b3b99e4d16332b7a40bd194a844bee8d2da3626e9a59e2e2265c43494fe24e3268d3fd6e77b7794a55bce5d10709d42833b1b4b4bc84b280c0d6fc861974443a69e589156ed3dd492d19b95cb80273d05062729ddb418e76e1d83c3e45122660436465c483b26bba5d5ec617eec65f3f9c5cbeba9885416c0f2f5f9946ec067127f6227fc1bbb4179feef23bbf45544b1ed61e99371f65e30ee3fb0e2ede8461b24a99d832721fe299bb86a9b9a94a6e90f8eeda77e3e25c435a9093cb57ffef7ff9ef2e5f958c38da05811f2c3b89779f1849cadb4dfcff4afca29f081359bef19c9d5abc7cf3c43ab17d1bc98adf7d5a206d877931bf69ce84f3cce6b65dec25ea6848c22d998692c89c5f1b6c2a507a999c1daef5d0ca1979e3690a733ef23abc0ae70f46129d2cfc28cf7d2d998da076f51164f3e03750e769c6e9aaf909ab071a199815edb90c46400b6c59d98eaa557e53d18e8cd1f16945078eb91a8e7933384424a6019cb4a90462159dd600782ea0723d98e7d4d87ba47c46e5589df8b95de033900738f5b3330b83b917c45e86f38a4de67ce6830fdf8dbb5e2b7acdea60b4e5daf254841a521a74aca83d29d5e53a80c649e46f5330f3b50a92155ea9afc3f9fc4d3e2e1bbe90d27454c3283e581142d32be9d72485bc11dd8af1d2e60babc517abb7ae33870c7539aeda61e975197a5dd005eba05889666794460fd5d7434de1f444250ba7d4c454477a2df8eaad8ef63ed9c34e416a1aac222ca786eeac2c4fe9c874a83da0c0caf43fb546cf7f571abeff86797cdc235fa57548f6a0def0ed3158e5f15bab836673aac970ab4f45578e5089428fc480eb884a7a9d3459af5619f223d368dd85adc7e489df8d5eb8b457ab2e93a6d9948c47d70543875bd37040667ded3d7466e1e62a044a7602a5df80ef9bb8b3587bf7f4f7f4db3734358691ef05c9c92a8cfccf6190e42a2ca2c6dc8fbc19d2dd133a2eb4a4d938448d28bc032b2a2826bbc7aa9c998710cd74cd2d4dffa1828e9f789b382f26c8bc4098f107e3f71c0a4cfbceb460d480f8a1e2d603a5c5549651785794146d026fe9326d5049bc8afce0fac412c156686e4530da52186d218cb610465b00a3cd85f1e4e4ca5b8491674a51bb71a3a51f64964f03a84b2cbbf236dbe441dee1c9daa5f806e8da020f796192369dfbee3ac46125d2bb24638e955d26c11280a6f9fb58fa7727ddb360e4624d731da5aaa3ecd3dabdf2f6b0aaecfc67e17ab7c18af90c62779784dfe0dff7b9fa7b64ddaed0b794252ed6e15de7a1ac974fad67512f17e408d927cf9d97513cb2c5c950dc2d9b2b3b10ca0845a7c56232536e9f09b6c783e89eb7eeecfae4d32e4efcc503db33b734fd977debe4daff78ebcebcce9597dc795ef04db9d6c5be203eadbd45c2a3528cf27283bde12ea29da31cbe75091f76255c359f26320c2a888da46a5842abfcbdfb24838a9c0c7a32445341fce44dce500a5568fe5e72f9caf8377fb30da3c40d926f60e90ec94e44313580f10723be5d524fc478d280c0cbba08a47fa6acfc5f2529a73f4f66bb28f28264921ef62431a76d0ba18149a0969676e2c40de66e345754438f939c3a080e5e0a484ad52a8704d6d380896a20858e97df49801f186f5b080ba71a0301197d9b972f40811f3884067ea40da4d0f102020bf003a3330961e1546320206335f1e2cb29f00387d0c08fb481143a5ef018017e80979f1014b616333ee1f2c7734b5620070ca0811b597d19683c77a4cb20deba013bdeafe6b59c7b4cf1668e30a73fedae259d76d7fa32a68d8fcc6ad3a6a6ea072b2ff2930ab3c5bb8203077572eb61440b271417e8b8f339188c30aaf8f7ff2733aaa0ea67422b96a6046dffcbff296f8b853351e3ff4bd0380aef72614cd4f4ff90344de56651bbff5dd02e093b6e94f80b772604f77ffcbfc56d17e17aee45c251ff075e4b3fdaaeddc01335fa9ffe7b5e23246f63495bb89effb5b06126540b5bfeb7c2963222f8f7ff4ad84cbafefffedf88da6d524e2ea780fff8dfa48d4b6d8e025bfff1bf4afb91cdfb3ffe676953e9dcffe37f91b69590f0ffc7de9beec88e740762af42dd76e3deea2f594de652955542b7b500831120d9c668647cb24a3f98999195fc2e93e490cc5aba01616c18f2d8f82cd9b0c773f7cf861778dfed3f86e137f043f403f4330c18dc62392716925955f77649a39e5bc93811274e9c3871e2c4593efcd74ac8f60aa199f67f09f512c74911503b15c6c9ff2b0496a651b856c27df8bfd47039ca23ff050498751242b5423ffded5b1db46a917efadb3728f826b9c526fbd3dffe27289812d9ff08055363094a97ac9684ea21ff3325a87ad87f81c21e30e6fde96fff630c2867b62c0afd9fe2d00ddfa3b0ff1c82cd0b9285f96b04e81b08e45024fba008d7ee21dd04054139f7edef00e855b0b94625fe7b684fae82d85d87d93a42c1de7d84c15ebbc17a9d1c6254067dfc5f40c06c9d6cd0c1defedf104c14c4180d7ffeaffe290891ac5f938d9b922cc7a5c6c7ff16024d225c95f95b102041917b07e91125c03ec850a037ef40a03b7490ff0f6a9f8564bb0e729cd2ff27047508f1d97ff89f00887510ad0f515024f85100291aa5b6595e8c501afc0f20d09e64014a864f2048460aa534fd2da42554602ad1f6dbff0e05538ab5dffef7281c2ed67e0ba95c6b12456e91dce287f047e8345defca1b2c7e20424262bd0b325c6f85f4fbf52e4001defdfb2000b9c9a87c58bfbe0d329409df4362af0156acf3cfefa0f3a401dc269972d0ff5c01ab52e1de41274a03a854e0de41e749038972cacfefa013572ddfdf821c4941f4cac8cfeffe4e07ada4cf6f75d06a2281a285055750ea3f0461d5fae99bf71050440214e277d09d671d85e92a5130dc1be8cc5d47c90183f8e9cdbf8d41d0e58b92001dec1da41856a087540908695bcad31dd2b64b80eac046b71f48c3e41a1d066e1f45419a1337883025eee78fa0f0abcd14c17d72c06d0dd099bd4ef6e59d0925df7f00c3a441162ab49637908d8182e5a854fff40181c9489e135cee41bad53a89b761865e9cdf40269b7512e7092e823e81db2a898b2cc87192839bbf044ad0057e0ba94aeb8c6cc2a23c845142bc058fac2c4129fed307f0b8c91492f413a490ad0f2b946abffb670880ca1af73b7026255046f6c90d3e1828240ed90dd9b859a951a895840fe00a2bf6137477d804f94e29363f4202691314c14aa108bf8394ab0d894881cb314867dc90a8c094d3ff1fd20336240b6f482d5f50c241db6943f2d70a13ce3b907861709d057bb7c808be0fff0f10b0762e529fe4d0f9d381aa8f71c8c0578753a36206124d9b647d5049dc379042dc00b9494af065802e172d64be0b3214d30f90c6ba294f234c71ff574000f44af14f213be12639d0e0127ab3d09a3e7e7effefe9fad01840bad849a80703fdfc03b80d7978e5530124da0578b5c914e460be035c9dfc00f27072b8dec587422d1bdf432ab44e697b03eef12cb8767741bc8988c19a7f80ee0a6c17ba25ff00dd513659708bca4de856bfa152b008f7f85e07c73954d65d5cae433a4f79d2a34736b40ee437047db2f9e9efff1e82883749a650aa3e42f280c437244a526c323f7d808e6d9205b9e2f60f09739265b8a5e62da4509043966058fd3bff230470579918d0d5844c7ce46e1d1d36c4cd129479de43f7d42ad38452a7875e42c85d9ae01bf20d48b97be226db2d8a1d7493a530b8f911ba335010c541f416daf7db202fb496937790b593426aac1fefa055de129cc3df4282a50470f3c32a5f67e10a87fd046da96d18a1f78d77d09d721b46aa174cc82a5b81b8af094165fc27688d6bb82854dc54fe671c4ead757f828c14db28c0aebe3f8157f26d14e0c2f51364c8dc4641be43290e6d8f6d94a4e97da9b5e1c670e8e24a3d65575910afd1f17e071dcc148ec4f83d0752d1295095b7108583f44a0a97919b90a0d2e977d0f9cfc0e9e608693f2538fefe03bd3d567e02ee3a4a14867fe83daf068cf1097e8274e71a4c29b0408eace0a8de8c8b11e89d9383540f8c201c294de690a5b7020a63d4e0f411944189c2f403ddf5b789e24d08f265d926b819e613a4336d0f51a47bed836c67142e2f02faa6a6d4653f42f7a4123c5f67045fab7720331fe2b5d25900f254b80ee242a76f43c4bf264994a89d0cde42a2e19a243909327c67bf81b8f83a2c3402e103a4ed9460eb64bf4775d89f3f401a7609b62719ae927d80ce80122ad60aae8f90625a82a6075c27fb00a92215107eec7c80d49012282329a6a1fefc115269af2385a9f4ddff064224b81dee2de4e24321dc9814b78a5dfd09725bb9ce821425c25be8eca5101a4de20db84e5988db7e21835f09e0aa8ec1f790b67d9d2587d44d56e5550a7f7884ace114926cdc559069e40ef460525e63514421415502a85fbbfe1f0c4a691b833cfb2894da2c0699fe2898e2550b3a27762450780fbe8398b0027113dc7ff01324d76ab0e216dd909f204b680996135c604337f91dc1d9e1a7b7d0d14021dc5596bcc60fa24f902d6d478242bd57a05d5942ed0374a5dec0848830807f15694e32771fc4c13551193edf42ae1bbbf07a17291d6861a8bc4832d4c7f32db48d77097afff8e9b790e2ccb8576ab7fe07e8560675e006f91a951f208b419d6c08decb07500a75bd6cc2bcc8c2d541e9ca0869a0e1c68d0ffb95426f854e2d9a7fd8cd92222888dad314921a1cb4da720a49c52af20be5feff1d0289155e4e6f201d8542d45769fc22f13be80a52815e135452fd0eba2755506a8def779064ac002b9f3e1410120961bc4ddc3cbc461d98fe5de898a8830882788d8f06dd10aa8cc7bf49425c42426fe4619c13858710a4b9d140fe9c2835fc8f90180f5337d86c3282ab701f41e6caf303ee0c0f5d0928447597c68db99031b30254dca53f42476e580451888a9637d0034db94e556e04746b42a6aed70415df9f201bf86b724fad8b3446161d0942b08e3cdf2b14b10fd085b382533ee57f800c3c34545cf974fb01ba1094606a7776e854a350f93a40adf63f8356fb12accaf58ab20774249660f92e540871e801ae842a82153a12e4a5f03a4e6e63f786ec42859de003a4d3d2907c540a409b390aee15712d902d9842e0b708c8a55eedbaf306d21f2a10ea8d8dc241b6d91a6e154451a2b05c4027440daa36cfbc81f6670da9d250df40b7b916aebc9eadf0b01de8f8ac617721c9cab3100746d6b004565b62df4326d11a327f4d6ed5f3850eef0638c90ab271d7d1212f14acf41e3a8d4b2d4a7d3c4217e028dc923cb8c139fd7790f0a4baf9ea10a1bbf71d64e18c42dc57fe0da4d02b5e2e7e021d264a80da6b0577388394120ab8214510464a23c24770e513d563ef1bc880a8f2297c034aa3e4dac597f61df45e57822884cb5b48b8ec83f8a070a480548a0a24aa8f29b2a15e4d28fda0d34a71157d0b5d7af741eaae33a2a0f947e85da604db07d96b9cd7dffebf20d85db80f7fc0d717d298f66413a2447803299d7b121fd0e9805420f141a302be85f4680aa77c9d80a40b35d2eab6d64748a25690e5dec78f46c85f92968753d11d528cf7617c401d1fff192479f7c92a8c889bee140625d063b206bc0937f845ed1de450b1571cbf1f41da27b80bd71bc818bf4f0e7111284e02e84aae32d1be83b482fde13adfa1be5f3fbf87fc2af787a808db6cfdc860d063c6fe90e337907790993baecf619aa307a53774ba9590aab3ea2d649129812a3b320a0699604a307528d87bc8ba40c13292afb350a9af7f827656095c27d8416d1a6fa1d58bc3f837a8547b0bc9c13829c2ad36d215524c38c8da3a81bb664077c9ca2c45364a07888fd0d5243eec49a6722ffb08b99124db6d885f42df41044db6db52d344490a19bf923072b7215104c341ee8649ac73e77d0bdd4f9243a1263cf45c9606a5c057de6cde42a6c43488097dccc59f623e428e1a159cd2d8f0116290344849b68e425cfb8018330db240f910f6113aded3a0c00120e95a0268ac796fa187a23438281cca2159929224555ceb209da8a41b898b007fb7fd089d4b6a41f706bab7abcee59fc02b671a6a1cfedf41e699143f2ddf4222220d6f14471f74be52083597be879ec86972176c2a3000aa02fd0a6a9e44f7d75ac7b4f7d04d3b55f9abbc87ee3d694636214d89ea067110dde7217e2a404a97d19907dd314ac092635580ef206520cd42f4f1eaa7bf83e798a89f93216d3ecd92946445a8087f0599aa02c3dfbca08b617a584561bed37ab17c84f4e5f410e1f2e53d741c6441bcc1b399bc838e9d8cac1385d727e4b498910daa86bf87767c46b619c17d3ade4237fd8c5c6724cf435de0f14778524a2f08e8d4ae403407f747e896c741aaa3132001cf83ab73194141d635bc413a2348e833d0aa8c46d0db5e4652a288ef86383a237912e10bf3167ab2c942dce30ebabe500aaaad7390d5275378f6bd07f1aade4475d146ef21afc01a36559ceaef21d195070589a250618d814ea93cb8c1d5ca7790a1295f07b42e641ae127ef078819355a147445aa40dca02a6a806d59e8c1a6862cc83e8d5456414852b6b077b8e20cbd71e6e4ba5c6db2d1bd4cbd875453f56dfc0d74d5a940f0a3e3a7ff0692663989372efe6af11612eb358cdaf5ec03c82e35a4c2baf801ba4de4240b49ae0a54fd04938482d110e4eb43a654343e41a772dd41157a898f0d691c35a8ced9e013742ad5b0ea3df209d2c5725214617c8dbb2b82c242158ff806e4809deab2fb099282f94e716a402f9825401ac6d7ee5ae59c0b1995f370af0ccffe00d25c15c3f011baa3d1f259cab0ee9fdf836b44e15456d19fc1d8b20a4e7193f8f903f4c6588115a1226102488f38b9dd46c16bdca30fdce0c93a0c22b5a9fd2da434e70aef9fb79009bb04708328dd052ba20c3b7c0b124584563a6abd070f9544ed23f61e520129907228508e95505a03d85b90693850f5d090fb419e46a1f6f9ee23f45c9cff938342acbc832ef0463103efa1548b7981be0cff04e6912c015c39eb290b066348527de81c8c2149359e89209b9760ba883be89d365745fc4386a0bcc8c2d7a4d865c9e11a3f7420ab7e955d163b3f40097d1ba40621c71fc1952b6175b1c61fa1db657ebf5f25ba88960fe0795743aa64fd0750ac55809b30d8270aa726e8ddbc06556fa30f507c670d596461105f47441d470ff9228b1d28e2d8a1a3be40030e7f7e033dd314c16be206eae01dc87e54047721caa8901d963eb0e8fd98a13721dc52fc16daedc54ea734be85548a62a7f74e85c452b1533ea8bc852e36c5eeb05fe5eaf805e8e656c329820a20e38542fff8e903646b2f01345bf523e435a2c80cf0d3df83dc1aee094dbe1d6424d01c3d902ad1c26b5dcfdf400f2c2d38b921b1c24009f273034bffa31e1b7af52e7033eacfef405a25aa4b3b74732b32d59b37885416c4b9ea9afe11ba6e1599427d7f0359a594996de0a99098563052ca53e81ad9422a042938a9db44a77abd856e1887784332c523e64f7f071dca8718b5d6fef4779063d221360ad57a0769cf87d8cc6f1492258758e9aa05a9288758f59804a9af8758678384a48fee4d1c3a2b3459f320adf0a048e4f1061ae326c842e52b17e428d026ef368b89811ed3812e941131907ad0f661140f035951d5fe409054be29779d5a737a073d44d7708acc1fef2063610da63853214bf46d10e1b1a2901253176a51c587fcfc167a70bb0d0a926da9b943793e425bef36dc5ce3c17a6f2127800ac45d1d8a4261b083766d0db94d12c5bbe927e8c5a18654073f7e825e5c6f33a28acc865ce27e4892bdc275f42d249e298cca7d0332a251a02271b7780cf8dbe670a450f961b527f1a12985982669724332f7360bd2b42e642397df126039c822c8ae496104c8c251803e65b3af98fa799e23d43e040612675a53e6c72bac4a6a55dcd54fefc0f2d52713c773a6e99d33871b4c6983657ae74cd116780dd60718db816a2601749ba05f5a589c86869566dbb26e4a4c9015344050bdf6f6ab3fd5adc05cbb027371f5cdd77f9cd15b4950528d5282abbb59952176b360131ef2cb595d66892936fed596fe4f550031a472b5d85dfa4ba10c28ad4a7a45eb1ee55d7da29a2be83dbd2a3a18916d55dba8299bb79c7a53aeac18f59dde84e5190fc9276606cd90f51c8a24bd2c49992751b851d5a29798501a92ed93ad22acab784d3b0a0bb2e710ff92ea08e745901558094ffea358c1b32a86db36e1396f2ab393735eff46d96743d649fde2d7f2155b63ab2d11562d175b46ab9945a965372fb1acc4a285b1b08f748ee8c7f27fa48f0c8fb50cf104eb24b3b8d11f9e609de416c746db992849cb156d3de77585ae2ba44e32dba1519d64033ade26d9c65d6524787d49ffeb963fc058ede45318d2bcb89f9294c4cda8bcecc1eaa0fb67e713c75f4e278e7f31670ab24b25d9ab1fc1ad07a15f49d42a69ef06c380dd94ed8071529e0d51725bd7da6b763058b65d29c199c9f3e321ba074c7b4937e9b70ad04a765df75c53745567cb89e39747927fb66ccea506c48e16d0426a97925b33ffc29f38536f3e71a6fe5c5e347e2455c95aaea4ae017457b8f34783b9ab7a6a858349d3605b906c628563db822b63de7be2836507df1dc8c8aaf1e94f017539c639e62b7f76be5e6d2c66a5eff133a35335bec05c63e361c3bb353e15071f0b1dabfd51a104ee12b68bb1b1840734e651f39636abd340d811b082ea3b21662bdbb5b698180765353906d24890d67757dde9031604e70a961b408f70fad43d9990b26d6a463f0e470dd16c273e9654adbb3397aa2c80f6acf0b617176736b3d2f7f899d169ecd307c4c38677c73d7d1074acf6c7f14f1f104b6b61cdf3a8794b9bd5b113d03c54df09199e3e726b8b89f5387d64c8314f9ffa158f3f7d56dbf3596d1755e356438f70fad43d9990b26d6a463f0e470dd16c273e9654adbb3397aa2c80f6acd85c2ca7d395c5acb43d7e6e741afbf401f1b0e1dd714f1f041dabfd71fcd307c4d25a58f33c6aded26675ec04340fd5774286a78fdcda62623d4e1f1972ccd36713c4d7edab570dba9ecebc9989665b018f70f6541d99d0b16969463b16410dbd2c273d963cad7a3317a74c7bfda9b39a9dcfcecda7a4edf0b3a2d1d8270e848505c78e7bdec0c8d86c8ae39f36108ed6b299634de38616eb62278c39a09e93313c67a4c6e693ea71ca4880430f19ce3f8d7fab6f9e7eb7495cb8db601f46f797572ffe649dc4b97f76f562e2e4419cd3a8d92ddb320f7f2097fe59fdce5fff785b7539f73cae69ed80c2f841d057fe24bf73ab06fb242976a5ce709d05f7f93a889a47fde6e95b6816c44518446190b7cf94668fcdca6766f1e0acbb2c92b475886849bd589f7b4be4e159b1547ae8d15f9ea1c31f603c7807f08710f2dce92f268e3f9b4f1c7fbeac1fb14d1fa59343413de9e32426ceef5569ea83b879c8c4de39e596f2eb35d046f590cd36571ca80dfa1c23295bb27c65d0da609b1bcf80f61595dc027346e3dd73c178f7086e3c537e7b777b9ea3113406a08632fb6966d28520b360a905caada907ca2d7616ad87122ebb70e9652ebf2c241847209fc18e136dbe5793ee2aae3cb881a5ad9cb93adf28c681b0fdadf61cf4bcaf41a740ce51b1f6db1edfffaf6c5f6fdd0dd90687a860ddceaa243e535e960b4e120c66d66e828ed4cfe536ccf2c24db66e719f12a957d8e1a60275be77766782c744e54d291f8f672d8b95d27b1b25b797bb70b32131ebe7d37e225114a67998d71f6f776141dc2afd7f9cdc6641da7c48b20d7525e779957330ed367dc947e5aeaf3c5e81bdef9f8b7b14243d3bef4e11596c97dbc088c82c7cb3ee25a93d951093876641fd453ba1e6e73a25d30212674b9ec1e0b16c90ae770e4fae1f858df8d5cc9b7bf30deb7dcb500dec027b87fd91e963be0cb65b4fe39605f421896b546d30eb4fd08e4d813aedd81a77a5c2d5972c23faa21978ab0c734f3318c06cd28c3e88297ebcfb900d4175fdb24e44cf0b65326974ab1dd997e97844e8273c0093ce3169819a8e4626452f91a833271d993a9a818f472e950dc84a40f581e9c7b6b261c81e7af8b41999df17aed7f439f85e24607a305004181399998ec57aa3d57dcc36ebf5856f7146613e697d752cd833cd14c88eca06be6a03c932fed1adf2c91a45f6a806309b34c3b5a82ec439c9d91054d72feb2af7bc5026933e868e65e2b1773c22f4131ec7d2b194ee82c727452f91f8703a96859be2b83a96b57fa49580ea03d38f6dfb2918e65e94d632bf2f5cafe973f0bd48c0f4700c1d8bf5b96cfb58cdcece2cce28ccf3b2af8e05fb5f9a02d951d9c023732059c63fba559e87a3c81ed500669366b816d5853857501b826afae51c429f17ca64d2c7d0b14cfc528f47847ec2e3583a96d229f6f8a4e825121f4ec7b270c61d57c7b2f602b612507d60fab16d3f05c3dc57d85ae6f785eb357d0ebe1709981e8ea163319ec56d17e7b3739ba716c4bfb8af86057a191bc2d85158ef773c8c24e31fda0a1fdb51848ea27fa31933cc8aab56acbfb3053135dd725ecfcf6ba49bf131b42a03dfeba351a097bc38964aa5f2fb3e3a1dfac8c087d3a7ccddcdc755a76cdddc6d64520f905eecda4f8f307686b795f03dc1fa4c9d03ef337da683b1b428c6d7176b22398fb75680f57a73a6e91fc7d3a617a3f562cf56c3dc55b313938139b76e75f629c44f59d7b3ecbaaf83903cafcda0b45c633a31986475624b84991877d6daedd422df25d857e7aa887a19d22976804c5a52ead4d864f9a50de2e06615540856f90693f83223114d22487d197f70c37843ee2e7d4fca59699e66b7fc5ff923fd54c2a1295ab1dcc5c71e52d652993cad82a775ed5ebb1053b67a8e2fe453ae68dd2e2dc4c3cc724058cc2ee6abc585a24f3c897018e7a4700c52e2f6239c9489f7418706e50e47cb7ec989c7a7c5035181618b6d784736e5c66ffc9b9b6d4e3f341eead4d9b9fa779384b3762127db82f783aefaa6e2a879e4e1231a1aaf6c20c484ef8216c4183f996f15f6b0264ca64d2999aef0d511b2e9329fd9fd2d51b89a42755653f0925c35a1b75112145df4851a8e928e03a4bf004463332937b1008eeff1d11a74d58cc235d804bf8a6d0427702e87313ad1aa9e92d80d372488dcbc080a72b42cce4d098c41399cab4a32aa34ce4c8be3711fdb731aac5fa31d431fcbfff9cd212fc2ed7d93ad9d6d021f645008510dc4b231bf964f3001b38c612d0e9f5c1a6601535933c6895d0bde3a1c46dcc462c7486a66b97b3441733d9086d01d76777546fbb9e70927000fe4de84f92188c4eb0690a0983f58ce70b1850f60944fb7c6b389daa215e34692580d97d4b15d4cc857cd24e287ae328087e2564590d59540147cc873212306ba30c46473dff61f05f7d42a43fb15a3db045ca2e09ebf4894940fd7953069150c56bd68d9a9fca3d634d84bc79463b47a8ccb38295e49089eb4ea4d58caaaa6409c18e1578370e0a5680cc2b83ddc400d099abbe398f4cafd1ac651187711b0ed50c12a4fa243a1c5355f67491459a21c1c8a448fb0d8f5a87873f0cd96a87e14b1bd09f370151180bbb89223c094956c53a3e0401d4ea4c62231403091f81c3104d4cbcbdc26abb5700077bb0d92a4c13a2ceeeb1dcccc1bbcbd02eadf7925497916b97adc720e22a9b81fa90632316818a42969af7d0d9d4086c0c7e10d6f06c3f16f67fcea7434a5c51ae9c2bb6996a4242bee2febb6cd3d4cdb02e86bd314eb9f7ade3e17b4145d3ba0bf22dc87f1b5bb3dc4b5a27b58856b77457e0849f6ca3b9d4f1c9fb210d5f02fc4cbeee08ea01992525c88aa22d0c07895efc2425a2c1b6078c1bde7057f3a0b7eb94dd6871c484c627a3870221b13f314220d62125505d915a65485fac47400256718ae6b027727fee674dc6b6c6b45c68dc8983577a1b0026b60ea1bed0cbd242064d761089a39ae70939f1a90c14cc6c7f9dec9d320161427911f708e0078c2f0e20bde77a5238dad5d959162bd83aed0580391619a166a8ad0df59eb2363075bf0b74c26a38adc11dddfacf992ea570bde8cef324a1790a983c1543f96f0a6c8a03de5d166e16f4272cbcb9456fcd8ab8d5f86b58db336bb3e6ff9ac6dd026a64fe52b4f7bb9be67af4f0af9d12e14f87053250741d6383de43bb94356e3d5b766d45eee3cdd26d9feb2ad12feeb57bee77dcd0b2b4d335e85b6c39ed7a34d27c1ea568ab9bc3298c82b7116fc01a4d0be26f2d0d5861b07a46d31715875cfac2936904a559c4baaa2ba95819a48829c603da26d0d953d44d53367bf46c11f9f81acf130e4e75fbf7217467bb36bc6df3b9eb9fa0be2ea24b53811a0c6a607c200a6b3c65d711ee053783e0e9e37ced08df3f0a7018686f1613040517be6e9cf98a72baea91ca27f14ef548f5355ffe1479677064dc2facac77604f7997f5f72bbd4a6e24389549e9db53c544bc0fbac075996dca2f6c0eaf7ea3d75d6e5a395cd50da21a454b94252d66e1c2eef2de2cc53906247329744644fe2c20d8a2258efc8a67ecd679b543ef95d8b224985b2ff722e6dd7ef920df36e0272cad1313111fee4d6a63581b8becfe0f0505838f9cdf58f1da3cadc9c2545799cb817de865c8bb6439eb385a606cb1a916da19a0435912897b5721f335ebd3e03aa578f2260b576a3e160ba769ed1b279462b56d42f4c08ee155f6a37a2f982f5194fbd609520b058afd150305d2ff3ad66bed32853a9a65172a572ddb22e37b3bc035df315ed83897a451bf3aac59a8e8684e99afa4be3456d9a1aacea3edc6c2262412c1a55517b4d2ab5fabf046edba05edf3434c0b67a65b3c036abfd990df0fdf52b3374eb76c3259ddd294f858e773abb98cdcd141e2d83da9e54f526b1c1417750596ed44a50d820a0d772ace57fa36cd9a0217002482758744a0ceb2659586ac725f7507f7b8461a57623a0096e3f134481c7730455d9fbba2fb20acd4f896b158b60806a17b4602463c766807a314c78806d3a0ebebd38a106326306bef13858f761891a0f23aee0daf6924e6330462dd14c18836d3a0ebebd18a346c38c31f8c6e360dd87316a3c8c18836babb3bbf00eb76cd90de6c95e91bac6d8d20218db9aa0bb33235b19672dd3831ae1e85686aa263c2c8ca2cbaf7ccf3ff383dfef7e725bfbefa96fd82d130b53752a179c6b0020169e087dd2d71a438ea90d76341e1d532f992618464d6a0003c4e0a61afc7c1d76bec289b1356fc3a66cd8146ed3d6aa0d665157dbd467861ea6b3411ea68bf9c4f14ffd294d50b0a4ff86293fb8b7917c4d5b26bc0b4d65a405472103f5e260d31df6ccc5bf582e561db5b027b3d9d309d4ad9b873fb4a971e121bba8c1d9c2132b7f496f1b7c3621e7579c0bb7293af5c8eca8c874f6611ceedb38c2d68113ab360980aa6c6ecdc315e3a58e770408010bb1a3103ce2a0e0e18f6162a214686761350feb99c072d46a42765d8c382fa42743f16b2bae4d45f600b1ad13dd3e20ba31f12db61d3dd4c51923dc059b3128c0c5a972425c666f591d79c4bd86aa2ccffbe4799f3ce43e91780f4bbf04abd476e97b14ee2f73adfbcbc0d44143c746550e397b231b398dd151a5e5a1c5531dc48e63841567d2b1c00d76bab1370649eb67630eb25b00d632643b53dea0049a9424a3d2d41eb9b2076bd418a3548318103d83ae9b5ccf1af6d342df94e70be94959d586bf0835f5d59b6c3b572fae5eb078d7c6d6348ce32635a17c13906e01c2a4b9b85466178121865c36134642f21924787fe8c161627022066874593b9f1836d6c7f99b8dc7fba41b0efb34e2fda1335fd7ee8b0dffd6afb626e6dfa883a711f7ffbcf09a75338afdd72e78448226ed30661d53261b8206f8ab4d5004ee9d9b1c68f5f95529b9832c24f95f0b31de8cf4cfd320068c5ddc61c1f93a73874656d4f62a9b086226ede31f34ebf49adc6fb3604f72a71c2ac84acebdce489ebbab2073f3220b5352d17c9b257b3916b61ddf739a052c1245b39997ded196148b471dbd212633a44edbe00ca6bc96306fb3350a87b798efac7e5b8413f52deb4e1230339584aff0cb9e1472f628c1931dc19ac3bb5e8cebb211898b572ed58d2648be83e989335d7c3da976741a64242ee41f16ded70a78f5d773b1b3f345ebc006e7451269be049ad35c73942118b77e6155e4048a9084bba4500e4dc8e29889c99ec0081b74d9d3e2c40de2704f4f8a13eee77a339d2858a685bc54ec4687bea7d4fbd509e36d18870571327243b29c60180a582890605628dc07d744d298990b87b873c5adc75fc516484e61c30d252700580617ab60f9fb882ca13ff065b0d1dee5befdd9f97ab531e99b2bfe6cd43753b358d33757f4d0a86fa6569fa66fb6e08f59d75dad1ae0f8ca5f93881449ec5e47f5958b3d32e43ced5ec91bfe79c92073cee543ba7c012dc5a346ea1e11fa46a78374367e6953a34bde4ceac72b388fbe8c1afb2087dfd201fb4e29414460c092033533a198c8ad51985e36996656c99dd8e5fa90e54976b921dbe010d53fd179b3279c00d34caa93d0be078ae1202a48160705e199869bf2a04e20edf8ea71530c36488ad58dda9f851a25cd8736a52d4d4e1946e5a5af52b7c4a7df0a2c6a73650b5a4297cad56f1fb76bbda1d5af90ec61ec2d06618ec7a42c9d72558fa8c9b25b2158b301d098bb4bd7ad9b295c67c16a15c6d7bfcf7d6d7f953aab0e6ab66c09733d3f5df0ddc449e1065194dc920dd253f54ff710d3621a6d8f8d8a27e4b3af5b1759b07e3de17f6b8eab1f9bbb5613c209dcb6186638137901ca2dca0efba32ce6668a0b82024923d90ce846505f767a96d003a015a1fa15a303e93babd520b43346e9d177c616bb36ab48ace88ca9eaa8516bf805dc05f1262258b8b861018ea6995bb6816a509cfa685cf8d84300b9b9aa3a37c2c74aef678446750bad8ea909dd58e5aeabff55f91c4fa84ef40abe432e4f4e264e91c05f4f4e24ec2a04c45b7091b46361c3205fea111ab65e4ebde999e219a3b3de3032041603fd9e33c7afcf63daaf707c3087e9197f70b6d298df5fd59ee04ea407dc1b47dd1d4a2512b3767c45565b7fbbc029c53d84709fe82fdc693d9c926593a9bd4bfd114601e4ec92f864297f16ac0c20151b1d04a5a3a8a4887a1d7a2fc189c27c858d5cd25d64014c9e991daa2dd51f94251ab8776298380c43417482da71055f71aa6a7ac6da7262c2e02e770e292e35f2ecdb4397f8f65940990a289e72537c538c7a7c8d7f8081771af93e8372c6b3d445e4521f56605143d3170d60089bfe7b5f75f9a296b2ee3fd6d1d1d628bd3279e694ae803a8c94c4eced0237c739abae9b8870d688b7076f61727d18e302e12d343708a840a8237b620167915c511b57139146b2e8ea8f8eca1dcf8e937af0922699b376067d89653bd7b39e32de9c24f623c8949b7ad3d56c063590346b0d5d052d5b455941df3695919894c454ecc5f9c4395f4c9ce505a75fab4f32a3526455432372c8daaf096520069475607e82e727460b55fd54e5c67773eaf758bfe3d57fd004f9a8de2d590b9b86799125af09f7aeaa434523d6b00b00587b573d12444f60335ccccee753f820d51ff4dc33d8578bf5b9b714bdd086ea0075a7987acafdc496d56653582d3b9f11d028f514d25b3e46824bc1fd9dd54feccf4974259e460cc343473100c2e4abf26641c40003784fe35bcf8ece46678af2ee97174156a0560c126fb8b8d5a5c20ada75c78b8f2249ab441fcdbef4f8dd5ae9a06213e5281d5a4a39508e4ccb072b07e65be086a56664c50ab1d878c0134ad75a9524daa5ee67532fbdd3278b16dba2696961d37e1bf19cde39cda361536ca52ea95324558150da5f630da7bf30b5b7a7d05b25fd67d31bf350dd3e42770fd573e19dda17e3a3811e1de859d4b0b9f080c89626e7eadad44f1e0bc121ef4cccbb2b966fe931be6d172ce7a9b8a9e48d896396638f6d6c810aa7340873b1ea42bfb5683abe25938e58de72966336db7a620dc4ca3a1191e657e135896199a59876b3f7c81a69a714b43339f3a62d1e8a45d373a63ad4566c3b6079c575aab739cb4a081d677213f0e430a076732600fe8269d1de565a8728d1b70ecf130c6428451a09fe746897b333a34e9b668d0bfb1f7c7133622f929c3f7eefc835568ffb7c2af92762ed644057a872017247477d1def92edf2e10c40d33428764cc630178cbbd35df33579053126005b011ef69569c0dd04f92ed96e7352f4f5b61fd6516da150c718d44394fadb3a482fe965454bcacedf4b3dca948bfd84f7bbec2d0a89066701397ff25cdfa70366a67142a19a4c1130b610bec0354bf8080604a89914302f99f5d0ad0dbb32a0d31bbf2ef4df5008008a9becf60f74c579fca35dc95efe40579c833fda95ecd40f74c5faf3e33d75ce6eb46111ac72f9da3248e2b3b17a62ef0d2716c1ca8dc2bc009eb3a00a988635304dab60aaea60c2555883ac8046813f8be75555139836e2f4392d75dabf44cd1750d4a4c0a9eeaeeb39be07e49b371efdaf822c0c6a1765b2f9eeea45911dc8d58bbf06b45e9da506b7ffa315f62f4ad15b1e0795897c7ad297886e186fc2755024997b9b0569daec15ee533b27f686ccfb153bf29d99731454af93f12c85db93785b56ce9bd6c7e20d46ec7cb832bc6deeb74e22745b7354d58fd63af624dd8c5a2fe9f4586e91bfc8fb92c41b4c85643f81fbb16900c7053439e8e81fd56276ecdaeeabda4c94176e5edc47402c74c382df3bdfd058c0cb28c80b77bd0ba3cd09bf3c195f63a85b8b1faf006773aaff93bbc26d3f90280ad33cace2d2819acaf4e724db50d667e5e6880b049312f038ed9211b6f2cac006d74689ca6ebc8c614e4c941fac9c0054c46bcdb4a4e286ac934c527cd0bcc7b02cf91b515a5b06426943a100d981442cf1b856e2bbb1c04be27b903fa2e111c18b43c5935aeb0b37a3be705ff9ded92a98e17442da9b2137695bd0cd89d1e9848fbfa9990f1a887352a46141b51f2a68e58f82ec9a3052bb8663599e890e6758fc4c16d89dc067c4bd54b1ac6958cdb49225d25a61897240ae374a81c09c8dcab228de491d655e156bf10c0a35c220c0fdb522e8a45293f405177bb76792ce5150d3767d4a334e8d4a334e6d4a33da242b19d88d2ecd879dc286655be01537e8a9c3c3842b2f7c9a4348de521296cdd51bbb6633ecc01c37e2afe0f5b81113d073b6dc5427f94dbc64b05e51596f20d5e7cb60bb15f3d1e8dbdb2224f9a6f492f4cce0d072089c2873910c5fe99f7769106f806aa454aff26525cc777c59ff2a7f64eef2d7a0d2de3c8d02ba7bfd0952e1994f92a258dfd1774916fe90c405a04aa27774e0869e09f1d1c8e7e3599155e965ba2d6a1c0026dd7ca16f32a330ee46dd3b715b8914d099cb566c71d22be17dbb7983e31eb2cf78259a0900045eb75b2977dd1a9a3228be988f46c6a174fe60b05d578c7e013aa67ff339e780d175de63e0f0e782ae7b5ddee60059275c9ed8b707ca5e37444ac145bf5e67c96da712373031b90e2498ca90b4cbc2f8b590ad8b625509972ed3a342aa40d8f928763e8a9d8f60e70bd871d943014272b760e90a777d49f669718f75c2dcaaa1ee444a8169cc402bccd909bddc3ad3560b6ff4f9eae982593659d73f83f710e537f05a3493f2f2d713584abfb7de3fc89188074e732108fc451a718ac3373fbafd4dfa1044016e18131493a5ca7fd74832a8d15278ec2af1c25d7799cd19ae9318c2a2fbeae645106f824cf6c1e69bd1cb638b25cde8ba3e6419898b3f2e9144840333be72547c2caca451434ada7622dc7105aeec4e3786e599c34cde088d095bbe214fc11bf25caaf0caa207a532e61a948289fdc8cf0202e75b30824d904572e9590e3159cc21e831224f8128da9d84ae2c4211210ae1d3c9357c0c49f68942ce9f3246724ecea9b41145128bf62d8f93751ce72a3bec29f4cc3a33967efc8104083fb3f1d4fa91024f6371c8232a294dec5858a690f6c9d476c5ea0ec75931a433d3155b4c1c7f319b381767660b860ca75d300c4dd305e3f154ae17968ca57d97b65dafbac371d60be9cc70bd68f8b93ff326ce7c66b660c878da05c3f0345c301151e58a21196fdae77fdb05abfa1b67bde0be8c97eb62e22c16d5ff99ac163c9a76b110248dd78ac3125e2ae6a286bdb2e2efacc04b2be702008cd754ca025541ae854a2d441aca2aa21ce724405796b87514e4f937df5dbd60887ff5e2af4fb00b4c25bc68e9b692b8fe199f025171a3b11a7e20abf71ac3700b88f68919ba057a61816f8d7e9332dc32e2acc4b21df2a5cd868db0f8af619da34ca2609371479458c6f8baca71cdb848c91c34d66c25321b4f776e603430c2497793b7e80915b3c33be4ad038d48ae6d3fb84836b956a9b47e7f21ca61f695dc78cc7184eff16e61535ceb301f5b2b678f783b9b6116757c68bdda0001996a126a58c0d6c5a7a6d46d699caf6d965c384ab847c95e381ce3fce8c3f57dd866144c2c4e8a5ebbc1746273d19f091d5a93e414ba5a4b42d1db2cbd05624fc3871c5f288e6ae8b09389d6460f0bf4fb19406c4462e3fe6f2512b998014b9128c34222914bb06bb33b79a6b658704122ce36ebf585df4b22ea987c248968caf23d986614447a0a44e3ad60382f7379a8c9d30c5aae2481b8da9ecf34b77560ccf105e2b896443b89686d55b4c0bfa785d1462436614c5622918b7db21489322c2412b934e136fb93e76b9b25170d0edbd5ececac974cd4f1f94832d194ebfbb0cd2898f4148ac6bbc17462e652519d701e32114b32713d9d79337325711403bd71bffd8cf57602d1d6706f8e7c3f23be8d34ac2331ad84211bbd69290b2550501476819f76bb9263668ba59604e1f9ec7cd64b106a987b243968c8ea3dd8650c3c7a0a41d32d6038ab391f655d04d76e46f6c90d192758502c2dc3a6c099b67eb08c578a7b964ae59df874272d9ce4cddbbd8a8ac57fd85035c69f96fd9bcd7aa388136bc8c37151374b392d3317100085a6c1dd238593e1c69c57101074e4b3fe54db601f46f797572ffe649dc4b97f76f562e2e4419cbb39c9c22d1c9bc4fc78dbc431795cd33a5a92710caf3c28f33bb76ab04f926257d2fd3a0beef375108959aa8566415c844114063913bdd6140bfff9fdbfa8eb85839e492c078bece57b327f753cb180fd3285531b1c0d5c047819c085987ae042b04bc178c6618b012d071b4de086717a384220f013091fe0e3f6b541fd48483f2338ca1d4bff6663b6af62d8b991777ff364e9b200dcf7112943d7e969faa5b7b8f13fb837417420f9d3f354aff115b02dd52a399efebcf35e159d3cb99fab38fbf6573edec364788e5823798be837e490ac1be2a644b725034d43d3db6875064afca08d0432890542a38118e0f25b2b0f3252ac774c1715784ea2adf091e19005ce21e26542b5f29c43b172739b6c6f6883ebb638bcc98db1a7bf331e4f9a2d6fb2e9a16dafdbf8f0d6379b05e2966dbc6c1c032c2c1940e919ae41a1876fb712956d9835fdd5774efaf57a97e405fb5172f46e4fb5deaccfebf60bc92f5ce8a85188eb2419951c59652478edde26d946870773e76a31b08c174223864c63865894183adb9c9b97bee3cbe93bba0052f65b9df458116ba1a219cb08422d01bc65759915cb09a86b8a0abd5599f027d8673697619bda65061ed2aae3b81a458a6199cea11816e6d72e86e51c59deee9e50f72eea8f5cd7737c19ba8e94a282b997a012ca371a452f96b8b17a8b22e826256966dcc9eb7b48ce5c5c008983c8fb0d484863d615c73b4804141603c55d381d605e8c96a14c0f8c62c76f90b65b5dd661a0535d61ad2e517dedc133a9eb5fcddac4f3a2d389591928b3ea03c71a1428ac2a45c871f63afc9621ca4b0c96657c3eb6d3644c86b53503ca9bc0a89482e26460f212943fa651b026bb24dab435920c50517422b8fc6a8bc0d8204e33260c411aeae08808f744b33772186ab2f55ac66398fce8bbbb1575330c85805969b5a7872ee20922f4c99afb4551209ad487a7c28072ec319c6525003a33382bb60cd29919efd871463852bf50920331ab5c67eb4d8263247c1cdbcc2ae56981df7ee845a5dc2accc3cfd0badde317487af891512de52ae6555239e7cca2fd4d48db154411a70d968cd4fdcba556b509fc2d48531288357a812c6f7ff9ca9d038513542d751809671188187c1681a37a46b8b5ad803c6c6996a4242bba7dc76781e392adf56a6bd5064b46a74e473793d2d1c109e9d876f629e916e5c1785a8a40ef9486019efa5289d9717a83e64a4a5927da5381063a066cb385963f29d9906bf9989bc51c6508e0791b3d6fa371b7d15d5820fa52eb23104605c92e57d12193794bf8a819c9053d2cc444b66c9f3eb00bb1ef2a4eaec79a088328f86f00846d4b648cc7676f65e2d2c1a94b8fcad4c7139b663c7efc03e78b16dfbe217ffb9f277f2fd4b3ebda88ccc6dac1ddf21692daf8aac029e8a124f4c6ee590c6a8ca32eff48c424a5129e29385328e0c9d1eeaf4d9031651a19db18b0bd1eb39eec638c6d560f9aa725e7550d1b44913555d8c929081658dfd60f60fd62178b89d3fd474effa7e951702b461f0dd4ddc873ecd911fb8a6ad91e48ca690aca2ca4eda07c125ae5ba6085118cc7022c69ae6ac8857cd21a8dc3b204e28d2d0ee52f4e64f7548e0706cf9ea3b4215ab3a36375196c0b28c195093ea09836cb7aa14f290877ab091bd7e7bd83bbd5445fead3b3c1ddaac3977439c45893b2bb27791ed46e0d8649ce914a33dc97e688f77da114061d749dc445102aaa578adc0918b7b126e567f19bae7a595fc766a07219dee201b2a36fc3bbdabd9ed5829848881fdc30de90bbcb79f52754b5a87386a146fa29625696621df885857e738ba4512981ead652f92c830e2b504047b3295197911b92e504d069a57574e5b6e89a0b6ddb1ad4dca465955433e3722d81f91ea70a9e315694db50b4f84a5f9a32604821305c84d44ca0308fd2a44c88cdf46472945e79536c8f212212dc10f4beafbced9f9954e96f9a310f8c495484a9740efc529ede6492d2a0a6573e46caf633b7572811ab3fd2242de5ab1b6459725b6f0eac084eeda838158bf84fa792031b3a8414ab545f91e7720dcab95cfb5d2acb468a5d29ed23b22f358ea02882f58e6c6aa6659b1441764d98164592b6c1240c53f1c182542fe07eae2562ab3074331e1193e64f686d5aa1ec2e815a9cc746822947eda84a86bb1750c970072a1bde343558d5f258514d820a78e5aa5689c08d17afcf80eac5a308d82cdd6828982e9d64060657cd335ab0224955b8d7478b6e1b9aaf579ff1d4eb45c580c5728d8681e972996f34f37d46794a358d922995cb56fb7e4be2b3627ff305ed83897a41eb885c8b251d0d07d325f597c66bda343558d47db8d944c4825634eeac2d03ad7eba59785f9bbddcd08606d856f7460b6ceb7828137c7ffdca0cddbadd70396777c25391e39d4ea7fe52ac12d897436dcfa97a935821a13ba82c776a2529ac30d06b39d60740a36b59e12170034829587a4a4ceb2659586ac72507956018d34aed464013dc8226888241b2aa962320ab50fd94b852381354ab86c672766c06a817c38407d8a6e3e0db8b136a203366e01b8f83751f96a8f130e20aae6d2ff1340663d422cd8431d8a6e3e0db8b316a34cc18836f3c0ed67d18a3c6c38831b8b63abb4b9d5f467e826adeb0afb8f711a950afb1a505309735e11d67f6b1707a50231cddcaabbe46b14ec9edf9677ef0fbdd4f6e97e9c837ec9649115075ca39047000100b4f843e2b0f5a338ea94d6edee9125731992618468d55d50031b8a9063fd84b136af0ec60f5393a58d93910b6ac77179a4a460b3e4206eac5b7a6fbea99777f29bc6b70acb6effc5e796c8975202b78fa6fdccb0ee2cd5f8e9f1df4b8239048a03ce653a75d2b5e09223e5992eeed55e9dea7c28ad3882c7083dfacec752969fd6cb429bb0560152bdb99f2fa18a891493ad9d41eb9b2076bd4b8b44f15623577209b192a04a357bb4d5db3ccc641d451aeec0cd62157ae418fb8a9f397d93808e25c7108ac432ea9ba1e7153f732b37110c4b914ee58876c066403bc7545306d86c1d0eed22df32e106e186fc2755024191343df3c4f6f92a2201ba7797ea99320ed489432ae141969f2d3309eb3dc8f52ee68fe6b976908f75fe72080dda21ed718a0ab1f0d3a60f25e9746f8d59bc21c3f2580841fefc9c9bb6f1ae157f3be397e4a00093fde2594f70335c2afe27173f454ed25ec38cf52de9d94dd2919216e9c6c881b85b54b52ed6c026449ad9d10c3bccb635bbb0eb2bd6549527524a510a0e092932bd55cd320233197e07543b6c1212a202c40fc6b19e47a3fca1082e7aa04e3cb30d3990e682a03cdcf74403319e8ec42073497812ea63aa0850ce4fb0b1dd41900355beaa0ce01a833d15f58825a0250cbb90eea02582bef5cbbc2005b4c677ac6803863a1650d1fe08de9b996397c803ba6175af6f001fe984db50ce2031c329b6b39c407586476a665111fe091d98596477c8049e6be96497c804be6332d974c012e999fe9b8e458c95cc6722a676a555f7509b391e4d862a24f71b206a133584558997e41463a9f5afe67b73c5baaf3884fe087f704a85957a03f68e39f257990289a28ea159c0b796e3a538c6c1373a69eb7cf1d13e3cff8dd3c2c3860b6331c17e6bf728939ee830a908b57658043e0d8441d28124528bf35f160206b2729895113aeca67cdc45f0d189f532805430d53bbe1dd3faf6b3748dbab8d7a84553a30dfb6ac60062b525ddca060155a81a3fd40a2284cf3b0b2cbdeeec282b8791aac4b8db3cd4d7e9b649b2acd3013de3366e01338d76680434e3237271159175ce6359a6a18fb4871403f96ff237d04979692d2c9d3a061a3e63409e3280454720a9493755272c03db3125d88d04210628f3a3f0155de0a502e795a9bed6ce02a472781602326f61f373b3eb4849584aad33723e7f38fe01daba965c19c646cbae7eee05465beb343073cdb9520ad94191743963d4abe239bf635cd8c78884da4d70800d7da76011aa406f60459b18676c926d9c62d7fc306120f69f16c334822700c34a8ae00220344ef822a87a46cc3aab6b80ff824a27ccf12df609f456640db49c64d46a3c22737fea6fcf69baf9c3c39646bf267419a86f1f55ffca33ffd6e151d489a857171bacef3d37d903adf7cfb62f2e20fd6bb20cb49e15cbdf88b7ffc0fdce5d58bdf2f3bf8bd12e33f4ed2fbcaf169eaf90b37cd485e2ef1bf1144415c8499f38fc97a172751721d927ce2fc49bc3e75fe308a2a27a6dc295b673764737a15ff69b826714e36ce21de90cc2976c4f9c33458ef88537f9938ff26c9f230899de9a9775a8efdcdb757f1aed8478e1cb717fe501ed19df9ba29b2067eaa68ffcde42afe8679cafba68ee2c77b674f08e8f7aadf55b2b9affaa0fa5aa78f3aed49cf666d77fcd3e972b1f4ebe0e5a2280fff3458d39eabdb595744cb6983d9d80a5a4e5342ab5a76a751f7db7675b12ec70dd234226e7e9f17643f71ae5efc5114c6afff2c58ff39fde51f247171f5a2fcfdcfc975429cbff893eaaf7f94ac9222a9fefdafdfdd5f93b8faf75fac0e7171a8fefdc7415c041989a2ba594a62e7cf8338affefc8724ba2145b80e9c7f8d1c48f51b5cc1ada261ea3066561abc5393820f9f73fceeb69bef83a8e60c965e9d89272fb224be665a34d43bf31a73e9e52555ddaaed56729eb0af2eeb57d5e962e2f8cb652b28cf4eda0efac3d29dbd2341a96c3a3faa9693459cb14657cff782c9a2241c286bc09198bbda55bcf3d986b5a0cb0e711cc6d76ec9dbceceafc0397e9e7b2c8b56cb30ebec7abba9b6d729d0eb6c2af73aed2c6abb99b6d719d0eb7401f4dab1cc6eaeed750ef5eacbbdfa0cae0b6daf0ba057ff02e895a1eb99b6d733a8d733a057c1767808ab0e1e5ea83148ec9338a1f75b135c38a9d74272fa6f09ba3f94872ab70398b747f9784660e423bdaa95d9e8f06c6303d55c1810ef064b7ccf22d1161b6acc050e6f5e7050fb82831a181cd0c2e030151b6b0c38f60378afaeabaa603d50dcd8c9c5eaf8987b7cc1d6e604990af6d28ef8caa13941898bb0c7c0746a87e9ecf1309dd9613a7f3c4ce776982e1e0fd3851da6678f87e9991da619ab1256a37019f519e9cf3bb1508fb83c89c20d98530393bde0e875cfac108692a0a1b348f94918286c542657b59124dd567c2c2d9b6ad5e080393a996ace1df55a5ef0ce56c1ac81aaaed90e6b7b72d8871ea93f7aada39656bc53f6ba1d8097eb40bc4a734cc35fbc02679d6cc8845dc9ea27050cd39407e4e65b233f5f06dbadac1b04b0d5009e10fc9d4e0d44a0eb5af9b51b41dd4c47439965294dab1e3a5ada2a5e5752e10b4751f9c2a4bc4c5343a21f94782b834c5fdc9e9ca677adf95f501585ad4637206f9c46840a4359eef70e8669d1f5d1ad424fd2cd7b916e8e904eaad0a3d68cb99906cef7f51c83c6b425ed57d688a5a667d79b8aa642abf6377874ddee48337673b8ab2859bfeebf459ad71387f6c3dded7df1bc1b6b2395c7550f7668c1acb7923f4bef1c7fd1445000b782b9d298559f68cdb4e905841651bd74aa5aaa4114895713a1c8aa9a8fba354558a86bc0ef4a76f99ffeded4285c6946f89dc2ccf07b472d84184d0cfa9141532ab0e570964cd6e2ca2cbe6e57be5e3527ed6b52db62dbadd5d5e9a25c27fa1a3955852dfa0df24572986f884f121b922cbc6cb29fd8074d0e84e9300dd6afe1fea42fbf39e445b8bd6f9f45d86f1612c320015df9bff247fa495f9cf241c762180dae2de5b475715bdbdd5c54c76755400dfdb149b1d92c67953e4096616d2f98aed0c87f84c1fda9c20cf27ab59134ce92cfc5df7020511fe5a0c58f8a6e2ab515ea83d13339cf1767617439ec36302282bb065d0fed5eb7e6ebe9005e0324f6d1c762f99a09ef37d4baa80cff2787a46896aefb41713dad6508f5f7acafd34c9cdff9c4f197d389e35f3486485ea89b5a0524dc90f597da75fd89b301eeecbebf9838fe6c3e71fc396080e5c63c4413e8e724aa078ec2bce0c9c6a86a9c97ac23fa660ae3385148d3ac3255a94f202a24aa96141de033b7171bcbc8428d4f3b4771787ef2094ca14384d38ef942bb3844f2839f801c0da938c434a86223f029a4413021188e1883c1f71585ce8fb801262b2246a1afe57e9793836567dc9e5525edaf4def75f54bb8baaa58b35fa8d7dffe0e95eb770483101db47b3f0091806a702ac1ffa6d106e3224ba22e7cccbcdf202259bb659a8a8ecedc930c61a2cca0806ef7be2ee974a032076a71547d83bb6e0f31cd1b747da04d81e7ce3988f836495af782a1a88bc75c9d02dcd92559f8431217ca54ef0e9bac1b48ffed64c92d97d05bf79da591af9a7b25a0ab6a1b2c752bf9288296b7b6cd3a3bec57f988546be65bdd0cdb872ce8b7d1757b5e62357654368cab7def06ccc23ab1c6d2ebfb56ac8dcd6a8309a1c09873c15158433a5f5c56173a64d1abab179ba0082ec37d704dbecd6fae7f75b78f265fcfd6f9cdb573b78fe2fcbb97bba2482fbffdf6f6f6f6f476769a64d7df4e3dcf2b1bbf746e4272fb47c9dd772fa9ee73e6f8672fbf9e91af67eb34287655c47a7688c8772fc90d8993cde6a5b38ec254fc6df3ddcb3ff3bdd373df393f9d5e44eedc9d07fea9e7cd9ceabf54ff73fdd3f9d429fff3a7cbd3c585b37416a733c7f74fa7176bf7d4bf38f597eee9ec743e2bff7beecb1d38fee979f9ffa2b93b5fd3d6fef2747ae19ece67f4ff3bf71dcf3d9d96bffbeee962e6d6bffef0924ee4bb975f4f678b3f2eef252fbfad2659d2e0eb19b97a51a96fb5646e5d04249f81f6ae79f582778b97d6956a22c9d62dee53022f32cecc13e917777dc8b2ca53541caed4f3a220cd1b1d41bcb777bca47849518d2d8d807b0e7440ec6b02fcf2028255aa05fffe5fcb0cd8f1d7c4bd40262368f1bcc2dda4b06eaa9393d6feff11ba2daf829cb42f428039471a12b0f32816423897b97b8bfc3a281a43b84bd59a6c2e082fa4a1a8267a4f5b20b601bace95a6ad9d40e386880abe871273d79268a87e5f87d93a22cefaeebb97d397cefafebb97cb536ff6d2c9cabfbf95daf87383464baccdb7d7a238aa8f0e274edc8ca42428c6934fcc22309b94e386fa3e8d6f5ec05c0d5e7565b9027d43258cca75587992da7500491d73af23a84750d0000668236a68acdc732d36064b0ef47ba6b39eb36aed83589bed747e36000c56f93155ff333373eb45bd52a4d387294f6fef65cd016dd654c8a991b136b74a7df91ba7e9cb7cf4bdf38d6ccda41178f54da0a3110dc2bb21ad6765f9e375462d917ccb985c0752cb7c9785f16bc1ead122515902c20870baaf90f131647c11191f43c69791f1656418577d904efcf17f0e11f592ecd3e21eed88b197415d0204aa3a14cd4788dda3066924eb84bd0d1b6a7a526fc2f28c71d76b4e55cffb1a19afdad2942a932be927f992afb49cd5548993e215566af164d093eaf464d23673cb3690e5fdd4efe94f62d3b7189fd39e22c257aad5756b785dca2f1217afcaa320c82654dc384592d6ffaa74cc89b3cd92fd2bf80d7e797232718a04fe7a7222e15763500dd8215024ed60d838c89793138d9264c206ec69fd25314314a697ed53411bbb24730b596dfdedc29a6a557a544edca821aa1d5d25551d8bd86593e9b8ae5c569dcbd4dc2c894f9608e74b777213428392dd80d4bcdce74ce8e83bbda98b05efabea95b4f1cf4b02b1ef74c8fc47b237d8908e613d0b2a42e095b0e8bb14fdf0c0ba505e33a4453907c877ba9213440ef333329155fd76a65ddff2c66432671ef550f41fe850f40d0f4539ec195d7b80b9a156000303cd2471df1ba12f972559b7f5e3107d04aa8d7ec65a762ed3cd238b6089e9b7f0190b9114bf320144e54f53defb43cca338dac92a3ee31b1cacaa189233cd11d0a4dafd52f71b9383f8f90880d75e730434ad34d2a86e36e808e010fa725972b3f41680096844a27f994740707636c7b6b2fe086848aa3d0258a23ece11b09838fe6236712ece1ee0046872967fa9db8d49e6fe7c02c06baf39019a561a6154371b740270087db12cb9da9ecf20a3e58844ff224f80e0ec6c36f57b9f000d49b527004bd4473901a811c79f7913673e7b8023a02efff0a56e37a62cc6f309002ebde600a81b694451d56a90f867b1f962d9713d9d79338dfe3f88e25fa6ec5f4e83697f03504d50ade86748fa4892ff62e2949bb9daea4710fcd89b034b11374fc3386edceceb3f6846b08a18799125af896e5373b928aa383ee9459ff16999433e2d73c97b7d51077d4b6e32a2ebad8008ecacc1e0f6bdf30d8aac082ccf06f11e91221144ac148e241c6e8c4b098e25d81984abbd834ac509fb206ae3adaa0431aa159dce811595e3623dd8c7a6423e61920bb649c29d364bb8124a60f57512978ccebbc8de8479b80aa3b0b86f3398a93181b689805db0ca93e850b0212d384d9b7ebf77e89320d0fd8939a62633e6732474dba88924c6126a42fbed0a4b205a356ca24b1887c1e40737c9efdceafb3e498a1de581eb2cb8a7c55239712ab60ae2220ca230c8f9b763c863bee2c8d3151fc92cfe2c86284bdfe534370683552732e3dba419dcb47d57768af59292c39fc0edd4f573b90db366f70362856dde30f8af1868587494dbd83dc7427387f966d926bab04b71d1aa184c00f451ef09dee2812e0adec2f4a6a072a036f6a79203a8ad9d8aec60f1bbc628f3797c86f4e6de1c4934f3e0b4b5a6c359effbc498ddca549d7ad3d56c667893b024b870bfe84172fed631dabd62713e71ce1713a7cfa3b2799cc63007ad01d492b855728ee209703e60063617254d2848bd0eed756a195cac82657fd44cd43fa3101e633280150eecc0f10a0896fd00ba9a7e92e875f8c1847f0fe41efa7cea83a2726b6350c34f9dfe56ac91baed432bcdb1a1a4d6880786956d09ab7e72042b932c16850818d87e72c9d73e92ae81c077f83e08356433560191370a8b8e062ba40d8c19d658c60ee53d1051f5f24938eb9bc3e81bc0a1796695b151f49ffb300ef70154e4a55f7641e5283a916c3e169c08abceb9d8276c1840167b58a8bf1b8961db1989a9b26666913c1cdeb8fd5e6c813d69b133d4f6c66f69c4f77ef40807703eb2baac9dbc0908a645db9044af7c436baf383c8eb27b6509628a82d2ba816f2b55cb913798eed68a092a79a166cb89e39707bc7fb69ca8b2da8f3a7b3d1eda94b34acc34fa955e8068676331c2f842c5f2826e285f2ca86407ac913996b4ebc74c4aa17bba4262a48ca238f04e4cce24c318101ce418a265b4b9632b24043d3439c1878e3902f5b4b88a6a4c4f54cd74117d948a62e9dafbaaef95cae5d9cc440151e16aac2f28d0ee4570ebddcb3435be75ca2ba9954c2a9981d4fc38d20e9af25c397c703b113df2a61a8ebeedf93c7ca39d974afef962e24ce79edd996cb7e5864ce5b89b8f8b2d338a7ec13bb1383a75b13338c8b18fce4173c716880f16114fcebe438e403c1daab37130b53a3815b13dda8373565fda97c076b643d5f6dc84b0ee436eeb9ddbe7d894d7d1544281f262b659af2ffc01ddd9ec1ee1d41c3e762f493dd2861a8e7dcf4373c0263b6b2eb2fe7cd1ffd0d4efb7215339eacee3a2f18ce285f04e2cce4c5db4110e72ec3373d0dcb1442942788d7868f61d7304ea697195eaa2f543d5ead454c443694fcd0b7fe250f3efccc8deadc2d5f6d884d0ee4570ebdddbe7dc9457d25448813263bb5dcdce867467b583a662e4d1d0c17b49ebb136d570f47b9e9c03361a7d95f7cfcbeb9a37ed7f74eaf7dc90b91c77f7b1618c46c156681f1627a726520b8538f6b93964e2e8da70b149e2a9d973c4e194d3213a1b054fab13130f23d31f98f389335f56ff67775e0a88da1e9700ce7d486dbb5dfb9c95f2129a4a2548466cb7e7b3f35e865efb4d231d940387ee259ac7d9478371ef7948f6df5bd519e937ffe97b466af7d98099f4df710133a09c2d99496e8ebb103547108d6e0d858fd28ff2b01387fdab3944b9dfa0680dcef32710e986d70f30f1a5a9eac419a53fbf743cc7a735d3aa0836fe2755026b1af8230e2acb5c24b575d59ac7ba5cf1543b821a061ec82cfbfaa5e3cbb4f0515a54631fb1620136a2c4f3268becc98bccfc040499963fffe086f1a66c3c374186ad90d7420209970148e6306921810b3e00099cf5722b49c0b4839c1b0d02aa41c830fcd66d07025ec7e50ed47ef96d5f1743fa0257c90754438b2ea1e5f3812204165d1aadabb1477d87d5741056868c60e1bbde6206b87a571d7711d2f5697ad214964893b4243cadbb9792acaa5acac4b972513b90e0c4bbae195fee91cd0b51242915d26d8910aec27e15a629361867926c69d651e688d57aad7303b83e5fc7b79c39fda49cbad802993b8b9c5ab88fe5c3ad1ef7c97b756bd04745070621898b47f4fcd6cc4d2180b4308081c7802e3d46e4e01ecc83dc900af2cda50711fb75825d7a8691567f7bb2f4447f20a97465e59b6e22b2909ba88db8b0831d5970e83cdacdc5f6601ff707a4d911fce0ed84684fe8013c0709d6013d3c863f7d6f693b88da43bbd348e0c16bd08fb92d8f32facf3e9efad6ddf6d318f4fee8d69d1c43d01e9162237bfc3f119a8f1515603f9dbe3ae8c3440ef49fcf001df0e80ecef63288051e2fde60a02cd47bd11f778f5bc7240cdcec83bb1bbced8f31c5e1bad243c7368c2914c69dee438b07ab8808eb6e07a9280ac77feb4e8eada28c4cb171232b9e08c9478abeb09fcd4005e5b8111afda7335c3f399a2fb9bdfce9a39ee8e33a06ca417dbcc251f7b775ecc7c08d3eb8bba15bfe18331c4d3979b018923125c2b8d37d60d960157962dded20dd44115f61ddc9b175939129367204cb13a1f958512ef6d319a89d1c3912a6ff7c86ab27c7f3d7b797417df4137dfccc4059a88f0a39ee1eb78eb119b8d907773778db1f638aa369280f17ab33a6541877be0f2d1f6c227c6c7b1da4a1e0b12cb67d1c5b3f19975ce3460a3d097a8f144d643d97819ac951238e7a4f66b85a72aca8246ba1d34727d1c7290d937dfa109c636e6beb58a661fb7b686f4377fa11e6379a32f2603151234a8251673ba24ca846157cad21776abe611164d7a4406260c0e01730ea8586bb88e7fe68213af4876d1845e3e159d77af33def6b9378821603347a89a2c77ceabcd6b7e11dd90075a2c625cf0dc98a700d651e4eb290c4c5a5d3b490d669136664dd78703345cf2a94d8cfeb243aece31635e413db771dc897171929d63bbe63e05b15031616649ff31f1ae41ba022498dc821b04ebdec8738275509ccb6a29c821178fa329fa140038fcdf06ec869dc00e681144c58078b15caa2fa116ad6653b66c3459a4088597a47ffcfd38444d84f89a9d236ea8cc4ea6fc2843cc76b2635f2846c835deca6a58c7ca96258ead017d5ace0604d391ab76ca13f65c7a58ded182684698a9caacbfe417b7ff48980dddb2cae3089751045c9a13ecff99299a78b4a6e33b530db9aa670f0a8bceb858bbacbbf63030eeaa200bc622ba8fa5e7ae7f8d3f4ceb9006701d785aae6567752978e9c7b161df4aa2b3af5d47545a7dee3d715454ab916495a57f4a5f3a5046bffc4cb83d63464ff4d4968417f19b6e670b19e67dde731f0af062c6fb9ad69bcde42b4df6a7d844dd5d469e678630acf91eb1f2b50dc748c5caab95d6bbabdb0a24d16bc8fd71b63171072cec49004fca38d7a55633bd16385309601a4cc1fb8fbb344e5a1049a62f7d6a1a432c2544334a33e70f2c96ea440379c4f0d4634d9a5cda8d3de4cd52065cf549cab1248159543d238f4b1e1292b4a19213a84a7f4d493bd7f806eb877508466902b8251afbd99aac1ca9ea9b8f765902caa57e4910864c35556a432c2740857e9c927bfd802ddb0966c9466d20392499fbd59aa46c99ea3d8c7019022aa2780516863c34e36543241730833692927dbdbb3435cf25f95c748d6f79a42f4a57ee908c76586da5f24439b513d507f7132a95bc85f559fa467db630e2317bfded2ffe16f8fed8d0bcaffc5fdb64db2bd33f5bc7deeac0fab70edaec80f21c95e79a7a522460b2b539ebc38990024358394928d3d3e06d6233ffd11278f40566143b62202121799a29eadb650eff1f7e5b0514c2afd9388dcd06430aed793124f5e44c1b355b0c5709a3c71ee0029e2f75d7f1d16251c026b5b1e7be058f0bc8d38a12f75a60330b6ada03e702c903ad3415ca15c8eb2c134bd73cec6e48d8123c23430e290be949aea974683773f3e19382248a9d9206e29079cab505ea677ce146dd1875d860e0953c1885ffad26aaa437cae45bc1fc30c1d12a4d57c10c794832d954c5e7e9d9f8d2d65461917a68711eff4a5da5487fddc0cfb7e0c34cab890765f5ef5b3ca2b4b9749f1cb1443574cc6a934a1e4302394e672342a75bf04c1051285f5074cd2601d16f797e555b4a7c9e7f3d1a761638ebb3934f9453dc1e2c07d3223ab2d87ea621abe406d7d9d445190e6f5a49be7ef8af6e57edd46c9ad7b7fe9ecc2cd86c4a809ae02ec6949b2028670e7fe7257c9e69e5fc3114c756399fc869ad1869be1fa226e46f8bf0ab230702b6ef9eeea45911d48ebc6d33ae68a9933d7494c5dcff6243e18782cafa264fd1a8307413b6713ea9fcb3d468437e1a639971af3fc82cf1fddf990397912851bc4c6c482302e5b6a18f05d8443aaee51cc7386ede84d1844c935a54910c64d27edd9e2cb7bb864824b87ba20bdf2190e037e1fdb6b5c2efd213a0c339f387f611684e9300dd6afe1fea42fbf39e445b8bdafb8272eb86fa21bdb3e8c5dce7bb8e22a7a78b8e486c4450e142939e4247373129175c17edd273fa09f72e48bfcab62c9e98fe52688827b974eaa7906ab5a4e1c3d5890a62410e0443545cd4a344e0364262982438b7f1337d1731a20f8a81b035065d22c494956765d8f01c85e51c71909a6575b6c28a596362bcf0e5c53eb3e03bd14e13e8cafdded216ec20af82368519e41a73e0d3fa60e71a7be2f1e80033a81e645a8a89255cfe67763a6bd0b8b23719b0d0a267c3f6c173ff3fe2f97f78f1348f6e0114c8dd237ab7c32ae64178cb3de2e189fbfa5f14a0854fc8aacb6fe76c16a490baff1ce681cc51bedb775db1055a5208a704da9d4e5114d89f994235fe45f25c6658b2a2587220a630232b8c27ec0ee805fa22955628be9c5ec7c3ee5dcf481ccffd581b523417bbb394e1caa6d45b5d1ef24b204a1ffe709c72dbf743e6da1bc5cda3567178871ab626f337371efd697dd85f073158a21c645f00bda7adab95179f99ea81b6141b2b66b27047ae98345007c38efbec6eec559bda881a1fb42a2284cf3b03adf6f776141dc3c0dd634e4e7360bd2eaf724dbd0b831fea41a1416cc9e5815a5b8c015a8360b3a5d2c822583836044e9c7ed634b8e064597b635cbcfb23f12861fc696bae6bab8991a4cb6370e5fd9f6e0e423d696e0eedb2649012dc390ed54fe886cf66a387ab548e2fc3852bc32d6907803d9709a9f25030e6d537ed5224d3f0171dd4cc019db4716dc1eebbc7a3475577510fdc2545ac8e3d89319c0406da4ed6a0b7673494beaaab34c0862c63eb3543c57fdbbd9e90b3e7f00d2af6c276b4c6206ed6b039ffc5052ddf1e93fa3a0207ff9caf53def6bc9082037e883b0906fc5186f30ff188c9da742dd3330615858212c9ada34e9659e98aacd13d321e609cdb3543ff8a14609139ebb0b8b3178a6c7b0161c6bbae1be54cef5d59cebff1238b732a154dcc21d175d78f980c3a3eac4eafc0040cc8f101d431b1d2018d2fa3304c5fdf918793e468c37e3639c24c8c8167c6bb6f5be54ee7d3e4aea644fe215043f465aabbef61429a1acce1009c0f404f9b54e27fab5e1250446597f8220981befc35fab04c1af9fcf8f2f7f07f6383df44cd3675c0b9e35dd745f2aef3e9f1ef56380da82c59f25e6e707edc4ea009121cc4f101d2f1b9d1f08cafa0304c3fcf904793e414c77e1631c21f0c0165c6bb6edbe54defd659e205dca56d6247a02fc5c1d1dd0975277a97eafbbe6599201699ece4ec63aa51e097dcd49f814b03afa69fb1426899ee84f01b967ade1596b787a92f7613493a732b967ede759fb79e43dc871e878af840f8efa13d079707c8efebef904c8fd587a8e8eeacf2fb3cf1aced390ae3d749b1ecfbe8f3fade737e567ad46678f4482a118ffe8e760a82e36e14a1d0c45a9f64b0886322b39f4909151aa0828e3d8276efde84f409009dce8f1629f647cbee8d82774bafd639fe46d7becd827033c30f6d335d7c638556063c638758cd4fea48e72aa501837ca091149d04a86714e0a5b19640cc41748d3b21d4605e37101e6338161134e6ec2225845a4aa71c09f5b614c97b2cad0a4a0739370b08ddade0777ae9874072a038a891c0c3fbe0696aae898db145aa82540fb775b5a71c6552563be83f51adaa8b4ab17572f1035ec524ab45e698fbd32dc1b410afade678cc06733f0005aa15c4d7369f2bc8d2bdecd9ee6cb91b52904d1cf8d5c5067d647b4ee230f8a5146fe85fe554a58436a95837ee5cfced7ab4d83ecacc543a8e8366310ee9b5af34863a1755594946b6a95eb89d56626937e540e001594e3972b8cd3433119d0412d7885f27e94c836b83de61e13961ebdda1e7b540b723d6f3c33727165effa70bea20390f3bdedc5c59967835b3fcee7ea124a2c287e853990af6da865fba30c6941a89178be5a21990f79d44661f9b1873221165792af0fc72b3a00397e73b19c4e5736b8f5e278a168a2c87ff2679001c5d28b3aa63fdaa816e41a89efab75929851c46d14c61f7d2c1372b1f503fb303e0e0ff3fd6a763e3bb7c0ac27dbb3b51d65fe13be22ecc7d587d4f3fc318634a7d358fc4ed707e0410eb371d87de4a14093d453b9924ecbd974ff79b05b2938ae9e528fa7292beed486aca07c647b5c949072d94297a6eb33f245583554cf1bad5c71dd7c905e9bf57c3a71fcf392dbe71eb069e4cfe01a0bcdb4b2ff68a3f622dc487bb75a3b69a388583ee4de7d2c94ec96c1f6f22b9790371fa4d72639f327ced42b65dd1cd255e4cf20318566da4d72b4517b116ea44d52ad9dc49122960fb9491e0b25bb65b0bd2fcb15f1cd07e9778528d525ffbc540bbc29a4d1cbdf71058c69a7bf481c71e05ee41b69ab542b28abfb229a0fb9571e0d27bb85b0bc63cb15ff8dc718b055fce63f08c772df151cdbb533dc2ac719b80ff546db29e5fa215cc960f9b03be59170c22c200af314bf2b18bf8fcaf54ae1f2b10fe3c6c3836dcd387eb03f63be1f1407c6e99885894851908c3a86508f1af65bbd7fd99fb6495cf0bf64240f7f209a67cc8a386c692ea0f293d905f14af01b6d7f143d6198acb492034c9a1157e90253217c79d9e046ff74d32858935d126d900a61ec25faa2bc04f8e57fa6cb927514efefed60fbfc61063a6ef750c65f03eea8e6bf8edae821b4f49d627381ae984296fe69ed6c64eca199668ae16b81da940b52e0863852b1716637611eaec2882e453d0174607611f5839b2f2972ba0c18cfbf6874fda93fd7f010fd657f888ab0641c5d114315a839abb40e8eb08cb8e23d735719095ebbe50f6239c52c89dc522ca5fa70907f4b15ecd27e3c56def45d92853f24713128737a96dcb68ea2d0ef80477c5e64a458ef409778f61be713df7c4089fdbdf38d99876b1dda73439a0ff4c7eb8caa167ccb985c0752cb7c9785f16bb194ae800bfd711b469199eb2f83932fe2e46338f9324e3e8e13fda9cadb3fc11bec8a7d54970052b4e2941ce07bd58128ef5a9d468d23a324fce086f1a6a4d6147217059cd6b1eed8d3a8edd49f634ea8063dfed53a0af2fc9befae5e74fa765baeb51b6236a02f18e985518f190936491cddfff5c45113a6b1d66bda71967d1125138caa1f30aaa10b6f4640d3cefb51d466d338dabdc3b513500119d28ccd2b24ab095aa1aa05015aa33b9b9b8d195dabbbbd1dca3a10a0b540e93333dcea086f2be4b430507301bd7323f44c76793d11fd36af1a72fbdc6ade0c3256e4ea3598299af6185a2387e325aca94e92d56b0a0b31bba5b0eec3045c98cec590e9f490537d7b32ef443c17140a9ec10cedc55adf9ecc3b116768a62e625df6108ebdbbb2e8459ce474c824cd452c8694a9e445e0070864ed8cc658b93151eb27d5074c73ac195a4f4ee0d1a5b992dbdc2dc3b552250520b46a2c340afda92afd26ee2b9d0a551fa197c1b6301584fac635a5cd88c032def762e06e37115cd9821265b676063eead9f5b1f0d3be3d220e4a06dd31cbedfc8afb0b28d8a7bdeea6495a9e1dd4ee952a17a7695904d935e1ecfce69799ef9dcb6d98f1f1e5f20dbd79ee51f6a30e5307cb55576f48740065d7a560b1ecdad0ae201f0c180d46343fa923cfb171ba41be77bee938711bde91cdc9d107e633b841f6cd07a90b6986a3b8c5abb069d5de13e1e55dc17685715cb357cc8711378db441da2d02f4091aea550f9bd5149a30f12e09471de35ed73e079f2fc5e7a00685cad0b3de91f56bb271fe86179a61bc09d7419118a401503c13cf996762170dfd07dccc47ef5b0e55ada33585afe13eb826dd03c275b99c242e5e45614c826c425f9f9c2249eb7f550b3271b659b27f85386c9f9c4c9c2281bf9e9c48f8d5185403760814493b18360ef2a51e020fd1add7bcbef9fcd2d9c23b5b059005a2264c29bd5b4df7a4be493d1cb9ca2653e3688df13b6733507964112c039c54ad7f7b7fea98fb35805100d84bed582250435985438e855bd9b8db736c948db71146fdb137d491b6d25136514b2e792b61e47a844d359f3817dec4f16780f743c39cad525bbd4557b920ebd70f3ec3d919a810211da8a6c6ddce5ca45fb14b1ea5c6c3c510d6009be692abea92b76d342a5c9c146e1045c92dd9583a15b17d57c991741993d479c83886d3273592d33fb7ee511effcee54266542555ad933e71d786264d1292c1cec8b3cee0089d1aa91c7eafe3d9ae6f46b044617ad9f279e3ee02656ca972461e5d0d5e3e901abcd4a9c1c08da97185245562d636495cfdb7e827ba0f379b88b4fe9d6ee5d0e99fa5bc07d121275963ae63786c9ffc807eca912ff2afc6fb88f75c066e9c9ac9f329c6d05b836a13035c47565b7f0b3d7bab9482e368d7d3636ad7969db3daf566497c02d9bb0545e0f80ac0d42b91f5cf4b8c1b7f44ece442d1ad1e0ed5b8b6eeafa0327f76428d5dad3f6addda4db6db9c307eaa7487351f1b73cc0827fc364a82e2b24add279d353e7fd4d42663f860a5ffa62934eb8e0521a2823057b466bac107ab5cda118c942ffb5e2cd4306de7ea15ef1606d191866159ab4f48b754c15f2577f5062a75a88264fb300e8a2389c2276d977936d7297884330efcd23905b3e041bb0ab63e3c30053f0ba31e44bdd618319460c7b5f31d439c3ea4e9ef785bfde958031f6e737ea906c227b5410d6c863cbeca0ba4c9933e347d9d8d94bf1ccba7fa218b5e5dbdd8044570497ff936bfb9fed5dd3e9a7c3d5be737d7cedd3e8af3ef5eee8a22bdfcf6dbdbdbdbd3dbd969925d7f3bf53caf6cfcd2b909c9ed1f2577dfbda4dc71e6f8672fbf9e91af67eb342876ce368c22373b44e4bb97e486c4c966f3d25947612afeb6f9eee59ff95367b1764fa74bc7734f17b353df774fcffdd3e9c59f9e3b17a78b8bc89d9e4e2fdce9e92cf04f3d6fe654ffa57ce9faa7f3a953fe279a39b3f5a9bf2cffdf7c763abda8fac84f1733f7d4f74fcf7df7747a112ddcc51f4abd38250a3fbca4587ff792467fbdfcb69a4d39d9af67e4ea857ea56d24d7e7b540be73fe0fcb255a2c4a8a3ba7f385eb3b7e7e3a5f50570d7f77b6a6df1cdfa5bfb97eeed246e5fff6a56bb92b129bed2314e593fb1a67ef947d0551a711d79aeca451699de9f2eb4915c4970619890b6736fd5a334b0e33bd058447b1b34a9f4296276918138b05686b505de2f3dbb058ef6ad3baba6f59a89e9d971acf74e2f817405ca83c0cab2a580f469302cc68c2198d0c67e7d4cb72270d6efedec18d6d6812333270998c67f604c7a9d7728e70f5b2f51a43790182663078d534d70670ccbeaba556fe01729a9bcc96ba8d3bdc66a61dc2cc6866df8d8dd54cdbbbc179c3e98cdc01e49f9e2fc85e99cbc2f9bd709f265911c405a8758adfeb478cae8253970804186d78858e2e167d58377d886c546e867d8e6dca594de162328b3a0148cfaa7a7df3c70ee990953cb5818ce1827510ad5ff964efb8ce3cbd3be19eb5a06f105b5073613f56b0001de390e1d9a15af76a969ef7b5e33a3ed96b06eaf3ba305f1809a0711e1a6c0633129f833ab410a4e238f09d7d984ec8ee0f133bd808aa2137e6b9f198636a883c0e17b638f4d53d16e713a7dcbde666c7f11546d365ed33da7475b1d820691a8faf44aad20d1f4f9d5499aa94e39bc8e38737ba5e3a5fcd2ee6abc5c5c8bca99f97d1c344bfe70c1345a9fab71bc631c998ba81341c42ae23cbbced7aa7e764df4b15abe23fe48813202f15e087763aadf552eeb4f34e1b7595ab58893e139b2028c6aab0f8d17f470440b0c384f76a68f1e64b6a6a69682895fa939a9dca23e0a6a232c305f8b2ca3ebf3f5ea9cb3b83db5af02f35cf2c268faf92a48ff89e540bb8a33b03788b07f206f0160a770083a800b313afa35f553bbcaf77fed88f6e67c77974b3ec96d383bce96a6614bef0706e7892ee69e08367f748a8137f756686e3bd3c5ac8aa6d1811361156eff2c0ac2370239545b73166306648c1cd9daf1ace58a0a69ea6bb8e897ee5740d0e6994041b3e859c08c9cb7b0cfa513c41c5f5046cfa578a7cb8f634127222f42355dd89e08f3a4aee5dae660c4649f92c697b1a1e28d29ba6950da44a3de38cd6159faf67d07ab1088edc1f9b1048bf21306b488f2ddf09dba7b1f9e1f3a78f76d97f6f8f44136e978fb6a74102a936f483d24edec3639191e9d9c86c768e0825e14f7717e475d04b98c44aee6efdcc96536f8a98afc61c47be89c9bdd7973736cd3ade9e5a9a1bc9c538a68b5a4ea3a0cc218d42c6573ec0746f73b3544e83fc9045d787d5257c42b8214f549c8679c5a5ddef02131501679cf1a0ed44e07fc1bee5cfeb66f4b7db96853cf4f54b5efd9e6f61a375f4e01d4c86e1de0007694a822c88d7448c0104bf803f8249fa8db3f1c70994959d49e7a38fede5b235b12fcbc2b3da52e04795deffd05192c0e175ac6215d050472855010c73ccceabf4a1c8f128a900bf9012fc1221feaab84fc977572f721264ebddd58bbf56528c1e10b08fb3071dc4e10ff4a8a8dbb651ddf827fed15e8c4794b16f73410e7ae5816ae31a82295950c8100ad394b77e7f86460fab8bcae79a9ee0979a7d4056d4584361a3a895bf354a5efba3e539dd982367b0d757f3733df4b9c756f9919f4b39bdb34569dd2507f8a32cb9cd099f22006367d6a4f22531b569ce0d39fb014a29d9e8667201ff925221b454ab1322288c2a2604d59d212c49f9a3e48bb406ab4884587d0d416aebae0599cdc7c3c086d86ae5b1ea5a9a5fe8093ca6b0aaa93f32a93e7311249af164f31c67cd934ed9f65728c99070f3be101c4d5563635714158c785b61ad561643731cc2283eed6d87557cba1f6b4d66c1ab2ccb054435f1e95630009bbd8c0cb3260e37360e2df9fad960ae76eb9d09a930bacb42ffa7132b13d068c3e0e69fb1863856c74cc1172b9b4e5fd3cb1177c553c3d26c0546b2c98ce179abe21341af56343d8e9566e4d7692b23ccb3d7e311bc1e01c96fb55cdcfdc3a0b9f4346e79e71e8eebe33398c22df46874fbdcbd455bead53ea366970303c29a4b54dc66f119fab6d859242ca932cc55c5e08ca05fab72346e9ed258943a3aa5fac3dd9160631acb57b6ca8b2c794d2e9daf96c1c52a589aa26366bb789272c5d098f0e5cb882ff735889d6492edd92af0c7aae1fe20358e586b8507d84698c946c18a34e9435724e2c2879b323f3834fd9b0b1262538a9eabe1e8df3b12a55c9c1cdbc142f02b5aaccfbda52719a3a6d838f4cfaaa09f9b66e13ec8ee5543e369e2e02ef3c37a4df2dca44b6fb3f4169ebecbdb208bc3f8daa4cbd5f67cc63b19c25d6e82f8ba91feea1ed7d399375323d965f587987b9764e10f495c0c62ef2cb90579bbf99dedb57e20cc8b202bf80ea52f55e87c58907d7e59d7e0a7df74b3658c898abdd2f8cd95db0d31a16ac9dabb7b294c84efbe55c5babe27262de913ecfe5074953495cd95bc85bc03b1f953e06379e85e56c5720fded5b3cd7a7de1db746eb1bfb7dbd5ec0c73221eb8d3b7dbf3d93912576626a63b29b45e6391fae67c68082373a421a09e3781cb01c29c950115521594b15e480fdd0f621e1d2e4a0c71df867baaa225991065a3c4ecaabeba90e213a3e4e9705f755dda09d0082c790b34e8cac1aadd504c7161a9a4c5cbb07189a31c20def8ab1a63d6d15c8f98515b8a97181c0ed5ae95f0e28ad19afa09898e3fcc5bddb9865bea59917d5adc8b0f7d18a0a25e30a443ea7b6187e7a3f83b05741becc3e8fed2b97af127eb24cefdb3ab1713270fe2dccd49166ed16753d003be6a58dc4744d091921fdc24bf73abeffb2429769414d759709faf83887702115b057111065118e47c442e3269887d24d66c001ac302a7a8e8d6b608ae798085b918a28f40277c8964facf7d1887fba0aade55d91c4e5808f5aca0beb9e95a8ec61f9032bf7567d651e62a05553dc6ac65b5e0187365f8f67804ed06296f0cf126c8360f331a178cf5408b6828088e376e47e3c74280a988637666582f7d6b513fce14f1bc2bc617b051a637eeee947b1d753b02dd1f73ff01347aa8818ebdc3304a8ec38ed5e1a6ad5c69022ce88be61eab628f8cab19a2299b3b966987512b6b223ec66a9b6844d5f539c873d0621ccc4b500747ff65e629a8ebcaec3a2ddaf8cc7ad55dac75bde6fb208ad4973488f5a622eb69569f19a6d3df8f3286017b33c818b3f7dc787e007777a12f429c690a45b72da1ad309d035bc19ce8565b4184536d054b14ccb6c2d492da665b41d76b97eb807d21d8469d09a0791cb8a46530da24ddc04f7a731b435466f7612ccb34a49f0cdab5fb0c8ac834bc4d8a679bd25adbe79cd4b854885d42e67b66bf1d3fd943eb63f93965813812d27dd6a9b71beee71b5a6d4c9b3e0eb25c39498376bdd64c70e0320604546d3b3f2e736c25e3ad49c5b6be7dca4f82484fdc4ba0959c5a4c1c7f319b381767d08e17bf4aabed6d2f2ecebc8795524f12e53e6b6421a31aa445b9c1cd761c1135f6507d28d34b425588eb2554ddaed78a99492819f001245433282a4d64cf1ead84d2f629fb15203d71ee0436128ac69ffa336fe2cc67c07e973f4bebbdb9584ea7ab0795514f15e93eeb6421a51aa405d1214c771c3135fa587d68d34b4e5598ebe554ddaed79a99c92919f001e45433282a53647741ad9cd2f629bb28213db19e497662ea62e22c16d5ff011b5ef82a2ff66a763e3b7f6021f51451eeb1443612aac659921aec64471250230fd58330fdc413c5db403c55edfaac97997492e01e4038d563a27244763cd6ca265d97b2872323779ef3913ee7237dce47fa39e72315f7f5f1b26836dd1f217366ddf5d81db219323b09ff0bcc8aa97f35139fc61e23fb656f9d0296c67d02e67c888d207562b0ae209e0195f2f670992dbb59303e2923793174ddea79ae2be969e1a340ff553d9e3edafb7487837e92b4996a92e8000ff0962b6898cf49981e1df33e4998f0053d4e5225bd3630a4db313b7b4e98f4b00993c63cc6c74d92041ee7c2e7e31cec43932175a8096fbbcfee228fee2e022ccb2fd53b0420c5633883402b822af17cbb316d8090647998ed7bc48df2992861c79992d5e23e2b1e8fa1783cbe0832e00c0315e47862491aa3f1c27876e97a54972e60497e991e5c00211ec3610b5a0f9d1651b77b202de2a81bf7787b642c15e2f39b8fd5b2f6defc3d37e9b1d587a783a4d5323cb0e831e00b73ede108e2481aa3f18d7a76b77c74774b60597ea9de9500291ec399125a119d0e51b77b201de2c8dbf7881b652435e2f39c92d5e2f616027df7eab155892784a5d5423cb00832e00c735de20862491aa3f6657c76897e54976879457e991ed0321d1ec3e119580d9d0651357b2005e2987bf678db6334e5e1b39b8fcdaaf6def73df7e7d1f5862783a4cd2a3cb0d4d17385b9d230be2462fc8ed611093221f330d3bc207745909140746ddb07772eeb0ac7f9e2313ea932fcc4917fa3ffaa12a4615f0147c5d6278ff33d0ce31dc9c2021d5fecadc57a096442c1a6ffe8afcd9fefa3f270ccc7f0ec931776740f3f7088f13cfda0ee8fd1e9f303fc833dc0cbd47f6a1e80007f40e71822759f924720581e03c8bdcf1690f1d85f9a72368c6fbdd827fde7aed8476e4e22b22e264893ea5c443eaa41f328dc900cfb9a2669724332f7360bd29488c73c3cc9a64a0ead8e4063bbb649b6e79402059e8e1a5d861875cb0a2751951063f38a248563eb408438669351e17991fed59582b0c8de0975cbd6b4c1aaaa28e0f41c23b54698076e5745be1ab4361e5ecd62554b57e4b446202f9050cc72b9cd68c5cc4a0abfa8b99a2f958077d829a1c0f2cdd1e5a3e906996e4e78ba14658705b8f344e10a8a248d1ea3e17cb386fa3da0d11de2c39e64e1ba263efda9ae16d8455a376bccd79ab009cbe9226ce59f5499713d2104781ccce59a1c42b85fa54978a38d27d6da9086ab07ec3b1c3721bba9d6133dcad806d3a613478766f6b53d67d67cc56cfff234d46d67f9986bf62270f649b5011ba1099508acbf819502996f5298e963d7545b93b82019dfa3fc89abaac682301da6c1fa35dc9ff4e53787bc08b7f7b4a4209d3df3cd34454313359a26610bdb8a9245a9de1be413a0a2b5feb93c8ed0dc019f73f9cb2bb838687d705d1dbbbef7f281ca7b2f0dab7b33592210d612955e55d68ae98252be65363cb9019a1341299f9cef9d6f2680225ffe8e9dd19eb0fd6809ad1bd27ca03f5e67f4facdb78cc97520b5cc775918bf168e671051fa651b46118270fbdd4cb96010f745c47d0c715f46dc57237e79b922db2423e049d07e44af49daf5a9b5dd3a585ba89b04a043eb51a991029b80b80125c3144d208435cb5ed7bd07d1d49499ff5ce56714a6976db07d9b174216b064b5f5b70b0df9eaf2e220fdb8d2e3322cfd5901cf7c1f6d117cabead6e3772e5379b3243e592287885ebe4a557a90afca4550f60158d8e4c454a355cec7926ca88ae7f7cbbf6146561d932a8aed9bf5aa12407873a3e534da6036f863008a39a841ea9b9736d3ca39b65cf4efbaa40f7823021a8c6125566c4c6044883e68b3d18cd8fed9f9c4f19725d35fcc99172c7a69d890759205cdadacd949bc8a693e3f88c914ed24fe02daa2ccab6e3b1ef5689cc36c3e71fcf91278ffb3a6112c64952d4de8d4b6366532a1bdf15a18e3cfb7b6eedf701e008c2c4d8e7346a8a86ac3b66667877e0d7b8d29835aaf94f516ed3b5f60ad7b8f2d81236710b4ff413f1ccd69a46ed4f5c51f5e5df7ba9e0d3a1dedc063760cef0d63451223c123ce81970a06e4e146311f40749a323bf82ce7c2f3adc964b8712c86b09b8ef9be14c703b6a3c1b4e4f1ec863a8626f725703126d266cb89e32f4ab976b69cc809159fb9fe33e27afdea5aa4a233555d2d571c7c3036d44f2c561df578b5d39c7b4ece7e4f83e3f618b2079bf75c491ed692d5ed571402eb35cd5e2b0bf5d073cab62b0c000fbcd418a763ec71bfe9b961fa494d05067d071f242e4620047a93b11722c38882f5d16bcf0d3c4e877189069321480c164323116608d718613518210b05c5d8c0427fe2d36e99ddfba19c7e78d9466b246cac5520a4313309d036b60f18b4e7c800e7f5043f865de229ac29c6ff82dbbfbf38191df32f862bb4d413cdf12310cfcec2adce1ad88f804330e03a50698dac767836717cefbc94c8335b93b78a0803b9a1b7615c479631b814e8cb9c65875097f332cdd3308e9b0259f51fee8e048a5bd6c08eab49e64596bc269a92c7f647790f7d0856064c952070fc7e43ebca360fa04bfffbabea44eb47a35e77d901c7e39417f0e3d2b5bf1aae3c707b52b697faadea630069cc45ae015680bced472219abc108f5d333c665c321e6388df2d293157b1aeb4c53280f548bc661c871480561360252869adbf974e2f8e78b89339d7bfdcd7aaab51b55100c34fed9e139228ae3f2eff8b27574b26af01d17d523ebcd7582552b4d9fcbda8c17cfb746a2874d8187b4e5bf06bac76d4700ed3932c0923dc18f62277a026b8ab13f9f605934138d81f817c3143ae2cdc6a75d2f1b0d921dba1ffd8660d047d7f067b54fe4125035fa1370202f8c622482a832068f5a1c7612c30e21eef83622ab8e051b91bcddfa6852cd31de5f631214014bcd881fbfdfd0bc3e31dbacd717fe4874196c23024fb37e341a6223ea71340a26a271c93a584f870fdb9e841da285837d0c208db9c035c00a90b6fd4824633518a15e3ac6b85c3882e903535c7a72e2309387b64cc64095681c7e1c87541066232065a8b59d358e5ffe7c318e85a8bfe265c311a30984f12c44fa0ec7e2dff145ebe864d5e03b2eaac7559aebacf9565a3e5792a391f9abedf9cc261810e8b087318187b465bf06bac74d4700ed3932c0913dc18f62207a026b8a85470b6533440bd118987f315ca1a5deec5fb2f7a5bd92e4c8617fa5d4e305ba472f7beb78f7402309fab4800c18866daca0b71f5899acaadc97954c33b3de310b1bb22caf657bbdf225eb9d3d3e64f9beeffb1ff847f40fe8df6024f3281ec120332bab8f51dbd0eceb4a06198c080683c160c4f0c4ebe5a0b114fde847c05d30e8636c883073f16472d6f9ed2c46841da561101f11449621a4d47fbb03447617ea0eef24ead4b1e62432175c1f63aad9cafb1b4d9a31d0d13852c7ef37b4969873319f1d0f45979d9d44e08ed68f46bb3889fa6c8f9a976858baee6cabc31b6e4fcaee6289837dec401a7f95eb8115a06ffb91c8c46a6784fad919c38ae100fe0f9bf1d2531477f37b382ba0ed68160d2390c3900ac26c00a43c2d37916372727276309a8ca7c3f889fa1b5f5d44623095309c9fc8dde150023cbc721d9cac0e7c874575cf86735529a993a52f575e6b747e389d8d673dc30feaea4edd3d0a0a6057d9ab817b9c7454c87ee302b2d80f7a2f0ea20fce4dabd02bd5d174efd000687f37c4c145b8d9e074ebe59581cbbaf5a2dd0ee3f7312d44dac1c3d3eafffafb843402ec260583788400920c209b5db6355d507720ecf0dea02efd6ace207391f5b198eaedbabf61a4eef71ded1f65f45e03eb8ea093d9c9ce2fed3a98016e047772030198ec8084df12317c4003927467331cdc55fb117517131beaa23f59fcf5ab1b2740b9f6228f89d3aee8f4b2240695be015c1a16eba49f04eee6c870d5b0ddcdec19440e07211384d7ee287572f94c9aff0ce1f2e96d5c751086a1b4c070fe1e677f0309eee0ba7468923ab01d14d1216ce2aa6a57f50360aecb9fd5d2d0875a099da6cac8aca93828175f3a060a3febe83448e8f2a27cf5a992dbb55ead4f1de4b648c5ecec707e74b6ff5a4be3a3f7546c697ce4596dc9336b66cd284b62469f3640671655e2d5c8ec0ed34eb6865ea52277a6c58717eff1e1f830f29ed8c7c297ce143bee5d0967c86e4dfa4fc7d3f96ce6590307658dd570f46c66618f5fb7802d36585d1cb02235561467c71ca03aa5bca5b4ab3504d1aedb92f0b71154229e7853a1938bccb6877bf5618b77561652cdfdd669764acee6e474903a51034badad9ad3b0259b2adb3164a936b7edef323fcecfc9a268369daa441f4bcf47649eb36453d47535595695ba2bff2155be9377c3a3f0647c5a9700ae6a7806f48aa6458e97ed3245d686b9d908f81d98532f226a0838aa6d6fc9c669222a17ba2a9526b42829946724149527eb4ab08eca86c13a0fe84d46528bd84a0d34949d2cc0e445357b6a46bb3a038b60695fb5f4a34609215809190240f8a517e6f34518465d06306cb60eb331ad43f0d4558b2a50f5513a7a593864edc5de4185a358cf93a9baa0c5bf1174452550e49bfdfc2843c2404a116851a8d5c92496952bceca9beab3be7fe8266e0f73be21b5656048f50082073456eae04fb6a7e70559c7c9edf9e8e2c50f4296e693e38b1707a39ca47990531e2fc06376fbdb757b501f4b0d8bdb846ad5a7d93701cb6f82eafb9ab16225f4d29293db3c24895ad6506f45d22226494cf276df129e8b12e7778f3fbd7821cf9c6fd2344e97a20cfea82835f741f53f5b428b7f2a55c85b3d39064b3aa3dd8f8a95658462758040953a1606ab956b5b367832b194a62e5806d7a5ee8d30a8310d6e1f8fc7ae219cb3b36b65a8bb398b6e470557eacbdba76169ddb57ffb1ce0e6eeb2a993bac03e5439f6c85e10d50106aa140bdfcd6f5b38add5f637979c60aa0d160e1f3c22371ed16e78d8a4ca03391414c11817cd1ee846a058fbe1ab5eaaec51d40d87a0b7b483901583217cb57f06214b239ae6b426724790085630d50ebb2649e2e8b56ea3eaf3405847c79a63bbf29f56bffb4f2f2f789c9598365c4a8b55c5a3972c8a5eb5430339df341f4537b256dba6a0ea79ca8a97b274bc72c946c3df8e6ad009d607fd9a6e1f5c79f7c5ba1ff57bcdc403b0fb5cdc026dcc0f6395dd6bf29e50fb645683f0a0d4debb7646d531d3541a01eade9ca94ea6da3bd30b81e6df1d3138346da0bd6a4fddcd031961ef5b8d76d8627d20779b4e6fb5ba174361f7590ca0663bf267bf731b58ed7eec02d94f95cb166fef1dc703e1feaa58d743a826ee8b899f4ed6515155f225bd0d42b69e33cd6d2c51f42bf5c33a0f1609bd313e943f7ea53383f158b883568cc7dfb0b468bc4e529328e6346ceaef4b7ea96a18f93367d795c7c3f2bbdc6bed7309a9a0b3d2a3f949fc12c4055de7edef208dbe1e7d690a5cd969e39f6a07a92e06ae68ebb82a7f5c727185acb64ce992182df3158fd3cbf2270b1e5b3faa059f890d9f898ecfc486cfc4c46702e2737e3ea70bc6dbd02980606bc29771da44091da9aebb6d47749d15b75877e7095197bedab17a3bc18a12348a49c29692ffdb885d6a8e780874b546c5df81587fd2e00de75ab7a0ab9ffaa784cce920fc33470b59b259a72a926453b0afaa1f6e5a77f3e9f86a257e2cb5da2261d7c1add4b29dd16cac5d1128c3543f5112b5b91b6aae34849d7a83dbf6f3bac32dff8cdef6a3c076d6237a8719092fcf473fdee445bcb8d5786c7caaff0e5ab77a9e919006735a5c539a7e05c9bff45b4217f092a888bc5d49af40a64d34326f6f91ecf7a12ebd5805d0b4f205fc6478d2e94d51a3a423534d43a88c578dce68dc8eed35c4c58bd12fc4eb8cf182a4857a47b111268ef4559fecd7a3fc6aa94db99a2bd852e0f39ba552fe514dd1f2eff372d7e7342d7eaddc9475c87677376a30955f83bc20694478e46826eefa8036ae2a8f5baf268e8bdace032b0dc00f3fb3a48c8e959a81d88a0bd0ccc0c0b3be819d42ea201e144201fcf03353aaea58a9e977acb800cd0c0c3c13fcd929a40ee2412114c00f3f339b888e95f22acd8a8ad9ca18dfef61bb9d3cca101ed4c1da7b21a73cb7c933929ae37de72ea4e1ad0a2241152fd165fed3313effe9f8139a7fb58f769ebf3ee7385d511e179da66dc546ddd407a48ca61e0212455603e2ddddff51e3181a88da7cadcc2c2bf4e37fc7a12bc3cd0efe3f2ce09c5d37969a1df8bf21c0a5296d87fcaf16c882058417f1828408d2f7ffcb0ebd6049443932f2df8160639e2524a576b0e7bf0181097bbc32c411fefe652b686d7f23b07fc50a8b8bc5dd6f5b011d1271f73b36c875a9f85d32f1f44f51f0ada3c649b7a73f427bc2e7fff48f5060070d9efe10854645fbe99fa0b0edf9c339fd7f0cf593a6ac20c22d6597f07f0701665912870ec8a7ff8c43e688d4fc4308946fb508ceafb73fbd77c1e32c7bfbd33b6b0711bbb64ffaed4fffae15d081f2dfb202ba70057510afb5a66bd8bf8f02bb86fe032bf4c62ed46f7ffab76d60b9b4a411f8bf67876f560402fdfb10745e501ee79756b02f21a04dc1d6a488c3609345a4a08844df7f0bc0cf49b44476894768cdce491a84310f1304f0e11906bc0c4818b24d8ae8aae77f0b82f29045c880f7ff05824a486aa7e7bb3ffc2d10868597340a32ca734cb73cff330898259861f453108421283e40164909b2261c01bb7b00c16e9081fe2f04c163ba08498ed1fd3f41709b18a3c3d3bf06604292849b84140cdb4220a3a53464cbb318428d7f0982ad29270841de80409c160efdfb33c8dea8007145f8b37f6e057428c19ffd0b2b24a6047f061972214d92a060d7d856fe0cedc8e1aa3c42635b2aa44cc215e198650c9d25c21541401efe1a0842afb8d023e1e535e188703e426ab2014739ffee01da8b1ad005e38e81ff01028d1b870fd06ed4803a4cc307682f6a6011e979f700eddbae7de11e945401e463dcbc7bf8b90bde41a99fb9e05de4025590dc014ab3bf0942bb2ce0bb47082ca10481f9163a6985499ccd192a8677d0ce1d266c6387797bf7976c30829d0923c8800f90d959016f32072864c539ec04c8ae2f41aa8d1f599e203dd912190a86481292e5342089dd407cf70caacada7d426ed906f380407b7fc8d6e5690d21e55f87a132c263d40eba833c1f023047f682374f16284ef39c625a12b2d942962e628e1ce2ef20a752c8d29c61caea0db8ec585a7092630c00554409c61096df430658c8691417e5568e90e41edcf03843e8fff609dcaa38aa7bdf40a65eb8992314fcf6772d20b807f15b70462518a76b76850d082a930dbfa251c04bfbc465703c813c47d71b745e8948be7228da67487945a42073d4e07e808cb68826b4c0b41e6493463429ec06f0ff836c8a88f2f88ad69a082122b4dc229a5fa28ea6079090315972b20e0a4eb195fa1f41d03ae2c9651340bbd716d86510408ec9faa535a290203516b170836be93bc8f06ec00296518c29d081a685cd578423f83e41567154ee65f663c29f00419063cc6f413ece886dc45b16719af170cdbc7bfcabae5e9c0e1ae329a6d287d759e0095ca66a0f8e8b106843d07a70b97d41c956bbc0ccd52750b6d966b94a37854b933e42a6badb1cbc03b50027cb6045d228a15e32f0049d4de44edc22f0049d8b224eae112d0bf91922a1318b788d690370ac4de5a7c6f602c88a2a2d0664e387b8427f4c91eba9b7bff77b104c1a318e9a6acf90cea0e9154d58669fd4db2768f3a79ce4a84702da0028e79837e91e324ee886333b6ebffdaf20909bcaf581f017724ed29b30d94434e00c11a947e8bc5ce5ad709c20a01b1f7a93316cc9de8154bca5015b2c101ca133b580c2dca7d0294500a19bd83da41d16242f3c3c3b0f90c756c03a7d330f10df171493fe7b4805952041be99e7218fe718f41b68c92de20439e33c4027db459ce077b9907fb9020a2e2945f6863710d76bc82446cf47ffc60ee9b2efdf400e944542ecc7f0b7a0936091104c21bf815cb18b84e42b84fed0e259242ccb6e4b7b1073f2434768115b3ce7240d9131bf853678014953ec7c051d070458950f118184ec5601c9e9554c114df62d644b4890eeb9421655d90176e705ddc2561115419830f46203bad3ac41536ca26f201bbd0674283750522b48619f63ea06baf555605d835bd04e1c570190d7ba028b53c439f60c6a2b86baa820ffc382a1f7605034d08261aea237902db6d82489fbce13f2f709c8bc20e24ed161313f4327b4b2833ce414e3dd0328e69b3474045640911d4b92166edb1e62c592b284b94232ee2105b2a42ca78463abff0e92ef655c38d5c61364419580215baf114bf9dd1364cd97806bca3163ef09da3b4ab8d443c93d43c66f099c6d306bef09326d2a306ccb7a82cc9a128cd3cc6e05bf7b860ce765823a7c1ffe3d08c330efe13d14302560829416d7e8ca7f0385fe2c39c91072dc433bb88071da257720df788c79b22157650912e01be92364d92f39db64019b970739ec0a16f2f20b581a0573c29d1a0aba1c2a8fd408ba90522b415c377dffd306e7f0e641b19402cee5c8839c960210bdd1837698152568cce603249c1550c0b0a8cd379016ac018b6b64c9be81bcb925604e31350ff91756141391b7f7d0a6226082396797d836f606f2ffad28295c2b095ab725dc9a209cbb834992d8417ed9024079b026295952dc797b0f85bdace2e52a718434c37079c13812697b0f2df515434e3d6f7f0699e85280ab878278824e85501701c94344cf808207751351ac9f27505f6dfb89e2bce0f17ce30823856cdc380ad2cd7a8edac6d09e27f22d079c15a4a0ae985f48b728f02eff2fa443abe77bc8baf80f10508a468fdd41368f80a90ff6d8d1e55be8d853012f29a2d3be854e68159ccb9afc16d2a3156815478980426a234e172cc8e3251216f63bd0f652bffe2069888d089d48aacccf3f6631a64fa1288238cd291a7105d984229d424e1de7896748f5c75940a28853cc387c06452ecf37d80306e8082260aa933de69886dcb115287ab27f86b6edb820498ca8a03be83aaae45b95ad0259bc906bee92222aff0de4dbbfa4b7c2372a5e4223a34168d68904d6a881f7041d7b2b4847c8c313e486126fff1dd7d94fd001a404743d4180f64401978704b9937807de49948055f25c4464a02db504cc5731aafaa10bc812ae2073643428aae33265d76970455731eabd7882ec66917101d115d0824fc82dfa5e09f26c0b18ecdc023d86700542dd41b6480524e2e61148c8cb5c43ce499230d4ab02ed2d35b0cb857407ade01a16b781efa0d3640b591e0ee7d8b32c680baea15731e5e56e8a815b785a82bb3cca8f905bb786cd2fe9b56bde9011d080335ed02808934d5ea0e2f508ede9a56de6da60a1a378122f684eaeb035f02da46cc52960be4990f5fd00f96893187be370071d1ed0fb99b76090490952c7fd60617d90912340235a903871b8369e415960f825f81de4fcc46339ef40bdc59601c6ec07e8c6b2044295d03da484d624dda0e1279081520125f5264723112b86d012daebd003f13d74fc5e932c08394539f00cdd4295806bc22fb17570ffbf41c09b781d7f83711cb2c3d6348a1172dc4166ed9aa61b645a203d68ba711a98f790c52e201d7730901e12ee66f7d27b867470055b6a086c7385e25545b93d9c0b9001be8ed30d1276fabb90b65eb3799cd0205ba1ae2f3062b506bd8a23eca0f80005a2acd14dfc19e404c342e4eea08b8635dba40541f710c849803b9b1f200b63bd59e62b24baeedd2314d9bade2445dcd658b00e085ddaac373976ee79809cf769bd9f8b9c4f08f5a1fdb184c5f7ba7bc86b5482557e71041072139580ae47808f90df4300729a873c769c0ede402baf04af9338211e977b889b699cfe18d181f790de4c59112f3cde4343a68e025b7b4eb0a016e8445b39d168e4081a79860e44e9664d391ec6f70c85e1b0c522c60ec30f1071d96251dab2087921771d8b93601153f4392414e8c9527798f53d742a629bc2c506e8b23023e546e13851dd438ed08ca4545c7163174fcf50884b05e970833c434293918cf23089316b0612d88c70e2b8047c860c858c141808a48f4b10a71ff21eba1ccbc8067d0000e99c8cb20c3d5842965649439a1604bbcd7e867635975abc837c09f8fefe163cfa66b1f3c1c603e444cab01df71e5225597c856e9ed02e2d605cf2fb088511881443f629c1208861f58b10004b6e971e21808fd0d93fc3a37e1ea13357c669148b14bb014949729bc7d87e0299739ebb2674b229414b59c6411f20c322e331726df7f6e7f05c99ebaa1d3a3d649c65941731fa4c1a14b50a10bbef838ea7d9669ec4f9ca2316e819b2ccb34d8269a2476823e1248db07c3a0fd0a6c569c8d0f85b286494d30831fa1f21bdc0e982532c22e61ef24070bae434cf63f773f56778728ed81168ffaf809c26c03374d254605daf4ca08d41edc095710b7aa25ff7e095740bda2c24783cef1674c3c96946d10c0190ac739ab30463d33d7449c5632cc6113a36096abafc8a907f8aa3f1948f2076d52db1fb5dd923148d594367a87df008a9b99c14344962d46704ed7139b9c20cd707c82d9687441408cd126cff7e8284d4699d41c7b30a282055150dfba286aea86ad882aeb304f769429ab585bec14c74e8ce37a7cb92ff3472dfc93d42e6afcb3f70071db22a206cd379fb4790e6cb691a05d8edcc3db419d450ae10bf2750846a58d43bfa049d6072ca639ae38f99dfc0c41180e2e1fa72c31d66cb1b686fafbba89ee462e343f64b0dec0ece7803ed6835b46bfdbc816cbc9c16459c2eb1505150a5e0ef53ef409958e107ef3790cecc57e87e03dde79620599c2e83100f9a86dce479bc763cef7f023980bf457986ce88a2869b2331c0bb4790670212f7edbe035f165690e8d9e5dd1374db5a0116319a9203a44ccaae1709b9c4a2284125c0c29824ae6b847bc838cfd178aa7bc8315f820424c956644e1d0f51ef41f2e8f08e40b847703b62ae38bc47c8bc14608ee1409d57c279b8ecee414152805dc343e11a7996c41e5798cfd0457afee737a8fa79805c0a9eaf3e1ea104a37981dc99bf05b3a89620019006580184f1a499cff349184f9a396342c1055002badf5d42b7d7399e45027258e5058f2f69b1e26cb3c4362ce8cea2cabd6cdf7940ad7e4d32af87eacf20274b68f70bf567e8849bdfaee7ccfd56e909dc2f6b587c8778025560051ac564cdd0603128b6a006762db227e8ed6f0d5bf098a4cb84bab2324091e27a17684604c8642890e7a7efeea04ba9825cd280b89e67417eae82dcc4880043fe647199e413670edd82617eef7b4823142bb7497a0f9927c5ca2756185260c5ca7179740f1da78ad5663dcf5daf50a073630d893e0b81dc2aa835f3f609ba4528419c8bf9198aba41334ebcfd3d508ee33515a9ec09a7c4b96d416649db83c753813be832a9ed805ed11475af8292de408bffb8c687a2020acc15fcee01a41ac39d08d0b9b1e0784c00881a27698ebb0d9ea1a35ec1d1a3c21de44173645b82a74453511ccca181a1a36c0b8baa5e7072d7cc6dd2dd43679a4d1a518e5ee8befd39b4b56f52c4ebfcf6e750b8d726f57c9ef70059e99bd4378217d2399bd4110a07993c9b14bf40834ce44deaf6a0427aca1d3500ed32cecc9090cdb94153c8dc41e35c111e3beef7a0a08a3629beef7b2728e000e8c4f1da093235da5e3cdf3a419e60577c15a4c9afca55e9b2c71ea04bfa1a12cd39f300b9396b40745f863cebd724c15e124366515d4b097ff3f3ee1eba6ebc2605e50be18a71ecb0d0d2bc8ea325f664f31e0a97a88082f9a628503723b4ae6bd80563e82df21be84ea586753d877d03dd405f738abfeb87c20fbf616c8d06f1de432a5d40e1812f90db4f80152c58605904eeb5ed35dfccd734dd3415493396b12bca836b4eb2aca93f65af9dd7402bb005e14b5a7882ca901548b75ac0174add4ebd3029348836d39a38f6b1abf2c993ec06ac07ffea60341e4db39bd121dc602a1a9c6637a3a9b58531b3f730a444a46d2932805c07d62f5bd81e6cf31ddec22d1fac06e5f3d445f44327d10f3bf279982125428b952aa6af96bdad6a79079c44f1263f1fcdeaa267726dfe2f16e2ff55c54963a1488bd5f96872aa55e2ad2a035f881264b95426ac160371f2afeb822674d194f3acab5b9e4ec76a654211a11ec5e56e0f6b22792ecdc0f56c44a1d992b2394be2085c4740e973cbb0db3e95cadcae6aeaa2a3b8a06b0df9ef486deebc20bc004bea6ebf281575ab4ad4ed374deea680288d4eea1f85e4443464f5d5e456a6945a776dc5be9a4d7235bb6606a5d5dddc206fbb11c5e96c9f72cb17f35790fb1fb6eab88c87f8e103571d6ff1698c94033bc1d4e2c827eae6beed08ac3a2e77d7a5ea3842af6bc6a360ce29b93c1f89ff09ca5f609c56e6ee099949ca4f2ca36933aaa63cb6da58514193e39383d1e4747a309a9c1d962a6856ed32e186e765a38cc56d156b780d41c8570ab1ca191dd9c697d756335cca4afd9eb0ebba7aa58cea5989e4a4fccff4b4c41455bfdb896ba3e1200ad50dc3a21ffd211e6ebb1e969bb3d383d1a4dc4b26c7a7cd86d29908ddb927a3703639184dc78707a3e9e4d064933a48b762d5286c7b8c71711deba555011045f4a66451506e280b2b6e6d0bb9ec7fbfc9eeac1bd4ee4071c5c6173f1111196d138f2f26b393700eab366846aede3e29fa54e36bc234341e5d64b5c6a792d87da1e3bd1e2a74c05571e0f60bf4c20e1ecc8372955cfab7ecc29506c29f70f52ae9391969d9766bdd61520a94f7c46485e25696f559d2a50c3c0bfca3b0bbed2a752f3ee46b9bba69a6e08612aadb6487d29a7577fe5a530670ec03e3c5d9d9b1ff8c5cbd7d52f4197a5701f1e822abc3ee2a1674bcd7c37e771510bbce8a58954bff965db8e2af7cb555d273329ebb8ad9bac3a43aee2a8042196c57a92fca54d8f9e26406b81e6db0bbed2a752f3ee46b9bba69a6e08612aadb6487d29a7577fe5a530670ec03d1d9e9743af79e91a3b74f8b3e43ef2a201e5d6475d85dc5828ef77ad8efae0262d75911ab72e9dfb20b57fc95afb64a7a4ec67357315b779854c75d05502883ed2a114997cd6551031a4e67e399db3aad4177db53aa4e7c68d7b474d34b460ca551a7890ea52fabdefcd5a5d4deb59bcc6727b313dfe9383afb846833f44e0261d1414287dd4760647c17c17e771108b7ce7a571147ef861df8e1af68d595d16f229efb87d1d87f421d770f537fecb479a8015aca1d767d7fcad2225890759cdc9e8f2e5efc2064693e39be787130ca499a8b17af8b6dc33cfe869e8f26c7f5edb7f8edbaeeef703c961a361119523000fb2660f94d507d5f3356acc4f5fb9293db3c2409556ecff556242d6292c424af6ffc3c6f6c91bb5a6d27ac3b14f11c53f576ff8ba3f0647c6ab9bc75b307811efaf6d6773b8725deb1c954f77693a383d1647678309a1c9ed617c19e57bb6c5388b873711f3cfa852a1f3f498bafd09b43bd2170056c34416f83e5d64eccad02a4ce4f9226474ba7b874c33a29c503148536bce54c0a6f518358a6f2329696b6ab7f64e5ccdce0bd54d2748caba43620e7c3aba426220c505393714b9e2a2619625c15ae2407354a0172ed8f4d64dc78fc3d38e44d17ed2a18793fe16df2ba8ce8826c92420eb1aa52f108ad6a8f2890f1db250eae0eba5ec43c2f02b6088adb8ceabd5a42526a14be1ead8eb56bf72a64d090afe35abe4ab5bc48d8f5f9681547114db71cd97ea1491267799c57dc5bc5050daad204a3945d73927dd506fe94ff52e4540da36c1776294de5caae423bcdf53d39f121b839dbc5d1e27441fc08bb856e782dc83bc6948031b0023a3952e3f39a3c4aad64cadaea145737bd515649a56f88e7a32f66e3c3f1a1127b0490cd16338385b31c9e92c502c1c5da8bf7c1deaf3fcdc0f505520cdc2e98a316545fa20c18a6e511eab15be496c7007e9396cf0efe51379e04ed1c7ff399518e495b17da9e0381f647847eaa03f0c3ec9316567fcfc0a4e8a1103dbc40fba38cbff369504261ee9b4eaaa90f4c3f81057d3addd4e8ce9396747d5fb85e9357e07b1040dea3dcdbbfe9df728c028674cda2303c9bf4e8a5fa6d77cb0a0ef3f205ea4265ffd0afbe44197ec3c6c29d06d13bd8007e9396a5d63ff2cc93a09d63d03e33ca31e97d58563ec170fb23423fd5b12fcb0a8dc4db3f297a28c4f765597588021cd2b2ea1c7cd84935f581e927b07d0c0bff20c5cebabe2f5cafc92bf03d0820ef51eeedbfb3650586352e16f3d9f1718f5eaadf76b7ace050475fa02e54f60f7fec4b94e1376c2ce46f10bd830de03769596afda32f3d09da390ef333a31c93de8765e51310ba3f22f4531dfbb2acd068d4fd93a287427c5f96558748d8212dabce01b89d54531f987e02dbc7b0f00fd4edacebfbc2f59abc02df8300f21ee5b3fd77b4aca0d0dec5e26476d2e53aa56b90af5777dda80d06fe7640db41d55e04197eab46425f07513848ff5e339685d53f00d98f989d43913ff3c83f107a6f33df8729e5314e274a0c6e4861e1d87ba743770df8beac28ff48f0218da8aef1e75db4510f905e82dac77ef08e53efaad97b82f599b802de7df2f276e4b3cb7bd84e7a642ed0c40cf2de9ef9c330729df93d30f5eac78b635eb1d77adaa6992bb555f5bb1285ed48c264893376f5edc10d15172062da09e3e4c76e93aa53315ad001e253bbc4a6c2bdf9045f56d36c41cd986b2d176d4aaee6a446b4caab27f22bd244e4cd13218bdf04711a89347c6323e96287dcb0e5ff373f8a4f259c35df689f3cb4bb8d655aa952a2513d94ba899f3d32928e8eabe85483d82d874dd991b901a0313b3b9c1f9d213ddaf3c8c6694e0b9fd4aefd4807a491ddff88e0829149d833a1ee6024784f9397846011dfd0a85ce8fa8a161faa48f32a7eb9fcb34d3429a2c145d8fdd8ec58a89ff61a477ba300c5591f43521f88ea0efbc9395bbf6408699b5552cffd2a7d5292bf4abf2b0bd9827eb5398b0e4a7255b359248c14e63b0a0b9c209c02287e01209564bf6d547ff52c44da572abe79bdba5012d222ab07cc335c8ed369134b591ac41125499017a4a0fb4d37dc1470d821d970552105cc372c7d1a5ceee40e33125ec2fd195f7ebcc98b78711bb469f4a56fb63d0a7cff53c3218cfbb099824d6c6a4df741f3056b58e916ad9584b5fa6c9ea9e82b51ef16cc216c766ecb24dc0ce320688bdb4d9343fd708c23165cc5f98678bd45d4b78763bbf2f11cc3910db6794525ca9d0da8751a21695e5cb5efb0e05fa58cf4632b7ad5abaec65cf1144379896f9f08b2e8b6ed3f21b7954fe527e083330d9b84dceae642c9803844ed85ad6cc9d6837260981a132f499ab2e2a581e9ab0683b8d4464d6133e3e55d0da280971a90c429354e315b9bc783027097caaf719ac429d54721f39c259bc289661e729624ddb0259b8275ed77409465e87641543f6a885ec5793c4fa00ed51217d0747171699080fa3cd09a1a24f641042186a8f71af13ed6b47d75b08c847171db2c6479f698374731e84e5e418272f101ea09e894527e1496c5c1c8dd9064196d0e6d2d7d4069b08fa33acd3c86536ebc34ae346414e50405d3838cb38cf2b249ddb6e2bfab01d053d494b21f4dc7e375aef7037d067a29e2759c2e83c5266d8cd4cd3c0e8339fd26a6fce5f8f5e1c168226445d8e667aff4617ac143b3a1422d8c8d6934bf7b73f1262e0c66740186193afeccd0f7c7d0f3050b373990c1c357b3db342ea4a53392d2a42a208e3a30b1dd5fea034e7a3084c5e838ecece558b9f5da224e5b9b13f508f265391a3787cc99d5beb7d1da811be86740d073f9250034be1ee51949f7e3a1808ea4b2610f71a8ad58c46911ae401190bf2932d07cc0672c7e071c7b40b93a29f988d99158b0ca99b3b275f4bc0cb20504e5b3e8369e7651b7455dcb1a22c35fc5f4daaa55fa99729fbc334b75e60613d5b3d8f8787d5c8bf8a5497be6bd35cf34b07ed8720bba07a9f26958189d6df295d9a16c8bba5bcb06a9b2452e185f9f8fda2ad33f7c39198fbf276dc5c877d8b0f5c45cb56e7d27a05844d83c5e62937869ccc0df483e3087759a599d60da26076e33ce6c6b1b0a35f20e7123efb0939147494e9d965cdb684773cd43d85a237c5071e98c83b7e4fef0657084afc0edf71e6782cff2fbd1ca2fcb3a6879a8b1bf92ef25629df14674bc1dfdcf2afef312e9266aef57c3db50e8a0e07b99589fa5f79394de2a20b867f8ce275bf7dcb2064456d1971343f695dfb58b99609ba5d3b85a304b6a03a497ff1110ce197e6aae2f22674d548acd0d64ef5e4df1aaa716adfb9feafdeb37e7052d56940734a16b9a1601290a12ae68545f81cb4daaf8f36d8b82655a5976336a32989ca8395a1ba7809e36735034beb632a3193e984cdef7f8f9d5d2aab4392bcaed21381b47746988adf6d503eb842e0a0ce72a980a615e1d1ce5c9a45ec3d999540deecda2e146f760d1d8c69db117638afafac5826a256dce55e5cb975ea3d9f952af684fb60c37b8075bd085e3bf6e84a860588be845843d5c4a0a6c2ca7c0976fbdd0b0f3ad75537a726eb8e13d383739c558d77cf5c07a1d4751423b4af3511dd88719d2bfe138c636df3d70acee993a73ce07cb1fbe749cb57d7174acdb4edb6da531c6af6767b3c38164afe35ed2c87e171c5c1b4ab7d557affd2e08b88d8eaeaabbb57bbaa0a14902482750191a721a301e0bebb4941e11f0adc8a9f97900ece0b5e6819f74198c36180047bb1d86a35885bedb313442e371a53934976bd2238c965b0c83662f76d74028c7d536c320db87ef351e18eb9526bdf4cc10dcaf7513c27db9c53068f6e27e8d06ca7db5cd30c8f6e17e8d07c67da589cb83a004752a4517a4eb677b4a135faf04e48a6ade671d7b7b92dc105ea8059523a77e44142789c8a53f399e90af9a5f82ad27f4f5c4b3d7ed8b8aba4ff36575030049e981d66775b9e2251d8d474bbc51067d5dfaeb650591c695ec810fdcd48196c301877a993b388afbf894bd5cc93d3cc833dc833cdb258ef1e8f06034793d998a37e9a7e2ef49e760467b27c378a0ab6b92a1c4c4d27f2f69742c92cf12f91d954864dfb3c4bd7af9fba15e833cfea6cd5b0a8e283d159b992fdf75dfbc9af965f48b4ac8efc8179b9fc8d70dfa2b5d197e1da7f1ba7938b68d0d84d33a4080b6d3677bd5a24734039dec4f71007baf6d609f3df9fd210dabbb4eb877ebe2f3beaeabc909ae4527dfb5f709c86efe7ee4debacb7f96d9cf328bcaacf81b4e13b35b94c4d415b270e80c59e897eb64d721111a81a68a9d709e2e04b36ea3dd85604145f1257822348cff01e0911ba2dbbc6a4744976975f45d4cbb625476d0091fc3eb013c2eb0f305a88d6b8993b1df1c1e1e211787d247cd9cdf961daf13805cbcb8780178f6b2384d9b74683d6c5aed459ebc3ec0d756eadddc56d369efdeb538d3215ed258de91433898b6696d6d3a1bbb5f2afb8da7c6fa7a0efb11bc58fee3b619bbb9e978b5ecd5c147f072f9336329f77abdec6468424993b8d4e2adc1739c4003fc66440a12dc046c234a53cf4b054c784cf31fd9b5789e11d0fd02a5f3a8a34615f5cf8bc687d2f1c1a49a49ee571a465dd2db05276b9a8bc2e3849752bae434cf8339e1415ef038a335f1179cd5f5ed95f77f5b3cc675f7251268c3d938bb116d6b643e06242afa4ae37ad8129863efb0cd08a76fce7a36a6fa4eca961fecb4ee87610fe665bcd55fd6b430d3da2812e38378cd9765d988a6c5cb4098400796b7ddd357a3e9d1f70eaad59e115eae32e387a3f1f71078fceb89ded9c9d1f76c4f5e419a9f1aadab3c584228dab06967ca3653dd9d57405552898e2ab71bac85fddb4c4e290b481aafc55ef14af9b95e51afeca2d2029ea34b5238f8eb16a3385dc4695cd011a75794e7d486a186851d09893bf19a2c01b52f1d268c956bac3bf55c65cbedebb79480f7cfa7e46c4e4ed1494355f33d7b37cbbddb7a572ac77af66e963cb5f5ae544ff3ecdd2cfb65eb5dae22e2dbb95c0203d8d6f24b9ad082a5c132694e57ca1e02e4811e9782323929a5e55052d0d0390b686a6c3ee608961dc06faf0076cdefec1c852034b36b820d7d2623df2b21c774c88353ea1813dcf1dd8768ba00277176dea6e298b31bbdd370c3f3728e115d904d52c81e2f79ebd3a09a29491a7c3206d534490aca535250557ebed2f47f0f68d098bef80089d01ad4f4ca29edcf4a1d8456d0ead49b227f5e9c88635f657359ae2bf3649b9857b719a48c939323fdbd546b6bd9922429e71d9b50bc77aa8ae9d6954e7e226355331e682c9fa59bd60dde4b4ee6f3385d2a136c7f34faaa366ca52282e49c3c527a495911902461d734b27454fd196c5291a4bfe9b0b5f4b4b4d975eb8293b0bd02a87f6bf62bf90140cd5df020260f736c8801945a4b1e5c5186723081eba80062eba793016bc9af37ccf2d27a80ec247f9b08e9ac318bfc4d20a433a586ae97c5837426978df3aaf155f7b52269942057119eb9fe9b6641d906ca7bff7ad2bb8e807fdf40a6a2aa8c067c109054477520adb6a703b1bacac557ff5585ad1e0873e8257c9c3c7df5ea605430f8ebab57067e3506fa89b860ed60b6712c5fea215aa93e9d8ea7c7d8ad85e4e29195894519f4bc8a1cb0fc876f87fa2e226fa7c7dace6951ccd59a90b7a6efd2cad02d46dbd2a1f3c5647164278f72cda17c12bf404920769862d964ea2d49c3770ea8d4533aa1a796850d5b3b0de91abbc34a3ccd30310c38db91033c67602e2de38861267d936764b38a2edcb9e29dc490a406a20bd44ea91569a7a2a3675b5b5901b8cf6627c814a5cb072979e767c5832a1e855ad34f7417924f27c6c9c42a019f1528aeea3ae1654defd29df3feddf63e9daa45ee3c8d745fd5bfad546875b0600734171a28fdba06961d5ae5a6ae95b6779b7e7cf49e8cfaf191a7556f1605b4f0c85644d96ec0591a199aa8272a1f5e688cd8af41c9d27966c7bd55f390dd9a749a8ea7f3d9ccd3aab59150b36f3122aa96ee6076edd1c9c1e8e4e860747ae669d4fa1721724ddab4367de66f48946171aa533af1c1a9faa9caba1de4225cb0be17abff21526ffbfadbca5679c1d925052f2a2d3838941068632365317d172424da67b393c329dc9973db556f8cbe380a4fc6a7f6a2a91d36e4ba27ab674efe49aa74aba4ed39d5b27befeabcf9a4b3eda971de5b5ba1f3ce6523fd1f9fb07c839ca5c1ae1ef7a1258aaca50e24b5af21f4d894178417d6633e4d23e586ed1471006ebb535440c1b22a3f42bbce14cf6965ea192dd0415aacb0555d8e2b2a7562c36a0d9ca3fa6817a81b80775284bbf853a4930d4408d6749cdd203967f546f6bc97165ff6f6796a76d3de9735a5169ab21a05abaaf7892e5b0fb0f8492e713b852442fcd974a808507bf92a5dd11eea37b413fd4d2bd4abe36ad0de18b833b497b7d0926fea1e71bd84438fb1bb76e12b4aa57c1c8cd01462729b0e18c8fb7caf29786dd555a6b15328ed1eb0c25c83352b58d1745e409246d390c0ae4a4045d975bc2e9a4c55a0b31d87ef2b700e59eb2166a0c26f56aa4be5cfd4efb0d2f7dd8c8038b7ac684f066df08e190a86e41e6d9f34810948db448972d897bdb7d931de5ff31d0866fbb427221fd1b408f21d5e51c946d6c75adf9a197547a1adbcca5ff61540ac369da716720f34cd48b1da3e0f0ce0275f8e43b32b179aaa3da08f50f07775c80e2292afd86291d3a26720f82efd34077d2cf0bdeebf34a8429295d2bc492327f5a4c8237410355ac8b29a81404570e91f41e1879570f78294304b99806a9200f823da1e70f4dfe0a3292e897e8e992efc40e3ad2a58f137148f8ee007c45b999d29e1e7486740bc95d999126d8e7406c45b999dc9c1e5585f46bc5541e639708cd855b1a323d4225990b954315dd6daefbd2c1db00709030ddc82b65f941da8aab129be759a7df32f34ea518fbc6d8f96e3d144af4be03de26f121e933a129646bf74f1a2e01b7af1e247033bbd2767a5f22cd579e5235635a83fba419c4671480ac645edfbac9177e59371daf4acac68a1bbff94b0e32a3a4751a7c63c928d653ed76721a30485b282f6534774acac81cabfd716ff067e0296124d23702135bf9bcba8f962091d6f536c49ac93e470bb386acf4a5e0479719b406f6b1b0a7e3dfa523c233b4f485e04e12a4ea2570a53b8a50a48b3708db8642187f4a608b65f6892c4591e57cf9aa1a2a4e277c62321e0aa6edb9931165a42818952b2b556e378f9addad78540c0a7eccdd2f36893f98858dfa40a224634645cb750ec39526075f11735653bfc1399007fc4a26258e9dfc62fadebdfdd03da9c2a5e537af68ba336b06a2602abbe988c8fe76466d0c6d2cc0fa58396396221da88f34a799bd1881934901cdf261e8ad4018bb0233a217c4925bd5cc129d2dd3a5065513e3655b245a343da5b34ada65aa90d9d45d66c29b0847bbe9e97773ebc36c2f8d5815cb0c1ace2e26c0b1d252b8a1e54668dbbb8d90e0052263001ebddb057e6b04fae1abf33354427b3cb2278be2618f00a66ab67da2dc65c440682cd01d872d895d9dfee25c68fe051b5550c3ed7b66e15df27bca397e1ae6be6c353b2588c9d0abc6ed6150f23b8a29752770cae0b1f203e660f95757993913482a2bf2ca5f3d5e2f95aba1da2bbf69a0e9b6b42c80aafbf81c6b8f4cdd8909b93f18af1f81b96163b9d8d79fda4d5f6fbe09e5934bb8872baf40e18e97a22954364a4bbd1b6da1f64fa96ed942a8017fae56e732da55ee21e6bc6b0f4ea0bb9da2dc8b2f5ec70e86929f0101580c1439860ffa96e3e1a9d8a7fab89c48091f1802770e8137de4f240665b9f63cd932fa4ea8a361fc48f4b2e8251d496295d12a365bee2717aa9276b1218542aa3cdd7e7d2141226131d93890d93898989ae5ff46c8e0a79d4e3a971b05a9ed37556dcc25d48875da8339d2260b62ad01f72fc4a9c3bdb5c048de55df9fbb77c018c72c39eaee44b8810ec22d3566483fda9f6f3367ac5b2a3d89fbc4ad1e9dac1d6d655e7158c427bac65c37c38b5db0f1ecb1a47c763811bf8d82243a59516872c85c6df7e0df282a411e16608afdaac3accb5b768a52dcccbb3f8af95185ad6b9343a3aa66324a088494342d1f640396faaa2276d48333980c770afe8ee5f63ef9942475553396c31011484722cfe12c65b07d36665d1527a354705119bbe52d09134970531b01b03bd8e1a70dbc95629c17deb4a4b534e9329a89d305bc09e34607b7da5581b5639547bdbc9d8b077e3a5b3d45d03b13fece3e02609829f9712531134ac14791c4b1286ed756027e6d4bdedca1c4b373ecc393a184d8e6607a3b363376f2cc338796343cf87372a7e286b2c292db697ab9d5853f7b62b6b2cdd78b046bcef9dccc607a3c3999b3796719cbcb1e1e7c11b1d419439708a90ed657527de549dedca1ab8172fce9c1d8c8e8eaaff7331061ec5c9170b725e6c51b083b9b23dee0c719f281fa581c19afa37a009a6b4c0cc314b43d334331fb568d095932a4c489e7ff94b172f24aa5fbcf8d12b5c1f89124c256527c7725238fb81a1d3d8bd45ba57ef3d9c0733509a7a8d6e5f02fd26d3c31f71e8383c7590173f4ff13e4561a071fa9c426743d0d12d1f43cdb0cfc1761851711c813bf464d594bb77686ad4da33625ff91ec717d4e49e1c696a14b8e9750db8abeedccf69670a1b07fe633ad5e49e4e41b3ae88bbb77708c877c7c7614d9135233dad0b6357e19d6ac28bdf680d2ec6bb74de43a0672e8fe32ea2bdd35c7a08f9a1b7903b922f4287555da98da3d3f111669702e30da9d406f312f8ebb4ce1e830e6877f71ef8abb486db9d549a1237de51a599b0a64a33e3cdbd964b0fc9d535da2c0ac3b349df91f7a3d10693e63e0acd5bae779a4a7709f7d7678efcafa083475768f3c5c90c3dec02030ea9d086f3adf96bb4ce7eb60e78f7f0b9f9abb486e19d549af27aa5a34a33614d9566be7af15a307d8457d7698bc57c76ecb8da1d508c77e9bc8740f7516adea2bdd35c7a08b9bf56c3135143ee515da785d3d978e66ba4ede887f6eeb1bb4fda5fa175f54ffb23dddd57edafcd6a46775266f2ebb98ebacc00055499f1e8ce6b9974975853919dcc4e663d07de8f1e1b4a8afb68315f79de6522dd25db546101a76b76a5d77bdde112c6a820a1a4fe98aaa93fea0085e038338ab66859215a48337e53bac6331234cb0f8de4204a201c62ec7ce5d3104b962069ba7a1a5739de1b7c5504776ea9820a3756024f805724526e9f0559c7c9edf9e8e2c50f4296e693e38b1707a39ca47990531e2fc0b726ed6fd7edab94b1d4b079e62605feb26f0296df04d5f73563c54a907cc9c9ad28e5aec4d6eaad485ac4248949debe3e6a8bffbe7bfc03b5feaf1a01a388b1265c93b1295dad2c1c5964c135d20e949f8e71caabe1541e94d744234eb3cd9e5e697ee888f05dde49cb6aa15c8fca438ff6e122160117286f4b5489398202e32c5aa462d0078f396ef1507f08ae48b269aa847ea828e41a370db3d2e6319fba9d807bca0994646aaa05c98377f4f0d832553eed65d5c054cf7edba7c0d06fc3a7cb6940ca4fdbb5cb6911ae24c09c260bf57799e14756867760e4c7b2fc6cd889df3ffc73000c4b206ed68fe42ae38e3a31ce1ab2eb18ba63f02d8ac222e66d5fb5555e7e5dae585e281f7f026f147dc454b3879ddda88902ea853de7945c06d78c4738b0744e79ef2f30645424ba76783fa76726507e6a929eda23d9bdd0d1f37bdb5b56c73c25c5b7a3a89ed65795bbda22e94a86b42655c5cc9960111cc27817303d04de05b43f4aef026cba57b29f7fe234b70e6dc4dff6625df6d240162d6366ae317bc7558b32462f75021d2730cb66328618695bfa7aefc6e231b367f87463910dcf372347d98d3e0d6303c7e453c7069477774251b53fffaa057500c741fdd3ac4d13ad8723f85546413382ef692ca020a011d8ac78a1ecb6b7aeeb6cb092386bafda7cc694e4d631a021e19ee18f369d7ebe7d4d5dfe982524a42b96446d19110f44904e767a878f202d9e78ef8230d4c19e90ed89e2c088997e58138bdd3445df058de4b3f75cf7689afc8f0e4b4b3c81d6a5cc4e63d11b1ee1ddaa514099bde0e19d4b5d72dfea328b2753f25d9ec30cb09f6ea1f7db7a3e2b798766645fb9e506721e9a0925e03b8bea1851ae11e9c2e27341128b1562989540728ca3f1b6bc7baca41022496208d1f6af40389e1a0daf7d235946899696054a35f51b2f8343340b7adbc08588b6e380f8803b0e3c2a921e0bc98715649c659417d2f2b225b6ead7b44b935e79af6678deabd92e79af8ecafdee75a9dfc6afc51babd79349e7e457f64ea07951a1b8c6c6849adf5d52d5261a2c7fc2655d6ef90104df1f5308e0f392f8bc243c96c44d5c80464c7be71c2745692dce930d6f4442ffcdd17f005ed18fedc34cda6564f91995c97a8403ad6fbb2cf507e8d8101ce18309ea5e7216ee433c87d66a9ee2ba2fedff5d55aa135c56279f90ac1e4133913e19e730c9f31b94767be67757ea9118ba43e04d858a145ca97a7d277030d9d875c3df2e9188f0b6c098e42432d7c71fb72a8748ed51957a4ae4ab859206ffec2e6101607b1bdc24ed56c21bf532d227a636b4f707e50105927ea09d5867d7b523f9aa6fd4adbd7163e50b68862d7b0f09d4c3b6710473f8788d657a920274c8a30e42208fe31118ac0f35397aa53b815401d879f23e41be3a56b37d23754e16059446c7071d5099f8bd7bf6cc3ca6f7ea787ae899324befd5f1fac733db93de2b1e88ef99a648987e6b9ae76409dc5df48b9b6837eec944bb3816a3852c2d488cd66ad36512f2e65adb94dff58f1f5b159fa1f2152fe29b3a005a3169e430f56f82388d4a1e1d56ff060b8248011ac2233db579518d687495a5d06f41c16a9b1028b66a94a4f1e8af8235a5b50b6339bda23ca70ece0672338f26db72a8174a4af98e132cd9674e6fe002501e780899b222d2af7c8e1d8586af76e7a0480863f118be3ad84bafaa23b2c710092557b4efb9fad871ac3e367daa2c2962e008f6ddbf370228299e91bc9c18146c7f072827fe91b1ac549301e19c5dd7a199700d8926fc6daa15009eea1953adddab0f439a13eba15660ed50af91ad27cda5c5aa54d3095d97b601290a12ae68548ba6dca4207c49a516a5766e02fb65e9511e63899dfcc28c2d3576f821d1f8daca8cf6a9d7e9fb1ebead986a2f5f1b9c6dcbd7dabf7a605d6e0318ce957a46785727eff5e451afe1ec3caa06f7e5d070837b70c8f4926e3f78e05ab00c43b5de0d5c6bca972dbd46b3b3655b57fdbd8eedc11574d9f8af1a212918d6c2ba42b8d344014fa050d1c0976dbdd0b0b3ad79a1e8c9b8e146f760dce414e35cf3d503ebaa507547593eaaaba1386e288ec6df432f28c4770f1cab635867c6f960f9c3972892f5e7dd976da7adb6d217e3d7d3e9e454af71d557f83aee248dec7742c2b5a1745b7ef5e2ef8481dbe8e8aabb5bb3a7131e9a34809402f5a1bd5c7b294125982aabe6e701b083d79b077e684979a9c10038da0d311c45018760587df7569c4373b9263dc268b9c53068f662770d84725c6d330cb27df85ee381b15e69d24bd10cc1fd5a3921dc975b0c83662feed768a0dc57db0c836c1feed77860dc579ab83c0875da0bf37aa5b98fbd409fbaf87a25204f5213b17feced08724378a1165461d24a2ea3c978723c214ddc541248b956269ebd6e1f50d77d9a37da0d0024a5075a9f5518a59774340ea9f1eb538bab4a7cb121d238173df0819b3ad042fc6706dce7789e8f2d9ec72bf6ac95a79bd853a37573aecafdf79241c7d2f82c87df0d3974ef71dbbbe571b99bc05e76f1b72d646b970b924f36680ba111486c3be13ccd0f3aa1a7540dbf8022c43054143bc413a1616c1780476e886ef3aa8d982ed3ea68f74cbb625476d0091fc362aa996e1917aa85e01624cf381ebf612c789ba517800e9584e76ebc3d2385fc86b1e06de657073a54b21abbf1f68c45f21bc682b7994419e850ce60ea81b65fb493d72836ac8d7ca9757f46c5f7ea1967e3ad8b5851d068d45c2734195d5634c994ce38a56694a5f2a391ff55fd2a654f41629a151860c5e0237b036cab9142017b5a949e177ef5caf0c70f0530f05342ffb4783f2ffcea15e08f1f0a60e0a704116a91835ef855a2ee8f1ed6dec04e0e46d4221035e48294453448e22602a68978805225d6d16c712ee5b1d4e2cfca1e3963851ea5a156f237c22385219a114e5335dd634417649314cef706ed446a95148ca10c5e7ae21c036a02414d75c7be013685c00ef5045906d80c023b3e73811d426067bae96d801d416093899e93c8803b06e166facda7017702c21debf7b506dc290877aa07d818706720efc67a822b93e7a0a84c8d2c4b26202c2d474e719980f2323d710acc049498e999536426a0cccc8ca8281310949ad9a1536a26a0d8cc8e9d623301e56676e6949b0928388746649609084acee1cc29395350720e8f5d92b3d75c19bb8532cb85582fa4f8365b425d971cf42906a91ddeb65d124eb7319feacf81c84f526d605aa6337b5fa06d66f17b3511494864c5f61b9ac3fc444b23b2f5c100ceaed1743c5ee71d7d45c3f5f39ee101a79ce7c07626434fc5cc22bbd2011b931134179a7b5ce0c6470502459b65341d3a580b1856313c559f8d9ccdfde1f7d56ceedbaeb62fe92c661f9ef5776b8b9239ad8f7ae0e30891927ffb8526499ce571e578bd5ec5050df28c84c2386dd3215f331ed59954e53724bbbfad8167da74bcc9290f729ad0b090b35cadd937d64fb9e58bf92b42bc3c23a9b6cbc46912db80721ab292edb732eda53728479aca7affd3d231541c04255fb3adf3ce13aa8afef948f762880895be69d2d162a685b9d336f9ec2f2c396c2f3a250bf34409dcaf5110e931eec048ca42510a1b8dda1b2f5f1a5abc23bdc680c9d20549c835b5634f903f6bd72e012718e008dc6d207de7d5f62eff47e7c3a2210c0010193c8f6b0f1b1aafb2aff66d488eed335218dce9e8f43294f6b330bfffe517a39c6d7848ff24c9b2385dfed93ffdebbf344f3634e3715abc0ef3fcf59a64a32fbf7f91be3878f1fd2f7fa104fa3596dd560144d3f1e424c838cdcb01ff1449485ac47cf46768b84a59c29631cd0f463f48c3d7a35f4d922a2a281f95adf9158d5e5fa4bf1e8734cd6934daa411e5a3624547bf9a91704547f59783d19fa33c8f593a9abe1ebf2ec72e31f995badc4c482b17b7547c46aafaf3d585565b46b265a4ea32d2af390fcf373c7979f1e2f5ebefbf7efd7d4e2bd2e4df2f3957ff37981cbfa6acf8e52f62ba886f2e5ebc1a95e623295e5ebca0eb398d221a0923b4b8cde8c58b570723af1eafd962a1f455ffe0095e142a74c137b446a066b49b66d3f1fe68361d0f4db3e978279a4dc74e9ae14b432ce65c5a201fe3f21819bc1e610b6404737ba4b1db4f243fe93562271cb84a8623dca7b8503a2f958bf4c58ffec2ff0f0000ffffdbf4b1dc31b90a00", + "cceb3a5f217a341fb60647bc68285d62": "1f8b08000000000000ff9c93d18eb3201085effb14c4ebbf546919ebff3688438a2dd808dddd64d37df68d86eea2c5c6ec25c3f9cecc1ce5734348a6f4055df69f0c07423223b4a5d20d956ce7bcf05aeea473bbb15e15288b1a81cad3cd9e47d9bf086b27541b200084bada17016ae70c35e2ba8a1b8581ed6fd66b835fe9be935bc9f9a1d8038f3acfe8c4044b0ef10c513a8c1e0f25a2e42c8a6696605233b56a0755ae0a0e4ce16f5ed3d1528a3536892d9754c14edb063fe8c99bcbc845c720b8f628853ce1d608ab153a4f73c5953a5625af392f5593abbc3e1ef6008255aa2e153ed6f91bf95813fb372d71fbdef567ec7f127aaaaefb4ef35c5eea9e2d171e46caf595746a6cb0d12204ee66ff52b8939d755b96530480062a46b1f3d98690fbe6fe1d0000ffffe8aa4d67d8030000", + "e5d9372aa867fa2ec35931b4116336d7": "1f8b08000000000000ff7493716fdb3610c5ffd7a7b819436d670e99b54dd334f080a2dbbaa05991da298c2149038a3c4a9c299ec6a3e21a6dbffb405949b76ef9cb30f9eec77b774f726faf803d58a1d7d42024822d75115614d7257ddc6f6983110d30c65ba7113614d718bf2ba0affa83bab1f710104dae8c58394e1821d58ec13a8fe0c28eb7c11254db820a261f00d7d4799319c6b12a3dc26f1717e7a095ae5da8c0d23f21894864e91211ea945a7e216545242a2f43fdae7edd0eed5cd408113901594835822683e018549768bfc28051253402ce3d2a463014c609bad6a8845f5fdbf5145127bf3d011738a1323368d41a41d72a54c8df4e09cace79039a8275551755721432269b8db81fbb61083b591b4923f3438e1eabc5cf5c17b0278bc2352dc5b4d4d1b58927a33b25278aaa425111551e55eb58686ae466d899364146ec3db27c2a9e881fefaf7823fee4d1f4e45b740130926dc43c7fdc6f5470163989037b68edf3e3a3c3f2f0f0c89a037b503e7ffae4d933f5f8d896471633acc834466f8532e6975b0ce92c8720609c8c1b6456158e6730c17c3385f94ff0a900707638114625058f1ec1d77f226d5b84f97c0ee3e59bd3f39bd5cbd38bd3b7afc7d3be12a07f8bd7ae5d29975ca826d39302e04bf125373218159a220aed1d86c4afbc724d561543d8734e06e17225ee6cbf0c66415dc2c9141a4c3519406b9dce08bfed93893cac945b0a26c720d322fed52127ee43fb7e71c639f4397ef7637c60d3cbe3770b55f69bee3ddddcdcb5f2fb500973b8bc169a825669f290e6f367b8bc9e9edc5b1f042e54ffb5f60063069ffe35bd485d9eacb8fba0dfaa5b57f5b1de61fee7a90ad3ab8c7c83db5f29be5f9c4d46d205831f459d1a3f9acefaed1500a5577aed1da71770293f5cc91b399357f2f2c395bcfee14aec7ebf97d7b37e9f7f070000ffff8f71eb629e040000", "e9d4691e17a14e58bb594f4374091250": "1f8b08000000000000ff94597b731ab716ff2aeafe51c354c58f266d062e73472c9810ea388e93a629783ccb224066d16e76851daee3fbd9ef9ca3c76a619df6fe6383749ebff3d091780cee795e885406ed5f6850a4db3ce645d09e04add6f1039f6551bc3e9ea5a92a541e65c10d0d64b4d10466f74d91ca2c8c926416c5eb8006f34845010d36e97c9bf0d13ca041bcdacab5ffa9c0fd9c5f200d7ce35f79bc55de82086890f3224deef16bc2e552ad605d162a4a123e0f41146c65db02362e67773c56f03d4f55aa76190f68b08a8acb07f92e4f339eab1d18102589330eb9a39c4b853e9c6f65ac00081a142bb1005973bee079cee7a55d5196252868c5e375ff603be7c53639e40c68b0d8260b01860734b843820c2129b244c440707b6b00bdcdf997adc8f9ed2d6cfb3e977a4e11b32ccd55e1dc0198e00b58070a021dab80064bae14cf031aa4da3221b9870997db0dcfa3596248c18d8006d7bbcd2c05812abd56b990cb0fd132a0c17d946c815069bdda725e383f251814e73c52f06dcd41c34c48b4062cf0c2640dc800128800cbf308161e849ca70f409dcc0f428370ddd06013659990cb226807110b19bd668c313a608c8574c8ae181db177f0e782856675c0de9acfaff12f1db2908df0e39b72618c1f7fb70b2376a13f5a199aecaaef091ad34bc6d2de391db1f065ef8d473a449143fcfc0eb68df8211d33c6fa667d0842476cc02efd85011bc02a908d9165c0427609aa58483fe25f8e7f61f70f63ce98852cc6cf73943234eb23360661e78c23f9aa47874e5f48af58688cf988f2ffa04376c9e8257bcd3ee1f27be4baa617ceea99b57ac838da6e0230d256f7b5e9211abd70088a9e06f233fefd0394bd40dc18a3211bfe16a28df87dd9f322f317e2287a1699d08662c0d8dac83c376e5f3276d65bf6acd01085b24ae407280e97b56dcb1e3a78aee503340ca3a5d3e00a41c98c4860e5b87ee1097eabed19b321436a4069a4555cd9ac19838c81318b7de9d9f521fbabfc88385ee3f7d39e5e01a35e68ea973d6dfae5de1263af7af40a88f77d35dba8b2cced902dc312cc737aa563f71124bf85f42853284268d67aa98f94a1c9cb2b0c10d8387695872287264b80646c62a8934df670fbb301d6423734e1d38e2306bf1b8cade090fde9e5ce7b17811070023c7eed61417cf0f868c8d84938a29fcb0a1ea1cd63363e0dffb4b1773a759ed12f3df45b97177497243cd4109952fc6cf43cf443ac0ffa890dbef6650d078d19137d8e1b74ccaeeefa52eb4e3d13fa2e430710f9beb65bc7f5bc8490b14d0f9d37e4c87f69684286311be870ac7bb87c85ede093a57bade940acee81f7dae207fd8f5ee8cc3b675f7b3e4c9788d07dc5bb8f5afb27c676e18712eb31fdc8c2ff84ce1fc6a8e8392fd09e0bb4f3adef96ce80d8774b77962163cbd7a8f66d597d5f7abaff997e3a62613e323040efbed732cf3c7c55af2cfe0b937fc02c7af413ac7f42721071e7b8c25f609309ed3536883bf8dc37497aed5b3b62b64be8f3c3cf5ab4c02089c552f451e46fe1337d7d17bab41daafe6f9af355cf6a1af8f56e0217311b6280db764a0dfa4a9f25675af8d858e9edfc895971d647b1433c183050f77dd76f97a6dfa67a29410fb6a68bbfd378ebad0c0372af6b4e27c98b10fbe2d710462291f0a01d142a52223ebe2b8ef3ad5462c3ffbb89846cc52f5fbe38fde5d797ad3b9828cc601aa65271a960fc2453757c4ccc6c4422f2e6faf2ed3b129b41942cd29ce0b84992349a0bb99c4a32550b334890bae1b501a36b933c22e554dd4746c2685e902e81cdc9c94dc7dbf566584b705a21a88eb596e60c680cd5f13189e67332f5e7e16940544ad48a1333a7123d35d19247adb8248b245a12707eea06eb6940a2023de67312c93959889c3b502aa6ebf19c5a172911a44b4e28b15337e99289736691e68d8e20ff7280b4f444de21e2a79f4ac8a6caec93aea39c082765aac4a2b137c14f0cdd8d2f65aaac152d18ef9fe5999cdc344be14fa59a67e8c1434bffe4b966d12042fa41f54d128b86be62b4dc05a355bd5eb400e686c74e1dcacdaa7326ac13bb0d76797ce5faa16ff6bf58346aae2e4d52b3a8d3ba4cb987954878c301ac03e91be8b6f01ad468369a1e66d5bce552e53b97a68b3cddd8e4d3b5a752626f4224118532dc7bf72a0c720baf568dbd2dba5f43dfbe91c94db35240f956965aac2d0f5021501c684841721ecd778627e76a9b4b527787b3be3e75aafda29eb6d22bf4ddcfaf1858c5aaea10a89d7daf9f2921e0aa9242e3a8f2568a0a18dcf5927489cab7bcdcb586dc912e39ed90bb03439c1d77553bac25199673956772e7e9af2d6be4bb213f74bbe4a459316f112505afadda45c3d1550dd9474e5f9a1be2e79f29396d76aa7d639b28d22535d7e946cd5aab38f4adb6a93c5573c70fb6ad8ae363f2c1356d1247f18ae33aa6c1de1d9e74c9e353a764d41d1eeaa55069cefd166ece2f93c896612bf545deb55a225365d82891db24711b59cef5fa7196f30557f18acfad987779ba110577b4461925279525c350f144071a1c31d09cb6c9892b1e47bf173b7bacf8889968105b6dd5d2ab8ba46baca0bcec04215429110b1b035140472f2351cdd483765b6d8218e7e7895be6fd65ff3c0133f0f9834444f2076b4a0342996d15118a0869ce77b4ac79702c93ee77f47a804f95689727b95b4cdabac6ca15636a9b3cba74ae74d081eeb1decc518d45cd91654f3bec2046be3df0ecff72bd2686d51e7e0eb38ca7de4d3115fdada46c6f25ef7b1d2ae0360a49baf084552bb76a9a57c1362361a7e035f317f11a88d9b9bdd5d1abeb2c1b3cd591acf31de95e7ad649896b92c113a79b00d12f7c2e6838fdaea27c93ca9dc5e4590dd893edace02226a30da7466e591762d1f8a14e465a65accc3b666caabe3bee2b7a24e533641b438ccadbd6b3a766b5ce9e0e31289f21492affd6ebbcc6eb8a9f30e1a50ba29f41f11c3b723df788fcf8a3d96979cfa3ff87d787cc80013eaeb6c99176e3e8c0ebbf157b548270e409043c9d301fbad876aa45b4e6188a228b626e12de526dd239273f92d3b696076d35722d764e5dff16fb1c676db2e1f992e320665e7c05c7f234926c2794c51eeb8b363105ab29cd3c87631c9145bd85afbe9db6c98cafa27b4e12b17627cbb359a0fc2c4045d8bb782513acfb4d634afd70817b2e5e25dbab66c5118fc052bc68423a997c332a20ddb48b986b7ad57e689551ae170e478984a3d6a48b0e7303a60267616d513464e108ea534d4296cdf922da26eaa8be6e4dd2699b9f6a20393bf0f7872e392ab0128e9ac44eac6bbe83e35b035b87796b8ee6acf98e96515cf35d933c566099acf9eea6439e5a3321e7880232359d698658168715b2e4aaafbd1d6091557b6c9c6eb24889994884da9107a15644a6f267db7a4dfb7f36fda49f7e1b1350ff4e61ba9f3d480037737e79ddeedfe5ac6f6d2bad6e786068d6890b1f6042dab5dc5ab476b93894d1214fdfcba379431b4ec95174e44e913db4f5ea21e2ffe49afd2ca2a98fa87936b19dc7cf8b7f74973fe0d76e5b434bfdd9769688f8368bd4eaf6f659db32d225d3e0781af8e371f9c317e912fdc3d7645af96d751adc7c6f0b2fc41d276fff2733d2f554e88b365641b968e2b247052a6bdec8f669abe2f1c7397b85aeb9017ba495cb6fed6b5c493c11f64606f26a9e3848f7c0ef8e3fd2d5be10e06b45aa563cf7af56cf3e0a0437f615f27d9aaaa01d044fff0b0000ffffce36670a3c1f0000", - "f0cfab5b672aa6ad7204e1e04d8a1c0d": "1f8b08000000000000ffb4bd697723b9b220f65bccb9dec55bafaafb76f77df6b187a2a8126f51242f495575bf193b0f980992282513d90052127b6c9ff1beeffbbeeffbbe7b3e3ce98ff897f820160049891255d5fe2011115812086c814044e0af746ea4b14a579d3ffde6a463756372693b7ffa973abffded9b4a1732dbeaa229a57d63a4c8dd1b5515f2eeb79f6de7e45102674bb5c4ffbf95f6bba713fdc565d9c8daa8ca7db66f726de41b9f49daed9b5c6fb7ba7a9397c25a690fe5164b59be314de5d456bed9c8b296c642765baa5c160bdd3346ec5e9d5bf85c9f94db5ce8f20b3eae9c3462594afafc486d957b752195ae8654ce4cda03f9813c95d84afb5c57bc48e567f28a5a97a5ee364e95ca296921ebb2a98a52fe56daed177ed0177790ae2fe4ad8dae5fdf2740a9be28cbfe46e6d74f675f1b516f7e2ebb4eacdf58933f4fd2835f7262bd96c5426eeb52383982c1501e9a235d55dd08a344e5a099017a8eb64f7ed94f13e3161b658795724a94ea17593c5d024cddaed18d93a65be82dd47a1ff9859d238dd1e6989e55b9ae6cc8bd969534c2c902f0f39bf554b8cd970c905a57b272583cfc3b8a88465205b4f9c24ecf8d144ef6fd207b3aef2fb2eaeaa595e6c6cfe8ae3b6e22d1ec2b55757d54fa5217c26ee8e74be797b6caa94394c371526fb4d3ddb5284b6976ed047e7a76ddae7e69493a48cab57453a39df6654c56af9f7ebb5aead767abb5b56a59cabeaeac334deeb49949d798e306506bebf9bafaab6a238d725fba3a5ecbdd9766154beb8cc8ddb431b2cf53e9b951e0d78ed7f7712157aa9253a36b69dc81bd19077057da3799d1faf59ba7b0bb2a5fe8f73cab5f5d80bc73b22abe6605da68e7fb827ea7c25879a01ab4edbc2945b56ec45abeb95156f94a6f9f4cfed513ec155b85b8531a57aa2fddb1991ccbc6b9648c9d02f8f5e5e1cf3115b3b294b9db1ff3a5b26ee8e4d65e1d6e1f0e76b5156b69bfa42b9caa76c93e5f28ebf670afdeedd38562a4b595876a6e757923bbb5701bcf253e57cb1b5136b22b7f6e44f95cb28db24e9b1dd480c24f27bc95cb5ae4d76f968d2a0b55bd59977a79880f7a99ad28e58d38bc297dc1847cbaa09f1b69765deb8caad65fcc513ffd417ba644a9d7cf0d31daed375a5ffb2e7e7ece3d3d2e9e5bb69245d5e3fd88ffe279f3c2b9ecc5fc5f775a712f6c4c3457e100ba91db03b343d41ba30be5e49b4a77d5b6d6c68943e5bebc79966a5d6d5fa817b2d78ff8eda7b31452d65b69d612578c43c44e7ad52f667d916f64bf94e240a931b9fcf9c50285b53a1ffaae3ac4c83cf5f533594a7780e64fa57f2f0f10eda9c417e21574981f51f28813bf98d23a915f1f455a4c7a241d20ed31348084c7b47fbedb2ef581b99d245b4b3713b70b71604d4a52eae56799bb859ec3c2f862f2a5b0be538f2859d90914fd72baf3a6ca0f6f00c9c7fde4fc833d134ebc9854d94b61af0ff13e4942a7e720093baae5433b164eddbc9c782ddd47bfe91e93f0c8222f45fdf2da0f45f5e1c0fa62e28db09be386bc4f79e488f7498f19f03edd31e3dda73b66aa5f1c3c142789b6a23e7e0dcd94fd2077fe447f4c275e8afaa871c95538929c9cfc189272da63c8ca698f21ed25a53d6e113ba6c4b94ff8f20e658cd80d44fe72bfbef2d8e96772cf5ab5ae8e9ba3e21569735def8e5bf7a01a0bb57d79f3e79574a4ae8f5da67a66dd788ee588b25f95f4a0c4bd356f868739c0b4b891acd6eee5dec5162d76b52c8eab80cf70558943a797b40aaf2855a0bcff5a7e382886691121088a5ede826fa4e99997f75e5cdd8ffabc27c13109a94f8f195987a54f4f4ead57b466f872626ecfcb49af8f2f102b7a44623fa95f3148ce557990f38f69ad6b96c715ba960ed9be97e9ef6b7a6c5aa8ebb43962df4cc5b6afa8ed91943d3e35319fbdb23c6a12acbf24e911d5f01bfd47256f5f4c38357aab0e0970d2fdf0883df39314d7c7b080eba398f34c55caf54b5dc9e386e095aadc0fc725cd43a9a7cd6af5f23cc00c47d31452cfe47a70f7322d20ed91272648fb8aed2010f074770cbdfdd03d922f0f25bf828f18da23c6863a26111577c49054c724c286fbd6bc94128781942fd71016aea3da7b5cdf6fe556ab5f8e60c6315d5fd4f511074b94342ef4541cc1e338fde190dc729f633cf2a4ee8e4e77b8822b6db6ea1a6554183e2ccd7e249d03092748ba2ea5591f94d3854bd06e218ba67ecdd5695e2a59b917533f2d80ed01dcd79593770746f1a3cb1b1012ca4397372f884659748c72e8d2d3148223754803e43849b4db96f0ef55c2e4232e188efa3a08564bfaf98a723c0b5c8a1dff3e5d921f51f0ef880fbd702534fd22451394957d526ea31b47c74d259f23220fa1cf16a7838ffc6cfb8d757a3bac6c2d7362960e8c291cbb2b615dd7534b9867ef7974edd456d92de99b1c4c4717fdbaaea50924ba1495581fdaae9fccf1cc1dc693e9a700be22c34caea491d521e1dc5123cb48ab7e915d2b2bab0d417300bea250a775e954cdbf5f35816a3fe6df60cb9fb9a97c6d6978a834fa0047f525c55daab5819bba5fb99a4f97b47fc9b81166abab5d17e39fce531b9d4b6bdf2c8dbe3d7827afaa5255b26bddae94dddac895baa3318773f4b356d514d1c533421f1cb1a55ac97c9797d2e2047587f0bf3dea46eda5fbc66bb9ebebed521fb7da285c610eac2d8fb6b765a9f36be21a9e5b8ef6b752d8142b51be11b9bb3828d9a389888a52d2746b5dee56aa2c91bd9841ec8422bf8e587e477f73785b7fbd0ec27ba39b03931c95c3ba48981cb9899796df84a35b1929df3f737b9e32b3cf1da79e539af24c8e6db662593e77d83b46655637ee57d19a7d75fe4461765e1b290e70df8f7bf689d1eb8ca8500baebbf6fdfad5ba009e33f693a06edc330325de48f34af365ab93b247ac4d51b7a7902bd19447a99c1db8cd7772eb59d499ac0a690e8dbf9ab776bed0de46d497d2b500a50afa39f059e1365da7bb46aee5ddb33d494799166ea39575dd4a57347dad134ee5d4840391bfcd3f1f9426e5a25c6923f8563f417ccd622696f0ef2b8ad8caaa817f67ea46155fd527a1a8030c2830c85dbc3079ae3bf637f7e73675527c7df6eabbc5f902e18f9985cfeac6b7131e96c41c9eb03864de20ee9913c74b533e17b572a0caf7dc915edec9eae608ae1ff4daf47a5dd230f5155b00fc5c369b1b5d969e41c05c2ff2fe892420193fcf70a4cf651b1ed4f62ef4b6cb3b05282ebd1145f18caef6e3f4466ef5cd73eadd07b68d4540bc2a1b7629107d571fda4a5ffce4331bcd71061a6fe838f9a5ac7c2cc88a951c5637fa5a5ecaedf2a0226c533cbb3c2f3f63a7df0a531d1ce25fb6bfbfd4515f56ea51fdf8b5157e8e9f085b3c0fe7a5aa5e54f51585a89d4f7cb739d051312dd417f9db813187cecb497a51e5b27ca36c1f0247267f2ef197a8620e6e0edf657f49790b61d6cf8bb93d4b560a553d27ae6f9b883c37132cec7269e2e735909f4c5feb0ace5607269bb0aefbd9eaca3335cb529252ac5aed5ede3e92f579a4d61bb7d4cfef362d6312d8399e88f8426b33ee315babaa92867f7f0df666e8e4ebb4b65f2f1a6c49bcbefa4c49ebe66bd7cf2719ceb5fffbea0391afb8d1e5334bd8afcb7f63b2c6d201cbca91cebf56afbc12374b61e8e7ebb9e756715fba853f59d88514c5c16e47ca7cbeedd6a5d849934ec3807c6eb5fe9595e55f927458d72ccf4579c4bd395c193e2716e18b22916fe4ab6e967c86aeaab672abcdeeb5e67cdd8d7375375c39bc3eefab338169e66b722db5b6eea80c680c9e7fa6d06f6ba38b06d575b7ea59d6b7d0db980fec4e8fc96bf38df4a167ad356322ff81001df5013e4e1ea7c9fc9c911aa7384e8877a452f66b34b28fd7cc394ac9ec0845c33d3ec60fa049008f389ae7871549d576db203be29a9a0fa7103c208c6e152c2b7748dfef281baf95c89d3620e55c6c8cbe55d57abe51dbaf311bf3d59af984e1903097b939c44b0a2b6abeb7e87ae08864461c384bb7a5176c81fd1ae9036eb75f25f1e81de23f5f9277586d1c0b39e73ed1d74a4a9fd70c7eb93965b356957dc17afae86272517e3161b988c61cbcc03cba90557968793dba08ab7e39b8441d5dc8da88421db4ae3aba18f7c2317fb3ab37b2f28c3596f592d1e4abe8b8d477c3c1af53cea47cd6b7c3be20eec513db7e8639c0237df89eee4931e1eb058b23b592fd5d5ecaa9d1cf70ce4fd7f2d62fc4bac93723659d5fbf0eacc4ed95ee6563bf47a7587456218cd1b723b9fa825c337f0c7e55b6bc7ce150f8b410b4af2b27d4c103ee7359cfb53ea891fc5c3e7facf8927c53b1567eaa158b4db35d56e28b64c521ef177cff197da4d7df021ec8d19fcf5f122d7e3183f1c56cc4417d2f278dae67f2e7461979869782c74ac837c2be5e3c3e93752972f95552f2fe4695c5a5a8eb178eb68706a1b5cfeaf73d9779fe9c2ce980aee3525505db321e3bdef986a7bab2f2ec906b9ed73866f91246f6b8927f9581f8e5cebbbec271d7573bed3aca61d781bc5fa77ff175ba175fa37771a4ce857546e5aedb18d59555ae8b6779aa42fa149038ccb567cff975a95c5757dd9532cff320a01b6a9bda6ffe4157e6f479353054810d81ec59adb12f11d76eeb526e65e59e11431e2ef638072447e5ffa235e1f9225fb71884eb3db9adddee797bef2fbb333b6233feb2828fdcc7bee612f1e56deeab86d89399bf60a8bdaa9cd70db95715fdbaa1b7a722d45e022c2caf2fcf2f72eef1d4567ec4ec7c367794902a7b94fcf2d0adc9ab2bf7ba825e5dcfbdfb9867d4f65bdbcf5e19c1795f3738f4c3df67f580bfb0cc575c9fd0889537b272dd8da88a12d9ec1786c251a5e8aa2b0a48f76b14b5942b6de4af56dcaa294b7f5a97f2d97e3fb6b86d73482ef9ba727eade6fd2ac34057dd1b5548dd2df521b6e9c9d298f55a4bd7cd1b63942c3cf3f315a520beabeb432a11cf96a0820fb92ffc3cd2a5125bd95d19bd0519d117d5c33a5196dc1a9b1b553f7ba63b500eaa7ac5d82e147cd0bee4d9b2ac4ca2bacfabd93e591065e93ee3f3f6c97cf4c5b8213e77750b3a3f3e748007b6dd2570cacfaa42b635827a878b7bac935469b385018492a4b138e8b0abfd112b9d3bb4b8ef2595d5c677e1512a4a4155aa516571351b1d9bbe16c652138e6ebab257b3d15c6ce5c4a8f5a14df289aa397dc08bcce3b4b9d6d7eae50100641a564e9a5cd64e9b672dbdf6b215cad6c2e59b99fcb93978f2ddcb036cee4a9bed618f384f91abb7b4ba6c9c7c45bfe47abb5495cff132115275b385be3eb47d3dfe887de6f4bb6f71839e6816fa0ff3c9f805b39b68a4c39e228f34d341cfed4796ce15c2cbe4853864d9f3e82b256bcf3c9f1e350fe0e08333f098e4ef3df4c7d1f119ecae72e2ee98f4b1fef2eea0a5eea3c4d7aa2aecb1890b6564eed44d54303a32638d8e625f635ad55879d9bc2c3f7822dbbc59e23ef9959e35ddb6ec9265880fcf21f81505a27298ffffb50a505035d01880e0e2b00ac2ebf5a98e28e7b08537c5d85f8754fe2cdc33f2c042faca2a35ebf533f2cbe3bb4f957258d5cdd794940b53c0bfaf28a340953cfefd9adae8b214b59521f0d53422fdc7af514516a5340effbf66f6077bccf97c76c405c87e76f04af08cc7b7834bce1f7dc6af682e9b3a2dd441deef55e57c0de9b10fab662b8dca61a87fadd1f3e312bfa6895a5887ff7f9d52be6cf208a796aa546ef7bcc5f55195918522f52f79e702b4f83a335e27d65db0ccf4a16389fee232ba6d4aa7e24ef8779d74e09d96ce9ffea50e16d839e9c8bb5a1be7bf956564ed9619bc7ecdb2ce49a768c5506a88c93272f5ecc3684a075823ad8380b815ca4903e120cbf210e69ba31caf73d259764e3aa8d1d739e9b4df2e80ccb587e19b703dd439e9d49d93ce46d8c96dc53a5390b073d2711be58bcce31b0a3e3917e8634014d239e9842ac3573b271dd539e97858b0a7c1ce49a704df7f3e9b284b1f57d7a5ff962f40a157e2ce49672d5d521572144695e99935102829740a592241c8ff56e7a443ded22144f45835e54a95a5f41d010ed27d6d9df414a8e49d0b49218191b6293daed095840a48dfa2a52e7ca57d55fd2f54c8374e2c650924af7c1e6776be76baf6ff6fa459420146df42c1ae31be286c9c6fbd0bf5bf815c9d93ce6257e301d7d31c3075633df53ca2d75f0c3f0e7c60347c3fce4683f3450066c3f7171e3aebcd3ef89fe1bc773a1a9c754e3ae7c3d1087e7e24f0c7c159b69878120ec7a3e1780081c560168a1ff566efe177d23b1b8edf774e3a97c3f1f0b2e78bb9bc1a2d86946b36b91afb22e7973df8c4c7c16c31ec43b2e9643e5c0c2763fa50004f278bc5e432c5502b02cc0d198c061f7b80f99316f4b605bd6b41dfb4a06fa961e345369d0d2f7bb39f22627ed5ef0fe6f388f8d49b8db1ad8438eb8ddf0f669e6093fed53c4b087a35cc16831f7d1d6757639f89c1cbc978329ff6fa0346f89f8ca90900930a80cbab05140840f20180271f07b3f3d1e45336188d86d3f9d0d7f57434e97ff8e3d564e1cbeb4fcef8278388ce49e762c03d361ace17f4935d8de78b9fb0e8d962044366305bf06f763a39fb2900fd09347f1e10e793c902e8703a1bf4cefab3abcbd31690f5af66b3c178d142cedb50d69f8c46bde91caa707ab5584cc62190bd9f4daea6119c4f87e3317e101144cb7e6f349a5c25a16cd88762fabdd919d0013f9104b965040f4f47838ce802cdf45d30185fed81d97432f5c4cf16bee338f16c320a353d1bf64693f7210034eb0db1d284a22f7382d1c4d7861b4ed840d9169cf9693819cf23de772aa5fb38a4d0acf7290984cf21140b46381430381b2efc20639ab660eefa47780fe1a06ae387e3e9d5e3d4d351af3fb8988cf08be7a3c18fd9e0c7696f8cf0c5e27294cd07a341dfe70c014043212d203b9dccce0633183609b63f199f0dc6f37df47c311b4e01c93583dfecfdc5649e40d4890821b1631f27bd3d1c9f0dfbbdc564f6142eeb5f0c4730ec2e06fd0fa7931ffddcea9d0d27be559f868bfe450864309e99e4e7c3d120500e80aba95f6703eec3e027fc9ff52797a7135856ce86e7c3c12cc3a88bc9220d64a3dee96014c1fe647475398e7018ac9cee7c32bb0c540020763c801783d13456986608cc8ce162709986c3b70133bf3a4d13c7d10a601884e3dec7d35e0c84aa1018973042c472c69371363c1bf446d97cd18335700f937d1cceaf60ff195f5d0e66c37ea06a584d69feb7e00c16ed19a147bd9f62283bedf53f9ccd601363543add531c929031616f65c4643a1827e0bc3f9b8c46adc2a6bdf1005a026b790245e23d46420df7623e0e079f604f85852c86b2de6c364962d2d6312ab6640f93cd877f861dc31167c3f9e51036d13d0c6c5eb321ec4f1c45cd7fb4b832e2d3ac379d426517b3de98988116756693f7b3c17c9ee1e809e0e560d18e1f4f682998ef617b9e89a1f93e9dcc163052e61f06a301aecbf3110d340c64bd1f61d725e8a2373e83f589601efb042e66d80f04f2773d66d183dd7680cc52d8df28d4aa16e37cdf26a06fd2749826e0cf2d7aa7f8bfb55eb5e094b4bd539e013e086306c373f8798fffb3d9e07202aca007780e8530efbc11f1b137ba02722f263d2cddffb6ba0f319783f9bc87ecd064325a0ca731d46ec06c30a09f6c8c8c4e0867fdde0c86ce1e06b7d9b32722c693f11325f0904cd061ec471c6d5eed62990001c18321c1109903623ef0fb566ff6d3138971238c1f994d26b063e167fc8f9fd93ef719c3cc56aea5039dddb13f98d622878319bf630331feb0c54f2f3142e549189ee261886d5f18ce426159f669703af5ebcbf0d24f9fc159763939bb1a0db23fc1e36cf8cae1946f31257ef270b277988ceb7238e1379010b825ecadf1473fb9af4e47c37e76351b01d37c3598ce86e34536ee5d0e60a98741073c271f47e814c2878f3f1bccfcce4bc3e6930f2f2e70489e4fae70b5e113453c4ac43344383c04e2a59d40f4f73d16c88f9b99ff80d3237d2b4d5fc0799649e0c9d152a98563b63f159267773c22a79ab384f13f901d0411becca6c2cb224040327f709798f429155a28a2ad190bd202ee95dee5597636381f8e07d96c30bf1a2da05750bce04ffe617c32002101e77a61d60b942b801e76e7a4732d7d633e6be5f3d2e5b9ff1ce57c71185ecbdd33896804c2a5d94b0390bc0ce22c3be3dba061b5d2e7466fcf952c3d09ed46376531acf2b22924b63ba4b508f7c181ed20488ad6d29d1bb1f6030364a9673a6f6894aca5e38ba033df4bdcfb6be926b534cf47d0904a8a8f49e9bbf8bdbd022e856a178a321e2ee452d44403ec0d7048065d5814bef32ab1950b9d34825cede8aa92a03c16e8e1e996a483eb79a8918f40419bd2d55c268500e9e6d2d9bdbcd669233fc89d6f73da1d6be9e649542a8e4211599a18c53d4f94a26c0c0dc1b08b89812874ca06d3358695fd83d51543c1cf35c44c83261d800b9c43ce0425d98919e935cb7ed678713a83ea5d08cb7865073f37a2ec9c74e055312a3d847925a01bc98c6f24337a8df2a5b9e36c166ea95f9a42f02af84b336825accb3e5b5d65e881240b1e485e5ad3bf306716170c90f52d3476fa4cd6465ad69fc54131597eeea04417521be5bfe387f5b5aab8e75decdbf3528b008e9bed52628f9c6a5d4a51c58478051f61ac01c395b44e163df83c48b3567ea0f9cf6e619a69a895b21fa94249dd629123654381373c1bcb0419be02436242650eaa661b0b193765c9d08a467bb8f3b698a74857b2953603916f52346c32fec03a9e7c1a6767c3d900a488732e324e4128001eccf820414c6ab5f1dd04b7503db3b6440c9f026a8e883fcc81070abd0fa2e96d5d4a27cf930f70bcc2acb88dd8d0cf50942895800ff33ae3a95004b93989b7c333d610dbd7d54aad21484968bcf8a119b20672f0a70cd02ba07b89ec3a2079ff5f712c00dc21f2469432ac2c15ed9e85ce3d7b9150bfd285dcdba078abb51a3e50c43573456b18f74aee1a519eb7919cc6e2ee9bec1e45ba4368de735282e2c21d40ba47c8059017fc2b41b51a9353057dc827dac8fc3a59dbb771070c6322fda6cf7cc7630713fd4cfb68d282d68e6677db054da7555cc979669ded37b4b5cda57092692f06270c5676584d4be2c5694976b8e093ce3bb2835bcf57fe341d78c6343b1f0e40a2543565395c9de97c6807db1aee655408c91b6976ed261edaeff706c5a570f906a858281376d7c8a8ecedae61391c5657b6b53e2ef40cb226b540b3a190740f9d64d8ea02a628f653b2c2c98aeeb990f9ab85c16ac47d9a4ac0f75bcedb5f788279103191a52af9e25af9b03b707a0bb38e141271428ab000f82f133ea67c9a25bb11063b0659436c3e374598757fffab7ddd540e168e642dc03687a563af835634309356b5ea80b9db0dde2b628f64a5b06e186ee4f2c0bccd9899c33adfaab20c1d9aebca6ae8c15b01b75bfc1a45caff5c807e1dee54b03cc095da4610470ac5d43b683e1c71f00e13960555161cfd0e53b7af369133f51bdb0d8ca21b3cc800af04bfb005f82513af2cd7d22dd4166bde00116a615d5fd70a17a48d284b7ddbd7f5ee5c1b78ce82d9abd008decff1bb774e56f0e67c58ce3ec008c670601261ed4b765e5d48ac727c141300307781589ef0956d8c1ca0ed4f4c121130c76d5d0ae67695a5c8c98a0e56d171630b9898b0d76086a19d18b23db7bc72e1d36d7df42189d7b746df31139a97625b3331cf64aeb6a28485cfd2cda773a504477d098c0df0c8be28cba5c8af934818b9223f42d800bd7be4392ff581f9a2d401b3ec7bbb7c895fb5d72ab0df4eaca9339c515b3c48c29d7078919fa52b45abeb64e8d59090ba70d55439fdc46ef35b4a1c0879ec39a74b69440533e952c0edbb5802870967eaadf07b271f29aa664be79d4ac11c31ba01f61774faa96695bc1d2420f71658417b9a3122cc12499dce6ac53c08f0450c86445140907d3f909a008d095df3860ca5bd034242f02c30f9b53456c1ceba956ea37dbd75d5abd41656e57323b692349a25c69d8295ccd0ce9aaa52d5baef390fccb4f2fbf63e5e3102062614d42e1d2fdba7a3de4fb08b4f6783f3e18f61fd1debea6271399a52ffbf7066c2a13d1c7fec8d8667d9743699ce412e72234a557019b8a7f0da6464d1403f7bca78f23528c60161899f5fa12164010183aba5da218c45469234f803370dc5d7c4c7143a0755b1747f87350e976050a9e1dde613fa26b4a81d238d02c3c5b0217f4c8e5af0f5644f02bf511f9809b0d069be36f5085806a4ea48e73db7d8283b9237a07f51e89c264a09c9ac13c681ee372ca10507f1488829058c1a615d5bca619b65683d148325446950ca56ac7f2ee1dce5a411a0afe2cf98f81235cd6edfcea7c852f988c10bc4a1fc2f25cb9c58af65b190dbba144e8eb03aa11ba15ee2163a4eca5f2473f2327aaff4a38ecffd41d4c0083e13a9fc525a2bd692f581407cd8e07cdf86a88c1488567e76d8859e6adc21aa42c5e382dfbbc3a32ffc45b2e29e811565e7a43352951fb9637143a10cacfd3232e2cb486f3f93769bb5de397a6986bdb0c3bc3d3251226bc0c468fff9d206b351d669f3a200e499c692dad8e1127ef75209cf79313d5cec7728f851d5ee1831d1f75809d8ee7f1336348f2a9101443a00f5aa02177f74421cf734cf001a48dd2a80871f1ae2f54b456b3887a863a6b85bc022820f7ce03e2170811120f9f39f71a624b66da3568454f6924e2b8181d13cbc7fc31b3ac8ac67c08593d61efa8080d6b06585afa88134d8be0b431940392ffefcc653b4df183afbb4214c0067b570df8347f82731e04e2d95bdfb4e4e61589b05b1b13dc8434918a40504750a7d71146fa9e81a390bff433211697351cb628a11bec6ef80dd702033824fb320e3b35678c5c408df5ab085243e61d4bb9c6697c37176d9fb3128237deacdc659bf37ee0f46617b7c1c3398f77bd301a94b3c8e9e5c2de6c3b341d61f0d51690a1425e6192b505c0c4767b3c1388981dc6783fe6406f7a9e3497639585c4cce9e4932189ccdb3d9a0d75f6483d1e0126f155b5a0949e31ee127b36cbe184cb3f9f0cf06d929a9d9eda5eafde198547b658d27e30c55ede07af7f9229f4dfcfa6457a35172df3f1bfcf16a381bcc1f6b025cf4e64131210b9a8993547b00a8bd984cb2cbdeb8d563ad0467932b5217dad36848631f2b22f8c8c1e574f1d3a19c7b15243d8f5692ab31a90c8d0667d964bcdf8ad9a287aa1fa07735eacde77039097a0b7081c8d7fc386e7d82c11cc8c837e98359d69f0d7a8b4057c6428e5029522103e478c22a2374affc74e49eb21af0dfc35c57f39bb59fd8f6ed77c8b8e3ff6eaecb665b754bb9726d8c51eb0da38cbeed2eb5737a9b201cac261e72ba2b8c532b5c8e08b3d2256e0a4299ba1455b8d8eee62c2d42f073631d0a8611e6aa00106ac117b1493d026aa38dfac51f9fcabdb221362d0f108fcba4a604f8c66fa779abb8aad2f1eea1ae4b953f01d1b13b502b7c3bc585cf03b2d0b755005ac9dbe99caedbd11ed14ed2d41cb40949228e5b856cb334cafabd56344efbf350de6dea423858cc97a2005e7029aa6eae4c5e1270dd15390b5e96c2e428bb5e9602d83b78964c165dcfa568d4ba06f1cf52eb6bfad90a83417f825d1a255739de93c34d221e1ff3a624b5ea5c94b22a0406b7d2080818e9986a081059106092200424c96559769dbe45166523aa35de646ff074906f04fec81ba3abae3fbcde0a532428fe1a812b6df612700d080c7520186bc174c440b7d5fd2d1c9796e242912992ca0de3322fa5c05f552f3555b1d44df885cf955a44445333887d096e9fa02301003920195a75d10080170cb1d30dca2db64182b1ad8551d8f700584b21232d9e0541606bb624ef302208d50de8d4e74616ca7573aabbd15882212a354b493f5d5cc1201884cb79636e64d135be87bba17ba19685b01b2649219c58e2b02b64291d059c805fa36e24ad8100db6b5c1d0a25d6466cbbce4819af8162e74704f7151dff922b9caeae81190eb0dda058aef03406e1be46e3856659ca2e8ee1d6546ec524139af1ed11bb87e59ab6b1a1ba6d340cae4237eb4dd5b840cd64001546acc995c65e1d9388b48a78882d80c00ea5b845836b27709f0568aab0d987ac0a4d020459ddc852c3a95f1a615140d5180d3c304e680c964d21bb68af21ef6a51153466d16ac70776b2ab572b0e551cc06e81f73692f90f709ced2b29f9a76bd16a778918556ec3d551f71a2ff5092a51ba455018aaab122e3456255dda9502cc4456a5aeeb5db7c0a57955fa5dc3882adf3084a20c0896aa9230660032f246c9db36d4ce8b37c07e53ee8263d30856981101a6054230408b7d384954d2ba8a4194bbac345e716858ec571ae63bf8a3098b207aa77102360c1e5c1e891e6b4856caf760a2727108aea54e4e666ba9ad14065ab9562e36d9037e6d8241e5812d89dc7cb84a89e311750303058396b146d67e90ad49dabb2e352c40f0dbada4bbc51682ba06ffc63e5e1bb874f63f5dea1cf026d6c5d3bb655816dda530a17d7ee6d00fcf6308d3ec8530cf590060a66ec0e9450874d1fc890077ab09c08b998da44ff9dfeed290786d2385eb52ad7d18151a36b2e41f69ba5bf049412bfe46ad372557056fab135eacd5a827d05d61f3435185dc8f2b943fcd2e9b70f1dfad820ec756acfdbc77c24926530bc7e4429fc370ee4716047ebbacb410106ba943388c2e0491490270a5bb64400762842ea9bca9ca4afa8893c6465585da6f5a0615d294b57497641b89f3b10820ce47784a2ea7b336dacfa35a042c51ac2bea613fcc71d020c4bba987c20ee701e666210c877d0250544f00085128ecc4d2872a7d5b756fe446e1ec05cf36fc6b3180dc0006ba9ea98cd05294a586e2091196018269cc05c84f92e52e62364a1adf0b092aac7e04db6b79bb578ed5c6f9d5a56c3cb78bc68c2bc7dd54aa95b4e206db012f2435e512c2c0ccd2baed7f881b60159d6e219d50254f69588b48740d19f5ba8b1fd0eb2e12652b2a52fa8240491d218bae67455073a81bcc323de0f96494cb8a3bb545a1fe56160a12cbaaa19f387000a2551916baa4d208fb76d11d522851550da0f45295b25b6f70d120103c63018872376d30b2817b2a08a25240b3b61b8d6a1fa553e48402400be3b7a29ee92a072a131e262afba0e6eb580f84b303004606d7188472f2ce1f01fddcad54f559c0c58753abe400d68269be167851b604a253d7928537748c5eadf0e25aaf567e64f9902abbac55a5ab8425d48de3226bbfc684b15f8b4ac2a6e66c8078dad6a296c6f3e578312278cb00af876189a945835ac352d7984d1a7f0425a13dd3863baa5691cdada14b6a75a31dffc68f9768335c36a8215eeed6e0aa95d4726adac26bcf7c83e8b02b2a51ee2cdc03ec75c29e1a1edc1be18502ef69757a2d5147ebe4ba5996ca6ebac9c65e37255afd8aaa8033bd91b936a830526894b11a8906b472ed974ecf5f7393c94b58e89816ccfb401bc91b01615b728d04871cbf91b584a3a101c509c8cbab07dfafe1fe92a86811a6c62eb3c2c9b2c47b59bfd8c075582e9ce705eb52a3b615753e06ba82ef6f0976742d9462ee3023dc24f9152eacf861ee5959155d588329d4e511c7306eee561a252d9da60840a59a26510f03341e8d9274c9b64998a42dced1d5151f71ec26ea5bd7f453ab6aedcf325063b5e5739f256ed86e85e719e9148810af5908d19046c0e1e581adf4edaa14a82da17325ca2e2f9d7e47e88ab2de88a5e463c9231cf31e181183293a5d3bda88900c3c22c745d8fedc101df6985eeb601bf33f5d495a23d6c93a3d88001c33c83a39955847527da3aea5db187f62f3f0ada8dbc732c024e7317a9030ecc50c33b9112c94d86a1c8f88880d41d81925aa75299957dd470377eae0b4e3c4b5ec0a9efc4edc29d082b8f31b7c6424e1f2c16d92f1e636e958731b5ec1dda6d92e2d7f9820fc1e0e05ff131b48674eff032f7d082345a06ac0a65c6b40c23d944d31f02fa6a30b261cfdcee00609fed568ee3a83639ac407cec8aaf0a39f2bcf3056ff562743a7a90a6968576a2a58179b6aff24d154fb4c5a531147d254b8393455f4ae10b7c520016af0601d649ffb7cfa131134d643cc1e8fce1cc48d6f4a182004e1319c0068f5ad28af4913cd538278eb5be1a459c14240d4be5505aa9d61a01bae06095ec1231a110e47a35b23f1c4f78bd65b64d22084db37049deeaee0c4988accdffd0999fc641e4b91411d44daef281aa56320ba0447570a15a2b225c5cf91ed82eb94c41e2ccb610861e245d03df245f03d65adee64f9dea8222d824dc83c0f61c3352c57ba7563975c75e37377d03bf2f6143829b8fd46214549f2b12eb5e75615301f379266277c8c6ae1c3f3a0a3e073cfd0a74af6848242416c04eaf6c17a49ec49d86f10bc35ca45f5dc580c984821971c8cdd8c763a28d6803b1586f0b9bc4c5a903d18bd652d851ef843228d047927f306e6a747442b8d85345b5509d7521c629d44d6dfc2f7d5928bef49aa53ed84a1ecc023413250724e15a1a3c10f5e5ac75a67b5b0362ee771bdd72b3432c306902bdb7656de467cb3e944d3264906bb131d8898b521900a061485938c411d1c1cfdc34e9fe3f6008811b3f5771ce42f719d82cf4959a4e492a888891c7c4893a6984c0733740c029ad673540752c51eddd7f0be1f7b41c97ab359ef27be79eb4f66836c309b4da239ffd5b8dfc65cf4e617d9d518cde1fcecbcecfd985d0e2e273069b19cb68f84fe68321e646783c1343b1f81092e62ce47bd451b33ffe9f274329a07e4e472da9b0db2696fb618f646fbe8ab31794fe0884fb3de343b1d8e9f407c18fcd442f6af66b39ff04ef909fc630c184eb6f07b956ae11ea7eeed953a1bf466ef5b98f3d130d0e76c70debb1a2db2c5cc937f3418bf5f5c3c424f2e87f3395eb85e4c16597f720537b93e3c9ff6c6d0c37ff653763e1c2d06332e195097bdf0a5e1f87c381e2e7ea27e9cf7ce0770258dd69d1e15a13114ea71386842bd226a383e1bfc088364749e3d91f2d688fabc146b325cb10bb166455c0ada5d956370a97589213f8429a4b7833b8a87a50683fec484a1b5ac30b0153506f054cbe1928aa4a729052e3ffa8e3e8fbef5316c25c55bf6381a98370c073353046fa5b8bee4af7a60ce0540fbf0218fd020f151c95baa7da985fbe65d027cf72d02aa723f84d0dbef42901337310104fba5d8d65c9f26c9d324990cea5ee3be34c2e776f7d197aa28485739c12e8c5065488dba30176e5b027c55c93dcc85b0ed4433b91edcd51cf738c380256e460e6e44d92063682478fcad7519607b26654dda3a1e8457cb03ec03b46f1889dfec6f84e1efee6116a8c18c81b9e393b38706159eb43f1951f7c32d1ec26720e342ae62ee97f014d1b3b9529ff8a08ecd0a1f1cd8453cb11ac9d3c1b7e3541417f28e015509d21e1bda0b6d5d1f59030f4e723cb2f8f095a26a8dfc760ca1b1be249da4a45f82dd82b17dbd5dea195d0b117829ccb58db85323c575042f85db4cea08f7ac43154c4a19cb81d0995a2be0ba7db05a2f514a6047244831f65201636cecb972bf4060acaba4d0995c2b5d11306f8c990ab4eab157759d94d12e31c4c949ed2e4159dad8b9fc197e075bfd5921863d9419d9ab35123fd08088a6e8be37844377c2d08dd111a41464011554a2a9b3c104066ae776b52c7ab4e6593624019b748471c1c161e3e1bffc973b279dbfd1077cf7fe655fc6fffb57ff33f8ff9f93d6eb54182bc18093158b1908b1c32ac40d2b8e79cfdc8007e6a8b76a34c85d12bb0d1f198dbb2b5db08eb18fb8644781e83130a6832f070b739febcaa9920860896d5470545eaa8a96219f6c8816ffb862460f0001c63464f1a23880583698c15fc4857547c520c6a06190a25fc42d42f720a79b82b092f7d66b23d7a48261a5c35e456f77123514f3661b9434c00920e725f3d2109e450515b11b90f11bca19c907a18f386749a4917698164746f9a892e2fb95ad9b5ab19f143a2804f503aa1524402241708a977a7ab5c21b3040ce58f95e55caf57cabda31addacff17e4bf8b58fce3fbe4ec9e1c483e7aa2a48295597d14c558a7c43b6169c8a1bea99f434cc1f45ddcdd86420801d8b719b18d4788fb944ed0f1f9c435382643dad68282cb43e6a6d7af4426d03c1af6889f6e1604d092afe1722044995c6c2e6c22db1ce442f90f9a605086307b1fd855c36c68c789cfdf95ff5fffe7effef1ff0fffe41ffef1ff2fffe61ffefdff3fffe7dffef3ff0fffe43ffef3ff2fffe63ffef1ff5fffe53ffef9ff3fffe3bffef1ff3fffe71ffef9ff0fffe49ffcf2f2e7feed7963fff2ffcbfffd2fffba7fcbf7fdafffb67fcbf7fd6fffbaffcbfffdafffb6ffcbfffd6fffbe7fdbfffdefffb17fcbf7fd1fffb97fcbf7fd9fffb57fcbf7fcdfffb1ffcbfffd1fffb9ffcbfffd9fffb5ffcbfffcdfffbd7fdbf7fc3fffb37fdbf7fcbfffbdffdbfffc3fffb3ffdbfffcbfffbb7fdbfffdbfffb6bfedf3fe2fffd27fedfbfe3fffd3ffedfbfdb39e9dc7baadd7b82dd7b5add7bfadd7bd2dd7baaddfb6cf79e10f79e06f7bea9f79e56f79e2ef79e24f7bee5f7bee5f79e74f7bef9f7bea9f7be95f7be81f7be6df7be6df7bee2f7bee5f7bed1f7ffaaffe75b74ef1b73ef1b73efeb77ef7bebde77d4bd6fc73dd4d477debdefb77bdf6ff7be31f7bef3ee7dbfddfb9eb9f79d72ef697fefc97eefbbf1def7d6bdefa87bdf1ff7be2bee7d2fdc7beade7beade7beadeffaffe9f27f1bd27e7bda7e4bda7dfbda7df03d0c593f8de53f7ded3efc193eec193eec113ecc113ecc113e7c1d3eac193f3c1d3efc1d3efc1d3eac1d3efc1d3eac1d3eac193eec113ecc113ecc1d3eac1d3eac1d3eac153e8c153e8c153e8c193eec153e8c153e8c153e8c153edc153e8c153e8c153e8c153edc153e8c153e8c113ecc193e9c193e9c193e9c193e9c193e9c193e9c193e9c18fba074fab074fab074fab074fab074fab073f1c1f3cc11e3cc11e3cc11e3cc11e3cc11e3cc11e3cc11e3cc11e3c991e3c991e3c99ee7dc9f750801f110fbef71ffcf079f86b4173dc73bac407fe0d9d93cedfde39e9fc1d7e47ef8414c8a4519a7c63d08e34f21bfe5813fce3585c65e941fc542e102d9b2e402dc5e225572e37ac74ea4f37b1200f780e2b721fb482079b5938ef402de6a909552c836213ef3d7e2348e31fd3406cebbfcdff960e7ed6f8f373a331f017bef9bdff354d35acfac1ae9c5fa801a91fc86f03678b3b19d94ef843218771a16728d746fec1b30d82cf8ed1a857159151db0a7b3d37396e570ddc9ccb3be9f7a8e1209bce268b09782e20bf08fe3c19cbc12f7a963da2cae24cd05d9ddfa8c80621b0359e91ff2150af2c757e5559b1927b76c1b170be10e73bc421f8bf0862435bb3b1311847c3fb97c137afed83a06a1ea2f0703b8c3e7bed6e9bbcb691983ef349db8526e4eeae5f4a61fcd6484a8f7ba0bb1b83d65905ff7377374743658cb6298004ed4b601573fc41dc79a935e973a1652760df4b17374f440d6dc23b46b691e282212822fe8017960890eb0e042ec18e94c249226a0a8413d61a1133beaa2550de48439e9b397446c77f3051f7393fa1e820363ea83a482730c24851b2df0b161fb44697d373f636b115752baa46efd12d9c95edc149d28b761a202bcf1a84d013c48a6d0d2144429138f84b5de040675bf29182dbc691f865e70fcf784a1b41aa08df62a85fe2e5bde7a902213c30e252f38d50550f44f15986b90a72388e9767ec7e1c125218d8700aa34719020a6528c477689c83387a4ee8c4359ee2b814256f31ee02eb252b6714390143dd1b8fd981f0dc3ab62ef554a6e05c066c96f95e85d2e60ecd8349f705cdd4d5358f4db2042475a85ef091b6e6dfe08905c77e38c59011372ce7d292ff9fe4303117dbba646287619c44f1cabf6956ab924f8bb9ae77bc68419791c93ce6c3a4c1973a58f506abfc9f294b0fe2182d5a905e7e4e2274dee6f75b47318fa0f3552c956a384939fd9e235204f1208c59942434341ab12d341495f37b011c05acd35bf58b347c538d4750f682755e0a475e0f607c82cb7e3a404169c183150b07d141024b01e2bac51942cdd7619d1b72ab52f85aee3010db3eac5ad9da99c2bced9c7448b294870a866a1471a95a326eb97372c2e7440f8c820b7cf08811b300dc3a40a38095a3e2c19c5b7bba63992b2801a0bd320f00f48df2811b1a41ee2e5dc1db140b4d8833898a3db74271df9fa91559e5c267c3f1d96f887cef07ab4368145bebfae373e3a297fd307958c2338f3a1d4177504639a66a493151d392dce76dd84b5d4d4c494dbc185e9b9db607f6b936e87790073c9f8863648a61a90284ef9c915b72881098013c71938801805238878af8b2769be0f48bac29299ab806fa6aabb6e761429e6bd3aa1ebf2a4ff07bf48322ac23a34aa7e9a20f236307fbf14d3305c7ad4de405efe36c42d234959fb092fce5cdc46d4bec1f772ac8ecaba0dd26341fcfee140a736ad8d65685f5cd62ce3856dc864745ce46f25b7117e2871578b0d98522c9694989761e28c2489770c4b03b12e97fa9d97af97948abbfff2a07979fa9a56e139a3c245f67908e5da5cdc5962e55a0d41e3727d7d50da9e7daa9304ec52ff3e4842271df2eb8d8045c7ebeaa6ed3d816b8fccc9251bdfc1c08e357635a85b4db040f83e8d684f2c5780a41a52641c323a115adc788615938d8e9d204ab74bfb5929b9cbfc96224626d018ca23d55c8cac50e444749764fc645588278dbb62907cf11c336eb39ac624ae67a5c28b58eb25062a860d188addae28771aaa24f1b9aa4cab2d1f713919b6494b3df0d6b721ec9a01ecb534fac68ce56f236fafb8135be5dbbc489105ccf443774ba0d87af269d360e32bb8929a439dd250256183a860eb56be992dea1f1c2f378ae8d83acb9e7970c68b8f97194406e9342506adccdb0b49ecd254ba721458cba6c4aa722cf3455f9f5290f02e4ec01dd942572ab01722c17261d5079a37413858a36e49db18a2502964f4bc941f3461a8a80cfa64c5c8b6dabd8470cd58ec60c414989f0328e08f2cec8c30144674aa4ef5626a496416469a4bb50eb0dd6aa84d3d246819ac656158f7300cd6e44c9d25b0c220305e1b053017495b8f785b5e7ac0d524e08cfe4aa9477389501118ab2d28da066b1325795629674a183034c045b3b0625c4fd8e7d02ca8a9b0f49d80c0215c9b8a04f1b45f3f10caf2b0189079fc0e7861d32a802fa543f863df5cf541d660f72cb343b6f44990c5f61dde3d9e8b1c9cd0e4b7168f7f5b134987c903bdbb38ded7becd63516774cec070053dac3d3535692ebca1af715e07e827c4ad93ebe144dba01f16cb28e8da2e4012ee52ac8a740398723c0c63140ca5e5579283da9cc2c18e740b961007b740b488a1a236f0b9ddf3a80c457a62337849c389a48c7e0ba415d256579f5eaa3211e7ba70ef9fbc09b99c403145d6de71b61601d71f1569eb2f8e635e471e4569bc2865b8498066bec36ca9e86bb37728aac485d89ae20f8788291389b57a5e071b26aaa9c163103273ab7314d3ccd93f7c6a6cad9fd660caec322a4ec48fca2a2363e9acba23391dd128d5678d0ec7559bc835a4f35ea95e05855e45ab267f0f7949dde9e862b28cfca2a72fd7cc192512ab74f66dc60ce1da5a895bc8d00d67026fdd0027d32620c233f5826279fb07940ae21b059389374b287115fc8719818afdfa31217eac7254cf7e446865bbd56874d45c1bdbb1126dc2fc555029b4017fb4e07e1180901d632696709df17655a1517574ad0eec18fe364de21c1a8936de86e2b9d5ff3d23d07bf409afdb591b9b25cbe67bcd76880814a009546572f90270aae71a19eb68e4efe33c8cd9c86337c256f23a082d6023a99c60ad224a12630259919a6730e8e27940890c3369b1cbcdb11cc572176b2a5f32ef65970521cce5d701c09b4fc20773437122f8bd6354b1e5c1b616905df081bb2854e6e9fe9f354c6a7eca5b0d72c0076cdf25ca0c909d480d66bbbd1c64d1a543389c7e722a8bca0495f5b2f0637be366e2df712f9838f5ffac80f1a8a8e8cdc0ac53ee9d06e6f2bb79aadbc20d4e703851fce7d5da050e7e746a32148b36cbbe9046bf3e4e41f01603e2248d7c5abf4025a55c528b907d9a06bd52dd7203563444e35415079643e5b0756b06636b0a9709cc3efe98e4394afa97ec105ca6850010798e26ed1bb55e7a473072bc19d4646f94e1b4a8179630e90877205f109f5b852f7c26a07a5ace23630c2d32979c7e60517aa44ed05379230d3aee5ee74c7ab353319cc872fc13721e97bd00faec4855cea06bba604be65cda36381ded6b6e2ee134a719cda4a332c92c1431e4ff1aeca57851141b96d2bee68b8433c1f66e861033a84fb82e7aacae588cae58f0dee6a45a615b4d70ed0fd878ff5b5629d381ab654516e13bb5abfd1d7241ec77a5121f89e3bcc7ed4c12824c9de487a454609260e7e5f220b8e2bcf7e24d7802dfd60cb1b74580aeab08a5168162cbef0bd8a35f42da9d64485efb8082b9bf8868f227f60f5d19223dcf9f10b90f116106954d0b697305541db4dc4159483347a1164c0b1db519e96008412f996307d4180b2aa20e08040328439a1a7e636880ca778cb58f3e9ae46cedd85ad8642b8ea8bad2ce96d935b52081335982aff2259bccc0cddb55c8a25252e93475120cc896c25ae254580d23c85a1240a3b7d954035d8cf55adbb63524e6b2264f98e3600cec96ded685ee23215594e4b5e12e887870d260081fc56ddc1eaa271acfa1f963dfa70725a647909758e61b542ff1bf8b9668dbe1c44516000dfc60e8180b33044b77816dfc5a092095ee5b891d866e90c5a736c55d5c804b9a1efad88f3e2f3132c9c4d75cde77e3c47a1527f4e22e73d0934290dedf8971b55e0d0f13f290ac27c34f4080e9364b624de0097580a11f10284825a62219248803812368495d15b1ebbab44201bc22886c2d30cee7424c4da8a3aa8396d83946bfb480a56b90d5e48f969049346e3e2ae8338a74ed5ad685fc4080cd364b5ad9b27e9181d8412363dba47e014f51aa2c25b490ffd58768dee5910b2b9a31fee9210e66ef08818e6c94f2b57cf1892c635b48435589986abe103613f47d94ed3160f502cdf2bd0a68c7b7738ba8730752e5d370e8379481102bcdfb387f2140eda80c96509ad96109655c11a83788d116e695661bb66ae80206d8615ff3211577c4bb16add48a88a0f1578d061283c33927af8ee84076178e90ec25c0a053c4a8e5414dc2a3b5665879f012191f74aa6fb582a4852365ec26398e43a202e1db55cc76f058aacb6585dff83b0c25fcf46c7d7aa5dc28b7a6061f0c50ba878a5fd9251e2cd4a2dc81b70b25b17a8845e8b22e8a68b42ddb1a500ddfd4be29b53a54ccb9240db92cdd93db95b02e3653ec029bfbb874972b5c9029b130f1d0b974cb6d99eee922b32ec503faaf8f4418afe04e2a5184bcc110a0b8e91671266311ebed1033dbe81860335c8a3e34d5bb86b0e4af7e9fb234d023b52eba4e7c950a3a23560689325afe7d82f2e311a70a6a9486b576f95b5c12903266505285a101a39a4a3ee0aba53e2059f4c38ec8f831919f8281beee7fc5a44f293221a3ac00323e93d855d886bbad72e8465dd5a235d7a190362971d9ab65248d92070f11324b9b8a9ca1da5816344f0c6cfb5650f3ed2d1edafefa8309283f20445846b32f64014bfe434bd89338d6fc3e14376fc983641fc9a9dc766ada7eee8596eb4c30a310862d46232e5d27c908bca1ebdc0803e7177b5d4e0ec9582f47a1fbc8c90b81b9ff123e8c2fa03b13fbb0c8350b0007fd28f1eaf67cfcec887b0e526f89d66e0b4d7ffc00ffb0dc6f81ce8fc6208b54767b0e0521313c01ba8e1f17400e0fd590c7243113a9b7c02479983d100de9b055103b881634fc3d772d747d5c3ded202e7346d8c4c9d153bd4dc1a16764fefcba691705ead0ae01fd92c912f02732eed133cbd914bf2d56bc952f2c97457d59686930baa6368ecc9d3e10cc8919197dab3c1c7c564329a67ef4793d3de28bb984c3ea0224fb483c83ebff8fa1e18a8bde7a7f9e7f8ccfe1a643619bdb69ff193f8aa5ac1e841a336fd3e79d09f5d5c63ab963a5e198281c6074f75144ba1e92b43c1897d82fb805de433ffd039e9fcbe73d279fb4de7a40356d9efbeef9c74bef123f71b8ffbe65bffef77fedf77fe1fc4fa5cdff86cdffa1cdffad86f7decb73ee25b1ff13b1ff1bbb7fe9f2fea77bea8dff9a27ee713ffce27fe9d2fea3b0f7ee7c1ef00f4057ce70bf8de17f0bd2fe07b5fc0f7be80ef7d01dffb1cdffb1cdffb1cdffb1cdffb1c3ff81c3ff81c3ff81c3ff81c3ff81c3ff81c3ff81c3ff81c3ff81c3ff81cbff739defec977f0ff7bf80fb4780bf8b7bea8b790ef2d647c0b39df42d6b798f7f790e6f7fe7befde7afc3ba4e1bbb7f0dfe3c96736ec40e029f62d96e5bfef53fd1e28ffeedb24e9a97297c28285b1400b7367e86c253ae492dbcfaf52097c3832dfd22d0539addaea82389e3cbc1a81f3c94f7bf2e8ed33fe7d9d93ce5fd739e9fcc5ce49e72f744e3abfe99c74feface49e7efee9c74fe96ce49e76fea9c74fee6ce49e76fed9c74fe4ae7a4f3f7764e3a7f4fe7a4f3a79d93cedf199f2f326158a20f9d5ce2536510f41fde28749a67f4b64fe23794db3b304abe91c6e049ed3abc51c89170dd7da3f8cae47436e87d80cdc3e2339c9f2d3e4fa22a5bcb979f4969bd2e4954a02f268f2e7c7cf40a16e862ecbd7a983c86d77a0aaffddcddde6b78e91b73e9eb73e90376edf7f1e8914672f6e22b5b90769ecf43c1b1ae7cc904cdf38ddc8a56ed8308de2769c5cc73510af3084d1acafb68a8c71e5dea062bbb87063713b97c54c455f554353c319e443e5574ddb803f50b0f78edb5d11364c036f1ad56a7d858688a6d35258d082d4991dc907609ad1aa751f412650c05b54d1626c802777b51e5d23acdd74a3334bb537624c54d608f0bd2f4bca68c41f14e29c2e019cc87daef2f710dce2be6ca18d88add52529278eaba5655f13154de43f35ae66aa5f2882da540bff98f6218f3a1554a76880fc203d9b9365bba7149822d733fe6256d089cf30dfa69a9972c8494029e2152f8d0aebd9a8de6e06a692a8c0071cc638ccf27aa429882dee5c007ab6a7cc7140f62f8b010b03da7e04425ebb5c0842d0a08ebd8b4777581ce276c789e015f5280152e3e8784483232fb207767d1a76529236ca59b53d1ba7a22d915aa55f253118c594b879a8d5841e6a5c097f702199652a0ccb3d4415eae2ab54527485b12848b65304843b7bd45788b21b856e9c7e72cf0069ddcc0903fae9a5f40065731e440050963b3403f46f4aa7ca34d404782b7f1e8ae859b65345f93a1eaf858de0ed1a95e962dcb4682ab9156d429dd3029bb9f83bcf1ada5c3f722082d52a0fd2e0b0edea5d525fa4c410b8c4925a3143f4b9e93707a2ad854566f39acec42f796183a377a8be16d63dda02a10d808cbb6f8737205d690e33cbc52629e021ffb61c95226498f1020562a14fc5e50d0800b8a28ac5b4bbfa228c85f007f155f2e7a02772a2c3f24ba1136812076bff27cc19adc488fa2075b9a190966236cd0b344976ae112c073cf5450f2920c88b8725dc8abd910168321df6cb0a75cdb33812274b16c4485e7cf4b70e96ac8920224e4253de86571624e194fc71504c897772c68410cfd9595a68f9189937c5915c93b61650c82c3c6dd28f924dd40e3ba7511de99218d096137fbb84bb9d5669760457565e5191c8b6185685566aa6b586af861185f621fdc4833662d1d15c66bd2deab39e857089dcdec7f36c28d20bf5abd353d7addd420f489492a290b1b2b90502863e74f18f8cd4a9b5cce8243c43d9012b5a91ff1d77217641569781987ee5abab3c9653a0cdb14c8f080fb9bc4f932121f7768f7c478f2c385b3e342cea4efd0eb8b4654523776aa6b9bf648481cc29144dcf6b11f8b90029e17f06b4c5279a75b40d0b60a0ad76bcd464b540a5d0824d9788c065d1938764f2ed3a18a5e23f75fc183dd9b34fcebc66eb8cdb591375c154f1caa0b193372aab53e45cb8bb53e0f7e9f96c19b1b87b07ae8e98d837b43f9376f09e7d70c7f8e31ac92bf14b013caca2f1bb4a2e01a4240a5d90da39f0c54446278193134c47ca9b4d626c1acfd754ce529b4aeb4094b19d4821f1ef2444a7a4194253b34f3a44c3e0cab1145c19de22929d8c0dd2103543deade4130627a846827e46eda03fd37d370cc9e8beabd1f538352de70dd2fb4c3177113576c2fbc5b7664ca478f97bdf42c2632122fbe5af652b26f8f4b462f985d9318e7a537c9a20967e47434beb299bee01cb9bb52df0eab21591f59a7c15d8e5833dd33a7f1212f5f64300386bb8e2ba30615991be3804fa57de0ae6c52f1e5b4e49418b89a0dd3c4981d6fa5e8d2153cbcb1c47ca5fd9ee312d53540f03e6eceb5e9b5d0068e3e19eb158c411ad6c7e7d2a961852ad88895f7f8903e202ccaed4204391d86fd60af852df81d19a280beb009cd7e5c51a8ff158879fc84e60637060f3e38eced9912a55ecf37fc2e80dde8db56146c32856ce1e01dcfb3a01be28776a1b7c78c5bec97979fd5dbc0e75e1a9294ec99e2f0813c7e410c5f630a733eb630d48c472f710d98ec3d693ed1d7fed8483ae33e453ca25727bc16cb0aa8fd04a4b34a324e9b204b96d5cffe03f4ed736de8ede15801fa12c9b8f9e14dffd556c778c45e1a65636561111ba1975664fdfaf416b4b213f452aeab3ebd428115be08dfa773a365af8118c394d9f0920a2d21db99059955e16d50d6b2c97849c6f6ea3cc9d28bf784687324f2bc73d2b9bc1a2d86f3c168d05fb4a18c1e18eb9c742697e3e1692f09653e62d4fba973d2799438c74530832da11679d4751f568e5f6696a47b925fafd97df4baa195a7e50438f1fffb4bb8a30aaf8190dfd495ae1ca9248053dd0a5509f064780a3a0e7df2730a0f11a17417dfceea9c74fa7c87032f81f2af4f3dbf55f49620308e194e6ff228f5523fbd3a4fd24f5ffff2e8518f8abe6b7df4c58742bf7dd57b9cb87af9f375e6748696a62f2d62af487d1cb55e7cbaf4fbff7f9e2efd3d143b35fa46a55ae6205e8ebe3332652fc1bd05f27d68d794b092e82236a6279bd799d68e152fea283f1bdcb12e142da567aab8e4a380c83712b86b088dd456b908c2810140d01d623e393e88cdc1dff01b9e01119eec8c1809e72a144c2661544b2a78f3532573d3bed3597d3289c1fac8adee04276ebfc12a93e52f93204fb68e44e4a52cf84a4c30f4881676056a2a20852f82575a653f8a5215c993b0a5ae5aefe183e6b867d3128b3aba1e48944cd22b8adffc265c52b75ee8cc163f4df1961724bbe8f72d5a7e5f55a5b476e236d2dc2a2b49fa0b042ca4ac593392a601f03bacd52e52001533c8891b3a3676e02b989ea735ebd8147a7e0ababc6427097df29e401b8fb4191896647b0e006286337ec325a2d04831c268d31b61d4eec952c70c19189df3c7118a250348a542984a0c066519f9cdcb82c171b61176725ba5ee995363e4ac6d8d9c1df024933d325acea2c973f6c84b4bd6b2878e2464571c7bc8c4162c6bf9c5c9d03200e74fe25c244b0d64b3d4c94e3ba6ed72e771aefdf684c8c744db33c9cd1223882c754393a1fa56b6e744c597b809ddea81d8ab1e7a2fdd131fa5180e5e087b20118d0360f3a5cb1ef947e6183eebfbdf2df90009b54a6d3cb2962b809036569a31543d06a9220cd227137723386e09cf5e46b2d42f61f6d8a1f863071d59e2a1e3099ab4fd77642def1b59ea40eff1d8243dcaecb11d7ce2d8646f64a5318f2a937e222dae8dc7652a8bee50d874267bc227729a354809a9c62d571759ea20304bdc5fa625b473b45cbd3c45da3d5730596254be3fe1daf6e659741296b53c1d656c897e60de51b24704a3ae8af8eba4bce07a25db336dcfa2ddfb33df83a4ed9263eec4c22a4b7dcf646d4f99317b6a2795456f28d901af5959cb614ad6f69892a5be32b33daf5cd99e87966cdf454bf6c8a945b63e0061fac4954a3645274e307571064785d50cbdc964c1a94c126a7b9e7982ea8f5cd3642d4764d9135e61b27d472f59db9d0b8271677cec07266b7b7cc9a2b3effd98e8fc7b3f26b8f8de8f485d7eefc7a51ebef7e3ec63a25144babfeec53d72eefd44031267dffbb12de7df4f46b233f0fdc8e8fbfb891876fcfd44d4a18f35870b7cec5cfca91487bed91cfe284f8ab8573ff67b94b1178f3ae9f180db5b9b683e60b4df8e639f06dc5e169a4dc1df53161dd327c8e8623e41066ff3092ef52c9fa54ea4b2b683a7a09b9f3d7e1f613f6eef5d8458fb9030ac4dacc18e932f4bfdd5b71acd733322a38965b6e71520dbb7b9ccd84b4f963a47c892c704da116d4772d99e4785580517912b6db6ea1a0ec4622f0dd52a49710e41d222a11f759d1c864bb54c8eef188df26f72e7515538d8fa1a34e9fba1fcf6f1166481a45f461e6f5239e2462bebb24a572484c1c39ecdf2cfe903336be986a4d031447fedfe0c48e7d260718497de7c278e10cad1f856078b18835b8f44c5ccb2e28f447fe5b6d61589af02c192c3400b9bfafc4ef1685dd142ed9f7581dfa01d2af4c72667de73b3e490916b659d34ac01d754fb182b1d48ea2d3b3b69e81cef4228bc6c529d968d4127a11f114712042b137284d4e18694b469f075b410a00f537cb3dc2ac7a609b6051651d2c18573ede9441fdec669aab9aad625c68fe48d2c634593ecfb6d4015b7982045d910d8b1df0f28838e0c62a98d1b0853ee92b89f9a3ae4df3535b773d7d40bedfb2b509c3268133d47e22d461f0c55c9702001b6609fe84162a14c533dd558db6aa28c3210784532f638eaf631480ff804b836f2661e54acfc2c5b09eb32f2c893bee344d21a2c20743cbc5436317cb18aef1bedc72ee45d386282b61c5fa88aad045558b8e946e17ae3a4b9585c8e70d040c383893e18187f8c3d8c75c19184ea395be568d14220ba9dd82e55252359a8a621afae42702d1dceb85e30e5c30fd1dca04685b5958aa258ae749c668ce13162a4955ccb8a2993dc10efc36162612d6612351675c52124298ead6212d096dbc1fd1ba6167e3bb4b34f0239be300ada85406a7c6b9ebc7f3026e43d65efb5611748649d2cc50cde7bfc68e3afa0c7bb998c6e5e78ec7a8efd9302bf657162af682424a33f19e874f7d3a244e8ebdcdd91c54d1844cc4540c70c2bbec9b26eb20aabad8ecb9be6757189ee146f912df0e7db1e074e49b0c7723b145dc30818e3d3dda1239307aece64d1d4f476551a56d5393c5038c3b7c026f0f697271819b6e06bf0ecb42b921d5455ce2549564b292ab8ee0b2f8021a3410580c41726a0853575422f8c210a9e5e9fc447c7fcaedf7ae62cc79b6299d6c8332492067a53a56865890cd4a421b51066c141fae0f3693c7592884811504c4e00683da983acd14844420197d25a7c27151e27fde3288c9014e6b790626aaa5efb45b790f6ce193144d39427abf7477a84ed31062eefa3f6128ecc794232589412022eb4a9484f15f20e8ba4897f0c187e28ceeef5346e116047b4116e2f12f3050d23ae23b14a336903b7d5df4395c2867dbe448f57745be9b4090681b52e55be8b2a0b4954c430eda79c387e0e2a148a862ca3a060bbf25d1e3219290a54c010f4ea37576a5e899a1e8f56967d97ba73a3b7a3b4e295bc8d8d8859d6d2b59211dc5ad763024bee5dd8c09646ff79abaabc2f4dc2550d6460ea0370898409e198765f3f10ad9fc3f082951a4d9cd2fca1feec282fb69547db42d347c108f53dce8e797bb4a4838738255d25fc5eaca6ae8118ba4c9ae9e710180edca05eb4ffce5497251bf6ea3a42ceec7845033614ad4f02b122b9c189628cdd8a9ab5f581267e4f99eeb7b9104ef0d8db0a737d156918d22c8d16452e2c1483da57490d99dea89c3fd67803020a2e1333a15d27691fa7cff6a65f963cf068a5bbaa39a193c2f8691f3e54148f17135c75dff1b75a6b0c6b0a9e6b93ace7b65986e9feb83cdf400eeba5e5e065836f7133c92cfdaefd0180a848498605f1309c27892362730c0f9b1417a86f889f4956d73fa62b460bf0dfe3baf2f866188413e900e104290e1a347d224259df7f3474d15437cceead7482fc8b876976ae4d5c927dc3da632a60d2b62749faa5c253b06e770d1a8626b418e91c7944b0794a819c8b609737a81b8f165a6822697038cd92049e6d7c94864b60f5212b5d9a67dd064d53b540b9d52e2e3b9e119b35d5b9e7548a763a08279666a56f4ebade3eae1936328c5a18dcc900f0a798c81dadc9433c7949124e0c0bbffac70bd4a2c017b76491f6fdb2516531d31a79759f838fdff289d4b8919fa3c27442f97dc413e9c87916d9256e95752a27edc478805255cb7a2bf668cd6fd84254ea568ece712d33373aba44ea10fde7921e9242519ec1e575a199b175bbda93b4e0ef53363eb003571efa8c2b171002ec320b484da21f405d59ba1a878aa6931f1531e9e0cc03911ac020092ac19cbce2c70ab135cd121b14a5e5fb0b4964c1f640583c812b2f5550ead0d5296f07be0fadb944a54c1c88bd5b6164856fb495e964dcee2d9c3f87ad24eef83309b68cb0411283674f83c927ee1e9ed53cddc59505c457b82215a1a6da24831de5c0c0a086457dacd34640dd646bd0cda2a02b72154ac6eab4b091d58908712b949bed63a38396a9d1773bda9f9183bd4a8b24969a1e0e4fa75706da0aad077a9225c3caf6de47d54d77167fbae5953eeef17e8a87f971ae0d1dc4f89073f9f4ced58f67a084023b1ab08f090347ab3425d733b246696c2077961cb6400ea0aaf518a72d91284eb9e4fc4371b1f04aca62a1033b852b90e4d72df16056c4334f320f5d632a72da48ec1ef7db2cc997b0a09f486284ec774ce2b9561444b4a1c8cff1f3d76bf9682f2f7717224852f463ae051a34060b9fe12a1e105a274c3cd6177cd8d8478a78be83de52f652594b824a1a68d48da2d85ba8fcd6104e3290488672d0ee68528d1fd705df9ddf1b11ad45bef58e3577e62daa643d62d986297bd642b5e7bd28306f6249722ba2e8c07029c08121e301c18887a1d3661ed9da01de82009bd0e5ee715f2513642ddde460a4b2b0860d2ab6914c0871a6f3a026eae7425f94254e309e2c0090c8337b4b53373dc784ee43f6f99bbd738da55e8eebf1c4b4640d2bdd542c2349c7a13f1aa6ab3f946ed3d14133335126e44abf6b497842ddbe8d4b03763912ba92b7b45482242296170815d7b24ade26023af0711385302a9ec6fc8cf57bca426de5250b918ba694b4d138b54515c44b4b3bd0a285c1b68d9252f6845ec9992b0d932890772db4d909429a5ba370e768630223d7dabf6882e6dac07c4124980e062fe0e0fdc1a8356b517ef2a5d1f8794ae6e0dbb9c7c3ef1f556090b44e18d2f82e687f18c9433584d357caeb79e690dc94ef8bc1c299600f0cdc5d1cb33c4bfd9c588a1cdc65c4399d62ad35e74168c8faf67485b7d067f266a1515bc3a13301fb98d761af496decc7d01032439405f76c40047f04365a42a78212dcf0b3de74321a4db2fe6838182f4035379cf322b7e6276a38ea55ca018341f8c42f050c1a4e07c07e24ab8ad1f357175a5f9f6b9350225f02d111f6d1fd25a4a70d74266ee1fa71576a746d4bc3c4d250f5637892725a24be20893ecf065df5f716615ed4a521d37f5e5e6cbadc3c3e23d544091c36c9456e63e5de507a41e3bcade64e79e392420ed319d6e4ba24949e9113879774ef33b039a4ebee1774e4c106fd4ce7bdf9029f9845036d4343353372f50dfd7e4bbfbfa3dfefe8f77bfafd817e7f4fbfe0ea06026f39f08e035ce65b2ef42d97fa968b7dcbe5bee582df72c9e00847a7a731ae2b38c7114571265bb2211fc3df7ef70d2fd72b91c78cdfe2bd22bca251aa0a6cea2ddd4e20f57d2aaee53baee53baee53baee53baee537dcfe6fdea6b6dd8ce4fa7cc3b4f88669f10d7fe51bfeca37fc15708f54b41a07b7367c380320f5a7cdcde1e3195df544ff039f2da8dabe6891787c866f5e9be1482bc5ef8e4b86360dca77df54d053c909840e2ee81ecb6fe2d19fc2b0faa8e4ad5f5a513401c75ecf1ab55c2ea00194078896a5b2c15a8cf760cdd63e958e2b14b93a890876f3e00b9b41b178872dab2696908724a4df462663017d29ab86ead694d8bc58c7d4236a7cc89b1f170c83dcffb2c7017807627b161d6ba8c720d5d60406d16741494134f740e715495279e35a1982a6552b83e7f382ecb46a156ce57e5f58e9265588274b7461f149cdfdaec3d26c1a1f59c1da6391220b3dc0cbec9f936327f8ab1806371cb03fa86a4d985c54b14798b30c891f0d22ac28b432b9266dc3f99e0b90b574e77bfd0628631d31f8dccc159d5f152533b10b148ddba457921759d9d83f0e6ea2703c2182352fbed8141f8184d30a70ba4697653aa39ca6518b510bdd2283bc73d254a2c436ef45e2d1245a9f04df2711854916e857009c116118f1179298738c0a600d0bc124498f983955b14eaa1b63437664d40288af3ef1f2129fb8a8319456e8543ba7b7e46a9de21197b685e281f27b83c6262324babc614df1e81c86dd91c02a8782a15649e88707d416e66e870f9ddc25cf0c15c858b219567c295e57b19c78f886b514462b0c41981a73bd95833bcfa38539e28755ba0af1304b715b71c7dfba0077087e77bcf03be3c577c9eacf76962f6c421bb72de36871620d46eac470fbc8e0cd515495265f3c536dd0fc32d83307dba5fe64bc18fc88b64b7370f3407b1ce6494baf019385c242c03319c1ec0d5325065781070403e118a12b566f6355afa6b20e7540fc4c1eebf00164088a821d7612c9eae0b812184ce69a3c97598a5d36c1dfce492786f2c7f580c267d1c11219d61b388d130284e7f4640686c9696bbfd496d1604f5cb45c919c35f12197801cb33cdaf7454467fc0885ae069e97e36201a0cf0deef835040c039a9491447e5d185d5feac64a520a58122e191393c659e4c0f36b368096156a89e81cb52dfca70118563e6da49eaed2d2f1bb2c6a658fa6a00db510664dfe9d457e1da65a2dab7978d415320cabc54659fac2c4782657568520dbbcb9d8b223b5f6c7b8aad6e97ab8ddca4291bfd3e882211715784206579ed4d08db0831b6942ff95c13d6f186a398d497f268b9e856c7b9c30add301159d45c42ee5db3151d76888541f9854a9fd3c0ddf4faa2cd9543d62b825a2717ae58910c7316a4d00df90be3b1213acb87fa9f6ad9543d8a451a5b00e8914fb9e941b02ed7c0db81bd6d225560f7c5241994cd1820ea50cde2aa23774f6f5a0c30b94e4b4121ce5e125566d24afb216c4bafa8c70e4c35318ac2df88c6dc7392372f9048a5ef35a0faa1b65e8b26cd9e0433d6e57f2f3fc101a6b3644cffdaf652713aa28d0676d701c8f0f130d430ba8003fccb8086c717c7f68574a7e57da8791edc91b134dbc6aa3b6c13457913f722c669a44f943f6b20cbc4d119ea45ee88be06227e996f01e05941484eb8d4377274b43a74ca7af16fd964ab97089e90b22128d6b7c0f7aa42a6907c48af9f3f942a3066f28c90f193885d0034e9092fb019d5a8c276783ec6c707af51efc1216fcdc083e0cb24131e0dae05bb7252e394b7af57407fe18d7464a3c6cae6505f21d5c6477b2c467386c30e25d06278e15faba2fd8831458099bb6a3fb94f25b5db17ba035bf83d6f044b85455e358e23d97b9464f6af86c1be9505c6a74640feed3e9fda6c4a3b5366a0d6e6aaff1bd5514948359713041c849b607770d78a348aaebc2b20bf519876b2a60170a47d57914c0d3ad748ae0770fe1f3edafb52045baccbba504e1180a89a15f8cfc1cb56687e9b9ed1527ee3f896764c83dc595cc237af47bda09d6be4f9bff432d80f12f829d354d9a4a17f2b3eda7933810f85ab20c62232c7dd7ef34b8f0d2148ecb307b0914c6f4f0e79486548f7e4fc34bdebd10f238d7e00c1fd0b3f77ca91025be97a02b1e151a94adb5a5ab896d3bae86411e1c5e47593166420ec5ef4e13536f4495da4cf8ff5c0791ffdc28924792217f385f90f6c819690b9364368a034169841e06a36ddeecc194278b52dd186a1bd32662c827bda226f1ec442262da4e3822be010ffde1bd25d6bfc6f385c3435a2d727c0bb1d6208303c76789e4a4678cbee53c53edf7e40c348c310c8e545208dc9bd158a90149b4c06b024c3784376473c92e50c6ec268a451ac086d9784d5693b3ff737547979a75b9e35a61c9705666afdae18c694335f85b73de8deafdaa14d23aa37731f4a8b2a17f5b87e038f8f862296888638b5afeed92ab8147782bdd34a5d99a616e6a404c1332ebc64d56e0af4d90e8c457aa8d6449029080196a7f9e4dc8bf26309c40f91b36747d60680e782089632f4c0d1c2db3e465c04708cfe7a86add72cab68a1620695223adfa45ce6565b5c9660900e99e008312b80c7712c803917a6272a243c4344cfe42d968fb05670c24d2a32c61c94047e8b8c2c453aed6a55375b6c0dfce4927866a5dd38358144ab95a236dfaba4172cc8ee9b3692801a62fdef17cc017f4286ef828e262f27130cb16bdd9fbc1229b8c473fd172195ed4d8605db495c16595a6a307236028860cca7e24df4809d22a1e57931a0a974924983347b7476be9167cc53b61be00466b225d82d1e9fb983cd80202e546c9cc0fc9826ce8932ae825a08fd183132e1073ac6352123f27f5b371c9a4e8791e2fd21d704cfc1eb97162022e743a3df9b81f9b4eaab512fbad3f1af63ff0ef5ea75c901babd8cb1b61cf84b90e92f4b57443760ae61e11103cfa5839acf0483b31b1a0525b3c884e2a7f509da27100352fd29c1028c676504a2bd22f4efbab1e8a37a7e9d8f64b160d652a31717f1dfc95e2a86327d55075901f84342d14a51891dbf12405a3d249457a1cb0537a0a2ec8ed17b82cd0b771af81c791fd925f24068c7910ff63e38288206c09dc3c5dcb6a42f4e61326d22d9ddb88e13c082dc43abc9b73f1f4c45d798e76d1ca8bcd461c99f5e88a3f9c463e8563621b711b5be4c3cbc4bdd9ff47dbbbefb6cd330f83b7f221785e6017cd83b6499ab61fb0c0cab2ecb8b163c7872629b010648bb615cb9223ca719cab5fcc89a46cb9edfbc3ee3f943843513c73389c43a662a7ba69543a718d4e90d0c3a7327e1f798074323b0450821ef92724e290e875a275c5b0916607f6c8236d5202d66cb0571dba29b62c914450ec42b1dc16ca7e4235e4c3bff01cc8d88498c8154f361237d4093a23e452b2eb75db2fbb4340a2f95e08155e2db3c3ddaa5da720f49bca044693a8d6ac9fd3e70e3f4714ff9691fcd052ea7638d871cab1d245f120649e2027b43c436c56539029510e22aba6b2129a935d3c3a8ba54d9a28b73b51e313f21a1bff3bd10917417250ebe5b088402babe9269aad0679ba9f937b4314688947aab4b911c8773c0ad95a50c20ae82061b1750a36df66152119d1e2c1675c186fc308b2f34245d96473670f8298523e2fb6225aa95801f9a004cc829f92956e7251fe6ae565885861b3ea569e2d9fcf8d988d03268097a62e31a9e8ca6c53a803e3e10ce96733378fd98e1c26c7e8457bcb1eb0d95e7171e8604998de70dc5745f2cac21bad024ff1350e99646f0849fb1d877916a5a2c2d44ac926423d96990c1c6ba0a360ab8569c749a287f0b93bba50a4cd9458dccc0bd0f5277588a31f30747287967e6adba00e77e0a8aa2e89a98081f2bf32b5f3368991f4dd4f95d30e61a8b79b4da1b476987f0f44408bbb27f2cd131a470a7f69d375806675ff74df7fabf69d199fb589934e3b229dcbb1fbe415c03d7216c116214e3222fec41ae9798fe130f027c351e767103683c1f80677159519fd622b533b72c115d6a5285051095a99c10bdf12a537ad8d0e620256cc214854be8855acb2b261257c0451443b6bc522c99425e33b22c2c2be9e1f964949d649d9f87984f28dc83a723236c22fc2f0dd20f1d1231fb6aacbff48343124bbc4805c465a7c30f01f1c0711f7ec121d7fe5e9c3aca2597943dcc75eb4192d93b518a8903530d274171f86ec6f94f858ba61963532d7fbcf672b90edc180c0c37c11adc90aa478ceb6cbe330680d83d14dd80cc8b0abbd951067b32c8526e7bb91c8e0395a5d8e7658f530087b6891a7a96bdf43c5a1932db141bc38ae82b5394eba8aa918c9ec7d4b90e147dcbbe22c9cebc851d6e71890954deba84e6419c5e538734d8d929c5be4f040e18daf8ab5832682a3ef9694eea8fb8e56ed224277fee2ae651969f36e74050d242acb229932eb17e913661fce96116cefaa608143f49bac94e3cdf7ceb84a70782a09bf86862786ee17165bb1b9b550e503fa4e208f8bbb4c158e8204efef2cd480168f87aed00b445843a2ccd1731765498678351ff6e470c6cc939b71afcbc40c935b9c27cb0868f7139c004066591c1a0d1ea0b4247a48c0b7a908164cf3b751f25e95c0776d7a368f60900909434c236394d805247af4b38d8aadc9cc21c34e012becab46237f73f4ee4d5da753818f7eb6ab287736c96264468a1cb60dc00a6ad84c68e8d27f245d4de6aa104e6d61fb7156290b39d83c3b3f6bf67b001aaa28663555190104a8cd7e34e8708e763de019e8a39d0577b6d01260a7be8dcb376125b3b09adbe18778d6b42c24946736d32caf346eb5d067e767632b656f6409fe24d0670e2b42ca8b7fe0b7d24ab7418c0efb2a4d930d33cb32b533c2b938eca493c9d392dc144f6dcc9eb9c3506943db137d77414a5ca52af2cd50210bbe69ed27e355e05af63912cbccf3f22ffc6fa239bf56946af5dbc424691b15a85f4c96b1989f7993b3762c7118c805c03455e3dcd8a6cb50680da123f1161efaa3915dfe013024bab90a1c1f5dad879504272292b82ecfc31fa35307f9a019b4bc49774c6e5d8d9ddf874e13892774c2c52b8174a70bc31d6c2e6eba78e5b39eba375b1e278e64c1b0fa396d3e5824f9814e9399ea58c70a62be563cceafa30dd9b1da00609c1bd26b32180443df1b05e130802d7e44cf959a46d3644e7701bcbf08ccdc3827af4ab43d133dc99232555a1bd9aa48e8112a166ac111613fc53da2b38e16aabf2de5b46b6023a84b1564d6befcad95228dc46f6686e46ffd2286e3ae406679ba5d9b5fcee9ab397db2e357629be2ba00d1d1b2200d1888dca945e4e0fa05c9c22f8a241e6206f0e6e34fd838fd83acc74095a2e13e7eb7f2797869469ca9296f91bb24ce77007acf71179ba38487dc1ecdd33c8f6d5497f9c68d15f94a3523bd8cac331186e4c24620500f669cf1c68fa0c37ca48dc939b690fef3e48d8dc120ad9cccf742872f23bd34c308d5dbb7c57a5b00f822bcbc0817339837b8447877631a56e45d3cca4a1a4626eade39dea8285685f813e5a9860269d69836afabff8a2484d96301d0994fd8e1ff12b3428a3b8e36b4f63cf6ba3765b9a9a80ff222e9994486e36b933920a3f3faa68bb99fe7ab44a608002ae55f476f5c3263b65614198d1d1b6f36531bcb023d947d4df36ca184c3c107006d095b47980cf644baa466ce714c5c981931cf510a5c8c30ec53e51a7462e18c99d64274157070a60b2c385d8a60920b5fe6d280443319de5b58f70be6e231af4b5e1f9df72712ca0e508fa237c205aea7ca65eee8bf0961c7ead498fc13bff0391347bee503e60780fc00afde64691d2553b625b250257b069d27594cae1c0fb2617f209fedeb05f31ca2c248a439f732dc66cdbe3fc1ed62d01f75c69dfe5dd8ea77bbfd87ce5ddb18c82bf81a9c5cd81329e2b1df5257266c8e22d14c4f5b4f26584e379d14956da59bfe129f547c57b32cd7a92144926ce15c10bd259aef9d3c7e363823be0e3a10b235670bc06b39d2c2194c06210b80b2e826b1cc2df18907892d1ee12a702a5b57919f45ce9b3a54962f330288684d239236f68a69521651b1e77e80252eae5cb4b13939610d9b934971f87b330468831ae71bbb3d01008a279075542c928c64a3e99d0bbfb6f76aa2042b7d82c2ee4ee98e069ed3409111ea1771eca90b66c1159375c1ed611dda66992acc351e445c796f5113a96fd0b2daa2f6c777323745ac203c1a0f89e6639d2117780879dbb272cb57a839377ec1f27ee4ddc62b145a5e8f0a15398a1e029601e966855690ec2da9b9feee1b8906badf8709f1cea681a0c78ce43a4587b67dccf5abf317733f61b32d8eff44577732c60ed227fa060ea26cc58367a74651b0a8d8737cad22bd2d94b167c0d85e053ce3d9566c33f7ba84bd73265a80f6964ec6a5e529180ed0a0ca6ed8cae523b2009ccd857a9a96b0ede6481883a857f183b789b46651451ca4cea25396d16c39ceddbd451f4c42aa45238ff7e672a4ca066379bcb52a506b56f3be4467c4a4e4515aa879fe5669103e3dc596bd066355e40710a0e26a5c54d19c4fc30aca7c2744c0c0150499a5f96cb523f32533949b8759d1086ebc9f9dfe7074767ed6ea7606789fddf76f1f3a23a483fa93bb71307441e804cd5e2245ba323ab7da52a371220a9ee86d6da8164823a3af10d70816f6af71739dc5eaed02cd1022cda42daf2c6b1a419f3c332a4f796618f2e820d79d8568a6fb1f2b518409ec3c3024178fb28d95d96139d7bc6021ab2259d3ad9a42e96e28be2bde62a6071e63d4669c2f54495aaff9862754a530ff880b29148b8f364969bc68476945b8c1d00eb4112aee382a6b0f570c4e4e206290c9a44e6263df6e9e266ce9596eeedc8e334243b2e6f017722e99aa65f49ab085b9b96d43ba38dd683a530aa5a57917327159d40c605c21d8b459031d88b3cf70d97f3a7d0b2013d7d5f5d24d87eccc6866e9e329af0cbc840b4991aa4534dbb7375b2097533e51f645397451851f9079b27de315f890f3cf727933ebb33902614f39d22d4e79ade3b271dec94a455287e2c1cc852111b9cd6215dbee88d56b325383e44da543c8d19eb75c327c97a4a9d13a420966d6dfa277eebcb77f5da140ad4a4f58c8f6ead281e4599715cd798d732c046a9ebaca75ca0defcf2fac1047f90995396167eab4d349cc381714f659edd5f4df3afbfca3ea53559d966c67fcf14aeeef187bac824b7cb7509ca3ffc9bd1810d0149c4cf98d52fec51522f9160b456d499ea7996fc4aa73b846741065ad9a5c2be2298e9674bbe82a38592cae6a49f46f1a4d15ddfc0a6b611395cb718e9bc4c6baf0c2bd61a5323dce1d33e602326a1b036f7c130e8376f03830687bc9d054c89960f15dfbbe36ebb9238ec2f63b72124127b4f07c28664d2e1fb9471d14aac419665034010958b2cf48adc4d0c3b3a143f87a6c9e46781351b01341a0a460b371ab801a5bdac8683b8db6616ff3ac6661e062fadf00480b6f34f6c61d7f248712bfaad066f916721bbe4ede12329b59e41b49767bd77fb873b38a1c7ebc528657e83a554193fa777986b7fe23b2a76f255d5cc7b4280def4250ad22a59b2b960aab9aebdf9e9d9fe1d566ac0af5123adc8a6611a1709d6343eb414d6fad6548f7a68ebcc5ab37e14568551a952fc883ccf2c2229a293ed5269b324001c50c4dbfa26bef995142362981d8fd8cc9d6c6b62fc02ee872aab4167ff33416b99492c43a2e90a9658bd101eaecceeb5afb421a7bf747e08fd14f556bd26d75ba5d7c1f04774d6203e4db729693e7fe68aed23d6b588c9724f74c360eb656dbbbb54de709f37e72579b03fab88204a2c73f004222e71b93c68191c4bb31f0e5dcea4399c8d9a7142dcf46dbd98c6cdb95c5de6753512c204435213a2a75ec19e6dbd25ef023cd7679767e76859a4953a13b55dc6c9020d32aa1db7286acf37737daafe0b41b5ba8b2832feccd3fcd2177796c9394964c00d8586f7410cfdfab001aa755d8d4bc91af593eb5d39fd87615ded28b397c7b43cd90f12e774df0e00ee7a4321c5362d0a2213f836c06e3c01f878d6ebf118e2603d82bc2d1b88f5c58f1f70f65c16578ca4b0b0d4eaf2962b2f8fe30ec8c03dc3ae18807dff08910faf7cdc8c71ad9ba29d5905615314b433a6279865e12f0cdb154c73e23fd6591af9d38eb871ffd97ef94fc08ed12d0523287235b14276c53319eb2b52b5335da6d5451a8f8c0e26515465f0fd9367418c5af70aa74f30e0b9c1715105df266cada6e5a1451acee9422ada1795e440bb25e844681a65eb110a1d602fd2ce622a8c89f66f2298dd37ea535d1c40f9f3ef334b62694d801fcce42f24cecace79936f33244a1653a65540a0e88099520ae22123d39a8948808987f25fa4eed8c5d225b62d11c4c7433df6598095d196dcc7b36b3d984e4c19c670a7be1e79871fc04032d21f35768e8719a64ec9031afbacd8a4afc304c7450c9290cd1f066485d13f26f421ebde17c9bc2bacbc320c992d244cce0e24da832fad7a2b1240ef8f1b69b7e824e7c8afd5059f58748efb3193412a3e32279e52bd22c292d822d5589bd3b51e920910eb2122d7332d1a3681e15090faa665446ec1275196931e22826893bcdc6adda0fe5a861974a71e140ceda99cdc159fadb82544112b9d9b35c3c41b1b508de995928b3b27614429eb6921427180b9fa7390cff989917d7b0054ccb3ce22f3cdd48b2a8d81b228f0e26624a83a66b6c5f518034df3882312c906a9a2ed16c3bbe4953d35a91850ffb421c090c1d4256a7238fa10bfea4d9384ceef4419ea1d12a620f9961d1f04641e8df78c8e7c1357bfc3408c2c13068751e6b40444ba363ee61c7eb767ec139c01bdea252c3112cec06776dbc9bc62cbce1d07b6a4c5a2d4c8d20c85fde3b77e36f984400937a88dff57a83a0594174eec69faf0f219717471f1f249a1ca76a75fb5e2decfaaa02fb4d65c5b1156eb242629b75c1358f56392fc49fedeb857dbdb4af57b4eccc55619916fb924d40a34f3aeb528bc6b0e3766b16a5d4ed232940a534c4cb3e9c0f66f057d7b658b9dfc1f4e20bd1b531ead671bc0a4e1c8f7202eb64e5e76b37818d75b2f2f2c245d9588b1ce855a2d75746a91bd7c5e674cc14a178d1792179bd7de0c6f50bd9a31329aaa7bbb1f71806c3a1352a8de72dbc23dfa9e9e8be6b97455a8aed74d36e9b8676e5e1e558b85ebcf319a5fa9754d4d9ef27fdb1c77fd7eede455e222bdb9931cc26b4069cba1c8796b76a3f40de8e232e2f8bcecac1858966b37c58ad89a8e6a60ed058e29cbb49c74b6e1737296b57904755072e2bbaf9b519bc49a9d67cc9afa262b6b43cf82669b037715742160fbed9459c4fa03641e7ae193c064d24b11f82c6e81ece3eddbeef7581faf4dac1e147c2c0ecf3a19ea074ed0b1976936981f71a02681e34a5d932e11cf3b054996cd4d8282dacbbb3fca76e7e24a784a458d7a63699c26c629d698c33c945e2944db355cfcc2e4cc9d8b921ecd93691b81b09e12455ad1471abd91b89b2df506e46c60229e604aa21a3353e682b372e020814c9cb8e487fa9b815cdca9ccc8ed5343a89daa1a4a86293c6f60fa678760858ca63e194ddbcdbc989f60cead6bcc2dd7213e392468c7f1a50e8de4659b029d33837838294b9472a9d2377464a95a7fcdd48954df2edc4e4008145023b768bdecd99f7ea74a71ca10e0794f6b2d82aef5aab76cef8b33b40f80c29c6d1145943c47d58ab6cdba48b99b067df91a5e1c6201d26600cb25f5d24af7c1b207eaace764ba591c101cf0b7e5e2287bd2c1d174313ad8c936f6d9cf19656746c1eadd4dd364d5b6c80d87ae111883ce762a2784bce98c324e33c90bb3f5a2a12558267c59e75c856fac3d885166ab98f0b572752c54609508baf8a1ab8fddb481849f43df1b8ac08ce163dfca14530da6cd99849bad54b6773c75be4dffe67ac7429ec715130416c075b80e576521515f41f2f435be16b759408adbdd8c621ad4b407b59dcae2a418691264707f0bca0899309194f1664c84119d6c351189de759d98ad649ba37b96339fa6c5340ae5645a5873751c7c8bb3f1a994fdb0c8bfdd14872487119a47ab16177aea2216a12ed36f9c2c9c4ed015b096bdb68ab55c791289b69ed589734115dd136d7e812972ba4ddd138d39aa5819d96a07fe2ed6db52f1e902775ac2cfc780c7a626b4bf368a67e263a992629df62aa02b56968ce3931a3776c7232d626aa59ff727bc97d17ed720b702cdf19600bb5afe24a5f3bf265063648a3bdb17c20c071b24eb285730b40f6ad78d9db6a587453d1f7c9ca5b25ba55a57a2b83f56619e9443b12392ef8206a6aefc0c45ed2347f6b92a1361854858a56a4aebe616f92eb48af50a694dfb9bef03a541b857a0c10714a02513f4d36fc6a7a03227cef8b49f2b5b99a65353f78f0852f72ca2b20e7cf9c86055f2dc48a1109c408cc5a50a5d804e2089f06a0996c9bb88de7405758bf2a90559daa406b982a2b5b2a2ab7851a2974d18a072068716f4e1b094648ad5062643ccec8e7b658111523edc80aee0e49aedd461c935a0c918a5888341741b4791b6dc8540d4624d13c556f0d1e5cf0eece0888b7522327fc40ccef284d16995d52302a529a18017ae3ecfcec79abcb64be7784ff5d5172c70e204f4a0b71ee802df0686289a936e3779f44624659b41181580318e44956eac71ad85305d644311573296fe07e9ea35c350b70441b859367bc2c945ee6e439d84049dca10262cb8267e767cbfd6649d77ef334df7532744b0dafad22a733da82a476e4f20d861d4c2f2f860625b63b83d1c24597ddd268d620e70e835738186d174b8e9962a12b634f9a715124f158ad37295aa29411e3428774ba72412260e6c238ea6dcbbc9a0f409c3c20ca8564317211f6b4b2e42e6498ef4804d4a20fe3346538b18d78241507af04a42337ead0a1fd3aab4f3ed1ea212f564400d09b411cc96ed15da828f75322c796b49eb1f9345247a17b8ecd385f908d8ff050453d2c150ac9cb81dc7375e00468e47d8ebf5e261ac91bbccdffa714e30946958e2f6d715be777d6db8749668effcab54fb7a8ca51e04f2e0f7f7261f5f7d1836f2f271dbe34cd772e80d37432380f44460cb3cccb2835319a6c569b8b6868834e34e6d844c91112294700cde28a8e9c6b8ecb00a2b54ac7f9ad9ae239c3c8e7b9729e22ae6c60a1b941be20dd1c97ae0acba55a23b733349e6c31d699915a91d86d396556cdb128207d9b6758271ade79a65027712a7b19bd0ca3384169b47c5bb21540a2baf0531f1a9f0c22a00d995027ef2a0cd72a4eb6b0bcfcdf782bfbbffe8f7592fdbb832de07fffafafd7df366fffe7e1177a4d9aa4351f7cf9f4a9f281311f1c8605b7dc312625a6538898ae9a97172686525718453b1d787bcc3ae026b5bc8b84561c650b55b03e7689369f5872390c59823b5c465a24aba791563fd9ca2f8a0bb907059862c67a2e3cc7f910d9e9b0623c76c6741b1ddc8d8321de50e31b031f3b74833db9eba1106253663bcb1d646a471a47070a690f491acfa22236ab4413577f7aef267335dbcf52a5d1f2b615c016098f846c0ad3d02602d3e851e012bfcdd690a08f8670f13e86622c9697b10320be2515c31df692d01a3ddb6a4e6f2224607a779405eb6690c0b5fd2b9f19932c6ef67b2ca6c09e5ea43812a5afa83e15b56592d62d9563e1223795d1d11c482fa1c40f54a58d39605ae20e8a8debda152a54287d979737d1abe27ff40bc77c4514c741c5ca058aa288c489ebf9dd1c8047b0f93b559078e88aa584d8eebd68b3a1fa927884b15e8caa0d74b6360dc3f2c9c6a474a15e0f32410d68724c7084c0fa57a172137494f6301d442dd30cef208d354ad6f8a01b4f8f1e6853b2d684fc4aedb5c74f71055e4d11267a849a9ac66228d374e171da852a47f497498606246fd5de186860eba37d2a958d35e49af7f89390c4e83977561e105123b5a9f962a5f6cced649926c31d0ab799b52a10261a8d31b060107d657c704585429311af90ab272f0d6118fd513d752d269276c65e8756658934074a614c865d918cbe312a61899e0cbba3686d4fd7c4abb38e9a515c9bb5ee39663f4ff3c858397a6be66b925d7aa437ab3696679b225f1474ed9e67a535dbb3c553089c8b33d1add27a97e3cae86d4b9433351629a2225aeb0af714192932f50bd649a38a4acc16966e2f8647704969fd6452942d71e2c237164ffdf98af6ee375dcc8576da25e5d22fd0544712a55acc773a6d85d56ee63bbcc71ab86d31d91c80687d1db3149e888a68ba0c56d9d2657d87a1efddf9411707808f1f9e9d9fdda0c195d12cc7ea8c6efa0f61b3e375fbedf0367842c136c06bb24211deb831f3b58d6bcec735e34204997a2b513bcd6669645f13b4da050b612ccb6d678eb663866a962f329622d7aae4dfd1953dff4ad4da8d1d2cc77cf9a8cc5940bcdded373c73b1028d13272573775183d8f4a7d1d9e79f19036395b8d000c89b3e6c05b234720855ecf2e056eda173712eafe8bd8a9d6c0437419ee426cfd0acd05fa89d13d7d97ad21bf0a7153f81d068788820ba01064e8e74c7941e61b45916794c6c19a23288b44ef3d90a692f2457f1cd28cd61ac95e725bfd250c6d741b4c0e3703c5e6ed7d32c4a52a291c9563cbe8e36a84975c17229b11cdd29219d9a9af9fac295e122fe10ada5da7d2f66e685183f5d2004c98644e81e8712386e77f3888473481c4fccb199c18abbec2194f741e18a6d0a051353a2ecc6a6923b27813d559249267c8322997034592f0e72e675154b8d17879c8f2e66ec372199add87729c706857a85019997b9f3ca6980ccc69e1c27b4f223455e81d011eea262ec3ed7684581dccb2ff39ded55eb6ac50521a1ee18c55f476f46c9bf2a75cdbe89a47e7cd14043c3de34e018b3e60fdd5f11c823cbb2585d07c2b5e603a6392c52152f6d9b49b326fc2ccd1f9873b9c4339f5118a27b3faa58f53888d422e76acae9e668f2a0e45f4c6ba164b97402d985624b419a5bbd2a814edf5f4ba951877fa4600f243e3f7cd13118160de7ab1480f02d9444dd4f1130ce4bd3df9205fdf32b2a43611709bf91a3dc5ab6ff186e0c8b50df986d609ae7a9d08afdb9b0c4e470cbeb33b7e66849fd69d9d2ccaf8a13bd211621940edd56ffd1fcc65fa6ac1805c683af985d0ac5f0db1f5da5b1889f58ebc87742eee9fdda2e63b8888b9781f5027d1bb079ccc132472ee0869fc97a618c242f7196e7c2d18cd52c59138551b0e24c1b25d9f74cce1af9f5fefce2ccf1c061747a20435db9ed28a2b5ea34e9ac2ac9c285cd158e48ff10db87871b6e34e6bdc288fac72c2e9c83e1b3c3fcc0a543910e2ef246b0122cd9228b24b285442da8c877969d4d9a50a24b9da7d54a41930a32533bc72e10aa4a0f1c234cb33c85d931ce372e14591e4a973e8ed9d28d98767472b5a5b1ec4e51acf903c14e9a324331fc6c5503c92485ac20652eaac3ac854cb6943651b934522ba8536284bd469d5f4138ea795d24808553f44a9f3eda576939c7995c786049f86f358efea043f4e5af557d58db484c4fcbf34fea46a57a2b29f893ba110a0bfc41d308357e1cff478e43c58ae9d8c1a1696d636c170ed855e731a3ed744db20951365be68ec1e06667e435ba41331c0cfb8351551da9cbba476962d33b68c7d43224747f399a347ac1dd241cf4076889bbd76f765a9d00a52ae9e6f62f87e997bf6e61ea8b3c23be9935b26cf868c67c38c534224412831d75b17474372ad8231a7c6bb643de2badb9a2685676f459c5c355bdc950392cf5825edf510122c149135d2847c727d13db586f5a79517bba8885d03d536152fed264e5eab80ce87866573ede56c7993e8327784ade4c08c7e9e5861080ee8728e2d8b6441ca93cb5c97997586441b5b99cf7051da6a65995e837ca36d64ab9736c6969d04b0d52a98cf893d7117bd4ea3c28acc50dcd88f120546b1a4fe27a5454c68b2b951e2519e0e1cad4897ccb9a12300311aa03144fae242d408b64591a8b88fca9a021ca4d11ef535f58508961123e092a21a966c4a34423d27f6b90ac3e8c78e10228274c1929102173dee0b879d3790ad2cdc609a817b1b80e3efc7037d8d1cc29b48632c666727ce7b8b35e1955b5752be7fd92a2a2cfae4de6a255632dd8a68527d86f2a3da7c12ab9c86a4d30a5ca39f169968292065630e2ecfbb8d945bcea894a22214d2d87748117682d26f27ca450ab50e4f9574cc467880d93889a52952653d1ace4979929b2b4d7469711b86986ccc4b7fe3322a84eb0af3e4378b19516b7f99d2a10bff56b3f6da3576fbc76d269f4564178898a669a40d735fa57497ce2c1532000938d9115019196d21e7cfb991fd49f26ca44a00d385c3f356e39a0895157f9ec74ed2d9c7783516610c7787a44c940ed3641ada6f912ccb69c096fc07e3d53d8eca689c3fb0b3f952e9b28757af9a399d00a1a37c14c7089917f93b2b9cb23f259c26c15ba9323156bd8c5ed583f82ba38d18a2b8a5ea1d0e8d1bb52dd047f8b14b6f95e96da144b67416658dfd26d29a0d3e26b1b0f1c40310df527460c321e1237b236f734d5cb4e3eb9e8ff49b5ca367315c31a80d90f55ac9d5341bda968ed91a184dbf245bc8354172fc0dff05da9f320f433d5baaf5d1af6bb2c40198af70b4d18bc8aca34294315ae10c97a6da8c8b68b64213b3344a6a40b16215bf3499daebcd3be1ee904b7b7b85a015f6a7f31b942c3752ffd5d88c7b874d5289383da491f12d3067425802417a194d6f4c5365b8f7c6173e4c1ed1668993f91c81de2282ad45e0f3ea3870e451b07c4345779e9a4b633a78196916236e252a4529e235c591d04f8d5c2a37daf178433943931f7bfe1be7627b901d54983cb92df06f4eb903b75050736e64038117b17597e31d8b917354696c3df0e585e28546b338aacd4bd45967f97a9a64cafe533b9db49d523f592d0cf25ce2f65e2b2f3ae69faa920d5e479972d3858b8c436744e14a241460257238ec1069869d89ede00547c23897418030fab7051a45888aec2e2675ab643fd814f94c69ad629ecbccdb8fa5802eaf1fe5b7ad5d62ea26ec5bea2bfc0dc66dfee8ce82dda3cea395729c8b71ef89bbc5bca06f8db9239636edc4b698d849760ea55be45d3285d0ae7ca1d53acaca64c648483790ba5a63061d228e62d9a4d876b88dc9de6249026394c7fccf2dadb1119fda373c34c59c054f76a3f142cefd4c141d9f4b9dc284d4e7dce251ab5b8ddb65a4fbbb0c15ab9cc1d4df94c91a77221c8e5d265d4e807303ee1cac859d0cce20c55e06f5617c478ede9d8632ee6639854e5295cd54434c201bbea34c516d972d0bb0251253db9565585766079e48cd0f1e58cb7d5a01900db6d76446bbad235d51e64385ced6cc712f164e24127a441f30697953961ba3d9b02ccb8d351a27eb3f472ba443247625d9b0f3bf6cdd01bd9e9200bc4c38bae9f3c594025f33a2b2e8202aa2b52a0f74e6644faf595222ade92ce4c0e8c003f5e89285d534c956d6fecc16b555512755b120773b18b7f2c27aade7fb57fb0dab5d886254cb7c0c599bd6c23ced47b3ca55e56c996b95911110696b8af1c64911a2321981c7566f17152a535adb9b54fee208604b2206ab05404a36bada50f42f68282eb497c56cde0c5a15a7b537cd8bb26a6a1f9b7784093a73d7647f5831c18df43376286b49dc1b40a5777f32a1a02bd0cae0da14ca11d5943d56a4179d1f1935b74ceda80d0b856bf664d869e5453b183b065c718d9ee6f19e2f9d9d11e334122bf718ee8383ca33b387c0d33abb230dc078b49dda88d94307c36014a091d95607af8a4767e76798d1a99feb432291bde124466fae12a761233c0be5e42c7205a6a039e9ee2d6dcd8979e42e54ec427fbf514d35b78063cae90556cbb3f3b3774813e1c5170ca0b3f33334811159892abe34445f3cad0a6b9681cc4b317520a8237e840262644d0b8ad43a3b3f6b4317d235361d43aa3e646030fc383b3fbb3d3b3f2301364d02d461a8455cbe87170d3bba73b983dde4ecfcecfeecfc6c02f4cad9f9190c9fff0b0a84662021f8898731207acececf1e1d7bf573ba7e4d675b14f9a5cdb5413e7343bebf942db112bf20263f107ae6be6866c6ebdce59485ac8b126a911a0b0b19665bed1af98098153b43d51524a35e150d068236d5746b5c9f6c35ec9ef9b6346cacad56ccafdb6a20c1b7335940a938ce1c1d95453213bbb9a3adde2832624cad63cf26e26f3ff4f38c1b813f32984191cf131aae61380afc61300ec5d4cd286cf6c3bbfe389c8c82b03f0c9ffa93f0a1d3ed868d206c75488e9046022bde257a63c6ab8be873a73f9d9d9ffd429a03461204cf116e93b809a3073298361169fd15d1acb4420aaf6c121a572c3c202e230d137f91e8b230ba4c807e895806dd45e05d024ada99339eca666cd821427210e9117bff6d042c56007c83600fc13b4ebc08996c5c6357b0da00854d47bcd8812a34a622d237556444a01119ad24aceb20dd2e924c34698f10ba2127193fe2cd5e3ce936011040d08af04a0d662c041d087e40700b41374267357c27090535fbd81d568a38c4507a98a3001a40700fc1108251844c78f7028e4ecc266aac49b840cd3b8a5587a0af2638d3719643f008c11304bf20f807ff33456f1b300e2098a3f8f394d81baa98b35ba0a98c9301ddd83e4fc551ed96a7f2722a665d73319894cd54dad84e59bd1dbf5e52d74c116aa599442a478f8b2ddbfe5c417e29046bf4794dd672607042f0821b14041acb8fda3322a941b93bd6d0c45062ee8a7d3a00d9901d9059d84bc81ff7c357aa734917fa3b88bd4f0db30ec6f1944c644173eca74883c0308400fd76a3e98c008216046d086eb0a921f801c12d04dd293bb32e13d2a4e6d77f53f658add65486b5783847bedf4e297496045fdf4d4948c4718a971724b81627d962a21dd7b37d34b504c1108dbae0e10d59374cce3a7ef573c3d381610bc947108c219840f0138207081e217882e01704ffa0619a19740f043308620814047308d016fe7286f2dd30c666c46c9f6e17b2ca51cc6889c1f2ca73364d3265ecabacd0053e046b08504d95e87cdd207ff4da5580e02c2a717188b5deea72a295a3fa808c6b74b25f220b1b821794c6991d1898bc839d770bd0d79963dd000871223bd9a3a3d0068948e54a82ddcc42a50f0ca90a09de20c11e82f719dac887f13663436dc8f6f121d6842080a005411b821b743c00c18f198f6babb3720ba02e043d08ee20e8433098919c2a4e354cedd2d1f7801d6249702b67f21b2f92712310d7b9a399b8e827239bd20263804f20f809c103048f103ccd8ce2cca3797b3234e3a3797bc23d6ca11ef9f9641cc368e225af5ddfc8ce4d6efe8aaf8fce3beea933eb9d9cd91d4a6b12fe29a18df19c347080498a99c0137d87edf88e82f260fe6aa207c618ef3f3392d8b6be65d75537b2e41add98ccc5a860a3d848ff1b8bd2518a0e0c89478b4b1d1aa242da1503a48bd8c71c7259902b63edfa63a234da68158f6909da68b58d9de67a8e595f1445e49811b042d66ecc8b209f93d778a389f3055dc091cb28d6d9406147d1d960a9c8262e660f28dae36df0d2dc086ef5f2f7419164254bedc1dc86ec3f03e9f9f93b04f4faf912c32b0cbf60788de1570cbf6188e92f3e61f81943fcf602bfbdc26fafe05bbc93ddc4727981bac4746e88455b8e491df4a36be23407630b40a1654d46c1d2328251b25b2a95362586e0a70ab81a9334bfe48569ce122f07f1ee0fd78d98cd54b997ea6f47c071bee9aa5795064200c26202a9de51ba3a36756282c548b9b0299792bfe74f1bf0810f4113fb1c82160ae242700301cea01f10dc1afd05b196db8d4593c40cc43bfc70dceb76500ac9ddcc905763467c3fb6c0c04af9de9355b9d956ab183e762fc3c49a572fae5c9119bf120c08c424a1e1d122b59b59b13a12dab813857088583941f8b7f8524077d782314e5387c2798ce258ca34847f8e2018231507c14f081e207884e08934578cb2f83f10ff8594a232e5770dd08d2c648afb085d26c04cc7a30e5e0239e430f4a05968aa703a135661947d15d6b05459153127f9bd7249ae345e49a104c52c618c42f08c0c58d988892592386a5cbd91b7d930d37f92e968aec8348dbd6f59c9c5a90cb02cb766c4c9ff06ab9792deb3a35d4a0076870aed8c4ba0629b218938cf254931a4c7a674955f900cf7421ca2e3117687295f68d9c7be413354e82c9b242e90658e3c5b9ca8380f21c04b7baf72a81433b0ce11b951494004b56be312d001042d08da0a2f43613242f0038ff155c7b770564ede553cc9d6915ea9f840f9eb44ea5e5dda5b858b3d520030a121e8ffe697785b7598c900e7324e0c1caa104c9475d9c2ebcf86bc595a0fc019a9e457cea36bfe91501ca4c926066a052b79c0f0315c0472242331f4882311bc6c0ade364921461ee842ea00f0138247089e20f805c13fb86ca022e7dc56c271fe5e7548073f9be301d3de0345459a285db2374ffe571a9547b018be44ab908c4d7083e2d27236c4f4880d9c921e42177369834a25c7f9435eacfa50cc6748b19ab376a5915d9a1b791fe97bb17f834cad0c9dba614b40f0821ea751321882eddcdcef1b169939a9bd027207c11b047b08de21f0e6c46a2a926c410c9f06043e044d0802640241d086e006820e043f20b885a00b410f823b0850587900c13d04430846108c219840f0138207081e217882e01704ff4080c4d71439dc689e0baf649120c3c510ef30505106826734868696f120402d01dc2051887ab3e0912a56762c874bd810d09287a90c8f325aa8c27e8251a331b5208e0e2e5b78130dc116adbb40b05bf0cdae9dac6f00da43f00e81074103021f82260401042d08da10dc40d081e0073a9186a00b410f690008fa100cf0cc09c170e1cc14f3e7916884c6fd6de995ce6d02f40b2027d8acd82fb8db18fb48cb248ec9b22c89770bbfd3acaa07f09f90d103048f103c41f00b827f50e316efb896b26498010aad6f2244fb307fa292e40858496ad61c37a9b310418741a0f0ffe8eb0982259ab083e019821504291a4d812043dbd34b3239ccd2999b25b653b42229891754de402f8ae89f0dcd4640f006c19e3c23695594c69209cdf2619e57dc6cbde38791f1f62c52b4f4eae39a8c054ea075d1cbe712690e183d100422ec8db3bf99c4623bbb55418c4aeaf836406fd08a2b043f20b885a08b02ce10dc41d047696908ee21182ef1b80a230782c9f278cf3ae111fe2724fdb57447e87a9d94c7bb032e2148cb2ddda1566c33f22b63fcb6181449ca38987992257aa962587461f441465162953469e3403ec414c1092e0aa4b8e2d82cda38423a0a6f1913f7bfd66699fc1be97e3789312b5f57ee895605ba12c7edf918dfcd7775e04e9cbad92da04ccf10ac12e4f8a08c0c8c5eb4e29b603d60a426a8d784475a5c11dc3c333c2f6c13149344d54c18c210ec21784fac4ab6b9606800d04fe478226e0359d0a80988a0f213daa19e58b426cc33df9af16e2532a31b3c6ec3233a814c75c3e085c437107420f801c16d82ea6d306e13beaa31c6cfd1a681251dc238899d5f87338bea27164ffe2ea998f43e488c49822c4ab9a2f7099e138c97999095b5c8d376272b73779e2f23ed5a0819c27763087a895c7d8ed8289947d68dc8d43c37ca4f3b8a4967b032457ef763b66d60e8034f9c1f5812f944b653b2a84e33b9b2fc3be2e9168b56d6467be42e1ee4cd2d66a098d4773977e6f6659e643152408dfd4dae5ddfe4623d51e823630e503a0a11fcab0a6c424d809e9ad91b5191c4ca50c687774a44144149dc2234f6f267bac335eab2483f148368b68a16c23c7dc0e51a874de1789d9275824d3870cde814d3cbe986cf4c4dbee493f8ae8836ee4da069e23c2b936cab8cb51e17b989b6ba1e830e03712365e56176cf19e991b1db68227ce697777a713c078f0e946e0d68b4517cd258a8d248f4435e06c1172689ae7cbecc8134830eb7f25d2f7c2c99a52acab69bd1764ac2d36cf691c1a241788896af4391eccff23299ef0f92e5d95dce8e66694057d10751ed441d4723a37a70c8c9a7b2228c9488bc9b1be47299a012245e61b1be2602afc598ab2a55672e7648a1a2b8a8a68a9c73afd4fe82e426d894401ad38bbf616975f6e19eb39f0948c9b7bfa67fa745447c1ed4e226ce22f4cf33cd8c49865654a314c82116a7ddd9575d1679b6e008743b59688bac7bb7a858a0e4954661b0a8c09b8e448fb7420069a091d083d532d1d6dff73c2f8268b6c4a8194c933bf256f3d3eb4e02e43e6ccafd48c9d59c82faf23b494c3a266cad5b16dc0bac198ca428f7cece51285260233edca0dfef86636fd80ec6e1a8f30b7e1a6cacbe113abf44a7cd6440472cd7c34b33e15b131b137e0c817c18c4d5982458278b65d95092c5ecb5526cc3443bc834429704ac7fe758c8726a37cf0bb15f4200b9582b9785629f8cb65c6438c3781695a68141c92573f2c3045b344e1d40bf484f6e338d978878776f3445466a5620758d7de830af2a71b27c2c7c43adca07b2e061e4f8968918b11507c445be696dd3542c76ca6fd0140a26ae960339972421476b3f9e6f4986185f517acc4d5e443b8feca7ce0ba5c69146fa83295e5cc11c79348ca3196e1c342bc5b62fd0c74e91af81ec412519cab1887663b20c39346f9c530b9628bad8357eb967d84f99da19a547f6ff5ce31189a4a0e57fb8adbf46a9a1f4b422eafe958cd6a42a2a9c782926da6aaa50f3af30c9d22423038c24dfe598d03d8dbc30e667b9a951aa9538b9b334b20e5890e0b6b27f7445636c8539b66687db94470fa7b1c6604d1e7bd33871b3fa9b62cb3e431cc524f1c6779494fe1dd26893546695d96647200278a2960f11ab5735332e25a90468508e8435cc9bb5de65258f455598842c4d93843a2f4a6e6c72c24cda5b7ce57f21824f172cd9a473b24e314fc99967a893772e45b828a2386177d6a115bb30e9a7f95b277063fd9414d5123d387065881d8e57a8a20c5d93a80ab5f256cf7992fd0514f9db64daae88a653f6c28a43f05ff6fabf4e8cd1cf75921945e67592fd3b33363ad7d19b139b2769fa6ff41a2522c0314f4a07cdf745ffced33c225db06db9b11eace4d86f37a1482ffd482beb0fc0006c239081cc885d5ec20277618691b1b78306effaf8376bffce352f7a0872fe801e7b67f0d7a884f30f1acfb4ef657e8325e8e644462c457a802f5d935743673b205347bccef8372ad8a92645a7aadc914948e88b7f459a072324c843e56de46ffd8285250dc4b5c80a24f3bf85026205c7115d9c7689d00ed59bca5e0d63a66a7472cbe6b7c35d522ef1cad2085e5d90099ddb10fde89aeb58ce95c513cc78213b8de35ceedfcd8d1721a65181d7c0058964c031a5951723c169eba5fb5f3116485753a6a8d3fced5f9a8850dc6e3257fe7e068b682e5aaae1813d4d13c39ad47c4096226d3ce5aa5b9168bce5a5521ad9b510bdadfdd02ce820e74f385b2cb07fc538065788efbc8d3193c435ce3147e841cc18ec30e652c483aac79ab4a1b13172410d7e6875c735058b1cbba45423966da931d243c4b98f5a00032614d368bdc19313edb2f2aaf93c25bed8e915ad3348354a375f58a5cd60704da3846ce0c3fd200ccdbdb56d4fb1fc61218ef9690b642324d3fc6db48ce87e9846bc9dee46837910b1c5f337363819c762e689358325ea60aa88856356fe00cbf1799aefbc2cf66c0e719e554c4c926d8c4a4e5fadb93f96fca09831fe58c5f374485576c9a7a2cb6a02736aba62fc55c59e2023bf30f24b056933bf66fc35c7bf72fcab6b9f965c8510b7890c7ee03ac1fea943243dff11eafb9f124e3b42e6b83605b535442b36290fad216a36f9b38cb463eac79c1fc4c5cb8245d85a79c15223eaadbc557bcdd7639672650b2c900ba59c557fc91fda0fee0cc0194ac87fdc6cd8c012bcdcaafdbce001f2e93f67e7679f3fe1032ddf007d7f93138d82e29d5358eef0e4d04d882197e5598731433ade9a2ff36d79e2e3ea77c6028d4eb245aaacf83beec3364a7ee50cfb4cbb4c756df0aebf58ebf349541750089e8ec1ff6905ff69b5f0a5f59f5660748c9a75d968314224141c1479d2c9ca6fc40f5385cfc68de03d4406d77ac3b070b14512abe73d86a34efb2e6886979fc34607a5aec96a5cad4cbb2cfcff38fe63cfc8ce99deae015eb120c1311e966a9db03f90592557c778416092e4f6e86a8d921105a9d6e883024e16c1c159b05c46e5103d8aea6aac15a5b8cd3ba071b13d80dc6dc998b29366991c64e4317b8275c5f0c4e7e97d3663f1a2231977dfa8ed600b5988b38976a3f73ddefba3e0bd230c9f6874b214542eef13edfe30d147bf4cf4f14f0dccf96da22b363912ed08f727da307dd166a02d5145ec3fd18ee0ff328a87db8c25710bc5c7aabcb0c03c7552f46150fc63184b09b30c0d005d19767e0b759cb28da385cd2aebe531d9fb2fccefda2ac3bb5a733d2f024c4708b98d1004f34871551398dc15c4dca149b65523d40b4726ae14d075822c36a550c41d76ecba44ed0dfd843032b42b29045997d05521ad40172a6b6dc9c704de7f45ec7f370ca35d84eb2619749532590f4dde418363078888119a59cdb725bf95c5be9bcf7497e4381d2dd955b281e5475833a1a65116ab542dc452cb3ec84aa39ca7553926c89e8d240cd58c6c9932a793e5cb88df20b7f7c1db4c0925a89cf759b4250a994ac8b41b5fa0a02d8d2c4a53b26950ce9694644e408a44d362bb292d548a16cd4b5598f409b25c50213273ea27238a34779892810d923e444b346ebf8664f493c91f6b1182b33300e42a76306dd33625ac8c04348c50d8a5937cabad63ac5994a6940876464a089417ca31907b66b20dbad9eaa5d315693ed3ce6cb56ecff2cc8b07698467f430cfe8aad701b4b6693a42616406f4b6a5e25727d938590b14edaf88d91ac91e5f6de6e2ae9ab3c6686f2bc67b24015f163a59728ee41bc95ef4209ee72a1b4d61a35ec2241a140a8e36932265232a5e6c6d681f140408c20a682d259b64fc0a390c55a4f982c1dbc27a46eb529ec6aee5212e686cafa2f1065314bacb65a1d448cd72d225ccb3711550aaac8275a3e53229ca7df5e32aa4dca9acdcb7e0c4ae8a194dde3c1bd740e7c9bcdcbb895a558046ed96a3ac4675e02cc9d471d2bb1aa88cefbe78b78cd0c687d8be0bf34da9ff216aca5eedb9b14443d3f38049340c21b2be3183cd8dc8d665a4bd188f956c18827e22e603a32a2eb6dedea36d99434747b15e73c60012e645b85024f5090b035aa361f2bf0e7e41e749b26f8337a3e3bce35a2e8a649a90a68f73a99d67fd4cdd6cb3b850b16dbaa93b9736d5411f2af9bddcc477c5a7dbf36e50b5484406857ca3841c863f1ec241d77b0a86ac083b42833d6226c9e87b65395202301d47ab84571d88558a2e465d701d88b6ecfbd6be19775ff2ea8b5e87f7468611237e0ae3de14c0af98894eb4b1febcb10e9281ba46afa4dd80c89e34df995f86e2624c74c160e3c98b5e94458b8a709935e39dd864da35db1b9b7b08d19236ead565de19f58dabb86491e5856a6e3769328b4abe85c06325d9ec5e6b140ede16e9202a604cde89236954fb15c3de581e8aa06c057117c5fab8563352d52063dd5888766f6c0a418d6f7c8689095eed4d759e6e4bfe0bdb2e990cbb5a36c7ce9c1a398dc80e0f1643d63140bba0692486c8e7c43b5729d24f526ca0ced8c23ad6cdf5960c34cd38ff31eadf89c92a6bac0375a342a32295e633ba9710ce0bb977a2dda0cb48d69f1aaa857adba0ecd56299268b6549d9786e429a3049c6ce804cbec85912ad29c84d8e70f06e52b19a9629c741b108259309fec20cc12ec9b3c8064d8250bea1992e599845283abc70ba74bfb0105daa4d057549f20a99b91a90ffb68b68b3bcefca7d7c96c715973bc6c8ba20ac3e7628cdaedd0b064db6978815eb5809602d4594581b17d4827a9f95d19bfc028ba7e2ae9beba9b6b8a86b8b8ba3b6b890b6a8a02ee467f2673ac776d51b1bf7888ab23f6f25a99295659caf2854d96d82bcea51bfc5e28992866eba685f608fe392639ae7ab68498c89003f8445493ef4fbbd5e8087f786870e559afd6ed71bc2fad71ba075d361701776cd1b3af61e0c03af891f77718204f713af3b826f30a3a1e7df0663fc48de87fc1e50569d41600080baf37a013aed85efd1bd36fc66cc3e5e1ac81b375154015aa9aca9f44c1ad3b7ea5029d77b9ac77b735f89cdeaf03265c0a087b807776291acedda98f98962771ff3e5fc8a8b3a2768260b6249606ae3827eb9cd56d22745b413be04fa5d77dcc64771a302992da3e26269783376d1ccd4db06154ca0b2d1ac54859535e081d1ecfb13eecefe20187ae34eff2e6c06adce5d075ecfcecf7e7ac38ed7e80655e828e8063e261ea11d8c5627e842077bc3b6e4d71a7a6d780d4def77eeba9dbb2014849ba6f697d093fd7e37f0007837410bb9c1dda407856dfc08fcb17909e5ffcdce10caf533e031d244e7f367e767ddce682cef77fdbb10b293f8c8bf097a5eb50cb635d0e868b5f2bed7f58635082ecc31028b570575ee069331098c1c22c6c1b00503fd389fc95d7d89a0554e816b7f01ff3e595ad38887d5c6660a1ec7c1dde8b8255cb89bb50b3fa89b8b72aae6826dcdaaf91c56c0c5f2f5dbab72f6c8fb49307c3a3b3feb4dc69ed467d218f9c3cea0523d532967309fe81f2974a5a10f0a67a2352380b626b2c8b626590f344d54314686106b4e0de6b3acc416d5c5bd22159828dfc8fb106d8a919c1f02452485b4d3c91e125237d134adf93de431daeb52ad2bb895daeff2c26c0c54b85b029aba48576881f4c5e61a5b81b1f9d9f54ad28ed03ca231df63c1511aa1daee11ca380bd7c65682f93359f13bae1e116af5d94926b5d84996e4590f4591acad0e81d77e1164db35dd3b1f170370270ab1d996a70a8fc8dfd4c0f65d05a5d40a76432b4558ed9be3ff08cb56860e8d3db2b65475286c4658ec8ec303038f953c6bbac41d24aea1be83b17ff8ff438c1996e2a4bff2bdab3fca76ecfc3c8b13c3d773bf3c18d80e0b3b43574c5e9a44a6fac2bdaf8e3d618f6bd302187158fd958f2b896409b093be02614ea8339ee58f0ec8d41b29848345c3ccd4eae43b6edb9a716327e4ef6657dde075a6d731dacca3d393e58f13e23881342f5ba0aa56ded931ea11c79f54fe803ecdba288b3f6a764fac46d54474b7241646ed68395135ecf6265ea45497944afa2c776ac28c65b371e41b7330a0df6522c6cb50b4696d941bc5f03071d9ffe4fb08650aac81bc6319e8bfcced337b21608587309a9537d16cf547df1e7f30907fc966efdd52313be118c896b11cabede8244c6fd3b24156734c9cf9ec267233ee758d26f8dff85220170d904658852420ec88c4b6f2622d62122cd255f15ba0d28d2ad8001dba1868e5c6db00db0758541dee2fcb352722c1332ef898d74e725fcab67ab2586524e8adcb2221ee19598dc703b76b96fe8ffe09326bb4fe8fe6b933d732fd9ffc1920b3609c8f91af296d65addadb1e99a65b8507c1671dcef242fdb1c87fffc1f57ffbc1d7fff6836f15771e7f305c1ea2624f9826baa457d82b7e33ef681ac3da495616796b7971ded1559b0c53523e71939233461e438e030c3f555161bc43902c0b3bc53026308e51fd8dca5c579b0e9835171ca89fe6da4d4c9261b7c6bf9bf0ef5bd6028531cfabca7e86fe9c242a42b8217c25d585f965bc54e7bb9f2cfd85777aa3ed62416cd73ff6cdb7ff49df50878a2109736124be434755849b8e5785c4ec20ac725c98de4ca3995a8a42864d67fda821150acdc61c15b765ad15481733d958381546fc333ab63bc4c0066c4afdccf614aca6d0c7b2f2e2fed4b7d635a85466d8d90f8f1168d2e6c0e606b7512b4955d5c71cc60c4f3fcfaa719f1d008b878154bd467fe37ac7cf5334de03a74ab1108735d3aecd38a96b7f10c001d1eff647687690177b3d5473dba202e4f4e168ec0dc7fc55e7ae6de22c9191953f1334316fd4f57952dafd65a5d446a2d6b626fbf27a48cae55818f0f637e64acb71b3c48297223a2d059538d0e6ff5af5eeaca9d0ef06893b48434395287bb4bd456e03d15949278b9319df5f27f2eed4a20432ded9e3507e001d31582b5e1666cd77c904d7bba49c2d11a951df21c65bb7248b55a98a75c2569c783c750ec0ce2022ea81ac591c26f35252020ac910163f7e43b7f07a11a39b3679fc69e5ff0bb283977b2ab6b99012aaeb86c1569d9513e6d93cc161308bb2008d83dfaabdf97c1665fd6da99398fc0ab970b43f886ef5c43b2be65481c1429e467b430765260314a680f7ca34800cf832cf166c341a5ab910b4981db36246636fccdb0239e4a25a7961702fc7a0ad3676abc342cdffd11a97360c09b04a36e69dc47c50324ede10413a7ffdec4e95bbbc588dc80cee364ab128833c4d667bcad65eec695d74b289b69377447f428be258264b739b4a59654629b5f8c9659befe5d08d27d96b9426305a59b3dcbabab098131993bf0e63788e0c704b4d8830d5c64c29d6a88ca6e859311cf30b5ad934af643f0dcb85ebc5ccfa5d14098971341d44994a6da238412d2f13576f9b288b6ddc35c11495d1bf6534fd3789ab596201c8514a3495a786526a790f285b1453f71a21f1c2fb43aa00a76237386534758cdb11d802e6875408393f8dc7e62bb3d9ba00fe4c6ef368b3f5f358b97a0729de64a03976e33c75c0fe8ad92c9a5b362197a622f79da9dd981b409a4de2ecf2939b9f2a865d9655bd9a619be3e92355f174ef7e29dd9ce84a298e6919f9a759e91fc440233b29e4bcb8d9b144b6d12aea93e88294acac714276310c1ded6c2ab41d73e6404258c171f40b2eadb8ce5f2d0bc9cd805d834f587fa35a1459d50ee891b133d8b05d502083fb95b57cad8e180e4d4767cce921db98e40496551c9c318b6398ba6cc6d7a4228ddd2f901b21945f279b15989b3bb0f0b60d088c41bf73370eef26bd46300cfd1b6fe8f9e360180e8376f068afbc926c31c893acbcdbae5591cccc55145f5cc97b4668dc38c33b27c2f735702c353ef70ef0bc22621be0fd9ce39d516d7ad1dba050b3448b8062393a86c6493c88344b07ffd8eab23f9b6d0d256cdb54d413794c72f3d0eee528e32d14c38203f7619301896b9ff8aed97fb8339391b0321f898e10938399e31dc714c3025ef315f1071d65fd3cab66a8cb7cc312a5f9561bc2cb6cf087081a635e9af633390638c44e838ca7a1660a0da58c413a8219fdee68bda9727408cb332a6eb51498f321652f409986c84d3b1c5d9aa7360b36335afc478b4d552743ec7d16f5a1b738897b49664a04d1e8cd8d36f26d16dbf6a17bb6a037185b03a7ce0532ad3f0d63f77456758ec84e977944afa3e7bc8061ca8a33eb24abc4b57da51f4936557252c62f626fcab5a1712d9445c41c1128bcf9aee97fbf7f37eedc4dfa93114cf6bb764096d37fa21ff7636433e87a4f2cf028bd4c4df42b18f6abe3c9ac33b205c8b2c3a33dd168a5563a9d4878eda58710fc0ff735ca353ca3e9ea1eca189958f45619a8a442e92e067a16a56c571e25910ed68a328f74198e7372cf224f1a4b1eae9246778abc42b203523bb9e0286ba761549463326f536597505e865f1227312743bb4534586dd6582a5550b958854ede10671275d8fc057f6b49e992ab52babfe123e07105ec3f8d4c0afed112a289be533b84915ce39a5ccb50048532b85868a39c668add6b2b278b544585a51fb89c890e62f2114efcf54c4199d39cd91a9af431adf2391adb254ba470d208032782d6512b51bd8932bbf0a312b38d8689b8a0c7e3087c4a6ca734b27735503e8193a2ba8d53435617d231ea535556c05bb5b78b9516dbccac0745679d3e8904138c842c91ea4381717c2323605ee947a4048e6537e7758c598fcd785617eaca198db234c97976b32d9bc9da4a4ce519548e2693486bad93cc0a8c013dcf0d88a522e5532a06794c5428c4660ab650652bcf4a59f25045aa9220ceb7d30350192d888418f30b39d09557b692cddc3ff616152d34cb7b92b9db9dd10c16b2485b1387647f60733857c972731919539765b4084b04f24963f16fc2f43af52c7954a2efec9e8b8c13591a0ec0bc9f46716cf656d2c8c483c0380f582f4dbd959e855335ee8e804c63c0b17e13cd94e3e289c807595a1d0aa2baff22570d0b233b26a959e20f5a45be364d97e851be56f6924ac5568632ae321ee74916a347792ea5f06bab65e75ddd26ca8d55223e7aa0021d518461cfbe9f9d9f5563325e0cf3c7610f6a747cb6665e1f25366cd3ff8774195127f27f9fe996d7f6bcf3c0f33cfffcdef3d60d1f22f7e76bdfbfb96c08c686e7ba81ef1dcff36e4e6003c4fe38816d23b67b02db41ecdd09eced79c75b343c4cc3f091e779037cbd3f6f7b0fde79dffbe93511109cf731dd023e3df73ddff3cf27f03af3fcb68f48fcfc97f9dcbf19e2fb03a6bb39ef787e1b930c9d24d04edeedf92dd7c2e7f6eb9d2bcff39a089f22243a6f9b9ade9ef7bc0ec3efcf3b5ebb8ff952455b26f7f600c17df8b3e7635efef993e779cf8df3c0bbf1fa98d2d6b7c7255b35a86650a79fdc6cf03ec1f0111b8cbe6d63424a33a18fa82fdb5e9b5ea939ce1fbc08f2fb65aad7c786b99756f3a1313c8c573acaedb98914e4ca77064bbf090d9035f1db9fe7b75ecb1b39656b615162fcdf08213fb06923d3e49e37c6f77b7c1f62338f18def13ad40cd8ca5effbc8755bac5244f5e87dabd6848b305d8326dcf1f60e5a939cfdb5e40551bf297d0cfd33f1409be5f34ec64824e6b4b03d797b54d6d39a2747903c70efc453768c4e30fb8503dd3713f2a69c6f0f5c50d35fa4f1e7a7dcf9be1007eeff4aa45a29eef48c15a5c300b6e72f108720b4dd1e784eb06b5df92b2b9681c4d549fdaf201f3e9e12c9cd82113d8817304a0211f9859d1c7bab7004ebdf88859573a1a329921e0a63e13fcf0f68f793cf1f86b9be9ec3b2ddf771add599ff04bf71b4937f2fc7e0fbfa799dac199ddc24ebec30c0658988ea93e77348c2d5e1936548b4fd4c24a46e8086be773f8a5818f6b78fc9209480b5d8fe6a2ac22e70fd03af0b674164e4f46bb4f5dccf18e1778097fd7c62c78b4f42859d7fe88e6c7cce6437f6e5a4060060f66e1b76998d3ba4a836cc40bf5840b7a83f12fb072f8ed159437b8c1e43492973c60705d7ff1a5f89dcaba046d1ad34f27d88098f9da87d17c8b4b82192f98f6c65dbda0ba5f1a16b2f7a53eb2b66309a323e8c87e78d53802d198d0bc2ab44d830f644deab88902fb875b9ab9b7f2e337c0b6e1bd65fe13d07f3a07c5f5eceb3b81d78df37b2f903f500bf425e0347b1a5fe73d9afc1834bd47b390f8d4fbbfb0b3252768d0e7068dbc3615cff77ace37376e9decb4a1228ce82f027ce499d3c1f101e598f21cbdc565094b36a2659a47f6250dd96f0d4ed8a316e94bfdbb98d92d016038e4dc4ef7b69d6e3d9f7f4d0d30a27ac0ce679693779ab16e2b73b31db5bec021db6fb258f6b00276e6f5e41f9ecde4d149fbd1e9a94a261f1b874d69fbad6d0ad0b66df2d7f90582a00e9860c3ded0b60879bbf5ada4fc4d57b579119863b8a1e17c2b43b22d2b7489ef83c469c5679ad3b919e97e1f7a7d40abcca50177681cec4fae703ee45e1db226c9a4327ad396f7e3dca755ceec9a2ffef98befbf77bceff4e775808fe700f3691ded85e717b042ad881ede04c7f80f0dca05f0450d7e013fcf095fd6e0f7b80212feb5067f0d784df8b753df6f09ff5e83ff04f81de13fd7e0bf017e4ff8cb1a3cd6ff13e1bf9caadf05e1bf9efaff15e1bfd7e0af007f4df88fa7f0df08bface91f2cff07c23fd7e0f1ff8b16e2d353f884f0590d1edb7f45f84d0d3e81faaf095fd4e073ec7fc29735f815e05f08ff5a835f035e13fead068fedbf25fcfb29fc8ef09f4fe1f784bf3c85ff44f82fa7f01784ff7aaafc5784ff7e0a7f4df88fa7f0df08bf6c9f68bf0f847faec1e3f70b3ab1a635781c5f09e1b31a3cf6ef8af09b53f9af095fd4e0717dc8095f9ec2bf10fef5145e13feed54fdb7847fafc15f60ff13fef3a9fcf784bfacc1e3faf289f05f4e7d7f41f8afa7daf78af0df4fe57f4df88fa7eaf78df0cb1a76c50ee73fe19f6bf034ff6f7057496bf058fe84f0590d1efb7745f84d0d9ee63fe18b53f9e7842f6bf05b9cff847fadc1e3fcd2847fabab1ff63fe1df6bf0b87eef08fff954f9f784bf3c55ff4f84ff72aa7c1784ff5a83a7fe27fcf753ffbf26fcc71a3c8e8f6f845f768ef1b83e7f20fc730d1ec7cfa243fd5f837f017c42f8ac064ff39ff09b1afca209fd4ff8e2d4ff73c2973578ec9f17c2bf9e2a9f26fc5bddffb1ff09ff5e83dfe1fc27fce753e5db13feb2068fe3eb13e1bf9cfafe82f05f6bf0d4ff84ff7eaafed784ff78aa7edf08bfac6148d2fa4ff8e753f8c50feaff53f884f0590d1eebbf22fce6147e4df8a2068fed9f13beacc17fc3f94ff8d753e5d3847fabc153ff13febd064ff39ff09f6bf0b4fe13fef254f93f11fe4b0d7e8ffd4ff8af35785cdfae08ffbdaefdb0ff09fff154fdbe117e797b02ff81f0cf35789cbf0be2f5a63578daff099fd5e035f63fe13775df63ff13bea8c1e3fa9413beacc163fd5f08ff5a83c7fed3847f3b55be2de1df6bf0d8bf3bc27f3ef5fd9ef0973578dc5f3f11fe4b0d1ee9ef0bc27f3dd5fe5784ff7eaa7ed784ff78eafb6f845fd65c39d0fc27fcf329fca24bfd5f8327fa9ff0590d1edb6f45f84d0d9ef67fc21735785cbf73c29735783aff11feb5068fedab09ff5683c7f3c596f0efa7cab723fce753f83de12f6bf044ff13fe4b0d1efbef82f05f4fe57f45f8ef3578a2ff09fff114fe1be197bd13f5ff40f8e71a3cd2bf0be2c8a535785aff099f9dc2af08bfa9c1e3fab7267c5183c7f525277c5983c7f1f142f8d71a3cce4f4df8b753f5df12febd068fedb723fce71a3cf53fe12f6bf0d7d8ff84ff528327fa8ff05f6bf0b4fe13fe7b5dfb60ff13fee3a9f6f946f865cda522b6ef07c23fd7e069fedf51ffd7e089fe237c5683c7f65d117e5383c7f1b5267c71eafb9cf0650d1edbf785f0af3578ec1f4df8b71a3cf6ef96f0efa7febf23fce71a3c8edf3de12f4ffdff13e1bf9cfaff05e1bfd6e0917eb822fcf71a3cd24fd784ff58d7be48ff137ed9af693fec7fc23fd7e0f1fb055d44a535781cbf09e1b31a3ccd7fc26f6af0b4fe13be3885cf095fd6e0b17f5e08ff5a83c7fd4913fead068ffbf396f0ef35789c1f3bc27faec1d3fe4ff8cb53e5ff44f82fa7ca7f41f8afa7daef8af0df4f95ff9af01f4f7dff8df0cbc189f1f381f0cf35781c1f8b01f57f0d1ef7d784f0590d1ef7e715e13735782cff9af0450d9eceff842f4ffdff85f0af3578e2ff11fead068febd796f0ef75ed83fd4ff8cf3578ecbf3de12f6bf0d8fe9f08ffa5068fe3eb82f05f6bf038beae08fffd54fb5e13fee3a9f6f946f8e5fd89f27f20fc730d9ef6ff7beaff1a3cae7f09e1b353f815e1373578acdf9af0450d1ef7bf9cf0650d1efbf785f0afa7eaa709ff76eafb2de1df6bf078bedc11fef3a9f2ed097f59f73dd2ff84ff52d73ed8ff84ff5a83a7f94ff8ef35789c1fd784ff78aa7dbf117e393c51ff0f847f3e855fd01d775a83a7f94ff8ac068ffbc38af09b1a3cd66f4d7847a8a964810f806ce9fdd501ede8fdcd01ede9fddd80d60def134646cb215d78fa54d411bc47f8ab078fae961ffcf3179435e979c194c900cd220e13cf17cae4854133cf1762266790f27ca17fd60cbaf77c2199560c7af27ca1b212271513660b2354e10b2df7811ee791e70bf9f7ad67cbc514e375cf168289ccab9ecd8be9d20b063d78be90b29f1c1053bf7be78f4c30ef9cbc98c6de3a2026cb75cfd69129f945efbced79894f7c2908eee1a4e9bffb9cf3872e24c8dd043d68912f92e01b2658b909fae73dcfff2c09ae31c1da4d707fdef7fc4b49b0ef52196e4d82d1432587dd71822728a449b03d4e105512e8e30433288349f0729c4055ca2039d85af414b4edeb610e4e8245a392223f4e915453ac31c5c24db16a406b974e53d0a46c78819ca6b75d3b44f800ae19b468405777a580f2a92f07fdbc6ba70bf306d60e88d9092b07c41c8884410964c65c8b05c33e41d998d3f1e1d67ecacc916fb7765a313fe5da49c52c98ab5b5b29e6da5c381f32a3e7d3ad530c660eed19d6f702efed166fbd77b7cef4205093e45bee51f8a7cd127d3c37da2c6cd39649dcc1d7dc296556c9e5e13097ce612e3393cbe2d62e0e1f7fb8b98c0e737938cce5dee472f5c3699e1ff535faf4c3b6d73ba5d9ffb02bc0db89cfb63f9c362d2991fee18ea7ca87389ce8cbdcfd32a354eb1fb6ba69e5c3e8b0baf787d5c5bf517d7fd8ceb8653919fbf71e0bad99247d6aa38ed34694cd45c796e673e7b70361727a206c3b6e0b757e3b128efa7074582765eab472f37da6444947368eb6b7e411e454e223e5fae1c69966376e819e0e0b141d16e8c114e8e2c64e93cf37bf1d9aa3dfb4ce8db31cddd4f7f851b6f98d1d98197db4764a93126875636bfe5cc97a66725a384df1918af8816e5d8180f0bdef04fbd69655c2f7beb6eb0b75d57646fd2525ba683b23e8c4777f3182dacee64c6974db96bb20d08bfbff0dc17286e538c708b66edb899eb6eb47f55121176ddb4d1f5bee807c389c641333c7ae5bb6f65f5affdde265c7d99e7359431dde2ad94cec32d472271925d22eac38f161deb215cb5affd3b9706ac1b93f5c6fb02368c1b90e1c222fa82f5dcb4efa134bfb3eb0e57f3bd179a7362b5bfea31f776d8a5e7da30c6c49eef17568f320e1efb1cd6342338b65687738b328c76f4d67d47e25d875d3a13dbe10ecaa6907fc25812edc4f3f13ec53d30eb97702ed9bce2e46a09d93eab5593f054e4dcba3157974d8e94fa6d1564d3b719fe90f49d3ae244b022d9acedcf2eb97c0a34defdab71f7df1ebcb73e1db7f7d3e91f1d14e7434c24e55b363aaf9e2fc67e3d70fa835a7813fa7fe5f36f9c2b7edf7b1f1db96b10bc875c36999131fb1943f11879486c5d231d17ba37e229d9a9f47b4886dbda38974670749ffb71369743891eecd44fa49005c111ff0fdd1e6fa84af335b9b2902225be35fbf5de6465e4ff4006e3d7fc04a3781e8998ca5b5da826459d45bcf1b1556727b3481cf531256464e3a89a98fe4a06c4e6e0769ee4907879506ae7a95ff89002c6bc4a40d591558f3850bf9de38f5d583118ffd7e8f52d21703590b506817de3347ce7dfda75cfb30b64b5befdeb6717eeb75de495ba93083d11361dfe07ce60594e1256578555fb95733223d6fdb384f7cff75a82a4a26105ec270f1e7e77dff07212f180039972394fedd8eb0aadce32c97dd6c8f8273dff366adf34ef063e8c8164b96280a6dd4877c51eb080e5ffb5c9880e5de0f15a84825e275c00967b07a7da261ef4ab83c0ff1cb368c80affe8e985f1b6265eea997d2210afab3161297ed92ca0e53efe62af83094e5e9f63dc0daf750c7adeb9638e05ffbf833542a9289d93322dcae10fdc8f36f21699797c440924243707fdd9c07adacb1f0efa155f3c6a314aed3fe51f8b002cc7190ed582b64d7bc692f820fd00e3f96c1c7b1d312c2eb435efdf8fca5d161a6d8ecbcedf559f325a2f636a9db9e9734d2f1b9f282e7068d5dd6c7ea78ad8394817739322376cd4a9181556ed38d1b5290f13dff9d9447aee883cf23a3d1c66a268c40ed09fecb88f565029a99beac81d20144733d13977205f3d0a7b5f075ec8ed705c9aebf8f84ddc71a6d17f447ea8582863866b51d61dd022cdc8dfb931c7e12f4b13850327f807f0810798385ba91ec00b413f53dab15dac651f2c3cdf5e5de6a101182042fce6fbdf6daff3ce1ce1c797ee6af29d6c7ff0ef08f1b4900a0f5e4fcdebbbd1d9edf7a2dddb07cbc4b5a1db14eb75cd9efb032b472c0049b46d3c925810de2cdefc26a31f058d301fbcda86778de291dd89da343c78b0b7fd5f9cd57fba3afbefcc5bf3e4dced7beef285e7aded7c989b457f487efa7f0d784ff780aff8df0cb9f27f01f08ff7c0abff849e2d2a7f009e1b353f815e137a7f06bc217a7f039e1cb53f817c2bf9ec26bc2bf9dc26f09ff7e0abf23fce753f83de12f4fe13f11fecb29fc05e1bf9ec25f11fefb29fc35e13f9ec27f23fcf2e154ff13fef9147ef140fd7f0a9f103e3b855f117e730abf267c710a9f13be3c857f21fcebc9fc4987ae38566de5f141dfbf9dfa7e4bf8f753f81de13f9fc2ef097f790aff89f05f4ee12f08fff514fe8af0df4fe1af1f0eafa3968f765d4be8fdd901ade83d7db4ebd89ade3306e19e42ef1b7aeca9753f016d9e34695d3bd6dfe135ecc344f6cfaf0d4afa9121eb865934173fcf6fbdab86e793c2160cd2f786e88061e29783c4bb8687241d2c5590e07a52fd759f169b3e2d5633207fda5ee6dfb8796e0ff25cf9ed0ee6b98102bc5613eb83c4da6fdf62e2020b70735880bc41ff2c1abfcd266fb47b984dc9271d9f88345caa02f98cd7bbdd4fa62b3b5e558fbf6ff4656960100b8b14e7493bfaf34fdc4e3f904a78ebb8b1b63f5161f7bced7de412bffeacefa76f8df60316f9f2b0c85704980a59eaed7cdea9be911222fecb7ff3eb7aebca14e03317e00b17203f28c0bed18eb0005feb9b7e440b61df688db2fa71db926d811087a81abba101cda7163e6925f458e28945628cfb3e81930d94f54bb57b0f8b7ad168270d1ad40fb5655de330b935753e91cfbed15e513e29e4d3be81defc8003a1bf631a24f05a65f3f6b861cf7b72ccd54479334365d3b02df2d290c91e18fb1b70a07654c105fc6028306704de38c3eebd61fb9a5b794bc3b27c447a5e3f4a0ce8eb97479b59604bf49917197a7c6ea0162eaf293bcaee0dcfd434faaf18d33859906f938365e91e9ac51a5138bf25032463d12f4d1fb1ae76859c08890bdbb869179bfafff3dad42fa73daf433ae49e7745b8c254b447346240e7686315844f79fb2629f37a5eca3ab04de70f77f6a043ab3eda2ee15321721e1d32d75d15ce570dda2ffa66fcc24f3f51c30d9c349cfe8558c3019fc12ab3924e281d695f3c70def0f8bab36dfb468d9bf0f98a183a0b8a2d5b388eb7815352da177d73a26343098ecd9573053feb18fed1904e756dbb5e98631f9ed73f35de70fe8d163805323ed7b90b4cc753648525c6c26e9e685ba27579ce59bb55eac81f2e02d983efe988e654e895556ec7d5dc1cd49711b6eae2c99668d372f6fc96d318bfdc0fb14df256e5b35bef96ae0ed8dcc9671a3317d545a4edac9ff5f3a65f69c2f593f4301e2abbb2b2feff318d58a5fcf57022419b6a9f6af624d5fb42d5fbe41f1ad658d3119d39661c2b1ff1b17e389a879cdd275e729b8ed50b4f8a732ba9985ebde254fbfa549b6a2a61487a6e29d976088e7959b12792c15782f0450464730b35ff21a7de0e9a226853b6edd1fb2fcc981b565ad787f1ef7bfe7363f74b5800bee7c376d1a6596ea7cb8db0bf0364bdce4893b4edf9ed4f6ddac69c622db8a3235b2f5e34da5ec52040f7fcd6fbc04668785c73956a466380ab58cbd9bc64a13263f1fae960b5f9d2f8dd5ec77b0c2fc1d54d6647ddfdc1972430c6f0d6c31d63acadcd8bd79b4f1d717fd811bc2bb5bd9d2fc4c783316bd121de3e73fabe35a0e45f1bcc80c49435457756f4835dfa890e3f554c8f9a8997c5e449669dd9cb79b94f6811b93c6c919ee75ff91f89abb37546d12b8ea211e6baa0d5f6e3d3f9bde7174dfa13e5d7329bec95bf8c4ee5b2a20c0a325884a95e9a02b24427679d3f995d46ec533ce182f1f2246d1908f738b1d370d3c475f045660ec26039fff1ed771584a1bc8e24879ee7bf36398b921e36664b7a2ac79e34591e9d77bcdbd726f38249a6a687b6e0e0bd2bdc5d320e1755c6dc0721fd790979ac9cb23aaef51f5a9883825a5e3b8529b17ab73a32137de0bb86a22c45f895f6dd0573884d356149d24f78014047ae1be691df4a2e5f9d558e2f3197bf6837fc297b151b0d2a697ae4edc375b13057f946d1fe00d49629c90600d66db779ec562e2b18374d82bf594a2d3b387d3e3bd3ed8273b8b043e839c08512ba31c1b1d81f4a8bb6df9a7418dd1b9b243024f912b97c243e2d3c3a7c12c65ebff2bf9e9c1574a3411df4f517cdadab5f0eb547633fb0e3ae3de36157b7deb73daf7d61bbfbbd4155c65659522670b4f5bd155b0cbbe73d81d7d98cd328cff7725a57892fcc70145c20b204d33318af8ee9e4fa0d1688ce6d1f8b38e666575eaf4bdb0095ed532434eff135c0c60a0faef81a201d59da64db48466871cdcf29e1a663db8913ae46e76def890e099ceab9693b7dd5acf02a9c9d197696d7a94bafe5b433a6cd2392764763ea8d66c4278a7dbe811e229c102a3454afe97e6265cea766e456aff846d8610fd670221faebf5546282ea1d06b8930749ee84c1e40019a9ffce7e9a911b79f2219dcf46c119b4e993ef9e5c9c1aa23b9b536085c2d335ab3af02a1ae6a2b92cda826d7b626bb47e4258cece97fd724f38f7f3f21fb621d07ed3b353ff9cb9355bf2093499f23ea4c6c86975f4e57d1a27bd5b22c876a7f79ff451731936474e35a9abb681d92ab7fdfdfdcd51965fd60db2c0fa8cd6ca61fcd7a714fc6359982bba63ba44f7f5d8aeb832af14a9e526df62d3b8ab73c8a6f0e9bf07703ea7a2ae20b82f805a453d6842de781d990347f166c184b568b261f587bb492dc5be307b46153576e6968cfa17ad73e5bbf605c89f4e582d6135acfbed240fe46e9d8fe56c175b96858142fc896365d050ec5019b6c5021909d5743ad700734e97a7d7bd4df681249c6dc9ca8de365ad90bdcce6be3ccb8261e13db1f02f086e80e267f3fb4488ae1886eed0891ba32d6ba98bae693debbb35df291c6e5466c5a2e7dba8af068dab4738a2dc22cda875c8b558316e0d4580945661a2f5c4ecb4edde551920d9d75a569a72b55eaba79aebce0f64b60e708da76242e239f41be9b43d6c854894f38d74d16cc319b1266cec6972e5a4e57bf51f5b72d36c3689815976286f6c113918c84e68142c3acfef908adec8e0e440efc43c2c60ab0f4219f3bb35f04b65f3415f52b2eed1e2f73af532c1a5125f94c52e00230c525d59396bd256b6d1d2f68d3fadb921cfa44c7c2885bb33dc48e293176d2572607eeff44199c2b6f42c5657ae7d550b7035efca9f2ef44ffec1fed2af54e84e9f5a3a35573c576e4906aae3d91f72c21bd34273d1ed3cea0fdf084878605dd6a303d8106b1deda0ed9fdbb850c8bc57436ed89e38f0fbfd946ed9afbfd97b31961db7ee05dca775239abe9c7d385c0356441170ccf6dda9913583ed76dbeb2b9247286cd98ddc86e702b93d2210a9867f93d70382281ed11ca41fbf624b03f62c594641e922583cb36edd575e7f19ceafcd331dbf89314be602dbce56143a39c6dccad9c39c2e7f82276ec3123697e55319a8a6d7594e6db511a1c7f2ffed7d95f9ca83efb392db4ae49585e96204dde7427b4b3ca7f6fe3e4e0c6f9cad20d4dbb716397746038f424fb9b4af66641650947b6b4b9411e0fffc5eda0cd5107ed5b78c27b6dca874f956c1e6c063b331afe5ff6be6c396da7e9fb82a08a7d3b1c0959c68460c7761ce7cc711c102084d8e1eabf52f7af675a2c49fecff255bd55cf898da4d168969ede973e79e70ccdcc93967b22da66f75dae4e3583b59cc628601fa401db4cb21d803779e7bb431f29279fc622a2b9b34e3d9b8139b08ae0b9f86eaa9f012118e53968d08d9220d7176e640718811d7f3ec51eaca0db58c5e4d05dd5bde29be9f5b9053451f496ff096efe47ce5cddce78a93b5366e84586c7ba475ab6961a445371655ddd41393bf103f76039345d3acdfbae5d818b5db1c27cfc76b6ac293c8b6edd7af6b3fefb199df83036edf029b461314b178135e32476af2c5666af27ddcbd05ab6a014f0a1f619db5183c823a96f68be67cc7ee8f8830fde46e23edfdc42457c1227fceff0440c6fe36b46d36f77d9c16edff24b2f42f41d6464abf72412d06f905ca5ebce50b37bba495bc612ec13f92eb72c74db7812dc6c33e6d1f2226577cb37d1aa4aeeb3c3d40e79603b8c3d9b1e41062fe19d1b19fb6996bdbfc260252f0e98a9a26dfb79be6b43633ef66fbf553aec1446f4ca60d29c19e094671ba965fc7cb6c8e3db33a53ecb794dc02dfbf3ed2debf96e067fc2933d974af6feec83d3e0f4833f587b1b5ac3bc634803c58f85e6b3e494bd8ef710f757a3c054c448326eb75e6c7ec61df5e1a7c89a18eff2e9695a4e55cecbbc6f360c0147b1aaf648a7189e19c999cbf2145fc5f74193e7bdb3e393f42f1d9f47a712d5634344845ed9cdd9ca2e7a748150098d4302537c15cf556611ff1a8289e3b768ebd104993c1a5b98de7ac55733fb944ddd770a701feb64591e64ef4b1d227e5c5fd5aaee98659979d6b9e2673b709ab4a3f70756a0e744c25d8e2b00b20674240c5dccffbe145fc4d699357fc89adce1cd2745e8bd4b56ac21f3e09680e5996016e2bf9d3c21f6ed27b3a02f2c80988fe5afbf47052f60d86d74fccee38e7a8e12b018a11895b932254630017cb8eca1da70f19c0de98bd9fd2499160d60f3c8fb2f94bf9f2398778d60fae2951298c34f788cd31bbb9ee9518904683f90442e51f4ba6d6702c6d4ca97b34cac1add61624c5076372c658f3c732b297941b207c4906528314cbcda55e0cbe978dbddff2cfa7e94022e0f50f14397c2237c037eb43b84b97f929e7d889cb9ad54361acdf90766f42edc831f2eb20127de2d73976ddfe929a6def1e7b5b538fcb463df7a8793637f11871acb36f9b648cbefe5cad1995c79f9243d64db1a79e62113b1adb48c34eb153e37bcbcd12f4eacffe8b236969e64bf4404fb098411e45dc8a079fe60eef083dd11522fef06e1c367c6aab7f97600ff71bb7d8cf3c4571c99d9891bbcb3777b964cf7941eb476eb481df462cb5face566378719fb4e349977e3e889cf646a0d79715676ccb7ff68cc08c418794a966347b274e4d1ce3c157b3209ff6c120fece681d7a1e93f70b8d4f6f64cd38f4c145b8efb69eb14782526e694bd2e20579910e14243844d353c30eb0d8029e1d96ceb7697eab364c88cf56294e0c2cff067f82d03a99e49078e541dfbbceb2f2a3bc07b86571f394ba57db8b191237813292e2b4fb29c963a53dd10f84e84c6bf4d3ed881df234175e2c9d58037ba67e5f2e713f095a3b2e10eb61f72452cc72f07e053f84bf2901a23e516501fb18b7063e4a92211f2e4cdba50b470d51cb19789e2ccd9a5a0836a41ed91e73c2c6ecefd16067604275e50be0410b599c45276148cb206183aaf5774e023d01958f6c06877a0f317a0e06c3f098b05e4b1f2f51aa1bfce933446598fbec406f5e5a92fc8e04f9febff6e547a1af4a11e86f6680ea811b67f02fecff700dc469eecdad437b5ee02ff92adefd4cc87aa1e3162596f9ca918ce66d1cda9cd1cb43a03ea1d5c3bf81f99d081909abf6498a7cea8be64e9aff207a0162edfb8825693918bbe9358a61103f4cb9801bae36d9892d6b9975ce6fe3d1bda22024770c415e5dbd5e4778e779a8dc9032e5aeeee74ef81633f7052429942cf4da8c58687250ca163c6a8f3b167afdfb85480d3219f2d45b6e7a53c82bd604a2df44ed7b7a3b821ec446924657aface4da3707372ae60910fddd300e484d908fd44dc18186618bbdfabdf9f09c42b37fa0d1616c6ec8a10b8053ef0e30983cb28a37828e946731fff3ac334a35fc20d3c10f1b24e8e86cc5a0d4f079cd51e14c19d7e087d0ede27a3eb5e00bef1d75e001f4a4d15d7c42b90dc1ade631cdb9f9c99cc53d2504913d662daf597912f6e6df97a2cec45f17c355a8a8b7f8c19974fa20bf11e945e6c14718bd9a5169c00142de6975a700a48b4585c6ac14520d06279b5458216eb4b2d3811245a6cafce658516fb4b2d3819345a1c2fb5e074f06851b9d48213c2a145ed520b4e098c168d4b2d28e960152d5a57bf52478bced5556fa245e9e27a506a38b4184f2eb4e0e4a068a1f0c06ca28a07c5b8984f3cc74325b8584cac4fbcb914dbc7e9e1f49b8b4b03d9fc5db3e4ef9a15feae593dd7cc05292fdd9c5214038cb0bec460dfb3317a49cc40d59f3f3bf9fa42f6b981311fd9f14fbcd57d3130fd6dc03a381862d0635928c7037fb0cce80122759261eafefd752f5466a040a0b117764fb163fcf018e5301c558ef07540e7964d621bb6276c944d65fcee285719e3af08cf36308f3cf22a9e205a9d5c842f0d3db07cf14034d0ce619edcdd03eb2b4b0e87b72076cc53b540108b642cda8c5de07fecf52df0bec2dd8c32f7f99380bb8b3f9ff19935e6bd97dff5e21cb276c183a4b3b8d07768fcadef5c5d33be1d126420090b724fef45db44df4fcfbecfb79025a89ead3d3203cc6df08d4ab3c0b0fc6659abf9803b7936affc1672aaa502fcf4ee9b8bfc1fd86e2a77fceac065feaa70d180c31da0397fefdd52fd9be2abcc15a3a4f27fe1bde33a2b76d502e39c24fec075e6b9c34bac67c8a97f039b32418b3f19b97bb1b2d0b76268063cc8f4eef2206bff9d410edd209bac7b999d8d0cd9e9824b955b7b6ec7efa0320895ca40ec278fb977917f8225aac7ecf47de149b26067cf9f95731af9fb1933529723ce8a13e729321424158d7347bd81170e948ee1ea991f98d0d6fded397b560322e781b0ef30371d042514ba1a8e09250567ee38213bc907d61f9576839c7a126f61e95ab860fc31e23d09a0fbe8db20ff7120df0cf14d64fdd85bbb8a2da9eb6b33d623474cdd9a1c0fc14ea0f677605254bbe49280b075453ca8324ca295c816d2a4977bba8ce2639e34c1d5a7ded36bd43ba579cef518c562223eca68f96a558921455091e70d5ac677ac4764034e60396300430b0caa53a8bc6710f0e38ad7d367c0af1d5550d4f173144925db3df59cafe4c9290f8aafe665a81d9c37be3b30a25eb45229dfc8c7052b1908beed05891328bee4846764d13cc510c96f30444d618853e4d017bcb0ebaad5694d4eb143687603d27f1be77c8ff8a2837eb373e1cdc30045965f6cae8ac659333ffb0008c2e4c13466d7c40061058b49d7777c529ec5a600ec1918d74b3d7108f6ec8ce91cc7f6708ebc615b52f9bc99f01eeee8f1d03c0fa1410adc8e1fdc4ebe6520f75dd40d6e69bacc69f470d273ac1383267bff2cb8746adc271815fde7d09c5577867613bee73316f036883d71682a6488ed5bf5bc617e29dcfac5d8f7c7dd27ed39a120f217e1862e48af758fc8b8b7676cc78da0a8f3d54d63af987a3e24db6cf56ede2abcbc0fc5be09965e9942b3c28b3a50c75a90aae08383448662135b75dd29b06a998f9323b4b939b911e84fcd549871cc870aa97b3e39cd435bcacadb61b91ba1061c3ed41555b2391a64e2111a85a76ed3b57be6799f599d487c4fe49b072e364c71bfe3dc70973601f289bea4157ba746056b1948bef3543863c2c0d1296458eea800f5c9ab9b6402266a81ff2979088a8faaef48dab86b59c6be29f042af6d42e7d75c7ae70c7bb8abb79367c0b13645346e22262e3b1d73d66976bed0bf299dcd5ba95731ffae154d54e8b6cfab74647b2a255eb458ea95206af7c46189bcef1b36f363ca6bd6606533bb31092b3827f3eb4bfdc615dc497698ce9891414e6cdda3316df6c06e4c3d1194fabce8f4fd8d67d241d1375d3ac0e27df8c04a4010f4b1475874e419cb2dfa52f786f61bbe30d99f087421119fd181f81c0e3386d565546a3128446cd3460a65b49ebc3118711d266e31be39f17f865b02be33bb51a16526cd24c9ad679a1981ed920171e7a904cbfdece196f5c713dec2f694b18c14a91f58aaff501c988327c582338c4d780fda6a1ef891ad323b768498b2bab3136a9b2e696a500db7186578e8c2bbbcb843c4ffe5bee5dfe7dbd327ae75118a176a8975a6eeaa277c19e29db66c3addbc125f2cccadbd09acdf553bf46e7c4660abc070a28b1f526fddb72c4e68cf6df6b55706abf7628f3d083ef116a2f6c7f61529ca2833d82fae59cd507e43b4e5804d462d10020e247a61797635b3159e03538bbd3370acc3cd801cf02302437fe6e36ee31b8b09f62ae47c3636e4059912dd936c491bac8284572c9e8d906646c35600ddaf6e1966f2698891137e8e3d273a95717339656d7c2a8ef14f2ca23f29d4923183fb3be40ef6dcf90495ea99cd9d9c913013c42b21b75d5a2ebb1c3ab12bf1cdcc3f6d30b5492efa190d2e79f66b6850f0cc7cee29fa19275e71e4fba53e67e31b9c50fafe2f62244c8e5909b818e840986551374709ff9fe0ff34f19827bf75b4cfb768c54c107f5dcabfdd259fef4a728d375b255e71eafbc6ecaf36a926d05d5e6d514f1483d739e3f07c53905ae7141187d227db57189e3f6835ac6bcc0a6e608f36854bf3c18506a0aec6965d4d92846d962d52defbef19f3d1addf3b1ea4e7e40191a22f4667dc3a4683852ad8a9e0b2cf7821c23cb32d0139b9a57d09ac4045a3e14d6d70218c1dd3d1059aedf01fbe7873e62247095cfe87e65770c4dec919b17ca76fcc639c3855c1c7b76c4e632f8380c8f3d719f71a74c51b8cf17990b7e7878ea7f882f5b0de3677c5d0bc08dfd42bf6cdd753a1081142ff29a148342603452fd66c7949d9a0dd092965449921a6961d93f341ddfe1707050deafad7d9a816b4ec3bcf2fdf0b6fe6cfbbddf1c221842ff0cc132fb157e783f80cc837a6d8ecca37bbc5c8f73f99f5e2ea695dc0e071b5c5062d8e575bec1667d2586da1d4e7755c3416ca2ed0c4456b9173638c13c6850c6c1ddd4d0117257d7304ec3f4ed54d280ae880e1fe443f9fe262e66ebed32cec217f7187fcdb890dfc13b5021acfd0a04bbd715049bf408a79a76c71c6eccf26e0f1b184f2d6f994c1cfe206e5f3a73029bf53bff577e11b6ea4508528c8130f5ab001902e70b831b305835893fdc62a7c0ce61c839f2cc81724f16a5061a50b8513960b8fd38d1ed061e586b349956f98f9189aad67d149a45f9df0abef6dbc992de1fb18794b97b44e8189f1514eb23034e685f973f6deec4f499df4f1647bcd186a7fe9739acbc582a7cc53f04dc80e33b8bbc3c12a84e4894afcd79e4ed4c10bfafa2bc95df1c514fc4fdf4f6e3e9b8dc74aafb102859cfec77adcb0b9749df03799f1e5709f4c32b90deeaf2f9090aeace301acab8c55c118af69b176f4a5b54f20a4c8c1a3730958b1b17f71b20231078cd6ce6f3fb0874008833595fe27d18de9ac359a53799493d72b70aecac0b2f376fe688f80b8d19df33386f7046fd498517dc4bc3c6cfa537e36b3a9019e33f902d15c617160473ae481668c9cfe74c21e09c85eb0cf5dcd8981a15ce9fa95ea2d292759eebf53e0d87312df2ce1b4220930c422d59ff5c5995d54358f94ef2d1390e00312d012ee4491cce92302633e5a29f24e68c8d8326434bdaa20a4a667c206219517288caf9d908f3267e7253dec6298ad7d87dd87eab71576c0dee96f01d16774c95ff618b1ca57490220acd4f62be975f4f05e96379e5dddc8744857d9eb7ea33b50eb83c28d11a7965ab1fef0c6895ed977de1a17a6495b92782d208d951eca9a87c22eb0cdd4a23f7fd2555efc2de52e036fec9d47e708470845f9a3cf849e5276970be06ff860faac982ef959d7a36ed03bc3236d8f6d096c718d2f66b590dc5e8163496dde7ea1df01f82ae6c4a8b9396bfe78d25c545aaf564c11a1fbd9de61a6ec81c096ef3c01fd3c92cb71a0fc48b33becf0273eebc37c609d79a37e201e3da2bb50c0fbedf7e01d4b3cecf4d60415ff5d41dd96f1e0ce73469240780228246e785b9b1e85863f187f4b81258f287870ed806482b53ff39b3e2c3501851908fdf0cd2f3afcc871cd11b9e711bc80af2595cc92747472fa07d4631f275d960542dd8a39355ecf6c918e900ad9b2ec5f6023d2a5e255e62bef1a2351bdc448ec6fca7cdc2ac333464284626ed07870aae9c69b56dff68c1f8e9e24b274eadf1e5e0921ffc476847621870e6a9b5e6bf9a7735ac0ccd8612b7bd9dffb7cfcfd0bc79fbe977aa5e477fdfac62ff9bb15eb775877f045f4733ece06558dcb766460fc61585cf9fe6478bfbd9ac1365ac35f697dadc5142d16575bc468b1bcda22418bf5d516295a6cafb658a1c5fe6a8b0d5a1cafb6d8a145e56a8b035ad4aeb628a345e36a8b2a5ab4aeb6a8a345e76a8b265a94aeb668a3c57873ad45012d26575b8c36f067bbda22428bf9d51653b4585c6d11a3c5f26a8b042dd6575ba468b1bdda628516fbab2d366871bcda62871695ab2d0e6851bbdaa28c168dab2daa68d1badaa24e2d3e721ebdefc61f8273a88b42c837be448949619628e0ca2c81aacc520d38d22b70c267b11db8bc9f3b61c5108d12b84429c569e088e04adaddb0aa4f918bac3fff24f36df110708460e054ee7ccfb948b8f1412288f43d6896c54d791510110b5c9c6ddc353de0ea77357fd6fec3c070b8a1ca2d818b912cf42d991285f08d8ab1e13966fd30694599865d97885f60033bb2affbd0f743c97ce85a75364c1df5ae1958e6c5ad28ebd3e0579ede9ee4bc2dd65db10728ffd3ee49469362d2f3e7c28523691aa926624e9645bc46717a4f171c6c34e20b52841663be7857adf895f257baa058a2629db92b621812cecc487a97d5b36a147f75e9b936cfaadbafeae331f357e4695bdc0cd54892a1fafa6aa83a1ef1455d37238b7cfc857e9394587e525f67f690e3ccea7774c1f56ca33bd72af9e47ec77d37de74a04635eaab5155efdcb70f9fd437464fbad5a35bacd50fd56a4a021d3c042335defaad5bd2e9861b11eb5708dd0ba11e55991b11c352feec7e4f6fddb70f03a7dedef098c816be1ab84e9b5fdd8c0a03f7eee6abad4c53dca991566fddefe6ad5bb3d1adeba7aeda4c2b6a36e51feec3f1871bf4e64101c866e0d6a2ddd3cbfac93d38dc29f088faee7bbb3b37ee66a8d7fe515d6087182412bd7765b577d13737dc51cfad5ff449ad5f4fedcaf497dac61f6a7e3f1468bea94dc156f351faa221bee7562d7d764bdb7e73f7b1bd7c105edc7ddaba09d21cd07ca69cbdbc5848d56660e4bc7b0f6e46ab7bf71bab4993a8ab73577f75ef56bfa8b56c3eb8d91dbebb25c36a3caad34c5b547f511ff6d502b4475db5026ae731535ef0a6a7b6aeaecf4df68dd91b7fb09c61f5f80d3d5735f6c3763398c7ca1c84c194f9151ef18e47c6cbbed2f3e58b0377b6d150c5f086b39ec32834b4260fe6c038ef4dbd8f0b5afab63a80ed77b7aaa34faa8d3ad4404d3cf9b9a74ef527b5f419d64002ffe234e4fce3d4557a50af54df159828383ea8952b28e412edd5cb07f4c430baf2d406270f6a4fbfb879acbeaa2d4d370acd4db35d5823e11641e6e6078fabfee4c6d8d6646ba316311d9ce15efa5dc737e8edc227f73b99abc18f46aa55fa53b55a780afe473585e10f3d37459c36dec217f73a501f86fbaeba4a7fb9754c8e9edaf5a35a94cdfdd9d2d1efe49bfa86afb1ddab9b5473a6f62a2ef8ee959877f4551d05fa76d2f6dd3c920f450b06ee85e88782f6c258ade261aa2eca0aaf4dd5e6c43df77b330fd4faa42bb5ba85ef6e75a3b18693773714902be094a13a92a95eac57f7c6eec5fddebcb8090253d12a345f1cec97f5c6aafca4c95ea1a3b64273e9ab1bf768e2b9af01c13ea8534ea38b017a1877df8da3906dfefc0b505eb6eac917643e7d384745557e9f9fd4f50563b9fa673796d14e7fb3f0aa00287a759307cde2797dd688f987eb2b99ddb819572b8ae41586ae551abab5036f409f187d76f777af6aad1599c2bb9a23a53e9bcfae9f83da279ae9510cee449dcb8927a4579d9cf4cdfdde69cef19bfbc861e8eee334f224d472825d61eeeba702c9c29254fc4db8a04cb341aee4aaaa08e50a40c0309728645405ecf3c2ef161ac9366375a6931f0ab302e499e54ae7173073acdb3181d258e1f0aae03056e8297a74a03bd2f87ba330fe14d3e18f448ad94cf451c61a127e4a1591a92be21303893175de65939cccb1b5d56c9fa6730f380aa7ed4d6d09a3be67074b534553c128f3f63fa993faa49152ac36237e77bdee149159050a42efd43aa8af4dfbeab762e3eba1bb5f9e6a2667adce5273a850e367353ec131846713759aa267759a767a3fd2b2eab8aeb8e0dd177536eed5b2479186a0434393aba8ab366be086bfbb5124e3bb3a444a0c89d5615c698655896b5585115763f5e55db688133035bb0cfaa65f2191561421415fcc14ad7db75860c1e8413b516f4c3fdcc8cbbc53046ea9120c568ac81726fa18a86d4eb5f420631fa8ed0497d9ee2ae43557505c5630b6538765a598759c2e9600b4287e9875dddb077d06a70ad9807b6019e08bdb3ee0469ce06cff4a5398ba47d90e8e6682518192997c00e27962232d43e349a42f588ecb86b61fe3bb246f1cc6226428203e7c53ab7cab905de1e5ec1c1380b4476ac5ebf70ee681df79325a13b1aa6a8903c23d9f7ccdef4f43f77e4a759453f8a193cea9295755ad3e49a27344c2648f47c3c4bcdcd1e83e7953c38170889196156f37fde9e609f43e54f8957d4cb5fc8983ce4cdb67f7f24689fc2ba5394a0337dc5473444a6c16e9935678931da1daca83f0922d647de5098fa3890ef68235148aad28e4b8ccd4576095aeb528194d1434835500bffda270bd9a41f9937e7da07642c108ee339dba714b11b5b2cf6ddf805cc82afe262a0cbd43e5777551f55dcfe5be9a595b83dfe6464142a2f55a40627426da8a6c55d514dbb1061d68e8c86ed456bc4d5969ee80fb9f15a2e3ed4e14dfda4c14762b2824bd532bb4f9acf60752168f1cc2638e2d813c3d54fd2a459846b391e2ac3633759c57dfcf5e1e69919fe7a17e4f157f91a89117b41e156bce179ba9af90941ad4ee9322429a626bc6b6ac66572e673d755630c936b7d96561e5c911e0d358d6174c7763753601da3499839244207a325faf04e2c3bb0339886f3c2f2dde14eed5d235f545a245abf856518f7bb5252feef0eac56eb73c130c95d2baf4836177aa573bd55aeb8dd6db6c14ee49b4d61a2202b098d25a37af69ad778a8268ad35284bac95ce6d0d97915654e3ebfab04eb5d65a13e4a9d25a37956ae7a0b5d6506a8268aaf3b9535aebaa5257acb4d67aaab5d610515f146a0399d29a4fa8b01f152549720c2e1f2b35de9dd26f445b05e63825675aeb5545630a457b62c5ee82cd631b863a9323a522d829b0d23282666262cddede9dfde63deebb7e9a4a8b3cadaad9444a6b3d555aeba69693aa4a6b3dd248a2a0749775adb58ed5f79a4a6b0d12cb6b8f49f0c5e6498104b8f7a97ef2a8f018a3845bb77ef5bebb1f6b0a335578a0adb4d63ba5ed03b1a54d19adb474a0b9864869adb13a0c741a07ea9300f69eee4fb5dabaaed5d6d152bd3e55db37553a80f615b57541699962a5cb4cbfa9c5840e9ba657ffe1d6acaad4d6d117b7472b2d13e5788d48a9ad376aeb7757d5d64d35b9aa565bc7a1565b1734fa6b2b386f4f94da7aa3d5d6001ea6149059c1777fd117fc84998a434e6dfdac07add4d6502f412b80dde50ea2a93ae339ee7ca944b344c9bd550598c0f8acb95e280e16048a57ff4169ae63adb9de69a63751bb1d29588e955668aaa4814345bdbcd39aebe9564bb7a9d2636c94e63ad69aeb583345c4048ae6baac35d755a5b91ebda88f685926d2aa7d75badb5a733d524cdf2ad13ad7efee41acec3649ac15d77153ab5615625f69bd9992a3cafae01fb482b0f9a190514d6b8634faaf6af6e7d5fd5e2989bfa015d72ba5b88eb551a35cd28a6ba5fe4b94e23a6d28c5755529ae4102e885588b1423adb86e6ac575ac6ca6b116f995e2ba1c69c5f52aa7b8fee15677aab55d07a5b88601109cc48326097ab1569a0f575aec58e953e237b70cb15269d4d5ce4e15bf28ba5fc6485fd5c0270af18b2d9bd537f7ee0dd81299eb1f6b35f24e296aca0f4a754d902faaeb54abae63adba063a62866af4ac309d565d4739d575f3bb02a1ba525d1f94eabaaa55d7edefaeafc356abaeb7e7748f2551a5ba3efc749f8895b2edf0a616587dbaae8eda546995ab2f9737aa9d575d3fe554d7faec4c270a39d435ff784577bd7a546dd47a429a647aa875d78c40acee3acde9ae2174b0ccfd432d7baaad6d4b2d90c639d5f5aaa51a6e34a39af2f231df55cea9ae613a8a753b2652e915d5f566a110d454617321578cda3fdc2e45a0b7e0fb14481572aa6ba5c5ac2a36b6ad54d7e5bd565d17deb5ea9ae457abba5e69a55f55a9ae9b4a01982acda2565d1f94eabaac55d787855ee3efaed7f88aeafaa054d79a84eb2f432a603942a9aec5d8c8f62dedf95057aaeb5893958dc6baa93a4db182d5e941abae732e15b0a732425612230ee6ee5c0dd36c6a7a35519aeb5469aea1dea3059daa835d557bbe52aaf2482945a04de333aaf404824ff9a2af34d7ed4f4a73bd8b54e196a9d25ca75ba5b9de29fde5213ea73daf6a54046d5a7b01cbe8bbde0126d36a97375a731d6bcd75aa35d7e958a9d56424bc6dcae6922a11aea9c48395d25cd7b5e63a9d2bcd75a450a5188378e64a735d509aeb91d65cd3e1b09aeb28afb906f583e55c6bae132d47275a731d2bcd35e95aade69a2433abb94e156f9c6a6e4ffb3c4d1546af2a5eb5ae571ca48c89949252526d06aa2fb4d07150fde237b80badb9fea235d7ab9ce6baae99d5557aee1cc1684b6baeeb058dedcb3ff534b55e54083833f14a733d55f6d0a636d369754e5969aeeb4a3bd65667b07d4573bd5184b6a034d7a39c7696d4f45675cd964ca7bbae7e5354a7ad74d762f264d67494d3e2afb4f6ba999328abbfd486683da6d6ec1ed4240a5ac95057ca22adbc1e290567aa94d787b1af95d743adbc062b05ad99c69af56bcaeb542b0ccb5a793dd5caeb5829afcb5a8e51ac6e35a7bcc6e449799d28454aaa849d4429afab4a792d27814db95a4e4b945571a7d5531aa5411a4bcf3568a9565e4f95630eacb9038bcd85b47e51c466a171e8ebd9cbd0022805e54afd4e554f556dd4d1ead4aad64bb54bda2aa23d1a15518ab52f6a59b13a3b35bbb49a535e8f7679e5758e512ff07a31e54dae28afc11f6b0312ef9552e937154756d7ca6b3dca583b57b5352ca6b7e717cc9229e575a2e4bc445bbe3b9e3f697aa694fad7422ed20c9a534e39dea3744e771c111a792eb89693042323f6246284b2985f0eb08d2877c32208a6925e935294b02bf884ba1dcc3d496e575af01cf2d1c73d2496cf5acc533f1f233ae7f84f44dce9e4a201c7ddfb7d9780d3ffa45308526408220ac6afb9b0d12afbb6cfd9853e7ea230bd889df717782539782a566f89bbe9c153317d6bdcdd1c3820ed2c52f013fcefdf9177c23747c447a0faf69c2bd8d571f7880ecbf8f85987ce7ddf3733bc7440143227c04811a5c5712f128de1021c53be95785fed86bdcf0e2e00229cf94d5c7282d5cf885778a1bc38a7bfb3b90588302861f7464b3e031c35c06570271c0a32f50a35cee1eee065b86e11940d572d1758361cb798a8474d0ab89b7a1fee59a9c9c1a365c4f67dcf3e510b4623355b1eb6cd438030f7a1c4ab98d8a3dd7f76118a48eaf66ced3fb5eef1178d61f24a3dec6a0c9514e0f7f0a1baca36b1e6f1ec295684aa54bf4a20b36f10a03ee62b248844cbd7ec1cf49fb28fbf3ceb4e5fb17ac6f48b7dd39ffb3f73c7a89d02d53cda389056c3732529da74d1453424c2690816ebdde33b9fd41165036e05734abd8a82bbed060facd8473673638e652f97e80c5138366cb8994baf9b01e2d8efd41026f648bd6d19af545760a23e4c5f6281b6739a6ceae984ad145aea1fe66adc6cb8b95740483732485c06d996ad8240627946bedfbab9d9ae040f3e64d3a58b8762ec53c811950140830ee28cca48a9f2a072ad1755de25c1651dce5c3c5509c0e6cc2cac96401908389a200da8dc67dc2dd1326f26975a26e069da4c2237043621a3feac976c42144cbee2cd9f4b71628c7f5be745dfd0ff1ea72b42b9122c4d3596d0aed084bf28a705a747e5855de0f17a860388385c1f319dba4d3de6b935e8fa8739c6d76339fd62c1f7838fb0f868bac164e5159ffdeec45b8eaf475dfa88babc46d05668b1bfda628316c7ab2d126a91a00e4707d040ab26c9d242f39201f957bb459cdc88c9b4d2e6be1b3ff45d2cef77fbba7fcbabf642ed6eb948cca38a09a7d2e30f38e788ddc7c11bd02e73e604c1bea10a391f989e9132c93df3e672a31079451905e96a4883b051f9be03f5dcc2e895b2e1d075ffd63d1876a90033a779f85aec9b1b20a010509bb1133f55aa3f5d0f8547c771cd1cacc681c212c6de93721d0f94f26578c27948cd9491deabe354b13007c4eeedf17ff7d505926f99ecfd39095488e2f58817dc7c25424dafd3a34a17953471cc1fdcf787c59ee509994b244c7f0b32e9e06a000840a6bea2cb76eb23bbc910996f24888fd75782019f85c26548ab9c21421f401fd83579c4727ccd60f5c59f13ef855c5289a0a8fbd3aca1d37bc6802bb0d99c4e377ba70e3486349a2fc6bcd1849e6d9e457f0b5c5943cc7c99c4d2d89314c10ebe32b6ca6e8df06a28f21466f4bdbece80b4ee55b251ff34eb751efb6d81fd28855fb2f75ca6ae759af1f03f5d56e2c01cdecefba74acfdd0ae4e42355e92e63f8074eda78cce4ced78a37f9679ffeea92eb98a5cdb06ad2ec9303f3b2f4242bc8697f8f97fb73c97a0628fcf4dd955844c577d979a6046b4adfd247bac98c47b57c6146cefbf67ca3b6da3c6092da73154a7607aff86eee7f722298e381d3cd1a2edc99491165deb417cedd0c26609322fbedd0d62dd8d22d13f99b05b579264e3cacf9ea0c031dd9220a78d5c5de0e4cd8a3f6fd6c299e68b4334f218145eefbccf1317dc9bef7607a4baf77f6bd17976c9ea12bf20b2b2a7833f1516fb8ca886155657e73212c76d64b87a36517df558693efc06ad945e335c3d1bdea1223cfdea960afab7bcf7227fed359ea3a5e396a52f5de3264088eea05fdbb7318027732ab144a05fd858d8356493456eacc1dd5f2b5f62afdbe2e78604c8a769cb4ca4c0ed461bb8b093c434c64ee75996bb4f355a3a1092bcc30fdca7f9756e3a0be2f7ccdf501c82b3d6336c1f8f7e3506da3ae8688febe478b39384da1fc5585b7ff00f5b6498d75f278642f9c6f3d9d1bb587940f34c972c031f0b2b3b9bcc78c8d5edd9e1d6dccbcdda5ceb55d2aa3f1313f55ce25a26aff6f80812adcaeb520b668a34fe383f197fe44ef143234fc69a73efed511c851ed1933ca6d8adf51037930fdb5f74b189a5c422b29a448390f50643d132f5ecc8672bf2f3c84b22f578ce8125d0845047d770829c5dbe57207ee2436f924b6bcc59abfc8e9dd365e81fbeb9f1feebe091b1e5217c850aa6f0e85cc1dee78d9305733986cb87792bbc289270296bc7f58a95ae51ac46d96f112d2cf150b9e096d0ab411ad40ea6560e72fbd994d803074e9100a1eb7f9ca6d6c7e9667882947cf1051d6d9b591c9b61429c82840560233c1384a96fd906ded04455d8f0ad8db829328f9699d5923d02321515420b3ce19ac4a685f388266862c6c6682d41e1f633a968d3e5b91ad52db0cb922ef9de494587b9cf469652fd928e6b914132889ba5157931b228eafc8d564244f1d4daaed08da842a5898c8ce6668fcf0c549d649c0b28063c44a01675d7aa6b2d2c547d30c6e892d1e11ad4f7b54b97c86e2fde3b227e94e912631923c1bcdae09ccb8ed245a9332138c6cad48fcdd267c5bf0917b136dd6946678c449365130baab48110af32f55c9b9113ed55a33a0ee1e25893ce073f45074c572c60fae4a5f927d7a3330d332979a9e9589dc16424548769ebffe72e4047bd888f1ce973a70c64c9f89f5e55acf3da883062695f9bbc2009cf2c28984f67e5dfd56cd0feab67a33f7f372833fbe76e967f8a79fbd2b3fc30b6d077a46aab3cb23eb5d688b6810fabdf12e7eefc5deedba4ea5c8504f9602b9441e582916ca6fce4845e7da77c5f15027efdddd7db039b9a92d576864913cf71e9d14ec79ea5d9ec741fd8ed5ef91fabdbbf26ea27e37d5ef0ff7737aa5cba947a51742d565a8da87ae9bb3dbfa77aa7ec7577e6fd4ef44fdde5df9adfb5cfdc5efe6956f6df8ac9c4d51f73ff25d9bbabaef6c692c7771caf1459d738eeeea0c34947a0ea9d096f42c34073ccb2dc134bf34f69371d7dd7f504d32e1fc7ca64fd04b64bf4bf85cd4f0a436857d7da87fbae9f96a1b7cfd5ddd24742b60873055b75587a99ac89bfbd956b7dfd554d5edf6e50e0f9e19da551f75cda3bd680f091f9c8150cf6e0da1899ebbfbd9dd1d9ead8aeea29d874e510765c77be6912d3cf6a4e3aa3a341a8aa66a39533fd7b71df6c0e1979ec3136a7c03970f93b568a1a0b66cc7bf1b28a26c83befc7c3554c9396b754773e891d2fd1635db3f630df92fe5f08ac47bc5a3ea8e76843dc17543fba9fea5f71e89bd620956bdf1048b8d1da241863f3700166cc6aea3d04c27b6acec9092e1bf92b6a76f06521378cee70c65f9493b86ea1b0b7eb2516b6ca4915466bd716f7185a225bf44d4bdea9f814cd9b728fdd9f555d3736fca9251dbefaaadefde68e837aa917fb6f75449b46b7f67d016774d97fec61ee0f08d176c82be9e4d685658b035e641bb485867d6a57396760d740519f8dae3b57aa6df9608e276684b191d39e5e981b774cf573bbedaf2d586afd67cb5e2ab255fa57cb5e0ab84afe6816874688ff96aca5713e62ed928c5b7c65c6967c4ff4abc7728e05be397abdcb2c5375148b9c2cfcafcacc1375198b9c2ffca28b9ccff50f577cbff36fc6fcdff56fc6fc1ff12e47267f60199b9277c15f1d598af46a8be6ca70551bb1d9caef484e717851726dde0a9d4830b93eef017da377f5c827f752f91b97e77697996fc2fe57f739e74fc4f97e71f418b850f804c8dfba85edad94e7edd579f4d010baf9cde945b8d53939fff7c74141919617b16856adee031c7621833b9e324e55b78e52454763034d33bd5a8b245c98d86d4dea843e95fdd7ac0593d8b750397d959b8e5d098b6bf68b03a216db04cbea4eca961c75f357cd5097f207b48596dd178cd8dcd0e6d1995acf1346970e1b11e9ef52ced9a4d7d6218aa53c528518530a554e274daac6cfc042af260c03777299d3764ccd0f451e0ba674b4564bfd1daefd30c5bb56c6fbe7da2aa6ea65de34fcb57deed767ca63b4345e9bfc00834b077bec20cf568ef70e5a937d5e627344b6fe69db177a5ce0fc4fcda82d930fe766ab9387ee33a2043b91de3951994837d51b5e179737cfa1c1d43b0d16dcbfddf340db5defa5f792bd741987b770287989e9b3556261983164149b8e9e40daabaee957195dc7c336958a9d098cd0fa71780f9e007a5538fd06a023075e5aa38a7258c2ae50e6b70586bc0d2deacceaf46f83fc11e925d05d33bd068dfb49857c304761def64f0c1bf33f89e8cbb80e1ecf19d6ce8d9b6543a9e2b2566dca8ea1dc6088ddcb872754aea7f1acc90f2e70fae0d61fb8346b0f9911f0076b88901b4d0ba7db63077ffdeae6254296e762e2c0c4a09503d19ac4b01c32ae5863550d5b0fed1b0b2d3b269283dc45256b56f0253a8fd03300c704cb6e821c67fde61df2cb9715a678273acfb4ef9d4731bbf02bc4e0a50b2a388db63c6210edc474f97d737078c72e6dec4e405a6d0f53cdfa0593f3daf5fffed9d25628d9b2d2c845aaddef9c6be309350d0e04ea500effe8563386457a8ec6accd4f29d36f4749c6853a809e5bc76442deaa05d441db62ad6738d41d7829331a7d105cc5747fd324eafdfc6dd6dc1fbdd8262961bb4fac18b05132a7f0603acd0e8475093ef0a7c5cf66a5d1d9e1e2905f8af7fb6be039ee6a8c9331c3719d78df0eab1c3669c6c0d07d69f4b6623ad74f2dee3ef56fd909b142a1b57fe38a771f33f3691ed0fa28ecc48fe6efc0eab9e8c1e7815126cadf0df43abe13f40ab2fa8d2043801bc3e9bd477e66a99226ce253b5c2cc7c9231e3b3fda6aa57b1c7ad369b8dcb7335c48997c397b926b06f2ef07af98b7c323495acdd87b16c2d755572ab19b874dba778ad0278c0520251c8faed3c3557557c468c8cff687987b819e490dcc325045d958eb3776ac4ddc7981f50e66943e559b9f31ced3a5e981e58ee8b30827632f6396d84f0af7441636f7d18d84416a50b03175d86ec415ae275bc75dc22cb13ebf3b703e2ba4f89cf9fe7f5479ab328788a34f3dcc20b737b012647790dbd138a700a72d8963475f2ff9e0fcbc90a05f4b6cff5e63a9aeeb2ff18d99415717b3938646c48125cb9c2c41398b623fc5f243eab08b34ed2c46d94f4b1d07d641d5eef650abcbb4a44720a5ce57e8b7503a8fc7a5cc7d05c4305c217a5bc86705718c16c9cfd9e01ae8485e7bfb3fad9fb1949a7f763602ba176a56b5c44abc6302e143f87667f075f9af98b5b589d73963e13c1a62cbf2f164c495a6c716cb2d36182972680e9a8a9d840be09a09b024cd6f85ad43845678a252a815305b7f34a4b1363067380757289db091c9de24eaad8ed18df9f89773781cd72ac105c0a21763946710662399a229507faedac7dbb86735653fe1a33e506287098c15d5f16a29a6822d448d419ada37dad0d27ca413194d79ab9d7ce48c185fd2f63a52b2dff220408833dd564ee68cd29c1991057d50bed9fc86f1570c5ee9b437cb36f29c59fbf34054cd6e56886a6d5a6c277817913d73b1bd2f3bf9ffffbf9ffe367ff1ffd0c44dbaa74b0fffbf9bf9ffffbf9bf9ffffbf9d73ffbffdacf8159ed3dc8f9b58c7f9a71e15cdfd4076c4952854c86177f3e1adf2cbff0ef67ea8eba5e7db13a0578bc1ff9ce21fbb7f3b4866136516cdd14fed7b5264ba6873b8e34a1f631cce0adbd9286cb5ad376c20ca76cf368ef7d727520e9a4b3e7266fce9d75fd226a88acd70a4fc7ca0999f8bb8c21f47f21a2d5739ac0640e8f05b448622dae752a6a6ea83d9e485f54a0197272015ce9041115538a43d1caedfdfdefc496ffa8363b1399c9048db9d5e66c10acae59ae991df322f6becf019718bbe8b93f3bf186f70582ed0edd1e176a1b474defea36167e5901ca6ee302d254eb36b78f21f904e9fde3c9f09e6100070ca0f2ff65000440d92886184519915c6559dedc0198e85331f25d28ba281da03c2b94b9619d03deb8703579a1b0e3ebd19da04136237a2d74e2c3d637f5799706d7c237a7155e8219fdc762b5f1b0737d94abfc289dbe230e59004615e562987db5f0481f2dd1ab5b89d23a7bb78a10e662cfac62cfa41c6b36262b345497114cd293613134b51270d794aa863f6790fa95184d2ad4ff94fbf968cc4bf6f39bcf6d07595f5f8b3d13b57f990eedcba4fd0b4773ce4258696d254963b6efc5d0dc9acdbb5300f1b09b2d18cf70a0470987becd7957b675c6bd657e71ccc19551c201978b47518f0e4c68e635ae317b808a65c666ce6940383c42b16bb680c6b79c680011ea1d44b6b75b9c28a084fb2576832d84d4c571c27731180a10f34d1bd2e602a27a526367fd36db69661b60a88d4fb7d7806204212dbe93c7d2468e58cac31c90337f9af2dd35cf333b65d9ed156e97f0ff91bb90c6f8203b4b6fe0f905f7cca54f0e194bb6619453f7d50f139a26aeb5f3d34bbe4e330811c7890e415c0868f78ed8644fe3832ff18f8053048f479eb6a8df18824f76ec619ab7c420db4bee91117969c17b3ea3800b7358f250674f167cb2418f167cbbc1156e5909f52dd701e78c6ecf58571d6f9477f37ce321092b797eccf8fb255efd197cd3a32d8b633528813b3cbe1dcae47fa75d2e2718de16bbbfd55e311c351e503c420bddb4a197d8e21f26928eb862ef72c4b6c002e65dc2ff67fadc0a5700d0c8d3ce97a8889c78caed63bce0508b68d1e5841df3060f2311d3281af0f16bde736e0a3c9ce361b2e8d21cd85726303b71b57d911c07d0efc1196481b9ad0066e4624de68b04583abbff918df31711168e2d1e9363c6a76c9d9f4d82a976b0b2852dc767ced8bd70fa4c7e4025f5d4f9fd76960c9b8525c3ec82dfa9d53c7bbb4f6b8b97973eb8465a911db4aa3bce0ab0e69757cf9c47423d7db1a7678919af163e1849de5bfebf5bf8caa766b6e689ad3cf6686e62a27bc6eb07ce87b068f23ea5d01dd6f0ddf49610d7065d032795aafc5dd1c78d831c7021a664fe9da6b9c3004ae823a4bb4d5c8d3942947cf67d53c05d09c897a5e21c1d66b2173d21e3d31ddbc9e7e823fa45a0182fb9f598bf1b7595a735f8da16f691ca53d7d16ee5e79f657d959832d481c1ecb30c1257404d47effcbd0d9e55bcf3f77678065dac05db0cdbc69b2e8e724ff00cfb9e3126736e68469058b63cacabe437c71b5eb2e94690027d6bd5a5bb6d7c8cf1f667bac700c756cf4f8405f9ce71c9c7f1c81877c3f93cea2d316530b2a1b0be16904d4ba842f66cb2e5535e19140373b805194793f1baeb8c46114064b2665c5ae509d51e18894cd75d1b7f642c50bf5199efae8a1d5d7799b7520bcfa907e087f161b5dcf8de82fef758348a71734eff5f79f153dc743188f3274e4d4482454d47b02d7851935bb1ef62288749cea8454b3b616574152cfcbec56bdc44de18ea6f1edba825033705a035937b091bd3ca16ed57d6ff01cc5cb66e0361206fede44864c1c29536bce2a32da3dc3d3df7b37342b911709b73f96cb9ed14376f9947470ff1b62b1cb06fe6689a6cbbb4b6b57636fa26323a456d8d9aecc7fec918d26d573214f866899bab6dd7e55159e3e6466e527c206eee70b3f6c14bb7630c7d90398426bdcd9bdf9d4bc38bf03227ee01d9384f4c8fd968876273e00c9a75fa4460262fd76c5be886d99a318b32351825aabfd8d917d8995e352260ee423de4dbff0b435edd6a17c0bbff0b434eb1ca8c902b75051a17bd8d68d47039528326efa3dc98a35d57344ad9b83224b3d0c3f7d14e0ae457f861f6d19e194198ddbc58de168362abe77cd73dffc8ad02941a4e46013250c202cde2b6d8374d4c39e5171a1b5ebbe6a6eb3e034367c117cc9d3d29809a7541e209f16ff9ad682b94c839a856bae0d4b9c9144dee724ed984c698f7eed4786164373f29ca18e037f1d2187101ff5b4ce0d64d7180c8307375012a43cbb1e096f04f9b79ecc9f1c0927e9f755059c36c114812dd75cf084e9b555869076ea8e42cdec1903bbea8eb8c99777c610144b449f4f3853c7f777136efb6e90a4fd71d18681f89399bda2410843055a42d39f0802cc83634ca0a90b73f2ee8b59452000f9a650befc62c765d47ad0a5f9c6a6e0598e894e1a7f543a59bc0aa812780b01ee17f65a7cefa41f9068802096fcfb47a4f1432aecb9e588363e9973d5c1689d526f66c42818885c5ba00b26b1a72d367d788f73a49787bebcc8c36ce3a0fc5305fc05ab72e3411f517a6dcd1df0dccfe497db0d0d4be21c6143ac258132ec309ffa763c41a4558d33dace3b5de89d5bcf178061b01f4d9f462151d2cd0c1f68770ae7474ec3e513fe40284d519eda13560bcb6bfe0cf3e34b7267ae58d79717a832b3e6ee8e1f75ee93bc2f9f06211c70ffec48c3f511969e5f1885f8b19cfb6aad61185583ffec78dc48de3376b0ee79f366f55b5eea948a5c37dae3d91ae43dd730c4e379f2a88c26353ab1c0945cfad40d7b938cb1ef10c6b0f274aeefaf09c8ea5928922f54fbc7b03526067234ff75d47f3962fa4f08527d01587df84730aae4b90f73850700a9d488d89577de8022358252cf3c0817a3f0115246ebba145e1c8a663894fc0a6c4343e50e49f3d70902ff1a49df6fff0294759f63bf1341350c3a1adefb43f6aa900530476b0fee28e3963369f0e4b6053668e911952b4169cc5a414e5ef721eb50edd1d188a3d2d2079eb11dd894f7395f7b725b7bf9c0f48e696b5e951e4514f7ca500f2ad07175057f860f2fb2baf2696703b90d71c1780bc106d620542d6cd55a8e148b8bff4ed0fa467aa04a114e9bcde09fc338442ceaf9f842e921e50bc00498c7a57887085072f2e1ea05063ad4d4579910d94f1a1bd83188cb37ea8fac4ba7568558fab5b53d8b1027fbeef12c817b0bb1cdac582e8112c4a2fc397432a33c72b0d0fa37885c0da7d37779416b85f6037c412ff1b7d6261908ed08f1cd3441f5d0197aed14b616757df980ef42309b34b0bfeb7e39eeb63e62e89c3c27675c4711e68a36fd9e29d0fcd0fcf7cefe7a64e32df1642df1ecb59d6e8f4048d8e8094c7758d483bdbc06cbe712a329acfb8e71cf4fe16434fd1e52cd775e1d61cb8e72d562ae335473266285f7f37e404fd2d72fd4eb681a972c72d749c60f1c63bf9d083091e3340e00c60653027c707f7ad8869c6ac690591904c574d393972d027dcb0bdb4ea88f5ba4b299a56eb2ef0518badb0c7965f7c1507b69d984929a3d127655942768ece373ec2d9f3755fd2c30a5f4db2fd14d1002dd5747e275d35b6904ca663cb4adbc30e0507f20f45dafddb47cc62804c10f818dfd81f99f81d8e5d859e394910a3f4b0f86acadb6cea743099ca345fdc084bbfdcc4fdffc2cf21d25b136c9c7fbe35f2dc0a7228a2d80d912c982e5cb645b3c2fae965aed9655eecb0cca348adeffca078f218171d2c5e1b8b57aab3e1a10c2d7bf2c292e29d8433766d3fd539eb47768c01f67db21bd5c83217edba263930225cbfba3156eedc1c367aa2ca91350392849ed5b75dd3c800b5b6ed9aeaa395370935e17f45b48487ae68498fa5ae7941b2421e6a34f3ed91e8993ed495aca753518123e6031abcb69d0373d4e30f47b8ca0785d13262d767a488576a7865fe01f49ebdb80377d3a8f9a7fed82b9588356d33b06c31e664c5b83786417504464273c2c219e115264e01180a20f8049fdffff9f30451a3ae785c10adf8c981250306dac2f5b10887d3f972792c2471c06ada8657428b8495ae198df4d1adebe017184d9d8c9ef5b3f846669ae2d03c399c0b0dfa78acbc99ab581999d5f49ee0b80ad3012f5c5778a1e6a84be00105510d54bafce5df9bbcf0fe19f0849c0d520855f67fa794731d0cbe8dff9c611a046804c53a01df982efa2c8b8de02a3d812e9575aa0135eae7545d7516d8a6f7b6fb1036379e067fb6c243c26ca64ac4b427a1f34524e47e4eb0ecb32d23805d5d0737895b0d96a1824d90cd58e200704ee672df6509ebb025996d3260fd573f99c3cb7837c9f92901d24d887e3719b00cf9607ddc2b75e81e725f8d0f7c8cc8bd57b7112ae6b2c09ce19ef9d2c39b9286cadddff0a7145a07b46ab5312fbc9dbd5c467a7e2534cd1a83f71ce319c1a3633c01b30954404907430c172cf09a87b7791301db1f2edd471f90f8b067fcfb3af2fd1df9fdf2ab9b90bcc13c080e56859c7542b3e958939631339ef25f4684c760b44912c49b174570f09870dbc0003854a46e73a604263e76a1e418f0c7b54e82fbbba586a153451c31fc4387811488fc113f7b6682bd828e8ce2ccfcc729ee2ef0fa0eff8f6fe4b672d4e12fb0fea928e265e29b3aac6cbb1025627ccaaf9435d9d3f97b3087311b5ef5f5abba6ed550c224bb583590f531ebc70e7a9591c11ee49ef58649b310c9065dfb66b5e9e69e33eddf4075cbf2eb11cfaa1bad8dcb7ac88eda01778fb91eca74b77a0bddeefeb75dec36f956e0deb88b50acbb7b585fcadb0c95b6023ee98d6d5e73bdb6b93c7d535be795d6c5d0d403530d73dd1587a603e628795222f817a1fc6425fa25e12b199fb27eca7db206dc4abc109e659fccc6319f5b168b3537f5ae69c368282358659d970079b3811b43131438af9d07ba5d9f9eb3d212b847b4d86dc56bc25d320599dd4b1ac607e76ed6d126d1dd5677e28622d79950b9f34d04dda24c25cda65203759bfc712a220343d7e63ed1b7f9756b8f5746d53365cf24edfcf70fd9f7bff3e7c1a168f569553410b951d0fc6fcc64d7cd6d5d0950e3f63e948d3c5d8db4092e6fd5151a489801abcc75067cf6a9887aa62d4af51c44d76e2e43341b367767a05cbe318530d74f7148c7e21494afadbd38d4b2b104717e2d01e60ca1a47082a5a45f8c8877fcd2718b245719f81cb02df3353339e286544abbb96ddbbf486fa135a6f16ad3489bddd309d1c91877fff664fc764a12122753cafecce6503a0085ef5f648fdbbe48f20d0dda133f0fda24f1830b3ceebb67680106a3c8373b804a4343eadcfb87a0fadb193e66e3b9d79be6e79639bb86dd6e06cc483251fa205fef679cf0a69b5b8bd0461e870cc085d0592a72007c3c41c91656c90f203981ea0c6f253792db0919a47c4abb617d5bdaf0d1dd820b4a6d2493215fa0be490364c26bb933b0bd8ececb6013d615b804b0e1c4ba5efc25124fbbd613a7a541757f82c48724715ffce4947df767d9bf9d6f0e6d3fd7dd4544fa9beea28120a95e265d9c7647d0f6e38fc0869c61b9be7d7380a946db7c8133716bbff3b55088aee1a021abe85e7f90b52cd1a37697ec5a244360bc6d64191fc1642ef70bd99e2f3d951e1a03116710e1027639b1fbb066a436d952f0be77f63d5a6e644b2efd74ab7dd26d05dd963219b81082cb61a59d3b07b36b88bc67cde99dd323129ae8c6c4b7b9dea886dadfa3f3e5264fff593b7f853739b5e1fb04e4a18902cb12ca3008b217dd73c83e61838e581c02e9a46bea8041e987d6787b01819ef4238b4cb0bcf1cffa21583efe53cc09ae29208bdaa713d609b5d216fcef869bf7e07d99fddfe108b4ca4cf6928da52200c083d4473a5cc4acbdfc79189e2d3fe3c7d0c4bb4ba3b76e1fa1e400ecf36731e43f1ec0f3fde6b357ffc0a2c122d014febc679e8df6100c8596bd682fa2064b7513ad54ac5bab7f9f73a80bb5b86493cd251b5049457aead969c2a69473f271ee11a810a232582ac915026bcdeb9f3327fd6d56818b72ecd41a789dc88a332b4c61f49db706a100c98285b588e5f209ffcb670b89be3b15249c98bef398a178b963e3b808956d09bdc22a942e6f0b9410033688fdf5b6f8a79960d453d2bd354e25de3e0c1130dd27322c341c6116335ed298ffadcbca5fe80ff91f86b2a929922d26ef34946d198adcc13f8fa75abdcb02d99189beea50b69e268148b4b8a51e5d9e5060d350d5eab279a1091ecb6572b97d5a9759664064c07b5e5d80e3b92bcbb9ec9b579c3deb8ef4ccabcce96e4b6c93d23ea5a0a16586b4ca9b342084365269480ac0b493b76b7dd4df72c75ef72129152011b6b8492ebdc40e0ad9fdb5f412554ef57b68f2f345e2bb1c2fd30948360cbc3b9b3a04473bdaa89434bce7376684321505f8804b1dd4d18e73818c91d681a06604e7e3139f84ec3631236c491dc34f3ffbded0c56a0df04660f5b292ae05a7603a85173343f194ff29b7aa4985416984ff33e50925cefbe2692f36d753d88af0eefc47b127a81a16e075a5eb7c4a0c8ac92969b58cbc40f79c18f58dfdd1a0aaa2c42d87283c0b74dbe08393dab983db2a65aff225f48b13185df87ec03ce01ab1477c53325649ef531b1a84a88c7995de65ebf807302afc02216ebe8929e08bd9557804acdadb564e3e35f308e7eb71f54dcfcc68488d4968d20a5bac8eb4769be4f62c0c6e77e1e3fbe4d694f16685de94c3010fc61a0652af28a37c43ddb4de71d8dd1ff63cd81d4ce0b8d300d09e3b7f85d2c908abd8f84d370b68ea5b90270815483197e60f609f80995fa1ac8fd92e7dc9395ec06ba26b5907dff95f55bb0ec376aa5dd28d17aadad0237747357757ca449470af5913e564004ec53713d77560da95ee898de388f3b8c17faefc862c671fcc9c81614891a248121db6712aa0618f19e42a2c744ac0c9960bad4d3132193bc1189bcb809c8537eae7a89935b989c35299058123b6767fc73981ef72937067b0f5d3d1ca257067eae87d607ea3a7d71eac3203bd740bacec65fdfd92c3da26755e9d3faaeab353df66f8a9b611430e25d90e0e0e3cc90ecc74a26c3f72be75a7d84f7fda45b6a9ffeda0f73c3af884769db579ff434127bc565ed567db0e3e8c6968bd3e3c3ede88f1dac2a394a7ba7c67ff883d3bd1ccceac063d4dd1237435adc2c9eeddd23302872771a8b4597e89296ea266f302f099107c76ed7b97085c9f805c91ae14b0bde2f82c42002dce8aba6051a5c5be86925059beba9df88ef56f9600965585bd748c4ef6c555c5e92948c4a21027c911309ac3eda9aa711e65240ff215d7a09bde712f75eaadc7d4b6814fb00b3dbe53ebd961f4d5b0aa5c152c7b6588d6032a7a4e1227f2ecfd381f43932f1a374afe4650008a206c109e8ef0dc096e4733f8b1f302f23b13b8b294e13e33e33cd5f577d56676d266c7ee875452f7c6b0c26c3117e9864e4eccbccc3e66d7906aaeed32d7f680b647b4adc79ee54979ce1094a188654979fee5e480c57c63d317736e683e1c0eeac9cf5084ee1ea607096f129eb95b44fc528bbb01511a3162436dce3fed4f5282e4d578d1ed6b3821d5a5777d63495722ee51d9b2b5e1ed947d3f66e4307d25bb1404f43d5ba966bcae113f03d63a7625202c3493573e81af1ca1cb504a60089cb410471732c95ef9d41b5702082c46656b444d552ea9f2efc227d2d653d7e3d83bf3c9eaa352bc641267eb468d05e3f20fe58334f354ba4946458b198b5b6db8677446d0ed81833aa27e768c80c6f9d6e77468b4a40bb5be8193730e77f26d4bb0d83568a6a2dd228071ebde35e828975901e43db305adc813f8bba182b654e18d7d3d2a9cf92efdccd947b844dd72486341c8313b28f4b87a4370ee01346d7bcef161f7aa3d8088a8b287cb9855278d88dd9ada51de27a8004f96f20f378d3d1061bbaa69d484cf41c4e700b508ae9e835c1420b396bc501d091224e5eece5710feae3d7643e54555801603ce5672fb40e3eb670bb59edc9803e71f9de70e2aa63b09af8c33e481dcd80dcbe3980de2b719ac8ff5ee0536976236c10a70bb4aaedd41f8c20febaf954b226b3fe62b0cbce0fe664d56d44c11fbbcf9a9da4082cde8c983a55f58f84e7086dd464c64b5237a2bcc913aa26a0f9c8d23fb3d3f4591c9e4063a9ae77f42ad56e1f9b1f04d156bdb42727d76fc38084f456fd419473183de3590730a0c35952a3018c9eb58f38ae7dc36e90cf59513c684b3b3ec7ed142ed7f9db0e892bba73ee3cf6f7fb9731ef1abeb19c35e7b02179adaa5adee4cbac2aff5811a80acfe7086c3f326f59ae241665d7db6ed69b554af0c6c7de5787782dcd3039453951f27013465de842f84aadca2d9b3d1c202e5164a5813f6e1cd4507f9a6809650d774265d37ef424149db112b88f9ed2d43cc88efb5603784579b6c0138a75ca80082bff88512be2d410580da0ed07f9fbf40142d862f7a8117a8898864f89f85bad7c96deeec84dc8b5da24a4d6d0b2569d9d5a017fcc83e3e53deee708cd841b874008903c3bbc15ed1bed934e0fb03f256eb92b3f4aaa1dd5a9054eaa7ba2873d2718e578f7dfecf7f7d4e9ad19031433f7b63e149637009141d4af5221f146332bf21c1d87702faef1144cf34ba26b9e5529af5df70e128d654cb5e59dde4223d271086e1b65807706c95fb6205ec9124c769b07ccfb42982aa672a1e3eeca2c5d6f3977fe8d958f24e300a3c150ecc514d46eab4cb072b77c2721817c16bcc9131ec81ffa9b441f2d4f9300e4fd5858653bb8a6b6598896e902ad5487a4c78fd2b277687b350bb532c1151afbbdcb87b42bf51cabb54f04f9c2fa1e7d1910402433d094c43dfb1c204122974d8e933bd622ab68ff3675af67f55f31d55af4062435ae51db027b4136bee6912e558727b15a28390fd3d89cd802e2b06add9d6bbb20dc6c48c1fe71951d9c421f21e6fe390bcc803b38b43d2125201e479c6c22ee2d0c0a1fdc82f5741e0d69472cad4ea1ea47a1ece965c7ba631303f7f613e8142341697ea3a50cbc1534a56a217037be3208dc8f9ef5847ac974d6a411b2d24b5de3d035162c7f0bc86be76086bd98f94a05e974e3e94759405acda878a0662616efdc5691e44bdec5c81ca5fced583fe6f948f3dc1b6463b8fff21da5866dd50032e21e35ba1692d09abf45c0f9d1fb10b7e815c7551bde9dbb7ae8dab9486b4d4be88a612cac698ef56afe5d535b3e7f043adcd54526f352ff1b53cdc3f2e9b64d2c6b24d1a7fab568656bfc2ecc556d9092fe42c2f08acf14159000127f8bf069fac6270f7d72d8b2741b862ebcde73c9f9c979ca07c07d40760658351cd4bca84222408f8bd51027e7b56cf321a447c3d568bdccf207d483e2885f2c9c44386aa0f2d23f56c6099315578805da087d62ec6f2fa1e7e03c94631961206b4e5a548918b0bd65b8454223b029293f1fb18d8429d96361392f101da5d2857d95a26714733df528b50715c40ef2880b2fea5de346683f447d71078cf567f39207e70fb2bb71a5370e1d037027fbca885ec11486910e3738c7ddbc75d27b0a66c298c61a2dbdf9e484b6d2f272cc9202acc38d6e75d45773a7a44d4053350f53b7d484e69b30464625a0890b8226bac9a8ad0366e38eb04e85c3ef03beb2013228bbe882f31a27f39cdc5454acc3071911c1bd32a81cb820342995d391a49d769fbe49992c7508c1e30c249467db3e435817d02aacecfbc30504b7c02fb1cba441c3b14fd71c5f14906e4beb86593a33be692800ea7bac99c4e2bfbe7bf14f88d12c58c7dc3b305db6286d9bd171286be4d15162b3323bfede5c4849ef15ff84c7cab85e78db9150a7f9224b6b1311cc163a8a5dd358f697547d67c34a3f10652c31cb3c778a1a026d5e94b0be5e99b4831b4c5f586aeed1cd7fc1265840ccdfc4646dcc3e8609216e13296822cfc6109630f5c5510949ac81d46a530dadd72299fde25102d50a2d9d98de973b24ff0f657ce1828ba7c68687cc58b167a1ab60bbdf30367ec81fb07c01e987ad2b5504e716649d791badf4dac6f82e1bc57ec99e486e3830e688a1404c71f9a5606e7d57c42a39c9f8c99121bdba5fc277d212a50e406369b03fa38b299267a74b43d96d49258e5e6c83bc556f3c8e6c47dcd3efa8d626e694c00c00d82c7e62d367fc42d7bdc0955f584bc19331a79c5a159d621e97524f382a6b2ebd67994135418b8d5400826540dd90b7d57250d393ff257ef24a8b342f82de3d9eb371405e89bafa2f104605ce7277a9c5d6f4ac13377142baba7cfd432f2341d0facf9b2477e4dcf1912aa7336c55c1479d97a63a4ed8b76232af03b34ec487ab22fbed9614b8ed8bf0c253e5adb3624ee7640f7f658df03fe1f5b2c3557718dcc1dadee1f3cd660db2d83c584af2e46759001456c1162cc5ad38ad1503166e54859038e4da504ab3679544f0c627a794be2c5f580762133572f30b8602d4ac835095dcbcfe2c08c0b1ec9833e1919bc9375ee5bface8aa7d228971064747f5255e842c9b62bf94afe90885bdc895286444a84e25bdfba51e5828b5260d24dde7d6e0abfb91144cb0e16b0296e72ca841b42119d730a6b62f205ac68054cc7f5e0c5ad78d0e1bf9469e7bdfa72be3cf9228875666c29c0e8997d3ee0b41fc0273e50e5c66a0d0e0f8c23b8ed83671cb5aeba5664f823506bae37ef20bafe00f10c81e3735314bb3f77471898c0161b5ba2871d4f439c796bec2af7533cb07d92357b3c51d2876fc5a60e74c6ef375b961708cde621d7040944a625db04fb36a33be207348280848dabd3b5f6539db7732856d8caecf650d6a2099ad64a9477a239d18209769842b4c97a081d9d22de03e13a0d76aa8a4508f2f32ea8f309b36d11f37413b65d17be5c9a7fb9e3d825ca4c13c25818d83a5ca08f155dea573286c5391a37743609667c5e39a637007f11308f261511910a6589433cd7192512352c663930b6f9cc73cc05cf97f3fb8903c2c697d87edfc078c289d8a09d98708268e92782843d5959213334f1cc2bbe66fc050d29b8673770cf89e5690b3e21527c2c702b90a05815ff5dbb1674e48fa86926f8db3aff6d90b13747f69a6ceddde2c09627ba161de8c312f461df54941f1e35b5c0bee7a458a0e2b238223a355e602e246983e3f6a88d6883b19354b3ffb314fcce4e7905578031952e88bb26473464a72a797974f6f76ea0178f946fea388b0d494f3140221c8a6c9f9c697ff381f509fc56b5db6806386549d8d15072580cafa9fafdc9118c98516e7376a7311c2b25e97d4e36141bcd489212d3d10c00afc208579a79c1831dd4663337481ac08be9993a1ff882fb760066991c5c901323edba507ce6ce9123b7092e4c7c151ed5faafd62a3c45f41e1b68c8baaa896fd66bde4ace5ef16610a5b245ca66e6ed703275c0df2a06ad9353fb9a51fbc5f54c6994461450291924d3d8e3909cbef9448b133a750768b03e5f380b95dcf912dc2fd571c7a0fa7d8deb08700ede3941ce4b1949ac5010dc4862cf1d34fe9bc48c94101b1233714b634ff09f881fcb98c522f75ae06ce4ae3f789c07f69bc204c2743903f2b349dffea2a4b34eab45c7e1e03938e20edff298a2217e0567d10dff42bcc9832a62fb9b7893071b6f626b1ccb68c6d64191a0b5add095e25b7ca102c694f0461bff3bf82f0264e2d1da51229db638d569924c46d3b5b6955cf663f0dd76cda046114635eacab1a3644c3da785045a1bdd0962216a0397c69524af38f22c37c08c81e33f9c62ade72837b693a9c624caad98380f102f1b61757b975a4a628814058ed7f87a3e61c443b610f7702169777fbb050ab691aae3d0012bdde6b064c1fdac4a6fb3a9a6899bd02949e04a1bb73b6d15051e509584eb5bb567fbf3ea8b6e13ba2d43720c714fce762e3bb71ce775e4ade3d022aed260074b3642df54b99b1ad797a9f355a3277b6d59c1f4ce59ff588a62b19cd393641bdc7dcc0880ffc4ea43a60994b0f391327d3f31dbc599e959bbf3ac9ef6d45306ccaff4f7359bcee30df4293d133e7dff33e48526eef094bfff11fe4acca0b7795233cab7078cd246f2bd1ae08ccbd1ea4c97178adaff57aa395d76a8068f1ac37bbacc6b0e1fc37de5b45f0664966e7ce7868c3a4f6cd7ade7907a4eaa04ff177510d0d00126db9c9a3257905305ee932d1b23165b5f5998d0cdba03549378f90c37ca3f549b3e8194a42e490703cebaeb89ccc5c07b971b0427f75db19b4763ed8231e49d1ea629aedefcd68b453678d443ad9540ccfd2de2fc451b87597514c4047f9927687f11802470912d6e87ae1b1b1c812a3f1d7b7840d596954a398473f1567c30fe30c776d820559b4d720eed6fbbe1b9096e667c0a4a91920ccb5db75307a9eeb1e07d1ee9dabcc0d0bc00e2cbcfe0ba63dfcf8ad428692a118beb3c87263a2a94f52fa510faa721087fcc160457d71a349f8d0fc2809b42d7650e92675564819df74f53072d585b28aa8f3f8608e4120b413f217a8ae35bf6e527514e547e6af0f867c107e24401397339d6e6c1d014df4d9764a2e01f461abcd962fc97220d20eaed501e663fc98b7a8723ec702a263ced5f940aa529bcfc95a28d349194ae52b269b3c5750e4fb5364eea4a62d1a6de69c5e90bd5f97dcbbe1e60e4685a121d9832de3872e8e604b66cc99dd651ac6d1fac6e5f105c221e747969202e292e1ed53ff0e9a37a22474490f5e9eb47750ed5c8035ba61c5b52c5d9ef80ed297414fb5ac3cd3bce249cb1d63d4e48bde2b3d041ba9b3b72748f30a6f65469dba58f7aa77baa75af21cf8fe468ab1740d80a6c9fdf3834c0f18d21fa21b09f7709e16d3349eb9d2d354d2cc684d1bc8a5393099d04a275b413ab71745c0d322d40ccbc1534355020a303af5431c2e08af0a3a10d5026c15c2d3ed4859f82b1e43c8d115336827f20a59e50be1910a3da4c115a2020851a83a248573af0cdfa29bc3a2d5c190ae1129fab455999da9a35a74e06194c0136330496cd583590922251f34fe3f882289b4f65e89b6909340caa09289dff4e238f886b097f952c0ce84a4a6e70a21f9f4ade106c0858c270102332792e39e704614a190480c1b2a0b90d787d961a3689079aafd07c2dcde10ed6b3f20e10311c6524f277da548a0b09f945b10cf05ef8e6baa1dfc02199e16253109b2104e19fac7e20af483c2b293f31341b4faf69249658d61353e7d074499b30e0ba64b4b070588a99466bb7d8934ecae3ee353dc83308312ae181f37b24f8560b5407819a3e1356625f0b2c6c1980c2eea773cf798ea8238e018dcb3e09f80cb16cd991348de3635703631925e81a52b2b0a7da1e9139f7d1a9b4e4d16e401022f0601c64d501025595dd6a5be83af4bdc1c56cc495fba6c849bb1d489ee62edeea814b83a33e079e322b06b7a1f6336749a02e13c9bc0c0dd68a65cad66737908b0998ebdcae32601f377b659330e3d61c03962cccb87de41c7a07bc57caf03836ad0eb6440c62d68f2d841f5b4f39292bdd28941b052576fba6babc20b9b7b1989d028bf75724f9026ecfd935bd36bd205f2fb8be55ca8461c9953d577c05f97ae5394343726b455cc93fd36aeb6992fb7d68713437ec2a29f4335856f714697161c06fdab00b8032dcbcf86f1f083bffc9157fb22a4131b9d7dce79afa39f4eb05fe6acb5301538fa60ea04270ef42f070a21daeec197f32ea534a497344f3e337aed8079047c183121fc964149cbe871cb668b0c26b25f6f9ac3ea921d0364f407840b2e371a0101f0feade562596fb73bc94512dde9600ee7d201bb7a0b43d1b09f919af673cd318af370b5ddbce983d26bc4b10dfdaa72dcb5e58a8ef91c14135eddbb217d41b38df154656babaf85499f7ebdf2dfe412ff3e70bfb503edf871fffd63e24d8070e2ebd53fbe0abfbb22e051034bd84612ef2480ae5c5887d7d54bb79442f75301075302cdf2dcb136a03e4e73fec6afd840f79669ab270431b58bd146d9918dda0b29ea06c80ced22ef5bb733cd4cae6f8d5ae3703160803b8d39c2bdf37ce3c4b8c012cf1d58252ba33cf0801a10e595fea19ec18baa7502054550466c4f69d06a2368d78646aaef7d43677ca0efede9f259faa9a7936674883110c5a7ff11e2bf3802bb7d6153b509ebbdbde6fbdc596ceb9b3674233da301d18b3beaa71ee3d46c91618625b979e62ef6b199321f5b89ba27f01991d25d87c8a1cdac7d667d2ae74a30a918ec7d1c454516834668967ccac4f7b8e02dd966daa15c4bc01032fd83290f775a4d4343a39d0dcb3cc9cb801e1e03fc2d52c2097869c3bf685fd768942c8a709f52f6a7ba592cfe7126172c3547d8a54a2937170d69c87df131f952753879a266580198f03769ea074e292f1acb647d97c5c37e04128d5e500ffdaf9d0b89ff59845e1f5fdf92c0acc0bd7e17f6b9f910eed421453ffb41c9286fd95e45509ecba06747ee9086074e338ef8a59c5f92ebf2ad87b71b6c8365b7db7dc77a8c0ee2e07748fec4b7aaabbed7131c4506203545d171929f53054de3c2551e8421db16efabfd5b364df14c2bc8818e036949049c8b2d2bef465b50af84a02878f59c22a9829fd87d0db225c2f1898f556931f6a11984545d864fcf344b69d28e17f8aefc80825be64063c99c02b02299dc6ad4b92f0b9f34e1ee1d5eb6e6d7a56938358939bdc7cb7a8ba2a89bc1dd999d3a4636c6a12e70e35cd7a212923495a05aa390cc88b7586c5d8335fb8e362cd6d64a5efe0ffec89b70d34633f10d5bd3147f497b691ca35b44c430b9ab9265c725a13ad2f4e941523e165912c1216f0a608cb4481e9c0ed2e8f6b5cd0f33ce89008848597159233e6d816979b07f2940032233fed83d54e886940ea18b24f6071ea490a018966a87ca3a2a3ac70f9263cd6038f416abd1cba12488e3b289fd8b28e3dfaa1c4e02c5c4e20e3c2c4feb6e5bffbd27ff0fdff4e57fff55e731f00668ce1287364b6b7cc386c89dc2065305042fe0eac582803d5cdb53bcd8e19ced207811ef3db515743b686ebfddcfa4704ec5fe658c9d83b43a4f6a86b4cae91106c462bf00763c71fd8ec360ba8d99288fb9b280df031561c431cfb57f1544fcecb0c0f9bf87f65424357af9db1a4e060fc870bd392f99f1939884b4234a4ff5dce555fabb9f224524ccc043e7611fe67d79a624d248a599ea33cba943c88024ec89291c0233eb8c194165fa9ac7be3e904f177aae2220ba5f202aa04625df8e9955228c4951c3d6dbe7eb170321b29fd7e34526aa6398f5a14dc3766ccfc6b0cb7a9f9c27126bdcb5c3ae06815896326510c7c44cf247b1fd1d98cf49c44c60155a124a40a4d4afe835da90350e07fa547c1be468766cfa1ce65ee250057d347c4b73da947a90e1ea2a8b785e7aa1e49437d64bbe5f3299b5c7b54e884f84e54569847cc8eec70c496988e2c76a0729e30ec8fc5f977ea593fc7be23183eb21ca258a333d156539b31c0985ada7504c598037be5d654b1b89595aab379d4c641f12567cb88ebca9341cc0be2cd8a5933183213372029b92f020718cbc0f673eaef35ca77314662fa6ff4b7aee4cf6cc1a544fd6e8c028258bd0d2cf30ba0cd5d49ab36eabebac8ff3df1c95a7f01dee2832475f6b77cbb86db3190f49e6f57707b048969cde6f6bd0a5bf7cd08ef1cf99d19de4981bc90117a8ef1d72164ec491d9f74b3159801b347a83de578e7853d59cfb6ecdd8119892d4b7b9cc6278f99f8ac66acf11e0a96dd18d8a0c1f560a70d853b0a92be85703ff75e65eb121255d194665b5459ecc00775ba3e35718922e97231a46c6033ef242c8812b9a054c176de755e3c59fbdda6679228e0606ca8623986e22d1bfa57937ee374a3f86e02bff66b4ac88c525739446186ee0a495e75365dea5710d73086c22b9d04348b25cc2780f00276c96173def3122f6209ee103c723125f1b3e5380fe6a32f4ad354fb4eeaf4398616f3d6b431c2af67405f8a02e7f952c7e98757754d0e346f403ce54b9633e05a7824e786c8cb4638f608b165b70f9673cd24962675e49b050d6324556c44b33dea9e04736c581d2393004cc073093ef3551e86c43a942781921216cc4d712df04060e64ff10ea7a167533000139ecc21d559a12ab862a3a1f060194da9947c82221fb55e08ca3858e451dc0d024b4d9eb05449c5272a8f82228cfb3b116b88f5721ad3c69eed279ca87e04af9571dd67e6ae8dd7b08f0d38b731266ab3bb2f1c1a27c11947d9b319b957126a049dd352eb9c3ae0a09c7bff788ea40a082d9a9d625744fe17787991849ac3e621e8abeac22419fb8a4643a7031bbf6ad937016b85eb71600a29c7839544a8f7edd803cc25cc8964d1526f6b27e9aa3942b7644d4c3d9b7c0de4f54e8c490492d36ece12c42e1c19480c0d95585ebe49f36c775a0f6043b2bdb49929a7da701572f5a5de4935e5aaa497a2dc2036c3255dc95825a343dec5ceb79631648f259567605ba7277e7dd2fa80586e56714afe39416202cffc6d9c054e7b25bcf42438d50bce7dc748b7c2d38c74a741a9606039f0d497d034a62d53b53bf36f1a65711c0bf0d6f8cec15b2ed0a505906a823510ffc7f85bf1d1ba7257711816e82d9d064e2af2898b65e66fadeba5a6782b621dc8721a385f92d55445f82a6f9231c2b8613344987a4aad81a865c113d842d176cf3c9690bd3ae8d4e1875b8c1917b29ef2bf0ef78d2a3ead79d7094ad037371f55f11d54a9fcc91a95800de1a1998217d960a8ad85c613ebb20e1458cf242c62687ee5ca6d23b60564b3d3f44fdecaa6207e596bfc27d2d73329bb152450ae2c0a8cf6192bae3913d3ead92211df09e4622d12bd0c67326888dcdc3d194360031835b93a5e8ac4c0c6b3fff27e26eace1e328a438c9204d5aa027e80a24c608176e830afcfe31008171acec9d371f2b22e5751d76c26cc062d0b6e2dbb348f01af1dc1f1b39a2373ea52aa0a24b5da500afe11f0e793dae1fcf11f98e2c07cba8a9b7a0a373581155af892609b8829d5844bf66f3e9f21999e59e158b6071779a229e28cdf738c445e10685f61fee19e3ae72e9871ef5368360128df3e56343f9f46ac39c6c33d1e72dee95b26e1685253c950244f109ab30f5b74498879a2c345040cffc847e9c6b4a5203370dc862983bd2dae5e685e0872b7d956f57c69295ae008ca58f6ca34d04552b91a2baae6a334df7204c318aa4fb564c726ccaf3470bd99778bef19b7052484db1150fd66abbc8e36ccc935148a9f959c8557caeb0a2896a0047f626e2334b7a6c17b9272474b06dc3adfd4297c024e4447849cff75855308acf7af684b6a48e0dc440a1d76dd9cc08ad6e7b4005d5bcb829b770d3ce622b875223d5520c8ef86f1343901d53ca9512259c56b9e6ed9b3567d004cbcc531256f23f603d97e117766cad5125ab284dfaf2e6f327d632e85385eb20e114b3a27f1a78b529bb9ca3e8b7bb5f63395f402b5e463e4bf997d734efb13f67d8f284ec4241caeb0f84c1082671b4eab9cf2b35af66cbdb8d3cb95ab18d2c62a77ae550c3196550c6cc190cde28eca3c53dd7e30b8a8b631fba17207ecc44979f237ca856b3805f955b58a00acc3144605cef3581a75af2bed889ac15dbf5d625ac2ee13e22b169a2784fb955167709dd33b1c769a168f37ccae1576a8658928dc02fe6f992d40eefba50a3b62c5ce782fe235841c00057fab04dd5601232db9910634bc40c50f2b1326b42c285a2d35347d1547e0e7501ddc1f601804de97cd8104b78046b3ea32185dc3b4ff485d94c9bda1f965d6195619953c0da2f38adaff445c539543cb887575f3a5522d26b81833552eb08d0c7023fabaaade44f6084c71ef0627164ef9a05992cd6383fba7cf2507c945fd276ccaacfe5bf25eceab8e881933a9a8d728c624ff962d25afe1be3065ed73f98be37f672fa4cbc1c254aa8881d6a39a57ec0a0690aaed6a0969a53f81e8998c99e3ccecbebb577940df4f806f84ad5f3eb82d51f8197ab9ae9217c5a747faee49b7be2d31a75f5d334a430e5d1e3c249d79d9bae3f76464d22b65a79dfdcdd89ec175fe97c6d6bf3cb6b8a22c63b50dabaaabe058e6d8c778e45da47a73fdf2140435ea5e68d097a20eb1bbe35fec2a5bc3dca0d447fcfc932883b675e41b66961130f39530a3e8ebab913aa30bc631c993bbb5c7547753a7d891743da31b770bcc1bb830aeb007cdb7827165ab9058af58bb8c9424cf47c4f55844d6d8bcba3e3a53fb0dc6b6614e094d0a5570a4fb1c47ba41a0450db9f15bb404dda1a052c125c20f6fa95d2bf238bc62bcf6724835553517670c67d043b1367b4392a014eb646db6f69ff8d7b4d93ee9878313a57440f6a9bfd271135b0e3b68a9a46011dfe6f067249a18a3c0cf513d93ef2b4632afd34545c82364f4023e522257e700aa15df3c5e146f2ea97c2b70a42833bcad3080f18651b6106926cb3dc28f5df3fdba0231e05a08018a6d6683698998f35aec99c3d833c906f5ab4e9823def5e1123963012aab8851bee0e93e5b94776e998726bc2f836fd84717048ed63d22867e43bb9d633ad898bcbda60d9d6f0e0c5302c3790e0c758cf8fccc01763e0a1448fed1cd380fb3e2abc4e920a514e9f437eadc93dd20e36a41b3990d01f8e482c771df0a1747d58c0abfa88001abba2bc1377803c94c1650990300049ba1490103b5df30c80fa22a69903feb62210b3df6cedeb1db579569ffc5fe411055bb276516a2bf5f54f23206fa13d5e6c9a41f8bafa69d78661433b5f87fd4fddb76dac8f33e0e5f10acc57e77d8123226c4218eed719c33c7718410428024045cfdbbbaeaa9ee16c649663e33bff7fb3f8983d4ea7d57d7f6a9de854123af9c52cd3820c169cfd771ca32593c65ed6f4538aeee688b1b92f17dbee21a2e406b5b2188354d02d7daad896b3ef59ed5b7ab0e33ee0796852f258313e8d209fb48c6e847c282d9fadd7e046f60166f15251aef8048f6917c56b02c931e2bee0fcc6e9c8352e69c8a09595f4e1fdc7677624c4454f4eec165861c644a1a02d4fc298f60b372d0924240a32df017390e97fa8f804c48b2b3132491044e40ff2ca5461f8cd499694bf2db71845c256d4653f6070707c1150f9e21120f6412d1e08a3d0396dd3b31db1194dd7f3389c5e92c88d1fc4084f1f008eb6764b8584174556a4fd219acbe7da86f64c5a1f34b06dc81773260ac07bc5d0401468c714e7a6674003e0e1200dee4502d085e340c99d9a73f4a6a5132255d81b101fee01adb60db96f0332acb82c8813f0112a58457cace1905d68e7e96d6c25a7dfac9d806ea9ca7aa9862003f9ced06d8bc12f9691d335cc7f1ed0276a884e0a7807d4838f2fff0a9b2b9e6ee60ceb2694c65af2c106c8d10f3639370a41ef548be8edccc27f52715303713ad02696efa87cdc952dfb74ab7caf9c53418bb36b4b2e088de26c28870550c716d0f1aceeedff6adbb9cc55043eabb2d72732d6363e58146ac04a1439a1cce7767fc8569e1e10057f65d853a42bbdffdaa64b1ec8a5ba2cdcaf6dc1d4024042acbfa0920f67e038c2cb2e98e911b17bd455ce5ea8ded7d892b59aee6fd8d453e6c3399eb62a4cb8c6f6b1846be39974a2c89fe209ac0f91e29302f62108a8bd50a5ed07b56276e13e4d662a5409e03f3e40ec972c96dcf35b86690d9063dc66be57095071b4c1983c15c2ec6d6ead8008fcaddefa3fb263781529d1dcf7096f8f527b19077efac37f95ae211c56afe40800754fb00176f1f94b3103477a475587b86973480ac780689f0c1a8603c1b10d43c49c0314ebac33d493e9195641beef9041b5b9fab36aec453e1943f7ee5675f7926d9f999b71e35aedefcd7fa1d134a9a483fa2701d3cab72c55c520bfd943eb1356850f9e5f6d79ca93660f1563fcfbc86248d42c83d1c02e1535ce6dd7ca5ef3acc236d02901f996ec667cc905b066a437c3de2370542adf7bdb155c93b201a29fceff2db4abd3c085d456f31ab4208bf49bc1b981cd14a451bb7507b3153ed1374d83baffa3981b2c04cb1ef22d1a56ef128fc359c0e4f134b47965f6cdb4aae477116a926d3f105950249df965f6c35ddaf8e759d79cfd1765c6137bb5f893d244b4deca91533babbf3beb8982b95dc1943780ec21f57525b975075b4be3a98b37d0e3aa3ac8058a2117dfe4565c40fc61e9b89952213760c54e72d13da13a656f0459ac4aadcb816e0fc7f8093145f86e92f210c7e09148914680698f906994d884b40375ace06992aa4bc4a916884778dc4f6714612418d30aecb9cb25f30506f9c14e6f40f3c02064c67da8958caf8b21767aa1c9afa1e3b1640a75d6cb81f435e85d1437daa6ae0c06106da614f99a4399c708b4e09f8f70ed28b4ed8144bcd8d65e9a7ea08b8f223eb843a2e289445972265093c2e177b40a12317f81a9b38a1bf8285c54af70dee2f87292b9e2c4d0dd822f8c34e1ea070a0155a94884c7ae00fcfa8ed10fcdd0019875acfd639599dd7f9c38666c6f08dddc0ef501c6f6b0e53f826798e090e3f453e5f3424d9053052899c27e00c4bce0e1a333f026f392834f576b895a16058bab6990487fbaacddf7598f96eb8181b12ab7c11cf029cf2190286edbc7ba305e4387df1467bb4ffbde1e2c44f3bf0659a8bd8422fdde998f9a750513c6ed9c753a9495037567d1e2e46c6d4d3f82e837eed5c9ffb040a5e9747f35501c608b801e583e3ecdffbc81ed2fc07b4ec5038196699544303c755b993057e7bc8b47c80bcb6b7fc6602c66beab057f5a9dafca58020935e0909536ae3fc7fc8aa49b62e36b9edc3114804623a9f02b283c0b311ab9193b6a051de10245cadbc3184fd7010f3cb135c1469c69c46d79cd2f8c4905f4dfe133b05565c20ff4ec6751152d92fcc554021d38d93a35abfaa39b1a8b49e38c03bfcdd7b9c95f78eb555cd8a410fd8d4e595102ac8a2e143bd921d165e00a76f9642ed9dacbbc7eff679fe62d3b516c8d07aa346871b3aade1f14612fb4e2a3e60f8c2cde9daf86e03400fb40031c2ffbb2ba6220df6d838e0c895c45edc61ea3e814039332873d580359ae6067e00853e316390941a0a70e0935219115cf0a9404fdff7c6ae49ffb692d2cda20e094306255199b80e9d9205e9d9201b2a7329ce50fa162a262b0e38f9c0662a8223c211b6b173906d443711dfbf86089e2470a54880b20b8735f8f9c38ec3cf1227724aa22f600ce9b0888c888fb8e757998ec0b1058d9ac626313faf753013893d781780f70c03400c2610d2fbc0df55d201974dab4153325af38cc46b633c0ce8cbc020f8da54488dbcda105b66a63c8d52a3401549ee8205509f77c88802dd9398299aebc06ea20d18f1b46699b9330791c5ce5907616d80990510b94852801d8d6a21857f4e13c8d46799a078df291ba4e0baa110e7c9040cf83a3144f7597daa1e84a776b08d0e1000da6e60c0818f65f64067e7e41499aa27d5e4fbe2c8fe52eb99d53dc4fc46201678b90e7fd9f32b48f1ddccb17f328fc8b575afea815afea80679f433d72117bb20c15ffd7b2e4e008eef2b390ce0322a60b07700d6612e935af257be36a4c0a3d342ce673ce3227c812b35402cd6132363d2a8661c8455e002283ca5fafe5160f11e54f132f07dce2e421310219aa58fe938fd65f5dcf0bd450a23d62e351d262bb70659c7f557538a161b929bf7f67d0f3ee96d6cfc5d02877e5186c48120376a965c1e1f885d3d4d5573af85c2d30a4c46c35d1060dc8e608cbda5cbb9483dabd2dba77c43338d8741249cc8b362e5a9e689bdec17e0afd38e6f3dea0b66e82a7ed9b911147cd55c8fed0f27a08d8b3408c852854c8006f0edea763cc31255f03b9931758cfb3c81a0dfc3bd67b7586fcf565ec2f11afeac6c2da53210408c1766c7c55dfdc98c0b228c642f18668e30bff97c811857629a2ea40d00d9dca6701d87c252f0d15236646dd844957e3e1309915f067e1bf07cefb2df5b03730c38d4043b40e251125c13f25bb4e52ed0fac440a6830c1f2b4a3c0e94f2d588260eaac92189a7a707f8e08ddc085928148f100c0f2bc709728f643c73f541754120fb37ac3f601e28fc24a744af5e3e641ba894954b38ebfbec3139370fc307d584b5ce988eade863e10328ddd03d6f9f1a1e772366474809d2494c74d44c9e358def04258b2c1c567281009418d1cc886585776db5ae621598cdacef2fe48b97eaf4de28d900b34a58ffb9a2f4400f42682029489c4a6a1deacf7198cfa139fe39da317474b295565090baee3dd8aa1288012b7a63c32439e6208c3b7626e40c53f7b678e8c490db323335b9afdf19e5400d04287eb01221b3779b073bde94f9adee9585f01b61059865c118122e37ba27167ec814b9774f092e2874290734e43667143f200481580ceeebcf9a1d41a122477037d7d3b927b66d8fb765ce7b0b74bf754fb2da81de26d02bd570565a1f9d7d055f908e63c88c622c72038c398c7c0791f6c12ab66a8ebe268a0d5fd1f7245766e7172d4d1dd62b6355cb291c4b2ef20fa6172344df80ab5ab36a6998fe2f7d9c5084e4c4851eba534d4fa5c8fad6fb4dbf6be877f3c7fbfd5e55faddfbd7fa3d02c1efae8db3f8700e2102477c003a2c00c42e1ec3a9ef68f570a5d03fca92e32a3f65a47ae1ea998238de914d984f398a11f37030a65b99838c059f3d7a67aa23473170c20d0b4230a9223f706c5b21283258a9d17f3bd4a5c5da8753c81191332d283ee3358c04993b07be0cdf9da6e197cbe39fd8c884fd7db5593d3525343fbf9d1bfaaff1b1800834d83a762968f566968dc8a08f68d8b52da0af163266f8bd79f5633ba7b48135d18f20b48588b8178f38569d39fe0c4778e160d96356646ea7965ea780834a0346664e1d861781ee906626ecf78bb3d0f4606a5dde5c6e1a18cd2039ccdffca23bc4907fa2543753fb59cc968d03804a166b661c4b785e2c938014e211ae853f1f857eb2fa744e9a4a4f35b1e157ef0c6bfdc3a548bf1dd69c877510fd7b62d18235a9a27df7af0ce6d07e43ae246b1afa3a1a387cddfefb6f8f6c45cab64cb1699e30d0bad889ed3658539eb6f4c689f6e2e29bfced0dd80e649bdf7262c2996044db2c3c4e06c4097f12a814ad6ec147f41c03d4095e195d57372b39f77e3d5e1820c5e83180c3b149e1a77909d82cd0a92d50f08ac80d62593a4a0a9b522f7070e4354dba51fe3c5fb0064bdf3c33e57f6ef5f50d14c2e4d186a77c7ef05d05188d5cfc1632939c6fa2d2ef702bc1b4e417f6f09c23f5271611dc259dc0d9addfe8f38d80befd1f1f70dc48b55f31149950bbf71bbfc035dce8a32949330f7f7c3445a1f7e3e2e1a3741b7fd61d971998a9442c8da015a7dcd96abcc7e404999b4e55eeb74fb2096b10d91a23670335a53e3a37bc0ae9dc8e67b941481e3adf649da07efc28c6df8bf9d6a39ea37fe23821c9d8d9af191f355a7c2e8f19ef08f73b72aefdc3c8bb3c541ca32112dbf3ec04bc7b39ab8a6f928434c197b5ba4e376b6b87463452ae46e2bc17c20874c64093999a00bfdecdffc67183c668dae9a912cabdc13ba728022837dc0cca1fb26be67afe4a5eb6d1bf7a78421cecb76d4edf39330556b0f12f9e995ff7e2eca878aa8b53b2e0ebf6a8af861a80cdb9cbcb4f973b37c29d564deae01b08c8869bf2c82d54bda304b01d1b478634612475ba3c9bacca39c22f7081912670e1dbb01ab2f1a33e53b1dcaa7236d2e0dcf824ce448bdce109f95506f9915312d2b12a05140846df1ddcccbb6970aeebeed1a3147bbe8f93d1b9b6d3d771fd0677f05d384f882c7605c92b28ef199b078ae803b2c5edc7a47d4dbfdbf3d92a9c0b2e653ab261450999e2276ce791e6e9fd5f7ccfed5902df1763aae98588429cf3d6811a7db4611fb07cc5bc60fc4a8b935ed31f930c9152f7145cdf02d720e92eba3fb9e760005a5bf34ea9e8c80f379b40d0b44c44770c4f9935a81d6620def392b581e4a6fbdd4bc656f5b56763a565916ead2966c1385a253bb1941fea33b5f0d412997d22e67f8aebfa4c655f5c4a86fb88d71451261fac74e357bdc171e49b5f6805e1fe44bc7aa042f894b7e0e9007eb13e5305dc8f23ec7240581493fa54d33f84b82e7133eaa7435c7c4b5851e3a5b19e9a7d9e830115e86288283576ed0184730de6dbdc3a1e97b8734218934fe0f97f5537ccf0fdef5477ebf9bdbadb383111ea5e7ff867b33b399b5d8aeb9b099844a086f040399f6b9ffdc66e542679df36501139946f89767219f8bd3dc946c023979e6f0e1d5b83548d00e25743ce45603dcaf52f689879df17171430b49180259fa5d49c101afad4712942bb4bdc8b43c45f4b3adf36138236eed61c7438de9ae1cc54a0f68fec2414620676bf5b8a77f6ef48eff53e68f1916d17b53fd88e5c320dd97202b3dfa5ed08112315df86dff5d3ee0b23acd9cd3155fe4cf3661feba1a722e446c83005830b9ba01f7a562fcbc9f45d164b34e7c9005148037d33428676422bc591a897d86acd4b836aea4463faf3f560fcf6fbc6d59bcf26ae0f93ff59d99d6e22212790967a681509c4107751bfd354e6c4f611f0da8f72ab00b3521c776a3b7d73f57153027e40843009474f16810dd15be31695a0ad95a08bdf39583292109bd1f551cd167fc5c07fc5e62f385308a2400223df7e048cea3b04a491cd09500dfb6de0b45331a9880f107b6c5fc20e80fde600b3ea563a20b1308fea4edfb35fdc754cab6ee06216fb66c2a06449d8302918afb7346f03fda794d8776cce86b3392577f900d557e2f636ec64d09170713a9090a70cde81b18249e4e49e973263f1187c537c4df758efc93994927ebafda7c00e33158e55895c73733b0841b317f4fe387f6f1062a6646af7cf8692f05006bf184a0fd1c243a8a25b4c8825d79a1e4929de2bc87f2fe18007ebc4648610aec7269e51fe3d6d382eb589bfbe9b3537301951ceff7bfa20ff97ddba01e0fddbdd0ae784366254f2d8e9d20a371aa74cf2d51ac722a5bf46b112185b5a071ef6b5ae0459621c92c3fc6c7f336f9d7c05737ce7a426dabb1d2963f0b6f81bd3df99b0d82473e0fe4ce191b4e355dd7eb554ef9a61e1504712f361bde695bda3833635ba7194aac5481048bcd4cf6ad738ec10ab8fea22fc5efcb49f1c30b6931d53a0da32a6af645f5f832ec5b1e31b8ca8361636870c3acbc517ce28746db7f5404f21fb4ff462e01ddd5de820330f7838e872d459090628e694c3b7662fe86a86b89eab6b4c54c7444e6e033b7783cadcf9aac6d3f6d999bc1943f449cdad6d40d6ba3636d8661770d0fc0e9740cc277a889a6de416b3f083ae0949c911add26d3ab69604dfad51cfa54582693f50116f99c0390f0a3b380c54b965ebf6771b563611da30066771a15a5fc0413f8813cb07dc9dbaef7aeafa38336f3ed64bc0b486367c67a2baa03c7d16c3815948231b20a167c980add99a1bc9e1a090ad39e0fd03c5a3b3671a0b766ba6a643b05b2913be159431f19a8dabbc699861ec3f32cc28acd994ef6dc49137c3915f7f52c94445dcc4a43e577b9fd9849f66d4a48297c4b83f693e1d8c3e8ece640a71edac087f19eb4fc72872a31a9ec3832c3c675328417e4cb0b73a3feb73cdc8924b4a060183e973fef9ed9dd99a39223304cdd6c1d15fb4665a08f428566d22ce15679518823ff4dfafad14202fb39cfcc18ca48f3b47c12dce1cdd0dae40f64a469639cedc293f1227c7b35ec116f8830ace517354010b3127790f7f5af84002143ce961e7ee822ae4b4095d1386bec4e57b283dca7de4309f9d21afd2d2c9302bfe252dbc5bddd82e824dbfcc2111dc350487027dd66d6a066f8fca76c86e87e4ee7dbe99f2bec3b20db145b8bb120206c365c6996a7a2fec46ff520f8cba15e28064afc8cea67c0139cc4cb975c21a48daa0dfe4a1983b396c3706a6fbc6244e98c3345e7d8fa90197e996ed2e7e5576722937c3dffa6c72967cc1fd78dd3b432a9faa9e6ff676c67baaf7529f90a595fc9cd8e3d255e8ae11d81289f976ea00839e756193052e027bbb6f8249d93f9ee8e5d111b01a501132fea95227381f37590e1a3e5e2eaa976b3718dbe92a600a637fcd787c165657510e88495b10971b5597e26d16101fb281bfa4780e03e942aa4af07a0d94ccc5a585d2852da01d54e9e7eebcc9537daeb6beea83ac352e9135d7e3ccff855cf0c142a28e26153920129f4b50a05a6ee580c457252f39b27bfda3c613a7f146b5f1188de7171a3f7a9c6047a9c3cc363e40387de86685dd7ea8d49aa256b1b3a4a4c78cbf4345834493106b0dd8f1fc2c9fe604bfe7f87d63946135568534587b4cb09d474f457c292f1cfd63af8214eab43131c09e5b4f6cb02594d1e616dd77f4954ffafe6056749c9d7c209bb1ff91ad29127b0c5d70cb8dec7db60c46048f70894cc4ab474d44110eb6e7eba5b8abdfaac45347b8f183af87465fb792376f41055c1c85f39e644e280951110ab208dbf8769b42a728810ecfc6bad087c83e80a3e00f8ea782b2e9a45995be78c4390987dfed498242dc545b1c4a6125e632fde7fa448f5a9c117072e02ba5cbac06e8f9eeef8cba4f8ef251f2055a5a64011dec1ceb875b4735aa2b82e0b60599cbddad142119f0900fc80810a1382e14673c82987f4c3c6a9e9f9ea0d51a3e700836103018184472e01e7fdad91677382700857a39fb1bbdac71bf1afc27e463b8e03f4d7e0837fbad7e681029110a3892092b3c632cde02829951a3e50b77f79c7fe15e8c3766bfc5344bb2a51ab0bbad9d919fc58b5b7f02da991267f7841abbd277648a34eb6ab7b8a04007a4fba2dba8e31e37c93fad37d122c7e6d9ff6ae3a5d0476f90bc2f26e546d9c7b77dcc63e36c1e277fb087130af60a2539a3a42be98f2f6fe14b556c01aa65b7b628decba5f593254e82ce7a72aeb92d11027c42743d221225da26b471b2a3b54796378e9dcd4e63e6c10753d30c050f1e21994da17f9cb22bba5d028807234db5763d4ce3e9ef9cfd82285e3184856a7bedd42ec034ba446ff045ac907f63814baa7d38fc523d288bacbac0d337f1bebfebf691768ee86425f79c71a9fe1b1ba7696a9ab221d28ebf09e18b221f6b18c3e057e37f7b2b3c12ca27ec143f4dcb33758cefb02d3350085efcce0c9735c2a5ffde652de246c157fd3a0b5cef15bb5d276fae1cf1f1466f16f81be1525d0a743db44027fa8b9ab688c6de01ea877f730a8a06bcd2979b73deb6c85923b317e8cb19acbec4a781cf5ab18436a12002d4ee19449300e8967317e8a1ac3dd2307cf0f5d2a3b99cd30d3cf6446ce31853c886721744ac5c803d622780ad7c19e0e9e8c00eac23cd6eb531f5820fd55a566cfc36b4d10559a76cbf88535beee130b6e71db6140f7f2d34247b76aa59ef61e40b2413b412554009e257bd722ade0bd959dfb6989e65f636f3c10df6a6fbfefc773d307eff31364c9ebd716d6862cfb41f9c7e8999666f041c99c012d66901a197e089f33ca693f7822952cc15cf6ae95c9515fc06c9489f082e3ef11b19877a18a7e88cb55afc5b8c4be0328e6d5f141aa657a9adcda4829c536426d19798f7f3b6301813120506fc2f46fc56aa657105ac731fe67889323db78c5229e8cc06514b70aee0236a0f9996cdc1a69e7d8fb5d8d0fc09871001cb61d977a6782ba9f800f32480a62d22fc19f8b336bb1e757eb8ac85918bab89503231d370d7b60b274b710307b6153a30035b18a3770df6bb14e37407d0517dcc86e4c04688b424980ef5399ab2378b041b53d6699f71d3e5fa0650528b930644b0589fa589b6e9aa6f54eaab26a6cc75af3c1fc379f762dcb6abaeede04c3334c5f1ad6ba45b197d0c73e98041fabefcb6e6808dfa337d7cfb3cdcd33fadffedc49ada534f0d513b13cedeade32106e726401c542c78928fba8ddace916e98153ac37809dea4a98e6021fe75de6900c7fcbdd4d1a6ca999a9c056bbb11e2171240fb6a8dd8c966e9ae8caf52308e8e094f52c7489af5662e8169556ad680c64a920e737a2bd503a176b18ca62a50235671224f9260538ac6218466f8b7f094fa52ae864fbb67612ae63706b5c93cd5c55ede39d044acf4aae41a5afd259e55015025f5d96b80b96ae7c848036f86e695de69003d00031b0fab084183cf8e91fed90a5743593878c6d580e683e8f24a4cfa68039c0c361620ba826a1b8af782e0a2fcac7efe0c9421ba34104a7c0e62d4dd61925834826fb9a35812e4d38a6b0a8d6284e94cac84d1fe416a9a0e3b419658d09dd1ac4cd5c4441a4e4c75b3042a18427fe87a1f4bc09dfe97dda8a883a062fc001f25dbc1235f5584001588aaff839c02eac85405b32385e8a6de4780609db84feb2b2d87e0465be1a610903266e5f94a5ff29f268fbbc57f9a6c5d6dbd3a6c1e50000f5fffac0a3e675c4f4fff29457d0235ecead3afc9ef84f85fba557ebe7949aeab48a832fa733ade9dbe57210acd54e1495618376a66019956207ec8dd78635c42618b1a02a7cae07bd9f4f32e68a4240a2e587d0cfc5f5663fdb45e3ff0dcbf80dd45d7e9236dc101627b0d7204b999ed1892cb807eb072bec9f64ba49819212dbbee1a793382b39118f37d2951a2aea59bffcd3ac84f6f203756124e5c71cf954c525b28fdc51f2bd9d85246eb4ee918fae2dd00f12b7b7a7f119e598ac61aec970fca89fc7573ca36e1f7d6084d0566c6c54538de3a942f0363e890b599da2e1f423f5922ade2c95435535b6fc1285535e84dc422d1711cdfdae7da1349ba2fc96386dfdce561e27ef2aa617430a92f90ef2274925deb72cda83a5069024104dedb916e917e7adfb5d380cb2246087026806f4c7c3639e4ee2dc2a496fc7c74579faa10b0a63d446ca4b17f9115e6a3c501f5024aaaa9d35485736c8053c5d39e6acd012156802738b41ce7c8b2c5b7d566c4b99dd6ac5f113cbb634b74c8b726de116e0c1b87cf6f0a27805350b225a0775f7f353160220b70defdca457e98c85736e081e557093e2d186fb7d366b968581ab928869aa0db8594fedb918b05075a4a192a638a608be8e9083d4dd64ac9acf86fd69b7aea887ac5fff755959f40f59003ea5f6d50d2c0a3d5c3ff547913bb427354e1c27303394eff4aafef30499f2b33f16a3479cc671c8672faa0049a5bb7a405ded9ad4521c4b664e07884a6a3319b4447faf7a92d187cf7b6bb098861afcf0c06019c1fdb2f0429e89b9cfe8df58b32118f15ed4632614e525028266ab87e51498ff15818e5a857fef8f5d7c7d47cdd2e7fa8e380bfde6dc7807572ca6a1e756ab5f853830eb1b8b74b74ee9b62b1649054c6fa8782879e287fcea027c4d27ca6d225340e872cb069278ff8f6440e16434f6df7c19bcd27b7d391b439124e01bfc8a2ed10e20172fd026e0be475b31c577cc47b671237ac8de2512fd2474a5249c07ede12850ddbfc120dc1b942f47229c4d16e81989b4fccf7747934bd4f32db42270f880eeb8eabab39c4d56610dddbceb14804a39d5dfb81d3676e56e8fa8a4c536d89bc1d00144022e9f886862fd0decdf8582c5daf2166d8362f15f9627fcf06e2045e903b67b788d8bd976ab852e798a499ff6ea5a2784c51f3a059e53a930f964b84e4dbe34b12905c09946f3dbef2f70868207b73c0b205368e04343060a07c77da07cc704a6eda8547ce4847c926fdc1d1ddb182427eb5068cf29994c1a52e58ddc64cf89464cfc7ef80abb11c5b2b1b13bb301993649cb393410ff1bc4742f33c52629383a746178e0205849e65551cb03c5d036cde4e02bb9078808b05045baa0f3950870e038656ea8b1eed51ea5d303e42a3189b10a807938b8095351b048419ed82844d89b8ccb3c61164cf02b8b5b90cc5b2049260b46746e43c9e6bae7c7690333e6473be8bfa5055a0cd0ce02daca3e31e81553ef7f81a82f8218688e19801fa59b295f9a7dee25315d13a67a239dfeaef63d003786403c824277c9fa6a7126cc5013f1fc9f32e9e8f6036a6e712f924feee8f552df504dad689c31175790d16a40e189c9e2a17079dcbd0d54a54e1f0160465dc3e3da968c5d7d7922ce747496e083b7ae7637da687ddfd2863048d131feb08e0b77726efc65c1e1c61523f099e71dba14ee90d983cd3c1b17d30a3fc521ff700584ef8acd56f751b5b4cb32365167f50d7017545dfe4bb0cdd2bb94257add9fc830a7b825f14197796c8536dcc935359ff7795c589f7b13e578dc8530b1828234a48ba5a7c824dec70164372ee16f837834680b566e2d145a8892e878c3cab76f8c90036857fd1515c202d4b31a6b39816a0723fc9607d80e1838e8fcf9e174a357fd2c96ef1aff64fa27e88522b5e186489efa4f285ac59c0476c2e3cea750b17f4f1857e9e90127ba9a9f841cb508678e919b3499eacf0c8b7d24f01e817e905f9196f6d90a82e9e841f4da073fb3b816377f8d025bc3efb7b5e9f96310af19477d987940ef358ff0a8cd4d4595d284ae77e0a1c39ea15219c008c0645463c5aebc62a21207f84b93331c06fd6be3b5716081d5075f4eac6fe772711f750d6c3114eb4cd674077e24988b0952d929434b1ab5b0b8b5937135c3c90e635398d0ff37b13399d2eb5a8d7c930c71dc9516d54e6027557d1ebff1adda3e8f96fc7469cfffbf8edbc6500a1c76d0604af37359a4719e8a9eb5b205ecdfc0d77763c9d93de8c9bedbdb34dd7a2f597bd7a8e91e42ed179f6bc40f630867bf86eb7755c01556294d8f3fc7946abf026899eee3e6f3a619787cc8785f0025ab47c7b6322ce4bd29b8fccac669b7b936667bbd46bdec97183e62f968119349d7ddc6f8ecfd74ebf9f53fe30a682a7697d66c03b27a6089d2674227222d58bdb339a2927ffc124d573fca9e78e109a994850651dad3e2aca5a3670fc2dd832e122e91a77dc2989189737560ae78f3d523f7db7a8d2e2491baf02bb4ca355603dd4ab52da7be5e6aa9df9660db2a5e6697a8209346a1bb964ddff56611fa6cc55bfe5c099b16886ce6d662998cbcb5322afb0ff4d157be62f7a70b8c3394b9b7a3f74b73e876b28157da68b63c912fff03b1d921193db1db96eecf7d7dc4944ac2c1c13df1acd8aa34da770dcd4fae22d1e8a2e189a39a86a93902c2afb6b7584a74749f4bdd3bc7155a3ebbd451522e9c1b3eee2926a328bab21a235eca1f5c8230f5849e6082f61d13f8487b16cbfb149e05eac993fee23a27390b23318c7d794cd1b435ab4fcf2c8c8e1b6bb9b7fd0dd3017a5d13fefee10dd1d55badb3ed8ee365fe8458b2fb45d40bf102e3b04c7008ea6f683aedd063b0884aff46bc1e691e4991596704a78e60f37fc73fbccd2fb8e7f3689fcb4225c264b04a69f984e70d4b089cd0dfee45a15617ea62251e451568571b5524551c864c0b9b355890177b77262ddf85540d16cf5a92aa27b3514ee83589c3c44f757ff5ef76f2add070d3163e05ca3577f6b3c3397e9f8c87cd4bd0ac11f76975efd55ed4730c3ae05de65e41a50c11f00faae093c9c3536e91b50be17558ceed4910d687d9aaac540c0edff8d061e5538300dac692b35bad200144b27becab395e7b2fbc4a725de9faf88661f5288ece2583b81a8eaf28f4e734e2a65eb0fb0a33a760b440da3d9df77d2453e7ed597f80f0315538386ad5163811ba801331790c50e2b2514bf0932ce23b145f6603a472a128826a36a8d13d3ff09a92f02476632add49021a991b05b802354a911870af6595b90af9c886be2e3d2f00399614875da7e33a10112e591af6bb77ba78e0090d8110bb7ef0203b40f94c8a5634ee99d614d4062a9313c49a30a4f6236d84c65ddb96cb01a31beabd35c3ca51d101471f07a312b313907bd60a3c869ae6a5c5d186b3adc3aa0bac3dfae6ef1a13e55cdc35c1363baa963affeac96e55cdc884d85014b6e8e7187bc4296e3b794a2f7d9b154bfd370f9a2798872ae4eecac913d11539033c311f3b8f63887a7f6f8ef806f8af3607daa8efb3b195ac2432b50670b7b834374605f6640636889a8f6f959ed63fae05743876feb30bf93b1a514e0bc5fde88e3beeb440755b7dcd2db5c1f9f627923d861dd05478cf5b0dbfa0b8ff08c07f8bd8d354d6c651856fee32c7560effb3b82d42fb8f1d86cdd5f094f97785cdfa4bb8ae3e00d876db8f015f126517667f8868c86d119415dbfe978178da47dbef2077cd65c33e94cb54713f1232b68ff2c04cf68f747b5596f8e990a87a6ae9815122b282fc87973bdc674377ebd33dfdcbf0f2a5edfa90259761a478f199b1a7ca29ae06ce08cd97eaea7fa67877f8621abb417203151c85cd812bf9317da196b9cf8077a094a91be107bb5e177bd964f9baa0b59afc971f52dc09a7458b552c05c71a431efb24995682d9d2b66d0313227cc3c7d3cc9a233ec1d32e8a08b403aba4342a6807d7802278d72975551820e24b52ebb174a4b56a780e4f3309b58ae9476d7623ba9d2c9ff7f8c00004249f2ee406ea0f09ea8f6c60ea14d8bb05940c05bbb86a744989ae905392c5d1839ac1bd37ecb1b50e7b610ee9f168eccc775888651a2ebdaf0e8230b67d6f0a4cafe373a1d0356bd26a147db6c8d1d59fb493bb201a7a8ad4fdb2c82ffce70c1fb772417e982bf6ee077fa4ac5374c08fbb1a72fe813fa3e3806e79e06e7dad0e3dbb85a8cb104d5151adef95abf51db936758d91471ba1b0c64488d1f16d840bd4ed59985e2aa71eb88a34b0ca3f2e0d6f00337aa5c4c0c2b40b7426f08f710cea18bbae2d4f84629b522455c77f851b5773c712145447442b9f6bb55f4275eb9fe95a5791d8953d25cdb409c34376397bfbc7163b1f9df996a9181eb4ab53763a9347084c52d5531f9451513c559b50423caf671a6fa8d4f2a67036b18f17c2f70d6b6afb43376bcf451c477de126fe38837ce0abfcb5786e9e7d2c75728a6f9e796a9e20e06d180da01b462068a9a63990f19575c425710adb4f09d8b974b43d69b34256f3c3b835f3b91ced436f3e070a854f799aff567b989e818f1af78a5bb75ea9a602eec523799956419b2e2ce1f612cd399169854372df88184a863f78bb99d92959e8c511bbd68557b51737bb1a9fdfd5e0c10c804a67a437ed1c3b66d7ff84c6b33820e2062e2b0911d1279a42290a89c26eb0f5abce8ab9cb44a1d18599aa232fdbbdc7cf7ed21c64ecf3a9fe4242f0efabe5c9d24fcd1ab4aa55393b2451c23a7acc4b83983e28e3deb1d5973d3b9c74be7e611ac6b579a9394359280377a238304f0d5fd431d38ebbec5034ef253b6462c91eeb830bc5de090b7852363afc7b6dd66db17efef3119bd260ea69ba0772f07fa6ffff0c5dc73ab589386d50964f1c4f74e14388ade65f02beb18a75f9d18ff97b1fef8c6e677db3ebc9178676a78fca89ad8104b3648610e532201832676520fb4f620087da4390132df7ac14a1501a5830b4872e9938ab2c5d885aacaa3896a7fa9ec51c4f46737b44705d1ee4056f2acf9c95c5f034a329ef701345e1b54ddcc575b8772c5c8c410e200884fa45b78aab2fe95b1976de9fa6975af841579fb0191faf28d537f056e58b0c66e9042f9779d903aa7ead8bd5203c80dd497dd09cb33ea3a275c2e3a99bd8403220b9ebd16e5b6494f9f5409a7e942f35eebbd505ddc7833b394ff54e7b3bda0f3e99fe97c4c335313e378a6f199eaede136ad6ccbee669ed05750cc04367155552133515d580e4436717af0550f34dc7f31ca918c0db839dfa1051d895e84891a75c6558f5ca37c8ba17ceb881d7daaba9125f0e54a5feb87c517b95de15dedaaf30e55759e5b63e0a8f3cc5576abcac517117a56a1e6b97a217cd13bd05e6785552801ae5dbd59a01c09b4e16a68bf99990542a4f7828fea71c164e684c32f390db74bdedaf5a9ba3171aed67391c079a8dd0c87178b3b3d4b023c37acda9aa940f217fb35229664056926c3ce3af06e1f2d7dcb4a160507e04a37da297b03b457be99114a32b00d03d502fe779b32b62f0fa0c839ec067f83248fd52abdbc71c51d1f86265116b14798eb5352c95b871b708441b0c394d842a07419ad1df5061501c8db80bd213300e20bd0e769c7768f5fa4adbc5169f951ad58d4e99276f6107e3993c7a6ff20fbc61b354120a965691f14e117632de853b3ad1a303e36ddcbd6025d776b35b64767f64b5bc03fb067c09271acdd9a5b67486ceb6128f823eff4ed7fb664fc7b460ca9824c19dbe1ad99e6dacaabbfaa530f43c9bbff8a29e3d8bb159e314cf45cad3a6860ff6f3470abe28e6920a22be3d4fd0cabd8c9459daf5cca3d00d1eb352dbb9fcd357fc8fcfa9d3ae538f7ccf35dc424cdd66e28cfdf401525bee9a3da816173d00869404f8024bc411b0f5c3dbd7b8b233851111096cef05389d78dd8aff003092803c6243c7eaabfa866f6519d9803d83e303817cf60f293f840048d9721b38507888ac79065d2137ec789a692eb9fd0059ddc343806d6423f1ac2fe3f92f012026d9828262b3982d91def0b815b18ce2149e30afc51bf51b557b35cd1277d8df8926d617f557f50fb2678b43dc7952cfd7366a6cb71506b10de62c3ef2244c9ece05a87e3b3e6905137da17793f97efeacae0bceb2c054750b2e66cc09063a701afe0114af668c00a8b5dec88a891215cfe5d0f3c84be19a7cabf3fe1a6cc24f73b9008c00f7f661b14eefb6b333eb960fb0c107a499d779e9c7feece6380c8ddb3829ac4900b437aba52436860137dd70e76384e8d83c335b5654d438339d7df597d4fed99f5625003b3ffc40217d577568df02fcd6aced4e9702bd2ca7bacd956129158d6ec78b835ac5946bb79b4473d8291f92bd6ccadf11dd66cb8bf15d6ac20a4a7bcb815be7d6c98a65fc90c40c3a7440befb60c126152654dd5b6b85509375cd232f40e381879cf0a1a93f330dd2da4919d238d4c55f77065b43831bb0e022d20e5b5d8f0af23cd61632f47b05715698e27dfb6785ab2d5b4849c7c58560ba7c0a1d1a7a5b6bf625aa25433d144695da089c38526020907fd7b82d8ef3b32e18aa72a2e8c34b6eab0863786f6a24dab7cd8a27fa7de653b8c1bfae65a61caed955861b6bce9c19db5efd96393c9769736fd4a4e560f575de63243313b7223c216c72d274e21de5957d08c79b39c9b297875c18995dc850356974b9e80794fd7f96121e705c8bbab8f8eaf3774ba9c7f57dcf33edaff4764bc2817b74a629313affea276a19c917f52694a4ce036bce5002a02a77c54816ac1d91550248c2126775b8d46a3543ea1c772c5856b0ea83d5c7369dce46b8f204e0e1ca9811891c642979d4a56c3902d4a25e2018e70fa358899b84c5b68a91bb272af27c6743657e1eb5ea6af7db3abd2b21a8dcb70d373f513fbfbd460a9fa88600a17c4e5d0e03bec0800112e1bd0ef89392d09efb3f53d39352bf1939f0093ef808fcaca47297fb479f3114f1bc81122707c237b1f37570a16e7f8b97ea3466b6ceb959b354b82a72542799813c8d6faa38a616b21bfcf752cb7cdfdfbdf7611cdaccf42129b1ae2b55e837524cd37f954395a1d05ddfedb8af4155e13ba7f466aa62a893eaa1aa26193b5de6a83155a59ffbe9561eeffa6fefecad69fd2eedc4b10eeaa6fc3921c4a44471f9ad133674737faa7083faa12c8d95d4e1cdc03e748c3581f609ddb6118db67dbcaee99e34b0c38c94425079b6dab8cd81471000795ad35e96c0ca0bb5863f403d6d28c38781f498cad36413f4491105afe852b396fb8f5089e304b12ed0378e28c55e3812e01a4c362bd5189ed02e4a6c1c9314de55facaf60c6aaca21ab8e37ccb2308590d63876b1c584bef6c092a026fec741a09a9858240bc7fa1d27f5b96af5300b39c5c9fc22bcb88f74ad79c74472ce4cbcf1112fa3bf380c8deef0632f300ac262adc950de456b9bb70acc6a6b82e034bad45a22f04e842e443fb65ddbd6e2a8c7b989219f9535e36fc4bc8b633c1849e608bef4a506a867085c47b2cb7d043599387a67a74a4abb81a0cc1c49e752e09e438b7bc17f69b8fc6c8c969cfdaac1b747f64c543b67beb45c9385fa084fdebcffd6468aba59e6d89eb784eb69a6d2e3b55ab21a27647fd205348fcf2ce3ecb9c523412836c47778ff8f5aec7e279eea5aada138623b1300505b6d9f6e2a09708a5ed8b8b844f40ae5535c15e8c1a15f752c78e628aa29bb764c1866cbed49eef6e4f8ad3e5371712dc24b9b68d72643e5a7f72bef72e5bddf559e66a6f22e5de69b2d2a6f9d553ee7ca69cd5932856cf4a6f2994ab7d7c2d6f76945f214b576deaf35e22e2fdfe9f24c65a9a975b167f62144985cfb95a38be021f54a2f7bfc6bb9d753b25ea007c9f017fcfd7b303c5aee9aa964712da100e50ded09c06f956cba3d60137ea41d0a70ab78a2a9b638e4b578ce0eb0cbb5c5412de1ce747042db7ce37638b15d0b1adb26668da96689b2f0ea6e6d9d0019665d20af66f89bf7f5a481301c2587b7cd06759646db2931515bc11bc35fa67a276896a58515928d3d98c14de52296a292b7e1f9cd3c801d2a0e7301ad69e5e3faadda1fe15a9554dc5adb3d4769f17f34f93a93e755ade2349c503451fb70a7fabc99874426571b1140a1e158ed2cfffaa85bff4b89482c0672befb78eac8e9d617a75b97a545216a1b9fb276a7b7030c6784a6dc26e57042e330e25db6492c636abf6b40cf9ad8cf6bbb474a0ee3abb1da4b88d8bde5707da7b1a92ad32b635a8ae182b11221c3afbf6a820fafdc2193df2db0df7a7ff10500a7aae4860a232b75eda6bed52f910c354c75cda3d30c60042d132329bbd4899ffb1d446c9748cff0345329000dd9530401bfadbf68104dee56442def4ab4bc6cb9396acf1a7234d16dba6b389e6a02e4e2a9da9633c3242e8ffac42d0a54dc007b79f71b64d7d91b6c5dd7d2e56275c55b86be84c572b703263ae4f911200b42a82417fbb14595e01a7e588cd51aac4a6f3056270ede76c47473c97f0a47b63d40ae2bd6ec64c4b407b883ae62ab0bcc811efea20be4897247831f7de1d9995c469e1700b33b3555f5075566331583ffec75f58c1fb698f10d9fb70afa2e5f032749d04e1ba6dcce548fef8e98626536296a58b52c80af394c2056a7928d1b4730fbe7a20d99b90412a01c3b5d51aa138f6db42f72c300a5ae44c0b7dbc5c07ca2a8ca99693e4e67c619a3cf8e5503be5a173b3208c472a02462d9415ace24a5396d9c636cb7ee3ef749a42f7228375e89771cc1b9ef894e13f2a81dfea2ebb6c4214fc9e5b68b7087e5e04c849b236a6d6a1e2ad506e55bbe5684b92e342b3d1a71d2fd60c4b99456a9d142232ba711a2659d3782c725155a0c43c82f9a9da0b6a91ab63e88de6c4b76d8d109adef8860c09ba5b643a6be5d507f54edd307abac4a35ab3a38e0ab5cc80c11bf0418ce49602322051b83f91ef862876082f69460ea78b0f517d4ab4e81faf752bfc8ccedc2962d53cd4eee2493dd41cabea0ecb6b4656becdcd7e0a51fe43efdec6363f8cc6073d110460d405ee57f51d18c37c631f5ea2f6ab3469b2797cc0e316ba31d277589c13aaef0977fa7eb0f6ac8f47cc37b2ee5aa430e754792adec9a7ee52c20acfee21ec65cb4493b6729d138ad5605fb782a089bd1e283514ab4e97ee835a612fefc8bfbe11c4ebd4b181fddc654205eba54d9be86ca7abfaaec4dd607467eaf4d55c2952d09d46321d1044d16e643a1b67ae517ddb1952a86402fdd00d023fb6e3e98aa30bb3349c487d0f08d70cd171f8887deb3c5aeb5d77b60b741b3005ef98f583f8e8298b3e9f108efa7164051e3b5abc38b33cb144ed947eb0de36c58c089c0e510248e6d09dce18b3ee109fc94e06e5719a11b640cc6d332a801a7ab963b0c419b126dcfee85e20d4e3fa6f652de269fa82461510dc6e7dc29f59bc7b944d4d316b0ba1d134853a68681ad61291bc2b12d5859bb80323762ec074060c68ceeb2428830219a1c5e719b5ebf639d4a24b38d3834829c8fb058a4d22a5fcd811a12a51a009e6b37f8bdb5eabc8537d6aa09a7cdb7cdf55f4c733542eaea20554f3e7098810233b7c74c86e45ed8fe2ef261b8d17472f10c927aa9a7b56a0d6f7a3653e1b348c61b9acf160062d67f773e994d589011a1f964c6176df4740a6affe1df9ace1019f7b8bddaa369aff9c4da7fbefda36f6cd164b543bcf1ea8faa954be6be07d5cc3db5024478426f4f997d7bcc3cb5c6db7443e6a79d7d5bee3cb5c1db36bcc83be2514cd8be0d09ede90d8cfb8a19f5f1bb3be808b7770b2c9924d3634f193876d6d677669c19f5b6b12021045126236c98418bf7f61aaa0e1c4cfd38a02dc75e02ab1de5785af8aa84d74dc109e08016b0e1cf45a14943ea7544a1090bd2120ad92db2036c3000578f2c6eca47664973713e8717e11ade405d18a03ad6cd0c5f2e41f9b30e4cf19dc0d2a868e5f83a6718eb1e0e5df2852dbe8228c91ba484a6997b2b9d9720983d176a9a42539574283139f10c74fe0e2d5128ff3f9911f11a706624303362f5e332820d42e7a4dcf2de0c74a2b62dab436ed2fe6e9d3098fdff85c1a45050fd621033559cec203a8ff53bd539600c2b24d82b3116f262ac3a6992e6e6d1d57804ca273015ffb37e3b510de87296856f472c7af9cca65d5094e1153fb6874075401a7619c51a898571b877036b62128efb9eee4ecf935ec5560882e765e7f3d947fafa5e891a0f7f3b2b4e6ade06cde888971dd57784d027a55788e3e1719ff8ed1d972dd9cc799fa0ecba52966d94539412c3a7aa183e754b65c341d131dc8b846023210dada568a2e4cb4be655471715f2a78b7bea4625e4dbf80449d73795aefb6ed28dc4b3693da0e0489c2bc6b062a83166c57fe3d926f76326be86fdce4bb57a345d57625c6000bad2f13f6aad39b72763c8599c0c93b022f18c8a2b4c8d19774734f990486479ab1253edf0b626cb67d5cef359ea26351a14ea7ddfe00ab9a732915cf967d69cca3d8c05e127d1d7fa4c65c95c41741d6ef4add88bd15bc979f8c7bd653627fa8f7a1bea0bb819cfd58a97b1b3633f25a11e8c31bf16824a1e20e0f42f0767887f77f593df0767e8a52f11d8341855c88cae6aaaca7d601c637ba9263dcb2270e0a14e6c0505dc618ce641a217d7b2eb2aba3524f93497c6d41035d4461f2b61136b7960f0817ad958cbe729021805c4b1921b0177c2f01c7b6ba2ae484b10bc83bdaee9c362e053b43c4178b90a73aa258444b7dc308866bc7e2fa8fcc54a7792af4242ea22fc0d2d386280689f9981ed22699bd080d7aeb4e7a36232c84f0cba83780d9ed8f2f2dd24b7981807404162a787d1da8485eb09b853be99903c205534b0726bc466ec1682f330fa45584a9ff508084bd97058ca622e6129a7abfa4ce543088e8d4fefab7cad19c906ba9e1972327602cae78c9e4126a277b4b5bdafd603630f9fe24bbada90bded6a9f6865b7cc766d90e68c2c44e5e09371ac8e005fb014d7baa6de11cb1e86d70f4da05ef0876670a0972d1db30dfc01ff653378bb6b22fec2ad2692838e44fc0d8d506d811d401c7a0bf36eaafa9d2fd65f77abc5e68584571e8615c13cea3adacd23bc709751a54cd13f8be39ca9b06d825f62aabfd79470a6b33e4e49511efc5e95e29014734a45e711a363ce208d825fdc61e58c8bdbd106128d40fcaddd911addc5838a9b5f44e3906c296ebd779450d43f9b6f3076dda39df474eb696ea9514a26c37f61d66f55ad34b3bee5063a1245d673bb0a5f6946fb7eb6a264f0a7538b504edefffbbf379fd1decc678c43b8c221ccb6e468b0165fa3d35b5f2320af5f7438eadcdb7de4c4f6c460312f390ea19ee58ac3be539eda73972584a459bfa1e9998311418369b26cdd878690ea4792ad8f54776b24c2180ddf738816aa7f701437b051270fa2bd29091cf820e01fc3df2b46ceab7da31899abf24e36cf714bfa0a8957cbb10ea20c2436638a1023f06529449d72528f3c15a8f68d43fa84b9712a20a048c038b6d87b2bbeb4a6f864089586fea7e68d800210811bcbc8fdc46f301a54796784860faa0172db7f32df27bef9fec05ccb02ad84077643cde8ea5efb4d76403b847c999648f815c1b0bcc34e4fbf61d7b035e3d4f02cc751323d5b2004243cf8a4bc662bb3af96704c215fd8ac0653dc8a975c60bf8625ba1932abb5ec23a10cc92a822fddf7ad5090409b7cc0c162a5fa6df5eb19c3a1d32d533263bc3c6fe14105aa40b7ea21296ea1b24f5b8c285aef6ba16f0f6f1a6222770761d24974c1eee1db05b8dccddc95bcdc7fd7a487cac87376e7a9a8e1216c83522de1466d570e64844984f351138b0884a7e33d3186fd9255e79f2c4fb9426d14df53d60c34ce447122872fb6e85a8ace952abcb6947d5593bd7745854f52822cda472951f3d484746b81b1f2b690d7654332c344a5480934ba95262a40c25ba633bb29e55c63961617a66e6ae82999dee9c8c39587d6d7f8db9db17775ee681c964865827799bca380dd9ca7b0908773e26bb1559fcd8622fc89628c0eb43d4a53bbf590ec821e969e95868b2b4abe3d57ea766df694a7fc3da279e0d855b828f173b2f440ac05c6e644164aa93d667dc328067d7615ed26417da699307dcb9d4421f48d2690354d4a9d24b1f38dcd9729a1d2d1706c218277e45927d01b9b1e7465aea9c424fc73805fa6559e257e93d039fa20b71a6d3038199468b605abce16f16d5d244d75e29a26462c927cd1aee54632b6c620fc1b883eb52e4313f130d6b069c96d1f585d02e74e89779e452f7a644c4dd6556cbf329e09eb7b333654e6cc6f6f777a03f5fa6389c0745dc69d449c849cfbaabafdb13ac2b3a6cf8d0cb8916c47cedffba9c43ffe4942d729ecaa2649c86a6fefd0fdd43061bb3d5b7c25ef6b41bdce7b6389857cb7d769a1a5acac37561bc9e791e9f67a1d49be079f29e8a23663bb59de268db951810a31fc1469b68f0e7f808bd13fcfd68a8d941780ba46634bae389a58b19d35af287f84c264cba47004f7be261ea7fc38fb6eb7c2489204eb12574aa49ac02862b8ef57e609545f23e432adcfd4b03da6040734649ae77d4b7647f33f9bace2cd641dfe8dc982342a11ee83a5b9f0c72a70a6626ba6722a537240060a2dc735ed941c775efd416d4e9892fcbf9b92eccd94ecffb3291957b68a9d8d597522caa39d88e68ec20df672069b86f5b4a6774cf771cf2435840aa8417a1950ddd3de84f24e2a22e3109051e4113242fe14fd90708411b245ee6f92b1a5b9b021df01daa78c2eb80ad81b013e4d6dc1d3005b16b675cd609661d3df1dcfc117f4444b0c045f75124fb53c574cbd737ab7a8b3270e4303a85426d627ca357c711fb0a2004510401131b6f44bcf8ad19b938306c2315f27a70a4d2ce9fec2b8250dbe733694dac1e7ed706f69737ae7b2723cb46bdb6c0c8f91c322a8b895e97205b539670c80c688f93b694314a92be664b7c07a4da08042bc2e30360043814e206f6bf18230a5f32558a76c5b585e19e13150b7fadd27b53df23c6c56ac964ba1cd1287304949bcec8d5930667a51a0d72923562548ef4a56249e94d69663e1688b9f207525b867d61b3ec2cbd8b7d80805564c46d7cf3db64ac17972f8c34e79b3cfd3dc59c35a068ca2d358334dacac3be12c0e90373c04ef95b0de70957380bc9ea7cfec22041b9a81e2fc419c36dbe8030acc988876f952a7225aa3a9654764d1272acac6a473a76d4a24a3b505c968357f132dd30657bbb9142d53e265f9c85c14d9e58edbb151f30da9b5c5c6c95328db02aafae2e0283e0e70644e61a367ed7f2df5540acccb044a90b500ab52cc61a006e2d69221313a804e4c0448c61b62c1e1fc0804c943493bc414b3e0bd2c508656ef7f38191bd58d75412256863f61bd1494db318c6b4be43260a5511f8c545e8c4d82273dc30de4ab16fce45583d5ed943eeab36ef276a6b7c9c7643f1649f649f29ec419b959ee234fb3f85bfd7784c3536f06f0c3d47dd9b35e1aae4ebd27da5cdb2b6aa9874cb7470f1fd099c487d0721c9c5e9b01ef170242717306dd71962a65075edfae3f5ae9f17265fb71fd55cf20e78a63d536d2f01663ba609a6950bf6527fb7b354296562d1993134a2ec18c63baaae0952872011ad36f5f55a07ab99c711ed3c14d6c3504000b68cdb968d1c3391882ecaf9151f198b30f3667a73ae5cc830c210cb8b31718c3f3de8d75fe42d516e812d237ef31dbb54c8f732ab1d3f5ccbfb052c697367048275ffa90055ba82e2317b1461e91085cd37f7302c70cd41107ede27ae76e4b82bd8a25e4f501a69aac4f5bd6c39de1b2cd49662f42b41e429fa4bedd5767819559e0262adceed8d8dce8ea4334359e3797f7308b909261e596a06cf0e34905ef6e71235337169cc0a3db37db9885db5bbe76a62a95f6bbefb61fbbedaffe51fbd99e6783eafb56391e7de99aeecd1ad620a9b17940574d8dbd035292b0c27358639ab3ff58f96ebb45f248d246b9c9cb1a3ddffdbe0bf7b768afc9d144820ba59e6ccb69fed8a671a91ed9f7e10ffa7928593bd9aececc71cb49a45a4ebacaf3ac8a47244034215621b8423d53cc21ccd8823e353dfacb76284332e01c2caae411dedf53647cd1ae1e8f14aa3f720f7575f86713748443700557f6cdf8ca9f7c9f93507ced888cb821ce00e3585c5f3994148205944fcd9ca9ea21759c5dcf9d2dda08e91965ecab26466d56fac15edd3c060c1740744dfc76e46d56f236d9ecc6c8308060a7a9be996fd9808f6a87e2145af3ad73aeb09f45c9cd6c109020cf8f476e2007158057dd8a37c93991dd36031ab609ee7c77b7456be60ac4a25cded71f35db5b3d3dc7fcfcf47472ee8f6e89b6eb92fd74ba30ff3426950aa8236d5039610ef88ee3b0f5fa9612f2d49848f6572c8e86df9cbb6270f6324290224e7a21a99118e4f69b101759ea989f70503ea329552a0c74857a0852617e911891f0821befe0994c92a4836ac39f327220e4f33e63941ffbfcb0d50b18be92f7915af27d9f2f9c5d1922ab142f6a03a0bf849d1210125620532a1858d414abfc5288999b3ee3fa75c597fe41c4129bcba9fd6865f62e58b585a407ca1d7f794680287a5c04381d1448b25bf8f642e0bdac6bbfa364714155c303d96f8316aa693c7de2e4e8fd203059379f48e1c0f0fe6dd4f7814f7dc6f79fac3b3f0dac2327b3a5982c7deb76303343fc1df59c758a314d4c2305650abe4667393a79cbb61f2d82ea1e81da481f7a9e27947609a0635bdbb14de91741efb2d9f0013b7eb17a96182a9a06f8af24773cb7326c5256699c10db50cd92983c5165e81b98947ec4935bb0cf75c41a7076c359f764826f6545a7ce8329d17fc36734c70e73cd4b028d90c4481ebfb26f1ece6293f64bc33d74a40d316793cf79e3ec58826f7fff38f6609e239f24e801f4de23810c7b89f7982b950b3f85435cb2459785ffb3f52eaab91827b2f89227f0896774e0f0898d9ec3d8fe597db76aa632b864fd31f93c2782f74ea4e237bbf58d1f60004c489aafd824c6b6491324d76cd1b7bf27ac77f3d5eed66eeb2d2b658e3b566eac108c9774c7b44dd6108c0b96f6050525820d74d3f3447097843d44038a1bbe476f69eb46c32aaf51a69aa61d163f9dd517469bd501993dc536c92ffc70ff20c92f5928504ce499dd9edf6ff763da222787117f26708fb1c39a5a494c387fe0eb4b3305097abeea9c096c07545322d7f0b9885656ab39eec71ce34854215afc7ccb0450ff77a14c16ad663eaeb2d16f8ec39b69d4c4107450cfc89d2cdae94c1e2165a4d4e24844777a4abf892e0a4786a5c36ee3f54daf33bd2f168d5767851174b47c716e5b66c4c807832de6bd97ca22e1ac083ee090d37817c831d7ab39cac912b08d23567bef9ae0a6bf5bafcf1add3cddbe04be355d6b748de814a96cafa1d9399d7922d2bd9ce15ece02ba1dddb0ae4955650b95739b0dba6b0095a7ec970dae78736d995d3c5a7518828666aecf024214f9029216b0f5542d607b0f2baf1ef12670d06d25521e475790f36d55cb773e802e3b3248ea5cf4964c3f73751a4e55bbc9b9ae98fb6151770382247bbb03aebd8df9d6f37e63fcbb9b78da6a7230b79b5d3c300edd7d281525e1a268259d0d50c38a0f06f684ea139882b318fde475188cdf266c6d8b5e016692032eebbfcc597e157ee4856f756821376c076d2df9d2887179ac068edeba0b8da92459c20960422519772d9b16a84894ee145cd7c47004bd626136daccd9ac4e80c40e0c161db82be399d5187aa46188707aaecef6eb013eb6cd8fbcecf055d960733499ff683d321609b4323174277ad3120212eccd3b3ececbae6f6fb223cf55d1618e6f01537576a20579345193dc292e3c90d8257cc4fa9698553c30e24fd44c2d31656ebe5c43a6a6f5894a86afc6a22d3c48049f8311736f83efd5b75b7d4b0db25b475ee281acb7417daefad9ad8982926fba03fda6b1956f1e89034734232eb392f5e8605862a283b5edadfaab521365ecd86d50510bb63ad0fbce9065ced39d79ac5b2a38a45984bad223af169a57f69c19703509caaf7157c9f72de2d0033ee909637e7facdfa86b7cde6503cc59ab1bd492d0290937b7406734f3b8d4f3785a0147b0b308cee82cbb423479c7e43f8820663f68a0e501267cb34bbbcc0e8d80570ba57b8aacd17b7343f9aae092f937ea6567c866423222f92a4678dde813dd42cd6ff452989021fdc5d4f5f83c743fd2871b6052340f3e5bf8e66aac869fdccad8dbc9a76d97c5b76fb61ddfe8a3e8d6b91c1bbbf15b5914e7e6000e45641b3b195ba087efe9c4bfe8ce7c932a5cb1eb8e1264380cd60e7b52aff8ad9aa8da203076f247156866e76f0940698b37e43e1bbf2b00a5e86cc3e1e51f4d4a366c22916b724d799b8b5bc9832173371c7010cc21af3e4f0b6e38a83c252ee410ba27780824efbc31aef0218bbd651f5fd431bc555579252c18ec390bcf3a9432a4f7fa075b99fccadb36ed96c1daedc160a74f596d2dd4e346e59cc463c5aefd83966e6932c569d31f7e6055a7e6a6fd19d677e00685c96578c3d080b46d5df37ff4509fa9c70f1b3eb95feb51e02fc3a5375eba95e03e24d0ec70a437c4ebfc8c287f5eef02d113ea5317d0dcd135cb1e8ec4136f7690483401d9560bdd89ccb7dbb16283d8896c17d8cfd929919d8e768158447dd5de05f673141a7afe57d51b0576ac8947e320afc72faa1ef9fec2fbc092d7c82a32a63fc9a11817f28807e593b68d6d53dbd0b3bab77ed56f577fb318b186efaa525a179c91bfde447d70fa753ebdc751508f7d1fd5438e63d352ff41d7d89a3739bf6127a8a794e2a00fdd1d22fdb8bf774ab5795232d20ba5be81bc50350f611afcdc5e5f5ce1fe817d65d8e4bbfcca428e2f0fa75c84b87ccc3569e44252372753e25446f73cb148c5c8d1848f3fc9b2c50fc7686dd537aa47a52230287a4c3c8e0773b53f38a82a2b3b31444dee6c1af1ff7d34043031b42dcc082ef6d5fffa4aafba685c18cd16c782fcb42d67043cfb39e63ae6ab21b66a2a7846d3eff042c8b00ff83e1a059a646ebd2ee95cae475e8b62413ea8de7b87b18fddf2eaec16be9446433de3373fc9929ba099bdd9ceb4620cba8577fc01cce4430c5fefe507d4ecd3d3a97140a00ffc8fdc747ab6a169421cfc1d733e80f8b2e973c5f56cac262ae9579bbba7e2bc2a9adecc70148d82872933fdb7603d43137cf5eae0db8b1e82eb4c4d544afc808a3d12a55eec79ffbef037b5f74e6358c3695c495c26f6a7ebd555f96c48c6b11aaff8ee52c5e401db67fad998bf7d4f5ab41435e4976aa0125b94d85f2ad1a6bc2d287178b78e02254e974ad4287817255a974af4d9b31901c2974a90877813257aefb6d24689c1bb63e9a2c4e8528954b7d2af39f7d25f5680cbf781fd51c88f898d22fe97ff3b113f1073103e3b903bccca33d9f9acafa0817779f669fbd5306ad674f698de2cdcb8e2ee06a6b18dfb90695def411e159e8a1ad09cdfc139cdf434841950e0347613c778c3c484f7f96eed814998011718c54925a245d782bcf4371e618be997b5164b0224893500efa51b7c310ade89e32c27c5854e71476ecf1c2fb6dc9df8d6fda6e6e7bbc07d9d534c6ae84577464e6830835ea2e01a8779c709298f606056478f214c8fec21b63ceb9cbe0feef49922574accb12639ab074dbeef34a7b2f28e9881048395a4f3ad2b72c36bea4e96745dad82c04909147991ac332d52df5b7bb2422390404d1c9a868073acfde8771de2c84a4d355e80a93d559f2bd56a7a41cefa0c275f03335e0bea91a7eeb0094c1f32cc0639c1438fc32168bee81d02323c90c3f081b1d8ab0571d99cd0525463c6690131e03830c088b8d73f5516a83ceafdf882c32e1d4b30428ebb1e0644fdfb743bac299e2d0d821d76627de8fb9dab2b730cc8471f110a44bae4ca262aa5a5a557461df0e5c993f2d947b041e10393ebed0def57be95f24ff5a99a032acd57a3c6257634f5fc95d7f1aecc2be46a49d90c85ed30fa529fa8273d0f5fd5903d69ba2c4d22fabacc984b6d343df73bba24475f9899defa7c71723cd48bfdef838207f0c87e3d1180c2896afea569d53731a783636818b971a242519a51b84b6beff17f7a29fed32568a2896a730cd3633fb106fb8711d48be0e28551f53f2da4d6d8f73fff648ebbe152cb5685ef68567e7570ceaf654f0a5133cf0313f721a53a5f2a15e9ea6f64899baf7acf5ed79fd458f51848affb4a1a8b108ab3dd88fdddb812863361d31af39b6cf4610b48ecca1c2eff46f953fc9f9c709b2f3d519da51c229c00099e43f4e9cc3c320f7d76f340dd8c9680c2bc5fb2787544a0f18acdce3cb9208987116fd86cf4a793cd1cf428b0f78a34bbcbb8ae38fbe3ba6ecd671352ab53a877a6bbddf054ebfe9ddb320eaf1c66d8d7dc80667f7fe0dae834b82267aa9acff686d93f1b1a9c789281cb804364deb5b9464ebe6bb5d83f53a92b9e445d538d65e9e6359d2d9819eea8d4073aa1ec2c09c0fdd635ad69c9bbf1c046ede6b5bc837e5de902e411f2ec1880efea8feaa76abd271d249810b50b2f70aa54240daf98cf7cb7c41625f6ef96c850e2f06e89824a7449b537b89e3bd703a90e8c9f9861a36e4c0c096c0a132bdd4fde2f70f7bbb2f38bff9d5dac6c7eb1861ba2fe1305abea7ffedfffb7adfd7fedbf82f583a7ff67fe3b7be76930af6cfb3fdb726f36ed943f3bab6c6a6ff3d9c5ffdef0ad7ae933aef756fedbd9c3e74ff762d386255f8f244cc638bd53653477a6e86139b60e07831a2a21ce23ba926e4f2fb4ff87731bfcbac072e4d91fb1fbe372f9030236380bcff2eaacd054fff7c3f97fdf2c6eee36745e07ffb79422333555add595b9695e9550207547cb74f0e286a38d5f01d2dc285ba7cad5bb3a354c95baa51af6b686895b830541e8bed61fd5644e37600c4fb7a518ced9b6c7226b17e1f4c3152b6a5b09f7bc995c11d33182266c7443b5c3be3ebcaf4fd51313f930737cd9fa9afd997dae4f394367259d700f6132a423fd6a65bd2305607d1004ac10ba427d970eee89512c86d89e3335ddfa1d28bf8f27d1df5df1f5ed88811dd8694ee284476ce029b03738bf82aaaa8134ddacdae98bef5f7ca5199d1bce33ae9fb4993903b3619e4da5180cc94087e67b1ebde567332a06413ea518f08f956274c61a25fcce0f81535035308135fccd9b5a0c9ac262d70ce876d5b37cabfafe3c72d7a5550b78cd89abb99375f05588193a61c71e5757ec1ba0fb099fe492a387175474cc8c7282da69c1fdebc1c4fe0ad472c864211eb21407146e7268855d28691a954d421a85a5a776e843bce1342889605c1988998939cfc98603f2e2b332374e990865d25f944937c8b87e5666aee7558b557dcf99d6c779ecce6a9b473dd383fe4c72eec7b77bb8999acdebab5d0754828ca18e249d481422099af0bb3ff0b94eb10d3607163d88c1940fb00be1a044d3ad970b38e9ee5bb4e4b4034a460a8109cbc1acc9583671384849d20479215def01cef4e596d4a6ab3bd559bfc713b6d7dcc2e0dd12ddf595d57ef18bc6da50ecbb79985eb917095ced8c29891c581a29ac24f5f658efe84dc05eadf550ff6c6c8cd3beafe7c1189a722ccb913e627309037e7f65db4fa6ff5f6ce0853dd49be1904addb7fa8c2494c8354503dcaf47fbdf27fbdf67fbdf87f7fffb683f73fe4b7deae5508d539689befcbab3737167bfe0ff463c093efd283dfb821540a9effc688ee9079b0c8af1db37fc7d9fbfe1d9eef28fe4ed1b54dd7cfba6e63bed84ee1b9aedb3aa0bfec673da19f28fd87d7394da82796e340ee5952b2a0f0a38391d7c4b07a14248af5c804092ee189c6271272b246799bd51e88a9ca85393a9dc0000fcdd3648e9e68a3d44efa8b2fe8a6f838d40c490c9bcc127b2ed3899b5f78eae79b787a99b25cc67faf19dbda166dcec8c7e89872861168dc6f607577638f8025a0917a62379558cd568cf56fb069c79564f0cfebbb9c29569981216547be9958d55aed973396373e7baedf034117e0cd22bda9135d6969073be528b9d6755bf70d4d8bad09d7275ed13be8c9a89a502dc3edc31f6ac3b3fea56fc3bdd997b613d940a378e57d50efad5de1d87e0b270bde560e7fcda70234de805d8a7a3f345978e5dce02e983c233e8d91b8e3284d23142e8650bb688e69e151df2fb48e1b9e4c105e88e7861e25504b554ff53a23b9f9d255089976cae2cabe33b9b99e7996377a947dcde7df571a018a7f00e162eddb5cfd686c756d891f4f5c02723ad39f16d57c4117450a4bfe71bc2271bc006b0266d5661759e98a791883ea8fb5a3df6196b82d759e0aa0a3b1e95072c1222df6b6d76ed6eb4f9fe5ce5146a3dabfb6afab13e51d7acc5542a646725d1ffb570a6a4f55ac822d06a8d6371abae442fb3659e71c1d95ae336bb7836dabcc7ca6b8be5b2e58b3b65cbde29659bc9f6d64264b5be88e3294eddc27769c2f0facc97a786996cec9d9419db0f7c4369425cf3074b44b5afad6ca176eb2b4d4fe6e5b3664211371f96aea68d1d1f5768e0044717618527841185c305b4891d0ef7167ff3cd155ff9f82d757526ee946336340dd267b6e38b632ad2e12c56579609e9af9d13dd00d96aa5bcf4f55715f03c1d9950534a19ffbe898f76c995753eda72ef5b5f6847ea7aab33cbbddaa4a4bc7bd6cfbf0fc17f9bf6eed4b58a5822d93dd5efd483eadf4ac3134a9bc55dfff06ef3ed09c390ed996f7247a46966b67714f57a2f6bb654efcd5b9c8c394e82febd82076d4ce1bf133a299c99e7e2fd32bc76104f132ccdda2eb7a1b4898ba3ed5c36815a407d2b7437c70881588aada659c360726025699f02186eae09f31214d133448a921862b730a502e962a42b7e051d324fe0c47a76f009c5fd13dbfc509d9316d24a48b522daf1f6ee4024e27d8dfb9de90f82ef7409b3e3fbc26d9b6df2cd712779e2633bb7205196c0b29f22d71c80890e28cb49c07213f12c711eb875dca860a29bba7618f09fce35030901dbb2b14355ec37e7f6b490d978af7b302b3631562a1f352b9dc93cbff34df576d616f52baf2914db3110c14fc4e219c199cd51f5fe585cf974073eaa7cf39ebefab8237d35a8628b66e171c9fbee561fe1b537646fe8d711ffd54f677b2f85a2a2f5d3d1b5473feb770aaea50b9ecbf8931340cb9d3fbcb2b2feb53e5129d842b885e7108c5eac178bd9716d7825754d642a15ed5eaeb810207cbe4c98abe11c3801cfd5523c38b7d2c2836ef2a369724abe63864764a31b143d354775d179b417400a53f8093bfaf0481c827fedbe9d6fb60458d7f2bb884a3c2c0341e251aae0fa3a8c4342514c536e09f9dbaa46c8b7660e54d0631ffe3ec2842eb5612b9ca830d0d4d66c421391449196895f7f513bc1b895b9af5d9afba9da7e5165cec9fa6a232dcff7b027f602f8460e26e58ea5a603fc0df977f796e50971516663e19d3eb59fb056513ae6fd745cb25ff469c92eb247dcc9ad1d2f8f423c2d0f48a250f46f5ae2ee7dfd59f53f73a2ce05b2efae0ba8014a71a50a3fab98fc76734038afde14c9e6ec81e6ab82c08606c0301e884ea12d25fb9fd4b14779276e303e99ccf2f2649637e46b3957a38f820712fcf283e147d5a50f369204ff371fa41ff5997ad6170e45d42fa0ac18ec9c783b7b40a795331820c1d65c85335eb81cd9af1a95c50eb38025607db93ddb07d907166d5bd7703aa0f3dc61b704164cf9b876f5e6986207ac3ff116a51f8b58bfcaae55cebe8bfdb6667904da4c59e7e74616d84b96e9291881d5117c29720ed2f668c130cdd2273fabb1a473fa21af3405d9c28d47eac763cac01c9c95a50a709c47af6f09c76aeb88bfc565ba31f20b70475f8d2154a9d0cd42d02148bea6afba27da3b029dd8b23ae74002e028def6b31a3249c8113c4eeae39f76560235bca15fa31b4e1372e75cd1db57e662e038dfc1df1d99eff55bbd06afec1695505a316c9268f3064db0b772bc5379a2eaed6bbff761da27e577c057e169e918be9bcbc03a1b1c4054a94ee69c366baf62c37d22216ca6bad472cb37de534758ea89f8edc240d40c8182f4aa5b328e908d4560811a5e682080f4692ff9d3156366ddae20636f3330da8f646f2769e1411c975a602437c02b207c8ec9ca439dc325745f333553230cb2b6747c6f36ec57f550833a5f1f9fd46bf0afe38a18c19127bae572e93150f041d0dc56579ca11ca17cba4152e94963610cdd9a1e7c4f6647776733ae7471bd73d5d7fecd20b9fae3e1b7375c6fbed39b7db2f0b6f09a88e340f469fa2af993a1ca482e775c6f4a745cd6eb9604ca3512d63833eedfecb33f1fc310b1e7a7ea18e231a9d62741185948b6c82b816ac7816bf178ed35852fd83135d06d5a3f314db33d60916f3c95231c6ff164bc046f08930f7540b55f361935618dd67630a26c4f6c4549055b0fe58fcdc0890c6ce169b319c07c4a071d4fdb95a73d3ced566a18e069bf1940f149d424bb727acda02ecccf0412fcb45fe84757a937fca9cff76303928d5ed197547e4c957addc88f5ba55e561c4cad59665db11ce67ce7551a2cb67c864f0ced1e8d4d250f4a855e17f1fb07bcf6cceb1ba59e244500d1c967f36aaed473810fd7fce1cbc6e9f56b298012fc32f42a6f05d570f7e6adaeb889b77944fcabf3f6555fd319034a3ce782c4f0a4050a4c860cba73cb681d5f2a4fdbd3faa39a2c1fdb8b80f6d97ac9bb3859f214492c2362cee4b3e49ad6be8c7882d758d128bb226335831be7789a66579c231d486d9d2d2f4777c7aa4926a98cd771e78652323ecb8d0231909331ccaef8889ae8ad05b2ea9e1d871a6b47f67ca9175f680f8ab9758d23941cf92c14d1f8e2ae67edc5122d442d3e5150d8e269dc0a6c8621baf40b2f5f58c4cbd4ab2dacf3e95c93a4d578d083db31313074ad47def249d6d55f7afd16d95b9eb6b155474ef51e7856fe971ba7f630b2b54f75ed0b7f24b55314739b38d587d6d6afd23362cf40d042ef98d3823d9ef2ab5f151b32ece16b5f14a62f949fe856f9fbab9158d7e61706f5acfc6f213654879dfb13cfade5d248c666244f18c98c70fec70450457e8eab89a6f2c924c8437cfdea0faeaf76992bfc56fcb10af86315effa635189cca3fd351d5b1e44b2ffd08f42d275e9eb78bf0a7ec9783ce849f91ec45bdfb907b68849de53b5376baf80b57f97f3664f36d0d48b7bee63ad3aed774a3d5aa425157ae43c375e224c4defaef9e11bd55173ae20d5882825680c97657d66c8da11f1774576c5c2c31ea738ccafea89a726278f4fc4604b5773e1595d684c5ab5935fa36be8875e94d780a29fa70181c5630e73770e4b770e0fbf99c31800f567b39861160f328b256631bf388b7ae9775f2e518c682ad42e602b3dc554334b2c77ae5c664a301495da3bbb16ba99045d3af199a2f92c3c59c3b5431c123a31376fd670332ec5d147afe1b2b8fae3458c76566575f216d002081e12076709650f9fa8bf69c4c4f709451e5c12eccf0667bbe023eb0c47bc09fad54da019c8861f5227724ff7a2f08286578f7c7f3d9eb1470c59be3ec3256ac8664a4fddcedf867554721dcde0b103c2bbfee6da92e21654348f4e91d513e2f67c5de2493887293c4d6214bbd23fd1fcc46dfed9e8a558309b185f22ead572ac96fbf7a8481374a6f72e9de9a2c4e8dd12c342f3817ee8a9d5fe370ac335d3dee32353563d676baf06c6562fdbcb6b3e304e1fdfd8d33b81a2f0da9a06262cafdeb0b1cee0df0d3f313a67676c4d99cbced83c14160930d864859670be102ecf8d5b3bb73fa12a7d271c2d40389a3eb2f25bca72641a07d589e27d8f77253dbd56bf8837db5fd58726fa93dfec81f36ad4ab8a92a741750fc492042a9193c0f0bc58cfe68d009448925dd8e0361bc758c48f62e0082f46745ca37184326bfe3b7752e5a49b2b6332388c97c0c558035322414d51c68a0079dfea6b7a568e5f69915212cd36635ef065ec809d15900397b9ffe72678c2b2c9a1bc80a924893d811cf429463d209d0313b027fb2ac2ab0d1285d640941a4beed516db7514f22494287f40d87b2d74d133f47c3eeabedd530a82b715062a89ad039a3f811d23d7c262702d83c84960f055b6e3d3783a31f75b9e38b005320ed8228e0720830b68b20540ff502d699102703e0a584f4d0902aac3e1673ebdedd59d584e87d8cc55a0dad65dc1b55d9bcb30501b5456c3d8d052e85f9b4d75ab8ce91af80e5b7cc40afc460e3ffb1bf3ca87017be214f0d90b42179828ffe38502c468cd944f5df53f7e79b7046cb698869952478f98be1bdaf70d8f9dbae6e23b1b20ed1b4d8c4996284786fecb0b313515e21daa308aa32566a90956b7d1371a73c44d2503c7b573846271ce6a132abbcaafac87bbaa4ffcc658454267abd1d7e7c1e3d5a06b1391e3db50ebf1bf18383e51a1cf14a14f3e1303efa743017b050258003c434d76919a48b4877486d926133aa96b9cd78120de3906d2686e357e074065e35587fd3abad6b674672d86803c6f3203d61b5b50d30c0e79eba60395ba452e347c2ddc7dd2f74956a086329461ddcaa0b012b33a4ab2b6e1d8b153167a438c51fe842b9841af25f466040e9606ff42c84baeb78c3da023341717505bc327a283f2c382211c31f53e580310b602e2b3544e140a3f6c9453a5415dd661904aa015c234ddabbedd7cb353d945bdad82e3f6da98cb4e7145527113bf7bc7c02ecaea83031e800320bb6ac499c9acf732ad48ecf92de8a94304c3f7966f2ee2cc5ec44ae56dbf7ae02147f441f7077ff87dba0cecc30d7d0c5bcf1035890ab45f18f40998570682ed2f6f28a072ed5b89205cbbdb6c072cc6f233f112fa8af27145d96a6cb5d2b53d1ff101f0a13909abc413e35a5bc4ef0e5746ea387b2993c975c1dee4f44f78530f5417eb10a1e2f5ca611324a9345426ec1cdc66cdeb8879ea213bafd590856c0001adbf6527a3cec632f562a099ab2b5d89e3383f95cca378d2057877cd1941abe6b91b608246cf6ad1ed99476d34debeb1d5746ece6be12e627e634cc30a7f23b8f0ef9071a3183ad3b35bc1be4ff43d669736a2420750cbd83b3f9a631b6883519aa1981f47a45813e5f460eb095238f86fcdca1212154ab63052d1df8196af919f491e3387ea593b996f98b24a3b33499fcc3e85d218b8ccced74a5b488eb5b9d45684b67c1478e4fd3357d5c4911323ebd5447ff1e6ed44259e6af749f05579ccb4572fcf8b9aaa558fc935db085e1b5bde3865e930e187921459e4583489082dd76f79ec37ecee70f803e011f637b301ce967776a7eeef01806c78c714dc14bf55c1d9c7c4b6e3919c156aa37a80ecde751b9177ec29e57ca0f7c779050434d58bd8412d064d5941b9069b4ab2e0c76ba41748480f3fe16d6a1ef2e4143130d457e6f18304f18ec8add3bfc6ea3d1356263b25e1c0ddc9f3ceaa526b3dbad2734460e929697b169e3a3293107327575f89052c867ce8766e050187775497d1087233e57f94b9e3774defc8a126afbd65a51feef97f545727bf5aa5fbfaceaaa813f60838db459abf5d3bb45bb06d16e519c7e58603151f794342e44c907764cfac70bce4ba474b3114c2ab12f25cd4e2210f60fdedb798795a82fd79134c3453aa981cf9d27ee8e0d22e8011b506db9b903d6cb2bc660bac6380c56d375351f5c184ee95391cec25c79b2f56ebb151aa040241700d1584757baedfaae3584d35f7bb43052ba813c29638954330cf022bad0b54a883ce2a8256ea6a6724c02a44c68a61e939d4bc05f987bfa9e117d46fa88f13504c844d9f10949171dece23ce6520692aea5395f8aa9905f55735c0ad7bcadc84185d630209aa8ae63dd29ff4915d79bf84d74440b3f56800f1c0bee5d03e76216dd10c4b25ecbcbe6202b0693976edf6b162a22702a1894ae271e4c00f2852ff7fecbd5973e23cb706fa83a08a79ba94847108a1e9349d2679efd2e93433669e7efd29ade7912d03e9e1dddf77cede55e726c1b62c6b585af3f0e8d52e2a44dad3209c9e13eaba7fa18d1bd36f3cc4a8781760e475b9f5da78b0935cb65c1012c4aaca1b9c41de50aed6454b958324c23c735da0707268252bb3b31863f1e06a5dde50b21d010aa3d3476ab80c5b4c3e6c313ca1c5ecc316c50383710e1fb598f32bebe3872a45e923438abcd35efc50a3cfa4fd53008565117bbc169cf5195954855be6aecd96d4968091c5724dab903a676b24f59bd87d293b56906f303e26001e0f549c0ec02581901ea0d41b15d0d16e9c649c7184427cdfefb24f8a6595a75c9cfd0ef637d28bc4c15618893c84a253783e4286a91f3d0adfc045df7e67068492e1f3a53f22a3565206a0d0f42c0398d316ed766d641f7c805cf6123b78560ed400085a2873d0f1ddd5cdbbbb9b778737efdab3269921dc70e3a41dc342d39bc3ae29f9bc43c621e75cb9beebf103f01e21be0e9b6ac825d9d265daa56dc20403710ff38c1c4de14d02a29a005436d2e946a456f07f7a8b2b423b7d4c479631d569bc69c0474e32a53bc11ea05bf03b696c92878cf50a3e48cae1e76a8f03324674e8dc00476d9f05b85664ec7364f43343f80097a1af5a40a55291d26c6d251970efe24c1e95396c426597b96c8f24c763e76cd640ee5f41ce993a4e6d619eb89c049ebc999f03d933f6f39604125bcfa6b920396d76233bce2757a9d124e662952aee3d6e7cd54cca48400c5a1aa4e51177483a8f8843787b726e7dcc4217693cd8884f57f0cf7699100339957ca97168513aa41a4103eaddfe4418a98bca2d1a2198d0b9d367a526ea8f65e05cfcece95d4345bd8262d1e2343917ad9b30ffa45681a00943a58a5db70c399d2f31ce713d2503b8f3c2a8d1ee27622ac4d8a22f4835bdb55d4511fb7017393b454c766ba19d40276b54f0b0a3465453592860d1849a7deed2f20b1f6b62246d54234c989bc246230aa0ab3a6a5430d957874d4f7e6513b27e4b6fcddbaa18f96692ed09ab15918855724152c7a39a0b5c7a03e778413e645c4ebf3ee7eba5d4eb0b73f1fac231ca8c8b477781dc97ddc934932503a0ae25bdd842ab4d0e99cf1b52cc60a7c9a6703633e7a4637156dd0bfbc3aa4d86089f029f083cd0f278708225bdf0a00a71eee5557ea276c21b0e8db2f40f6e0f289e9fe343934251e71c4f6047b5d421c7dcfd39e6c64a5412d10aa87e516dc20963ce60841dd845d44526ae8f1bb9888593ac6247fa7b120dfcf21b3c7bbf01d418ab79ab33d78495084fac09d98e0bbe678398d7dfaf3c46fba3a35fcf34b3710a0b0ba3fd78bb8caa45203767497eb76c3be0d531e6a3c5319142a3d96d054d15a2c33281724b72c6dcb4f4216bc19870eb90c5aa085f7ed8a7ce0ab67f06e84964539f98f872741c5052b70bd345e001157e2649bab91dc21665bbe82b03bfab9924ed0ebeee1658afca578f1a29897996e04b83dcc31127ff3575283791f691edec192991984f08f9dd0a671ef15e3a4380a783899dfb0ef46c7019aed05f9dd4f50903bdbbc4525b9107775a6060aa5547951922e5cf6617aa9ac5c13322e17aebbf0e094fff1b206167928222e77f010954eb4862df7f031131b2de31dd145e80e3f79a9d70a7cbe5e0727397a81efa8bcdf507b843192edbd720db533972e1cf4e4ace34d50bb506f63ec3acdbaadc54afd9ae3a53b75a695e0b0aa1f24b65556915a7addbc42ef4d46eae9a4c2b138378e0f53070a55a539d07f242accc7eca76d5418bf4eb8ad4eebde41287b8a04b801417ef645469652c7b81e7325995f0ab2fd99e1a6b1cc98938d5b8cceececde73511c54c928ec024d910fa7101b43f30ac742eac2996260de9a00ec672f92f4d2c528c887ed2323cc8e833e85498ef6609e3736595143656195731012da3b865db297b36ad4499bd203d2a5e21160b6a2be761e7b2662f6365372d39c37d0c0949b30aab2938f13774e622ba992c961ea71511153108d91fc0c5079d8477713e0ee5eba12b95eb24659aa343907889103df562c70aa2cd0d077ffc13617af37b613a177e2c4c0752a72854a32755f8a5f03950c327951f81e938edff5ea264b173fad08d9b97ee78142a1f63a192e2e3df4a95c61d4b2041547c868b047c203f7b4a10b0a79fa47c033c45bda2e025a7af24f4c0ad444e3e3d30fe42188cd15a86effcef14de848af8259ca6317e7163f55668c9cea64bccb7eb2d3c3057e028b1e0d32594ffd02576ecf850db1a8bb94ae438db599da15e6b6fc08eceb9b290cc4e409cb00a9c138e2b9eb362aa707a6acdbc0627c7ffc6497fceabff6be21fab0c6d8b08b8a9d234b183d687ef7f20fc556fbfbbf1de6d94fe7bb2df448b1acf50ec6eab932b94ac7f0352c683a6304eeadf4906c9308b198714d358a528d895ed888629d11f0260f05f930b835b72e18a6b2e86f058e40baf45be97a4d97f579c1ba8ca9d5b96389fc6985d53aaf4e4eb8e2adfa9bd887fe7bbbf14ff8431fa07968b41f64f78fdbf92fab6444d979e11f995cf53734a85391174a85a02795dd206c98add7629f6e41036eefc9a1af9539ae43bbb2ddc12ea77122567d29eba74e6d8e99b07703f8f8fbaa553758e979e3d853f90f4e8f2be3e41d43bb14c693e26639203e8fe12152d845b8d6231a0adf262581e866a3bb73f4aadbf13ebfe7e87ff4a9afb173b6cbccd6dab6e6a5f4d6c24e9244ce9c556e5c10c556941f4b6ea25f6195d06cec8234d804716c45c87e195f4b510e98bcb3ed66a1388b2cac957b54bf9aa0af9aa70295fe5ff7ff94a3e70648d4806dc64f2ce28172b0ab7ac271ed07db5139bae6be3e42597988902834b0cf34b9e1cbc2f9b3a0bcd9cfae9c41d4bb8657aced1c5b88cc2a8d7fc70f7c2c8c210f67af3dad213a48d322ceef7a7369cde7f932bcd932aece6f07870a6967f615a189ef5ffd07872245cb9f8d4a18f47319e51c1f3f476f6a0cc8c04d0951e11b710bfec7f86b9ea72394c7bd920048b5342c4abe218d24389ecdbbe0e9a31952ceca16a38c426b8f4c403cd924a4e810d645360161d173a0cd8df1de0adbb48aa75a2cac0f516d010e7523b2dd36da673e6e06bdec6d7dd0ff0f547dcee837da52b98ce1ee7f91ee39cd6512cb5749fedaa3a8d028df10d86c66d85839f9b0ccd9cfb341a7030f6c00e0772022633e3e9ac0badff953a6b0acb4df18c4936d430488d8251c13d741b7a48f258ab8899049704e479a1e5d975970c299daf7c5f85745b25c5e66c5f1b4a60b553a23bb687293fba22663fed3c87fae60e4b092a8e752eff77819a49f2ae59f0ffb9c2181fab2cd36bba67290ebb01c2ba4be8aab935f54fb6ef9ea3e2f9668a8a2fcc05159f1ba1e2237341c58746e5ed363a17a37de1c6714f83853be7b13f7dcb51490757e74b489142d165ad0ee796651974cc328456167e71a9c9aef806ae46cc2bb4d54a5b52d453b30bf2de4b92cfc474bdc394c54a9d174176aacda8c2b33e5bc0798bc7202e6a333370e3a7d813a8a9e73a99e1719744af00fda514720f9ac0b7bb0634463392da69ddc25a57edfd52332a6a6687c64cb462a5a11b5e44453bd3a1beaaeb989bb6fc24f2ed9b3fbbc94f693b3666add5b6ffc1c786252fb3ef8c0113a9ba56f312b519254fe119f162c9ff9401f204060a70fe1b1b5e6cfd9b3b5eecfd9b075e1cdd4d31a1f3e29cdc5c6935952b9ee6c9ce536a8e775ec4f064f7eb88e18cc0c9cc0499a99f7f63cae540c7dd851e93b5ca15fe2e62784977cd32ec67956fc83c402ab080e430474a2d62bfbc2e1c1336e12d4747f49d56c1d1e4a181da6849a03748daf5e26424d09c2227e8200ef54524714f99869e30cbd60ee9987a9f2e5a145c8bb18e4d08f60b5ba46f58e892c48a3d0dc9f02234bf1d377c3a7be3471850983f5a69281c055fd2cbe8d789aad59a49bc2499a94decd1aed4daf9ba2e50a05c7a58cf6907a85af1b9c82c83fb33a3cfcbe764282efe1c6a9ca7c492e615616adc27850b2719a63db317c715194754b33f317795500f8b532dde352a3201b76b6cccb9c934025359a7959ec9764b12bd9ace009c4f3a871f727b6286e5163678544e6e37f4d8dd9ea46e4f7135d7b3e476fdae04de745e76a27c8bdca0be7483cc9c905bc325ae8feec07973dbf73cd4c5420bd99d4b85569c70d2792bb3f7cac75f199ff115080847af8f399179952f97a69e7756991ae18afb7f6c3ac30883b80f453adfdafe5cb3d119a8b05c8a4d311c6a8d7039a663c37e877cb8b0c908a49cd97479f634a3fbb14ef233eec62e490e7c1220900b68cca6548201c8a764d81ba5d80f52a9e9b219fbe8271ac60da2ddc4017324616d1d97e174cc50a1e51cf6a9689e5cc7e2efe54d262a930eeeb3a1fa2283f15b4825b3018a8760f4f52fbf1cfcd36f07ffc2c1f76e0fdeaef4d5e0851400e8aa0cdc498df0fe6ae0d0ec7e11a3f8cd49bdf85b727b52421f8a22b7372932d598f8b0be31aed08a52c72d3180e5eb116d153fef885108ecd0e538320b0a818ff140728be6e548ecc3c9c2fcb716aaf125db5687a61a17ade47cafb6ae1ac714a46b00026611a06505624cd7464aad4765c2f5598cb2773bbe6a914f2f8ec287a382b8b2ee4ecd842f1c8a54d481967a34c3041707e696e1197e7379e9eac7c0cf911a264c8cf75344dc59cb656b268d58cd7c37e8f5cc4529e964874a6bbc2c283e0a9cba25f4df2bb65817aeabd430a8275cad59b66554489f4c26a6888ce7a722e577ec05f2f62d4f41ecb36bd4864875c2e4e8c3b9a7e12a115794a7decd023bcd17e39b6db9291229bc19273cda9d5fe0dee8ec5b4d1baca45145aee41211d85498cd808ed6e24d6fee86b396bfee327cd8dfc524055fc70c5defe54dd0fd7501819f4e70b0d7126ef3a8cc83349e522e94978877655bcba928d37a06babf350bc5d5bb49dcc19ed12b9238d1598ebec493c1e6b7901b54f21716b11d95889c6e9cc65554817e9831caefb593ee1714d8abdc9ff3ccd3be344e4dffedddd0778f5f578d2857f0b5551528e244e82c5c4c97d9eaed4b1d37cf0cf3f9fb713f7344c39d10d97e46c9f98578da744ecf899608e9451fe47194e389c819712fc6f52690c1184926d0ba9c775c6db22d5ef80c5ae581efa9f0ce29aacb2d615af764328a92e22950250a10c57f923ade634621ed4b5e14cbaea45dd616261ca84a85c5f5e70b0a9cf0111f90dc30be22d9bbf72253630d1c0de448f7ed6a1ec407cac81ab48167c7481b33a63437138cd0c448ee316827f2c83ea5cf1714ce547643f8981b97358019268a938f5f75c583f654e21d0b3ac966e01efa3c9d80f3a30be26bfb34bdf9e1e2bc5c6094ffe40274bd01fd76cadd3f9dd5cbaf671570b7639859c8d6b77d38e0b8775cd95fadfe474389e7c322a59bc23593edb7efaacfb669dbf25a0937e030d87f6163cced8d69bb71bb09fe9bc9f7d5e94130a2510fb12af8063f512f7afc44691d2417e34d70c95e04770c5a4c676baa8f257fbd4af2d7efa9456f3c88f8e77c6c3a7184189e847cf25121274731e896b08c68077a91e4f1deba27b97331f69be01eaafdf49a94385a5064fae9c8b102d356b2da1e52f8137ce06f4a479970749f50c600e1b409aa2cbd3a038c09ab7d078ae1dd195cecae82bc0d589c992f0e39c4c9ddadccae842f7f4f0e25c47c57c8e639e10bbc4d3948c2baf1bc76c9a4d953bdc6ef235d3eca14d3200c625c7363b67db5a4dffeb532cb4ea82db9b33f8a8c3bb045e1c316a78aa7102b9dff7b0ab1328750a9786aae9b0ab12a5bd4fc96755e34fc9b195ee4dccd8e1adeab61356e3272e9b45381784a35e80d309322292e43fab8c2249a7e09a9a956819a55a08a9c575a49d1ac056f469516f522926b887757fc8fe067eeeef418784d9dfe51a2c443b5460e49b5f1df5cfefecd93983fd62d31c9c91a956fe9eb449bc44f58c8b140b8e7a7ecb54452f3dac2cd50abb08dc212b697f752990e0f9516b8bcb3f7f28b0a17fa73eaebb68fc7d4d70ba9174c976af99d562aa35df7f6e14099b5b91c5baec634ccc71f5e2faf2afd553b3a54deeac766e9cac5eecd8ab82e92133ca250b2abee3edb402aae62a24600d1dd903d38e305575b7ecb17b0e5c7a685a6a2abbae70656ae78195a0bb7bf98715fccf18b19f7c5d2ed2f02546af2c561403f4cf7c53a172e51f88faa29880d9d9b275fd838e81ec049e113eb2da6b7ed0a6816b93896f64d31cde9d603b427e1a5a5d6c4464cbb73b3897c25ee52c4a882597d829328b4c9f33252e1ceaa29304b7d7e2025a2fc39ec00b97e72d0b59f74f690d86c1f6be72b956d6eaaaf5041a1d9d852353c5ccb04066132fab52888959a74522fda5706ca2ccc9076f285b7f602c643687997bc6f17bfa7cce32c9505b3a74c29d14ccf7dcd74636777cb2cf4f10ed057651a4a0a2b3116a8628089d67e71f2b15fa83682309b6aeb561a3d19b575956925de9e64ba36f4f88ae1412744bb7ac0974b8c91469e192e7f8dd6b4335d94338780862bc1b35473d79c29b6a7d4eb69e3a7c13d793bd748ef9c64773d33f01146f55e75981437fa6cbb7d25633348779b4fba65c25049cbb235dbf432dae51d13b0e877f81c13341fbb8cf25ed680098c1dbbc88ba4dbb30451b10d3b1ec2553b5275551c73ced5748fe7729c52cfa869059a648b3c2ba2411adf2145e717973ed4b9628f75f645f5f1701fa7df0895f9ecea0509a6b4eb35402b38757e86eee73d3b6c9a6347e5aa1f320f35c047a9f6518be22948d80b6701aad462726d056082552dc54958a8b5db28c372955be49618817a7980e66b013749e954a25573dce5b296d23d50ae9ceb5f2b5ae82295d4be10a68795be5c95565696297c41ec7edb71a36594ac8119371adb0176309189abf1556d66e362c72c60931ee0b8978cacc87cac4729f8451332b87627d7c0adf8e006c87a63e56632ce509eca40236db61af94a0ab69b773bd91f5e9dfd47d6d60f18ae0a49274e2d917f4d4c56fbd7f8f8cc59153048725e6c34320dc80905337cc20bfbd7d8218ef58332e0d8f3a868b707c1bbaeeab3c2fb853bcc185aa3231239e6efdcb3b6d3b4497ab7506de8d670cc042993a82520157d31edb131b1c17de8c92e432e492329941daab9f30212e4b0ac18147a5955b0fdeb0a9cab3695242c2ece1e5e81897dc3b65b69d35527f97f47dfb92d9f4652702d9c9be23c41594f131134c39a29ba5002a2f9c07770bf979e9066d8397453c76f4f5737a9c365e10bdf6d4b6b9733d25904a039ad95ac1cf76cd7f6ed9deb97ad3f99ef3f0f12dd23e6f79eb8579baf4356c1d8b2b60bc8df8e57cd64d4dc22d7ccde3a5db73a328e7a48e3eb9338a552217172ef9aadfe5cb8ff002bcdeb52ee4ba975fd23c415d55b525fe2ca2b61cfb283c2e67c7161f47111fbab9f728a0fc6ecb51aa1cae76183fa640b5716f64d895b0a65d74e5ae0c91a15a89c4e8261878c5f5be9a47f7359e4976e7a4152233f540d57a6c5b62e7e71df0b5474f0c2caf687a6d37b84ea706826af9c8f6cf66879e2a54edea9ba8bb21d53fec8c41c4f2a50db8357eb6fe877675c2e1a6fbc6df1a48c1ba09eae988cce5e99e5d3290eac0b553f19c637f4683766e666615f0e13cb4d81f9eff348185a5f584ec7cc9aea5cf790dfd825929e1b23fe3bb76164dcb03032be8611e370b7915a3431b8504db03366a9d5e4231f957983096f1a1f02275b6c3f6cb1628bfd872da63f12c21c11b11d1bbe0b0a2fce8d1461ced47c11bfe0bfb1a2149f92fb8b6c514a7753a6a66087dce115bf1fe57107bc5ff39fd779d168787c448617b9f47756757fb8a38cd7cd388347938cd74dfced48abe84736544bad963fdccd57b2c2cf09070ce668a85712991c8eb4a4705c7345eb43e89cf655a80097f49490ba0d68128135a8dddd6ed0519921f2736407aa23951e9d03b1180b5e5c4a107a11563c1bbef8aae4c5dbe7a8930c87427f591ef639f6dc69b3d241572a58b59263b51841be1b01e1964338766971c8230e1b17a8e2141f12af040858e68e0a5485c9f5ab55caf10b369b6f8294a7023f305c7b7c748591a4dee706de9752858d0aa340987db68d475111c7f40eee6f4d70a6d7ebd0819140484316fbad4c7c80450e46da2df058734ea2453cc6f61aa39ace79cea8ea26667b8d1a7acece26118cec74db6acaada28ab04c866e51b75207f2c415b4e4090be84b3d8da55b7b323b44185cfc402d78d3e208d1252c7963ba69a5d748dcf95977c6b68eb4eac42ac04cbee9955ab26c93305f790843eb7c2bbeb63279854121f79ebec98a5a2bf6b685eebe33bd175174f1297538a4a6892e9c31a4fd325d992813bafa5a46e5161ed5292f28415fbc20f0639c93bb9ba1036940b3b102a728b00fe96ddd72b5d2cd5d2647953fc2776bdd48d76bb2402db1fd621adf4a60d32e083aa9d947f7d981aa9a87e9c5aa44f776af3fb87fb843d9d8693ef6ec8903dbdbc9cf409db41f353723201def7e155041db70bca43ba812f6770903596401a55205f1163bd6e263ffcb13dc7057bc66d4cb09396ebc8888221b3a365890103db1bc66a754b33b729f57d1151da4626fba387a1cb12acc10fb30411c430eff7cf2a24f4f1c6c2c337acc7289dae282b3487aa165194f2dce588432a41a57e80002e012e3ce54501809da22680b8e259ca4031db5ec75e8b606a2295348a0343007e97cfc4a270fbd37fa6e38811a3dc7ec879a4bd45ceb3d13c9e05e9c0e99ed770f96712ae9fd43f611550f1fd470e6f8ec76ecf5e306d058c2683dacb7445d3412d458d42a5f0761aa9c3c77ed1230df0ad012222bf2c99e9a402de810bfe2fff50a35a617355c1f388ae30ca988a6d09e8c233a65408c59e43c8b7a98904bc00f9db1cf1befb81c31a103fe2dbb49d86d9df9ca818c952a6f82c4a767b1c54d07eb08ddb5936c1c0331a9c7785e10fa26486cd6d54d90666802356e09470c16d8b9c2ec3c0d4444589d5060822acb456b4d9ba9874330e324e7ab3154ddb695a84dba2ab8cf76d500f2f7c2246cc3ecece74a3b7bb9d2660eff44b7fd868762745d3483cf1fd3cd22e926bed21d6987d466754cffda89d8e5caa12d4608479edddc261c6499e4d658aa4a9b9196d3336ce732d4f7f8a35be042f2359ce1df945931ea902e2a40f743a66720b21de56362114091e2b51dd7410bf60c0649dd3697b7a700de3961697d8e2d387d544467db9e97f71d6834505b1164a73ac75a461b7f6edb8697ba399389a54653d376f8030cff49852e1671e6cd382e0807adca7799ed9c5cd596abb061c9c435efc3efeba7e835cecb9421387a4ea40a0cafc6cc02552aff90262e72156d43d51888cf5c7d202fe5c26c573dba51657b4810a85ee77fcc49ccf4b9c6cd8457782f1366dbaad0fcec0516db3edfec071f2e3bde6540f097d4140defb3a13a353faf0a0ca72f0081e730c2cd3d780e6cebb03532b78619b9c24b75e6aa6540240b27bda976a585128bcba69dc4aa4997ea14eb50d79842dda55ff9dbb2004fe964fe7413aa2c3c9ae2d2bc492f15265402462734ec6170a91b1738eadac5c0ec52a55b914cdcdae44dd37799c77f01beab382d9d596a7697ce1ced52a867308c45a68582c8824009fddbbc5fea59863f6fbaaf4ffdafcff0f5a78c24e70e6bd05cecdcf16f90d258467a78b765aad6dba8a5adda67285537730b22ab56502cea6b866e8a3006551790097cc72f22e5c847cacbdf216569b730bf42ca5562d3a543cace5772f9ff0a521eff1e2917da32e32975f0f37b18a4fe18458b0afb6b777aba7d986b73a6707cf47bca849e3f8878223d83284a5d8eaa2e1fd2bd953330592d7381f3ca3633c30c1839e355058b3d7378cc4800bad737d7a8b459a14b2d5dba6e12894d73b6f9dd019a0fb5dfbd1de124985ab03383fa29a12a7d153ecbebabab595633a84cce6b984075f54e60c36eec1b79c3b6e5331e55fbf3417a580a6fb43241fb12e6cb812944fa739e4810ec7523b688857ec607c6c1c8f2523a09d4bd68910cb5481d1734ee654e293b2d53aee5d90d18b7cc2aefb45ae435dbfbdf8803d12b8dd6a50766b581d45a7683bfa8590674a0f2534a6c6538b09c28dc5ec1c74341d524992bd56112aed6e13654ab535aa9d3babad30e3393cfcd244e4f318ea517df14ece39edc60a64a854081139a8a52eb810aa88eaafd90f54b7bfe4e3f39c9a28d06ee5bce519aa9b4abf6d923d36651a35523e31ab8831aafd61ac08b0182b2e59a89fd38ff9034ad13b61afc7fb0a760470176e7cae45c7e09d26bac6439d59095eaccf6f6da25a336eac8bbf10ae5aac90dd19dcbd0903963320cfdf5a9b61113d9532df1fc6babe66593a26dd2093332467357f0c630a06bf9c52ab9e2f35ca6f4fa89845c8b45164167df55e9720ecb294068fddd3719d2656cd44c4c74d44b1d58a4e0b80174cc79eda40fdacdaa8fe22aed9c1ad96d846e67d7dd561fd3c372314005a80f7ca35c78358688d795f41812db5de824f956bc2497e33f271f8cc7df61eba15670f49eccaef6e05e6dd8a3eb416e3fc630d74de035472befb4ed0545a5dd1eebf7491a9f150a7b6457c63950ae31a3a9e7b2484236f17cdc878e672178165c157a51c99ad08adc1281f05e9731367f7eceae8c5907a85a6677e2e1a7e0e6d930840bca81f617fb8d090d219988eac9d014354b208a7bf83d706489c32817bc10e34a01e7173771dde375cf3ca39ba1e4e261e5cc0597b5d4760921588daf42dd033c0fc4ba1b38893a54eaf194931703074afbef490850595804e46c927eda2afb64beaba1b896dca9c6bac9ac33569e38aced20339c6451fc3b96acea96db78f1de5546fa2fb8445837a3b68213de4e7341b12f13ba0cd584e30d0ae06d57ce08db515d85cc4607e092b3cbfc10a8509d985161b18595351f31d7c38ad5aff8fc3870bd85aa5431f19621f7a89970363bd9b24f4cc7b1fd9f4ec61470e0e3c9881680515979e78a3fa082cab0505e59fa22dc4cb609bdecd7713c5f96179058aa33663b346f9fa0cd949c713f58d98e09e41a5e884b9175bffe6a3e7d99cf677f734c6a39259610c772b6e581b0a862f5e80660995df76d37f33076ac0fd55167bbe61be5286e9ea7211c0d9248a289f30ce87aa935e40ffe22cb060fc937c436ed9bc28f4f48962a71f89ff350debb529f419282c3cdb0f8136beb7cdc42df9ed571250df748da99dfcba129eb8d343715bd3ca45b64a544e67c28856846667ff178235fcbebba3006a6a08f170d566c301cb1c1f9a2c1890daae8e1d97358c806223cb81bc470854b0cd7566aa30f98c0569ff9d8c3751d82ac9c9bcf00b7f59f9c9b356160c7ff72348802a090db7e4d7d8c60b5845fca62d1cc864611430a6ee381d97a07c6f5e1e66317488c41dd6cdb843cf25befe5fd2f5e2ef0e54937fb623ebd1fe4bd662bf115692fad1466d4445717091672dc72d8aecb4eabb723d506855533fbae7a333d5dfb89fed76b23be014598d2579a0587faf2916e2e6f684911f0cfe8354c8b07c9eab525223ee7bc3dd8a120d3db186ae1b735f7113aa98d24173215bda623fc840a2c3c606ce476d58c6f3ed2b72696c776d3246f22b8b84551f207423b0a7d56c4343c6ba2662b2e487dfa2fea5068c6f50e8cda179adef795b2e3eadb43eb8dabadda6a669f9ba5696f64ff3f0fcea3305eeede4e8b74f2bac7f20cc7de3697721e52cd8332467a1f2f4bdb7cafe9c81d7331a6c2e3cf32b6619bb866ac3f7dbc2f63b72f65d9972ff870cd7df8953559cd450466911ffd6c9161ff20f948a4027d47a9b712e797115122d2a4e97d6cb67a2ae2facd4eaf6d7a39e8ceeb72f7010368f8707182387e7ec64ebec6718cc01eccf602e557dbecb59a32274af6649704c637a403e35255bdfb63adea24aba0d2cfe411bc21f43038f5c871fd4ccaad8fb1db2f65247a7be2d26d994969c6a0e80ee420fc1b222a74847f79dc2ce0dfea211b9a867ecfcb589ac1d7e4dc6637daa8b55e14d31e5e31aeecbbb89abcce17e5bb6f700eab44a2e8e897e1712ad7504233b97e5b195ad95bf1a2a824d961cbfe197391ca458f5dac6482445ccf2c60d6ce2d4c3634dfa5a885e5cbce7d2c68c9086326f0be739c8cb8459201a8b9defa37923541562653926330fe74cca49ef6308f84550e1e92e6c37152313269d351e143f6c9fca38679d2d5ba3d2e752914aefa8565d31baff99a1f89103b588c93631b3e1771f75d40ba7f1cb72c323ceaa2cc478db5fc1b344661f65d8523b35a93757e8ecd9775bd4171d397d9484e74773e127df0db4c52e88c74a399dd6835d4f526d521a89414a8b9ce01c9cf4591fc95546118c6cb9782d8b6528331b0fa23e4d7f64c67d0e00970ae547189116e0728fa582a8bc17ca30f088b7e14b9c2d434b88b837ccc11b3392b974726c11b51041df4847537c7cb24e8ac6d7ae4cba542364ffdfeb29b761cb2f686efa9c78b4fe19cf54fd28d7ab14bf08420c2d07cf974da4b8ce083ccec69a6bdb3d433eaaba4ec6cb6dd16d25cfc640670aa2d8e438c4d0270c6299e63aaa727019e77e1af5e2cb350338bf1479cc746583872ecb99d87dde85b5c61a0c44f47bc07d7a4bdf401df21948cb4dc259332dfd46a4bf02e6bd56dafce7615ee06351f8cc7fa3efbae367a022270921913014ef6bfe58f9000bacba57881d9051232c02de69b6a752f3ab540177d669838b2084ded116edb42edb0dd424b7c0109fd24e3b1d78f62b10acd562f7446067d37c85dcf72e86619efab48aabf9f2509b09de5a3522f853df4754e30e290aa7a2a5da9b7da8d31b7cd48579a115bd81d99d327dabeec38d2fd9f0a40ac10ec4bf55d49dddcbc80a2d8a7c05f303b842aaa57c7b30161cfeb29f0da9bc5498132b340249d4fd4dd81d0fb65c4fe374b3ad00a1dd392ce4e1f045ccd5e1700b7710bbbcd453d17f030255dba780c4967a53382e3cd5ad72e1aacd8603a6183dc4583131b0cd1e0530c003cb1f1f557209dda253eb1abec3639967e0cca3e5021aa867a2707df8c74699d44750ef518573d493c6ff6ba510d626234d5e34690ed987b0065901c90ed28fc901593082bc7803d251a7bef67a2b31683c1f93911a3ec9cbb640346de916cd0b5c10f5c76e03b23880dc5679e27b38a65ee1f71bce2c660636aa92bbfa38ee9b002e2ba9560e7c2fe0a3bbfcf712a9e72dc90cdd7c427471c6fcefa8f90325527ab91473c4b7b8fcb07c5bafad0b4eb0984f7e0c3a4a5e3c3fea08f71d72185b679441f5569e998fe8fb1cf6b192b9ceed2ecf5a9103b3cc5522f71136f1d298eaebb7ee7ac60edd62979fdd1ad9685f2aeb9675210e29dfbff1b780766c15a1aef14f5f86c80581a440b350fef64741d7827a727e7f463e09d933e016b9cf5eca2c18a0d8aaec1e2a2c1890d0e68f02d8d77cefae7361fd75c1f124677722bd698fe3169625108311e6ea85552526e2907f23b63b2f0658b0bdca7df5d7f7c1258094bf4ceafe5a19788767142a4f01f01ae1323d3b7a79bdabb761ac47a577a19e0d050cd0fb7a6009498d1732ce3634df069676fe4db1cf76f01fb5a1b04987639baa707acf9e764451f3f1cccd81cb8928d0354b6a6b46f7ef8adb69a83f88d0e29203ce83ab4644751d3f92dec2a95f5096abe8a28e9fcc700c28d8ea0c5dbeac24583151b6c5c83d24583131be4bdf8bd0408ef12e2f79d8487516c87465c91818d820f8e3ead0adec9df7f17e81ab3d5a4e205ff67e8f7726c30e0af81bd2bc8ff4e42a3bebeef16c49383581ab53d94600b7d8fe00890881053ad2cdf64294234499c4507d99e32cf9efa09d2e8c35d36341b275e0b16e012b8c4694b7a3ebad3f78aec6ea1ddb1e94196f3081f8bb7c6c52be0c94f659de4796c262efadb1552b11d56b1262054f9cf9e84858f9aefeda90cec6e30995e71d691e3acab9330a12793e8f6e045cdc573d7f8e67d2a788c0ee08f1d99c978794a0476aab02c04a51d1e38d84ab4532196a64301d48ab20629e9d4fb8de56c9b3790c248a67724baab30369726cc2963db8a83640ae3cf10e8679a156c9839cf07d49cbe86d43a5d3c1a237d059b69125486ad6c8aed983381549eef8f30eed220b55989f9d4ad805c0e9968b94d7b9b741f353d47f035e3a42568325443c1eda63b1f9b9b4b87250d7e6ef0ddc1e566e3799b29604a3fb3a1f901009f47cd44c65c4f20268e65f21f9c7197bf6a0467961731ceb878cb4505c208dd0a3325ac8333f9c6696c6c27a119600c8065a7bc1887beb233f4f45fa1596b75da7363565abde2fdfaa999bcbf77ef5bde6b2317eac576da566a50a596a506358c74d636dfb626235da8c1de3f4ecf1939406aacf17036a5faa808f55151ef50ff7eb02f1b3b9e93deeb93dc7a0805e1bf5b143581e2653b09b34faa2979f08382dea0ef777fd0549f5c8e1a7a00f5667b4834f048cf446d7723568f431769bee63404ebe64f3b279ac7c7da6cb5da6574bcaea17205a4e65a0d89f556c2e09101af8c01143f3cd3c04b227788ab5c9355cfe2ca0d16a7387a8364a1c803f1722991d46b2c3a5426ba7f05d3e9f170499f3fb2a119e976114b3794e090212b699904041a0e04765e20c55587a152f5a06a97d89846b0dc92e50a99fdfb1fd157bfc8ef67f93d90dfdf2452ef497e7f954ff4e5f717f9fd28bf3fcbef9efcfe24fa4c58a31fc4f7b123bfefa5cfb68a0b6e55f4c0f65cd6037b55d25b6d0957516f8494fcdc6afbee3bae0af669a4559e4f7f6cb585bf375c9dedd3b105475c1fd9d781d77bfd6c5bef745d2a7a6ef5f993951d37faf4c95eafedf55cab15af97bc8e78bde0f59cd733be3fe5f584cfc7bc1ed9eb9585aed3a76ca05e0b907c365befd4e67e756ac18aabc7460c89568cdd41a93e37d12ad1f5774c43333e60285042202e8dfce47ceb91e7eab12206b737dfccbdaa0267ed74b48e4142bdc4b55ed4e362ddccbeaa4857d8a2f9738d961b33c78fbe6d02dd83bd61be8f82b650ebd9ec5a0f6648adebd3503603035e121557779ed80d435c157c70af84355beb0c14d7928c4e1d7419cf07053c5f9831e5b544c3a5e6a6c1a8df681b5be194b2a7c028f52808c294cc3496f4da4cd5445250376368eb5f66b2cca6d07422da43ac9372640336bf06e5930cfe57f514e3ecafe36ded51f14d0c60b6a644f3df342e6fd6739909cac84c403ec6ae13185e8ceb6d34f591659d3ace86f0204b6601688058cd1b2631602d1ac6c751962447fef3a57bfe96d0a737d7b45d07cbd46bb0604cc50ed23c73f80c7a5b3d3a4736d16884666fda63e0b4c1d28390777206530f90b7134fff9339d2627c04f6df6bc97c2c1dec34ca08481e970c1baccf529db4da2cdad5314123d952f63f1b33fe95555070601a054f5f4c86d4e505b6cfbae6d37bf528dafd4020a6b7e53ce8b5b6f827fb68da4b7d98816d3d5e1f8493635b236933e241382e9303d08b6015192c7153c0410d36b8fbb495ff214da88d4aac0e20c4e4c188d650f3730c1df8e30e6fbf6da737b95c255ea200474debc047fbe89c0326be3e6972c9cfe4f535427b526aaeabd0d28b0da86d7a23ba79f9bd15964d4fb3c4d538f3ff14ff5f67bc3ee0ffa35dc2b699687608d3921b1e0f98e549931d1e0249e86984952503de8f5602deed25fe4bc3b679647ec3b2744c9fb3cad24f7498da8b3eb3cd06ce546997fa7a67e2b73e5aee6fe404ee068d6b70ca3b70ca0b384d084e0d1f9cca48ebf45899356147b6d08459a8174c20a427405ddc11867ab3323e0496f487601639b3d9bb074c53c83e1993413f6f951b50d751a6d6fc0da8d189a5ea01c77b6e994ce377c08110005de7d1690888fc7304840c571e848c567f0321274046f7ec41c89be9d5b08a6057092125a607197b8183f9c60d196d031cbe7d4dd486bbefc89cf726ffdec48b2f2dba19a77f705d9618275acce8440e29d887a64feba71474769052a266a92eef77ed77e9807dff370a8f9e1d495293caa8753976830b4440ba2d6ebec97de6e5c11c5c76e43d7b701985a122316a8dc6ab324ed3b96c12a0696743d3c434c753c28ca84f9ecc3f6d2387683df70ed14eefd6126b1e6ecd140b38db8263d868cba7cef5fb504ed6b79f4b0cbe8e842122f59b8621c2a3bb4fe894bf75e39ff1fe1402ccc02d007506d25359123a2008660033918af462963e31e5e76c4f7deeeeec7373bf05a079287344fb45de83dffe25d8665654d2a7111b0fffce07db11c1564284c5ed84094811ed7901186528042a0394eee2dd3d61f18642cc83dc1d5bc1e976cdca69f84c0a7ebfbf8f65dccdb654a94aa8ef6a883a44eba1ce3e9a8d7ececf43e1e03b056e3636b35f461857b12a7d0ba168dd40dd750cb08d0551fdf55428567f3e8541668dfa892364377e3da0d9cb1195e8ce503f34a4932f3b2380284adab664478bb76cf9275b365fc3c960b1f6b7ac77a655593ef9e0300db948acab672f9dd06b6cc8ffb3ef1e79c5077be78832365622d22bccd6cd5e8df9f2e27bb6639a0d12431f8756561ed9c6d0d41b47d5cf03077707d98e6913e21e93776bbf7a374312ff94ed982f67dd911ccc7b61bbd30e162fc6fc908a03cde6f1c6e38131df8bf0ce38df78dc33e66b196f176ebefd5a71769293933ffa7509469a9963992737cf078ff67e4d4fc0a91ff489f7a5c4a09998bd7be1c007c316dee08383def1c1d83ee8d734aec47c167c9ddb9b333db0d86baa4d5b16d7ae6a471037ca81cc721a7ad7ae520753aeda65dfeb892441d9e94320a1727c0db1a591966a4e6b3db9b3a2f74a97ef040c7aa2e9e959c6fdc58a35ab99955a97ba766ffb8a74d4f1ba6aa12723d5a1730fb6a3b9ce774dd2426afc4d7abc23a741d0ac8104231460ec9cf89c7f5b49431438eb57cbf09ff4f7124483a9415ccb9e89340e7d7123307556561c49f07d59cf61d3795c38db4ea882257e0e9f92d87bc6760975f907bfbbaaa4dfed3caafaa73c08dcfd8579cabeab958189cfb8db4b2342c986fdc4f7b7d2fc70d9fc68de6cf3b28178b8df881b2729d98ca1baa139379f49c51657ace0cab182e34598e0f1c6ca332cef8971bffb64dbd5e16a2709ee466f0235fda462acafa2740c40db7278559092b7c59c465a3e1c58ee8ea43ac362e305cfe8d1f574ac75e6003bd3c9f0544441072bbc8766a6df212b35834992fbb45d2898ecc0bcc09da15cf33c9d1a730ff5ed33cd647a3b5ecc8688d69ab2d0e0beeb24caa634ec4638794f4b2e7d26495835d62b64387caacd45cc2e19fb8d582cdacc3caf82332b6acf3ce62f29161bd8439e077e18ea23db1a26c60b98c8d01c91ad8c71016758524e8cdac75f047e819c84d957f3ac663fb3741678a79fe9c9d3762ecfde122d4ede12cd79d1e077eafc4eae0c8e265f019b1421cfe4f81ed95aeccab97e8a0bd8470e70763da2406d49bcd2bfa9c3867ebbf993efba5d198642c377727427063b8a048134ecaa9aa4ea7875c1359e2b42e3ec71ed1350caca8e0143d41b151874513c3130300e2ac9c8dbdcb209bd3d6b9f7ebf65352a070a5d88445d7795ec1aef2d08716edb78fb0c97bb135fcc35b37df3d02ecf81722511ee67a8c1c4d3fa33f1e5bb329f400c243afcebd5efab26df0b0ca392ab7611576fd99d56e607643d71567e06dc670f5a996f57bf7b12bc88513c5a8eca7cf9e5ef77717afec971ecbca1eeb43a358358535732dcc70d138dc044575f7be786d1c53538f39c6b26d1021ddc89ef58e97d24b85984ecd77fb0517bd15806351133fb65b932e236d337f83990706e7a303c43cc95de36cd8bde5e8f0c49a80e189365db1d0ae6aacfffe84ffb7d4123eabd941a009c38fbe382379389449e710ad3bcd75b98345a33fdb03fdda13fddcf10adb176477ec635b03d2cbdcfa4d4cdaf5300d8a0b06e663ba6141c751da6cbdc1aa7f229db5355fdbe89c0a9ff4c52e5e7364cb1243ab9d2390181fe0e496a1ef748342725a143a6559a781800b7ce138810c53320e7588342b4bad04978c662ee913f082e44672a7e29c14baa6659d69f96143306b23ef785b02d99d853e2ca6e01f555a955b33a0d3d9d0a0367f73ab3a14dcec44244c77c69b4c6d058db93fcdab9b4fd2c17bf3024ac40b4baeb19aee78b30db365f27cd0af4dc439dff40e77f9660c648af75750f9d7f634f75fb893aff3374fe6fd2c02c75c9041f0f73ff37c3dcb86196dc30371f0c731d0fb3cc61d6dc30e9f2de5f7398d2c03473a65449c2706e563d0bdb45341124d7716837f2d06e55abd043aa73fd7d76bab0a7a9b70cb44bbddcb129e6aeafb66959cf25d6f4474dec5b6f55491ef67d24d1e0afd5166c6193d07eaea8f377b07e15eea4deb09edf8ba96e742fb6ba72478c75958e58eb0e62dcfa56ea8abd2eea89c16ed1138b5df5b398ec6a9fc566b7fb4233d81798c1c65f61066bf469067b5220cc5310c83e26b7d0cb01ec609967d8c1662fb083e5ff811d6cff0fec60d3efb083cdbec3ca5a7d132b6143a84cef204eeb9f26ef62289c0ec546f7701cca8274e663b9be5f8cb5180cebe2c1624a531a025fec2ae6b51be21043ec8d6488233d3130bd493ccc29ac34635e2654fb1675fee4364b7403291ffcaac039a6d270de0b65cfeba27040f055f1e0622e0356a4172780899f3e23374edf65368e31b56ba1ba57194457ab33bb73ea922294283577fbcbf5801cbf57a343365d50c489ddcb1b8134e4bdfc650051fab9aac34675616a0bd6e0f0eac2378588c529d027738e43fbb697431b9474e69014227c25dbdc5f5065209e1f0bc9910fab5c1589a2dfa261109f7d517ead68e3596e34f1cd58b883de792c2d0779f91f14c0631496e1efcc7a920c55bdb25c7f7519260d6bcbd0361c50f194119fb8f088693730fdf72206d02f7100070e6859647d454b3543194f2b561f95e95ed771ca24b533558cf97db69025db36fd2503f4c5d6ccd70a56ee710a62f1d2a0c823a6c9b93e90861cd90c8a71f5748e9b3daa4066477f813c3eaece8f09751c83b99a556395570881fb9d8ce7db6841950fa30aeb626cead474332ed579d0c3a3883fd46b2df78cafa5a3d189e589dec15b88eacaaf59a950b1d22e1e5f29f195c53b6127544137120aa23a47f9df7ecef6d49d4b37e565855fd196b2a708126d30aa3913930f79c8fd6a4675f7d9a62784063cece02aba637e7efdfbcf075e790a5a352835d259b39af9782c0efbb054d6d558da9ef26ee125bb9c1bc82eea9d060eca90523e70c5702133695568efac6f21c5d5184632672a97a5b06b1271fa35c8c0efbc9f63fef9115d07a03be57271aacfd3cf2200168fc65bcda6435ed5a1c5c49df601dccd20370260e5bffccb25f959109d40edbe5d5cd0b32870128628320efaf3251732893c2ea48ad7fa3580f86306d7536db21d734f034e90e84fce5bdf21d45784ff9543a8a768a147d99b30b9973af1e92d8fb25bcea2b16e7cfd9a0dcd8f36e7218cc94e07570c639476160a955a99dff88d0de691e5c8d67ad22a558967375ad5c9a7afa80938b26a4cd9d91c25c577c519e0baf12345333dad254f62e845c186f1c62029acb38ec5f0e679beeea9cd2b3c8b42a10a4fc539897d6ded575798bf30164e19956135cc034bc41ca5ce4be03b4b95ead878095e22862a3b3f463e9b755d5a91387e6ecc933119ebf4b7e380b91dc76cbf29ce90ec8c388141691bd62cdd56635b5653d599d7f8c8e2354068a08f6a23513427732a0a2f71360549f7d656ebc03def5a16da3e0f95c1129d623de23ef8196f695b891bb0d9ea9f65e7246727fa94652ccd4ebf6f2c7e683a6785c9c2d3294eb006efe3084a8b113da8210058a1af230e7ff7f182569176b4f60f325423835bfeaba474dc4ab68e206ebb2591b22bd48d930fd89be6f35c5b00354abd02c4519974042a924b5ca00782d698a99db7cbe32612f65ba82bcdb1d2b442c31f79ec57e698ee68b015298f6e9f536a7f987b0507b896ee6bc77489a40f6378fd945d77765f0f3fe4f74c6a96066ab6d2d9b6396a55754aeab69abac065915018797b74473a8a8ff4d444d885479ef782b9e4f9da1eaf9a8d137cb513e6084e5063e77f2a0e0b7624e69ff68a9ddb058282e76d293d7da0c3ab4387b7d245fc7883437a6e85a250057b06aa9a111af9528b9a803e133dc8fe379a384c918739bc2959220d0fd0987d95f4548329c73a8b982bb3114b6a21cc87dd3a9c13dc5a41f36ec57129a7ba4d3231b892f67fbe7e0773726b25aa117b61be4e009a872851198c75055f9fe8d8924caf4d5d44172f2541c3fd92964403cf557bbbb9d30393b8bd373c1277b11ea675b1148ff6fb6d15cef4bd377d86b3c8a723ed2c9d734108af12d2f96847da350dbd0c624d757051d861b38615e0b80e3f6a817c78c7f70f9eefa4871795b8e26d649cc1568b7a410af13c9e3f65fbcaac75fe13004cfe050d290617ec61e55d917d31179e8538c45baf2ad6c0e5b62d12ea9066702da9bc5ea7eb38532a36da1c215a6cd7e1c76f455881de928d4e2b93b005e795f1f28e8e93bca315b38b5ad9f738610e24cd45845a5c730608ecf3c821b9cbd3fd6e15caf3f22a8caf5fec0a0c5cc94f86c71df2ce4420869c7bafe8f832621e7f79b289e25a15a62fcc44a45d86bd508535ac30227d276e1464bd21f1d6de3fc8fd4e268a76f72a0ac6bd965185bc3b122c102c7419c7750d6d2f9ba9d15a237404097b9954bb26f54c43f88a97fba0754cee17a7830be2b4d32c493fe3b8d9c96c75e900337c494e79f5c80c84f2dfa8c93f6e378dca60d9a77a04bc82fc14c1482f38ea8cb72fcccea5f25e752a96721df2d0b8fc3838d263de7d482d76e416dd15cb1038f9e9368dcc4d9d1f86b1b245b6f551994e36f6587d48826fd5cac08ba89f91ea7f679308923e3ce6d8adf46abf91b0c3133addcf33744fcc23df643d1f57f36bc37f6cc67951eb31cfb7e231e10b5d384dc5183fff4d8c8267f0b6932fc8ecbcf4114d4ec612c4f3f6efb2331f8dbfb3d8fac767f304f0db581cd22de8a40cefe41ff0057d379827d68d562acf21e1b3a15ae904f6ea54438ca8e37132f83c1e707c689ae9820976694df6cd8d7f9a315705151e458ef0b2b3d28567ffe2fba8a2ccb32a9b1c592cb6da4a9290a11ef763b824673d64b9801253f9af813969c25a518e1e0bbb123c223b8a7a44da4433d21be64d5c6c0002084b747747bcfb29d1a3eef868c2b4a0b965eb560251cb0eae989b71cd579850749edaff09d2afa8f158a7fa5d0892a3e75824af6075db70fe804f8bc0a5f981d4adc208b4617a548ff0ba41837f7c4fe938b16ba8a26233e11c97c5c4c945cdcf80bec5028e6c872504c31c99b69e24aed9f8ef6fddfb3218d6eebb956e7667f163d8ae62a0a8bd56c340bf927deaa9b05dc77344e79c91616021c40d3579be543dd1ffb1b6d22e2b795b85139d1fb792a19d579e90bd5a81e358afa8dac7f5d396fb620580b9d90ada6b83530aee1922d4f20a04b84c9b4b4fdec8bb085e01c5c54795843aaafadd0ea6f45d4dc9af8fa7add8e75e0a8307fcc6a373fc720920e753962d157b14cb80efb07eaa445dca0c55ccbec91ae061183f8ca6ae14ac480cc5962088f297f49bf6d8f2de6aca82b902274c159901be4d5518caad83ec8b6abb679b29120433119328c1388bd46bbba1ce0e94e9d93f9f5d0b571e60c5b2b047de3f4d9135d8252a3d4d205baf25a77f479511339cf7c7bc2d60cc7c96fa780549fcf1f1722a0ff66ac55241a58b6fafa541fcadb2ff2d8a5ab7e6591d6a591ef7b03ef50aaf37362862c9f27da917471b3bb7b67b96f14100df1b31a7eb7886dd74395e53dd0c479ac578f8743af33a3a175845d31292dd8d959a8f18336b4163c12ea2592b5b17632841f17066f5b0c9f5fef444fd2c1a11f81849e7d1bba49a950c959ce12fa791636aae31dd0e67175f3af2f9117ded90a776be6db9d1b7d562db92a0707e2e9e04b02667b2182442d47da2504dd9728501a499964707b6902ad26b6556d8e2dcda320da6d74da6bd13f7adcf895717f2c41f5ffddb76902be69cdfcc5a103561322ab692e1cd0657e393388e0d70da7e963a5376e1c671f6b79586b2eca9a8b34f6af823c7ea02456e30ff3336fcd84ad880c3b1e512792849c64506e018df4f1800e17bc9a8268efa1396955e9f585021517b1d9f911c7cd9caa6ddb2d7ac1f926149870dcbde8ca99fdc565b897a804e54237080c9155224c514769c2ad48b4aa549b8b832498078e168e59dc5bb2a1e91e0fce8ad93b8f650cc14a70126abeb2883946f3bf1ccfebab77835ff9d3984365e3c5165eb2f91a8fa78a750c5e695faa2b005db09da15d7be716dd763962123c66fcc5af046b0d3de7ebbe2c23285d43776e6db6fb8af7dd363bc298fad51b3f6009dd99e05485e045cf610bcdc8975e34d1a491c19649ad53714ae1047654b48ce6faabac5622f6b2dc934b8f996c2c750cb145ab7c53a62691f115950e5edcc4ceaeaab1ccf88bd7e71103b91cdddb38cc6b4d8f2e575aa555eec509f19dfbe09fd8318c4c7b1cc93b8dc841e06f891a092fa8e5c221b0adcd5371096a5a4408e4f86eff612684570c583745081d6a2eabf4fb8b5b865b6b3c24ef819d50a7671f5ded39d42defec916432f675a6e9b956a90bd8ee62df88d40068ed7348d50124413a3aa194f85fd73b84fbfe570e39a2fade62d28e127a5e404d79b478f544c05256fe15879e0c973275016f3c48bb37f33cf8b827fd3aedafb98aeeccd64ce879e870a929890a36e88d35ba8366830f33b5b5197bee67f670369aa6902669647a88ca04eafb2204e0a20569612bedaf7fe713cd48794b0cf5ce86e2a637169563deaf477f6b5ae38463d001854f64582a32d2ce57714cd85e29c5b9724a70af9a93c8772e792ae78ba2a1fc845becdc98ab6d411abb42b4129e1922995e53f8fd77984f53d8dbcd81b5a3d04388c2aba588f554b640e796f8be18d594f752182bc5135ca5064a9119233e5362dd8b880dbb48ab27e648475ac40a4a6d2fc381039aebce5d16507510978c65daf4ad8a102afed8c13049113aeea4931ce10058ea1be9d00e8a6408287a31652be4050f529d801b9772ab3e408f949c4261dd78b283538cd8a8c366c0473702f978cdc25d8ccf56cff3b2de0749fe094865e97a83621a3c7a062771bee05f9bb6c5705038b6d9eabed3f62aaf7fa263797f08decb7075f15a5e6749edd8d1296ec7dc21015f6e2e42a9623accdaf6e871fdf864169cd1c52328a2929d78cff91422ee431407e63d75bb4f0b8eb5229662a051d6cc36b62156bf3d78bdf70f3d787ffef76b1f267bbb8b02720e8db5dfc9a27979bde46a5e0c0190ff9d7e259d7118ecdc2c32ca55d4827359194279a121f0fb2bd31d66aa0aa4c3d2eeb1aaa3d3f69af073815f012889f7cb45e46cd603b8323fa38997b2c83970bad24415098fc5c81a6429bf90efa6a31e6f10fe62fb93d3d6a56dd62dee7df6df785f4d576bc622ac03b43523b114808d58162437e0109ba5f487fe6eb8732e21b7430dd584ecc3b489664f38b9430b1da828a9716b7cfad9391172d89655415b6ab2eae940397b4654988adaeb0733556413b4d503aef3c49ae2f69c302a87cfc2adb4ded605eff8604044a5c7a9b847f87da4b13a0f425142a62077e52f5de9f01197dd678c278b3419d72b6abda0e49ff1b9587e8ac43614e810d0f630f1bce821436740aa532284f6371753bfcf836a4ce8d8f0de79efa346029e54b6ce87a1b46bed6695fa60a842ab3baa75d6e989b5265dd7c84263f448bef7f87150bfa773be686dc55c1afb4554a55ff062bc68a24cb8dc614e3c825dac03dcefc87a77adcb5525a945dc2387aca93cd63f631b6f84da32b3d17a41e8e34536e79caeb7851eaa2793162c69393c6598ec41e10dcd4cac568e802fdceb65ed1f0cdc643d8fb0df0c9f99334dc54d1b096dea00cc732a980bd8ccaad6b1cbe71f6c68153496cd333b2f2d3634a2941edc8ed66fbe8b7a831d22a50351c349632c60e5676900f22925fbb070315a819fbb4d79244cabff1aadaf1f529f265e40340a09caab494ae155f71ca0409d90bdde37ce451ec6dc5d315dedabf9bba425f7d1a5ed042117d24a0efd36f459f2b7238a33a8f2fda051dc735da0515770570fd35b23d3f0bc4a4f908a3e6707728b031266ed4b1291f9ca574a746c136d048a9748dfa8af436bc0b05bab198f44d9cfe5ade7137aa099c318a5298d228d86d960b9f9d34ea8848115726acccbe714872bc0b15b11d87a44de75d28e48d42a5c802efe6d943a6091ce501ce58ab767ca318b5e0a2775968a19206fbcdce6e33c317e67a01b9b4304f9ffee58d43f1c8ca4b469d2a10b2fc80c35a74ade7657a5ca50ac3548db6cde79b4dcf3f9337a283c857f9bb11422687d0997993e971328132cbf697d4a823ec513bbe9171c7c3d5f87f3d1e7f87904f914e8df2eceacf2ea80871bc925d7951bf4011c15afb8b9445c8aed5d0d5c20b12338f5127b893d5528c9751f4eaa9705f20eb1bcb23bd78180fb8d0a8115abb1ca4e0df8d2ab1784a298d66ad74201ae63b01a9e335959cdac573f787cb8b03ab5ecf7fbc7a1987e0b036cdb426ea52e59d5639a534514689153bbdc9637f93dd46090672587c0adda6a572ef8e182d0e1f91a9feafa40af95d825a7bef74b3d26fa0d691cfbd3be75ece83a607b8e97e499db30675c2def8dc84a2965debe54807e7487fb8dafd13558a3371629cbf3d3bdbe76883e212bb066541d9be7383c554b6782aac1a3975f7c62623d1457ce39809d26f58ae60b1657d895d0870dd25d796bee5d23d8e8f21ce8cc79c2c8f616c7bed4a2637914154de9c819398aefa872cd4f6906e6d17cc82cca4e99e6c0ee1872ded0174f72d66914465b77b6cab65901a7bb40b79bcfbb18ad5a53c056d75e58637476c45ed9812fd2a50a00f9f05cee6cc62df47d6af98ce4f133b95f82aa40cbe23e4c09ea66d5923083c87a18ecfc99352d3d659a7e48a8f5bbfa8a0d21a7a5101aa72481c8d5499fcc8ba1abbe04880edd598630bdd96ae39737aabd4ce18c2f65bb6ab4c4734b8f07f01e9c846c669c89b29fdf60e696ece7b4fff9adf8797c6bdf5a695aca6ef12b8c99385ca1ba9acad994a3814f9c755c5526a3867a4c23c919102510881dbb36f5a26a989bac13dd5fe5c9fa7cfd76ae7c3f6e417f021883ed2b78d815cebfdf206ee83a9e3d132a1ccdd9883de76c9b7647465da9b9061f93335b5fb5f18bceaef62f06ac038517f1767175ed901755547edd3b3bdaeb9bd06a48e5ebcd364d49435721d63919fb752d5f8f9d6ea8b30144ca6807b3b3868b1543d5c328042de05454bb7441e5320167a633ab274d3af72b80e3d73c164093fb1a9f019a63392b5799bb012f3cd1ec6391ea89bf5f051fcffd4448d28f5b4a7992f8764ace6005be93bbc65e8e69df693d9cd816a9711d50f3d15ee3b45da09f7dfc0c358f2361d10a70742c687f1ef28f02e7ab448871663db4ed6236ddfdf8c74d0e0b9cf0ed4bc09203b30adfe8d32c017c57e9deaa96c19379ad8b8b17ee1dd09d43ccc872065ed775cc37d2e6d39366a7594541db43d902ea272b4b9ae1cbdcee09c8d2ffa5b0107af4c4980a9bf4e1740de7e717a1d55d40cc79a409fb095eccf66196c480e2fbff570f1ad9d669864df89507bf87c77e37edbca30f71feb278f5ec932b7bdfe6a7540cad2c0db4c6e8b5ee5d4a25f53209abc509d5b2cf8ed7b3b558933d6fb7fe3ed14c875007816430d0e9ed4998f8fa13dcfb1e1f72846fe83d8c017ad5ff327d1894451c0ffedd90db674fc157be288f22e22a30f7972bd49d3ec193c36b603d1a956497f5dd77fc275cc105252af62548d2a8c55dbc1cd61ec344e972b042e16f90f5bffd1a055ea99c5f7964a50995e6b0ad2dc6fc37ffb81f6d5aadce6ee3e9ae9f6ba6f3bea5d2dbd8b7f4616028442359daa77570067bf771e0ea01d99fe1f9288ccd0d5d5d0292203288552d8997c1fe3289013315fee441efe843da72268a89d53ff2d78eeeee8db5d6faaf656d745d5d272a7e480323f0c6944ed4ab3d3a3ddc7e25277439e293b352aa8e9255926418c0bfae1db251e9252ecef71cfd282ddbdbbd549ae46236c55914c18ee9ecfd858e6da80e2e55403e61f413593698ad8c86afd13fa100a9fa8a69ec7cdb60af97f35045aa9570217f0ed34142936ad1cb5e2e78f08377c025e638a5ab6cbbb76029ffbafc9170152796c5c0d03abdec962cbb8c6bab6fac5a6c591126f12e421e1ddbf8adc20667e71ecc06d39d728d33053a6d31522d72b00748bfd78e89f7f66df8837078de5fff89b56b63e10a59ef709a8e44cc6f2476d06602c5bf6eeaa159c1955967d519d56946b324d666c32a89c3c9ab139a5cf933b193c2833f6359d074eeb20b719a9369d05023e23d0eeb73f3a462f2ac0a2f4e96c7e736da481faf556eccdf018c60a29a350fbebc1ce2eb443eaaae06e48c6aab1a00eb9a73601dddfde3c3b8a335d1d79e4265e36a10c03e327d3380cd2b27d722066e09df3cc16763cc5e1b62d75e0a21e9f700ed154fabd78b41f79532cd1fbc1f669fb1a9e7cf337fd0aa6b11b603cccd9e9e361226ea59ec367c627938c7272f26faaf89a01e1d26d72add4e884d36e3bb39d14a6def0f630c4bab0dc45d91b1fe6736b7c0c803db0c4071725f7255913d7915b1344bf3a7bf5fd7fe0a3fb393dfdcb7008c28bf94f4183a42bfba40e2e676bf6496d627fca8331ebb36959c89504531b64015a6c63b0369630f494ef7bb9225f4db7ac2a55a78c0640b687d8b0b479c2845cd880318c779670dd248b113adb3f495f3becf9e4595ecb1b77b38d26f6ad338bea08dd1f4a920a358d18c1910be83e1b33f7f9570ce3118cafdb9c31d96a8467cb44375ec4d21eae1eccdbbb7f9556adc4e73483acf55218c620fedd052adccb42bec27712ef17101292c46a85a9a2326d5717e9609f6cb41a216b70deaec98285adaa1932efbee41ef8c3e36ec9f010763dea3be599a3cec2dd38566b764eaa2895f5766aa9e36b458b98b4feeeeb865807c7179a8e41e239bca32eaa360a92f9a66718a6661f5235a0d4880251c69bde078bf470f5925f97a72f4fcb81396a9523e591814289ffe8e2a4bfc5190501af43a7125784ab37654293a86bfe895f377738db03696747644269f2c56b220b04a7aa07d6040914d247598cdfa1cbb08bbb85dab72306fcefeca6ad5e55b66d164665ec3c9a73d3462241acbbe4a30cbfc378bb6a79e903a8ec95b153545bf871fb7d21265fc5ca2558d4058e1c562db82b4b3fa5133a9dc37a7b5ab59cff28e870fcac2ed86844f16e461f88c744e2eb495bc34ca02fceadee8e05d5939de9720da73aae9aa6be9154f45cba0ff52c43c0bbe0e7d1e6c955d952529cd4aea4b1507926ffb182f7dcc9858b9df0f269633c1d00695bf1e4d1d005d3e3c69ab1100845865a86adc6c4e6067524875172f4b48dca714152476e283e0a818aea29f7c7d80c5ae318e31d296500a843a98616c40ddcae2cced444ca7f964fb7f02f07f014a297195bcdba17da0ca8069ace06979a40a00eb4c967a5705f42ed1139b695e069aac1d5999e429cd8e5f8e4cb7959a8a351f52f8909a430d1492a8bc3bb2bf363d4f4ccc8968e0a635f39d7ef88fd32cf04a27090b13f4fb6c8753cff07a7d9c2c490dbbc58032a374bc8958b0cdc794a1b1c18aa9666506fae5bd73db89675966c723dece630308fe88b3d4449607156b9eac4357695131612971aaaf93cf07ccfb1a2b0b7ca444b474fdf1c24f03aad515dcc3cb3c71c4856f929b57615c2d479c86d5efab198cb1a2b1f7a447439b85469077220dc07374510f76dad95bcb4a9b5fcb71e555be03076198ece1e253b72c8ff62e862bca823b670d94ebe3f6b5d0e3a3fb408bb0bf1ff93bcd8b3b2965aaf3f3876e72122af5982363e50b9530afccab95692b06676fef8f45942389733b76dbd668ddab59e31c1ecc03442404ac7e79193c15b7149ab42fea3c403a77c986d5bf1a38f4cae109f85a159e9e477c6fb7dd2b7dbbc273fc73af5fbb305c047c3625c1dd51527b036e808d042497c81c21f72515e9340bdd129e4575449e8f38fe0f3c75aba39675f916f749fcbdcb7c25950faced5df474645bbcd8c804681fe50954913f88244e918473193063fdfb2460df53f5f5d675d3b8d3a449286f1fd0b677e25e7d537f7c21b1cf0d791f6f5bacce8330ac976089161ca287b57d4646778f54efba9db93ba77b4a6f5d6a5b323bcf1726bb62aeac4cd4df8f3e126e60eda6acd6f6e46b0564c18664c45f2b7f8a1a57013677aee8a1e50c09e9473a0daed3ae4e8810cac80cd47ac6eecd9e78f3643955c8effedf59b18b205e1d62929d6e11ac06cb9bc3be65dfad2f36e546f49d5e1d9e6635df2380f23c8246fcfe62b4c018efda9bac813388812a6ec8261973aaa2361dc01ed7f77f22c149346028d1dc2ea74036707379c7d04a6e640d8b5437852460d23ed2af31f7f633ccff3d5857cf6a09fb1b267fd9e352aaf7fd40e7687da286cbb8361cd1ddaf98767fcce9ee5767296030b428f6d310622627a2ddf0b1708e67311ed5b7f3b77dc843dffefb8454b56ce5a0041cebb02d3f3795a7373a8d3bdc45385ce56a02d4b2ac36e6d2724a28d87234b0cdcdb6d48281681d8726b1b4b599f1eb23df525e177d94818f423a7956b3a072621ef5f64d3ca88aba87c829bb1fd5c11acea89a7e29e1cbc842314d8975d2ab9b1e58dd506ee4c2e8ebfb86939d1cc321d34536d5ab125cca88adccd08525cbcfc1a40aa0490ad6cd84e3fbbbd5ae681e7f2977aef3911614e0e84b965f40dd29a9abcbc61d482b23634bfe4a33c4e045c7d4fc8b3fb0a265ba8b692c6f56a8a3c0bab1c91abe017be08fa19c856e1a4dd4b04e23a6a3a5f7da3f2ac917ad6768107d9b60a9ed7b7d88c1185c2a130c7a153ee33e51acee8711e882876620e42b77ce34298f8ae43d8e2cc909c5a4505b1e17455f645ddabd298265718d6773b5a07e91e6bafe33c5c7b6621cd7378ee93d342e8bb338592c4908c453e4c9c12f753f29fac6fbd2a204795abf77986a6625308e1c5c73edcf562865cf685063448a74fb09f50656e7b13e7f5083800f960e630e8503a5a8bfa55e2091a815a155a316b520f0846677e7597074999234c695604637444c989623e74a5ce472df5920dd4b025727a4e32703765af862d75646ff329e0f570b487ab111048c4db1b49ae8ea89be3f2e2e998c0f6142bafd6f3b03e307ac3b6280758d9dc24bd34e36a70bd06ccec383242c4f60ef090ccf44cca28214f1da8b4e2e80110bd5718b102c42e0db5eaa0e49f52b31ce8c87e909a6ce5930caa31a0a28b2e5b2a63ee6fb59b3a6700e92dcc5961adaba60d7bf7933a9308d3fce5b667a599e3b02001e7494177af6295451a55e8a9465ef51d2bdc56a92ec28046d4b1105a6a33643822532b206ed1a63ff6e211b235b49f3576275b39da06574d5f545fcdf25ec8aa3b70bb3a1ad585ec7c16606c62cbdc0064e302952361aaa646995c4b95cdaeda8aa9ec0decc310a8af001893e6b9f33564da7dce115becde61104d0c89ef2a5439d4d988e7c6b379d0b5c2effc17e789b96b61a27ce8c868a04645baba15615d1e9a63118fcb1bafb7ca0614a4177ff955858dbffbf25647eb40fce936ac2de190d8b0182295cbed009d657a8cd4d2ba0399644b2a118498cfbf005d3525c57bbe140895e829356def7f31d35eb1483e6c0e84399cb386cedc426f786ec73963398979d147fe3dc91e9020d117153a0b937b212a8669375eb5e50b2bd9d990915faefdaae850bdf00c7baf773011856499f2f6c6c4eb0ede4a096160b07648c6c47d6353f482caad34947070c4108d0bac8a9315c4eafdd8586a45d0c758830a472f9addb3d3960afb351628bfb9fc3d97bfe75d99912672db0d6e23b51d91da6e907db360c906bfe8f802fd25fdbf7a9ffb97b834e9cc6152a5a6c3d04364cf40542ed16120444ce5f5a4f4bbe3941ebd3d556b831db0030ba46ff71dea191a1744354241961281a3c86d6212f01abe4c454d21ef6990528c5847b5af78917c31bc11b3130abdbd93689f20d69242b55c6624f8aa94543452eb52085f9b92cbdaf6aa8275b35408e96bf924227227c568593e48c0739770d2af8ee316e6f80b325d3789032acb0021d7629408f27af9dbc5775ee039d837f2a7c460bd36db61781b4a56a64e9d2785850d61c1bef1a6da6bb3cb51ceb0acbfcbcae126c0ed82b6e793bf4711cc6339cef8244149a6533b797b6619ce503d3e48c29b112decd51dbfd777991cb1ab9fb8dc2f717e4f21934d1ced9c2042a32a15ecc09cd358601aaa380c655f2b69dc3e2d855e2cdec457e6b92a54549b0fb985a30b80ad9b2420412d57708b6fb8bdb817b7895af3420e7b51a653afb76265e8434a195a2e00b32de89e523e411caded6eacd084c9e91a53afc62d6d621450cf5a102cb0cea7b8cb17ef6d19fda16a40c17243c1e51d55bc4f44902d5c0b7774aa3f33f69f63c4b515612507bb5aa1d89243a93b831eba2e6f720547c472ae222dd6b8009963e84c726e2e648a8a84d358c01c11374c85fb0da4210dcde6baf57209805cace3bc1481a81bb94232dff734b92985bf08cc2d947c5263d482197c1cfa2b4cf5c5599b5f60e4cd1969348d8a31895125765b2e01beeef8ec4d19248c6a25371e5ce36a294cb20e1a0f97df3bf9ee35be55e471e73dcb849475aad9fb75ab97eb562fa9566f29eaeab07a8693c895c25bb46837725933216d5b3eb290e65baaec016643b677ef0549a8ecedfc4bc165a0eca87cc164c4258628d61690565ff9341df9871e7f45b70f65f263ec5f68b51ba8f989685eb7599cda82f0bb114ad28dc726f54f99ddf4cb07d9b62c1fbfd63edb91c7a7e2115c2c351ed3ffc6b5f147d2730bf1f4c127edd1759ffc25b13e3467bf65bcaf398545708bdbe99d9f2e48fce778389d2b125f2d8609629c7b36d019a9c18588586ec2b6b128879eec6e14a36116642ae739e8bd2aec258d56e93eba24d93322fd53411ce9c22fb8f89524fb6382c91321e867828fedf724b4ae9c03782f8a69da536dd2674204dd09bd0f68ce8239e7faa58c94526eab515a3b542c8549a86fad947e67183096ec62a14af90b51f14c07e399948c09557574c184f9c719040b96e8631952babaeaefdd438a6e3c537a8b9f2f80dde1e0a27c2e2462711fdfe53df0a82c3c9ba353bc82d8bfc0c5a2ca2dabae034189b575105fbfc5ce008dabbb4f323090c7e2467ff034a6abcc74a953f4729a9426cbc01d234713fcc948a683eda9993ac215d2cff2d27831d38b356b7a6a4fd453ea4cdda4537ca61e9bf87169030ae6ebd10612dc9d3cbfd4b3253ec985dbd80e91cee57228d40e79340e697d72e942bf5ca8789147f002be52b9c6ee5d6e2bddcbf8ae899380140f2da47edca7e13f5f0e137d2c02690fad140748eff17c087be2319f86c95d0007f846392dbad833d28d9dcf2f21fb16f4ff2d943385c5af35da1b173fb685d77b819a70773fb345a8edfcd72a16a9e118548c7bcd2d73ceb7eccd1b5756ebfd99b1215422eda9640a646d36efc979a896f1728dcb3fdfe20be25c1ec4b7fff4c339e6b6ce304823c7b4ecd53214beb9727a1b4fa8d23aaa5cefe2ad3d70afe503880193dfbc978f90e6f852395f2c7bfa99da2d2ea590ff3b9c1cb3d6a386b742d1e82ab0af24e6ab20de92f84569d8b8f86c3900b559546e7f36a64d704a5c7ed0cca10539b89fb3815abecc75d6a8d5cb444ba54bb81154b14aaf09aaded3fc40e9acd0f2f43c266fd604de9b323b44bd55314c54b1283501bb3315c449914b88125b4e6157099d5f4f5d16b0e44cbb7692223054e04be7795379eff644a39f6aff3389f51cfba6a4f3c52783585391bc7ca8a44869107b522e27d862c748c57dc45e53810cd0b67b75db3c2f7a7681e386d1ddf680444c56eebe9baf840c22eac7e2c9bee209ce27be50ba9a8415b902c953817d996c3d83cc784bb6aa82fc7697df2d56fc08a3fb4bffd1ffc1d738d5eb4f96dd8edbe56a5c82419bfb39923291f3665b7c1d9e6ce31f649f45215ebd029f220ce6215d291a7f0c3e17ed3df099173cf089cf223f5901fcd0ebcebd9ea9780ab1d1d66387c65bc6175e0c7dbb61069445e06c5c4aed60f668e4184d45eeb87612f3d82e28bd7e2c369daad48be578dcbd979f946908188e5145324fe37c3650a154ef7c5222ca7f53f9b86a60ecd4d291b879a6ecdc0688878443ef39bc32e53c293398309fce2fc7599a385d222d60452b0c9b992e4faec6d08adf78513d1aab9a2a0faa5bc1b9398862a7d36011a9d536b072d80379bd613bdb51a6b3e53c765bc9cffd306166e840ec54cc94015b8f73715fe844c7c192ef8bd039290851a5762c84ede6fcab7d26d2d857aff7c8536ef94b226211eaa41a352396e9b8e859a33ee1dff00e523de77790f985647eddddd3962174850f80d136d889dfc22f1a480f933bdfe2bb4286765adedda1b03beda584a77f01e5cc7a1998d5ff92049154aece5bc72789c9ed50bcc4e2f598dd6e8174378b536c6f13bfff7777d543fe969e52ae121d6f42de23377ed1e7c9857edaef2eab37bf3b4b99c459de10af15d1e2728de7f017bd713bbc5a70a986dab670eb2f78be1a2659995820f3ec8abe9026fe27d67b9447f0ccecf6f2ccaebc0192b95f0ea35a0dc103c1bd5ff4cadf52932aba16f0ae23cb0b85c4f2fcdf059ebfd86888c7df93dd568a155e811543b5219974139bfa34e31cc0ade28fa84d4c4bfba8121f139bcae99698e53a6b546ee5f7706bb7cc7892e1c1970c89e02cf11513f819ce2c9622778e7befad121641f415ed07291dcabab828a23bd6b5af7f6879591dc14b4ce649f6838a9e0f431fb4b0b2819a9d85e076ac34f07010cd522d7ccb862aba9382a4edf72b6e422634f1ac9e53068acef8df5e4b502f6d17139ea7f104fa3db6e6dde90486572abb78773e21a158d498f681defeb653cbcf4c787f5c83f4c95835de8d6a40f72da6ff08bd9e56357270f661f44de22ebe91836c540960358fabf598cad1f916944c6b78cb7ddd5e0f1ce1dbd652e9083251e869462cf31b0b45072eaa33660ccf225be6f5b9f60b51d86d3b5b2b4badc385d97a631177de5f76d28bdbbea9f6c8b4528bb1f217e321b5ce6ee61f2cbe3d80e9be36b54b7bfef172d1ae5fdaf90338fba0c7b244bed6d388b3adf00084a5fc045a9e3d15a99479e7d0db93d94e6b5333e7b47365711282ba7bce95eb2350a4c4f9d6561f9787eaf7b046960f41e4ebebc77ed9835ea2323949d141969053eb834e6a322c111457ae914f387a5ec882e5d750cc8de8e7c1593aa3bd7bed115e4115cfec67f9f12419f5b2fe3b1dfab8ee27a376dfcdd3be35a95ac6b3c312639550b2577e4bedeebce64b54add459e5b3f0e27896e35762306a786f8cafdfa8d63ca56bc9d33e3cfe42307815802cbe5a84b3d65c7280bc518d21ec257075a74ede7daeee7faee22b3b52bda8f22f8f6559175f6df7c7e665ff999ac7ae58b1e576fdbc581d996176ae59ddc4d8b44bdfed953ed77f57db2cff16eff1c8d8ceecf786c32099e468c6494a5d0fd6025fa3361c66bea2f7046e2ab5c9d0557c22af06d3268b545d294d2460afa71e4bcd5d2dbd0ed37ac8cc163206fa693ad38385a5becabea82fa4f1a932287db738e5cbea2883c2db7ffe300f5fbcb31c99df1f65de5fd543c88d9364766da0dcff87b937eb4e5b09d6867f105e0b1062ba6c3542104c88e3388ef79db7b7b710200631ebd77fabab9e925a0213679f73def5dd18235a3d77758d4f2927c0813687f01d5b21e09112308365b6da9073ac66078ed8ab1f7bbf59f30efbcab8f05588b73dc34c0e39eb5fecb57f4b193acf778f6ad4f5cef3e2a26d0a8bb68c6c7a1e65026ce8996df3efb08a766aeb7ede4e7d4df94746ce6bb62f7f7cc983ba56bd9cc95bf6ecd86912869944753912f2ccb004a7bfc8e850c1063b60b24f7fb178f0573e91d3015718e5c691b850230cdceca1d0e0f0bcf0a77571646ef1ef8089d8788e64421eab71e26d528e7a041841760f76022be150776e9195063bf3ef656a9b7324149c15e73e96ddc4824ebea5b29ab0a3e688023b86ec4849f39a1e4815f27a426af86b44ab668856a0f441b77b34a5ab384f9a32aa12271cdcaf9ac57ed5dab6c02b47e0288ed7207fb8c55c6c28b3cd62cf1cf08587d0b7eaf523fed1c9a759ca9ed36542a64efaf5a164b67f5edcd8f225ba60de6fe166dc6114fbe832de6c0aa94c7868e199c9b1d6077069f7e3666d0ab32576a17a7fe2e6e75353d5fcaba964e1a90d6fa6b3b7ee7e7ce34458bcbaa66eadbceec7b7e3362b5be3816dbde466d51dec0b5955706311dfa75b3c355b713d5607eaee6aacf62773169663556de9cc8745b95fe940bb2c357691cfddec87b162435b07e92b30b1d3170e46c5b6fe4836092d47a401f91b374262d163efc6a5707149763db9244d43cfca57f5395b35cd96234fd496c71ce54fc8c9010198d43c516836842feee2d043428c98178e305d9c9d55f8a5a20fa2a6079a941bd488783f3a9e9aa85d91b8845d9bb808fdb39b01ab7b6b3b5e39051d9c8246e90c43346e1cc9b550ede6a5f8f03fbc595dbe5a1b5a75401dc48df9c56abc237c142faa74a686ced463de8bd2390a30fe4662dcfae80bf1502a4ded541fbbbf3e9e8f33428d6846ea0061e3382e7195e1fbb8f1c943ce6c44d7e3b780a0739579dd32dcc2c91085e13fb7dc86b6044a9a22832aeb36365dde673bcc666bf6e17e3bb6ad1b7cb780870f5d435b7085cc8c2f5a3cc6ca93b05a6ad3bb3184adb7fd8bbda2d00953f9831aa5b75e0a3d1ece423b99c7bb59407c5b893255947c3abfbaf5b157f53eb6db456f94cbd467a1bf362da8b2eba8b78618d32e14dedd2752e19d857105c8da59001e88084df91ae2a97d2b1e7bb90bfffdddb13f6319be64734dde142d06f5bc1ba92ec19fc4d24ea7985f4c2098e14cc54ce61e5bb6be8125ff39dbf5c9c72cc05bad6b64f971d5430c43c67d742d41be8eab2f5afc4f49cc9ee99a2369192fafd9cbbfa70eefd32c59e47fa43b7b8fe8cece136fd7322d41af38940f9e6bb429b40a99343a5ef5c6bdb9f5e674e467bd8e687017ac45e4810a4e1e67337ea15ff8e4d7c1209ee5bd4e6001f11a2edc9c0b8ecbde79ec3820b7ce59584dc3658e945691a83291f68051c9ffc695bdf532279276b7a8cf29ab8a6a9a24e603ae85233ebf6443933534a5ca1d176d90af54e42f6fccdad1cc9acfd964026b5584f09b4b3aed9ffcbb57c95e15a244bb7c9546c4614ebd4bf9bad366f7b2ea421c415f08d19cff7fce318f2d2fc6e74c68483d5b68c01edefda223b6fd25df4860fa9557d3f0cb8e1325e123fc40f8d0ea8c11fe62666089dce30d8e0d1dde4dd44455583713f6280689deaebe64315e819a6a5b9979782838f5b4ea7d162ed668a98abc9598a71de62964d0c13d3b818775f8461fec9fd12ebffca07aa6f95f2aa14d147baa2c3fb4bab65c73b57d498e52eb5f1c7889d6155ab8860fe3e6676eda6e397e5190d44053d917328e3b6d2e26f82f177312235d6a7cf0fec3a4c469fe36cdca588dd5ccecffe4f9ed2e50c7e79f8c6746880d53cfd2d9b33d40bc23600748f169be531822f326a2f79cc78144bd67e26b3365bd6704d7b583e50e6da85a77cfcf53d411c7ccf95a55d4318abb57e58f682eef17f0eb8619c6088d0fc597da0953221e0dfcaf36717011f5de16784d4a5d4fd53775070f7758866dcc5e82bb0acc469540f297283563239db8dcd4ea996a5ad53cb292ebba57c5af9b8a88ae667613d4e76cd820cd2904006c73ac0479be8bb4c24269952376cf15e1bf69868a3fd62a419ecca02e4d54448f42cb527cc3ad0482f8a355136f9cbbac8f4bbb4c7b5a15ba8f8f5efd3ea3a04fe90212ff48a9e7ce9c56eab15a2327f65d4f5e9d73e35a2d50f7cac51dcf5a6ab127c634af5a2d2bf96c91fc2313b5b526fea8d9afeac990e745af5d613dcea60b6fabbed930aa2b2d564c8bce999190cec2659acb9448c2c2e6598679c6ff922725d6a41e5ba69868091d1c3325295c413b0e272c50c9886a109b63b6760dbb92d3b365e929c6f66d7b6aa81c20104b872b95203708ce96d6697570c41af834df1fe13be55f182f9c152c8718c47c89430c131b1eaf96bc325d60acca99df2c03a0d66427aa8a2240bff333dc1039e3db25dc2cec6358633ad1c1cb07b41b7539a2b80e133c4ebcd3ed97c9840c2fbbecb4da8b3eab8b15c15b3b3c176f4dbf4c3d80116946b0629ab02606f6b9faf827ace619f7ce015b720bc7979cb5f4d5a97179c37c92a574083a5eb4c4f059ed06a2446f914eb4e9ad7a484a72554e99b7a8921f226e5dd5a767ee87afe2fcddee39807fc0d1756b38aa75176e8eb01ec851077602549729a6a43683c3309c91b08a5bff86084a586a406ebcae3cfaf8b78d37072c3f5c0e0f03e8305b55a681607472a087048e5efb2ae7a9c241cc294537775d02c0cd193050f56ac113600f237bb2b40e7eb8b234b34dec86a3c3f95e569eb80028355d596fb5800533632a15fd937b4a9eeacc4886c02a65c2d23eb3d6ab0ad5c9113ed50205119357ead85418a820f266eec7be65a1875d33638000f16334d4f99973ee11e14b6170c57123d3492f22967e66b6244055e59872e99dece0b1021ec4a60bcfaf358b30ab7590edf5b142c0efdd44120d4871b69a9825b0afecb60f84033f73c3c454a6d5e2dde40c101c4e90d66c15b6f7820f9a4aa62560695345f7d4d0902ed8034cbddb0d77e7fe6eef295f2dd0d6d6b5f253a845e38304e48c0353e1e177a96d5f211f3f52b6571a7d76df41c263f63cdcf6a7e1e0f39ac859508988350e14a0d3ef9ecdb406ea979a22763d6457be8dc3198a1a38bfb6536d2085e6477633a80cc07b10ee204fe599f291059431876e982339f3fb6aed5a00e1dd772be4dd7d67b037ba3de34c7b3fa44d0e10c63e7f1fca89f455bab3285a6d674ba6b15f477a2479dee013dbb1f3e5cf9860383bd1399bbff51d4bc43c30f9ed4eaba7424423ed9d948fde068c6c9272a034bb1d2a55c17eaeae590990452f87667e8ec8e63be71f57d06eade7bc57627c37bf3faa4045f21d9275049ebd32676e629b9adb6eedd9b8e9eca22b396eb66e3f7779f1d5fa91961da86859b58999941894b6bb2daa87b61c11f6963333c239df3d0b1aace444741afddb7497000c19eeb68d241ea4d08afc03f6f67542bf0f07a6b25d9f9fb709373d502d9071714295606087e9e18143a404a86d7ff688505520a7744bc5775c7c77a538f9e15bcfc992b0f77384522405e0c4305b7d10db656aedd77a1ab0372f1c77f61c8b54a5e4a1aae645ac947e4ae2dc577ed66f21290e71145de8d51832798f349ff0facdfe4d99a96f7ab7d12e27867f5cde705f29e8b0174073069ce9696e69f5b93247a0253ea7ca8629112bfd53581d80939bfb0703f23bde6c7a6b77c43a97d62b2991b665af32ca27e4240013246ad89042cbdea8ecec4a9ee56315a839081fa8631d0156ecfa3f87cc0142be671d581ef86e191900a5bf6477c523fbf555f4aef3b1168b1d50b6a4a9d34d8671a963bb46d8ae6d9de7084aa6ccf038302ddcd34fdd66d6b92776787a53daf1b676f85f634f54bee131707d68f991afb1a989546bb57bbf1ba91faee1e15f9accc9572aa0b4103c1abc8ace4f5953fb4a3704664c06db579c0cbaa981e85039f0f572f6e0e0a349a3fd8a68d009c4249230e3e0bf5fdc43354418c37396270c7dec017a8d15417c5e7e643777a0ee9ed4c84c461992e0fcb3b04f8ab7681bca171492617e7c8bfaaa0d84ff886f51ad66106e8e9f20af81eabe647bbde521250fedf5937e60cbce9475acc7d08af7d8f258be7f38fab88ad97d538f92f54404d8b363211520a3c1099d3e236e6291b3c6cfb3f61fa9f9c317fb70898b5e0cc3dc149f1b44c21e844565c14f3ca066ac883f9eb9d40cb7fc66cf9f7f5bb71c40b891c0fc04a4f7b86ab3b60df8d7b93596fd24f5f2ffbeec479e2203e5f2068ab953cdaf606887b916c02ccfdce7f725bdc71237f3d6e9db70a962d31c650d8a920c17f9097c0333159859cb9546b4762e52ff0c594b45faa85ce09e8f59e07e70e0a8f98120d9465af888d7281324055aad4317918ebc5bfe27a177dc694b9299edf455496609f5651d069a8f4419280e626c944b592666235ea5775392995378d6ac97c932bcf3b4ecbc96b79efe96ad87a0c7a75850e9d601819421173fef87e97d193da9c3b01d55de37802ee2c23fedb28650e2c8d44bd2538d2770ad8b0e410f16df3b873c97916f22d47ee6fff37ee0aab763395a8fd6d1ea7445b94373fcef1cb4a6fe957bb8cd80cbb49a330fbdae041959f233a83386b7c31cbc88f228f4921b31c5af6ccbc66ee9a47e7689b401d73e9d72e8563c1db0b2ab8bc39f6c5963ba9a42be4c797875781abbec64afdae1a0a09758dc97087831b849ab55cdcf2224b41af3454ff01a754d6869d2f27e3a90105d6427cce344447bbdf7733e70c759b32edae3202625f161a74d5058d625929005f65eaa895a9ef0da82d23633bb23e2484f6dc4503feb97119449837c1e5acb3bbbe79494f562e76388c2cc35a9d5988658c5841686dfe4b62bc56819d31aadcdce2d6a36aa1ed383ddc1a7963b6916c1ee7866fdeb1e940a33acff713ac859aeefa47e4cc657e7b30bbb12070d6ab524495cbfb7efcb9c97fe37d3ad2675add6219010234f6debc0155e91000ff0941862c812dce5bec94d77392d416d7cf766e4d6b1faaeeee985914409e9ec1d5118210dfcd5b0275f9da0a0dd34fbd727392f6204fe950761c8f59a7ec6741cc0744c29ee7d84c576eb101b2876f49eea4260c423cf1025d222979b9d6dbca6a9ef00fbb575e8dd3dab896420ced4e9ae9dc517717cc28ed456de47b81bbeaa4d0739fbcbf7e58cc73b03264bd8c841695eabb7dc020bc2d3ce2b8426b7f9fc3387780ffa458b39b6580cfb6f1381512d7c5e9658d42fae355acc79c152a03369edbd197d7ced5c4a6b75efaab4463e6b3db91acac7d1dc29501c3c714eb8be9af3101b3853e7e9c0debee1570603b87b553d99a616efe353d78eb557aa01a519039d6ad3c4c434f115f31a8e0baf1df1da49746d1cb28fe9df70e1dd7d06579ee53cdbf24fc93d1f4cf3cb966f98750742372536c70e71202652e99d6f5138de56156e306d30859827eca7005516403a5b08d6223c66b5e1742d4bee08e75cd8794cd5722cdc2c2cc0658b2e5405912ed4bc9af0cd0a334a5ce9dfb52c5e80c02a47bcefb3345bca02fe42433604af85064c5988006a76f0845862595aacdd3495ad7432c94844557f06d6f75df9eaf83597d6da351b0506a95804ef46a0615a1c81110328863db897de39b1c0af39e37f42d2df86a298932b05cef51e6a0ad464c9d18955b07c2541774f1cdfae272c7b9df53c6c9aa0e0bbf98e7df0694398233d91d74f1dd097574a738efd058f73c2c3105c9b8f5889e50194f2418d240b01522a346714dfad562193b913f2ccb83b9d87adcd914565c1bd724e2c16374078e205608c170c78d83a65e9d504a87a165d3dda7c476ad58139708162bfe132c98f85689b56f524280032cb596b002fa0cadc8de578eeabd316e98431801d291af349802e7042296f2b13590a4ef8d69318db774e3d42c493f4690bbe82627cca7414d192edd3c796d54bb8eb7de6dc1c70d5edc535e0e53fab6ac828c04ca63e7370cde1392335e834e28716c23269af17cb226c13914f16d03197ec2394de335e7134169aa2d57273f5a840d9f7e141d92326ed00994d802d3b4809925d7619b4e5537ef5c170311d729094e563292ce035159ab070e73d5b97cecc014fe1d5d7e45b63b50898617ebd1bab6f86443c412804552a6ac43a2ca584ba7ee3d285ac1721c71bf1290d2d3595660e42aad4236b720e11a402291529b160bcdb143a156dca44aec344ee9df9d271a1a59f1667845fc6e6cf3d9ccb9362e59baaa549b46935119512996687605b2f3bf5996d8c27ac4d198ad06d68e14421579e707c9b6890eb9f321faee395e83809e97075b5760ba9c7900f91bac16024ec195b23fea5e655a38f55d2734fde65cd85df6442be078fd68ee1c0d312dfc3187e24334e19981b74e67f7373cbb71b8a8f4a34e0808c0463e78350bb85f54c873388993ddb0fe5b567152ca128c1a1322c428722b22b259e21377f4093319d7d46931128ff4417cefb9c99f2778e9ce0f376805899a194565854984d1837f0fca5b0f495adce45aaaecddc17007469ab7eb989a85c5c32fd43744dd737c8abb541841aa50eb1223faacf1fbb5fc83b950e2b777fa4d0fedc2c6d8ec65bb6050fce2ddbf20a64fc04e7864d8b85bd75a52fdbdf97c9d93bf036ecc2dac73614f89a57bf523349cae651a9b80be014bfa423366b5cf015cfec825933f58d057de0004fb8faf5ee4d8dd4b6b8b0b59a78d765ce19089fab151ded4e89a6401ba252cb7fb3df0c990e379c18a454f739127f0052584f98c341bd6e34b873e92c169f6fdd80655ca7e8bd5593f2ecbe557c692fda8766aff05cd41b351e03f444d95b1772d4c5109cc210162c217491bcb87dec5f651249edd0b991057aeffa0238abd9680d1bfc2cce608b650ba5074f689552a1c346d2f3115cbf91f511ef285d9e4fed2e435576c02ead7cf9e0e4fa6a03201dd17995f8cadd4aa3bb133587113b53cc1579cbd0cf5326b6ebfca58dfbfe0224bbc0499252ac7ff74ed6f6e7fc56f1152cb330eda7d7b53299581be46fe5367b9e890d54a3f75cf45f9acf5c1014a61b10d64a8514e0fa40a8e18f32abdb29efb35d17d2284c46176282632915bb6dcdd7ead92dda755cd78ed007fb17b2a54804f80f0591f0ab21d8b82012bee862affdf78d5b732ebc0f6476dc9e095c9310153b65f365d8976f5964853dab5bd826c5506d97d386bbb2dd6b572c8477a1f8b61e0f33c1ebf2378250e8e48fa91973850ecba7356ada803c271bfab553c81e53d8db348744f220683a6b383defea5040d7f8a86c6a3de6a603d543beff6d5d97f619dc4237def4cfd7401f740b96b3048ee94b2491f1ed6fb20ca37c8e6f6d1026f00f6a6876f8f0e359fee071636e39cece31abc43444d96a3c51c2a63e89c36ea548ba5bc2379a3e55456cfd539fde73a69bade599131f146715980d3e7636e699734090652798452684571876aa327672e1f02fae9015d3b139135069507ce452b6d3087a6046103d02c38a8b7c74c59e0fd6e7b7ae044db086c8147eb5b4e397d77ed826ce71c86ef57933e16c6029682f33da60089bd980f1b191339cee77fc9639db899f9db82bad661e5d97cb62931dd7b250272595f0d6b79207cbd529f7eb0757ab0393b765ed26f5fba62ffaeb809d112f6eeeb861aba71779ce870780c47e57d35371d62364942f8abf5a6de8d6cd91c225e713fd29ea477d75fe4a0a8dc3ec8ada45ab37b6b836ce7c8a2058af7e2b41fc47dfdd2d196b87d69848f6d03b7f0e5ab7a04f1ffcbfa43386d74dbb68ca81a3d77190855abd37c994ccd954bbe45015509c6b5f85808f2e4256e304cb8f4b49039551cf0ee862d9d9caa2b2535090929355fc7927aba66739596940442c6ed8872f15f5d39b6e552bdbc2815429e2c3149323b03a7fde3369c7babff272fc9167d283ac6db39f991c47ea7e6b389d871dabc220057dcacd684bbb2ef188dd24bfbdd286dfdfb3e6660ab0181cad5ec1713863f653f0b057609e6bdea97e0b5d9f3ba014626c18f9595775190ada14da16bcd266f04a73e18142d973fcbdd7c19b8c66ad0f5e19ce3aaa02f75e8b5236104e35c8482d7cb31f288b16393515524ad780b3559d7c38728c94b1adf505b6b5a9c1b0a9a787dcbf888933870d367e5b731b209e19f7fbaa466af320831a45de74fef1a1b81a7cbf876f720af57328a1e59299824e2af42f9f43dc4034beb8c4400ec9808ff65ee396b74a673660580cd68ecbc556f25689a193dd057743d5db9397cac1f25291381c7ccea41399970a4e49ca528e384f99cedaa786821dfeca7c54520421c9244d3bc5130e57d9fd802ce76d9ccb3a031745e100267dc4f9f0d13a50a19a97366ff8c64eb27035cb3556392ed386cdc3dd50f9337d1a7155874b87d9b5b61c66f5c69b2301256d9e20316ccf443102ffddc8dcf7133ea39fc0f837435d6ed9ba72746d34bf06615e8e556d54b8e9cb6895b6881f56832ca2ec335a864ec5c64e2abdf491ca628e840bdfae6910c2ba0555f62d67c2e6ec84d59e5db5e2ccbf91a921fb5598e58266c70dfb857e5c9622c65f8aa1c56a62f1c6fb5e39dc79ee9680e285a74e51a9a9eeca380d9f9ccb5e30bf4e6fe886c5372097b97279481b3ec5bf88bc13f4e1591db69a3a33682db013e5a835f69a2b48fc86b5042fb928ea397c116548083f301c2634092398ef1e85f0cc6648615b32f92580520e943fe2d9efac8ad6455fe97b2adb28a5b3ddb77af22ecdcd845b6abfdd8dd4b72c676e59d5d2cfcd786d27771623289c90a5b83653e672fadcf986fd831e176452087e581df02744b696c4b2933657abede183fe8ed458452557d5c80d58a8e08d7a9feffbb5b6f04b5665e11986b679f1506c790ad7645cd71dbd883e50e69a5b693f6782df4bb8b20d93717ca316259a20f91fef3d50fff9c6bf7b577db594b45e72182af7b2df953a9d7a44dc9a4d4deb83f96b9d3d72970e4f452971253acd82d84dee135688fd93b0d4c74e503e60a7cef518e1ab52f20a7aa7ee825bea20c07e15319bb9866174f39d188de4bb7ca3fc0f753f274b968280cefce4d0cb9ba9b8bca540d157020a5e0cad838bb9f4a1fe1787e73534e917ce2547240050e792f16c9edff22f5982a04c321481d7467322ed6bbb280fae66039189386c67e16552f327340d2ce97ca05abaaaa2cc3d71fc0b4f1c2d8fd7f71cf44567fb07bdb7f99abb6226ac37dc72bb4b78f089de6c794fece80e36810ff596967bc330d372963dd4087867425bada407d88a0b1fe974d659a8f58b8a372c921058e5df6ada294e7928c671cc5788002f286f33e54d874faaa8b58b00b515be998af9fcf7b8e9ebd059d52284542f71031555d2578ddbf1bee8ee2dce4d366aad3871e731d5473cb23505665772829eda2d239383f43db8ba39ba8cbbf441141663affaca85ffe207d1574d1463b0b76950da881284558e9404ab99b26ed2f56f44225d444a1efa35072e65000d0f1daa36500243b8ce9ce8cc6c77780dde44fcbb19e5e538ac935952909f9f78675436c396a9a47d0bc233af9d61da0accedc9b398db2131fbfe552b1e5df021fc37c47e97a931320540bd97ff8f1870f66eb9aec8883eafc8a87b8568b1270bf0acf947ea8cee75bf43044558516222d78a36e30cc7f0e4baa321f9c9eaa28b6cc00ed29433f9d33a90f5ff920e245cf1d7e68eeec4f86a98d6f2b3615a0484da5bf704ecf70f63b5c4fbb58663cebaf97a5187bc874b2182eb0ee2cb0047b17916a5a454157bf841fcd836ac3bef52ee1423969961b5aa5786f583b7dfa30ad4df9ff47ca3e48533df0a1a53ea746407ad08f220e1e7482e0451a5470892019109e1fb5bcabaf1399f73d24eefc2abce3bb865f7d2b7d00683a7530b6db41dc4281362766ca510d855d7d7d4458ac3a803f52546ceb73a45592fbd3deb5f90ca8a5b0fd4bed5cfe3419aec7007090586373387a858abf00c47c0eb6e7c36ff7fd8311050cdf10a26d77d94fbe9c986681b66f19136c4577b43f8aad6b3b457b3ef1f68af56c03e5b83ba5eba1e58a2a79f01bc94f98ddc528e056b25e658f6338c21feeeabfa2ab8603073b581436a8511b2ddb1e563a87cb5f85e88bc33f37972ffffd4e1466addbce26fcf4bae3307c1ca0cd1220d2bb35525becce262566d22b7163c9049545f7f0363e1e7f1cae1771ac4b2f33f1ca8e1d432ff84989c4f83d132b8a0a9f77763d5177eea77b35fe380f34ab7c4568603cb50fe33e7939a2548983d2c1887f9e0d2a009d924d9712c4de714e4e009cbd9a060e7da4327be436156a25a19733b7cc8c5112159f151daaf18db65748acbfbe03e978c466b3faf75855ff37b386ef72940e35c045e8aa60360da661a5f30cdb883d96547e2eb808d25be3a1b877d75aa45817d8f7bdb368b535744b92402cfb49aa39f08dc835acfbd3c4f45459c532811cfd2c2c95a259004c9a5b9ad596c1b51ec551e1030cf9e0f25b63b73c7c1a5646fd553dd6298ab92f97de15db223be6ad141987bd51b6a6d665c1d01814085a6e2a1f2db9ed42cf3d1c64e1136b0c55ac04350e8f8666ab94ec2c1aa70a701583e4b9cf8d1edeb8cef22cf4c4cf1b694f2cb7ea9bc1bb0ceb4e42454a9dadabaf6a2c053ccf71636d60122fa0731a5aca33ab1711c81a5c71592564a0ad9ecc16ec35e87802e771c22621b2fbd1970ea70ec6083e018125dfbc2b939d9c958a0f98f43da30a7e2bcff692287a3b06df3a29d20d105e181c2ab7f0b583d5f0c32eabef37670b44b2ca4b6d82c65498f3a873683dcdc1ef28590684709b8156eca8623ca4e6d1d8e22c7d82fe4c1435682ae2c4ce9e7e4cc881f65c2bb77ed6c90a27f3ac2b22f467b26a7908d4f103c8fa911cc447fe2ea857bc321784efa7e3fe9492a68c6a0d359a87c86c92764488e1d91a1395bc2165fd9d0fa95d62c9df3ab156449a6ae1a99eec1885a92bfff7351c14d4fc2a278e9668b9227e055778620fbbd3267bdc8fa2b6db9e955b7c94d41f157f268cc26a0795b1ddf9a5b1a188b40764b0a9715e236aaf06ce759826260bde5bb23033bd48cca4971a874e32c06850287868f71f2b849de60c17c51aa6b19eabb47355669c5bf6cc3ae87842eb7074c0a963d969c7692e9dc1a10f435a79f5f35ac17e35eae773d62071b072e781698c1f63505e8b9eeb19f4aa0bea814da5e67c111dd438b6a549185c5fc66b864514ed53a8c5031e30407bb5abfb0ff3a505fba0b08764dab9ec7821a669413f369acb3b7cabbda9c58c1e13feffbb6c38cf4bfdae29bb776401f9941939cd32b627b4684b2fd48d7262b93ab1852abc38b68d8157f621672f88de4a4664d5396b74a4dffc53cd7a3e9eedf17eaac043b451204c4145bb025016c39c295b8580cd821b2524e912a9894f30e0f778ed00479a398d0b18a2cfbc7976ba2b23bfa9d518acc0d8ed75dfc060e2750feb4572303b33a7aeddf152718db3df95ab4f5aadecb19f4360ba02db6371e4a73b55d5b0eb5cd197334fb3d4bdadb3ae2da5e49bab9f0b67d5723d502fa46365bb3013b67f06c41e79acf56a0f4e30d8f244001e9aed7f4fe434749ebfac99e1abe26a7856b8b2f494bce5b6cc1067ce4be6fc1dbf0c51e58d1662c7b54efadb25ae164c8abf8ba9e05e4f6be9ad935875e864727633faf7dcb3ffdc2dbae811b35acb1c9728a0831feae546ded4bf0f9d4cbe246738010c6e979ce8c0c7d46f46858fe537bc88f7bda59beda2536808fa2fc6c562a5719d11a09025b2bb8320250a6cf362380fad4405fea7343a49e1ecd11fa51c5e5218370d64c201663f4f14d0dbf39f785152d2678eedf58d0a1528fdf6e39fe205d6fb591638e77919b659e596e325f1751b692aa902ffd4a23af61726dab86f656adc141fec63cbea820fb7ee6d4ff8d22a06525b47e556a66bbd656f3ac176a9f977b23a439629c1f77de05a0e58f8283b340d9e2bd94294ac63b960ce773c1af5982442e7b64f66e6377aea3e22ebdc856f4f0fb14c1ce26b80a56e2ab15b32c691b56be9516efeabeaa41e9de592109b596b4412ee14a85fa10df22b7e67824bc8ab52a5cd0624bf7ee73e0f8d85a7f4da0cb4f4a9dbde4064c1e03e0f818385d3a2c99a4fa9cb2b4316be6200124c01f9870f53fdc89ab3963cd7d2bd2f2df4cefbb1a97f349451bdf3a5eec6f02cf86bdc5ecd47616842aeb64bedcbdcafd0720a87176e227ca57f18989da3a1efcaec5a7e56fd70689401c385eb13579962fc79b9aa823ecaf423aa2706027365bd978ebd8f6a96cff298ba7f27dce00cafe05d98e37104d11ff53a256b16bcbc93338c94a023c48834b27b87d0dd28106e6cbd65ae2c5e152636b84d83029de82850cf5cc0f358b4dbadd1ee9eeb7a6fba7d1eb5da09cd1df22b93ca860480b71895a9fd8e9e14a1141ccea9fe3418e8d9e62f16bf10068ea445ef0d4293c6de06911c09d7d51804d5d6d40cbd2607a245c2ce0b7a256bf8c33bd66427881bc758e2e91f4771d3fdf7d4c7ef678645b810983798d1f049aabd2ec5fd49702993f94b2a8641b31a2f7017e06b034571c8e9377f97103a59d88c1c5919258c05cc3469faf1b146f4aeeb8afd466ed88af781c470ce0df5ef1eb3bce49b2fd8ba33087ea0bb8da739743c6d22e75fab556cf27e5a939a764ec07affbc0c7e85d228f251fbfdbea4971cec7af04902b0b7631b5c7cbdc6a32d7d51f7913ec9507adbb73a62baec93ee9a978e8404f922e59c9da45267c42067de4088f24d1b9e8955948afd2171dfd6dbdaf77bdb085f542fd88931084d12461c226dd9062d57f08bfaff372519a0c9fe87ce3cc87055e99e25379463ac5640b0367c4977b86efdf61ec2651ab49266c8ad1f6780f3cced63e1b67a554bc84cf6795319d8e4319be564da1cb1799034a3a1473a0f39c6872a23bf180185d2669bb961db43e21f45c009d54fb901d02a52786dc07dfa4e93d025b0e51e97b83bb3f4d18c697094bb463da250a2df95ec114954a838f9a5583e2f7dad5ba67dcf20cee3ad977f75ae9b944ca2c503c7f50281f288927679a0eccee95a6f945bce05af3ecae9783bbb17a4713db78403af94796abcba4b1bac4da1c03a4d436c5a6cb52b1684857f81395915f45477947e933ac0c0f6bddaef4b22c7934596da69ef3365f3cda90eb885218b6c76a730f1238b84cf050c517738d19b9e02031b435469039ed7df2153a235e502ab9c00c0804cd7839f70af7cbc2a73b11b802e127347393f2fb127f3d5241c393facd99e10dcbd07d60cfb3201e3a4fb66f0e65253c7dba17b67eb091eb07494b2fb6fccd1286ab6ede494a1f0a6a2eb37525cc1e2ee3e5d93a351171c6fe2f7f3e5da682315a19aa20d7845e0fc4676cc00254839ff4647c37e6f8ff7236d7adc2182ea7d3cef8d125c33b2cfe17d339a03bb9dbfa8f9befc404c1bc3fb4375fded5a15de0a2a7716af9b02f0e9626ffa2a6e90348537abdaad572905725f9fe8f2e06ffa2be7ca0f96ac05b74bf64c70b1637ec0a4c6bad2f85c6b64b4bcd9cfcf7c6d88d27b9dd98299cd1929d9da7fe003915fa28a9950f1b9794c8c6f2745627cce7d51da6bc2e5407d2e87169d9630e9f6894b52887ff51a3677b0d4f9f6874c8180dffa3466bcb8195e38b79a236ee98ce92f7391b2c12af78512c2f6d0d13a59e0fabc1674350f61b5af185772a566d084b54b4754b14264b2967322c1d3c5cb3e63a7abf723d99373b1e839abcb033cf01be33c2917157b4eab499a8488625e6cc748682256cd5bc028983c5f4b5c56d3dd0d57a61ed0b3949d0b305eecf77b7461a55fa7706f1c14897f446b39a3f7817b172b7828acacc762c003fe6971660d177a867b3e58b2ed916bfc76c42e9f404944cab33834257abb7df0cd90faaea0bdbe1abda84c1a8a6505b89c2286e6b31d84f54d2e85b3c44a0a2c722b5fe5c5834303f190ff531e7500a31d11f75fd38e1a0dde9c046bb7c507a94d7c42e183f0b7e205d609f1d2b705c490f9643c87c5708a37954fe2889fc528576d7deae74cd99305d9fb62f9e93b77ab7d8678a2b5f144f70eb6206dba519dc0b6a60e17cc855930637a6f6fa849c6542ea7f3c21e733bf717d4dae8d2f5a5984e6ab85ee50200901d33f555454a460eddd7916beacb317b3653d554a0f0e89c5429c3741d9938b00ad47658a38b73bfaed531dcd7427f55b1dcda63bad941e9cfe5347af62048823944d40cb0455762b47e6548b6b3751c1c5dac50d2b0c75bbb054dd655e60710424d5c2bbc605c4abc145d6cf0901d40c0ad5bca147a68a6e6979da569e5ce6b51625c7e205e783846dbd28186decd7efafbe5e6586e6fedaeb5b793d3b5aa7d2db5dcd508061a9ddd50088608fec4340cac7d2bbb39ea4a221e6b05483f015cf822a77c0057fa459d5ea845904d7a055621518934fcfa0608915d5c4912efb800dcf8b1f6415defce899fae9ee9f6b7d4afbfff2aeb5117559b438ae11c5bd1e7c50e28c12ac3a8217f4629683f22b17ef36f10915e179ca9bcde177561e6bb40eecc3303ac3ee652ef905ab4679c3b539569a33556ce0eb921c73d83bcab207c111282289273182ea712576373434ff42ed6cf1b8917899b9ff9fb4cdceb567f6eb0a4cb581f287ec6f8837867977da1498f17e4286876394e59e52ea147986c37a8ad786800c9177dccf9d1c551e0247f5f88a3645a30107df08a489bd4223ad0f9e5a208ff0e5bab891ced7650e07b4e906cb4ea4075f66f9c3f709870023a86cf1b7c419aac7c59245afed7a90738dbbf5c08c69345fe6e2e13fee0c86b90a47d0d9605186139a45506090716d7b91d9377d21c386f3b7e553887beb292bd4e891e2c739fa79a9e9ceaaab0e4d327f4c98917b634fea3ce1ffcc8adf5b72f6e1983f1e593987d8b19e346a5851f72c413c3a9fcdf6d4b71bac7968c55013a408dc154aac013b4bcc2d57c4d1084f6cf19930564bc038c0942dea0487708aed8389e6fc2033ab54fa70f1a802ff145cea89e41cd0828bae10bfb4dfdaf6a25da7673927b1d7147c6abb13b67bc13b264bb94c33c30f2b80389810138389a9305b597dcc096c6425e2407d71078a6de6f5d91963dfec5d4ef4368be8f25568ddeb84d005a674430e753d95c0b16ef69de6d6b1d4396e62897109d4f91b7c9aef0498c59d6b61e1db67d6d701a121c4a4d65703c64de31db4c5e3dd8985092cf211be14a7bdc5e3ad07f992b5a656dad19d3d1fe846a772653a5c3f2735cde20c8dac051f2b5fb9bdfcccb43641ee12c647ab7b66a8a5bb91eaa90e86dc5c0e28f068f5963b6e9e13bcfb92bd5bc5bb57bad8531d9cc9d3297352f5d5f6e0e735c691e5a101770540a62f38644912439f31b96971721d4c6ee3dae44eecc92510350481b71194f6d18485f6d17037d6869941868ef0394b79677424ed35777ec99d17b3a78bac2acd1d821d2587a86ca4e2a05c0caa2983224fc0972c9be0015482bfed5b5776c76a685d0dff703928a868b4070435642f07574edab34ccb509db716dd5d453ad76ff03e9882ed682dfab96ee84ab919ca7516fd1c8e6185eb67ed5833dd6542635878da0ec4f7a02e797862ff09c74b6bec85b9b72fab035f56a157c165c540005c2fcb472c08b3a035fb6544e886ae2cfa3971b9328425f58463c67c15c67d61e534df373a5719c5976faf31017379af508ee0db9c804ecfd6818c78462a9e67e5abcdd1cfe7cd7eedf5c0affdbdc76b5d7eedd5bcf6b77bf95a8104a4a94502ce02b3b36212707cc97b1ac23072f794bd5b4f6f9080b30c62cda4925d7396d6d8afcc702345caaed3b54df7946fa6131f3e6e7eef177754a9d2455e38a06c86b93fdbcaa64207c98d77cea7dfaced11df2523c57be60380215acc8a4d5736b052c70ee015cd2e5e47dad2f16d2e17a47940549b591017510ce63237f3121d7c36796d707032190c6cc4ac9175a9af227c59d4789d28e2a4973d6e607c849ab63da2e6955db3cd33819989f1b9047ef1aa569c1df28ac38c09fbd4444b6c16965d96a659ee2f25f8532432564a97df9b45a16219207921372ea9b9ccfaa28bd01e73f5ac4e70b38fedd10d2d7600a3d8e033a915ee7dd9028b0d6f66786ada54dc94464235b949bbe720e7800eccd96dd1407a660e2fea5ab7fe1958963b8ccbb5f2916505afb102b4a3df8a6cd5350eea41f9ea282b3db7e76292cfc5095d3ce2f384b970c01a61d06d0c1a9c6084ad3a3b04362f685f97d95cecfc9c07c262b30aa6c4198e2cce70372c8c8490fe8e3e9fa5c81e8915b19162046799748c04280273f46d91dadbb382a7d56bdbf335ef31e2b77ebbf7f6279f0584d0eee5a315572282043eebc55ec6e8cf12bd74900c4132fc9dce6c49e7f3bfb0daf8b8a3a68e40360978c14616bba8548b39f8486a9bd38577d4cc1c55a656234f96720d0370f0d9280e648581ac31108e5572f0b4614f77f5921adc98ee66c79aee58a6bb63f7f23927910da1205af595832fcd228994c7496a91c8d6d1671d7bcbaef9251f7f1be36ee1b35d1cff1623dd15b69b4d4f2fb6dbed55bcbadd1c19bf6bf7f2d562afd060079fdd22a99303db00a973a13310fa4e7739bb6fd782ff4392463b0de24d4796ec51f92a8db4156950b36ff0147db76f18fb06879266e65db9c33374a84f5ce2a7a9b6340bb5c8ba80a76e5e5f5f85f836ab17b6973caecbf67a51be8a64e12ec7b5803835c7e7a25ebc7b99f2ff53b87bed7395ef369ba65fecb6f7fff5bbd74c56e5e45bb10e85712d319e189fcb7ae1c0b81842b330049b985f0c8126f00f4e0cc97c675be82b74708d8eadf0b92e76b0850eb64ba4798e147b8bf41a690e6ff7f14f6973e4d155a8adf8c0c21812f47d83cfa438864e2a2a2e9b2adb7cd005557eff33aa4c8a88936f99390afddba15f5b7cee8afdb3afe37c13b8b59c6e5f6c82df4cf015b2891c7c02332a01cd1c1d667b6ad7b3bb23d3eeb9274677c021694aa03a794e3ee6efec71e8db566a3dd56ab0eeb671fc18ad40075df8fc86801799a8070eed89425034b7f04e69fb1c906c65acd459c7a0e742906bd017bc02e5eda1caa2570c4ddc6edfc37ee3f2532bc1b10af17086cf08e92ba7f8e470025234c3b364ee5d747494757429e1806ff2da0ada9504e9a549c5807812244e61b7406a033a80621b23f22e4394f629b89b6b3dfba166bb8fcc1ce1ce3273004b5e4de38299032e206beb618c0a97f8645f047c59ef0679c90dbe24f6c323bc904ff8a4d6b728b1db59cafc3dbe1cf2872b4fcde99b0f5df71cb23aed1144dd09b893ad05054a242c2b4bf6c3f8c5e6245c96096f670af6f6d51c684fb519646e0db29709e00c6c252712a76f0e20448a6a7c94c7fb797017695ecf893aa09fc739524e91bc2e690dce732b8edca21e4d9cc2396bc2eb7d060cdfe41c980f8eec3d0355b139a0a72c9d5b1b2d75acf6796a34e7fd397aa71dfbd374e0d9c1b5397d430e624f76408039a5b456a3ecd014eaeecef3034374514ed01926957a2523f93e8b1d61d8cfb330b20bb499a15799377355afbc3dce99f93334ab93e8397b82b0f6eb0bb9b44c1eb1ed876af44d3a172f2cecf803928d2e6bd66437c05262b2b9af5ac1456fea207186c3e970ab21538e72ccd3061eaaebd290dd29e34ea45bb62f873b005c9073751ec9af5a442b436fb74304f6d6d2fd35b70306651760b23ad2682434bab357c522b6ecb7dafcd6eb7edf472eb940e9838f480db9d71bd6a4d0913a159a9827ec9afb85235d58238d41a2489cb0e9b95dcdcd686a3db71458ed9545bd36b0b6d51688c2ec4a96779a1b5f755cf662df6f19d272d6d49497a30a2fce6c7fb1712db4c2fd2a589e2e301e6519369a8cd37536d96cbc3622a4aecdd73bcf975ed3667d8d45dfea2b356a6e783b398509d82488e76962173428fde83d0cbf4744c334316dad6ce028de0a4d3d93cb02ec626a95ca8289a7bc7a91b7f97df78e090e6895917076c8af19f6cc45fcf0891ace58e125f64c48ec9cffb77458707ec8bfa6016a5f2b8e028b3cddf0ad0e935618b39d7ccd358eff4367b846ff176a44292761ea388b4b5d7cb0ba388f2d18e5e63776231faa9f1c3f4db82e039538d7a8f111d15453fc1a3a34c95a0117188fb74e4072b6965b7198ffebab763b276caa832f336ac7d1828924cf71c6f75ef49861e42c98dbdb8a4a6f0aec0c6413afe05544d9e2573947f53e43911bba54650f80880cf292587744ffc3df2001145f422e1d8f0c3e8bc9adc5b2d45a424735df2e757db99ce72d0614f6ef1e94dff64e2d9643578cca87d6a545975a0c14a346eef0342414f749361859df1a1b6fa77060b97b5743f50f8778625296e8b46c3d622bc68b2b1dada0a36692835f3bbc5799f9b9efee7265a99323989f66f88c5a3d1bef79a8d4d65bedf38686e99ecd2b94e6ff5cfcedb087855d2b7de875c1b94e58346294123004322037069e4af5480c78e45f6dccdcbe099345e7a83f9c92e1d529291e4567cde9e993154f118ee0dca6fd3b7b868e28616e07ab9ece9ae30e10207c957a0fd562e367d3faa4945b9cafee9e6e8da93e94a64a3a1a2835d7877dffb7847fd6930e6484b87d8593212cebb5c7e9f5fc22c96b82da992e0fd570bc590557b617c6732ace5e2bb6617166366b1b0b732e6dfb4ad9a0bfd32fac8afe8be4d35a5c3c1a4dca0fe38fe755ffb757c69637421524c3b465bac8ca363e9fc89a76de78087aca421a8539ca7aa6c53e73f4ba573615b8f2d23da5dbde16579fa064474803b1a14cce8a7006011b242b43ccc706dab4439be9e3f967f13e641f6359e5d2e3180c611320273865c208ed3d76a0aee37317f64985c784a8f68dc29efef6975984a38abc39242e9661b6e3a527024c0c87ebcc8cb0646778f82324f04e5c7b5631528030e78bcc63c788d7c061b977c99192f10f526cced114f2525228ce384f25222aaf0607904e1708b592ac820d64b4b2d757ca6cd815cad9b21f7f42ebe3435848e5d7a44fdbb135d394e2ac3a8737ec9ce2786ade62931f8eb71a40a388dd3cb1bcd0e23756dec12a49be802a386f32ed853ee864ce2168e7480ee20e97c86ec0c36880219f6dd95a1e6dfb4859fe42d844fc74b5650ce630622970bd0750e67e40cf9f4168f1b8b21f70c0ef139c3fcdaaebd3eddeae7bec1cd966ec9dd356ae3bf625600154ab37860ac3388c9c4d093070f86587ac2ad0e34396a428ae84777f0750d1e76f6cc4daf318cfdb4126a96a1250c80373dbcff1823aeccd9f7e93f7dfd41039d7f9d1eec4294b24da5210e3763843e6770a5e87ef4f7c6217d6e54993735d0da007328ce864e378d8dae275c1e5fc31b6e8f7e808efd4c661601d07a5dc7d0ee3f5cff19d352b514ff9aa792826406c23fe93f7aa48aa41362e335773ad02d55e4ae87e76620157e22c83bb96678aa0ee7c7ecd48bf17c6e91cc443fa394774c9345cddd238b63b04855099adde1d073764c449e15d8888c7db2222bf53db72ac4ec59bfdbeb03460c8e6ab0a4e4342d890cd65aa128583af56bd9c27b44037c0bf1f114d7b1c00839eee3d3c3d6e07b08c8c19694e1694ab10dc1a9fb896a78cac7d01036b367c0225a5104ba2565ac120bbc3afb1cbef33093d08d8936bd79ae269cd65ae7e1d9708e1912630a3adf8791bf78981e1a7bfc0531ad9a20b4a7a8cfba41ffc4e67911519ac147ea2bfec50cbe0ab5fb3f77d955ab3f4ce49529f3288af1f7719133f61e0ecef46befe76b8fed204bd1bab91a40bcdb6ab8d90d9848db68288f7d33ec8a1af8efbc002339b9e8a1b79ce1b1932ec6267973d011ddd949d64c88990814ef8048b608858f990f95917804c32674d8b1c61fb689385644e4cc6b87b85191286c4e28202e17e6ef2243a136e3808ddcbb5c155bc57c1274b3f4a9d5a8c55953e5ed2df0a9b058bccc6934c4e848b7481598e4fbc9e00f78310f22573d40643c616856ddf4ce16fceb8ccd9866fc1f90c82e4de6689fc65b0677706a037a33bf33dc738e6b18565762af4d450a5c58bac72b888cd9bc1c740688bd5ab672117f29bec69a61081524fd5edc7c3148e3f65f6aa5cc96c06acab3912a4ee8a1d10e55e9b947b9232e538b85815e23c98bd3b0d6e36b19a99dd3ac9b26e66f7e2c0421cf5ae038e26b836eceebdcb6611dde7ad49a409eb789f919128026fc8ba8374976b8e630fca8c3dbfdbd8935167ee01669596e49f3fbdbdc48edfdd730284f38e35d1bc6cdcfe50d1c9a82583c2cc9d8f83ecc2c60a3540c5374d3089c9a970d764caa9260aba94803460585a16fe1f887cef800cd771035234b0b72893ec9f7723f5a41a4542eaee07966c77ceb10c47e6c997cb353d59bb686e28a76ca07037300c5f4ef332f34e0fe90287d6ebd776ec44895331e5de645bff7bf7f4c17109d4f05f0ebc3dc0287465bbbdc1865320fad0d7b5c4db82908c8bfb3bdc5bf1d08b9019bf0b5ea25ea194d29958079259e444fc3f64700d117af8945ac0bbaa0a3e4cbd422fa243cec2faf7d6d1f8fd1be92c630287bfa24a913076b6825395719e53116eb25d35223febc1c585f760f1b2b5d3e0ee6c78d9b4b806b53d680c9c83f29af2090ee0e739264a52fc75c3777390517ad47b3c0deeb6ba40d14f922776c5d0549655b3bc9b24cd03db2cd2dc24fc9aecffdc52a2ea2083cd928a693b235f8361d7436ad1c39a24c29a575be752dcdc330c6553c38259f7f23c211597a1f3196aded4d1fddbfc52f9dbdf89f9ea590d79ef39500719463f90d956f928360e073827701e9cbfb36ee329b37fc2315154bab3ba05962c581b65811fb0460d102da7c958fb66cb8d4fd63e5d60ae6aec1dfd8b23d14f839b447ec2445e14d389865d17a848900799804323ba4295f5b9183830f5bb7e9ed3851de1e9c903cce7a84b38afff3e76e1d39b78ea3603f60a348d8ed32b53e2d094f8bfe0d98d8eaf222210af8bde4793a8171e24dd45cd728a70ce92b1d8729f08e12d569e962561120d15636dbd83194776dd9211af2207e535774918432f3954fe6bc1cc225d35ac2b751547c9aa73a40215a36e97ea78e1583b6889908b0a1e44bdec5a7bfc76f7a0becbbd6461a33fe4a8b8f9d3a5b6b793059deb14361af9969108d9d0701373a71edaf495a3d516cc79abc1018a2c0f9d4ad5fbbc1187e6cfa2a71c6254c31ec93094130bce7be6715fd5eb664aa73db524e7e0b0a7627809bb0d731d995f882f0e7ba6c22e6f2e1db4d1b5167dea418fe2249b143eeae8ac928a45da44b6304d3e2a1f93600613287f70e7685d9f792a3d7fe4edd13af341ac7e58a28312d3f4a3121594987d58224c6d9f92dd159f921866b6a5f87fd0a9c797353eb1836af5be25a824f61b31bab04c33df9295075a80476dd0c30e3031e1e574b074e7d08d36f8c319b2236808f455acf57ecd66fe2d0363afbcddced24d02e9fbcef594bf20d5e4b39be6be9fb1d7e56f4fe75cc90dc5df76972bfe1abdc5928079222f6415dd53d48134c9b97b1bde7736884dcded34e134b715d86380df3d32db2473a9f51bde80b4abc36bbfea86a72f9f3f99e7a23ab95e678feaf4ffb04e3c7f55cad178fea27443e3f944a98a97b9d3eaaa941f1b3e3f2fdf96e70f4a4552cf4405337da5ddf107fdd978baae173ac976f183fa8aad53f13332a5e1093cedb22ae4079dc22726c75010ccbabc35e4bb94ed91681c7599d2c0390dbf1dbbfedd71a0379e8ac9fd4ed5bcf6195946b759520d46edd04a3d777060cddd94e84c5d664849eef070805117623e47f5f5e4119d486206f367999359f8602679ef2db3588497a5c7a141fe17f6ebdb585e56ce861534cc6c8bea7a420ab71181d131e7c720c48f34113fee460c8735c8fcaa0aa6996809bf2a4361eb54a74317eeb2ef87517e2b190e0ece14d4a5e7a5e7a00786f095ac22602123a4f8644679e1f2bdb67e2d7096a607cf88b37abdcfb6eac63b9c8b0cada41f5833bb6ea8aa111616ba5fe8c6bedbb732e7a4dd7eb112c7a7dbead0ec67b5900486c6cc929f2988b2dcbac37be899e12b5af9ebefe4117d459aa9c5d9dcea51b354dffe48d2ae7fcf49d976f8d95071c7534318dd6550978a785852d7e27578666921c5f5368bd96cb14c8ac28d33242b863c96e1375dceed937638ecd305b7358b1983bc2316b37470f5bd59ab7fd94c4088a1e5d1d52e47b7adf8b62c45c1c9c8188155d60cb0f28033b827adb86c101e7b70d0ed73b17709654f1966bedfd29e7b166d7826021dc0b92de19a4ab9b9d90d96b14923e8319f78bc5bba285caffb2a445137bd0ad2cad551d9d34773f32ccb27eb10bf91b5afe3dcaa2066b493ad1398490cd4a2c9093856282dc3ebd8c31b02a675a595ff0533f6b402ae295f937c2a911bc43a6d4f97a72d68e3869a1d491edb7bc763411e7b523ad56c8c7a206ef757eedca8a61d4b4273e1fe400b6fa69d0e6dc2460176e826d5ddba6fca6ffafe21cf7b04b9ad2540144dd14781691b973d7f034abd869b83d74eade178b541fea92e7e8f6700da1aeb64a80e07fd01c315d70cc355f368030d554eb4d78945b4375095b78fff63d7d83de98492e0030fd9af79d86b73ef5f38c8ae1256af1d753b858ba95c6f2f14484892faf39c76e470d9c36b9bc4761b6ba4417ecb41c9ffc258c4792c05af6493bfed7b47c01199a59f7ba724f74a4cfdfdbde974ec75fe25be2bc18fae9693f2a4d4d19b712824e96d939ed344e0ee50e9e774dab377f283d25d6f167a5cabfdde5f35ca77f60d4e9e45efb148e2ff71979fdbb699a98ea7b536dbe421b7e0a95328dbc453b750561ccb5aedcc72e8c32fcc874b99440bbdd671cfb2afad637d7ba5e407ba1b3200582b6438797693f846ff3fd01eb8f6ff63f6ffb2ce084e2b0e4198107ed1b71df6e97c1b58c1c3877460b9bbfcba327512aa99003b66d3b145f91d9e6e3bc02be6c7073cde77389073d9925404b904ffa07c356f912ee1a15dfb984b7b72007f66aef440050baf96b2562381ed67bb658239aedeaac6adf1ce1872ee6492a682a927eeb1c76d60854eb57f3b2f1dc1eb28cf808c7589b1c611830ce92b33a0d55e54ede098a3572adc818ae480cef12d5c4dd9ab79b564158c8b09480ba5967546a19ed7993b4b5b964a6f6919f9c5390cf1bd6d220488415b48127ca4e3051b22765a07bcde1776b06fb1e12d8663e183599e87a4fec9451daae1225b874e611d96355e07f915eac5ca29837b52d936300490615a93a04011d5ee88745520bad12bf9eccff86e3fce3cb6189d8043b5aa118fe6abaab5c15cc3d6ecb6577c12d749ff377ba526a1df5d9cc12e00ebbb1f9c8b03aeacf3828c965bafbecba2afd5b3d96a43a5532ffdec0c07ca173593192da53d83daa8202d1cd7ac056e480060c3a7fecc48717626b8b1e58f92e0100b4a3a5d7dad60e9c99db84c2f2407e8229375916d75cfaca65bd78bca74ee10901ff8a6ec16bd0be08a85f4c007f6fbd87f27e2ece22416fdb320d624a868d365fabe685f3bb74315cb73fe7474759f47d6be2d6bbce5b7ec4420ecd43eb5e0d9d31ed47f29329fb56131d9d7076c5ebf1baab9a766896979e1a939fda31cef4088aaea59522c98d97c5fc997a152ef6bf942b7490486a9cd00e2f9afe6186cbd3882b16ec3ca9fe5bf645b1c6c794a6a5eb2b97a37859e52ef6683b47b0e02a6280dcc06b9ee36ecc5dc753cc917add5e1918951c9ef6b3765e6acb1f18aee575f0d333baab4c9c193b125295ddcebacd0a72d8f70ccfe670756ec5c4841710aa0d67587bb24e2a01458a5ec6637a19be49b59a6b15aebc2aebd2d68f2d130e41e92627dc0e7ea54aca5ec2946b9c120fc14a4c908676f79e508909b018c13eedf774f6aa8e622d0a41fbb7201e8e41713bfb298d2f03915389e77ea845da94775b878cfd81271edbd07a5ef7f37f0a2d027f21e5a7910ae352b5d13dce24c6413626be16c2ae5cebdccbe0c0e1c0e6186dacf336bd9a2c924dfad73cc577759f4a46ef864509fc1227071553487d6eb94b908d66cc91eb32bdd313524bc7dcfa20faa1f157913e9b067e9b00276f31fc3a2ac7ff0634dec77bb38599bfac0c28b63f9f63a599408ee25e8635c919bc7bbcad58150ad517c5561ffce59e73a4f53c326fc14ff8b68a62d1b5db94afd9a51d3cfb2c3a7107a70c358c6896ff3ba8fa9f57e4cfbf56191df55500ec79bdc4ff1d05bac035b46c9692d09535e84fc45983053fa59e95d6fcb064b95d6e0aa5a832fda61c9c6c4f6b6786e0cc3b8c977eed8ecbee21176ebb62f4ebdcd3b71db9498fe070af7e75ac33a99a77d167d9bad72d917ab6cad3660d694e60d1e5e16cba8336006df6232ff61c42cc20bae659173c8ec85fdb8666d92247224ae1c3fd532a3921804ea48708d608d1e4360f1b7761a588c9d214a3ca0d617cc082d32b892c4cb863e9edc0d55ff1b0c9b4dcbd6779c5e40452e5b3d8ec43ac3380d5b903c37f2ed9bd2937a9d3c85bfd5fe62ab301fa9b9dbb755687bbd1b65b7e3e8a0e37050584c33dcb07846a1bab3a7de97aed9d385768b0befc03cc8f3a6d42e9f8400a9c39bf03e99f568e95451df83d8f783033d656dc05aa653ada408bdb50433e0d1dbdb2f50d3fae062ab93826a57aadbcc30f944774a75bf587563bb06aa7ef56da5d64ef139afa74f8951ae2c18f441732dbabc77355c64ebd56045d7b1ace87a56baae716714d45a5564ada5c4e85a9c10b47ab512e4fd853bca2752f826ffb6ac9cea86fe659c54d4864a8ad82a0f350de9ed7743179be8add9976be2e39ee5bcc13c7fcc92b7fbb2c3a21e379d39b0cc7a76d153516a941d4809d44873b4fe419ab91ffe4ca86aa4f5ec27f32ca78607c320a98684b374b8968a3360c073764faf066cf81daa019747e4d1f22f2a8db48a702cd843cb4a435938034bd480bb06ab7d162fe6e588bc20f442cf51b28d9b3079a196d8f92d6ac001fc84cad1012a04d6c254607673865fe8ab7683ebec3406396569d62cddc011cefe2780af32891caa3e8cc8b5413e969d73e9d3c14607326e6e7924a9dea25c5394f1d00d240e93967ece0e49d11d90bee9976996b98b9597758ff792cbb269fd17d1fcac15dcf5e92fd63ce0725c4e39182459b1839b3be3fd5a9163420b8b183f0bbd8ec17dcc1bdd574625702c404d56b5f9397603a91ac513e3c04d2e60cf6dfee22b282bb0e274b647eff2e7618612cb879f95cf5ff382e0ad5cda633fe016fd206fcdff225f0f80fdf5e4b540a9bdc8cd3c8c4751162ed8f64785f4549f11b8de6873fe5648e4ec38a9e2a39f871b2c8fec4c5e78b885c63e6de3a8d0b9a0126355476d73d7ca28d23e73373b67581c897d4e66969700a088660396a1097f85de1aa2f4e1c82c28f3840c66f45468aad80aefc1a20d12c10535877d45ef7c23cade4dd4d4b3ae3e0bd0994a1dc0551d67e2adfb04fc9831708702a527094a9d51eadbda65708f8dcb05ef9902e26966c90b708ed11f815502b6cb011a0f19c22bebb7b5ead012f7f288e1088a700e676b8274ec432468219f8f9c9554eb33f35bbce4aee461602a3951334fcd1a039cf70759a330534db34efc54e79c3df0d3f9a074147b50d30da4b4af2ac80a184dd9805895a86bbeb19604f4a28983f307e2955b7199dd931c8c94dd6ba80e8210070d95a9c45c268b38ff2eb64f5587cb94144e9130e4dcd685b151e1086c90143643a16b3acebf3f48e1b454f32af6986358c7f9832cb1e5daaae2d1aab2b2e02ac94290058b801b839aec884fd3d749b6f21d20f21ce0d076de5afad31304545177ad3ca82d3244692ea199779262afbc72db0cde46a98a0d5627a4e0a29c8f72401a9aa34f8b72dfc828440f9fc10b6f8b635e80863bb8f1584d5c9ad11d0ef4f95f9e17fed8d619d26d076e9ebf2b3575f97be80ee8d4cbef07667900c474f09028cafcdd7a7263623ee7804459e0735be7adb911ed9947d490727f4992d1f98613fe80d485c5814e99e33b87ec059dd2cf42b0e84b042542dd9a9a40a894a4d9645f34acd51c93279bcaf015d06ace36f06bd9faa5a1b51c0b7d47a2df32e460f2d312282276217c10ae18ff861981ee24fd42fb2f72ed621dbbe84435b9d569eaae742abbb2430c787a73c085773395ee11ef9e6ebefbae9a0149f64a350b538e5a5c6750cc7180d512beadc831ae7f31ee02bd34d582466f9960574d0b0a82dc64d678b2f4f30c24f0778c9b802c98611a9c2c2b82af42d2bf399e5acd7cea7f9bb8da0753f557d57173624b124eb1bf51131a1b43b0876aa45ae01bdb0902519837ebfe926952aa537c147b39e01744cdc620e715500133c5d64dbb07bc57fa6f694b76f8a2c77ddf7912fef1e251465356ede2ce6307942936c2bb6c4017f143751ba4acbc111673f6264f523e05d1bf2c55bc539baf92b900556e1b123d7da3ca354c564b360f5faff241aab41720ab322ecfec50395aade86943ab6a33f3b6d4aa19f585c1d0caede42e7d8495e42fbc3a722e341e88429d5faf147f5643d584ef74fa2ff1b39b6ea6c2eaa9045f6e2ccf907dab98e9faa730fba6d9ac3a52a9229bfa47b33e54c3c25c5f54206a5c9963d7e53c3d4b77605551dcdca52a3aa2b8a69300ab4ebe7bcd4aeeff168774a55226e1ff902de6dcc82428ad66c055907df61fb7987f49a4f69e1aaa2a1487c2d5256ff441995886d8133dca7be4ab0efc63cff5fec505eb67c9d91bd5407cac211e86a1251e26ae1558b112310cc6351263634442acd82c345953215dd72cf041a66d21ab5c77cd2ee01bd4db8096a683ab39595e72037967174810c0b5800696ab2224364a41e4fc4437339a7af22d1bc4f145222a345978ffbc3fb3c540fcea03b5a5bc546d4df0644aed6ebec9d32e9ab60630581f39434b76f4cf8bcff6c267cf15232fca7acb1ed9bddd8d550d2c858b7109d508c94a8efb82ef68862fcf6c363ef0403338778668433c021875b62ab97c4d76a1df1714d104d9df58ffb458789956316067f69cd4c96ea370ced605b60943a6a0ebc902ebfd4a29bdb24d1bd8ea55466d6ce5c6c9cbd79f8aaf270332e4290086da1335e4749017f586794f8fb8effb16c98620d999b228b89eddb80a866a8b63bb6ffce1dae76876b8f5c1fbb81475d2a21f9bb2f71bcd415107b5c0c6e87ccfe27754f73bad5be73b6970e6636639b69c07c145304bda6407e1caa97411b7c85b61519476cc1e0824b62145024c21cdf39268c434af8189386373cc68e1b40a2d90e569e6cc1ca8b9cb79e9a536390727067fd8a29a6623d36efb2a24a2d55327bec6e2291f42e8b150510d2b61de645f3de5679aa48f0a3939931da8a481e36218d41ada3c1cd86d7c7f10f8562dd52b95d8a461150d6cb0d0a1d2cf5dd9c5e4dedbf6b321b147dfaef7d92a5f2eab9ca8e1afc8fd6069ce1e09e4d04a85b66c61fe73980f41a48550da4c6956ab32c4cd027b74ae2de183dd00180750de8c4ccda79facde747d09de51ea840e367fe6b60a97e97e9935ccb84236719086ebdb855053966f76df6e57f69cc72e0ab385a327012a09d0bee3a545eaea4dde1ffb47aa8e7f1b21b83be2694d24b7d75930bc51a00559a02d05def03b64eb15fc68d62d5b0d6755b04181e4a2006aa8a085aab410966a9048944d68a594b683a5698b9178912049d626f2f3314ad1d3d742073221cd6aca4153dda6c5683bd0d834a69e15ef3047c0c3c2ede54d6de0637bb213b5755875d0fd97f73a193736489296383d56e89c098702d54003d245876b3221af3263f05db233502ebabc551faf50fcb0e3e71ebbd82287c68581d0fad779171f54a51aefa547d3bf5502b1aad61ae4501ded6620016e03b56ff4b06ac48e85bdae504173e345dff9b557243ce1ddfcdc592189f050e946afdbe4b58d8e3db29fbb082469372c7c5c17680a1c70085740c6116255f4a61d9444bf18d38b0badb3181001c0da73edb6e1720b0965e916cd21532883611b773c46ca7fb7b5b1341c3ed7153835a6faee51050040c95a7b95c3dd426be697a1b9e5db98eb9074d2c2c8bde682ee7a190819d56a7f2fa1f65a6dc64ce5ccffc7535f129b6a051acd399e47f9bfd79f5e2ff090ff3bccff053b17c87d00a520f533d6790f92952f65b5daae326504a7ebce7add590ef2a1352598d534d54232579a9234f665d49b0735ab63ebfdb87b526395403c68f8e44c52074882b9bc1fd5582d40d69d36f9ac7d811665392886b43eaa846fecf3de2774d71467bd86ef757c0f1b3d065720163bea95884e56cfcaf5efded458add1feaac5a8b1eb1638e1a947df25a2336c69eaef14bfeff73e0def207efd9177f7aa269997a7db3667e91e8ece329cb79cf6c5161d9cffee7f8d4806d6246108951d25c78bbd2eafb691f49f70e79be6e928d67c5503abda6e41806371b7650b20bb834dbfbe900a8823a9f6cf56e985563384aa74dab0f55072e13673fe4e1bf7c193fa6e1de166db52406ea6ac340df3449c4ad58ef0ffc072b4da4c8ae48694e7a65542e9293dafb43942e9b4cc4c9192b688272becf0bee6a088063a14750670c86636a69b7af2fa48394b16fad69ddf119e5715791210bde90c7855f09a59150aaef42d7b0733feb8bb77964507807f6c3adc7ccdafc915f973d956ec13acde45a5e4ea279b2e76e88d65adf615f3d32dec03a900b6ea335e59ffcc9f42c4326f1006a305ec45fbb1ee02caa34381c686d2767a605d56762c71fd075fd3a4fbfe21ebae0b350e11c64754ce31bfcec13bf48834a9ac3e498403d262ea3ef82ac53a391dcb50094e62efd93662a51a62cc5cf544f96be485200bb9bd2fdd5a0bba507daa49329dc925cb399a39039ed41bf9ac9cf86a48f104669077227cb061352c78b3369844276211217161e0e2108c27f9173e15e6be5c513d8104cb0c8d6c3f54dfe018d0c89daab4aaef2cb1b8bb0dece4d77e36471b6c8b5d8ba5fbbdf5dd34d86242407bb5c924e4ee37be04b0f92f7eb25ca6e1406066abf813b37f7c51afbf336634c3a3854889305d73d84505db6ad91a309a084980e86ab765db8763ca6c34a22707625eef8bb5891b0371fc4f1c8997eef996e3c53a0b74ed9cc9e32664f394db6659987789216fff174bbcdbf28d3e5fc1ee784496cd0dece27376c6689636fe90de32f377eea9037e0cbb86d4a5b80bbe948e85be3c16632e1936334d29f486cdd9e07f732730f101416ea3eee54f76afa00e86cd41dec559135dec6879790bdd43c27891aab5cc4436d137f125b06ef31a9c45765f9a3518a9a8fde1fe512a79ceb7a85b6721a80bc8aecd8a19f035d7cfdae9a3b982f5888d9f733a5cf73b6c5b7981a7838973f2743762cb621f393665fb6db076bbcee0eaf69be179b641249f12109708154fabd1ddaaa71b5b4f4dbb1fe13bccbb96e706ff9074b365de7a0c00b2c223bf504ba026dff8b2467e75773db0133d94723ee4f090c138d7398f966df68b5cb56dd495bc8d009a48162b040a72aef54eb368043113e2fa794a2c170b62e93453376a3e5aa21d7d24b88ffdab8c542b176567dd41e15ed5394209ac02e6cf2b7733c6424d3b806da76dbfd64824bd02d95976980f9ca3b861430c2d3e3ecae46b0544b9134f213cb8ea83fc32a6027fa9eadf1f2ce5be3b30d3f2603bdcb27c3e6df16dddea202f45ac29ad39e9f1df4fb896e75a7ffb974de2fce4f0982b30b43a23fdced29e1fada2393f5ee371ce486a223d39cf60c490adaf1615d98bd96db405afdd0c33901f3abf3b40d61d514f13062c2e27b6db9039df26e435c269ce7e09b2e29229cd2d7ccbded2b243deb3d062ad5cb38c5f948365ec620a22ce39d94177aa78dc78645e87fc17ba0320b4a176e2f37aea841d5063ed44fd5fda9aa063734f843370855c965ad97a7832527ac7ff9f3bc56969b3b1956b7e171560803fb4ab3a855e3d1619b16a278066c02c6c4526bbcb89cb5b21b3ef5441a7135c541458b074beb0af53f845028c1bb3dd09d9039cf5f56868d6e5e663522d68558111aa8b0e54528621e60eacfb9feb8044bfcdf8d66df0ec38ff5a410c5c20c4463e7532b6bc67d6871626e3a69fac53bcc61adf5ab695b56c6b046de1f545874516dc49abbf98fabec8c28d614ac79ad5b13a0ebc980f981673ec1f64b48d4e601d0674e7fd6a778235c1e2f525e93dbcfd9217c6f1e681475523bd3f2807328f6cb52e43cd769950747e587d7e147ad519b3ca30f4eec66a4c87585f1c62cd6c7f8dbf0c2c5350852fccea40be3d30ead43823604d96e93a044f4d40f13d553d6b38c0b1d68f56167dffc2b15f5fa442da81be805d57897a9ec0eb9c39bee7a5c921904698532feece379333d52e4314bf9c2a99a8a722ef58a17cdfc0747949ad1f5fcefcdb947f7baf177e230a365cea3a7aea56e0b7610ab502859ad4d6f1ef46aadd077832d0e1c35e2e621d9bc1dd487d5127527afd9b237e3e9b417ea7fba00f7ea58e7dfb243a1c9fa89621dc297466e726efb97bbe03492db1c66fff9065471238caae52ca696569e4020a8e3033ec34035afc06e91687d44f8a6f9b5a36faf3d1a2c53b5880f306b4aab52c112605d5dd77ecb0b3f9de679d5e2ee52c05b680e806ad67c09b455a5f425dd641d0e5a1a339fb61e6f5b6595b2039e1946f903ec28e6324457984e2161d6b3d14e6d0f06063e115073950296545141f9b63d159342b3bb6bdd87f594c0bdca877ce2063be7db57158e017276b532ab04a6dc5038f045cc04043a8ae7798442cc64405f71d6d858bd51b9a22732b3389b8e7c2c9385b0aa2ae3b4135a1ac3348d5d1c6e05a6cbdabc1e3e33863d7d385f0ae873e2917b71b62a7551795c59cff5c3cb340443750a66c2995fa9b99c65f1968e095ee05520124f93dab40933a27046b73c9eedabb7b5063b54f023144693071e2f1120b40d33daf54769da4703bf9fdf2b71ea93bee0ad00fe8ed6c4c47441e171644a9ca664061c9f5a977571be9e960e24cc960b5f19ae425c2116ca96ea58859ec262c455592016fd56a425ce530244c4dc08b1cea16bcc8b16e6df713c1c79c69dc99791c94eab012789117e50f9d0ac901a147bae93d47696cbdba038ae07a009a09949e8149931c4a12117e3af08a6c2204784a81706e65d6df4dad7c3329ebf4cffc914ec4c15eb3992ff66a11f5eb81e2f0ead07e519c9f679ad97b6a7cd10f2242d219fab28a102827b9a2360eb266e8c2bc722292679a2eedbb3cf837be754e34cb156fea1d811e74aab079a198fd63a2d473659a0759c7de1cd849c95467d1bb5d2f6d7364e9c92b44ef9a7e3f2a3d5abe95d1779e5570cfc045276dea386b7f271898cf7ad11b39f28d8c5609c92ddf58a1fac3b667869ef8e9f1dfc96435c95f745901ffada07fd3e2933c8587767de5e52a0375fe955f0507b60aefd77918a56d7e45721af3a7d6074c293d7aedde9b8d7b08169920ec4b2f9b6fec3cf6966b803a714e6f9f339af0eb6ea47fa8569cef1302e17d94d58924cfa64f40e870bf375f3662edb142b01eecc460fad9fceb2336dab18edc8af689ad6e5937386a0586854f4d56509c9cbd7f6572d6fd7c72caf3721430a0d6e8da31479e8f95a5c05fac110ec796b13a335ecb97bbd12708c2a3a103d18ab542f52e5f351da0a677b74ca6e6dbdb959c3de5b77b67fefa61a9f853a5e69f2a45d6fa6da348c7ac143b86288c677cf93e15732ec1701b131dd053cf7eed55f95935fb06a3cb0cffb9d913b26f1da52727bc6c1ebca960f8efcd77f79e79e7dc40d607dacc42fc28700bca1c72d5b292e5afe0c6b2c6a7f9fec4fcf77d06c99b516b737aaa6d96e84cc93715d09b23351c1ef7feef46a7678c17b06930e682d42f902c1d86d118d159ab177f5c750534e8cdca9e2fe91cf163a3a93910db71757e49348aab569b41514b44b7f2d33c8c3c37bafd86a12853a4232f55c455507d4daf36e303905acb670665e471724ced678f5f94af8659c63805a214d0539218daa8a3d5a0f499a3210b9db7ae649e62a17edb064798cb46cceee53691808d5fe3457b20640ebfbde53ecc9faf95562d5ca04cb4667b12ba261f14ae90737cff1bc9b0a3e1fdcd8e87bad4f1726d33f04f5992d654ff115971ca3363e6ff996250afcecc4583d9b00e8ca7f60f35fbe366a39b3f1d953c8fd7bc87da71ff53a38b35932e12f25d068d543398dd2297e12b3471268bd2d3bb07150c4fb7b7d5dcaa3e7609fbcb67aaf2f79daf7a73fdd795f774d5df3638a89aa5beb55b38539d6e96a52cc86442d9a759ef864a453a47f57e184180f4ad4dbde11107896e7ee678e4d3440e63e5691a8151a5c7dd2063f9580058d32d1f0de0c6c44c524bd2f257cd89d812c7b7d619bf535bf60bb02a3efbaf9873ded807459eaec3e7758960a778cf7177876a293abe0ba49605d0bde6078f05fa5d382c943494919cc1525479de7b442adba8f25c6500a1515a6a63256f9ef0e671cf768b260ac6e19056f07e596a934975b1e03bc5ce110399a2b83c9e18da3651550493bb4756eec998b3f4022983c06673110e09ff5f5541ac2bb55e8e16339c7589563f95533788b3d558e97f1220086dc2a1e943a09aa8ea4b897baff10a3f572bd7f0667f19f65f2bf56ca8e8ce5bd702a80ec0c787439af10540d552200db9983f95006008036b854301c2a3f9ef62be2ae190f3877c63270999759a46ad1ef29b24718a3d88a6438a283a957a309fd24533624cfad3179221bef88b5a8605e6f7f7699f0f1519c79ee9d0343c5f6cf3e6b67e178ee38965d4f68e65d4d56e20a73888bc617e8a091bc1ff699d8713cb916cb1c06cab3a3ecd779aa82eab7fdf5a151a5fcb4bb15ea65dbf41f7d2e331b4e1ac2069bd555370466f1236a81bec74e5001224032c3b0759acf3f33ab591a3229e98d7efd99db9ee9dbd7cd0a401c26797da184d3bc19debe9dd7daf432ca4e07fba36fea75b961692e6ff7b6901a6f3ff37b2024dd98c2c2f8d1e6703b9ce5baf0d43a67f5e2d52690be2d29c74e0532f3204f9c50ca4e965941b5000094d79ec4dbd0d487e321d96a5750abaed0d63f6889dac1bac805e6f4a10d16d018a5a3174e67f260ee7e99052349a65697b66663b9ebf74f203f8ca4635896bade29c989deeae7ebbd347f646478047039f0e00cc78a72f0b3b1d71b4a197ea6caf1f7a5f19ddabda0eeec2beae7bbdb86aede946d3dad36ed3523ad5a165a659be0d448ed85c81af3d40041f292d9cb333f732bfdab317d673eee08d9e2f2867ae662088d7c5911d77aee21b9632ce6c91336f7936128d7ff0524a6fc160e7eb32d8790d811b4d1af6cbd27331ca3a6dab3264614109f4a8d4db3ee638b8c629b8a2d749b35d2ad55dc792ab4c879c656a50287c0dca4d70c0cd2bef9423af786d1fab9281f598dfc404e7f9a550f77554b6d6965559ab7affee4d3dc2454fde69a14dd8f82f92a121562fcb7c869d8a0483713424799a8a9daaac835d11b8107085d7b053c81b4ec49b644f71d223b5888617bd3435cef0dc947f52c3ec7d29b7aff3064c1100d688bc8b390bbd02ed66fa59c7109c6a6083b59975484a7d9136c4f2c136dcd8533b4fedaef4fb4d395e697aa308722414d743e00447ec447415c5796258209cc2f08521130d2572611f37a4e6c55cb2255423c3005435256d4f08777bdbf74f42b0def5a9ef7312115145b76c5574cba20abbd6a7a9024c3c4215f6623a3264e140d51c898c7575e9906e11537da25e3c2ebd231a35137b3d4fb30470c10d29646bf167b042eb7c312333fb32205d470bae207518926a9b81e899c9849bba16015b20b5ca5d4d2b7fa1396fc5dcabb03ff0b32339561e7224233347b1573db27e8713c341ea7cde356c9a7ee66f8f0dabc5d03394fdd473dd3e319b7bcec8b1f56803ea93be970b5fdfafc7396a55e2595055bf7278aad71c836afb95a9c9e9c0dc602d029a59b304f5b512a4cd5992691233974fb016f6aab72948db1f2594e0fc3e6a1657b452380b63cad8c887e81c0d699dd228fffe40463fb3efd962d6addec0f2dab26f633bd13998d77e0b361d6ae277216abb6f9822b38b1c735caaa4a40f7bbe24d2b97bd7498f5dcc422c4abb97ebe881bd79ea4bc8c0901db82ae0cf35172543cc09633946c3bb400af2bc156a447ca36694499e23a24faf1c56e603d1e84d8db80e00e253f0cb37f26e2b758b5c045ed8cddf47dd6f593da1a7261368498167c46993bef161ab00791e89c56669ae86cc925c8a6e729ffadccd49e6029ec0c36a8ff70ff84e951ff1f08487e5ef54a8f826ccb88e944ced96959afec8d1d752c44a77116924dab1ea4c5380313b7c2341d687fd24f10c81dae18c19b59a9fff564705eb7d0f91ced83ae32c6532d74596d060e29eac98dc54a6fa31b791da7378a0e1099809c65a2f8d7948bba28b7aaf2f949614be3fadd16a5581174ec89ef016dd831b207505a16b21538509d384d00a646fe0a7709a858cbf9809f8c906a8c5d9d26db3fe34ae14d78405a74aeeb4b824eab9f114f23f95564fa9ca925d1edba5df012fc6297a3b6c601e92ab59b9a68b360fd4e6f1769bc3cc51d2940af414fe21610d8193fe457285475cf74f1c25f8dca698fd044e594fd9317fce8ef953763c9f0ca9182a356c51f52f7cde2877a83ec0c30977d20e9fe19ae179c470eab07351e3ffe3eedfb6dbc695a851f881e43124913a5e821445d18ee3386eb7dbb94ba71d4aa44889a2ce4fff0f54cd024059ce4aaf6ffde3db7bdfc4110982200e8542d5ac593f49eab1ad6fc028a5e11bf3dce3c0b107a2775702aea30f3165a741b7faa0c2be6467783bc1c2a7cfe33fb35e0c900a4d10d050ac3788919258b158a93c5c2fe8f43d0cd0385bf9319848e068a8ba3fad77f83006fba1fe271f3abdcd60b0bb8b863eeabaae345455d4f1ebb09f25371141b5bd4475c2fb551d5e3c7ffee8f947fbbc1faa9b51a246a15a2dc982f2da9d53b4cbdbc506d50bc276b8652db160b56473626a6a57f4df29f5549fece27a1c9714979105c8a3a80b8c4a9b16f1f14c690e4282dce1fee9ec54302c27fa83b380c958a9c0c0ada06d0aac4c81965b607b9ee991cd02de37a889ee1be6ab899eb78d26a62ba782d214284c81c22d70a47426bac09bdc3fb86f58af267a42644288aa0bacdc0a96a6c0c214c8dd027b225ad405becbfd9dfb866c25ddcc4da415c9a76f436bbca998d54f200f12107b6b59091609cf5872156609f140e46bc6e2ed4fb39b242c2395fd01f520bacc219825b4a4e779f241891e9518059cbf2e32cadf9753e0c62df239f4ad19ced885099a0e4489834619ba47006fe466281bfdf61120259fe4f8f30739cafaa135439e2b78a8c0cced8dd8dde88f8cf9486be6b528a474601224e36014836c3d52b11ae2ea6824cccb449981ab8de43a03cf01418f115e0b8af2d6889d0b7ce4091f8bb961085569d047f4b6b81541cdbaa7c352740c865f2cc3c7e0cbcd65d69e05cced472aff6ade39881d3d581f074b80b49a6fcdc79c04781808bab64085ae1e4e07b62d4fe88bec2e42a97c910ce1c49bbec0ac4715b274815f4dfa5b86b1e8872c40e4866e17753937731c71fe1b02199b891951369d479bc0a4e6a7627d68b06068a41cd87c6138f767e756c8b6f61dff62954798d00fe2a3120e8fef0409c3e073060e3afaebc33ac51f9581da0d9179a13f98364f6d5ad26f7b1623f926a753dd01afdd41c3b8596748ffd01f373b4a4ff51f3497e8e13c32b53c29f576514b510112b7602cf57ad1b078e529bd24ccee6882b8e745de2ee7a1c99464f628dd5f65908134c0c30b7d1ced797b1ee05036243eedf0c9d98757c18ead05af0c6d03593e1ed0b3f655854f43ff3fb0b093f1bdfd460bbbc3cb8aac404624547dca02133d3c710010ba71c0c3a646a13f704fc769df366a335d4f68edd43cd1b6ace39e5943007d7f7baa1bfafc5e7f1906effb8cd24bc9d88c6466eb63e4dd97365a96b6d8b075b9eccaddb565d7438cd51a77579c515cf4ebcd4e209558766d3062881a57ef66a403b128e16d616401561d02cc86dd90cd593e9edaed9808760d654644ac4ccec3036356852d127692ba1533c76143f9d7cbf7d809c011055c44cbc0f06855a3828e241d2883eb2b34bcb636c307fd8e2fd9a82122bc56cc9b301f9fb64326ef0f41de6f962b273c29dd055bf4dc29731650e79e17d7005d5c728d2a676ae37dccbbed1861d507804d8f43b313fe10828b25051dfea3761c32540782aee3e92532dbcca0e58678e6cfe10229d5b96bb739e353ab8ad2110bda8e96fc800f364c19699d72e4cbc6ec39057d7c0a2764eb0c2d45ad1ffac346b68367f96c79a9c7f697feab994cab90a3c32ad8c2f468fcd0bd4791e4329528575eb49eee06bcab5624a67bc1065044bd575741ca1df24aa823f580c07d79774d1f1caea309eb615aaab9f9df9ac267f85bc287b4a9e73f5ce1132b15afb05a188dfd7073a7eece937173be6231b7978905ad5fe4a1d2eb985df9cdb522104bf2acb0eaaf5645c21a4bbb65d59215126ec5462dc1a2506a98ebf7c6f75561c7b90e845752801819f84208b5b4d4fa5fdcb739cd5a6e6ebf213ee477bec1d3ed1201b068c31fb12d1a9f129a4fe948a3db79420a99c9e635926c5efa55656e9fffa1c2fbf0373eece9ea878d1b1f96373fecba1628aec913501adb0f3e6ec14ebbd5e7c6869e624317bd831e1937f7eb1eeffad183f4a43c5c45fad4fea58f50e6bc1d8bd155a93d5e7b312a5e4aa27f46490dde7571acee7f735ebc5debbe4ea3fbdabfe8bec474df2a0fad46ba06fb2e8ade9952bff3699d94265c7c8f64e0ffc507d463d743e6e70e23db0807b74642bd48ed2062bb1c62e53d194eed6a02622cd8d0f5eb5f20733b810af75350bb53bb70ced982bb97d208a97ada6b3bbac276ca94183dda56fbd1b0f9ce37a57ae69d2f2aea4fbc08b172c4e3855eeb150927071387dabbbe8df566ddecdb7c098d61885a90eeedcea47b6bbb3d372e7edd734f2a7a498f68aa5ec727b38b9983cb232326f0508b5bad18ff12ae43ffa3d6bb62c26b48dcf9f56fe365a4942ca36b2bf759dc06cde52bb9ae44e36944309c1686452a54478e94397034f9f1991c8bf2987cc3b23957b976a5b69ccbf05f4bec3b3bb17b8de1f1fdc8325e0bdeb081e7edf5d881710a38b36a1e6ccf7a6f8dfd905db2fc548bcedfcb7f2e537e4389f629d0b27e28030febf89cbff3b021ae6d8358b78b3c53fcc5cd4c7b1e0eca63983f471ddadfd5026a517b0f0bf30149b6b7928f67da008f915e1aaa11dfe6dcb165508e5ce56abc415ea42211f5fc493df443eaba945756393474cec2ecd29b8882a2cf77ba157e34ac231bb858040b4338197f5d6c5cd046c5a80bad3da8c7cdd9553bbc9155bab2a8cf368c4570a9a5b2c43913d155d80f170df41360234f745a0a3740876f2e12e78d0f948eed6ecc5c41396dadaa0ec68d03d26864dd860f046699f85f19b876914ca775660bc02d2dc85370bab782ed1cec1f38f1f645669e0172067de755bcbc7012764e38007ce3b1b94c0b74b1bb9e784e6dfaff29b91f8e135712187de76c3baf57b205f5ce36a7d90bc52172b0839e7d041792d95726ccb9ddfe83f5ccf385e7f3c819803966cebfb85b1c6364d67a22b74cf36ede78f67c71778167131605c38bdbd5d124597bd3233dc20c7e54e136d87396e84df77d8a245de5c3c75e5c4a87786c245b4c3d9b6c310bdbdef519c8b6b3502d2798e4b4da8b609337212ac747b6ade71d96e3cb0269cf57c94d1da8f0ae5cf103d592be3cfef46743165dc7d0ac56096bd1c8ee21a5afe65d04e9e0b80c9a65fc7184e039e2db6a45d69b385a83a8108d1ba0fe6d31b159fa7957ebfd4d1328dfb19891271c31e6268c5c956c925a70927729ddcc09f9c0e422bb909de6d76a14e6bfbfdd36e0d7ee412b9e9fc6b57de50fb199c2d228fd654147ba774bc08d3eeadda2e524c01d92dffb498bc8af6e7f70a648b4cf07ebdc68c9c27eb39e7d2065cba0e2a6713e3693691c79be42c271ffc6a3df9d47af4b189e86733a7dd6817835621583d661c5943187a01c5b2bdd8f6185650a532dadac6da8d5113d58ed2e63485b8c37386574c85787d03097397729812f3c0827804f23cbb4532eafb50dcd62a7d0f617fde814548a7d8fc75f1437df1cdb1573bd78a2923238c0412c73225f254efa42b658ae927762e8c5114f8d1ddee5fa3a611c796a4390144bc2a1556427dcc4e5d25efec1ac96a2d39fa65da3b387e7697f71656d757aa19eda0faa39b347cbc459076c5a8339ee77604485687bb0962c763cfc1d4416e3f288c3c30f1c01f0fd879d5dbb05b6a19ca01f7e50a1c66d6b6a477d871f7b7b316205d61b4eeda2438243cb8211aaf67666e942475bd7f014925c807e2ffde1e12f8bfec5cc26b741945245600fe6f8da569159f90f2afc248b9e7f474608d4051d531255365fb658bdebfcf270b5f37788096de376eb3063f24cb0122e615bca892432547de89c3dfcddfe81b431c680ba5d99d8504aff13e93d0fd67b3c34e2e48b8dc79c11503d7e8cb44ef5f2c5685c303aa523c341138e83d66262fd4fdb5b1a341f5104ad25a20bfa145dad5e4f94f827fcb6290d1d41a42aa2c57aedae42f74d14c896b6b1571218e0a1f41847b4f226d039c7ad4b1cd93ebc7888114acbc0b02a84aa4c6c84e271c886d33247665fd197f69b48fc8a0f6ab56a8e708e5d8f7933a0f06f91eebc377662c965b346fadf44f2deb0034cf4fd624d6f8dd641b7321edd509d016cd5b7e993ca358b80ba9e341d6bc69691039aea362a51e1836e54a2a22f1c7c817a3f4aa27cb97bbfa8f8514e188d769b60a0251342953bfbd658c5c7a0a6ff84bf7eba871d96d35bdf1d83519634ba7bb00474d7aca7f6f6ea7a2ab0727d9cd5bc0ea7b7066a2e43f8362f27444d420e6c190dc69afc17aa95e32863954e9bcbbb4c9cd3ed31771866059bbb58c24a9a41ba2ff005d982630a98e9315d34f79e5acc0e765c8f45f2ab4386c707db6efecb5221270a0489be6ec387f8c2130ec63b075fb83a8122e08d6197166bb80aaccb7b3e0a2df960bd0e2d4c6d746f9cdc0d78a2275e7c7a1c19611baacdd00fed523dc742f61eaa3c9d38e8cf75071155c49cdc0195a8fed17d72b2901e9c9ca7de93c41e468af03be53ffa6357ff44b092dc1441e8ff9cee2bc12958bad5ca313709bb5c1a3476fe331e7b751871f2351b848eb8d7a9b83d5d6406d3bf9fa4ad63982c840a728df54cdbc0621b5acac72d98bcec9cf185156bc3b48ecbcdf47a5df7bf5f5787b397ff73bda217b7a2444546fc9caac44c17e01175d7e441b8a5809c3bd5a1de60afcf673ad2d186f8ecf63ae51b21e44695b0bf8ad4ca020c284568480f8a99bdbf96fb55486c23046429842cce3843282c5865e3c804492044a31e9b7cd0c0277e82669b18b21ee7b1895ae001be18beaf26e6ce71c0a377461962b7717b95306f9529d759f16ce943096571b24ecc8377ce83d1a7abcff081b0270fdd13a4eb4508ea3e5152097670b84d8f54414d8fb8697d344d2a07ef5182ecd752c376cce84ec6e21edc1a86a8c13335c46a19e88ff022ae28261645cb6e21a48f11f96dcd7f7118d6233d35cc49894d951949369575c23c01f872e4b5db2393c99ed54027c326f2e0ac133eecac393fcecd930913b9b1746c37a14c8b2d008039fe7282c6a9add6466620a92d28d2d6d43ee6578a9d2a676af484696ab9924859c204fb83f9029f1ca22af601c694917d66737465575e189342813a43fbfd5df4ec9d5d1cdff803694ccde2d0823d27eb023ae0dbbb75e13c31312bc09d1a520366d037484bb310f6ebcb8520b366e82e841317bb739e893f5d2dce6b6055e95fd54485cc1db799dc2426edc600e3c7061b7fcb1b7bf6c3ac1e2d2ffb50c1163f6e1ed51bf26bae2737776a19aa127cbac2ceca42ebb3432d24d8682772f2bb135869692827ee55937dd3c2f97e8324b76f88bda4186745dd61f487d02dd8925c26cec7eb76269750745e174a55dce9002f3cdc24ea195efc750515a94aec3e525689e9415a03eb44b47fc1d85167c66ac3b58c3c20fdf45e3786d6e27933ab0af8c89153ddf36b28a6894dbc3d184ae95a1fe53aa7587692487581161b7886ee225143941c6129fa391b3064445b1e08de2fae7b6d06c51f3f372ea73e5b418617c5173eb8682eaee7be70695ddc287cfe9cf9b2797de5cf44c36cdea87cc9d1b86428a769e928b247e06c1009a23396e09651ee2839eb4568219fe967b391c6aacbba74ed3bb4fdfa84a0b648bbb4936c47147bb573125a756267c3463d07294df51cc2b07faffc4dd2d033caad7192900d02c7d62290a6779e6dcb0fe00a38a60e80698029dfc70435792f946a71feaa3913cdd2208f905ca5dd7392abb47a8d8bf14fa38deaed642db9f3988a041475e3af37310703ffc549b194ea71ae6aca536ebfb08d488ebe43f44dc9b44255578e82e6a4e10f256572acc6f6e998dfaa779d8e5eca8faae6485312035e7014d827c177db9593d9a9e6cc3d3eb80bc1ae373ed804090f2a51be1c29e8ed75189ef1e5873ab122c36fc35284a31e72e56e12c695ec371746f585e51b7bb01b0d8556f4795fc911762035ca19f50b6f434f36db414866dc3dceb85ceef3859394463c0b7ed5c6b9a43e390436e7c61cf9e3dd56e1d89890ae4c6b7513d12ecbdd02a196a1bae2d9a124a6a0170e54583762704355205a58f839d8c868bfdfc681f38492ef1563648b0d655de4323b6d929b8139309dd1ff9d4dc213a1bb119b3c2eec250976c87bf2a30a679754213d0a87b651bdf2ea340b3898ff893cecc8062179c3483d002f498dbffaf7b34d5d718f96d89ceafb15a4444dba3e1d927320a6e633b848387714fafbc45f82c55bd2491b91bab530f6dd19ac62f3bf2b524ab56aba62c243007e36b00d310a9250a80006f551a4b54988e36586370c0819d52802774da84e9811f400ea19a2505a2744a923f5ac42538f14d11375e5b4a6b6b5488317350dbaa96514c8216c6a138284ee7fa3c629163213dd053a65f8d6976c7a6c75a585d43614d563c200b2d3c48440ca107a535dcbca0912c37b47139364c931cd22d7f6ef5ded25ea073c38abc0494da21be411d189339684ba5e3bc33208f414a107d700789f644170af307b8c74afb8309929698b68c46aa662cad928a35407d2a11bacaa4c12e01f8103bdb87049d443fb37d17980137609ad68edc56679f7a46d8d95fdcada0198688f87d8d586256b3f0eeb3313b7adfa247eba33758675a270a230255b65237883a48b479b80172a16c58b8013baf05104d4aa8bddc4b92aece27c250dc361a88edb8f824376dbc4821fce08e69a178155740b5f32693a548d2bfc90a85740893bdd2994e388a8e09c276afcd8ba1777f8b1772f76d0d82efeb2ca8c1fbebd5805aa27bf8821678594b4df89c12611fd8659a5e9bf4730473010a0874c5944a3b3c7627ad582e410d83b9e17da0aba1e82637ee08e7926bfe365ffaa623520a2c4c8b567cae695cf9c607978ca7e2352e640e4aedbc044ca78b9934a67df87f65e381ada11eae002a11c7dde2e0e7de7a54c10025b2b3fd00b16b5c5d632fabd1d669b88f1c1f9c6a2f31eba35d9c2bb8177cb28687ec7c391feaaa7d1e212475fda9ad20dedf42fefea53f79dda81a51ceba9eeede5e4d478c953d7b3409f555079d6db91303061bb203405873d0d3d8a2cffd2633bd8209f3950c7f3bfe83fa6da87b418f2df3c74bff44a63ba13dd980715a21de87efdbe3b95a833d1642d688cfb61e4c4d12d8213d6244fa351601dacdbfa23ba837f01c64a874823bcb324ceba302cd99776ff3687b9be49fefaad0336cfb694767911740a9602cb7d649561ce69360f913995f6c127aaa4077afb1127d8d98e28d6f5cee3d5dc81cbd60758a155c39ddcae854623d15f4e468a97b3771990390e30e316d766dcb99e328884c8dfc271b07f2202829e801ed7744a3d05bdb37d2a0ff48af7c39c5e362406805118ade5dda7302ca753917eef65eec07752ba806a31dba1274923807dc75f46cc0cffa0fe50de3272ac82cb014014c844f7006c1bd0e5f57333ad5d6c23a94d6acbd868197b3eeded786d64ccfdd009e562c245109e4652874ecae95fb4bde99abe434abb99f057165c76c789604afed66d7766088f4cf6dea39ba59765e5c51dbd039be66f708ada0c99acdc06c0a77fe1f0f1ccdf4206a037d5c8e82949f2293d03a33437df1a77382a15953e0016cbfde3493b1e4d7d9b9a0d39e8f52210d69bce26b11bdbe6c4765213ab4b84fb1b9cf2e20b1ee684b054faf11612b7758f532b9e3a48f6dcc55f8fb01275e82d4c6c4bb40d59bf4a2c813deca774591e5d0d23094f556a8d3069beb88fd4ee85da39dc244e4a978dd97771c690b43fa4fd60657eb70f8c36ac66b0222d791fe5ea966d6435ffb9bd795411efa6db2d5bb64069ed1371985ee99e5807be43cb73f2fa66c2c7f03767237991e42afa404d13aa666bc8ae4663d28053e8dd4217e4693a3cb37ec0424c92f0f5611ad8ffcd497700555862d3a4972a3240d369d1206d2235decd1cb90eca52c6fd3cf11c0fbbc10885d6355cfec833d406debffb377d0aab85986462e2cab171c8b3a44bc7f9d2b84bc2d9bb222480d97452cbf189c98fd82d0f9bc5d024155d4e28277e483cabeec2a4831052931d31b30eee8cdde2539a6911478bd06247c6004f5156c4df1aba67956275ecdd77653c95e625dbb6ae25ff6d21686adc453eed4560f34e53a6981f48aa6305e502c6dc6168311a6cece529b342ae5c2940508cc8a4086dac429c0b0a22e6f2276a5470068ee1712a4c260fba076e4dafb859c325456822e6292b2fb723d03faff8037b7d6771f4fbe6a84e0f262a7a69b121ede6456d82bf16031edc397adc195c7d1c65c7e770a55fdf0ee840ac4b678dd236dcbdf94811866d242ccb6b3991c4eafe8b5d7b6e30e1a68d0320c510efda5369794482e1722d55b8b6dcd21cc903ecb2a1563b19b48944c5d8e8365b16e4b5648dc211f3fc6c05d791711607fee3f78c5f5ca9821eb766af340b784dde19429d79c628ce9b7b493b9552616c1ecba195082b7c8564bcc35714c1e28908f343b9910dd9a07ef9bb75cf08e31dd298df997e44550855432f39161b7e71b99e90cf0000995f3e9ab8b77415f9d69a83ef656af7e097df0c4c867c6ced2683e562222e2bf8f3b28d511a24c471814be30a201a02c80091accb1b7d5a4a6664d20b459970f63dd22bd0d6fdc249b35b0320a65bf480973da8279eacf5d64a1f4373741291b44d5ccfd2150b38efeccf0a0081136a3bffc70713fba06e6807138e0dc2b5b8971ea56269267b9771dfd1b7a99241ed141ad6bc01ff23831cd2913a06d84bc195390396c1e8326481ff53756ab72cfb8f8fb8c690ed9a85c706172b5471c6df550ed9fb021f5f6c6e466a543336a12b35def34a92cf49e5e13a50fda91ac268f15edf3eedf82bfddd475690d62eb9c9c350b19aca6b7d53b196aa28cf58b9fca8f67a9f68c106b9dc6d4f195d41ea70db60d344e539ef66923c8f4712d9fe3bd8f72529e8cab1ab77bf8a439912d77e55355b28015fe5e7e1b859bed8398da30515da8f7878babc57b4fc50b863ee549b5c10316798e2b6921356fa7f0753f62ee15d2f56872965a198aae5bee9583ae1b47cdc011efaa81255ffbcc0c01c7f362ad4679f4715a9d5e6bd63466f82de45a552df9324dd914d1809ec4708df3f5f347c33e48d50b2200df793c6fd3972884ae7c195fba406b05d4a034e4e03e0251d7fb5ed287affb91d5ae5e7f6728683f7ed80e0287b6c4b9204322823fe05da7dab4769c39d7a32b2585a3b3807966be49c3a13ab4247f88d8e08a901ee078cf1fd1b9a4491b193a438bbf209aafd550e1e4f86ce4eda50393d96dd5bbaab029bd8f52e7a502bdc977a3afb89756ef62fc62fcba6e2c97c5269d66c41ef2febd15cf1981db6d3f7aca591913444e3e5e06115b61c9855f0d65638974c57307092369df2becdea479b4d19f918f30e2ebf0d4fb71df7db3e433602985e867303ee57b65d0926637faa6f74c9afd29a09ab0fe999c703e8b0e8d73c672f758a44c9fa3771369d3a2cd6512c650ddfdf907143791b24b1e62a0b46d695c48fa10a86c1f1bd5677424b7f399cb021743821bf6659006a2836886735f0606e64134635d312341141ba2a78380759642d167ee528afab557889d205c879c88fb63614737477f3a4ee3e999370a40691ab5d52edf8ef22b2d97f1020b808d49d8201f7454e34faf97bb5de2314699f88a47a501b5cd41b411dc8d52daeeef689e18c7c507b5c3dec416849c117b878dac3b4757e770160eaf986ad732cd36b8a0958ce003060b767bd724e06791659e45268ffbbce8d350b40c02a8f00ff72c87b09cfbd211e6e75e24c53aaa48090573c55720a38f639fc6077ca13ecd8c6ce5d238af5bc9f9951ba37c9dd331312892bd0ced0c44316c9b9e941bd8a6b2d421ed1cb0fdb6453ead71d6add602e4145dfe591c54d6ea959c5441d71f29ac3695e23d6a2b30a9d5e572add6b45a4f589f6be4f68a7de0149caca94a05d29631a90611d3686bbbb633b91ee816bf7f7b5207b38119edce7f9169aa9961ef4ef17a0bca409adbd43c8bcce623b0f52c0ed879dd8795fa88610f439acc0ed73ecb42f522316d5725b1f119a923eb1f73afce89f571b9c1f74d35e90e5431abc4247535bb60bfed6e2406ed8449587c40cc78bfaae4675dc787a71b081458df5bd3e3417d9a633b31b60e718b846509e62cce475cc849529bef9c1dcf93398b4b6bd99dd3e5a9d77557432262612caeebd39363dabceae3953467b844bbca85821e56c7f6705cb77f5a0b22e1f3407b7f8448626e581910b1438bb39f280948389e3ce9062bae39e54a47a354f85e53b919490b98d9e2cf789f3901d0e53b8fccca9e1048947407680b8b00c5f54933297fffb243beadebbf8a82a78d75afb622b4ef502de5e4ade443dcbf116fdca8b02fdba4566e946bf26a65feb7e040212ead8ee797abd63eb3f51ecc92925fdea76110107f6971dbcfd7cf35d4b9f456387082912bad98c2a78f782f8fd183039f695fd26bcd6412f171db493ed843541dfc18f5c1282f67a33204b6d201438b08d3e12290f88913142ad39ec33b6ea5d8dbce0e37d22e9d4b50a435156b2b09fcdc23e05327e77cc6d30c4421e1d589a8c9ddfe680dc65138b6ccdfade8b7ad2972386d93f4bc7d1a5e583fe82c183046ff08a1117c3cc5af6875fde697efb57d772d923c2582f44c18fd53f9fd53f5696e15083eeb7fca389cb43be9ca393d970fc95371fe419583259e0a117d89517d93891898de485319ca143b9e7c0439684c97c600107838fc738ca12e5f4ef1fa0338bd586b7a3ba71fa7d12dd414e538e7ba6f0581a941eb8152239e86ae94742fadb85e5a7fa26d32b52fd96358ce5308c2d9facb56407abd839eca1a47922b645f3276bb99472ebdad90b7ac892dbf61c1b740b6ebc7a35257f5b8976716cba21dd8ff434f7425ec70724c1eeba797b5390eecff1375d333bdb9a1db07d64c2e975e39bef02435971a26e2a82ae3ca58160de95cae0a542ba73606b771e887bf69c7287b0bd912ac532fe4d90e5333ee5ec9cae1e3b5dad5af46346c9db622f6ce35e0b7fe747dad64eeee45eb37b8491d11df4837e90944556143a32f95ed087fade0965cf6dfe880abf791e61d8f41e1fa9939ee25a433b7f634318b71f239fb14ed3c3eeed67cc29dcca24ef13ad286ef1817dcd77c4c4ba87441b2dc1eecfd5fa35738982cba879b35beb33e38ece5deb80798804ae30f876f3aa1ed470e7b25e8fa0fc56053773fc998660dfe3337e0bd5af3124b41d75786d741b15b52e2a2ad965ad964bae6974ad264f8b2af11fb6bd99abb7d0010123233389f337f5180b7d14547fe99b700ad0bdace0fa99ef3ffad698bf9592aeb2412ddb7ff439313ec7000a8fdb184edc84ac739c2ddb4751af88ed2a931670d1747fad2864e14f8cfdb55983f9d13d5b1afe67f8606996c4e678c800355a577ea33fbf5fe9cf1d83c71f7efb81830f8d8ad176e8e693afe54c1db8f2b6eb56c6244d8982577c4bf7d649c3eb4f164954e83b153f1b4ca709e327c66a6a56c908f3bce46eca4aade517095da0800f9f259e2c7196805fe0002d266e8bdbf0866286d6ebd0f4356896ca03cfe9f537faa34b3c02990d015994f1bb9339490d6ac7bd02df4def94880afaa0fa2720454e3676ee410d717574e2d0e3aed10742b53ee2def79b2735225cce3a20dc0649ac138e2f9b401479e1270058873582e3c9d4f228a13b689fbcd48d473a967c82da6f42f30dd45c615a679e95236eebaf5904ea599cee6894aef947a35138da353e97c4eb548d7151ba2b360db9a788edb0d96f916908c58596bc0cb5803d4ff424eb4dd4bd8c4e8534ec0cfc80e36dd573744ee2cf87f1a21c3a3710b18de0a18ae1d898342df6c0b6ff3451b1d424d080eece0c75e2ab475c3d90013452bdd2b2dd5288294de03387b4d567d64bb6e7c409315de0eaf2acb54ab83d0607608a1d786fd79f5d9fb97a3a9d38df1ea598d7cd1e6c18387886b69d1fd829b82b982b4454edfd9ae7470f03713c05742cefd0445cc5c4d9a47738adcc21a944fb600cc321cfdf50553d42bb65b46b1d0295c820bdb84b6803dead7a6f433a537ae40f753e03057b461a5b7a651757bdb32190211b21d5cec18bd5cca12d994319f7262a566dccf233cfdb2e52ca2c711c1c9cf91cf389ad5078d3e8cceb465f1d91585f2758001b5494236b0a7dd9b674e6d5c60686a14515e04c3d8a1324074d3a9831f0773b86a648f7e868f5f75591bd5830c70455351f0097790a8d1e78e4e9d26ef45604fbd1b1c3ee54e2674bd402fef9352e038dc33137903f43cc35c812e9a9311347b4f70959d754e3e69ed8af9e090fedf6d6e8ecf0782cfbff2fedad79ca6fcfbe914e6b2e23c4a3bd9a343aa3cf16ebec90dc3ca967b5c322973e69cd9d6c4372765f7438e367d669cef976c64e0471465c79c7c395771407105e58461300f8254995fae56b8743c720b51acd9cc0d5fe0ae70c969f870de2d7ce900c8ba39e20af50d9a541d54136c71731c4eec50027861513a0db6f818211812abc2c2355820f421c4a465c9c4733eb005a8c31cd7427c3320b0aa1759f077285115c22b7c21cb341a44586dfe22c69c359d29ab3f55b1aa6bb2f0dd49324b191113e1b5391ed5ad3d8f9caf1230dcaa6785989edc1f820b687cbe7cfc6fa17d3e619a936c13faa4faa8b9ee33da82c27869c48a047045421868c7be54daf6ea7c0db1e66e2c355243669f88a4e62e303b51e83b032595fa028bdbeac51e6840d6e8d900dce2e3c87b587e187d8a22e370d2da829834007c6da2e6f7d3ebb7c07b5d6d33946fd14500024c7ea99b97c6293730ff5e9c1a146e6c06199f5b287aa618db003004e3778e79111a63b3cea6760b5e389bfff8b528421ea0cfe1e1a951c56f17a4ab8d1adf32b6620c9dbb20b2c443509f7cbf0e74750dfa2eb8457485ffdff23bca20060b93c3b76901aaddc760d72a30a54d54d6c7402e70512b687da894e58d6bf1d9d4096a44fd7b37878ab8963a574182d36a8bfae6736f1df962e9e686595932612beda5b134eacbe97c10a352c3bbf62025c74230aca2dda9346e9ebcc761f95be04d97f6790fddfc2e02f523b27e34e1e2c32c2ae3d972dbb81ffc8253ba2de3b47c1f27441f078e2ddf03ce2adb281df07077b788c0a3ec76eabb0719bb7a16a1558932d12fddd37c0872fa38d1bdf71ded808d97170e420dc8c839c4e7f59a1fd3e779f0c5c7fcdb40f23cebcd445bb2478514f00d07b36690a7b2b382dc673e61c383f353e8892a6de7d1a54cd516e75226724c87adb05fb52079a9fd9a76cb21b75db6c84dbe77a1b3acb75d4c16ce0fec5d5ee23c7073db24e757197f9e9e5aac4d31e48f98811c0d53dd2f9be0a840380a78b1ebb7da847623dd1edad26d1bc25716061d88f7e114ee0b93266f8ff0019b30bd4c095317d57c6f444c6fcc09d5f09969a76bd7310b57297a078808fe48aefcba02734de1facd61f6a31e7240ce2e0b8888d49c173758479fed0617eb80da2bb9b413339387c36386056e780a4570d2de4326a0627745c3d75d889bf00d7235cd59d6c4a8ab1c78e8955b0dd5a36a91f6df0edb6262a5a8603869c0c826e8bec5e2f2d84236a9d7315f44b27bf45af7412d20c0bfe4122e4bbb9452915805d2e1909f9c3dc7c52ea6d8f9b1bbe9906e6eeb3fe7594e8c923b9e50b7b9ba868bb4b76d16fe69cc6f933c9a1858492d974309ba38db2013b5e2dbd10aaf03c5996cc59d559d32cba1b5e2c67c88c6a039971a2d5d6bb5c6d6f2a1c870f3711016842e505d1d1596dcbc954a21453cf003dc0a863d7dff47bc621558f3789badf04b9674971a675606edeab64cc86a2054a8cc70d3b2029b6639643fdb1e3fae9b276d899900d73cd467f5033ece6c049ccc121d26527f6aa06d862ce9c3bbe103f918eb70bc31256c4d6de09765bb0959ce571c6ac83eb7dc8bf577b3243bcf5f7227626e194b1f4b716905a497c99e7846daef063ed197e9c84d242d9b7adfbe18da7ff53f5b9919b7e4840e41ac50086a3c2fa1e3b4eb9ec96cadcab1d855fccd49c3d8b5bdc5ed1ed7810a4638be34ac66b6628f6095a570759b8a2588032506776c793c6abd47a10122bc622ec2c0cde3c5c064bf99ac324ccb0090d247538a5e10f7fde3c84b76fd6fcfa93e3599edc70968918d5e171f4bf9a36aa41c7e9c56397c3606af65e1cbf52b2e009cf14efab5c24bf2327f68be4f96187c1b328e57fb5be155d249e4c9f428eda2bb3e426896eff624d90f2d0a1d5fe29417c1965c860cff840761d0a251a76930f032d3c348175077cca680bf34f19dfc4d3b808a9156f1bdd88f8b60cb5e4665da4fcc253b798cc626f723ae9ca6efdc9d9fb08ccab47220f13e1dac1c22601de0b9d5519ad279ee770f4a413f7e671d2c34d3a2e8c1a4f6e2703dc24abe4a971339bfc0f16fbe615dff528f75bc8c183009e052fef7a81633bb6665cde2d4070c92ae012970f0bb61e80bd71916881b00ed4f9f983be4c7d47b7581effefeb1657c3c3ab4015be29c2f469d03db29da37b2c76cef946182f7fe37cf3ccb0ebabe79b4335e19e66de6f21056ea411d4650cbbe979e3cc071005e4bb19e7badacc2864812ed774b82da7cd53502ec97ae9c3d2a00c167865bb7b5df93905d07ecec147eacfd5d0e02d5bdc9ba9cf7b83e8aa32c385fab8dac3d593b0a4c3815cb5d8f8d74704e499a7e7e913fb1b1e6fccd9a9a1d490c26c692a8a6083ecc1a79e7559ed2e7492cbd315a79152eac82a4c2ff83ded8772e8e1e6f6dacdf30eec57059b194a2d3423fffe9e95986e7ca9d1b4f366e282c5ad994d65a84f3b7a266cbd0b4ef76a62b242a99776bb11e6fce08439ebb35bacc2873cfb65447a3bd82e629c5308abf898a58db0ff47a59e2fd4b150859bc9f813bb171e55f870e448be5ec78902ef7728222c0f1ecc473e88fa1678094762b7044b442962f7252751f3ab66c7b4ce3c5bc6156527be3b4bc6078fb839ee3e7d69ccfbebc7ff9307aafaaf8dc2d74fff1f14ae3de12c31d6a75ba3d6dc359248cc98a5efa911e4f732bfec5b372cdd74c6f76b9d21e914f404f8a142f2bfc79f9a2b7ee73528d649caa0655a0133bcb36c006425629c350b6c9f2817703f75dde91e52764b61773616700385a4f1ddbd633916b9b879a26cd652c5f542130a444108ed999476ef5269ffa1c261480b7e3da533f2341aca3a1885a11f4f7dafc9cbfa01cd995839c1f3f342d1c40e57aeffd5f235fe75a9b039b0cf908394f75fde6b47a72789541e07aecdd677c244465f65c76a40981bff1512a108fc568f17bb340b6cd3821f4ab5c2ce170746cdc5b2af306a3caab01d1ef8c3d74cca7ce255b4fc4a4eea8c85d8c8a88b4f88ef9a8da2d657d1f6efcebc0392adf6d327b7c591c49bdfe9977da27331e5d4116a561b35cfec1c8f2ae406df8a48606313401b3372d65739c7991e912a8efa3162fbf501679bd34465346a75a82ac4c0fa6d3616bd580373e7bbc5f8edbf3b3beb07f48f3c55f7bc20106fbeff6ed81f2344eeb1ed0a31158802676df896e622fbea2a7ebecb281590d41fd9dc87f068ca1371c71f7f60e5653074c07b8c9712fde12f1791d80dc074f92e4cd81ac97bbcc8fa1ca471041d8a4f5a641ea821f4a8919f100413416d0890dd9aeafe8669e7c1ce67ff6c02561e75912fca93f4206387081124ab7cec444c3d6b1adeab55e1b66ca4dfbdda357244d4cebdbd9409d333cfccd6273aa29fff21c9bbe8f29c81f505303384e26cb5c479551b04c7a7abe8e65148edd6ebf0b2d780fce4b311c80c97991b2e86edb68b18a447bd5ef5a692f01c3a0d0d042eb4345bcf2aeb717fe73d52d8d1e11bcb67f0e90a73873d198836c8b0fc3c219746bee40fdf1e2530f391520f99497408cc7b57bde4e64d950d213586cbb69f227a992ca7bd34b0a0c4be0b4acc9141756bb383ee82799bb2bfec039a097e1ab81395c09f4ad5af765a1c998d70050f62df9fd2b239fcd1b8bccef904d103a1bd34757ccf80339687a33f681e5c3e64efdea998ee1afaaf53dbc17284a05a63815638ffcf3ff8ff93ba4627b9704a7cb7ffbd574dc2c977cf5d27a77cb9fabad7abff7db97275fdcd3ee72f6043d73fd251e4d6e8fcf751fe3b1e393f5a23f30d51f3cb7e5cfddec56f74e0dbc593e4a87243b63a814a54b79fb8b368d7e2f9bd693bbef00544de0a16ddcddc81839c163ccb7a232d98e698f5fd118ba9ac74d8491720f6c8f0b7b39bd848f8de6743554452ea0f09d27e53bb13f3270c5b7cefc81ce792f062bdd23d9f062a3bf085dd402fc06f40682229ec6908417bb0c41152c3307312cf9e861327529ee63545044e4cfd8741422412fca56323b27c89f2253320e12e3f718f738e28dea8380c3e5403888bfe0e68accad8d342b55ab3cc5bfa4c909bf722895fd59dcc058b404da499046601715fc69185f355640d0d268e3fe3546efae69dba0cf2bfbcf9f8eb2743a638d48da51711cb496f8f3d0b344a773862a2217aee4e08dae17ec343a3425b3252421692982e82ad6d554d2dcab1b79bd86f6d8375c5ed08e84948dd93f693df280e96d7888abbad8d7ff5a8f90af39234e0cc924261f1cb8fce9dac37f73227d703440825ea55554227324f70aea0d357c6c4670cef15db6c2b504fca1f70f37b037d2ec18edc3ecfaeef7f83b3a3196da1bb748003180d9c7d7c3c80244927e1fcab5ab77ff3a870851079fe24d10213d50f2e088a9e98c6e1ce74891330572345985ed6b1cab6422920a6f9bfb0249f6d9eb99c49925fdb8c317fa474dac1803ba9130c07b03bdea968198e0689bb8b9150ad4c2e07f7dc70ec716c7f8d75dc7f669ee605afc22598259dcb32174c8c341d98743d3185682470f59af78ff6d39b47f5d33933eb079f75af7c3510cc3758ebd48fe5d07c4958067c7ff0ac3f7786c4a9b6c8bd8ab7414ebf122430936d862c20f8a8c17a2ad6ee294e1789697b643e72c9cbe13c60dbbf07abd3f2cc1bdaeeafc6e5accdbe9c7ad2b8cc9b6bfba20ee6d5185e5cfd1b133230a0add8dc9b072c8a7ce7ae52b4f7c46a0573d79f5c261b325abab7765dc337c544856a886bf3634894945e0d47e68637fbc33ebcf66cae47eed858ab1d3fa485c0eeafbc12230bc5c3543802b90447368edef7d9c8bf60baf34e45eb91f1ffdbbdeec03b3eb9d6f4e341d5bbc0ea19832143e828100db3f9edbae64087946df88eddeece9e35f5d6b8d83af6f4f12e36962975d8e3c74e2f973e66c6bc0392bd45e82093600c1cec39a3dab93b9397456a076dc13c99fec693f250f90f63ed3711d5351f268ea4ab36939b62126e23a6a4391c607607b2baaed888c409bde85b36b87482d4d9d7ac5c8164663588dfd1c2257c9c2635034179ad8ab32d6e3db64bedd8643ba81821b13cc5f664e49d22cb91a96ca689dd1c8695dd4cd44ea53c613c2112c5c0d8e3df3b213a43976165bc896f62d5239103d2a896f0ac7cc07ff0a44738c5da1f04f604a6b595edc05a2fdf10ee874bcb0133498536ff47c64ebb6ac73ead6cc56925d24f4c597ce0911df585f908606ca299b22f2206e734e4204d7faf87ff2f7219c4683f31358cf51cea8bbb76e12441f33c27ae5f7661e162c4e5eec8ad4656339b294826eb2ddf94f63ddd4d77ef02467ad7dfd4a00838efa6162f7bda4ded9dbea7a772f8d0f1a29b7b750abeb0160a7067abdf481b1863c027fcfae170e67a11f598c4025887391e73bffae9f0423238ead00d840c33e1f6b6884466a2f6b2607612e0f8aa5ff693f78feece1aa6c1d1ca15e67de019fb1c58c4bf1bcd394a70c39b913aa71e5bb0cff4d25882c57b1ce3d34553bcdeece6ae5957bf37b33a80c56e29848e6f5e9980e3c19ccbf95dcf2a34f923c44274f1bd1c041e29ce58d8a8a14f74fbd0ca4e98c25f4c57eb6f130635c90cf964d612af4046cdf0152e19330f3db1519f91c770077b526445966aa38b7a78c3ade95363b035b06ede4e649d9cc613d088cfb9773a73c64cc3a3c3d6470e32804fe8849cf1e9278a15662e0b849d74bb88ee7f355d5f7761ed206c4197ed20275c64d9e0cc06e4e671b1f4ef471021762eed647ee77424c3ace7ce70638759418a1cd119873eb2b331663c31b80221853ef5671c9dce97f57389bdcca83574b05087dfd1ff9f2e96e6d3fbffdee384aa65286d52d8b27e8a3c9059901b4f5e68664a8c05f1876993ccd137a4a3f6676e5f8d24e518f7d37a91b81cb7fad26aceb41669604ac865ad03ad093223d4258b267ec0ac3626185ae79c92b6ca39006e93736a6e56e781e741c3b062ce602a4e53f9c2436046238246d50b8876034383c3853cc1d13e67dc3de0ee0277f9a4ef033575f418663060bf90f2785f4e6bd6efc696793434c9aa17359b7d1a377907c59525d4c4bca6d623108009ef1ee8ff9fe9ff6c6e9b8bf58d9bd232d6e135e2fed6ce9e75c2c21681c4b231127199a8c49d62dfcd22a2111ccc7837d767cb580d4273ae9c3a3ab4182e4c1aad18aab9cc37cc67b679fb8cd9c35c79b1d768b6c626e7992bde58f62fb53ef51d7046b0c10ecc6a0fd561600ea513d51dfd0b7a4092df273d453c2cf377bdf57ab90a23e57af71093761e34a5fe1b1f79e8c86a20fbb8b7bab700069612d8598ea8e4401f57c06034e4898678bcd5326846f4c1838383e077622788a4b5b8ba305b4f7fc9cb6c975ab0a1aac0b5c7a9baaf95a86d89c6e1161a25a49048a37bab1e1c4145c9baec76ee7040ec86ac0ec9d38d8bcebba3dfbcb075a269cb9c63377788d14631921a4bbe2571e63ccfe10b2331f8cb12bb407a80a5e23e737269024454f11fda4542d32b7398d021c442d5e1819538d83b38a1492f6a6d026bbfea1f59e75f9c9cafe95eedf4f284f86129fa78b5687201d8a64daf67c31043a133fd6e2f10527e1198f8964419f387f1822f21a086ec3372e93db28545144beab705ae8de7e4ad70196437ecffab37c0c1ae25f52bf78b5c0f1d889663049f4004190339dc87f75090208af509ed1a1d48eb0029d36343c28efe26981f1bc0b13c4380698c1ed8f2b1fb224274bbe44e5bd4a1e37b3e370bf50afeb03efdfd47b195e754380be622c5d6ffedd45cfaa3f3d5ff77dcbed02653f174fd63a5583fb5d480aba097da8e5c07cbd3142b0e0602e4ab2a4e82429f22533a2f629047333f2353c81d3bd39b27d1937658b96b37427b75300a048e571cdb792ba2235419103228b91ace903d8a62b7201c3bb5dd3ee9c9071250fce39fe62d3d3fe4bd6386f99e1f386c1acb76b96461531cd8b291b14043863116f6b674b6e40ec80f31d9cd51faa2c1c8b4ba1c134bffcce92506b080a02d876cd64dd05fbf3ab29761f487b4979854cf80cf089b021abcb8787ac3626027c5d8772ac289dd97e94fbb12b7435749500a49c3e743bbd1bf898ce9e25d1d8c6b17069c3ec08dc59c01684be8c779cddebe25c87ff88ba98df44a54734642c821aa696dd96c24a4f7f9815d774b84165663866272bc14a5df8968bfe5a3b17fe221f424121ef73b5bce9935cce15cb1241f46bb30bad09c575d0b1d2767d8c39e17dedfae1ec3bae077baf1eddd8d2df6116fcd23c39c202145c846e0eb7b345191723007f676945804ea6e043f1a567de6d0d78e60a1f2c7ff9217ba1eba4719ead62a74e434ea1d8dd91891733f81a3027b628a03004b8373ca5a448e20830cf6d01317f66025919ef501712e507c5c3475b65d11d824e5a029b82872280293d33c0260882dd4384eb3806a231101eb6f3926386e7267f0bae8222f97c0e89a0fc85d6b5b10f138fac74ea2e11b0736708d1b7e09eac72b0f3fd9ce85fa4e08473ee37707bfe57d0348a6f2cc0bbf85d5d33ec5e0ad2032175c1d9f6226d98ad5677500a3aef76651033e4ba2de9b7089dea921efe67578b11658019a97cd5ed7fbf9737360b28b221d50bf5291fe1b368b3bf97656d94c53460c34f3eedfdf2ab1310dd0277c1335ea5d8bd68c7333929bde1bd90decd77ee788d35bfdb5094730537f61a27710780762fce59c5d9bf93cb93c37ad99b276ad45810f3e19c9ec7c70f63b0f0e81e121fa774bb32572eb5f6e74393885f7dbc860eef8934f884873b740a5aa1d6f6ee32b5bdebbbbcd7d92cfdaf651675bbcb899dfabd6273a758f7928ba0bb6ce752829e00987fe16f26f8e1a264c0a056d738c52e79be540171b178e21846f05235cca21931bf4857efa878a54e7871d4644e9b60cbc361456c01f373f4410e3817ede7813524d2ff825732c72c0e36a1f7e9c17874cf7cfff463c47aad372bcb2cb14493c38cfe754dc0391aa215491ec830d12e3377637fce0d6fd308d8c61c255aa9ef34a5ae827fc29d0542367f69ed0817eeb5f6e2c1e76ababd6845055dc75388b1f4509812964284c232b5702b760d1d97e6313f8926db8f93c126ef9508dcffce4f6ea93dd9aa11ddb137f47318f043314aa367215f776f674a7e076635b149f8557d76e63f53d582bd1e7c64680b53640dd6b0ce52a15af2ca5d786a897c50584e251b2d1a257fea043ea86f87619b1d58a54da61522d84642f88a4415f82e25905e23e8b100fb77f617de3594dd58ea70c108dac7eefcfec4b3c9c237aa184b9f26c4fbf623817818ad5490fe7e48e8988755de12728f1a61c1991c68975162eb94001ee69285aa6f9b158acd00b04795f638ec2d4d86e4cd58f8c8457cc5e74c68fd94a844985a748a8f3cd04fe96c898688ee25a79c42d7d8611b0989e2345a47fea71d84fe81c86f355f9f3e65efde5eca91ef7229c9bdd7fa4afdef499176a76011e8cb2c3f13348818cab6b4ae01da91e66fc12098f659bb5a70ddaf62535ed8602680d4d94a8063f59a3c674dc1e21e53f380892d6104ab20b144684e7a93375f66c60245b98ba3779a026e079661f80de97c2c64ba5ec9f6c87c25576a61c9bdfea99e5a38b66b8ca09ad24ce1a06a751a3d635ae32c7a0481b66291e7d760b7eb6a0029259053c096c08dee22d3bfc1d5e6c0573c7888d8c07e7ff28491da3ee9d4cb611a2a0cead99644b178ecfd6ccaea9de4f67b6fe7a5f1abcd89d652c3b4be89c346562f5cfae825963fa0df188f4330f49a4cae3d406b8edc3464d32962994d43954d72d57eda1984f922d5275e1a02cf645fc8b56c9a398dd29cfccf903c725e4d0d8437e1781aef019d989efc9ccda1e1bc768b7495a261cf0d83ebd75d1a445c9eae178955cc7cf8f360e9dc498529287772727a38d44f37ef2eae4e65e8d43b5a153d52854058e575c6c18aa9af1ed7af25312728c402f0d4896b3fb8f86279dc47b78ed49bb72b1d9e1cc41c49d52ce743b847775d09e9161c375600cf3c4c2353a8f766277706ce23f9d9f0e8d9ecfd7bc9f0cff7b303ead0ea4c480edb25b509a8af0d87f2178d769cf9f06386c3bb1109043db89ebec231751a7762e76918366848b43f4532633d42ca1c131c6a131b29a0cfefba3c19bd9c152ea848e36856e38783020fe4725cf59e08fe258ea8c1193ef71aa4ea9ed3fea7221153536bf1c1d3f769c4abb2ef00b0828fc18bfa01f0196a61e05efce7b2fd2facbc360b5e2a877ae004a6ba71bbe3b0ebe4a0d9767c57a15882a76a735fe5b5e2b599797bd9898c4c893917a19aa1dac2a623b1223cfbc1b736a518aba00347a39771c4ecbca5992c73230a18902b327fc6c1e5b84ea10ccc5cf32667c52f5fb31d2a986645f7780e063a418195136089c1a76481776c67cec88cb792eb0bda4394b710eaa213571b249d9d128000c166ee8ad0a03bde9ba427285abeb6ecc24095d9ef692c585a91b4ee05f3eccddb5e778e3a6f602d707c5893c73dcd196110259a7c4896163b512e7fff782fa9198f33bb910a3846ee8449de7a0588039d62d6c6b8a609ee2763ed02953371193618b8525dbe2629f58f7ee7e7e8be034220eab22de0c50b4ea31351d039b1295818f7cc19b415a24825ddf85aed8584a8a0cf8c7724ad3a8358957b50c28d1006dde48f6500e191f7a2c22517d7c681d471efc018207f8880f4f3be0c4dcf4de2ab2e4bc7d8f8bf7bc89256c2c0eefe2bb96157f9fae3611bae61afaf7a91536fa8d3d0cd3cb3a06be5b870837440db285272587e09b4ac74c11bd82dd8c3654cac613aafdda09bd6815890368a5f5d747dc06f2ab9f2606e8b3e4e675106c4e1fcc0f7607dc5b726bc95413dd164fe33c9b1084698eb8b6bd60df688be036fa2074b337b5c018efa3c6d5758ffb39971de1e2297dff859d5bfa72ca2fc47b3bbb2965bce8eef4430718460a64455d632a554367f43632bf3691ddec4fce0ebde5aa6b28adcfac573ea8895c6a7518a2b259cf104591d84c3d80a8b5e30615bc52850fa59e6091a2ccb4f9629a86ef625efa5b898507965d8f46096784e350ebf504c0401b7ee538d5b6e0eac610f660bde9f7125891590e9465641501ae34c7256e6004f451bf0c5c9854678db87aef226820d16bb5b9aae76d3709067c15db9d6bee68f0a5b37b727c9adc3c504efe2793a148a9b95023c05a7e4063738fcd354bac60fdfb87c141b5fb2c51fdcc4de1d2719e353412a18455c42edce228da6d2441b3737ce20a0d3a02d8062b0e8f4b6b3c7b07dca095047e910927638149755582740332ebb3d13d94aa99e5bd0b476581ec2eeecba8f9bdf1cc7e000f355c92309ae35dbb1494b5fefbf60a8472de06a5f75fec98ce4b0e7974c4dadae96e422ae377ed4d98d611bf57de84cd59f2c0a2e3c4a365a4258ed0a3ad8e9eba7b843b8c21455bc4617a0894bf9936c2e4754d54f56e81888672c13afa214df8ce31b591f50faa1ba83655d60954bf8cc090a377816e80d7742e5f730c548a96cb5c1a6d02276d0d8e03ba1fbe3bd3b0f63857485939523a9d3842bad78bae57f3a6e2c66c7e55f0935dd6cdaaa4d3d13fa4e4879d9de82f64e18722fdf9ed8da18b15ae29de55976de4a543a0419ab124e0bcbb107d03c8138962de7559473ef766eef9af6eb326b54eaf441332ece26cb81c2375534df4d29ab3c2b5d8319aa742912536dc723d616fbb3caa77051f0d1981d5099872c9b9ab9f89f1ba448d66ee12f5ff60ede4e523306b078ec68164029010c59180522e16fdba07aebabfedd2d90e2736c249c97ea375e9a2e66cf5b103343d8faeec5c9d3c791743bde2a3df0a47656c78d8c173f8d516bc745620aa5b1753ce4a4cbd5b4cad3871055762f555ddbabb2b574375ce1247dd900862a6af86dce84d9a012338ec46aa8551389b7046bdfbf6f0ab3f17ceb599ec89987b35de72ce9c534b079cc7c7c5edbfb3c7e760445bad61f85834d5fd0d8e7d4250bfc978862d060e61d3b8c556e47cd52cc4cb711058d74c8dd7b4c5673f0441db30b4d62ae1ebc60e65822d01d9797562b35681ea7c7277dff10a36721832619874e6e81e5d4569a30e20a740b22cf9f8c52d6d0cf3351479402097f7922954a98d9b3abd13bfe34488284e40bcdd4bd474fec62f000df2fce0ec2e9265d16657f696867629566d1c65f375228e665bafbe485b3ebe802444f1e6eac2e95454f703182f486528e70ee15e0eb9461b9fd45d4ced60b6327e4f1f0b8f0a7e6e34a1c4617325c7c87b1240c9af0b257458e74a3fbbaf6dc9a2ba479362b5a09e6e076afeca93ffd98e44092ddd73e0d775e9bc648b1f8335ac7f743e8d9d8814b21ba4b7a40d560b27d16d9b07ad2ff96e5f605d4bd8ca45e528b49f85c216a174172562f16f85aac86fed7b01b37cd8f1df2ffab7fb5cf2cbe7245e7bcf4eefcddf5a6adde9067c722977771d6386d8c6aedbfa0435ec16abc674de06e605c934db6d235d2e69f7db0ae42e820e20e007aca1f38e49ef86cac67568fb3875a39947d89965f7e3689984f65ad74545d657d1b0b53a293b5fde9a491454041bde1383f342b5848533a5bf096f4243c47200845623f29f6532591143c6518e52f4b6acee67bdc97f76487bd4baed6280b35bd729cc3ef30fdc8b11b9a23f7e74f970dda76914f6f138319c50d498d144ad16b7b42ed750262fc7f65125b4d66cf4f19fcea209d510cc5ee99fb6c800593d71e4064bed394f1800bce00ede14c84a320aecda1f023395de8ad449d49084704eb12ac55f6a94196bd59ddae7819823eed5bda872f76a62d3ef14796038201ee510f35d3ddbff3ea8f6589fb6d7df75a54fea1c88fb212262ed7be9c55566a82a6275242da58b0c32f367079e88b3fc1a7ff5ef67b20422c836bf6245eec1b2e6bfbf09e38c94b8543fe61dd734109aa1dc8184683fe2d757b89ee30dcb9ca8dbd468e26c6b19b414ded642728845042a8d142c7639b2a8c2e44232b16a9810c7ac87144bbbef8f820a7c8b5d285e1d325185e3603f023aca29debb5a3c767e57386ccca1fca473721ef583f1e1d2bec242da6256ab70805f05ba42cfc418fe9a3665cb496f95ffa76c5b916acd7f3d0df65fcd34a02e5f3a4a440f1e883efef6f6dcef2de187b998263d992617e31a5e1dbdcd07a3ed2175cbd5c9d6394e454eee24bd9422fbfe6a81cca525d494c8aaa4c4b20e9d4974a7d312490fd00cfd5a0337c4012c33b1e5d6b90ce8377d3f9059e21966ea22229663b575f6dfd5f078a58677256d25cdcaa98617d490fc7735c46a88a11ded390a78bcd7bd33fa62e656ac56813aeca6001feaa976aea35f4eb5f66363aacd6b67aab57230f3e1affe4d5a06506563f093f42b167e9d414c125eac8f72bd5af0a9ba9e474e3c3d2a693f513272b6dff1b10dfb23890724f52f3bef5f452130c01c1c607691689bcd12b9d760a53c7930cb788034f39baaa144a3d97ee7473114521f3f878b52d9448cebe2c09962f953e7ecaeb7f85ae73c3b86b6d6804fec73f6b3b571a2edec23b2549c72fb81f7170d7c78d7b6357d5fa8c670c2a543ce84cb1e59a4945ff770104b133693e115974664ceb292cf1dd95c4dec3e9db9c1536d90019fa0fffc69b115cfe6824107f41983b91ec21b9822b37006c84e67ee62a77aa3f8832a62b53d4f9d4da2c6af36e1b3a3719067b7d6df50ba0d16e712dd3ece033b032f3f65444a383e666cf01effc5e7b0956580cf19816fa71f4825896a780bb8e3ba1d9618e2af3e77a694e3e3c9f9ee918002c8b0f8380e887aad35809b2f7746ede4e6146b6146d3223f22f5d849d453fa066e84bbff1d02d9ff646a0cffa107485d8f8ec1fadd3c7284d767b502c2f5260dd5a3da4c05def2a097402e69ad5fd5e96fe1fe8cd47a35fda5542bd3e0bd2295a2c7fe0f77427f72659fbdd81157883d5923abc93ae4c5ea47d79423183ce039787214a181a078526742bed79840e93c862ec3a3d887af276751978e99c5f8dcb9a6d078482bb404fb9df350e2a89129f93b63a3267df098d6aeee0919fe5e82fcf221bd844bb2140e7eaa11120bd28877dbbf5699ca43f0f146d6491d949f04bd9d9af2d94b9178fa60e239db1229efda4bf770271d03d6a569285b2988b9ef0cd5d4fe1c5d95ffd91dd98d3b9ff924f580a20f622251d79f1a73d864279d5963e6396fb81c17049c3d867c2afbf8e870315707ddf87fb02c8aeb7a3fa636cc6ac040f3dc6e614eb7ddb9cd0134228cdb27e63e48916f6eeecae5776b836a5da008c2d7fb8c96f6ef496497e03ed3d33a36ce98363eb16247eff5495bb107dca6f14c9cd383ad2f51895a8f2333a163887bf73d5ecec1dad757e245d5bfaa84c8d5af56f20be730ec21a9284a178d95f716fb89c5402c2c003956e35b28181128f52ee7ab9e3c0b54bfdf8adeeb44d7f68cdd2f8475fbf8413133d80c6c41bcdc47fd465bf05ce246230e329809e401a90f5987985dd98097dc2cf9d8c46a771972a86919f0a642b3b6a505ed8cda904e60559d4f7a3d638052e9643f1790b59b34da43284709361679c64992496086f944eff9b1dad5813a0ae9d377f5432d0e138111466af3f24bf9b85d5d938fb005145071cae30732f1e99d4874dcd85ddebf97e8242d645e1da1537489640b16b4b23b75ccedfbffa5c6dc1ed8630ae90d4ddd398475f797c2700104015685e0b344d66487e9f5675ff5beecbb46c707d0754674f04918fb726751c91c785899d026a532c423a78856667be29dddb258d202c1750437427659d8c3d1326681585c292e871663b05ce0d56e839f9447837e149c7777eb18ee367c3cc9c5bf416b6f3985659035c616f4dd71ceb6c545df3055613a1d18f1ff5bfbd40743c3767691fa57ac35a13a8930eabe47bd3cab482d5901b9d4d6167d8706618d8408c313663584501b11a73dd6f8523c33f401d323d2b9e3f4eab37304ce0d9acff6fd5810d54a9d3e78b6fdc09f8033a73c7b2e02eb28babffa641fa78f3dae9bd7fe41dd8c20df25ae7ed0d613b42786c8872a85ec2a2f1ebbe81e798c31f0f6b1f5c563976d94e718d31daa91ccd7cbd7357bc5bcee33c7a13ddbf13c633c2bfc655f207ed472919c29f8b12b02ebaedee3c7811a12a9f922f885fad329d8a430c6f26acd91e2a05c386faf58573960c0e74e1b70eb84f5357fff54876fb5af3ce54dc98fccbbdb1d70c5772a5263ac0791e024b8ee518c341474b38887e1c6244d8d55cda936149918facdecfc3f6c54cba398dfe8f78c3003fabf55a25a53927b6db2973664ab3ee889cc6da29f6db98f2db2bb308371b459e6841af7875f6f3497a839a0e278630bf7a188a905b6cbec836d53d095e44425eb5c1ea85a3afb41ddab7d2ca7dd477bda7d55cf44aa64ce3ef97af26b73f1e3ffc86bf0bf390ae4fde81a8a172e8041e8d818b64bf766c2fa9ad846cd0420a637f0d47b43286db00b1617652bbde7f917dbb4182664cf786f917094e6217353e8c990a8d3a32ab02dd050b447ffe118fafc7e282a91421f9d383bd74f9c1eb4237f7f6ddb0ad509d958c7b0cdafbf7fa4bc29e5495c4027b880b084f16095dcbca888f76cded6e70fccd9c002730d2cbad18210a27280f4def778fd48148d44e2ac4aac37a61b961818b0e8ecf0f4b117dbfea5823522f1b9e7d135e53a7458078bb5433dcfb794aa5250378e021369f848c8f4e9ff597d1dc955445525eaf4872abca93547b5d7bf3647b55bbf304e20cc02d1a9e344f8ed69c90919c882ddef296c90d74cb3116d5b54fde85f4c88eafd84c80f89be1ccdda673ea18cceec7bdd9649c3e0607cc17599c0db651f481cd2ba6a0184e0c6a505bcee3f08b1a92a8544697d8e2bc872c7f0bc2c187e29e9c2b2dd8c54b9947e1f81511687c9ce9b3a289ceb7ece7f27e34ac33b21e7b9502d306d9a7a64a41603478f1c67b72e602756b151934bc19ca2eecd88db50c38ebcc6fd03ceabfa54a8ef1f10aad4d43d2ad83ab40c7c51a1da95814519f85e53409a203e22162eb83d1ccce0434569d1dfa9cbe8e8f0ce4adba40ff89be578cf07af0c65f22c911340a8c658fd4c417aab9c0c20a8fe51256075e2668952b24608287f08642bfbd32c654d0b22a85d383ebf500d9e18d4f067e3e680799be660495ce05c3ec6edf234bd79548b50157d8e6c1ea317173bc6898c5611b001d4c78c77994f4507b03434741a2de4c7b3cbd3f646294ff84b7d13d8f24cf17e263e74651dae07ca3ebf6487eb2dbfa67ee34d84ce2ddcf69f346b59093f6f1814527354ca887325792c9ab221bf47c270475f89acdb2156ba83536dca2df7f6b1842f2bb579ffb6cd2ba3cc818f246a8c487910fecb21f7b584d931e1537c41f8145379d99e4225eadd628f39fd46f48ab19d3baba35973a16a5bdfa0c12e6d7026acdd8b5b5cccf7882c4b8346c87a688772ecd8b05ab77620ddeb529dbc78cb3db25ab1302ff7cd26f87b38c1fbdca3eb7db335434348c52d819177fed98ac5d60ba77af5a7cedabf67b54a941ed9d5d647ab31b782157ec95ea94bbdaab01dc8855609bacd9ec15b292f18e1571b107f5dea51857e602ec01a3476f4f3f49d7edece78fb1dc3d2d1a23340380fdbe4252a0681aabca901de3ca87263780d1f0cb9d193ca0335403a52da98f7d9afbddfcb55e8e86b5b40e18f880a191002754592ea0f2d1d64865e6e5aeee1817bc00f10db380ad401d5359f18076af7c805dc3e7f21f6f04323354ccf67ddacdbbb007363ff9d1a1e95f39cf112eb9a7b7b90733ebc332c616e397d269472a31c8957bbbde8e64e9d0261abd99d99e72fcb9bc96a7c779c943a52f053a83ca038a593f4e3df1d6708978f150febae0cd5ced702e12c7c9c63201d055d34c6de77c0de311f4d2ca62f05ba0cc9e8af84c2468e99b0338c49ba72e91aba6c77280c697c4a5d892549a2f52f6a69cd79c7dc32634ded21e79fc1485cdc27065b22e1f8ac32760feb9df8bb9c6bb215a7a51a41d35b2f1c2d476b35146bf564bee00736fa4875875a24ae8a90b42bdafbb5fa75a7ead8d0d15b4268de268f7d1b37687df530ac2d571c302f30a66e16fc7ed830a17ea1caf6c7c8c638677ce81a29180e69c2403ac3e7dd1fc6cc8a8f79d8aa27045eceba8cbe5f7459e8b431ad36cdcbd91dfd9c53f87a04d1a89b4f510c432b7146418a18d7ce82832a7c427246e3a044025309736126bcd1c44dfa643250f5a73c00648740f44baf8ce8abf2148983520b4190c710fdb24030d0a06485615806cda291ca1042235f21f389b18fc5d45d8587227244f1e517f6c76cbd6863cdb780e05cef222751191d88fda0871ca193c64bfb7b84e0acec8b16938f5ed4df47029c51bb70f0b9b11edc56b855ebddfe38ddbeb012584c591d6d7e67fff55d97e811c9e47d4f94dad2521bac5c6a03ca85173e7cfc81f72afad20a3ee2246892ca17c816d64694486ba4ebbb57fbd1a4f1018d3e1eecdd60d1f92a68047976381f8c9a38f4f30cb93d025fdc6973f8411769dd5ab02dcbbac53789883ce3b153c681001260a517cd93617b013f7c1ff061e9dbd39069a9d81628774f69c2dcbce734b91613b698e86eea876a010d93e900187ab49dc9281133eabd2300b6f944ff1fe2fcd85c887a0d225a5038c97d27624676d3fd9255fa1c01508c034f2c0153fd282c01a11a3c8b06c01ae0a3ba80d65d9afe4ed83837a0a390c6994e4d795f9465cbf16dcaac78e957d97cba171e0ed98686ede6b297ede8d25225ed7225caefbcffa36d6bb9be2e6e1adb57a4da70cdc197276e3c6b56947676f6ac2f0c2fe65507f3aa7bd5f22686d92e7a59beea370cb22f1f9af364f39c3f5d69091b206d7bc494bb9edf361672bbcbdb730957ab8c7f3ed22d49d4b0bc6dd43e6af34bc704fb9d5d7dceec26970f0ff0f090f86eeac5441df7fcf85ffa88a60f22e1acfe437061ef96d3b14da121956070af2ca8efb2cf6cc12e73f1bd6ca55916cdd97d2885cf92d8a0cae628310693228c9e64a1a1d32f8b1cceb1c5566698239785568bc0622d87dbf06aa1ca466c6b19f341a1c29109e36372b590379c5901b1fee0db24a5809efd31858adc015744d9cfba17bb76af3d63ef6b3b6bd6b7fa9bded5b927f9d476def6a8558a34b9b957452b542f1f0dfb2e783feef32172a45c0eb844ec8a1c37379c60d45f498d4bdd48a49e56e4f2408d06a159e8579a7ab8d254a5726c4f6df3e0b3ea04a42b462a9be961382412ca56200087b4dbfe9a65cb7ecfe6a0553f66ba18d86726c8ad25bac98b0adf86390ecdd524cce6d39fbccadf67655aac6fb9d18963889b178e7a5660f3297d47bd5be1871cb84ffc40a7cb1639ec1d8d27d6a0925e9b604ea52afcd8c8457242e2c7d62db9c38fbd5bf2801f47b7e4093fceeec50e7e74dd8b1e7ef8f6a217a862cd71688ced481ddadf3c651a23f6cb60e6af4b5e8facb13dd1f4d67bc88aa010fb286ae50643a41641812ee68aefcb2047bcfc7cc508dd626d021079e2bcb440b1a75fbb0aead3c454f7e46736eb15a368e376de4cbfaf67a63f9194fd0b005e283d4516cc4f3891252a7c9ca72679a2a2f917fa36bdbd79300f54f8e7fc34b928dab545d30da9a72f0b29f4a0d48ff5eab6d12c8f72bc74430eef3c6f9a8d261a97f04e2e7bab5b0e61f72f6a69c5fa54fdc983ea6afab005927eda54849fe3de2277560187abdde3f4a72f7a2503cb979bc0dafaaba0581b22ab78c36f1d82c46855249c93c75f27571fb953779ba0d934fd293b24f98fd9a236bcf8285d6d11a8f0fbd1e9e5555038037fcfacf60f3c78fa53fcf14cd75fd881d22d2b83ac4566e61f8bdaadab72ea4a98cc63db8237ea0771073de9623954752ae68f756747c760309f5865729eb1eae1af9b23d8f319b64fdecd11b824a5134eab5bb87c4d56491fd1c9f357a79a900685840f044c7162a5973d6a5d113ba780213d4f962344af9ccee6729a8eafcce8b78b097da57bda81ee9e07e999f45acf84dfea8d5bc9caa9847797f1986db9dd8a77edc1eaf6c60b543c0e58addb1f27e25a0b95370e5842b3c974009d5d9f4e5ae8cee392b4fd5dd05b5a3140917ce139d442ec18e9ba4e5114ca9408b731fb078840f5c7bc22c9f77873a7eeb781ec11fa4539dd0955c92570d52b78e1f44d920a7db5a86e6f1ed50252f20c8bf7c6cdc3dcca25821e4010f09b6e68e3cd626332e61a57d52d6729dd345e5f55c44af2f08e3560d88d6d90d9cdb3ba57371d8a6a4be1b17b167350fef4eefd94e83e515f14d9f8fdbb9b487da2b36b24ca51bbebe4fcab0a07cc95ed025bac2768c225cc40cb4448b7e1456da3d61efe6e5b53e853c6d52e987d80e2e707a71d0bfcc8dc8b29984be7f85ba421c5d9dfc46a46ed2343062896c79ba8c125c0e934dc5cd1e95e22d36ec9b6d45af144680bb66d6c3c55130e1e655b5ac903354226d2e1913dbd3d6c2aed34b24d0631543eb197727cd2d2fdb402b1fae5c1295961b26f964e49b0e6ee5fe452a4473aa175c4ed5d172c654f2b3725ab8deaade77807b9e83f3bb1b43db6b90d7accd0dcf59d0449e9c889b8e72931bab3b7c77797773b7c5726023b8df7ec173c03ea31008ea4dde63776601b964fe008a43f385a8aa23f29cfb9b196a58cd7519c466d5c70c280a20ae9ec948d430e308375a585b70aedcc5892e8532036e89ad11f4fea07fb04fa982503c02bc7d5945ec2846276bed513805f434288f374fc6850625caf011a78c21a71f8b5762d3e08ef11b1d35fc2de44a89a3445b4a58d1dda8c43cb95b85e4f84bb48a9d38118832abcac4637186a2dd0772e3d0796bc3ff3f2111d53eb238f2a12e7ad439c355ad9120f7af7a144196b64bd95bb63dafa43d503dcaf7f8aacaf3a3dc3004db6bdae5d96a424e3c87ff3603208f9e2b2a75e7073c1b7374e90e5092171593f14446c44b9eb623521f65ce3c6db21781e689cd3844d077d787f6f9c9c4b573fb7c113261af837e733248a44ee8938e1c3cc447551ab10f78f807af4cf09394bd9e2f02ccf4a367d3cf599c73a246c1f7df1986d36db39a879a03676a92fa9ba0871703e96d377a22bbb356fbdc35c4bf0aa13a8424b783f8dfc9646accb1913ae928fb41dfca25a22adcc43b8390906fc17d76a486cb8b3ff91bd0e1f2c67a3cf922c155fd12f6e7ff1ba8abe82cc2f67ab3eec30a03eda4fefca83931c1343159f43c243607f3a03230dbb9847333a5273bf39a3bdbfe9ade92eb12bb42cd13e726fbe6be01bb1fe72d3d6034c773a066cc06cc8bd743a26b69b8ead993dcf4ae4e2d40cf3034c7511852ebe90639d4c46372125238e4d1813dcf69405df8f543ad0fab517a93dcd5c3f522bd80ab8f5ff8de8e944aa867eabbb2f5191f28effa2dbae0eebc7bd56090fa3f4d3e51aa018355a0bebc94581dd04115b2d27a955816737ad77fc95462e0f02a50aadbd3d976cb64ea10966ef092bdb19e2330f81bc42787386c89de6bb61605e3a3317f51ae3df00228ef0c4b2784761a577bc67969d1e0e0d8b8df0a292960a2564f789751834a23c30f50625cf8ed4fe1377d027e684f924db046993c806eb3d91585db3c98744db8a1b7b74243dc2037a9c2a679725568b698b68fc4f7b0b3287fdaeb00d018866d03bc1dfee88f59a83b0b0446afc4d1c3919aa621f5915e7a139d3f407648814f5995d3e2d6f1db61c2d10b5981a1433ab1b951232636bfeae5e2963ce3782f73c3802ce0a732db4779fedf66c1ebfd3bbb75b71f3f6bdbafbe0ce9d1c2e7866f1abba72de177ddec9380a7b62c556ce014efe431c740734520bb24b7f53f31667cb6a6169851735dc8bb070ab21abeafad6f615483a5f54a2de6872ed0556a635ac034fabb46d929712f60b9f1d43c9e74393175b9aa396099f974543fa8e9ee21252bcc2aad842791b3fd945f2cc6ae1bf5c29b1be7427537dc729cbd847bcb985f5060272fc64e10f3d44558e45763db28af4c83df85da2bb3ac24fa4fb30ab6edf692d0b5c1baf5d256d1b22d526e6afa8dbfaffed3f198e3a6069c933012e2dfa91d8bc4e5af136190b0a78edf8d4380e6d31ad87439343e2c01d0475b735b3df5e246a70647acc365d8ff87aac0ae189a3135a7fe6e21edc318a1dad76573832a6acdecb980288b6f986cc910bee9a6558a0acf8425a80ecc9a42871004017ee78e4cb5b4233b227804e3b938b3978efb0d8967e62bdd2232f71a664c873a99aa916754644ce14748679e150f2b4bd9fa8428485252d74a70b00ba79616286d203ad589d0a7ed5f2ddabf230ccfe8685b96830e815c674e3fb814d81791c393fb24e64c116d52a3130af501d7f32609d7394ffb4f3c8c164cc4f89e5ee5d9c9cd7f73b890575f7ffb44f7fb54f2f36b76eade6bf7e756b0ba559247ea4481d7d9e12c7467ed3509d6a4483f4d9e9b49054e53ea85fb76cd1ae036652f0e052ca7c94f7679c2db90f19b449f9812a0de8053b60def61b9e17fafea3aa436c6fbaf16bc0a80eb5d88ba2465670c17b4fa493202266b6d36814f974dec70b3b1bc6f170277c72b852f85fcb380247fd10a33002f272746208f7b9baa5c93b605eb80577e098db7faa6e59c32731b5792fa6b09696affa1317816d33767b10ca601836af0e0d1f56eb1e2baae703a8e4f304297afcb7ec2546858080404aec01e29c4748d8baec25527da43c14aaf1b919d8a2f5c3b10a9fa8ee39b119247fb0ee4d0d32a7992a0897d0c0ba2387319022a01f55bf1f9a119630de16bff2ab33009d50b8e98c2a5501b69eee9db42f25fab6184517a7b52d8ad7efeeec0178e1055df5d8fccc445b676ef15e20990fc4cfc57d12e6b9395e876d96896bbcc5514557f242d3487fe0e825b5f06591cba0925cbb77e2bb90c2a743608ea65a7d7583695670df61201b1f3f1c1bb52d523065d6b6491c5171678803951a0a4d0986c2349b25e6ec7d0de3a1630666e0758448bb44854fa335dba3a5e28f8637e6f98364faf211dc7e37db1c3c02dc11798fe3fdf23c7cb7a8c4d876a4b5f86331228aa62cdc609080ef3df5236bbee57b433a2d8e02387d370e081a96d8ad08a144a6656b8f39fa9dd74ea81663fd75a790221723d50d552a312f63a1cf89d95ab44d91856a1c2353787c254f6af655be3154d92eb69328c7ea1cef79bc042f9e23d1d7b9c3c02cad5e98fc9e6b3cb4ebf2b808993ca3adb73329190ba314d91a8573f4005c825759f6bd176a755603933eb6904eadbae093c7f1cd9b7afc4bcfa6c90b6d8e199c26bc0454a3c5f917aee359857fb13f8dcca9882fd8a3d2f7a5235346366a42d31c983aab38048d7b7726e157fbd1053154916b48d6caf5e51b0da7e4d86792f5fc04ec321966db8c47f7e4f0f1a88ec18bee60de25aa8313077a6ef490e4fb60501e2b93fb0347e40ef6811d9047aca37bc3f37e9350e804f360055609646dfb33b362272e4098b6d4099546c0806b1f9df30952f26dae13f21a54de4ca4cc1d1f877b88091d22a2cb90e171868958a4105f3f80f55f9e5ad7bc471e90c2b7f1ba58555283167bcb4d62760d7cd7687bebc49de1b38705307db06d0d9105be45eca7f183de2e18a8716726ea60c75b2eff3a4ae255e6c2e95a66f429d3c0ee222b1b700ab3c2c195074aa53bbe9e9931416471cee064d7e565f51007f9418e5bfcf7558ca36d48a76a03296c56118c49dd350e2f2d2d58da6103f6724052ca72cb3d315a270ef60808bad5f6d6a2abfc94c5790deb0e1fa03778fe54eb569cb0930f80175ec3e150b55d7ded8867f25dcc697ed886d566a1bac7ddddf696be5b7e9fe8b75267fcee6c093910e3711a1653f5815a6e7f7bf8121fbf7b5bf2428ae601ee76b472039bfa06a1b5661f302eed94d7a3c3fc976166e219262e21002fe7d62fa0bd76379cc6a60761b9d9c6747e5b6c79a6f6dbcce93b422298cbf2d076184979b3d3daae1c757da8fd0314edd1907b8d741a432fb12ae49a43c5567c165effc99331e64bb414f2c066755c0586dd9fffbfe60333c146d00b4bd6696a24e17bb979d53282e425be7f8ed399b7741ab2fc43963816f53e836b119900ea3ed310291bd7046faff44f4bc2f90be610622238bcf45cdffe876aa4efd2d2ad060623f0875065b73c0b5ccc55d7d3fd7cc78bce8733a7d820ee938f1d72f9969d3a143283c66d9a3307aa5d7debc86f3bcdfc9a532755f3a0f190945fcf27c2d1011d7d595317fe51ffffd8fbb2f6b49565ed1f849f073188e1b22584108410073b8ed79d5796036210831804bffe7bbaeaad560bb0939c9dbdf63edf593771905aad567775750d6f55ed2e5a504e377846a5dbafb904cfed171fd4ee60fbe929e5f4c4cbd79be8f0150f186950f65d0bc22b6dd86d9f96668db1e2e1ba85533f6d0b1c74ef99ac8fc205aa1026f7d3c0224b4ef0905db491c2bb0c9ddd41158bc079cc6e5aec43b81c9e29f7763f4f22544e8b3d1ea7c185685601a73ba7c1d5f802a375fa56e0a87099339cfaf2e48af85ba0d6171c59ce32161cb0d7af19ab916477653d7bb1a756b8a73b7c340c55325b624b1cb745e60158969ea07b2aef1752cf2d3493be8ecc3fd1d9029d6db0b24d8bc1df5b33ac47f08ca3eb56af27396f2895e5c50865a7ef7e6e84fa78989b11ae7f7284fabb9e289a5d8f70e35dcd0f3b3a2c2e61b6accd25445d3a0831bd98069a3198328d3122082fb998c403f74904a2eec5fc21bba7cfb0a8d0dcf2d5d72b0e3bd25cc057fe430d1753040feeb1359ab0ea96e60c7373e973edfa53332b965444b40ab6cf09e534b4ac3636be7211f02e5b892c38071d3209c274d85802268001c98cb08a25d1caa83f55fc16d9e6eec5b72c76d1c5b7d4beffee6f1109e9bc039894ce7afdff4647cd12ef525a2d54b6789100115f41adbfa2b628df92a5b40f9b046f1e6ec95162ece86a58694fb73bef9ac395528b45df962f363b3e3f13241eab97d87bc95bd2360b64b0c76c1162c790b64fd41bc7d2c55c38267be5ad36b5ac05cd2933bdd4cbfd14a75ce2965c6a0e0f6281a0c8644a355dd5aa11590203c120665eceeacb55f6c96d4c30ccbd8598889ff289a97c85759a676e5333785e9f5884a196eaeec681514ad9219e614b0ab1a4c69a8a8452d380310de485dd85b99cb3c4fe6fa64643d01db44038d384bf80d5e421bbb0c4164a210930fa9559032f9110192816d4b7356439e0fcdcef483d2231bad5eedd40fd01898d375bbdd17be3e94bd299eef5d1f7aada1c30b5dcf1ecb00930edfeefa49ca1611f6352cc1f0a0cf117c862a80e641cffa036c0cbede8b386efacb6f849d6cc36e607ff2717926c34c1134ffd96a6feebaf2d2415522777ca9e92fd7bec4276da069a19881d8de5de9fb48fad2c53cf8e516b27c4929f9107f2243eaba10a468b7f4953f76d4d9d86ece543762f875cd4da4b48cac7435e88171c2ad108499fb144e9a39d242c54fe284f1df6c9e44591ce903c08a988665f397bae2f17236ea29f3afb268449a989d62757be3ad2aeaf7926ced0479d453faf46aa2881b65c9e78f9f58967dd78b14fa3fcf2537ef9c9bafc9c5f7e5601f48b3db1a207f2022ee9c7bca072c204565b31bca3baeae59150b5fc877cc813b10ebe9cd98f8a3e33f5f97d714e49a72fb9ddfcfc85ca9be4877eba977019fe08fa16f951b77fb4f80fe9b31602991dddee3ef7de9cc4930a4a9d6efa8ca5ea99bd55f363a3378df26a47c9a69f4bead202307bd4066baf3ccaa3c6a36a7ea592e8664f84c6148a428ffb7e2e5d1c31c60ad4bae9a60b3b26614761e85fa761ce5bb88164a7a2ebbb98ce0be61ee92b310fb02ce2bdd0e8abc0b9d6ac9791c4b0052a8748ddc5afcb9773150d31dec833ae8dd4ad4f3bb9a90c2ca2a5db8df4fd0f662b1214f88395c4c9050aa1eae78519aa58862a6b4a2acf26e3b410fa43c2d5412abee5e0aa0efff1f3b03bfadfe565d47bd86351ef96bea9090d476c20cf4f817240312aebcc0b542ce5da9e6c9b5fb5634f830b31eca40770e4f38bfd2fbb3d0e02da88ae6747c4f3de92951ea3b53995e71878931bb4b88c3877cbabc303cb0ce4c457a9a465e5d0a89032fa4779f9ea11092301e9c1467b2a1ffa56a1d0e3cce3b0c20ce6d149b5cb5b3043c4192d988c6ec81eeca762819f24afb0f848513c4891c2e9b3a1fbacdf68a419e519e5209d039be1d8e830733943b9644dba7bd55c4f77fa40592802c26cecd81be8c256404f7ccca16c8e6cca7d9feb3d93a1e3503874f22f815d874528b7119196d76a587878585e045047f2cfb4535cd4bceb165e5426c2f65509bfdb873eb1f686e141a4ceaff708dfddb3e2dac1fadea3bc37ff5f15fe9f1df0e1e6d448d1a91ee4a3eaa978d6b1da77ad0f4096c70d1a7cf8a5e9e8d823dfeefb2c64935ab6ef4b8133a98f793901fcfe48aa40da595776a5281fc71e75f67fdf48f4d4d32c7d66fb065e5018d07e26b9d8f4bff7f9f62d7bb7573a64806b0397ec612ad570a38bab23958e182bb1694679f8912f68db407d94e4699a0896c800e68eb0f28f17bef4aea426576a7be42108653d928fe8ab19a9f881b88b6995b34db06a56359e4f852764a6574d5e13282a20d3189fcb8913c45282844b6b93d77e4079c0d9c4d982b8b7e4a43b2c134758bf893118e9e686064a47d924b450470e9fa12727b835e0d388117c138f24b36dc6f7d2ac2fa91ba46c3e9a932c13bcb2124a1bf6bbed0c6d3723b659d2c0299d5a5725e762c242920c014ed1b3455757be8842fcfa27b1d2ee30a6a35c24dd0b1ac8c433e522ee615fb8cff9f6195372c1b7cb38518e980937e3c06f81f221af8e660e0bbcfc84a67a26294f1b48e503c137794772a73b2b61c9083b22347210ed14e4e3fc6143b85c717c9d2c4b06caef3d0ad424344e1e0ae9f32c728d5129af7988d883b78ff215f739f4ce54bbd9b01451474274ee61b7e572f627d4786cfeb8f18bfe8aaf04cad247a1d53d254b46e2cdcacfd0c55ed3451d5ccb7e07c8435e2fc3a15afd9717afc748226aea177157919d513f671500787ab786a039a5838969db9fe95f0dc2a1d74558af3145378c2f816172901c46723314a735db7f4e4c780efeeadf04373f59b1e4e56d97b6afbb6433c4f1737e6fe9326a6fb20a6977b74fb99620f116c4b29e89d1247e951fae7d6634309a37378c1798ae82dc8cd8a29bad8fca277ec8ebcaa26d390e990551bb5237e79a730b02b4c0aac758ef19317e6cb03d2e4e4f85e49dd4fed4d78ad1c89ed0ec609d89c8d124f61bf1a63491a23cdd7286b666660b06e4bec046c761da46d1fafd16355edb516ed56e34a4b8c5bd0c4fa48e473e6b3ab2736d156460948d1832731531893503c5273a82fad23844f482ddb40f5c56dff2b789be55104ada36f9af594e7eb4192863e4cc2bd89dc313c84aec7a0aa599b2304899e0415e270e357889394fcb802c2263369d1cb06b395c9488319538e5b558f0488cb738f92beb40966eacbe47579ce11d66f79c2fa2242dbac5b92849dc07eb965e9d2f3f6478c0482cc1090e44662f6b4bcefcf36ea4a6d07a5707a6e0bc7efac052ffdf94237d127d028348bba7a3689d5d6fe015aecd3212dc565650460d41196740a52179642c3dcb65564ea785f218e65a2e0505264560e1261f8a9adcbfd8b2d7c09c373b60100f9602d282927537525df39cdeacdfe4140c735ce08175f14782edb56f74f360bff901c7fa40725b6fb36bd3c8cd39f39bbe5ce729526a73eecbb78eb472f50aa22458e05075551de2b12d9a0792d0436f569f43650b33a069be8437bdbded03a8a82fec67a50d1afec9e3df7dbe8bd4660138d53eafe46d10d5aff4df17b59ee3e4591c2d1639b759a4afe699d5c1a32c2b7484f32eca8319dc19bb7beab04b975298598e3c6175a8c92ed9a111a25d3ff6df22f38018a970b4b6c752fffdcfcbfc474f2daebb65fe1c2a496bc31d562097af169e25e9f379e0ab1d900efaf7136d76309f1d2738aea0b413ff56aadaf673fcf5b3f063ecfae9c1f2796fb0a998f5016f2db154f6564658198f16b4d9b24320fd2dd7aa6af56d56cfed33b660b680d401823cc6026d71da4d3209d97c114bd6960cd658ab0db8da677b2439de5f6c8388fca81d783ca9c3249e9d0c896373e76cddde9c7a64863b0c943fbec51d1edee60e012ac807842665f4e86cef9389cae2cbefb20dff0db6c1b040fbe027ec2fb8c90159766d6e3241fa43c34d62608bf58a357d00e2039b07b32815d065592ef20080e80a2c361fe7057fdeed8aa7943eb55e54f5bb9ad35c54a6be3960a58478575247033d24d2198ccce49c20b373566701e794dba50cf8e18c64a197f75e6edce3ca09f1de7657f8b9710866f10aefb9ed2bdf612f0025fe383363092c9fca34a42034fe31a7945440fc3b105c1ed56ae2ab987fd2ebdc6fd09c21d3a6369e6979c10e6dfccd3bd62b71fc6b8e40fbc409af197cb62d1253667597217d6bbd0dde1c2297ab71f9ed781f9231c616f5aa4b1e625c934255cff4011784cb7a1f2afa9e21bd394ddf466f06c60a2aee1c2393e15442ca84330c0b145177b64e0c462fe04af52c71c18c019960c2a727ce38009f0866476bed86388dfc16e469d4a5bb2604e0fab44f6900397ae2dcb7accb23161a64644443ed739f9444e9a602d27b223b37d42bdc6b3b7ad660efd87e277b07bb201feeee55c8a049cd21c2af24efa46ff83326f4b7f1879a275a6e3a7c47ba009cd2f5fb37092f652e7442650af627c85a34baff3f1365d96596b918b26c8ac9ba22c932648923164d53e5b31623ee2516212a42e37f8efe4477d3ff3ffeedb432ff4b2d89566a403794f1f92802e0c46f33abdf4133dcf8c09b49ced51b047471a6370b2b1b40693b3bf0c4303c8213fdb4f0be671c65112ccde64c3e9efbc568799ff66ea80e8ff0443a8f6a46ff393f6222c4e7f9c60769f66fbe9ebdc63c03704ef09a06a69d55abc5752cfb6ac391ae2997167ec52f34d4c51f79f8f9a79c25ae4e7dca40c05fb29b0161b8e03a037a9108cf07804c568bc8b89e6211072cde265ad0fc4bcec948b5780622e53f0d8bce1cffebe6747b671fac453fff1d3b1b76f6ca510c15242f7ece5dc3fbb85fd8f92b68a909a8aaf599b328b5652ea42ec448ad4bd11bbbdcdebf1374c48342a75ebe97d9b606d3c22ace3734d9b141bd97bf33fee4dd91957324eb4ff540c005ca9fff452ed0faa2aa49e7ee49d5be00671efff79e187f3b5d0d2f4f0cc64d2fc35bd442a9590f0ca95e1eae49e0363b1fa8147a4d74412dd3d27f1db5ac1ed4aee4df0dd5ec0120b6adff9f9168ff7652b8121e6a6b3650d511aff80e15fc6f630ae9672ad53c52c9671c94b3ffb38acbd4edd2329f30fdb67028cebbaa25178e55a8567fbb3077faa4dc861666779f20f8a396c86f5838ae9748b3fc22875f6400ffffedcb59efe4e0cebf0a2bcb2aa9003a7e4e0f65450fbef91a49659265a665298d0315a823ede7913a4376b3ef0f559fee9b91b167ff99595b454b317fca648fd4c6fb0fa89293a1da55ba7703d5fc00f7f387ffab2c406c17db96954666d5bae607efd34da806ea80a7906c677eb269c6570d31aa3fab0fa48ad0e0be125c5f5ef8f79180d357ada473f7a20e929e28136c4f0e7a6861b9d6877e213338e663ac4e3b06899712284255d6c01a7fdd8dd5936ef345492427a0d0a8e515a8e647f23da3c84cf3233f687e91451cc767adcc4998a420cd8e7313957791f9adcf67249a2d7748ba93bbd473c07141bc88e8b59c9906a38b970dd54745056d86aa9e7b6cf4c4c0ec08342ae0e78442fcc4912b23fb89dc92bfdd33127f1b7b577663a62d16bc25b63a8df289b8e5baf3f1ff37fc52d577fd52e5f7fc52568ac6486d3aaa42d8ac45874aa4e6d33fefa8189cc2b93685db58884bbf2a1885ac5a5e1c260435079718892accd1edd48aa29deca25f9c311cfa703ef29c35f30ca08d1ffb3f679db7fd9ffeb5ffd3382e6f1ad94b04dc82120bda65804ef816932dbe1d214c0cf8726d7257aad4e4a9aafa05c63286506a3a9b8884dab1785a8ef3e2c9f2d50eaa1f89a2a19167a71d60c80c87ecbfd7db2940c99a53be719f556878f225bbfdfa33433b6068fb633f0f3b3ac239728b34af1cbae73ce96d093470ec1549c07699254c044bce0880eca019c742e122a67bca495b18c48252cf15ffee597371f2fc122e22f87e37541de3f9dd62210f5ca8add4ca610e4fe0a3beda7fd6127ca8f6283c7b730f7efddfbc6924e98f9543c8fda57dd1e2cc2edb93f58981724a859316850625a28a0ec259ff07db23201acc8f499e9cf0ad4df23364fd569737891b7372fe29e2b64f85d28f174b88bbca2d245f37101ee2ec5da2faf3efa2e527d5eca814642542e6768f98d88da79c9efaa15013a993a74e2bc972650521ecad1097896f071af885d495eb2aaf458aaf277ee3ff07fe2be9e068b2aaccf7e6351e5452ef5f87517068079296f9795eb3438d4dd2c75adfea32ffb77f19f9a3d4bac6efdb48821ae4bde7eb0152ecf3c94509f8ebcc1af93e0ebc538d4333a9c587e2fd08f707a628dcdc5231ea0f5c5ff1d885abd5dc29a72151cdc6e267c9392f4d21f9b010ea3cceaa797c92ebc90cc00dd8ac2003062e1f6a7d33b0202f837cab59201fe1e0c7ee27da56e5e20fdb86aa2117eb88daaf1b6d52097e2530306eddcae45b5d62312e9b86c5a6c404a4e900b400ee92d16a48d41396a6360f73a2e249ef9a715eaf8eafeab2a6c64c5faef5af964a7aa8d42e23ca82ad5faaf167d70c849966ae866193d29937311364b51bc835794fb3666deccb87c3e2c38198847ff470f0d6c35a43a2aab1179fc9c144757cc83933995639037840690dd172a4fcb173f9f8bdf21f7eeef1b10ae945815af56d8020905d8faa8c088c29de51f00c1e4d10d7a3fee7b35a2c38b67a2e55b6f1be1926fb85b2c8f0c31cae354765ec853c7142200fdf0595e4cf4b9b310f32146715558fc0c1e7a49c8f6857e16c04ad05959a562e1f7e0b2a57e3abfa8a55ae7aea11d9ee66a1759f5f43f8030a4198ee386b8933631a6cd14bfc170ea0ccc88eefff29774b72b7e4992cdbf9ddc9ce7eb672713796bb3405b58bbbcbc2b3cd8bbbf3c2b3eec5dd95dca58cabed8bbb9bc2ddf2c5dd74c7939a490afd88ce21621747ada2b11e3b5ff2a910034ba919c358f96300697686bc0256b64b99d5ddac438122b14057511d4cd222ed5058730ba1a302ade16b9e106605796c0bd658e72a3e12d05987b087e4755bce7818a363681f490d31a4c4c3f164e503f820aa1544c5a4562bc6114925b296af1f796501d60e26dd129c31ee127f78566b9ccceb1a727fe45af1469209d1ac1ed97fdbb18c5d25a0d9d914329b7b127419a80d6dd62ec26f769056a4c716809915086128b529b7a53ecd733ea20adca09312ef18eeaf06447abd195d843f015163291154c20cac7f620b191c00eaf1f28355990cbf0462adf7b96405758ce37c390fcd098663a929516aa4dd16cc8233a498208ff82cccef4c23a146a50ecd6efe15e706fbdeebe588d1420361e5883b6bf05c6d1738f60880265d3f51f9a1a23042199fec06750f292fed2eaa172d9ea8faadd5a06137a832f03cb31bd4ed060deee16c37685dbce299d2be5b0d4a170d284f9cdd6032bf6ee04a030a4ea0b2b6474ed9c80680ed804d5fa588a3a4eef5c73f9bb47fc4765d26ab86e8efd00d2418fa0c87dad2857240f1e93b83e1a2cd32ef50c206fbc923c2efb10bd617af01b51f607d2d7d78f7a5c1adc6500b9146f8bba5a6edc7446707b6c39e5cae53b4732fbe641e14bee4c9f409756aefdaba1f9366e2ea237c64b03132527a7fdf443f5cce2a0da079fc89afaa1342d48f09f31df5c9f20d34b8f5ae4805e33a41c59d47e6e893412e4120a52a275cf0ef5ed4f4f9ef0487f30e2b42c46ffc7ee598a5ae75159ac7d1b524d8f5205fed8b58537d52d40bc0e396cff98c50f300acb28442470d78242e8345b60bcebab65920907b156a59f009e51bc9f6fe15da5d8018f3486d8ef69b1181c3e053180de6f88edbd470e9086141a7498e6cff85c53f9bb8ff84dfb9fe7a3754c193fb9a3b1564125a6cbb3df3ba1cf594c64fead0bd1bab66e2c1d8afa5b256e25130bc800afe36b82c8b0b378165be245f7e7b4257ee6d6e62a7e1109ef47cb593a3ab809c8ed9d93eed6cd99d81d9e976e9add255285d21fc668fc0811204a5f29611d2871debcc08ee9f4b3ea6b47b376409fe938a2ca0535a5c4ccc83d604c65ad218a85efea5d6792ffd660dc65097c7b25a033d191da0ea47e414fba43ff9f59ac6bee7343616e7954d683f4036dd030beb3efef76061ff3e8a2301de85b0c6f90d1f0a0709638ceadcc3a4debf3a579461197c554888a3d252e4ba1ea8f02709460b51029a8e64c10fbf6fc1d307005ab38fef035a476a8b38c8124a5dd696572d6956aad6fa8bf3f36fa19589a72255bd0d2fc6b954c592d5e8af4f793adea12aac47c6e421aa3c5232d1185e8d7c615045f5579874a3ff29653ad7945912cac48c87b23998b9b5c8e6e42f39a978dbb5441a3ff10ac74e8c54e7147615e2284756d8846b145513b1773e3283bc2f94c2209d40f3a32666b38ebf5b97cd6027c05cb8140d87b436402d33146b99e02f592b5d74a03fe3510d9888dba48afe1415476ab70b2d4f3abd18b476419e770375fca8aa995ed9edc7ff1ef8e6bf89c9bd5e51d2bcc0e3f4ab67e37fcb59920e05f738fc9b708f7fdb1c7e832ef0ef98b6e507e008db83bf0947f8af4c5bf0f6b4957e46a27bf7482d1c9e2d98110ef3debff13c6cf581095cf77f3b26f03f41bbcbeb45200b674574c567c3d77f8f8c23c22bcdcc6cfc6f5caa4d04b0dd22fa7bc0767fdf125def13bb32db54006f7afb6d9fe55036dacdc6bdb166274628659d62e5ba6af5d64ab2c2433534b4a88a65244c9dace3f3efdb722110738beeff1831a7d4b122f28541ca3dea73fb3f02928365634ae5cb3b26a10953e3a9a32c957fd1c1b4f40c0e8c4603c3ad98a3aef3eced897e386ebe0bf3ce4dccdd4005aaf4d92256c91725b696c3b1807022df56e1632363f822d3d29e4f3ee5189c995249359f8d17d5c7030954863df600b5474d861bbb2fc55b6e6d1f64ca14cb1fd5ee1785ff7a8b3ce61ba42ca6280b54f3de0ed9754ab8bb85f3ec077be40b19d9665f6e4ed0c453015b82660d5b28bf30055922b9ffb56d49c32315fb2aa429a6826ca3a742309e431e6c2a6da454f30d3b5b6ec672a337d913a740c11825490f99d1df5c2e9803cd9a90630dd9476d1169e35dcb485b4b291971883b964ed2e5eab56bbe98a53389d64fa01fce74e4f2daa541cf6e44108548f9e5a0c13d24cf08e3eb83b3e43d68fad0db4d18bb644a70e7bcbebb3ff213e0e16ea8fcd8238990e245669ed813872a60ce8863f4bbbd8a63d5f6d59997c746dfac3aaa0e059b813655e40039a62857816d75b4956a80faaac55d4b39a647aa6f6f5dbdcaf0099d2342e5384c01676bbb3e8a45828235f252360356fb679e128e86a852e61a677d42f6a87c7388b2f15d2ec7a5e7b54f6e860129c608f9af9890ffb19a37243fe60b9506ee4b7ed3c93d7f63dab0caa5bb9cf0916b43eab7b73f5d59c37323b65d76e3176cde45ebf6903fb50a8ee4702aa4aeb5280f2aa1ba4b63b577fab4cff56133545f55b3a129ead5e0956117c6415630f0ba366eeb833928b7947f64fe49cd2938261b1b01c4577755bdcd52d4467b56c64da0f265c19467799685e59836b79eac859ecde9f0d7cdc6728cdd108e5ef4837fbc2f2121674ac59a51a9fec414bb6830400a309a46df228e913a3a868f0788222926f7b834ea6e0ba52f8f097797257d31ae8692f90c4db231e77b710de9c16a24225bea721ff0ceb40999f7a4a80875db36383937ed796b32000fb8f6343eb29042a18553fa8113f261af4ec31ca158a15c0d48e3b4fa5120029b72771f7fab29f71d2af881883c05adcd8bd3b808ec2db6a352e063666595cf3f6d2435fca963eaa4bd6996608be7acfb6f09e17f737e28cdc5af9927398bf90fa2e7ebbfc78669ec80b621d3c039ea8d28672f4a25576b16885dd2364986745a6a56b463116de6d979494f5f582067accf97fc9aafa65f70ae6ab94eced8474e04d751a57757b8e4233c7b16fe56fbdeff9cf2e7bdfc6434c8766bf20642ba9257e08d2ddd8545ad39fa798bda3ba3b625e61648ef702a3a35273daaadb78564b82f7065e89dbe41172a1cdf9aff428efa01ff8d6ef25f4d72813d677a090de37b7f96262318d0a4c6b76540939c8e1d54d9f055fd990b2d3f5990ef27717908a1525d652c916410bffdf26308fb51edd7ed473fa22f2e17d7318cb04865a2735e3059996faa040f87b84322f8d71d6ff3bb815e35cd6e1598926e1f03d5b4d94436b5ea335a4fc5dcfb597e7b1433cdf6e7cd34efcc849d76f5adedb640c0425184f0d5dc4afe66d94d7e2040d441fa1fdea45f69a137891eee2a971ab5cc3d05fb91f845ecb49d13bd3dc32867357fb6a6b9f61ed5af7ab0a2cc3ad7561482a3f57e604a79219026bc2437ec25036543d5c4c250884c34f696df6b50797cdfa072f46c83caccfb75834a2bf6aca184c6dcb18128286a180037f394d0585d4368f2bcccd248454fd9a3c551444dbf0795bcc54ae3ce4d567afefdacf44fb50117b515d2a577a190a61e955932fef033227597e5e8028fb14505ed760398f83f69cf593ec35c8fb7518f0faad2d44f8c0184ade8e71e1415931f937121529fe1b62a97230b9fb4fe831537870b30644d9ea5639313dcba4ec092a4e657158fc2c3f9a8639bc0fa0f2e41492b3ebfe78566c5693f669cf458d2774b918ccac39bd5a58e63026acc577d41bdfbcabffaafc0c395daf648d64a7bd4239c1b40057ea13df7248f28c57df283eb1eadedb287747b23eeccba165227bb1eedc823a63bf6f2515403989149fb9908919811ce8ebe649af7d5fcc8d82b1ec3acc53c760d2bd43715aad309c9c2f58de53a34b5867ce5e68978a54e4ac5c7c7e4726c9e72f7ba2647a5d9cfcb111d9bbc7716cbce8d23928ae635fa5667bb26ea9ce2b920cf0c5f5b729267eea792278b941c9f012ab88c944aad402ea489aca3e6d5d818066074a01be8763ea0d12d06960160fb40e6a3fd5ff4f6c50706b603014415ef95fb8d6790bafbc630ff813420c43997029c7d7fa75dc4c2b2b27a93d0bf66df9ae95c1198d5517c90864e5925770b00addbd5c8d63b06c676830bfa0de7582a68f96abe08d43ef6b8b0c9822d2fab167b0cffb4f50db24635fb3c27adfe05209a4f08863b7cb3e296181253eb3129225e6fd3ea1bca0aa4be1a15218ad4ae856ad02de69d9f0944556ee2aac30328970213b272f2d32515833efb6d343bb610cc9d744db3b99f218fa674b266a3d4c267fb90562a60201d504631949d6ea19883be58c1c52a5e40e452c34531239121df3de362abafd5a640b968d568b1f8d06c15c7fac0cfae3c95929457fe84fab10b3c50fd2b2f9049357e23947d8072fa4c6666d417ad77641f00562adfa8473e128d75eb220dedb123e4548e6deb9b547d0fb524f70d463752337f0039dd2c900988ca9753360ac4c1dc82ac623825892e48f5b077b003ca04cd5a6f24445e4a8734ee5a44dc5428e6bde98e9ed814ee92c0e67f95399236db3a63dbedeb6335447480accba66515b1e552146ebd88ec663bf5d48a707f3f75a04419801972e5ff0af3f3aa154e7236ebd735c5502036559040f059754c918213f193a1a54c0284cb2b23e70cdb4877374cfaf11211992d76c4746e19f3992d2cd8bbecb46c43feb9c5fe9f0db2c32cf6bc3fe709d740dc78b980b47de15b2f10f90746da95cc74a17c5fad997f1f61309fd4234b2cd49315349d345196920a4e31f2cd5e9655474a4429754245f6bb86e6729203f93236172032aefc74280afee75d58a819a617f6b80b89cf1dac107275e412a5a7134b4d8b26f5bd09e2b175fb297b32b33be5d49e4754893bf002ced6ccb7a54cdd8078d607fc3f2ca070077990ac895419e71e233fe7c9bedab6d9c4104f801f986bb6b36a73ed8a9c7f87a0559fd3cd9b8a2a746846b48149bc7fc15ae567ad783768b660efdff146ce7f3da16007f1702c79b9c99f5c6ab288fd29ef2e5452fb339494ef19d19fff67ee0b8aa0b2894fe98dda762e259c0fd57cdf29ecfd46b32f315c5251147c67e5f45934a58ca9519163b4fb79b43db8d9fa16cb70f8584d7c7b866b6c8a97ca6f133860620e31c25da32b101f317cd51352dd635aab48b3ef16dfee7ca4cf85b95bc6bd6f5b05c50fae3550e13ae58f85b1cd6bfd7c77008d0a6532c3e3479765995df1558d0ac304a12177dfb0445cd72259c1d95d6bf42d4bc4489f5f7a3ef6c08da40e53d70e89cff4ef1174fd0036fd5715aaad757f2cd4d21e5e11cbc0e8f7d744526d59cbcdd0f0b37b63b5cf4954f8b4e59816f6b8b5d3ecdef9484c13da5bd76de3b46bf7390eb19b27ce0f690f9f31fd4b27c2f9c76e0a9834ce91d4d55112be3645650db2efa3ddf1c01ebef99cb947c92b747e398b93948dd192656389594f0ab3de40d105a0f63970add42f8864228d19112d36154edbf97e7856fe93b8e6b834c0cafb7a3752892745b5e5f97d4e6e45cbf0116a496ac29ae14c3d548af656ce6bbf2d7e385d94af9f5798ab8141660d0b0f10c3c727135b42af386821303b9c4340a677ef442c4b1e2c2a7d5607df84995d9c6d03396262b2bc7c17161fe5aa4160d21e2cda105f8d505f6f16e66220d5db7b38cbdcdf3525b1e813431ceca1eae76290db8eae4fe8d417be82b432b2f1dbc3ebf3d99490e746a13a69ba5d79a8b4f4e96ea4822722a9afc1bfedbd2f5a09e046cd43919a0f17ccbf6dddd702f487023f9997fab9d5a38d45bf67e0068e5bcd1eba452654ebe509908e5c7b4e35572c7f8966b429b18f0ec80df3ac70157ab87b01e13161ae81dab6fbd742631d42e3ac4d3353f2df161a3398cf40776008eb761f95f4e860c5d7b799f5803685dd6f24fc68c474ab879a158f162d92363c733490a0dfba31eed69c8fdd84cff8f4a6b0eb973b2768e95351f0f07bd7e40c1f8d66515fd01ff06a04d28685e08941065abfa7b06dfabd18ebc9dd8fb96020c831e1053cb44573d09f712ad3aee1cadd65e4ce1ea880846bdd65e5d4fd74e72be7d41dddad3afecee97e3a9bc2a4f9bf5c866a5f469e89c83ab0a64b2bddc3b2c63496e02f87e0e3c71a7f9113c24171579cdef6134ba49f4a240d1545e383b7ec2a062cb2f1e80b4d31fdac1a59d5feaaa8eafb0d77f452ac13af6039e7aab503ddd3dd48655e504268aefe27f64ef848ee789c7847285bbb122fdd72ed59e21e6929ec8b9e02b6448296d1d112f6552e1f18e108567f4680c569d937b5bc9eb62878a287bfd42ff1dbde6c4b96add89b5018bf7a2aa176205f2d53a266bfe9efe3c01c6283d29142fe3f30676f266c51269edeec4bbcbd3e7750849ad5a8d2168ee1266191565e35cb83f1e6349e9dbfa4fd78a68a428e17ac65c89bd0af79414a3f03de9c157b69aaf6d2d47eb034292dcdd90be61bdf5e1ad4f7af51c7c3c4ab628ecfbf6369f69c47a022b47af2b82cdd0bac2bc1cba3bd3a43e54ffd196380975eeb3b2d4e5548fa45cfdfb9a635d668ebc7b018fed4a3cffaa27e34527e567874e54d4ea1990f5eefca89de51f6624cceac45ab57f7baf6dabd2abfed2fc98750a1b5ab7ac141b6dacaf3934e779b5ea6451226502526b067092d52f90abbf60a37ec156efe6085f7b4c295cb15aee2239ab2c20d2c55ed8d157e51312115ff543bacdbcf2c358a691e80e0f94cf2e87c2609c5f8ef893c15beaa4ae6a70acffd8ab4125fc534c12b2f59e533fd6d8151dc39be0a163ec323e75ea9e6151779a4d4f3ae9e4722bda6f5fcce4b827c8549ccc0c2845198e43d78ba20a68152a345cec058db0e972b531ed2cf3a8b84adfcb367daf7a7af6c7e8a89c606cd99fe3bf820dc36610ada1429e85ef9075fbc5074d4c41e69ef330f2e248706f3ede498d1f87fe92e6a4470752f380bc19d7cbfe9b3f5622b45bc3c39ad09370885f883e5c0e953f1b57919d68eb29dff6bbfed507eb48e72d38e19e1b46323f1f4db9ee89927367e8ea53857a3d4cf653cd70925e750c4e595eb0e36ddbda4f2caf0f2d8edb1b562bfb49c471c377c4b34aa95721143923fe9e7c879e8d7bcaa3d902606326fb19b69baecde0dd58844fbbefaab38802306305be1bc26f79f058d70d075a5c4f697d25880a83460409aea5b13ac305094c3991140cd634fbccbfa64f47229324d8a7518472a5cf9e47e5bfb354cd392777ff287997dfeec955f2a4959b5be0c6730f34dc699a04778f653cac2948bfe9e721bb8c396c1e0a2c4ab73e2343e753ac13a2a21d2aec0d9de1ee46e10c04d87fcf943f60611d2078e985347e07c3b94cbd49b71d351f30997213ccfd99e99bd588c4c300a9653caa4ce0c0f2ca94d1e085bb86a30adcff66c214458498fa43fe6502f9c56010c7add60fc45830d864df63c4a37fa6e24296d90928371eea08003fe56535f92992895ec7236bcc1e84b68e896ecacb967ff84eb5ba8e732ae3ac4857289659a3a2c474bf09532167bb9bbd57ec893ac1f9a7b7eb3ab76483e67e56cd5dc906583ad27a8b44dc4baee19c08c65bdc70ba755ada4ceaf98a7be64870bd402e375369c84a40215c301f49df6441b07cd31f5d94f24134465d776f0b852159a948d6eb9f9af060eddda7669af2db6dddb7d0d7fbe2f62aea1d4a5d65fcd296735e5e94f5f79fe8e7398a896de8bfd2797b6e4bd960e12afde219ed7ee5853dae8dcc5be8fdce7ed4e6e09ae4a7293d893c31de68211cc0591c553f9b46cca3364353ff839bb88d9ef3945b221b2a8cd53f019f39d3c23cd598fa5454ac715b0f9af467433e8a10abe33b1e788086ac2bd75f341422a9de7f0459eafc56440f71f9985343a7ad6be1456c76c856fca578eb1dac3d476ba9781573df48962199f7347e957c125dc9bc0a8bc00131be10f9ff0d97aed13e62c27427de933afedd9ae5ee93aca51c7364a21b8fcefc8b8557942ee2fa43a9685cc08be697ddce1cae991d56cf6999ea452cc65ffc81fbe6605fcc48ae5e233bbb6d9e6d03265aec7c4c042d56b05a5cfa2b00ece0cfd18d2577eb0471ce0d5fe40bfec03b1b78fd4602047af59c7b1f247ba150fb82f3b89bd16515e337aa436f3883874368ff2790c98448fbe61ef335ab5d4273761a0d43368f9fe2e52c1da6bf1af6f6db93a50c1ce2bd90980e4a0e32c37652b4687d9cf74cd27e6121c91b5fe8a65f60524c9e594a7550bfab6e3bc65fbe77cdd3336201d87f9254ec0f42c430a95933296a2223b8da42bfcd82d198e3d6b70bee6fa84dddbeea44f624f63d2bf48d60b7447b98f13ed5e16a5c4396da728f83f54c20398f4486086c8366259a24339b2827cf6fcdc736a599be93ee38acb0bae76c9a7120a7b3fe9cd1d720f6bf2fbf6d472c667df76e11973929a7db91b4b7f7548fecf9ab50dd447169ee8d2479cb40d4f3de5e9219f95cfa3266c205dfdfede98969e1aaac1ddd22f3c82602afdcc93faa6a64de38df4d5643a2030df483febab21cbbf67fa82bfb002e493c769595979b954a15620c3c574c03c67cd5bb1fdc11ce78d004842baf4d2fea057a6d23d2167f67906e18ae51d42a6482c3ba09073efeee8697136a05a22033556b378004e416b9dfafe3a825cf6033e3ad6ff7c54ce17aa32d25af396437fb4b9d6de3c1e50a2cd32ddbda75691faa4da6b40c3db3d8e276bf77232aa30c8884ae6deab09bb3f275e62f59c790d9e2f7b8b0fd7de0a5f733750252f5ffc81f2f32c6558c9d8aaa777fe6ef3f9f9472bf471cda904571b9edcf60ef2ed40b3383a955a04acfd10638e67f83b89e1dbf886b745668b4779e4716c302a0186b4f7d43cb63c730b19e8c6339102e60c42915a203c69b5d2f52dd610aa25c6453d2fb6463f197291f7e6932de19fd8837fb0accc59c0b0b4bd9591f723d881def6c9dec4aa9a9c6c654e95dcdac121a0051fe6756b1a4047cdb7e65640a38ad4406db656a4b5d1baa2fc6c34c9a5f4c0d678f1d10ed3e5fbdbfd25b2699f8f3244e8e439e9d3fe656b3c320acf3b6aa0f6a5c852060393c81aaebf90eaea8919d4b7de09436b6430da1c89891f0efe6688df3825d6c03fbe31f07ad72054d564d5b7267e54e8ac0e7b249795e4c35d66a8de2513f69af59b634c043c561936cda4a9c5b44fccaa5a288162e984f4df203fedbfc889fda2b6e8c2990eee5ed56770bb50acfe98dc43090097939e7d6b76a1becba1aa1f5e79f98bd8468e02d173fa0baf8dca07b6d83080c185fda53a1d30f4859e4eadae2d18c99953e9c2d6934d07a2d24a1999d37490cb00534f041309242b2fd97e566f2230d0a1379a44bfd31d12eaed3905707d0f902c7eeb95dc985309b612e974fe89fbd4a7d3f63ef76cceb1fcb53ff8bcdde8732683036b9ef1b68f93c0aaef3ee7624192b498d525df0836811c6cb3848b0db5cb019b0233ae1d3e7fba8bd426522c867d20da5ecf78cde319d1d150cd70a13e1de8b3af6f290533cc2cd84b898c1b4faa09b249f90944cc253b3bf6bc11e43c68f3c028836a6ed98f98792c7db5c51ac73175b6f60ae93a132f4762c2ae0515acb6b064be7d41c83715ea5b3863dbf41d3e839b598d80ceb94198c0616bd96d6a57212d4eb9af45def09c1af771d423276c69c7af486c48987abbefd9f365dff174a08fe87042dea45ebb1a69b570315295adf733077a20b16bce63ee3a8e0f981dfd2373394b2cedca4633e0646e0ca16e23412c1401fbff2bebff2ff97f97d6e5c91b8f3edd6e62f7b8bcf9ff59ea31769c7e2d371c3dce21c85ee1f993f5ffe79bffb5c69c5a8dbffd680cc5713edefcaac79b6ffcf6a306d6d5d7fcbfc3db9368cf5cfcc6ffdf5abbdbefdcbcf18df6fff3368b8d85af5d6efa85c76fcfb3f96f7be7e53f4a3bcf6eff74b397b7bed0fefff8fdf7eff65e3e97fbbd67bfc94cf761efe55372b47fe8c79fedc71f6faeeced2fc9172bd98412a1e2abd526bcfd91e5933ded937371119c37c860f2c30d24ead235dd6fde2095e5ed097ebcf9dfebc1b0b067b4bd6d70733756326b354a156b5bbbbf4a96cdd4cbc73939583f16fe7f3589ea996a78b980981cffebc875f7f0eb07c5376b14813d88971b835878ff020dbfe65d7efd11a92eacf777f2f707f9d5b93d0be39fda1edf6eaff9b71bffdd1d226b710fd15bcf9a91d58ede4de2a91e3dfbac78fd118f377dec64aab538545e5dda0bb61f7ece5e105e8a172400d7834b312613cf3085077ca4efad73959ef636107374a89a13cf1ec9c9f3bfc004f778176acd98a4cf17d10096256448a3f5698ff99ba6f380b369cf39a24bff86ecfdaa4957346bb23fd50312d3e7f5801761236870c357d6751e609b13a9278d0e2ffbb2c186e1e5b64b36229ea85d9d5dff68bda19bc3c1941220753b43a3b2b008b6aa925c3cc8561cdfd494ef0f0cf6af0313f1bd4cc35f1fd835b07bf82509b051eba2b4ddbc2bf6e7d45327ad63ec3c35a9d8ea14e18721663779d04e2fc7b1cde2dca92dbed218d7da535aebb97715fe9b6e91621c4ae10cf191729d99907841ac1d1a903e6e3609e2c486c689c748abd42fce075065a523000575b63beeebf0c1715500c0a5aa4b9979832765f77e26ca065ce108e68e53df32f39f8b8dea4bfe3097fefea5c737f7d47c4edac04b6d63cc5bd1d65b3e53d6b1e389817dd9c9b6a23d414945d0d0d941f0506285c03b89a58e8307348c5fb496d8413dbc01252439304f73979cb288f0e85584fb0212a169c7a0941a2e4e0b3d84dd73ce0b4ed9459842289e41e38f2a53dedd40c512c04c895f2aa0b89a1dc9f8e3c838c7bf0a8cabae07b9df3483eba968953db1cdfef0fc964d7679cb263bed02be8e5c56b645560a3aa67df34db48458ad768b19481d6a6509b987a71baed9cefec7cd84597903651ca76be608ac014c36561e6077c3b241e38521e2ecbb2b7d82a6dec7b1142ab5f9e862308d29308da152556f86f4ec2e8658a5658883e9a7bb91da62d96a48a28ed9df5b04345285bdb86ee06ca72a12ab065b6d80bd6ff3bd07cbb5376933939ce11e91150e62f286f3f7394d36c2ad33df3ea41f73c6402c81528e65cc622aed008eb357a29efcff476443f3ad309b03de7fa4409947d5a5e975e8bb4b81cf8d8677afaadce9b461ce3eb50deece57db2ab477aa12d8fecc279931489d70b0ce36033286b6321425ccba051cd4640ff701029a9c92cf553ad867b4063e77b5e483697202d6a0ce9f34ad05c8f64401cc6c40912a71ed035b9eb60cbd5aae3882767d60fc769be10bcbcd8026b3b2291875ea3566fa198affac36039ab05ab1595a6690e2a2de2b34abacc965a8be14aeee4efd5c5868c0069da2f645979df013de654dd432aedef30ee2da2d4a55261c6f7271bf51e2446d3574b6dff3441df63e452bd7d6ddc2d79e0be393abdbf7c6d7e3cd955c0cf074e0104377d2cd9d0272d3419045131efec612d8cf65e76eaca250d37c6f5b852cb3bf494a1394fec8404a273e44d47933b04849a94aef9a1424f3ecf658200507a4503b70100348e17fb0783f588606fe3e98b5fd1717433afc622fc63bf37ddd9c1271c8a853e035da6d2d6b0d2ed6637cb91c941c9ff7519922d5e7623a9e9e031231e5d88454bcacf6ef26be9ff5d502fbe66765b6fa76a0091e15249aeb8165443dce48e9faa20e300137b683bb57f502c848a1ad3ecf979efa539531b2d676a0a5db896791580d62d8acccbbf878ec919d7ad300fe03a4d6da0c20f0b2fc5e7c6a73ece5027a7d441456ec917967b86f30cb2660484f3a9726a791584c0f9e4a109e374f3551343ccbf3eaa65df6f4a00685beb6e7109674ded557db9e4a52de2cab549fb8b16f7d74fbd82f280bdc19c538486d9233c35ece6dcfde3d7b87898cb65b861406eb9edd64f36cff2a4d2339c524de6ec107d47cca0a4bc61ad1263178c5b5afb6187b9aea59974a526ef94ac77217b0aa5356c3a6de6c996faa6ea4e439a9da9f3e4332aedad1cacf70133810e6c081812467a8b60322e1e5943528568ea63c8b7c51a964af87d9f6d5eec47bed98926361deb1dc498b0c120b4d147a2ace5d75dfbbfba6928e72e168af12527b0fcce03acc27e35863774c56e3c9bd5bf97e1228f7fb2fe088ea90156ae5009846c3829c975c0b3a5c830adfc8747160523ff10387173bd3c5bd648726158bcc3a7f5e206b0564b8e1e72b3d9a271400cfd85f097076a5c701d623ae101eaa813a2105cfa1aaf94437f65038e2fe6ea086676f52cd7145dd17738f94931313dfd23ba7b9ce52f31cd0e4997b7cb13bdc7a55dcaddc7e5f1db76b7cfbd9dc1daa68cd5b2cc690b4cc6551f9e067d00513f8881ce4b59414df762ec2d30168f2839cde018513c455b88f501babba0c8903ae13de29078697ecbfd3fc67305640ef9d719dc7159070490900cb1203420f24c42518dd8ed50dc71ad4dcc2220b7911ed3f1151c0c1d5e6cc479f7229e3af378865cf08d4da13bd7e6f482f943ee99e7187518347553a3270762699d1f7be3e8e58674a2148543e70046fd9f80094da6f0176a9b390216d330a77417ad0930b816ccaf188ad2f3928a255e9e42b9a2c03f1a5f96a3e16c3a35693008538b2c23745c2b2d28a0d0265c1d693ed665362d043b6621f77b32225b63d0a6166e4e4baecd132af80dc58333c234c7867ed4fbd5b83de007c91d4f3a8cc5ea3c686aef828a0a391a9a68e6cee47e64fab898492f1e3277c80beaf176c7de20f9c671e79f84fa8145993ccf644f82eff98e0882ed7b8b3a3545126f46d730ae91d5d48abe598d5093e37ea5871b9bb613061a9dce3126daee82cbddbaf22a3c29a7289066a22269e8a15dee4ee80327d54816aa09f73ddb702a06a2cc5c6c7a0f092f98a59f43c09a97bde306b2f2798e60166449f44c82739999d6320110305b373193875bdee13de53d464b6f324cb52a01694e100725fbc033fd79c62b913e3af7ea886f4edf72a54f508ae091ad584436ce33716fb7c64e8eff2cc86ac16fcddb7dadde76aef50f67e6912ddd5cddbca93282f8a35994618a1dcba3590fdaacb00e03367a9ae57ba370762b73396ebecaf7c24f1d41ec96c6a4612a9f93462540ec3314b1cad50050397379416fc86d837d8db40c55900733fcd66a967ce80771f7d51a1aab50a32f8aa4e32f83a2261f01f51e0d74481e1d6abef706cd72e1f1dea471bb8edf2ed79e176c56be176b37621310cb598f15b0e7d5aad4a3f6fe063d2021426b8a76416cce2f9ea1a5757d8669adc0254df1aab509daa162478fbdd122070f49ff157ff16a64d8283015bd3d9abdfb6fdef3ef99faf4ffed85381045e5663a4c83f5b10cb56f3e6c1c8f7ecd3bcb1eb5a1c80b758193d52e6a6206c524a8db02705cf26d35e7eccb965ce2e349fdc3cc02a43b6429dfa374fa6435a3056cd29c759a09a18809376f20368b7ed88dc119047c162219a1a26bebf40e85869434262c3de43c1164643bd938cc9720acaa67e90ba75c9d65a64dd4782d1b4c64c6387bcc6f27b96b22d8213e6c1663b915ca86effa2c781b1f7a3df232bc4effdcaa149a73eee34e6510efe6ece4df3a7ab87e318f90eee01961da85ef211996d444aa275ddfb365f28fb626116c7e35740b6f603c3888c017a64ecb69504221705c4203a11821038049d1a3569f76c6c031c36535e5e852f3580d4fbb91539b7f838a8522044a3f3e3e99e63222a48fd74a4c95df62e279b827f60d1b1dabe33e921267de9fb1fa61f0432f736052a55e16069673fe09f98ed2a7ed7f0bbbe1fb0b101bf1b7bde484dfc6eed07e272b6d254890256abf6edec84391fc7523233174351d58207237c1989dbc9cac3bbb28ee2f321978c7f97fbb99d0bb46d6b810075b767ce7f520332380ee35a8f8163b35aaf78212b87853ea9e20fba735de64d7517f05397d3f92c2645805e03c27786f435fa79dd8fe3f8e67a28df88572147bb64bcd92129b2c3d3c073b6f53947cad19f1e7230fdb4538581b8c2c7c7cab78ef3c0f5636eaca6eee5be1ca8a0eccff976c35b1cec701b659a9cfff5437bde810353d6fe59f9aa6dd1d6b32c9dc9c4e71bda6b106d16ef6bd2722dda7dbab8af65fd9a45eb8f6a1e9a0bbc1966a16eb684f0c7b24e20ee30fd890972f44e9c8ee150694f4a0821f31c42a9b7617ec6137a5e12f7426a38ac58c5fb6a2cf8788ab0d1dfd818a68fe9fd31a42ccc5518b4cb286896ba21e3a199848e751fb156a49d0371bf66d9067af1fc1cde8d10e1bff528bd3b5d5e22452265c6c4938d2defe05a9d397002b6b46a33019e17fdc2c35f38172306396f7330e2a2cd99a6cb3b313df36e6de32da56d9fccc95f11c1a29f919e4f334bab5b4db1a3381a728b2f4af3a1fb6a4750f9a4af62923f563d35235a5bf7b062ab9eaad63bbc9035e43aba744d06704d6afa91dfe2c6642f65dc66cf242fa7ed460cd41261ce9533cfc32a05dfa1b76d287568724f8e67a285451f501c70465f4d5d411f8dd440ad402dbb0160ad448c2801539a7573c0427986842e3376e854cae025bc571b131e3434533ec0ea13c694df0dd5d2538b39025d9c0038273da8739b557fbd45be8921461f1a6454a0432054353cea245de89de362718d3de82237211fda9c4d689d85051f9615da812c7fe5945b54b720662285c05c9727856277d300c1b26cf7a94d90ec72c2d9a3e6c664a7274feebedbbaf9414fc67c480ce36a367cdaa70b906dc9e90032f60418ff002c29d5d2478266ab0512d79a3c0888e493ed5d0f69e7cc808b38a323f9dab8a5b9e993a22cdf9b63f7c6c30a0f0712fd676341f41be5b12dfeeadf944717dd6ca65089a66c22d5dd12fa7fc62aed24e5fb718d0f5119abfcded5395b18ada993716a5bddb9d6bb74674f2a5233e4ba8f1756a25666cb7d0e25b997e40152eb1be7305418a3f5056679f46c6f4cac8854392a21cd7c86a3f4d8e425d067a7fe3c7d2c4492f3d157951d77a64fcb1754de221ee670c2ab325ea68f4b0accaae86e83c1eca5b050c2f276686e93f1d86c42ff430daf9b93534b942708120dcaed39500936dad19eace2c0c4b705560697f1ea2f3e0ffe2a8c8d8e075f95b0dec98187b0fc46f3831346a973a577f3ba53e7d3869397f09aadd1478376888fecb85d4ba2afb84c1d0eecc1d3539fd270563316826a19972eba186b2b45da5f7ced9c0ba19941efb14c1cd8104344e7c92571e00378f23961d5f09885a85c175a1d060a589f7d973ff280f7ad2a56643c2a22a4ddeb573afc4aaaa9f990155f79ca4284dce7af7c540beffd8f408f23dde3a7777a1caa8da78eac099e84bd8c4199392b861948c0042dc840ed7d114c90a69cd87278635903e2ede3ab67e21d231b33bc105be1c657eda816db7ecc2b73c2f1305df15739f8aa5983b12532e6c9c59a2cf1f7631e4cb563ba2f05d7f358b7572629beb19a851c9dd9087945de1ebae98817e49d8eec05592e049a952b41327b748afa2ab37e5304661c9298bb4d83c2758a042fcf4595b03841b3c55f9feded60b10512643b8701941e9c94724358ce31344f93e4c9441e2f4548195bcfb2290c625cedc0b4544a4d54e3373dcc3f5439ed16c73e866a4b76e375607374d26b6224adf32cb90e9a3027ec6b4be2716b964632af0e721ad3e960bffb9bfe8d292b2dec0f125a3aa22ac92c63b92583c3c2ccda22b6d202ac6040a2354f3206fe5c9ed19b9d66fd81722b8c14ab56f844730f83ab7654e6a179e3863e3b5ca9cafb52f820767a1d1800939c384e6097760af3a3ef47eae1cdfb94ab4ba6c6ce974c52d0ec7d190cfa7d644b98cf623ecf1064b7de7805c45b89c98c4d937f1289ef49742f3f03bf8203fb34ede5c19ae7692fd70459c485336a4c205a983a396d02daceda3ddbfab7f2f398c1736eb47fe16db26c2127448b1eda73569db58f5a30ab35f220b678507334af3539a89a0a97481af1374df2a131c9076af9ac9c698fecae6b491ff74dcda994ca77e540503cb37f12c6e583c7704364c8cd3c8e163d4a8a219f0edd155c829513ab570eaca3538ff46a2815dbac4b7c67036462472a830654d9e1d59cdeeda6cfcec4561368a0a6cf297e1bb8f0815e0b2f80dcace366ade99349957d632e994e0be89523a8ac1407f9022dc0f39188402daab0fb6e9959519226a5d6ab6e5e8152f2cd48dbd3960fe86d19c1b4476450a5944cd958b3f5d3d86f9cbdc26393a7bb27d5e87348efbea5f940adaf5a000c54622f3f12c48eb442419fe4d4a3c42b4be06be22fd0a52804aa229117fa0815dd6ef5e5ee512dfb9424a5b3e620ec45d9728c3ab54042f47d1b0adfb162a5ea7eee23dcd5adc01d2d761ba7dd3d7b18d6bc02f1bec395a4f7acd2cff71d3a7517f8edacb99f0ada2f713fc1fd15829ed77b56ca65824a352be4a85c43ca2538c739c20a171b352bb4a5898bf59a977f8b8b8bd5fc22a4fabd9f07d0b741d0311b9363c681978b86cf7d8bbc80eeca53b30c11f2b7eca4f34c183e5a2db38109f60998f594eb14d271f41342e9de6b0176da593264978d5f8fa643fdfc37d579bd1ba86fdf13748ab774a2bba5efbb5e7ff1de909c47715ee3e3a570c38263468e050bde0fed7f370d7c5b7fc5435879eb2c3726baffbaad6f2991db2b4dc7affad9bfb0703fef595dbeef593dffa73caba4fabf5c14d31f238d382c18db1880bde72274fe2a6043ef2bb0bf32b3de265bba1b5ff309b2f39c7cb58fb78a0778bb8929774e1652f00c18dee9a4b579c7534bcac8282677b270bafeb585b38403b80a0be7ee2d0b6784aa5d5db54046839fb4756ae57b75647164bd6049c3f9ce320465cf1d4961c5e0d22e789af31966455226f4f25a0766c0860f3360d3c767357c552733a0cb49d27fbf19b0da299a01373003f2db96745acd829f3303d20950473a326808e97170f7ac06aab97ccf64a75be541a1476898c781788e42d55ebe67b32a343d238be1c1b6444a3a8cdab993d3421d828b8bbfe4e2f75503efca16b60923e0cf6d528a8caee4143fc9bdc0d80e86ec445e9c002b87c80dc125a0bc29f409095ac4f8db47a81664dd48b918487569694e19a48d9a55cbc2a9f6f323869dfa63861abbc7a29c5e62a820a22e764346b1b6d9125b46d730d057336e7c40f252ebb2e88d54b7e5c55a035f1d8e17d6a131c101cc58d731d368a36272bba8b9bf87f21e6be20c175a38941c2bf9580762168e9f34c90d9101ec521578bd29cbc314cd075fea04f4694b701a3b97b61643b704865823150bd0bcff9f0bf9c7e85ac86f7954be8d06cfefdd7d2da857bc604aedf875751796d06faa8f496467ce37aad2cabdae3912551c2329031dd80ebbe89b60caf04a480672033c0eae85902d00c4b7b65d4d1f69d7afdf9293834e0aee36b929eb9e441769dd86f3a132c3524bc1a70ee9de9d84a5e084a4e0e6807b2cf524931d5398d9bbb3ac5f4cf25247fea1e5b1ffa68c386719715abb921129483cbb8a8a1e8d58ed3801cc74b6133736ce7ae0f79fee9ed52781535895c9c96b0336e04a254cb624715caa4b7f07acd19fdabdbcde869fa7dbec14af9a40b616071e1c41ab594bd36ad8dbe3f779d2cb8bf5e00c6f7eb740f34780bb44e16a3141d55afab9317ff6eac09d6da61debb3b7549035f8c44dea7d7b8001ef693f441868f1568f6f85a4860eec6c6d0d24a35d172fb74ab4c8bdbccb2d5777e7cd2f88e3eed5e8c00af6025fce0a80201eb48ff49ab5e2cd4ddd222cffaa7fa6f3294bbafb294177079d9bcd3e48b3e3548b679854d19d2f878c0c9a7a6cd18fe732e8fd3ba6796492ae05d6f8c802c6fdf10506fa0cf121e6c94e3ef01b8b25f5f93f5d7f7968be9cb8fe91dd6c136cc76946c0801e9b1322a851ffb365450181c09eb148d26dc3c87e1ce4502307dba4421723125803e3aaf2ad2464f667698de77e64f9b43e5f1328a3fa1af8661aca8339c43794a9cedffa8f6fdf1d6e7d88af45daeb63ed7a3635523a83ba05958c5d03a8f2c3191d3501384acf702c620c0ff96ed880491c0e61a10d3beb8f3d41c52bb56b857723a1f8233254ff75350b8f9a77a2242013bec53d4d352debaa5e2bfee0afa6b30e7f1e139b03cd4688c9724707ff439a0951208c30b238c177559694f6140e8c34b7174f2f6956675d1530ca324f37607686fad18c97504c6696f52f679c1a0e45ebacb7df6285e869e272833fae1ad0f960ce8a85f58c834ef5c14811d56c7dabe272925f8eacd615143e936635fa7d0fedb8f42617b08d83bf6744327b1fccb8c28b710d059d392949f03452051ebd2bef39fd7f29991410332f1ce17a5e09b6169bd4d1212732311d0df3fca1b5f0ee5e2d3c95c61dde3deed584701bb182e13cfe9ff03f002198e46e1133d4ee0c1b481845d9ed5fa51125362de51a9a2865d07cb05fbba74fb9b7d32fb7cb575f173f4828a652338e033d7dc8cb149e3fc82563113d7fe083235221b3ad1320735f2fd621a05288fa8d049bf8a2326c04e4f767179a65df6ae17bd6766216a661ade35b79014d96411f026a8953f32ba4ca6782f3d5a45cb8cc74e70ed5e1d17a835de1a5913126a19c0dde68e11cd90ae61e7b6fb4589db88fdde9ad3ef668717eb345e334b89bfbbe52e5379bc4ab489423a536880ccece0339ac628fcf8025a2b6a6c2ec3a7208025cdd08e491406576a913b833c7b90970efc563ae7d00084b6655ae42c3f938cf46b2b7b25b735a1a94ffdae1afdb3125c8ef41be2d7c31d7913b0df4be7c2c9d88392c3c8b74dd6c90c7aaedbfdead7cdf9580c4aa95aef22085a2f65a0f3ccbd2df2bdb395c3a205aae89cc3578487edfed3b7ec8699b9794c6fb61e555cec66ebbe9b85ed7eab87a1e90f1bba36ae7f70dcdff6084ffc108ff8311fe0723fc0f46f83f82119e134678fa0f46f81f8cf06fc2083feac5fffcf76084fd8b6e190b7c2f18e095ebff8301febf86010e6163fbcfe27ac3b770bd8221651832365b03e9fc7e0fc037f96d00dff47f0dc0774b00dff41f80ef3f00dfff5d00df401dce9e4ddc7f234a377c0fa51bfd97a074ddff5b28ddc93f28ddff284a774b28ddf40d94eeb180d2ddfd9b51baade81f94eedf83d25dff4d28ddf12fa0746bffa074ff41e9fe83d2fd07a5fb0f4af72ef807a5fb0f4af7ff1f21ff1f94ee2fa074e7b750babb5f46e96efe0d28ddd9276517d2a7176f163c69c90cc72c97a736708325e344d835cf85415e70f0dfe795692de1a6ce0ff0b11e0b6de2aafb15156445b40199d5673c8a03ce45089d5fb560f919c9ccced4e4b9ccc9c7e152adb2bffea5963bf783ad57e75fafae75f5e035ce48d9dcb42ed7bc16ff4abdb675b9ed95f8d7dc2b5b972b9e71b513a33ed438d5f7bec6e33ed45816d4bf07540d828fb1d5839eec7d174a1cbb89bbddcbc528bdf21a6851f4fc2dbf5e48f6463222d67601a34a7ae224a5923a36110b618b55395687945ab0fd64b9ea1253cc53fe82d96c975639cefd2e24b9a454f7cc27fb7959e257cdc2beee510baaedc0385992ffb0aa9c2db9eeed1c3d8b29de6950658e83ef6e3bf92b4f196f2cdd897e7537e7a45639e403fa3a2d915d569fb3675c749648dbf74d456489a59615142035be316ce88bfb7e5e34097aff4583206f20a7a949d3dc660f42fdaffc7bf4a08f1ddd7edb514d8c70b56067c1c2c1885945dd6cb96a4b2966662816243d53248801f9e340dfa894e5b8cccbda04aa8c97b432a62b77c2adea94cb38506d54224ab12e79b2f9ddd24228c1d39eb022f7c0b844e201f211c88dbc46ff71128978a2d42c89ccc567e08200e0015b2b096c884a362ea43d3a9fe1ef328920a951c1ec95854f3a3735c577d50e155fe655bb8a3836a9be4802b9f45f666d7f06d7ee86061d5121e091427e4ef9a2157cbc2c9b142efa6a9e04924959a95d12159f78b19e489388e678d660edbfe17ad08bb910778b2a1806aab4e04eb6052c5bba6117808c988cdfbc38d5454f2635545338a88e789ab7e04cb2b20c0813c2e59f81101e9a8ecc8ed1c314289de9e89bd54f1d8b4e1785b288015e753e54cbb258e1f23cc52c0af0f9bef2928ae1aca1ebad2a03a6432cdebeda6749f5e0dde01cf97e38b57a3484ba0b03e2918dc333a4aad7f789453513aeb0e54c0724fc209faaf04aa7d5e359d31d5165fabb502d3c70fa2ce1fc16f2555387a7620e681ce30ae03f2d7f60564d4f9eca38c1e963ce656e72f0d8ff1a4f61e628b31f6e83af701214f42973c97fad9e0ed450a1749b9e1c32679e417b27694f9e8f436103c03d2ebb6085ad5adc25fe884eb0c579c08043bd6f277f157b9106811a82bda3c5a9da679b6e0defa8ac3c0ce789ab5058ad223c7bc6fb1dfe16a55c3c3c0dc8ff0dfa42e18ccafc468f78345415f455adb2d655b37e3f137303bb821380cda21b96792a65ae7bc7c4db4a227a7d022860895a05d42ae0dd1da945838186e96460c3eef5a65a83799512ce375bf3ee56be5f01e3e3b374e9b939edbfd4bc2b496009b51ab58dea0c399cbf1836664481cab69b9f372b8683572d93890367ed19c709a0a7d73dce7dff3b39492e86e2f8b96ec324b03a0feeaabe3fb085133785cf137692982acb85aa2ea5df1c56e4e3efacfb49bd20a592efe6817be155762fb878dd95e30c723363b932b0065eaa0cf4a44723ff6edf519d4fbeb04153772faf00441a88325c93148510c4aecf1db245455486bf9f9780bc12c9a6a868bea0a107f89079854b372d2a305d943b7912fd439939559c76f3b36bbdb5d4f794ddf273afb2e45a780e3e13d20bc16d9f569a5f054d6f038e36df31d11f1cf24b3a1e6a8cde7af845bd7d2b054776f77a488f892fa3a8dbad3525472a9a79a7159c01bbfeddc627b404489376e04277f2e733c672d545a8fcae7aeb56a0deb8e56b1d435ebca9f1eaef5696fd70bfa2c5aed958e4695b0b7acf2a8b99cc566937870b1c78011edf1a68a4a22f979f1a779a95c10f1608799849b9ebba9dbb919a75d5cae1e665d0f466e259f5b47487878957a09c66a94390a1fdc593cea1933fe91e3a4572d39ab053098befaa0091adbfba7cb21cdb4eb740cafbb231c8f851e2e499dfef7767de9f184b29cc0d3b35eaaf9b009fb341cd28d4164da9a0e0eb92adabf77541b5474a0da52252ba636d5b3cc7e41ff20f7ea98582a3ad4e2ed4cf67647688dfdd292f789f3158cd489a6b7b35e89d48ba57d7e41119f2d0dfff746302b5c442844e1f2cd49e1ea482e440ac38d0a565c9d66006fa79d9a7e47cfa9c8f1866f7e9b3bd8e7bdf4d3bf6ed1d69d913c6f9a38a02d37e030d330034b60c4c3bc58ce072f1297a27104b77d829b786af4aaea71b2de706556fbb7b7b5a9f4b2090ea52cbb2fec1af2d8bdd343c060764924a7ce671baf125fcabd270c356e0404d5167b5e10cac52d64d473c4c04930cefd7b56e91bc9e72ea7a946149e7f1992531bd324335587897bb2fad0cf2736f7abe0abfd9a4a86183239eab8cb215ec1bbb20b0b473620752e953fa9f63c199cf38030b96c49d1cf84ffc420f53b3d4bb0c839a6f7b74a6e4a17f52cdf18c901d6ea1d45dd517df0837a1872209afa2379e79931deef90832527a69c67303106c0bb6382e0fd4eadb0c0dfd0eec44f45a511e5124e3a1a7ee42ff0b87b7b005b64c22d5e0d3dd48f547d9367c7b098f5b6cb90d43a2960db22ef8336fdd64898e602ab12765972315ce3c08faec63bfcf035ce23d874eb252b367957e9d7805d79728bc733a8eb6dd68bef10dc9c75e690b1d75afe760b8f5621833b504425c611bd95027ddf56e8688aec4334d485cbe75839ead6d22b89b862a1459a22a3edc48a995cf70f26f34694fdf341f6b7684fc96d5016aed444a6dfcc46efaa2e9a68d7adb32e87dbb6b795fb8b24e25288c4d375992ca71e3063ddb6e75cda023b57a61dc34b43846b4017265c6b7d8b0a1a79905c5d6f7b75a97d75d020d35906154469f9602cbf7c345eeaa9dc22075138286dcbac1ea214aeff29463f4a91b6022a9f0e7b9fbfef0f3e6f7b79a9761e05ea717370e4bded2726e9ba5de2d7bb4cd37cb5ee18b975236def83620fbc9995dc586c041215f2bcf558c3b73281b859f08727ec7cce549641dad64afbc330b9b658feb3476f23db8317b3054fed63bfadc45a8d4e362e6bdbdc547ecb56e707d5bcd80d6ac5b7120b78bea5a1bdef991eeb1a7b68d6e71a2be72d4469349738dbabf72829b89fee346b3c03433bdd52a7d11d345124f590d5dc31ab744e1bb352cbf9b4d203010a54ac31bf7f4e985b2aacc597be406a8c366b04638e5a6c4e86fc838b8ba2ff5ef868c2a54b1978007693e3ea725093075893fdfb0c7f7cbdda3fa0b8575a052887e30d9c36238dbb0e2b1860e595a465a7b7e4e56d1dbeb55c5f00f240b3fefbcd3b67b77af1ee0fd7aeb5ded35cbd8875f795703ef3ad371fa847a26ad29471ea434753bd2d8f6dd70bae5a539ac20cd6b4e72eccc2e89ef357fc1b7e396732ab0d9f24ce5ffcf813181ae7b6a66072cdb119da5eae06ee3f97876c1416eb157ae117fd18abd7ff68e2c862dbd2ccd2fd73c2dacd3e5cac15c8e6a5e0bc64cb66938ec91dc8d5940aff9e4984c379029361d030009d51157994bacb73e718d2d97287270b3b2e950b0c912267786e696d7cc73165a946ff82640fb5e7d2f1a00228238f3a3b31d8b99297cb5bb0affde1c8d9801d9a4bd1691cf37af23480b1d1d4befa2f911f689336007a8bc0c6a62f143199646316e64214ecf1da6b36654f8aafa8907b6d327aedfeca8756af9c062cf97e9571bafe184778eefabb6cf330e48ecf4e80b8d046ae9727a836309f9636a9087076aa062177916e840a91db8f415c178e1262955a8ac5d872003b876a060567d4db3df29cda098c969782f09bc22554bf62e5749f6bedf7378d9c732d07b77ad8e3f035ae988c19d4be40a6638cabaca4bc4a2d806751fb715fd8e177d787e857d4e59d890d2990302db90985fcd55f27f16ae5a06157e4c5183900419ec40feef77d5f4dfd85d7ae873df0f945bb30d3becb34414409a881d67a8e0d096911b70cdbcdcc1feec70b14dfdcf99b49faeaa63dca87e0d756109a5d9fe3d42701d7744327699f5ed1af5f12d3c41a3e217fec9c1f695167408a2db659e0dc46ca88dd08f1eec61c6da596bc8c0c1570e72603eb00c69ec26de9320f978a0fd400f4c7cfb81f34b5e5ef4884c4c8e4ce6500d54563361c332c4260ff1e8b1b33e24c4d2806a34c3f4cf820ce29af4557db2951131a67febc53dacf9f7d182d3e5440563ce9eab341dfa8259b7ee8af1dc6a7ef62c17ddd19ac20a73ac3a19e024386edf2f24eee9493833f4f1b9631c9d817261babbb36a143adce9e10fcb8dbd1007c60e431e18f47ea512c9c4053ca4018f5b1cdcf20a42563c5ade3f0609dde7a25af6ca18e13fac086c4ac701bc248b21a582c3f245e078952f7ce1e40b439db7806f82e362fb8d1e9c7ccda30e906f21f9a3900783f54e97673dc5fb3441475793185e4ce22bd465a6c3c5733e87fc4153463a02b0827379fbcc51113c98f8ab3d9f358e0a6f7fa63fd514c09e7cfe6b95c89a8fa49b1feaedcf1ca1a9c5d5167b2b560859df3f58e41f29f5321783e5409dfd3fef7ce5f8e1b4d4d58c6811f42ac74e2126fdfdf2988e688dc6647c40dc6493a543a797834467223a5b408a18d7da1cb83bb7e66fcbf397e2acdc4a4959547296eb1c7b26c79d29f02a0aba0161038d31a41c4dc6bf7dc02c99cf85eba9843539d4917ba1cede1358f660f9a92ef3343e08b0e5f0ff0cb39040c05db06212a73edcee949ea0d8a8bee40f73e9ef5f7a7c2b8f025982374a7646670f00e297da069e965005db42214fa51c2a3619a8cd47defbd3fac0ea21ae23ca3fa6337f5fa8dc59fe41adef391e9ef1c3765dcfe1d65be2ee82ef5ed60c5de176c2b7bfd97777de0677d737efa6b8bbe5bbd542d789bfc7edddcd878fb87be0bbaff6dd8377c2dd8cef6e0a5d373d07b7cfb73feabdeae7d16fc888b0943451f0981e925e7e481c1340ddf0f794b089ec8cdf4ed2e368a01195cf2da47d3b2e0696bf683d67d3de6a3ec8a1ce40c58d738a1f9badb7a302072e46572a788e06d4ea25bf40251463041f6c7c55f5d53ef638dbd1827971abc6e66236e41ef42638a3731e4625b14e4727f1de416bd712ef3a759375503b10bc2bf477e5ab658bb374b55bacdbb620bf247596f4608e9d78f4a60992f425b5c1057a3a92c86bf81a56e740622b945aa1c8b5544c8f919f48ca1a4f587369d559cb5f9f21a87f6184052c97b3af3f5f8bdd459c971ec6bdd56501a8bd918057bdc06cab9fced962dc646cfe5ef49465176088d283feccca138c91958ebdfa7b6bd247455cfdba01a8d19c86d5e0a822b167073701df0300be4d75584679d37ff76ce4749a8cf85e677eee3b0d7288354390c851bacaf894a9b4796598763ad6ff8fedc07c8dc9b76981c843f5aa48cd560d0a252a3dfa6b4e5ab598f4ef9e54f3a1e3e090ab8b4583aa67cf59aa658443fb73c123e6ab96cb67d5ae098c78b3abf5c790cacc4f570055af2e9fcdbc02deb95a63d13569740bd74f953e03dd9a2ed372d2e8dcb0606af6be21dc1ced9c45bd88a6ae56fa241624b8ae193aa1826eb47bc1f621a9ab4eee8e883fa62c1351b73f86b8482bc8d303cd5dde4333102345fad39dd20672badbc5375c00e00e37c7e3ab5d6c1c4cb43c6e37971f7673dcfb727d6f209b38c0713f451099b48aa819c075f4127fecc4dd37da46ca7f40db799754922abddc57d9c5c44624c95f5e3dccd91ad58425d65c8fbb1c01a35fdbac74afe6e015964719ceabb5463605917f929d36750ec8b1b267950021c773fa78a44548f09dab461736c5fc45df2e88812cee0cd5937e0af90f5a5b3676b128bd5d041454b13e873f18aaf5cb71bb3f4bf19480a326f3f27e2fe9971b9673ddc9d193cdea0a7def7fb059af36e59b9def3d35bce8fcf562ef4c6a7ce4cf2756f9e44abd5f5ca4cac56a2f91fc2f993061eba7072ae077ad177ccef172d92fab0279bb5f85f9863dacc25c84615a5941a8616162a87cc983d9b1649921c71049e364c9def715c73696d8da57fe4e7c0dbf18d359c113ceaac7e9b55874e77c9dacf6f146f9967f53b2c0fc3d5d7c521a5be2c50449e3da59b710545185d37ebb44669425bb3e101286ab0d72d6fbaa562fa6fee093d6571c5e758fc37f202a56a05633cfc25d8d385897a582d22920dfb06a568bfb3a6540213e2ffba9cfdb003575b5f7c1279337068e75d443dd3afd5f1eeabe30d4b30c7572495d3cd6b0602c99329d563cf93c03cfc09d23e53d56bbb8b8c7ea35cd3bb033db4b1ca3e9ed575a81804ac58d0e05479721834c5c0eba5a54e06ea56c1183cbf69fa47d8cf6c93bed1fadf6f6889f588a1e5c0cfbadd3ff8a77beb0b5103ca3f2b6e4f1c4a1eab70e6fb243ac61dfbe28f95f8559e43c3367b3af4a6de8d924bd26bcf664ccce26bca56b6bcf9a4a5fedf611bdb2b2f10b4370aa7de26fb309d3e1dd8bac60adfbb60c75f34b6e1d71c2f4ccded303dec0ecf34b5f7a6f7fe9cb8d2f8df1a58737beb45a458289c59b9ffa7af9a564ac8382b276070506d5801d550472a2980530f531fececaac612cf19bb956406f2aef509f1e7f9bbb883a3ea540b1de600d26275f13a2331b071b374987e66cfa24db180a5fbc344e001c071d2bf9d5015fa965e2a1090f9e9e792ecbab4ee16e19b61736f450809ddab837072306cc8abdba9877220a0e7f7660cdddca6cbb5ce8f4fc913650faf1eaeeabf247e7f9ed0978a2fc07bd9bf746caffd4f0f294a27524636936999e164db608ce1f18117a62ae9735c25ca16b393ddac01360f2d985bbd8933039d20b195a0be9b89cb0b382d157f1bb86df751741f7ae5778ae21d79bc5eb2d17dee676f17ac91db052512e5e9f34707dda28eed2538d77ef6271731a1d2c5d264bf7a8823e6d9cf7f68d1873168dc1cd83bdc4e249d9b38ef5bd49f031ca137ae4f6471f50a967881dfabd3befc79be5892e191e64aeeb0509d8331050a0411e96c32f85e732690153ef1a0437196cf5ff594adabdbb6d8836f688f5dc358a4dcfc0a7573f3363ddfa85db23baba85e9b8b14790c74527971b712ca70a5b536e6f497207ffc216d824c46147d96d32f9d51d354fd848b6f60b548abbadf9c0c4cb920ded88a8c496477cade6b25fae550140a5d22536b677982873528a5816166899af16693fdfc2ce9ae1031364d764f10a41e3b4eb60d27f14a57a9a0c6ec8ea86ee6321aa0bba5fe2bc002db599c699da52d8b299c801c613baa701c1420fa378e271d21aaf70a8d0e9c6fcd1cbd3cb1c6ef3c6123675d3e6c7d5f900296fc8b2514250f124826d676f34af757243393273b0c21cb81773b0a9f7af3fcdbf3a192b13fe75c4df6cd2a535afe2376fa4101fac87385ddefcc8d64eac73d647a6c9805fac5ff3886e49cae95a1f7878f7038ff8c069f33673c381dcf42de6067fce969334a6feb5f4703d13bc82cc11987fbd293e35f0adb5c28226fc23f30d87536ad20140481f5db38e4803be9a73369d3e2c3164fcf42dddc9578d06ef8c0f7791faa8473786ae9cdcd230cc74e9938716f272ba605eda2057da76cf0b9deebb57acbf3839cf6cbb7f8ff503a797edbbf966a803cd7c8375fd0a278c1b401b6ebab77897b3a203db1f356f93e5e694bbe03f1d3296573719efb2ca89a33bab27bdfb64bbad061291704318df9f6f52c404c0d2b65084ee36e394518de68043a9088d507ed47c63fe055fdf4cbddc06bcda7b6c2a697fe403bbc60c395d0de8849921ac6af7a9707b39e633fcc42a8e3b2cdc3d967817b4561c7b77283ebc5f816cef0b974f6cd89894fa3ca2caf0e688fec4dd9b039a9c5923597ffc99371e5783fca8488004fa78ddaf523192ab4f2a7cd46c8b633bad0632a54a55ee6ff52039437e30a4e59898d6110843f7d3bffa9ee527ea70e5c2f08e0c56c5f785f8bede79c592c82a0b6e4ebecba6fdda8d49f2d5d101358c0a77379fe8d118b176878fb7eece7137bb79770f03e5f26258745ba9529957c7a9805acbb749a7e9d1cea98c6edead211f8d7bf3e3561564b0c93edd7cfa0f9e98db37339eb6f2ed3d5623bea8d4aa74e3eb7c55aff3b42e6eacb7af4a159eb8e4fee6164cd7086e3816fbe61c15be8acb086b5d7fbaf9fc79c94ac464125dddbfb732f527532bdbeb7c2efe04addc552c704117406c82237560a4d5ef29b347905d19938e15d4e176003dd73faa5e9e11ee2f24123851263e09ff0cc82e3831ff2fef30b992ed7ac62177f10ac921f9b07c568088ad277cce304cb51c585dad0fcccb0914bd173d7ee7593941328459dd9eee3c2508636fd656dda7e6c2cf0ff699c300316aab3985711dd401eca6149e5646ef099ed66be21ea3dc1c53951f6315e8a518f38d406d3f225c802cac91c4ab072452decb379f128689702afccde7dc65d896847c945720b3469f34833c8a33de01983224bf224c3cfac7ea4fe665470a74ae06375e4a895f135fec1d813ab5fc3c10a5d2f2f3f0b5f5a490e6249d53cd8ee9cc834505a2db626650e84ad5910bc7c55f64a03c4d59b35e496988366c2aa479e0c7017ff18c3e7143936326cb9f7864bb680312611b6aef5bf09ef8c7f09ee4bf0fde838facd600690066cb452c85164c9f35717d55adcf6c0c419183af859794113c88e798cc3eb3ccb8b13cd27e3e7a20dc3405b4f3a7437e6ba042e57cc98b4cfddf49cf870f2e35ff1f7befd69d36d2ad0bff203c0642200e97a542082cdcc471dc8efbce713b2081040810885fff8d9af32955096327bdded57badb1bf7d1307a954e79a358fcf844fcd22ba3aa6f8f33115b53131848d19980dd4835db3ec43701ad4336a499e070e66e1a1ef7c75f0a5707a08395cf0279bea3527467aa1da434dc38438e8b190e6190d55d9645a70517516084e3e4e6edec484c820adf7d28ae143feada546f707b214543966baef746a3a5a8f25dca73b0be3df40efc7385cc9159708edf2c2c4a03fbc8c1d5c0c822b0e325d8a610d345abf41f6e74c5e0332f3939e772a52e88c8baa7503e31ce31d7f807460fd7e1df48f5d3fd4d349e58bcd1fe811cfe1a2d53b7e8e5e1c7c086cb6424dc1a7dfff5f028c7657e1a29d163612dc846f9f053aafb7ba05818263bbc2eeae1d86e0ddf8e04fbbc6e14bfaf45597c7e7e9f16d0116b1e9479f8e8f1c22be59e4e990033a71b01dfe231a651f1aecde0ec48f7f84170aefa812b6640f5e1b26085618dbf9fec176cdb3d3549135c90aa1ee3a1698d5a9c5acdd8ee7eaf495c23f863c18f7ab7e48d1d434ad49a0bfef396c0740a9f657835bd6a557df388794c892c9cd446d46d5e57532319d6e97131c59e2e4a10c6e4d2aef07c5bf4cac25014cc6e98d7509e8011b7631923e10da3b59484eb1dc879cfaa0c8fe939ef2ec0b5fa1e9509dceb254756dc135ade161cb984a59155418569e7f0c9864a30334a09b6de26fe3c0daa0053887b84a0fa3eef514f16d2b284d9694494222ff6001dca2c3e996d8540fa14a6dc44ab829234d3a2c58e5009cdc3aec10be01ec7702a62f4e38e466594cccb0fe22bb16fb8e6ed95876cc7510556418d906108757c584319e0aed8baaee4d7257140f7bce8f060f8e6809d4295a9096e16afe6e9f594e00645fb7ac422dc456b2783ac6c5170ab992e6d37176bebd79147f22a7011f057808f5466658738f0305d5ae7b12338eecde26d4e7b50f0c6e8e1978e8f48ccabce7b32264560e6b650e235b11b2f0f33659ca1e1ab858abba80d1d6391288dccadfb4e9f27eec7f5e30f3f70d6e78de19bd6f592efcc692e49d87ce6972e5fdca8f4bd2fd3c228c52bfeef66e2b9dc97374654c0f2e74f7fa71464e9eade13ca6a3f4b08531eb3faaf151acfd33e38b81626ab6bfec45e6521646f8dca74cfd0f7774901980293191ecfa4ba8fe18dac9429fd997b78614911ff348204ed89df3996c6bc08b39db2b6e42d1f6a1ab14c23b598ac2fd89d7db8d7fb1de8947f7c9935bd6e7803108377edce5cd86185bd2cb4a71f088b83c86572a97991fef0383d972eec359eab5629f1a07ce5b03cbe841637b311d40542f4cbb0d75b91c80f24a15e6b9ff7b156e732620f4aad842fe9eabeb2d3e90f4f4d2d8be3b37f76237deb3b8746cdf1aec81c4b9b5c007e00754795f06806f3cfd51f3dbce812ddb599a088adff114ef3ebdf3144f0791914f1670656aad7d230c88f23dbee761c3d2f1605adda507e018f7e9d1cb604a8cd5084983962c2078af546fe7f526143b4a91977d1173f5c57c26720a385fccc4d34da87e97e0655a73ace49c7dbd4efd08813c7794b5bf8a8e13623360656e9761375a0822fa72138ae61fa2f8d4937d221a1b1bc87c0c8ff6f94c7435dee23377200e8caa3e855f0cf17d3d2fb85a90aeef0dbfeb87bfbe270b00dac10cdbe214537de82256678d8d4bc9b28029378483e7370e24b7ae816e0bf76cc26c016b09dbe03ed2c4474cc4b87a5ef1e049071c04b8d1eae58b988833e9034edf116327711deb3d1988e54fb5c4a71fbc5bfbc75a5cc3ef78b6efd4314dbb7519e53ff0695f9de4878eece1bb84fda1587e8577fa92f6a07b1b9c0019af6ff7f5edcd93c87e7e2139d0fd2e5c02356a7f170b22a0ee77a0d24055f2deeb8c89f81a6c3b524ef1593e0ce0684af4a618c057640705de4408c7778aca2b5ee3cb10c47d00d7fcee9ec7d4c35f1ae631618f602f0b498fe9205279dfe05006e704dd2de323171c04b7fb06dfe426b301274fab68d538b6dae630088cfb5c7a825f74975d678fd044f78fe39b4711918ecc1ed3a1c58ada4dccc6b87240d1c3f036ddfec21558d7b26eb187652f612eba9100bf238b6fab895d57be93c9f623cb1b19362132e96c605ba8f5f241dd26e9d050031b1b959476b275b163343f48d0b65bdf5c69716f6434029d257f157f631eaf4db1c933758ebfb05704f46cadc1853f5e8fddfd84f684d5fa3f76ac79a15b0542d4e0c2560b6c20a833cfcc0f9c7087c7b81cd48da5a889122ae83e44b47cbe1b720a1fb8cd2cd27ac78e09532b4d71d9e1953c68bf1363ea611d0e67db1b968ecff6bb4138cabfeb8dfcebe733eb39c22e03d13579cd47f0ced85f4ca2a2b464913869a8dcea94f57dd55cdbe71b7390b3b4b0db59ea4a209e510d833fb5b65d8a915ef84038aa0f8b3fae884e25c49d33fe96107b10669175817bdb6508ca7317c236701c7e326208f8ec3d9434bbe32d87ae4da00e33784ca4463e4035011929ebdc1a5d9b0b2c9f18e98b8a95052d795c41bd7b79c073fee8b8b7a23b5778b84c981b58a146fd9bfec91268f3a0999a9b6f26fa9a1f9affb2e921a11a90c33e4daa1ce62ef1182d5f6cc02979f1ad39700df84906663cbc754132ed59283035cb9ea5795ce156dcf574aecd8990f47eba43206f09ec55fc551bad8a34d34c7f838940ae235abd5b6ddf31a606ed86c2ed3f726fdba8f568d54e0ed82bfe68cd6e74f6f9f7fa50275d1631d7df7e608a845cc4bc1c5cdb1a8b3fcc9cccffb01ef1816e60ddab814d849c7213185d338dccb27457d614ff51dd5a5dffae3a623d7f7f625d48133a884666908504e4ea8b570e0e3122f315c969b7af8c86b723349257b663c888b35494dc9569df356ec784b6018b45c9c7b3ec8e3957c413338bfecdb312d028bde635d2d1cb2363f4eb5324e20920aa6d8a605d935626836e26c5dd92e1affa6d118b1e6010bb642433c4a233d017405023170b20aacccf0c67913257d42c0d8f5195cd9e18f891f70f4e477e751dc9111341a2fc47afde0e4ba23d641ae5c478f20c8c95ceb5d6beedebd27a81bb5d0ba462505e6c8c6e85891069f81003decea9741a0634455b434a3e1f2f1c582107fe1285560d3e154b0c7995b050d11858c82b9934f610f8fa65f8ee2680e4b3f0c51c75eeb38fa6ad5b8bf0f1ae9f3d7ab71f1905c201ba20bcebc0b6e181ce1678ad8a852260823547385f6f00834fd3e6d67b50d815cc97e94d10e0b80517219efcff5e7db1e907db60701395b6c7d7bf38ba604a1fea213690b3636c8d61a068707f2ce6d21ce2e2fcd1217e1281600d5d8eedb62b5953bb01f1a4aea40d62e0c39795fb210fb8f2bb10d0e752c887e360f451c9bfff09b348fbba8b3496cc5fcce0b178794603e8a543cd5a42aa8f215af0a24bb18626b53b90d64e0944db5112ed901cc1ccf44ab160b12186be3d95889d7fcbae73c43a908af1dd72708347cd7f6fc0a2e177c299517743f6d98f2735119799562962f2b590a2957014991a83a278fb16dbb9bbc8123398231bf0dc17ed37b184866d0361f63a04c5d75a1946a098ff14ac0d6ddfaa3dd0d7e9bc56a5a547db96ace85ad4758a6e8f1d4562a628508b657ece3ab86b6aa599907b9f21f73f54b6a5c4788ba7dd53edf5271a4cfa52cc4aaf5e61e7a4e42b791ea6dbf1678a3a372797bfa59ffb97d5de89a0edef40924fa9e52f745c8d3495601d3fa29f82b77d09d1752965bef07f6a24f4e0020fcae947da3a278407edeb22b57c3dd23672e7b647e6e1baad61fa90dc1fdc426b643973e4b52f90ab73b3a9107b84d8e247be316a7cb1c38fbd5df2801f855d723ee743b7c0df9b501c7d119b5f52e89c8a37e5503c88fe3e325ac4f6d9d222ba670bc254bd893e81309d136f9e854163693ba0e81c365cf15de6bbd0399d7b00693f85701d7aa82e09006017213b35d6e3c716c8a58bc77133229b3cc0e274b597a0954b49497803b192e28c9501e07125b5821f616a937e2352bd676c269888b2900e7fce8aaf239f83d3132bd5d65a53ceb5efd8356cbbf68d008d45b8abb45425406a112c550e269cec6c4b7d59fa314b2b4f310c280c240781f65988d42f5cdca41da3cb3ff8ee0051bfb12fb4ee4a27728b1145b1ff49e89a61031a9d85cbdec48a1e7a94918260e2babe38c017bf7764cfae987307a5aefa70410cee1c58a82dcbbdc965e84e2176cdc80c7cdf24f636821de4e64e4c1674629f3ac0e750fb2df5cfb9616707fee92707881370d36c997c54b28592b11f6bec96d417f2cf859e40fa42ad62cbef6d99bf3ffecd6e347fb385847fa54796b2e3b4f24c9362e1b0d77486c89b75935ddf57a9bac1e46c10d75ab957ad247970d1a157c214c6a1edced497f787f5e8e2cbf6952f5f2ebe541d3d9e541f324aa1b81e8a2285afc631651047f580d46d298de44e141727a511988c00796ac9b03bec64bda371242c8550fad3101ec0b8de51a21ceddf25e9a87a3a99d896141aaedc65b7d576669f9c044344918e5f2f32113209b30dcf3ecd7deaa79bcae6fe90f93b4466e9611d065cd828e0cec87a7371ecfbd93f1da539b65044ab711262b5c6ba7e37e4cbf104429ee5015dee0c5527671b9d35e3c34f1643fd099fc45074b510759a105af13e63aaa804c9d64875d919096725c9c9ab83fb4f4fd1b26981f2af520b7a7397ea2010e269561528b51487541a1d0b4bfb537340662681dce8f21d4de89db9be84f9afb49f92372a9c9f3ce2a68e7e676524c72571332db9b5a70f6dc0d98fa703cf52c8869a7ad19dc613b70915d1d886c1e9ac43baa43c4f46fa885de10de6538b37e8fe7bbc418ab4b1d9d9d2b777718df7f4754e0a5cfc18983b5e88067e34ed92f305788385f530c68fc47eb8c48f957e1809c7171daa4cb30a6d9b5568dbac42fb7356c125b4f3c1e89255c06c72c58a550066e4b979fd4e5feb3b5d8815dd7e1b29cad1b5337e40f05013e6fc86c3b1d61ed42ff53b1fa19b05effec3574eb98fb4810354d17718d3a70d929f69f251b255778ffbb8ce396c0f609061a759ae232b6229c3d394223302e286866283a75b94cdf17bbd8e18326175868f83d63bb50296b3f07c8f0f766b0e90d669b27f8353995424af912193d67e1f568bf68ad8889b792482953cacad7b7ed166c969431cd4ce6f68973c625bf23939c69da5cb3372f4f32db33a0d48fb7cf53517ec41baeb1af6a6e39740c456c4e5350379daf34abc552fd535b8f3d5eb4ab7ef41fb86ea76b22afc28c4dcdf5055f23ccdb9ae59f59af9a8e501713d67562297671d513a312c951cf8cc20c6fe0ee0df353ee5d15b996d4ff8ac22dc61520b8cc53d1b52e04ac5d878e1be758b5c2a74d6ee375bc332ac7d073667f5cf84812fdbad89daa2f7f16e6815ecbc2fd8736e79b6e70c6b6dd62012e2794df9eae549f67276037772ba2aa2e40cf5fb9e1df1156d244e836307494dd519669f77f33cd2789a8442228e2ebc8a4e5b523a3c7a89493af5ea3643abb22d006f1607d2ad7174f453b7c61caaf33fd0ac148542a9aeb7e753e69ae753c4c5437f51ce6e22114dd76e9df41cf5d088da7d3537a53ec8170467a37d61d837cafb93e11aa0a6ebe1a3ee3a6253df0b012747669ff6898d26578cf069b0b9e40d0786377cb76473daa92eed54399067b4a96a9c8870faa5362e478f9fc6654d829586abd2a39e67068410aa9b8b61efb6d789e401db39bf2065b45e496d83b8d6067958f46eed9322853c0d8fa750075f4a917eb5426abcaea4aba1cc2c9f7e776695b8c5ecc403936663e7e73da97adf93a7065bf53b5d8e031d1c48893ef73b7ba393bdcf13f2133cf9fd8eac388f686e0921d34d978486b75e21ada1756b7b3f22784ada8e855c2715a4bf148d1673ec47bfd8c9fae2bea87a526cfbf64052307231f4b23139527497d88d1b4b21a2d53364ff3c8fcce4051a61500a3b466a05882bd2c995b85093017162a59f0ecc922c0915bd2d55912641e3cfc3a0d854d8f7e1c8d956ee2381581d90108f42abdda1950564fe64826f5acbd08428091316743c8cac1cefc195af2331118785e565ba7079ec8b670e5afeceb16fdf39642c1ef3995ec41c47313f8f017a71e6074bfd608507eb0a29d197fb89581c4c323d00d82f19e7eaff6a67f458ca3fc582073a77273a94068efa8667b680682704530bbe43edded1ce466c9d0cfe7348d689d8b00949e7a65ed4239db7ad905c48d6b0a89e17ace96d3fa2c33a75f594c78174cfeaccf5a5407a6740c3ab7773290743d1aa9e071792427f61490a8bfebf2729ecf0636f3f3ce047613f8c63b0faf1af2485254aace2eae1c117f3d8e2ff9b1d8bff6f742c87c35ec7420f1f7d2a0a00566889b42273cfcaac9bcf29b5e9ddb165c866a46e16b50d5cb831b261c26d30c4ea1e63d01941c80b28fc4e7aa5252542680f83ac823150d727168647f39cf90dadeb9a4faf0a1d8e163a5a1f2a123f92364e3af3784db0809c50174196e01f72c8a5db334b15e01c7f4fd8381408d280a563bd89c886d1869eed8cfe950e5b6ff9575b678e71189ef688bbbb2e9c48811e66a83cdd30a6d60a9527dadba31550f113bc16cfbc42e59491b1d2baf2a50b86c1d2be14b159afdf93456e952c8208959dbfc8adedb369f1f659cec958d9f6e9fbad9fe52c7c0455d159c2e8ae77f1da7c3f5ba5ecf0e6f8ef94aea9ece443abe4993dd034bb0de964e7d74af54adec05dc446fcc5d76aadccb9e4cbfc08d56a9b89e4bcdedea944be4c7477c1edadeb75ed4bc6a4d3a5565cea582fb5415d47567ccde1eecad24dfe4533c703876952d7d1d82ba4ede9cb837562a9633a18371fba039d9048cdbb4cf21a6babd8aa6106574cda08cb07667397b9b5340bce297ff2770c0baa71dd968b29617c0d3e17399a7e2572bc12e2292375d2ac3afed9086793458b5446aff396513f4df62d4a7f2cdb64169bb2ea3abf502f8b87fc647a7c21e591a27ab8ca9067ce6541f9ecf0da1c309d85a3215bc94279ef26bf21ef3d0af9d0da22e78056de706aebc5f446aaaef439e7d56b771758f575b797b3341cb46eaf4cbedab2919afcf834a9c441724d1ddceab07119c5c440bcd4db78d7e796d42bd18f495e891893299a3235cc1bc475aefdced9f46049eafbbd2ca9c7de504d677718b4f500ba52ee47237d455e49f7125b1773eb5fbc98afaaf076d84afb5695d0e2e00bc7be59cf9e75b3969ea559536f3ebb4ed7e41052f8179a350783e48aef325f1b64d59eb876c93d8b98eeb8bf2ac27c71c535c2fff426db1ee1768a5ded2423aac425c4fe8f687b472adaee30b6c5cefff25ef4ddfa5e6614066f1dfde34e88670d054b64eda55353fd9c5c58ea4facd4ce589543a2c8539cdb7a1c55d7fd2f8ef7b93ade0712d0659451d449345d82c168f2deeefa2e4284b1b7e7be904db9a6841f275f5556fa419e9bcdedc91162f6e9d96b9b79b4fb9b48047bbf9f1be7072121dc070442e99bc0fdd3616844e453df373f122730c5b6eb898584a16a70aa5fb92bad5fe54f83b8208d88b928273a062910716945ca790ede90e4fea7f9faabf93ace6fed5aabffb6b7b7a6d03c09b4a3cc8358372cb4e3533c3292af73b2246c4552af8ff8b09e7cd0fbae566e564713900989e54033c76ebea35f7bbc6247d2101f6c341d57eda4a49bfb226224c3e5c59bdd3c8b858f89b247b1b0912d76fb5f8ec2445f2ea0393bd5b018a42801af90782c70c6de18e9f5015d8d44781c362c850bd935698fed6079293cb0e4b9cec23c67e4b903e0f6bdfcb60a3a2dab44406a550b9d4c63f7deea02a31479dd570a1620cedb099f265534bb87f69c7c42ebc6bb636af9eaf1bfdc5b961c596cc1f6ec63a6fa25276c396f990277bfb3bd84e76fc08e01e5f696c5988918c34111840482b4cbd1601dd75edfc2e5aa93dc2853342484c964f4c0998cf420371f663282179cbb05845d9bb76ddae1bf59875dcbba070e6aea1dd8b5ac83dfde21aa501a4405c41100b48ca6c2d16696896e2e102e0aed305f4987e74f7d1c0ac9b1d38b5c2af99e436d1cea60a8c5fa58ca241403ec8bdf4b75c42628f19a27207aa1227a3bfef5b24f0c29ccfd4302fe87c4d581e51b9fb6b9cbfb925d4c7a8c64d00dcc2f7cb6ce2c837813fc4bdf830f73777c019521c536b1632a1b1c9eb8406acdd303a52c2327f606df9d5d0e1015c51f1c64d065c2ccaef1ab98f31d95906b436a02e4e3c58436c4be5807e284f1920224096ca0494882958fcd33071230ae67d35542c80f51c43cfe431c500250c59ccfc40fe1ac390ea14506a257e13ac39b48fc10bdad04b49de2845f459c8ee8f9e038469cd6989e6f3355ee0745033cd0be547f5f29318a2a3f44b75459f718529bde91f3bb77e8f7ab381721d7c18aa2d4a71ae236d7b041cd6baaf155707b399e6ed15ed19c50dd8367ee9efa13fb620f52b4464cf623bdfd860937849ed81369223216f1546fce40c4b8a0db9a5125459b8e1e76aa8701e5c7a8d6c23d06e6f238210ff9c1d5ac6b2442503583e0b7d08cc78b0845ac7f54af9353c5aa8462f9eef54a3f897df1a21efd29b68097e290ca9b278d3fc27efeed36bc857643cd220ae12e39f6f0cfeb459ec995948b7cbf5e84004950847ac7e4f4dc662277fab8b57745deb7f6ae886e8d120e4c841cefdb2332f58f84b7fb484e582e2d3941a7ccfd1f9613d64b4b4ec87a969c90f62c3941bdf94c4ea0e4bec9a598b0c618b9debbcc4f617e4992eb628210395213fd8627dd92c3bc3e60ecdf145f4fbcb606aefb98d79642ee87ebf003fbd79be2559a94c152f6a46a3512e1b40f71e33ca7b4f8fd4bae5b09f48b619f7cec57c479a57ed0dcd5b8ee8f45cad4de2af9bfb855764b26f1fba5a5acbdea317ac52be4e88badbd7f36f6fe59dbfb67f38bfdf3819cb9c5c8377a03ad7b1a28ed9f6da03ed2aaed91426b9747f4bca9e5d6df903b3fdd6e4b9223397ae58a97e58ba0d80ab39f96c053cf484d2c3981d86f8885d65685ef629436390df4604d5166d32ec6d4e29dd9b9b4b0bd093990b0f89d77965dcfdd91eef0c928ee1ef6a59aa760e36fcbc8161f177bb391b3e1271b79676fe4d3ff0e9a77b4f76c61efd983bd678b5fec59426a5b5d6ed923c658e82d7bc096cdffe196fd071a914f77a6e3ff8b94d0de77f3ae36747c46119764c1ce6823adfd20b336525b8edaeee81ff0eeff2f4d29dafd77d2942e7db15cd29afe461ed289e833c775a22b6f74b43364de2da4830be67cb89ad9d3c5ebd6bbafefd4d71dbc6e1fae26efece2b5c7afd3daebb6dfc7ebdef5b61b783de0d7fddaebbd9caf60cfbcfe758cd70bdad8a375edb5e72ff13a29dee7619d34ff732bf5121e00f3bd25916577161fc747a1b5503279f65f4be4b97c9fc85331b395a280add18bff33893c5dff5d22cf2556b0584eafe014ae9118a948d847cb4ee41913e3f15367f2aca5cc3c76ace480960eb242b908440645f8ba7faba17f753c7372e48059e7d10a41d9ea72a92f02d15cf09acde3e8c6f585147b54a78ab1670a6909502c8e2342032b50ead8bf35c9364e7858f6395eec7cf1bbedb1afcc201e5afd71fa8cdeacad16fab777a57487bc6cf3c9ff3fb381de016f25a6cb361dcb137bcd7036d0d6a8ca063aef58d940bd63f419baca3661eee89cb287929386500a10b103c05b67cbb97a162bdebf87e594e318d9d124c1631dcfa47653a9b6177be1dc12d623bb93b2175a73c91f289afb2a224a6b798f0d91ef7c030330d76172d8ca07c479d52bf8c285393d798ea2cc50b2a30c513929fa18c66a65be7ea60c1504f477318a4e1c21ebce1b0eb61e7aec8b855f3d717932763e43a6e4274cf8f1c3aca3e4e20ec786fca2d57ecc9acc26de37d2904e17ef1f1e3cec571828721a54939ff0e304182471c6188054eb18cceba4027829d1dbede5f6e8f4836a47509ac8da0e116280e13b44f1a468d5a723bc988d1a300de520222908ce38fbfa58549de4fc426da3ab832d10a35eaf6de41d429d2f33292a92455b195e7f6ec94639fddb29478af285dc1fe66a8b2b5b288ed9e3659b86e497485cba3604661f4f0dfc4ac28bc5cbde2fdebd9e9435a8edc6eec6321fdd3c8a5bd16aa8f145a25c4d7150639396a6fc206767bae09bb08da4857a7e9b7425637ef32f37d7a17e661f27d9d0a943e8fce41759f1261403a441c4afe54b5add7334ef5fb50fd59251273c062469038b4eb1606b5f44a435cbc68ad6efc698d662cf37e516dcfce9c81100ce1121d20b25129cc7c4c03a6371c41c271e777e8e088933be6b316583e39daa25f56536a3e31a68a7b9d897cc48a5528a3338fa2b0136a91d60033d404d02ed80b7f736d6c36e0a9e31b55cdbfaf831c05f88a5ebd59403fc8bdf759c3be2c7a96d4ccba2815a9ba91d62f33efc5688128a99b31dbd3bcf5032ab3eeffaa293da2136033bc4666087d80c7ea1a02167b76278196283f9e48aef32df85aee1bcfa48da3d1ca124a914cb0f42bcb6bed2cbe47b6d2f36f84473df4951b290157b210461fc8762dd861bdc62645013011ce6cd7d0b8d0014a33c30df9dc39b7a5b209d04c0ee0e1b8ee3dcf6439a9c131624dd0604eb5b6c86553d7459de315e110c76eb363880a88ee6519c2d208e237e14ac122c6502ef01fd42cd20f9dec60f9550ba601adc4551173682d3998139cab3b658f2f3ded1271435469a54f78f49b69830339cfa8e0e1e61af9da691d903468e5f69a85fe2454a9ce8d5549dd4076745708adf745a2cb5bb467603f145036b4b1975bf58981961ed436f78e69d70d1d0acefa9c50d810301d7b7b4603ddba9b0fcc3f21d07da2ea22b0491f1409f4ec68d9e837707fe5156de15a190d191aaaec21bf476b6635b7b3d628e27e015681ff7ee996471e7dfef5f4e5efc94cd2f029989db4724f35bcafbf43e4d2b0f01b99290cac8c47af48f71151a159d60d44d9208d18d75ef268e6ec41c2d0a4be5378004a1b6679f906d4fe4fe540e838d9ed358ca2278a9685a206e7ff2692ea5fc9bc706e0226269b5aedead82694391220920fb7e6c3ca92e7dce0df8482935f920ef3c0dbb125685d53b428e42d93d95b91307f273188b055fe17bbc5ed3ebb0ebcf07966bd860c35e96ed0e799625b2dbd12d4d8823a3a67af470ebbf9dbee94fbf339475a9d18c7c038b6dc5b1e03259383c0c1689e1ea08e0a2c599f18f403d9d0dc77d79dba1993a5df67c1e222d7a852ca35f1d196d77dfd0625939923da0d6971082b342518357b5336e7995ff64b248910d8116a4be23a201be91e48bb10cac84b78189adc07fc948f927f326941725fd8bb6920badfaa6509b730e35c0ba304f8dcf0564c4d4fabf2df56fafcb91cf6a5a43cee96f21a8372c63a7dd5c5057130ef5298a35be51f6c30e86683187f8fc2ef702d14b385f73f218e0f2de93d5fc93f9e97fa5c5db8e6f5ec497da04059c04e451ccc40f2a9322f7035f7dce23477edbad2986721d90ac763311e958344e4366c23a9ee59ed42ca2f70b1dfcce1a93ffdc08098fd48f811502dd97865e6441ad47954a445774cfd905ef2aad84fc7413bd8a40fc34ead0f5f7f7ad3e89bb4997a7ef490dec6765dbdf913e6233d23c68ca24da698688e4a1855c85b64a4d5d4f5be489d01f1c97632b146fbffde507eb6ccc7d6618365e81634751ad486dd55b1de6ca5891a1aea7dd67a54a3f199b59e9b9ac711a2062a1bf66c9a9e5326bdc612c29ef0f4e949652f6a889e8c3fb5df76997713660e66bfe7bfaf472da33b71567064d592419b9fd1e7d07b4ecccfece70761adc2a09319783e1b5ee1f59bc3ee1f26a326538241f8cea908d0da0c03ee195c99690745663a3ab836980c155d991eca015323bc9a10e89ff9b33ad24cce5f16297646373f317bfeeca7e11da433c7dbfda270fd7567d9a1cd7ff4fe63ff6c52497eb8b5d5bdabbb65d5458cf9b09543704d1b09e40fb055968cd375ec3454039eecdb403808a230190bb56881cedb3a3d64647ac22ae2078d2e9fbedd68d59d751ec3946556d878a76b50a3e1f3b8f135b33280c719d01338331a069fa6ba630833548df9b0844630d24f78c7d6b9e4c24a03350dcbd9cb5f774997ec98e8c99e3e8952660f9032b80766a9dceb7826496f256b844c9d503ea74792bcaa5eac67982efb2f0daa59bf8f55b97f43e9d34340d7a293e7cfed515d30594ec9b0845f3733afbd1653d139d89883dfed871c7370f22248937c28679d2959ebabc0c6b0f00fbee181cc8a388c48e807b8ad1db4d283aa368e085ba5d594c377eda0d8d98ca889af0b8d440a799c619a45b398b2eb6939daf968b068285921e5f1fe54ffefc89effc11eccd63237c9d0c3bb886ae60f560b0e42166c9b68426eb8450742eb37cd0699486620de63e4ba796a89c3e334578e67c4cb640cec6076f6c867d80bfdf023a16aa61eedd7e326c2e1a88b2c926c162cf04b60fecfe8ba1f7fefc3786bec3d0f35f0d7d994d4dfbcc579c7102e3352bdb12a043c4f87b6cdeea905409af56bd2b0e19333619f2a7a684fd2599cf58317bc9fcf47a30ac6431d13b0eeb57b9be1eff30cc5da7a86fc033478f745fe9a3de2ba14331b635999440a713a4e6e5ae97df4903807c717a400e10c4daade0eac09d8ccf59f314d6caa9e7742f61c2dc6c8a28e2b25e50bd487dcde54aade50cb457a695b0412bff393c72e6e9b5b8bc582221bf74b2a9e10f0213a17f696b270c179add9326effb4cdfdb53a678950653ed987bd8cb439142a1a2cb1fb3295340e4fdd13a04fdbe93fb469dda85434501c63c5958790be00a0f3ccdf50029ea3d16f452b8dc1707d0a019a732001d15a23c9a026a3313d0d144ab9b52752f3d1289d6bf1545fdf36622be892529c8ef543daf346d6d12149721d95e36c33961092ca4e500da4a22105152dd27d14d9ff4f4d8188d0c18114d3c98afa79c47ae977037df7d12afa746a04fd6170fd552ea877d4ce9007a63fd7b89ab64912b821f8a2eb648fb1f2c4547b6f8fc6cdbc62145e4ed50312e0f33ab5332e773dbc4bcffeeba4d740a0a0d161e8a5147e2005e6d15b942780d837cf87e115119767b1f435aad2f16a3bd4596ba07948ac05e501ed7a75aa5371331130d30b57a06fb195611c6f20b886f06d19e89af951309d13264776de954aa705aaeccf53cdab3d4825585617b66dd6607b6bb0c04afcd255dad018de89bca60442a975374739108302923baf0fbf46a20e7eaecac870b69c8c257a23b1e36e461e31b1b7581b0cadd377debcda9f69e5fdd2c2d4cd26e3dd57a63fb5acb8fd17febbda61d1038fd65b966b2b527ab6d28caa2dea903deb364b9b3d090811191bc106404793bc78c67900566bdf64faca6e51c2ce581b47562455315a8c7b430cc3b21f8a5cd9adb9e6d202725538973a9fb76b4fbb6caa6166e3fb30250adab05a1fc40588b6a818861ba65e91f9a42de8007e6b4166f3a9be3adea2aa1177201870b648c6187617000c93e6229137f5d629633ead84e0a0f8b5ed809fd6e15df3ee9ae697873525ea28bd8cf9d311beb6c799666e238b42769a64fb246595f51161f9dc2243db2424e73fd5dde704b7fb3e19db7dd54486542e41b12baeed8f52125def7c4d77881d98ad74c38772d0e3c25dc96e5b39d17b612d0b3e7ba9fcf96ac2b8ba14811d1df5af3aa6e9b50d0561769d1bcadfaafe873d919d7bed8fd3407384e43a3423cafc6f640c526611d977e9e6222b8ffe1bbae9456c5fd15227496635a573ea10050b52b8a4478b581101f07568e14f46bd046aa97473a4b97dde89e61507a406a131a0338a3fcc172f0b1db7bfe60a0f604fc66071c24d1a625f10aaeabb3aa326b84e40350fb42bf24034ad38245dc0336486fcde38ad7a4b90a6cfd6467c733d6da0f4d45ee9eaf0ebdff0a3e85d5d2cc81bc3d1f920d6891d6f05fbc676b17099177e4fb9a2f66b5bb0caa1a2756c35d9e368700ac27ff9586aed61461e6b3807410bb005480fb2475a0877801a1200ad323616842b35a531706b01a5fa11b2c4ef9060fa7d5bcbd4630368405003b32828f8b1653cc3588450fcfd52e5dfa95b16d80c7fdb3cf9e408a9e4484a0c1bc7dd76fff92ec384bbaee33e88400ad75067f7200956b5ad4a7f4424373bcd5d86cbc18e90e12fc55bf29d0a2d0594cc11d2d91c21261f77b70118a35303083059e1e4e114dd106b950b56e3465fd1e84df146f9b05db5d1cb9a656658b47b6d1309c678e2f66a6aee8b1e261db9f545f939f10176ec7ac3661755affc8d0676d74fb9484373371a75d1dd41c2b99b4e17bbf3beb3932e4afccd1fee7b30e66ab0d483e4953182385dbe594c34302c7395e21357f58f162db1d07e8ea79dc0d318ffbe127f3d883666e1787ef6ab933c692013211d4e7f5883eee76015ed726f870af0860f38be8171a360c97d2c64685cb298f04f2ef6a156ab99992bfc64e2eb6bc26e5d660aa89f396d21f90c74ac89acf7132245549a33f42e59108e2e1be192a062919eeb43f043a71400bc0443859ecdb01cada027fd56f02e3c7f02e8f490bc1b7261f955ab10ed201664d2667697344c7a1a70f0f8a2f372113070b94c6731962936bd038402e05d6d60aaefa559e3bcd58c44d7ed4c231744e11bbbff5a0ea43cabd2e671a7079111dbf198f3f542f2f7d4e90243d89c1cefdc1d387c5efd4ba20ebfbb5f773bfc1001e22d911cd47405da742739324f451fa2ec04bef1bacfedc354630e85042e77d4092fa208f20b74695abacc60af32ea82b6c577dc6e75234aef22b6d27a13181713cc3016ae8f33e3206aeca901f88f818d1e46728b7dec33df3ccbfd501a61e1d0ee4ea5705861b696e84ff53463990a09b80234a7ed04d439e576be6061ce8b0b9fca2b472c4d7a28979c6bb5b781cde099172ceda44bb034cc4a435a47dffd8e2c4b757576be640822e4b243b214e4626fe7c3dad1e903da315f251a6ac242daeb25e488ae3897d184b37206dcaf7dab15c568b442164f6b1fc776fa9a45947adc52d553b6d3d84b23afa8835390dd08127a6f437838fa731d667a8255b254048062f1f16dfa178d092f3a365735e1c39a0bb5b0437cf62bcf3f34fdbecbfa8152964e3c0c3a4d3c47732399d33d5ed85b59b10710507ded94bdc0dab38acaea867ba92625f4c448c69d62b9856953c408550ade0f2bec649b92fffe105288576340ac89f493d39a23b39fef28d2645131e444e6a2eadb7ca6b9a069c6b2d83e290776b2ba5c5e9c00bded9d7d90dad915a836555179f71aadac680f18f2b131429894d4976f581f6a8a1b58d6b4b5c2715125da47f880dab93967cfcaa51df5b335085220cb0bde332b25e69634eceea9e359fbd5abd21e9b81ec48e84d06c281a2cc173c4c3c0e2d7632ba2e3276b9a43219e8ae70fb7e3cb0e41416a634f4ee467f1f8c93d32dbfdc5ca58a9a80ddfcdd8161af92981ed7819f3666d61a5f298d78035f4cb65c89a427228e11dd9d13540fbdd78d45451b8f29341ecfcdd5fb5aeec578ac5085ac47f7cd13e26b34afd1e0af19cbc7e7219d228a5e71b8670a6886824469a475c6bf33158e8336facc1237b18dd09c1c8d1b35dab52764e06ac4cdd21000755380b362f0e60591c3c025a17640f6a34cdf1811af2c15deea0eca4b0b2c1a581eaa003bcb126e922ba424e582ff4f38294ccc97241c1e550cce9dabed066a72c56b1f47ec90d76b6d3aa5b9efc42db75868a087da3b4749af1dab80c1dfc7333f845e565d350e29554772bfc11ee700213283ab5c54bd1ea09ec57202fa59f7d6cc77f2db75386ec1d9204fab37e396ea74696b8dce9b815772b4b87dc02b1bb247ac32b2472c61ef429fc81bd8bea331d5d18986497603778048792319f8900b64076345d7a52f7349eed4b4e27c986963f88d7c2bbd46f6e3fb0454921de1a58db1c35fd713311e14a561ea2b533279a87094bf15b5f8c4403e369e26fff30a14b280764fe71af3947623ff6c74bab3372590fabd26f28569d88cbf370849bde097f29218e3838ac309923a47781bf4d1de59958ee130dedfc40004607b35bb77e927f3c530f9cd5c665f289f0bef93c6456fa807ad4dd4c0026b82bbc1da11e3fc08fc3dd05daa9518a1eee46d6c44af1dde0446d0e13ce6d96b058b82b99f3fdc6872312d1ddfe93557d9ae764694c8024c586264e6b6b354ad9e4c978235685bd35ffd03b1fa62b26686fc80d74dd5966c9771a65878f0ad9a01ec33d92031d637ff0499f77aa063aa6e4f5b6f4371fdf17a5d55a24266d3efced27db7331ed1845c23da788201ddb168232bb1dab592421673be515cae0e1ad4f560bf3b5ed7142ec3db8a5f9f0e645c963644928ecb24a9c9892255057fe419bd75943a8fca97ea6e6a4e1dc07b526547796bef82efa78b1b9d2ef7bf465225eb5b791267baeeed285f927d40c5a20f28e711dffdcfab34549f5c515fb0fd917db95bbd28c392ff856adce96b0d53f4516f50b90d527d214f082d55a42a5a4653d1a899aca15d64ceb0c959874c7bb853c84c99033017e8d9e918ede016c3fc07436d9b4a3a6db604a219455f3dc7da3da02dbc9dfbe6a73ce1403cafcdf1c11dc9d093929d4bf7212630fbea81416b9af5dc2ff34f76fd705457b35cebd9162410f23fb78b83d2eb6ed8f6a4c5f278eea0721757983a585fffe004871c4de4f3e6550ae6feac181639655d54bf24ebcd8cca91b54e6fb8998f747d5baf51ede6e4231ffc6da67641ad19f654f166ed8936ef955955bfdf898c03788f9ded35234e43bde6fcfa057cb33679fbc7910dd216430845f3cd919188468767fdf8e36b64c669cb9fae48b0672f62ef2dfb5555d7ef1de56a513437c60932a5741ad828f6d52f29a352ab44c568e3e7df96776a52bfd40fa80f79db96a18d25f5e9954cddb54df5f33139d5641ad9eed9fcce9c040f4aeba849c4e8ebcac6c0779849f321948fe66b5511219efa015cc5554d5e7e8ea219b1235ba7af28569059d9a2f1a89ef5b708687d335b6fac1cd79d81bead0c3f73535ffe7eb8d144f3f0699e2e91e488e9934b26b6edf47928df73a6079a3775f6eab918af36fa891726078c06963f384ebb19e7651eb822dad5002fd53d9609bdbb9c15aa1e6f9aa5a181b3383f4982e4356c91cf4ad79a9b7a5965a50621e737d174acb3258793a2b3eecc8f873dd920996e2f9d5c95e242c6ba90ea4bac1aea264309ae8b9dbe5b67afe64cf5d09489933feaadf3334fd7eee8ee07b30af9211b78ffefff484726ac8bebfd87dc6e1b92f8ab3d830b3ce269417f68ccdb5c70ec54c6d38f6b78bd91f6cd9ded387003138b2d6f188e36cebb6d76560f2c86d5a243f6dff33c5fa7cc7ee7aab162ddb62582df7933ab7874fd5854bffe3aa694226423687bb2252fb2604da276bab14d3520c79cb6c596a1d8cccc6399eaa301ce1f8df9810f525c582479649c9a57b7b2309be467fd446143dfb47f24e6bf075e5825aed3d76b9dfc0cd694d397ca5d8916b6d3a149c2e7b016a73f88b2ee9251ad03bff98dbbe58adf3c7aa4b1c99fa7eefe2145c9e0eb52582778a4e9c830c1c0b1f528037c210e28d38641d5a9fcdc0f6879342e7e981a1c99dab03de219d6e3b1059ac6de31f29ee42219ef67ffd9bda3a16ac44d7cf3f3d6aac00cb8605eb2359ba5b6e0129431cde7ecb72a70306b39b449631679f725e07759ddf7306f43b0e572093cc90b4ac2414b3af59b7a892dc4b71ba35beb267a49b58f974cb69be9f9da4b2efd4c80e9b283947f6db1d9cee1f98e45db8ca9de127f958a35f95122fa892275a3df8fd5a9faed5fa2826e2b89d6a57ae90fc6e61f4d8d3119ecc8cca727130fa937faaae54cbe4b23a67bd08ab10c6837cafaf9c09f904d1fcaa6366fcaa08409b5597657b68b9318794f56f580d804eea02ea1badd6b4b491ecb279f4b584f5a1a224915094d069e5e45e1e2b8c8f9ea5066a95800322ebfdc932caf4622662e7d4a7cf1ad994817dd48f1e14a5ed2f55d7394e067cc8ae3e829a6256714d740cde4e1f9da0504c7e3a670e05cf29f94c28b6193b3325c81b714ca22b5756e3f99d42b6bf65c899fd26bc791311911ac5dd36305a4d29bb35feaa69286584b4be9160f442295c92c9be8b02ee7dfc2f3bb5674c3feb99aee3e57532aafa74493127d729a6e60916208d507d498190e23a250d45471bf05a9fd0a96d4d6d140cb0e111c235d4481a42648a6e464c613cdf1664dbf71585e473a9b5d5edb4b2c90ae1a43c731ea4d9a205f3dc0e93dec357faeb33a676ceb05d47521d44a69514bc48ef5a2bc9b9a28577ea90dd8a2d08db9054b3965b144b3a996d8e64911e4f72fc6d77497a9b0f3f3ae981926077dc390d1c1589e03cbc12033c8157a4ac7427aad77bddeb504cc4e1ac8d5cd43a66039d51423f1972dbf9f40aff96a4cc4277311d2da8fd38690aa2a4ea2a81a34fa23df50c2e7b3dbeb9767d86d0660565ea0f5a1f335b447a3cada35dc25d40adc6b39033259622a2ed48431d225b721b46786d7a8c814954a606b30ac472c68eb86dc21bdfc94f3b13efa7d5d66c4a38a0533c4497ed2571177ab373849c8b7c5f6478df09395d3896826d3826d4843f7c519bc2fbebe34d51f26ce85a94f0f1848468a190df36fbe9c7df2e31049a81f3d0806128a9c7c5fcb641aab6a00ca715a3c3b9489ba1f6d544cca11b73aea45f1b1c2726ecbf7b9c54cefa76bcc0001fcea1cc6ff561bedc5b3c25161239b6759163bd48c5a69c31767852de315a8f7f2d4a5d88016f16e7bba68aea4dd7d36b431bc923d3c53d9cc93fd232111b073ad3d474875c6a77b2fd31f3f8e0ece9b4cdfdd6fe63923a43967e37675a8038a0bc6a86cc175abd8923df27b3ba2c46f313e398912a628134dc19b40d734a4683e010aa60ebb7f7bfb21e96ccf236a8a96041fbf7eef4d908dcfd14b4271492157684395175a8c0ba6ee16a87ddf320f623f107492566e7914324949c599fcf503a0f6f1e956c8564d2ec78700e6b94b2a2c7e57713efa9045e0a94db908836a37cedc32f8ebe73ae5292a0f4b5cfeed5f1f6a16574dda022dc72213d54e6a132e8df8e55659fcc392e026f61e08b0e7e77c12cabbe04138a409ab4867314d3ac48bab3599177572344bca3e5acd0e0575a96a3ee411a2b2f94d3b4108e8583993ad2c2a0a0230dff3e3b31c399c2afb51dd293d794d9d4ac07ad61ba8438533400d28f5ab521f568792427975c3152d85506be6b3773542f921f384588d3189182835d717e5cdead84e1ffadba609f2ffb54bb60cf10c6ebdca6be603b195fb067d82d973bc61fccce6c93e65bf5a5f5b1e84137e65edf98b1c3147de1444065e1a1cea92239f396a1da305fd6d4dbf33d4523dfffd4127000b341c88b591da2503480a0a2d9a00518ce01f8d1b913d5bdec34e137ceb8ab34a86e537ebec4f5acdfb497ecb8d37de20d875a02aadd2e788a59e9ecb0afc7e56b063edd871ac80b5b649e58c6e853535af8a15b9875f39c1c8523a848bb611dcc4688653f3411dfd4d93c47fc112b438edfcd463e7daf7fc3cea9a129177215ed5a0d0ed17dade204d9bf5a07979c889b17f1d38656067a2c83b998b0b9c561fa2e88a8c3947acd81032d723b0e4ffccb5dd917bd36fe2fcf132b3a633db16ecf1c682c4c6ebfdcd4e2b1049948228efcd2ea7167c51e782d34e5311f0573e46e3d212c456ee5897caffccf55e7cb03e8388de4e9bb1e836214ae5a609e06cddb5fd0628ec6dcfdcd6730e63c58b6e16626c2bd7f1c8c6b2d7d68b999c35775b09b7e108a137e60dfb19fa33b4b595d5313118a25d5bdf18ffe8d145bbff0cfc4f885ac9678e1db801739f1611382f90fb882d7623f707eb6d1d5b57e1641b59edd55a4934a0bb19f4f380a0609f65553bbeac8259c405e63fbc48b48c78352a809891d883269acb45e8b34dee8714ebc76ea6fde7eb17e4b84e00efa944969e06fed0ac4f648b5076291d69ef7737667392fde158f7dc5cbd48beff8792092dfaa461527ff2e5d7cbbe258c7bc363ce114ccabebc73a862e810d06c55c44a7aae95b0e09f757ccc15ed3e5bc0a16b8899629406653bb4659d598a6dc11f571c7e7f44b4f4da018aa657a15b2900986b3ae954ed4a52b3d6e38834bcac2e1e5dcea89010ecbb69cdcac7d28d813bf52c4a9726b5f88b91c1c7e157b9272a02150605c1c2d6f5f8f3d710623137c327f36fe628be74bdff0e496b06d626034ce6ede741846d243b8d8235d1c4b79a4b842b992e71df6f07e628591783104ff0e6bc8ce4860cb4afd1417675e10f331249f20e12a11252522b9f9e3734ab705a51bd0715e0fbfeb93ec8100a5ebb19183569da18973e40b4d87756a0a536c591d7ed8326b97c124dd07335fd5db1e997a772bff33fca409453ed22c0045697d602de0e630ad45bdad8b90d8c7030026756b1d0d8343983c4d984f8e86c33fc62039e4c6da4ea7b541b58f4c20c1b672613854e8b26a269f390799b12226475eb50df2ea1e3b9cc5ffb371d8104ac99ecf6947636d9d1162d25fb313cb07e85517f04fc798c35b1a92c7ac4d9e5d26ffbb01f2f3e7059b3fb6f9089116dcdafccc01367b8f45fadedffaf347b5cb8ff52db3d3204d0f425be04efabec1240de41553ab5657cd2c6ca90e0c3f1efd96c27de40c0b057c100a7661efb25306cc88d56c4175597418d478b7e3d52800baae677bbe1b32eb9e6159f4bc3446c6def9cb89bb174105f2703c904f5788cc577a668ea89f03a30a4b5ad10bad779117e092234726ec221d25e514c17fb68b947cfa60ed1e9df9907f4be16e513001e71f3b0147523519567f05d086e596258c43f91b13a4765632fb8d0dd489df6d201663bbb6c755a8c990aaa9b1675c886693817efacee8a6ca50a6bfd37cc5a2cbcc5ae330628fa23ca8b57f384c4dfba705d20f1a77a0eea6ca0a17ee87f376fdeb8e06657ad2c94206b5fdc6eed2c67345ed1532236ff636748b92dd6b0433b5d1f3b6e45e4d3085b717a0161514aeba2d57257214f57d6bab04a275a2fc031d7f4ef62be9f98b13dc704fbcc4af448103128591f0175aded2f3ab607421363f190120441c909e18f626f4b025f5166d512b8188d1afe450a5e2d39e5a07db9daf9db33963815b261d33e1d0a15a7983cd895ba8bb129fd2e7e9ab5bcdedd617938b7318eb6a782e7131ae07bec12b3a13233ec4fd26ab33d5a7e723ea78a40672988261c348d503cd6606d022b128a63ba5b781be3af5dc10f323ff6449aace82e822de80acf88bc062ad4fc75b354574254d45d507da52894511666460187e469fcad5f8a653cd4b17f3b2694f0ca142646fb5105bab90baa71da77e963f40890c0db53eeca726e704c7e3415c85afeefc8078d213d29d6ed4d946e4cee9d94c45fc99ffff96dd4ee45ea2ddaada1cd50287f7c4dcdc65e3ba54f36fe26784c9877a7c6647b7f3c5357800908d81e4de8337ad07bc63c798d5d2c42c716da7d8bd25fdb56065d34c2e8530de8908a29be9c4f660878ce94047f81f2e38d87285c86047df4e6a21ce88c3723b36ff69ae8c6d61384f1d934bc04e33cdf272904bf5932ed223b33fe08b935be28b53b280e67f50e29bdd1f3ff7e39b27991ce528d7cbf8c4dab2bfd071ced1fc64e6065ac4fb4b5cfac07a50392c77e4d8bc9891bf63c6de867f52601067e90d91484aadecdf170a0f250347954e9d719159ebf29536f6039e4f34d37f4f476376e1eaf72a34f70d38cb48fca5fffb6ab4304ca842f1249296e2adbf215302a2f86955a0ab59fbe25e2c72b56bfee05213ed6b792fba1058f92002bf6b01079a6d6a697135343945c93163ede2bab913b7fa3532da936e05261e271f71920ce0a2a7051b99ce688d21c0450fd919f76fecf5f176138a7254010b833b823f9185e291ee01b16f885fd3b57d9c3c3aba7cfd321e3de719730f1640e06ac7ee550c8dbd5a40b94c6ad502ce47e4721da8e10e0914ef855262b19f0c5786b33fbc09e5692216c7a9e93a3b23dcd392519e561d91cc168cb96f56fc1113184ae313fb57f5b91cb3ade989ca11a87c08e8275384766e54ed47599d9137d899759ea417da9bdc4f065dfb816a26ea784d8498c43c8c993a704afcfc2ba0ca666a78d78edcb7ffe5476eee5f9eb9b9bf60e49298f7d72b0673af11e33fd05ab511b8e0b6b5367372812ba0231b9e2ad575b76dabba9a5d7686ddc24b9d6322ff64cacf36021d721b6b4093c2af1f8699390b5f35a31530ddfb8a210694cae7f3c99bf0f10874820fc535550e01d76715a16b0f56ca306e85b3cbe32643a7ee00f3a65ab7cb7c535fbb638991f3a69c09f14a5bfb3cb9ab77896769a23b3642c7cce321bac74f2a83932af8a22a9094050327b31c0ea190af45f21b30f4a4e71b6c61a67d3a1fe3a3aa3a124394f44e48710d404922811c15a869cb96fc40e07f74534a6305e98fe59780942fcf6446fddbde70aa0f159ed64e376f439433f0ec56719c832db3079d5c9b3f3906ffd93ae6cf4aae70794a1b2d9ef9664b32757b12e2a5979a83cb0eec6702b396051f07b715dd044317fea7ed16c2435a9161952531ca3dbc5a52323749d9c52ae8c727cebf43fb86947b631eafd7e2203fae4f889b67b90914f32b857818e81ab9b19e7fd6193bfc5a4bdd41601d0602af7774e87268915bf6e342bc268c462821c58aa9b64e8edaf25933704420f201519e070a4816d9771af96ea1936a9223e5826957ca2f538d673f57ab9f119a21b9b6bc88e55e8de08758b28f4be9f36e9f91a21927538fa13b18abd5caa46b833f833bf5602fec90abaf141eb6c48255897327b2f644821a63a7be2f1c97135b6ed2db9b60b8f23bacd3f770192e5dd2f4933a7674216b0662d530e161cb4fc2c3ce728992d5171fc4881d91a575659204397e7982d1791755cede2dbfdbe2ebaf83a9f15c869e5abb3c624dcb944888146ba0be3d5edf3e50853a16a3dd60cd0182bbed6e1cfd397e41edba0babce9caacef4ba550e5c51565fe8b7599fa97cda1fdf3c89e0eceb07879275efda6931deb14abcc012abf76a2d310eaf30698ab67e07bf5610c0972735a020e733dc835dff0447d663e913c98292543bff37ce0402285670c14eab50648d951e507f105d50f27db6caad6d99e6121e61aecff9c3c8db1c96b88009c00aaa606727a91bbbf92d08ff1b29ab60abe460b89dd4e0ec87bdc562147b22a1d1712f39f890dd2fd7acbfdac4fecdbdfcfba5714054eac6a51e3c03527ae9c3d2f440ded1c109739eea88bb94118437b0661f60d428c8c801ffb4355e767670ef9546cc5307690fed132bc60ea9ce34a938e0d3c0caa578d01ee495534d01df373e0f0309280bfde50b3e9a897155942a9173f946b7db4f4038a6307dadd979ee80c27b3cdfa5b744ce7425ce808d384dcc871adaa3e26243712be078be6945d6fa338412df3891b845d4e40fbe1cfa967e9dd38910230d83b6f3e3e6554c0414411313604593517b5acdec4271242ec2ebfa0344281c6c548fc202c4c62c3e50ca57048d7ca5b2ae3e3010b9b7f766c2bb0970aedaad11eb191f2bde6babab27a37d61b6aaeab83e0aea14bc29116d095701a840a7d65b68cc327c727c345049acc0ecda41f71587d0f1d9b7f9e0173827fa4bc5340ed81d2626ff33394584e8ab0944a295421a63ba280b73149f6aed77e3db6bed777d466035ed579f2a46b6c91d68cc6f3feac00b1830107baf555d0652745b95833e798856e1af74f68aa9ce018653e21c59afa6f90457a39c2e90a730668dc9d0546a5e72dfe3d0b0f8d2f0c07cab9f8f68f1451fbe0ec9412330ea4c1e61781920250c29c72637a158842276234ee5ebd7f6a9de7b197252a54db6cec0c09d60a7c603253c07974990de9a05d01bcf96a766ebcc4efe8d62cabe172c516c153b89f52be025b7e1ec8807ffc02b689652d1888257b0248f4f0663ff9d1627270aaa78cbfb262116b393fb34b80987bdf0cce4e37cf26f02399f704e775162cd1003b46336304702473ee69b50a3d88dc50a202acb766436ec221dd11ad13867834d787337ccc65f767fdd04321d1fe49f8aad19178c08be44c8a915ebd162dbff26b7d3da1553c3e1d2ebdce3258eff605323c312b3809970f611f62aeef4a108a4bf1123f9ea872bd4c2fad925fc46bd8415271d284ac6d7d4262540bbb70c02adb727eb159664b308a21634c6803f0bc5d394741073287a52b8b55226a258632bd5954137f150318ff617a1c8f6a1ed6b57dc33aa39677ee685e26dae1fa93eeeb0d5dfb5e04a0673b66a8c599f9405c6e3257bbc5caaf596198c870132b8f74f68ee4e84dff68a104b777490417d12c282e3de62905b4576a34a14d44f0f6940bd3e9d086b6a1663c8544d424ea3f20bb506f231a4d38504cd8baf348cf957fd8b9896379ead3f6a0f0f43463d8490ab7bb3fc6a2a0aab5eb5777cd1eeff60d247fb64cee913e28562a16210c4eddfd67db7894c06ca3e229ff2ae65723c1757fcadbabe03c548d26137b8c19651fcda142f1512c8c66a06c7070d6154b5348344c83ab9672dc88f2ba0205dfe0e92fc12c9cf67954a405a1e5fdf695cfc2dab87b8cca3c6c361efe0ed1fe20751da4e0977061afd1d06fe459189fba0ddd072a25c7d093afc8b15404d7c474a3b4a36f16770e067affb727aa9b95bf8ffc3aabb836fe9ee58529f1c4b28ef2af51c65f97a19342e49f2b9a39304fb90f415e9eeafae926e2141b9b577e3dc0ba099ae5883c4e34f7b30a4b64b5628b99d91850079b28cdf3578235603cf4b5b5dc6866f6481cc00907c786342988f78fb6d3932a2ffcc810825cb1cdda59627682b3482f77d482fe8c00e79d5b2063208e3ccb93bbf7606fbdb61addc21659cc902b292febd817f952a17893b0dfc51519d8908c4eecd1097b9c3bec231d6ca9a83a2cdd2fad1631f0cce9904b544c902e8ae34bf67669e96fbffa5131269771ed4c2c30fc4dfc6abb2819483fbd5ed8715dd8b095fbf8b1dedf72feb93654f690e1870373ff32ee9fe55ed926711e8981ff420ffc9348cb4b1db0e4f4a7b44f2a9db604ab8c02e6f8f6ed6be5c84a2ab5e0c77207d9bad4571b730b6dc5a5695cd479e8f17680f074a2319fb0787863ea3b19dfc26d1b4f3881a58faab8d457c57fea7d437688096d974ee6ee1ffb791e089e804443015470808b42dc34ee899c84ad8987756bc74a2f1774b2b7b700e779572c053b4647839bbec84b36abe0515d17a90f97874d38d44305933941cfba9165bdb4ff588ceb49d8ffd54238d1af0660705c51c32d2b2a87d6fac5d4c84e843a9b53f3153767c20c9d17bb899b1978610f10ee70f6a97fe81950c311cca9bd0dd344eecd2ca2cb1adfed14abbe0428f4460beccf037910db6e14e3890bda73121e00c0d2d12faa2134374a0121c20b71d34caec752a450f69c313f85c3a1ea32c241ac619b9cfc735a5e9798d28d375c8da1440cc69dbf50011a588f9460c6abce138d9362296501a9e4452244dec2f787c6c1ba487eac8735f7e12fdd6670fbe724fdebbf9f0bc9f58cb5eeeab24ba22954bec1f75d30f57e4cf2729e2ef7e49a22bfb6477a9d49a1d363672159300b9663235609f890d33b30d78ed35f157fd569445ff5ef65980195bb7e2a03f328cf09bf522bee7b9e7fdb13db3fd3d876ce67ca335503341f998ef133f46caad457a6b05901fd35fb00509a5268dfd0ff98236f3055dcaf1fcc8e12cfb41009ba0fa77cbf124484dc0ace8716a79bd410f15a784eeff303842787912f25b07a2648e1cd29f3215ff27efaf99081ee631bb472cb47bee95fa26427ea3bbac7b92d6fa751d5feda848ec9a2666f8e013b2c73d0589fa2b5019f5f1a2c764429de4b92f2a17af376d785214017080812838a8e3cd69598b765e5529868598af6c66806fb6563b32644df37cf742575ac290e9b50318361138068e7009bfc41e3d6768b2dc17bbb6eda6b45f4f68a3267c9594b9c5859cda084f882755d92731112e02439814146dd644ebe659a66ae7eccba83b0170bd76c0fef5d9f95a54097b50f4d95a70666e29cb58cc56e4eb91c915b9f361d08b1def841883569341eba1ba1309192dce6af34e94b0b019075f3ef6b9c6652c4e7435adc7dff956cac7ec0033fe99e158284af5b2d16aefa394de98498fb3a541dd7bf84b81823eee4756b2a7bc43ba7d662cdb087a63388094f757579398834f49eda1f642f72e0b5152e33d4228614abc2c4320401a963fbc5ac45545d21d724ce6b71fd7d3465bf9276d39671dcc77bdd334b26c8934fd2f57cb347c2b350a6c21577beda2b1f6078d518f3a28e47d5088d2927451a8f759a13e0ac1c3ebc82e80f2e6810c6d145b05e376156da7ceac070322a36dea84bd81c1b1bd298704270263d0ca5c97dd10585f295de8b3754a92eb66eca59c5480084dda817ebce532254e5770188ac4ca378e7e81d519e6343b5caf68028702c8c8db36e279db5650d89ac1336e24ab4087dad962567903a3ea0efe2e87c6f41e539046c2f7de36ab501514b918fd93ae1cb3ea284ab1d94cec960650dfacb54e2dae30c51a48e1d36d0cc9d4be42ba4b758842762beac334333686a0a69ae407b186999b1d94349ae14d672c8423370b72be6d313bd3cfadb4e4ee1a1723923b0695f318db80d7d6fff92679353692d0a4b30c80d0545f3f35017378b7c77cd96d38607783c7e92bc721bed2d37b76653cf38dce01a93dfc4a9becfd93cdf9fee161bc7207961bf6cab67ad3fb1fe84de68bf90647f90cb4d47c028f4e355bf17a587b3bdfb15682f93fed523e8760c3f10873df72a081f3c95df5df542fb5e2dc8b8bde95ce9857cdc38b3526434fcacd8b08c5ce99d63ad5684406e5b8d76071b49a22547d70e0ccdbbaa85a3518890eba35409d9db3ddc603c262d130cf49134579939e59bb05a6c161775ffe40521e78e2b4f0f7b6aa9b323aa35a092fa3e022872369483a1363193a7626e6cdc97e53e24dcfb90c6095a2742cc541b200174ae166dfcdffbb9bc8603343035849fcb0ac3ad7762a9b0510aecf477d39367405b48775f22040ccc5936ed233b2895014b99a58906991225568077298fe423daf0a67701ce87fe3d35239905597799fddea06df58a9862969634f649ad871248f8be4526787afa53e227cf4c01a4bbe31741ff92a81a2da43544f717145817aee6a863f0761c50519b304021990758dd1b839fa7f0d216bcb08b76b36e855149c50eee132cfcf66eadd44c893ec358615bd266081f52d1f9f7545fe43d1c60fdda1f5223040010512941edcc044a0c605dc74348823df69aa0c299aa8d000b1616ac6aecda0feb8938cb543951445ca7d38359996ade196cf99fe0677bc3fbed2af72cd821a6f0f299a2e87d7b4176c6755e77356f1d3eacc3c883758c170664e3a30ff6811ae19040421e2260724716f5e40115a3853330287995edc339a8ab4de9d187d3d5781022dccc8d70b6f0026185055a8230098e58cf733eb6f8e6f34c88291131b1e2feca6c72844387a73181c7b094f09bc84763f98f46ec2daa1757e32a741d1c53fb533b0ac3778ec4eea2d25f526d2bf6b75e72bd89a427df595c8d2e0816a63eb72239ca289b7936e899e9de07d544a6d8f96e20cc372604c7f105b43331036bcfec444df5736d906ee8abf6f42b10449d296f6f6756af762b197378158e0ab8e2efdf98a4f7006d427879fdcb75775c27ec24550e8e375f869ae4b76ed7e33a03eec57c633a49f538e08d631fa90725fb8c3b413ccb764687bd1f408b5a85dfec8619fe6e0f17d891bae799c1ae82c0bef816a590d6b8ca7e6909940cc2d88931207a7e7588e72debcea1ff96e8c846385798182535d3554b140ab37273553eb8ceb22807ca4c857ff1c401f333c6bfd24f7dc6e87a198142f8e3cd205ae29e866b8cb43b1c1a5819551758788e395226f33a8501f424fe6d460ce17667eee850c6bb48f2670fdf61e9887bcf637bc3ebb13005acf1a6382f97ffd9b6324dfac0fada90269c66b847196bce5aa299a08e14c5ba0891863eb0d6982ee84ec4da377239c90d47d579da7da8c896ac69c0e4b0805ce2f730b92f13a9ab80a1cd47be350b082635c00e9bc55becccea83df76dedf591bfefdd3151781462298b2a2b8f6c326742193826d47b699dd36affe9230e8e2776ebfbb4e2758f355e7776c9ea122fa96ea8814eee7d67c578ce2da767a7c5f3c7d1ac05f23ad1e17c05c40f5df1a34afe42f2698d01648988913806a2eb305a6d0f87677067581e215c86b031eeee7317f8581723d4222788ec2aaeb68b4567dbaf55db4c6a1f74b55d54b7687dca2cda54e2c43aaa9ff6ce63bacf247ff25fe88d146a97bc270b31ba95e0afd61078e813981fdff6cd98e8b01bf82c62848a6f9889563846286f6d9b10b06f73f4211f2344c60685366b45c098a6f06a45b4100040b289110289f75397428acc351a20f340669f340c9f38db090658fcb4af13b32722c32ef7efccb6c59e368f48758929d4314c040580edab17b30dc0a1f46fb5c5784e2e27fb638549b537b69547324725ab9b65c2c737d4476dc5ffef403561752b801ca6efee39353c141e08d20e7ff7f88b93e224a6278a0b4d61f03a352dab67a3353581bc1946a47195584c0378047ba0f4fcbadc4b6a58fa019fbcb5760f24285817023621c666967904fad28b73f460b3213351131f2bad5705675116c1d55d4f2ba6a518ae99599580c0a10c86c5e4b7fb10bc63a01a0e2f42fb62118889d12bf195267e3e9f56134f80b838c3d4d4d89cc9cb26582bf422e4ec6626822f073bc575b11f5ea1c095d35d171db8dca344843bf30b4210e08407222d2d8f8f82083326dba60f936b3b4091e06d2bb2f459ea8de74d4cf6efbc64e97147da7329061b9f3a146f99c1dee480807fb06c91dcb5377510fed63cd29d6eb863df3d8adb23627d66ca74840a62e532af97ba53664b5bdcfcb1c5803827fc2e5b91c1d2f23ad8ba11c08e1fb8cd4038fa07a1d7b38be2a9cf4dc6e729fd6e214a86e967caa06c193f735b91ce94c6e1391569d50360445e49418d338eba55b33b6f598bb36885ef3f9c3bfca1cb6e7a1e06d66d01339eb520d57ab4db96fb64d6083e26f60d4c69d68d6ca9d53dde5ae04d1a4a2012fa4a76dda9d165355bd165039afe08f14ce5ec226a5b76dca999aa85fbc9f72f54ce2ea2be771228b548c1177ff27dceba25bb8caaa0ebdac1d8897bf5f627ff1d97eb79e5e2ef4b92ff509b37604da34b73ffd9d0e6b0226617839bb7a7861e6c3eab21e62b65735141dcb66637fff5d8968cc2febe244d757b6a0c927b37329fa72d500cdeccea1d7d104746f9da8aaf7c707ea8dea90f0e2e7f7086e8e69cb9fb058ef7d1c5d91bb2ae78c3d139eb9c0fc1b93532f84f3d6bb3eb31a07545fbef8d3836a96b792dcb8dbe94de6908fb506ba99b72ee17801e59134ccec2df6be3c79be14fa4880187a6e538f0486d38186935143167e0c1337de3dcd591ac3ed32d52602ceadc6aa3666762c221f37ea559fc4ce7a8f99a76a0878feb3fa630ad51c50567acb8b2b943219c0127aa5e303f5620ecce7afb2a0204f6fdb7a835abf5b4759b0ffa61d2f3abbebf5780464ae81e6a7fc0d5d8d67f8655e6d90b95e71cf03d9aff96422e6402cf1eadee9c8329e180b8c4d89db788caf3f8d94cbd9b08e9f9ff99d29360701f7f9b79ff87bac87639259aaf96abbac45b6ef49e4d5962e3b636631381e16d2da0325db2ace9483593726c32d655a7c583d81f024d08a5288f1ad7a8c7e7deed014490731a49b1cbe54d3a145544ffc1d7d0e504b7b5b47e26303c1c36234eb2b5b78c775ec2f4771e736e0e6820871aea9eb8799ea3a2a36d2264bcc1af5ec204ab9b4c6fe652b6fec276a4fdfc90f3b627bfe3049e02f76ceb86f7003bbcdcb3ad543d5bfa0b5ef21d8b8e70c8fc858d79a96dc16464d6077763b481959199d421b3af6c60eed806e6f3c1af1b98cf958144db97354fad3bb2c6a6d3322aa60faa252463b5cdcb9a34fe77db97631ccbdfe988570cf541934253f6df372e2f18a4223f07bf6f5b8e6bb6e5a46e5b3e123a4fd892c73d2b569aed8a2d7f0645ee5ae95d2aabbfd4c153e40d24edc7d5065fcc2dc03f458d43023179575d934402e8c0d7e8c0a61dfd97969bca1c58b871b7e195ae6b8885a6f39fb7c05e7620cb1b26cb770cfcc61683e61bcccf8fc2847b4a8d75b08633344e50d2f70d9a49b7494d8c4f1b8e9239b459f48c49e9b3f485b7be65073728e506c4ec6ae8de797bfa6e512c8bff44ebffc16a5070639b99f35ddb12c1599f0a8ab3c4df7d9bc9b29698bbc868d27699a4ed7e1a3c307ac1fb4c5d6f9688dd60aff8239a5b94409cb9c72244e2161ad46d87efe6533faa7d4e7da87dae6f5f592da7be8d779d2907d755a34a34cb69851e56e883b04d2045710be41dac10ab6ca568684f56f4aff4582fb76a8c4d3f970daeea88d4c1a7061f1d56a8a32fda94d9c6dfb94b4949616acced7b8335631b16bdfa9b911547d2dbf2cdf6c6aa14ed508baf071bf668b61c5fd42ab53a13adb6950f9886a50b48331e7e822da61e93ca7581075b28f8ab3a42a3fa0d44f08dff7b7c31b391f3d5a2a87924eea01dc512f6ae9cf9105883018813d98a2cf07eec82063e6db6234b792d45072bb4e84435a536ef062156d8356519903705d5ffcdd0e8d0fc7762fe6b21ef05e6947969687e74cd8f9a9bcda6737d8c7c0169ce112405dc2fbb41e3ddb6c37289764c53fdcf82eb3e58ff9ca4c1d2d4051682e74e6b703aea00756dcf09dbe465a1b901ab3c674be77b2afc286434f0aaab4688dda192048269995b11bbb85cdafbf066229ca1681c387175cbd3810d5551ad9812b589e280ee876ac045c71675b576d2f8e4747fe8dd25ab2d662635b8625793e25457abb71f98e5c532648c7d895cbfc79f56f35cc8f8cca2e87958591dd49abcafbe82abd7469782715af31ff557a625ccc1dad352dbf57db848c717e353fdd9b3166eff6c95d5d87ea68e94cd10f1ca5832aab0efb2135d3d0fad4e74137eb4912e1932b71371146d760eaa26a8807ec1578037bd365df706af2810a29416532a96ccf83abc36bbd62db1f5ae6c91b6416e4647ccdbe5f9fd0aadbb39680f42469c9a6afec13798eba9ee3d8605cad146e94eeda987a7dd0e52ebf7f0209b331a43ecf1dd3be8809ba230848e7595435461659887d43da0979bbea58e5df7353d9e7ec8d190a1548a03f10c81707c2bd963e2595841cc230ce91e0e6bb2be96c0791a6a5b603ff72b613cac6f890b127904be641f2c88d736623cb9a2e1f9e0c43cb397f2730717837a3eb139933b78a685171f8756e3f7c6e60f3fbece94f0d5d857827bb6f22e546a138b22eba54fbd883d0c886e625753604e6db43beca45619bcbf2d3813ed05a9bf6794a5b96588a83a42da9a2d1d17723b665f67382895effe4fb70fbb3a33e6587f3f624ce73d2c32cf589009df5933013b862de2812b78b980fade400dc00e5c0b26b1e4a42faced62c2c1892c6b76d2f6aaac2d60ef0713bbd4782384da0909c9f7688f92cfc6d858320c9d1a5957e4b913d991439dc862b9d8dda6c38c8986bdd1c4d501d7c132fd6960a9011b5e642ce4da2cbc0417b3aa842b61095742acda96a56c8bfd55001031665bf602816f5466a63d8ca498776d397068f967b2be63c433ff5079599dbc779479a73b4d8a58b4cf0f093a51dcdb0f27886ec1c6d0afe21e611d1c285cb190496f0cedd99822406e9ec550e8875c8d14c919d093a46304ffb24dfdda6f73d19768eaacbbc61a385d63a57fd45ddae2e6ba5a3ddfddf410d53bf8ace5459768059fd734b31eea935f8163dd55d5e349fb7df5079e566ba8a03166ad241a6ffd7df32264e8fc6d404eec2e06e3aa3761ad429dd8ace7bdbfb4d4526879aa0f92a4c99c9605770e2b6757409e3f7558cad2942f3d032e1f3190e0edabc785c73e3dbafc5abf98d6ca578fbd4e64dc371ae84cb3be7789687951ad5f2613cf0957812696eaa43c93a9b242991307c9f7972ce4fac2b67f06c072178c55776ab81e514d1d4dd58a261dceae2b0224dbfb253eccd1dcc6a69a9a03acdb690321deae56fd4a9096b2f771a58f15cb096c449d8b30e95e67083593a7d637b2d6778150831666ef57fb6121194a717fb9e0ffc63e586230ab6e8423616f8105b4b40042d423d7eb4e65175dcbcb2145890cd55dd27926e658259c501aeca60f38c2c592fd65e74b9673d4ef078e747ed36437850134ef7ec238181bbda83112f98c86563080e7e1812ef9ae86ef79b0b875faa1e5e3aada3bbbc4ddbb12185bdf096c7ef2c528903a3e097ab414a872c970c46fd51adff4552196ca2043367c11883b3d324bb2aef9d8f7bad67176313dedae7519d51f62ce7678b8b74b562e2175d694aedaded42a1f1a135d64e995acebf0aee23489d9d00198b34a6fa2bb583f53e06778e5fe126b24fdbcc7a24ff5c6a872e0a62c38f2e4bae590b7d4aeaf7392bf5040a7cfaa99b2ada57b4634bb7ccea0dd5e9b8db1cc41f596ac37d2554e1883c35192c51b3c6f1d6d9e082a8d440db962e757ea12bdfe3ead7f68d63fe6f5a7b5d8fda18ec19e7598eca1bcbfd5779114ad73607e343652ffd0bee41bc6ade3e9d5af67f5ec1127ca1a1982c71c6965e29a091b0c66d5e23370160e0c01d97759fc69429c6c80222db221b1dc0562e361501c6be0ad4a8c54ffbcd415a0bab50e02728acabf8fd026d50827b9d4aecd81e586c5db050dd8d6951724c51bda56565bf313bdd3fc2ca86c4cbecc9301db723a25cf7ef3c88bd565b092c7aa9d5aa3da76521dd4b23fd5012cd5d1adff3e63fad2b777f74c50695ceff84aeeaad9998a1fac40edb248c70a2313ccb4ee22734a776a457c75b2093d5dc44cbf2a83d4dcb750329cdef4e65184a2e8814440e0e441e775b503bc05b9378ccc93db071a77b5b61873b93e011d8b016b93d0387fdc58da9e75114366f257653681c308893198f1457fc487788e0059f56059a544d34f976ba605ee9ecf03c7a0b77a48d5dc8af8529a03f99d5fa4fa44f578794ebd8fcd22150dc670ba3df68fc97ad3ab811a3f6aa57a242443e186f41e4ff46fa00fc1670d77c1813f55155fc6c3d5bfd048587d1e57aba7598117ec0635c3db1f9a664bade7737b0c98c1a70193678f54a3989ba75e676a4226b4a0d903edafda559597bd489b82a43863aabb78c838097a01fa80a8eda865cc46628fdb09a0084ddf44d3a74b0b812d477287cec6b7b2df3141bcad1d053e2a529ca0678e99534b90012840e823dd2378e8ecf96e68013ec341ea32ead2607f5b6d62fa68ee0c89647b4b8dca5c25c63823b3d6477d295d04dbeb82258750e9fee8c7fd1ef374033d6b3d687dc927b67fb1f51b2b4ec391b511d7a7fab3c784c5de9453be4bb24b9df830957c8ae073f7a47987a2cff10f9a465c272fac11412f3ae0a874d1af46f2aa932e2f9bd408dca63bad1142768eef5e8cadd58aeab31f3bc31a01987b537eb1f09075a48307843e3770f9a038ded4ecac563c3551455ddf4422b903cc339c4c03e10c352845e524c8ffad9e16bba171a76b15e34be9d629808258f0a5d52094d5409c6289ada86a714a1c212530e75deef4e11c18f7b14d6b687c71bdb96fd8062dc4b23e4cdfc5fe858d03eb061f843903476b18fa47832cbaf48dee8e611658ec576f679cac06bb036202e87e6b35a6697356e6f723ea90b5528fc4713d5352d5b1a5756ab4828a1c8161166b1f00896e9f17b060cab3f1b528b639f2557fd259ed5cce9276c42db671034b5db676e112e04d6f26c49b304fcd13bebf9c7849216dd07ea855dbee98f72b7e59728792f06b0c2d0d582545a97e1e1aa1e1093394a08db199b339ef10735b45cc5cb4b3b07cd3fa73669134b7f88aaa29ecac11c29c17b2a526324952f95f703d13216c0c29eed0b964d8e265dfd7feac521cddd0e8aea54978b418590a88182e12734e00f100755c207a082a4d8722107d26cc9c16e0dae7a9f5b96b7f7e18926702b86c75fbf60fb75662ebcdb5dab6566d5dbbb6f25d6d8dc32da832adeab5da76566d7dbb36a756db4c84625edceab90e4cd21121b2c115efd4ca0d9db4e56af5b7fdff8fba37db6edb58da401f885e8bf374d90441082211455614c7b9531485f300cee4d39f85aaafbaab414896f79f7df63937b608347aeeea1abfe22bb78e4b1a28bc8752c8d90f5e2554f188ab3e7b43010a6f4ecffdcd207934c3853ddbe0cc3238f82e748aa79e552aa65dce3fcc9eb05d96e74a471b9029d9cdf7b10caf6683daed1669235312fbc92c06ca95fd035f182bec08718633838baf8e20cad0b1ea6adbad378b849b0271640e9e69081f24d20774918a8776077c08a460cc33487e7d52ee54502e81618198db2e67d5497bd60d6bd842b93b6fd945041706dbb5ca4c05b97e77943e5d085e7bc531fb0be48b70e39af74cc4c8ce473c1b77464e493b03e0d0b8c16a1ab673b451c49b1e4335c4b7dd62cb691514fad4849ba3c8b52461e287f4e180ff8b254e63969bbe2340ed0ec275c0b8ff82e06328fe8ab68a0da287c8ba4342c2d50162fda3836f47adcd3ac35ec9dceb4f22e58c5815e9ae270da85f64b4810ff289166a221e0b9d8f4e766a3de0d65d5ede49899d2579bfb954f39de540885260c6488c4efb9fddcb71b81f2831a27f9a6a278e8ba9ed62e86170c764fb66e8ec515f5eccbc6f2e5d46f8beaabd19996e70eb806185a5790931c26421dd833cec3a43441ee4299c761d58b799a913154719ff579c7a84f443f686da63a25c721ca3a8e4773b753a06f994025a00a7f590b207e211bf7729cb1afbf4fdf24efc8bf497a591c49b1bb32f8dec43d2a8754772f22d4bc5ef508b7c6017f7014e72faae2d2f07b610e512f86e8914a20f22657c01fd5b9746c2ca1ab34133b5134b2bb2dab59e69ec63c61052ab9d2835ceb8cb4bfb2bcdcf2ba46e321e484bea00522cc099cf4ff9088c2be828cb5036592cbf4c0c095df4b062934fd6c7529e9c09a8d99c64a329ff4cef4fef522d776fed7bb077ef61efe605257d4403dbb63e55180f4c87fe82b80afd3f74e2cbe690ee52385835bbee3171ae3013c069fffaa773016d6018931277b0852dcd5ad0595bc9da9c122292d9e8e2877cd1ee0e9dd56e5a1abaad75afc617db92f26560aed81395d2c879451965cca5aa426f22bd90fe86b2d5ec7ac6a338a46a34af957fc8b52428a1b7f592b3430dc53c332ff14b3113de10ca30efe153c2f4ad4aef789a3dbce329e6541794f931343ef7eb6d9e7dbe3b11c1258c9c1e769b2b91bd74355921ecae6874841e7a67bf7846840d6a0ee0943284d215be2e895bd263e5de3140ebd3c0615eace70021e45036a71f518834eacff22e76f83fa7c99dfbb63955913bfb7de08a55dab0555388e259016eb4177df7630e42c0df2c2d1648a4a7b95b2a887f10ddf1b8cdfd99b4418cda6c88d86e20f4101b72645fb425d6e658b2e7cea667b9fee94e490de5caa5a1982a06d8d27b66e891ca715c666bd964c270b4d3c91d8314ccca4c29a6e5211c48623c25c9b5ce774719e608780390c5df76625ec6a62fabe1afc581e149b6e6847814a78341e460763229d1a94483b026b6f1e219561ee19a4bdac0159c3bbf199386f61caf1d6204bcf4b67829470d93b52abfb34ca18b8a614b0e5f02630cda5bbe2d12a8b284f2e4b8c46c571cc0608cc7bccd3765ad554ccb700adb6296b307af662b124951f7fcbe8bb94638e715a0aba6f53bb02d35bc80bb590060e8c8aa46a8161da561931bc94c8892fd176521b51a7435d99b250255d75c0299df97b8c89d13f49ba756d95081c09c392982b872f377afd902fc651640c938ed182db3bdf555c854f961a7d2b11e7770def8268b58e766d901fb0fd260d4d84240b34d19a69cb1c4cd4a90c31af9c32ab1131399fa677ab643ea9d0e80c9bbcd9073d59016b80dcf1fdbd31965ff0d4d659cb858c93d76c34d0fb39287326298b33a8ede6e82a3996cb126f5fbc1acc709ddbd1c9d2ed6206caaabde79468eef3b07859b117a314e72c5f30efd9715e7ee98ad5d6e762657e28a26233ce0d0645b9d08e711aa09720640528ce61ba36a031566c25abf064eacb5126226f72072ce4e5cc190abdcef56ffcbb29f312facda9a8cd958ccc9b6e5143763b86492f2a46d43dd716ee6f37bd15405a699a873720634a880bd9ec6ac9c6873a133b2b7e6e05e51a8fb4e2152d45450a8fc4e2192ea6b2834f9a5b810f913365068f64e21aaa985428b8f0a755068f54e211a5d098536ef1422ccd7f1840b6d3feaf81485f61ff5698e42c7770a9163e51285ce1f155a4fb433e3ace4405f43615c99525fc723f1df9463eb2123117fbfeed960d3d398f9a733f023b2df43f59b0441fbad389f8d612e93c69e5c03dfa127321ae40a92031b4b805cdc55567d26f3884f5380185a36257e5e1a3cf438f7aad8c338d93e3d805aff4d7e47ef1458da07892d11a127dbf128df790fe68b579f9d5ffd5add8348057f2108598818255103e3d1de301d9acf58545d20ecabf3cdb9656262e4c619aa6258e710eb8cb6e793c4b1f1b15d2bcbd3a1586535728cf951c6ecc870abca163049e2dac16fbadce1b6ca7b20349cb082b843ec8efa7854081f121a1bb7909b63f63a042c44fe9f47fb17b3aa96a007ce31c9e9613469177ea3311ed1f65ce1da802db9351e915161568626a134ba9db1c0d4762a724724f586f50a425a24acf4f485ba3ae3a0a6715f3b03479cb73754aaaf47a76e4be5f268f35c2fc52fe991785d6847c609f386319970d83bdda2a21197279c0d75172dbf28251f7b9af5894f3db320b186f752369379ef50b8825ace96063fc175d3f9dd2a109a134ec3af61544f522e727a86c88c913cf85a430e8d7470236d867e5c524459acc99172928011a6f3354503b1237ab175e362bbe96592d059b94e137a0af9a83249d8bcd91ef373aebf26f597dbc07547c47fe3c4b6ecf3e9ceb3d34eff141585f3bdae8cdcb0bf1c68a91696e81973aef53c9ca088d0d6c113e17fe61a527f8620c260e784e6cb2972e137bab6420eca6b672b7d246de31677da560560dacf282e32ed17b7f4b3fdde3e888095753fe4fcbaffce648c13ca7bd7fb7727daeb7025f8373b4c97e5bf30a75c5be75fad6dfd2fd5e64d1f59a28ed8789cc3d66933ae9351dee44fcf4fc7fe9757b3445cf6fcc254ac3a19bd4b34b4d58ba8f0155a8beb081266a44ea93d0989349ef6f2f7e1fa3b6b175f9c2add8b0c63d8357cf6ac7922fbe7b39ee0d900bab40f7d94005a0a93432ad12c9bde4f7c6c8114dc60ea3b8bf404e0c4eb9fc23a01fc5459441f7c009b065c061bed102bf8cdf4cd6602a0235eedda2f0e448b7af12c8116f47b686a138694ac7fb88a22df4539f1f059839f3c78e34a14eb00a20c6c128419b9df0f80982197be7a28d19e056f94811f8ace79684e5348b6d3c4ebba98c2daf05cd22ed476580fb239db609d0e1c30c7519513614312106208a813b67ee4dfd7f07e81f763bc5f2ce018c41cca128f57582b8e6097b2fae197d89c22d3c21a65f7e6503a9d8f504b57b067ced62c8d5ad3d48aafcb89038f11071b37479d312edb23f681a0321f63e7df3cd9aae3285fe24052ad197f1629293c956b4fdffb9618b4c6b8f7d901b31dbe3f1ead57b026e6985b7f901e6dbe3ba3abe89a14b0693e22b133611ab498258a8ce898d9a2d95b53dcadec950e2c0b939cc417582706ef1f67dc348a4fb6ae0b6378c54ca6ee2cde041658cfe46324fcb831cd830d80372f13a788faab354de0a74a5ce572a454e95b0653e3f87b014c24b3fc3796473105f32923fd907357ac2f8acd471df50c70e9ab733f04b4003d0a4cfbd5957e542333a6798c0a7f6763cae8e31569a86415d8ad017b6cccd607ce892dbfd673172ba34706d71f0acc98310f7a9925d4e3768799cf4e87034320207223973f79ef3f0b85b35046f41c8fa4ff4c78308871c016110a2801737ef4a613c229f8fc23a73eaa5c06dea5cb6ead02e8eba2c767500be51668392b6a29b770329f6a2a29bf7da08e090d5330c777880bfe96bff5ed9537d4a62cc64987020fbfd6f3bb7c214b55b06a43f5ee51bf8b3ff8eed104eca0d3d4815574faee288251a8812537e4083fc3694f5c0ee512049cebd4bf28b1e079d2872fc9f1e4079fce37236fbed357e7a583b3922dff537e0b65e780ea9fa1dee914b01f6d21b453a2ea9153781bf214cd5ff4560191ebfdb3cd3de08683a5fdbb603330b97ed1f36c11d91edd5692db24c83d0ae491777dc9198d985a741c7a8c3659604fb84d85c3afb51c47641d7d252c6d8263ca5fa2dd7ba2a950f6746d30ab7d944df1383fe7d96addac813c70d4d3fa73d43ba1b769d1ceee182908ef6e58b867ec727d53d18232c2d68973d0ce26c0926c3a646ee76d25cd623ea80680ebe9c936668bb68f706bcc0a963691d7775d09bf2b0fcc97ca2c40aab70f25c042e11898e1e38e781364d33f79f8595999c49cdde03382e87fb31b7342315b073fa11df8975aae50cbb57f5d7a4c07886601a83f2e4feb5834191538977e73bea54bed5bdac9f9960a34438579d876e1ee47e27e8b3dc9d907c62d76a7ee449836628c0a2a20c04d27790566b940484d83fdaa6b889e5cb59cf156022ba745ae3b9ef43c993133b886e7cca6a92254a733fe7e361b891a56ac707d83ec7c5504d35b4651acedf87631cb5ddeaf7ad96f5484a55922729317f1f50badcc033b3c131fce2e24bf52237d61a9f00d8bbe7b8c4dc9d027d09ccb853f61732bdcde2aa19d12be8f7804e09ab13625b8ce94c9f147586b0cf6387b87fe3dab40d8f56c640d11c61c413a77f8bf0aa6a7b419aac12e5b3dd901322ea9085d60a5fd79e6ec1d42e8acb9df572c3ca8051e3823eb331fb4fcaabde4574d3e6d537ff1f16e9e6010ef7c1e19e324eac29a8e3d336eb35059e231cd42d7f74c36752ef8a8a53a89edc33753414cc174dd77277ec6eaef29cfceb4c7f3f31b47b28c7ede293a74ceb0bb96c4f7f2301a258e7fd87442e7cba3fe14682c9bff036977246347f6db39dc0054927a7f5ac5370bfaa46a5a737edcd91fdc2ff0e91b441fc04851017b7784e1a133e103278608d1d157f1fb3261317e93f66fba6dbd4d005679b66c29c91d5fa55756ecd87c97478faea3ad09a30db727093d5ebb504eeb9d75c1a998492f6f11f5860ebe18ea806dcf191b1b08cdc3ab8ba8eb1738d6bb2940c1bf518464a2bbded888a46bbd0764eb7d2306fc823915b3821794328d5cacd3787a27fc63682e5e24472cf41d4e5fcf36033bfe4cf80c789e5cab7981c5ecd10b7da3f63648803b5e80099f2c12ffc166ced10d1d1cc6ee6ca488b3828cc81a4fe723e77d3470de0a0a922dd07fc6857f46147249d4e670e7e6eb70bcd3715e3ffc3329f873035b189e3fc99f03176ad677052a2df8dc3307de6c0d5db193ae6953ea3b52d15ede849ab596c8add8162bdf82694b46b642b8b711243cdc5db2bb9cfc56f19ecb872674116d9b8533589b5b13f99a6a10b3f13241358916c9e92e9cc31d99d63980872475ee3cb766cba1835dae61431c17891373d68b4438f4d0bcb84e6e3fee64aa3b39432797b79d3ca2278ddb4e5e0b3bd94027cfba93a974f2d1447084e7fce1fba3da66cbd39dcb76b669ddeb7d64577fddba779b2750c069c5dbcefbf3bbfbf3598e7ca04ffc37f973f180d8a9378afde230a68cef1c3fb842abf70a4d1ff807055e49a169cf95a2f0a8b92ab52d2a55ca24efe583eb60951b4f198b70fff09f5d92f4d50129d7c63d6b6395fc592f2a21d79b03d2885c80bc2847d309fbf96da103a99459d0db836384399c49243b5687ee6a5a4b168b3223b6a17b783bbd30a2c8e6c4743285d1768bdf8d05ebd7b6eb3b7bb70fd9455e6bb7f35dac219f21205337ad9153fd9d14bc31e2a8031900a6b012f85c83fdd13cf4dd8f890ecb222f4fdcf8caa307a80f0db9fbb7c891b6eb83c3fd46414500d86c8b4c4261b31d87f67261980fdb00d633762d9c704faf767e0b3c9dcd5c0bbcf5ead2c237135c595e6f95113a94b82c9bb2c053400275ebd96c7ecb06f8bb5d7c85b390fac533f62c56fa1574b884b8e4ea945b9484749ac1a054082f6cfd3f8522b03ba8ed3d5f2b950343ef4a7ae7ec36a068d0250bb1360417554bd3fb332443a494f6833b8a9b9e767814dd941dc6c96f24f0ce0a1d3c81ab48efc11a20054de412e5ad9d067e98ade59df0486dfeb626e2756842735d653fee05108436713ced51cf80c7dea9ebf50936bd0ba558a2ba07a800b55d804bdce504c9d31e030f4b4d2954875b5235059bde750d4165680c7392175497551b99e04fe997079b65cc32cd7f28fdb8e0c32ebab2c4765921f22cedb90fb3b2436318b39d659955ca4e77c8fa886416d87aad452231e5c6ec97239b2fe0b68b36a6d16f3f92cd4cd8b6ceab6e4473992a392454a6ef710f21d92b4aa942a943fa3601481d23afcc132235e50e9fb9ee9abd3ed1e28539ea9906bf1d5bdce31b34326e77d217136541bbd847955571bb706d42d6b959a8db45f821bbe6fbed3ad4326b597f30e6b50ac8b2149fb65b92fcca4a50ec9d1cf9ae5f0865dc532dc054ab02534deadaca34f49d3cdbb8056192105368894a6356571d9739d9f8c1460228a127d60273e882c4c35c38df83759a16fcd31528f02aef5705bd4f6909fd7ebe1f7450f0b5df4931a0932b4151424632d335fd17a129f2b39610009d50d2798d3fe9779b3f5dbf3422dd132f09eda59ee033c04ba4eae2a38091d4c861d9f1c6a8630631dc8c271dfa595c840213187e6e567426c3d833c6860a1d49408a04320695549705329ba078500938bf2e47c2a09a4b6fb1026b9fc92dc1b5e772f57d33419451246667911df6b04a248b12bb6e3e1fbd0a7e679c725bc9234975f61b00e2c837d35520bb52145e63e0d0e8c15496233bc25821aa3f9893c0016da1ea5942a138845ff13e14a9fa5d4533cf87e40e40cf94426ba7e677a85affe6a20995ca19096ef25606d9888f592b975e36af578fa6cb0dbb983127f8bbb026b126f8160bb40d59c4852c438b8a9d56624b5013c1257fb300614124ab7f3b0a4f8513636abd2a052946c8591e59e250f1b2dc4e98dcac70dc250532d8c1d8ed152a3e5e275ef12defc70a2ffc78919034d5de5a37e708a61800e466f3f12479ae8ca9f045309fdd38b780c82604411498a0198442e4b0267905990cbb4659800bc65dbfaa60968cbbb2aa878ad77ea0da073ab08ca2ce51daa283a39a240f66561453d5ea796c163bd0a222a9a3461911418d45cfe2c28b647496d1a435bf78a36bfedce8a41b13af936e7495c6e746876969e4268d2a923a64749305ef93e59fc29446762f74c68ce45cc5894c5f65d3c4c0c58fd5ce594122db6cad7639b02f6b57568554bbac242d6d7cbf1b26123151e880e2b69139f4bbec264d4662620f02132c7a9e722ba36f4399ef19d2be5ba2f7601f7af4790d8de246a460fc5efccda1e71c95993d7d3666da27a6115031b9707ca60a8931dfa543198ff494b1aa8109ce5cb8aae9b73dbbf33e6bbeff166a1858ee60dea7538a82598da4299927d2bd500a05721170b331646862cef670fefae356b159da0e24bc2030ad85a7f178f5351edb458162b474be733a859544169c9c4cb95cb1f66cb501cfb0b9e3980ba43ae9df2a0f2fe7beb48d9bea3486fe7bf5eeb56b4cad8b339b98010bd1f56edf5d193060ae46823a65cc629df86b187b898943b19e8bded9e5b305cb34d43c9d40b9ac46efa8849fa40a6cd4ef4ec5aab4c32ff902aa86581667bf4191d7ec9ce91f5037e83c90e4aaa9e164d60a1d3e90dd1b98d61a7429134e9bfac732747f7b3d8ee4dbd3bce8db6faed093fb332e7cfacdafd0e276da3f6fa62b321e30942ef0e4ff395ddfb9b90bfebb7f263ffaf3d9fd99757e857404e43eb0465683e3e0f6582ca6a1ec0597263df2b3a87b31b09cac6609a6e0b81a49b97c126b4172c017da0abcece5e395210a8bb60cbb3d3b99188531d334f08038564b65fd3352953528f9291c77f0115fad47f658133f4656fce3b5ef94b95f7fc23e50faee1e975af7ee4723d27683695f85c30ab559f674bf49e4398c1441428013132049bfdb456cd8bcf789418bbe5e6aa0805b4e2743b52d96e1a7bbf29949ceb737ccb8832defbd7a78ab689f57381c5e5d07d5822dbaae78669f57f7a705272c978785eb1316aee5c159758626343b6eb3bb2ab889d6ed3e77912c3eb57ee14d560386dce0768897ca9dc8a1c6b437be2d8404830d9061d83ab46109a5b381cd31a299b135940b6a2879359451c338450d14739cf2c3698a7b4a555b6c87e0608d5ff9e462aee8ef83fabb56eb3948b14a3f9bae5f65e3aae82ccfabe4987ee0b179d639d3372ea979df8658bb44721cc461cc19290e7f7797e94287b09f1a057e3cb312abdce625761a58000a85229352e072b2af3a32a08c0190b6d9b26d6aba85349402b70a57fb1ccfbb73de0d1b8133bf1c0944fbfb8d07d301351c53eb92139a357e542fa3cf7d40b373491597507ea2b5ae313ec0f04ba927f55453c8d85317bcbbc3a7fb74944fd07b4a47a4232a3ffd67869ed626b155db77d0243337fea0e215de6cbc04484f1be22a177d35c096b28eed7224120e1dc1ebcd0678482bfdda9abd9b13563996db20ec0ea94a61f3f1bfafb9a7045c7145d2daf94debafaee45be19f59a92a8c96a9d7fb79be2899e1b618cac12b4bde490f8e9d0cf27f4e80503bb9cb7d3585afcb0c056a5ebd19f750478bad597ef2da70df69dccefab34c7d135fcfbda93fa90c3f6b95f367ee068abf69e80b3016bb85ae24e303f7b08893bbdc90c9c3aec1e8b8e5969f5a43908e3f40a98b4d483a9dc81c707407b071957a1672294fc5dae907224387a86cd651de634c024253105a10a88dbcdcb040bb5fb2eb596d6a174ef2714845ee6c4287f926412115d2e1fd5385d4d667c97a68faa27e51df5e5696cf34e60ad9f600efc3c65771de0e4c1934fbbd1e42150f6fc3662ba3a941c47aeff02ea79287f2353feaf69a0ee2a93717ce3530c136d0f8f5ba78da51d787c50a2c392c21225cab3bdace4df8b8883d6bbc1d318a096599dfc0a3e7cd7e431a8a45eca43cd1cc64ff8cfb304121bde682b37abeb5a006c9fa5de6e96f02e6708a8498db12dc480ecca2ccf71151d47643520b86cefcbb0260386c2e488079c5ff17d8bb5a0898d9d7472e0bdb72633d25b16b8f2ca457af05993e34d842ac228796e067eab819e6d0d0f2a6398e63715e9264d8ce8275992309449b27c0e6cf72905fa87cb32d6007fe273daaa0f245ae47026f36e618cf95f75a7099403956f9d1640f5b5b8514463dbd82301c9a08502168a4987d13c832260442ced4a412b2e658f3fdd08eb1ee105af7c504f75942721f38d234711ca936868c77f04e5b2774d027c871b3639f86c996b924e1c41a6bc60b679f31c1619aefd838c0e42ef014e60f26182a2b7230e2a3e7aa96e3265556b67e65db0e60e763268281595679e50e89a6c4c38cec8d8c3ade9257074b220db173c6ea4e516a3cece6a81c2812bfdca5899dca47f5bbbc62f3d0f26f86d0a3b5d88e6eb860e5f846cce8750d8efc1f0eba9af624de072776be832ff776e47ca104b3c959ee8c6117800bf27a6c19d5f1885167bf63f2821e5a5fe8ad7a67c3420605af6c165392c8a41f8021e644e5e430180154c86957add7f7d845bebda9889fed5bb69b1982ee4834f1ceda3af1de66372c817bac6e71e50e8d79e445a96d0984e36b1da3cc7e7f134b6b7d3b729ee2625d6ade929b88b6f19d83df580e547b482a6dafaff005942342a63967d1bceed98fc8e57b5f3503efde119352edc09866ed6b4caaa8ca3f568488ac21fa51849fc05c5e305c8e4fdb6c91d3a91dd8bb31b2667e3eac9176dee049fbae7bfe8fd2f1a4cb81430bdf2ee1b6400f053a197379029ac7a5daa389be56ad875184ca64fa1654cf230417621860b9ea620dc625b60435018e9deee8288d832dc88fec86d296d306ccc92ab4089dc2f4082c56268b9657d871986e7332726102438e6464c7df51e3263928f5be949dc2a0dcb3d19ebbec22edd3e6d7d24ed642c61d4d2e48bb40e37871fbad05c23adbbdc3277e0a4ff1c1c129c2b1db6aea94f22c3130653a650c3d7afcd4a317efd18371108d51bead8c244d7ba6e643a5178db0424b1910a3a899bdf58e5173cefbc43b18e98e254c9eb37d626f7d32fa6d7b5fdecc5690de7081ef77b993fc94f39518bef33bf299e0529dcf62bd11e45fd51aac333a54ee6f9a64e182af439a30c920896fceb39e17c59476ee188a8de96ce7ce3ea5eb60d68dbf24661d99f99ead555dcc5c36f857ca1344da9dcdaea7788967150f9aeec5776320978f3b117c5177563d77db557dab7669c527b9aef1a425c44482ec4b4b4edbb5dafb0005e3d580738241f7c41ae549df237a9b39efb8bfb3a2c85faa089fae8f57dc98768d612b9b0c7d5439b3af60f7c2ecf3e570673d579bc3eb8e2f81cb8e0319b90f3beea99865f394176e3cf3494f757c33efd9f9228c0ee42f6af75c8cbeb1b3c602c847f548a9c592336f032b6a5de5619c912176d2d74a93367f33e6872bed6bb50443b9c11e69ce94ce05596a36b9222ea75124ae6b180902232a3bd61756b1c96b3b66a21698c1358788031bb3b163cc8115ded69aec78bf11950f6a2ba798ff3ff4d79d1d5bef265b7ebb6bb0436976a1d1122ed87fb756e71bb5dc8ea50ff0fe296ab3b40328c00ad5c209cb4a7d7bbe0e9a38291657a2caf7d01eeb50629cccf21fb66fcfeab24dbbec6d5b87c5fcb6b4ee936e73c8e2d9c0b9c5b97cc938246f0297356d67dc6ac06ece33dc0f19a97a06a90a9d1f1ed182ca3fec92cfaa9fcb9ef7e11519291a5d4e005366ef8e7609e4f8147df96e12ee15ab7c259d2e67b9df3fcaaf4713caaf2fceafcecb65675ee7046c15b47b4568cf3492192308a4c0a36d7601ad99ebef8167b1b58f587b7342a07829725cf6fac08c691bc8b5362fcbb33ba312faf592491a6715f455df0c9d449456ee7f22d2733ac867119996551ec12218f4e01d50ebe3fe33f818253e04199b143b5861bed75ebc8b2adb18747ece8a81b874fa622c34c6bac8d1452b5705a9d6964e175c5b31bbb6e8d92bc56eb46e89d1ad3b25a62c7c2704a6b960f2dbc2f3ec4e7835413411afdec00477cb55c654f6a315bbcb5a42bf15c76cdc76c10d9d1ff74c701762511842192ed174f78809638ba7e96a008be87732b9f1d31d950dcd034f1ecb910d2099aeec6418d3c20f79f84e846eca9cba6ca6d606b9edd5b2c60a4ae3c9b15af00bbf5c103ec626d2158517491ed0bdd2e577d92befc4f8c7d7df7f4a111fb0fb4e5f3ccb0ae21e68e3fde536d686bde2964dde589920132318e2153ecf6676e498c395624970b531283a907744524ed9b80c7fb7b528b27e97e43799c896580a7300863daf1c3bddbe9e7a4a3558e833153a1468eca97f68875d9aac1c12cfb14a2376bdaeca0f9b189e8c117136042b252071f50a11c99172ddfb2e40c0ab4f847f866652ea4be86b603a081ade96468ebb877e760b5ca129375d95cb56b43607f8604215c2761bab90d7d903540e012e30e6f89e588ddada1f5eed3f0fbe7731f238ac344f1102c797f90ad7136daaa17a92828fa3acd001e0631d7c5cf5a82262e42d3e86da60a5754f52ef055199b04f833b43396ead3470239ab87cc68d2b54aa9501a2f680370f5daf723a4dec3c0863dc409637aef6c11c0eccb71fb126a50d9c14587458dec37cdb53481ea29bc0416fee3f422e43e492d8414b7dba92eb7325e42bbe826f59e7f1bcc469b23eaa70792600f359a0f1b034ead8d013912d16956300843056ffb10c00f9d68b461e150375855ca514c713412c50303af2385d7376aa0d84411016fdfa09af13c72d6b454b566cb7461ed3ecdc455f0213df5118cb1e8107ac48ec485224b6f46e1c3e57a8e71043464f30620711dfe68d81d7a01cdf386c790e1b7046232ce0089758ef1331be0766764cbc71a04c26db4da1628b9154e8e033b12839ddf1b4edf73c402fa32cf4145b966a2e874458a5582bfacafb02f026053f76d90f19a1bf89ec9e4476da2f76423ddcae71e0b0b9d21705da55f9856f9bc81d1207daf266f133703f1e3ec1281136160eeb1ac2661eb6eb817173629cd0ef72e1a71d4460c0b99495457ff15df0c497d3131f07a7379b33024bedc57dd2fecb0956ba7f96b358236e804871217c1747befd62b7a45d9ecb9afb38fb68323ec6bc12d82c85d0f42a5356da20c14864cc2dd2d52d28d17aae86a5e6f9d5a1f0006fe71da81d7e1c381c436fe72b389ef6ab8291380299f0f081017659b9e338a20a9be46e2198de142a900659da0e4c0d615601b4da953bb20ddcab745f0899bbb0c7c7760d4be69ad5b322c3f0db3fc0965cac8031ff9d8f019286d6fad9056acc849d3ba631de32644b6dc83fffa65f6fdca7c9d72f4353029b33fdea1899b3e47821d3f5e58c58d054398d767a3e4e40fde061a446d692bf0cac65bf16588cbf5d60b326c143ac99df8e1ea0c7d4258daae1832396901d526c491b28147aef42b1fbb04abd7518b9cc373ca42ed59b048a73425ffa1e892c1d5867c12e4aa138b766b49459aff111d9958f74a9a46176616cb38277e67264135abbe2a7cb27942d84ea03dccf22418846fe227b9612d6d67a75689361bea8bb07c8c75b477a182e10214a07dcdf61474172bfcb479d66c88a9bd6c0be7f35ffc038b363f7b500026ed6f5ee31b9e12f42078a7d3af0952a9fd8e41e8be3e8465b979830629dc5b8c7b2e5521c2d8f05a650e3989542bf2f36e0481ccc72e085ccad8f230754dedc20ba738f5c9bdf4ddf5cf64c775a9b012dc8ec941007e9d3054374c17235f39332cfee1b7d9cd45085f5dfe66ed27f3fb93f5fdd9f5355e2c5de80879e2bbe1138afd079e0dd54f3bdf0a9bd52c7e79efbb07c52b5d74e3df77167a93a3159a9baceba58f6cd9bfe66dcd31fb921795fa9eea8fe6efe747da94f15c8cdb813ea29537fda73ddeda81fa54ea0a7e9a570425e8a27febd257bcb7d497eb6350849959e98ade0927a7c07b9e9455feecb5ede81df329836e590b552294343a4b660463bdec023c7ca69797fb450ba4e02294d591d5d9ef6845d95083c54573fe65c151ed19921d85012a03947fe6c771365c87de9c077dc1d5aa1177cb5e247777e27d8a08181d78b90bd74e0f169321d37a0d280b1096e106ee7e93d93b879df8a26d1ad50c08f573db3e9e960d14e8d67af59bf75a5bc6086cbfaddfe3b94ed9a7768208099af945f3cd7d34be472ecb7d60037c322c8da666bf86052205035d0eef9a882c0b27b42ea2153677f725209dc3613f5233d2be13d10412d9756ce1668d67bae487971e70a35ba2ae15cfb32742d9496aab9d36f0a55a21bba4f0ed5916e11fe041e87b13df93701d45b76cf8f9cfbbfcd15b6e9b9f0f84c6816c1a392133c8c81f1d8e2c77a25998ddf0fbd4a170ffc055d6f08ffb4420d035be08b5b51e7c57d32ddc11c44a77a064b923cdd3c4ab704f40eb9c457cd5cc6d6479db08cb5f85f5a3d974d7a7eb66038c6ec4fe0d652e54739567ff3bf94a0c82b539060fa70023f76ca097cfa661e938eb84f6e28a1b9b19c4a14b24dafa7d3edc540f27c33a1b99e11d30857b76663e414155fad8c3d859ee236601f8e753d6d238376e1abcafc26e4687147d4eb8d3a278a0ba11b2e1bb5718ab81af494ac57d8de780d677cd05a3c7b1e5519fbf0413d14abe778ab92414e00e301eb8a52bcbd88aa6c0d00952bd481d2ab7a6af3ccb87e3968eeeff6990dab9fb759b1786e3169632bc014890b66507e517d91edaec091332a473613e353a27373de1a373c8b46f3f40e8241e477f5c5fa39eb40cc52ed4e0e8c38e5b560e4c9d7bbecddc206467242f3d0031e4999f7144d297eeaa8c1431135f0a84af6f4d4034e2758caf15c475134e7f78c5e4aebdd921c6b9c7d6b710fbf7c8a1d58dc43b8050ed621c9e8984cf6068fd3439235d9e87910e6e79176a0a45342e283b9f4dadb916639bcc31be70eefb309ae3d7b7a450079504e408cf306d0d4ed6db3ccc49b1389353fd1ecf907cd12b7b20f9cf7cf54a6322ab0b0d5395d6ff38a8480b4d9cf7cd71ccfb03db45983d3aa7245017ce5dcdf60e52c7a28c7d79bb6e7471b9af925211f6bee9c5f7d60ae30b84873db4ee046b4bea88446a89e1db11a7c3397aaf7e4a37e56ef8e8d58b467a119d7eead8e3fd49abceaf913a13608dd9ab718979addaa182b9b3df8283a4a58bf8befb7c3c9950594abc5b35bba245f3aa40b4769aa8769fcf89a7ca90462969a9c126d9772902b4b38cf207a5db4c930c19c2dc2502461e313d67b88769c73411b73fafea5a17b6299b9f38813efaccec917858c4b51c142212b43c9fcdeb7b0c2b1ca305b4d63e5f085f3d0c67968008e38a681de43e56039a3311b12bb9f2b3de5d2e573b120b283253cdb31cf76c71873ac594886c0341a82c24c5ba3c20d5f00c38cb4815491cc03c2e2269777c41f2d0bf81bc2ba3ffaa6c9ddf61e16268e0bdd428d764432593eee6bce23467b9f6d100351ef6725e73d1399e69e136b023d4ef03c48ad0d0ce43dc04bd950db73083c232b98bdac179e8585ed9fe915ae7b978f348c344ed8a6ca4de6813b97e44b2db0596aa15ffbdbae4d460bd63035beb70ce4114beb18a83d59c1115ffdfc5a04742e230f6b81411422ed64002a945fecf4c2b3d8c601daf1f935a68b0727f49c15ad6ee73a322ae38c73a505c331b7f5888bc3d6fb80d1d8cbea8c7b3e852bcc540eef4fd658ed7aacc22ba19563c1a4864a3e85efe065c957c276d9f3b2b5ed7e6359fd1279c9dde6405558c041bcf10f4b38ff30621bcb695596980e807b3b36e114ce82eb8cffcbd6c6469d362fc8d0d3545a917a93eba9895f5756b29e72ff5a1700145e39210863c0667b954f212acca87626d396f13ba3d4946efbcabfa7d7c445decef0b07365c4ff2e7948daa92a2d13a5950280d2fcca9efd0b7cbb44032bfc5ee33da36ee2617618a99b5b3cc836a0d5deecf1b0b2b4e03a38301b760a5a547ee01c41019238f01fef03d1ad5410e97185fcf26c6f87c5b84757e85ca4d0ed5d46adde60c95a21e1c3f5139732031a7dcfb6f21fc82a346639a2025a2f234b97bce4024d22fb1e71fb88c7af5cd969ad53620ddd19433d5dd84d6f0273a1a0c9fb61dd92ad52105784ae338131a60ec7b9ce7880f0303eed0253257d9fee076a27ba512f2703d92ec6ac109879da0f9cb3ea19fd3bec072e88e388873b299950667c80f7ed07e0b031df99e043a2f015252a7b76665da0c0fcca7ea355bc9f2045fe23644cb2fcc08131dd7330701bf3d8ba8c4818dbe2db25ded7f1be86f72bbc5f631c4dbc6f5cd82f7a83f773e97d15052a17f47e21839eb0b34217b8639d25e3e2ee317db31da7ac3836618d6a926bbb99ee78ad666d76f33ff2521e18a97fda1e2896668fa090ebfbe72274c2f8b297774295a0c7be40ca485a729d7b7d09762b3b504307be990d6edc671b063c54e5cd8331bb60ee7e30efbc678fb28e2400cf5e9c7e632e0b73b6edb0d340756d7b1c323b1949686c69ac92ddaef9f3f2dee2521acd8ae6bfade96f4f3ff76d437f3b41b2d8796528a2813155d854ad7742e8fc784b6726a567a67a93b10f888c386a5b2d7216eecf2af011fd48c7ca1ab8fd4c3f725d587117b67e174e82e7f1832e3c9a406525f4f1021f8ad3278f913e7955b28c1d4cca7335ae39c6b591526151a9354aed3fac6b8752e70f4b1d50eaaa4b2d2c7290f829d089082d07fb9d359a2f2c2227cc5fcac1eb807bda085198dddd2e45e076c3c58715851b22f06099ac75709df242c04f403496b8eaf61f9c7f2f05beb75742754969e8bcc0b6c98456bc20e47e0539387ed8284dcce8b38d3acf79054c29290ed90eb01afb17e206cc520ea38612a1b9a7b28d0b472272e4b9602451de19a870041cc83aeefd78d62e68eb5ad8d663d6d6af769bc83662e00bb4050735df5d8d09f3bd6628babf15f646ea16e062d25234be324789b8ca52ca97604d3241380c973afa5dbb8e1857ea5849d44c62233673ac930df2bf8e1cbbc93cfac18f3beac8e54f6ff7c56f8de9a281d2159104f58acfa9e4a3d1ed97d58aaf60f06a88df7b418390c1a91a22611aa715d1457c62e46d61642a68a29b6b3b7b31ed198da4597d6fa216555fd3837e07e67860c6e1dda9c8be8c5d0ec4fcb8f9385513f056857393b5e10ead450aa88cd8d5f498ebdbbaa257b7991b123e3366854944716326d58f57d77e59c6da7cb5544c458fe8dade5f50519baa0cc1e18fa4004c69cca44276ed0696528ea9e85b436ed6db437676b2de264aeddef49c4dd1bbc9471db0a7b992f8338ee477d584e7bb0e461e76984a05cf17500e4051d7a990fb22305daff848698c25557fec10ff75befda1838b69f71c38ac72928c15f266361f89b50a3bd234af26ac866f83b66f7bde15c87200a669097abcaae400132215bf79a86537750c74b2638f1c85ac37a2d5699aef84261dfc29d188d977a4c6a25fabbac3761f1698c93562b475ffe44207ccd912478e397a4c4b73c33ad0433a74ca93162c26e7cac777bacd31fc68c55b66f7fbb9739d4936bb9ed88744be2998845a30f17456f5c03afd5c80e5481f87dc665e99d580040535b4632389a0ed71d65a555604cc8e2af5cc1cb077ac559ff4546e12310e3c39e3859c7996aa39e905a31687e6741ddadc9ad9c57eab5c8870334b558e2c957184c6b584966325570b1dc8be99d500e25983d744cd11b9ac6d1c80e58afd2cce483761cfad629763256ba4b31ea2a0f834ec1b0c24d15a21571936c291ed8aa2de9854479689ca5aaf0995633491ffc5c81b0bd6bf350ebc686754f33f9a914a6504ef307219c901abc851f7676275c4513f0e68262618e9b4c633b1c5fbdd5190e4dc55162b443401ee691d862c321167564df243063ec782075c9d73df3afba070c01b2653665df347ec41d5d7d0b555f5b34a81d045e5547aa69f0949ce441398e92b9fb70d2a5c577100cf981cc0eeb35219491c9e8949ff1d7f3f835322336c8505d0d9c4c599901614e07e920769d973e6950b1480db823179daf5c81a71c1b09cf8ca179f4ff1b2a684618f9984f72b2ccbf5f230bf38958b43788b1decb7880d6d700a2934f39e1dc19876d3cbd441cfb4eb44ed7a87034b7557b8f31d54269641440d64e3c8aed0cdc5bb9abd75458c31509284663344016ef4e50eda396a7237b00f9382dfb405e561adcc917eb52a8b63556c49d130969b2ccac28c5b8552b85e71f8341f99ff1667eb3c116aebdf04ebe749bdd8fdfb0f36384dc4a4e7bde771896e4b06d62985cc7474e1a7943d20d7a41d14b656154ddff1e25576f1977940115fb17d409ed47b1c28f9ead1b64dd1bf5b64abc4de594d7ae80eec2f76f2ad417b9c021af607c3d56e379846b12f55e1d2539bb03feb7a167956db4e3a00264da8f68ee312e7d0fc79e15af54bc1910a8a4f53e84ecfee2f9a88038c9dd9d9a2f08ecba70e95c478a3965a75e49d96cd1b5161f044a1c30ccb9893b78ceaf3993c576df950e50b5248f7919bcca2d921288c75462ccb276f1a4adbf84b23bb4e52b809e5f9386087358005ffd112bcd94d27e737ab9ddde658a64d637c1cc3ef8585643c5e6f63b8b5d0e3cd961f5fd29835785d3c48fd714a25035b9a1e5cd3dce7fe63db9834b3e69930e6ba63d3a36a4600c1bd23d00599b5fd20fd3cbcc8bd7534ffda3a8e9db15b367ba303cdfeb68b724b0bc92aa97999e9ccd8221b7e04f6bd86f89d6ae14d45a939069ec01042d59f604791c23fb20e4fda1f3f529f940e0a02b77ce0bb971fcaf9d47e9f8de59d933f701e6fa1fb5d1278c109be724077de400db74e4b0b042a3452b92a5e4d615699e5168eae4cf6d0b83cd5bf894b045098283bd4eb6cc2a4f8fbc1a4cc60952a9cf3f22854b68a9431d5e4a6945136eafa75c891fd626cb799a2d4af0347ee65b4e89bed6ac0094c232ca3f8c1b9ac2a2e4d42b66a1931dbc368e76637ba49ccdc00c16b56df09e9091d70d01a18c0ec1ffb9782259bfec3e211fb5e4a747876a8c777c1977c161f634abff1bc3c1b330fcabf0907122d580979c185dcae8e9cb026a1f55ed27f8b1e6c5dd59d0e986e51b2304b344b0566e70a9b9dcf39d1b50273f47e3ff03c256a305b8bee4397732c8ab25e06b66a6be78c849b5e4d068ab914d945e227bf4b821e16f9993dfffd36a31081a2af390d8b4b03bb58fb5a324fd3e3e526a05d7b60bfe523973a6a60b3ce6fda96cc3f56a2f6fb4dd4c291aad62fb36cb1afc2aac5cbcf0927b0fdd880893ee3a483c1f0a91ba2b66d3410f8646d4f2778c096728c10eb275b47b11c5e8ba0edb85f7dae07b1af8fde20ea2d865811cb0d7103fe3e9b238d5975c56a991ac63ddd85de563aac12dfee1ddd7076aa488022f7f4eb01fe88b893aa81ebaf97854be690fbe4b223d98ab3b6389993605936f9865d35ef3ee6085f6d367545f7a72b9e26f147588bf89cd3ca56aeb1f51c895d5620642b61bcaec05939431fbb9740be6777ee93c0c7e35cc2d1fa98869f1983b89fbce65c211ec45c96f738b78a52e0d92c990759c2e1b5f87a76c2b13f58965e64b0174c583be792214e18fb4ba4fc8db80b89188b3641c1e406a686fbeee3fe0585fd0b407830b392f251125cfefcee18aadd21e6a2c657d6ab1d051875c1be19020822e54e2facef5b61372d0f88ef3f42199462f666ffea760be13c601378b597bd77f79e44074baecff73424e3be9ba8f30df65cfe1c8931567c198a06163abcb0e77ff334c14564dc2bdc34ccae6fbc18b71b93bd9001a67f3963998c617160b596d71769307cd731400573d0492d0f9c77406d1c397f864d0be1a1b8d267e8070ce3d73f73371acde7acf7eef192fe8a2f4dfe7859fb6da4963f3738e6b8c5fba215bade5ec7fe96defe27b306a09a143cd4b6c637528a4cfedb49929f4ed9688b0f9ab38b5bd866604e68cee7233573c244b5747bcf87efe81c04b922762bc436238e729684f97af7bd2a598ddd041bc5379bb73ef6eae78c96be1eb968bf1d97bd1fecb78c6453c8c8138f1a7d921b660ae7986a2df8907008a52f45cc2b492a59de5fc88ffb832b4f1c69c9a373a27c8eb6c57d950cad1f937bf1bc2471186b3f3bf1a198b699e999b555ea696f596aebcf114cf6c0abfb5b8bad7c7a6b551004be28305284e626dc9dd7b9dd2ba65e07a0fc95c114895eff4f481f08c27cccd71be6ea7d7ffba4e3e89dedd32c0f555b1c0a2f9ef4cf1e0f204def9e1dadda3ff33df252b8c726b8a4e4740b037b02b9c31e134fb9b66d96c8549d6758b252e72b69f59c63dbbaac1ccaf635c49ca48382d9fc0f47d8ea093a125ba68979029d6b81beb5359d3b61ec7a0e0ad674786bcda01db8441b629ff89adb7f2dd6c84f027ddb0a4c59f3d877519f427ec83e515249e52eb868ca887abb6cb8a757fccf559edd2dd36076864163f66019367c84db0df2fd6df4a65be67d2873e040f4cffb2627841a838436f0fc172e9b5020383fa0fdf4ec2c4e135e00718285608a5f55c1be864fe234147f69630e9b287716fa6808ae7491592122a67551aa5ec4fdfcc69a10483298e135020264cee0488b499a9cdd4cdaed8891b631f507e0b854e59aef320a010d33708f372c00f24789bb649bb0caf9f3ce4dcd17beee700d85f47e8debff99d0aaf4b40c8df95ebc94afd94a0e4d50edc9228a102c77352e3a35f7894a6cceff4e31257a93d999ce4d8df4ec9a9b9ad9b3f738dbb756afc443834e532a1047a6965e3493f63e1ee82a905dc9dd815a163bad230cf753d1a08fd094b3e20977c292b7d09579bc45f9deadd4a9ccb5cdc6accc4b3197d283ec39f1825fd55c1e3097dbf38fe7b281a928e7e6b2fe9bf7b8447399b0d2439f0622a0ede10d948127eea7d652935df707e209ac0b12f779852429ef51a8d8eda7792d0265e92b5b55f3d08795daaa1da181989770d522ffc92465e7ec4623665c51bce72f48803ec4de24b1a3adccd467c92036461da4a75da75db4665d76b646b125225b0e053df43a1ba68a072c53ee633a8cf5812cf0ff815a6ee79e29c7a796fcac7a6673d59290be401504099cd3d19d469fa2941b4c596b967c9e583253fec70f09651774a4b6bcf776308f30b0cfeb4b8e0a5aa315452b477a11b891d2eca7496462cc776f399f3e5ecd60cb01b82739ae3ed94ce5ea52cb704b378baf94e2b3fee19562bc2bc5d2cde327e9669cade64f8dbeeb8f3efe80964a0df9a9f0a86907d4e8f43e355d829a0a2f2bd454eacf9edf50d3ffda0c839a762fff0e35659515e42d617ee1ae72a8c7ca5c049c1858af0569f8c102ed4dffb05cbae5842525e1ee2b2968d21a5be1b2af634a5e6c39f567673908753beb812f7cc04c5213f0cb0714a221760bb426d9eae0b4210fca01a395cfa87321758e1e33639fb276ac9652072855f58c355c4cb3b735be9b4590707c202671316335d6758e84db7f7852cc1172c474c369a29bb0924f198b9daa137da928ca0e90600f5d9e30318f88f91603aae3ace75a94c550b34e32b838ed8c39d2ff1d3db0b4cd2b6fb3b1fb6a56a3b6512e3a44ccb27a2c8202f2a28529f5f22fde12d9701f4d64168b243f2ed2e64c60c5aa88635052344ec400880ee8c83785602eefbe7268eba30c27b65a6d2741cf5bc8c97df6d66af687db47c6ecbf7aad1729dd8e2ff0f2be2b9c6a750c231c432217b558776ed9bc7304778b32f33727b6b61046d6762700674cafa5ebf98577fcfed96ef8addef0105be598b8fd5e173f0828c60bb2f01195592149dd7293787917a49c28c6cb98ddd21961b2594bab9c325ce668be4e8a8e42db2764abdebb7aef9fd8b2e25c485bd67721c62b6cd8ac534fd986954e893de4eca5e9f3b643a0d737df31ac32a0c364915969fdf691ce5aad1fd3a67e5e492fabb684e1bd7882cdfb13eca9ea63eb5dea5c24748d8972df6f7e301b37bb9d27d89f02dc051758fcdb57a520e1d37df8fbc37b2d221f369e92764921208dbbd0bb95eedfaf0071a12242a44812dd741e37910a058c9193c02e85a82353891c78907f3c7f13914344e10bd785cb3d3934b46afc74368b25151250b676c7dbcd6b932bcea181445685c8e6081db80736b76060ce13058f5f86a3d9a1c5982e2a7dfeb975efbd0addababf70a621cd0c46a2a3b1c6436c0dd492a549a96921200d70055ded47c2f0f01a1480137dfad25def3359ecf6a2c3cb420787c63d7a149cf21f39c4fbe330527a8c0ec5ef6d6ca1170c8e7064e0ca74bcc64ec7c0100ea91b10ba0647e323a0fac60e79d803378c6ff6b8d4f68bc7eb4da31b1aaed36a37064f5bfca4573dcf00aee671151a0ca99c7f79dc6f5871aeba63a72d6b1695d6c2b3e960b7ff6a79dd2ecd71653b89b2af763eeca1e9f2fb13ab82d5bf70ed18b71838c2941c55ec7d62a131a50604a3815ebcdc04e4898f7dc09ccf54feb3a432c391005fce535b9e59d1c151e4de904e40cf4798a4fb23d4cd90c81d7a2a7c2a8a9188a78c39e6e3a39e20fff8c7ef4676cffdcf39a3563c6c35b8a5f44e8e766b962e08c9a01b712fa2166b3db6215fde3b693374fe38f0a586093ec69b5638fad98dc3bf0caaae7bcb29eddfd645368ac5578b880e9a92c3d8f4a17e963f77790783728736f4b63acf1521b5afcf0a4989bd6806de9059953ea9f070d78c8d6ef179356c50d9fd5083bfceed6f97745d952e69c19c9baa1d36a01c6bfcdd492f9ab16cfb2988d38ff6ebdf101027268cf97f845063a0746e8fe6cd6928f7a64cc25544799a7af898d6313721873c023e9f8aec3e2ee07bd7c32c1b044368e7054b4a3c6bdac537f111091abf8d0617790091cb6e794333830c790ba7c62b2bcaafb31fa4b7ebcad6ba80a632afc788fc7e2c6dae070eb637de4aee14b65e8c45a04155fd965b226412ba1bd35ab988e0bfedf62966b3899177df4a21f1dbdac2351ce3592003cc55ad3e04c85b3decd5465e3f8e7bfdbbb1f1006f4f1d145472eb0742ce2eadddf516c7a390d5d8c45330d952b62b72f68ab11330db428eb5cef85d65511fe58a93080d206aefa95373e91142529513433f062cf9474e7414d5665caf741178eb140ac7f54f396d1dd58fd163890acea4e980db7cb6a5c1614972fb29c883c2c85febcbc998159bca9aa43d33a27147780999ae03a188fd97e2f93564af96c96d33e5d97327fb52a7321f52ae752535319da09545b5ce652ce530521a5b9395cfce3ed1f1e77a89745ecdad8a29b46ee1aa83826595cffbc90df691374b551006856c2feaf5f7c8e6d97c69c82373277d047cd7144244586f632ee5ce0d6bea7de854c202b7595c28a7700689ac837a5cb80efae67e438d08527754480d5dd00c4441b312eab72250894774077c6dee9adb3062f8482190af80339fc212bbfc459409e825728b43bb5124727d54bccf3bf64ebff440dfcf52532c96f84d2d159802bf3f5fc5933c4d3b6947cb06926aa0f06cddb341d9532a3f657962c33b5f7ac293a36f8778a30d7f60521e718d9f43a6059b65de3fabeb8ec0b945d12d1c38f7ee324fb49fe5e5999ac4d4b76da556eb8eafaf74d36c7a2dbd7e3e5be897ae3a26ec8051b792bc1178bf78cfa20987ed5cfbea848397c61cf8514714a19289924bb17534478c4d4b7ec990d75a485251207a33226191ae5dafa8e6263ba1bfedddaf3aa57f71636db980634baa23bda2a76c69813f46553e4f99f1db88a339e8b06767960946289a012edeafac0e911eb0d2f00453e5b6d59dbb8c7cc5fd6e27a4ede689b41b63f3925dd74c3e130d91c44261c657310ffa0ff81a9cdffd5adfc0dae6d141406471ad9c2930a1717a7a8dc1686f2c63bb22ecc3ca31ecfce4b91285fe3a338b66f5975bffba9b105414d70fd66c8b1fe07a05e58623f336a4e7a654be6ac059e347077006b3f6a2ad5fe1937ef830922c69aeb8a89e9cddd01c607419e3720ce725a8f5328bf8abf8f748a5d61f4b9578b40ffaa70dc2dbe9c4b64d87990af3f421635cc6ba7c144bcfbe1ccfade7a973adf2a7fd04366066d42c0399006a7407e6c3a369766ee9bf6f91ae23e15c7ee16d2c8fd44672ae8ccb189a5717a01546f7163c67d39e2b8925a97fc0da621dd22d6a6bd4a7236b945f814cf4b771cb9c5d11b2ce68f71194f306a90be522d11a8f13e64830d027ccf2ec96f285ac8a1a935929f9cdb9b4a441dd4921e15f31511f80a8dcfaf80b71dbe941b2c6f68cc73d1f729127c0832b2578fbca4b9f8120a10f9a97b2f08e70202ba68be13b04d0b73612a75ed283d189f748e33132ac03085f84ab00b5936c235b46ff0ced93512577fe204c1735d71e5223721c9a3f811ace92ecf5e330822387dcb996feb899012d0ee652d71f3d8ad8f1cd87e0be77d0a615b18a3093cd9529090059eafd4b23d18d3227e7a31f018416c11241551942431c1ac07ec052225d12d614938bb5e7037df2b2897eb0ec1bb15067e985c55b28b1d592806e67a2976730630fdba1cfcecf485e06fc0251c1a7d27970823c367ea17fa84c22c4b3d955e40ac46723b7e1525b331ad7a8c7317ab2a5ad08aeb0f94bf43df5e600d9619cad5be233ae0392d98096f39719877c46a57912c808f0af2042147cd0461b356075bde43e90d2fcdb4993082d3e208ff63d89e6a28306df75c9e49a1149d1a6b60bb4dbef0c68e5e517a46aa2b30e32e139c4917690facae06d0bb2de29d835163cbd44dc02508bc079af5435de95d9648d40ed08a0bff6cc08c549f702afb1a7eb72b2cd4b52afcbb2a61bf1514384f7a6c493be1c171c2dab0037eef51e30ebfb7133e09297ecfaa8ca231adf2efeb84938f5e800712b9aea7855de7b418551f389e44f04e83f7ee71205900f99ab19755537b8a1a0b30c2e0ef0c75805e9dbf3a749bee34875d4426a1a6da5765ad8bead674205d685a350df932ab1541be58c383e2d815e9a736d248182263801dc6ec39f80ae65c02a5235b4aba8358f87e63ce08ab969be7044894da2954903cabda4743be69a89d1bf2586701dae4eb8ad5455ab90c181385fc491a1f31167cf7b98c20820d6b9739cce1c644e450c1cbca304585739f43fdde35b34df49cf5e837bf47a2a9dd10144a20e1c84afa0b1574126b5f1fd0935f3c532a630124b2cfcbe7501628eb39300387e41bab940181b93400ecb66d92ced22c9b091566dbc25e2ff46ec78cd2a20e6d45a09a974ed72facd2d9d590c69d30786a43c9177ca79ded25edc295e8dbc0cc1b235abba3c3e8cda6bc32e5686c767c9f0e6f75257c4e9fb33be63709eb6f8c3cde45241481541031e74afe5b0fc6a839b5b0f83f35a7acd04056c86b83e7e1d018fdd47ce6bb2bf339af0de97769ca0762a16c97ebcf52b5dc51a95d38997cf9c353424f79678a06820f0a22e4cada40cd71852711941a3acc5e571f039be053c72efe0fa8694d53d349f03fa4a6254d4db7ff456a5ad3d474fbef50d3fff116594f7e9242c78a428fa7fcbc0c7ec1210cb4e001751e10a0cb4cb2337af485588c86987c332e7931ed796730ba310c0c0bd2ddf0ab635e86f3ee2c187a19e51c30ce634154cf24a03c0c3c3dcca3bf0b16536140a39a4407ea2eca40812a8705497419d9ef6f24356b1c060b8289b782c320cf4ba8a59cab8571182416b7828ff2f3f2a0cce2be13495ce0cf43e8bfc804832851b5876a0d4ede29d947dbd708aea11c90d06873b29eed2656ce064fa0f050bc29a0abc8481277ead09b7f16e48b8b187f6285a8cf7e1628596f04de17c56d3c72ae159d182e8546e0da1c295f9f665e13b268c193af9588478f28c68a72bcb24829e9e5d084bf30e2693a34030c790c057273cb1836c50b2a09fd059352207548ebfb24727c6080e441238929eb46649d4b9a57868c6c5c5d29d2f8a114f437b34b269407c382b68c6d2bc43d6ddbe2dbb982aaaacd9b9c59d5bf2952c17ad7e544bf14099194a2523d1cde3c0c36bd2dd49a547344729c1b967816a04375bdd058a0a60589b698fe96b8c66a18bc33ec3de4ed0c0f3d1ba74eb0caa5f34f08728fe407577139630f9efdaa5a80686205c355ef405319cce88fa03a103da1268843b59f26f43f907577282ceb224bded70bbf393b483a9b6d42217023c6fe57f5253db0fe029ecbcbea85273e6691fc02b73f47cf9bb0f6357f90c1046124e230ebac3b2578f6d511a6c8d198b9b05df165abd6fc59664b8c64bbf012a0ccdb30b115e8dec2dbf0da12120a1e3b03a58083614dc0ddb6f086ca16e384cca8f5968d5821019fbf105be68fdc4ba0a65829728f5c51a7063b3d58bbc52a71c4a2fcb570d2bfea11097002b97cdf511aa090701b9382941ec69cafae1d0b8e2857e19cf1ce0d69c162877c233a44ea4d07aa95963f6442fb4fa01bc5b4cc5a9ff7ba81460cda2745d6e1523abb53bc80a883cb2c61a4389ddb33cb718a545d2a03870c393da2c16ddf5d56ab2d2fceecd82356e408afe854902ff35cc8d0c1b0d0dfbcc17715e41e3a03e464dd43f53db5ab02c970c2149633308883b01c9bc72fb14ab330451c27cf281cb2811151fec61f8a823537df152e8c340f6eb663c6e0ef8b65e0cd9eb2c094df5c296b7246c449e9c46edc925706309f31a6f449cde614505202700a173c51721f580d97474493fcc7f9cd75e24c86a2b6943342aa37ec5d7179901c1e8bbe8735f31f2d83a3328084cb4ff00f36f4abb100e297255222a0bb2df04b3380e27f303194abe830727779b99eb866dcea174c5a444a5ea488fa41dfc7ca082382caa6f501032f4a795e3c90b5a38afa131f3db6992ef8f86080d3365b2e35f814b4e7d287df3ed5ed96ead9d205ced15c43c29822b39a07af0926ad8d98b40ebc75f792488e5df39698881cf917f3f067dd0bff5dfa2fb573fee0ff6f5e010df1f2f9e4f2450a6b58d64de5789f29b4e314a9badbccfb4627e7a07647d68d77168da36b40c92431c8031288252a41185bab11a23a5f25b70f150532a6e20032f323cc9ed7c0eaae0ade870e30454173b4386fa6760b68c7fa32ac6ab8aac04cb0bdc499e17265cf32b1ffee247aaa76e73417120c7d8517c7f485c4ae13a4c6690713d5ee2ba4db49c38be1234f37a46e2ca7c8d5b6bef30ed212669d0aca7d70282d6f5fdb83d39bf1406b8b1e273aad026e957557b58dce5dbc8737cb65137f396585bbdb58bd4eb9aa710a2c6364c91040d74ec8f8add336fbc61c5b70c9dfe21e435e2944860828bc7fc3b24b4f604aa73be749c92c26b622e76a3f608136eb3b6f0d2e1b0e6bddc345883e9d222a58b2c1f0b1c676aeb29bef0ece7d1b74ab83b27bc4e9c2acbff5b179c41477a09413813937fdb12397d60e8e4a970dafa064fb6d9500e0c1aae7337fbc86456d93cb66d2c05a9ed37b3bb1f94e10e1c97a411b67c2b20ac253cbb9fa6a57dea0c79687ebbbc37683b2ab8bd8036f0f94361e547019403feb8d87f5bb518f6f1e1494b3b596d583d66d3387b6a4022c0d7c6242d8a56d3839bd5f8cd60084e8028df9cc33bf8a1e7d83b328fb4b08c179d6d3db42b61de88d47118ca508629f3db462b5ec6262feb8bb65c0dd13bd9ef76f8998798788991b223641df2f7fd20180fe6b8dbb6e8bcd336ef3a520c904c02fefc6bcb30b899f44de1591402b426414f05f267b347ac4d238c296a77f6ac36eb193324aa700b2af78fcff0289339ac419533ededd9ce557c23bf7020d73fb8c1dae1130afa99bc2bcfe1c41fb9aa3ad6f202345a3dccb0024b3dbbf42cd407dfef249d9113e9b73d4f6495226a4718f3db4db0cde2766d314c8e3387e58eddd2646e218be1c37ee719a7f4025ce3b9f8e7a6d09e4846d4c9ac91ed0ce5ced6f3e8f6f3f3f46dc7afd1cf944e2a0499fddd7ab5dec17abe962596d54fd7acd12b2c4558a526ebf86b227f530d09d39f4fde68914377ef93f563bfc34a5ae42118893f20342bdc70641e97708f529d53b5ad8a3ff7fcc9abd302213b03da70645dff1c7626c28a296b88c363ff7a92fbd7f28038328d2bc57b55642bc9d80b58c8513d183c40528abca17470522b9284f302814caf216a9e151dd9c81a9c058b12971b010c765a223029fbcad6b6658b469e34e1fb914085e6eca8da669efcb9364936f6f7afef27806b4888592c84d83684f76b5d107ba5c6e8fefc0f3c71f525119c611fe6e6350efbc68accb454a6394f32ea9213b4a1797c1076be232b67107c594d79618d31fa6e50f60a334266d234d25af45f99c939ff17adb4eec6ff2b09307b5576abbfeaa7f8d315ff9daf09a4d08addb186bbe69b216c5fcc2c6826ac129b971efd13acfc0ccaef7721d87c892fe6202d33eddf8eb5384cbb7a2534fde2673bbe4792b4f1039d8a9bb5223114f764356fa18a143a2158cda0de516a00ee877181aef3853f872e470681679cdb340904914c7b2959088dac404ed5c6caecbb8c9b6cb076f8a88485c63bdfdc9a9f51d279d6c9f7d57efd7e426eb9c7a041c65056847611b1a1a98d4daab0135bf5823364721399067222b40ab1e04cca24f9e9279fab88479c6b3e1e0c2afacd99d20ed0cb22918589d5f68f3bb304f16a91e8b86e32bbb33afb8ab13442e5572085c3cffd9b8711a70679ea1426d611e99d86232b3f92703d6f9de51e26af0e9897fca1debac83509197de384088512d7c257bba6467e99d1842f86d1d9c9e707ca5669f2f41c9f25e867dea74414e297a2a39e2c5b7e166b5a282db2c6f4cfb6ac790b831e8651baa8ec9edfd5586385451392dd688c93ab42e49c13978528dd59a776ef245c0939321c403d3f9d3474307abe4661f8ac2b3330978e7e4017e21d6602ec9feff0fabe03b04ed804c206b20d79390143dfdb1ce740aa178852c297c914477649294dbe49d1027b947d95c2a28fa125dd12eb615588faf4862702579a2750bbc622eaa92eefb32ca98f9c0ecc565534ac84431086d6406aec648b789c57b54342087dd6838385a5994838c2f89cd9db50637c811a7ef25de705f8845fa72e1d43ad78ba7e60e4c57ed2c376ba1a4bec652f3ced9f53c479d8cb43e9960dfeb2248831f18b387ed6b37196822b0414c71515fe89a6f9e12d75a640fb454c3a611da79abe4962349c191b43f7f7f77a0f86354a0abe775118277676380f88f62cb5ddfacec9cf5acd4b9775e2dbcc64d3fb0961d69b2dd3bbe0e9c6f81583d3811037c9e24d9eda6cd57d6a99548867a3821edf9ac2dea1677122f5a1597582d744a22f11e910055f78144e84eea60225c0688370fdda504e6a8cde5449abb9e131eb42dc8ea9c1cc7f3ddf42defe9bb485caec822bdc5addeb0f981071fb06392e845d411adf78f75ac58584e75435b69089c88dfdefdf0c944915a2d501f5932c9534ceb28a7c85b47010fc380b5dafa8c4478ff91c5c5d97c2de30c8693d558e0e1a767dfa2275908d9d2303494bb6657baf74c4572582cea675ddd6d57cf6d53e57b0e01a3afa505252f85502c2e965e7a03278e2149d3bac7b14431a58f85e0571a301b1f488073bb3cb0736d8d0c8d3367559e202a7e5bcdbbc70181aec882f6e42c68e16f3989890912a6b093aa8c9a92334f32cde57fabc02bd81b70ff1e76315b739c3693d83db0111b2f4d990f1286b9de95fcfc9cfb6ae25d9b5538fabb14129c6b0e482ecb9c45ce5fcf7ca2ee655b6d81555b3eb1d205140e8dd95d36970ff2995a1e630e877b5787e4f113a78a39cb9a1bc4453065087f558c109d76c452e4f2a5fc8ba7aaec8757cba1e26baa9ddabcd4ef8abb9dead0055d76e184dfaa0ed9b0f720ddbcd680c9f0c07702a0fa4c6ea0d6c5ae0a38d48cea5d49d815a77429d2a866ec5168161587d261f681eba9aeeb195da043f14c553712bfa59042f3866a50190b4786fa073709bf1656dd56e3feb0b2ec36d71ffb93e47f11aa79ea7a6fe2ec613ff7901be0131099d63a20ed19256c658f44d93e308b2cef74d0ee56fb1d95ab58f7ad38b51c72e8844b0515123171001646516e1c72b8156cb86939a4ddbb9cc051c4c6bd6e0077be1b8fe40db139bb6a602a2f3494499bf915a0111ce0f42129f281d917ba08ea6dcfe1bc09ca78439ded72ce4d54e5d9f49906c97276d05fcfda9ff8fa517d3dd65f573fd3b6fe7aa9bf6ee7be160e4ae6627527e0a691cbd1dc58e6ebb6502a8942b08985e924fd48a8b6e8422b23b19336dff5166212620cd23de75d79ac1f638ea01186eed5331d55c45a53b5c0d391a59dba533e83fb61af1adcabbc87cabfdaab5706be1a8399639616ccdb57d5d1133c02ea0ea82a649007a313fc6e9d58fca6521677103c4a57ee5432117ab7dba33774de0efb013187fe9459dbf18943c9ba40f55b36392af42c7bed039673a83828e570f30dd9992d55800f94a2105fb5822563fc097d817ba05cdec33cab6e4cfa80ee24fa726d4139c84ebb3833db1b8db633d3085f7ea815f82b3be19ebc978f61a10efaab3a5ec6ac2bac6acee62db6dabcd0ddec76eb8ac26651576ca284445d20c26c31ed5f3fbbcb4509cb8210836eb4342a9c18d8b7be22af02a8e999b3e12a4327d177ded35378ce49c131c794e77d35496afaadc0a2a2c2422d4f65619f2af79c760e3aa24b8be5976edb1742ba791504dfba5735f453b5d862004b4e6576cb85790cd8833874beb7221c9363d5bf3bb08defca6f76dd1b501215caa00e5b3977821f9406c1d779bc6342c96dcb4f6d5edff4a18727e53fb10391d23defa1ffdfa0fe45a38a555766b9ecb9765c0f36ec88aaa90e3fac66bf1959b5ddbbd3f4282c0ff024fda4ac98b1568719bf194696b3a0d47136a1b0be409f308dad3222347dc9b20e5fed6fc2571bf32c5dc85934c469e777d61e3d9a017a25484b9b3d4c0b62352423a1e0c4d746ec5a508535c93e58c18bc57ef62a0936e052bf625003c9e395d19aec772b1d7afa24eab1c0cb7e74d144c2149f1751c6267f23bab484ba5934cda2c71735b4e051b3ca3665fd6da9497d26b0f466e8b94836f0ffa14941cfc0e259ad15d29b3812c90cd79b77b2138c05c245c7af1dcaa5b96424910b7b2a51bb650dd27ede7380e3ea6fc7e849bad3c6f98e36e2b199e4c47cc10ae95e3832773e43ca2478f56c8facd05995798cad034f3da2ceda5cba7964ef79c1e52a35fb6cb8dcf3d7da7e21cf2d5f3383df947cbcdcb30b69b9036bd0e6ceab4ccaebe7047181e7ec8785b914c79bd9a35eca13cf6567796fe772c32e3775b852894bd5bc1b382963d1e5ca5a1b44b35737f0040008dbcd0b166de18f73b22af10d5f1a5d283abc170fc6a48cf05df85d644c83901e9b61e1e7a109b6f7597fa881e53d9dee29b61b83c3a9a9445c927e8e3312d17c52a1f5e0cb370b7bcf463cb56b8614bd8aecbee3587bd9816859573ab5d3ff62c50bdbc238f3428bd7e6c27a10a139680ad72bdc1238454188dd1fe730f5c4d9024ae0a1f9f2cd0c6e88d97891307663f6491d044c8ebab04b0f1670823fc7d46ce156f048ac59d6f1d0762ea658dea2bbb2c0f4298aa3586be76ff988879bc4b798da1907e28d7d0c43dc8a72ed344ea302a525cb3eb1bb355b12c004cb08a2234ecde4cb89c879e726e4c07c1c72f609b68051fa4518af5e470583c46e92619db8d27cb058dad3bdced7b8fefeae48abfb53813f8d0edc890b7bf2a218c6db7a7e42ac14fdf37fc4d28858f47f08471049c6534036f6f7562f2ce14696db9e5e9c7924d6706a21b8d1a2cdd63a226bb127664af6d74a9186b5e52b3c4b589bf714abbe4236d248af085e5d8fd5f5d72c03683bdb91adb255b81661190f25ae9511a9bb1f85397951f78e636b0bb626c237aac0803c86249a9761c92c01cd7a555381ce6907d1c4ed02e7a1295ef27802b36c3033755901b4bf3dbaed4f7681df34531374c21cdcc01c2decdbac243cb57580b1d3db97abb9e4de17020d11f5cf9e6fb3ca7ec046c24c08a3896b2a99fbdc18e96f758017d29dec2b1a8a030a937507da8636e2dee2bcbc0868b1b94305a4d387b5c308cf6d9fa6101fa2b0786aafb465a60c06ba6cb361b6dc663bc13c8fa639850c4f3ff846de8e958cb9c37e5c81b2ca4437e163cbfb74ced146d503bbe959435a6c8221b07766ad44203323138d6c2ea5ea90596a0a765baafc01d75b6c6f423a528fb7f998ee1d42badb23a717bd54460a202830ad36c78ce5f1ed02bb98d9df4bfbf7ecde15efbbe2cbfb82f289003c0498b477fb61f03b30eb3b46fdc1ba72f7a4675d3cedb459d7f4af7612fc73bba27a2941718b2bc01910359b56194ea57b1d38bd5c771639f4a4f3b4e770952ae74462f8d1d89aa9d7a6f3014e088fd28d5a96aaedcd8231556cc2fc7767b7c7c282d7fc995012e0e24b38c5878492ef2d49173956e9223d170421ef1c961898d5453bff3d70485c7253d098f1bdddb7219ccbd29e092231b0e7cb4bc512b4b9168c99070bf88b1f2e14afa89e8276df9471345f3d8a6f6a00571632f95e376122acb63d23715250334a1ebb845e7697ebbae200c567fadc151592ad19d6d56ee2a642bb9d7e4752cffcb7e32e5c00db96c919aac77ee1d4b9b5deeca829bed8e6b778d18ee229129f87bdcabc640acabdbb52357ebc47938c321598536dc087fd8ca53ad410cb74c4035ba289b3241db42faafe61ba79dfd4639f63ecfbcf8cdd9e269b1da13b1ef8aacaa5db1eaf2abed75a47fd0d56ee24346c8516b244878e9d9f0a6f7f80852a843e810e2e41fc1c860ab377a672e353ad0c0ad45c2189f33fda8f74d2d77c24051f23075e0df7545d5655a06e862a7cb9263cb34d9d577ae689ff66fad64697ad6e5f229bbd6e059fed968d5585d194f1571e6c06d3acdcb477eeb9cfc219300e2a6c825d3bcf1a787551efb0240df82888b3c00fe2a75bcd44d546166032760c44862cda73841b0644c0fa45fbf442a4e692d07e4970d7a5c3e4617f01220707f7ecd8d25a5bbb249b80f4955cf2ef21dad7d72a9f6a0ab728c97f298a0e844e894e69fac8aa8c47f9456650686dc6d7bbc2edbcdcdad8d050c5f749a036f71f65ae4b2090f7fdcdc6d7326f91cb9a71f139ca1ea7ae7205b59350034426d673ef8f0818946995e7dcec75ed47d4e9af861eb6fe901d2207a683001f126e64aee5fb5a87554a5356949dcf777695dac18d3b8f5e2571fd1b2b01b5b666b38c4d8ffd8058cad86219d7563eb27fb5c91a968a78c03619ff4f6291ffa76bd6e9244ca6bb60dc5b982ed3eee44ad4cffeb2d9178bfbc285f33eccaf5c2491024ae355e9240ad089e8c245d296f30237a44a9ac04967941fadb04f73c549ec56eca269733e20f7aba46bd5393c9433b11cf632f096d149d94ea67e61e4140982168eb8dce4e7e2472eb981361be58c3cc59a9f0bae1d3b0a9bb3af9320a091628fb02ed96cbd80b7d0b397636e5d7f73e5e4bb861468e2c1cd176ed6b385e1a4fedbae7fc68ffb81e73af6ded9e75c53f75e1d76cb5d6b7e25efef45274ab3edfb9ae72786a28a85468715e3cc22e633a276fa2ef34d65a2d29a7b053c58b585336889339f68873c579243ca1e757c9fcc16acb8a87384de1a61c7e36bc6a540fea98017be957f02330e38f528e72b424291f35f2c4b5f38a9cbe5c03a93e324613cef27ca3d0cde1582a6f1cf8d85449b7e13c7ad4c0cfcf0cfd0a582ccb64eaeb78f05603930d11e58fd3da6d441bc2eab4071b4cc4e191fff516c3602aed769724e8e0a548db52bc3a596d8a255bf867e5d0faaaec932b228bfe5be38d3cbd3c5df301edda94c2efc324076bf08ddd7610bac29194a1259edc0fe44708201657d7f868f7c080ffb47db14ff7e72ce45b4e28218cddef8912d2b8ef1e779a2ba2be502fa2d7ef8cf2636a5df454f64539d1294ee8fb9de3cc21050cad88f42a026cfcc82815574026f11de01d087c66cdbcb67ceb4792886485d4ced6742b2e0e08be67301f59397c87b3df35f2e38f583c593715e5f2fce7faeb31568cb821a3b07ffe5a76a3cdb9766dc3bf5ecac4c7a5fc52524947be6a4cb9e75d953e00a37def2cdbdb9e696126bb52b18c0f2e8bf7c7f008f9696499aa3158072f93a8040504b791f5f61759fb7d933e59890c71cd3af362e574147c44ea8cc6cea2601bcb9aa0567bbe595a585e64c61f66030af74c57616bcbb654b2c02ef31273899095cc19d5691fafb538c86c26b7361f4a33a636aed923a8518d81bcb4c222f24a0569d00ae6ae203f068c263c0a80115bf1bf4e732707fb79432f7d52a730f172659dbc6c88e30c2cd6563898d23972b8e56ab4dadc936fa152ae3a13ad66e02c4aa2e81f30d1d0c25b3434dd5c1e33640b55480557e59c4da0a8393005f44f2b7f0d32f487561e3506d83b67f19672d6b1015ad0159b4565ca8bd7977695a616e696213b54335359795b7c81bbf016c0fdb1b803a5cd1b06e699a6b49977d32e1b99fc2e0ba6aded98fe4eaf3972f3b1a095c1212130c8061d2e1e9cb6699588c19747ad927c72947201ca678480773c61224d6035cc77113bebf7122b58cbc4e903e666d5b09cda33642e0ef4f57ee0e818c498ec17b7bdf6e27f97cbc8287d5d169222315707748c3fc98ed8e7effdcf0c8a35f1bc7be5daa7c590e6fab71148604359257a70b571618ba15ac8b6214397613ca7b50035bc6d0fd1fdcc512be1c2bf9afd44d942e140c5c4b6a248a1db0dab57de444e68c08716402bdea7e02dff0f41771139357cbed1a309a1051f6d7be13b4740f693126b009d1490b74f0cfbccd1e0f8b36803b7691ce884d8caea8d9deb4e52b5488c5690bbcf2d89a051326de8119476cdee23352e54132d1644cbcbbcb1606906fe24975ddf659a7f0042988a4e7ee07280787210fec59e1567a5102b133ba25d23e64bcbb561d39a3ba4e49f868824826df66df1a9a8839c309737157b062bed018b36f085a7bb49106ebfd805913288f77fb8148d9a1069bad380700fa3d07d4ba1dbc78e2c1b8bec52a9c6af9782b01f9b1c6849873cb4f62fbfbc5e83460c7f21da19fe3036961b66242be4646a95cbd4b162456ba15ae6bc846ea987d5cbf996058e51a797069c0ce241d2cc0be8be4ae0f6620084348fab3454a12bdf174be7cf54fac306a7dfd3344cbf3d52281c97eae8040b8b9dbef5df6d758327b15ac82c44a9e5e3846e63b32dbf9d727b4d6a24ba678482285c10bdfc4c40bfe7581b144340064cb8be9aa97adf0cd044ff3b94b5f1399e837e53f1a99811997f48909a16a2e0206c94e5cb915a93c5913c866e3191fd84da0a40c1784bbdcf1f576dc3a241d1d243f2e879461fe813d233b9419fb57199e1c34b2be872aaae5d4ce9d75fbe6d085af4a77e4a4e9131e9ea5f8b74fc2c3e71fda34feeb3abb225ebb5a3ee7757c2ca03b0c5d51e9295f4e12a4f72cdbad65254a791f499fc083ee71ad91f5109af769516bdf8589e4ecc20f9eaac0b905d928234ff2b55691ec7339170ef62b249bf6b13572567a99f5217ff358f0057986bf9a803cc3731f6687307db57cafc1fdef7260500e4fc0cf805df0e644cad05d998fb3bd3150c522d56f7a4eec17cdd2a7c47ec12368f8cf397521a41771fc13655504d39d48fa50807f4e2d107a6a814752c5c4aa67ef6a5eace763ee612320ed4de8bdb3e9469eac4796009c63fa264b6ca65841db8b86c7a621088dd9f5f52739ed4c621f4748ca2c5559608b6c265713f1dbe52dc718d3cd21df988fce8c75203cd1392dd9824f16de3416819b97a6380d2c18989bd690c72e0000375296f669b43e9d1274d2f0916c19272597287b590b9007086e91cd9846789986749536c57e0da143722276dac9cdfb47133c592092128203a089e5ceb0feecd104039b9d20a7c7c94179e02ba66f08e39ad638178b74199ba319d319938e1fe7a195969c058579c37183cf630adf7046f842c1563b012e644c8e1f4adfcf75acdbacd5df60e86ba7a518022f9ffade1a003d7360c732ee098a8fa483b63be041ed00416d094c30f27171b04b21da028dec2da7412c7340d2c11a51b5fe103b2f5d26377464bbb4de948f8e196a2174e96f47b38fff080ff0e0782bc187110ae13e7f704c13378bdbeef2cdde80d17bf791853b1781e5417eb47af6a8cffb74b458a42ae964f17ee4135d3fa11a4a26b80626a2b44e005491069563646889bd77f50814432377f5541bfed5e3b8247b0349d84aa3f80edaa749510d7912cd4adbc8687bb78e94b794452e49ebbd4aa120601768da45bb087319ff377064a8224e2fbe234dc81bc392dc2a3c95e7dcce711e4811b57919fea8f27736e2f5802e3aa072fcad4eaaddb6706a0717b750db76c37460b210ff9847e594ce8ea8a188e46bb66c2cf8683cd2ec7db555ea7deb7bb5c7b6444ce72372fa6a280e8b917779fca058ef11d90af3e8ed054b9b70765ddcdba7b153da97d6fcf8b8beb70d65e48493238a372ab042b80f963772383f412ec64c85c5dd6cbcad1fffb6c8657588151ed0973713329fd90107bb28dd6c14dd8dd166fc13b53f09d3b5011f29d42147db6cf8e1ea96b809bccf9c512e1676f17ce246d5f535c34a403533b68f65b7716490ac3c8fff221bc8559d6d215025ee12085f87095f33af287173e561bee4e441be88a7279e702485bb41ed517f15e95f78e1a1b911a3d6ad3f215cf31148ddbed8406ad9e23ae54698130e75804260667f68122380ebe257250a2de7a83821a899fa057d8475e807f624dc7987264f4e179825b4034483c709d2c4fdef3befc9c4851e5c7e6765ce0e021a003c8fac81ab20c2bdfe9b6ddfc9558796f7b23cb7210f966a7ca104dc46cfc59c28dc2b5c87b3ea90a33ad4940568a5128b268c16e2145db21ffea8b5875df60812d4c4e01b1a607c8c52dd43aed48b0e2e42a155aeaac39a3574d5093f07d6a3f839314674e41478d6de36eef2293afb33eb8c4f27b4383b14147871a449c8c07cca9bb0f617534e9c2bf598dc24c08aa65d2434223563c3a1d38508f434e60421b0b9674f79619af0e55e32364438518972ccec5a5713e78730fe8b667429314fc5d5aad2af52fb273fb163fa6ed273680202f338626cc2ebaf94ce86f3edd2fa245e0495bb17be11191f3ab60fb0717267ccbff12d83705a2112f9d85f88d08fd9787eb5598e2ca293a4d5b826ce7c2716443eec812ffe3735b4af71cca1ff91ba6eb42cb8ac726af915a230b2dfd938cb03857641dee8db2781e609df733f80b0ee097622a75ba1d3199cde61179965c7fdcdccc7650788c713a26fbe19b30b580db3e90e8bab8995546153e988f7ea6a44376933754cb38f2493f18aff70c844361f807f690f9dabbd349cef5ce5da73647576a47841664aa417321722c70bb79bdb40ac605aba9ecf7bc69c42dee7fb9c2241bb5dd85caea109da61f9eaa3e48980bf5b11b2604e831128d122645e2360cca1fcf7c4b6fc9c4fc7b3f02de2d3216e3f39bee5a7943b399f0e2d97158907e14ffa743c99d3a399ffc16840a5914f2a1ecdc0ce8bb5e450881e14fec5d7795677d78fba179c6d04ac32c656110fdd997184d6b5cef3d0dd472ee3f02e76ea6b9ec469b9c7af64aa3ff403172c69ebda43c6de338be8c74a4f69e82b14add13755980a4e550650646a116a40996909281f25c7df51ee6104f035af39a88ea1a533f64613f8cab1b0d3ee93a139967be6b455da333fd77360af6216a85ed86b4f5c5298b768fe424ff76fec314abb2bd6ee1ab708465480b8e299b605b64ff76c0dacef03670dbc601236a562f44468b511f0c811f48125153b04fbac102cb00e1486c12272318954ba3ed3320d99f81eb2351d99354850758238a16f190b05ddf0b5cc4cf301b28a365cc6162b54f0ee71e7efff4fe3612b56c70f5641d0616d3dfc72212404b2f30970fc8dcd05cc0f0d33b4239419b2a9a9271bcb19c7b270bea715ef7e20c3f196af8fd4c2c2974f5c25cb6027bcb944668f050cfac4eb951377f1aecef7720f1a73853ab581096f9e98a9991c7a4e52692c7cfa028bed1f7aec62299e6e8b4dceecba5e2b25ec39203da7a99c36d9038327a964830f23dc57124fd28452a234ca0b679eb14e8280670e168c34c6cd91c26abcf8c1231c5011b06dedb8f243c9bc100c893bb625402fbc98f71a03f41d4387d3572d68915c7ab74a82031ad9c70dfaf1f582e074ac8d5457885ebc1468efb2aabfe722493e33b6479e9ca251e6108138320241bfb9fe60d3d7841c3330563326439ee920c878c18f254daf3c46b0632c3ce92cb51d0ccc5cffd8a42a66344d7bee1bf5f9447f31f50bd9e7c57ffea546f6442e514391f5ae522be96bb1035b00aa3bb2a519301e9c705aa378f88b15fa1044be0242736f722e056ce78c8963ddc70264c83198e96e90431a3eb112f518e69e5f582c5cdde832a6750d56fcc8713e44661101d618ab44d82139d8ffdcf26cdcf2e0fc57d29e8dbd624be49ebfd5fede3320444e816d54f92a3cdf80072fe93c96c8c1ba60288a79280c0e6e30c124571a188b62f9ffb0f765db89234bbb0f84d74262d6654a088131b85c2eb7dbfbce5ded0231080488e9e9cf52c4179929815daeeedeffd9e7fcfba65c6848e518737cc16fa65f8da4b240219442a95848f6448f938d152007a225311fa499d1e6695b01e027f13caf7cb0338ce745959ca88198afde7f34660089faca375d576af395edc9ba9d1aeeffecb92deeef41e5f3d9b6671fe5163871fe4fe8513a8811204c363a5bbd54bc9369d709e89820953bd0acbfdffa4845aace26f0ca9f261eff302a6db07d7183999826e7ab5559c3de24aab0fbb04504c082778e40bebb7757ce75c9a638814d11e5b9cc39bcc60a64836a9c8cfbab5d2ca744b0c130d0259b4408aa21ec7b7f66395b58882942c3f9e7cd5d979156a48e956081aca17a802ed5b60046428db852d1bafc7664d9efa41ba7eaddcd2a200c82310b03d7465ff8e74195c17603055a49b14793d6f062eda109b8d5f7924b5a8c2962139b33d02f4ec063a35d11c2ed3c7d2f233cad15e8471bce920352ee37d045c81419ea74c150bb26dfd92acb82f9795dbb303f0f2ed078c41fcdd8acb054cc97805e794281a7d0b854b2768f963a0d816444fa609b95447111578e28d800b7ab60d830cc67eca01418ca2995806ecc436f5669d7781f712ed06a05e8359456a960ab09fc63cd1bdda4012bc65dd5a61d63127a4f6cd96a2043b85d08319b770b131671885da9a8f8496bd6889b1625da58c90509d4aaf351f418b76c61551c72c5b76aa205ebd51357fbb5e74295cefc778764db1361b229adfe3d8a8669c31d469bef849c8ec480d93d14d613b6f9d50955006758eeb9d3b7d45580f4457cf0e41f5b7068b7caca6c964686998a19f8005c7b376553561de07a52bf5e1838238a35ee44bb8acc80276d66b8ed26c239068871279914da4552e5639893704d23e64087f61643b3d0f31333bd05a7a5cdef4de06bc00eb2470d2f502f91954e95afdf1a81c7831a7b6ac3f7dfe193dcfa43f483c04c8f4dbf1bd5bb9b862f77d72d1e87e52d0f44afc093764ac674ca47a45829e35c047702dee863fe8a5783d03b2bd84c701c34d2f7190623fda1b353d47f3ae73b0bc354ea6256ce77ac20d2afaa407a39405ee4ed0bbeb172ec16d65232d3819d265fbdf92d19826fbdd2c7f387389df5e22d137c99156181d0350963cd383a5197a6280febe311e9c75c6754f09f5e7d9fd11887aa4b9fb53b95cf0ce94e5f2eec5843abd57caa28005366e9afcd68fe6b7cf1a1919510b9ca7a570c6aa16a3856a1b2291de5961baa56f58ecc10edaa762b85854095504a86076a32e14f2733cb04deee04568e91d9c899e087dd5b6aad44e0baa53c554ea7962c691b72b806b0b3a450cdb2fcc44b4e9ff9b09e39758520bf6669a44ca9c4fa012bbfb993285fa558e2996deda8ea6d21a4dc8a4accef6e1304b9a3b0e8f68ece6b73c1f4aece970f5bdadec1e8b8d5c25f38d6c25f84922af60e691dfaa8817344a0d79123b7bd133bdc4f19436f6d76f06fed7252214981c02db044e0796205e6ed7606558db61fdd14e3dbaee81e58251cc42e88c0da7592f4885f6d9073bf4d7a6c91c8c9ae8b466a0d0eecd8d599af6eeb8477f1c8c1026db24e7f93b365222e252c964928f2ef4202d6379aaae413513614e022d894e09bff0ba626a78a076a3fb172de8ca947bba81ec81c4cb85c6be6065314dba51f5fcd7f0f488cdf1c239ad9594d8282428e7da12a42a886aad12606b69f7d60418b4a332b64414b1ca106e3bff67052e37d7e9032abcb2ecb89d948e451810659028a348bbbb49c0b2c2743948a7936a15fec938e694e20cac86c48ca3d6747c932e5ea3c735fb6412d51f6b88ebf905791fccf6605d0c40e92db62a43ce9b2c4a8a54943a8fb85319c680c3070afb7ac0f09d66a9deaf307ead01edc3cab482def0b23fbc34cbd03fbc6c0061fa15498137bac9b7376afb6e6c85e3fe5b254782fa105f926fa825c269b1cd8c693071546fbc46c3a76284d764cfbd65b60786d39d36a468efdd622520ed1d740b59f442609d594ed0a1b46407ed5663fd183cefed1b143eb062655c364213428032a60716ab3a438fd3bb731300c41c02f694a225224b4ed3a97fbe854b4b4df5ba9558ca077d82136670b6e3f97089f59727b95235dfdf397067231869a3d86f5fff01848ee1aab36738b4368d9788882b9c85494b44973e360444a533237d416acbf3c1d1dafa82d23799ba7a746eee7ffd125a6e05fc78a6fcb202c18ed9be33266e24b782b88e3311eef5aff1a67411df1c23552f3c5a7ccb3a11d11559873b4e46152a4122b84af559e4adb0b84a0f1346122bb85460fd90e804aad39dfadecf92e92e0c9198a64184e8559742f34ba94c927ee9ce0f49955467237571761a96c9ca92c6fc0f1fb4d320285fd0ab64e9d4c1f904a8bf064f09406654fa964f837f66c37609b7743ecbc135f6d4395b803e3446da6e0a553d4aac632ed0478d21b3164fb0241374b0fa0bfc6e936e3d95b502c78a8d131f61ea35009a4dbc0286290bfd9313f855428c62e09cc13b99f35a688e7c183a50ccec1f3882b479e4b1136523b640295f366a43a1b7192578a8aa2ed7e362520aceb135deaa4baf11166940011811b9152ce539ebcf564a477ed63be4bbf5df13d08205ba0910d6575c9f81a48555031d271fddd90edb65ed9b7941f058f251976898417d9f97651a65042e82a27d6c5dbf4b7a7f3e1a05470854998c83697b5f92e4c0da5304c711496ca286a47e115f748ceaca7977113f9ced84e7d5693eaa8b3857af53069d51a8c7f2a77e5b7497e9db62e02742b6f1ca808e3cc1e703f5689e740cd99479fbdb2c14fea186befcdc0cae7987836ad3bb76e2559a14be691d0c44222589463d95f64c3162adee4f4ae06b96dd329980e0e76468848d06229ecac597c9174dae5a6f85b1bb29f94ea30f7933afc148fc36622c9d86f00bbb40833020d658e0a88fb964e930b99e075c528ea7238a78e83a153b1074c1e32fb2bcf3419d98107b083185c39b065512cde0cff35e28807196d0b5908c7fa9d1dcdddc1e5e4c0d4ff98dc1a9556624b9b7b98f25ed9911aa8651a99dd323bdbc98c2f12d6c9e6594c4ffe4f0561aeb5236ced2d7248bec56b0a8ef002691560e5753ce791772fb2e23da5fc126a1bdb9f7fd29f7f7eefc1d866e6c5b77ffecee3c53bdf3fbe9df7a586fcf4fa14c76fc542fb36855ff7c97aad0318156ddc7d29c4ba82429ea6a81d4910cb1c217a76807de274c930abbd989f6c3e57e633a0d0ec777657d5b5aeaa6b6d8d2053e474b0af4e99945bd290824452a1a61253649d555432777d4b9409b8d035ec1fc137ccf72775c302592103973c28f51d9cf38021e1e1dd162df9c5820bb12025caaff1062dbdfb66de3decf8680a6604325c580485377a02b394ccce323085de32d1f7f2d9cff558da1e882d89217dcee2e21a94c2a2275087e5b513c2a4cfbb51293e9aff2941efd49039d2ae72a17e0f36edac5340d96967e804704b8418750ecc06382e3f50a1919e39d6a9d232c2cebd0adef29dfa63023302e3ec056a2833434076969c18683c1316d4f6228c71b0d16acae47737e0449525af542ca81c478e2c3a03d66f85eb8b3de3b276d2dec5f3438560d7bd3710953db448d866c228f334399d054ccc64d83c2346c9c3a3f384937316a0d0f30de4242e510b80a7164e4f1519f8f281f3dab2b9b5a48cecdebc345241ec5f7b2b9221f04614dc47e9968e121791bb32123bb9091d9faf506b1dc8a1f3354fcd62d5d5f7a948cc84b77ca706db9de76212686e83996fcd1fb1b63d93f305584d1dfb4f58d0199ca9d32a02bc6f34a08f6c17db5c068ce526dbbb2a901eaacd2ed5f16deef9771d9b572c473b222303deae27c034bec7dee01a1554cdf8c18a7f28723b40a5daccae32ed16985d8b74cfc00bb2566033bb2a9e739b9c2671f56baf36cf78f859df8aacf0ea7bb173f7c981febc89c79f35f1dd6ee2a74f53664813142e36d6bbfc05cc730b1927fbd2ed22afc2473a3848bbeb6c758e3e640eb739cb8a6d9a27ebda2cf7730e5c47d671155258de74c39fa0052a83e54f57b7067d6d7bbafba5aee77ca002babfcfaece520323da657f6f961eac59a2958a549c70d39ef8a1f66c076e665dcb3142e1dec235967c10535702f8877ce8373c25eb47314e302832019f4fad9c77c0666d584a68a5bd92a565bb425525a4574ca7a1c985426608b0cdaa00c48b9fb80d724eee5691616479633921ad2e7c53937b1207a063c5d75fedb789d0e7afeb5beb830e49546a8548d7ed775eb952539660527a827ec8638468b5938f5c07762b0b2a7ac64656073918502ffaf6da332d76347b3182381c80fc60c4438e2a26e7f8da02536cb9fc7a5d3cdb88159fcdecddf8be6c83d744903c6717b2cdc8aa3c969fa57b6341af255c148cce570d04b7de08f4b30f05e254a91bdce4fc23397f24005beb543f2ac0c40b132d7e3ad0b962392918c851917799f76a02a88df83b963a25bbeb9d77a51ff2f8554445c7435ed41e621da489ccb360092255073510d4c929e40b0e1a6e59b29b49672c967e8f0a11271f68cfc16bc1117a2d97ec0f633838bebeabe537a0e5ef8a5a3e34e8d509913f875141bcd796de82c9c4fa3ea5c2b09dc4410d0edb30a19403f8afa26e5f54eb07929269a569461773660ad21fb8b312b7e2d48d7a3ed46eb513fc26cdec1aac9bb66f1cf9530ee8f9c04c0d3b20d9213920ba33602de60f4690869beb80af4b052fb49bd5b9ef9bfa9d1582695bb5e00c5332e250a7f021cb55f092f476c809b5ec04a9cab33bb25951b4e8b37b778919847c156d9f927822ba9058c0e9f00023dc8a6559c0e2411fee99009f84d53944346d13d80cc90b87f276e2feaa21daab5e029ddfa1f1ecc4436c37f9f0daef5d03a8de94de63bc29c4bee838388a3300c8387b5aca457fa3abe14eb62dcef942cd1c9812176d750466d4913a21a3726b4513660bb2de8736cbe22bcd9a763b47aa813c6c06bfcb77ce198e0b1d51494e5167685c95ba789b2e3b1cb0ecdf53090e0fbdd993a3109a64cf13fb3b9a7fe6dbf7ec43bf84bf637b44ecd8fa38126a437e52c86ae2924e8f23d6f2123c6763dfd0a9243c8848430ae89e72ffe021aa9ceeec3daa5d371b846f5a02ca72da33f5872594334356e37e677e136a3cc28b2ba73bf3925cecd81777162edf6be9b78944999e8beded4b4f7956d31a0d542e4a8247a1e7f2e6c7df93c0e0f2b87432a4f5fd07150c6f0215de51c51124e421adc3addcd91890e1f52a26b87f00bcad7cb43c58ce89c3458df63492359500558b28d9b9a20e6d42d717efc501c85a372f3a8b0cf172bbc9e812fb51d0e4daa0ca52ab5022d1f99800e5ba2ed91e083d176c06765304c64d312a7963c8498eb92b4437b1bf56aad7e08d7dc1b91328a7ca44ac3dd33311a8f8c431a68de3d0726c91b906cecc259c4f0bfa60a0e6b3a1f55ba9ac736be663dd2c86866f9dbb9b9aaf02cabd24ea8d828b75d08d4ae5ce70fd458a9230f85b07131097698c80e88ca160f0ab8a1911e735c3762234cc443246428ae8dd0471959cc70195047acb46c7448843fbe432abaf91e414247e1d968e13fe9e37fecda30aeef3a75e34c64690f8eae2b1810ad9fdbd5b931f813b1f1f6c374bd7a81f9baec99a5e43a85a3b560c6e038e49ef448a5ca5cb10f6ac14ad599668362d2c00163ab8d2670c4bb39c605ef2277eee496c3692c00e67b8d1e0a4b23497b5080859370426b26d172cdb74c888486ce5569d2158b7e0c35b6f507fc88b4c7188b58763b9e6827747644866ebbe3c04f79ebbee5e2866764ea49bdc9ab018b604059672a0c19e2b5deb288892654b3e965b9f4af0039db21a0391d884f3cb079676c965e07fb66717f89ff3031c7e54481b4860f98533a234e68d91e8fa031a67572dc459886fa46b8e439adc938ac66a03b420f0ddfc5b952e02f1a282847acfbf062aaa76f3160728b5fcaa8237bac985a5c31ff65c85d6111313021f1af4299f997bcc874632909ba775976861a56fc2318f472413acbb1441b8386897de00895a0faaab3a49d1ef70a0c703b59182e4147bed314939039f25c9f828895a97bf44906f2b54e3e874ade7b0b7e4e1edd08032ed8650d90223e2c96ecdb77031955eee2c665d13f52f35c92b9d885955c73c34905994f8ffca69640c15c78ca968b16af971c303672472730aa5a0b80137e6428d838b73cbd6e2ce90267903fb0f5b8c429525a14907f0a6ecfc918796f5be05a2c55a8edbb680351b290f2a3b72273755ec2fdee8135d55454b581d9ee1231eacff1094da5f68d3a4793bdf59bb420ebeecd42524ca5a87c907f8d7aa0efb931d6d526332287ea80ea883548c8a79465a49cf90db1d9e15a31c0700549a8c4d45abb284c6ba40cd7901352c542013a3b9f65b466894cc3e0b164fdb0bd4b2b77e933de7a1b85529540125df3b6bae5cbf867e47fd227a1fa9d57af03312b058725df1838714100418bb072e8376d32227470260817a44fe2ac7ed1ba1a38d48912dd0c377679449ab76110dc4bf39a0d68ea86a20c496abb5237a434ab61f765649d323f4c44ad31e6da832d85016b3fc1c74357ed216dad66cc1e70333b84b809dae274952a768aff0ae9390d08e30062cdd6ec25bc93984fa58d12e9d70842c710201fecc7bffaa39d899b1a9dcaf5c48903d01026864f1b889db87fec5392614d25745a5eb3434fc4fbefdb726e980494a30490becf1965f98a4480d495e18a00cfdab189b5a84971ffde1b4995c6410968e1508da8f6a1a69b34159e419a894c20dee599ac8ce5db3a5fa0541b5b266dbf4a4d6bb266a052c6a05ea588769b53232625815e1563a8cea898c386472417f25895b3ff2a8542d979c869b1e79b8885bb9ad62989448adadf496f3034c9a7fa03a33dd855022cc03119c8ee0e70085d2692752df155011c8d508c8f8119a9046646b408f3f9fd94cd5b64a4a4f58f484b7eb06e1d243c1c903367a0a3bdccc318833b99e3089910102354494c372bddbf9f98e757bf6f20d345b32c9419c1244009cb7d7338766ee55bd4301f34580a3cb417204c3a89c8f3bfa2046efa158280780ca20d3d1f062f4039df4411f8931411beb11722c4cc68c9b5ae5a9a7870f2eab7d470ca8013d257f883a37fdfcacbe6995ffac8d2fb29f3518bde84792dfa51bc02ecef7ab06392f572778175b2bd4d9d7075fe316691083cbca5e365ac175b42dc15691b8cafa36d2d02b4c0d5736f44aad3a7a9704ee293064c8db7789c2a2fb7d8fa89aae330badd26b14af3b1dbebef34ca6184dc13c3f4b1344bd1ef710805f3432cfbd7c3103d04cf98b2b7cb1f9f7bf8863042c29369571fe7bba64dbbf03895172ab651f35c04ed695e2f5b92e8b60770262a8f4610a3d9d63adc968024dd5fba850b68b0a2b156f74b3ccd9d22c1e5b3ec9277d9cb60ed7d9f41c386573ba7162ae319f302ad200461adecd15975cf98e0f4c72b275213a9b9399f1ed4965c4868a45cc6f8a908cb2b9700ec795d14d8788ac3cd6f1ad43537a69c1738e60e3406da6575f7ab9f6d2bc82a060be085abfac50d5c7406de4fb1f60dd9398366332954cc6dafe32d2269588fd6352de4326231fe524104a87e81d7c701b8fd94d118fb5bb098b5d016daa5b86a7d0ae5f39b842a89cc9c8d62678112ba862c0385eb85903c55dc33a9420a93e33d1d1ea10d4abc50c4e9dc0b82fb10893c348716320d2929fb8963c45fc6d3256d43190d735fb8924b8bd9cb88adcd1404952e90aa9743afe5df225dd8ca35a0e488a3c5ac99bbaf9321ac347d1f343f50a282f1ce7d927a2c50757182407aa7f588a5b966ec22e0f67d72bb4282fd9d7758b5f0b2b82887153ec0f87df9649e459ae946170d721042d9bc3fc2b318929cf76c27ace7986c79024a7460981d649780f8a572075a4c42806f1f5f2b2de96b2aaa75daff8928cbc7043db12b849a76b3077a0ff9c6ca46f191ee6246bdd49ba7f44031b701bf71a2bc437c731439ecbd42de55f3f58f9d7d700efee2d6331130f40ef887f278311b7869308f25f06c77320d8b0f6d8d7723491eb8ad9b5035b0a3caff9c039757ec1adf78de07fcc10baa8b3e69700f65e4f2f694e78a5682525059912e085a410f0003b29c4bb42ca4acd0e456a6d482a11e9123668d4d6c631b2eaa6aeb716a451bab5ded8db6fc4f68f7bf3860534b5b35bcab61f615455c14a26554ee1c7032fc88244f45ea495a340fd4b04e0c05e8d401d80a76cf0ad38a3c202229e55ed8f492a0f7b650ce84112173d152c31c6766616ed15b0207d4703daf089394bac6486e49ed5039919bad6db86f481cf9a9ee55fe686a5a1653662d972f9d574a53ae39a529c1509547146b18294dc4031d2e6cf378f057c2d24775782e3ce5baa888a903f58c5d1c47b2962dbf65f4d0a8f77b8443a8cacdac55aea5fb7d8e0a7990aa47e6fc293d589c7b4a43d6b3b7070d12e360ac8407d55cd5670998f55fc3e63740c4dd74bdd5057bb11a909529e04b793c38519fbadb56524ab7b6363dd0982d6406b3bf1c647a846844dc859b0325ddd02072d6c435dcd224695e923065e4cb41200c53a93b3144756c8c0b4ce86dabc95b9b4423a769d6dc9878d6f6e44f693087b9861f35fc08c8ab25c66d915f8ac6054d9f20cc0420c6a19a3c414197f0ee2a4c200394a4d96b026d40d2530cbe7564fe67236366b21e19e9c0a3f2973f646ddcadf381e99b81f8e7ca6d608c339f1713fb1d678e65fa4486eba72482c1eb9758037706fc1379a4004baacf3dceff13d624d6ded240bd5e63b47b4ccc600e50838e8dd5e54e9a079089115011f91e68c65ee7c009c943eb63baa5f3b62e2f51ea84eaf3f98cfef36825389db5e59154bda802c3e1e59c199783dbd85f2df67d94297fd9d7a7c00f52b79fb85672f2e508ab9be2a889f5e8ff413b8fc23d5d583c9d86e6fe7ef316a81ae192143a144371206f26313caa5a2a923d02805e3fc5c46527c740d32dfc2d69a5113a204e3d4b1c5f691ab040fc58031676bbc985a5a55c807605a9abaeafd2d2a8d6f7c39af8651bc5aa5e1710cd2e9482070c4f978e558bfe9485c1407acc5bcd875fcd5a99762e53a8da937d5e94853995ce1bc172a93d28de8cbcec4e75359c97e2d90b18177d5212454af60f6c8c94eb0e8ec258ac705d24a51d334155facc020089033d09b1854ef0452cda0831ee336367da14470778b30d4c15f0fad6d41d5ef0a1d78c8c7a6ddf03fe9c440053fae7c0d73229f18b1c135c199d3f247a8c92befd981819a5473b4fabbd568a08ebbe8aafc04667367149d264874633a32908547a3f5abb85bc49d767fe44d7c17385f0e02b8a6b6e9351da0963c7168af77f35d12f3a773d2edef5ad0f5ad817ab40541685a32111471810e3b7687b5315eeee3086dc1e57625c94fc243162d2b6021838ccf5c2bd05cab8d2c9474362e302e0dce9db768f12d81070d2e9e0eed82a991ea5306ff453fe6ada1a11ef5fd7b85578a1654a9890b2a18cfb93b6d7c5dca493d14d56f71213c5baf6ad5371e31e7df08558947c6d6bb635155aa0bd74ac140ba28d7c33b3d26bacbd2e611ef486f7e3e8627a62b65c53e6f80aa7904ffd9637ffbb88f0c6a801d209b0924b57d7537bdb3333af1e8e6592240167326a0cbf99887b6f710f44ad6854e4f620d949a62a34ff03757e5080c910598d57ccc71bef7aaa7a6b3d185287d7fc5f2437b5ecb90062420508b094fa3a4381e1b8c3d23644b521e4febd01cb7fa128eee8f956b485236dadd5058500c97c7c686ef3e80b5ed97a34bc2b0bb973d10a8ecbe4cb2dce9c8f0ee724ec3558374e30a7e878e535c03bab629e5a31f55d09f2016ad09ba21f4c306adc0f09040ba287780161648d999d80282f77a519f165ea7d0bcbb0cf281c9972b3e2676da9900a45ddfb345dc0d361b83d562dd96168b5466f10b86622e01fd4ef7778837bbd82630b0db3698ea15357aa8429ef80642728f0c4a4328e7ef4c7c0a6cdc2ba30eaf588a0625b815c1610e756c210bed521724b0ea8a59394e84e9d2570b541c5dee4940863c9aec8bb551d6127aa89d6109c7e93954f6c30e7a705108249b0745905092f7900db0f68606e3b6febd14a82021e28984253f9bb0a6ea73a1a1cacb8d1348431e85200d05a5ea21e772f7306a462afcb2fc971944f22ff1e4c021e1cc8a9565cc5449c4461d385bece1032cc3aa8db260c80ca2d7e4c9c31676f32d029d707d2399db3a0461a0d7cbe5022a91f467426dbce6177fc74187ee58fbce3906dfed5fa73537a3ebb2b7997dcc5c36a8e8ebbe9594b382457656e358dec9ba7f591b8382a6804bdb9c148afe844a4746e54b2e65ab665ce6d39d033274c73ba295201607060a6881621616080ae0c1593ced04febef9e0a444ea6a650b3e2258ea1a3a70fdc47535626bea301a0e47ab25802f6a5b14cb418f76b3917188f0f74f6d8abc55b30eb4b017d1fd0583b104a51b592508a490e6570d92fbac965d54ad0305d9cfaec47b338d6283143c784778904eb0d59da1469e24d298f23c713357a548d24288163f2cd52f2a130e75af4fb09904a573366604ca198b0c936a28a236574ba7b8b3d99878781b0f7566635d624979b898b3009db352c5c5d56c2cb6e90e26e1859b868822dfe7ea39782b9706357cfc0c4fcee7e38270a37f3739f869bac97b9ec1b0b7c4f256af32a4d0d45ecacf0907ccf410f36e5cccd409f13353de5c6d832cb394f50447479a10a8923503cd9186330d54a061580335d0e0a7f975f34c4f039d06ca0a43a9d8b0b99628b50c8c80b243b15dbae15420850d69f11f28a38a17bd93f52030d116f04d0b8d2f6615c4183352a16a4215cfe540c2d398c3098ebc36ae54d00144718c4ca5d95c875969666ec84da5ee9b78ce2a7235f5c561e9e2f3bb4fc6817535dddfddbca83956bfc529b28bf92ff3e58654c26ef4007d1b59d8d6cc5932dfe03a1b5e63c39b6b8c290d340af3f416b2a22b4a483c26db8cf821f6c856f8c1a67f53b001b8a0b938362798add2d0522d45d1af84897c7badefe68c291728fa14807b7db47b4c5fddbb62aae1d3d0b0ebd49bf57cb496a27104244413b1b3b50d1270085e43a0381b1c322af9b89305d3188e50982e6095b0a28052bf88f5b6da13f8d5c65fa314652de1a2df09a56887fcbdacd2d384405b587860735fc58b318300577a161f0a11f9d32aafb1248731acd22faf721b31d1cdc6c05e665d40cb0451836afded551f8ad42e769562970a2eb3ddfc03fd85d9fd8223b1035e2916e89f8cd48e5853a44837a013b4e7ac421830f1e603b486f0aab250507099e1f99ff9aed460aaf4e033e344f4faf64e5c844aed9eccbe827697f2f64d3857a3927206557dc3ec3373580a4b289062fba02a951ed7d32cad05d3491ac2e241ad1ad060f3a69bdef0fa40ef75584880b8ae5cb05f613f484554012fb431fcf2bfbb3da4d97cfc5ba085e522aeae617bfe576903970c774b5f64d793ebe72247e29f5d56c4f20bcf6ac81e0eb938a90a97a21a1bdb11dc417a2d6670ec2e7d733ae83baad0f3c5a25fb62cce022b2cc2ae2a180911feaaa33522cb8a326922cb934b82357e2fa5e224a04a73d4d4acb65887841bf4c099dfec0d9823bf15e9780dac4313a7913cf3c30f2ad3ca4259f004f725ec451ad59c65f4725d599debd8e00dec9a68e1372dd09c21662d511386a154385f4e843a91baac04c5406dfed0b29c96ddda25d9ad3eb31cc5a636b82d40a6b33e65561f85622efab6f819a8646e99f273aa1e0941f87a5574d7e7c6e6ccf3c598a8e182de8f54ad34fa060f940dbf6fc6da2133d081c4eace48326a51b05edbbf322e164065a5e6ec567b28caa6b962b5c6b04e1caebcfc93686b862da2fbd546728266092e722fa467e57914894a83f093210f99f58bb2187d0f513d2ad0d3d05edcd7c2f69f5d5f261ca93adc0f0fe6d028ddd0dbfbaff39bc473e54282aea6d8979bb5afb7d68be00154656f0ccb6a5ec58793e38ffc28567d0989630d6c590939c083b02a27ccd14d6062a036fcffc9844d9b09380bbf671419d16e8ed5b010b8c193ae30df916c4aa3bc04eab78273a14c921face62f3f2775e8baf87079b5f37d3ab6eb4642dade60ba5aeb2263cfe67cd6a2eaa5d6a6f4d775f72315f5ef0bdbb41343c1d2db746aa9767a0779d7f43dded522a014d448b8e08f920dfc601ff39c0d04eff997862a40c69a5de9e9413dab034ebef7c9939feb8ecfc8827c50aa4627bffecf9f7c610ed2af09d45133a5a2a84a8f684a67f32b2a2e3ddefe87a75433d68f5c76021b23d134ba72cb08c55ed88e73af268196a467f3eb1ce85dd95188072b91815a2f2e38c4803d0c7c46e6e3772c54f96ab080d0e1c8a01dc3a6c625eb9236a00e3f6029cbc5b8309c43b3674a09ef9ae1a585e6a1300a61803c549a1b7b14b9d0f0fe28a487de8ca7063b399d59f941339b58ca5c6e2b5cbd62576154d4f2a2e4a48354059669af28c01712b6080d18d7de76c52f67e5d559577a1f8c4bec6fb1b061fe5ecb33bd0c2f7c7952c51e1b7e33e305dace8a0b549b9789d6796e65810a2bce39d3486f1439179578c4e2c9deeb7db82945f4dc7a3d73fc16f36b3795f2100cd1a820f7f6919c31810a12208c2f033d457308aa08eed5ceb93a8d3358f8b61034d2dc2c524d6421cb57a6b0e17178181e6e2e116a52e99a88e09c34deab79858da6155873bd39cbbe9305abf7d5b955e47476fb2b2e9a01d9364978ed1a233aeb692c67bb6ec0ab468a50766b1b8668665e5401ad43ac09eca721e1bd740c7539598eb61fe44df4052d06c13844d4744032a3824def455ed0dfa609fb83ae2cb912e0811c4172df54f16ea174e739613b7b21e3694956de4875a6be2121b3f6b5804988c2271cdb4bdd3850f1da22028b792900419a1aa850ed3bbdab14f8dff4b955b5c7d510792d3f30ae453a936f21e1af3d04cce8826b30755442bb44acac2b99485da86c5cdc19ddbc66d333761df4345e8ed94a473d6500254c856da324b362683a2425903d7400b913742e261698f262ae13e64564cbdf615bee930a877927ee967d587ab590f1554b0ccfd2e33e09c7ce7ccce1c51e62567c36faa2fc5407164f5ae6c527c25b982062ae3f743d4fb6a24e5f71feda2e68923b815793d3ad482dc9662826d745a15f98ecd67c7c75b25bba965967352a9ae71e74f0676153b4daa39b2795f86a3e64ef2ef3b7c51547cae41d2fb13d541ae2a30aee56a8963a859357a6533b7b69a88bb57fb3ec0a79cb32083e01d989f8ab81f52f5b5d42eee80e0e453002ea768bebbf1f1ac021c05f8e060a86000c40161a1c195f6f46eaf18ede5f378797c31662942ec8ffdd76fbfcb18dcc116db043a57b53c1fc0980045665550df35b224fe3ea64c5b5b8a62b367dce97d0051e0b5544bc6ab1cec472c942dc1e5f5f01ffcab28aed4e56308639ce703f4c27263729a7c8291a087ed240ba1c335ed7acd8006bddeb69ae50c66ebfdf59b2e57727c268944b420d60a3042a98fab5c548eaf8e63c8d5a5da0aca3d40daf643eaa7e10a55980d2bc5d308ef6f2ce300e65b18d50cdb7761b7abdeead93a073231fd56f79ef5e093ea79baf35bdd9de30a3dc6e7da12d816a56b5441ba85615294337df2554c0727b374fec41da1e4744400165c242cc0eb1914c70f6c9185b9da09a1218794f0c2edd3a8d6ee220983a2375b41f5cfab4ff1f6e5641d0078bef905ffa49adf7c087d9b24f2bd9e1ace47299a3915d90567ed4129536e271c89e568a02603ae3c7c47aa855e99a1f53011fd5a1bbbf9b0d5db3507a714e500d6c3db5a3c2038a5d0881b54552e9c942f3e9607bcd96709cfd30491dd96660beb7dfd8ad0785727f0ee2312286591c94aa01e68d1d48cf3d62b794ac691daf4b7bc0f3ba05317681dc894560c1146d3dc64be9ac181443e75ebf71321ebb249c4e20a82a011e35ba65873fe7ce8b94490291176754485d02a491c60f111b8619c48f24c4c302a0c80068c08042259b5ea99a91d418a99f293a96439225b005a11c686b99028f8d24853d2a0943bad54bbf71fb1ceae37288f864c780ebc9924da5e5e238739db312a8551bd03323296594af00f166d4106ed7d913d402f0c5b91372bc44870c3a0e1df3762051290c268159e69d22013cd135fc039d48125871b9fc3e32fe60ce79cb8594a1c320685cf228bcd3fa85ad2ddabf47d648dce680e4b4bb8230e8adba945db86e77e1b437d7659c16421666839f0a74d08dccca8eb26a4cecd540c2ec3b4b9c770a504b2f0a42e6544a8375573b5debd803a28d1cea4f127454dfde5e6be24d053d128c7413543609450d5ee9e9677971c877fb72ec890baead328e6c77c3cba87a806ffd28f4cdd6b363163d78893865a55d3cf482c6bd2213ae648043a9cf6916ed0c7747068bfb9b91ea7f6141724113f0a82760587efe4185b72488225d82b96f6d7b5b9cb801f29087f9e374fcd68111d105f7df84a509192bcc5fc84995c8841caa78c59bb6428777ac45a60947f848d94ce27069dab5c21c5acb81756f960c20ffe4f756897dcfcd86377157eed5b2a1756f7d0c6e2a01dfc306ac8113b96796c61c80351da4e8cd234ae9d22c211cf689d366cec62148c28d60191ca1f110de3e7e9c5141c145fb3bc9369f8d51246da8a23e8b27dbd0c2f6618ffdba755b8a8a6b60d487934fda870b46bd12dbaf565816198cb1e4590f831d707cec271916b08d20daca21300011f316fb5437671fe12ef9bf6fb29905718d7ade769942b6505e567ef3ddfd1e08c60b00c52f082a8a7e0f3194e7c220f727ee7a570ff599f248e9ed938eb60cd40c4602eb92b816ad4b6be429cbc8a798997c8307d0dd5c8eb6e3c9afec420db90738ef9525b958dac0cc81344f666420fe58de8029df874ae668356fa0e6320e52c09696dc288f79c980e665d2ba15e9889f1c580f4d056568cb21191539150f2a52528de4996b31860ab9b60bebfacd7715b2400ad1db195a05d1538755ac8dc3a04931a2ea2ab7544d916fee4a376b9aa3af64c426df98b69195f56215cab51ea84ba55d0a7d820b9eb3d89ee5ff61ae7187853d3f85f8068cad153bb8b0a3673b2bfcc55b0524cf345676a1b1e32a20ffef0157dd151be602e31ea82441890d24b2040e174490a0b339b0b06fcd149439888704f622dd0fd46232b69ecc7bc0d9c90e58302df51a5c5c67aadcabbe9aec4389b0959732ce3562ed68e10cc9cab045a71794acdf1700f49b50ddf3665e59e09e27ec02c3d9ce787d4db6effb7c7b7f699d749984a1b2045dcb603873ade33297cd11688b6f667920da057c69a5163c80ce9967f588db07019be17d31b178d011e0261c2c80e7f57b55cede3902b1e950155c415e4507e2185293b1b6dfcce4f2e036ab0051158f2a18ce91097b13a9e8ce39964e7868997e3ad8240b346caf0757d9b0305d3716d042f1a36464580557967c989fffc09c8fd4ffe824e6fba72964321edb9186886e4be33122f1430b6f269bc2f84557f792db198fad40c9bd051593fab28d3480cc746c1985a6932ba9ff0df3e39d7f34e08d0e5bc199b7c3bb0df07cb9209668266b3e8d6d306b2d85698b9b4b1915d04c1c9e5d89189f7510a78e465f098f15e5d21a89b6bc280af9d4835bbc5d1ddbc0a0f297307d78884e60a5b1a2071f0fd2650ebec4e0de1fa447b9351824b0fb3f35c8ec047c04668dc777309eb4703e4325ed625702880dae8175909d2e20bec4f3ab6c7c9e8905cc0a3b92fbaf4ac1cabeef901dd5630c4e4cac657eb631f7cb213f560185abb79f3ffbf6c3f5db8ff9e0be14a39a3b5d4122a0355b8eac988240ad8ea3cfe8ad702489deaa7175ae1a035cc44fefc977af3d6115d44733c9cb4d6c8569b7a4c102a3725be85c497f6d628b5afa2b390e872cd550f2c1279557ed81a48201bfaabcf27075e9c2b782ee6aa0d602adbb86329d0de44e89287f3a8d2c0b6072bc7bdfbc4b9f913cbfc0cc0ef4c481f5a818aaf24619aeccf55700136443282311be83c5c43d37d69d7fc25a944bad53b8335b8950f84764e15d0cdae14f3108e5bf8b4ed1981949807d808fb49b48dc8680fd3ee9ba5743215dcb78cc31e9569e5985f304514c2f9e0bf7321a96e4d7016a69a80d8bb9aaccb425a33a541161b493f8928ccba0424d98615f896703bd3311befaaa4255859237598dcbd9705e32bec982a0fa02cb2775f6b5497f1ef243bbf1e70dfa35f1170d73f9e82ff957ea27e6f2a0edb74ed898e47187db35cd85e81abb461294d65cadbb2c84ec08c936f65593f168839b07f5d5caad0ea4e427792c391274c6f25e0d9e952fc4cce65cf878b365b5b4024c7d00619d5db6db38f8edbab9c6121c7d64d6d5a8a9d8af36023d9cb33f01cc2e90d5f6a8b5dc5ce13f8d158b4ab53def8e9ee5a860c3152a729122d90cf408959a37839b951f60a88955f620beb5be39bba5a7d77bc86cab3d6ff0e9c16e2cefe73608a41c0173286b1d071bffb441559b94e7e7f1e64945d02e1c20ecb869f7e64dddab399ee569de6c0282c8aa6d838f96b05258c29d5f5c43327d62ee67280afb4a7b9ec370b729678e6da05dce40e1f83a0eee0efdcc2fd25a3703a30d657363e067974f52eb52a235dd067e2dcee326ede2e3917acaf7d6577570d9acc84c73ef76adef2bead7a30a0bfd1aa8815aa4dd9bb91f34a913f768ff8bda6fcc2cdfabf8c7cda37a55bb89afe7e7b6383df7408d2ff62df583056dd081aad0cddbefc72d1675a0063b3f4ebb1c91bee6cfa513ceecd94c1836f75fd61e396df3e50a1e95cb4dd0e5b124f18a0f0efd41614fab77ce17fd44887ba91fcc7d89abbf32a857237ac52c7ac541b0f755d5ff8cd347c4d3d45243985fc0b980cc1c07814d24cec5567c1c22cf635cf3a6f4d9b96f4a2a6cd8b4b4ddf02736b078e4ade44dca75b68dc8a4bd8accc717422b3ef28948c088602e9fe4d8efb7251f1714bb0a2afbed1bcc97b30650bf68ee2599b0b6943da3232b78431e310bc0b7dd2d385220def2e40396a2f85063c9036bd2df3f1567c2d0a4f6f015f95620901bafe602a127c788484803d1d327731be49444f835c00352b94542d3c1525c4e07ce20a8773822fe9cb0a85dfbc60455aa33505292fda22375f051b0b2fe4dded3a12c8cae937f61a4c7c40c698300c3ca79486b5a3d0f79bbbdc976cbd063140478d1058e7b668fb29ca3e5777810d97296a07bcdaea17b1e7c79bf15ee3c9a3b56721954d02756c39f38318c2e1152ab56670412174ec6f5c192a152f46183bfb3df6f5e722af79253b9470ebe70469218dc83ecd8274903ce2a6774f3a0a17ff38707e4598b4c5e6fe3ccd3906cadc5e1339f11e6309e6b9d056889215e1b7087b6b75c2dba85346bfead54b5c9d14b39bf7a56766ad49910bae05c69a1993d1220aa312b746c6b7b648d06e182814ae390c22b38116846dadc9df424efd948daede062fd14990905cd47d18cc629e2100aaa2387b8b37412d197ac67bee3762e1ca794913480fca9573a6033f230df00ec197d64390f93b677a0d5e5b2eba395fcdd3c3160f5f244c50f98dfcdb8cf7d7b60dae53c8114d83e45563b3546e55f2cd9c792c570e39eb8d6c80680e772bd728a24ec6ce90b4a6348c5bcf8816a9b57f3fc3b87b99c4bef3de929053eda72154a479e0aeedc16049c163cd747443935cf7e31ca11658eb3037b10db2bf60bcc21ade4d28bc9cc79919cc67469a683c272d91e93b1c576caaeaa7d30915ae91fb6fa966fb165717e0f4e70d11fbd5253a6d28595a2e3f84c20c3c549bbb536a472425a18a59fa0fccbd3c5f2442ecb9f3cbbb3ebcb435bf4628d827c48c4b08bed3e8235d9571fa8dc53a98117eb62472e52d2514615e1f3cfe71b7abeb419c7bd9a8292baf6d9ebc094eae12f37184a15228d9b34283cf1e1e67d90a4148953b921d11f1e5889f5580ff2533ef3b77848b6b874680f8faef3c27efc43bf703966e85b0643b4a6f849f59641fee1a1da7693a0967030d2e21c51d2dd048f5e3d506b5f3725f3da465601b190c9b34cef33e5cc924e579864634cdfe1001eea1c23584550fb6ec1aae872c5f1dfc90ae9fab0412698d533d3d85a83451d6fc3eefcf696b77daea9da8b80c773cd140c17ebab9d5e424a36ab319faa81ce49cabf4d92dfccd8632999057aa08bb03e82044c186e2cc3b22d5628f2f8834f186dec3f7467e8f824e362e71e492cba573f541bb314a36e108f11fc9084018fe11e787af3c53efa56e362a668271c9a5e43afea74378af265eb6fbf7173f9e30897e4e6a8afc71fbabd67352031634d469f4c4493f2d26ece7c7edc7d7149d315a7e46db0a44e839914a93a271af1ce571e28f2d21e7255867c6f0df95153e01336d9acd4321b3aea08c3cbc7da610d9e08c72fb4f3f05e3bcfa52578b785eff2e67a117d62bae5bd741fd1b4e7bbb84d05f826813a83427b8e9084c89255cc429c1e78cf45aa7771be72f969a842d53c474c561be7c8c419b70fd0205a4634dc4efb4638dc4dfbd603553e74db151fbad93cefd7f23722aabfa9a4c12bea24a159d1dd04d3f0525a899458db63cedabe160bdfddeb640f2b4a2ad9f0b7971bd6c5eb5b362f9e7f1815a8063e553f4502f500986b07e741a891908f7c246fb2625389ed7f2a75b5165bb93a3398a0172b8eaca015595961f905e58666b415e713f2541438bcad14f1ea7167091ce81899e4b39e7c34a01ed079c65f7250be328f275deb0f16e8be71a011f6cbd967c7f2e6ccda62933d489d23d839fd4d7c656aeb491efc6a8a25cc3412d58e655bb53cebc673bab4a0398f7d9ec298c57ea241efce600716dc593ae419a4495aa25a0563404dc3623fb63e4f75572d9186b003a9a3e75a5bcb84b0920ae5b5eecf6716f2a935bf7a664978f90341ec3c47b2eb40e5e5b26cce1e05913a6f66e01b0ecbbaf23e05c162c3d281de2f1103bf0cf3e330e419f5aa3d4346de9dd2748950e47fd394d630a549fd1353caf240614699a2ff3f37ad0794f5acef7f695a650a60c33aa034a24c6fb66262e42563804e68c9b5938c4d0c83bb63c8a94dab6755ed78a6f833e86be4c2ac74cd427562162b779d9f2e9452ce96cd37db16e086b9d67a24dfdab538ea206d0dc5fe19a8f38eb742bd06cb11feeea8a249f066d6f8c77b6bfca02215033d9d5f8bfeeaeab285d8651e03630af9c041e8e55d3658ff89a021725eae8b9b6cc5fd573314e6fbc47e792e54e78dc163ce24128494bd4a52e4cab79639653b74f207c7b6ae810eac0389d4216492d4a14baf1e05f56f7a305e62c59adf3955f9bb942fe58a1dd7761b6d98ced50d338062acb7df06500237a1da929cb686f65d41a8e294a55eb50513d8e16fed18bdb3dd600a9ca4c5d95e729dbdf4cfbfb4ea6794c06f5690e1ff4a82ded66165651fb399610500807c29738d7c8bc8bf260a9aae3db680d7e1846b54f2951ad168035d3a80bf788e2c7601de87f2eff9e71e64a3bc7e428438cca16b63a7fc3364e5270b3da9a3a5fc644f5143b17306e577df5bbf9e719d334907191049a4c4393f73fc75c9bc030b2da77aafb01c0b6cf2d6bb9b8a3b956efe4136c1311eb0266ce18dadc66c35ced826e63d0a6d348f240d768924f06571cf56638a51adce25151ea9c084c8ab5aa3bfd4c50305ac0e44f2a76c68acdfc4b935498e53c857c98c7bbf44dbf931209245ceee138786553791115d8fbfdb36565248596d08955b41205125b859fa6ac0bb7d06e9be85188ffa626ca9a9f7aca63ee402766829a065e5aef52fb34d4f52128e223bbd94b7005b81c531d3e8590aca0b8313bdf0a5541f139cb10ef034a64005eb6c4606f0a719dba86b440e4ffc5a82bfcd19ab51ceab3907c8e78deb4331362a553f73406a0d71d7e808b16411f80f6cf43bd786a4f2b5247b72135a29c89bf01dcede82c1683363ca705c8612e1acd4527233bf53c984d1d5a1b73623f677515c66e70aa1684933e644e0caa43314ab9d58568ffdab41b1cce6d60b3b6fe681b2066ddfcf1115110bf3ab94cb00f8413e419db0e2b0a33bb25edcd438e58c0c9c93b0e3f6e44c061ed76c6ae34870c777b51e9b79c81a5ba218ab2d78feb45b1ce5830a998ccca8d262f063b2e8d94324f5850614bce5ace707451e55e6fc1016caed71793b5499ce7f3faa3026972970fbe7c04d840729524335dd18f963e2338c7f3e5f6cd1cd1ed9ab7f2bacc93a31bfbc92304fee56c63c598379b2c3624afd356ff53be1f89e039ac36d493847c085f74a4b2d77f557723238858907431af291d9c0f62047f7e08b225e85eb7458b67b510221c4accdca969e6b19ca87ef39ee6abe1e2346424676825c45b3fb165061bc9edbe4b973508e6f8746b7b04a927ac4a4a88a5b0d58bd58855e867f6bba4f32dde87e3da35cb0b94f335e7f67c621817b59ff73733ed7f45ac4d80ee87533b10d53f76c977a540310dcf36ff9ee6bfc464a3f95ec82e9529ccc35987a66c7c8d85b13df4032778ecc1e5be75be08b12705b2e9e93b96c1e046d71f13426a00d2bdec3c91c803bbf731fa9e39cd05865ebd9640d4b2a01beae017c635f9ce1623a63eff777faf52735b201eda978cc279b4d16311acd8854945915209ebb90d104c871dbe1d3bdc7dff33627c7cf80275dc32a8802fbcd951d9602c351fd1bc8074705644cb516165bca9fbc374f76b665da8b2e3499d265cd5b1200317bb87aa0ab61c192d6a5001bfb0a87dc1c0b2d29b540fff9cb814a4af79991f15bd2d201f7180fb9d0804203211611e3aa6c29435e55b743fdfb1ed550012ac99f58042a450feaeb91e8614acd2c97f0ee9bbd57b63ca93366780d54d174ed97edc47e599a2dbe9260d76cbf990f644004da64f98eaef8daa6b8b75bddf097bcaf966d060ae5d5c643d3b899cafc13f9b2c89bb4f0fb4e2066b50702ca1e9be966d496351ace4f45be7fa7d6ef47eb80c8a919ea55cc95c8f6be5bb89b6075e5ba1cab9975cc2864acfc1caf80c32b80f9c8c71715c697775066d0abdd59449ee217d727df3ab7881291032b9fd65de14f768ebc42d55557bf3bb4cff999f5b5ead92f8ca84ee5ab877a9b245c7f9717f46c0786cb3e298db574841ff0e4404344d8737b6d25ecf39513effc64dbefc5786f5622716bebacdf5be738ff9d6f92222d50d827fb2b5f93dff95bfb0f4ebbf9d6a634f9dfa9476701e7209e89439913583ae85ebf4070cf695fef0e7b5fe45ca119a9335f85fd6ec676c46200119d0e0a05da5658683856fa974f502c6bb646f6fcfaeef209aa1c7ca027604f69811bf148eacbb1957a0789bcd343cc5cdf4816f4a4b9cb9e93484d523b41fce299ac2be13dde045505f97908571cfbb64d03825bbab95763b529c57b55e12fb60059bd27368ba49c45161accef2e735f82f849ad248d39c2c0662b3e2ab1edd8383ed8daa18e0dca804e305b8d8db75f49681eacc94ad4b7083ed947c935b879522751d956da873c502ef6576d3d363800755c6cac6d50775c5c1ef8b4d061ceb05d8f6b48743fae93fe1a624519d5b505cab2af8d8c19948d1f5d8388050fbe3ef5f92658d54685ef9d7e5c670aa3bc893bf1de5ef99e52e9c8269df4d610132e33245fa9e17dd68bd185436d5454e307483b487003c7b28649ac97679add5cb7b45aeeaeab67fc351769ca2b40746a3dba19aa2fca598fac0f29fb438fd687f2775f28b28754de23b2f41a4c68f2bb14ce966202def4e5503e185aab432b3a0d4cc83d428556776ceda0a8a415f2eab643763a0ed457184bf8e90a65698e5405911e5e0b91517f501488418a96f88d438de8cde3b166aaa700c3388325b68dda90ee1f34ebcebff82e1ff96dc6a544da50841d945a9162c103c27aedd3da3365dda336528dcffda216e8df430a546449fb497480171efacaeb1bafcc014ec71ded9f401d985a6430ef36933b83f2d9e798434a3be4c7b6b33e5b1a49e082018c2f3ee4eddfc132e009ed32fd119fdcc6eb3390d95a8427a3c55d9be6136f86a7333d1fd47dee3fafff616d4e034e565f2d39027b83ccd047ec3f4978d400abe7b1d57dee34c5683f5a7b6de15aba9e325a08b680139940c1669b85f2c6be2b064e40c6edc49f4eb1128c8b36c174b43b7d0c9c0a2bfc61f68b7966ea69b833c58f4c7d85fc875625d2d34ae08c6b5ddc6ea4a6586c67dbbb79523b444d7b0b0b21ef3883159763461b769d73ef0066d5ecc3ded5e71c48afc65336620bf5336bc048dc6fe36f27667edc39b07f67bfd621ba81893e0d0c0e9efeaf813c2379d002f1bbbc6abdf666fe7b7ff513d6038f575b20b3a8fedc40fefbddfeb200f7d5563cd1c2c9917bfd5d390302f2d02076edf348cf47a8e703535c07a459cb61cdb359efb3b18a13fc63967d5b70e7f35db047b3bf6acf667b35b01f76b5be75acd21aefaf26eee64f45d653db5adff8911217351510cf5e9fb13abf95130bc5b7be0b398cf0c5eccefd8b6da4da3f30e76cc3b6d1e91b543a4a878b54529461b6c75e613baf9ef5dc81c4046a4f83e8aad91f7a1306aaf64a0375e27ee17dba7c31616ef08f4d18753eba1c5ecce6b3197bbc2bdb504fd988a78ca88b6f4484562d343c7bd9816fa1c326d644502027fecd931abcb53358fc0e4150ffc282c681e5de3797ff1292eccb89c0bdc224688097d6d3b1cd2472623e4fc7663af4cc8cec58162999bc8a2df2b08e47261bc1e381cd138831a90e1b9982196e9aa00f07e4e6f178138e6a5c55fac67f513f84f034b3e8714a01cb4a8b97b2bc050b90938e0d825a134be1c190231e35eb9b54820ad9a2332f3201d9192c8133c9fd79bad65da71ec85d32873de148b06a2e7a8c5b0f8806c9d3b95e4322cc8a3363f7c0ca984fbbc6f7ba800dfa30eb9a1a3f4760563bb32e4f417ed1c5c54eeb56b24486ca439bb90081123e49a016306175368082bd19a895afd658149e016a61eeab186ed127235256afaf1a6bf818dda965478fc0a0d1dab20d2fc674fe7c5a3501aaedc2f776cc40bdaa0d8acbd18e11138b6c32fcddd1f95f895d113b7cd6b6b2dfe670132cdaf6bc496249656b213cc92359c6b1ff1b3794e421a526f150b713e93a5c4bbc92e093aad0c06ed937530c7e50dbe184e26f760a4c75c914cd6d3edd5c0bcdb4af3597a1b9bd4c88516a644bca6e6cb56e8932b7b1c8f96f2a5e321d9af6e6988335da9d114ec7085569417a5cb4d068ddd2565e6c4608cca500373cc574f3b86190c05882f3a9172113e1725712dd50a406fd9b17755778ef3b0105d3ec2516ecf78912eb1ed4aaf8a4db6123c1fa9e666605258cd711c3dd6298bbc270c57f89378e6d7bb811147f2e22e05d0c3d2a0d5d8e181ac341c06b03d27b1cfc5a30f211b8b58bab6c5b5ebf5155a60e342a77a38bfedcaba02fe6c543c67ee1394e8f5b1857a80e782ddf2e39e92dee46a976878beeb549694d80b2701858b31daa192a4c23bf5d8cc54f928a69de74eb0346849922ae0716b0a6afe91b896f9c3db846a4f5c1bba31e16bf4b126205279557a48e93e0b418964d366b079b95a1383debeaaba8d6702b849a5bb6d15647284cc61948c9049503331c885def669937ebc8bcf305a5d699e511aeb46f4bb03655997fb0156d60e69a64fb9955aa2146a047ce927216753a8facecd50715f4a5356b508206b4f275bf52e9973d32dde1fa842b7d6eb37cf749b1b6aa90172be38cb91b6248a01ecf38f55615389d30396187e753f4eea8906ff57b4e74ee081678b2375b9be0bf439668a6a19a6e7c92ce8ff4d9a1f48bce401dc2c0310b2d3a6bb1e950a56218a0c3302a1d86ed504d3ab75cf7b8935f7840a52a3c553f330aea048ad6acb094b32fa4c0f159e859c51e2215437bdb65a109b4dc9316d855cb09abf80fec5c63c58496e435fffcbf88fadb1c637de0b00df7c19af9e56e5420ccdb43607dc5dcf7609f9a83c8662d2603105285a9ac64c81607ca3f26d4b35db81ee1338ba13a64239a406fc3b6ad0ed8b7978e590bb8572bac5365033dbd736bc233cca2e9822e272c5a5d285654e2825c92c526118257cbd97a9cfbfb19568633ba44cc05d216ef6987560945e78bbd39bfab01ed36b3cfae76794094c9fe36dbca59a6d43c7cdfb2b7d374a4b29455d1ea262797afaa85b93c6e7b26ae68538159fe8044ab43a47f6bf1542e1efc8228cb9acc743326889d4cf209cfec4195cf795be0049bd22518337b3802e56025dba076d57a503828fb7a64118b974f4840485d9bf4e9a335a1b1992d0f492698d2c43fd47a46eb52e8a3125ed3e1e543b211dce9b0f8d0bdf5108418d0d6e63b0c6cac4515b29492185de9aa743da085dcac073703d582a56dd5418f351bfe5260416c7f42bca0430a1b5184dfd5ba73d9f3a1826bf858b57009b7785d9eacdb0763c70afa8ae1a156b2e93b4519a0067969c946efda77324fc969ba3249814a0836456afbc6d7db05e9ae7004db26e5edda69dbe58bf5006b7746b808a8cceaa5b87280c6503bf7acdd264a06bebec15fe65462aca9353840b478171a5b7e731504c7672b01ade6af77b4d8b9aa1e260c5f93ee1011cacab7291481faae1c54b5dfd900d9261be884eb5598e127a914fc414512582263cc676013cd81de3d373ae57edfb4ca9f380fcc809777790747aa9bb30f1a2adc2e14a24af827b01e549a236395cfa7a52f10ad6bb61dd508cbecb190a147c19ec8a9df1e90d577601bf7e9c06e7277cd59fdec6f6085fa1eac887cd10796245b070e5c6f2eb9544e0390cab3263f1f37252a6540184f04ab74e0696de05bd394f77b03dfaaff8bd695c29e02754fe360a420f7c4bdda9ea42ef223c61da8fa8465b5da84fd48ee812d860ebe524770600dbff7539e816cca6d0d490bfb1de167d80b30417581f257ad709b958a0413c441b0eeaaaab55dbaeaa6150663043b6674e3fb22d31b31daf9b8ca44c53295f17f79070d6e4ec81ec1fe41f6e8762c50774a9db6106556839b27f5063b1740fedd896549a8d10fe6c05d259e1a6eea805616a94ed754ea90721e737312d243e984b9099778c7e1214ab6133acad9d13743b5f05575776b9d9f038d37f3218eee76e3abb9fdbf171a9a6d6fb9e0ed88d1942315f4579068a6ed2ea11a4c104dcfbf955a9f068c348ce7f2219134fb274dc57c37e2bcc35c2a5f5f763c50db09fb8cf2b9c91bfced661b0409a8452bcb8ff32b9c3e153e4d1b4cb307f510d9c6aab21d0be0fb40d567ec7bca6f5270e1369f9e6fa569e26d41084ef7b4e1bed08bd81ecf2a81bb8094a2ca5943aade738fd6d35b13c82101f74bbc235f36114ead3a3c5264ce7c62f039654230e5cd538684080ac61d294152d21d08187dc28e04c47fbd99f9381303baee7405b5967ece7d82eb69866d3cde9aa1d28df53bd420bad1c598e2a61dda43136e3fa205acb8699d3599e95c4a85f72865b816763a1f511afe000782d438ae2e401c2ac09258acfd5cfd9a8093a6482748d6b0e4ce7da1f559459cc4b79c4c3e1d9a1e4bacc48b412819a8d0f8c522d59c0e1994a3c6a2c7818bdcb22cd65ee7d46c1da98c88a88454e6a4600bde555f5bb665615c9c9432bd334c68821ff2f88c3bc951f2ade3801191070234bbaeb2d898b92c80262be3ad55a75a5f1e07293b786c219e39c6d7ca012bf9a0bc9c06522de769fed3f15565c227a43a615daf86df0f376fca09816b35b86984417da49abb62ece4c7784408cfbf79a6905ccadc45f8e057c3b57fb7dd2ddda22d2fe0dcadfd17f8a7a86e352bb2274a67c8e521cfb7f388eb56d41a72de41f9df0ff40e4a61de76540d87f9e91e7c57aa12385fac106904527f4544f7830aaac18107befec21c9f4592c557425340d434fa56ff4a7dcf75b37e27ac7cd5b8f8e710aea17c9477e5b8ed014fce433e035c8d3e32d2c783c1c67914c860ba0f415be2b4119fd82728e274cec2f9713e30f3080445f0f99b5357cd68d51a34c163b57c22a3c4bc4e5b2d0e367b230d9e83ed3eefd65795d0ed077a6ca0bea8053fae1a1e7b9b9a9eb5a15de6334e9736a3c398222f6d8e847fb819a8345cfbcc936af1f0e645a3a7f18819466f0bd8aec54ed0d3f49e905b5d4d435853054b5ff98c7eb4359946c1a500214868dfd46ccf070285d1185e41a973cd52308e101346665dd8b800c9b6cdefc4f83d6b5b100de6f9bb655becb8d79e0fd51cbf1757ee0f55a452fcae63060ef8bbb62649a9633cb407d49101d5ad00d15add0acee9161a6de0af1de270dc190cbb2072b35bd1d294f2bed91f6be16347fb630dfa58d8b70cfc3703d5d5ddbe97bdc3b06d7c3a2846ce5e7c87a04bf7befefa503df7d9ce27ebc024fc83c911b64eb7aaa0f963fd987ee058bd2ded12b88831cc0686e95e6c92487576dcbfdd94a5e50347efba80c562fad08150e3edd8d060af7cce078a4fdb77f37d407757815aeed8aef2a53082c6ae6be0b07f37139393db39a358cf504d75031b90d7e849549e521d2436cdd60caf97a2c47bb5b081be99d98254d7649758ed45a62e543bfe7cf662cecc06e0da69ea9be7a8fd1992cec048eaecb737c298b3d3717991a5c15e3fd54d3cbc7db62a15fe66facc43ad22ae90fcb15038165b9679b9f04206c13fd157f305d86e256498217e2a8879abe23775faf81b2819401f1c265499c37b276958d3b97e32c7113cf79c2bba5302e1487d085e29dab24ed2862e41bac4abde578a1f38fd663e30b75186604bd934592c99c3aa45036e233b75d288ccec7a882dedacad20a2c5d6aa9d7880eeb35ffac04d5a0ca42fa456d47ae6e13940579a2b9f2df7ee6c601c9d9d8d96ed905bd44276e73e0d2f1b592c7d92f1a631d9f0a264de13ea0492e3b4a16f8312e45f39f8b1f9151e198c3039a00ef57e9ceb34bb7be5ed2d1b472cb5bd9641109efda7cfc851a1c479384f370f6a225a9230823a4ba6e746df262fdb2afb18d713cba0384fad10f023c2821dc4fd2d687a43bafeca1bfb51d2d30a072a2cbda254ba6359b6bd63bc1ce055a22b0e76b6d7e6ba67dbd0f4e86467131f21fb67682e7f217fb242b949a1becf25bef2ed404cc7b34ae64c5cde32557ceb90f97ab0843fec7f7e92e88425fc428a88827cc464f54dfd0bdbe1b2c17e8196cb22985bb728bbc52da147360f56816141d2ac3a21a2771e4488ab3070cff491c9eb48a90c1259fefa3e9c1686d440b925d7ebbeb3ee8e2cd64122f7d86bb58e037ba9336f64a6a10dc2536b015bee1c5c9d06431e321b15b299b19acfeed0fc5ea4c942a1174a39a8941dcfb5d2165d3c54adb0fdf5cc60c229ea14cbedc339d0bd1caabdaf1abb3b62722ef2b333fc3d632af2ddf1a44314d0f54d87b79033cf45847d8f8fe20aafee5a39e9e82dfd596dc0277aa44675ff80e3bfe7db87c2ed69d0c1ed36df3e156ecf820a6e7b7c7b52b87df427475845f9f68b7d77edc7b83b6dd3ddeff6dd9d3f3f4ae8c8b57797b8bbb8faee0a7793f6d56ea5b8bde6dbf3c26dd7dfe2f6866fc785db673f3b0aa0d1e5db039769505c0323f0fab66a38fc8cfa00a3c0b631322222ff77d71921c3055101f87dc0ef237e3bf8ede2770dbfebf8ddc0ef267eb7f0bb8ddf1dfcf6f0fb84df67da6087aeaa0b20301dea6d10acfbeaf9d73903c2a4e3173347d36d8138b438ed7ffdcd00101c5c03972bc6f7984f451507206df9125ba59453bab96df912e511f089bdf6faf0a3d7498347e24610d55756a9fc14ce8d33d929881777d5697a6b5d546a0707fb163e8e135da75a5f3bc22e1ea81d99ff6f55c66e00c7778f46475d04872370dee8768f1e1b503ed12775d4a5af362fa545f4fccf2d62545844591629cdf35d4b698b675e85cc57912eae643ef7f5af6c99d07c4de8207d95c4afc3048cf5594b0b2897726087c04dc75743957c2bf5e48fbfd29389ff4e57525f9f7596d9204e2d3cde41d3479a96df78ee5e6413b7f058e28d2eda0d65962bc079ab36c272f8d86a0ece46d1b78e46379ef9e0032049f57699920f734a5e035573f97666df1e54ff3e557bb9dc6ff54feeb7e2bc2fdf9bf7efd60e70a16879bf192ab1fc6082072a010a3b4138df2a870fd2c96fcbb91ba870163470eece38770ece9dfbd97337b0b388e9eef66455f54539fdfcbf134908e1eb109f1ed5ec342ecd63f32fcde3e89d697cfb601af3a3d4687131372e87d194ecfb5892f390dcd3f9cd1ae2646086b26ca2765ea49ed5e26230b3bf3498d67b9b82a24d2622850ffed2d668ff8f6e8d96d808c84ede1898cdf1c324112e32cb7d01d19b8a92b5fa2692ac9376cd1b8c704f3dac372de8954693eb91e021ebbf73ff83cbf94e3c5f2cde2ef82b8b37ff1b947450340c6c53e6fcc727b3b829867b7d7117208fb205fe2f91c7225dd8f6d4833aff33f45242028bb31bead92d9e90a2f52979261783b340f80a8516eec7c62e7c65454ae98fec3a829a30c5dfce9635b79c86c48476f6a79acf106edab49450607340e8d2aec9769d3d2c8b56f091de5efb6a04b309307c9a674b7f9fa33233ab86f8715c8592a2fbc8046df7f8de5744d927c36d6c9909e2ba6559adc5b746e1475e4765847870d6655d1825f76f888040e5a057256bba47be98977137330ebde914e294036351ca9fe7d8ba4805c3fcada10aef9692315c198941791da8b4c2717feb03af6d8a75820636bbd3aba55472b6c4ddfabfca429f9c40f2470cf72ff21514ed3a61172ea6a05aaff9d68db5d94d55fc231ca5ad3da584ffb6e14db0f1ebc6b9a1529f38a533830dd2b29e4478976aba08b80b5e5db2e123c36d7791cf82dbdd30245e475cba54b8bae71414bf45f01355f9231231aafa19debea6870feaff080521fd44d24cf117991c64917ce100b4ce576e91c361cebf5fcd656f5af817c0bdd8a696781298a228a05039b3f3ccdb9114bf8898714657d85b633e302d86ec99668ffca65be03f0e984e25508b7399eb547bea12ae4042b84f56ee23a8652ec5545d6dad814a31a92193426a953d198bf9bf6ebeab97378f31f36e1ed4b71fcc597e374246035eff7587e7f1f06c5650ee351756ae8d9843dbf8bbfd426b29817c967c3f45cff875a56a78a3eaf2198e25839d6dfccb5ca1714f9ff2789718f1555621033c481d923be9da426a9ca4fec55e0bfee7b719dbbd7f6304cdfc1c0420162dbf013ac09d572a3d8849717cf3a0121f65d65b1823750752cf2bfd97f44b0a9f4779a0072353ddab109153f45e7bc32575a87eb7203f508029ca9d7ca7cbbaf12445787d7e7ddb465131bcfcacffbf42b1989ba5af1ed52e1996a583bf247b553e94bdb4424d67b1a051cf8f639e9405c81ef4d9349f82d671cc3e8ea478731e086a9ed8d8acddb4fb4fdd4dceafeda6fd47bbe9e9a7bb6944e587e8e16715a8a3c7454f28de75e2598a6353cae760abbc09d755b7bc85e6be9af8ea7cb153aa9fdc292054b096ce7def6c4c50ee7b9ea0bccf939d35e7bb2d726d81733650bb01e9514cc686aade1e7d86c30dd4987f09ae7c97295d692b7c3c96868774e02ae7115a8e528199a4f4694e08bbb1d010428378b7b5ea8ba174fd895fd8bfa240980623aa702ca3c361aa7b86af64c70867f771853c4013bb9cfb0ce701501e9dbedc1b0820c58173a05747bbbef9e37f0ba7fde385d3e60c65fa5a4f11c813a970e34f6a760c95e330ee120a0fbe56ad63b2f1270efdcafca9632e57fd987fbdceccd5c1c69f3b90b82b9702e86011fc6d19712e417e1d1de4172acbbcb85f772d70212a0219d9a4b9b92b44af0f7f563e6e1ea82ce69c2f5d74e69cab1812fc2640336e62fbfb12dfec19d0cd565748723df12d9e84b8d4954973e3b7b9c950d57cb5ec849cd4d401040004c8e3996174b82a9dd4554ccf1ca1b03f8d0b55635f54dccd3b7086b878ea84f65464174534f408d62d9101f2e7572d8e98417cb2c7f7be59d000138a84546a867bb48ac868c8ff9bb182e5b43953717d0c6c19ba8c3335243a01d39717221ef08d56cefcffe099d1c871dee3fbf9bd488d1473c0396dbfac1b9c51cb7274f3a6aa41d7c39e8b138da71ea87615e11e2bbf8427ea1cc7248b2023673a2043f8e2c8610cab33430b4c5d36732da7397b432d9d19100691186a03c247aa472dd3d4a2fc20509201e143791de6a34f0573870b5c9fc62cd09fcda7765f1d58dd0a55b331e4a0233c17bb03e6b87476d1e7b9cbba8d470f0fd5b115bc3b365db9468fedb18cbf9a4f568586d653fb33726c63de0a93e3884b4a587012f7001d087530a897604b8c544029d65fdc6adf0a66c1c2b94917758c873ab70d7506f6538eabeefc460d9d90ebf2cc749fc27fda7c9a3c043ef0867506fcc4ab0ad5a20101371fe1793d30b97087664e3882c74a7277f3a886dff255da77f3d1385df4f1d8e99b6fb53a7d949826030a48a7f36496e2548533ae0a7b5075741307c1e656b9e75f09085eb11279f2db160d9f057f550252ea00a09746254438c7588052724a24f296f9dae33fe057fef6aea84442e327bbdc42973793f1cd290816beaa7efbf454862a3b1bd6d97bd5ec6d9073bf8e7339f0d0f52b58590ff860dc0390e1b68086fd85099900054ddcdfd4606207c33f417909e9ff7426f30eff89f0113e308ec5bae63a242fd492e4508082022585ee7ea77b5f788af397ff7c472eccd85e557fa6c39869293332e043f567e1d28a1f18aaca81f3a067f03b13d10287a1738188b6d2793e8019ef261cfc32f922805691ca8e88faf5f804ce31a90bfa1da836a24ce012ce26e39b09f90376ceaf9cb4ff9602fe774bb42e3e51f00d9c1092c7bda9552c297095760d28c69a287ea8e22a7cc914b8b0913c92e09784c3f45238cc85657d74da221b168ab89c38ba56e0ae2e8bb8a4d78ab82c7a80c0074c7ca9880b252cb29adc80e75ca4c506ac112b30bb8d734d6a9ca378de069c99dd1b1363eb54aa09c3788b81b15c96069ce3ad9e49b2576e46b00e10f0701a0a370b54b3cfff8f54703f5d209814bdadd142d4822f37f7aa1d4a4c78ef7f95843a84845a018f5ca708747141ab3ab668ea4ec6ef88a605fbd4a590389971f30ba7288439c7115bf9d6f037fe46abb0792191b3f2c25fa33d88c8aee9aacba8118b0380906e21b4bd50dd1f50e3156af0bb29e789e7aa63ec93e266005c668711de7db5de5daf20cb358befea3a0afa2dfb8b9b15970cae5b2f6d7d35e01ac67599b8ecfff6c4057ae21a0d711ebc50906cff1766ee3819e0dd57ebdd9fcd9c79cbfee22767ee42b827de0dc9a8c4946b5324266c223d6bb9a8782086dcece613dcea46bb54b4b189afdca84f004b1e5552f9aa0ea7f7ac18b95ed7a6e331a6a706ea5e1d517fe5a7f2d35835982b974c1e576c1bdf372cbf56708acfa05bff26bd3f0e8276a016feaf58392b34eaef9ea46c0d55b8f3572e0de16dedeaa1bcec91c735997285f91463d9385d5acd29b237b3e990b75fe70c9672eef216dae389d674c823389c254ab9cbf4a88d27565474e10fab064715e8d445aeb842c995c574f81e5f6c5de38b6eef840284e7d9ed0567443ef72106669e7f73f0558fad46dd9b791024beda4c877f3966b055c7ea5bcb78e3bc0577aab909fed9564fff9656b3bdff2bcdfe7f67821eaa1328309b08ec58e9a11a9d0b96d2b2ba77e2da134bffbcd5599283baefa024c5995b7cb51bdcf835dc75af7c6f70fefb4ab24475ce3dc114e7bfb145a74e7b1031fccd7f8f54a83c0acefcf11fad1c8e2e95437209b254bd6d00e9e88ed1c9abb7125aa654b6018969b07b499e3d126428f4cb1332e94b4c8c6852c7b5bc73d325b29a888f57be1afcd61489dcbb03eb0453c056a4cbdecd8b0aa26a2dff5ed46f40239d4d2363136ad759a6880f8893adf308e62b3e86f32462e0185a8fb5158ab03f59b26c0c805de2d4ad5d9745f2e60a809a0d6eb4b2e004c249c0f6ab1a5c6cb93e9ca6886fb927705444eb91e3b48dd4f7bced76a32fe16d818a673d66f9ade0ea77621e43486f361a7d123ddaef742a961cf167aa91c49aec12b1f31f3e9c3f4409689fe986bb069ad5034d5b5f84b540b9a87c4c835e0121bd8323536e73c5c570da9d8215a1c15684734fd57fc98af05f12fbff02894d4162ebbf40625b552445624eb2c32d7ce74c8a5027e5708bb00d6a0357f3797cd3575d5c750eb7b4eb81f080abb5c32db9e7ab44e4a414eb7f284d7fbea4e9db50885c3e435664a9267e9bd5f06f93fc791368cea0fac7e575ea9f538096ff73129f4dc7f9818e364d1bca8235fefd3b6dbfaa80d3484f9bab46cd4bd63373ba3fef4a6d95d3b5bc2bcca76a18fafa9d6e7c5741ff33433c4c296c2688f64d1ed77b0d9291950a66467deefc6e6d71a8f981b33d9a5f0a7ceeb41aca334a30c2e4def211c168b7c5cb5f68a79f1a8c41da2e3678a8309e76ba66aee57db96c33503597816baad75fced68cdd3e2d7668bb1ad2a13ec159b4fe6738f9ec008c689a279b29d7138eb44aa78302174a576ccd3b1fbb147e5349fb865fc7896f38b9fb9b15665360dea73492a22c813a26fe554e2e1fbafb04232f3efb311fbff6ec7b6cbcdc872715aa0afa4053b649ef3e9ca55d9b2da3ad35815328e7d865ef5a89b7979fcfda3ce0837cec5e456ac0bb9d02b63a6c55bc795291f21a035b12a8b02430ed2befbf92c07f8424303afb0ddce672f4850cddc1fa9f93134e9013aabf20271c20278881700edeef4a892f3c7fd8737dc91aae2762893ddcf21987f10d97e3c32d5b7036c40e92ff6cb9e0e9522e5886ff3794bdcf71dca5cf1cf777b623378046bbb8fe917c6a4e477e66fa0e0f7d52417f35653eb2241cf240b9fbdb9ff7c521d215a8d989533a4e070ac78e849e973e94c2409680f2512847ab0e5c80835866ef754605034cee0f0c4cb99a1409ed6ad5d3f7f3d596828c5419c78123d4b5a581d69edd50fb9234302002bdacf02896c7222b4d19e7ab52659cde65032826c72f57d9740b6cfaf80fb1e9d3c0b0e92cbe7d87c92eda2881549aa474c9d35b6378b215e6925abb93b8ec4039220c50e1730e7b257967f2bbf960d2ba3561280525b6e6b24ace2520518d89ec9f09345a3ab513175392ffd8415ec8ff5f3f6be8f4489db705b3e2724a3cad1aa985fbbf95a7fd3786f5dfecf15ff9aab2785f6a189cfd1a3b853e15e2daf1af09111d171821d5ab7819f3c610d35e124c46b98cf1810432d8fc7d2142225e91537685e7691a5473c670e9918172c6d26badf9a1c98c45da0588419948652b7e787a6604a0252ae8f34b3b2bf8ad1233f42df294b4f13149ee98f6e7847cf50762f87d3550b164c3d1909dde273aa0212dfa571ffac23c4f28694e701c146ca58e2ebcc0c485cc3d58574ea39b814a50d2a3f26b2120f3ee450848ec8e4d09922a25434dd13860e8ff6da1c2c145a8708c9dbd73af057d2c5d0efad8c1a1fdbb76d00eb852ec9d7200952b754188d7ad0792001faa2922aa3b0766411e244df93dcdd8edebc59c4faa405bf86e154fcbefd995a73b8497d9be43969bdbb557e8fffba090ad8fa890092994b5db60bf01c8e62417049b83ae0306525959e121f5297cf50d3bca81b67827b42a77349a3da6fa8d6121a8a1e6de12f796eb73a9fa904fc54476c048dd73dc6f533ef77c19f7abd416a0c51ec2a3f9236c7621c6b6e4fbe9b2c7760e50c32d22b27675aead47332771c8b54d0faee201f534174228401f7b3dc16f79eeec05a4b12fb2a0f0dc1484a04e15a611c7bc4882cbf1902281c9de1ead30cb050273a469fb93b9e4b92ed42aba67158c85d4ca29bc59fa2a52f5559765cc8413cad6e8fef589277479006ccce92f82cbbd6b0b211d27f82f54344f5d2eacbb871b4aae6f312d3bb714a3ddc8c9de67a6e79fffca6be92bca4c7d0319f5ebe6b0b0b596281cc129afdf68fb3450638f60a413fc6856fa8cfe18ca069b3603738ef27fee41b49077d1ec88416a9837fb2516f9a081ca01143612aaea395f8a118fa5c398721c2874113b7334b3f22242fd1e2a7d399e6627f10e43adaba98a07812e7ff1b8821dea2117a5de44f50ad471c2927d7d8d68c5e69078f47ec7c5da4f542c345047179e2fa21d6774eee655f658bdf7de5888a5613a16ade28ae44b4b4c0bb1466e95277e89aaeb48e0dcfb8cd262d64aa9aa80b4e832da4204641f01c9bdb0320211ea5c8f4bfa701e1fde9bc7d72bf318631e8fefcde3e9e379bc922bc18d52ff5ad73776075a034f1723cf423fdb05d4cd8c7f09bfa4c03131a6d211f0c4b23a1998233069ebc4f2c000df3f319084674df083deeaf25cbbc3f255074f9d71b87991a466575bda68f26c552085f448603b5edff59f76c134a614b116dc7b106a2acd218b4fa7366c1f150bc25590ea67131238186e3cfb7ead0b19802a36538e2e6f6c2cf9d5db3086c63246029c4701c98ff1c49891be79152ec2dbc114cf084531506d4061540e28f8b16339cdc198f2e70886a34a6cf05e78f2a435cc05a0c197988656bfcd17ad73ab929a4e25212bca746c551198a6b61766e773657658284b7e8fda920d06282c5632cb6415b66054a02a97df76567d8e1f4b8af618cb6ce30441f25525b3db5fc8c0a8ac87efaa83ff2fba93817b71a88043a69756e20eb0e7aaa091958c69c11ca47496c1bc9b71a10c0fb97d090c66cb634836a3292f440264de65cc25501ad867557c7ae6b34df978cd361da82aafce81f5fc0e7d2b54f5c5dff7c77e6895fd2c056889cac8d91fed268ae4c7638ed5996d2d7c1e6f65177c3acc7c96cd8e339ee849ad97138f5075c0a4a61d2ed4b6803640abb94a25e6fd01056443fe31544bfc38dba76e51611de05029da1cb7ab2171ac2466b8b1c6f1fac1daac5066687afbdec12243608d0d37bbe2e985cb7355839ab10fcbb71ff253867cc37dfc8f184bab7b6bfc95669fd115602c781326db5e772df4af7557ebd9816a4f4263fbd42ecd372b38e967b68bd5998919bccad78d0739bdd6d97d8b031b3fe71fb44c86e52d580c8d6ea0512e94daa7ddab6f06b9161fa9855708179ac7ec24eca959edbf4947ff9f9a2033ae70d0f017751373be0ee23dbd3af1677bc39a8efeb20e7c328aa2ffe74197c4bc786a03c18a52a61656fed47ad1bd1952ed01fab58bf45c7fc64036b9cc91aa9dfac640764ef3f6249bfedf6c203b5de6d2e79d21ba7eee5f3190b54e9c7c3d3df56120bb97b2697314b8ada59129225fa7d11c680966e1ff4e83d500f62a8762d0e36e5041523adbab7681b6579d96baea57a036d5e8bd74a6fc729d5fc95ed976fbc588048b2f26db46a965a34783dcb4382190cd89ad539f53d6cfec024289ff63942f078c0d6d08d937a9dd81979cda906820b10273a6e4cef568ad06d0afdc786cb4ca1a3f927ce7cf7ea7f2408dffc3de9b75a7ad2cefc31f08afc53c5db61a213006e2388ee3dc793bd98c428010d3a77f97ea795a6a61d97176f639e7ffae9f6fe220b57aa8aeaeaeb96af9ee5e0f6fb8823da9dea7abd627e58d5f6951315534275dd0c876b99fd1af44a737bf9b4fba893fcba77db593ae613b8d0f8c14ff1b4bd0df407d8a91e64e0a863ef0061fcfbf64862b8079d853508ef7211643af05e27bb3e55116e23a0bf159555f1de2b5cc97a3a4979f527fc1b3b77ee2a35a6771759d19cccb0ef642d89e38aaaf7c61b5e612ad1f7454f3dcb32f66bfe85912d4edef314425ada78c8c5f81984b3a839ab648b9bbee5448c525587bd2b15f1e3b35be14c78756e6cb5da7c19752c9e5947939effc0be24992f738559354fad67dbf9ef591a96ad607d2f52865e07134eb833c5347cac787195ca73e919fe85f45128d5fbe27e76d65d69b5612672a5aa903de18a54e9ae0cd5e10d78855f1aea95592fa40a4cdf50a046e782276ec045de00dbebdedcdc2845b6988606bc9748db4b4c70c0d5c12c8e1ccaabdab932073b5977d7064b939d3a7982bd95dbd0e8a5563ed97731d056397936c8458831e6f47536c7e89abb654d2c973cfac91430dd581ad778d6bb3edaeda69d5a888f3cd414ff74948999a76589481098711dd1765b0aea8377cbdc6eb52e6f5b2437e4995e14614684b4c77ebfa0d849e8238a0d2d99fb33f26edf2228805d09f48e48a53fe7eef04ff6def84f3ffca3b21960f964f9924400fa6606ead3c4af9bd35f34714bd148005d4692902f182a69356d03f56ac1224ad9d97662a8e0e2c3c3e83d6ff849f95ad2725be4b078bc9dcfe5b831ed86b3d6fd085a302112278e2db610cb1a589e82d75120e7d63d2d8d73a46b2eaa2557b072242b625379c1f29975e8de98ff26217d76fc4f437ba3144ca5d13d56f0ae4078e159e1f065678fe729d179ebf7a140935dc0f52e86d69755b94934adf5a4d25515847b1b2c3261a0a755eafa8bf145d7fdce85eb9a651c8467b937f441c99f8c320d502050df90935e2adf05a2ee2f5eafaf2f1edc50c63796fce66adad673c0b942a9a4258f632565c066d7af9cb881b4d1ce59a565134648248ceb980a24b7ccdc91d8e9e3027edad77f9f8e1623af69c0b5bcf384628356de4cc3992c975d491e1eb66d202214f729f985797105f105050522db84a03fa530b150acdd79cf14966ac5531bb90f8f1fdc51ced85442bfa9ac40b39da0b587cce431db9e5d7dbe19b1813bf9b8df3dfddbd179b663b04d1ecb3d8143f1e73aef14238ce24b43664def0d275146ef370075d23adc56fa24c89909e86dee5e37b0e6e4d6c167a46f7a4d4d29e18ead7e460c8ed2f3124f74cbe821815999756f3ec74e3c7664ad6742d34556ad7b6cce1537c3efb6af7b2ff24a0583c2608abd412b9112620fbfccc3c620e53ad167772ee7af1065cf3cbe2b7b4194b862ceeccff0762ab794e1a9fe7a34cebdb4ceb5b60d3aeaf6622aafbf0f7f5d44af382f0b56ad53ab83762812a4f107729884bf22cfe36423b64f259dbb584085b6876554801a1cc38fa28c48d8ed122b91eb75a6e1641b6d002bdd9e9a9ad3531a16915884c510539dbcc3671f5079ab48e724a3519f70a9f5681f35a95b6c3e49a54a22f70e540c49be61bab987d40b5025f125ebc944382fed2bab85b0b29fb526807bf273b1e31101cbb7f8f51bfcbcf5c9d2731178da577492c06aaaf186b42ea95a814a8f1aab57835784a559c75d14d04d8b1f2aaced5b332c9db88c1278a11cbcab52d4287dc3248439679d053eae0d65ba91df0e89a7b6eb787210fd7b356db26827de6a51ed36ff4645fe07d3ee5d3490912cea90916e4cc5e4efb011c07d8cb92ed17ec05e937577cea977a574faaaf1ad3183ced7e3cb5425f97ce4e66759387ab07e5760e5cddecebd5bd6a75c59b1cfa9216f5a7c53a1475a60a8149a4d58288b53c5e66f16ddf337105ec131567bd4b15a22b4c7623a5ecc9bb69f9af294220a8d115c66cbfb3ea3d5a5af093b17c30f0c294065fd3c65c9f7251b34c56504f192af4c9ec194b9a99ea543863b7e04efd9b788243d53196851204493143c7d286674ad514a4a20a79dd182c3d236bac11ae5d59c73843163d2942af55f50087fbf0809a98e703b8bbd30109adcb6ba48a2cadf17edf00b2470d00bf79a067ca61804c4c3e9cf96b3e6b6cd6d17e56477b18c861353e1e686ce258d30d6bb071acea77a16e95eff26b2ceb8028533e6156e1092d51c28a26ee099c342b1388db65d6ba2e7194ea012c6e85bff75340209aa22f54e9fd669774e91af57f47314caf803e0b054dc23bd37add51450b5d3aeaaad5d1ddc47271ab46d4813ffea630b9d05aa9356eb7d7941749f92f1f9875e8a7831cd12aac2265673b6211e7f4b150862a126aa196ff06d624b639e0669acd605c3d6faecde307b386ada91ed9b78bf90e95b7edee42e7e2807e2276bea98a89cfdf016a8783b6ac224651f00b513fcfece11e9d37f55d7f2cf56f4c45e9422f950c9b2219ae9d979261442541ed8564d87c53326c5ea7c462dfba7e4d363ce4c986db6eabc00516fa2fa4c38d64f25d76feb174184ea1235dc9b45c55abd0f12c49d3d36609c960f4b6b0bb58a3b468eaad55e37a04803f255355b55b3fb088d40157ff8efd86c128cd60d79ca0512532f6f4784ee502f88202ce4c2d1aa6c9e565aab4ee557e3153bffaae9936e987d12860a67bf61bb350c94cdbd1e54c7fbe9c69c130c817333dff6aa6e1fb663a6576d849d1d43547bf257ba6f3fde54c9f5fce74b11f82465cccb4feab999ede37d31567ea73a64df6dbb067ba7e31d3879733ddecf3615afcd54c6bef9be98e330d39d36915fd4eaad64cf7ef82698078f474a621c5f379f517736dbd6fae47cef5c0b92ed9efc29eebf9c55c9f2ee73aed52f2d938947cb60e09e0c6117d98d0c5e67f44f29974b3928f61a3315a4908fb31957c829d598668b218dd3161f1f1a0d84d65202da479c7936a4c509665ea4eb9aa4ac5d23acbd3fb5b385d4f8fb82fd70b68e5677b4f04e73aebacd79827734b6fe70de633679ebf1ab6387e2d249c55c3665553aa593c0daa172ed05b16d0dee9dce7d873baa44ce0bf371501c253a775beacf3137cefc6c9b89216b0082896ff12755364340214c2660be8799a5b8917ee5118c31e9da6bd540d7b26332ddd202713bd97ee50e1950a73c93bceb6f376a6827a6055173aa7faf5272cd96f19172cf9281215bb5eeb0264d9803981572d4c6ac1e6d5262a8d1f586bafffa6f6dc4bb4e7ae8a3c559af650578c4a65a4bbac1038dba8f30eacd1aa4211a961829164dbf9a3963ebc8d09c948edcb0ca90911f3dd0ec9c81d3de82f8f47cce674f4e0ae76e683d90e411b73fa36974c83321b4095a355c404711732ec26b44d77924059ce2427b4be58ef69db45ddfa83152b5d6f104d638176d2ca0abae033b4aacfbc8c48dbaa8c64a9cd99971580ab23d661dbe50fddb686be699aa1ef72860eaa70425ecfb3434755c9d9a276f3ecd0c141b21ff6d5b611efded98bc72879ba922f201b8dcd2216908722497632f2f1b401f978fe5ef9f83c788bff6e1d07f4bfe7878bfa08ae0bcbfa887b2ddec1852e359df4118d512061984ff4c55ef365c1d24056afd3c36de8e379035fae6dd1f27d8e4a80e86a4dc137fe67bd6569e8e83a8d46ae922046ac97b7ad5989cb6b10bfd75017361ac36c93dbb44918827bf559c1216933469b5bb5f554992e9cb5a3e4a82cd19d6975c25531e3df6d4ba75746618e79ed78536fd9685aee88068559f949238f6c555a499e5e5351ec5c1bd944ad720b53f2e7d40073b4eabbd1f1823aa5398bae49543d9f95372eaebc75d1bd3037475c7873c158a13690a9c699b5f9bcb618d1ef455af3edb28d1df62b6e5a456146dd4832ea86a6ec66191278637b4d37ec0e7d80e4fa96a28eb7834a84fa0f7887a743153f4ddb0293484b32e30c54ffc6b0d6f387b4b101c53f433f4f543f1db215e92ae2f777af2312b2886bb59abaaf6364dc68a8be0986fcd6ac9373d1575f557b71fd2faf393972ffc6026f55e0c80a3dd5a4a2da9fbcc8c87bc768e70609d296d6984a9430657db5ab000757dae222af8608371da980e231bb5745e60f2fafa06c0cef527ab169756dc9bfafb4d7de799691587c1f7a53f03e13fcd90daf06ea0b63d586e9f761ad6b3157c74efec98b5b492fb5eed540ddaa520d6547cbb5a1e82665ac0dd50501a330eaac581a13a4c4dbbfc197f3e5e8527d5147a458ed33dceb11d92345e4ae4d1139f9a4cc503a300e7df5acc4c9f1879ad5a8f624214a80ac55584b2aacb8467c8afbd89da1560bcf50d94dab2018858af11d1fc9a5da22e7ea26ee7f86280aefc484d40cfb394924f420e5c65f8e4b1f5892348f9c802be9de1212b93593b63241983582ae2cb1d28d4ebd2e76a03566c13756ebb8bfb8f380ef7a17ef44ff5333894ee0d1e8263e8fe86990963cb6a7f764f27ca7601b2b7500abbad56644f4b7bc18cbb59e920fc507bcbabe664ea76f0aee8674817a4abc5ea310e4771f7632bf57fc84524bfc7821d547777bf7ddeee6070745058f8e9a943f525ffc678b5d94a0c39d39ab63aa1e3d3b8710f8b72d5d4b25c249fd5a3c7fa6f577663ebfce4ba97ed094300b75cb39a838b19cc10b931725d5f6e73f2ea9d6aad925d5ce87ff7e49b5168fe0aa9e972761528741243e9ad9926ae231b6d7ffb72baa359a7db9f6f47a6f6726f82b71f4ae85566282e372f48e4868a3f410e719e3a1fd5a6931f1b4653a50c3314ce0885c3d7a976a9f67d5579168c5b64ebc3d078758d2dc59d06d471081837d36c6ea32d46951a1c62b72ad18a0e3bef3aa5ff0ad729340650a81e112813f9edad6df1ff8f3af8742baff4e156ff1765c0c5212b2aa5fa72779479d427e229b4295ca98b2974604bee2b4feee88c0991c37ed19b128a79f77e53e6d2c471210b0365e3e07274598e604c1bd3e7d702fc3ede6469bf732a6efd678284f5696d197096f24974f83dce9504e379268c88f1dae72da41c7e6bfa573d7e4f072d5a4017286ac658d6e2a1c245db95657e3b4abb1dd557c01a63a3ea5763b2fddd5c3df60fdf0e7f037d27b80e75e154006fc82634af269152c2c7ff2d9be9bc6f3ad378334ad5054c7b93dfc801918e905a31f5818cdda8830f447560e341ac09111768acc79ad52d784a2a25adc93816275807a805570b4d5b229de3e10022ad1075705711d0c1dfe7c5603b5cb26f9f483417c8ccbae5ab6de5554225bcafa896249b193c2b54eb97529a63d57b54e2437cd8e15c4fa353da60b32254b1f57e2e5efc91a57497bd6b90ab45e3bea1cbcb3cc483a57dce58e5497a288345dc08561b2c08512ff66a84e436be277038e161fae1e1fae1eff13578f89ab3fd3f7a1212f36ceba916262d3e1e38ab36dd8081ae257e8ecd2c7c3b6d34dfabea6c88f42a5d5cfe979ac91b39caf464cefc3804efead42da8f19d0c0d13d756c8c727a4d90757707d8dcc9c6746cee72e1e893a3b65f92cfcb4eeeacfaa956c11247085e2f7b9968133d9331b6e25ff4baffc486cf4a35740931f776dceb1c8a4fefea56e9a63e60bfd688543fe1d42d910273eed81a8fea67997ccc81f46a6e01da9058ca39836517e54defc69eb1cba1b50c2632b71a991290c929bb4dcbdfdc292d8e7737963ba234d5e064c6328185a3578e3a7eb1f7e5c1b0f233f28c255777a8948506e3e0ec2d1c9aea83c1a1a3f5b8ed9c1a6c7db6506baaf3502bc1a980b8b3264e6df87bcbdfe14a90c953550b99bebe1399b4d9ebea67c3b42bd5600e1d1826cb484f4065dc513678d6a1f3e867f370acd4048a8fb96bbe6f96a066a97c4e51d2942f2cf5af7c4777d53ee15a93c51f2afd74d655e65d858cb382ccd228a73595613c4ea368667f43eb8e0c3e154e0151125c4a8bb6d6daca8b27e1a97376122fb67bd1d55a2d5dfb2e9208a1d0d249566e9004a00af4aa2f91c51682e97e908ac7022b52b2c58ea98625b7fe9ad90884a53e74ae261dddc5716cac2defa2a57f23c450f8276409f26fd2d72b1fb9d263ce85176cc0f7d4506c6f0c6d302cf79693a7ded81f193db3464e846f52c306d2a9216922bb183ea40ecd55dc35594c32013847852dc3011b43c3c12a558b20f2033b5a174dcc5bec5ca44906620856e0d6b47c321ad1586867d5dd2dc06f7a6b6e6f204009af45bd7879a1536f7b586f56030060b5929dc2aadb4551f6f45217b01311a55a21a3e1f336dbc1c5de58e3ae2cb5572b60cdcc40ee625f4e89bbd3f1734f7592be661407769422db018d195f92cd50d1a3351c8f52d11f883a4735cf9d4b0c9d34a970de38599d84f1a0b96a74a40625a73d80ac49fd16d1ad3434ec97ab66a52100a55330c5979ba7dc183d8ac68228901345f588577056d8b933fc3fff2bd1162b1a836ab4b8d723da9111d71803dbb688b96a66ac4791c5be15769c6271973cd5a833b7fc1ecffa06610b40bb43994a7ee3c02d9ee61ba8c616c66732867dee6071cbf8f2302d73a7de4f573f71322e856bfa4b9a8cacb422fa5364153dd65feac203aa5de67bf92448b5a82eb5a87491d8186bef1e12867f8292bc1dead42bb4b28338309f68b352a54e3e863dfbb6725a12013dabc36a207aa0eb2b5feb7557cd9ba34bac6b500a09a38e857dbba863a9edc2a89362e3f248423b13259fe84e8e6e9aff0d9fd257e450a241b664cca1f0bff0cf2cb4fd208210637d355bcae73a6106e65e4a874e0d7854990ef9ee4403d9d2673690b37b7572f4dc514de772c59b7b5b75f29672b210325fad3c2b5267bfa839d6d32573e7cd56a3ab9213731af238bedf8d96d055bb17933805d889d61d9232020d0aa8a30268f359cc3a5c6a1d17e41e568dd15b5ac7c212d2c3b939784beb385443b5dce9df9e226f0d9ec5a7442cdc72567e66963ac30cdd1ba4065fafd5f44be61d1613b34b338ac2f8d6f2b830b1e3705fb6d5e5c32df5f0d7d4bf991c2f7d3a3bdbfab8b11a9e9d130fc651e23ebb0f7622e99503ad5bf7a79de165ffafa5170bc6d67dff5e5d7ddf08b3ff95a2a789a12b4c14e9eeff21753a8959d826abfda0c281aa36ad547e53eec786eac8c230ebed68e43512ee469a7461ba1a992000579dd65d23fe28d522b4a0486ab869adf45ac834fd9265cc55f5d49a25ae596d2b86bd7d46dbff52a9f343786d4d2d5bf35c32a099a4b0d581e510ef57138643a9627590132e6d7ccc4f31835327ebb2ab8f2c45e7364922414de66e4614971849e47d5407667328aee1aa146d34f226b4939c9f4aadadc6124e7064450939b0855ed6bd4149c06e8c6dd3887e6e89f563fa53f6c2ff99765e62bacb5211caf73d3987461d84bf72a415badcb7e497b2630f2aa8c3a4a29170f715476958ce4e99d0d1292cb82a6ce6d575df488fd38eaab3a4fb84110bc0be67413c01570b112d5134487cc04db8defc3a4dd19bf81ca8d09931a4a0d9808cd26a20f5ce529e7b3b6773ca761e14dcab52e2436c6902f70537632c8a1775cb8cd9e8c0ca820eee9f408d599ecb2f63310cc0566a416734f4a0094c59c1dc556571e4f65d552bc692ceca5553e9d7775520393ae6bc85a6934eeaa9a5528795f577014df01d8ef4f19f899b1835ad6cdf20bd60777121d48b902982620cdedb984274d5d0285b3c55bc80eaaa098d61add0c9c0245e515f1539d1325dd3d7317bbde9aa49b39bd9027fed581eca631af82f0c75f7ca5325212c73a912bee87827d2245818ddde8974a7b1eb60698d7dc2b4ab52076e2a3bf2c77926bc07a116c22696c10caf0f964f62e5304ca963f530b4a8239b2d8f6052aa74e132e431da3829798c0aa079b9d134af06d21c5e3afdefdf174813dc5973536ab5eb66c8e38297ca9e7bcb78a1c628258fcbe628873cb68e5c64c13a08ab0df307d0023b9d4b9e84f184ce9453df499d4aeb41d7a24adea7ab21ea71a79ebce1514b80f1e16fa432e5e3621bf604f03739433e2b6fdc808b8ccff52e8e88f6fa743556e58e5a32a2aa7c226d12101e1cd95897d171af1208b1cf91c99af26ffcfb49226ea1fe8e9a0c596e073825ad6098e558945afc0d7fdfbf65bba6c79bccd051bb4bd3537c32ceedae491926fc5c010868289df558dc7b0eb830cb1be4fc9a49b60ec35654c97370aac939abddfccb4b080b2ec43b59c29134f57d4b981fba347ba54b7888196a16ea3463147c3735f6415c5dbd18c77b7d9c6d7328716f5570c8a571a6f74beab4ef89f811f5f2a348763dc9046ea952836fa91e2afe374cbf34a501e253233d43401736b9d443245f55c85dade3f9c5be45ee44ddd6612c472df050426c95664dd874f4db04af28aaac6d07962626ca2a9fdcab273550e56d2600f4e4e8e2d08a8b55bea3afe828a03e8b81e5f30a7c48f011c1fd61d6fb1f9af51aae768de4487e2c20cb2e4e468912861907660609526dc2ec93c0004b619aecc527a42fef9a846cc91bff93497477f926e09bc496e49a379b4f36472ba17972c77a2a0831e9f013cb37895b5d30ca2a903cb5bbb7ce48b81397a19556bbdd0ba5c547c6bc8f8c791f19f33e32e67d64ccfbc898f79131ef2363de47c6bc8f8c791f19f33e32e67d64ccfbff75c6bcf5d78f8c5c1f19b93e32727d64e4fac8c8f59191eb2323d74746ae8f8c5c1f19b9dc8f8c5c1f19b93e3272b91f19b93e32727d64e4fac8c8f59191eb2323d7ffef3372cd19f2f71189f21189f21189f21189f21189f21189f21189f21189f21189f21189f21189f21189f21189f21189f21189f2ff5c244aaba33fdb98aa9ecd614cee1dea062489e4f9ce725dcfa6a98a3e5f2db476ed7c6e29defb5a8fabce7d2692e1d51493e0d7b4c575f91dc43eb4ba82420193b3ac7da0b0cf945a2d0a089158b8e80a789bdb44d0b35aa002dfc96d73906eda6873d4b96d62a65eedd8a69cdf46fa2950062cd6fbaf376ae2128e09dcabeb6a22a866b5cd6f538adb1855f59415152f1b4966d069919689fcd5cbcaaa6c73f3fa9c4f6734399ff31b0502a11621d479ad0dc9dc8a0316fece247dbab8452df3c516e0dcf3eface88a511e1295d16bc5f8595cea341bcf7109b171d5139902f4c3a4eb198882a093fea806d7e98f8d93febf9bfe7765f51e4d188e709bca83634eeede7c50fe6a7dbcb67a2ad4fa6957ab7aefa2ab78c5a2128ddb9eed9915f637e98f79e926eda51222dd3a34154ce6253969d9a0f8b781bad82dd77dd12895893e8d1644ae5d1354714f09b405fe797ec4849b44c9426b24c7757b02404d3793f60892e9eac40f88e733f3e238031cce0dee660186f715685ddb9cf73972309fa75823bd3f1bd51b2cb08cc7453c5eb4c1c7b46b98fd1a628ecfc7d335766e5502fe36ce305655cf20e4740b698fe8ddcf4e80c8ad2a665227b497785ce04ca6d51bd93d4077d31e21ab17621b9a438bb066d57be221f4b73c8afe069fb0ee33c11e8c63cb9ff27301adc51abf02fcda4f6cc561647e010f87c44331fdb4c0f52e7e2467277e5c3be371f334c83c5f34c023adc8519ae7e5af500110b0e671b3d045165e66d26ad33f5000d3b20c27fb1f061ffb2f5031da40c766702b6a8f10e388bc62ae2a02e287f6c8f2245edadd5f74b86687c4bd53e6c3d5eb1ffaf59e7c6870b3c202b7f022aa745e6e66aa6936208924a7b1972072a93d82839709d17a65ec3ac40542b2d21ea52132dbd7bfdae32b1e83a0e5a61ab276a3f3da57cb1ff215377331bf49bfaa4f07af7dd5380de433738a6a3c2fd002be3ec7f51410c16634ec95ed5fff4ab0df4b0ea10dc5e31b63e12b7346edb1ce6f4071e2c4acd3aa6f2eca0fcee683b3f9e06c3e389b0fcee683b3f9e06c3e389bffbf7336eb3e7dbddf5dfb630e1a00ec5a2f3c2473a573596ddb4f6dbac773cf98e7e9a46f8aaa496c2a8de9ae520b3ae52cef522b4fe4ccee62aee8ac0fe454bae6dba4e1e22e35dd449840618873b49d43b11c2291c7cc9133bbfd0ec86efba9bdb7fc3f98e5a1e58226b64fdd8b696e1cfd37a631c7b35455bf64c91b81fc2670ae1e9424f177758dfe2ee258110fdeef3416c0d83aad538dc6883c4b7b448d670f733856e0c6be66028693a33cb568194f23efa213df516325de3b4deba91088dd06c4ab6e690167865796841e85365b643b04343dacb59d7d679274b7c499a0c73cd599317d47578dd35ccb31de4c2ef076dd129f2275d8d08988ebbf139ea5058bdf8c2f57edf88e77e55e4cf9f47d03d1b5703a6898e00b5772aa306fef93f50a38003b039cac7176c02fac8e039c6b89373fd0db11bb5a2ee01eae14586f23c22e2e2249704f15fd1ddd68e41a2ad8168052215edc758ca84f46c39eedc2480ed9efc4fd2facc4a4346004e386fc140200f4cbff3fdaffeda70e7a8fe97f8d73df371085049363300f8d85ad4058ef0ad818d4b1d36ac1403a30d567e6f416c6b6e48fd87bdc0178ea39b7700b8fd50d7bfd4b3c3f70942c6f21bb34c8b4805ccc3382645e78995d3abe9c3cb10f0809600b33f5b8070954e2f6a9a49f47a92435b2582e49e1ae9eb109cd219887c0518faa45ffd9272bb19265442d3e5828597890556e0b8887607cd848e44806a73e60b52831816f9b8ba1a05e63411fe9e3f0ea56f593322f50e6278afffb78b7bea8263746cbb6d8ce5935420c1edd2c2d40d8445c35bcd8270ea7e69a487648ab9e893d5de700bd45a0c777f058819d9a30678c3009dbd4f9f531dcc2d162b78da110badfa3edc8dae47301e11b274ef9ccf116edd10572ae05395de1bd84a376e2933a50f4b80bac09d85874ae00a6a58ae55d76362e6372a2280eed190c71e2df97df27fe9b14498811483a7e64378065fd0cdfa77eba75dd4b57244d8f456c9544089efbc9d7f72a1c8810e30af853a7179eda4735e6f9f9f1ca313607a75d185ad6e59aa3165a6d788aeb0c2580f3dcccc2ebf6cca217d84258ef8300228c6950fd8a937d0bbb624ce7e8165529e9ab7be375d9dc76606b14970df88a2c1fd3f26d704301dde7f7f5af9097c547fbd61a9c8524a60d4dc23e342ed55ad53f93cc33113fd22bdcc20ea75ebeebab50ab165d489652ff6da84a2b03ba1759eb0b05dc95cb652fc5385f327e3dc753fd4bcd8b806940df198870fc514a9e09872d9003226cf1675184abca3964467c10ce86934eba89effc22b9de8172d58a83460b1afb2525c1822dbf0874bfcac4d961500447ba5be1804642a65c65a566ab06e873f7009bb7c51295b61dc3836a35a5819e341ede02e1034a8b4c2008ec27e0b10260ba6c6cf96fd35204c0183f862a3c1342922b67a92f56cf42522739181db533b0e66a045b91fd4548aa5d798601381b5e59abd0f2c85ea11acaa188a3a32d29cd32c297395ac349bb6bb4e9cb2dc2f09c7d3fa381382116b0f215d3bf05f5a15cc75763f54dede93ebaa23f85685e7c53a778cfcac14405d3fb19a9c91a0b287e823a48d391af837e8a016b1094e9351120be75173bce5882198bf8e853068c65de2d5792a7a167fce7e263e4aaac273ef7beb9ef647a886fa7186e0daa564f2c2c51da0fa4e20b7200203b842a480a0dd6ca5ad20b16aca76046e424cd2465e0e5014b1d18795737c30cd7b1e024e5529e1d3068fb9536cff1ec24b8e830b05dd8925886f6c5f0a70d5a2c0e0344c9c6abd8721566eef1cb7b22e813d2adbdd28d7f8821a491906e77d18d8ff0450f47465c6a711f34ff6852e3b847731b0dbfc9c358b6954357d2ea86b5be189bf2ca94d5ab539e38eaded403bda303b7ec4137bd5eea77ff5144c42dc2467998246551ef72514262584dbfb96bb79110c77d4bd71641eccd6180cbef9e55fcacd08ef8f98cf000298e493ff8684fb20e19f1e54979a68449c2a6b749405a6db8c17e3364504e534fad2c0233bea02d313b55e058cbc9f8f5fb8397d6a16066126ff60a61dd4d6a3683b3c7286957a8d1e4e8a63a99e9917a80f64dbaf46286f6919c6669dfb392303cb8b690eb5aadb157d287696efa987fb7275c62f92174a6e10b74d1cf277e72202a1cf99777a669cd2ecc459180e9ee259862d0612833fe8afe740b88029f5604363f3815e0ecba034423eba05ca7e7e3fc1fa6d499031263f5cf84cfe274cd16ef99070eb43c25e3a190134d91e0c8ea74936880baf27b8b612a1cacaafedbffe6ca0afbcbf37a241e66af2822d8eaf2824e3e330514e7f4863618b2e079c5fa691c3ac85d326495b484b28aa4d5b6b28a9d0b0cf12f1821c4534f7117dfd591bb90b07df14cf62dfc28c14e176da0698d3f7f1245c08371f73e5a07fc4e792f79c318f50291d25626d6f11cfc4a24f28c05150165aa8a4eeb85118c69460679a0e8220e7b146aca8e2554861338adee2763145f7e4e25b4c62c4dac218f86c0cb3a3b8a8a31dd5cd0a99165b48e9ce5d292fb0e74a76f890dc955b0032de944b9fe9c62cba1e6c2459ac623d9b7ad293338d18635d90468373bf52d2e21469c6d1d8e81f2c53a164a4c8ad8dd084be8ab9e3a2e129eed2ec3ae4939ef04d726c4a92959bcc91c819b740d75b34c90636d16b5f8f187c9e24e8bcbf04caa32c8e924fc4281254c635eedbcb0b84bcfccb40de2d98206b73083ec52e4864dafafee947b27f060e8af614eb5d25f60465a0182c99e0c5547b58f34c911fce7e928e5633dd35738a7356537cf8ef79019ef56e92f9c6e6b3eb2cc12e957315b1c6fb99b6c39d17adfe4f5ba65923e86545e62577c8067be73492aa8922d3164e748fcdb3dc9655568a61a2857ed9a37d6cdac546983b7725ae53adeb600de5af65a533b840f874fa6f3a1f2a0e48eac0b68acf4173311c0d54be06a76e5f685c860df7f6355be5595dd48422ae6fa25205c35fd4baaf981c633acad486dcb9cc93ed2d2e440b3e75637d54130a06cc2588fe31c7ef0ccfc5d141dc21781c2a72b29ba1877b0f18cf09474f0e9aaaf66ce0fe933da8e52714ca7ff8d87ad91d441fd7a343786c44bd4be5925e6b0d15ba6fdd82cac28b9b555aa99fc416932862db995d096a10a4ceae46daaf3f6d4c4e83ee4169c685534dc81f4d1765263a14da524dc7c07d522acc2c5513a5da302ebab15db063b8aa1f4d6582711e86e56a1d922ce18942f721b0396565e33f86b7297b272364f3550ee383ede9fa4b72d343d870b94655d60a0da35f8b9b14ad44d4978ad5687cf364bcef441f10d71cd807314867669d997c8a696a5d4c2862eb87a4898fcd14b80a41f10a92bb0fdd66a92ef177ce28fbd01d44022c7edb13d89284f468c2fe8986c1ab6061a8f5311c7b9cea7e37858b87487622a848af51059631ff9a3f933197bef90deb72c880ed44caba8d99183f9da060f8c808d993c91e8435ba545efe44ab03f448f812a9073e8e55e247d908df8598d52b76146a2ef16e9b52f18ce05f10b9eeaaad2b5759d5193856cc817ba8ce4a6ba1cab2be4f1f43dd3fa2e47f311c33e88462fd7c211553a67ea8442b9c1fbaafc4b2209b7885bb8db2c9268f156c3520d9d2f6e92eafa4de0c9a5e4e69d2e0a768bce6f50eef8c84d5ec05aa3da2727583599295bf65125ff5a90b4aa635336b3ed8a04ca1b676236cb114ec16819ca6c55412b6aad4e64da36ced56dcccbc7a46b9bcb05bda5c7f2d47d0ef2c8823c3592b578aaeaa8e2cc7df7de297515c478167c7fa5dfa0c380f5ce25cddc1dd358ec99037596525480c450a4e204979e690ddd8cc08ded3c95d3cc6818fcc4009ebe0bd9c5c4ea62351d67c4a015c9612deca4d19f07ca6c464a038e5202b225a14733e40b4948921467e575ad4ac41e231be22b0e5a4364bc42985ab170a1bb9512f6b7c9113e3a7fa16b6aa8833595f4d3b15c188055abeee10b4fb578551e9987ca4843b95c725464fd5dfe0d9bd769e399552598898d78292fa6ae65c0c3bbd5c4055331961c376e7aa6265f113f4d4fcba97b61efe8a5f1cf6677ef92fd073f417fa6a96b756144daacb68a4d766686b188c45e6121d94cec16dabcbc30958c415f94f5e10ca695e26db6bdab7aa90f0532808bcdcfb821c935f8fd62458f2b1a3866b80cea8c5aebabe3dfdfafb40a43c7b265995a142f9c2bbc0be78a85d6cdd0e91d998aec177e331e9c101abc8bb76270ea4e1c3b85c9d18998727d87d741e675dd39f0f53efff589af8f78fd6cbfdd3925be3de7beadf06d39f76d8d6fab78ebdb03f7ab7f9e6365e2a835f2c54b9e8eef40cac5b69b668958ccfbf2100189cd1d4ee8a10a054ce90c770f7fde970b0caddaafb40a32ad8aafb4dacc41c2d16a1ae5b70a33ade6afb48a32ad96afb43acc913607ad5639ad7caddb5acd8bddf7e0dc73e2ab1503f51b73c320357b7b9e0da73dd4ba578f6aa8568b1b282719a05b2922a3ef56e28e6f92efccfba008536f9b09e7cdfb45d84d7546b31a922c5e055a7f56e5c5cd7b66ff9099fde764f6ae64c5b0ee900a2f802affd65a1a6532b6b371668da75a57d6b2e61aedb5637ae2bd7b018156710887a926fb6fb530c73dbbb71bfa08c3f4e3755667e33f5967ea35b3b987fabb9605fd643232ce4210852ff76636a13369b5308cc9d5671126ff9529d50a43b980ca1730888a08ab9dbf32257f0216a7f99b33f29dcc94a64e664ea4c8b239852113838e5fe2e18208007fb08b7dde4ce0a553c4d2bccb1362b007f515264c985e1c828f934ca0561eed7be5f5da17c0391038cbc21b672599e3405dbf986344f0cd8b02be6fef055fa59301dfb193059f70275cd1f6e270946a5d6191b7f4964ef3c84972d42339242e7d21e440334b1322abe759289c08859550143719b851d002da25bb84a1ff2e4b8d80d15ab50b3af3111de192ac2b75be2f14907a6a6d3a1dbcecb43141ced86931fb0df993177dce8a80f5ee8d3e0b389b5a2d8bd98fa4d39b979dfa450de27164af06b202cee9050c67d311427cd6c58bcfa5ff4f2ffbdf1401a8f27bbaf7a704f3ae98fd5a7afff2b2f7a8a8413cebefe97e331d3186a978f1b9f4ffed65ff27b3bcf67bfa8f0c74cac58bcfa5ffbfd0bf97a81e0c8666cea15feb5ed5b4de7754fd7df7d57de6887dcabd6d5f8c90e820b61727bd548447e0fa370965ee9d1f51766b4eac6bb3c5233b2790b621fd7e9fc090df80290eb74869d68eaf41adbfa8f3fb264279a4c6b46defafb2377bbbcadefe7f5565cf5361474d9f53e0ae4845670bcf32f8307df3917fe3dfa983ec994f4b7c8acee333296b3a26f9a6d4a123c87aec9823d0dc994c4d10fd26ac40d5dca0cbc6a607cfe065006541958a88ca0c29b34cd05c9573a884485fc20a0d7c5a0b7b22eeb1733e6db0ad21bb454ea6b073e504c624b36f54f45ad55b89275f60b219d7a4894e8ef4fa34a0de1da6e8365354b894021f94f6241cb26754b6b7ca53958236ce88e68ad8b3c316c9f627e98e59722eae013977c73522a04479765af798add149f36848865998133f493f65f6b328a21fd426420b2cabca16f1b6889f30e23ee61bf820865043ec6e4479386536afd067fef5828e0ff9d255e5c5bb78460f532cc552feb518485ca56a4e7b39be323ef66b5d588e5163405e77a559fc6995c93f7e2995f93a2395158d6bfd378b88307f98c95f18ff8ec15af0b1c2264b8e36241d8b41abb6295bdab8be7a5026494e58445cc3b668e9b9c2a2e514ba5f023acc88dd629ec325437fca56edc359b59376b2dd5a69df022a57e3eb5b8863b32360dad25d3434efa770089e3023dfd2246a0b3b7076ad1813b508033e95abcb2eaa44b5b59c0c1e465776f3c846a6abca8cb1182673ec83fa9b21455328bd6bcceb67ba8dda9a9e2cc34410eaab9f7283e2c00e198995fdee20df69a3c3654588e9223be99320af5633a6299dc3c610b43b996625369be031a218aa1700a8b5b59038239cb571bf6daad9be2aeceb38cb6c6d1002f8cb9d65629a806d8ed72c4488f17a75469b2da6465b37bada687dd6efbd33a37ce10288212874a39a52d76b0c23827cd860a5afed1e797ca03d4f0de8d880cdf6a2558c6a3549d6fc55adcff18cef6171fa225c8295040b52ffee0ec225b7ecd87484d7d89cede81399e7b449f1837febcb513a24ac774b9a01cf88638970ba8bf0c4035da968bd7554fbcb7b00f73303b7ef2fc9c3196aa313354f63b95a0a4c3ab72315081b284f81aef67c1a35ae859240355ead3307781d6d675382951a5a9f8139f752b083764be290bf855f9cf9a61ad28907ee121ba2713b74b96644401739cd46888d581c616c08b7fd9858ffa58acb7f2edfcfc891ed028b230bd77cc8bf9500ce92d520fd7d27d1eaf18e4e1c4b1e9f0783ab43cc26167fbc674eb32cc6fff5ce9d0b39912677a3514775d70921bbe36e446b61c095da5b0f447d2d03181f7a57127d82fa2ea608483ff20bb3d66aa307eb417320fa5ffb2b80efb2f541eb1faabce9fc06931a2cb04c09169bef2dc79a70c744d6f7bce307661131bb21ce3cd523ccacb523c234ebfcedef71bf4ca0d93fa3b6dfa9c3845d69dd76573eeb9ab86be14002bc5a75a0c0f1f1b3c9bc02f83567013bfc2267422eaa89e4710df263f88e15cf8f5b24ac3d6ce1ea8254f7e097b71122d237117ef7c93823e1d82d5325089bf0682a88c71221c35264a180f88959cb705f45f8b525cc368c49a7d8e7e3e71c5fceb4096f17feaae09810042428c5cf2a9654c1048634bcbb927fed2755a85aad278011e8a3c3a49431be95973729fe2be5cfbb5713adcb5a2dabefd2ad6639b0090ec4cc591dd3ea8367a63777d5560c875d69167f3ae5f9794fee71898c3b5b2839a9bb7065af6593141e6ad7898f9f56cdc93552719a02086ce5dfc9757b2840bcacd7f2321d6a555b238ea8f83defeb4a8b9ace6225fbf9e6134230aa984a739cf7f5a9001ea57931764c5de4eb001068bff2fe10e028152fdeb3fbcd041134e746eedc0a8c4ddae64f3da4bebb9eff7a3287927097dff96c0e1ab0cf7f3da18a7157cd7d5d293275e83cff7da9042f105353f2e275adc898e765fee7ad09f256ac6bb9af17d4cb1df3571e73570813ceff3c9cf17dbd9efb3e9883932be783c6e7e8e75746e7d7c7fcaf17d48b1ef3573e99d23974973ff7c304dbd67e05ee13e6ef98beb27402b69eff796d42c82cf33f6fd184b2ceff7c434d50351f321b3a0d54f32113ce39b7fcd7b5292ece65ce39576ac60ca78719a878f3cd56b5192e9df953a6d5895c0c0a9cdce6f5505b6689d4097e3c5130b83ac979f8fe82100c95aba6ed814dc34fd57e4cc3f71d10cd1552673c1611db272479edcc9000fb618ebfc8b4ea6c5642a91eb72b4b807602f0ee3fd7f81bf770471bb0b1e5db52e691ee2cf0856114f2790bcbf7ba8c9727a6670858d475e98f053aa710be5dc78383f43763d55315e3bdf900a30a53393726a3ccb7b367b9655e69bd8697813856f78dc31d3a28ae68e32fa11ae1a235a050719b54418807491c587d7f9cda76a7017d4ce9e2b9fa2144ff488745bf3510df21ba551ee5c2fed92e0f0c84f5de09016f25375ae01c53f0eb7af252420066ced9da9b73f272eb5b291c4e7e3f9dde760987c85a01fe992769e931f87e799274173fd765d79a8fa9cf82f0c4b1709c9c9409ac07ae354ea3ab99a3d774753cd601b86a59a73a4d72e6df2cdbe2ec9b79f648f7987b7e75f1f82ee9ec466d1fadf1c1a83f66c37994aab08bf89bbeba354e1da967290b12ed47d66c8e7ba0c101b6697f97f6c1c70c9cfc22e1425aaa80820e97f6a3ab92d69f282c006fec83e2ee9d020edec5016c019c27a76dede75c17f02b748ae9e3db360edb26c1127144f21995b00198fc16c43bf3bce08fb1c698595a376e4c5e03a5160d30aff326640a1cd4664f7cbbbee41e47d8b62328f38c93681ac03e8b32a82f43d6d688a16c5791aa3f6e3e80c7dfd5507937c18fbc4fcda941e9c3a54e1cd1bc246c82ebdd85a271ec95e08554860a91bf8e77882614a986d78d6c5ca585f42edb12144b27aa20dba16779961e9e4d11a84faaf923034e03c966c94921139e40ff189db3c0ab33d7d20ca0c36f90509c83f89cbb2664c3f4bce276b4cfddd77a5e9ae4e42458f93d7bea607eafe1b474d8210fda3a84bff686efc327c4973f995f77c6a9e8b44605a23593bf4c4bf4a0aa68e393edaac6344b8033bed993124bb934dc9418119815a2954f751d37bf7de8189b949a4872f169a784029b716f8faaafcec3ec7426bf3b9d7580217727fd2f4d4bc217032dc5e577473b7d744c9c275ab789883ba494ba2004dd4baab668b214ed0e6e3f4bfe366b5ecc78bf0ac5ad31bee2de4a00523a40e3533e002061bd03c62d6079de75f51a4e84c1c6b5c652eab81ccbba0eecb63cef5f6db41ed1a823b535d5c2299e93dbebbefc7205919d0722dc5866a1065f352363408194596bf524cf8c79eee30495765085671e7beabcc5614f72c5f89a87838d2cff3d33028e1a0b3acc8b10ad6612d6d055fb8df15bf4ae165a5fab62e8bdb86c9840714bef1ac47d2d707466125a711763d367556612b3ad961c85b57bd867e033284a4dcffc3a858ea854ce21fd3eb708f18cbb9869bd62ee999a38015f620ec83e4be835abd6316b555dda89ab285d1279c6a6a9e8e16efff7f1379e3ea90755f49d4be89cea2cc8c3749552029378bfaa584e9dd36eeaa4598a18f02379e5ced061442c5cbde7dff8eb5ba5e1ec7f86d7c5575c41be0442f44af42b2ef3efbae05efd8cbfd08a05ec4cfa4881509d1567cc793a2dad32564be60c28dea4d02cd04f6163aebdbe32f563aa759e49dc2645b61c28573138516e1d58d9cd4766e0a8679de367e960c6889de91937dfbca2ad73bd598caf9e95be5b9322acb688f46dc7e44b7fc15d5c41561024bcaf7f155eafc1d291e715aa48cd4accf331ef26d19daa3627da96e0da6fb4817b562d5a5599536500c3f8b52a9d1105538efa46736e38ac739597d873c22e7bd26ea6f591920968b98dd4fdb513b0c0dc5538563fd52e18e791c7248aa9ec4377570047d3fe29a5146acbc4619b76eb862435ebab65d4c9a5a5e52d7d6b6319b1b0e9e24b4f5dab760dbbd4e2df7d0d9a4108cc38c526806dbfc6f5dc6251cefd462781b46a1f81ff3e7c16151ae30a0d4ebcf669fc95abe8aac5cadc694c46030f9a28c5dda02d64eb83e33715ba9360f8b4b9a73a582b8e84fd425dfcc201ea996810a50eae4ca6e5bdf1cd00c7261eb4e5a1dcbdd45c2893a055967904cdbe482624d59faf22c91acbfa5dae6a09f2774d72082104ab2d2b646ec00f4d6ea47d85c2e67207ddc0e293a9b47747f30393f14cf75679cc368dfa2df97b0f9ade923abc46186c17a1ac16a01459201ddbdca0d5a529a1c65ef23be7139ac99889d6fa4ef444b56b10569a2acf8b4eeeef79fbda906bad4a65d4da9e308fcf34ecc22bab06b678c23c57d3c530f777f98721f25a9df6d0f2cfe8f0363f0d727f9ff73a9d40a185595738cbaacc5233e352894fcb8b0e720654d11a46609aebaa4da88136156dc20b940a9783cc4b2091f5c53df2ba7c56273e6459dc35d8fdfab9c3e8bca1910a0b2d2b3e794bd69178a9763fc1343650d4cc307583349f07da975ad7b0337365fb0544d9728b1999cb38382db2046df126accbf19d7488d507adb72489fb0aa3e502d7182b0b510f8e4767588e6701058f48c7e8b50560eae71b2365216030e64a0f87eccbe864e545da4cb32f035a3f0f8e3a38eafc2d398b3bda816be74415dfc32d78608a99c3d913f5ff92346135c5d66d70aa1634c2cb1dc01433022c16dd694978aaa74e642b8ea66c92f45d81d9d1340639323f3cb1cd7852c2118f0ab47821e3edc9491d1ec20549c6d064b75cec8d4b03e63d9f3b48546118fea1c97a8482544dccb35eec1a309ab5536a6a476e4ce59aa4726d943cfc0d2a279eaf0d2ba3da728fa9b5c16ece7c9a128c8dbb95a957d4b70b031b8a545d4021b0f99202b031e98241ac96bb42d742e6c9dd03f1178d6b59b797e9416e8c00b252b0828cd1976c154572243c37ed297c488c093ae9008a50a8118249e6ac9921ddec17a285588c5323a5b66ca7562b4ff9df602125b18f257c2605715574f0d230d1e3ce7654438450f973f2b16c6473688263943aad888f4f4a1d3af336998b67a58fb4aea28fc2ce9883762c0e75af5cb5b3f4864bdc143b1cb5031399993d46d219706885ad364830005a04757a4e3c2115b62ce7c1a4f6dcf90cc6aa89f50e76f4e855a9a1b51ac3318ccaa2c9eeda18081f5583657aab94a36bd2d8a4eb2506f60d73756df418a60f53aa14563c47ee85be4cf2a2e12ebc3647f54e78447bd0a86c27360477bcfe9ef9be7eee0b45ce79ccc4cc4f49e1af642d5664f98679e32babac8ea3fd2d0b93f89ff3173b98079a6c063896ddaba11aa8321346e3601720faaf49d78bb9a2ff642d6b0e9ce93ad501d69d13f47c3f6d4def3e4f0befee9d99e9629ee962815f0b67993e1e962931ae4d95ba9145252a15242ea9d29d2bfe2dd5bcce9d18a91fd46efd82152ffcbcf2c44f75aca68eda9884a39b91953431da8c12dbb9522bb629355c315296e9d7556a201745894e076bb68bbf16bf58ebbba1ea27dff92d668e6ff592dfc4633779189ec07ed458b777c9ceccf3dd49e77616b57a08a0d95bbddf4adc1245d3543f64bf6e1b69db53aad4d9ee9cdcde4b9e99a9da686a2f93e9f7952e762f8595ab4207caaefb18725ea6d773b927b7151f07eca8bd07596fed11bdb06ec1b5b7f8574a0e5b6b2fcd5a15b67a994d341a9373330b43b30af3fcc42ac141a433ab3cb4e88e7b8e847063d1957d7c05dcf584639b519b3397aac45a55a87b315328b541bbab7b075c3dc3ababb4415d4eedc8ef2fdf075b37f33c6faa1b47f5d5bc0ec710f841cd1abdab40ebba115af72feef4871c25de868ac00605fa4dd44ded59fb5656a3171d122f7ea5960bb8424d71e34ff087bfe2ee06ca55cdb5e887be5e281c13558cec67a825713c04cb4dcbbd5a68dd53e5fa8bc9866bdbb060c5de3287f78cce87f1f55f628699b279f820defa23a9e34826169a9b27cbc675b705cc0f34614cb2c5d893443fc725c83413fdc8ed2bcebc5a1d03462798d3d5b7d4f664ee25f49143ace4d63265f7994f69beb9a66fc53885f86e02423831ca80c8916bb7c430f2f8f7d88c18d68da338ec89116d887b2a8ee2c60fea564d88d55b639c0cc6f04ac09d2d0516b8a2a8d9136228c464dfec250f6fd55dd2cf7ecb043a49216ba0581f61a13509f9bfe61ca9b181f96c02a663cf8947752dcc7bfcfb41f5d571e75af870e2bda55579f582de074b26138717c05d8a2e1388ff3b7a6eca0ac2cf570b577f05771755c42be96f8b51dd2f705ecb732bc481c10b9fa5c5f4ce646e349c2062c4b979314624a517b538d7d98f5b4d1ce026925f451ccebcae554039abe28ae60e0fc64cd4577a5420d4d9b8e49c5a89c4a14eceb1d6b9f2f45f6b18fa77f4edc5ac44b247350f2f45ec363d9ddd2b4fdf8eaffadabb3dc598d3e95dcbc7106beb6482a27b5e50829873a74e4c29209560117c54c8201209b0224f590bc6f4dd9724657b2f15f80efb245edf554df618b78f8f75d2d2532ad0c7a32cffeeaad551baa99b2b27d33815cc433d85247c773573ddaf47006446e9b8bd4bf23c796af8491c88859197ac553d35a3f7b6b8b2960d176ce61aff6856925010cfe4ba325fcd0b5040b4f7341b7f07ee302f4263075cacae80739b552f0dc6cbe93fc9a5653e6cee9cf4dd7aeb98fc245a556a38b0712ff77ac2f81756a966a693c3a714d34f5433cdf9aeb61bd97044cd1becbca15e1040cd07922951ab802fabecaf1159db5be092d6178364706072e0ba2f7ac0c746f80269bd6852b3f707af8a6cb2290c195e243e9134a936a9748f428a326271c2957c0645458f65dc50f0f9a6f37194c4142a758c40fa4ae6e1d8a4b6ae36bb29946b1cb7cebfe7532f95bc4e9f2c5e17ee7711463f4789f4a561f4583da23fbf27174870b0166e057466fe2b16a7ea28cd932cb81854ed94ebf87f938e241249e8bb2dd18d1b5030262880025774d2bedb588d8dfd51efe0e6b19b801c9df8771b203347819a68636703e6b3d1de87440c5b70c06ccccb3db3c6d6a5a416f4e00b58560a9591bd48c16f59928eaf5d0dc554cb341a2679a5d62b384a1b848d7fdf2977103f848964b61aa749fa74aaa8676a90d328953817a7445cbf575591bebfaa390c41357b9d0b38552d6fadfd1cab3b55287a12573016a3fe5cdc933ec73dc4726793169c962840bea8c64edc0abcf6b267b0f2a87b870afc3ed2b886e57e94c554e1c2897a11ffc2ba1e5db41c5eb44c92e198381257d1fc56befc347790a12a6953a440381f03302025940c7e35bdc0d471cec50df4b937c601c105fda948da3d219f37a7734c54c1f7cd25b9659efd73f3c6ca45c9544bfbcdd88ee0685547a92981babf354e41c4bf479e944335c99068d68b579eaaf0d57a3f4ad30406fb91a5a1b5b6872cf5e2304ab18156fd038e4188a81eea6a4254badedf20fb755f4d1cb59191a60e3f2cd6105f59a87599043a5591b19effd2ca72c8a892f3dc495525ca8c25be9ed0b19e1b548b7cb327329679d41ee289c7f79c77530b879750acaf61aeaf118a4d01f440b50ab8ebf615b8af6fb8896d1a8b778d5e7abec2735a35e2e92c77de83b9b9a3bd545ddf3aa29beb99a0c43f5debc2692044efa149ccb6c1af58482d81c4adf29a8e0d0a78ef85bc859a2029a72614e431463e28574df7ac561f384cffb0b232c9266af4f8c7d9674cbe68a0fbaa3177d2d077d7709eaeda145de3c3e9a9e61a27ab416a5d17fcecab4d1d5ae4b000d679364139906a616886f7d472c3c4c41b4c435c3b5f7e5b2e74901ca0304c3dabce014e57850397ab1094232b65dbf13b1256b249954d62c448ca2a14f7f06c6bb151938d4e55461189028f839502445102ba5cc59cfe1993357a28be028260722d6a1b1cbc7a75209755f3940d4e9987da6825b43a38c9b0aef5cdce77b000243a78c67970bd33cb90f82b241ce8ad5623fb8152e70d559d1b2c24a651bf1abd35c5ee4cf6faf5d1f5d90309add0e45fde276cafdcc57521c79f62883cf905a1178fc0c8152f91c91162ecba4e3f947e4a04a7d757fdebf1d7524c9f3bb79ebe72f5a7258340a63e18f260dd11e5dd2ecc42f4c4b45f46e639e144c4cd9330e07d8898e534f5d3f16f7a10c46d360f57b7decc135bbf9090f5f8455d1a9f62df7aee5c16ed90ff46ccfb41142a9f47e9396cdf27cca1ab2a3fd2b40055fa12625a9d1defa9d24f0053f8ea4d42dce94472e693c27a949e17704ca7fe1bacdb7ad9bd60dd36cbaec59135ab6ea6dfddca62e2666ea1d47dc1c46d2bdd94899bb8ad723761e2e660e2cacc09d0e0df5da52b3abcd3a34d3903a6e88be57161d5973401e551ce8adb02e57e1f61bd57de1ce94d96e23f763359762f19beb9004293778be15358742f19be6db92b0cdfa6dc4d7edf2957b84064e15894bb36c377a7faf0e8a912b24b406b41ffa1ad976012aeaa2db970365876a1f6d88fded8d56ded92210f6b3643de26b698d1ca412fddd5c89d042f59f3dd3ac39a178294352f6357d75408258aa1355873a376bfdc474b601cc42c720c9fba4420decc6a2fd8ef25aa9b5abb31a9bd60bf778189531c27bfb3bbe10719f65bb2623f246cccdc90465648ec999b52a962cf3c92500d90af1677615de5c17ed28dce53a92a3cf3fd7c3bbe0a1d77da9b4207b8d862568645f3afd3133d5925496fb2d5a448a39ed5433ce7af38d8bb039271fb08910d56232b4c6f3905662fa640bcf6d19283fd939712f273192240a9ec12d24fa6886ec714aae9aaf396daba2d08e09ebf671b64d1856ad1fc56c9efd2762c9eab7445ef2791a553fa2266be73ed9c8967d6b26a9400152473000d9d426ed807b0a1455470c6bf454bbae1bd69cdf25e1cb0f33abebdba8bb92af19490693dc2e217708e712f63fa1e1816e3536d4e21ed56822293ff7ac617cc1c43feb79ffef736f7bf63c5f244dad85e2f7af0d2ffdee7fed7ea6cf0fad3713a1d6bb4db74b43b2201a31d578e7170b9c71d14982cb6dd1473938cfdfc7b0e32c99513d16bf31d57300d5de7733f557e6ca0fc60554ed8554c77d28e89f66bdcb63aff321b1cfd6d4f748ea5bee6cc1cb1f53994b74766227b40be01a80d5be259ab55db373ee9f02029f2f7a60e8dd7b60ec1b11140f0306ac4033e3fa6556ac639a5b706eac9e4e1663c75639866360c163070af17507ed56a430beb4dad00e45779b27c1c6b47f2f92d07d16be74e9ac5b3fecd78eb89ed57a8e197d485e87440c9f9e5a163b4cf8fd43ad0418f3680e2cacabeccb874ff34a2bc3d9205303c6b863fd4d96db8d4adf90bd034e436f06fe89140421db251f7d29de3e2eb10da8f4d93f75bbcba2d2ba9054dde0709eb5365a2e3f2016b39f82853bcaf74d23a1927533f7a905636b6fe7b9b10aff344e68028e893d431746fceac67e87312ed336c79ad336d71600c8ff5987dd288b53b49eadc871b09ac91b1f2269808efca1c7f9781c7ef188b75f17000a7231536a1c6d9139c1b6654af38894a4cd254b127d3633282f1ce123837f06d4da7a3927a335f3ba3ce9113cfbeccc07e9d3068d10cc6ce8b9b9bb42c2719944bc04c66568593767568d23e71b04a6d688d864450ac68869bf7f8ca90ac3e7f209d219e5388884e795fd1115726da49266a9f0157cd409f5af7c6db5babcacd8b853d71c7ef95f61a0b37a10503a57b24a0060bddbc75de420425bb4c87a9cdaaf762d22eeb21cbce43ca087ae9c6b6efaffa6a395291419653aa0bf935f4647b7c9bcb848c747c37fc5ff6f0801be60f7a40b9c7f21ff48048a1eabb7bb8b5806ca3ad6b544686e6bd78e999093c59c33f839abf67f8e11babf809cbce1fc061020ea8fd075dcc401e8a7fd0c502346eaaff79175465ccdfd3c55d7e1754a12dffa08b0d5883d51f74c17c7deb77c3e2ffb97feefefbff8c55f8f09b443e3dcfefe270c8a3b4ee0d654d887ecab3806d00cf02f7e7eb84ece7dd7bf1f590f8179c92cc3f96563c1111defbf456b9320d17e5d6950aea367245c0cff6f20f6e15b950d6dfd48117caf1b72e94dfff67ac0addbcbdadf0d8ac4bbfbdc7256e04726a697526ef25bbab55cd4f1415dcd979734856edb56bbe6f0aa1621ffb70c97ebdfdc0987c124ed5a302e371063ee0e142f17ad588a1dd80a8bb21d02172885ed1db3b67966fa8703dd553a6875326b9543effeca5d8182f78d61c5a397f9b2f39efa7e4cbc4f5f29f0edeb7074f7440ea721e722776df9cccc0ec9b59c6dbfbf6cb79f7cd69322c5a4839868968a1103eb37732c27f7cc6aa7d55e319ab5f9cb1984976c5a8ffd6597bfc03a665c2b8923d477c83a0bae2206c0b94249dd94367b3cdc6c98347b8c9026627537e44ac7cdc60480342b6b843f35b4399ef189cf92b2a4bfdbc6b1f51f50b29ed2e1d294782735108bc45f1b4c825731bfd285d585ae528438a2b10ef977e064ddec215bf5b5d825d0ba371da7a178d631c099d4d34beeaabfe199ae8ad01df6dae043c483d15dfa239c15b346718d31cf634e0c5f34eb199b64fb317eecd7f4a62762f48ca3fdef2b7de89dfc87b308141388d26e4cbe4e18054a82fbb715b825effc56e1c1c55bd5b399316a8c2f4fceb9b373d9c1b2a8157a75f9ee85f5c9fbf7b92e747e7e2241f6efff141d6391baa8c8ac84d73b4f080c6637b8937e3fb8f6709276dfefee34995649f5e9d66cdb7ffca411bc841eb92b7b390da55a60eda58f57ebddae434996f5fbd8845017a9bf29ad0e6dfda0731e7e1e0ed8777ff9187e4a4167e0caeb0ab76ab7843765db5fdf91a3909bbea788746f4b9ca6f54139ab2ebaae6bcf746b3e917b42abcda57d455b316f761474b83c7d28bb2d7d13815f84ea4efdba0973edc903798efe396db2ebe2f05c3f4a0c5dbbd702628a9f902c56a168ab51f6d0c298f52ec5686dc794d87fbdf083a1995b43f850f76b97c933287e9ae8b85d879958659b338ec5feaba89f0fdaa1308d36da8e4c1b848d11244fc0d982618e982572e092888701e015d7d5a390b12d0e53b08289530ea365c6617848fc62b102fa82db335c27e79f3b63474fab9877e60240a52b343377e5078fb93b9e33ba5e61059d9047e519f335c98f8e22cfdaff8160d2cff92734bc45ec84e54114f9bc31c01d555af70fc86f9be537a9010f2cca734df25a2ec5bb762e56dd2591a10000702203e7f99e8b7ece09e6de1ca93b17fd920f56803917455f56fb50964668f15ba783e28fd5d340b754676d2767578408c3b2abe19f316ec578d2aec55c66eb5a9b3d0017de18dfdaa118cafee75dd034961ce856af4c2eae97e5a2cadb0d2132ba1a17e80e40741c50d53c783d9f4c551e8e7a5ad919fba8ad960516be4e247d28f9b7ea113addd43dae7536abf7c565a4db489d949ec9e8fd9ffaed6e3f447400f42f936b17dbac6bcfa28ff7d487bb94f477f4edb22f2c0c7cc9164b6849923eb718437991f088a59e4bc493a887f843670373670336f1af2a38641930d71ed71dccb6f323f24d162fcef8b71b013017ed4e447c3d1bbce989e19c73c6c317e48991d4f20fc13b98093167d0e2273e91211163656c88f9bb499ab0e19a375f2dfb693feff9e8b978dd938f620c9fe6670736959ca7deefb5376da66af2a8efe02ab7893c595cfb48e5a6e1d01ef6c20c8be923a79f81d566d185677e26a7a86ec195524435fc3a94b0e81262494ba090f5bc414ac25447de6ae51dc6453b58c38db6a2f26e9e3d63146f2fed1bd1aab120335d6aec5af935ddd186f78f187a2459ac6f9fb1a3c8ffb52cae047f38cecb5137a3523acb0e1202efc0e27136a86c8592390465cb976ee9a3eb3358e168fde57c58efaeb4aabcef38c1726b351ad7789b0f3bc64be4d02b25cb9f49dd16a82f8a76761663a3f006be36493076b3dd5fe75c29a9e9d03c73bca8236e982064ad3ded1a6135370a001df35149ed2c3c1cdeb62882e56e294f20474d9b08be6ff68295b5e7c0dba8455dd77aea22c1fd244dae2d7750ba7964ca4545a75ad6e669add8837a42e23c1f4ba32caa0985c5ffac77a0bafdb4b6f92022b39d42c74edab1333741c5674ef7653ceaa81a5a078c7c2c9cca18acec616e663a83194611a471d7403ff155701ee5c9b108b2903fe115f4d84f93c26bf1fd387924d8b9ca2fdf1589d1a4e2659673fcd25461fa4b323b7105cbda9b768ca71aa39f463ba136dbdde820c9a5bfc30c67a3852810355b6e35f93013fc0167247c5cd6cf6f2113c4c29141c1aec2375f854ed198b0d31080ddbe11b940870ba0bae45500e4efa5252ad4a77070db1ea2e749240f736bc16dbf4065a7d4be3632b6b53f3da0a316d1ce1b4b8ee9a22b25a552ff0702217a6feb1af8d04708793c78a73732f8784b5b52a6d21226cbb998d35a59bd5bf0b6c43354ecdccf97b7d0fe82c611aacbefd1e3c66c226e81fc53a7c7d224716581ae70063e5aa0a81b12330e85b5d71ff4d60dcfe02186722dd24603448f71730d26ac59e2ad4b31dbb29e84c77d34d2f4530c675d838173e80083dfc1e841784f0b4010807254f40dc3ce1ef5f08f2fd94877d5dd522c0cf9cb0a1371befdf84f8d33f46bfb7416b61e59f82d1171656ff98373288fa06f4763d5520f4ca9cd32380d7e8fd9bc0bbfb03e0554b90a1c3061428d55f00af55a5877755ff1ef80261faf58f65167c1511a7b49a9f9c3cfcebab5948bb53f6c06faeff9b07fe2d0836f9ae44f46bfe028235a05ffd37d16f237292feb1cac2ef93ecfe2c17fd06ca27f0da17e837f87f05fdccd95db468b2f8cf9cdd50e44afd63fdeeb3dbbe511b026fca2c2e6214ed9ab15cf0519edab61c3573a4a5dce02ea28033ec61e8d8fc8866f6ed4337e5f698867501fe6b29814dbd176c9d77390bcf245c64628af67f844195508423b37f2093bf615a6be377a212b37e5ee2d3a3ea53b09cae91f7a4e15cb51c23281e3fc5fbf868f6f14ecec0d489992771be6f638835e2728f4716c26830a2758be7c57d4f9c9127e55e66f078d1cc692379bc81ab0fafe0eaf184dcf6054a267b745ef7f3444f660fd9dd66f010f3fff1caf4ff07d35cdfaa06d15c22e55cef25eae4236fc34bd121072def59cfc16af5267a50fe2850b2bb405a8c5c85ffd31c873b410a572e96a9533f234a45a8f91af1a44da43e5e5c5335232203aafbc8ff5bfab7b6b40f4b94ab3a8a89de1734d589a99bd97b5f3d78b7f11a762fa9a458b9740eddc2d27ed44531228b920244dd5c2cffd79082fe16add05a1a378f0e4e4b6dc9dfa58cfcedae60a1214fbb3d8d2d9af29c508e9964650479d93806830a87b14d5f4b04ea1dcb82254b0506da604e74098f50e774f3043e38eb366466be46cdabbb2723ee8dabc8a1c57cc4d55fe2ec2bca2c0f87fc7c42bac4995164a0bf65098acb52cd56a4b4cc147f222107256ca98cbcd73b567ef3f94d5376a161e03e811c4bb1dc688ec42f595041ef3a41f755d478130766bbcce4df3ec063d5b950cd24bb721fe37edb415c6c398be4f7a2fc3b92265e300f6fceae1666b0f9f7b7aa7ff5cce3f520898b6cbd63ed424d8012ce25a70eb41135813ebaebdc09d205d427f8dabf44dbe7ab5bd570598f84fe696faee715403f13d07dc412ba4c02a29449ec3a3436ea02483d8f32a613655569d38ead4a4b08ee5884c0a9b3cdbfc6dea243bf7359deca303f8ec79e58425acc93f1c55c841682ab37f0fbb748dfd46b39e10e17e23cbe85efb825097fe34afe53c99ba625d7121d482ef72760de57d6bc1174eec7b7667a8013c5e5cf78d3ca7a676cc0f45c29b6736e0a3761b30bf29a1c6fb39d3d5412d4ffa35a1ec17b02c25af32b8a9ab0f6a6c9dbf4decb6343bd7c334bb2a86323c1df673666af5b5f72c0dc745ace89605ec7b3d868c2993674fab56c7a9641d887c6b6e49bb2c8e65f1eacb2fe67f7c10a65b5264ed4bebc118e28a07f4048e1bef7eb63596525c50c197b53f91d537c431aeb17a47128a4715d83d4c288fe97268237ce952864498576ef987f2e994ca79143a1ab0c61f57977637985ec85c6bc0b47c9ec72d4f9d3354abc5398a12782b3eaea5252191a01d0621a3c932f9ad99a648a11f5d2ac22c642e2366aed795617e4b8ad1b4d5911c3437a7cdd19adb8048b68f1840ce818fef8126f77f9905eb1bcb3c1672f8bcf5aad0b5964d889495dff387c0648cbf02b08e17e1219803382e50cac5e2458ed4b92cf6a679e0bfb7257157820cbd6d9837bd71daa5ce026c47a6754ffddbf73bdc37ccc7a8e9ffe58d630a5c62b4b927147536d943fcfbf37f6bf7d2a7f5e3d29fda3f9eaa9b466358ff280bd73d42402b0ab09b0fb6a30e910d0602ece9d7ce6a2eaa9193fafbfba57e2fbedca5e7598556e5d45ed7c706145d98967b3280963d44b67fb5b0632b8c9df319cfd4edccfcda0835f0f2a0901f5d2d9fdc9a0e21fa911117d57c6f6894bb3a68ff2049bdfb48094b2390369168bddd55937197cac4c86746b4692a1906e4979cb9a38665d0ff139593bfbdd384db5fd9eb50d943b26bb610dfae97d833ec66b593be760f4a2dfa1ea27c4edcd0d79023ccebbf7efc7e0723feeb91d7d14da4cee67306e22490c5f2a0c484f1abd74af2eacbe39d4b9f3e6aa92038bc0a91ffb57b0ac74c2ad522877125a3f8e597d43e7814d2b7df65f82b61ff3c3923f8797c8b10773fb3873e5f0a6e62a4fccf1dc4bc582174d6bb4efa579599293ce2a0b8841a72ba7e0b6df18e5f140330706f6b3496f708f844d2cbedeb66810ef4ff44ad13b201fdace61ca7209eedbb2e04c280d696bfb82b64ee44afdd1cee735cae1f89283fd25b17dc4f64ce844836a5ef086580a3c3aaa91b7889ff122beabc2ba9bc7b22f24fd7ecab3679c1d74f65249ee315cc153bde747483aa633c215788aa9b3ade07a095fae293e71848b61d77750c3e58b1777748bd0e4f3ede17c271681a7a2957a65b8988f94e1868064664cfa21fd163b391330fc28fe8ec4ef93890bb88d45ab0c1add1958147289342967249a3b3959bc14257b40f5ca3ff17268e93ff47278b74b834ff96cfbc2a5e135af05dd44f2a6d5a5edcd11f7b61fd5eabb7c0ef61d1590bf28f6323e078df79bd9d705403e5c63155394acf9d7dc0ef42b961e479c1c7f34e73df1b8dc97bd5fba151cbb2ae47ae7fd8c95d1847bfe6bebfd6f7916bc029d88d0695f40e7775c023c151158cb7ed625a034fa97a1f5af7b05bc02969223ceb03fe68b5ca479031afbb1a4908da1b1ea676dacef358cbd1718ffba95ff1560541cb88b2cf381f1b6c1befc499d088f75f6286d3eff978fd26fdbec5f8147cd811166950f8f370cf0cb3bc9ac2dbe5b59e408eeff1f428e5c1bfc2bc06839578d1818dbdf3e29f3afaa4260ec2ee846b478e9a2f8e784235fae4f98cf7890693eb0a60456d40640f6b9630ccd54dba25a9f710dad29aecc0c2b96f8304b725abd832bf3362db696894f590788a9289da851eb23758fdd63c20e6ce263e8169997517a2c3b2adaf4e0b5d57f7d2f0b44ecddc55e524b5c427587c5d913ac6d2ff25885ddd251056e6bb9ffa69f04459f944bfb8545a444b5b26d104e34b795986d1d1759a0bd6fa3c24b3f0a8e624996c6afd747e7abeeaf116fcfbc721983ef6b5866b4477187ab730eabfeca966c7811154b30f89e9dd799f290f2616d3bb259050885a4f769fed60a73391b94fb7989a289c2f6e16aa0dc234a3b1ccf4c3b5e46dcc2814aae9d27390ff331f22186d7bcc39a83c6ada3721c21b2b4ddb1363470534dcc58792c2cb296e9f302f57967d96e7d598f91da71745591f27076d78d4eca30df27da428a05cbb280f4a00deb0ffe79df8331c7681302e6504db40bb1803c6be5e2eb7b5c8d2371a59f681454b25c8d6f8fb03d6fe06bdfecff634af8ca05f00a4d7b3ffa5e08b8bfcd981f1cf83d17e76f519b6768bedf60d68de937caace3251df16d0350bfee642c409bac05683288dfb59c3ab6e5e9ea4ef5b6716734e316b02bed7f7d577e057eadf607a828586328b30bafc9fbd0a194f591711d2694e2d84b8b3dfef6fe9d283a4c2f6e8b0a4c8b352d7e1d53f7f59d33046b128e324c683ec13a9060bd5c1b53e6ba655de9e51130b9630d055b96fe0105933bd59bc391053d98288a03a951ca31be767fbd871e9c04b102ddbca4077775d003100c55fcd731efb7f7bf41b1609dcff9e5ee78cb286dc24bcef24f8076b8ce9cd61468b32f3b406d726df8a67f6caff5941aa2fae0cc691e900cfe00e7d3b628b8f7107f241299de4b3332d0e47ab612ce4cff4c648736e0a9da91ce267b94b9ce26a71184a687c479a3ce3863d3b48e2bad861d5f9de20f69ec35594acd27a01b6764d298fe9524a51d2675738602083b416ddf7ad7b792d51e7c6cf691bf4f50684a95075128c7fc3f8d73938cb380a053b2f7958abd0950b8df19caee376dc7a8f443312770b75e9802bc8ca1f6ce68a0cd40e6fe6edfa431dc27a80d1f58a312b966959a91cf5bcd51c341d88539ca30b1ce21d2f70bab72700344bb3d4ec51472bb070666b5c6ff81451807a3ac82b16a2b258d99e317e38ce3e36769408717a6b07be5b661d0bb3443fd13683e59d06436e6a7247973e3129aa4828b4dd7665eff07ab24b8c3ac5cb3b84ee7b16665f8204493e57586cec413b87b2f909e1320cd3a5988dccfe191529bb9b6a55c5df8c408e1b7790b0481da76a36d92f5d935fc0d91758372d17b56b06756fd902697f5756a255a7650c75f6e2a5b59fd07f3d128a3c0a1069762caefce6e5ad06ab91d676623e3480cfc81c4ae4c6125d3a210b7389d90b9a07acae9a315b7a8b1453baf85483ca5325ad4cb392d224919c13e8a797df8718b43296e1155b49a0a43f3686a8325c91b767b38961a42de62a671e81a8a16793f685d8e3b0a72162d21fb872a33c0f49317d5ead83aad93ee551f06b21fa6167a11a2db435ad4b2f484d3216586917256b82c075f58b5294387c965b4d267ccf7840ff64fd2aa6bf2302b5540d6e512ea2fed11a17ec7f2043f25b9ade4a3c0f76566a500e13802474b3df3ae6faaa31dc01a2f9f0484287b7d77f5a07c87d6c30a4da5ac56b99042f6347ecd8bac0f14ff98155962c6536a211937f4521727b02c2f0bb4e21e60a8293525558c638aee915563521b79783612fb9df13fa47f4ef1eeca555d153d99e1b4aab1ed9c81ab3e1612e834eff539dd8827ec83cf254d5bf251247ba1d7ba80caa301035d572d4c6ac1e6d52682150f770655de02b397803996eb4b5368a7ea4c7223f1c71b84c3fc3c36a1689a55adcc72f3aa6496fbb911e636e6d3256b43756129785a156a9b589db498a4a4d22a6a88bd7630a10dfb781a5d055a57f5cd7af9da29a8d8a7a05a322c4b92404ca916a7d8365315bf5afe28da0f2735d624a9fd9f3c46218f91cf63545d336964abf73bc7c86745dd351d0463b942420896512ff77cb50525f63c5fabebff0bc7ebe1e5f19ae99cf315d8e76b7d79be7c40b4e51cab2c593323e28fa570b504bcc59283bbd6a72a6be29f2fdbdea56d6f63ac2c3bb35dd7148970559b2e33212f4681008e6092ad8c620d367e2e42addb2f57b0868dbd862dd6308eafc46f25be994efb5703150989a86bd5a22fd8ba7923e0f5a5aee29dbbbf9cf97d3af33be910856ca8bdaeedb449e4d927bece31e319405e4735b87929a5167e67de4c8b29ae3aad4084a741e0b3f49ddc330b915951876f39eda7146cea237fcb620585c672752367727e401a1951d369356bb849fa0255da5cdb60cbac3ec6f78055250d3464a040b4ea5a553b2ca516330e1e2a4bcc2b22c1df2cd262925a9537d7185228490b7cc69e25f6a3a8934cf331c653c9b393ff7d8c12219992b3a80b5d0f06239fd18d8124e8da3865faa185f6feefb0ffb7f12649e292fdccb99a693df55453bf42e337358bc69b7a0453dfa2f17e1538bae25f7918548dd719fed2cba4c452642ef1d1fac23ff39c9fad6aa107de06c75a7255448e8ae4173d2d7652018ab693703f421aaf67be1948095827436d1fc5d56ea00e82f355ed161649024c3573222e121d0f574eb81f252420c6437fcd0447ac873ed32a98c63dccb53a73a1d347e8036660312b945fe0e1e77f11b9a932e5a695f0b7557205af50faaa483fd9c2d99581cae490b64c5dbc393b286f4959e058a4beaa3892de8b44ed337b3f955c990a95067c5a29b96227deced0fb8ef3f7874c0a99dc37bebde74c248aa42f81b3db25758ad57391724ad855ee52b719e337134f40f55068b29b67a51ececc1a13bff9795a252e2fea76bd64d6e619554cc9dba152fda68f1f221f3f25afc64a0dcefc708a0f9f9397774a8df77cb99cc10eb2fb3b3eacd55ec8ebd2f8aa2dad1ac0ad9d955f673fa38243d2024533376127d49eaa9a689e9a619e369f93c5faa2857bd81ed3422ec8a6e7b18878dc4bbbb3c455bff844e20cfc29302d5e91e999580a22a0701b377be01df750636c1c07154df97c0b123a7f8cd73236aa80d7e7a595de760a2ba0de8aeb0ca6028a41e8a733be696cbb491dac4154c784d62cd5db0ea4d8d9413742371931707c930ed0556a6872d2a723efbb01cb37494289c16617dfa3839b78d275f1606d687799a65ad73bb76b68c94b0a76b22958f5bf4dc1c2320be39513766de3a88a4dc1ca36052bd914acfc0b0a865bbb7c49c12a5c64d950b01229d8f1150aa6d4f6731ed942c550b5c7cbe833ee44a6a8ad92e0548a239331502e763eae15a1a43d9275a97dc5ebafd2f3894f9b6cdd288e98464ed0864f5ba4655b13680bfa79fa92688c1e2a1bf7556c5f6d29d257c7627bd98532c860bb9683f730295d1c03bdd2fc76e61418992db65aa7b504b729ccdfe05c4e2597e78b5e6e95dee5f4f2a8f4f7da52c48f9f6583bac99cf7e91793ad9b25944ff18939c9a7baaa4d8dfd0dcc7b25e7f8a2b365e7e5f03153f1bdb4ec5d0d9577d3cd2043a33a466e3d22c3589da530f5a7e432f893cbccdf92c39a305be904dea26b1fbfd3f8f7b1d9d2707171553cc410f8ffc87bf3e5c4916c71f85534f5c78c3dd066dfaa6fdf899490b18c41d8d8ed72575554503606813624b1ce9d77ff22cf3929a58470b9ee2cf78bf84dc4b40b293395cbc9b32f4cec2373d46086fe1f7bd2eff3e66bb52e1190992a28c84e5090f8f52d63cf054250b508036adc572ea3b9c69a206d5e814c7b65b5ba4b52fb2d41b9dfd0560b3ee91a60a2baa647122672dfc2445643c244c26cfc1fc244a1ca9c868474ecad8474965b09e9d8db1fb04d2ab04d6a06e93882766e09e988fae75ca2cf659b546621dba49e843491e08480c79961edbf3939d5a741508462fbd4da9b99843df07cb21c95a818eb53ad12cfef834fc98e2e748340b94e9cd39e4039a0f15733ac753ac790cc136c90f3361b3461eca121b3413198ae540eea16c57bb6b058bc04c61ca43c7549ef3bf87e99bcf754fed3a1f7257c3f4bde4f187b5c6e90edebe09df692b79c978ae80a45c42eb99c5dd223d0bb3f5a819e467bec2187b709c596684cab752b6e2f66243803d998c56cc9800dd80cead23654a0f0aade91ee55d07de35eade47bb5f9cfdeab5c0acfd8b641820bfd4574453f0ef2c332fda8240fcb2a5bcb773592ef6a28dfd5e807773584bb7ac8ded535ed5124ee6a4877d53f71571fe9aa7e3a7553733905617d4dddd2388f28dda2f20cf4112c78f316adb5376fd198b1e7fc5bf4c8d7bba54be0af0709206b353d0f90078cdd1e33c351173959e2a0fb4e096d2e9cc13558ffa64064b98174639da51b0f4c3b681639dded1a50f5d751f78df83b9aabe2558432cc961af7d6162a2e65807daea41ee4cb58d45855d56d2bb92e9bb7ae4b5dbe2e9d7fe375f122daf648ba2e2bfa118887a01226e02f356495709334544de9a1453f16f2c325fdb09ba6b408fae1ca2d3dfae1270f4395b5e5dbd6926f5b53dc36101e441a581354c56f5e3cc8d8e01b6c49ea9afd424fcac26fb19237c8890b8a6b5bee86c52963550203fe9f71c9bfe217c9d76c972aebae3451854c63bb1595d3db515a1ffed0dd91e3f6424faae0db0d3509b32cb9686e3c68a921f9639d69b7db7972fdfa8509aab8e624785650c66d57311702fca7b6e65ba47f2faf87899aaeb296bc190ee97956d61832458f57bb21659806134f7895c42d35289bcef236f9bac6da2e6ea94045db3962104959616fb0823dd521a6868227951a06166adf6cc2557bd2b71e0f597212d8daa3befda0d116924eddeb83f387d4a915c5459a58153bd5b4256a72966a79a1c598c75367d504453f056e2f83816c3ddc61e97358831d5de2f93e01e77389058a48cbbfde0d3147762b2436b7046a1e7315c646646d54b2d07920a05e0264105a34b62a61daf026aaec1d0d55939be80a3d988364ec31d3d9ac44c5926664109d69e00745904b4f77334df8f8b3c9ac2fadbf6c5d4b907fc82a052addedae8750c7598739657fe7fff69b540086ae92b86b149816a020da41c5ef522d38894ef4b6d5be86d055d559269ccac8ae5c7350758434f6b0a7c339cc910c2c2be4bd50b9e683b754a7d38309f933aa3db21b622af7790d42c95859dd841a522d69a166a96380356949e1abb50e6e73435b8ca8d83bce6bbf1b623af8858360b0a31765cce9862f20b101bda82214680f874556446ca98b3e92b365ce963166133a5e10072c3eb18baeb1e2657eb712ba6bd4d085cedcff2e238d02ecdc5e955541381bb74bb3b984e3c4facea04737bd08a7de71b0c8c482b4a00e65576b82d27cb4a1eb5217f9ed6087e655ac2a85a2e3d602aa5b569bc4d6f2ff188735e6a16f34ba72ab66bad566ad712829753bd4ccc4fc5c4dfc355b924d81235b8b90fb80f563882cdb3d4a843f06f506f1502b542d52a6b4dc510cd61bccf60966e83756780baa298cbc0f7a80015cba667c6883f53ed1d0048df4fd0d794b8ad9653ffc98fde60932d0ec5ca3e600d0b7ed40ea814ff12d44801504a18467612164350586aa95300958bdd283e4671d37f5896d6d0848a44364ad0089be7a834e74f5fee971a4e63b7d981d7dbf9c02941a4d0e9d14cd985a3d4a045550af9d7f55acaaacc716418fea37c45a342a142f932b249660d879109e3cd1dc4c51851ed36bdaba40d86d002839a1f7a644ea05b1de2eb8e0d41b94aedfbf0b8fc7bb504d1d51a3848c4fb54feb82f02317edab74979b02adb5685be2836c2daea0a2e99ca6ce5f40a98a083c907a8372e3c78cc55b4756d8c54c07f11525e968f89ba3a36a10c1bc653d5603ce74055d3b7ddd4dd82c4b6d13b541d6af6eb86a9358bd837f2509429086c0c70403e48e702c30e9a735aa067366bcf715abadae52bccb8e4042301e024488a7f0d4a8951c752c1535412a0229c62bc858d5af227bea35c031375483728a9e72d1bcde4908de46af3ca0e7e11a356bf5e80a95ba8b058aec352a975c0f90efd847d76866f2afc80c871db9e0eaa9cc60bfa7f6c7daf58a4e0c69058ff2450588886a6b0c49af0697829c802b3946a4ec1e0442e5ccfc2555d321a9b161c6bfc5edacf3cfcf44fa799a009fd73a9ec02e1c24ec299e24a7ce26fd68abe5caa5c49ad4258a3de0fbb5ebb6d603b450dc727edeea2606def942c782e53eee1897583845efef5c9343ce8d47fc875b2559715d4d0e47c88afc83a53e3f9cd98d7e9044bbdde00dd16ed992443bbff27faf0959abcc6b49c295bb97842b672f09578bfdbb85ab998a1e4147b215c7e107c1b338c813a3597e8d6e502b121d08ddd46b434472367d3c45092b338c6fa811f2b526982c677b5d9c8a30be069d0c0db8de5cc2ad6891ffabf4784c35cbb8e483d30801fe0edd342ef284ce13762a545dd5a1c97191374f39d3168ad4ce69456a9eca7e49d6c3ac457949fce386d223ae0b2085b2ca124749abeceb4dcacb92b133939b474687ba257ece27a4ee59689a29b96f697faa3ac773e50265db1da5953f03c6a63f611d1830f6240cc8606a9fc84acf893020bb64404ebdccd788d6ae43b4d98bb60da707ab9524c1d96b7c4fd05beb0110f71dab6ee2ea67a8969011a13be388a5c74ad0fbb9d2cb22f17282c3175ae1157d8f02ed6810135195f1585f75253ac1c9e6e4076adb4ed77651e85907a8b65d7d4745c20eb1767b8d39115cb4dbb07a803e739dd555f1890d20c41b20a406f86e9fd58d3d71a1b86df32f56baa0cceaeaa54582f1fccb37309e2763bce8df88f1fe23caac1e24b7c41f9b96d4724b3f762d596f15caa8359051eb4a46adeefb516bfb06fcc06e4eeaad4c01aa82cd9738372effbaf5ebece309090731855ccdf061242a65ef8758ac4df817c5ba30271142c66ef0ffa8324cfb1965588ee66abe898b73279aabb4662c4775d590cc19b1ea4aa8c9aabf4bc0017001688fd01f4783269d338037d501b53c13beb259e3f3f7698a1aa4246f0bb6697b03cfa5b9d644a1c6a7d8376949dfa41cb3c223028fcca90f911b8df3bbea0c577ba0c8b8f5ec1aad493b0ce129efd011b0424bdad3c6d54a783df6d100daefd21fdad630312cc6c44489c24c18bb278e9fe0e3b40e707cac03fc810e8c1369d7bb442d575bd67235fef35a2e672969b9dcd2bf42cb15aa4c7bd849ca2c4fad4a9cf9d3bc7cac342cb8c8d13596297415ae2076c9dc926df89f5188d6d1f5f54036b0fa9efc616aebeb948eadb91f16b71cea3a6b0c8beaa77469edfd10495a835e2f161a8a5a007b1af31b989d6f05328ff6785866d57a1df5a4224ddcaa8cc2acb08f9197ce82ea50d668c03e7563bc98ab87f06ea8f2a62ed538176fed5d17febe141f599f6d0953d1fe081d5d6d28ebc00a9049b9c74ae97b54ad0f814d5c1c72f8f4445566bc4b6d15236c10182b435951f6b6a20eae7808aeb97a5c9058503a98e298c4546927f2f66d59308a26ebc1ef1ecefd0fec69ffa0e716a4cb5eac66c10dd3199a238bb7ec81d53c5356d9d0fc66544e2dca13752c2a200a16778dfd0148ab125e03696ad8f96a42d183effb6223e9e3fe052acab29a50ccdd0fc092a53689834254d762a5e254522a9e029bdb9fd776169a1cb68defe2bcf2b49d3da14b4c293359accc3ca962147a2b93f506e1e0fd33fbb7283a0795eefb6790a3648cd11ecc800253610f7772beed9d4b67487ff9ef0128ef0d2ef3a5d4f18d359e73c1e02f57e99741818b259a8bb8c79bbceb2256bc9bd310d267fa38c3ee224262ac55063ec1eaa6a6505a63c8c1125e6ed3f3abac11ad3761f2fbf4cb1d1a1a365787ca1ba6057e2b738c5db74c7bc8b5151428250f6e786f54fb0924f90444984bd4c6f786dd4b93aaa3233dd0918a96ef99dd8c322c1cfe17b37b389a5dd8e5f766334a6b5542920c5148f206ae2aaa8f2f82ac86d70a640daf7bac75f9290daf303a0bc7c89fd3f056ff7face17d4eed0f9f5e3986090d6c011de42b599b5c6cac360a898bf675fc9bdfa25d46edd15c5f8340209e2fc3cbe412846bc435f2203395f5d9556a3eff718df376959ec0ba2934ce8f98d88eb13951e6c358029984348be5cacf41735c72f3fb35d02c7bb36b99792f00cf1b8cf8ae1aaa5fb66a9856373f32ada2ad482fba203cce37babcc4d30196e032f9a7aba2d8c10949bfa8b3dd88b7df8ff4c53251da2ceede50da6cdb92d2461494fe77286d42fa11c90f573ef971d25f8c549d2101e8cce23c3b5b9595db9282e57090142cfb83a46089d315ff58c10215b012f5caf63024061a5c8f9a804b075b617de02890238e636eca69102f815d6eded14520cd8d6b48dae8de27d4465b221a2a8537cb7438b8f689abee69a99b56be327a2594d1c1bf4619bd9f93876ac6af5c086e51ca70a6b356c885a76eac8eae2e4c4025b505b6db9751f8c6e052bb42ce57151d83a990169f504337f3d4d0d69ef66b02a5cc04ca35189bb6c50f70488f28b83176488f5f0f187b2ab5f1076aa4e3572663931a757465a5b386293bfe576eb8b23ed760daedf01d23accb4940e2ae2b4048a880cb2db471b183859808f6b879d0f9de8fc3ebf407b4861a472858146f0e61ca7fd8ad6eb1cffa376bd21095eae486ef74ae659c056ef875da97ce52425a55eb3a295ee787d7389b25478638681c4014d892bfe45b6efb55195bb5fe8dd82ad7a8d66e8bc40a923a38075b852a6bcad8aa2163abfa41721ae66fde8c2a02f35a25eb34dca495e3c00357ad0b01f8042af8a1d3702e22d861d29b15026c0059c8d87e43b53232aefa250ca23d715ff76f3b0d9b8c3de53b0d4f38a0cabef13d7edfe3d7c06f6d66a83cdcfec1416d73f5cff91203d093c9da6e00d0afb2407fcbb48d5620a05fd812d0cf6d88c19b2e5789ce6fdc58819a68a73adbbe5042ea6c0b2e4b35701aaeabfa4eba04fe5b4ec3cdd27572094a58e2edffdab25c00f71782773c2682f776d548e09dbf790bde2d80773f0bef055a240e3c70d536c16ba370fd535174b960eea03d3056dbf7c19160e5a98956fb26a60eef8ab7ddab6f42fb2d6366c90133b8afe500eb2100c07a68d8eafba807046d18ac4e51317edb40f63263dd03f672bf2296a0a8b150d52ba4f3e15057d2de82ba04f5d6555383e890d1bcf66fb4f2114fe80bded07837c39864f39b75384fd6a7dec5aaca06e2df2be9dfd3e49f96c6ccbc268eca7ca0572b8d345fc53ed3bbf0b22bc1be8cebdb3267da783f671ad235c837fdadb6280c74d25acf2a0651b03ac5eae830286e28fa0754b698cc0cd42c1125870917aa70b6d1e387567928496c6e07732176a8aae1b28c8e827ee712178ef7c2909a8851c580a24b25b8021de9cecb5103b637ffe4c28ed634667d7ab8ba026f3323cd53178890e2a9d55537f63f6bb4f26569be0f9b829e92f1f80481ce7f87ae75cc2c2ea4d56541e742b1ce6cea26045d7e8ea051e9d252c05589084dfd7bd1647d530c72a20f424525e973cbb451fc615954177b8bfd06c5091bb2a09d23d3a71b22c7dea1fd15ee0c5b2a3b521cb307166e07a91d3bc6c54b21a8b4cdb737809f250e86ecb5e82036da6a92f33322a6ab54a313a33e0136274c06a7d43e76ec0013e92e71c867c10e575ca0c5653fc23b3d0157aca28dd33750d521acd47c0b5de00134b62c23236c55a59c8cfc25e702568251e09f6d1d6eb09217e5b2c6bc6e15b10d62dba15c4bebeaf4a0188f9d4a2d20b454622f976d4ae5a231ada36e0e9998e758961a4304af779d8678839f6e431ba06277078623f3e064ad60951ce9e299690bf5d0b94a69ba9cb689d9912a5bcc0cb7da618e180d76f2ee2438ac54a6f5499acbbc2ef46297d31b91494400e9ba7349c23ee404ede0de58a53e783e2f4afda30b6eca57faf48541e1f52030ed98f5e25bf3462f4ec6fbec3a35c5446b165fa405f9b2d99e0ad90609f182f2b16d8adc0f9c0130e38702eb4e6173af5280246626b77b66bdb8dd892b85357559445f09c36ec61bd85f6aa7b1bb7c2d5dba66c507699f4e8fd72e83fd4233e79df451af763da8cc3d6a1dde9cf900947befc07bc8e3b3c3ee04e233390dfbe7e61baacc1859de55ead0b988b952538389bef292b01a453f3bdd45e7870b3b824f9dca2c833e99b01d1e4eedc7dbd42b3eb231c1addf209fb28cac043e65161510756559a980413258b2003d75e1ce87d6356d0244267b57740f38c8e386950c70c7bdd66b07c27196a66d86978257cc09f82fc801fff5ff7b775cc62c0b91fcc28a35074d95adec4142abfcf04698e5aa2a79bad45456de0f6837c96e68a3eba66031df11fb6b1142f46908cf26b51149d6d924119579be27aa5bc615a5738ab43b7d4254f877494e4d073aaeac87ea9c5256a4b38aec5033287852d4427a4b9c5840135fd9c8a394684fde21c6dd66c5b8e5095fd76ba6cf498c9be58a715327403ad6d8c7296a595bdda7d25fd0c6d96808a7344ad5a4919c046387b901a6fb3c3fd8396a1d674957507fa0918cb13918d43417aef63857a4847bd75077af426ce49bb07e82542c99f42def505f06711601e1671a75aec097c7e964c64a3881699c0805d48c4b3179f2a6149053ab5e170db6d4afaac09ad7281fbf5d91e3efcbba147f5fd6df94a9aeb281f7542e83f7c3c07b8249bf7df9533a85b6a8954200198a9ba4d1b9e3e3b58d462b78ba560ff5e131c0791ad3036d6f0b7fb95e925c5063acdcb5dda3e841bd63a1ab2fdceae6a74cb299bdcab4df3b52a2af23be2c7d1c1e1d07388e6dbbeed107e797f1079ffe151f5c0548b0f9dd86b8c2c7f43767e85cf31094fa5950dcd7133d78adbb5992bafb9190c433632bd5a5c8583e8740e5c0065c5f1fad712450361afa894c0125f5a015356669faa2a0892b374072e8af7529575445ce1555795bab9b05c52a2da4521149a2c844beebe489547c930aa9c8cd3736a9b454539c076dd675123173bc570fcc08d42dfd9ab780ac87d9cd19b3971ddf9b99faa3bd5956242d88a8edf20e2d0866b7894e6841667b34601f2a697fd2167a83641e7b2d8a8d836955e8652a3065f69a78c034c987aa457fe707cce1d9b44c101060ccdc2f6bf1e314f3bbdf5d73c8eb0fec027a6bade7448cc00c38bfe117fc61efa5626244ac4ae17bd160bdb92a3c39aa155c2362c4c3f00db7e9811da8effe5ee180ee050d206abdb90a639601e4023dad397108661121b755575d0a8fff5ca03d853f7b6c0635142ed98ed05edd36d1efb4410faa48e1d76a230f67560167e6b865bc1b732c5c141437a49c6e76909bea04466e7045ab72f916a699f0db3313b7a793a7468a1cc989b14acbaca5961b0b77e02291c7d773907254d6a75ad5e24bf9926dbb031e103dccd318374ecb98ae58687ee37ac724ffb5d8f9af43132befbb804b2afb6efc1b24f4e0062e692d23c3f0cb3b53994173df35df08476982aa30d2f9aad7bade114a86b6a6d96f05e0b5658e7fdef80f7b36ace9c7467eb8ad897c6f89a98b151cbc9925e72679382355f63cb12a3266952846a524275ca11fb6fcd0a11f6ef270afb25949324a96644eaa20a3e8d6fb51f40383c02981a0adea30c1a7c156aa182e50d7b22a5c4b61c72807b778eb54d19302afe3cff62f83de6b73994654333a795cef4c75d502adaff553884a636d4a791f913b7fe890ce8a183d7abc764c708f8f49dd3ba4310a497345cad73dca3a11354e87f955430a40a20f6e1d53cefa78a0c77bc74463bb065e18154784f95df2abba56838a7e8c4df7462e36f5d4a69b08f5b776e3c8c1adda48506aa5bb390cd3eac4e453a6bf451cb0b4c1b1d8d50a7e0f3116e617d7d87c7585f2bfb5c207ee92725d90fecd2950f48a7785be8e8dca558acbf10e30a476bb2b6539d15ac2892e03695aeef692e39b85badccaf1c66d69dd065f5c492d1d06700e481d00462b75b0aeddae9797effc9cbdbd042d8eab7a0ba8ebf17c9c8c434a5e99eabbd85ea21675969a6addcd84462f3437c42c7dab160a47eb1d7a9577cac35460f4aa803abd3ef8aeaf41dffbc6c051b7b3450e32a4015b9901f9092d3982bf4e5fb5829e5cf056ab8b177c10477ed7c9928201bd24a1cddac26f7a00b9e9c937ba8dbed295127e1974718e5a77e2343f3d170ba6b4eb840f20ac53eafe201ebaf4907ffe96e9f197f98d0740c410f5da5b9f8a16f8abd0221febfe9b7d0c66b8aa453313dbb32c98927f366a3f4a5bc933bb4361a719cce4d0fc6b74c7ab0e1efb6629427c2fe5bb0fee843aa47221a1db81f48c465042e634142c136716a3521f9845af24d77b21fe1827f77bb0be3addb1da244a4a5f2d21d67eb1a84680efca4e43ee351d366affd7f1bf75626b003112420063479dc2900221a9d40fbacc458c99b6d3f600c3bb4bf08fbcd47702a4eb5dcdedf531b01381de5223da866a90248562b5804b3b6c526cab1a0bb062c55aa6b9d1eea6781bd7fe5f5394da7c291576b3286c9bb88012e6b6de437d3ef24644b669893e132c19dd2d2185b6281f6f409dc3160e865dd0539a88fa7c414ac79d54bc7045450302fabb2210ea00095f74ff5faa3eb1d28ecb4f3c92f56cec0ac1294a6202d8260220e86f230a16ea7378d9456815588589e3270bc2cb38c37f4f73bb1b54ff59adeeff2375541ed0a6542e107fbaff5f9551591397b223a7c77d79485723ee8769e32826849a39ae064fa566eb088b5050a02b35ac03e1ca19afe1e26c4a74a885f012788e363d6fd100e5da65b1ae6612f47770ef6ad513a55ee83755d03a60f2da909eb636f8b709e2bfc66c0a145da1477cf0805e4b3e3923d23c96102ba011622e51b592c20a9f52ac8d1f1121802c753a435d745c66c5f113f18bb9fe55bacc4a1357e3a8f66c94c68f8f097e7c0c4b26364728c25a9203903b282d7574936459a847583e048dbd1b1fab63b77d429a60baa36a9f20d49133ce33b05f3a636535c84ee636990c685c17c8ceb29357d4849c7e6af919f675dbb8a40868fedf25968add6bc06b34af8a6d0827eda3397585151b2a55b53815f53fca14b85b26757a1529a20bfe5e6ca6579edfc015cf2850162e910d9bd3b9e4369eb530d0d086ba526caf761e4f376e3fa2545aba94a8f74a8344e64615b0fd56b5adabb7b7b2a416cd6e49a3000d2a72d7c13a2b78a10ba40cefa6885f89d238cfa8ea5589cae96e3bf87b4dbe0115226ae55e862072129910446282427480f00b3898f8f48606a1a84cec0a84515b698f5e01a07aab7688163791d6ce6195ac957aaa5fa1e361522d28de9a71b235b7fcf315753dc342111d23a18305c221f1239d95b0504ea8562abdb777bb85ec2b55782850d8d56e80de44731bf7385dbc66c037ed3a7e184ed12f6a8a4da6286c6e2989ce26d1856cd51d996cf8381086b3a332243714856b30b6eada4e976a9f6b84f2b05cce20f515205bf12f48b5f01aa7ab6876e315eb9ce8694cdbe96517050377df13ddc64c33699070ca799411525979608dad43341c8bf24cedd525d4972d38181a530890c29448686e61ca86e60eeff7c1c1f0459fe42b0f042ebacacd3dde5df27f2e003fd23dba250fc9b951f925486f4be090945d8a59e3fee04048abbd3692bbda591bf1d97fdf8aee18316f667364154dd667d5062eba4aa64faa22101ae81d6276fd4bbcab0bdbf867efaa68ed069859b2352cf6b4d9a56135877cd605d5b693ab03723da6fa5c513607b94652181a4417f9963a1aaa9d9b020b08ec0f0c0791840afd45791f25020cfadaa33a015f6c296b6cb1ad315f63e10ab6941499f1c0801e5652c1aa03b96f15f08c4a18badf10d97baae8f7e7521d2ee4ece9d72ed3a884c24c81641dfcd508d38d3ad7a042a3b039fad5ca346af4e1711de744bf4ad2e7809bed81dc78858a3db86ab324d16da85af37ebccc48b5b7e85f56e980758051ca816c3d2e308d3b2aaa86e773cc9485c74135c35c4f4baa70a16e132e0b55976ed151964a3d70819a15108011d41e117b1692360fcc206652188e7b8c79f1e46d08150cae7dd5a738aa9c7c6bb351b17aa5ad540324191deb746dea9296735b97b49c51fddd5a4e42aa71a0988a196c4087e149d1f19994660eca2587d4431f939a6c9ee0f4b0071aba169a3eb364b36048d77a076b7872d52d4d399a8d7e4a7119aef20b8254484ef6f1abb494954b5c29a56dd97ba84cd85125e04515e1dfaa626136e0ae5a56923f5824c0082b03bc94d80f2f66e022246c5d135f760ea8412a1cae4997b747d86cee357cd0a2071deb069561ed57d02956252dfa63c332723c14375abd822ae59a8bbe9808ac755ae32835a7f52ddeef05ca638148a74662930f0609b0ebf519b92d7d27b760b93dd6a549c78772d80157dd9596f5517c64bd1b8bfce83b1d32846cb7893f8a30848490b4c606277447d3fd0ae96ca7a2e2dd9a9ee0b6dc22a6e7b26c5048a2df2ce42a9a52741ce33451a7ba565d6963f286e09b8d64263382b6d07dd5b64627eea7658dc00a01461903dedcf223720186c725b19a18801aea6206a5e3a7fb9aa80da9b2deeb569ac95edd25bff4400de117dd7dbb2167e122fd74ab205537275227201355979fe20332a8ae2227a6e2f2a7f257952bd789ccae258820a08f858d2139cb71042a9e16169212d40f24e54c7d960064928997b110d3dab41b3d14e6c70937a17131dc88f77a47dfd83728b3cbce3185a71f63cd852125084046621da8a87d73548e9048f349c9f36623f8707536820fdba40c087c32443748333b9f6303b85c85d948644061ccdda015ae5d48fc86c0bf1430e94245cb05ea2d3a3877248a7c4893930e18ba2b0c6fd473bdbd82fbd708b8106024a96e1bb2691cbad2e8ce1cf7d6a5bf9442721b5ea5f77600fe8f9c766a3e89d8b05d9e5afa845b6b83585ee91e288352bc8a2a2da006c99c0ce6523aa1823c2912c4110c0733117ef3c8d84c6d2c52992d84fddfd9528c17b1607126872aba40048561f196e9911adce5649ba99628614f332fdb0c0d01b19ef10796cdd484e33d0cc8575df8acb74ac3d36155e181383f32d8ee9d6b682c823dd35467497b1dd1d0e1ca847c3170382d02a21984af22ab30090e57198c31d79cda00b4c45515659ba5daa90f33e477c0b49686b1c80c6291013ccd9c9dd5202512a4e5ca921c40a407c24b0e264e2a69b6cf09097b5abba2c86cded73b6a073da8da981b2a24cf358ee5cdc21652f18c36b4a7a17c140dcb4c38e326257569c143c18a01cea2ec6d94044b4b180fc44fd338f707960044d4fb105493fc3664d58b2819018dc13f31d7adc230e6adb29c4d4c4489eb41d0d7d8bc8ceacf56f9e6d47e5baa600237b022d213af2d919891b23135214321281fafc073403fca8d88a3e9d4670b6da3db0c7bc561452764dd6356cf55058de028228fbfaa8a807a14096b6ab6c628ba37686c564310af11305757641246f6cca5c7ce0a5d5741bfeda9bb5ae2f9fbec9691fe2c3ee5c5346c7ce1d53502bb9dadf5091646e8c1618d10fd73b6872fc1fd9e1a663d33a50c4fbf67854bbcd770a47dc8d80160d7e7fb70037580edc09467e7d1346e9e703716a3d4d7f6509d8bd5b5562d4be44b5d22f2961a5379be530bd5adf59073c2cb656e8efa56d4e3be1c0fff01be841574dd5aaa859a9abebb26634f515d0a360eebb2bb6e96935c36105ffa3baa549a61e190d3dce905e4e1f6eaa23e487f1070bb2b7fd1a94beebdd90f5a2b84e5b9d505cdd42570d88f47fc35ad3eae245acf71baa42638378d95aa182feb8614f012a2b27359c30825974eae301fc1b5f56bc3dc8434c8f868ac71b88e5da1fa21a528bc8e3d48fb373b3575a3f29d93bcc5885fe91e2ba55bbfe134e5d01592af92c3af7c854845798391502edd8894eb14a77ae03af592fa5e3a4f0d79536809c63dca545325916547a46e7b30603bc547f9c2da2abf3960402bcbadd0525756539ea001ed7fb818216365ef51ede1936b167fc1d9e9a5de15d0d4b3af4437febd2a5f576623399ad826f96f20d50b6d5cb67818b9fd6f02726609c8198fa8751a75117996f75c973189d64fbd6f43725274f315864a89755da47097866605b47974ac11c05d011168612b25e99dcf4d81ac38976d91d82ad65e9d8fe43a24822584805212561af8b7ac163ec517d612552e1fb9e8056b69d2daa9793d6efec4d14c9cf65a73bb459375fbc51e336ff699d9780b79369d194627179fd8356e0593d4dc287ae0d9704e58fce61b3405350012fe0d925418b16a647139e4df1bb066214ddbea34085ead9f99c763dd934abdad2d5404b9146080a565984f8e04902da97f50fd3440eee7d2d70bea1b1f47251788ce82aa106e0216a1311f61421d2a725fa1bf5bfa40a3ad2221dcb6292c84bfbf65a4bb15f3592e467182283277fbd2e7f092cf73a99aa4e045581535a4e1b33e75925106dc7d48a883536aa4168649d4789b2a25702396034b5b3b1427751b2bb55c3d790dd3b089315ed25ffe7bc234e6217bde264342a7d4037d86302ce0f9a1d6b6425df7f4f770b842e3d8fe2af9985bc32032cc24abb1834b11a57cf2259b0ec247d6d1a991d50fd07f6d66a6de72f6ad27742a8d25893f752e1a1bacb33072bc5fabd7c5baca062c22df70e02f972ade555bd5891f024e7bb2b6639b98f6bd82075459496e2761789da83e77d56b1112afb1b07a4d4488ff0a5c24a0405baa24c9d40a942524a3b5812c210e64b0dddcf2ef6c6ff545bd27509781cb5951fd248e5688eba5e234ce6224daea2cd899d2d87839ec71e208b056ad31bf37076d452de31ebda4e9728cdf007525bdb71728e5230070f1f696c97e240ea9a95b566285182f85b71abf1b2bd5c69fb70e45671597d79a3d2ea14a89d468b0befee88d7b8effacbe141f99d7654543db7459818fd85d77853269a93232400a1d93d05191d262e1216c399c6bd5ec4b16d9a774522b28f15e25971d945fc8c23c53937f3f32701bea1de57d201d8c3760bad14d144f515b563ab765a573fbfde9df41186a9c285bd8ae5fc77eb01ad348d743a3ef85c3dca11d4b682644d9c1a7267b24609e5a6aa52438fefe96f5165a99bca4cb6d912f947fa542a3b56f701ea093455d70b54d8ebfe0f520bce9da941912dc29e861530cd912a3b529320379b1296c56895ece3ad47adec96d0da858670b7abb5ac765f9186b2d50b326f28c8a39ba7bc8e13cd8b95272cb9aafe6a469130111ad05d6d312432d3b72aab8cd12e1ab2c7bea6dc8b44d1be4a062977508a156b6585b714f7d7db1820e8afb9b1d6687a5ee61874ef432d59aa6692d4097de631b7abeed0ca528e25d277b6ef1b8b36a17adc9858d41687b109fdd13b838e05d0b1b3af12d98e6538fbf038102e213fbce50a6a349cc65767d413227f32797d98f97994e5fbd685242053ad7949e6b5dbf4640dab4d371410b901b7a834a73f023687096a82aecd88694ac8f81da2f291430b7399a1b70ac7b7d7a2e7b55e0bccc84c285496b8ae979443082dc26e92da33f00f2d7f4ae25f65340e66e891a597195d3e57456446197239cc3122dc2eb2572c762b4f83cccd4474416e985599c326350faf1d66d3797a88648e539646c5690f3cc04b6a4afcd18d3c215e651cc248f5f1faec5b20c2427bb25c7c45db6a380289b2c8acb0ee79cc6fc5c862293716b2fe5fbdd020ba155d426f5ac12b33305f1da76fb399dca7b4812bcd0aa994e14dc848ecc87986b1a6475df248e5547efc116624fd258a237587efad101547de4cda280539de400ac829c933ab29105c9d6665a98c5a6da6df510176ca0953e026c8a247b3f2edeb2013ba0a7a6e323dd7789eb5ffa104ecc6cfa6d81256d2c725aa8620808a41e17c7ec969589f5d9d0dffdb8d8d7bccb55b7b0378b1a63557507b45b9b5f32793b7b83a6f343b45e853ad78c4560924a36c32bc8f8e440d028dea688e1a0d2f821d01716282054ecf46772138de2663c9eb8e81a6bd34674e06f72afa52382127f36c9797cb6500e42506d79fa06882a57341863ed90f4bbfc02b907d07a7a5d0bb4d99adf6d6d4d11a36bb0eac35b184d872cc624932d10bbf8596c928bddf7828895e0793882609ea7ac4d9c70cd0e582cefda55b7b43e8e254f266caa52fe40574db7a97574c9e6b72ee849c1e3529be2fe636ea9629377481bb2c1f8da8c18cb056539705be83ae52fd231b74fb0af2b4a7b2a7222d8d43ac8b49ea45a5f92328d6f2c9a7504b29ed1e13998c3bce6a014397346090500a710dea880ab8129826841b90b31cb27630ee56e75b0d00b5543ae2c497a5d92d6c277fa80201caf0ff34257a7929d1672dd15f29b3bf5586edbd6af3168ca2628411aa4c7836ced914c73e2c742ea4630d1d9c2c951eca5467f64fd789304746455fa4fa4d1ffe354624c916ea2b1a6e8d43506871e88757e5fea5c8f52e766f35e143cd8e8aaba5961728984b498f319f93f782286c960aca93e252d02171d0fea1ec531a6b2d22e2e974d84b4c0c602894d674499634cc61e0fad44a1eea9e55682cf9e202e56abb53044660509403538d65ba6f5d72dd06fafd44659aa6bb3c0f309cb37a96f169c113096e0a5beefa6baccf12c566013eabb3d87ca568bc3ca8f4e1550462290c60e04a5cd2592a4dab55408c56e9947b03900f961cc8c18abc6e021c72749eae63dddd903fde5bfe554c64be93a19b19f93b8642e3d6d52eb0a8d52a651c8239d9e56bd3ea6e5010de1c24c9ca5352921849678c001ee0e5511f5d863bd08e92f56d7a6568d8599d7ae47ed7a4c76aa7ba371db3113f10f7d1f4f376e1e35aebc3d723fbdb437e6d1a4d6fa1bad0d3688d415dd6071c65582c84444995788bfbd4ba19ada2d6031ab45de53613a811ad62d3a7e8e2c295db29af032844b56902e1938be56b4799b22250bafc9c53e40c10d6da73611d503c6f1bc4ba17ad2cc689baa55d54ec6bdb53b2933aec634b75bb7bab0dc9a85e81ecbcfd4a1c0699f965d588215862db55a63f013835f1e0d3e3d1e7c698f387fd2bbf93d75161c233da5ce02866fab0d17553a420189b7ef00bedb4b3593e76d6e8ada61dabc8b3944522b584a2b78f28f5650ebae3a03545f984ceb93a65063dacdae826aec7cc0282f8d54de8075d5c0f2123e12f6430630d0aea7b1ba8f256a836adaeed73c50714f54c7d51c7cdd6e52786fc74357e6f91e1161d32674de399c4801bed9a4cd7d4b6784e4b1a4a5cc7d8e33c2bc8a06ba6e13690d1db2c4d85bac17e467665c27cd72a36cc06f22f832ae7d60832322dc5e8ea402c0fc54130f13f22c8a33dc994c674e789954f0abce81a77b6a584998835117be82c2b7bdb4d138f8cdd516156f895536518d54db5d604e97ddc499b3d64b154cc9eb029a589a63581aa2b58d88bb585ee88eb2d5c8238adac365f59937417f2c4a4e47b5c970f7ca3674ef81dcd0cfe69713a9e58472ade2f49107d8182832920227d6c40841af5b6caa4ceb2f683bba6071bdb13353b753c632a1d8b2c047c798e56acc902a550024faf7d9b35ed992a54768b550e4a5646535378f7b4cf85b0fb10b85e1457686cda5709b1aa642c79891793987f38c5540825f8893f189842381230b2e7afcad9825bd4c4d41664939cafb04acf14b6af97577246b0a291e6c4b7f25d7aaf936d71ebb25e235dfe0dfd9c6945886053db5524f6d7abadc98c848982055c46cc42b5a6b287a730f7fb53e7afc482d6e2ad4a25c41ef72f1bb5ab902bb4c25cdadb56d79a93b829dad3072ddc62b9eb0e213fb8380e056b601dc0a8b70437e7c2c4e3d2496e3a4d9b11cd5efba8fa8b268cdf9ea4ca1b2009c57251c5815a19c5ae1f7f1de197112f37c7046c55e37fa34474e8a4ca96489832856a4cc4d61ef806c282205159f5421fb06428ccb386330a1f8f56e3a606b90046cf50ba4747084eda2a7859faeb4a2d69ddfa3caab41af380ded31632499d27d9b98de26a6674307fd95944fc3a516c89e2d48c66e73c4af95c79e0ad12ccf8ded20b547e230c5fd1257b65007965bfb2e4a8060735b2f3eb2eb405dd9b17039612673d370b35fca38c715462649b9042976b44949e29efa814fe1098f719b29d36fde6a535e9ac54766d86a06701d7b94d080accaad68b22e43e7a95919014bacbe2deeb6b8d642b5e791fecb4fe9bf345622af2d3e10941cdc92d7f7dce4136866ed879cb897b49072e2909c8f91285a821a09dea878692b92ac9afbcd356a85e0c6df7244eca959116cc0b486da2e9bb1d0a4b1a0211940d7cd6b5164886398f89f812af5b03422793a20c2d894ca69d820adac98305dcc7fd92595145f009122abcb892a3d036ab57b82a0fd27dda788c3e2acafb97fe85e4972f6decd4ca922d0cc942a02914bcb3b6c6e4779d7b7335356d5b9a0111c900e21beb78fc9bdcda6d49a7550446f55d04da203eeaefa5c15ca403ed5596c0c38d05ccb33610588d3c056e8557e87eacc1455ff34b0aeebb275674efa2f6148697745f6844437e62db513596ce52f6a63f14569ac0766dce330215c98d265466bb72ee0ad3cc021d55557dd0b3f23efe74259723d8d7f2a7b8e87c86081f4c8ba859b094283b3c83ad075120fc3ac0370b6d23da6e9602c841a249d6ed3b94c33ebde085865dbba4a71f74bd038686ced76e1000f76faf99e9ed7e8b91867debe8ed3cf9887794a1ab492fc4794b266b1e02287766ba556780be9698e7c28a74cfba3d684a0e227794f72e4d77977d74ce6d1af919cd1f6842859e9c88298d5cc66a8d1ed96948a703753535964ea1eb0c206c52b0b60c9f722e43b030ae4eb54e3ac535f2f66186a7bd4061f32e9fc11a4b5dce7718e62f1927f75ca74d6f246f1b92db950b05ef553f3080bba6c93a5eebcb9c5279d6dce97becd08113eaad676a56e6a5e8863744132a19eb5cef4895f564fecfdb32b153814895d2b899b91add722948b3043ecf253ea58ca782c7d52458929ef3d89d5a760526957383533f8b69dc49d69b17eeb60382bc8692f4429771275db057aac10e1d4234669db6a37ae16ca66b4b125dbc4ec3019220bd961d6c0dace7b7c60aba70725e1a4a3b5ae2e03d2e11cfb8fcc569ceb6aaa703e064ba8d1622e51a3e55ca246f3f9bba9d10aa8917b22ffe5b6732d124ef4e07b3a7d8a405467b6d0e9cf6522a6491140f8ef40aadb761b4b39f32ab2ac56d504bb8f68b546668502123cb43213a386ae43a15a8974c1d06b911a9214e96aa073ad00f147f796a89fa114334a4466c306ce34575dd2773928c5814c228b4da18a19188edc89dc129aa782a7c40cbb97451c6cd6dc43ddd355b751b94ac3e5430297638e113bddedab9cc8c98a63e7459a29e740aa8b06fae82f49cd083ac42d6ec8236c9dd75013c1cfab929fba5b8b53d5b299eaba7226b136a2d18779e92844a3e24af7f69216043e37fd12f01a37301bfc0c294a7d2757ad0ae96e7c845ca2be3e91e706a5bc0436882a4ec8d6fa269253977418557f8448d7a5404b68bb5439b19cabec3bf4419134ba4754efe3764555e4ffe9712cc1035b67c5c1b61adb3629758c064e17a8028cf04eb429cd386ff3c80ce6faa3778eb66b1a714f13fcafcdc4b9b6f19875aeb5ee012668f51d283b33606d229aaddb629ff5589dd4cb6233437f94440dda5512e1abe631249356b3c736790bb0cbba105134e6eccca2c92e99bb13a5a44d200af3b514ffd7992427b6f5f15aeee82f2c85229dd778084ffe6a741a5ba321aa4ac89f6f532f520730c8a7d47acb1bd48702256b6cba6987584263a7367af2c77b664020af6fd47976a7c0df5fe0ca013344ba039a5c9dfe266c6fc71f1dcdf096f532fd8e6b10bb8fc5fc78138e6ad7715849c11f211f50f2473971243e2ab0ad994cbbdbed44d709d96a22ad7607d3e0a2674a177ec02a7d4238b3338911b72ea9862b952b496273fd9e9c117e35bf12110a1a6b527c2898f6dbb8ea6c5922718a071949ff9e9e590f94dbcdad9e4ae5b8f7476071e608d889e53e0d33dbb763158a16a91bb44606991521c6d3fae2f929c0a250256b85c2fe6285509309c4ae92a236865d424be81e5395d2701082ca7eae1692c56b0c7e1547793b3859e528298b140abea484f814f77ab40b3203ed211d30a3c2111df04a49f9a24317f74a5c86954f9a0ace288a9c8ce2cb7b81ab51ff2223ec01c7d73739cebae364033c9f6fa4f168bf4d9a3aaa3d02f29f5d7833fefc233a265f1edd8cdd2dfa20b6d5d8ff960578cbc8573fd9b049c132e46b870e0af46c398628435f736a490a55a89497610aa152de8cd43a9bbdc474d64ba8f6c6f4190701b490b6b40ecac667168f740bac8116a9dbe5952885aa839d47679b3e7884f7f58e6036b73d6d777379a811870948627e83bab1d94dc2ead6eb5abcadac5ac22c42286cae9185de57d0764dee102239ca22f37a5f27d98d43b82dbd34986e96eb9097612421469a28ffe42dbb34f92f23e77dbdd42b7aaa5651991f9cf4bc0e38e7bc05ceb92773ce912571ce22f6b3444019f412fa554061e854ec3e3507c4fc7c3a827fd5d4125abc5ea28634a2cff2cf4fa81899ce3ab59be466cfea37496644961c0745cc94af208f2806f5532af03ae5bcf147e4806082744254982ee8fc70e49e6ac5be0c9d2e2ca4d1c87361d518b9f854426401cb211e47a9d2e3c73f60879034fe96993180d72811ddf2569233346695a83e02bdaeef214d28f38965d8a22a65f708aea8b99ea6d5c275725d025a3a4719e018e6a3d29affee31edd60dde60374ee4c66fd6a1d6e81f3fd3d7696300b335c034f7153aef7a6a637a14702d4b5ecbd2755c344d182c49ba71d2321afa99bc6757bac892e39edc96deaf5b0c29856dd401d6f153c62510fd13b491f098cd9f419ff5598d56d9b4ccc41adfb2cc9cd1d8fb476b5ba6e44d69bb929b63441734a4bff36bd9a719be9759cc1c7c85b4d3eecc0fcc18fcc4de09f0d96c7b080362e08265264a0c579e34653e5ae01f0bb58964712383710f5878929fa9c0253e8b55903a2a242129735b5421276f7a4bc7f5f744a2432f91a44d4898a071920c695ff722aed02407c15eec2c085a71183d3dc498f57cd5b9a334f6e0ea89f3315105d54c2989ab9e89b463b1480142b5730d8080d62a0a0d9a631e146fcb79adfd908e9c105067d79552ae10916844f8b57ad4057d26feaad1d36ad40593aa1b2053b1a5a47abb8e916c91130c62bf0f72d3a242240dba942b1b357c088f36a2ec32356a651a156c0a55a06fbe60fd2862025a3e45a986e8db1816e41989b44234a44dd9bf9c02e6360a6827f8b2e04a342ae8b6641154e22e08dfae06d067d764eb3266a7dd11fd9bc7628ccebc61fa96d9106aa9334a28c271d94c65fab8611d1d1f44d2ae8007b89f2f12dc17aa6ca326380f47aeab24ded0da50e54896508a288a7fd7d04f84fca0f1ed2d07ded11182246e0a6743514c314efc24ec5a8c051441bbf20839c90f39561a43bdb1eb188b6296a7718c7b4348ff301f67344dab19a58b0486a379e5aa82db0856f9368901f3a0c5901d0eb9c6fa5379b656a48e70c9c3cff1fa70856a946e4ef69d113cafd8d91c979a93ad35367387c9887377182729a67d2ddf15f365d46706b5e6e1df60cfc82625a8dda2b0504f7c51975a3a714287ecaa3bb43f586afc7aad32d68c87146b11c4748327d14cdad755c62cad4e419b366ed332790ff1d9eb0edde38a713a2fc360771b82a9e98a4510b4d443c0ab9549df23d2e965e6040f5babb426a00ed9fc0c1ca1541ae48e8020adb1c581347103483667e434626c131c7fe1895131af4d13cdc8f3dd302dc3af07e0560575fd2b908df0135b93d1a7155e1e2d884fa3248a329a42b2ac4846a39c941242be918d5585150aeb1cbf3d31ad2f3e560e28dd88bd82d44f33adee6bf2e0b74cdb9dccf4b1a8f772934c206faeb15d133381cc6698866441dee97302f6cc5da83a5a71cafa37de7c90bacef956a36a302aee39f5235bbd689d361bcd379452274409249b096249e766b749d06c833267e0bfc595a6cd1d1e85cc37823c77a8de5c8d3141fe84f3e21e90bb26941067b7f2a9204a1b75e70e654e15a845840a609803e9cec5c330ec2304906820ee4b14f6a5f7bdf8f7da4caa2c905b123dca73a7e52393ce40c02d0883e2220aa51e8a0f75a2b26207b6020a91fb5849ea699254b2befd84b01ae4775e2f81d3205b5351d62cbeb65dfc9d2e48b924974377877f9d9d567c123c8aeb77f3f14b9c3440903264a48dcc0df1e086cc03dc1bafa9a58ccaedd5086b5fd6d30ea0b3801c375b854cbe9700732774e603e858e92455e158e1f55d08ade96a8919c59ddde423b0fe5bd88d6fdb7c863986ea941505f58a99e19ad04367f3d5287165ab223d58aba5b221239947c6267642e2d1b977a36f5e73b18bdd009cd7b7b79035ff29ce6a9194bf3c1aacd37d63300e518786862112d7c501ebdd14dc3447b10f529ea1e0734a7bb45f8d1225137ce3b0cf6532569428ad453c48f380e93911f83af4b44d4f3b4d62d4c8217ad618c0f39600da0c88b744a15a22a6382d8d8538cc614e71d975cc1b645185d61509452b4c29d1210fd9436694358eb2a1515633031ebbe4c369d3304b1a863c53aa64585b84c9563d731cb3c2a41159a0895107f02da4d65ad53125ffbe8659d32b871ea09638fb80cecaf89dbdba0947a71df3d664cea41a1e34b735fddd1c382deb77541a8c75281b0192b82a5cf690ce3ef025f1d26950feed0a652ca9ac71a64e03b9485853a25b648b25ba915b4bdc26bf4d8cf503db696c1b429c24b3539b465db72a2dc160fa43057494bf572afc73bb5bde627f6ba9e50aa7bada42c517875b3ecdfa2d704e47069615ddec31b00d77185d995ab9f0625bb575308a71003c7d785a8cf28f8b6bef4b28a74533d4b413dada123f0fd96e28fcaae5bee558b722836be320e977b7e56b49a51b6dc8ad8a1f93b5d38534a9b14201f59573085ed29855be49bcde3ac4b96130f556126ce6b52b448133f4abd784f38bce42b0dc2dc67c1ecbb1eecee3fad163527559f824f24dc98b9a9c720f33b43a6f1b7a1a7c7803089cae5f09f010f2730ded72fbb92e1208d2a00b74a85a94d2966cce2d1488132a546833383f7908f148d63554ad3a25c9c0dda688e81d21ae7284651467d7e981626de48c18fb43a643854a0f7b36baba57d660df66d62ba1bc248f0d6538691d7ac5d9b5d6b9673bc710214ebab16e9a89c239584a0ae77029b96af8cb77bb6a2c51c6ece7bb6aac6d74ddf44b184857f030feb8b64f297257f561e2e159be239f3b8838a099a454d7487388db29b9c8f11dd2b92e6c4880a8dd3af337d28cca653ffbccd8a93408df8c58373e27557ec152f33d2ed07c030e97486a48995cc194882b4a16d992748dfcc4ebe8687020a7d47dd984e615b2c39728c37da181b5500e544b0a83907f071dba4716a51dedd27e891ca61ba0738a077f5913e8fc5cedccfad25e54e9972087e82fdec144aa1ea06bddd54aeb6ba98fe500e757519b4d822a0302b929df294d718ddeddcd9d8853eb3143948ba399a695a8eb986cf563d0a82e2575a4ef507ad6fbe476d9f7e8d6f114d75522229bde7e8b5413d900d4152dbf43fbdf2e23df406958976ae8cb90339bf76131813c13c69cc300abf58005ae42e41d4d96d579522bb0dfb28619962aea362ddc289fca171d76e92b84b74763edd61562b600bfc6024723c71be2d3fa3823feaebd47d9b15c46dcb9685ccb208f7a23ea2254da8525065a9987152a55ada58ab958b1e2c40ce344e4faa77351b3b53dc478500a4617f7af06096992f4c4966dcabeee1589feefa9d2e781fef2df7cc8d6a11ff38c3dd63c50206a05730a3690f1af577a1423e6a65210d457e4ba5b6ba2159c5203c7f68c0dd26d016ef27370fc6f92f708a66c575378215a9ab99dc05b428c9802f1590611ee9bc2b3f8960d622c974eeb32c7fc9f42af991a8f436fec0b3d38a42e7606c9b5ab43c2b93d4c296c5da1c70a8d9b4ecad078e3a3d945086c5eaad2d997fb402e17b51bbe13837075797a5a4e03d3d3b7f08373f5cd84d062111b178f7db1be4c2d229d4ec5b724f0a2cc22ed1b698e1a73108f362868bb5ebe014a2b54e0b2814f6365510c9bb8fbec0515f5dbdc3655a380c49544b4b716f87d9453168d071f3d855ee268035fcb4299203cc03121347aa4f8af2c6fe4ddb131b164e3518cd6c33ce41ec9eb34857a328527c6a63406bdf4522f11459574b45c108af4e9ceaf6c3290083e8586d8eb9921064c3f5cf2dec054b4af305c83f6a5b0d7d121678b55988010e9f1477221cf6b5f151f586fbc4b7f58dadb47a6b91a092aa14d45252bc0371a02a8d7b6495198800168acb50f9e5c10200463dbb215af4112cbd1100fd210f452060f2eae09b0496759d9c940ea505473294899a2f63b72c8de9312ca121402ab4b474b432445d459a9a9a52e5820990d5cda9217101230e5d1414f48b8f880c88752b55148d91c7440e302924cccdc4306b32348e5883ab6272e4d2939942bb3eecd0afaa3b6c8f35a200eb7da85bf96a7a1f001557c030be1a36c9b480f16e501868000bdf4aef98d3adc67ac1c9e25b2a3f00f6ffbae1a1296f5c37f59be146400c3368a51ad665ab1896cad163f4f098e82e989c890c80779124cd0fe2e35d3ac3d66af51f28e83762a7b476eb848759e6fa6115114d9e41dd69aca2b497ed2a04226ed4e3abea4decce7b4ea14a01550d99b5501a3bd6d2ac997561f6aac45bf134e5763c88be5986fd2d128969a9fdefa96b1e7ac11a63eeb0383b9404079bf4d67c0d893286e0e02d82494935abb55e2a83127c92ce998132e13991e61bf608d34dc1ff3d92eb5f63cd10e4e3a105fa797b4428ba287c879b6a925dec94baaa771cb845e67bf9622316b4ba41de5251eea06f7d7dd22b705969112c6f0be61186917d2d13d4e4401f43bcaf9244225961168fc34b393628a17c91da5089df9eb7114ce423dd429703f445ea313a0443eab51f543bf961410331ef9557a4e728119c01d693bed29b39ebca81f4e84fe88c857e94676996c869401b7158e8e5d3ad9b6db9cff58755ae9553c2dcfa2892ca8d6df24be823782493b4a8150f27e36d341a381ae0991305545a41a77aff2731db89d1bc040d5254a192e558838a5f2ddb85a7e8418c079994ce1ee1aaa5597348e7ca64ceb67cd1ff5c31558ad96d44120bd55247b67cedb52ae04645cec5ddaef15b9315df89c1a31a7aab37d29d182b10df52b44a8dd2945e9c34db8298aab61cce3f8b8cf8563b9638bd8be3ea4df2e34af52f36f469203ed869a76810f291aec8af44d940237fa743c058dad2c44254daa4d039956e31adde42d03c8831a36b0c0581db957de3d71a7afd7f4583ff478b0b518333cba525ebff450e348ad136d17cbdad35fa12d880fa54105be17e574f018f2303d64b6628741c6ea0e4ad49b7010b31c1027d4e926feadde51566fd0fd6a7dff2a71b75e8243c78dd4a886b517217c27bb80301a49a5c62bb2267a2952c3af47b99025202e45c8056f2a5eae2311d5dd673db621e0b2d623f273e184d5a60fc53c70ab8a97a21e919dc480ea6bc41f89a997c55b9481ca8364eab5b996c706aca9a26e569be46d282b9a4f5610bf8fd611fa2dd15e635b9605b355856af5524b0e6403a6ffe1ec35a995e5806e7d479e154233d4ec26a736c7d2840d553e61d03d35346082aa543759ac9e6f6c923c05ed2f3e6da4178179daf06d79169d208d6aca01aa37e45e024d9849447da18712e9db830991b4fe108f69b0beaf6ebd349bc9b1c544cc3a1267962cb74556c5268586d71ada4974d48ba199cb2327eba5790d2a105e9143e2ab92eba599381f050fc2dcacb1c0c6fa8fc02d36eba86901568223c0ca3d1fa97aafdb0bd2d03baa56f9fd8d30c1e5665434209c2f1326e83a92eed97324ddb3edbc5bf7bcc548ba1389a2b728322ff6294542b38331fd6efd3afb18d4c6cea5b05fe871d7e50e928e56d5044d8e172b60627dcd26bdd376a5091ffd24f3b2b31b0aa71a8db93bca47f95e5db618b20490a1ddae6752169a59fb1285c97929a5f86a06b12b2fe61c3398febdbc1e2648bbb21e263078484f94bfe3c48c1eaf767282df5a28d1e046994c96296d6b9b7418422a5955313f8b5422bcb488dd32581d8b9d3734b29a8a5e5e1fb43152af462529915ec55e35cd269f2c2a7d1ae67cac65a669a5c6ead53caf058d5936d55b279d09d63c74891c5667743b671a15c98646f47437e363dc22b33e4fc5a4af6a4904d37853bfcc7287dd557829398aab920dee53128ae437d51434c7e5a34c60145c0fc036aec5a13376bb5ce97c135dd5592605e8463654688beb7a3d54e738a3c31ce3a09654ca86b7834acc4e072bf1f933cae0b3a3f4aaf31a685e59593dd4308563b84874dce6e6708d647045ce6cb58e06b4aea1cd47a80009705ee5dd10248587dd3a5be8a8a516665dca11850b6fee29996b678d59ebb1d08abfccd917c64a58b1b7d6000e615cada7e2c2513079708f54f39baef5ca795573690fa4ad5b98f2d6a597bb3ba0f81e1e68ff16202a079a17a08d29585fa56ebfe0a21def068e7f41ef6b25949ab725ce1655d44461cedf5a74751f9840d94d5f1423ef419549b65a220228ade3ec29c0621c6a48e466140114d428ccf94e461fb310058e277f31cc1c46e9bd870172a829ee46935f8dde684378b26cf724255887327cce66e4b7c5e720d29071fc674ad854e0c3ed4207fdf23c486ed3894cc4fb00fd725d9a0cff8ec17a9fc4279a4e4f527e77e832346797a97c68e9c281085a36396c6f422d4137db74fae86a1dd0676fb0d8fe38517888f7ac24cd419e29dd3b9a69591501b08cedaa43d9b706ac3c5d6903596a034124ac6bb1f1e499e9b1ed24bbce5ba2fee30c11e5eb9a32fd7e71c82bac18f7336e179bee3b2816d15ea4348566b73860c6779bc6e6d821311cd54ac3044e2c33a65d8f4c8fe9aba0653bffaa58e5bb5f5b5efec42c1e29db2fdf7c61b215700e7330a53c02073987f59e309d288fc97f0f404b08e9d3fd96943e7db5c7a32818985136f5d2ef7089bbe7a297823779f3362c0b06782b56bc9bd387d167fab8759f338fe51e7d3496d7fce536fd72bd47d1a60993dca75fee31017ce3f24089064f41411ed1ba65da430a38c4a5285088d70174a6fd57cc1654557373262c97d8d8076eb26db8aa47dce3bc7425694c01ed95ae24b7277b7d2a98392ffb8ec19c19ef7dc56a2b42aa0b6435dc8599e25802f22a23bec753dd6542249e6d517dd2e9321d6dc68fde415621f9e482e8354c0c04b63747c1a5fb7a92a873a3571e006c39f94001f20ab5399e0ae864be2165c7fa0ac980bfccf739de4718dd52f2915e45d471dd00c3adc19a281356d0ac50cf0a1e53a675b4658b7c726a72b69288f2774d98ce2ca0a87108e89ca8cc87e28757cb9e7ef8f8218c2691f55c5a84a5ea45a752fe5e7d9e542e9ee76b7779b1083f143f84de3a789e869ae7465337faf0f1f387bfacc3a9124681f51cfde5d72fee17d77a55cefcc07b9e86e1c5d4dd5c0ccdaefe4d1ffeaefcf6db6fca5ffcc07b593f4796e7fee55cf9fb1757511cef656d4f2fa63bdf0ba250f94d09a6abb5154ccffe72517a5e84a5603a798e2e927e178ee55e2cc2bf9cfffac5fd8732b5c3e9cf8cf332dd4c6dcf77a66e140ff2a1f8a1f4d73f297ffd57feef4bf0c5d53c7f1f58b379a49c3d9f2b03eb39f042ef3552342ff0bd60028b51986d2bd028548269380d36d3970bdef9c67a9ebae1f44559bb2fd34089e65385f993e7f954a13745e5f769105a9eab542fcaca196ff0e503bdfbf2e1fc5765efad1567b2575c2f52d6e1940f1acdad50e147ad4c77cf533f522c5779f61cdfb626eef354d95ad11cbe44c35c284f3486f73d9a58ae32519e3d7faf78afbc95344b651229f328f23f964adbedf6620213bdf08259c9c60661e9c6d0f4e158ffa57a51e61df9ffefaf8cb1a2995d5d31c6cae8cefcdde8ea5dc51c2a6ca8fc958d1563fc57456563635c541e8dfb2bf3e15e796477776c786fe863c5bc533473d835ee0d733856cc4b850d9ff8a87d63d82d2aba717fa5df29faa7d19d3e86c6c6607463e8dda2620cb59b87ae31ecc5a3de1803e39ef181f820a2251fecadefdd1bf7377a51b934ee87fc1397e69dc29411bbbb37b4871b76a78c1eee46e6582ff27106fa9d76c586f74cbd31ee9ff8584373f88b31bcbc33863d7da00fef2fc4ae8ca753f9b4e54316bbfdea054ae84f9fad57eb59b127ee6c3d994d9599b79906aee5ce147f1a3856c8bb857cc489fba2d89663450072a10451e29c79ab7f29f82b7f2d715c50faab32b3bdef135bb99bbedad3e7a8a88c02cfb1c22934d84c02e5db74174ddd9731201e7e6d5fd72edc7325f5e2eca5a87c278c71d4c5fcbe983e4717e1341a055ee4457b7f6abe2afff33fd85c51be7df3f9f36fdf3e2a9fbff247ff502c378c38cc7baf0a0b82c95ef9f39f932fcb1f5394978bb8bff29bf2fd571ce07ffee7547b7e3a677c693ebf5ec97345e1a8f1fbc57c129a5b771478fe3488f667fef9b9f2f2d9ffcac7feec7ffd151bff03be020855518269b40edcccbaf1a31c7f412bc47bc99cbe51eb37762e1e81bf923a9ec553e6f8e2e2d973c328583f475ea0fca6bce0fab1d3cb852f369c4f1f50bcbbb66de56fe24c9e83e9249a9e7d3f573e2a67dfbea5db27bf8a8a3bddc2a761457c74008e49185a3357868a6ff44c4c3269425fa4dff2f9c47da2e3430a8b8aa5fca6548a0a1f6312ccd69c368417f6d49d45f35f154bf92fc5fd55b10a05e92043b9e967eb2bede1f1e98752273c7f9a65bcf20c385c3c4f6cfb2c2c2a1c2c22048b30010b028cf80062d8887ecd03185cf6c5c4f7edfd193fcc6232ed23d0f97bbc979330de3218f218b6826918f1594e697d7cc191f29bf277318353dbf0735bc06fe5f4c2725fa63bf3f5cc3f57fe4b291f6f0bed051f3a54fe4410f8e73f2b7c6cef55c0c56c1a491f19ef9def9e1d02c47ef92056f6e5c37932730e16e5a2e227a0953bc459788e50e2273023010b9f95b484cfd6d764159fadafb410fe2fb196d499fe236ff75fa6cf9c7f989ed13fbc202c2ad124984da3a2b29cee8bcacb347c968ee63907b48b02a2f8ad7e56fe4ba9297fa341948f30807c9df177fe4674a7e17360f991179c499338a751e2ef20e6e0fb4107433481cec083a1bf7c904e8e1a5c88f5e69c169f7cb6d90fb6e557e01953c79c74a0cd517e512afc54fffb37a5fcab62fdf24bea3c5f525de048f93ccec42ebe9c057cf5cfca7fd3cfd424e05dead9f9394757c11100e0007ffeb312f0ffd0debf4c5f2d771a938fccd0451826176afc493071cee0bf0607c762b2065a1d7d36a16ba9e314e450744a7f3a19f73c4645b9d370a6d1e465124dcec43ffabcbbf8f1fbc45e0ba4f2bf0115314e1ea8e0eab22ddf9ac7a9354cb6132b9a06805259302b2adfe2db55544645653675a7391bcb69dcd9889ff5d948f94db042e7e767c98e07d3d0b337d3a2124cf91a137a255abcaeed57cbb6a72f671b69ab8058077b99d884d1d43f8b2772e14e771175394f8889f23c899ee7cad93445a7f0db67d3f39354279e0e36fdd9d97cfef2219a07def6cb87afff8639c1b78269b8b62369087c70f1e2b953e56f0aed3335bba0d97f84231a1d9f47662a397d93699d5f44f3a97b161f5431dea4f35f3353869926dba2fc96408e44b43310c6e1e7f3d7f3733c52dab97f9c84d578c464acefdecb5ea20e9cada5e5d993ef53fba35226a41d4edde8a3b4b153373acbf0b3d1e7f257e5cf4ae55c811355a2cf95845911842c79f60f1a390af621e7c6e9a7e787316f1e138cd7f85ffbf85f51fcafd9afd2cd9a254be0bbf251d94c83ef67e5736a1d831bbda8242f7080f84df51ce720f00a12f9236cc231cfd9ec33bebde0b880eff05799514d364aecc2dc0ae9ac8a30fb14db0d5f77b37d92d13629508697003d9fdda2b2f91a4396cc10a52f84e7a768d8ab38300ef1f77b7faa0781179c7df9d08ba1d10a95891d4c272f7b65ba9b3eaf23cb9d5d7cf9701e73bbdbb9654f95b36fa7af3d7c09d96b10b1ce3893e8f9083355e56fcafe7372045f958ff40e9f0b140108137aa65a03771821b7b83f2f729eeaa3b2875b01affe045d4483221fbac2af0dc700e769be3999ec1e99bee85cf138e3f7399e6b51a19b2e33fb8a126e2d4056d02e852514e579124e95f2c7a34795d42345c13df935fdf07b309d2c539fa2def54cef6f1770690b85cc00b4c0bfa79ff21b6fafa71f71378ad9977c6f3e2aaf133b9ca65ffd236f2a8d774e658f872e2106fc1f6e7139fbf8d97323cb5d4ff33ed9fa9833c4b70bcf0f2f7ccf3f3bcff4e173e2a8e6c4cb135f7a99be4ed67694f914070f84291cb3a8207c11c7f8df4a1900f27324f19008a4081d80449a1c98939fd5f3f3e313e2f8b8fc6bf6a934d7d4c164d7c4a7997c00d8c7b33f45f4d9ca57e5bf1544d97fa6dfffa5449f6b5f73e781c779e2f01210fd89e934f977c5b8ff0584e1cd0f4779dfcdbd2f3f319d283b89ea8f2651fd7a043a8a80ba7538e7b835a7c1fb270433f8574071ee67e08e709a8fa83061297ec874e1056d1695a97c0afb147cfe4379b5dc896da7f03ec7f951ba5986f549e0e2cf4a43d02219ceb2f82bc15b402010783f2a1bcf7a89f91581c0a2603dcd10c45cde089f8ca34970e61415321dd00ea435184e8a78fe899ae6e9f2e815ea281c4947913b03585578e649ec98c3f7ee87dc8777c47cc47b60c51bcfe7eac4b4cec1f3f7ce65ce29c535c51343d632cde979fcb320127b84e1ce154ff98d4e20cbf349c0204e0ea76d150a32ddc103fb9317c34956019abb6d9c2b39f38a8afb2fd8b778a7fe946c95f7ab18956f66bc7189ce24fed78473ed9f9315095a223142c4269db93021dc2e8e8fdd5f7ee1548398153e8e25787a6252fe9e7c05114d9096367093e2bbcb39b8b8d334618915055e7dc43fa98b91bdbc29fe8d6f0aa81efe14a0dcc46909df662bc5879d8b0db2e2791de304d083897b3ebd8099a45691d25c4e4e6a31421fce3e7b49c53110f083422e47992b29e6a0c724b878f6dce749744630256b758568f5ce99815220e6d325a65f36365033e56f0ae0e18b0dbf40456826c4cf64a4935f0af7ee73ef58ae93b5105915040038813ef43722f13e5f0ec86bcb4502d78b14d441bd9030801765f653d26b82ace27fade00465dc648146b988b2d1970ffc6e7cf9701eff26f920792040f2bca8589ff3e6ff5e01ada8583f90cff876ce3ebb5fcf15ebb39b1e36475203ad026a7b24ddc2a498b20e29ca0a2f3988744585bffe7aaefcb75201ede0345c3bd333fe4ad635bc29f7c97d722f386a653ebb5fcf36e7c9ddcd6105c26914d9d3b3d5e7f2d7cfb5af45258381f2e4cd041311d2cabf06b42d17b152051b5f6cd26a944421f6313599ead7a2129ce7ae9e7a663453b427029a8a8a84508ff70f744e270620f07b73049aeaab7c0220139f6dce8bcaea229c5bafd119fc5390541a1f5657fe5a54e01f95afe76fb21100e5dda93d9d014690d909aba8f83f7fa98a12404f257b2060ef588bf1c6bdfb599dc8c92b57545e93adc3bbe6f13f7f7bfbca9d71d6f54ffeb9f2b71c5644a0588f40ff881f718977102b4b98dd8fca2bff34ffe4476513df998fcaeb8f0fe8f734b3f76f47c90eec552e224cf0af0c1b8ef2b784d9513e729e2fe6a904af7acc55fd2dc5c77ecc61b13884ff5f22f3232377169b4b7095720478372e3fa5b707a0a3a1e1ce1346c8b42f2a1be0b0f8df237df2dbbabd13e3bdc828278b6413e49abf506c757c6f364717e5e5789af11ebc79219cc9727a3f757c7b124dd1b275f6ec794b50974fb6d20dc9357bc5b3cd378a8991be7c082680ccb252247fec4ad3961dc9b840cdbb5f0493adf21b6f9ac306621364d0722de496938896de8bb41ec77be130e6782f17dfbe4dc301b8ad25329af7125f5fb42f08ab7ad29b4cdc92a97a09226afc99d4c6e519d71defa5a82ccfcfe9139f9720ab7a2f9f97292b341a4c5019860d646481ef4ff1a8b8fe2e7696b62059e7f12e70ece3bd281f135323eae1f8d3581c046fbd2faef25725f1afab962b0d6534b1276e6405cafdf479ee7ab637b3a6615131dce7135e76ae82e3fcd3ae76304ac6dd4ef9595f3b18e42d7f3b2571b68ba7cefff7138e77a2db836b4fc3507848be28dff70a67d8ade7c9777baad893ade205ca64164ca72f4ae4f1996f032bb2dc595109bdd7683b09a630ce8b154681f57d1da5364fccd30a530d3c5799b8ca970fe0d9f7e503b9f6c138ef74ef53d0b76f6a45f369a04c777ec057c16920df563a524538d0c9de72fcf73b3de69489fb02e3fcc065ce0517360473e5ef0ab3ad99cb251c2efc069ea37cf970519a88875f3efc2ab5d5ede9060696db4ec5c3745b033c6de586163c49b71a79a1951dd0a767d0926389e158f94d915d73d59b077d74670cefbf0dd9401f8f98a67351e3cb87ef7eedcb875f955289df3cebd59a06a1e428c4c762dabdf1bbaefcc6072d285f3efc32798eaccd14be2537bb317ac36f37fae5bddc94efca2ff6f435ca6f7e67f4ae8edbc3f5cd76e8b2bbbed4f265122c8f9a1863a6dee85db9991572407fc936bd346e6ea4665c7a386ef22935d4abb5cb1be793defd766f8eb20d7f893c3fdbd818de184379272dd7b6dca39d3486f7faddd1ae735808f2b7fe86ddf5e4a6f624981d37321978c24acdbcc98be5ceb20d07c6d0183079771ccbb59cc9d1060d1e6eee8dcc8a9cb51d59798bba331f86f26e06deda3ddacdf180a58e257426c7e7f2bb7e776f68a9096ea641643d1fcf70648e01abd001896ba2d993303c1317e9e2de1c9d9fe8a79af7f7e6e074577c7faa375d86137df9db533dc5bd38d1155e67faea37faefe0d8fcadacfca6c428067bc668e8e20ffdce3cd9b3f2564f73a89fec587dabe3fde3e92fd6deec7875a79ffe66fdadae97e6c3ddf9f1b51ade7f1bdd190376f7a4fca62076c59e887b2fe8657ecff183a6e9e3717e4f7a99dff391dd0df1eee5f4a497f93dbb6cd8d3eff23be2bb4cbf4b537b187fcbc184afdef33a94f121c7f9d17417296b7e63236b9a45fc0fc6b77bfd938c9ed7d62f11087399bbfd30e42bc8b60ed62ea7b8b95d06e6d0042a94ede478ae17fa93e7696e37def85b16ddf186f9380f9a67910a34cfc52cd07cf0709fda3768ee70b626b779ce4e438f5384073a99bfeb779737e6e337fde6c6188d8d71b637e7565e6d6ffbcbd4b62d3fb442e9bcd6139bc33da8583327a6de985afff6c1bc97b7e7bbed3d2f576b2f3ada1e08c8481a3e7b2fb94dbec1b09986386cb6f9959e2532f3692e91b931c6f2a9db567874d6bcc9b787e1f8fe29bdbdbced2f6b378cf639db7b772f1f7510d9b4719c1df7dc9c2d6337fa5d9a03990639cc8a7e77ff4d35bb1c6d600fdc5aef659fdf5633e1fe8ed3ed9f31982accef73699af770d7a51eaf9e174d836c7bf54e675dedee61a0cae71c4c272fcfc1daf97ebaf937ede1ee4e1ff2054b63e0dcd6412098cddcbee3e34e470b915a7fd3cc9b1b361ac3d965fbfdf2ecd9f6c40f8f0f507db8bf3787f2b2d651449ced51b36fbd3bf3815376ea051d6681b73e62bda8fd78640c87b0c7728fd0b75c376797b10f2128b9431e6ad2d8cd0d176ca46b32b16d6f7daae1374383758a7ec8e43d1f2f556377ddd4a8c1d1a689ad4edd51dce0534d0534c75d4f0234b530d41bfd5be6da8a8fe4de5fb8021ca1eac387541f1751ead45dbfd5e5dbc81c713cf9ed9ea3fb7b98aa34208ce57b3ec794bfa07b72de6877e64d0c24f20c02cfce0794aec16ecc5e4a8298d8de11fec26670cd998110453de34f4cac1c98a27eb4f97297bcad175fb931f981899b91fa90ed85d31377847ac76845ee978f57523dbe7111c40449f2b82708819e7b840068044e078ebec94941de377f37b06db2e31b2bafe11d7b4cb70b26db53cde21dc64ea777185b277b24b53fb147d82359a1d4237f857ad7b8e73c4296d599be5811e71172d149aa932027ca6f99c164aaf2f608fc1752e69c11f84c7288747a0463387a383103cbf58ff15cbaf7e88669fa9579839b9633866f4f9ea773cfced9c0cb1bfdd337fdd3880dd380f26a4f77bf4c77fec4cde974753fb8f936d66f744ddef3ff8fbd77e16edb4616c7bf0ae2bb676db7222c927a3a75bb8aadd4daca8f6b29eef6daf9ab34055b6c28524b52729c26dffd7f6600900009c972dabd777fe7ecdd5b4724f1180c06f3c26030cbe6a195b2100f15bcbe8d0ebef986fc6dca1609f3bd8c4dc92261f72c21bf7e07d54758eefb5f0bed411c76544dd6720f4ae3656870c865609004d6179fbcb9b83ae95fa114551a11049d4c595295a14aede38bf393fef9c858dd8fa3297a4337d41f8daf0697c6da6996048b6a5d492585dbc2401a5868f2e3e9054a135e85cbee595c1524a2b4e0e26a691303e7a539efd28b7b7eee23ab4a89aa7c58274e06e72783e3def8e24a8824a82c863a0d7c2f8b2ba458a939393e1d0c4f8afa4a9b1c8259105685fc69fff8a73717ff50219d31ffc35dfcb1a205f74e0617aa1eec4d83b8e26cf979303e3e552917039ccdc526a837490e26aa8a514720810d2ceced60d89f94e9e13e08999928b0f8bbcbe145efc45c6bb908636f6aaefc53ff17a5f8075661f43ff57f991c5f9cbd01b4406131d3f3bb0a5ece2e4e066f07fdab89dea6748f9a1a3fbd18eb856771b6b6d864d87bd3077a13b584cbee8e55284e943fbe18be3b3b2f55f0e37039af10b3a8912b316a0db3222381297c870640de5e5c9d55d4a8fb38999b9720162f449656618db0c22aa7fde16541645ab5190b176bc8aca45f9af44ad42707e3fe19392285f618646cbeb6643e4b45ddf5f8c132a3776f4aa0a4cbbbb5d0146a4f01d01ac507cbe7fa4651dcac6d9cf7aedff454291979ab3b6f4db1625279adf56c5594570c7ca5c61a235fd451343ca5ce9ac19e5f9c4f0627fdde70321af7343f4614475630655e68a599577566942a4eae07a377dc495c6a917b8c837459f5179fbf3beb5f0d8e2bec275ace5912f866d6933b734ac651eec33119475aa5097ac200417a5bc238f5fc2a9aa0e0b0f74ba9bbd0abf01c5170f2a677fcd3c915bac1655dae4378fe876952ddab90f5540b47abb8d6c4516b720650a9676000b256be47a255326f94c83a1797fdf3728d78c12adc51961f1d5f5d0c87eb8796fa491c86eb4778d93bef2335695eb1851731a4cdaa5b4ca9502c64b5950debb95a17e7727d0338a59b5ab91ef47f36555f05ecb1ba838246b83a4c6e73af2938e95d5d5d60eba222d7bc128cf831d7502853abb48e3265bd82beb46a6be8ab546b321afc0fe763e5e63805049f0cfc4c163d198cce06b811a0f53c0dd27990564ce2522d74fe5e0dd0f35a6e305fc8495075c5cac282dab5ae4dd45ef19f6835cc2e1359e7e7abdee525a752b5d263e22d16d5b91f5ff5cec5c695baa6728f76e2457ce36ac392babaf8f1aa3f1a4d74d9b548e28784a5a96590607995b3feb86fac346706fb3daf767e21ac9b9126648461539d46a55eef7c70d613068652d38b82b967b2312e2faec6da86257ca98a9fd14ffd615ff77ea61f58c80cbe9dd1b0e43449439334e5c526bd7fe01683a8c497e4c7a0324451fab4777e8276aa5a7ee645d3aa9d2a6a485d49ad60549444f9f115e7606af92c31b02d515ee2be54454e74a5d6b8a7f9f4d3ccabfaf4fbda7634336c46e7bee2bc1db39f5814d4a84256e6b85e4717b226f0f5722560e6ebca03e95e0e4ad407d0adab90235cedc188f1714fdd53c8bcca66c2b8f7463381a1c266f357aba1b016bda58d0ca6f7466a57797726ad0acaa158530ba25c36941c29852a2434eefda8a1a1220bc6bd1f2757fdb30b8cd180d2dcd066f3b81a9f0165cb2a65e63d98d5c9bcb0dc20286aafdd2228ea5cf786effaa36a2d1eb45ba977d1d354d62cf60c4885421a63e7d5366b81bcd6597f34eae166ad5267ced2d4336cd65e5c0cc7834b0d9c38cc828a02200aea54282a3f4389577d6de338615528aefafdc9b9be310ae5acc8b03b9a179e1cf7ae50c616d5bf159b3555215baac5ddfb276a65d15ce1e1af6e2397da38bf40a5d9d842145755e7727da15418eb9b940ba560ae8695c76e56c48a9ac2a37b52ad2a7cba1b462dd7865ecfb836f23a524a952a190595524bf09d522513f7c9eb8cfac717e727bdab5fd6f599323f8ea65ef2f45cefdcbd6cc211f733afc1d1d5c5c5b84cc0491c575dabc79ab661c21f14012b01c6036060152956610c551730d490411a45f12242e3e01b1e9b7a8501c229065b46de9ca1a98b2ef8e023c6727a6148de844bb648822823c7a311f1432f4d59cac33f8f976916cf834f2202b768c2cbc8dd3208a7240be64afcedafcf4444fe4a58b40a92980777aebc24f0eec23cfe331f631efafcc07840ceb9ec784f8f7c3e1ff190e9836fe4588b3188f189a051baa687bc000ffcc91f453f322545f9bdc8a09007aa62acd961e9744311b0991f332fd5c230337335fc94d72b67511045979138aab2e1784029822b7f54c2e8f377e44886c3eb07402afd687320588a6cc4badd21df16dd9667282d4d112c09a4ac7553040538ecf00b4841015dbefa1ac865dd3ca39cba4aaddb9d7d3c9e53273fe425c921299521dfe61f9f21451e5fb676904af419ffad0e92c72dcb0c729f3f93fccd91086aa6209fbe66da784b6224bca92c1ec68f2c39f652b6b7e6dcac1e36299f1490e5ab3f4251b20d0e9c7c12e71644b8b69724ded3cf41363b8d43962ad1e2da7b648aa2061ea4ba0bd938c664a5c3601e644a40b8e1ab5a3b8aa3812872c552a562e983cab2e5a98fe244471a063e9b8a3ef6bc24a99140e76c3afc5004f3da99c0cbeb7ffe5c066f4fe6645e0b89a99f7c12b10f1aa43998fbfb0a7ccf35bd11d62261969724c561657c139123cc3a51bc9992239e48a778c5c8914644b77a9e80fc38cf24c0a3e989f11cdd247d4d5eed61877b93941c9149296bc0eb021ae55017c0cc8f174fd2e288d9ad723a3fc0b428504ce4af81951aec6b694c2a0907f21e70bc3906081f2c4b922dd30cbc9a44d8bd9659a038e9a4bfdf7b26cfc0642a4f504ed8fa1c03932de8a1429bbc23f3f1cc41b4f2c2604abc2c63f34546b2984c194f9dbb4c18c1ad0ad1587e169a1f1f1229c8a1693d69b853b7dbe4ef6c4a7ef6b2348e40eb301d573a1b8cf3e32e7b6783319e33c40c28e270d06f6cfac85b7808b2d9f28e06f101b279548f6ea372ba664ea3c8f7f72a672c2b29df3979f38366785cad74e8ac7cfad2cff5a3e2d826b420f438b9b44aab62ebcc0ebc312f79a866e95508ce4b1ef6aba97344cd31cf502c8ebe7ac94369ade4458e8ec82ea0227ad8055ea6bd8f96f33b96ec6a6741a5aa8a2b114050f2e8e01144130f7bc014215ef2901f12d78e66829c8e18a671cd112b1230c0eac19cbf7ad6202ea02396943396a9d0f1027a52a10aa8da80795e4e7dc0c51945f644820861d13b856638bdf0c3895ef220328ef241df7c604fd5044d1aa8505a4bb4f4c504f5ad9e81489ee4140dfd1607d1de2ed9dd2fe7141644c0ef1720af60a03913df158718959b070a6dbb988ce20c65f152c05bb9b6a05442c1b50044ac4dc4b85c52bb4a2a54fe9d7af3a9362b50a2f8944379704012f610a4194b889792dd822becd66079a4f029cab8bd142de664e1f91fbc076e9be58a7e10b13dbdeacdfb9ae974b68e761511c693b88f41348d1f6951d880a0dbe8cbfedefeeb35e7425bff3917fa9f73a1fffbe7428546f18da2dddfa559e2f9d9b10c1b54d56d43b9cb65c29e2dab9d2fad7ebf8b97e8505af3d98fc33849d77cd4cfa356bf071547de376bce9e1a3e27f1423370be01de732cc47f011f7f5129f8137b524a7d604fd522efb22054ca2ce15105e677d95b0d5bab890a5ff05cc8f9c5b87f4850ad4b657e0d5e8f4d81e817cbbb30f049ef72501875bf93559006f941dddd87c45bccfe191e48a23ac0cf71b2ab1fee457f5294615f3512c8e7bc992cb5f2975ad522417f5e320cee94225c2b09ee9fc4f77b2fcdacdfd238b2521e609c17e04a5c61d6a723df0bbd04b39568c96f04ebbed91d61552cb05b23bb6fe238645e943ff7a3e59c3fbccffd143cabcf87209aee93ef8965cb6b1e946ecf515fdad0ed20caf23ede86b1977d45270ae8a64e8a16b8f054476a684d1df936cd699832b42747b84d5b39360ced14d8d9a625059786b6ae85cb739b966459533b3c1fc5d64029c54dad0d8374fbb6f2c2a696726adda6a582b48d041c865bb79417aeb68445c731c7c0150371c6222e72403bbeb8fbad86ea97483d55cbbdd2a9ea80ab10d3e7cf26ca5012e241cb37e8d6e4998ec911e16b522c2c35d155a1969a570176565d6c9b7b53baa9f652a51fcd788c589ab1690f9bc533cbbfcb5492bcd5fb8085d394cebd8562d1c677bf5555d34de8d77ba991f8ee37caa7027e55a643d76dd78c5a6fb33af0d202d4462dbb42b4902334b578df78ffd197fd1b3e7aa5c74da068cd5521292fbaad67b38cf750365432da7354a0e97b71f79b3a8f64bb999155e51ac9fb324c8c92d5a954fba68ab12f06d22f338f3f40df65eeb1b929b0ec0d0613f74cadbd7fef76a7b8480f337745ecb1a485ecc93c94a5d7b73be319233ce63277ab90dbdbdb1d747517d0a1231cde837d82fc2e2fa4f0405908dfef0a252b5d2eb89645c9bb9415d385ee32e64da1c51204291822bbd00628ed7e3c171656a1a5d35d351395c266d32c4ed84fec096cc9b7493c7f0b1c620ff94495a502754e838461ae8d9453a69803c971b1262d0a1557a694eae5145dae41efe3a4eff93365a5e41f9595a2b577933f519d427eff52725a15058b4ba054b78ae1bb01a08957f2c5e0bac5ed2c32f13833d45d3562ddf2ef05f1cbffdb82eb6e31e0b512517560552f0fd1bc3dc2f9b761720baafbeb5f49e955d93997b7549aeead91fb0c62d722750b843ea345bc3661475eb5c1b291b27004628a99a811d9b8366bdabd6e3f9d5ffc7c3e39195cf531a1cd881c919b5d3f8e22c6bd5935b21b447eb89ca2aa9f7e0816f0af1f062ccae057c252fc971b65bbef7503c608e1398ed44b1e521530455f2a5ea2a72c7fd2007bbfe9dbcdee07f6b4fb5ebf2a6a6dd9fb20cc58f25c8bb29472cb408942780934898fb66888fcb04da143b9b9c5c956f640d338c9f6f6356ff93f972c79ea250f292a5d80e0d755f050b4a6ba5aa6355c5d0aea9d534561d9103a85c991da3bbeaaa64dcc09f799694389b487e2e8efa38b739a9bc77b7acffb58701f9d098494e5efb6bd19b6a57007249e2f4296b1b79264c911c9c957e14680664d0f94d0061c4c7254d8ffbcb0e8b0dac1b747f9b8cb8da803551ce2060927720d7e604fa9faf9d96985e6cacc20b7e6b1e8aba32362d9720f779d444b393d14b7a49520e17b08a6ed933508f91b22e4037b5a4f16e5d64b7451a58ce73bdb2c9ef2d493a5462af6632e6138329ed56dbe4ebe15d2525fd7ff6e520eccb4ade49c12c8a09a621af28556a0e39b67c2346b92ba1340e0260cbc94fca03e09d5f99094c5a9c9b983adf350bf2282455e0a255fabfe1da8607637812efd36f11e60aa5ed2a45ed3d8f6941b33c194cf8ddea67c8b774a88df34cb771283a9baa3951710f9e59900e28efb1daabd6771d1fb711cdd070f79427ca6e662d5dbe33733e4a4a97c5402394a3104f26659697e3d2dd821825f2b357258fcbcd56e189310ea7bc979d6ea607a9817a9159d00811c16c124dc102c4aee1b26e4ef692c5c34bfa571649a94e2bde11a55e563795bb1f8a44c21bcacce8cd809453860a5e4be8d289e322dbae25f63c3cafe08f497120fe33214c393dc3d713601c09d63747715975a0184bc4600b7bc6985be8a97260253bfae458c4a7432b2137a145e6e35b2b3f0be96632e8b9e389ef5d84ec51559aea81841b270ee762e975d7849ca0651c6c113bcd6ae973b539ccdc616f0bbd246b97ee1cbad009bd729bb9b569ac85725473e8b2b6d0a753552ed5e754be70094c231a4ccfa5dbf354d8fefaad7c8c4033b13a0e6cec9d7f0e53b107532ac65a2c7b5144a350ba728146f26817e4116f67d539622b9f3291f2f2f2166c934f2d225522ad25435e556860098627d8b19317b601e587622b5a841741fbf4053d1cdb58a23c5a0abe45fd7682c5fef86c106d7fa61d66a6379852d5412bdaf6d159374162fc3e9809bd2857837e3b5f0b6197895f251e24db1085e152a82c1389019f993252b7b5b126c30ff626a66abc9d0dd5b8a2f12c375d081a0d9d99522d2dd50d90d280c350325f57275f9c8e43de377ddbc365414a69d091e517c7bf197ef0fef55e15243396d108a5b17ae91db9d41e4c70994223c948df058383138193fc1ad177d68600a29a39397528868b57bd9a58a821c8ce242c8afc141d138e214f54bfd959876ae67deefea587971758e2711f82987f507502337728c78d12804cab39517b2a9ac23b5d4624dbc920d7efe2cdbe64afcabca6eb442f95f87f7eb757bc1650caf2d08b8ecbd1c8764be4c3372c78897b3298c5322c23e10db0e05a649096f3973bb91c055377fbe0e2b6a3faf14ae7af86c1995aef251611e3216f93c0ce545d4557646e81890e356e94bbbaab1c4b972aebabfaec557caa3a941f5bb7ef788666e4917d97ee9e6898aa85355091e5a3c8d7d65ef2612d18332683f48830c8ae47783e4b5956b10f377aa7902ff87adf1d853d4710a7ad95f0f7624621675c0675e9a7793ee61991a29602fbcee86e1d1349eabb7d044c54123bdd7dca7c64b88d898e2da701d9e6374b4f779482a74b4548e91498544bc050ea90fe1463aeadfd74851d7504c7aef9562a669954e86ff5eb2e4e94494cca1aa917bf15d396585ae293f5b7ae15be5231096f2989fcb902f15f290adf38b653094cda888e45f754d247fadc6b32cc0fa0fe2e824ffaaae9e7fa5d1fb365e4653e211ce2f0ae0620912671bf92396534781a2f0072803bfa664b7dc5269f717be1f92dd5dee13a5bce3ddf3b8e8829bde5e18c68f6c4a1e672c22cb34881e88974f07f152e271073f251751f8a44c9452596eef961996690e243598a7206f9e2f6c65722b6bfa568f0d37d19a1e279e77f33552a4006cbd3a672e035284cf3e4e41a510ce7bf196fcaa2e905f73c1ba48e25530951395cd58c28ab848cfcfc22762e7cd284267e31a4485a6a4f72aa6014e3cd8b8b98bed4bc1286aca1541727d1e929b7c2a61ca0fcd6b2ef72ee7b4784876b1b3e2536e878c5876a89adfa2dd91f27d577157e7f53460948a121523bcc57457f37473975ee99883a807a8db2d6dab8babacaa38568ba90721dedf967617decbcb4f4dec6e5f2376c1f5114fd5fd063e413c7b90c282d37899f8fa791edd07620b8f47f53c8fe6f810eddc4c02bc535d3bd623fd1fd245c68b1a7835ffa2f169b17af997f28a059559f9a21d085d671caa9b4fa2bf67b7c038d6e47e26afa56e65ca3d204d95e0954cd2f26c9995285e51843035a82a4295bb028b7a607dc4be2efa700b74b3e4938ac1b6c22f3f905216465843c2b32b462fadc2afe19fcad874a6a97ca891dd33e076227709f1728ca840ee6ab3a054af4c4515d51c4f5f65d7c73e222bf61594cab64be6d5e6b2200ffa1f17c0a450d6a2c7754a7e4cbcc5ecbf8785da432e5932f316299e5e89c4718fc7c45ba049c65933dfaac0335d18e1f5f0cf10a3be32efe10779f8641afb29f5167118c698038ffaf1fc803f5b5c4b3cf0e384d159360fff0b1a506eaf5474856d08b242878aa16b90fb82ac4a8ee22d15ba57ffc70addc89fb1b9873b33aa0444812c75aa8073eb80a594a00a7058c4e195c75304e35574a9caaa56b9d1d7107331ad5209f9aea2cc98cba07b607e173c2ce3655aa1d943b97453aeeb54dbd095dc540eb630684cfcd430cbcf33d4a2c97f3917d5d8e336d05f2427012b1b75e89c44cebf7ec8b985f6954caccc7ca7c0746f77caf3088a259eb9020615a946898e5b03cf5561c7c8af8a19fd7f20d722696a5698cdc772171f2bea30cc2be6483079f715dbb8e83efdd70f7a3d373581c8cd76d3e2c9b5fc936728efeb892e6ffeaf7fcdbb2a6b1a5cf7d76973fb7a55bd814bc7b54a836c6ebbe9fce39ac3562ac3ffcbbac2d7e2455d126b25d18682b56225704379e6ad586e0fc71133d080ea6e326ada7f44cd551a7ecee761f21c3c5b4d923a7ada732fcd5a4257da351a2a5ea02ef37f0aef9e51b0e61f4d482cf492aa812937d965032aaa9fd96d172251945637dbff98a34f536d79e047c5042a85391a190f8885753693e15bbabc4bfd245894c159a7e11143c68497f8d58073beaace92c1dd76a222b902851a218bbbffeb9bacd29da6b28a7c3bff32b57c97334b36adf24ace04f168bf900fb5dc78ac11756a6a7ce72af7a5ed5665aa9f302fcb43efce40a5901e35354aa2706a5777f30d1e6fc5f3963ecdc7222a496cf5171ec2aa37437e2bbc35a2fa4d3e083d1e42be36b8356455e3ee8e1220955655169d364b3a98dc4053d4a4e74b1863485420f4c56b6aa1a26955225fd5067994abfaa612c25efd56d12a2b5dac8a20330ca2e54f9a33714b28ca00bfe87c5ea962118322ce4faadfabb1fb7ae57571bbe88714a96fe436eacdef8a9f539dbe7d5370350ea61ced2776870751ceda0b966cd86204de3062fc9c8424cdbcbc894e8a7569145e1beb3e1b33b65e8e156ee7947ad3e99e8198d76e6ceab147c68d4d4efc83e832f47cb68749db6a24636986796532f651353eb94313333cc12b2c6d60362c64f322179bf0e2b234e39983b25990d6882853e38dec2ba8c01737bcab6fbf7dcfaf0a9e6be32a6053e0903b2a85db55cf79a71e6d1aff72d93fef9df5276f077dbccd097b97ee7f0cc4c6a5a779fb0d5e7ee1dddf9d4c64b8efae40fc9772ba86fe7c913dedc58b622b34d50dc07841d51d8de221a56cc59227d54b5e0a01df1c57aeef6660b08c80a6d8e4292a6aa7f50a50d7d98e60f30eee4f627f20daac18b6b2b34d6e9acf9f371856358330dd6055efef8342b00c4372b8ce5d946f709f79993f6349f5b08cd452f288e8b5352ac678111357daf79f0649f518fb3448f218a6fc37cc9b310aeef3672c048b495680df0a34a5fd08c3298879bc62c50effdb249e17aeb1fcb51adca08aa77410bd4b41fa884d143e3398c1ac50fbf3c2e3f80abbd3d330de6b04b9558ba52ae676c5355fd393d817274335c2ac0693c89026653f8f45194b94d8127c16c1e3930feca9064aa3aa4749fec65f2b8ee7eb8a14d8adc6082b38bd2985a8bcd7333512539234c18590616d35880ad87a802e8260880d2d64148f55e5d87f2be29b37527c251eb74cfd82c8395d6a41d25ff474781ce02a0055b80daf3864cf2cfdfd0a98d023b6643e8b2d64b356c0200fabd9f48ad6bde481aecdcf62ac45aaeb8b874218cb4a1956f4539098a9fc173d459f78597e5529f5459f290573aa4c338ce78165bd30d46514322575f7ded0d21a1bc788b135dc6303d638cea0de46741990f53c66f450702392d72e746d202f5ff126cefb2cdf29c1a044e07d0dc3796609f24aa5593463cc903212d0afeaf3aa44c0f307aaae5b59456a2ac45559acbf2a71eb15a2ecbddc332859a1ba28e2bc2d0f11d644ae010aa57225cde5c611ada173755cf79580ff5746a2b84f5f3c3e9d38b541ae056cdd50e5d67df1b91ace329d8e85ce3d8e0d5bf8f2280c4afdea0e60ae048ccc51447f501180c95155826d7c8ea41cb152611f288173b3401e4b2ade54d2c716473eca826b8b8e3e040b72a4f45796ee552b445baeebcfb80272f64c16072fa4185318de632848432fcd06225a767732d9ad91ba48aa5f4925a2630446f5225454ce907ea9114e065a236a50998232e1d2b8d10dcef7fb25184d8c4cb5578bdc047ce5c8c3a8e228264b3385544b1681ea197b0cc230579d8d1606ce80920a41f3a417d54bd9015ead3957637a5f26a3b276541cefaec0f5813ded2a87fe4a2902a2340e197df492686f17a1149bd37f2b86a31c47602b0c928c970f331264641a331e9981fb431ef9c09e28cf5824b3ba3e7a11660be7e96119a61d5878898757d5c1079ea2f489783c671136b16b9a5d8dff16387d6d761d2472c6c51872f1a99b6e65c6b7d1d0bb3113d4fb9a2156c2187c5eb43b88344d4d35215585ad2692771d43fb8a3758796bf2816b9f2b87d3ca9c66c490f1ae71a36cf8f43c6b135dad1bba79dcfaa037c4f27f759b7f12229133eafcfa95c2af6125af4589a9adad8e1aae3bae6f3c5fb895fd864118ca40cbc719b6a155ba9e6a37ba92b6f1a46c88ece4cac2a597cdb4c328cf3b31be5a7f99f02e41913124abf7978904881c6111917bdddaad0ad55705f430055adda323a27f7da57ca678bf63fa7390cdf68a5265fdbf6a4b56cd705d3582068b99a92a4ad53d9f75cacc57affd8a1d58f666e439f5b7a24f3e73b864aa6e0aa2a2f848c5ff96c6e873da0d59abe1e898360c5979ac64da215f690e17965e653d4a2b4bb2079f67da307b75bd5261f95ce654bc918ae272acb64d34d58507dd70d5855f90a0bc31b97a0ca5a45b587654f8860d050b07b12c2d9dc4ea7331c22d1dc566a3d517d95a741fb1973c0844f238b13553f142fe66309a5eee79d892cc0d3b7787323dc216fbc62b2fc1e0753385bf5a434546e7604909e6121d9b37edfa99588dfab8d1daf8634ee4754ee1b583ad2c1a7db882582bee60932957eed6e0af9634791c2fa30cf349d435dc7c95ef56f86d15ae6162c9e5aebf3d2276951d9766ad2cf62af0f333657f020f15d32e17e9d779f3142cfc298e3b130bdae057aaf2a14d4003c066b29c6aabb6886628d65ec9499a33cf6a3565b0a64df8e719de734e5efce7d6e817dec422d56a9be4e7f3ce7883471f975a515389585a6770198e7e55343098b0b25972a49b255b643ddbd7ecbe75fb112f1cfacb3723248b53b0c43720b0a4e2d5d05301182c33d3aebe1a3f51e9a1a2931a8ebdabb52a748137b26288780523e6230a451c4b3586543fa4a057b8d82ee4520f23bb30478a97b6e545afe5303add939daf46fdfceaffa60e523df0ba517a57677293d35cf892304e7bc44a5a5d692a2bc66a69d64c7b00ebdc4d6284db392a0dbbc3150725cf5df05a67831c8643f448205e4a490b6eab9b286b7634381d28ef9449dac86cb7a6866d774831df4c2a773af0807dd99a7d71b05045406f76d56fe5a9dfcedad547b21ea08a2653d6953668135b6e24613c5bccefbe28a24f16499cc530282abfe9ce583f8c2376c2d8c2747948fef194850b791f470d230dcfbcc59e41e01a6ae0a59072ae642e41090c8fa05b7961a17860c2bbdb9d1b9ee991e0cd08ef6f774c59efb82c61119d79a96824270016d10796e1dbd7ba76efc78b27d49c575e48f17ed93d6d9305eba6bc6e4d9456bff3370611e9cf8270aac609aae56f82f7788b9c8e1f51053154360e4a24c49b51f9a5115f7cdeff7c84399588a63c3b6a7629898c5f86b4ff0c361df5bb7a781dea6e91935ba0d491a7d70d44879f5e8057a78ad735c905575e98ef6b9475cd7eb4da533cd8e2a0bf88fa37dde1683a105016f4a632068eb03b652b16c68bf99ac4b8001b8b56fa02cf6106eec7a295a1de657e3061af120619adf6768b830bbbbc19e13e2fb7735280676e48857f634b63e54a5cbd0990bf9bea66c9d35bf1fb2219c60ffc0485349594db81a55f6d4fdebd22af1e2edb5eb843c7a0198542b5f77b9510e612d9f0c31a5798ccf9d44b394c3cb77379030cdef15671ef477b2103b10d33ffcfa517ee793572a7d0a68758badb66efc3cbaf0d8eefc98997a10fefaefcb2dc92078c611ccc99a0aebbe2b9da4135efaf5749f77b67287567be01b672fb6b6977b7221bf58b83c585b0fc3ad88a8be0d556b5ef0cb50d1b45259e93f791cf9a6064773cd9fbd6cd693ff2e6cb78b9fb1abcdc15d7e46e870a13228d90afd9505eb3492aeb96333db3c5db84b14f6c2f163d0a20efe5dbd7cacb079629f0f21467b149062d9278a12dfef8065ebd47ae2ea952727cf94d23e1cf9f89e9b3ec6257c36800f6c62716c96e54eca943145fd79bc171054373efe90ea5a56c23bf8c8c2bb43aa3c60bd538c7d5022f52bc237e905ec6e1d37d108698af5c8c8fdf1fbffeaa60fe7d6f57b06a997d5c4f2159edc0e4d1d246b1de4b15e3e19d5c4dd6a9d4a42c1b6e122f10c89207ae322b3e8267930ed55f9a746863c22169064850f89ddda272552d5f53ae003f3f0823fbe70900c4212bae042e23a540216e24e5f002df2bde5cbe0d9c66c7f12250b32012a5bb19260e398e174f6fe3e40cc014099d6a4ad57df3b5ec36bf961d3b7e4dbefd5655bcf31e70e84231942dcb4106efcbbdaca19f35898fe4ed80ca1a2a084ee30c72e5dffda63105f34419a1d52055d7ab0041269ac2d330e29d488da5f1ad9cc1f43f662c4a83bb90e98ca7785fa9ff5513475e9eaa8a7ff94953fb8b4526cf0b8aa45579e1f7a5f3cb2659a4e3f4a7b2582a9682ec44e4c9327622ec2905289872a57e495c57da2a91e77a9c8a8b0415c4d654649850ae2b02959d6a132c4a8b15995c3af3a81c492bc5ba601b8694e0d5a1ad2aa017645de4c82ead20c559a3e886451bfaa5bcfbe43b2564081a460648839433c2d29587c5bd2f7c1fbae41c286331bf24a6741d07fcdf6482c2643239246bede425cb3732bf886b622a0b461919babed5cb5035c46bd7b67021b7623f7b49849259b7dc7f17deac7c7a1ebd24ba887c368854e93f4f1ff87d21259bd6148ec5df935d6869b7ace0eb5664c952a8845a1580dfccd307fd62b3571565849052793ddc3f4764ee792ac643f2eb15d0842a2e56289b70f3f4415d567709f33e287ca0ec2928c56e2ab5cd2620e83f0bae14a57b532ff37459821740e1d1febdf25d50503697f6f91de36bef37a8e9a9f96bd5fcbe353d28a856c9cb5b5b9b1bb766ce03588ac0acad49b8b3ee3de68daa55722cd5d6a421aa1972ffac295bab6ee5180e66d62a49006ac6a3d9b58d1b063573747f6dbb58d8dafab8bcdaa6b096dab31bceb50d3b61b58d9b2b35fdc2f69a7e917a6dd399fc9af90ad45af906c5dada3b2c6a6beebeaac96baa6a955ba66ac5dd50b5e2a2a69a7a41514dbfaba4260ef6d70aff624d38cc6adce154d3dc6335ddc955137653cdec75aa991d3f35e9afa995edb45aa1c4d74afa7ccdccbf6b1a63215f5eefd4760ebeb98dc83704e470123ccc32e2d4ed26b9f4422fca82848c993f8be2307e0880ce07914f492f0c09164d01e92c59b1298536b09d61e0b3286553bc128a27ceef2d3c7fc6e4971ab966490a4ccea175b207056e77c4379149e91bcce034f79e305a9d07a30729b90f4246d8479f2d321288ebe7022ff2194f6892157d20384446b5c7772221961f2f9e487caf96245e96838e9283a7807a7c7ca41e824de3e4e120e485d383e1e0b87f3eea5b0eade7d5de45214b0115ff5c0609bfb8c95b2cc2c0c75c17a1f78899541e1291902a88c863126441f4000adb7df6e8250cdb9906303977cb4c439e843348b5027144bc88dceef4466430badd216f7aa3c1a886edfc3c189f5ebc1b939f7b5757bdf3f1a03f221757e4f8e2fc64301e5c9c8fc8c55bd23bff85fc34383fa9111664339610f611d6630aa006805631a564c4980686bc0c811f04087c127ad1c3d27b60e4215eb1240aa207b26009e6cdc3e4dad114db296e414eab83c3ae0e6ea3608ee2ea1be2a5e48a797e46ee93784e6e771278c00b0d4591dfc9f1b0777639391b9c4fce7aff205f64497ac07d9f585888bf6f8a8fcb2c08d303a01c2f61efe06163c1d4bb678368157f60670c3819163ef8e61b72857238258f3386e8fbd5e492ff95b08f419a21120883259c925f59b4fa95e268f36e15e311b88cd12d6fd838b8dd296e5ddb296d1dacdb49d0bdfaa691c0b4702d36488997c34649cf8791c03b54ec1e965e32e503393820591a065176380d52207a2b621f330b78ede19d1759503e358f577241d3566345bdbfdd9135711ef80090bae42040cb03a5f0d7289eb25f3133f8320c0f723c89e8e21a61f3452693c1f14c472283063607f411030f435e11a78c9281daa82c5c23712432ac85c064256fc18f24487963a0eb60d771024be33e4ee6c8b412e6a571944ae237a1071701d2040652f1508af443c099bca283e7ef4c8ab8f271ed8104689a48dbeaf367f90c48bfddd15e600bfcb844deee5fff4a742b8ac702fcf5af648f1c1c702c25cc5f262953b095cd123c9a84e84a2b0802e8300a40c9235f97a05442002a6736aad8ab217dc8332afb3a091dc7d18a2540e282f5e080b318269b858cc70f467164a9a40394236f244ab0995fb132953ac6af648fb766b7a8fbed3e10cf63e22d163c2dee438007b4bc073c8cfd5aa34a4e3cc039c4e531fcae816990fa5e3215ecd948362c4a9709eb7398e57672e63d28d752a0d9c6df182d37f989dceea40b2faadebc8badaaf42216ab7c0f3505dcb73be599c997a3d849cb83c00c8d7064286d1c1c101ffa7c9c05194b179ecf1484295bb8d006cd9260beb7af5c594d7ee0b32bcc5e892431e01af9fd4b8d57dd27872f829353015f2aeae7e21ecadb1deebfe665f4e5c2bb54c7a89311d85cc4131e766cbf4672eae64b907dcc58344db904eb095656e063cb5197472a1691464c656b9d57556b2a5385280a521244f72c01edc84bc9ef5f369103aeca35ac5087c3242dd439e1de202e1bab736214a15ab145122f0ca2f6b51142b4c7d245e8f1abde8f4184442cca8e432f2d65dcd1bfd169510d28a3f43512af6f77de451fa2f8f159d90702883396bf8ffe21591799630873aa7cf5653f38e842813fbf18f70fc918156e393864e028c852aec804192ad2bf2ab0ff5a117052f7cb6292c5215e394be6cb300b162123f3208a13b2e2a6408a17ba2920dd319ea5159d12c82be3886bc942b516319bd13414cafedff09c6a3e5e75ec3c01798a8a83523447f498672f4f517bd7d102708966368869419617f7d0d29e285fd33bd0494082a6ec5f8b5792388def355ad9a60c2c040d0cf52bd011f96ae5add08d510aeb8764fef8551bd0c836f76c702e95eb91084ae514e632f24bc9f88aabe8753d4865467f0a722eb8fb030113bfffaf50952b461ab672a07e20caa3095de4502d616683821207e945722cb2e0170b2263a964e1e6e580613a4521e07b92b4654efd3db591359c70067ad2bdb8a10e96bf5000ee58f6c840e37a8c85d249498ffc0aabe8d7e2ce44a9b7c7511a4c19caac48a866619066948c674c73b1e3f976bc9d284e033c780f268887a64218470f8cab86d9cc8bc8af77bfd648c41e3c590e808d1758134d2e60e335d4fb3eb124162582440c0195406c0dd9f07a25108737c43ac7dcda3587fb94343faf9287158ade998ade558ae6613e02dd16b9d3429036492c9812ae43713df731c86641a4882b2e41603e81257bfe8cc460af72e68fd22a48c93265f7cb10048ebc2f1416d47d187b983a7c110751461609f3839473ee14bdb7e8bfe175b139a81444197b60c906f3cc5b2c92f863114a552b6054d5ec1c6e93a25d7c24755aafd7eba61b75cfbc6c46bdbb74cf0394ee93ef8e8a8a252326f4e60b55c80be34412fe3c8890b4e6de4722eea7ce674318fdf702f5d85ee2450f0ced633f8c539666e42e5e461b6c0f1f00e0719df320aa4147fa161e29df60548da194a501c8efa099025d983239628f8487c4693e20133747cccd83688ffff03ee6a0ed73d8aa7e10c05d71c9ec94f9c1dc0bc922f47c065a6c05b7eb7c39188270c2ab63eaa2742f5ace1564bc0ad2b74114601ec0794564d5cb87388044ec3c57ee429cf283e7c7591032c28798c0f44083c021f6c901913ba6f3bc0346be3922b63c22b8f8f65b03de163a598d67499c65214346b8021ec9dd8f7df83de6fbff774fdcb245bd0d752e8f1bc40943e5ab170573d4dade26a82cfa5e18520debbce599073a5d02dc32238f5eca298e6431b6c6318f2551bf49637415fb1e901ef322b25c10ef3e6309bc4e5216de0bed30650c7dbbe9e1c181082b65099dc79f8230f4d0c7cb22ebdd0873ff1ffcccee0e706ce941ea277118aea5f74c60064be7a104397c1818df5f55ef8494f5a6208ac91199c81762df5f4934bb520f6bf31e508903859e770b0be2789966f13c7fee1710f00694cc1cf043b4e34da7587218a4198b58b2a740ae81a8dff9a57e59472938c1779effc14419db5185909aace8b070475667f5f1f1116f646826b1ff21c53b1b5874902db33809bc303d48178c4d0f3cd9617af0eca472931330722cc6b227075523316649570314c41b139fcf3f95ae2cdf86148a2e4b44e1e8c187bc0bba48f0a3d89f54b6b5799dd2f73d7d1bba061aaf28a17ae013e6875e3087192c56aa385d70c7ee6310d8caa5c024c86ed583aa6578a5d62720021b3095a0942ffadb8ed8e62c9bc5d37f1da9fd112fb76c728f03a96bbee5d916655e667de45d955b8b237dd4571c156c5a2371f406276e905e2da328881e30ff0bbcef01ffd45f2b9c2b901f4ad77c630a5b4ec145e2ed65e4ef69b17f657be72b4322739bc76cef1082c89bc6d12edf3e2cccb11ab963be07ef1e1999e37e2766c39a030da3861e6429ea47c2a3273d59f13d3a04a63c1f16a2bd587c8a4965c6ab1a9c622eb1d63e2d5d7b91e3bf12fb5a29adcc94087f5903b169c635800d05b681d7b8f214d9a6f761a6d40dfd102331123de3c7ad9e130516d67f36bdffb3e9fdefb9e90decfe6e62cb6d687c5437a8814f9e0c4697c3de2f9869f1f2aaff76f00fdca779132ed92209a2cccd37a97bc48f4311bd0314e02f130fd0b848e205f9c09ed0e69d12cf4f6240c232295c85295815fe0c4d7120477efdffe9f86c285d33e81c97c60fc03538bfee0d072793cbab8bcb11f0f8db1d0fa3936e776ae476c70b838768cc3e66fc51b8735872c5eef91be1e8c99fef8330e4bf023f8ec4af68b12c4a80891e65f2378845fe3b04e556fc8cbd29ee1fe103bbcf06795bf300188ee8228e8e6741384d587406769b7cc913aff0a745bc80c9be8471f337c80e043e94374517688df19fe9dc93c3c91009ef5f2b8accd322007544ac21be641464a7f0cc53f190789991bbd0f33f84a0b34fe53cfc3c63915adb2be6922f10309144137c5f03698cfbd9175e0a84308d1f2374d6cf18df01495844c9b117112f4c730060a5031bba0b2236458f1889efb18b7429fa2f08cc03d36dc60a88c91eee25a0ef6491045ec657973ad87dcda1cf811dcf188993e02188c018c75742fd2c3003e06b557fe71b8337efbfe025636130c5c92383fb1cd41a813905d624f64644e06601b0dea2d8d3fc22a226316a19dae35e3bf403622056810bad67dccecd5191c50f2cf761192d111e6e771e47801f6c024f1da535add99a0a8d7a1040edda6095e8dff5055cc99ca88cd71462a07eae0619945a580781fa28d3ca6a50997c3c5aa5844d973ed30e69b1550db3c569d612bc2e9de8d9c342daa1aa90650ccda11bf8f6beaade88d3b86cf55a984f8281532d03064e198f37d8a9ed8839968456e8ee7ee8a529589aa85fedc9c39435721c4769962cfd2c3f528afea3bc847aee522d6bf09b8d9f164cdedd7bec45c0da81f1c08a86de797c4f116593e31b0017291c53cc7d2604ffde2ec62cfe333c9022f18017111914f33a9860113ef0b0e5d7a0528fb2245800f0c1430462d58b32655b1f2daef33863dc1584ca900f2444a6c0dec23843a5bd46d225082ad045e20464ec7dc0c2694a58e653cd388ae264ee85c127b6c7f9826e88f1773461e8eadb3bb8b9bd4d6befbf3d78a8915db2bb2f4209a45dd623736f41a6b12f922b58df1381883c1b07b71030f74bec1fa33288e67f51fd5eb92a1f5ab8c9219c8a4313ef65137976717c7de62da42b414db4007dfcc4306a7718fb7b61395d6e818030f629ef81dec5d3279a2eeff8f8f997cc4bb21a819f2c9aeee7837e0b6a104b418ba37c740aa34a5986834ca556af8ffa56b9bcad32086c7dec7d004b7e196188aab0b4b85812f7f1f2db170ff2ebd0e3846738ce2f7eab71cd0be30e98ff8100651bae874c45003a4c1c089fc89b33eb7b71c5fe320afeb964114b538a2dfdccb8f493a991e70066ba4c18df14e7c5957bec30e44f3a8af3ab490b62401d4dc675fceca1f298aa165a8e5311bf97a72cdaf3522d17559a2941e90596f56c43e6dd45616aa3a59d66867b455f93f20d94c64b124b956f4ab75256eb3c771da876b64b5b1f4706084ce9018b43613fb12772545915865660a1e0b2fc99910f51fc48d278ceb219a6d6be037d8b1b62a2a27ea2ac42d365a9a20e625fbb8b32af72a39679af1cc0d20e8b1d1c7038302c7391c477219be7ce0c8c3a5c2c48eedae65b894fe8b18b49c21e405b4c8817e1ae59b12ac0882cf5c1480a08c7c0132fc5783d107141bc4c318c8f37c5a6948ce21a796424636108f5e6025d012a4da4409291e62bf93b94f331b73ba2d4a10e29070a6f55d788032f54f7c28479d32711744b6f6f232c78bb2338b395790f8445f7319ecad57803bf304f18424f6009a96126594cee2463784da013ee2ec2d116ddf0d9c9177e7a98df27cc56e23ae1a99779e899f6e3841d149759e24dc2bc030b6129eebf27e56400db934fe5969322aeab4a841be9569bab6700d02f62fc43f0ea4bed95cef1d6ad93b5a5aa974da97c2fcf53a733876a36b2d289bf17b4a19e222e714e2d175caa25ad4bab878c853bb8bca2a4e45d2762cce91150dc0267c4048ddce218c67e2f1bcf827408fc44cd7b17fb637eac6f6d32297eaa5624fe96ca6a5e0f38bf9ec7c994c6ae7493a8e19c7f01f51a984b9ec02a28af5450448aa4ddb55bcdbbefc038e3b7eaa217425e7bf045080eee6c965a020709594112c719e8525c2f25a04a30b4c6816ff38d9283031ea720d911aa6341b694c9cd18b96361fcb82f9dce300cd3a0f1bebcd8a7a192f44d5831e27501b2dc367b08b2d9f24eb9e25c2af40ad73ce08112078dba0ac1e69eb816398e3f30e9982e7d67d1b4f8aaec87a1dfe0483b16ae6591ffc09ef2df85e8cf9f606e557547e4358176340b105e94795e2927893ccc3b8dfd1b288e0957debfd63e6fb71af223ba2a3f53ea9b48917cfe4cd614292f1cc4ae0624392a568838545dc4be93726e45cd9e9eeaf9e380ea9300c8d2cbb367ca8cdea9b6075428aea0b71b6eedc09c11421dc30c7fd21ca9320bb41c6e64e1f70616512a51a622613b08ab534b3ebb7144879b3f6b3b94f25a00e8e8f367d1a572b38444c106ae721e67c413de557947776e34a81c861b34680983e672bb13b1c7db1dc5ee08305a4db33a782415c6b1a599aaec1d1c7025090da0bc05b147902b7f72ad17a82c1b24fc0b87322f95d31d7f2313fabf566dc262dee40c4d559997bfd125158b600efa9be6478ac0e7a8d6980b4c88d53fa5835cd602b2fff18f7ff01035ee03e31bdf4b74f8429f61183f122fb90bb2c44bf2a3254194b1641187e2806c187c60e48a85de13dee353b2bf1ffe19eeeddf4607df14bba1e8522c079af26307059bc274062227537efd63ce50c320638917a67c9335bda9bf976692173e7a4f297960595ee8a6fe5eba7b231e6ece43eed2a20872648cddf392071ecb53ac587e7eb748195474ae1d04213f145f0ed5ce4d36ae480703c01b0d5b91df1b0c57713901fce44bb8fc7c645ed24402feed515ebee45e59932ba252afea5f9405f2611a037a757e2bf2c449da1b2d17e86fc46001bcdcbf26f676821434162f2551e0a3a5f7c6bb63a1b0e1a47b927b2b05b93dfc3394f7b19323a0b9d7fc9de2fd41d760fe24beafd157f17e2ee317516f8b054f8eb6610b3a1ccf35b84db1d7b7d13c9e2e43460586044236397833efe1814dc76cbe08bd8c0df99c0a67645a2389f7a8ba778b47029f04678d1e523d07894e0a7a6233f1c423da859613b0b4e8b268feb0a4f61c969a02685495217767e7077227137904491cc6dd4567f8ee6bae473cb08825817fc6d2d47be047cb0611a64d8832721d083e877b97180de2155a55aaa549113190fa4bbc4d5ed99810c1ec5c818eef7e43277c26d3bfc577bfd13c1b0b176c59aca548e3c9c1c8219978b91f3b0717653739e29bac7fe38e7360b6458f9374b960d2599f23664f6fa1464431c9b96475bdd8de9ca34c635a7389c6ea560c21f9c712d2cbfc05f18c5e8b23018a7a7b7ddeede7cfe878cab557ac42ef136fced2717c192f4871eb03ffc6af1430f7aecfdbde8477a60fb91050a51c4313014899ecf5ea30757bf8ab94d32690c5f6fc389a8afc1e3a7a71e9e55f0d8adb9ac9d112c02aa66bdea5684acbaff37f141b55dabf523d6f22da46bc321c93c9c783c5c9118ea34cc03c45cebfd5e010a4178c8ef135ce870204b55f4c25ac08e5e988fc2eafe445bd437ef88b2db634f1a908e290824129f85a49d5536612454798aea310275e9ab2048dff41146401df38da4b5978af1e0c67e1bdf1e4414ed057326a53ee0b22479879a81ddc3106cb86370ffabd459051eced6b25806db0a9b25f78ab5d75772f55ed8ac8340fe2752157264134634990a5c3384e99102c7fbb034de520594659306707330c764c0f583a3fd08aef1609239460d65dcc26b1ab2693b88a971903863ce1bf8ee328631fb31aff900b34ac68255864b79236a2f2396f9e1fbb7d93c48f294b4e83348b93279958e8d44b67a557c358389e65bf33fe5d691384f918343a516291c40b1e0faa147ae4da9494c641f46489574aa189767078136a4541b52ef747fc1c64b37899150ac69673b5a9b6d24bb1009481e42f77d5389a19238be55d18f8a47739400ee391eff8947ecf8de765ca528c36691281d522fa0256af98245e87cbf8ff9a4c2edf5df52793928c4792fa4b1e6623a5bd46817b5a7b3552a954669d5a799d854e34295cb0cf90452a33148cb326592eac717eca1c4aeef3ab1105c7855fdf610bfcc1c06945427585d77e90ee1685dbe66a44697ca85008b65bfe56233750ebbd8cf4406eacaa1b854221a68a1c1997125722f871ede71406c418aa17e4484776a174081cf362346118b977a446e5c09bbdb253ca74c45ece7b91998e837c48d471e5c77a64d495f8cc63bbe4cbdb0da1adda4850ffe1d094088d6fc619d2c2f043ee45e2f63ce142054582ed1ce5c700bd1453981d163c49a4a313a32ac65414c04426391dfbec8add272c9da945eee23814451e58f62e45a67c1f247371714c5112e64594fcc0c49947adb33c905b226dcdbcd3fcecf749303d13c96d0dd1ca5b6290fc2039f0de2b653ae59c93db9def3440be27c143142722104d923c54a264ccef64f6888fe77c88d208ee3dc2c75f4be28c7cf91523839887896c8acf3a8ff3d2a23c85793f14ba424e675f5ece611f83681a3fd25048323af3d259c16839ab05c9f7a7f1d9a2b12d986c51f83f1c760d8755d492af66af059aff9fe6adc530fe4cc6aa23e7cfe6aadbb34c5899f052fd1c47609adfdceec0c73b4fc64f47711a7ae94c0434f39ffc9a7f8931d38cffef73d5028aff3596aaf0b2adf8a99631fc4cdcdcc44f6faa073ee5b5aaaff85b3a6799f7137bc2bc08f8c2c38c97c5b39f25a1f6229d05f75064ff593ece571e063d495c58dea39730f29df77d99770f83e8c39fc0b5a1992df83514abb0840a23e43c90fb938acd0c8ddb99b81434be8e3ff1c3c8c7618037ca2bb7d9e7aff9c4d424c634279d429e7184a5f749f59d9870fdaa033e79c25370c90f6432dc93c0746a1ca245fe5e14e40df0ba77cb2c13d705d6f3446c7c3510cc9dc603dcee961909d97d467c6852e4d052179648ef2eb0a8bfe43b3313b0f081d0397421cbc81dd73004a2c8ed0eaf7034b90bbde8c3ed8e08cec5bed6d07f012d878cc77f894bce7894006f40db05e7635f73c6558a797158f4481d9188fb253fe466a17c7398bf592c53f5b271de8c3acb595cda60fff25271a7ba64356524fff0978508962ffaad153005113f52c3cf11cbd254be564acae1e905c55ba51cae11b548166bada4c0ce373a02f694da357273bb23a11187647897e26c4c0c22057719191e7db5e4d1d730881889626b192d5336b5565ea29cc1dca025945c3af4388ed2e51cf486681986eaa16a9f9750e8e99578457e7881742a9ccc22d7e4edce2ff1526efdcab37ddf01dbf99ec4cb0cb7ed0b259a4b8c52232521220942aad7c5a629cc5679bb54772aed65b11c3aff2bc698ebead097d80d91fdcc12a4a8bcbb1ff24a726908a53161f77b6a3bb73b2275e0339374bbe3c1fce71b25bf7fc17cce99766fa8607b876a5a329583eaf1a4aa864a0d0cbb34022ddc52217018fa21fed5a8fefe305f6af98237dd37af087198f03f5381e4973b8af8a392ee8679c86e2aaaa35a8c4719157bfd72385fdb20aa94aab63af3164c5e7fe02f9304136816dfbd0813147ed9173048315cd684255c871a846232729230aab682b3acf12a7091b456c1cee243815e1aa457e298ab5983fb2d0e224cd687a1bb92993f6f3efa799daf37228b36361a92ba4bbea854bde03fa8e451156919280c73ef76877037bfa24cf62437e3a94d45ee960f51fc9882361364bb29290e8362ced4385335cabcf7736f85bade24c96f2b470c26ecfe2fc00f8f391d81c449d8fdcded0ebcb40475ddeebcaf159675b9b05e5fdd28bedd59780f00d861a560de1eff8023c099164712e0352dbd2e603016afb6a2c392a3e9d058bcd4fa287b0a4b80e0abc2ea951581cc6541bfd21afbe8f91253141ff24f41dac376d506e4bbbc902289b0807cce0bc0da2a7ae04fcac7a7506b3fd5c6c0551078afe81edb691ec0b749854e6a399e73bcaa2f1183e298b2fe1d31230e1c0b14c873c6be885fa809e12bcba5456342b9518314b3994176e7794b7f20594ca1106ea8a358e6b9611fd84792791ff0ec533c3f3405f32e8230f492dfd203a86f65b19540adc5c15d18df1dccbd3463c9015e8c437f4bff6be8d41d25d554ea7b0b36bde4d0219078a14e362b8ec7edddd06fbff9e1e8ff7b75f897dfbfeceddfdcdebeff7c707b7b7bfb7effe001060bbfff62cb2dc1e7dc38b9a0875e0e5508c48423e60f894a9a1ccb87442326391187a4448285c3a43830275e219938a5c347258a76aa248d36005e022a8be093a639492a214760c46b4be9076d65ed61dd1a51b5277cb5afb5e72bdc246ffb87b204d2167dadcc88a069ad847e764a7014a5754d2dcbd76a4d6541d066fe651b8d4f58fe79cb0552cb8bf5b0000543f20a2efef93357618bbaf9b094112a9f114201a866e21cf2fc6242fb43deb25fbd41f1cbd72b6a0ad866056bef468a21ce34d8c2c458a65e267949207912de04bf23b428214035454a9b3efd6bbeecaa482f412cd05522a5b5da93421a8715adb3a6a82e1b5b118b1e394401b4269f246dac51010b76b00608c944ca7d684c25358f43278c3c80a3b4e5abee4c70aa1793f49feb57fe9389e6df2a130d302a3c8a76bb7393a793795fce3fa35fbc720435f0f825a6fe3cc4d4593ecf2c70c77866554cab350fa2724bbd61ff6a3cf9b977753e39ee9d1ff78779ee18d9e677bd9025d9f7d0a0cfc237e8d21cb38f19069ac7d131be96ae953b4652a666d578b6bbfee8b877d99ffcd4ffc5dc671fd5909fd893e888471a4f91dee36556401027688ac62993f92bb7e8fde2dd783438e94f8e8783e39fcc005c70f7101ab9390c77ded7c2707c311cf62e478337c3fe6438188d2732b9c6f1e96078a282701c87a1b7c02b3f87410ac0085d89cc9729ceec77672c5a0e3236ff3ead76733eeeff637cd63f7fc7077cd23fbeb8ea8d2fae26e71793b3fef8f442edec6fc235070df264a2d694f931cf55c4a36bc50cc3d2e0d987b8df54a96818eb7a20fafd93d1e4aadf3b1e4ffac3fe59ff7cac80737b7bbbb319a422491222431ed42469103d848cfc7df40f2ab324f19b6578f2680e7305d0d38bf14ffd5f4613fe2f9f8aabfeb93a1ba771f6813da5dff394039e0f2c3895af8bb959dbf4369320fa78d904884a5b77fc3ce2d782f1e722fdfcdd59ff6a703c199c5fbe1b1b98d977e7cb394b027f102d96d9f752b8a49840991f078f62f2801a6d22f89bf79104f7e42ece78d62c9146fef99e2fae26a371ff72321afc4f7ff2e6e2ddf9c97670c4c928638b51f089ad8128159f9f03a1f7f7af0221dddcfbdcfbad80f0855838bf389f5c5e8c06e3c175ff2b91c1f5b7f04907ea134be217a2e3a5b0a8c3fea3b07c3514e99f0fc0bbe1f0e51daf5b0417d7fdabb7c38b9fb914ba7833ea5f5df72797bdabfef97834393eed9dffd8d768f062c592fb307ee4c2681ab31475d3541c6ef2675ef480f731dda1427ce925fcfc23a6829ec7cb8827add941ffc9f8e2e482ecf9217b0cd2fd4372163ce0d524713825973cc91b3f91e915c1ec699e172dbf1ee43e4ee62c099fd0d119112f95951d9e3866c498d9312354fb833ba962c9e3d576971fb0561075797109b89a5cf5fffbdde0aa3f9a8c7b573ff655aef99de8559904b13b8b59d880176624645e9a61260f7e3f8ebc54a13c2fb2bbd3de68f2a677fcd3c9d5c5e564703eee5ff58e417935f44b665efac6f33f4c937871f43b18a35f1450f010a387f6f04f41343dfa5dd41ae8ef29ea405fd6c28372647c713139eb9d9b45648e0541123c6f0968cb8f712e205f136fca0f767861a1d100b7e65bcd40a8bcbdb7419266c5ed45981958de13cefc389aeadf703329ca686ef3c820114c03f70465527ec781978a8c7d1b877a72f10e7434d461cecdb3cd6d2e657079a88b0006fb798de69b30322441acd5174c306c203804a1d2bd427d7fa0f7fed9e5f81703024e703b18967a090e14f707caad60724ee8e68e4aa43e1c9cf74d54be4cd9659c645e78f43beec87e29428b9405b0b1a777e7309cab8be1b07f32b938dfbcac40d75316095ea1c569943cce584496118c2f89c3d0c05e2f2faec6bde144a8c093e3616f349a60c2d0d1f86a70fea3de1f8cea7bb91f4a72aec43f14fb1452f1973bcb7a9757bd93c1c58f5717ef2e858d23d6e8e4e212addec9d9bb715fd3b0aebc6910ff98c4cb85625da05d2792a523c1c0e29c2fc56169f6d10f9769b0c2548bd92c2f997998cb6b91047112644f157c8c868393fed5e47ffa571728d2543046613045be2125971ce7f3b2526d76d87bd31fae6d3cf4ee58387a790f5720084537208127d7bde1bbbe8ec5e881c96e78c20ac49bec435e55897e97c7186f30c45ba3c4652b952ecfde0dc703d1e55af3f06c196681ecb56a1af22fa768857e8f4e0df16a9c78fe8751162faa46e3e872707e2e970a526c7f84aa8786cf056e027f4f902c594a4767bde1f060083c4ae5e3a089a7806ac4459092945585ddf8a2371af7af26c757fddeb8a2e18c63dc2391f7e3e3d58d8aca8169603074839f2c0a837be63ff92113614198092abffa518a95116364896733d9470f6c291217f9a2481a64554d59428978a9f0a72a948229f17cb8620da524c8e4917d5e32251eee38af53044e06bde1c58fbcd3f38bc969bf87f470acf3aa93c00be387ef49e0f32bd8552e15dc932cc8427c17cf832c33f029732fc7c38b517ff2e6dd78bca6b714bd1cdc1b349a81f225a7f9459d5ff57eee5f4daefb57e3c1716f38198c26831fcf2fae74c5f324f11e7169b1240b7c2f2cf5c26f7ce2fc59bd20b0da4feffcc7615fe8f0c00f7b57fdc9314cadb13bccc98986adec4124f3f0524e7a594c16cba4f84cf6c6179735f2e6623cbe38ab9161ffed18d6ddd5e0c7d3f1feedce3a4f73fbab3ccd07da00077e1c8d560f975e364bed968cdcb8ddf1a6d3db9d437273bb7366d769b74b5ab4db9d59ceca72fcba459b4d8b369a960dff4b2d9be003b157cecc727cf84ceac5db94369ac486ffcd9c95e3d7096d36f357a96de16fcb5e59ceccf1b12ec95fa6453f9fe6966bb57dab411b0ea95b1de2d266c7ea904e0a3f88f89fc51f2cfec3c2ff7d9ad789ddf02d97ba36a95b2dcba1adaed5b25a29ff415af01f8107020f0e6d75f8bb4f322e013162f971b89c4756c8eeb31c3b4d523fb58f01dc3aa913feafbdb21ba571ceec46796cd77619959fe65693d88d53e7da997556b6f369de20f599e55e3b33171ecf1aa43bb357f65a1c5e7767f606149eb6af5b9ba6cf3e6d6c983d333290c624363a7f0cbe99653f0760671380f3b6d5fdf326e32c9f0b44febc4beaa72d39333a2e92f8d1ba8bb32c9e4b4cb4886d6f44c5cab237cf55f7bab31915ad8da8e85ab6fd6712a6cd91d19ad9ce0a5694d545d4d8ceca352023037dfa5fb34238202bcbe57dcfeb564342d2f974d622edcd14d87e0eeb8d3f80751d11596c794916dc63dc8940468334681d087d655506a77534b3ec4d9cf4c5a445a0b3968e499738b3d6266c6c02e1d3bc435a1b4bcc3acf0301b3f707dba820fd3e0ea72c9128a7759bb4af9ba7766bd5e628cb5bb24fbbb45e6fae2c8776bbc71dda6d374887baae43dab4d568903669d26eb745daa7b46e7f024a764edbb461b7864ddaaeb7a8d3f5e03b9601daae5bb46d5bd431312177664363d7ae4febb698f786655bb4db455e43bbdd36e99e6e149f366d76ba43ea12bb017ddbb45e7709ff8bdd131b6423fc095dea74da964b9deecaa6cd6e8956086d36ba005cb7db056ce0bff6ca6af46c5a8716ea8e689123a0ab22394816a117b19ca45bc4a6cd9e4d1bdd0ee17f05302e6d3468a331ecd2ae4d5cda6d13073b77c326edbaf0a6397469a743ecfaa91d5af88938c421aed00768a713bab4deb4e0cfd07689dd0c1dcb86e96a5b6dde6ad30549effad4695bd469035269ab89b8a5754d8087c14364f90c0c73097b836c127855da53d746e3d3994d5c03d7da7e01c188eacf4cf96695c8b69e59821bc1437da3b909fe4ddc6ed6a860f7b7659a05f74f0aebb71ddaedfc3110ed8665d75f8c67a0ee664b4576833cc36a9e01a46eb97facfe73ec7273fd32ae352dd425f673c06d24a43f4cca75e26e5e2ecfac8406d95ce419e49cd9c476665f0f7f19b99a569b93b1fb0756ea9f48c6f669fb6bb91652e1ccdac8f5fea5aba084e8398bb292e66cd7612add8a2ed82eab4b33ab3a1fabb256f9690e42fb8f50966b06a762071ba8635596bbc6e1cfe224f81447991796a493dd246da349641c395877ee36403dc7052b38348cbe3b732a0aa8b1d82665db880d95ad7549f7b4591d805beeb832812bab82096011f5e7ad9074a3f1011af35610752ba8a802641abdce776cd2352cf5af1cffbc61750d54f33204580de21814963f0f01cf1a8edb2fdc16696cb3260d64dbac0ebc8d8e98e7f9cd56ad99062e9d94651e0014d7ad4ec5a88d0869e3c237c055a5919563d0e6aae55e6c581a68edb47bddae12e5660a88a23813d1d272fa69d3210e6db77dea8251451b1d8bb6e1af4dede6b1dd22b40d260175dad04d83ba1d52f7b1b7ba453b4d6af392b4d1092d9bba0d827f1ceae27f36755d78ddfc74d6a60d62d769376c51c7b6f08f435df86fd8a436e9d056286a7d020b5e78855ad46d848ee57cad73a3495badd07288736d3750ccb821fa2c6dea742d47fc690fe1838aa8e2720b89299782a068fbd4e9a0ba6051c781bfcd147e59f8d3a2cd9905bc04ca58b4c93fd0668a65e17f68df9a5490955d76da9a46539187dc55e39c3ad74de19b0138bb40176538476ddaee900e69d326e970ed643d98f33a7166cde707dbdcd88a11a1a98a51db9e39cff7e23c03ab658475d4e103eef0016f0615e4804966afec7a655eeadbf032a85c3f75aedbb3ceaafd69deb4ec8649a83933ee87061d6465f0cd9b5ca688381798e0738873b79d9ea470aeea364f83b855178865a30ba66d0f714937bb9b1dcaed3206db9bd4f3266dd861075626fcf1a9ddb5a8dd01eed470e16fdb5e07b82ed75d6240778336bba1255a378f4c3a773ad4255070b3795e194a15151570a7f163a480d9f12deaf23902a45277d825b64d5b62b55bb4a1a0548857da1abab44d3ad43d066ae8509bb8002fe1cd096873e3c6a5366d5297b643744538d4a10d78a46e0a1dd8b46d51376c5af0cda20e221b710d60b572082a23d1cd63b98575daa00d7bd8a66de2d2f61a1ce39fd06a922614007e8f7feb8a8f2d141f0dee37ac3d846e48073a342b292d8099d64d80eba4d2a06dd2a64e37b49a56d3a3dd5613fe53bd8d12047518b46d135808a14b9d2e71d12349bb55f54fa1962e925f5e7ea3731167c3ee20f13b5da47ef8a70d43b3612d3b164e51656c59bc284f0c400ac26e088b0bf85c8585a59bcd99f2124e55092bd62b11ebb543ed2eae55dab64d6b8c00466dd33a06c8cb8bd8a450a976346d7687a869c0f87c0bfa06a4b9b4e15a088211c96df8ffa1ed1080febac2e3d32df529847ab950314d5ad4453a3a06b963a366e3129b7408e0582e71a47c60ceb0de5cda405001352d9a7b8f5dc1dbf9ea1cb6498336aeb9d2d3025d2a0714e16cd046082cc0a5aeb6c0694b4cb374ebbb16c0d034134faa18ca8a8e08cbc30dad06d71af0ff1bbc01fcdb5ac76e86b6435ba47dead24628943d138729785c89138616771e6b684a7366061fb71febd0a50dd29d75a9135a42d334cf40c33c03210cbf047dba1999d2dec851e910bb6e62f70e6d5d0b2411e7453388b302b42628ad4e3aa49e3e83c2e728cda58d95c49325f0549975b924ab42a63c2fe96624ae173269c69220fda030ea660364a3dd097183a7ee0cbbb4433a6183b69b964bedb625def3ad0abb0d5280365af84f876f6b296bd9a20ec76897d63b166d36a0652b6f9ab4a8ed6e340b9bd476870eb027e81cabd2badda3dd5617fe13fcc62155968a186b02bb6a3500c08e236b0f5bd4219dd0823161b3f81a75e0368e500c072a71d7a5bae7e4f096bb16ad7768b361095cc178daa44b3bed6bbbb921748076da61039e1cda6de5b8b49bd406530ec00524750ddb852ecc71d7a2ad86c5b1adeddf2fb378ee65816f2d17532f636911cc600c1ae13a26582cf0ad451c0b9074bd01f2ca2c6df66ad076a3d7a6dd26c13f52ede8f87582a12f4ab4cb26ef4787385e937609fc878205d0d6a41d3bb469a30d5a4abbd7a69dae4bf85fd10b5ad0ebfdf40ec8eb166816a08e6cd09f86769db450a54073d6286d158dd6210e17cf1dae4c801474ba296d0243b1c5aeeaa733bb45f2a0887a0b34285042e0470b3aeab409fce9818ed422fc2f1f3b703787369ad7f6c65df78ad9bec9c334b38c5305302ae475e74d1f982285dd1601c500d481a66553dba54dcba175d0d76ccba19df6d0060581365d1fda7768a763352870e1a6d5a42d606eae65d326560012ecc2af868d1f69d3013c209a1d9fb66cda69c14f90f6ed068a7ce8c242568e0e8646933460e5dad475488bb63a384e8a5a6f03fe748943db0e1427366db6007ee806de35a8dd220e6dbab0b06c58f10e857562b7f093e5204ba44e47f4d7c62d596ccfe2edd9f0a389105b0dea76100cab455b6d0d8391e507891fb26265d68f711900bec58f6dc2c05ccd9f2c673215b36fd945300411249016b1023a441f2ccff7e365a46c12016a80fd85166d391605e6415d50274125ee7600314d24520c370841a8d076dba30d1788be2355f746d7a24d502c3b4d5a8795d38235e550bb018dd00ec83987b7439b48324df1a3d12575ab415b30fb76db6ad22ecc5b078d548bd6a162cb82367159c1bf6dcecddc066dd9d245d6105b4e2ed055dd85323675a06293ba580fa465bd0b5fd1f10644d3b6511cc0f2734983ba8d104402b139a5d7bbd86013abd00eaf3aa3cd8ecfd91f050a7111d27637e490b67dda457ee710b4d6ec1685f66c90210e755c8b3a2ebe064503616bfbd051a34d1b4ddaeed24e97b6bbbc93266a1180bda60dbd40f708202ca4868fd3d5c2e1e24200385d3e5f218066777dd02e60e040346dfca7eb5eb769c3473436dadcb90173036d751b9f409f0273b7c529ad8df65e7364037e9bc08e9aa90d03835e9b23d4453bf0baf3e9ac0582b241bb20561b3628245d1b70c20909a6d0b151dd013c753ad4c57505c80139d702f9d876f14783d6d10b03add0660726ca6df36152c78626dab0a6b1656c1868aae10a1f4a03f42b585b1ae5277e3ccd17629dd88d9973ed9cd63142ae45ea33fbda396de193239e7824a3d524752cca2319ed267156b603056632f0513ee5b51d7874f4703b9185f290dc146f62ff039b5a0b96a48553b44b5daebc76818f3a826d22ca9a5c70a060e27a84d0cd6c206f54001ba0eeb74173a39d36eda2bce42e005ec1e5ff34681d540b17a9c06961036e17f5bb7a8b9b792d50305b6e5ecd45ed07ab39c720f040fe9216ed36488bd61bfc17c6a0b90e82db72b0f52eb01468d7e5fa0c2a8536ffb7d5e4cbb84d9131746813d638d030420f2feb40d44d0eb30db4d3e6507671a875ee5c47ae0f4b0b7fb41b2b5a6f71bb157a715b58a5415b1d1c8a6b8356ddc59509c3753ad471e145d306c5113b82b1826ae8c26c20f2b8c2c7ffae68ddf6d1e9d7a54d5cddb40bcca1d1c2b22dd43a81e8eb361f7b8336b0c936a75922740b8747010921ea52b70382ab796c6199266da2446c11fecfcc060532056eccfd93803a18a7db46e270f8c641c3c1962c68e9d3996dd36e9bd48fbba0f9d641de238abafc5723b56987606c9f4b1a231b04816343978d1466040c2194719fce40f9c6f9c5d15ac0a1ebb6e5105899750202df464ee450a703464e9baf679fcf3eb0bd0e57649d0e7a904027abdbc441f8d1f5038482de25a0e44e084d58d804fa2a619a5a0dea74089f0a8e3310f35c0dd1d65a1c1661e03698da681f816904a61970b495451bdcc78c9ab683f69fbbb2a87d8cbccea536b1eba077a0b3dbe111c68a7926bdd8d2b49d357dd00dea04550ad2b01a48dbe83a76b04fd7723f9db54873061a8e10d652568bb0bed67513a47debb475dd9db9eb8a69238d7353ce316fe05cd70ddea74f739b6b82ab766839f03fe25cd74f9b2bbb558dc33038cc7508e65ef241c1b78391a2b8d765739603062686e681184455069e0a7ed4a475fbb44141f000bbb268871335ed382b1b8c361f2d0eea34412037dbd401bb9e6b240d1fb415e03a1d1033a89eb9a48edf89fc0e9fa19a4d9b20431ad7b4e31edb40bd1d740c37049000ba36b88f4a60747d73a0ce3371cdb48bba627b8586b0ed829ad0728f6d97b63bd46961d821a2c8257cc6f0b800ff08629bb6dc21c8c5266dd9c2ae758e61dd364145ae93268cb74e5ad58d62c3ae177ad4516cc0ca6c7151e2b63f9d75893373a9eb843675887bdabd763e9db9b4d521ce697be59e3ab4d1814f96b2a3d89ed9ce4a537c9380ddfb5eca941d7197763b33cb359cc3306ee198b68d1a337765d9336765cf5af287bbb22a71cf5c669f6299c6ca8605d5c6232036d0f72934725aaf9a4c552cadac0680ac11c43250584b53c86ae19a6f854213b37dea822ed8e06ee5960bff80320a469103faa60be2cb01952dff95a226e3722daded00c76ea083a50d964ad305b314f5dc2134078a56887a501b596817fd48a8a136b9cfbb099fe55774052167857f1b36fab34ac5f13dfcf2b139ceccb147280e8df0d2169616609acaa2f2d901b3cc0539d36afbb403ab93a03180ff62e031edd8167eb15167257558ce6ae8abef85fe32f4b2580d2b30b13313dfab6e291af6fd5a40c20d3cc2b372789058038384f287167f00a6dcd6cab5d5726da5dccc72f0136ea3e2534b6dd09975b4a307be17b268ea254af48ce4fc207172c05bfaae9510429a0cfa34772dae88fa75453c1227b5401b07367f6d8396bbe9b3edebde67b18d9efb706776015ea3d8426f81a02b0ea0b8fca8835b9c7468f1870669c0d2543eb5944fc8228a6f33cb151fcf1acf6165e482a074ab4851513d6789a772a519980adda15d4723cde9f668b7d982ffa453a44e3863175bbe2ea828dcc933049d9198820aabbbb30e58c636a814d401f26fb509ace0468338a98b7ca2ddc167cb39b52b81cdd5a31d9fce801eedeb2630c14ff32669f996c31daf689d7741714bf90f544584d2d720fc337f87f4095606d47308d7ea52200afe3f411f82342c47c364c2327dd715d63b2a54a0e8e9e11b1e6d749bf09ff415b86ddac1a81182962805b450bb0defed768a2dd4dba802d86d286641b10eeafb20b41c6eb0b81580b4203c6cdd426500443eda2eae4b6df4dfbb14c48e8d268add4678b1ff142d8c0e7f08b15c097a423bd0797b65b50da3ad80548e8c433f20a8f068cc76847a8c7b0e2e6df64a7da1d36d5546208080e041159f7243c846635e34570143d951437f6317115db77983a185483eee009d37c128ef00436e920ec100888ed00fd0218fd3568108a774568514f5386da658185a59fc58c48a75c04469d136ac33ae0e721f01ce78ab306ff13ddfa9413bb4c9dda8dc3074f16fa353de8f50dca4b02aed0e987c2eda780d6e0ff26679ab7c661cfeae29204092e16e11dbe5ce7a10781d0ce3a28eedd16eb709ffe57ba10e30097708929bd8ee8c761b216db688439d86c7372a78b92e820c1a388619b541796d1f379051b86095758155b8144872046c031d58606251d7c7d32504750bfcd5e1b12b60bea8c77b6c2edfd102e9229be8a0bec17f816d0c48efd0968dd6628bb8143d388053743da0c20c421fb7bb5cfce234b84f0cdde0b833ede058691774c90671d089d0c07e68a3833e2cdb45fd80ba4df8d0edc064e10bfcd044673b86b775ad06e524d0a44d20e51a113bc17cdfacaacec09c812ace2d508b3b921b0e5864802e8c9e73ba60dc02463a2035dc2eb683263710018ec44ef1c1e580e1468d38c70352197e7504be6c80f3d3194899367550236973875a03ac121b3d1616a04160127d97dd167a3a1aa9858842d70e60d3b784d71ad5c7164cbd838e320218e078445d8dba0232dbe5a875b827412c13f8a62eb599173d281b43808336865710f7f96d8bd0b5d66d7e88ad121774534390a7ba35b1fd66ca27dc8c84f562d980d08e8b5f9b40f6366efc3747b01cf8c12d7488b83e9682670b3fa1531e5816af23fffb746693229c4d1de4d0450d7c73bc0228f82d405e83b65f128d115aaee51e37b8da401abcff06df4b563489d07289db33c45490a63e9949a63830cb1b778640b72e6d0c8121ac1a9fe62d584cd58dca6aad95d5c4336d962b30e79276b846ada91e76a01d60934e0bd946b383860fe1e60f70230b8fc1818de6806abcf1600a28661df431b64128359aa4496d7b45ebf67193ba36c8297cd52220a960d25d1b1977a3416dfbba496d10f4e8ac3ba60ed02ae2bf4d5bb6d897d4b7796db4495c2e0760d1f2ce864dd20683ab0390766817ec77db471f21d004905203f7724dd485e7661bf6a65dd66a00aa36e799ea80c89535a9ae1bd5cff2d056ce86801d0c5fb25d43fcd20a3a6b8716ea3b1df7b48587b3eba668ec0a656050206ebac21f1fd429e0350ef21af853a6d417f99cfc195b257164dd79fe87472fc90df23646af61f018468499221d37855eb670eb77f349ea3272b59dfe8612b9f6124631e4901b865852b19b665304237245189ce53eb3678da124cf32ff063f545ba61aa7c4933894f771a2ce835d374467ac9cad4104c5a94bc02272d129f7d220b42ee9224f5f9fb4c360525547a55a137f90b43064e818d80469d3469b004f693ba0600388606fd830a3381930411b8334d7128b6e6bd461f9f118cc86656851c17787e3bbf975f8e60148a6b84a220c24a0d4261e8628051b4bc815f304b94657827ddc01bd1211c78d136192e8f2733dc6c4f800eb5fb93655680dbbf92db199df127bf92d652bbf2576f25b957c2e2232a72db2b9b495642e6d91cba55d49e5c2bbb70c11cf36699b194317194335985ee568eef6e12e5beb8d26d66193f6a7af0e817871269cee66f469d1bc3669637e846187b649930bac97ad6e97809e27577783afee867175bba6f0fff2eaee9eda1b4f20fedbe0514fa3034bd79ce2a1cc6cda06b7bfa2fb014d0edbc08eea2f6747aee5be841da196feef83d18215e6e8e44cb09133c106c8469311b19109b691096224d9da2433c025a1b5ff9fbd77e96d6349ba45ff4ae28e6f0632f29d4343130ee4d10638ba136e5abdcba749cb106df6d7fcf517b122ab58244b9464effebe8383035b7cb35895cf78ac580bc1d00fbb3affc38d785387e7c46092a197335042728e361c2ca20c110de61125f1672a142ce59e5a7c604fb211950c786c94058c1d0205f7ea90b71ee82483a04130c9969e5f765e23172ec231026e23e299afb88bfeb4b7cc1600ba2cced2fbce338ea719fa59faffe8499a7383266dd07927ec9e36737b15158ca8866cd26dd5e833b9e7561ed91bcec8277aaaae3c8a6b0f8834502e2e9e3e27e31e0325194be23b23ca268f3389d3c76e271e7ea0f4c8cee8abe13208bbfbfafdcfe7b96dcae6c6e31ac8fb8746b55214cb232246948cfb431c3f8aea812eb1171c7948eb0efab17cf4abb4f60b5c640b95881fab33deee9e7f7e9947dab78871390b281be2d8fc491a640447c321632025bc0c070ae153a004e2193e9704394a0f0e194c84e08a6144bc0dc715237ac61dd0a02983c3945bb0f1faec6090ec9e37f386c6185cb44a589c81fb4461284349a8b3610a9f2e4b88a4ef9776e47301d1ef592a0c8e9af25633a7773573a584845b64aa5156314c51a000cb0300a5aee784b3692699b6258758040739263772fea147e5c575a814b2ba0eba508c8b840d075d318c5cbd330a9b2c546c8f58fbe9b8560f6c7bdcb3029ca8103be0ad8da7583e056a590684dc9e41c25b875cd3bdb1f0f3fb7c24d4d111d17dac4cfb5831d5945fd8c7d861237b3da872b40840fcce4ec61ed9a38f76ff2620f911e62910870a260ca664815303f8b2635a71e88a2c20cb9aab10018fe8abacf7c1e8ad46042396271dde29caff8a4555562f23df43ff66f46ff01aca2a0f9c00727558c7b269089fbed59333bc24a7b32ff97a54d8f4a8309cc99dedc1f7ffb4f9267bc432a47f6e9c4fb6b953dbdcfd926deee1799b78c74d38ed23c29a9a89aa0561fa96a9f2cef65225a7f17a171523887cd2753012535221ef09b982ca3b6fd9290b9bcbd88c599196f2f5d7b78ee72f4f1650d3abbcf76de071890415f42cb7989da53dee9da5deb760a42504cf54fd78d31f3cf347115f07f2b0c9cae265f7ae7277e8836434f197062dcfd614d4bdb65e2be6db698ff4415d5e8c789e036119ed6d2ceb5a3adff3f899ef4abe4d1bd3c1ea20b4faf4a2f3fe9a4d416e80d40c96a9227bcd8afdf4452b6a2300c271c7b2f0031baac838c65d55cb8dc30eb7b8d9507541fea63903e81cbe6c467469d01c752e634250ccc0b8a6d2a4df6287e757fd2f2797e730be0c18df91a966c529c9982f4961a04cb1e0d7e46f0b98a84ca266f18a6bc63d72070cc9e0c2140b628cc8a474b2c063c3432d1e105759363be4155d5bc9192e9d49069a30caa7abfc1bd09e28c72ae48b2c43282671f1aa25786ccf0aa09eb465cf5e725094a1bca5150868c8794f04e9f55c34c70944b036cacdb9e4ad62b649b1cbd2aa478b8fc23467006315080b58ffd40a84ddad696575c3cfa310c3b5ad361cda16ddecdab9d9b188858406924b47c7f436593a91bca1cab2a04de4915516da76dadb42de44ca67076672bb0e6723c59c8d14adddc06b17a31e42604f76b3db9de3afc8df62cd7d47e8fa6edeb29af8a168f9698fa79e52550ba64d164c33d5b45f084732ff723c7277b34f2bb9f3e6dfcf3f2fa8dffe464a94cf1188ae7518fc91dd691f8c5ba5e959316e55d761c8f26c7e62fbfdd3b739efc5e229ddc055fd717913d6d87e45beca2ff0132c9d37981c1e00b8927d01b30f4025a0298cfa92f8a74fc5818cf221d0749b0a26eb87acdfcffa7d6489fec8fa8582ef37fd7ec3f7ab7ebf4cdf9fe5b2e789e93fd8e93164f137e9a0a96e33a6bad9eb71f06ebd6cd7ef9b97afb39a91420d15211fa2c93a5a5eda788318070bdbfbcdc05980cb2e70e9b013d7f8ef3b9ec3e91dad1f2220957fefd95e1dddb2b37fe7f1affaf07098474ae04b44409150e15229c019ca4a80c1097b7d62add4f294fdc15291ed3f69954d86eb221fc7f4c9466fd506712851d3b71f0af9401e83b7f5ea762a857cc271c50cc68f020f15500a93e5369e3e635ac4c72cfb4b1d025559cce4a5ab6b7b793a1c9ee640e916648a84ff03c1efa92736ffde04cadd0dac89b9dbf0db1748bfe76ffff8fab29fb9dd1a8cff30fbcabbaa9adfaaa4ded9a89099f0389ec9699fc87b1300a090711ec8a1ecd11542657f1003eb1cdd3dcccbd7cfa1e0ad16e96b1157315edccabcebabea27590c65f56d6d2a4d758ce7b795e88773387aeb14e800cb38ab51eb3105b9b7cb654b1f9e77f3fa064eb3bd6d9cf2e38e742ed43d8fc6b15277da926715bb32bad2ca1febc07e9d64f7cd67f092f68074c0ac9b5ef726c0d476d78589dd83517bd0b79b88189b68f2699f4c3cb3042e141aafda9d12e5cbc6fbf1b239cc2b90654b8e0340705b9d9ab1a05c180b5bd2e8fd2347592ae22f7a358feca845e3b5cac803d448355b6d07f11e525e535df06956a52322af1d099c6dc2aaddb20670d4b26490e02f7b33e1756fc6205eaae0a398a859e919a6b8baac8cbae7c8c4b895353b160a5e56f3a4e1c147ada3f7bfe8c528678138269e7ca49a75410b9152d67678af1723e797905468d9aa2f242daf17ff5107c6f216bb5f0c32cea8298834f666b8fef975212fae4b95bfb9eb52655f93b6b907a13fd6eb21fcbc9b338eadea310d690d8989b4aac738a47538edbd0dff01350ba846b03f7d2e26acc291dd10d7171ed4cbd397af3fec769ef788d41a62bb83e5a5f0cdc07941db417e3399f784718e360f96f351560a4a17fc819d1fef3091ea5df11c9e11f40784479342e9c5187503df3f0cbf799879b33c9f6daef69b60b1da7942de0568ca0ab009bf0868aae637b065ed062ef432c38e789377e213052b1eb938e3deb2c9abf0e865d1cfb2c92b861cb7de8cf875e01041c07ef7037b8ec6dd3f0430f2ec8e7e158e9755263fff7c9a8d5f6e51cd4f85f318a6eac0ea11c59275917c0d9bf3b1a9356fdc2e516ed2f23ea5d39e4a424b9f3fe452a6108e99ea199acf1687abb93e82714cbe13d7957c29bb4c31a22ada17489150add5b847787bf28163a118cace4280c28a599b3f9d7f0ec9ace8d79152bd3a8beb82969f7f3ed9b99c55347e989fb9335aea353b6b6fdc5ab6d1cd45030fbc9ebfe28d3bf2e973230e9972da04720ee0f6b118441b4e669bdf92e34a2e5572a1127322079bcb7fac0b28cbd6a04cade27ba463247e677b7be20a768b5c3e796ad8c1e5b64f9060ea964aae1a5f41494d33de52c9f1f499a55dc5f24cffa1fe7979da3f1f9f6688bb9093116727fc52032df4059347498eaf01cd978f89a27f4fcb3db2278ea8134bff89a640267d88d723325e0ebe8b167b393e7db12f9b6f7f3dd90b343b840a5681583cafca5aa9c25a5ee3d824e57d09067c0ef050c55015b32d3d48a383a5ad50cda651284686351084623102dfbf43a160b545ccaf4c2e68a551a71f112780c55389c5827dac117be31f1205cdf5040a1184a0d27e60fc7af4ca277a93b43f7c30f9b14c2bbffd79c1d778d0b5dc8be9e31f2b8124ca955da7c70828c5f0a73d52c493f35cbd5a4fe21ee447c5d66c2de586549aac03c6efe0de2672de7a2a72a53e7ebac59ac844430abb679b4d907f8773fc165673d694446db6d35b94c70a0abd04163e24bcb1f35504b27d43c5bea6683b230f0e0f391d28edfcc1d970c4cbd9703858d8aec1cabbe285073333656e9d8eb39b3273aef6ec90cf95efc1a26ed5aaf958f1dd283d288f0d6a9412b58aef47b995c7b37efab2390c17e892745798e77c1e97b1d57bb2188bdfd9477b4fb5634689376320b0de642dfc1d4b3c0f63892746b1ecfc49fe0ed6eb64f026fd0f40ba40f8fffab4320b4d0372ed8f36e2bc1b7f6cfe9cf1155413b77ae2264b0b65eb0f7a015eaee42112361c6fb4210f105ef47239a7bd158fb2aeabb6b45e20de3a8c875a074afe817daff9050a278fc0e648a5ca62250e57442b6625287ded60ed7c3076d3d118eca87c73bcd9353fed9e7e3ccd8a425b03bcea6e267daca77b4cbf1e5b1a5101677cc00204478ecf4c6577f949b398619d67e861ec16d0f1b066e997b104a7bd8de282fc0fa9727e79dafdd8cc80e48f0ef56cf9b11a275e5dda25709d3f968b7a8b2f4f2f5f8f4f5dc2722a0c2227be482e83a51ab7886bc0f307071b70772ee0550f15028a9a2d56ea07b03a31502cf10066a80c48826c5d4ec3d1b2a86b4dabcba48f71d3468c52221f11a00ea8a8261fc4c10f0db5b965aaaa02211c71f944a98e0b8a5338053610f1de5c5300a2d7f248649e110f8ac0278abbee111671cafe0512c5a43450b16ac82828551612b7a921742e87f30dbf1f3dc57640c6532e2c47e21dbcb19c06a034588d010076c0f9a7610acee03bd07cb83667c6be113342f24e8ba4c5314335f2841dcabdaa19d5c63b8d3a3ba45e9cd72759cbd03b2ca43f8b9d9ccb8cc1ea8e1d42b1b3df50a629ff1ae513db89795569ba929cf20184693e296f1a520c08e523f61aa5f9807094b32eb8ed94736d2cd7556a11c6c5960ccaae91e4a481b136cac533456a115c0a3bca62a3a53050f53b02fdc94935516e35503b577f3ab25fb5a3e555b9cdacdcd2c12ff0788801d8c0f523d7e095958f6246084bfe7bb1bc093c5cd2308590ec67e93ab905e6131486ae8277c52b69a007d455062b7783b1ed94c74eb18d08585344662f794a65a3da81a3718e42c82df8bc9c461c916be85c783d0829865313c309745a9662c3d55546a2bf6514a53383a438c3c9914e54245f01d00bb3963171032b851b5eb9987b984d98bf3a987dd2318d510a2c603ea33d62e7ae9129e295ac14cd23f78a370a4551c211a3534ea44d24723941ead22be39f4c76ab24a7584a9245a346d8b4d9ca0ec58a8f9ab81a2379de6a317e503a88d871c9e0d8c28f5702219407b14ed2326e80e082c6be4341536699e4ca2e5635e282e00ea295204e500895768c52eae1fa80d38b1a2a464c3967f91be79c7e59c6803e43ebc5465c37a0856be30759c6e1b6f755a6e07b5a45162f06002d4b13c920c495e9c526ed721e338160b0c8093fd19772998d48f2c912e82fec99a7c33fdfa1647be39e442a6967cf7467bfa2d436c8c9e028cb5c26af4435dd590b77761d5f377fbd6cf6f6c7cbd33cd7528fc0afb5553bfa5559b75538fa15afe75eaa9c48023d8a1fd2e6c2a9ed9a7bfef2d5e3dca766c3ab795c45d3b997873fed19548ff70f3358ffe6716c7efb38abf2d6613e978f1fe5222e7465127f7d79dafef87a550589d2fbd67696c5c4911b1b6d5efcda652d62864d26dfb3d944f9daa539f4f5b0f9f39c4f3be3197ec53cb38a6c857d3633c9189cecb2f96b0e30623df23b5b2900b491b6a0616fd576825fd00b835d2396d33e1be09a0268aa64298cfa0e3eb393efe3485b2af0121142506a59ee3f87fca67fc5207cdefe9ca365da6ff05ca5c76600d2e108bea9788cc365fe62fc35fbfcfde9dbacc0fc4ec1ec0d56ff0d5549d02afda288441e11de5e9c415e2ca9007feb78692bb140c1a46d98eab69b35219198c1e4171b098a124b6d7218362f4f735547cdb8c84ff1b663b5617526d9b5bd9a04b0e302354beda102451ac5a3632a45ee1ecb7bc5c46fcfb492876f1b149ae7836c98de50a9c7a42a486f086372cf53843715521e51ff719fafe05e61fe97e7dd6ec664e6a98a5996c454622501153ba9c75b6ad46d0393492c9da23953311993d536069d43373fb019871e63c2c7c0272b5f0eb68ba679b5568093b430e478a44711bb24743b1c968cf811b17b17419f8bafac7c2a49d56020ce1c6061e3922df8d2615e80e02228d58f87552e16b19c55c47163565629d6c05883092266a852522775194ae92627ba417c9204326a2812889d5e923cabe05bce83fc50a73debc96eab5cafd2a85e3b053e4fed04390c230a730ee4cfb866d626ef06e968d9692770bccfe7c2e4aa5abe32e4a3127de48a33515b90d52445b217d65704d310954c59df35dac0be530d831a53d90893aa5e8801d408c915f893702953960356df2dbe586529af50c38015589a12f704065d7602932d08bcab320f269049c3af715501b4c9e3ec923209cbafe426bf223fa1a4a1a0366a30a47da70601493a28ede5dc18bd1a548f3ca9a7056bb920d450597986e01196a05ceabef70ac2b411be9d3ad870ee4a1fd5da3f503aefd50e5eb993a3e208e190c94f05d68fe6daa99ad8afa0d72eeb296b88584bbc6a14cb3179717b9b12eb33c20259ceb035f574328b37e80bb922ed27f3587c85fb1537d2a748d3bb805e7795d4f74e23f7932c01115d024ecca83e790ddd8e05f92f2bef7e4433cba8f380e3c0c6eebc5fb9fb10ed72e53957219bb40926f4948433d9cc9e5d5a2bcf3fffdc3d5965485b50e90917552f0b61aa66d231ff9da52cd9c4c592392d62f153158bd72a16ff5a15cbc2b916c3f7353d2f5ae35a662799322c5de925d511e2077e42477b538d7f27d95132b0b1fc6a0954f67795f5b585cb5d205a295a7cf23781cddf0f1300d87c64e05fa47961fe6fe379a9afb7d5dc2550c538f0dfc65f614e8826be775cbfc58ba2a772da27e37e93a8a54c2754f484ca2f9dd00df2e2aa1d2f7ca4a6d4904bfc046fd1b7fc1eba64a7342b155c21c1b4a9b2e1b48fe75679e314b40eaaaa32db7f2b85cc559b9ee913a2a9cb946f48bbfc4ef5c5fbd6b9689666569cb7ebfb0a62df2e27f97574d07535c997e79f7f0ddf7efeb84ad04390a70c915c7a60ecff61d4a91023ca3443ae1c23b9f2299a384614f45ba711de3ed59a2afdec6106b43367a0ddfadde9c6e1eacc2febcf7f2b88a0b2018d0ab6abed143b9c86a5aca43d43c1765c4b17ad0446324bbaf75c8fbc0e80235f60830f6748701a8b9791f45fac28c4acc1925414efeb15ef3b6f9097cd5f76d87cfbb27b5a306ebcb927abb99c757677fdcc5732d51fcf88efeb2f64b77f2101bcefea8b1f6c845f48f1e705e1dcf767a767fd786d96e55fe8c568f3475bf773367c2fdcf3da70b9cdf8fc6786d87fcfefb88fffce452ffe6b8ec555728c2b694e5d6bdeaf2ba90ec63df5cfd35ec3c5e4779681b9e511989ef1bfec2cb3c56f0593a8cadf5613bc518e8b348ec2eb9094efd56948b8898964da410bdba6ba365831284d4528e7117800dee92f44b96e62b93cca5428ef92e181fcf61d5776d19a5f8f4ff6c7d7fd9ca200aa08250f704577708f3d01f3ce5d3bace44942494e17593fa7e26d045067947b88c4393cedaf22fea3b966573a180bf262517ea6807861a5d4a7bdeebf224c502bb5784072541f0f14eaa3b2b5899bacd07fa40bfd11ce7546b86272ae43eccef5c04e79ed173fb0d6cd2477541b0475fc4eb3e8a1c88f6e4746818a788cdc351d7c2a41daa0c9a51260801e847555d5826adc60fdf8ccd9b8d2fd70cc6d6b05c68e0a0a67c2032a1a00a80bf21e30c543dde21b06c19146be50288fd013479e127a524008cffbf8a70adc3f5de4b1fe1ec1f7bdd81aff096dfa3cd48b48fbd397af3fceeafc3e81d02cef3c9c1db9c9c850005b4451066cac3643f3b89c3e03c712a9b55da08a2a98f3c7106093360ea73d7bf24961fd3afe9a07d1b48f948068885d17f1fcbbdc8f10b71ab4f4882c952477f8a2634b2da1c490a9c4f3cdfceafed7d3f6ec099a36d4f799ce61b2785169fb6ed3b9c9705c669fb8eeb69b1ce55271c3ec4abe7d797eb92c5914db95641da95a2db58ebab685dc55597b20b92a8541d162217c96fb9a13b807ec5a2f356aab46b53d425b386ea8455914c66214eed40b8dea2a523a27ef6441c9149b9c8b6115ce8b912a2813f043b1f5dfa15a8e4c394d1fdd2212c72af71690cba6d80ec8b42b0b7edbf58fe28bca1b043c8c0658cb8eb162f07840c4b9116395b7e5bc569978a7270e615bd790e68ec86bc7038aab5cd22833e829a43906592d666cf8bd817663139adea688298a37d3acfea6b4f8ba510be347fd86aa34eb7820680e3a4c7244f52b6a111d9ba835d2efb3e53dd850e092a2824babc216c3076a90c351ee5c0ce21e2d066826db9d5a1ab557f9c6747ffa767cda3d7f9fe9150672f9d8a8d647046eabd197c099dea2f12b2697c103dca2e9af9df636ab9e7fc292dd8512bc96c904f2fed0d9de6af7adfd63368db474381b8e0342f08fecf02a1612ac1c050e92cba62a651bb5b896d379ecafce2fe56573984b3d3814fb36de15cac116add482b1003cc82430f4c84e06176a81b9f3fdd7cef7df8c7ba4c0a629ec29c25451f2ff49cd2889579728c6a112fb4edafdba7857a1967700c79cf648fde26a50d44f35eda2b459ec2cee5090653b3ef21757fb72162bfabd34368309dfcf3587f0b40c976a5b4f3f5f9ecf50c0e4657195c58fbb92a9cc80889c121a19bb70d3fe85c4610510cacb74f78d5a063eaa02c0a76a0fb2857057efc5381a614141217b90adf29b4499519f7d8ea8894d21dfc86244029167c192a3266853105fc56cf462d8c0446b14124600556f7d973b489a46687ad26a7e79727975cfe91bc8c5ed5c84b1438bd2889cc205ca0b6f1c26824d0d35199306e426a36ad59feb34929c1120a7fd46dfc1256ca9544d7ee44209b80434f458c80cb495064864f5cda54b6c205fda0c90604c2eec7aa219e9670866743e293ea30983f235029e9743d70f05108220998cd458eaba9ba9c7d8b8ef0db60f9483260b81edc38715c6d634d1240b7aec1c6625af6ec80ce7332b2ab2025492a30e68afbd472a151036644df1d20211fde5d16ad8aa08902a8126984254b21af151479d19cf1a2ba4ac8af538e72679fa2fd5c698b67b198d094c0b6fcb21d5510f691f7bba36cf656f304c8aa50294b41c744854da148b9cca170f17ca41ab44b2d5aaba76ba3a20b28105b5dc67d9a2ac29c30cf1389721e49a28a49d8a739ef64581b0f55d224fd3557d9615cf54182809c225610e7ae374a3e6946489ec99464e834d344b60e835a22613e59b94d01cc0d9ea176e1b8fca4eb65f5ca66bb05ebce64c83b41ad2f9d9f617e448ad5e941a3dfdd776f7f3cb937d79fed74c31c3dd819c048da1fe1263604f3c20ce973f9e03790c578af30ba6efc87ef4d8c3ecf2bc916f0fca7d067051535e3b76a0aebc5f6bb4e0faccc52a398a3773ef336f9432ed2ddbb27a7d360d0972686e1a7f872595b1a7fffabef9f6654e031521e5ba18d30f7f474c9f27c7040514ef764c8a3826fed5acddfba50f7e376bd72e9beff965e69ee5e5a62b5d01e70e2f34daf6cce7f84b6d3bb5ac12cebcb765f369cfbc103e3dfa955fe0d8b920b67f4fd1fa3ddadda77f3fd9e77ffce312c5a802ae1dd30fcae40de5e2e56f82fc02e3bdd53d3277112d86099465412e5e060343102c6f3cb5528ddeaa3be0a9e105b0351885fb20d422ce487a4c50b1f714b690ba69d43a495da12827481e4a5ca00a0509844bfad562d4284bf23af4a8fa4649605181683faa1d2b049ce1fc78c5512ba348d7f4e66945c6858e0d326f94b09d6c92b9eef8690f308bd8214add80610e1c91dcdda8b7c9afa0c241adff54c8effaaf802846ae08641ab9752094588b08a6c0d2299b0c05a1d1c5f600da3b194e6a7702e99250ba10c45c97e6a002e617186baacaad947b5c11982d6a9106547d7875227d503c10a3f28647408b9a85bd92b534cc9b4c019636e04cc0bc03f8a4569cf27f74ef34029d4ff5861cd47b55c7876b0f41e3dda8891d2dbbb1814060255b130a8bc5279dd85f1444871a4fbd51df541e62f46d29777290a6302a58e78f505baa54afe7c8b75909b4ee54ef5bc3b65adf7399f2bdb755c2014bd5a08635a86067133fab4c889c8b3c055452e7418600234baefad4e7735e9acf9146cae3d96c561c604e1a4756dcaf9c9af4ed567d1498d59dc217f7a8d3d0e69e2c60ff20dda2b4cfc9346856cbda0809ea4f811c64fd9cebd10193298a270b19d28e8114af5d41735665e7b5d4248ec904b188d5e52ad01f77acf1439f31b8e18888bb290b41e95da0aec738b6e1dce9d8f6da18d40286768734b3ba9718da80276a9594ac24555c214ed25541569a745e94d2c5a20433e9625102e06d5c9464408ac39f1bd2cdb228d5ab4529c2c7992d4aa12b60de5b94f8726d3a7d46dbb7ed12ebee46fb759c375a1fb2ebdf7e2c544dd17af2a82dafa568a575896399e549cbd8119fb8d95e6600ec4ace79399c5bda519d18f5a8f7be79c7e21db1f75badd48a5fdca292fcdd0cea246d9711bc67ac873e23cc8b2063456d4950aed622ae7b45f09953b29192975752cc9b4cc589375c9c3f2fb4d2852e63a56d7da90d9512e4ae53ccd49a7f90031af1e9642865d04e5479104da6e63400479ec7a1398e4dbfa112bdfc4d8d432df8ad8e4f48c083f1dc67200b000badbd561ed8fc22e3b2c68c710a91558f912afb67aee3065ac6c19ac845b98c71b806d98b941214c55b2d2019241d0f373e34e838d688719b505b5f2e46ee3874a70d35ea2ec2d8c85ed952a7957df6e741bbda6ac5f25e4119ae0bfbcc9a68c9ca8232be3e7bd7bcfd6e36afbc6b67efce86f53f36871f37d26c1c35b5092467d4dac6ecc987693b7fc4bee16fd9a097be8578dece26138d4ee7074f58ce230343867aec7a90dd3635d9704b39ca37fa17ba845f41940b6c8819c0fa1bfd445f77510c80800dfa9d5fbba72d86c6b9964b532e7f8dc064c56fcb082b6537f673b2b1af5b9fa855e9ef5736bc516aad20e61d10523c2e7c2d2c7ded5613b1d74546b8e16aef745303a8235f6f45d6ee7dc9f4ebd086f45a931714efab573c6faaa7593aa657747f3440c377d3fc5ba5299e11129bd75c2050e523a1eca34d281d790343b00dca4929063507534c79f5e09b66c672c166db9b0746c137f0ac919a57b98a7b278e9507e1540efaffaa95ede1e79f87edcbd73fcf0d1e8cdfb216997a249030cf337639043428c1bce8587ea6921f12c0f9c9f402d8a01c1baf05193e7b70aebd5f7d7c8ff2ee4c216ca8b5d16845b81f80cf26835d4cd759f4c59f2111bd38426c7c05d577575dc57a3bca1b2949e5261fd157f3df52507e33e7c41c287c1487a5302c98bb3b8f3ab9d33e50099464916b01069baeea5b2dc5553b2304ab66c20388fb4c23b09ec870771e0fae1dd9ab6199500113d1c1d492cd544f9fc35db0ca6f8e7c543e5103152b0a41bcf4a0469f3b31fd9421d0706f089f2a35237fe302f4374d1ea8a088c996c459cbaca1f1048739eb89689d0c50b9b2ebd679d9d73fbeeef6731ea2c1a6a35fe5f5327df64d9a3975b2e0e1b6d2f5551aed794a67354356c893347fd23f964d5ee5751ae2319df6d12c648566c79067e9e2997ef2e28a7f9c33721c74800f96176462cfc8fba8626485d7bc8c46551c2fc2b64b385e688b3d7244a861c9c75bd05bd433b5ff7c7a9ad73243436321ce263ec905152fbcc30bd520766fc806bd8ff9f695fa8284d8ab0df6b656f2de8f3e8ab18b6ac75f6ad7ac71cfc236f48a052c2ef8903a70e5b649775f0f97c0f3ab517db7c0fb361877da079bff77bbe87d3075e9640fefbbcece06feebdfbf69f42bb6387f2b44f63fde6410b881aa5a9f411fcd6530241b93d2efb069b7ca5dcc668964689a828aa0e83f6f7ea194604ca3985f4be67054858179ffed36930ecb14327bc7ee70511eb70042737705d09741a8a0cf0e47f13eb69e5cb12843483004a9243124d7012646403eda66656671c136e32e2fea8c9e6ce4b918079ea990abfc194f31c39576113691d24c9568127183545ca150933c68e24b03e15f34795f00c5acd94a6326938911dee19c7af4a946445651e75b6d06ea322007a252f1c560b76e72b9a008c92aa0a0908122cd088b2016aae2958a1508ad322f5e2962c9622bbae66da202c6ce56e58738452a206041e42a359400cba6944aa2c80f411e1831cb8211bf5f43cc20149426ba6cc1c330af36b999cdf7d68e1b98e2698f88e85bd8c53f0a80d9654185e0f419e0cb447e797e4cccec1da97b3711d591bea7bdcccca4d370a930b17fee5e85caeef5df9b76fd7db169313f75e7cb9757f4ca598c0bcbf942de73d9ef6a3f25345d92cdbad7cf573abee9218b099ea03e8207f570e6589c69e4cc244c2fab10de4b7cb8acca7e67cdbaa760f18fddf3f7efffb65fbe1efe79a912e747f4dc75689e83aa64e6555cbf930ce1763a84e51a391564482bbfbe2eab99e177a7fa9a0cf2525e35b0485c5dd5bfec9f2f9b6fdb6196d2c85153f432406587ac1462a4daa2dccb8a09ff9022b0742d52451978c60e149094ce9004044d188af24bda502b41fe7aa48d02a3827be66e22a85e2bb908f874264f81336ab5a97012e7cb3513c989439c9afc8d61ea8023152f7fe36bb955f239030b99829c889c03f5fe910f80aa5e1a921cd8df5d98b1be62e85f1ed3c8312d0e0ad4be73625c0497e4362d84222379f8d6398515b5d6ae888a2371ceb75f934bcc081fa75da01851d899357797c6eb68f2375d4960a40dc41602975915ff1a5797a980346117c979f976db928f859cab145b209666a0d0dbdb974831b17420951de2f3915ccc9bebc60d0c26556933bdd1d7b166904b979d8d26b354d6629c2550732052ec6e86e2d3b72fe72dba203b101082ccf8f32d5064dce51ae5a4b2fc4dbf5203e596b640d955ec63d6536d2aa8566d20c7a01b46115969c43976ba06198b4d767d396a4bd0dded476d0d2c395ae75122b13269c86978e5c2f05029cb1eac192061e008734e7a1d6189809455c33e5ef40123c88ceda5e8546a2deb475acb43a20a307305261dc127301d801c5a8f1f1c3cd38b0ee827e5d2435204704cc8a545130db4243cfa10612057a5b5c8b7f8290560b770dbe3ac53f39f3e336a5c9d43f82aa732299d15599ce53ac0e41c8ddeea20d677cab67fa3875e404e20afdf7ec386dbd0ba8c89ddd76f4f6792159933a6c9c9aca895f24031ea53159e0d1e8a97ad69505a9a1629366aa5cafd2023fd930c04c8b24c1947e96fa48d2f5ef75443431e2a0e5ebbb2ca0a5040361901bce6067422123e81973a24a043f47c2a45e4fcaaac7a5e1ff8a2b69de7de27e2a5c838abc44045b2f7aa4d21a7863663999199da2877344e09193ff2779e1151fa7887a15f75e8cbb4910fc6f34219e583d82b43df606341d8b02afb0b467d91519ffaf5c070d0fc590bab46154ac0b7ad0a6ad6eb37ce7d78ddd72f4fc7af4f13862d1197840461c470d10112669d834c206f652e2465bbe24c3524bc898ee3813179a5e7f2b9e778d673e9d59ef3573d17c69ec3fd668e6997bd4116a8b895a69a3a6eea3757b5df3eb89669cf85a9e72e962659f2c530755ed726b153b3f4521cd7a6dd787dbef901b8c1db869425122de6387fba6d6648e9ea8493b9a347849be9e70bb3973183fbe297ce53cef251bc2a2323fcd3e5e5cee7ac5e860c365775b0e5aa0b544dd58cf73da84a01b4bcf1a227028c30b1a54251764fd05a37e933600bc19fe42979d01f79e96331b0fa20cf9e124883f43a0346504bcb43f5d6780a0d48870c3d695997425f9d744a0050d25a5a050a90b2ec1c3e62f2c85e522af95a3032aaa75c156593c4834b1e7af0ba9c3530b1627a66d041154b0582002d4a3bb3b47315a33465f9bb6c68196e2c7fe7f503d658d901b924a3adde586cb9417c55da3503fad32ac59ad0ac4ccef3d551e55c921cf431284d7d6b65f054dae6b66122b1da3c8c623146fc5d4bb102d6df795e62b2dd3cd6f53392acdb6da1d45b43085201dd10620008c410aa62118d8650851d9460070519333ecbf2d91e59868fc9e4aecd58d88f72328b96102060f5a651729235b7ad23a2b8b23f9a4cd9f92d796e58c142049f6b008751689a5f4ca022ae32668b26fbc3a3a64d72856dac38860db52a7bd564b3061fd4d0be6829b412b9886051b934b5a31e0ef543d2a935c8dfccd66e7c6d0f16b92c98dad0f976f8da39017bee31d4da0099e7b84cbd1615ca766b6e8312380db28204880e7392dbebd9789885f793119b5a16b411fd01723aac7f60f28e0665ac894a7aace493a90360aae72ff5be1a028a94c967e8a9e857d02a360e7cf30df9197b916b7cde7d797ab1dbddf3996bdd2a6ced1dae5f81bc5039ed6501772be4139222179769c817951bc3c0f92e0d523fc96fe76d971d714ea6dc6c157289d517e3cd2bef58bf9253be16785bf15cac733c8b751980084ba7cf954a3679e5467d8999372babcc8218dc63a2c8c58859960ae2f905053d888b352a39197fda67f2a8ab7e55c36d90c5b48dd594e7d76513052b6e9bd4125ab5bcee024cafc521862b093c39b8dc5d4be00df2c66d1fccc1519e5c46b1ec16556c115aaa0d75cbb90d4bd4562b44bc650dc03a7a1d8e40d1dc821c2dd5b8f3b26e66e234906300056f837bf12a33dc6469dc4164015546a85dc8e4711bae13f403f3a450a6f57f7a253b6ff35689d79bd639282df3c208054fe59799da6336496df2587ab97b519d147dd0da6029d53e675ee3ee7f65d2c8e17713ae14e3c8e388ef669e0c57ede51b9093af45f12702a7f57576ea708db4c9da2ba87d1f2b3fc5b483d6d0ce52a336814e40520898a6afc089c80caaed56b01a0d52a0dc170b18375772807132bf012a27ae2ab5078a79207ad9208551c6227d99440853c081aaaff5efc524e000488023efffc6ebfa0f8d645c7ca0e051fd05ba800e03572c5529bdd453f5117b33bc31d1d36c1c8268559c79d5102872f7374efab4ac2dfccbc4aa48debd39985fdd9476cfff3a67eda173c45e5a098505bdca0fe08689e2621c1d5d80803b989095d03f1480dac528d17a720dc65ec0f5c1b7c8a12b11e008a1291f7bee2a99e89e801f61d652e906145be98cad5db041216d19b8dcb2edc413ca7b99c17bc954e206d41bcabfa163d1218709774f6fc678bd538fe4a150856c9129243d06056ed49c46ad6acc4828d582535094995cb2b75d3c29e9854261412b0ac5fed55bd4ab1b157bc083928e0a691df9e233ce3e820bc0054c7830976602d9bb07a5686ac0a582488423b8470baaf19b36b81694eaedb123e3f0a5a2623dba89e3b359cb59fdbcaa35e290a03651583652a73222106260622d62606ae941a93813252c24d9e8ddc09e5a3e0041ad328adc21ef1523ca2b8d2e18af01396f4936811050608068ffdda40ac9fc58b5a5ace93c5342490c77dfde984caf27b9df248bd379f4f5db5fff7722fddf89f4bfc9441aa559078b09a035174ba2482a1781ec9a19218455756d46b567734b52b924ff3c27a964603ee038dcd375b89844df7ecce163011a6de5b1c2722843df9b8b0c70534173dc4bfe8a8ef916c68fed6c321c07b560a45775f0e85db806251a3d1624957dd502f5225f16efa719e6417a63c7721591821e1760ed4a8972c60fe7ab6b443584ef62f0a10bb484d3e74cde685d6903098469ab4c1701dae7977fcea982cdf2ba355f06b1b4ad9865cd4c360d99b8fcde8a77b8650b7d7331d6b3787b316ebb2c432a2f13e176ebe7ef3e7948115eb6f2fecc59c820783a5abf82f46c1b6ef5d4e3adb77de3a11e6dbc72ac4ffb66f319cfb5e81aa77bfae69fb359228699604d3698f81028c9c25a51a35c4d31a1d37dde50cf2c12c78c533618c88cfb5e4ffc90ba9805a826bd61930d68f1d8fdce15cdfae0e76e67b75f5fb6bb99449edb54d0d0f4d850fe747e5a2f6132f2edc38fcdf69f4f5fae684583613fdcf0b2aceb60c34df5eee933bb05c4dc82a85418c2da0322b12a78924ffb646fcceb79e862c625d6bf1be41ce4593a7d4e50e30f78b2b7de9485736e2b7f8bc7d9cb3e729f5c84c35d7c485ab8e42514879e76902ebf393715d6ba06a75df5d061fbf2747634030a6956f7f08d0b088eeb28de5505f963ba280e7d271e4f4fe5d4a92e1770bf1df6bbbe45d8cd8bc16f228c77e9112632815739a4af2b954ffb669610e3d04171af6121dd7d2ce4e85aaef82e946c210271eb4cee9d65f7bf8d52c83f7e7e834ed0397ca5ec8de2c0b7ba856b81ad26a1f0c04016c05355129f502847544db484bbae8606f30f2ad5b0b955ccb0816250b50e935a196a8cfbce2e12f559556e341ca8aafd419e620671969aa40d38817655809db5722f29258b9e1e720c08b6f4b55dda21444b253eb083ec826ba651894646865ce1d652a9ba53cb2f80bb124c40396a7c4b9b015a69c66b7185522a55b5c9c122d80508a3aac6d544000af94cb261bb0aec9a4c42f0627acd3ba8ba2df26609e04c381238dda04217d9a3c48221e2e0b50523a85b3869db4e55e50ed91230be6ddd4447e4aac242b2ea20ea33858a281684eb4c80aecd04e8bc3661ed6a2d755a03941200d59a383077d93e8f3b1532f49e005b0af0263c94ff127217ad208381318dc23bd488168da3c121430ecf2ab0566528b4f2bfa45e6993b54e39500e3b6ae21ca43830b19af0b59df6495537925746d5a44a8a137380534acc208d1413b97600d181382c045c12ae21fa739d7f5001beac2c4c7a97d5edcd5ddaa62bd664affc38e0c8195fcbbd262729338fb477f1daa6410571583d95ac5238191c525179f690fd05b24de50a116d54e08e4cd204ebad809e122e5bc345bba88226591dc4ac52cf50ca438b06083382f30ac46d5a431e94bab4c1b9cd595c27ea1a8ca3864e8c681971ef90bd762a69083fb71324719f7ff296cc52b541b59d421f5f501782d20f6a4cab0eaaace4145aa325cda0ada175f0f22b152a319120bbc8692c078d2084c89de7c9259526d255a1b3748788f995c17306ee2494bab1387168118fa2b1a8f45fd2bb4ca91e50c92fce37ac71b021815b896a905be07cc04dc01a4a0d51e30a48906a7d3e1cfdb01bb99334401d55b7a7e08c2ab8a58a727ba844aa9cbe198b53b5b94217538a233f585189254f9514c3a8e5e40169df30270cfd6bf3edc735b7bc6c831fd99c97f630310f6e22f37777f85bcd6dd9c1d3caffbd9aee9fa349c33d13efaed2e2bce59e9e77cfdbcd7ccf44583d53ce3b9946a89a84d32c2f59ce975f3e3c6d5eceb88c4a1566531c28e771a101bb57c15d3c422f7ad70d1f6c15cacfa6ab46d540555f89b37acf5032822029025eaa884b1c7a8d30f648822e7014f73a1ad93b3e254a90f89fa017b22da298286a06ac75a296d8f94b7417d7d5dff140ae1e29aab66dc3f947594ec027874f178df120dc80e4d216675934f684d97a50e95ed5fdcc3b655bf373895e95bb72e908e55787c5dca19e1f1b7e1828fa6d5fd059cf0f72c67120276ff8f3a1bc6e88f1828b827badffaedf43496eabea64102f8eb6af1e96ea60494e24764600b475eadbec4001b194d05583f3796b0848008af59db162cab1c010dcd54cfd4cf4b4ebad158d8ee8ba1b3a51dfa78cba0fbd75133e323f3803b15de321f69a415cc2791bc0f495c496f1623a21d6d70d13d966c09bed0160c346520d8a8c13457d84745e81e8ff51c6dc20c6cb38669beaaea18ae9284bd9a13728829ee23e94621ac534c86a05e5b22e928c106b95af31e5718046580bf2ea403ecb3bdcdf02f21bc254ea24231c22ab041f2db5b28a14b663e9bb5a92d2aca73db356e90490fda0164741715a7e050e6f28299fa992ba26744f026be0043a5f2a299752a733752a2cc77a393242ea3cc1265f56ad32c4b6544caf4b686d2245a8cfabc7a144e7f1212b6f65c466db0a1e448a87fe248e7f5b684d7713d8abde978c404cb8a6132ee22daff15c55568614d81896d3aca21807ac7ab7be4f90ae83add17231d72bae45b64b568b20ec3c186ea9c50dd591ddc9801f2a4cd94834988caf0dd596e46fca3d4b5b95d3e78670777e2862a715ca46c62c1793718d286b2bba3307f2282e0ae40ff29835988e1751358514bbbe367ef8b467b1a7c55c9191a9eb892aed81f6481e96c31403c7ea75c4e70cfc12d81ff2e2411babf4afcc17f6af3fae11775e3c8931edabdb7ed73f83c19b8dd7aa7d90f494f2c993035fe408326aa662732c417d117139bc6c796b31551e80d84b148d8c87608a0968a79c67e5297fa8b96158de34604402f5b86c5154fd51c5d519cac7a0784d6cf196b2a1823c6b2c80399c0b60b63d5da1399a9694b4148aae30a518096800ce036cd9c16f59ec7708c920149f4c504b9dd327652fd1dbeedd7a831ddbdf099a9d436566163c74e032f8603d4eb5eda3dfb9ecf9edf37e7fa697d75a2459c3b61d1051bcf540a4d76cc31f511cbf247b76248ea6dc2f4fc371d41e8720978cec9aa53fba7077357adc0591e74b2648192223cd4367733828db83fc19657ce86c0fc65f5de2fee9e5af79c9ec5c83570c0e194fc62bd364f6403a50cbf0c9b0e63e64421d1f670c58dc7d78c43246ec03cb8bec281b681b15b9d38fdf1db16a197919ea38dd75a5183ec97a64d299b5bc197603715d1a96c9b4db533eed6d9d713cbc73007d8ebf5038568104f98d81faed16181c01407c436b7429443b0f57dd0435e7708adb40e8e5b80ce2f347aa0fec64d1002f7393e154ffcf5b03b104469445632237ab11d451c7b62a2160c35d84eda47e326b74e0bf6f55bc1c38df7f9eb95f83e187dea44e3631d9e4e362db0699add364753a59ddaf4dd62c1d8ef543ac59e9f680c2a185f9e8e62249ef2ecafcf826004254e2baceb767b19a688c5f2ddf5fd231d52c9eaa8c6642894a143328c8e28fcb5d52197d5bfc30ad986f3374af2c73419c85919866ea16b3d42d5a83f5e195ec7a70cdcbb7f3c0ebb48a47c4015e29335595d346095b0a02b7d524d34c5a52397d43b4af82cce14efcbcde67a4be2e1fff9c4c90f31f781d4e7b76b235df16d9de90e22664538f960771fa5761ed07e6631bac3ff2207fd61ffd6d08e36e745f5af7e5e9fbf3593db6f5336b38b3f6ae330b47de79cbc61b282095779cc2c4b0835397df326e55e5693e62b2f9e902afdacb99d89f14fd9c3e9903ebffda6d0e87732eda21a7047168df3784609249d478cd7141a868b673dd53605bb575a3c65b8f808af8c070194db238b45b5dd848bbe73f9f665aacc914d55cf0b9f3e67a56850c71660b469b47d032667d7920dfe42d84cf7c221fe1e48acb7c0072c72bd57f5a33931f3a755b1e29de58e38cf168290cb019fb7b703995db57bc9f76e997ef54b39c298b5fde4e9fab6c5a81da40de6fc77c8e3fa374caa83785e84fe9988d325855c7ef34abbe03b410e16178d1198e93bc02650f680fa4ad8685ca75dc27594a1b1480f04895a74db99d3e0d370c61e0bca344e9369a74da832aadb62d4edba82bac090a4891040c5c3d58cf72e0ad833aeb9a7d617fc407cd787cafaf9e3e57f36e89cc0b451187153328a774b69084c8366b269358c5cd3c6a00cb40cc478a3a28ba48486872dba36a55bb06feff8e4a950184885f25dfe5d5c78f694cdd2b386fd7b5feeb185debb13034d1515a01d1b5ac5039e85a51c803c5bc25d754b943c36b4831cdc26b3c85d7d21979b71c5e83bdd5300427640a4897d118391e348fc209e06d1754bc2e227c76943979197893df6b03e5b825f69a76526d786fc903e56255271ecf579146fa9da43936a5258b7177a646649d5909398d5c9153445c51197b3861d6f98e5d2b1a1c5192ee0e0b73495f54a66fce9b4c2ea1666b2a0b8cf2bd2d2ec113ae06f939505033f4f023769a8657328c4cbc92d24a4cab83b33d62d389df5c54a821e662d0864b62da6e349732450b11a6d1d9c90af00bc6ed90d0893d30ea07f258aeb887957b08c41f817bd44646e605719e204b41a8db713a87ce685c291e89e54d483fe928ec95155c8fe4932c2160adc312a39b78e8e397812ff4997033ce66195db0ab643cc9e976319481b8ec749a6c359087c1efc7856c1649d613410814f26b695096cc86d866075b55f9fd9cfbc0951f1c286e355483236b8c3d1d558850e3e24327f6d5ec97d78c2df7781d23bd88a7e4e5687cd44c10471da19a5483fcfe60a9c54eb4aa6b7cdcc89089d3c22896da0e8401311cc9f1aa523e6f3d4db79e261b0035df771e1fa6ed65a0b6ed22644946221559928e4cb98edb54d1341fc53850f1d3dea2c15739a375db8146bae669f6fb9e16087d91efea672a231210add5087e55ba55b43f52e62b0643345096481bcb1ee9c7d07ed7492ab99731272db8050f7d33b290e6d31ec9e3481e6a39bd03b0fa31465bc2c86524d2abbe480ada542c01e67d3d224cef3452c83de98d7bd927034811c173e2351b8b2ecb56fb2cc5ed98e18d9adb45ff60c804e4f77a72665cde39695a1663a21cf497548ac8cb6ac771a03485b615e580c0f78d1d62bf3dfdf8d70c15f9ab1b154aacd3009543a406acee34e222e3225a6f74569a7ce3354d8af02b4ab7c5a260a7c476053bbe51d939f6c6afa4071fb012360acd6453c5d3cfa61e7abdaccc42eb874025637bcf13e3390e205bb0df52eee80170fd2b157a58494b3e20531c88351f0779702431aad7ec4cc4ac2e9ada95cbc129af3cd520cbb4c73aedcf0b754856afc96b215a51a5a68075df0f5ed9575d3499b2376203c22f91eb013f8d786ec6af3c85f4e0898301ecddcb75cbed694f359830a0bd95ef5ff612392b17c6b3fb747b62201560b018c117cba543c5a5bf507c6bc31094b91e0cdf0d89623877d258a73d23fb1d788bc4715611d93af62f4ee8b641ecbc9303e564d80d2029d5199fbd927ec26185b40c30ee41dd396d2ea4d0330e24ae941cefa0906edd50d26524f265f37db8a4b256725c0bc1878a588c0cc70a804d0bd48a78b8729663d6c1545531d16f8152d78230368647608cc5c27808d4c0400bd95460a27a70892722dcc3c4966b46b6dc697616ecfb1950a69def5dd8646ca01aae616c64715330359ab801237f3ff44882ec4829838d7d2b235301eb59b531e475f8eb80d3eb6f1fc6d82d9c31567848b1aa231afc8ec03091dba74bb1091001623073273a874187a4d98e51eed5ca166a85a04b5075817ef7967010faeb866f916a33322476935d284342ff703791f34eb57485504a47af14d2d5a0627529ebe776e3316647c6d17bc15ad1819b8a2950e4933b307f471db809e65ccb9f2aeacdeb440683f1b375064282b30514917c678aec3a01517d6ad9766a610c9aecfb31551045c3290943dcfa1ef59379e8bc8d947907217e865ed987981f77aaeccf5415eeb808765c50e09a133fe2fbfde7f1e80d52b9f947ef7d7e626d036754bb18285fe734ecf784ec863763ca6fc7b357ed2e9f1fafe2c2fb1eef7bbcff46383cfcf607ee52580ee137df7fabf5dac0486b84555cb7211cc369ef6c5ac575d427c9a4559bbfd3fa3b973d6ae7a439cef0310f658972aebbc45761a7bc6e2b078eb864dcaa1dcb5096224dcd70be8de3ac9b7ce3e27c9e7f7eb7cf7ffeafa7ed8fc3391ef62e49be89f93cdbb0929ddb476472932ef7f5805792fc1bf256b635795301b3c9a6c3255bbd69abb49597e4675126d66cb4f1a00f4cb4110781a310754e45130f3ac5a27c42dafc43277ed50c4f5fec9f9b975bf8d7ad62f75d0cd6750ded691fccad48f70d1ff1fc10d751d7d3de9bb766d71b8277cd2e14327c449eecb4b74bd77157e2acbd0eea1f36dfe64bdb0d3dc298e7298a226d4ca9891377186b17a1f220766031154ee58e4ab5916a7c60af12deb817dbda9b51ca59c544c135938f90f520aea6beb1f2a11aac8126df26e2fae92cd994cc6dfd84a2c04687564c97c704457ef17e5d7c84612abee38317f3b0c829886d63c4dcbd45fe8d7ab09182d85c14cb2e9824062839867a0668064d9a087a345bc1086c8ab522678da8a286619c6275b5b2f1aa4fec97e77f9d0bfa23156f0a55e402210903a093581310682a36504b808c330a0f4d8370bfc9baf347ea445f85d50702b9df28cf14e09c8010d63022c347d9d98114853107d4336c60905a02431a7109552b0bc503af942bb269f242053db2b855709f8d4635a297eb0d8532cc4b40e573a0a41e9283e33daa3a21cc45391c2320e246ac28807fd3f8776014c3e23569967521d999ab6a3c27b06df128638ff4482a5a570a60b62ba3fc6bf0d78dbf7bfac78f9945e8c4846a687c0f8fcc06f2e0544e6878e9818742b542da338b7565b2e2ef13f449c5d607dd5383ecb7a758574ce941ce3e75d41b7a2bfd218f2a2eb10e72e93b94fbc21d8c62349704fc7e49aa1aa7a4843e8be9d69b1418640fd71b902b58421a8fcd6337fab1a7b4dc4e958093de55c4b44a5294bf7e1ee79d0619165e45dfa262c8a167ca1dff9e206d8591258d13f5515475bea086185aab61c0ca5bb55db7fdcbd7bf861fb3912fbb7941981ca263d02254f9063927f1fecb03228ead88dd2e631c5305c520db7180444c1595ae932e33d26598291d5dd1e3768daa5254bb263325500c3a5370150c303774d71a4187aac85c42bb50565571aeb64f1a8512b98e22172b3b6a8ab056059417e46e306d94c7dca98c39eab96bd7a270a123f3b5c4a2a854a4862f61a1ab203ae4dc6448ecbac62046cf16b6bcb99a297f7002dec568f35ef7c0cfefb38255d06c314426a386bdd51dd0224df11622ea2bec78118af0edbb46f75f5d40f449ab5eac96abe855280f5bd290804b7a353e51898f32b4525acb3ca946cebed7fa664ac6fd918c4e1ea674cc94b12957aba823f5ca58c6063ae14127642e240701c7296a8e396c6568c881badb99c5ad9615b1a5070c0c8e3d1e0ea8aa8c0ec362ffb80e9608a8ac88e74a1c344294c1dd0789954172b45851551730dbee2fc32be48b19f0b4f93257dd582a16134bf7ee767f23b634cb16b7a1de9835877b6a24d7e7669fbf3dcd66a7cb4017b9a8c50b2ab38d8204c4f65118018df15875682b862428537fee054aa1c389b11716599b8f326806a612d79c579cd61581e6d3e7a27a41f9a249e2cadf1a0e379fba41e51b7ce2823c2cde9400de7c487f28de6ba31fff7a9e4d212e0605f0bd185fb6392d2b8bcaeac05aaf83fa0c40e8631b02867e0630c27576204833a285c5133e601a35c464c0e054b6ca9c509167081919b4142701d5fe22ab402aa32e4c651d20da9ab4344a23fc4981e955f30fb1875e9a660f62eac8f1ac48d5d083cf316db49e436ebadbae61b2edecc3450f08fac538a9b6051c39b5b1404e5147a85faa583b3487c5458b6c18954b2e6938a8a08ca652290326d4f67cc41a7abb1d508d929566a2654d9ef984d52b66900564af979254591f11025d79e10852852580a8a79831908d4b68d34019057f9182a724a3bb344d6f22b316b12d212d1994ff22a3d7ab8abb6bd714c88372d28494d7ddce536ae24020499719e5536210c4b4d56c419c284252a1e84fe2c88e45ebb1635ccec89a6ce6f3400bfa3a71db08908166e99a4ffb6cdcdf72a0cfdea4211efdca5fc02464a61c9ee61bbd160bc4078e6a88176f980964a4d5b83f18184e2a3dab828f027e04dc9a26489ab20a22e0dfc4f8f6239c6b0a440ed78be32df5fed1deac250b8540ab5b5c91b92123c4480475151077b09410be2dd867128c44538d3f4465c22ca64b2881f724f2a8a316812ca2166f56ef812791747861b2f1a80046447edaeb7e93a0257dd90133ff3a8bdbd21264bc3cf6cf2a5e9cab41ecb7fe88295735e5643dcbd106528fc96f2279978ddeead40f54c139e91f58b75c87ac372c4f37fe9a219733391400c1456b7145cec52d39f12ca3e2335a2627a3224221301023d556a852e8b2c3812a443853090f9e5c81be4c50587d400d9313ffd270da062aea3d550f41946c23e5288601c76833d51429c992db5cea14e22567aa2a639abd9cad2c3d492e48fd38adb68ce4905c949507d1ea5ae56c65a68bbfe9f2b67f40ae58b747e5074ad7bd62ff7c79fee7b9ccbec888a854cba3961d504a6301d0276a2ecb5fcfb564931534d24b7bb0af721b46fc05ccee87ac6ad241455ac023eb411d21fda47d147a1f8dc8129e3a6885498fe21152b75aeb39e62f8c9da392d098b760d781cf85920c289146cc00197a35ee60447a2aa8859253047d3a679341a35e71af80bb8eb71be17653f0f6348ee30764292a2867d82b10bb6ac583072adccb961134efa5681313140f5bc416d46cba16a0a076b9c2e7afe21201e338c12814e5d8931eb2e582af7a1ba80f1780ca6dd415cb435aa6ca6ed57a516c29e28d7a54a79f6b725891285a5339d680b53e6a3ab8ca71afa3533890eccf97e3e8879dc7ad1d783ed665e58ee1b467eb8770e415afeb69cfd1a6c1c66318d202bddcde193fd880102acbfe021dbbf5528c18e1c39bfacaa30d2b07853a5b86b80eab8cb8acf8b7f2561ecfc71f79558e50b8317e89adc00f36694837ca95f467361937c475c1812e1b60bff93e2785f9503095d996ed6b49a4dbdcda690fba954f1714ba467975b790d0779ad94d286f0b3dd1ac8e1ef73418c681b268c19e6a18e1ad294e378507b0ea2b453c5c7071849cbea64ff1b0e121523330390af024a8bfd48aa9595195cb94f243d23d539616b1554da564e01ce580e5a001e28d1c3336143142c1716508e24f3950f6d7d79ee5302775e101791ed34a625e8d319cab98ceb5a76afb67272d9d7907efbeff2e84800d0719735d261121ba4cc92bd4452137f0dab3a7561e1b688f1539c95e95c4a33271a9913a329bc1e3718d925f838398fdba5255e0006c6b9541ab148d588f2a72eb33acbcd8e014e4aa589ea6dc064a8590eac815a193d457c5c901a4d2e9107ca70f95fb80fc6342f15fe91e7bd392c6a0581098254ee14c5d1b9d382a35267918ee238f5daf0f050851cfaaa28c9f35c2e690de8e8849c4da2b0b402f87789e574410b51e786be4fd415e06549f52db025003d04f4ae28ed406e016cad78bd7f00bd08f4ea9f4b0f55f085fc890787ab1fbcdb7cd5f4ffba739ff188022473f8811ba7726f767473b2960e2cd7ada7b5b9103ea292073161d42a1ea14e51f9dc2b34f28ed3905fad970843827fb23437edb86559a7e330071dc9fcdaee0eb5fc36e1e006bd8bf64e7dc79d05e29f1ad89200d7f640740dace82763cea9bb657ea4571ae220515d1a5566451bdd1ce0a3ba5c3b54109e762524991b09d008f5e87a4ec757e46b63693abdfc3ed734bc91172fc073e0e9f212f6448c88d49921939efbc4d0e3f9e5ffe7d9eeb0bcc464ba5076f51da355328b5c51dcf864da1964c997019560c8ab294787d9dd8e82df2a0141fc4f49403570370235c81ad626f0d004b4d4c3aacc1d0accd28b6652b965b567df32d1c42df99704295bd098ade8b00dec588d10264600cf363ef30a3a901432f9e8b6ff941c69598d5a8e1869d9d4d27c28e3a9ea6d576d6a3cf674d416fd8ddfa34e168a1647b5b5170b4e9b19ab853201d43aad2ab22a349d29ff7436394da63d5ea8b87aac518a6c390957cf0b23ea3980511da8bfa0c71d4775929ab3ea62179d1202f5f4fcfdf7e6c76b7a9cf68d24251c34dea738121e296cceb332fb24fbdae1cbd1010dc7334f93dbf36f03b529da7bdcd26bdeb703705a40b7efa1b6d6a3787edb42798705799f56e9e179520b7ddf2feafa3117f23932c3d3957adfbf019bcd1505f9e662d957e2febfdb99a76fffbf71a125c7af1fef7efd71627d9d1ef9efebd665c6ea92f5f0f3f5ebefef973ceb4e217a4ec6ff50aef529fc93efafb07b1c9f88588d50d0e60a15eeb665d995dfed72ff6dbcffd9fe7fc8437e95806f6ebb4821925c6cee83375cf084cf88a4bd4caed95bf2ef386260322745aed7dfafffe9fffd720ecd10c3b8a40eb47e5fcaab1334a05357cc586f5603d0eaadd0eca1337b297a8711e348396f2c472dceb3d3a0c3c8d9067106129078c7e5f5d25dfc936147ec7ca6d03ea627f368b117a87a0e311650e0e27e63a7794534fa6fbf8fd9bb3287aa7de02145e599c53b5d4c9b962d5770b5225ba47c94f8a511cbaec71d4cb047747aaf302976edfa326aaf3a7290234532ec75e91d1e345a0d6e5a45c30c86739509a28f25bcb3f1aea6dc4f1e9a52da117852425537675e44101454acaa8c4d0e3151c4fc95dd17b20aae3ac3659a0920edd6fea7720ee743cf2f9b0f262240fdc761eee151bcf05576f0b3f7180f63b0798cd8bfde6af27fbf2fc63f3e3e9123a10543f27b591aff9c370496ffc83e2b2c57fea61f18a6af10fdabb3ba5e46a2bbe9176b90119cd9697b4c8299034c0d09d092431c4b33d68f5529afeeb53a52093bb84765f2295b895ccb881592e5a0f6c3285f0580cfb1d7ac6db00072897751bca315208aff5d505d420a9f0afaaa33f14a5df4dc15465e1adaf57fbbe8fd73e6859baf28cc0ba4e6fb5fb95a60f8894dfa2dc3c7d664fc988edf54bbd934c59e5bfbb77c4877d67f77c7f3e9bbec0a2c34d5d60963e5c0940471bef893f3f3653c1ff7a0f5f86260661b25f32dd677d1a4d44632d50ae1e51287dd70db929625e9487b9b7157ffbf3f9bfe6eceaa8bee86956a8deb1450ebe79b91f2cbbed04ca2888c83471291fb1ba168ae99828bd4b5f8b627a9c7e513574bc491496a4ee079b9792694c2deed07171a894eb4e431a83954debfa2aed3fbeee7e3ccd348c32c5806a06d75015e69d2acf051f29b4f858a593e22a50ce8f40f8d4d52dff370f99522a5bca2df4fa1c70a881f348ac8512f28e18bba2f32af3c071e329c1614f7944dc53f63d31b64ee4527de42ced99d7a35775de501628c6a539f3cecb761ea902bc1b103193df6820d4f143900b3eed1b04dffc7614d701ec2b7985cfe9060f264e2e10b7f15411b308474f19e772f311d0fb69c52369361c781eee850123c248ac01b94f651d346cc9855afd442967f9ebb9a76a7a3d5ae0fe95fead2153bb19bcf6afa7e7738f86c8c67f825e603ad77ee4777463d924e8f3a549a5cf195058fafab77641887cda0788167ae298b426259143283290775868d34021a61d9546754bae97d1f607727724af894f048a6bea769fdc0f6288a1d2727cbb91ef6f1e29057ddd6bb9ae47555f94b51b0b3b4aeefabdf7699db46695a3c6705591d6f50fe15cc3d1522de9b4972b56d189044e4098c8d26a0e2624720669546642716a1a5f1d080095a05797e51bb8eb2f8c95acc9f657e58c54788b33cce0b4c134766dd2d5150f68d78b16afdf1d2b862f5ed36f8094e0f6f306cc80b09262d4cbd34b81f9de4902b4a43c4d4cc4e3f9e2ad8386be12eef2513f672e1b42de918dd7b8fbd0f819a0de9c01f5a7bd33aaf89c264e93d4494da453d45d00391ea6156a9179d6ade375e850c2bb201cc039734a30ec930cb175204de9664d5668b1b818ef0969c5d4ab9eb4483875d6e784cadd3a1b98453316e4fd5448dccf8515e6a385ec32c2e286b22ff2376182648f02d5a20ecea0647ba88f4fe7217c1407619c66385399667833ecf4349ca265f47295a7db2b1f62d031e1754a4671083b145c0636bbd42710c35d448bbab4217659fea6b1e8fa8719e9af71bcf55707e2baebfaf0a0fc4472228c030ba8291c1954d7093aa83e48374c54d821c877f57de95ecc8fb40302aac845a10ffa9f6ad294a4de1dba4e8eaa8a6b7a188c16aee8cc0a4aefa82b0c3ee530013094f53b49dbbc3f50d9ea7edcce0b1d0ee4c017dcf9d0a3cc78bd589d2e1303252bbd814b6b2f23c2f523374d29c9901888dbb91f6a1f79e055486bb109942f21e9bce2711e0ef8b19d76b7eb75ea7e83c5d3d519abb8ae39f357713dd29e1ed9b294461288d41b1ccd3a3e98d6e8f1a9dc0f9465db0f1e12a2b3418c239604fd52df6fe7ef8daba9ed5d953a6a0e641750e6f6000bf87476fa40c550f0bdceca597ae7f8ac4cb2f23a88cee10febab7d0eab079f266666ad32e8d18ad0a75088d2da6363624070efe12adf06fed0fb81221a6b22cc8f3a071c1cf4341e1cb3c0525032cad207571cef41393090af32a27169e7691afacc0a7e6cfed6ff77ca569935a52520f35c974245179def789c3c5ebb4a5eba9962ecc769884847ed6c2a4a5a2d77152253633d8b3fb3f0ee281418b6a34c40d42a7c3e939128cb1a476c590154b132c939c8df78068a15da5a1dfae3925ed379ba1ed143033efa29101b25c355c63f652fcb8a77978dc1a028daf71204e5e6c079a9a001eeda519a7d3bf22027a53cd7b750e8eefaea86f3576e12d0e6eaac1e978436be07561c39e740be8cdb008febafecbdd877d248bba1cb5490d3eb2b6890a1c3a345a10328c8bccf1111a83456c5a68b9b684643aba66e0be98a3f00f1ca6124c7872945fed6d0bce4b44e9443337e231dcb466ffbb4e5188d7fdb6f58035faae82e4cd1482e802f3f69b21cfc3860be51ca61172a71924103d614e5ba8dc00b14315f81c30a93433151d6c8ac517a68e8564348405ce1e827299f4c05040735167934f1edf62908c6ddc27fa3212cbe4413cf577c874229002185d09e2ff0d09137046974c1ef67a6cc1bf506c61911b184edb4f2d0779c810635413b6529f65d6b4245f979945203b0caccef95b745279812177be5438eb14b4de841aaaea81d5aa5873c03cfc532c30638166b2b8180dc943f2a018268d8817971ab1f359d182029f902d031932be647a86f5422a2316d5a3412aa4b8d6e0c8acba0188f7d954bba5ab2469b8a424b785a983a7151679952762ddf81cabbde613e224a070dd916b7ac6224cad7814a079447a03087d1d428264315437fe78f4a19ae8e9107726d58877caf94f040764062c4df4cb99fdfbf6c7e3ccd545b30e19c0f466fc762f577cfb67920cca3aea580459d29249002a0a80d51f698fe032e7822069960de749664d816d9e833f534f24533fce3d91ebefef5ed37114a9f8b09833ffa555907156e5a659448afcb2aaff3108e79e0e3e59af7ede9c5feafe7afdfcede35baef2151e8c4dc28e9c17d3d5035413bda4420d01379cb0662bb1990b46a9c45b9b04d361d706f924d1d0143ca6a924909d85b96e1521f022ac21c184328994631e3413dc868566ca68cdd40ad3e78ca1d829a50d060ea8171d238b768e443a7cfd5440038354f043ed4a8a7cfc61b8cf19e65a260bc8d074bd2966cbdb858c1822b4f4b45c99b64b4f2592e05941bcab82146815cb92540f490aaf2720c82df6f23957e5c78ccf27c8b102bac79a3df3ced7561707e4b25982e8a827ab8e4f5915cd201b5799d18a4bfb655ae33d62b9706d507fa79397cc0aff7972e3afef0740e9d26d3862e3536c1960e135c09898f3980e9304197564d43cf673093062e7b64736aa9fed2613cf88cb1f1ef454ecdaff0c7d3cbe1e942118a1de0404d17b202d1004f89727b90bd11123180799b60c474ba571dbf55167056f89ccc0915952eb10bf454ca320a92deddada3b711bc3e15751a0d46572f6ec1ed0d4fc861a460b7610cf0653013cac71fb45c4f26974cdd1695b527c8e5b888915935b38270b446ee72d7a2551eb8542c556528290d3424283e0932c165c0e92bdb51ed2ae9b7706b46b2d58910f770a65dbd08de7fb79b2f5f5e9e0e3306034f393f246520e90bdd41b9c64db009e51e4e4971bc69fa3b15d57d8c392a5fc72278b5091c16785bcf4bba340525592ceb310d7cb47100ad06a84a6d182ca5d3676fdac037f9bf118a34db326eb380477b9d9d818ea2fe565a5d6c0487c3cf991ce24c0091cd591d513710ce48a27f52c4974a24fa8d3e1ba9e701959e41569d0dabb28e833fa6eb5fb5dbddf3e11c366fe45b2676e2cd5e50ec5864382823b0dd6ae9b723ef4a2f343e9f545672f824e6b78b0883b5d10b6dc41eeed58e2902cb1cd3fc92c79340d431052fd37073a1bece960a3cd8161f9b3c946da3e5cd58ea0f062fe817478e3bf9003e249316bc2db94e1403fda3b84d8fa0384479002ffc6225df02e83adedbbadfcee42132da72a588a0dc64eb29a1a58390335baae066049b5350e9a32a4d1b5bd99cdb36912fb891a90d5ea6c4e70c5fcbf856dcea2f8032136885fe13cecfdbfa7c5677af6bcf36dfe41ad7fcea843bce085a16b3e67c845f7e3d8f0e33932bce29dba7593b6be11f9bddd7ed79e4561395227a79cb82d9b2b4290d54b536a32ad1eee267e26bc71d2cd59d6cb9f36d562c2bfb63f3e759e4949349830db750b9a52cf7352bc9702b61ba0047baa52911ebdeca869cd771400439af32ea5701f78d4340c51dde49eba24f65958a3208a27cf1b4afc60d361c510b32e2a0c3bae2d9f98afff934616f998d7ba8ba7366dd4bb349f00be0f080f84b6c3b4f253d227b1bdf92884491ce5d0aebeb4cef0785dd1f331821e4176069d5b0a5aa865889fd64c793be4f8d532761a0b1043677f44f272cf623cba9ed81ca5e30dbe5e0c5ace04d200763cff198f34035ab0abf70ff9b8ef450c9c9de1f93a9b2320430c42926c39c8d86c379775ede9cfff9f46ffbe766fbcfc3f7cd763e743db2fdb782a93b318b1f88911d2e600f03f8bb2e204f603bdd4a3fdf42046e53da7ba4dbc13a772b666c6742a2ce802abe8208cc69adacaa338d389a858cbd965cb2262d5333580d14297d573a99c132d02e18f2ab4af9078b5169977e6dd2717e64c6c9ee183e816f571db17ddeefe7c43b628ba0fc9c6f99ed0f33e4cd4caae7c8b2822f2a4af49a8a78380b180cb254c405c59fd96766bfd999d1ef0a215c8a1ad8fc51dd0790b0ff8210c287c54cf6c9c4555917ddfac2c7954daefbeedb8f97e7dd8c1e06b8219931d14680ca55651bb072b1f2f806561ecd0256e502563e490b9bf0ebb07239dd2f4fbba71fb309aff42898df367dba308440bee79776ad5b3dc3b65049e2db0e7181f72fcdd0fd5950319f4dfcacf33efeeabc8f1f99f719d3be736052f8e8ac2f7727fd93b8af73659b054df23ee3664bf82aaa26769105983f8c1f0ce6aa8e67ac59351fd7ea88ba8faed8ddb2c8dd050ee3ea0fdbcdf759d5c76d49032e144d5f3f28fe8d130babbb72090bad7d0d773aed8b4dd48efe5332a91bd18158d666bfa5285331e0a64201ae41f9049e524149bc29b620809cbc45bd8e181e36db4cd743e1f9fb450c834dfcb096e9bc98209a3ad840313c2605fd44adf8fe44ad24f93b93a4bd25e715c32ea90c79e289675ec61beaf2a8264a774ff5ea420fc3d7391cf662f1d1a5d24f4ba5f2202c58210b523401e1adb70baed66d5802c5beb256fed8fc39af7970e7b9573f3ef71ebd3462bbcfee97ef11618a0502ebc87f700be833d5bf25ba365715bad2a2675dd46ee959d92c5df4dcf049edad720df14ca1771f301a3a84bdca1a3baeb48b0b51e15ee825136b7ded4abd93c6e89fdf9efff5cd1e9f86afdb0b1f2e5c46051ce210e41bd0ab8952cd3b6c20ba8d5c12198e51860810f6f5a68ab7dd2ed830232c945f3ced2dd5a23aeb6005464e0768f9c081826b883f26905030472aceafd90d965aab2bf6e26bcb888494df5880000957c015c5e5282ab48eb98cb275a5a660ffc90330e727d81c8300319abc52a2a23c4aa95450f4f04e8316393c042a0de4f25ed63f2f8661346155a8d4874ac18313a4990648868751b1a592355f13339a4f3cc55aa8941dd518addcc0b9422505546c41dc2f57d0f4e903aa1120b4e9905a285eadab2d04c5214fea429177678f2881d91fb5a5456631f8c53228c042d9592a59d7a0b25285d9589171ae95a20fb86fa11d28b42c0ffaf38142498f0c92481722e5aadc6f31a05653838839150a75167b0f314c14b74eebdb5efbccba6138a0ca455a471cd4924e9f1339a42157e2a6fb0b377db7f9f36937db52de69c82d417c77eaf022dde4d771a847bf0a471eca9187788ca7bd0d36ada3180c4397180c03bb75934f5d9cd2bf67168f56852a991d2b655c624b358d8226b6d89e24e507f04c06d08b211962aa0907a5c0cea891ef5035b8cac544d3bf471e74fa1e0e2bd80bea0174515536b43ae2dbd8f4eff40d0ef09300ae0f1cfb800cb6cbe0dd619c21bea427a85f521c6d82dc79bf92eb6b9f02e1d2c4916adb219cb9ed14291ef2f680d61ca6743132bf3bb12892ac2455fea6c2250400411c40ae628d04b7e644ba0396a99d05410416342f7fd3d7c127ce0a5c77db49b45d2396388fc76a18168eaaec3b4507c72e11ade5371d6a7acb8e1a5a97a54fe9c3d7ba55edf88c653be1b6b6eb9a65c4a828bd76e64d898662329932df383762dc2fb2bafee7cffb625c3cff9cd15e6952734e4ba214fdc058777d7f25c7a1c69f184a783cd3c3039f42a3b42ad4c243a70acab2453699344acf17215ad33a515ca428476c98845b52d16e4e7d5a59d2a51f446d9db3ca5714e5ef3ae6c8972d05a8ce44f8b8aa86f22ae5fe74655bb091a8bb387ef131c8c44ae4eb43f7a451ec148a58ab26196a9d21b5c9943e9cb50c3a9d04147954e729c61d35e8c258525003a633eee0aedcfc3876747cbde8afb39f7e9ee577d8bf4d1ab37da5b1e4a89d97efb6b1a8971d14d0821a308f30a581551c0de07dee8c28d82dd355f3220a59948153993f3050b0ac36dea24bff7ff6dea5b991235b12fe2b61b39e08cb78472ccbb0c102b5921956b3815094925709b23e8285eec6afffecb84702092009922aa9fbdeb131a948e295888ce779f871e780428be6fae3b382089c9b7af3e3f5793241ab992a5224520d04c74afa2aceb537b16a67bafac581fbd84d1990930a26be294ed104f941720aedefb02a065cccfea0bd715b53408d484298460b53bdbabcde2f49c11dc3e5aa678fe673ff1dbc712bcf4215908b018c48b97be22a63501fd0cf2013644354d233966ec83285cb20db01187ae6fa01b47471fbb6280648791a412a5bb4ca067433599abf857a917364ced1a799f1f605abd78410c02b60bfa14f07204da49d0d6c44fd234f1245505ccd5df3ce8cf975330ccf1387363011ed9ac416946893e9eaca3a13c42f0a5ba2c0138a55c5ab944513c67d13b7d9b10ad69a309018c424d44f822636234b9d4964f6816d27464ea22e90421814371d902b75612d7c7a00edac71601a236d936f0e5dc36260212e656b5d24995f50f089f23c32f3b3b7ec518e648298cd052c2d106d1183e083a22dd8b9801a2689935c334a7bd3c2cb5d2553930293791443e9dddb7538dfe54520612cb4333fc08eb5fd13a3f3d63ee7dedce766ee7738b57d8b05eb595d54a226addc9f98b1dbc797a9fb1728dd0b5917f02d25963d6560154160dca86cc1220afa6f24d02f864f3ea728bc44daaeccba74db388f49d58cf0c117f83ff482dafe5054b748249c49066a3b891a84f0ef7c42c3b2348b84ca7e114c6ec02d9f94530829deda12f249037826f8f6339ae42d5a045c4be717fc3666f7d182c2a45ea4e80f21a668adb14eaee892c9e3a77151d437839c9adf7439240a3da3a43f49fbef3218f54005ef49502e77246db02025443bc467a0dc6f4707abead620997925609cac0357d58964de37467a8c128761e6ecc42731c01c4ad6bc41a94ddad4467dc1c654e98124b6561cd96d48175080af445be48f221ebd98de268f7b6b42781cbcb2197405e37c0042565bfe7c7bd0142bf2211240c06b32362faaac186742910302120b4559b707bd1a48af29d69447e6dda66067c9cc4a9d451413a32968c39dc96c15f90e9ada25564823ff963d2822d4a502db1214906da51d3ab0398bdd12f69d48ffecda87cf965156f892f746caaa51e0b2d14de36616c9448576407635a882ec576c4c6418250b520814403a98f4e9c428cc998b016150677ee22a0c166baab00c38a40b8e43c288b001321c7b7e370cafe677ddec425382c68f199b1386c24ea705ac9e6ee4c0fdc8db1127945fefd01f1251f971fac3ee76f3b9f7055fdb6e0720016db7fbda369fec9dafe593e239dde7de3f3394cf3fbeeb5fff751ececf8d8e8a9fa3a7749fa3a794e925ede1f40679fdddeb67f11b3f37193ff5fe4875bc7fdbf0f48f0f2f9b976dffaf0b6509083eafc548f9989ff19645581bbb7bc1368538299445708a04545d7ef01bdef564603861572e4d2981df81e8e352be68e14fa6a9a369eac635769a8bef5cfd2ff0345aaf664df5187040b291686e33006d3199cfbba84eb7f17f5f336e27e4f0f8f4b099a683dff637e41616f534a885835a54dadfbef7a31360124879db42177bcc89f5e393ca881e8a956abbfdfcbb3f14b75858e64ee50815472b5cd44db4ced9fff1f08fabc3f153bba995a1f8e4eef8b9e3c5a9ee13a76952f5b34a6e9f3cec3eb79b7eb23db7e3f3fcf2faf04d6f871ffbd74994fbd367dea7f6f44ff6b9759fbc7cf9e420fd6995bbe1e1b7d7d90a9dd42a3fa33c1ecb15c66a85b15861ac5568d5379ae537ba15f8588b5a1a08809d2a7c74abf0d1c1e4ff5747f34e1dcdf0f8dbc37e733827aeaa091d08b273488b626a42f0a45a554ca87174bdb6da848a00564da8d396f305c588310cda647af25906390624590a34e75c2c0ab511720ee5c00294101daa63a5abe0f9155e423ca91c8e3b677c90bef4c0cd96ece5c545bb6645293aeaf6e47af207d4a003afa9dbe57dd1b8fac08bca15b65031085e5a154c95d310796d961787ca427fdcdfe99563eb9f801b3d35d27f89086dc48b0087f412ee918d4073d008b9c3531f8545369d772a980e1cbd5da447b7650f2b6901037fa18bf2b5c7aff87680b7e20ae1ad684a9d6b836b6adf015fceae96f7b32bf0ede8e92fded42aabb1d6b1eea0f56300c1088659be54b75ef8506d47dad0bdc72575507cd4486b2ee6e0effdebaf3f865fcf73b0b3ca862925dd0caee246c964cfc440a396d4fe3e90681ed8732ecc72dada45a4babea75c0984d43aaf82013b0d13270629755a074145969e82291dbcf1d184d0435be2cc50662b9cf5b0a0e20bf297d6ab84243f2f0f2d4504853a93210a03d4f545af3d9d44e503ae604d7d03a89874bac716067ae179840d4ca5e3ce9b1241c8bd42711b6880a980d3f2c308d9f984e8360a61a8c33221be64b4dbb880702adf3426b5894685d853d3b7f7a47d4f598f9a6aed0f5c52166648dab5b84f3d694c13d30a5a03597cde64a79ba01fec538bea31db8a834fac3520b0e1b31d94aaf02ebc7fe0d508eb6d62d8e0a6a4340f4accd808360784180c412524e3a4f1e262ca9fb236293a634fd43860c9f9d45db9b7ef4a46a14b26551e1e9d1b4e9d4a4da3a6f3d1d2112552bd2f3411bf0995a96a052d2e2886bff1be060d20b71dd50243dc82d8a59a94c76f9d64e03ed2a11b24abbca9a734dad89d17f37dff3a6533becbc2fb3e1fb1ed7e4adab6d3efa1befed6cf5f768bde3e0f3f764f27cb34a97b354b3355e16748788fd28f9bdaf4ff391faffab6ccf1a2602bfed4f7ffb7fffcd5ccf8f6f0ba791c2ec4bfd37bfcd4efc0287f8e9e5ac6677a136feb38de5e6806e9f835a9f85377f3de3abcfbf149673f6f37d3c20345f5e62fc9d4a2f06324b8b16686c57a42cb39f729d94be7686427ed34563e95904a4a23a56056562cdbb57d5b04f330db4cf998aabdb9274e7fdc69a4eca261f6479b46512de662d1a6eeb5a95ece965a4cfd124d67b3e24fda89e2821539110d8941a811894fa32c11b1253c9cf930041abc34b08b62642553f13d7b7c2ab0055b6b6a268c1d2e140cb876d46813d1e8ca36cb97cac73cfedcdc7ca13e7df0d3d1f68b59f2c794c734c9a8ba35e5ac1df5b86c475e9ba2ba5f029f829317d779694d3db1d59a4a059d9a4c3d2453a920402cb45898404ed969d5378ff1c83fe43568488f33513aba65baab2cab8c6631f757f152cd50ddab79ef942945a147f33a5f94800fcfbfebc729d8bfbc4524ecf55dd2d9554671cafd592f3ed02a1908e07d165a3d807d60ae7ce7b80bba2c6fd1e2d36de160ddfd77dcd467cc70d75f76db042997475688fb9a0d0b131ae5661365b9a1cebf6dc6c50a2e6240a60f0d87751c8f5bbae4abf120709cc5ad7fd180bc514f75eebedde6e9c76698d47d816401157720a5b7f42872a6d474c90beb0079f090390ec67ae8908b3366933cf2467c639fa0249548376f3a712888ceb07ed9b5330bdc3c405881a4563aca42d2891e82b4df51f839aa00b2894ebc775c2666b2af915a10b44d8906329e0ca6518c063cacd4dc0237541c9f890dbb098c0b25f6d1d6dc03fd65dd89668b94f9f830b9952ab3f6549525931d9f0c23f1e5891e8ecc5223b5299fa4be1a2a82d3583985d85e853c34ee11329d1085b5a3c26c7397207dcc200b8357f8e5129d42eb8eb20a9cf8b454f72c5e83070a4c3ab2f1f935f643f24b39685947c4e8ac09e9504dccc75dd6a622d65d293800ed5a1d957cda9be0b62d77050294026f2e28448dd2c176c6de4eb2a1d5b63d7cd3df36af9bb34b527a6f721a9cbe5f7624de87ecb6818e18f101d0924f14c6736161a53b3394861c041d03523500ec63eb779012700112b996c0d910489bef48971698923b7eb52af4f9632d438c7a06321c8acca8924c3135ad500e27fed371574d8d3a99e0079d20df44b298b115096a4cf2c3519c35e4e32e906d2ae495f5e25e9699c21de03d0b5de99250e65113121771f0f28ce52483bb1cc24a5e38eeacd7b1d71805886fdc2f089a0eecf7c9d611c548b079d018267f5d5656019f89abc87a2e2cf2988ccd33855bd89271307bc86a26d9984df1434081dde6ead2962b4e5e859215a4d9a1d03957152693a44958faa68a979a5e75f1c7af51596f42928ddd1d74316970a6224a95b6e30e134e3bcfa19874dc45ed8c07afab3d2987ac12841dfd3a9892f6a33c05a2362bdb6120e5c319a430a68252be22069db693d2fea6aa4d3a37b6c72b772826d6cb91d0db9787a9292d5b657187048eccf72fbd4ec6b96de32918113c895a00ae0906a25226f03db9caeb87f899fb1e404b678d035f815885c15139c18eca09b5c8846f38322417ea209b8f8ca65bfd47678c1c4c5bf09f83a7c961ff2fe4d2f7880c654f214a674a38ee349675f8cc446291e7adaad5a4682df4f77c8b7ece5cda5f92ed7f50f049a6d46ef3f2c739c5514c48aa5b4413c81258234bb8f05724d1548d2cd3c47b21ee89dffb287b34c821f097ed4cca0b9af2b886b5a057e15780456333150a95e9c547936754bc68ee3f1f778fc787338367ade225d537782b4e55f32ca1bcd7679f55ec0b76950c1c921959b853cdb9b8f4f59d503bd53cbc11b30a853a673a265463ab3b36a1187bf263fdb60fdba64a62eb676515770fdf1ecf67b5ec5308bbdfe980c90938392171c2d83901b70fd49a1db4ed6665435022ecb5554e7b1db457f1a0736fdd215fdcc2d38fb3b5117e3600fa9e4ad87bf1cb77c22e1f8d5fca5d5d7177d9300e4f3f53b2bb376fabb25c4627808b985f354d3d0885ac2333cd58feffa6b4102b9d0f7a4643d3ebfbadb97f23c75d55e567eef5aa3b9fbf9fe5d4eb2935f4539dd9c9bcff0f7ebee915f9b7f587b05d1ce69946b895bcc9a4b4bfe7593ebcfcfe701d608f230bca079490c48bf7076ba29c77101783c43568664c8a8349c9a4747bda7dc8bb9f5189f4a6b841f3aaad802042bc3856ddbe738de042edddc74496ce12518512513c19df8eec006062a3ea6603bd6820b8a452daa271e25ba0b688443dd242e9b3d86bf797a88965aa8965aa89cd713a7d584d2c48ab3cce5a6c7faed14ea2857a6cfe0a4bce96dbc0eb4c50fb5e5888b36f787cfa637fa655bcd53a3c2fa3f375af62f69fffcc847be8a39f49a4279dc5f55912625d133891e75d45e50fe1af44f42d230991dfa6745a17542076f94348be4909e14e07752df4b83f0b3cfa4b81c7fd491cd24ed3f7bbc7a70b3b0f312b53e7779413bfcd68ecad91ebffcb6c3deb4c186449f933fbd74d4c54db4e4ea9770dbd13135eb9cbfac48a0ebbbea3f679a0c8190a66dca933ba5be3eef1e9c77e22439897b7a2d97f420075f7fcebe3f0a0bff7cf4f0f13f2b26e56bff7a6c3cb0716fad7a2ecbd7cde3cc397d77e19d7be4f877adbdac3e3b7b3d4948d58f8b716d00ad1b9393df00fd138ce70365613ec1dfe96ebb7c77b9bdeb4b81258345fbe64537c54fc3966804a54161539565cb40e130abb83813a4a1057d8cab90596f36092630c2d62bf163719110059517e83cb655346d7faf4786b7939c7f841c4dbb5b930cd9f5f26644fc9747e0a7d5223f4a901a18e0c6abcf7a6f2fe7ba62df8f1f4ba99245e92b27ee987a46b8fe3adb78357190c84517b13076de5cf5ef3bcd6d23f726e9581bb3bd858651f3c8a0b1a14e261d6399596dd1075ea4dbdfcfec32ceddac7d422eb1a0c70a838fc14f70fbee023d2e66f1ff0ad1d90ce5de7e5d8903f6d717c8c44f23db97e6986aacb7cf0b4d1d8a06b7ea2a4ec5cf78eb8ad01e7e3bb5a926f8fd168fcb86afcbaf6a7b67c3eb5f34916d3e9ccfaf1fbbe7f7e9d6c08dd874ce319aa9739f168020d8d3dc917d5a612332a1d4346087142c7a3c75b8dda446b0a78875aee34e13d08e0b7b864e26fdb1ecb3c2a207549559bc26c83674735fad316cf64035c535a660d61424bba48f567e4ac63659521472121d4999ac80d281a2aef564cece40e1ac23f4da1190960883e8b45d69058b64551f14da55d24f122484d205fcee0fba21a97c08b44c50c043e61c343632335689c6ffd4d27048ad6484cfb4996a9dd1abba7ab241c0100dab73f92856a1193448c533adca449d49701e93cb24cd12464cc5c32ce221f9ed1511e1d9a21fb685b9923e2bc945d319da3a0333f0456cb0e629fd63479bf48a5ecb36076174cb0d2ee0c802202bd16c596325732a25a9c2b720a7160eba94e16ea38b3ccffbb1fc3eba3de3f0c0fdbd789dde14d2db3a6470fdef75b4ff0f68c85e9302395fe994be834abe57fb8f1746e0ca0f9cb591597e0a94f077fd109fbc7a9267f07d9a45112d163f7e9c2da746e10c35446cf2d809c7532671a6a3e287fa8067875b0d964ae1059bdfc3932c49aaabd72fb265aece59fd8f65ebb35320fb2d4d3219af03357bae7e93db51a20fdf8fab03b43b5e6f6ba3fe553eea2b237c6de4544fd6603bd6725bf8122fb40db6667419d7150ef59f03391d599a91574984b13dc494bdc8d41055d67031a7f6e3c3ab020dff153ee9125be3391a6d8701b95efe7b0739f48a7dc4fe5ccec1c9781586fa24a1779904e3b79a7ebc5a89cbcd2aa0ffadb67e5fdda5fdde7f3afff35d9238bba925f795b1226be2d09d38f0bf50d4d987ad68489f4c7121bba664c20b4ea9fa8db0dfc52416c036a21950fdac4655d6403f65dfc8b06c51c2afc9281b28e4009c6de4436c403092f3fcaa24281a898261d0235a3eef4bbece5f7596229a9a24bbb17982e1a4794d85ff2774163bd0957ddfafde165ff3c892043d01c7c24144b8e9e6e3885a2990aad6f183dd5f0a0cef27d99e9db10668d1e0a6f76f5ac76461e86440393f474c9d3e82184c4579ca599464f107b16372b96442a503bc5b427353d2b6221a7915bd2180648242d0690ea8dafa2dd24de4b108b933183c4ce484193c47a13a327b1c647ac12b10a116a35a1a215259a0a0619e004dc145be312cd1dfeaccdd671a3d193c368f4d491bb09142b15ac579d07831f747692c930790aa4edab89262121db38dd000d0a6f1a3cfc4864852f703c348e120d1daab181352998008852464506215e9812d2598e7133cb209535b5057633cadc488488dfbdcca53dacd5915e079abaac1e017288ce87e7e56b1487196efccfa6857f26257dbd465e1ef6db97c70b6ae30a34885802831333db9992b7e8418731f70459d1fba27dee9be0b8bc27f5ba81e61c0c9d50f1a9e48d87ce7b409923a862cac68422df71663b141f6a05d05932514ea03c29de207110e621cc5313b32c012b932307885daab64e2ca3d9be0d02d82b65fd81f351d36bb1f64b0013cfc8ef1a4d70c68505eae8baa202151e3d1ce0a54976c1422aa857a2b4241daa2950679665234d36c99a187b53b6cd3c4fe4ea935f31ad93a975e98d1fbcc95e05363b5be54d00059e3358ce64140b74ff65e9f8261cef524f7a3aa8daf2561d78507c182c314aa3fc53ab9377e20d78312a4d72c6c7de9ae0478aaa4afe300ac93bba26953b0ff02571801320871f4af66c5171694dad6b673ad73bc80327564076854bde179923e25fa3762cb16ea7010ca9522c3b289fa56c3d6351a8bde2e713522fffd9a5c2aca3ececc04772bf09f899d6ce5012be73175291e96a81bd3efcf355fffafccfb3ba5602a3dcb8cdc97f8c8f5c3db9e7b6223fe33af7d6c449e95d7bfe976a7251094772624cbb054901148a26fe37e8c59d766acedc5cfa75b80f0c9ea17fb7b7f6fdcd97dfb2774fc7e4f1e9bf3693f0220aa1a1056dad0ea611752eac658564a9ca76e41a55e2bda11c95749391e02115e4fdc114ca54e18d06a12db455de1e1381a4902f9593c074fc429332cb25632b5c88cda8ec6419a34eb5061d28fd45f951793f3840a129a793e9107f27df6361ca2a6a029f2089fa4b3636c33003ddd1decab99a5b6a28fe52e44330ede4e7b4a39e5f1f7f7bdc6ee464d84fc5d0ae381a96e9921ff1b84b33c53d10437264f0c85e838e3518b03e8378b50b274d74d984aeb958cf8525587281b85d94e87d0960cb0d67ce5cb169c6ccd139e1b09f43c24cca0ade392ba7bdd1a452bf7daa57bcf1b56aeb4d4a791023cf9b4046efa9ae1b6ce65a37a346a9b8e2000f77ca1492aec5584cc9d8dd6d184857299fb9bd969591b525ac6f503d73527c339a79d314ce69758d23a94e23a92e47b2e118939e8ee5e94ae7afe6509e31d8ced80d921df8c1ec88330105a2ce7b08044276483a100ba94e4158b6455dd544754eb396984725561ce2f92764bfd8c1e261b8720aebc258a886c481a7023671bdf8452dcc0b5bc79b3c808a0051adcbc6c0569dcea01fbb5f01b79e568002832c9bbb4b6b50c443563bc05ab10ea7b38b00795ab2fd3632c350c8b0d60e6bba0f09b6833bcb232782d3d3c1d45e0cf1753eee34b55240ac56f825995f8248e9c67660576fbfc6e8b703707d6bc89aecc9ba273d102da1a915dde22b5e4b96ee0f3199817ac7193c0b94c626bc17d4882d3c9d9a8546df0525c7e56cb4493f6447fbd293da3af1655af6781f265acec4d67745daead98258c0a35780ad730eb68627fd77a808e65a3b3242b3541b348abd85710351b0409a42d2cf26961e388651e57010db8e3e9fe5d1eb32a3e414c6ee2ab1cd9e1a9d9e56242e17c430b60e2c7705248805f60f64dc1d2e0704adaf7ba84ea3642250b2d0e593f1e6702a58ce1cef0cec731acf0e5d1922e3ffb49b1dc3ec9124879982d7110f0a1cb3c67f87fb83431a02b8a703ca124a1f0fda2e69477634e8a4a3c7d9e9a970cde4884bb8ba2f502047b948adbd9e8bdf5e9fed377a33d39851b80841fd6597bb58b10f2f8fdb73418e439dbd4996cae78d5cd4633906a646da84008a9d136db21e33d7633e8871c115691d177f982efec6928834ad49f6b80ba0d636deb6451bb8680b166d7003ca7282188816939885427439ec9eebb570bdd62df711ea94cbac905671bd46386a919e3d74d599d2085c79b2d21a1c1de3dad232b236eb466699c28f3179273edfb6f1cf47aaee81851a652e7eba604b5bb0a43845aaa6b05d950c8f8e21833246246a23e8c45a45391496ac9bae58eace4716f664baac2d0b1522c50c5825640b56ac7758b1c131a1c4051b4751ddf3828d58b0a1c90f88c12e0d41a9526dcf7315079436c9ba8ee0bcc71128cbd653d85ec6ce3940c62c07dd233a286d4e5cd3d8d712bbd8723527cc0059b8b2bbf36c20b96e1167605cb88ef303fba96fecd781c47158bbc6c6653a2f5f6ed19ed4a2cd61b7b1a56b91a50be1b82bb42831aa9e09397c7dd60893a47820af84e7e24fc812e604df1fc50b150749f28d3e834ca14da74006da56d6db7ad2a44760a1b6dcdfc13d1af15a2613ce29dac5f351b32bfdc8819a0aa66a4d38150be7b6c73e9f1d4921781b89274136c59f4f8282090bdba30b32af90599589859f9e49cb58d87fb51110d3ed2293d2f920c8a7bca61c04f4ef113df114bd40f44b26bbc7ba94d922a30e5a0f841a9831c5c9c7c23b1ef88e014b1fd11b9695109e133832b2685995e6d9ce28cbe000723d5cd432178303cdc984eb9c2c00999c60e3857d2157745e36f5805844e10e8395c7b22a0e7786010090d39e2b3869d42d278055287431f2a0388e30977cab6a6cd11a9b211b2b8d131b3fe77614616810064916a315d1015efa2a38795f0cd83f3c283c6a0b4854c670a8fa19b97524c391c68acab2a985cccd9a671d252132374297118d05c116025a9171afea307965ad4d0e8de7df7e7bdcdec8ccfe3958ac3fe8d08743b83db866b465bf462abfe4de1f3c91edc4ecfae32eaa0831c5d32b797c2540286da2311c7aed20bbe82f6f6a787c9a4862770bb09933648f3fca1e7f9c83f6f240f30f8dff8e5f93b261b03a2ec39074d656c5de0f3aa98bfe7b1cf46f8f0fc3b729742af45a3664d45e049d29b28c7a77b241a166698bfd18043e325a4837c8065c98a40e5c2148d1333e8df2a59275308d6439a39048079310b54dfc6b0482a6228f2c9d670f97c2223eedb04ae4182639b85b91f1b1cb07d3d92fa8e72f276c7ebd1a65652c4289386959b8c40f0e4d2765857a2b1b66c221d3088dbf1bc902597331c5ae64ab57d940b11a5caa65004581ecfdc7af09618db0aaad540861741b96f2fc74949e4630f945318a6c29bdbe452dcecded195b6ca6224127c48efe0dc50f939bfbf17ae5de77dbc02aaba24eb3bc539035f2728c65133424fe3376051e6c881432a441730cbc053003ad929fbce6648ddcf394bdf1a8bfae10754f8a7b6fb381a2c289884c88c3665a9c0a6c5bd0119a4a1a34e90ea5acf80fa5b9783ac9de1d406fb48c9f63adb9ab396e72f892658de616d922c7da71673fa2d8fe7df3fb83be52de89cad4b98a9d19da95d9baa55be6959d86ccba3be8d48703f5b5a569a9cf07d0bf65c23aece58ef87df3f430e8fdebe6f58cd8eda0e02d0be0280fd2f441993eb0ddf8e8fffcafffadda1e87bb4a13b1f316eb3ce781e58ea6c95ee6c2cff95de070ddd2354ced2ea96e59d7be8f17005bb6fc5a0cfd2ffafa0a3df3d3a0260caa23da66ed7b7fa81434efdad83741f36595c771fc585de7e9838007d33bf8fef0b21d1ebf4f2aad12f4ebec9720fb57a01e0a261c4c2916dfdb88d8aa5857b236602178b792b9594d4206d4c393e2a9c2e3c51957362889f52434e199e7bcfc705b845c29ffca058a8f0f59d65a361e1a7a703f906cac05927e2643201ae8dd240f23f5bfbaac92e920581e701eb800189835752f7fb888bc941db089e0ad7c5b44d8022f333010dbff897a4b6e90c650646d0bb72183076f4c3f718bcab1fdf39ae5b0686a5a55e378c05adaed2e285030806e20c08f216c2c4c7e7866bf8249f2dde4d8f79777864c4a29782ad02b90879dc5e927ef974ffa2f815ac2c19eeb7fa38996f509704d50efad61b97b7339555e36bfbf6cbef71358bd5da68537455905fe51e554dc5b5348a0d75400a7508ba682debbeb15317dd16e4d9cc5615c34e6b5bf6032ef7a6dfd8283042b1c5329fe82026844e8fd321ffcd29bb84055344a48507dadb289bfe039b0021163bb8c1759809604c025036c88281da76cece369e22257d088cde37e9a3840f949255e76feedbf8803e301df3551256e366fbf391226ca5bbfea17bd7fd8bc6cfb0ba3cf243768b0feadabc910d8a4c79ee04c89e5540eceb83c687046ac21f84ad710612d87a803109fe9904ccde3e56e307d135b696d8d2f836712b5d42d410b81219d04f7ade615d64cb3ef424df26fc47447d52d489f29561dfdbb763e89ef041f269a00dcc210953f50999064282d0c184d57f6345d7d8395e2ed6dc19688ccb14cdf387e9c142a051f872ad775b2f0a0c547db0288d3f4700a4442a41313a89adfae4d9e2b283eeed2ddace17c7155c61e235b52a34f21b69bc06eb0966300c021130edef83a5865d74890322adcfc45e996e070a0deb38ce75be10db37b5b78af19d8d7684d06c5c1026cc59d65c129c832a2ea7e897c12ec370af26115afd4ad29d4494d08772a06eef320de243218dbe64c0787d4c27ca1e2a418c08028381cbf2231b7c8266645fdea20cb2d20ab17b382e4b3dca2570e8f51fe8043cf33a1a7cac542fbb17f388332fd1c0cf7a648e62641765b6c0353638ee6f6cf5d6dd2e087e7ef1333c58bf96bc114dde04e81c98006f6cea9c16f12f302b2d668f1bab31e66ac7c73e22f671943423a65c4f23071859f240df2766ad11762c23c63a11df1e7444f30e4d2e28901a902a471bb38cd6f36f221866f9c07963d6634ada691c282b2072dc99108eb6f887edc686e7cb28069b02d0d6b8efd364c906c23289e786347b47a204c5d764900b754138f4228350484a0909148d96403a5c80c871a7908507678fe0432ab366e24ef0fa66b4a9c09c1138b4c1a005b8ec44da1254382e6b518b4669c0acd7270dea361dbfc99b384777c12b092cf048fc05d06f4cb1e80791939a2aa89554e230be50cac46ef4c91e59da85b56719a64caaeb5dfbdec02c75d8309fab2955b84a084dcdfe9f7d27469df26e00800036c9bda1e9ed26115a9e1ac891780fe14d24b289bc0ac8a9c4ec42222cc69195ccd8d36a866506f63a7df8f5cc3a390eeb6157a38ce63979ad4536d2431cc6d507e8d51d62e9d27abaf6d46b5608365641ccf1379c848d3888f4c23eeb0c10e1bea90a0439e2b9cf0000201ee1061082032886b43964c9b046c3969b44a30698ba46601d2d0aa13d2f04c15866f31013f8a81db8f0c23f2d00714c0f2f893ab625626cc57efda4460b2802eb943fa90f99302a35f66f619d088e4eb74da85d32f394e8b26d4506c8316833a185bb627a1d9b17002a79942d434364216600ee1ce031438dded5eb60f4faf9bdf277b74c2fe38159b59dea846001e3cc11af4f60a8c70fc0ae8f2398ec23c2c8d02cbf2f71130a4813c6a2824a6d05c39d910001479550017fa642b0e505a99deca7187f0e1cd77ec3fd5c423aa4a664bbf8a2cbb41837ca6b6638372b936909b3b98381f282ad9c4011596f8e098db6d6912ac79773976fb69b9a738a4f21d90184884173b265673d441d69c036c3990efca3605dac843cb32ccdf2a34b02fc4967ef0cc568c78dc7ca2ef2e13347243d344aef578d26f8b840e90292f0282872c612e445e320f15903c97ce6b74a83c8a18b22f28c142d536968ddc5c440e09c8c32fde24c019533ef96b9d7c77768b6a40bfaf0a22ad9d55a591aee73a46585da4878eeca125f9141611765548f196741640ad1c45ec30d6011f0e87031ba9ecc5f17072a8b145456c07112786ec0d05990b679cecefd0539589969d98c7d22901875ec598471e9297f0633f8c64e42e83d39c95569687044c700e210d10ee815d4496953072b0ef83d54276a228563aae815902ad0fc460db4eaba801d9fee86d0431606b137c9451cd384da18897d5dfd15496ad6f9b81903410a7e23e03f0dbc58dc935c8bf319f8b6d1410d5c8b41d6b1d335e701e8b137c5a988df09e025354884db2df1d2fc302a848cbc4359e793ba9e78b05714940f3345902ab987201244a63f12f1a625b65a11dbf0159371007ca718613c93147876c289e69efe2e110d8aac85659da491826f1fcdc2212301fe4075c4fd9b4aae98a3c89a504478c503fb87034a160b301692fdb1c5cc940008642b015e39b4d8d8b021a7eda21a8f4b6f0a9adb2696b4083cc3cb1073b24ee9fb97a4f93aa8c49f4698cfefbe383def69b97291b2b4610b2cd60f1cf7207fc2391b6de9b224f5aaf3289943349873bf13de48b9395e7ad4ecbbc96cb8d21cca2ba43e9cbb643587b9af699b66882310f96333772b982ef3722946d625a01792d5bd4c29922df7dd288ef64c6ab642224aca1ca1b804e56414e57f9a14f2fe0c716e671f4a81d29e0609479ee0604f0e520d942233bca6aeb0291d3d2c171d59a79710f8773156f9049934de75654f1f9743d314a43e4c7561380854a14d9657136004546129a5b169303ca98c5efc38f2dd62494993d294a2d3b35d8467a6bedd2decd21dde464d637e41c28479b2740f1244089fb334d893ad39434bae9cf71445c75fb65d4dacd32b8cf3198dddcd64ce91e18d46f73b2ef5f6ba6260e35e92a185717c8f42bba465eceaf0027fdcf16f6d7460573ea56e597f9274bfd598f0cb85dc59c4581bdfaf3ec4275eb28dd2f67b90b2aeab8ce3f418c4012a6e51cd9fe07183dee15197e1f36ff9a942697130969a5a7245b787143f3b474d2cd0b705f4c4d75c2501fd54cd2f33af8a1984038d55c802d98e68353edda04d0b84c286a023081adb868f6154f4c055bcfdb2c3af78964c20dcdce04dc5fef52ee4c1bf53cfcebf7e727fddbe3f0fa30d54844fe16e0cf40dc6412a36b55c9f0e9c3f6e4fe7ac65e64dbbc56f6bf90d86c351885855d2b674a91d56617389e829ccc72a4836724c8e7026954e414a39094098832822b29bb4330112a68d87f9518fd78e14a305201c38a0f22cc0ffd9a1e9f456d8d1c97bc207edd4822e78632a07db6b241d5ed5889ff064193bc922101c4d2bccc33215b6597dee451bfd4b7daa666a667b7ce88ab0281051474012239bb1342bb99372c721ce0fb3aca3b658466c03b50806e7381d837d8ad49dc043f7896a85331bbdd046dc0ce37c00dc3421946bb9c53ae5ec8657d7ffec784cb547d806768a22e91ae262c182d8d77074c2831b24d657e479a0974368c28a4dbb825a9b8d7dca074d41408109b5f0ccc2e290758f75a5cb60564b13ce48c5442c002208ea9a99455de67cd073a03209fc50c4e625dd9aa834ec65f2ce197876f8fdbd7c7c383de3c6d867fed1ff793a29424a679238912abb5790aaed2046619451573accb40afcba14c40676ac4dab007c59b098b620ac20d2091eb54c6f86cb5a1d3258b21483f20c297ce35afae01f93d238896415000c44a638670c6e685789eac9053c19440257c8f92b8226e664e8d2bdd2dc454ce4822678e4831be154a58130b2b6b2ce13dc983c102b8ce2c5d0d2af9929b1356e1f13500844f1b58e0eecc7be4a81ddbc9eed5aad3e0ef2b38957213a136b85aa69a44aad42becc2285ac838a13ffdd5ea7d81ab04acb952d4cc12fd8b580f9c7256a9ba964a452ecab7ccb38573922340133553554453d703de2e383bc0329ec82a135ae8b734a667ba36d1216721d7c25c40b8d231e8369cf9a213d4c7b6c44aba8695acc0c483ff64604535bc7038fbf5f4b2a9961306e1581289b45fa42a11875bd60f48e92f2aa61db725b29d69d7dc3b47aca4e5d5d13d165d203d0e326a63ed160044c7782cb2ca554c7de9ebc8b29fb84576cb12238d5650ed3de8d1e01d0323390e9a2935043c2cdd57eedf047896627218087ab6e0d2722d83283d574f7ad049169b9577da063245fc013c5ccd632c9ab2f9081195c1b296d196460e691173088165a94d1135514adf016f0ab03042d90cc3d43c6800d02c8dff869df49e32d2191d33ce184ff0b46b6499a8848940b51b42c9138f54202e1160124f21adabb1b08619bccd04f0b755c47a8b00ffcc47d88cb17d39c244558bafda71e0c5b78fa75fadc020a009261682b42dffc1f726f217494a64abfda944dd378068a381971b184b35dab7718f1863c4fc0b25a72836cd051469a6ab07ce7d1f68d1b11e01bca508c7778d0b08584019c6e48746c09e5ae42d6cd90e1f5a746e0cd2e144369e0c2a0c970dac45892b6c1f79ab1b7c9450f9a4f92eeccf32bb2c6284b2aec5e51f465878876fdbc89a462d622b3846eaa260dc06e4c169b27bcbe99530adea181eaa99ec04a6246e65ae19e8c9f8843cc200bc08a70b61df198ebb291545f65d532d6cbfc6dfa43f28a96da50882350431ca1961c739120d31f6355a7704aa711ee034e014b3994204f869b90f76d24aec2ab68cd34b6653ade7dfe826f22bd4d0969a74a29c8e04b5cb763289f70ed82072da1aaa7414dfa2686e0ca7458670909e015111ca3c531e509411b9e56c4dc2b90a5b0f3f4da662a13696b69dbae2759cabb1b71dc568c5fcb58c9379e2e513ccdf1ec184061f0838a450fc4de8372295be1588235f0ce944d9be726e310feb08eb47b93ef1eeb625b410338ac6c51e2c161b39fad2a9882e61b5af641a882108650ec86100026f3d4b8c123962c5d85b4683102b8ccbd062d6a402604e6a24216b18c8e807942b7913ca4a36f95613dff9833721b3981e5b4864555b4cbdc657f816044fad84a4d5d49b882415c0e1f20436cd987a8ff3a415a7837e42c1200d40c727484f8d0cc675e38dad41f1672b1f14c3c5990863a6584da17920c31be9a2670ab20499d7cd5befec2a8b47920d237e1de82b3aa4a6ec80f09fb814967981988e5f23aaea2765f48d3a4326330ae999246ee55b8c91eeb9144ad6ed994522f40075c64035a12267e94cad0768e6d7ab39f9f0f4bab9989351d9e54dc4e76c75df654abf4df57b13ebcacb191e3e1d185b65c87ebc23f9063efeb7c93aefc41556b683ade09633fc7a7791d43bed545dfab5ef6d77c16bfffde5f169ca730699d36bd4ff5c0ca32f072052d49caccd8da7d3db118d3a471f95a60a022766320f88bfeddd0134462a2de341fba5bfa5d79d213b0bf2e10be8ebcbf37f3d6c27b8d7a06ea20f33018783edad5b7b4812cf214ffa3951013f2b8b78b8c6d0cfb124de5648e0d6afcbc29733b5eab5b707d727febebcf3ef0f2faf8f0f7f563c3f687f9720feae2a19089b3fa7766fbd8ef795cedea1bb57e9273efe39edff9b6e3e45e63c94da3f71dbda449d4cbca4ea6ae2f717cfe878fc9a95bf9df6d331b9c7537edc1565bbbb6fb97bf1e357afba8545ef88392166defd11752acd511fdec0df6fe329f95e20f4c7afc3e3bed7bffd78da5e1c094edc5a0fb3c9d282f004ebb0f4b24b67cd380fc08f85ca9bb7e4bb325dda88f51fc7fa1723273a807c55370ecc86790913ffa0d06608cd76b095f1335a0fa1b95f63e9bb0387e158d067e1dac1b96101f306e263714464769a559219b9938ef96054dcf30e3bc651e41ec8ede95a2cab2b26362b502c130414201f4963a5c27e0b1537c862ec42840d7040c83ca7b34a5c859144f7a1c3ed0195252e2cfccb8da95d907fa7f42b3e2c66161fb1a2534ed40d88af4e42347202a606361543da3574a505fd8163f51e7ef2ce78b3910974cb8a728087021db0ba873945c14df8b73c69c5d1f3f016989e876518101c81603ce0620859da040f378d814486bf33cb9bd179c4cf475ace20e51a5ad1a7dd324d8b0ca1a17f19f306f8b470a27d48a683bbe54e0193cc1e73a452732d965f41fee414b97b2b8221852c6a351dbf269659173f9854b4187e3d1ec8ed073141c31697aa62b6c1fa3035814f979cda19419a80d10fa303c428b5355dd8c314c4fa38735f300bd4600160c703f32ec82964103d6070282bf6c0de5594b605549903b12683c80f63ead027b2acfa7799c5ff880a9e52da0d0119dda2a224342b62ec0a4addcef4b758fdbccfc09009d0cf9e847940ea9ecaa3993d722db2b647c0005e6330e26bda6a52ec4db12b909b6693e032b094d7b7c86368718cd69d89397c993d1b94d89771c0bd350858113f9726e16c38f0c076c826334a3e26ba21b6811d46300ff1722463d5632480f11b473c426d4f793a36f0e7298edf0a6aa5e15f302947f219a7aa815dd5dc3498ee98fed699202b27870607eb145d5a4fac84af0c0f26d64c4f169c61fe1a41035f098588f5b873c8029a90be985ac591cead1145bd25b4f5c144e35dbb7b9433f953c9bce9a133eca7354805ee68127f1329eda6ee890aca20ff4e353dc82905cf92621c00d5cbfc626003ee6a20d5b32f5a66adbce2e43a55fe9d69c7b7131a020758ba4976856e7d4758ca6d5990828086031acb2471ef80e029c4d0aa6292ef91d2eb0a5279597cc58a9f0113209327b28a371b7baaf279ab1302238e646aa41803885c164582969e3521dec2a9e773732f9ba76fcfbb49a966280a45edf6dfc383fe51027d6cf71ebb786c9498d9f8328c78d715aa1a822943c382a555bb19590bceabf42131a35ef3d6b3c9ba9a84d921b3ac26f9772291ba2f33da5b13dd908d6c9ec9b5066239c8828fb24ea5f1b5a9c6fddbbaf9f8159b917da7f56e7be21e389168f8968d06321595326e1548d89854bbea74563d6c9f5f2655b27e13d584fdb6fb727e5894bff8e0b7e789a76c6fb0a4774d60ff59b1e7b08c0b64fd989b821552f7cc03ca7f7d3868277ee0487e7dc2b5ecf987f2daf7d9c42ab3cd4312e2df2609fdf2f0dbcbc3bebf15959b53b83d95f8aaa49342896f6e25be7aacf1d5ae975df6aecadb4c5dc83d791bb1a0369785beb2bb3a93c3a970fac408704ded861adb9968c1cc35358a25c3f65439ad083353ac749a65c266ddb362dd33ba859da25add33a1788e47cf5d94c44c68e48e47f5f2f0fbcbc37efff8fc7409c2b37e24802c7ec2c387223dc001c51a22a9320be6220be6a2b2201644914f32f1f8b5c8b36fd4da55c87f2a798b531052cd44f2813d4d45bc128f5f51c034db98fd4df91e541ec4dd2559a09c6d991550c7af01754a91ef6877819bf8a5dd036fa1dd016e00106155f00aa8a164cbf2c6a5c1c26a23d90f1c39bb221f6dbe0f73f98876e51be7e3c385f04b77166ebc2f13ff0e5fb8cceb9ba9fa3e4fc6ae53366c396f39e759b3bf9f4ce274e20200ac9ccfdddcd135474398577df27d53f773cb285ba13ff83f05ac1a65487cbbda71a70b03fd6f2af3512606c5bd454508d767fb4914db0af3a909f6cbde3da3192cee5442e0574e8482c7f51dc1c0955790836a6c81feadeed5c3c36f6748a8ba8f989ae9ff0b4553abeb5fa90b13411cb2767dc17804d54d86e7adfb7979fcbdff9b946abe9e1ac4095255b74c63f3be96f73aef9e96dfededbc3cff43fffafcfa3a317dff06d99da55ba7deba832c5c5d4729142f935fa5fbb77337dc3b7b3bafcfdfffde7b39715d0011db6e06dc3df92fba97ef0f9bd70967c68decc4075abbbf3214be5c1b1fb30c455b52b6a891b2459d285bc69475e37606499b27141c4012253fdfb56426addadeda6234f6c63cb83e11b62c78f23a53ac7272ba26f95d3e6ab8d067baecf88beede3f0fe7a32d19b97dbf48c62a6fac1cc772288bb3631c286723c28245cc635ac78df4039129f1b8b4f172d0e340c6e15d4de521be37146b70c6ea60f2114a16806fc0a837413b15f6a6e09b9d024eaf99f7c62ba7c35ee30a563b1d20463c5292180b9452022008a020f912e50cd2d22a982c1f158b42b7c75b037a238577cbe71c6a7100f8535183f5d9e928ff4d7bebf1f70b6d5c3f96b42560096d506e514d277e839581a809bf01d583a054c8da0328a4fd32e2c3505427d00357144735aab16a68df4dcb39a9c151206c88a2f37a1bb49f0dfe030814083acfdb53e8d95592485693df6243922311b526c1cda8bcde841710fb29c349c0f3dea97ed9affdabfeafe773fdc7381123eaf041d9a212868e1349b589d46e281a27f7eb3909340693e84d19c13d7ecbb09e262be76aabe2ad498cd5b2f088a8746232833383253df842d4b6a07042c6ce54a03e55c01c6241aa2a7b8b46a36d0198d2bf628ab789a9da82db8f331431ae34c2a031fd35e77f536691dda58e8bad5d17ba139af31f4215fc887cf262389e7eff492e37b151dd56da2abb1a4a82ab0e3aecf9870af24f81c1501ef00f796eda8ce7d7cdeb83fef6bcfdb17bb8cc9df7cceddfa96a98b1f12a632cd42fcc44ef840cf7278b17e47f4631d95df362ddd8c8fbcbfa92ab0299e3596dfb3a581b3f98e4be6501ac6f4957e30b491a473ea69b957d981989ef93d2e3a2d21cfffe0dcae3c6079ac9338a6d51967e5dc8b015b5fdbf7180cfddb9dfbc3e0cc3e3ebc33983cd7a59326b3592b446ec765160905a0346e2356214b0ceda322bb2ca8e5fbb3b5704a9d1787cbf7d4d0f003850eb3aeb7cdc65753a701b7dd17ebcfce902a7cf1f77961bf116ac14f89f064e1882893a9808a45d689f31417583013b5030a8bfe030c8b985f0805c07d76059b4ea06967fcbc271c6df5e8c1680bdb99ea9a6de5c0c38330742e2ebd69aaa4d95bbcf3ff91d83e6a66cdffc92e914399c090641a43aef8d4e42d73293af760eecec2e336da043dfa88012e9a92d696f41de7d6dab12820c265ce701fa8c69590db227beb052624cc6fae35771d33e44eb38132788abaabae3cecb6e14d60e84a6e130ad0bdd6f37afaf0f2ffafb7021904a2ebbbf32e2036448becb4fe5186e73e4d461b84d6c04b0ca9e8271c01285b72ee41a2b9615a3462c447076d94e65b950c7b8195eada8a7748b229f906721c65555843287f70a45b02a80f4070460118612c279f24abedb9216908351a53c237654fba0d3611b5dd0742cae78b8c073e14d00cc34a12ca16ce038e1c7380fadd5408988d7525809239b8ace7bcd2219cd00e4582db3b5c4c0831341a6b8e78cb3767024f34b79634d00c036a05684f27916407c869690840f61ab596f3829e7d9f30fda516a0cf54f6a7f6eee586f5e9e7f3c7d9b700d4545d70a31fa5a48abe30b0e0d587a8dd80980da824c37391c64ca31e3aac7678691d2c96e095931257161fb6c82bb462ae9f8e5f2190ace60b25b80a54bfb74215b941c848b22db48a282b497b95254da23f16b59e3615c39934bb1cab061be33cf435faee40da3eaae5ae218758ec87d56d04e8f1571ee4c78b548d48f7615d1e024cba1ec29d63c22a4cf2d47d6af122a5f926e6d4195ce2d86ebaa3d989d7154c7033abc8c572817dd8e1a8bc0585e470169c07458d32243354c1be432c1e4ae350963b5b9fef24e5deb414230f1b8ebb46c85e3aa9c2aee807a44115c2dbf64ee7baf00198d502884840926a0984e56f9055887e5fce15ba1c74826627e08b636de02ef925f207f0658eaf62d6d205e63fce66b6d207e196fcfc6e3ce5aa043e6aeb49f900d8ebf27979aee4a5063bf597eaf0fbbefc3e6f5e1eece93b71429aedc711c4a38dbdec344d79fd87ba45381dee6de93fffebd6727b3245184f54aaf6b7fd2ffea67f4bef667561ccd49e6fe8aaba8f0f3579919d07f9e0e73e460efeb8bdd31b6d33bfa62606ea82684c94441e17d55953c3cb22156f99d6f0fa85f3a4e8d4ee5fd5f3847c4fb723f7d32fd2e8ef1c337bd7d7e7a7d791e26c6d12cf7c12d58fc36983a2f5e9d96659dfa74e1155e497727c54a31f89ba3188fd526d5810815474179cfe29960c16251c87c54d2b6e9d28f8213a4b3b9d5f35dde587cbf9c79b0efd41fdc98a2d1b82d8ab05b2d22e522e2ca76ccb10ea644ed39b62cf771ed3eb6406b55031c6b2a40b38613930fb9e9dc7e1420c3075ab5159099459b72a184955b49e4fe42e3ecf835a9844a027f81af67b74f40b83f11a2f95c1ab185aa91c758a446e7a1da1f659ed7e30d0ff8e1e99b7e7d9eccd74c6adaf1e408da69381b72ae82240b8703ab5929451fe04cc91ce0a10a1f2623fce5f9b6152cd92d756e519ae7e4dd6a141bcef27859161f50173e68c4199b4631828d8d77826888a954f2fe4c896dd2aa1aafa201b5318a1a81e4634d581cdfa84861185b89985f59c0f6d69764c3ea8242b8653de688845befea0b66e3a4ea3b0a0126d6d59f2cc789a48b5adf387cfbbb70885d5118f6c83866975aa9a56bd43524f50aab626a55e0f3a96021f842553bfe6c2d41b2e18a406e7f420c017059413e40a8b65c348274faa0bdec0405da5f34429a29d2841dde6099a808f3926c01564bf5076fdca0c121045e2a983cf9a4a1d3e48de557bc26b03837558de19e2dfaa589f3a0743b40a169704d4219ac0381870499c540f3d3a513f959e3b80c974415fb7bd515e3e4d96dbeffb79e3a551e038cad0378bfbe989aa3fc3b45035138ba8a64562c185be99a99c861278763efd6ce943c38f294d5441ed675eeed3a9892f6ad96b5610d2dd4daf341bc66b06eb21495b5b3b59a580ee2e80f241428d000846110671a80d3935cb7209829a7f26653fcf1ab853b6061ea82eaa1a66d3b3cece420417dc241179306afdca1987811537a78797cd8ebcdb76f13244b6a8588213402d2062bcd7083a8ee0ba8563af3009dd069e2249d859ec55bf22b88c0db417be5d7d64f74473e281811de168c08633d9f58f68b6042a63b1b4c762ac951b46f82c868da0ae0a33a58f22aa68a0dfb5e7b7a7de20c3a3fb99f342e4e75706f49aa7a3bda2bb37a17bdbd1d8dedf3d36f8fbfff78d95c2a6c57802ac316b4fe9e35a8608f65ed33e44c9a1a3d16596757d5204d0c8af399813ac3bd2f47ab9e472bf4165aa29f1bb0f8a901cba701cb2aaa7cf21b2e86cd7608fed7a04d8dc75d30d9eb6442e84d75a7a267d4ad987030c839388a7205842c7a6daae74e48f534a8810513e3605232296e417a89ff03b181e47800cd0f9e07e341e4cd0e5c8c092f66c3f266c8ac45e3c2c1543bd78249cd3317b4bc72682d83c9d9e8a8213ce6e4cd03c88f52a3a140c943e33bcc8c77a37c796382cdf2af95214bf76794a4f0a35d2b8fb2ad7c0a6e981bfb64ae4920b61a8520f1640f11301c3c8db0023517e827f445d8185f9dfc9bb4220e147c8b1b303ab67a0c85036890a98c9e2f90cfa33c29aab2c2da84991694dba1ae7e3bd62d4592b34aaf8db7de584d1adb0a3b0dbcd999e39d30ded8c3633ef5752b99b70905e2ce4454528202e043c8c76b4d842dd475ae15166e57feb78797c749905ff662d03dbacbcd18fcc7a8265b81774d96c939853f66c38cff9fb1112708641dbf5a47b37890e67be0b666134b3d0442f0a62d4bb5c866459d3fb050989121b019d162431b3fc08072c689152236c85e665d6c9abca4b583411e7025f9316dc0c9478878f976f44863761ebe4ac4a0df1a6f92231dba3b6105c595516f6cccff0306aea56121d01a8ab25bf88caa514ea0e40e7e34aba71af53a02b805b6833f3893fc76ee2db4cbd035c652633473dbcb23ad3e752df93be67510abb190c8b7962f26a624ffda5e536805778ded86bcf9f8609f4c9d39802f131a55dc3d53c32698eaa134edcfc9b4e258c2419e5e77ae022d03cb33c5d46f14808da51ed6d900ad4e380448457f68f906534b9b0890ece65c10f3ef93d3c1431efcbd19513492a836df885c9f668471750047a597390ecaa0e38e9296c874344a1147290b72bcb1ec112c53d624bbe1708c757a90ac44cec18162ac118850f199e71f3bb6d5cf349184dcb8ba783eb1a031c877f78d72495ea218b65c2a84360e277506c7623fc72a3f78e5a3062f72e8914511d8ce2dff12c7f19742fdffce0225242b9a6f86de11a986f0971ff5ff285beef9ed215f50c5e7f30c21f376475a266b42388c8c5b635535826ac8c2900f927dc27a645c890aad3690aec69b2083ca00e271a72353b51580238740a483f839ff70b40a48db54ab6eb3b5bdf24b01ae096152f1b27d062cc1353979e77011fc75b1bc5e5f1f9f7edf4faaf4df0edc01620e4281d9b8e52d3ce523740ed6ddfa8dd3ecb0c3777ead330d9b3009f24d56ddad788c4b7b88702fc2accec9076e602eee8adaa73bd49bda1d92dc40f950c9ffed77ced1f73a95ef95762ef305e5c5bedfbc5c1546588fca887ad0b50f26a7c169b79c2b483adcdc5c6f6ff973b3710107f621982cce80b62d1df176ed9a897585e46236ae6c46bdff8eb108f576191616a0fc585f47caf7d768e3c6a18275a5af089df6fd54a0b4289bb6c1a494b56c3345659d8df3f2dbcac9094e3344c0bc2905e4e8c10377135cd5b2f5626d95a4a3090181415791b90aae2eac2a2627e608bdf87f353a3904d3f12bf8129ddd3ad3754cc2828811093bdf051000f17806a51872ec1d48230121285ef31dd574beac71ad8b9b3c43cdbd7233c88efd5dbe97695503b8a7c341fba53bdc804c6f2f7cd091a433bba0510edcc9266df3c20653a92c67830955796583f2885d854a6235880e1753fc0adca9cb6e3b1f1afb4b9ebeeaaeef8f4fbfebedb4d82b801dc464e0ccbcb64b31f6282c9249405f2aa8aa3e8fe05946d23782fd8915ce761160983a10cc07a685df290365dadb7b9597e1fd32cc3ebdd113e748e3d724f32bf6d9782f56b15b26de7fca971df6b893be9a222e1a69f6a0830ed720c99f4220cdc3248f5fb34a50a1cceb74fc1ada83b04ec79d5345266c1328f5d4043d3fbad44cf6cbb0ae7d690f7aedd6b8d2f46687cda486b323928bda62d8b76a32d93743b09a9a66228859d9b0059383328584923569f9986b2a25739f92ef9ab663b71906bd7d79deefa74cfcaa8c4ec3a729c457a5155f8d5ec7dd82dcc4ea2b307b769f8f251746b3fe1ce5176ff4a633768f4f13366dd932ee9e3d776bfeaeaf7d41d46d41d47d63065c582cf7bffb16c77b612d7c900c804d7b7ddcfe31415ccf8b2caf32fdc30f0deee015a33727353fbabfcdef211caa0e51cfc6c7dd65e6fbe9f91fbf0d9b3fa6da6f3e0555075372957fedd487bb6302e5462c10002d037f0b2086551f535175590fd6a42e883b075ae1ae78d3a5281f33b693256561f65a674fe6c5f48be2aa92a02eac6d9cbcc3a9ee0022e9249eef6c4b29ec10f115408bbaade9a884267e0c08606c0609505d57d9e511f3f385e42545de0482c02c6fe30db3a95f4e5f240b06ac2ea5ac9c8972c62fedb91db2c5f7d644b65236c33231a348a1db9ab98ac605af922965cb4680d4d9992e57e929b989655e4b2b6fe6064478702379154c865ecaa9951dc8b41142c95d5e89e31c4b5a4f5b299dc9564afbd0d2ab46b6515f55b21ebac0d24f089d7463f8b4aa687c48ebdc8f630ea6252703ae31f216eea6b3933171b3df14571c749597d361177fabe7b04fe7f0f3f67133e8ddc3b7c7cd79b38d4a76f10616b0acabf20beb88c474483f5aafb2a1856a20d5a34cbd905e3e68e4cc5dd3908a3a1868a068a86301de5b811577f27326f528a75d216c2e232206dd626d5b7e1dda6ada91f5415c630474a0f52c3fea59def6444845e4109c50858a5fe55a39585c98a0b221f53849bfe35bf6d4aed080b911174378b0980474806c4505cd755474d6b87dc7842b83882d82a84f81bf266b8da885416d90298b60684aaa649cb2510cebb8b5c8c37b0d5c3a48648c33b6051eaf99fdc9d78f821e672eb6d9e7b31d1881059ae5e30173d8ada3363d15fc4820a2593c92a2fc1b374e65e79855e807b1fee1039bb2d36e665396661f775ed7dbd2930f17e5eeb27277df71f7dac75da7ca4f7d5c879ff8f8e568eacdf0bddffcfaf0fab8dd0ce7dcf9df36b4ee43435b198d3b0ded29e17635bef3fc2397766813e8ad10313f80c97e598d8b076bacf80a35c8b9174c4d6b9bfa683a770026ae97d5970770837b5302aaee82d3c19430908c3b97a56c9fd009edecd276c6aeb2120bbfb7a6d8c1245489955e0e627c3ecae75de84de7066b3aa827fa6535150fb318cbfede08e96f0ffbedb99cb356caf9de192c57d7e5144cfdc080bd57ae31b3f03e373a6a3e12f1d5020dd2f50039cb9044f6a31c95e013f7be77c60fe4e6f31e5dcfcfb06b29d037c809611c7a98720ead2eebb8f3a6e88c886b30310f50b514f368dd2d8bf1e1604d287d9031245746148bcad73eafd3652e0ca3721e87a2f2adccd4c737934e87bb60d0f73eae4a1ffffcc7b5478ee77fe6366e3b75fffe3eb5155eacadffc9a75b78af57ee638f837ee778ba37dd108d7de77cba4f46fdeed77f664c9f7eec1e5eaeceb677764cffb90db301239821a58126e6efe747f8ad6d746698db4de05cb34dc2f284ccc81ad802ef210a887c8e2b946a8a961a60a915a6e0bda0676cbadbe0bc64bf3053950bdee4d84b816cf424b1b4995cb09476ae26e58d33a1a264bc9e8869a13c030584044c90fc6c418c02b896df0243614d00da2191c635356c69170db825f684c324ca1e0ec824358d50ea884f05603bdf44b6035a194900db0ea3262a1200f6afb885686cdd98e44d3a3979015aca4dee8262064486836414473d14b99d58d001011b69b97172333e1b5f0cc11b01088d20fde965128bd52d4ef93464da557066ba7c1249ab4827271900f63ff53d124b886a8365266411b3a32e3c15487d5355e77535e42ca1fa2d4d80ae3689412b85e693f16123a39c4f44a4d20c7967a3166d2ab3be9aae6e4c8ea681152da754574dce59fe9d3e0f15fa2d31e24d3d0738a3d8c40efc849b3435356f1296523b355108a3b10a7b329606428302af4aac50e177853d13db2376743b42cdd2889dadbc19e08220ba1c36d678943f8d502099e2991ca7e4e8a4d0b80996d645127f342fad5fc344098ea94e32478b3de32d284e65f2525a060baea0ba8432dca1e2a5cc6653663ce17eaab46eed4ce99d71f6108d2d6f6e6417c7d45fbe9b6d4c2d4efe9df72cd22dfc2dc7d5641f2b495713306d6a5b7ee29503046f5cf9c58a7b1c0b80b7c6c785750a9116db54fe3b53122ab948a15a5ce399cdc6893f9b222607a8ac03a9a16331a532f18e943f9baa4681286f210dc7d24471ec3db69f2cab1d7c980e50aee04d89722d286843eed99247db59c64472d4546ec284c78cf1d8937c04536a4a93edcc8d5aca81c07acf147be6873cc026995aee233d7380086162d499b7076deb685cdc408aebb4b4919f6180ba89ec594615e41c48cb626cdc625607dc0b1cb04a2e64792e805a39654c68d9e0bc0c4ab0e02e86d653645129eb399aea87a320906c57010b397b0a855550dc622d90d4a53896a041870bdccc16cab694670a61cfcd02a71a627974cab2253ea5096843a21c5f1412f5613c1e8130dbe2969b7c56db4063e11e450055253619e4e1feacf3029443e5ebe073763c17c84973a6e3266cbe9152477d06ce0303e8cf60faa620960855b418b386fa00eb38ef8012e7498fea3816ead1187e4b986117801077276e660b815f8f3355b63b1c1ea0d805c89efb2420f6002a3679c342fdce78dc815a3b1b8fd38f280f9728c417c8f4d468ea7393b54674ca118d42104bcaa68b07535d2f87ddc19b52c493f36bfa771d80e09e34d4ac1070b224a67bdef7e1f1b571b7eda7bcaaddbf9fc1b792d90d247e9ec3936011e0b4b37b9328c3a38c9be1f59acbf0b98f5d4bbe362efd4f6ae12e58b61c328295d0342c9f271559a1aaac2ef3212e03e85151e1ccd5253b05d08c4e6cf1047899c60dcd1030cde5c6dd872f1796755d7bff0efff07426fd7f3fa6708fbf872c0f8c7217ec83fbd7cdf68f876f5744a99dbaad0d9c51c1f6bd5f23296bbb1975e6d2eb5b36cbe3cee91b969a29f27f0221f2eb481ac565c657a5e3d7a86e59b966f56efc3a43c2664ea947ae770d8f0105cb3b953877fd4148a5ccf4425ddea60e2ffb7fa2c4da0da8f1077e379aa2830a08d547535645596f3cd8ad6c1a4cd5918434a0928bda94ababea87ddf7b3900b786dad1d74c4ce52c20ad45726ca57b94ce5503be00b579061b549e12b1d4a1f6aa0303e72c776c0f71ebf0660a8bd718389557b93dcca43947df0b00ca25f15252f43e1ad51970534a1d5ee232b8d0f9666249dae79713f0fdff5af9bed1fff98a2161c0a109bbe31cdffe48cf367ce72709abaf50d546d4e0cea865e69662c8d2b43301e8cb267daf151eacd79b1c3e488b8fcd83dae62dcd9e5e223fbca41bb1951f8dcbb5be5ed9942e3bba19359181db1131fe9a8bf9c1ae6aa377e7b7eb91ee6f90d02d81614a078130f4dad20cbbf5398e963d2e0d44609f0cd124ef9c611482e4057d6f606f1773b3bee0ff3843cd4a93911aedb0978ab2374ff2b5e1eff7878ed5f9e7ffc3ee12c577959585e03dba952a61a966a17e8bdf8a6e001cd1f4f9d5ab1f6c2089aa6ed48cf00d53499da1ccdfe4429116c174aeb44ea1466b78785eb03ae18d296feb5a5c15b69e687e65ce3c25d0619befc6a72df69940316c3d03be3a487a2f82f559c50b7bd94324a4d40a43a864042d3d52d81c2a696e5479e375d79b316779e7f29b2173972999e578869522009d11a4a2051f4149f8c9831818e784e26f1d5d18fa2328caf6811140f23d3a0620f57b1ab0ad4091d44bf23344672bc7f10652347918bd24f015234199061077339c0ebcbf0af2052ec9d8c88770680ae93e34698776a4116884e9375a5e939355d189aa8a52922b2b6db9390874637e17105280a4d311d1bc6a00b25d70375434333691d237c81e53df013c70acf51875ffe2dc553dd7893c0fa584e969eafd0a3de624604d440418fc2991ce80853b71a71bcdab6657cd2350f17131afce628f69539ee11ff4b90d50c54d42962e225d5287c1a503c44589a8af626847d4d0b12a5c681d39cabb6982085842ab119bdc3b776c17f0d0f531c63a3911e01bf7fd22e4c23da776dc371674dd0806f64154d1ed9d656901c4bebaed706b83c6b4d755be84dd9081e5ef99d3801a2294e9be2e51720f19d6685810cad6c37b568e006d83bd137d95fe9102b8e4182335d411f9095e756ee00c8b83067feb1f9aefbe797c7e3f3d3eb3946dec1d458992eaabcec0ea673625dcadce82baad01a7bb8ab73a8276bb2f81984f07d4a22826041ea5f206092a75128522cbd11865a892b931b6ef672819fb1d4009db022a8023e04d96037b0cec2b164598ea76530c10f8d7a7df62e83f1aa9811dee8afa08fe251cdb9587cef3bacf15e59ffe69496fe4111c4f5281e1e5e2e72f8557510085a5565bab0ee40de927a792623b71ad75626224af0e9eb4fb218ae6d302cf49ac61491b27e8f625eeee25e71fcfad4bfca9e208fa7f8e17c8f6793a5d70790117314512e3f0ff2b320738e335c2c5383ea3c9bf1e36a14d101f7429fec8b8fa672d8eef9f5d0e4c6210dd632e2973bd7bf76bf3e0f7afbf8b21d2674a6de74f64aa0464d1e6adbcd5c630a94b54e25d359427f3f44cb3c6760cd30b1be5fc801acf1cc93376aaf3777f0ed71b37b7e9adab145fc855180b1c9e421366587f1ecf33a36a683ad6e2915869903ad180abca50c41f360421d4e5c055e45c572aeed597b3b514f2d9968f7622ff8c4075874033f32914faa089e22540c5a31e3da978eea44ad7d0d2b4ffd22643c5cbb93db7eb88a6c384c873f67001f7479bfdf5f5f1e374fbf0f0ffadbf33f9e26da2fa1f5fec5dcb96d866afa7111611e6b4210436408aaf4ec2614334b37257277ee67ea09822ed37a8270594f70a7cd3f266e02328f62950cdacb865a4e357899566ee4cde07be3fe8251342eb3b1831e5b4de692c07a37eaf1c174b8dfdd0807b760b16f02a1610a3179dd9cc8acadf21ba7c63495d3ae97433c4c9e035ed4c4928668021475827593d7c19eebeaaa9ae232a081f6fcaac66baa5b59606a8ba9b57c995c5b65f9b6b53feebc09456ccf8e2461a093055b26b71e676a29eaf295913fb0967271737f3ce8cd051d948cc79dc06ed0e18d386d233c0e2a9c0b9565b151be345b94406c67f7e3a0c3ec31d3f898839a7b39a874dc05158628eb55ecdd5c315deeb7cf441341bea2a2ca837c26571d11929af9e444ba301200bb2a803965157e4297773a02ff7c9c9012e21448be17db7265a3ca4cac83a203a6b832b5acb18ba06e93e9cc2e185b615034a69783a97778480eb229dc652a396823bb6e2d3a185c7801885c8133217b7c965fcb96cef4c8f3a58ca372a0bf9d97a69405a0af48e5276649a249750f6f3a80e7a8861e3c31e2133be8e90305d0e85aa1a80f4484e31c069c02cc4db25cdd22514dae0311aeb4308dd5986752951be66d90f0b047bb26025948954a5df568fce9370951913fa3ad21cb569c0cd2da5887e66f99f9845cad6c69a07e5270f70368484a31351cbf5aab6cd7bb7591531e448f0a0f97fe0008958e036217e2892f9858f2c65605b95505124f86556ca1e22a735ed9f8bcf228b2e852336a08734784df62c57569249698cebe877fbeeafef1f77e986af254653bc8cee4f5c77800cb01f2e30862ad6794e3f7d771709fc9b666995b28da8cc10d4f525bf9b9bcadf9bce074b4dd3befd8b63aea4c1a569c4eded88c3807333be51d0096d3289375bd3d845ea3e8f703a5b7930eeea731cfa5bde27a3b30e896ce946f617b01c56f46f399a6ed6b129f04a1d33096873950df9f1e443e282ab1aa2c8f2fe575993e88fd6531ee6b7f4d2a124d52b61bb4f1f30c74e92d063ae6ff5c4bb29323630f084a242e0b09bf456ab21cc940cf4d41e467064d1f41bb21ad98f660b864cb0be2cda397ddf932ece5d84baf58b1998b29834926817000f41ede84a50d07b7ac644601c81f9421a0624f26f1657fd06e3932899a69c6a40d589c1db08bfebda6fdb0e227f4e27f6560655d9ab8c888a92417d7e26b89a7d9fcb87462c95f5e33eab76f9fd09f78ef5755bcb5755c6699be078bdf1e7affb82799de0193625da60fe2f8a0a8d44ab7fb7cfc3fffeb7f2b9e55a1a8ee3f4ae5e1472a8f59228f0ff278bcf67a78dcbffec5cb14e9c896e2b06eba50a78f221f4d1bf363f7ebfec2aa77ca2dbb439ed9776e1214c71d8ae765b4cb96d086d22a78c7b8700bd9360707f168b1a647760c1c14f14c3081d56cc11f861a68b16f816fc37182ab276d2ae13d63b83dd25dc3c5032db3ae49fa47ba5ace148a2a03de51f01ea01ec981d4354c64d7a2a8b80a2290fda852eff96a68bf136e64518c8fa68a2987a066688cd57262415ea9d52e67e8f2c85f0e8945aae9c72ab30cb13b2075d82b90e6032e0c2adab250c1f241952df6a276c47e5272be23ed0f930450a31f03b0dd28698e6038960dc960804b72f4bd02193d007953764408e6b12932dc628204cf30e36494db388c83dcb541b62da4d1d8442cc7d543c59ced8b84289676ab81ead218cedbb939f1de22eb89936bac611849625d4f0dd40dc4476f0ec0147e2575d55bebc6c621fc02a3cfb7fb3cdfce9b5f00b86968384b7401fa6cf42421d86fdbf73add3a9b11072e0b8edd383467e066b013bcae6fa8352453aabd18f51219030651205648ce0cfcb33d0999855a4d2d8bc2e957519f084969a830847a485bcb79db89234f4698242f819448ec40390e49da87092f33a632e3d431e3d4f911a7964ff32d4064e0bcb2e4ce22c166b234db4ae47a2366378c6bf6741140aa301dc7553eaeffdca65ddb17343691f3e46bbb08a8061de1bf7edc6e70753f33d8c7af0ed1eeb94def5e70e4a2e83830737e1b8f4c8d1f10baa1dabf53752ceeecfb98caa2cb5cfc3d5ce8524bf36ee286369d455c4ff4cafb51cd15e2c32315f35919b080c764be58e43f5654fdfab87bf8cf714a5b9d4c98c91eefaf45a63f89b5aa2a5fd2a0ca6d0e8f4f0f7af3f2b0b98135803ba6caeaced0cd35494590fa22b4b8802a4794ad3c19e795b8ad7116df7100b6c32bf149d7d6f6d6ade5d2c7bf47b866e6ee7eddbc5cde5c99c7fe7c084475ad3576dc453507a7baf1a4664111d7eee771e7fe1e5cd3877058d7a995b9ce7c383c3cbdee273d0978566f0fb01483ea96fef430eb72e5515c3175ef2766e9852f72fc1a404f3bf7d99199ca2b1395bffde8ce42ec81cf93585a3990b49cc857d67699eebf6caffdae0629f9b8b3f43536ef96acf54d2436f1415061992e5e4a93977aeda7aff5da8f2f6adb6eadb7eb3c373cf83107505a830fc46bbf2ae467cc379420d75b65d2e95efcb1ed27e7c367017c5a3016e27d45051555b84af5ad1c4a20ffbe357f5647cca61465f73a186c5188ffa962ead674962cd80e7cfd90ceac157f3850ba7672039dd764e6ecc0fe842056955bb659f1d2edd7f4eb9f27048af196286d4e1adf2ee3016bc5c6b92c8bed6d37af0e9d0fa94feb3c381d967e702ac8e6d1bdcd6fe8eed1395f4ca697cde334136343afed60955b8aefee64e7689c03e37a710baba06d0b7590a2ba7d96c759398ee574991d77f2911eee2442875fabca7d58fb653d84e34e2715f12203899d8e78cd5fe86dbcbe6c9ef6571a3805f5d66f645f3c778ed4b22fe932fb927ad24683406c1c61dfa82cadd8b93e2b71fbc890615555e19dd8e0f276c3bdc5e6dd279ce20e85722d141589338ab842b264ec45dd9db8128b20ef88c645155410c35bf6175271796b92a7fa234559dd80428bbcb226a82a0f799e8b41ac2ac202b5092b5d2f4365506647eec50a1fc3d931d5e8c8ee005e77654d856c4085f8eb98d3caac7d704d18a531635e7cc11b8c5fab82daf8401a3d9361f2c57e04747aa8ef44a6d23e92150bc7af1557742b0b41c1a02c3592dc525eb89c6b13422a92a981d6cffabb424026ceed63332875dbf5e603da43ba98a8eea742d2db8b3f818ceb3ff6690721d31b8b760eda4a1591db5d301cf4ed36381da6878769decf9498d71661e3606cf02babac1fbc29051c3061e5551dc0181a8cab7915551cbc16832236ef4f9eb5f22e6df129f9901ca67ed089d484975ffff4edf1e9f7cb2c36935e57f7823353be5407e36fc9db9013498ae1be6e2cdf590763a58d86d950f0add803d7ad97038c119604e9b3f92cb9af401a3a66c20fc87b2b776868028f4ac6c214bab1764f9c694434865fb52a46dc0027cbc6446456ec5d53f516105dee8f20bb701a96813174ef3bc449917655938bc24a2b63cf60ab2ee0d83380c74755f657dd5a9876778d66d67b9c1731f1b89043e57a87b289757cd79d03bd4aeb06e0c9adc965ecd9809ead6331b29d4b1baf2c0227767d0daad87f3037f38fe7ebb2269c8240e17c880cf066ac0edace688da0c5723abe5de684e4fa6126b5fe7e45d5fe9678b0fe1db771eeb81f4fdf1e5ec4689e7834617b25814f6b355dba2de1e4c0518ac92bafbdf27b0a3d69affd3b1fbb101f3e361dcdd83318d258a24ea74a3b54acdd9ed253e763624e5beec7d3b793a85480aee17b8c956762ca5dd6190562ab409e6efbe90a31affc8274eaa8100bac108b33510bff0e7611156269692d438a9da20688425f8fda5aca23a5232397d338749089db9ff4e4f465f7fcfef2fce3bb7efef5bf1eb6af934513555c00f41991e9470ea840ff31662a508a3fa5b2acf6e055961765dff12ae2b578dc55d52d6cc76b545e434c4bc82564bca9fdfbc5a67619d99e0c247371218bbaa28be6fef1f4fc8f277d78e81f273137f916b0d7e578d04ddcb32bd574305cb36c74483ff53a37410f68ec992e59b125a1bc24d654459abea19f72365d8da8c474623be73e98b81e316e628e76a8386d923b8c8e4257bcd3c1743e99d0b9c95f2676c5d8c86355861cf8e1c4d0b898a1558cd61cd3d29422e765282cb62e26c0422fa6faba375e0e4a5fdbe3def89c5632650a91253e980406726b829739d0087453145b3e9cb7532ffd8d8da1b75db3b1f11e3ff31e6f62afbdc9f18aa420a3161a7ce2111decd68524a7d6cab9de8103dbf8608a4b1b674a270ba99cb1c71588b05a50e9d18085059010849f4388fcd38400804189d27dc08f586f1c62f9c9192b7b65cac6a7a04d75c9249fe0868897cd6f3035f98d37116cecf27384135b483304b8322617718cc1d6015e7859e8486d880d5e8ae9506e52bdb12ef0ab1d482bba642ce8e343300e15d2b1b2f8400e3ba621b2f1a1b0d63cb1e6dc3bc2d90a124272b1ec8c2d280077399a90f0abf82a036c1cf202de9a009e069b4c8c71634d8236488ae1c41de1a309322340a4777a3a44673c32e2d2650ef52489aabec99b4031df080ebf98c6fef1259884cd58ce6cb925591ad163eb2da5ae536f4d0af1a0c9da81f2984262ca20db1beadf6d31d6617c49482f37e1b18b166313dca122cd968e8b26a2e0b4f88d03e68e3f4762935c90e1c95bf6b8bcdfc65669feffb3f76fbd8d23cbf620fe5512ffe77f2632f29e18cc43c12f1a40060668c04fe745ad7237eb6caa5cb05cea7d3c98ef3e8815498a1429d9aeaabd77637e832aeb4e3299d7c888156bf173cdf1134f7620c90e233a7de88520c3b2362bc4ce1f72372319fefeb57f9a841ca82dbb10d4e7752348224650e1e43bbd62d65e72a577b482c35dc925f527ed45ac4e1626ed8e03fbe222776ecabfce9b01f01a48b920f63fbd9d6f5f262252be8a24261c744ab855e0e1f65b24086613c39d3325f2742dd432499061a0ec6df3b5502920d01640dad89efbe1f5f03be193f1a044e4c15d410d59fac007b331ba27641471112c776025e8acb095a2ce6ee4f9f1f8d49f1e27ecb8674b08e1eb0a6d3de3d22e99905412ea6341505613cade44d108b1ce38c4d1f8c7eaf652790f83bac20d2241ecfdc86ee025a9c8a33b36fa842ccc06d07dd5ed885d14bf8477e714066d72ed1b7d8b0854e8362e24ccce0b564e3b93cd385582efa1453f3166abfc34176d724b7c1bb2c8221a02e51940da7b807530b3352f403b65430c885e490b95d64f705d4631d25b56e21d6ac803f307f45e390e72b42a0eb09124d21655c0dc224b81786d6a6796524842579042f4677076292d2f8027721886e86655e07d5e62cc4291d0a07201e70db55599843285c367403037968a887b8c4002e56900e8fbb7cfbb97c7093fbfdd219d0e0f52fbe82761e981fced9cceb430c26f396b379e875a3009428d6d3fe954516e2fb1b249544c5485498b60b729a4838ac0d5252ff5e3aaf1996d5a9f97a1b64b1ef8898b796f911ca526613cb624b919b34472a52e0545d2644a10e5871bb828c8a521c57a48bede5b043f6731407f9d2d1ab433513653bf8e1f711d7d4c343726bff54fbbcf3f1bdff4aaecd794f45cddb2d11b68ccc25df73827d182924ebfdc02d004e8ecb5bf03d58417d289ec945745f99942136f24d688ace74ce6df8f8fcfe70081ac719ff805c41feb30e805219c79ce232831c332b1a07982460d8630a6df9045bc4612e540961204cc8c7d7f32643c0e257ce922bff0199f008beb2017e4dd2e9958bc92c7560c0f9d3848da88a20d5f02ec2c18e9903e7070e966210123cf23387b258fb6b56a11dd4f908b5901db38510f12ac30787d805983ac80918c4db6be92c915b02967e8287007e13c36d40bcbcb5e801c920b4cc8c00c925c3c07266360ed8ab19e7bbf1dd5a4b8747a289d24cd09330de63aa4b0f2dd43b651923add6caef3b2988c6fa2908d418b497e58e43b91477269261a210ab1032d9890f2107ee8e532246776413ecc237f5816601f1401ad3f339bc9efd1098413482408f8f721cb7c2f75831ea5a54b49b9806f110050c1e2144c20ed790e4467c58532b8ad2c368bbcabe74e8b2d0a6fe003af820e5e7f2c694ab2a51310de92f9dd741491f3cc6b4d104a2524e1a274a961ade4290b7888d71a5e6c61ce88a2bf38b82e1381e9acc02ae025c139a2f2aa6e046802f2f2e2b6405273921944ec5f415a25699480dec6bb8ac25b1dbeaa389ba9a53007e16dca224a4e7e48e56e047370e8559ea39a101d04a04245c578ec81d8a0a89035c34f9393cc6507e2aee2f8b350b8ed4b30b5c95e616d0ed213e46a3c30f14381e7913c6777821c1a15615b02eb55364968e440628fd4e6249434b22d71048051280d0e2855995b4d8a9e64abf671790ae361a298c80d1524e903987960d330fc09250f128bc951b20ed0fe29ca7c1cb2911e636a64ab1249c4fc285373309527143f35544fbbe72fbbdfcfbe09cf57f7e0fe0ab9a566b7f652243911d9f74261b7978ced10457287c4a3809e99257bbf7007e5b6020e084969f18ea7ac24566c96bd79315918d33370935ed4a82b6263ed5a6e2f1db106700d0c8dce5683243cf32c034af7c0632818948b043386a070e21aca81c7dceb219b484ad6322154037703864c7408dea5242c0955a607e1b197692db67cf4965ecf638337d508572279d4e95617a975ffc8bd04cb46150a3b71cc45195b4e6272c80201e81ab8488f5506866815c56f7c2082a223bda5137e009258960f127d82ef0130d8dcca28b5d57e2b6318e0ee26afdaf03f82aa4d32fa9c001383680e15878984add202f249d9d76257b64b905f146fa1f84932373894f1a2f0b981b94e1c92566c609b041139307c86ccbd298561b4056e5a6a631d792832936366140c5fce2080737e20740bf0ff03e9bb64ac441246dbce003de85ba2736e5b093764dfc93372edc19556041415c64c4c27ec672e08eb0197c016105478dea78932af8769911a6d046eb19c594c85a743a63387ee9ca210927aac2305d4d648ecaf384f15d392aa5031448175125f2682f72d895512b8261defaf414c21db1ce104a9727a59e8f992390ff94d21bf1e40b9c73dad9740af833151e330cd82ba4392c004c989b831c0ed3c686561e606e1a217990394606a8303465544cce14a24c85f0adf1fdf6ee6359020eb64bceb613e847deb835132aeda0941349265600b736c813003f1ece6b51f623cb58a60ab3ccb3c914138a1bdf08857c8a54d438243eefc197f36a5f74e6ba1c1eb7a732b91b37ba75694e46e6af32de33965453f6e19b7be19853a84d588ed8d3cfd5b71dc955a9b5393ae5deb43e5bd7760f4fca9f21eca4f37df21a8155ea78f35df4ab57dfe727c79fef2fbf7691e2c29771b41b5e4289992b983bfe23656e5363eeb5ef6c1971456976e83fab694e56636c0be7c7e7c9a0256d712fcde83255b493fb98f8ae821f649799d66d0e7d353fffd30cf56af6a9dd57d8bf92ebe076a09a5c69e67b821de26dab16ee0ae7847c68c4788ca84d063aa8730e91d2f844e455e5da8594be4240e5e7892ab32157ae3433f39ca03302439a24141503fc0c781349ae8216321990bbc622cebe7e98f3f261ecb2bf593a57e563ac7bfa07e16453ce30cb8da4abac277dcb48ad746c05bc5bc1203e7539f34d9fd3a41c721c140aa409e608576ee5335b5809aa4c4c1b31154e6525b25640e0900bc28aabdd1e4d28f47ef9b2fa5b6553648e3bba4b36af62581af021ac06c63e8043614d0fc0613dd5d956e148a222b89d00495a274bb27ed457ca84a9a8f135ba4751a75ad376dc7cb4e1aedaf5dff8f0928b108766840ca9c379502c7e825510ca68497e685050827317483f7d04bce6c95c9ff3236e715889337011a9b6ce617d4b3e22d02c0839fa694c82a2217a27596e1040319b97864c5e32cc0c36c7c5569134d72489a16705b93a9cc8e373760a98120a02aeb671e1d0d0270030b06693760e460ae0da016c0eabca1240cb039de15b1c0f80ac00a16508aae0565f612fff4b25d26d90dd5dc03072d48c5e0315c6ea9b5cf1af6f9eb97af7feae3973fbf4ef19c48ff1fbdf83a6b7273ae152f894f519296e29968259a387ad635a2f6e37103d14a94ad77340b5a8de5f2a0060e9824db1d6a80bc24d7a50b894bbc8d9d3bc5d94dbe3c3eff0149c97926c22dd989097e6bb21ceba056a45d9616c67b38755e0f592f741adf00672f4e11f43ae3e33222f89ebc4f2b19fbff2280f85f5f3efff9f83205371312aa453fdaabb811a1eb88403eedd724cce4df5228ce41dde503301b8225fafe03eea3f25d7aa04d3ce172f6ce08ad149e6e5fcb2b8a1d729fe32c4d572a44fffefde5656a30fa498d8e40ce72393dae89ec870b20e8eb81943ba58edc43dca0206171d071fcf5f96a93b902e0d37fc3318b5af9e3e9e9e51c2fa0a0ec4a6ece1a9ddf32d9ef2acd33523dc80e7920fec1f1bbb22c4cf7b8fbfc2f2fcc4392ab1facae4359a6d6ef5fcf8f5ff7dd749af6ca9bdc6b9010c3f52a1c5499ff3b53fc9660a351de4563a1b5cd8fe2dd097c78cb64ae88f1f1e310ff8252a54fdb26d010819591686a2c7044c3bc09c216396a24aa76b7e2067692e8cd665934396b7ed8c3a59100e426e3bd828c43f30e7b07305ff3f0813085ad9232ed1eaf4f4f077dc617647131d6ba42773697d95fc13bbf53b57695d86cce120c6724b26ca1ee9ab8fe53d9255383c2c3608112696f326faebc2959c3bb9cf9df1162eafc4ec90bc52fb8be80cb7748371079f424a17efe883f17f626616a2a233f54139815f0ba040df65a70073a8e6883a3bc5091ffd410591f6109b3d8256afee9fbcb14e58aaaff5125e24e27a05aff97a8b89727fdc79797c9beecdf2a7cb015d83898c3bdba4ab27f4f6a2105f670bbf3af70ac2e99ec837a5bd4804655831667a61f5735e0dd0118cd57d1b3af07362f56b1e045892a426378f88874b770d1141385a741152107421edce5b656ad6be700c09ad608fe6f4f5e2bc8eb35eb4ed32a94fbbddadd2b9970c2b8fbc6d4bb7036dd568b4bfa4ac67d69b90f09145a84048e990e5f5ae59cfb35c24664156119faafaffff7fff65f5f1ffff9ede9f9459d76cfeaffd83f7dfdedf4e7ffb97be98eceaaff5dfd5f32ea779fa7fc3cf62e80e906806cbc207b0c6d4f3ffcd7ed034df637de1f39b9b085655e7e2cc33feadae9705bd13ddc56740f0b5fcb746d0c373147936970f7f9734b94d0fde31f2f5384fc4f2dbf9bb24cb13ebec1703af1b1de535d571059ca1c2c69e6d7acb9aca88882883d517a3d24653b1d1f5c17f9ed6a7d3c4f79d3d0d57ed62079a34a6e4f28af87aa696d66ffc13ab91fab04557020527653c61a9a57c9f3d35ffaf7a79797a7c35821bfb881484a533a4a27b232314a83a5534461c3cf56ff5bd6e84dd2c7950a99882264556ecfd3e5cdbe7193dee28db21dc8e9f2eb5be3a4a354ffc1ea3434c68ced98abe2e549ef9e5fbefcb1dbcffc086bd187e3ad5dd88578f71a3de1bb8fbf279596f1939985f4467dae464fde5ffea40337eabf6cfbf3906e76a86513fdf1d44f76cb40ecd887b47176741e4ddc18d5d48a0c9a5aef2a16735edabd53c5241fc5e35d4b566437a22a5dd5ccb909c9ec136dec5001a39fa1e3eff2d9ce1be18adb6a0205e537545fefdbd9873b34b5d68637b102371ae28253cf34ff4a2006fc0272572db3b4b0e9b9022a9d602ab7c1c45cd97222534bbde129e982a975ea8ed87d79fed6efce1973ce0ebee2b3776c84a70fe201d4ca5682e287ad4303fb3e8ba4510adb008cbadf500fef4cc0563e0c5938947b603df861cb3f641b8934504cd564392bcebf079ec2671112c902a4095397d7aefff2e757bd7ffc3af1edc49508e5b4f72ff2b6a7632bbe8ac7ec164feedb03f0e608bb4dd00bf660b712677c7788f68009f5e6f1ef640196dafdefefc7972f7ffccfcca1f833d553d0557fbc7cbcbebe35c3bd71823767e87fe9f197153cb55e49e5377ae8edda8556fccfb44e78bb756ef7bef073bdef9ee0ddfee13bb8acdcb9295c15e5db9b9337e00fbfa2f7db4e2f37e5eff4718967f9e7464f7883a0f856f7bbacdfc3e3d7974bf3da294a2bd2688ba8d62a3dc465a4e9f590dfb4676e77a8b05e9cf728122c5df0abf77f16c8b9588aa8aababa795abd75b75921535a2b55ba5d1f6e4985bd425694d64438567e777b6fb25a1ff309cdbe6ddbdf066811295ad5c35bc4471611d8d392a8045c66ef3adb0abae816ffc0f9fe2fe79c358cdac7aa4003b7b5c261f78355605727e95f5805930d6651e15d436b4d4d71ad33f0fc771de3f6d6f4a7bd0aef9a78de559cb55b1ff17b17734156bed36925fdaee22e2a6680f7e0cbd2ea9e7a05c0f4519fc34a57e1d9ab2e57a4dbbde0ebd7a797dd4cbdc304288b06eab34951e3c1b564218fb72a4beeaca4377950fff14a841d40921d406a3b0052efdba3201d9766e795ac4c3229bddef35a5c9ac05bf5d704dedee387c8c6e626f05664c1e98370cf221ba18054a16ef98b693d7dfbd67fd9cf2aca9ba82aeffe6f534875bade22ac620bd5756f1251753ade3c0bcca55520e6627d59a99385ff407c3309cc89944e44afb85df25d7ebba4f9664957ebf438c193c6d5db584412d6b4fbd66f63644d27db6ec3fefc6da0d9fcdb67b9c956f60b1bdfae2d93be730f5eeefc9af4c42d50f8eef9ec909d1b0a658d3d660ceaf1e00926d6db8ee8f7d0b4cdb6fb3c2591335e03dab01e23bd56faf9329fd7226dd9c4baf58221bd9d1abcc5ddf1f8b8e91e58deceb24216e59d119925356525e2ba357ecb265634e992f9744aeaea4d82e62fffed9180efc0d6ed0110f1b724321214968c3381df829d7494e4483a5d4a7228a15aba7637179da66e78aadd16a8fffd00bd91e87bac2843a965b038a9151ad5b938236cd577efff7143f37e04451f5198bacedadaba0c40e9f52d92e191a50eaec4b540fd0de400dae7fdc881c5cdbd3c7d9bb75846fc3409a63e900a9b9b34c8ab22f3b79244b833e0f48a2ff59188fb6ad92f07f9ed70468701ef70f5b43ae227329894a0c4f6b058878eefc3be4b2127147b09c2aa20354c2b43f4781ef043b75fd1ce39f377ceb47320d7121e9a396426244ccd2034a10f061201b3b13e103f87017eeba7823b9777735c119ba56ab2aa5ce6286bd662e649d7661eee0849d58d37a1e7b9c0a3706b934d9bf02ee6c55e8b3379564dc7715e0365c8f45ed3ad7bdd7a83d83454fbb928eac3fa455c01b7f48b96d579a9fa0ad6cbd5e93f99f4d0ea49f9cb46bc7963d71ae6f84645debcd76d55de84d35859da5f5976ae36fea2798eb76b525d5348da1d5f1e9fbf1cff3199a2a3636b847283b4bb2d11720e6d9f787f11445e045f7d32359b911494aa5aec22b5813885cfa2e1eef8bcfa7c62558cbbb96bccc66d5de3eb8e8dd49f2feb1cffb50bbb6b54a2c938939209c5143f1cbc2d9026b3bde6dbc179c7b34e6f66498bad0c7291bd68c947a75b2589d030d7d2035df2ee4f77a5d9b81ef4ccc28c813ad823751649fca87a3c2e60fd90fb461aa7a48e4ea1aebbef2f4f87ddcb97bd169a9ce3141bb106848128257815a86891e6d1c938f7703da96fc5a1783b446a6cba2393487928e0090ec90a5533c03a7338cf1b1111c8b40470705034a10a290e49060f446982ff544d4955c9e388435a7aa7660e6bdb72c5403f24345d2606a8856f299b125431e153363541c03f8dc2a0114ba07ba0db58a18f300e759a6b6deff001d71a0846d8ec9357003be75bbb086801ff621d92acf39b1b87df779fff7c9c2cd435a868b28731260e8be4862e072df658b976ad3729de519084e69c3082803045cfb0aa08d239141531644500b26693e2960497ca9bda9c54934c8f5941b61139f47c993bc057b952d01d1ad1044f6f96ad5849f24236b572c6679e9555a39aa8d184c41dcd54e80428c81842320ef4e451237d2e1a87b0af225e69916186646d703f04dd4e068876001182e60e0c278d2ec6c759357ebdd0aaf9792c5c9c7b9757c2e6e74dd7edf4a7df775fffa177fbfdd3f7af13f7af81fc34d2c1d047eea84013942b391b08af141e2ab6a8d043c0c995bda47e39d9b267902b404a8aa0a5899c951800701e72f56dc2010ec25348668fa9bd209edca2c9157a4b19ec76c2cbde72ed1ab701181de9ce6430d08b302a90ccf08d6607423b9e86413d033a9384429233bce992ce2ba867102e731fe29d2ff7ce587a68b23a638310316627c808217390833b931d7a9d4c004e90dabc7cf47287654fdcc92224d40c70ff11442e0d9dcd75e5f1a936b54701519b6cd96210c829f14a2e86340512e68b345ccf4b69c1c9b3177aba2282736432c84c3c40dc3d4f013c65a1124ad506497964dc4345ce24ea55d443411901860c278a39f6ac939835bc85bf513041659e3cf391940177ffc07488ee68e2eb7de6de184df1533d7a29353888261f2ab9b22f7b27858f3c6073d60d264f30020238236281e416eeb30abd65820a1798f87c9553256887f1887642c3a385296f3e109ef74f9f1fcf99fe3ce395ce9d34854d3a51404e0fa465c2a6e2bd4ecab61f78f9c08f1f587c40e32f3aede427613809845402a437c289c2f8e1eb41473579cf3f9a14b3df7d15abeefcc9d3fe1f8f9ff5b7c7e7e324878ab8c2299a8aa4b000f61699a91a110e7a0a18524775313dda804e68304214320b4cc398f573690c65c223285c4bc29f14d171bc10b984226a72c2ee12824c06a5312d810cca8b2e6572776479948117a498ea207f21afb00e0ba552144aaed20435c0659285e5a95679ce154b612a328ffbc6924126e4f126fc90105ca0ca20e20c15a7246a63023cc442f02189a9144ebcb48c342c2182642554538433cc57901979e34c01359a8fdcabb333c98bd021cf00b88e69829f2d2b5444f88df54dc90289c1d9811604ca75c82192df8b041c09e392130ef8180c998ab5096c2af5ce73d78d099c28e086f24e516919a78aaa10c229076e41e56cc7bd241e610ef004895ce8042ae436493ba1fdc9917709593b13e8f59e02ac6a2486144cd6d62b4909e157480f014525defde6c09294f8b242f509a24fc8dbf0c0c18f60b46142f351f38c689df64a38bc4d9529d0615bcd76368430f6427d23bb2b6e0c69dfd703cec8c68a10188334478b7e9eef61a6e370c3f5510ddbb3a62583f1cc0aba15cf26b44756f974043ef59f27821c5ed53d5fbe802b2a21ed2cde51544191570e1279ca61b19e6efb9a27ff2c849a4cdc3b781e022fa8780ce2a084c020573312d63da653153b50bdc2743011dd05d4b1bf21bda5c875cb263fc4d7039fa76ef249fb2eac1e74d4f25ab7f7b3db7d1a77917e35b8e41eec4ab0f4f5c096114f7ba56f29abfcc37ce20eb7f408dff2bf73110ebbe77f9ce7e65bd169cfc6e18872f43c07665e7412ff0d863e02723db44bf961cf63c283ca815bd0b87ad2bc898a2b3ba4342bd93f27465301dd7a6243bd562dd9f5779444eb4741bb92af9e94d417bf9b0b01216b5e7b05d1993b88b11b6c7b12ef59acca830ed81ba1bdfd15d11922e5bac08682536143f4e05eef83494eb94d3d858d33c9f54e87739871c0878b66dd4d0e9765a07f15e1f4fbf397c73ff6bbe3e3046b103b1d56e4ef5662137e2d2616bb70d2d4b913e4d3e545580d8271cde707dfa5133281211eaf21c6b6e1536cec1285b2acde13b76c38cd6eeafb97c99c508552dfa4bc85106e3685fab606c524bab4a08a883c6b80322309092252ec4036e9447db8bd825d6f42168951b0aad4a2e1724f0674966c6b952d98369371b147e499977e5e88b192c344f218f825f48da76adf380c8413bfbdc841d9e3e288664396b09753c28697671c203c545ec8a94ae85b59d77fdd3799d35055e15d1a5990146610c438253b4230eb999cb47cae1d3c1c793afef6bb7effbddfbd3c3d4f62456bb3d15a4cfc3d414049db8813828570f96e60de0faa6ceaecab8b77931fa2e3a5ce9d12702d13fe7e3925d242c2fc461fbf7ede3d4fe3c3b785b32771b0b9e4f6ebfd4f1c7b20ffa6baa1dfe4db5f2f54e51baee6ac6e982ec417c35c7c11cd92371e99572788acc78d87767fe0cd71dc94d95765f2158fddc9773cf5c897d3ca3e3c3eef26bbf5b217bbc46a51ff80d2ca2003c2ff4625102d5ff3bfd743857822dc221e2c3eae7e323526fe1b7c59be45675692fd105c5d034eae848c8381428913896185e9836d8852953b7ad023626a2955bb0d2da9ae5678cab83fbb8724dd32711dfc5406f07ef7fcf87219d67d8f4c1d629ae0c14ce0291c3cbe04d1d791c19c402ec886399b99c6e723c84879f54fdaf83c08c5459dceb4e76c4ab38d1c40dfc74fc92fca3c0b050a7f44a3994cdcc393372e9c095f928a67be17e710daf51913384a7604ed4b9637e3adb4a3f4202947410a2467ff08a84bca3c0f010678689b2d1045f5df670d31bba1d83a0ed2ba593c64a0060f8ab7f6ef21bd53c24d8ffd37091f6718eabc9d5cee0e749155f4d1632bc6a2fc336d749086b526c4795a1bc2bc82d24dc2cec6f26a9b902f73d4425fa9a52f9c9ba7f59946e313842034087f29883adfc46220881c843535e9954ef3d8f7fae5e9af098c8eadea62bcdba305bc08e5974620e9dd0534ec38b2b1a08ac9c0398ab5d3bb6d04e37b31095b9f8cd8025c435568465d3ad2c0112a8b7af2db0237186f199cefc14d19501c393e07acc106fa2dc2b29db92e60146cc7d2bfde93851bcd6faab1a93755d8364c850c4578bd87e4195993fdd4e016820c0f86ad0867c4e07d70458b18bc2536b603b671a5e9d13737c5c0fe1c107592a880964d29b293aa781f5584a601d2e7b93bfdffd57ffdffd8b6e59ee3784b4c8694533c2b66487790a9bc0354bcdb8fa266e5b11c192797f0b2dc605314b47177043e66ae59151032ca7b68b682f58eaf0f3f7332c5f0d9837126192721428c09dea682d8157b54d27221486f39083a25d987803e7970e813f6e8bc277786d82ab2454bffb1a4f95e2f6a5ab6ad3c59ee49fc62d43c8d4dfb810b1f65bee34e1fc4add8f4e391a884aa63fbd5c03ed4437151f5e76028484f50c63b9eb09437a4a828505417b85f9de68b81df4d353131af4de22ac4715c3b269a608a910a3520414fa8ecc2f5cad5e72c08001deadb029bc85d4747c35bf8a09399a687edbbddd73f27c1b202f8de559aa30e41a8759225218e5ce54888e048b88d821084cf8f902878edef92d802900e465ebf5d5028ac290e58e5557c3d64be6e6cfa66ef0807797d2da8a41b6a47a4fe9716f2342e5661ea90808116d404446a0d4d365013ccdbf0cc5196158dd44f3741ff0568561db44302fa3b0f49ca9fe2eb3d659551a30b85f5b5ac1093610424594c0b82194a421a15bb9481f6ca61af7813ea843ab3a6a8623294a3225cdc275989b17db4f82809a9cba58464362477f1d3129259d59f5090e4911f803dbd362296e8da5993cfb20fd6c0e24bab378a3a52e6c9e71dac9ca0ba7ae7a66fa932fd4e4b9c4eeb828280a66d3326dcb4821f3b69a822bb96879a6795f3787a7efaaa7fdfedfff1d7eef9ac9d8293d93e1a07fae7fa4120a1e8c0d4dbb9f00b8fd38cf84288ad30d90814f5bdb3dcb6157ee5362ff608ebc4a85b5044202cde6eff76581c78ce37e7c1a4d31af1495269a59c7f3c3d4f5b83bc5acb84787f1123f4de5b534a857e0cf7385ce56101763fbe2f0b62b8b3e98ee7673bd9af45ab5eef35f31d8f7f3722f5e7abfdc7e1a643d9e7784882cd2a25c7fec6f3fe0686b52b93fdcdcc18b85e710db86915d7dd8f0dd66991d7900cb10119e28063881730863841312c097d1a8c29353a9f3461f3498dcc27352e9fcb82e815b4789028f5da9c41c29f749b0a0878586907bbcab0b4c25a7666580a2abc63a2b9a294c5457ffd4f72255da9df990b04b124b66eeb0d82b19b33421099f177cd0841ad6b390f33421ef0eb0bd6b6790e5dd4f5ef55a7f3092b9e27aca057ee78c163576fe784e7113106bfe307a7b4a0c387a6b4bf61979dcca9ff41ea31cca05cd96d220fe7899cc7ba0a8b89fc7a7f97d6afa2d4be40b11ea7a97d81fa73d37f68ef39d731dd7f99274506457704509600977873118ff8242899f93084e19df3da587707a42890b0103c55049de35b5c217b6f4a5656656990acb9111662abc80a5ad187bd5d1a8ae7e25018cae37f458126b5d63feeceecacca6e6393f3aeb5a8a86aef54540e7e7332b5c66d85027b047a99a041132ad070e0e5ac6a78557823ee6c4f26f2b7366f9d55147bed25746fe7a5f8f2edf7a7b981bad88275dae4b2838a1b0d04f2567b13c2fa1ecc75f961e22352aed3eee437f161350d7825e972b1efb9992eb2ef9fbe7f9e2c3c105176e2810595bd4fc6863b42e033800c1e82135e5505629f8af84c7b81adbd8d83a822190a9f3cdfb51f6f1d2119681a40d767e8491dd1bbb5dd51665824539d4b8ab2e65d2b3c9d0b6f15869544febdc8917a95de5778bb52789311c4d650e100a4ae09bc0a45db00b941584bfbe359e1fee4f6a694068869a20da6963bca3c2008c3c2611f962afc747b89d04e2be6a09d64ef5db1c712dc4a37fd4abccddf4a0e565c1a645951bc6590bddb03b666907945cbb69d2b98926da6a21bc04800248d8b233faff9eede98e5493c8cb7120fe0fe6868b68fcef35efbd7ff64a784a8bc6ff8ce624a01e3301c91ce54e8fbf1a3c07502624bdc92830483898eff1700e4a41f627a17c659cc5fd23183bbd63127ad3ac37daeef1627a6eb1dafe155506955b4e2c40df441cbd5c95e56c59b3cbd09fec390860a236d6a34d9735128344df02a50c6dce4e9162e3f48720b3c0e11133e3e680a7b71fd57d1cbccc2599e2f958b5f0f79500a7ed33a6db958ae6a7ec0ab7fb1ed396f47fdfb4c481ee0a21539879f23b359977a7a0f346b894aba2f6d62bbca9827f5ca157f879000c18ef2f012143c1f5b9d0c54d86b6d4493d90549ac746eabd7030fbf58d6adcf991632b2da5aebe2613e1d8be2f1eac5db089aec8fb1f393c17214f4edb00f9c35ea9f93d62c1d70bd4db93d24c1028ba48c26e37b91ecbc00fcb51e0a591ec11dd1c50f1a4547dff4f8007e25c9642841828f0808ae01025764f09cf15eb05750bd0d32cff96c62d902285176a666c77fe3f57d52762b4d6a12f08119e0789f0519cfbfd87a535532c909143908b4ba0c02b27e952167d12f518390254cc67b811ef2d15b713ec745e5211009cc165eed25782892fe7846ddb5aadf4332178161fcdea3d6166195152617d41a00691420900afcb387802e425019c90f1ee0895a445989abad6f02933e8df48bfc046962fe14b42a500b727b51d8f40064946a70585983c4d4150021a8c9872dc768fc1f87bd07ff8d6b9c9617fcd9ac3bf7fdeedbf151effafe4c35e3aa2ab202bcc3437d3b52c7fb8c8f78c55f0fb2488ac0c53bcd9737bc8da3275afd90bb119ecf799d81317bf73f13e9855f4cf472cfdd6be31e7c27a91cbcff49e3bbaa6ca7cb83efca3c1b63ff74383c7e7dbb4c8b21e84febb6415b024d4686e05ab75c29ba383ce7e1aae3a09c356a048d583cd071ff2b7f3fab9f6fbbe72f93bc94a4de37472d351856c623799dba3509d1779c6e55fbc9773a3ef80e0247699d55f21de75e61bee6d3ad5a0d3f56d2b04265fc517eb6aa28fc60e5addd60abbd9376a8be83d5f5479b66a5a55bd3d46e2e1f85fe759cb22689258e14192f6aefd5841eb91eaa40a7172937bcc411ff8d164e71bcfc0f02f25ef4ee2bcf89b6e9c70f5af248003a8a929ee424852d94ad93531538ac8bb3ab7676b9b41acbb297c4483ea429b8c34f9d4c0cdb0c7493eda229c493ba1758d3f4c69f1f8fc7c7cfff2fcf3fc888a0fe1bc231b757d52170c4059a871f9fbefef1e5f9705eca2579f8266fd2fb73b46f17caa93ccb0be77d9a28e3b399e34d8e82058b899f9d347fe0e3cf2eeae3c49fbdcbf050cae360cd9ba2b3b1c8c8871250ba236fb287c948065b749af8d5dfe960dfb7b426143c73ff433e5684ff132948f3defef5f8d44f5346a8ae89bf2de8cfcf9d7354911bec8349363477b7b47127a28ed24302f47985337d2a9e727deb0214d25bdce75511362392acb6703c910ad02d51a1bba562b9b9459c3eafbe97e7ddf165be8f22e392e4f2a30190be11a05f09c6821e16780d3fbc93e26d4fe57926f12c5004192fea56366b53566825d7b652ad9839095c3223db9c78d7f2433ba9d27652bd29d9948c6910041c1012e55d43a98a2ff0aec51a8563b3367bc997813cbc42fdb50af8c1cd54abfdbd4941123bbd3709f8cf64ca3bf75352ba9c1adc92f751b835bec7de94c2f7ff9edd54b9dc4d21b7870f0e10fbcfb2b72d554bc5bd772f956fa7142c26da97e7a77e426b45b6d3f994bb7cd219241afc3675f9c1bfde57e59193dda507e1e5f4ff02f51411e8984d54cf8f9fbfbce8fd34eac24559eb4b9db32b609c7b5ea0df51acb2814e62e2e13061716c6488c79141f182c1f1cca7781c0814454d3628cb5de8d669dc9ba79956c4d3c42ca386210a3cdf871f00aa01bd3250c2e9707b57bb053108f14ae415fd007fdc70117526a0fb08b26db8dd79759c012a4e953e28a7b89b071555d04e93ca1bbf753ceb17dee10b685ec2aced59e0dd0e0275377f70a0a2eced53b035d85138b98d3fe99941fdfdf7f3326b2a22d6a1509f79b60f2036f23c33398aa6143c2b322e4765f93716fc19f04254495c1f4ef17ae0353e9b54b6157020634b3c55e30ab7842738a0a8e5e76a433c5fdb147a9d4d26b05395f4898c93ac061a2d6b90bec47c02eb0aecceea8d0d05d31641ac33e4d7035c4745d9bdb1a5184a89bf339e5777cff6763ac9f1ca041052846c0a2f8609b33acfe628874239784f10a2b18e7719958c45ce8b2f5ce093c63df5c578906a55972eaa574f55d1b2f29ddb4d5a4722aa938fb453160ac1bb591b76ee81269f386579d3c5361484d8838f2b8df0ae66c452931d7df2c622c99e1fc7705896ed5501030157b527bed8ebc178aabc0a7ff26a1c4f55e553e6e6f98515eb44fc3ce5fa7a4fdc7a2a1a4ae74e95fe6d9deaa2599f1f0f4fa7c7c99c5713d22f8abb52939dc9f9671b099cb7bfbc92b7144d0e2a431de83f5bc980d576e97288a4f96898b5c5f3e9f1b37ede7dfdf371ae764ea0aaf5c6bade096d530e7b9054909050f21e1b3b1e8f1d742f741164e21ecc44ca991c3430f9089516defd7843b527cb8b78415e1d522d8b46ba842a86ab5bd8bbc1519574239eb295eb675b41076469af8349ca9b1874e21f14434e4b98c69a485ba7289a18ded02587b159c6ed9bbd623cac13bbee27bed5a4dc51a89bb0e03b712723b55cb5b4a218b6fcb3d703a8a0ce840cc6662e3bffc078deec78025d43964829fefac025492682e9896b20e7bb088f873304ee8ba408fa4bee36c467e266e79a490863b66476215ceb9d50bfa5ac9c097c2d509bb881988687686c2f8407ca354eb2a0bca95c0884452cdec9d5f02a2863dd88020a9a2f5275803bb67cc8bd4a8eeb102e562b46764d7c1c9edd11c171256ff004eea89af81ca528a7e5cda4293fef8edd0cfa936eea4b9d7bc6dcab7c4b7265f51804abaf77b6494eef84adcfeaf89f42e725fdf15bd445c5fd4cf1fb38b425526cbd76baf0df513b95b1dffdc14b4ddbf365f7fb8433c32191d9d0299a80b2f87683ce4485c763114171c4751fa2a1bdb02d800029483269d5007d696c5dad46c650ce9a8facaf87a24cdd4ba5aae9c98e52c1bc2d688f6042d3b8ec6fd124b8e490f58bca4aef2ee68927bc8f967352498ffde3cbe3c4157c0bc871de51b440f6fb76149177143f8069182ea2cea0881fd951f463d47d1d2ba2a34eff7114eee7c7fe654a9e60b75639db39bbc525eeab4a3dcfee1bbfadb3bc9acf8fcf5f4e8f4d0ff62c6e0f32d94e83ac09ec65d4e899aa939ee7e08a2ba01e8be0db03d2856d54c819c2b3421e38258fff9117291b017c52c606507891385f5ddc99148497149e64726d6740118970f0ff09df17ff3c1b4ac88b4b8d463681f52c546ddc11d9b284d457ac4fbc2cf1106f34c05edc6f24cc2b884cd7d852ca9bb74558d74ae4fa872317fc6de22e027f1b0f0dd094f1197d008b4705af1b971739c7a0460b865c0f62b79cbbe669f588cd2297d1830f4dc8122b48b3841c0ea928488d0e7c1326838fd8c21c4554c447098e00d135d2c86963c1d3007634be73ebe44d36b011e597f2068f1ef01ed0cfc506f301f1a6040f08ac64b250b7671741c1108480b8721d9314c5496f70bec19e0841199fb0e663d806133297bf247e4c92a04e49f8d1d02c210187e009e00af0283a24824bbe7a0a621dc1c2b73c24897a534063d6999a7ab461ce2249d1adccfdd0a4705d3e51ea743e69b7a94b95f0a5236dcd1b5500c8f62654b00ebbc20381fb80338970bf0eb9a2f052521d7c3c1939e95cc9c2c11879521537284c284fdc5db8b983d84b606c282681512f55c18d252df52b59a9dc61c280d34264cc49a7770d4f1083969f55b6b1032a3356b6904d05bd11a115c1eb872f1deed6190b501b77221e7bb61c01542c2682f27546e0cc3f27941bbe292f3c9951408e4e3a6900f172f4470110f16bae035076a05f09e760f2d2d70c8d9c7f398276d0812b16347b202b80877697f8324926544c1e95b403c3b51b12ee6d342e0ac08defc54b166e942f84410374e0d5f015c0715985d405c143670a867908c83cce3cb4e18e75729bbe60068a0ecb92240a3bb006f048e527c1d1b5e85cc0f4b36b77306c4fa5dd04b5ebe5ad0cb32cec1d11015627c5775e3a2997c0662e80231309e41afc0b6ec2641082e49b0bb8536e70029980adb87b5731b5c48a7dc76cc4ed65903627793231802070b6721cff3151efba2696bd185fdc94bd3651f93704166f09b274dc67711abdeafbbee240f6a3037966e97dd9fdf9bc3be897e7c759b8cb9e2238a342a7d309cc5261e34f6143271d275b612e4e7e889d3b852e4f3f57a2529966ce26b8a1279e2652b4a1e97b44fae7a71f384d6f9f66e6aeba721e5dde3ecfa6be759afbfaf1b3cc3c671796f697e7c7fdcb978b1c5867c145d96b67953051e8a8f3ea61b3ac2e07766a39506715f938353feeb8fbfd171243df3b61fa810137b1d9d882c00e364693bc70749854b71ef37d30f55336d5820cddbad1a54896b701d8cbf2e16cee614e047b2e8ea7c40b7734b4723c6443f78b80f3f4ee9ff6df67f0294941e9f48a68e04aac66994a92043976e01d78a7891e5c974eb18b1763ac5d563f7d7bfc7a56fcbb915175d28b84d11558f08c283fd62d192f8a2a1fdb2c6c8be2059b1e28be1ea2a6b8a66895603d0c37b749276d72da06100156e3f6065c0d6c099b9a4cb951592bf572ec76cf8f138a5320518ce5fbf0044047ca6c3f00f49fdd430b867169c850d98b9de6b0dc092d2a11c8247ab0e03bd0008969501b5378c4228a5f6eafccdeefe90055a8b80a120ac4e0f4830d767386778dbac403e5fec106a322743037b2ee6fd19b7e7eeafb29b39f89197445d0cbcbb235609bb4821669f46e05315d78c3c0bb21fe55161c3422e56058e62fb244ea92169f27098a096cbe30fca29028e3d4c2fd1b1b4125b841b286c551da0f129b4c81343607813489d303365d82d957da35044de0134c45b6b7b3002532f6ad70683b61210930be6c32f2981b61145b19bcbb813462640bb4921055d9042ef7ce1b0f77761594b6c78e08b17cb02509c959022f30f62c24f711a2541328a9c07acc15c3a67021d991d9563762f468b3a694b18a5568a46fd69f4d4890c4b1e5ed85911c57ad058e8824c0705bc1691484f31990042e5f6c4690b84c6c113a4c435e88a150391ebc9acea4c6708faa71850d7eef4d0503968926575421fc2a020acac1f0a652ea98a7297ce88c2f47d871781fc5fe0a60af2ecd02ab7c4fae708304cf2672900bf31e2f8099bb31da13b6d6ce497fadd8ba150f418580fe99858fdd56d9be4b1a4af6d2c9ad6c124b164e6f6a521e5eba5ee2bec5fb883234ad05b2246dfc9e0b5285f72a41f7c6f10501a06886250de4da095c7c70fe6203a4b0c3a8e0efc6f026a166356e25176b49267382e8c81e8d66b117b719000cf2d85d41c482ab2124854d458918daa858a40ac0b3ae9145046239910ff55554395dc5f61a9b7074276c65c894f9b2fa323128d20ed956cdde296af24ecf8ffafe7bffa8857e6fa96855fe9ebc87072295de4f6dc80bab701b921372435a1319fad7b11bce6af952e82aaafa5ebec1eb548874a642447619bd830af14ed81e23d81e25f471b9da4255c7fd0de83917c969cbca5de111428a0532357f4d8e45f9588ec53d2555aff3187d8024e827798ceaf5ea9a6e78e2df8af4a7950679087f9322ad607c2eaa734eef418d817599bff8b664e6107cf04266ffebf8895e0ff15c397f5f96a48b8a3d137b0445b4cecf8850cd8fb21da1323e995a33ff0db761955f1dc0e8572b838d0bf77a48c34957ceb73e21fcbb93ab3e3f7dffb3fbfafde5022b9164f38e8463247b272ed7513731107e272ff88b878f7a2d3a1d5e0f30dca90bc837affc5d00b420b2191a9d2252c6c68760e813349da239c3d2a3a97431995df02dfc34e90b24da8896844563cf1d32e3746b3d7d35419a2653479d73508d80ede319a30e587f43f58f0acf751c657aa58149ad10697e7edefda9bbddd7cffde38a49974d14668622a4fd51749244452441a68bcd81c84f083078afa4f0aaf06b22f956028ff18ef890a448c9b1fce56ff8ac22e05bd9aae0e3e4a4385dc237e9f5600150582b08b5823829486805095210df0ae25a41286ab7c77944832a8db226bf51912b125f3d81d40f5f27b98b2425c5b7151a4c6ebd44c776d2e9dff442bafd76f87b3d4400607ec9a934591def92d474bb03dcc06fadfc28beaa52d3f2b6dd77969abe5a98dfa83516496b516baea113b4062369b1f54e7669d1e29a3f55dceb1de3633df4adf3c8b589cb42ad30349666ec2370c85ded60d219e5fa488497be3bf44e7ed3baad247af9bb3652926a63c70de591dbe2bb6a3775be27290a34007f59b7ba5a3b3f702a7dad583fd1c1fe9a4a71f32f24c50ca6037646bed70e3877f05423b88eff790b5457af4d3271cb07e73d7f0b8d2fafa8f158039826789ee308cc1ac15b7cadd05481356d7137aed77c73dbc0e5897b436c059968b2497d469e90c42b11c2bfd44406c5c5a0e41b4506f9406aa1713f2c3c0b09e278556e7976ea37b4e93f036ff1f2e570061659a15047f52661406f6e43bce8c057df6b615d8f00d2052de15b68ca9168ca9150426a02222fb0b922d1c623bf0aed137ede4b90154e8e684a1a300d1117e16e9f3764e8ce085e50599525168c422a7848e03b4133a28c26f026d707534968121232fe95b8428357ce8453341eee9c22acf9706101a1092f10cc2d6d92887cf2a727eed21d39534ea6f8f5238fcb83e432daa4d25453734672bd330165d4a61217783fa210d80aa641d2118a81944cc8228a0b0d434a7b01603804a47d6d7cee5d35698ff835d411a138697cc5616a384c48e09be04132be6ebc81b09d936d371709fb23a0415e0fa626d5f2b886213d1df3c7c9f81e9e05158197fbc63a93e6ea6207a2d92af4f619f3dae473a154f6f9fbb7fecb7e37c380ad93362f047c6949f2bde26be283033451c89dc86131286bd11987e80c7ed469bcfd90ded9e3e72fa3212ec9824e0cc2c27db778957958e1c10958b978bcc5170802963e487e1edc86856df85cb7fc057c116e02d78da00283931d90e7247e5175be1c497c26c54fce588b24349bce3e8529f2f4f1bf1ff72f93fd995b9159c2ac1d472094039e66e2adcb738796c7e0b606943756f9e6cf0a5af25ba71ec83c91f61014898bd2d3a300ba2e3c5a4eadd3fbbc2d15b596013fa985af9f9f9e2f72b3bdaac6972d41ef2a9bf4104d9295250a3ca680a00ddeec5ebc162222cbaf794328d0eb38eecc218029f2d2be1708321690d24e07908a9643fa2601bb892621f626fc5bb1f9df8b49b44588d61b00c3006b42e6649109de61124d0ecef09333366d0d65554dd3c5852b261bf1d7253a8acaaebce94d8512b4c371c85288009c4521a4b3a527f1cb5b37fc14f9cb9ea7d8e1377caf646a6d4264f028c20b838be0524e846145e337015ad64bbd745c497bdcb642453baf861aecc74a169222dab73ac42952181ae5a4c9d43cfebaec11d1e20acaa84a0b2168b6d10567c3fbc628405de991cbdde379ff3fdf427a91a7b44b7fca6423d9431c03596a9e5673e26870be083919c07cb1ed2167bdf5f4d83f7d1ba74dde2e5b3a11994a7de2dbe387ad7cfc7aa0622a6ac46fc85871605aae197c9e4dc5eec95061733f0943a5a9ee818fee712a154df2485672e079db233e4282d5e29e140df1ce5a005d885e12d2dcb12696aa132c45e37d47d994d2e30379686a3865ea1b787cde1d276a3c20dc2a086c01eac88f04ac28166d6eb5e87534d9ed4c4d99ffceee3065b7c2b8e710ebf3155619e26251cc86d8071e737c5a64dbf27419bb6a5cde1b2b80532fea36fc785d50b19a907a984d36765c77884e42bbde175d4c2a505576bc4fa9a1d7814db028e913c83349c42b775451048f11f848b3867f7e9e08e7fdb4c304c20653cd3bbfa90fa173a7595b7c7f7e3a53cb436f9bad1f84639120e4013e6d21d43c0e5951ef75c84c0d86028208883b669386c891672339b3fd07d3084408ba013b655fe0740bbf49041192ed5e664b27692b488fd6823d4bd02382c67d0b812300e6a0eecba618628adad46a42100e1120ee9c40d88bd39022c58108468a84b583210ad60ff47c36df9c299b25a7cb4c280413b2059a980db8d222e7aa41933dd848bc09eead1379da03a9c7d74e9889abc484ad13a57e20ab51d0947107120b96a069bbb95c4d2d624ddbcaf682d4461cc8ca00405642ee1092700ff259a2e6f9db358c6943054ba8dc264c9c16633d087272df8c014110bb11489c9aaa77488a7f18030f22c14c03210c7d282fad2d9d4b102682dbf590c20ee278e69a94d0b416d12bbf592ef8d391c91b11ec3f03b86204eceab480e68d14d3575c3e9615a98ff9b96a68809924fb01d93fb922d858e03d2b108f49d61790a390f1e5348d3e3cfe53948fce292251959d43c6ffc0956295bc9b7ca2d918b7dcacde50dc995023ffb5bc3a9379038db883df4413cf0eeb21ebfbd832c54decb2c9b01f81a196862b0d118c4d070fd0d9156c1bd93ef6bcc91616cb2a805b49caf2f128f43b6e18c2b1176526f1cdbcebfeee3317a99a72797b8a77cc59a8650a8a3f0613c6bcf7e339d35d9bb8e1dff6249aadbceb97ee2a68d841d4fce216c5b043c161765b414b53944ae1db87b5043521d4c5dca0fee7befffef9513f3f9d7d20cadf4eea5bd9f34cb478efada25b123501b4a93f48203ec4ea145c2d1fd706d886165a1d386d56222b5c2e3ef5d6b5c098112eccd58814db2b5a3810ae4980e5eb0a600752f5666dbe3bbbf2f19fdf765f3f4f59ff82aa578357fee782578d6c9ece64f36728c0bb4257159b23773d629da04dda22240b5226ee42b748997e32884d1715fb748e5b4595d72bb536c5b61bb4f9a8f41f4ad0ea25fe619b669b54b998458b2a8f2aaedc5554f9f54041ad50aefb8d3be99b79bf4b77c68a68f52ddd9fc7ff79d44f7ffc31812d5753d3a9212885110da469b906fe1bdad34191712fe74d55d085c26a8424fd92c1bc06ba68b7f3a6a6a4e451b0d8fc1ac9bf67997e24fb884de6422f5ceb84d496d832736d147bbbc9493be21d45cb0103e10f5be2e248732486066ffebd581c4060b141504425174afbceb32d27492a309e4da8c8f2c871273c41e3d4833b3e0d35d26ac73f90e5cf10d40c89adf020db43eee1490c59bea6bb44af68c96d969c162458511959e8b6c4c67b487b417946ae577e016d00a065dd8ed7cba2e4515ac5c3e76a9149495c3f5af6e1417bd0bbf204094eb01244669c3707ce2b4ccece0b3faaa43fa50ca899cbb04c5c16067c328404a8a62b49c22a04405be465cc11d24f602226da025d170da5c67ff769c0decb685e02adb0342355a6c034a63230e771c9873a77c87c4a99c7f5be39945c4310882de7da8c4f6c9f17a453235bae0e7b30d7408b16764b16b1cc815ab891ff7a2dee31c9831750612edc733348cee5554b9de11db3d0e42752e0c8422551b91c6b5f274255febdd4af81bbeb1ad5fd04961254028ff3183cdecd05a735db3c208cbfc597ff7a630a28bc5f707e360580a13c48cfae00b4227307ce7c87c2b021817942d08d7e207c179c3652f960fe51b3aa89678b0c1ef95cc6d9a224e461a860accdedb16575f03e2c8b8bb2f274d08016bcd1b74e45c1de6097c1638c5b76f47d3aec21797858a79a711733cf60d8dc60780435263b39b1d5a30c8fa40753dd952172408ec747697101e04f29cb43d35a08a41aa3442c2a1a4c8b82dc9dcc66e02a8897b319d0f23c9b211516c30ffe27e5f946309b05d999ae4c6749b229e5342eb7d65b9bcef6cdabda3e91279edf2aa60c63e39e8c953068e153636815302eb4b6acc3f10e1ab0447b5eb3e0c3c959e24539cb51927e4624e46b78235759ac5293940d6ac1aa5a021cd30049db81faa2184b8e3b71956c7d2b62bf16d55cabfc38ed9607e25b8d6fc152483c02aa7ca0275fde1e2499ffe683c40915882970207a5456a400a83a4603b29a530414dc06708e24f0b267cd7d043d34965d31b538258fe7291f097dc39c8f29bf98140893beccfa1ed33e6f841c267e785928a17ba745ff0eb57570e4de56e3637b91b36fbd3ca09b63d0a0a303a541096e2f74f304047bb001bd1ddd3dc3fb87f5d80abedd56e332a1cf17e30aa1d7a7c5228e7e0f95e18c75bcc29b902af77d87a51cf86f4a1801e9ea1088348e815cf98e5004b4cff565bdf5350a9f02a6cc30f1b1266329a0a3ed965f7a532bd7b0255257be5557bed5936f27a3e08fddf165a1044a45d06963b266959c681aa3235b2255967c736bc76cabe1e671bd2e6784303577bf225505b440f608bb4256fa11f55b66a8df8cf479b1092a1e2fcdd23e99a08229ef3ee6a682256ae75298b30ef2f75ef259444d9c0b3d848eca0c458ddc39497a7243d46945d973eb40d9e3865bbf73e3914e0e746bc72d2874d5901a2b4ec188e4998687065a6c61e0df3a429529821ac0f18adbe5318dbb9e56d7e3394805904a7c9fcbc8c49be954a3569212ad24c85fadefbaf63c7b95ac911f93f9dfebbd57f6d6c94bdb5d45954c76fc4cd7cf7fe7acca30c71affad179a8b9bc53fbbb527deefab5768787b1e1ec9ab0805ee7915ebe3f7df8ffbe72fbfff506ddf7be5f62435ea91d8233125de99583854c4bbe9235bebbcf5ba4ba6262e519425fa76858a07902d8704dd0cb1901be65459b63b8b0ee0ab6e613e2fe97d0d5b321d8ab3e391e023a48d6cad41c3de15dd485b67bfd3e2be4111e14e674bb2aa29345b549dfbc1beab6031bcd9517eaa171ec8b32deb4ce2b9ad3878f365791810395c07599221e913c1e20b6684a81645f9aab301174c02f1d0892fc406a0ae2655919dff77f5ce2ffd61324fba4ec793dfa48775859b85a3219eb4efcac9bf8bb5fe3e4062611620ba78f750a76fd2f48d97376455d9a487dc9513127d03d2e2cfe758be9d9c93dfa5d93b39ebac3e5ea6a142459b2599f379b30405ed400fb494bc7987a0d14353e4cda463db024abe0b8833e44737d25da4acfa1f8f8fdf268897052e6173cb15b78d4d4e721d72ded88bb4bf7203509a0c7c03e1da0d201bfb9afe5b144fe2c8b4772927d414d86ef91227a4dc1fd7dbad8afcb246fb2fc797bf758dea657e56976f52542cfd8aaf87a2f2da17c7f79d938750f899e317d57e41a0f977ac78672a29f226f6e02224c48c3e9886d49c42ed703cdcccbc99ff5eadff5ecd7f7ffee9addf0b8c842d06fc7eda22fd6e54dd5a95b5bfe5475fdae73cdb7e98680f6e9e72626b6fefc58d10481521724c816706fbc03fb9238084b201a098b7692ae2d8f90d1da6dcacc93965f7ad5f8015d262971c325f96acbfa3647c0a8a37c28917f30acc10b819bc2d7b89d180832e39a4a6781d4d2999adcd0a9e1eb627785b1b3d1cac401b94bb2250670140f393241f60eb6e4170e7e0698c1a46a04905d056183d1134b14e816ad2c1d1e6922e869cd7997b6ce23db246094c2d8073c2fb84f869e60d67f0c144f2c8f84c26a5ccfbd7841469de51b79a99d7dcb13ba3116b526c59deee514e63d1845f349f87a916e6d01b5339013d54414abf1ac7e9dba9af7940d7d517ec3939e69ed8f67f138df95b45324e55b460e5426ec8920fe46694700101783d50e079f9d6b0581e355734af7cf43bc951a742c507abd287f8492368454cba9d99ba5ef1f35e81eaa715c4ec65254fb95756f48f74e0cd3c352ad7951cbaeb8569855ded46433c6fd6fd9fbe7dfb1ffdf9cbf12c2a1914b7dc2976fea1e550224e0e51d5459e5f52b6d374ca9bf8f04e5a9325d97f584f1d7d850a42ddf8932e0be513b7503e99cf874f7fe9df9f775ff7dd84e825385e436bf4bbb9882b29133147d810d5c557da44e0846dd91292f752a607e2e907850ec5d89a79ee4b28752a3cbac10d802804a81045392329bb13cd8ce1a2ae78932a20be82a30c8867701107c7bf713999544d8d91ff864f53352efb0e79077c4c26fe1bbf2d805e0a8b626a8fb6815ec804ca334d1152e03071b573265bd7f3d6cdc33f9b5153521f638544cccdce043fa3d3026b7b32e49687f0fa91f8080b4aa594a2f23db69e01b73e9738196f00e517109c8fd3f2bb38afc75411a6f07d04ea501c43985c43cdc6a296b922b97203ff8d0d90b1ff1daa3fba4555baca85411596f63844640221d27651747482fa108c771ec2e508e1257fd9391fbf9e1d78f0e3535da9385909f7320b9ec517f92779a5694273b9ae7cc327a234037c62c13289dc369b5422afd799db2216fe3bb74532ae604ef349dc1788a0527b85b980fba9370434ab639386ed441b7a87c1c02685db88da58f41208cf49608a78516b3a22c2567961974f5c974dca69cb57e7553c95bc1c1cc0b415519df5c9845874d3a309f2c265c1c523a82b77d20763e1b0b10ed034049711044e11ed6de36563f55fbe3e9e298ca22107af43ad79c3c5bd33c1d7f6013c177297cd2d8b82a1387eb837df0543a1c0a12ee1be61246693a353b6f326e7b485ba87874ad98e0d311863e3bd47bef72c97c8128eb496e091a736acb8c1cfa3a418cf376f613e22ab2b27fcb9eaa16a5abd49c52f86a3cc531eb4f9d6a19fec66eb006624de71e4490b577094fbf6aad6792fe1bd075aaf02e99d09c2b7a5d3dee4929735a3b9662e2cb7a7bff4f3e3e9cbe3081d03795035d64a2003f76947e55e8b9059da93001e7ce3c54118b6141130883c072644987d0c2813df6b36f5a2d3551adb36b131517929e327be47e972996f952b0e7353e0c2404eea7c325e028258b393283666116e0927c27ed4c6bba98167bd70ae72ee1e6eac7261504129f2f232635583a2ccd50ee24471b7a828b80aa38285add6bf05b2a2d0c61b1f2a9a0ffa6bb62c2ecb1d473641add09567eec2eb6be5bfe1e34c58f6698b0e4fd6a45a3fcd6b454696a5e5bdb56e04d5027eb890472665b29586dbb79189628414f859d1b281b9d45bbe3be94ddc29ea7ad7bbb4323c8c496f02788753939ab2ce4404416dc4ab465a3484fd0b029615f529c3013b169a8cd0e2b14f47d1644a130e1e8788ada905ba083b537de4bf731fc10d55ae57877a2d80b39de70504792bb2f85c0ec3e82c43b506546be47a0d5c4f3c87f9f39482b3b345e7c145ccc508999f6078a2a922ffcdeb3670dd7a09f2069eeb4a3ad7886aae6a6bd3dee4c69616aa330e7b3daeca5a7b5e59236c14de4c022d6e317305fe3bdf7ef3bcfb32fe113702ff1c86bba74f3363828221e714f5c1949ab8df2fa651e372de43ce83ff5c36815b26374b8247cbd22473a50af7b095d41c37d1cd23a9ba8b8a821d8100a7f5ba893cc4c82b7c727be32399589389c041ba4a78e58cf54168d4783809935ace671b3670bd553672638de399c592ad83259bdbc55b8509e6dff822c9391555b7b064d99002f9d258012ef3dfd98ee5e53c2e1b08a39e3c3ea47a3114d3d90e540d8f81ebb5c673f3d30d766cefc424e4fb63dbcb892d7b31808f93a46bec0bfc3c5c052247e8152153d958b6a24c8ebc0e79e3101b8d9d4e667a5c6bf02e19587fed57ed283947e7164780377256bea7fef3e3b3def74fc749ded222e0b2aa4ebab127b260850c9bdab40cf32a494b5ed7ecf59db32bf9a18bd27d3d2fbcbc21aa01ea496412142e7d080ae94f6c89ee3c56723faee716df54ed37ce8e746413e9c796e6782180993becbc04b090934a1b3b0462ce5b4398bd2bfa96db6c0245c5f51f3392a3732ad2bb42aabc162af77a28404bde50a5ec04243364519ebf384e0a1adbaf6e085822dbaf0eae19f91855c2bbd1f9ced6c96f972d30850b39ab16328448de0d4040e40ac026db1511cab9bdf6aa7452cd3660eb6d415888dc99cb58225288030c1b819598cacb83646e795d3a89c7db0067961506717ef2f1f59e5fa96c92bff33c89671916b1281041741496bd6d536ef6dc2b6ad3c48b668f0bf396665961a07efd3ca1adfae121c2bdaadc81523582d9926da52ccfaf87a2e95d8cacceb0bdfa238cacc904e84e7ec04badc10e984deecf6ead9d8399e49ab1c43d1308bb0002c052b4296563978481ab18ec68a808892ef7a61401e25302e5e3710f510bde21a2246c175d6ba159cf7ea3fb8070b1e9372ce09168e25fd2970e6cd46578d227f5f7695e7fb6652260e397c1a7c1f6502edafd9bc6a203f521886305fb436845a97360aa2bd606ffb7eb9fb3aed03ffd3589531312e0a2e1cd0e09741b196e65c0e2c25b1a1bc27654e968bc95ce0be56f14812bf8ed85ac429c1c0dfc29e887289a0f118de04569211400c4eda0a985cce95c446ea0c53e0a60d959b875a300b6734bd02b80ded581740438cb28525e7201be3265c905f32d593aeec05eee45a15c7cd108229774075b1269b8c514d5c242e0b0105292ca97775cfc2cb984018cb34974879ac25901a452ae5bdb65918b0cf218492420bc7086c2c9d822422a8226945cd30a0439f836f8b8ec8d036c0704b3ae98ec4cf2a82a50ece23a5cb9e29d03a00b0875b6ed1ac06b0f20be3379e0b0857aa0fc5ea81304412d4c1f1178674165c35445766128069b832c399d3a087e3fdc6910deb2650bb1093e273f75dcb7e251d0c7aed144c3f92e5e15b0c21521950e927c19886d058a9aabcbc337fe612cfa9612480936743b4e02c8bba465ff8036d3b590f02531a1bfe0259451f8e5eb9fd36118ffbf61381d86791c8524c350e87673957158da38a4f938cce338ac9371987e621c96bfe138bc833c404cb08a32d8781cc8c74884886414061985e1bda3b08ea330cb286c8b1906c91966b3321ee0dc45180b117fca9225508428b5ac13a5f26fe7f01be3d6f006672db3c8a6415c514ab9020e799a0844f04ace550479514de58eb739c5b8ac04b63be6dce5325a10fc53a89aad580e495d026b7112f0970f6643d826e4b4fa2e1be2ad73c82a411c9dc0661c910d852bad10dd9097ec003082b3b99f90905c1491247a66309e15a78836799e2af4c7d3f339e8985ab2e55aedced022e2efe89002d0eba24b47d650e68aff117583f7cf8f039f2dcff4b7f86c5bf2e8ed8839188f40ce5b058e93d1c5dcd0c5e407fffa497f7253f396399ce5bcc99f42174e3a6cdceb4193765d5a045fd37207bfd8fb9e74bad8abbf1e88743ee3a856b7dbf9c626faf5bea83516991173a1a34a77de44afc0c68124caaabc5a63365d0b9a4f994dbd02982f347edabb2c8a066061cc4e912a8a0007f43f73479356f8def77affe5797f56d0a97044ee064cac789b9c55b30fb4b3976739beecf6ff78fc7c41821ba198b4b28feb74385d22a05eef9132fd0e9988d08507f77a482af0797c171e12d07497c78ae4fe62678d83755271534eb10b0ff9f5a0abaa6b05f51bb7825f49a2f5bf60b4da9405f51500b76f805b6ea7c0dfa7954a594194b5fbb22a6c1c6e2b5db4d171fffc38ddf306526e936ed2202cd0166f647f6f796651c5e40f511e485130d2aee05c9dc05c1f68d1c4d334eecbc22d41d5d39b1b2902ae92a12fa0c37f4f219c83552be6fdc94d39f15770c1ee0d8e8181207b4337959a1675bca2f534eb885fa1f335c941a4a0a2296e534cf67b103fa624990305f99e1a96411023546322448de641d28502044a6b1325157552d1d13e5b93b129851a9f8ff29cf0143162d9da15032c1ae05dcc90c2c1d77671f4f6d240142a1a3d58ea426eba3d92882e19b859049a6ae3c8819ce5a028c497f68026605d2f49928d536c99a02662e720c9afda19c77b4bb0aeb554bc82b4f23c8800b18d14b3ec756c02d7174c614371130d56f95a5536005978b16fb4a4cf4276282bd19aa22cb2451e4c5992f5e8762607738ea74449f19694e396b1093b3df65a94600118688c4474967f6c2f531321859d00b19ba664e59b52d0c054d368f8442b52c3492554a7c2bb270a490e7b378c2c27ccaeae0a23146f54726c845729b6dbe65d4941f21378a7409fe6118604c368400a31d223b3e4a9f38e08ad5e017342384bc89d743029f5d8a40413c3a69ad28b1a11c5d74342fa728d2265e3449eb68a5d5c1bb76d05ff546a2ab8b60044020d2198a9e86f0efd0decb58dc41c3d2ee229a316b1a143521e578af0a49ac6d3854f9a4e98077942122dcb2aa99d7030607855114f27885179e9ce431e7a506ec756a453f23818a49eb4370e208220bbf26c7c6eea3d1105b00529bbbc4f44dc3081e4a0046c2c2388ad82a8eb515396a9926a2a6c0fd03a858f0532ab7ec880e73e09094ca10af44eb80b445157145411b12de223696404d4743993482041e00afe5249eb2ec2073b08813aa4f07a2764d5703a437fc7e4cc031fc3be1a367f51b54af6fc191e6827438c26dcb916ae6ef455d17be2fd39d49100600212877741886d25a4ab414b093a605c51d9f35d57505b51e59a14c458c016135c506de32b9e8a8039187b6570778581410d615464dc37063eb08f1428f562cae5fd16c9dce03266972022c822ed2a9b32ae41c46fb16242519c1afd1782a2e21149421c2140187f090efd73f7f5e5423821a8bc920cf51ef9c0132d6c2fafdce2d36e61f23c2cc35a4b014510faf84ea7b7afbbbcc249af2edb61e396695ec7db44bbefa44bfaf3f1a97fdaefa64bad055b785f854b41a2c3fc66ebec0cf6f4e7e3d3f171f77c869c1405bdb9bdf6e2774abceec03d845709332abc4fd01173aeb5741d881a253718d182ced87a3231b645b775ee80fc69f4e1c67a009a12d79bca1716ce2f714961ac1da56f62ec824ebbf06a3ac8648b76189ef2893b2bb8e60a44b065e508d499e81bc738c9159d5809036b43239a6c6fe4c9cfce4fb3ef5a79e57970bfc12ec334e384533d36aba0763ceb9ed8cc45a945fe2d894fb2335ebc2d72ac4c70327b954e63378f594cf401856531c43bb6825432b62a1854788c42b327eed122247bfe8e4ce25f42ddbb4abd23a93a345e8daa204f0f9c8c1086f30c95339b104e271342cfc68b6e727d089665612345a112cfe7fc0a2141706e276e091f3bb0bec9da0685778fa7e84f3c030d55819a05a589db0e1c59b873a0d581f30ba26a15321f2b261cdbd9907de3cf3ae3fdc9192b5f15fe1f41da13e928128f5e24022139e75c0b2fb755572c43ae5544e540115d05b75cf0b01f28eb5c963456b8aaa5f5433383c4006a1c0c92ef2acb76aaa716ccc6da24136c816338fb5e66df2ca16e17d025820885e77887b1cb660adb1cdc6e608aff2dc9a7899b5c15fc80e43b28fca4c176b50e8c2b36f5e2873e4bed41c81a5e64cadd98face4671164ee22a3d28c818c8676f20489041252c054e58757aae26d5eaeac2f7746333f88a2080aa269e5333c6dc8be390a3a1c319aa7cced150e1f540a6f2b6c5a34349ef2759af1c354380df3751389946827174c2af15da0bd3123ec50f959000b48325ca4d26e5ce143ff6e524829ddca34e30e97b31b0dc1e4cfa10b2ac4d6731c8904e2d82034300934a11b319363cbfa3f40092448263d94488d24f67ea2f2f97e840a8ae8024c76a0f908cf64af846bc50760585e42af7d0785dc63c152c7ad937043f78af78ed79e0cdd95d6653259aa08a0ac6f3dc006e1730aef035f8df6f0e17046bc3ca054fc5f87ce760f00593948352113f35544f92c3b9bcfe08432228afe54208b364ed066e34c783216109f46c91a37cc40523df8511cf3ef68d079ebaee083fcb26280490918f169737f27acfd578ddc17676aba989a711645cd7fd6ee7339d4ff4ca0df6e183e61d60ff74389ce9eea9aadae9606827e9fa6ca8575394bded829a1da0da0137030c075d553877b5b1f68e439f43bf1b1a746c4ce52f8a7f787cfe739ab30ab56c2fe03861582bdc3789f6c20a6cb1dbe24e00196d904b11401240148fc4a851d93b2f9b8e9bdd927eaa5b7a2d650cda691954a6a4bb8c804a637ce1890e5a5ce4a0eebc0074586445d27a37a45b08aff52e1527829cef3c06ac003fd70dbf2e91ca99ed657a58782f67166ea76ffb4617d6f5c417169702b2f32eea553025fdaf37d3f194e265a39f22f46794a1701419150b083f857fdf2c37ef29dfbe9f395c29030f5d1ef2de62bd9fe459761a2ecc31e4fae14471af3cb726b276b3caca9bec545661bf1a85bd2d5769d9348e1bf2fbb9dad1295f19d24939bb97d9713afdad4d1a5014f981811e14dd393e317fdf5e84d5fe98b93fd2d81f49fa23fdd8149778942403fdb7a0b24258942fbc98bf0e40147ffcb6e2cf76b0e3d420c2d47a2d2679875ea0d04d08b825202cf38276f67a0f19e2c6e8a67ea9723d4dc52d438f56b44691bb48720e9ad6c2300bd6cf2e9fb413329874d2b4090faea37022ea743851174e8e5fb815cfcad231711f55e9dc43dac4937b3d381df945e71e2e57eee7c76fa31241567efcd5c1aad4de54219f9137e9f5404ea777dd4e38b9de69e22993ef6929eabc1607d18380026de289a436280d0c3863954c6fa3df1d27287d951eecc623d48c882e684893091ed27bd53d50d92cfd3f93d5ea9673a6d3fe046593bd17d98caa40b207655053ddac584fbf3f4e2400215192f7cd8b8e1db7154a744ce8a9886e1b8db240e22c273940767f3ef62615d98e1908410075635f0f1e809dd419bf3716bb196a0e9bd424e2e093c9720d3828b4f16062c7559280b092a1a3045ef8e5ebc1d4a21ac97b1ddd2ca531609d78d7bc6fa7260145c9374738b9adf8ba299ff03b059278ec23f9c3d7834e26c259bc1f6e36260cf1984ce28dbf4726838fbc2b4b0e1fbbcef87a7206f37fd3b3270834d051c20c194f092e81103a505535746c4279787b174ee23fa2327c1705e513812a3a695368cd91910ca018b9d3dcd8bf402ec462cd08a29a50804fd245c3159783d0848664a0e8123a63fdb0c57505512e9edfa288ae886bae21d47a12ea480b513ea2b654fad27ed81c1a127a285bcfd7e7696d12f5b1b1ed674fdc2f30fb8a83de035f176a6792df1b4412240844f070d97cddfde6c4f5e0c59bb870bff999fb0d683b27be26714a9cb5cf4bd28dd6524060dced4a3236f4dcae26f0dca54d0a431b66f9af0db9ce141e858833898bdc0ffe2874e0b6b4e069134c297749d868b32a5ca98e5bce1d3d5cf99095013aafd3040066c327f2c8c20027276796b26532f92c7f0077680b4b5c7a477b78b652e3e0ec8c478fc7f0421979849e8c881a2188096541133b6d221c7a32a024b8191d7779e37cc705823b53f26c45422f1b174ec6f3b7d08a696c98d299c2d06db8f981140c60d96b6e57842e1085ede1fb94985cac9d71be47f7dc8b370d191f7e9896d00f42738fa22c5bf22a198a9df1ae073369dac3d51bd9fc853e8b740f890e6d3029a187918489f991efa2a9659cc1a59d1689c576a1226d5c9ad787273a5890f8a403cb3a78ac0700a33c9d40dddc42771ebe52cc49b903b6f56847053620f53191c4b233c939619391c07ca9d0e18c3cd31c07342b49217d1827c224d1689ed7fc8927fa36117a374e771d19e7f6d038ac2617130a92e2c2899b7c9837bd497cadd481b8b0cd74012e747e4a27b6d77b129b1d9df42c31431df763cc1688d1ba24747f0f85eba8c9d73927a4d7c1f1d0ec4c2cdc2a1004ab26662853e60e3253bcf369d4f3dc0f00ffcc326d22f5ae289ef8caeb81cd52dd34da240ce8aacc57d5b8783219cb026f3924345cb11006d586023551319e01721e246aa8c17ce52ba48645de53c05fed5b805f1a55a3554d4673e0fa31e3d8984d14def408c92271f7d309138d32d000f209b1c464dc581ee1fcf08927529e35b92530ec138d0a6b315f9a0efaebe3cb5f53ece34faf3599ed94dc21d971dfc4806ae5954c7b31fab3d381f7d4ce04ae7f892580d03572e7e1ef5eefc98b2a3abcc9b689f2b0e9ed363c0a7754407ad19e06428ed0456e0d8925cba4e9a1c9e9788bafcbbeb124399eb91c265a93a38a9d8e3c85f04a50a3043fe52b1de1c5e5e927cb7e1f9ea2c4c61b14e7927141e50d8f98bd40513cdf4cd5c1d8821bd27243ae65e2a42a0bae8715e23a6f8a5fb91b54ff06a3ac31e94aef41281d47be1ed8e6f41d2a5a14bd6a35d5292fbb34d06b65ff2963af99275941c299ef8521085e34ae141ea41169e15aeebc13192238cb20d155947ca5e2eb41165997f74281061c39df7d0e6a6c61146db7b8be9e35334f56e4d66b400754cf5e44152488edb1f572472dea731e742bca71872bb37dc7f3ee5b374bab0d9fe684af60b5c59c274b0a39808390df504d0977bc6a435a0ffb3d08ae83cf6914536db92d3cbaca36984a6c68863d46ae2341c537e04cb848e88dca5e14075accfb868a2ed4ee0f21c1de995c7988b099406c2264de685474451927704f615025a0242032c1667f14c5eb4fce0430b1875a46bf2757cb052f6e54922f16104924ec3f8af8977a011ba51665e55916a8836c2c5ff7c2b98419d509223b04592553ec65daaf7bec648341da38b4ca4c5c50f4ea78d99e97c48599a78e30d3efff900412527122f4ccf38ab80e79656fd1201224632134ce66c5c7417c701ffea8fe53bbfbd7c6ba7dee96119831e97892b6efd10c9242096c4929efc9b61c7f2eca7177648d478d45ac0210acb50a7b181fa58545799327fcc1326d9937501ef8e0d202c3ba5959d3130d599da15d6c8ee5fff3f9cb8c90fc96e7b7d3ee212e11ba17bf5878108e3305621d6eb2dab94d5cf9dee37b8fef6fc3f34f6fe1f7dffec125d678ea68725df8c9efdfa8be930e9d7bbdaf8a226f9842174ee1f56075dac487286f924a9d0ed3efb852e5cb79c3ea29c78e550b175a574eba6eeca9407ced54babac605f77aa0ca652ba7dad555075151ce2e9d34275d3a5d672a9b7f3e3f7dffa69f7effefc7fdcbe8204a2aafc4568f67d7e9c4d13b738316ed3769af3dafe7564316b2eaa4d2915fa8c4ff3ab88578b295242495743a4a3a52e27fd8ee139f4548b93596a8a0a38e4779a178712f4bceeea36840458d15deeaf243f77051358f9ff5efbbe70bb4bf539496119925766b2de4b34c007f3de49f03ceff3fecfdc96e2349b6350abf8ae11f7f66f06dbd0d039a70a01825c0d13f613295499d7285024105eb949efe62af654e3a4917256566d5f9eec14584d838bdb1de76bb96ca86b2509efaa1f25c2261c0e1395cdf6e21dc79b540427695ecf0a49be942e93e14eb2f573909a7fed96d66c06f05b674f26ace92c2a36e7241d76344d58ce8e8ecb20ad930104cb28e6e3a61e35aab1deaadf341c13cb7ebbc18aa8bc9b092db30a07ababfcf4c9f0754de3c49de32f6241e37b6ed99e9a7739cc6a570ac78e879edd734a7d32ffeec97e04edbee5189e617bc4eb77fe39cf3327cf4a4cb5ffec269871ed67451dc3506050d7a5d948ba360880ccea77be4c9156d927bf8879a8b0407f8e2b47b27013298eb8c1b43153523fbb3b8849b5517e35d41d27773915147cc14f2c3f56286a89889a51e047079443a67726589d04f87eec5a8b6bf3dfff3db4c4accd550a24f2aa4030e58e579d0eb06ad7774e099a6224a8e4b413c1bc2da12c2094c702de99a19a83882b83fa8ccef8deaaeb11a843db70399901c80885432871502e47ab59bb9103d0522dd00d34aeeacec086e2ea4de8bb01e027e52158142435b068843e99c7019cc6fa4c3f69d1d5b05cf86e83057ca21b908bb41acaaa73481b88b5c3cd107c3da53f575e786bc6504b390720befe2d2c1560885da213af16ba2c51edcc5680f3007d6ce552c8dd902c248fa08f4d878d943e3c3efb3ec2f4024274489244494dbc85042d06bb7d8619d83f43cefea2d9985a1edc4e0802f15b482f0664acfb08bf74d55d2b21297eeb44a8c5204ea6475e9d059f203cc7339f6c60000a32bc7a64a6da7cd38226b193b008bd302c2f41bab09b357ebe91453ffc0bbdeada3e8417425ec32adc73acf3a9ee17fc85d85892864cea89aa8d3f741844f3b1d6591932731c69ac8dcb6df4e474ec338d5768cfc1449ae01167be070202741f5f5a68af9998508fdf4e3f18fddcb0cd8a73252b432e1a28f10fddb7194300f63902d967e44eb179079791629208eb14e88ece09147b01bfa35c287cc6b02b992a396b5057047de6176760319e6c0007a785dcf600fc4680426380c4bd5dfe9ec4450226728e0c5b56f2ada0f3c91a6030870ae329fa6a705203f273019a7bb763a06599faf0055619829d9101b004e60e7c4a10c60144c58587d60784d964cf8aa0a0397258cae20c00f036ddb93e11b49a398c4941ad3356482bbd0b79a264ab470d9713fbfcf129a09b6035b23dd3ea1c77ac0aad69013528ed80984063826dfd4e67a8d922741b4d6ac2001a9e728691d3369fd3dab16836be15e06935d8b6be1a8893d55472b06740ca977cd81babf6ab761786533acaa4b777d9a16c379ab0b511f6143cfc5afd192080f280e1832806aaf1df05fdb0da95f1d0e02d9151943b2e8300b8c628635caeb0803fb3716f7480e7c6c0cc9a58a0f9eab7740e246c91860ccc62a917cf39d93bef23eb638d10e22a46195cedcdac7183ecd7bed61f3db0c68269b25597395de89927a3b21f060cb4e862b71757f43a2bc2a9d7dfef630b7155f255f4f7908cb58646de5afd3b3e727c84556f67e96d6bd2b573fbf3e21427380d1577748d247747ef75256d20e2ab962132b4e642508baf5713bcfc409801f18880731646c4142227ddfe878f218f30166d8b4d02e2fff7c9e4db76c609cd9d29d59ac8b98252913e423732617172d7dcbbbe87c5dfb6105eba1e858e9dcb1de25f86503d270b20e22e1660704a554993308972e72a400fc4d23b1c7aea00713835340ef8e4998026a5ee92a231361868fadc363d160a35b500721498579069ec131a175baf6bce79210d889cc5a8abcbe6865eb2951d733365d058f3d829d91e1e4129c5ecca5f25c231236d62139f64b26fb5a831f2c321126baa130465a277f626c7ce1aa581ca81d3d4b16e97007a16fa9a891344c4744d7b0971123ef5a031b1ddc5a6d92cd7449d67b9688ed19602119595d8df82509e95b15121d8c0c283a6a8f25a1a07a81eead0c864a58d6847a16366080a2740f346154902aa5fdb4b72aa6a13d5dca5ba646161c64c726daf2ffc767e3f9acd83f9c04bcaaca5c5b49fbd2cc91f2ccb49d1bc29d2ec2cd91ea7200aa0b524c44db1b8bb48ad7c195bcc6e2761184b6bb547017f3ed3f8015b0ba8e2533efa67f2144e32ea85e1b7b0850999cf70807ea8141cd9bbc92858cb0ab78269987029666024ce91015a258cf9cd3e1dcd0b27b981957bc6eb93eddf9815b9b0a3f8968b225e99e7202c04b3a6bbd0e2be211c51e35900949c3f18a689c4821a3ff1691455a5d02885b9c88ae41f79a91f657b19060532c60bd41622f1dbfdd63cef8a3a16e2894c3b08e34cb6d87728994158419880839998091fae5ccdb7283ef51afba302624269aa49bb77cc11b5e26a75aee7eeeaef716e44ca4d570ed07dacfbfdce9bd8b8a42319a46b61580bd908052bc2a3bd111b457545cc92ed1aae01a1a9efa514a40228d192e08d0b2020758bcf1c88a84bb5845886c92ee365125cdac1b14526390362985ae46df533083ebacc1a5d33aa39548773ef4a02be990524c5f1ad899c2a011048a5d8e27fbeb8fe77f9c50202ac14562ba43804a516da332c4b81a2672932351687da1d1c78f3a1454d7f8929c2495a5244d0b00fbc8fcfbfb68dba9c253250a50741087b53e358c969263dd916ff018d21167e390d4c2ccc6a183274110f59d4f19b0d990fb8b7647acaf1f9987d033bc6b5e7526a49bebf5233c3991bb7c4dc0fb9a304d0b261f3621f1346613f4aa322dbf6ab9ba150b9ccfdee5ec089e5eb6c08b6320a10e24ac3a60eaae4efece9155a7383f8cac743eb25eec9983261af1bbbcae3b9b0f11467b7c5d0d87f8fa2436ece2c1af64dd10b479053a9c0e36ae864338e2481ee22e2fd262e9af711df576fa947808bbbc0e0b56e3d7a762f85bd122e8105a82ae082cf0932d66d8652d469997b81eec11a1685df1db792b3c6dbe9fbc05c3269b7c826cf65f4e5f33326eff8f21024632751311d07842786ee6e2886dc72bb24ba66c02a2504e57147371c496573030e68deeb5d369080a3f9e125fc9a41aaf20a6e74caad21db77cf4f0a173e70d337effdb4251bed23f0a8cf20c36fa0e5f57bd1600b0013d351296de4a039d87b827ba34d09e46d92e60d2216894410ebae4145d0d7cd61b790242ec31fc2bd23591c8beed50222ae695d07dc7020c58af1f13023c22b5978a1cf940217848d8e144b8ff89cb07d7caaa1dacdf5324af084dac32c556e5c8244d184d98c2aa5ad01e660cad5484016fe83baa107c9076843d300a43771363172679462e843c201e2053b601c606ea15c0960c81f172b4527a552a1044913ae2fdd177db739491114b309216b86c6612a7ebd2435f61dce9aa7e2f53a4b6bf18260f3fecd3e6dbe68f87a787396a1d1c15e11076e1c0b48278f6d5d6fe759d5f9fa610f3ee193433922817e78ea38e67728a26d7c69fc792d7955f23825c32d8c2e22a1f9f19cdbc44b34a3cfeb11be7c63521ae6174431b0317df21f448016c26ba351c294c2da8c2f485a7e8d940358f069132fa427091e09aecec82f039f78fdd4277d23a26ab4aea1017a8e202833af01254f70b7a65644920534a9d622222632274d74e85202ac881c7263a9cf5f1e3fee5f9c7bfce56834c60c440bc8f6cc0caf28e41e40a1721de867a2af92e81525c65bb7212e7b70c9f46ae7b42d2fb7e164f388baabe51982d2cb5de9c2d61fbdb91db0b3ebdfc67d29254c74aed26d6f1eef944dce88df82b53916eb765170f0bb81b074b044406578a4a57aa59c8bd1440d5bd835e0128ac01212f77e02c42f4d3d0e9c70934799e65d3cc4d6ece7b0195818c9538639f8bad396b941f8fafcfdf5e36e3821f7bc94477c302b760607b0a26edae4354ae9b6b09c6e41a42ae9afa911397221b16ca566cfed0dde43a59e84a537ea749ed66bf3d356b5b6a92f20122c8056497c1a6dd557ef282f3fc4337032be9474e5d04a55fc8a0527d0020eaef9efba102bed3c8bf3dcc5a79d09df52355b96abd45901a6fd3c71a66213062e176e1a3b7bb6abbeb81f2fa143f7ab76b12939b46f15323fff6b87ff9f1f8ebcf33c8ba2983f8f2b1ef6f4a4ba4ee6286f7492d6f03004a35d73cfe9fbcc9a9fa8fbfd96f3f9f7e3d392dbc4907197692d76985643a158a2ef3607bbcea2cc9da5f72a4ae09b5201355eaa4cf54e8c89ea8372a6bc2d504bf3470f0b25e4fd096486f936ac50939086e98c2430bc4df0873753eda9e8ea11f238d5c75db118561f22690b16fb4832566a311ef3b742381f4bc514f4f20221702f98c6829484ca986e5198fcadd9ce5fb0d9aeda932cc22489e752877aa75005c075014c564a49d66026fd7e27c210e375d0d91f6e3c23a65cae7c4e4eec63c04e666daf4b3abba5cd320148e963f69f48640ff1952c79d0b001a537505093d300f20dc032a0012152a8d5e84aaf3006d8ec5e5dad1c207ef104faf5d90c4d12b02af5d683428a6ac9da8cf6f441ef7fd6d97c8dbd8a3597a7616d4180f48d8729a478b60b7b7d00e700391bf7287d9c478dafcf1607f3cbf6c5e1ece231d0670522fc759ec2f5deaf06bf090e147d33feadfeb574164c3c27cbe5ed7ae088eaf83dba8ca0ca34d3658d16967237011d25af7e343d54559402794dac81c97cfa7da7be34f1a816f443c6fcb88e7eff21cf704baeb35e66d92e375bec60f78abe7ce621f920a92711993e88cedf8aec33ba7604e28cf6f2596bf4db2cdfbb9800cc13bf8023c941f443de4f7aa385b3d77e830b8f9daeb575530fec621d84c59c874feb70dc1794f7d7f3e89e20dbebc4400f33946be6a0bfb0b66f364d32d6673181d3c50846f44290a5b1568e661499b98f562326caa0580dc4358f905e2ed9b2aec926c794bb17bfcf6ebf37fcfdcd348124a79ca23f513f41c792a32e33328fa47987a4bc686d4c4f12237f87b78eb623b6417af9d580b05d4f3b4b9866ab36b01804632b8b640512eabbc2800bb5647d8caf34e95457c367925e9b2aef6f7c7f1e5614eaf35389fbd09a3804f18af0737a455743981ffb9980412dd74b1febbd6da0161e597eece9dee7da36ec38899f1d965b8d1c3167cad2ea4e01282a05c81abdad776efc9c91b93b65b9a795f27beb5d6da325ebd8b29ddc34c195cf6e3d47584c04de838f6db2e6b5d5f9f9a1b6ab561e372f4fac72c0f43ab8ba02b82d19783d75e180c7dfe05b113aa28c38887f0345af1882850286590ada72792c64e1219f56f1d9d847b3d1bd6d3f9f37bb3eae2b42be77a36fbed8f871350848bbe98b0292e6658624ea25a1431de0d43bbecbefc66f7ad75f9919c9040ced08f6406bd7935653232c33c63bd8beb89def0b4f7ffd54e095a1d52d8eb346b79e324a85c36b16f3a690169bb01c957255e9c80a08c162e0ef6ab5c2861f11a9cf0fa24ae44edea700464d6b1e1064887f8947834b90170b8294fc7f34edb6d3b850bd7aa57f13da5294f7508fa9537c335baa2a4d72797427319f9de1d079a39d971fad4e241c5b86d7f76e2b1e38f13ea00b2b823df1b92ccb7d393930ae3bc9f7e787d02c326627387b87309d1c3028ba1dfb2ecbd2afd4d0e2e7209938ae4fdec4214eb828aa051765a907a70def39ca6e228528fe1add6f71d6e529ae74dc075a1c30ce0dd553fecf513607e5bff1402229182df59e7b12fa027ad0bb490b7fe2944592757a0854af34e30b4629e7ecd2a06ea58be93d2a96f3d4c5f197436c9a55ffa0f02df6332225f924b83377ceda118faedaef50b45f036f002d8219b6b5b10edd31963c535107f451b5d4f9f86c24186576d33a02544ad5ec810f92a31a873effb80882a01208034680cda873e88f3402910addec19581cee03e4c09a020c41918bcc786247d287b55e2a00e669723b2da85bd163842e0c36899380489cd0eef6e801c1b4aff14c23a3bef65e31a82c6a7bc4d97002d2d75a79292ccaecfe8b6d03f8590d6b10395a2db4aeedd96d96d23cb340ca93fd06f5c885eff8e0b25f2f8390e3174a7613bffdbb98204fa4c848c427713c7afaaa0c23c898a7375f9de749ef923dfb54038caf4dc163764e0aaeb29c8686f3be741271c9a36f25a17b2bd9d66bd2a9088d3d70609d80f875cdc50f2457554256dda3938832b85ae12258fcec3edd6b66ef0c23e84af9d38225851ab1eeeb7f6d54ecbd0a89d097a26ac381e70d539b800a85228e6838e3dad3f6e04222accc3d03f1021c79334c8f74f7d2a8a2abd3a8e311e91d83fb49d96591bb61296464b92811c2a9cb61264a7553ce006840608fcc9b7e23c60455ad9395f8ffd86219da8f997b4f613e68d642e7052f4fdd868b5d31beb0f5827907b235e95f0d37e520a8c3d436c7dc9c527a1f75e8a8c2ee8de142a402e4a9f3ed3348263cffb91cff17ee76a6e5f2208d6f9da751fac294e36d145f0e4c78957d77a5719002775a7abc256ef4a388ca42d8477496d8fb62762901ed1ce8c0546296e04a1753b4643c3ba9064e7a2572d14418d49b75c201f7b155f3080938b05793f3ab182efbb7edf14630923c28f195dedfb1a0256913eb1a66525f56e10d9a08fe4b4160c21eafd8fd7e423888f5e30e814189afe9dba244f53251638465941a9c549acfce0cb41fb99793be88d32754f71430ca34b595caa3a5f0805ad8b22e317fdd0367db81dc7811f3a1c4801f844ddb8e893fe4d270cd5f7aa4bea4b79b74af5c91581c84c625d2ce5ba9096c8de2a587230040ab11522c108b83d4c7faf4fc105a081cb50b66ec0b98811c94447018013549d01a1f0357039e68ffbee3dce1d582a94b56a118c3bd2498dc8a332fd08294024d8e82a0996b9b7a7e88220ea56975ddd9c428907add0765a6b9293567b906e9d1e8b3d1da1f2752db442716432c51de3ac4e9f284aa14f91cbe1537fa84f3b170750de1019284a1fb1a2675c49c3e7e0eac549c8266cb20b485e0afe64bb446affa704e2057d4674d9064f05a21e36de95cc14bc72b473b4125d1df2d6f94a211a125bf4442cf0ff16c15942d6d1e3912e1388a39989ed61bc6be1f4b2f7cca7e83fd8e3577bfa7a7c31c71f70f2eb1383375d0ca377b5814805803202661022dd805193b9fd8c512e95541d4433f2b4e0c202ed4710d3e0a593fc516084e113e4f53db82a1fa32b23adcad0acd0162911869a0b60602c462a9d488551159d5985a159b895ae9368c221e98a0d78d249ced31970a79a99b6c0e05a80f33de8195b8f980f9c2eccb999ae659499efa1cd1d5e29f10d90492c51749ec168e4c14cf5c4a71388d581cc876352e609a4ab63be91270e5039ed3cd09e53e2e7f7df362fb314049df9981343349900f54cb21c3ead22beade12784c6b54d720d37394d87ca001cf90fe9f5430d8000ad9b6862d7e7075b0dbf716f3bb3917dfbfdd9ee1ffff8f6f70555351377fee0576d1d4130e757e56065e7d77555d765170e75e70fe7fdf6ede187fdafe7c759286931d195bbe222e0129329aee15d863de808bc0318d0d6ba0a1364713a8df415e3d466fd66b3cd7bbc9b6cf356b83e396f70267680104d739e1626c65057bd3431423980e2f31802cd039b88b1c3d72920b5b8066b7bdce2f92603a92d1b24de177dbcc95bdb339eadf3281ee94a8151ed9db7886377de2617f6d6e94608cc12d0f7a91c803c5209261a013ebd03ab0b07ab3804046bc9f51d05b75ce54ab2d3a12d1e1e90d28494bbcc4ffadb2f88c7cbc8288c4e5b7d003e15d4beeaaac9ae986aaaf3a6f66ed0aa429edb0af3bf0cea65bc8d30146b1582d56fe73bd7fee1c71c647cf837c4587d4d70d5d0329aa71bc102deada1bbb875b9eb1d5390cf14b2df39fef3f1108dadb4b5220d207773648f92ba72ae3f7e7b79f8b17f38e7270b443907728387db2bd840d9387ed155836bc789eb3dde067ad8f25e869450319880b920d135f84b7c37b045333dc5bc030cc144cac6cca42c2e1494d7251d8943e1fbdb4c0a5b0246002cd2eb60c62598c64537c60e4c54307e802a1c19841d488e1b68ff06280519103cc2c68ad5db0812087891ef884bfa6140d7215315a9347ab33bd2b0a31802d00a005de723c6f591f2613fe77c9875e077bbf9edb71f0ffb1964477039df21eabe6111247dbeeca34e5131d1aaa07627c1356df61c8f59e2ba30fe92798cb779fd5a3bccf1d109b39f7c5347b7f7d1db8da545824b6b0944e10d07bfb31e1f7408bd7e0dc084bff24d2e709d860f719d46a4f0e84fabf2fa148c1cd28e6c9b67c37cbfff394ff7f3d83b4a319ef8592e7966edfcc2c33d544bb0b39472da4af0d9e22ba20236d5d46300303208ea71ad95fcfa24d623e653771a62f2b6b56e3bedb270763b3eef6766fee4428e3acdce4123c4c204ef7c0b23786604af7e43c4024c6f17913a1d09850019384abc47d0987739957ef2309dccd7513b0889ca29e4a5a7aa1205ae92529da4b2096e60a0e670a2478ba130d6ffd42ec58949aa4b8c2a5e43c6468a385c54c57f69aea566f8da61dd064281a15b2e5afd97b3ee32f3eedaba3c90e7ce83b20873478b5ab5d453f4edfb3df1ed84cba332732e2e89df7807d564c28ca0992479ac0311c64c3afe81f9c094eaf9e8c8aee8e4c6ab47c3fa131208cfee575e3cc8e843f469da5068a7bfd84c9bcbfb1ceb78bb999eb29561272ecd86cf60fc4acae1eca0f56658d3b93e3fd3fa95a4f5f9413d731e49fcf8b2191fb7b330e26222324997374080ce2cee703beffc7d51e13fbdbd0deeca9b376eae8ebae09d2167abe4675f36bf9e9883a501eee9833178578ee4b8e010bdf62d5f07817dd5ed65e5d76d170f88058f2b0f8ca9f0fa544c533936ecf2f45359b75d2618555a9575e22f099c29072479f0c4d9d7539dfff1f0af5982cbb0b0cf63f422291454faccf319c23db6bfe262dc08a0faa403f65110109ced47620a34d7a26bf1030eef4f737023acbf21f9520557155f74553d9afc8cf8f751a8da5f247df9c7c3bfecaf9bed3ff6df37dbf9e00918c1d7e4bfa336ec9d43a833c0539a2b545c1602a655c0ba6eb89d5c658f2e6513016c50558beb601099d3af07785264b427843fc6beb453b4cc42e80089c0c1adeb01cb0d78437eb8490b0e1c85d4ce001199673ca111daa5c79939a261440486a7d6d22eba63fbfcf434478d422c895f495c575de3ee74e88270a4110d5f909cf40b0f834c025316093810efa24bebbcaaeba86a088ff2422434c92fd2cfc4577cacf85857f910577ad57427183170aa3ee5171e666e94342dd254b4a48256dcc5034029ba2144cf9e92a2824b7bcada3c68a72f76faa232d9d360db2988661618a3aa56082a916a6d55df3224958d2c4cd473037f0daadb08e5e209be711e82f34bc08da72bf7174fe27d0b7f2d5a24913b5c920dc9cd0ca267781b7c348132aa9ea25f13cbaa1ff3eb53d1b7555d5702f1696ba4378ab69f85052d8407cda38a102a743990bebdfc781e67412948c7c424b699390024b467160085f1ab2c806cf27b590047f66e93fe7c168016f9b787f161667a820ed6a6127f390729536d6429b9f020d7c1f37e21a7c6b731dbfc99351ba8734b4bc9a9310a572343a2c40090f8cf2c46f7098848c3f8b1c5a8602d421399ecc26797a27a7b257a5015fc842f6016f8fb1350817aa41f55c095ae6ff7d915f0137f3a78319af8e1e0c568e2cd8c1caeb47125e17a275d88febea8fd7ebbf93e4bd6b90e5bd7db8f996dff496059927baecaad44a9379afb3c5ba25980ff0427603201918909005536d91152adeaaa2ac1145b0c16580fde58601d64d11bd8bc126093a59ee88accf3aae249dd9ce0249a6d5b553633ac2eb6ba186db57ada45db3d7fbf34db5cd3f09e2198deca9c7b7d52a97207728dfbec2a0873c71e4dfec5b552ce4c3eef60bdea5dc6d2a7e7c4308bbe0be05d00037c5aa0d25fa6f6d5daee778fb3f0e382dcd501d0d0d9b566eb098e108b6e86388a53261c0b44680b99b40129dd2908742be6955f5c4beec8a7e7cdb5cc1eae46c712f571da5dc9f1663852d50018265b972ff79297cdaf73bcdf8049fee741a1fd14fc39dc0aca7c3b65e24036325d07547efe13734fd27b948a83958519e89146c7e57d01cd3a9aa57a9f643f2cef4b7932f344d188670417b0b07f16f01ac176b2be8270fd2008d53fbe3dfff39b3d3cec1eb767ea64bcc408ed8697702f5177a19a298273d70a475d9ab47e93252798b0b9dcc6f1f330269bbe1c2f8258d979012a8416d93258a0e0909310f1ee07dd21192d3d6dc6f80660287889233dc6a08488d6494cd6f9d2dc5053f7f325eb6ad1099800d90d03c864328025cbd5d2c05066dc00e08aa17c096ef02abb0edd472c46f7ac68ea2aaecb2836ec641881ff98014182f8d480040d86ad259008831510f024195c837e9a29c8aea9568547249bd43d3f9f8eeaa72db3c76bc58e175dcd11a9de48c41ffc3daa1257e1de9bb29253afe822b27321841139f135deab2470282ecd9a1399c066584bd9893f9cfd344c3f0d23b36a12d8ec2b227f6b7efd0a79399cdd4c3accf1acb7f42eb3c1376e7e7d380aacdd207bb0b20a07797d12b1ed83f2def55e4d11b2bbd3fc3aed440e41efbb93e120bb7448af4f36dabc4e2a55ecce1216c6cdbf6672502353fb689bc520237c0e5e7511dd5bb8cf5cc22910ede98fd65f936b7be75dd10fa3fee8bc13171cc0b5f6f402eb4d46bd37322f7855b2aeedf1ac82a7b4cbd21d6decf040fdb57bffe59a1da1311ad06b19bbd7af54754182034e8f36e39de83267c4797dc5f97393183c5a7fb6c5cc99076a562a30c15f17ab68ddab039d08eb4fa2788ffafb7f67c9669df9fc7386e9059f27f3f60cdd1c086a2954623ab0298d1f8049d272870b3613d2cd0343955bb0c31a41957c555d436bd0712b5df5444c479af0298a905065d027de83b9b3a934036691aabb9b6e01a1e8db44c3034a8e9e25d8e208621a954bb7a01721dc871126bc999e5ad4fd36fbeeb4d17fbdd69d256e682e67e7a36b91fefcec82bf031b7ea6e52eaa0468b2710d06408ac0754fbf90f15b465f400e01f9071b679cb79f14475e29b6204edabfd9e0fa743192419ca3771750cc5ef5dbb108c76aa2a58aedbaf6b1b35016dc7febc29c9605ad8f5e3414a400cccb9eda79b0a278f8b0a5afb16d5a6ce78d6bfecc53dfeca0aba16b373f5f9e67e317532d71e40d1d432500b45a445781c1e52d43ce1a561bbce63db335237914f3185df1200ed2fed38150137df6a1f2fd03c3c703c8308a43864da7476ac0faeb3068805bb1409689751d746290a0ced3ca62a6b981dac8f131bf541d6e958f01a23b3ae8d80b0750d6203009b32240c6aec5459d4ccda4c536b878c8feb4029c0673e260c0208640aa4b78baaf603724775da79a43a2a7cbfb8b36f0601eba9b02943c6c81c1083493f0b131ece5bab710fe95b7805a0c2e4517595f34c55d4513417386d170503d07210bf0e6f209fbf9335ab05cb5ca69853a585201050676e5002c3df6de38ef5fa4cca211f00a6fded2836e8cea5f37e3f83cd3682b89973bab59455c58f46e48e3119f2c6d41ac45d03c2d3a869144152955d1c81320330f8db3eb242227ba02a2dc136afa03233c13534c027196591698576152e929d208a2ec4c6fc325671200cfa06bcb05775272a083bfaeb2aec48068d761543aaa5a34c1657ddd7e601477cab7cae8372d56bad7ae35d5c5bbe0623615ce1bd35cf606217569cf1cabdca332b401d1f2465bf00bd995f5e5a82f7f7041ce96f08f123a9270d28e81d524b2633c2a1f59f7cd25c1544cd683c0fffa87e5aac671de49d1630ee7e65a47cb4e9f1facdbc71f73ddadba809ec3250ef470e813ef92230da875bae5c9c58a639974521c603a837515e142da4480e2e3c94219c6150b68be5faaf3ae1ac0ec6dad6b88ce2a0e216144240893ac192cbe5d8b37d1e92501c14afa50bd596674944b778e215403ac520ca312fc156d60ef1a403231110c442e1083063c91a108a7d664b894fe040aebe02a4a991dfc2438537ae802408a5cd90b4b84ca6e5d670ed02e33bd49542866f10d623c2f37df885592f5878458dd84ec296c2594463b09af1e716082bf42c43b574d72753bb565fe585b669ce0d1944d6ba1fd8ebe0b88a923bb380641e6124be45e602de05364ec5d3d0e9bfc91611350c2dc83038f0fef917bd2dfdb7e1a5d0c85ab5b0c133c33f4cbb465f3475b36f31910dba76293671d5d869ccb3dd1114caffed615fc16406f8062f6c1933f327882032c3526407f226313b579f8def61c6053217441d53bc03e6275905d4fe73996a337c36dfc40c451dc3ea37ee08cfaee19ef011902fbe61dacc30f9cf15e418677ce5868cde79fdfedafff3ab5a8ffbfa2bd3c601fff5a630423ef552698db4fb96aafdde3c38fcd8fedee5fb3fd24a9f036944900fb888cfc86fab9b35d360696398820c4f94e53a12fff0631bc104ad9273e2d925a64a50f5209460cc453242d54e34d5dd2c06fdcbe6655a68571b6931ef6e7245b5d5ab04e256d19736c941d7f96ea0a8ffb648e15f95f588eeb51393e7e7bd8cc881c80c1ba2ccafa4b61cc46d7cc70f9438ffcda5d9d6e78faf5d910f616cab6ffc7c33f3fb968ffc79698bf61bd7d7789193ebbc4ec9f7fbc3cfc66b7e3cffdcbcc94b930f5ae65f69318fc347cee7ced96bb1e6f85b7db7797fcc9e2d8ca60f58f97df7eea01b3667cf8fde57f20fbe3ffcbd6f850b6c6f8f8fbc37e733879102a3247f5a131de23d99a81535bd7a4b990c9fb85e02aef5ad10f7badb80afb83e731eb524176ad802fbae62fd1b59a0d5f7b98c860246dae8ec34b83ecb70c075b41fe5ca965e1166962d44ed909984b7c0df05ce126f72824aaf0a5b856aae1eb51e9260cdd907ac187148eb51a516c56e1f589c5c82e2dd7236db5088ca0ae0119e5288016659cb7c27529002c4bbeaec1b2081e50ba6c595e6d70f5eb5376fde316662b78e3c152d4df6b22af58cab617c257e429f6f2b05208aa4a5be210689f82a0815dca07ef6d2f047a753a3adad9e55c6bc32698705c3bb3e1b71eeaa04b5ef91bd205e663f58fddcbaf3fc7a3b31f6176125c68dd02ef8bcbaa1f66d96527e1c8800fd41a55f3e40ed62bd340df954d53dd06d3abc134ee8ac70d8f591d91c7905ba84f099d68bd0095df80f5a1b8ce579f16e83cf737021e2e20964d58c08adc7f0cb8f8ac99becde8fcc1c006e0246d586462c343b405c75cc81081e0e28dc2f7390ea361de0844a42191b20bd17431da4452c7dc4c7343d656c8a699c2a85f6112d4d05cd4d51ae82b524fb1233a547ad4096c6520ee03964085e524f7d0ad631e0f527a84920d78d5b5b72a16ba3a763acd60c3f400c4b2441d73dab3132b87fe476455e8a9e48064496044016143bcc686fb5c65f41413493299b42e8d9c050179eeb9394900ba1e2399f72242e8b7240accd024e0a48e1339c81cd5cef45c1fe81a0350840cc38bb52f0c99e3ba23aaf42705be7fa6e51a53ab8646fc1841ca4444cedd72441b623bc66aeb2d50b591294fa7bfe540bab381bc3f391b75d6f6b1c2b08ccc0a85836be96e30b4e3670c932198b893a23fb03240c2d133088dd3cac1ba16ef7cbf114f1243962259e91dc044a14bf5dd60c0aac113797769bcfdd6f5751f24f7991f84a4a58d64bfb91bd3fb0f78c10358175c9e591b29ac4e67c1e8cf9e2a26bd6612ffae67a3217b4b8a9f3dbb577baa75af743b6b520c8eda9bb4cc9b349f9a34f726cda7a7d2ef89671eab7bdee576fb3cfe7cfab63f917c6b53a05a21dfb1cb6aaf3151e39b9115caace51124b9e3240322525ff421f90e908cd16ba1556cd30bc4c4a964e0f11ffa29fd91ba85a5e373f3f4dc7c7a6e9e3f575b2af7e796f973ebe9b9ad3fb7cd9edb487b88e796ebe7caa9c2f31a9f5719759e2a2d67b59659b565aab7cc2b0ebbbf4c559785bacbb1f232abbd9c555f3052a60690b316905913c8d406326f04c1b23f3583f47610b1d24bc111ddfa88263f8d07fa6f28bbec5af41c99d253bc500e4cf76339fcd4bf7a2244f73a0d021dfe77da80180722d3897235123e5e0e701ce7a91ce5ac1c75568e3695a39d97031b579dca713932de2fc7d64120c47194a2f7dab120884c821b905783596c3a83655179a4d03f8e18744808fd39befcdf569c8b85e4b78797cde3680f8fa7ccc46a3e06797e15fbbc042a3e2c064b7ee0668b80e77febddbed64546fc8f5474810740b78a9d5de0aabfe23af8d0fd66ddf4bc3d43f3f8a415a319d921297c8bbb079745b55c0f500da08ceacb6db2797143bb4b2ee85e91604183f1015b07280b6f46c3eab3f5ab3e5a95036fc044a78f367c74bb1127accfde063242eabe122be064cdb1e4ef8501db68fcce0198a49a3425bf82301952e85ad2ad1866d7e4cbc5a5e4b093d5ad08f39d75edea3a7de0d0d69761def3ea2e3d4e926bdacad728b0fb255683f179fb8f59f2590b7a6d5c4752ec5e88ee7b4b1c001b4d5c37d8d0a7a7b846329a165c6bc758eed0638a60fe1f64960c089082d8c93cf5b7c389e825e9906c042770ade9dc6b5389960000d66d55cfaaf4873d59c704d6df9b7a6039485e9a8dfb1bf41e4b5c00da3ac35bb8d46f4324f7c42a84aabc373d0697da7d7530287d36587c4c362d27405d34de3c26719694f56e0d326b709b176938823c3396ff6faac21b395c5fdb84737233f946dea781b81e02cbd682a7cdb79f9b71c61d0ac4de56b2fe4dc1f415ac60774248aa08ba4be004c380450b2ec07622a88663701554b9a1387058656efc72507d5c08f106f4b7c8b03bd55893775948812809c4a7b857c68a4a9649d0660e207b1c0240a31288097924e27f7643e95aed8604907cd6306568b5edc41f2004b22616155e0bf465dc87a7f0c7787e8a77fd329e82573d6525c39608540e887fe45c90e9c4c0134fd85742ec2b78094ff7ebbf9c9f472a07b1f3a25d9dd0491e0a83ea8ecfede93dfef4e679fb8ebd95ce4e217e18483000aebbbdfcd59f60cb4edf800a664477320fc830d1dd7868a65a745a8aa4550667036c88899cf1b80f91871bd121d6e2380fb2cb88f1032d7dd03d4d107a112cd24ed3da6f19ab188a492e89eed9c57817d2413cc8cf102195b7d683d2ce570b1c371f2d1253d33aba10b7e2629bacef2582b3ca14cbdb0437d4abb932f6dcc387dfec6f9b97cd8c0bcaeff48ea3b7b7b3bc5e9f24336aabc5b187d9e574b401a53ab7c95d79aa795798ad7db7dab5d1f660b3ac024c0d30f0bc7e151377e23f54a4af8391ab0cadb7af7c7d125b76f583b5adc603f11226a077339b90e0f0c1b3bf46236d8c9d0bbd017054bbb0ddeb0f4046f641c58d385ad0af967913057cc50f7a65c0cb597f7f9f2756e8f24693196215b3ed73d4dfc1060d02c9d011810218cb701054e52773a1bf2fbab461043a291d4e5fbeb8961b30338729f9e47a9107ee454820258f2076f7131cbfc9269a19769c131702f96041931b88af0748df6ef6233e41767e4c5d840d6737e01d1aeed02ee589746491ecb8ef117c9a00d9284ec2682330f7d6ded53246a39f4999f0fa843cd7325a1e5d2797e2c8b38f67987ec65bf738eb24bbfdf1305723aa4a00fe505c93e32df40840af0805a74b4ab0e0d3f64714fb06e25fd1163a14a006ce4b88d54e5c40cd8fd43da1bf3786a69199bce35b20d9006b7326617b2b3a54609ed1a132e43e54b613a5eeffe201a3cfde5a1784843d09712ec60932df6bb3e45acdc58a2107e8fb03e9ab78730505e3afe8e966b985e99a1cfe4caff1d772f25c5ff23b7b9d757931169f363ffe7172a736683a5b1b5c2d66b0702f565b4ca64c145caea6c0e514a6f77db10d4b95c5d7eda07a2d7073a3d5cb6cc19bae9432fc458495a7cd7f3f3e3dbe3e9c6b1fb774b11d734cc505243e7e3eff33b808829a8ff38d7dad06e0c4d7802ff71e34eb6d2d57182dfb1b89e937d3a75747bc089bde481e366f1b349e1e7e7b3c8904c9b4edbbc1f1c758f3d7a76897e99c3e4000b3801800d4c430da6c1334d068938da6ae234014cf4bfdede7498ec90bb7dfdf0469bad8ed97802ff6b70abf7fdf0ef6e1ebcf6b75810f57b57257fc83f3caddd2bc55dcc86f200f05133e8a3c144cf8723d459291b064649464ea6dbff0cd0a11bfea2f5c7fd19ecfdf1fe6f486ef1900de29dabb5dfd5ed564f84b3700d4426207daa55e9164ca611962861afe2791b5ce9af3c71f0f97ce2ec0e0e44592b199e9a25b2efcdaefd2c183aa307add826b672c1757c64971abd5d50526ab0f1911166ccdd1953c5adcb54e3e63eeeb41901b921837e38aaca5ae3c188375cf480e76834fdb503e8d5d166c78ed3bd982c91ae547d96ba524b545c983400064c29ece6b346e515d24b51178ddf267f8ee02189c3f0619f32e8973003a84ac5440ddd974b0e87ca64ba94a5d3b23262a30498a6474d73170698b5eb0d6dfa2fbe4881d1fbffd633f2791fd4026decc665f215e2ca7fb4a5c2f4460005ab53415580fc9a58fc742cf126b9713535779bd1469b28f47c4a0834dc85f1dca87f257f7f310cb649834086ad249f8dacf24b5352162cf9486fd49643b005a120ce07f26f0f2e9f1db996ca752d4ea9a4dfc52b4d3595a3f2fd91503e8b823feffa203e0ca1981a09b9b602ca2eafb7bf4e19f12f0768467b929e19d37e3cfd370cfa62d3062efcfd1bc3eb4993efffa383ed8efbbe76f0f337971582dd1e15dadcb327cc8c09f8cb41b84a5271ce1137eb00aa16195d761570f12ae0b7c78fced44d126045a5810cc556ad16ebbeaf145f9f6120d6601cf1338c8b74075aef4cd5b0bd93c5bb621382c7d69ae458397eed0d28f443c4ea708463c64a0ea9edd1090d5ef5dca2621d46ed35c851858458ee6f30adf18306723485192393d0d2fc780a61a2d1356c1ec7b667d7cfe711c29c12553aff203f86d76c4a6d7af523e71eef0e173e7e5faf9ed6573f26079f08ac7b158911d385c773226d3006182b4df64c3ceca687b76e6bdae4c2e8d811918866333a8bc4d8eb97aef753996bc1ac662eb4ef4e859090e8bb07cc1de64e53c7a8044d650fa041ca29f446cc263885778422bec91ad0b4ac24db4c246edb84107bd8fae98f26750ea3ea78bdc94382681a3e9cedbee094d96aeb1a58a91256fdb842da5cff9184cedbbbcacd4f76597badd7beab27fab50391f6c3fffd8ef9eaf090ede13a51754f6a5255b0ca8e510d23010d8453c053cef01bfd9436c92f50ea84625d9e8245b8f6cd408c826c4c2f32c1a3a5d9a9c2d85ef92f8ee03d905926b08f2456a7283db85151abad7c9d355046a2db44ef0f40692ad652844a88830b11632a3c3fc8e533c912b0632cc3255cbba58acab9ed4ec830548c2001ef70494183e00e6d542936be87cdf694340d3137d7b17d06bbe03fe7540b6d7e0aa30257ff02a7a89cb551fee55da2f812408b11ceb1da6f154e91803f553eb4f055e8e77da00f01f81ce0b68799dd9dc73d18ed10113abc16d3a444066785782f3ae92443de9342cdee580968a4e0a9fa36d0b4a960befe438692abee8754855419e099385e150ed5cedb62399205e3b3a710d49cab01f237cbbeaf808fd1e183a06b43ee24943571d98ea82cb6dc6b8319f00e3cba3dd3f8c0fdb972b50e6cb9d7d27fe9077574af822a6725e8ecdba2617be12b18e0c07175329abfa1977321ca2ca354ba2dbdb45bcb6c5ccdb603f035c6fa4d9831424e472d2b190d6da7356bc090737f83ba42b046def4c76705568041e058bf909871e18c392f57ced6c1c3a383dbc11e917328123736dd80ae595808232b1c85bbfaaebe24a1d05442487c2e5e4c38fd8f3112e21172bbdf5103fdcd416bff54443fbf8f2f07452429656cb4b9de1437ae9d3004df8ba47dfbfdbc12e18dab229bbc560ba330fc095bbe1a67d29d9b2e43298eb0b5721796740920bb556b16ac9b0f1e71ad1824967a18c37dc28072bd7f3e5bcde66498dd9d99bb6ba85697d2b7650c7d759ae0b40fdfc1b89b665319ff6fa68cf9b856ab3b3feb6deb9e80fda7fd017556e8f9df38a3efffa5ff3e5b6fbbdf289b8e1e0cf0e98895029cefc5ee68cb4e1d2e975e25b3ac7929b6ad98f75ff7f31e4e1036ee4996943e561c46d4c5ea9c92945030702ce008841e83e408300c42ee0c05dec7dc7777093a50b6ab2c4f4b009bec75bcf7b8595b48b86fbfef0633f53f684f0aaae21ed2ee64958ca476149de1196282bc95166a89f949518a2a3a2a5ca4aef8b4af1af8a4a141cf51ec06b8fdc00202a35975435f5aaac17e64478205c978eb492292da9b41266c2523e0a4be54258aad7c2529d84a57a262c116e2c060a4bf503c292ff73c212808a282dc947a5a57c949632a525dae8202e89ae1177c09a92e6821649b763beed24b992f6502db2ef704db9c72723fec973c4516a175d9fe4f5ab54578b097fce01fdd105e7b6f3fb72defc78d86f7f3c9e43658b6b90aa3db8f4a93c4131e9645e3b152fb70eccb22ea2fb127bca317d8e0d9d81c65b906451ef2522eaaf816ad38b430a09a2061b855241184520ef6590958e0f781c4c4f72d221af7a511c91d0ed39d041eb9901624362e5e8a119165510578924ae1d84b774daced6e70df42e8c4f26dae53c62bc4617d27d743e9bb60a0715f4b5b941b68de216159a513a446e019d88d821b9ad5d6e77d4c0110a58cc00bcef2d7d013aea8037d4a20bda6c9e8e9c089c2d22d4451d6ea5123f6c001850731e2337747035bc979e68211d2212f67f844e60c6258c71cc8866815bd2503d15ec881ba2733ebc7e8df4460df158c6a8f31af9c48859279d7a05db03499c7cdadb1eeb62fb812d038502176b68afbc7aa7f3e0105cd48153b0e7864b86b3fdc934b9b3c7e17d3ab83f1936d7693e3baecd9dbbe3e43a1eda9f98d4fcce5f4c819787ff7eb1bf3efff75cc9f91f9da15f93292e5160f43af55cd27f7baef100705dd79d3f949d7533bb2ce628ce9baed89d28278e57eeb94f70d749ab863b8120e5ad6775515907f8ec4ac2e55f3c1aa4a5ed5a24ac403bfe64b4c1e13a5251ae0cfe07b001bc293b3e7efbafcdcc60096408f087c5603b58abb43b093d1b4410f19c8025316c3b669e988ec78d0c72f177bacc98ac3396897c4868ee673744c2063d11b8dded0e6cc312757f2a34351b814ed7c556c000e86a26598b14ee04b0915a2666b8218ccc23d5deca3003e3eddea0fd947960aea807e74df1fcf2f8fbe376a30bfdfe8cebef227465750181f9fa54669142c74958e1c0cb827dcf469dead126970312811621910e2e94bb44838e3413997f134dbda6379c4d3533ebfe0fa6c69fd5b55309fff6b93a7b2bc5d510bf68e790936ec2715451aac1c55a556e41b2704ac5d502520589a3779dc0ee02c97d40c4747443f1ebab609ffd82976681e571eed6392e28536798636798f3ceb84a4e3938c9f9f5494562935d923802fe016371e35a09fad7b38c681c9d96d44896637d05e8bc4b1ea65de7c147a593cb43dad482f8b2716d46a6879db25d2efe131c252cd6b0e98e36ea3cd597b31ba8a866e66011df7e3efd8a18edf32cf212010ebd53d1758d44261dc243849c2d50fe9ccf10dd24601ff30d76f74204d906993a52be0b10d93de3df556629b0f40fe5a062a8ee69e9905c4eaf4f3af30bb0c284b27e28dc372b4dcf828330f2122b3676daef4ce182396240c4948a8b4345de516a10fc3decbd7a95fe5620baf804f956a5da685d4d139386163675b372a5dc83255c88311cb44f2be37ab5512234152a10908f3a8077b58442d3dbe86dbbc0a3429f0572b6b64dc0eae512cbdc41ab6967d40a3498495b460f77aeff52ba84e1b59798ae4148d700778a96b7943dade26ca5ecb7a871174703b174239f2d8c5206780524c13c09a73a0fb4d925ab6cea9bb66280c231341c4f7a50aa3e6608384db702e0de92f95c65d281bde83b033e4752e0484a8128e3deb1b0685b1089e920d3a1900461ff25a2ed1301391a731e6066465341408dc073883d0d2db7956ec00e89dc316c21a60a79e143a0bcdb109e8c6a1c6f42302ed5511782c2aed343af1dcd93812c9f9be2dadf78bbb359fcf0e3713b4b50d29d41552c42a14337a868d7ac7bf55e8736465eedd95a81f2bb60dc341d3e07713eeebc8b6d2d49351624ebd595a747007d8c9b038728ba525e9ff451a0cdda5a366d84e1803e404c2fa8e67ecb489cec8ac7c46e1e348d1e891d9e9c8d0c2402743d30762ba6a10f7d2e81f63d10a244876ce634f5b94fd144847422495b68cf0ca8b618eeadf23d22fcbc7a4e478122afb5d1df72408bd5029dc5c7c903a6b313484243e47ac4618d354e758d9dea1bdb6e0a49c4586e5cf53c537b10a4ac7a0a787ac29ec3376232c42915aee37d172c7452b447e14ed5f5b76517ca1e20ecba66f4fd54cb07059d6d1b7113ac3b68a6c8b12d95b616329a65e9d0e91800ba3a6b91aa1bd241a7d69638c7c2e1e8aaaed87b971c81f4650b4d14eb812ed3a04d0898c8186044a9a1f12543d589c7c94a585aeafb52b80e30e594d9124238f7ca91a44d1119a11590f103ad2860d973495797963b7c7a7588ffd2c5a594de51daafba4aa5ace56a01d405450b559d8f408bf5a014d216467e838a33184b5c7023c64008588553e55640d28c8cc5abf9cd09d7499b54cb0f131406092a69998093e1b14f152cde6842ba9312867fc17a082e27288c7a888ff1c0418e54b76168ea3b2b48bf75add69152b8ebfa82e991327eabf5685fcb249bc9b4cc0d9c1a98fc8905a5461fbaff5137b0d8f5544f2a8dd4e797ce2d1d643ab674f651d2e14682a9d27a0631d248b8ba168a048d59c5095ba8a77e1c1337cf4ac05fed44bd315a1cdaf7aeafe05a9184c997b985b7820a7056f5862aacb10ec58c84110c30bfc7468de8078b5d1318567ad1a0eddc031a900da6e58a49678d6084aa4491a1d46548427a4568fa9a68262332bd2e69c8dd839531017a988b640e5c2458c014d1953591e24fe8b7a6e9a036b47b9eac61ba5cd1248b091112e51c58363ca819bc93b0cb48b80610aaae59e423f07de4793472963dfcd02a56e8489ec7873cfffefbe3f6827d38fdc988d878b079170f792904eb6dcae14ea739d80c972abee439d1a6fe524fbf889cb30ca79d8dfdd4b36a8d8fdfe6e8090856aa5da18875329fc77a613fc7012bc32fc064ebd12aaf5f8b913a7a5b5669ac561583b28ba3ad666e537f7e1cedef8f0fe36ff3f8295da7b16c81b72124db3a929ec05f8810c7e8648b65bb60bdd62d2370c7d331e7b9a403d31a76731049aada3190145cb5963b1ddebafd0ba05302b19386237058e78968cdd540bca40a654a1a2ccbd58903225f88c071bb07dadb0014a2c1c36687f214ae45c5d3ed39ef7e03ed10fb0b3810ac1bb25e3cfa098c0ba93de1769ca5dc4482fb9a1c8a55c7a05b8630b6a306a373f47efaf1f5c9bb904c71d2785e75b90257d2e8a79d2d673c4ccfdfa650f399bb4cabb7b34b3ef1eb61ff215f62bd951eb11c05bdff406a04cc238bd911b30afe7cb9d4e687ed69749f26c17e36fe678cef3d40ea0debe01677f0305883a3bfeeabe517cb0f16ffee8a8e006f92f37ab214135cc9269de03416ec9a3313d7d18ae26f182add90ee0251e854472f1358e1ebd387d8fabf6ffe78b017544eed0db498ebd88beb28a66b1fad2e2405ab5e3a34a2c760a59341bf2269c3afc34ef2d972f67df3ed61b4fb97cdcb7e9653bd933a63bea7f56f469a8fe69b7fd702cd2f400a8df107d1e7adc30aa831c34ef4809575787dd2654ee78d3fc84ac281ea8cffc8219b6787d6558fcc4f5ae7ab23d7f5bd24c6673f9cf95f69ee3cf97ab50fe604fceb891b241e2722f1c1d66d174e74f6895f6c3575ad1b8ba0319219749f0987b02a47a01f3d528efcf67a9ff9b7846ff38a7c7ff8b11d1fbfcf493d121235bf249773347ced117811a89d70bf46583a2b724674dd86996ab4cd019ad3973bada0ea65c893a59b5557fab027408fc001ab1bcd56e5a282d02d3f1dac899f84a00c1e9a0aaeab45a5d851b57cdbc02aa5b258cbfae61d349b0079052cf8c97243685a482df3688baef6104528f08372a292a808e61dd1ff5588162a41b708bdc6527ce9f9263dd6577a1671bf4a7fe8bc2a196d11d1165b82d5686152748d6c3c90c57a211194a39395a56f5abdacd54b5bb88975f343063b1cdcaa4403bcc1e0b8509f48c9445a481252852b202cb93b06161baa92d03785f0d8d6eba0329a1b64acbaedeb35daf93119be76d4dd41172cf2eea8f69ab43a70b9e664a31bf2d9b0fab1f9e3c7e6fbee0c485d56e50ed0cb4617586fbcc97be045ebbf43a6c3a2ba230db9feede18e3eb291634594f0c153c5a52d9cc6e7bffc22645161a1ce8afdb29b65a20f2bff068ef7ae1ce2ea6d10ee5d3ac4d5dbbc40bbfa6666e9ce86838dbb74e304ad5879f3f78bdad8fdc3e6c7f658a9686e410f9d36868b2446119781cae35d3ad800700fe86d82f478ef61386e87e0821f2dd0b3cbc196ee3f24f31133b490a2df0ed549bfddfa5a169f09546b9d526320f23fa2a9bb5aa27a968702defc3d4c18e98b4b31e9dfa4ef2633dce95e4ee59708ac7d5bf4d0a6b2f3d5c53866a31a5c417c026068bc27180d716e18670046a5ac8ab8cac62631ccae6d27e49948580fbc5eb8e70e363adf13ed40ff149124659c974370c0ba181682aedeeb987033246bf91a5ab71abced70a883d9280600d8360857aa09c01a24ebe46e95ea20aee5518cac311f8ff1cee8f00a7be59305d47272296fd1925e26777e40b033e36d225168a8318b1c95645a89a19b1fc8a6addb808f68c558193c10469897a56c7117cfe01dbe967c87385f60b0ba04ac4c305ffd927934937eac63aae237916d37342702e514000e8f8cce09db6e88c7b6429387941d6356224ccab06775fb5c65cdfc11e58751149e813631a23639a9ee3b52c4563955ffb65dbd8f1ef2f5625ae93c91813803b9bc3ed9a84279addb637ce831216f3f41aa598232336b6ec6b17fb67cfcdc1fa59b62c26200ee554ce555f2cf52b830f23bafd5ac3f79bb59911f9ebfcf24b20cdda36c2242a3f4a5673620aa7ec88cec710d71700026027740b47ef294c03e9a2d76cf52bac5966e187f72bfc0bf0c7b1c7e68187a91c8484468120674c07897680c8edd080c5374a3190b6038f032200fd78fb4e6ca760906aa8e3d4a8de8433e3b5ad10ae0a103f3290a2c5cd5d3df134ea1690299833161de33fc2c4d81693a4a01d8941a0d48a51b894c37cce689ebd067075f6909e8b6ec4272d5d504306607582f95a00aa66545c4157c3212286ce13dabf051b6f0d2142eef3027011b0cf6e346736d426be9fc81110e817899117f81e6884223253d333d837606c915a7cb12d6c7da98b039182685a12761571bd81542221ee455404e028a7f217c7160e955888ae842f0d4f4b79d0d6ed00530b9a8a36ac85b81351458558c6a8b94756107ec6c060562f4f4be7243dc77981e7f8c479b9248cc3189c44c4924664a22313d7564209729c5c6816b2c5d5da4f6a43b11b30056bdcae120ee04910ec81c99006dfa7be0dc90d4977cdf3d17ad73f4e64e7a1ae80429dd59892d2072e0235692e311419cae74e363d0b5bed24ccdc04e80e7204e72135c8eba46e67844a17498b0f92ebb00de8f640af8464d35e061ab7aa8a78de8f501e837a7abf5b70cfb56eee921be6787a4831b1a928787863dcb6b175640d80546b815f02f23e8b3a0eabe30535958e97896889250f3695c72d9e86fd37575ea3ace2b863ce215f6323a45a6e9d0d8d13a58ce96c11fdb876f2f9b3fe6d9a973bc9963ce32029a8e59cc208108fb13de0c83b88f59d016e1c0aa93a71ba15cc7c8ef4503c8ebd76a0a524b2f6efb8bea04211a6fd23ba57a553176ca4e5d7cc88dd201977a010adf32d22ed6fb84e8d0ece2d2862b3a4a5b1b0ba225826b2a7554c60a779f395697f3de98473137847414d720bc61ebd1f501d91cd26cd21740330930142b97e129ba194dd6a610e7fe0e93e629fe207590be3e3222c86fba183c85377b4b0997611181dcc00dd67d4fd25b10fe62f36bd5d1a9ea7182ef0b059d729e9b6313cb5202c35eb068948ec905e62def91f3f625524f4d93942ede35d73c7879048cddd2b374c50c7b0be6734f4343f39b8bab2d8242540b057f2c7c524cab42ba0c16c88383e397c11f3a5e2c636ab025444891c9b5ce3036542708d5c4a1d2b4eeba2cc3bf1905585cb3a065c24ac68eb005fe8626ae62f14604515f8f802ac9a86512b4ea7237145d9ab8116a2b152d786bbfb8969929093c101d28778cc46e9cfb0c584e08586e20c70f5d388920ba980fbdb30cf5a67a8b2497204f70458626e2c14c8f1198cac6d59211f7d485259540b61d250d811948628583b9764adb623a1223f5b4bc87740e3f3bc9a2995ed587297c7b656fe9562a410b6103612775725a8061461721ea01488cce32dc6f727216ec1bdad185497b3ef6401b9dc7a5ee1d6265407e89e108434da02eaacbc15d71a26261d097ec11bd06cbf7d6f6a45d8a4882c44227771c22d583794c7b20ba9ab73a3e2a267572a91addff9b6b411544935c14d37421eb87615d069c988af8089e379151ea02930f222298a0a043469f3cefcfc707bbdd6d7e1c8dbfcd20143a82fd5f6f15c45653e9fc882a8475ca9c219ac6b7c8bd4f155f1b74ace9d9b6b896576ded5a7dfdfffffffe8f81115efb6d2dc34e863ba4acc1d68ecee46f67059b079a173aaab7d655860b639282d91936f5fbec04ecfeaaa160ecc74c88506f234d4a52c7a8bb9bbe587c02a116586f8e3fe065ab4b24245cb04d613c36dc660caedae472a3e48548be165d8d28841bfc688b2e50fa725697c3294538b90ac6a1748fe4d2b4ac861db3c047043a24522e2306a5303945d7f2632e34a2a565c966df018b6bc0cb965eda6c690e1de2e46f8dd2f3df25dd46dfbef6fd1cec52fa66b2cbd82d91d82d653fa3f239a98bc430ff73a1ab68e5730b7a7803443fbc9bb7b7001801e8ac6ba7f0fb39804bce310913d6d49db67b20b38e64e7ab4946b2499f860b00c84694b56e95e6d8f054c257754234f89f872daa18716525b2eddc5a48836926dbbcae7f0d7981484f0b20ded7dd740d2a72337ff5fbb8f9d70cf785dec11e1282347cd533e204b36565b0f904cdd9741b9623b4db47ec1406dba3a1d6599832952782a6e9eeb46079c64f2162a6f6829c95fc1cb106f6de9bf839b7316dd215c0ce19a8cf4db49d79b19ec77ffdf1fccdfefe38be9c1032a5c29ecc80b8443da6242769b43a376c74b57610ea46235ded5bf025c36ed1a5a2906177809e831079276dd49da19970074ac0e406d5cc7c33493505bd2ac1e381b87dbd5ab548c3a4799545fca1b8a44b645601678a7296ee979a736e97c84c9e4ad2ece2adec702d6c11ae4d37a439e082211cf1583afd7c8f371afc3d2a6b44be90fe0bf3aa9a029b806eca5bc6de211029f528ac6664155c01c116f8c6218f6bdf174437ac2b4cb62a2844ed332d1565c709d896a69b0e6c3b46a8135bd8697c0777ad1036a6386fe80305eae49819e55d6b373875c34a65c4042e08054611ef3ab9cb3d2887cc19cac0f7e77fcec6089cf3ef4ede19abc76500c3eb53b0c545a0e5e5ad67869f8a6e30954640ee41a0aa05a2a329b698b2b7fc660b12c68942e3b2eece524cd401dad6dea57487a48c80df4d01d6b911d990dba977da0024d70651592c6257b3ad2ece2395beff78f8ed71fbf27878b09b6f9bf15ffbc7fd2c4ba5d292424b07a0d641750cd213f177523aeba801126001f593eebe5b049f61b644c721e27cfb125c0220410ad3cadab45ac35d65aa4bd11634b088a898bdb5c71cd32e05230a1a250846eb86755ae07d0497a2dc517a044a4cee377519de9358753eb7448360e47a46b3a0ea81381a5a9f4d3a363d81db2ae19f60a444e69a8e20801520270e42f4400c1332df15a29be4da2326601b319e94d048ec247167cf54adc1762a8248c39eab82ec0d283e8eecd1c63b6d38e43490c0951b13e2d718ad0f8f32fca4aa5679d381eec2647d6d54488f1f308bb4f2aaa1602f84ced05b94768c0aa83ce1a70007c3b12f321492da1890a7f34f757e1824bc53294bd842be8e544b3c15beaa2b3fe28d4b4f109689e99c791eb667faa6e943a74e2c717eae0427b15326401dd5c5a2bf0f11a98dc915b84c6914afb3ccea8e6d032a05205614ac3ffd4360ee815612b6569c8ae4c534ea2920fa4c7df4f9c60cc8acebcb0836501244e4ad43ec99445802a3cae4a04aa71d97427f501d03c8db245b506d99c042b08876d644d7c2c858d3a86a986734ba9e51b29dd0739a055e3861cc69e3ec11dc70a6a7ee0168cdb2a72314b99109f5b16e311900e6897c8dd4ade6b1bb920b52f2f4151032bef30036df053e19693045f9e145b2340a6b917cd4c699c65266186940045c84f8d1420f1860382c960e9862b5a48d78390758bbb6ccf2c32ee242b447b60d58d97b4c79c4b28a5507d9f5a593a8eb88e130501d3f1cdf025ca529426d2988d0452243e8992a8946e190bacc8a6c7ca4f0f35365cc2e1c2009e6ac2c9d03d3326d9603a99e3ec1eda0a3c0b542dd33e40327470c4cc2afa469f66ca24cf1234cb1c13a974a1b3b6640ed86b5b4f12ec2721c7d3a662a05640042df081527963899c446260088ed991cd3261e3b6a929d4ee47aae5aa865204c05ae511989dcceb8fc18363d51314e1151f07893aabacb9b4d2748aa204e898e132cd42f971736da68c28912a9d2be9c5cd20911634f8be11f2259185419109ce25220306ceaa878915d5a19478e95975cac18f5d382ec5b2732a9f0acf3b593a9d08ed6267744644a3af289b06775b7bd60f2b0b05ef7f3eedcf0a05fe5c4f4d3503c46e81f3fa0212bcb268da1cb6964fc0abdc943e600f55dcb1ab1ae80a3b3e74ee82456698b29544420a50107762f153c1a6cd7634f32d2f513a32762f47415540c7002ce28bc1733f5c3bf25533f7f36533ffe0d99fae5cf67ea6766eaa7b732f5fd8d547d9d9d11eecedc78f4efc9d68fc8d6cf3d4e2c4ffe99bf90adcf25fd75c28efe0f65eb9f0fc0876f2f9bb301086abefab684fe0e6cf741ae72c700221dff243c2d9949dfa1e3f3b711466f9822ee61da8729ed1a7529bc0396648311bf8a7a9e3f9c319e7ffff1f8ed14a41b8de4553ed8b88ad788b74b99756967fd212267f90ac668116776277e1d5e9f8259a2f4b90698f2071b76120fe163d6342b26eeac5f174427cf6bf9fc5f0fdb59d46f3557d68a8580fa83df495eab68ebedc7aba79ae01b1ca0d7d98ad7c1ce57231a085ae5d25938c3c29bb934775ae6dc3f9c37c0f7871f2f8f0f2765cf48fa14aaf660cba7ce4f36de862abe4965ffaa05bc73ad73714373bef93829a6de26c7bf8d9bfc3498f257aebf6aeb7fcd0cc69fa2e848f61d5281771824c2677b56d7efbfc4ff60c5d6557b3b90f46d8a122d6d59f0f8ef4f2ef519b1ccdcbd3f6bef9fbf8e8ffb9dfdfde7b7ed7c8328b46a3a2dbcee373932e888bcc00d6ebcd155581576aee5914278d9a9ceb425baa94cbe6c4f2d1941881e49b14c2826aa54ecf60cd2f609621f06f01276fe4024144de47c0c0c146abc2ae2f6d424269d06de2821c21370b604ac62629320b14eb2f333432ed034f7ce9ff41ac43952618f34d0a98ed2c35f60078896d98111c11c5034288f92188e5ca5540384b454c82e6cf4b107886109d9b93deb5d6526d6ac44277e44626c293bd7d27d222a02a24b7d009c1714cf305131a72ede218b3c115300d63e46afd14211524fe662885017a62d203019eb837a4f048305f1008167961e1c2093ac08b340ea9171f068d2342addf59ad872803ea05c489ead845c6b61513c07830fc4d6461a5843c46e71a0c45295a168f96bd6d7c97294bbe52833340c59d6dd4b0c0d025e38dd261d01e0b6b62309dbee25b11dcff84fe03f7710fd5b52ca918fe24f3a4c9ec0ce985da95b887e12e8d5c006e67bc4720f4f7243dd6b8ba97ae006551868bfa58702669240d083e3e88622051b4d81df1f31817b4aebbee73d6f27852bf6f4fcc0ae74b4d5050f17402eec432609937617a14a9bac8fc9ccda822e09abaa2455563a1cc09054969decce40ddebb00dc97958aaa22a3baaf4208dbc9b127d97d53d224f4284192611feaec08ae127059919fad454a87b7864db238757c783e9d31cf9e73a85c02323a633730e130200c9ad420f8dc0302ecc882c3dd86d8a4d60aeba87673f54fd907a0424301f90228c3b19945b15b83875cfc04c61df9875ddf6f406d4d388de3a80ec9104b980aa1fb31a007caa2c4f24ad4c248e7004143a0218adaea389eb0766ac4f308bc09c09177d9091660c895b667253b586399bfc7b0c7cc554c59002ae479c50b9a1e8f98e86d0e71af423644b07dd0170cf5499bb9e1dd850ced4e59fe3fe2ce16ad861d4dc4b744d0755da754a1be9c1baa96785b72ef9a1a74a43815a7039e30228ca00e82af7053e1557bdfee2bfb856aafe9db0d2616a831104556851d54bbdcb3daccaefb11a852d2e378ebe59da8c775a08440c261a32758550a57c87b8a201362e861eb6acaf314ca800bec2609133ee013c9acaf37453f18c4c17d51f3108b2abd5a57c1d58bd2c72fdd87cfbedf96996771a8b493befc4df4b72c86bfd4f70027d800a20ac3030bbbda290a536bb508e81ac166c33a1a7a82377eabed7e8f549d570b31c657f7ad4c8eb7cd36127fe3eba524c40eaf4c97b5cf56f82867a8f4fcdbb14c6a69b9120dab53b89755a7a4202b112e077f98f41e677ef3c80aee51d9aaf70842bc0a6ce70f989c619043f16a14e02b344caf7fdaef341f6b07dfe31cffe0d9b62ca09ea379ad9577bb622fc78f8edf99c3e828c60f18d18cff3319356796b19d680aca5dc6c464e5a6e26ebbf5d3a58bfcab733293a55ba4417405ef1c9be89367e8e675c059cb773cf6ef20afd78f8fdc7c37e375f4217747337e43bc934e166a4e5c3c12a336c821948c19be2ce1670054cbcb6c8b6369efb7e742533bf3323d9fab3414c0b79cb4f83b956b4584c7fccf606a535a49cd8fd3dd5227d2dac6ed24a2e34d235d2dbdc1635e49ee50d523718f73c1ad0cf12dbe7c9ec6f87b2fc78f8e3c7c37efff8fced3cf44f40aa129cdc4beb8ecc369224b7805cf37deaa58f70539eaba3cd7e8e14d326133f75810cd69fc3f6edafc6f3f1ba7eff0f9f3e6fd433de99bf8abef13418411866d4b1750215d8cf867e3d0210cc86e3eb53b26dc1deb5bf651c7c63a746952e8122da322b55dc917f9046c9b08a57e3790197f106e749ea777bfd8a600c7973c99bc2ca10192b83297f8e27e73e82a24ae536df54045c409ed082e8adef3dd403d57dfe0c87e17d34401e1f21947917de6a733b3efcfe724ab415d9dd820ab919b5f5fab753d31423958c208376d3530657f0d46b6fd5e8c7e31fbb7f135bced7638950820968e258405b6db9d980c4aa7db305afaaf4e3f99ff6d7e7979793345b8cc4db7d74db8efaefa00f02f286e4830c648b98585cd272855e9ebf9f6a53ff42659ec4dbfaf757e660134b7f844f62dde695f9feb099fb49ae604b3eb0fbefcfa59774925ede135e6eadf1379eb2bd122cf6b3657f26f16c55c0a7c40383535189272e4b3c67adb27f1e4f1b1410fe5db92bae99e8bc29269a6c2264d72eba962eb9160aaedb6eddb70ef6108b8b01ac04cc03ef841f86bd6b208ef1aa79be6a07a868c9d00c903330562bf644b90edce080acac5bb989b67fdbba0a1c06bd809731b62a5b94ca02a7b9d8acff10392e2edd55a73260d16dd1795351a08a0bbdb6f05610fc22062531de46805d6b5307240b9ce9028f7f9c264374feae006dd25455a90b761b6491c56c82f5aede21c829c2d78e84091d232b728a162609681366237a375da2900c1addd040a6affbcabaf50cc93307d6029ca60e89d1266a28e5a625b1a8ec16fd02e5eb42343fee1b758cc7b77313a6ac8341b51844e41e939826f28bd9b7e1bc4d772ff6bf9e4ff91da7b1a863500751a1eda5f75d9c46c7d6ea80b018101c47d3709dc6c1be0f5b7b1cae1cadae003820c0b2cd796261a0ac807889f8105c4b7b86e394341dd844370c60609cea4208aa3eb0fb80347d9aeca79109fc6d8e79329214a285c02f82c9d147bde5a8d7f187ac3afd8ed4354c4b0926ea148bffa6e1fded8fbf55624daad6966c062071f868934d7b7e3049ff0c8c22fa851ff4d8bc40cf2f9b9707fbdbf3f6e7d3c3c9d75d271aec2faeb5a27f66c2d8ce4baee0eba4ff763dccebf60d4345b4f1f5ab60b789ebba0b87ab6c9170c8c0ca4010446a232efd135915def8bbd629448a5151b078d340a5739954e18dbf351347f88d7c5bc951399a10bc2f4bbf3ff7ca5f64e85c77c6f779d26f34fe7f619d9fac376971205d05015c0da4c518009064460065cd93edf69b9787717c7c793825db1dd1bb0c01bdf61dc5cbc8d66a59b488cd2251321300ace725771cbae09a094e60ce2ac0e47afb7e1eb19b89ab0ceebe7c4fe14a4587eeeb53c2325bb62ef25e7de71ec6e0b2092e6f5d74c89060e70007463f6cad1eeec065b8c006a78b2a5032fa7fae917124135104c9886efc1f7bd67d85c1b85c3dea3e20245bae9f748f0760ebd5da5e3d0812de42a5743bca00afb97852a38d6ea14ed925bdec55bbf94899d571d9f653c31f7bead8516703e630c330f46658444cb916a8af539bf2482129eab2a65a5a3e24d59380d3a87339bf35712743f53267ab0b44416a47b4f650274bad2eff27fb73a43932c059e681e27069a3b2b81b61ec33d0e3c30934025b3d9cd69e19c6feaca5b69b9797871ff6fbf83c4b65fd9c692919ffa9f3a3fd5cb08818421dfe9d06b4af4977dd4f9462d66467385ed290e55f108d8994597df952dd3044c3d7befe6653bb1d760675f9cb4063d46068a2222ce65648c94a4e83a4320d4004908a1b8dbe6cc445b8c7225c1c24dd43f48600d941e2c99e6e694fb7b4a753ce33b4b2abf075cc2234f9aa9a76f3e3f9e7b7e35c6a10305bc7b2a66097cdec9bcd08ce8947ea3ad329ebf6c79591c12e53accb846401d8ad8fa7af7e0d66b8939e31c2f7bffd1152fe13159162867fff4354d8bc4f26f594f2e442513d251719931b544b18bc756528ae0cd5e29bbef42bc764a72b25baeca55f7a76c1e91e783965afe30626a9d2a34f6def3ff5ec529575bf363cb57de4a91703f8e5e1e9fbb839c90e124cbd6de7bd6d791f4cf84b97dbfc572ecf586d3c561bc0bbebcb97ea5a6886afc74cb9d613e774907049effcb305907d26519acb65d47be85a136e2f2acd089c745587ea29a56fcf0fccf52314937e39e5ff2df5c97fbf2c2ea0ffafa9d253d015b953c85ed0743167fa2d6ab1b2f387fc2eb55878975a4c06dcea1d6e31bfc02d76d61f7fa8c2f8f09bdd3e7f7bf9f13cce4ccc8b10001f31422e072dd79dadebb2ab87f34de69cff1a669d4abfb1f3092ff764e96a42348fe64220bea01083906f215c0b08abb890ddea6151f52a33bc173d7f151e9eb73dc611092da153b6dfb3745e8560d1fd3f45d28146064f7d1c3c50376ed59ee305463d9b699e18f03fe7273badcd79134d3c8a01d5ccbed97a56fa6fbfd997e7b9f76207ceb3393ef3fe44c2eb887f6f222c57009f0caa210487a0ba193b6fe833449c8e807b4036c635edd66ea6c3ce8ce3277e5ef0edccac4d00ddd14d76ae892507642cd8980461506784bc0c3e42f22e4f9914b23b21425d33aab203d112896a4e00dca47b36d275c14a23b4a9c9e7487b1d439f8e97cfeeedfc75f3db3314e0aa9af64d787def52bbff937922658ac0bc4c7638433c5840f7180cd23a03fa64e8e9bba1b894ee45b4310755317b6c9b102b8be38849a1ccaec4b13132a7a7a5adde21445713334043e5fb3bb2ffb6070946c04d715096a07d0a78fec8d8b944ed954442eb0076b29a3bf815da1483aa854b9c8589b66f8bfc59a66517e908ca2d1c22c3fb02197e7340b45e2d2ed6fbe2b22984be8d88e04cb067a4b7da66fedcfdb56eb3a563a4e74e2138149063f72aabb5bc9661e7867c2f3a8c81d51189bf94b0fd7a660406dd08874cb31621f96850b91510f0fa64c18987a8adacfdb71239b8212e0cdfa7cdf7ffcb072fb27bb3ab7e9c101ab3ed6897fe4e7a2030dc60b08e0433ec2d0f925feea8b3fb7b153ac0f89c9c9459485bd60e390a4466b8f212b60b2cbe9dacbdab6544225c59b79d5f2797e218913578108c6b31fad9bb387a42d5a1ce41071dcbb3453038121b2b8b7ab9e7a33d42ea0899a057b3ae7ad0a401376cb47ce4bc38faf87466e87bf8f1f8b0b79bdf7e9ba560fac6582e175cf66815a6a576fbca39c6ce31646b0a1cef60203a1fb4670717051ac55acaee9465b6c827b1390b21240a767c1beb10611060018b2e9097b43a11935df1a69a62ea9e81ec3d8ebda7c8c1ab81c889d7afe20d07d664e5daf94e4b70347bb934b3521efc9191fe64b7bce4f9cdc743e7a6b4759e31d2f763d77db17dfef6fbe31f3f7f6c2e29ac917792b5053d5ac009872ce29ec3683d830e19037cdd392782939b3d9491a7f29feca4a3e0bdd055480d6918d54ec5bbbc13248af604e0e43ca283e3c191708d8c5c24bb8f69677136b17149708728ece2b21f5d09ae044a8b85301e10766464543743a9c9d514c91d29661889ea5028289154d313a2361fc40d69b118ae9d328193751d7636a675252221b6d24c0125f56483342288b794593932cb011335267d8e1b1773d2bf6985d283234251796947f46bb6c7b65b97dab16116ca74d0d28273b38390f3706f782800642d8b24c44483b14d362efaa67fb3b2c888b8bc2c3d6b83702952d89a532730590910c5a09fcf6b71316d909c1fa7147290aaa59d6be7fdaf255cff3fecfd0b5fdcc8b13f0ebf958e4f7e0bd8a851b7eef63a3e2cc60b3980fd01cc9e0d43b098118c628d34913463c3daeffdf954554b6a5d06b0b349ce39cf7f130f337dbf54575757577f4b72077ddf992e470f988e0f23580d435db54b55c30072d7e6aeadcf3fbeb671ed7adc39b919a3b7370e77085f1c76042542784e8576a93ee8753c3d095091085b53c04fa3fed97c9029a6cadde70593288f75c53a82c1b8dc4190227a83426089881c5fa9c21bc862bac6aa647a9b3cfc596d0ec42a29195da37907c2e52e73f7845875113075700ba31be231520e61ebd8f8e9b136fba423039c18b845ba79c925080620161420b538ca452ef77deefb8811851ed43cf1ff075b506fce09664cbf4d41505e131d514a4443411808c46740a11756a0a040d7f9df3d2c42b966b4ef0e61dd394c84dcb525fc63e44889dcc822eabf6931f858e291c364f4688a90a845c06d2452e9d76f06043dc3234eead03319ba5bb4e94e9d18ea99c38505871f81ae7af4fad5e84003a71ef70636efce5505d55f3d20422f95382916b776f0a5128e8a07a96854da2fef0ea4b2b4b917054fd861e7e9c583b7317b724997e38ee1b0d5c80185221af52e3091c06ae083b6249370fb113e9fd0a114b88caf7090104fc5ba9be11b279770aff1018a7a8f22e9ed536015f813dd0e3511f5cf4e62a32e003fee66485f125f8209d1f8d725f27714e0b845ef375d7a2d1b28a0167aa5e9282fd2e49f912b67acf482ce14b52703c82509401e91cfd1c765402f011100ca5288cfc068ab7f100ab91101424522586d816754f50b552f744ce1e434c3a56a6d1d4099622469c27cf2e1ecd50fe5dcca33aa439eb5b1bf828e7974a635c915a919546bc4a9e615f1a07cd8f210a7c6b2945f4d593fb7a207821ee20b873cb07cf8576d38782e47cc151f08c46f6b3ccb324e6f0acd3cf81e15a1339567f44effbeb7a4ee9e5cba77b3c010f740752c7d2c6be6b1fbcc199716d518dc5fa3b5172c2dacd12621be6be3f65d40ad8664037ef335d31f3853f808fabef77d950e187d78ccda0bbea7b0651faf429fe76998b740f7fd3d79e64c7deeb98934069139441f0ea4f716e5cce3d24631e64cf87733db103edd01ac7e3283d6f11eb756bc69d39168517f89a3b4ca0ce73ea8d562daf2288a4f5c5cc3e2be60811170d3f6596008877bc246a84cc2410e0cd816a5efa2f1a9ef78069a6cfaae11d0df1d3ce9058e6408c68f8f3d9924ab68d8ded0b2166d6a3dcb46f35a170af299cb5d17619640dab711ef1a91a15dcb653eb71ccba014b02f05de99e4aed3d25b4e1b936a81ce2b95bbab9efb0bf208a57e04f5c3539fc44054eda24e0e4e60685e2395937d49905aae383099cf9d29376528516febd4a0b326fbae103c0023eeaa777768e163e881871c2d2b7a31f810c1aeedc22d06ab5dc8a5018bbe0f24d32f7e6978045ed31ed5799cde1863fd0593cf84bde7239e1d773d581edecac7b1d2a0a7ba63c29155bb94e9d62f3e5b0032f416ca46f4257cc82b766ceed3bb5a3c4d01590d2dc796364ffa89853e14f00dcd43efeda6c1432f91ee0e1148d39d0a74664b5a2f7bcfe356704031fa90c53318ad89e6cda87edde8184ed7b812df4f3ccede6805571e7a6a18306f2a97d65e70e6dd1dbaea877be6ddcd241302df0e41d0ddcc62e65ea0ff020aa87e9a864d49fdda13252109b524ff24d41e26d289cd461dbb4fa80281c73dfbc003714090159949488fb4f3dbea90a58332d369d67710552440cfe0786de6829c3d26414639054290b77b9ee115b330498c719e158526d9e223a64489b3df6c5f79204cf58ca91288ef7db3eaab774c0e4851d6773c025695dc23ecde0b93a5badb1b94599c6a98d5360b0610bd1f6b6ad02dbb05876db3606a587d19a225c9dc5f79df3eb825e03cf6593c35ae8cc71fb5cdde19f49f7c80871ffdadda7718ee750f219ee10dbc78136dfbec22cd3e5d27e1c74620410f779ee72e25f74522e96c216d19f2c0f7e05fa5b3421f0308271704dc423c6bdba62f36ec6307027dd8d8c23e13019cbc78a0f45d060f0297e1437817bf2a004a268225a20dbb89c1030182363a600dfcaa7cab2a5f30b3d720f47ce010c88a63b94bc4734ef035009a5958b0d95ab0ef9bb85b0bdbe50e08f89ee990ef0569fbdc33bdee219e7b04d62bed845be871435868b1ccbd00670a87d86235fe67000bcd75f53e336e2190aee5ba097400da22c89316701529072ac55807ce1a0ed08bc53de0403e61c5fa685594585c0416c109da2e5e92900b596aa0858e52a4c57d34bc462d88a9fcfc6097d011bae9b6eb6675879d033420f0f00a08f58ed0e3f65cd6fd629d91408821f4f5a8ba8c3de616623b75fbcbeafeb25e43c9671af496fb78a3282c791080a486fe276d611fb8dcb5d11e468a61ba40dc17cb529f55b1484807082fedbb95082b5128c055631b48a5cd2c024d833c67226e92e572df43074c283e0f17cf06178e0dcbc3e1966b2f6188fd44e1a7da20e9a2af170b6d6c4138b46c20d17ae671caba44cac83710d0280c31344f323563b24ba334335d12c5a96444a20849e9700fe1ba846371cbb4066ac4a9c1e737b498acd6620a70ce88026190101a1d1f4cd90e8eb9e9d2190389d8e0bedd27525617d45f1f5479428b08d610abd6646fe5b1410aa5b5da7418bd81fa95cfe6a125491db6fb34da2c2654d05a1efaf3b30e6a7eaa33dd6c1c8789318b2671a8090ab03b284fc4aec16d260d34d0c0f77496fae7a0cf20b222417c3e1e54bec2d5fe44aeace8751097868b0f9084e171774758dce33e7adc66959353c4686326430c1f7cbde19c609043099cbb99432071e4cc1befd38ce6508188c21ec1a31278369ca390f26c45810820882f05381c3b40d055ba70872c14f053edc615260347f4261039765096f1990775a3702382b1e48411210dee3387fb680423310b3447287460b29b11f8579253e78009a9bc3a4b34b63639799a83f98562409241a021b48ec00792e46ed5356cba1a40a593031ff88cc3a93db31b9c50af2a7b17f2b628712428bfc75c6eefa03bd90001f95d9a0287268466415884f26f9d381448ad6c515007e4616a0c682a1e7eebb23406dee59a86f33b1677e8e12bb221a9c7211f6667a297abe5bc048153d002c5e1d6360f5c07fe352a5c674058228315f25df30859c93286d001a0e5770aeaf6bbc6631883e47b47f7ccbb4fc592e5a51126f369781595f1384c34939415c3af5cc82d0d873b3df5576706fc0359cd40070ecf523725ffac4980f6dfcd7c85cfb74466bf2704b796825b538b3b0279accf3dff4c9a53870798c89aa2338ec4e2be80758bcf3b391c85a7b0ac9d03841d479fbb53c1fd20e1013091404e6d2e3cf8c5f097e001224041cebb1942083397bb5622b803dcccb3f7849da07b7df831452f6df7cd8b31898a71f30e121af13f617e10ba0ef73561ebea3f73352e14aab9b04d367a6c0f80bc1151cfe1ae93b8dc363ceefb67e61e70afa5e0ae07d38347da80dbf612466d1a9c05dc72a686cb1de76e26b8f4d0732b4caa34a7f4329190fedda9e4ae9f90899ce34e05de41a3835b0fa6116f4dee6608896d732ba18b0fc79b7253261cb7366f8a2e337bf3d3cc081cb7fb0e8ffae749b2137d600dd36aef21460fb0c92155ed5071863007fc5d0f1437f4f6b1571cec85bf33abb757b27ac41aba17314167f5f620ab1f02ecfabd58bddda50a7da10a8b09e751a3da9f9ec14dd670d133ffffd6a152b6d2dfb78f0d0d878d408d8f5853fdc53938be12849847aca9feea1cb87fea1046ba9845b9bec7a2ca210886e7d34336ee231b0f1e9a5282efc38fb03da78a8db36f9ed5da6aac33b5c34c5d3f3a9934943ef77d72348328c3ca9b8f47509d040e2c09ffd5f60c92f2e1ff0a1016b1fe94d7162b94dcb2d0bd92a5293ad182a5415ef51092170e7d3e6132932d1201a606045f8bded71d44464577f1d2a567263647432429505fe9a39ffc5072614b469fb5ba53a2f52882954a82692657398e9f2088b124ff6682ae836dbc44762d52251356347ada1008638bf6e05cd26db31570078ea0203f542747577289f64536a119d3582a57ff4279ce901e392044071b687b668931568880ac8e8b9e7df03b621f431f6d74ec818e61d1d0cce7aea7ecb04c1fbd944beee327ba16e281818723496e78d0ed0c7a1843306de52455b9f9f0c887afa7dc3f91635fd4a191af146513679175bb4f6ede05972e7aa3b2a5ba1373c83b125100fada3503229aaa26e915cab4ca0ec8b52eda4659aa643446130559b6a3350ade3e287a44fc6e470d24bd5d309579a0a9c6122d063dc29d26630c022f76d0244138b858a58f544cc0b402ad07a4a83c6a0882b4466c6a41867908d403e7540be9035dde091b533908d26d73e987825be8ead9aad53f501cba04568eb224f5d3e5b67f7708f21bde9a08ef0c0555d4ad980ed921d022c0f70264bda17c1e4bb4c277d07710d9454a1c0edfc2ee5bca0b3781e8dadc0c9682db622ab925cec46aeed6da00839562aaf74d62aaf5bb1f2356f1b781ad2bc0b304614d5b50154a92d51ab56d6e5bca88149561484f0ebd6d9774fd6393ed8beb7113245ad30329d43d93e69ef09686cb03321975c7c4285ce22e3e799e76ef66b4744cea3ebaf257fea5202942d800bfc41fe438dd0fc893bae0c2df112ebacea4db6ed4e138787f05db9c4d2f532c72096dbbe468873c337a01dd739a01b163243947e260b91e798247064268d401a25193273c18595be1d0db644b07b4eea0fb1b8ffbca9e4e20ebb1d0311bc8e70c18ac15c0580247416f7fc0a4d56d1b327646bdb61498340af2405a48a509592291fda645f69b9ead1c3f0932fab1090bdec72967e4385d10e3b21c2ccd15d419f4488fe0d708334e16400ae8d9538eef4cb2cc449b64823687f1a771430b69d71ec372b5d11ecfb7aa3a71b13bd059d705c208446871138f31a6acae5e25b4df6f9c0b19e46c0b36518710e8c9871a619e7ae44edcc2e17050af26c9a59a479ea85c5bb9aff2e96f403664d017138d27d02b007acebe3b047ac61b6de498c4c4023426b5910284a3b37c477934b090b33a38a8642769555e9ed03da04fec16cdc5d5c85500da0139fc92ca959b4d30db1e41c64be505d571e8afafc0bf951f3c0a239874e9127b08283f154ace0c5daa89bc5ea925263c6a9557830dc34cfb045281899048a183e8d05f22415ad07137504204a1d508e5c21dbb048206f1fd9613de629ec4a502412c74739e611700ff545ceb604f0844499463ee797474f710408a7b7e5fdc1e02c6b1b8e7ef20109d4db7bf1639f2c662bd3d8bdbe2c0fe3e204eb442de81051fe036cc02f445ab6081bfd1d7b48517cc622f587a7bf6122dcc3cb2a624571b88793f008b366482027dc6477d403e825c2d1a38664b39359ca5e14d9d8721b5759af8fb42b7edfae7603f123e62eb3ea10cc71fa34907fb171f0a76267ee0bc664fed33793743139e014b36676af4bd51215656ef783a6cef37b5cf4020442f374b676a9f7977332360c1a0d9dc5e1fe94979c8b9ff41f4fd882a2eeb9dbb86fd4dd967018c8437d436b9e7f75c8eb7e74077676c2616c227bacce5011386c31c92bb99c72dbc94b1b87d60719f499339d5958cc7dd045d1a740a36a2d9bc71692429a1a19c1f1c206ca58bf827ae2a04ab53c527aa36e6e22d848d6f723d2e9963385ce16838093ee095dce6018456b84e0ca448a8c0e2086ecb8005380cd1e75c66710f1f77ca032ca3d5e8686e5c85e38f9f74eb24f293de78c208c8a18ba811810e7ce6f76db8077d7d3deca47f69d889cb6d6673bfc12cf2601fb0d01d0c56dd5d77bdcabb9d1ac0d74623a63e02a93fb5fa3eea07348bfd96170f28f2eca961f52f03867ce4dbbf373a516734aeb3bc3bc3835cc03e70905e64f56274c7a17b5f13e9c762d6a39de82bf727e4f1c441f7ba0a9e0adf01cb3e4a75df96edfe59d68c3b5d660d1accf5e675c060eefe4af2f863544ef36c7133d56c1d83a96173db0d6d02d0ac0e40b6f2a882ca0887bc0b8bca8714d5809203ca6d865012b0f2a14487088a400d8355903b6938c7e04172ac1ebd38060f1c8364647cb1e692e4267d12ea5cfa8b2f3e4c14c2f001b88b627c509043290b0b75bc319d7e9495bd8dd2ad55900a254077246630e63eb900772d7a45020bd2439f1670d0f15c72df6bf9d34a995039d03278e02bfd13bda672505b81b23ab97585d34be8d09b615dd91418dc871e7be433d9c62759e4d8155da428b7bf74e60a5c74a129c8be1f7d66a3901da0ff20f5b6083d2b5b021b468f6e1cf5c5afdce19b0efae5c2931247dfa2d2e7ca058f29511ac4c7fcb607a2a83b64c4de827b0772402d95c0c70f78ba302547c9150eac01f7d10fb67440a8b54829842f7c04a9cf50e3e09066cda36771e8732720ab649b7c4ae3cb46c7239fd1702e28f0ed99201b2c2e509c900a12016747f924f51a9af46d75c2c5c3b45d90fb0187d48401a9371a8fca426974a4bf67a3ef38132d0f252ab16c3a6f5940620a2b19bdbd93d3545c8fb8c792694860e334911582436fc92c0f288bde1e92120ed582e4ca489dc9509169293fad5e80f46bb9e8c9dbb7281e3dbd5a36faadc2e39974e0af443f74e46a1dcf480e76084e6f211c40d03ea95ad3e8063ad87b3cbbbd4d22dd2a5a8982925bf46a60a772876c6b52668d4832ad6129152ae199c7bde6b50062ccfa8941f80d68250fff0ea409dbe799393538beae100e0fc6e844983988c4eb7369d4b61ff8d742cf19a2c2338145e58354ee176831672168b4bf8326232421a153142a5beff0a7706e4cb33cbecbd2b251b50b175ded9aa89da5379c34a27bc29d222e9864ee541094b282e397412858ed928b3450bf97ab9547b89171b8e333fbde257d3793cc4667527bf6dd4cd8ccdeb3b92d13650eaa7780d1796be01ea0396f214077f5bc11d6b4458ec168f1b70f5c361b68be76e042201ee13e9e5061de9651de3242505e77106bc1ee9aa5a3c5dff0651876e5de97293682ac9ff50e55dacb947a245977243d3174a1a2811ea1e41b60d9151e36a438b39730578855242bc7871a359e097789f181a19458037a5338d60069dc0f55af51b222847b0c8361de1fa920bd97ccd1b9a6435c1df7d4d604dfceaeb2c418c7f938d1dda3d8dc14a1cb5c56fb64924cfb6908395048cb56de613edee35b030fa8065f620d9d0c7aa2d900dcf3d0d173e8de9666c61da673eac1240e6759aa4bc0c25470ef085680f741b4af397652bd0eb20d975c6556cf8150c4f22a7012f85b9096cf476d98ed34a8a93673599357f9b36c5e2a3a0537c96ba90f35aa6a98caa58e413e971e081b36398a730b722418a8ba932a13355365421531ea3e6cd59ffe707434200e52c5e001aeeb136ad0c3b55232dc3b03651e87e94d121993ec53aa49ee3d209c8166a0db5057b9e4c79b1d103b1298c4697560b42ceea04fbc803b2e79559416790b247f7a8e21cceadd918bfe36d57d12a25e0c0c52dde24573d27050d4b5f1cd8f8db63466cb4fa1450879aef25308e4e149bc99c076ed051cdfa8ab7613e091555fbb61d7d883038e7289f2686909a3df8132bc695c58dba1649595ae34e4d4e68eef6b6168e6cc1ddf4d3c10cce0438b3541c0903e2a1e7c9f75321b1019301344125be0c7b6561bf321f9997d37b3b80d03629a2ee2293a8c3e2b1e247910b07604314d886875ec6364842d243b8779e341d6e918ced0dd1272da00810206a21de6ddcd5ce6dea31c768c214b460d1d9d9e8f0c6ceb77339f39d3c75915fd63bea603c34d5cc3d5ac14ee69311cc8610ff01b77b686c7ee756c91788687da24d99a9ccfb1a67209a6b01e127c75a75026f1b61735d1a6c76d7b8ada008fe11de9924b7c90e85beab20b3636bcf80389d4c167852af04c787bae2ab29ffc0451bb2c8b5950b0b334b8f4127ac80ee7b96ae139eaf2991e79a2c9847326cc8218a94b092a3c348f10623c5ca5beada939ab612f34c4ac441816728525b11bbcd4b2c98e1dd61bf544c930e8ba9955f7259546b929cdee02592c0517d698a0bd6cccc82db7fa0b27488453b325f711501dc7e6ccde135e22983515f7e06220f2b2a8c65565adfe9d206cac653157599cd3734aa610062d42736254c21d70761875c3da730e6ce691d77fef6e6670d220f98467e7548301f3dca991a969af26572701f8a7935ef4b934a6f1cd3469b9b97299f07a333500f4510d41b386f4fb0a6ed16d039d27d41d045ead49ba605bb54cf53953f24e33d89af4c8ea1cdabd90012761289f2e3e98baf8a0cba27b17bf6dd87bf2cc9b0af3ec9110ac2043ddcd3cc307a14e12beac5cca0113c6fb8caeca9633ca3dd100742a5942e16aea675d477b14a124ec065ff3105803e96d9deaf169e7d7994b3f8460fe9e0f71c2ac22bb3fcf5cfaa5b7b80b49a41e647e1b6e28dd17a2a98c55c112150855e590c5045e10ee90831d384c5bcc632ef33a08a6ade7140778e436f551ecc09c56b0454c20f21b0c39aa66f52177a7021f4d78152eb861b1eaed0a6a5a040f122eb8d80b96dc4f041367eed45f5a53c3e5fe985b1c842a6cc99ea88213e8b63078c00315e82f410e48a04660cd70ea82ddab424ae596816e03f62aa52faf09cf1db79ec5f428a035553d24210fedd38499d0ab41c13d29f573a3b42422e0d8dc7712687175feac01edf6345428620eb20d9fe74299b041421967ee1ef4d75e0afc2bcc25f279d7f58854d5cdd8147da4d9ed5f676ef5034815e2a8881a0e17e181cc7f3d3c90ddc0038947c303955323898bf2775eef7877aa2e6a84db5af1da4f58c66e67192f665745fb60812cd2e58e3b56c66582d4e826da90a82d1e973102ca880a94066d5e1085ca37b80b8b0b21cd2c0f45048fd0ec2a5fed186391f6ddb454050edad8a3591f02d531f24aefa0d53e4a63f8dba37482e31350dfc3e78f0621425b343b5814b4dd9b56eee97d3ae83936fd454b126958683e63fa860782a66b0420112008acc73d3996b489ba2e737880b083883ee032ea94447b150b55f80d1297abf05c055975194a8beba11b1b5fe9ef09894f624f5d6887a79a6d4935e2646ceaa336d9b41921bba29d524040af9250ea70f003ec3c1de91c1c5386dd273d17da485626492ed448a639e41e5f4d8e534f0e22463864cd821d51481f9250871003842ea86c6a9dbbba743350c5bb84d624685d58e8acc2da3397fec05e79dfcd9222d9e66469b160b898a53100b483b096782f4790881e518ae052b9b51635962a74594d8aea250d08c12f09351cd87354c0232ea4367c50ba3d583a8e9d83d75964cc8653a4bcf0abb9a46dc0a417cfcaea09279e6e1e80d21d41e6b48a50f0fe46a05c8860880d5921921a354792f1952246babda03638dc316a1246f7853614e4f8cc81a21d2e1d24fb6a6520291262ad8d68a38c70da7860a11530c39b1653a8a536c5db0e4916a18e87c4434b148790085be20595b6a84d9b7843a5ababf8002d76344d369d8a6bf8d5027190d9308dcf542cc8af5990624eb8544c85812c8c8a9959d44eaf5a7b8aef61831d5503cdb6a2668d407540048fad782fe281b0e400257a08f2d37be100dbf37db6a2c3aad0ee0b07442c1f4249f098dd69735fe12915d0bd245c850ac3fea406bd67662114067e17f39e09f36ee618ab9ecbf88467f70fe1410cea2e568242b4a768a6e341040f22ebb9df61c8a50abefbf77a0cd0bb9cc469648479140e1a79fcce6ed24d4358882be9c136041f888267d1b5a402d5d670034c90ec9b07042edeb05908f95519cf582ce0a675269ca970cf641bbfbaeedf5598f7bbe7fd43e655f8feb86ffff028eb33d137f77299f91850b8413b93aed91f2a1e861af72883b0ae9be1a1f18c96515a168dced0e95cb356a2a8add18c7651511ffdd0c580f9dd998d80057b361eb10d72dd642dc9f39fa89d2d1535ccd499b5e7dd1f2dbb073e3170c26ac9dc765be69ed6c76c6b6990d7909969387bd6994f3f1ce6c0415a8bf2b5a8291c739ab8a961579186cbe45e50f574e640a4849f6783f48e1fc3465bdf01ece91903da4ba3c5d484d9426b22f852af862f45b78e03f0a5d0988758cc37c397b606a4f1be1a70df65f2c4e281cf028ed87e01ee38c2dbb15061eea0b9a0e7a36b23746fec8fe92981291842834a38c3c049c770b8efee08903280ff388c4a577ff416641ae2abcb03af0f2439e4bc584e0d7729ef6686650827b198bdf4a7ee999f580642ce21b5ac06d81dd28ed5fabae06ee61ac1d4406b829e31a890f7621a967918ebd74dc29f1a32914ceed9093d4a92072eba9cedfa43c3650d41b83f49e61bb2a87c6ed03ad397e5dd212e3a678c9acdaeeaf2c4456da96498088110f15066a3fc84ced010f2098b00566dedd94b77ea9c5988f739359cea172a4b83df5f819a8769d1f27216e04d97ffbd375dea1820b867310b245889e81f161dfc0477d1c38d6d338f5b36de41a3d02e9973664fefbbddd81bb0943f719192dc877d3205f4b21441d97df5160561671cfbc0633ec826e8a4c5e58ebd63431a743f6f333888c09f3d89132f2deea0d21ddfdfd87014f31241b758ae8da0324c72874cbff0e44eebd2f2f1dc63f9e8adb96b3349e70dd42bba16081195c9a4c78448949edff36a3b597c0089a665169c1c10d757f3010eb1209b5a2e76aabaf9f0e8ca914e4ee80aaed712f499d6bf43453d9164c29b3adc7313c4eb9688615f5dc2a20f310749c079dcad2502824b269c03612392279a18f93e3de4e62d449e32d781053d86cffb1f165f063d0ca3f4d53f5973b48d15f73a57dbb38604c9bef4e24c11c5ff5e376cb8fbbaf7b13fff1e5cf2bb99cdcc7f4f667d56a2162e9dc31d5b9e494491b4b9edf8b0717a89cd1d0356917300eb3db1b8eb4080ed5b072ef312db0076e821f23bbe19b2d0f40609181f853907e80a2631f054ed745a904ee2f4a6ad020cd8d08e01a7e2c4c097665e8d290d52bc27e05fb5670bc2005c6d040f67000400f20d875cb2a27a65d8cf4edf381995fd0e4831ae4df61d95cd357399cd5a7e73c8714e800fa9837b2cab19fa78820579803e8199b0f7c4bdbe220736f27bb556d5386b161101b3a7c620f06cbd32b8e72586c303b42374d0fb94303523730f8fc826370310bef056d1a3b993e4ce61c8c591a186899e804b8fdea0b9ca3c473d0c6bb3571a74a59b45b7c83470b02ddb026790d5b3da3c46c003b3e571c95d2ed5d50fd94c7bb6c1ad9a4923f8956b9dadc6dd3eeb7b7dd206f753d67da7e63cf26552ff55c3c0c32468af6064fc30fcee5638cc5bde67faf08defe2eec87576df92e13bbbd08cd5229d44399c19343d8ff0c616ce0e2c018fb9867b66216618873d5e977b4e10b9cb6302a1da10d70aba58f9c96556d138e88332763c4c8e376628a3c9131b43ec263f192e7b684ae7de1d12721908adb0f7586a23a9f611e5a35358e3fa26b1d91b86dc6c2ed249d61085b01f8630d65ca40546400f031dd4877ec7c3409bd9f830d0a187810e3d0c1c52273d64a68aef02bd3d618f25ad47f45a17309bd98541dfa0363c393a63f23fad39982e6a4fd486db1a9e9b3c5bcc8decea6fd1b839e6dbdc61ee8e249e6aa2d5a282713b9184e844d60b08af8f26480181bca176ddc548172feccc1d615131425039ea085990011e77f47f461568d80acc0e4a837d91b55bfd31cd3ea5c6329ac6baca124d28021f4edd7bf6d2207312f74cc28086169ce33ca6fe54f01fdc043e6f7107dd043adcb224b77d5ffb868621a837b6a5cd7d7ca5ec7a30fa8e692154a6cd4d33d8b31243306b4fa87b54659e35e5966591cf0f54b5c3b1d85d7adcd11ee70b54f79a4b03285b2e87e36cee4c0da7bea4adeefd7c48d94a2f94376bede93f94817e547c5c6abe0c25b7029040ada0b6d777026970dfc10b7c7aa36f2b7f728876492f61ac1de171178dcdcc80dccb49a8d3e5b6e3313c40d0ce1f042e377d74c8092ccfb1428b0b07114c9d7af42105f7c87e3850cfc12577618f70d173b089ef775c17ef02a403c32fb06578e3664d41bc20dc6edbe526d99842bd20f6c0591d9dd4da842f6b538f1c970b41beff2544fb1eb7a142cb87738603b281c36db45db22de8317d411717dcf53c2e4046b7b8c407d69644678cf027b0f052882e67c85996b01cee0af4972bf0f2189625ec7c01881aa1cf9dc067f4a9201a1c89a68416772cfaa826c7066244eb380fce5e1e5e14da821c73b91ee230785cc27849d3a5c99496cd03df5e421ba68207d2061213c1989b0848e0a1af6560af1e90390c003ea8f225b7d01d8a6d7107b1457c3bc4e3367ea8fb6d1763a43d8621c64ddd4693300132000cb49005b7e0586b43e341ecf2a4cd05d6654bfc22b8e9918f31bab5c51734f8c4dd075ab4d1cf966333979b41b0945c9830e7d2f2ce7ceefb620fe62068318624d36e5f6ca048629706b14b6091cba1a70a03b63d0346d43df88fa921cf14ba66e504bea8dc7bf62cb53be28c241fabd028f85fab1bf358f7f8474f81dcb1c17d8168101eeca2d207010c0e7a072e07e6ea616ff17ecf760d1b5def18360ff0facf4f6cbac246f8647cabe3e02e6cd3cf3a765cc3e478200e78f4b2098a492c0e8cd10dc668dc85ce26029bfb3636028fcc1edda59b7eab37795464c932d231e33d74a5ee8ec9ef8e4b728fcd2d7c4d845700265d84037755b7af01228fdad838f40e25dd1a6c48f999a0608ff22b81d736aac75b54848277429d8251dde6aaf452f36be1840e0f6ce690a773939cd8218ec6b8e55aadca1ebadc327d469f95112eceb0a79e360acd563e2014143a47a9d6494c82be1d149804daa8487a13283cf5944c34c9e0a71dda1cdd7f58753bd10420186be95507b10c74c4059bb4a99447366cd9b00ba21b0998561015985b90f400ff1b57a727b2eb777d74fca1ca1bd7483f36bdbb533e921cba2ec7ab5a6a2aa9581dbcb616ea7d5e4297ae160cb76731faac50455cdf681ea0a8c156e3cd09581ce7df75abb951f34e036bd1ec3b77c00be0a81504e4731a6fe425f780c3871e7704c38f6ab7142677fd313e1d90c0376ceea2020992b347cb56f34958469396e37097de285970ca12dc65b0ee4ce7fe17323d85c97dbe4cf66029ee385ce2633c8f79e8120bfdc68ce90251bb2a2cb4bb42ed5ef19ec68c418675246bdd5d16f7dd5ddacc1bbe020ef04e00d68b3a5cfd5e57c0c3e6ebc2665e6b72922c9cfc7e4edd6d75ecee795695c181a0b701679597a3619d9187b7a5ea1957ff6a596886f2fadba6da46de50d7ff8d333d9bd9bd81100c7d08ea235144f903e330563060209ba1bd8587eb5ac2029316ae67d4a4a246d526ed0aae791bb8011c74a0d504633346c03497e31b648477c2000b7249025ec2b71d2e8459f862da4605ad803d163d8e92676ee5ac13e1d538360bc23014df050b7c4b2b256217d9a851c6924d3c77e1651053c67bae44ff4b0c2dbf6deee10ab112e461d6182fa31d346b217b2a7c18ee13c01976db4184b48023863b19c1395cc842712a759d0002053e03ae81d124f144b49309e8b1bb50165b965bb1c5311ae0a38538ec1ae8ff17da08cbb5e26f041447b7322efd51e86984ace62817a17ef5c8c921283532d00f14481df9c8736a13487ae86d115611e4227e2b09c70e1322a89d5451810e376755cfc4d57b007a2f20b17130a116f9cff3e82111a90ac9201351ed824a716892f99a49e233aac09dda500e7de0e29fc0c3e39b2371891ab8440da16c2742f461e5551bb9305c028ff283319eca6c100e7d7c9986deb10d451720c323fa179a3ee21754830434af749d206ce5bd9d0cb2200fba26c4f7f568a1586b3e5b7243ed462bb4e9f2c4aec11471e0fcb14208f494f9bc4d76685ea07001951b7c045f43fff4849c8062854754e55b4b488c7eac2d7abe8e7ecd413071944040e34d9c9980b2709b43407c2c0c8686a0c2e83e8c7b92d11588078749b28946f3309019313719df9a4ee5ae156d227d572d7dd3a7fa382e529716a2837883d0ae250227c04ac7b566a9477ca64dc293441fc312f11694152fd48a88f49e4f42864bbe0d5142222656c90cb80ce88f741b7c387cf34e8865949a96b78b473ae470a8f6445950bd45710290c6d15c144eb1e8571d2fc6826d8f078ecfe853315d20438de92ec33c0eaf1ad585cd0338f079411870d80d2b514422c8bef40e3c7c603446a79ac006247754bb2d100624977247925467d183305436c189df23304d3868a22304eea38803533336e91ce15bcc86021144d3e5be9be0183a70e0b483ead906fab0c46b3f34e3c1fdd9f5c89729cc916d380ab88c80fe31c2814e08cf8073c2dd2c8083b44f9ec9107a728c38840e9af9e19482601402fd7ad56245584e892234eab41582021cee1107449041257a697114d4a0c5c97ed677605d93d32682757089318a80164e80aa6849234e286d6a0f952ebeb5c2ddc2c54fe9d58f1708d690f6e080e0f488837a4e8dec1928ffdd9ec2e0538072b6b222f7081951a938035ce7becba5440409822535250f3c02df40b4528f4c11e117024084011cdb197d562293449f38369a68d878d0305d6e81044f7b059e973cba74f19419b113001f43d90a169c53fb93b702460cd6f65019e4915ac6409b0982d4f0d18adb41ff2e5ce1d8dac4eee9aa921e8ad2a90e047f4486f5887b493acc54fece3d851b41afb409a7d2830a0a1c040412141ccfea16c23d3a0e228de07d10cc2962c97a2ea20be294ba64620ad51584032b953da7ef8e51af64db3cc08320daaca3f340283300f14e70c755681b1e97886062a34a9ffb01c1f7e1e516eefbd2535a229c6d9b700e614481ba914f981ebaddc1934a2010b8d0217f3b78f53786d527100317b13c026502e09022d852efdd404e7061c122df56b3e021b89563287c79b48045dc0a3c155107607d40012eeedfe84cc9c40a0d9a6bf441086d0299c3c2432a62ca03bdd954a85406c281a1d8355e9b41dd81306ca6acc881a1a06d3bfcb54060416d0710b865d8dcc1abb6c070db48f515a64263c2a7e3d6fbccdb1b82bbeee15df74c20065c9fa2d1f823ccebfa852d8d9e65dddd4ca005d7905fd3fe6577ffaebb5f9e83a63f8ff263f84d973f0323ac43e05acc1c1a94efab75e6307b70c2be7348d0b8e0f79aff99c3e46071df470003233c898b328faf16fa836bc1e403deb87b57966d0495019881fe680e00b5f56d410974f01f421dd43a1d4fa24cbbd61e76f1fb0803e2be7d20b95c38731397d986dbb2595f66c962d6014570782099c5030bfde0a395120863360a63762d8cb974a61528fcbb16694161536736f783a4ce1a70dff3197d2a2d828f59c96c1db670144ad1df2c880b778742b01570281e7a56798c192e392e467f27ead2d1c393bec4bd0d3ebee1bd8c1aa6ecfa5a538baf426c31a98d03407bff8a3636b611015a13ac40cc91ea327688ca1e68e68a1b7a287a6908a93c1c632b5d050c430e02f0e512b9ab45c7f57207fa6b3338cf90ef2e3720e2e0b655806cc11c52a05b8279dcf29226638078e21e93261316ea1e4cca37360db475c3f3a9454a459f3beeddccb04010834df37ec2b6ab821e43db81cd825ab74d8b821aa10e7748dcbe46dccd847d0a938fba69a849c6ea95d18f127ec9c2a6d2d8e2db3085bb07cdc227f8a87971e59850671174162d932bbe36a82a5be27ded4180271d7c3f2bd188913b4e6d68699300838f870205d9d77acc8e4675921cf893846b51ee8380db16f3a686e438da406c8e531fe1c98483046202b3c13ffdc2a550e03815364e55049386a5006e76e0c0044404a735d7610e739933456b1dc2a473951200843f470122e27c3a76cb5db6600e33b7db21427202d4305deaacba0ac0979089d27a08ff00ddfc337f0f2dde57221ce8939fa7717a6314f14daa1bbdba881a21934ac51118c2ad0c9584890b04f55b269e5ef0485ce03d2d9c017c17b2d6ea115823ac3601357daeae18496b4427fafbf712ecb2af7c24d8a42e410f0482096f2f581a722a97f26e661ad65e70e64e65cb32ef535846f9357a3b6e99d60f62e7f6e595c1b71b7df74446c0fc2109a38f103b80d1d9dd4fef66b6713fd6eabdc8287733215648b10f0b4543129bc9847cf855d13f62f2ff299edc44ba27757b8cc63db5294f51dbf2d4f63eacb2f7b93b944cb8df640e241c434ce519bec710261c229c3db11426844171e60e27c345fc737f5916b3a6c23c137b0e10211c3dad6f69cb21da48097369482ca13b28c6d5a22c75c9d3d646b5c1d6e819b10ee0b39c755f1fdccd04934b7f2adc33774fdecd6c4d2eed83ba34d569cc04ed67ff05797ac3729d65a576dde13173d0c4b97fe27994a1202198e3c31e21ab573f36a2582ec5406ba65138f9a7b7e6cc53d5cf4c43c8aa39ba24fd298fd2f15467e5e84de100ef60984f200a5036494a78f180a88f369768726092f1a28d1a1d7a31432fa20541e9f84a71607397aef75dee5b07e8c9dde54eb0c3257a2c25582b4f1d7d1ab02c139640d56352dde2ad207a114af02ec1e7261ac659a476b679e071d7837ad083133402f518f8f4c0f40c8b74698e6d38dcd3259bbb2c9b19b1beaf39b8afd97642a614f0b1ed73d3b4197dd6e2131cb36c3268a67b54c33f31e9aed564f45893e1ffc6082e04517469c0c815ab85261a3634de46ac2f7cc18c9c91d0c48444538dbb431f0d19abebfafaf6b9a8eeede11fabeeeeeb6b6ae6decd2cc3db0bfadc5ae7c97200464e3b14de6bd632007a3fccba7198b345a959bf7bf7d7ebdefbdad4c76932ff8f4c53679ccaccb88e9ba1627d8f6ef27e9b80be2574dfe1019911aeb6648525f858c855c9e44390ab28ff39dc23b3a501b3dabb9934e4203edd01bd39170de85aef59e340ed15e66902fb27c8a30ea2f8a03c2a7d652251f4ce9a4c0eba6c75ef0ef1ed9b1c10d65a2ea11ec4c76f93b1719f11390ec8b720f74a63601e34a30ac240524077abfd7fcc1c43c821df85fa7b889e3c5adcbf39ad76a529086c2040d218f4fee83fe0fd11b78b07b111a43134b7423261dfcdbc2141f8a1f71a039e1b07df2d8cd2af2f9e6c3ed97a3a4ad953b693cd6ff3f8665a32690a8fbd0b93302de39c9d46e3699a25d94d1c159b6c3f1d73b69d240c93162c8f8a285f46130e65603907f1384a8b68c2d0c69f95d3886dcfc3f134aa6236d95994177196c21ec8d621c1e8898a1b3dd97881a5dc660b360b6f599a956c5144ac9cc605bb8e9388459fc7d1bc6471cac6d96c9ec4613a8ed8a7b89c6255aa1c6c0efb5515925d95619cb2908db3f92dcbaef5942c2ceba6c37fd3b29c3fdfdafaf4e9130fb1d93ccb6fb6124a5c6c1decefec1e9dec82b451677b9f26510143f1f7459c47137675cbc2f93c89c7e15512b124fcc4b29c853779144d589941cb3fe57119a7379bacc8aecb4f611e6139b5b2b63578553be3a295204b5998b2d193ed13b67f327ac27eda3ed93fd9c4727ed93fdd7bfbfe94fdb27d7cbc7d74babf7bc2de1eb39db747aff74ff7df1e9db0b76fd8f6d1afecbff68f5e6fb2282ea751cea2cff31c7a91e52c86615553ca4ea2a8d58ceb8c9a55cca3717c1d8f5912a6378bf0266237d932c223399b47f92c2e608a0b16a6132c27896771199618d6eb1c56b5354ae3d93ccb4bf69485052b8b24beba14ec3acf666cf4047f8e9ebca8138d93b0288ec259545449302485103d1d16761c85e3b24a97c30f3dc96f6c7f9ca527cb9b7761392d84bbd9fa2d4df6b5cafa9f57c9229ae7715afeadd88ac7595ab4cbd98126c03a79bd7ff2ee60fbd7a3edc3ddcb77c7bb6ff6ffbb2984f32dceb7c6d96c0647a317a374942ec31ceb642f47e9d6d3a7ec3fb12f3826d78b14f152d9fa65b19847f906fb0d3665353cfcf232fa5c46e9a45887fc9b4c25c25219ab3343e4bacaca581e958b3c5569d91f5ebe64e92249d80f3fa8200ef47bbb0e8b6e9385f9cd6216a565b1c1be7cc185084b947da51aa0603ecfb3322b6fe711cf239cdb974dcd4dadd0c9183b89a540ae79c12144b596b1f89aad5312d524a8f1761e65d72ae7cb976cf4e42acb92284c474feaa2eb2e41a61714f6954509ac9b6bb6ae17f1072c0216527a3354826a0f9650350b5a7e19b6dabd5965630d25b297ec32e4f54f3d499664b98a86af5ad4b49c25a77199a8dcf54f2dc9e515c541d34ee23b3daa0a820457383ccb2c9e3093bda29939d9ffcbeee5c9e9f6d1ebede3d7ec39bbbcd233a7659496aa6cfcae573aa688b2d398b26aebb85d1d0eee737639d6cb98a832c29bce809c5208444fdae58c9e1473985b286bd219271c7998869af8f3a828d72fc34d9049eb8127483e1c68fa5a0f2afdac064dfdc29ed3f7b249a4da3c7a72b1f1826d6db1f134cb8a887d9ac6e3299bc79fa384dde4f104f8f22c2b4a60f97936cfe3b0242679132f23a22656405da94e4c98ffe73c9ea8b9aba7f14f2fb5793bd83efe79b7359314f27c606eb18d6af5cdc372caa224c255bb092c3dcdca2970e6582d02e092d072f58489b7da064cafa2752ab16285ebad766f62591b2f9aac63627feca5c69dd7154fe4fb3b6f8f362b0e89b48cdf71bd6f6811381d2a0abf6f6c36c5e9b52de3e8d34fd96706eb1964a6d113f6ac33b2cf20b01ffea2c5067173e0e33c0acb6897466d5dd1e7a6466a6151c437e9fa6f5f371b5adc6cd847ddc4e7d530d4c48b54f5bc59e98abb6c6c0e563d7a522c6f8006eba2afe32479ceda8c63f4641296a10183074732f85bc77d8a27e5f439ebb18b690442db40841ac9e7d517d5c04db5d87ff8614543e9da7e13b9ae4abcb14904b44133f5153f614b3b26dafcf02344ffe9434d9fb544a12d18204fce8e717a0af6018aff00b4db255bdc20efd9872aba6ded47d8bc867e91aaf42daa50998ea371960303ab3320a31a60abaf3af2835aa08d00f1a2bdba4e70f38156b5eb3aafda73d1da105b59685fbc7fe3ab32ab282d3f9f85f3f56628269b2cee17353cd7504a8b2a19fb18dd3e67b1c6a327cf99ceb2816e8f1740faa327d1324ab3c964f4a48afe5a2de5af0da5d41339898b7912deaa2d6240988285cdf7c74a806243b3f29209b71347ecf3255333a2fabb4f3bfed775eaf8bb451eed64b3799602efc156459f353991e1a969964d1649c42906a65289ffeb205fde4469948765961bf92225983728e8c9e6937aec2f27d1759c46eff26c1ee5651c15eb6598df44e52643c6a26605d6c63aca4dec25335fb098fd48f13c89d29b72fa82c5cf9eb5a81796641ecf4b143730e9797ca146ba89e311ba9fc603cacb15e15fbeb0eb3029a27ee671965ec7378b2a7b992faa4440aea327cb305944a32770d269726de825c001a89ffb2d3effe5ad91b9adc745cbfe31bad57f6f5402e9576db226d175b848ca66e15f1245d3ceb293a545992fc66596e38897d93be2e7051c52c6efb439c02558a7d8189839adb08605e9c55203a1a056f1f796d46e8a4eaf5a2220db279b4fd4f9e32e4adf5ec1791c87164f1b6b77516a6475e0da0b3a6b68c95eb6b3bde80de050dc6f7a09b81e54131ea8df288b35bd94aa8eb06815785fdefaac85c7b03aed4d1ecea77f4fb6aae3e81646473964d97afa07f6f4f7fc6f948fd2465fb23ede6087f138cfe034cf76b27c9ee578d25da129c947e93fac24e92a48a0d06fd591dcab1fd15ac9c2f25bd422f928857fa77bfb276ce7edeb5db67fc2de1dbf3ddb7fbdfb9abd3d62db47ec296a2d9e2aa5c5631516502ae92c76f74ff7768fd9ee7fbf3bde3dc1c4fb87ef0ef6775f6fb2fda39d83f7aff78f7eae4b3dd83fdc3fdd868250eba1524261f7d577ba7f7ab0bbc9deec9f1e41156fde1eb36df66efbf8747fe7fdc1f6317bf7fef8dddb93dd4d28e770f778676ffbe874fba783fdd35fa1aca3b747c6fed19be3fda39f770f778f4e79352a953a45cdb63ec9ba86e591da1528314c270f2957f251fabb92bf12bbb69eb29b24bb0a13761c5d27d1b8dc64eff26c1617914a80c766524f9c202f6b0962ad081045ae14c3ed6551fb421195ef2aeefaf61af627b5ef5d5e22abbdbc7ccece2f702b60715a9440f5d935dbcef3f01664d896dc7355ef9a135ee7672fd915ed25b8fb0da7aff7e4392cb02b4d7e02067fc5a761f1f6535a6f5ff38d0d36399f5f40d9e7f38b46466b449e4a1d333022c0e03155b38dd50a9f954356676da9802e2f1b550c9eedc6cd3e024280aed59934fb18b41b055fd4c7bcaa268336d3f5ab0df69cad5f5eb6d3ebbb601a7dc2aab12b3555d0614a2787fa805575a94ea26a54bff589a9f394fdd929365168129b0ccaa895588de0c47e64695b7e62acd09392e0541fc25ad35e6ce882304cbc6a65730469d3011f8749b25e6c32a08792e8a168e84151445f782f5f0c510a757b859aae4f333751f9761ed1a60432f5fa241bab0ea81227d998e4ae18b908275f0dfa51a18eec6a119b18fe314e499bb35657f7ba8e5d8335a82586c31c756ea3732cf9dcade23326e62857aa2ce7e60590823af67c6d75771926f1242ca3ba11eb59f54d958c32d0bbdd63dc162edfecef1ebc3e612fd9f9dadf17517ebbb6c9d6327dbc20a07a2b55c00f5c6ec882e1d7384bcbe873b956914b4d2a9728b66f92ee5011c8c7e8b6d0daf30212fdc82ec39a302fbb22fdc7e816d568e79771fb60d8ed018fd349f4f9edf5fac7e87683fdc84c8d48cb699e7dc2c5b89be759be3e7a12274974132635e13c274509e46d31a916e5d50dd757f3419c7ec4525be7ec96babae15a75e295baea3ac5fa2c2a8af026da64499c7e6c8dc9250a3b2f2b7d352e2e5a072a8faeac56bb04323d2889bdc402db5aa0cbae665b85d7adc123227edb68afaeb838852d390dcb38bd59d79aaa4a80100ec7c3a828d52cb31f5f32d1a35b3c2dc0feb9de48bd1ac1a22c1795d10486b93e9955e7ffe853b5fb6a2b49415e6cb23c02e2ab87b0299f178b2b38475d45eb35ada4d1e7f279331ff0737d1296618fe7d52d6ac530063b4b9644fc5398a7eba3279554f04b1ecee751ce265954a0e05a2ce628cccf164919cf930884e44552aa1b9de644a0ae05d57f4ab1dfa9b1191bed4459e9357014a80f7a4135efad951611ccef73355c6dfd446b039b851fa3aa5b2f9b896b1306f4a29a9339fd6d53064c5ad34b6dde687eead5c398cacecb69946ae990236a835fe5e3386714fba217590dd67aa382e1e3b01c4feb7a398e03bf8ad349d396ee38b4fa490b16b39d698dfae68eb65ba017b8aa7684bebdcef2d9fdecbe4e164dea84eca5c65388bb3f6f581caf0351d6ac88a4e1fd7ada26b495b8b58de8e95b112a316e3e7a220cd0f77f58747f18ea49bbbc46ce7b3029502fdd8e0da6c516e09dd91a5d99adb1577d71627556100fd7d606d8ea5096ded49290d9cc6b5186395d9c0fcdb0da8671af6c74f5559e6a9b41d9302a77eac4756d4de83a2c9f7a10b51bc414b3c06854b9d6b4d537dc0015ba497c54fddad868df527e4b191b436708e8d6cd60b79ad0fe0570bf8ab632765823570ffe265b6b066dadd60d374ac4e7b4516d568b2c5944cfb571ae57f4636abaf9f69a6ebeafa632fbafe8f6d195e862e7225aefebd36fa2f2bfa25b5de6d3e7afa5daeb8957fa2cb60b69f1575476ad67ddb5f78c8d9e7c41a9eecf276f8f38ade0f85a2ba6e1717aea156c4adf00e76151804cb9b899eac4a605af67f34d10853f85f9a4dd5a15c85e55dfd6b339308a6687e0d9f57a738e41f69d1d90e4a6494b10b23e0dd349526f201577a1e5aae23a2b96bdc2fd687b9e2549a78ce7559656ddd16c5edeb6541710b0dedfe2b422b52dae370c759e7e87ab1daeae1b2521ad6af88d32a6ae9ec6df9568099d3537aa2a54535f74e451ba09a221dce07934598cf56df9f326bbed1fc2c6593a0ecbf5dbc18616f3246eb35308582fa3a2dc6449745d6e9226546b36a94f9bdbffa6468ae88ea9465c1bfa9602d5430d8a42146140082583782cb29d809aa3edac1d415e95b801e7d676545dd8467790eea182f6c2d58ff85151eaf1afeace54a7063df6cb972ed9b0e74def1e97a373f3d6da821edd913e557f578fb462beb56bf766edf4512755a2639d5615655fc739506b118db374a2491618de261e0c5a4d3c758e86425a872218dee69c3b7af26bb660611e3138c8c6e94dd5c42c65212b9b7271ed6e2a23944f7192b069b88c589ab1e8fa1a4e2c4f36995675fb845b4774d70e0815eddea91158d9bd2ac7ef42ff75bb0667582ba175caac2bfcdccd7b0f35003dfc1bd6c3efddc3c710fee3baaa2f8ba67b43f67b7580360aaa452d49b90e53f643f84bdd8f4745a9d35e5392a636eded232bb790073691c76f23035a57a51f07a6b06a1f6b4bca837de9339af6c942d5a62a22fd55da13c2078b6e06f651a4d855ffad55f963d2c4c4b339597a4493b595b5577210fe7dd189ac04953c9b75a3aa29c5bfddc8e873345e94700e55df7451a54987dab78ee24d655827a6b84234d6b56febdd036523e8d627ac0175c27dfae48d8d15abec6bcb70a453f1a6ae40da6cf4479bbace68b351ac6cf6cedc9b340b94669386765351d2a6366e9bd5283165ec4f36ebffa9ae6ec9643f9b84c594fd382dcb79f17c6b2bc1df7c9ccdb6fed4791bf0e713f6265ba413529f84e98465683e0ec387a6e9595e3405fdade0d7756a55d67194446173f57db87fca545b061ba0e228ef4f98314bd97bc85b8cb33ce27f2b98e03eb728f7f3adad451df7b7026fa9d5e574af2b511ecd6ed97631fd18a561b1c95e67635484ef24d962827ddb4f975151c63761192f23761cc1644679c17e60bb9318baaaecd65f8c74a59ca2bfada74fd97b686f58b09015e175c4f2e83acaa3744c97bc1fa0a570089d7c60319ce12263f7c46151ba8cf32ca5db2a2c9e76e93af58b6ee9688f1fcdc2b48cc76ca9ae94d3c5ec2aca2b13392ae26cf7f864ffed117bc9d66c84ca106bc385c577112b3316a5ea09437e13b110ef51b37919cfe23bba6c6e978ed65597dbc7c7dbbf5e9eecff850cadccba02ba2150ea799486cab0ee6255c6cedbe3ddcbdde3e3b7c797a7bbff7d0a2d7d9f2a3571346130abc6df0ab62822ce4ef35b56514c3a9f153cceb68a28ccc7d3577f7f39cfd2dbeb3849f85aaddb7df3fe68a753f6eee779348682c39a8d7646a4cc18b47362c4696fd2a6b06af0d4dfe9c5def6c9dee5fba3d7bb6ff68f765f4345979744d39790e7b22ee3f272780266e1e778b698b15934cb602ec6682d00d3d2aee870fbbf2f0f770fdfa2e11b0db9a30db95e245ac3a4da7d0f9b27e1389a66c9a44b26ef0eb67776f7de1ebcde3d6eb55dcbd06b7899a10e3e2b22761597b3b0f848969de3244be3f4a633cb076f8f762f5fefeebebb7c73b0fd335ed356b344716f0eb64fab38d9893bf9f5f0a7b7072755b4fdb886e03c615498c7458f7877de1ebedb3edebd44138fed838176a904ef8fde1ebfde3dde7d5d37ef71f5d7fc611695e1242cc376fdbf1c6fbfbbfc69ffe875bfe626eabf767fed0f0a46efbc3f3efef5f2a7b7ef9b02eca1142ace1f8a3bdeff79af1e74e1b69374c6c592c3d1ad32dc4e13b69b0608d969c2f1eef6f1cf75e79c4eed6f0ef66b527184ec1178654706dc294b69c03f5cf2325fc07e187d688ff5ebdd37dbef0f4e2f4f8f81231cec1efd7cba077d32eb4adb29de1eee9f547c9373dea7fc495446e3924db3c6dcb06057b78a07b3ec1acf75059a60a1a155310f53089ec54912d361abcb42de9e5eeebc7d7f046cca379b9641f8c9bbeda3c6bc556f489c4e62e830ae78b4c6c8ae5912deddb2b804e121ea72aa83edbffc7af966ffe074f7b84f781879b8fdae4f7318f3cbdefec16e4d10bd39a937bb6afde571b628d887231c940fab7680fda337fb47fba7bf424bd8166b7a0ebcee64fbcdeee5fed1e9eecfc89a02d3f4441048c7f66c3308442b6d934c702ff0dcc01296edbbd2128e173db3cc86008f70384da8eda15ee8cc59e9db4050c08b7718eb30a57db2cfa6695fac89cd96811db89e0c9c56a329d5fed1ebddff662ffbf90c6d76f6b60fde5c0e94dc0bfad39ffe8497cd6d52098b221be36b954f793807ae34cd26456d2518e7c0bed87512de74260892bf8160f6929d9faf85682fd15adf179bec7ced2a4e275544cdd7ea1852b0f7391b26182ff2a6d0866f3571c720c0b513348c07935d27f1bc4a50330f8c99877919874915a9f3353dbe55459fbb61d23c0af39b2a4dc3c02e2eeac1fe40970dff51666480ff41dd706b64d51edc30bf294ec31be034e7e40d896d57863d178d288334d64b9787b77a9ae2361d77d340d81bc5a2b4b45759967492fe448fecb4447004ea247a1d96919e229bed7eeed6f9faede12edaa3b6abc49bdd4e521411b534c04c3b49061a7f13a59d443f57f6f703a967e1bc93fa309c6bf1c4b33b498867b55225dd013b5a24899682423b69881cb454ea5ebf934c1d00dbe93e7727fc1d846969f2e826fadceddc7174b3fb59ef5f11751b7512e92da24ba26e120cd453ddceae7a247382815aaa5aceed247c5f856b693f45e1c7c3dedcfc42a19d7427bd3efc42a1176b2f9a959487b73f2daeaf7b93b9ddc4b4a93b3c8ba34f7d0ac7609d2a932c2c2dd9254c0aedae424cecda43895dbb9b384e4bbf93723f2dfd8164c2eda713ee40c25e3bf7d381562e066a7e1f0f548d0977927036ef4faa163594add7e4f7f1509b17438d7e1f6badee6d65b3b01c4fd52d1d912f4b50de498aca063e4e2069349b27b0e315d9221f778e5279b40b0510a51f44e1048a79c9b646a3abcbcb391b8d9ebd646b6b2fb66eb4f5a6e5388c27137c4d0119d6ab1c1b6c6d0dbeacca759a8771a22a5abfbc8c46a375fef4d568b4f105ab2d47a38d0dc83f1aa558f78aaeef9d1e1eb0282de3328ef0c93d858ca7611e8ecb282f7a5d2dc6e13c9aec95b304aafe61fdd5f37036ff92945f6eca2f7f5f64e597ffb0828d7667dfa7513bd7f90f3ffe69f464eda2956a2f2cda8513035a6fd5c9690236daf9ba15d4395b1155de154351cff12442abf8959d871efcf8ff8cf5f3d1a8188d4e2e9ebddaf87f7f6acf131c19c352a5bc27e13e1cade75952a77dd94dbca2b173657d800f1bebe3411d8a0f0fbbaddf2f5e47d1fc5d9ecd89d8f897d1e87cfdd5f3f3bf9e8f4617174fbfac9fc3a46cacbf7abefeea0fa391d838ffeb68341a5d7c814fbe01e4253646a38b2dbd07c5bb248cd3aad4bf8e469f9efe514f0031ca5c68ebfcaf1cab7aa66a5e375e8d469367ebaf9e8f461cbe6dbcdaa85b513543f69ab1018110b0feea25e585f246236c7af3ebcb1f37369a01c4167587f10351ca0715795edca665f85923ff8b75a51b8cc6b3d0509a10900bc2043584182c5db9e57173eb3f8a686cccc31212151b9c0a6d4d0155b7330d731c0ee8d05fffc89f3e7bb5be012dfeedeb97de9a6865a909bb097d80aa13c58f60699715cff8348dcba898877d4e769ac733358f05cc52f1ec8fad0641fc4919e6659d68ab13bb9b4e88bc20eb8a46e1b9611295619c008fd514964d4b7ec9c3f90ec55179bfe1e4a6a3d1d668f4948d46e79fd0287442070ffe6c34ba60a3d1d3d1686be3d56894bed21b0685bdc6fa0a55d8ea92d6f9b30d55965ec4c93c894bad8ccd57ec07b6b283593e292a6dce048f77c97c1aa239503cbe87bd6e17e338fe855e0f6f01dd7f364d6334fa2caf47a3cf56085f6d7334faec5cc15717be7af8d5bbbe78b6925b5c85e38f451216d3a8600fb2096272158d0289aec3c7c6abfbd752b584764f8638e9b7afa3aa10436dc846127d4664f271f5c2767889ed16a755f5d8fc3f02e51007f97af114696834e275c0c6d38dd1e8ebca91ab18041d67c9a686ceb8e32ccac7d1a4121b8694b979549d76b7882dae52ff5c851356c437693461d3e8733889c6f12c4cee2f7abff8299cec459f71219e1bcf2ecccfe7a61184c6f5c5b33f6ec52bab8ad330bf7db0684a05459b57e7a6b8b7c86956944c7b1254b0f593f03acce38d7ec17b5951eed0b321601f9594c69fbdd2dea68e4617abc72a1b970f0fcd5b4c84cdcfce4dc3bbb7fd8b548d3d90e54d94af2c1564492c74fdd573f3cbb930828bd168f27463259f3b08cb3865efd3789c4d22964425de01ad479fc7c902b9f22c2ca7d12c44c87d750d99e5456fdca81cda313e8f91214c5cf8f0e1eb357cbda6afd7a3d1c214c83316a6f0ae2f06283b4a8b051a8ccccb058e62964f48d7f80811e8283bc4ae81d8f9c7bf6eaceaf9a212bc345ed792a83bd276b79a5a70236917fbbe863c3b1f8d16d2943efd09503218e864a5495fa8c1af9b51616c746a2cb68b320f93e330bd891017040a5e4c7c1c4af8767d7d3d7ad2ec07c54e36bbca0ec3fc63d1c9635a551ed3725b7922ccb31726d743f9ae23a9f25d4772a02e3a2377734973a2724973a88555f27e839fad68d0b3a10ab5625fc7e9cd555876dbe155bd96de55bb1d07d9a728af92af85c61d24fb3cb9c6e448bd15fd22056b6a89e2302ca76fe7755e4c118ef1cf95a0623ccae6e9d98eb214f6af763ed53edc4aabcd546da7d586aab6d46a53855a5acd79b748c7e502f7adde34d4dd37db935e9c809cd5246790aaa4165dc11f6a4e68aaa9bfc6df297ce4aa4020768ddc17c2f529b5f0cda8aebefa22aa2fb2fa62555fecea8b537d71ab2f5ef5a5aacb0caa2f6155fbb5fae2d0170b2ad57bfa7e3ed7267adbf80bf66cacc67d42133d51133d89f4913d6b66ab5e0eaa6fd791d91ed09ff228fcd8d0b54e23cfba93ff6c68d69eb566e561d6818c3262e869becf37e65981ad06feb490a6082e5aad25be822a8935ac596734cfd89aae86a3ae6969b5ae7693e212d5926aabbd9bf4757c1323d2082e84c9b3b5fe6ad60a6aadef6e51b896b5c4dadaee263d8c8b31a6fceb50bf3b7dab1b39d0824e2d2d3aeb56fa262eef74f66d8dcf2bf67dd530f2f60c1d6693f83aa66eadbf7aae0d2714ff857e63c1cfd8da4687cf68d33bd8cf76f38ea31b9479b1894a16d55b39895cd5cac9f5f5c5c66ff26b9b952cf2fc5d18e7446fdd1deaeafafa42058ef56deba2bf48b519bc6730fff2cb9f5b1c6ea22073ee5b2ca84aeeefae400c35edd4834c21cd2023c974071902eb46d75929e481ac6fe7f88a23efd78cabf619064cbe24c997d9973cfa527c29bf2ca38d8d574365f49ba095f1facbc1c197c32fc7bb5f4ebe9c7e39db6d9711bd9d9787d984b855456ccfd85ab79eb3509f98b3509b966ed23f672810368d81b97a56ff3ed7687353a3bb4d8d882ef8dfb2385d5ffbb2b6410387e5a8663c6b5a0d714f5bd5e7937a4091a1c0a94a14e517994ebe58f9e4cbfaab3f9c0b695d6c606c39dd587ff512be5e7d39df36fe7279b1d129ad1edaa6b493d32ff2e8f517ebf875a7b4d33dadb4d0b8eb947612fd1d8779a81bf5c069e97767d9df626d20cf6beef36dc37612fd5d6f054a4eed621b5ed1622fafd636ab9fab6adcac994aafee15d27738cf8a32cfe6d3fe29466d57952209897893adddac6ddcab283b1f67b3ab185144267138ce633ab2cc406ca4b37d0187fb947f8a3fc6f368128778ac875f5b3b55d6cbd74dd64b94383714ca2b6a0eeea982a04d481efd07aabbbccef24b25d60e2a0f6a19591f223539fa187547479d667a2d84f35d1c1657b7699416fc2ada4ab3322ab6fe162e4382a03214dfec1df9aa43a3d68e6a0b5a7ff5b2b327291ea8c8aea2c7fb5a4c0f793fb38c1e87678b74424aab15ed502a29d596738dffbeeab0f267351fd1586fd3ea73b5f16f563c7c93adfd71ad47d89b2dc6df2fb60e5f556cbd2960035657d2ed47b351ade84b2bd350ab3635a6b6a9b1cbcd5ac8d9ac188fd6a215b3a554148502f14305e5f95d946706423532c80f476b9cc749c4e6599c968d9e8a85c472e64998469a122e5af228daba4ab29b2d690a67cb0cb684dc9a84f947639ce550a2915d57b4b9d5234ebc72e9d067b56dd146d417f75af26967777bb8e3e5342c591aa1bde52ccb239667578ba25437d71dc5ebeae6d69ad5d0b8bb80cde802b7a48bdfe4570cfa726e1ac1057ca538f50543bf9cff957e9a46c02efa8a0f85325319947d5076e11fd47d7ea5758dbb3c59a57ba7106acfd7f0b2726d93add14d337cabee92d5778415419307f8a2df1fd7bfd51531feaeec5337d95a7d29ac7ea85b54f54b2be4309cd39f720a7fc9fc00be290b03f84a330fdf4e228c23650d7e435604df4e6fe751ddd4e666b8fea5dffb56815aabb4fb5bf8a96ef5e1eb2502a82451989fc6b3285b600be2e24d9cc63440f3302fa2fd14c38ba8ac525d0cb0c48f51f78af7fdf141c1a2b00051adcc583c89d232beee5867557976b2455aa20863f4cda5aaacec4365cb731ade7c504a46d4baddce81aea18b1dd2c0986d65b103c4f11ba1a2b6c3cf1bb3820bf528bf1b8966040391eaf27e3806afdd87a35655b6585d60e7fe7f458a55752e5a9556301d9d44ca046a207b65f5b42aaab6f61848a02c9c066234c38fe1d86838a632601a9a2db25b1a8821eba38188daec6820ae36251a88ab8d7e06e2c8d46728a222e081b8c60ee7a28533f3f8c5d098eb5fddb20f977c9c6469d70417c3c2ab246a2f8956b04e09dd88861006625a74d08eef4c763b52a3915eae6830a2bd6607e2ea25db8ed316582fa25e3cbd9815153534d50e6f91543baa4551eda81641b5a31a7aea84ebe4d489aaecc4fa518b958330c064fa09560cd3308b69a7d1576e67ce9a85db8e78ccaa9885f315774565c6aec2221eab6815dc5e1193e86a91e7d1e440e5a9a169b6b6289b21d8c962ae9ee9b1ab241b7fa4c30f9cb83f8fcdb5e76c6dbb3a456390e807c97e90d50fb2fb414e2f28c21ac35690e807c97e90d50fb2fb414e2f68ec41d04e2b15068df5a009b6ebb51e748d419356593e04edb682827e50d80fbaea05455856d40a0afa41613fe8aa17341e43d07e2b68d20f8afa41d7bda008cb8a5b41937e50d40fbaee054d706a8f5aa38a41692b15cef6db5690d50fb2fb414e3fc8ed07f9bda06bac316b0559fd20bb1fe4f483dc7e90df0b9ae0d4be6f0585fda0ab7ed0b817748d652d5a41613fe8aa1f34ee054d706a7f6da5c2a0db56d0752f688cddde6e53268685adb00912cae9b4551c8695adb0095651145558c5c0d82e4200461363bbc5be464fd475f7e889ce63aa60391c6c0f070b0c0ebbc1d670b0331cec62f04e37d81f0ede1e0ede190ef63078dc0d0e86837f1a0e7e3d1cbc8bc1af3bc1c21c0c36df60f0a49b5a0c07d334ec7683ede1607738d81f0ede1e0ea6498bbac1ce70b0371c1c0c07ff341c4c93f67337787730589ac3c172b8109ab49b6ef09bc160298683ade1609a86bd6eb03b1c4c2338ed067bc3c13469fbdde0ede1e09de1e0ddc160cb1c4e4d931677837f1a0e7e3d1cfc6630d812c3c134827fee06d350fdad1b4c03fb5fdd601ac18fdd607f38987a79d00dfe6938f8f570f09bc1605b0ca7a6494bbac13bc3c1bb83c1b6391c2c878389628fbac1ce70b0371cbc3d1c4c93967683dde1607f38f8a7e1601a93b7dde0ddc160c71c4e4d93967583df0c063b6238987a79dc0d768783fde1601aefbc1bec0d0707c3c1340d27dde09de1e0ddc160d71c4e4dd35074835f0f07bf190c76c5703091e66937d81e0e7687838990cb6eb0331cec0d07d3ecbcef066f0f07ef0c07ef0e067be670b01c2e84a678d10dfe6938f8f570f09bc1604f0c075bc3c1340dbf748369603f758369767eed06d378df7683fde1d4d4f9bf74837f1a0e7e3d1c4c9376d70dde190ede1d0cb66876f67b1b0f8d55dcdd791c4affb62bb938943eeb86dbd8d3d193b5b4b61fa91a542da151cb4f97aecdd0ac3ecbacfdcaa8adbc9896b3842cce35c5c5da0f700ef8219ccd5fd4c7831f3128299b903f61c88d16327a82417f5f644de0e8c91ab6f687ffb08217f7b4b8fd12aacc561ae9438b2bf3d4569bb1b95053dd1e6cee73687b1d7243217f6a42a8b5cfb1f5752036f639357eb8cdd4007da0afb39cc5e93859208acba38d6d29b23f07a3d16884cd82bfedc1c43ff5a08fd2ee693e5feb6d0168c5886b18be75a3823a2ae84cd14f8b38298d3855cfccf557f59fe2729a2d4a16b2493487e3613abe6559ca3ee4595676b4c6d77914bd0bf322c2cb3174cd56fd504d614d9afdb44eb19f9675535ed3952424ab519fd9077264f281ae5c8fb249c4ff56f4ebfe99dc9dd490c9cafdc9cb976c8d34aae8e34085d6df385dbb214699fa5ac73dd0ac224aae07c6e0244aae9b5614f8abdd060c537f87eb87981eda41a841149519b9e5a3de50d99d3bd92c4300b26664be7c69daf7e54bfd587b7d4dc3555bdb58df78a0dbcaabda40cf776b7f6baaf3b503b676ffabe01f7e607f50df799a4da2d3db79a4c53fd00e72f236d08c438c507ddf6dea528d9aa9e8769b54283449798fd35b4441dd06c10cccb3f9220973b6831e83ff7cd22090572de4c3034691cd90692dffe107ed57e3c5ee65ab470f8cce3ccfc651513cb468de5132f6b2d31ed504a21cae0aebdfc78f31f3755894515e55c2a65132efb17418cdf7659c0c7b1f2ef3db0619706b0b2a601f16659c709834e845d6942fcc67bc4a5b5de1de3b82cafbdf70e8fa1ad4b3b64135693e652a64f16208f7b14a4c815f518d16dd84e3db7ae4119f3f4e6faaf2db7df8910993376e671b304a6d4e5473dfb5cb5b115c55532397a3cf00b61e6db0df08cbba5ed89d891a80bbd0276dbfd09ee4b397cd44fef043fd9dc77aa29adb53f6d7f44e6c453e88ed64380ce7abd31f86f34e723291589d83e23b994ea272758e93a8ec243fadaf6157e76ad2a871367eb7ffaa85d4980e6e578b2e4cd43bbf256e0a1f2aaefe1fe87ee8c3a672ce5fbb434997d9c7a8601f20a47a935b3b9ffb00893fb08ad2b26b0ad9ce6f3ed0ebd669d4b832c2e830bf293e28333f55da7fcef378199651fd33ccc319fbad6ad8576c0c3b9d463a5ab86a18ef647afa95a906608681f6613fbad97016be225e0be66bda5cd7a47262dfebecb9726a0bf5560e6ea1cf0a17a65bdf56c7370e797c829f9b55b3d1f553c3418a4f31ae4a085490e0ba8b82b08898f9bcc76ca0c4c68bce765ebb4ba833894764a2a69c9b17bddcf25b72ab2fa25f8cf55dc5a82ff26215dc2b96d138d36a06b542ab6daf0bf4ce1726f15d34a9e11661e2aec222dabeb9c9a39bb0cc72e2c6ca20e831e4ab488a6c182e1455013f008a22f82e962da3bc4b8a0dd9177877dc23fc222ad987703c5ecc1609b54cbd8d5c595085168645d53f4022acd051d9c7e8b6570049975f9956179590c6651c262c5483134d2a79b2b72c9a36d4ee9ff596ebcba2bd3060a49ac15fc7df9b6a4436eb3e6cea6d6b79942208af97cc6810b65805f1f5524d44e305cf64cf15d09772db5551d4a7699c446cfdd9332aef47d65b82e8ba1cc10855b1e798b4f104476d5ed71aba49199a6e28d73e9b54c02ab2d64af83642bee4d759be1b8ea73a0dd727b5ca6bd37596ab926a0a29a6595e4ec374f2afa2f816a176b6a00903d18352c459daa735557d4368f0fb01128351a988abaafcdf434788ca5ed1834e489bd4868a3848aa0f93226a49995779147e7cc8fb6058cb1adf4e3b88a0f6ff11d01001e1d0dc4b45df4d30146a18f7130aa5bad854f5fcdb48255a46f9edff781a99e79182d5fc1e22b922203d8d4cca7c117d80690993844564d055a0eb1c3aefd7d58da7d1f8e3a62a91bc127cc0e97988c660582bfaaa8bfbf7b1a93fd46db88f510d1d82750ff4ab7da456667edfc2a4d0c1e9ff71d2ebf02720ae34fac4a8ef95b5fafda4f4861cc1fe136969539ff4625f9565b683e16cf4929d5ffc3e72964e9b0d695632d63d3409ed38af5af9ecd9057bc91aa7b4f75028e5fc561ac56b8049a59b7a904ac969f82de144a94941e93fccc75354d2fde3449b4225e5d0193acc6fa21253d3a06b3567f93771c50f54d60716170cdd076c7e03ebdb576356516cdb43e6b76eadda14fee10f2ae30f3f3038e8ed2b5fbb7a3d9bccdc607faa9e8f7466fab4ad252958127f8c94ccb05fcfb472dd8f2fa5e212d59ff3b240dffc3318edb21ecc7fe32cf6d854d338ccabfdd43995daeafef5c4f04b5c4e3b13d534f1dfb72d366da8788fcea706f7c3966fdb15cca6d933bf81d7ccc2f9436ca6de062b7ef3bf5956aff6c21961c63d62273c0ce7ffc483dfd076874d5612fdc637d096daa7888cd84bf69853e20a15c23d1bd77c1ea5131ac85a86055a22ddd2075415b70e448f220f1aa71671ccb2497c7dbb4201abde1cd51c0bf5af21b6edf739afbd5b146dde517cc3ac2b3d5b6f8ab3ebeb02af07be937bd044aa529eb17aa6a9beb642e97739a89187c8fff1e2f2f7708866f73bd71466172dc5258e6b3747bd6b9d43b26dc87bc14e4808638b02e430581ce8fcad5a22ea4603c88e854575b22b5756b5eabaa06e29cc94966305111f9383cf0efb6a29433759dd8b7fc68e884a88aa0290a1fa34ad298d2b895d2d811e293f6285b44a6b38a0dee16f6787ff80469556d0ff5da5d83f7b1925e1ff905534a8bc7bd452fa57ad1ac350fabd15cb664047f8f8e5b24275f8fb2f98229b3db8e1fcdb45d27f9e6a30bdada97d8e5097bf936ef0249b45ff835483dfad19fc874e423f47a5e6e98efcf66c9fececefb30f6448f9389995d27ead2c338104d4d7ee11bb9e727a94dd664315ee507cd76340e8c9a218c7f10934f4256a1e6a9ff56b34a2ff3ff6deb5ad8d244918fd2bc93b7b40b485809ed9d95ddc6a0eb6719b19df1e83a76796e1458994926a90aad495252e3df4f9ede7c988c86b65954a42b8ddbbe30f465595d7c8c8c8c8b896823ebdccd21b9117b23c2b608e53efb6b3ea0c216a1cf4d3e8ae456563572d1743d554cf32bcf8604761b2547c8b39455b5b5b51153d44f98e4d3f491d00a87557c530dacc32d0f0c150b9d6113060487145e07c3c8b6c561d435cd6030222e6b49c98e3908ff4fc222e8212804136dd2be6f1cc8626ff130aa52e3b434cd2844639f4fc96cb42bdd354a78e203ba458e7aba64f12482aebf5b3c944c05cb591101ef63dc1fbe3d78e0d4c031afea02d0f6ca32488328fd572af4752f3522b7afc650324e748f1e6bf905101c997e57e72c0db6b71af8561362965253ea9757f8d8bdab25d3b6740db0cdc3b0d1c09003325bc16acb12549b16060b64425c5af281e91b9b3ae2af5bc7408c4d54341def36a1946cd7e209407296f6913d05bc27fcd7bd4ef82470a419e1477f5a134ccb3292a60906bafd420449877f5155863cbbc537fe9082d8431ed6e914116ed6627a3c9ab8779f78afe5873ea1af377f617a33c4ca9c4f3b4ed74f1e7272fb77899612f8b7134a764e1f68cb54c53ec90edb303b6b35f92ddb945a08d9d1d76c09e8a5382028b58a52a9d45dd06495005623602eb1940f4d895225912d9d42742fe6f48fcd7545fb1029a3f3176c69548667ce1914feacc2e09fad8213001fd62613307f1bd004390eff97bb7f012ba2b670a6bd75c7d5568b06e85d793625344dbe550ba058a2f0b1437d76878ff7bb4becb2761a8a4fdb2b44ba17d2fcac2eaacbdc05236235d711404dab79cb613ea82b2b3a7c6d750d969f671cb57777b6463a3eb1a2b2c05aca9e0a96182d4c38bfb28e8febe16c1656ce73fbd7e30b625d5546b81fe4ef0746d767cce8a51b543e8e4743e2df7b1abcb1cb0f747ef975f529d3d2abe050642cc28afd432f7e26b81eba6fe12213359aa8a8c8d4423836fad9a45d72f27757aed5218a9c8b5b80f3780bda1e0a6f674a55022d32e927a7dcc8d8a1dd0c7f36b716f24aaab03dce5971e01727de1a581abbee96791b19fe622bf7f7a507f1886f02cc1db5d8c2f086cadae2492e5ea5eda21f4a9c19585174f2fb6f8023a9b2a8f8d7a8d8d554d54a93db33c54dc505b3e08b9acd1de7c09014b734d90423a52a7ba4290458aa08874a5993025d16c5b449c12686dcc6a1cba5a23b2e836a6700715ea9dcafe9ec7c52a0b543bf51b546679014c046caeb91452ad97620f45dec3c8e18a20a8b5d1e21545284d8e33a3fd4b072c17b309ef0bc9fab99a59c235ebe626b3ef67792ee42c03b73e6ad2f3825a953551e35a744f88f864d1fcecac1e6dad02ac028055730bbaf3c5320d5a597ca5c6d432751b3818788a41a385a4e78e6b20dbd8166501f6cca786b6cbf9f47f09372ae7d3fac58ff18925496e447c55a3e85bcdbdad3fcf73ccf81a353ddb0e4cb07571754331ac405c0aac7fb825d9a1e9f0401778a65fad6e995d8f8245321532cec945108e9acc7236e577844804e82504641a299049d0d7d42183b1b87ec77a0425afe5a7b3a5341a3504a8acc5d43335e056ba8c2165601499d6d843a64d4c21132beb5a2352641f79924b439be8f924d5075d3f17c0446a15a4c68ba1ba32ede03d7da6aa0022f5f01cebf987970ecc12240f572350af1afaca2f717ff0e921f401e58301e0054f5b61468dfe75a72ee20413afc71b8427dd3ada3896f0f2618c75e16b7bd165e41cd44fceade3c2e77796428079caf38a2bb52c3250184f45c107bce0eb8868d0e73327f04014e4d577be3e5a3e37baf17d56f382b003d5573d5ff4e415a06fabdfe7b44d31ed2b7c8c6d2b6acd5023b3850cb2127e36d8527673fe263796814130f5da85fe0b1459eb068b5ce8a33beb251c8460fbc47a7dde1f0b8a5380b4f05adcf798b84b644391acb95aab96f0560dbfaa56a1468625d222bf5f4da0cb53aa1dcea1a16417c6fc86cb16fc005d79b81cf0a533e612c01f832cc452c25c1c459e58d6593d9c163c2f7a1ac74a7a08bcc57b89d1a851d4f348966605992724295afa981ccd94486d196e5b16396576738d6ca8a11a1d1055ef8fbdeaa5a1a8168649cc3560a1460621314fb566c61b5af5fa8d792e01c6a878b3f36b3b835dc2fcce36d090350ffdd56caf6da731a38a2107360ce9e4e19955c52c815ec7e9a01ab94032f42fdc2240ac845ac75aa3bb04622d44216d92f0e49863cc30ed5da607b29c71361988bcc7b23e5ee3fa02f2ceafc79fa85a8decf48d07b1f3bcc09f35b6c66ef57e36378ae0c85aaaaf6fa0a4f15c756a2f6594626e4a7b0d634304e29b6e37dab5faf7ec99670db6c2a5daa11598f0a6e71892c6f2dc285a12668fa0b61664d7698224fad09fd8c0497a13d22b10d5a98196975c5776975c67f1a1ea31735e2c82697e028bde0fc3569006289acf15e187a1633df8d5c5eb5d061cfdb10f0b4beb4cc8da66e0c0b24e03beddaf02071679534c272fc73c021027b4700d30740ebfde6383ea7e8d60326402cb61c635052d459243761023fdb2677e44e0f3fe388f9a041b128cac362f884b75ee4e4bb1db945aeca2c9c5e7316ae3407fe3df712ae9ec481470c331179c083fbd9476b2f20e634ccefb595af024952629d8329c4badf97da5dd79dd7d84ba5fd69d7e6c92af5658a3bbf9593b8590852eb72c9838d8c8eb8cf40385105f09e4605c2bc3edc72c1f34809d2ab6187edac18324bd59bebc6787deb0ba0527d45f96afd1bbc303876e5fbb78e8678fc119f082378bfeb2d152658d5837cb3ba9b82b5adbdb9d41968a9218b8339bcb3154e9f802a9c6ec8b053cc44b005d90ac10613603ff94cfe80c992d0bf4a692d3299f69784ff96c6951fb94cf3a32f9d9404b3d5388b756ccf4bf2c7dd75ebc6a0d41da0a852f2af4ca35d0d7623e06725647140af7452fee2cea7ec10b8804a43676a518ac43f87a9bf359b57ec506ca74a3c3dad7cb486a178a68b31b911fe5231d1756f7512dabe5f9a842526b2a43995a91ed27ad77e79349706f330121eca50d170402134138e1897bcba016519b8f9377bdb450850f48f4687d7d3c9ac4e2cb1f591934da99605265c4af4e3bfe14ca0b499d34bc0936d7dffeca31b6acddba0b8c8707c7a0fde3dba397c76f3ebc7d75fcc9bb72baad32afd8f370f04160ae46a6c34d48bd148577bc6abfc125cc4734b597145c49fd5d92da2f10de4b5118bf49512c4de4a5283c22af9e2b887c2d7df78c3d9a13f612ac0d7c573e581f0bea46472b401d7592bf26d4cfe9f45df15cad8f41a77d7c40d33613b93a1c24399e30f1d39c4f92422bb2d16a2891590a0a69c4d9364b3aa2c37add6ef7e94477bf6147a0863e3c5fd859c327bcda7760cd3e1a759837d18e96ffc2bea7c7beb716d82b62e033b65fa147785ac45a46b9a035358a2b5d4f9c873a61c292a11ebc154947a7c9cf55b2968830e690cdf18d57edc0c68e68264ef89ac3444460541f29a20e4c61cd8368e889051a8c791a91c1d765a05b0694b5c265dd7333f1b22e5d2160fe3b49e275b17a59bc499a174ae3cb31558ce0ee2b0aaae2e0506cc794cc65c1e654cb35cd9114d3aed962aef8cea16b81f66c85ab4819a25fff4eadd870b5b14c689635914c74849732407e43215ee656e4db30c88b23248e00e729b341a1ec8d71906dccf24416492a586f920db81cf79c391907a05e3f4b0b7157f4fc5c2f1a84b2e045d2d74f53a176f08721bb34df93b42fd87e67bfb3a75ff5792146597ecf3e17c9a4e2da774ebd76f32c232d14bd5922e50cceb234395355dcf1e96c22bc095d76a6c95d92b6fec9b68659b675c02e3bfd2c95054f8b16bcd93637325d05b4f9d007ebb2cb4e3e4f4fd29738d8962e4a056ce3573cdf3ad06f6d0fea75b987cb4e224d12c6cbce30cb4cbbbbbbacfb3d44d18a97bde2795016541d5ef3340aa71ebd2977e454aeae56eed38ecfbe36a828e73331d899cf586f208622577bdfa42174400c1fcb10fe27db52d7f7642ab279b175a02edf27d3a91824aaf15fb63b50ed79e49c745b71730d7aad13d299fddc37e5cd2fa360843c9a0a610662c8e79342b6d41b4adbd9da6eeb2a6d76d99925fd6bf86cde7e041b4d7dd9f7b2ad027ae4f37e91c552f0e9834e279da3f63af0ecdc2629bb9efeeca5d363ec38cfc1fb4c7f8667e7bb5e63a7887ee5947ac7e1beaa4ba847e7ab4e606abee30ba784c9d0a74b0429f91843adb953025f3825ceee67229c8d79e7801738c06196b3abcaacb621883192709e159996fd7466eaa9b89fb9b054a8a44b6920450b2229d345111ab6603856b061810c9ed98dc873c1fb63058a7e968b9d7f4826c7c9b43462f5f14ff215aad7081ae75b979754e9528e792e0697975b1791de7221b3c98d208b186b6b91cdf33eb0867acf94ba551fce32b35606209d825e467a03ab5ce3f3a71626bb4db54540525e8c31971f6e53cdd6b2ae0bcd8eff31d2db48a4e8fd354f939fe6829dbc2a75900c5e66f314cd7bf6aa1743875c9b72f9d35ce41c2cd1b964986a316c74cae5f569deffb3b88fe737251e3e19b02edb3dffbf9d8b67ffb6db1177a2df72967273d359d8ceb5b89791579d93e3cb8f9f3e9c7d501cc696c9f7697812d5c721db42fbbf96ccfbdb97fb9d2df60c3e1cb0ad2dcde0b61ca2446d4471c47c3befe9653ee3a3de456b5c14b383dd5dd19ff21d521ba959f34927cb47f8fadb3f7ebbfb1f9dbddddf49d1dfc9828dd0293262ab4c17462ed4d1af0c6da784a4007ddc520e26ba3852838b49aace1a607f3e18e71d4384c335c5465f1659ee61bcee16d31a623bdbf16d5664396eb32c4f4649ca27ac77d973923827a9baa8a6d9cb2c1d4e92be9b509b863019bc420604ce9ccb6a74051b08a274491596e61087045285768928b7b6feaf428ef2c4fcadb6dd21e5572b175851dd41db68cff46f9b5bf6fbae5ff1c188cab73bdf1cb60ebb7f877faded07a0059d67f6ddc5f6eea8cdb6fe6dbff3cde1d6367bc6b6fe6d2b7a70a214af9a9e9b54b57e4ae343736e5081036b3ce41e456882e31c45f0c229f139498bff0ccf65fbd229c92793acff39957ca8204edd1ed28f8efb353e969140a456db45a1396992e94871bf7e18b6e9a4d92e9d44c49299a3081d729c62da3eeb441ea7f3a9c82183b4bfab62459c16e46c92f48d9e11abe03baf502ef840d53430a61f87f4a393c89759dae7c5a9295a0119793f3dd1e6309166f4a7caca67969445ea3b84ce6de2b98b65f8ce39a8a264df4b6c6d4f51d6556b8b7b9196b3cdb6fc261dda8ecc47eb9fbfb4d9d6569bfdf397ed48b4c579dab7e2d852fae780e2b37759ff5a0c0c97e4a57e2626a3b87b39113c2726dcc1f5befb7aa34bd4c97b0b0757b9b4b308fde2ee7d76cbbac8c16e6ec2df4e9addda16cd1be7abdfc2a9b92338c3b31707db94f3ce199a7d6b2063c94c896f048a558c33296cc664c9a7023cc1146f90156391db9b29b110217942dafc52402e74c54b77fa2271e90b16783dc900b7a1c4503d948afc200aedf46036f748140ef9d52e0161cd13698864489512594b1e75fdd7499a78378f845e95cafe294b529f32fc234bd252b13f2b7ea744e314cb13a36c58e71dbfd3109af2bbf267e8183f477ab4e81720167efec873294e5217b366f4aa54f6134f07d9547796c353b990b811b90ca8648e2f1be11f5852f15cb01b9127c30419802b5171da2b96f12f89b8f5688db9ac6ee9cf5bdbde4d6f5651fc1d9f79253fe6d93481c9c44ad357af06a65c8f953e158557f247c1afab47425fb7cae8600eba086dc5436f2bc6a9219f662df2b40f70c8e38b82e3a8f4f836374114458fad58db932cbb9ecfd83c9d26292e99e907fc47cb2c1a9fbc07c7d22efbe72f35d7133e93904059b6c130eb56f06bf52e6c6f40abecb1b145760a97bd96c6011794533e8b177ec767db3ed3a096385e96d6df2d2f45112f7b2abc9d7d8bd08c972550c720ad553c8ec3d72c4fa68942030930c2db46094458415fd74356c05c57aa7989ab6c0276eb1f86acebb576e83ea155eb87616d3bce9da6ba21cd9d04ac090264dd4266ff7e688d3ccd294716f96803709bf3993481128b8c891498b864aa98c1445fab4d7bfd314f5226c54f73e2e4dfd1b51b489d3ac320944bea181f52c20937089239dfd048d1c82f589fa78a3e422f802523a18ee8a09b5c1479226e406899a4a309d909d85ba9badfdf9bee2d5ad14de436994c189f17d9941789ba3cdd33910eb44ba4333f6f943a5302a80015dc6626ba15fba046799b48d176bc3fa67359a8d998d2a639e0467a97bf43b09bbbb3f97e7c47d00fc0adc3a7955a0e5a6cc3fcafecf87155073ab8da65071a8ef47c36164cdc89fe5c870bd04ba1c52b896413fef37d5b7b95b659526c49940ae7aa87546b1354736644aa9ec6a9c9bd5a2171679ed412682b6277306ff9cff74ca806307a81ba7fdd4a26d509cc276648ea44a0d0101023a63f2fd8107c934c93ecd4ffa086c35396cd8a649afcccb511f254e4232743bf1a977cce8ab12a7d9325147986814fadc03809042690a768713765585148a3107aa4ca4d143e0ee67de11b5198064da706fab2c34e69bba0fed7470606d63a43f485d7f336cde969a2198b1426d4309fcd26c48818b59e1aa8ee5f52a86196a5937bbba3526b75dd0124198b39a8adfad0ffed18f6a9da90d4158e2e2126bc727c92c9b9716bea8f793a12653c78a9260e2a6ba9575a8013737f2e8b6c0a77a281540cfd2443a11f888c0cee19318b697190e4a24f8898a4e68952c41a076968b83c9e9394f1c120d158434a2742c736c33d994b36e63782f58e6c6cb5de29a955f54d23baffa8bea9a9f19ce7e2c0eeac3edcbb7b6dd653dcb9fa3bcb66f0672ec7eaaf1c2743f82eb31cffc2fdbe87fc476f9e6281fa2104030ec64032249a1c2411a96f6fea92f18a4d1bf481730463b43efc1ce4384ff55707a184871fc7c9444daf47d9a8e1573ae8d9c3a6a7530ea86f63c107ea2f8549543f27f469caa1875c80cc117e01d30f504420da360b9e40e5825f0bfdd78ccb3c98c1a937fa01c056a02e3f0e38d8f3702287200ca034a419f3fc1efe48998c52fbebc4fbfd63528cedb3792adc695d896196c388af0088f8f76832d13f217709ebf5b92c7002ea018e15f8314fafdde6fad9749a844b6971b89fa5608b48bf410d8bbfe769f102db0656c66b739ee36c07e22a9ba780db3dadf5737fbf126246cf08a58198f07bb7a94132a45b1b7c364fd8b57dd6b08a20a1d3987e6916dd434f01aed7f6976e7398207035fa3a683be1c53bc449faa967641e67d4c6841785489d9f58d26f0b5e9b1a09b594ddeabf067d877936c5205c6df40482e3c86b4ebf440c1be5d97c864073f6159c8e743284cf2fbc7570bf68b824704fb0bf74f337d9b520a898106d6d70b8f5dbbc16f7923ed028697f4ff9eccff46dca6718ac071f8afed8fba9c5336eb35331cd929fa14be01bcc0f3d6edca9f6d78721fc4eee708ba46214e0735a8c8ff291fa96d15e517f71ba19a12644b7a4573788cc2481f19645bd3bbe11b929789a4da1fe8ce77a55e8a7596c78d64b344bfadefe55cfd8ed6c427bd304bd767ee31c6773c464f5f7c8fbe9af0cbdd40083c7c23dc372c510981f66a4b9e008274da1dd23699add6015214bb41b0c4d4e69d5a428e88f1e801ccf87c389b72644ee9d5334d31868ced31e0aca91ba571e06ee89517728f40ac4ce629c674541afc6f91cfed259e13696990d6a03e4d103ceaac83e4e789292064dbdd05e69ea0183ac390dce534201f88153859f1a4af334f949ff359f7fb25f01ae6e7b861399a73f23b1811fa6c66c001b41ffd2ef294c99d3948954d6663d8a0a073f7384d85d96d31f1cd65d96ebb6a05fdbd0cfc9cc82c33c10518553598faf393bc373c1bef926cd8a6fbe718eedab7b46a75078620f0678e816623ac3b38e4fc5e4254754edf3595280253f3c0944abfe844f67f8234bfdb350bdd0a78279d0d38717e681cedab38ccece79ee9d36345efa9cdc24033cb6787facff9a9d28d281d4ed0ac00a32e275dac337a88584129a2e0d89b1b0a9a1e881580bcbad953938afbc49a5a61e73dcf62081871fe802e4fc2c6dc861962352c10f7bfa65f987dbd4fe321f46483946f43f8067cc3d541d73c253c3660ec08c99ce2ecca48fbfd129037e7ed2f40e4f37ef6494473a3621149086e9a29fa805705ebc4d9006398f1ae9dd665fa0973e96741b7945bb3291c7e8804a0fd319cd421eab5b9edf1abc3227b7046b1ffc89da06fa4d5c033e9da48518e95edf82fb8cdfa83ee5e53b751c3b3f6d4798df037e14c90d75f31e774d22dfc381e436f91e6ee0f8d59202fddb822e209d89d478ec3676ca87c29bc4a9a0d2747f82df9f4d5a39783cbb9f8941899c279244a658483d5063fa9a772daef8952613fac6e2baf738ad4db25b919bb2eae1b5de1f13fa1ff9167e477f90724e0921283b89cbf5e020a6099d0cd3f9a4486613f8ed1846c013b2c829f295299df1dcbb90cdf8e01889c08c0f307a1e7222a0b6e9d95b2daa68e017662330bf4abb391733c1e9e897739c679ecdb11bd7acb06758829e775f06a2ebb00029bf161a8892f82809420843859c47620ee08543a99cf6fc4f545ecddd74a21e0c5d95c5fcca6c76f5f01aa264b82d16f32b8ba3eac9e29d7a3acbe7d8eefcaac8e9ee25e753fae32fb089fda3180508cb0c2c84ddbd45e6a07a91fde9f4c37bfc55deb945f656e11c7eb63baec8820da305e4f8fbb33a5be1679e4cbde628041e7d32e852e473758f4416427b91105b3217275061ae1a45f83aac897a697684969dc2f90f76e7e5d3ffff05d5f1a57d76ec919c97dab4fa54fc64dfd63ab829968225a92ba84fe01adcb702b105214a3d2b6bcda2441a71edadddb95977a09fe63c172d27f2f337d66c2165dfb0f4b979ff4ba9991b9e332d96eeb2cbd6f97e9b7ddb66bfbf303610b6eceeaeb5124f4b62752b2fc7d79479a475d9e183816d8d8c9bff58db3aab681a144a305fc9baa6a3299fb5f06d64d0971d3a51a9882c0dc59a67d7d6430d536bbb54dfd8693347f565960797b8e4c80cd9cd9df34b17d8dc641bba63e7158511d0f8910d41dcfe23a28d9f3dcc061d704bc3287479b7b89f29cb317cf9c5c631c0467dd333b4632347c9adcb4b5a8ccbcbaded78fb84e32f1573eb074566d6c3d1eb56e3b0b8f5c7df0a23d8b0408f561f50994453d148d52863d36932545bd69656474ac6fa03cfa7c2a33aae774dcc4f03949e4190b0241d8b3c291cd7d766242418446064a48060d4f6510b2a1b47852cee9d109691e02930f412ba6d684ca6ef7104300af72876b9c674f1fa6e09eaa8aac1d018967511e84e79cfcdcd42b2e5b61969265409b3a8131b337163aa4c81bd883ab760f564bb09744746451145924abc7370c18b738d7b09565a51b0f7196982d577f23207fd5ecdbe729d2bd4b641e55a3a2a9f685e26c146bba4fac4ed94cada14bc00b2a3c9e4821de3555e6b2cb53e29d485d74129426dda4cf7e09a1f8e13d971485f1004c414e028748502e717e1576818be6d6ce84ec23270ef84327be12714b3c0b7103923a4f1859170a0f25b33906c2026c9348188917372f3255519cf05e63c45e3bc24358d89e995180cc4807d9a5fddb3d6f1a717db8c4b762b2613f5f7f8f4dbbdfd7fb75d180b9197a03af4ccdf87d96492dd82ff9c292e0a85534077e752303e212bf81b77b411cc72dceb58c4c10edec13ed35435820be495a50773aac7d2b5ab6fc1eadaf69305516fc00b5e0ebd8f16656fcedebddd21bfe48e6dc369cd1973690c6e319c06de727fb11f76f5cf2dec65eb80e502c361b62d9dac9d007896e27049a9fff463a57e70b4f4d074bcd5004f52f7887ca2b1832a64964df4f04fecf3c219589705701ae285cee2a535db664b8099e41a26429ebeb189dcf03c510474eb806d6d2d1c7a3205d6495792e8825c505a60f07cd2a359c7b8fdfdea2f008c446e1db8bc833b680631571c58e3382b3c5dc3912e1a6b87faf72be0a88d93adfb71d73e6c5d1aaf56870b863fcfd5097d9cca79eeb0018a206bde1ebdadedb1deeb0414cc655e6cb192c35c58bae31ef15dfa4c65bde3b1d4013168b1beb6eb1b08faf44a7d710bbc09fff93ee0621658e14d7c03a8262c4f541ed19c0f2adf369d5b61e9cab91e6e6590e4f0653ffc808a706a18eed42526465b2d55345df06b01de83f0fdddd15f2f8f3e7d3afadbe5dbe3f73f9cbd29f13d89b80d5a8af03b764141ab62b30e9456b7c97a813c091a8a70170eec1b5ee0a0a501eb39357b35373a2b53e03fdfe33d3a7081f42e342e2e846bef3a364278587fd9fbd9ec1e6510214e442a6a8c7011a45cca438f12ca94cbfbc8521a90f33932241f93cae855ae61b1a9d4157d2af98286114d42d42387040a8e0f566b248400ec0b72cc35403cd28daf05f51482507b2b22204daf1508b54a4bbb1d7a68d522e97629b4a583613bfbb1af3e66e50e41fb056380c59229c230fbb887aabbfcc6ebb32c18598402c77720c197313b64b8c54384169718354606df88ba292a7c1346478a0b5aabd61c03c8074487d2bb97ce172d3075ccf099da0701a9f03e83e8937599168142dbdb4111d021b12eb4f59d17c91562a6bed51100b1b1432f12203b082adc181f9ebf24e2b6b5d7b64db483a3c61f07a87dd4199a88db0e3c789f453ad01f453af03e991085aacc0e2bd7d511e6f4540fa1e40175e9c73b648e31703772d2968a5af0e842e540b995a172193354546d60ed0746e955da11521b263c45e9367b78601b7a7a9b9beeb2759de44d4e67dd72a846b30d15af49388f184a61fcaa0f2f672b7b24e9dc0ddf9bcd0b911f841964d4b80c74beb343f4a5a21817107034103a2ab09fc402a46281da80c26e004bd3cc77ceb2069253eda3e4aef6b9a97911746e51496d2e5ef08ec9ec1d16247e1f0a05f139f09fbafecd0b502a99bca3466cefa1a43a33a0b52e7b7bf4df7fbb7c77f4f1f2f5dba31f82a958d8e8a69fbb9f89d40386e902a5164a7dbd3e797b76fc29de1dc6ad49d2b9404478ee7f2e9f2df8ef2a17fc3a5ec31baf7df024d7d170ce3e9bbee81872ae8cfec18e6e14fae618bd38d2fdccd65ae97a17ab1e5eee6c992f7eb51b73395e82e9afbba4510cb47391167922e485cee5e2e5b3856ca5fdb1a8b9b7bde172dca24682e3351a4cd93b44a0961353698f1de8b77e8e73a6d91ec1f396bb111787c5a5844590cfd1f46909942e04ed4b51c05ceecff72eda58e77cff623b12cd345ca34f600f8a51f52d14f50c8161526c8b5ac025ae6b82e71146e98d15b744f91dd5c94b8454e90eade81eb09b9e67eca1f7d852abb1cd0e5cbd178227f9593882fc1a30603a2274f8912ed7b834100662228a18bbe842a1a4a8848d72467d85090458b36c46467281b6be31dd664de6199b82f4964b6a229a7fa666115fc1dc8304addea90fcba2b388aaf31dc1e5afb69bc5d55dc91d9399fd90ed2bf672d97ba2091e0a500ed2be365ee191289a2e6f93d53289a76aef0fb8348bef0e6a663f8822b206c49d78900e38467753555f2655557f8982058078cb6f8e4edf5c7e7effeaf8f5c9fbe3574182ab7282bf602563161090b10773bf1cda41449c8763c22927ed6f6cf1bd9cbf0d7060cce51a702096f2b7f1865d2ae96f0db6bcd1bbb109b6788b149064bb241bddaeb7dcf5ab59bd6aa7de7ec53916991608375e2cb9de0d2bbd0dbb203c7b746fc7c44430c592555ad5a29de2166f97c29a2f5c3b4b4e9f85e418f9192b85b10b1a1cbf9b9b4e4e15bbd087e1a63f08f869e32a9e4897853e1a0c5ca7e5de9b80497e13e84b14abc0ba966d781e2b76be8547cbd60515c5c3295ab63382901e443be345c65c5291375cc68b48d3caa928be34af9db249220b4a3ffe75b1dc6f1359bc5465fec57737e5bbed5a3e9afb36d0afa329135d68211f1e2a93d6c463af30e14a4ebb34e3af9f7b36f0af64a163443d2acae452667d9d65c33b655d564f6f83bd9894cfd72906123c373c3d48a5689fee38a939dc3eba5d5bc5eb0c2acfb299a316288b7ad099d06519a0d536db8f8a1877760c52964e1dabafa8bb1a385474bd1784c761e57a6f0906dd9a5f1596c4350ff406d9826b0030184861cff7eb54cb0ef75ebd3eebe1e1575aa65f9d91370b5ae6e675b81f77a9fc95c53bd5f7560157c78a3bf05f3343feb80df2345cb933db46bcb95987a519f4b5d3f267cfcaa45013ddb91cb7dc24a97514d8dfa40d64e48bd87bb3ce9e205cbf8c30fa3e73f2bcb282c7f207276a752d62fe5d92585318af01ee76ab292cfd967f855b0164fc75ef04364e6034b1efaf7f5978c767ffba2bb065ee0a53c74e6dd54b82867a1d6d9b5299f81521b807942f0e0ef0b6d41d79eb00cc52401fe3eafbb7a67c46df5aeff88c3d3cd8bdb5ed97c473c16bc840f591f79165805a791109a1faf5df43f41a2f96e48f0404d8e105076e020f264b815b1e1ff814327c45d9d6cba13f6ab9d6cba0eb7528f3e704a628f8d551d6aa17a9baac740482ebe1a15701e4afce426b905772d071906be96903d659c17bcd3cf3a350f6695866cb7134e29835d89b30ccd115f04dc5f014022ed7e37cf18ddf475c266eea2a1e02fe8672f1867cae5e1b97cdd5ef225cae77bc3eaf2aeef1b83eb5aeac431cae4353aa8b227febec85eaa2d26bf58b31b7652657c7eb8cf3b9944127c8c7f2482e175bbbb09ba4116f7b2a480e8e5596646da91f9fb3a569c5185bd77842dc5ac67a5956171ae383018d9ad8dc260cecd160e0b96f1426cff172925e3e1844689f86a6fdc42709974cdd6e1b92357f188b7c089a133549433bd250ab12a8034922b7575f79e6ae5284e0d49dec3d27b670ba32d0e3477b19e84be5a7f6a11c6654b507ba338561364f97616135ecd5391ec2de01a45d82b1295847cdf5c45d6aaedf3944910f06ac1bfba0b092755dcc785ed908126167225f5c6c200bdebffe6d090e4ed5902ba40631819b768b282927a3faad90a358fdba0ea07df4851d665bbb0d5481c556751e04e2537fac6a6fb909575ea6bd197ffd376998f5eada3cdfda6ae1b53ac6f22e7ba1c63dbfde2bf5ea8bb6defb34ccadf232ed9f07cb5da2a3505bcf357a69e0fdea77680046e505ba7cec36bc38238cd77c755e1d359fe6deec1eb9cd984c55611543305d241932502a79e1ab8ca8359476e3414c8426d21a391d91c8165903babb7cc7de1e7dfae1989c8c4f4ffefb98edb0fdc00f046bd4a8a6428af7ec5999e6b128b7cc42df8f1a7ec05c93603c51238386b2841a9abc487400b8e9719a7086968506f6947f1e2de8890b9c23295e9a04059a58561422ee94b67a4521695bfa558ce14c627ea48b261ba4895a0259ab740128bd03a17796202eb53bffa7b9c823f6fb86005384293160a733d14f863a2f0fe4f330dffce1c64809b1cf2e253173afa85de69db90e84fb67712ff57dd48c229453049ea3b8014acea523d6a5007b6c739339617ae3155ecc8743afc60636027531fc6ebce2197a4cc52a6e50b3d0868d2b1b6b475e273350b48373a7f19cc4a6e007b404bfce42373cc3acb9ad1c8213d75932153463edfc4949c2b7d9013bbf888b7ac839da487574217534b7d41aa8634967902d05896b59fc7978881a5fd30aabe397a21eba23dfdc642d45954ef990e709fb2fd584bb877a3ae58d26f090135f9d9cfd824db38113800606daedb22d2cb8a5060491d0207f3edbebecef85ada759ba83d22827206096b22bc001e9b46d57b7a5bbc98643290ae846bf9af15ca4c5d63675fd71ccd3229bfee9947ddbb46745d00694bdc8eb1e50cfed1ec7e8757f755f88b776f2eeeb0f38583db2d3eb64c6c2febdfe6081f0d42139dd76390220600e1ca3de5da136f0e3a23bc211938a4841dcf501bb11b9b4411e2952300675f460d4807612f5428a75666897e29ca0d90657008c80cc04869face598a0f1536898fcdd7dca66f69febc71e9edd54889cddcfd526c7ac99ad3dbd2cc0dd34f44c590c5ac8cbf0e4e0a51a5a24974271938f4b8357d62f4de430f297a73e1aa0b33e6ad2dab93c2d5f252823c5a9980c5b368c08c53040efd9099fce5a699b619c01b39cdb35178edab5a01c186b5f086cb7213415874a358822350028962f617c0350d6467e4da4ed289118b8905227fd05a5b7e20e52a6614abc820d3221d3ad8242bf9a967a6697f496d0d2040e9424a4f443bdaee0446958a622a37136bdea05a5a3cb0145de897c24307a4246595da337381b5ed8f7a752e7b5f889ea827f8ea9fbf01075cc81139e5806ace61f1b6abf1cd9858b0dab89b6075af0143e7865571b089bb492b5bb444218538a9f2c599a154cfc344f6ef844a4f6be8e9919cf7ba77c8a30fb6f9167bd8bd6b8286607bbbba23fe53b10113085083f7cd2c9f211befef68fdfeefe47676ff77752f477249f42c030f1b3c8b36dd3bcdacc0272f215f710ee80e789ccd2ffe118d800f9d471985dfde32f1409c241b630ca48345ab5d336309888af7f41b613fbfa95b1d5883d91e3e23ae65c610c9bb5ee498da3c731e760365c45fdb1f010485275f0c4a54a2e8a2cad51b31324ecc2c45d1485484bf676f6ebc57a9e19321dca65997615f7a4cb04d15d4ad716f113b67d8e252ec05e12af28b120d5017756cbdfd659b61f8d4639a41c9396c95114cba6e5eda94b408ff7fbf3e97cc28b2cc788e66a6c9299a4514e1edbab7b27f51aa84548772f45011fa5280a912f236400dc79d0b4c68e0db321da47854c05651bbe117919a34c884c8683f0e363a3c832986c7028479a32d16c5463e6a1c82c740058e526f4849cfeb00d4c92c7b85e9c52107807e9ed388c54db1d7f2d6a0331a14eb2bc6521d926f8b4cd7cdaee281d9c544d1cf3fed8ab6c03b9dbbbb69bead9c369eca9e534dfd61b3408e9e33561a95cc9e3c669aa8e85ab0bde4fa932a3c1fb29bb8d6012d2995be54596b31e669f4d7e16b90df5fac803752014b7c09df0f9d5a88443826af4b31a734239bc665316a30c00c71c3dd85199b7a6296c6e42ac438adc8f850123243d6cb7f549f7b8d53af9d77ad5add7c91a56ec245dd39a793725c8ad135e0fcc5a9af690ef00eddeff5816b5017be7df91b448edf212d40f97975b18584671939a2bf51d4fbd4f7e071ea7b1d5cfd261329ae714a6bbc8e7bee077cb4a0fa39f61b85b64a5e77fbacd93c2a9e7b03175ce580e1f1ef3c45a8d741471a291a490e470ce276cc68bf1da10ae9e3f41b43bbff8053b85ba06dff05591b15912d76f474426aaa81834134001ee150623a0bb25ad341154f1388fa82440010b49a34a4a0873d9d2869e4b5a6b52583b34d2249544e0763b12c11463269d015d5c24215e900808f273d20d4b8b81fa9950d4de2a139ae3979152a27cd21155161983ceaa259be790ef0fcdcce027bb52b7bcea0a900d0d8ae3afb078ede50b06230634bc85c847524b28dcc6e1b5b1db80e8d174bb8024ea67e93a8583f54447c1454ab7a17f7cd7a5191eea3707f8a24a8daeba41102ed3cdf75d82bbd30dbc687697c33aab636296eaf3969e203bacbefde7bc7f6dd9a322e714b8795dd975a0c71ab5f055524cb9bcc659d0efe1848f9cbb13db673b4c0d3a888fcebe653bec35a6312fab901387eb637f603b0cc29a33793fbdca26b2e66e776ef9c38bd265d17c83b124e9a89a8fc043cbe124424d7be9f43847a0632554e369dad8a83a581f5cb03358d3f25a0212146391e414b11e92ea8b7cc6f322aa6aff261a537eb1f1196e6c938cadad17b66dc19713fb61d85335f4a8eb5da0fd063ce81a54d9642fdf7e787f7cf9eaf81863bb06c5157a448abf7e7b74162d3e9f4c22c54ffff6eec587b7a750231007da19454e257bb61d3a53f76ec801000e4ae5a28794ea99baa8a64415c9c3fe1e064d26a65f4b29cb2d543ac0575b47841efbea631c40499a14802c15d5cd30d5cac72563568b4390c5c6e3bae0128ba92651f011ba5b9df151cc5a027123edb32e16c59477671c4c25e8cd48a4677c541a7960cc5131030500b75c9b50bd320f1d041cc68e1185fcc1f07c24e90d8d7c73936dd0fd2da641871584dd62ab1cb27ffec20eec0a79881209b61c5f241b1505db3f84f53a453a7c921a1ae1de5a69eb1bc9f9815ba75c232cefc76f76201889ac8c719dd5f4d4ede48c8fe479c14717559330fb194fb8033ff760b04831347f716f70acad56ab62a5f5807777d1fa1693e125797f3e01d248b98690a86b001792f5b33c177296a583241d99d3d70e0aad2e1f1e580b7fa11120fa1238808374a8ea25c4d9468bf69188acbd021f158c910efa14231ed8a8e30f6477ad4f3a4e459438e13944a9dc5b56fe28e7577f2999091943113e18b4ecf9a4cb561c51f6330d11a9b4b754db555141ab282ea4315f6542a10ec2999531ce6c3c352b5d78fcacc8404b53483a460fed861f89e26832f9334893f03e468f8abae842d7fab3fae121a2e2e8a49375c1bddbe97ec3c312342b0048acad756faea4ba1ab06a9da05e006e10bd18b4f036be7ea9c51461c4d85f300d717f9ecbe4464ceed92c9bcd21f51a32632d39977d312b92ab09b9ea4d26b45b2121a1dcf6f631f3549b9afead0f07ca22f647de88b37498e55359ba14c3e47b28625c46411411a75a5ed90a50723148faa0ec5230c541b0226ba65631162833d12f6571ab667d69aaad92ccd54566571a1e82daa268e4c4763253e89eceb240cedbc66e9ce57cecba9d657ae5785fa1a9643de8a25776bf68be76717159956e78fd2b5ee31d620c38340096f00a69b43415ba64f858d625db3cc65a4c16c3898d4047ecd0685d9911136745f9ba449dba5a9be0d2f8b4c63ae0910de8158d84c9a2b58e5feaa6d6c4c235035a682601b95e4cafb51cb61fe2b156e0521f38b17ebb0cc484df1b71cb40b169a57da378f39e15b9640aa63709e644ed29245a860c5aa2a56a96e415309e6a51df2d4f8ac0f0719a4c268914fd2c45df0c688125e94dd6f7738a95cd3c4692ac3c48c0593fb79220f121e62554245391b364c0b21c7e67f3a2491a31b542afd4c8818f6ac344db30c430a9d8fd4c644304de46976de916b682900079760b47c1d9fd4c1ce77996b75e7f7efff2f2f8d3a70f9f2ecf8eff7a56274c96a238c3b1b7a2a9d271e01d3e9b4dee5b06e369bcb65d9cc66aea37ed6d83568b979d4132a42b444919629a0363b1bbfe640e7709a353456350b520c6f2418eb3bc18f374f0c4e6415485ac4bfc601438d288acd111ede9015ff8861b0abbd54d6726f2925d755442088673bcc84842689f1734b5c8d4d578b2e8cc73a12d4a25ae9be5d4f64a58d1b5e6b0a36ca6e2495200a8d4164e27f41cc8cc5e66d369965282bcb88ec835908aeb8802c7101cfc5b3f1248fc54dca84edeb5e01e468029dfc1cc8ccd454d2257fd39e5f9bdad58299a8b42ba1aa03f269e5d9703d22030b1cd44e541847ddf2d391c5675dcf7232cd4f6e780038404413497289be125365b185150f3026e52b2805d88a4fb7242c268294c3913983705caed457bd4d8616e74bb10a357b7b21791de116cc040428fa46b538545d2a2217874c868179503991941c9291fb05dcc6587e4b953f0a26e106c618631f7312ab142879a1230dd5c681aa9cc0ed1a3f1284d8dbb4eb9f5ea13f471974f92a954a8fd1f7f88add74ed1332eb41e07cec1524ef01a1e2d255eca35ef8c9d260a71b5619fda2de059fa425bfaa92fafb3fcc3ad31c25b1af89090f15f2b105b8110fe3a0b69e5224081361cb8cbaf87b811f9fd6f6421ec8d72b595a80bff309958fbe71997643c633a049946dbb4e9ddfe4babe7f162c70ac09e71ac69b5324d989b5bb8997d2da505a8b0b0352d6f84f7e358cdc5c2de754a03c3abc894df991bf33449c3fb32376df6ecb9d2c3ab6921f269920a72b12972319d4f0305f5a3ee21abd08be8ad2286a5a5661c1625b855cca518a0384bbd2a05f7ab891713074ad535e2988aeb4bc4ea978786ce116be110e739984ad4e78345653d96dc20fe7173137975c3d5b9b99d4cb38ad1a2dfe8638f7a48dd1a6a273574f45bcb0e955c96d5b41cae5657083938b3856f025dc3d3b149c964620f069e5a540665c468cef3c15af695eaa8a905ad2a6bdc91d4d86a2cdd208b75770f2fe598d27a96c924beef4c2d910eba2e966275910e6295ab6ef034c2853bec7532997857f43665e9561d2ee59eadb38417d9495a8891c85bf026a29ccd8b52b2045d79077f7c6fbdbcf7d8817e7886c562f73ccc410eff7bdbe6e1015e3aed99e4e8769c6aa6c12855a5708ceaddb36ee8f7541a849e817ac2e117195eb7c28e88e66888f800279521e250b3e4c850e1119bad10f9ff123eac42dc65a45c8b3dbb69ef14225f8eb372d277ad83af42c5f042866ab55bef9a55ae43348d24e73d17bf7281c14b9274c4a8946bcaf828d28ecd5593db81981598fa77caef12c59ae4a814cf52fc56632c7a6e40df45b38142a4fc6a222e9643cb52b3893c05785cb04f041935152d5a1ef3022f083dd37d2ff4492945f7c4a5eb9e5f5c78fe7d84973e37d660a3e05c9bef142caf0f1a80abb359da4ccfd858dd3c8aa9c3af96483c3c38bbc45896d162b9580ec050a59dfdba4a6692189758e2fe10f3be677b8a8d5ba03574cb8781db5868c941aba315238d2c39dce6dc152392827defb0fdfa55f34dcf22d66d74aa7d5494c737925b602347f67cd85f949c9d7b419bcae7e59331aa560ea2af8a748c4938c78ceade34e64437c2eec500bc92b5ed10457205aa215d4f665080f1fed85817d82d7ba28f68e341c8a6fc9e89bba4b03487099e4fee555fe26e3649fa493171c39e85b6048be9ee23fc8c1e2bdd2a35632cbe429df3481440b8c05ddc8985f15807472d227b9de59e70ec7596b7e262b068c4166aa214adc547a2881701c516cf66702d102ccb070ea0ffb578158b172c5d59b8a9d66f3551e6505381b5f3d0bfe25aad005effec07a018aba3889ab3e4fa4bd54a75d00378651feda11556ffef5ea3ca5502d8acb254f18a8f5d2f7d94e973b55f8e2f6a9a320672665a41a85173b983c0e8642df8e44682c440a395a5e74b8ba342895221a2d16422dcb7995d24a4686c593508adc36960ede7ca0ee8420b45dcab68688e6c1d28a8881b0c2b62b3bbf4ca8f44c50e1d8821371796b56dce8a58b128b8d0fe73334ef744f811f1c46f16313d17329bdc34f65bfb21f01576d601c6d1657d2e8b8fbc18b7d4731813c1bf3eed55bb4c574ac4094a8e88bae6ee63ac3a091f8aeccfe21e068697a067cf2eb62f6a2458d8b4e9a3dbb5723b6aba514cc73ae4b2c6fea4e4719d0134a1994b87cf0af8f21eb96ce21b8745a98e72cc531b9b886a477999a741e3f57059e5f045160c95edd54d76a518cab002d46a93bd432bebc6988011b7dde157c9ea8c2f47b8a70cfd432f3f6dfd7ba8ab1e446eb94e7fbac28ae411dd022d7d1cf2c9e40a5c6c1585bc9a8f46f74ca437499ea5cbfaf5370ba56dd64d934677e17a4586f195d5189b2c9175718c855eacb12e8f19653bce38677cc40ea032ba4156d11c793f3db34356c4277893a4ccf3344407a24ffcd619f981f67aa47a4142a3a5cfbf628dc11a2a1ce151751b557b65c598222ee0af9a4a8d7c1728206522d90838b85c5d7253d683d67b15460d8b71c778ea413b659e0687fd3d7e5e7529c65c56b12262b6726016cfb57e4946240848b84aae9115d38b2828bde1d28f2e59713770188645012a1fb1345501b7fef72e8e1363abe1f2900f4bc91167a53549d24f3c1d892f166b26806f500755ab56fb4e5c7bae86585d4ba403a372afa8d1681db13d370f2034b3e49a9e20444d509aa87ade8bcdc2beefb29417c98d7897a42db7fce6a68935a34bf03bb7c45a0ca8201eb024d3c276ad3b4744e2d24609a831b772728990422372df5e8c46ae8a505a1d61b4b5dfb4ab861cf3251c354e9cb542f55c531f0d6bc26fa770587624d0cc70d45bc357e0c9f3bd8b985746568cdffa052b4a691b7753c12b00ae06d204003385fcd01a537e673a3b4987499a14f7553e2291db320d22e2af880b64a6aa4b96f5826622ea1e1c730a617e5beff84c2b566b9d4202d37a77a2965a78ae31b68cdb0ac2d14e8075d98683039b9bd697853d3c30eb13b2ff2da83add2ee8b5e2a93d970e17061437bf7cf3f726148077ef222a010914c85288543ba1501dfdb9de73448dcbd337b2ef1c60adc9ade4303420d4f986d7e64eb2d102081c1a371c78766c0521dc0af955e89b6cdcaf22c0d0d86e8cbb9becece8b225bd3658264242b66e09eb82c6f47cb0b83321f85131a3702b369c1b7b8c3f0bd8c0099196da542fd124c78c757124972fedb992a437222f8c79343ebeb8378a6f787644675a280f263fda80c546ec8e44ea5e3d44f75af42f5f36287755238bc272239c9f3428f70976619570cb84e30e747ef160dc915812b140dca508dc6ee5a70dc18d1cd9a2e8aca631e48357bae43c917a8246042cae9aca92cef258c96d293078ae5172281e8946a1195b6ca309e665d7c2d37a945ce59be93e8c3a028317fa8a148f3f1862a8203fa485ab75f0141a132e0be872dbd16638b1529c06dcd840e84f8f0100f4505c97fae5f1d326f57b7cc2c495441556b2c753272f5d4fcf6fe15a97d21296eeb43a20e0dbe4daf041a478f6a5c736ccdc63e099f37b0c7c67b7bdce9697cd8a649afc0c35d620807d34bc91e5c59c77cb0a15dc99ae07f2a6b9472dc02bb066fdba21cf06c049d00e5e12eeafac8de7a300aec6f028481fff34e713cdb8d1c92615a5040ec3c9c5645a8478ad15c15cbf167dc4aaf17c3fa7603e2706cecc6d896fd90efb58824cad9ca759d0de48c6abe67174354e02338eba94d272344fb64fdc39cf8593076c69f406acf2f43255b10c8308bb7e98a550a3130b86540a73e1690cd53518b1c579b151b1c3fcf7d879b5ca51ddabf1d7e626f5b1a1c75ca3687400f44a88591320395534c456c99ee834e3e64f04c4d1c198910ecc440e61c24ca3a04871d0b4960830b0a84fd2916d55ddfb749850d3a8132eb4c8d895de0762196fbe5a8eb9922e985a01456950556b07aa290a3b152202ec69960b3610054f26b5f745bbf0ab520cdb16e4d48b9a66582765bbcbc14063d15db49a0ce94bfe7ae890890ebe064204fb4c1fd4751bcdc02b1efa3bbbfac74910579aee1a251174580c68895feaea1f6710dfd9b44a6273b458a0a8cf15ed534ddd51b42674e95e824c77677e34e6432756f3017db7f59cceeaebc1f7e725787db8fa87d7aba953861915351dc58b26f2944f453819d3bd7b14d8a26efe726d77137ad06dd81265d25f17b2cf3e3818e21d51cc8545103ea966c81bba56e825db2458b2abeb3db199d49d04ecd66209101f5eca1537ca01bec338d24113b84a4d9baa8c09df7202e07f78f7f1e8d3f1e5c7a34f6727476f21047e18b698f0efc79ccf662051374bb0c01861ebf2f2162b5d5e6e8511d701519d3635de56b58910f09b2ceb7adc8122c7629e236efad9d53f3ea7b7febc746dbd293b40c85bd626a9e4c99f1563af15776287b8746e231e5bb3141a1a44344bdd7267d0f64652cb272e906d6bef30dc4031cead72eb359c8c3b113c1157dc2fab5fd8def1d9577f339ef2d9d227b50d3fdef4423c0a2fc3533e7bd45df81d2f9e261cd7534616b6a12621a96ca56c17bebee2058ff81fd8b88c8a79d3e15c809dad69784df7dca5e21e137a15fdf10a0856f4c7a5b0c7062cee86adf03b3665638607c68801fdeedd4f69f6d232f55db6613bfa5562292715a60903851cce2cab3c96bde96c6e42bdf36f2fd821fedabfc07b308acae1d5dec5053b601b2d7aa84a29bd5458e4264ed8d53372e78d21a4696ce1711f4dbe1d1492795f172208348559c4bfdbf6b8543aee1ae82d4c3662d26af8c75e24974a455e2116dacc3be9826cc2710da630c710edc4d2111f559a6f18a7fcc0e2db153cd99e6cef3196913d98d79fdf7ff8f4eaf8d3f12b4cc01413521d68fff6d5005f2d127a4c68ef44be07ab1d7b6c5df10193e364ba7c82d227e206d0acc890e3550dbd4f68a6513781306114de75de71792d063539a42af941c889c08b42e429e50e21173763fc9f9b0101629cc837992c5e5a35b3e9839ae9144216ad223b0574d7635a7dd93f89d1f1ddd7cf0ae66224ee96e7067176ebd090e0001ec5179eba7e885f299ca5585e38665318adcc724b78b13a68ad34e2ab8770a186cac8c47249483b4297e5009e508c667cd5d13c8ee206360ad328e4072b61ffc5cacba24db196033a4682ee5e769281488ba4a03c938e9a0e8c892001b58de2d7cc6aa9708ca716c33bb09734b0dedd65afb274ab60b2c872418e6a906aa1a7799724655c51ff84539c1c7e932503c6d99f4eced8d51cfcc04ef990e709fbaf8ed3eea9106c5c143379b0bb7b351fc9ceadb8ba4e8a4e968f76e538bbbdbc9a8f3afd5172980cbafbfffec7bddfffa1522be0668030caac8a14108b72213672a1d3eb55d540692cc8ba4547e2275c24be0cae5e429a5cdff05131db94946aff4271574ec99a2493fa54f5da5af91cbd060f60df4ba5c8052f989cf15c1af7002ed940a4729900ae4b1973ade004bb701b382eaf656ee9639e15995ad8a8385c3b92007fe3b653c52bc5cde11586b7f415abe45c5412c02ff210d36e4a1b5dc8092f8b7cde2fb27cab26ae9de358c69ed222f6da731cff9f8849c6a3ac92f36e8448b6992a5422dc04b6bb84a50d7c3042a48b1898e24512eefd012aa1df028de0e1816d2cc2c99259f8af817d93ffa98ec2130111d01fef25fcb69997f0778ff3129ebab2f9af3a74ea3a720994bdcfa6a83d6a160df21d9f79314f234e4e353e3b4e7e60180cf0cd6e78d44372f0b2ef0cf77cb07cfc559058d546b53f2749e44529e277b9f693e5b39c22fbf485d35956ab20d69ec552f387d1249656c50159b3dfe94727a1a57b7285e27c7518ecab03c0ca8bf72e42212d2d13011a0351be4427a1ab896879551583ebbdd8bfa863699be4d7341a029dcb501d528df41b6bc8ba39f5d9f82a2c23e1eb3278b66274257b041911bc77687d297434171b7440d0830938a544ea304874b52f618fa9b80ccad9e84adb4ed7abe219d917687dc6280c3c15352fa95058785fcc0a1db2b1179f000172b05e01fe3ab05de4a30aaf1f93741077d92355c103218b24a5ae434fae6a424c3fab6a98e007791f5d30d1734cfd52f30bcf82d5b5ba00a792a77973c3419a87363c4e076a2f2639b56bf9bd7e364f0b91cf785e2cbeb1bc53954bc450c362b10d7289ce4676646c8be99895ba4727adb7abfd2add46cc252a4e0296b2b631f3f7ec1ef5888017b180308517d9db54e80d5371ab698563b97ae86a00251f7a01ecd4fc036d207bc6b6b6aa548281cfb73b0250ad9a11b8f4a7a4a37306aabbaed335621e73800c26337746df368dc56f776dca1abfb295f63b243d2bd868c3a67922f36cdc905f23ad8b85ddc91c7f06e005d4e89f824c42c351236bf8d2c045b821a14594fc3a496d13526300554f7e030e244a3d3cca68ad2f745967004159d597a0fc2cfdeb8e626f5c96c93d02a8ac9f8ca5962ae81a251ea94ad4d5807856984f2c43306d7f4e4ed538d52cd94f63f912879804f6ed068681650c5a54b32edbc01aae1976751dd0967995c8341beb3bcab432bb5b45e8c3e3d6d84343bbd6323a6291e3d8fa478f66af4b5d289603c169ec6d722dacd87471b3fd6c761f8ca2ba0735a572c6d6ea7cba615fea1e172c929fd631d2670c784b771a59d99a8eaba1757ed1208f44223f4e7892867c17e282f547ae62c8e26b1ec31ddd52a3852e3277540b17db93bebb137063322fee354993e2a55a81101acb9891d52c7695b57694c004794cf01435fe40e960a58c2648efa543efe35c9c39a40c5fe952deba0bc4f3a0b3f3ad819888426c5d44c0e9862c5a8ad35cfa1a9b16e3352a07aa532c5584a73071fb7cc60a2225e36055653c261b8494488bb1a9a7e6d730bfddfb62ac8363a50dd3d9b9685a9dcd3db6a0297bd66529fb0ea22e9944737be5b8c1804aadb46d4c57c98feb3cbd787c84ebcb0eb832bf700c6b70492061e2afaa7e38bfa0d6ce2f2870c9f9855549482f520e5c3e649617ec2a825db6364c56d265212ff4b3828469aa69d4699003661059a7992ae303423aaace906d1a4ba55ec320869db313d3cdbcec9820e8b6dc013b37c6366edcb791288c11ccf6b61fe4c4684e624a98a5141f10982b57a3497874c86e7b1531ecf466a8cc94ff4b44e4e8b5b0a587b0756046e3b1945b00eaad03461a1aff2374b84521d59c6e6b74340a70a7595ebcb837d1d042996a59cf686a9352f41dc9104bce72882c6b489f304bfad78da31619213be2d33011f923c59a8deeec6aeb42805edf2b055f1519537388edda30c389deb6416f551bf663d2bff604d0915c18badc8b7bbf6464930429194c131141f763d7552fec8b274996fe859671954c9ee564676bc586f22a5725f15c948510e34d473c840ce1fde72f2b2413a45857d07a3c78a40e02194d1852ba0297f28562242b9fb602a513850dfa188db41549def70853977ad168a87c34216b568af5bd9edc2ed5da44deef0b29b3bcb94651cf0f046a015d59424f5c8503b4282b1f29f3c9e4683259447c4c6bab9bbb44ef18d36c900cab62e0fda2e59a67368c0d5c2da6d94d44f0fb1b08eadcf476f31157c54be0dd347ef340dc7d1886e19b31fe1e7ca2e0cdce1b3f18c3026248a2ea0835a4a0bb3a5bb57bdda220be3abe8e0c6821acac2b12a352952115629ca7db7dd3d0c94b7a1f4244c13c9b9e44f32e597a8dc35f4f40605b9b46d8724740cb1d84f76ddb51fa016fd9f76c274c33ab03d7828f27c5640e43d8ce26495fa0a924f6e4b4bf5febe1e756a515a9aa5b73c23c2a033a90b8aacc8065be19402a24cb72d6e7b362ae4e120a7ea9e8ce406ff7a725802865815b348dc7485b045c82f528a214712df4a7d00b46bdd68a59140e63b18e1590f81484cb42a32d15d961fb65be09bf45bc991317e7853ca784c0253ec8da7ed92e1f1ea8ba42f2592e6e926c2e238138f427dd4d54008c521ef85e96c146103e896f94a8cc1bc995143ef0aba5b64fb467729e0eb2697ccf98c4c2a6ade124e345928e7666599216948a62955c2093ec96ec8ef1d755364f07d522c8f96c46c5f15758dc6c035dc18b650b53a4c12edc119fa0740b86d5c6eeca7c1c0efa1919c7bf9e6459dec2df547d9b7dc35a38d61d537a7f75a7d11c73b250d46e78d269505df9b0696d0de95a9e2cf54aa91f31f36dff92b49f939c386703a11f6252449b725f1d3600920b76aa2e21c37b6d079d8e3063680e89828b8c4dc4b069620e18bb9a4888ea35e833124e429636cc0fcf4218de9257529be4057fbd14c9a4d552d0ddc175d966bbac05307c785018d6667b15ae16c8714d4c3a8826e4980ca4cde85db1b863350d23f1b52879c19e7561f235f68c8f3399cec54cf075fa4fe8db24fe25dc47b6409dbdaab7456a12cacea3503f99ea6b8caa88e914a1b518eec532f161453108ab55e21e946f61e9b2bac420c2d656a824a1593e3c80f2631f7f7ccfde1dfdf5f2f4e8f5f1e5c9fbb3e31f8e3fc5aeabde12aac36e7797bd153722e72374d31477b32c156991e0d25ddd33f9d39c437f7c32caf2a4184fd15e8a0db92c441e403a74d11469e736b94e66629070f0d1544fbbc75e2f9757f797a69788b3a69dfe200bedf952f6ffb06fa39e4188d0aacdaa2072a9d9b17426b05df66d598013e68e20f05734af014bfb3475db5bd33e92a55d74c327094649ce1fb3a3ec1d7b1833b38280ea106a40928e4b4072c1ac7a9b9d036de9aa568801ddd9bf708e29c8a54f73a348f64ed3cbc9801a8b7e3e0959505c7822ca21c720854d2d99dd883cacd136aebcdb28a50633a195f905c9d5db65ecf897501562e30d54bec4798562932a289e42bbada8cacae575a91c5ebedde28f04d769f2b3f8922ad7121c179c28ee4db07a0de25c8cb30e8b999853030e4fc3181e283a6353792142b59b1ccf87c389381593a12bae7939e1d3592b6db3bdb6a7c37fc4428af56563ae155936973ccb0abf9788a766b4e8d2c6a63010c8b45fe10218ea5c4a999d2bf122104b93c0b222fe5a631763fc14631397cf905ea7da89c67e8b0a2bfc187042163a5a278e33e09ca980939173a17011039785d9d52f42834ac7ceab2c26041905c93aec3ce24147752b38548884f6dc9fe312e6ac64dd24291bd77a2dfc23567187760607c6f6c6424dddac2f54a9f30b76801a3adbf22f159c1a9a6ea1d5164ea5c63fc060400c7ce55b8d87cf4b9230298a57bce07181cc382bd824cb66a89c71af048fe7c4a4ccfa8962f8a6a2e0107d2f48156429d74087a2d4459b71553dd55f94c8282425fa423ea01baae9777cc60e0d5fc40e1cf519724eaa6f0797a80e980a3a0562097ef4e23c5f7a753417f7c557a8ea3872529fd96bab49e2aea3e3acbe44c102e9f9ab45c2edacf59ef56b85832b73747e1b54784b0f7fabed928aad7e960e93d11cbc27b70ec0bed8a1985b229d4f85fe0886acee576d2e04412378aa2fca2ecdddbacd93c269dcecf1ed1511e6b243accf53b1e2d8fa32d67158236a1fc74a073e16ae65c95dde6e9d2cf924e93bdcb813760aad8581315f8b66067a5a78e1dc8b5d326b6a8974d07579da0b23168d54ae5b3418de3216b3a7aa8266b3a3c9a69b304c3536b50883efd85e18db3e2f5483f8e37b668c1ef7d8817e7816880a9dc35381a60bff3b558db051a4a1878b2a198e41bd7ba619b95827667a7a90aa068ed091a9b2efbfffdeb1fa35efbace4b4fa2b640b45acb0e9288d5c8529d1cb31a5c75ccc6e3443f329b56a547fcdae29e343034ab0d7c5213b686a7f7c6347dc6a514926e71ba478840b86a009bd36ceadfa3abccd302516ab3f0268956fed70438615d56b2192bd72b1beb6e84c2dd122fb5b1f158fccb0b31008ede68b7f0dd5b7da121c9a469507bcf32ceae9294e7f74c0a9ef7c70e89f4d3e414c67b811724e5a43845a64d39cee69301bb52052526664dd22233ed25291af762648a242d78a2ce23e918ac3fe628722dd66be3cac7c50642fde2455d16b5f35c146f92d15848473f66f4bb00a2317e663fcdf9241926008281b86baa658d43380259bb8b5c1037d84506533c6ba936b3530b0d17b2db92ed8e9aa53165b0593e55d183ba33af144811610051c76cd63393540cbaf9aecbde1cbd7d7df9eee8af97479f3e1dfdedf2edf1fb1fcede783b546bdfb25bf61d548b5ce0a7893a1a559167d8b23a9ff64b69411c8b233c44a6c9204cb30da1c075b98dae15596c24f2f47e7a954d6cf66a88a866a1cb0e6d0fdf754d5272fb8e45a235ab7fb80e6a12cfd87e03d3085aa36932687495d716dbc9287ae40796ff84432fee032cd257170f9fd640d65edc5711b617f7960099ecdbd9b5906e466d7514bb690205efc7dca874c8b6b9436ed0411c2854ced36b75190dac24a5393d218e40965a25cf733a60b6bf4abab628477723fbcfff99c4b18cd8c696b4825092dcadc28d674942ba1790d1b64fcb2627f23d7fafc599361163a4986aafebd056d541b918d22c901b12f9ba297ba643c9cf26be91db6a4c78594f922d417635bd2d4b9db741e9bbd81ab46589743455d52b335c8f609b11c7ea10d46c6f31c051d94f62381177c98d082b18ebd248a532bccd7151124eebe58e9c6852146f01a99ce34567cf32e32ac7b031ad7eae10259b768319062799ee8a401c899663c71f465eaeedc45bb872a71b6691eaba44c0aedea9eda57208d4457c10b6ba8653fd884a2ee391533db6e0cdf8892a5b0b346756ad06e3aa623762c38ab21a35b696648e95a42d55b3cd2c6b77f2fed5f15f1fc9307c4e939f026e41bd727c36ec8d65bd57f5a860acf2b87eac03c62219e5603e9be0c57b980bd1d093f7d4c0cb58d42e1596342af90a2de9e20e01f168c64d1d0df409ec087ed6e74b804a586d1abd217e6a59df0129441a72eb489cc1c142177c5e9eeab906c5b36717de71ba472c4064e7566da9c709108aec3df05ba1fd9248e53c17ac9fe5b9e8bb76b129b9a5816d3d0a10da6c2ceef840f493299fb45996b3ac5ff089d6a704319b16efa838373bcbb3be90d1f4693196b1a1b9f219cd3f9a5aa7ead2ba741e8280b98ad57f7ff4bee6f6f5cc6d7e8545363ab7c0d413d352280e27915644645dc8c47456dcd3423ee912c6ec371b9a6d1abbb048ce8be3bba46082e7937ba0f4341137b90589c378da57b714c88221b3a96022bd49f22cf50c7ee248818dae82146ebe88ba38307a9d685d968afee21a7e9944936d0f70db602bf708dc9550c068360f8317e8e361886cbc2b4f1f80c0f546e5513b80fb1e088ff6d9ae5d8b9d93f7af4fde9f9cfd8d1db2ad9dbd2d93b86cd59d33f7d987df36dbf005fc361fc581c4788f451e9c653e2449fb93f9c0461239a1e725991527a453a026f7f8959863a74139771b45a7511b39aa6a223f26ae6ece5e3b684edf77d9dba34f3f1c135f7d7af2dfc72596498ac2678540fa7080566f60a686fe8d2556488a221ec5042c3b287e9928b62b2f1d8da6dbe7fdb178c3a5eb1181a085c8afa278a90ab4b64328949d5c9d29827553a890b163cbe685c80f7e4da6d336af03df99cdf8f0e0087c148fa82f7b7b91f87e04e1cdcdb854a28261d59cb9fa5d16e133cb8f9bc281ab0b735c64cf4da18bbabe114a6991a473810b1044c9fbc57d8ca4c4ac88ac83cb8f89485cf14a655b6ee69272400737e61c2169c98fd8731eae761ba6349a4f3adca7ba2accd35fd33ad80daca2eac36896d4537ba6c5896418a56eb0644e3bf43af563b89bf56c66716b1216cf782ed2aa581561e203a4d20f0f346e9d9617ad60275c16183563f5ec77f3d980172b65c9784a03701c551d1f8325f292c9df2ccf06f33e6ab0b10c4510feaaadc43fc3480343719a6285a9b8aba32bd99853d5563430cab6d7e24a883315c5381b483649ae85c2a2419ecd7e54678511c515fc5ae01bd3de9764a82be2333eda34a6a4074be4ab3c9b591d9882c44cdd888ce74992ca427074ede5d7a41d9b7e79bfdca58de260f934736ee0d56638e56affdc068c36311e511fd99d48dc83965b9232ba5b775a8765dbdc74cc763c464d5bef2097bbcdfe593e2b71621411c6330974bbdf6307baadd2a8d833b66f2cf7749a8fca96dc2a7bed3834bc10074b52f7db9ccf6622c7fc342407ca3d6759b8d36443d31a4946c0d19449f1d35ca488331cd04232451215654db1ed81d6cbb6d9ed58e40274eda63539878050c98da0faea0056bb7f9288018dc0494766ce010c33b1aae8c98ead82ee6baa41533aa2bfeaf0c0e9a307b2cc263722986dd862a5171fd60e2b54ee3467a1b4b4868657e5901c8aad15cb6992baca82a77d910dd95bfef33d351eb77123b6125a6bd5a5d101f4fd24d4d9daa2a1b996753a641a8fd9d36103e8160a4ea8e0c34acd748a31848da69df95131b8e7d8dc856eafc3f391744313b53557bd96d3eb2ecb1502978f27d358e4986ab362cc0b8879368348cd36df24456c8ec875963bd2a43dd3a2adfd16a5440648818aa06a6bfc35cb9174360bf1e59f3d326e984685be0b7cd675a0126d48edcba7e4f9de45904c2f4ce5b92077df632c9e5ddf511a4e54009115e31337d4aefd6a7a3145a21d31a3ced66e7249c445ae6c82ad80f52a1952129596fff9e1416712a7b1ebf62f2a167585903e66b52029d1841785480d59dadfaeef284a3f1259736ffa399921b7af0f56f48e935a603f97ea10ede1dbd79e8b506322a06e44418cd158bcda9ac08041d2c2ba2d6f471a73744b4669b98d754524fd6f0dcb16ccd8c6f4b3635a362aa96aa7c29c8a72ccd786eb7b5cf052631f46c59c4e0ffdf877d1dc25cc99b7c1609891e1656f2ae3eb3714fbbce4b290c6a80e73d4a3e20fa94c326449b125599a15f66883f33258d32599332760517896f927c7430ca7fa5c1638969dd85862f8a5aa84394842a5a19fccbd5cd0ca5ecf6be42c2590f6b47d6ccf07673946c61300b1eca808c06b149e43953419352a80559db1df0157906abf111ea294a58c8559ba4c12f1a6f00a734921465dc4b28e439a33d6d8070dc0ed8b3017abc48c0c912e01d11ce4354ae4453a6883e97f16f7611f87ec1cde28a28482bab30cc652f8caf6da3c6f3d1ddaa5c7f824e13a7d5b9fa7ec0aa2334d785fdb4e3bfbe3ea9e4db3c17c6217928aa27fd1643e4ad246174285960ef2d79c772b07d77964101c4823c065a180447c93fa197192a5bd61add539c970ccb61062b0548aba1514d055a1edbea43b276c25dfe5b4ec7bab0a3573e3acf2d7c412d6a7d2cff05a72acf476d40642657313bd31bbf61681208e48829cf1d5860707f693912c87f13c9b63263b369a64577cc2ce7bfd89e0f9593215d9bce85db474d4afe920ed24d9aefb7519d7045c47730e2718a4b048a622570f590ebfd58dd926c92e4c892263d071e5167046c5baac5fdcbd74df3c3cb8c93406e5f327cfb2a2e336a24ad5789cbf0435b7649c12374372812b48fbb50c678e89c27e615813850cf81326ec1e527161b1108eb098631cf7b09ed90bba376f33a8c203eab5fe3071329b617190dd0a312b1d28c14b7ba9c25e60efc5c543de86a2e2750c359f4cb2fee754f2a1509bc33eb5acd05491506a0a020fe4f37e91e5cecd19db3445663a33c9d2f9e5235881f4f6c5d2987164ab11857d617104894035a6f8d4af66d9dd86162fbed35acb1952954cd1c8675e9481efbebfba2fc4db603154ddcf495afc27f226b41e105724f8e40e642d0b36e005ff4b226e575162eaba98ae95179cdda8a7a7d8ccd10b0daeaae978f192bea201b7f4c8237b1a428f20ae75e92b3b2c63846ea173455871c08257e1ea8099972ee26287262fb6fe7d213e0c875214c14b1f6f1aae702e46e26eb6cafa624d585dfa59b7fb6a96086b2f5e9f4f62747c376b61f1ba8d460dba50a4573abd692e5e4ff84876c49de8eb06dd0d03927b371817d537afd6b0b914047a68dad95bfeea6f721ba30714708ff8d3dead56590caf91c56b42c6ac32f4c8f14c5941f9f261c80e99ce0ae9bea6f8fed8c2b61b33ab210a1726d9e72a686c6b23130629630df3fe254995d3f562c03b194eed0c562758b60d8764955ec68896532846b6dc361cc2e5bc9e2c245b98e74c3a86f4e0465c8cc5942529e3b22fd201e4215f32f4415c944179d5a27ec1905b0d4518f0aba652ad3f858dd400b920faa0fe71bcabeb1100fb3ad2f336e28620531cb9f091a163398f1c09545ddf4e5bbccab1b3a13b2c1574bd3a83c004b1e255feb3cffd41070ea9b8144dbd51b1745357545b1ad3ea458a97078da02e7b3e799e90aeeb233cbb1030711cbea711a0cdaafb3df4b32c7b62d6f4a79bd31f1734f6f040c36b50c4bc8a9b36efd779506e78830a2112420c21f49d8550f9bb37e200234d0fd1fe7473fae382c68c2f6b83220b20b4b3dfccfe74af9a647e96ea1e7bef256fb5448a4d2965a416a22698db855b72c65300aa6990a7032621169da5bd65427b32643d4c3bd963896473907c418082b6ba8f6a02ae8640c11822e49b7d503ddf26365cde3798c84d9dae3af24d36647fff3f0321fb7fff3f4036d54fd30afbfbffe1e68b6dded25cd36e36449f3c39cbb0ccd2de75b5269b952789a9151c270daa12ebe165bc7572d69ac04094ea166000613aeaf21e2e77443531bd6c969cb491ea31bbfac74b9b1c9638d36882d6ac18bb255557f18246ace2b41d93ade0308d56131fcb960f4db597e696523ac19d71184da4331b1d90b774a4442de06d28deefbbde1422a606b1ac0925d24ca72ee0826e9186f43c42c0689adfb01655e9b22db541b7d821dbd9670755f9b7d8ee2e7b9ddc0930f9e90177f83b85853d76351f2952a1d0f24fa74ca4a324154c4cafc4608044e468905d09d03128444db254ea567777d19aa8cfe7524896146de01272d6173904ceea27797f3e45bb2ed92643e79b6480066a924f356b68ad9654a37a17a0552ee05aafe3a5861825c5787ed5e967d3dd7f7039be162997bbd0b7ec67b9d89dcd2793ddfd6ffff01f4eab91ec10fa9b530a0c28f84466e458acee432e754e52f697ff848121594180b98d7903bd9a8f64a73fceb369329f42128bd9eecd7fee2652ce85dcc5911c2683ee7fedd567aff02cec3b88813bb40d13e7d65c77afd30a7158b384ee47d9d4cda330e37991f0c9e41ed71bee4c940bc29e18a0e21a671305ed36808256d5298d516d3893493a9a08d7c8ec11f9ec47c63c24e8add2a884e6a34dd2f4e00011c54ca403f5b31867d2b65ad916cd18a3eeea867b2e344cbeb4a009e9df6a5fcef33c11037bb1a545a00c269cf5b1405921b784a11ab6190552d599924971948f644b01ba6d40d76666a9cdd04be90146f2247ec0a84f6fade66a14b55ba10e4c397a8e467117c3a2a22bf5e9ad8d028fa38f4af5793a126fcb79979cb1eef8635a9c6ac974fdcc6d7e3b70d4fc9ceaa5edb20d03cdd86967e7f99d33b158385153f2c299b6f336a6fe30ddd895fbce9ff176982cc71d3c18c6d98a166ed1643ae7d4f0b9a9737141c8e0bc5ac097d3881dd8c6f357997963bc0abf9367cf1e175f35918ecb8536c475764e8f89bbbe981548610b8fe43884d6b4a868304f2659aef6bae2fe2e3bb48098f2edd7a6917cf62f12192591b03cbf1a9dac6862092a0a8e3815cdc0b75f898eba2d3e7347b23a217509954b9923b4c312a31af21428913310ba52f99320bfa8198403efefbc694546412d3e7316c9a3ecceeb5ad2ee21cb135277335e4de6dd8e2394de25c28ff2017e99cd128adf4cc20f48dc006a28b464e4cb2a2e8862601bbea9513f9b697b647079aaa481e750a57b7e7151dd40dc326b85ccbe36bfb656bf85e99e9bd81d63ddd0a40847fef060727dfbae00cbfa02b86e6da6cff0a6bb74ce5b42025fd8e621412851692e7772d0c0151ecdeeddee6a71a1de145e37b7d0b0b3fbcf5f42dbce7018b1447a4b7b0af71530074b58cc371457cdeeb5729290940ce6b5e02aea290c882bdf8b5b45e283c4510407859bc641fd9fbf2c9927ca31b65f41de84799d5cfbf64091d22cd192e8179064a8ad37043e4082220d1efc529d80a971fa2567484e6f754a035880a0952b2ec5919354490fb332a9522c1c235faa816af2b0280313d187ec562bccbf0c81d07dc5a943c3edad1b899f162bef4554c248b3194bd6da04dac8be1d89c2afbd1d468ca85f029e0e58928e459e14c61ee25f0b42203d491fb724a67ea34531c61e6628daaf749467f3d98ba5f8262733952862f12d1487c8fbfdf9743e015dc762c7aef3244d14c36bcf2cb73e2d8c53663953773e1ae562846a9746be2500ae2353ab85f36cbb23282f97b50576137b444301a913036cfbbbdaa1c74bc54406d97600649a6d5f04da7317585d7794e0c06f9e5adb61223d67e8dea8f58447a238d181a1ac6fe2b7db6db74bc7e6762514c4d361350cc4ba111c5ce80f58832ebacd659085eab474e5781414931e1811c53ff36509472ab89a12331fbdb033971331c6fedfb37d76a8ab9ddbd4989e9b5fd00ee4e4729bf8d669e2db2a0741af770d968e69e3f76c73537b68b94503372d93bfde671cebb8231ceee6264ba446de9760194723de33fc973cdfbf68e3f4c2f05831d87dc77ecf0e1d778b03a7d4f328db5969a36118593f8d6adc1bba8639a5406978121a74b03caa274819327d6684ea4bbd3c0146da7442a5583c664ed1e95564806d7444f57482a41ecb72fb8442d255fc12ed4e17bc3f8e7a0fbbc9aa1877b2273d71089c6a22045edd4b10a0173aab949e633cf6cdf2671506893499bdc8da2b6e7063cbd5da26394eac5e4ec1689b7a3ef19156f5e3b97c38cb19a5930b42fd84a50bcc456937af9f6cabb4819bc6052a9b1e7847efd544847182f4fb6db808429cb8d2d6beca05bf5e66d34616b1d1b9ee612ceab7831826c32c3f494df4ad61967fb85dead8ff8ab7deeb2c6f35da6f9ac05a6eea5adccb207cc082d3bf8c81747c04e55020d5353d54145b2424b1995362aab8b28024ba8d08dd63675219cd1db1c893a078782e2dc5b682baef36e7339d57177d536fb26bc19202dd86152a6533559c4f58af1827d28698bb4ac8bc6e885f8ef2d16abc6fd43b580dacdadff52a29a65c5ea34f20fd1e820307d8b1f410a17fccf9ac576941e399719fd30c2e283db19aa937433ff370a3fda703592db3059374403986695a6d46232b09195559d635d3df643f7e3afa78f9e2e4fdabcbd76f8f7ef036c74bbc516127ea013a71a9bc190839bfb6ca173d88d53c4e2430bcea2f445ccdb2c2bc70a261691fda43ecfbc04d6bed1294940254d17c0ef574d901fc6a5b35675d080eea6da56bdb24bb15f9eb24974b096f74784d3c1bdef3290a7052f543fbf2e8ac007d4588b12004dc9451af806a44ea2f49c85f2a42ae26d4b2a3aba3e5a5dcd74ce796e8321390800a05f26259e424c8615d36e6f2739af4b381304d1e9af006a4f0a1f7f1ab16382b8f73c87f6bda3d741ecef76cc4844e7fccf3a3a2b5178ea9c87932c1d17bcd58af75fbbacdf6b73bffc892b4b5b5b56d9b4627dcfd48ced1fe383fb750bd686db367a6c347ca0ffa7c2a266aed5623a37d3e995cf1fe755955924dafc03c92f7c7ec36cb074b625f369d656821b90c0e9a5a2d3db0255130120c4f0d5eb606e26a9ee7ba4a87a257b4727134cb649b6d6d41d455ea149e1f734252905bb044d4f40d4e0445d77a2c17239e0f26424a37b6e3ed58809da53a47b94d63c82568c4d1b4be978adb1e1377b35c4809968c3958e8ab91e3951128e36ac800441783c91917acc8b1fa34a7181c302ffd8071a5150f13727c96420145de2685ba32cb82171891448d3acbaf9121e94fb894eea4f0c4f75a1a17c5ec607757f4a77c27490b91a71c3918b06485d7dffef1dbddffe8ecedfe4e8afe8e7a23fb79322b76f4f07690b3923b6a3176d441a48fa11d731e4d125978fd569aea5a3b1ab42bc0fa1e0789d3662dc7882614e4a84360efc0e7181db73b00fa76c09642a5fd0595c0d261ef225af7db6675db682eb11f6fe4f74b36423fbe8db7f687555ba31fbf8f37fbef8f6e967efc21defe1fd7d73efdf8f77847fff1041dd18f3f5ed40a2ad43e79413c3346db41a20ab4a033cbb3222bee6722bcb719732a2886eca0d314f6bdfd5c6db177c934e99309b821015b92f570923d7625c6fc26c9f28eb7335ddb7621ffbd4386f849b6fbbbbbfddf77beed7c1bb7630f409848baa66a278b433df60377eeebbc8f89142ec8fd799edfbbc99a7e53f72bdd2acf9342c74252bfbedcbdeaa5825f78b1824104d7aa755c949c9847da42332aaea303c1b34faa90e845ebbb06aa5d3612c51bf8dda2814565784934b3086ceec43122c461974d444a5b5edbce7aba85cd4d464406ae88ee38f5275761139631b964e0254ecad8f7db722e29d2cd85f6a3259d8a1965b8f8ce36c7c587046165a4c18f6feeaff264d0d638d07186d576d44f0c076d4c6c9d2f5e21b519765818732702ee27b98323c51da66d7be35ed765bb77d91926e900d959fcfd96cbc7aa3f5433609519d581a8af744418697f6536ec9ab872aa992548cc6b10ddb8236baaae70c2fd0ff36c7a528a010cf29ec6d2fa255413a6e142082421464bee0ceaf7beaecc55a28048b67224ccc9fcd0b593b74903ae45b805ed59db4898ea0b4beb768ed18db82bb47819cabb85fc28d9cebece36050a0d9b81cab66903cfd644a06dc424a8bd33c96ecd3e9a64b7abeb11bf90fa410d72a90d34c96e6b750f135e047607ea57d9dac09cbff0b95e55163f5873918b9f5897bdcd065c8e7fd4445e33b09d629ccf4b7b2e36743d4dd9c9c58dc8a51bd82d40d2da03da31b481e6aa15e364890085375c1b84d2462bc679760b2b75763f13c7799ee5add79fdfbfbc3cfef4e9c3a7cbb3e3bf9ed566c952bd11a43637d9863e6c3637151d5168f19e4f05b24f600d4105ca035193d3b5315e9307f7d6f9451b72043653d9eb95b5871fbed1994256304d8843bebc3a2005ee96a71fa017c318645da78e031e76a81a78c50b4eb0ab3211c11580a6c046e42dff3951b4085e4100fdcd4de8e97cff42f5d002fdc0d1a7bf817a803da0bee0e5e74fc19b8f479fce4e8ede7aef3e1d1f7dfa01de40ab1bd0ec1f2eb4158ceee8bfa0a3fdd20adbd5a55fe72e8cf4782fe8ee47653098195dd79d758fd8e5ba3d40d20b4d02ba6c3f000ec2f4d00c44afc1051895697e4e6d70c3f92fc6b97ae1565cfc53420a9bf21058e7c85a3b5bcc911339b3ac8c55cc4adc9b6259531d75bb9493a43443ff10dd2b0ddedce14d2c5677b738977a622fa3c9c09bee47a73baf17881b869d84312a2313aa0a75f0cb92763e4b29549751a61a2f3d378c01baae3f421e6012c395c502c6d401d558bf012d6ce0c4a4ddcd2e96f09c674566daab0e2a5dea8aee74172b788d96c74b3c5863575667c0d9f263767aeb79235872f43c1f7dcc02589b70d3526b41eb87660258f3fcfec2110df5f9ac6ec19d6a49e155fc72322594015468eba31eb61eb0cd7b7a4268aabff771d1946af7beacf0d7077ae06bba8c750096feb388b40e15fe7c1cede2a57166b5955a154c05bef974f2c39b33642382b65e4f9259b9f7d76f4f3e561a33d85107b6ac5fa5eceea98571949bb8e4c1ad27b64858583ad1093b5f66f3140314cdd3a2912cae342c8df6917952e4a325627834e928760b2bf71673878feeccc59d97c48f00b558ee68da329b9bac561249ae786f8c74751961e8da04994eb638d59d1d508c5a351360fa2aa22aa31f1f1741e8e9ee76a711e0df2fcaa2cd49242a41693d70127144c90584aa224853c9b27b202e2b502fbba6df97ae40308a8522009d70e41e39fcfb2afed763fe55c1ba069795168777df941473ece1c123ad69e53442d3ae882ecf70d86bb5e44ad21b9117bfba13589169296aa9319de9528b0b97f4e8c1092e67887342758cf3971dde32f6bdd18c055cdae68dc745a91b9b46beedf93baf628c834943d587292fc662ca8ba4cf272c9b51fa60489a7a9b2d1fb6d1021ddbca22e9ae75c652308aadcc576c78d38118f2f9a4f80b26fab11185e75247ce316c4b2f1af1a6014654406109fc78c78bf1075db1a527df66eee8eb10a522d4b01bdfb044786fca4edf14409642eb56f98253efeed8ea685f247871341c8893e3b5b2ad484ce188ab836eafa698b5de562d2e92b096727fe1f57d4b9163faa6c166be4524ac285a521bf6cccf30f5dc2f496df9254df46267a451299cdfcf7bd8084dfaa192b17e42990d2d97c6531ffd169c4881a867352bcdec66b95c258e8fa7ba2c2c76db5af16c80ba4becfb0f373a514985aeb2ac6e3123f31dabf45b9de5e91d9fd9a26d4a16caf3fb96ab5fdcde8ee8d622aea5282d2c31c79a61446d788cf9355373c7529e4bd5e624ab74e3dde2f1c2018e7a78b7bd94f8109270f3c140c708eb49b21957a018a8d3ac878c5eaf83029bfe98e7b24776caa6b944b2229fa77d0e219449f0029b0a42868d79cefb85ba4988bbbe1003695b6d8ec8fa5c23c6f3cc1939be2a1f855ad4780ea3ee6eb1ad0b4a6b06d6e57010824d2c3413c377dd828bed31783540f88f588d6eeb6d808a8b5af0acae88f8374848b6c5b6c87bdd90456cc00bdf02af4c7031788aa745760b56e446768b1cd2d698095e60ddb693f81e5e54c5fa3224b3dc02063f7b299289b68bd9a5a5394d7e1634bf72de20c7cc9f6018d8d63bf6fe24876fb33d3360d7dc9e12aba0b9bd2df2247e4cbe38d9b4e84adcd1a5cf11e6a2d0580cb49cd589145bb05cf44572b32297f9ab1be57df38b21a22b09db570852db54d4fe34f2da8f38e08502db5fddd1aa26e06239e4629d90b226ecec1281674bc24e276aac13662f26b479b4a59a6d739918b34cdb18368c311bb7c4b0738b8b68cb415b4950eb846faceca3647a57e7ffb6466b3c0826a9cd88e0e1abb72382512eb3d13fa90acdbc986d5ed0369345909711e24c1462e604f880c78d2edb429abc158bce113619e00ee63c8586ba512738887a7f0c61dc31e07c32c244f83b7b904463960b29f21b0868ebb9904056d42e2bb2d7499a14024752b60d2ca55bad1820cffd0400bafdbd0541d2b0be19859373b5b40b080af82760b8b0bbefa0b943b60f110cd4a6b0b313b3aa2b042040b8106e208935c9a0723121d7a2af4302d56437c586bccce632f5cb42a395c44460ae5a2de6b07baf2ce628dd0b51fa50d4481eb4dca1a8943944fdeceba50d6bf0f3e8676991a4f3dfbaa7871d8aea352aebc0069123c7e96bdd538c4575d59670e3749e6131fe6547f22f4b8c0a0da746414f515a6fa1d1c008035c89cad7016bf2e031c29e1257573e346e3355b1ca6c350c40e2d6756d1df4c083ba1ff5ddccad672e6c359d7e74f5e095bdea960c01d4b078706b948d490ffc77d61aa4d4d06697fd7fad8aa66cb5b041302c09042d1bade842bdf8f099ae6ffe29e20dc0bfe7695316cf24a6324f772a6e5fa195ef79d585d381b7af5c0f17a21de2430c512f9e47a53e7a13902ed6713ba21186000b6d65fdb01064998ccd7b6d94a040b21ddff0c4790ac54a5214ea9831e235dd8707bed58283421eff7547f778c78b71efff67ef5fb8dbb891fc61f8abc099774dcaa6a88b1d4f4609c7c7719c196de2cb6b3b93dd6574448804c91e91dd4ca3299989fcffeccf4115ee4037bb294a9633d9b3138bdd40e1d28542a150f52b17d6835c4e594aa0b5127b668562266a35927aa2421ce1c30a1710bdb4012bfc59371a1a4a72888319261c003cad2f2fadc996e6844f6cd549d7040825fd3722ad91a7649f1ca9840b49da2eb2e3b4601396b74d8b1d72f8b7c3f0c812ef1286f64e93b134f2b10f8b2c652978cca6594195c6412fb26444c6b30ccea3bb8b2c490b82b9acba3e35c648ffe577af4eda2a5c783e4abb49b6075fe72f2f3ed0f962c6f84e55acbff4b7a28998adb6c64f91d3451e92166bed74f96296146df167a923b8f8346d41a7bf7f82d5c843d27e084f0ec413332dae921bb48d8a70d874ecdee4614593bb254d9639c3073c524b53e6ac50b8924287c083d406091164da82f726d58260869136e67216b544c412328b056a17b7562598fda1efef20a5c6bdb6f8f7fe7d7240f6441d65091724deb1a2ddef90ddfd939d1d199571fceafbe357c7efff77873c2569962da4edcb3a34f1f058a568c9f76a52bf5e63fc29b23734c9b932ffc89fc7e935c331152c5ba0ea4f18e613120510f364925cb0d4cf255e4b3c0a16e425e231221cdfe3d8da1150ba125797c00c5bd0097a4abea79328ae295ccf8b423d32a78bf77412775610ef240fb800d7c1cab1087268364e10980a87b786a06513716b74022cbd6b9d665902c76accc5c2057be1fd8b3ee13ab10f9a9c7730839c7ce5a9fcee6aac8339f511724076c5ca12231ad8cf0fcdf31fd8ca79f5185fc10946ad4cf8210db3b06ece1ce5c0aefe955ddd7a71f0c47a81a4acb78f6487e474dbaf9e3c765ef9550f0e658b39a3f9c47a71f8a56c913a1df9f24036359e258bc12d1fd6cf58c8507f1ec56ff2282e34f8262111350edcf56213fc639fa9672c886b82621b05c47ac7bd997f93661db8bb1a3c74dfef65c4bd373c81c60232c3c3b0a3889bf3bf01e888849e9bde50b069c07f3d3bbc787664e549336a3bcd573b1d62c1ef21b3f5d4bf0121f1f488d804c4f7d6d5032f7a6328299f428f2722f3e2efeb0bcfc6a1b9d2d5c3a7aefd45febcd6248bd665e86f59f08a13fafb754383c2f5438e4ebcd915bd752670cef209831ecafe60946e745dc813a82c8821ad2e8f9b9707e6a571ed522f0fcd4b6bd2d5db47e6adf90eeae5e393803bd5abbf9d783f3c7eb53fd1be54cb0d1f9a0561915021107255384b1d9bbf7f7f9360a93502a20685d8f7816e69d3dd95f92a3dcfc3a1226df95ad45ad3b00998f01bb2fb1f7623184b987ed0785c94e33cc53a12f4c415b54e5f4aac818eed1183e35d9955d5ddda2e297ee7cb4962404fa5b52f2a9764f4430f0514fa9bbd4361448e94dd6f9dc90e8904d6c1fa36bc9f381b0108e66957fa78f3819bed2d29b8c9b5228eae4bceac3c2926b99ca6998d555e0909eaa8ceff23c68b249597b6686f8034adb399f32a42120e3d2a96a3c86c47fe06a794071f45b398dbecbdd79ff2bb2d9e0f4d1539b092d2eaf473ce10754dfc2b15509dd94f4f5d797e293937e8f0990b7dd6b2cea8114455cb07ae4e8986adb0c5a83a095ffc3bc904cfe4e76eabe63a7a1e9cb473d662039f7d35bdae6cbfba22ec578b14d67d936745062843721953fefa327d23270ac105acd3f34ecc675375aac25f4735db68117cc7d822be106043d6ab007e49ae300b40b23d24b70f999e233bd35c7c5e2eda2ea6f9f233e46318fc16d9b83c4d5b585f8da6a27e9f1774787e42dee77478ce49915308071c3983e7600529a62cc9713c56ac3f84e0b25c6c0ad1d880adadb697a2e1754bcde4d68171792b4f43652a2a3be82aa5f2c0498a3b3e0a305ce5f2e482cd56929915938a79019f7e4eda7cc9876c5124673318a0589ad80b324be649c1772c733c3cef72661aed6876b5cf4c62c32b1fb8b59346e64acdc1d75eb3fdd688cd58c15a2766c4db120dd93c29e2226138cb528612438a852c9dad083c268b194d525f34345bec177ad96a164b52be704dbacd966e58bf8cab97298c43e67b255e141d08b831cb61b0493a81cdd99e911aabe0f53c299e8b0aeadac4b71c27fc8d9844c9cab2907b8cbba8fe8ccf88182e66b31b112106401c8f314bd4317ff1eb92cef00b8246826c0f4654be5c2cb21c34154d4ec1c48c185b40843bcd139ea54d3eabcec49fd3959f015ad08bc85559053daa20ef24fcb5be625dd7236b2e9af91e5939cfaad20687f3144bb5259a8fde6e8c58c1f23900ebffba4c2ee80cac8eca892d42546f2420a9826d4066cec6180498cb41b03ead75a1bd6f75e6ce225fb2818afe913c237675d3bd0e9e1e06907ea67a2dc0b8e113738c12935e6f3682809ee68e99a6703b402b9e3cea3856bce7af5fbe79f6f685738672ac3034cf2d5ff79cae62fee95931d585a08bf1881b43eb5ecfaa2334bdb6e91e46a1fea8e2f875a5a8b607d3681dcdf6f6c833ce97734686abe12c19ea2d1d3f029d391ebb983e830ecf99f4b71d9e7727acc0d9f6cd07aae0fdfb564974438ceaa18a6ecf8b32f54e7d25a999f49952b094f386339646bfe14faf5ebffdeec5db17f274fc54dd513ea7c3296bc7137e98add9e6b09dc87bc97a726ac4441f4f52210dd22cddc54198639a05dd1de089990f1a465de4ffd2086c26e9bb6715cc8aa92a057d8a0131427c572c39b86a4a4ac611d80115e7b939b665331ddd2d9d2bcd9e0abdd8ec0c8e6d53c5909195dd951c282dc16da4eee9bab867553008a7548eadb5a27add05452229b13efa4aa26cb8916ae88f523075644cf780e6bb6cce14ff5977c67a66b3621a22f66a1243c1feffa41cdab00bdfbf4fda86e5709de20f389d4a691afd9651018cdf3244fdb36c352ced2e967cdad69df062b23f3a9f28062058fa99d6e52e3326b77bb730ea26fc14118cbeeaae0572fcb527b462b1e6d75701a5b6924ef479c8ca3603ce2c74cec84079fcbca7b15c6c0f1ebcca0a76f4e001793f4db875172e8e0752b1e4565372fbc2084a3a71da1c7c8bfac7a04306dfd182897fe1ca4cfc811e62e2afb76cf2e2c362d00145fd9d17abbb5e2d8d9cddedece6250aa6aee5a9a635aaaaf34a415558a435a3eae462d911ff54724be6be4cc995e9e5b7a4e56ae3c0b5d4dc6f57c6c5476f8e059d34d775551a9fc2f3dd81c42c235ad07f25ecf23d9d1cf97b8d74893a5b15ccd152596e3fbbba2256c1d7e33167855b109f95811a84f2d0db89753a67d5cc723cf6304a54048d6c5315f0c60a32f35b7879ade1de339b8250287f4ad2e22bc7970a6e199ce7a8146f3c05b29c60b37058821dddf1a82fcb228f5106f8e3dfdb23cf33960f911aa3290892c1013affece3d218213a4446e6c96c967036ccd251e0ad7a9c5ed059a20a8b353004c2e0e13878455f0dba9191b15fdb0f15af3fd49b97d7752644b9df7327eb683795c8d5f8d9e097383de1cb39e39c4eacf7f241d852ce26ecc322327b5cc9dd92d9838a38495854da4e73460bf5a44316b950fb920b69599502a3e391a45c1ed074aaa0a3bdbdcbcbcb6eed2462380c1b233e73303a544b958ec3ce04ebb9230f49ab154e1cfa1c1e85870b40e4223dcbf130ac8cfe8541e5fae7746709a936afaec44940b56f9c5ffdb4109608e0629bd28b1f7e8923b9ee488375dcf0fc4d2acee031774fe7205ed6add2833709258d1535133f457f5d76d851db5ecdd38e69d23a51dbbbdd4e0067af5568db0e243fad11bdfa0110a9bb5dfa51c5ae361d78b4862ab5cfcb90ca33b6cde01b3840bc1e977e32bb907dcd07690b626f2b61aa42b3becdaad73f09a86f7f93d6e05b57bbffd4963f1f6d19fbcc7d7df916cdc2d9d9bfdfc894f013563c9bcd7e602b1e4d0a9f9dfddbd88665ad121b728c228a35afa06d6c7e13cf342ff7b7327b737c738b1b95e3f65a4dfcebc0d61903953699edd52494d92d6d5bf853a89348a0427244a21e11f8f5c121221eaee0efd4c6e4b2258379b859dfa0c5dc318dc72cd5f17d353065fbfb1c0cee3c59687073f915c20f6c8cd99a0b9c01957d689b198c638cec0866d772f7c7c0d62dcadc9ca5db5cbba397813d4f7143b7e5c1a3a9381e0aa576ee2d2956feda31c3f57c491d47a4b8cd3336980a9ba798096573bf96f9d3fcd0ec27d4788b1781a17aa465a75c2d7528958d0b31a74804a2283bfbb7242d0f0116e59007555138205825413b7e95a564f05aee9252d150b85252471a25e331037f1d3b6d34c898342b2c39637f4bd54594ddf0e7fdfbee148064c416a3af4068c2f5a2023051c3b62310e499195e588058ea91037f52525bbeb06be3a3da8c51c70aee0bacdb3083bf65bc1808b9379c021e69c1a41748ce78216f84eb6bb56b7052c06516407d7841a08ad0e64891354c7b572758c601570d3d4ce0e4acc0772f58ae8b3a8e487246a47b2d5809ea84c74b685431c9d9654a58ba9ccbd492da2327a573692fc1e30f573e7262996deb1cf1eb92e5abd8dc4ac7127b62758fcbbb5839dfa19a18ccb9e0b77ff8c5304eb223eabfc366369861d1c9249db23c29d8a87abe35ad3fdcbca3ef6ed3993f4eedb93f4e2b66ff1face064ce0a0a0eec800deb86bc5d5b40944e9ce7a256d5092f705c86fb901eb9276abda48b5818785c48c80aa0d7dae142b13070989cc242b0b8b5b98901f8ea8aa23715a1dc611ec9dfa3aa3844e6c0c8840cf43d88e80ad279d099a0c3fb58cbd57575f45eec84a3abeaac7210cc66bc91bca834a9a6cf62d0915604183a9960a988e6cdf2ef317c4a14ef0670981a911e4b49888dab2be23cf426cd621ea02aa66c8d1650731bd7fc65425e7da0ae1b5992f5fd46cb81c34ae496cc8f14e13b7d4916e39619a42eed9096d5604b700cbef033d5b8572a213a4ee55c2f8454ce135a30f2cb170aaafc972f8c0a428ec7901745be02f8487d94d0e04f0f108e550f3eb7a60d4bcb507979a0ba4c3843fc63696402ab9c6ac37c8be3b1158d0de105122aad83a4a71967160e0320c25e64e210ae309be7ce9e98145cadf984cbd6ad78eef5ccf4e023e95ff8d938107c0fae2c841268324f370cb086218106308a9158a339fa9321f4793ddc75ac6a40f54b0424f29ee6032127d4df1627cac2560a0b2babb5fd8d3570b7cfc63e1e31792a0bb60d3aeefe49c7c2ca3d38d9f1a955b1bcd956e774b1894634a70bf86ce2dfc8b655e2b59e3338410ec17fbd8e0640172861d77cb8977401b1b473ba40139afbfde44e31a78beee9a9f8717aeacf78c27f602b00eb82ea4f3167ae3c32aa83bbc2d27c6afe3c22ad29e5d3d60939c29ecee9a2c6fcbb6a6047daeb644e526943017bfda7565ce7b4184e7102633d29fd1ec5700a5f24d0559df5745e666fd68a845cb88165789d7280c63bac5da21c5c84863b0706d7ae4a7aa40f1631095c9a7071aa1c16cfe15b01df60fcc24945584aedd58931d16646694106e76c35b80d66581f6f6290da2671e0a707255a6a322649d1e27278eaba2412f259c255afa09e133be8f295faa21386298d9ca2fe8ac72b304953079f2089d0c9bab1c9e51fe018a08c2e0978597332c01358d7f1866b8c701c8f1d6a7474c8e965899763c9e4bfa597efe92408e5c1dba7d79769891a27d70b5fcddf9bc6dcb58ef85050b0ef96b38de445be72d778a4780910b8e8e3329d538e171ece85c347320409d716832abba24086c565a4dab386e7df98a8b602786698a818d8726420059dacc107478b61e9c4e9aa9b0ba4982106ee3f5d73d75db3b1541854a4ad40da41488fdcc36ffb0ff3ec29e1c5f20ce83bc683b2c068e96124ce8db1fbb07e7447d0471f13dde918859ddc4bc9ac6079dbefa8f11eb160f8e155ac1b4ae138e62ff4877343b1655dd3db5a707811ce2835d37d167c1272c9717a3d3e714449ff24546222b879d0c7374b3ed5181093e0c3db17719a9f260ce3ef85e61a70d53a095065f00a1cb8114fb2214ec375b7ad8a2dcbfa70ef614731bb30dc707d4f67b3333a3c87630f28b41709bbe41d712ce0906e53eadf978c9ec34392a4e4f80539384044bd3c9b279cc1d357d98875ffcdc937e489bef112e2e03be9994ceedf57808729bb24ea31fc78663c7adb073b3b3be45ecff6681667ca9774e1517849176d2c8ade8aa2d41bec9055523ee94a440d5943765cd692a09a16ed77ac9025d1995194fa99d1f3b017f2a92c7d89bf5c78453dfbb6ee10531c2249b5fe6197f494757979a9cfd492e3455b5269b3af344ba1b90911af9185543edea7a4c8de41087e1b6f598f7c3751b89ed7f5bc0d5cb9aa9716f0bcd69feb72476e29c7a628b9c1739c341eabeba920a3c4094896584fc4f04e9c1067c57a22c85671029289d61331dc561a1c1541ecac9fa9520b3a21153a788989609a2b3228729a7248563250a03703488b223dca583a1a1870c206225159c230490ba6f4137fc9ed54f4a5dc7cc6d2115411ff5656909ba0190554d33f29422aeaab5b39428f5629ae2fd5d7f7c32c2d68827801b129d2c4422047a7b192230888503b1b8d19907f228987e36aab82a9586a5930de4111f829cba86448c5035dc1135bde3e88bf9d65a06407bc155bb6273a6089b44679b66879eb02d9e4618f489af63be59c12a70498753e39c142bb0d8915f49cc5e8f42c6c72993408fa0ad4fd58c96af2d1beaafc490639cef004d9ad6c45fdae381359f3df02baad236cd1faae2d968e5a47a2bd1a82e5c58722a7e0682c73b3492f5bcce785eb04769f0139cb46e042356769b101c8be05ac23ffacbed989e8c65e1fd7adc89f73baf80e8bb6b1496f21a2f9b027fbd3859fed9c59f582330f56798afff60f4e24cc7acede897f552d72644e56b193eb940dcfb9d8b8070b482fc03e24bce09007f6760c6830b91a37597442221e1553b82a111dac728e9ed2381638547483f4830f5be1beec4c47038fe529e56f6831d5a74541a6a33a697d74185f0fd29842792c1773d25c27a345cd988b71e07cd55470a369b8c87e602be89e94db2126f9bdb649938d9ffb9ebc1fbe7f5f0ddd4532f3c477a597a01722e8da9fe3ce805757448dee5e2f36bc12adc7109b594edc96e1422273cadb53bd253a44ef49905dc49f427fd9b6ea03a6ef133d6b8399dc7ade4eb81368089766fc99bab9f24fb391c57c9c26059a592d830340116d0798c7a1542d1f13dd9591572fb66844694040c209c0f8775740ced6c2b2182b24bb94a5ac938efa0270c47d361a599241e29549a02b0c20ff0bfbc0c06fc0e62ef35de57d17ba54ec9ff809e462065e8984d102b66cf92ee17079a3563a761e7e05172ddd245d2c0babd0621965e09a964b8f65947eda9067aac377cad82696f76243be71ad8381e792f187f59c7f43e7d67b090fec42f2361a6d79ed98e5486cb3bf57e83615d36c12af039ada5600152416d9c6700a2fe9a2045561f08e153704aee0b149737c840a2a26736c02d096266d2c95616bb7c0a46ed43f84fb636f3c5157eaaa6e6dbc9571ff15b1f02ad5bb16b6d2c0168b3f6d1680eee48a8144d40f4b89960113d8bdd3b640356172ae426a9068e9d161a497f0e6c9e3c89b242dbe8a3f3e78127f1e6d605942079e3f9fd1f9828d4a5e47db59461a72a7e5fd6ac146b69e50313191806dff1b456ac540042ae2e37d8aa51f3d1677ef8e0da54c3985480c798df1c4a375ed76f1be20760b40cac43967b975521dc863e0802429a1ea644a2866232ab285cee1669f60b775729d67a3645c75a9a30ed288958b7fe38997e5d1036fec46015a49347aec1a9127288787de8e6abe4cb953c7e96880632c7985b29c02f9d25c1994ebb4f42ae70339d0a565a37d5dec84f4b4b2f77772409e92d67d022e4cad1df23052de27658de4df59921a5a8782560769915670a497539b33f0cb94e7ffe7c84d1dd2fafd975fd2bd07a4afd2a4c0c6de323d220f49eb447c915fd2cac00c73e6c7ab29924086258cee801bc8817698d3414e0a16f4daf758fe89bed669dc74d4ea66836379c2bf37f5ca715651b0cad7def9cb3cbd77afcd1739a323410c8587501d7184ea8fbe5fe4a4f92741b41598f65d482d096782ad7f01dfdb14d9b5f7f2d9ff9cbe7bf6fd8bd3e357ef5ffce3c55bf43f5d82c483fc5032c71af6d2ed5ae3cfea9069f461f1342dfd6702110189d5560b48d36da5fcf673c068c1600efafef0c911597fe06f635b56c2feab2b6cff9e38220223c0392367c7fca7242dba05e30ad377c770d1dfc9ee81f9f55fe440d0dc374fbe71fb52c952427a631e3cd73b1aecaa96ff31049d6eca5c8bac90993035397ca9da8c62b2e389b7a43ebeccd0105549c63a5044e8c8b7110af5b16dd7ce9bf16d6fc4bb92c473cb054cc16ec6dc68eed930e778f06c18d0efae056563b0db0838f8a9128c3f26e7e64c6c59b29c1eeb2c24474453b24c23f85175246bacff982a810d0b7551442ed60199af413c2911af8e7331dcbea559613f07d3ea0d495b8dd28f633d8959cb6522cbf43a62d5196423c1fa035b299e8c32a3bb5d5e93139554aee444254b7b962cb59fc9398187d2c7d5042a255ceaf9e5fd753d1e23c6b46344627f93670b5b70835220de8a8358ec656816c7ee2569dcb1ad2e0ff3655280c236ce72c0dea79c2cd3e4d7a566253b7ee013696caa934d992faaaaaddbcf2d8b9f237a6c3669cc4ecaddf99e787a7a0a986ba7a72d85bb0fa12be2c3d6fa7a98a0744ac5e29cd1df56769a8ded05aa6df4cdaabab6d906e7a6760f138643a6f35e1878e963e00002244615f5553d3f779cc12d60b99b7511d6675bb797a4e447fadbea673cbd1b08bd66324c348919e714844b1391627946a8147c7140837bf7a0d8fdfb44373672b2dbd5e5b6a4e0ca68806ed77782d9122e7bd3483abc842a2571caf7ee098aeff2a14cc669fd4a523b1ab2cecc259c0ce902646c3626672c4927cda76f8b62d599b57a5215430f5ecaf2a4478659cefe9b7f8779d712ae3e2e39024fddef2d865fbb018953298058e845e427dbfe449b8ed5a3aa19f2f8ca5cecc4f61d699877cff9a55832d0bed9a6e2582ae2a911404655808ef8a2c06c360bebf546ba0287a82cc4a2814cbf0689ae43922eeb9241afd7bbbed3f2b5bee238d6676b1b8a76be811429094d0b048a9977fde9cd41cc399b348a7e02c71dc6d53531e20bbab9b9d4f835b59bf976359326b9616c2599d5f4a787e13583b21133550fcf46ce5df005c1a942a7be6a96837f4d9c4a15be5cb0ed5bbe2ac0387a8aeedf273a35979be4422c7e897fe79df1ebb8e596b3d96977cee659f21b533176c319a3b9420e813726e376cbe49c844c12e472ca529214847d183236e264f0f2d9ff9cbe7cf1f2f5f1ffbd387d77fc7f2fb608ae30a51798532c5b168b65a17bd78c898231553312967e0e16f54ad00f5952c222194e72c32ba513bc983b0417165fdf9fb3c07b559486cfd22ecd8e2219eb9cadc2c823897d071f4c8702c3cfa6f058905dce0b47d5f0329077505e60416ec781781c610041051425553367a3e550d2c5d3972026afcfb838b98ef046ea223b67844652d583bf43c2c922e31c40f2ced8908a132f46d9a2262298fd2c4947830e24615be6f96a80b12a83d3ae84a935ced573ba22674ca5e927399bd07c34631cccdaec031b2e2532c288e55df2d26b87e6983a4b931b9c767346f3c9405ec85961c9ca7cd821737aaebcbe81ae58edb82a8b295839cda2c11eb01149e68b2c2f685a74c82267172c2d1489b99ce76caca7ba4bfe995db20b9677c8a550f4cf0d419ac22a5e20205896134a381d030aed1908200c3498b29c11317789b586382e4e396e8be4087c41f4d0e56436f7370336f19379ea4195d50aef432355cafcd43cee8d4b07957d7c04a9c7a3bebb26b9f808338bbb09acf2e1b7ba00d6f78ba4ecd214d120dd564da774c29f67f37996a2a79baaf84d59be6878f0c30b375df73399fedaf3341594cf84ce6a77bae756b1338ac7f36937acfcf6c5b3b7ffd06f610aff7aa2f03cbed173f6d54948bbed12bff20982955ad62fa159391a70167cf1416c7f349fad8468d7226d48d35621e407664df55c05efb5f56702d3234c6cd4be30b2d35c034ee84f5c73f34066e60665985ed06406f1a836142840cf9a59b95f954a7d84c9ed0d231e9ec010dfb102377a109910cd83377cb62036642cb6bbb271943d06445f596b4abf7dfd937ce70e58e86f19671a48dca0bafce2a1f12ae002d9fd47be09281e3c67e5f01f7909fc897a028ed4b2d85350a933ce9ee513de568f35a6856cfc3120c9b8d64749eeb1474e5ee823c2136fcb263be4cd8fcf9ebff8e7eb1fbf7bf156d0d284aba7274f26d3a274929c09fa72fd04f993f36530395f964f0ec49d94ced093f2197a526386be2c9da12727e52b86e6933719af5830de14fd75fd144999a48efe556daf061abd83cfe96cc6f21a8b554be3a0d1af4ed467f9eac4ba9a36e2ebc88a2192e53ae6f54e555793023b9ba54c2856695668bcaca0cf40fa6f27d173917ea7dafd5bc5d741f395501b30d9b2141e2e134bfba6a1b86f79d8e016eb6c7ebe926b89d4888aeb7ace4a1b967edb97e0bedd73b6e28393b64ccd523b2d4b666aef58aa9c50bb30ed795290241dce962388902e07e94c1a219ddc340067a596842c5806ba591ed66f1db8ef45184ba8a86d1588129e8a6350c3986fd041b1b91eb00702b5716d932a32a1356358f4928bff2a7eb113f134778d2eb19e61f3755df4647136923dacfc689983d25266faaa81e8523275f58196ad70db4f09b5ec7b414130630fa03e257ad6c1891579ac227395a1cc255d15b1a6c72ba1ded470cd8b66068f5a760e0fd5594682ea16ed9472f1b0d10062de9a19b24b0e880aff24fbc11d96319644b2e04e3844b3a823b2bda84959f09be5b765ba2948990ee9ce781515402bfa2ea8a8205bbdad131f479c9cbd3800de5701bc410a0437cfad1e939f24a198b2fc194e08764f113c58d34328e7755053f33a59dd39530b689ed891db7e625203bf239697e42c7162e91832b58c9706ee8f026ebef41c2b5414e6edc1b9c91d3108439db022ec6036ae83036bd5a85ca158d0091c0de5b115ec49be01776239a423850ca20988dfef66c990c9d8d2fd0ed93da80a1f7ccbd024a5f3c20f87593e025b13021d8040071f70e021c6a5b148bc6333267dde353d302226392f94d397156947b9f55ad6ed5411c28c84e594e47b4d0a00c333db77aab6292a12fa98e3d494f28b9a0f55299d30e9b7ab5ed5b147e1bc573289ec888a2694c43d6dab56167b5f8026695b755596b67297bbee18330c40819be4c5ca8ed96c003ca9a4a06c5401485ac2c501ac86842e8ebba19559fda9ee939275b1ecefa1fa4765aec27562c9c8a373b61a74c832053331624d269cfcf285760afae58b4f0738597e57572a9c548df5e289d3b1235edc6b0fa1ca2bf457e32015b177557c8d30be3bf24dded546dd37b192c7630f70fa8c0db339e3649a15f2c6d4c282a664961518c8c3a7596ec4d082e549860832c99c75c449ee3299cd4891270bb8b682307696cbaca034950aa244791eb1b4488a9526e7e8a717593222139a9fd189d0e36733a63685a584d2fad7579092ce1c54fff51549385f3272b8ffd77d3ca8f2a3bdbdb3e5847787d33c9b27cb391c52177b175fed4151be8791224f93514fd43227d4d2d476d757bd39cf860019aebfda65524ca317c9fa12a0ca8a1f2ac2d5290fb84e79009ff3f5b268c3d6888f77229e2ecf084fe68b9941f9a0391843c1917e969dd119e90f382bde2773962d8b8199fcf928ed26d99e79b7b3bd891cb1198dc803755eb9a4094a1073bf66a7f2d51480cf87d4bd5d33b38bb5af6261af82eb7392c08d4f81c3f39d7df6bc8997b320768ae2c33bf3fbeacacb36d181fe87fa4e9e6545d710b2cb5680f1bd0bc0f8060a8d57a7a2c06d1d1a19f0c6e7f535df2a08c90baa491bc27bb7931efcfaf5b85e9dd7239caf5ec5b87fcde4c93531c05cd1f36488ea17daf744018d5d6eae092150cd87f559132a2929360c9434d3a49a6bfe690cf8ba0bc51e5e4a37cd268a70fd3fe77451994cb4eaa3abe9af7063e38837a44d3bb24ac70c45277af3144739e73d6bd03215b4b328ed6c519a7879cce7723192a3566fe28848a65755a7148da86a7dd5292d5ab319723911f205a155c19960a036de01242c63d4dcd81b5920bd5c5a1c6279d8880cfef9fafde9f3d73fbd7a0f59d2e1430999076c0b2fdfbd79f6caf22588644dbfbe18c919fa7a35f4a212d3805e73752c435a36449c5fc0ff9bf4c8be7b74a0bc788ef3d4834c340e7754187b7841e70b7de478955db67deb4ccee61218af47d42c935d48ae395f905dab69db0ce174088a06184586f0dfc9be672911ef1f3ec4b1fe1ddb854f5f96c0d9ce2d510ab21801a2d6b3b9c6c7072c6b6853b1b2afe956afed0fc6a7cbf178a6fdc1e6cb4262148f00dd15c56ff21b8a73ef507a9d53b46cb7cae69afcc67af691555a5c4b3a73bdb3b4ecce3b361babf33460e23583482c3f6057479d4bbc43ed23669b56759a270f0831b4fbb9fd95972d14c005c1cc4ed35136572766dd237fd5a92b513c718bfae1391c9eea328111d133877a17a566084e1e2b0f48b1dea9dcdcc948b50d2f659ca0bdc6f7071a60c1a865f2cfea6b98c80d5a55477c250d1135b237080617fa224ab4721f2db7fa4a4d5efe0ca7347f9e8dd8b3a2bdbf032cf6f8892ab6f78074a137f8b3e22eadd52af14894ad18ac823779b678053186a6e7e0a6db9147920ef9759915ac43f8f22c02006cb70a05c95353d26ae7051fd2057b3ea57987b4fe7f07ad1d72a4ce3c5757e8181c01672fb9f28b29c095977e7017a9f27340b4a87c91e51269e4dab77e154894d8d61536e4b29d1de817ea8488e2e75ff25951533a5cd28e98ab113259bad01d1e45ea315dd20055b7f62122e280ec99ceec1ebffafef8d5f1fbff254f496b77bf55237593f97afa9867453e0db3511360b375714fcdee67637d886d4c1a66dbd3c874c459ecb6dccbfbe12813eecdedd8cadd482a527b54d374bf66482560085957578a7cbb9fe0a410c3d5d1206903794618c883558d6f59130ea7ec60785387bbc01b558eb59235c2b394ac163bd2c1def3820ea7704afb5ef4d516ce0b9a84a9b2952ad03aedb6c84322caa096ebaad3c6e90f4a1c8023e53d68f0587ab7989e45a48786ca4179ef05f8db3e1b81005715799617ed5a0745c4d9b38d171bd8e86d7b82fabb29ba21141ea9ea951f5a9601e03875c8f64481ea859587db0a6b8d096bd530f4a31d055470f3f9b04bf22304dd4aa2aacdeee9a904213a3ded10f37038a5497a7a6a7f33d8d44f4f29ba919f9e3ab746a6a67e1fa90b5a25d434e5e5b3b030464e79a5d5c37ae110bb5bfa3fb30faf4b0923af2d39010c670cae98e4d972817c23d56588bf487ef3525eaaeb5aed908c34d8054b67ab8ebc664de98c0ca7cbf41caf2cce98f4599187624d4f7524b24078418b64687ecf99908bafc7e4d42a93a443461e75f7bbfbe6e190166c92e52bf46968705e5ce4d99071beeebc28dd72cc24313a9ce268bd9abb16ecc66449f3d109790188505c8127d8b02e20c4bda80f270b64f53940c3d08a2e416fec91b00f74be30817dfac569178ab6fb2ddaea90d699f8cf50fc67d43ae99043bd3a1e90bd3dd2fb3be9eb82271dd2d7454f1a127e5441180a02759b704c68610bd659ba43609a3dc105cf20f4d8c1bf89d53b8a1c901dc9268fd10796cba96f7891458ca350911da7059bb0bc0de767c763c9878e738ef91e0cb47d968d63d541c88268fe1b72503fe9956d76d8f7318e8fcb5ea0c846b98a637dce9299c29edb435b41e486bec2cb49e67654ad3e7c7822ed0ae857623b21c87f54a685fab9946a0848b83ea0b319465eae54706ccee6d9051b75cde989abc0df0e1988ef3430a015837df1f0972f7ef942fc6b7229caf0b057f4d500c19da0896b89bffdeec156c41fc4f5d6ce48e0889b31a44263233f6562a5dcc1e6dafdfd0e39e8e04474c86187b45a1df2e824141007f0f651b54490446390deb52c6b154baee1ca8865145b8b81ef5ac6b4d5cb5586c3888192a5e387426c23e5a0f5e187592a984d2cfe74a2f5025c3de98ad0d12841df752c6f427d693adacbf2f2fc9af579fff196b67e339488b9b8dbedeaccdafcc45efea535d7ad1cabd6c8b3d995af19e96b059e50fd8393af9d170ab4462c2c415b49cbc30e81d89f7efff189b5a874dd6196f26cc6bab36ce221c2f80baf4304894a02aec3a621b066cd427fcb01f8dd9cdbf5515acb773b6a3bbd1a63b96ba75653eda4f6b60b248eb5bd64a7f35cd18c4bac68f0c421ef19b94bfcc720fba0c2429372ee69e019478e481ffe3a41cf4c09470a4ecb1d52e997193b30a8c52df93ecd7454c9882429c61703032ae04767bd63e4427ff08ece192011fc1fcbb30d825d389d33e8c16f2ccf5c67a2183a05eed4e8642a765d7dcb0c11d75250cb11d991d02356b07c9ec80c0dc66fb4c4c86f1cbf7e4a95debe58ce66cf8442809e60d29f4149054b88de899d3fb4001bc9276b95483ff6019860bb3a03678c9c76c53e922d8b0e39ed7ec8f23a1ac52819cb0fdcee1f76c881907a8725ba444c22014696a6a1aeb45410031ab1a454c53e9742fafe989cab1c117a850a62df991e4a42f6da44a2a00d05743a80ecb5e3e6578add26bcb7f82d31074933ae811f1e4687e227270375129517b59aa4e5ac084b4d1c7795dbb4251b40b1c5310cd02534057a688aca05f5244b35d5b3958544d0ca99caaf3fba99650b440dd6ab1912e82b596a50578f3445a969355af2dfae6e78d16f4be5d9e6a20fae2ffa6aa67ba75de51073e27d0239ff0b962b6ebaada387590cdfaedafdc3ee41871c740f415c741f75c8a3eee3930e79498b69773ccbb29846d43d0c15a1bd3d74af3bed2e34c4921e2d78bd4c696a81cbf8fdf89db43eb48ec821f9d821f2ef03f251f4caf9d5fad00a3b64eaba822d146bdfae9a09363839a951f4e04e5f0a2a3fbd7a28fb543dd7166f51abe3347fd3221552382bc390ee72871cdeacb04569478b2cb7fc16411e5ab2499dca73664cb696c42d322d703da1a949ae119e7584a6e9696c47c06c3f9799d1638f8099fe45671096f52f3a6b26407f4e8ae99f22f423e99b793ff1bec3a7939d70d284d523ce4f5a3075486be589ae43f94c08adf0d469af11f1c1659807efc4689e081d30e12f848a5f2efaacf6d68840d1607321684d7f4331686aba82d0a1783744a1e5ff67f57aad1c34d6213e4b86b6ef1cca87413a30026c9467904e44e7593d6393244ded00f2cd0e435f6e655197c441e93ba0545d0099c0073db42283d1f9b56ff51ec8ff02f534a23c5bb4b585355c648ee1b5b45ef4c2a856bd2fc37a75aaedd7b41213dbde0444e40249c31ba32d5cc3d43746a5a4871d205757e287e79879408e88b93d4a03df84e06e2425df907dd9cf54a727a963d6dd64e1b23486bc76fb17b7ffb14b16f1902ad6ad7853b690bccad1c57b50bb7283151cd4adbb8c230b19697de6ab39b55db6d3b58b7cdf5be79bad6f544193745273819317aa189c1b64d1655a24333258e46c9488f53bd0cababcd9445803f59a24c62aec9e20a63963ce19c24d4f838ace5d963696e6ae871b583fac947546834731521220b91d712196c192b31cb476fd9408655d3c6e1d91d619cd53b66a750869d161915cb0d6116885e463275e619cb391286e57808f5e5a63c1ce84046d75c21aba42fcb0a056facfd364c6da3012e35ad8ce76c8ef1a8d3feb22edaf2d5f3e2556d4d145c8ebbe1a71952547e23eaf35e444fb576fe4f53ad991f35da3b36fea5a9fa29deeab0eca2bf97053693c89b5cd61d10ea9fe349ba78e99f37a7b08b62925ac5ec0a1851fc5c0fdfb6e64091ec01c1ab65549d3eb90473b78d892472ee768b575f91d9eacfe94e2ff7952bc5a286f478ce34eb15e8a6f5580072bfc7a12bc4c781bd1d25076974aa2ed08ef6bc9ed3a7d6a22b86f5966dfb6b85e27a8bf4f66331e35d2e3395a867681641e00d4d9802c17a4c83ae46c5990342b2c892a057b870c583a5a9f965f5ac9555c6d79086d13297bb815293b4eac149f6be2d0445967d6d68225eec700122b6ab1741489f665e92856b96ea86f5d7f2d79a08d09463172c5872d6aaf9a1ace55e8362dff133b720375f40d12dc1c39e51f42dfa28602a8dc7fdc214f3ae4ab0e39d83fe990d683169891234edc8fe55b2cb25fb98ced512b2067045164e9273bc26340abe0a7fbf7552a25fc7dcfcae487c94823cee4f6385c63bf82b9b483f119044e7b597e43b33f58f12b276b0dfa707843394ed2517037995bda894c863b3657829aa472fd88a98b45be2ca62b10ef12fd42d150b59282b3d9f85ac2e9e0a6dd9eb6ab04fa5248ec01e0a4abe417ce759111ce683e9cc226518e95e46a91ee7702d8288d4988a9a9760ffe03544bc1cf88d657a55a665df116736de260623ae6fef5b5c9a03be1a4acd7250fb6a72d06fd59af2d56cd425dbd3068b6542f3cacde2814195fdfeb10bd986e7ec3b0f0734b82677467bcf68cd1d774d7bf359671012e568c226c6289e4b81eaa13753c94c8d938bcc9ab507413d5b3e69b093411ec28923d38c0416bed58d3135ab2011f94da31a69b28323263e3585ac7fafbc4e14dbb79dcd63e61f3ab4205ff8c378dbb6255167cfba3c2a8a9bb71a8d6623bc7e176768ea04fd5b6089cce4db6b126db47d0a9f55b48d57434d94282a64bb791fd75db882175c7b71207c1c9a66af6987ba541aa8a48c9bee3173324f152b16ab77132c0289c271340b3edcd481a5f2aec2ee8ddc48d173ae1493a99313263176c46468c2dee448cc5183bdac04d4fd668102076da9575e072bd0fa15f18b5d5215f9e948654da852a17908e210a832b9b2c12872d1c8bdcf7760b1d72b0ceeaf6960d97394f2ed86ca57ab72dfbd77654875bfdeadf31b668f6e51f75c8e39a5f1d88dfda9757384c1b30809604605e2583115b14d301a2695ed36bf8f10df184aff9419795cfd29c7e48e6cb39c971a8594ae0f58db2946fb90c182aaa4e2946591453b3821bc89c35b462ee4956646a6d3eb648c24c7e2a5323344e7aeadf4a6721ec68cc33c85b384ec1e8110e226f58ce9944e72cb23734c9f9e0ebb8cbbdc2c95769f84c68019cd6ced96a172df8830590b97dc77c6857e526909d8167756192c41af180c52ba56d9ecd61cada12b304020d01b8e430226a7f272d2afdd9cfd09fbd924b357118424308039c0a9765712ae210068854f0fbc70d900a0459d56208cf29e108249cd7892c6805ad6f0041a0d36338595caa416337d6f3e82ca1dc337c6fcfd9a02c3fc6da9155f1e594d151852f68684e5455c2b25a1055b12a54f6358235d7aef0b3bf1f4b9852f5c5911769612246e55465c3e132c7705d315bf29635e1d2aa91686d40d3fc64b1e8c76332d0272de863ca267094ea20bc276425c7f4429a5c361e7356380e9937c4f0dbb78ec56f7995b92a8b6437ba852b12b47c8cd41d5a136bd7691728bd1eab4506ced531bd246ab97f677a8ee90e0c3374d7b7116be651d5ea5474dc3bc33b65e3b88be6f2e3e8b4ad338c83a0a2b319f87200821ebdf11d6afb9bd1b62213923429123aab1d9710675fa47173274edfa57e77adb521068cb24c935f9726b2734a0b70acb4c151045ffc07c2a2dc18675bc1b538a12786bff91a40eb7511b130dd9c0d01d1aa01a280a997a56bc147a29c8f82d150a90850f54f0573404655ebe12595761ade2143ca0b2fd4333844626da5a2ddbf2f1f4042ec9ea4c9c5afa752405a23c5a21bc7c9dbe3ad014ba2c90571f2315812f88d62eb0f8f47726347ec0dd6da27c402d9c6eadd1011e4b01b09956b7edde5f7248a031222845461829406c4bb6d3590373e1c882ce418171acb2447bbd30df4641352d034c011096059a59c5b648b3812f5d6c4e10d008ad41394d787140970442c61679d49af8b23521e3fd21447e46e0bbe9b47f0d84ce25d13c5c3e04dc6aa1fd8d2c902f1885d19d87cedc28020f93ac01f761b6be5dc1ae88ff5981f5b917558cd212e5d8ded673dd252dd6b01c2a37ee51acf6cc96983767c1ad9b72982884aa3224e4b5a3019fb1d62d4ebec379c0165943603f92b8b265af82460b25e9a162feb535f77b8d7eab4641482d45cf5abba595efe9d81d495f991eaa83ba2463b805b6ffdbf508768d1ff77f6ff86ad6059e96503a4e4195af7bccc1c6c0eeaad96f623f9ef2c49314f4c40a68661f8b3b4b37846ff7563a8fa942093caed2c95164223cfb66e5f4133bff10baa69ef2fd57ec02657d3bb9464634d50098f2d3b967e1ea6f31bf51abd961d5d2706ac614b7f143b55d5b4a557b45369b62f5b2d71e3f09db2a94729de80cf6072e3fe822a299bcae6f6946072da1f4b3f045ae9c951dcd5103416fe8abeaaeb5aa83719259b85d481610fd2812da8e16a2ff5aef440552f0c88ae22e25ce5255c8e965d0f48e971f7e066f6ac1049c9b990f362bb748af31abb5e5ac440849bfa264592cbc4ce1969954752ebac555d65371415ada1ce4517951656edb45950f22b53d3c60adaa9b783be851c25dcba739067740c3c569e71dccec174fb1710c174c7e04025feb70705ea0739939f3894c6e42cc6ee01ac281e19bd00a640dfdd9cad8ceff79d883229cb0758997d02c7787351cbfefa72ce0cb195b6583aa1cc50b0613cf399cc2f15595fe078243651eb082f61631b58d3448d522b9a7db9573acf958c6ba1ff56f3ee5d38ab96719dac2167e03360ba6786effa8af14eb6c1798e5cf75a2a4b031017f0f7efab49d47fb9b2ff4d9cbad4161b9f9b54128aba80ff31b3eced01fed7bb0b6b86c96fc39effa72cc6dbbb7fdb70799b7b296366b6fe7ee4dd6e552cf86f577ac947883e8a5c8dd590026550fa714960baa0f09535e8fd8d4a85ea4ba61b9217d60553798a90a698f537712d542d0b2208f3db95064feeb234d8faa5d435c540e4d6e9917cf6d87af6a57cf6a45a24c02d9227142c722550f2f5c542acbb76d76a880cbb8b6a3147ef6d6e446c94decfac9119ea64e91ea77432e02ccf195f642900128a350e0602a118e02db28a26d1f4b4922dd36a56a4028ead66baee60789d15bcade8bf8a235d1b4d2a57f84fff6447ecd338659681055d8c6caceadaba7770555c3acf5b30b5e883195c83cac5a86199fb07eee544239d5ca9f29595b1e9328d7e5479967c56901e0487c57341c8efb0a96d371e7123d6a7991fd5843686eae5ab8be89b6559d6ceab9f78b6672b5d041a401db3eb0e794a646ccf11b66c6cb03b98e45e6edfcff890c17ade097c06dd509dd8d1db3644c545066817d5185246583832c4f0b44c2aeef2758055aaf6354dee5a58a531698489546a9aaac0fca0c915195a34cacd54d0ad3b6da2ba3dd0d4ad4a341303ed493276c1520e820c9b50ab5063835836dd076655a4e4bfc8a19005fb86dcc7cdc4de4134df865d11fa1885f27b5c61bf70c713c3cd14e38fe73086bba976541bd989891f4748945e5879a18c6adb136d57a469f62fa0cd72ef95634adc543e66dd48548244133577174b3e95a68caf23e3c7f7897ffb164be01c6e16c17e5233c0f22d83b86083a5c13394d26168e2191b667366fc17f0be8bb36166e51e8b15c622700b0fd58464e719b1044044d056a09c028184c32c8c88656dea0f407cfc25c741c95b0d7eb4b7371fa5dd24db83d77bf2f56dba163690afb788412a27a24c203dc2dbf38dd23ffb75636723b7f9b50e44f85bdd2d4bc6b5dc88364b895181cebb312a6f22033b0d1c66c0a2d08f320685973b90332ee54bf0b44db97644b5e30db67293bcada30f74fb6e02f856c6b5c57893db91627703a2560cd900d48a5fb5e069adce6f084e1bb8d5abaaf2df92404e04c40da8c37f3de00b398f766d0be2b62c6ef35dc9372a97033f71100267494af395f2872a32e3c98e9b5b76c978e107a0cb40734d8b4fb3e56c44cec4b19db3bc80f55e6496f3aa74a917429e2669419394240527e2bc85af3ea5439ae8854287d9c02f0deefeed6bf45a8e64fe644626d1a8d8f66cd67231c321e1f9b7ff68bf43bedc3fe990c761a6a94aa72f9b8a6d470b3728e0c1b2d28d2df156bbd78e8b53d32b14a5b29b3c69b35fe2dd5d620edec09f394dcf9374b29d6bbadb53abb6cfd53778b5f669d6493c10c431bb9798db2d0efd7665c2366c0a25489a1f9a622ed78d9dabd1a5589c5c2566a44bd373372cbde8f3844150b3f4ea6e6baed10b968fb37c6e3638b3a271a3cb52a100e30ab94b57e0db7089be252f668b375e8f2147c297eaff9f441322d6dd6a3cc7d62de99925160e658759b781995a36fe86b98c62bfb66d2389aa19583fd032edd89de3760ddfe5793bbba79de3609a4ca68cdb89576acadb52e54e93ba0925ef9a47b33fac9267307d6bacc1c7ebd7608011bc81cab7d6b9bc9275750ffe54feee0eb7ffa9fc95adbb6d288055c92e9a29806bbb1553026b6ccd36dd9b560437151f5690d29f2ae1275309ed08a51a5b5265906648f16ea9862a3b9e0b542f8d947747255ca6c9affe8a687132623c990030723a22d9a248e6c96f36c26d963b1bc975f1a36f6a3dacbb311f2d1733bc1d1da3cf435d60711cfc4f69f22bc44f42f0e406606e1699cafb9d7844d4bba076354c5b050b7cbbfae33241b97eb255b0a52df0d2b7ab76ff40422c7508002c1dae0558820a87dd473519cd6cb54dfdb1e34c5717d42764c7001bf246e08bb7c557370e0e59d0a41219f2d0f67c897d6320e08b911b82853c305e731be7e9c6fcafe9c072e3a4e72cad4ad2bd0903dc146a4518012ca104f089ef9f2ac6e6d7de35b0ebfdc992e6a313f222a567330657e384824f9f164f42dea2f436b27b4e17839b65ca735609571acb51e0562acd4f50a76aa814ea97356a87975afd352be85c7378da21f049acb5d4d4cf2b7e4b9d921e52265757e247657a83349adac047684d25de8058cfe9661e1e6b17234bef86ffc47fec327c9b4ca6559036fdd225e1d52ccb745cbf7ef3551990d864692291f2f579abce269b2ee3d4ce6196ae5dddced2d69beee64bbc6a799317eaa5ed3d8505976991cca25ee990e36e55ee5c0eed1a6a1b3a97df1d49737b3edd1b888acf3cf1a45ee53f4f9319abcc3c792feb22ed98d154596f85aceeebc4c2aa5b5578b435b351c63b5a6f0ad6f4b6412feba6a98cf7767d9ecacda7b1ae653adeb3d2349635f7082456e1cb5fe39cebd0a8c8c60853a78c7dd73b0bad3f076909ad69d29cfd29a1ff0324f45dc9272f786dabc2d9e4ed85416c49369789e54896e07a525956dcb250be963c6e30734dc4f1b624f1ed09e16ba727e96857958e8c32f43293dc3d60b0cf3289c8309b9fc1f9a8410a82658a99434e3ad26a143dbb46636840d4a6f55386586730b06f07592439183e13ee2157cbdd7f6703fc7ae8ded671886a66f82067e6f3237d5c1529e35c74523abf8cbae46d006b3f9c66dcd651dc8480f8c593d44a4b87d7d090968eff99e3e306727c6cbcb864620f5860f2de697d4e0f4c03b2852d4777613b193d6ce4a438eabd6cf0fa693dfcdc1cbe58d097614db273446378369146359ca9b727a7ae8f7fc4076ba48c753e715268ac93320e8a5209e0c19fc9356e5ad4dc99c41ac0c85bc8a811eb6fd089d20c43ba17db48b9a185c7b6f2666c49fec40195aa848f319068678a5d70a6b86098e03d1b6b25bef3a975f28e913c593a5b95e6deb595335b2c9eb3456127150ab207253c923c483ad44fd90a9bb1f44178efba9ddcfc71e14e78632dc10febb0d40f2b3c2010fbb4badcd0ff6a2b9e57db55feadbc30556abfb74997a9fd0d9953d3f399d465cecf43f9df8e87d94d69fdd75a2a7626bf4fa0eeffea6afb51acd36beafa91057e5dbfb76d78bc6d2406b6802dba66256b82ebb71b77257f76faf5f516f58d29d61baee68d94ea269af2afaea27c6d0579ed22b51140a3c89f37a2e2d65df63532b8d55ef3bf258b5a48fb933c5b2e58001dc5c1277be81bb67306e5016a74ca5cc7a7294b72b2c8d9ee6fc942931b66e938992cbd4baf4d16e241f7f0fa0bd10cd8e9fb22cf868cf3cda0f07c823517d66f89cc5d08dfca6485d376e80ee98b834ee9654d1fab1ce079481407d0cd435521e62ab54c455bd87419c18a3eac595f82b6afe66ec7a7d1f1bc325839d2070bfffd1ea0207dc440d286efe35ac8a2d6342ce7c5c8e8464daa2528a740463d8729672862e6a27135519fcbf7c99cf1b6225b03641406aa735e629a257537286b59d83dcd43dae07bd6393d1419117b5b3236cb709a5d5a2b432a02268252d977d6a8eab6ca6f6b1d702201e247a4dded76f1cb5dd363e0ab5b942e0df47973e599a969d3748229fea4024c098c83fd0e39dcc7bfe0cffd98ec121affbef8dfbeccd77f28cb968a2dd8bbb151a12ad05144823dea9047fbe27ffbeb4595ad0b4454f6ed092e0dea694bc8f2c4dbe050da0cd6d3970858b25a08aa3a8bc56c651d322c1d04ebd41221c10d38fb2041fbc2845877eeaa3b862b0c50c12eaab0864136ebe78edac1eae4afc20fb4119e39622ec7840e678cd8f91ec43afd60a14957d80d64d2316d65432fee83a82f79344c49ac3449a4c2e85d9e39285408a42a837afa777a506192a0350996d77987c8bd953bfb5d9fafe67356e4c99098f93448952ced5e26e7c9828d120aeb42fcda7ba7ea9c9a3a6645c8386bdbef6443fbb026597270bf9e3fc961f7f11df12769c6e992fbea70fb872c474e979b5f34f42988c7536cfe014ea70d3d4efe2793bab1ad27f3c8fdca46f7b71fb2fcee7899acc9775587dd35c53a76aa1afe269adea7c46af9bcfc4dca175fe5bab28dcfb0baba4229ac11e57c88c502aacd6dd0b2175b703829753281263e271793fae267bb8e25958229307dc744d35ab7921bb17dffe95d7263de25cd05cb9df12ef990e59bfa966ce44722dbfb3cbc489a88986bf88e84c6732d173ab693c6588a9461068084ae7aef4051f0986a6e277658434c16aaa65691efe1d3f97a5fc3f0be81d5eac62dedcedaf92d59d8eb068c3f0d36ae719ecddfd024e7a5db170a7ef8bae68c97824f90d25408aa68e344881e40d9c1f76ed6384f0e6ec6174dce6c8a29443779af7f722243c7c24e875b85aa8b9d0e2b975b42550cbecf52284cebf28f548c422e0ad8e677d2a252c89ea14c0ff8440b534318e6a4dc4c21f8e9ffdcc2e4ea8af415c897fe45394f26e9bf368341d7dd09988f2f178b2c2fb899f0052da6d78566dac012f61933cf778c8118ea9ef5f74fba9869bb7bd63f38e98ed6b3d3efc84d625b1f5adbf9486a0de4a3c766658c069dd816b301ac002b3662b46b5c31fd612f9836d838b775a774fd1ba54d7766d06cabae91ac6050da21671d328c6683a3e42139230fc9d0aca030fab27f70205a3a8ce2e7c9edbba1eaeb4283f0581e4afb188ea5ff4e0e545625ded7b81d07275165d7aa2e1567fbdec8519b6517bb8b6cd1deb12fb82a9468ef5acc4ea91d6ac6bb5bfa3fb319c63db507b36c44f974402e73ba8018ea9417542c299017e229d720bd18e6fe61314b864921c58da6399cd224259cfdba64e99071c2008347ca08796ecfc6842f8753abd47cc90b2152962976c03b7d0f4eff826d5fd3b9e551543abc63bf062b3c0ebe2a3ad764df2a9dd6ed87984f58eb883c7a522bb81cca3edeaf15560e650faa03ca455757d9329d305e909e35f18474811f301079c77eceb3bcf876d586069c1773ba683be1e8d64b6260960545f290b4c476d3220f49d6a513f6b555f6a34375cae8a8ed3c818fda0e44961abca07bd02ad725715c31985a7d138d1fdf4f832833249e9e0285d35321666c1f969ad90c9dad1eb65bb197a705cbc5be9ee56e666ab974e54e6d4a6972550edc5f6b2b3aea71cb7c917186076047dfb03204fcf245411700d9fdcb1784aa32ae7070f346417240ecdb9c8d125a2871713371d3f517fd22cf2e92119369bfcd0457a90556b94019c0798e899107560a444fde55ecea169a98e1ef6e612f23cf5f0c96d2de1e7909c92649922e9685efafaa1cbf706fb31696bdae745a45fb59c9c22a0df0b6f0061606a544cf9fed2d629e86ab0a560d3c6dac1f1734d48fed4c1a66db2a618075cb82fcf2c58272412c5ffef285d2a473b698d161924e1caed74425f78b5552b2806e04bee58e2f8c5adfa362b1b408a1674342ec4d476e52cef2c993b9fb609a2fcd82f2e4fe038b05f1d87b52b662ca56478b9e0da389dccd0c891e54ae0f8d355eb24cd6af0831bb4a57b1c2f506a75d5ac494af94ce19a1453dedab3ebf75bbdd362ff2249d5ce13ffd939d8fa40f4610cf9800cf801b93e1f96dea666893203d6532e84b9b8134193c221fc9c70e797c423e46ee18e4ddc24e978291abbf7fd23d93368afec149eb64a7944f1e0519b0cd694a8ea42ce53f4c55d9710a0d4c91d394ca80a91deaa1647f5f1c9ef69d922a9bb4107fddd353a9c99f9e7a19b08d00e8d9f84d8667e5dc44fce8c421f159210b74b02796ef5c14f71f0e7f5757aa5714dae3a7a72a42e0ea8adcc365a239201b931fe96fab9f713a77a048c2313b00a6fa8c750e1a80456aafceb8bf224e14a6bec7fcab32a9e7439cee87baf70842b9bf63df22633d7b2c904fdbea129c525b472033ace96fd17cc205af5a3db4f390b7c4189ee59396757ed5fdb77ba052c2b34bf2232c2339574a3ec9c9962aee8e2b3d49e0bfee7caffbf7c93dc711d47516975a8918b0eea397443cf8345027e263591dbe5c7e288e9d804b4fbe2552138a6f4d83bd3347d1062751eb205a75badcdb23cfcc9941791fead98779b4e1c5c9a93c6eca435fc4c45bd5eb1aedd7693c3c03af398f8afdab8d3dab734e0d475175f3213ffa73ec48a0316007c5a2ad50155e7c60c3652113dd7b2739fbac697488913aec962d816c3e4f6a290f8f4ae2926e770da84818349fba9e076ac43d722ac51bcaa8473b2147d7482a1f8756378dc8bfba3885367bd4241e85795654c1a5a03c93cf75da8a69b68a3be55802f60cb719d85fe4ca08769b7216866415c80d1f0a0533238e576a62a55237ce66b3ec5206e0e9dad2d69fe542fb2cb261360b92da6be8c9535584ff45d58a5d6dc032109da9b308cafc849a2c820f05d1a34035a21eebdbeced5f9d05ec239a894aac51966ab0c60e6941075cf3e2b5691d5e8316fa2768520609bcf2b24f72ef2b20ee86b648c6c4f3fee9a98b2feee835414952647005e4b07a893699133100a379435cdae929f97bcfa71b53f095360a349e5aa33ef26bf75dfa0f1f9ef8f6175b0595932afeb1554c35bbf0afadba97ac5905e26f1f4d8b0c52040a463e9bc5cc20b0aedeade667d9acabf8fd769698ea62ed2beba6ababef0deba4bd037c255ffbdc2d783a20059c05ce2f6d596d83b45772a4efb363d99388e4160c53074a7938933e3311dd6231a3692164b1cef6e9ea18ae18f378002a6f4dc3a8368789a66ecb02617242fdbaa4396ba7d14bda943c30d9091e44246309f3c1250c52de8938585afa070cba8d568908cf42f1525bc6df3ae4e049b9165256eda0c404e273e61be85bf9158d2305173467692165a875d2bd9c263346daf2b5652138a39ca152126416446eee69bd46fc9414ec932a14b3c4b51d746dde5a5b827da76c0a8a8d0607e49d941739bb48b2a5638b213d246c1f98310ba497b550de610585ed96c558552391b27a4af10fbb1bb17daca4bbb6497fb3dbb12ab3a6bcc088d8364dc0a24d6c0e5726ae002a8b520401241ba82382eec641df39e408cd3d66be94271c7dfda3d6aabf541f018d487ea91a2707bf6ec54a7fabfae12ef33283a46727ac36fe796bdb484bc598ee4a2c31337a4bd35081b38d69cf3984070b2e3cffe92ff075a45ca589b0d44868990925f513f76d8591d03313569ce06417cb0e6fb10817636095fddad0585164427e64b30b8c71d33e27d59a84adaf3659c67496088525fbef77af5f498fbed7e3daab3cbcf912fd1e9576bade3d71d5d65af7b4fe2f24117567fcd92e125c0704a6f8e03bde92db53aacefbc36cbec83883108073b6e23a087264b0b1d5756c3626f9121279688241eaf961369b3118dd005697e565a9228e02d770928d5d82e76ca5f62e9305ad48e692a9c5eb4bcae5b463c093d78ca6778b89edf7bb5f4637b1e77a4a02751a4e23576a3f337327674aff2c323510925db0fc9a019445468a9ca67c9ce573f8e8755577cd2c7432c9d904ba53df3f79982dd3e2db55bbffa42bf4d8ee61873c5987ddf73b693d963eee4f4a4c1ccde32775475ae29cde21ade232837fa63963ad930e69e1ce15c64dfe4e5a8f64acd397aef5c6bb8f944d08d51096dc333961596edd0529180d797374ce7c60a329e5af2f5305bad31dd2d94c5712a59dadf5e1437cd53f672b0b2b245071e126d138efdb043be4c0d98548e94dd1940dcfb9e8632c5f4f912f8be90a62ae1f3ca0b3d903d7fbd99611e6b31c2bfba158a9bcc8d02829d65593944066ddbb7ed8552981ae60e4a653112910d788b58b59918bc3f9d832b4f4d97c01b8208a285f87adf0425438e5acd821676c489796e2dc177bfeaa9882bf0cc720a135d4fe4587cb6cc94fe153ec3802d6f643f73b7923fe66b72cffb69032e986b36a9e65d98cd1d4727943064ac68066a3bf90749cb2397c28169e75bb088b7b00aba15e264e60a5b68c473be800185087b4568c0bc1f72df62c907bd040f4ccd4f8723492baa8f66d69c37c7c8d332fe1e45c2beb527ca6364eb2e4f4687d82a5a8c9b3f906e9b45a9a42c9196a78f18a44cc22b69228c5539f8a9aa4a7c269ad9a3b2a82e18520498e600b83bfbde32ce633bd7f9f245c05f83f177b6665279c4dd4acb47ad003a2cf0ef9f2244fe527365981836c2bdd2a3bb24d00bdb282846d91a149566fcb6b52e9e17ea9696d65df34d057399b6717ec13815f7d7e7bd1bab0288d36e0a3ee228450cec478d6ef0cd796e5f552b06e2aca4fbb38ceada654dd42ae3eb757bf574dcdad27e873fbb651b6d46da0d5b8dd28dd4daa6723668d9184a3c2bdf1d682980e726fc11fbee5fd13c97a03f9e027e1b82342feee88e51af02fdb3a1d5819fbc77936070fd9debe34b4881f1053cc683e9c8221ad866f3f2e6f1dd7da91cabd56436e203bebc672bc5290d78ead8be4f05eb709a4a3ca2d0062e1c837e4f17ef91e0022464dc336b600d3a7dfada1d594ffd81b3537db94fea65b75653ff6053ef25604bfe9c11ab11ffd249e494d90d3f6b4ef056df104165e13d893241d05114f49995036a2d6b66b83613c4f26d3422cf2191bc7dc3c9be051c63d6ffe2042d174475e08ee1e7c7231897cf023e585be1aea90c73600409957c97f9143d2eb9183aad8ff47c1a158f1af6831e461f1b4948f8da7d018939729555fe80c329cee6ca52e66c26c4a16e36a9adec50cf8304bea4ae398db5ecce500949ae476ecac5b808ebb2bb72ddb3be0b99fbd898794cecb52c2cefdb443d2932a2fa9d3ae68fe2535f8eb9a66f40a1517d36145b23245cf56a4cb331ad949fbe665b5ac6b8bfa91afb21f91e8d7e132e7c9059badd4d4bb6868decab81e0ffff54f1ebe2e0ff7918b4feaf13162236dcecb716e06aa5be5e8e357df1fbf3a7effbf9f8cb1c97201e1cd23b628a603bc7dff93d963aa0ecc504f2a3573fa21992fe76ab605038bd79fe95a595888499a7814331f168c4ab5519dc8c7a11e63ff0ece99b576e037e9a97fed580219265a64c769c1262c6f63dd1880678d65e754ded87c030a958126d17a968f42eec22854c0886da656a9de1adee6640ec933f499072e6a683e5b091d52c5f6cd5696f9c9bf5cd4c48d6dff19972e35e021fdcb176645f35fbe50b7a21d6de183b294fcf2051e077ef94293d4a1ed34d7d33142c1a6418b33422fb26484b707676c4a2f920c6c1e20fbb2fcd8d273b35c3e7c7d99e2eccbe366b8ac379168517737f17dff0852ce155357be3b50dc89435e3a8cb3fc051d4edf8a2372adc31896d7a2a60a6cc2769f7591506247b11fb3092783838190ae29191c46f8d8341f026afa5df19c74fcfe88976b7bd3a22dec4debaca512f3805736e001259ca459015793342d181b99e51c95a5b2eb6b748f9ad7ab4234c9db553a9c36b27f1bd95d69fe2ed359701877db3063d6b7c7d8ffd18bbcc1fa8669bbb1457ea816f9c1a0ce92c1ce6c6ddd00396bf1c0ef9b584177c08557272370b13c35c55a89df7de354c43b5813545ec28e77b0ed03a1250356e6c9d90c5db2e454f8f1cce7ac511aef2db907df0997843beb1e0cccb4997b70ff31e462011761ac2e6a6ec55758f76a535f61a7e289741ceeabfaa50ec4b2dddb7420b6dc873164c6039a6be84a2cd1c01a3b14cb505758909e8438f6a49390020461b284f86e1911047e9232ef13257c7986a540be610332b7c565623bdade54b2c0047c4647e549036168face0446968acf9d5c301c19d6a766842053c763ce0a23e519a672886edb9f40644904b34d2fa8e2b1c6eab2288b88b98dafe4b7e4f09bb3d172c89afafc5a1c3fce96e9a8d3dcab374921db2237814eb62b7fa5776849e5989127eedb6a11881da09a77a345cf8623487e300ca5aa5d39bc5cd0346c254b4a47cd13a1f7a9c5903d3b9d8ba7ec59c5248883dd901174ba25d2b3febe7f9fdc4307d5a796b54abfdf21475610b4035017dca07a6eafa68d6fc8be23d2ed9e980cd392f0437b4af6abc20f13fe0e56b2371f56bb1a24effe7dbbbbb0ec5e8fdbfe27d8217f27bb07e488dcbb67ea89dde45856a8fa7e58b9c246270d6f708d89474d5a90c18216d38156224bae482dc72b4dcf56343d5d1a4829bd11dbea9267e98ad0d128c18dc2d8ed0cc19c29045148ff15a5223604ec32ec728ac5e56ee05fbf8eb31c53f00c8a69c207e44c081252649dcad17eb617b0484869b57a9f11f3855e6fe20ff9b9240b6894556285e9a0735d43c3bfcc7b4bf3894e9b20bfb0d5084cbb6c5a1c286a5e005869b3ddebc56ae92f9a844bdafe9720bbff7ad23151e442e9e4595e44d2000a89ffa52cae847f2c41b6d5c2c1e1a30e79fce593930e41a1d005bca762b5605dbe98254587b4622db50e84483f14ff790459485a8f5ba00d83de1ebd3180c482aae578a204c7f99316d38ef8184172422901770f5c3c4efe3d1eed65ae03601a27cf81535c0343946f10be854047c01fd9e9bb9589c0e9bc19928fdaa115f3870f612027d005e8fa53995e1b472ee5244ec09114a762f694f8b5262844842c01985893aaec3389229e51e33ebbc646a06d034679bf3d1bc15d776af9b4360207a3c3b216fe4e5aa3045c4c676c5c088132cc46ac7544fef6d7c01955160423b155f2607f0d14e769f79cadbe5da9e4dc65691ae41a929251f0fef329cd9f6723d6cebaa2ad4a43a649c154311eccc5b46628d16b5d6704503dd60368737d27b0d9061d719ce1a02bd7306e545a1e5ce4efbac9169bf9d221a0bda2e78ba7da57b99a42534fb997345dc9341bfa182af44a3861a05a7999e5e7e2d4aa3ac38333abe9bf8cf91b74d0477656b01cff9ed385fe03a69ae34f8c2b1a48a5f3b4cbb379ec92584c86ea92d54d33ee01c55687d3657a0e7f2c73f944fc016674f16b94670bf5af7e28fb6c888d93d94cbc48d20b96439105cdc536087fe7341d6573f9d784e93f34bd9c2d182d6c821c24d1bbe437280d78d5f087182dfc9b17df426f41f5117f14f49ca97f256143ae60f3c58c1658204fe6eadf17e948fdf9aea0b99ed7cb2c1ff1c12734e1dcd5abaad06d661e43a4ba7114395817edfee30ef9eaa44302dc38e54cf6a4439e44527f636d29f51f4babc95742bcaea154e7de38ba7dd68b0da98effa81b745dd7c42ee6408509200874306c2bf6d08d4b0b4d40a5ce3d4d6ff5c49903b5e89774718b77e152a604590b67b3ec92ab34854a5915853541e0049d9ed788fd228372e46c8566052c078685658a041336ea4024b1779527b61451978d20190b1f32d4b8814497bc5626f48eea181c0ad4fde02f5f8c181ffef285038d211e692ae4972fa82a619187ee6a325bcf26fbc94d17fd136dbce89f48aafd139df1c31298bcd7b744e6895996efcb3e71d0a24515bf3c4a5e33c7e8bfa68905596c6ed4305e22ce25d3d515e735645b1083fc55a9980b229d1f3782f4af4bf5c95a49fa0ebf2919081a83c81204354114a01306ef9dd535b219f0b40b0fbeb5e024a067b23f6092a11c32b10822ad3501c2964c7ef4047356ebdf8fe1b79c9ac75f39bff6ab9d43551f63229c7724bf8616fc646cdb8248af07c026b15c259621e6a36b46bfa73603dd9e7b3f6a565bcffe1b9b224f49ff841c590b37da8e5c6f3da26e026ccc697cf97549aff0addb254d4efde17546aef70ad3bed8df5ed799f37a2e29a1470628c6900e0f128ac3bd763491bd26a773d06b1ad581ced14cf60da9219e543c6cda18826ed6f8539696ec8f8559719d34bed78f6eae8938140f6fae0c8d5e13dd5c0be36241f302ae8dd6c538d743b950200e8e70d61d8d18fa1bc73e071d8e074097812579bdd53deb4434fe2d026304bd6e888d119d4dbdc755f6b4ee9928e8623ddc8cba5fdcbb64d1ad5dc32267bc87c853b24f8ec841cc8be8a37dd3110647f5fba2eb3a3c256abb7b0bba24f7ac7119a1f21a00c4bf32fcd3e170395fcee026c2e44eacbc7f8819fa2c035f875c4e592e2ff8f87238649c2717ccd9248606c870b958cc12369237202653a73aa569e86f3899e9ee66b989625047fbe482a59d100e24b83049b4b3109e03d3a448e8cc12a2b3255b63a61c67cb3c6aa5b43aa8f9e093992ce5a9a263fe56963c6994d457149b5926c1be0c464736a6cb59c1edbfbf636c81a6467439117fcf598e6645a9c55aa63fe8913cda5f4749f8c3d8f38c9357df622ae5ad052c1b003c974102d8abdcafa360b0347bac573354f1d0559d2fe71d123715f2e59c3c748c85b6534d792229dd98ef3cd5c16c9a074e144a9508169d9105a4ef25b9baf29ff448ff644726e872c355e217c03890dfa3775507e0c94ae1ca075c5b0fe1c159eb847c6c62a10c8d78724ae2c18116bb3436eae1e621ed7af8c3cbd19914cf047dd233f24fe5cbfc863cdad00ef878c7e976c7b4d3d1ee00cd2d8552feddada0993f05d4350454bd2390be03efef9ba0db47e2dfc71df2e549f4686109c0e00e5b471c4b9fe8a87cd385bac32c1dd2a28d451d31d10f1567e8924258d95f97d4c2eee54d2d7e3b52e76e4900e859a51860245b2c329e144c26719157b55f47c134c125bc2444591305a9619b444619e3e4c183342b1e3cd0f9270caadc1f40367c7a544e7cbd5d83c7d61196eb00b2a11bc05d43e5747bf57bd5f06e1d95d3eddb2743e574bbb145544e49f8d3a17242dc0c6b978373aecb924a093a8ae8033668485bf39bbe59b8377458a9a192b863ace5678cb41dc4b480610eab784312b03f7443867807142443e08f350cb1ee6b0fd28137179cd0822cd3e4d7254367d6e0fb4b6c1c3ba29427bfb1adc65eddec1d75c0267e0455aa006d4c021e3d3da5f56f2e6542649bf53e5a030e7e97fcc6ec60a7089ccda368eab632028f4302b840aab55d8b9823c0e2d79beac6b002dbded43c226945cadd9458088691b8ce1492f0aa10a5b434f76eddf52a86e8ac59f160bd206f78e5c8a7cbf178a6c3d13b64c9012bdfce7be824b5fe3ee15396effe2f5092b5d72556b1eb9cca3a77392e5c76b189e7859ac6babe17a75d59a57a671027c10378590da9a6885d679740128ae5f0d735f709b8638e08797018d6684949c155241c783489deec3a766be9669ce55e7ab3ec32252c5dce31b1b38c6a16fb8f3885a05297487bb854ca3ec7d05ecd7c6aa3716303746531d3f558cf11c5b5ecad50250c552d5765fcbafa422da8f2d74ac67605fd46de2bfb65ce2b254149311a25d19cf845dff99d3c8a869f46b783824e488f4c58f19e4ebc956577158af5c89c2eded309b9ba22f201878ab11e5b3de0f6ce117767f981ad9cb85cb7d7b1cda44136b37465b2996d2b9919b6706bc9cceeccdef41f92d22b5d69865950ced9d6737af16cceda7dcce4b52f9379297b42794eaf68187e338353d3dc2f3799bb0b26e12ea5eeb23b746b99bbec464b8d3a018682bf5109225103cea689bbde6573ad8d6573f6c748db55e5f6d829f79a578058261e56532c0b3ca38ee09ce64b0919207bdcb52f0835b105cbc7593e47881cd429b3bce8c86b42de214921e68db3fc428aa42c4f26494a67aefbbd2608c035e6bced79a00364e71f1741abdbedb635de80f1dddfd992abfee7e50effe446dce11fafbb6c40f7192d534b9c23c5ebafc9c79b775f2fef99eb585fbf238fbd8e3cf19a76bb55e6cd879d598f9760dcdcb7e747efe0d6e806e2b035b2dcdfc9c11ad9afe9f4c514985f0727e50efafd2005b2d3e461a4c9f266ec5f87558dda2436f1bab751aa2d0ffc831dfb6eddf28abcd96cf1daee01e0ef059d2f94d7a2315bcc93d92c41df7b8e5bcb945e30c26674c1d98880e0d60445d59fd2e403618b6c3825ed03f2df345dd27c450efef6d77db2bf7f04ff4f7e7afffc7a3bc561f77174a7f88e16aca631428fb9960a3e6263665c65db50b11cd2f4b49b6697ed1db24bb0a0e344215fc6514e2b263f29489165e720554431e852ce469647aa8b8baad66b9a5d921e19161f5e6597e2385ee5a09b6759d115b3889d541c794b0c1971803863e32c679e03c4d0e4cc516341ad0791a134bd81783dc08339c02a0de96cc6467027240e7f59ceb690f8a04c6d515a44a06b28764cbd0b18d13b4e70c4aaefc673b7ea040d1aba735e2e32a18016791237cf99aabe26a26ab19126565321e1f402a5646b9167e36406a8989c1545924e782bb2e38b4a23a146f6c869978e0b96b78186dc4e2c7f83f2a5d602029c5e24e9e45e2b8ebe61ad6385a70ded580d14ab8507514cf92a1dbea317604a14afc53978b560807f21e6a0104fa0f58f3540c19d6e12182c8aa1cb0c9b92d307d2553530aa043ac61993d842de1e2f218f802feed99047cede564cf3ec12befafbd582bdc8f32c6f7fffd3abe7a72fdebe7dfdf6f4fd8bff791fbd1b2abd3fb28e5f8184c18eedeea6e41b72e03c77ea7511f2482cf78eb1829926f451cd88a5aab35b5c42c8d5d5c1938ccc84920e4c7b46a74d266996634ee638ecdb8dc48495ca8e356b7e4817165c59358866da83f9c6c5a690ce00b8942e6ecfb2562e898688f8d0400a49b486d6132179be12ff39d86f9d882d97e6abb6820a11fa56787bf5a443beea9083fdcabb2b4146fc885ee2a625619fda671c4ac067bb7f9fa45630a7f51d9cf2ca3c0eccfc734e17b2f19fdf3e7b73faecedff9e7effe3b37f744c6335feac75e95a67d188afa4c00813347fd074144143942a250e6264011d5e4e9399bb2fcf1807253385c5883b3379b73ce3ecd7a59d1817374af4d008086b9f466d83515d009430b5af864ad3adacdfeabd9f1632bcc9ecfe694666593a61f967a107fcfbffbf64f9aa2d8d483bdd2c6db786b36478de12ab10559bf6971d21489f67694187c5fbecc78417e1827c86781842e2a61329a21f63b4efb0d01f7f96f0a27293944d86bba4503e7424c467b375fedd0380b5600b6b6f9e2ed5947cd30bf66369f10d4dad1e816844c9f5f7e5520923ce04e2c9b37c623c9c21f40a421ce98c0fc822670b96ca80b3c281efc42c692cb98869fcd2122f9aea2e6674c8a6d96cc4f2818ac5c185a9c2c3406338054886799666b3a498264372b64c66234b7998d31539633a5c8f128b30ec92b2dbb315203d266c54a557988c4c3fa5b0ad22e42f19a855fc17d1f941c7392b8d32c6d35641382b6036aad2326563092cabf349ddeec1688d20834f13547af0914896c04f18720cf05429ceabe29c08d6eb190b3f503329ea4e6713dcaa49ce58d186ff02fcfd42bc5852d7b3c08adf5025c943d2222df21026058ca5e4a15db90aed4ac84489f8d98bc042c54f703844718413738e3d56c9c03aa4354dec5319146eb7ee859756ad6942443bf7a2a9a9bf8546402c584bc8720a5cdf93d30e71db957d713b58d619cf067b86c9aa231658d4d024477614fff890b5674931a7fc9cf45097fbf6f8d577a0cc797b91aaad81662d292dc8c869203d923398977fe2035d116ebef0615bf479c7de0b5427ae642fde3c7bfbfef8d98faa2381bc2f5347259dc8a83baa87f5d01a4b36050fe81b3f28e4b1903b8591fe964cdb7417b04467321e8bd945ff60e42af00703ac2eb1d63c6989dad698e5ccb68aaa93108c49ee083953e7830c6c20ad82ac5841d807a1cf9077ccf2627cc30a969397c9704a971f5a9c88a10e9523e3d1dede42bcefcef17d7748f76401be37a3bfad7655e776a14138bdee2e6851b03c35f92bc6ca1a3662054d66d5bbe30f6cb5e90669d61e6e945bde209bed4d0d357775fe9502126c95f8a74105b73835166ba89ceaced90aea8b7f1d14f3cf649372f7096b2ff2ee09ed37208d5b47c6e456636bbbc6e646accbc65a1bd70f6cd5d69b1676763bbb97843f0692524daf3bfec8e857b4e6e61e8eb9b2f72bbadddd373a9d0db7e0a04f7bfe16fc032bb907554d83b75cc33d985c590f7e78f1bfb7b231ffc0565bde9b61e87a6b5613b29d9d990e876c51704b10693d1b8e632c8154b125f731ae3bb5823c48c662779f3130d280217260d9474c4b536aa1b19c3196ea5c1b1db1992a7957d665340bcd6922b3df8a1e99a3a4b6ffc2307826c4b8651935a3941b9746d704ef52cb8e17c0bbf0e5789c0c133b16cbdf5c0111f916cf9e2a4549ad23e7fb5a674ae72c29c693b06d9d26cbe2ea363695c36c07b5b4791cbe789989bcf458f9490ce5de3cd785da3f1bdafb11ed90b30e19c6138bcb9727951b8c20aafa22f60198e1363d1b46aee264b9f6c14efb70a7fd289aa01f5cfecb6b76c8356a7648939a7b7be4b91c58c52e688de954d06f4702cffc26426c149c353c5901b385370dc883f1db0678f7b5bdcf690b61fc1ee1f94f6f37ba49b0fe84366d53a668d01664a2715fb8f9964f372f49b8179580a4209ebc839162f60a9a337d6e1042d395f6095e12cc699ae2263390c06c74864053244979c1e8c87d570236a5fa02556ff180f47949f1ad5f78fe29c56f438a4b60994a510e02af1de6035c2f90411a6f54f3a645b9e856879cd617e531618e9377db12fdedf13ffef9fe96e47a20f39a0a7773d0183171281cda17ba20d4476c4657d219ca68ee649916c94cfad30c2e695218f1ee78cf855e8be64ab848e64cbad4056d5fd2204c0b0f0491b2c36cce3872152583214d876c36b0f2d3e1134d0e46c446e18d34c79b743218cf967c6a5348e673364a68c1662bcbe464653a7d83bb0119640ba03440e3940c9eb89c323897c916f9345bce46627b518efd30d9e6743563545decef653929729acc207e6134d1009738e93087d9b2c0b9097cd734457db107136f366a3b5d62fc4bac7704887c913aae00cee72d7309303be8f1980ce4bc0c644646392d0322271dd40e0c10eb98b9f0d9484e767c56e574922c155f7a5c323efb8ca9f34b8253e394a6e8f6385ae62a9784f7a582318a9161918493c1be1c9d1eab7888416b9d906531273c3aa46a82b836e5d749d907b1d286e71dc2937932a33928409c15efb14303b572f4d8c7a217613fdf3146fadfd18b64449e67f9191d4e33df2cce8ff6f6869cef1679323ce7dd6136df93b397a493dd629a674521e67c977d58cca81076bb728fe57bae555c1ac4116b0fbe025c0ab074c8383963c52563a9d8efd5c719686c526c249634e9135ea1aa6e56684c8205545ae5323ff00c855748456b4d7229f47eff7822dd7a716904c9e064451d60a96a7625e3f530a0ce6833ef642212bd13c875a484556419558c56b536a71f7ea649e145f5cce98764be9ce30e61a41adcffa0b03a635a8e4bc75d3b7f6b9d71aaf5df1302a3c638abe445338d332264d7eb9c7b7be4d945968cc830e3c56c2544f0703993fb16ba7409fa97493aca2e11510153bd8f67cb0f86be7414c262e8279433511a1c8554cfda8a3afb91aeb265d121075feeef4474d0bd3d991658489474f49226b381d8ee5202de474299310200f2c5e34e823b48d0ad12ff25dd2dd546873cdadfefb85720920f65d8ac7307a23e9d0a52356a78c9985ea47c29f692335a0ca73f66137b4f45f98e9acf81951ec17c556f6ce06ead5ff6ecf128fa1d72f8e53ec4d7caf58069fef61db7668c415ae643467ac0472f2e585abc8327edd61e2f7246e7b6415f4e2ad6c1399d33cee9447c6cdda3f80c3c079dc9657c3388c8961de3ac45b61022d769ae8bda986935a6beeb0942ed5a88c68e1265de6d82d0289ee513ee804d8a87e2c8ed3c94531b493eeb3c124b3a3f1e05f49ed3d94c6c99c10b5c00e215e9917df7b5948d3de43bbf3b65aff48cf780976fd5514ecc35f8cabd0251dd16bf77c8d5154064d8dd48386e3a6df55d9ce6cdc8efddf37616ebb645cf81e67b21b16479b7dccfd82f59e3a995765d77d5db53b0d7c83d3be44811b1c85af36c6484d503f2d4eabd2e7ca4ebc5e6cf434e10bb405bb054705545f30927bd38ff12ed5ad5d3bc6cf55bd5b1de96780d06fc29ba62bd2ff362046f1237a371a9d76164ecf24bbf184d5838f8bd3df29671568067ff407e15d48fb5db7c69d7217b5341f3426fbfb98ecc7276e8aeed2f29d734413014dcb3a163f98b0f8b2417db1470c9d7d686e6eb36dd8803a67aff34fcda4775e6495f88892988b38978f84ee8a43f4a19246782ec964b25e2d6920372ea99998dd414bdc16501d26037ec44c815fec24cd2b645aaa397f06eac6f62baacd2957386a7679981fbd34c19b0c90bbc6b059f4f991503f34788edbf430024222956644a0d548d38a35cb256ce082dac133f2e0a877d65f2a5152f985483059d499632724687e797341f718b9cd8fb0b937a03092685ca55e191ce7251ed82916982ebc8acc259324f8a28ab5b33e742e001d45030e57f97cc137df90dd9172f24cfdcbf1f9dfcbff702911de3077b19b7a3bc20d4251955695e8a2d2c64a5787c949a3e23cf6cc76c29d05ca1d4355a4d4d01149105d10dda0c3ce895b3ffeb16cdbe207afa3a3536ac644c2e199ae8066a4f19c8eb9239a3a9f60b17bc77c658eab0975107b5ff4086475c779635f3ddbfaf77aef83cfb42b4ccfdbdfefe577fcb42b534f4fe57f378af14f59190e18cd1dcf9aac7a3cacebb2a63f9ce6e169c3dd0d8a7ad1a1a9833db31b0014dc959cf4f955a70e4f2981b3f1d6d4af344f54af4446fc28fd561bb1791eff1f9d1464cefb59aa45065b26653aa41eea736ddf0beafcd07e5e89f24d00b60d6ec96eda1786c81ada0440cc8eeed917fd27434638eb51a106c0a80dd9f65d9a21bee67b5749ee808aca5583980e858eaced7065dac1306638af8a74ed293ebfcebb004ac12a1098b7ffd7b145dacfc2ae53b064ecbda6c541883bc34c84e19dcda28f307e1051d9e836c0501c2465df22c5d6982b1a0573071db467b15b8336569dc02662c4b9fd2fa392ec1fe812c20f924e65f2bf7282b32a92ede259e0a92d126081305fb509447bdc35b0755a2a5acefa127a50c4057efa5c948687096513716448706a3315cf395463a507717b50050be6333aa1c590edc535cd4d9f0d88d01b3eff41cf333706729576a729f2177464dea8ab3408bad61948f1ac5ee18ab2bc6d888d50ff6f7f73ba435a3452c973c723bbeb4583dc6e586c767b4c48fd8b6fbd5e3f488c1aa06ef37898b349f2c67172ce7d764e33220fa4dd9783c4bca31086adc4a88fa0de3fe01a45056eb91d3aef8dbf057d417e6b45b6408671886c9c6c14364036d4c88768659d184e00d79b0df1ae9d75090b62a1cfe746f43e68afb777cffe3f11b70ecd820967fcee659f21be3de9db87483823be09cf16c7601f9c879204d015670c40a96cf93549219d2a10c66196739e145a6af9c6503628d04ce05e597ffb28ff6ddffb72be5376767c85424a2323f4ac94f9e39a70bd37ddb794193f45367c6a392e3dd0e78c876c453f39670c23e2c32ab53037831b0bcf052a701c3927a7e8e0b8ecc22c6287d06874b5e6473e81160982f6674a815c2d3aea4d67d0e8d699a42f616f9725864b9c179bc9c669c813724858bef442c4340af7400f7072fe962a003d3d8704e7793b460794a71a706987d787cf8e470efafddfdbdbf7036dc35f0e7bbd978b798b2dd395d88a74556ac166c17ef8ccdbdbc720215a4c7742821db85ea8a093c67ac002785092bc43f53ca55ca50ce8abb751f0f368fa4e0245b168ba55e9e95200f7db5404f62500fe28dbb2a9b89df722eae1b0f1620afbb578790570ecb0d5b47e41188d023f2b8cc175102ea0bb92efbd63eede243e752523c90713f715fbdd0175055f232dd991c218fc33ad28181921e39bc66f37b7be465364ac6365e2c7eb6ae47b88b4f392b7464535fed4327f56741578975e52d062a85a2c1c61f76de901ef999d1f39774517989aabe1aee608a79eb0256090d4ad5116f0032e7fe7d222bd8afb67c0329984faf865e309e8869897a1621cfbc740ed16abac74ff59f3e6c07df01b7cf092055ba348672e2b5a08007810909f9654a3924818d5b39b1cc84154ea258dfb6e1f89bc630469cab39b75b60e6508c0bf1684809d462d571af57112c11f577405c7cd3b6cb925757e4255dc0df3bed005d4551507a13dc9fc0e64b06aadac03299fbecaeca34d0e0315d99af6fb908f14afb7a6f6da652e3b7f305ac55441c00263f1d8e8f93f4a9dcf8cd88dc7c084526e7aad97e857536c3d848f88b0b96b6e351b729f92f72487a965d3c0699a1723ddab9712023ea13c01d93c9eab0a108ea1826ccf9b2e2742029c472ec5972d34ce3f6e5603532514cee39e2885f26c5704ac4392b1a2e2b641a6764ffc815742abba41e5977486733103bee059aac7f50bf7e47c9d628a1c30d08c93f0ee2141f5d87a2fce3f0649df5d922572ea1378166e2361698b212592ef870d926d40746a53f9da6298f61317f6c5055fe3ff6fe74cd69246918864f256166900db26b01baa78b365c051433750fdb47d133f77cae7aecb49db6d5c8925b92abf0509ccbfbf73d8ee7c4de2b23729552b2bc00454ff78fc62565462e8a888c8c55b242bcce198a2bdb8d5c5fc6366080bb657cbbbe007ced24ada2b275f01fccba1a8393256cd0f17c1e06b8fd069fd2ed1b2b9f224feb17c015bc16aba4c558badb39546d98cbed50e472db4d96b1c00a63cf121aa5e33899d552aa3915682edcd91a4dae92624ececaa2056a2195550be4c2f5bad33595751b9cbaa3783108d9a8f4d8bd6b5eac8a27ae76c0f96d411356016665aeab31a6b9ebb5e34b961c2793542b0d3ffa64e90ea2e36f2e2c85741767e2cb955db8b4878b68d8f8c919aaf6d7032e2db87b1cecfbe4a1436cd8df2fcb550a576cb11c90bfd3cc9da14a7d7183d0f44370f954382153fe77642e7f549dea16fc3095c5605ed1b9fd06f3deff12d1646995ed6d36f19e23fa98c9f1757fcc8e5f0ac08a8be32b4b5fcaf20485f9e76f030e7d3fcdfb8420cf1cb18fa4435a07b9cb98aa84a07dcd0c29c737e7630b06e827dfb8770f41ff4c9c72111cfcd0e2c25a8e7856901af0f12a39018583b14a535610117666a8a848caa8e0b9d37295057b63062e11eb1d64562d7b0d3294c9b56de9a0346c5b4cf38626b5da2a785b8da477478cb89b70eefdf6e14ec5217b67969679f2db24c72a7eab4dcebc7c36c788ce58bd348ebce5aa732ca5cbbfb3308cdfc7709a8929cb0488de94bf33ad54ba7d03337539b22ff1f7907ec99911ea6d615756648782b9bc4884812e37c39e4f0af3501daa3334ba734309f85536dd92a4506b256e12cf9a053d93db6e67e670b2e2acd74bca54c21b65760a2b154605a731583024c9d82267ae9934e30f2eba3e173dd8b109fe0f2eba091775b228ccdd2039e9b64c6a2b16eae6f2f60491d5fba4b735b777f15318eb2b3155186b5dce5a92f362b7e968ddbe38fc1a134d38131a0ee364a4632094164ce78aeb83a4cec0c79d25cce2b842318671194a31c66f090e6f0ce93160bb43f81500459ce84a88a29d06a9f3e16dc3e9769dfe276162df57553d69b7db0d745cbbc67f404d22be83e078f203ca8d136fbf9846044d6b3499089603bfb50a62dd543e3ee91e4281e0039702420cd4303c97a8d7cc2b162ce7a6a25542cd18fc93a95bb320b6adae37d3bb93e3777fab9ba746c2de15fd967af3286885f222b68e19734343d00da67e18b025271c839eb4d010e50a7cae904e82d4ed39d54d580aa21d9db18c253ae5c56c14b583788fbfeea9d7e976a5f676ed1e28241262afc12998a8240db0bd6612afd6014a2918ec0405e340773c96665603f41725df141c4739e91a84d0b89ad20ca593d449bdfcbd124d7a6da14d6f6087f6af711035380536c93da32f218d1e94c717eda0b0e613e2f9e40ef1c811f1787bd26b8734cd44936a87c6942e1b4a609075478db2ad733618842cad14177c82edf92464fb02d730cc3fa9cc83055feeab162d435ce9c87f739146f8f4c8a8cd8233acd419ca65ecc612519717e55891519d5ab3a5d96238859ba1661aba4a0890a0f6d3bbbaba6ad7f6d553f4a1dcf3d0dae860326b32b5749e40aac5394b681617b91abeefc9f7db71b5fb3bd65b89c91bb6476795e91c47dbafe26208f2ab702f1ccae45fb10f4caa847bc5c0bc52ba4c8183f196ab598d2a6d2c784eb16e323440b0d8c43969dc437e99789bc4b320656d1a860db30ab67c2edcab1a0ff69b7ec5ebfb3f6831c825398901dbd994458de266955a8a3e927b6469ee4b61c154ce857ff31f7fb018678e751aa3de04e6292bd7ed93232b0386cd3c7db25fcd402b8c2ec8d43a68d9007079573870db34cc5c67613064000ca460c59a752fbe4f00b7606849e8f2ed229d36144c1f1fae6f4c51105c1695aa0342260ccb273e8c75a0b48e8dcac82c1671ce64ce12058e5db264e90e9ae29cc631863369a182974f5eb841d24205ab2c79e15a490b354b29495eb846d2427d41af4c5e583769a10657d8653379a19db4d0f145b4938c7179dba48ee14d485a585c9f06f947d2c26f9cb450e52894490b5516c31be52325a7b975d24209c8625bae9be71748635833bbdf5a590c6f52324107d35b2d84aa6482ece390a56970c9cf86c57c043964d0495a4ac5e832910e93380c4d63be2bdf1bb682947d725a0d80cade0a701045ba229160c22276f53efec02211390cce846130fcc08fd9083c23c7981d60b0c8a0c8478e8fe169fc90cc826891b19c3a5f6f58c79ca71e15920b42aceba762ea402b235f55d642354cfdfc7a7a66ebe7d7537d6be5d753ab1eafceafa712b9996915e1bf6f99a66e9d0c742a3564596a37d9f4881453d47d891c71b9a412d657305660a4b414bf8ced3732455ed9590d4d9c953fd713896d415856f0c15ac071c40ceb8459a55d01da79b5f65deb42abaab57fe502e98bc82c91be697d7484e2f6ded5b5d30f36f8f842d64e491fcc597045e85f257c07923ea129f8f182194c7f7eb1b315f922f2f1c25ab366f84468b99e378a5356e8a626823708f15745c48e02990b21feb6aeea773f0b5be17be59f5fea7a6c84a38ae5769493b1b5090eecdcbd226b0e67281fb2d16bb37448e7ccd73531c4f5bc90664220a6f7f3fcb147eea1c32db6ba47bc9ff7e68fbd6aadd61cede92e1d7851b7f5f3fc71ae319dcd1fc90e305a1565c1daa4370d6e6d91c4a45bd590a6d90ba5cc13ad7dfca405da6bede83fadefb7e899a699265a2c9c82aa9d608ca958b8dc14476c4bc6fcc089ea2fa96186af46f3204ae7cc1d8701cece368e0e51139058095bcab9ee10d2852574e92c7252f4fd367bc8786a4be2135df5bb6a181e1d0c5d692af8e3ea9ed1220c8b1df9d3ea7e3ad556a1b37a550da1d8d115c0ad1585aa1e8bee67e69131410b1d60a7d3c969f9e4505c8caca2466396b616f69616341c2eddd2787f51166e8cd86844d275f72ff20a54e97c8fd44c9e884e47a40b3f2eea9cade91452d89361c8c5a8782c09740d234e18c729bfad9518732085c422612331060d27711264d359c1ae73a69af6a0694f35d54a0d703e59cce77192a50010443dbe0d52514b060b28d6ec1371294e7dc22f7ce2a60efe8473a33aa250eafba48fb27b5f374cd8847d64a94f52c6ffc4a2bdfcc772368843511a92df2a4686a8c1a782a77f7c1511162d662ca18390119ddc02f6597d593520c81ab072035e4a40c523db701186b0d93c5bca3c0b1095c7f1814b0b7142161180802145c68474319c9a1019bfd4e8652ad7459f3c7ff38a44f18889b589a0fe2f53fc7f0d960c2b7231e4bb39660c9b87fd8ce629639ca1f097cf199bd79324e447e998cc156ee02299c5853b4b85a4a88e1c522461308df0263b12edbbfb17c08644631193ba1e2f82d104377065a77aa61bf8e4d9cb37af4f7a67ff7ef5f4cdcbb3554984ca4aee7180b69f71a0af677d95772611395c153c4320ce624e19a385a8c3647d4250ea9a50e487efaba3a3af2959b283202553c84d09e96e8c4adca2889fd0ee9b707302ba028937cc71bc488c9866825b48bac20be91a121ac8741c9043f1e2cbb8da6c413245695dafbf983e46bd939bba33e2fb97b9bdab1d7df524f3887d571cb4bd76909ea0be4b3429291d8e138389bc8e47ac01da3383c8ac42e14ed286749d622d7c1d8d513cc48be5201e2d7d63b2aee27806cd73409d0eb1ba17c8dd2e0c62776f7326fd9ace58f17af1f4cdf37f7b65dd86d3201cf1d52ba924df7f7f258781950b2662ac58731cfd9074647616f39995d4e589f9eac8913fb83eff727d806d7959c2868b44a8a3a1455a2e21edc0cf7f0d022fccac06898e189bd7a0d32f7b40c2243a264f587142f20e358e478b5e4ab117c65bef8c7c7e72f256d683dfd9a9c9a9e86b61db0e8e932a6cfbf2474b4dbcbd39670b17d5363e5ae431f97b3c5e0e579f2f6af937e58ca9a6ff9aa7ceb3291b7e483956f56371cf1cc61146d8832701d4c4ea7389d54ad8ad72b92848b97ba4eca814cbc33849583a8f519faca2d7c45d30d61358e38ecf7e5b04973484041131f0303177611055b33003494a03c536e361076b68f6a4d95edc91e1368e3f9d0abe5c2f51d3cce8058995c446aa2f021f4e6c84ed3ca0f898b2cb4b6e867e354e34f0090b5326bd5476986c5175d09fed7dacd2078af35ae9c8a326f9a473673c26078fc86787c6d1bc8c6e37c0a17b80d5c77971285158ae70b0cb2275c25bf1fa1a49bd0c804f3eb0652acbd45510f55b96200553f5a8db3fa333f64f4e6cff7f96c41b24414de98c01b1fe872571d360b5b3394d82348e94e34e76154bb2869cdf2217aff0b85a823e4953eeb7162170010ec1e1ee67910a14080e7e5574aa435b2aad549adb83ddd0584522d3fc7b8334d86f0acd4ad27296d094d9d199a0d42215bb238671d1a2cabf7c2ce822fc1878cf75867b4d5ffbe4357dbdb6ee8afd26cf5c5c62818485429c5f0160b7afafc5a35b9d8ef875e78e78774bb6aa751c0b8b54909209a8c513f4dbe90384ed04effbed9fbe23aa59b11386e77c0911a1281e66abc9aad79e648dfb8603c02abcc4e6c59c4965b838c91a072bdbe792254d7421fd772c144cfa0d4499f0738b1f197fcb9c71862b91294e3813a2e04efa0762397645e396c4b6554856434bc1d180ad8966cc8d6715ed6be299c6325689663a1aa20e437c9ce374b5d1330c3ef0bb3c27ef8225ea9b9b7bf88437c731e79a5673af722c82eaa308ce2a26a11d9a9469e073a3785e96e08e095599acd74024a3bfc8c470ea98a795a4b5305f81358d66933cc983204724878b4548d2e1f165f041599eeedc21539abeb98ade8a1b13a62713d8ecf13f18f3a0dd2d79a93a4d4f94a1d4dd5c4eb52e7e0f439aa69864017d4dfa602cfffda038589ad7966711ed12baac40b90a7ce51d2db512aa7c1216d53e992518b727caaa5ebd7614c7f335a904dd42e05f09684b347a0a3e063b41a607edfb37049984e7c4e63885bbd288d81531ff3e5c8b253ae0b820acfce20804ea3b8e80ade9674f8c2c9285b74d72a438a17a58175d601f5bfc6c6d9363f1813816c5511a8c58023945640be9f7a6204671667abbd26804a5f8a81840a854fb602df0e0b30518649997aa14442d738a78a890a5a94322c54255ed57c7ffdb3b3b7e71d23b7dfdfee46f27efbeb9d5615bc4567bbd394ec3c9b629af84ce35f9650d486e9659a3e35a5c73ac93e26b0825e7bfbc82ab621c81c872da305116cffa20559ea86effd3958633634245a7933015f862d2a482886c6e27ecfa9b6375643291dd48b7625785d6671b7417207686f44a11b581b460f4af4d01e5342020ad27091769684d9d544e00914e8d649e04b3200b2e1951ae7cdfbb4c2bd7b611b37e8a7d0b5e3d2bf04c76737a37d7c00ed9bf923f763a188fa69596fc0946ef5d5f97a10ee89b58f69e4ee4c34e07b6e83d9dac8944548876dfbba0ba8d846a08951bc8a546ef5f8228fbeb1a72a929996aa11452659cca07d7d724cd168317bcf3865713d27f4e33f67bb9df9a2edb1b7d6ebe19f0b9f88ffadf19ba79afe2881ccf93202487f7c9e1fec1e18aa32777ffe040d4c503fe28de38605aeaaac1ff5a577307ceda22d2f7bbffdcc65a36fadcd24ba7dae7a5f4b3cbeedecfbcdfe3ba9fdb38086c37a1bae2014ac91c23de2fe7782c1c0861f96d4883c89239d665fa76a0804f867118b22106bdcfe8dce79243ca1cb8f3c68c47d0575784268dcb50b0328af3510e1824413eb0a511c5a05d568a831d6b59d60857e02ccd1122e1ab580f15e5a1a2328c7b2f46a62350bdea3a0ba2a42fafd9b9041ee40cf37e844b8c20c15014566b9b28e9a7c17f5801e6f749adb0c0cda894f774cb5ae5a4097d720e75b5fad4b6fac80e35b5f08e9e15a1793584488491e71cc158061a08bf15570499487380cf0ad9080af7f73b77d463f9e8fa5afacfa9c13ca4292fffae9dcec300fd68ecb29c4a3ed230839473b4517e28d3e8213c2a5dcbba65aa0fca62e4323a211d323145e47cc607dea2c3c9f53d9dc06af0410a7d2a06e6d45abead6f65c6c38253a801881fecff604bb9cc8ab58ce3847fe904ca8206e2d260c1e4c356d854ca2b7b8e0d8192186ea88edc0f0626557a3a0967dc8dbc9114b82aaf24b713a20efac3916b84fd298876f85f2efa0da201eb44012a702ba3015514601e98382ac086ae4f470c520a127e94faa0050ea2294b828c8d7c7700615b85eee331f4fccd2b050dc2f7ac81f80058250e55be01e7de419bb549bfd3e97cfbd3e8bfdc2f2c484ff85759e1e3e53cbae40c72fe4e6b9d3d3076b5ab01de511c2d37d0e00294ed4306c5f79755b16b050a1a4ccbae79b265b42046096af6107cd416f623c2bfeb3fd5a6c1af92c841d8d39b1340b81bb2dc3838447fab6f46e40699fc4dd41171458a082ad9fb3fd3c693a3e09a8561dcfcf35e3b6369eee6565dc5d0084729a24c3136c598936c2e34cefab9ec5c12b5620a8f7582545482059d2c7c12c7a3c19279176eced7f5a681bb59910142cc87f06a10a4e08a78a9e9506a023579d6578927b14aa51b6d9f14628e14cfad084b91907289cacbb8b25526c15cec11b975cb2aaabe8626a10f89d0fa3ee99f5cd250fdf18e4613a6ff6222b7a478a2a0f6cf9651463faa862ab35a1f9410fd5fde9de29fbbd05e965516f9aa163a53c8dcecaa0c89e7227645e0d71a5759e8e8ee54471e80eeaebbe82d870ecb75f3b1ef1cce3b5bc1b4914779714f835db4af6ea37876f271289f9997d3194b533ab12fb077eed86d223a2b34d889ae8d8c8328c8986196c31bc506c9f055cbaef4cb08d21700bd5f4899820df66483ed84866faf5952db889bb711e1e04e346abbf0aa1ed209e6f475ef9fc72f7f39591bc06904b35f116ae9eae9ddafa3712ed0aae85da2722e6875705301e7a5f9c982b0a5655a9595f8ddd8a0e4566f8687d2d9a5b70622c93e7b7430dcdb08256c179b120e5e9f7bf391f9a62eb034815068fc298bcf8081f609bd8c83514a82345dc8ecf198dd10b0afafaa7848887b7b2488c8191dd324203f897a90f2cb7888381ea8c44c550a683950a81cc611e6948aa12cde36c70bdf37fb7499b0c87e40d365becd3c893f2e37b0c12b77bd1d9d09a2c242c5a1205a7cfbabe4d6e294d8b98d085156a258e344905d561e09e59c5d82d8e050905d373c1564f70d8e05f550d7efd8501cbaa4616039bba2fa7b8bb4720609bc8fd1c97083e0da2c162e89df3b4d881d9605e637a00be1a8b90659881e5b508580b00151889e1bd284e994ba09493c26ad03fdd75fc8016fb6af9ffcdc2179e7e93549c64a9a18d268b2e077193eb3cdca73f127e93009e6594b426b7168a98e28d7e779bf4d1aac3d692b938a9112b0980db1cf6fa588048dfd661f0d1ff010858286e735fbcdef5cf88bb6b9bc0b29eb53edb409aacb06aeb7d51eaeabba6deaf858e20d0b4218b8b258549517c00a7ee30decd4d122a0b8dedbaab7750f2204560cc8309e5be987fb7c3eda6bdc08c190f2ac2ec0737e1ba19cdffececf126333b6c076d00aad8ff19bc65718bdebf87697f5dd0efdd70a8d289c3202d3b7bd76bfa2f3df4b201abaa56d8082afe81c74a5afe81a1c507612596ed774e57d45e7cac793ff2eba787298cac3f3159d3b1c3c0db70a912ea9d4bd42e50b82d356e65b32ec8e96c785995d28a34164a570cae584da260fd48c66c329db320d9428806fdafcc855108604a00b873a343ef1c55be98fe5900a9834fd4df8aa334223d955e9e389b096240cf2404152bb36d4e5322cd40ade384e0825619002d3176e28320f9dd34cb909f1ad65b4f892d9adb4070f6cfea649ad043567c3f5ef261ba4b5e2d4980da7f9945387f5f3569540a8e7d0973b1b6c486539a90cdf0df145445aaa5327009f4c58062f9ed38cd6c84d55ea8101407e671e18e3e09219005dce17693214bf5c499b713bbf9e20f76d48f8eb3b63ec8221dc00370c893c1bb961a8ce3b72c33099e3440ce21dc96aca79273499fbaed03af02a9929784ee479d0560e19b5c07e85149feb30d8f5b37b6a71b6ff9abe5e27c96695b29f832a57f4bfa6af9b201a05788d85aae174c608d56c7612c6031a926ebf049880621b6404218f8dd80a839f1b5699288e5aa2dc669950f95de97fe0db6d7415794d5f375665c02b7430346abc6fbdced8b5bcbe4ee588e5dd6adc7e3980fcb5776f8f1c47b86f8617046a36b110b0f8362070209eaa0c144196b270dc3660899b9130260a73e37b3ae9e397c50a6fbc2bc5b2a1491227c2fe98c63366ce0a44fcff553ed841444e4fda39be10a462fb73b159fc027fcf5461d53781cc9320cdf8750c8ded15a5dcdc1c6148232f23090b033a089770bd1b667960b01c91273865d1504b41b2905c9cb0d6af2999d3e1073a6164c0867491eae7c320192e669790f029e3a37f0838518fc57856e5b5e72c9d071923b3459805f3909184fdb6606996fad650331ac09d9325a03c9bd111e312e630643439b2eb326619bfcc418d8de0a348f52d86c51be0804b3868ef65a33639e61b8b2a389f5c312f612464639d7010be7f184069dfe1340e860c2ab28a8abf57ca33ab4d7e89c671922d22a8428e25db3187041d8f399a18f757d8b8d44711ba3ba00316b6e671b81c0761a8d9e8d5d5553b9acf7ec57acda2d79eddbaa95de2249f0d970472d9c2d67def7e6f79ecdc2e2dc56b00d6c0bc4d731973d39e2fd2625ef10a5e07408a4e18b5d81cf475b952706926fd4007a1d3134ed7904577ba676fde9dacaa1f6b0928d6c8eb8a1da0c3fedecf5f58c46607f0220cd78c31842e708eec6f84270b198b559501824f69a34f092eb25aeafacead0d7c4941ba99c9fa75b0f6970d4a3f6c651f9704570713829588b0091e1474fe28acf4eb658131c48b98b08fc3703162a42f6df07d9ff45bc61fa05e46e917cf28336ecf9e880a9ae30205086adaa7b12fc498ef9c0fd16d5c518548b9868785bc036cec8a2a00943a58aceab8a17f852d3cd7f6af5833f90d76db24fd8d5943d19757105f5bf955bd6554402a702a80d3f03a04528b18ca9a94f4bb5d150f7c718121febb3881fffacd31dfdeb44d95762fe2b8612bbeb8acdda6a4430eaa14721c294dbf7c2e4dbd88e335ccbc66ef4d42fbcdfe9f88f7d13b22fb3ef196fcdf752c0b261cfca78de88667d9069ab462bcc2ea500d695eb0a9ea962ca955120f5f19cc01323986e0e743e27381f8a2e506890cf838cf38d5759c598501b04f3c833e31b530bc681b8f0b3ec0c89410b6a54bbc73079f06519ad168a85addb9831ec342198113e06f8039e136f23ff1f5b647fc3b3639f9b81bcbfe4d3846c17b6c33e33eee44894f7c29d5895e1e74ab7fa8a1711f3b2bfbbef8b368e2c717daca8f7fd7cde444494ac74cb98593639dd13548c53be19c4423727a7272d2faf1e1030573142f302d001b0629670c42018b625b90461e6a82b5cb122549cc2f1223b288aca1ab64c6fa4aea333a66abbdd28d56dfbf17aeb98b1b21b7b11beb088a66b72dfc714d301b38e59addeb498eb983cc0450223c161cdab5536e87b4f25eb7bb74c92db0e43396fd6e3cad52b6996beb194351ec8cd5ae5fa43bfd8bd10fae8ed5ccf88c658a13f3df4536cc612a1e7cc6b28d5328caa8a6cdb2ab3a4f5b171a7c9b2f0e6bdbeca30bbfeef5f24f8b5ec5345cabd902f6ac7b9d34d255ddca65b7024b7cfd1b662acd4c5bb30a480ab42922ddf0330fd6b6192241d706fed30e328c0d5c03a5b07f8d6cd0ee8b93e85f1bb1a0f9da7a0aecb63d16191190dfbd65c858cb4698636493b393f0d6471e0344b77ef9683c83745f7514198f8a27927ea90f26fdaceef9b49ed6ff261f3f9617e0069fff17d97d6d6dbeee59d3d73fc7328c91575978f25e471b9f1ec223fd77236c5e31fa6163df7eb11995aefaa55fdfecbc8e8fbf81001244e9fdc479304cf287c21582d9816c21a4e8df17766c7a1f119b5179bda8c48eaa0b4d4dece020d6c30ea7d87085a0d6c7105dd5e7bfbab664611bea562c9dd4aa581a9694142dc1ae70cd8aa5614941d42ab9245c5db1f465fd8aa525c5a1fe40a92d6b954eead52a0dcb6a899622d87ab54ac3b25aa8e5a50cc29dd62afdb94eadd238ba644996aa8f90c5aae0d1371781716e2e6c02a95ee3127a4342ebc205ae0a05b218af27c5a8a7c2470383e645050cf71db98b05c107fc7f43afaa7f114fba55cd9dc2b5ee5194ac6547a7fd32ff506152f7c2652474673b77f5cfeb969e48958f3d9b23328ce74bf351d9b0e972762ad4184af7dc351e5e3867215e5aa35abd8c32b235d29efb7a04dc61d22176eef327f003872347761e74be092cd32fd1813f6f2fe560573b24bac8d74eeab6a5b87a70b8fd49524ac638c3323acecdbf9a90651abaf661812aeeb70fabbaac34e73c64adfb870faa40949a720eda3ffef4e30f3fdd3fb8ffe0af3f1cde3f78f823bb777fffaf55b0bcfb6d47f91b630d2eb958f55e8fbaf5557a9f3c117f1d917d3725405392c596ef51ceef40033c7dfde2f4f5e9fb7fdb35b85af2b1351b089b0a2611e9c8930be6d33a2047da6745cf1a9ade056b936d6872f9f7eab1f157719975c96a937c629549956cd3edba0967b238b82946dd4d093cbf9fd514aeacb62e12afecb192c2f72bbbef84bab5d9d649ded5c45d66b2b5f21ee778807546256c46836804a17da2c35f0cd22a263e163f9f183d9fc8872de3e1917cb8053d917411645071611c27e0db4a115330d916385268ca29d4e2dcce99e27791dbeceb10a04c60569bfeeae62f7393dfaadc650f0e7f7af0d30f3f1efef4b0aafb46f4569dbe4c1e241c9b9e8574366fe429d427fb3e9c4fc7efde1dffbbf7f2e4f5dfdeffbdb9018dec4686db1ac1e6493c64a93316dd85606b096ed2697b0dc1adaed77685e0b6ca6f5bbea8eabca1a456e2bb0df5934a1cb74b65b7f2cb99657975f57f7dfcbabc7779da5ab3da8095ea1bfeff665c8813b7de369af2bef3c80489a2a51a5668359e8881ee11cf234776c595fc94ad9dbba57d14ea4bbdf74a3754ce0f5792b0794887ac91b0f74930f389a75140161d0d229a2ce1a43d157fb8b222e82bb2e8707d0d3dde0c331a9a1dc813324e187b4b93949dca9287ed340c86ac71d8f4358027e4901c91bf36e1543e4d9fd2d1dfd9c71ca4d7c7aff38badcd8c4c0775320e6996b1288826ba7c52b130a18208050a8d924ae0b7af81c75751ee2504d91a037e738b7cf9212bd384b80f59e7223677e41f900e39ac72e47f11c746f4e69074c87d57da099af27b945149cf27652eff45f5583d789c57ba420a560e00cab223725f0fe466a5557ef982ba86f17c69b680ea6de9a94cd8bdb66e25e7416cfd4d86342203a310188d74d5b18461c8384789619c246c9885dbb9997c3f92a3e5745b5b7c5ccbe7d62d43d6f2b7fd697fffc7839f7e3a7cf8e0c707fb3ffd74b012d24632650dd7db3a8265c103d72fb8ddaa33b654b3531fdb31f2821ccbdab6a2dc6c908a39b3115cda1c793ccdbc25a8e1c4bc52a0bde1ccbfb50f261fa08ae4d295a7eec6d002aeba8c16c426d5240554873bd5f79e57d5a55574c2f15afb955dcaa3b0bc03ffd0bfefad40d94ab75025a542c2cd2728a471d47d6f77cce35c6b47ff691b8789c7c7700ca555659273828648d824d39540ee0a6d401cb1340b501120cf707266f7a00993b916c9388967902283c34982c9d4c0a7b3c52065bf2d5894893153125fb2e42ac14236229b189ea3904f0db38cb1cb205ea4b24b5d6dc76c91d18ca5761acb6a8da48895c30914034af0f51ebedebaf28d9b5c718c02c13ab2b739be4ba15bbbdd963dbb62fb30eb9afdc9eb8874721b0bc666dc8ed3687bc16e6584a602f094262e00b6a8b75232cc09924f6962bc1c910e79b05a6cdc37c446fcf19416dd8b0df1ae5cac838277a93003a0091c69992586ddbb34cb63be52b06c206a204b4ba5cce3685e0b0d1151a626e332a24e498683360b9608d765315f5cb830d1f2eac2c6e0f9f2c2b83190d54e6d012454c43edd0f6c7961cecfac3b4cca6cff25192b05fde71356a20d55f02c60afa674abaf8082b6aa4ad0d7e358bb94076818d094b08f1933e6fcfdb39dff2ea673ba39dbb16e953ef146de117990634336133add8c0d95f092d3a88c9bac4f99a745da74259355c06478aa994c769ec4a3c510938820549961b93cb3ac0268f9966b71850fb1665e59cd3e1cf96557e695ad9751f6db329b7f05d9f46b321c295856b29b4dd3d2e631657b06666fcf4a26b646ae587149b1231274c6d827aa1b3922f271151be39c61c4c674116629e9905e5be4597fc765fc86a64dbe2277de56e34a81602c5d994ea1ed4bc675dfe18656ae8a73f2303e9bfa7c0cf6f2341ab18f652962eb7237671ad7ed65903ff8dc4de2737f70b3c22df0f7c6cf6e1237fb3abc6c634ef60ce6952aef6922cd9129aafbd3791c8d8268023efe739a4d53cc5db50bc23cd89a308d64f878cf836b9e93381ba84bbbc67fba17cdcfa40beb4162538a2c78064c3870c72b399cb879531745ae53bba22b90ef93d236702c7c70e1cebe4e3385385d8f76f72fda83f6d0f38947bb07175e5171dabdcf61b9d1944f621cd2ec1d4b33080639760783684c91db0ee71b5ea153d421427a3f753552b167fcd0a2fa84d2b76cd9821f3193e092453ee1b0eaa941154050654abe889a5095aa6d0766d8c392e8b71578aab6a150b701760c36acbc784357afd3c2d0006b36089d93586ce150aa34f2f29be7fa86ddb3299d33d75dfa23e968e75bf574693fadb8a23f0b926198870ca3a1828983ab2cca8000f48d1c0e06913b0de1a857be3588950fec48c0d103398e0d4e304368463ab08fd847cf4ebc349382e55a5444df143bc3f4abfa162326c4c28d256bcc2973c204d35dae5fc1e3c340406d3e517e94c03850cb2a336f1be3965bf04ccb0728fbcbbd322aec200a9c6d0f71486e58a9290cad57266d4da926e984a5717809763633c87e5353ca1bce4da83e6b8214035ae96814a0cfa63c7b8527095467d0369684916012c589cbeab833417afde0a8ef4f0f29a5bfe78ccd57b340ddfe0b488bfa2036e45a4e4c701c97c98926252b4942faa1e5f4fee0dec5454ad221ad03ebb17055ee28331d3eb0da4c163419918e6cfb981c72b11ddb770f2f72655464cf604c1ad81372eb60c41263cfb4c520edee5fa8e5740f2e7c1cc9b621a8091eb8ac1657d32064a471ef1e2eef67d1bc18a5218bdbc8d1a0fdc523bb15a733bef9b66ec0d5e8b4b89bc6db9772cef097de52dd54cddb80f6b3d939674791861901b2abbb996bc076d2ed0fb1004c2cd6d8f98817f5f1c8f53561bfa9104de80e862934d3f0ef78cb65ff310c3b79fb0f3167a1b65fce49b7faacfff8ecf8cc5629b40dd43292b00a8a99840d17490a95fd844095e62f88dfda2274fff76373969f611d86cb19b464ba9adf1a1c5756e0f38d6b53190bfe54f0d32bb9b99ba3bbb9314d26260be67f42c5095d3047dec09f0b58af583229ca545c6a583666fc1d2a2d8cfe30c606e83e0ea29103d5b5fccf59891030a03e8e02c84206aac2fe3c61a380a39a2ed097258b6cba04e949280c250cd9cbaeceb3a146c09d8276238d4059793c43e5a6d6d9e9b583118bb2205be6946f52f1396789503258c56ef2de56d7ea03da772e63cfb118ea48ee5b21fd84239b53b52a6191b2841f5cd6d5664093882dbd2302d83f611ce17ff08947a1ce917704b708f2d937fb8c1336e23d8c3e0ff6cd3e900320d769ce068390a5485fd8e9c0278581f4b5caa5cfe038fb0fb66cc0527461f946dc249f14ff6fd309233f9307fb8f1c342e174c1aea2b9138196192dc28ce40baa051c6d8a858747e6f0f95df46a55aa15062249dc64936a59196b98bf335579e5f7871a672c7564f439eb46b4ea72be7e0e3177338d2c1a7ae98c07cb391e5c0a59fa7fcde2a21497942d166d1878f33e417b9e613964921b3a1bafae47ed3c7e671f2e62a5abf10aa98d50abf1241cafcdea60052328cc390492e827a9af93c4e838c21666ea994daa1f2f40f56f97db1ca9734cdb66397f25ba839710178310ba28985f5aa598e7cb7e39cb9e957eefa4a4eb21bee999bd257e6a0b9d1cbb968fee87079409b00bf2433059b5b05473d75b9deadaddf3362a805c342289cd5a4a42ff716aa8f12468753a52f4383b6da7c6dc45600c1989d4d13665bb32f0b06ec665baec6aca938a34bc23e069ad96ac983d1245c92017f3f0f836190854bb1df4061b914509bf0fffdcd8c121b18cf8c43406ee60ece80dad7c6719c9c22aead66f16bfa0dee38360d66da500e7e8a2b6b7cb2a7348ca3340e593b8c270dfed2984281f25fc69394e8ac4cd99445fc165b47da6d57320b98b3a47bf97d2bead04bc5bf787024198293774878c83a50b1b6810cc6e7b84202b3988602a8eb8adf6cf9ebc6d3df77417ae804f225e96f68d31fcd494d88a7a19b54579321ce7f07b46803da82208b4778dd43db38acf5f1b8cda16d1cd6fa8ab5c5a1ada94381fbe3d0de25d39012e277c03ade5c7de9635b7081c14e0e6c3eddda5c42a4117e61772be3091b1dce6faefe389dbf2da17d1f34f6e5cfe781577a320392867972ac416a6b9eca16bdd53b88abb23938dc33d5fc94634844674c38e0e5ce6887b3dc7ade9b5fd21ba44a0159e56ea93600d65d240979d6ef4a6ced6181481a650d8f9a4a19834acc3603afd25dad48336667331baf49417251a5154e55cede8b4a9c56708490b45abaec5e48c932d757b81e0b40bbc6624b59a46534176eefcc2379fb50812f8dd3bf438cd63a93ba79a82b115ba933b6476d0daa02b9ffc632fc84e8534333f493b7dde4c9e95816d98cc34be92b4e8292b01d70a3165e08ff5469e655ee9220022f69c8e8b5a577c98f3bc3f7df162c5916e523c0f56b998a84ef0c7a33534c919999bef759cccf4867f2feaeb91b17460a143ba18b91bdc5de6aa7ebca5d9b06ed1e3bf4e32f71e29f302d1b6827fe5a6986ccae8248f64d4a591b8847650481d86887f141bea922431326ffc63e313f5c99ff718130b557da91ac8262812d38d218496075df27d6e02aeb6bc541a50b5e200d43e5995190f0d92934bd8912d406d4b769511edc19f63148b374ed623c2e92311dbb1ed92d45ca46e5ce2f7a987fcbd2074e7ffd5e7b4a5303c96bd7a5b4bbb5071b75d422d95abdf9a2dd935d5969c81c1de8a4ec0cbc2548edce1ddee72dcda639b2e554f7775ae5b95f492ce026262d7d1b52ced791d3be4bcad98e200c8bcf7a2461755c8f288cae1b918539b463e03a946180d8096d54aace8be172c378368f217d158a3d81ccc4c6454db8eee8e08fa2bee7543f24c338ca6810a564b49887609b175d7d92ea6c5d129a4cd6a540ad4cda95939836a1d0fd1d4a96c15a294cf95d426d6ded3037d7b9944fc172e016e370b07cd885e17b7ce01d09d3d121ff35f04a434010940a173ec56598e1c232b6caa533333cfb0d14b6d21dcbec78906c58e53bce054c60004144b3e092e10ecbdc78e8f15f5eea0667d7bd44211d42292485f844dd08a572b4b9865333ee8cad66b688c888236511e8d6b4d24085a6e2fc00d9934504661db03e49176683f248364d1686a90a0c530aa21d1bad26817b178f11aa49e070381aea0f4ef30a1a824a03594c40ac00c2aecd35e237ace7d61247daa9459ac7b64df9bf4be7ec1c49afa14dd74b37b4e9e20bde7026f174b9824d88a371e85d086ed1e5c7a43373710e625e9feeccc3e04d927831f7c83d3b9bb94ba1fe49342ecc0a9e3aa6b65764644f97df2f2b2b4b7767cd3a9fa2dee07e180e629a2dc86714f9ca7a900eb143a33e2bd669580e5c3cf35418d68da42e6e35d4772c734b8f605c1eb290f883a3d263bbddbefb9974693211214cca4b40f73241716e594f39b40833437603d6833076a32a92696f31eb43a9d608872e2a8e30b5bee7136775c82e24d42da355be25469c13142287a775538680f9d6697a927afd4a34d48174afe3a825f649c8af34616418b36488b91d64241a3963cc4a79db3d3923e99c0dd7af8823f83f3f929b5a668813328b1346462ca34158471afe369a9e2aab82fa3ef6c7d8413eff2f6b2f06bbd26a43d746b13e02ba370d5c752f418b7ae05554a4346d5e8e42ce3a69ab6cf3043f037ff60fb32f6a36cd47eb59d024cd957a557f610adce63029ab6cf107419413447d3bd93a74e1d295d8b6af2d90dc07858e89ea1a6c95a791e90b34c6888e39e8f0d3fe23d85879780f0b5a16e126a8cf05c8a121313997591c342feabe48064bfb5a689f681aa2c3f171b9f2eeb8ab4884edc8eeafbf2bb72879959bd1f9dc759143e3b9429ed5540e8d01818b693b6a782c0902e1f7fd7a572c7a20c7382ccd0da2b6494eadc217c9b2aa7d52f2a3c6bd4ea917926aeb70172c54f03631d2bcd0e82c4098f55bde96e440aefef22ea5ef3d25d6bd7594ad920d20f9a3863547fc822714d545d56ca026f92b6835d8809bfc15849db381c3f683ff4e36f00f53ebb67ea0a815f4c95b7847e2a1cf1faa38d0aab04fd94d3ef45524e8aac04fc5c656877dba223e3fa9f943a0aa9ed401f9bc65d07cdd50c7c20a60e95f6ca6253c544ce13be4a2d0be8a956ec343d7cb696ca6ce81f425694571858d2ada0451fd9a36b9fc6d2579dbf845460b711f026016c198500b342a0dd148db2658ed9e1f175619c1922494b013237373dae40df830c855a98307949978b7e2ac330946231691c152c353c6b975f3cd19257bf472bf7ae99e2dcd870fbffbac47f55481e641612a05655a3951f3e1a2ea6c305d659c0085271a00e467cdc315007b6dc064c5b9b0b469495aa56e31af929eb9af072cb57ac2589be4483698266799afac39171a6f904a0966562b9f3be671d7bcaf349fbb6011769e4713593987c825b534729095a57fb7fd47f920a2e09d9df35d815c95fbbd209da6c147a76c5a33f5bb4fd28c0e3ffc9101be4244d6dbffc5f3bfef32c77b30268d5e5b2885747277bb91e96303efdbc3381ad2aca1609aba3343125ec13e050b3ab810f7f4eee1459913a16c7b5fb52dcbaeadf2b1d90cd09d523ec70c0f7ca20738445b8ec5f72caeb7e3ecf0abb9e01a252e0a4ab87930fcb052ff96f37252f0ea69aa31fbba7d97a619083c5cc88f674196d5cf7e1ba4e074128c60982549c3f88a251c64a4d6f38ded3a1677d84de27abe495f24157895fb8377e8e9e3df45537c56790f4097a3fa2705af846e382033637d915860272aaf73ea423796bda4efb9abf2ba7573cad558e7f74f9126125c10552bfc1c1d548bbfa2f3063c302f81391f44ecc299014d33703a4467c39cc3089f358e787d4d1a6a70deb6ad52f41e14abfe410bd7f5d0a828213770c2b2e330b4d5f5bed886e6a37cd57d3e03871f844c2b1ec691bec13e7bf9e6f549eff9c9c9dbde8b97c77f23d7e2c98b97c7efed2767ff7ef5f4cdcb33782899d69b5990013ca7c78695d01876bb987b5764dec5e7ad56e1d6fd4b94b24c2730e740bad8f8a2c4e1cd71b75e839d3e5daec35015b495a6bf8a6bb6c559154433e5e7286669e4c99ca146e6cfb6e038a265518379151bd7619719635b0fb46de5b815ec76f37c772a7fc58d64bc86971897d4b02cf97aac57ad3a07af22b31822b86a19b109cd58c3995bac59337cb4c4955a146051a85d95b4f97b3fdecbead27c5b2ce3b3aa79bcd72baacb01ae77cc9705797efa2ceccf6fcd3962ef2a96bd1aed1cf8e6ca9dacd9f63a9cf40f0e7a9370bb3607adc26e8b8fe6a0baf8683df1d43050e4a42159d140c9a06ec1ce104993382fcac1105071e0c2253d6a14eeb8b34616ec109212adb5c7f3d4611f2948c8aa128d006e36ecee5f38cc1ff50d1d13960b2f084a42b68d4a561a9133af60cd65a4cf25bb3e19041826108f316c9b26106b801fd6b29864a9149e8d70ef1beb79b85984b7d8cfdf4f94f781a8ce3c3cc4403c19e6f2a059e1c58b9fb9e8c57b502ffebbacfb61b1fb8335badf5f2f00bc264433198402be5978796e98ca08f37ad769bb3a8eaf790db12f93f22ec9677b12a58b04d5f9611ccf39b1b2286309a7fd29c3ab363c9ccde13c33f9f92d478d1a47951ba3ac8f595ea7c0e6eb96c0b1cbc29444dae3cb6e16ff832d61bb44a19ca65d42a6a4804caef88bdcd45c492162c465981fce68f0d91c4c6d4390bec805b83c11246c94a1699223dbef6a651d99e2f9705637a10725f338c13b910aee957767b01ffb0667f7525992501895855fad285308eee6419a623819df3943a6c48f2c2c08c60ddbee4ec350e8ba2520d36ef44b0aa75ccab27f057ca2a651c1d002c02200aae97ba31a7c958a37bb8b1c9dc5a360bcfd91959624254104d1a754a1e9eecdc56b2719499d49467cf2c060c066a2352152cb96b58e93d4ca46f251652359f2fffdc7bbf0c9c3ead13ef2d196edff14467b587518a4855c23b9c8b77a0953cf4ac0ac2d41a60509b2ca566c26ff29b1154b7f0fc55edaa48efd5781057c96c4bc4101f0353c95a3d4b4fd462922fcf76aeebd391ce4db9609afc793caf88e6541f5bafb17dd830bf077f47cf12d5c17e87de46b10344fbd428dae220fb0863108b8ac82b6b6b2776444a9f9cc8c26254fcc57470e516c1b0ee3b4c516b98d2bf6a7c225b9859834a74192e275497c574dc2c07e8634220306dc7831439ed0efb5c7493c7bcbbba288a353b4a68492199d9338c19aa5812189b0284b02e1ccb6c6adb53605d330a0a91ce50b5d66aba2863eb0a5b9ab373e5a288be11396870ba182f6e0c287206e9f1c5e6c1a33c43981184ef931bc17c3434065cd00d2dad62cf343e8ed36d07c2bf456100d34ffbae86d262dfd03c1ab11bc2a22ae88e2fc17977cef6f80ec39543f8d9cc8ae13025915ae23424311852c7c927bed8471292f67fccd121aa5e3389919912a594c2889d895bea3d1e170315b84348b13553e5f4a94b950753b8c652c6beb1b8c7ba5c53817cae6a30028f39bc4433b85fe3cce589405340c9728d3c91c26ae5923095a2ff0336870497c198ca018a6a1efcf05f7f4bbddb712652e2efae42a08434efa8b948decac2da5a137e3789158e2ac312933414531fca65e8981af505ae0e0fb2c2d60e87e8d3d4720281d11e37941675ba6e4557dd6d0f3f6da8afe1a5d9988c188b2915e21513ee68f3fc6741f11b9db2191e5ca2804c488fc851c72f970df607f3ee9162da4dd073ef9e9a27276e5a9671cd32d8b556cd8c947aeaff34f3a7c76cd621e1398f8276780519d1436454b985e583e26c7373f7ecea30b1c4e412fa81c4fc19c25db10f0943a4e92970164b7c0f6d7d724489f2ec663962895213c7bbf9cb39105a97ed8cf83bc539489b22ecb1d9fff337869a48d174c1174e5c96298c54941ebaad693d3b55ae389953e018ec9476934c911e99a25b745261a0469978d5f0159e9609fc11779823e5e987b70c232c58835b823d340e94a82931fc46e2e7f1a7a5cbd0d32ecfc841f474766a1cff2a0ab00dd60e5c72f5a17558095eb10b07b57845b199dcbaf76efd82cbe14897b743c4ebdd43dff9d8a944554a261adc8bb69c10852326221cbb850b183dcb5394dec8f794d2ce9b561ca75123d3b935f16b5a5abe2703e952b83eda9d44a1cfd8526e5d2e5d8b3ab4cd1a9152d5025f4c870deb4fa6fafc3550adcc57c443396f4734a5a033b0c059e34b760a7a2c5a5606941ddab1c434bac3941b56656bfafc21b7eb869bc6185e6546c6e41696a6adcb14d5166bc01861c9c9ad396a364bec808048fc85d12d981e0ebd8797eaa310569b6299fc21312917be4801c91fd9553293502ed57320d7b4ea85e159f7a5d4bd02f2e58439a664aea9180d7672cd8f30ffbd08db00ffd37b1aeefd682a4cf4e87112957c166770625c7a8164fb93956a5fadc6a0b439323b1a33bff4d45ee72076def30c9dcf79075b140423753ad8ed32cd7a91ff8e470d3a48b027649dac529bf7e04d5159e2ecdbc2deb1477ca257cd9a268d94671574bfb8af04722c6df018d54599e441adfadb330aa917682f115b5cc5a3bfa4fab762d3a0ae96c9e927e0421137d101045c1d7201a868b34b864a40f91d99897adbf98cff9ef41bc8846db617799020bc3370ad88d53fc4cf05fc06ef1934b467c1d45b94af6e9c20a50a0c23073987f7907582534c75ff9e68a7a6407937c60326c24a657cbb8015d1aad837d9fb41eda1e7988b8ad87a5bdca3b553ae861679ca38fbbe2e36a73412eb803e5dec4e23d8230b4c3b8d12b5ca4f500b7560e90c5881ad8c18ca2962d8ca9c2af27e2df236dd9c90f8eb32c1f5cae420d0e0f9a8e758a7f3bf2d713f16fc9e046c40d5061438d80dfa499fb281587a1aef514c1b56fc0b22bc622d24f339a88848a8b39c9629f0c1619b039a0ee51104d7cd267d1083c2e1440782219623a67c3601cb0918f8ed22983f344c2862ba5fc032af7ca06fbb90239a24d9092099cde32d7030c06772e4e837890a657982d90dfbe16f3799ce8d30e2255395b4a6834d9b210cefd12bbec462c2857742acf8260f99d7d91c38aff2185165848794f168da00fffb7a447ad025792c7835e408329d5b4636246d146fca85934bed70ea277bc7de33e9cb70fead69292dd1ef8e4af1bf439ac2e3de5e874b849a783b6b3db8af93d6c3b7762d560adfb3e691dfaa4f543e5802e162f4148260f58e7734432581ca22267702f8228c858031ee48da61cf9ca8f00788b900cc628211becaf605fc49e6a6c3e3517b3146466b0e1c80ef234d9e969f9b2cb99e85bd4d6a48472b218c53339a664a66bcb449ce9c551b8b4ec029cfaa4e30ca1f931fafb08918f35092e59241a289066e42130d57118831f0f903512bb4fe284b000824de43421300f6769e65984dea94f2891705af3388832392fbbae2d281a390ba21cb5323631841bc715e97fe8253d1b26c13c23e3380ce32b948e4e4f4e4e5a3f3e7cc03f4b34a209c6c760e05f104decb9e919895b96f61f94eab545c43eced93083d48e5041ea8bd4465b7124a08429d97b2d19b30b1fa473705121678a2e8aad77e5ae5c903338974d4fa592af58576cb5d0be96d48a3d1afb2ed953e388c2ee7dc06d97202b0039a08469bc192891ddbe00b004d36b0306deffb05de4feab201fb40f1176fbb08a678b614cd1cf57907392b97c6c945f528f6e758827d0c6e3ef8354fac63ca3615806df29772b98356479ddb6f4b0e0cdc46ca5bcaea79af3703187e66dad484525f517266539d188b1a4785e67acfc55a6ea32e37683d1570bbbeaf19d3b64d57d4a0eb5efb8e01c541ca5faa6220e537553b1f77ed5f8e5373af7dc5c4e43faca26e652b8b2556fdae3c24d54b8f8b2d9bceaaa99c311350d369bafc4d8eb6b01e72fe480ff819dff420e0ab3e034aa2a97bd43827524f5c2f7af82482cea1e76bc2b3f418bc8e7e384b1b73449d90b3e998677c05a1eb9471a0de8708f785e53e60f6b918366b399bb14965d2cdf1599c9d75630c5505b2ee5d7bf04e4942c26dd219db1900c69cab020547ab4b7c7a2f655f02198b35140a11614ff6bef196ff98ca65b96472cd3a462b9b9c2792b4d835dfcd1f13c796d030d32bfedc5a5754f65674b25a4163c1240eaa985e4ea1bde8b38264f69e208fc1fc7317f51ddbdd51ac7716b4093566b5310bdde8b376f7a4f8fdff57aab41e4a2501418e59aff2c9ecdb9b0e3ac3a78152723e1ce67101f7f4a3af04f3b8b5f72a48699956453e70484d1da4fc890ce838c86c17f5883776f922300539d6248a22eff80e3204933329cd2840e33968099c0c0682468fe7d95fc9eb0190d2213bbb258103c6f77c3d059ed4f7d8c963dd6c468f521bc17ef4e9e3b30e945c246361e114b6fa921e0b845dd3b7c8d17fc8b3564214ad9d6469c8afbe07336582489c1b7064b49f4e616775ff2c3a37540ce16f33996395dc5d2448f9eeed16bfc1205c378c47a83301e7e68fee999c4b35e460721d385ef3872e190e4e463c6a2111bb58e6b0dd8d3ed35b89065194b2073d980a6c1902068f9988f96b0596cddcbbac3783600c426a3800e93200b863424339a7c48577273d9b5f75c77edbde25d6f187f1fc1e7af4b0cd87a3d4ac03e0d6ff47fffdf5fffefff432e17ce9c2ebf52fea6eac220e0146841ac85cb603609e4b9a56878e78e9c7dc2e6211db246c2001d7c31c44bc08aa6f19a7fce987f3d9f4b28b514d4929a58344a75a810ea3a329a4c5896dfc31b810e4194ce9d29d554579c7cbe5fca68329c4252b9723d00241e0de2a823562e729aa24f92786700034dfebacadfe2bef771c67da31ace9a2ed7bd368706de381e1d0cd149b9ae56b4d07550ec5aa61a75f45da58f75518e02839be30b04f4d5a6af454d027b31b1ae2c64dcc0a77646239551c8fadeaa89fae41de3a775897c22411c59e6a353549234d4f47db2efcb9c43d60c50eb2adb15476e75c472f2739339de64c3c71db26f700ea872abc6179ae68e0456c1204c514b09592939bf7de7fcb64fce6fff8cff3ce6ff78e7b73d1fcea6f3dbdef96d12449628964d59a0f574762df8bfbf7ff59240289c33fba8e9de21b2f51893a109232c1dd239442ec6e237a1a35180156cf5a0bad3824b84249b06c9a835a749b62461304868b244dfd36e6fca7afad49c65d3b43d607b53d775e7fd345e4c905fc24e18d26890ca998132355dce662c4b96be39133e9e828500700ff7ce6f93511c791989181b2120cc7484fbc55b4de92523518cc6407eda336a89b68b2864297cbea59780250fac5b94647442e2842ca2df1671c646846659120c161993f5f2cf985125f815cda6014dc9d365c4a2d4e37b9e05c3d0b825ceb0c5001af0ad8ae28ca57b743608268b7891b6e86cce92944623a35c7003ee19e4fc76ca66412b61187a385e44644c87d9f9ed668d82c2ff9ab288df193ef0ad01060a9bb38c17249dc68b70446878458d0a665d58717ec1a9aa807c15471fe2f6309eedcde334db9b66b3b025f7be89b9f8460ba3cec8ff9e9d914b36cce2e4cb38de6d7c3622e6d51595249eae2129619706d41df3c98026115bfae40e91b5c71c9751bb259dcd1fa9d69527028eb40b592a617fa7e92f9158eedfb359d8ce589a29d84f8ad296d5da1793e1bff975805f59b147391b3d811eb8cffd776c72f271de57246bb1d5ff83fcf4cff8cff939fedbc67feee23ff7ce6ffb06c378824f1bf84f13ffe9e23f17f8cf27fce733ff0779cbb5cd9f6f9650f79510173f44c3eb86f188a653cdcbf06f60014d07129f9f8b1ee7e717e7e7b95ee7e7d0effcbc5903a1c50c7686d6088f63e54a9cd64df9c17d7e7efee73b5e1d5476e90d356bfdc00674504b7f8897961e6ffaa733a404f8a39766cb90ddb45be79a5a45bd0d6ba12574aba1556c0ddc3a41a3bfd0fa6dda7da54ad18291d3292a38dbe8144b35865ecb2347fc5a4bee956b1cabf58612757d425392cee9909194715ce0d2078799fa3bd40996b9537e2d64d4cb580b1943b5a95eabf5228e5b4fcb75d4a404a30c18550859a3fb4a8424058494e8a8a07c1974245ba3630d35f6ef041545f30d101195c6a882768b95a50824bbba95da63feb81c6fa0b3461c9a3201cef8cc9eebebbea523e38c8cd14d092a8e82f236984c3392062306da37f4df9cc68976bec4fbbda1ed79cbefb3d1247ff1cd92453404c68531fb4b32a4fcca3860845db2285c9251804e4d836511ea8d385ce7b4ca1907a72c1d78e66217f06985da8f6f53daf1883dda8233419a4a3075f196375f0f69e774249560457f498f103a1812425c386bf6f489d773b1dc5e8b0e86bd566f45fffbc59efc4501db7575053a523a37dc61d454a46bc9a64a8da6355f2e5d579a252f654bd145caa967a61109ddb4654f231b38b9be36803ceeb8b2785b72b2cb280f45058311e9c8fa56a4a58136c99e0e7f91b0901508726ca02fc18b308e93c62c1835d586dd933b75cfd9e3190b42ab438507a48b95680eb2828148c6a1c0ad6420ece390b1d16e98c5ce4f9cdf29b3388914d516dd89bd4a6e61762d631895ecc200508763147906077043d98645b9a239aac505909ff3400af45a640b6a75abafcbe562c01fa4fb3b21ddb38c265905f11238ed4b68cfee5c7edef76a82d88c8011c4ef80846b53ae3a9d37d37899aecf22f447856391848e828f1805003ffb665212b30c4f9c90fe7edf275435e4d7be837d8819001416e69b3e9828fa7619a529fb48476c18cc68c8efabca031f0c5b16c01f14c0ba994368184c22ed07a05a774fce1e926026dc63204ad750f4a50fdb93209b2e06ed20defbd3c78387ed83f661fbb02952ad24293b8db6cc4272601b4eea3225f1b1575d5ef33c0936b173207812fc854e07194be609cbd48719149299b474d87777b2a0c9e8829c44741032617a841079952311cc5cb0f546197d3aefd78e6c5517eb7cfc4735f3c24fd2f0f6ff5ae43a7f75f498d179a3ebfd0009d0fecaff7fb0ef5df806a86260f70f708f39d8afcc52a066227910ecb50f41dfa39c733d3ce3b23f7e0f678d377c530c70e2fde1a5b3f93df851e1ba8ba2fb5b39d9820f9b56afbf4f82d9198637795e53ac874f7abf42d07fc7e68c0a85107ade0864ed477d9205b3ad832a777ca02730df0afa8964108d08b9e0ac922f437746d6993f6fbf3005b98e7e9cce7a873ff6697877dd07efddbb77dd45bfb0171ed845ef18fea2e4b4b7bbee17bbae280306bd25894555e4f5241f9752ec7544a28a608568455044644909d14a87799c7b9ee27c9d37d84d4f9c1c5332a3d970ca44618739cd3296447dcb3f053daf04fdf2b3ad76eed02085098e8891d0bbdbc769fe4900ec1b7e12a3889f8ef87e4fbcff32e54937a6ebb2f45c683334f373f18d9429bae03712365f5379322d05c0d86e00029fc97c5a977861c2c1dac40bbcdafb7b4040adec0b0f679f784fc141c12188ff3d20e2dd0a4203d0b9dccb3499605d5191e0cd4aba5c14ae7973ab3ca7cc919b4c648d76f233b9af2fae47792b2f4038b8f0a14bf7f0a2ca13b4d2ac9b46f403ab65d63de32dc190fb7d5b70f58ad7422ae856c382db2bb17819fdab0c6635bab75a2fdebc693d3d7e5766b3eb555870159c2f6332eb6d6a323b9b874166bbfef785e5364e76c3b1533e4429bf86b7378c5bc39c56326bb54dd85bfd65306e00e4b8ca984a9a6016085f6ac181b258a9a16498778917b4239f955844ca26c010eb91189f65c3a3ad410b5c8c5b4e214a64691ee492a3596c1a2149c1466d894f609539b1089e19f1bcf8f7ad0ef170735cb1bca5a02d49497f8b8e80ba229c573612ffe63c905f1dff6feff8ddbbe37ff75e9ebcfedbfbbf9323d1f0f1e3c70e4b4a6ea9ba78f5856be82a15900957fb25c9285f63951de2e17b0f2c38eac52d9192ebce1d722b48a56f947cdd2cdf35cbb15b772804d8ded29deedc21539a8ae81eb9885cb4adb4f7d0343b03ff696cf63ec682074a04dd979f754514ad658b12785c408d8d8f68c8e9b1b6e755b60c83340b86bd38e90987c42065a3de22a593ad8ff08d5435bb3bc2d58eac7784f36e756233e5015f0da3f418afd7bddaefe5c59b37e4e9f1bbd2635cc2f9e29e2f4660dfeaf0cd62d0114cf48fb0a37cd8d17e69a8d13889679b461a999bbd8b5823846785fdd0dad1468ece6bc41b397bfbe46075c411b104010d461ed95b451cb9038564bec9fd5ad14102ebf3e6937ac14cb9932617fca3e674cf0e26aa17112413bc92613c9b07211b41128790cb7f3a25f69466900b0835e531bc1dd18c1a35d214c42022e7b78d86e7b7c988c161c892d487688e9608e9315a8df2f048a0a5f9f3dbd821078a4623c23eb2e122636612249800bba4e1223f7a9b3ca799b6b81883cde8920ca062164b85ad719c30c6d96e803a4a91ca4d6e8ea87d9eb2cc0a5316d9488314799e4f828c64f4034bc93c614336629c7dc5972c21fd5e5bc23a4320693f9ffed571f1398d4420ec250be339a85a068b201c99f0fa64910561f01fe3a374d378910cd92fef5e1a81315757ed69360b1f26f1f0430a6eee2cdacb16599c04344cf7c4182cc9e2384cf710c28cced3bd3f65f1b0857f2f9250c7ff8ce384309a062c8150d6c9c4c9e85fc818a0201ac7c94ce4868d6087000781b98ab5a424350397d029df4b655934587b4a46f170e1b060198effd8be85ed1d8250d9a49e4d9378c608fb98b12805e642a3d120fe989f18b6f352ddb274566a5fdb43e8843bafbaed89118268727249c33a42db170f42522cc1adda3734fbf11ccaff753e7dc69ee26f59d7abe45aab3b8a588e4e913ac49b0b7db471f8101ce6e20f7586123cc2399878971bcecd5856ef473b98cde3244b5d438957c648c7915987105e735e195b1ca8c8a36a2cd9e0b8cea9e8d7858597b0f40a99490eaa784fc71314a90686376937baf072e3a93ed21e5f389e6a0c2c77a6e3c5835ff323c079a3528b634312d15901f097335ce97214b6f1b7ec20ae21bfeded41d5a5acea93c1e50bce7dd7b1af07818432f27587687c697853168631f9f92f1dbe0509f9cbe35b9e55d7063b353e118fbff78e844f3729164c14a0f8eb5bc5cb93b19c524ad72166960c514ca65eb19e9f078f7ffe4b4b94affacbe39ff7068fcb16046df88a7e4e41de78ec5cd5cf83c777c2ec1136b933c91e01c8eacfe5622db0b8a28cc3459f098bb04229df997aabfc0be9b5c771724287d306ff30a951b388ffdd249ff8eac30076437cda9ff7e06fbe4af297d26d017050e8722cac2e1816ea5d38b7270c1ef376083b0c1e6363f8b3729700a5231a92fe3c09a2ac6f26612d15fb6aee0d406c9cdf468c3cbfcd2fc27c531ed5c16fb1da720cc706d5387e72a6893e0496121aa8809ca60627dedb23cf83146b3160566732580a3396ac455c03cc4afafff327c491cf2b77470605976f8f6851be3f033afc9086349da2bf41c61998f191c13d30a45c4c671fb39a9fbc8341b9e706edf33f1f9fdfaec074c500824914977135939b547ef2be38fefb4254328efcfeafffbf054b967dbeb4feafbff5ed45f165920e1f89fcfa5b9b6d43d28f6aec161fce279f8827e68bf5847efdcd3b22384df23957dbecabf386be121acccd4c45fe562aef0c5ab4e067b575a9dbf0e8837d5160396aec419aa7bd49c21897acdabfa699e7de1e7e6415f6e04520929b21502e039ddf36819ddf26986b8137125214c9e880c40979c752f1604e23164a01ea8a0da49e2b76e41336f7518a43e636b2285d245c60b80ab2698bdf4098c8b31c79197a378a2bf2861245007bcab7a36d6fac9c0ddf57fedabd9142ca2ca89a242dc03e1b7552f6f68456b5d7cb7cd2ebcd392d798fecf7fcf1bd0ee193c33c91bd1ea7b98631cd66d3d005791e39e2009be41ef16ee5a109354eaf37b75e14abb0886f21f0559d08ae13ad5a88271db2f7e953a37b7e9e9e9f9f5ddc7bd2fcfc796f5287dc059a7f921c7e358b9f2dd28c0ea7ac82c7cb26d587a020e3be551b2e88c22072e0562a046e4893325e842640e8816a58d0dfb02481b6694a270cb3aef1f97c20594287a6a0384edb574990b11741c8ce96d1b031a7d9b4fd6b1c448d79120f599ab68757a346d327deaf69d6fe35f59a1875af2e18b0b3ff73f69e74c827eb3921e7b7673488ce6f1f014a195bce1fbf671fb3a640658e4356dfcf8f8c3f8dcfe1f2595150a50654dc898a4e627b7be4a9309f93ff89a711e71fc1c44b493f9bcdc37ece3dd8e825f548ecd7781a813d6a10c693bd5fe92545b1b7350b8649dc125309a2c95ed3e8ceb7ff255d24943c8f3f6471125f522f25a3f87dfbd79428658970401ec6b3bd38a4a3786f14bf572a11b48a08bc8774b5f6ed52bcc91933d123aedcbc9bdb29cb8a28d5192b4cbaab75ca1a1096183c8d405ffde9b331be5c99ac5cf79c8de922ccd263d1c3f6c217e7720544a969d090f5939211ec42f2d8f81f6cc947810a62e291b31dd65f12ba6d518c498d67c0ca2d233d11c9797245ec4f50b42fbc00f35587ece79e9a3cd0a1fd008763f63a7e45b3e1d4f6dc42e2e3a2a164ffe7b71f718c7d86cc47f8974ed8c73978d781971b97bf2c19da5c53c29e6b39b5438429bc61abbcac19993ce09af30963eaf9570d6bb19d0e49d8a9f1e40949d849fa5e1e2247158334f29ab1f239fd994b7113aff948726e9a93ab1c7a608b6a55e30ef1f6f6fe440c25119f89214e71d62dc9e509292895c81129532b7148f7eec9a7cfe205df163efd0bb0727ae7e7913aa38b29559e1ba6066d5d85cf2d9306fd53d6c357db2d9e30b5e1f281d851f1673c1ea7cc76d4c803e17bdf283cece441e317c08c44664099b4d960ec38962142194d302771bf4cdba65b85fcc21ddbd8240bfee3ac5da994ce04f3c43ff12f48a704d3139ebbe6750dec956914cce72cb3e7006550f4f6e6bc38347fe0ec3559b0470ee2bdc7a9d723f7cecfa35e8f35e02a6f8024f7c8f9ed26bce6b4ad017c2eccc3fc6cc5992896b4722e8fcecf239c86091126f20866a9384dc56cf2d8909b5071f14a6085a10bc804db5022bfaed81bc1751123c83de482328b21ffe4efa78cfccf1961d1844b616c366023817fc7a378c04459912c85647829e90380be5906458fb6b7276a07e6aafd42d2c16146fa388dbe2afbabbb0a991ba0eb935a1f398e8f04d33f1d9bd7a07c892e7295d079f12e44937821abca08e5dcc8907886f1086ae3d311b63135d052b91fcf5500da30468a0ea21cef54da6a7db2c947797f30f9dcf6b592279c0744d88807bff2f7e711e797a6ec197db638e46738044346a3c51c173358029f980339b2d93c5b0abe81149ddbe40e695834f344bc30f8c9098781dce325a35837cdc34456d0b4e96efb2a188d42e613efcf075e4993f70905cb22347a240eae17099d315c0a15895b24a31fc4a365dbb10455c1b801e794fa16d7d704ac0c70b0e8edd40d0475f146c0daf9bf1df289e3e27904ddce6f17eea340b70d83e73d211e7fcbe0b6862c4dbbede4b7179af251c0c3cd28ecc9af328fc40ccf6febb02d508036c92779f1edf57e6d0fb96cac9ddc61a8cfc8cd8e88a726aff1465f733906798f6c4908dc8e3a8466fc58ce0cb72597d7a22ae26c888bbe213be8d134ea36db743e0f970d25a0fbb640da34d9004782b75826cad65da83ad5a95cd96049c059598af47de97f1c27068dbb2fb0141d2ca24b1605e002c02524b8d2420a98c2a5b66d7a19f21d6b2bfc536a0e93ce83f484df6d85eb977d65c9a6497c25c05444e5580deab82bfab8aaab69cc29cf4a6a447e5da4999d08b52bfcb10ddff08253b6f1ee86f9647f9d145d62fdab1274996e8c5550aa220e4a020e54df6a3fc55e4f041cf47a95813312dc654e581128a72ec7f8de1d37b009261a5522aa30f117deac0413d5bbef1b13f54eac8989b0fe552eb366504a159472a7d9376f4c7f57575f13d75c98a8f1b41a13115c6d4c54dfbf0a13dfb1597cc95212a2a8822549849c41aea641c6301b619c18a2a371471b27f1ec86e66ccd9260b6324d875e227637af9f6e105f370898cf60b626e627c1ac21137ab933ef38d115bab5209157abd7f22a12f7b8ba631c3e21e338265c6af30819d084100cc6e7c01d1131e33816a634af32181fe626959bf0e18a4ae00d024154dc3e80cc850e9727edca05d59b152d0a25c36e89e1aeafc9ad8618c6f694c5f41f15c395e5084bb3e46c391bc461aaea03e40341ccabf5705ada1ca7900bfec482acf00ad2069cf2fb72430fea1b10edbe5832007a9e44a3ca7ee49e1192ed8a6e519d8ccaac68c6a82c2322d9dab761653b3f32ff9b5919e4022be766a5a98c54dfd52c0d5b549fbe02da4d654227d1e83be143abb8838b35adc127f6d7e61152f4f983457caf2c42e41bab1479dcc90a8ddeb5241ffe7a159bb05397dd3446a15300dd7c5651470871b28b35448a3a9ce2bd082737025d659ac4308e26324ba28e139cd18fc16c315376aa5cca400856a76676ed54aacc750245d197264c66ef18e970c47816a46960640b10ad31e3da48d8c039519fdf6eb7dbe7b76f1ab3c255ee300a43c52a4a7b82c8de785f842caef824a50ef872a73b5ebbdd76445d8e02483400ae8c41ca3f4c96314756c95cf2031d5920c3ad2fcad320a87406ee34066e4e6ae3514d5e8a9d1ade34688d82d1285cb6a660d549984f22164ca6833809a2d8c11c2b7af08ddb6a34df707a23c4c36fe71d91c307bef95ced9d77443ccdee9dce5cc511bfc52cf7fc27e4dede7a13ddf53c2582c3a675dbedf6c5ba3b07d0735ddd87a39862ce4d29979448a5ec7c7ef2e2f89797ef7befdffdf2fa99c81d619d0f72ea85b66f5e9d9e9d9dbe795db031207b914e22cd42b96e338783f1a54afc3754e323ddd13037ab85485cb0c1e8385b9b6535c911c9d5d2b396aabf980dcf3aa2f3ec8b0395bf3773f7caa749b5c281731bbd2291453d51c0587d6e5cd1315f71305f1e5e656137b2a7af2bb1e06dc54cdb2a53c2aa9dcdad9df7f83957095e0c55f5012cd3a2b1394f6ade7374ae2df47711eff3e2a491f3a42c4f5e3ebd42d5ac8588aad4390618be0ff73ad2f8a77690454e774324cf628615cbbd48c9c3628db001987fa0ac8f48a75f709103ac5a0c14da2bdba1d9c8ced0d29e84f1808639f076de97fc0284d1d3d76495b017219da46df6910dad49df43673413f6677b3a1a2a171e4fa5d7606ed257d32064c2c98ba392ea8423ca35e7b709372a62572780f1e80c033e32555352182b6dbc12f724a05c2a208e1447e2a53b398dce8a2a3e35cce1cdb851925247540ebdd5c17f735c463af9482c94fbf6665c9595077b3d26ad8342fe9d92e5628a927ad976ca08cb75f18070b14b96a41040d197fe12fd472433d2870dcdba3d56e15205a90f950dfb3ee9df0933fc7722fefd6d11c32f1a8d48ffce9feefff4a89f2b94aaa040c1d45ca1547d87a95525d59a1edc6e1691592a55fee52a966af7dd61bdd435ee42fbed1f767b17920bae6d0f8d36282f283b152a635af52e5756c7ac5519538d2518cdf645044fd6a88c7962d6c5945359a732e6ba35d9b47dfa66ddb1bf8e997da18cccdad05e232d941b429591bd46f76a3bfb8acc540aced7aac9e630cf6f5b93ed77828a1bd56433f27d6188a603034a6ab2995d4b6ab2bd28adc9a63bbb6bb2a9cfecacc9964f1f0a2932684428bf08f1cfcbdf02afb959be15a5d9c6f26a2ea1c5bac8a76446f1d45ed917373938f27dc20c4c3aaa856cd06b8d2ad385a8615fc7935fac0fdf277bddffe3938b7b7b935a43dd718e57cc3a86c34aed8cf85aebd92eb085fcd01d2273b7eb4bc0917c9bbb9aaa3eab2ea65ab9f0af381919b2c0423f4d8d8a2d341d0681f5b0c28754701c404f39a526b9bed6d94795c8d0dad17ffa43989ce118bd8b53a4b6cb986336ff507d5f4c15fcd50390a9319a0bce1c110e3ea48bc934c370510552a8cec971b434a46b9dfd1ba4f139ba128ff8b83820b99ab208ad1d381147cd961df0a25fb2202cb0139d5e864f059888e110275db08b6ca8dd6edffd4cba3499a4c87af422f3fb09461517b7b86b730ad15aef33c6e216ec1115696d8e2fe36084deccf0f538805438525fd23018919485b9bafda885c2f0d5145ce6f37ee70dd9a96929760542cb0c5eeddf162c599e89a6c761a8bb6916f2d927dee39e993642bde224da6b4b2f6d39a1a63da6314f9dadf7ae0e0fcfc95c6225c2bcf88e4bf65ad2e2bf304fbcc104b264e9e008e82d8f1d0c9f79e86b847e0ce1cc69301753510be38c84a18e82c84726bf206582dad3201aa5ea288ac7fc94b223636466bd2c65e1d8871c7a574990c97426ec63905a99f81056dd1ce2a398411e839465223b0aeadcce6f6b27fe784c0610df23b7b98e58b17e6a362729cb335decc27bbd21594c06413402050406fec20270a672432dd397a672c1d285c0d1bd687e163d5ed3194bcd51c4364554547be143bac85ece53e52bc5fe750403886c0ad81584cc6baaf0423a6021e47e8887a9675983866130fce01de9240f3641112e0ca771c8da613c69606b368250916c1aa46d806c10b0563cdd259f8b44dc6bf35573e2e7d3f449578c7f6180c0542892c29bed3812e37a3e2cae0d7f14e48e97f124256a82b0503c38c4a3b6537a16d3211d320e6996e300b8f1bef9410dd2051119d24019efcd30d70f6c6951fa07b60499e51f6c09ef0c6d1d673f18300e01366ae40f5ceee273144fba1fd8f2c21718d56cbaa2f1a4aa1f9a545eec54da523b49a9906c539163734e8324ed036de0b195eab841a98353301524e14d80f7c579c2a4953a56eee2c9229b2edb2896cbf72dd95f0184d1412e1047bf7641e87304ecc3ee48c7717dc8ca8c77b0c651617e5fe47aeae43a42e4c775b8178b2feb27b7e327c3309e41cedab512db71840731869fe2c3381a35ba06e1767b6d5114a8f18978d43b2207e473d327fa3fe8946634ca1a9eac1f74ec352f7c1bca3086fc9f0066e01d117e6abfc66a571c9e0bcad32294345b0cde270b664ea0642e91b8ce794d9d9ff0c22142f0b5abb5f938b943978d592fae12c6be80715005e369350cefc01350bc4367da17b5b8f26b137c4a40a2324b36a29f9d7019b14e54b6d4ac88902c96393df8fd8965f2af8679bf0278e4962a33d9bde0371d8eecafe81c2763f242fea0604b137510f8bbeec105548e50318339c30746e071cc7fbf9c33948b5efcf2fa59efe4ddbb37ef7aef4ffef77db32cd05a966fd0eb82e974f72f9abe1cfca282953a64c39c5468db7a5a07964147d8c3eeddc3f73fbb6a7223003e17f9b1bad0fac26110446153acc0876358889a058b9a259e8a955a3df2a6b5c2cfcf554164650788714c68d66f648a066d8788efe4ec5c412c1c2cf9449420d60a1f377946eadba8caecae00d230d45348edb3c777e775774ab9ea24317225a684fdb6082e69c8221021fb9af3bd8f730bd3e1ac34c9021a864bf828c19657d9b54e2229578a30584332e53428f7d9d82d549cf20595f87d951f4fe99c0dd73d9970327075334e02c1260f35abf58b6f0d66ae0f0097f4390ec28c2542984ac559641d564a0e8e9ae4932a72491e938347909dafa8ef2acea13294480d2842ad0bca7b48842f1b6156fc38620d69c87ff6f2cdeb93def39393b7bd172f8fffd6dc8040e50714a55ab742c1c3f683fa2878f7b348e8c8910f7f6989107cdb25023970a796548422c1e6a8d76b4335cec6a125a718f29043ac306f480252399690cf3ed1bf8bba5707b0eefe052825e59f0717ab8b3914910e575212bc599d42003ae903b202e1b08e892c019cc564c43296cc8288f1bb18e80aa9f40e1608904ee345382203e6c85b7217cc0f583b1170a62ffafe53157fd69dc6664de8fe6bfabaef933e97778c521e7162569bde92f71e6c8df943be5f45b5c2ddcfc45c27a6da3637ad86b63061691c5eb251a143b951410cf13e6e1cf8e4a0584af5a0b28fa1f772f5ddaf424f0de512733b99cb2f622bee9f9466afafc5835b9d8ef8f5c4debf230b83376094a67e7b8cf28d549aa12ca2d4590a64d935d5be98aa8e3ea78f84610eb474013534824b1d71cfc71c522978a40b141ec4c48c4d11e0e709bb0ce2c59731da3911bcdd6e37543553f903d4615dbe46a10557fba4b5e03bbcf7a68cf1333e8cafde059369b61ae775b99bdf1634618dc8a9c18ec85d123994c9d6114247a333000287089f43a3db6bd3d1c817c04da6ad1a734a2b56eafbc9412b70770fe32b65e47dc18770e97572751da54d9277ee13f671c8e69954f4085005c4b7d04e8af2394cc7f33ae11b0d994bd838abadcbcd61d6fabadc9b856ddf18d100d91b5d04cde5163a1a6d8c6d26ae01601be1b8a0b10ae94cae890a40a997e32897b0210b2e6bd56ddf91e25f9dbdc7d1b2d6f999978beb088fa4638875d53262af1d8cc089702924bca621dead59a74b412a11ec363cf824dd1b164af89cf515ac90fd0d7b071cbeba604674c67ce71968228e02682b00c056291500c242901f4a39af244a4560022c1d55680f20f1a634236206c838caa848ccadaffc0aa0b84f6bfd868f9ea65741ca10e105fc32454309de3fd89649de15dcb0a311ee22277fa2a31358b2c99086e1805af2e8aa2a2bc51e55840229ec8bd7fb5cf5079f7874c2bc2372ff07fe73980597fc2ffe710a777fab308a4f88ecfa60dfec0afb5ead1910c916fb4a05ded70e3ee9344eb229358d754a9120aa05f4dab2b5a39c4571156e25c23afb50bc371656f05610cec62be9e28c7cb1bd17d5b3964e3ff20354cf715e7372333a77cc0c0775ccc7d83b9cb36b0ac8f36466f8e2f85666f8406bc27bedab84ce1bfa995125c27ee43cdc6ff5da2abe041b3d51838b0786f629efba7cd764eabc95e5876cd95f0d01c2a1ac501fbc2bcb438ed8d8bbf0c91e1bef397614de56dddd726b7069b394da5d28fcd106656afbc9137c28cb40c61113ee143b5077cd5902ca347e0aa1fa958c189b83744793208d233260d91563913c5a144871b643648250e13a15ce86802cba4c69ea3a2c72faec2fa0830ed257980616ab998a59eb09ac5640bf159ba4f72725574118ca34dd90a314cf58281f097f8b6517c6137a7b3aa141c425c168993f9e89b8f3270c5c3a834b162edbe48c315ccdc96f0b1a6a78280084410a5771519a47aa39cc297fbdab6f3dc5bad808e97afa8df5e94a5bed136fc80f19a75efd8168f550b4fa617dfd7acea4fc40432a57a53b86ad6441728c2a8dfa2bd1e68b28d4d7e030a6288a384b33d29fd36cda2f1ab780a4d36488eace52ce93675708d7620ef519cd16d4afa0e9396f43ff1a9ce6035f8dfe0fd774f1501ee7fc534a67f3a9d6c7e9322c13e6f017bdfb99c83db345f4df35b3507e4d26ab90826bc3a39e4f1e14d9c4eaf12a988482ce3f8faf36bd9269e4fa182c44f4de091331756d429352c11af477aded4d8db5ffd08baaccb5732d1af971a73422d6ec52d5ade3546d802a73ac2e271d8491ec947a94179432c21d36c9672709159b1e40d36a3ae29724938c60f10d8fb607ae3bd2a14f0e5c211f6e285d20426fe0bcfe59a072ba6af1099c9ed54846391f9a822552eac68af648b853c097528e9206c8a2a1d2adb064249e0bed2e8636e394f3a1cdd5d4aae0d9542b6955e2b7f2e1ada456f3967023a8b6d2651afcf9bf232245b1439bf8ef9b26fea66f5db4f33a5de82bce1bf97b287fbb1d9d311f2ded1e5e70021a76f72f30132d2efbcdb89177e235c96abf8c42bb82200f39b0ae0717f87def6213c87b45727d337613aca4b25524cbd1fd4b11ecf16894823f577c1511162d662cc1eaac180cf6812dcd9bb1ed6d260b2be50565415e2396664124ead58b18a5534db4a8c0d696da6cca221916a020f2c3968e04cd82d782ac1441684aae58185609ddbfa470db4d16d169f42c8e32f631eb5b25a6e709c46630d2c73a4d7d330c494f02e27b8671340e037e1e0d2914951c2cc92c1e05e3a5345ac749300922ea98d297b2c128639dceaf063f3ab89c0be1e350f80eeb5db62d831f1d39b2a06d9cde6d10c721a39191380dcaca74f83dec829c8902a9d2c965167c0c2294c0a019c7d42a2677bd45d0874284cbf88a85a9537528eb89c80bba0cb154fac6cb1255e35e97b2205e5cec05a870bcb4758dcd2a6b65af0ddb00f57e616ade9198a3d5b1d716132f099bee7acc15a32a9bcbdecd36dc991a75fb574c0e3cb4e0bb69eb8139e1c2d09543168d7638b2e484520fe14e46c619992a1528141c96b7b6196d84cc5b2255aa541c00249f8a49954f147e3477ee905b3a4399d4a5dcb943ccf8169947e9fa9adc02a8326758598d47bba4ac5905c88a5021e6a1cbe52fe3799d159adbe30caf8532adfc93928eb94cb5e977eec84f6e243583c0db5bb72c8acf95547c81f114f803482967c75d1d27a41f175cca45b4062eacab1b5e14b6cd7c493ad0b19856082699f312170c4f1d570e400ecf406b4b31800ae2c17a3d78d2ebe51cd77102f80130832c742bc0cce521c3c93504e8ab84cee76cd4eb350ba9b460a38712e94476a45e4f3ceaf548870ce3f912f3bb0970eaa5ed066f806acf17e9b451982241cb85f01676ccc5e3720d8887b2e493a30d9fc57132f18e6ced99faef73715a6a5d629331352deca4a36db12691029dff38a66109a305b4c897d0e55bbe0d5dd836c1642f7cbdb8662e8cc099856a45805a51de7bc774da917eafaf2bb629f90a5ddca41635d28e2794246ccc12a81265278f2a8a4f5f41045a71a5299f52f57d06bbc185268a9f0999af515dd2d86ca8498f936612c759bb078e28fc3bdb52bc7847e270f49ca6ce848732b442b36e673ab1a297d0aefc710fdbf76b5c6c2b72cf6abfef288ee7c533dd7070553f2bcd121c0cdf66a8f9f73a26fc4682c2adb01780f1adb84b650ac20913e4a0dca9400f31621f493feae39525c2428b6c42b3e092f916ee47d9547755def62c1a997ed45f2f1e45254c8e3a224532ae45a803d54c5584c07a5a82394dd356364d161b474846d9f43899340e0c5480c83da912031d804f3c57aa9f4131eacf05bb75b809f0ea4a1102b4e1624822883b96d95ea38d22dc8ca6afb329bcf749e40841dec4cd4c3a11a44e5f33c36b505f7523cbd1309042c376769fb510b8c20955ada7d3359caf74742aa2bb6cb4a97beaa6881d5fb2a4d17d45b3697b463ffa047f055169ccec814f0e7d72df270f8a6cf14185121822c8a5ffe81b3eaa8c105d27207d885125c198dcbd4bc3f0ee5dc922fa3a584d56bdd50c0f62fc44ea987ce8b813b56e04e2e81555614e2e482f1745f28531e7e49225cb46f7292a447c7ef509a22063a5d8e31d147998e9d56ab7e677d14273b884bbdbbfa6afab9befe5311216e0404b78be316246cb3f10f3db22e6593c635f192fcb9baf8f967cfa0eace48fd7414ad3fb7ea583c9d70bfddcca49a206e25008998abf88e9f6b0da5c7bb0b68976ae5d1cd637d2f6da699c644f974e80a6bdd62708be009d1fe715eac9b9e9ee5034f704e93f987c8749ff957f04e6b681574de1cb29df3d676c8e6faaae87059bac7214ae67951588625d7b1411941a65b721828d3c056bd953bf20d24b536877df27800c5fcdfa29bfe797b07fae0ddb757b2a02d9c0de293750e55b31b34f72aaf81bcb2c4ba8c3065ac1f18df4ac78894e4903a826b80445d85e9c28154093af6892b0340da209dcfa15bc3ed49fea93c59c64b14f068b8c4431bf940dc3c508cc437d168dfa6d724cd28ccd81645a07a06000b362c04f13394e016a901a25ecb880132f323e75800981d81ca8505bc0b32085f1552f8d9490fb11f2cac50abe706fc63fc0242b1bec57fa37fe0fbda467c3249867641c87617c85e4747a7272d2faf1e1039266341ad164049e8618456d65b80a639a05d1a4358f832893ee8d58f66a48017f468b216449ff3867c38c8dd6b898eec8d8aa342bb03b52bb82c5ccc4599bd068e2f0b0923d5934823efcdf7a3dbafc6b760e72014641344c20948a7ff011937f0c9c7cce911d170635f0bc107e1944ef78134efed0b666e0af68dd70dc67054bf4c97d170fc26e2d77bfd6814f5a873e6955743df0c943f7898c17ecf29efb3e39dc77f6e64f7d72c067feb0b27feb019fe436737fe09362703f9ffe4189c422c62ef629d319e0279772307cdd75c29ca17b21ce791eff7fecbd8b761b37b228fa2bb066ae49c61429398e9350a3f1966d39d1f143ba929cec3992460249906cabd960ba9b7a8ca5fbed77a1aaf06c34453976927d8eb5964d345078170a8542a16a364f8178d282754c4c0c453110f4383f1f8afc4f9080fedfb74e975ea2f8b839b2debe8525b35ec32b3879638b75f55bc2f625f2c757ec1358ae757cba93bd7ed9aed3a2fdeeee362c58bbf7eccaa72d606ac55dabd85bc3feeb715cc8f7793ece81c575de1bfc5e732dcbdc0f2d42f2bae62cc16b574c0b15e5bc0f55dc614f087357c7fd48b1bf278bcd07615e6d3d88be22c683e262096bb24037b5596585ab46c9efb8ec5bfa0df4e79b49a3b9b55fd388256f05d538bc5239abb30105b67120179e2e4c1991b184dcf71b4e77897c0681ce7d4736545af317c9d286c91758e052e3b51bd84588e27abdddaddb36fbf8d9ec6c55974a648249b5a83ac31f171ceea2d39bd150066e48fe88b98df9458936e61eabe7207cadacb5e5d4297ef12b639b3d32ae8dc63da9103c9efb938990df867b8ce2a1b387da312cc1542e68a3de358eaa80c828aabcf5e3b8e3bc4e328fe2cfb23306ad739f26bae2096b38ab60d29ae5042b57d6a455c7bb0e55dcbc773122337b31b2412e8d96f1a1f6994fd319b412bfa06fc95478de1c7407ceaadcb715e199abe18a550efbaa9b3a3f13390d4a8d21c4088f62463e143adc8d60dfb659ed025d532b749d046f95124c114f3cab896b11f9db1a380e5dbb4b0a87c5656d83148b951974523262cd8cfd83adb39b1b30daf976ebbf4f0fb65e6d9feebc3bdcfe697b3f26ac3b3aa9d317d5067d55295bfbfb5bff8af900363696339083bd4d32d5ee308b15f02571dbcaa6a31bb69fabd5aa37dcf6193549704d094346e69c995b9cce5231449cf916994d537c5f92750e2417082a8d073b6b08d2b10004f2f7cfc1d1dfe3a85d637fb1de2f580dffbfa8130b9798dce3e504ee7b3a83988ebbabf6133b8699028ed64e1696b1162b28bac6b0c4d070142a0a23c38f69b145632c7dd3e36db8f959843349813e7a757dcfd811844e58cfd1ccd57e98a165c6bb133563c1cdd14f2223a7059ccdb3e4b7b9603b2f51b43ccbc528b902e9325cffa0eda99d97f0aa6736139979b3f3c76d29d63b1934cef837338889f1baa5754fe4e2de3975ef97414b84de19361b60e46a50c61c17eaa4f5b52751ef75ba8c6acef5b5efeef0d44959b1bfc1d38764c836d9a347c9f0859c67a5c843ad35831f3af723960c431cf9c24eb286c3829597b222f7fa1482f66dcd7dfa5bee58120fb9123e1f6b2120dada230625c98011a397a6f5f2403e1ceafc8518c86c78670106fd74112efa95b2749e952d423d3e1c369fc634caa2a662c9f2a11127a931d9d5fab4aeda220c479bba55657269b81e1180c6164728e66f64d3d95c519533eceb19cbc121e710efcc80b80c922291d9efbd445e8fef650ba79e26cae14a4b890d64f3d90209b069b496389b08b7801a9befb149770605939742808148d2e693cedadad30a0a7c5707feb4b3b6f62466c4f269672d669e1833ad3d596bb3d548a6f5351fd734a6a96c5672a97ad76ca8b8a80bcd97c94532149f8d0a3ca979a0bd101586d0863a3a00c9c54232001032afa103b1021662c46f735926225b46fa73dac1c6d71083ce77d119c23c7792033d2e6dddc12a453043d7d5309628acdf8f280ce565f697260baa81bf9330501fef4b1a20db3d88c3289532afa10e4f6ae1d73a6b4f9ec6c8834aa8af65ed699c3e3c59aba10f902f24101019a5100663c0ec01bf4aa6f3a9b5d77d06bc34294260186c37a110354799e3b55586701eccdcf3e1c6fdb9d728a2d1d108450d8746e8003c3470e1a0ceb8848d7a6f2896428b29bf6a1e3d817bb71fdaec695540fb435da62aa819c6ca143b3683aef01625c248409f1f3ea433a0f183a48ee2db57652ea6f3699394a5b49c074d07fd54b658cfd6be9ce832719d0b5f55eeb7f9407d3a0f29ce482525b1ba705aac04066ef960a2addc2a0aaff10e342ff12845267a55816a28fad758a229ceaad62924e4d9b918de438ed76374aafb222280cf83b6f790ddd93e3bb23b6d9ff8f32f844071f5236b648e6f918cbcd0c4f5f2ae5ccd51f3fe5f3ade6e6427db887822b32557cafd14c3ae5e3b1a59f5dc59ad2f6ed64b15a4175a555af809cb352696539bca3d97af4ff505374e118d0a8a21fd7fdd35b07073579d5a8e6c0b9e2da6dbdf2d9c6395bd860e839936936e69ed4235e3385d153cfbc308ab91f4f405e31722e7636707ffe3c9e83d8e1c7f2532fa3b90324e429ff824d4847f70c24feb48abe0d9a7d2d6ea81f713486a507f8ca6deb9cc96a1a5e192aba3978b1e847ab431c9be72c491a1588eb4267750d6c7759996e588432c496a69f1a7f3c46f7e2f4f9cfc71a4fb2b4ffcc7f0c4f75c0abf83274e3e996edb5a3e07014feea4dfd5fa6a96e81fcb132fbd7cdfced33299a5d77faeb4748aad48484a5695976a8041a87a5153d080d75ea1d497b5908bc16724cbc94fa986ebb804f5f19308aa80c9473d17770951ed70b5bd1e5731ca19d86f3cd04f16a9fe85a5a9bf53907a7f19ea3dc4a790e51ee253073e263e7d12bf5da15cb5e2d3baeb151c80407c0a9151f1e9c1bc5fe67c507e46a2f10988304db279fd0d4b416d5c482e1068527fdf5a53cc42ec182623b275b51466e81a6a884574be749ebb29058e51dbe9698448d040ae3a50cbdec3aa0e17f3e99791a4dcebfefdf34a528af974c9d99bdec1ed57579cd5fdd4dbf9fd5881832ad3ae76fbb57b33e9c57cfaa7c8578af974faa74a57fe8732e49f8ea89f5fb852cca79fcaa3db25f13b78f3a0fe186ffe78a18b632ce077f1e40777b3e3d185f93955a0a0c42edb1a6a63f4856b788191854e8730a3c9cf42fc36575b54d1b14383f60b3b7c54829128f8ddf093c04c0fcfaf83e8a248c6994a81402c71c726efd400fc9a80d6aefb1903f4c022406a53e4a51fd9172309fe5931102426c0fba89f6a025a52a55035f9b5b8a6e4d7221894012fca2d32eb60c2010899bf85df30699e9d43d23c3b0f92e474467b3f86c2e46cc03155052a89434c1a5612d061122442b002809efc378deffa10609e95cfa1b7180a92d170ba665882c4798e06a0d46f24c9bc5c341f3ed050f4e53c0323c63a180280f7f102003018077829c4cc01529f1540581df01b26a530dbf01b24199e50a59b8f3a201846f7b30e9016831f1100e7127a94cbb027b99ce98135e11a905f4153dd8183882ab00b17011925b09cd44f2501890e0682c494976fb9ea0485a2c93473ce570dd80c86ccfdac02962223985264d164a73afaaa01b3d5e9cf1030c182924a09e05c5cfd5413f4c499700092cbe91e4fc0bbab090720c634bfb5295d0702d4dbf9f2c1c6b99ccf006529e427275902fecb361985c2e452e485c04d59c1d8cf7a40a8cd8fa807a64512468519c0f1ae0253815822558ac10a803c1788a4261c80d867263ae8039c8b6ba8017e2b49dae47c35012607037ee2149a330d1b32e5b3d7581e852ac9bf20b30000180e41c00b170040289aac0d4d59301d13808ba94cfea3c6854261723ec6c47c1c4ba2d935e11084bc1e612096083e5674300048ae6083865f3f09cceca876612048048baf2a11027ea29c2660497d9a94d504c0000c0489b877c8caae012632301b868264b4f8a97eaa095bf9b8a04415ac0268cb8c265c05212b793ae80368e78b9bda0d6334591333f733024814c284039064a01826f5534d80f1c1409068917416c54e6b7eca0109f16436877d4dfd5413b64c5a8585a4486c9d0e474108cb9daf0858a92182d1d3165ce03792a4c7df7e0440820336c36f984496c93010264ee505540c8130b1c07c4525d785a2d39006213fb98013ee01520cfb110009557621ca4a340d248582e4c97c3402fe854241729ac01a84df2049d2f680816aa218becf92df08003fea804c39fa33009ca5403fe0374cca051f429a0af8892507157af513269c0b483817d5048d1a265c03a2193f3fa20aecc245416690186c59e524976589192958019863e23c4890fa0c46a130597349148a26ef641620dc64f1d11ea5870855cabd9427d9aef1a3e27e07a039cf0a75ee52603aec83cc333c7fc36f9884b4117e2349cfaf7562884e10498bc2842b20bf61ea6fd5045d72054f559c2df7b758b1b84ae1374cfa0f30c5f01b4932e5523800990d716bc6402c5117603e7ca00bcd005d44b81f8c039cd0411f40dbd6dbd456f68264990f55d9f01b24e580ffeac74fb802edf62b9957a261fce1b792449da4909f8ce35b19ddff243383ac265c03422720efbb024a6dd0f3a445553c4d7841c2272783c8ca3c11b5cb9192172d4771550a1071c4654d981c933455846852fb01b19e78ce4c7bd16114a6b7a9707b4ff207caf7e6d972123e670cf0d51e1f06fb833a9f4e67283d83909f3ce05391bee0b02f9b7008324b4a9ee2ce6c3f02207ac925c26d6890f2a9c227f80d93640665aadf481261a209d780d0b47bdf1150172c0242d2b143e988ca0ea50f3414fd798e522215081341b60405987000a21f5361205c05c382daa8830180a2d622a0d5a218f0992a1203b1c47d31debe9a1910fc0c00e93c20aa6781118a51471531aa8ad921c30d265c054151ea28264a55916f38b08b3a180770ab31df71505b1d7d0560f4a0087e8324996ff301087530144d36021ae7b302887215f51b49724aa08f0ad0ee2515b07b592d61f7d22d427ff96063d881c7e1fe3b86d84a2498c80837d40957f47ac28b4a34f40e7e8324645227151655df8eb14d73b1190080255cd820743004188a2b38aa51284cdea7a31085c264b01ba345384162b1657c016c32e7ab0a860c2785a2c9cfe72314237bdf51d0370936c97ed58299adbb121766219bfc004ae10a886d62bc752f91c9c24098b84d37c22a9dc21510d01e060015aa24ff3647a12186a2c95ab267bf2a60792eb113100a93d12101ba0b846005405f17ba1e054320327d0330140e41de68a3343a180290ecb0a8ca0d0b707a4f8965486e28d28c84f90ac1def17700f08ebfab2681a16a4c55c10a408233f12edcb493e21d8a3e30504d044d1a4c56c110c0c1d838a262ac5903f63304f40f5ade77086af6391d0c010ef848b873ea7c57400556771092d0a4405b18980ac10a00d85f410008860087d73331b4e4c47e8680ef8d357305f73e50fb3460bf0a7eaef18cc23110dd270afb201f244844d58f9f702efabc4f0ca209fb2029eee16965ff4ef55e0da4dbf90ac0e4a5c8a90a138e80bc026d3082818f0008122b91506c4802a6fc0a04d85795e8e728d9be0a4f5e5324acd30a4dc5e71c9454c94582e6304f4259924a0e6306946d5a93a05510b06e4920af1c8b960e885936f6a30a64d0d97e54810ef3b9aeebd05aafd37db1faad3ae8036468b62ba45dd647a24a351f21105c73aa9f30e112e2834bb419f020b3900599f1e1764629db21273be3c303b0050dc9100c01f242510a945243d007c87936945314b50e6520dfc90518aadf641888251a49adfd0ac1668223840a5412534e3540284c26eb659e39319d482aa2f01b24394ed21584f3196008486b8dd8364824896e55969bf17341abde840310bc83282af70f2846d5c702e7ab16cc91bed2772d28102bef3b06ea9e4b829885e04e439cb885599c06bda9a3a160cc5c8fa60e4740f411d37e044056055507438029a44d2bd1d833f5eb2795623a4b91a9d4c10020418fd3f01b2449c3cae96008607774130e410c97a6831500b5a360ba0a85c986dfd1c110c0e72cbcef0aa8a6b73a1802bc9fcda8140805c9798292e4645a4d400a47a16ab2a671261c82ccb3014d13057d807966840d3a1802a09531120dab6000a03a44486ac21110bdd1db8f3b258c0b4eee62b9633bd5e91c5f7d6960d44137686d6b47eb1fad4766709e0ea7f3487e7066cd6abc912723d67c30e1c5ee65a6efd53b039ea64dbd1769a9a55742e0dfbbeac7dcba2ad7300b5c467bbee46f9badb62ddd77d74f105f4644aacbf4fd561562cab33219b00b91c3438fe0b586015e4a73580da4b1efa7a3bb0172fdb2bd7fb0b3ab8e5914426c44ed4812f531d87827321de2a3092cc0baa43f6af4936c0826235114068623e7796e038094ea8beecb9d20269ddce9cc1e1becce7bc76917b0ce43eb57fab66596d5d91bfe9feb5f41e49c9f1989f448e6ecec1434c0cec011ecd929dcf69193f0ac8cf754c1abc62bd0ba46b75192e3b4dd69c1124ef27d93aa8ac7cec0a6b87500f58cadb39e3616cbaf9aae295bd7374368e3959cd6a3c69a189e9eb2870fd90334e5fa0c6c933a2d6da20fef1ee602d972b3e5b9e4079fdfda9dbc2d3458b006428d19986104a7f39ea9db188cdb8b5b26d491205eee45222e8bd3d3a8a3fd8662ce1abd3b0ceb06aef51b6a7a1a3d8708b1474e4f87497e7acafec1d6d833d640f4653dd668b4dc523ccffb9eaffcb853fd5b6764ef4217f648d7bb08711c6fea5a41a1d97291ae99b56c82d790a55610dce9e0db0bf0c9655f5fe8e7b6d5e58348a216d0949b750497eacb2f2685d140db4862ca1eb1756f0293e295d6cd44b84df666eb7fffebf4d5ce9bc3edfdd3576fb67e6237377edaaf3fefbcd986a47bcc833ffa1185fcd8f28b2d24835ac69d73149d1b3ab9d1abd1deffd647658dc8eac7c1c69aca1db2b0198dbdb93163bbb10c3e2f85464488156f620871ca8bf22c8a400a4ce18d82b827caf073018b6793a8b75ad39af479cbf89331a06ef91de9ba4f9aeb2dbc8c6fb68ed64e3e79b0482bd5d9b892343e5e04894b2d49ef37646ab3d343061b9f3764305a386e9f7fc87cc45bbc371de976aae18d8da96e5cb469cee38468b3dc4661939a15fb4077d4a0ef19adcf47ede278713d160c9647f33ef5e9cbc7a5eb343b016477c097acd4d5275647847d51944ddfcd659bf17c5c0476c2556639425be89b9baca1b33462a81145033be5158be1d0b3299f390d096d957b2669d043853648eeb479a372a2b813af8c9ee1bde71df5739b2e89b7395bcb4e88d6fdb3d58360a4cdfc17b5853e3a1b1e12626c8f2b5b58e02c21b6533c7c48b5b17fb235b56f886ca838a6a81df87052b1c0e8b4aafab05c55985f962709b46a7ecdd5a03fc44b9aa21616a3484b3820417b54d71eb8ecb95720aaf6d8c15583bf11a98f06883d736ba60ec084f5dc9e35e9f1736dc3a25e16ee40988a66e4a7100fc3d0b9d42be432ef6c895181bc9324c368d479cab8bd8b85add598c2fc8ea823dad025251f600e7a2206e73bf64145f7dfcd673d5c31378ae0de4cf9ec064946eb0606f0efdd4ea968a85364c0e61ef273e072a12cb543dc28b6a8755746ecf12b747b4fc76a5dd8338739720e1c8a3003cb15f24acc3d259db4fdf359f9dea87a6d9ae6dedcb0eebf558fabad0c08cb03dbd008d988617d3897cbb11d6a7af0adb7392153b34f4f839321c7d70776b48ed64f58cf3cf62e02f0a45068a3b52e59028f10076abb73d029cc637144d576b4761200cc0b41a552f1c096bbce363cf61e9dd094225707355410b24e824c74645b0c28bf9d8c0e9fcdd26b23fc0376734f1d56c81b076d992e99735c78e0c83d7c883a7f5be0da1a2b395a3b3154ce3d3c57640e7a04a01077593d7cc8889db0a3e8b2140a40a7e877d10f36d97ad06f45332e643264a9aa658e9b85e7b46ac20bc6d9f10a9671bca2edce951391ab8371c6ced68d21091f15ecf4b9cefa582825409a412364f012622a5899143f5ff7737075f1e00141a20110758e24773e6116776d7a4bf5e143f640d71ce492597aede31ec88fa8faca3c3d08cba5be57d00cd79e29fd1945f5eee0f72a383ab2d8492c9c66dea282233b4651d1912a4d1d9e27f93c1410a9621b3d76e4aca0709936545bb7f271a357b18987b35d6d96e5866069f9fc50dba043ad6409ddee7823aec7b42293335ee869bc546b435eb722b872e5186a589a4eff5b559180db96670ed1a409b00761cbdc505c950ec48ec85b68b76339fd67f7543c4321ae9a75f55b4c921148a70b99e3ef4cf1ce2a34cf30f16ef934d874c73d1529a26ac251dde6087349676bd8be555b6e54fd3754656c1bc7ed79067baf1affc6a20d178b95b39bdae2363ec7ce495b2277740b7d8cac10179f9645f61c6f33268c886d260efafa1ba043418e4eeec46a2ba731b372b2f0c0f8fb1b502b6e55e7e7699225a34468ed7996717212584e44a2a81d4f31aef305f8d41873e8e042c0a2d57068aaa073d05676b8868c24d78d805062f7e0a95eaaea288ecec5f589e26a9a41d426730c8eea9c3139a94af0e4f7be549408bb6d5b7c669c733eceb96e0cda83c04daf69887b9bfdbabfb577fa7ce7ddcbd3d7dbff0261720b7a0d2db7d78cd4ba06ae89dc8e876e58b05fdc9e449f7ab8279ace1d222e7a8da0f89917ce8b843ac1857ecda8e0f7bd178df11c7ac12a78787d6d1aec3fec70dbaff82922d76764f3250fafbe6d0da0204450e15b51a79f649d84005f548d9478623f7cd5ac81e1bb0e3a434521827d57d113b290b3144d8e10e85e5a313b121b6982de8f3d1f75cfc5ffeb002e6b2b293003a88a184db255f8f3031c6e8de2812b50d4da8941026914603690a85c4f911bf7dce454761707ecc436ed50ea484d1475d1446f9d2b5ea49b9fef565e3f5dea76d9f6d54ce6a56eb49606289a761ae88a359168c37bf2adb72f597f9ea443266765324dfe23f2a28d76cbf2ce87a28d471590e00f64861ed1d88c97a5c833b46fd6d3553962512404d5538c97dce1d32180a06d2900b029661ea86b8520fe92c90c56e138957d9e92b12df21c7821b292893c9779c12e2722d359b449b56e97a5920fc590f5af1967c5204f66252bf9982519191f15052c7939623c83d1810c5a9b410d9b3a4895e5acd7ede6e2b779928b0f4547e6e3ee500e8a2e56de9994d3f46fd3a4007b0c307a53990b3614254fd2c216f6be005b5c56d712ecb9d1736e6afc2897d36a8fa98c5ccab2a326f814e6f4250e3c070fda3c93d9f554ce0b3695c3792a5821dbf0ac773e9ea0e47aca67b3241bb75952b201cf585f9896e5820cdd0c5569aafae31545e1f362207371bc42659ad58733d75c24f93addf0f6a65b55cd0b835e670210b838437b58ec0c4b3c838776bc108c8788caf8705868ef95463a3aca85780b6d735a60d787aaea9d1c8ace076349d3cdd3a156a8116d3903ebe456245766ffeb8015f3998aec58e64295839005e5a51e078a00b640da526253eb4daea12cb72d543ec233e54a7ba5fbcd7106862267d739e8543d5e5bff8eed7145c1939c1d8ac12493a91c27a268b39d6cd061ea6c0ea0853aae88fc024d0462396f9281c80a3184ed3c87c66dcdf86022744a9bfd427a3e8f3b6bac89984169c72b30b5dfb06b3967537ecd3259822442b5968d9254682b886a52e57496265cad36b03f58da3aa039ec5f5488ec971c6c840ee4ccf8d62648c64bd374f5472bf3f2f2b2c3a1d9b03453042eba6f765e6cbf3bd85e7d0c760931dbfb2c15851a0a58cc481a6660bdb79f0a96f24b2673c6c7b9206fa919bbcc9312964d2147e525cf0594334c8a324ffaf3d21b3cddcea4f00024f8983c5ed93a603b07c72becf9d6c1ce411bcaf975e7f0e7ddf787ecd7adfdfdad77873bdb076c779fbdd87df772e77067f7dd01db7dc5b6defd8bbdde79f7b2cd4402d21b71a54857a19a9aa861a529056ae53643213058339c8941324a062ce5d978cec7828de5854037e633914f93a20093453c1b423969324d4a8e668c2a9d83aabac719ae1dd873f664a1cd8800d63fdf3d3cdc7ddb63c72b7d5996727abcd2b6d1a76fb65f1ddab4d5548c4a1f607fe7a79f5d08405f02d1999d5c2aead456a95256bd7a01e07077cfa496724649a62ab70e88744a8434bf4804a13231dd164ad15e84e97529676e97559269844aa3861c678a7ba031b6d2d0420ff5cf324ffe23b392a7cd19451105ec7ec392a2e4597f9eb2649ca99d083843e41d883acfcc8c6d6e9ae9eb1ceeeea9334d6d2274623104f4a51e0407f5aef43bea71d164e338bb5d344ebf88bc4c069f759416374e23db1d10770dc41de368f0ef2e10ac273e4a63516ae81d1882ad6c9c8a221c2ab5cf7e597c317b378dbb0b41dc83d9f1ff20bcaa6d9219d0255af51931a5b63d0ac66d4d0d985e2cc856002711b212cd414bb113dfae225f5cb6d92b3e107d29cf9195307b28d83d26b5eb811c0a347e5ce124deee1cea683682772ec87723e7817b33b209c48f2b0e880d935c0c4a99d3de6f6b2a7361f61e18f25c0e4451744476d179b7fb72fb74fbdd2f70c9dd20a7028e8286daa4f6051f943b28c581cdbfd9c855d46a5234f08cf4fc5aedac693248caf49acd0bb53d9ecd72395b554799e20c181d9e0b604a33758c2825c8c287e242a472064f73fb62c22f128967886e57f328a37e672abab6b0d5245b55ed748f6e8a5bbfdccd5ec2086c0d54eff035001eb6a721cf6afad1e98e388cd9af493939bc9e0960b4455e345a4deab67d3cdc8ed5a3383917817ecf68d8e1bfff602cdf4bd587241b1f4c92a9ea267460a5bd42344eab851b5a77aa889d3edbef8ec0a0b2aa2e88679b0c5fea750a3ffe998e0fe07b7757c1ace1e6d353902fa09e62b4c0a66c39b2037d968ac1a8dedabaf1b0fdb829fb1f5aeca37b3cd7ef613737d9b1c970bce29cd011824c29ca9c400b883d5e51c5e9e25d317b58a516526399b2ff6183dd6e18aa749f2264ff43a575d1f6cbfe07b4a09bcf07bae1048ea9400fa87b46b2c39e39bd63bd6a8bf5a8bbaddb40414f2d7a212c752410902ce881a92398835675121095284364149dbadd63b8d789e3cccaf3fdfde2bee5fec173b4a01b483ffdee6a30b54692294c99ee2008588e573a9d6ea7d39d887426f2a22b8a6917d38f57368e33cac28b42e4a5daed76504535f98f189a02bad164c85f8b25335914493f152fec80a0d5f96621d2519ba9c3be833fea13f4d474b7301d8719c507c72b5a4f5c8e207b65125a2119525091a18b7607da75276d2d02f2d466334d5e8be5c8ebcdcd52c5318f866eb2d9864f600de9745122569c8f1b4163cc0cfbf18ba736c926224fcaa259ccfb2f525e146d56cc672287709526d834c0ff70d504c9d9dce005c3ed1b765ab5d583018ee6f1cac17c662503e01d6b5e945a60d0175004c83698831a2e1ae8763b8bd0cc16de26359d56796d746ff1a891ce92efb9b777e95cf44c55e656e9324f4ade4f450fb81d133d90d92819cf739b64246346b008127d67a083d98ecec6866681bf0ad3be0ad3fe6ac2b4e75b2f5e1fec6dbdd8669bec870d2fe970eb39db643ffa91dbef0eb7f7d9265bffd68f3ff879e7d5a18a7f1ac01fbcd8da53853ffe3ec840957efbd88fdfdadfdffd158fce9becdbef6389eff754d20fb12414646cb26f7f8ca5bedcfdf51ddb644fd6fcc497db6fb60f555b9ea8c677bff9c63867b99c08526013707dafcf9f67222b457ea666f1ac98f181386b034c7929c18a373e051bf08c0dd264700ef70b6529b30ebd37ad4a905e8bebbee4f9f085826f9e8beb1772a86f19686ba148d872711a6e6ebc4818d2afd4e62bb5f96b511b627bbe81cbbe224dfaa7eb9ae9814f9709062010226810909ab8201f5952bc9343b19d5db05bcb3dcdcb242d004ecb9ab632c6fb051ab85058253391918face7e95cccf22473120a58ae685b14b227191a6357b3cb8743304ca2c0a732330b97a749794d57daf3ac4ca6e063725628d623191adf94b8e8810e5183f6e6b97861dab48954e7bf06c0ec28687bd7790a9c0451021abecee92936b468460b6c33ca45bca9292d0add8426b715ff538a2bfbfa03eef761896e5279f67ab0cdc24cea5c30490a106dbd9325eb83eaaf421c7bebac4dc3c2fd39ea6ea93193f35291812c2926ac2f065c9186412a788e821e184bb6f3522d16ce32b92a67f641c229aa5e62293b6093f7e8c45828709cdda9f2983ab19c67f23233f51a53025dbf44a8ff5037ae46df4f71836103b416f53f83e7386a8935614813b6c9d6daec94ab710d726fa8e47fb0534ec5a8ef478f221a81268b2a841f9d26279e3ee065920de5a5d78ba6c952abf9b76830adfa97a7def2c02cc6e6f18a95c5b907415d2ead09b1a73087c60db0a855a3dc724a6fab4c4a147d83878b10f76b92a6fb6220920baccd7f142eae4a88352d5cba23917ed8d236dce3c2c627b4f87d3695f3ace6dd65152b9b2d4fef07715dd1f692718d1ff01e3617680d832565c1765e7608506df84529d5e66656e16592a6eafc06158921ae544b3ce7d8c2421761dcda7176bc32509b767abc625b0fb4168a84f24ca3a054f297474519ef6e778d58214a1a006f9c1465eaf3c1795b57e291b109cf86f0808bd6852d249271c31970675d83562516d4f205018b1453620bd12fe4363a8bdb5931cf053192e4bb7856e80d9afc3672676a782e70d7d173b3339da1089ef6e76222e7e99094aea0582cd264045c9917739ea6d774ece71943e39bf8dce31a803359de5187e2ef867374cf2cb046a72770d82fae8b524c194f73c187d76c3ce739cf4a21346a5105aed34b2abc2f14ef3884b743820f15e7070c43a3a03c47aa5f87d733519c3415e357f4badd11dd2d75c6493999f73b89ec0263819a55b998178aad5bb5dc00aa59c1a581ddcb5b6c247839cf85ee3fd8b434d5c119a0b0ac00753c9f67f0ea407114eeddcd540ec57db1dfa33dde02386db18fdd2eb079c68f6731ef034b119153452b526707bcc2e978f1c847d0a1e5630d1373bbb1d25e69a8bd5bf1b383b201994c0361305ebed86eda2b71d24c3a3ddddfde7a7178fa72fb97c3dddd3707a73fbdd97dbef5e6f4e7ddddd7a7a77447ee08b3ee805727a18651186e3802cbc5193bba8578ad577d75edbcb2bbb56a89f7b91864e8233329583fe719f86365f34c21e2044e159af9c173913d1c22fa284aa535a0d54c67cedd575b1d3061755955caa40021560cf73a4e6b448e8e15e945976d59512acaadd2db6ca8561a9c7e85e2f933580eec921759a33465a1679d940e4ac6396cb7cb5ecaac51b2c1040c37ab5aa6a228f8587488d77f292e0ea54cd5712b550ca26a7da98ea48564537e2e982286a6b412890294c08652a846303918cc73b864b8544dc65b5e6718db7008d2db911a66531ec78767742d7ea15d3e5bc9274a3d1bff3efd77c3136296f9b533b1bf883c195d5b3a07c3c5fb8af19df082f585c822e32886acf9f2c57663a8fde12e89a54d1dd01a8f03d0076d8a3c77b1cd8c2c524f98869c17131cf836cbd40097a5c8d9e5843b78f1abd0f416d12017b0f8b5c2e4a54214c1cf718c078692812456a6a203caaad018a306a0c6ac76c56cc6578ceac18b6ddab4a841133e9b898cdc80623f5eeebe65fd39ecf1e24a0cc0ab7521612a74297a1cd4298f3ad3e7437a5a32407c1ecee9c8f141586fe19670dd792f3ef850e0b6b23a94d38eed4d679a649d0f4523bcf75ebe2c77edea82bc1b592477da885c53f63fb4d9b9b86e33f7b18e1afd7301c4c0bd6623b17b6d11a1401d5f12ea4891cda7225f4a9e5e23813ff65577dd8b42d9ffa05fba40ad919b24d9ffb041d85519cf605836ec25cc2817e227dc7f4084d0e8744f6d9c1a631205be14a518203c1a425384faac10e9e8ace31cec55fa8148476462498e58015fbe0e3ac4d16f475becddd4171f3a856a7e5fa08234b70ad3719d5ea719a0d4b2e9f6eee6c6b6ede68669f3e7cd86f3cc8b341a82db2655d6868b64bcb8ce063fa14370991f9462d61c0bb45526d30bd126ff616d76aa0e456d757ecbe5252111cfc75a8861a9263ec51e49f05f90c14c3715e0864dd68f351458c7c10187de392f2bb00514b9b168df86f28632134e5ee8867d321e22e35e2ea749213a3e60a79c88ace975d9a779b59778309e87d28c687394f912dfc8c1026c50129e4d12f7797de4d921f31fd152fb1d45fa60e682976f6374a09ad1833ebc340edf0fdbeea81188bc0dfc54ac395e51dfc72b9a84c5cc1b38da032a93b7f9fdbeba21a02a375b58503576d79a38091e20dc7589ade577fae69abeed2528f9e376afaa9b25cfc7c2ce921129256c93ad6fb084fdc34ebf1120f9f223cf86a9013e4adc778ca65cda2b10be62b8941aeabc7d8a1832c5bc400342bba5d81b4ddec98aa9fa8ada2d8d8b88b08ce8453c8d68f89a1b3bbce852f6e9d76b92afd7247feaa5ec6bbcd42bf40b871fe079021f9cc35d23e9f2ff083afcbc4f9febdfaa6fb897a498c76b3d90cacd8a540ece75e4f700560ce8fbdbc7eadb2df75b2868c6c762ae5f147cfb44470de565a623bfc30a87fafba9fa9ec8a929e8fbe0e9c4b7d00f5bea8fe1538827d062a78e2750479215fa1bea188a94bebb5db2080cb7ae000175ac6978a8629dbebe83e21febaf75f5f5adfe827178a2bf600cbed35fd0fda7fa0bdaf4bdfe8216fda0bfa0cb3fdad6f17436e17d01a790a7909153e253c8a867ef2964d493f2143aa107f62974428feaf7d08991fe824e8cf5177462a2bfa01389fe824e7cd05fd0168d14df435bf4a07e0f6dd16f4fbe87b6e809f91eda22e9eb07688b9ecf1fa02dbfe92f688bc6c51fa02d7a1a7f80b6e859ff01da32d75fd0960bfd056db9d45fd0962bfd056db9d6cb01daf21f3bf433b56dce61d5c1fa588382bfd1cb650d4a7e643ea1b055fdb90ea575cc2774adab3fb18d1be6138ada349fd0cab6f9f44bfed12ff947bfe41f61d4cef4625d87bc47fa1357f4b1fad33190fdc47c42f646f0a0479194b772988c12911b9ab20e7d004b18ba72c4c1324f4dd30161530d806d9d8a52e3f08fdf06118f1f3fb131b56d789e946f79716e9ac2d3b247166b55ed3df618c2aa941e7b026168678ffd5029730b5f6aeba206d361d0a4819c4e7916c6a2457b9f144e936c5eb8733595c31e78631a345ba0228a05b06098e44ce1983f54b3148bd2f8854c4948a12f93cc1f2e4d32c001048822d4869164e51c0453208c3bceba5db808cecade3001b9351d04575350e84d5755ee55a488bece8d1a45f21b0fc375bcf2ff1dafb81877bcf20023d64dc47f61c46313f1378cd094f3ef2ee13c5ef97f30f53b13f16f8c786a221e62c4f726e21b8cf8c1443431e24713d1c2084dd64fdd5982417617e0f1ca478c383211b7187162226e30c2594ac72b3d8cd3cbba71bcd2a0d54400ff4080b689f82746744cc4338ce8dad9a48912d91df3d4ed9aa339d33317e1ef37d9fae30df6e85142bcb4e6148ed6d7d7d92396284e1a7607f501d2a66e97bd9b4f679cde7e7865ae51993f468bfcf1a92d319b4fb14ce3d402df40c494990672da97e0c24c144dde667dff50cb3b534b8b363759dff97ef890f10ed849818473f0e8786b553a5ec8ec42e465c138a9634dfb92a1417f7c11e2c66be9c86b1d5368878350d67f442e997e3daf9b0063df66c57c3061bc6067407750cf8ba7e5591beec8c4151f94e935931996c4cdb43939b7ceda5a4d0c44cf678a113ab34785578a2fb6f3ad1dc2021bcd3812bc36139d71879dfd17b6e0e6accd2e054b32d507f3b629130351143cbf36ad359d518de5f3524e39bc4a4cd538c00002ff696b27b1121447c696c450fb5ce84053c515b8fb6943639282a9865ef014346a24d5fce8f199d57671c80eb85102b452d3e25c5a79094d9823e709d52c513d030fadd3bed48e8f9adde3e3a23b5667f4e3959676e7f28283ad4df0a7de048a80e770558e836e6ccdc4a2359e0c1ddea9c88a8206d67fbace362948ca193a3eaea2615a6eb29dae937ac6b15136200050c5769e5b54ef1c8e575ef124c5b3138c9683df8a74c1a2c4cf4748cf563ac7ee211bff7e81fbdd73bb105229cf516f4965194c87ec11ec59400e210e677486113287b8075865455f43758936e223e8da097b10a8913333283e60aca8904fa82fd34eeda3cd0a7b11d4609f4f9a6db0bee0ca16bb9a892b45b833c132b98a2447d3f1e55a63982d2bdf401c0c9b5363d8018101c4c77a4fefc49381505ed3ae9e0d92e0f05c5cf7d47fc75a66b551476c413b95a1191422b5a83580d837cbe58c28718c048c45a9d7b9f189e4be0cf6139bc22103e7c8af1ca1cd273bc66082c7ca734547b164af8535eca732a2d68666d75aa1105874785ad6e5016e2e92a5a0f98a66a2398e64535c5e5d2ee400bd4caaeb9793043c1d890e84366c71869d3f82141785d599583ac4fdd87f3b6cb6f74ac6b05901644c226e8171e23aa35c4e5f4c78ae3236215f40a21dfb2ce08512661724588afc14a2d09a1056e9b9007f954d207538482e96be14a5c8a749260a474bdb6eff8e899be44264012677d8d69827591b511ccac3ccc64971944b28583317f46e591bfce927e59417e72dd874639c014ee62558eac116dbb69dd10c9fd11d7a692475babd501cb6f98ef555b3b2c2356537bfdf876be742cca03c15757f5c639b2c808aa399a2934ba258b88afcfdbf4ada6304bd9640dc45e381689c54577f489cee2a070956a4a0908cdc551092964841153276afedebb672b80916eeefdb7b0e142357cfe6ab3478f3959473b5212928b82502992b7037059bcf700d22bfe1b0e6d8c233b6fa4fcda1775c79b6e28a40e3ce635b5109adad954f40236d2845c1deed1e1ab69a58e760ed171d7620d9191ca5cf50014565ea0b9d0ff9bb333bc66d3c709f9cb5a2ab3d93f9145e4cc6d67c251119eb369ba5bc1cc97cba7b21f23c1946f6d8458c7685b57609b4ef50e2dc412a2a9d0cbb6ade0fee7c881ab0677e34e0847f79690a008699a430cf483453edd633062cad27a9c162552988be761bf1b1b857210634fc8e3a56bc567b6ea124c5ad05504e9f2b49e66978c62f92313c8dc7b79ad6f8a5eab449ed987a1cfb98eeccd876984a51cfa9c7ba6ff9e026d993c39b646f22337193ec716d7e5e67b3576431d31dbeb10e5875b06047a3244d78897a9c7f09031e90df7f8a9264c5ccf0068d4ea7fba180e7235d4a68f832c6ff772ef2eb9772005787aef84ca113d8b3551f1aa0c78e1a301ba085573430757726729045bf34490a102c9fb659436b96bc7432b659037b975c08f82a448a7a4907a2a4627fa9e453a5ead2c0c9d1f50c7ee90a1a8c5d0645fb45996661f48153a94a328dd0f95e25221daa1420b4aa68dd2973dbba5457b608da1f16d55aaa27e763957e30cb051fba5095aeec64eaa0a6332850350a2fb466e452cdd1b9a3f3856f5c448f8d08caaa0639530fdad2e26a26f20474a4535826537e0da41f9421419db3db551c26be91d158cf4673a3685c871df7efd44e86086090f6552a7910856c961ff75cca54f0cc8f7c374f533f663b9b4ffd983749618ac7d9340b02d87393365258e4a719c48a61c34bdd5517c0221cb5904fc5f0f07a16e2b46a958e86f541e032537d8aa41c0c2662ca7d54f0075beaf50d9ae0e1a257917e6eaf709ef2bc0a321468449426b716db71b496ce0f16ea477c2022cbd29b0518ffa58af416ba2138d555399be3842f55e8d2846b4777e8538630ecf4fb2c3a5d4b15543a53af96c22716e32d13b3a43e0d3760ccef89200b46c7acbafba3452a51c9b6f096d4f65529b262f91565d78a977389b511855f7a2d78387657d5b538b544c6180e2d91cdc39960d2efd1dccaf5eaf3fdedadd7dadbb5e6042f9222299b2d3cc95cf2f4dc58fee519db3a3824f35d9c0dc5ac9ca0a08e9539bf1079c153b43b437242d8eaa03c99370a06a7317b94e125035fdf19708db82f3ae5a8dd94ca328c622af885704a007bbf500142f1124b83ab913465e019a760834902ef96862ee3fafc9a58699575988c4009b7d4074d23bcc146c3b9d3ab1cdf034149da329996ea508fc93032e3e826ae4d6227555d719e80fd64262f54e1ac98f757154bcbe4c88c9b1aea66df6d24f0f7ad361343dd5f84f280b8f6cd936b99cd37ce1b5d681eba8a91f0f6b928e50c622f273275c6df2f1410c50eddaf1391111a686c2925348b7004ed25c83c1927194fa191804e992cd58890ac60d8363a541c6e45b41f701a47cc46ea6fc85115faf58979cb888dd4b694f49440b3cc5c753c3d38102d406bc55055b1499de04589daf0dfd0bd0a4c7d53a10d6939cf780eefafc9516236104529737a69fa8db98fe976f5d3c9309ad9b35ccfca71ab5030d33d401317bd930290b80a4f18d78179eae1a49a7c3c2de5182c5d54332a14e9b1a14845291655c0b36bfd3e80040816dace91990b00754ab96d3b1fb08efecc615d00f1971f4813465564b285a0280cbafc4eafd1a2bdbc4880d2200eb72c016bb65c12c65d62458611f0e12516e1d03b703f32440d493e15dab8fb79920d0bb562d5520212ab480b0ab455dd5d249b544da1a83ea7a260f253c18764476024e7396858ceb53a259143ddc6adbd9d9ee9f47a0b4f00b6e8324fc663611e3643f548127153b09a9daad13e51a82101af936c08a81a4146dc1950c957c11daf8473eece96a9ed71b5ddf0a60c1bcfe633e9369da6cde9068d89c2a54fec502fe88ba573612f97eca7db537f85470b448c58bec0e8307edb62a0fa9f0cee3f90d93554b8d480d50f8e191a5ddedd042f52040e46ac8858af9fb4d81ecf799a8ad4767b24f37847613982478a4fc01428314495daf5f04998521da5fbd5f77b11296aad09872397b26ceb2176c4bf144372c2f03d06fb277b0c6a4ee6e9c5e313df592e7be627f6aaf247b215c00448ae579d7b2c2865551dcd8c451378f151f2c139db0ce4c4f8fa4a3b9685df8ef6daa57ad7da08efe055ec89937728aed8265b5d37518a6772cc86e065c55044abc65bbd6a3c6ef63549e5c42fddf00241a5e2721f9fc2c12b367fbc48192f3e5c4369ac82a8ee3d7ae4bc454b8a37b46e3675e73737f1068474815cd86de01fd13324657bf81047c8bada4495a463a3fb62605ba1e687e9a9ceacea5e63cf1ccce9c1001da9ff34d02a5bb7fa26341538c026d68cb7ad612667cdd0f9acee50e51d10a150f0ba87ea022a0a8eb73d8f75a1728b1e35ed97ebe36de00b1214b3789edb07526ad871e107a081229731a993e78b8cea104e82399d3caf18d461d8b4a3f313ead4d1b90f70eb3782ba3f707c8b55a0f482d91d8d0a51321715bc7e245a5753f5c3c51f1515b50ea4805e03d600f851929c1cadf9edd560bfd0fb4a0bb87e120c68fd243353d3eaa6d3954503e314a697033521b43cea0e65071d5036a9ba365b6f6d541b82b59b254bf547500d0b3da2d24ea8fbbf98d7a54edb2b41d7d939114020af1df87275bb0a9374ae89b66ea94d82af0d5ba226c7ba4cf836e99a9063ea2c17178bb5c570693f33e53ea336c36d6871041f27950b4416d20af68c02fa8a96e86b4022326d8910ae1b6f6e988988bb821fc8ac4c3267cc0347f258a79705681b681c9d8bebaa6b429ddf73820b9e8b7d32fbc0dfed808c0486bdc82054252d621862876c94a9038ecad3630df648df325201b13e1a76e155062fa0cb5ff0a3493c441b715f31646dbb8b8484994a887beda7447c8ce9157bc7d13ae2b5148bdcdc44614fb04ec11c441da50bf2a398cacf4f435eddfddc79a76dc94da8e0100bd6ad5547a2163ca8c5475a9b885f47303c98e724dc63ee682dee97803e5840f8f695d9155671efcd6a89d68261a819086f286ae9190b35709db9b2dcc5c3872cc20354464c75eb24aa221c1baf4a87c29e6b8ae7321d48cc7a3ad0769386e2aa873f4eb4227648f29c4868790f7f9c6845547b58ad19a2087d8e109090f65ba20b53dd738f06476665836357c7cc5ec0553367c7380abdcd4608a4c3c4a939218818f5317c9f6a8aa744cc2e27492a5813c7de5f2f8e62609595352db1fc37f2151ea8e2498fd64f22b63cecb6721be8dcc05a9af2ebbe7857318c4bb7d336d9f11560e260acd1cc0ceaf7345ac1db12b03a5e684133099492ac28f19535e8470e452ac600564a3605519d112d48b0f495a0906c4667f00edbe68389294ecba4e19bacb8d92b0e32693395705870a5d23bea843ecb1369ce9784149c687926d948a6297829b16d82ea0a78c54c171f569face65cbb9369f181de2e0ae7706bae25366194c8c333c1d1fc7aea61840f242a3055853213f88bbc4d6241d9a13903a2c4ba5947c949841b1ec577d7e22839717758371b38ecd2a736b440a6ff70f38aec07a32c7aa4b0bef8b5210daf7ecf24417517b963d7040a693bef2f66fd57dd02eb36f16a71007567798bb65466f5f8e25bddb21b144d1049810c2a85b2339ca4ff11a854e6f33f0593bed8d42bc2ebc4d761ec27a183add96be626a27c504bb026b4a27b0d661d6b0de47bee06539e64254fc0fe29dd860cc14dc64e36920698b4906536c6eb1b735ba4af92160b1ab5972d55269840548150f0f809d45617d5715237dc93490daec7f0bc06c72ba43282dc0b11bb16a997a43da68f0e9188093716b3eac14811d80241817b0e8b61faa750b4cf33239ae28463bf788e969d9fca00d48c7ffdd8c496e24ff070875716615b353529419d983a2a7396c9123543e8320c0fcfcead302a571a0bc55619439b6dd58672799ad62fcdd82c84e77447bf3ec986bf50359bbac223e0fe1d7eda810a4d533b0264626cbd22e3064be106e423de90b4d8c75b8ba55aafde96119ed774ab0fe856c8b6de36e6995b004e31eb7971b0603cc18bd3fa4ad177f6a2c73e9aebea8fb76d735dadba16ed5c50857fc871cf99c0db2eecea45d0cd8bda2e06e50462256d1d70d9ce53f7ebba5d213545b4cb15b193067bed616690d9c3d09a0ebc5e060fdd4ef47c946c9b6b3d377641c75e579036d8c8bf7a1cfdea71f4ff3e8fa30b1cea61978134a14d522d128f3879dbd7a646b5fd0140d109187a4613c60915af16c32afa396bb63c083254edbf67d6ab18ed9bdec66c852b1ce98394c61d14ed3551a5345a0630299ecf472391bbc049b1da874880eb7e436652b5c9929e4235b5bcba5d06ef7dd0a3489af4738eeb714cfa2258a7abd924b355a320514ac6af12494f9501b3edabf68a55449d167bb3ac2645ab63aab66428513194e8bf663ce753f6110bbd5590ec502b6882d50e519408a93d317ceca334ec961de673a8a0527c9b816f96cb44112ec5a21b2ec711b8916887a7fe0943f7862e143839886c1cd1736bc876d2f039b8bbfa8b33f9857b8d95d4f7bdda7bccf189638099971e09f64ae6d397bce45f6e14740d4b0e81068ff41f39000d809b926371ffe14368ace6d31dd06507e322119764e5f10f40909aeaee8f2abf24e2d219aecaf1ca619f9c5cb1f173923b49a1ca75cd14e361ac0a037547decfdbdb409ed2ec749050065fce9439a547c8b8e9d652d37960ec827c91e9c3e2979c2eb2305287d4aa2dee25c1b25d7c076628bf5817b1f825bb88c07777114d672ed945fb0af9b3f6d13c37f0ea58b2a3ef35fcdd7db5cb6be9ad09fbf5e5e83116b4645711b8da4fd50aedb3d7910e987e93f1f965d1f8252fc517436255f892dd55a0f7df7855ae7becb849fae5faaa0a5f76a34dd24fe8abcab57c5f9fa7b2ffc5faaa0a5fb2af0af4fe7d55b9ee31afdae3f4179b5beb5266a9f9d52e17ee3fc79473f9be1f94b9e0d32fb9d30a3e5d7ea7157c5aedb54fcc40abc41da2ce2c9989d6b21d7ebfffe640f07c30d9533d2dc8ead3171b807875cb6e577ee6da4d2bace46efe3ac8e10fde619e4cc1727c51b0cb49520ab0f6cde4881c3e89719265fa6180c886f41c20ceb321c2deaa6418483af7aa91cc936930921ad8011c81257839aa36283666aacc665106b75c45995b2335ff3e3e2ebee9b659a3d1f22cd77cf3778c5c804897a29183b7b60ce53bd06b9e0d793e64fd5c5e16226722bb4872994d4556faf2419ea6f2b2404180d5fd609c5d8a3ebb94f9b962d7d0fb221f94abf8f60acdca3f97e5c42db860c57c06629dff7efbe6e7b29ced8bdfe6a228d1a957264b369aa7e9b56d1cca359c97aab6cea2872f180895d0fd205bfda7cfbf99f421bd2aa8400094db742ad7313f83623095b30142b87700d7a82306d8f6e738aedbd945d3914b452ddf04285fad1968a55b75e0aa0dd762e4f4e20f4ea4ae70741e2c6221774a91f352d04b5d3a4282db03cde3a1af4b7ca165c6c4a8fe24a5987a9a3e67b2ffe1cc155d30eda4d2fae704111b9bf1a2f05e52e3c35d547fc3f7d1723a8317871c0aaaaf54718a0d8f33bd6fade8e6c7ad539be0d3956ae3769d1afa7c03bdbd55f98066507e30f80563ece5d19bc62d1b65006eda0b8e262ee4b9f0fb1bc3cc91ccb7f96082deaeccb5a77159875e8c158e6692f6017dd1af715735d6d57926dcd1d10eda443d09aaba5ec97c20d4c0e324416da5f18d59c8a9282740a24a74b4a585eaced251d53d70187eeb03ee1b7cf5c232b90a03b79a0bf42dd35bd3f7c2d056a6b88e8a9d382d0894fd0f2dd7af9c8ff4d06c7c178f10befe4d9ba56c53d562556fd83f581a6ae08c484d598d641b5c7f25276d9640b0557f7717b686b0467b84a8fab3717d9fddc3958d7688e62b08541b7d2eae4f6835380daf5e52399eca0703312b0b76c173f0e224ae666200970e80bbfa8e5de1751ff044b31de544d09bdce9745ef27e7acda6221f932d4c5a6e09bef083a2686c705fc25d1a4539c1d3fde93c2d9399b1580ed6f6c08f8c79dc0b66a32782a5bcb4639ed82b76a318c0d2a420b78b250777a9622086221b38af2bb7d1bab47dba7b7676f6a18090a71f029d6b7e1c49d963eb8fbfbd6d330c3ff9ee29bd76360e085339264d8dce484abc0093f372362f0b05ae6ba9e51465ffc3ba2684a5c49a03f64683ee63f314db94a608e98c7d8cea603f5a607e4e550498f218feffb6cd3a1d74e9160811dd67518e4f36b594e1e58ae22711415de501a20f5804395b0abcd2d5c80c1c34f77253eb9d3870d155a7c0ede7bde069c45e718c5c443c5955898626dfae27abb63b28b13ba898f0729bfc6fe905c2fad74c2f293ed4efcf9332b2b0284bbf6e57bb653cd8cdfa82a1772ae2c642f87e000fae9b9c4a47b99c4633961345afc76175493674545ea48bc636ef215815502303ba696822c4f48ec7d0183b0136fedbba6e9a1a3d31fdf67d70959a1fc1c9985601d748a53a8825ea46d4e022af43434f6799d7fa934486b5d0cf0f0afbfcc0bb07e8f99f0460d3bc687d37d273c2d5227f49c465af1a458074bf6942148d82e09e095134ce78cf8428fabdb590e17c50e24b5e8a1efdea8627294481a88bba98ca7e8f7e35144d5ccf09db560b3eed99906e877f98ed55a34cfef04cd18bc6b61d84ece900b998c9c7a2873fe8170630ba47bf10a5cea03d3add828feb98cfb8efbffa8cfbea330e0afb437dc6913dd36fc0d44a9126fdd375b47274bc029fc72b1b06083cc1bfe3536dbaea7805623215e3c24161e8969be0400c500179a172dbc23a9d6ea7d31dc8e95466dd01a655f2805184580660d61de88f2c29f0642f87627b3a2bafdbace023b183c7badb6821a0d3e197b2339099079d0c6406fff97007b324cb44ee811618a77f2103aa7b6807f8cfe7652933b689fe7aff0b7a0df3e2b8e5070519dab4688a3aa7c6fda75f529b1178c8e5f960be37d85358ea9b94d5bb0cc2a81a0f9870569d248551ef83823a45a90e52ce7bbba4d822439b5ab4e9bc88c33cb918fdccb361eab817537f7d68ada3d88c11cd5c8cbc2314168289fb62041a3d2347bdda4e7c1341152b547404ea7bed8b515b65a81eb4bc360ee6798ee6335ecacb4c3f0a50a70214030e7881269c0a76c6b3eb334579c6a2643c07d53e0ec7f0cb092f999cf1dfe6c2454770376c0ea3f0d6ea78e5f07a664f416cc0b361325443db784d26fdb72f4456fee3f09f207581033f79d450bc8f29cd94d017e0b59e349e111ee657812b226daa307983aa7e3e7cfb8694e4fed9e81caff8133f8119b4e363715804a765b58a3b49a10b7f912683f326f90df00fc7029ea8a3155d3e4fcb66558b9ff201dec6662ad0c6272415e581c2d366f8eed6e0aaf52b4e38d1aa7900a283355862dd212cc44599519636331aeeb71b3503fc7ef6998677d1604497ad1989dac5d71940757197c70b16d232e3f37e161d1dedb0978891a9d2277a8e70662cca1740f131654fd5e08da84f1f39f9cac6a6386fb3789a8cb343715582d18f8ef9744046499a62aa0a39092957a77c4881a09b24d15e1926e287933c4db264caa954fa70928b29d75542d0492a797f871e079ff28efe726cce9021a0a1d7e18e89bdb9d16d73f218b600ac956816a149bb7be7f9fbc3c3dd776dd63ced83fca1cd4efb473a71ebc5e1ce2fdb27ba3ad83a3a1af1f4fe42ade010e9657fb973b0f5fccdf64b55806ea407f06ae7cd1b950863ef26bcd9daff09eac5b1f79276b75eeebcfb091269ecdde4b73bef76de6e41a97aecdde483b75b58258e3d3bedb7da9ad3410451d413229a065f1c90242b4dbad3798c6eb5dd013183edfba9b7ebdb00f46cd060831eaf9e1d399d243320193625b011e42d4b0075b2d2b226286f4ff0a1decf4298f7b3b695f98c28d5610d88c818208dc05e4357d7550b2925a414b09cfb9eb7ef5a22910bc534bf9824e93017d9a7908781cd7bca3bfacb3536a0984b4854a1e529001c05774c66f3e92e75439554c84790235dfcc387c8a77706f05891b6f626f1b26dcf180c38f8c57ce4ad3240317fc19f1eecedbc7bb7bd6f208be43fa207ec74e760e77f6f9fc20aa4f969b5a3ed802e551b2146d059a7156af47af0bf2db0f9203c0034d54800d75a4dd293d36ad50d0af8b85695561aa48a5d6a480eb7fffb901ad886096a1b14b9d70898f9ae0c814da171388979b6f7517ee338bbc547109dbd792e5ec8e94c6664f2c13c5bfb181e596a05195f9ddf7f1564fc350519ea40f3f3d68bd7ea9fda5c4421001100db0bfd6a730cc35c8819870b41853845cc63f2945fad9294627526f2d55182d7aacb0b413eb2973b077b6fb6fef56eebedf6e9defef6ab9dff6e9315ed773253872de44ce3c20ad86dfcf2c2356af275b997e248227ebf04e20ec9432871d0ccfaa70b1b0c7f5fb365c7b76aaa374edafb342c6da77f78d9d0f49ebb83c77d823594bc3a630ee7a659b6d891a3d9d2a93eaf619c1c6e78fd1c26c52ce5da13561577c0bb61c799616bdfc6127a1f45021a6f68bb9153658389cc3f8394ca29a75e46e5007d117c712b58126b163378931c844da7bca3424e029c759c2356cd19acef3ca563cfd81aeb69ee948e568031fa78ba008f3696c071be18bd73997e1a7a3b8d7458950970f04e5aa7e630e18d9ce5e86b72c6b8fbe5169137f9cb2d25378bbfa0dc94bb9795b78a88717a50e59c7ef8ca397de59cfe78ce09a9fa3ee9a4f0ccdaa80135dee315b464c3764a313d5e314ef155d6884d0b047e272e1578336a5ce6f4b49fcec52c4f321ffa79ceb32190209dbc8a346c351397aba07fb7725cb5ee0162f2f19ce743c79bc85999cfc5997e1f644ceba84258137ce283c30f9444a22a0fca975443ce5aa8ab5de9facc78fa889af4480abff7aa364747152a0f6dd456154d159b5a08116fbbb8e28332bd66535e0e26a4a575b6e3557ba695bb8e510f1196692651d43f4ae7725ea0c569f7653d191c742d2343eb5de322d64a356cc3eb6a8b0523b06b27e46872e1cc3a6eeaefd0ae05d5d285659123cf0588e2e388c66ef0ff43b71d10b648c070feb172d4d0d65aab9c657255ced81c688e515073314621cc99d9d6ce80f8d4e04f1b88115c590c386afab333851367558733e42963a115992dd38aa66d90bff06c3c73f44c437475733f43a89e9375a137cfaf6631be9ac538fe9f6c16032d42ecd9266cb228a26c0688b28107a5592e4689e2e9c194739ef0ac64239ea4a8ebef3e64d0c9cd8176bcd9665351147c2c9cbdc2244655be5ded6adbe488310eb4c1818d8bbdeb8e4302f7ab3662f68835a96d8a60341a2da30d79eb50236d4bc4f46d63919d91249b883c298b375216a259ccfb20256de3fe0461ea884eb24735bb4321bd6fda3c16089b58cddc01a75cf97c40968a08c0873e3d05f8d35380d085138eb86ff6fb854ce7a568ce7839c9f8343028ab633b8309cfb7cae61abdcbebc2cb0f85d15b7d392fd97ae7bb2b36e205fa34e1e4a0ee52aef27cecba2a03a5bdbf9109fb56a04489d1bb9968a64951d2e30dab4569f562e955c7b90ab2476cbdcd149aab4c4643f69cfd83651b2a7953a59fc3af412c058a06112174ee29fb4339da1033f411e8bd626c817e701a3ad6e78ade4f04bf48d26b060ec787a251b0799e76c0657ad0bf5c1432bd107b34a6cd523ad419245c512f29ebbe9794f5455e52d64f588f351ac6fb4729f7385291528232a924f7e58d6ea3e5985bd62dd0d0d09a870fe1b73e47521ccaadbe2ddd41a752b61cb057b99c22a02ed801555116783a2fcaed6c88d0ba02d8e4a910d78244a456f769863a2f158c532a46bbbda4d171e909160bd1da886fa5c05ca41caf708739790454bbb89ad3a00ecf9e7738be083190d98097bace5648171f5848dd1c5a9ab80671d026bc38cc7992aafd20e5c52434f50f960c2b0539a2a19417a5dbaca310da759f12a90df32bcad069c0edbafd0e231a11f21d29b1c253ab66ce678e6f108f2484ed554bff9f68f07675d5ebea8ce77e579313cf681da663571c1d134b9c4cce364b02f5ea20ff3d0a606c3e33ee3a9cd2e6b37b15b1ba1a7953007864d7550b476e03c19953831dc479564c9251d9843ee859c0929c054a040287910e4f0d7848e1e0ad4ac0ab4a6fc5ebb456ab15abb7612982b5b969c03ec8240382b4a15b55c120637fb753ccfb45993757d75bd84045c7a8cc479b6619455e4454f88280806f10bb754a2afa9b5a57ffe07ada97299ded34f93f5e71b4f911a2838ff9c85ee0f14a01b1c72bec9923c2b56fb4fc379bb2ff01f6a7de2258d9ff50a935da2ed9ffe0f3159b9b1a1c5361eca8d9968f79e6b6ba1734cd6718e11dc5f66f739ec233098747e4505bdf5036c3f0eb4473d2eb5bb14370f4d6e0be3302de0a8fea7e7a1f6ec9b9eb47aaaf3f20415c88fcba6907581daa7dc6c429dbe921c2f5c9ad8ca112ad90a0f143e40669e078f850923df3be7a1ad79adcae8fbe5f467fe932fa76f9603bd4144369b5c34bed8dbd8d82ee681f4abc0383b13b32bb1fb45427f72bc9503826ab5670986dfb6d91c345a35ff0b96ddf79df44ed785d150371af251180bed796d78194a8ef445486c74102cc18e28dfbbe27862f9c5e8ff5e1378e2f419d3102654b54b489ae53f5e515f25e8dffeaf3be48bb64e3d7181514c5b44b800d7b151b503c2a826257f5e9c0c9605b40b010b12a548c0376c9c94d33c0944976bd4a510e50624fa016cc4406e7513e1cbe41f7a840ffe13c533dcb54cf31e0d0a99c28b6b9db608fe0a3e275a328f364f67b8ad79bd07a8b5cd355aa98f0e2392f80896ca207223aed7a95a061caf1f6d5acd9f83734571f741bcde3e3e3e3ee8dfaffd9cddf6efede02b7ee8d56a7144589ed8df76b896aeb1be7770f63cd2aa9e92ad4eaedd6770c67e0c6af3ab8709c5c6bb3d5faf1850399c263b72eed4931c3fb3340849b1b8fb52ee0b515db744f5513645183187d1b6acecc40fc7747cdc6df1aaefcd9c22abab26a4fa554acc94f836ae03559085aecc2aeb55900ee6c36d895fa663ef39ae942070d35631256efe459aeb1950c3eadfbe897d133a1b6db909e6990428b67b0e1a97d0e63db76707b34c40aec6f064cc539d7310ecea0700690269503eec8a602c4d1a99da07dce501910af5566d24db2fade38f6bd7c9a9a1cdcb453a438150a3dc0016861c6479b141f92251822cad263c72bcf404286112e470d45c3ef031c325bb08a0d8b8521057055e8dfa050d31d6759d78cf31b1a02a230a0434dd603e86ae34d7512f4b855ed4ae2d8b95e8e9c83fc2189a646329ff618f98732b5b6484a4465a3f33f977a6cf800e6a910fc46ceb7dd2edbcd4458a3c1a94a7546dfe4e32dfaa37359930ab2857e05230048ab2265e0a407ef2e8254679e0d8205200cb1ea51185ff3fa3892bb11daddf71aa2d0a8ae91012a1a54f50018e2e7a3c8425bd03c9fd0078dc349af787d0991a2666e2228838597f9b5115346267228067228deefef54f1400bc607bc1c4cdcd734f0bac8b792b5037272d7098a91a0ebc466c3b07dc72bded099e63c628de31536007dc34c96ac2fa87dc30e387e6ca0e4b46069722ed26b06efb650c7016f10d264c866221f0870463c908ac1d21287eabc601b458d8803786cd34674fb792eae1dca102723b03cf791a56549a66df674b598cf925f13534a73db6a2ab443fda03a3311dc72e634689749aa8a832ab943c4ef36eea82b144257b7aedae62cb63c03d652ca89c805beca23276d86aaf16c6847322998a0b7aca204631292757fc708ea5dd1c70ada739c3dc2df777442b195572513fa3ce793d9befd040181c379f43b763fe61dc369f43b7a27e5889410a74268bdce1c013bb4e3f53150e5d6719b3ccc7956c095da5b9ef131fac2300c432ea7b3d23e453b76f5120b51ee417a3313571434e35a7b9b7cbc626f0941344507b5a6ae0b2b6bb3c6169b2405dc5c9315b782c90c6e46846e182f1967eadcd9508cba91515303a8e9a671fec93aa2d548125bdd10376fab3216ccbc84bd0d066620b351924fedc81e4ab32edaa039a07ec7a27c5f88fc050253a2b6b4e53117bb2f777be0a83043a359a52958917b352ee85612dfdb166592a6ba0d684d4c3f9f051b4117899cab91146d762940254d6443369f69237b493ec45da4c35e25e3792e989c97a4678005f545a18edcd76a95e123255434b40b8ec6ea41c5f1b42780d59c951d6f6b8d449dc510b9c2918323999e4f77de3c833c71562d008d4cc122572b2c9681ccf53853e7be878d789bbdffca00118db72032218605e3d10e3857ea4ce6a03c22416d91eb91a6abebea9ac13fdd91a6efd3ca7ddd5be9166c79569e841216ee62ea444ab01f37503c438a17ba26b5634b32b557dcdd559ea107ad88b6fb3638b4a649518a0cdfd31bafaf56ea339b896cf886605c6f5d78f1480f308d1209a6d90d40670c288aced872fc7cc1b847dc7c199ed0b414fdcdeacfd63254cc36d4152932aff7b6fc519296aab79e583af0536614d06042745e3b25ad851431936532bad6e35a345d335378e9769ac27bc0f0be1a06a8f09ca22ac8569b9d2247b6b681a17f4009f8e1d9be53f98f4ec93a91bdd98698fa21d75696ec9898f1afc85d754a75668b85925723fda02da66783749c8f6c24bd582481fbd8db0bbe0928988a5e18e1892e40d99e67ef0bf172f72ddb640f1e34ef34f189291d63e2b31ae5abe0b77cc12b28f23be4958855656b34ab9d0aa761d1f02d544143138daba429bf9a269960995ce5a9c8cbb826a4633effe7c3b76fbe3334776b6f47f199c48ba823c9213f171992bab77228f22cf94f6eb5fa2665392b7addee382927f37e6720a75d03e584faa9ec77a7a0eaa215ba3f35fb48f0729e8bd5a128c5a02cbad4f20e19fc1b4c783646b56f0e488aa43a1363388514b0187f85d12cd8de4466a2e8c59a015a7e1f0afc5dcde55cd59d14c55c14ddef7e781ab367a619b89fb1452e8b39e76c532388b5443b2f44be35165969e447cd39b7a2c5ad6c98ab1e3cee345a244d6437372c06f2a4b36660e07ace057a2bfb8a713ae0239e27b6a800eac52497c0626e4693bd213350914b1d8aa0ce6abc7af8903514850753130d5082f5006a3476094fb539e551928b82cde40c0501780330a13947edf99dedf5353836ed6cafafb3a1542bbfb368b6f6e40c1ab59bfdcc8bc90b282a505daf9f383b3e8779321459694626de2144c664449a9163d9cc5aa8a30d1dd1a30547fe02ccfda6299bf1311ca3a5ab0b1ce9c94ff2d7a49cc879b90fb0ef5515aa4f9fd09b57492e46f2ea8edee8e9e16c0c4e36cdc480d116b2062cae140724143bfeabe8bf4e4a4ced68d3a5729e958579e430e283124de0203eaa394e760f68e673c1d3a096429bed2c7902b76356ae845097ea880d2f2dc00ae3443030f28b2f9da2e39914dba6cd7b541998c069428d349ad88b88bccab7361d19dc1779b27b100c2dee421a17a1367542d77dd59aa616450d88421c5c008dca1e439408edbbe8f7795654165daad4a59b1b34171a958d75bb6c679badafa371e1640a6f11d41ac5d1e6a01d9c80c7e26ad1a6880321629417748f0f739c4e4ddebbb3799a761ffff0a3d7f28fb78e466ad5f7b25e4eda96a5422b585835fb5e3648e7436d9ada50ab3623c3f0f4a5880b9c323d3c8c6212b200644a506f0bf874ce6a72ccf0855fd5ad1e2538bd543f0f2cabf2ec1ec72cab7aac0f5ad4acca71ebe5ee5b38340539827394c24634244ffdb21b9c25e9f490111a6cc12afba4818426581cd7ec9ae2c916936b53c2a91e34ffb52646ff7d24f381d817a35c80881a633b6eacc911050d0a709f6f2265efc500c356f8e759db8e98ac44678d1ee2eb0a74db15709ab6857ea6b08de7e2fa0de9f7e8e69928035b0572f3b9ad786aeb35105617876ec9f5ac754cc4b3d8b5774569c1cbd36a69655eef6c3616e5cbddb7e6b66ce21046ffb92f3eea75d391143a8f78f14ca620d598b8c697e87a0292f41d855336ae8fbf3b7756b4628cf4c796e5c869c37cd50b53e7cab4021c5c9d9acbd30aa073b713bb46d5779deefde4a7c8791e98d9bdb989e84898796cb3c6bfe8ad082f4b31c5f72246ca634a9119e3c8225d4e6421d8fbfd37d8f6a114055db08c930caf56ccab559dbdc3b6c15aba40393b5ddae0852ddcd380bde531f0ab26d9d40d209daa88499175d3113d9231bd1103e4cb3beeb8db6dc505b290e9b5b8ae3c9f7fcbcb4927e7d9504e9b2de351b4f9edd396d62a78dcb68bb9a2025186c273b6592f568fc8cf91fdc8c455e9af3773614babadcd2c8c59389a75d0da86fea6a3159711b6d2d04e289231a51971ab8e21b16b746451fcab771e8f0b445e689cc95cb89c6ec0a3aaf30e32bf8ef8f82e36b3e5befa61b611cd8096398c686b51fbabc79b05855698c756052d608b7b27aeca3d39736470f1910b754148bdde29c2f5e4102f59533a42a8ba0b4fd065d4cfb81a7bbb7b0d93b78a20bfe316c3d1203eafc8de8328a7d981cd494ee6adf920d80098736bd7332137fdf62e217c2e2e445e7aa31f1574c7c4c8ce031c5dc82897d3ca35303e987963b7b470896dd8db9d5f055d7bcf72d9477713fc9c2c0d4cd50aca459ac013fefeb5595ce742ccd0f70d788290237cae7c291a178215e8529a15021ebf1f9432e72809a095894f68e112e8c3bcb04a9fa5646b70e8a4c2d8101cb69c67f2b2e3eed9a5d4aa5f3c4dd1b4261de36ca73b8624eb173694874424b68c35677f55a35957b63bd261e94e3e2adf2dc9ad6128d212ac9750fdab16d2d36b01b8fae56734cbd5df581278cdcd03b9f776f0e14ec262f8401a05b6c98e82623a20c75613ba37efa7c980255929f211b8fd8aec813fe762542538b4193a9b774c552d4a402bba4e9f7e01fca0aa6ae5f8d240cdccb88e4c245a334964bd0a059e68330097cce34c8b415c2f30aa3b785257acd07a5122736440d0af398dc86a9a9c0bef08ad3d0b4d78419a38645538817d7058e5870292fcfee0e78693e2f0c38b181f87bf6957a84cab9605f8fc141e942d548cb73f934e2b9e1f6278e8c1e119c255bcf148bf3e49f89a4fc155b077aef6b61b9f4732920c7fef017b82d18a7bcc11d430340484ea0a13b294ed6f76ee6137d8f682034e87c667e29be88e6d5ef4b0faa28e468618e0d2495b82e22889a8e8028ce2b3533a8abcd108938d7ec4d6fd1275691d4f15b15ab3a5643ac7c61fca0b1cd75e61df9f6045249c11e1d18067eaa805940573249916db17483650166f9c157af2b7f82dfd32c8a3afc9e3845bbb74fc3f8776538ffe44f2bdbfbdf766ebc5f6570afec751705700fd1720e27a554d3cbf095f8a8ca38c5c97a0ef38a99c23937212ccc6ff251457d3832f4674e393bd98ece2bd260d828fca905493e9391f9c5bd9c4583657d7eb405fc9fc92e7430f7abd22a2d04a2b2fe41c2ecbd642f9c4602206e7ea78622444fe61c82fe0d1269ea9fc57017e1d601bebe1437df8da742d6898c1e543f4a96174b0bc8bbf762070b2a3aeeaabb92369d5961ddc19b62be2a0c87bfc6aa7d6aabd40db905fac23b1e297ef4b782e2d9ea772700ece0da292aabe4a26954e4f46e5286e06f7738efaad2ba2ba75e507f30c0a866374b8af59d562aad6c3ab07a6c94e85557c753854b78fcea1fd36f09451ab121cab9045474ea7559bb3ba1ef5fd4155d3683417ebd121f25575d1703c313a3aa0816263a84cb860f0160dcde24eea06c5fb040c85b9f8d4440564d6bda8245b2bb9d1be04e24b8ab3db51201dd17a748663e939614a548c39bea06aeb1e0359efe9405b93d11e1b4bf3a128728f7e4d24d1de9e0d52124c6e0f7fda2e01edd1ef71a6c747bf9175b57fa22a0e7f5faf2a3968b03d5e4e5ec8a1e3374ac1f57936eee9b186f73120e2714c3ed848f75dab8307b167c90fdc57cf0fe0d973cd0b678d083404f8b82768828dfc9426c45e465baa07f566b248e1f56664202aed8eb434b865b505d7171b6459b2d08acd8bb128f5e4ea65d8ed82ec98670db44d5b391882f294c885e3e6aa01977f947b20b30230b0647c90cba2b06cd22a23652734c03803d5423450583e306b180f05b10369f439b34a089f32bb0fc32781dc01dfd4c2b531ccac62032d18c92182b7d9f36262c6c9c1a1e8d86cc6df90d2da8f1513f628d6f56a0feb98c7686e2388b1f5fc7313d4056c444fedb78fe81962fc3d3ed13a5e4cfe6a1a363fbb3a7d5f52bd26d0fc73746cea7502975499f99fa0aca2d085ecb950eb748cf762dc037132b92d6800796bd89a35d897d656a1b9f0b735ac9d6d06bbdd916ed489e99fa5c3aa87b1523a16c4ba811277e6b22077a8d404f6c2a0486797f3a87aebabf6c81fab3df255a7e36ec5053a288210949644ec4168bd328583f81eb63b82525c83432a3ee44303937a6444c9c9e3b089dd2edbce8a792ed8a5603cbde4d7059bf00b7a003713797abd4a39d1ee84e52ffd3ddf2d7e8146455a7ba3eb8b4567b9b858a40de01e381f7833e19801b06f8bdde2da26ddeac6803555668f07b06e159b4843b2698582f6998077e875e67b73337a25ec5546ba3ea0b380056ee00ca0505d2f0d962087d6a5e1766b8d6098dea42ada328b3433be2ad7e8bfafca359f4db946919dcfa75da34b5b4abd462d89a293f2a2dca17385b31aed30b47eb7aecdc28abc89f8ab2bde38db80e24be0ac97147acb303b01eb8b914281a184c9ceaecb890a28a4f61c41d4ee5e4bed5d8bf6ad3b779da594873c5d219845b6c98e9cc90b4a687d2ea5213c7f3a7dbe438be88bab11c5ef887ef61f910557f25f584dc7698813fcab5ef312aad7aa80b1bb383607035ca99f959cbca097a8c17a0ad7467025ece46c05b6075004a6e6b414698a0fef1ccee79217aead20a6e6afcd0aa988f9d02b28e76061c3f02a2039e3d99030c390126298d8e144d57c217809a05e59095d34a2d10ee71563220aeda203cf5764b0a34886225798c8d9deee9e6313c1e38b1ca12623f1f5228e95c56f9a1712fa0a668685815d142232a6b04fd61e32a5750c1970931d8266209de43887b380bf59c4dd38bccde7b8af8e8abb08531512a2f72ab554605619073b07222bf36bc40ab282c587437cb80df8a7ade2947c701ebfa9ae30ab7fac36d0f224d8bba3fff2da365f09f15f8b10d314fe9f428b9710207877bfb57439b9174dae550382c27c3d20afc531d2594b38ebc9e66ddccc495ce7e5fed4a42ac50f890956506b1a00273831375b55c2f25511e76e459ccaedf3975597b94f75c75f355abe6ab47cd568f99fa5d162095ccaa7b326c8b02f45fe5cce33c59ecd6614f64db4c083dd69923531c0affc8c2d2fe7c63dac5fa818515839bbda34a662aa66abde7ec55b00f84c97eb0b6e9c175d1b2fbc6fa6ab5a42a2edac0486c764f5e34dae1af04a31eef5f051a3db38b197c33525fba9c6e1b7d71adf3378143428a0e22cbc0af4675a71f86bdd28ea088153f3c7bc13ff622ff013c20b2422de8cb3b57680c9aed3074778abb13c009ef29963ff0f0ee561e3e9d10b1ed85d8ba3ec5978000518efd8e98c896248ef848718b0f47b73e365c631692d10e882328cd926bc3365886f5f1f747e7dd0b9a478c239b9ea3626749363a11449323e425c096005ca6e37218922c9622b90433899ac7b4b539fc7d8baa0e42ed400b659a4a055e6a457c52e55e1a05b86ef8e21c623ffce93b7930823de735a6b9368f87a6edb963db37f7d1ef8f579e03de841b0628f3c7ae0be3ffb53654f213d42a6c16b2b7bc432e01ce26c92651d16287c04131b8e8d69c1c91f3c718172c867b838f192434a74bcdcad4ab7cbde26d36480ea83e4e09cc9117bb9fbd611d26ad50cca32e0682794b35c80877c3e2ad5ff645f3c15c3406e7bef2b91cf2cebb3ac30cf7e5a84941574f4c516161434c21f3e7462feb188b90fdbf1058460c6e1e632d2afe56541b5c52e94012d2395f1876929798c5ec548d92899503f713660b3f90aef08fce70b6e00ff7af8f3b96439e437f263d4ac67bbfa0ea11d939fb4832db05d557a6c5bcf596de70cc36eb5efdcf18671b07e29f37390e264325b55c7b241c9a6720827a2b1c2e050fea7d16c9280637b3a8a1ba3b041b923262e780a2c439aca4b3164cd4208f6e2600ffc6fa91ac6eaa096894bf68aaa6a1eaf38951cafb4c8277c6045b65293a28c64703d1723918b6c003e6ff8054f52de4fc5b1efab8c60d1312f7230c72b2d681326694ff4638506e431a42fdcc3667f5eb24ca2325429d950320e9ef993b2d3e91c6778d56724bd265b827a6f8a7cebdc13910bb8e04bca460139052f12744be1780f61035e880e4b46cd07282b6db18facd3e9dca2e06d2a87f3547410d1d41961aca6bc4b923d39bbce93f1a4648fd7d67f607b3ce55999e4ec500c26994ce558ad3fb6930d3a6c2b4d1980162c1785c82fc4d09a6c7f930c44568821f408ad2e6fcdf86022744a9bfd22f24221cde3ce1a6b2a80e3154a3b5e01baf30dbb967370ab92497c9205bd1b25a960e26a2066a5c249f00a95a8ad8a19d5792a07cd3fff8b0a91fd92836396819c5dab617520192f4dd381092bcb59afdbbdbcbcec70687647e6e36e8ac085b62ebffab8b366b2bdcf5251a8a1f86d9ee4742b3b53e72350874cf9259339e3e35ca0fa4192b1cb3c29936cac6674545e72b867fd860d13b5c2faf3d21b3cddcea4f000c07b133b5ed93a603b07c72becf9d6c1ce411bcaf975e7f0e7ddf787ecd7adfdfdad77873bdb076c779fbdd87df772e77067f7dd01db7dc5b6defd8bbdde79f7b2cd4402d7b9e20a8c58aba6266a58694ac18ab2db0c6d49bb988941324a062ce5d978cec7828de585400fb233914f13d0e92c18cf86504e9a4c9392a4c295ce69e970b7cb4a7036d02367033d5c78ab2978e54e570b9997abe7e2ba30e45211aced545c68461116ffffdededfedb13520c3bbefb67b6c1d8287bfeef6d8630cfebcbfbddd63dffeffecfd8b7a1b37923080be0aecc92f92314549ce653674148d232b89766cd9c792333b2b6a288884c88ec86ea6bb295963f95dceb39c273b1faa0a40018da6485976929dccee178b40a11a9742a150a80bfcf8e1e59bd75df1652f7d5fb71fbefe733ffcb91f3efd7ea0a4cb9f0b59c0c638eb6f61aa8cde43f8d97be832330f26b2280ee4541506044a525dc2e100190441377090838283bc134fcf8a329783f2d53c57bbd97496a5100e615763d464ff6cfff0d5f3a7ff3c78fa62afffeaf5de0ffbff23de1b749dce46a7b331c8a6d32cf5b1fe5d5def66d3b38cc16e5c50194092ef755642f41b7875127f8361c0743869a35fcc6756b8a599e9f4ad2e1f31b4058185ea59acae68d1111af42490dc7e6d8d8a28298dde733cd990964c48d0b19232a276d9f83b74b38a884af4580596dce3a4e8f8af55424ce4999a886dd1971df89355d9b5c66afb93476c9ee54a0ef58e7b45af616e9a725594cdbe6c8be3de4340dd7bd836f4a2d1f41e9eb4bcd0d2799695b4f678e3274a6b5261e7a797477fdffb67db5505efc4406f7eca9a66efe130b9d45f760fc7a675977f91ee47edd591f8bdeb3f7ffafdde738b0d06de8a633584da6693268b2219a590fd35985b1bbcf6490d0d404e4d2d66d34a3852e0af9decbdb383d21b902264c1585b236fd0519ecd6726bf5f345528e609ed3dd4123ba1f9167bf45d21a6e44691a44a4801c8e888b12620fe208649319bc86ba2b5c8b67fa4773102c316762dd159c38c997a0a72fe7eba9fcee665172fc0c6911f4ffca15f8a23f0cb6639c4247e861ff0eb8a329be94fca115d35a1b272f5c23ec20d25caea90fced8d8c381288070d7dfce255a86159561fb4ebc3a30cd26b414a4f38fc9abd871b6f0a95171bbf6046908d6794bfa9d8d8cd866ae347484cb15194b218af8fb28d79b271f97823cd86aa8fd27ab1f1b7334da91bf93c2d93a9da18abc94c23f4be888b487d29b3dd2c2de6533d9d9fae3f95aff23ee17cbdc9933db0e6631d6a60d5fa3c4fc8a1b0e19aa183af5d15de0caba0d9c0d4b396c56c92942fd31f92bcf09a41f97a96ae9feb1a6a1044eec87fc87218c10f593e9565339bc1314dbbadb84ae0a249a51de920ed7ed4d730d1004d46a3dbf34d7adce687e4b84c895701305911212369ab1af8ccbcdb229cd353790ac573d184f661d6e3c0978d3e8ea89ef0baf78b10066cc8c3757cd21964e94096cd2a49d2d85a6d717c8cb3de8413dbcc755b348e1b6d520689c649e3a4f34b96a4cd46a375d25ad4bdfbfb3655511758e5c9b6ab859970b535bd7cefd4a576799046ce7239b850e5c7a2923ff0ea7ff225bfcf65d5d2afbcb745a57d1059db07b1455f7139136bffb359bb967593b6d4942db376c766c08bb1b57d74b10520b9e33f7643c556ea53ec9f0fdc3d26cd160f4124f3e296c3d8a542a6f5bfd7d3d96e3f3918cca7f3892cbdf4fcc26561dee8f58e9bbddef0f356af77f2d94647bd558366106ad466bfb7618b742bdd08dab445a3510d9bfa80265e04ef8bb63fc79495157afaa4baacbed3b88fbc8a66014d47bef9ee7d1df61098b6f7f1d649b5af773a1257589a26ccf2496bc565f9632ec9317cf46485afc690584e10561aa6f82107dfad4b4769a2e9e642cf318e475af34093ab1f8c914acd5f5cc4b076a325bec3f4871c6daaae7e4644f60b3b3e92361aa0044b17992483ea8e47d0adb3701fd4b02a057e382d44d878fc507016de8655235ca89433b5f4f8b8135e259b744a77e93b6f5eefdbfb629375d04f1b6d26c6ef29de296fef29c2853d0d2eabab7efc425d1787595eaabc99a4b379c9be0b84da2182a5daf0eb50da29b2bc6c7adf642f9a00e2198e8548581f5e02444797982f227647c5b22dceaa91250fe6d3339537654bac9bbfcf9c7d516010eccb627c28c73cb7786c1601aa328b90246b507a53a837feaf73052961f2126c94f55c595eb16399bc9e2c0e495e8041b086465d6fc8c69261888756d4720df630a432fa25b605cdbfd13a1ac6a249ac0b3a416368e1049cae68a459aa1ad03b87d91a699f035409dae885b215bcffa3a78790a931df8337a5341356afe96c437255ba2ea32ab509a2ec931a227cc0f87838bfb92a3d0246aaa5192ef364da6cb9a3fa5fc73b7f593bf14e6af40563eb5f87199465f0b05866f9819e8289debd13454f89d6250c0087c9709f6041c55a09ed6551996acba8a9632c35ae4bd96f1ad911d239b4d6681d1f5e4fcfb249c7809c345b6dd12f4a357b221e3417f5bc095062dba1efa4ea6dd96cb53ac32c55ad27b78ebbe5c7649ac95c4274468db763181887e8071a37feb309cdb97cf56863d4160dd1c08b43cb3381f3303d868f725567d3ab6f8bc77e6bca9ee9e138de3cf160489608a1b6309ccb8b04930b9f6e9f1af3d833254e353d9fda237d63c3be8c7e012fa247af371e6f6e3ddef8c7b3f5793e59d77f6f7ef5f8cb8dbf0cb2c944818273b20ef3a04a9517262c0eef4ee45e2976f029aa5b7336d9b3d7eeed260106d7336a97ab3288f063cc6672277dc4489db94756e85ce5396e2b719ea47232b154ce089eb6653dd9adad3162a5fdfa2072210e8122a6886137f0db95517968f1fdc41f5a057195edf35352cf2d1dc09d5c0de703d5acea14f881a7b78d59fb5cd9130f2b7597bfcfb28992a91171d6d622c23033017fe0cb09d8ca8fe9a70f77c3cf75a7db60500090853b85e1aa46f21f13093c712fb441f55b71c133b46c643a91f7edd8a1d1f22de28a0e1dea9ad4f0af27ae0e0e3273a03de1adf07849ceafbd17371c7c4cba7b80558b8ffb5b0e689441bd031ae5d5fb38b317bf4ed82617981a8a93268d8c1d9056acd604a14f638a124ce3b8804c569a9639604c0c03c87aa18ed338f6a24ae68bf569fe3230725aa839a356315d550ccf2d3b870bee766f5b8eabc7db16c7272dd273ad352adf58d01df1481f8136fc5794c3bf6f75ce9389fe969be5b721a1be75fe3b9ba615efd07b6f77c07e79934fbccd1195494d9c931ae9f92f9ee0e5001ff8c2b32fc679b1b9013e465bd4749e4fbabe70b4d3681d6f9e889b1bd130c6c520747749b6f66f016e403d7a07fed3ceeb4f3baf3fedbc18c8b3972f3ca8f56136f56db78cf9cf12665ecf1239c9461148548c143eb4b1ad70266163674d1240155530c466c2131c8d9518aa89b421298b7176a59726cbc5185ddbf4f40fa1871d7168c5fb49968e844ab3f9682cca0c7081a98afeafc8d528294aa5691c3f6ae3c5149ab0d55b3598974a8049810b74a0f9e6b3bde74fffd9df3fe8bf3814db626b33b0712b68aa1699ba11070d8cd7a865604b06dc62db18a591103e4e8a8e9dfcc01cc746ed41a43fe6d97cd615bd873fa2e1909d623ace9e309454f7ff992b38dc8f4f786542fd3ba4e9f763c810905e9bb8619cc0a144d0d03dc407431b3b2fa008ef680206272b7dc6efed82ef04867f846849fb3f508be0f2a49a536bb88865970f800598ca00cb9a1571c3ec69d363d67ba79f6cb503dc312bb6ea80e6e994a22c2d37a2ea25cef68e50d92e3d2d0fb40414eb55752628e011bbff0dd544952a000b6ddb84405e21c4e7e27bcae642a40c7e1c678a6f77dc1d936b089936c906f66f4a044388c01e4d64f950e92b8789de76a6c4682e7399964a6114637ba20fd559364f071a78aaca713644a6233cb613e335e709c56f93c3a16665496e7b4f910d89b72136c2b9b5392dd480dcfb34d04416a545ac71153e32e82d91ae436a7a980ec560a22456fdaa19007d6ec3a835ea8847a5004ed53f64f933b42ff4a889fa6029a6c26ed037dc8081d246cb63a52893a9cae6251cd634c5caec090a93051d3f42b8a665435470945d28e70a1cab7479520a5556d0b439c35f6e3b69eef454afcb3315ce839d80daaeebc6b55d0f2bebbbae21efd0f5a4600cb3da6be6a51572d8a5d07316779ffc7348168f714be25a760367f3f3a4283b7238b486cfaf5ebe3e7afa9cf12083fc2c1b5e936fe5ee38990c6bb85ac5edb3cabc6e9ba780af2f5c8c98b13322ac31758e480f715beb5aa3f0feb3fda7cf5ffe1845e52cd79d1237295ece54da8dd28d05cad2dd4956a8aea3749ace1a83eea5ccc4b1a3fdef5f3efb2761a34ee30cd3fc37e3e6de75eb6204d77a078098d006776edb123aa1a6b3f21ab10113f4137fe03821ee07360b743263f288080dc9c0df136dcaa9a5b13ddf66b6e7a6861b9f8b1d928a8225ad0a94a2eb217812685562eb651c38aa34e954b6909b38e14ef2efdbc28c93c18d50a845637703d90a421e2cd19bc224383693bd1c1984eb16a7848d0d713e91658961355201ad303a2b91011c9cb5d4e11d8f15edb3ccf336228868d6649e9b277e027962c9fff8a45527f3bb60589bfe0c129037399ed93dcd11f907eba117493a9aa8324bc1f755d2a94d3725e02287c446d0f022bc04597db09bdaa4f0608881046eca3e6e77a03549051d222d54e961058af79c38ecc39e96dc9254d439788c65f1f22a7d050914ca6b5021b29509fae5ef30a3639fd91f9e8c1beff838bbf2e7cc17b2820fd689694ee68a7e45f3e1e8f53440afe19a4160c13756d96557d0b9419f56309feab9bccee690f70e2ee1264d05c498a90acff011c860a485447e6db73a3414720569cc6c46c76ca6528c21d34197727d4dc08039e793647081327f3936ca2c4072a6ca2ba5526c8c027356a8e1ffefff0b880a210b51cc07035514c9a56222be96ef9d0ae1d6097692e382a9e6407ad21fb61f925e25295e4d6492e253016a561a936c288bf18657d5886cb0ecec97a3ecefeaba999dfdc25f51bc86505931e939fb257c862fb2bc54c39767bf541f2e567b53f39fa1781fa12c60f6fe53d43b3a0ba8f2bf0f5f1eb847a4a6ed620df127c5ab3c9b26857a9e5c58ab24ce6cf0ade281732ee48f791de0faf0a2673036e2dfd1cc40d2cc7af82bf3563d0606037fb6e02588a626880fe598911c0cd87c060cc79b4e3918f873a949cd7ede7a6712ee4a340203103eae899b1b766496321f29f74a67196e22b6c5d61391886f9d8ba6718911c9a34781d05364f37ca00f630b7c9c9c308d4fc8c811be62a1471d65f7398fb17706723269625b9cfac0680f4763e61701f9140b2fd953cd9d0170c4ce5b33a3350eace69db576259e3856719e2b455a41e4139d8dbe2bebfc5234500d2b9ea9129989520252909e4d943825dca71da61cd5207bf69b260ca429f0dfb64df1da9a78609eb0d26ca820c5a6ab5fd8071c66a50b2fa0588b65ac3f6e7b4ea9daef0f95eaeed0ecf1de6091df19888e9fcde613998b5dd09afff7a180798637a1537f11bc5e62959b2ad6ebb535f6cbade0b6379a85b34281e84e71590fb2a1eafc528473f40a81c476d017fa3c1101a1a2cfbd29f0649670cc897359942a371f10e436c83fa467f04d994c6212323325d9d80061e1745e26938e5e24ddf7cc61deda7cd4717232002c9a337abe8a97361bfa2b8d167ec77bb58692aa346d0061a3eabe3e572339b8b6f3dc394bd2a1163109b3dff76fc5d666c7d90619c361b602d4cd573eb69a62f31132cf612172debbe03c74c098e46a6615ea9e48fffae713e99f4fa4bfd91369e421f26f6793b99ae5495afe526c0cb25cc18ba0defb078762db6a77460a030a808e6a26078a5f1b35f48b37cf8ff60ff79eefed1e896dddf691e83d5c9fce2765b25ea889a2b7d3788bfeab97af5efebcf75a6c7b7800c52c9be9f187ad5fbe38d8fffee96bf6ad6c9a2667b20eb0aff13f7ffa4f2d1e51536c75a9f289bc0e5b5546121f43a5fbf19eff1927ea4f66f0bb630660bf60f881b50b1850d81046e88c6bb8c2cf5d93a454d3e74951be0695adbf551998bea6ef976a5a801ee636207d8816f55be7ab3fb7ce9f5be7f71d62cdb7ab39cfe6b938930545c6d7d76bc2c98e937da831062607107c0d62d1a8de4378bd79f57affc5d3d7ffec429ceb642af36baa387cb3bbbb7778a82b48334615ff78fafa60ffe0475d41a1b0a9e2d9d3831ff75eebf2a14c477ad792655f25440bddd251b76195ae745b6a8bdec37e5f1528f9db472250cba0d96e2fa5c400db0bff07937bf4d3de8b3df8eb36609451cab182d03aefdec317ecd31f84cdd475dedb25f4ec4c0e2e4679364f875dd1c84767b2b909d196f5ff77feab851691a37959aabc6bee27e32c4ffead114dba626b93ded12e555e26032c42bd8dfeefbff73110ebe3cdcd2d3da1e0eba0e490f7097f9b0e8d95e6545df1e5265a9952bf27195866a35e3c994cbaa271354e4ad53058cfb3ace458f1b76932c826596edbb4b1689e96764c0600a6e0f1575fb585fbcf66e7af5fb58c6de879969687c9bf555734363bfff5959a36dc685ddf6f9bb6eaac7d6514ee309a723c9f9ea552337d3b225b660625076572a9be075391ddea000be8e5577e5f1e9b2fc83ccfae1c72f819250a30296f57e6dd1bf0d6635a2da34e3117c06da449bd912a8a217b2dd6e7dcd9469aade3512cd3b2f34bd168fd2927fe79d8fd8e0e3b54443d9d24a31472134830f3c45755b3b1857c9b901a8a9d63ae0dedafddbd83233c6c062ad55c0bcfa0e77b3f1ce9c2893a2fa9e8f5fe8f3f411990b43d948cf92ebc2cef6669a9de9a27172c5b47cbdb0156359cf56b3f49c72a4fcae279a6392ab6a989c2a58ae98607cef03063e0067c8bd5e943f1085465583fcbb3d93ae8b218101dbf045226e9f53a1535b8adee5dc352f358d4f40d0a91cdd02729a82ed392f7c21632c0992cc747d96b35526f676650b21caf97d97a0e857c86cdcbc3ad734b80de7893e267394986642d003ae0f77c9ad7130edf47798b7271923092a8651777516bf69571961410ab3f19985141d17a9aa5446805d63630daf7cb672fbbe2b549efa1d91fb78430f49a017354f8045a14f3a922aadafafa919168b0c5819caaa169b61d26b1e2b5cd544e15f33519d846deb7c9de856a3baf205789ca83088594a9b7f7d002505442d30e03db2c686700a81da960a9b975a3f13aaad9cc5ffafd576f5eeff5fb9a914406d9789dcd4b95832e964bd533cc35f5f4d53eb0c2d9bc2c21e0b7c9ae673fed1b9623b6c8a7598c545899cf5c4c439c629f9b3411515b54a049d98df56082302fd5eb2c2b5f801679db7f91e4759076852d6ae8cf23606f6a0eb9412c53182f1fbf08dc658bae78f79e5987edbd9583b22bcc372840fb866fa3fe3e0cf98ac308e26d5af32babd837c658e16ce03b1ebe9f110e1efcd5188853ce6e375097f280cc3e82b433a6cf365c3d64cf394b4a2d55483196838b8ef88722c3854c14e05a85e602c089b33cc8e6a2ef1090d8b5c05ccf94977990a54599cf07a53e8f530cd6526232683028be16dfbe56c3245783f2bbc262cab031e5742383e08ed83f776ddbfa4f4ab44e0ede1b365f9845043068372ed3a12812cd4706cf5e80bd032418188c93c93057a971dc98c95c5f31c110792aaf2da6912a29c3bbcd0e432d744fbfc575fe4ecf237c0ec40ebe44fda478811541020eaa9e29783979ee52cfa4f3c9c44f348b6b89fc93f677c5a780e55d0d961e1374b87d6a5310856fcb618783a76322b968029ac509fabd6432b174320b66a3928388bf4fd759b5f6c330c9264d6799896dc362ec1b3a4d36d63be3a767c9f045e87950a96cfa56e3de6a7bbe23d676381c63683a1c9b6037b95114b1f9703c291cd73f92c9e44dd5a922561f317d3674d612decfa66f9c48dfac3aa318979625ec84c393971bd3d2e6edb248d61dbba36f6ed070d2995f806685cd27ed0dafb9c9c7593beb689215c9a234d58750b7eee46a461a77ec89c52368f3fded75cdab098d335a31430cec0b583ce2d406e72c19062e93118e96ca6d1a92dbeda9e316c30af5609c4043b373ed6a51a6ec24c56bba725ad7756f06c2067c9ce11ef6b6ed9bd910cf451ef85a5dbef20ee3d513e2591c1d9b9b687b3b4642a2f7505fddc92d078f47735498f9f84ecfac9779eebd6fa01811d6a43b6f62e98fe3d98fe1e1104aef4d86e3e8ea25398b9583476cd12d8b74416a26708e856655604a5490452ec56699a8b4d5167d8cc2b2f904fffa1630e00fcf104bb73fee93f19333c4eac76ccc168a6664e014d6b5c5b16ee54298e5a3a21517dd5c7aab5856eabea3aac08470f1d1c6a7baee80fb20a66c16dd4ea9cf4a4326ba90512f62607c20f7c9c6c2090a99999f4e98f32008a2d1f6a04871cdd81ec41f33a1e4ab99fe38ac9e7d82b499926b71d5f1583e73f1b55f2ccf343f801d3e8873be6f793fbea3349b052ac188e6759b8e38ca40332ac5605e94d954301c7033d695a756e941ccebfda967a76dab3d0e270b07dea9e3b3c8199f27e76a703d98a87b608b16d7123cd1c256b38284fc66f964201e2bb05fb86f41d78a82b8f4590af52d512de3b758fddfa88cb8f8e0aed6468ef24a8f1032e81216867d6a0b876f61f73e4c6cb69d4088b06b58bad47c2dcdbee91e5961ad9630eaf8ea227511648234610de685cacd6d389597c9484295bc92d7a80394a218e44aa55c1eb1dda6e492fd5c9d336ddc5415851c41b4b45c9d77e8a73d5074e167900d9800f4dfb696551010cff70fde655d57cbf56d8b2e20464367fcb11c5f2088cf3e7371671eb832b1b30257b52ae526a61721199202c29967a46f71d2be13d9bc2c92a1622221f2b9004d25b931e813606a6e6e84eb6aa85c0849c8ac0db88e6ff38646cd0079286f776d633cd28a10c42dbaccd7034b9a859a9c7b5a085dd0c9d5444978eac50e358948586436e6b889dbde434e8c4423e3db3fd4873879df10a55e39f3315f7fc13bd6f4a39f2fd967aed7e0dd47d6e0f79fd8ccc2e969c6a683beda357ff8229835d05f5dae625b171e24b6f9ed2d552fcff59fcde340fc6140e8f8420e3348e531f94c932e1782ceb2cc5cf4c3b11da1cfb8b963568efe013cea5254715bf03c992625c44ed9dcdce415bbc4f937fd142e9aff27137845023d34734d8266c7baf0c4ee28566603a88d546a6372f257a40ee146bc2ce815ebcfb7acd72ce0bcfd88d876e89fb05a68fde8512408160767d7d157fe41405098cdf9cdebe74e3f4e8c1f92c6cb74285c0ccae8294088dc04b6490dcf26d226a00f521b63396ae3c318c48824de0a6b4c38797ff8f65b8055b3705dd0adae337da1ed04685596d7c680c7eda605a7293b33677936cae5545f1330e8073c8949275e4427cfa8d0c34394745043f3740227a557683902c88a505f66fe290b5a75aa63e98d31e3b13965f16f7ecac2b9638e595dfd473c66eddbc49d0f5a3f8575f5c0ac53fcf9c05e55ec2486f9dfb129c4e167d7fea40712d690a5b8f75fc89b3ecdec1877244d1f3091c8a06112bd3d5b666d9fde3a66ff769d0b1e8476c8dafe8b5c0ad110026456355a83d59c58a22bca0cade4fea1c5191482f556024b199c38339534d91b1b02a2b68c95ffa0934ca76a98c8524dae3b5c5f5ff7e24247b87d4809230c30b1297c99f87099c83bf06b7b723f12d0838ad504138af47ada0f07e2506dbfa2524e99754d3ca2fb9045cce68dc90f98ad3d2a3fe883ab5b9148a85277f1168986e02b6aeb93d6ad52c8675b713904cae3920854d5cb229f6dd1615a8dad0938fe0e0ad3de43d0b5b88c0843f68b3220b00205a9fc2f5d0872fd895d12a36820c7063d84cb6c564bb7addfb339da77237252501e069b3d7625685c13884e34788ca25189586b73b5d80bb36ed3a57f9d52aee80a344c7677685ffcfa6ccb13c0d8f914f4df26cdabc8609f6d45a5300b5d2f82c1b35344002b3312bfa22203b4b2520c32dadacc1331f1c94524f6e52716739fb77607478b3775b3d435c53d1b310df4580e98fe6af3b343cb1f862e61adade842a59fa9b718c2d9824181850bab0d7c5494f160aa9fa29dc2be852516b202609b2cfc5c80c5959b8de87dd214baaf46c078dbc5df8e6ef6c2cbd062ee259ef05c54e30000cda9615bb00b12120cd5d86d4fbfbdb8447dc6d6403aaa32397bf6a874d815fe2a9978d8e19298f175dd9fe60462b299e52ebc171d8f511866110251501a26b491348ead3139947d08e6fa1900ac53c2cc21863280f8790630aabaa9a390c75b3c6a13193311afb4d64cf37cc2be8efb606d4d3c20f05847e20656de46442b1cdcac7372cd869e190030c00aae5b6b6b38be6d3a9b76a8bcab8b43d4442c6296e528d6a061f49bd7cf0da0b5dea23f3886abb102c3617d0fcb4a34fb417c3003936b3736b40a83285755da56d30c0e9a58d2445d797ca1ae3b7aae6d9cfae2182079c80543fe6a9a31114e9f94449326ce85c972e26778498abde9acbcdea557a2a6792ef2037690aa97ea3ae0dcc0402123e3ad775676ea60142577d3b72278f8fc0c17a7fbb21d5ce27105e03edac30a60bffbe36a6d0cb6fbbe227ffc4bb29e88bbdf902b1752f6e86d2d65023575c51a8cf355de3ebccdd6d76d6c886f0f218be377424e722587d7f6e6e9d80cd0fedce6ace87a086107ec30d1aa62e7d3e6f02d5027d93141b320bbcd8cc2267b1768d7c68b3757b5bcabda26798cf77d2bcca5a3fbf699fda6eba997c5c6da576df306f635df8765d1213d606b29c1a1eda6e1a0580817fc576040ae89ae10d2c4aa83f778210b66c979cdd83b7917b54581cfcc1004293907c399063e470f24786ed8c3a29297c1f1c6b535fb191b87ae92c0964d103b2abd94774c4876d0b005cd56b6b7d80a4ef367d39a85f897750f615dd2bed56fd3ee7f46080cb69a2e7ae243ae6e4ce0311ae4846a284eed30285c8c5eb65333d053a6d13847ab8166ef213221fc451bb3f710fabdddebd18517ca1f6911034bba206db4a0e8bbb6389b97e0c0658a88f18151b4ed9b244f048acea8e508ccd954313830ff0bd2e0d6918b1f8029502dad6828698d1f61a99864613f4e825e8df8b0e3008d49f99438aadbe23b35bdb2465196ebd146df3187a2ada0a45346ba118b0d1befddae7159b3c6a55eb2d26ca84ecc1dc2ce4237623280e3c7f939e0fe0b2c72e3b1a93ca1a50a7d7f42305f15674477752520c754b3f7703fbdd428e0ab9040153bd310c57c068e735a5247f791461765780d991470f24b81ad91f86d6b1ec8d858a6d2142814c1a33a377776855ab336d710acac7983c3e1e579338469d985410aac31c86297c368b7cd9dd2afec85f6a99fc40aab1933818eedea081ce6f8f22523dc4d0b653eb7ecdf81e06f4a09eb77c609a4d037cc1c766ca425b8709c29b2101b46d8e66f3c1b4822b74c0502ad3c0fa6d9c79f04cba6ef30b8f83a9bbe7ff8e896d92d1fc998db9b247bdbd094e25e38ecf3455b34cc6dc746be66334616de20a1cc537d1ce7d964828c94fd6a66b9b84c064a5caabc90ad0ef8779329e9e41a952469267a0fad07cd4364bd7aee215ee70c4ff8a1c852051ed4a2989f15ead7b95e5ff2966adc0b053da8999d0f9b1c7f6abca98a4e8e1daf8ccc8a9b392daf65d3a4d437b6a45c7662de57d42872387caee430494787135978f61c4cc1d9198c65feb46c6eb6627602f81345ccd807be9785d237c2e619fdc11ed158545b536b956fdecd3708b709b7437bf9e3ca757c620dc7e5903f1295ab6acf7b7d73119dcb3c99dd4be7f535e20c6da16a3b66df872addb389e0346c0bc878f35e26a9fa254d42650e1fa24b5fab667250f27df3fa79e85cc7823466e74cd711bea8db9a2ef34af79e4fc3d5906532f849a6c389ca9bf8daca24c84a02f83b30ca1a251039b5fcbf022d54be459f6fabf8690bde99aa12a866e7a559366b6298c888eeb1cc66eb1375a926cc13464f9ffe72efa1553be9bbfefa40023ba17c392281e818bad78d52c841390786413c099400f33cd74cc22ebfd847fbf2b66625bfcc0bcd3f06593ec488de76a18cd3ab89de8deeeae8d824de14ea7c3e115399a41388e65baa026da5289a04041dc9d79dd1423150a9cc93ac0875a77c7eef4185cad12da149e5e0ffe1ae3b0c75670c1bef15da412df4ace55e3b1db2f7524759d331a2dec3576f0e7f72f7a7f7d16f994809f7f0b9d77baf9e3fddddbbed8bcf8d3b71349199b95766d96c2196ef27d9e0e22e48967277e2e459a79177b3c0bb119d1b39f0a6b3aa1a8d6a4619c867e6000b7499f6b874ade2900c017f9d2525550c90a174812c7c952b371e33ba221caade4a03a64f37b54c291f175902db3167061420c2c74a773c861fb8a38743b0328f97589ac7356bf378f9c579bcf4ea3c8e2d8f571f5dabc71ddf5ead7651597bde9177efc36e54f179d5e1e38be946e421a106f4334fa66153b2519d9308d65c156816b120ca4c9323698be3de4333b95adce83da431e20f77493869f9d98dac2da6f32207b2fc2957e7dd305e8c2e6c7ad60a8c27d549ade211a374681cb3c7c30da72f0aaf5ebe62c1479c2aac4ed4aedd749e65aef1c4b44754dbb15b38433c003a572ccc28eb06c265efe128eb3d6c3188efe5e02206a5cb7dc81fb2fc4ae6c318305571788c24e0750f0f210b014e261e009c2f3df646be94f7aa7727d0341873680d0d7503eff40177c77fdf8a6aabf9f9749f4aebf0dc0b75d786666acd1907753ef68bf4b2ab193df2e9889fd39fde35d5bbac7c2ad7544f825fca357581f985bb31e85e430660fb100f3101d088a57a8d8017eefbb84000a265ae0e00f8d1ac3010fd9f6618ce78e137b7c320ed5f1b69104df331076d6079749ee57b7230e6db25802833bc24b63ae7493a6cb67aee611f024199eb3dc16146599395564e26a88377fa48990ec59512c30c6dbd645a328c6526ca3c198df4f64c052509dec815fafa42c0c8abccecb202b719cb555b90d28cb03985bb2cc530393f57a05f78f3fa79c18c0de233d2ec479e253cfad26515337d328071999e10bbff56486d83577df37a4de605de7b357bef874a6eeda2c981959de7d9d46b6b6c7296328df18c5c1cd6766880e0ac0c79f9fb568d418d05e871c3174f94338fd9b4db27596a37bba5e6654d6d3cb3a28ac90dbd6e2f7cdcc69d7caf8282e5922b46eda97f98f5cef58009ff2e1f6e0c7ffcf3e5e64366e7f7f87463e4a4a7464a1a27a3b1cad721da3563c42e291444179ccec075f55269a92ae62371959463d27986d290e689bb9ca67723311eaf72399ba9a16dfb5a9ddbb07c913aef3e3c95895ec857c6186fe1cd98d8e471ef6104ad7705beed52140daee62ec5e6d51c9e7977bdf4a0b11b72ec334cd31a5cbff890db22f289e020800b7b6cc0293b122ad6283ec7dd0de2b1f61eb24547e33127a272d09b1be12acc235aef618b3c90773bff083a26b65d03e644b4aa11de6e8c898bd83484362dfc76ec3b19f1a0bdcdddb6f08e9b3b3adf310b47ccfe4ea0d6928f8d099cdf29fb3341336f850b7251ebf7c1fcb30f8491f7cfe6c964d8efd37cd373a22e83444b9e7ee797a22b7a0f4df23ba66b51c554d7ec1d527ab982c7859d0e75dd9b17cf788857fc4b0f0e3b8c1914d7d604ff892355c5d4339e04cf0b6478df9b7e8a6dd6e76386e3c493a80b35c8d2a1ccaf6b1ad2c74e5848e5a7c3a19824e90530bdbc4c06134a52abdece263249e1c56aa84a994cc438bb0230cd5999043bc940b9251e33f1153eca05d8729c67579e5d99e6fa3257b63906c6178f62a3d05b06715ae1dfdc8b8d1d271c053339a2ee2785b5cecee769ea7da032bb80de586fc267c00eb81c27e9a8105759da28c555965f6016800e7b0a3103e4cb6a17d56c2180b2a97efc687818baa26d9d50db82f8ab01f05fe0cc759a7b41b79db8dc666791350017b210fd3e161aaf7108f98e3e3e2f543e52f26ca228cdee36cf191b54c6f2c626c541961ecc27131f048da80e676a90c80915daf0d4ec0bd1c61cff8307989936c8488bc968339bff37f470f1bfec4e63d440fd8c2844253f6a991d0200c656b2ddb6bdf19aeb1e1c6317c46b35da7b3b3b69688e5f0bf44c960a419202a8d89c766e7ed0eb5c416286a2bbb1314acaf1fc4c4bca1be772a0ceb2ec620318dcc6d9243bdb38fb4a0ebef9fa8bf3b3bf7eb335dc7afccd7fa9bf9e7ff1cdd78fbff8fa8bfffae26cf0cd575f9d7fb3f5f5606ba3c8071b49914db37c364e0698852a196c901cb7c17bd3f9a5f8cbf3c75bebcf1f7fe534420399be29d4e1f5f42c9bb874a8e6b79718582f1556e88b2ab922bfde7bba7bd4df7bbef762efe0a87ff4cf577be004cc90eeb0464d0c4ddfa1ee8140b7f956c9c15f43fa894ca3473e98bef8b3cfa8c3baa7d5ae54e8077c068e2071ad46eaa3f4adfea17a471c9f882ebab806b61efa928829335e9663955f25853ac464126a881d0e3d6a4d1e6af2d4040c7058a0d7e5da9aadaadda03b62a8d46caa2b9bc158e6aad516e177bb5852e93db945c048e15394dfb82d4cd2e068d711c8bc8d536ee2ce54ce98271c2d6da8f05b3c5ff696ed3969474c6c60e834278bbbac897308f61646a1f58e7b6fd74f35657ab603e009aea9ce2a6adcb0797e6bc13f6c0e8fc513c012320793e06456ec3cef8e5981c5dd0163acfaf1b2eccfa06f7dc0faf221436278ab430a627f47903b42f7e66621564b3496ec18e2c826f0bf5047491517743d4be4f56ea655da9de4c078e1cd4d75cf79086207767d1d9c3441a1b5aac351ec231f13db015f239ab1d038f63a6822f800f7d374888c07ae1726bc50f0dded6d1f37db7c0f6ad1acc636c2f5c27d82b405915b788f42d4d555aaa5038ed747b20c3ff2e4454b741d39f1524edb8aa7934913a3cc4622323cf09707e05a2cf8bc2f8d37f065c8bca718a5ce99123245cfb9462b7221849aaa8ff32c57976d91f220387697999de460c2f1dbe4fc3691896dd5dfe2fbfd4925373403c44c5fa8ef79ada6d9a52a40d17fa1aed7517e5418b3d7398a4d92a2c4481b2ebbd7df667972294b4c58f53778b51f4c94ccf1f7544dcf54fef25c3c4f8a12c277907ac8cec5c454ecea56365b3844e5ef0f6529fb7d179e0423bf27ff56c27a565786e823e4a37ca5f2f32c9f1642c2cfe3d34339552083feafcab3d39326a5fa5283a95c4fd252e5c8eee404527e41f1e3af1f6ffcb5b3b9f197420dd60b39553055ff5679d642bbc86c3a93795240568bf24aa914de3a28944099e99ba2caa749aad077525dc3154ffd3a4f2ee5c48425c3c9237b4c7f22fb54070938beec6c62da31f1b7812cd528cbafc573998e6865642ea7e2dde7efe93e703456f41728637547292f1a03cdc0875f83e25f350d905c0bf1ee2ccb264aa6efc56b2a392df3b93aa5d19981fb636ce3fe3f0569ed9430aab7723a9b283b7c4dd799e1dfef444336ba620bb52e5409fdabd4417dbfa37e6dd2033c61a13c721b1b62fb3b13532e06acb17ab0d04b1fb8211b6dfdd55b700218b1340d7d1bda0379d01607f2208a966f1af5ab958ba1bb55791e0e0d9ca19b1b2ad202b2bd2962dd030355b399d4af2cf399fa9512517536d4af9d5f202796d95b3faa9294c1e950bd15b21457e3648029f84e2fd4f5a9480a719ecdd3a14852710a7cf15464e78cddcc6442210d238c85081478f57b7255d6448a7f4112bd62a6a5b9909e2f1402ea7fcb4c144ae6e87c1e123286077774ec064361304c340b9a7924e1f5ad536719e0dc128a221bec935d3d9d404e8e84d761f279a613027fd2b97e354e264a34b16c7ddd933ed5af88ef186b4f8e374f1075d50ad4e274029d7736ad6fd52c3aef3d5b7e5e6c09a1cf4b1d4d8837851ac24befd93c9994eb90480122ece50a1460034529fbf0008331bd224b043c98b92182c6f8bd4184d412c753cc260918f53a841d2c63b46a4e3ba44ba949b22c08edaa67dd504d9429881f76961851e7e15364c6b8a426cf1cbab6228fd5e7f4b5b89205351f46f8ab4f9ff68c7c06dd6ffab4a94f5d63006ace6097bf0bb6c4b64fe21a06c99089a608f92df3e9375e14366913b34399c8a2dc27dc1a9d890ab02eb62a38b7b71db8450e8d66d9ac19933191065065859d054c6db1e5496debeb56c2e0571fca3bb450dac099bce376f159a8233d4394598ec4ba901447aabc373a1ca93224c2cf7dd6884487baa30504f6a32aef97ba9c56d59097d871c1194417f0533ca0e3ad93db96ed47557ec89aed8ed5e0a2d0a429172c9b506f93a2ac3ddb60f5c6b2f8d0d5c325d1a29aeed50a4c44a6d436ecf1f28ce42759b07536b71fbe8afe82e371f85dfd21c4317fc80a1d4676150eb1ccc4292cd4e26d55dce3b62a54554089c8e64575f7a114e96f4136a2242d4a990e166ec543dc8aa4dafc14fcfed1239f9d1a263d2fc6cd63d7959318c7f6b7b189f415b96293ade1421a3af476b97f437454e497131d856d90cf471a61454dab1f551969f2a32a6be07f924504fe2759d4c01f46f11f5afc965f81050104fd61d4435e7635bb80659e8cc9e2c7a426383154cfc579e0465688f209d36ea32661602469a86e7dcb19b31b89d9a8258c79de8ed8145d53da61522f10df00d50abe68fde89121567243e50fe8c80aed77fcd87226a320f4f91aa46ffc6bebc469a7f4cdede97048222f4cc2a91ded69079f8c6c01b7f60282dc0e751851e0e306ca9e8d13de80c49038fa912a39ac3efbe28063597040cd82e380858ff1103006bbd0b6635bd09639aa75e87d925d5237559492cebc55d45287ba55953401d9428554aaae1801b796d64e39cc31fddbc21bc9ed238c5e46ec107f3717117f9a57bf82d868c37046d86dd0b412225f08387142819e07038e2f9113e72be239d47fa0647eb745b99354eecfb62f8fb323d44eb3e612662a6ba787c4e698181c9d9ebb49c02bcdd2a7927efdf98ccabdfe7c8e0964d17cfa426e9e65ec38d7bf986665293d88b54280c6f8abca99a9dc7d989ad94f93b9c19dd53a285818bd4e684ac2719a75a326057c24bb023b5fb2d0e488c7b278799592f5a63eacd9973a7e253b4acc97725564934b0857402f01c6a8e5488eeef00e90556d64283a16a0370639859f013e0593599c9423fa7e3012d3ad955460d7d323371ab12d42e3113656d17557e727dcfcb740dba0e4df6a0846c81412f0f44c165a6cd0d3440a5ee3f3755ac57eca875dafd38ddf817e9d2b4abbca76b1d9fe9ce5e5f24a78eb17113547aa7c2daf8ee4a862ec94685211db014131dba67630a1cebbb284d905a0631fe684a44dcd54ac60190113dbdef41b01749e4e6571c1335eebcbd100de869b0a837af4c2c8fb316a0a4cb4cc45cde0f714cb30119e9165bcc3a51cd55a1ec0cda86e426ab4d00b8f62bb6e74d82ccf7f96e53eff17f8021ec1597aa9f2b2303a0dcc5a809f13f342fff7b4d696af567cb9e509113eb9cc26255035a41e45f668e60d3866a8b60489c788c847bcec69473096021d982df221fdcf3870bf9c9da5b41c7fb18b6036739cafebbb2e32746b2c79309f4c4e1ac4902c270980de98f2939524887b384634b1405caa643a43ab34b41fd307c9c81c22e88721cee5647226b51089bb7b34ba162abd4cf22cc5b0371ff50cb9edfc70c79e47979a6f9ad7560cb51abc74b8a758a7a1def157aa6b1636a2da0ad6606d2d2c4952115a35568eba6e7c67d56c1637d2b87c6fb84b52382e3991e9680e76e5d73365b9e4d5d55567694ea94b8a419eccca75836d5d632b2ca7a4dd72da114dd51975f081af70ae9c8579e72fda980f42156d71aaafe907f0b0dbdc6c9db6e16a0d8534178d46ebb4d55bc1e262b3b375678b8b15ef256caaa5618f4b594ef43b4941644199816a4c142cd8f1565b3c6e8b2f4e9682ee77d22c9b2d056ae30f57ac1e363c1be588713b58d461e64b6ed5fea462e9f0c0b9e936b181337b07af775366cdafeb88dff4839d116e3f388eeecafc13c034b790a6e0ee4c5f16d7e92060e84f75d90f3416cbfef5e002c00acc48a501c88f263765057696676faf03e857baec24fefec5a8152de7cf133514b210529c1ae4a7554df3ef76c759c6b2f49633a36cf6176f0d0bb721cf061bb5bbc3db1fb64d78fc3c08f6ce82b7767069c224d38ca1324a04b7a54224453157148d100f47d87ea7229b21ad686c1b1bfaf03994e7324fc437741734736c771fb8fa5fcf342100bb06fe8b9647ec55a1208db8b1a2d534573971bdf7780db26d495eef712c2102770576ffb82243d8b53cc0ccf5b20a19737b18aa526f92ec52e5b99298d36590e56afd974214e364ea6d6c5df1dfc53354736a84c78d7e9fa0fbc558e66ad8ef374eaa3a1bd790f58f61b3bd7465f57d350f145359685909ddcc64419236efafbe311ee603cc7257092903b7d6445f58378effd53979f4d906266362fd5a5b63bd049bfb4851677fafffeaf5cba3977abd1a0d6fd135fe1dd140e9b359e483567fabd3108fa0a22b1ae0e2d46cc59993eef1a9bee483621dcd8a05de826f912c0d35bc8751c306b2c3bf0b8bc19e24057dbdee85dddbfd2f0014ec8743cf2fb62e6b6b7c95128c565a4be588f34ef76a8dd7dcaacdf4d46af5d89d5a0c15a5f31a9a25c8ce9d00c7c90db6b6bbfbda2f2ebef9e2dc96195fe44136acb5e05a728997bfe686dff4d978991d423d5f48cdc3e1ab0f821b04d31d79e167fd8b2f60b2fa98aa8aa81e8f78845b26d632bc87341a35646446c45891e39f4c0cb25412c84b48848e679992d5e42a02339d71e84c49f0a2f886274f13a7e897788a7799e23a2de55b3118cb5c0e4a9517ab6b7d66b2d44045cb57ebe40a3fb43b8627de8de35eafd7fbd7679dcf1fed345bc7bddec9bbf737271ba338a31e6745e91d99a289676fabe37d62bff8292bca5d4c7dbef1af5ecf886e9d473bbbec1dbf77f2d9c6dd54fa8b373f098f2be9fd3f2a87f834af0be172c143184d63123b4ef54a1d484a258974d16cfc4b9f66d53dee7fb0657250373941b5454393d3676b0d57bfe137bcb1fe27adcee73bcd9ded1efcafd9ba81d9e83c726527ad8d515b343edbea7cbed368694ef159a3b5a462474bb83832a7dc39934390807011eea6cbf920591e17c089f480e636db363d42b34ab7cadde4478607f5ada2b89376895988ed8890bfc3c9a4ebedee2047a846d129555136ed19437d58a0e631a8a38fdc38efb2a40751bdb219296016af9e315423c6835641c4840295dced6fba33b305977afcb6d0f1f7ef912ac1d9c7ba7a54de6d8dbb89352ce276a558794ce1b16b5e2be00381fac02ea1a74030a51575f3cfceea83b4cd5052672c1c90f6872c190dff43168c78de52cbe504dc7391940dc3268d44ec3295c51ff468635617536f2b52bcc6d79c6f9ed826dfa1e6be56bb66c5dd1e724b18aeb72df2177bc1add2e9e82b873146ef90394487422d4b9989331539655ec819ce018d4f7fa22d1a2fe40cd87930981772b6da30eeab9b5882a6895e7f5fd2a23530f051acd3bc2debbd87d20e8097decdca6c2c8bf1ca46663fc9625c25618d6ab189191fc38ef713f5aa269cc2729667f67b2b1b9edd3ae8a8dd99197585cd6874c037e00f2d8767c3e47c791ef3696dd47427a3266af6e59d8227931dd0da9a7908f7d6f3d8a655706bb56e72d88b1db125ba148a6d997771d7a93bd2bc15588b52a643bd81c1f889658784c5a1e769b6577f7a7af853ffcdc1b3bd1ff60ff69e896dd1e8f727d95016e3be6ed1b718fafdff1b3643f6a075137267abbfca96f814ae38badfcb79e13013114e359e71b46f7bc9728578640b4f9e01a9f8d29425ef4a08b588218e7337103beec34b9ccf34f60fda247f58cae5469931e2bd9b4de62a34fc1b3824e981fa36990ba83db02cb147ad23b107ded37df716ea5c4085be81e7ef9455c3021d7a0cef035da5eec4f1eed74b0a86b1c03f4ad7afe41a159ce28f420900fd51b600cc515220cfadadd5188704abd6adbe7a2f7078a2b1304ab3529f23335be4df469c4ce183c6fc9a88affa80156f26a27b1faae2c3447df6a116782ee182fe362e4b9a9cff23bc95f4408da392fe3be2a3e4ee132188e799c444d50a2af447328774a51abd900cf7ac5417b675d4ed4843b38da07f3a1a03541e192ee1914490fa566d615ec8d9dd6e9253395bf922f942ce780c1d1ecc8d6aaa174a762bac5e31898e1a7a121b5d706a02123746ce8da99c5179530ffbe6c6cd53cb412153f710f47856c26065bccede6a6656cc93529e4d50708124228598a7c9af73aba5ba50d79f5aa56c3a75cbe53129feaeae35dcaa964dd66689a6d6b363c248257e5901cfe27e190da561155a5a9a69f431a347bfdf30870b9c41144b3ffe584ca3f09ef9a88c3fde51519daa120e53105ea672b6ac52722a67b06afadfe5d4915638b784517f75d258c1432caa627c2167cf64299b53390b158c2418e85d1c1328ddc2f35b0bad36c461666bbbe3feecd25e3ca140069da99cd5eb1ea97fbed68e0a3db51d95d570aa85ca9fdbf85454f7c319d5ef46a51361978b153b8c02309b8e865bec6f7877958edfa5bb2ea9dd6b9ab03f4c5971e735fc5085859989a8ab62744d6e73596418ef3ab1fc321d99dbbbdda5579de2dfe03e6da62eeae7185f8c5bfc1d19c6bb2ec621a7f20fbca1de99cceff796aa47726b280f3375b75d57a3ebe2d2eec51ca3f1978fb77ad1b56df4f905fff2cbeeedf7533600b6f69e3ce896df2bf645709f59569bc4eeac8c09541b54eeae8c4aabd0953b2c1b57157ad15dd62dbb7b712dca2cafdc4a3ff54dd76c8bff88dbae19acb9f19adf915baf7f7789817ab7dfe0548fa2c65b303fa3a260781be6dc330a5678d8a23763d36ab5781c8b6fbfae364063bb18283425594c6a26526642a5709998c87c64823a66b3329926ff9615d3afe74f5fffb8d77ffafaf5d37ff60ff7ff774f6c8bc79b9bb1f30163117ce00971b7580df77b3ce0406e3d20006c5565a679f3816a833c6361aebc1d889c838e82000b994691a600f916b1866fababb62e784e4784ae090de576379e5d8f1ef9a7177b80b2392e59ee91d8c029868be573f07d2f18e01247624d78910527a059a13bed3d173cc681bab2086c783eb2c208b477329a92089c77269a9208dc6105dfa2a39093f8efec30040e10390917d05535b8d542d2891e4bf0597326c18fc881c4020a5580bca38887b5a9a2c343c8c676a902e0f163839554010a87217aea003cd7f6d54799e89b340ca7706121df21634d5acc6780f89c56392921d18f12c538cbcbb14c874b46113e06c427411c61c4066e3c3e03776e02f68b9eab40925e66176a28662a2788244b43e64e9fb657340c845c511c423124a2a0e8c1e6934bca619212077029ac3ed270adc8058121e8cb147718252e1b3f15c3e683069192e15a8e7e962b79511ff84152268368046233fcd50cd24c30fcf32455ecb5bce2aee4c5e54053f2b8dd998faa610e23dd0052ed351a26167fe05d118dd9f19e44dd4a4c7efe1136e2602076d87e79c05017d966cba24846e9cfa8c50657682c81940d544cbb0c70217b5cca687ba10de98a065edcea173bb88c24c520ab76dc4fddc8b929a82f23696a37ba59a625078b2e3ee32ee4b057ec23b6dba031c8d2f36434cfb580dbe8823fa8ddb00d95cea72a5e055d6b908ede155fe5f8f440f03d2fb18d179285592c87f133eb6cc2d93c0556ccacc637646615be0c50132efe0f6e5583c3f5c2ac54ecadad62fa6d5294493a22224d0a4802ebf22000428ccdf2519251e8f1ab5fe7729294d72c33c51f782fcb65f631518dc960e71bee5b078e66cc96c7b3265f5b139818e2670c0465dc3a6c4205df76636d4d3c00fe91184f02e702b2040f5ab43565745bcad8969475db71c54decbc2b67892ad816024247e72ca4fed59c0cc8adcb27aa4136bbe69fd07debc44436c8cf0b8d2d6125439596c979a24886cf660175061e29dbefde874e29e1e7cbac4ef23b1ecc8b329b26ff56f949d551d4d4698489c91451dc76bff726d02777dd312fb7585b5086624340ae3f5e50b3037525b6c583cca5b3ca6cbaaba6cbaaf2dea5a35a244d52eeeb552447976f161afb8a3a30fa57576683ba31881df6a3c9366e90ad0cb68d99024ac31598833a01d67d896f5726a8b2aeb0af844a040c9276a0aeb888bb685b1bb47599da6a7959a5615578b60b1be3168e6af8756bb1d35e994c55711abb63c5ee578030cbc554bea5ab06d1ca52b2a2c9b492429ff0179c17ba0f98cb45dfa4c4a9f9f2e9c7bf8895f60e989dd3436d51b995e9e93bd29d6ca6cbdec8ec633266194b6b95dd297317d44d68c7886dfb210cb01ecb32b6f061d976fa564b1b24aaf54972a13ae2a9135a58b9f3d5ca4a71aa2f97e837ad2f13630cf662a285d0c8b373d17b88187a0f570afcf221c9adee6ed9c306bb62b0a5e7c9855a32e01280ae1474095a44022f8559a43cf8d5a22f419348d8bd4a94a520c97025c7704d54258dff03232b6914952800baf003222ce5a3220cb04449fe8a93652fd67d482348adee184cf183a2839d4afb75732ec62fc2fbae9ff154d5555a585b8bc4bfdbde3633b7d0c3d87eace2136b6b42b7585b717712f8c3de30970bcd6844dffd62cf6a0f02e43190dbc276699637b98e53d31f216257ed2e8878fac7f9b8db1a66cf345be29d53581a5a16ef9badc54cdb618a73793fd017caec6e476c57b66a458559e913a8175b62a7b2bdba4cffb9fc8e5f100fb9a17f28d5c00cf6314a8b8353c6d2cae9e0f1885502cba5e2f429e511fc03112929f49726492d362e292a20f0301bc07c76ceb2e17567304e26c35ca5b7480dd8b421cf068da5201789221b8ea2238990e324a02b782c2a30e6b4bee49acd5eca3cc9e68538c5789ea7180e47ea83c27ef2c5d3ffe91f3efd61afbf7f70b4f7e3de6bb12dbed9dcfcebd637df3cfeeacbbf7eb9f9cd375bf1802df354dfc5d4502469a94626ed6911866c7993a42504d669ee74376f8eb7d6bf39e9f5869fb74c309d7ad2951a634271f04894d6e2fc07cb0ac19d8af2426e873381da8af94cdf89ceb2793a043d8ee995ebca1d82ab3014b79a132605a49032bcc1531a2c328bb7aa08f3877dd9aa2c799727beb471d2a89d172334b4a37fc0ece8d7d6ec82636015a3fcb38e5bdf89f52df7ebff892d8d73d3957cebfa11978a61263e25d1af449dd879479e9f7f7e9095aafbb91684938205379a6459a1e5067dee0c459602f4f1e951f61c30dc41935d6644177f80eba29939ecf1d26c1de7a6f9c5627e4e50b8f69d17fb07fd9f9f3e7fb3770b83a656fbe9799226e5f572d08d2f6af87eb87f093e224954ae85667f2dbf65b62bc45cbb7bb01f77be4f62737691c082dfc9b593d447b01d2b50b9bcb6109a480380ef916e2dc850962a0079264b65eb559e6779000039ef570a2d3c95b300e4859cd95aa4844af47a5d6861284ab90f83936a6120b077f8218c8266610a152239540e43c122da3b0028b430574a5ebca88ce71f580a3a019bb2f8fbf9f97965604f5d0d5f05f973a2aeaa2b01c56eae27992cbf781c4e3796fa6b0fa05f7f1903fdfa4b1f3449cbff0ae0f6d3f2bf2a405b5f57a1b6beae8055fab79f567a378f7c539fa6ff1501db9dc8e9ac9ab88055551b55bafa26a9f6751eebec9b84f5361007e931e9dacf0840d220e8a8593463be9fa1fc29edd702de569ef452bff4d82dee09093961252c67a49226335e035311afaafbd8bc1e61b022351075df9c7b1fc5ec350108b1be4863c3efeaaaec6e8b0010278cd4b0ad17af55f11ac318636b851c3152837c3052615960a4ceb2be489d6579913a6475b10a2f638f5fe7b89bae34410997d5721e5964eeb1e8201bea933030d8fed44a50be356fbd87a092c40d6605cd882f0275cc15666d4d3c7810d264a836ad8b1c187667f977bb792af3ebf8bb5d5166101c75aa4a697d5ceb57e4b628c872e6b44d1a7fb84cae3d7f534bd5956eaa57c6608b3eabbdd1e38844b88eebaebc6a1e20becee5dc7ea2a28776931e2aa25d4dd5900270f90da0c8874cb3a17a53262cc590297111f4cce619ab89be9bd7e4fec9867e57b71deeb535fbb7b73f57cdd2c0b6cf4af7ae2f7ea37bd7e2ed1ebf76b10daf09d3c9238bef61acd9f1ed7adcca32792bb7c3c83dac6c896e951544ee3e3ea3606409efbc3e59425178ada93ebe24f5ef2efee6a0df21101ecd0c0a0b4230d079f0900150104245f66452dd8e7fe8971edc972e1bb7b53d403f5ffbac63cd9c52392509d4582aa09ee6169fa6a5f36311a0dd7d493a567952aaa1389ca98116897187ea13c5d5f9dd5bc5c622d23230f5d390faecfdbbba2e8cc2d07ed9b3767a9ae71040991fe52e81bda66cb12d1e201c9ce0e11b2803d674eb413f4004d00e89badae808d596b1460f0825b4af081cce29f72299c15e5085190a8694d668e00fc0027f1db940ebccc08463d861a62a5c4c69d35557339ae393aaa11722f32dbd34e1378d39977999f43c049a8e1e6e6e16bd1c5da86bd4a03e68f2deaead89a6e6a7369bcc58167c0fb8673dead9a9ee87967107a59852ae05216c5c0d0402bdeec6863d60373b5b9b21e6344bd7d10087db37a6e20cd6b920bc6e05ad7978767e5e284c2f658a66325769d968d1675f8d655a66d3ff3e148f97fdaa77b7349f06d2e29fc6be799f3ebb2ed57337685efc123b6a7a757891cc44f86dfb2dd4cd830d1a89b5ad568b678f00ea001f3d1bfb62f5a49edec6feb8893d17be730bdbe29668621f4f867179136e7f387965602bb18428dd0376c928533bcc19ce6ef4194d19a96ab121cf8ca69beb52379b9a70d87c57d3af6d634e25a88aab6a6dcfbd075eebf8374759dade35c6b224133e9bd20572512565616f20a2cc655a9c67f9f44313f85ce514e026d2c07e845cc4c26f2f7f05aabdfb64972a7f9a8fe0e6d37698eb2e41321f45af40b621402cbe0bd12799e848252c6729162c15e71b727c8db342b98c61859c2a38d7f5cd02d37d9d62e4c953e3e0588dffadb981169c684268575fa8eba24d5bbc36fcb761245680b414c7454d5b185cd2dcd783489cbaecff8cacb9588da0a7d964f41e66aa481b9acc952c45319379a16cfeb6420c555adc965169e98c02f7232aea718194486e175e9a0ec73743a70c2ff82b6f1f26e9b032d6f1498d504446fae1177417967133d1581e6c83ab98e1d98dfb3f78cd34dd355bd3e237b3c50fccf6c2e25916ebf12643952bdf30026d8c015b9a952c1723b733e672ed299c1a0db849190b8e111c309a37c95490ab30384381d3ca263a404e54511808566b5e5c83c7c8d33fc283b49dc7d56c8c563149760d96b0355ad0ba6a6eb400f8168b234f5672ad96b1675ea0d1ad24e5a91572ec27b983169774998b162faeea167d605312d5ca040fd3b6ac2ec842a067d067cc425d43d5b7cb99811c642925b837cf6332576290a97c80671a9d661d71a8584afdbd4370fbbf73327d7d5239efc669962b3154a54c2645cde6ac98fb85bbd56e4e64e29ff620abee484bc63f6419597b7e6ec29f48b18db1b66cc999d8168fb1e4bd45f14396f14811625b7cf184ed2a3d85a0fffc21cbbcfd74dc908db6689c354e8cdb3f4808f950e5c679753497b94c4ba586ad1063639c3402749b1add56e3a4ba472f2ac7b57d75719bd7d4ef04ca2053dead9cfc35dbf3c23ff59c83144f976acafc9d76c177e38527112e2157a18f57fc7d663a9f94c96c62b2465aa7aa53e70277ca72dfad2c710d55512629f5c65d701779649a9c7b1cfa2e7e8bce2fae197ae945f26d411ed88aa3235008b532ce7e8bd299e1f7fc97b3a4605e6178f3472e74caae1777b050abf022f576a06625dd5df5f57530990f55c134a5553e4b9a97df588cb6f3e3c4e0fdd4df99711158cbb6d49b3077e992d2f1bd09b6bceb9e70bb54ded0bb5e17f7d3d885713ffd0fba32eea77ffc4b6348ed7e76c75bef8cae79786b241202757ee5125ad5dfd7de2dbdde99e00546c7cb6f8ca026365fbdb9110f6ebb7a7e0cedae9bd67b1184f92673651f4b188618d80b58f67d8bc61ffacefe9f24b1eea78b65d6b6680c96175cabd268c807569647db707be552a9c71beae4526fa3ac2a99b2ed71111c3e4b4ba7fbffc9f2e9fe074aa8fbe9ea32eabe27a55280151b3cb41a6085c588ab9f60dac56cb26c483b086f42b86b23aba085e5f6f1c9497d631b1765d570761a093e7b9bb9a3b8714b05b3c3363c7a30f6eee646342577316b9a57cb258394f088762ef8070b55b27cc43a3bc2a5231c26931236d0ef31c0e12c57c3449f32f71358035ec060bc9e855925e0e10f0063421eda4edc53cc432e72ed139ecd0572d832216ee809d4a3242ff88c1d84b3606171132be2d7b1e9dba3477eccb63b3eb3e38c562ec5f616826b246185d474565edfc100f0cbced61715c9e44d994c96238cf0b355f9c27a5b14625b50a89ae6e3b6e8778a727ec6ecf7005a4bc4d9447526d90829a9f0e585e393b6383e3959007fbc7902afdaf46babdee48f055ea68e04fed9c77516bfb6412825e38a05323216862176098385b5251ff906fad183147c8ae7e61f557908be9e851be84895ecbe44d5abebd10bc2fb1132b02f25b4d3f79ddca3473de2e37d5099831d464f3c6240e56a6c8287052a1f4eef964dd94063fe65fa4978a612df0f3b65efcaac3f38b6f0b3f54108ac7087edb07735a108dc14dd51226773cc63d452593cb09ea61d4e301f23b25ec13a75a7d878064155005c31989d59592306c66e5c1149db4de2b2d236fb982791cd662a1d521622bc10e1b4a384bbbabc8d9bce13b0621132099ae4e82327eb979990d0a70f0914fd6a5ed840d18877499189a21c04f2111a371aa966b5b87f2808118647c2cad6f8a5bbc9d6768cab982c2d794c8d54e9b4bf15eb235efbf27c811d12070c4f74ddf3e03cd74515d611d142f3d23bb09a1524853fe2915babadfb9d1fc0fbe9dd8fe0f85b0cedca4053ec7803b6f0f8a8516c3fe1ded71805bda2ac5e187270d1397a67dd9637591102af28bad869ea93c57fdcd96a355277385d97d766791fbc13c75bec58b48c0273a4caa793c9dfc17411a2d9bb02f730352f4873797aa1aec19a878069deb104d316dee27c23d32160fa88eca5a289319daed82d9bee827d42d893082236dc5a5c7503bbd36301cc7285137a2ad81fed7af16729e8639b7738c6fb0c60ec52613c819cbe9e9a75233c917d8733c53a15aeeb7335f6085554e28f50f9dd4ff0db8c5062a7e462e32eb638bfd931b912bd8c425af1d9da0272e20cae6e6547f7bfaab71c5c2b3ce2d4adeeb2af959f806f7dccf5ae79985bb0e2fba97fa8ddbeeade19b644a61982ccb38c0933fad75202359809c95c894b95a30776998933456232179c4d7c182f3d8dfe4e5b344c5d23721f3175bfcf51bdcab36952a8d8a0a82a3626aafa7d0ee95095b1e11caa323694c33011f1ef651814e4283614aa8a0d87aad8902cdddace9a9255b2491a3ab11054e0437969e60ec38c75664416820aaae626cb060f2bb343bc0d58485372f770608bc367d9f8300b4263cd706a02209ab02583632d17f8ead65056f1109b53392bdaba03451b58bffe982ee3d36050ef96598ef326b6ed7c37cd175a2ee6581cf0859cb5fc6989c3d1ecb4dce4c4e10e9535d8a2298ac3d14cb56209d9fd805256e5f8e18efbf6e8355978f8d9eb7db5a28fc0157474fe446c6c881fe46472260717a0f6810c879789ba2adad105844291a4627f4f6c6d4131cd38941adfeb6fc5d790c63039177615c5da1af501ec7a4c31fc6011d49a5bad564b3cd8f6c8eee60638878fe1859c35119476d3cd8de5200ed2b0905c15d9e452510bb67b6e6e80a3f8b80f554990b4836e6e2c67f121a994a0dd8e22e1c5ce3a1774585c75f6b66caf3a95304256532b8cefaf81dd66bc62a7ea08cc73a43024034ecd8071c711b5fedd125dd168780fdbae0d7bc42eae12487817ad1462a02ff2d53dde751056ba63ab6d3f6b51781b3fd61a09a0dab0c20d628d1d2d5411782c22d618c9a3dab0c237628d1db5d8acb6ef7b7e169a50fd56efe68b74f5d1fceb3fa11df27e9a946844c3ee40834996de66515cff46e35a2fbebb24f6d343d62670374b937257d7a1d221b46cf2ed5322b628b8c935ef4008b65f8d41d313931e96058c40e33d351467d7e2146360fe45bd55034c188b9bd4453d268f7f7c9e01fb06d1c003a35117ee9d1e941af066d36805f9693ae65d093b0dbf9e0400b379c90066f372d5dc35fed432f9728120bce4c38f8bfda4d9a746e04aaa122eab739d60286c575c596da263a023ccc7e98eb9a59e1b11f43d0f3dcac81a03832ca66e8381d338400f3d24310db35d063a97592762fa394bcf14088a53352f77b14b5085e7c7e5222d5d0bf2700755bc039efa6f214985e3e00f1441157ba6086a96585b73802dab6231f0681a6bc4ae7035c3284dc749f14ca9d9890dd224c550a9599c026289e569f1ed07eb56de8a67a69f6d819f666b4f04b84d3562a74a34a675e78c08a72b8222be907ac16d352720046db3b636d44d50e848ab9618b8ae841f6c5348de4bacf5549c4fe4889480e55825b9b5e74736ea650cc09df0c30443c16ef47a579ffb2902220483813e972517840662a13febf6fd8255c796754b8e036f2250dd1627147c71a8c8bc2ed13c74f4d9649099ed8ad1a664511a7b4c6a6b8b56dbd6d863b6a35103c8b403f03b348f8397b8f452e5257b8c13b33c99266572693495b0cade1182c0464ca26fedd01f2c824e55e8c69690e4efe5b9d8f630edf05f9d4b82f1931b2ea023b8f52186485e94856f9c388023fb10c45f2a57a42c0f411d81e144f9265d468cf62668c7189079c528a5506bcd49ded589c2ec6b1f8bddbbc8afcbee60d702a69c05fffa544c3f8cf819592216b0cef5f76eacdfb567ccbf5218b27f06103b00787b7604b0e2c9ed0740349ce6cad4c1db55d59f5e71a405b2ae001e0b23d0215f638511e85888dba0e2ee9acb7bc840f0e1b9033e4d5e006435210c14fe9915e0ff60568098f281a091f19b9437109aaeaa6aeda5d5bc392ef05b3ab9369e3e05e0734224d9d969e9313b47e315da53a76d71aaf78efe179274e83f5ec899fe875204b5adc8da16a787aa3c6d83d31e6de60f79f08d9c4946e75cca110057b4dce56d18eeef545b4957f3fdf5911c39c74d398a1c6aa45b2521861d3fa4de33dace523a352728fb7c26d075ba1eb4c00a4f4667c1c270105fedb222e2a3213e7d4ceaae361f4511311e13ed89bdd999c9a079f0b1380ed40d4b81d9f052dae341116ccda0ac82701e691b3083b0aa82771e20f687cb249a8503c643a976ae03687b48f18ed833a5164b74c1ec6116ed3fddcaa22df1885bb6cff6388b7e8784f3c00274a1920ef6d40af13796d6d5612750ec760ae901fc5edad919c1e3aecea84b4d28361b53b296190accd076b8da7d0a83adfa2c94cc75b8b5e8429ea6d72ebc4481d4250b65e7a3921cd41d32786d6a8977bed2d5b5804efab1256cec0bacf37c14a135dcb344981b9f2f52b50daf25c421922c7867102eaeac089fc4dcbc347d0b66af39bf322f783ca18d1131f6c3fe06266134ef9e9d00967d9849ff92716896104ceeeb90bfbfe3d677008ba58dab9eb2d5c8c4b1689e14eb9c282b66bdbe503510f4d0b7caf1cc41469f362f79cda56885543d5a2cfcbde5e899cad992b9795ec8d90a497946617272fb025c9f6ec7b758b265611a98a8add06f92ff050db36a12bfe8d1ac98f1052e0e77c99dfc65a7eaf0fd2952bec4a9271ed454d30f59852c8e306a0099f1cec2f42e6e157045aa095d34169bc905d7a5122ed427bedf98d7d4a84656e035fa9ef97be335a0095c8ad71caaf243788db5f9a8e735bec1a72d0b794dc57af137e33568cf5ac36bf46856e53540217f205e13a79e38af39a4c7e943552ee6350650f39a1038c66bdc2ae08a54798dc662790dae4b85d7f8c4775882719f7d12d33f7d5202f5c59e1c843e5cba2880847b13bcc73058575825668c80e4533396d5c18611e04c6944d11dd5d44795f4265a8fef8918c96cc5fcdc7cd8a89f8ee71517850ffb3d8af8978cea7d4bacbb420c3a82fbf653c5b3b061f70eafbca60d5cf8236da0bca64de8011a547ccce4635cb84baa72ddd2e14239e34eaa3c7b81b3167b6f9eceb24289b3a49ccae202ede64809cc99f1eef397077bfd677b7baffa3f3c7ffaa3d816c68b1f6b7e78fef4c8d43cf66a0efff9e2fb97cf0f4de5977fa6a9d630239506203faa54e5b2ccf2ffd329ad173e5dfd99f6fa3ff4816bc9b4d7a4292553d37e078ed553ce26a0449e4d144f7eed15f2accf61854bfa1ca9f1723efbf5416267bf92e583aeb452d10a3f3b77a4ce26e7f6eb582aed4a854d935da9a9f990cb1fed977be9a3fd2acb65aa555ef268bfcae58e0eca79eae8a0ca30916ad5bc761222e9c4ab0035d3144b26ee43f01cddc18ab914dd7ec587e4bf46cac7f801f4eb995233136ba0cce5e002a30d94b9bc547961df0cee78ff5df05e4aa203f698fe061b4584175b625d3cb30fa858f658ac8b1f26b22c555a4de29950a004f1a5581720921973b85e3ca4c0b10b047b52cd176deaac58137d383ebe5014a0f2425d876e5175a134b001265c34aaeb5b9b16faa273228e608daaeb038b4a869d30f641364f4b95cf645e56129b7e1eb5a742779bb89201e6d3c480a4e56abb49cac171d904dd680be86cc5e692651c8595ddb60bbf164a8a0c542f7804d48a8e1c743e994440b92cc9a2ffbbde07be01f6d15cecb021b22ca09581762b705ed019fd3542fd609bbdeb8471e0f8cb8e6be95eb41073d8ca45d9f4a2b7c7b2cab2d1434575e0813788d7cc7687191af077571b2597668a8cdfbd00a0a893606e62251cf3a31aff304c60a4d9a706dbb642f2cd8d294191d8eb6190e836d25377b1b6714ded237ae565903ee4a461f77173bf80bcb6d0d3b535f1c07b26f26717a9d981ef8877ef45b7f2d0144c7bddc433551fe0dd0902e998fdcac3459bb821666eba5e60bb4a8b10bee2d9e52d2875d43fb14a393a8975daee313c2fbaee61962d408c34d1f885baca6d5f7c4adbd840dd1e5e4e937c309f48ae3504966926b02cc420cb7355ccb27498a4237b7691ad0c689d6e6e4413ffc2275c503e3569524013ad0bd4506ce35f9d912aab3b8f80c26d4cc57c232392c220e13bca6d63a7fd65ee979a939f67f99e1c8c9b2cfae4fcec67cf4fd31ab1cbe1b0e9f8bc81ab61f5ae9aba855cd04e7fabfebd9a77dc3d912ddd714a3918f65ecf10b0e5a58700d077ec3de5b6309c898e9d1db7093d455797ebc8ba0ee8c2544372278357cb322e83f68e3b2a0810c2fcb003c62a369bd8f2e6c68ceab6c9c3e8ced9ac60d3095939ecf2dacd680a4c1c44107acc74e96df65a0de679915caac9b59865b3f944962455e8af1703352b93b3098a847232a1dd3449a64959b4ec1e135c1f6bf9cefdacebfbe53dacecb742bb09188f6f36013ce2e3a9c7e24a3012f45d1c6c4a0dc524fc209f53ced607208a88fbfeed6f195b77cf0859e9c12d22a9339de472a9f85ba194a051c6df339cbd95de46c7ef444336ba624bbc6f8b77a271d6e88ac7e2fdc9130f7e88c228bb1191ed8509bdcd636c6b6013619ba08e37eb436c571cd134f6c8635d45c80e69e32642138bfdc2949a2d1bcd7f2a67b785f2b761fc01d9270be56f9307dc5b24ffa99c55fc46fc78b4fa6022ef61f3f98f10c31f851a2ff1c392416a29d6be0d4e6b3ad9e461fc8350fdabba2e9b89a8c6135b2ac8ccc77cedbfc58d61c5775d7235b3ee7222cbeff6cefb9b64cba5d958fea917cd62c9d7060927cb6f79f5c536d56cb7b5f96ba94584cd91b59c49bd2f1ad8ff065e89a2f60a95f02160b36088a036a16dc55fee859cedcac15879019ba084d1223cc988a92a0a3952c0f74b99961efdfdf0e660b7bff7faf5cbd7fda3bdff39d254b8f776a606a5a629cba2e20e774ec3a44fe6a99a6660ff58821b2cd0bce6c71aeab423f6c1ab16c2bce47ab58d71ef65325443cd9a2034513e4d52423180e169214ef3eba2ccc0b19721b70e1f269dad348f6116af3119a6be0d5dea7ff1fdb599de36809c2779515a145eef6ab168a29d17b8fb0040ce5cb73be88301c30774496139bd0ddd7c5a8e93e2549c25784d231f8d6a77a31e2c668e92426882611d39858a5317e40f67c92206546e2ef6f57d512fab1ed3545e8b33e5e4507868c8d56c22076601f4198b983a4072a756ae30d6a230402d615e41a8ea04284fdf52ad26d7252106cbb7d5d37e3a45e97a76be5e8ed5fa54ced6adc531e57cc38ca046b4d468cfe500bd44071325c14367a8260abd7846e0a1733a96c5699b02d3aa7235b192e536b6acd308003552c1792c0cec585e2ab8c867f37236b7db6b58275a1c9bcd55d5fe528dbfab4216ed3055448c28352e1256c5b630a26adb8aa94f1c108428079841a32bbe688bc6b0d1155f128c85a3172f2dcb521f9afd0e85d437d8f40fee176133cb6cb5c5e313860e01f5977db82fdae24b074767a57469f196fec4c6867801c906388f82e9ee30441d2cd1777ca37575899e6f1f9505e59f7d0d9b33b22d3b74ea79a562db8608ac9e76669ecf21eaaf21299671848e3c20d9079e49f8cd8d85e7f9dca901af728dac10588ef3ec0aa8ede87aa6e0dc6a06475325a5a7a54be67461ca9a5ef02e99c343a83d1f984a169504b6773bf6cf8e9ccd26d74dcd9fdb80a005d2ef48df8f78b42e9a52bb3da1c00fce052b3e960564f28ce86fa17e845a9f8aced6f3b4d0e3ac768c9af85d10dbc2911a281248dda617ca74b2463344ddaf20d4ebd3f4890983bfc1dfada6a79630adb54ca3a9740f8e28b073b6d4a9ff2f244e535f359e23482605518915820cae4089618fe7b7c9743eb5ad7058856ec024a2174fffa7ff62efc5cbfdffddeb1feeffef9ed8165f6d6e320168e1d513519b374838628af899de4011083b713556a99681d4db8152c3429c86bdb8cd57f4c34e933b9f0251eeb10b7752e021b148253e8f719abd509f47e4ab576a7b7bbbb22e6c2321244c76b3b281881c2fd435d79d81a104511ce95ddda658e64ae98db54a9258eea473af38a264c3f8364150662d45252ea19298c972ec49efb97a9567b30339d5c3d838fe57e7b8d73b397974d3eb1d3777bacdf59d5e6ff8a8b9d3edf53afaafd64eeba679dc7bd838693575fdce835eef71ebf85fbd5eaf7772a3ffdb697dbed3d285baa0b9b38d6d35be5eefa4e5fdbaf9acd5da18458771260717c54416630c3cb9a8ff7bc540ced4ee58e6189ba7d76beaffb4760c6abc73604498429c1674a92e33217dc4956479b16d625eba294c108457c13f5ddc9925342f751f76d77a34dcc85e49d0a454370629b37958c6faccee08d6198c65be9b0dd5d3b2b9d9823df1e5d71a64e37381932a444d0ae94623d8168411c57ad57474c437242c669b8cebdae2d779562a782f09a249f22f0190d87150ec1b6eaddba2f1d956439fa8885c1f23f0b5c5faed48b4633ed19eb76b1095c314448e8620b9cea5cc936c5e5817fef8bd79ffe087fd83fda37f8a6db12536c466945849b501b44a640669c4cf4552363013b2adc88c2ee84eb62949aacfa40ae922ee1b44ec93b0b902f81cbcccfeaeae3d550713fa989e838215829ec3d38f2cf59c6fa91c313ec270a6c182c38736c1d550cfb0fdf8ba9dfa1dd158df6c88ee62460d435a360c1537baf7dccf4cc99d4ca27f135afc6dc3691d6536866d7d3c2da323ad09a8b5d8fccb295851d61a66aa481ba51daebe8024c598dda8f4c831c1a919f05db6da2ccf06aaa85821c5023e13978d1b219919f2761bc8c95a0e94f9c428bea0abc0442eb364a88f3d959f67f954a60325c649a98fd8229b2aa1d2cb24cf52b8e2746edbbbb76e546b56630d676c93e091d4cc38cdf2528fa4eccbf69582996b98c96939e6e0756b21cf0928702728c0506534ebdd00fd27674f7cb4c1f3841d81f740618711e6dcaa3f753ae269ea51be480a1a0d05223ed5bb05d578a0f6b2dbf1d4865204592919e1f65bdf048dfd2c5785ca2fe91ef1295e17e2225a6cf311a88d0959fb8e6018491372a872754ba311035bdff481d637a360a01e6a8b2ffcd7d4c656fb71fb8b46ece48db003be37d9435ca3415e66010fa93d012be4b5ec01b7bc6fd6bd1c85364722939eed8779699804e2efea9a6780f8bbbaaea489f0b752b9ca2e5a7ccfb81bc1bb9cdc7721f89ad7e0ba8ec6c95e4f64b3213b679de029ccaa19dba23160ba46d6e878f3a4b6dd66d838a474c0110a9935674dcd21016b1c7b070edfeb76c431fc7542b681f8114e4bcd60ebd5661c2bc35bc63bd12707cbb6e8f7d5db52a5c342ff99aba214ef89d8ca62929c315a7c47116cf650a6698bdd713219e62a6d8bdd6c3acb5295bac6b99283d2db417bbfcee584d7ae9fcba25c1f64d399cc15031d2a359baa7c64d463f63783196749511e64e96b8de81008d9b8cb41d57a9aa5ebf81524738f39c03076b3b4546f8d131e9651930156b12657324fdd362c93f47a9d8a2a511b9532dc097399aeab62c3d6785b9bb109078ac59826411fea7d69fffc21cba7c9c52b7cddcbc5b668f6a5d8d64ce02ffdfeab37aff7fa7d4db2def09aefdeb7daa22f3ba699b1eb4564bb595acca780ac2f3be6d713df62264b5335289b7a91796033aebfde0dacd88c8a98134cd3ff641b4e057e6f3f87fa88a2d9c3a2bbd1b604dc7cf7be8df67a6d6edc8aa8baf4afb5670ded0b8dc618b46a86869f25c56c22af493ba53fd719b2a29b1b2c4bf90ffe86b8b65629b3c00dbb535034dbedfc2307e58adb41f849aa1d7a7de93db453082bd27b281ec5fbfd48f41eb67a0fb9f817db32cd5ddcbb9673f0842298328dacf986eabc2d668cedcd40910392fda65db299d8866b9c2796ce509744ec93de0a7a5ec2593d6733f12d8076023b1b5d0d465ec7baf678f6e8d1492cf7338071b37eb1a33b2dbabaa632bcc20d4f633586d59e42cbb8a0d9829fe504b5aeb630b1e3350335c90068b4bac80c57cbabcd2722a171f2c8b2625d6c3d11c9a347def3cf609ee72a2d491767db1c27274f2a402f619646feb0f013c52419a8e6665b24e291d86af97e0438ac63f6a9135f1767071d8259d353307a41570ed395255118b72a30c763ad7dd416150496506f2313a20776f264c94f26c57e5aaa91ca9b061958b8a0aa82957db72d36f5317cc28de2df0757ba660254a701350576e99bad63be5c68a7e827e771641bde128dd41c7351c1277f3330ef1b88c69bb21898b91ed65e1e3dce0aa494e3bbb5157868c46b6b62b9aece2765acab0bcce0f83e3d5045a9866894f4337f61b626c6974991946a081d9d6569c1a533aa8b312b5b25bc944b119721401a43e1ea0c85bc677b1d8e6f6011fa047631072f58fed1271ae25b7df852867cd10fd9c0051ccec77d6fdb5f02812392e38b93c0f3c639b0f0775bf00aa1511ba78896e713622ac9d9a10d6668cedbc40df8f8e2c4984d769800dcaaec17819ee7914504fc752b787c7172ab938bdf974b662cff3e4a5f006c280cbdb3ccb32117655ca95ea3ba3073400d0d6e67f6fe89c3fbd2989330ac2e7a9d8f53237bb05d313cb0dfc0350ebf402cccff84e16b956fd03de1853e5ecf2759963789db69c856cb985107dfb09a506e5488982a5f08f33b597d026aad001e8613c61608be79200ffc0f1ec883fa39abf6796f3a2bafcdc5c4c7e4553507f4878fd85477c071930101cb0bbee53290b2af50e1a25050ccac92111b1ad897638599669f84e2d8d341995c5a2978989937ea613610dbf0df9b1bab361d6603301981596a58e6dcd04291a962ca6bcede1d065c30d7383cbb34c572a657e6d701c4301b7424efb7eea32e3ccb86f4ac2d06f0f4daac9c8c3e5878304ce585da95e9404de4d904828142124627c08d6581f56868431eda58778532b75b3f7d00988573f71132a9d15cc97325a48fc15a3170e07fe1dd85776387103519c74d6c75d7d8fcd255056509482fa8311bd6c62f4ce0b87eefdf0470441ddc96bce7cd637f1659bf0680dd9932f94b412ef8021d40defb97dbc875d60db75fcc67d6a8cbea2de85ad916546da46dd30cab83fb291ccde538012b3d68877c0aad9308f6e646e8dff66c85069df1c058fcd8438e2acebc0a5e95ab5152942aff215113cfeeab99c2db35bb5abb46e71ab838d61027fc56e8aead06729e2efe00434d5259f50b35a80b5582555be12105ea282a3d2e145c2c15273604edd2bf8ed4eabf7794cd0763df3cae5962d9525f24d8aef9c37eb35d0d72ec0423c4072bdfb9949364284bf532fd7e32cf3d50bba2f3f467844ab2b4a0d685ee0ab7f4149e00b378d83f1bab518fa3684ccb0c1a41bbf4ef870c79772cd3915a66d0771ca8eefbdc1f6801454b0d1441bbf4ef32df436f820af90682b1791e55e965e7e0e5b3bdfedec1cf787acef26c380fec3ef5ff8c3fda95ccd366efe13f501fd82586d32884f9b6f95e5288a19ae56a0061c0653a3436ebb99a66976a2892549ccfcb79ae4b264a16aae88857f0879817ca438c9368272e498b52c96147ec97e22acb2f0a8ac6a399da7547b714d32c572249cf33512825c665392bba1b1ba3a41ccfcf3a836cbaf18bccd570262753956fa0deec2f852af10bebf48f4cafd7d7f525a8f7b0157313bf850f101b588a4ae667d3a42c0301b49914ae2258416c3a4c862fb4ece62d557db7f469e83076bd5f8caeab9791a0c766ff54193030d9a5483b29cceed23df14fe627dc151fce5fbb250f937434c10f3f57976ae2b6287ebb4d6aa12a8f6a0bec5c2b1465c20d72eb042f9e62770a14959e600df5a48d803cf64475628cc39388ac8e478c76aa00e9935ba96ee15c56d7b41d6874bc5c09b5d2642c068391f3bc5319fe3909d873b31200a2b2766f635f78fb247a24447ba3969a2937338783b19acac507d7ca33433a8ef0139123cb563ff15b17a68d7fc7f29ab430ee8557d6d452f042dcb814ff9ccfa881d94cf8c5ca82041bc52cf63b9f6c03b9bea6d1f57c7694e97300853280f4d0b4565cbc5b040eab8f2c62ea2f61050fbb349cbdc40e08c747681e033e13d435a3a70cbe8b89edf01668d2b26b49fed80e36b69badf0d25e485262a79ee0ed6475c5bbf751342ad25cfd24d3e1c444bca1d627159ae9cbca6e007e6065f1bef4fd39f4ff90fe38c8560832c6af7398c7274f2a2cc03eb9e254b24fb7bdafb47d84276d9f6af1f15be3e9b2bf6ba8d567fa337b37af8e14ef9766844f42e9c3120fb89268d027011baab9c0576e35ab1f7b3c278aba84b2a0818d2204efe10ecc1e84d48b4a339739252cafbb64d9697ee2977847a488e87322ebb3e0602df86104da9c154ea33a2685748577115f76bf5469f932c7271aef6948bd5583791969e355180447ea6d49314ca6f2fa4c0508d99e033e43104f2a2794d81621c6006826f302ec437db27a6095a961fb70ed357408d399a9bc488a901c45a53306b0d9f297d6a701cb512bcd4b998f54d90e698a92e3f46547ff55a94ee554f5b71000541c214032c4ca6458a9a247255d8bcf032100b8ea2b42403f2a40d9bc54f94f472f9e2398fde9cd42657dc50efbbb6b86b163fee8feffd9fb17e53672e351187f1548ff944866c79425ef2d54b4fe792d2bab135b722c397b52928b1992a034f168869e195ad659eb5dfecff23dd957b877038de150963739f54555c99a835ba30134ba1b7d61195e48bd94aa9fad2db6be1429fe8404f96c522e9b57595d67c5e5918aa49af1cae7a319bb6aae7369db51342337c960fa46cb2b2fac67c5f4aaac5e66c5fb11eba993359587e191b67851bfe4da5b09af17f4a969fd717acd6d3fea50f53c02b362af8943b3ad3c283e57a2fdf6b0e1752355cf8225ebab2323df78ab9acbb0bc262a9d7e12503506c6a8d0fc1cb16db92126e527af4fb36946e8a528004f2ca72fb1b1fbd17923a7614b155d3b09c9b851e12819c95d0c48569342c7a01ddd51a50f5b5ff1c362ca9f509223e01c84374f046ca739f2e2edf95452d2e948f43dc3e62345ed3968f86e605932aa948dda0a835b28e0d1d59d18de360983c0c359bb8bd07bdc64f4ad853b88e8226ade489ed7840ba3e5d684d557e552d6921bc0e3fa71618cfbf76b39ed3e8bf1fd5d1434ab8fd77a87abfbd15af2417c8fb61cac55c74a5c0e517cb71cb376c5323a51ab95548a642b0517decedee24b70f950208a17cd81b2234500fb85b4a0d659b10a1ebe634f970173861f16f7c337d241c073e126f0d51d9798b81fe59c89dbf5e765d394852ef4d62d3abd8b4d37bf8b4df6d4d890f63736301cc3b469aa6cb26c781d4002ca8697bc1157efeca8e1d7fd9ec0566f304858ef1fe592d54a692983dfe897b479595db3a5602758ca2672062abc495ab0a574bb53119864d6f97f323bd090b15765ddb04955ded4bcaa9dc787ea832bc8a4678f6cbb7fb1a986bfd854f172e4bb5a66fd04d57653ad13b650faec7436b3ad5591682d5d2b159921ef8640d12cfb1613ee4755c9b60a95e4f21eb48792c2ec93136dea12121c695783182cac8616e55eb1af1b46c56a96cf055d1d393a38049fd9376c87bc78da54cb2b28912f404fcbeb8938ab2fbe5c90f6b996fb6a8095a5866cec196079c01a4b4c63e88141d75d9030eb8b5a2d1f12b3806de417cd1dee8c9573f7befae70141db7e24d44d56167a6614afa7be5df246119d6753b55706ed62fdcff9b2a2847acf3f1b89f57e1bf0b9cf95b96bb0e16252322d1407fb4609c4b4045c288b6c5abc8d0ab71d8452a87658288974e184512d8a8682e8978ba1dd85d04e22e82a0174922fab47fc5154dca4844db1d8bd6ee7febe0ca5375548d811e7a80b2ceb28093a02cdd7ca53b4f06b9b1bac90a5f479eb264d4d9048a4cdf7803c45963b898a2e5e4fa652871d49547a0aebc954ae9fb083153215659c62b680d912ad7255633aa0052a5bdc2a493db070763f0ea893ecd5fd00690b1f5a9eb9a7e9ce4aa9eb6b19f31cda17136aa7e8c8965fcc83765a01fcf41ebe377830d1f88fbe25f29a87cc7561b4c7b57797dbc7425743dc68eec708b11e3a3bf8dff16ba2aa81ca8cfd771d3c06d17616014385925d04ac262835d8fced2e090eadf7555bbcf871261830622226ab0c7b12c81040cb2ed809e4f91faf5c2a7585be110b1663fbfcc35416b27a20792b15b97a449b9d14a64fa2e9da4ca3cf761b6b016a48ff9d84aaa344146fb3123c3a45154c759f4b8c358c376bb954240ae416c51671898c3f3171197c982f9fd9ad0deb4616df9a27f947750d13c37b9a27118fee5fe1e1f5a1e4c5d8c36604affe268e9dac90bbb4db64e4ef9be088c35aee0b2611767547c48a535505d50feacaab000caf0d18479e312551a5f6ebd4b892bb1047d42d49543e33449564c08806f22af0abffdd7b41b4a69323df20d5ab046e08c22611570e4125a1fcbba6e49ec9af3715471046249980cc7deb967c5e5e2f968d34d05f4437a6f1263297a9125de1b5840af760bb595635b76c9f596306e2664e08bba0816f8f018e85ec73a4fe135ecabac00a1dd08450f07a50bf13d6c03a1e9906064d5c08c89254789e39b8da402699815fe09d3908ba85b3809819518c4ce7c5fd39bd5c416b1073089011bf7f8312b4834439a25fc0e36044f93980897b0e0a23da6f013470f2fe28d01c05d5d40bcb88b01c09aa4a9e60147244414575d447c4c309414ccd23cf88b40233a5644338454a82e97e039978166bef0ab8a7bc45f6ede148486d2931417a6af73b1251714b334f80a6a9ce0821827dfe0c9974829ba778f93681a14d5cc01cbafbac2f2082ef773374f3330c107263c34e42a133922f1e4571a15bdde3194bb9540d6dfc09ad785c083250c84823fa6d4a0ae0f235685973f667fd3e65dbfd245d21cc67d5f62796a9c8ff757a6d9bfce4daec05f56fb23c6713ceb2cba2ace473a1f792f4a033348ea132d3a0ef5a8aab0cee8707d3bc3b265c8baf880b85eeaf8208b392bf1b16a0a402fd58554fc09719845871473124b2fe69759e8e7bab3afe35cbf3b7c575f7be0d2550a552b11833aa8e5854df7583ec209bbd5dcc7cf17451f18faf9147a505412d3a2fd289b85b35c5c9fe0f373bc49abdbe0e4952c262da9f813f219fc0ad541b79c27974a04ee8899995b7c9d6d0e7b4817ea5f6c9e7affcb6fe356bae90d709e46901c91f0ce759def00a88d1f398a6405f125b5bd8ef73fe8ef8e49bb06356b8bd7290bdd1cecc43113d59c39eff24c3a9c42a5da78b2e735ee118659ca2ac0510080dc546ecdcb81218c78bdec1c9f8f8e46c7cf0e2e58bb317e37f9cbc1dff7af4f2e5f8e717e3c3a3372f0e7a837798aa405f041f0581020418d8bfc4cf95ba37afc2b0e2b3e5d4d713273218904e391668534499f2e85f3915f20d468cd06635b9b1214608ac63f847b60f74cf496c5d6dc234d9cb0af50c82e52e61ce97c60bec451d5ccf13e35e47764d7fa64069ea1c3008f61838d65e00cd2cd901197a8745dc8c803d4244b3fa82703e202a3c888b93aff273ed7461c4af29d0bb9a66d44c0215ecaafda1f81bf20eb636016ecd60461510c16d9cba0b348180eacec7a91e08b677414ba459bbfa0508a9c94a4b086da0d6b4f914d431b10007984451d1f94c98c0c413a746a2638dc204ccf5a9d78b9b36b3fa103deda7fa1f7d5b60a7fc14de312ee8ca535bc3b509984c58dd866f298bfc16948c949d9ffa0fb903b4919bd195d915f7057c6079e50bf1a0086b80b05818724640417d07236c28d0f62e8abbbe0d0f38c071615a8c36ac0b998c86e24c36d4fe021fec1e8c986ca8069142db18d86be811dc0739a9767779f982c167ec9f32a621ecec1b76b1f9cf844d960dbb2d976c5e56976523039aa775cdd282fd339bfd93c958d0e935346414756ecb65c5b262b16c461717c58502560d0130228670c516a042482836bb9f0ed76e23dc2e25577c7fdf7a09450ce51a22016b189bd17702bd5d2e5e00876d693465ee171b8a44107d5371981505af9036d48fbea36e6cf3466c1baa6089f6a7793486d2131dfa0c0fdd21ea19af2a18f7cc09191b0aa8735e297060bc423b6d0cbea9aafe8580268385d9d71f8cf7559ebf09ab6f8ba9a08e92dc6ab8a4bdc66d31a5ac34d477a0d60171e7a6469f1736b3455ed439e034cd0fd22685eb6f97e5bd10a53d3ec7b9f90eafd2fae4a678ad0332f7df0f3c3646251ed37644ef07e041c08d2b5393db3779f54b5a9ff594bfb5fd88f32744564321f75ce2ea29eb99814e6f8b698f8ddc87debb3e04c2de60e9a4ac9a176995df6242acb13832ffb830218ef0aa3bc7d5beb6046475b9aca63c61e542b1f3eedccd78dd648511dd547d1d8053a14a352592ebf384655898d6e6f0aec7f3ec5d342497befcf3b2e06ff887a5b44166fb06429553db3d70a0671ca58e5189d5f7fd2eb6b66c1f592db1206e2f1dc70c8406f4c144bd3e750ec57d1c33908388810983281dd93804806b6d03050539f28071c3ab2539cfdea1d1c291f4d249a1e464dee72a02dca31d7a149543c82329285a16a88ca25e0961e84890c47b45beb2ade3d1af6c95878880a502856a26162a04693e16ebff22bcb2a763fd020d25d2d3aed0414b4bd940f52abfd21a6851e4291cfd3ebe8ada154d0a6a5b298ef93ed3750ad3142547fed2e913ce1cf799bf5338b7aa9a3ba200eb98bdf9779cf1032898eda1bca792599d19c548e24757a8d754b1e5c4074fe45935fc7d14bed22c5daca553ed7aa1e742c8bdf7dfbed7742fdeb2f39c81fec803d86a3831d01f4343d12f1dbe2be6bb3d02b462d003a5c3badf5fe1f1d119162b577dff6d37ea23710f3d08a8309ec4352c48093301bcb3e01ca51c2858c6f1043499ebc093a24bf56f5068742e2a35467f9c26ecfc62d3ccf5623361179b6272ea5f6a2eeadf0670fdcbc0a57eeab4049bef06e86a1d0394ea0526d03a26e222e1dad48bbc80ff647e6827ab26a4271c4ecaef2980d5f8a8f86a22b5f9547808c1ab56e92c2b65c63dbfc438ea0ba1c01ec9256723ad9a7773923296dccf764285f40b41fbaab44a1add92b40429b5b606d57196167740953691363676827365ba3247a62a7369720791ebfa7164473323815a5f2bc426e92549adc82b3ee8c4eac862dd6849029c0d2a9f9ab60513e4e10d9f039301f501b9e7c83c317613e9f41be7179ba632da2d117d23d0143aa314b85fe7230bcd8553f56b7375313032553158705a45db681060a53b407789d806618a91d8706630b3fe469567492fa5ceb3920095cd45e7fa703d883626626e4b03229894a4311392d461ebf0f184348ef2fcc76d2dcf308a269a01cd231741d51334c8df14daa27cc442c88c8be208412897c188320393875560cd4babd213df7a9e62356bae74e460127dd7e942f20b67a567c4e9171017117c6e2ab23c4f5f0792998a9102e208fbea1ba29d51e3b8a2509903fcec61c5f3f75a411366b8d7a4dd04d9476d82c715ef7c7d4c757c707ce74ecb629e5d061bc4c75cb8555c8469b967f4fad8c3f4873fec2024b664f431f5a9cc3eb6aca03e12997ea8b248c61f071c4a9f84057c79c95b21ffb92fdbcbede0122f05de1958aa47510eb4a0ef65e2971a6842da6781fb40bbeb00a4ac7289fd174d1425cff7d98b8c490798a44785f7250200057c8c14f956bc916a2ba08e86d8301848a7506748a30d76e25007ef24dd4b10e844428f8c2e61f9dd6015d21543220e164c48e5a7e8f2e94ef44a85a723a16c4ff5b50abb8d831888d30c9b073cef28d6b095a20deb2287b0e855e778ff77036a06d4c32b9dd24c6d086f999d71ad77cc247587e735219a0163dec816f7bba1c489c072d7a7de40141d50ed8c178686c135d7e1c1b7b66245d19e1d1bd066b46dc4cf118bed78b0ff60a4dd3db8d3fcc46cbf3a7ea15b5636b01d9e1bf6d4e70b419db6ec6df6f2b39ca7d52f5f971f11d116bffbf2452391990713d69480bb99968b5bb6cf540d711f9cbf1ba0e70bebc4c9f665e573d1c93bfdbebbb81dd60b595975ad0182054d99b0c726d012d48f8b4a28bd4a7d932e20e4e2b7815c6ae59fe9fffebc2efca9815d75e3a0371f50f9cf7ef9cfa23c6d853d2b6a5ee1f43ff20b823fcc39b7127a8849dd473764567c91a753b413f4a78700499b6ea1244c3148a41823df7ebeecd5c375d1fef4e1ea3d5c0610f5f22f7b26c2bd17094bf38657c6054cfd0a42e2d80b681cb9815a228c04c1c590068ef0376131b18f054e674aaec3dfc8c1b52be978825c0d2d6dc33dacf46817e85078b5a6715a4e01e8f3926eb1a7a870c4e6c51ed5a38bd900bb3c038118c23e4da9d7e93a8ef7ab82ce295df1bce85fb654187871918dc70a9cf8d3a86fbf1a02e235180c561d0c04e31b94c1f1ad7b0cc25208810def0041d0d5031850651f082f8bcb1a71215684b684db36e2e21d73395a2cebab90bb8f9922fbf4021c064957a9d00e98e24ecb629a36fd73972d530df80ea3421a37a8ffb4470178dd11fe0872d1ece4d337b883588bfba27fa9f7c99bfc4110d8c22f409c49a33d94e6301234715dc8bba04ec218052e028fcfd2f53d3eee41b047f289f7c1dbabeed076c198848b00280243c888f50946e74130d6c2e1d1e46abd9e9ce1eac376d4be7a47ebe2afcb1a6ab022288a069a0938d8afb6946dacf1fde8ed9bb5a1ef824803e77a985c16f555362794531e736aac43d9a39d20aace5a58953297b4e65477da53762ec77b67ae35dd6464be07616034287ff6e25b3107635a1973d6159e236955753d4504dce2f01060cbcf7b7198dbc1fcbf0b32e25d0fb5a30fc0db0e9b6e8d9daff77057b6c31cc2e0eaf43da5d63a7cf22e523d7484e075b958e19edf89e12a17fd2e0453cf16fe1c4eb24287ab182077f18584ccfe9ba8d76acbe4a46ca4825d816f97765c8fb12e6d011a0a73105290f25e9e80779e17d5861ad1f79552b9cf8136835230fb6ff24e1d833da6083dcd0e191f1b6b49588cb5f273a47b263d24f617b1bdf620586fae1706e9ebe05734dbda12ff91f0b97fd2e1c34dd66d97f8f4a1b0b3caea49ceec179e2f7855431b1021ec68c5b1f8a77bf22e17e673b970811e6e52f359fcd3bd11971fb9fe2efee9624948ce68c4009b94385cc8cbde6aade52f5baa09a22ed5bf405b30a2fae1bde9bf76f3721ffc3a768ef6b76f19e0e6eb3e78755e3948dc07afce11c403fc14982b409ca06f5ecdb7083fe85bd0e7b50fa1fae493d97f87376017e3baa8a60f5a9701addd0acb3257b3bb55d978721f8b32f796061f3ac14104fab5d0ec8ab00cd32b16bca53cbcf7a2b1b0b28be6eb14bf861f632ba95bc79ff122703cc49db59a2cc96aabec965c5fa0755a375fe8fe807a88bf03a06aff75838046f10635a16f802da1dd214cb167214ff5f71fec16d161fadddc23ee8f8eff34378960dda3f85813030fe036810e32e0e6b4af991997745f68715d50cd55ab50248b543456afa14113f022530f1da1d9fec730da8d729610ab6c5e47bad4fffc99c5c6300f3b5dc788d66f19c33edc741d24dee0f3e730d28d42abf153165dc22ab854d3680c1f0cdca6fd3c22a5c4babb60e97ec80923ac03574aece611dba8bfa38f4f1710feebe7f3b5fc7c5662ffabfbfac420f8afbf4f9bbf0fa4f0aa0afcf2fb3906897fc391ffeb2af45f57a1ffba0afd7fc3550851eea8ec6d19eb16d11bf5e4da4a4ba0572a0acad1f522bf8fecedf71195befd8a7d3fd2cc17b829d865f207f942d9e0bf2cb5287d5096b86585be6ac8b5d6dbfe2b696031c9333e01f18b3ece1d280ec2bb4ee582b37d7cf561133a7033719d8408d546467f58eaded850fd6f6db10d156ac9aa3e719836735159c5285731a8ac8e728de86e41d32e1a5a45d76d53052ba11ad513f377608cb2c27a2dc4d5ef4e74c03f2dcaaa61bf31e3d2e145ea4ac2105289d2a226b24902dc0e13f94a94c837a444bf0c25e6152801ba571dc934512698099d8234014b20feadca1219a8aee197bc12ff54419d748675f11fa43b121f7470c524c8b59bb0ebf43d7f9e16539ea7935c00682e9f84f991056d50c27a792d7e6b942618f5777b9bc9666f597326d88fa9769fd3d44ac53fb28e8d0af1b53832e331af5f95b3652eb9536dc82ed94da5eabe732b3dd6dc8eb50b3ebdbd9e94b9e4792e360d35bad8044e93aac6306b78953665a5abd6f2abd4c8391a564efea5c998a19eaa8b72f22fb1f5d8a8ad6e39f957302a095739f917724914757475552a69bc06dbd25cf614423df2407308d2b7bd8b42ac781d71b338e055a8240dbff553cdd83edbd96319fbb3bbbb6db4373fd89b8a8a255f9475d57310f5cdf9bef25b9615bab6e7f7aa0174d70af67d555a7d13b8eb3dbfc52ff63a2c948e5ba6aac95f848bab1f9f4cb5b588b3889971be8071c3805b45385f17fb78472681b678d8519eb936e497b471008523e725acb2a58a1593c6ee9657139ca90641d78477bec62611924c6009b245fabcf4017a1457d22b657f5274db40a516c506ae388a7d8e421a13807541ebb5ba3b3afd236ee5af90fc9ec0cec2f8b11741682fd3abf1bbd2c4c83cc1c1710449cbaef5257132a979f55151cb678b32cf4b19faf14e1adcb25e2a3f3dcab3e2bd207ddb7fdc607f7cc8bf8beaa2785e2e6eabecf2aa61fde980bdcaa6555997f3863d2fab4559a9d066ec599e3359a99649abaa8f7c36148d5f66535ed47c26f76625df029e2dd2e91567ba24617fe7552db6d2eef031eb8b0a179bbaec6273b027e3795ea7b7e6f541742a9fe2e659ce19ff34e58b469c7771e7e799b85b5402f3c60d3164ffd07d949326cd0a962a83a0722e6a012859dac8b89ca3eded9b9b9b612a011d96d5e576ae2ad4db2f8f9ebf383e7df16877f8583414ff3bfbe5e8943d3f3978c18e4ed9eb37277f3f3a7871c04e8ed9b363f6c767a7ece8f48fece767a747a709fbf5e8ec9793b767ecd7676fde3c3b3e3b7a71ca4edeb0e727c70747674727c7a7ece4903d3bfe87e8f5af47c707097b7174f6cb8b37ecc5ff7efde6c5a9ac7cf4eaf5cba31707093b3a7efef2edc1d1f15f6caf2f8f5e1d9d3d131d894e4c4dd159db786747672f5f24ecf0e8ec580c7178f2863d63af9fbd393b7afef6e5b337ecf5db37af4f4e5f24a29f572fde3cffe5d9f1d9b39f5f1e9dfd43f4757c72fce8e8f8f0cdd1f15f5ebc7a717c36345839e51cae365c64836d41b2758af929cbd3e27229aef4cbf223970f566cc1abebac16cd6ad1635acc589e5d678d0e11ef7694596751eb41b73f13cc9c3856ec322f2769cedef0792eb910cde4e80ae01ed46e97380b3528e8cf12363192b2df4493dc9a37afcd1575329729581461198fe5d5351e8fd8f93b496404d3d7885d5fce997a65dfda02d72e188cb1d9d0b667fb6ca2a32ea06b1ad5b757ea421cb08977974efcc0118bc180cdce1782664ece17ef2801cf48f30446c2abd1e911a228b34d9136613cf634e488f76133a81498017e679f29e5b0942f9e9ac550a2457f22c487fe788cebbb5f898cf32e861e40dfda033e5b2e7480e495fa125b39aa28b135fa2dc6095f10cdc118df1fe68296eb089fee0e5259596fd8abd419e3d99483f5b4ca26ca14ceaf137bacb5d34192be1c14e14becb0548925f3b2ba49ab19397d3415150a54b71b5ef2c60638175ccc941ff2664aa82f74ffae69a0ec73016e5df74df9577edbc722f834e769b1440696fa93ebfcaf1c1a4daec2fe70c673de70dc1ce8459581944ca610ac8ac040b461983101eb9b375601263af7f865c9c2cae41aaa22afc63bea6581c6af6ea120962157c73bb8e82aad84c0aa3ad3bbcc01d1879292aa13d8c3b722e73dc6899eb96832300d915f4121e3029fbf0b5d2f83af9239e10d37645b738b446c0d0854ad804aa861054043f14febf66726adbe4adb6c8b8777847fa8ee43fe3bec447d6eedc54d4a76647e867dd912bf3b800a02f3782b784e1db85030f7de567398f4d3be2a04dadd227ef6097b64bc6bb27259cbc0c7ea00077b25b686fac446ea8b799ade89c1991d5a2d6a287d152e84b8ff67b38fb8e9ed85f5eea88f7654bb72e1c8a6a87d7453abdf71ec3bfce1ce8ba4a237aee3acc4effe9883c0f6f0eff75c3c8b33757288d8dd41de1b84295ed9898458f13f2134adcc531c8d8824a3ce7ba70cff1e2e0b778e7c2474bdae34fe2c88a163a14dd715edcad2427c0bc45ee2bade57940ed8322552f9eb846e357dabbe759cdd1d92d82d3be79efde4bf6ed2ac9106a8e34b5e68cda011e39b3acf264280b7bd58276ea962fdb04cf38435d5ad51cf9e542fcb4b951499c998e5aaea555a1f6415974ad73ad126fdcff38c17cd296feac3aabc3ed0c92412365966f9ec6f4b5edd8aefa75c083659599cf246aa6e5fa55971c0e732128f60bc2e797358a597a2adfb5c2726cc9a2e7a952e00445af7acc8cf5fb90c702306d33a5fcb882a561b94a807b9a3629a2f675ceaa5d5f7ac3e2af2acb0c325cc60f8920bb0d2656e95d9620e4b252cc2795ca5b5c2c80ba30fbeacd2c5d5df5ebe9150fe92d61aaf97bc91d8f19070621897d8f76369f6a371afb4d6a2b65917b808be1e67d96479d664bc467bc16d5c96d6e0d71f76a04e2861fc139f2e1b1e530ee9fefef087d2f5a72a2a25ef23f71d0d9f0941264b05b28fcc3f258ac0f67d642ba1a6e08c84303d9a895254ff6356674dc27e7ef3e2d95f6d13b93c1ff26da321d896b5caaaa7435c1ef3e6a6acdeabb84ff28c02aa8b0a35f943dfcef1af8bcdbc4c67597179b12904d99d77327093fdb6b7babd4cd95d6592cea84e765527b8a0434f7321a1bc2a2baeba79a2ba015f3bf45171595ff5f0adeac17eebd05e2c976afcbd6aac3e741a399dddaaa63f9871e5970e6de53da8dafea8daea2f3240275e5421c37a5ff6d96fca6e026813b25ad7d1b7c191be1cfa05b1432cef047bfd33fb014af6e0547610eda11e3722db0351e66b983fb8ee9db07d0e89c13bfa751ddca8e8b624fbebfdcfff002ab2668ffabbeb585ec090de056baac89fa44680c1722c95afa3ea695aaf9e5a7b4855a3af658edf76dd04a87230a88ca4665bf57a20a59297cea4aa86080c197035f80acd2f9c4b7b582de43461b92790733c3758933d453f4d062436623d556e3e1465c3e6e5b2980d7b967d3365df88b3fa17d58de1d665a83b34b049a56582dc997c7b0e63629afaf4e16980817afa409b717a6a18d4cecee21bd6bbb8287a701cb758fa5f3656c2f6c545f187ed84f57ae80d475743af9f6003762103a07a940ec03d6dc30aabe5432bafcc4ad027687802b0a00d50c01750d1db12e37408bf24e861ac4a8f8a79a96b999fd8e434ea26057b8d291efdf9e1df32ce11d23a7a93443f3f7f36561e408f8581f0146f6e4390471d79bafbef867e0f70205f465175213a212e5d0da8ad079bc291db15da55fd1d349504f5851132b591a0e005ce546f8875b2051a51f6f7b9fbd7c5665156d7698eb825f3692fde0ab125bb145b42b773ecc8138f1db91b3880254be07e017640a639d41c3e3cafe65bbf6eca8a4b0922618b32cfa6463f2ba57df9814ab6664a58af280bde2356c1752ca83d18c7dbf45b5b2c5606531f6f6d31008d1a554c1bb445f413112d77a54a01673dfe4536e9c0c4c87a3e01fb203ebe4a8bf4d298d4c12f80d8e8a45baa8efe4198fb2b39f1d4a82802237d5b4298fe3795340e1f4f3a12b056fd320abe2163cc6aa549e96b2aa28f2ef559591507e54dc1700236dda74588fe172afd68040b90cecd7dfbfcd9e40034f525d68f666c1fadc8d0d0bdbfa962ff8d2740a9f7251cc22d35fc8927a6112440f7c83bd445a944cca8528cee797b10bd2de91813112bd2e62a6ddc3b12eb98c35908fbffe2d3c67ffc00d0a3878cd23d61fc062fec8e6a6993c9d829757d9dde86988743ecb02eafbde7914013694dca6ac9709ab67b58d118349303a12da4f41eeaf0bbd2a3195661de61a06bde9c65d7bc5c36f17cd158e71f282641df097b8cf48d3eb3d34d81acd694d0c9bac88ff623844cee9fb401ef0f2109880852fe769d2eab8a17cd9b15bbd6454eb952099d9fc376406dab5c47c4c7e14c66fe8c240647751ce9f095ac443095f85c7cb0e8e958b73c470d43220b964980a8c370e469dd1841c619c281423dee53ff8b9a27c8321aee173c0028d78a219c339439f6db043047fa09c560fbbb08bd2fcb4373ea5806bdb6e8a4b93a529d0de93a5e72cbdc78bd6a6f00735f48a85e2b9ea703d2297475458707c8101587e817d4174a45e89c221629ec3a261f6109290ad20bb854e2e846974d60da5fb6adada05f7b2bfb3ea5e1b5ed19d42a134db26ad2320cb5bd9cb78477fd9b332a4fafa61f52ec49f0f2eb74df69035d021769d5643227cd381dea1f7bc1ae7ea9f608db671b3eba3e7f6edf199260e1a3a4771cf065c86dff085752b6780d5966d5cfa3b2c86f7b76a50c749f3fdbe9984407544fd2b0759a4eafb8ea07c051046ae9c82e011bc19b6d3b362292a8df87c1c7531a73cc274e524b4b6d1a7bcdd8a1142140bbc052808efad684047b847f6a60da90481db540b08a913bb521d23cef8597a0cd16deda3b450c36f406f20f3ab88bbc38466a4864ef5137690e73ff33e2d9d475785aa48bfaaa6c4c8a661905daab137b326d8744cf6564feb1262793d507d97cce056939accaeb971005d09ae1e60de678251fed261599aee79cd4b72db6b698ed534ad6ba80202bb69e57065bc9c5f06aab6f32a68c7ca6b5832bea086a8adf83ae08bbe44d0449941a1de064bdfe43c565b47ba340ead27bc56b087f4d8fa0cc03c809c40abd15f72b39188d45012d5477998124f35e2c52ffea968eebf06289de148876057711b84142ce4bcb9d432d90086648b141a01982420d0fa3f64c385bd67cc69af2923757bc5226f292a2313dd3612f746b9654ccec6bac674898c3864fe03a7030643fab8727181fdc5d00cb9771555ee7d4ad68efb943b40f56b01b9f3f1335ca477241710ab869793d115cf68953888d2390c3d077aef3110de25304c0c8031090f7901a209e51f662c47d2781243ee089d3e89ac335183657bcc0fa14acee0805cd35ee1cfb508e43cb9baf1aaed586c464a4ad7d2ad29635820846d1a15325880336ea5833613df0cb9cebac6615ffb0cc2a3e1bb233e90ae3bcc9844456b3abf28635a54ea8215d24d45997acbb758f119444a1b61ef6a03bb0b774f87a75e448a9a18255f4d4601fb29935b95da96c340d2d958498f9a0b00783340487c36fd4e2e8b5e2648df1d1f23b0ef2b868223122c8cbd8a779c1d41c8d81b226f42b33fff4a0c6728d778af72e28ed74ecf87ec8da4fad7ad649b006d9e9b4fc6d60e7f8c63fd5303cbc1a1a8796caca651d3472d68c2d07c66beead9107d1c8ffe0cbb368557dbcdb227ac108eb7a6fb475c999d5279e9501512bbbd2325f2f4daa01ea26ad1afd887f0a2a3bbd8bac3eb22f0d33635308cebdc15b70abdafd421868533a7008ee8160a1e1a22a270f82c4a285efb2e112364e038db3ca64e7380719d24afff44c728d02bd6553068938b1e2f8404ad3fe97c46f02704bec41169a0bfbf6c1fa1fb6635a27ee9b2b434c97856f5bc2dc939d29953d2040148a62c6cad3b2a8cb5ce793eaf7de162a94d28c197312b46f65ad9eb42a08dd6f075004201e91543a2258e0392a452fb3ccf71e41ddca30ee27f3a06778ab65eca77d2f4545bc43131e5e8786076a81d54f21774e6bd289bcf006dca290b260b252e6e0c2845724c4b97bac6ce7b51326fbf77cb69a7ab828f3fca86804ac81fe4492a7d7659e67c525511babc5c81e25f7f638ecb75c986e4956bfa96e0fb550e8b010aa0303c5a21c7fb54010e9d31710c91e7d3de4aafeea262d6693b6ce6c0d21aa80d7682808408bd6b880a6b1968081b45aa0f3d507c6a12572380c1a013d2cd9f50b0d38185c5d2f409127b85b9d06d50bae818221998eda5ffb95eaf806ced7dd404fc1bf479e74ba8723bd29a919f61488b3327c8f99b6e7dd8b9fe68de5893c373280038964d6f1c13c786935529e1228f656f1c0700f56ee9193116c7ea0908018d95ba92af06a77c4d0bf1521dda4f32e4a04c46b60443a3e77b5104f8bf130ad58372a0045614804aed3c561110906e63f6fc9d6bf66cdd56b2428e0c75314c11356d32f5b58c620b0e5718af0edcc387ea8f733fd0bb1e74e61bd4f7bfcd0a2b6b15115c8681383dad8c73b64a1e0a849a89767047a85f4a49ea3afd3eafd5bb75a1ac7564a60806cbbaef7e23d4faa329d4dd35a2e5fc6ebfe9a3b07dcec2d71743d19c836098fcf80e0753c06c33d8f77bde3005783230f52ac505ad7bc6a8ecbe6b9b8f30fb3aa6e4eaa9342bb0274810ffedc8b63c10105d06049458894d51305c67198d3f48deada3dfb8d73f1188905329c1555321c5bab2b71ebadaa34f42d82ba3540130a8d8aa2220e90669ccdbaf95937e9f43d20fb243fe12e2229dbf82647086542acb6cfa1e06190a11ab17743d4959a35ec4b4b86b846df2b065dc5afd19d81e532df2ed4eeeb22a6855685de97e13ccb1b5eb518c4ad3286bbf3853a7f842833a02a363cad04eb8727751f914d23a6252e66ec0051169dade43d9dcd7ce35ecc5234b138eb1b1b51420446ec46d21e864a79821d6590d9d11c731c3ee97b6c4e58877ca5a7ac39838d1bb8fa84a69c6eefda736efe4d84014069b2db1542ca107237327beb67a26a3de4342c8db13f2c2c51c61812cac886896d616adf2093bb9759ddf08257876565dcd05bbbb1b4b8eb0d89c8430bc382644820697e09374369a1c2f5aa979390f5ac97135215b5521d076dba43d89541711be919b4ce7b15fb169a9f47fd1165579e53a2e79218a762e5a486bae9d074c05488980f7cc14364a8249a0bc0a4f6a74d8b44bc54deb7ab84f534f3ae8cec55dcb75bf90e09fa91898448b306d1729a1645d9b034af4b36e1928515dcf207d5f110bb731adf7f299250a7c87e4035bd3356ebd6da085a5f1ba805b6aa890ee7a9ce4435b4db5afac4e2aeae77348b777cee2abdeb3448566436584264b484997f439b8d1059706c78a19acf23d7cf85d3ac0732a9725a09ed0a656a4fefa62a96794eb14eb1d90af9d49485165070ca9887972ebe0e4b517c03d6c71404e4d2e7434cc5a1b35f856a415b6ce40c1e986375992d614f46eca7ffa4790691ba63d39436672db7a57f92319147bd4a12ef1c06ff662d3f5bc988abd68986b8ea0f4440621da2becc1518271dbac6bbd57d0ba211f228d84a0386603275fdc1866048b7a570abad2ddc8dd59dc99be603fea493da490d38dd2af19a60bbb1aabc59e3b22df88d1718452695263ef7a4d853a439d34e0736aead32d4e19fb2ba3137da2d53195564306b81ac5ec4feecd47b1df11e130c02609dc0315a61430ef33aa8efe33e5c0c6c32bb11b3d2f7de18226be47b35d0d67d2c9c39608119d0ddc22a919102d1012b646386fc1882163b7e8c0df89c15be56aa3967b5e0d73b772958a178576fb4bd5dd7deb47d5e47078336870c8448dfbbff7cad03ef85ccb0e0f8bdb6b42235671421424e0e9a448c3c9241712fde7e7599bffdad380a3ff99e102f1c6f9390731d31dab7a9cd93c26517e74daadc3714cce6b763a380aa4805fe5715ad15d3615969cb3d94ffc92a03215e8946ef88e7f7d6fabecdbeb7ef6c13ea6980bcbe045f04de27a86bd239421010a1b7e50d70d37ffecc36880b75803922a24610cf6299e72db5fd9d8f3d56645e5ff0c128259f7af5469ef0ed0dd2727dac984594b828ffa2607fadb9b3baefa97bec26cf09aaeb4e0a8509bb91b88af9f26fd947dc778b586bc14cebb517cc5f0defc0a9287c7da297445ee5e4235f9793ac3aa69721085bfaef3abc0f70aecc5c02d73eb97b03c73e7833b7a2d36acd5a2507e87bb3aee410ca6a2556b21dcd3a18b322e12a4862260b06e1638f3f0fa86bf640b0067db6cd4fecd18eb378aef86c39f5cc3954de18e44668328910e6e50a712aa3088a05d1e23d6e8211c2c7283491cab19509fbed8e0c72ea960508bb2e4e79bac89a34cffe8fd260bee48dc061dd7801d6eaa61a4eafd2ea59d37f3c1836e5dbc58257cfd35a08c0dfc8d25ada2fee20c5dccb729ae6622eede2b4abe6079191fa419d714dfc13e66333475f94c97fe3946b656ede04d3a1fd0933c1d930a6cdf4ca84a8f13ec2136a4091ff4534528dee93400b9ffa07f55a66c1f2dba6b3d91b53066a91766a18e2e05a74a15c758da005a2bdaa6bb720e02443a0d07286d3683fc77071bc0f267c8d9b1f0ea8e786c2e74e7d249e2f4cd95faa72b9201eb4202c36966ddf2b4b18ee86b06ba26cd1e8be635dd399a3c995a879d3752502407e436f656d1bad1584cb1808a4ba295ce015dd57cb82eedea30fb491152204d765c3a14d17fc827247ca94112673a4fcb19ec19709545516f9ed9b6571585653eeb00b035e911588b05552bf63e25631e4bfad424ceb7055aa81fb6f9bd51888491d04bb1a4f033f00ab3523df6ccf7713b4c026d831300083e8d67ed206bbcc77bff4285312c1546087988b2d44b811b1a8cb3bd802a1a786129641a7daf214d70b5c2fdec5dc1d00b2e0c8ef0832d2e1e485141d3b3d46ee030ac1a22171e1ad3af86dc393c77fed41d4951932a6c16ed4316f5c24f4fe794f35eebd4b18a5f2b50631d4e56bc106e69ac1827655177ffeec5e5487376955f47b87e5b298b1ffd1acc1cc42cdb2422b8227cb8615a5616e1cddbce1153719b4f86c2823a0f6fe512ed9342d5851deb0455ad70c86dcae25dbe57a684a9da44b54d17213c896340c75cec69cd97f96896ccbea23af3a2c197d2f3c6d8d600f7a19e1b569856951f1455af1e796b4c39c16f21bda48f60aa0acfdddfd1006c9829caae3157d535f07062246961abaa144eb11c30cef255776067fe5b72318a8d87e054943dd4e977d88eb6c9e5dd2241cd690f4f9682630af642cd927246b8167ed3d4d15c4c5e6991cc83052ac7756b265cd0d5686608289cc0f587019dc40564a35d6a599c1555aab539132359b65252376fb734a589ebde7e6a8280384acb8e6d76575eb0e01430e74803ae3a3615775f5664c6733958680cf680f17d2689adaa78017a1762a6455c2bdfa451bfd6bf31fa1c7e717f31fb258e6bf7853962a6184d80b725351281f686b04d51053104b35607d9f1999f98eab2cc2858055166d86dcdf1df76130e81106f7e535a4d1a864bf68763c581e69eb14d487ef94599dc1f5b188b277f808228f170d47068ae277bf2867be238d745e28675c265f1f7e54a1f4a465926207648020510e42e77b8b14c08debfbb135d3ca27a9602dd2ea328024cd6fd2dbbaa7f3f9aa92e1fbacd0aad49fcb32e76921b7a857c975e23d7c32df44d92103cf260ea9ccc0e1778936de0a8ac850463d30e6bdf6176666339e470c18889da9abaf1e36420e5651631210757fceb2f93cf0998f67dd71e7a6d530ca16968b26bbceea269ba2f860522f194482a2056a4c202353ad0c4e6821adab7cf6204cd583dc7481c0433a72c6e519afa84fc90ae8489250c4047e0a98a87280f454fd920b599a7e79999fcc7cd1622f12156d46d63971f93975426bfbe54ce6461d0b095fb2ae5a8a51d98a1c9fb40e43304108c7d0cae0fd5eee2a77b00045b393522d88d456adcd5ea50bb61fe6beb27b0bddd304a2d8be07f8d026c4c40d0364ca54e1617f4f234a7ba2aee0b1a5352e8810c39cd364122ad809bd3a680956d2cf9109d035429b0756d2077eb44a04d2b52941481749c846fabf984f8ac575a19476c1e91f05540e56a65669441f04d82c60ed46d0e0357eec4791efe046de23d940c814a38bc7db89354a0507c83f58e82e6ebf54ec6066236b8e8c6d052e24b002860df961b4cac81fe49eec2d8120743176c28ec714dc9b14237a4bddbe3a7ed759f98a5797dce680f3920293cf2ef791be30f9830b4341ea5509e1f72a50b175f004d93e3bb7287f87585c93fd0e255e979fdc92d1dbd3adce788de50917296162033d2f8b59e6d1f1fb215bfda95cb8301fa29b4f240a6330e8f9eebb3dbff0ce970f8c4da34cb50870d6de31262b5edbced44332e911653dd8c629918695794629ae27e584621db17b919efd3da63c68fb6315fb5ef02ee774024b802399e9cc8d2c8349f9495b2dda834f83355607e7bf5cb54c666bb27d666b8663110abca03938dfe7b62b20cd8653b8a716508fe32902ed11bbd83c2e1d5c62fc99ca304601152e4104afb6c3ad2ddbf9109d6612bda80640126e0a0022f7af4c78469252255f803384fa758ac0c8ceee72f75b90ef75eb9bd6ad47973e605e53fab01027833842c4a246095f6b70b4bd8802cdc4bc4cf31cddff0e69f5f03a5df4f585130645a12f1e9c27b78fb1347840664692ab5089f2d5d917a8261003aad4b8699ea5359f1d7a5fded67c66e5474347154e34fe9d5d84922acd2fc973e81f5f8bf3598767b17335b702a600a69a8f076bc21b5c344087059a0a849911647b71dff99d86d2a47354378b7fee377ac73e7f06c57684770163a65786ed077161d168581ba952f1012446f41b3a5116a5d7d32809ce95db1e7082c3f1581c07b10aa253383425a6ed517d2a96d77ba13426c9f6cb3904e11d919b0974473c08c832b50f4cad73b7d64fc15a8f8295f64743e391aadef605b4ff75342296b0db9013c78d2634e74ff118a2e948fd2720ec0113d5a2842629379a642799d52549a2757110794a17e3b6f99e079ddfaf2206ee893f7c6df02a10c66bb630222bd8f2e0a941c9cef215c1558abf7c883fa21e0112fde86100225f3de22f1ea7d2785c3d7844198a5695c0b9f746f28e0aca11d952fa13c938b6d420d67a43ad256417622f800470448776534ae38b2feb2b30a014e720fa408998c7e544f18f7ca61a1b4e425fd8908de8761cba60681ce75f833ebac1e216f20bf5441e3e482e8b8067a555ac176e5db09eda7147709a6e8cace1d79e2993f8a4d294f81bc5b7def11626dc1ab277aa8b4e9b42b48e2c8337ea8aad70af6dd03e3a03f78b671cefd69bf20477392d57f882eb8abe796a9e15ef95265dfc8bb015952f85077cb65ce4d914474ad0cf88a8b0d546146644d59e12e354b91dc091a7c64af567136a0f99a6daafa2dad41babc5ae0307c163ec4ec0348503cf344075f5aa9ca1fcadea8b289e45260733cf8d397c9c78769356bce0751db806d81219ab0877fc9b048fa37c76c055412c18dc18ccfa357991460a7ee3c71481d53fc07002a22e0c1c809c0b0288b19d76367b5e2e8b466ec51d7f84ccc42f65afd205eed705057d2353ca1c16d1aadaf1a5fef9560b2818021d81e5a898973fdf5a1730baab827f9241ba083f277d22c47fe0e799dde5d2a14a1929becc8af7c379555ef7cfc530f224886ffd41223b7817c2ef9f96f0231ad584b164fbcc055930d182d05100bfdad7cdfb82e60eb718f8f1f9b34423f082f14d016b93fa51992d0dd0d5653c3dec29d2ff52e40eb866995049d8fd6bcd807270d711fce1382be6a5f6e6479e57d6094af99b1d97169ffd20bfc48a1d4cba79785979c30c4a88a00b38167cc66eaeb2dc644cb949a51dee5ce6ae03299206a1935b88494918789bab0288b2324e8741609c4e2e06ce0ee40daf1765517397351b7f078d5c30dd8cbbd33d4e87a880b89c746c80b0022e202ea5f377fe8d64ae1da95d7a13eb9828a5ae21732b4c8359aa78bfe5a7dbc302ce91b886404e403f0ba90dd3e55f473af7ba771fe1d05ee31406f3a2aeadc0b704b89ed0d7d403787fc01d289d63d563bf49ccf3166e8523798415e66620a6f878fe701a372c45d6375933bd129f87793ae1bec4334d6bce1e8fb0b8709f170717ba68447c4d58cf1e522a01d33fca25bb5ed62ea2d96db9ac6cce0aeb8a9415d2d0deeb0a9b16df77021b70b3b56616c353ecde2e61179bb0745eba8d53339da63abf958609ac5e2e84405ecb09bb3ed842b6bdd8f4a7ec76a04b614da7a1774b0fccea5dd86977154646308e9ac3a64a8b7a5e56ce97c06e02fc3a0dec512e7973a0743d523751f72fb90d99066c8d6c470322b59df9335e982a36213c822d4fcd31730a86829498ce02fdc56a03d1e8b9873758b41205b04a1b6b4df92875157111915a1fe8df4db521ee7f7983473bb4e8ec8f0956f7dc3696baf0f377d1011043130c704e8594f1ffd47caa11752b0340825440e64f9b968e3df142a6053730d26dfd5da1bf52af71b44e2cb2452beeebdac2f5974ab2abb456de3dca0da206e7c7aa719f242c78c63365df263e1b4dfa54f489d885eef9d4d79ccbab65c7bb5ac67371175f0e6b412e7c5c00509f90bded52bdc57249991b8fedb32754674fbccefc5b59003aa7480e925451d0c748a047bf679290e1c0ffa6c7a3226bfac19677c38c20ebe1570be9595b1eac60fe38762446933e5da3364a16693a0a19caa066c8758f886f042d0ed01acd7a60fec033476b76918405921040a2922389f70b538ee3bfe0b212d8b38e9d578d7d4d3b2c2b299cc77754d2cdeaf3bea8353a3e0a78133f850a7cea9751b79bb6dc2052a199bf3171ea82e0a344c051dae821fc386e397fcff50cc233c8ba9fc3fba39de4301ccce4e65e1fc1748ae4f590088cc77c195630c1664bc41ea302b9177fe883e3d51924c537392d879e9f17340ffe098ebc2fc5af8ced0b810f4331de0900db1355ff1cd4d361c244e937dfb4d8e241f082bec73be7e38c063486efdb58e8a870e8857db236ef01ae17c534f5e1277a67311b755076161d90910ba14c984c5b92898a2c2dd3b27d56043e5badad642a5d0182cbbe1781587383106cc51446f8477091a236b465bcfb4339a6a9f4d1debc5ab6031ad7f76e25e76732db393509d5c73a088e2f33e0abfb7070d2c293ec9d78cba3b45a4fe9433f92e247bb4599f91bdf53b44470468f8263cb5cc8ed0001719122b6fc48c126a84076599495f27704e453fcd4310fd5875fd25adda090c64627a7039681ba3a04e27abb4447be8af34cb4a814e34150508bb12fcb80e2bee5b57422ec488f38e642d02328eed2a3581ed08444aed78db435b62dba088d3a070b6ec89e5afbfdb17d254adc60033602a91986e59c627454d496df428bd1708514eef2b9411a59616c63ee61df3b5c4ba675ca8acb631d6082ac584e6a2a05b2fbeb9881c6fd3d803b039c85e6d48d2566e8bd11b9f6eeebe860feacde3725f5bef88fd402e33f6f35b467665b0bb1e9694263f0bfb5c502a225df015a8125a0a1f706feb3a1f0f98d7e0455c0ac182908178ce2beb6b7253540f0afc5b104f5d38e6871de5ac4239d38106428681d0c6dd8769b2ff3e7d80747c448372557bc6afbab3fa9dcea43eabeb5c5e2418940c5c10acd17fe037a30894c40e961b8b4557bc55dec0092a8bed10cedc256459cf922e81eb1f0bd8bfa5b9dea1cffdd0d86d3b4412ada36e1d1fddde350ae123571dd98695e388398d4a4fe48cd24fef34fc138a55596f8cf105bb6cf765743e06b33f19fcd948cb262bb37a8158b21f731add3d0046125e15b43bb01ff8c632abef956b5eaa0abf4ffd6d75dfa7f5fa0cba4bb22749b5f7445aca2fc80addfc7086fed367252576dc77110f739f6172afe94e4e5eb52bf64f21d2e4fc22899c5914e3fd8102b4fa7f6e3558c44aeb8a049fd250d62cba96ed754ae799aefabad8ce25602be52170feafe870adfd480d61caa035b89d352f0aaa247eaba13cd391b853af7188af483a1230051547ed1218e1c5e28fa11019718e99818b8aff8f1babc7addecca90e69508726f534fca8aca57ae2df1c097da108d53f4ac3a9e2436bf48c2c6d304aa0a13369e0161529b1c29fd24f538c4edd713332b70772432f4df5979280648d878ee22fc3bb37bed3ea6aa54fcc392d78d32772aa63c37e50759bd10cca37a8e76ddcb5d6f6f2634ed7fa7a593744f37992201f2b1c120653926d664021abba532ff228cf704c951e67bca6a8fc85199f8466f9e851ece17292df594e15d8975b9307c846f6ca76630fb427b20a3a68a19031980ac560c36a6cd1654d587b559d087e2de060bfc410d16f8573658f0092a3ef57e80544be2a827ed186fedd3626f44404a045d0dace1e00b47bbbd1c1d7bcf106329101d9a5fe6f98acca08ac7246bb4c855d2c8247a28bcf874ee4f3f20c5de8c5a104cd4561bed755a35599a1f48752c4ae1e9fe22f1ece08239ea2e4d5c863ead575f2372365ede0ddb13b5928a54a5c5ec915e815ed01d9660c831034e02dc44529fe7005a913e972caf9bb4984d6e7dd0a8f0d779f691f7dee97b7630f00021d8197b4dfa36996f4c01619529ae5353df09a8b7bf4a9d8ce54ef05d6fded25a2d246ddb2f368f8c6d6a959d5d4f6d04b884b06a567c4cf34c021fddcb0a1723fddf602353b698c1ecdd387d390ac9c2510d8105a04dd1199e738dd391f9478b0d168d343a5be408b15b6b10e7a0ae4a8138724cac3c9a8e6e0a918568a4df54e3ed34bd0d9aba94789623f2ab102b30a23e7659de9522659c2d15e40b9ee0ce142c2414f1418803e6ef2e3aa1973dac10c650d4a2f7b83be9ab377b0c91c1932715165653c25514dbe1e8d04ba169fe908460a89f845ed313ea8aadba919a9567b40b69d3acd2c897a3c29af7dbde6beadd55182ba870507523c2bccac60b33d8a191a3a1abb4af2d24ebf639fcd2bb57064354afd550c5f4f5d33eebe3de3f7f663b71eb83c0381b270dec942830aae81cdfef30b575d651e3155196a855bbaf66a98ce8963aab5c825b817a910829e4aa4877e8a81331dba29b11350ccecac026696b99598068223c9589d81240a0ae35c0b17e0dad94dc6d2fb3ba119ce2615929e30c1ec9876905b852575bed650ab359e7b7bfa4339b6e13bcd799a0e3784479e474109b82df1c4875473418fa171a52687316984cd05381413f434da394ba49fcfb852200ead6392e9b6c7e7b347fa992fe253835e0f3abb4b8e4866878df5277f2c63b2a9d40c2b2fa5556d7b227737388c28aa7331c724b462797610258540f91f836225cf4c5d5886047ddc72264a51548c4f2c3a7843a85c887180b21d539de1e19b4bdd0782bebe423ff4ef12a061d616d99dfed53ffcb9050b9b111a58823e7183088467a6c9d2c767ded0e236ce760045f8391dc29e834d0256f5eda162adf3e8c69027b3554a273a720873fd5277930054bae098b90d5bd0d45647bdd5061105a78f7b89ea983768222136c9fe974127d806d02da309dbfab8f0bc3f3145222938058cf606b4b314e6a59b6b6dc1af929dec5c03e6838e7b56786b561cdb0e863dedfc8ea6373152bb6ad38949efdfe2de1cd5245632030bab56537772137c449711cd613cdc95d8315c63f52b61f02f0fe069ce5e7cf51db33622d0384b5563049c27f628fc53811acbc8832f7e8cee96ab2e699a9b50248befa6206b20d688281a4b84a92cb881a0eca6c0e9a8b19b6191c35d56d4c3cc0edfb088f11ce9b493e92f5e3360d356fceb26b5e2e9bd586e3ccc95a317786843dee1ed3b845305b0f2c051442080d84062f26ba919ef5926238c7fab871d2b42cea32e7c3ac9897fddeb3822d0bf912cd67da3cf326ad15a8059bf069baac392b4a5da66a562a70c0a5e0902b3e5379c9e66525fde4d59394f8f4bf4e4f8e87ca0d269bdf0684c9a52fecbc142d1e091d038303ebb09d00c5119bb4713a6caa5bed4271be93b01f1241e2a825d26f8e8aad0e49b7615961158a4ceafb37aa7588bf9dac7e7b896a27d65753a305889e453d990732f620f78046bb1e29f66c8217c0303943f47c42da4bc64980580ccc8100fe62a659a88d9093882053cfc3eb83440e9c4acccab38d74399929cef7076942e19f13b4eef534c7dcf31c10dfe87a40d7be9a1d252efb55fe5ff0bd4edc8d9d37a35d31878cf8e6f3b61f6862766027ad1015a90089b9ab888b8362c5535d4489e40f16ddc923d67a34c8c5c8153b3962f7e46fdbb82a5525ca56a962b283ba49731edb1b21f18a9fbbb5b0f77f2792c8076f124bf4f60c248234cf7b0f2a0f74d9d7dab784ad90dbba4e6ac372c585b4f603b2d2f721dfa2443c8275fffc996df8c2ffe7cf81f49fd507d97cce2b5ec80901f582374bcf438300a5d59a3e62418ff9a5dd847d9788be63eaec0d5f7b0920fa3684c8983c21d326dfc525302683ee31c8462be8bfc5b669951fcaea172ccad3c4e927c3fa1ddc4c566600537fb10c5c18f9e11b4428c9937650eb786b8444d04b5fef696d51cf6177608b7e4b03fb6d002c3a8ec1a988ee0973468831be0bc6e092b58aa3a1bbf0a8a559425ca425d90ee07e1f80bbf23d82ec9fd0f4c8fe7f08d16155297194b4692b704d4a53e1691e3a686c88f7baf14e7806e218de8d4cffc760fa113115c5efb625eebdaacb73d54d4a1a51db7729a5b03b351eba287fa95746270a082ac135b137de7d02fe512f011b58a73f5aa77a62122243a44cd3a2281b36e16c9ae6399fb19bacb9429c6fcd1bd694ec6253f773b169c319da68157e66cebfe18fa1a9ad43b2d7dede4b2045a7e55fdaab692ec6b35a9fc1687e0a3a1ce0cfebd96db4e0a6c4910251c749587be0ef011011a58b36793f9ad6ac536b3a69acc088b5845e65763b2072de03677ccfe2ec033880239562d40378440c9d44ced1c8ffa027d2fd8d9a3aefab5f9fbfe4a0aadd4d1e4acd88f514645f106154aa13759851d8998b31fac53300593a8cad7c84d444ab27ac67e77353a50b00aed279b2ac6029bbd8bcfc905f6cb226bdfc32f8370c44811db2170b355a2f61bde09b592718ef94cf58593047401f086e71151f158d38597904645825613df8733d40c1615e27989c3832b23b3ec36147dc18ee5a95c4070a35e36844ef9a37fd8b4da5ee9229fee02043ab6c75be5ca64b54afd24fc4b407586b581d94758282508594590d24c5a374a2575e24dc7858f60fb6024e0d306c4a95500707e3b7e5df7c83d75ef7d305361bb6fdc8663e888746c581de758b9678ef6d36686bc20546e906e26b95d500ab75215cc08acf0e46568c59e4759a473a539bc89854d17654b92ef5a6d1f224814c6de4753731e94854575810b65fe321ddedee0e1f356ceb91fbe7705a16d3b4e99f9b2fefa06e0d99d723b5d8dd5a47c77740a0d167ae4fc7da743243c3be0ee11b802adf73ec9dfa30d00d41b44368d466b50016505ce2fb5d06edb4bd0aac139a2bc56c60437b25d38f131b6d6960f0d666bfe35beb04c9005d634f920f66187fe471668b812b26ee05088988f4c55f632449f7f859f7009300741b9d52a84b831c2f7c35b10518c891f7db5613c2d8249dbe877ed3fa13f9003a5ef789927e985ce5f4e29e2bd53f90b4be478bebeb9ce674363b09763265561ad9a6eb6021c480d7ebc8ff10a150580e8e08c0110bba16815866d383a22fcc788c29840d1eeed2decca964a42b22a0efafaa2043a477ec4d69b8fd797bd7e75d873d51f1ebf223efb02d304d4fa3643b89aeb8cea8e219f5baeaf63e18a78ef6b7527f86df38c08e55db0f6ca0d92a1dcaaa2d44ed06d7a9da4e4ffd2f3a5de328c8d6f470a7089a36a0a3e3ed792f86ff176ed6e13ccb1b5e01a65f8a5621dfbf11dba48a094a738aadefb06fa7394fab9065c6b4eac1521ca9812a5ef3269ed9a85f948df5ad9d89ef3227d7f42acd8a4190f6c84400ae797334b34189598744502995052ac2a604e76daf951f31e028f2e2939318ff2e5bf54d5b540b87bd511583f987561cb8a20bfda53322aca469356f5af6c6aa74913a0199d960fd3601d74baa281ddc3035857e3fddeee9583768365931cd97337eaad4c6686edeb282c0d786649fd035fc4e3bc891645cde08001d25cfb46abac465a185365fe02384bc3d9242042384fe781d72330ebe401390568d56486ab5eca2f102ea7757b4da9bca7fae06672fab256ffea2100b3563fb825613af1cc03cbb2529d21e94ebba4512f1b4e507e5b4259c48700faf9161c8665200f7bd765d6d795900e15b618c0d3f7c870c79bb9cecf9c74f09fb96a887718adbc21463b410aa457780c1fe0cbcc0dc6b730d19467506c28b803b5b15b1ba3b817c9aca5808c7fc53f33ccd7315101fda9ac28410b2d07fc4b5817db97a8f4502d21ab17a1f244a6f109f37f6d67a8f28bc1de3efb646de0db1fd8dcb51eaffad15b7f5eb0756fd025316f5b75e30d5b5c2a85acb969610919d03e098bf78d0d1d670a3eb061aed1062b435b8a8b2c28474bfd59521488c026f26ad89f2dc1731e95a9dfdc81baea3cb744b784847cb42deb99cd029fa1d72e890d5d80e485e8993bad54dc5c2d2dd24c4fd79ce3c68f495a1a7e9f081ba4c99876a92af2d0257c02fe9f00a4328db7f3c666748cd1ec5a95934d3815a24e21edadf678fc5bab8eba76562f60a1aba7089eb6eb3d6f8a35d821862631c4489e808a363f99f27c1bcd6dff066fde31bd86d5c332a656fda79426b05aa6c596102d6fb1c7733ff15016d611572837458e6c0460bb247817d19b4c94227206ea7f700ac10c5e92632c621482501b2460467b30b9f3421906cb9a4490b97d4c223d161043de6b90bc3b26e5441ff9273c203cd05b4f000631529b2edda6f8b3308faa7ef7cd97f7bbc7d837e22f220e83eb4bb65912884b4db10cea9d2965225947e628bbf2aab0a839955cca874763db4d5bb322df572c2f66d8a1532c30ac84f62af9d98336adc67ca0cb532598bfa8ba56cd103ad03546b0a9f88eb231e0c53b8017ac8eaa3a72c4fbb12215950be06d4df574887c45f775b4e943fbe69ebbfacb99f51d158b21af5d2a769f572325c160eb703f269752d5da0b58d58c332e42b9b84ac6d0bb28eb98a7a8f22ac413abd63757bbdaa811053c7ed0f50355a69d86ec544cdafb52d8c784676814022189e4fa18af213b923435d7ec62d20ebe0fd9237cf55ea7210c40eeb2cfd283eeef51ed983bbcfb429382c27adc0edc364e42d2f417a28705d915e9a1fdc138aef52e385684e89b831f7b0e630cd4c04147f5fc61e7b87ba017af20361547c67e3d6e7c519b43f18068a948532df8cd91439e932ae29a683fe46dcc463005abdfbbab0b9f74f1c46423e1103ac93262c154f67f8ced5562ca1cfd54ad728df52056c96a78127373d616c07e3fe0daf33816dff9182466cd4f593c62bb4488944d1888f41cfc60e849d5def0263976e644959adc94c2c31cb3043e94e2ac757b5bda4ed11ce064417b12caca2c779b92cb4150e5f19ff0ac1157dc9bd8f69340906368d26ab24ec62d33716913e2df2112a9bb159c9eba2d730fe29ab9b118397189a8df303094d4fa88123c7386c4d0cf6fb5e14d0e804d3f1f0a20c2f4765da0dedf2fc63e4530e74605be98ee724aab1d2e596f739467488222100a36f93f27e406de80bdfaf43fbdc48e49685e32a49ce266495b2625e262c83fa6fa94e10df81cdb10c49aa3e5adb5bcfbc88315c1c8a229f48cb988d4fc0f485803078e066c016b81fc442bde44d3f9b0d12054d2c40e3fd8de89b97565aa7cd2aa0f58493ec3b761eb148e86af2107d048fdb42fc1bec6d56d8a9e91ba22da42115c030464a951d8ce332717ef89670ae365abe87719f75c3ee92848c1ea09d365bd4c1c4fb035219b0a6f12dc57544e200dde1c380076c773b084d3d2233eeb2fda1d887363c785c6edde430d1c058b0ed61346ce7db62ee29546c3de0647960956d9d0cf51e0fee49223832108d7041c488236eeecde23114401d948f070687755570244edf1143050054097a62c25efcf8696b36e8cd0f4ad4a39d5ff205be62e5a44654436b2c9f5b44fd76e73931ac9125dbc647f3ba58232d36d5459bc656ce09686ac75d55b5306716f4b2b5e175112590b7e1a1ca6db001aed0033e5b2ef26c2ac7810214560806580e32deee211a0894c36ab0991da7aca09618c852be12381853f5b4a8f822adb8fedc37598d82f15b34c6a196f8ae8502c7bd0ba36a2bcaaf106500df0d6c8488d4dfe8950ce8ef26d29d0bcca8b301d1c3be99c1b8d330fe3dac7e5f4ba24e76442d2f646da8847f6b980ff9e9003a6603083b525648abb3010c8207b0585f5fcfa2e90bed99d6b1665ac396c95a32611ab13a965d6b26e8b53340af91f9b94bc6e7d5999e63c6562dcfaceb195aad34b36a7970bd67e6e696b8b6a42516d4227884c8f96382cb9160c4923006727659949552d292d1d0a26632ab03e9ae9921dcec94b8b1d1ca0cc0e4f367fb2bebfd6391ae8e460ae49056eb2f3283763c6ea1f9733636b140921a01b1223a146a3c5f722c6b496b7e2387536fd376ca55c41e28e7115bd3dc10d083b52d24043da02cf8fcc0eb3006f98311dace6687f736398c9b1bae389fe0b5882635312c78b2949ffa5c43bbce9eb524db93605bf353b64425f683cc8527f91e0620ad174438e63acf58f8af63583ff317f3e40eff5626a7b488e874cdd0e49d5ee13552dea354f7bbf1b8f05608596544fa754d687cf546c46cf45b6f221de2b1b45a23847d750e97a1fe28430cc1941146171ec6422109b619f94612edca78afef4f925d833d848b33f056275c1c2c6b4a426c5621b2746b18c8aecee0fe906b7bcfd5bdd7fab6b1500fb1c6ebac72b8ce9194a3fe166dcd1eb62aec2ad7d7af77c505f56c18669599c92ff6022aa3087692fc5389486321947deae39d7da8caf1d40b81c95bb82bd40b07304774643554c9afb107d7dc7dd4be6bdd7126fa0efcfa0e6c983bea9d6da558fd500737ccf7d8d5f1d88dfdb30972e0594ba038022b5e25646f2a8c57e6fc8fa3410534ac2a47a4df767fdf998d78ef668407b2df7e789d2ee0e3ef2ce6c26d15595934fbd8dda09de004efbb77036f78d24ccfbe82d9566b4537832ab988cf7b908fda4630832fa1d1b06615d2e67534c06935c6842fc6e601f6923bc350c1805b44812858e7ef2cfd0a235d11e60ec5126439468f81f6ab97bb1a959131375c684d4c27cedfe9e5eb6453db82252321e3a48e8b8a7f8c2a5dd1f12bf8cd51312ffde8a3a203dbb58cf40ede38d04ad41c48ebbab74e5bd2ad89f77c6f976a85bc0ecd42ed5ef8b2b829689f801ffe15e5854e6983ced716911ab6355ea9578148df2a1dd6837c45434b436a0cf9a7a64ab54a19edc1ae0efefe24b5a4e8b9f81b789e460adc53226b8f1746c509d37316d7cb88c15000e20be8199a49ba306146bd4e3db821ecac71e471376815a61eae65d423538fb2909ae2d75ee61bb915fcc68de3bf5bb43f20ba2732473a5c77e055553d683cbb492b5ef0ba1e99e829e8eb3a4cc8f48a4fdf9b74222b6df93f40fb49cf1acab3d88031396ce42f224f23c12e77afee98ae2ef13e60944c3a827a3c46a5bc0d60985a679d003febc9dfc748341e36d78b96fbac69f8f5a2e133d6944c4e8ca512b6acb8349192b2e6aa5cc2ef996eaf42e7ba1dbfa1a86a5dbd2a6741c42add585c453fdf6a228b2f2a44f3d50823842720fa884b5f2cc15976cd5fd5237620ce4551def407ec11db791c9abf8cc848debe8d8153198e3cd37640ca0788945b76661eb1fb5b33b80d92d314420537bcccb9982f5e599f72dc2f8a6d742b936e41e43adec3fd04ce0a8dda64d7fc65769d35af3a46cb29ca1bb60f7600b6f5163017fc93dc2d9ec5281889fd99a19a4351c61e89bed162cad852260347d8a25c366d06219ecde09db77ca83f682021ba1ec9797ec300d0092c2f97cda8437a90b13f8897e4575d3e9f64370637fbeca890e1776e91d6641cdf0f31a3ddd01ad3ac8536ded504f1cf3e0c8156288411f5d0a6f890a44a018f6e2cbb7d49bf76446194d930a241ec270f84d6b8352f415bb8fbc352fadd9202c03b03b8c11da133f795168e28c9ee2d8d945657679205128748c5540b214d08e809af7af207e1be99d58762cff1bebf15487d3822927e0b52b395c0a344f2819a9c4202b67751dc690a2316f3c0b0d094e86e3fd85a7d19c32acd25b38dc9aae1cc610d058c82c5f6e179f0e9662b8cbaa7aebbbd787fde832feab65adb42411924986cd68031860534778c6bc43376dc5459c37fcd9a2b5b75838e0253d9e8271130b6b6586b4b51a1728f8000d61006cac351e52c231e2ab7b6fc1e7cc649c956b2521fdd25d0ccc83732103f8f6623d67b73727236fedbdb176ffed1f36d8ac997bf3653235a748deda430e050d70d85764bfb8a7e05649dbefdf9f4f99ba3d7674727c7bf37ce5ee9a09b474586b165a27176f3d131b587eeddf60daf176551fb11925d85f18ec7cc6a2fb996bed4b3ba01123fabc38ed97e5b2f0eda20901fc54375ef9862a8a5124466023a2c549c3bfb6867bf520c135c1c6d0e832e210386d8461624f7113dda98cde85debea9d094e0fdd95a80ba720b58391aff86067865846355dbe800cd546df89164155ef4ed7ffdcf3641a754e2b3e2d2b99f1484df9ac4a8b3a95eb0158c769686e5e6597d69cdadd6d70c1cc7d3a457c45608901571d72096c9e15699edf52ac86e95a4011e12c882d702f3a40d0cdf52841847a5af842326ad584bf0a22aa224582e0e6a84839051174d6ebbf9de0be7a7bf62c426cdb7677ebde8e8ae8f4c6463bec64f22f3e6d86eff96d1dab1e3e2365be50a3d92fba83f36c066d474827425a56b21eb0918e75ab77c133714b5404f5a71f165415fdc3131a5cba147088a964ddd0bb9ea64c6182ee68c6ed20ff149982a1d544e92e4c5f3ca5625f8c2761e4045ddd247c979540f2ed40b28c8626f3a47f164aa646f8c64035d5eda1de1527d5cbf2521de116c35613e258bf1485334d4291f21a519ce004d3db29a29cc7cb1e51d1a38efe1edd0b9ef848d853f90be02130c04e3b0533185458f0fa0a805fc1668319ae380c6dc7a11d05f47d4b5eb70b5ecdcbeabacb2d8b91141227c961d3146faad96f55658f866f40b8c0617e4e7df3a8b7a9182a58d79e21fbc27335dee94f13ff98b446cc22f47edd3981e78efe44bd4c1db3a18838c97f526cbcf10c25f967e5fe4c0812889e21ae4e2626b12dfa3e13b46ace6f5dee2a820122351005bff18e7b5c1c7487fbc63bd6adc7b9f5bdd2130ef502af9eaec9a2d0457f83722b783a2adbb7a7a0fac8ab5a196b5d6cee0ebf1bee5c6ceea992abb43e5d5e5ef2bae1b303feb129cbbc46f6b5a292324057411a5b555cb062f758f7dab152067d772957ed8ba80e2b6652423cd7899ec210002ee3435b1df4ae09c7812fe3d64b59fc863eca2928d44f5ca0587f914709fb264b84b2111ba7318fe7baae0ead73eb01cfd35bdcb15748f83f3ff65d9fa76551f06973561ef08f677a6581ff352e83704dfdac03c8bdd667d051a1806b8ae1126c9a006d0a797f7fb9cd70b8204142850d24e2f294ea6fa09e3850077c0eab994fd02bbc4a2fc5117d25135556d0331c974074e2bda3cdeb6cbae1f49ac72bffdd9e40eb26afbe80cd972bab0e5341fcc4529caca054905eac16661aab13f8322bde0ff9f5a2b9ed07af83aea7cf9fd9c614e9a08de561f7c7e682dfb023f3acacaece011b519f2f362f1c768e0a5656335eb1a634baeeecff700d3d53042461b77ed25f85007d4a1755b9e05593f19a952ae3efb42ce6d9252b95e406863b93c18d6a19a18a957359d9e41666cbc56595ce38bbb9e205bbce2e050b5b5cb279555e6380d8cef0b100187fdc1d3e86431d9615bb2e2b2e1f4faa6b7560d822e769cdd9c7acce9ad105e40eae9a66518fb6b76f6e6e86a9ec58caea1f72215d6ccfca69bd5df174da6c4fd23a9bd6db356f968be155739d836e9a925df17c211176c91bf584cf670eae8bcd601f280b5b9d0cd73c2088757b952e503c3b5bc9f9e2ea9a6eb3c1b09d460890a16b6ed2ca8fba5299cb1c8f2e2d3e9c3bbecd170219bf0dc21bbc722ecf82e178aee85a561616dcc3aa74794888112c91c5f0d4213c090b193ca295516afb95013fee751c7a6c9b10aa0a85fd20d2000e00a94f3fb154c6d259d418045c9a49d8020b6afd922556d8bd59294201ebcdb25a703fda7c46de4c7267984bf0f367eadafac9261c89046f7049fac047049fbd64f5bff6dad808efc3e7cf1e6301ae0bf34f4474c32980ddb7faa11dd926c73086fd00ef12026fc1f1951dbadcd2c6820a64b49e64c54c1a270401b5b0bd55a4a264d7ad95a0fa15a98af275795fa24da229b25acbc3ee747240b1c8cf097e87bccaa44bb7bbc964ac24fdd0719315b3f246d5b0ea0a596143150dc7e367af4f5ebe3c193f7f79f4e2f86c3ca6a20a12ac97d7e3d338d423a2f92a08e15b64044ec777870c0129076c6d75431f183b224fe8c75048cb57e25b4fc34636729f9a7221d1a97fd63c9fa3431774ef7071f0e2ef6727272f4fc77f7979f2f3b397e35f4e4efe2a301345a6e94f7754a41fb3cbb4292b008efd365cd6bc7a768981254a875931e39f4ee6fddef3abaabce6bd01fb893d0a135e4ccba22e733e9cf1c9f2b2df3b286f8abc4c67927dd14c88dd1f3df60debcdcb8aa56cc29b868b43f191e7e542e28e7f5a88e3534cf948d5346cc7540230bc2ccbcb9c4b96e3864fe40db03de34d9ae5db8a2979a4f8d947ba535e3d6ab6ff357bffbe78ff7ec227937491e597259f4ea7d965fe7e3eb99e14f3eb5e5c4715ea40006d70d2aae391dd5625b8f0e0f9175751b93df729fe9d3a0b34e7be6a0c0734dd9ea4df398cc827ee5b17a2cf292ae4cdabadae9d69b31c4419eb2640a5a1e482110b25234fae19f91fb0b2428109e579cf5c90d656585bbb0fc05ac6471d2c937df5c957b1c8e0e8ce8b67d6b39060060034f742536b1f33681edadede251aa47651cb85bfb5c5c8447d612465c1ae446baa587f69317ba4dba0107e91295116afd8de55753bcfaabab1e6ae77311b531dcb216ba075944916aec35e4324ad58db0ff75ed60ff75fd10fed8b791fc36b6acd36226b86ecb2d76898101f51b483695a30b18bd884b365cd672aceaf5b991e61221bddb0ddf6eb7fccfefbb0f6d6b3eceefa7b4f35bddfe6536de3bb6fc53c55f3b5266a1d745be7ba62dc58b2d3b520a9783a6bf19c78883403a4cda03fb7d755f9e956c7d540340bc1d0754687fa5afd0f9a9401e9def3924f27abef5ca4dd0920719df4bddd1edb65ab52160395499709b4adcc3a73f0d1f93b4f432797f8a229883e7e7ff0c763f51afb4b59be3f2c2b20a583e7d9097ebb9be94aa2cdf38960af27dd86d2dece6fd21bd4ff22bd1532944fe8881450a66697e17cb4ad99b7dcb94d75e59bb5bc80960a5ca9620623a71a842f4942b61b014d5feb6bce28a6a50b1fbd46483b177f09a11d0ca15397958146be94041fb05dc478107305c5910f85f831b1a522d15770a5d03644ed6432076dad6027fc353e18c3ca71b8a04f898f9e43a4ce66cf22996fcd03fb1afde3f4fede10fe08e198b3b4497fcd9aab136817b0cc1b0b817ab196aeb6d346467af383ef74d011b432451fb05b46872b1ae82ad739a35e900a132846fbc1b479b1775d0cf77e2d17c01fa958e6398845b27258184e631c7b44f7025bcc0b4a7b3d2f609ab7c13a401073dfdaa2261f550893a88ad5ee80b82e9bc4adc49a9bc47a343b324defd22fd94fe1c212960f5f7b61bded7cff8ddc653da44122756c01b7d06e5e426d7d69f4379d78ec0c39e9e8f9b156b0d4008179f0945a84a994f0355b83095e37dc3ca7776b67dc50bb676ddcd0c637f1edf9bbe0a6e59569655692d825c39e125acc283df23b6f3b0d2b26a36fd180f5f7c4c99820682ee1b545da3ad85935af94c1c6ec14693ee232a8ec2368d765fc7436432984fcf40ac008c66316515350bd93928437f71d15365d73d4cbd8a82486c198b061bfeb04dd5bc361600c052e0e5cd6366daf9ba06957414a6e9bf8fb82129416a2922f2185d2eb1e2a5fe89e038f2192b594b529334b083bb0b4e432cdb479d6f56be9d2dfd0f7849df809c450389284653508ff9b30f4c37a64b3bbbdcd6433bb9623bce1e9b449d86f6c59db283577ca9ca9274d897a7bc8acd30698910d87d38aa78d8d2a63a89386deb3f47c5d951fb319affae38a9b275897aa44d0ff8acfb5a8e79eaeaeb27c56f1c216ebdf7b00c31094173997da1604eed00c9db83b2e5f72139f5f2e5a62871233b80b27b1ac39b658fdc8ab2a9b71f5939a8f43290667b0c7b6b7d98ba25e56bc66cd55dac847da62793de1152be7ecaa2cdfd76c9ae6399fa9b5280bce2a5e6823b8b4281b71f42a7e9d668534f6dfde960fc04d2ab6c98cd78bace1f0e9570355f154f768a2094d78565cb2fa265d2cc46065a57b13232ed2bae6333693f641f92d4b6b69473754fb5baa222924b82c49a814be152aaf17dc687bdbdab75d66cdd552bacc6c23333765ddf6487ddb9ee4e564fbbbe9e4fb279327dfef7e37e5dff16fd327b327fcdb49baf36497a77cba9b3ef991cfbf9bfde9f1765d4db7a7e5f5a22c78d13c5a36595e0f9bfad3ffefe5ce9f1ebddcdd3584aa2a6fa4b244d921f69e97cb7cc68ab261f3ac98b18b4dbd65365966cd08251ecbcaa02b2b04a252852af580fe6b952e941d615936cc4221ab16eccff87cfc9498ce44a16c8f6caa33b9cc532e5a7fccd438f5b087de620d4764a9ce66b2b9fdc73f5e14ec8fec79b9b8ad64b825c1461da6533e29cbf7093b2aa6439616339635354be7f32ccfd286d743d1483694869175b9aca662da33ceb29ae5d9941762d64bb539af387b7574663eabec8e1a55b28f9747cf5f1c9fbe60f32ce7068512296a9395d5ad32b974233515e70e06f17fdb1785a65ebf2923494bb186dbf2775909aa65eb2caaac687ececbe9fb5399a513549fb8afa2894351f191578d5c8067a7672c2bc4a9632ac967c296b5e8459c909a4b13d18aa7755908ba2c9b2b5b4e69185a2d738dc26d40f52d5191a0f5d3da9c02bd6e7216e2b32558394f3ff291aa7f504e9f9d9ebde1b3e554bdc44b3ef74e1ca0b3938313514bee2463db21ee4a36158731bd94489f2f9b65c58dc17ed8a78923a37cb52cb0d251ab80719a4c4aab72c68792a4aa3d28a9b7f1cf021d984f6427bd3f88ad2ebb2a8cb185ea697b9b1d00278903ebc8eca26518834daae37f9559210b86d26227d3af1abd8b8be2e2a2e80dc40113ff00235adfb403db028c4694e28195973cdb57b3b1d698c0064d1b99e0d9da2c69dac4f0a64a17fd5ebf97802918379203349584f506e27f3d64e7062d700112ece784f5186a51f35c59c39e4a0713591d7e93f7d6b3a22c6eafcb656d1494eaa9b828e180a5cbf6c600d6e533f3d2f8596e6fcbe3afdef1eb2b7930caea7ae8b1571b12595b5b6c030c207e1a4cc91767f5c02cfbeab1a7782a2335fdf372a151792eedef0daadf0d1206b102dbbe0348c2fb9adc1a6121e476701a3cc3d298df9e5b822916ff0e7d21fe2e4e9ba902bfc1aa7003a88af60b16d52d48dfb09eb2f992107ca3b720db175b0c8e327065667bfafb0ae2ec146014600b7e9678da4588b2eb60e0df75bbd19b80a4e37d570a073fcc783e03a3cadf72b82768b834cf5233d293a1fc0590a94fac2af4dc37d2ea1234ac2e252daadb56e2093c86ae9e7700554d740243ca76aed6a197a809247205c5fa4888bff1a9888015518cc8f2ad3a06cff4340162cd2789db6f116e01f6bef5b1f7116ce56fc135e2ae173511bd33fd7b667b9b19595272c2e6c7e94230bb70dd518104f2bb1890dff940062bf85df430f586c361cfc77fa7637254e45961056c003a2e90a07f8f4017c7f57959cc326d142f6b0cd1d7b6c97cdf793b7ebf723bcae9277ada6521268ee0b8ef8633b327e96e582891f4436c7d7ff0d79742e00f510412b7b06d43ddd02da8ffa133ea7f68417d7f7b9b1d9732a384b15b20efdfb4e2dabc57d44973c9ef5fa7d2ec4bc535b10188850c58693f19c3c26bce7168ea5c6cdae12e368df388c0ecc0fcf0a8cf2af62561179bec625390af8bcdb200bde2a5d0d5f028b123a60f1afb066155cd61802989bcdcd45154171d3a84ea93dc593f7a57ba23613f5224cc275a8779990603b88f72883f4587f85397219454e38f01beca41761e27ec3dbf8d0eb5f3588d05b666564359ca569357300609d77c1a08627dd5b50040b16f336e8dc30413d7eb3141f399b47bfc5fa727c743258165f35bd514aedecf6599f3b4f0270c3fab19efc427bb1345ac80a6a9963263704fda544179e17899e7fec0f65ba090ed15cb3c87cd5f14cb6bbfb9fda680de8d03bddb6537bcccea60bfd96f6a8827e1108648ed3c5163f837ddb9b8e7f4c116c5fa2c8bcbfa1d92a7a493a53f3ef8aa20c03cc35cf06916826f87eab707c16f1602550c20b80b21f05941f0554110650876028e00adc177f7e25bace39d146bcd0f28d79a6f0abaefa3d07ddfc292ee7cef78520f7bff13f029713e11837e76bbe0464530133f3c3d81fca6a08e5ec23b3f40d91720cddbb75ef7e693eafdc7800f32bdff28af6f6ac76ae106efd1e3b21047d69f8bfbaac6fb5374bc3f11e39991367a21fad8e96dddf06b06ee4249b7a757fc3a25b91cbf48c94c8f11440183b1fb98e630ac5a42c0022ae3ef2487574b38e2d7ad92c670478390a33b8115da352db8869af78ea76f01e9c465b19b092d59efee100be6ba41a230bc57a7699e563ec8e96c76e02e2ff0522d47da8d1d81dddd9582c6ee6e54d2b0cb2120ea254c6935c84541d81f0092b8de449e44271208c532a6f13c9dba893c19ba6fad338e48c7e842d87d425e081a2562cd2c421465cbae17ea6da8b6b2180087f5d896601257ec693524854d7989744764543cde0de46340ca77bf25d50b70537f1b288c02f47e1bdd50fa2ae85fa5f5ab65de6442ea3c6af8752daf83017b6a6e898b8ba297b0ac98097114de1752a33a50ff1848be6dd5bd3288299d5648cc032d322f968a85e88efbe825bf1b5cf210b3df7550c5ed7ed75919b71bd720381d25c68dd9caa13aaefba93f327b7ebd831f653d7603d6239c6944bd80cff3f76de7d99ed4762ab7fa98be2d88fba67dea51fe6537d02284538f88f70dbc73959e819ef852c0bb6ad2aa37edf45d0f735e5c3657d218eab1905bf69965926505d1ecb312aa7a3d024742f4580f453f4651f4e36a14fd48a3080920bb3f92028846122f96d7dd3686ea84da1856deea3eeb3f4567fda7d5b3fe5387d3bfcea95e2c9b7b5ce84f1ec7e6f0e4f1ca393c897096e85c3f79dc7eae17cbe64bcfb49592ba4f7b273aed9d36e5fe0e79fde6a5727300d5ec274ffcb0936350f4fafdef5b56168e2858600d6180c85532c78b4f0d2f6a4a1ab1250ab1bbedc2c893dd35849127bb5d84112e0098b10792491c774f4f392855d38ef2c54f02be38c4c993550cbe9de29a7cbec7e65333224ad58ca20cea9380410d38fd27df76e4f49f7cdb8582d0aa1f8c9bdf93e10ff9280ab3740585dc2807fa64f5c3d393efbae0ecbb0e387b00a60af354141ac24285822843f9643543f924c25042aeeac9f72d5c9546c0efcb5c21de8a425550a63015e53f9face63f9f44f84fc45c3df9a195b952b8fa321e8b6252e8434357519888b2994f56b3994f226c263e363f763a365fc4b35c14ca40d8ced9e354ac2746e04611356e3ad7d64db693844d27aafa3bc32358d3e43b67e6f697ec232fd8757a3be1cfaa2abd4dd40b0d4b0b26e3416a833796cd59d6b0ac9689bf5859a9d284492bd49bac56566fba6d9eb34cb030ac292fb93453adf922add286cfd8e4d6fc282bd1ab36549b59fb3880163933089b6d89f1e3aab0a7e0475bd666938559f33943399403ecf367d6d30798c2570a51c5d3e9959cafe0a8b2a666e54dc1041ba76ea185b6072d647bc5bff119bbd8fc8ddd5d6caa5d32a466aff68f1c0a4f577e12e448fe232047bf89c566df78aca20458f38adadcedae474cf068ae30a85fecc48a978dbfeacd152fe4e494e197ce002949c42cb227f07e22272cef6cd95702614844afc482db374535fc37e8eb37ac2f0e6ab08e60388d1fd02a3ec8d6967c84c4830c2bbec8d329ef6f5f5c14db970abd4c9d726f28c7dbf76b62288d141be64b19258a157db41374164a0a6ecb47cfc5d6163c187579cdfb00a881b50ff6cc83771feffcc05ea7795a3459c5cef8f4aa28f3f23213544e1a0b3fcb7326abd6ace235af3ef299b3d47d195a063f5bc83092ba246126ceedeef031eb8b0a179bba4c8720fda38aea9adeca7db8acb9b20c96c6c3fcd3942fa409b5cc9e90499368b9231b37860487fd4377524e9a549c46362d17b726b4abaec9d2c682ce74a8551b69553a2697d5e5b6b66baeb7b51df3a3dde163dbec6d91f3ba76b16227b72c5d4827f849ce599ede8843945e565ca54ecd0a99c64b6ef2ba9c373769a50ecd2c135b62b26c10f20c9c598d2a94d284fc62f3d9293b3abdd8643f3f3b3d3a4d643fbf1e9dfd72f2f68cfdfaeccd9b67c767472f4ed9c91bf6fce4f8e0e8ece8e4f8949d1cb267c7ff607f3d3a3e4818cf24b1e69f1695988520d002ad7a49d929e7088c79a9c052d176b329cbd3e272995e7276597ee455210ece8257d7595d2bcb934252799667d799f63c0f2737c4e6dd7f6469cd9a3acf26e31d65b27db1297fca88e4b09274013155a49300acf21b3b383a7dfdf2d93f8e9fbd7a317efde6c5e1d1ff4ed85ff96d9db057bc5826ec6d93e5b5b10bbfd8fc9f49bee49276fdabde9e9615c7bde9f80ff2fcbdf8b04cf3845df2e699e400c447f9f3b9f44739e637ea4b567b1f943bc7a1bca5f84cf6e500180eb787c3ed69797d5d16726c65aa6df3c1b27d49b4d9ff4cf3b4ae25ce8086a35e2eacf39546df703c56ec4bddb79d244cd7d40e4bb6075ba32f7d0b12e6e7aa862ea2aa8fe134cd73191023617ea3cf9fb11fa9f1819dff9216b35cb9af59d72cc93bbc4e2b6c0007bef6a13d2df39dc741c5377c2e23e5ce9d3fa8fa8709e9aa6e3df1f7477698a797e25290112b8a4be59573c3597d251d4064d24f767365189a9c4fc5e193177f562b4f0c7e23b687ed319d37d24547acb23ce3cded229bca0451133e4d05312be7ec3dbf9d946935d3d6574376ca1b411cfed9544bfe4f1966daf6789d16d962992b0065dc08c95bb09bf456c12b689cea39554a26095f53b27a5a9579ced29bf4d6d86ea90bd82d879ae873314fb7918f8abfeb6979918420eaceaecc401a67fcd3824fe52c268a6614fc53e3900661eb4fd25a11b1699e4ddfdb3ecb4a1a05490935d526bd43f6abe03cd45cce4a07a5812d5191cb9a92cd782320c8e66e350ab62c14607cc6c451a88a34d758174d049c10b2abb466132ed9e3198f21cd7478cc3f35081e9021571c53e3e5f74fd1b538586fe4b6e0d53f99d552a857677f04b57f8e7433e4e7986775f35a1c352f64b64c3b30364e890b9c1ac9e40a15675339dda543fc0d552f4a1da343d5b43fa52740799d35a04636675348e20eabf25a858112cc212a32d397f68893527091cb85bc6c125959b90468f653b28e381d9fe4668e216ceaf06b1a0b8698f507eca9e260470ed63dd4192f960e1f045976984ebc91130f9f3845cdd402234ed16a28e18abb2ae28212ffd5d11be4b937110c4766a359ea39677d341fb5150507e843a34a284a8ad23b8330e42dee96ea16055d2df3377c3e6216731e61b6bd2710fd89072476df574749495562e748d73279a2dc69926cd5bfc4d9975bdf8a19d481c27efdea92163c78fc38d55e5821a62986ee6d9c0edd6f54cd4fa486f79ff478ae5f575cde3e1c0fa7e558bd15ad9420e01db09ff66d8074dd5739cbe69977a51a304721e3d20774422d11c5cff4ddb40689248f03a46a916120672396d5a2ca81fe0d719a307f20530bf6e46362147cb1fb66cfdb947ef7664b6820002eae24d3f15c5c3780c1005ffb9124556a085551cc5379afe80170d62aa41c9ff14f238d053055b35023f74f3fb896ceea65e70c8f43b8a5438a1126e6f7b636debd60cfb9823d4c78019a60ef087b1f71ca051f6d0acebe0ea42a6aefc15585a365b5da836cdf679fe18ef4b782e4e587753ae747c5c7f23d477b9cbc867492f9c40e98c019c5d0ee4f2944b79a9e43c6f6b6608fde73be1032a8102abd7b51f0738ac8b0c9b261d7520c4f6b76c385a4cd85a0bb748740fbcfe9e87dff5ad686e7aa9795e0627ab590c0e6ca775bf47c5b4c9d84acc2f92374ab8dd01d7ff686d708f43370c80e37888ba67588b270a74b511bbb4dfc5d557315c1a17fb179b199c8c0f161cab4e8b2a921886b807f847ee96030401233bdf54c9d7b4c49330c1063b0910c127452a856c491baffe45fa735b15d714ed3959c6484d793975c6497c0e60a25b501659c0ee11774a91588bb0e8a5c989ef377922f3dcc8a99d4397ecaa4a3b6c0f7fff3ff97d209ff94cad3a0ef15a5be5dfcbfecbd0b771b379230fa5720ed8e45c6544bb2f3a44793952526d64496b4123dd9b9a2af0c768364c7cd06b7d194ccc4feeff7a00aef4653b4e3cc37f77c99dd138b68bc5128d4bbe4881951ce08bc72ee172e8450080980dcde842cb810f9b8600939857cf06459627f99d6ab6852382fa74e67281647f90dbc7d898fee701eb009433e98433a6f4848a62b4d78453a7030393924fb3ded810b5910d5dfcfe4c7bfda2f4a422c8b1f3ff6a0c8841fb38d6f0f6e6e7337cbacacc32445a01e8929c3002d7939855ba0d09c0323fe3595306ddb6f1d1edaac9ec1235b862c9469f6ccadd6d8230c3e652a7bcf302602b7f72aa5a57d2545a71b4c0101eafeb4050d6e8cfa88c92a7affe0b25b57a41ab7473c6c643927ee6dc04e1a598b6c9c440990affe879479caea559fa47c3ece4b06ea1b0bcedac35bc73fc8cb69e13e3f299fcfe9aed5ef28be0d7dc5404fd62382cb472fe3e54e4d0a2e18a1e5cacd779538fd1d9599aa89490e03a6fc19b9673b4541328eb206beac042bee98e4d40b7e9f585abf8123ddad01a5884499a3ed6e0f45071892c5d90f4cd8d9900ae413b918bd3df096d29a148c8a9af0d2dd1a897c6a8d7dbc99e984b30eb4b74348ece9f11b4733463580d745aebd26ccada7717e62ab137e5f7a2f46f846cacbf396ad8e31d9127c4dd4efe08d33b50e0f41069b1c5d5d5dfc7cfbea92bc7f4f5a3e9e5cfc7ceeed0b0eb0a8e0df1314af74fc4bd87c3acc6b3665b52fb25933a9efc9ee01e9938326626b1c6293d0f9b803f4739d6c4859a8c371088ab507f96af1e031429f50af31d2abc5b38f6520e465c080296fd96ab980478c953546325a147405770eefd2f3655df3724738625149812b9da1be5a7809ef5905823b957241f5c94bd936830d0145257649ee518c0b8c4b5e0b564c54d5e5c2e99996982f67c117779c55aa55c576f98295842f21d80b5f5620dbae7841fa9dc4076e0ff02d340dce8783ab8f0560d99fbbc34a96f3fefd3a6e280a7e0deeab214b0ac0a7ed8569e1811db147a49fcdf01340d746500c18fd1825b70fc1b22670e09bd9c2ef89a499495f9d424dab29ab8d0b5fcb13d278e71fb898ce340d83d9b23a436c63db30d9be151ff9b952d5226ea913c3c5e7272364cc867c1c315e98ae820a28405f38aa5666883f67e754920c7320164cfa1e6aa12d2fa1918936aaf5711e95a807107609e6d2f1e6aaa6d4226cf2d6dff77fda2c486e7f7dffa7a9d414d57cf0ad876e6b9d474d5d00a35e4bf864880e26edd11b4d6563c0e377e106df04756a7b0c62aa831986cc1c281155865ac9bde99fae184b1dff2d4531a1f3a9d2c27cf8aa7f39152073b16ae82a3f82eedd4f9184c53175489fdc8efd4b94ea3586b2daf05edca649fcd00911102044028cceb66595a8151375e736ed919bd1b6d77eb4fdba1b86ffd67bd1b1ed9d0c2fc1308e90d21c409f34cf2244be2aee7d581cd45754825759530e8d9aaf1661bd578ba01610925e2d242dfd5a0e0af4eabaa8d1bc9eea50fb0d60f8d8ed53d08a1d8910888d0ea24f423db4aba4680038228a000aad6c5685aad771b1d75d5413ffefe7bc28ae58caf23b064a12efee4a22d157ef699af3722dd20cc39c3eacd855f916dd36ac0ef2caf9c83b368b51434ced26acb02df0316b12cb4d7ecda9df73865472b1ff0ecaa369e1d66eff499ebd4236cfcbf951b13b7fdfd767e2500fec8c1605bf3fe6f305ade48d111d07d512d3a903a62ada735fa212003c644935f45b9d8729768a5e1b706bdbc186b630762c9b40882fc0568cb1b2285870811173f2f99c6539ad1998374c78c548c516342f6b223839b978497241689a2e2bea09b03b05ad99a8fdb7b58b84382714b0ff4452edac322c804ad67254e62841f8a1a273b6514e5d9cb5bbc89acb657a81ed8163b1f2874941a796e6fb045b890701b26d56ed4f79d406c2a19422df258e706705923d6506819838e86eaba92cdc4857b8c630a21bad1b12775d2fc7d0432616ce4d8cacfad1a3358b6ce429086f886571959e5befb25985d67f47b2e30596485b5613ef77d9c48476d8214491f4ea277c3211ac1ef2454411fd8281c628de043f7afcbb2509fdd9f67c91ab2cbdd0c32a617d741658f55a9d83aaaa8f2556d54c18c8cedc943c53d2c5c5b2666441b30c03aeaa5684a9bdab3961104699dc33428b7bba1218299588054d992f5e0732541fdfa95def2576dfe906f38352b58a71627fc7aa3de775cde75e4d2cf21622d1497dcf09cba64c68fb5357bc38e11554a6552e78d9534f049852e2c255dfae38d1420b8e38c8802db600f4d8078ec7c19c77c3038e4878867cd1e876d7dda25827ae58a431c1bf1d3680e5b107131e12dfdb2312e0d28ab1928ca1973ea1453ed5bfe466c20e8218c99605567926f4bb07ed1642cd029d9906dbb7ebcdd23e1b56d7e06fd95f1b0b6d5f59cd177a59355ff86b52059fba203d9d5d6f350d75e1834f95a22e62ba6e78325d23d845837a0daac4d317362a91a652f4bf1d2b1a8fa041b39f68bfea93d35b0cdfb7aa35d7c94ddc07eba3e86db4a9100e3f94296d1ca6720d8938ef99091a3a4b6d11fac464520db2f093853e31e953cb6e3a8fa15d2b48b3be6f69d231166f86d1f136bdc1b0fca1021ea411d58383a462a02502eb8b92df9b3e09af8cdeb7495f9c96197bd7a02ea0d4976a79e19a01d29085f1ee4b7883debff786f92bd94721b267ad15a1cc42597eb7e7f61315b0ad035079dcf139479818672e9f26eadb981f0c89b976b29b369052abb9d40364a0b3603094d9509eefe5ccf151bece5e01e59d56fb41b406e886ef566016f03050ba02fe8d67e574dbb454096467fe35dfe8fcf47c7d731eff055272ccd8fba0459c6d7bd7ce1d6c0c11bf479ba3f6057cc288d6e09f5f0c072894722297e5825c74caae64bcf35a7b308c1972d3e8908812ac4e3721f291409ddc1db8cad733be9cce1c85b5313a019b936724277fc5ad3296258f1fe7013c6fcc3ac2df37f9eb1e7900e4f387e045edcb0380d224fbe3b75d6277215855938a4d50972f8cdb465e937b2ad02784655adc91d2a230f63e86b99ab2fa18a9ffecba5e152c86145cc6c3673b689ced68301d34603a82bdb124905bab4f16ef86fc1cb2ce74bc2f764276f8586d49ccaad3309b6f7d43be203f2a110af87f30c4decafa6dceefc038024d45a6e058abbca879895e50e05d565345eba2f7ecbb841c9137f2e2bcf1c3b3ce192de5834bc432afc1df0e49672a300749a23af9af05ade8dc198acef91239c939bf03871aedd2ab62073a7e3b8ff7760fb01f6356de02670d6985853133740f5777ead99ccbdb638be388cafdbe163937457d71df8340f65031304d3556adc17cf6e53b6e37f0101c55251e0bea3df006915d72d0ece920601cbdb9c41043e869d779f0658991136d73ed9116b3f51e899fe3834828e46d2c60d02639b45e02b68eec68684c0f5b74047b7bdaed8dd954542e310bdeb7ca6575ac05bff08ad41cd851e5e98682e1e42305a51faf7bd854e3b0d9abdae0943c15be9db4e69924eaf16d6d430aea637b746d27942dda86846bec323f9c0930348284d026019b69f9b1478fd0cc3c57ef9d242e96e58457f5b24469ff45e7bc4b7819a43043d51b192f6bfba01654f4c82ccfd0bf9291d1b64231a83f2598621e7c1ee51b1bdaead2d274e519d7c929cd97e98c40e650a327c0cc7f60c183c3c08d06ebd56b3e6703d5858333d62a8dbc5d7b7897d7490b5cf6f721d7045df7c1096eb4d00d1314cb2d168c56e98cf0b258a11a44f3b1ea644baed4234b13f0a3009f624d25dddb2c3fd089c6210a8c3044087aadd629ba24a4cb0aa49cda3521966731f6a04044039fea6f12ce9bfb3e2185e29a487947d3928dd81e4a968b454157caa0a2e97a0ec90d12531ffcbbbdf6680da655c206baace4ab0f18c8925c115b910f1df4d33bd6da4e2fede46f8e2b79108ec621f330c6be175542453d377654fba44f16b412ecb4acb17e228a3c659dfd1ed97dd2ed9183fd66448c362b72ea64516c3538f114a1b682297a66330c222acec50f6ae08e57b1eb52fbc9242fb34e97649c8972a7460c23a9c1c1f55709392a4087844e74e05f0d6c51c1f902d2f1319a113e713b83d833c08269afe8949626868b2082f3123d7b30b1205eb14aa8eb906cca7bf946fd8e178fe6ac222e396607f4c62b473df5ae45d92fd70edf13167bf9065da6bd71e45109e2e739f3861149a4b257fc109078953d4029b926947ccf6da10e98573aa605ae66c62ae661b146f7ee29e8c455569bb0290c3bbd47f265c7dd5b9d366d30e1ca6a3ec4524ce64a348251840864ba54648072d19de7e5de9cbe53be317d154d8abd4b19cb0464511ccb7a3d8be61946114ae251825ce4d493bdf7c89cea65c92d431cf557f929dc9e397d176e30d6fe9bd387ad9d9791156b33d130cacf69abefab2797b4f3748b3d7990231f0aa76455f80fc188158446402436cfd8e96e6dc90a376e93d7414caccfc6e37f060edff0f79abc6040941882d4abe21d18886fc6347dabc34754f3bc84dda56ae69ad4b442fccf244e30bd38fcf3fd2c97ade06fe0bba679a9f7536e9c13412b4c291a636f15cdb609036bc1d367cc032984f3911cb880f3b000c3135fe4814420eccafb0ed287109c2d758c763b7306c8e75e225e88e0228743d25359db135a92bc8450c10cde704d69c21ba4266667f94c7f9ad3776ba62d6b65dc7929e05dc737bde4e5ae861b68abd854d59b83d5b0e8b17b38fb3d33b2af5ed98ae01c71033dbc8ee39e38eed76d3cbe538260c1889a90e4077d29878324d409b4c510fbf6cf18627fc610fbf78e2166acac85ae0225a52cf9e85863cfcf2e8e7ffaef5717c3418f1c5f9ca8ffde42718fbc181c9d9c9effd8236747cf07673d72767a3d8cc7fdda8339a809b82100eb79a1edce6a3a05e37052d3e9b15e445bfcd045c3aad535fc57428888edbfb2b6c2785a58cd1639f5e4c434d31a58cc2b33d81bb5b17200346bb51dc50ce863a166ec926356e1660e0f98d38b8ebb633dfbc1ea3e2a36e93b6bd734b0134955476098f0a2e0f7125a8d6d31a65a2cf252853d3501e576e50c779d7a4a5e322ab1b39556d855b442635a8c6a25b1125f22adf55c77461488ec897a5530d1f7280279c02f0ec8a10730a3edd981dc79058672316ef527cdea4fd6547fdaacfe744df52f9bd5bf5c53fdab66f5afd654ffba59fdebf6ea9086f07f971c5844bfd9d87c92cded750e7a50aeae7edb9467d04a5ef9a0fe65d5acbea84c6d4410419b333a6645a355214b653bc021688c52cf9840eb420978f2a9fb08e093ad2b062def689167008c4b618c1405d317411840b440e8009f33f58bb3c6bc394efaf47a182cf355b3eed2a9bbdddb3658ec362f67acca6b71c6b9601db11cc32dee110843087f2b14a73f5921293954f1ee154ae9d836b612deef66e324e5a5a8ab655af34ad287aa825ffbf616eadfde420dddb96616e73c5b162cc18583a0c35bccb31602eaab3f09a83f09a87f6f026a03c2c85639b978e9d5dacdf8bc51f3185fb6070923b7cda0aa78156fc2e0d34341615b0831a05efcb656d8d2d26659e705b6d9fbe20b72a2035292372e4d73c9ab9a169dee1b7274794ae6ac9ef10c44d018f8f05d2e6a2d0403728d962557ea6e6c4a0ec99623f7d1dbeb752f2fb16c7d35383a1ede1e5f9c0f07ff33bc1dfef37270adb50be681c016c79660720292c7ab74f8f8173f85b0644df9f8979bb76cf5da5375ad168c4f88f3e9908cb631faf568bbc99a96ec1e4fb483e79a5c5e5c0d8fcecc0a8ecf8eaeaf6fe1f4ae8757ea858f29fc0353320cc0afe55743506dea179164aca6a06dcc6b81116c81962b210a00add5c77a867155339e4236a064ccb3155ed157ca4068c64ac09b46ed9557e9720ee20709ffbfee8a9a426403d2998069282df854f4c8822fe4d5153dc2ea34e962a747e50a493d483a20c842c27f86614b7361dc21eef3a29004a384573aa5b5aec2602fe56a685e4af4a2eaf332b202036d1ac23e3dd230f6d01a6658437f7b546180110d3f2ad0b0c4e62b1569d864636a0b32dc70419f51f1922f2561d44759eac8b15f6a77d9c6a96ee86cbdb7472eca62a58cecc81b6d04f98670f93cd63ec4cda820739c1286f31d57fc5ec8532aeff28a9773088c098a24b622b4b26a55d7e74e81a63970096375c518c65ea5f2a0b16c969753418afc2d4854c51222dcf38abca1cb9affc0d3a578939811e47b5370e46b34c4b8ee93b09572d6f2a116fdbd3dc0e7bf0878a6339e8abd056c9c482471f71f207ddb1d2fc7e3222fa7bbf5ace2cbe96c57d5b1d82382e7e4f122fed0100bd2c0d1b6b9dca36d5969cbd1dadab38e20171be33434e07079cf1097bac61cfa58b58d105450046cd486a30144cdad8cc213c8fadc81f5457ed081ad39316d31868b3ad63db97e6cb6a13f9abc79accc8ee5b23bed4b6e31e2712f9e565e43fc57cf3ce658ed2954f5a59d4da008adc697a500c500da4e9c738d5f3efa2c36f20ab6beb0568a2297016e6a08b4f2c2295c3b0accb3bc33711e49338e95c4584790404413aedfeb14ab813d41c5e6fc8e75225d5b5b39cc0f9165f0ae47e668bbebc5e71233c1fa571dd9cf7951bc2ae7eb6f50fbbe07c6cb6b674d2c5e58e288c6c0e2a83ee7195b7333bc0838912d56e7b4e1e2a317b8ddc0c7befe87f6d1f7256ba3ed2cbf534c1f21b685034a34cb3a8a3257e498aeed0350a46d3bdc0467a4f206444e67d331540f491bcdda46289a1e9fadddfa38d0c6b7de81166c748b54c1f5722c9fe7d3b2e6e60c3b0ab17ca13c060d6401d5a581a617958aaab333068acd67aadbfe4e052bddcc7e092b2be325d5526dbc4ee218e138dcda713b277308fdc68bbfd578f1bff7095815107d141a46e1801b5845a9a30c4ca202b8b3d016a262401f0edeb6c1d73d643eda76f81def7229ea3636442216452e0f9a8cb6bb3697d89f32a33f6546ffff94197d56a5dbf1f5f5b0a2254623e911fbf78f155f2eac8c06054eb5f9bc3b95dffdbe2679999d5cbc94af79d8f07349aa7e62ab7883b76cf519a554d60afd41299569a351a0531f9f0cf58f938ee8e28e55055dfd1e1181eaa25546a0beff1f4844e4bc436636a66c7d12a2344295599882b60f05ea862707090ce0893cea029ef4906ac55a9b66f50083fc2c2314f1002d947ca9e668b084dd99381b60c39a1705a1cb9acf69ad2c984c8cde85dcea2af763fb1c5f5fdb004173799b2cde98719e25841682f7c89cbe45146569d4094f9760b3a2c207a7b4743aae2bbac02a242f459e81c4ad739753f28695135ea50c0519dd240c9491b19443a862bda98ac4d0bb27df660e2a22202e14a555f0d2105a50d30b3616572f43bd90daed6964915cfc63707576f44f248ece87ae0b604dc7a7983462df1c5797f45bc83eb1a0a5a4fbe2136a19cef4dbc395779b5161dac2bef3f262c14a749c84a0edea67a41278a3983a2c0baa1c175c38fda89f914ab61ffce555b1a8fc64a9fc5fa172b3bca5998d7be89785692562db1fbc3ab13310fd602c37eb7939286bc80ed627b18d54df59d627913de4e5e01d50217d12db3dfc8c6d1bfb56e773c697753fb27d0e6cf8b7657d50d6e7347d9b557cf1922f056b468bfe98cc0263d595660c6e69e215f969086879b1ac251280641db052154f28f2c56beae20a6ce296c400d183c3c0b23e369c8787bd68b7381bc2a2b20170a176a612468c018409618f0cf7e3c794ca85924d19efe4b18432ed7885a853eea9ed160f03aac198a78058f5f31b9da6b320ef7c125e1a28709618879b13b582464e998f8399df0106b990574b390ac0df9b1cbd9d1748b5871042981c12a6a2097b5540d7a36d47d59e267cc1ca6bf9c1247582c5f9b8381730ebd37238cb856a79519d3091b232a3405a34fb430f1c3b6837f490325e17ce2a0a9dc32aa45ec0bce48dfcfe460296ff50f389b9aee491569881ba4247ee46df405adb461e2c2b6b27c926a620c083bc7bb2dd681b1ff7d136ba04a865ba11b2b56b57a142bd156caea72f3aceb98093e3167ccec5359d33a0c3dc0a6efcbfc06306c14332f13118931d3f7448e1fd4d297a2fd61c922158239c1cd2835082ae4608591f83401ebe661ad9c5af599882c6c3908f1eb591b78ea0632b5ec53915753fbae1a668e36c9d2b51212936a37739af484782b07cb604d0a0bbe8878ce0b8a053d6b59db1585875fb51d47c71aa5567974a559af3b213cb30b411426cdff668e6848fc46b0391d285ecc9476a7ef1c7be562c4117031ba1fefaf8e872a0c0dcef7b9357cc3d41a5c0dc35120606dd41464f7b9ed77442ab9cb077792dc08b1483a075dd335873922ddb1e53f80eee5885d4535f070a823b6d7b206b54bf1abd6eacfbe533224abad822252715a342e23fae95c1b45c810a9650952a7f42eed98e7ca001e7d5d5b2589182feba0a1517306ff9016e99afe5b40b5cafe86c849b8f029d16182b48d35ace086ddb1e2e7c29ac81ca2d4dcc4f371873e3d905200a253735c89295684e65a05149f035df56c9a6c66a462c1720c92819647582aac25169033f395f0af9de14055d08665f305096ebe54380035e329df01f52dcdf41821b888b20bb18332fcdbf19c5aec2f0d09d92230f3164efe0ecf93dcbba89177b4e0dfd735ecf6c0f02d2dfc166698e54ab4993395d74023d74283990ace38df6ed681921599662964fea4ed883a6ea3b5d2fca9bc6ee5af475e872be01cfd9231d88bcf9db871eb91ddf841ce9c5e5e0fcb55961b4cae9f9d9e9f94056dab280446ec75d5700ef4caf0e40e830cabb0580e6706ff23c69856a6a9b30c0e1f283e5db3a5aabd0275a1fa33f993c2d6b23b057d1a8e401e1a499f6e631faca34b3574da410db0fbdaf714182838416be32cd450c8eeaa6513fa4fe3ef4c2836a8ba8a1fd42fdda51a436f6f4594dd4fd1116176e700080cd5077ad08d29ff3a2909fe37adb3553f8c8e8efed7615eefbd6f63090f7ef9d10eadefbd7fd883ddbc83202e3706a63034b3f6f7dcc960269d10940022c61625dff4b0e6bad89c1baf98771b1fe6bb11c17798aaa18264c9ac02fc87f41c6f39216f8db84996aceac8530fd88081f2a7c65c66433a4b66d8679245a7ec137ce0be7eef851aa20f0bf2ce70b2f28b1497fb1719c760892ac79ca8a4d40eb37664e2a9831abef1973cccfd0680e48a932d35a0b936edfe9d8178d343ace4b22590bf0b7919c19a4bb23a783264fd414eb5b9fed16418c5363eb761d9006165c9e9c05e50070d68aff7cc933b4fd7d88db8a4fabc9e2363a0fb93366b6af7a2ba9aa65cd1164665490593e9db18a2caa9c5779bd92ecbee3c64fd282df97c21737980eac8aa4652d108f00739af0aa33dabe314d5fa3b2d9ef58e507fff86e6b3a4637d8b05708dc184e379eec2dac96c08f4e4b52ca60aaf12efd4ab10e438ee8217c1e21ef3e256990269a8f7d6ea0511c69b2816077468533b95b9a38056b990857c8fd29aa818d1403f69d73e7f9e81169dceb3f4e79f096ad2499797babb7d0a1363715f0afb5248afa57fae7f5b01a2ca4e59f1f1dff74727571d96bc24fd0791271c99474b4112d7b947443fd1055a8b9665131611ec633d22644789bba0f90a53e83bdeee285d441fcd619948de68003f9d29ee5a2666021b60d08008ea745b8a716bef78564c28fe9a25e56cc1a903981eb1e18682e7732e3f765cb605e6e74481ba9e5cf3199b41bb6da15863785e05a066eef98d3600b824d3af7cb117a2f02a977cfcfd9096e29a6b60addf0372fb026ceafa0a246a2d9d2547a3d53569f99cf91748d8db611416a80e0ed139d65ad87ddecb7fde4f17ff1f3d738ce4d151ecfd0e86f5723a0108f991870b55a2bfd79f4c8143a98d211b6c7437b78fb029e290d6be6981c2116fa73c30ba99e919657f021d0b6b0fa00846d7ab95be06deda9b79db817ac52cfd5ce131245372f9d1b45547b86844cd543c2f166fcd9b5b761a39bf000dafbc86d0826d6aae171ea3870bce1dc3f0a93b64d2d20349c2f31398fb1ee31563d921c0713d906ff063aba89d6dd612a6d57e3d6586270215d9bf0d86d8c5ec2cd6c8c556d65646cda46ed860d947a823b8fa4e893df3ea8f28692c36b158303af820bc1de07e798bc72240c95cf992a2be8af2baf529356eb93a7fbfb8daf51db1e55cb40431823b281b7c821ca85dd8f1ebe591be5b4d1dd4d530f6de323bdf67812bf0bc72cfb7259b136d36cfd187f0037f93dc7dcf9ef7c054a67306da665a6d84eb0df8444cdf97859f34a24a3726f0f421b5c1afb56926388bef18a4c2b5ad62ceb9149c5182a176835653dada65db04af052d92283dc01fab226c9b930e6c0300d2a044f73b0c2d07707b990495e300186d3d0c368fb5a5b116f777b18808c163a6e9afe66022f544cd455ae8243990c51d093ae626d75a10b65ea5d73091d3d98718fcc79964fe4bf0c1609222931eb413fd64eb94704c8aad0ee9b96d91eaf886045217bc96d162b3dcb9e4edd0726c435f4861b07e3dfcf54d037b3aa5c90c9b22a73a19c17334e0487517f6169ad301774e3465929339478f7cd910e678cd031bf63b03c048c92d779ca5456ef5c3866cdfa13a46d2463a6933162e48bbc04dd9c5e612567236a5ad6392dc0b70bb432c1ca2d740d5f0cc8f5c50fc39f8fae06e4f49a5c5e5dfce3f46470628dbd7ba189f73f7d93eec1ff5c5e0daeafa1b78b2b72faf2f2ec7470d223a7e7c767af4e4ecf7f24cf5f0dc9f9c5909c9dbe3c1d0e4ec8f00286752dc67f80e62f0757c72f8ece8747cf4fcf4e87ffec911f4e87e783eb6bf2c3c5153922974757c3d3e357674757e4f2d5d5e5c5f5801c9d9f90f38bf3d3f31fae4ecf7f1cbc1c9c0f13727a0ebd9d5f90c13f06e74372fde2e8ec0c863c7a357c7171a52cd42fff7975fae38b217971717632b8ba26cf07e4ecf4e8f9d900873bff27393e3b3a7d89507672f4f2e847b46dbf18be185c415535cb9f5f0ca0e8f49c1c9d93a3e3e1e9c5b9dca3e38bf3e1d5d1f1b047861757437271857b24ebfe7c7a3de891a3abd36bb9413f5c5dbcec11b9c5173fc01e9ecbb6e703ec496ebf7f4e1757f237f4f6ea7a60e77432383a3b3dfff15a76e03648d0047acaea8bfb52be2eacaa57274ca455be90c8c6c61a69aff2febd17b62f5eabc3c7bf383152dfb295d3b7fc05154c90bacc9bc26f1ae5c622c9cac6d140b24e1f37b2d24dfefaf5c3eb31910064fd583049a7db67e8848f7b38e1d59cd6576c3a78b7208764ef2f3722fbe52faff7a6ce032012ace5bd4913c7ed662b17d7104aa033e9fab43bcc5ab8af5d7c3b8c33794b705dd51112cc79291690f95e37926b6ef32bd32d7fe179d9d9213bdee6e8591c9823a4d5544ed7746d3e14c0a3c8cf7a8afa8ba82b7248cc0624155b1434651d776b7bcecef90927304ce3ce5ffeb2d3d553def9cbce335b21277f3b94a39bcfefcc4e8afbbc4e676e8f04a4e864e72f62a7df6011d514e51a6ef2c78f5fbb2cb46a96459aa9e888eb9afde236abab95cf65ab7efe7e7d719e60c8897cb2f2fb33dc3049212279e7b61bed63e7e638afd26541abd73b3e136d286524509bcb78e791c4ddf06ebe53a77b93bf46902c58f9cc963e7e9cbff6931989f36551c8ad7fff9e6ce5022f68e75dd74b165291c7876487ec90c776fc4094e555d2a0fdce27e0bdab2cea0aaeb064345ed2ea2d5af8511dc2c431ea53f1cbe0752457d05ac88a92fac859666112ed91eea9fc0e7112c62bbd91d8f8744276774bbe9bb145c55293ea483070fbc49c01683dc777f9227163a1894437f2856e93b247e662eaa011e50fb0a878ca840079d38ed115eda087367c4a4a7ee24c04129e544bd688d75bdad8a447927e81d3364b00835c88c8a0a83d3d309f60bc4d5963b9307e0c91291efa536c4c20a66e3321f183cd311bd21265c3b1e4f5f0973c35e4175478e291ebc363bacf829806d82cb03fd4fb5bcf2a7eef6cb17719e1a3132146ced9716e312a16d3594553d6d659ca4bc10b8695a25d452ab3c8b81603980d71f29b84afc2a45cb7cbe1d3a9b7d07b3933365e4ecd3b6f4a061839e4997f01c6cb69c1fd7c5782d56e3c6af14a8351c7eda7dbf5bac52090b0adacbc4bce2f4e06b72783e7af7e9458680751a2005b68c1eaa4e6af160b561d53a50d37ef35cefd46b0da476af250f1c1eaec8c46a3d158e224d9df63a27ef7c84ebed34d6a26ea709e9e61e522cf9cb92ef2ec998ba2cde871365777321772cb7c22449d9b2a8c5c9026a0ecfc4590bf647df217b1d34394b5c833bc6b167e5ab0f39ab97e6847d14eab677ec8a3413ae368388b91b5f98450fc3321c36a25504404ba7e5b67a94374a32489899adcd315597021f271a1c37bcb6f593e9930c8e301b67bd6b15885b9fe0d9fa90f922c02b68d1b560f47e5cb3a893758d4825c4096185aa87431c2348717a8a859856be3cb7aa13a02338abd2f48c1a6345df50910aa62c6ef5fe459c6ca9ebc5ef54c32c605af4423e8bc7e10a1999c830212c9282b636535178d0fd3fa9d154c09c6ca3eb979ad0434a25e15f9afacafff38e7c77258948fc83e71964992d8cb1292a6921c7bda95c3243075975abc7982c296b6765f623b5cabd7f0e96be77ee6e239e705a3650756ec1ab83a130440afdf25763341a7a3685607113bdb067d4c798deecf7ae7b6d5392af99aba6fca4fb493d6efd4d6dbe754e284c6febb0bb0d8cc9f62b7db9cb38dab1f6b0b9bdcf537fc496b6ddcda6eb0cfeb474897a2e6f3538434ddd42d73df127037b203e16a109a207239fcf5735ecf00b2dc400888bffe21afb4da5309d376893a52a5deffdc0caefe0208552ef6ac4ceef3b7f982653905277bf96befe8fcfaf4162dbe6f539eb1ff98567431cb53381cd58bdd1580889d312fb29d3eb939e891274ff0a2ece4352df254963eed91274f552978901679c9e4872f7be4c997ba7a79c72a01c5dff4c8936f54f1fd2cafa1f0e9373df2f43b553aadd84a167eb7ef148e0b9abe85aa7ee912db7fe914a62b5a42e1d77ea70c4b9f38a5733a65654da1fc2ba7bc62b0e2a7074ed98a490a118a9f42b126b14f78b9836114703e4059dfe588797949d27996b077ccdd610cca6a765879f9eef4d5e471404cd4210bd5d06acd78f31be596caecab3dd4dd14d0331c2316218fa5ea313d5e46e130cca6f4141a1d6d971011ba4f72504200822f30780480331a74ed546ccade2d640f72fb342564107508f91d51573d0c4f3b5c2d98234581320bd56ab76e4c551713426148568fb647a37707cf6f46db966352508dbdbcbed97f2d499639902f92bfdaa4cd816ae3a24f7f60e4bc30f6476cf1ea39892fdde7debce660e43ee42fa89875e06f67b76654cc349149b0a6a48406349d392ae13bc89d955941806c7673478bd72eee52e6496a26b24a632a0d24a552bd542c5d56820df339739ee0cb8adfe5192394cc387f0becd5d2f13e010b3f44627a00f406d8db239098100907a47224fba8c535189284968de6f2c2e5b587873d44fde891ea0dec814c6c4e24b054675d95580f7322111dd87b59e705c128c13d4c21de185c72bc7897f1749c4e815b0d31378e735408ae52b8c160a0cf306191b5886c29b48768aa241c98ad0df66b4badc00d83ac97ea16bae1960f0ff1bb2f91ab8039f0a6de71cf161ea446aa0b2539aa7cd731ecab013195a4b03d786961c22ae5a9f90141299fe7e079875e2718098ccce81d867663559d334364008b615ae849983e1cd075f91ed322c428e6839dcf9904e8e5024e04e4be4ae580e795b813898885cdd058433d173f6145f7bacbdaee14036a49cfd31fc29702a3b1973322ccff7460f2a981cb32b0426492b3221390138595cb39abe8b860ea462aca622eb23299e769c5059f481c39df63e5ee52ec15f9b8a2d56a2f677bd9fdfd574fc4b8eedc1dde89e4bb2fbb09158b773e0588c20195c6eed123024b3596463b7326049db29daea48b2127beff5d0bac735eaa3a8d644a78e8ee3876f9d77c8e904430ecad462af2025a7082e89c6326f991aa4e97750dc232bb0a474a1f58c928d35d0fc1843c70890a76bc6cf0e37b22df4ff2d82deb6bbedd5999435476766ef428b22134794c765e4b4e5c13162d39581527df985b6410acea98e7d41cef3c8674c12e7a86086819f084d66ca3e164c58707038aa56528f7d49b63b54086cfabcb231a533005dcd931262ce8de76e8190b1032ae680a14ddcdce6f72e73fecbc56f2d7b78c1c4113415726892fc48ac572f74a404138693da023ad7246bb91a3bdde796d211b8634cf696458f3cdbf8f6db00a90fa5160aa378df8908960194c14012b364df5c59f641c64cd80729c8d403598858424cc9ee05e7ecc0f8533c33afe6462e0ec4da501c6af86c70fce051131cc45e1c0602250a11d97c6a7d2860bd7e03240ca5b087eefdfabb3361522f816c112696b18fcb12ed236267634f7fd277f6d20ce7f016a8a5b0cfb9815dfd3365c6a16048d182b51fd18bced28eb7ae60a8c2c054fd46743a2200a68a3ac7b2ea580fadc6e841d317dc299cee9c2e104dc68f0013ed404c3470cdf43f414cf4269b7852f3a1e6b51b16c99b221bf069761453de2ac7b003a3d0539dd1606244ac9c5a5e51a8662076c99e69ea7a7f1646d6a7a11b42820cda8bc63a3d18ebc65810a139b1885efdeff3bda7e3fdafecfbd698fecec38e53bb24472a0a3d1ce68dbf9204b46db507fb4bdd34531bbc1b39115e18c7a86c76fdcf25c78f983e3db62507bcf8821ba8e744c0b1f37ed428b2c3012c10fbc524e5dcaff1e5566e08a950b27c617442a3111d0243e993130e571d7626e787c1a20fde82929481b307994a8cb8befdcc865c0e707f08b79db62fd7ffc9db6ecbdb9cac640c2378fe891c2bccdc63482fc9514cfc8e3c7b987556754385c81ced1aaa03befba6856c9e7019d7d1a6e30ddeac4c52d68d71d69278a5c018735251a61568badb76c95407e6679cf46d9e3ffdcfbbc2b026ce7afa5293331c83e8eb43e19bf5a8028c11b072448920582c1e51f1bd800a91161e7debfb788ac58b23efe03c93f468e3528e41a65224da6acf6b61b0a05ab036b86c3e001fd91d535abf6aee19ff83b1a317788f7b2e619f6faf888e9ad9b578038b7c2eb139c940536c5d621f278cb562eddebf427eacadb51f35a6a1617d6a0d0cb5f3d4f0507f97972143f180cacb7217db1bd623cea75faf40dbaf0e8b85df4ea51ddf9fe2aa2ae2cf33e1a01d3eebb0bc5a823771eb2078cb38ced03c2a6c84b16b4b3889c00112cab3c732b7ce82abb2fec104c49abce93884f68643ed00805c8bf635e9b4c6c9d47e906d7c79a446d00e72ee92421b9eb012972038f1e91f5d83690873bc0a02e474028eda8abe20b16655d3bc876e786eefe7ab4fbffdcbed67fecef7ef7fa8baea4a8dcc1d510d05a9de8410f7f1aa377e788557577cb10c7eec87f5af1943bca471372f64347d1845d6cb96343fcaf9b9947dd452d0cb41c08f9f4985261731adc797c96f3b3bc6462206ab0cd1c59e347e00af5338b7d77fc40143d922e2dca73ba7afcd831674c974d3c0182b55803239e6577e4b1ecdeddf1e5fefec17834ba198db2d128fb7eaec96e35d9c73aa1758fecbb04bff10dfbba91ceda65703bc85e1f1e929d1df2bdfc4f5f33bd72da04a975d87db52978a17bf2a3fb35ca22b773d4b12edbba03a1c2f9c570d027434c41b95a30541b40b2722324f2357b99d168bec94b51d332657cf206ecfc74383c34e79b54749a17368fd1981146455eacc884be557951c91b3fad63f74d129a7028b917ad7cea1b4a13e76b43018e9f204011fcf52ce857332ab49afa5d2b9e8356533c41cda13447505dc018eaef701478871b43e8be75026ebf5bd906fa3cc7cf8d0e2f2a8b865bfa5ed3b5d3da8ce2943507d416bcebb749f182b13121affba1e92b1cc19a16af1f4121b6e608d8018c807f364658cdc73c720e8d11a05e6c04f88023c09fe1080f1e88cea6dfecdb3f8dd6735052af2a60438df170859a12649087dc68ddbab8b41ba5c7c06e5e47d668ecf8f59fe10cd4400fee228e0436b7b26cab151ab1438c21067f86238210356b5970165b6f162c57f6105bec095a14e31fe1b0c8f3b76db4d248050387fb0c7dbcde91bc142316536279045b4139cc08fe0aa76404f00feebe6e1459b4c97c79e8f4188e64a5676bd19693d8ad812963df147a887d52f73afa092fa4fcb4b74706d75f132c91930aeb5a115d73e5978ebad7f9f5ccc3e6cbc904f0948a59d8d949f6544cc23dfd5549ffac45810f04dcdf2ff5b8b549877853e6b4a059a7f43b29c95fc9c1bea422f64153623ae91cec77493f28d03d82052c2feb196a82fe4e4b4909fcc0c008f725ade43f478b0a7fade43f7f5f96f80fc8c48e9653f9cf355bc87f2ed25afe73ceefe43f272c551aac275f931fd8981c7cdd3ff8aefff44b6f2910f2b5a6f345c7a111258e2bd93d5ccb8e1583cbba729e72f9593265f50bbeac44a7dbed1153f4322f97350b0aaf59cacb4c16be56f44e7fc793b9dc40351caea77604cb5ecabf3bddd73d18fdb5e7e303b451c1a7928e81505a14acfd754c1f480baaac84652dd04d2d2ab6606526645dbd74df952134e256fbe2f404d6c6bb686becec5f6f6333e66e60317c8a69aab5878232ef40670f95c78497e06c6b4c43207a262dc115d79a000f678c688ce100b44e838d5d15b49c26bf0852b1fb2aaf6b56122ab743e2be8c16bcc4643b4eac3c0e89299bfd761345999e4e9cfc433918388f192938058f4ff205c9300fe698f35ad4f274946786b0c3948c65baa59d199acc80ac1983367b731372e676c304ab970bd5a494475090bfd33b7a0dc2331bc1f49e576f0915d0137bb760297810c766d8118c91790ec2e35fc087a43a38f8f2bbfda7dda6d5b59ed30702e773ec9c55e08363569adb6337e995eca1b5f48e69cf5b8770bab51b238fdd5a6abbe6a70a2e1c6caacb76ba9e7f83b214f66e06aff2695ef608cd326b2f86b69419b7a178f309044bc8c150c5d87f19219afce6f957c9ee8c2a00c7302828628723ab9befb9d69819073ef9e57e2601b393efee5a9d1df4ebba5fd22c333f237c9c9948601419c814c1e077618357b4bd317e33f5d298b6eefbf0f618ccdf2e2b3ecf0558dc193257bdadea77e84cf5bdfad0d959d63924d8830e56ca9e6e473e4b4b8f8ed5876daabac76d0ad5b99b80188ed394fe827331344ed771281aae160c29b79d216436d36d46db06439ae0bf7c82fcae314270b9fcd68d91f4a6eaf4a6add26b4f0b3801bbfa07dbf8115c70c993b2b158278a4bebaaa347b2f11678f238055b789006102765af15747aae1113a80e2636a097351aeb0716321229c7ca535e4ef2e952b571b2cf767d198f76d60bfcd726a51f0d0877855d31c18b3bd6b3bf15ef11d453b40a2ed2155855ba830a5a3ae7e28f00d80ffe7ad6a8a0389fca1dfb831b954b3913ff4edf67f03906c596e7f01c9eb4ade684bbaf2a5f79aee193559527b3f6d6045fd7a80dfc1df20dacfc5088f8a7e710ac2f52e87f67ad44b50bb03fc7d6198656a5aaa20b4dea1208565f6a1c7b31814b60556aee1783c3ac56bcedb6747fcf0d0bef57dbed8adfadf8cdf2f595b1c9e54cc0f4d6443d70d7ff218efd1556924f6acb32fda7503e62639abecd27ab8b124f91651db411e891746c8984375b58fa864c97b44213729d1a725c2cd938af32d2b96293be497d3ee53c99167bf557a7d75fbfec6a13f3e74a98f94632bb6fd03f59db1ba01596b23cb7b3138a0c9b335a0a32da2eb936c7c2f40269baac2a968db67be45e596aed4a8e42e58837fd00392e0f13f3bfe7106778998b998ea53bd2ce178aac076455a96d41c12a8442dc26bc0a6a4d96c5242f0a5dcd49c99a18ba0977d0b7f163f757689171e838efee28d448eea908c6a7006d2bdc24f3b2986e924af7867f18746ec7b8b21f7c7a291dab936fb2cf0e9c7c0a2da116fc39490a65bcf73323271710f7454b6d9c33a182e435f861a203e452b04a6da0643d4ac83003c95221879ed35242655a2f31a51f9fb319bf27152b207251ed03d58e20ec1d4b973a90e8de9e0aaf83669516f860f592ba86b48178aaeea0c6c639b2ebb9eb29fe2f7fc440e6415763763cd6d136b4715983b8d2f53e9ec22aa8a83f8598029b30564c74246fb73c1dbbf4703a8eb8fcab09ab974f7614f5ef07ebfd12103a2979c694c3d4bd0d50e01d362fc99b92bdab8779faf68dbab945a1f84674f8849cb4a9ca1f8b513a7be4cdb24ce9723aab07901338e7e59b1e7943c5aa4c6f679cbf156fba231355bcfdd54eea192b3dc22a20a63060839a60271deb34d995cdfcf4c10d8f52b15fd676107b47808c8357246aa8187fff3d98df9014687b4f83be367c5a2d3e749b87a24f67c5e4d0c58fcf5af24f7ffb67fee93ff34fff1fcb3ffd1b7955e785b0498cff4b126d105de017b197f28a4148492dde9495f37a455c5b3afdcc2987b8dffeabc8cbb7e4f42c17f569cde602024afe472eff1cfcef92161f403002cf2513182b017a91df64df3a7f417dcf217f9050f23375fbde4854fb463e2d72345309bc142458dcd142be13344d7995a9dc716fece872366fac044d054d34ebc1b5b05353bfe337edc16847f8cf734b06bf929403041bb40bc9277df5f5a84b545e2efb1514ff12d44a267126ad568e3edf1d1272546ab25153cb17579a6cee92018215e45a92fd2d8b62cf3620e7bc467a06d5481593d0271f31a4986533a09067b9712e23c449fbe034a025599610289203492b0f32214388e7182c1e97c74ab1ac98b0dd961c258940ebb03b56c9b75c92df79c6e485764e10a4e291f1347119ecd2e1e1a133e9f7eff1a0dcbc1270648dc4cf5adba86a1f62b5d040106e89a3d10b46f7a23e348f8f96cec6f0f98256d415f5826d351e7c634eb6a38e0779114783f8d0da8766a58d55b93aab42cf85d9e825c67152374a9a9b74e30ff2da6e5af8c5b85f6ff7b6d54533390bf585bb4519f2cfe8ed671fe933ce05eb08beac52d6932f11049d74780bfc648f534d51b95e83924b671a75cab0d54f4dd9337ee8bae2e91ec95d2b6f877eb6bd4409e8b74cbefdb6d24dfedab1a9d26b31865560028c665512d6f3d2b896e10ac00ed87408bf225c9a49a6fa01088d90d2e8a45df2034dd998f3b74e00d85cdeeac9242f725abb1168f04ee316a792accd05299ae4c6cbd3a12e2613be2c3315f606c9137cc0952e490558e5bc26595e413211371a2c8c54578cd93928240dec30cfd82fe2d8f51e6f119dfb2a7923394f26929dc06e1290d89ab00271117a00afad139064ddced260ff1d1371cada4379a6532afad45bb6920fa40f84eadb8c0ac4680fe91a6c7d95926208bee47a476cba945059ef70f080973ab4471c99ce848a7a37636cb10b5f09006af28b90546472a02f2085bd1e776dd6b125731dabc8a347640c11b895dd00096c5554f9d82d0f98d9eac8da9375a89bde8256d573e7dbd8fd963b7fe3fdf4b38178fc290c029633d5738795314694d48d20a91ba9af5b8764ac3e9b6d7003bb19fe5be20e83297677e148f69f35ccadb7d469dce4af7b640c8132c36e8dd836605763e1d3ccf2b60ed5f2229d819500ad99dc69ea1ace9cd0dacda222ebc81d1f87751cd486fd6c1d62e5e870b6daa34741352ad9b9613e679dae0489b1fde94c151d071b9355813bed74b15e63c2c6d04acf45f7b775a89bb44e5b577df4a851955a9b103577fbdb99bcd279aacbdfa1fa9b01365fe1d98036db74dc5d0f779b419d76a59008051597631b9736ba0f205c636516e2084381402c4652319ad6bb5047d118a682924443607fb07be51539b978a9f366092bc6506e522e6e93f7d433ee52280e504db3dc9e0fe2aa676d1380a0ea1fb777f8c8bf35cfbbbba7f04d62b55b7e5fb20a2df392fffc4fc478deb587589f72b33497d727140c17eb8ade49e6bd9c6205b3413b047b4dbc4e54a14e0e276c60928a4190b99409af01bcfe6846513296b18cdccf54d6385a69660e859d6668d291ad64937ac6f28ac090a2ebf56b96092324b7a2e615845e02bb1e142403b70e09d22a8141f52a7789b6bf801e8ae9b7203f5fa122d93bfee22ab2ea98e99d6419a1822c8581d606d6959495c4bbf2df3598d7bb076b20fda167345085d9c03f1e5d4701f4d46bba0550aceca5a2d750fe1fc6c5499448ca95746211cb06e1abef68fd74c8535b45f11a56d3c77d67292849b47ffca347c42bd04e2320c97c8f2e4a392ff772f07bc3aaa532593e3c24bb4f0ebefcfadb27df3ef9da75b2dadb8348a110c2ab09d83d65259f5654cc9c262abfb600593f529a36e6228c2cd0374382aa9aaee83b1da4b38acfd99e800cdc7d32dabea2e51485d392671e6dbfa4eff2f9720e823eccd74444fe2b8acee4a51a6d3bbd4df28a4df83bd9cfa9ca5e69baaa3927f3653a236683bca62c9b32d9ce19fa6259abe0b772d0054d996da14ddce49e75767ea6202cea4780d5da5261a695d8ee263b3d7d4cc0417aa7db0da3a1345e0b30f9c2eb892dc93dd3b71368d2bc66c58abc2df93da16315e049307b3f5033c094952e729492ec1e6d5bba1ba454480e1f8304d4da418db693bd14c48bbf88d1763781efa676bd44a7715b3b9fcf97a0c0dd856fb209fc619a0c4a795bfc01982c5303c077537bcaea339e42124ab74121cb5403c9b781b9adba9da89fa4b57eaae6f42d8359ffc4568ec55c4a4bede1513194dc62fe07cdb480fbb94da6d101d1adbd00569bd108010ded5fbac31e12bb09d6d20f4cf3f25f19861a151d155d525d5c1d77f4d0fcf5fe3df11d50b4d363a831c4fa89b77289fc46db7af0d1b6b5008bd5b613f604398d01dea97e1105457b7d470ec94b5acf9205bfef3ce99183af63918755fd868ef4bea20b50e1b76d4eeb2ea27249b1c83a7bba1bdf2ccbc5820b09ab26b0b720b0b3bc32375b317529245b81fb9583360126ad1c475114e0bc9998752b43a9306ab0d299160fe6f339cb720ad7f65ec5132f3929783965c08e62d4345a01cd00909c81ad2e068453410380f1300b2087646b4b6fb92d36f29854ddea92dde30dd7899de7f45ddf3d2bc5036017acef04d7c6920e4876e0be3aef0bde5f5da5e9533e72f5af1593f7e4a25acc68d9f17b02f6c6ccde7fc086553e9deaa0bbc180f880405a1643d721d2ca58c16a86c324ca2b730de7d734ca927b33cf459da79d966942e22e8da73add04cc26cafa120e7010ec94064956b11d095f44d556e70d04e412314ecf269451d0eb3e865138269d39a3a0d9b867fa51b7808b9b8030eb7405942542182bd39524f8c0a7aeab6ec53d035c0971c37653d9cf1dab9449ab24279dae404ce51833f78c501ec7ae18ae4f1e592ec8942b0d43c5d2555ab83d99430e039ae92e3021334e43eed4ea9eae12ff6c632a6de43b62284fa97b5161eba9aaeda16fc523ce94ed6d1b13302606be94c50d90ecdbec1aabdd82958edd2e9a19dc14ac7ced05579605b171997a76f15a4c59dd69f828c76fb5cd12225adc87b14b815df6cc48036c9ee2ab0d46621804622abaf61ae22062391669958f997338a62c600fa308821808b3c8056806fbb3c184b8db83d651874d38c5d0675c13c0b83865ac32a978596b997fc1246158b1949575b1826414e47f97ccdc3549cbe5a0026678e524ed06d9a82c40cba705e39fe8b9c5f616e7740cbe9ccb05bc1692601638bb9c99240fd0b847c692d42d8b156afdf422ccace48b5372fde0f43cabb07bb6533120705597f33c93742e709d05ada6acb2a2098bbaf0d59a83e87cccc8a458cee7fc1d6a9c616205a2a9a4017e899a46027c4098ad1377035a3b29fb11a7365f3ff0c0a896f56cd5336624ac9273073336f995615ac2a530ab80986d0dd409c277262004f8a40924a0173274b9e90b45118825b44c40910c82cb67ff1ec6193342d334cf24a95928d0497c41ce5614e85d2a24f286d9a72bc9f2aa5e93b3ff0fc08a3169ea169edf8c8a8e1765a4ad8d8fabe42d3891eb50471f64f9b3ab0d8d4ae0b40fe1d025e3a374f7ca914358d53d1db362af5a96753e677b33562c5825f6542de090744bed1a025ab607da7b75bd5ea810acaa87b35c9c96799d030d9b3dd05bb48dd7ab6f9bfb40777e65b79f2f08154a72065dec00f3bb632b200772cccb9abdd375b06c17f9e4143fed586d9084b497b4a45356e976877e3f48950a565f69f6f99c67cc512df5f0c0e31f47a522369d81c8e1a8dcfbe23f6e6f2f5f5d0d6e6fbfd873588bce2d2cf03f6d26480448ff7c3baaa71e69540f295b5533c86cef99cfc12f72d8e80be5c7901e171c4bbd3681bd751c725a8ba1d36e8f8cb6c38d1d6dfbc668cea750cced7d9433846e1351d31aa232cbd34bfc4a1279b7f519dc784f25a37a66f5750da982ec7155cc97fe02676320497ed65379160ee407ad51b5fa060940ce7955da6b06b8f1e0cdfbe9d6fce088723fd89579767a0e14e0e6d9fc1dceb4dcb8458dcb60f6c72bf794376df7c3a77f7ca7140da75eccd85b509e02030fa06d95a96a2d5821a91828b50f5d2e4f9634d2b962fe55bcf44acdd0f17142a202ad574de79c26c8a995f4bc8cfbb3bcc82a56465f093596930bb62d0fac462054188910a68455c60143fa96816d8a31ae0531c004e3a95315e9bea70646b615839fa2a911d25358093a0421df3ddac6db26baf784bc9214e58457e412c5fd2083acf331d894699b2c07d52e4bf9e26935ba3918a7b8e9321fc6299976c9f7720a37fbaf495ffe1138ecaa4d4073df5d6b4064c3fd9719a1d538af2b5aad90f9816d2aeff85b653f6e4452b0098a4ec5a02c8ed996677006b62874c24ea11b7775b6b433299bb6f413cca01695831953efdb383fd6d3bc5bc9ee71a33a50f36fe4807c8f8d76c901e993fd6e8fdc224975f00cfffa2b7cc71f0d5bf11ba8b24b0e7c4eeed698aaacc9e985513a5caf222ddfd504c13a0ba107c883754d3da2e34f52eaf79052977cb160d5dfafd5e705fc4c7e114e95df42c249599cee247bea8357d9de829e87066cab659d17300018dbe0065cab6425009c0b8e39c0fb64878e052f9635c3c0e1355ff409e60a2fd8a4d67ff3054df37aa57f2e785ed6ac8214f5a24f764a5e329548c519f1a8aaf8bd19f6834f2a9e9625ab706f3e0315e7f4b60125e7d45e47cd7d22cab0f8617f63fcb0016e584b5b2a7c117eeb911bd9eab57c50530ad17244f78f2441e5eb2de94eb3c28cd634a4f0e5ff20f6995c6d83827109a9cf352fbc74a7ca06424e1031eb1f3694a6bf5d15ce671c84ca9bf5078f21587de9adc5899167ca4346c27eb15c8453265f67b771c02638cffbad43f2e5f2ba5eb149cf6dfbcc6728dc419c6acf42c663b9c868cd2e3d78e8c468f8cfb88d47ee69d95d3487e86c224ed27cc1142bf8f71f3847dc1460c85e6246ddcabbc40c8c523274cd3557985719abfae4bbfd7d533429fb9ec3bbbcfd0d9ece5c7d02b670343105ce693518458f6b43ac22ffdb738b1da462fe7498b6aed7bf4e70496bbac6e3fbb3edf194d5173a49616f6d3e5dd73fdd2ec8bd10a6d8593d83b778a04fcaadee7d729a6822e087fc5dd8c4fbe4345109972b1130d76e5b532760b501923769471e3d8a7fc08bd1e0e00d786e6d05f7a717542cbccdb458d463f3bd46f0ae020dd36f1d16ac3abc3ebc2e22b7abef6123ffe239f06ac0f20fbcfb538de661910fc1e65603dbbe7faf0b917597f7897cef139deea137c1af4fc2f6099f4c04abf538061acd7ef49a4d30f7de1f89c9cd4e5d1adcb2d96e791b63b9687fdd2e12fc03576069f20d276fdfa2f527ed10fb9103a5e6abf863d777b1ac2f26cff9b2cc68953371ad09d2752b8d2caab180599eb1c00be28f5a45c6445df1d56583668dae01c82ef756ea160e7515239574b5440dd7e93e509198c0997fd4c263b459ebba718ad1bdf29602fc5b6c68c94a7dd24c3d8ac3253ba3ed9228317ae71a116a43ed43efd50b3f3f8b4bec7563793bd790d66d27caee8d80a213f6e9d2db1ae35a32a6d3fd43c9e674c6b265c15e014cac85fe38f0ff16529201d8fb0374d645fdd94884eec814dac4e8a966cb4ff20c87f5022d34be422c72f010ee41e0704066ae3325da1aa9034c7e11c66e0e724da6335a4e59d653040854d56e00907742de1cf258e9e814b101d2d408a5098680663e4eb99225b4006dd02c06b56d546738a2fbcd0b8df1205767f387b711c5c158feb7478fc87a086bedf5fb58c304e946909d9de5a26625ab44a74bfad1ca592e62b55deb882387a3d206ac293815a20a0a6d3db05f92b19a5573a03f28dcfe8051dadb237441abda1a37c2c27462ffe768e1012152e123f6aa086b920ba5195291774c9fb22e8ca64e51c12cda431615a3d94ace532c65cbbcee691776989d8264522b1b413b53b427579ff35a4789014b0e88b430cf052df2a95caea225c935da72a8eb0f6ed4ea7e40504e3985c03cc3dcbde03ac4a8b7102c5ad0cc07577915a2879ff3a27855cef912de84268270be5b5ce8c84ea2a2133783ca034f6763661bebff5ced534c67d77148af89d6f8b97226f3b80a64b9f49be3b0289d6e4c88e8573414ba5399fb94a16d1223199d76fe09f663c7eaa6dce4f78043fabe36dc59ec5184390d566b69e94e37f62c35f49ecee3d3aefb0cdf664f662ec94e5083c2ec8df4c7d9e19d31af6b3e473541206d3072a110c187a2df40e4a03867c7b0c30c28c8a1a14cecf512cf1c1dae53f743d32bd9c0aa12f43bf6056dd457c5268d27ca021be0c1c3079cf2651f3d7233da0efb196dbfeefa87b681b2fc58c55ed391867c6b89279eee2230cf80d53cf18d367c9380d8f8be1ea5c1b4378f37fae05b1ef7fb6685a889c5078c08ab4d4701203efc69cdf5995490f7e8e3a4beaa5fff12fd235eea53f50a29cae433a9fb4c879b6afc4c833f957e9f9355abd8e405f8c7553e9b56faaa8d07953ba5a7d669a9de308cf29a7d12d366fafb74f32775a53a3a8dcf9a09777b64e78d2979a3dd8a4a0e96c26057ce97b5c8336586fd46ddc03796fe4b768288c39f427639a7f610616166fba05d55e3edb5570ed1bb678ef4bb1f40ef1a871bad1ff4b07cc347d0c52e8d77b069b6d730be5cfbacfd19ebeecf5877ff5eb1ee8086a845918f6f0f3421023fd7111a12f753e55facaa5c31c9925f8c01442b5b4d96ee7255bcbbe0c56a921785dbf23732c9cbece4e2255cde0fde08bb199ffb754f4eaf2fcf8efe797ef472707b7935f8e1f47f6c9324d94b92bd94cfe7bcdc5b203f13a75f5ada00f9e2784de3a2ae5929b83256fa82fc575a50214840bd40da0a1d36007733b935f8c3eda74754e59054712b45081589d6a0a1496505ea52280a639a2a778ee6d30f2f00338c8f23d7c74ffaa01499e31faa1b951d3d9222f934e3af372fb1ab9ef665ea86c1e6db9e6d77579c984fcda7b9e30a48175488dd7a56f1e574a61e6d080b00892409bc8f91d7e058bd9b092f8bf883ea3d952d5373e5b92f43594ec789ef6cf75b3f401fdd7f539a6c65c76b4772cf06bf5c2acf645f22ea7ffcb8f9b588b3e25b5025592e525e962c75f78110b44926e40ba2e0109099131c0764869aefa465e638f35b476d74c72d56aa2b3568a6fb48c8a5bcd46f26bc92b499b1fdae39116ff3859173420047b475a6c53d5d09d55f65701c3aabea4c34ad9be41f87b73d3007cf29194a9cec7dceb5539ffc00139e83a819410b995c60b3636c758c2cb71931c8f77416355fb8dec2f9044887c01de181c3256b5dcaccacb5b495d998465bfe06c194fe7799d7b2e134bf631209cd9959f8eeae89af59732df2ed2c918e80aeb26e7c42813fecde1e383856c420c9221730aa449541949e35ab971d556cce20b88b9ea5118dc0a35f4a5ebccee7cc2a0e03cccd3cdd20a803ccb44c5ced5c288bfcac199d006b432a293b7be1c6177117a0fed0e71204336fc3255dd7d5a352aea8b70776faca2dd42a3a7575e51b6d5a6c05f149db67a89bb819a99d81f59f8d917d61eb0668cedea416e4e6a60cd9db5379bb5c5207c8bb7baec23f7921760e129216bc54409b979213878050130c7c7b9fb3225b111d786ac12ac8c956d689d3c99344859a45bfdd7ba6f3c0a828b22a8e9544a510a4bd236f3ea319f09fe58afcfdfa7f7044adf90a1cf1ddc5a08f5b98ffe4960698e39e16850e5b2361c7dd8e5c906a09c18c96f868281f6a647d83a15d8b84d6c3ca72b128e8ea1c93544728c7c79200749b00ede75005f68bc3025f2e2bd6e65ee4518c1fdac29b7ff527cbf727cbf7efcdf20197236f8e91bd4349294b3e9235842ac7b2b5edcc63bb52fcf6f918bd4bbe90bbd5d37f4060310a18faa7bcccbc8e165845ffeb707f43ce8b3a5ffc1ec64f75d1caf3a9ef7f28bba716e6b37b6dec969ad0869c963bdb3a4c27724b35d10927e4683d353b05a65386b97263d542b277fc8c7f7bd6cbb09e630da0582d2cf51c67056a37e57ccc11c9d2ce2d059d9d9e02c690c311f1efb05b479ba71c95155c1f3a37a6a3803d195e5c9c0d4f2f7b1afad562e05707ffeef61a0bea3e2ca934006ed74385c8a7a51555e63eccf75bee42f2e2e21f83abdbe1d1d58f83e1edc5f9d93f8d04d3ec9b63784d9735ff81a74bd1489247cb8148e982fdc456c7050699f22ab01288ed68e382feba0a9c0cc24de9eb9d766a54352d8e31b427abfabe4191f7ade789c11d69fea4e97deed986dabb23eb354dc57a242e1a885d23630213bd4a9690564336495ef7b3d35fdcb644cf60331a48d556e48f69eb58065887f6199e0b17ec8415d4b806aa0f170b56aaf203e3205257b4c4c99e2c2b8ab6df07fbfb96c9579bae06de90d6d2f8b995ccfae64f32eb4f32eb5f4f66eded692b376b36869265f9e930fa3f09d892c838e6e51dab6a412899c837dff650734892adce7dc2979531aa11f2b0e4a6aac4d3ec5d4de8a456b37bb3fb2671830818e40356530a8784766c3a13a52e4ec4a2c8ebce687b77b4ddbdd97f8dc178e48caf7454836a09b69606cde5023c89e559c0354b5ab2cbe4e21facaaf39416663622371a649d417db42d3bc34719ba1b6dbf36c922b0be2494760f22339b31c217302f66a6d7361bb073c6bab1e988fb1c385ba748be7d42defe9a2f46dbfd80511d6da3f994a22b9deab89e667db5bab0baeea6d900c635d515d26e56c3f14c3081e61e1d5f5f13309a04787bcb56f7bc922c785531b1e0a5ce1b8432360b19ed1b79a43b6b801784cc935fc9611b8c1de8f8e17acba17eb8e710593db62966b55e7556669b6c79eb1ea64c524fce2e127bd98db75af49aeb0baeddbd089af77899cd55e0316d5c0bafe68457f35d4cb946c654289c5955dcb1a96d3d80a1eee1023a70dd3241206729121717f8be996e205aebd263445f2d89839a775a0fd625df472f99fd2e2912f9ff8f03183215fa6d1fbc96ed2344d204a9cc1afcfe3aff955dcff289715275979ba445cecafa05030a638f3c7916b4d68db41f1b1462807d5a0209a0af957c81b27cce4aa02174184c153b86dff7243c3009b46efcbdf1b2ca58991835d79cdf31a281634566b49860f31d416638c99a93b78c2d485e13045e1584eef31f16fa3527355f90c7c15e62b5c5bbd136849b91d5e06908eba96a1b1fa1ba8034cba0941618f2db644bc333a16506a1c2e1ed8484409ac33fbababaf8f9f6faf2e8f8f4fc477248bec41838e18d46f9a93a537d3b31048eec5f707321f3b216842f4df448409e694dc0aca711eb065a5d40b7062d38cc41e4b37b833fea421a6f6754152cd5e0ca630443f1dfe7593d837521ec6865807737d65c8b9f65fb6768f52f1f7f3ecd5332e6b2a2b69934496fd50ee3be997dce6bc18a891d75630485d52d2043129c76a8362dd0d4cf69f73d196dc33e00a88eb6d54e6c9b160805d739d819050df1cd8176fa4d26e141ab3d84c8d9155f9659c76eed1e7942f6f093f8dfaaee3ce9a2b608c7d42c3150e60878a051575fb148c59f32e40e669502175a0d337653216412cc94bc7f4f82725c8cab54471e67b9208fc898a66f47dbb677c33790924d699ddf99474cdd1af5ae367d7c6fec86be26bb878dad7aec5f52834b21a29444a8729e7b12e99877517032e5754d25cc90b480847ac05a1decefff853c26ff639ef906aaf66673189d2f84e6dd752ec4e370ce91e7e5a1853f7e78e11b4e79373a19cfb64fe1823fd9e63fd9e67f27b6f9df59a1e0bc3e4ea33dbcc9af94d598c291829105ad67428228b32628c7bc62e4a7bc26d76f99e467269059746f0f804ef4f7f6a6793d5b8e9394cff716eafeed99bcb37be3828ff73276c70abed8ab18e606147b023adb939dffe5c9fe4f799d6089a670aefff1e3edf58ba3938b9f6f2f8f862f88c4ec2fbf4d0e0ec8d7c9d3fd27e941b27ff0d56ef2ddd3afc941f2edb7dfec3e49be7bf244fdfd65f2e4bb6fee9e7c9deeef1e244fbff916c8b2d1f66ef2edd7dfee3e4d9e7ef5cdaeacf82d563c4bbe7bf21539f826d9ff2edd3d489e3c955f0fbe843f9fee3e4df69f7e49f677bf4c0ebe39b313f815f659cf14319e3bd16fbefd867c93ec3ffd3a3d489e3c911d3ef98a3c499e1cc8f1bff91afffc2ad97ffa8ffdbba7fbf266ee7fa5a609b3fefaab2f7793efbe95e37fb76b2a17bbdf2407df3eddfd3af9fae0eb7437f9f66037f9e6cbaf77936ff7e518df7d4d6457df14b6d697bfea94bf1b7170f810551c5dca2c27a768408f4996558fca69c11a5c32bcd636684e9cb2dbb7649d7917c78cd47cb1074f23ca0df610bbef82001fdd35c11420433d41498b62a5e93dcd70c7e5431b493d76bfdbdf4cdc71f06da3629ba0c3e9b2853fdf77841b1ea1ad541f478a45733dc44cb9355600e5d518d54ad6b1cfd521c86fe3a46213df6d118be1cfa6aba2525379d13ed6687846db597ee704634aad22442b932e2f2e417703b7a6a78162027e56eaa7f22fccc5393def3c865fc07949beeeb70fa48f1560d77a2dd3107753671a7739bb7f8ed99af6c93e792aff7fb4ed8f6615161aec657575190c5f1f05fbc7e08f38edeaa44d1fd64e4da2d98fd822445e63085f65e69cf5431c0943763feb9868f2ec8f68711d0e08ae021f9e8d4a17283754dfb84d46db7fd2757fd275ff7e74dd6f2442417964970ef6e4e6d657fa10422d7b5a73f9cb088d310ffe825674eed49931af418addb466b8d77587dc7a905b1917dcf5bd2f482e6a5a8e9705c9a725075ef75d0d1dda373368a41e35bdf2647871797b36f8611815e2ef2a61b6ff20ba6d1f92fd3707bb3afdf145cb68200b6f690acd6ea323028e7860aa2da346351bc198cf2f86c38b976dc3ae9b33b66c5b3152151b74b0a902271c377eac6ad8f5db259bb62e5c3ed76ba71d1f38a6fff0078c9e2e8c169ded685b928e862c73ca767d258cfbc5d7b7405a574ccf35c31c85e5942c4b15af2634f1d457e921aa0ffd54cfd91dab22f261894ada2fae438abbddbcd3065d9064b164f704524c7646dbaf24ea60690d714574183ba069deadf3f1fbf3e9fdf3e9fdbfc7e0d38415e8111d52c20601081cfc5084e2b73e1a8bbaa269ed19ffb4500d3456f7f70a8ba0cd0053e1c69a6096dccf255e82d14088f48053a219ebe28e55850dbc000d3896e97ffd06be59bad34a39680af8a27e39a6f0a603636be5b4adb14cff1b35c14596db1799b9ac8ad3224283451abecca76841f6aab92d1185592fa2066f97e0c58406a1edb0b2833b3e3b3dfea90fb7244fdf2ae60e0a5d5b4a536157291eb11ed85c827a094d8e6d61d8182a98c6c820a2bcec529b267eba75b2b1226db14e56dfff50ebe446b69c191527b47a8b2e44a1a1682e2e16cc048e9db2fa140a5c5f531bc0a9f68f5d6ea7912b3cc3306293824e51bb5bb05a90a5803869694de65cbe92737e8770a815ca10030d0e03f4a40a266d2ac092dfab2479b27dc1e89d4a570701cc743a79f918a71517687633a50bbfff7b9ef87b948b97b2bbd37208435f54e6ec95df5fb898bcccf294d64cc8f1e0397226bea8d85dce97a25891828b9a4c78ba14e81204b96acc62b4b799e2a7c0ab6e41a72c989dec04ac7a2fca6b3a6797f2ed3a7413b0de067127847bdc6a0bfb2e2f8650171ae67a16b9d6f5cab5cb25884693162f64d516828ec8dead3daf8519d823673658d0988c67258c75e2530ab232696f5642be20261ce79cd533ae68195157cb140d41dea8637ea372a92ad9720e36088a92d79d994e87f276aa0e5588112d12861823f904c08f560c7d21750243051c40d6ddd395e90f1315eb7ce898f535af7146bbe81bd0236299cee4230694bcce7879ab27796b3ad3662e7e3df9e6dc920ea6d1b48bd6e101ada5b3d089954d87785b05b8c6c96e8c8b1a12f72ef4ad37bf3627da06401887ce8bfe66ecae9f8563c95d71ee68903fc1f7ce769c256ea3de12441edc2518b4a30cd9fcf42ae58d774a394f3885cfdc2103f468c6c7c086c1574031e78ae2564eb47ce9041fc3e4a9b990d8027c83b5db3d15264023327a493cdcb0bfb7269903baa1fb61f7bc65a84b1dc32d182b12fcb4d173db9850c09b2c94119690c435d2bfb6252f8f651dfdd4cca0fb4bed94209f7c7dc1833cb68d73383c5ceb7a01017ced093f7ad43cc9077a7069060f49055b93f012de9181ecc41c37aecc7e78f660fb3378d622ede1432cf79f734ec7ebfc6594e8bc473aa07f814401e31bfdf5e4e8eaa7d741b064151e4c520cc3199b339b4200c1d8a326bcde5e9e9e9fbe3c3a0b3b9ce7653ea785acdaed91c8ebd170d3f928350e89eb0c865747e7d7c04dde1e5f9c0f8f4ecf07577eeabfbe771f5cd593d1bb781746eb75f0798bcecd8f4af29b0bfbf8a9df409e0ff46856dbee96e42ddf8789e68abcc40b0d722e28b0753f38d30c60d89c2924c3e3f72a9265a72b01678da7d5512301851bf2d3ddf988c6d04f50e2d46d242b69d73b6d04465af5246168703e74b641a59d901859121d990e75d2e962cec5b2eea206ca7b94c66b5f38a446bd07ce3c071ffdc6f1052b2f14810bd4243e608d62af11122d81276050e835d06a5dac139e92ee503b3cc9da26e886d698de8ebd16433a0d875645de2b858c4bf0c66261b0e9b97811673b35dcc63e3722df4ff29216436f352d1d7f1fbc97f828cdd47d7191c2f36259f9ef210e20cb7b6e45e5e3d7ac199ea0fb20f55bdea36675786622d5a1dcc03ce9070b03e69c948c650249625e32bdce07defda102a9e0d9c7bfc2ad4e52071edb1f39f56acbb72ed56f5d7a1356bab81c9cbf86c393a022ab747b2e94dac17ae16de8b6cf104d18fccb9ab85c0bc495a5f7e68623558cd124344e5a83527026dd6677e3d33263efe4d8ba73f5b8d6ea13d0993a6a85624904b2a898fb7d422a56b03b5ad610614f27e3f1a1bf0e06d2bfaca8a2896e24e1d57643f649dfedc85b575af0926566a714f696857aa3cc5adbd0b70324e1be38c7dbb9cd349c64064e8e8e87a7ff185808810039f175c8765e168bbd3d153e48c59ad7e1b1b4ac0f5c5b91e5d274b3a4efe5289de767af069757a7e7c3ddafbe7ae22448565d657d673e083cb950fb713119ae16ccdd153560977c8f5e64fd0678e86e9dd9eb33ee9bbfec23ba0965f6f9a91f85f763d4cf07efd2f61a37b2dbf3e0a8f912a7f2f45a5ee30686f59ee430559f17962d760bd6bf331e8301a19a928a15b4b657c05eb2ad560151d727edf6f6b4660ef552301508354e76775df1c4bd9336006ab18c8c95dfcc82422e00f420f0fa76c45c1d964c13922d815f45a53d4840e858d8f036a499c8dc636748cb53d561dd18f7138a145e42e827ef203ce0186dab2754127cad5286f005fe971dba3cac894aecf0ae3652429451b1fc8ea9adce05c87b726d8da164cdf76ca728c83dc5262822ad67cceb5fa31b39d5c407b72d3d5375eb4eb5bd540888dd00c6e2e4827b642ee310ca28e242ce10f6b7bc181b9f76f2f22c3738788f938f1ffc83c26390d1aaf3bc673b1523e021a64582e6c8689941c15c856912ac5649331af20779bee670e7b45ca261a93959250957dda1ff067820dd017f4e054611905380493af350e2cc72a726295f82e58f0be25beeae7af2943510a3089530f1e0ef91c03888afe5be45a4daebc0d24963e3f5abdfc4f0722a71ef342fe1fe800259eda0129fca333474933f11c16af96c632e0c08c841982f06f1a33c7c368467e17953e0d762a84f047eab39b9a7794d96659d17006ef8eefcef922d01d827c552cc58d6236386d26f07c01bd82bc05d1a5122a42bf74b0fa6ddb87ce0b2eff4247b0fc4f31d5e91bb3c65e48e5582761ba254c1ea613e677c5977a2426ef73568db9b006f361f428c66c7aadd9497937cbaac80784c0b0e11ee32091672e366ac584c960502dd9cc3527023d02702575473bd1736f6600b38a22a300a8f361c8903902e11f5c920894ce5c320e98a865b811202724af032ec824641a8c22b89c42657a727039297e0334ac9c9e9f5cbd3eb6bab8351026b44cbf6bb6ee0f4014277553df1094a556a7556ceb424f72298a83ba3ed044c9b42a6540ff998c88d595be7564fc6670611959f28d1fb61389d2d4b43fa5f901f3acb450d622b9a974dbe5a8ddc0de42f270a5db6aeb56f988c604927a7d747cfcf06275de77d775f1e7f31c88099d1e44f96e4e244c7d281c1594854ad01773f7b7148cda574512f2ba6460fee2e4b16389e1abdd346ecb4c3b53235810bf6a9709d4f50e102e47bae75aa9a255208b75049ce106a717002715b458f084e320e2fbf9c47f0f02be1847addc54575ac4123a29eedb91305a3049694e0b10aa9d6dce8b73fb1d598d32a830f1f735a1b6cab23516add552b09c1ddcb728cf6a99ca86b854815919d97455eda8765cc26bc3258b99550ca5c387d98506a794a14d5a4649c9158ad8dacde7ebc6a3fc1a1fff284a5d60864cbe667c322bfe28767eeef0f1ee807a17d5bce74abb93aef84e30cc3a73c35c7ca88c87f65081a0cc4c311a012569be2a1194d67c22be58ab430f9a9ba366e88e455448d4ec44e8cea468e7c79e8d77518593c48ea6e75ab921f406bde67a4907f034234d6784aa36b32104ac0512ae45c9092a54c085aad1a944c23ff7b4303d416e2244a0234f3be7f7830698cda8bcd03cf57aca47346ee2b8a215ce8143925498d8351ed5296838974c16ac9bd094ef27a478081c7b4845451ba332a2006af09824b9c00bd7929375ce4a90d613e5ed6864895356a9b30514ebd476a91aaa0bfc5ca8e2794cd10b005b7b45cdd363b9718d87496d7e06928fb44adba24505f0c5f9e61ce93ad2dacf9400c485f699346d435997db16f694c04f833eeb2a782b9f7ca9cf82c46031353c0d84ac7a80d1bcc17f5aa45f0fdb02a4de34078fd4a653591290309dcb3dc2613b2acc51b9cd01b304e66557ea7e26698ad876923e587373ea5f255d4772847431f9aca9fe0db49ee6891c3ad06c4e386ed0ed62a1f00f73550fbb575a85825a8a045b9e73c6383f2ae33da5e543c5b6284896df77948792978c1927b5a951d34a53514dacf4757e7b7839797c37f6a4d65370c02ff70a6209d192856c5070c47ba1b17ba8714e4cf5747979783ab9eada3304aab22dda40c72c26f622ea146d6258dfd4d8f0d8d6a8b0e585162f1609ccee3624acd4d19d3f46d56f1c571bbc6f8f9d1f14f275717978d364ac3edf4ef7d5917ffd3a35283af6ebb0b4c7b056f60b3e947c86240c3d78b9c7533326803ddf8e1499d06ee07537b46c573b50d5e65a7bc61b3ea2968dcab67339596eef29bf4775831f3c6d68541adbc9c46aae5e5d4a92727d6e80d0b835acdde54a96f751bc4fa74499fc6e748cb288c9a7a46b8e775dcb48afb8800b16bafb7f661d8e46efb16c181e147d3c7d09b91725d326d4d40b930cbad366e179d6e0c8b68394eb7eb07a56d12331f93aa0629366b4cd5d9b8f39ff3a2b842d580b645709205b277b56f2ca2acc837e80892212a4373db8f179e59169f7a2fbf351a8f3491efa2294ecc1368a4114e77412268acdbc802edb213b6318675aaab3c7dbb821472a61224ef008a1a7f823017a488219b950b871007db5c5ed6152f40802120d775693ca420e795e954cbe5c98c55ae39662be1ad51985d8147619348b2757757f4ce5d46d844ff5b44a62da99e054b735a8067611f450090bebbb44bf645dc868eb1ca8aba5ab2f6a3010a271a4779fda589e45ffa9db7c6a3d782c44eee2dc1fce4f1fdd4a8d9791f23e1a41fa4d05e9d4beaeceae2ec6c70727b717e7a3e1c5c1d1d0f4f2fce1be49a9d8df302c2531720e78f19ffc5d1b5a14b6e4fcfcf4ecf079b0f1c271eb61e201ebcfbebfb7e06330c26d7be356023a25884638563837463a0ceeac4528d61f319d5f482840a72a816a7b80d3ff3b2dfcc9a189856b55655fa8dec7606933d3c24fb70925e779b6fd4d5e0bf5f9d5e0dae958e2c7a82fe907f234f3e064c861717b72f8fceff797bfce2f4ece46a1087ce70085853db921e1cf3e4e2d5f3b3c1e64b92bbf8448de81ce5270cd96498d6619310fd3c147bbea93c5df7c42920f3ba8f38c438ef67f36babb2e1e4e8eaa76e43a3defa44056e63decfe66385bb063193d425021d375e8d9496928b561eb92c2354a824f0bc422f17756f919f47671bd9233cc4d51c32250bedcb45e86251719ace98e89105d8dc817a1badabe0cd929d275a181739c486a8614d368e4f4fba917a2846d6e161ea8dda4527c6de15f6f13ffc870bbde99568e980fcf5d0ee1aa6d396454f249da20f004ccb308aab974564dcc49735c794c7065736a60855c182f766ff75738dce671366ba296f5695fb412b05cddf7b1be6576ab89379b3321d38dbe9557125c0ed77db10b26ba884bd3d4b0b290a4998ccd30cf50404727221a5e818dcd897354294e904606ed6414b002e22d473b3b15bab25e59e5753857f38f51a3cb84501c7f4293767cc976546ab15c2bcfee554983bbddfd2c4fc7c1680b1f9904c8a7ce174207f6e646f0ea6c2b61ba5ddbbb863d5a4e0f7aec381ff45769ec63a4ffd5c3351cb45339e2b7ab2aed69e9db5322b511c6be864e12eb9ec47fdb56d0d88d3d5275f1dec1bfc6dbeca0debaff53251c79433adcdea9b73b4dd413f7656c1a67d8e01822eed584d5d4bcb3eba497170db5a7435cdadfb6edf6e9dba2f9afd408f61ada6a0108998d877156fe587aeca1c08ce7bb428a29c85564aa07151e9f0a1603096a8971182c4084221af25c43ae7ca56c47883625418d00b4d0825252f777f651527999214c9376251f1bb3c5341cce3b7dee3a7ddfb6e54783d3d89f64c562a9e62ca0ac885c8dee5027d65d5ec1d6b2008a12de95f98bb55aa355c49e1e0b053391165a91324d354fdffcd4bf31a6f6994190f5afd78eeca1ee71b516b7eb0dbd382970382718de2b7955e0be5a2f6cb8786e99bd32cbea711b0ec91d8ca02cb810645fbd00028868d69f9d73f443e22fc944748f925aa17463929dacf3afb80fbfc38d907f83caf017cdf40d91bb41c7863aabe214bc1845634ab97b647ee67793a43cb23318348fa2a7a7f40326de9d93d7aa4d200182ae7fd7bd54461b487e41f4deb03df3ea27003a4da772b121a20643bfccfd67ec8c969bb7e622d7e5991a3f466f54916a53a5ac66730488daeeba3e24aaa48f6a66d342d987efcfa64b42d52f90028e64bc7bdf42d95fcc81e1e6d177cfaffd87b17ee366e2451f8afc0ba734c322629c999ccee4a513cb21e31377aad28c7c915b5324882625bcd6e6ea3298989bdbffd3ba8c2a3804653b2e399dd7bbeccee89c5065028008542a1500feb5142bf7a0f305e41989decdb8ddafc64df9992d08bd83b769f9a488fbe3ee9fde0a346f4f9bf1b51a6621cec754d438c61f43593508d3a1ac28ccf79e64a234f306e1ae8f389ebca7f37772007618e363d7ac8d1160dd414646933bb18c2cdcff2f122155d2cf48571931ae218aa9008c8cffc92eebd18cef9e8f62c4f9793841c378a7f227cb6c34e871f847dc809616f63ee148036378a0bab0c63c3a5a1477a303fd30deca593051fd80ebbbcd2e782ee1e219ea129ceb2890dda6cb096e67c2cc69e43afc8163301a6b481d0e7c723b91165f468d7c8a4d51c854f4429f947a0937c313a9a4456e214809c45e983edb0cd481204ac6cd320ac33394d661010021375cf8b7c2424982b0e8bfc5e8a02c32e99ef3bac42cbbf6b8d121f4d4dbe93fb292fe19a7d93e6439ea2002ba4a23899a3700d1659c522cbd4fd11bec87231842027eaf60e568fc342f05b6d0cd965ecf5a2a4cf3b6aeb82f94ea6a4eb62a9b36f2b519c63b496047352e11e07b31059160984391a0b3652ff7147bdea109705245fc45c75db2b1bd29a1903404b06461a2e8be53af42e241b8b7c5e26b3e43701a8880282060a25ea0bb44401d538cc56df4ab0dbf4f35e2a78e10a48682bbd41b19d127c6b2236369c6cacce0c78281b0a91e9118e1bad6d1d2e3c044dfbae853e22951e815f15cd49867810a89773914f1841589df20dd3ac4195c5c1a4b11dd2ac46668fb40927d153aa981cee34cdddd320e88d161f9e37638f0c70cfabeb355d39c8a05d64419f34d22782f934c83eb5b403be4b2dbbc8c8958c9c66d549dca18b473477a84a6622bb4b8a1c62a8c1c6e5996032291718fbd19337fd7b609b6db45c6e80c4a3ac7b0edb9cdff12405ef8d217e642907a3444dbd039236288e79480010cd26ac09fe5591313e858c1f195a85d4149b9b8a0cff23f39918e6e3256c4d392ac4bd18a31926990b35f42c67bdee4197cdf8789c09e94f6b886630b915ea21d8003eef001f0131b7920c3b324eab72542473641dc036c41d571744a9f131fcb82c16121be8832487e3134739e2a06c417a71de7635d8a3d104daced1814487829a1b7549e092f1617ea72905fdc81a9271f04452149f4f10650c7fa7d09d6ae7a8006775c636d4dda6d166d37c3e59a4e91262498106fda1b449d3201add7d824718e8a090ff720310c2703e69b86823120c77409245d08deb71fe192f6ead4f94dbc07b211ba3cce90f6de251a4776f1b7b1cf4cb3772650411fe4676f39e37bee7cfe3037e2adf7e74acffbc7d1d5bed7fe2cefee35b9b0e806e6e3a96ff5737779760dacf67c220242d4680c738998005ae12a4538171ddbc6d722709653c7116916704b34879869253d14d54dffcc0b1aee009f8dceed8d73190671785c2ef3f54f56dd2d4842981bcc5840d29ecb3b7f313f1505e24a3db26bd0fdb2e607712c081fe89eea4085a96a11108fa71d60232c3f3ea8cf26cc4cb2694c572a9560766d150fdfd57ac23c00fc0375bdb51c64c6bb8c930e35a3174080863991111cc8239c67ec944d910a62e5324c55d4fe1fd3449056ba6448f4c67cb34daf627f4d23d3b6b002f5e9079fb9ea59e5e3a5c27efca4d0b2e1d90ab6eb1c89a314d75fd32b1f8386dab6064d63423425eac729492470500a7afd2dd4c2f80a70e72523326d0bc51376c75f3c2a77f1b57d8981374d826cd545c29ff816dda4953eca109ee1ea01c6009fb9e850db659f2e2458b3e78dec8cb447573c5765cedcbe42a600dea1f9cbef9424e9b0ae55e296628342a282d8a279d68388537d111a342d68e6cdd46703b05140f77ffcad2e456808a619c8cca44c903c897250a00767a2946055fdaeb6d22bb93853628d8b69fa00e8cbae04bb37a0a04f58b5a44ad520c481d141a4f2607d4e43c72c450262528f01a5aebd2d87665fa93db9aa6406477a87f719f78717367f699f9664eb31dd66860a029f07cd18928ca9c71781d2fc48d7898b344ca859014377bf8e8bec88466793e5763f6081bba522514aff1f8c878ba560af36c24225f2793eac742ccf23b510f0acb77d3d45491d53a629694d5aff342cc45b6024b5de1341b45fa77d552d231b1f7e633c3bdf4f90b4be413c130c16cf3350d2b6a98b05d828a18b998cff3a2345a18af8bd17df4ed46e3d4586f545b4cc789ff18354e8ac730c2464fc06731e3f27605461b4655d95848a1d5770d8010d7a46ab5649b0dd6aeaf8544cdb7d5a6def1746195a89f02ddc575002a1f7e68b35bb16c633372fade8aa5927bf3e107cba8e2d83810c4781050807fda8f6a9d69a889a0e8be48ca1a9db02f97e4c30f97b762a9f837f41ad10ae7c30fdb3aa9387e5142303ad41ab15cdd32b8099586a2901883615ff220c60859b31464ba7a25ccb359c55a4b4d903fb5102e4f80eb48410f1bcf740e1e56cd29f4f20a0e0ff786f1caeb44e1e677416cab54217b41a70492b43bd0f4f527a48ddfc1c6c50ce2b2d1b917c3dba4ec34daacd199e5bfc11f8dabee8ccf9b2146212a66c801c28853cb6d998ae25dff75d9d053dcb8c2147861229ee6a8c55e6e6c7edbd13af8363be42331ccf35b4cc46333d04010754cb18adaf144b2b49a87e7b877613eb30958d060b02bccdb83996d30c98e0e8255e410bf435d80f24267ce713d9585b0995bdc45803abf808f8e610cebeb6c8fc3bd29015b708c1c9f17dd9bfdfee119c437437ec3e462d8d1594eba86be4cde856a6b51eea3eb29d86c1c16f90c5e7a8921449b580553610661d28c10ee8b254ddf3fc29a86586011d1bfd601a8e23df4e573b2becede4abcd15a9c5ada4aab500d7528066d9f04777759f2d47fdc18df087874419876001a4c24d6c1972d851d361a98f54b128dde284c9fb216ec95febae54479607eaff5413a5853480dd6d406c0342b3cc34bbe9c82d9a87662168599586b97e52faf9e0138a181925ad587176f99d1b3868e54fd49278f2863f0614edc19930447aadb7e853e9d6a18fa3621c6b96e6e3ba58566952c1ab4f0fa1ab219f5742edd7ec6e7729a978729bff17361acaa4d3cd4cca7d710c543cf851d6165d53f6140c974e9ed2d331cdb2e361c0bc96e3d4cd3c64725e4fabae745c6f810b236bc3b5e1fbd3b3f5b1fbd7babadde251b0a0cfa342f049c845d7818dc1d8f6d4212dc73900c0bb3632b9049762375ee2bc50089839726a02adfeb5e5f1b40fbbabb24cfde213037cbf5de825fd01e67fe892d0929cff5e373d35945b8a3dd5e9ad80eb3e5ee2a4518ea3357f5e347f68c1a23c10a85d02382e89ec9096d5042bf68b7d964a3156a68f4539dc3ad8e110137710f78606a856d3d1bec1835074d4359c0f6ed78526f02e372d13076cf7a1254af9a9b29597791493e118335962613315a8e5221d93dbea10bad4d35ec1e26082c4d3393c44e0ada4e813692826ef3dabc734fc592dd8319fd7d5edc3a05240460c05c3e790ae92fb2b1425b14acb9f9b7eeb72f5a9e0a131d1b0ccb84c0dd4a8eb034afedb32c73f66a50e25e591167dcaf12ac758db7edb1f55e8a2c5514d546b57d83cae2d13edf9ef4770f0faeff68d7b5601a3514fe2467e5473088ac42a316da974dc51fc6e731a09f393fc6ebf5114c3cb26b44207cd96c7c51eff5802a638fd0d63362cd5a3fd1d15a048d67a181343c0c188c34a68ee95213cd8f1f4941e607b6c9c4fdee3cd1cd9fcebafdf963af58a356dc6c35d8161447c59256639b9e3dfadc790b8c98a5e2868f961e375667109ac998e72d78aeb1e79136c0aaf2faee60900d065983bd0866ed056ba0fdb22a22d3a1be0f1725e3a9f633e349867e79935c09afaa9b0a825b0ac84a2278c51a0335625531526f8b351a2d0f463da5444155aa572146a82a0e8b5434501a388d1753a11ffdc8e268d7b0a160a83f1c77d991e0602e57082d0682c4a665388820b0a517a5312dcbb9dc5a5f9f0cbb33b18ef93db95c66a38e5daf8eedac33cdf35b2b7c38a1f3fb1db6f9b7ee4b17efd2ded84a5e26235647a5e658df958cc3a18c4e2d6d48773b7a770c27b1125f4944040c627d6f405bdc0cac1338b82b0736d2b08d581e880dc984e16d137c466497bebd7fe9f6b42c63f5391dd1166caf6c1784e5a82d7bf222d530894716e76d644dbe703178e95ac252f45fbf5db1128fcba9350bb1fa9474a1216ac4dcb8a4ae66d2cae9b5fc36e4973a451f068745c3cd2a22cd96c9e368d16d541cd71f39ef6337f4edc851460363ac9a9ced15fd46836b544b8d956ff472dc5637d8a130b3e81b3e8034ee4e23f120460b9dd44e7dece8088578cfdd260d7b9ae4e6ea1ac59934b777d4fc96391b2763d3ba9ce68b9b29b56238855b81a56280a4335d43df66f9c1a0c5a101c0299c77cefe57c74a1de6e514954f6d38f53034dc87852c75c839936a1aef342308123858f3a6c8ba1078b71dd550edf8efba0f0e73f47d07bdea5030ce066b6adef7d0cc63b0a6f5e501ca781287880dd66a342271746e44d9b1b38e189854f0f0fabcacce563f0fe6403cccd36494946c95e6c6e82f5ce4caa198f2bb84d8a580fe2ed0dfac02f96ab50668cba7d86df7fc11123eb55189d3be41cb8f28eabf77d06bf627cf6dc3b221b48f8fe4b4ffdb9f39edffcc69ffffa39cf6264be19333bdfbcd7ba33cf3ea25a33c83fff8f56c04919fc4722f9f0d739aae7c9a97b76279c60ba9bdf214fff9492c1570eb8bc7d3728b0dd66ec5b2831135341b1dcdc6e6bb4250cdba2e288bd49580f7b62e198b5494c294e12f5394dfa35f5a51e4f71df54b1708cce6864d84cee8a00a5231295d0bf54b17cc44c9e3980107716de0a72e92d36462c7093f74c162ee1a2ce67ed2743ba77f206bba81519b36dd54f887e64dc777979fc4d27b4f8627f6241b8b87204c8fa233b6634905dec1bd00f940f0080ea71482f1245eba337d68202c7beb8ce7abbc1d8e1fcf57f9d3c1afc487f9562cb72c1ee6f327b01b68b1ad2fe92712e3557569fb3f3eddef1df60eceaf7f3af8b5f5044c6228a8f9f4fa57d3b305ffb52d5b6d36588364096a2c95e8d374458fd173f4eb2c6c7cc16ec5b2663a578c259c9d9048dc589f1c5cdbec932746d7fec3f1a447b8f331b491dac0ae28e65d4f6e36b76289e653016b6e029c5660dd00f41ac6b0b9154bdfcc0fd6a15be66fe77351ec71a96e685bea9b993f046b307bc5e244b2c57c76103c03c7378df616267e538fed99ebbdd3e3d7a7d188c86a727ce779bbb04ff33237d5b59bb9c6dc7c0547631d00aac6c5d89d944a5675764c783f6f3af3247269ef2f67c33c85b518d8268335f2848535ba49290a5ee685ae2ae1eb60cd852bd5d509cd563b262ba2aba3a51191cb3d53a5cf059a0f3f54308f8e2d1f7ea02606504757c7523898f4d0ddebe32b327245723563f0ee161461bc5ec42d727c1b1c50d325a5647c3249d28497684bf1bfc22e07da6b3154fd9f96d9b27c2c3ec8bd852cf3592f53426fa9a714e4b64677bdb646438b70c7bbbf5c2b49fcd7eba383931f2fdeb01db6b941cace0ff6de9ef77b3f1f5cef1f9c41f1cb6d379f6f25de1ae64592693d04b819810b059b0929f98d9ec675b2718c419a25b104516b52433113e94bb1bef2675580c56d76795535e18854934264f0c1d8e860d645d634f481bd1117222958030de81a5b019dff7bfff4a48b65c964d9b40662b4a955b6858d512b00f919143d5f5aac076bc6a7c1555127f695dae65bac616b5e3582be50c951e909a7014d21eb26c342d2cb10c2e8c3289bd4062e3edb916ee685b84bf2854c97fd70f6313e5bb5b80ba7f8a9590e60039dcdf059be71b99714a345ca8bab46e863e1c60676d7664a639db5d925747345adc77cf344749a211be650893937a2c45d7498858b8f2e125e035fe1f797c334bf3f4c1e8e45f3879d8deebf6d74375a5492c2c6802078bc78a050dda2bb042f7fab4e4ab2499225a56085182d4069e14719a270d5acfae3ac9e0c1e1e3b3b762fb0575ed196b7d9484948655a2ed38cda3db68223054626e2cb701706a44ceac4c087691b2861d6b5f20f8b90daeb09bd897b2ec25888a4a6ad90d52f5d9f529afa4c85b18d0a99fffea9f22cecba732e2511d65cdd310df642d12da274c16f0c42ec056b547791cbdbc37660342b844b55ff4ed32b2506ec00ae02b1d57212a942610b1e0c89f56f8b4a618ddfa1d861d5fd902759b3d166f896c860a262ab65fc740abe8cac15fae828025cb90e97575f6f1d00a1ea84a3c3d3312fa74af06f8627b1f69031fe6ad6b8a61033ebf2e40da4a320da6a49296692fa7b79be471be87ba41ab0172f12f7b8a45aa1ff105d57e8e732f117b562bd453053178d18d046b7db659bf8a8ab3e375aa1258603f2431cc4604dc17027a76d00575d0b590ed65ab1fd8edb02e1f91475552528caf5cde6b13bbe7a4868f2d72ca556f66a5d55cda02ac0561aa905b56b8c68f4438816ae1e01e9578e1ffb516662e7a3049353cd00ddcdbacc713ef020d3adbadae4beb9fe9f83c1a5f670586fb34683145dfd05bfd0d9e2485c0dec861afee90184778cc888c176056f86d546c6c865103eb6620b722c568f2c621ff3a94a7925bf510456eb20f0ffea75c48ce60c1232e9f8d3783ae413c6d930cd47b7c6d70d2e266a58735e28640b7ecfcc399dcc9254d151ae27673211a20fceec0de94169b3b36539cdb38664e37c64bce88a64c6f2829d2f86cb86849af3eba928c4380f1d2c92d91c351288eb8f059f4fffe3085e0d1a92bd563d21cd22f76b19330d9edee445524e67e646a3ef332482cf5864650540c1eff1a773163878986316553aae8674f3c1920c9e63c6e0f286792a33e24601bfd80eb3b0bb729e2665737d30280683ece32518db1457eb3728369e83590dc30702809be18b072e094f530d72b828d92429a44973ad1fd86779d6433c3c4bce98472b221af3663588b31dace49c580184819f0a3e4eb29b77d3a41472ae7881aaed4bdcba32f6668ec0e7cf59d3c79558c6d916b4869f39cc1b25d60f52ae56a06f780235c4cb8a87e8247eefb4ff8a6bf0b59ec9ebea545efb9ec13885d7c9959dceebe4aa2bd58ef7fbf0830e3962d0f38c21e80b9ea4eac730e5d9ad2536dfd59c6063321924f2b56a8065971b576e42b1363c9034bd93f8c9d0bc1a1db659013ecfe74dcf8e4b3fc66b96a01f5391aed5616f8275bc7db1b1b1b16b87a71934c244a16030c82211baaa8429cb821c81285a79a354ab28cb8252a82c8bcb04fde61aaca148937e190cca861b67f2e2454488492a98998973f89841c55186e04f162d5f4b7606da9c8071eb1302378518eb422524c293f21809899214c08a905597bdc9ef05e4f74f2ae7830ed60cab746f71c6c3500244e302d951b0dad59e5d47da4e1e4e021d4fda42ec126d5ac8c5419b459878337491a4dc33e225f903fad23b4fc6cdab8af79357b8c51a8d6d770f1313511c2fd23299a7e248b3f948272ffd4e5eaeeae4a5eac40548c08c937d98c723e4c7a88032ba18a47fa0121da041a7dc38c259eec3aae856971b1e31fbdf14395300179a20fe6391970e02f64e76ba6ebc46e725c9ca5d194ecc336f1c1f3f56fbf8f83136a7e43e25d13956bbe61fc2bd87713653d581ca3489fe17802b73c64790380778b6213b43554ed51541f7f973f6ace9218c9959e8acb688640e98bd805904435742783e5730152965bed26b6ae5e9c1205bbf69c780b5d896bd88af1a401d6ab17bd6604dfd9fea082b133ca044a33218e88a68218c7f6b39b94e5dcc47e51b3eba6daa1bc5908f6e355ae6271c0946ce2e8069ecb2519ea6029be71388b9a9ed17755c77fb12677ae169525a7b9c83fedf0804d945b01af80518e25aa152db91f0428081d04cf0acc45cbc6c01e99031eba4017d2e64f29b381d82a952a141a2a7b1045393a958b21144b205772a8ed62a203b673700066c59d1f9b320623913324db2b2a303191b1ba0ce0739ce476d4cd08a3fa009a8fcf9bc3f4d66b1775072153ae673342fb5cca6729d3ce6734314904a7a80e1d2bed167b4c4b75b75aa98b8faa8ccd0819e74244f62cb23c6f06c69e058787f9ff382cfd8efa064f91efefbc32705ab52e39b4f0a82fb6cfcec7fcf16b3a1283e99129b9d9ade7b215c4d931785b60a2002ad652036940d2f8aaecc6734d9b8c8ca22f290ae26158a0cbff49f709903ee1b44b84ba5f3f0f4a2ccc7f2a4046a38041dd9ba4dac1698a980901a0bf24f42477129af379bd538fcd7d76a908990d7d73458b187713c7e8386e9f4096d3658531b26b0bd702486ffa3eb3bccf354f0ec935f61ddfd7824b2b01f569d8c85c629d2e3214ffbb5212562412506a1154338a41a3a0ec7fa0d1d2592b2ee329cc8ee8d28434b0f6fd846d279c0e70fdc01e114788625a61550b4334ab5952f01dc55958ab1c1f3e7f807a646d2f3f145d3e18ae054ab99abbb3c1957a7ab7ec26475c2c2d8169f3f6fae9de205ff1d3288d816d2d378b9e90714d11356c95c5105808ad44b87ff155dc14f7f6ceebf787ad1c8ef5192d4a38890d7f6236ba02b7eced4eb26a05b1909503a3cb431e0d7fff4744db95c39572643c6b3ff7eeae65d31802fc6128221c6cdaaa294a9277ae34958e9693dd4b03f5909b06ef62f47e5c34eb648d3abaf34bc495e1cf0d1d41ba041a2cd46a54f4fa0fc291f483aac80dca0d0cf3be89d91a19a68a34d0cd3e84e40edd135af531db180535ff3cbeb843266274da3de7e543eb42d77367f6dd4f38d400ed1336724114c1f0d623a08eb4e50df17a5189592dd4f05587edf27d918f2bf8cd9381fc16dd644960309dbc59f4d3213245007bdcd20db0a918851c44de46b17cd0de559dd4920d292b705db75a40a36eeda2a10d156ffd8765a2919c42b05d57814618d2756ffcbe623b2b8861a410c4bbac75c3f72aa3f42311debd4bc1f49914e6280d5f7d560558d1aa0f573ad27722560ace3347efe0da7938987126fec59dec9c47d47cd5ca0e533dca2d920525d03e3a887d4b8eb9233c0f388f8af8590e5aeba282a1087059f99040613489fad360c247dc6683e260a6c32d10041b1cef24c5422b3f957cacae5849d63dfb2c112756d877c2e55e28e62f8280dc5c755f37a068e680de25152e67001e59888478cabc9197a071038b94c6670a753dbcfc2023f915e069751e039a0b8853d3258d38664c98415bb87100a085c35518b9b2f68f4620bd0ec2fd457a66252829f1a5377ee6e70018a0c1b030599cd177b41ae72fa2af9af4e8b66e3ff6a7dc53e2f4537cbef9b2dabaa6fb3cd8d8d0db6cefeb6e14c5c1579aa21eec3ae91a8b258cc486ab809784b1b95a855beaa9eba8e4acc771729fba547f67b60b52b499e3e3b0c24760c49e52b50c6763ce85b38141a9a5933d05e40a0c9f1a2b059f7eced1e53f2cd4591e4e166a83de759c76e67ad61319df149a91f4123702d44b3b9b04e87417e26dd1647eadc83ed7958d9a2162fb21ded8429722fcb5410b1007a23ea64ad4284f8613b5ee22666972a5a987259aa02b58efae5c157b6602639d4a39854446ef29c3e4d6d8fd154a0ce2913f730e6914e7d38b1e0d01b6e5ee40fcbc11a047bd77114f4829ae34c6fac88b2262a68996baa0b852f649ede893301b1c0fc74d164b2e85358750a9d0b23550bb2305d369d60021006d90ca36ffbb3bb6726b24a74015977adefee6451805c33cf6539cf3361819119d78a41bb60e4793915371cd2e925a53e662c803837fbac25f0164133953d3b7b8ec945cf98a6bf6aadb8faaf6fc9ec0903fe03d8ebf5a37a3a35a07ec96773b6c31cc7f51e95e3c405321c1c2ac96c26c6092f45ba24913c148149eb986b726962571d7f937e1ff2dec895cddd7cc081584f1886258110839ad1b9c3702ab4833d4ebd912ff4828ca93f32da3f8431f5066b2e739b545b1b781fe669e6a3720111dee0698e80a2930139a54401dd72c8ab3ad23111ee85f6949e25522266134cbc2a08aca93a6632c9f82c194b6f2c8e4cbaf42a16f045a2060d15203e6bf0f4a531e66a0bc9211e6c05c3c1437612b0634b04111902c8d3047c3dd6c7389e42fa1087c535a7a4f6c5072b277c2790e4383f3f383c3fe8bfb9de3f38dafd551de61b2025ecb2349170d1908b213eaf42f08abd7e9f1a7b2eb40dff24412b004d060cd207e3110f91f57015f964a236c2389989cc86c3d0488d99ce68e9926c39783fa17dec65a3cce78d366b80dd93fa639897653e537f29594dfd7b9f8ccba9fa632a4c2599fc26a008bf5cc100f7c0123a99b0e3053eba984714a0427331b4b8cc825a7d237abb8b600550704df1a4247cc52b739278b8d031ee70ff607804a9574f070ea18f3d90c1586d15efe10696d4abb7e7e0af721f35d645f488b2921c9eead85d1513d743ec85a548ee782908b3258cb60e8ee3bd546da344927132029ccc157ffff498b990dd905603f296f0f1d85c8b184188a214d1ed1bbdbe89699a895129c6d7c1f6f671ba10eaee06ec8a2c25a478590ce5a848863a5694a10f76708764fe05c811f40c4522b45d35ded588fe24c45cf17508f93712e6a649d73524e1c7700ceb3f8aac3435af7d55958fa9633e760d28ef5a8d13bee5f994d53febfd508b9b85ec3d2f6151766179d04106f31bfd4e02c4d2e6859814424ea19516e4e977d2aaedf3e11af967773c967622d4fa59d461c2eadf372bb3f1c981e9b053027128fcadf3b8d454cb0b9ca2938fc7b60f2f79aafee8c9e8cffe3b58156b5762ab7bf188fcbaf038612bda535d0777759c2299e0dbb8e2181867d3300db61425911600a5801f84fdeb92eb40e4afdca8d0728e2c21584ffe4316d10442fb9acb88309fb692ea1c7203db09d72930dc7c006b6ab3c12beb4d6d50ed909309a67b3299491375f5bb4964592cbb74f12a4f33aea39a8719cfca91524cc0dfb33cce9f7cda7105ce8aef117a1a27f2a924452fe93141cfde1d15ee49b61090b455898646b04832994fb8b378484a881c342aa596b4e5e7dfa49e444c8637d638cdebce51a78f72969a1b44fbd45292d66aedd50ecf5c18a874303640d144a6d0d78c8151030e059b2cca4521d49d4332504442f41b25fe92db8e476801c2e1a2ea013fb6a06f35deeafab45cc92930486f0eda5c18c64c2d3da4e6195b70e60df251c12c62f2601f1fd40d6f21066b36ecb0c14aed023b97669a93ccc284fff9e23eec5927ea7f01e58414102721a009b0b922d306521a90011f9589e526dc2ca6a13d2c3dade75fdd499296a268aee080c439460b53375cd1da2ec06eb6daae60caa5f9eacc6d50579b266a9e719547da380c023e49a18e8552301d333063793146f68ff98078b6b43331cad334c125b0719ecd58da4c746fbaa80798697b3d77b760f9c44209ee1fbc106a2f8cec451392f2e9a545b3f0a9d37c025bca8405866a9b99a51ac8b497859743d0ec980b22a68fef424a3d780eb0c030aa1b5f1a8ba7240ba60ce3bd8325a696c6f14906a54c9f772b98010198a7dacf5bef6191f3f188cbb2bab803aaf10f3b7356eddb754c3f291308e921fd0bd0676df32f66dde66caadd78fb10d5710a1a9889e5c840b6599e754c422cf270c9f0a1c60ec4822237bab4107cbc34e2a93b60dd9bac8e39143f593dfd186ac7f07e36372f00a8a17692bdc8c683355465b044eb3ab81f0a549192c515543062ec1d10a833bbe74b2dace4524282b33267233e872386972c151cb3695a58901941a7b9c815d7351b8b8817e6a158c9d7700b3479ad9a8d920ea2d18edf5a0c19eab7d32a944268d5093dc07ca567ad5e243cfee23740715fb97336c3ce5602313cb96926c333ece3a58e2a27ab5674d324856c6191125ef051298a7d5ef24aa95c0ccb42d419de85fac3154bb47f7adc4758c7f918d4fd91898e8c3db8ef53e5a577adf5d417b656fda5e47f80911039f77f8697d85b520d375971f1f3d949654b22e4afb02ba3809eb0316bf6cbe3db92ac4acda3571d35b622741f45ffc9a4ffe9b394484f558badd2ee55f747dd89800ada27a83ced059eacb382f009017dcd0d15d157910081dc0f4a36c4b861260f5a10768c7e561587c4f08cbd628d06db62d7432da5963af533a864c933c00c1ec4234affe03cb3ba00792e26697e6f2cb88173d14780d0323e1ab4ecd9b3ffa6d85b7d028d6217f88306fd7ee1ddcdb92738956ad54b63a5badcd2405d9bcfa00b30ddd49844d9abd36d198c2bfcc116e8d3ba5e635f1354c58752b3c7dee4e938a29a76fa96869bd4fa0df75526cd1bb0e12d362c5dbc51d41411ad6cd41965523dae3ba37efa86a689c45ac2e035c746a28e19b3a0bbc32753b5a3fd1fe062634d4f7450751204a5060a66dceab03387132a11f5cb55d568c5b4bc88a04a0ccab0fd1ef157a074582d6de2783037a3f1178b1badd2503958fb11b3551d662734578d3b8e183ca2b93fa13b0c53634aa8b7866f65e3d27cfadfeb9c383ec58cc6101d9d49d2d1986137d57cf65cca7c94408a4f7086b5b46599eee35455b7e89555be11e53b90554ebdc87fe4b39e4f17c06057cac54cbff1435c73ad3448a43a1928fb3cc9c7a2ad697a2678a6753849a9214d5183c7066bf97d268a7d2d770cd6ec0186aa3384702fd888676a5a8b44dc09c6351448ef2fe7395a0d787369632600fc1fb168c7ecbce7cf8d56c2ebbeeebbc9a6fa7322ee89792f1a1be6239e06eb6874dc9861415f1dc543a9ee27600ea1c6a6c7505d632f452cc1fee3476b1fbc6db2709fa57c24a698fc4b9fcf9065daa8650a312a7976930a623a0035ce213a0cc3589dea472f4bcae6469be9fff7d9e25e9edd89a2940e5b92c69aa1455d9c38b1ec2356a7ae3975ce78a1295d7e98e63c1a2510a28978a51f3f62e6628afa014ebb644350b449a6ce02242e3298652a647c007bfd7e5f15ef8b51ca0b8eb688d820a8d9ed76cd30e7b95624b00e7badfb75df9a653e6f63b4e936eb76bbad274c881f9147c3ec27bf8926e24233fed98e6291a0bc5013d53cf41ef3b5902eaf23c9e80d370eac5c4c9b6e21c68b1195fad4ccb76d856860311ccc650317ab03d1c0747df682353a682672e52be260455f04a482a8694a8e53c41c8d669124e4d7a589ca997b663a1be60fddda8535b51e59d5c70c6aae9c07bde9d666918f1ccd16f6f526db71bf349190d2fa33daaed20ead4f4eecd82a6be4bc6536f50de297b640b1efc812fbd4a75b856bbec7d3d12285179a0a6b6498550797bdfff38fab4fdbfecf3f42eca0642475886322cfe92ff13e8c819d181b2a41793dd7c9c910c188d8b67f7a6c38743d4be8fffce31ef6aaeafa47b79afbe1307fb007a0ba63bc7e9d3f34bdf07bd1c340b5ebc2b6d37fa3815665573d7986df5c1c1f1dac9a61522132b59eac6c67cdde3b8243ef8ba69220503ba5ebeb6c2f4d546f3037ec39c379a137044c3d3314ba3e28a2c5c3285dc8e44ea44bebe86fa21114da970263ea5a096604fdbc836eec02928f4e38856f6f108fa0267e0599e1f5121f5e464a6e42037f94af46bc1c4d212a94bafee8d00d6396641875659a8cc722d3515e50715ef2d1949a00b20b4841643fe8982eb533940a2935b072ca33b6d1fdce3812b0712247bc18a3f2fe5e803383aaa9ebbfd3de2009989b62d41793a3c8866570cf6d2683b0221fc14753fd40061de72694828ebf164a6e65cee6a280b0379ccd0b314a2446a7d15f95d0ab8109d09a247782954222b1ea69737374d0bde9820e897df88f8528960dc91a5b7709f4d560f842a9c1dd247742b2fb22cf6ef41b991ec1aaf94d31f9314e27894ef28c12d2f3e7ec19a58cd09dc50a8961044be4dde8621b5e14145bd9cb67f34529c670409a82d8711439ed5ccc98bc487e3be363759ae83a5df0ea79e17ec3d9675b28f1346850e6735a1f8f486d7580389ac1808b9a3787bc10faf1114d0868265e8e79f8f41281870bd19239e7c43267ffde7716861c5e37b34eb0cb594f152f52b3a986c223bc4599a44abc81cba212fc1670d941de73ae2f1b8003d0ed98979cdd739935cc4d0bf578811904c6f9047c5351329eaa4b8999a9b61595d147a4c8d586e4f699554df7bde146fa40d6d2127c76b92da69615f9d5cc1182fbd89bf8241ba58bb143067030f858a377231f0ef3878612a8f45867f958a4701b9d43c220d6d4b999d49ee91db4c866d0980cf3877ef29b095f4ac1d2c78c4367f66f78267aa2527f389d180db36c89921d3cccd3bc304e4516d6381790ce7fe540d5d16668542d9aa3afae016401be43e62d4d1c95641234219b009016ffb5e0a97b38452e3058b300097f2ed584a3e9072665ea1db4b589c042316536866cd786efc2231b1f39831c9e2de10da80d09a72c13643351a803d0cc05bcf0181cd7ed454d4be056e709617361fb3491fe5e58468121c40983230a51acdbd9895f9c880d3a4ad32d0236f68e42b0d034fbc2701f8a45c056ed6658818716eab52cdf72702bb1fc1c41ca52cc9da461095fafae79cf69480cf369ad3c244b4a73f222be97306deb88f615258242185bbdbb44dc4374265e086e14a0fac16b607296cb64ac460354a34f6e384e33311252f2c2c83decfb69394b7f50888874c2324d61536ef0c22c23c263412ccb0b75e42b8a5752739acce7f010488eb9441abd8dc941a24f21cf9d3503f754a61f22256b2213cdd861528849fed0b64e302dd84ffe0161e1986d4c7184fb28caa81a4ffd60c9b84e68ab564d4d03b6b2c0a0b53e5eccc13231ca75630164ce8fe806273b6f4cf63659ceb64e13a999058a3a3cbde74b09fa4c35057bd3229f096258a5e8b00fb80e21b2c3ca9dd8a1fb90dcfea0460d94ea4eeab08ae08a6881ee90b38263ac009114639c131dfd313a6acb3651fa9af8ec08a428737bc001e513f6ede65fbb2fe70f8adc9c273348640367c024349ab4d977f307987f63afe441fc178438e34b8065417dbbf9d7f94397ed82044a38e37c0e0fdf2940523874593fc77c96360d6d22d958a42577ab2ff53b7b215271c7c9739de5607c289bdeb222f3da8c314eaf5e2d4f5410fd35ae82744cd0af591f4139b8947ae260db13f6da4c5f53eb6ea85331ba752e28a1e235a2c556535ebdefc76fadf537567dc157bdc76ef79ec3881fb4a2da77ec4110328e1256d68698d4e992f50e800c0fc637a2ad4f6a3869e3c3d2a01225bf4c74b44c2f8751159947e2c1394cbdab337d65c4b932739e4fa2b78a6acf865c5c50889e56b9cbbc8d520ba6cc00264717d8186d5557da4ce5cf3f1e78b690f06c411e2cb4ea64b0a6ef94e6e45b15960274ff9d392f442683d014b593f4b95364b076114c7c5d4f10dbc10b30f0b9dbc40547315f9b789ab7fe199b8304c0ad39e9bd7702dda71a7e6ceaaccdcbd887b542c1c533256815f9bc48c094b7a2ef529cdf4e9c9a1825ffcabb9bd5aac52fd7277e2d2562adbacbb7b17a92b2000d34aa7bb7228d99b034753acc889af751255d65f1b44fa49b4038f3810b687e6718be9ea873c1c7a759ba3433d99f8bd11624e3955bebebe3824f4ad99d3c941348c77b239484502cd7ffcf389fa94e0ac1c74a828b2e345d0b4049fde5cc0100358b6943b287f5251be579314e324d7f63ef4a58b3d6660835eb6d4e56ac04b3676d8dd4f9f38086460ff63a8faff0dd65db1710e0e3bda789b417ff6bae2ffbdb9a4907a8795ebb10522629517a71e9e09cd9377dcb441cf720898373e60dc18721875e556a6ce95927b181e165545b18e02435b11f67b2657c9bdc1a910b9389026b8c08b4c747d671f6067a08115b8a02d20de9adf1b0c5ccf42fb798997898eb2d46a71c27794bffab3f96f9dc35d2c96d1fd80baf215e364d43f6c2d6c7fcb9a059f193f4143859d1ed4508dbbc850fb9c4e4d09eb10c5598698f8380c83f7bdf25a3722c261dbdff922c29573c487f620facc37e211dd6858959b20efbf509f5b4b0ecd1047cab6b604461af057efc12ee1dc8c90f6db60c0562ef54fc63146685078f0ac03fdddc2bd1320315996a0ba3424b6b1d35af8d9d6b1a982595fdd363cf3b45c1ba15628ef93fb48b0ac87e9edf1b95a4a901988ee0fe852ef559ad3f3daf095ef24409c878cb50d7aa1a8f7be82994167d4fecd7c685052c89f4edb3e6798c852ed9c0748300c9818fbd759131af521b5187708a8626f7af82470c13fbec1547e53c34524cd52dc0fa283d15276bb258d99011dc464e2eb97eccd6c63632d2aab31e8b78941b6fc3eafe016e0aa10d8c000f5b431341517d83b330e16a885b68cc6482c15cf43cd9595e65fa1a443e881b6de23671a6cf8976a1ab7728d5e771289dbab96a6dd7cf79614e76eff8426905848318397ffc88b5f45c55ab699dd460a52768c387da80a56904301a546e409114de702c34304a4156496dddaa76a84fa4e7d8c279e2e8d113e13c6975ed68b5b9d9ea25ae2ce0f62a96e316325acdf203b294554ab06b38889b0b9bb40b9f74d0a86a9c96038ca6fad5cf130df98b4e147d02e30366e56479f41ab2cf4babddd7276f23c26b9e7054e94158c35cd389ef31ee569c7049722bb1ad30c4d16804b2d88d8db98971d7745c3117a26b8544eea9c921a46c2ac1618998049bec371907fee4a77aa83ec359df073e1a0929f3c2f54a1e92b5c947636c9e0e89c5b753df9a53e69de0b7c77cce649917fcc6bc29ccf8125ddbd94cccf262c952c16fc1bdd83e66600027fbe298356cd051d416c3d10a4731496fe1320457ecbba7892406d5b89a5bfa5f6a1b6dd6718bfe18d45b48476865e566eb9ff5fe51d1909e1ac0c30404f30252ee55c22b9a3da8e3b559a0786f9e8a0cec804357696bd7619df2e9ce0baffc2b90742e1434fa458791a852762af07dda433022bebb481534fc57f118266e9af6ca07b8ec0472d87c314c9391df7d4dc42c630dae0d84e65cea306695e8964f624dfdb31e8ddb6d67a64d51ae11b0f7bccc32e8d7e7452520310b229116c85212a0f9a41261e1e9d192a0db1f6ae475eaaa8ef8794193425119c3b1c4dca07478503f84593d9ac77cfebd3e95da55388fc576729882c331a6a909a2379a54aa86029ec50318330c410c802e967371501479d16c5cd048072e290d64aae433518a826dda3752475d8db8a3a38104c2befe3b944d91c4a006f543aac0d82b1f2898bdf2a126b626e64ec309d3a75ec467e4ab5c493fd3d5b17fd6a33e8ef8d51302833b2c28994393f4c79670d35aa45b6b9c36e4b384f7f30d136788ac59d53d391292ddb74d817450e6fd833c904528d13ed4059ac78f1fd9b3a683615f7350cf58cd851e7b667dd67cda6b90eea6f5d8dc45a85ced79251c0cd6ccb3e05a84dc5d98286e6cd2abfb76bb3ad1f40d49fb7287422a19ae17e565ca65e5e5a06eaebc86529456fe0c5d213d554ae51ea9f72a8d83a683c5e99c71fa8a1c0670e2be405581e7bba5566f90fd329fff03b6b42cf3b983fa7576f522fb735fffb9afe9be76179ee89e7ef6753635e60d22af7d753d28d28dc4fd237b9106c7f36241d6788b87bb93a7693530d657d95c2ea2435c75828349052f824845d535c36acd5a16573b0dd5f16bd157d2052181a7d496227eac8632ec7bf5949bdb8dbb1425abf50b5f65326914af7a4dd4355c8f91eab77d06feb479ae8b38c53d97b7caf966f5a0cd96171dfcba4e7ca7113311b60b21ee5fb86b630f26188e2a921b402b224d34d7c82ddd2d9d5d78ad4b10639d5c1c673a7235fabaeb1a44eb7a62401a1b0acf3b0eeaa3cbb9900b24e8dba32c0bb45b90dea922dba34123e826a20a457be705770f082a58c5ce0bc211e4488bd1cc8ccf1f254cad99a9068d404d1eeddd4855f49ba7f125b94d5ab14bce7590670acc5347e5835fb9b2f1223c49d5915a4f4e6fe6d115fd9ae447b05bc1a4638be1673dab8ee9c27bc5f162377ee6a89ef430130eccd2797c58344c486c74916078833abd5fffac4712dd50f503c8641938d6bbc8a813ab17353773cf80c4087d729acc2088bdd15ea916843ac0061ea7334d9d2787711403770cedf6a3fb0368d6d47eb248d3259be7e972924042149e2deff99238da7b8174518a349857ed52d486d3a5cd16dbaaa83c68fc084f3bb67bd6ebb2836cc4e7529ba75563d7b0fe592fd0606b60e2619e4bcc1f912eb52f1c9d02cf1984a363944936ae15e4722e46ab63d9ffefd6d906aa5ad0cefafac815c12d038ded93148fd51c52fa1200793adc15c06ff5a8d4bfc733b51b205f08d74909c0946a85deea9f7435f30e4492d8e0494190acb845f75434ae51bd4697caf52490b428f5db861f7a7cd52305e154076aef180db6dd35112a058e70d9d09d34da6aeb931f4ece6f5c45044804ac1725006df9f525d6ba5a21daf2ed20c6531342f2b8e9b8d1d3d16a19685d3e9fa7cbe6356fbbb80f2435997ba631d1c063c6e90798d15d3c2412d318797c08821393bc1d9144877fd9ec06fce411c3f39a664f5d5b552348438f99b821bdbc0e88325f82451d7bb9b1f92fec8ca73c2b93825d88d134cbd3fc0644995e36eab25d75baa8aaf0a6626ec40ce11c2523914931666a30784cedcef9682a4c499bfd2c0ac57ad8cbee066ba209ba2e1bacc15a7cc396f9025e05d5f64737d544b249024167c0ff31c9c0fc2a4df0194589f7a5eb03d061bf6a20f9105c55391be573fb06a06b327856fcc6062f9896e57c6b7dfdfefebecb016d30ca4bb1b25c3feaed1d9cf40f3a2fbb1bb6d9db0cfc93ed793b5ca2d3da080ef094df83abe04d615cb93378b4051f42994fca7b5e0880335642020409a59367f04ca45701f29db1c1da6e9ff5fa8335f67ab7dfebb701cebbdec59bd3b717ecddeef9f9eec945efa0cf4ecfd9dee9c97eefa2777ad267a7876cf7e457f653ef64bf6ddc20c583e271124256cec0e30ee7b02f848786113dcc13354b7976b3e03782dde477a28098987351cc12696d21010e64fbd72a98cae0bafaa4c5744eec1b7854966932bcdec4abd7600d7e0ed6b66d25380d4ef8cc843919acc1974c7da1f500d8b9e0a3d2d42bd48f4a1530f573c0baddf56e777d94cf6679b63ec232dae677b6dfeb9f1dedfe7ab27b7c707d767e70d8fb857d8ab686305dd01639cb85782857ca0fd77231b726e97a1ebad7d7e2a114d9583655fb36d3954c0014d35815c61500d800184db64853f6fcb9fea459221e1b8e299a20c696c7e2cd1d2301ef907bbfd4564ca777a298a0a5421864ac140fc6d6698b0dd68c6bae498a8c9055a57331f143696aae76ad31b1dc4e8dd38b043d9be799c8cafd647c9c2fe26e458c06ee2737af47e0a1f9d31f0488ae9f9fa9a6c1581948973b84e29b78cefdfea9cdaef9a5a6dceec5c12f17d7a73f1f9c1f1e9dbebb3e383aea9df57bfd2b737d0632ec8a344de618b6e89ab7dab4c8c2a7d20904e724954a7e13c4e7bcc02f91d09c83b571723758c3f89cde72c27ed496e8c68942c321561916a12d330b6d77a79f6cd14c8b93e6752126b1cce1216da97a4eb1e428342921fe9d25f16e8caed92b5a835035db62f6f0d6b4edcfed3449c785c85adeda8200534b328b157467c3dfda81e1ae7992022713f7fda7ede218e1d8b421baeb2ebafca211db0f7e512ca68bc70bbcdaa4c4e70f38e7a204ac9b06fdc87e1b27729e72132a36c2a15f28e6acaa023fb644a2be80a8848479b628c49ee1009ef4f43b72ef4f7f0a4e7f0a4e7f0a4eff24c1c926d6b0a7b25a5409b72e2632e7fb5f0a594a1d3969a8aeb11093a3e48b12f6e18863fae8f56f58a22ee2c3456a3cce33b5ab9db2e7f5a22cf3ecc7225fccff88a446c0d40a6ca44e4517f9074436cbf209fccf1147b877ec93e39ea7c94d86222cbbe65dfb93e62d30148655ec4f52659240aed26bde557f91024806ce7599fe418a535edc68b0f02729ba1345a996184bcd2f52615aced2338830bc43d6aa10b20475c0e560cd0e66b0d636fb42218e3f15a6f897c60b7f001ef8a7e974b076e51ff443b7087b3179ce8870afdf5e5c9c9e5cff787efaf6accd9a207c819437b452de61efe80874226ade68c1d1eef98f07aa042786161df74e7ac7bbd0cc4c292dfef9e0fca2b787e576ded8f5b0d5369b1b97193c53d587a69da8569b55c4c615329e9608db64feb994c94dd654a3b40b149701ab93685e629e226a0d3d6981ee8aa7090da4852f3b9082278a1094bb8024d15027b53aa246658354958a95c8e31c1227dbd419c8a1ae81198333009c9ecd067c68b4821a2fd5768047877c7e8e55f75103d4c40aa441a0c622b0bbeb7e59a3b6d5aafefc9a08c2f29f9a46f9f083efe5970f3f283e980f3fd0d97905dfb70cdd6825d796fa3a708e7d6e628d166cc74c93f9a20916c4d0875231d47080a6e6f6209b41e75d0d94ed30fdd76543d7695ca1a0f88d494d30298450f4988088f31ed57aeff1f43bc9c7a2fb4176e18c5153ab2abb38cf547fa8c4fd06baa336d46ce8aff6afaef6bb56d731fda72ddbaea8025d3f0a5b7d4e437425c0abd15dbf56bfba1f64c39de3b25c0c0fd525df56b25f74c5fa61eb697adf2547aeaa726027528fd6ceac3f5cf3f9f973f6ccac68968fc5c5722e48f94a1c70ed2a28d8dd46f171012866bad8c7477f55e86892a0d8e0271f19b013cfe78b143cbe95b4f3ef7d06620308f8ef7dcaf2b0c422375504ebe7cfc92f47963bde683422af17495a76924c87b0b5290f64d7938326131013fc4e5f0175747529b9fa026c071a75ee04b6968273496e1e90ac4d499f4a98cc41a67e9fe6632ea7efcd0b0445099d577ad2a2a6ff78a5ffe826b206af6f68309064c2dec3c8df63f88f2136b67793bfab2b7e32c2bf67623614c5e9845deb32f025fc6bf75bbcccb0bf8f78296ef262c98e7876e3f9467fa32384b38ba9d07f95394607e9d64406b1e1f4df2b8effbe06d53626787a0f8ab6f71a9678e08a59d9515cdbd950b7663d43cd972d7d595c5f673b3f9898ffd1166f93acfc5730cd0f5b41bfde0b69e2d62458a48f1f1dbba8b21fd38e301fae7ad4f150dfe429b95dac578ae8e52229d1d3e922079c5daba080b6c9f2aca74bfbf342f0b16b5529827621f7b4275899efe5995ccc547d9c335e14fee955c11eab7cfc18a26ebf5770003de3a7b5f65a2d1e359dd8b027d0413791ae232bfbdb40da3a8e362f8a97fa61d2d6366faadb0c03ae173686360da1cda0ed658211d68b4b1b363bcccba2aa990bcbca618533a47e9351f597b3619e76a156a96ee3993efa74c58f1f4d040c770d2af33ec4b747ab1daca7d8e560ed52077bd83597ababc15acba08c13a8c804db3cb6209135d457c6c863f460ad97ddf13419335e966236474b67a4cc2ccf3a661aecbb3aea7e140283352748920787ebbd7edfa563aa17d08cb8a748df6b32586b1181ef1cc3287f2ec44a331faafbaeafdd4f811934aa83f8b9c02c9c7fb2745a9127a181c36b8b0ecac8a16dbf0e4cc456653ebdda95a5d88aacaad7c22387ad80a24ccd4156ab17fddb9f7ad13ff5a27fea453f532fdad661564ff2eccdc5f1112aaf1e7b64b6f07aa33cf36a27a33c83ff403dc523f70f0e77df1e5d5c9ff77e7c73717d7074707c707271fdaeb77ff186edb0cd0dcb4c7bd97c51fe617da88352ab0e7555feb9afd8c07eb49aea1dc60a5a3139b1e7eb424cde6026465907983e5992cfcd954f97b426e8642615bbf847decadd9c7e150df013d4bb093e8a4239fefd341dae9c71a317863f692b312981a2b1a1fe452a601a6428853fb71f794337aacddec9d9db0ba372351f11695476e2dfad1a7dec7eafbffbfae8603f7867d74133c74f55d1f68f7751af8be3a645e7a76f4f003c0c4b2b663dadab1b2944def6f4db44bf4ad0837a44cdaaa3ce9e63442cf2c65dd9170367fdfe7475ef8a277dfb5a1e03004b4c1ea9474af8306befb4bff1be1345f67165b37d8b5ecec5963a0c40e76f51a972dda69bbb567c381e39f9760a64de01a77331b1156021b6f01f3320a3cf9ef1e5509cc33e3da7eca2b552b51ddded9f6f1f036060c503c39647e13fd15ee6f33aa8998b151178fc5a640d6889e767e737a931a8f0944ab1fb6c9c18e59c67753bc1e744bb7b4aa88a50103960bc3138b2251f9f30a5e1323c6269e2cdceb3caec44f2fa84ada839083cea22bb2fa78590d33c0561765ee834f7d924c99252b03457824d6659008dcd4dfbebace45a2df6037be99db1be4d092988ca02a42757f353d5432dc8ba5edbc997881b34bb7bcde23eed29cb35f05fb2dcf7273e6411a9106f7eebecf79f36b7d8cf9b6df6d3cb2df6f34bc806f889757e6097973f6db6d9cf9b576d76f9d3cb36fbf9e5d5d520abbc7cc5d3a0ea1b719b35dcadbad136815d21192a6a318901f7b55497acb151054688db7e809a3dad386af2a268b32410868a828617816f999ff41ebe8d830cdff051ad05e51a9a15164b47287e023b5e1497813aebaad95232f3367bd6848e9bd7200d27dd0c0c3e5bdd719e89d6b6c3ca77bae44581fe95d7b26b53cd11796dc29a09c8d24e9d078ab0a4c58685e0b75542c7d45a4d5114a427183f9913868317850d87cf2649c6d3940cdd9b07edbf719d0132c9650349b371d5f27e35c9ceab424420d7e396d6af5d8b0afa01cf56c38ed8d23b8a0968e2112d2ad56d6e7b9c61b5a2320e244a9ddb750c27e2dd12d1278e852c8bc5a85c4040af8852b1516135348695b9d1b9a8c22859a9db564dd0044fb3bc6974c761b2ce3009a3cc1705240d77493a932b4bba16e6ad804427583bf049ae287da75c9ede6786b7a0ea175b429e65df5d19c700499695700ed5e05784a456664b360e740a998bfc8c27704db493e51554f58a34cbb42a0c1c5f69f679dde2125246e7c30f80adce6bdab2c89867d31021ef371cd231c6ad187a94d39b71ce55f38bdc3c43bb717a054df845027463463893d99361ed88039167ecab8d1d26607ae0317da8d7662f7d795927df562d2e3782649eb660d3656455281902b8e3a99b49127751a241805be8199f9f0e3fd091e317b57a6d36c9c2c4bf7456aab480cb9db5aaeb67fbc13f308e4baa767a8651fde1f0cb33c15271275270f8bcbcdc558bf9bacdf6daec72ff0ad7f372b7cddc27fb268eb0e840f4a7669ac82002b3fa524d923b13b3bccd1e4202559fbba33c1bf1b2f96093db5e5e55c74870c0bfb4f6eaedd9d9c1f9de6effe0fafc80edb0f5e6e56ee7ff5eb5d66f74f9715f17fce74c76d6edd2dc8a211f26134f2430df9a98efd81f167eebeaf4914dda6d9b353a7fd96cb4ba657e94df8b628f4b7404f854e90ed2076ac9acd2af2d8c221062675181112a1c66b2d3a84e5cacebca378b6821468b422677e258a08286d8d7d392266fb3a17386bb38dd3f6d7e4827f77976d3da62784561339e4ef262063eb5f345c9eea7a2108ca313b28d2369deff352860cf03df618ea36b9cb6b60889681826732c20d2b0d538fefea9cdb8d9fe94890e5b11b642d9285c0845199c16cde08028dcd9104e1226e66743f8b7eebc26ed87f458f91463326565812b4be67fa0660ffdbe1798172297f0113c7d60406a090eaf66651275d14d4a89f9a7e60f833554df5ff05b91a14e19ee070da940dbc3f4830c4c02de6649990a294fa00fa318e55982d91a51ac49f26c2f5f803f40b1407d20a6ccebcdf88d385d9452d494f515bb8f17e96b15297a384cc543f58b7e31a39f4f21347e1a968cf27431aba03af1a14e10e47df0e90c923edf89e0737f5a24d96df0f144dcf048dd533536f2eda648c6e75e47eacb1e20499be659f94ec7bab71fd324137b299fcd836f6fc28af99c8f927249bf0468e4c57cca3349be947cd84f7ea3e8df27e3fc9e56f9ad978dbd69fb2dcf67e427e62dea140292bfd0e8de195a0f9f56f09aa4793eae7e96653e8f7d2df25bb1cfe5144ec868493e99f8848745c74a5886e7a74a515d3f8416710b9b6df9a4ede41914d984fc8598240fec4e64e3bce8d8d733fcdc66e2668bbd13c3dba48cb6563210ea8a33f0b952d54bfba0bbbfc04d490d945c5bd74ef70621f9cb297b8f3fdfb7f572a54b36e23391aa43710c7de07322a07511ed6ddd7b7547783f8965d30ccb71682339e134bc5025ddd19417bb6573431dc76fe773731ceb52b918e2109a9b249b0ebc49ea48c26e643a36040426ce6736326b92b9210f970c95e6f03c69f24000bc7ca2d7c5d4969fcb3cb514ad5b43827c9cb6469b356652fdf738ff4dfd73dab802a1ef2dc4bc20471c53272ea4298523a704fbb32c4953aeee4d9d2403d51a9bf15b2159efe05fd94dce92accc19cf404af434706d1b3924d156561035f74e3fbb66e23e85e9d05b55b232cfbb00e60963b65a1f3899c333237650ab3e341dd8198ed55245ee440f005f56c90be0aac33852379fd34b94bb0b234d2593e5cf60dd47c426bfa409173282391172d4576d788487f160cd13442ae8804c51d1140cd6066bec0540ab973770d74026693cd83d91c3ab4f6a5b0b2d4ffea88cddff4018ddbff759cf372fcf27ec7851cc16c51b2ea72f1d9fe38b729a17ec7bcea68598ec0cd6663c49cb7ceb8617cbee285f14e5df6fd4a7ee289f0dd67ef891174bb6a73e7fbfce7fd0f6994218bb8b9ba49c2e86aaeeba0200edd767d0ef94cb6907f75c7daf9ccfe7a9182ebd3e7717b24c32b68b45d17e65520ad9bdc9f39b145e47e003e978bd96b1cbb260bbfdbd5e0f828fc459f06b2e05fbf66f4c64a31c12b27139d5b7d02a17759dbebcfef6e5f5cd485d23c8a53bc575333a18f379ca76586a7f25360f09dc69221acdfb69920ad64cd90f3becaf96366f3570c59af7f2b1d82d9b498b3d671b0f9309fbc89a41d98b17b6b4c5beff9efdeb13ea6cfeed09955efe75db21d4bcd545aaf01bb6f1f0dd70bc29feeddfbe632f58b3d9bc653ffcf003dbfc5b50e69a40a72d0bf03f771836f9c775a216a3395d0970fa3480ec3f99d1e6a6acb3c30cca2f5e24f42e25ef13d0efba279e11d0dc96e1245335ec70d613f682bd0c16c7ea5e00c0cbc7016cfa14e0b7dff4dbd791d6b6abf5b5268ece0ef4addb7dbb8d5fbe6a3fb483efe82d50430111076d579bdf421b0816ab5829e3ec03bfe3725424739bb36c01d2c1bff74f4f1ccfeeb20b08cf241904e39b7059b6191fe68b927d0b47f72c1915b914a33c1b4ba618c9d2e4702f30dfb0babbcf53a13bd982469aff7d9073514c80f39542961dc57e26d9ddb72f39fcb9fe9daa0c0d4ef25268f74d85ce420a19208aa17eed8fa9e9503209d66f70215118013c4c0791ab536bbc1841462e9948b047513d0be9924a982cef182a91d404400056a760d61d76d96b91b1dd54c92e4c42826985f8211f89619edfb2b1980b3d5968882473762f4c943585d2900fd3a5ae67aa6961c908140acbaae2d47dd5fa415f0eae32797f0e4da3aa92c8ebcefdd03ab4def1d9e9f9c5eec98551a5352fff73ebeac556f79b57ad267b86c6663c2b5bafb6ffb20e82e88fc99dc8146d2490be0965ea62910abd862c4d6e051bacf12d36dc1eacb595d8280924b5203722031113660eab921adba08cd01a06f33150e8d1ef4f51ead171b6c91bc6751bf2fdb51dc08a0a4ab125254bf918d629dc0384e9cfa82be0230fa28335f7226aed0b624fa255cf3737487c11ac7310c0d296f65ed9c17fbb1ff2246b36da0d4f478545335e8ea6cdf5ce3ddc583a1f3bb3fc37f55fd9596f59cb3d3b314f74a2ab4c8c5afd4599a4d27754844fc43f31cb8b194f93dfc41bc1c7a2d05a50d2602ad47696eb918a048c799ddf3b3db93838b9b8bef8f5ecc068b31a3a6845e76239178d2dd6d0d6ba6a72d71f3af7f7f79d495ecc3a8b22d5025bc30cdedd156c323005a437799b495136a7808a6cb370859ec130bbea5ea0a53053b7c59e3f67b5a5973eae574e975953c1acb795ff0741825d6d0abf3be6f352144d225772fca4cf6f72dbf9e5f8e84d59822dbd90f539b73122bde3d68a007e79736ee06225fdc35f52fd51ae3f4c0b4da0e4fdd5ddb94642cac7bacff23146e17c737171f6397dab83b0118bbee7e6c53e97694ab786a3baca566c8251c356f04c2aa2d293b8c52e5da29ea0ac39e6256f334b1f7a7c117a77f4e653811f8edc10d7615eccf679c9013e18da9a12e01bda8bac5258f7bd5f1682cfaadf0f935444a0a4f910bf56afc1ea732c2c6404bd9f1371bf0a4c179ded56417b7b7ed417bc184dcfd43d4e56a03db2b31f6716db4ac095a2dc599493cebf369ce903c5d34a83d1809806572d40fc11143fc83c7b0ca340f480ee6aace5ec5a7dba0a091bb235891acac6424d1766c77e8319eb599677e052dd2904da256c6d98e4418401a8b698fc0051f572ebf846295815c7355743f7c644cd613ce381f56f580fe38b98ee6b2d50fc7918e8f0b119446cdd656532134a2e4f32364bd234314279992b81bd28190716246409d184a500296a8335356369e9546cdf3848186818cd1431e3bf4652d7d8621bb0200fb298ece5f96d22d058b1f14bfffcb07371fad3c149c356702c4455e8845566fc41d3d711e818b65867b3ad059564cc4bd12f79b990c43cde2f684af82794bcf02bfb6187bddcd850c79efef03dfb7663832aac0c7bed6a92366c167d27ac5f566317dec3c2135c517c1bc256adcf539e646df6cdfa370d021e7797d13f2ab9251525c441bd11a0b055dd36ae8858a9eb1e837bf3490e5cd40b8a1a624c82a1fe6e039586fdce7309ddcd17f88f22c9fa6edf25e5f4b33ac6ee66f0ba191387ac5eb422d119a0e81df6eccfb0597fba87fdaf700f73eae9f7bd52cc8e1259a289b928de33bc179818060a0f7499513d0a3e9ab2a4143335bbef27495a8a428c150cf91e270528249f2b04786a53552a28efb3fc1c34b5f23d6b42de44d31e20824246cce6e5b20580783666ef75620bcd444dbbff5a8862e9aa9b5169f35c62bda1d03ea44836d1a7875954daccef825c35d0681efaa296a1c070fd46204a5b493ae4d67eddd06e0387be83af475d6f46c1f8499beec350d4d796ae439e7b14884aa76a8d9e9188a2be4d05f44a22fbb3571a912d3735dab77afd1bcdb8feaed8c2e99d28ee1271cf7e4a46b75c4a9626c38217a0aac2331563cda77c04813ee6a86ee2408649e1426290443b00fc4ef3aacdeee65fbbff82df343708d86673d442cfda43a1a87294b3ff9bdce5690e1d43a470b575f3c23d219fd97da288662a0a315cb29b8267a518b7313e4a3e614ab6bb116d902db2a5da5c12ec13154f83ec40c0d6cc3b27304ac35630f9ac4b9533ce470bf7e0a3e64d1a06dc379c68add54683549e024c1d82df94c34652024b21f0f29fa8c338c946e902de5e4db1dbefd01c8f0b0058e68aa3b701eb369be5e364a2fe15304888742ea76dc2ebda4c42f8733c3b78365ecf0b26458ae88df23949516db06c6396f21c5951a9270de4b3fba94e776d4794205e93459125728a4c7a9c339943cfa088d399445de65f25eec163b9dcb2cb7931154afabb133034248a2c2f9391ce99ae56c6b1465324a71c938de21ce2a3360f465730782c5727324f99622734558019893b842fde1cb0fee9e1c5bbddf303d6ebb3b3f3d39f7bfb07fbeec06887c7c4affeb170f0cbd9f9415f9d1c00b0777c76d43bd86fb3dec9ded1dbfddec98fecf5db0b76727ac18e7ac7bd8b837d76710addd253e7901d1f9cefbdd93db9d87ddd3bea5dfc8abcf8b07771a2601f9e9eb35d76b67b7ed1db7b7bb47bcecede9e9f9df60fd8eec93e3b393de99d1c9ef74e7e04c78b2eeb9db0935376f0f3c1c905ebbfd93d3a52dd01bcddb7176f4ecff52977f62b386cb037a747fb07e77df6fa801df5765f1f1d607727bfb2bda3ddde719bedef1eeffe8867e3e9c59b031ca7aa8a98b2776f0ed467d5efee09432f20352425629defee5db4d9c5e9f9856dfeaed73f68b3ddf35e5f4dcee1f9e9310e564df1e9a1aad63b516d4f0e10929a7e7f9d4ecfe1f7dbfe8105caf60f768f7a273ff65563335cd3c09c2f3ad60baa655caca67bc8ed56c903e26227196e1056d19ae634cf6e447181b78fd746e9b3c32e1b07e31b90a62f8a642c32906d0f93424cf287c6956eac2f2dc694443f560e323f9e095a9d473b7216e8ecc50edb24e79f1beaf3e72ce377c90d2ff3a2bb90a2d8bd1159d98548faa7936614ee6572d55237940de70257417553df239da74545d1064f312597b7fb62982fb291685a136270bce290af85fa9e545c183c83026cf068b4600b97f874e03a77cf8a7c9648d12d84ccd33bd16c75cba9c89a91fe580c3df5bf49d60cb229d94818eeca5f3b66399a0a75cff89c613fb38da8f68300f27c57a428f56ac687c56a70a88c0ea341fbeb5ef5afb00625282cca63b5e6175cde4a30482154e82f81b1b23059661867633d636366e409b0a44559b60d8f560dc9b85c66a3699167f942c2a3d4441485182b48c34569564d1fc8103872318361b0792e218f76779041c77f47c8facfd95014f9849d81d8d37dabae8d506273acfc7ea8a7f3139b6450648360d99241e6cc48cd70d84e6c725e557707dbf208270cffa568418de9069eaa6c4cb884a6963191bf705cac7e60cc1bd96eb6fc64615ce4d85dc7f561827f05b1bf5e9bd85f3c93f7eab2926ff9e8bcaada7524d24c5633e890ec921b013a3de752116c1083e2f3e7a66a1014a9021a3466263c92c1e0aae15bd4fd284a3039d6efc5d680d35e8771ea85f560fd92b93ed0a9613d28aeb86f2d25b16b625c471f30c0107e4fe3e91ed84c8e6fd39a9c082669ad0df2a70eb4cd8a038e361763ebeb4a6e39d8629b6cfff4188cae258adf83cc5d80f4f1b96353e2e6f79928f6f599699eed7e4ec4bdb5c21949c5193433b811a519048cc88d001c75e9dadbb578a5405c9a9f576c4bfdf617d2c4a2838085bc105979928f05d3b7f2698ef914d5df7f702dd3d862dafd618b11879aa53cb3089ad1d7ac1abe022a427e73717c54f12a10d6393c7cbb3140c8547cfc68bfaae9a89f3e8c930f0a0b68fd55b7c213a70f71583d8b7da8837319cc2324b3c357ef7cbc6cb3f7b6fa7b769fa4292bf9ad602375cb8157fc5227302c0ac52cde63ef17f95c473c05e3643c98fd7e9c5adcd0bfea2f669f14aeaa6fae84cbbb45bfbc3eddffb5b1153c58c4f79cee93b6fe3f06a15a100e517841443995ddf3ac640b69d93f7bdf79788fba9dcef23d1e0f78c7e292ddc365d3b186eb1897623b8f32af960d2290eba40e6c270eac6b2a545afcf268935f2a6d7e7db4cdafe45178bdc91765fe1169e3a3aa91f2656bbd5b0a59362de22f0874f7f72fada76fdd90b2e3fca24525b144f60e363743e9ebd9b3a6e6b9c77df080477dba0919fcfcb9a35af3c7713e068f6b0b742304ba7edcef1db0cd0d3deec83da345a4987d51aa8b7d26a41165f42bb9121a7a90625294ece0619ee685283e8ba7686b54b433fe64e5c7c7e41635aa9888d23b686a1084151ba08a036f560e4e9c75ba8295361bd1361b9155d74bf8f1a3ab52c39ed1dbe37f90377b08d4f0e653a813e5cd4f62a3e68f83ea36416319da01d068efa0a9a6fb95cf8ad916aa541f116e7486431fa665b6f4f3c78f0e60ff3699b369321ebba9371e6be3dca536ce3cc09e11b2dfe3ce4e38b0e7cf2d16997830b3d14f86a9b3136321de66bec910228dbd6155e7d7c81e3ef0e7cfbddff634236cf2996d0b4161a90c03475af5f32ad186bdaa93337d02615b8fd08e5a2f7f25410eb0c974051ba5b914b264176fdaec625f498e17a01e4b323853b55891e5fe8c24d224dd6cb31e9bf252bfc97dc887dd6ed79c8e6a622e1b176f403bb40fff55b01b575629139d56b442eb6cea5b4ffc10a52ddbac31cfd15ba9d1323603bc4c46d5448dc11ea55062c64001b57c0ad827c252470b4f3251045b3e20a9501622d41321981073a7bff0318c1095a2b51a66d49d24853424b2374dd231ce973b9709fb3d4cc088612a30da3c985a350d99b5999cf2717eafd88a2a6efd4378b2eab38e215ba46a98f1799e9730b38403ab9ff476f02c8c23e5e8c43627f56324a2aad4cd9b7f68a13d83793d28efc108fa2e198b3100915fe900db7cacc2cbba19d5083e7ad24d926c8c61f16334b6d9b61d113774481084da1db4ecc697150ee9e84451e485343c07e221f8d756c912c89a6f3241837d7bb66485e032cfc2f315040afbc32902c8d797de0f5be5f34e66b0e9178560f7021cf5985ce8ab557207f1f2076bb2e4453958a36341a3f4510ea14cd576343abcfdd3637aaf40bb79bb3737218a1b2f84390cce34cb6bbad97e8e592af64ff7de4278aab3d33e3cf25f1f9e1e1d9dbeeb9dfc68b51380983ae8a0177bde6cb22dbb7ab6ae80c88d41cd97aee6265a960b4be23c1b0959e6987b1958230901c033f085b7538b0fb2e7eab356c942151d98ab289b806a9b6d048507d9b829b2b12dc05ccfaaff5dddbd65cc6c4737ab2907fc5fe7e5143722b8d927994cc682d92ba5e3d676aa14f7a8ebd1c9302f57d683e0fbbc28bb7aaaa41a532b702f0ccf991a60112bc9ba010fa2666ee1a951d78f237fb25571ea30a3b89a397b3eb48161681131cf3cbd9a994b60e63b96ef9acfadedeab443728b692e2b62f4236cc9b623fc891a1f7f16b07688eacb16e2441e8888b695aa98b4a57eecb8349c003fc22c36cb7c0e9a88544ccad657bde35475b1d0e3fb329fbf5782e07bd5e5fbe0b0c8f4cd93cf204e653ed1a31263364f1e442a57aaad221212f4b9530936c57e602000bac8529b57be050b7be5176eb14699cf1b96172cd47cf4113a76a224245585bd620dabec6aa886f8eb484c4ad7fe8b45b7c7647df0222a6769bd363972d8985735ada43ca85c767c10958a1f3f429f7e2ce2b0d6a59db3ab7aedaa5f09e85cbbe9cfb4694259709d44c7d035a57cc99a8ab0b44dc6bc85ca46ae891e5491f87cf1258a1134a1fe84603aecdc410323c27bedc1349aaae3c06ba9d628dc27ac03661ce617200a961fce788b8fab7bdb47c92a61eccc748c0970592cc0e981a2e6cd5f04aa71360e46aaf004eb994414e12486db51db96e82da92a5b964837a64124ba395ffa9bf3e5aacdf9526d4e778171847c6115a51e7768e3366d05b5d5f6aca9ae088ad4b713b1e346f14add28b7f46bbe1a735771d6173b04956f6c4357699897653e7bbc1e90b4ad05a8c6aaa11dd023f57440a151e9edaf3768f108d65890a50aa3e9487c3cfef26b9726d3bd7e1f6edafb6294727c04d7c144a456c641f0b77c82cf0ab14bf97b9667757740dd8b3969f843225987bd7fc09366f9de276e73ca9821227d9b5f90e7d83b3f15b89a83e73536ea27bf89260ea70dd58323685791b9420a18f6039c11701ea8e3e1829e2baaf66b7da6ec6275acf88a3520f83134790d74d3f01ef67821c5619af3522372d9c01135d80b0ded056b40309ac6551bd4a82f1e6ff43a6c54d153a8e552a357c36beba7217516b4edfb2faca6ef8009517c67fca1a9ea5f36f04ea8fa5450ae10cca53e37c96705f7b281f1782b9f2b40f0730508516bc2f07b59d98c42b013d44361d50de6b231e3c54d92a9aa4db7ae183f0996ca1cfdb076ad3f044aafb5828604a0c06db1f852bc83c709b520d22a53082d82fa7627f2b246a48695b7527d0d72f8533d316ad4fc976805d47b80b62e87186bca908f19f12a12d28f4df71850c9b644f25cd5b062660301b8f7789aa20104f187f54b9a26246a9bede519864dcd69e2a967b6868d9e9a4fbcba24fc792cdfd31ecfc01787a729e3d8bbbadb135b94b5961f7f05f0c74495507b557063cf73381152876545cb065993f90b2de5d0e83a9edd0bed7230ca405e18cb6d97e68b91d2aec816331d6076a7e6fbc78f810515a936cab34972b330003c232db5028335905f066bea7ae3dab5288cfb222963ede3fed5668e080008df43807bf65b3561830911c07c97b9ce6f8bdae3336f05b4b1bdaed3aa2e1c81e6c2d952b8062705c9eb6115281f195f7c27d59c7d1e8903eccf1a25c3603e21ea29cc60e8c9ac43f7ba88b7754be240101a043f77f8c7be423b9a2261d8e0059f5051506488c3f8cc539344efee6ee2e9866ed1032f059817fff3cf58c99f1d2bd9ea353cd5051ecdb26da343c013e0a29c2f4a26935992f2425b9dbcce17d938c96ef6404a38ffdc9b9e535b982b90ee3ad0549852d70dc6b6409c6aa4455759bf0d495f2cf24297da211bd5111e98fab3be12d89f70286a9ac65b85ab0a5711fb0b4fde818d50e11bee0df5f4e9ac07fab237f9e33780d80d387ee7243dd74adde11a47543f054635f9fd13e85fc1ee6273831df67ed96267a980b81ef8a2cce56ddbd327c06b807e5a80b83063f4d0cae0991bf6cf4cb051528c16333cf325bc4bbab7087c4f2804c6a14930b83ae2007af632192669522ed5dd0c2e1bbd83cd4ddc13c4fb18d5b3285c79cad71155cdc4e7c3991f7fde85d86ff1b44bb141aa72e7f54bab9758bf3c7219f62b44aeb7b5a1ee3e638a74f03be2c5edc5143651c9b1b21ac4961b8fde71653edfb253e08ba904f34ea59d9182e9f83b16109eba902cc5e81970e443b828fea6d36fabbfa4c3187e46d48af40df755785788eaf9d435435b0ea3952ae676810e90e15003489a90e5e3473d7164e4f033356b06170e18bd85a87f5640beb1df35103251f0bbd4840230f322f9ad6f6729b43831f962007bdbe84e14657d1bdd7f47e30b0b924cd401345dcef3722aca64c453b23489d44a14316ec3ebdd42966ca81ff092b281eef79cbdc7bbf67bcd39cc3b5fe95e33adeb174fe1109f8b62921733b86fe0eba474cae260e81f3ffae3f2e505b8ed3fc58ed004a1f3817776eab41f8d07cb15fc695dd164d970b227ac2812576727e8d6afa4e9a5b3e3771437ff23fb1e9b47afcff81aa36a9d8b14c2305fe4bbc530290b5e2cc15670344dd27121b2b67ec126070e848635efa6ff10bd26311fc4538194a88dad6e62beb50bd9f4eefeae87708e4c32ce1c4d25d705425ed9684e4c5ddc21628da8422bcc6a1f8f9365d8056ea18b7c6e324f55545a5dbf8ad162d1e6ea2479acbdad830040a6408b02a903dc3b33790601041ee8f64f301648a6a37b1bdd7b620d22463c1db9bdecd3d2f3e77a81ed1e768b0187ee8ed3a8f925f6fdda6b92e2b11e6b03879369f429b4e3d34b4396fc77720052c202b43a219e9d60bddaf450f59a038a9d0ad29d70c5fcc3d60341456273d07a150249985911195572282e6d444ab458b481168be66cc632d098879674c6f60498ff5028f97a21c59871e90c61f41130cef100c8b374c9f28cc1be7601981bdaf647957a261f4331e57718227d7d9d8d9309389997e99241bc00831c786acf21e802048828bbf8b8438a8973b0860646c6f983d18a07a36b9b87e51ca23be096c8f2b24b0c1835e7aa1232e64b71d35ddd7eb6d4ed5cda4caf455dbb23a067d790de893a3b21fbe8385c82fa46e6f88c2648b03b151ed32198074d0a73a2ad6ca39664b72cf9684aa68e67633a23966262b7151435963a06e654cc8ca220b601ea86e74d7f302262bbed56fe99cfd45e99b3cadaa6d0e342c99e7367c3eb9d24cf9f7bbfdd61f7ac6ae0e8f896ff2e696fd7f347cc33654c4ef83911f7f3bca891174a2a30542fa6e28120f2958c137c39e1b3dffff1a68323c03121a37f5c1eb21742a7e8a777057bc4a8627a45681bdfb524cb44616f0de468b6b783180c94c97d20ee9eb0118a2048c9cffc997f45eeb5803ddb2261aebd0bf0232ded75d883909b89a467a4c3a713ccb856d3041f1df7a3472541ae02462b86a2708edcd5539f98b143929c8bdbb552348e2ed020453c6c9d5205452288fa63cdb8b8fee8cc41ff010648ce047521cb7cb6e7cc061ff1c36583b5441e2a045f4186e0aaad03967e4dd3ec27daf2572cb615b8c73d5a2ba6ec30fd15e8f695844880c4b079a7c6e192ba2c10bbe6271a9b9bc9f42da2a3a6cf68d9eadc7578e60b43537842b32103a90fb266a1ff607f1e44d04340235b84e2538d8ef3901e962b5c7ffed9e6cfd4b4591baf132b30b898561cf39eea8224e8a9e5c1f6f30c8874a5f786500cd9cebda1f42ccf842374dd55a597aa599a1ad68a0150ee671cde515e5e64635e2442627c22084f467c63667f58898ea1a5eacb6d9c29af8a317ed159dfeb9bbb011c587b35f3175c5ec05648914c30deb87d9a2ffc75580f4852737ff37956f5c8b00f2d790e89b94a1781c9efb2ee9d002a3471b2da6e52da6606dad5917e9e52e7afbeb0f6d755c2da5f9db0f624f7394245be1cb1e1c9031beeb08e38dd8572f74aee8213a524991a23e5ca4ca23244e7febbd392b1f6ef32dca34a4cb0274d6db72fbd017f9ea4ed3b6d79838e3de73a9ce9bd75c825463c544b2228b973e9131c0b57481f8dc07437bca8c935a3a797181a80b60272b5fbb25b089ad8d9ef173c3756398245fbc5a57e92fd7098067dc5b051665f39e0cfe8387cfaa9c0aa6011ba2754d45b8fdf7afc4eda6c25e91155a1e25c8ac9825e106edfdca96ab4d192ce8716a39ec82ae27b8eba5d1bf1c9f33a0c8c76aefd671f1c2e7d078a4dbc0b25e02e09dacb9f34d5da34afaeb9058655cdeb4b75cdcc13a2a7a6a9aa25b6232db58666c760f88202893530ef91bebe26a2df88352ef42ce0105f78406a28737d1d45ab3425da32c26664db68fe201cd14d0e7201ab7045a79720af97ebeb6c773c36679a345e30fa3728c8f02f753d26cf0667f8d9a6e83401f24d3b909ca0101f1022f3170279655b6f99bfb0aeedbabade4f81a1aac64058a5d953801456471082711abea7c0d1b52d209310c4c28ba98d760bc169fe6aaa29519f3d9535dd6aaa4cbf3e92ceb0e937cc96105954c98e49b9b4929a158781f6def34599bfc710a5786b42b751f70162d8ce721d2e98dff124050b3a39e7231df2f8cb4d6a20a43a5a5dc39fda87c2d8f64058e3c57ccc4bc1681f11db9c39064ee9b0636de42e9da917ccba12ba75ad1ac132c08224b0d486f3e39874a90d4c7717657e6626ad69a70fa4a3738456153c57c99b6ec34624cdef7c49f3bb5592e677575a196544308b9cf58f6f282ad0d7a34e251487ad1fded24211ed8ba56ca27a1c95a1806bd9a65654919d1adb255b66c6ed3b1365319a55ea36da926a450fce6a016116ded1667a240d9ccacc7563ccb03e7b2411a66431c10f7e47780708bb312decbb99c7b89f3c18ff6621f3a21463c5c7884d23a4ee8435d4c9eaa349b52b366e06835bb1dc52ff31834272d029b46d2d5e08be6599a8abd21a78169badae4291a04012963b2edd55d0588771f843b7dc76773e8c406d8649065d8d3cad78f34bef398b72f497c112074cfd25e5ea015fffc18ac1d4b2e6f97303212c7fe3207d6a558cf52d9382fb20199f1f01db2bbadcb8526bcbb6e80ce88fce76c684af5232866531729e2665b3d169b42e37afe89955c5e70598a66a18af58a3d3602f08d42dd66844ec148dc0ae0fae4a4ced3fe2de274b483f464a029d0bebe069893f629e4855258c6e53411483626b50103f6528acf21e8797c8561c78a853493e53a7b29b99a357bfc1a993c78596308177fe3ff6fe7dbf8de35814855fa5a51d0b800802a46cc709655a9ba2e8842bb2a82dcaf6ca4770090da0018c399846a607246153dfef3cc479c2f324e7d755d5d7e90141d949bcf6d9fec322667aaa6fd5d5752f332acf6eecc6dc941fc3cc1385292ce32112d7e1c3742d9f8737e0e79b6ec0cf2f4da6a24110c07ff62fd68e842694fb854beff2ac0f38a1d8884e06ec1fd469444fc06428384989e845b863ccffbf6d04780dddeab886944ef36844d4825aefc924587a6681cf62c04b3f388fa6f538ba2795a6a3a8b79bbd14d0fe988aada3362f9de4e080aeef7161b817eabb84ed33f65d25c620e511b9c3d6911130e903b9c36e6b6641eca5010f9740867cc1224047c8d7f049286713bc1ac011ce99f7d33c5b2ec5246c97c22b1a698299f7100c6a2d47bec0ad1203d702de12edc11123086ed6bec7700bdfb46a6bea2e5253a3b2af01de01f43bfceaae92cbfeccaf5709b517ebc537f4a02fe89d5fc67ce385ea1b173eed165dba7be9f8fcdcfdd4d0df7ad7dd4c54e666b9cfd671ffbdebe2d6c3eba776fb9ae93efcf6ad611edbf58d6a50bdcac7f78dc227f6ec06f94fbc91dffa5dd5efa933eb1013e1fdd2e31c930cdedea5cdd0430b09c9bc22b7747ce5dc473d424e97ea73abc42254e9d6ef874a32b972ea5a938520ece4cc2a7343c2e78690f40df45efb1e10e04e07357bf55e8cd63e0a7afa128199092b69585c96e901d25054ae01e66bdf31cf2b80a3fe2acbec67287840d48428884b66e76d0b26b073f908785650261203e805a5223184c85d77503c8e97ebfa07b989470ff29c2c0457abd2ecbfd77c2e6c343a2c66a28fef826f1fddfb71b07b17665a97506333c452efe54ee2a5ebf792f5d933b6ebed6ded6d4a45823e67fe5a39cfdb6090419be448a316c150522b759930553db4cfe47d164e27958225e826bc21becb16d9187d2f869af31d9ada5872caa0a4e6275ee3f0ed47c6cb327aa319c1e811c6f90674140e079325dbdd6f4a25d7e665d945ef08e731b152821548e3217b543635c505e012f20a21bb7048dd30be5a7959c2f336c27799ab7407541b6c08440bcbc241d615be10e8ad9bc912325ec0821a8d7d0019740d085b93d944fe5a0049cb801710dcf450bafce1796efe951b73aa9be0ee68986174707d8fa0f9d61b05ad9b760b7b767cd3785526729bad4ac88e7f09b4c005fc7ac1c16e9ff581d86143a2d5433daca1ed6948fe35dec01de987dd0229d4a0aa1b971f17ed028c93a30a4b9be9899a7b033a88f8bdd7522e5955cad50c2b19e619a6f25f58253af8aaacd051c596d9c7224350ff0e716d4189dfe75ab29c64c8f37bbaf487d90988bfd2dffb8682e025a1a51d6892338388eb5d76662af0d9843d853e7ac698af2a8fc5b58c99d77b0a71cb55612d0d6d3b8a2ec332cbba634f5ab0efdfcb77ab428ba5100a1e292cdca21fb8bf7b2acfc6a2bdd7f58e8ad75d4bcfa4451de2d6879dd9caa09e74400d829c03e6e145cb346c5d7602932596d5dd9d648a8f72b19b6785601359ed16d258aab1e958164ae6a277c3cba2dd1a1ac03d0377886171cb528c3904c6c1d171cd8ae1a356ad50306885f4caa5c6a9a55deffbe7db8db63ef79e2874e3094627b8ba2a45275c09604dad7e02a8ba939928724f2ca046de62998b4a5024f3bb205f9681e6857a8cc45496020f96c5550313b37e6a96b314d7995ca17d782285095226780ba194ad4daa84cbea05ff419d6863a326e6350ee549b471f1bdc14b27466d8411e9c0982ba63c2da830b945cac09a1d1033aa8eecdb36c1344875498c5849b79f916b900937d253216eec66419dc2e5325f1bef37d300f429bdaf4725eb7f032fdec204d8d0547ac27e875081800d57f4cb445ac8692a3cf37e1298223308bbed2ec36c6a440e3845aa2ae55a1f228c60a77ec16b73ba2ac1b10041983b52e3590f54b0bd4cbd32df47b74b6ce8a3cd32e482f2db1c00d292ec843aa803f68bb145f1b29437e7b5a7151558f41f926a86fce1e821edd20104611bf1cb485475e5b94dcea01b6fc2d19a3edaad08ba5df40ce6c00f4f070bbf498aef1974030d7127181c5f559279166055e943ed440af2788faec82e6db0bb05ac6c4f25a3e0621d5a38c05ca08f2f7d8a7ea553a419b2cc6659c1f3b7be69ffaa9037a845a0b78665b3abe60bf949d376b80a6e96e9357fc892ba3b4f2344af6626dedc9ccccbb815b8e45876c6d49e8ad77f585ba1a18f3db5e53b8c16e8b95b331f17d8e1064409f0c4531f3463af4fa243c54db0b04dab1f0eb9f3bc01be1de5c6d16b811dc304b4bcce474ae6ab4ab46052c423fa0c99e94b0ba63eb7041d442c136e9bf3e8b744150e0124c51aca024bdb0de1f788431d12f3193a51c942a8f01343aadd2786123e0a4821829e7849baea2fc3ac51c13a99b1b5713275c93d6a8dc3f25b07171b2561343e3b706c83601acb1d648a11d7f2301ebb16ec928e6a31bb76827df8aca7f9d32bb84417b5c7bcca85884ce48185bcc0c018706bd27f7be671c38bd15bfa19dac73d7ead308e90feb01a75dcc446a181d48a632e364443fbb5f60803ab3de60b911f73253a0da6093b92c4375a747ecbd598c3afaea780240dfab52826b224189d0695efb999a2098dd0abd38eaada81de1487022557f13666ad856a7559eb4731baca401ff99dfc59ff73d6bab49a3ec8d54b05a996364fd49c9747557bafd3abe4f7ba819e411b6c57a6090a3736ff763afd1c8ea831e31536808eb1a54b3f074561a549ed470d5fb0560bc600bf76bcb11fd881054edb51e55ac895d8037ee782805fc6d56ceb5a046ad99c2f8eecd31ffdfa4ec09d29efa2f8342692d844c345a6594043dc80a0cad5780e1ea9105e9e4dd910186560e78629e2e387f9c63423a6f72d07abd509092ecdb2140b792d8e0cafd86eddeeda3bccca86fe07c8b17b9758abd5d80ad3246c6840491136b4303ebf1b9a5827e40d6df445753ca74205cded2e1a0fb01fdb74e9601062012012804fae4551bdce54250a7d05e3758bcbecf321d954df392513b7cb3c1b67d59a7175459160c0af8a5ca09065b18aeee089845c3620cb235c271041f12d12540db585b27f8150622e47fcfaac20cc4c22888b0ca4e65064c667895271dcfa75fa2e207f01af6abd11a0ef0d254d7b3aa0937bf252b52ef009bf85c04da1c97dc19789c30f5eb0463f07764093acb923734820f05efa812561087e97896bf8c73051dd20ecded77465ea2566964dc7e5bb78137b7560ce3fac84a73f7d117eba69427e438087b07a7c3209f0bd5d1bbe4d9ea25476ed257cfc1844aee2882c02a6172a0ec9a13178b1abf72e9f8faac19bde72a5e6262b6488b9e7a25a2d4d8827c007e52d1c6fcb3792ebb46fa72412f9307d6c995d93235c8ccc4a0f23222e9ef841671ab38b8a2e0d08fc84fd62a2e07c144e42531844585815b8adbcafd9a10f0b16d09d2ba76eaaa342ab84de5add3acc8d6801095e30e8bf3ed0a0a0aa9f810d9ebb220a31ae447ab14d27d1cac0268f757202f828815dfe0b379ee0b7d70e66a84e2c076ea51e53d041b70af1f1946abef1c984e112f795b75ca86dc36a40a518f37cbcca7965146f69dd9dd5ed40de9a6a2ed69095a62ab3d94c94db083c298c458625be0fbd44ce1e7b14ac434234d44b9838009bb41c5d56d337855ac59438f80e2fea7fdf31c74bb6f99cc374fc130de32def3fd8c9439be86dd3b9c5c3497daa879cd1c47149d84b82acbcf692490eb2f96c1aaf741a2bb85ca27771137db30eab89516af1ec72c3c18ebe8dcfb34bbc70ff812efdbd4c9ce91b89194ecd994ee360d311d6ddf05c4902432f528a1bc68bf54296026d8fab22174a414513d4f4187d1179232c78b1e279befe448129cd343b22712f8d18f3622cf2a3225b80b5e9db52b3eb8da73da229c9d396242a78ee1214e3bdc873280b6c4a7664c57205b95738c328be4fb1c83efd4870528580ef5325bd592d44998ddb45a82c2a507636a1ab6ff89bb6e7da5a743a648dcb8aac12edd8cff99c187810948cf71bcef8131c179bd97b2fe54125d16a14f4db1497e65536c1472858706b69f7ec88fa3451e9a28dce7da2395d88a24c18ca257ac111d09afb713af42241f0f4980215cbaac848dc0533c364824f32ebe8b88240d50277182642e1ab74a14f659ecb1bb8ee9d5ee5825cbebad60d8c12107799737e23c7d8841b1c0cd29570750846054cc03bc2b7dc9a592c6f5bb179d9c859286f935f05f301b11df83ea9513448e88c5bff064c0c3afffda0a355e27828e9869a404befe536a889c877e8c1c4fd0a3478d848e30adc7c1e4ed88df746da462fa41862a7219adb8088955630d49a35db439bff692b7b84d8f05de8d3f26951b3d185b809548f421f76d96bc202a46a1e2eec1a4c70282793ded70d3d78c8e97ab10f7fa39e7eab1860f0cbf3163685d94e8589361ccbfaf262edd4f854bc9a65051b7a2b3ddcecb66d2cc1196aacd80d5fb31ba1590aeb5cc23e2f219154b5f65db526134a6c66825920af27417b2918bfe1a5e87a5f8ce52a9f801743692cd2de5618cf247257346e27042fcf0a135394290bf311309df61682491b7f81d05849d7cff3fb17cd21cf960b077ca669a9396dae307baa878661e62be2c20372b561ec1e8db249c0cb52de9cb8147766f1c0c9c4b942404232c8c3e9073819b61281fb909e3c0988a36b704eb7375a452c458b96de8765c6ee7d9dd091d69d6cccede6e9e0bda36b5c96ae45b9aec0db14a8a3cb534b4836427f3bf4b39180ab26d56cb087f66921c404de8d04b3b2c5846a7be80f00d4589690e23fb4a36f610a4d3b0ea6d36611adad3b9d18013c0869b92f1b978d60d130012de3ec420908751a47f3f849f914ad994c9d15af259ff832bbc168ab98304b721628ed1c69dbc2f9c6849b45313769c79ba640503ba4ff1d9d6cc062799f8f4dc2bd26119ed3bc6ef77bd2dce74433b05118216b1458e2fc10218cd9810b7b68b66de8dddd44277891a012b4b29a1595ab2af4e633841e2fc056c5662b5ef2a212c29e7d2f5b92b2849ca8a059241b3f81600fd228d6e0e032a8b922d2d7dbf173bf5522947b583a570076ae29ee3b5023edb2d3691036862f21b84d37d004a7623ccf37f043b8862de5ab69111881d0dfa2d6612e58c5737481cc6e45bebb14e514e9337e9a15b31e3bad5a8aa94a9fbc42566c7f6fef33460dbb6cb4d2f735809b4909f4505f22bcd063d6289215e4528954fe55a6c62ba5f4b0e6a214076c5e554b75d0efcfb26abe1af5c672d1ff56fcfc43c955c5fb4b4335fbcb559ef7bfdaffd20efeb5bc61afde9e32352e852814c30b8c1b04c69b6894afca122ce268edd4a83c5de53955a566ed733ee5650600b9623722cf21777b369bfbc03b3ddbedb75929a6f216fc1134412a242e2b4096a5bf72407b261293aa6394198c4773625adc0678f3a82bd7d35991afb18e862c2a9e7b64c814feeea3619b38704c0a8e17b02d7ed46b3069be435430b41d9d7a3d4cf46c841ff4cb3fb8446bbe3f9a7500b27e6f41eb9ec7e8a17385f3ed0c1bda372e089af4aa90451a7e5830d35c42f54278053f9e3b6a5dc877f4a59d2f3d6a5fc75119d7c8513df7cb06d1384c5909e8d9ddc31880e815d78009868d0969a39699fa41f38f639e43b820c6191bcd89d393441e8071cc60a67ef0f276848d5d7ea0dd56ed432d25c130dff23283b27fd1543f63cfc0deebcfe83388b233d983aaf9d96462a79afe1a743b11087ce1f2835b947e2f4f8b4acc006f1ef964f085ddc5037fdd204fad9bffdd5d6d562f086d0e98410b57284883d8aac7d2da28c3d2a718369e187e3b581b548cba613e79c2c29e083f28bfcf3e3bf09f74fc38f3dab00d6e5572d98982d41bdb62834e18e79e9a85f1e6d12deaa5573365481fd8fe4b79a344a927d7a7e7fdac570955b50b7e9dcd7825cbde4a89f268468eacbf2735cabf38fd589c7ccc29222c67e7d15bbdc086ddb9b5346fed3d5d47e42722ca44757d331b08fdb998f1f1da79f4149e5072fdccd1406cf797e5ea683c16b9c0154129c304bc85c2b6e72cb6216c29f236ed591750dfc1cc24839a85bd7b6e1e9b4617e49471c69d20c2e9c7a3776f4edffce5800da33e86b4be4caf18dca4437fbf3c3f3ab0a3197608ea83198fd4ac60d355b52a853e8e0a70cc71943f291329e5c56a448360871b973f4e9ab3a9ad639aeb8b994c376c93dc90bb434aa3d2497ebcb1b85490d7141d3348ad3d8873b9d4d8fec8dd7d90c8966cc4d5144343b96126e23a1b8bb79ae57ba757807dcd9e413a744bd3bcba1354f5fd165193ec197e60fec8abe1ee577e5fe317a52d006e03f3f191513dc53b9e29507a697cabca9518027ab9b48ffab5c12f230f6bf10a5cf7a059ce2bf1f96418da179c8e2350d7dc18e94d0be40b0e37460ed926d13ee6f95693933321b22f580f42efe389574b782bdf47588942de74592eb46c016a52ce5425968c6cc713964b79a5851dacaa2727828d73a944be66ed9b6afaa243f32079692c8bcacb5243b39de95b8a49a8f28d159cc0bc832b23265da76e5df0359bf3e512ccdebc0a80681c5b640af8ac891f366602d0a8730225af453945f319a49248a53883ecff26d13fcc7059ca512e1690607859ca6bd086dc487b55b56f6155d69d2e9977789ea34f064554682ab75aa0e4e3a577a77c51a8dbe8b945bbf18576ab8fd3e8b204657f7dd85da3d556c24c61783b44bc95cba11f4ce9af3fabe40d2f270ad64243d71445f0099353a338af1471313dff1202af5e4cca6d6f4174060e327543dd6c3cb4de81ed78d9c2c19921a07599625fcfab45fe4d705460c354944546d0d0cc7ea398c6da5858c6c429da1a921ddbabde2d7d3fd44140951f0f17700efe0053b9a23d2b18aec26ef045507273272a7fd5600a4bc0f1b2a8344219d4a36500509cb6f963b8412f7dfa1804333f60ea8416a9b9ff1865742ebd048df1cc53605c7e992620f589139c5a1269bfb64b44eeb57c14d14d670e3016ecf03df88a7ba4bedd623b8cca05b596b75da67f631522f8b9d73116730208e7e3d216c50b9ebfac3f8f3cdd1de54e67e397d5fc469499125d732fa1ab052f26bc9c2075e8b2a11eb0fe179109afb921acef304c1f47a6e2acd0220d5680aa1f70f682ed6ad169ff79fc05957eaaa15cfc45bc367a019fba5e1b560a96fda9d7d58695c351efb016ee10c07029289cedcacf2be1d9bc2c3f1468710f22a97f60a36dd14509ad70430f90712a898d5b5ef862d06b50cddc075333a6d9ef2d07177c6beac4060644d7a767668b3e0ca41968d7640d6b34836d1f9287215a0a6b32f3c24626fa11e5a7153a502903833cb9fdd01af05e440be22785f83564ca60bbf5341fc9ec19a5f8c74aa82a2b66403e7731c64e4ebd1716c226006292fede9bee27c524be13ff5865651894188eb91b0e21a8096fa740126852e6bc3760318c47b41268388c38156fa6ccd0d9217bf4c81bcb9327cdc193dbcbbfe1ba7b30fd0417f6196474615f7b63c6476ed403171061061e2cca8760355bc316e4e20a9067473f7eee67f37048107d42c3365fd4046ef7e10e6b0507a634ab3a5a037df4c715b6a53c36fa20dfc8f2aa6b8b7257d294876459658c56095891e06d0b9799f5f9177afafccef3e303856dd44d054afb3f405bf408d17f594a2a0b7625c4f2bd9c0920a6f1fe99fb8e90b446201ab54b2de8475fa73efc56bd6e195e0781a225f0d370ba34e2c39bfc42b4545a421a7c108d4d295f0ea93195c8c5b892a5171987b1a7615f503208a0384e361a4d4ad5d2fbc74a94eb73eaa3ed7fd1e8c6a2058e29c69660869138cedf77b37b1480ac85c0da454c72bed83f78328663d0bd720663b70b64ab6963b13b23615b4824f04e20861592504261bc2c873c755a3ef412547a13482e9b2d4b1b4ccf9b5f933e10da1b8418daeaffa971502397f9a879d5d27e0491e526cccaf96fb6bc6d69a96a3652e5a200238105b339ed643611c77c99553ccf7e86fb25fcf23de9dd5e870931310f66f471af92afe58d095db78d795ed9bc993ee874ea4cb94c3636828753e8a548cb79f6b3a8254a0d30f1221705645e25f50731be21c9b4790617fc4adf612e9b146e37f86c57c6b9cfed2e5899450119e2c8c69d151ae37f72579aebba924bc84f0ccbe8a8980577814b71c976eb73fc9a8602a291cb3d963044600bb67bc8c2dfdb75e425edc31d20abb719727dd08af28bd686fc8d1900f5b6c5a0773c4b6733e0dd08b07ff77c72062fdf7d6a2c8a0afce5029735837ff4363554f744631d2555ad8dbfcf9e4177c75eaa1b0de10770c446b709fd0c7997492d0d0e2213bf8abc0235eaf1f158ae0a57d71cd2a7e93b02b3eecea1f4c154ba4a45deb414e9f6d3d542379b27f0f777300e3ace5e9cca58a98b160ed248e61e15b97485e71da897c0c23480c2b2ef09509af904c5542b02ea96f7d0ecdfeea6c3539fd06e6d60cff12ec560bae05a06d97624f43e921a5b730afaa6cc662bb952e8b7ed2e38f2cbf2c6688b79e31f5941e662c4ab3a4e75ddd79dae496e5f77983d0c3eace73b42c6f290b5139c273b64a02c0065b7458b44431c4bd7732569bbc175b68340574897b55a9d6e8a0fbe471fb121b3beab99f2cfcab1efba68486953cbb61f7eb121efbef57370c560bcc03bafc88ce68245512f59dd8228e340b598f8121bd5bed50013829dfd384a9f6a2219c663b10c928c81e732f88f29e34e457be1fb96a2cce0eb857e0893c62bc64b71006f76a9569bf951c9a5fd1b959ee617e943cd4f50935a27b0133e9e7bbb32e605124eee610d1c6eb4f067aab2ddefc29a59b8bb029215135cbb6d3064966902b42c855e14c155865964d672a5e11657366d2cc7ec36c03354129d493060b4ccaa4a142ce7c56cc56742f5d85fad8b49be666db41181ce9726dce9b2210e11b4671a24bc36e3041581ee20587062c800242c95af470e415672e920ea07d6c8448b702e1726efbfb8e58b25e848bd0dace412568db59d61cc73df453e84e7d9ac10934eb0b9b4f6f021360b3f85a1451f1abdb8fe06ffeed2cde035d238e58d89ee6957f50febfcb9dbb48bdd00f218f17cb4f61c81ed62fc4f55f12a1be3df5a8e35aa487c228a9553151a2ac227b2c88314e2de59b82f7c37108920441aeadae1d2698103aadcd1bf7ace146fe81a50f0216d9395515c031b9688cfa9112e6ef8cb7b6ebfd6e8655a1921089e610b573da1cc403ea4e28c43370b424ebb6966da80736ffdb9bb85a0245b9ffb3e537f810b816b862aab32df17b4cb0c2d37e549d56aa4c43f5690f23bdc8b712ec757379912ac2d4b066c992877ed53cfc9f5b7b87276d951ada6463bab88f82a47bf4c998e846b348d91ed62548b84cc16a045e2f95558f85299c6763ed155477a75ef03d41c126f9b7915d154c273cb404d969731e34c96beda0f4b5fed6f2a7db5efca8c5b691cf2a71fc6389310c37d7934f101e21582db61fb9dde5816635eb5d3edf6bad87327e06bcc445f40aa72cd69969023ee40fff6bd055f9efcf5e887d3b377e7c68af5edebd3b707aca5190d2ca573fcfaecf86f3f9e9e9f1cb0965d5d7a75f6fd9bf727ef8216d1e6b606c5c77f9553e1ef5163eb32f2e7d932a9ae4505dd302b0a512673c0755d9086b1d90e35b4a16fe669c811d7aca185feeed7c8daf039c3793e79524b687b78d890dbd577ee50422c34e373256029e0de2fd770a825cba55cc22a8ef808fda24ad1422d29e948f0ba84dd59dbe8773d242c9a9b4d8c457a836679435dd50d4189f6692a90cad45e350f122141f554b69ec4fa504da37d6fd87a52616d28aee57cab9b1dd2836a92eceece64bc83f4f079b63c03ab0025470189f326abc6736623aa8c1acc4bd4a184232e3da02a031b16e041f46ec8dae42eadd276540a7e65ed5c1170477f523da46e842de1c6e46d4bf05db8fe9a3aa15c6b4960f172fa186cdb25c2f7552596e61ef01d761c7ee9ab0cfcf6eeee3c4874f7e913ecee9b7b0c0cf8c78330977d32dea6ab4ea59ca87d0be8b4a1a953a16369118805821815a3f54ad7305bf0b52917c626629c2d78ae3451d61299a651334974ccc4f340c8545063211509635eca6b51e67ca9de89a9cf61a2408daaef274f10443b580a0a0160dfd04b37730c51d09b1d8123179b0678f8d5d77570d4511d1e38db3640a38086d4f02ab94c4133aafb0680f0556274d451b4a4d35cde287232ba7fb251f9e624b077949f748bad886b5d27e1a1cfd4bd330d4b6d2721bd346951b7d9875af9eb0690de6dd98494e13a6f42b768119b3129589d8d2812cd1e0e35f016983dc7dc76d9d47a30f84732b29e918c4ae0efb39eb9ab7129267ea4d7a3478686eb979ef6e6c913cd9fd92e9f3c6149cd597251377ea705dff4023f7a687fb4e29bbfabf5f7d2e290bb787c92767797442aba88fcf50bcbc160e9161431d159bad22c3fd4e0d0bbac9946d33c60516d6245f376bb1179bd87f79bbd2f2fec25e938938f61371ba6c4020eec1ed56c0a7ead90c4f26135beeda28615309517590eb2c60dc7807bc818525e83cb0ecf259413aee6de0ee9add01c708565a06caa911b0157269fd82427186c134da5666c6bf62d341c79ad5ac306c6fdfeb20db5b239413d8546d909a53814911f5457e7ff73d2af27fffa56733fb7cfbfd17fe2c1d2570317f7ab6f13cf4f22746528ad2f461cccd4e0fbb05d8d51ff0b74f2d09f90e7875faed3b76c7a7c57e80bd0d9689e370e03878d9f3babfca256a5b3361603ee9b1a38f56bc6821f6f95b7e758824bb97339f32b096346b41dcae357549271b6bca5c77e82c8064af08b2533ff7f1c3ba9f0bd1cb2296daeaa4ab6cb7ef03bc7b1357de063c42e1be2d60f992cd9101062d8444002ceb2a9519c542522246f601dee7c1b050e3d2bc817a6ab4762d3bcd0324372089b3a4f948289dbaae4e32a4d702a0940dbaa2abbfe7cbbe11cea29609c5e4e8925d7f495f60fec777a71ed99d55402121a963d2803d9eeb7db2f0e0683ddbbc160a7f36230983c1d0c7af06fa7dd7bdae9fbda18b4d7ef00908b7dafe807e653c4e7cfd07a713a457f462d6d9a4ca3e4e158304d7d7925cb2e3b65b395505ee6ab477ecd4f2f2d6d191f2fdda9cb4bf059ab03ccde5ee08f2cac2f4010d8e5b4411a88efbfc79560adcf96ad03c702391871315cd322d49658280e083d28dd9358a5e27713ef6eacc8408d81098bf57c7d4c1581d015bd4c5438dedfdb634ffd5aa1ce3a8e7ba9d9e6eb794bf39dde839b20f82d9ba21bebf55ce3fef50d697d4df25fb420fe2cd8882b31b1456a3271b39465e5a6a2d0ad2ddaa0da50bc5da22facdf88adc762fe204d6610b9664376418d4cd16c7777c67fa41ec8f5c05ec01527ec04c3c6823eccf40c5aa38b54c376d496bab0e53890eac0dec0b2cf9cad10bca9f4ca69be48f3302e356b1d5eb620780809cee7f2b68b71e8c20cf3a795aa6228d61fc20e3ab873def25209ddc3106f85a1a189954422b8948025c35bb264ae87366b6c98bbedb7bd77b0ed3fe1aea877a5f1fead174b9530197208c41d438a66ae1fa1b99d0272ad362f2b88802653bb81c7188e85e21defbd30bae1e0fcba2396a5bdd8eb32aae3ffbd12a6da7e36f553ab9173852c8dc7423121b56ca6d81e966203b330f8e7e9e330a867b474b5de28a2181220ac107df86d86d165404ea05e39b92f61a2306a19147e73f693951274d237d5d18fd682d85c482700d7a517ecec9098ca77bb84b974cda334224a5e4c8cfb22a60c9c895b2d5f964229615d816c719965be527a1d1759b1524c653370719c96b2a8587b677fafcb769fed7599a8c61d37bd69c967c6cc8f032431a0df1e0c76ee0683dd4ebfd35bf0a5a778d7dfc4b7ab7ed6abca6cd10e92d3bf42f545364dac8095c4395bf2acf41640969acfcc8a592ebc9d824c9c3601a46153400c1ccbc582ebcfc062e66637c9ae333432d879da2d83402dfbd80fd46a9c9f12bcd4fc4ef76e3050fd409af9d8f1839b2cd80b1ac12568776b4f1df3d125e66377bf213388d1ee07f3be99671579d5b4550754f37131644e8bd3ee764c707bafe5b92d9f4eed2a65ca8467dc087a1814f24ea027a8a8a0a5dba4851e99849dfe4f68fcf79e1f430ae8f50e70f990f50703f5b4abffa79774a7ef897a2013d3c82833f70b76e1f6d17a025023eb3270915867c469d7b596702f3b5db65ddbfdcb4b033ceedf8c7087ed773a97ecc08378495ecb2039b9bb8f4eacbe2d3131316506341ef1fa519ecb1b265765221d212e8c5caae850ca9a2dacdf67df4955f9173ae40f581b464a969aeb089c3b6db6509612a2c93f035369bd608f1c6d3c7074b2d31c5061609633f16356cddf9adad37e11092f2d22123e4dbc67b352cca03a332fd66cb88342dbee10a91c44ecf05214adca4b2e672504659743f466bd03b6bfc776d8ce97ecf01b76a1a9e24e97ed7c79898d7aa598acc67ea424efb291c738ead3cd2fb83122eeb27d2c9a8f35072e5a3bfa72d8f56f06432602a5680d041b79d2406a85bc62a1de2271a73275fc77edf38d5defdcdfb7bf3b9b3affa5dec49c9b51a0dc857fbaece2b2a3b7e5af5aacbd812421f6a8d01d412706940a2400d2a3b6969b6f29a34574165455a68a267eaa686c38efe0667b2de5925525f869f8393181074322296ec5d8042c203206c73861d2ae1f62b94c34d324861a3e8b70d3552e805b2cd8791a222af461e3751bf654f78b0f9f7908bdeb7212d4f7aef3bcaefa9556d6fcefaefd754042ad8d7555c0a91eeed944a5c4d9a07e834331f571998d5cc2732fa05fbf5926dcdd7f9daa194740ce565ea8b9e3c84da839feda42216cf5cbff265575c054fb969f064db51b602d078f3b163bd8ca9d0c4f5cd931b20f010dc99a6bd82c2e05199443a120563e45b3b316e68e4b3466b229eaa36a0eaff32ef11335baf7fb97b13a26d15194e6e6013ded3cb0a74a2e6bfdc480e28ef4381e3aa338b3d203ba4a4cc90b8eb368edb9dcfc7b6c5dbfcff491be160183bbcec8cadc18a75ff317f49dc06aefeeeeb6ccfd47d24c9c4bab4a65dbefa26a0a4235c8f24b02cc4c42ad21701b5b618886d10e14e2b60ac1733f819a054189d36cc631afa40530f4b9a804a6b583ba63369f1cf8898e4a79258ac80fb5ee8e09585f5b2c8bfea9258e57b1feb5930adf9cbd3f398080773e1eeb41a26f17c5f30219ac92d9bc957429ea8c961375949475db2bbf60b39439d9119ba62b37669512f9d417256dee27aa16be5d7ebf4110396973fc24c3f5212f10269150ca84aa5492cd45be648bacc8a6d99802d1eca0b070b9075c53197b015252aee0bd7ee6b2c8d9e48a61ab8b60b648a8e25e5cd9e61afcf4ab08a86bf44f761dded265780b54ac6429545821a15671884f2b51065c3ae63b17c266bd252fa9c4829a8471a915b529d536afa97df01c59ff98d431ff283b7626f28f5d96992cb36acbfcbaa6d1980ad69b7bb1cc16bc5c1f308f6ac3935ae8088b8a629139d936bb8c7c8d6aefd9d7deacfce74f9e30eb3026d4982f41deb4253d22efa128c2b7d64d37dd4bd299c85cdc6148ed2f1fbb7ecc125a0f8dd047e712f5c6e1cad9678d6bb7e02ebe3be92398f45e68587903ecfe85ffe6375f7817516d47d1b0ee6cd7f7c00ee7eae79e7789c55157d479e0869971c4fb35b059786583df787db33c57149751446fc7061f16bd75747460f72c32b4020e3376f032a4128e257a60b463dfac8f9d7aa8f9ff6143b76643d53c9b56b1b755b394fbc9e226f4e37b37368496987448d03efe2a534c2dc51826d36d488804394a83cfc28c69db48e75b49de5eeb8dd2bca7cc8d5cc05cbc6a787cd2f6b1dae9bbcfafebd33cbb6c277a0d5d948433d357bcac0e5244063333c41e5376994431d9feb320df49e04c91740523cde6471aff16bea386b4f8d3bc08f1664b6fafff964abbdf887accb3495086f1e169e034047d02227178bb4470a59852befa86209e8039ffe7543c88074e97522fe051072eb311e426a62cd2c4f301ef7c7767a683fc32b125181be2bfd58dcd4b82e3bdc5e6063006b03813d71108dbaba2105a38e0e5da1715b229bbce5436caf2ac5ab33987fc6f63c8803b1958272158bd3950a04334b46c170ee67de79b67a244b417addb5db9aa76e574d72d60cb13b56aae3abff994e242b55bcec937fb6c3d29f7d1bf95cafceeb91470effa177029ffb6347d906165638ebe66a6006eebd5081c5d5f53b8a67330dfec7b73e8c0d0b56ac612b314974152b2000c8831d1085e24e0d5d88d4b7610e493f277749bd8cf6d12b2f9d9c41a4f97c1677b057499e0e3b9a78974d97a3c2312aa2b21c30a6abc5c99d5ac526c382d6c3ef4b59ffae6fd5c286101b95298639ee7e8ba09bde3a9ec925254f042a1ba702d5790d2126081dad4e4145c8357cb529453592e786163e32b53a0c2be1a6329835c14627ce595aab374c6aec9b7454c0ff4fafdcec88b3fa407909878ff3185d2325f41215c93719ce746236673394a48a964b44acadf5c578969a504c40008702bf9b397081c42a7b0328849f632e22a1b5b9ce0794629f49f9a04e5a335f9178d4a5eaedd8e7daf56a099d75881f9f84c7456505e7a0812feb08b58092ea0122ad3228a92f7e7118d067dfb7cad6029c2cd205cb42e66d58de0573651bae68f30214390e9dccb17e41683840bdc0be69f46b301280c7a5a6e933049cb224c965ab630695d2d8d2260a648bcdd218649e0e1cc95824fa258d044b2b0fa112618a4a5978560228315c3dc5ce8708379837ad4dc5dd9fe8ac01bb8ddf007a4f384e91e581ee72978d9ca25fb059d3a3ea2b2e6707f6f8fedb253f032322be5978b018da89c9267859e1b822765cf01dbdfdbeb1a56c6ebc5e6eca1ec228790aa6797fd38c784a68185de2521d1932e64653ba1c707c0eda5fa7104e6a3fd685a1ce0f48127a2af1c66bc07442607e78038238a78679261eead392005bfcd146d84db3d93be08fc61654e757ec0f3eb805aedb2e1f216b6533fdecd8552dd20c31a57e489e63ef80cb7ff337dd696a21c8ba2e23351ab45435e45846ec9ca42046ff91040a119c841b9be197621d3b5090840f7601bac42ade6712b724376cda8f1b7b2343d43de4f2d590b3c4b0bf0d3bd4dd4df71f77b30daf05cbd8f6e3b72870dbca031059d5e664ab5d6f597c25ca7262ff55313b2d463a7050687c829a5e703209872aecbb2caffd6063d8598f377b9028cb304dc38dfa212b8cd151ba2270c0247779861a78b9ebaa1f72ec1d4df503bf2d0047acf9dafaea6316d594266b88eefcaaae2d5132ce7558547937b1eae74fbfa05e273c1d12b5553f69532572cad01412c0556d1cb0a76fd2cececc846f6e66b583d73a44cc82fda6b0d6b080f46a2ba11a260936c0a288fb8654e277b23c1078c576cb1caab6c9993c91021e9b55126d5a1beea6c95b3708f7e486602044c180ee9affd3dfaa3b5bff759cbfddd65fb7bdecfcfa2df6c8785edd92efbf27ace76d8e7eee9eefedef296ede8175df6e5f296edb23fdab76e08dfb0a74fdfbc7cfaf4809d628ac6895019d642c0f26f4612a964c06e40365ef2e5d72bc5d7b65ed7c2e40ab15d1897f7ac4c59f657c55496d5aae095d07ba80701db8f397d259b640a0bb4d7734af56c17e648c0750ab90b25c51b98aa6f1799522b71d9deb24434b456fdcfbffabc136eec036e515cbbfbafd167bff61a7df6fbbc46c9d72af145eca7e7fcf398a5219feaa3c7ecfabb1dd84b5fe63536cfe43bf6ee313fdbb12df6c7e4aa5286af258dca3ac49323a6c6a2e0652699b8cd54a5d8cd5c9471f61e749230d516a8c4b907348ba9eb8f54368faf35b59b73c5068fd1363889be1b3c66ffcffff57febcd84602edb6cf038e222e9a0c0ad74236ce9ef89184336500f596849a88e3c329c07c1ac77d944545a72a43cb2fe5c35f92c05dccd83c755c9973018569bb0bea62cb84cf3d4a6c76c56c8325c74806ae6869426e4c11f07e3fb712e0a364c185387ae74a65739d3db28e5f902113083045873d00ddf2f91a92999c9e341a932ad47512ef8b5e810b0700d823227b468bcd22b8b9ba35b8bc94cd4b8b74f26569116f97eaaf5f9afa55a9fff3ea956b410fea7963e11088ae9bb30ae1e8746796602cf500566532c5c5a006f3df4a8cab54f7b2cb63889a0026d0df5a2b163b436f1c45d0bb29a8b02582014882d1892546d4e64977e186ed49a6bcf30a2a166720735d5a0cb9a6b26b869b10cf69053d1e197b6c1d102b2facba989710db18983e7d662b5d0ac40858a2362e1228a67009ae841bace89a1e75742d56b5fe4377cad809072966755950b33420bceef4d1f3a65247d0a893311386ec910c001fb72d382e0ed77f7d7f7dfbda6a5ff5877b43a6c61395074026c59185e9222582ed2cd58ce881da36660e87f3eec6a39a498c89ba1c39ba191b44058e0059a2f8cd2229a596d7c07ac3ec02d2eda406718dd115e691c55f1352b042f511d093a2102a949bd5c810471adcf881ef88c2f83cdaa6e648f9d80c1de54269eae72ace16aab0db1ccd0444349201457b3a1a4c512058d54cb82155bca8c92bc272bf2f67ced4ca991a5c8d78c8ff4605de02be8032cdbaa2acbf11a061bb37043850602e8cf2cacdcd23c88075c007ef29bfba9ff17bf96fa7ff1fba4fefe2a3469807c07e1cc2969a938bea0e24f869c467a11427e020688958146c1e32efd9dae6d6d7c46ea68172a16e54a8be2bea36e343ea891e57297cde50d5bf0c2303914e628a77ee11fcc2a095ae19a524b93d24232319d52287121e31eb1443528193e015101d6fd18fae5afc5d02f7f9f188a3544121fa4ee13616e918bdb5df8f0b20509d0a9949ac42a68b83e5c1141b443b424de7dbd257db7290e9dcbb9d59e01f985ec3fbc443a4a0a0353840a543e698246afc9ad4391a23ce4d83cbd2c1571843c4761d9c010ded3a7e0b6fcf469e4fe0f2709b4ade56a89e47bbc2a5167847e31e3f53817566765478f7681ac22f9058f96b2d55ec325b226e1879f050de4fea3f0c75f7b14fef8fb3c0a7af65b7058c4a61bd3d92166c50b940dd6ac6696075d341a50b817995eb0fa3c7253a0a1eab2a1cdb90c3fa28cf3c46af9194082b412d9c402f46a0cb4a1219a1f791e153d08b8349a8d9723ff13d8f2f791188b29d1019fe71921b36587b794257e4bc6d8f0ade14e9a5bf2669e8d4911efa1ba276187d7b2b97d7b8dd32fc435501453f4ca48ff04c754604888236d713b164ba005439fbf187a67a2b68509463b98f0b64cb6afcad2e260256f78899c01109346fb8fa1462f9dac6938e78801220deda4aef9a8ad96a7ecf82d7856f87d3ffdfbead7d2bfafb6a47fe04df52b08207cff100a6817640b74981b85a5d921bc8713d2831e6a88de8619c42f3de5a4e53795a81867c3849f99573e9e4ee5983b99261c1e9142bf20ee3d43b6d29b96afe4d41fdb3f876578087eea39dd8f9e7ffab5e8f9a7dfe7f53ca7035fc74daabfa8c887629d93746d88065f2ef3cc693aa3c8c24ab299b0aca2f5ad710254b8f3cea09760eef4442bb91a6356885767df810a0d34e6cb522c79e90fd27469a2268760238330b2c819008d675945ba27ca02441104a886205819d983d7726559c35200d50ce1d3d118af54251790c60d5683bb5b2b2da16a796cf8a72ff78660e3451f1cb2aac01d9161cd80111f5fc1cd30968b25afc863d553b6808212328c5c8b124da0ae8ed34faac74e6e975ae2f3b14a218666c5cc795e31744f23062b2b28ef325bf09f6419c08e9c8d3e49ad4df182b0865b9cc42f7fed49fcf2777912fd55d8c479d971ce96aba3f158e4940505c66b1b9f4e7100faa48087991ebe26d99fbf72b1939c129cba58634f236b419d997c71cef5c1d60f7245fed04fc2f98245bc5234d8faf2c4d3546477bcb83db4aa6bdbe64734d349c68bf19cae9fff446f92b6adab274b1c5fa7c78efe76c4fed3582b31a8d5cdefd8881199a222886564459b810ab2609c4db252a076c579268019cdabeae84ffbd6a55cde76b2e88abb71aa7f37538d9d5368aa7fffe74ed596b3f467bab665b2d3d7c9115c1788872640982876fa0a894cb5e472f8eaec3bb6e045b65ce55e39cb3c5b6495b98b3cc24aa4ddd27343c909a8af40ce8a4acc2049af73cdcc20f115e36c5af285d0fc05e454cdc48da179460f6d6830019b881c926b59bfcdfab04135dd7409522d4ee756e1cda96b3d7b230d7dd2a94bdf2ca88834d904b0b0ded0e4481b1a6eca4d5b5f8e13d49ceb393f0a06f91fbae3e4c0d0f70629316096bc01e2c2c7f34c90da155d5726a479fce41bc3ddb9f7df177ffeb59cdb9f7f9f9c9b5b83d457df9216d87d837ebcfe7767f0244d973c8f3095691e9e2e7db6dfdbdfebed9118690a35a0ef97462bff160b0bcbfd6f7887d99a8e03cab4eb5528042754e7703ea4d4be61c90c308a1189c80a371d632e749c1bc174453732c5965c59b386f54c2f2c473e94c57129c0a59e1cb9bf270ffb31cf73cd4b2acf0f9bb9b19a94bdb4b94190900d89830906a4121ec7df1af7a12872c385db786284cd94d80ca1561ad08364dee56babe8915841350669d12f28f7f25e9fdf6c6ae8a8a69c90cec2bc1f51bd180fa937400551d9804c1b8950820f05e2aeb9a92ac9ae0a7943ea9c9a6620ee3c50c4d5cbaebfa95b10466bfaa3693ec1b6d34d7d54ace104da5666a5814bd9281a821a4280fc8127f93ff8353f07a73056c88528c6390721a32d663d3644b3ea4b2a1dbd716c308df35f3d405c8e7fde303dbda689980ef59b815ab2198e71f7d407d00b6f0668b5946970f4719f09edb6026ee2a48038768932768d8774d7557ab00ecaf7837463fa2da1a2cdab4ec54d3c1e9af6d10280aeaf060922b676af16eff30a55aa36e4c8d84335da78dc922c5455aec6952cebd15bc600813136135150b540a4cf087768eb0187c2ba0fcc0bd381420d187da6b2c5325fc33de0dd2d367bb5e20ba4c7383e8db4c60a60bb36d14f54e8fdf3726247d303f77d728fc61ae9e894fc9415e28606da2ec514e2e4bbc0883d65cc5d4607f651ca752dd2a8b28fd416fffdd8093aa402e58401835afdf2a6aae3d7bc34db9808217a5bb71a198e13f914da0c67dff1ea495bb1d4e34bedcb9ad8e73a85cad6101148e5ad89d907d9c13920587626ab18fa9f16ac35cd6ec5a4a557588403b5774f90ed0975ddfef8fcb7a12adb0dd030b0b0618ab54ba1b29f4597a10f11a6c4a6bae4f9daec62af613c08e4c46391bde1042f030e385aaec44a69c1625549cd308d61201881106ba23d496f6c38ade144a8aa946b136ad83476847856bcc2e6b5d58cde37ade731715b2670d3ba36d13033c5c6c0a74d42a75fdfa883ee2724bb1572572ea3180b8c64aff363480d8601eb368c266cf8c48fdedccc332f379379d4eeb05f12eae2fb6789e6f80909e58609358ed5f89d311414c413039a653f035bdc8765aaa5d6eeb291e6a290cc7be5f00914f6aafe6d6b8b4c77b8b6f82c585b7c945edbd76475766cfeca67fcd1add0b00524cedb38df343366d5d0626d6394165e6af328c434bc99c229da51f973f42e014f9a0f4ab85b04308845f73d2ff9a21e3e5cbb9dfdef71f1b6f9bedf67df5759aee0afefe0f82b7351bc35b1e12ec54727be3270a48a71ef0ef471c2aecd38e71669ec7ae1d03c5efdce65c68eeb9850bc745d6cb081107581b7b923534585a0ea372140ae9ae1d463afff0e99f4d1cc619ec6b1c4b210cab2df59c12ecc457cd9fe1f74f894f1aca7186dd7953d63385e17299e1439adab8dd938c79c987c8914e11f6479826bf8106ee3e77e1d2733a343cb0b2993dffd1bf68c3d79e29e5f3cbb842c0b5615c05e842f0fd82f26e110a084a693c77331be6aeb6ebb345257f5543feda9f15c4c56b940bc4e6124f34b49fd632554755464a83df8b6e40bd186c9f590f8d94c6e90370bb4862b436e26428b1d6331e95a935946d4b45c15109b8574a1188bdda52877ab6c7c653286d2705766980658db7bdc1b65c5041e7430fb2450cd5f3e427a7a384d749862f6d5ec026961b518eff5e9f628c8d844e86150cde5cac5946158d10e6885bfdc150edfa57d5774a7fb5c92798524a0f6c277b15607ece2d25f73a80415c864a1b656b13656a8f8e97fad44b96637107a53aa4e304e3f5b88fbfbc9132fb4e4a77fc0f72fbc2c1c7b1a09c37422042fca80a72199e83a0386f273000cca54864568c412eb1af876c4a5978d3fdca65e10c86f0e041ef6de9558abf6a65df4d32fd500763a898484055ff8d9793ea4c772a19b5dde8342b5e67777fa8eae0f84bda83fa34f3411f06a1ee8157c27a65ccb8c607735cd5be860d6c6856187df30f08b0bb1c05f4a7f05d3738c2b0d452b4334c42d8079c1986e7900ff37cf3e7637afa49b22543d94656c691ead51a98ecd7aba45735d105bef0255f4bb6c847f85ebe8806330ea5c304e999ca0a819d68be0e528abc06033961830577837893e9d9a3498744f7af0abf11cdb66ca40b1518d5ab0768683ac5291a23bacacc42713a06f5e9e0ce4c53277d30449332c909727ece8c7a377270794b24343f26edb616d1b20e3d810f861fdde3c3f2369ff511a8f12e727fa32aa8811bded19d3c693272c53c6f2506b850688b07e46ba0d5d5edeedfdc1a3571112766320e63d50f5549d0da8ef9e91d50c433de8064b735566db316b1ac8f889ebafed57bf0f245b6231eca9095e06b515833761157325aad512e10291d00c11c631ae29444d5feb638e4a1e331f9883512414262fe698a9ac5a99da29d8058c1037f24477f2daf4d1ae954974abdb8be7194f8d729f63446c0b584d6483fcd360720dc05c10d3f58984599a3337c0ecd4f6db4a6242a56282853e99aa56d329e67b3fcf0a2d0856ab91328c0a321ac7faebf65bc2a20b5ade2bb13e602d5cb156d7ec61bef2e5337cfb873fec27f82f6273b438826c4e9037b7cb826e48f5d0d40fbd4e77442fb7ec29b5974ddda6daa6c7906ab9edd4d168bcdd88928d1b9625d5b4614ca195f39cd86cd09ed236bae09c5561d41050a5e0fb5373aaf835cf72dda5b32ffe4f4a9b1132eefeeb583f690c8bf5511dcb3c173679d8aaca4804f723e36ecaac82827f28823952eee656f1129a8072db596fbfb299c260c09972d341ae1f956c164e568cf3d544b021d2c25d3d1ed5fb4959bf81a14dc830b4bddbaf9f3e7d75f2f6ddc9f1d1fbd3b3374f9f1ea0ea07725248937e119704a472f054b696670bc54b3712261a790445302b6b8944200ba9b7801c58f48ca8469f85f76a6593cdccb3d91c2549621a48ff81cbe3c247a143004f05758b5665e1cd56bce4452528b74625292e9829b1b81665cf8c72c178e55c23ca4c916f050bd4d9cc28574cc9547a10abc0d9bd96fa3fc50868741fdba1e5c7cb2021de5b93a8f8235c0981a13b526344d66e902a49cb84056e8b4a94533e16d69331276d9a65ca0036d4f1109502fd2da5a3810221418e200e6547c0c7a69013e11b4e4cf0265e2f0eedfd8b9e9b6bde2422ca113b4d4ab6b194e5242b78451629df1b146f2bcaf96706a0bf863a912a8cf97fbac186e2af9e5156bc9113e45fec47f0f79b97748ca6022d91990a92dce8019eea052e44c54e6e97b92c45c9f6f77c637fd4636c6973de23a0dc34852ab262e6722662263847b161934daabdd4e2d5f61a482ba67e1a26bbf015f4c1f88c870f8cceabf48c632ad8c9f91f350b8109f9b88db6c4a275732a7a6b8efa7556562b9ea7831deeeb160b346edb2fe5c9daaa63ca8247070229db216b6b2a20a754d11a544f2dab7b6ab117e6c5019be572c4f34ecfa38ccf2d382f62c9cb77ea35f08c66e6cfe78342dc42ba2fd2de198af0b8fbb88fa8792c976be4929feded7fc9def29c175556b2f7623c2f642e67e0e1705a8c7be0d0074d1554bf29af292b20c0799d8d45a1c404d46ae84a75b4e4e3b9306fbaec07a272cf7a7bacad1b0c1ed3bbc1633a34e027c7d7605db004609ae58299601fac5592674e9b5fb93e7a96826820b6b2f0582eed2d412d19afecd0f57ff3aa5a1ef4fb3737373d0ec3eec972d6cfb1b1eabf3e3d3e79737eb2fbacb7e7f2331650b8a8a45cd8e09db184bc56fab8e4fc06a2d16625799f679605e83225a7d50d2f51fd3dc914c571f88b67c6898140b60164f26283c747e7ecf47cf098bd3c3a3f3def029c1f4fdffff5ecfbf7ecc7a377ef8edebc3f3d396767efd8f1d99b57a7fa2a3f6767dfb2a3377f677f3b7df3aa6bf21a8adb65a967214b2c616e123d9ee3cd688731253f562b8ee4bc98adf84cb099bc1625b8452d45b9c8943249bd000eb87992ff646d72e6d0640bc051489756a93c1b7dd8471e68f0187e0e1e3fb78d409c78c317429926f004f252faed00d83bc1c7956957ea1f7e935fd8d1484102b3b7ab521ccbc55216fa7efa68bee8f5fabd5e7f2c170b59f479aa6dad479057dcd80208637c57fbe6a42c6599fe44c0ab70d0af4ecfdfbe3efafb9ba3ef4e3ebc7d77f2ede97f368c18d27f86dfbe5c55952c82f6237844ff44cdfffa45d0745e2d72f85fd8ea741c81ccc6b280ff85edce201e791d34c518e5b5f9173e201f808ce772c60e816d31c6198d2d4ee5f141ad9c818010a7f7c12ac6104297513312dbede7f8ba1da782c7d640a68b559eb3274fe8510fdc30c906600d061d767767cc1156e046d03d2bf4f64a514cd2762adb2fe06a0fa55eb200b569c5badee4301f31683d51c1a237b9eb242c7b3e0e0c2ef6ce7e3879f7fae8ef1fce8fdf9dbd7efde1f8eccdfba3d33727efac1e7cced54b3ebe9a947289267da377e9264735783cc9ae078f3777faeaf4e8f5d95f5c6704f21320ba13df0e81fb2bd0b3ad5c610a85dec65e23786247822a35be1e8977b03d7f157c22ca7627843bcff249298a8e294bf3bc618b21be9857500343053b0d80ec7643b122005d65552e18e159a4afc316fa0cb147b506515574a41f66c57f3c7af7e6c39bb30f7f3d397a75f2eec3e9f1d99b645121af17759c4b2590369ccfb5a0f3ebfa3c7e7d767ef2e1e5f7efdf477d33bf36517215bdedf006953e38fd3e537379c3c6ba21430206dea0a55c82f38235f0c912a6e3a97a33c566d93588e88cbb3875ae8cefa7619830a4eb4668b1193298b95df4b024b9848d25075247003fedfa0b3e78cccb8cefe67c24f2c1e30336780c9d0c1e7b156a369c3c6f13bc0f344a1d2447a0c978d0bf693c78ac163ccf77c7a5542ae81d5b9c673f8b03b8057ae7a7ffbf930faf8fdefde5c435fad8f1be809c533cb79e43e6b92c8ef36c7c159c56fd4c2a67cab06aa1a8ceb651ea99ed8e8b60dd876878eed3380646676ed4c1486cc3c56487ec038793eabda0a3addfc09f81cab8e9dc37cfe3de8be22124190fe9467a1ca102a24130c57bf6bde9eaf8eb175d98751757a85327c2de396aa7492e9d4c43676994635e9c616c3520128009b02c53674b5190097860eba319a0995ae61cea646af9a9ce62ed687e051b039362b7039f818e25c94e22df4162d82f86adf9a845302c1181d92a0e8d20d16ed1a396afb239b95d6a22375cf26afe5ebe133371bb1cfa42276ad07ad80f9667762d9fc7ef7b50bcd91471aebfd6325606184c7fd59b54f24a14eabd348a072812193e6afee89d989ddc2ebd4ff041a4a382fc8c7a1e6cc1abf15ccb1825cc8754ac5eb27c52b521988f8133e9dba3f77ffdf0eee42f27fff9961d820e075bb52ffa7df69d06cc4caacff19cebfd834cfea00cc09c7f261245cb77829741746d359e434c7cbf8f1a1ef00940c79c9542bf50caa24909d3129d14adca45c7f40645ab3da0ff7a9d5697d9619ea0b0b64ba53d79c917a2322124ab62570b4113ff3905372f4b31cd6e618caed202cf995a4da7d9ad503d842f9499205707ba357c3178dc3fa884aa604c939dce8bc16376f80dbb183cee6b823378ac5fe25ffabdfecb5230fdf045f0e4d2c02ce5aa1206e6e0310398de87e93f937dd4813fd500dd7fde70efed21e8ece9e0f1a5de8e0b3dce7eefb2f3a2fde2a0fde240ff3c80c1dfec74e877bb4d7fc0bedd5dfc97f9bbddb9ecec74f45f9dce8bbbad9bb62f769ebeb8ecbcb8837e9e763aadcbde4f322bdaadbb56a7cb5ab3803ebc85f3cc1986a55a71bde43774c4bca3822e622e84557f14be4115e3e1c754510ef6cb23ccfc630f992ba2aa07d1565599aa778dc36087ecc295e5b9129af0edb97a3910f2e73f81d31fd4e325f2ff4a6004a9571b568b6ac6603bb1afefee58abef3e2f6dddae9bb9a670ed7609a5673d2ad113b762aca7d1e9d41861a87001c4da2ba30ee6632221f86adf7f4591bdf006ebf598e2987a723b877afd7b2acfc6a20d6fbbf485e177ccaa109c1db620d7362cf68dd97b795e0a3e59db71a047ed18689367adc6b71ed361c6406fdcc881e1afb2c256f4fae8fbdb817d0d467e01c3f3e78be48656e299ff06ababc1f3cffde763be04728aafbef05fcd4ab95ad28b2ffd17365013dffdd17fc75525ca4c5dd1bbafb0fae4db959a07c9c660eeb220bb923d279e9cc6abb9b756d462b952737cf53c58458ba6d15a2d795965501a9256e691532dc03ad67f9ba6de9c4ab1145cafb99bf8e1216bedb4348687cf9efaf51e2db58fbf7c71df9713ef88e156ea0fe2f3e76f3cd427d09c80d9d0bb3bdc40e3c2e62da05d55e7b4a49b5f89f5ce8e2bc905ab7060164e9fe5967d69c777e0feb42fcdb40fec5f5e052fbd9207f4afeb0bb7e9c0fc615f186c3a608f1e99bfbdaf60ce0776f22fe828fd45cfbb4d4f3becc021e50bd6ea3d85725917ffd5623bd41e8326db76261db6c35a973b2f5a86a376be19c80df062edf31298ec14935a67c5ac37f0cae72305f91a080d920e8bd5010d5a6906165b7bdd9d92ebbe6e8949d7bb4c6f217a9d9ab4d9c524e832383ae9831396c6c33661f9ae636243edbd0646be4a2c9639af9cc7bbbdee34ec4d179df75ff39de7fd97befe4cb7e4f377d8259fbec3cec7548d3be2a053f7623075c737b7131769275c99b7a5a82a7d6c45319613bd3472cabe7f778abba4c40c5da01bd7229c92f7301e3dc017dfbf3bb5020d74bd86fb3198856d09af7a64f16df72f0683fe8bff71d99ff98538c7b1fab3f5993e0ae39ec6e863391147557bafd3ab241d8bfd3fea1fdf2f97a23ce6ca786e7d8c56e50486801e85e6b45976b8c7ceb34596032b02a9aaaa6a3dc4481462da55ce1572f3bfcdaa1dd1181eb056ffaa854271921be33a1c202381e041036e2d33c71bd0ca8caa979a720d89f18109c7e8bbc34c315d7e1728d6a12f0c968c477904e535e037099ea15fcf532089dada881a3c7a26971368ff65c9dac06a029bc932f6350b003f67d9ce4ea0ac25f32db6bac82ef1a6443f8996c71dd098a1852f66b6feabfde240ef9985d03377c50e6b75fed00a5db002a2e8f0408e7e0262a0025634e63be0dae615d7dce2e827f47baef1020a5966557b8d58e918ea1e1e127da535500176907865955d0f5c6c4f4eb09a818b2c2ef4ef6f076e059ec356a0ac36d71a347b1e28b17d9e36d088ebde4dc17fbd8817f03138e83aa6188a7222798d06469f2634e7306c806578914ea867d5cca9e6468a896516a90fe27c8475138b0052f3085e34ff5ec04cd6e69d5c97ba9a152ef279296f00b9dfaf97028c00ed166628131336786cd11c0b29efb0d6e0b126b7239bc9b3d5f1bb48ec02f02ba801c325edd4d6f2117681fc5be7b71961212bc310c295508ab1c8aec5840df517ff717ef6a68778964dcdb8f4c7c3783ee148a1a10944d2c8ba170df75ed4486e4d7a737edde4478289c5b25a0713f2b6289a9d3ddb3fe1d9fe897dcdfcd93e673f05475bff6770fa9088062ecfc54f979de72136c2263b7ada03fd137ddda92dd0e659ebbba179e6d049f0dea3cd83c75be08219561d1b6a87cc1ccaf64f880bec45703ed901fd0c6400476c9250371134b7de08d7934022068510fa20d8984e44e0b6db914fc5c187ed04b633138416ada4993345086bab1a9b58f447d6f4e0b34da8c9e59a5f59694e92dc67204b1760c406e9c34a1cdbf08fbe4858e31eb5ac6659c6f6456fe7e98bc3ff7a74f0875f3eb63b1783c1e5dd60d01f0c0683cb8ee6255bfacf3fecb7621610e702fa1090d635db87da9611a991f49384d69a1713a8e3b879ba00ea8113469919be0c670c8ffc391f3e3af8c360d06f7736cef1086a3bc11cafc45a41261d9767c6a668d6bc6762268fc89ac04a11bea0cce7e0251f0b87b105c29b23569afa9b58ab7629baf0b19d25c483b14378e85b974a11cee82f82ca9de47ca68008736313b1b5c10cf7569f511415bcf5ee406feda4ec6a3a53a250193886be602d506e64ad48645de539644f82a9c268f9168bafcf62f4caacffc3961fbb322631d043049bd0ef83d337678598a18b6b2ee5159f43c50f439fc0df3e3a2f4e6cc19f647ceb29b92ac7a2071fb6fb8341bbfde2d160f0a2d39f19caaaa92a7e6349688a67a65ed23cb39e41a451333ab5ccb3481b4d1a585fdd634f8716bd710ab43068d6e9cfe2e7568116bf700ab4fa27a43d73ee19bea1bf2e107967c8dbc010d1de1b41d6d50200217313b61994aa635be2b0dbaf369ea78da440034da062ca70b2e468d0bd3092500a4500e15208025f3bcd5bd0e7457619774b481b28e850fb0c3426146c49aec52eac6d0aa4da5637221a415c42400935e0e43e1e9b5073b8c37d2a47dac0ac58aeaa4dfabead68c7afdf4dec6f8bed8cf47db48ea8edc3af4cfbf8fb06f54da801e5579eea060b2deafe2065216dda26dcb71c1c00081bb5a1d11d2e51e7f06362fd6a0ad407af63b42ef833bd92c08f1a311170c762bc5572e04ff01e45ef00bbc3263d24dc447777e693e7de536ba7a44310a84ee02fa73d019d405566e3cad39de003fb5ecbf6eea5fe651dc49c6d52ae20a941ab8596bd0a1268408a0e5f63a67796d230c8953d9a96fffc0435d766bdcbb65a171cbeb52512f70a9f34b96e05e6c2fa67c4af7702ed8b3316b67cc55aa0546b3daf5f8f76208136a94993607ad971dd58e1c1be63adced3569373e506b1de5362a41538f539dace5bed563484ce8bd63d6a1b076e0398108a9d540ddc56c092ab6211845a26aef9d8ee18e0449371bfe39f32f56356cd7def00e895ecebbbf6536b07d3c86c9fe2b92b58218b5d3ad10bc83e20d046c0381a09b0fe3558bd20cb9366f17a81a1ac92c45322df68cdf3c5c4bae50024884da44468590507772c0b0541b1e3750ffca0a02181cb1456328a46c03d3fa92ee8734c39e76c32c985cbaa8ddef81c736d417e1598ac80382e986c974a2a0f1ef7b594df1f3ca64ce345abb2523abe422f9ec1e39e63671fe1b239ab05d1b4767d6b5e045bb3d76589dd39c036c054d04970bb0fcf0eff600fc047370c514ca221e883fc076a17e0b4dbf170114c4db1ba80ac9c3cc0155bace05f0b6c29958288b9d19a5247728a5c8c450abb7fe44fe1dbee7ad1d8091b9f3c49e0b891b8da2f0e6b0b74f7874e2b616df538b0c054a1bf873e6bfc5b92457b23cb05cfb39f518f30cbae0539ece1edd00d3890bad2c4712347056a1f895fa7249c942e3973165ee405bc2a5473994f28db0055f5d24f04fa167925cc55901bb34b3b33ecaf9428fb07d964d865430d7c682ace3d3581c46c78f10b0954ad6cd2eafa3253abdfead624a55040621f2f8709aeab8d2b74872b8fc5d43a2969b7c679b97bed7e03f6a770613531e177cf810d3c9f039b634c4e09ab63036a4a0f501f2831c5fe383b319131b3079786b89b50c4bbb783ed87110805f1b98e4491411180338211a516355d36765897411e771fb7564a10396a3df77d35fc40d22efb3b9f4bf9082247c3f78ae5f558d137e286bd3c7f6523036d00221f430c72b1d6c795c23031221448822817aa17b8fbbe3b393a7effe1fcfdd1fbd3e373e31f0e513cc7b2a8c46df57ebd14ca730d1fa71ffb6ee6fe63e728ee3d9d89ea55ba3dbc29b36b3139af7825be2de5226eb2c86eb3c27fb02ce5321e8ede1e139ca5715e4ff56f6fce7e7c134fb50847861769081c4320fc25e079aec959f8c06f61e3dd826750bf3c1c139af9de1a1dabcd77153ea7c633519ddd14e6214675da2f122f939f9daf172399377e48af939fbea2fb41964d5fbb160ec05bb38267d3e033ef3935462701fb9c1dc69f3f79123d219f2214532c499ecb4c556f64012115e7907542b52b5ece4465adee5d86aa1befc128e7e3ab3c539547b249908bda62547a2cd2f5fb265b828474a6d7a234aa97f6bc5ae41d70b00000ca898ad1a423f37e56cc45995562e2fa8e57a51d0d2e96d912209e3c4901d6936a1e0ddb7259eb80fd954d84b739999aeeb1042637cf1174c2290c8e74be642ce88d6531e655fa935a2fb5c45029450180356a829d9d2cda4174dad68deace198f02ea7b7125d6977a6f1e0594ca3e6e3fb2eba8ef72f70b5a846645a42dde716d3aa7f19c817b090dcc55b9aef95f1c5dcb6cc2a63ccb57a589dfd622db2e68fc6b0546e0bf90a6d531e74aacbbdea0034f013606f9a1ad31f263130e197d610838e53c596bf131191494c2784c0641696d7239e6f9b7b2e433c17677d9d9749a678560e7153ceab2d3c5b294d726d1cf0f2e4751ef737c34afaaa53ae8f701d014beeacdb26abe1af532d9f7c063f3f6b8a3f985cf779feded7fc5be933f6779cebb51ea08066917f415efe5bb9bd6899a9de7e1211b3cc6933f78ac318d1a509aa147f0de9582796c31adb66053e3408722a3d7191524c2beccb0b0377cd5e30b2783e2a3f6c565974d3b092114ae9694c6cdcb1a921e3263337648cd422d9b0705338bdc0b059b354281a4f6f7c1d08d1ab47d3397b93740f359cfc3167fd107c5c74ebb1695e9d88c2e6d58d76cbd6f6470b6e576d5654597b954c24e73df965db68a62af1f1517f232a1af8b9f52ac819e14ae0f45f0b1044ad0abc03b04a0ae203771c74a0d7a408ff63ab586996d92a59ae8914cc93c833e1783c7c7bc2864c5a659313198df1a3c663b4c4234638bb2aed8ffd07363da2327c0c1e3efce5e7dfffae4c39bb3f71fbe3dfbfecdabc1e32e9b3639a2e811e47a0417f2d24fccabffa3dd39f0489d89bfa4ae2fe4e5c5de25a680cbcdf9f3fd604562e9415dadbfdcbfbcf05cf43ccaa9da057bc10a76c044407dbb2cef32af1fd1650647928a4b84a6a7d6f3312dbaeeb307a24274054bbc8225fb9a95f6fe9581b157b54b8d850d6e2b9483c21882f70fd885972c63224af18f0fb523e341f78e1aa522f2d73c92fbc29dff6e85595e2c11e999276723481504ba5a7af5a318fd2dabe206cf4388262fdfab9267be0767cd7dcec0a9f985a1b120c734977bcfeb2fa5191a9e1b03a85d6871301b5f7512df980cec769e1339c6da2b6892792f6eab377222daad56fcb9e9ae477fb40956371e3873de36af78c5fd9c1c1683639739162e981fcd1ebc68d79689d91c56e4396cd76c6787fefc8c3d8be6f231e58d08048d964589ea74b110938c57c2bb810d7208a5f84c1ccf7951883cce8995de496a8b7b9584d38e579cbee96944dfefc96281cd01066ef16fb88a7e67cf7a4ba92a1a5d7b2f1e57e3eab50c36b55856985bfbc913d69205d80f20852bd6f8f55ac43868a2ed5bc879b6ea2e939f3ecb7edfd9e5bf46f8df18047a4e45c4c38152065c930d720ac9b2b85a17e379290bb9525005642ca8aa47562851ba54927ec7361ac1ce97bd924cc92eabe62bc5feb1122b2d9bae96682de5eaaac7de09caa3584936ce05640d35ddb5a85c1c62792fee11a9909ee149de78de6b6b5dc3286681f4eabbd85428c0fd6730b586dcf7432e5679bee9a32564bed7d4aa8716a8e379964fdae6fda60e9ba07f4c4c3f5e38f3072d5d8f2f97a2986cee3b79627e33a456a27a9f2d845c5596f677d97da776503796126f5a62085e74a169f414a8d566fd3ec6ea9bde800980747263594cd136a12a3ebe6255c9c742059ed7665a0e33c21999fe353752467ee3c0a67499cc27ff4b0fa7f62e071f0018aa6141c20da5a8e95cd4ef5b03d4008896cf9b7ff842b34dbbfb35c4a19e767632f6354bf5e77abcc82e6bc7e3630c2f39b5c6f6de223a278d44cb9ac498995bef7972d3ecebb6a64f8968001c207a2c400b2d61ee8316c58c6933396f6f72e0a73f3a2ed97297dd2323b217e6d501db2808b217f8c2366b925dfd9c975e95852efbe5e325d9409e3d94776de04e01df2d1f72c808527bdf2d52ff29cb54c58bd12a671906d38335d618c6a20d3c7df3fee4dd9ba3d76d54dcf81dcd7931c9a38219f8e6ddc97f9c1cbf3f79a5d1bf657eb4c2a8a26fbf7ffdede9ebd7d4c8fe8a5abd3d79f3eaf4cd5fa00dfdedb5a861e3db522e32e5e3a22bb883afdaa55032bff60aedb0500361de2397663e8f99b4a4dbbffd146a5f8f7c8fb5e6b899a0be0b4df179f43a494b3063ffaa1a4bc832000abdbde771484e301db39971a00a9f8a7cfd0e5bbe9f6306753a2d76b9ee8963a2e57529a72e068f41e737787c19dcfab278277e82e888601436076da67ad55c146dcc9be4b57692eaf30dddc2c75187dfaef269a6799e005ec3fe7bcd231400bededbadc3430f89efee980560bab8ff7b7336a20df1166393fe618993271901407bb53edb76b76b48e18d420f91b02ea172b0d873d83cf317c1921d78f30f08f3aab829f9b24d637688d50d10b9736f449e390e7867e889c39d785a898503deb4e78da7d044c258fa5147358b510fe82f8c14c2946ab465cb1aa96a44c3c3cd9448af9edfdafff679ada9be09fdc6f87d3517e5b1ff6653985f1dd1b719a16bdc8422767c5ed3707889cf52c4c8ee904717e2793b0241d160bea58c6eb61e2169dbdfbb2eb3e162752449f55c5fdc7bbaa7a312761aeff38387112dec96f3d7ed7fa3e96fd9f9a6d91b101b07e16aa2442447bf305f06d4df32a98dc22912434d237ed09f47dc7bcdc2c6fcc634df76346416dbc552006a5b61271343aa8794064338b414a7d6536317117b430a763a13f6f601f7ceacd2bc70ab134f2f25b8d64e977727d8113773f54995750c33c0313db4d4bed30db7ca2166b45c1f43e8d24c549a07f250acc651adf20aaec2151adf5a90b73a267b0d1b888321203594a8ddf115b1639894c87e93b8d2b1dd56ac1d8ec17e72cf9dab5b5b0ed5defbcf6b4d3c5e9486e81a187b0108bee163145401c2fd8278b378ec005c649721b54f9ebccd8c8067d60b894bb49d093c03640886172ca061f99e47efddea0180489b525bbb6d57ee9e75abaf9a21b16d9cc73d0c53e33ad955a1e3d496a39f82be21b1d395606a5582c339381e50c11df284134ac912b5973cac3c6072f3d7cf0aa50279f244ff03c240eda8d07bcbc68c7e0a729cf8acbc79e5b1364eb98fdd6de27c62d32c5f2ed7b01889a07e5150c675487de212ae87587b0fe3e37480db9cfb683b4eb046c2148f8da65180e1b2347f01a507b408d7dd5a508cea28a1089205de22752a8c9b82301a6ec14d379dedbca6fc4b53decd24d71beff90a30f0df3462bc191f34e4aa5cbf97df23cf5363c10903ecb4ba664736de3ef5dbd1ebe4d3af46830c1b6ec1da80fc69e2509ad839b075ae2aa396f224b0984d932bea7c038ba6db9809b196c2d56b35f936357f890b51036dba6fd4b89ac0f35595e27b8cfec3b13df4578a141bac4a70c036a18fe74f0eb5e992042dbedf5303aee1b2d15138bd449d8b4f4d8cae59fc233d2d38dea5e02a328ba795248162a479d4212f4cd0370d95e7393b641ccc44b541f23c6f6795286b8417332ce5d3b8ccb7d91672b8f5145c94fb0c75da0e26289b2ea8a019f8b55f36dc4754bb142618f1f85673491efdad669589e340cc18ea76867b6e07b0a0d799927098883d17971b070288142650cb45d1795e23671a58ec20d1c860dd833b5b7359c056a1bacb6e1844a367db2ba41204df070b0ba00126f8bbf0dca37a959e7d5bcac591beec3dd7a31aff6ab7aae1cadb74a5b14d02668dc56421679e70fc8889194da02d57d50f898b9aea76529a3ad3a8667cd3b3dbd971e8717808a8fde409fb0de61c09b938a0cdb3de7c155adac8b1d03a1fa7c93d1f8bff4373fe7934e79f4a32ca04bdf855c4a20c28c5b664c2918552a8a52c12eaa3df8832d45441d4ddc673f2fba65bb537c6e1dd73811b3cde1f3c3e60fbf4c618843fff173933d69ca67b445c369b3fa3b6ced0fc2c3defdfab01deedc233bd0bcfa25df8e23734cb7fa0415a9f590c5a497ad4072d7a4001200a049a2a780ab30af2a526cda9568fe118577670ff77a422b97fa472f4936f738436d41cdfc26ed0445c55f417fe3c0e92c34cdd681fa0cccf31cff3e3b9185fb58db0d265c76e0c755776dbce976efc2fb630ee5bff728dc88c539d77c8b0e656646b197626aad3572f4329bdffd4e03d64241793572fbb3762749555a7f6f742feec7e9c79cf95fddb06cfb294c4eb9d77dbcbbdfea8c613df7c709fe1c11cc770f0db76137db66567feca6cdb93ffcd96dd9c3db893b307cf443d7c22aab113fb679396a2a6af4a212eb03b9311c6a101e6a68e67e686f103cfb34988dfa930b4d322ab32cca8e066a099b69c8dc01d50b26b514c64b94b898127a678b88a206553c85f11f9b562d4fe64d4b470b1af1b9500f851b045b6c8c6ecad5c8de7af5eb2b9888259fafda8ff1f05ab84c28c2672298a57bce223ae041b8931d7b7c2e909fb4e8e34cf974d445165d34c28329b45a0b862e77ccacbacc7ce309b63beca7feef57abe8396dd15856dddbd12f41e975f7ef284f5dbf8c55df6762e0b7197bde593bbecad9c74fa98e7b4e0d7d94c5f38bd9512e5d10cd2bd6a51a87f3c2fe542dcdbec65cec7572f4559ae6b4d9739afa6b25cd4c379e65c7d2b3486da894cf167cd87069ebb14f01d2c3273366db72ea858f7584e440ba593dd7d4872438bf4f5fe5e6f9f4da45090346621444549a5c0b680f5a6f5169ebe7a69ea95b3f6fff8f2cbaf9e75a25dc252f60417c0aa79b65c8a09aac96190a6123f1577e69546e889a8b4b49455e1661246b61fd91dbdbbb38be29b1d1ae9366c6e9f29b9105ad29d40c5fd6cb144bf63aa4a2ca73037180c95bf92053be70bb52a6631221613f6d7f7c7eca89894329bb089b8cec642b1afbfe87dc178a90f8902dfddd3572fff26d6ef783113118873210e6c902405468ee5a2bfc0d0473f42b29f29b512aabfffec4fbf1ec8b3af9e05373a2e9d37ce78f1b651e836100d2f7954bf6f8b2c836f337218980fe6652e47149fdd654ab2ac623c5792ddc8f24ab1ac6090c8c5c0eaf7d9a89437cad64dc3d07483935e657a80ebf1603dd6ce7aa2e70192f984fdaf0ac3902cfdec325eb15c705575fcb6ff3d879fb88c305e41436f43c6c6ae17d5dcc077e9c62f57999e47f7bbf3e097fcd9ff8963f19e044c97c96089ffdedd856e9b6e14e804667ef8d95d0869e30bd3c4e5891bd630af6db018f24561366a380396c7adb317c8088b4d8c8b26dd66112ce5f6572626522f82b796f70fd63bf151f8de7d166c4ceabbb0c101abed5ded261ad9e9c04ae3af764d11994c4b5a565eca41b673c8f66b8b4ae0290e04373152eed4569976de7c3a13152280ddf91e647b68244a261dda31944aff8f73cb95e419d4dce70513b795280b9eb309546610c5780de7fc9dcc73c86c6d8ea3becf7e5aa9ca788f675570003d4ed6aa073670b1988e4cd383c1e3429286450d1ee35cb17431c45241978890d994ade5ca24ebe0d72200c7cd7136aa3843b4462b7deb52954b84c48bf50d5fb39c57a2f41847a3cdf83c69ef01bf7484fd87fdcd4ee7e2568c5795d012abe6679d06694c4f6ac26af20533734928e556795c138259e8e4444dad9e3f507566a124d45d8dfaada625787f23cd2aa8fa32904aedb8695508a14cf3cd5e17c15ad9f5dcc2a13518c3567d784eeeed7006db2e4f6152cafd4d405eb1f8701c7355995470580fcce49ae378b3b6a008ab613495a850297125d6bde424359c64fa1bda74bfecb96ebbc35a9a7d9d58b0f62065c8449b11f5a208604c9c424c3a252549ee0011b72bb14e9d365f6762cf510d41acbf8ca93ee2f865fbeaa2d66897ed5f6ee5c1730f8c46ba7bae7971483020cb6c96153ccfd7940b5ead8bf1078589467a3f690ecaa3b1177fe119bf6c37f3bcbba367b3fe8c673ce47e34697a75f2fee4f8fd8797afcf5e7e38fffeeddbb377ef3f9cbf3f7b77c20e590b58e55d4c3db18b92c8ee2897a35de2cc5a41f40d3d54fab2517e8c896b3219519eb144189011d15cdaa8ba4509a4334861ce719bbf93133f0090729cbdfa70f6e6f5dff50c4ac127b2c8d7ade7b5263fbe3b7d7f62dadc9459255a0e3c664867a3ace0e5da2fb06792a68f56d3a928bbf66ab47590bd7db911593961aa5a4da76c0e17b862377351c07da4f9b50a19629401f5b10dfb9b64a51857f9da676f4fe1245d15f2a6f01f7fabb14423c041bf0fb191f25a94d35cde001afc6325140874fdfd2ffefcc7affef8c5577dd636c55114a37049966785e87840b1dec9ee44c03fd94263811eeaee882bf1c72f7647a5e0570a5fb03664aad9fb62f7d97e27a58c1d65c539e5df03d3df4b58c0f628ab3b619892407a39d216bbd16aea5bef0996a97e16b6e5a561cebecf8aea4f68ee1fada6218b9662d0d23505f47fbc2cd146ac47e8159bbbd7423f5a790e909e5ea8df67786cb4a0ace9241d264cf0a949b611654026b7aa5cdd968ff2b50707d52eecebcfbf0291dc88e35f7fd943de492ae1c9459aa6a0c8a60f36324fc0ed78d8e501ff8197995c294477fc64b49a292c7da9874abd5f7ffed5ee17cf583b2bc6f94a65d722101b5f0129812335170b8dd0e2569f0e2de141026f1be75b49a814ae05b8626280036c0f9c664941d65bb35cdeb015a431b891653eb9c92602f8d21bc126fa3a9cf3f1d59a5915141bcfc5f80a14fd824fd25386148845b50ba688d16ae6940bfa58f46652ce7201c76cd91feb0166ab85512c4c44c5b3fc453639fc62ef4ffbcff63cb05fec7df12ba07df1d59ff7ffe89fff2c17ef04d782c8af01faa7cfff985c038dde6c24cb52de88095e49a4ec846494075ed3c42db4d44d2723fbaf469bfe020a5ff4977c7cc56742f50b39111fd056a64ccb5d3ee1cb4a94bbd964d457e518be3cc793d1fb49f9434dda7ff4e6be749ffc985573b9aa8e3994cb6fc79a5e4f60b60c7bc83dcbfc3a956aa7ba051f83c9a857b9aba9dd78b376bdfba7aed9843375e82b242e5aad48deab6e8b1eca29e7952c4573579dde7255b535c82e6b5d89752d0303402af84896a1737add70ef6add7a9364f0a5e6ec6e20bdc564255cc934202ba35c50baef0014dcb726cdf384f4cf5d966757225f1b30f02e5357046bea9541c1ff446f5942020dca2f5a8b73173d55c9e5db522ef90cd3d7c42d8c2b01a8e9eaeed3f5b51acbc53217d53dc9295c9dce0911ad439650819bfa37d86630e8b7a1e47f3f955c87c09d4c66f700d32d06837e1fcb807e77cee09365292a48b08e150769545f3c3ba8ed8d39c10b35297a8b6c5c4a25a7159c6451ecae543fcf46252fd7fdf9fc4f7ffcf3e77bfb9f3dfbd3f5e1b5eafde9cbcf9efdb9c7d5f236f69832abeccfe1ee8e3d0a97e8ee0eabe49f16553b7873b17fd965fb7b1df6cd21fbe2f30d4eee1d5fc46adc9e40330b8c8e16c6e09ee04aad1682ad0a7bfffad0374a1c35725323307eb6b89057d642c548ca5cf02699c25224e7eded83b88fefd88616c6ea82a4eb4fcce3d762774ca887dff0f9f68b38115351ea9b2c2b8452edc9e8b498ca1a8768e50876e8c91417d89a8a9206d978006c2926a4de61a558964289c23021b6ecbda1454c2e45e917c7f53a275867a64528cbb07a835ee8e7b5e17631711471d6921ac4940bf7e6f6b167b4b72310cf5160de0020ba76b5928b6057bc57eb87ca89d49e5349e239cf0ab828cc82443700e447829defd5bcf0bc5e471a41d6f11ac5ef356e34edc43d416c4958f1b3f8bc34998db719c44374641ff8e49a1763f19b9d925702b79edfb7f14dd8bf1921e4b28ddb4feec70102b4b15c41a6401d6eca0ed6f12150738d018fe4d440519d1abad43170cb131571080fd8c3cd9b86e72ede335065fe37d8b89fd008fdfbdc3770b7d4ebf8cfd939481e5c1402d97ab36fabe5ace413f106dc483e418e68a2f4e9ed6e4604cd35a1b0f0ca34a8599f6061f19b84778b7edb3c1bfcafe15e4e2434b3fdf4c6b954f1716a8af2f60a50e02974c3bdc7f53d969f26a3a37206053282e3525f90cd534630749b2120529a6c34bd6121795194e21f2412ea5f14ab994d465d029cdaa1cd0322a83d59503b7460ba476a336b0285411000da77123b97c84b802b41d9fcce3c89939644e91f6ff842a430c1188f653e31b9b0ff5ff6be85bb8ddb58f8afc06a3e93b42952921f4de528a92ccb896e6dc995e4b8bd92ae04724112d672975980a2d9d8fdeddfc10c9ebb5892b2e3246dec73da500b60f01acc0c06f3f826f6c489ffba5db29ba8098186d43cfd0f727d2316233e16644605a1aa560c4274a0f557e38a017709b748f02cfe2e3a6c98e03b7c1e07211eed4429cf64cd2339fe0bde4d1aa73ee5c4e4cd1eeeea04cef0b432a23a2aa3c601ad8bd1984954a560bd551bb08af3cb3336f3caf181065ca4f179211c81dd619d8cdae6ea7ac78514e5571cb36af1234e9c91c0bb9556bf74f2171d3c773ce032b7e4582c551c68a662a0c6de349fd40d407b7d2e5610183a179ecaea31aa15f6165c8217dfb0864c1ee9e7a50a5b8bf1b11afe575298d475f55a23eaa774258b1ab74fd71317af7dea699bea44351adfabc6de755cd158c417f59eab684f79c8664068c80e71c07ce51c64b4e8e87459224a384388cff2590653019eef731ef28dc75df5b74a73bd0ed5c6df461b87ebe1f5deaa9adfa28c67e0e9075d7d5f54ab4cf2ac6cd107510f1495034acec736ff5b62faa958e096867d075210d6ee22f9686a7abe46fa346b8033991d4d89a04244f8cab2c5c86a69d4f749a34c1bd1de2fe5c3cc5f46d0c76962847a2851b1dc2dc1de5988051573058712efdf7b085bbbbf809ab0bbe092c632c2b33e5abb06fbdfb446d4ad4e09d2a9b5c391051f0e5941a85acb4070395f33b18fcd45c284ec280183ac8f8aafe333150caf8234b5f3328975fa3fd6af1eb94faa115631998e6df66d6917228cbdb24daef92d64d815284fd4b2f4837bb1358f7970e4f0a930e911960d1503891958aada22fe868210e11d42d5fae52e3ae8614d9de99c7bc2aa5cc1d5478fb3579cfb835a69ae706c99600c4f2df08c4d76484fe6b4c93a982846b362489f5a116f0cdbae5e902ec158e2128d25f4b225976acdbcac6001ba40f47a1c43a5107390a9d660ab57429fc592885e09f59f5df1142c0ab45d0dec608da80009ad18a24fa611298111c41103eb0262e8ca4fcbf8a15fdff17d9eecd4da005019028158fbad5016d2b8e63f8b59d017a52401b8783ec0700dcbd3e6022d07f38c917c0026fe039af5e7c12a88efe2ebc0c5beeb28a233f7836090bb77f1476701ba84633b99b03e7759440da7bd0229bcd9ba7223e9cdc918939c7369cd32a501d6ed923c5ba2e9161d723a9a8a36f654f01b56d8c8f4b42fa7340d0c0df02200d735172e9e5b1f9d049439142c0eefd12cb9a7c0164c5b3890092694f5c767c761866a87d844b012e339a1cf02582018173d5163d77d3998a6e91cd4b57163c945ceeda18736783d5faa8120b8ca7b4984c0d528f210d412fd846b7bf76e55f95cab6c2e57ac75f10acfd78a86973103c9ba68a8684c05564e4c48da4bb918110ab43e01237e2de7ab0a0583f4b43a59adc10883aaea605a31a157409e75b0fb07bb9182b3ac1fa2d2410679a021ab245cc4b503bd274778afd875b8238bf931d3e38cdd5a56518aadaace0d5b2059108186567f5b6ab5a4eb4573d9977b504c12ab87e9ea0c0eea1c6597f5cac34a0d4fedb7a4662c4d425da0bd058dbcbb63fdbdb67c562b33f13b487a91a5a8b96256d38780be5c5deb4312a6b60a05609e0d3bd1b3bbf8bebc82c57fd20b98fbd24977bb5ada07b7410a2e89498f140aad59d62f5fe67846fa546846d403659cd143d52fa52347b195fd3804261ed6860815ac4089dec56d03caef2f64f1534dd92604d55945b140aa7afe1c7c0895c09df26b666465419a605cb12ea9b8162d30703b78f6eca9de12c70ddb1e614353b611bd81a7d3041cabc07ad410e6b818afd32f79d649664e98cfdd11f882c9a2ecf3a4c3c316e085b4b343ac734655698275c866ddd5a5a26346fba9e056262bc374ea121c7078164afe0bf25ddcb1a9b2cffeb4be251b9874d321d3fbf76a5f3ddd6e85a934aa750e73f93c9f6689d6fed671e9aa35c7326982543456cb3ac7ac181fa392428123d43c45aecd51dd369009856e8e4ee8ea6dc832840619e0d1c766c4d3d457412d7eb5c27fcb5523fa725f6ef861553a1d7bd7b83dbd261175f62a5b6e7a8a89222b3427b73ff9649d6c46c65e79860bc8694c2c8c46b2341e422b1b3b549e362377ab324f3b9e66909dc6f3f415448ca83674365bdd293122556d9b9c5db44be04e46b46049bc59d2db0679a4dce659e5219c1871ba550200527a0d94caab7ee56a1402ab3ce2abf9782b1d32a62383fc2e8484bb71d1a9ccc754f23e78a1e036e015990fe03f094fb2867fbf9c14ec8663ca32781d6ab5091a71d36c6ef2e483cb11d717d13c1bf0618decadee593ab16ed3e4d85f7c6ff34b10c7cb9936cd66850b12f2b9585f8198c23312af6388910e1e877550ac765582181bdd2ef99ec9e052aef3ed97ed299e8474e83636229d4ec7285099be7de94e169858d5192558c364dfd60029e9900bc90a4bd9cd44f45e6b274bcd73c07d32da41bdd5c393d2cad91e312a063a9c15d5936fb12d5ce11265af5cb3f0e55f413613b417d4454a18ebc923acde2651a7a5bad62575422cc49a2b35ea87a272a3779fc98eafed282f97b18434fe4b101a42ab6ad01a08428e0b8379054b41dde2d3d04e150b150c2bcfea9443def5d4c67a01e75f904b44994f293aa77d73b32465fa110482a894e92178f58ee9b522e7d3223e48420ba6a069fd5227724d8a485f75f2aa3df86ff17ef216dee0cab8626e2a6f175fb52b0dcfded65fbae1e10bf02f72c1c4059b518e1612780420e68b5fd1df1cc4677307f7b4583e1bf7b7a99c9ca1844fa7f45a911391d18918e5f29668b340bfd11129ef435ad052c81fcd328cd26852e4f0ca0e91e06723e6f5d0ed82c754dd78aa185291281c8640044b6f1d97495d7597df2701b577d3d0018034650645175a669bab75277ad35facedb89d16e063551f6d4da53439dc43766e2e07ffc97a91651a0c57d3d7e4dadbc7132b35c254076a93fc3da7e33c1b0a597f581c7c4b7fae91fe5c47f423d711fd4854c5775da636abd11b1d55271d80a39db6ff994ed665be9e50c92aa961638a3efbbb72b328d5aedce4aa2fdc24f282ea3677995738a4e202c7f415df034c097aa8573cf04b92e7a75afa3b7ebe824aa07ab9f3f1b1ed5ca14be11bda81f63bae68a8ea4bf09fb5d38c5bdd92ea2124f5b685b0dada7cc61b52e0dc163c9644ed667c6868788946024326cd16c5e6b1b2ad96836ee2ef2fb4a3244188fc450a331f3802aec94a1c5d53e2c873f50972694ffe036e2491c1927ec3e8bf31fdca8245af5ae8d58cd6c6ea8f5ae0b98e4a5fead364794023a3ae28684a0e1abea8a40f6f5ced4b5608e5b2e203da0184736524bf610548355cb2b1400407df704f11100bb288cd9b262aecada9de179a6671e37741d39400b5372d445eb69271d571af799e1d4e21b9fb4ec4ba897c2c05ec43dfab9240acbd801639928a5523f9caca306f47ee6e4df06a495e29c78d39512697821e3f4816a51db87f1f2f33602aa124421ba3d986285218980942b379bceb6e9734b33c5bbfb2ace4aa4574cf686309867b93dad6ae5bee27da4ee78b965a4f56498618cc65c1321b8e100b1fe5aded02d370f50f5751115a1d9d44d1da051b75db1ee24e5e0b007ee1639fcec7227c49f882b83941bf4779dc69936bd46e2bb0347b3df4c97ef42a1666ced0c6643b7eda0c45be2a5933c802476fef09ad3c502f9a46ad77cbb23ab5599e2c3a2d7a40f3ac4b6b4872f5e1a91a5ba0a6ffea453fe6d1bea2c401d13afe1b450eb4d7663a651506cac91a925c0a7ac32ee1420256572e30f5e606d8335487d1edfaa18b88a037c6bbfe4a81b902c34c25b3daf7a60ef9219f4501f122cf78bf4d86fc4633cdde74487a2ccd6777a20d3e2676f0e3cd3aaf3577775323af958750b2b03c7955f42f0b7593a9346244ed7d35d8d715a390d8c5c1b880b91b2911e8788f53985021585289d3629b1bcadc35d49463d64d41c7906c7336a2da480fa2650e214eb6ac01960fc895d1c3b4ae74344d74194819c5002560e109e1d3421fe20050d33091c620cf1b6dff960d56abfa8821eeb5c0cfad061298af4288ef39c1a71dc016fdfea8669b4fd15c3ce51986a89223ba101a0cbea21a23bfa26ae023afe8219e99c840e1d795051f85e8ac30d7056cf69df77b1b7efbc0cbe96cfdf9d493ca3f9af854b0717ec3fe70aaccff6a26fc8641e07f4abe2fa69924920ac86831a6d70cdd13041de073c9c13e90204524a3acd00f1568c2ff6124be0419722e184669edcdc95e5e24f90d6d456855b74b0e0147d2b9ea73965b13c6ab4ec214fb51045c0d05e82dcf04178a0f4421a129c8d559035b362e9aad2bf43d36068d54477116924d6ae86bb74b06fc1dd3fe1af07404c1c73a2b70d9b3f335ec5a9ddbcfc066175d2d5721b5bff06dd2c97510fdd33972a4020280016567893a1f33d6b86184bdeb634401c5ebb42f787407c484f6598d655c9c7b7ce113bf119fe8a78c16ab3abef8255f68ffef48e78bbbf87ba3575f44c3dfe59147ab80ff8e33ffc77de6e9e7d3ac1ac7c94ce396ef364e35efc71929d7faa2e9fe2ce7f19acd9bd96ff2ecaa8e4246be89bcdad824fbd334ad7ab89732fc550ec59773fe69e75c47f4f1134ec7aa2d78f5fd0568c2eddf72ef2c79cc8547462ec898d14c685fef1943534b96e5d3e1489d85a8326f3146ba3a15cc34ff1658c764a066ab7fb9c49b377ad481b15e2124262e31894ca582a393a780a6538e58fd33ed8c6692c5357f6e9aeeb1b8e62172e12326ec86c1a2054fb2dd2e39326929da04f4096808af765de6445cf309a123461352f308acfdfcfb7991889a29111f9fa389b1cd3f3d695dbd997dec1bb1da31fde43d64120dc5f51d76a80312657254ca6913fe5b751feade98bf70cf5f8f7b8a2fb2ec7f1e8fbba5c992dae6aafb889beb6fcedc0cc15003fde5f89382868e19cb08d1ca76315fe8d067a14349914f0e74ac19e3235823d4bbb4737e12321d025691aab64b10567e72d14e6ae84aa1295b07fd2483dd36de945e1a67fc70a792ffd89454338602deeb62f0b72b6d9b5fe43c1af1cff7efc3b1c2d727b1d62e80e84ee45b058e2df277b8ec3eb494eedf6a9e8e57f88e6180acc6e7dfed58230c2e509554300ae31e4eea59afbc704a18adae9cdaa880c0961c25d00ac966c80c3af82e961b2284d522db751e43c69775a94fcc42af537f8a174faacd16c7b3f16b2f0b18f2f12143560e1a526f63548e2e52be8b0598e6c553288dc4219cddd31596bf1a6fc8ec5d84e47fe45edd76b730e8724dc09f4fd9aa45418aca35570a2c14dd56bd4e453e79f6f4d5274a8c0e9e8bfd8def8d26164033a0412bf069fcab97e6fdeb72a0ef1aa9d00bf7bd92d8531b57a3b4b1d5e25aa393659af85f48bcfb4de76842d4af281755ab197ae263de4a24601502493ef1e4e1025f2e8f1066fe5563545f866732ba4ed5655a354013fe6b56e23459b90c9abc7f1f73f4aecf1015d9a6787ca79a5d2d8bad512dc6c7927e1d9e6141149f2adb59706f5c95347aa1e2d5881706ccfdc29f3e953f2d7086751b711bae86e1953e07675377fa809fb5bd21aec2db3e9e9755eb2d21e31fcf93ea336d7cfa885136f05355544ff0afcd423f62697f495618a0ebe761875e188fe5c13bfcc5d21c6dcb3bec6f63879dd89a913bc6ad98e7d61f9a7bd6dcfe7f61fd0e3cc78979d637a6de41c4a84b8c81bc4d1a7e9d861795c60f53b51dfce557d20e11db840bebf9f0234d79d26c79d5b4abeeb6f9e1156973f96df3c32b12a648548a9c91f0b6f7dbab007645dbf81fef331e886dfd5fafe09acdb7e1692cf824e09bf03efacab2ede02fbb054f62becae20deb9dfcfd855e1a7f274c507ca3ec62990db01626e4779b0c3e213449e718ceba07369014a2110b7a6353ad275452c233825d77cb76ff8215107e260c2fccc199e229866e47570a2e54f5513ed39e9805d3b54c6e07484f2d6441b3a18d7104d1a252cfc3018d777bb9606aac60c0abc7f9cdfab7362dbc1ab236d0ace4f37fba7bb27fb9f7c3eef109d9218ddda77bcff69f7fffc3c1fffcedc5cbc3a3577f3f3e397dfde39b7ffcf37f69af9fb0c170c4df5ea7e32c9ffc540839bd99bd9bff6b6373ebc1c3478ffffcf55fee77c3b4f99044e9f49faff62f5f1def3f3ff887eae1dfff0e0299ab1dfaf7e25697c7fbdfefabb6ddff8b356e9efddfbf2feeb7fedd0d809cec1f1fecbe38f8dffd67972f778fffb67facfabebc4c07a27f79b9dd585cf7f2c5fee1f7a73f909d6a91a5fedd2e397af93d7ab5e83dc7087a77c2f58589ec1e1feffef3e9ebe7cf711cb4e80dc221402d357155dc4bf35ea4f8e0f0f46b00a4ea08bef175a4ceeba0d27441a5bd17bb2f5fed3ff3eaf663750f0e4f371f7bbd6e3e8e577ab0e5557ab055d3ab076a5a4441bd0e614de3b09ebf38daf5ab0dd2fa6a8f1f7ad51e3f8c54bbcdfe9ba2fb958d3598e18337ee995f6d921d1dbbb4332972992bcced98d2186d133aed81ce7860508c25d824207698ce3dd5c958e0c8f34ce684122f6982f7b40da92ce0e30b1832389a86f0f564c83db2d1f9f3a392ce3c65597d93525d5ed6b7833c157ed3c90c36dbe6d796fdf5c0fe7a5851d197077056378975b27981647fa7ec08eb2fc3fa7a443b7b8b4eb6ea3a8974e38aea0417b749fa1ee627c0f0e1959f847a7309575dd5e635cfe4d7d050376955a3c17b57d99465eac7fd1df2b03405b34564c763181dc8157334a82e122fe59f37fbba6a73729f6cc6413cb80588ad388887b700f1a004a27befad487926498fcb19170c53b5907bdd1073600fce26f7ef5f901db776df7c43b6c87bb718df7e4b1e3ea96dd6b4f5ee92cd472dd5faa16bfd40b5de5adefa01b94b1e40e3c7aef14372973c7e50f760a665274498503edacbb31b564801ae37809b406634d15192921264da1e6d689b709a4ad66659e2092e267da0ce0e1f8f4783dd9ce626210d627189fa614e9c75085489356e792482ca000cfb534ca311a168f54708ba72ba2075961e94e357d6e390b799fe28eefb087b86fbcc2f0003c22be582564ddbcc2084c226fd11ce1be0e3ade161538ba25b01d02d00fa7865a0414b85a31775480aa106bcb526ff8f3c00f2bb55a6f0e176fa7f76c4b487a8dbdc6887258e73b4c87d45d2ab8fb8b52328272cfdc4116ce108c221c4ceabd7ba74ab31a79150133a830e242b66b44884be2163a46b6b8aa0b3354f4539870fcf842ca67d89fedc57c2f965577cbe25b88de90b78d2d22edb78e9f120daeb8f7fc1c28b8e77b78a53074b679acb428240f9e97cc2cc910e512916e8c16fe204393fd2468014e0359f65b904afcc2bf4c236e986f281cfbfaf485e1031ed8fb42d2285d5142c206a1097439001e529060232b18ad5c24b26a4d02e927d2a26ace8bc15413cd76e3780767af4ec689b9c304666a3b9f6e84420d001cd12ed4cda6352b282883c9d4a93153cb25690fcc05b213fe48837d30b48798029ac34c7b87b37be9a1d43dbeb61955f281c4732c8032c40045c494d6d52b0017fe70bc80ac14aa0a889c14cc6b4b80e24665f1cabd85960edd86521224f2e428b1ab191ec4463a5e86eefef546e222b3c2b85903b7666612d3be0ea1e1f182e1a8d2d531a9bbd949675788e92d674e3b8f52afdbcfec48ef6523a9eb0e476fdf917e95b777b90c9cdc7b759477d83fea8f9dda2a7d79fd0d541261f6cdd664efa22ff5173ba454faf3fa1abe7694e6fd397afa0f8b8ce1e3fbc5d675acd11efac02c1a5c0613302f1bb9b8de794a710d405ace421f48e926e3121240ca6d18a04570afef0ffb47d98e1d608f31103b9058b138d676519015e35d2bc872ca0e7c6ae83b0b0cc670e15123fb03945e34946fdfaaeae4e22baf81daddb254f69ff1a84aef57e3e9e5009898d356f524bed063f9f94c324a3c9b51a5645ab7a5f5371d8b2fba4f1ef4675adc13034eecb67f7a9aa33bdef2926efabee4b8f2ef52b82c9447d9d454464aae266c4dedc0eef7f4e8e0e3bb86f7c3037711c4bccaed6a2d8e47c064d7af37c6d2f9fa649d680fc0e204118ce0ce8a1fad238b24dced774c8b9da95c344526cd1939419206469b172ab9676c1178567826184051c030ea89fa7d371d61d7096261df28611482be15fa303a145606b0cc9a0862f30264801be3c63256a6a25c013f308112665a18264bccf303dc698494aa06b8cbc01918a149642107d41338834a2c42946fa3423490e7913850ff09ab1894db1615e4a4cc82f9e49da971d57dd6b7834902c937c6ca27740400ac8e890780b083b05393a32a907397011426ad78954b11d92bf43ac2bdacb6f58abadc040a7ec9d2c68df9f14c49bbae65942f201f1f40e5def12d355e73131e933a636e581253d31b37156bad294551d0776720a77612e898ef6a2c55d417a4cfdd0f355fb64b53198043300a866827b880952e588667e0bb5beb8146a8361f99d9f9ba2a9bdf0da9298940484cb4ee4e2105e79ebf4eb2d304caf94964eb51e081086092d442476d50713d66490a7693e83fb529e3092309aeaf734b7e6b06cfece2a6643f222bc49cd8d88d821cfc1f94fdd60d98462d8e5293a94012dce07f67c17d8a5f72c88975f3500c8206f721c98dc1cd51c186505a595dedd8a2e7cce282bba245e6dcb30ea9ab7173f9654d46869de534bf5a496f1594e173ea0c19ba764c37988a7cf9e0aed3795e0aae5a9e2d27ee8223f890f9c5bc1c793740e81daacbfa6cf5f43f49446d6703cefeedd9ad7c88eba3b575f6522b140c78a21813851793980a266bc83909598c5243b06ded966a8548b2047a53fb7c706c8c685d633b516794fd8cbe2b247299df8089fde478c147c38d292648f0a486ca4d39924acab775e92645a948f458010c14689190706af5a97561b528d96efc2db21c72eebb6e3edd596c41bfae9c411483997380992b19fc673b1c7bbb5b7d778df4a1c3d58f89ee3037bbd02b425cf431570fe55770954ff2abd14b8bb6c2e9cb9bebfae34d6a5f0bc0bf12ae3d377b985e3d3f7c395c6b7149e77b95d0ad0bf6dd643f4efb0ab81d477ca2520f54db506a44ef6538281865edee5f375769dcf327d72d4fd050ef89398081dda5700d1477b10abe72e42b32c4ba7b6dd4fdffa887915bc3f7ca3a980f06d97fef62a86b7aeedd2df760a765edd7bb6ed3d720011f79840094549056ed5fc7a0b9ebbeec522da66fc3aa5e266d45dd4d003b1974fe648ba9bfd16d9dad8dc22870082dce419f98115f25f5ef6ac7be405efb34c91f76996e82bf8cb835392e267c7c6fd57d24abece53da4b5953b6897182768946e1cab617d3eccb8e7e5e38f9296d36f68ef7774ff7c9e9eed317fbe4e039393c3a25fbff3838393d018c2abb22abab3214349a3c210787a7fbdfef1f9357c7072f778fff49feb6ff4f08ae4ba619ff69cacc0db0d1266717f5830b1f5e6cbe4c3416fb5d26cbfc6af33f325d66e8c6aabe81272b1ecc06f9ce2bb17636cd16d95e25cf6659fec17e3fd52adec7079ba6132fd3be79e2eeab03145e03142901d2d9397536bfa9504bcba5cd1a0e08d259a257f18d8dfd1134bd849a6da2572ef42f68b56d6b26fa058725b5df04ff57591352af9629852528b7738928f32978fd77512b2215b5a8997589ff44d384bb4dab3a2fd452a48546f2f1c46ee55a7531f43ef8d0a5a62ad1a0fdc635a1ea645fb688b678e87351ff0fb35f3edb8cb2d3aa897470246286d27636b298ef3b1aedada6f82985cce86350dcd062283e82e62f06b2744975c08cbce800cb55973ffcf3e49f87a7bbffb8dc3f2eab1cca3ce764ffc5fede29019fece7c7472fd5b4b86497630ab966157b395f7bf3c3fef13e90ac9d06606e83ec1e3e23da4ffebbf3b536392b73a78bd2f051775b258adad54b17778a7c660c12a266fcdd2e0627b24748903117c0489a332a087a9924ad68cb82ad3bca83ed69964022f0487ca38f3b47b7dce21af61b1c832575eac307050d1d0ec53caa56ef32dedd2a5df93caa5ef0889c41ed05f0d5e67f4bf0ef4006292549f1ebdd9ef8937a8265cefa3d3ce8b522259e765cb5efc88b03250b6f2ab9f19acd573fd5a5ec5191f30dd14fbdaf5cb27173a38519b1088a62a091d91bb13e8406178ce1e9473b1c4fcbab15e864c648c66a323b74bb649a4d68ff3a1a3cdba57faa0f2a8953a9b09d8eaff55e106f32eec8b6388bd4aa8c75316b5dc1ffe8f71074463b027db5f91f94beeff77a94f19e77bbc39acf44e9a846d0585bd0a3ddbd779c5776cb5fcd1d5f5103d30150061ef7c82ce7a81beb8c7ab7231c31c868dba7c9c922d2b102f1f805c8c7a2f00ca50c7df8a58dcb8109fac87db289faed9b9c27cd8d96f1d312eab8f45236d6af4905835744aeb0a66655f201f1d2f22d5d9255d2e9ad964c6f71c0b19596ab3e08f81f8ad25e2eca470791400bcec40b3690ffb942967e380ddeed775f1dd8fbb65e2e97220a9641109e119a55409dafb17713d6972c395f23333a073748d7163285830b635fa79ec2446219a1be424903433f5bd1b95512afc9344dbb0fb74260ab27575a905649fb8eea17c65c07cdd22d640ee9b2d47f412f67e2bb55f361a81d368d7fd4bdc52c3f6fc9323d4a59b1972ea5baab3fb5f6a6fc3127baf682f5314c9d2c64ec078727fbc7a7e4e8981cefbf7ab1bbb74f0e0e4f8f96e97fdd296e911f775fbcde3f21cdefdae4bb9616db75e1c50a7757472283adace1482bd3cce5ab4ce2e1124a9d889fd2fd059de833efed06d887b3e409daa3d7b4712202580851f2d3349754eb52eab89b198ad3bdd82f7f7f7d74ba1bd5be789dbe617a45827345f2a9c4c70b253b65f9ac368f9b977b2d2fe4482195f6622ad87a31454dad1fddb416c8fe0dcb8c5a652a584168bfcf26da4742d1ec0926d31391fc381ac4382f98f588ca33724207b4e06d14b93006ca8c9729a1d7be872b501b48badbad6d7a5acc6f3d69944e2c9323dfae94ead7704d1ddb52912e73be82c352c34ac191b36282ea77532bde2c48d2ac4f953d182b8b47ff91714945a80a5ae4366372ae869b860149cfe2728fefb4b9380ddd175dd4a75d609fedbfd83fddbf8d262aa681aa61e67f3c111fcd72532699200c226fc0fd59bfa582aadb3352d5de54cfc14a702aedd5b8608269aabffbfaf4e8f2e070ef78ffe5fee129c920af7bfc3516c2a97cb5f9bb8f5afefb44f4b29ee60b4a6b8080d23953d218d8413272b577f4faf01408e69575f318318d9c241f00d20b74c74c08cf3c8cf72e52712c46add41f1c8dbb5db23b1a8ddae4e4ef2f2011a7365dcf3346440eff08a3a29a6762a9a6d26d1da182f47f59bd65f491c13c27f42302d11f57eb5eb27055bc551d0dc91242210d0c817812e41f4f08138265124df087862fa81a60efedbb265c21a3e689e2d357ce515a3518e742123618f03e87071a3a2707608a2f473c03e52c1ceeb1a7843589750a5ab074be0e895b9b3c23e33961ef26ace02cebb31699d0c2fa24ecbe3a301e1e005c3036f6c0f1ac9f43b25674b2d0a9dd21f53bb98a5fb9afd42dc6f30f6f1391070364e4e099ea9ed13ee45e41ab97fe08e35d010f967cccf086369d246a8d3be4152b467402440da894077252e47d964c0b667da97cf774752231db38a02eae9056dd7e5761edcf2075ad1e8c1a6730973805bc66f3af367fa3d45dbf1b0ab89490a99d5e456ac5c3e03f9f4214d95fe301550d71bb2ee2ea1f97f4d564dbf983b3fc4f43f88fe0d68b53dfc41e0c23a8bfe8f5d02599a99e0edeaa4b39b3f0b5289e05e7bff7a82846625e2566b35967f6a09317c3eee97177c67ac6f8b3fb27f3cb0fe7f82d39854c785c902c37012859361d33f42f2bb4895660472a08bda13c058b2c850134d30a35e35bc68562f171be356472374d5d88f072e45ccfdefff6e7f41667e91736acfbe65bd2b8bc7cc37a7fe3d2d8b6aac307e66897970db0ba5bfdf0d99457b0467507f0938f9feb62c111cca2b19e2327d09cbfe8d3cb36497aed4523d8f67e2f3f739fc5827585878b85fadb0f35e77c59ca266715ff2569d397a44dd5e7cb95c5971a59241a6a6785bc4f719d83ba8c013be891820d58a1ee77e666a761d89043e5e660ffbf289554fdfb6dd575200cf0df68e0ff36225143aab35f210f927efbcf2784a6a9f3a601ca5fa15086f6c5d85b65403533fc54fa795699d3c572421ad2afb2709b4f9420c0f30c22bdd7b8537c7cde8600fc6d1fe603528a66df8b36f3171930fe0b658767c747af9c1b98e702763badb119619dee586fd1addef05779c5af79c7af7bde8f09de604a62b672e5eb425b87f60d91c013495c5c4b132cb6f616e17a4741c6a1441df4331e7fdc8d4ed011719aa60e64352f5dbd3572edaed6a646a8855597a832fe4abcb23dc6d2a7e9e5379f3a06fb19f222ccc0c971496284a0d26a9911bedaacc98d1044ff5f90182100504e8d10149693230485f1f40841153f41425010a648088a4c9284f2479d2621f85c9f28e1ab4dbb2bf154092f3c33be48c2848a8360984121300204f1d39aca81fcd9d00bd6203c0b2bdfbd8b0a6472b0ff750c5a47b7c4285f18e4abe10fe4ce9d58f5403eabf12ed45328e7cc8f79923bc3ce21937f63f3571094cbdd01b4173b4a621535d7b5695016a0ef9346b71a6cb42a20ab150dbaa815825c57f76392b6e9d09b6be5185b10a1be028dbd7969afc1515f600052416fd0e118de09e36fd90ac8c1c047b65380d0ac2c9adfcd29136ad5214783e781680efba5644286eb58c1d7189234237db421da72482683b6ee68c79a870deb306c094696b2de7f58611fb82053613dee689aaa5d31a949ec8e201830e2e3828c991ce58909245b0f911b7333f2aae0375432f2546d5998c2649c27ac4df202cd7be73a5a14048c9881c24a5d369c160a0d009578e177eac1e3826c98987c0523330a36c50ab29a52a29fa2e74cd6b9b00714ed35cc249a03e6ce229c7cff3edc7cfd30f0ad97a3c0043e57777559b687d651cd8d2ffea7f8e16f7d921ffee7f3b4bfa5c3bcbe44fa24b186a6ea4b674059ab57fa9a8d8e1faccad5be56fe59e6aefd09bed1913458e5f7634561e00e0bcafc20fe978ea0cf0603d697fc86a5739230218b1c8c53cdbd3734ce80a337993484e7210f70ee2c3038dafab4679b5b3cc0945964a06df0b9510da2ee44cfe83ad95417916f51cfbabe1ed5b4a0ed5bd0fc9acdd117aaaa82b866739b0ec28e0b0352c7cc5bebd846e485a41c27d5fefc5c060a05678e31380c03ace890d759caaf4bde0a90b2ec525408b54ecfa0c8c5f794d3363efb43f4c13ce183b91989f6fea0522169871c0c0855cbdf105812927ecfff0900a287c4884ae7341118751bdcaa7dc100517ceb57b129bd25e62f7f780cdea903a4d2136b5688ea7d0243d41121a9693ea3820cf2a96248100f112284d8bdb75e7b7ee79088c3cf19f43f2704a570d8430d18a2842ab9458e747eb46b560e4ac205515895ce3db71ec5e067ac91a6b8c35c42743f0c0b075b5c821178c78487b3c63ff013fc024b8a051b8aa494dcf2f39cd103a91ff46e5801641d051e2d35e0398d22bbb9d46efd524ebe9f059f7d7a1fa1f435956d3e2afba59a55aae4411b610d4fb4770826344858c2d140cbac17e8c2194d8c8afc8a5f29981c04d71e4b5d7a0a7340722dee02bb9e3132604abc2f5f7569c130a0f0349381fd24716cfa0a07c1f3ec10ac2eafeca3039c10f495f52ab266ebaafe8cf8df4bb5c0336e258fb8078ffe9470d19f0ac1f3ecb278f0f5c6e3cd470f36c2c3a15d8afda1939d4a52e7dbba2bff622cfa4e0d8beee799e459c583aea252b42942ea28f02f456e3f9ae0568080ade1ad486e05844635732e2a9ec875995188e70eb998ec46c36647561f6159076ced58a236db052d2d518956bb8c90f7efc77106c12ff4a2f66598df54743ba16388bded2321caf5cd96bed0b7097bd7671349241818d3b84b696096b8f5c966899f51e829ed592454595c38526b92d5051aab3115d0702ab67dfebd0c9df63028bf39cc1804408bb4ead8c1b1aff8f0ae22a7e00f0fafcbec311292f7379455eaacfe7eddebe36af8b4502888081dd187b18fe1614a76fbdbadf8986e6179591909ea6f9dce3ccfc0588e4acbaea311d452dd7c7621f8643a99a4f392130a6c0ccf428dc82d6f84fa9de5974052359c2a8e824563540705fb53c1b9cf75d1474d52f49adfd6891cb2443b00c597ca7bcafa0fbd3fd7e961ea6ecd9f1dab990c751f18256f9a815d26a83f69ea39ac677d643a3a0309a88f7d6f43adadf99e72da10cedd03249f76fc542828e63e6120b77d154c86aafb793e25339ac16d1c1fd1190669b79a18c8f401e90255e546c1889842ae720f1a68ece171c06593d00a265aa3bf17a1ca6659fabe5f1df3bcd4729500273a3849e9fef5096148560d42521b82e4170940b25af8914f34d8f9ef895d129153f15ff425324e8b6af20a9981ad18476441785dfc67fc378da2a24f27b4cfe51c2e122ca9091a619da15ed26bed2fa553240e781f17bb0b21b06a237c3067cad8f8fb3497745ff707e62c901ad2af727872b97f7c7c747cf9ece8e525860039dedfddfb61ff592c099a59a47adb9b0511bf1618ec5430a0243aad6660fcf9a4efc0ea63eb339929ff2aa6c7b7b185fe62a8fc6b1b2aaf6c936be954c5f2e5b666b6b77828bea5d5ac77af2af5fee9ef8cb755637ed45be3ad5e1bab44ab9e647d66a3407fd46f0a3a9994937338d3c048d5150d04b76a0c0423366f8bcc04b71699096e2d3213dc5a6e26b8556726b8556f26b8153313dc8a9b096ead662668e54e9f540311a36366a43e27a59b8fcd776d328f59d7bc038c9d2bcaa939057e69e07d1e38842e98570ab838a487cd772df7db43e5f200b9c98ee28dcf7c6b424a13452968d11fede3fda86a7106c6cd50b57a41771a1fff44cc463c65a4a97540a5730941ccec0a01dc337e511e459d8d7ec908ac22acf0fbf79718f285666795f5c2ec9b6407534c77ccdfefdf7b92332d86b15d3dc2f7884991cb1c72a599141a98af1b5a55d3745f34bcc140f8110cd348a88e6dc61282c65e2396912bbce5609d66eb4a5d594b21cc301add1cdb8fa86a4ffb452e043e986a9c2ee77e0b2e366a259ee175ca8c465b4b79e55070a25352568b91f178cddd7a1d1c3edbffc7feb3674fb7d17e42131bef2cbed97f7af2f717dba175b457fee2686ff7c5c9e9d1f1eef7fbdb3172e9ef6fcda08e0a4c587b160eb56347d7d154b65d9a4c0747575bec0fce54ba08c671a4d519d8e2253c50805ab5e1939d46d8e8059a94f8b5811636daa4a1e9adfaa9e9b2fa79cde6fa3f42fd174faffae528acfacb58215f2811b24f65333abc566c25ad04eaedae97dd649b341a018545a655dd868e48799f058c46094486bf0d2a86ef10790aa090674f89e0ff0215d0e5ffbc3e3925af0f9fed1f5f92472f9fb609152efdea880f474c48a81d40d2693a213a0797a37c2a09d51108bd5b9a8054570ffff2f5c69f1f3c0ed25c69296f1b961aeea613ca0be18f57e780d9269b9d8d18ed716666344ddf8c58760c0a17ef801aac681bdb22dc97801045aa9f05b52f16655b56fb7a498ba1007aaf65e5981a23d2cdca5105ea419446aaaf5bd11580512eba522ebc0bb2779265254bfe40a0ddc4f70bbb060bfc8f55135a0cfd15439bcf32cb2bf38ca0d34b0c814362956cf3ce888aa359f6aac827ac90f3a66a54e593a681665caae199aa7911af4abc716f5c604d9c0cfe360733aa40a953f22c03fa310a8412cff77e56f8b0df799d84fdc2cb7a5a7b24ec67af768d85f0653fa542a83b0058a26b2d81d7ae7ca3b17b8f44f1743e617f432408b949f48659623825c40820c6b6dd754b764add9d058dab3be59a6a7500fe61d85ca5be5a87124cdb486b0862e87e27943ece5c838b281a231147034b133b7f4675a62f134f565dcaa24d05378f09faba6c4265035be83193e23ada581d5bd24bf3fe35cf86644cb3cc4b1018ac432790ddb08b5b5e424b8ffe0a6878c5273b86bcfdfca11d72e9b02b6cdb8f348a406d5b9bf7080c9cc8098b9a08601575ed7c6610aea60e301075164b6e21b61ba3ffd6edab3566059d8442d21b2e47c848cbc70f5a08a647d5f457a3a37726eeced8223f87acc6be5d6573edb6605e3cac1f07528027069b505e570d2054578f0df2221448142a0e204bf6eeab03a84f9aac33ec902b2de85db56d64adab5698f2f90d23699e4fc007693a1c39ef8adc1d91fc8615b3824b86e9df30bfb71a7a0009a7517af1f0489a77d3b178e4e418d446c6a9255a8461163f1c9db5e7e302defbe0820446ce53b4108360d9d28d2900762447ac9881d265c60c1b601cac0fadf61df36ed8fd2179518e92dfed863bd82933f16649afbb53f2e9fb2ef86b9b5c627dbb0aadc05faf42c970593c8997407854752e689690c1344d1587e0529bc89904f30da9d6a6024b6164c6667a4e5334fa3253230768cee9af18cda2c1c721cdb73ba3f586602e33edf9da1e0c0b50d728a6f583a83fbff335729f3446907e9f81049e74aa0ad0328f58cd1d47cb41b8e456488f3f8a7819317ddf9d4ec12629edb366f7fcfc4d77d8268dcbcae8a2ef255ecf5af2f7753ae5fc9b5ab953f3d0565ada864d7aa92193f154484557a80998bbda187d9ab7d069491339dc3db7a1ded9c594e434ab1a6d025345ca8fd5d1834ee1ae2ce6aa19501f2eab891dd41a36b06dc3db67eff5c450ea5a845c81ca2fc3b55abd134abf26057e9928e894aab56a2c7fed75c38b18fce5cd6bfdcb4099f45a1b4723512294f4a742e6636254178b1544013ba85316d5f1045fdaf13943440a3ad2e47e954c96bf4c24bc9a97e81af1566bf6ea845c7892cbc79394ab858363aa07a68fec9ebfe824cba5ad2e9f400e0848a8614c21b4fd43479b44f03cb084f893e62f7830d0bc7ad78256a3162388d8e9e456e01eaa57c5f7533ac19c4b15f368df71695d376d9745e248e22510d8630bb5c872a0b45eb10b664d6682082973dbe6b463a12468545b0dff09a4117b668a07f708a0af1ed1a33cb000ab3434456ee10233d2798e27fa22a783d91635b7162ebd9da6c66f99ddb00c41199ba9ba48275c1cb39fa65c1dff1d72c73e0a44957fedca2c624ba785240ff0fbf7c1093a2b43b968796c7171cdd223fae2a8222b60d782cc17316544fccca360c55e623258877c2531b852251e6045c1c46d3ccce581b15863c973da977931f7e12ea8d61cbb4d5a183e6885403e6a44ac4acf701640b55c6710861602304a676ec712d29b0721b52ce1aaef71c163fec20040b52fb14e2354d6e96176941a78358fb50166c4d06771d0a04b4d582e91b244cf9ba530978ac45c028db95c9cba308fc0a9037f7659d1519a7f15627e16031cd7c210abe35fd494ec2cc4de589b5a3ba5a59f627b517b262375d15245961fbb7c8bcca0aca91fd26bf5b2b7546cc168459eb20ecf0679b371ac132566c3408569cd01c87d4f7e59392e54fda04a2250046030fd5253bd18c0de50f380de8572c43248650726b3faf905258e28ab33ea38a83ea237cc246730760b1aa32ae1ec1668e862f2466dbe8b1a3565c3f40f17147fa16af73f9493ccf0e34cd095efacc2fba24dcd934c19516379eeed741768f62b087fe74eb4dfd5ac046b3baa74538d3f1381b8d0a6b3ce7eb1deccc77294d3596e988aa8daf72c4c5c5ecb43429caab942552f4ffae13f1e21c7d3c72ad1aba4695da5c72193d51b9bfdd874c7fb369735dbfe9565ec0b28ce779158208ba8e676554af0b525eece85de678dd6f22d2e0ff8767b5d6e7dfb2d38f103a8f8dbe00ae23e3a8661995aafa29214ae693430cbf2b5a9008f1bbad9d5a8d4bfe572d87701e77a4393f9e2e9fb96a5f59a036d21699e2f963e5d83e512b4d163dac1c78808ad09aae9bfdc234885c3d4699d3c30d5c7ee8fa0530b37eae3489488110c512218e236d4a27efb4036350fdb1a72f57d33b126479a4e94356b559cd03ccbb776425aaa8e5ca9cc765c7ed0ad4cfe34df339aefd210715f0345a441932486211f6abac257bb13960ede70390a1f16e37dea773ea7fc2c57aa8cfd490c4c15b3b54aa5e94faddc761956d7ccd23b38e58daad3af2ebcda7a16f408e600920f95ad184ba3487c92fe22cf27f15bb3b67d8cc0ffa68266c6d1b4fe5217e822cbcdcfaa9dc44c2b4864b28195647973cb2fad75f50c12d456f3f73b264368d13486c5c1eb6b65e957bed82cc76752afe538ccbdd07c26cbac56b319592202adc4566ea5c5084e8805b18a0a54b78c606999d7547de03077c618020c812e519324fbd448f539543c62583011dcb330d48bb5b6c0b75a75471510ec2507334ba9d632e709a164920bc17b6939885141fb10f72fe1d0997eefd5c818f5ba4bf5413861f2599e314bb4ddd2dfd11c9a7c572eaa7ddc8f929345c1e96015cb5268ac52d55aa23c83d552f22c24091b650ab0fc482f3dcc2b1e6337ee5aedbf8fd7cb6d87e287370ef336b61fae556097b288cd94cf5079fb5744a7e5e4e89723451f4b865620412b5c924bc87ebb0b54a9f16d2552dcbc400d6fbef9581bbd42dfb953abcfbae530b4a8e58fc2485f81a1abd8cd126dbac75959a0d10dd09a7051b3db0e2e22d806235d24f84644f62aa8251142c277b5155fd46a5e672316b79ed14a6ceb63a4a92c9be9f8fb75bad41582819441de768f16d0b460af16d2be8ae1d56e92401ec8690fb60412496a8abcfbeac01015d0b4262ca57361fddf6b820fe645c1c44431ee6c68206928d34cf2d4371cb0064d1d25740806e3284b1390d2b2c78836beb12f48016c41a82022cf33f55faf9497a1a5394d58a2b5cd2e47d8841583bc18d3accf081f4f683f74c88e636be94d7925a40d0dfab55d7000e78c5f54ae7bb741947ec1a8b4d6f1c1eb635052638ce75918c5ec9c6bb156b7f3da3863eb26da259c8e18a17d39a5211268f727a3fc67ef26b980f85d948cf3649a826dde0da741bad7619af768da2107b221345d44d4984cd31403c341c6e07c40f269a1430f22c9e4252b46eb62a903a6bf159adbfaf37713c73175d43091ad846d75bd0f6db7ace76b0fced7b6c9035d02e96b54f98736397b78d16a3e54c03fb49eacb5d7baf7ce33728fece593790102f8d6c6e623f28aa63493bc20a7ac3fcaf2341f7226dae420eb77c86e9a12a88aa9d38b1bf4fd42382f789f658225100f034d9f7727b43f62a6a44d7ed466635b9d0d452219395fd365e76b30e97b10e0644ce7a035c534495c9081bad8ea206a3cf30c5eac3989e9038643fea981e43d49e109a69f4fe6267aa4ae49a8b44357ff46524e74f63f0ac3860c80295616dd17077bfb8727fbeb5be04483cd5e6729136a29b4c9416f4ee86492f23ec84a299d81a1e7b0d056e13c23b3824b9e0d154918c81905dbdb7b24e14216bc3795c1e29971721154c8c158f27c6df7841c9c9caf91a7bb2707276d80f3e6e0f487a3d7a7e4cdeef1f1eee1e9c1fe09393a267b4787cf0e4e0f8e0e4fc8d173b27bf84ff2b783c3676d63a4cade4dd4b50a22c5ab65d55b4a4e180b8661ccd96d40899466c3a93a53c3fc8615f02e3861c59843584aa14df2ee91948fb9d4696d2a9383aebae7191fc35bd33da0a822e5bdcb4d0c8e74be067f9eaf3db195c0dd0193fae92af02583ac775e3d0076cc685f9a7a85faa352654fb576c03a9d6ea7d3ede7e3719e75fb58e6b7f9993c3b3879f562f79f87bb2ff72f5f1def3f3ff807f9106d3d29f209b63dcfd4c13fa53db2739e75efdd237f05c8307727b45f8ae9c45e5ef432742eb5e8269aa7b4d726ba8e2687b6ed29ed3986abc923567537d1bb77f5a79a7012e0136c62227cb059a9d569cb336d209d31c5e90a450115c627bc607d99ced194ec94f6c49fb0ec94f65ed18ca5cd160eb47b8f70c50a7ad394f06196178c64ec9d8405c01aa7b417a8deb32454ecbae9a1b398b973c32207beda1a3dc80eb9a41dfba75765a24686c5f0f349b06c80329ab3699fe0e6f95ac26fced73c3a6be16e7b08d9d4b8d439dd7d7af96af770ff45db953a0fc3224fd9b6426dda4bb990e76b968cc37090fc1b8ea7d6451bc229a1dbf3674d38c4d64fb6d1714183e7c9b68b48640069305c4c523ad78b1341e3fb0a834f291e37bb20a7b4a778461317e6d5b4607b0625100f913d919f01c13f7c612d5f58cb17d6f2abb116dbf687c741dd911ca7f07f1e037ac9b2e9337ec381b47e3c23f2c0d43224afce2fcc98b0230ffeafc5362497a92e869ff64a02177e2cac3ccb828f1f180c25385acb0416719b9407cc6619bb79b97ff8faf2d9c18f07cff68f7d8e632f45e64651b67a51a363b8502346d5d221d55393f96c03fd617fb76e9ced68373f3c6ec3b2b67160d68ae283cf277d84588dd1792d4286e715788caf8ee9f987ea0bf3fbc2fcbe30bfdf80f90587d036ea8e4b473ca80f590c4b95d5b712c3fc544eb990457e36def86b31c5fe88a749012a4a5543ffe587c8a2c550b7879f5ed1343d66032c829f5e91125ccc75c72d6bc1846c5ed23639d3c8a906a318d0f99ae919ff829ef027403e5fbb704f716084a19173a78e4bb549f3b207b185dae4b277668a5eec1e7fbf7f4176705aaaa8e533b2556e92d3540dcc4d8a0ac18719f8bfdb592fb86832b741051b6ce3226a7ea8c6a2d7219cee65ef499957de82496aee08adacf858e292ba183383dae355e6aa2bb253c747515fbb8e6b749e35fb2d72c2b3a460e4242f4653719efd55b312f2f2e0f43c53a7b33105ed7ec1fb9083b27b8f3091f24caeeb0b33c9f2f56936152c59bfa185d03a086d2dea45b338998f7b79aa70441b18478b9f60d33010866be38e615843375327ee40ec67d3312b606c9186c629cbaf076b66cfb3ccb151f3861ad9538728b696828a4e98bfab018b216b28e8a14fe713a65f7ef54070ed499f664a76704104404400d079e140eac7604d8982f064303a8501c1d8d191ecb5608754f21b9b12d2f39104dbbb60309e7c1d09adf601433449d697a4371d0ee7cead8de10242c7681dc23392a7eac78f5f1baf66e37cef8588ee4d87a2d31f15f9984fc720c04cba375f77b9105326ba099394a7dff164e7e1e6e6d74eddaf3658322137b58e1f43b2351bb4d7d7de932162aea73c03ecccd86c7d86d1c484010680ce1e29dad3485823b87c44f113691a346b9d6d5ca021ffa3c60a6b77db593fd878f4b83aebad30cd652c4dc3e646f9e10a1a9e352e1be4be5eae8ee2cf7b235aece5096bf2965a00ee2e00ae4fd8cfadbad3ea5663abd519d389672b1141271c46661ede3da357c8d4093d75dee63c6b361a98cca8b1b1b9f5e0e1a3c77ffefa2fbfde123ff083df29b44ad86038e26fafd371964f7e2a846c74c424e5520db333c88b7dda1f79334f999481b50c003dc3cfc0e5e0577c15f43243ba85e07462281705a9d52a2d5274884b96cbf4597687f773c758101885041d7ed8bb89220190fc16af28b407f96272a4776dd29b2a82a6a6a83ef6181174c03a41776e281f34e5aabcc95529d87724a49ddb9ee82595e020d54d655af48d2988da5085e74fcc1f3257828f21ebd8a6654b85653d20509a932530809888061013de390391d71c94a67351149e9464a1ea0061aa8db7530a03428e86a12655354804155a3ac8fc4c87e25215ce82505c1f4a1bad404759ad075158de1cad09c3f08daf62d447c3a80db1a6c651e6cffe2475fb335e097026f333576827ed7df25fb6abcb50669f32575c53894415dc737885451ef7bfa32bcf586f42fbd7aff2743ee09e6e4a17276c52b03e959560648e74eb9a132a47dabe462798c6afe05beb4915eabeae5f2cfc2d35e3b1122a297d30a63baa813e3f08d18617c30620e0836945a07b627693b68148583179c8e476e0ca124d3bad079356d0b2b5e290f8e7180eaf1d4e7c77758ebf32066165834590ca2bcf31b915e8589a8d4ef7527d02f14ddd769f4e792ad7b90edaa3ae1aac60599f898e7db35360f0bc2940792e3bf8d793088dd4256bedb5f335279e7b37ed01bd6687d3347dce3153a19297ec22c147c049b08db0461498c2e97ced329f483ee6628cc9e835587f8df7d00edd02f2d626e8d988a75e70156d17a2c4a7f335bc8f9caf55a554352833786c7276bec60a3efd8915e76b9a0d9faf9dafb53a055392266b6aee081f2f9ae76b03d55c9cafd9c485334666ac507c2b05b6a5778b60c53629980eaea2985b6996961f3a495b3bbd72a96e2b8492fe08747d001896021a76b4cdbe0db751025cf20b8badac87c7014888655c5a6e620dc303174ac56d756ae469917991b9c834e33f6196940036a47bc38581b0402c83c7d1ce7966d2ebebf63a0a10b00480b00e48636d5b79463a5d96c962de796b8c7734222b9932a6470104d66b535912ff0e0c95ce0cee5ea8f56896bf59011615074d78506899b35bbadc9e6771b2a407dc268dcb4b265e023e36da66b4e954132530053247f012026e26a7b989435d99a7432555f3c0647fa445d126bca4532a0a9f9ec33745e1bd6846f02d29c5dd838fcc6727960d056173c29806b428ce90c4744c4eca8b66ab4d2ec51372a7091d372f151dbae49d8cbd93cd56ab93e4196b3d71a30aa8b01a3fda615e8a8ecdf912ca061c9473aaa2c963b7b3a396a157307a5da1db316995e0fc83084f307956d8a341063ca369ea4dbd143e08b3ee6730187ed6404c6b5cb482bf8294f6158808e432696945c025ab15ce8c9a92ea11867cc60f541ee084821f843557155a557241bd89db2857a59d5527d48aae312051ecac79018b6a3e6cda0e29d97822318a9590c5b42fa785baa167eb301845964dd0aa46e555ea43d33b5b53c9d390dfaa2f0daf06cf803c0575f09b57eb44ce53763262408760124825b6cb96974da12a81f33278b594f5cccd8d360e4a5d868f7a6f5be5067ebea6cb820dbc6586e1166ca02edb21d1809a6db2d52ac5b6c7641bd0c6f713d1597c6dd1a62bd2c33c83a44b1ea2ea24474d36e6e9bca5731d51d298147932d5496ec679c2c86cc4fb2392e40c12f34e0a36617e90381d200e75fa10bb0ac21da9ad1ed36bc3513308689e90bd931322c6344d991fa1f0120385abc9dd27a8b370cb3aa262a4033280e2cb4f7991d855de56f3b7672dd03710f2a18d476b344f8a708fedb750936fecb2f6dc53ce4ee52a48bed9211b8af3f8c18a43bd20f98e9c5d90ed5838639820a2658726c971a5c756b33a0aab13fc80d225bef2499e72c975b4d2a9e0d990ec4e46459e7009d9986f58b12e78621fb3ca27e004aa987380bd9e482a793f5829f7598fecf934ebdb65f3e75330c164cb924abf48485ac8a7d3c180153c1bba3aa0fa95633cda067850da17622fcf24de917c9083742a46a73a4f8383a811dfa2bc82be0dff6f31a82fc476f0e68ef0b7bdbe82fc26e5edd80ec6316432b68bad3207b8fd1e7254a409f7967d984b32663a7f618fa12086ce7dfaf4d66df6291352f566eddf700884dc23af0ac86a4684aaacdf1b7b0cedb2d50ca10b9d4cefd9d14b3cc0a631488628120ea6a91a8be072aadf556760b53fcfa78d44e747cc61467a4d5517af0f34206b262934e951829a5b0b1bdddf69a3146eafb3c180f5a58d7878cf6b32a29309cb7836ec9057b490bc3f4d6991cecd50e1e19861085d88673b9593a974808201b10c2c0020804d96ab65681308eb6b20f08c1c02d9b4590894a05e5daf131bf76d42e1711e9e012811d39e603f4dd53e68870d338c94d1024fce6e961c33311d33d8d603d81cbde504361d7d610a264458633b74a7aa5668fe32e75911dc10b78e26935ca8cdd06e25f940b112856ede00fc092c9faecfaa97565e6162fa48e281e98b30069cb0f1de9cc06cd2ea846ca18de7c70900c264a269aa164a98462ebef1047fd9e060d76cee69ceca50fc18fc9a99b848fc5a7a54c39a0a7600aff3142825c8c4e034a40e4142ee705b287388160a1d11c74a452089facb85ffd9cd92ef99b424aed5f47bacce1e6f5cdee5efaca1955a8d0b43831c79daf67eb7c3226453db952fa56a96c06dc73e4265a0fb7d217060151d4b759c9ff1c2e87cc0782659914f74e0451df7bd99f7de866a96bcf716e2e7f6de765c0fe43bf86eb9991dfab6fa6e05692b23534127be84acfef66568f53748a5f14141b957dd0878a1d06dbe365611df8daf91d1707c0378f42d917448660c34113c13acd04456e69076179e4d3928781449ce1a12d4145853076887acbc73263be40d237da0ba039e2568b905be7310c31d982eb4be4af23e9cb0ce4f5356cc4f58cafa122262c398ce122ae93a35ece57ceda275854f20a33c050fba5c71492ec191addb25032a24c8bb661500cc291d1a5f6dd052e1ad85120c3bac08a4e6c3c07369b0203a49f888d1c430413b66e0c4d02f38e1d1a9ccc74a68839b2ade69a01775e8152c0a4bc120cea5e4196a8474c4f6415e00a4f134957c0297344d4f45871c48dd432a721d14ce41b5766f57e16a5d013c5523cf608906a84b8320f636fbb9e2962851f40d97b4aa26e0b6054319097c192111f39879bd03484ff2f5e40c440dd44761763535a313b7235ecc12bfa4e96442e13d0eb8ad2c59ac2a742ee63a8e42b2dadaa87b329ad161ea808ec7097070b7c2cc0b4f038acea0fa1237cb8bebb6bd95110ad7763bbe8effd8503b3f9c21bd66f8a2e57dd4868a42d2fe757ec38a419acf2029f44f532523e599e83eda7af8f82f8fbba37cb62ef37544ca75ba0e9dad4b3a5c574bb4fe96de50cc43e5df7301e9bd9580bfdfbf771f864c6a2321f1747e4a878a49351baa5aa3e55f9a63cb1ada1835a08ae7966f9a74e47ca2885d43b277b2db17a251ad2298dc35dbd93c5f2b138d360175b56da7c6d7014135d91bf134b12b1faa43706ffc9de908cbe542d9212cebf4853865ef24b9bfe35d6f8c8f92afcbb18dfdd19456484152626e702a3c310ad28863c4ec11cd92941578b341e2c607737514f74e4e6c66712f2a64c28816e6e16837c5b43f2254b5cfe4733ae6e9bcad6f067d9a913e55a4e7afaa707d40fb8c14d3145395f798bdb7b47cdaab46f0831994b90475c91b752a5d1f8aa5a4797e0dc3468db71ea662453ac53ccf807c02939c1498bf0115226335e2eaa8b4bb6c662d6e418400c6a7335a0cbc3168706a9ada18b6c71c876852a153c0b7da9e5abf4989228d29034044f5de52bc5203a319268204275b3d2d3507048a263b6e049e8ced3e7ad6513185a42aadea126f688ae622168c7db569bb73500dc96f6cad2a4f46d0b923d147591f12a4777c34395f735ba08edcd90d4d2fdaa8276f9555648df3b506b94f4218e43e7caf517abab90587b4eda314cdf818aec16020e86395db33c00bc57f29cf04b966f341014a279d8e01241a5d11318b66e4eaafb6de1586466debf128e4a0fa79279d3bed9b0695d1314394731de971e860e43042754fd72dc2396cdb23a32d20820f84a46c20b7c946dbff26f349f8e983f7bbf168e3ff35a240361f55a13caa8122f32888adc840826f1fcc4ff323508b5e85f4e2caf2d0944932154ab050db2a71352144c1011032430a5034ba0a56f00a74a41d72309e14604803e24a6ea2e8e2bd7f846110943c6a1b5f81965c4b7d259870724b1b650f6ff0bd727ebda376a7eea855515d0ded7b2743e8e744588e1e15e80900522a152323a5226094c42948eb5a68783b15c69f42b7e83124edea0300d55972242da45196e864294ee2f2b70ee4fb4991f7682f9d83325a9084f5a6c3a13a20235a246d75ffcd6736a58685a3fafb2e3413d3d9d71be6cc2cd15203073c81a464ee9401d97f40523a57ac271f900c95463649d29539ab7b27275746f5a320f5a63c05319df02c638501a108f7aca01390a44b24219f1682a537cca57bc0d7d58ca63fc25341c3d586a0d3267df9cf8dd050030cd3d49c22866fd7cccf256481dfd71a5a339d8e37af56130e8a22c560be74d12ef1e4127db6861a3ef4c6073348248c060f93bd9313e00419c4b7354d4a3a619b24dfca2a467b49c9984e50f369f5870de13d60b8770e9031aed45dfe8a34691feea58a32e37d8449b5bf5eed961140680ad1530e8c4a152c0ffd31a85dee812ecbbb04a2c0a3d58e525d6731dd1228bfe175debfcef03c436d1858759cafe90c238354dd8d722299bd352b61468f4877aae6819d06573054a26a3904e6680ee88c11d11fb1640a19d1704448c33460a08a199ba57342938425764e3c4d01921d0033f381cbbdd7012652b6d75837524d63f0aee756415895a4f72ceeaf501961aa17bf0a4a01da0ebdafbe8d58695701b3031a7bc71b5378897a63d3bd60500025e30597f69ad99226c810730f1404dbf154cf466a6fc1160ca7b448081d2a2103650efb06e77101d3464b5dce057e2d3444b4efbd5eba30859ab1b14786e4df7d3e58339d4681f85d41c9b6c53145ad75242344352f9e911296b5fe48a3b01f3326c48ac05800a81528bd3cad5fab699f962a57319ff8b8d3767f2740105d3d861bfe0002c57349a4ad51483884145a07d0f635b8ed400bbc329ea2eb8621750b69784db7654a1e0c6331c50e8f5749256fec86aaab53fa62d71154fb61cc69e14c046bc824885031fa0c6da2448554b479e5319b91c07f9fb87ba8ff701204ba0b4a9adeeec54848ed3934270f82d956ce93397e46a1103b1ae1342a030e3f380344ff39d69f575060a755b3a8b885d26eb0ddaa274bb64fb3f802963a9c416564fedfd5f1573582a522df6a2d789d2ecdf48953dab86ac688e05bb2e1f8449dc6b1e63444861a7e79e2396455dfa64b0688d50a25034f5f1e2c9d92ca234ffc351ccdfaaadfed38a39610fe38a3159acef7508fd87d8808adcecdd02c7c992ada1a219daeceb26ebcd1efde7bbfd6f66b41880a91f739105dab1bd61aa6f2e39cd1d9b441f6c78d018834f3c1ec9d9c78c2a7b31bf8eb8416744c7eeee579ca68f6217c2d3c18a085b5d6ebc71e0c7d6502faa5abaef0c9bc83baf99ffb799a17dba460c907b2fe2d395f731f3c68e76b9d60483adfd0c587eafb69dd2228791b9740499ec20e6962836a9a7ba7bbbda28eedc4d38ba299572b3498883e75569971a9c2b2a750aba078ce53a9e4fba9049a37b7f986d5cd03af7993a96ceb27da7c862f31a80de80bd1a4e81844eede25fdd6952142606c173e3c9787d01940cf7ea45fcf24cd44a0660383f0aac7a705a3d7f8520346d4055317719acdb1435fd4b2fe92c1387cbbce8d726796727b6fd8bebf740558e87426caf044e7d2ddefac8e713dbf3c5a374caf2c48397f6cd2e8a8abb0f76149f74965ed3a9e559a1e444c0ed2d56d4f15d2528781d1ef350e014b9ea8cfd7dc0bb2f5b9a83e529b119934925a677ebef686f5aeb93c5fb3cfcee76bb2a09918e4c5587df5dc35bc92a3820f79b6acfc1fcb2afcb352a147fbd703da673f72c17b3ce5725ea93261859828d1e1862d2a5b3644409d6503fcdf4a05ab85ab2f79c6525a1db62b8638710b213ce769fa324faac37340741ee9fa1a68f3cbf36c2f9f66b2be1e860da82b7d95d2f989a4724195533ee6d9f0b93e4ed57a9309a305cdfa551053c10a7cffac140df24cfe0d237e54f788bd93fbe3c9880a2e5ee58247bbf52b2d2cacc103afc69e627d554ccddf3d63fd1cd718c86ba54a3fe59357548e2a05632aae0fc67458ed579544775e151cb309a3d5b55245b5eba00af7523e8916d49c115574c2ff151f04c42a103c8211aa34faf12938099f8093e7820ab5f3d6ed53beb0f91b9ed42c35961f4da560f1d5c30a0b96172b448b4ee79338fa38eca84731afce75648fc22a2f78b60c4a1c55515e889eb1e78cca69c14e300178f5a480ffc6ee20d61c8a9eb2415e544705650799e0911dede7e9745c4395b04c91bf9aa2ef697595b0e4781a596357145f19571edf23571ec72e2caf2e1b7e3f99d0eae1c2a238b841cade453f3e8d92315552cf4d54e9f7453e8b163c4f6b0a4e4605cfaac75815bd29228b4f533eccf415375e7820d9b83a76283a61e9a052f2762a241fcceb60c64f22f0ed1a4e608be28cd92baf63aaae8a11c0165459c20f95849314f9e479fc508a7e91a7e949462751c2e28a5fe53c93a22a62956b54652c57e319bc5dc5e7ec6aede57991a86a91e18ce88401273b1d154c8cf2345950e7252d62ecc65550243a463246f3c988458ed920cd670799cca305cf8bbc2ac1166ca8e4ab820ec731e452d45471bedd4461a1293eb70601e76b2ff37f05c2f2c78937bdfcdd09ff579d70b3abcec60b2ae2e3fbfdf015497b5131a176bbbe309cdf07c3f1111a69f3cfabb3203fc0f26d7850b5dd0a4ca8da68252e14360bd950a4ccf0a1b0a8ca88c272cb89c2cfbfe5f57901c9991574125d7055703a2af2e9b08a6eaaac8e6aff47312a994ffba3dd3892fe72dc6529855a40d86a88d71286352c7872cac693944a4571a2b4c1af739ccf1657d82d185d5c235ab83b95f9a2fe55796ddfaa308a9aaa30faf1389f9d485ac4d703c7515f7e9ccff6b35ab80b402e28aa03b857cb44747775456a1fa205b1060bc49625fe31e76b263acddac5675440824d394b27185caa4f275c42326263b2ea2b4d9d8ad2d310cb227cc712b2e8f447b4d895cd8d5647e6af271356ec51c19a2d721f4ac117bbb9e9de7b565e83eebd3baa2717b3b8d96f61dce2ff61097943a5d07e7a4f8d895c3f4fb405201761ace307ebaa619b3ca77dd6cbf36b0c72ac1ac7e31ce3eb45f79eceb3a3b3f1c3a34635a35dc59d496bde69f65ab067472fc90eb973c7d884cc7896e4330c3de6221492bb777549c71a8d543f8536f52ef6d63ea49ce379b69fddf022cfd0e6c40813761cdbee67db2f7a9317d7ac10db26e93efe5d1e62d064ff8665f205179265d0d2cdf5ee5d35593d709a24414df2febd99139592f64750da0a40ffc8d94c214405a86e28fa0563b0c81fbcd760637183fb047105cd3ec1e206e51d3a4eb00ebe7e410d5764df21f0533c85a13e00b1a52f79cc57ecb075f49e080a8467a31c16cb1d99da5e43ab6abd6235e8510f44d18a66eb633cf53eee19c444d50de3ab80931b623c3cce2c8cfe120c88336163da41fc6017652e12730d6ad4445c831c7b0c3d67200b2554c60c7b58c39576981f3235fe1d820da55e5a71af1a66899e1a00d237aa52d873be060b79be4678e6b56bf930660597b1f6f16d336be40100d3210f78c463a61257652fcf3010495ec07acb5c070c4633c357c10ee80876ba4eabba711e341770d6876b8d9fc073c7eb6111a87030a10dab57cd86240e02a5403071dfd5123e34ca351679794285cfe9a6aa8f52d549d575070fa47b344df746ac7fdd345162dafe02f8066eb6860d28930f82ba0b63f55aeb29b45fd5361410e46b609572ad208ca51baac98aecf58651b720a33ae64ff587aabe4646736c42c499218121fb8882db0118fd9aa4ce4a82582710d5bcd90a6a6068e19291977972a6180edd5076f83b74b18160e895526f05c87758b00d4966abbbc6b3112bb8144d31ed011d6ce330e1b7b706ba1357a61d105c576aa4a5e2c00f31be8b2710fc5da70e50231a4f85f49ca84cb865b7ad6db03b3d5f23f7496550c12a9a19b9735e8934e68d3718bd4f1a8c9ce37065dba7e0c07cece299ef7e2c445f714088a1a181700fe02d797682bd218dda1a4291246f73f45c04532c0e877b3470a158c3ef351becc6deb9bc84595f5e62ae6b5de5890e4ba71d92352110ce4fafc4656b982fac98f59a15dbe467544da149ca3686bfb3144fb53acd87c3348cd17919a6e242a00e855dab36b98c64edf218baab5aca0c5080458df741b2f1a44d2e310bc165a10d43557199e2611507391259b63612052d861f197d8240db85312722c1ccd062b309b3c31f8a74ed2c228d383d887785f9adf5343dbc79ffde0b45ede39eb7282d0828ab733b60f0ac3305fa4249287d0ac17945abd5d26b6efedbc941194653ebaa2b4cae82a0f8040df54c111b4f1484fa59791b1b100f5f340c10eb4caffb359b6f93860d39f38c272ff36926cd454613061797a45cb1590e2fa606b2a5f3529482895d4e4c628858ce0aff5cc11682c4e9be055585591f5d0dff0eaa60c95728beb99a5a9cf36b96aad826a5c85af682d9cb9339d90e6b0742e81d1df759e3a92d8379db19fd8dcdbd1c0568e56a67db0a1bc1fc220d70dea8b3c0df9efb814d676d1aeb735af2ab086a445cae4a319271874b987a760d96ab306d84a6cf0ec8d03f2a2c6a9612b7079585abdcbcd6868c0a68904ab8e4c0e1162b70ba30b30ed6b976e661ad5bcfde1de3600586be2ffe35e47a6934a2b30f2ab6bd392d98bccf522d632f1de4373c4d5f67e395ceb257377a9c1f2c3ace1affb78263bdfa29dbbadd31db5a78ce7ec553b0087b71d1aa27e47787cc103c341c6c80d095c4e43558bb104680f66587f6006cc1c6f90df30f4ed8f6d6a701a3b0d4e13f9646d455daabc681b5d1f57505c748e1128cf7d65882554fbc280992fe9f519357af8fcfaf62d2a1d14ef3697ff432bf61a0c3093f79b5c142dcaf1b7ea8c23dc85821393d81c72f073bf8ecb5e202603d63371c5daefcbf9f042e1faf6892a0738dfbc3abd1a763969ee67f633dda233bc4ff3384f30694803f3050850330ff4b58f79926507eedf09bbf02b410b09ceabfa166a3bcc24de31fc2ccba19654735f94eb8e25e4b21f38942073aa41886aed234b6f8be6791cc278696e36be5693ef1d25b489ada7df42ad9896bb53e7a45ba9af9445d7441c41d0c04730b656fe6aadbc05e3f1c820b90ef54c5a55e7676fcf1d5c3515dadbb70fb407faff20c9e5dc1c9ec8af4d55508e21609a26ef3b990a457e43301897d54fd317d07eb8fefc157aeeec1fee646777313fc654ea6058402c9821d08f0d9f7b7d3dafb563587890919e28fb2010914f1a5e4fd7b92d11b3ea4322f3ae1d02a08e04e4ad0b77d5279ff9e9407b251de5877ee00b10f32d90cf8766782158ed52eb7c9e606c8401e989483e091c8911f0e09587e4904e8f875b73d18141e1059e2c6a255f910b200ebaf073ddd2f0fdf8ec944b10e415696ce2720f177be82814f74b3db3ca3ebffba6835cf76d7fff7a2d51db649e3abcdf5afb61aad8ecc5fe433f30218db1e9ff6f847538745e3e08158090ffc2dd92077ef86d181ef9484aba0701bce8041008d49ee410d96110751763aa9d620f7bcd1c5f5951532e9a39fffa0176c7fc5df25821b1ef1a9f40af8e94520d160b838a487f8f93b084402019dc97dd298bc531cf6c3e763ba5a1bae534dba0b9dce39f4fe7d25e950391228c77c413c9a2fc87f9b01c75f30650f742af03253d2e9e86c4141762312668caa4b8987b975b0652c8510ccc178a163b5ba4442950c3ae672ed946a701f389d4fe0fa6f1f1bd4c7753536e1bf38d8aa8b5e1d6ca5cff698814914723f4caa8b8469c27e74b37cdd3a2bfa3dc9111b87912e3b5df856a9b4683850c16b90303679c930c5a70f792a792abab6b4116bb2a81f5bc96b78d0cfb33008a7fad228d558045595ffc60f43f856f106034b78ef6779ef2d20bdf0652873d7b5c998bcb3cb614cc15b9f6adee159c2de1d0d9abc45be0539c804c8f49ef2eeac74146148bc5581a04f2257e730efbd352fb475472e98ff6e51e433ade984a0fffe743586c2f70efce5997824c6e252d7e8d80f563fc0fbae54fdb60579b697f2feb529d37fda62c1ff65faeda8dfb6c0681a6b774dab6c1b762c8d3669a8aed57f7537eaa782dab0f7bf3003ad7fa43b550f5f8866e1ce8cb9dbb59afa07ea05dab87aadd21553d317d3a81c28b2379512c66a33161b61773e61dbc496e3472f152d0cca1f775f885653cfa9430b48afa7ff3c6bc0df979776912e210a95fdf3a28d3b70f76ea589fa8eb5d5af0b63bda257769b843b996720b0ee67892dd1f779b44c682f590fa41fa6d06a01063c4db7c99d3bb0c238393073717f7620f7d6fbf786805af8aeb4ed2facc2101859cb0a6e70303a3e5382deed226dfb6cc8c2cf337634689e355236900acfc0baaaa1d749f5126f86266850c92e65ac9e3ab61d2e346d4cf08d8aff8b2d1ecc98257c3a06b41fd3346d5cb43c18c88371b6b15731046f60f8b521cdc13b192c0f2c77cd6890c4957bf61ee9dceb8802055b6529798ff6af87453e55a8d4c8f28c9943d00313e8e8c7639af0a9d8260fcd79991622575527393019533b9fca9467ac04435f75b6c9e686fe02f11315860a46461c2278525d57bb3e6e9306ed893c9d4a0b06220542684207c5243e9e0a56e8c83b58869ed07068f6689ae653591a9433ae3605e77ea448b559c22e9e39aeb87776294720566fd79c0d2cd5dd8dc1eefa544d61516dd225eb5bbac94c5dc9b6c943b3688dbfaaee29698e79b6ae0bfffcf8ebc9bb56c37ba936051b81daaf3213c0dfa51391a3e9b897519efacc63c154c2fa91c93c583499471b1bf1c93cac4e06f6de382ab8c97984b8c02999cb517c823ac4272b3ac3a994ace88cf282ff4b7d4c2b0be7c1c648961a34fe715bc87866ab6a4da0089f51a3f9e572f587bc5c010ebf600359bacd284e2abab6b4116bb230ef80a9546e78ac75bf359d4171a537f8bab43ba8e535eda7b928dfd2b02b286994ab2eea002a7cb948fd06172918721f83e438b1e5051257878b5686b5558e3569f73028a8045bba6df6be6313f8ba43adafdf7607d4df7e6a388cd39a9a746ebed48b72af29004bb25b5fb114382553aad6e1554a5ffb6059ce54f1c593d5af4062426317a084664356e45391ce4f983c000de5e9cb171ed7bdbcc4d45caadb2664560ed8afbe72385f0cb55c55f91eef164b6474bc34d48bdcbe2907ac42ab85bd429f31291bbb6dcc465cb2461d9355ad17a4ec8d1f788fc29caffdb5477b2ced16d34cf231eba23b8ce8461ba2d5a71b87471cac8175758c34498c619e1ed5880a63c25e4392dcf83a5d53fb7cad55a26706729321aab44939009b2200bab003652fb8902d52f9d4a149e2456f7b621f9eeec035da0cc1ddec233db67cbbd3a0078cafb4b3431a88318d56ac3cf2ed3e6990206a140ecc540c5ee71b50a9d12e4d18e0dcbd5b05dee951c17ea4299aacb4aa7dd97befca2e4a1549cf7b8187c71217ce2c2ff8505b774287a7f931d804941891a9655f5bd08c79b8ff6ed26c34ffeffdf9f9f9b968d9611b286a32cdefb6a1f4fd572d4593868d163ccc345aeee5e6fc5cdc87f71ae27ffdbff37371efbdfabfafa0b051bf10defc54b7bf143222b4283e7e027a55f6a052c91ff22a98b61ce20a98171c2193433942cf6e4774cc97fd7f1c9c1e1c7eef7f393cdd3fde7f56fe52aaf48f83d3a0ceebc39747af0ff1db4dce13784df46c7f35c32891b3373c4dfab4483c7ae6246c4bcf0251792941848a91b6cff2f1cacdd7937c1c01f1820f587fde4f99d8cbc7131a320a6c98da2aeb7da8637802407915b95328128e4f0db6d4b4f9cd04d39a5d72fda9a316edacfc4899f7de463ccd20ac3f9b1df5defa02ad037ba792f2a87c81f4c5dd5bdd1f8d6cdd2a997419d72d77510eefdf6aaace16da03fbccf97b7db7ac86eb5d6dc787201fb77efd65a20f39dadfbf87e128ca52313e8b2b087041dbc4fa64ad6270868dccad39d73f6badcdaa5769fc81603cfa62f6dd9992418d1aff9d1ac1f9459e0b666ffcec5d3f9d262cf1738069a58341179379f6c393f8b5c95755c46c88512b612bc24a72ffbae5f9013a28519d08dafabb4ace0910d89c9e8bbda1014e44ef688bf51a2bbd58598f0abda0f59e41b772b1719570c9aa8d3b9e930d38a1f48ca44b5671533174d3672e8d29dae7b2a4e13136bf86fdad55e5965735d83b5e6a67cbf08769e1185e832952a88406bf952b373ffd96ba33d5b0d49b2dd5bfbc119aeede71a97b33118b4f478c9cda3855ce5899a44c0ac8898b0e9890a1ca05b4c288b679c65c0b00272495906990663938655de637ac804c8c9736152e1f4f20ee6f3fa50595fc8691dd57071df2321752811be719e4c8ba47b86c08cc100810f918808f18814d82cc1c5942f49ee9ec8ad48d08b337f66906b90c01a2c9388819eb715e3c5bc7040bdef4601ee021386369ea022d3f9d1b0e8799fedcd25d796b97e44ce87c07921598f9838de80dcf0b1db91880b906dca44c166df55b2d801a4dff5a90f335d8ebf33598ebf99adac3f335334048723cf276019349930358b9899aa7da439993a15ae731a39959364cc606794346b9601a62873ccf0bc2de51d823cc5c8481a8139be003f256bac143f6642e098c531068cea5d8b68b767575f556bcc31d8507511fe300915035b9ee36607d58e4d349d7d503b3fe7b7ad9322149a203b3911df26063a352eabd60e93bfd3d45ee2cbc6d72954f689fcb39f9ea6703ebc3581046055be7d97a3e95576ddd4cd7d4a9aeee0183f27b73608327b37be0da87277c9bfcec81c127015bce926de2976f9af20fe5793da7899a4ff367c2b36dc2410a201f5a64e75bd2d410bff11697673b3f63a50f7006f3a9dc71b3fdd646d6fe199c97590047fdfb26e137b8eb3b3fffec7d27a4d3e9f86bdc2e179697e40c3ab8f0aa7df0fa57ff0e1a63c8aa9df804e98e3f986ec26f5c9bd60733610f4db0183806e09d5dbe5d38902c59766cb3862497497ee952ccf6e6844bc1d20164f69382f4473c4d5c333c706f20d2873efa490e097fd4018e10154b1189c0d3a928d4749268e256220d364f620fd2ecb8343eeaa0697380963d83fd11cd864c98c36ca77f6a427c9387644cb9237001f1a7196657dcc6955d27578e435d95beb124f8a4394be993a9846328ad04ac1198de27e48653dc199e5d8166b043dea829e9444c0189233d36e499b06b75beb6af29a49074c83ae4d9b4c024b25ce0a7760900c4c117233e90487e6057758299f27e2166cb3c580b4b772d15d201e9bdd63601af4eadefad1b8e8ae4599f393ea7869732c93ae405537f4b7a8dcc6e90a7693e5333d264394a597149770852063069f6c9072e342cd489aed984e36e4923986f3309a59abea8c5d74e203ed10b3c3aee3929dc518e6f82935aa549da0f884ad6e199479a1e6d6c7c20dda0259ad818330cddb43c9b0fdfa2fd92cc097cfca68bcd1ca48078f8330aa804e01c26ea825eb9207d0558d38d280685db8be8819b81691e616be63ac8bec29b471b1b63419ad24f0e7aa597e0aa457a102b0cd234f30c922d891997fd91ce4ce6b0a8130e1b8e0e17e40af61ecf8cc0248698186f32619950171d3641e9054739ce6f4c8602ef1cebbef419765dfde94f048399ba630d7faa9ef381d4cb270bdebfe64c4832a105a44cb3a1c1db64cc8584ac7d8ade144c28614a51a414defa1296d239e67cb0695947b400916dc23392e4b3ac4376b5a06825152e90062a7a3a3359f09384d00ca411ef60e28156f5747a2ec17039122678c1125c7697a04d4fc9922c6f913ae47444d55935b570d80ed73de1caa646d3a90e6996b4d56d4d0d644cd5fe6ade643001c8a04d1c0290f74e4e7c2a6a880fc88c009a29b9ee1dedcb745e1eb9e10c35fbfa2db977ef3097ecdebd6d900051482fbcc98845ac730c7bd7638465f9743802c95bc3053a86c9cefb7d25a8eba8586add26299583bc18afd361960bc9fb6d9dd808bada3b3989f6a6019f0df2a2cf0429d820cd67e2a239927222b6bbdd2197a3690f7253835cf956746be4cb5e9af7ba8f3636fefc60e301fbf3d65fe89f1ff6d8e3c7746bb3ff806d6d6d3c620fffb2f9f8ebadcd475b0f7b5d51f4bbc1983a6fc59f5e6c6d7cbdfe626bf3514b0f8b6704ac9dd44a8fd5dcc7ea3823757f17ac27144c0a96f03e04790864ef366137b081108411411b9bc82b5d671d68c115b09af0db3a858407579808703249394b081f83b58c64e91cae6e14220f22687d5f6b5b8144488550b11b9f2678b90eba81c9fc34ff832d49f49668d0cd82d104ddf6091762ca3e66a7a0a1e86e3efacb9fe0a73afe2c93eb0fb6b6fefc7873f3cf9b66f915858585e5d9206f752097398a02010ec2e9e88ff21cf2cdf7d8ff67ef6db8dbb88dfde1af02abfd9ba44393b29cb4f7d2555cc5561a3f752c1f4b69ee3d928fb4e282e446cb05ef622959b5f5dd9f83990130c062292976dade7bdad3138b8b776030180c667ed35c49c34339bd59f6fd6d4c893ea44c5bd14d7f39ad2cdbaebbe6d6fdbbd3d3b73fbddb3f3d351530ac8a7766d8bfef44ab40dd8aaf6c285a2562d00a9fb98f1800820c0443088bc0e3d8013b4495a37613c10fe2ca3e7db25ecbb6ce556624a9bf987513bb3623bb11400a46b0afe85c852c787d3f0af3890cf81a5c2d0d31d712ce44c458d61c7c033fa1af946bffe143f180fd1e15fa47ab2c784e685b50b998d02fac858d8650798c9cb1b6a3441409cc8a093e4a9cd7c361854515592261b150c1ccdbe00a239b21d920530f7569615b153bd550a86a8d0afade9372e5a0da37a7e8a74f344bf6a399ba8d23e1fab23b77321c7dac0e3ef5d2a307161470ccadf524ac8d8a06cb56c90fcd8bac2ccf33b078676ec8d622c2d1338b5d847a44b1cbe8d3ab2269d931cf682e1b88aeff82c83a8cc7c693faf18b861b4db45b26086d044155cd61076cae92dadc687d87dc76b871d861e65fd6e3b96c5ecabab89439c8cddfd76a69ed1e0207b2541eb23459d5f2f210b505c183cb87e695772ea8828d40890f1ffac2234dabbdcb68a4ed23cea8c4ae2f5287238e0ecc1ab7aa1884772e9bc32a5be9856a108bf727b86ff74d7f38261cc40e2f6503e30976b64bc5bd41c5c0f3cf0332f05a08044a7ca49e8b1be7ca0bc1737c3e073f10310c1bdcdca1cbadb13da7217ef850c49fdd24bac2221c8b2d1ce4b961bff8fe4cf56097f7e0d327117fbebd0778447677c0fdedffb2e4c06bb2a93716ca81b65f0b3c8713f706641d5802d4c3600b7dc0dc122dd63b087657a25524aeae663b48cfefa34d27ca46bab395d82561e446fbed5902f422714cfd3a92db486fcf520f7deda3e057d0d926224bb61a718cf6ba23061bab70f38a336097e49a27815fa0d569564d65f9861d48fd645373d91ce1b530e6d4f673084c4677c8082c063f32d1c65c0387285c0d4520f8c09d791793c4ae17ad7c1d9e286d63f4aece106e7dcaaee86150ff1e5b346a84728dcc4fb75eb66597687e633cf583970713b2f911337b8ee379f8a111cbec17557b2a8f7b4e1bb9e5b11d254fb0031d874b3082094e63d0712a3e0c7b31a17f5367342d342743bed20179dae7ae8042b979ae7b0f339b050d66d8b4fbd400fff5263eb10ffd3e8fec25c663bed930aa6879955d6b712efd9e55eeedd1c523df44f49c81552a276b58b4adf10e574595bf3cf8f18dca2530af41c4d0380f60fca38de1b392f54cd54b1060fba6b9a19b97c106513528fba168a0681b2587c12cfbfd178ad2e020177167ec33c837acc79166b62d1139f9c9752384ca0d498c8f9c93d8a61969dd185bd073c04eec9ef563e6bbc8dfd1281c351043fa766876e486647e8d9bb86e3e6b31407706069cf259d4e523c72d7df71c47d09e25b82f9e19558a46edf49b425f142b74140275341e55d8e2786c68e20a1f628237ec7a5d55eecda268e0a1565be675ba5cebe6d4ec2d2d1bbe4b1fb83acc3557469731a49b6c260f37d04ed03fb0cb4e228c3b44365c5685373f99c7f4efff0c30f9c2b336a88348cdcdbcad6143ef83be9324d9ddf554c78b6a9e6a372aa22a7f73daaf722ac149e6b6d9ea9afdcef9dfb4021bd7203183d18278a690143118534b7105c7eb5aaca0055b67258b8813f8d3fdf60d6ab796a9a57367d13d906d0793ffde1b20bc4e6e5ed1a77eee4183fe79e41f9f1f7721797f77ba85e2c3ae5a826f51f9d30e2af7bc0e64c4cd937207320f66f90e547ecb4cdf87b2dbf24620a527a4112e4bb555460981a895891aed47f8a2ddaaa7d449cda7957739986e2bf14804223735bb8e1969191ec1e1a10b51c44525a752ebacbe46f32817fc5b5cc9a2ce459d4d41219bd323c555d12c5c6d560a714de9d802aba820823948a75a59b110de41f4bac68828ae3a342fa22580c8e32b59a18943a2a1993967afa46d8d84caa99f4e2b28058be92625d8649b662f454351adc16a7435d8e2945fa738253ed4786b7ad6cbaaa3c53e20cbc55a65a827d84aaeea30cc03edb0af3750239f586aad25e376f795883f1523a3b35bbe3a6b6d1ad79a5a968877f11637b2b5a15864555e327129493b36133bb77225f51bd5fc905d4a3aaf0e6a175166d75fbcfd5df80163fa599eef57b9cd1fdca21fc09de7d3a78d2db059d4eec06cb3a8a1d8beed248aee2661c762ce96ca6327346e7b906c295411dc7918546ed375068d514277a01070f48e1ab148f5b441291db2ed6893ff7e23fa36d88ed500ebce728fece738e7db5b9c3ff15990d53414c7275bb6b693adf7284a61b06772259d297a956c3036aec3c1cd6529c150c0368c6afc74127f00eacc14dc783b73058aa776b2dcd884dc5473a8f14ab41c6fc7743675cb30fda5e2b62c104da833c7a6a13831ee961c14afc86d3c8af6e1c82e0846d5266d9b9176c29035d0dad880d204b6905653e3d4342fa89a91aacaebbead7410f3f8a8d4b45495733c8642edf66f42fc26cfe33944b0eb46f838cedec1925839f1939b739922ac1cf403e6b5b0a7bccd5539e614a5182e75d3aa977b41af6a65e4b591ac2e476f0e5eee9feebff91b455359d52a5fdb782acfe9d105ecfa857824f6c4996df5ccdaaca2812758c017956e6496e39b3b3cf73b5f41aa00444786a64ad1679c495297c924bdba3e127d6f1237f42e0b43ef8730745e1343ee7a31002ba0e982f797aa6c1458b35c3b9301bd92d362564c89b985a6e934122aeb8c25cd0f6e91e8cc0f9f7cb30d46c902ac043fd2267056d1c2da12fe78ed28cbfb4fee7e3c03e365f39fc7bfff88656fcec89e11cb0e6e6cf391cdb2708688024c4bfc49119061250f66e6cffeb1ff186350b1fc76417d6a003535c4ade449e670a1ae4243c767a2a98bf95cd668fd85ba2eb2f0271b62d6e722e8edb95265ab89c88122b2a53654465410582b65a5aae6fe2af208caa259478745da48bc9a05c680275b65f6f76bacfd642b32e754d67acfd43d2b6add8833b053add7f2e6ccdb44c9469cf193ef6c24207c2bda3e41399c226e0398301c6db26b6a8c464bd65eaa220f0f999f6c0dc5ba2aa5462f9cacd48a88fd5a9c0507ebd9882d01efdde72e86e9a65f0fbc7f81a74a86d6a868f54aa684480d96771c9a990a7b49c68ebd5cac6a3943fb38ca11cd916b69565485364d11c3e0030d2abf75a46f54bd44bba190d82ac5d997a1ba996918efcc579537a23c630ce3dbc0f2d1f442db714744c7c88028018904470de484d20fdadb82b1fbd05a8e539511ed34dc925a645a68a5e0df442f83be5175df8a37aa911376efaf94e7a23678bdf3301af91e82575296e7e6ce0fae08a695ac14676485e87bc6d7c93e7dddb240fb1520b0a9da81b1c51b49f35ae59de83b5169680b1cd67917423ada68f43f346bb22ccab2d072aaaadcd18565b9764b9f85a227186eaf6a7559e4f6a8a382ff0de6c1d76eeb674217d5bc94eea669c4f92ca00b2dcae2424e9c25319ad59f0da946558ba2ca8bcb225fc38e80ccdd07a5abe4a33dc568ee9f6e6f0fdd2798ba6fd817bbececdbcd4d7cd0f94d131ac35b8aa30daa653324570a970dac5191440af495a846a94a2d71aa5a9c49604358bed0e2ccdce330c5bd049fb186ccc8a176301057e26c3becf69fc183f523be6b8b4fe223f6e7f944e0a7214c0bfb89c3721fdc8400f5d13c735191eec5ab9691c8aab99760e89101ec8d481f2eb295b46ee2a65a8ed994560960a35c98b87fc4b24a5eb1a865e25bf1c474cffcf9583c1113b1ed03993db973203353f6eec1cc560d4513c377f1a13886e14601c5f0aed1dafd7b796e4e90b56ed49273626938360a4a23f12212937d3e749b3015bd3cf8111fb90dafcfc459ae2a79e6546e23b1e7adfcc098192209cfeb0cac15c286a9c652cd8be988acf8278fc02f035f580c8f476b6e10fc31eaa555fb1533c7773648cb212dec7e24e58fe9b573224209773c36ade081ae353f5bab1c649c06ede2eb0b3a0ecd098f97109fd7d5669a69056eeef7825a7bd88f21aa13e9969ae236781c0523e1ecdeecbbd6823bf5e80cb837f9e6989e935fae59d22dab5e2ab4b5b51f89bd4ac80f4d9d1931355b4ab4b487fe147acf3ed5018bd36bb2cf6f1470e629389acc98c08dee6285166a6aee5ce0e98c3c8a8c5d49ac6d73a7ef8999c0824dc40fcdb2dcb70839ac1f13610ebb8178fc2d988bb0f9526d51f22e139539a9f8ffe23cb5e707d23e738a8cccff7f6586ba2949e69fb7e9f026909ca97bf5baa38b910c78ef85fcedbbf7b9a446b7cbdfae83ed1536a7c21b744594ece14cd1556b5acaac36a21652a20d3d9259f5f48dc7b371852ba5acf22c509da5c0fc9c43ecb07d43f6dfa30ba54fb0a2acff4212b00bc98be2affbe978a6e9e430e612f147335dfc1bd4157d6815a469369f5ada430e57b21d2639449227d1778f39b2934881224fdb556189af79e80a0bd103c87d495cabd14a95d78007c9fc994268435f8dadf13360c99c828e845e0f2b160ac32d68b100a4f75668af04b4d83f18618b9bd5d821755e127afe8ed03332b81b6b089d89cac644aabdd32492b4691bcd4068a37497f7bb67731ebb073b739d54378340cf2926f69dae6bb983df0496d32696df6c0609bff457cf20c33fed9c4196075fdd37e43233f8657a6332bd54d5a6c67cc6bddbfa75e7119a3c776af643d1dcdaaa998d1411b50924faf2450014bf3427fa3220879f8d5008cf823f66ab151a00b7410a79867f3a4ee1bf71e37e5bdc388b286d7d9def1f4ce0d78413b84b40813b8414f8124105ee12566083df523cbdadc7713ba3a4f042f76d37e07648c4ffcd487e7e1099d6b26e8e16857e8557dae2ef32ef6b59cef81e95e52ce51dd32c6a752510e778266b594de57e5dabba7fb205a6f98b4ca319a5acec8db9d032178fb14bfd4190031fcc9191c5bbc2f4804b6ea09666c44fbf03e26fb13ace274ce26899ad9281a83d6b3cbea03d3a082252a4ee4deee569227a797189316fe091f0fbcc2cd5358f72ce3ea3ed46dc367cb413113fa9f0872b308c08dfd8b22a9b035a95968012d024100b9dd541f40806e0187f0a101cbe3d1bc0e399280bdd8cc4ebe242a6d4b527d1039c1e26fb5940c7104b279b2e8a0a617ea0d3e8d3e19d3dac3eb5055be81bf1f860e185fc85aa7491d33ddec2de9ccb525d8dc49e16452397162161a92e652e542db23c476d902973a472f5bad00d7b5b74705b1c8b2b5b376a9935c5149e87ceaf5b2f8b34f0b07b6f5483d6bdc939f29088f8d002c6bedeb2dfa2233ea0caf609c3e674a1ae4e699d6084160512f416886f88ca2bfba0b561f94668d182ae35f6497f597c80d500081edf232db269adb4167931033ed0401fa84a986bff74c8f7518c5ef125413fa0c67b217fa08dd13f08fec3d78a76b3a8a4b0968e23fe71745e5479bf8355777d067fbfc1808043505be90cdb08cb292b4b4421426dcb50e47225ab9c6c3cacfbe52d4812bca793e097b3cf8467fc7760686ae322098646704f2009f469fb47a2497039c6b9d24dc85619a7891ea2438bef8d6eeff776b6b70df9ab904bb256272ce5cbbb5ffb46bc297a1b340357e7b390332af9018f560cea193ee6d6f232ba18018646c22638de57265b923c0302f5f166dca7676932f13667bcf87354e6f13e9ad9a02dc83f0ff84079c7cc453a590998db77d510cf4c54677a33c24a6e20d8680edddaf1efd6f8b4e5f046168fd1722547168e8a99d1736b587b8f806f23ba6b241a19782bfeb850e82635881673931755db1780f643a7efb13fba7400001358039375bb8b17743324d3b0b619706cc85ccbead84d05bf03b5d16038b13a7b777f674af8862568e16ebe037730ebf7e6a0915dbf83a2f679b9a49c7203a02456e2b610501d5e000e2e6f6b28c82980ea06c7809619372e1cde3bfacc4fc2ad1bdc2e783d83d0183d01a015a4242cf903df504f8d6c3edbce7691a97a879d476c5b1e44b57ae121c2ad3c13ecca4e2b73842ebb8fa9399e1e77b7144fe991d3915a13f2c3e75b8da7847782261799380360d7337329b09d030b35f0e2038049d81f5497c33c3fbf262313707717678e3409eb97f293f1e45a4b3248bf7cf287af403abf02e1ae34f7b446890c2eed99b8aa8905db6e91bd33556745fc55a6b5e1abbed9dd8f86a46ecee8465000c8fc6c5ddab77257715e5cdab1a8fa026e0d35d8b5209e27b71e6497e5c41266d575db98c8de66bb6c4b21683541a0dacb19dcd8cc94a87543569fd694b894d9a51c75ddd6d07ab4a80c29797b4f7691a68d0040f902507e9712ccd41a25f40a301c9b855c828a643d5f58ec52f01cb5f395b041cd2c35c005dbccdfd99fbecf7269960b2fb1e13df267c2ff2c7464162e336b3b7401e8b832d305f6ce460658aecba65895ee72cb0dc355ddc613b50296d06a29cd855b7719ef665425d95ea2a1f4f935d23cb8bd361aaf4486a5c8d17c246ab56ea499cfb2c8cdbfc512541885af6c9ad56aad652964331d211462d68869a6a5235db7a7a438bb90d7745727b353e8457cc965a6f261a7a0f2abec9a4f0b900651c64505b6ff99bfe3da3b556ccb0e0734a77c7710a75ee7542e13943f55d5a5ac0a594df10cc0ee49b0d7d5cc60d76160f89b39d561ed5e6deb23a68120635907a801035497b2ae8b1c550fd43d8d881a68175b7135823b118fd2c6c21b1e249376c3f719728428f22f32e2eeb7bfcf1f7080f3f0af32deae27c7e470ad9d7625295a097829818c505c4ac26fb2fe49c03e324de62fa173833b92e6b29235a8e0725549c36dd680557bc6dde4cec4425dc94b6f3c03ec03f0b66dbd964340a3a03bc4a2629169919586b15fa3bada2a0ecdf102d14ba6468628ce4b87f93b55955e2f65dd32b5864031ca8d9ea219844385f3c96bdec8ec14e401265392b1a6a9c51c2bc20cee5ad0858c2091a5501538a0d0e1686af63378923460821a262858701326fe21666a4ecd9da002736560a649b13016e9d3f9cf2f602e036ddc6a33738fe0916344017fa156d708b0b2b3fde48fe26d56665553d4e2484e17952ad5bc3047d9ab6a0a16ca88c5a2452db5ac2fd1800ceb795d4c65a5c1ddc16aacf756d974216dca50fc4dd6da1c293ba36dc4c23fd9a2347a2f7944d0e8d7408b68545c68312bc08d0340ec0bd4f2944566788cd3e0533d1898c36e4c75de64a0f39faad5b53d4229a78053ef910b16b0689ad5643cbebaba1a65d0ed91aae7e31233ebf1eb572ff6df1cee3fde196dbb623fa15f476dfd3cceafd1ac6e0a6e27657605eaf8792dad75a6b8aa0b0b93316baeb21a21def34253a4473e79b69f850e3240940971b2b577285e1d9e6c89eff60e5f1d22befdcfaf8e7e38f8e948fcbcf7eeddde9ba357fb87e2e09d7871f0e6e5aba357076f0ec5c1f762efcd7f8bbfbe7af37228640160def2c3aa36a350b52896ce26f091389432e8868d7ee1c4c832abe6eb6c2ec5dcf06040b25ac97a59688dba7442d22e8b65d1907ebd35388faa6d6353bd83db97c63014249a67759d5de33b87fc9f75568e04ed5d3a03cea5d00bc0c80527d1e52ac3d5c0c9a578ce02fb7fed8ab88cc862d1b9158cfccf28e98c79c2ce0cfbc1c01d3ab09e37ddc71de6736387f74d5ffb595def0dcd97ef86b649f626495f52cf922e29546f66b5ec674371debe1c6750cbf9b3401126c663d1987bb0757d81a731effb62bdc874b69456490ed02275bdc7112dcc00447c2fb7afd14e5beb31f082f29f3e05e5e9f71ebdd5c31dd5a4d3efb87aa6a70db0f9ecb04d4d7062305d55361445427de0e7cfb4775cbc8f5184e071d6d2e2211215152b343c5a21683c5ecf35789c1a295d07de5c43f1cb5a53cc03bd3e4769e4916140266b8b029f21aefe556178a4917e92b962047a66548bfd7c8119ff4a0fc37b43d3cbef82b8eff72206173d33200453e77d082128ffe9d3c6f2ad95361580efd0a8d0e84364aa8307a8d6e7ef0677aa0ee636c624b1faa3bbcc648212c7e33603f20b096e6be7cadc84916abc0ecea4ef45b63f30c267619eefda79be1b3cbb57df3d705005163f136cdc92bf59da5f57c5771b76d04b29575f62fb083583fa7e93ed934bb9bac3de61c40cd148bfbb37f577ed9e7beeca7fd5edc64f3d3e87d1fc0ee2164f0b7d089167ded64656282e25d8cfbaa6bbd3db7d0816e85e5bff562a48cd7460c4f4809ae51fef7a967d0966e055e95493a7022ad6a556ef8404868aec316da675db1031d4167c6d57c9de76632d3da713680027f83be441b7adc35e8acf58a931a3089f2bb880239701c95566d305d8f55d41682632b4022f49c7b8d7154897143314195573a51c5bf25ceb27d41c9b8a7379be9e833a103567ee4d0011dfbbb9ce5c36245ffc84edfe555eff0ddf61ba0f6f7be103af303b0a085d60169a7e83ee9b34b600c87725c522bbc40b7d7661a310c0cd6a895e560ad5bbd96a55ab6c0a801b64206638d0016c2a11b096e7e2a3b9079b6fcfdad9bfc3ecdf25b27ff7cc9b45204695ccc902f6147fc3b2b3a687bc629c115e2fd216d9b14ec4f17bdc5d13b76bd9a3cee95c36ade9ee6e8af78f83571af99ba26e87db3b718062def6d109269fe1d149d6995f80a8cd26fa6750b439efef4acec1791add7df0bb3595bef1d71222aa5481ef5a0512241611cfe9ba2a5415f19901d1ceb3db08870fecdea412f339cc0854c1c9c1ecd4b775719935522c64b992b53ea9c6633307fc7ffc0afd36abc14e4adf7a7d6157df7971292bb4b9a36b8a5f686f677bf79b869d37b6a55b395bb7b6c434c1291b5a5863367bc8271351d2da23236bcac96cd5a39d66672cdf2caede71baf884dd51b6a4c1423dbfe5a4a4ba03d332f4331432a3c0543c298701db09c741087488bab10b2fd0e4b1b505b683ed6472c0e94a3e57aa9459057e3551a73611986734a785fe795134d2ac18081d2dc911e69eb8f36f22a0999dbc94f55c76dc0a29569d382f000a1778f1ffac8be905e9e4b9edc685bc3e94cde9137368823875a4b04192d808d702c52a6c9a8c2fcecb6c7a616641e6ac1f86a4cd414258f3d81052239eaba399aaf7b3e9a2832e195783566cffb85fc30df6c341bd82d1725680e2107a9221c890194e2431f2c9b45573313024d268a15b3b8c072de1ab6ebf27dc0b8229ceea3aac34abeb512df3f5945b4ba9f35f86f6d9851f53c7f4ed7d6800e97736c190888fa92d78db317401c70fdd79bfb7e17d0cc9ac5d317b0e8e70eb6c66350f5c5d713b8c4fc42dfccdfa35b04663378576538e962ee4359cc0ce1c0a58c1dec4f3f430e5bb89e75e81f273c08ff0b87bedc94d0b036e06376fffdb55356074051b932d42b45799708c84dedee1be8a48b86def1220a08e979efff8f74bcfbf5f7afef12f3dc5122e0d1f45a1ed33adb8c143e8646b443ea1275b705434ba2caa664226038f2bf9a1795c16959c9c671539bba6b4e1d94cbeaa2ed585fc116c9990137b7e0300ec084d75fc9ebb54c2f36c017008e6df9453e129f72a4430aa423c163b111455f13e716f69699e4c7b646eb58b5e5a78587af58b9fa33e661cb44f5c4c88f0ad00d02a30820d3885d32d5afe30167fc6e0bd3defc4dc736fd6e841da3b3d9d97ea3c2b0d9ffc9fb53c2df2d353ccd47a726e61c053c35881f57decf39f9f3e99ebdc5780527183cfd331d7ea4f0786737dfdd8d03118387d9f4de5b95217c8b57c7872088080ee9e5395c3ce2adb4cebc75747f6b398a9759593410532396403c891c8d0a256aa1179514b34e40536e35b6a6a295d1fc61d732997abe6da51bef787ee8dc64152cf2c9f7b882a964599d5c85a2eb3bac8aa060239003c63a9e65a64e22ac3ad498fa62e9c8345d45bca66e46787c30237cad481719ac15a2d9797b2542bb01891d56551ab0a9f5b0d4b368c6d4a4a8555d62cf448bc934b7569af46a542ed014cbcd958def834ac0c4dd0cc95cbce3984ae075033d081cf14dc5f5d507ba8119b64972d33ab76ecbbe1fcc2ac535cdbdb011d187f58d545d5fcec2af59171d8f7fe4cd5cb2ce1967c1b20de3f0b0c8f18dfab2a971f0826c6b321ad0d83df153d1add44f4c457028738aae5aacca6b23ffe7f7a3cef88e2e264e1b93eb6ad7cf5d57bfebeea199b8528579556a5c495704c894394538e9104875cea66cb99a1a9af7d91f1583c7efc58fc2ccba95a82d2d36bb4d0c4f8f1e3c72c336c07a85f5c65a838bdaa10318f5bb369850f52d694c9892cbac9a617acbe4689598168aee00cac0b6bc00651d373325e23e282dcb564d1f2ac33f27e72c8620a4e8bfd0f8883e4cdd6afdad44a9ffa8e150c4544b3662df0135cb4dd1204de2061877a679dd50ec5683482a3e7ccf235ce980c41f52ca5595aed253d5388ee2c2641effbac28658e2e17309fd6366b227a838e2708f4199c57aa96bea07732303580b5d87421a717a344271eb801b2ba835dbe73b76dbe23be153bb4cf778cb8c036fa0ec91bf0276e75fb33d8ec6cbbef24240ef3f93d0fd762ffe41c8b8404b7ca43718c139d02c264de3337c9339e96f58b609fb463eabb2f0e8b2af81265b21057f60387c38a7055de76c3aafc5c94f934abf37f04aeca4bb5bc73f1c7b95afe16d02c7c2adab82c2ef59f0ecad2b14abe3d2b61b71a4b284e3b747b95bc3a38ffc53e2178269012dcdb5021be2bf4ca73579c107737894042f0394d4fbd3201f7ac2d6d864a0973d9b06a5fd25391aac5f3db72b09bd1848fdb8fc174c114871845e66f2d9ba8a722ddc13e4ee810a16b4c591ec82d15665540386753c8de0fd89d8815f43f3a5152b01ac65fecbafb703e90a34385f86f10a0df1604e87f31e48c59077eb8b00826ec60e339dcdf8436e7ce2a1b4581957369f8872de10f3c1f5c8597f2e92cf0ba2b498d512496b81c36877fb11edae628680bbb8b1e2d24f39e604e48a56cd0d01f5fabcf6500ef8c2a1e55b1980f78e503200670e8022b2e71eaa0504e51e797090daf4e2297d332ab337805df7bfb6a247e54ba31d52dcd35186d739b9e76775aeb22c6b15812282c2c3a04464734d27d56824fdc237e4776e32aaac7701f8a83e04878c3b89265e9551151b88d74e0128f94929516b5d53952a232132a63ce718df5d01c9abf410fd0d410339190854fb660ac08feea423b38e59e773844a5c02b98390057316bd82878e2040f3c3b6d72369353f492037b031b2ce27b880d83d83418dd116accf29c5c26a3083d1860a3a0b029da8696d11337690e87fc91207de15144483d946ffc023c9ed76abd6211767acf5c75b0ed7d04875df1747bbb958a8b74683a4c7eba8f02108d893853ab6c5a34d7e2f71f6d5d374b2d64a6e5e3a27aacd6cdd9908a51ce89d8c62f37516bbeda439c21dfa274a0b11f5935804befd3653e113cfd894dbf89c7f57d0651d5fb1f0111b7002940dcb8f046a6461e16a9a8763f62a61b1f05c28df65ba743ff68d100583de67f7fca8b4b5c750c1ef1c89ddba3d188cff1304e8ca7e4181a78cfb2ddb0f6cdff5ef596806a9f7386f48077669c1797be0c046282014781981e097a9240d8789cbe3dd89032bf6ddb56bd469ce6ea5464d575b3307be5fc5a140d808d350afd31c3183bb8e17e5e64b08d61ebe70ac098cc064e3015c71185565eff80ee566dd6d0d7ebe9c230a27388dc02863c48648ab04ea51eb83d88dea6da6e66a642b5a162be16cbacf00c2e60fea8442caa09ceec6371e64fa8b3e89bcc834f74b2449f6c26ec4334131cb0eab2c870652c9ad548fc6c8684f174a2e042e7725e54dacdd5c9d63e714880461f8997ebda7915c2a7613282d3a29835c87e6055d391d088b21b15cc85e3bbdd71646c08a0ca3adeb179230c77554da53fe7e0714c3672245e4bf3bbc92e086d1bf4a66644c496939cd5412079ac6cce3e70a261a26c30e2be8bfbf0a8051382b580d7ce0ded26cff402848d475e0af79ce34fc14e6df324064d51548c357db3bd4dc1d65cc9f375d340eca5176531bda0a2f1686ebe855488296e3efe698cc57c4d01f3e0230ab8c4cf36700cb50ac8e6c5f482f8469282c2e545f2c0c5b02f69bac9ae295893a19b6fb6b7971a9f517dbc1c9a82b381c5cac7d859e03caaaf8a06c375294e45a3b0dbb0750a2dce60edcfbc9e1dd9d8225bad64a5ed6b2ca422e09dba946437c2f631b5457bd837f5bbdf89a362893ea9b4ade1270424983536ee4e5d4c2f0aa9c1b4b5416756720d1e8a65a10d6de3a3452db511a60c472ae15528976576ad9166ad73e822ab41645b1595c8d5553502d76423283a49a5d0c803b9f7bf1159c88996077872cfd5e41c0fb181cc5e961a5e8361da2d9375d1c31ccb62933412478bccec559b0bbbcd9cedbd7085b551e8b8ba31c431b4000c805c67cf264b09e8706ddfc9f1edecf0907351cb7c406684aa21420b01ef453db72743c7ba7e4b61671e3d9a800488427a10bc6bd3d1b984b503d836b4533e5f37542ff03134869a4e29541c9c953d2d5665d6cc54bd7c9ccd2ba59b620a61234b824b88c11e829bc6b7a0ed9c4a2d6a392bd5957edf5f34cd4a4fc6e379d12cd6e7a3a95a8e41aefc458f3be4cbf3529d8fbfd9defee3d3eda7f28f3bff99fdf1eb73f9873f643b4fa64fe5cecef637f2ebff7cf287ffd879f2cdced7e7635d4fc7419f46bfe8dfbdded9fe8fc7af779e7c33a06e159550758eb01600740146d9c8dd3f04f30909ab5ae6c5b4c9ce4b19c8dece53dacc27554dc7bd38a33c8f293216789804df1ea3d3fa196c1f0a0e11846334573788294155d37d6de803253651a83a77e3238687f7bb7309cf20f6fc8325c96949a8ea3e008f1c37e814afd7f2d7ac14be668e9f7cf39fbf833fcdf69755f3f8e9cece1ffff0e4c91f9fd8e977f1968a6aa606237184c768a1431a84dd315d280536a0d63234a06ecbbebf8d2931b699e68a6efa2b0126f9457124ef0521f98f428fb47562544f02cfb41947114c126140dac76dc04584eb7b0cbf99015f83ab2542a362104800ef08ac280966643768ffe143f180fd1e79a844f19c635a89490afb0a60a91124efd0861a77f344590f6d5c723236f47ab81545e08ec3fc43b150c1ccdbe00a239b21d920530f7569615b153bd550a86a8d0afade072155cc5aaf5ab1c3378e84ebcbeedcc970f4b13ab803f21383e14cc2dab8fda02dc9e3d3fb6513f7c7fcfc87c27d8289eb782c321f56ae9260f7cbc04fec14dd74e0607e1e04e6692d6708e978186007e283cb87e65565712a8b10e690121f3ef48547778bd3cfa8c4ae2f5287238e0eaf34b7aa37c068e6b239acb2955ea8e63b90afd1fba56ffaf39605671c8f85400f2cf9a10976b64bc5bd41c5c0d6c1e309f25a04a96c3eda304d37167a104897e573e08d11c3a0647a8dc04a4c7b4e43fcf0a1883fbb4974854538165b38c873c37ef1fd99eac12eefc1a74f22fe7c7b0ff088ecee80fbdbff65c981d764536fac8dfb97c0b3453d0cb6d0877050a2c57a07b7a1e822717535db417a7e1f6d3a5136d29dadc42e092337da6fec51b08bea7e3dc96da4b7643884f651f02be86c1391dd2508437bdd314c18ab70f38aff7af4e269564d65f9861d48fd645373d9b858a021a7b69f43bc531b5998d3880d9ec4441b730d1ca2706543db522adc997709c66cd78b56be0e4f94b631e6874106613e6557f4d065885b83512394cb4288521ab5ec1219f0a868f52794dae2b320687082a30eda99d01c84d54f1cd878fb48a575e154c31726a026fb3a15101437d972cf57094f48e1dfba76bb1dbb19e93f68bb858fc77c6f80a2202bafb26b6d2eec6e8b29f754c8acd7ba6994f31b0883bbeb4d613cc25651e52f0f7e7ca37209bc6610f11fbe65d9760f363652b0ac67aa5e82bc49916bedbc0c36489641d90f45138027c7d26fc41043c9d71075cc4cb1cf208e74e22d27041827eeb86e6c0238e6230f6c5737cc48eb82b7439c20400c765bcc8f99ef327fa542e24362485fe6c4f38dc9fcd63571dd7cd6e257eec80a181b0870958a311585be2856e8d5027a5f3c13b0cef1d8ace615be78048fc5f5baaadce340d1080c2541fce474b9d6cd290050a1e79ca5d307ae0e739f94d1ad07573c9bc9c30dab1ef40f3cc29276b77449d9f1a8dfa8ee8d29d7ffe960c5db875a500711895bd201c7ea4ff73ee83b896cdd5d4f75bca8e6ed76cdf27cffeabf7edcb71cd6aeff73efade8aa530c976fbfcaa9364b30233abc36cf65d7da74aecea6f5d9b84289f98d96eb26c6a84a6f773c1a5bbbddf1b0d6167f9adce274c2b21dee0fd9bb6fbc00db33de77741d639bc5e4bff7f6086f759b57f4e9264cfc7b6f8ef85cb8cb86f057985bf643d855bb1df83948d96ea37310d5364fca1dc83c98e53b50f92d337d1fca6ecb1181b09c9032b88cd4d6dc24049d56266ab4ef3b798b06287502f369e55d0ea6db4a3272085e02a6660e08852e4cf0de84a1c54425a752ebacbe462ba5c63dd05fc9a2ce459d4d99d38f867720579b952e5c533a36842a2ad1486d5d16adb807cf117a5d4b8f126daa432b1f5a0240de5dc90a2d0d120d4120ea2b695b236171eaa7d30a40c162ba490936d9a6d94bd150546bb01a5d0db638e5d7294e4920bfcea89df5b2ea68b12f2fb933382977a19ed0d2df56cdc577b7c3bede408d7c62a9b596ecdadd5722fe94ff5e67b77c75ceb13faa35b52c11efe22d6e646b361a4c1dde8ae3a5b499429d223f055bda8c2ccff7abfc75a11b59451aeace5cb66ff1880729478cc4c5376845bb83b4cdbadcf8bb6e22febcd958cbf6e70746b983a62852c96c50d6867c34da759ba3aff0b0337134953080127c7afbebc2a9d820335bef51b641c4040ace3253f45ad750e8393b041edee62de9ca9e7525f18791ce4cc1d5b233572a0a0b4b4e8462e1a99b6a0e35418996837dd1994ddd324c7f07b82d8bcc37e5d834142757dd92035a60e204792c3ab2dbdd15bd9973d66d91b6cd483b61c81a6879bcb9683c4e25e243cc581c7c559514633388a6d411f886a1c5dbb85671fb9de16eee15e9c65ee037c7b771ae4414d6268e65738f50398e3945297df4878ceafd22e171f6c4996df5ccda7232efe9a2d28dcc727c8b460753827809d0fd3d94b4a618b11ed2a2c39470edc29b7a53b1a137e51f7afbfca1f326187297840158c74c17bcbf54a50b57609fd21dda0332b7d0643b44d9774684e607b7d47366794fbed906635d01d6731f6913386b61616dec7ebcf60e992ea6faeec73330ea35ff79fcfb8f58f6e68cecfcb0ece0c6361fd9f20a67a0d70e55c2c8d047e9f71fcd0ab1804b4396df2ea84f7d3fe059e3c810870bf25b7733f84c3475319fcb1aada250354596ef645bcbfa5c04bd4d069f881c0b221b63889e43910eb9158f8f1463e96021c9fca1c3526b64433d5823b993ad32fbfb35d67eb2159939aa8a459a85187de20cec37ebb5bc39f3b642b21167fce43b1b89bd99757dc072384571209ac8a0b2c96c24241a2d5941a98a3c1f647eb235146bc46f81d845a556369488380b0ed6331e0a84f7ee7317c374d3af075e88c08323432b4db40625133b8a9c6729c9cc54d84b3202ece56255cb19da8d518e688e5c4bb3a22af442c6714760a041e5b78ef48daa97684f13125ba538fb325437a350277aa1ae2a6f5cd815f80aa7474771c11271998812904870d4404e28fda01d2a18810fad45355519d14ec32d8c45a68556aab258cb512f83be5175df42689a09bb8857ca73d1932d7a0bda727e32ae87e0ad93e539e29de57863cf4a7146d679be67a9e843b72cd03ec4da61a1765a1b2915e1e7fe958636b289283ab75479b4d1187e68d664599465a1e55455b9a30bcb72ed963e0b45cf00473c582e8b1465b77e66037bd94b990d3dc40d2ecbe2424e9c852d9a9b9f0da94655b3d042e53566ee3e285d251fed294673ff747b7be83ec1d47de3bfdcdcc4871afdc650371ff191547c121fb1bae713819f865097fbe92a8215a2be70718a6e8dab9681c1aab997f0e4bdcaedad411f2eb295b42ec6a65ae67afa207dfdc646f981eb44de3be3ac54f2ea9f86b54252f5aa8980998e61b829bc859b7634ad3c375c166392306e250d57436162245e44a2a4cfe7c340bd3cf8115f5c0d3fccc459ae2a79e6f44400f6662dc4c0101682b5cfebac307c3c6c986a048c9e1159804f1e814d3f3e0b00a436580283700c302a33abab2a6641e8948e8d12d2c2ee4752b3985e3b07149402c76382619110a0919d3f550e7200050fac2fe8c830a7200aeaad90f102a60808d114743a9e5e506b0ffb31441d18dde452bb1459763012ce12cdbe6b2db8d3e9cd10640efd3a103dcf5e00e83c5943b830b2d31e89bd4ac80f4d9d2130b8442b6d0cf6aff7ecfb12f046bd26db6ec092ca8b293829cc98508aae4685166a6aee25e0255b51c47d0cc08ea25f9b1939b032339313f143b32ce9123a14ac1f13610e0408c465b6059b2fd516b7ee325199931cff2fce537b7e20ed33a7c8c8c5ff5766a89b9264fe799b8ea2e9a566ea5ebdeee8622427dd7b217ffbee7d2ea9d10decb7eb607b85cda9f006ddd8247bed51741d999632ab7decc45c4de11ccfac0af7c663a1b8c2955256c114a897a2807f1fedd51dcd01dbb748ff3dba74f9042be5fb2f24258269a997aedd4fc7334d27873197883f9ae9e2dfa0aee843ab204db3f9d4d2b071a88bed30c9a1593c89be7bbc8a9d440a1479daae0a4b7cfd052229de1a44f1d7435a39251609bd1e922a14865bb054a7ab6e5caa362c540296ea1f8ccec46d41ec90ee84b26864f044b873af904b0514a61b4d22499bb6d176a13b582d953fd914e19500eaab9b41a0e51313fb4ad5b590c16f82506993c16f3637889cffebe786ca6f9c1b96071f8137e43233f8657a6332bd54d5a6c67cc6bddbfa75e7119a3c776af643d1dcdaaa998d1411b50924faf24560f5be348ff932d0779f8d5b078f623f52f8f914741dcff04f47affb379ad86f8b26263f34b2ca9d3f83fded879f695dcc2bf1e913336bc1cadad8bd052a83d2e8df45a012f2b31da8838af7cc542fc609a445f855508196541268819ba7313018697bb3c4d3db7a1ab6334aaa2c74ea75034ec589f9df8befc6627e682debe66851e85778592dfe2ef3be96e58cef5159ce524e181e34f79d9cc95a565389e8b9275b6047bec8345af5c9cade850b2d73f118bbd41f0439f0b998022744bbc2f480cb649736f4064d23fd0e88bfc5eaa27815833856470246f3f882875272bc39752372ef2e13d1cb8bcb1e9c9e61ac756fd5c93ea3e542dc367cb413113f28f0671b300b085f98b22a9b0386118614e5ba4d8f8746d5f5a32720804cf853e0d7ffedd9009e8e200ed448bc2e2e644a117b123d3fe961b29f05740c1156b2e9a2a810fc053a6db1d5adb9a6d594b6c0ec7c231e352abc6abf50952e2c02be05433997a5ba1a893d2d8a462eaddffc525dca1c225be439ea794c992395abd705c467954e3744204c1ca1295b376a9901567c792dceaf5bef6a34f0b07b6f9445cb4ecd9107ca43b451b03df586e61633ef0155b64fc826a70b75754aeb0423b4d880a09140d43b544bd9e79c0dcb37427b0ef403b10fdacbe203ac0600b3f81e69914d6ba5b5c88b19f08106fa4055c25cfb8733be8f624c832f09050135de0b0f022d6cfe41a010be5634e344f583b5f31bf18fa3f3a2cafb1dacbaeb33b89551502c4af0665d84f09361ec60ab4c1e8a5cae6495938583f5f2bb055f80f77412fc72d689f088fd0ecc2c51a54367f3af831740d7a97f24c60097639cc7d6443c601ed0f40c1b1a206f7486beb70bb66d288ca80549d6e682a57c79a75cdf080befdb8252c0d5f92c3c854a7ec0a315d45db3f099b69697d1c50890151216b1f1be32d992e41910a8cdc93e3d4b9389b7b8e2c59fa39a8ef7d1cc066d41fe79c007ca3b662ed2c94ac0fabbab867866a23ad39b11567203c14673e8d68e7fb7a6972dff2bb2f78b962b39b27054cc149ddb82da7b047c1bd15d23d1c8c0bb37c58542af9d41b4989b9c7a02bf62be1f3a5d5cfdd1a5035890c016966cbbededeee3cd900ca3da46b0b1196f2dab633715fc0ed4c608e1c4eaacbdfd9d29e1aa94a085bb59cedfc1a8dd1b434656ed0ea0d8e7e59272ca089e925889d5afb38177206a5b434126f1543798c5b78c9871e1f0ded1675e026edde076c1eb1984a6d80958a5202561c71eb82a7a6a64f3d919fbdc76abc38223b6ac865ba935ad7ee181a3ad3c13ecca4e1b6b04b4ba8fa1359e1e77b7934ee991f196e7b5dbf1638e931f3edf663a25bc1360b5c8c419c07d9e994b81ed1cd867815319c00ec2fea0ba1c12f6f935998f806fb63873a44908b0949f4c07d75a9239f6e5933f7c05d2f9150877a5b9a7354a647069cfc4554d2cd8768bac7da93a2be24358f5a262cdee7e3424757346378202a0c767ebd2be82bb8af3e2d28e45d517706ba8c16205511eb9ed1cbb2c279630abaedb6642f636db6559a9871e18d35ecee0c666a644ad1bb279b486b4a5cc2ee5a8ebb686b693450541c89db523bb48d34600f87401d8af14e3ae5142af00d9af59c8a50d506f112dc191d1ce57c20233b3d400176c337f677ffa3ecba5592ebcc406b3e8987aeaa547e532318b3cd813dc6561d224583e6a66fae89cfffd2d8feab01684b6f511bbcd92d9a1431280693457f4bac8f11a4bddd3082580168615bf923aee7a9436bbb44fc78921272d30ef33e4084ae15f64c4ddef489f3fe0c085fd5f65bc5dcf57c9e15a8bd78aa292a2bf079c37c5a524c819ebe90116eb99262389d04cdcb1b7b9ac640dea9c5c55d2f0638c887ec61d8ecec4425dc94b6f6231cd10ee939075bdfa0a1b053d1416158b4c8bac344ce21a559f5609655815c4478050d8c579e95045a7aad2eba5ac4335129d01b972a327bcf470a8c0ebbc16878c13e16c61f20999f4995a0c8b1210a15d90704fa0ab52a80a4cf989d19a9afd0c9e24cd5ca086091e52dcd0857f88999a539926a8c0889fcc80253ed823dd2cfff9058c2aa08d5b2d2b1271c4e8afe3932dca74b2f5fed9d670ab153eb33bca28a8816615bae2eed5f350bbede3e1d5d92a94c95b96c2f1a3cfa06d76cc9ec94cf18ed72130182edeb79f865242e6ac626f2b7bf59c0770bdb1f15093e144e1bd330c236a83e8f6fc8ba9964d032fc561b6a9aae518d358e6f37551e63fbd7bddcabe90e54ad67a6c33b032abacd6f20799817cd7558e6762650bfdd3bbd787d9521ed4c5bca83a8b47f9580d24944308475e9a46c892f9301b95997b18fa755e1555aeaee24094e2e1434a1941f6f0276a1ff10328303ba6ab5119b5db4dc11f16f55e9ead1a59f7a7aa9a1511091b027d5bab65a1d9ed392ff42a6ba68bff5ad446a297bae9d752abf2520e452d8d8016d07a8d795e664d8620bbb3623ecab3267bd6cae35792b22df04370b902221b15fa7b552f4da57dd6007fa0a42b5a58f5710f6e3155f3d8b0b0de7bd0c6be265cf5f35a5d6909642b8a26da32ac9bb473ffebc7d73f34cdcacec1808da754199a738b5dd153151c2c701bc55b468f65fdf052419c0babc403cc21558b57fbe23fc6ff295e1cbc3b049357557b1c8c83aabcb61fb5787b70780407d55ff68f30f227fcb241427029d1bda8967aa52a2d054decc855f9f2e04defc89c5b180e5dd51696439c8fa7d150d1c96f7a2141c7d488ffc22150ea28c481ec323f32d5f71804dfad3b216c05f0adfa3d2395bfa8652eaba6c84add33673fadd200b244bb97a87cb4aecb30a6355fd864830c9a255a5df3b3e712fd7a06001dae8d91aa56b59a4344f496feee2da580d167b2ac074c8c8a5af885817777b9310bfbc3d1d15b719ee9622ab275b3301335cd42dc00d0c6e1bc982c91adc15acbbaca96d2ef4a9369e43e7ffa247a7ef8c895b5be52751e95709fc312e1061dedad9b85aa8bbfdb9849bdefa0ef3df115b0cebe6bf72bd19b98afb6da965ed04dda4aba755fca66a1f251a37e5aad64fd22d3b23f18baa38751c7d0761decd175f4f350d6f8ae530f86b0cef8ac73488cc492935daca2123f1ec6ddf22b49555bb0036049e0bb01fb10a55282e20daa387684f8be4d0faf5596f723dc9107b6637468986e40f5889d63f6ded7b06b8888030d69805045c475c4060ba18c25ddecab5c5c499117002234978dc81cef19b26bcab9b4d58dc7d4efdc88f7aac2c0c8e4e3ce32fd0cd7f04a5278100890e5a6db08c178339815a504a0f4464d5539144ba51bcbdf35ab0e7a614d1ad0563cd3629b8734c0001099d06bb803ccd6a56d9083c099e9b553ca4048b6914ff9c9c6393062cec38722f1d9c71e8621b828c3b72ec5db5aae32f220b0f5f10ee2f985dffd39db9bcb66af2cdf85099c8d8ae78194e586922cd81f309bc376bb24033c2082b79fcd516c4832f57917cf8a0f4d4f3c6fcdd791fcd08849eb73b26dfe422a84913f2641bf98c27a3c36a7af066bae273b3b4f39d4c2cef6d722151522fb50284dffa510103bdb4f06be528b6c96201268e339541da70fe30acc903755d27ba3048938bd566da6307f8fc3459bc474c1b5fdb02413fa77c849102a9ef8bd40b4e8261f05fc58341cbac69065be28250415e37baa752633b81e28f403700a51aa2b51ca4b598a4a3657aabe401ea43dd9fb735392941e3f988175540841fb4e6625d584417d8a3c97145664adad4509311356ce36426ff9e06d3d2b6a892ee9c043827efa819a89e9b3eb42bff78632e2edc19e3e43988aa193703e7f0ae9cc49cdd85d248d4d43b0e5d50c0eeff0908390ec18e349e6001f6247d8db7f71f0e6cdde7707ef8ef65ff6bec858f7f25c7cd0f58c08dec9bc56bd042b059aa562e67057c1c04a3759956775eeae06b2ba2c6a5579941538f6491d0d1a2a231003a46b0f42bb884c5cc973611653d64381e7f9b4795c413cd1512884d9abcd2135fb1db6ba5f5df60791543655eaa290dd975e4aef0dd233109e0b26e96f10e16bd7498291646df8f34659fae143bbc4a6b617d03cb8433db77d0551a39fcc644e0d27f447d0cbae73d111185ceb58adf8c9d46aa42257ba8d6046f3425cd0eaf55a67bbe9434fcbe61d6f31bc68b87ee102ce54bd9f4d17fdb08fc3000230a8ad7f999514103bb2d0a5cb5170876edf902ee4f5a851afd595156931d394aebaa6925e64ba0b7c6ea92ea5e01762d3a6391ae14dc936c18ba52fd5b1c96f22c6b6b9b5360b595f155a42bc339cf6d6acfb12eee88a270b2cc82fb37290b4321e3c8bd63726e446395e51cc404d6b8698b80b4505dbd7c5d61e09ec805c070279e6ceadf352dca2a1be4e6c8348664a49524c5a9c82b1603fdc50e3b1d8ffb092d346e6e2e5c18ffb56bc469be2ca1c7b567e061e87fe11a0118fb403afe148de1905757fb76e48f0274c28bd5eadcc5557e670cbe9fda255d5036500e9c8291f089f397bb215e8193f53f5d24a9f3db7b546e1f6494994a06180d6626b76309e969b6cd7d9c9e92ef11dcb6881dbb007aa7aa9ae4053f0d65dfebb91dc704ddb9000b64d775c26ea0de8ff0d84762efdca91d248ac57a60c6215e8cd1dff69b5a1dbfc16837526068209771c4fd85cd2d887f2226ae891ba905528c0d10a617a9939635a27cff2a2a315ea3747cd42567d0607fa02f2c8bc8f995bacf9419bfd8bf6dd2cc0e2646b7bae6aae52f2221436768bb0d321ee84f6427ec2e2e3c3b1f6f662d1158dcb50a8d94048a3f6f1e8d9749507aa586ea6dff58c20ab45667d14425186a78016dbc6817f0132a6c82a948dbde13b1905c85c2ca5d6104cd7ca9428974f01cec34e1c60ec135ff0d125ff0cfa1df111bde86e6c55a0e8c05ae8cb28c88e8e0c37d420e4264a4bd67a6cbaf29e556a7e8bfe8c07550ce5e041babd631acd7bae89e9cc8a83b579d9d0c59fad92f8234cea0d8e00663ac72efa50829b9e13f805a0b50ac1fcb37b20d2209003d14125af4450091213e9693869f4a1c8ed6d745261f7580a8d1ca07fc9844feac28307f8d5b03ff863747afa62efcd8bfdd7a7a75d6d5902de13675831ba5e80570bc4b78760a3da9eb7005c66525792c0aaf0ec049ec40816fc371354b61b122f27db71e07144a3b4334d765d604f49e5776d69ebf08345980354a30e1b8abee1919de85b3f9cba1e163657c27ed0ca73d19bc04d31f83a11bd9e77f56935eca7dd0b5fad25c5526649c6c443d4ea1ae302ec6c3ff983789b9559d514b53892d345a54a352fa41e8a57d514308a30848036c424eb4b3ef9af8ba9ac34808259cf96bd55365d489b32147f93b536b3b133dac648ca275b94467e558f28b02ede1c1156a8d0a0c0b421900bb4062f0b330ecff0a81edcc1d6e8429d3719dc3aa76a756df1cd28a70028f5472ed4f4a2695693f1f8eaea6a9441b747aa9e8f4bccacc7af5fbdd87f73b8ff7867b4ed8afd84e867b545433bbf46608d2980b395d915b8edcc6b69f159c4555d5874f7597395d51820382f0c959eaf9b60f26c3f0b1d648018e5e2646bef50bc3a3cd912dfed1dbe3ac4e8c83fbf3afae1e0a723f1f3debb777b6f8e5eed1f8a8377e2c5c19b97af8e5e1dbc391407df8bbd37ff2dfefaeacdcba190058482951f40f20420b5a5430579240ea50cba6163a73b73b332abe66b43957375296b5013ac64bd2cb4469f1b8ac35a16cba2213f9cd6e0ec0e2c9620887d14166a57dca08ac939303f63990a4d7619e8913f044cff57d5a5ba90bedc885ed7974b55e15b7c58c90faab990d72cff78015fc25c53b53c573f42a0673d1473d9fc555ebf30df86288bdb9fed7ade9ae43aac6d51e412dbd52f8bac547380db7c29cbec7a280a1d241d2e207afc10a01b8394765b94008d99a3e3f087839f4f5fbeda7b7df097d3bfeeffb7d815275bcf2115f9009c2f58e7e15491930ab3086749c4afd897e393add7072ff65e9f6cbd878a4b35cd4aa83ccef697d707dff97cf3529d53c69b016f427cfa143409bed4cc619d060fe2b246272ccbea45e884459d751f82927dcdc6c3acc1e3b802682d4d1dd1343d2e219b2229ef8ae3f76111d407fe555e9b4b481871a0a5ae3214b3cbc9a92fe3e85c0528a85f55abb533441fb16f610110c17909504079d2ed07c4da8fe86330c4cc8396589fa6c97eecfabc81ae03b13ea50b699177ff944f74e4058b5fa3e6dd718aa968d1ff8ce7b8190cba2f21d1f3918b2a76a7c1c7c54fc20831a302d8d29b6c29730bd1f46a06abf04e4ed5bc0277b8297294932d5511fd9c6c0d8577eee820b49f569d64f68fed7f48c86e203fad5ac3702d045b33f01e8f5cbf5a8e70017590ddd709b3f3efacb9c4e083899a533bfbf60ab56c2829a8b50dde996433367c49d0a47007a0d39b4621155843a167b65df3e068b4ce4fd84fd04b5b4e02ac96fb1d0d5ae14fcc04afd67a11462502629d84c75fe0bf84bc64c8cb40c284bb31b1ddd88ea73148735cfaeb4e8b7317ba0d968df6a005e434250dedf2750c59f2268eece151c15071284e335bc20ec224fd499c66ce74f1b48d6c81790dfbcf8e4f8bf7c1532e3eacbd9a57aa360755c4fc1f70563882e8d3af2a4cfdf429e09323b2b68e5f1a1e040dc4e709d560272d7d7a04cdac6ad0af11d24bc4c16594dcef64d7ad7a75a3566f6bb5cae659e268c0b04b2213b3329b8b5fd61a2186d755d1589bae11dc35969240aecfa5a82d5c446e64f699cc9a752de1d56a1476bad0ace5c346ad56b1ffabcd19f5b27b7c5e940d8679cce9f23d63aa1c4ae40ebb425b09ab8b5f119325b683329b78ce05bb118a7562127c0491109f5abc0075b79d1aecaad47106da90522ec5ae90238248b111b016720ab8b21a4ddc756b796da02e17c90b967b91ad56d6c9703c16f91a2eec15e0aa7b2d03571b62072858eea74fd0a1d1b4541a148f5d8e6dc9d8af309ebc68e09ab81bd4d43fd92acc4c0c45233f34592db3a138a6a72b5b64d7d0d77b0ba9e4fae72abc535f60d4aaea3510371da6f15c7d30971c7d55d07507b482595e2833858de1c1b44b055e3b9c5358a833b73d1935d9dc906be2358e4679b215313cf84acf36be1aef46ef8e399f0f6ab3fd3fd982a7d92815c610b4959c93f065c34f4e2db3fc311930c832bfef2c98e20755797d47e2b0524eec294fdf835d04ce8bdcdcdfdd6bed6de9e6df8a9e7f2b7afef5143d8fc0dd5197c5f9e913abcc809f5c5f0299d079b45b17f4c3c1d15ff7fffbf0f4e7bd776f4e5feebf3878b77774f0eef4cdfefecbc3d377fb7b2f8e4ef75fefffb8ffe668d899f7e0f4c7fda31f0e5e76288fc88e2a68762e9b97855e95d9350a8a85b60e459fa38d82a374186fe196b60713b83e27d6781cc121d9ffb936c75c1e83d290b6c0b940c5d9d8e18ceec254ab97f0a6aad2aa94a3abacaefab74d6b0a31cbc8c327e828c755394c77d33f05142e7f47436a199d3a348260ac846e4685bc209e9c18c8dc6f33642ced6294c275093e75a0ae31c09c8087b71b0b6eb80ccba405b3125b2953fb1b8ba72219dea19c47024ac64a04310e947b91020e5ea442d55a5b127c16548372e4fdea4131b3ad03b9dbe4a6206cee3eb7aef4fda6d6164bceac112ab2a6c9a60b4162b5111e509228c90a407363348b8addb61538d9ba90d739a989ba26385448fa8edc52ed7a75b74a7f5afddaa5e9c0f8b91fe5db0aee4ffb54f216ea77b384ceafbfc5fc77d67cff25e8de66a8f68a4329b7b77594ef8e6bda065de947127d52f7e5af7404b3122f18d61b2e11a70d5734b1fa669b61e064e2ea67d2fa441b9132d3181759d656e02aaaf9bad00b70ef92cd9594953833b512dca0b30f396bdd1ea8e214fdc0190bc2cba8d07fcbca22b7782554285497dce9406dcb348336aece2d7d62c73e5042c7016fd768e1149ceddc8112a38bacbc92b44f7591b6312e9ba2dd4d8543955027551352d8b70c17d48faec9ce5f55b9fc20764550ffc827700321f15c6c8b4947d66771e5a0f2b3310b639021fc9ffc80e4473ce2f409a8fa4617f87353f69f562cf34fab603eb079f79410c675a68f91bda370fafec41c067cac2f4768adbd7fc9e00afdff98feaa35ba406d25022e13f53b7cd9a04fbfaacfa6d8afe9b199e05bfb4b5b0eb77910ef55da402951872db54cdc5fd12abb159af83f53597e5a4dec1f410fd376c0dc3320c1255af1c3db4c1f65f8f68d62686830f7572178ea0d6f21275be2abe8c294b8997c254eb606e6dc3bcda837b8899e9d54375bc32df016cfb4fc8b6c8eb279681e77ea137af6dd612e9bb70ccf98e7e6492e7fa1d1360cf06383fc3cc51adf8933fcf63b6bd773266aa9d765e375c77ae44cc480ac213f76bd774c564e58c97b3288123f59fbdff37551368f8b4aa08766a25253a5d91f6f097fd232757f86d2b8b0259b2dc6b8e60d833136b827614c1669a4a6a294b905d85633b7255bfd380a6d9ea03d670815b5823a5bec18ea6b0d975a3908345e7788c12d76f9782280eea895a29a910a82d6ea4c30646ade0656f9a2517530063b249442b08ec0f6d20c032c9ecfc0ea8dc0835765565833b6a1b5631b32d3366b4988ae535055aa87c2fcbf22c55726ce8e8f1dd1be7f7f06505320a430eb37dd644d31c5bf11efe960264e29ada8a6526c8ffe03d55ae2cfd3ac9173555f8bd71960c17893b9473768c607a672f8975db5d840f25ca95266d58d78475f30e8e72d93022fec67a0fd3ca31ac9d2d38dc5f1feef952291f2917b10a46836e21170382c703a2af45bd30a4e65dfdc2dbf578a948de3b1d8fdd6c149a64b1c3f198a9da178fafe1e653e8ade87de446c0f45efdafc4bfcd7162630d974d910621dc4d864e1d04031ac835b639256c7332b9bfae913e39cf6e3835dcf92e2c71f06a0ea39b145bae5dc932a237e4d100726572c97b794dabede1788139f02db87ca86e0ba6377450fdeb02d68acfbcc2d62c9641feb8dcdf3e16b51e926aba62ed7c387890d6f5206a682983d58bbcf966565b034cfb6865bad1cec54298bf3f1c1b996f5253c12fca27b8391ff8d5a7bab27203408a63f5da90ab07f5035d81b8ded0753111981d54a211023f36300a8fc0855c25aa42a65ae6216cade9bc16c84a4080b639e64711acac6e29827591ca7727371cce38bf33477e9e9312b92dea03fe0b0fd7484efbae9ed9bd203af66b54e3798d12c5294e09ddaae97e7aaf40bfa36a8d11b79534df6e721143394a25433c25f6c77d164d85c699f199311738c946b3fd075d2285b99dcdb6068a51515e8f77c899e17375bb501bdbbd1d907eaa06e5773efcf7f669526f4c5aea69b93ea9ea6ebfd3c6bb2a150ab46734e89bfcd7f7dec1636c79810cdb0cd4d4af0a591c15718acc0077f41902e8f6a64728cec4753211d9a3df13c489b38beeb6a5a9a6b10e659ae2c9bc241cd5a4cdb250548c789f46c28ce5b17fd4c9dff12a20240849989c886e10dad5ccb0980291f67efd955e35958dd795775e79dd59d775467fbdf375d1c42cd4c6317da96f5ed640dd8346a0960b86462154f073a0814b3eb70de0c2940b8de870f31266da3febfc383370ca3877fed745f832a7679de7ed22909f385de4881691e234dca2b7a182dade7a21215fafba22a8c300123792e7a3df115669f98dc65d9eba80df82a1e74be3ad3db51343d0caba9180ab50ea17e01be6d5468847183026c2ed07fbe77dc8b63f330303798a834981be9af0650cf57bba237ec312aa18f61778f8bf720fe04634f5d87c909ff7d6fe3da0421a05c9d3ea321340759826b6026f6f19348b38d1bbe6b9e7ba7a790e1f4b4c7b5b63696cdd1f5ca820abc50d5a5b9325573312deae9ba34c40e12d11a5066a1e65e8bdeec9eb0aa2fe836d8f9619f1fa3742d5c88aa388a15641b6955377de24bd3e58a969b4ad25af7428b38b6d0175d61ad5cab6217321d47766f97e49a1fadf485bc7eefa70b383c49ba51b42b4c54eb264948f4295a12b09db4104b97cc81decd29cca15e95c554f6dddc0ec513db254b341f4d0d446d3774d0c101d5ed9445338f6cc10ac87d3ae886e264cb07463bd91a5ad102f82a5e216e58d436bc6d804627a5b5f7b076bcb5426a8ad54510dbe9905db4b2a816ed5eda5cea695dac50ec47e336b6c43e7524abf552d6244aa4bf7ffa1459f0b06ce805b7b61504467986044eb660964eb64451b172035ec755edacb482f2e935b173c42a00f77c5679200b05128e5f8b17fe5e33c4ab0ec550c0fbfddb6005dca58b3eb7168ed5c69443ac5e1ebb2068615355616742227f11ddcb6e9899522b02a2bb12f94887bd54d69dee60873e532240a2ab1f3ef4e21c9baa850cac40b65ad42a2f9a403fe83eb6aa3e9cd6aa2c4b35bd6875e3b176691b8addda379f9555d22ce432d260c2a75e9c6753f5908115d8abcdf11354ea91cdc790da8bb36faa1f32f06092aa6ab2a29275671b2e472f556c535b2e132bf8bd52cd86c630b9d72ab0a919ccc18a204047671b049dd22ab0a90dccc18abccde6459535323f5aac97e755d6c2a1650d26f2f63657b5a92b89ecbc32553759d9dd1548eeb50a6c6c1072b02287aba2da443194de6b17d9d40c656185ce8b2ab7ea83687631d06990a1d7557253a341467e5a67d54f5abe54cb54b32eb1972ab1a9399769c021a7e5ea4759cf65aa2997d84b95d8d494cb34f8e7c67f0513b317595982d6be6f3580437e5871ed80cb11280b59de4494492f999f6cbdc82ac085c9ca5264185658645a64ee98678124a3aeae1462abb3d650bb0e812ed14385779545c3fc47c6bc84a13d7ce82152cc6fb4b7c68b24da62b753d90c88e79830092268b663986e0a5fcab59b2e8dc2a3f8a64c4fa3e440419d5ec543300724c359d3a3e55a37d69ef65ca291a0aad9b2220630bc78b63a15cce2bda2ae86bde7621cb3c7245a9970691b6e016ef2ec772f4093cec9a5587917af0eee3317a583107927957b7206f1912d0e8d45b3e7828399789efedeb1c093bb448c15e3b18b3fa085564bd9144ba95d1c81a29aaaba06500933cbaa16d34c43fc8380d8d0f7a3f8bb3c84d7ce43d9e0bdcceb6ab54d30d791acc946ba9e9a5f9f3eb99f5a364c5d1baa435cf141acba7329a35f54617d83a208b3360bd757bf2ee68be65c7d086e72a79d2128fb36ff509c76079cb49922bfa09883a229accd3c08dc1a5de8c96e5686c55d8fd8f27efa6449641e92886b6bd00a61391884612f47560886f009fea0b2c1100624e1ba0f54cfc8c9bdbe2a1837066b77b2fee8b0b92ee5e1424ab7593b5ba23fa0841ef2fe0dc2865aa12b8b653607e46299b742e151c150c2f001b2ccfc9ce2041df7e6aa516fe487a63714f0f7db5a5e9abfc1e5e8bb6c7a91d76a653e38a3997395d5397864f9cfaf7c6f7a2ce25857744cae696084774ca3035d702f8a79d91b5a1a02be757b68cc54303998da89f0d3dc5215432f1debc49eb44c78bbfab2210c26b344436a2af4c14a566d18439f0383de04331ed93811fc7a1b2e8c2c507bc3c8299cd5b4c987924e271ecb104315c23aa342dbe99723643828224b95e590b9df5149d033463e5d264ab72fcecf4559be9353595c825a42dfba4871011f913206036792b3dbbb56036f4e181a306e4a1dda54ba4aedb498dd06036e4755a4f921d56bc7cc458f2915f8476209df56b05e5f399dad60a1486f29f43855089695ca6140f596b1653088870fbbaaff36186d4445514b6e886db4887bb4f8a77bb4e8e62768713c46bc5a7151a92bb01e5a6b59f7b4c80b234218e20227e2b96cc03a07c8c157301e0b65813d87e44dacb3991c9a2a6d10a4799d9d63e14ac86cbaf07573eb7fabdaf39dbe751f06996f81dd4896be6c154d65746b95dec87cb7d072d8690ab74d17ef01e13cbdc09f3e515863ce60438248305d50502fe77ebff9c140cc14561876f771baf5f7776168f046b59c0fa268abc1dc07077bb19c837f42291b464837b1e3489e8fd15f6093c70870b23bcd4ff8edb663e88b1c42b171fc17e952ca87e2bebd12773a77c86de44e474e2b42f5bd0ffe2f3d3cb029dbf83fcc381e0b74da3b74bf6f2b969a39bec5ba662ce02945fe6128307a4c5bba4bef5a4ee7b86d8bfcc37b57cb26692faeeb2e5d8436c99424ee27d033de16233c1dcf7a2a792570ac8310c783dd2abbeea020811c1dbc3c98005a342243c2ba43780f550bf0c6ade66df164396778ffd8f167612230ea649aaea7ecaa1b3c9ef9cbaccda96104fc9e1aac61b19c6f5a117f47e9b802507a1fb85fec63b4319eb310a1644bd94351b5c59eb5cf88bfa325751cdc368bf1955942f818cd4b7cfa245ac2363642cfa646326b850927cfa768fc02cf834df82998a11b8124f6f9b461c65f94c5f402267de366f257caeea533e9c9a58b96e63679f8b799fbed7f91b98659da38d7d195bde328e2995a83188fc532bb9042af6b2b4b00b60522a2680a9b7c2da6a64718dc83aa623564556ee32b4fb3950564bd2a7259d9d0c1a030f441454b49a0ae88426b0461d59a6b02771915395e404bd21bb81103f00acf49102398fdfb577ff9e9dd7e785f8d665969d9bfdbe19f5486a4273c91b535ed7e8c17f2fa85b5287afac7d875b194b326ea7db481daa671816902bb3525dafbcfb83d40f94834c898ede734b8d31aa0d4d33bae4e47732de3ad0846a56b29b9026be342b28c5c82eb14e80371de2bc7e3f00b7714bfdeedbf79b9ff6effdde70960e8a809cfec9b7873946d83c0dacd3443ccf52062ff4e47c87e3210f0da57369bee323c113db3197aec6c2ea6f03933a55f4769c44327e19e61199aa229ad62d0da28cd1ae8c99149e259af5772227a887ad46b2fe72d33be499089b2dd67c65b026f425af80d17033845d76abc8b13dbcbf1268cb7d55e0e68e00baf07425f6e5e0c821d4d0a953bdd52a53d16816de91f550e060f546c94480d854cbcf3fa02f821c8a317ea2a30ecb079c384a0cc5591370b96157e7faefc442a953b91534faf3273376554c46497bcbd7ae4f63b9b69d904a3dd8ec4b170d4c1b99228ed1f00468dfd3ed2c5dfa50555c7b4a9b50e1acdd74d23eb1158d44eb372c38173cb7ef25649c93d85b3a156b24aee9714593d7c28e82d8a497641e123b59e2ef6abfc1ee5ddf886b7ad685e5cf66cb4b53b65e5c00665a6b511d126f818e7dfd0a65a0ffafc896d4438778320cedfb5e11281fa6c99d5f3a2fa4e358d5a4e5a4b3f0cb37ef8d96c8009ee0b9f74c346cf37849d29023ac0184b8321ff080c59471fc96cc87cedae0e4dc4fa838d99fc483657c60eed5bb3e14933e4cc96ee3068420840479b893ab64df4a48d9e8b77e0c538719b79b19ddc142f7e7acf1bfed33b5ff19fd2811ae4a11d19d7c93fdf855b3f8db8f597b8cb4200ba0781109016005c1bc26a188e038df67d3451503ed25d157f8759f4259f8bde93ededcbab5e2af2a9e3c3fad0f0e1dd78ca9e6f60da13380e7c5d0b69a48503d8fc21b7c7586a23cc1032fb196c409e1474e86e0783f84af4561f7af713b27a781dfef5bc11cb0feeceb48be5fcd7b756e0fb6d8aad0459e8fd23758e75ec13209909fec33e676533c1e64659c9c5445d4f6d82aea761c2a16c269ef66e3935a6eb5aab3aec9721d79502534443b0bd6cdda85e7c80fc00d4620498ac9cf60d751b89bb27be0a69f02bd11bf45207cc5d582333c9ddc81ef9e19062915f77b3c888e57d9d62794936fa75371ba5b974bd6265e2a4bbb0caaf3709b66eafba3d6f0b452921bf8c85c6483f7f37892e651b9d94edf84c4d44c7bce1c41355f341a228338987dade5dae1b93d697fb5c8ec8047d23c5591128456ddf6c389041d284fb1a5ce6dc727d338a93220ad48d5a1a09ba568c32be1985092d2a549a37415f5a34f7c237cd724729f7a40db2daef2007dee989e81c04757822da3d8f7a37893ff0f8d4d1cc4e5a5fee431de404b1913aac449ba28e3fdc535cfbc39dc5b53fa478177c7aa1d655732857599da17f5950204c6d51c72b9787150c133e4716bb1b3991a3499a9c328af19f12e546941ac42b5f57cd0bcc147223f19578126774133349cd659cfb48355939099fad62aa35f926d1d4de8702ad07c746127437af140dfeb19b06b5731fa1ac23fa92caf542952a91153ea7f2937c1b65375f7fbdf80ff810aed354e53da5d0cfba9edbf9110f36c985946b6fda1497f790570f6de501286269a8b163b28d0839e1137e2f896b3351a5b0816f1111d08129bc16072a02ab660c3be74c69a9196b2a0b3e93d8e62832d67646d3dc8f12ba9bd0fd4cb80fa5ebfcb9522891b58f8c5476f484c602818493ca8c56a394393cff52d9b3baceae0f66fd64552a9778b948d8cbdc32b2040fbb75705632bb6f3ff5225bb92721b8b17437342a34393de54357006e32a932aa9214c9e77843dfefdf612837786f6f6eee64f9c27da0d75fd74ee305d7eeaa605f0c06f144a116fa96550f9f746e5d707e194c67368c81677d233f742c559cf36d2d2fef9013c4beae5cf11cc4f6c5b7cc46a0e4bb256ff4fa72ebd4b5e4d28db58742c01d32fb9bd66d99f100b865a6f91972fbd0fc99722b8b237783e4be41b83bcc15dce86eadf50a95d6ddb93006ac3b0928f12dd9417d4cb3f61ede93fafb7a3ae825b8f97637ab75ee6049b6da136a267ac90dd833dba0506b2dfaafe5ac11f05a684e62ea016d96c3056aa9a927aeb936c1f3244edcee7b8b907ba6b4e8c31365abfd1619bb7a6292f5098ee2ac3fb13bf5dba4d6bb5a140dd9400674f5647b9b13d0c79b34a1ec707a78b2bdf375b4f253e61813c802b71226e32d58278273306f254749f82ee3146a2ba50bfb282c4bc0d6eda1a465fe8b9a4a97195f6b26621bac4dd0849922f0dbd6ac0983a32fefd98b90b113d13b07b0043a465c4d3aae4aa0b216b32dace68eebf56c7f7adb827f06b3a80254be622aab46d64255e252d6d78610ea46e8692d65a5c5c13bfc5a2125310700ffd8d47bb2bdfdff58cd14620d7c098496a59cd23de867797e5134f078f7222b4b65b65aaf5295339a35250ea14094301e0bb5caa645732db2aa586604944cda7eb367301f65b29b5b88a6ce2ab77cb68aedd153dd8b16c15ab47c8c2a7ae2f3b99dd0268cec5cab72ddb8fe366a3511bd6ffcb41846117e819ecd54bd9c881efc5d668dec3ffe66fbff0d85f9ef60e3d81b45766d7445ca562b995144fc5c96d9f5bde7636807050a620496b6abd09a03bcef74cd166e30c2ecb1fb50ec7a697f6bb845d08e2ce00d6196f838316f9dc08fe90c33c5677a27cdcd08a10765ed6a321f1f2bfafa78a54ac023ec3dfb5feb277f2788a2fb0114dd064ff459e044778226fa3c60a2cf83256a4f31f7e1bc072a518c49d45eaa3b8212b5208936d694c0244a22126da2a3eb3e800cc2fcc4e0ba17f25a208ab12398f484fb2a62577cf8c7e930b81ffe2dfef62e29f4d0274d02ad5fe0e6a5ce7f015034b1cb10cb42a77275fe4b7b3a6c7425eb3d4ebf3d3a41a67531af80ba9dd33992581a16ec09ee3a173569033418018deffaccb8f76c1e572f2d05e66f39d8c628e7a314b8309685758ac359e368ecec6146f8b5d97115ffb036ab18a6f2a41dc1cfce68474ca9f68aa0b876b8aa659687337dff79ee9c651b48473c0f3f4f2c362a99695d557f6d0302d23a046088e460ec7df9d90a20566c1b5fd54345ba66e82fc332a79903cd4e5667bb319a1565236b16355c5f2f53c11f9395bd745cd1918829ce18bbb70c1bb4b0156d776df466df07c010747d88b98ee5d1c03518c5b90652a0108ec6fed7c3a6441033ff4c70942f0881727a179093f6f245b817ca72e2f0bb9f912e8895283f53727735e14f86bb0072a881636f9eb9a5f244e38b66450dc5ca0e51df6d88fcecd9509d08c6b12b56214ea14a72e754755d3cf9e7a259a875e3c591d74a69e9f886fc302dd7b9ccd996b3bc370293fde8e1a371537b4c6acfb137325e079b3a148585748920577d2dc9a30121577d262ff6826b078dc5e1db023ffb16fc002284d5cdc7e7dd5858c7fcfedaa96d4dee3d179055114c319336924752e2dcc594702d371e679d10ba717d1d82155f579f9963aede737de9ead792b22882cbf52bbdefceca94acd5aaee36792b8196da453799d6b26e8e16857e45e8667f97799f41a4214e733903d903f12dfe09e06969b8b37b22bf7d0904b698f19b5c89fe6e9ad7f6381af502f0b80c0120f65556d721aedf29bc4ed1f6fb419552639e4f9fc469d120ed1c2956d82454aa7a4569240d271aefa8d8cd5a08ca65d23ad08c8d500e509186205c6e6be26185edba63d799b2467e365276ed375b7c4d30d93a2edff13498df6c1c146f0172615013e22694d11fdb7e8736418413cc8724612352ed59d9fffdc99663a13865b35a2db14c7bd2132b63b5d02901f155759995452eb2a691cb55231a2534141395aa1edb813b9512ee21077b562ce7667de1ddc0a9a8c9bad39973a2c60d0bbc5d60e81ad75ff8d03fade58cc1bb15040c633e231774c21f3d52d844fae99257543f24c20f9784da669b86bf5ca2c794a174f7c16569d4ca2636cce5a394b3c67e377f3b01a058ce4177ef71c4acbe1bffe5128fa122d60573179baa72bde4b144a8ba91d5ec8a5da6da7d1665a25eb90eb1241c47a3569cb96080af2a2fa59ddec813133e47aeb434f9f895695860de27229cfe0263edc13fe1452a94fa28825f60d271b2552ce71090ceaa44ec033f5a175ba2781eddd03f824b098e7b1810eb404c5cca095aa66077a3b1f1baf9fca0493d5e38102fde52385463b5c362d72b8ab969021826b094a43902bd34f96cf8de1867b34f2bb7e503bbeeb84d7ce9c2c7b9649ab588f089cc06a155826503e64fd6066469fe6beb20dc7c60156d4b1b22acdb86ef16d467744fd29c606d725cde6edeb81d9c41b56277ba46ad22c84652c3aef428bdcb592c13423f542b8c04d2067eb3068df24a50f009931962bb115a702eb094b85ac88ab1b6420b2d81c59f61bb67bdc83ceba4b2af416e30e6e7e78e06b8d19d8703b9bfdc7898e36c4c6b76df7a9333b5ae720ca53614b99c16cbac0c4215f96ff62ff28e740379035dedff98358b11ab4e7c257ab227be62b59a2f8f834f1643d54ad657caa68955994da5c60eba09897053ebac295a67a9f342350714fc702c999c6f280d7ff1a160f7b18231e51e8a1dd7cd26bb901a1026fe02519caf7b1af79016b07387d4b822780aebc6333ca9e08d17ce631be7990a524d40384300b7c0a50d534650c3342ba7eb326ba41e92ffd379662e01800185854c053644a2e903ef1ed4018f9286f8707863ec31a2d858503812e1c3c99eaae56addc843d32eccf90e9b746a066776070511cd1458d8399b4cbfbdde8b2dd94eb4668114b343620c93221e40f6f82e4101976ef0051cb078a98bea52d6a256577a2896d907319565c9a691f6958678dbe3b190b39984d7d5f29ae28001d251258e8fb787e2c950ecbc1f8ae3a743f1f5507c63fefcc350fcf1fd7b0b8c86b1f0aeccc8b1f9512df3f55432dd6c369d0ea1174351e41f824b3bc63d808d352b95aafb45fe418ced6cda9d9f4da7c7b5ba0271dffef95c1cbfb76aebd49588f20d86e2d834fdde4807f8d733c4c9288baa794ca6038fcba292a2528f2146e7e35ae22b4c7c9b98224ad3cd501cbf47d42847aea2514d56e276359b0388ac565748ef590eb086f0d1f4c16e5393e65c67c763d382aaf3a29a97d72336bda652ed636cd9293792cf21f9089adfa365b662d30eadd7ea2a4437043d8de9eb3be82a946c2f19120209506dce4e91e5be22f684b92c9b1e8a6d1ec8aa56573f13f1e326780c4d12b8c223d127f27f64b89099049d5d764e277f02b143835308c61f0036c0a461e0253f5e6c81ded870114eacd1c353a1a7b2ca6a536c34729f4d5b458347d71c824019a2bd5ac85af28198c392c8d617157ef46336eb41dd96737ccb6ae3351433f1a0cc74f3ce8cde7f06e315e07fd9a5acb3b914995e993ba69bb395350d3373c38bc23b663f2b4bcf3aa5e10c99d086f4605883b02d9810bfa6ee94494f80789e1eb798581e4165fe746b8947b0ce36bfe70c62c20bf469b5d3aca768e4b24dc3d9742abe82344eb85059444b51001ed39f70a775ec92f6c525bc8f08664485e7b23d8f9f709f4fba33f01ce251b0f34c8113f76a16bd690dc2e39fb18d8ee932abdf3a6b36b3dac130a59632150d38c78c151bfcbc7d810b0bc7eed3ae63f7e9e663f7e9c663f7e9a663f7a93d7643ae8e1c5b954868ee0c45ee84957b7946644bf4c1b17d77057745dff23ecfedc4234fcd8eb09fa1a9dc0a543bebf9027b802a904659ce85e789cc5be748202dfd8c274b3893fcd0a0cdb889981120f9ea07bbe121d5ba788fe92736fdc8b519ee97dbb74140e1b692601784dbc475c813bea77638421a554b011c8e94bea8d3b17a166dcfdbca83e89a1b974b0765a55dfcf5b20ad6f4b59c356f5dcee0589eaaf2c5baae8fd4aa95e1a4c35eca2d3cd770c6ada0ae13475f18a6e848eb2b46510316122fd113ac64db8b8d693a1b9a53c59cf1863998f435269e6cd15c6cd1eccd0a4ffa20739bd3482f8d4caf1b4e9a44b58dc2067a5a98fb6d8faa59af7210a0165943b5f5b42d4dd516da95b487764cd77694e0eb1591faad146e3bfd02a20327a66ec3c9321405574c4fa76217bee3d2b6d6209b4e8df05a888993271322662846e12e43255faa4ed6fdf741115219b6a82951e0b67aefd0b4f82a640f9c34d9b63454d210914c5569c8c28832666fcce93e48159ccb696692d44c64e7daed4e995bdc43cd8592e63758c36fbff01abafbb263a8a9fa9bd6ea50d55049e2588fb700d7e7db3bf6ee49357ef4bbd3d3b73fbddb3f3d7d3466e770ff1434b4bfef8e6d42950c452b671ce08472f683fd15d92decb4e399f8a01bc94828546bf45a0ba54bc0f98aedb2c0e64b07cf4b26a71154f0c576fb19fef527a8017f444f4c737d7c4aafa6de68eb347c39a54edf39244b3c13a65064d461c78a8158c88e2d2e3714c7a646279799de0e78a096c802aae389b1ebb3a97b30188a932df09875914f9153100d9339fe363b81bf70e34c3d6fbae009969e27985ecc5253fb9d2970f185ca7f6f118d4f3bbc97bdd0e9b3c7a2a7085fae5846faeadaed7a53091f5058c55c77ad8f21f53d4fa68b5d98c35c55de8b4f9fd035d6e7aec0a52ec8f915cb99be378402dcc6e8338e3504c1678cb010857239d9ea700ade18f4c52d9ac50a7c1661fc3a1f85efeb6c295fbd14bb21300064b296f9c41042237e7622c8aaa90ba963545580f0cd1586bf5a807e6c4602f774915580096eb393c46c057faaf178fbbd05607b27a78d030e64b4301348fa3be4a51eee338adb80f54616b5e3b158ad1b515422ab98cfc6cc4c08bcfe1ad1e164eb5c56460c03b8727db205be0b51353031ceb961d1342b3d198f75934d2fd4a5ac67a5ba1a4dd572fc3f6ba9e1ac1a7ffd9f4fffe3eb273bdb63f481702e10a552abc765b12c9ac7f2c354ca5ce6bc2d1a6962f11c363fb4b11764e8b7422ab76a4cc78448f12da67574f31a96b9096375dca423720cd2a466ff402fffd3b93fc14487ef3cdb332cccc1eddba6232642d89bbcd053555572ca11b569aea75935956534d5c9cdb5b9fbe889dfd9e1b6f3bfdbdc4fdb9b1baf53c11608401cc234902f2b159758574d518a6cd6c85acc8a5a37d409bc58d472a687425f142b77e5871b1bbe3040be4ac17e8f826b84ad0c36bf73e7c565707e1abe3a0ba665d69f46e4cc39ef53473c465c4c92a0392b4f4e3eec6d5b7b28d13eee7e4fde96cb558804ef3e032d05c75b98149e72bc3a67eb259e9335c8249d156f01ebf3a6cea68d782256c507593a311fd0d0c9e170995de37557ac5722c38c216db00636c0c87a250fcb1e5b8a88aea37ca7658c2262c3129ed9253c0b89d8eaa838fc3053f76465a9aec4eaff67ef5bb8da389246ff4a9b9b6b49f620c0d9ecb7572ceb2580636d6cf0024e361ff2515a332d316134a3cc8cc06ccc7fbfa7abfa51ddd32384edec7e0ffb9c044d3fabdff52eaed81084fda4ab829599bbe9bc603f4a0b4d77d5a6f94f3966ea57d7dbccc4f3b85c2c511be3cf4929f8156800811f7b30b74c0a013a79d542c4e9f4d634bf0017a82e9014ba658e3862d2021c0d9d85759d73fd973df6cd36e84eea0acfeeadf0ffdc0a5fdf5b61c7ebe20f21a7b50e8f927a00853467236866a4d7138d13268ba9c3ae345cc064b9f27cf57a327a880f4ee7913641631e32c7e8779a89f7ae3f3e99f263c91703d6b929f9a29979483d561737d4231f994e8419464a04aa0e1437c46facebbc0aa77bc07c562e6b685b0550768de812b85a4324dda39c75df3cb69969af391d9adffd6f9f1577947d23da41a82ff00f1187bcf399182b5c39affb20123f49128be071bd09106f2ad036f50fe43d327cf3fed5cf2df58e844a6a74e608606ace025cc70869bd46fc34c5a8b35cbbc8c54491f767f8805e6e93ab14e43679b54a51add2d5d7005f8c36206ac6864432ea62813fbca6471b2468e93d1bc04338dc95004c12a1bf12b79248c50fd73be9ca3ddf42541bb25a8e3bfc9e0f585345941963fac6b2808698bf1a012543b5adc2ba866ad3f4a8d9db6a1f568ae0061756a7210f56aa4053ad4edf069e36dec9b4eba8c9357c03ad50b7ba570fcfdc5cf7680a428586269e52365ca9a8e7ee271f08d407d35312f2e4a21b7fe68f55bd70d6b780c184f4126c441b5b4f46397bc20e8ac52db84661cfb677be616f78c6f33a2dd9b9882ff3222b66a9a82236cce33edbcf32f4a252c9ad28a9b3a42fdb80765ea5b1c82b91008254024abcbfe0f1a5d03911fb419460f6f7acbfcdbab2c06843e529ecff09bb2d968041e745add404d28a4dd34c30498b2f805500511153702e608437aa1d0087fda41a2926e0b683b3b858dc6ac52f5592f1da802eff5dd6f562b0b5757373d3e70076bf28675b1916aeb65e0d0f8e8ecf8e369ff5b74db5b77926aacaea054e6e195f2cb2340625f58cdf802de3ac54e13dd31c6c0841abb42aa6f50d2f05b493a472474e96b533791aceb4720a14c02a196dec9fb1e1d968837dbb7f363c8ba09d1f87e72f4fde9eb31ff74f4ff78fcf874767ece4941d9c1c1f0ecf8727c767ece405db3ffe897d3f3c3e8cb4d9a5b2c694a0a6725ad592b233211c30a6058285e8721ab38ce7b3259f09362bae4509e19d16a28478738a1285768091a2a8d3c6e0a0ab2de3a1e209e315abab2c9d8c779072186dc0e768c3bab1302f6ea58b404a2e536839688c38cd50cf332df21bdb9f5440d1bd5996845cbcd335fafdad7e7f2b2ee6f322dfe2a1b28d1e0f5458f0500bca15a20bc2d99be1f1f1d1e9f8c7fdd3e3f1c1abfdb3b3a3b3f1d9f03f8f5ac0d04c30dac6e1f0eccdabfd9f8ef75f1f8ddf9c1ebd18fea3a53260f86edd38e3f3454bf1659d66b238d253421f9226578d6fedfce90ffff1f5ce377fd8fa7ae7d91f9efde94fb0610c6f229f315ec66cc191fc9388c3a9a44bbe51ee85f4249c9fee1f7ccff6d868e335fb663bfa669bcdd976b439da604fd9297bca461b8c33f215d19c6db6c376d8b64e7bc29ead5b63d35681b12ef3b486b38dea120a852ca6ecec87ef601010c3f7e6328d2f595597c595d84c7875f9842d0c1202aa491abd460d51cd944cc4b5c864b9febcf8679a651cae1a916fbe3ddb4a8ab8dafa514cb6ce7ef86e6bbf56c77e4bf6f94a29586d6de1ad889abc29aa922abdb662ca7efeb32ccc92bddf9c49bd635b7fe9cf04fa67c5a6babd9f51ffa228af40bf946799666354036324b37ffe72fceae8f8bbf3979258fdd3b65ab2d7c363dca67b6c47a79d9d9f9e7c7f34fe71780885ff408bba593b7f34360ac677e928df7af284fd159dbd78623e30a4d3b6437843f4c7c600c3380955e57cd15ec317ac31ea058b746dbe0ee12e20a9c5070398cd792205d536b1a6a25281b7a822402c58209ef29b800abb4aede3ba3e72033b519f230c39dec3a3ada36426245ab8a9787ec82e04c6be3c72d8525dc8b3180bd8bca8b2e0305a2113e1f4820ceeb68d50754747e54a4d791b5fcbdcde127fe77df3498aa4206bc07cfc1d5192430e09f25c9f298c8d2798ae42ff919c731d0c10ca509e9f22bad8808d2744f3b34237bd18a24ad492eced52cd5075914b32cbbc465d75f3f7d5b18bf453a0068132a75445b261dd710cb6dc111bc7175ed5f1f1c958fe343e5ab4130e59b817d94e5167e84a8885716f259fa82b2de129f20aa203d78cd770ba5131bd9b1437a0d4c227c5b2663bdb8bf73d474b12ef34cdba0671c33ccdbbfe398edc03ffc4ec14792f8c5fed9f7e77c4b6a04f3a79d8b8f1d64fef974de7eb0953d60a7bc605c976ffd9376c806f96b68cd88e40d311d48296599d2e32c10e4f5e1b4d0bc6911d2bb7bfbc9473118baae2e52da8f5c0859dddb2b42a807169e4060384786b8b6d4255d35c9ab3e1114b0ac051abe502de51596d0b5c86b1aac04099e0dc62228011093aaa8a4ffaf2fcf52bdd5a9f76a2167fff78f87a5f226c1aa68a55d7337c9f55138a1386e1362bc6b31b7e5b29f7742261695ea589606551d4a423e7e60b91b7ea985081b9e56e68dc05af87300b636503fe1e37c35cd9e468a3ba9e395c11c56992bbaaa164e724924d3ca01ffdba7891be1749f799d5d2bb4ec5cdb7c5fb8139f23f604297d4ebdd032820371beb0d1e9e646bef39701120d551ef73f4f4f268ffb0b5236ba96af08b013d82de5c1ef2ea12e86ea710a2528041adaeaac358d00b400f956a80c00b12efae7e82c05098d74213c40457e0ee5b34697f6a9cd7a8f134a8778132cf94fb760eb1871cb74690f5c8e2115dd3b6f19c6096e6f5feab57e84301c20eb716841b54395be8396a2c559189fe0d2ff36e2bf9d078ca19db7af204d29eb0535115d9b5c001c9874009b4e04aedab42e0ac3ee6b9bec426b71656e54d2f62c6af39041bcfd3f9728e8e75b8bedd2426d7b68aea71fd184ce25fb9aebe7b2366855f9aded3639634034b442d49e15c18be8b6ca64f79f86b6d8f90732ae78d85b244ee6522eeaeb7a9ee6b1ecaaee092bbb09cef1f1fee9f1eb67834402c82bfef6ac221229881d99fec00250d70234f8af7ac5ac697a8618bd746a2309c2aad2b26def3b8ce6e2576239219a85ba29f535020e9dfb7f5d425efec3e7ae13bf65e3c4997f2a291a423c58fb68c004f16530fc93fd81eeb7eb3cd3655bd1e79749aa58daabdeae4097b16a8a0e6d1f460afddf624ad691d4a0e5eb00ab3506727c057906df555696024b0c08e9484e276204fed10b6c7be096423c228c949c786f5cc44b4b8eb06f935f8722846e76f869ebcfbc2e4fcc2e4fcc2e4fc38aea4d6c86ee323aaeccfc7861cc65e67695ce4f03f1fb0855c8a48ff184a9a87c3e5fd7d9a274e130b2ca2ffba0d9d8bf72ea7b716ef6bf89f5beeb5c897a4dcd65ce44b28a1785b225f0e6b31ff14f6956ea3957fa50bfc2e0c2cddf867e1ef7030c8465c0a7f3f8cf9036eeb4b0c80cdfbfa8b145076cf0916d05f947d1417aab6fcb52e5f29e31391290a0b8bd0145210580c60740da5cc27d572c6eda6299331efd3148a765e16cb2c394c2b79a1a8fdacd0d0400ea92877a9627679c1d3c57b6434d95976923e995dc69bc8f3653dcff458edde2e455577c71ca4f0b81194f85d83a23ed50ae3975e4efcc2c30fbf60b9f0375d174c316b809f74b23125349b4a2b008ebbfe75e0c2a666c6d11040d744d5d97222ef01b66737ec23477b1b15fa0ddf8fedade206923a3c8f2f8bf260157ff1f5d1f1dbf1f0fce875447b68e128ee1f9c0f7f3842ff03701a69e6f0f8fce8f87cfce674f87afff4275b485e230ef096fb68ea1e0ecff6bf7d7574286b995308fadc187e439f02a5019815957c3cc1674a9ca5f195fc2a7256a989accb743613a57ca1cd094f6ba1b4bc49bf6f4ede9cfc70743a3e1c9ebd1e9e9dbdc368c1cd63f4f8317b645a921f76d59a5c543bffc611e44afe96dde6682008b6a1e61c447608cf999ea7f19bd3933767e03639ccb871567e350748be95a411794e06f0ffd5d5e48bb782b9e7eeb217c357af22f73eb1ec329165e902e3ac3db2a74fb3c764251d547cce6f27e2149e9357f2e076e9f1ed45f42c3d7ebcfe60471b312f45bd59a20a8fe1229195ccd2e029ea8e137d4a920be7489dbdfd56fe953bcad92b896f461f66ca65691b4bce406267c89b1ab5698db7677da9349862121c876e0b3cdefe943bcfb833fdeb3de9996a44bf897e96f7deb8690e2f45b5647115f7d56d30599ad1327da6420bcb78c1f3b6c55875a18e5fed7f7bf42af28665f9be387c07eade0356c3bef0be837cb2e254266891a1b6a921dee4c9e4ac5ecf7b31a8d5f8cbfd67c1a0e8cd6b5277c29775f1a28897d500436158b7087c512f4ba12e733f57033b600db0450e72cc60a397121c08e674284081789b380274c887410b59d17f291f1deb80a148d2692aca6ac0d4ad31d6efd2eb93c3e18be1d1e999e5ad1b755b4d54f54f87dfbd3c1f9f9fbc31859695c048910a76b3e71cd4d13565049db1d002bc868b0b9f6cb3b12cf0699ece79e6f93157fd1cdc7f52d4885dd0fa7e7ddb1feed181faeb5ed58d83135273a3eb4e17d6bc3c6e3205cbc4cf0a23dbce1cd4606e38dac0e704399216aeb5f862bab8628c69cea74a257a8fabf85786a2d4b1b75ab7989ea0ad2df66c7bf19e2d789248bc6a935510fc6c6254f79f32ce26294cfe344b17c6ddfda458e6092f5351a9bd2327e03a15371216630ea5da1db06760318b33bab5c5aacb746a11bde5827db378cfaac28ca0623c0367543684b97668a93e37bfb10d2ac4f144e9157d228ca3fc6e17d151b993ea82a5b3bc2885f6daa7e80c45c47b489a9ad64b50bf36f61eaec2a89ffcba5856e2b0b8c95bb28ee485d292f74af06be1e7d57c32447de0cd1d39988d68e38b9bf9dfd7cdfcbc489699e8ab705cf77983972bd259568255759962382e1bca6b3c8638bb4b1a8909f71ac6ee657b9aa5da55d1bc7a5e0930b087e7a958289de643bc1c55f85f52219d2ff0687065dc65daee6fb9799dd65aabfa734bf676fdb022a14a361c928d2a2471be62f20b9d9de7906e03fb61ed814cd5d7f01d9d581b232d1c7859853c4487e1ee0075c9ddc04aab5f171d55a6f30ea507bef8a01bf7d8b3ed9d3f6c2e4a518111c00b1e8b49515ca1f8c0f0cdcf2fd34a47d4898b0458dc59537af07a78ae93d914d454d25c66a0b401f9f1281ac07454ea4055efa254fc7edb535d0ac36ff6f6a61ecb593a4f3370a5c752b90f529ed76cb2acd1543c2b6615e3ec8623b33b35ce3293547b39cd8b9acd45ddb7c35432e265853280ac98b1b4aa96a2c24065a0ed0828bec8afd3b2c88d1e4d5ca6751af30c9a5af0fab2eab353312fae65dfb2e3ac9881261bcca0bc501665912c71df398ddda459868a507af22af95467c52c8d414d665a80b816b8fb32075ac42ed57ca953313e3cfa01a38294452caaaa2ff2ebfef1c9e1d1f8e8f807f41b6b81e898d3a4678c20f72aa9dbd3b126c0501edba77ec2ca34af7f6c56a7e9dd6951ce798dbe411cba2dec4444bb9ff43d89c8d27f613bec39d4db643b6c808e5eb0bc13470b2247a1a311f03312743322f3c17d03f53412723402ccad7236544e2eb609a53e1755c567f2a2eca8e10e58873d6538e67e29c0dd6c77ebff565bb328c492265ef367d585eee5e9d3774dc7108ec929a851e0929ab7b71350b40095ebae02b311daa92e6f1dbd80cdcd4df6a3c8e2025d182462b2c44d8c729acdcd4d5218ce0fb4cf6e78856ef1738c741817f9b5c85391c70275ca780d924379da8cd41054b1497b7581ceade0d4f22cab52e3a08ae3f994b5f46685d2a5554cb05ef98f82436631afe34bd67d2fb734c5df57ec7e737744ecb36ee26766133f5bb9899fadbb899fddbf89e5eec141b49a02fb53d8f979c544f4fb7d988b9ff5834def5e79043afa6c68b83a8deda7cdfab16d0209bd3f94380849c20becdef3c0e3ab0b853122055c9b68fd8f5f44eb5f44ebff6b44ebbf69a14e14e00844ec6d9d66555802eeb69256d0cf719188a3f9a2bebdc71ae723a4e6f708bb118539e7b34f91629ff359ab00fb9ccf3c09b2f63bf6f1026c6c0c1d611539a08dcd78215d6a34010bd2aff8540cf3ebe24a7489172dd344c44444dd6b998bf15ee752e77cf62f90a1df27205f43c83e95c832e4ca5f9f2c3b373c540d3449708405e5ccc808ca19cd522c492552c78f87c9dcf5ea6109b396b600bc3b43333ef3498b00fd85d9f26750588e4c192a7257490171f9f6278aca1dd9b82738972bb74a4c4ed640cbcdcb99faa96638283dd753875f669ad4a79c162d1cc76137a4e3f2329b17d72a08351eb9b47aa10e4157b7ef0a5d672b25dee7fbdf7d8c35cd4ad9f78be1ab57320b4e802f143fb555e95ea6c540595116c0bd4cb35e0f8f87aff7a175bd9769f6e9c9dbe343e3147795303aad5ea933836747de7d66aa5629f65227f630dbdf2eeb1ab63e5d9de72de2b30914760468f2461b3092356a4ad6c86a8d4f8f5e9ffc70644a19ae69f3b236828e07c87ec175eb665c1655454091b9672093d6f3f61cde47aa5c3a20295a1bd54824946f837584bd5ac2789f22404802699790884834af97dea5cfeddd4298c3a34f550d78e4a31b5d2b7c6c91c1b76b0e38ea02a355ea0164b033ed3005a7d16c012bab5a7f6cf6863203a45b7ea555897cb0d713ec9cf3992bd339e7b335c53912ab6a5545fe8f2ff4d2177ae97f0dbdf471aac80fd62a66da42de186243702e9006309183d3786089d5a2aa2b76532cb3844d045b2c4b91ddb29a2f6b388731cfc06c72eb094bab9ae79365a6a588b9a4a72cd3f8a0c8ebb2c8be2b8be5e2534828da4e2b2d450bfd2e0ac1b483cf63f4fd7bd22cd7a2041982320a575f0f42bad744b475db0d94b72c8a7a25027b70727c7e7af26afcdde9c9db37125b9d686c75d28690da8c1f8e4ecf8707884f9ae1b1f1248435aee3bdec6370163242fbce9ae7da7d6327ce1beb6ca6f51e5b5ac57d7569ce9acfaf7334ef0232dba68cefd9f6ce3711fb895f16c52323d4b3f94139deb1b861df9e1d9a8bd6dce73c96b710cf6fe585ed08f4e08617e5dc1340c19086554340bc995644787b7ab47f702e51d8f3e18151588005510250f02345f45b629b1c4ea585a9160e4db6cb475267a23e0c97879c32bd160938367e511673608aaf2ee2b7324fdfa7394d30dec1485a6dc6856eafe41c7d7f7cf2e3b13f47b90b7ca68c9e69e378dfd15902a7597e022d612e54272dad6f7d985e9c9cfeb87f7a383e3d7ae143d6f9ea2b944c75482378e97eecd2783365c1787df4fa64adfe61f396e23301d0ba54e73fbd39a2f0c8749a76a14e45ff4551def032391553791d0666d3d54d98a14fed34aebab11722229db2ae6e35ad5e8b79418af8cf2a9daf801a8903aa69e5c2cee83bf05aef1c5a1ae9c28d3a60956cdc74355733519fdce43a11313353239019ac8651c25b2baaec60d54351c565baa88bb2adb62d611b2021209c6a245d15469d1b936e4b9ba3e9aef1659156f57191c362ead546c51ee2ab11152448c224e3f1559656743f28c9b0571625c4e835d08a87b7b65852e49d1afbc7d095588675e56bdab3e867652575dee01a2120206a8948a8eb6a2fc886075ccf73b01b6802ac391aa97250edd0b035a7b5d9309d596a3ace7c6d802bd4270becd8f631ca1106772a015db52bff680967b04aa3978668d5eac3a9f123b82d93e1f8b881a683b55ac7160ab17545b5e59e3e4dbdfd8212ee2ba32d4737c223e7f94375b8c78fd9a3ae591ef9693ea0400f4bb8d03f7eec0e87967467e7f16377bab064c3656c422f90b69bc39fa7480ed3f5d4ea285ea823b90fccf7294fb365a989cc52f06413b49bac7b365acd8bf9d2d8e3a0d56881766229688d08a1352242bbdd5136340db7aa23d21261297ce86c4ad476b461715b25d80bbe245dd594a46aac2e9ee1f8aaf007ea89b64827e0a1e31d829a1a22df165ad669e695e983e892165ac8597b99567551debe16f56591389a4f8ddcee1cfe10ada9a24c67690e64df2596bcc032fa1c78a99e93075e0bd7bd03facfdb33edb6d0cbe48ca3991b2aa61cc9df0ac87e5dbc2a6e4479c02bd135970a94c600106c8fc15f95a3425948044a8e1b9b82e27ef84e80d1505756a70ca7bc9f5607596a119cc02c7616cbea12106da547122aa3f4ad6c3183a62c2bf1aa88b58ea9994e92dc252b3459a61962f5b4b04ded2a9b3f379e9d2aaf560f278c0a1155c85653c0511552d699323f5310f5e537e50614e03bda66178e4f65f9992379ea14c95d6ec46529a64e91524ca9341236112d8029d4c886d7977e473acdb1c5291d70e537cd964f770c71e36c1195460d8d052f63675630c5dd5f56da830b33d03f882f275e8b0173174593502a7c994e96f33e60ceeccb891c3067c6f5dc0e58639651fdde99599cc501f36653cfdb80356650ced78039b3a6e767c01a3385b332507f4746ee6fd91986d1a5eec2feb2c293e21f42f69c6ef54e56f0a4d3b37ace668a314741a0a77207baecb9f30e0cae8bed7704dafacc66ecbc232016f9014477a2274fa735ce9d5a7e137f2870447b8d4928f237c5a2f24fb74d6d70264df79d852ad209b6baac2e43cdeae455edea32c1864ff15a0bb44d7356345f92625e0f64331c4150fa50b827b5418abc8b377ec4ec4c4464e6f4ad1f2a6f4618d1395951c3013af206ebbd2f41cd5adde674ba26d82d5556431eaeb416f0ea7cea38cd763bab27f66e376c3e405ead2fd2b92fd2b92fd2b9ffb1d2b9637e3de1e5617a9d269fe666da69a8553ee794fa5d04744e0fff2ab7cc6b88d1ace0ec5d2314e7034552a3a60c2a20573bdeffe1dbfdd3f1e1f087e1e1d12995878db44e8901dbc361dc395c4f30e5d47125534ed69aa229775f7ed111f9f20a7d7985d86f6c3f4b6760d5d7168743e7ff2f7abc3e59b3843473cfc3f5fbe99590f63f8f9ebcdc084a4d5efefccc1a276b286b837783d5bada9eaac8cac801ea39535a223ad5ec77d47986cfcfa7fbd1f6d0126f45f60975753efcc7f4213a1ea4867a489d36825e4060e4037b3ff45f1dbd381f195f1dce4bfc1015117ac4bebcc25f5ee12faff0fff4e7f4a5e0e028e7931f54d5d03d4faa2af53b3eaaaa87ff32da9a9fa073f9af251d5f1eed1f0e8fbfbb87745cfdeee9c97fc8cba7ea84884895f5a0c74b6fe89082e3e795018f959b15e5d5b4b1bb4c82d35b2a2ae3ea6ee1c4be0a693da04166c849504081000a5b67418ce4f645be9c8b5299a285d33f7c40e761a1ea71914fd3d95237a0dcf860b174cabaa30d98a5d106fa39310a02b40df9b085ea87d744cf1169a045fbe0aea93d60d7e2a0c8abba5cc675514628e552babd15e80a84a28fe932bde6c291d6ec0543dbed11474d4e0fab9a728171715852cc8abbbbbe87a4cfeb4309be5ff00ad42f78299a0ab8535ed59b4a21b2d115a9796fafa46ce36081f8ff2504dc2d2bd7931316d804d580cd4b55a4b3ba8555b0048a93c666a23e5896652a9293fc55c11317964b912d44596dcd44bd1963b1cd22df4431677b23abc0f1cbbacdbcc9f8ad284f1675d50ec802ca6c168bbaeab4d5be07025b903acacad33ae559fa4f58da40e7b6402758edeb55beb56ce34eddaae65986e09cc1d96feb1a0aeab1e335d159ddd24a575fcde2ce569f17d7e26f37983d849037b108438665377fb9d1b0a5aa78e7de06579fa0500dd264256a9dab2ab56c994ad4043a45733a3b27d0d42ad002c549631e514b0052399bf094755aaaacea989623d571646f48306dd2a91ab6ec73535ee84ec75ecd557d7b45ff2dcee16c7780c61df02c3bb814f155576fb9883e2944e1f79129c1f48f62ea9435cfa475ec23c789ce7d461b073c970479ccb34c52d3801581f7260d92a2dfc121a50beaa2a8aa749209d2db294c46b712d934823629a8323500cda9988a52e4b1010908aa4b5ee59d9a4d84c899be612a91b04d060446b7e794007b8684804a560686f6f8b1759b25bff7f6f6d86803d587471b40973472c90cb0e79831607210cd55535ac455b75a4e94377b00137e07f4b34d1ed04eb42bd05675b31dcfc9e1553c033a4c11fc122288dda8f8001381d4595192658d800f0331951a4039b3a847643127abd08e0f7097c0eb404f912d057e6cf7ca80e2c480ab9bc9d3e916cdf53d226bacd473024c115e8dfb5b6413c705481e591c3596ca55f17f1e4e6f59600b7b7f3c865183073e5bc4319670c8ac0e90487ffb11af5deb8fcf4976e3031e78962076fb399522366e68699b569c925d97a4f12f2124e39d1a9ec99c7686d37e25601b2e8064ae3e7c089b54b8157abdbe3c86aab185918a2ab0811ba0f5a3ac87b4e425afa07ed2f0abbd22e3455aca74ad147db74b3b111e92dbdd8ec2d8abe604f7d0554fcf696599a7bf2e05e22843899f76ec6baef020c77000c9ca65255eab30b114c9a11604c1e69feeb1ce66873d55d429f6334c7c9b01ac7b9d26a238051d51e25202f308c627d7dc4feb4fd23c090d57a2173fd8769b89819a6dae8a2815efeffa0beb9077c03a3498f5eb6299d75a57515d3ae644340a767de3964af781732a717cf042ffe8915281fee5066775975613efd3aa4ef39941829322067e98dcea8a1df4eded30e90616adb7eb02f0b64af35970f51d6658eb1ef14d2c56b6f8f871cb901d83087ff9bbae8d032e6028042318fbdcd3bf3b779fafdf472b1a86b31c223aec59768c369409eac0ac6b44730b2005e55d3ae1c6810c01db298c87feac8c077431170408a7b8bb57541d37d116bfebf96136c928dce9e81779860433cc458306b613e1d68b1aa30b1950016bd239a2e8d9debc5518cabded98060b7773f1be76b9424699fe459a0954814ddc4302b22740b0746548daf5eacb3d90a5556ddb7804d3d2e09ad869f1164fd68e482f3acdce8ebae63c683f7c08f4bfbb62229b81fbd7b9ec74e87ce29966cabade95264fa397d4755e8adefda7f3fe9d60c0fa31cdb2b7f97cadfb9a94a583508b1424cfbda5d26388d4107bab26998caa0d3467e0ee861c2fb4542124ba604c3fcb804d390fb57bf45b2e785b6dcd27600d6c424d65889770df95a834a143031c985fe13bca82096a07c49ed4e0023a73a171e4d51b345047b1e3f43547b86ca1c36c5b506f84618f05e7c1c03cb03fa9e90b74a6a7a19121a11890df6662566f4e824eb5ee4e52a62bbc504aeae812fc4f9558d52bcaeadafac3dc80b7ebb0037c2d21eb24e97527a2db90fa20b337ac15bde9198a1edc729a045e5ce7c8812d4f0363b58be2ae8a91015209a046a540168010f63d02cd258f3c869bcb4d23c100bc5a0e7949be1a251784b1d6e09891f69bb607ee7836a28d86852761d465e9648bbf4f8baad3fbe276f98b72ca7f53e59435944ed6d55ff98d05c38047abbc31afe386f9e5c9f9f7473f9d8df1eff8e0e5f0d5e1e9d1718b0e0b38edaf7c47ceea8e3c99ca5b607d3fce2fffe094bdace719fccf2b55d457827a87deba841428653402d62bf5bdb83d28e6938296bb5269a1f6aa730c0cd4685665b87562d9cc6b5ec797723966a2d6dd391f67e02e23620b5e56220410f6f04666976e0797692214608729cf0a793845eda4e0bddf84177389df6b55eb53b4815413ad7a402aff77d100526d3f40f7e7520f58a9d61c28e596fe9c2f28f165747f484390d6c4452019abd9a01b10234caed7e496cd40bd122340f26c71c927023c9965b7115b946921afd87f0a36cb8a09cf2a8dbd2a48fbb2156253c92336f1e82ddec7aa207c98a80f070bd73142fa004a3f2b629e09457c7627981a44a06d45ece139dbdc6103b643a38be8a9cd78552b656d3f1cb04404e59c5fbc6bbafc1883f64ba4c70bfe13d4ef5d99f9679b63f462c64dc5182c64eb8e772ec64433065cf148e0745c502c8643f7081b524eee4e332e674a6148fdc5b2baec8694b45efe21721d7400ba3bda80b6374178822de09008211311387bd4e1069d5f5b24b46af7c106435fa53fa6c00d4178a757aa17761a73af4340fdc49cbc7afbfa380aa2e30f51eb5ecf655f84637155d89ab7c735cfd284d742e3cdf6d8b9620eefee9816e5118f2fbbeb5f1d8a85ea3c9958285260f94c1137b44acb7bdd64958447bc9eba9e2aad14f54cdda082ba75e3bc3df2d5d2554d205e82e88ba7d7a71fa53b1a870ca205a19711d56ec57e06d1cbcf16a3ff2bea55e1efb9984f447932656395974afcfb0ffd9daf1123667f8d792d6645790baeda314937fddba42832c1f33b761ae88cfd55bce7f345264ccfe37e9dca5dfe2c62e37e552f272f646945226c6db1bdbfb00b1414a1bce89dc2232d7352d7e9bada015a438f4482d3ca00b68e9c28852a41903478f73bfdadb1fceaff5229678fec50d402b0502118c43f9368ffcf8af4fab94f948565912343922939afa1d1f6580705e01d64b563f2e3c7ec9126f8f222118007dafc95302015d800c1c411a4f03c7eac019aab6c171e952ac151c4258506935c602482bf2816cb0c1cda4a4cf56f670c101ca0fe7e766954074accb25345a07efc987c590277cf198d02e4db659ad59b698e2c10566acd868af6f5ed723a05e4c6edf4392c7a5fe5fac13419e35956c46ff38a4fe54caa62cfd58f3ecd2575a97b50b879212e5756e44292a5ece709d4a6676f51a6d7bc16ea83977cce7ec33eee189666e79742ffac0b6cadef9437a7ee22ad0e8558bc636740bddd32ce1221164e1d7356752ffaa8420430593051bd5937a396072cf3b162170b450cfb244a174e823992aacd4a92da5d47e34105f442373daa98e71bc6785ba2f3fe9c7e75b106f8e41737ba19a2fea00b40cf267b71dbc5b61d5710c67152e8fe2073406e90df249df2a2e433f934fd7d29cadb43259ed21445872f8a2c2b36253597d6a9a83aaee6d3afb212f8332d7e2988c213782359d847e30ac24e774e16a2047afb506e3d88e5a5198285ce1ab00eb4aa33d0e78d757c872dc907ad13599c0fb8899def442e5b1109baa78121753462807f2b910980fd4cd403e74b0ee364f20b8cc2be6c309265dd188a9e290d446246540dd845b178d7781c8b65dd500a9aaac9a75318c19d27874d2653166cc0a097ae399bb285031d2e2d3c7b89bc26ed147ad3dc32d156655e812869b5ce78fc825fc1b5dbf1b192ffce8b28e77cbd656c83a0a1d4554c7e8167a1932f25cad2214a65264bdd8cc13ce59f339465833bca5c9dece885a91118924ddd65123e083ad84f2b0c3e28616f7a4e0a8ef162fb5de36234450d25c89c88cab279834a5bd419a21d130a3e17552d9233919d41ace63600c0ff222141a7a9c812aadca34f8b4cffe80d7f256e2d61a47fb9fbd081f7c3874634935d6ff32ac20de05573d8db6dcc210ededdb76724b3e39f898a9c88aab17d69bb54e1ec9765051eb2e5b4c091d39d068f8a7b503ed7250f911bcd4202be78483b22f9181c38bd16b2ff77c16bc15fffd0a4b9d376d1dc0ddea601fb5cee8212dc4caddbc9de73e3b1be443b942940bab2feb62fde91f4e0d803db71996566cbbe1b51c993761825177e1f5ef8039086ac327522e5bae80754669354425dd725cfab6951ce0d3e415bd63a30fe0da3d31d42f69e0e5e14e5ab34bffadced978227fa14d8868b056c9488c91ff3b4aad3d83130b2c924441aa1ee69be6390d570a27a9956008365d4c071193005421f3ec9d389a7a5b2054c52d4ec7d407e07b907ed93a2518eff6af3d286c86ad8fa1ad38a989f027ca8874da5a4c286892d91269f6f966fcab416ad7b8fe878a71596b57391f09a4bb03aa72727e7e3bfbf3d3afda9e3912316665938fae4ddf5d081adda3f6b8d2d30e52b47b6d67a7ea64df4d0c938e43577b5b6b98300a52a50634a950c12ac34e630ce50ccef345911ee1bdc7dab77e75453a80a23d4653c9fd38de28163484f45eaaa21d113e16a5093a96fa01fe449a44a89ae276a3a28fb9c2a36160159f1916c4a9f94460a06890db9229d5db76139cde7c58f72c1ac5543938f6e5b1c90df16678476ec50ec1ed75baeebe99a38d3a8f7d9a0493212f822d273cfdb33033a100396e1ec7bea9e163c580d0a9b5a3197f487c1057b6c7635729c8ac2c54e0e896705abd34639a11420516e811efe946bd8d528cc6f773d8fcd4c5a8fb041e4381b3688968bc8f953d24ec30101d949c711cc138cc9e393c432b1e34acbcf4555834418ef1483d0464c776a83cbfc2071c32a626975f4eb926790f59aa739ad456e29821d470cc5263aeb355f444a0f7698c7d93211b25540672375637e2f402e20d750a5a7d530cfd2dc3412b1b92867e25088051086444a8be780d49583d088e9309f166eb3098c2cc21801452954df11ab0b9397567fab8adc160c1012b2d09bb24896ca3ea9226d910e7992e8cbe4bc588ba765d6eba6e40bc62bf8fbd58ea9a32eb1b9bbb6393c25729e86fa27486dc8e6d934853a2af4472d2ab93acaa9fa6bbe50bb1d6e70cceb57a2eeee44ec590f6e72954ad841954017f5a4bc3a50f2cb3e3395a8db25e4bc9cad16d52aa9ac59f336a9ac6ce8629c42105a5d96c864cd450d50fb427fdf8cc34afe29792a078a94b09cb433517b937626ea3e4f92eed776c6ce444d668c2789993155580d5b7ed919e349f25f68c600ea8f9bb16959fc13fc9bfc667de82b0441bd61d352887f0ae41ee9016b54c129d2c5b68c9b7c831fd0ed8a6522d56faf9f884cd44e55fd781b2c478209e78d4cb8fc76032198712a99e0e3c71475345cb610e242c003c62a309e1460f237412ca669ceb3ec36a04ba1021e8051194e0b36d490c03a689f37c7382e27b147f9629580280fb4944c72ca2c4a30293bd2d2aacaabd0c877e21a5cf26bf1232f73b04ed04416e561c25b214bd0f8063caf6e4010f5c8d6dfb56cc347f8bc752db7d0e9c6380371ad6db1510adc4bb12c0145b4cf571d5f86d57bacbe514b25c29e682b420ebcc8ab65294e054f6ec3075f01fda62ce66925a9e0aac8ae8d386877ed8e629e7f7bbbe05535ccd3965b591f68336debb73e87b3455b4df5bbea080322ad78ef5c6cc02ed6397d7855fb3351eb36fa69d273288d47ca94dde6e3354208cfa6fa14710d73e737d62c1de403e8e2047ff7742de83676142b1665118baaea8bfcba7f7c7278343e3afe4119712f0c468166dee6c9eedfc876461b3f15cb4e29d8b24af39941c02b96e6ecb65896800a8326f264690caa55d82c7ead22245a8c643082abb35c0a4545ca7751b6857825434a246245091ac7bc14f25e933dd70568e90ac60d10320d545fe59281ca71b14429b79da13e74c8de648257822987ff3e541a169e272c45849192543797c2a8089319a80a745de6808eddc53c673c8e9725af4576cb707f9a9a7d6d87ffa98bd339007f697951cb2b3ca130173933ec864ee3183857f8a76d8fc3a337a74707fbe7c39363f6e3fee9f1f0f8bb4163b3e8b52100a6155be6d57221d14991b089b8e4d76951a2c5fd68432ec54d9a656c2254b86fb9346cbaac97a560d7a8b05eb162aaa73f86e9ef838e399e03364ddfa39eba6c4cee33bae472efc86d981737ce7a34d5023b97fa06ea848ea47b2261da9cd95eff2e6839be1fb53aa0bcdcedfca40e112e081c16f4bdd73583ead9f334c79b15cf329cee0e7b8ad28a54547045f23467cb1cc26a9418cb7eca630123aefaee51c0f5939b7322b0215082a90bf7682cc8c160e7059bf32b655e006360b382f11b497e2d2bd58c1cc6cfc3bc2e8b6a813c7fef69f8591231e8516b82fb4656498ab81a600b9775bda88c5581847956f2c5e5af593f2ee65bb2e01628af6ff1e49ae7b148b62c8c97f53cfb3ffa73534d59a7a125d8b2793cdabfed71f31801ab06bb124d5855b1c17ad4ec6a79b01e3fb6dc46da06d0f1c8473ae435f7cda2b47f03309141420fd379590907186ca3bb56272ee328ad34c2420f528887634b061f5428a37107fb8156f6d6c85e955f35959f051759f79c3fb7c7bc4b87d96383969cc8aa4b688001cc6e8fddf04a398761133195efa85f32cdd3badbeb5029f3c7604c6b22391f33093e4e3468cd8b9871e8e3bec96c22622e2f1872932f74b4d6b462603e93cf06f83cfdedece4b88fea08e954690cec7efe3701d8e0f2b69610a6f94c9ba2054fda85d3c13b079c6623127df513fb699e88f727d3c67cfe856deeac07716365f575b7e6e169bb26dcf3d4cc77ae22cde5c7ebe7b73b3b15e18afdf1b88a2fc59cf7f1156b2a6778a1533537a17f25912ec0fddf1e0f4f8e8d6a0ac9181e9f1f9dbed83f38eaf47cb1825eb4be9ce5778a71efae2bd86b90917b4bd673a5ee6af6fd52d0fe6e58a630b2521b970a43f8424fd6aaa50cf1afbf17b7c745b25abe4e0b765d511871564bcc2d200b2d217c8d1eda16d95a59515c2d17ff85d85b54ac8bc0a1fe9165729908fbab4604959c617199e22a13e1fc13bb702813d8e9a09f4106a36aca3f1002ba442d5955ceb78fd13a56b2b45c9c0f1f58d77cf84eb1403b6bad81928e9d81bac0829ab2c538ccbe9140347692663ed3574d8d75ce17f098992192774c1621b33357fcb56b7cdff564891b6f43b72187b242e888d1dade91bae4d5c94d1e0899ddc71c124a1c2b1c8ac579c9e3ab349fddafe7e21746d116c50f51021b526450b2d9c02287de35ed114bed4972aa553b4ac06b93c542c84b550927c89e45e978c07ade34778145cc1124f634495a2d8a2ae0294d92217a1d88ad3e4d6ef66cd56d20a7cd4e05c7eb4f3655f129701a5773caf4f09c2db4a2d5992710f1c027d3acb39abcf6e67caed1b12f89c1ea116b1ee0224314529f62af37bb0fd18000429cab2a3e2942abb23deccb252470acfd242deb5b6fc4776b8e0cf9e9ab6655028b47d3ba66432d0db54928a9af9a6bdbb89f0fee3813bcc57e542938401c46727ed7685455729acdc54d03390b9e7d394f7e61577356e7069eadc04154ceee446d769baaafe7946041f627edcfacc29a3dc20b41975a75185a680ba192c8b8cb48ee8c157a0a9f02eccace57aa2bf81b803c50d4353c5f66f57151cec1ff4b02255ff0b82ecadb6e258c8b34fd108a9be6db03c5a8a00484e792a0bd87e941ca756375579f1645ed9c499a117ed0dc128167fd61ef9ad71cfd244848a987479035749227e2652d60685a410ecbf61b59441545e7b90ad55e45572bda001ceab2f1f8fa3c24b3a48dda7826c628c9d5d5022ff23a0fef983b9b594ed0af0ac231f734f814544551eb9765ccfbe6d32ba6781aa4244df10a6b5d3a545cc1e26e9a5761dae0dc8d797fda20a1dc2b850280bc16eac9d83f356192502d38dd738a7ce8e264b1662f910f6ee4f33ddcb1f6223bc98a0344ae321f436a418dbcade76edb876f3e52ff77de7e9ec9c298f769cac76d46398a035c172c48121adb84e4f57fe72de38c8cadeed8cdbf6f47d1b2bfc3ee5225c9fb10527b7f51167328b2524f17adfceaea8de2f77a5bf00d2feb946787a00a08fc30054908a54ea753e8797fc6e53a41e75debafe0ce6cd8c876d9ebf58dd5a37da3c3430b76b04af9b65205e4368655b413bce29e35bac5ee55486fc14529aed3625919b6de98f7dd3452783c51e7c39fd1c85f6f9227ab4cc883ce9ea39c6fc0c613da766ccf9eebc70c126466ecb642e5fbb2b538a0a1aaf6f50b3dafa10b5e67d2784be095dbbc37d374465efe5f5dcd49b61750a7c45b9c3033cc3a903de46b5a76bd967b91ad49f922b1b982cc1e874d3160eede402c5259a78918bcfac1b81e3f56bffa7e11f6e1836b4d04d7cda9402b9f2ad0825b40d6f71d506b6cc9d5d86ea0230d2b0a77379bcb66e0b36d07ac933a56516932608d6d34d3869c1e5bc16a940f58879a7752f3277a8d0ef45743ab1f5771c09ae7ccdb7183b6fde93dbd8abff41a651da04e2ab7909dccbe1283a0bb033f553144d95fd8b643d5359a7cfc983d6a9c5bf20a059a6ed234693e2d1ae4974cecd745863ef17bfe6ba03d8cac2f649248bfabdedad516eb5e3208963a4a1103cd3041560420c137f821792a530b088721f77f489c04350aa56c07a7833deba1af124751a1417fa00b747a997a420ba559ed158ae8842be37ad709909f0d41b968138df7d6637492c711cd551a4d92bd3f5f48a274c01ef91b879ef3d50f5e8874697dec56bc686b206a6b530c0fa216f4d3e7234cad4f4ee0d95344b8af2e201f4272e0e78e863dbe2eaed67de371218a3d7b2d1af9ed75502ad7d0d7ef9a367bde3d7ed07c7e823736e9805e788bd5b7aabb4a6d57abb73ef7ddafeda85e8030b10f916bc2ea2e4c989c20af54736f92c91bd00f17255eeb1cb9c44deb490a323f1e441dad71e0eea18ac2fb2d4c842cdacf711b55d382eeb6132e8e717ece33839634ee446bb37ce7ea5a484ce7bc782dca99b03e0568ae55c620941708b1423413b582637bba098ccd2462df3c8cb6d0d07395b5141623cbe2d56305a87a9f60283b75976bff2dae59de987beee94a070170de23328f0623d90ba67ef84005baf25f17c2a206caf6c02181323718736d2764b257280896f4216bda7d101e04717fd0c4684ce67d53f3c8316db2f528fe1e104a85468058013cafa4ff067703f017b373dde51cd38b0d5bd2c88b55bb213092a3d2eb35d818ca4a8376d86ecf29ffb9e703bd4ae0224b9a67cc2fc2f65e64b4ef604398fe64a55e9811df080b412f1ab6e7ef7f3bc1ae6559db4c33da962943216900e0542117db85a90eda1f7d907eb92741ed255dc983e4f745958f0b0bb7844fe1ca21a0e94a90b5f0d83efa4e330a50643afa4e06697ad7adaf35f75630acec7ddaa6cdf783ab35a0a719daf6a6986e9e234ab08eef4715f09f8b3098f1aec3790c210cf86f35daa0e6be17d84a6afee469b54aafe81ece1f64f05aa7bbd99d0fca096b9688fc469855d76befda57adf2c94933634a9980c2200b077a8553a3894f1a5d8dfebb73373426b929778d3d7fdf85e7dec8cd41b7dc671efd4f5f4543e8b946b05db7774f418034b03e72f942b92c72ecdabce7638aa6adf4e9a078e77a98d8c3913d0777d314bc7a2c9af708d1226bb314eeaa8104f96c725735f1421043b4bc61e83dc932e0886f9c568be426084d9cb3143c516ba676014d29b26b51b62d121a36cb6970af443c34ae3a95eb77cbeb34c089a084545ccc27692eec16affc062297e25a4ef02615097637d5d6e0a15e9b580a6b5862e12ea0772d5502ac2a51d6f4ee7e5194cad87b75d78d98475eb1102ce19698ef026ddd263f699ed7a06c9b33172468c32bb32e75bb0e79db1c5cbb7ea8700a7dba9a28696f1d6d5140500cad433461493b019ac2e67aacc0268fd579fd6c573e29e595a054934a8a020cdc3697cdeb7008abfea258747bfe06306fbcfa317a3077d0bb129cb59f526711ed2f4f2bc7a3b1562b4962504d0dae13c9f91d162ad4fa0a4297160f53bba57d30b05117c9aac5dc6749d762de74d6c8020e1b599372751f10683dd4c40a7ab5ed59906d851f8106102bdf81b56068c5f0d7be36bdab13a0a779f7e3f477e101aef38ec1bcfbaf964c6c510f6f1cf58f38d8aa2972be436a68eb404f75505bde750cf4a9eb6105a22ef9fb91c96abbd87d0056acf2c1514cbb620af81752cf0058dff0ee40d284f32412a884820e229bf21159a3257117d2e60b781a204ba1cc81ee020ba0672e7514753fc6d2cbae826ecbb5f66ae6476cb47194c7c532af452912c659b59c6cda0955c6e04a0b6aa2ecc751ff212944650cd9b991d919afe57d74d7afac8d73712d4a76c9170b91b36459ca85cb4101122c57971894eab658627bf1b2aa8b398b8b44a01939c49392183b58c5e6e96299f1da58ed4a8076d902cdd821ee16cf595a554ba18482eec47f0abe0e0c30eb05c3d01e5a19437d06c80ee59acd7cefea36a8ab224d40a9886bfadc01e5f4e10369cd1c31afb6e746a95b393e957028a415aaf96328394df9391c3b65b927627b833b8531ef82f6f72ee4838e56f2bc13a32203129aae268375f7ef980d6aafc7012f76c404d36deb42b7f0ce631cd7becd985a5fd821ca00edc22ccebb06174b17f5b99674924a7fc3e18278cc9299a8034a76241557f5c4b11bf59e54e33dcb678b31a594a167c7d73ab16d47cd8a563d4397ea373ddad957d363e6dc35b8648d1c27bcabdd78f7ee1ddffca3f18cdaaacda7947af72d94768e5a209b61567ee01c39aabb62b95b44a78db8d8ddf54645dc9a752d7cbdf0f9b21ffd5f2ac5f8769de7fc46b14c3ae291ef010a57fa7e8b2752eef731760ada34dd513f499fd1f827dce03d763f6b59f7845b5ecfb067b539ceea1eee37b009b6aeaff5fb9abfcf0ee69e755eddf83af630b41795275fc1fb3a546b46fa7db019c6573b2d8618f448346c30c08326faf973140168f43c1b35cf966e0d9c678b748394f52704d0c3c690d6520f66c776d771a992b11f754fa5db0a30c3f0cb9b66915ff23cc6423fa6f5a5719d2b70e49e4f6ee026619544cfa49c773213a30dccd04e8714595d170a3335d83cf8530a2991993e71df38fdf5e7a2aaf84cb0a77bac331ae51df6147dade88c4095aae6f115db53e5e06b97cc9253b861b303235bc36607cb1117662435e825fabcb857957995761751422edb948f7dfd67a31a1dd6b66a3179eaf9fac76be84a3794658de3639afa895ac8011d25985ee4f2a8f97da0976d6f2ef556f415b6824ac4c46575734e9a1ac6adb3d132dcf554611df66178fb39f3b36aff218474edd6dd81898d1f20ebaaafffb55b140d2e1a5e7191200cb8cbb557a0b5c3a32e321b5b9ef2891a1bbf7577db33d1585d977d1780bd8d99176b569dcb0d0c9d17667de68804ad4d7ebbf3426e9813b5ca1820009e6310e0b4f98083c87cd5cca6ea678b0aa97dc25a1a7bc8c9662d16b5c4a7bace458e5efba34e1ef49099ec8a4b23b0c33e4a9d72f5b5b1eac2595b1133a61a967143bb92de0db1276daf025791e32b2a781f2c482992aafafc342dba7f8fd21cae0c1443eed9bd9a689e42d2b565a92cb3fac26dafc99d511c04eb19a15d696e4c3cf0cbf602d71d5b75b3311bcae73aa04204743989c41436b2350c9a769e4940df0d3425aa43e0c1269e67375a42f920a4ee7e6d11f0b66894cd0803f3f163164aefeb6085de04514082f5aa622ea821bece69e76a9922c0979700b929fd6bcb1c4a64e71d9f05e5f3a4c85cfc1b6044bf9cf7007917504cb473fbf8317b64064138a82d177e03ee4f716faa4530446ae29d6b90b3a4612a4c8b8fb5154fbf5a4e30b7bb1db19dededde2af5c6b643f05f4bebb44bef70b0c7ebb56a9f3e7c4da8f4c7aaaa0e02a9117b905e69d3a02aa0528ade3d2beb6ad29de27b3622d57decb7f9ff6326de8d717cd3c6d74e25e155896cdaf12e54cbb3f6c2ee050f1b6c1f7e25028635f84f219a3e2fa8711b4850343eec1f6fffcaf7ec3a7f7319e50df8b42eee3d336c7d6bdeabec1bd13187d4571fd1e81add1e04510e69b47e9eeb45f9e7351e934dfb9e375e79f7cc0af9ff227fd459796bdacdfae811fc6edbd946595754ed78c13dd4105b4511b18fd24d5e896dac8f3310848d05b40f5092ba26c24e91a35598ba0ebb298958502ba0d788b166f251a595987a0b024ea88389f3b92e461e20d9dbe464f7e1f1841e806f5f67560bd0445cfba92f883a6d308e4d5053161b69d3d2f8f08159bcc35327b2f069d9037b6419ca0ee6bc47e3ac3f0f587fff52d9a09ef29ffc5678b07db3078ec331f5843675963c65129c21633b0e9b43ed12f55cc9d7cc99c0dde010d1452c5e4cd013d15d8968075148adc8b8266e713c65889343bd83d705d2195ef35955f7f07716be2ee9c727b128009daf3a5a05e6b0e17b8f36ef6ff280279739cfeb3426e322a2e3864dcac720328f481f1f3e306fc436d3d36e59bb5ac43ac3c3ca2aff4c6e9bc73e4637c813314b73f0cf0f7a26a38daf461b2cbee4258fe57dd8699ab2b840a8a343278d8678067acac9da6ee03e74196d61e7a5a35bc627f8ee5a165a1210bce66f34738cee246351a0ef338785e6eeb3073c89fa05a33dd17cfd603669e60769fab5bf857741253ecfe013f5c4ac5243cb0d12c242d3d6c159143410fdcf2c5fcfedcbbc40d660d5774507c2b22ae60b751bd27a7273d9cf0bf7caf1755f6c238ff6f6e8501de53e53aac9ceb9e43678c49e85c92adcc9760dfebdeb57aece9b111a5756d1850e2e793e839d4f2178fcd869f3f1e336881aabfc9157963d821f3e90be9c640f64eff6fa8816244d87c817e0cb030cdcb2586469cc51c1b0aec57c212bdbf83046510f6eb5bc90e3bd4e1391b034f134fc785642800015d9a202a5ba841553a41b2d9029be6d207805aeacb29566e7b22d8a85802edf0daf48dc9a8900d06a91b3b41a8c4679885580b63c9ffcb2d03df2e103dd23de6ab417fccc936e76e3fd534f9bb0916c1a8be1aab8e29208a2129b262dcbf7bb2c97fb3a06f6b5f7e06956ad73507c4a5fbe5f6d0d98eb53bbefa4e35cad9016e0e430b4f0fb31ad2f0d36e1b41891cbd27eaec1b752b8a33184bff7c627e83d2d8ca80e7aaeb1a044abeefe9e8ffa3b8e601d5b4ed24ac4ba205205c3f189df26a3af862cd0eb3d40fed3c0c59b9ecc3dbc3c8c91df2b1f52642e3ef24df38b88419487cf6585019cab5acc0d024769174b0d409fbb1f65bc316e2165d4604cdf6d13d606f53d54481b4dbc9a5c68d538d536126da8b47f47d029fd3d71e27be76f1566fc106e91468d498721ccb861b9e222c69f0d255ea5429cb68169715c991d500b0ea1ba7741c53d72498414f75cca2ef594f4d2e462fb1dd2595f751aaaff81ebdc00f5bdb805bbd30c7ec4c4fba7dc1db41834af4afa9aa224bc8b55aba7db111a86cb9d36d933e6002506fcb4c57447a6c49c27ea71ac9ced4d5d5edba90e8881afc4ad67228e77aea97471853254666d9e33abc3ce339d6f1f25df0408298706af423ec22e51619aee295116be65ead2777303ab776d5e5e5314be70f97ad4752d9d34373e8fd98838e90a73f097474f7f2e6e4ec97c380fa6a983f0f476a9b6378e8c5657a5fc3d4460a53b09a1abec96881c587a54e7306871e45f70894befbbb719b1fa0a65b46f78f4b4476a18a7f2547d3c58c24459420c92fdc5658904822b79485bb8557003814d3a8bee540e56657b0c6d3ede05b45ff5c88d3ea7d2213bd01e4b518bd3f787968b9b15116ae14a0da81061d387212e340d216a1d6ae2ab71c0414ca21d6edc0575a0fd565d2f54c4e15420b82ac94d1397660fd9d67bcd001a342092e37e9a848df8b1e267e9624cfbf017552173243a727572937fb5f380a832271812be4e63900dbee2b7622d85f050bd56d5f050e16e6112e5b15ef01244bf75c9f38abbe2ffa616b98dc011058311b5e88ed32ed91ea39fbbb41c02c3f614544e1e0110ee66f3758f167a680e1e6a2be25cdf045253bbdb8bac218267d9b0bafff54c4bf4066b8b80c29e07ac38060ea83e6fd0378408800988151160f74838cdd7625e94b74df3a0966deb5468ddaf4ea92e3a2c76634ea85b33186dc2dca87721df0f6d1bb96dcfde1861b0bc8bcf446dc255587b08797568b5463d15263296537add50182ae84a9a893c16df96054f625ed51e81a29a343eafe9ee749e97484d8acb1ba0d5fb6845ab8d5ca938fb13a22a7b8da2bdee440879f3a256495d781a0d7d1d617ab948782d3078ae1a22afd88d30c18c13b128458c96bd7e472a506d2eded76cce7f294a1de8b84f24ffeef85d23d23db66a7642af4ea8b5cf3b994e9bbfe35cbafd7cf6a9749af767128bd2f0d25e7592e59c0265f9e59475b01ae531a0111c47fb0ca00a3aee29b4cfd421ed84c45553a7d589aa03b705899fd33cffbd666d63df636a6b4b1e4260c5ea86197b916de6fc7662ef8a1fb5e20f1002813ca7f770dd469c90b88943056a3a1142e28f8d0d12379c92c7642982b13656e9e9c4fd568fde6b3680f49edc020f8e01827543214062654ce5b3c5e33ed1a67e80564e03ef71de52c7a6b26a28e304ed767b16a530d1cc12124c9a987f3808455bc7e27d5d720fd10aacab8ea18dc9e1a79ee687a3202be0684b0a45f24ef580e06d049d5b6b44a5e0c9ca102744a95c87e9d6d131886702eab9c0ccb844d7dc3abd567bf6109339e88b8cdc5481682d5d97e33f30303f64120db74fb918b7b8fbb428e7c60644378d5ece43c66bba4453050ba763e04de9fd866bf4899886a27947f6b5a63786eda925d00ab6e974300ab12edbf6114a00e9468214d7c499bc136b191842195f2b4e738931d3533b24938ff901fb416389d8b2ae58d15b55b59d9a7ba4c9c2a06bf470d3c47b57d8bb3ba1fcc479c344b5e6e14fd2e9d459331c74c827003d76e15045fec983b67e8f73870db79f3acc0f9cb9664c262cda1e5ac83f4458bee5087d8643fbc9a750213fe4143a3e8757072754e4a2c453553df7990c30173c4a53b3949dda77eb3dadd7a9f7b0ba9bf1f774b1057d23e398e5456d83a78b8411921ec95d6d2d70ffcbea3bc668fa7b40d713dd75ceb259853765314f2b685fd2216bbff3f3e25a9c384887950927e7c5291470764a5d9c0af0afe0071cc0c6928362099cae6d9295292660e0a89bcd767399668275b128c14743fc1b4f460d753c5edcde1e0b0c40fe7bfa94426a45800d0d08335264a1432f4191a11e1ec2e1b0f83c3e2e99a1bf38885f982ecb14b34a9752736401b371951ad267a83bde017d3d338ec2b26f4caf0b51ca9bf4dc321ebbaa2e654d46ba41679e83d3b17ac3deadb3319b30395bd381cb81c7b9d3b8da729e8ebb55aba76aec4dced49837f855eed518a8e3e80b7858b2b33903debb28d91fde0f40d6dfcffa0e5476f9e0fee674acdf4941e4231a691338f1ce6e3d8803b31098b6e61009bbc17589f491784b29e2a24cecf4acb579d2b0b3a3c099f0abad0553034f71a953d7fb8bda301ebfc8b300289dd875415e2d72c41b2e0e9438b3116385f89a20dd9e1706b5f26ddacd42857baf48efda4dee03aa6ac348bf625b709516b25043b0d632f93baeddd7736b80f247c1b3e09f6e8d1135b512e2760da70043aa1b87a3bddd3fd4305f2c04470c5caf098faf945c269d4e1ba11163cf750ec1b8e300b6eda3ce3e0f0b6c78bdb4aec5e7ed9d26abda2f8d0e070540ce4c80e4677f51645941243fe2fda2286bf61bf3a4396d7267ca078d5c57a611a39eadda5c454494171ab50ac42336ccebb2a816a8dad4c8252cdee83e975e8c57ab8bb0bbdd8d68239daba95894695ecb4bbf2ce6ac332bf9e2f2d76c2be3f96cc967620bb2d1c47cebc923f6e473fe1b95a3fca058dc96e9ecb2862df93a8dcba22aa6353b28ca4581ee48fa6c3fcb1814aae46520ca6b91f465e557692cf24a24202a471de0fd053099554ec47e409e3f7bd6df9677ae60a30d9527517970c63ae7b780f82f2b211b85930ffe55c5fb582c6a96e6189230954b6c0d6554337df6936aa398d43ccd196771b1b805c7bc978240c978cd2eeb7a31d8dabab9b9e97300b45f94b3ad0c0b545baf860747c767479bcffadbb2a2fceffce5f08c1d9c1c1eb1e1197b737af2c3f0f0e8909d1cb3fd63f664ff8c0dcf9eb06ff7cf866711fb7178fef2e4ed39fb71fff474fff87c7874c64e4ed9c1c9f1e1f07c78727cc64e5eb0fde39f64abdf0f8f0f2376343c7f7974ca8efef1e6f4e80c0a0f5fbf79353c3a8cd8f0f8e0d5dbc3e1f177a6d557c3d7c3f37dd9906c4497948dadeaef7c78feea28622f86e7c7b28b1727a76c9fbdd93f3d1f1ebc7db57fcadebc3d7d73727614c9765e1f9d1ebcdc3f3edffff6d5f0fc27d9d6f1c9f1e6f0f8c5e9f0f8bba3d747c7e77d3d2b6742d0d5a68bac677b5a944c1ea8749ac64c6f67362bae4599a7f98c2d4409be318bbc922df23c61593a4f6bd87215d9517a9d65a9cfbafdd9932d2d8e5602507a431ba1a816459b224a6f417d7ff810a843dcd7ead80455c452b6c7762296d34803263841cafeccf25de686287022995ca4d4a2c634bc9007a46ac83ceed12341514b15b145afc7ea8b0528575f2cde513c20f4ded7a1ab5f0dbbc51fe0aed60822da4b2feb7a71824c51adc294a25f98bf2bf693d63052c947ef6b91c36e318e4f65a3b44978264c733c9697c780759e6c3d415bd10e68a6e6f5a69c8ece80758845c516989436daf4409c8bfab24806acf3e6e4ec9c949eaa075c8ecad5cb820b27306800e812211e7823803cc5311e7890d0a904a6cc99bc8dcb863b483f4fa27b8b026e648df8294f83d42522718588b574195874743ca864ab1dd2788764eb7ed0690efc24b955cdeb65755024345fa5ba8dd0180690a37c4269ef86661616bcacc47e9e1c5c0a5c80530b81998ed642d6e956e56af85a4c4d83e9133006fc5abcafbbbd7e7d297282684e8ae4f69cda0b78e49f6907e47700a0ad43b825da3d565936580f50492fbd284b6ab964b2bc057b63323ae1e26d0bd82878ef5a366ae8e1b13da67fee36a6c372d8409066ab070298f873dea0b994561f058dfd658f7dbdbded1998de7b5a461b665f495ca55ac6b1a8aae9321bb053118bf45a244c75000ee5b52a20edba3580c5233f0e130e03a3748336a17b79773b92a8efac2c0127a5eaf896b46b0c14f30df0609ba5439bd820061d18a16743424fd373eb6faff2cc608a4558da5d2cfaa6ceb16b3179d76303daa0530e637377dce0dcf7d0b19686b177492caf87174287733600d3f4ee14ff52d5659544e4b090d22a6f05be613a2939f845ed2c7328ae0f246167dda47952dc34db2195f322119b4e7dbc29ed253eda188db007cd629f16cb3c61b3ac98009f49e25e79c1f4281692d04a2256176c9abe874fc6d588a645391ae5a00f24f2ebb42c72e0b664e99580b7ae52d875be98ff02a1abb6163cbe92840c6c170d37da258df2d1287f51944cbce7f3452606a351aee822d51bd0448d9a9d5d5bf037e5cd505eeaafd2fcca50521c88cfcd2ccdaf362564506934cae322af24c0f9950982adeb767f63cb321db0ce9622c33a11023250f0c84db3614374d87d03cd9ca5b39c67c3e9d9722141138e68bfa548976c23b5e6fb93a2ac0f0a49906699dc87fee2bb9ed863535221468a8aafa02be225fece9876c4a471d8275e975d6b0582ad28bb2acced631ab5030880627f7bf0e0dfe6d943c3228222ede7c9b745e2c4846a2b63ef9dc8e0620754f9538d7a9ace9cd0616ee0b067eb050e53ed5c8c53b6c99e85c38611ab9cc2a0904e0c4d07cabe2a64149d0c66e895bb241822937b2a11799df2ac5992e48d72122e14b4cdeb7a817a2f4edb758dbe1ed50043cc3357a1363c343396383c3632ba403533445d5d7df746aee4dd2af3d2a1f64c33241177af575235a3a6820222936cef75bd5007de1e0ae7ed017574f5edbe4a24509ea65d9cc236b9c9d6730a36f97bdaa5b62d032906c2091e1cb34e04aa010b011972fa6c2f0d39d97226fa0d62ac075df59d11da8f60e5bfa36419eae97100974bc99c03178b21860a423d31686200ff0f5d27650abc3778b6dff092cf85e701bda5487711b18c4f4446ee0e533451c788a0f2368fedf9ca787aef349ddc36f077fa5e1f8bfaa628af58297e5d8aaa66539e6622e9235209b0299f87f89c6b08302c081adef71dd2cd41c35db2c1411a6c56c012c99904ffe27e7b3a6cded46f4f87a1abf9ede9d0bd97959b2dbb9b67a2567ee2c85ba40a624fda387659a6c4fccd16f1a9359ba356c4b883d2189b050e9f5c3d9646d81752d28eae479b6d2dcf3e7c20d8858b4818e678939b103510f7a89da48d1c74356ac33ca2d6d7346a3b1911596b97898d9c7e894345807e29184f269528afe5b60ca16572fc168b736036fdac8232344f2b06db32a476fe411b26b91917f379917f61c97f61c97f61c9ff2e2cf9ad278a3865a7629a812450b18528cf1e4dc3ce2478b1234a7632ba49c4269a87ef57514cf24ad46f349ffc640a2e74f1061f8f817f3e1e0fd8c53bbce089ca14c6ac7dfc98aa1ad8ce184bfaa63edb6313f5425081815bde65e94f3c3ed6c467f12c7a3d9620e77e6239f77721fe7c6046761b76bad6d8ae75ca4cd511b5ba1b8f3ded3aa0b1cb655c038a91505c22b1120909b77179c29e7bf6a0931e1bb0ee78ec96b75f60960e5d3bd191be4872fe15921c324fa5a86ad93b1524d4da88d221b2bde13d6c68e05fcd58ee2f7aeccf6cbb395ce21ca00ab81755ddcd444d3a39bb9d4f0a49258222ab1ed968a3672187b0e2115bd82d136ca25bf570f517762f904d00cea9ec102ed277761417e93b3510f94b8fc559ab3b97db64185e0d26936167498ce5c4b128012d4e9b1a328e71b2b5292ce16780b61f2924317043972ecb14a86937ea8dc57899a4f9adceb6e1b4d2f620d59469509c5ee946be85a512df1d9dbf284a4970a6c2afe867134d7520baec1ca83d4e2a47ec62b4b12cd3d14624b78c04187f36a0c164bfafd1c63b7d890659cb84a279e4b29be9a4c12f7f792494ae08520b217f6b9dd24133495d1991477fbb73834b75e2d0e40e4fca2b4ef2228fcfe59554e996034182e3595ac39128683a8c12d8f16551891c09c62045ba2c53c740721d525415855808fb37bc14b9a82a227cbe73f4d54c7c58b7bca76d0887aaa5a8e36529e77301cac6630e823d37ce90c2f9d0d5357e786a8958df7962c223b950648f3ab99b586a53d6efc89b0a1b6a1368a9ce3fbe1fd500746547127ecfc8cad965a01cbd70cfd6c1966631ee065af4cf923e4da66e5d2f1cbd393827c6697ef3807847c42c7ae36c90d3e18e4e0ddf73456eb6f87aec714a34db3b2372874d63081066efa45f7843629ae3389e8094b73193280a70353935ab162502fe89888d7826203471b6fdd891678ce37e43f680ff8c2c631c5b19865914b70d0ab2ddd636d9329a4dab442ce26dcec484d41a56af97484ed1673b94df0d789d49fa5769aed4da03e1d6c00e34b13c682c38570d7676fd7d2347d478241f3f668f3cae72dfc2a742d58400ee79e6b520f5057d19b6c73adf1d9d7742a61a7ec93d55d6df0d09e8188071e0dbd3e18ba2fceee8bc6baef708b69fbb2b72718317ff38e9e36f37621b65828e93bec3f9a46b4e141002ca1b86d9d5a6a860f617798a101ca3eeefdac3784a227a82d4f96ae3594f8023d679c36fb382279d8002c9278e83052808f47ea0597cf4358644c77e48a12d74cdb4b173408bc355b8615486218975fd207b3a04586d607e8d88f64053d1a4a1dda2f549d65016eaddaf7ac2989e857e2e616d2ae89b7c60a5895a74c3505aa5058011d693f4ec6b060199516abd1f79a040bc8b3a3f3debafa059a334bae1f60bc3a4545ea263ef1f1aad2ddb1addc754c0402c72184d5dfbd5e68fcd5b9988a9b91c3599d23b4ff32340cdde7bc35812176e46387f8e445966f104ede22197def34e46f74adcfa61ba49a3680b77a5a25beda150278f8b44427750cc17452e721d0cc1d5c79773d281a63ac047b280330f04552a22c2b89e4f474396a76d136ecc29a41b756b061bb7fe2a28ee6ea54d3f10a1a81769cbb92cc33556dd9844b2ca3ab6d29c2f3a8df894c1fbd3155332e75d1990df8d3da807e04da181a7138586139e3f41a4b1c1097488e7f566d0a9b2720a89149b7548b57fdf245a889c5924426b9f6826b1d43a1d6a44f3c26698ab60d7af7556f3d22961783c9dffd3a1b4bc5be1d1de1edbb4a4d834d0950a56e7563412dd3078bace76c402d5c8a0c965f3a614d3f43dc8e14d9b7610cf3be8396473873d679de71d36609dc71d330d06d1a2003d0d34efa4f57f29d2bcdb79dce9b1a706d080e81f5b1fa8bffa9a33bcb01017accd859c2edbea3dce30ce8a455d355cf835fc177adc36a8d4578c0cea14ce97a3eb1ac4464a7e7a26526eeb911d69bbe4f57e71eb1779e51779e51779e5e7fbf7455ef9455ef969f2ca226fd8eea8a42ed0452f799e64e6315b9b0d1ec9c5b9e165c3ecfe21343b6091cbc92efd2e455da622390b279f6a6ab5859b512d2772a4081a21a7016989cb74e2c52cc821a280019212d22ef5e938704692b55182b950a2cd8c99e1667055c68029fdf757b01c958eb2a99a8f9ac51d0e44331e27a36c0ca2861928a66668a07ff825ee7a5ef8543b036484811960640181a5468ab72d82bb180e9ddf9fa47962b74e60244c873072c9fd752a6ab6c8a0c929f1aa376b374270b390ab4655d64db8f367f63e3e8e95933903b6d73b9ce61c753a9b1c38f6e08db9d626a2fd0d9caf46516f9bd3b2842714486e3b0aabb76f60f3aeb3753f76e37ed4b6fdc84dfbf15b36b06183dbb57d7706b6d98a4d6a21b5da03860d19ba5b1fddb73ef78db8bb3a30d628c4ac0d284e9bd5091e0f77d7bbe2d17b8f4dfbb6bd0bf26d15e37295cdd90ab665b59cf4e483d85fe676ffd27ec8a1385b5db69db529df66988c75896453b8954a36254208cac7b94a57d65841c467d7a5c27d9ada40e3782842b579d7b3ea7d98918144d70fd509e94c19105613f46a7411590f9794378b60a8f7bacad2095193560e55409c3d1e2bcb7097d24759b7aca33a7ed296ff912c8470b30d7d6ed7c1bfd716f833de4cf3391459016ca39c697f1d7b3f3bf76b95366d6b9c3c545868d369d3b65e065eb1d9af99efc965b3e633a771e39d9dacf2a649ec288f02929c3f3a1f1f9c1cbf187e37fefee8a733b6c72e3a6a677622d65996a9fc43f406e4a75219903fd12654ff501a015005b680a49084fc54a3851cc701bb49913f72e4e977b46246c43aa5f6c52e3fe4c13b1453ecd9f59fd37967aea243155c002058e73a722ab45e494ea9df29ec43c31395d78d12f5a353571a244b95eb4fd3ac16654b802c720f3597deb062a106b2625d5119a5bb25086d0e0b3f218a00de12df164585d13a410140d93d01434d3e4ddaf0d528c274d853d61d6d80f80a0043b62febf47aede2652428f51d6e7cf2430279b051d95065532d4447c52668fd478a5e1a95a1386463c9b4ecda1670151455b65517a4a57cd51fad0505878f40661369513f1c42304c42e4a145074ac1c796d70f8f2da85c42a87c4f8fcc6a91a97c9510d19daa833c90e551495eb43e7927d8523a85ce9e7b5990097433a8ee9d8a6340e7c308453e22622fb6f7e1037be44ead17afb7ad58c43ac35c22bdbc4ee5c389e510b8a5e67f0fa72a1e6f9acfd8cf50e467565f8a1c8e484797469ea80d97ac987778c27e76fbfd19b2054f688c7840d5632fa08099307747693fbd3466ce6f6dfb6fe07ddbfbc738f6a5ed347c5f1a07330a137537eb7317f9d3e9e0f4416590b7827bb7ae43c0a2faa39314b591084a9192a47897a9d38c73953a399e7f8bb1af1c015136d02013bb541f0d12322b626ef4ec78df7c360a2e787d8965e42f87b252efc8c7dff5a38d8bef7074b84aef06ec35c2abac4bf5509eb2d146c45e29205566d78e01f3dff0fa52e54958dda814ad3e515af9259f342e6d59abc705508569663f4e067995146d027c087ca69e7f144ff6a3b8b23a9cbd0481cca4ef999a30573d55a562217c0e945136b2848fbb4a7e1b5e7d84e641acdd8f60cc7c0453e6e3183277dee051e56a65bf01d5add6d9028b7898b1061b05935b59022e9fa4a92e0597318d67a2dd3da84b17a2421a6f27ba3a383d91d894639dec9a692817286ee28946f31c14e8c307f6db5d8bb633c1cb6467159f8bcda24c6769de69aa3d6bd40c1a0c9c46c536b0a7ae2f09aaee85b03c0cf7c046662ede35d1f1f7cd63f9e8d17b33b1b4631ed7e9350975b56731a246a9738b0469eca751e64503076a223f84f0b0d8a2277223397d4596ba8f1686130225b7435ef36680e8010bb571df7ddd9c0fda8a3f37ac3933b4b8374bac758e68a530b2e846070b06a174712485e498ad2877d800fe6f923000aa83332b0479c07c4cd98c7ce04f9129a2473bf026a52db0c5203c1de6f853b59376ae994a77e866eab2d7e530398c2ccdee70eb6e441b5b4f9eb0bf2a3d08762a785cb3eb9d3ff6ffd4ffe328674f582953faf685eecfd3bcff8bdc5a4f20dfd52279c16331298aab880df3b80f1eaad2ba627c3a4db394d7a2ea9b8ae77269ab6259c6025dafa515cb9a5a25af87e73a59f9bfc20075d086d2da409d1115b8ae2c8a9a21b25b944a19c4f6549742000c5ba3bcb3ac04abea328d817f83ac8e2b851da4a5e88e360a60086ca251ca68433f5392caa2368780c7286345342a648f1fab5ffda9a1e116f22a67cf494677b481132c3076c66843be047fdcded9fe5ad5f9b5bd8e5c579ed92a7f5455caf62a7a57da4affa12ad5ed95708ac6f32211b6de9f54bde50af8ca422e4c692aedfc41bbad595949d250b6d2f6ff53956eda2be9d8f5a6a36d55e7fdca3af1b22ce5817146b6b3a3eadeae98464497c6a598da7acf54bd7fae98c965b5500a50aa925e66cedb6bcdc5bcb035bed15e7456d4c8f83f6f6d0dbd2ff61fb26bd35a62828ab0b2b226dee5119b442c89581c3111b159c42e2336a56ef52c15c5a9e2aa7eed947da9ec7cd28322da7fceeb344fa7a94894fa172855c4b048c92e938715025316f9e65c174cc4b5e3d06e5ae0ad315d6699f28baa891e7917f12401f3179eb14b912da6cb8c490a23cd67153821744d3a0057617becc21fec3b075b9d93682e8c8c6762a2e76dfddf6a6b16b52196ea52cf2ee64f9f12eb6f829a72ed0c74b461c2f0b01fd222e3b890542547969e967c2eaaf3e24d216f9c1dc7551037de6b9c85fdb6ab57cd68074d0256f26c93ed442c0150b4df40d872bf54a04f971471b505f3be990879ab97fdcb7a9e3d37141d6ac4f388c5306b2c667f66935d16137beb843d95cd3fe6e5acba78d7aa426fadf263f694edbc73146563de7db41331b2a5f065c32df17f1008a07377d9755aa535fbbf95bb79f4b629caf5779edd75d5bddb0d48ecc4d1293a302e95abd7c532af4542a4bc26ad11a4fa112e30a2ee22ff752996e24551c6e22d4481a51a0d8d4cd99853f114b72c6067cd9a34b751f54cd42dd5740e5419e59ac838b466b7564aa9ef17354a0c3752160b70c4b06b92acc9efc4269688951eda140c840bda6112c53ad0d37d44c48e69057bc3ec2c0b152d5509c3fdb5e7985b05368d2b8c3640435c5dab5cdea8ce9deb678252daa33dc6d973f66d77b4f1a76ff0e226d7261d49df9f52e5eb01266db4a1a1447797cd514cedd2bb03a1d3ed7545b78be96db4419aa2bd99365fa8d51ee52f1cdd3a028e5be1bb7fcdd283fa39db63df3950490afb05d0ec2f3db5c2ef7647f955f7654401c77269f56609612edccdf3685b090387fa3c2b3c63008b6df7ffdfeec9ffde4aa4da3c6da892af744b57e276c01e21f6538aa9f93d1e5722733e011d96098d857bedad03b0eecd436ebd23c239319f33860a96961da01276355ea077fa4479e88825c6ae9001792ae47b399547a27bc9d4572f720b5c09d083edcee001825b1c127b54bdf57ba41327118bd1d3f22b5fa315d3bbe22246a5d6d83e1eca4424fcf43d3363d901f465da63a21f5fa659528a1c34508d77ba1df6678314913755a213e872598e0d310736976577d9dc713c935dcc5d1fa573f6943d7be753c84eff991d858401ee17aeb90172f4159d7a18a4931b1190099606f344266cea4e986bf8f1d55778bb0d98b6af97df03a6dd87c00e9d694a456e51cd9c82a36e957fc6c54d2ee9e6bff5d5f1185123126b84cde92dbc262cc0aca0004d28405c6e3d17288e1791071aefe3af3064c7e65655509127622ffc0aec31b5661a7228b868342daa982f84695f636b6ad8607738907fb6471b914e1ba8b467a38d91ef9f63b4f115ca00d4a1e23d8bbb5eec0ddeb9d82bf73190c9057f473498f42d7bc2f6d8d668b4f5744baff71b6b73699afb3ba1280815f1461d3b474149de396f9c307dc2061de026e94adc1ad3a88949953d1a35713839e62189499a1b9e518d5004b830660e305613d9e0d8b9dd55b2e701d3d17855b703169b84a5bcfcb7c3dbe8d4cc37b76335172b77064b92d568498a1dae9348c7bbb3cdfec2f4cccb9df806ed5979af01d65973d9f40ae98d6d6ecbd186f183adf63ec863471b93a2c804d7a4a8406ad040072242f9a0eeb86f882ccb7b98b58d576e75937afa8631af844488c0a7abdcfd34355fce27a234a94cb7a53f27a5e0578679ab2ae9c36b2ae94eed71f598b695608b8197f0eb80d28e5ebf6a83991b7c66bc8627dd58e15d6ab226ec39386397c7f55caec5b6c41a27bd48d17b33b3a813fd58bad5066c0204d040d18fb23f372a00ef115f5a97f8565db23f336edc645d92274bae3cbfb8a4214fa7607a21e1131133a16d6792be3b934953b57d94c58a793ced2ae3360963d6cfa17d283b605df97b1f2ecf8bfd77b21abf186dfcf5af9a8d31da781741f93606c814da4314ac17b51753532237ea14110dde8bf4ec3ceac22ca0c679afd74f8a5cec3a3324fad71806cd9d9ba74f7bd13d13e3bd1e025ee4c422423c02fae1eb1df45d7581a51502f94ed54a60f9551628275c89db8afd062d50ed27de43951f6c0c0335dcc1ae497013f61c87cfb3c6fdf0d6c32249a47ab687e4ce361be03522db53851bed9c079ef7b51f52435c01e6f8dcbc9b8033ca13d0af8b33b821ba5fffb1d9b770700bbc53d59aebdb14c056d7e8d3a7cd26a6bc059be67e1476dc39e636c7fb19d2d6ea9631fff0b2e7ec07d9790c9b69c5f3ad58423db5fb911a95bb0b3018f903e391cac684c4121ee17c7ef8c026321bf17238af6a9e614b0e2c3a01f36d508a13b9e25f3dded2fb4afd487abd88c5fac1694ee50f2eeb91cca72607601c7a0889a1148c22db6a10cc65f977493bcc542f900a9b79ca95511a63a7dd4913be1fbb04243963438db95ab8f6f62ca5fff5b39d06a94f56c4a051ffd098dd81c2f48d4fb8395f1066cb9c2fbcbda639aee6d0f5dc25d7f7744c635533b36b809c33c7d261566a8449d37f2ae60081464721783844b804d8790804580c611743fe530b4241525815319358e6759737a5c5b8b82b79b30625c10ef091f0faab0b3878a44795d2f5d59e2681e99ee8b186ce69e3acb2a0af958907519167141cf9e9347a8c9784a2f406b02977fef0358dc6e3f58a469fd03c9a4f9e4a7ac9f363792aa60d1ea515d7baac0e6643dd43ab868f32604790f066590a92f81de9fb40e3d15effdacb10a74c012a74808b61a270073d564e7dc559c2f1c6dccfe39867f132931d5cf27c26926fd3bab238be2c80638338a7961ef0329e3939f5652938463c1f10deca1b25041bb82c958322af96739d4c674fbe4eba527820d7041c3d71dc6d422f765ff763882a5c1c25f572d7dc26361f960018b744c89ec30879731764fc9f74e3cacfb51a9fd039af8bd2996a8ce535609b3b364dd36ee1cd3817f382deaf625eb89baa1d12ce1d4d010a08689c9662e06ec9e71a919d34e15856422b561270486a10aa1fbbbd7ea38cd76ae304d9c4956dd2226e9347d3a988bd16316d5583b484dbde708e1a69d7027581dc96fddcc66be376d35adcedf3504c9633758a696f36ddca3e969578c56f8b651d1a38cd5935fc663917a0d7ee465429ab5ab4f96e4ba72259c6a2741b5389f74c9e5fca6f78ea371ab8104c5353642990067cd1914e6a6d44e79266b472cd80a1c6c519282ebc2e12316088689f2901fc80fd93bc2447a87c3160af31312b729b665f1792dc982b976425475b637bcffef81f92c8e11ec2d7ca5e4782e00a1ca12aee2355929c696a819a4428b2624ad5f4210dd9948e361ae1c65be46425331e6956c38eb548c27a2c7a07e3cc7cc500a698b2c8fe044907e54c4393198ca591d7f37db2c7be5b8b87cb04e8ddacb8df6494197bce32993c20c20316b0888957c911a824215e2d49a0d1efad08216e8c1cf4d5ad5021f6850af789151cedc08068c18cb0fde55bf80f1fe5b57bec7f4f00d01001584efbb4f92ae2d155c1d91b48a04a27b787c6bc5fa3063062db5cafdda4af0481dc458626a4c7b4fa816769626e866348355a84a30da536873cf7655ed57c9289f1815134c29be8bd9bfd4669490dd852c9e6ce8e0e4e8fcec7c3e3f3a3d3e3fd5767e3c393f1f1c9f9f8edd9d1f8e474fcd3c9dbf18fc357afc6df1e8d5f0c4f8f0e0d3d88a248eceb30ad165af550bb50a5f9274abaa2f58f40c36dc0ae464a3b44a5ffa4b14975e206ec1f36f33fd91efb499e8d7fc84befa7dd513e2f926526faa87358b13df69ffaa8ca12ffb9aebee16652ccff67ea1c8ef22d098adc09659efeb3645ff7b7fbdb8b52b0eec1b2aa8b39fb769966498f7d90508cf2563d455018b38a8a306dae82e2bd5a8ca553a88a2f855cbc12e93fc2d898681e167292903f398bd8e5ff68a52f7fb0aed2d7d5e752fabafa372a7dbd7f88d257fc1994be127c9b1254fa4a6874ce872a7d254da5afc97f0fa5afd8b00e39a7ec97f7124b7cf61f8de317b71dbf88d15887571a2fa04a4bf21653ac633d7311fbbad78c863851a163e2885d69b183f2e131779d6e69bbbe79cfd9546045cd415aa70e8ae0ae4ac8d4c9bdf47253c380511d0c9a9eb5ec1d833de903083dd93dee4edf2ff74f9f821b1a108e0832e66a5e52ee07d4713ab9babf935f787b741e7d8b26dc317f4f7cce2118605a162085db99717d37a0e4486eac9dfff72779f1430b9e2bd929902c5d5c9eff4fdebb3737713c7fa36f654ca528e989acf8424890e3b80063208140b80488ed43cdeeceae14afb4425ad9981f79efa7a67b2edd33b3b249f87eebf99de33f403bf74b4fcf4c4ff7a7b706383367f1ecd6c18c4d65427f6f26a96be45a921744a977cb697c209bca634999ab6634b574c6f3ee88b60927e170c5dcb98dd7aac04781d4e7723f78d9507d6c17326f1f9ceb318f0af9c11582e9213fd11ec0566543a5b3bfba9cab65eae80de7843cb2f953f165c7bf8fe6c7c56960fca6af4e591036269a0b705296e10566dc1707d8993bba33e3e8a289d98ec7a0c213b4a486e7ccf9582e55f142559365ebd19f9711e8781dd8bfc100c061288c11a20edba9e0a2f541f6ea63756ace117b344f0095a4f813b9a3ea72b8081a2a0e44ef83ecc511a69681294b8f8cb22b87deb743aaf81174741961fc4d76dd683ffde0b8807dafd4a46da6657b6b2b2500c02496d296f68b50da717e3a2cd45ccd0a35cb27301d1e8650c25b8255569254276fc1be96ecab0dd6f22af83e279c8474f022ec2052bdbd96e36bfd6a76366b2e669bd003734e91566af04a2e2ad5ea05217be67dfb4c02dca355f573c31de7310d0a0e31ec91d63e2c6566d477b7a237b6f4fb5346d870ac064198328fccfafe050b9e2e0d9387260ddc6d12e3fc23157f79656a4561f9e2401ccb533057912dc2551eebd24fa391b80c6727f1222c9d7b704c37c2a7de0c0f09b9197c475f9fd2747057babd18140d239e2e87ef0b73017d3259b66ac61126729ee4b1814b58eead1b66c266fd2992e82a6dc8e164a9d98cac60e5bf6c9bf95c15bd3e3f690a4bc59af102fbedf3ed12de8708a5bb298cbbc4b7db548fc21493e573b55842feb607667f92ea1b0f17aa5672e9e59a642eeeb913d264a6ef73b0953daf57d564f66c5130a16e3a0199a75a3aae143f420bdcead71d26eda0e8ed9e4a48c27a97f72ed1797977d34c9204116d6c5392f1e71527e393c1ab72b427e6fd6833066e759c9f920d659ac8a769608a87807da341dec36f3b6e3b7896774337b0e9f58e91e146d32918041af383171d5aef33a6e6754696ad6cd56f4da11c27dbc8fbd12bb5ed67eb782ca42ce294a010799c59371872e494dab25093ae99ddaf27f959a84a6782efcb79bb5aa838f6b05965b5eac84a223b0b78daac96eab0b998ad895a9ff96973be2e6a7de6d7f3ce8830a3407dac8d62584c9632ab55010bbc27dd068937e08ddec98d6cd5b64eb7cca8b94d66f355cb83d035180f6bd5c7562e94b4a1546600d5733546d864ccadc9c8f058f26dba07196e1e93c91a3396dc2c891d543dcb062e22addc92471bd7a1df4eb8fe560ff69f8fb2f7495fbf4c4775d027dc393fc9d0c800b3e14e7857f6073a89391633c39a8128f5be6ec423625f8c41c307b90eb99c72559c073afca96cc7c3859c15cdb4d7670a64c8227b3b56c076244166f2fe3d484b1ecf5ab598c9daee0da872fdc0be0c3f648981411af883a54dc979c4a360133e3e92a7fe30a2bfa827d73db18161ec30238773a98f589aa5f48dba990f41d158480c865420b1a9c5cdedf7460dac959526d6dbe4f34048a36016cdff63df9364a91b40f9df235d4061376f8adbe4d3bd9ecba8ec5ff8287537909ce338978563a4d18ae165ff2a43157f79fc5082f669b29f4f7cfaa2a1e2523924a0b17f8b8bf1a456869649affb1cbf52ae1bd2a7e15910a0ddc5bed959f2a13da9a0c7c0aeabdf7176daef8b3c7df4f9287ba9183cf9e6e9c310cfe362e8b9d31b5004046ecc59aed5f0d8f4c61c4b5bb84ce88a0756ef4d647b1474cb1ed571177f22896a193b82e8d8dca9426fe9d3e8e6262de9a9ece5c7d9e9409cdcc871ab289898212e6e6b4f64e227526ac60eaea4c06c95e90d262c2f71297d1652028c2370f4880aa21bb5d594eaa09a307d1f1f51ff3bf41213cc73ca4752c492ea9f1e1f4e16e4699097ffbb2f1f7798dff86de98534bb7b68ee6036c48bc9ac682e008a0e7f0e8b260729602a6cc8941302a1f0cbe401d14061e6c772d8364f9a0bb5b8af2f137d1429b02093f0e4c61b959d4d5a148e9fc21674e1433297ec69f389a6999acf2cb9b3ebf6bc72d715399b4c61c8d5ac18e9969fdcb86b8350bfdc7d3e9815f67dcae542157e78625d9bf7b14d1795b06ce5a2bd2237385bb239db859c2d27bcc9af5c18e6f4dfd868ff2cfa9a895afe7062d21778388180f424f74e6e1493f3931bfde1b2bdac151f1a14a7e87b8fa7a35ea16ad52af14a0ee928fb8f8148a470237a453a1837ffd90fba9d6a902f858d21f90a08f90d67f2afe53139c5c097bfc0bc6291d2dd7534877ac5a4c8393dfa04fa2049272778e383947f485ebf31114d886ab89ab69ed6379a52e84cf8d7d67771fc24a45821fe8c532d29650af18d4bc146d8279068f0037e14452e67f35a5edafff57977558d4561002e735065156a3a6fe10976962f2ee72dfc2af4bff0725637b25045215b697e4e552bdd27344fcce56aa90454a5ff01373f8ba65aa8e5522c64ab4c454ba5ce5401ffe924cb56d6b5fe06b5ac42b493a942bb6d71ded4aba9cd7621272d98710d97f37aa29789f0fdcd322ebbcc83ef224bcab054465f2a8acc9b5a658eb0bcd6266cf65e288faf01b84bbbc082d9729cdc004b1f5c2059260e4496a1f18f18e99fc65d73ab66de06a4040b21b3f9130a96783690f00072f326185c1ad35c79ba272439255032b5b611b9d874b74028af80176251889ff6458505ea34852db4840f2e374bd03f8cac110ce9ed685bfc041646db3abbbb6a258c62dcd0db03fe5694a68ad26cc7024ff2e8464103f8aecfd103c84ecf110466a0180a4ccd59844a0320cd4474708f2b65aee888e23b0f93494552257cf9e8c1814a1eabd3be3880d28f15f0981edc974f6e60039d9917a619b65608ae07d6e7ca7539746a20f164796815e4400aaff4843b95bfdcabcfd9d88354e0486c18ed34733df903bd9e1e883213235191c14b095ec5be4d4290faed1cce7a97d4c7120cd91c6b3eb49a466e9e7944e0042a6a36792eb29638e1043b9d7f306e1af2f2414a1e5539f22f1b8121221d1c53200dd9171bdbfdc19a79299992eeb26de6642cc92804313d262fbd462f83fcd0cdb8cc35fdccf5d1bbbe07370f53260b0291e7602d41f0bece51144e671a438229a64273288429e5f9384d93105828bb5a47d45dbb0dec18bae4222722e86c2fb8b00522685895d969f0066ff324984c8221a5f917296fdde876d35895d1ecc99b168f493e71e8bba59ebf4b3f3cf68c8fca9e6ed7c53e9100f69447b53569786436e46b8642a03fcff5859f948c37e125ad0b885266356bd164aa5eb6724a2de65c58c22672e822f5b1f650b66a386b2ed86b47c879486d93e5abc56ae9c2ac7cdfb8dd2d92d83b5edfce21e790c03c1a9ca25b9f849d000aef054150cf767a2f61583c5e5b61a62e742b206cd653609649b16f040dd06780302cc0d0c94d3c259b19a8b61764a5594946ee47a9303f217c9cd9e70c7adf84811d67bdcbe06231c9e2d3813ee9019d2325354ddd853211a4a29013c82b645deb812155f0a7dd1462841e569dbbc773f143cd5f191162102f90a0511aaa8bfd70c75aebc921e56f1004680ec9ee6aee1df6b003e7614c9ae3937b0b4639ac1404019f996426d0bc638a7df157466f4967faf0639741cf685fb5d22d137ba8afaf996e0ac6947706627b7720767e1888dd1d7b0b9ce9a81706810b54083beeadd65c92dc136c367b4d7f0a08913a8b93d8e80d10b2b8ab3c4ddc37185073da8857ea631bdf9a6fde141b8dbd5a7cf0e97b1bb34cf39e061e0b7f143f995fdbdbe2e77dd1644e8d5767c147080052be3f968bfb4da17abbee2162e9d0613255360bf578365fb54e6dbc43843a22ea53286d1cc1ebd73d5f848397d14c17259c511af74a66f6437b2b231a2d23717c7223f73304d7d98138b971a62ee7fa0a895ffac664ab152737e672d9aa931ba79e2193221ecc8a7fdabffbac94ce2ef264d7eae5c98dac5e2d04efa938539745733113b6b3fac76a2ea6cd6aa90a3886b15b6fb2bb2f51c2f5af3b6ca46057771912fec34ea3c4e06b74db221cfeeb7e5b1cbbab3b8e29ff61cf8d6ce39f74dd8b17dbccebae7973b98cca831d324df8880f1591076bb3316d6ec3497f9a39ad4bb0d9ba6f18595844415fe35d213b3b77bc0dd87d7c3d0b739ad5cc1fd449bf79841ebeb89e8dadce07ed001133dccbce33fece382c542b27353d52ac811639b9a1772064ddf0f6360419187f80d33cff2235411faf374121170cbb769ef5b2d494f081c593ceee8e998f8bf1241fc7affa9e98bc7aa5f52891857510e61bb64982304c0fc640ffdedfd75b923e6164fc6176ed9cb14b0697f2b091d31dbbf0c2ba78c4bcaa84de3f6fdef44be30005692aebf50728bb0251a1971fda99335a9a4e66b866becc26d4d19bebccd2462f1be6eda2fed520aa0c65ddbadf53d5ca5fd5651fbf6c3250d8c3644cbf0925dbf9582ee09c00fa71facb1d72adae2384ee85193999a44e14364dca5c704dcfaf22ea0f19aeafb3c6881c32f0a0532b62160ff4f5c544043a8ceef0e3756a476289272ea6163e62bedd7d787c91e850ecb64add91f9d32ceb8b8cec43313da587cbc8fe196698ae75990dc3dd9fe950a3e64fc6f49baf9a8c74d90f66c53f287965f6d32b0ac7cdb4a3fc88c2a2e1360a9b179acfe02ab756bca96ea06ccb6d5f864fdcbc091b178a39cdc6d551060cb3031e046df39070734bb8ba840b38be2b884894240e748fa2b80733402eba409892d2302cf0520f9caa1820dbfa92f705c3d8b6fa4607fe2cf3b7367d8bb5c43d001834851bdb3ee0a1410bcef5cd7be095b3d032dca7d3e5fe2e7baa8f36e20adcd970b915b0de39a865db991a19d69ef78137eb26d6b461cb6c48ae2bb49599ad5942bd190c4fc62be48063fbd0b3cc425c59d00dddc3e3d26853b353d6dde015e95ef07d3ffdaa7498053a2bfb6225a90a799716dd5dabb1bef363acb2ee9f395bd923fa499618ef663474e0b40db37e7a4b7de05b794fd77b1fffb1420031c2ee1dcb5331c29ec78a5547ecfdec5e16c954ef511b165022b1ab1a0abf17cc178c1c6199593f7afbca9c5e8c647a3187592f3b96a7ebf5601e660924399902f27a9485661c2e31b5def3ea6b5e60a7fbfe4beaf8f76b7488f9c51f629c8ad12fee3476c2cdf34c42db07a327564e66b2ae2fe9c3f62ff604e3d6eabdcceaa3c1e7fdac0f0d1ec004469be513b759e64ddd2c1c6234deb3c8473b99fa00381a43d026f0bf931b2e4a4de5a4765fd366d68edd17c270bacfb95c2e2f9a45e111ace5acf2952c955ce43e73ab6af2fb63eb3f68cb560b9fea42a9b334e2751641e91afda1595328ab28e4bf129a34ee384a9578f5aadad878921de37a3cc5e73daebe0b69b6e0ad2d56800bef2be61110ac06968bdc688de86f942559bb9966b150cb79332b26b3eaf5d26a973828bfce14ac2fbb463752f75a1f9af05dcc298726b52d9f71f6b7f1c2eb52984b196ab902f7fb3650e19054be86d26ad071c9aed697d15bc252b577db7631c956ad425449ab5479c3e8f275817a7ae6418c8102d5b204890c9ddcdc6433836bc9a48f8703a6d6cd490766e4e4463e56f959d67c7424017ade0b594c1a1b9450468b5b848d3c10a644503f1bf98302d35e30609f956ac913f5a15ae68bc9bc6d163d6e96429e6a330f4343d147bd1101c201848fdf99190daa1ac794c8430d73323fb96ee6fa044bd5464773c81660e1404ab34f9821c0f6b88622ebf7eaa0d61f2c3c276d78801efe8ec55eaf08c756c48bbe3fd3ba4296ac90a56a831b011d61724c2ea92bb4847562ff4b7aa866aba932fdcb87fe2b282b847ca9541b6264d9a0e44814e9ee8765d8a0eb0c0429a86de6af16323f9bccaae0c9dc06f346c9e17b5815100b48774c2c22ac229ba16b3ebce943d50bfa52c24b072b90a84658c10964ed8087462c946833d312bd9e9c3f5918c98ed50f85d3b599226629e4d053a58315b6cc440e0d3301c6d22ee0caa1b90af8ab84df12ef1dde3ca3a05c51e2cd088ef84332bd03638aeb373e501b859ec9e197c3e0ec9dcc5e457a7d2737d2a038fa88ad67e555364c27e8f2cd611f765eeb767ef7fff486ffa77f7c027fdf9d7e67e8f1d33f730ff7872ef2d317fa877bb326539783b8b76bf2747b887bb726d75a17717fae6b62a78fb86fd6e7ea701227f3ee5c9d5ee2b2f599d6bb89cbd7645eeb27ae5893b1db519c5a932bed28ae5c9323ed28aecaffbda7b871ceb8d8b520dd6311b56626558eb0ee559ec675e7e7ef74a3d7daca4c924d4d35079d197454410c888ac9725e4bb06bc5c3faccfc0a4ab2de093aca592f7ccef250fc797283638d014f2739de66718e23b7de79da3789b4cf0d3fe129ff4ca574cb9aa77d9748eb511ac3d445a2872fddca08ed163b9e6efaebfc344035323d909a573828dcb069df243a62f33c77dc89e7c97d3d7e0b47185c6fb2896f299c7e32473f6e9f16545529488e78e71bcedbc39187e8459b0dc040ea9b6ddcc75ae421d760150d8c5e2a43ab05445296397bd3d0cb76db5c780cf02e9c240ce0ae75b3404b8d1d0a25d7ea5f7974eb316372c2adea4664dac1bacf9fe875837747ecf316ffbccd3f7fe09fdb5bfcfb0e9172db93169ba8d812377ec1a0581aef0b95ad2a40e80b606014897f09e87241027dc761936423f2c411178db530478139fa7bfccc4d8162cab85fca78e138b9217ab245b7fc6aa8973ec8492c16daebcc388db01e4720593d99a9df400444083277626f5d26def60b915d62d9b94d1976ede4c609064c6698b257e07a796d755975dd65a89499896fbdf79f35969881e9255769cae124783cbabbf9e77bb9f9e9e464b5b5757f6b13fe3fbc8dfffd889f47f879849f3b4747fabfdd1f30f1ee0f87f8df91fedc3e82d89dadadfb9bf8ff21fc878977b67f84d8fb5bf879f4407fee6e6d6debcfc31f20efd11d8c3d3abc0f9f8747f879747478fabfabb927279bc3adcd3bd09a7b3f40b55ba615b7b1dadd23acf6d6d6e9fff9c61ec4ebfcda2ef4a63935da9ae5096cab869f136ae3946306a829e1958ba6980629bc3fa3b37cd8aa65db23b1b31c6d8e4c3953fed96d0c31cfd3fa8e4ef20b2b6bcbbc74c16267a5d19386958b85afddfee4c315359670125cabaa61553aacc727b65f14e1d8081136dea7c88732cfd5bc5ddec3b288c7791149d88c71cad6407c1f793540858e4db3571a1d0fb998f8a07faa68f261dd5c10115f879d28c4f2f94c9157346ae188d9e9b4d34d277337ea4ba0f2712bee2c369d27fb3e3a222c7f93bf454a2ab7bb92e9ae6e8b9f2dd0ee7a1abfcf51f6a8cd4f4013625fecf891def53f6fb94ed88c5666fc1bc26d161d51cb39ea2d2b1f3f5d2ddbd74b2758738acece73a90e35c5121324a334cd3611ef0bf786435d2ee4ac528b66b5ac2f5faaf6f16ca6168f5e3d7d628911cd4bccc77d23a399b854cbd51cd44dcc1bf083620278c36f108bd2453fba2c5055ce45b497b50a34d01c6854acb57e88ec69a62e7076b606a840e39da480c8e4f8f8e4064ed1fdb15c2c95d1e1c4a0cddc869d0e4015b496cba51e374c049f366edc4eeb237def333e687d783b7ff0613539c718fdb9a9f0fbf4744dfbdd49fc780b6f9287c684033a940dc4b6e9d0f1f669d8a7931b391f5cacbb58c8aaf29fcbb9aa6b981ffc36d2f8758d0a0775c7b481f3b6b83972d5362fd4b95a2c4dddea23628ebc508845bc7c8178bf851dbf7cb5f42dd504a116e7ea6e3d1fcb7fd6c2a04d2737645d371747abba7e992f949a09b9bc9ce54237f448570ebf9e83856a336b174dbdb414adff570b61a17444d92ca6bf3580c02d5b25c693a250335137cd5ccc9aa7803b2d663ebe99ab1998a22e1fcff441532c942c9ecdea4b0b795c88058e542196793307ab5439add5722926ad9abed461ff7c19ec5e73c6dc438d1effe9aa6e27733b1bd3556b231006487f7dc99ce8366c2596a283a330e4da5cccea467e61e1b73ad6b95e13b551d85e3417e6d772f2c9ad06bdfb7f494db73b6b5a34172fa138281855a5bea4e4efaf33499a412ce0887f7c72b2393aed1dcbcd4fa7fdef2a7e385ce63116ccf6e9b06d5ecfe7e4a518183ef2bd59bb395680622eeb490580c29b995c2aa056b990d924dfd4442f6ce0e6723c295b91cbb9cd98d793f9e65cb663fcb5d06b00deed3727b3562de6062c3a15b6594eea562d9626cec861cd170a25f46e5034d3c94cd296a9995e8f9b99cccfaa0580a39793bade6ce6329fb497f8010d29eba62936a140f3dba56966ed6629a793dafcd6e4e17f6dcae2afd5b23501ed42e9438cf9b8ac4d428b880d1f17381c557d391f6f82ac047f368b899ab5d8df71b3987c6a66adac1391e76ad14e72590b48b5298bf3cd8fe677b3985493d9e6473199ca4a91a1a955dbaac5a63e17c0a76ec26456991e4fe5e24c2d36d5acb03fa713f71335e09b73b58079b5aa5f3ea41d4ff2b399e645733999b59bcda2500b3197b366a936b7c5bc81b94488cda5706d82299eb562399673dad465dbcc4dbbe0a79d8865bb989c29030ae09bc1837d5b96eda239539b855c8ee562212f694053964bd5da10dd895ccee9e75fcd6466bfa7935677743a7119488bf4e7c5a468c7a0d6b12967f9b859e0ef42e50d9e56f0dbf710c0fbf960fa20df83d56c923785dacc26c5c47d809a89fe6a979b733daa5371be29f51e98a976928bf3cdb19c55ba96f3cd49a19a6a21e763089fca76aca61249e71cd0ff3715b8f1119aa2808e2ef1a72323fa75292e9a45e148e8620130079bd3a650e2e3b49e2d471febc9ec4c7c340bfefafb111530a20c66910fc4d2d8cf759d71a2dd1baa1fc9bc5de93dd57c2df24553dbaff14295e627095d8e9b0bf3b39db42e589f7cfff37dc0d3dfe8bbef2e2e2e8617bb8051bf7de7ce9defa01106c8cb6c211fa7f548b336dc43f4572d6795ff8253fffa5de56b36f3edd327baa93f7e37b3370ededc56668f6785fa680ec68b66b97c06a4f4651bdff675363eb2b9b589fbacd5b2384c687a1c60b7471c92d2b9ebdd30c006c6bd3c5e8846001db1b12d4662a3b743b4fdfae6c5c8cab48fb74ef1aafe8c86409a990bd936697ea321b678bc4297202bff90f7b05f0aba6625a2c60d70e174e72c1843931b55167f99cf41b6bd50d3e65c790d2440ea955c2bc98841c5b7a0f33a122aba421e0879acd8ddd1da93bbaa76e9a8992e1987ab396809032807bbbb22eea44a5c6807e23adde8a1eb625400d2c3b3ebbd78dff2ee8837b65c41a641b6b703985c3e1abfbd34b8cf797aa4f27e3fa11db1f2e7ac405a15d96684b2a6b4f3efb477efb5eec389d826b285b94a64e404e8b175529e82f4caacfa0515ffa1edb457e2e1428011f72546c50541d479222cb78538b8107100842587ef2f16529f66c1f5da70329bb413599b4a4f98fb7f8f189eec9443e91e325986231b1ecef4cd9cdf32a296e27f93acf7c9b0e93a57b9f77966f4e40f84d798cfad1935eba4f7a5c97bebbdf99b7033badea53f5c668da961a8df47c0d299929f5dd2711f4722683b0c778c85ce463b8bc8c71502e659396a49922b68a6f78578122f59b1b612a659b4ca7ba6655c3d30f34a92d4eb5cced0b8fc9a44b4e500d6d9721560e84e9112270e5ed7f127166bbf9cba58ce8d457c6a9fc280998419ad9ab573c5767263b9caa693d63953c729544b07d75310f49f90933ac90fd7a8f372cf84f292cd210ec4271c76cb84d17d799481ae1b9defe6cd20234c144d659efcfc92b43447fca7878bca0c5810b82f3636c2943131ddcd53c8a46bba0e0fe0577594297f068467edecc8f46dec1b07e17efa36ec8c327786e716d5c71d5c2c99f7e9fc09f7120deece938c129a6a52e7e83c3da064428399879d672c72df0bca2d6343ed1208750fff96a49d0b290a13114e5a18d6997063fd16b0b60909bb894f294a20bc60c3caece510dc001e5a1d7099038a8ed16adf405d1d4bc0788c0906ed1a33033b1ccb966011e9627386027a2f77ba83633460f887e6e990bbdb261da2bfc8101dc1f4f27a929f0910fd0ad04da7f6e8abb94061a30307ec30460ff0eac3a99400dfe16db9eee5432cce41a6587a34af217a1fc2ea20fc81c37a01d055a64fcade4d726e96f5204f9a651df953e3a14cc19c3c8cf54a7e71156bba7c99315f1fb1d1501e1af8f81e199cf6a4f6c0e3dc5a0b19d48fc7f866dd73860378dbd848c28ce8d57147fcd4814112dce27e7118428748cf873958c0e7633073ed69aab2370fdbf481f835ef0f7058dd582790b0fdf079bb44e46eec1dece64d3dd20f8c99a62692fbfa138802ac5dfa03f16bd63bcad300bf4f4232334f18ce9af340f4742f07d8d6cc343cd7dffaf2737557d148148107bc85a82e3386d8e6ea00564a4f160e557834c80b4110354575f48123145b03a5280cfd2ac405240c469e25f2275c0e74102d2b5313eef33c65567d0f4fc0ef274b30da84d17eb99acf9b0580613dcebf8ed575260ef4fa84cb2903f1b17a4a9137e52a1538866b2d35f252eb8cbc44e891611c3b6e181b3b95496dc7d0ddd475bb1ee99bd4d3ac07308a8f7313fa2cb796b64ff30134f5091cf07abc810983a2f1750c8a54c7854319bd00ab71f55b4e0d304b175e22e178f6773fef951cf50a50442b9dce9b9d8ac44a420406be0df7d1bacedf99b09bec4ea09c77e84f790f80916df440286a7e404c787fcf230ca9f389ba20306d88ff11814abd70a47db76e353f40ac05b315dfc776c2c50e01194cc453d54a1d6a401b4ce8cbf1a48442e0f506c2a3edf365bcfb24c11c1d7e43a534879f94137b4f3d4804a2252f8cf88b1c90930ff4091dad7a13da15aff20072f52503f47ead47c5ae9e3fe8c79b9c7aeb79cbbedee9afdf73360b4b780a7e4b260243de5110bf7aa266eddb2884a699cb4abd0dbe5919383db41e33072408e7960498e92321e1c08ec4abdc600fb66d336360843a8082112e542d5b5544c0872c3c853fc81298db41b968a6f6d88bbb2bb1023d0079aefd1a09969ce216ea6be91407d735c785f5647035773106f986a8b9bba8c048fdb5bd73bf365e8b70beb921d91b141302f8cf143cf4580b496b6b6ab2894db0dbdfd2b48c94b635105ba90ebd4b74e85d6787de7577e85dd0a13f6c87fea01d7ac73bf4f69a1d7a473bf436ec1061437feab8777ce99897bfc7146c121ecbc837be15d175b150cbe56ac1013a67959ae9cbcff344e4a4662b4f7fd375d55e006aab2f1f1bf58a63804e96cf1793a95c5c46fcf51bc75f61b01ee8cc23bf00f8fd68e45d2e414277218a10e4a0b0c6c2c3e1d7b9ce704a4965b5544f943c57d7a91012febb0acdd85ca78fcf49d2ee4a4d81ae5afbdd51f175fafa9c24fd5715fbbd5716a9d3e1375fe9f8c7069b1e5e599b30223818d2594be5f4e1e428a48c5b938827e78cc702e8141c9b36540a6e0b21570dec234a100f00cfbb87314ccad14724162370982870afa08c01fe1b2c6344edfe05409cc0812d437b77e3a226d16ab74fe85a1e998334da6444c82d7816349edbe34e5990f9e4e13a0aac53816729c8a4ae898a66be0fd5bfcb0750e337f9d0aff101d467836061a10b6453ccc98d3d22dc8d49a093a8b0ce3f7d9d74b5b95ae9dab7f59a306745a1876f4a9e440080478cf4eda6ec13ba9911c7a626decb08c5bea888b0650ceea7e9f1dc8959cec080a2c695ee232db8fcd40571a2b16aaf2871a475d511006eceeb52acbbb9afcb9518d5655b51100fccee4652f485a4223366a4a2989b64eba4df7e039e0c7857de13d51edeb364afe24e22cfbefd961a7cdb9f55aaac1aba21ea3d98f127b257f3b2aa7459c621db96f8499c894d51edb14cceebd4409c6d6e5e91bf129be28ce757985ff507a25a9bff8cbbab723ec2eccbaef93994352891ea8b9ab7638a5abb976841aaf22ce9a33c08b5826ec3d7ac7face3d33dc49e2a51878036ff0c5c58bbb6a6cd08ce74e633ec97e98d37bd43f8a3d2b7bac47e94fdd06c081a549a06c175b54837a8f8370d2ab141856f50810d2ad20d4af8c50d5ddf3e933df47bdbe9412c28af640ece0a4e31cf64af34a551076779549cd9358ee54078473ac11d382b52f84c46715f6fbf5bc64c030c06be3351fa171a11486fc591e1d301bdbce6c5d59640bc3d45118acb6c0b53b6181d16cd4c7d648de973c6126629c40762ca74a62e973dc91f5a6954e6c5d6d6951c3e6f854090cef027a49f3c493fe86fb640a3a6cc384f86438f1e9a63fd793a1019fe88ec9d38167ac2e58b2a629d2ad71149d99061609935d6732dc4276f66c207ec857400c9a8970d5151ef95acc44db1e35bbbcdd94eaa16ef4dd1c60dc4758a15049c2c8059ca8c1fcb1d3112bbb1c31c3f3288e98a43655c11fff86300181778d2490c6bc09602d410d0202a00a263d7815425aa1a1823df04ceab738a93234a1f6ee57b098c1e3380fc94aee0f0eb1a4935c94c6b151eb63dcf24a7f52198d020ea1ffe2653e75a56812412a2f7c23d581753a1da811b95b2803d956e7e3e591126cb48b20ace4ccb49564f66556a4ff4631b724e5cc376cdc01ac68f3e8cacd1ec2af7289563851bdbe16945777a4c3b3d8e3b3db69d26e1a6bcad3d1a9493139ce742250be1db19eb31adadb8bab622aa2dffb2da74bfc7eba60088aa622d81411b0b4744d180ad1bb2643752cd4e752eee4cd09d75c3d751733c3da949bc46cde9a10c9255a1ab8aed1fef50abedbf0937d45700bfd437ccbd1832dd89b1304d35bb066f15d9669a0f7a47211e1c7368f031bccaa31825f0dec60583de031eea5965040dc2581e6e5cdcd1f2f784cb3bbfc319f33b4c6f3a99655be687e500ee6a6fc28375ef0ff032648cde0d74e6e62e5afd1b763f43a51b5b691a0cc5904bb8e306a4e06a235d089363199ca2fe8e8f0c21cefaa488de779cd344146e3959a4aae57ca98a5713163a5faa556125219194f2afb8f8bc9eccb3462e8a43f045e29df3d0f058980fefb43e01859067114e9ec38323c1f05911bfa904ef0c04ad8a50759d3a0a78b47e81cfbf80f5ed1b6921234dc4c0a86dc3497b7b971cd001f563179ed0a5bbb96f6f058f7fdbbb1c657247fc644ff5bbee155f0fc5169deba993273e58e6237172e3c13297732bad7c3997b9cae442470813f644e1b3dbddc5a2b9d01f26fcf5dc85be9e9bb017283037c12fd0d402620e9b8b998b3884d77a0c57f0007808287126eccd04923e7be9de0367ab91c785d19f26e6ee7cbe4cc7bccc174d0d45e3af270d988d4271cda7e78bc90c0c4de17deae4c6ebd9a450b376524ef4cdcb4b5f676eb47ed4c9eec9fccc181340823b3af095cccce7f60eb4a556d28a9db777618889207afb36b4693c71e3b8fd83edc1a2a96d185477b77669a0a6e712446d10b2b305b9e47c497ab6f34334a3bb3b742e7777b19c4ab929dbbd6583c8acec7e8fedb65e5b76a1d58f9aa92bf6871449ecfe1893c4ee9d243ddcda4a51c32da8f7f16ca99cf7945bb723fad8c6813eda76dfd0ada31df70d7d3ada75df50ecd12df70d651e7defbea13747b7dd37f4e3e807f70d7d38fad1cd3334fee88efbdec6f66cb900d340d7c21d6ce1b66be22d68e26fab2999be6dec7e44b03b3b90f8a9d22ccf136793e05e679a9e1d9b3a5397c1ab1d7029b25d59ee352d8e210a91c1f42f2666095708ca05a21d379453505f0dfc0d0f38588d5723c2aedc5a11a3a4df04d94f82cf13b50ca61ee4f4c04def7419a716ce86f56744ec096078eb26377e23bffa2bf842cd95a4cf7e08757f9d7772bb77d02dd38f4db45b768d3e6e5f237b101c18ca094a36211d057fc9f8bbc10fea042718a446f8fe271df91a2d22e78279113f1817b295e0b3bb548be888f321b114db66958f993f4594d8bf8ac25153ac8823ae414cd722ca143d91d62fe2031a5536fc97c7bf656a3055ddcab7cca7a80e484d3dc6306f411002b37e3156aa3e0c526cca21090f480e32bf0b6b7ed759f3bba8e67741cdef3a6a0ed375244bb5ef4fa65a55b7f229accc60605b3db0800792350b8b03823f4f07e2f82d18a5b8833c6ce63afc1d0f27defe75ec9f3cd6f831337022e8fbdcd84ccad973f86071c6d699257965c33065b19095c7f7a0a1e685cb4699ad80c47f9cb4241abe7cac798bb3d1e611dec7e3b3a38d7e764eca664edc4d1a136695c731a5f1ef6e3041ec8789b33edf4dacffb4f1858f2b48f862616158cc4f0caf9ad6bc71329489aa698d9a815359c7f4083da19318100a178a3ee77d9c32b7279ac2baa2a7a99eba309fd2a043d8448c3eea66996cb20e4fb799e8f838cd8fa7cd398fe78a21cf562d8f75d38ad1645e8d037da365613f4c1cb6c7d76d0268ed1d8a1aa405ec459b26a1ad30eefb2d348cfdc2d8251cf60cf286f96d62d0b7bf052e311f260efdfd3bc00efc307100ec69e3ec07c6b593a9b22e85c013e464aaaccb3e93a2a92a0b9c627fdb98553ef6e3059f7eb4be01bed1ea0d72c2d8cdc98d0b09d6f898cd7d9838cd074d0cfe3cb56e47570505923b2f1240721745ca28d22110c17dfb78fbd43dfd14d467424fa7e3b82260d9824067dbc69c2bf3968b5f6076523831bcb73529e015ff7a5e3c733b089325b8f545439d91c84e6616367d55a02d3a9ebdcf8be3fc946261e97d017586074e7bd871eadc8eb9fd6de1a226165bc9fcb4e1cdd24148c14f138eb7ee29deba850bc06bb84d33b71b06fc32a17649e57e2dc9d547d200b9fa789fb6a1c86a125b34abac563c016c2005dd3e0a1a471897fe648cab5834731ba57f61a8b1881878e3080c9f78d7a9e6a70d3f97f5a4b031e603e3dcf1d47863c53baf8b23ce59cfd4e573ca20ccf1d544bd9e33e6e7cb844f5a2a04d89cf0e1f31a677bd4f9ab095f2d5df8ca4fb4dff5e764cb77acded3d3dc72794a5626d0b7d504d0d69a20db5ef3e95bbc90ada2dbb3fee65bb3313f1c784b44cf463dfc13feb68c128d18914fe26fc2ea68bf2080f70a8ff796e0e08b501c7c1392836f4673e74dbd9ab23e6188ebd53a1c0a647c1b5b0e63a22dae4ebdcda0983e26150b57855139256ce755337fa2ce55fdc0a623a7e7f509c9a95af3e273cdb2b8ae2fb1119504f9400e59c1e47cfceffd0c9246e00368ea0d22ed59b0db012535b0ae8b5ede4f17bac6f96b8763591cb986fa0e0cdf23d24e5e2dd22872aea0bcb36b9467d86dd0c51d837b8a0afa57f4d2b3f4b0599e9d8731b1135b1e85279064141b381ad1306fab2ce65c25068d6d6cc1d0bdcbaf1e3abcd8447db63b543aa24db5c45f7b5231e6ca938a4a778c6c84715413d3ddfc1a74c2986558aae792c998f46452e61934e8c3950d7a2b7971ef82ef3f6550e4e4ca22bf09b32cae312cf6301f64fdfd1ae4634ec241cee575d62c9cb122724e917fe870172bf9eb1a95242ea661e1a99b60d4007e7ce8884e7302767beb884c2e7a7661eb884cf0df3fd7cd5a8c400f46dba14c1c1f0993ee424dd2df89fa2793ac137b804bbd6d7f2c86eb375e93f85381aa951c3722f57689a2c9c7b3a5f7f39513d551ef0f0055d7c89e28877a02976db358a29a65ee9513a80a841b07b888ed450a92f99e53c9a1efe985f0aa3a6149050028a1320faa2f18e5a982aa2934b3564e666af178563674df2fb89a68773ff4403c72caa20ecb3eef537d851c75fe72f1132bc96affe544fbcf288ed934c7f9e91e3fa2fc9601dc833359ec13356e396ccd64bf42580e328c161b8c65463358102782c6c9d69e188b9f44235ddbc64cb3551752eb23873c1e7b8f5de0a706d4b4eb213f6a21f4543910aa8f06b0baba8fb2570d44dd8fd4b00e65af8a9d65de2bbcbb4eef5b35541bdd48984dd83b7fefd228f2dd2fc4481c16fd613699153decb6d138c986b228a0d54f26cb56cdd4029ce6a6a17a1e445aabffb9eab7e2eaefb3ea1f65bdc302011fe2a487514beff1536f8e249505f4ece89b009721f81bc50d718e018dc20d9eff943ee2822d258532f08beb93d7906584a5e7f953319c37f31e51c666242df689666041299918314026c7b284773d41dda679a8222fc31182d63522564da4a291f01e777d2d1e944a08b77847e2f8d4d4e50680b89b15e2d7ac77b7a09ae1a1b359112c69b75865d0771bcafa6d03438e0346c5627b4bfc2cdc5c80d177617d1307ea416e2d1e31b1dbc38298273f42f9d97b7079658978f9f810c56906c3e5a96cc7c3859c15cdb4d7b76e037602fd99c77e0fba42971c75a4e5403c2a90e0e4f1a3e254ec8b87c5b7df0ec451710c01a7d068a610e3a2a215f30bd74993c6d74f87474d8b04220efc4fab1bd7277aeb1d3e08922a6eb147621980f1c0337cd6149766d3c925dc46b3d8bed9278ac0447c3f8dce9af1c65b4e16cbf63ee8bdb10b3a8b3989f4c662b096274901ecaf4ec94f12631fb745157b22e74a7dbbe652693de406fbbf14df6a06e4fdb0dbadcb264257493f19fda942fc4c9513886ade0c9ed172a2238d68bb2391894d216df0df696662d737b59a32e39ac72a80f970a63eb62f51172fd02c052c151a1febdf32f568a6118a99bdffe094b2601e79f8774e24707ef27e9a649ea68d47c016e4c05991184fcb109ef06e0c489a998fcc68a4a98174001ff0cd396dc994fa4c98c500cd9ba9ce662d3b9f5b84e203b1b1d1eb8c069c51b17d1b7d647678882e7a74a558d7eb061205618c8a5e7f4f6462325bb69addeab53d7cf4eae993c7470b39b50bd71302db06bc3bab94abba6c68fc1fa039ead02a9f0cc70be55c2d591640d5941de6918874ddfba83bc84b4635577aec353d930ef0a89f58f8b15aefb3c425e29f79face0cd40af7f78d61e86532d2e84007e68988565f24a3d0d522156a9da4b3a8be2d27702d8ea10b82c61438ac888f65cf1d455962d234465c3bc31006900a0ef9c8888a0dae821d6237ef201c41ac579ac13136352b58ec8359614f2978220a0c3f7b782709eca6f5aa0f0da7999d74e010f7a5ad0e73d2905e7f8f9b0818274aa87b0ec0e1f79bd5ac8d0c38f321e296334ee70f9336fa19f0f10165a3c2d8c5800434c89efb18ccb947392c5bb9d010c7c0060645e895c744648bf36ec0e9b3d85bdc950cde5ee3b682eee88bd5e67610384e05d689dc6789b0a9e076fdfa6f4e71df5c8b4766a70bed361cb76ca3285dbc431edcf2489178639ffa3d419fbe74df4af1ad28fa7ba932942f23ef2c636ccac8c332701722a9118fe95b1b062884f6c212e465dea67a60544d0e49fdd0d4d48fe134eac8be68d79983a407185b3065b608cc26cad467b9e6b7dfd60611c1dec5cbb04b730f34fdedb7671e131607b0730036fc00d0934d7a04746fe7a951491d5c1283118e168bce80e6a1e1702735bfc75e00c486d030cb8a113a70c831a9c01fa39286d47ffbed12083a64c55b9cf76ef94b61aa44b2ff99828017a9429f22fcadd4f1ef17887fe99efff956f37bbc19ebbd8649f2e490d4c00c5ec93601d5902d2af32b0effe13b840e7a5af4825077923027220020a7db9ca326a0d167f85a660d414174b7680778f41eaa5931b08f84dcfc21eb7b873e7cc3ccfb220f3646b4f7c9d98628f6f1ae3a9dcc401083e0678e0d383c0be9014078ef3f7f7617c2757be500a5be6e2ba4b2532b12e6fb24467acbcef8e6c348b9a43d71e3a7b8b53b1943185500cc1bd17c30d424d786342a9b8813f0b36129800c61ac25076863eaf3006041d1cb07948f581b518c2868ea9b3711f0aeb78d4fc0e424803760bff9e33e00fc9a46e1f66d228def148876db3ec4552423d9f64d1ce643f1a5310a037fa9b01e7a7d7d5d59aa1628a9874d18b8dafa030f515dd79063a9b3e0881d80c1755160491924368ab09529c8550f207350d383543488797c49fd7ecc998ca85fd8dd44a25c1dc98c305e4282dbe1f50d08196444140ac3eaf6d2d3420d864180c6d5d4f51355d2f357dbcc7ddcab66eeb86b2412eef2036ece67c877e02739448632f72c2969c715961de7a730eed809d25e1817dd8d38fa5533b7d2f62e49d90bbd065e187797142f16d95041b8e4f6b6f8793f0d2e6bc6eca553c7401ef54fc18e5f1a58cd84029a8ffe22b063ff162ecc0bb6c13ce668c7eedd5e98b7f86be21f9bba5f151c7ff875f0fd47f0fda6f0a6d96e237c9b14476514292a03844722c8bb138b2832808467ccdec9f9de504f26bad59f3feb7f351ff925a5f781bbef2b8be99ddcafdc36080e22dc35cf9c2cc2bdcc0c001c33f2e88af7b76622f02491d8aca39d3ab55ff5830d6940dbe4f9f1885dcd0634fa9911aa252f678e2f8fe8dd8c46faece4f364e6788719e03f102fa6e8fd51008eb13bfcf58056f241849dfdb230c33510afed73ca8022675b4cda0185727a550c103bdb48f1ddfa7f97d4a07a597c1d3da518df2ca6da82526d010f9f6c822918047b9fd900d09d0d455196e428043f7a5cf498eb739d672987968bb01b224383d8da1395f88960de548c29db6ec27de3b83add8b2df237c277801eba2fda50c7e3d3e88aa4a818ccfec5b76cb7578af046a1b8a13f857882714a49d8ca2e64ba1853f93a4a65b1a296ae04118e43f1938ac44fc83fd500f96636f0fcf28b15c70caf85825e5dbf9494de9665d35bd7d15c49a95c5da5dd15ab54795854dc20067a53b0c7ce2077b4410583ffa2888dffbf5c7fcfa29af2d36f682ae906d9003add93c3c9ec2f6538c5f37a554d66cf16855af44e6ebc50cb79332bd482c4899793e9bc5634e48103d2a3a1a85fca72c230d0907baa6c16ca038f6370b08183daa966b1bfea35b6d2bf1e4b502e05ccff8e3e2cef814d191e2ea3368fc447649fc9b68f84c4d8a80f23f11c5f75a2be8cc43bcc93eed3487cca62f3fe3fe30bb5330f957278df3896762ab7722062ad5bef25489a8bc5b7fbf61d98ef64b178fd1b7690d1033ab3c771ebd5da3e4142710e2adc5ea3ff2c2cf4c542cdfa7d801d30deb0ed2b7ae7a39e54f1be84578866ae132ca9848069b5fccfdfb1428ac2fd4031302cc5f683ecf8e4c637e800e4589d9e528ef177d7815f761cf88101c75e6eb078799c9f5ae74af8611d021b2923081758b8bede0e30a6f0d1e6e0f4d2a7dad8e22fea0c2e2bf72e4e56b957bcc842512b74920c98ec1830104b1cab53ebe52682cd81c8256d1de1c0b61f6a7d3f04f7ac14ec8bde8d0f5caaa130eb61faf367f3a070ac4e237e4732c2aae0cdec7896cc145d0fc49b5287677704b2b9b3dd856313fa7d4bf96f5be3eecdafc16bf8c339493b74cb55faae72eebc1b79473cd69962e0ce8d02d82cd46cc0dd92f5a8df39188e1d8e397677b19097c3c912feb7ce18e1a26a6fd321f6d09ddd931b7d53edf1d6a9b91a64fd41a2ade02ae97abee0cc10c3d238494a388be46075f94a8b5d73ed51b2e16d44af8ab9913f393755c485544efa1738da8337cec8d7518793a3bccfdb51acf58594f0f8a5544a73d30b0751cdcc0874d63868e2dde3de484a373de3760af8295d3e6075bc91334c653b5e93f8c7ef9eca760cff3c7d62b22ccfab74fa9dadadadef96e755c2bb43a522979591af4ac819fb8a5c578f63bff6b429dbf1f5ca88fb76b5d7caf5c399667f6395d0cab02469d030d797eb10362ae38974fd907859bbbe982cd4a49a3db3689b568a72659523ee616aa242c8eabf74487c707243d5a190f5f4e5ddf91cde1ef48fa1faa8f2d7b3a52cd5932697f5912def80146d0e3303e1558bd666264654645fb527265a9cdddeac72b0e934b5c2e2ca99e8c80d50845ebf780cfd2ad570795e591738660f738ffffa106df7357d7663389c7a04278a3e4518d1b5797ce99ddc2826e71e306ea2586927377e5a9e573f03c3c9c03ef5a7ef3020c60c9e28aa1dd6a145e6fd3542448fa64a83e3ee89acb324cdc066059694a54b32c01d9c519ca9087236d2880d74ddfcbdde3c772117ada549e2b599926a6ab97f48666aaaa1e2baeb3d63dc2200d9ad1d138e611ae071642436701165e0d0fef15456ead9aa05b1591cf3b29ee42a15f1061d5eb8888f47b5fa187e3f5c34ab390d7cb628263359f3f0bca957d3a07118b674df252dbdc4a22f5800aa6c9d2b16f872bc98ccce58d06faa92513ab81ebb906a3129ee2e9464012f487de6fbc1ac08835ecee52c0a43612c09bc0fbd4b048525626854a80966e596cdac7d63bc8e98a07a3253f76b399db390473c91f1faefbfd950348bf95892796865f672f2c90fdec5a4682e7cf427f08cee3f9b66ea1b38a9eb67416565dd344518b86c9b791cb668ced4a15c8ea53e7226c2ad3a268b783a69d5a29e4c276144ba7c47d4fe71011c671e9fdc78a3b2336bf13b35f6d64f9b4ff8e3d9c98dd3bd9319c57faed53ab7fa539588e417e20cee06f9582eeeb6bdad7e0a6d6095a146606fdb72b55aa1abfb5a594bd5bffb095ff23315f8f00bce05466bcd39ef660a8718c77673e3f8bcd304c0e8f13885b83a12d14ab84240b3c5815308cffac3763199f6c0d12eec31f38fb0bff0334ea34291871c2edbcb5ac540c89399c898464174e1cffb09c303e3fe7838d1e4fdacec9ddcd8dcd4f79913222006f57bd5cb07e6d590bc569fdc28eb46da1310bd44e4cbe51146d13777e3a6ddb7094e1f23903b10b8d8e859114d007a86c466ab49aba6969ccde050b696c925e1ed0bca7cdd6f35cd94e749639f6832adfcefd97ce557d899baacd48cf21ccf81a7e09fcd7ccce5427afeb06c560bb2d7b40b99fb7c17d8bc98943f28ee6e5b0fed1cc888de63fd4dd73dc15d4308b0bdfb033ce80cf046ea55f707d728a2a37a2cf9f616bf4f13447aa6dbbba6f0931befdf9bd3b226ea355d61f7f0dbdbfa6e4d3b002b054b4cc2e29b04a6e13bc8f1d870440b72111da236adb2005941e032da9dd8d3cacd132b31ecbcb5c9d9ac69e178b3f971ea8d41dddb40dd2c36e78b069d41f248bd656e9680c9d911b1b95ce4dd91abc5a43bb26c1653d976c7eba37c183b9d2c979359b559d597f3c43d92c08977dc1137b6d2b7c065c421ef84ca1b9f3f8bed48a303516065e241db9e851f3b838d0c9ef88eb3d3c868e32a9f18cea3e87171cadf1af3903be38bd6467eace8539e250ec52499ddd6d4423c287a144049f6632d5bf6b4d8f9d2d6f51066aa704030410d1069417682b87c08da1331dcbbd16a89223a9b1b194813840600e3610d7e060f86376feac6a9eb8f8983ab896bb1d028718cc15919adaf21368f16566353668e959846076da6262dc72a7c1948ac91569fabfec7eda52bc5b546ce55d2abf5055b599d5c0a312fc2f56e0c1778a0d524e0a1deae205af31bd950aedae6481347c2022361b2f23125148a6c17acaf943951b03261b366992f26f3c04957877d0ad979038fb21d69be782ff40f03d748d59d68883b2abd4e5fa25835ad66b654edabc95435ab561cd08f40e4ff695d1979ade4c297c23e8372eeea7216c3d56c090ff7ef97f95815ab5add97759dc9fccc24bb172443266013053ee3e97b9d1771c9e387d21f34b9814d8e4785d887311d6205922a1df2113c5e2bfb68491eb2f5b68001aa1f6e19256e1925db3240ed7e87ed1ae048ecb83c2507f13106896fc5b6b541d79479e97c4157e2c0dc18c628cdeca00692fc2f9adcd22a893ff3f12df4b71a88b1ebe8dffc049387bc817301212ee990c58cb19b21e053c7551903fe624105b8d0ff422e9faeea7632af3557ed8ed46c75430da72e2db8b3c0078281a0cf48f8341c2406037ab8dce9d54b23d9f959f1878e74612a78e1dad8822b5332a5abe5401c9f1a0467684bc723e2a1e2e6b078c7a45698068bdfbc055195d8dd202cb49b0d6d39af329c7d906c0b93affe879b325317e2a56a7b160fec08642476113e546063c119cd916bf396f859274167cace11883852c70fd5e9c0fcefccd31faacdcdf87ef1906e5f0f95f1f0e7b2ba72cd13a2af85894a1f296aaefec8ca4d4dea9178a4bc18e87114bbb14d6275498f14eff22fc9874754191c1a9d2550fc73da171bded1d123e54ed9c6d0c2a292b8d4a8c3387c8f36f500e93293f553356d269f54f17a3695cb33851270e3e320706cd699f76994d335860d99570d34cef8d082c290943a2e4f0d7ba6c45438330cd229e0315fd211bd67756689dbef4d0d4cdf556cd9cf0dfbf148723f9c262a2873c87314892e2af757bf5c8f7a8fdd11f5a8f7882a857ab3f82f4bfe3494e43d72d4ae9bf3c8dedbb76fc78e791eea323357c5435d5d9eace5b7b0962eba945eab201a3a345325a7200a9430ac544b27cc1169eece0a519a5e746c50a03cef29d09a83732f485b3f6a663fc97b59df02fa9fcd0cc2a44ad930a3ca873db904d6cca987753e2828cd05e3882e82558b2a20d8cf9f2d0f40e6c2585a6ae61edb142eb8dbcbdff3ebce67110dde6de7424a6feaf0bae7a8e3b1ea0fd67095b893b08c0d990f2c8d0f48f734c5d26510d3a86ef9efc155ed45faaaf65285efc429d93bb3e0f5cfb61e84c598ebe678594ca99cbcf215adc5f778fffec583bbf75fbd3f7cf0c7ab67cf9ebc7cfff0c9b37b779fbc7ff4ecd9afefdfa71c50eae15e9fcbabf20d27cb43a256b5910d97abf9bc59b4cba349a616dc83e6094716f13a45a885e9415f60ac5faac49b0619af6cd8ccee37d3e9a485aa5e344ddbcb29928dfdf1e21f94f67a366d56b364810ce8e04a5f97af13ca8aed78b204bc220b25040167ead201054180f19325f6f1d3f83ac40fe7630b53daf564038cc500fc36764304bbc75701d20d8381226cc965946cae66c564563d5f34f3a57b3ec646e1223b249639b6dea9599256a70a0211dcfbf7955aa9309d2d9d573dc55e153ec4fbdd64edaee5b27d0051b66038adf2207df67421bc2218de071fe7137cc6d6d76337826128a9d6fbb3db677ecbfcd61ccfbfe5f8ea22208f28f31f2a3830381822c67c7b1b201cd990c3c9f285668bf79be9bc9919b40c5ee49b906fa445061e1608db7020b68d27089b3384c6f5c795e0c0ffcd3758a655f1409b557dcbf747d1eded285691d85b890d7327eadadb8ec330f7814ae0c40ef085ecd79ed4cb11b703bd0ef57f9af0fa039107eb47d2ef81f7818e47ee01f540189e3e73462c72405b06ea77601a152d366803a5f981c1e66184ac0339c1db50b6302c149a107907c5cb54b8c9112d041904d1927d5926345ce8928704a92cdb903cc4a4e27c44d26fdb86246792a97093c3f35bc97c14e68e4d9a9725138a9c520e2d060e394c72ba7c1708c006a22434aa2bdc710750993ec6f295894bd202286c1363f0b47c54f6a196ef1db84a8708f96d16ca7dff54bd9c28f02a4052ccfa5cdc93e561b66f50e4263e8bdd648e7751453ec74e32c79f510e30ede86defc0b06698f7567fc057a8d8177f66c4860e3f223a2e07cea1b1a9af88fa64eadb75f525ea2a7252177eacaf2b7c7c085c8cd3390c79ac9b43c760e387a96f32f6ac01d49278d6210d7259651e65bd73bd9c799c737bfb7a595522ebadeb652d13596fb3ac095bb1d80acf59e0e1dbfc96beaf794d567caab43362dea8edde8497b05f7b95a710bc9a855b8809b56462134584b2de06e7cf0e33985f7b3f803a41e18c6e124498af37b1f9a6b3ec1f83b233a7b8d2cbc44db1ad4f0aefc04039b775b3ce6726b4e59f5fda405906974b6cdd6d681dee7cffb8f35958364eebad01597e54d7827c8cc4f1a93b4364fdae99cd4d043d2a583e4ce180471e630e03ccddd31c11ee3b330f722f0593353de0c63da01cf29013e7a1a593b2f2923de40f8b49f160b16816de8ad59fad945cd413b56c9f6393dc2160cbfb5d4ea5416403d946a1192879fd84707e1d393350178873ff6cfdd3a64b362f42652f4bca9fd495bdf62e14b27e67e3b6061d3d83089be725fa3d4257753cd79aa8e713f0c3672f2154d33a4373ac30191b0e96dbde6afd54468d362908ae552f8741fed2490530c6640e3f65d72eaf4f71823b46d4b5dc12a123e9111b293ed607b41d5f638606ae5eacf86703536402fdc65194bdad245196571265a2e69ff7c3859098f9b54b3800604a5346ee9433bb66af2029bae8026001a873e964cadc8a03d74f396d6e1c9be249e15c76cd719a2fa55215111f8a525dc189aa327d8fede2b5f28a51c95d8b323f949205ca2b0c7e8b6493b274a58c7ab2d420783032564a8a024b5286a763682d92105ac61e082546e6c8b4e501e47a5b5e77a4d00bbfef41a23c04b0250f27cbd023e6a1bc72bb91c3ad9b6de6af9a37cde2ecd9cc1592d8ed13b0c491d10db3d483eb30d3d336f6a096f3e184d3d4b15d736ecc73bc9ab147d8ca8e73545dcd50d7571ee7a7a1cdca5a721897890789f70bb55cd56da84b397caf8f39ab25bf6a6e87d7ab8cdfbf765c7c3b5e341761f456677478a372f53bb99df0ea0879db2c58584600ceb2613b56b3a4eebcdf5c7cf11e9ccb3461c0eade1ef821f23c00467c907c23e8aa8316bad35d28c593e89e8bc47c080adecde794a4df61e971126872779b22f3e0dbb917cf1e5732ff0b84d0ea02e00cac30b3d71f2e54b90c6ca9caf8aa9275c98df462eef9cb8b750ee0bd0b9045921ba425678b6d196724a2cac9de130aa23898a09dcf8047e8692d86995c2a57247b7b6a4b7b41982c9f36ab59ab0ae6e3cc84c54e82cd13387f2b332f3307de5782ec5bd469e7c66cf64177e125a0cab5d4a35a10135c952c6f4ad448ce9b7aa8ead22d35fd392d7bd40d81550398953d67e2a08673795937b220144484d0391390e07155013c7f26f333cfc685687cd5f39269337d804fab524547e2859ad732571da34163ffab2382af488bf2ff86213a6a16b9f1d61a8f1089a49bdff54627e7a393e3e8e4c1e814383aae0f85199d65198f44c6353acd0a242391758e44c1478220d573c6b42a23a9ef405481fd107d07772ab21d72dfe172dcaceac2b1431c4db4e349c568f2c12a4722f32f470641d1f9b3982c9faf168a3f1b8903b15118402078592a405bbb043e113f729e8712133b1d1bdbeca447148e4a0ffe8efa1b1093167d966cb24a8006dd174f7bd01c38cbfda2f7cd03f1589f011f791d8522ac648988a03d2b0af49c99d046a18bfac5a839ea02951775e92d2923f8a1f16640d484617a83c26de881fb35f242c9cc6c1ffa7ad796a6022a24ca4cb2c4727182c5afa4fbb42e4b52f7a9bce20a7191d8a8519567e936e82edacfc0770290e69b495dbf50b99a9c2b7c480272ee8c26bac0dd85bffeede5dda307efafa8e3aa54a42a3bb7ee42d196c3d456910d6cd2817b9a0bb4e813a366b782908128bdaae1692d37dfcb358f680a0e53625ffc557ea555e9340ec9ea2cbb57274d8ecbad34b29d72fd510a6aee5dc2c89430324a0fcea0bbc3be5880fd3f548bc9b9893a5a3453fffed8452358a53b6bea5aafaeaf9be0bada80aa62e95c0a702f6772be1c372da285991d20ccb44133a5a816ce8b063da3235b22bd854d529662bb5b9aae2d15deebaf2b676de3d7440326b2015d765cb8630daa81ef11acc1414c7f837f457ceba9818ccae1a470bdeb49f2eaff795fdc6237824fba890c202970a2987a1fc9cd53b5953a7005d32e5a90dd669b925939e7c3f760c217f87fb1c1eece670f07cc019030c7d16de37203fd257eec9ddcd8ddbac3ed58d1af86637ddca6992b12defa21307db3acd3e262b908361ec1e9105efac31162ebd924801ffa8ebd98ccaa17aac4fb55dfeb98f9f1b70207ffeac4b4d2bc5ca5b0775e1b81004a7f954ee0505846fe3f7f536b3a77b195e24014aa56ad12d9b13ad5a741b45523af9eb455ac03c2bb41602e3f1940b6d339606483d3b7f3e3ad48295838a208676ce7ce1699b1abac14ee31a924b32ddbf0ee746ede443ada46abe263a464e3d8edd44c65e4e6ad6d5e42afd0c11b6c607611888b493b1667ea7229fe07c888623264fde15fcd64d6c3cafa0028f037601764febd3870a6e8a569841cd81d12848409cc808ca8f7b8892227db037dad61ca42f98065b28a4759a03d14a6f1cbb443890ee3a8a2d28f0989a27f63ec315461b04c48baa273303cbe57148427c37206467b7bc9fc95ad033165ad29f89dd499bce8e3fe5339eff549f519ad9e308933756931157a997d0116231702aa4308e98c62c2f56d95c986a6a50b6f7db0951007aa9dc2eb34f1495b5b5bd90bd19f3357ae753b17cc5c4e241859a07917bad7f04622307766800af19351fb66d4b4334042b5f506b1bc3b79b23b558f8a1d2c8b477875af8987a88facf03e2f3d4b963e4ea16533f73c004b72db904b2b2bbf3168668c020dd03b448acebc96af2ed9f65bf3e45ee0999926bd4e5bebb56d755b60a0b9821b33004b9189c3c6e0d5c32c45a31a470e2103e724197b53103279a77ab9d39e8475e34ab3ee43eda038c94e540189490f44911c88b3eb4dda2d3f69fa33ebf2df6c0e2f3c2cc8c0d5314c0e1ec80823fb62c26096cec7a7ff824ea64c8455ae19a11f3ac8fa4fc55aaf0bf98f52f63c6290dd6a91d91a6bf1706d5ab020df973cd9115a67d2c49c1f2d13f812d91a7dbe3fb2d4334d8e8b28338bc86e3ee945948352335d3f565d0ac37d77f2f8d5e74db27e43a5578e8d396b9e30477b9f4a632235ce7b593fa41d5aa6bb9e75957c8fea557cc1eedfaef3734038e281d9e5477403ed26af10ab8a46f523233fe51d44d89dc4c3bf1274f86ed20aa4fb09d2cabf9cb4d02cc5b4cf6abbefef8bb77a381c7b4052238ac285919df28d66147bee5b4356bceeb374495d34955b9a0a5c9e8463cd399c578ff7f4947f313ddd4de21dac2395a29b54fc29c979e3329d333ef3618d38622908d2c13a622918b114096229be98587c03ddde509863710ece3fced4256979115113f6a488a849ef1c9859535466555055ffbaa4f4852d3b0beae822b2c21259d1bf6296a6a4c4049965d7f4bcc0c8ecbca72c08c419bfba0046a7330199ba5f1fc4beceb0d2ffa17eda3d7b1bf0b4f04153c64afc24c60e1463c5d0dd3f983bc0cf62a58fe9ba880f5836f44b8ca0d40fc1fd0639ea85d817ad6ef78781181faf4e75d303cfab6e862e18ddb960685f4f57778f8a3bb89747aa78a0d37f60c7fd0b7edccfa041be30f04ad9bb80c15df5f9b51a3c758a0318de0bcd3fc8b5cabb9d9db22f686b38bbbaab2bf40b697dfa39c687ed19889a2d643f026460cce578dd7c616edd88b92ed80e7bdff4f383e9e720eee087a0831f90983ea486d9b4bd0efb090dd495176694d7b655b75453cf5ddd2c35102bda5e6e02718f4fe28721cab8fc30dd332b7ca5291256f8c074f95e7797ef055dbe875d8ea60fa96a0dfa2619938ca146fd1ddc26d38bfb456a71db753dce7bce116c97d8b6b646f9df6f25e46f63b12f6a146db992ac99c3d8e50cfd13042c460f4c7d0de63280653f06c11113a5c0aadcb81816cd4c0125f0945f89e79c139e73615163bad9ce395b3a1fe0d9e35f719bf3eb709bf32bb9cd794099e78cdb9c5fcd6d709cff0d97b9d6540988005643469bbca05c38cb35cf64132b31e2aeb8122f921bf2f5b9cfb5fa70c159d0ba7e70a674711553ba204ce98231a57f3114ff69ae142119e049a604382ac29bcee065e53a8fc5376f8a921dffe88229f5b898e69c097486ad43f9b190aafed4d7ad985cda6a6f4257a68ebaf14157068e9b6be1db4ac381e8ce4046eaab3e4b7bce3e73979c3a8ac7143f40ec997911e3a33612679188ae3422baa8302100f3ebcc1212e567f60f057a6783a09e8368f4c5c80669224895c4640c6783d873b748cbebe89f248266fa97f29d2744e8d628ee7aaa0929f7e0cc131f29384b96a2a7fa2cda7a44c2857a30a8a087f4a7ea8583eb851ee301525824408591010d8b314a7f4a23fd2951fa53a6a53fe3fe408cd9cc1891dc382a9dcd2aeb8849592160075b2f6fd6ad17b72e70d174bce8e01f804fb9b571d6b1366e99ab9c5e1b0054d52597c585c1c3820c815c16738472d92eca2aae5e547aa023c96ce7d2f9ef2d8ae2ab2c8aa894d47b9c2b857e16283d2c2991b2f49dc3110ec41a2225adef96c294dd5218ef4cb3f4da03e5205022bc4dc8f140f402ca181042c095d8b5a4cdbc6006198c4d3adb80f6d488274a2f9538a75b364935ce69aa178954b5ee184ac2ca3e937976000ec18ebb71460dd4e151806facdbdc31e516611b6302a781f710c0031f0f8bc9725e4bf0cf087217c4ff8439739aab1ee3fe6f769ea1a4fe37d5a439d4137abfec6d6c59a4fd073664db861c951491eeb708a6efa8f4307d0fcbb5d18f3aa2b9facee392e2beecefeb16984bd90fb13a45a77ec42f4c3fe261ef51c911bd1e96209472dfbf0dc451e9bebd959783723c5907327a8782096f6f33e84f6b1963d0bd8df79f3e88d499bfa19118e369991ad78b086634b4f2d1edfcd19b6d1067f2a87801866fbc26279b4325a556569ab030e918dfa19816ca911e1e3a5469e3bd5f4b82adf71bc1d67b5852a0bd320dcce7333f2e7b8f4aab2ce92744b7ee71d9fb2d8ec95dbb71f158a565afea4f267c805d0015fab8194f7d331e961ed9d26a8af54cc706ae574c37ed3700d635f4feac84b77bfc78ae3f6e998fdff5c78f164dad04bc06eb6c5e7fedda5caff4d76d9bed35a4dcb119ffd09fafb221eaaf634b0f27cbb96cf3b15a5867ecb4456f4b0ee4f68c7f3ee79fef82d4bff3cf3f83e86f684db2e291594522f38aeac717415265d1ada82d70659d7d813ad3ce764a97a8aa42db42ff4edb8f30fe89b5a0f35cea9c2b821d6497275350fbc80a70378ace48fa2196dc95d868e3aa0b1707260c2f6b305df8c6f79c3ec7011847a07d4f5e85fe2074eb6f96cfc58198546224feaaccea300661ee29011419fd6e553464df3233a627e75b30e8bb6683064826eff452d165681a7254c75bfa5735081a8507ad8bf1a456d032cf02034d1ee501d1ccc8b392cfb0c7a02e644d0b42db85773622b261fdc6c604c04b95cd405555335f951b9d67ec1efe0c442e7b6eaab1d9304abf433bc43e0cee33682dede7373eb9640390f9ee4ba7391a8b3e3bcd136ab7ba52c3f61f68a52127f8cde7d2cd246fe1d4b550af58e93143d8343230106752c84241073a4a672db748b09e240c3871a8216e2dfd2e0e7008f458483182ff7f878975277533dabf477d99b9be30ada33fcb3e14f36769d60c963780217e1e2cb867e2c010925df8f49ec3d63cea7fa604e15030912491618d06f6195f30ceb4898cf2336fc5e9a2cd703f1bc20f96cb8e3966c32f97808fbe1d7fbf05f1598019e0a38f1c93acb5bfd7ce4953251d3674e83ceb63161a8ec66b695e45e6e17ac207f4b496e170709acadd5cc5ae9111c9ee859a156aa18a17aa58e5ceeae9c4a1b3fc2454c56492a82d5e9823412cea86cb5b15a8d6023e40655e7183870262ccc5a56c4565a5bd39bdc07abb9ad00687646d024989ee97bef6a9a18421051fdfe0f2c0ce25feb99dc1eb36f047f1acd0c50475f7f151a38afc6967d19650b2584fa5461b504f89d198a4e6cb4cd6c7272e55b0a1b5e372208a532ade1789f7f0e3a0912e8fc3feb60d734763f0e0401a0f11a50bf436516e14e1fece2ff74691da3e39e1e5bc82b03e629870c5eb82b1a684d505d735d2b7de00625818197341becfeca6119f4fdc935c0a9411d899f8496f6407a277060400656d0da0ea0a09acec0fc454fcac3730dd65d8c7a6805e5362c9b2520bb7f6cca9c704db230f106e6d0997bd73798d9d1a8a23d41c5332481eec50b91e63d359934d09d727f56e32e7242ec62cd826b623ba8eb0f9e137a659cf924e63cf6655da52d2cc742bab9190f61a01de74f51dd710845ab68be672247217305f8e1c09adddd1516a0507165395b7012099f429965b0748b7ef80f80a54266912f2a405f8399dd941f8852207d8f6331733f0a9f24403fafdf592906562482da3d7e72a7b38fb6cf74e1591c8a232baa9d60e896045145ea12c81e2dbaea97c662bf7165151898e8f95d46a2ae227cf183fa960eb8fcd3e91f1e9ad0a08a56343d44bafaaf42544a79c2fe9e3e8a2eafd86966f2593fbe2e053e99b5904d71cd7320981bc8a2eb49d4712ae830536803dd9a7e82ade8ea1e775b07015c4daefd46a3b5134b924c8741dc10d94cb1ebd1a57e55c82795be92a5063def95efcacef0581b9d4eed6b6959179747d6e74e10195df96c42fa599e3c2c47043beca6c0cec30cc3795917853ba6d0959bde73942d07d62c4f734bf570411d17997b08da2c22db8a246397d94dd99835ad6674b32efeb0830bd01511b7f03715ec3736ad983fb113bd4658e1ba5d40eb2f0c08d64cf1e5c0880845df404cb422196850ab02cca7523affee303effb5f395bb0bd804f805faabe28ed1094c110db434dc547cf8df6185ff66d76f2e853f922c9a80ad30ec19ff1d740ea78eaf1ae818b2021e2817953bae07e415f78fa7deeb7c12a1e64f13180f9ec054d805e4d3489852883931479c72ae9696a5ff8573870b850f4ce06a276b2367778323e09a69a9588723293757d697c4758a412ef76c4896acfdc5ebf50d262398cc45368ff6ae9bcbe8d4459b9309bca07d923820f793c9d833ff873f548ce8a5ad1b827f2b259b5719ea76adad06f47c534a8a49f168dc7051caa6c55816b2e1dea5f5d26d7efa7db777c28370ed4c78568133b968cf9647ef7ceec85865bda45a3f9341a4cd2120ce3ed30e52dabdef7dbb707e275293e8b5728dfcffabc92c46c90c2c3d8c88226a7579b3cd81a015d739837b35cb6bd63791ae8e6fb56de1a88e7ba8d2fcb815855c36c322bcc434f868f0979d0ea804e488b694cd7a0d0ea124362888d14aa4378615630ee0e88b81d74ccb349610e08ee8a90a2942b68c2133e699e098c26c7eefbe946ba19ea657dd2c8226a16871fa39d295050433724cdef823dc4de6682e0044bf577171e6d167376c2845d06ead0942ef6c505239db725d938ed65ab082f5bd64d3d67236c704ba2226765566448d949c8bddc4ade5667e61ff930e0d587206236687d133a71a13cde4fafdf7dc3e5575849fa957df5096eaa75332cfffd0c47d7e97086e946704e3682bfbee24660d9c3ec4bd8831749a6ae66f1258c5f492ab82b15c7dbe4b5ad38de3afd37dce65fef40edff8a1da8fdefee40ed57dd81feef21b1afb9bdcdabb50c391cd25974f0fa62b66a4a9a57bda6f2282357318d8fc1e3fc65f0fda9f242596f0458a510937fed7d6f5532f15f23930cdd0c9ddc387cf0e4c1ab078727374c7cdb1511e3c3e5a1c25c0a97c3bf5b5351da01a256dbef083a4426a04364001d12a689615baaa43b73a626064a44df8fe85dcb7b36755722bd18b6edddddfaa0fdfc590f57f3a4b9508bfb72a97a7d92e23739554164b480620f9c190e0c1b6aebfc9748e3a1d1b7236463ab31881755e6dfe9f367e32f97b4dfb767f0cf5ab0bd1bb96fdfeed49c8a7436026c9a8ab90bfb54454794cb8ac910b3e0292d376479426eb11b96022251cba1e20f6e56d104402893b922ed839d3d1af989bcb2dbbf8f55a44aca6ed322d425bd5bf53e56ecfe4ea283d280393c50d499237a5d0a5a39b04d1bd01262a7d055ca11b3692e553eb979537c6f518f501b7a977f6effe8bf439fcca4fba667ae4d815f684e0e128afc5885aa3f30699f7c30f4c2f6786b107a9b24ab5ae7a4fd00edceb19285b16ecb10882b6b8a4b1ab2f1d16205509762fdbe17f45d567b14bac7b2e781253bea8ee1d0e9d2c26c7eacc40178e726a063f48cd1ade174e4d41c6c414414ec49d3c9631e56b136dbb38b995364fb90da695e2600b09d0bb61945017b0096c646ebd1d8d11f1ae006c8d0e587f051953469cf0da89c3edeb3478acc39457b0cc709e5df3802a5afd245c688741b1f0896c83a976f03860674735f6c7ebffd43c2f9d64fd62b4042c369ab3f10bfd8b679cf4d74cd22d1dae1f60a5aae89d6db5da011daa9e6c664a9327abec9e966b7eee503d6f7c61faa57f5c9d91804b4cc4b00b3b2ca0177502e5490250fdc10b8de219af2f6f703efbbaa1a8827b67795ef1d392b12701fa4bbc2018e188d769fdcd8a578e2118e351199041f6dca39f57f55e076500f9b123f19d8466833e71156ffd70cc620bc6b188400bd347a80bf83ae1a1606dd0f1aeb4fca8e82ca35146420bb2a637c836151e7a3ae273b1ee80f77925a78a2810556143d198e46b2836872eff41ff5780248b2efad1889a7c1ca8ed9c86fc933b1ef325f0f0158397dbb92be8d06eb241ce89d1f63ade63413b33ceb975e1ea3d442b34a04a8f5b3ca985afeff25a6965f97a93d4b0fa6eeef2f80b942785909bbbe59becffc568b07a3926ab4b091e5dacb74f3e543da93911bde018374f361fc0cd61f88738771871e1d3f06df05b6dd39d85cc3ae490bc9fbcf98a97e79a461212a07d73c2637f71a589441460e147ff2089ab90b9cf98c2d9e337100f99ff6ce4041e3ac8bdc07900c69fdac4f1f24a7507d176e3169e71c6e3be97d6aba0edfb8eac23736ad98afc339aeae85e1dd9dbb3b1b6a1b6dd8574433a0c0242f8056908d3ba3d0e7ecc201de3b92ca7fc22841550e36b82579ee429e10019bdcdaef5a18e26c20ee420b2a24d83aaecd368d74a3351a569f3f7b9ffefae339a80075cf9f41c1c625324523b5548d0354d17a0e07f895cd308686b6035123a0c781e8fd8359bd12bdbaea42afee26bd7405a9f07580d557b4774d3428335ca3790c213a0b11a26171ffeb520621bf0215c4c49342dd1f102606ba429696eb816762625f9c21231d7fad06a26f09b68d841c38c5786973336f8bcd612e0fc4588cc41307a7373624ee9972cc8b07ff51363cb88afbea65f4b5b96effff72763bb09c36c98006c075193d462c75700d6e9ae0ddfd81881ad87e15469aaeac37ed62a435f0d27fce488d9aebf567cafb1bb82e2bf55524237a85e9c297f2545a6e77bc2bfedaccd5979b623b5fbc885205ed7c7f3bc1a8d383ee5bf4f9b36668fb91d77cd491e611c89fc15dc3157dd8b84e1fbe4ad5bad7d7de58daee8da54d6e2cd3ffbf0e28dd08ad614ffa2ecaaf6fbf770a0aec1dddc9f32ae7659335e1a6b87dcb5fd336e02571c35f6d81f49f5b38df8d6d7a112dbd34300b5cd83cac88d26ce6da007a84eb18557273444fb95e8fda482a7b6beec1fc6259210cb995b704a252bc53229e314f82316370682346ee723d2662a158ffc67b410ac66eeb5a17f217b1cd55e81f28b36f4fd669d381788a6fed41441c62dea8ccc24387017615debce98a7127244b9306818023afc4e4f832d477f6fe0da6f43a8d8a2cf4052df0139b32b1f25aa231017bdc4c6e4c6b09df3e8b79518535c2984c55f16cd5de357a32ce095239f4516224b64ed064c2be7c84329ddbdf87aafc5cb8a08343eb3430151a964629c5bd3c4904137262d6ad1068d40d821e5374d68fd213f6588033cde9f3c0929d493ab2dfbe7003658427933cac9a7a1ff0aaae397b3923cfd6452cf6355390a35b69f694a1087052ce2e05e4913bec50aff09262bc2c38a496012efc9c0d331a1bbd853345c14910c46c1d835bfda361d52d8023a689308e1acd34557d8b254346f52d8cbd3e1b861ace28d2566e9c1e4452c241d7d8f7c1eb358e38b2b6c236900fba43a292be0307d8fb70085324ea8ad397c4ceb154ff8650e311fbd38ae03db278113dd2feaba1032d1c3774e368d00674ff4b32ecb49d9adf6f72ba35c49bc22f215f0d04a78e631f2a70ce3dcb276a89b31887fbdd3e4b8ec64f01ac796243b50dc72589bf2dd8e86e026c941be59899a44fd71979ea417e82be5064b04243d9b8d793a42369b68266217a39e540948f58442bc2938daf45cb3cf03d89adccebb4885152e464294fb96f09dc74779c0c5e756fae094351fe62c11d1005c7559c94509fc55d83fbe6b97a2b300c016837a4160ab45a71cb56c15c2270042961355d7619d8b7d087a02c04223baa7a6110c71222e57d1f94f7a48ccbebccbc1d64fec5889080793d535f50d2adb0a492788a8cd1edaedfc2ada0e0d71516cce615c14eaf5f683809c1a20dcc712318bac22fe3145bd90bd3e3718e58b0fdbc4f180f39494639f599f89735f129ad2fe7a6297439807f4c4d28853f97aacf1bb6bb83ca0772d80c97a54302ea5a10814376b3b4bd48d355fcb59ecdd8919373803d7a50554e8af988e355e93f7cea23c3a2f021d569e416a036ab589ac4a58db295b4145631296c2cf0a249cd1d31d08950695f084e278250458dece68429b0fd021e0218e9470fa3f817f289d423a9adbcd3f5b04aba1e56cef5b08a5d0ffb46c1117dbd9754fc5bab8d82b24d14a44ada2115fb38b6fda14721c5b2a4fd1d6724cd475b9f0c96b65ef4bf73aad2f7b092af48836469e6736b205efa1cd69f0d3b6e9c043a9e8106a6570255ffbdd55876af4600742d7b8aae24a3c323f778537108dea89ee4253f611090a8691320c37b06a5629f217cefd1b99f926991e19488e49e93d868c1d0fd9f961417f5e89f16752b2aea575ed4939e45b52cfb78efb8aae0505717081dccbe6f8397cc1023310644af385d6e856abf857b091ba4842b31f53a7002058f64464bc2a9d6149e61d3e5f01faaf6d9fa6afdc1849f0b8b8ec77502855138efa53b09d028bb54526ffa827b8d42766b7a1232dc4bcbb4c2fe1b15cdb0c9ac3e5be81e3f57ef232e913ef50ea2134f0804ac1222585f988ea5fa5856036bdfdfdee06cab86e3cb6201a73ba7fddc795635eace194eb2d108a6cc3e74fd88f7707f51a3929fc2c91e8856a666d6bafbe12ec0ef8a04cd38cdc3bf0f89162e0303c115d4ee571078154197dd48817871b248812831f152828f0a895d1c08274a6212c79b374d9ab29f7a6ddabedd1f3899fec0184be47817b7d215338793a2503333fae101347de30710c48c38e170d350457b667f100e706428911cd919f518d661dec00ffd24e9ad30e55537293b93f172744ad469617f61dc930674181e18c25de7ebf2c347ebf9e10fd1b899e461759d2dfff17a25302957d720ec7cc5b2fcbec631e7fdb80edf1b89d65ec8fd92e7250b7c91d2db13e640a4f0a24c42f13a5dc6e77fb75e43298607c908cb32c7b9a207af46e200305f3a9fdd8be1fb5cd6f9aa96adba3f96b34a15f726ed1260c89231a6d891d8defa61f7875bdb3feeecf6c5677696130c61a34c42f4571ed11eef49eef3e64db1414441d1b5ffaacb781acd9e21d0dbbb51b340d973465fe608c6c8988a6589306f1cbb1d701e965202d0606c82a94df9efa8b0a8e0cee026d8a2ef9e01181a58d1adf718229cd710f7046ee520e689f66cd8644bb53837f37f139e2013a508b16d9c8f19f320d0469a953dbdc8cecc2560590ec4bcec8da93228ff0b1f1bc077338e79b48724265918c5d671e4299aff11152a7db7ecaa348a585b699e981211fab71ac7b656d3f4bc08433e73b12fa657f4076771da21463feb8b7414e83bb876cc759fe75d65c080a463f7c5593fd068bebabc7e4794a653bc3c275d46e0df14c62432b2f37f7fa7a722843274331d4574ce7457b39235a227970063d3a5679f5eeb707b8baca403fdbf572c6c9941e7d8bd4a75318570b3a83ceb1aef796e077c859064952249e0cf16f93b41b055e8beffaa414b0c19ee5ddecb47aa0d9edf269b41b873d54d22155193ff472dadbacb0fa616fac4929004ac647b62493c409bd6a5af1deb2f1e77c2839122a7c358c68347d69234c14a56f1dcf8b4075e8156b3652bb35abda7fb8339ef163dd58f044bdb83eb1d66a33376d8dc273d151eeafa2e8648449c9d9c422cc0841c21be9355eed0689d5f07639328253a077fa5e3f7d7b34a7182e581f8a557807ea7340a24202006b37ba3fdea67fbdc8a138cc4f263f09d1083cad0cb05bec5de26ae05f49ef64715792d99015c9c854878134022bc0dbedf1166439e265f270dc264e2c4feb0f787be530edf9b06fc810ef9a4854f60e14636cc9f41ff8c15a4fea8989dd711d421ad411e6bc4352a78cc3af3c61b7543e7df3276ebbb9a3e678a00ee240ff7bb9f8de13387b64d16e7eb0dece14260cd77153153dbf6c6d50e0393bc051337491b81477d7fa3b09b0f0c804471808fb54ff00c5ac982d1788c28caaf3cce6d373cbabbacbff520cefaf34de5dc02fc48657a039c9a6c20de541dc3e76123f5119d36228466dc326dd1c5bfc569b7608659e2c95e72b2a24bee1bea2c64014e4fccc792ba54917ab7dab5be4b52e6e1d9d8d1bda9d5e2937ad87a3bdad0bf8423805a268321f97d396f570b5574645b134d6043a26c8960565b47b654f449127635bfceb04468fe6c800cf00983eda7238540282cfa7ff388cdca8e110b1781a52600aafec66281cde565ddc882352077705bb394d709127075f38a31e5674450ed2701e4ae64ce4410adf9ddc822e060985bbd832869acc63a2fd3db19bd0c9e84ba9e31949f4cbc4d38bc687f60278f1516c334f4cfa2d77ea080c1f423a33c78d6c91366320c947adfbc6c5cb7d244b198300f5b67b4e6c232f371cf616e98daad3d7f586a3eee157d7be423e93f7f3668c7bae1c5581fda32566441e797be75284e423d9b79a08b51884833a2c1ea4a4a51e334a584139f53088f1ce8f7cac116235142f1e664e7f30f63f602d86909ae243a929b25928a234ba52b6b3c1065c74070f9093f0c65a6377424e0e9234d381907878f0f6ed5b8cb18c279ba8bf56d1665788b90306686cd751b0be1eb0fb85e2fadedfcc8793131a5cbb1976833f02ec934d83777b66edd119fc5ed5b3cfb3795cf4e5bc5de28bfbc819897712f58295453a61f5cc9eddb4eef7ffef69829a4a94b3f8ecfc963203f27c54a8d9765127f805a5f6b72b0e415fa3b0b9c7f0c9c300455c1b7ac5121dde0413a5412a94bbdc758f71adf1b53f113f24b376e95d30eaff12e7c0676853f19d3c0b1f3bb01725947a135b852ced15ed037646837520b04412f94bb3b03e36ac361b2cd1c029d91533108b82c0074cb38a05b0d3e1e3a51e2e046cb33f49df43870fb6166794a2f876696c8f8733ed23d01f3ee0998471380e33cc50607d382f3612664ee2664fe5f9e107e34f313138477246713c5e33a262c2ee0aa890bc62de3fb9e370121a37e1054c652039a6030567b7145c124e27419dd49e686c884f1235f4543a3664ccd453a922f8f4d44a8757716fb351c7769dda72b7558f51b6eea99f968e2349a2a672082f14f0d340897d23d5f332f46f57fdc63acc19d30ae6018eeccea0be0a41616745d024f8a3526ec4401bc842af0ef45e0aad22dd6b43314aaa7eed386c273a754ef423a6d15adc9c39ded931b466d20502fca71fb75e6554e662c9dbb1c1c04bb18f910fc354e787273bd067c537b475b36ab454efc072d5bb88efd95f7b27efa9e75e62fcec15abd45e517f5d8e9079aa2a751c82c0a69c65cab104af13e1ae3a9f52052289b2647c53d26b0fade1c1a0da8e06dffd9d7c7cdf95ccd8afbba881e815425cf64b7b050fb5ceaab09ac52840df1cf1ab99f57e132ec5191d764e62e7ac44b796ee5675c3390923476226193c2af98b62d008d6adb45fdda042d0c5df998f39aad88748d2765a62f8e36a1e5533693d33138bd8198198b998dd7a274c94825c35ea8cb8453b52aa9df16fb4ff6ce4add28c74eaecd81f5e4c664365fb52737885a263866ca7bd5807bbe2b5c30738fafeb3a3ea5cf4481e6e7ffcbde9b77476d6481a35fa5cc6f0e56274d83216432260ec36212276c830d24c11cbb5a2ab514aba54652db3881effe4edd5bcbad45dd0d49e6cd5bfc47424ba55a6fdd7d51e3340b441ede40ffc8a203e1e3cf1aa8131538cd7b0321cf9e8f7d97154c900c97d4bef8e8cfc770fc9ffcf5a6d3eec5fb9eb78207139f8ae80ee1e34fdba1d0057708ade793a67e5095c8f20dfbe99046c96cd2d429fcda63364d93b96fef449292f9ce5434a1432bb4039103bb18c1c6cadaf1dac138fd49c1bb6717b5bc3da2ed2f257c5fbdcaf2f86385e558fe267d3b527affaebfac845a951bc2a59d67646bc716ac6cd6651d38c954feb898c132294c95bf3f3e4a3efccdecadcaa2ec0447e87f2a75d6f1958cd733d136cbaeba3c14fd415d8bf687a3278fd549a57834da52ea3eed968b452bba0e22deeb7e3f2bc15efa9ab77559cfe26d7f00bfd7b2a9a3adf8b26f1e35e9b2a38f939647f6fa2ebad726088f206600a9970fdfbc1d4d16cbae48749c6a0028f6bc332f541c6a0fe171a80db78ea818aefe267d1bf21fe04a1c07893395398c30ad589351ffa846eb2145bef74161184818db8ac1c9870fda1d28fa6e43180a9c05ec3cce8279c486ba7a9555b26b704f92ff18865ff93a18dbfc1361b8507040a00182471500142896d2ba501b00bfd61e82ec0a69a8262727453faf88150c243ca8e619bcb2e76c2a722ac13606a390ebfc4bc84bb4ebde363d0de44ace306351d7b7f6e6d0bc597113e399d999e18161dcbffa3e0f5ddcc4d99d4e24cadace313d9459a93ecde1cb7d16deec62609bcde51adbc269349827f1538b6214ea5941f25c23f7d538dc575384c9a4531b6ca9bfc74f41e752acd024be16fcec50f4ecaef9d72e3b14bd6b9f7c17d5004f272899d8fa339a9553192f5ceb87ab2006b3c46f69928e4611f57199aa94c423a3269c12f75bd78b6347199114db5fa62a88476b144945b8b4a9bba61213d1b64d6b939caaca6c3622aa13fd513917cdb24f22552319eb8bb6b93001701f477119af2d22f95e8244baca70bfa66c265984531853cfdd22ef8e1a164cd45c50e7d2ab7feaeb4352df6ce3da3a4ce265aa4618aea31c1ad0b07fa5acc257b450b2fc3ac9f04819c7ea104ff38095c1b43cb64eaa7e679ef9bc187c48e22d21ae2289866799e1a77a7863cfca2658d377ec0c24683c0bf86c458b27676a47e230b31c969ff99d4171d96329b0b44c1833a48a3f6413c04c50d0a9e297801deaa616c75782e8a3a19eecf6a75e643a74ed79f0fb3b5e3b81bec2c7d9c757d4cc8eaf8c20364b4f3408860d57520bfab9c9534c08b9ba12722f1c0d03592614fa305e44ec2e92ad5d7fad56f3b0738ba82e5cd5c3506c7d66f50c8e348ecb1a504c0cab2458e82cfc37a83d7cc507ff1b151ffcbfa2f8702edfb945d843a8f80580ec0b157a7bbcba388e8e7971438a5c9f4cdf6bd2520a17f9069b677cbf92a9a7cfa535694601ce04d24d4be692ebd484a12f08a77e296a3b1772b7b368ac86e679dc374e9956337e9006c4d0b730b605289df074082c0840f1d26150b2630751a839557b1623072e9cfb31b3050dc58e2576636bea434cbddc9bf5bc59d6fdc8dfa7a949b9185405989a048cdc4fb41aef9c92bdf836232b91072834ba1bb78776236c6afd912f4cd3e032be0fbcbf6e13460faa32393fbfb23f43533451889be833435ca7f1823d531f67bd074785e87df2d553c4164f6148955288213030377c7dc34abe9e1e493534360c3fb47f851f843d99e90039cfdc0a4c9123bb35d4871b9de9f678633320f80b7af47580b89ba6f2badabcd4f1ccd8f91a239220fb09e81cc66e8b3d766de79f1acdf35d36ddd56a1c9719fb7344ef7d613259b9c09586c11f2b60ebf389e3315550d1d9ab6a5586abf9dafda9aa55a56eb52ac51e383b7d736478097255bc1dc1b81b7391355766bfc3e482010b338ef02e0eabb215cc86b2440337c2dde98f04880cda10833cb9704d58c263d1618302659b4f3d8d0fccd8a77b18801eab64817f85c3d9c9bf6f303e9416b0cb270b2e2542b87165dd895665c04d6663cc029f471e3b545389964e2b3aaf48fa964ca71c9c8e558e4cd2fc1b550f89cc121c076664aa637f5ac598cd50619363b5a3dcb11482320e038b3043cd8ba6e91f68044338a599978a67e654b3c98d19e0c30796e4ae510073add25105b54f061cfa572ad78f2f2c888061173eb4bb292cc4c6764ab119bb2ed6622e41309758cdaee30ce318498418c96b2a682ac838877051b885f70c2d4794b0b583a1535a456a2551efd26ea51e4298fac811d03f6e961bc6e7387e5a12ee2749c4bf388956c3c672db0d4bdf7a87bcb289146f05bdfb49e0b28dc82e19ebc6e663f9e9f1fec2b1f41387b38f50bf803a9a3e1dea705b8781528ced6733d4a76f7132e094dc830690878a6446fdcc66363fec57ea01f43df3aff64ce329bcd3be2686068be6fe3dc63fff36cf62b7d9f645dad93b3da3775a8f13c4f80f466a7ae2d62cbce6d1cf665e8c2ae92ee8d790856c1c56145947e85a316fce0522e9191239f7d1486521b7cfa66b70790c5e562645652c48ac3e781f82bb30f5c1c6113d22b1ac01558829c2ce0b9b37273ee515e3c6465da53a9a6e468ba66b69d194c0ed74352d8a485e8c91b30349202599fac99ca721107b5d61ef2b69d5ef45aca0722449e4e7e88cfa22799e8fd97ff231555eacd458ac14e0898587d09e087047bc0bb2954959f8fa244b5944c9ac227f5d24940fe6086341d93e4f8eaa9de44c0fc0892387b0028ec9be365501d9044975a40a9ee109e219caa6431ae781ed5b2d96474efbe6cab7f6db7445aab42c34a170e7fa3b2c102a1220d4460543739af545972f25f9f7e1e2d1077bacca931131a5b8d63e3490100fa1340206513c9c7a89415742c8b06b9ab3661b23e0e6c6acc5055b146e82b3749237ed3e4f0b6253e411a14f2ee85e31999675469213ba5aced9a4e09dfc5a8a23b309cf32a8decc277d216a09cda933f4c78d559aff1c0099b882e51651b018b7d2fbebeccd4ff842d99be5bf76d913be70edcd0f62d648487c835648157acf0bf55385ced830609507c08d45a4f849db92f17be2301c31f73e2cac97efbb82945ef978c7898009abe8ef7fd23a6c6c2184b50f554b21f6d5411736c7dc2a8215bb7b16b570eba81e9b8ff4a3af86cc236a6e17b10ecd2f77aafd3c00d533e281d52731e4d79759572739caa382dd95ffc16b7828fae44d5f941df86c3d2ae0b2c8df4ef1ccd46ed2d865bfa84783070092f2965db818790149bcbc7a7bd89b305a9b7712fc608eafa82d5670e504c38560f5bd957b57189f2cadff513b44c86dfac9c91a6bd5df464376c7038129bbca6edef8ea1bc870e104ba4d9df03689a35c17808046a91e7fca01593d16f03f6ff8b1a96484e55f4c96cfdb6e46803553599328f2094e219c6c98b93098df9fde909d20475fd82648d9f2d3e08c838cb1bfcec2a63efef68b405004fe431196b87f58760b09daa6cefd41a411ad83ff63413349e85c083f15a898c15f476e0692c785fbfb2549aff044bebba63f7cea74f3cafdec99f3f2b9d7e97fbcdf2fbcdf8f8a681a94c322216938cc1d3e1a59c580e4748e42339217ce3275cca143e5138224ca16470171007eea81ad6ed9c598dbd45369a6eafe3bd9cba38edb5455f4935760e1f1261d504dd6937c830fbe5a3162f403a750c2af2479b01788430435907b1f1794d97ba932f71b00837f2bf0827f1f0db94c1d1988f003985eb9272ee7f12ac0afdc58a0ce44f28aea30b4fbebb19198a1edcd6f3c2f1f488f13c96217f50e68453ef6df0cdaa2d95ded6486d5791cdfb1d003d2102139cdaf7c28be49cee9b2485ed1937de599db6ead3bf5af3fb3b3df8b846cd598bdfa2480fcf4afbf215fc3f98f515b3d361069224addda5ee348f8a27e1e0a2c6305e4646eb59fe1ea2f1c2e38f9570082eb62dd5e6e7253249cbf72ed74b7bf1e39c962ed65b2eb3d2642115c8848a6fbb0364d90ed3e4c35efeb5818ea599ee563f6d4d5b3b001557824113e5666f216e9d8807c8190c640ba0e1f6e2ba644753e20c65b508c4bb4ccf8ad0c94c44cc2ec6a267762ea54634e475e040f8c3c39712b4444cb6ebaeacc409d3cb8cbb7fc83bbed3ff8da7ff05570d6ffdc5d37d650b27f220833af78cca677e4d5ca90d8576148ac4b51ec1d4ad95576ebeb8843e8d0ad11809ee8935c9d837f8f7c3bf69fb9472ff2313bcc1dff4cb6693909ad9b1103900c064fe7967d357235c7d92856ca3c09b3ef33a79ea37f0184be0059a0c5b47913bd77fec58855be85128dbe13d76c931b3418bac2546dbdb8ba94300d204b17e05987a561f28d4ec8352ec6c6f24fc88e18a0bc81b4a7ce57c6586ea1132d14a16d950dd9579971a6507eb8038831be6ed2b15f576cd38efdb4a6c3db1ec384e129b80bcc57dc113736c3bb2df2d18530102c3c08c668c4bc49975db211707c1d62d6b0d1579b34dab9b951ab5b1bb58a20fc3f87eef11f2972eb265ae095c77c0b9311c363fb07ea5db1bb4c2490085e10563c1f5947c1abecf6ce4de815a45da3dfd98cf4bc76480fc8c320243f2f62e9305fc3afd7da2e297f58b7e190bfb9bd7333428b8c748e7f2256a7c8f37c35a67702707d91bc54fc98735dfa2291cf8edce7c6c975169862b7947bc82ca626871bd215c994502b6b1c349ed4748bb54331f1c3562b7b6d7cb390a78ba4c221c2facf3496e767f6e1037b2dfff34b91d81c9dba92b37ba84d9ef8994dfe034ad6fb22f94fe1c55cbd80372f8a24ece757073840b5823a1c949ab98548558d0f2ec83fff1918bc2c1b6bca56cfe7651fa92478c371a8b9095e9c6e5f2bfb3012fd500d4daf54f550414301e9ab04fbce6411564ced411146530576b21df6ad9335f82ef3d2c7988c412bf2344d75ad1392bb45a7df9beaffd3973034886bf7d18c7a2efffd5cfbd5dfcf688d3a60325f41544994d374fc8bf4f5f3aea973495f1689f59050778d261417eaa6e52451b8f5087375f8af0c28799960bb227985c9a8ed9ce1531fd98d1cd7df4f5aecba851efd0f2ff43f5972aed0d4b963d7c4c3df527c9f6bf3e45e49ffbf7cc75e5144f63fb86b2e43ea48e4cf8b205fc96bc73a4bcdd140385b9bc9bd5dd6afcbbe78de964d5bf6970979f5b469e7bcd26fc62bcd70f74432337ba7fff1c266c157ab00ccfc8c282f87788affc076fe4784ce4de950d1e1e94a64096fd97780b525664a09264765a3d1abe338ffb0763497e0f0d275eabc13519f4725d994a87bc72e79e741f9035b342771d335eedcb8f915f50f3ff2a297dce245c6bc4af5814ec1468b395f46bd0bbcd246b6c9dac2ca373d9963b8faefd71bb774e587484dc8cfadadec5b1d56f6e43baafaf60016b14230530f6a48d69a59a601ebf2607a1753a52768300e3f71d5a0fa2fccb649dca59594ba8fa5d2a62b74d40c12707dc23ef9e2ac6f686144797190273fe461855ffccb8d6169a5c44dd3cd50c4c16accb10b3e54102630066fee5cb13bf25fb1ba7737bf21c9bb6242bbce56e36783f2dbc9ef6183237d28b08848f4029d4e57c8fc3a3dcb2ce67ea6ffe6d0609d6e964186cb788114f1e6117f1b5434d1efbe8777f3c8bb3c16ddaeff740292f08dc62cf15a2f368556def2b9701237056d7429e7681bc6f693e32b55c3332f10dbfd1b52ac9061cecb4c34ab67c2975939d444519233900cd819fb96f1e9a412f5ac2feeb0b32fbf1cd8075c019fbe397bbb62fa036591365a17e6cf58b97d90a9e2cfee5f399faddebd72ce676b8eba2aebb33f39d3bf0a1cf2a69daf9c4a2b3ad1af9d4ab79ccecbd5cd36984c267a5e56ddcaf9f4cd6c869960fed4290639ede8df452a71f07cd582cbfa9c57e5eaedef44b218cb9b5d6325423f13d327cd3892b48efe89c9c945cb170bd16ad3e3e03dbce0dd9365d5978b4aecb2adadf964ae7e0d5ccaffa55d88e6c073da093cba7138bff186538962a17760488882c4999f8f8efe01b6cc5959b3f9006a9cfb293b54655b49ace76ff2b7e330a9540e69344c2629228c5490e343ee92ca0345d297c979bea17d8d59f516934799cc534e57a0ccf6fb5259a706bbd4efa1e7308754ee24daab540ea9c598e860d79ec5a64477e51d7f314d0641f61edeffb1293414fefd15b0ba6a0a42ac44417f16610ca7dcdc74949842dffe0d09cb732721a4882684a47fd1f3cf9d7c70f66fe6b959e4b136346842dea3ad1b6c370cfdc3a64e0a31675a2c66dc648a838d31c88b81f988015e556ec9bf54a1451280554031c5e6a216edc3265d3a05d1ed1fca4bb99840623b8d4c662259442f99db1c504bda968b5e1ddd82dd45e3cb994ad5b48fa65b480e740ea1fe6252eaf47be0affe2d76f0ddf1f1fb5be975fde30ad6147023c784ca810da29d4a6517416c625276ecaeaa58e94e63318ea381b2db85cf22506512db077d8dc6e4eaa8e5436951ac462a0cb16477d9c2fed843381293aefc5da85aa4f0cf3df56c046b8b0cf9f430a9c66c113b173100e75ac689c9315ac689c154a545cbad9d3109cea27f0b272edafe9d0d80ef7c602829ed4911bf1810dfeeb13dd68ae44ca1b8611c1f26a5c4bfbf47b08a1e035312606cbbd97f53e82a50e82a5ca1ab582f74156f572c6d50e8fa936bfe1481ecefdaf7ffaeb036b88aff06886d2ec8ad9ca615e4feae897e9a90f7b741c63a0170b182fb2a30d1f9aa269ef431b88c4e24fd5f261dad61e70a4c9bbe6ada7f5e105dfcd705d1c2645f9f0f70026c3813bb33c0ffd4616e22eaae03d2e9ea26ffdd75ad961886eef390347ee6a5d0d17fd52a45ae644bce81931b90c8d81e5b0cbc5b2a8df3808c5f49197f394089cb9c254b5f14aee22a763dcf776c8f2ddf546f0776dacd372ed9f646242fc6ec1df2d0ab9363cbe6891ce01dbbcbde0d67c07e2759d9df54bfd1fcd6d5a02a42769d50300691eb1cb360ab5fef462a68c34e3ca68a78675b29f5c2bb4f487a5d6d94f4ba8a27b1af0672615723eb8682f3c34b52991a8bfa799fca795763f66eccee45e5afc07791add37cace38ad7693e066ffa3da46a43e201fbeb341f835310ab71d69f2783fa74e618a22acf6831e9447fafefdb72baec45727c05de1075d6324d54f38113fc2b4827145d1bc2e68eac4968e5407b29c8cd499aefe16d90e23d07ed26ed76cc160004049ae71385c15fe96d8b7de6b6fa5c15dae769970a47bbb4f83ced126420b810498ec9d0067540cc4b5310ee73a47be2b8b6ca92eb7ea6b44d2bb3627c1dcd8a31bcd1115f6236689596c445eb0e849f2b1552ff24f1c20633d7d368edc455e55cd7c03e766dd663b4ff93e477b96b7c56eea7fe3c736d191ee38739c913b2b5e7940c3029f0546eaae45fca018168e204a87b1c4ddc4869768ec47bc89004c9ab666a58394f075e660126197607f1fd41865bfafe1eb3683a12b70d3af060a0b8e3c0f3f5573116c577698aaa868ea27ad07806ace09e384a5a5fbd94d3975e0af495015bee475b009b360fbd70f387073ee685ef1f4a5a14e87aea560504677fc70515324106edbcea81e167e0263376e20af6d83701f4604ab30f1f20d35858a96e23f0f9e7a670f6cdc600b9b16b959fe62ee6a9f4492e3d3bbebb158d6c5efbf5bf365ea13ff1e196fef67ebe5bd7ce26071027a280766f7f1d9496b23f8efc90212fed32f7b20261d1909712f67668ca33d7b7d1c12433e5596e9f284369acb461eee7dc0394e37ba203fb94c74646cf739b5e48404d21faa4182115c9e379f3ec8fe8ca86821dfcec06ca01f5c8b475b30b281fca34f4a174a968ea2010ccf5e2a214ee38b9d338668a6b9c3aaca9ff261df4a4f77b4f5d0446c7188dc179df710b1d1cd5ad80e28d091523bc558643db787acf40c7d91ea47a19b39716ec9df33179eedcd9eec913b8352634cb3db460efd3b018ac9b0afbc31e1eaa9e2975a3a5717ca41678f03a1d61a17374f9b315c8dd32e2d1540bd33228a473344b9cb077bb4b7e4639127262d3a959f6cee44800c7e355111e83c5e9d392c6c8fc54e8c895af6e050c6e93abc8011a44a343637e30c3c2e31fe82cce66a669660bcc3a57faa879ddb467cf30d7056494867d071cc7e19f8f0bc739f56804694dc6981343ee2066d594b8f467913c36e38f1548bcc43a671bc6de081a6c6263c49cb8005591c68f773e026e272b93918b4681432b93231ad405e01474b0f63b7de75420c2d24b32f98b44b13f83b3bfad3b5fcd92d1d8d93f1db3f0b0489661f4b06da941e29f613013fe692ff1a371c856e661ca54377febba79f86eeb8c3806f388ea102cef91e760518d3c9fb33db6bc134efca5f7ec2c4429410b17339d45cb54874ca439f839aac4b4fdd4f1e35895926c0e99f3067c9017513d2f14a60f9e6a2bf2b59da84ef69ece32e3bff46bafd8b5a9e242f381c8664674c473271d4caca5b359e780fce487e77eb4b96d33acf1bd07199ed817cc4623de64d7d839c9e6b84e8f12be1930ede2ea281e9fccf9fb874bc43dd19e30435e4c377b3e52f2e377727d705c37ac27fa35e40d7b892bcfd9b7acc716e79b2a63e630d5489663c662a1a15167020d5b9b4389dc201752ce6de52d7cea16eaca75aabdbb98b1d3a093f91ad1db8c380018e00438986840ff99e140af5f91647da331ab2049df6234763b929b22b1a77ebd02c615633a9fcc9b4c489e74188ce72e56fadac749faefccaf0df2afdbff1c688a107466320b9bc59ed90b0a253e3101e4ce3fa5903dc3e49036b27734c664e16c8f75f9982df2e40cf47b4397ea2c5472d8ce565dc440bb817f0357f16c208c41d18de81b89a05e003e5f48d681a7c51aa87821a1c2fb42c1c87de059ce5d887931e904b8559da3264cbe7e319909748f22d7c0e2bc81afe3bb7b0e09572b4cb87a0ef0578d946f5849a301cf400b2ddf2d3019eb19ad1aeafe194c739739d9f26ec915a897f760be03a87696ebfa17d7d8edfd5baaeeec3df6251bc0bc37d8b77b58b1f449c1be55b54b21f559d430195c8e9b37befa66a8ddb07c49ff8601ee6f45a6903a3549ca343953ea0bb0e9dd6390bfd026e994ecd997ecf80aeb969da436225363b4f2470b5ab6e9b26775c30c027d79c02e78c7ba8548cbbc14d9e4f8b83e3eaeef6519e3ecdb43e848f2a8aafdde6432f9ce8ec88a725688969535eb0bc1fa5608d6376cd136e76526186755c325d163659d9529ef9b96352d5b543c15455365a295ad55c5c309187e7e4b9310e282dd7d5ac4ea2cc8bdfaad48e61268bd57459426c5289271761e6459a2717e6a980d21aed814e224fe7c50802bbcbc2bd136a2c08bb406640716124bff826448320ef331704a85caa602e8936afe15a92a7c35f6ca1c7df706f3033b756b5656ba3f1b48c34b13e97ef8c0b61e1580fcce46a36122bae9a97dc2b9e1c9edc3c9f48387b3e6ec3e99c2451e017a8ce3a01003152bf3f61ca1a2c14bee135468702b5f38fd10c5891e7b4723bd9f48e8b7a33dc070ec884c0bcfa5586b94066244f2b082deac2ebb4264af9bd6048d84b5468f46ab9aeab4c4a0b850b30a1257d67e299d9bdfc484e5c7852f07ca893cf51309f049c57bd1f5cf51623081ea4c5963f4fb438de69d1633da4359cfcc6baa22a02584d9b70c6a97ddb0c9af73f719308233f9ccb94379eea5b3672c0775520a89a0fc04316376cd717218ae7803858df8242b33c40a57af1a0d15fe91771e1d58a760720ad1eab4819bb19e746dd3f58b71215faee11a6aeb9f80f94a6f1e26918ef347d0005a7c2bbf32fcce74f82ba83f806f9f14ec1a9841579ec90df61de4beb9c17699b2c4ae53936591bb355413ba5b51133acc379c5ad5d750c1a96876e1b0d894ab6e1aa222e9ea74f5c8670de4a9ff34029405f48723b712d647e0483952500c1389ca69b4c8a181fbf01d3c1cfa242002aea5655d2ee581f972e45056cd3632d755331da803e957c9526f6eb915f4a1108e9e26d652c38a0cee70209172ccf7f90efe455e86893de63985620dc02421ca4ce83ce23a29ca63712eaa646414695e8e2522e74fa99c9fb9d8c750ab9f00bab69e15d8e4a5439ccc5df1ef0999e1c17c2eb292f7424f70d7459a519417050ad2e9cb4eb4f7ab263d03c5d6ea7e2576428495b8288bb32fd9ceed11bb2e5f7f6037a410e3e0d675b370b3d1ac1affe6ed81f16fdfb8212770f3f6674de07173118c1eec7f560d6efd8aa1429bb2642f6eed902c7ee68a1834fa1880255366624979ae65facec04ddadb5b778a7097104067a5446419fb96cd4a64ec67a5a402236a59ca823b234aaf8088b5ffb87a1437775136c944257a639c7758355cd84b64b508b367ef8922e8bcad4a9f431aabd123cc932edc00643a65df9a7f7d47537cba5c873eb5e910bfc51c75de142a7db1efc096183427554f33175b0ea6da1b4eb61710e17b450c7d0dd63f811e53ef1ca6aab891f931cf092d9054a0284979112f9577aa10e838ca7139dbffb39a6c88850bc75619b06ddf2a8368849f5393b22b7719787fe5031d072f9c8eb3580e272753999bc657764988d748b1fef64ca2c6c1cc7248722559208a64518f09bd84f85b5237dedf8a559dc5df928491fe92753e77b3723fe32d709743158d7d749731dba5c56e6a081140cf3b8786af03d82d24b83794195a4a20ec3bfc07da9d2d441bd22cff27511274f2e18382641f1c47635696ec3bf65b09039525540a41372128141381fc33834b818b176e6df9cd72b6050c40346d9bf6c948c860b8b9665690d9a8742b8ffce2fe9c97a4fc495dda42b6f8e4354da3da785dfd4a3e9dd17e1625fdec9df7d9cff465eb34edbca67de9326f75736118b565e9f30c495f5ad644b53a97ad96a5faf59bfc755b4fb3a473be28a31559de977ac723e325fed4d835d697843f0ac0e3d2418c56be9f974e89022946ca470e836de0be06782463a7bc4e45f540697e93ba1c51be1b8e786a907f74ce78b1bcddeed24264cb4a988e7f2f4d18595fce45b3ec776392ed54f6c95d50343b90c72f4884142023a4f51f92b1916721e5df6f95e7299fa869fcc0eb0cfcff2f4572aff4d2264e5178109b89cc6944648e2410bce7f34c6bfb556e437ed7f058421992270457f8f7fdd2700aeed8ff2856525773d8515599df5995d39243af8d77d5394ee24149b476c81ffd8aee8cf0cf114c7deccc9b76e08ef5b33371436d500b74a8a02d7bd134bdaa7a152c8cf8c5fc02165d39ee2fe85714eb660fab6325b2c92ff1f7e38117558925d7d977e116af665e207b72f233bb2bb19b6c0a88938f0161d294ca0f4b579e85b8123928b1d1e98cc7613666b66bd04908230f0cded2f54c6e1856671a6575e435fb65e42a7e7e414ebc2ae37c8df6bfca42aed767aaa9932bd1c15247b15f8c47db5703c5cdd1dd0cd991e0c81ca58d818b48c330edbfeb27422a16e3605539c20e45bcc3210882b20c83c37b83fce2ccff172266c0ef0110a5fad4cf5e691afd32bad0958350054aa44fcd157a0ea8425e30bc51b867532bb2ba87fecbc89b3ff82db95785fb6d52478f9cc517661956f59fc6d2cc5f955fb7e1a8f64beb7268ee5b66ee9b427ffba54ea143296ad12cabec975254199032eccae4d9f18a399b2e89332328dc61301ade5195047a0c3161a49a11808ad985c64f2f1b93f508d810a16f591aa13b59a3be5f96befa3182a209302a4313d74bf2c5885f8ae4860d9bfbc8f2b2e65565b6c69e4b44b0fec5213d0e55d39ea12e25b39bdb9456bef81582fbe40ec0bfb692fd526dca77ec57e246fab04c9a72cc7e1deb576318731c219703bea503a3c686d8da51dd5bd90acf4731f7c8d8d99cb2a4d34bd589da8dd2b8d65276d823125da9364c9e68578e09d70e7074e30e9841b8c9c3322579588c60ff66fa369ec43b9d9c34f58366be009d86755b572eb4d4b0b5007d5782e2c68d314a1ad928b8cd72fa8b72c4faa26d2e0010df956322971881c55e740338f71d8efdb5a651b7235ed7a5c9c9fcabc11e0f359fa8c38637a8aaf0d0e72dcda85fdd0e46756a6440692667af3315966019415f9ac8d85df608468492e4c823473847ad947358eeb1369565030cf9b59d31fb5d24601c4b4badc80f6735f6948b8962f683a9646c974e572758c74bb4a6dfffc585d2b590ea1d117af068584d0beeccf7e5052180e06b6b4f3c7ef53b1da86138b04ed22cb8cd6fb2b76c9775e564b1ec8a24932b999c642217ed882859a3b24c5422d186dfd02a3424a500c1d8db9388e82e2bcb2fbf94e775a1186944544aadfd17ea547e750a6f476ea6ad896c36ad29cded0c438d9b72682fa2b88b87437e5fc634c23f431f3fd3bb4f90a8550d0d90cae4673004af2ef512a1a23f04ea8b9f810cb696ff4085ce4081067f6291a919959087c5096ba53e77a776e0df0e5bc8861a47925f8a64562a9a392360a42fd3463bbb19ccc5ac35ab2b30a032cfeccdaad3cb3efdf47e8cab5e4ccd23121704f76fd7a32768d875cbc33d2aa7a235873d2501203751eecb640757af2a850116a3bfab5d657755798d1b34e652972d480739566d459d0d552d88c57a9338789d8eff8edb0a7db8a69b941d901bf3638219db63ee6afe805e51bd27caf5fd896867227b40ca2cdff17bb293a24f1d8700e7078eec3bb9040e6433eac28a87b0430f61e6270b72a2f1c8617a75b70a801195e49fca693f2685bb51129a9e8a241d33dfafcef7a50b4b9f998a244a80657bec073d20c9a9a0ab2edc25ffde833aa2d3b0e6426aec65aa32133aca2b76524c16fcb26a7866d376a93a8dbb4ad5693e276ee0539d0a67579d60edd646169354bbf71aed9109de5be4892d5df90e7eacb3e4fe446f38b9de825e6fa307caa9a150a0a1d08ea806a14843a819b8833eb671939cfade19c9618bebfa1461217a53d5395257315e549f47aa1d629381eaf3b10f22d8f1c9107b754b0a33ed0c1259744aa8616ecd73f3facdadb79269a53f7783d84eb5bc7ffc031d9476d9eba93a933371694264805f55c0a372ed64aa99ce34b56be2ea2474f3b216ed419d37bb4cf7574a294ace04f88f5d966a4885a5df93d06a35da536ffda6368c7b206112a5cbd429bb84b7209dd43c70663cbed27248e6a9f1c7e5c2cdace27a2d4a211384c53b2c9d2cb8042a383f1fe5c370e4fd006ac476ef96a2bd3c847c434d7bafaa12b5a03772be7bb0cf3f1e3e7b3ac1ac2d657e99a8dd9f8ed8976cfbed1b39e93db392b7dba3305a9f88c169540cb6081394655418b6bb95592b6736c99b76aeb4e5f29fd102cef20effc493a02cb2f029eebf6e8489ea0ea7e1879769920509ec3f3adb1becb3eb17339cf72a133ed4c43e0c1243216c9d630a2503372ae7121fb3adad94e45c9abaec90abb37b1a067caff741027bc9b01bd2548a553f1626defbc7825dd3effaa2ec02290c9a68d9095bb4ca32411e6932d1b13df5a4b6958248bb82770f1472302db332d3ea14cb58ab6e6d5baf2390f534130ca7fbb49c2cdaa66fc00f13e35428fa305b49bff7c0eee66d0377b1e92af7e0606afc0e3d22bb47939352f153a09c3e261adfd8563b0e7eb5b860cfb4caccd038959300a45d5042cdcb3e24b97782ede80b9868b819109de19fc28871af08b4bb3673d85455e3a61108a1e2cd5b7d93a628b4730fec9d09a7b03467ca9eb968ed364f43cd837bf854413d0d4141b19bee2e1180085486b133752c4d534cb055941dc18e21a069dfd381eb380de0065b22c8272e748e28f237a6b3cc6892d01acb8499d99da02aaccaca25f04adf896054e28974976c5e18e09f19b4e0f7e6e00c2b4cd0f3533be2b3fb1e3ad06239314e6b60b063dca19ffa882a841c3225973f9e060737d5c730256740458160cc716c05911b4194ceb16b017c6ce426ffe1ec928b69f5c1b857cabfdd7eae1503456b75e98c2537c6a0491f25bed2db2375cfac2d29c01c3ee68745207670888546886625fa01fa5bc0bdd3c4e2d9676147896dff6fc18dcf424818408f011cc09c2350a036f0ef8701cfa2820f9d5808927650473dedfc6be7f80ab0fa011249d7c1d2735f509293fc29b9a5c9a7b604dd65b7d8ae56af712b372bf1d04a299ef0a2651a2da11b6187388619bf64e7a9762626e158bbc6ef2188d4b2afa24ec8fe972b5f5aff60fb46bb20ef5affb6152e42f63baa0fdf75bde188c961d7e6fe50aa0d77831cf586f3aa8034bf6297a5daed6fd0884bb66870b21a8b3b6304665e7c7b6c1425780f2863e196d5a446f7e7eb38cf503f1e763fccfd7d9ace26c3787ba5acf949476c29c3d15ab6d159cbb29e37cbba8fe24617ed0d32bace4ab8bb126e57c2dd95707419869570b31275710d1b3cb09834be984acc787a7982e773b89cf6ad100775df3cd0b73b38b350d5b262b1c25f6cea2e36b58b4dddc5a6aa5c975c6c6a163bc528bb311303cb14f165622253cdb70cb2cf72aa4f4b248a1ecb3c24966c00b7a9cf6fbb5edb23a781f68a7338304a598d7e05de04d11d117be194b2af290618a24b0de5fb0cef68c7ce7cfe4ea788d30d38715ed07abb3b01e9f98f95d855a3ad648bdbf48adce6a1bd7a95fd2bf26c27d630f9c67f08e1840c74f6d7e08e5e5b3465dd5fd3b61da6c82ab7a972ad13def7f29cbf2fef1cd73fc87f1da0ebcd81a36d3b9826c6b8bf9989cadb8a178e290e625630a486dd55e5b1384dcacb2799cac5abaa2b49a4400a4c2935257a706c255b539ab3926ecbd67452f08e6604cf78cfafc156496951bbc52b56694a3d0aefa8988e8aab51ef1063322d7d9586d0202f14721e5b3bd192de87abad5bda7025ef94414944fecc1d07eca15852e1315e33652ea058cac6552523dfcf4aa286c76592bb779cead766601248480ce647ff5a69ad973cea7c3dde55db2224af971bf9c9860b38fe78835bc5f624c8a5ca02f0e93b55fce53b55acdfa91fca246a6efd6b77d05a6a1d33757cf62ed01e45adfb373fc5e270d3b538dc742c0eff293121b8ab7bb961d4706aaa4f3c05981341f2aad4bc3bd2bee74ddbf36a971d6154455ed6d9c3674f24d3b6cb889bbf796a50b643ae485a51a21ab0c6458bbd46942030c761316e8b863694a15b95e2846b8e520946df7c83aa15d8a8afbf9152d23348f3373913975dc26dea26084ccaac2b03d7e9b77dde2b089372d6f31176d130e536860e9f789cd2fa2335dd1f964e0cc4d60d1b7638c6b397eb26232ac0fecb06dcf106b43e1383378dcc6683d6a1b113669bae9ead014048bd47d8e5183829b0b8f54d44e166976de621d79cb96b06f6e181ce4070aff72e4abc01b933c8f3780bfa2adc7d1ec5da7759328404cd71994393b38f366503bdfbd9b02d3e043f5d5b3fd40300179184474edf07116f47e5842f16d565a26bf218e41705b6a9e48545f61212fc75bbecfbd27d0f089aa77d792e4c9b0385daaa65571c5ed629456cfa1945dcd64573e79b7f4620c575dbf2dc8be23e526734e431ea27f533462b0d78ff68f54d6ce351207fe96d04ac4c9e6ddb5495c862e7e2352150aa71f2262b944b5bb12e706f9aae756f7216787272b8ffe0c5fed1c9c1d3a3fd174fef3d3e3c79f8ece4e9b3a3939787fb27cf5e9cfcf2ece5c9eb83c78f4feeef9f3c3a78b1ffd0782aed9f4bd0d9656f0ef898fdc8c7ec273e66f7f9a4ac25d687b7cfabe5acacbbfb974ff95c8cd9828fd97ff83822b4cbbf4b2e0feeb95de198ed4fc7ecd174cc1e6663f690bf3d8eaad55e3aac40f4d6dffcd7bfb0f24ee43c3d8a4ed8e51b9e9d744b91c589a23086d827c35a08f0d2cc0023debffca1e9fa0339833a1574cc239160b5396ec2049b73d1b665262019a8a321525ac08765b7800bdabe10f92e3b9a4e2055de03ffadd58d6574f8fb9730278ff188b4708e48516ec239124e643df9fe482613d9126f329116ce6474c26f76974d133ea2dc9b0671142d47c91f9adf8a8efa032a4ea7cb3aab8071d25aba73d176e0fe717c65e7ebc93793af8faf100640b4cf797ac6674202b76c83526fd6cc8fafc851ef683ef0b5e103b5a30d7b551ed77a377e96af5f43d4c22b90635f4bb977de64cb4a4cc4fb45d3f69d4410a52e830481d7e59d2be32bdbcb4eb0ae6fcbb4df86e1c061bf6d52d17513519f4f9e3e7bb87fb2fff4159ccdf6a26db2256cf0b6dac7609456bc5b96ad48b627d7d3dfbaeb3a92b59dd86f27f3b29efcd681fb06958136ef2b13e7a26a1692f4988eae8caf5cffe20bf6efaa4c211d23267e3cbf31d9b935f9fab8665fb0157391efa1cd836671d996b3a207f7cb473c15d3a6391bb3833a9d305e67acec3bc6f3bcac4a49b026e6c3a3a2ec18d6976569930956764c4d25634be073fb42b0270747fa31cb9ba5ec10f242421f8f0f1eec3f3ddc677959099d2f125c12b2b205a7994bd6e4a0a9d22349c60ce670fdb80ece5271cf99c8cb5a982a716a7b25323b3911dd13d87489dc14da8192945b3714003a4655043741e3c6a5187e4bfb50d1b4d815fd31a79fd49120ae8563e5993bc48dc7e31cb1abbbec5d0237d7a57a276dd28f896acb95fd96bece3073148518a66634291802371d997d088c64986562d18af3b2596acb928dc52356d6a96965fc1e01d170dd90d306061da9cc7aca766574e7d1b831ae7a2129968c1747ee247eff8f49703e33be1e959aecb1eb7d6d1c4c9301cf68c8633f86cfff4325f2558a8a02d37417c440a556b86b8a743bebb0162adf283225d60fd71aa37693584148247386875ae8dd2fe8ee17417243421eb852adaab3264ed27249411cc677be875d6a765cc19d1b1e6ab5353678cff06d4eb41e510ad534c362aa2276529b492581b58ee565a3de03a90fb953bd1da9bb1df8d66c566a1e9056d3f88d3ba7f75b653e3e73fc5432ebaa9eb9d06bf66dbe82b375ddd497240e33f4c05e31d4306fac50981bd4b4b0b8c78f9a70d7df1bc663eed60571bd9e7978f3009cc20a1ad99d88215aa1762fcd841fc61da4eed963a9eb1be3a5fca5bb39b89ff16ec9297865619c68ef9ad498f9fc23ddbab080fd318aa5f421d28c06b1b31c4b807520596ef17bb6c71ef25edb8d2ed9de60e6c34ef44768336677e98f5d37c9cbef2bba482bc15bdb89f3d3ebe6de8a6e240f25bafe5e5dcee16c1eb57c2ed8dd81e75ec7f757cd0f529f04fd461f7bdd3e50ff7fe83201fbe6923c607bec1e118a2ceefc3d7968b47e090d1763ec21db63973185cbfde481fd267e47b4fe82eddcb0b9639076c54a8d2c449b37ed5c2e75550266d26c52371784e978c4f6e85b754563738b993a8de8f268a26fb8722ec72bb5693faa97f7a6978f46e438d172df3b9da547fdff7b9a7540cac3c85e66aeb7cb455967cd05bb0bcdd58f5d36d87c5635538e658de507f873640492efe59bef279816e749939e919dfc81ed39af602f4e5ab6c77e787303dd72dec18f1dfc71013f6ee28f818dfae1cdadb77637110ce8ccf78285fa4950c9da9e88aee333f1a0e0756d88999cf981cb5633f6233da31f63ca7bd9edc1c8a57c072b553a072edbf251438ad925ab832603dac11cf4959cb46350fb4108ef019ab9c9eb1fe1edd6cec842a4de7f9b62cc02b13337ddd801d48b00e2b556d3131d07212b6deaaea9446888206da004836a38115048e0f80ac873d3b6b9e844cbb24674f576cfbae542024c1c794ed8137e2658b76c05eb0bdeb3cb6609c9fd19678ba6bacccb0a0ab263527fd575376145df2fbaddebd7f3e9642eaea30e40b7ef8eaf8cc683a075ff93271ec3ce7fd7bc6d74e74f3ea43fa6f220634fdc7a4a4fddb7cfdc9fcf9d8c3a2fa4fc79cbfc3c849f9b81d273c9a20cb24c1622e50a8e9463897b9949eada976c8f1d4d645f37d567f86b67d2d473fc288ec91f53e651cba33f91da5290a65abdffc9bdcd4f74b1a9f54c20e930a7239a3a49cfd935c9062afedc3a022bf63047b6d54d20f3147c1f9eaa38eafde415a94af19323e03c719c9fe3d98b7d57cc3f1c00a0d9881cfc27897a4e79c300076a10a2e255800cc1de4a8fe8d51002fe894c4daef90e65c3d111e41a7bcebe6487e6cd947dcb0ee576be807fdc65c93790525c3bce7e331a03e8ca762fd85df602128db35d006fbb6fcfa173daf1633881c7ea045e4e164dd72b1855461abffce45392aa254a074e5ad7be420f921ee333f49ec1cce8d191d9ee2084ac230d1ea03b978440bd09a80b803ec83aa07208070da3897df7d8cd585b3789b24435b156348b31db63b7636d48366486b590238dbc00f721cf4b13c8e9460beac069f87193feb8457f7c457fd8904f3724cc8fefe46aede6f66ae43373425ccf3ce5d2d93a19358cf79fae5238a56355b2d011d7e29ba99416a1a1c584b47feaf6d90b6fd381afdeb6a90d9fde6cdba69fbb6dfcafda363f13e53af75f453bced85d76c6765791d761e96aea0530818415abf337d5b96046a8c8625fda4748aad61c2e33df5ddb193843e7fc6dfb9bb76facfae076f04124777ce4bbafc2eff6bffa04e8925fdcdebf4514cb31e52a8f2b57677f8172d51cadaf638d6bb839682357295ab5da7a58d9ea57dd962429d0b5e69be85ab1dc764cd79a7f96ae957faeae55d35beeeb5a7954d71a71dc0d2e9e9ba976a5e3bb51371ffbf98ca60e4734d579ffa286119d46c86ec7d46595520718ccabc06612b59a18266e8de56418b35db47cb1d176cca8a53dc2c187489ca2718ac83740e503697b94df4d5f945de07513e579e3789ef0bc03bb3250a46385f66836dc1949bab8a2832de116601f5027b34af2924a573704e4aad0d6fe7b912e61acc8b0ee408b64457f0bbeec863b1bdec247e0ddad804b05d50c2d1f2354ae8caf48383abc9c4f9bca357d9fe0c36d2dc3cd44ff825f1c41dd50dacc3c372d91b81e35879050c16beebe041bfaf52fbe60a76835fe3fbd7a71ca5ad12dab9eb52217ada853d14dc0dcac3585723b7132db6fb04ff67459556fb775b670ad98f11abdd4cfdf6eaba1ef2fcbaabf56d668848e0c2887eb2ee77aced8a1dab2bbea1f939ebcddb5a3e318ca542fd854525b3749076b72763a13fd119f9db28bb22f9a656f8a3a766081992e67b34b26eaf3b295627ddd1307807f2fdaf29cf742fde02d9fb33fbef8a81623c7c47ff50d834418136c8850d0b13f30ebc547f6423de80bc14ec9624eb59d9f16cee79df81e669c40e7c4c88683eda9ec931e7ba85feed9fd6177dd93dad5074bf955f5b9770657affa4fca5ab9eeea69ddb550ab1fed7ae0a99e6b892e7006b16bd597256f85f81e35c72e68db1706ac1f8a5e029d7c23117609a124a79da8f253179c658b435149046e6c39f2d71edbc6f96ec37ae533f5ff092e15b653fd53bd5163bfec44c678c7b805690905f28095e21b7ba660ae325190257ef860e7f6e1037ba46020d956872269c3368623878e344dd3df510e32f19dc0899cb2bc6de60c1267fda6ae5db0d3aecededb18abc9c77fc53707dfc5666a47da0825d21dc60baa50c85cf445930d222d9cf1f3b6e91ba6276643cd68af7dc3d242a467ea13c403cd45cd16e85053bae8a9e0ddb38b5a3bdbb03d3ad2c47d4930921ea9155d539d0be310f4c641006f93a2ef17bbd7af8b74ceafa9f0060903bc9a34ed0c1fdffcfae6f57f4e6e5cff3f9d48af35dec2267d83686604dd37396282cea216c0e8bc2fcfc5339f78d095e869fd9731f73d2cc2cbabf2779169ef3ac0db163b9c4a9e3d2d5839ab9b5674ec34ecfd942efb6f43de2dbf588bc003ac6838cf52820adbf3000a036f540e1e7743ad8a174b8a43a3376e9bb731cf9e4833b6e76cbfe67297f59c776702e2455b55ced4a4079693276a0dc535ec45a1892c836622d1fd3b52066c84e3ec109f70cf67aea6d33a124091a6c10d61f15c97b8804172644e4ee3d58d71d0a6f8e7ff0d9841f954d6e742eeda29f4792ad7c3190ec7969dfcefa9bf05a69fd3cfbaa4290eb9c935554d45a66614b9a55146c561e23700f23818b95d6b9ad79c8bf65e1b70ecf8d450bdb558170f6d26f06820e5db9eee3b513b4edf3ecb75c855948ba04d15d4e3f9822bbce46f96356f2fada403d6c4b23e6fce241e968f91b146275a25c5b2bee5759737ed5c646bce5af33c1f610838713b56c3a4443f19f8c00c025f8563fb9062bfa4b0528b0b33a286130b256a63e583b1edd90514a26668673e5b2e5f26e643683172ed1c21fce0a0ce714876a593b853dfb7b2537076ad2acfc484dd5310e33e975f94fd76c7eaa667a792fb3f85fe789d492ac4383b45d6cf88844dceac06979c5d2705aa14ff3d17f3a9689fe5ec44bd2b25fbfbd5e4c6e4063e48792f664d7bc91ef37ab6c9d596cbf38f6bda3495e0e4b44e25813a1dde8431d288d39c579d3855dd89f75c4a8466212793b2c3fbf0b83c13c91fe868f405bb7e9ded7d072470a8e99b9d31bb3966b7de6efcc5c9a46e9a85d31ce636d4de1415085a5398743e89e02ddcd52d153e79f5aa66ee8df4a879fb4100a42344230afe84173aee1709845051370f2ade7531958a2d0a42472b4597f4bc9d897e0c5cbb4d526602e4b1fc022bd9b7d8c264fc29838c3f99e8d2b65cf450e1121abf296dfa1ffb7622eae55cb4205eed0d3c97329d3cb6d8e76953e7e56ca93b300c1733e1dfb04bc757a4b46dbf1bd13e2edab28f7d1f3f13bd47a4833371497ffbf989a288ed4153777dbb4cfba685fdee1b88411a33440bcf9d1350f126aacd283c38d29be50e68bf23e2c9e08cb0aa2b7732771c2c4c9a59e4ab14b4d64a9e4a187cc0ab0ad06d52aa60a031fd9cc63498164cffa3c99db6249755db5c00a939ba5c887de5d6f380d7122f4b9e827106a3a34ec1ba06595b1ea0843d23611d2aef9fbdbd3dcb1614bcc3d7ce4db24f3d35a5420c5a1a97a8417fb4ed780e9a1ea2dd26359f7b38c819f2ea55761f7179820f2139ec5bd7397126fa7008f370d510ea9d1639b173b6cbb6fffdef6df6255389733f1acf437f6e5bb6a7ed66da89f65c5eaf6d7d784ad4b46f8c94eb36a741fef8fea0172d479c6217b25daaa7db3a14075f3ca3fd93e6de10f6834329358bce6ddde1c3edd11d0d2ef7a65ddff2b467cf160255ef9d8619bacd4f40ae499ae96f6376262e89d0aac88624b46fcec4e5db3b03da48752cae8c0939e928f9d972806c14bd18d8f24bb62de9bbbc20f6426c3b6199d030c80221b703b7412e87dab2f12c9ae96f1211137ca0670a0db6a806d59a98f15bf9bf37cefebf75f27760335f436b3ef705f008ce0de7c0eee2c35d66612458b424d9fa65f2def305a6e889f42141e4f0f9fe835d76bf950c21706141f1e1a6eb5f08896af070a83eda7b37a91acbfe46de25d11c29c4d7341a2d8f1062a24507c2bf44fd6e299622c9b55ae179dbcccb4e4c94909d8c3065556408c73897d76191249a7c25dc0ee728c39c24a9c47bcbc5e1728a04b76ceaa4233f287c6253b6c76883c9897a6e2e9469e7422af1c08b7eefc19fa162eab527b850138117ba428219f434e895b6408f0d92d1800e07d54f6aae5385f7142252df8ed93669b1edc7bd90778e7700798e12bb5e63dc5d303ce881630ec02ead9a4eac3b5bf73410a18b101db8cd009cd7b481506ab6c7b6611ad976581e16d22b6c007a7ab4c81c28a8c0831580f22796d00a9e5d6eabc1623c3cf46678f82fbfb44572eaa62ff3cbc1658ef1d337e5db09f299e6a7d1e3185e3336b73dbbc1b41c62000b6ba781a353896d682f96755dd6b36de36c4d60260e4cf1e8ceb973a5745b9c88bd4ada9f0a9e92dbcb3bc1b66bf1bedf26e55ae42ecd476c8ed7ca76e96c250bfc9a7477e0d04efb5b7381ee6c3cb2ca572c6985660b564f2555b985ffcad9c436e0f3d08cbe72eb21722d81b1b551073bd300375a7b3b5d906feaa700f46b017db3a51884b2f693e932cf05fa38183e22c43d989ed8721290c50126e7181e76f17f84c118c26f437302ae16f768603e6627edccef0cce9bedb1379f386badad307cd08aba586ba882cb69c5b6e193309d231791562b753d4edff6ae1baade9a55f9423bba531d3a0b928ceebdc3c3fd1747bb1695961de3da0c805d91567620d94ede71c931a3a0cd4c6eea386365df13b44d10b57d1f2790faad0199b22e7bb08f12a801e32b59e4333b9414a60e23af4c4ef108dbebafc7ae1f119c99e1383aea4a9639f6818a6ca2dc33e12fe9f2f7fc0d18f9db637093e986aa1493430732f5bd82da400e6f393eaec9dda2d99a74137a95fc796e3988ec8f5524451f836d112270b78dc3ac9a6c40b80435a6f523db75d42791eb1f6cafe51eed286f35a0e8b46c64764477e65f6a02869b5d6e039c11c67493cb4d21d0b93c2ea6e9dce9af87946706e7b81003fcd000a8c8778e425efe191219ce6bacbb73b9a7e83123e33430b0b06a938d47561d6e30b4619406464f4d75e14dc7363dae1ef773217b0d9fb1319c3fb3389bc2bba3a9d39ea2cec361d0274a9a8d6999fd66e4e89ab6e07d5cb7338a6bd6b6c93453543e4f059037edcde629da1c819f10c54dd478743083c145cbe6cb0e868d0ce61ce094ca3b3a1769ecdeda71fcdbba16bb5bdc6e58780fc7e3d20d25dfa2be711f3e10c92c54fa312ab791a73aeac2f035f495c022073605edce5be7bdbe3bbb4e965adbe2632c0882a4b11be0acfc9d5f7933f3a6dde76931b4a9eab5d5c56986e50400d654c689cc4e69ed08fbaaf47763d60a7062a01b490e28af039874761cbf4e5c08cdeb212d33a5cf5e6c2bf30be1590365537ba9973deedee125bc1194967268109fdf637bb89b13db6304c2569326fcf3026fd59a6aed902617e5ce7580cdf3763af868e3bd706ae2d9fc80f8a7ae070e327031d466929d24acd44ac09ef3c51050cff96200a06f8610bd1a3063c87218149df89a07cadca3ec1b2e9b48eed10372832298cdb4c505fc4d40a42d471a983e118c6082cd80c04040c57d603e20b3bdb3169e3c562a9cd0ea797c1c80c4953c92d7b16de276fd19609c97552f06b9457c3b00ccb7fe9f0eccb7fe2660068ecb40f228a409ecff8768afe3bf10a25b912dd3412e0edf0e40f457ff2b10ad1d2904385b071509be633b7ed3571a813afe44c00a789de84c48fa3d4f53c93b0ba352fafc0bf5d59fbf50106e52b61dd470d3ebf2c09e2c57b935b9eff1fe41271f3ee87d8cdcb2e8e5656a43f23ae1691ab15628185c757d37bec01eff12da3ddd39f9d68aa083ffb1eb0d07614e4bfbcf086b81f687f6a442e5f4847796f19a89f9a2bf649d78b714752a7cdedbc77f3c4d071bfc8508276dea940f6a7af06d124337b7437463ac99271556e0f5aefe5865fe95a2d1bdb6e597896c381ab3933371890650f8d7b7d001fef0aa5fab0edec8576f1dc470627c76984b5cfe520a1c114fbc42882a02a6cec47b58525482ea7adef64fe531cbb35e214a819afb7d3f849a069053e4567bc43520c663f7f7a6b76fddfd0b7bfea43ba8a2687033f7f6f4f12b788a222f6ff77c934374ea03f789adc0698c9ce18349de36f344c3264cf7cb2fdf06173c4498ceed1d9489ed4878f368c3e1d07ebb7f5195736cbf560aab1b6d2c45419b32f115ef9f0ccba3eaf500d3f3f5ff0ad3f3679008169bbde3ab419a650f1a355ce89fe74e20df48080083acc43ab1f6efe3237c9e08312a968e51970d67348c173f6563d826c2078be0b24fc193eb3165acff4fc4966aab3c4350370194f42c4f6013c371159a65dfedb11b23efd36e5195a948ca31db897da86773903f04ade0dab35d85563a746488ccf27f8c375cb96a9f0d8bd07ffffb1067c3e59fa0250742f29d6d52a294248937466be898739bd6910b7718a3e036cdbb602b745a8515b4c33b735cda50f30dc986ef4c3e403de0f78005cdb58ff926158965066992c440ef3d7af4c0a61740f5bf4379d85d7cea3937db037f6f3dcc6334eabd43a2b43f8747a154d02e75867b3f0eb6ca772ec5af020ae50402601bf49178effb87a97419f68311905dfa3bb62432c09ab599606a6b55a49d5fbd4ac6a22eef70060f3c79cdd9f94f23dc2cec6912b1acdd89cb61eeae93600c1b29e18cb6ea3475c8858b5f064ef35317b9c6bb8a8e66510f60aa0175a162d8f43a3115e5034456c84d3a115ece475999e9c502d8046aa2e810baa9ef084eff06d81e2bc59636aec5857f151931d10dde265288ed7ab1b8c3b69255eb4ca09564ea7423643846a3091aa0d6ee5294ea2bbadf8bb9ec5a0e3189a95bf0cf6575e44731c2fe69e71bd079ca1cb62180c9bfd8d146e18085e72ada36c28d46b2e7eabf81c3566a9ee14dbf7a951c152e7ee00458d030c20d45776acdd4718ec16e0d4e0371adbb651b4f24c2be0d4afc8362f3c715f4ffe3003e0485d0a4ec5031f47e14d3d36e88bf36c05eab61db6d1b73d27f1f75d08fec11dcb1f76fcab7212c6c7ebf864d25439ac0f534682d93e105e4b121f9bdc987d8a426a71bef68076f46d5831217b9cac19b4a3b78d3aa076f2afde04df5d3d310421fa00dbc192a086faed4107e26f7f629c0b916343707cc1858c2e257826688fcbb08706e0a9a1e60ae114436d4493b61879fe815b7d2e7cd0d2b549e6e7ea4acea371e654e3db034f726def7a2eea4bcb43d1adba814b80ad637181a0f8a2d4184c4aeff40ad4b97c124f1f53ad5808ecabb32be727cc5263238bee2067f3fe069219206253cb55870b099f3852e14c0752c1bbca8c585009396494c0a8f9b2a8b3d9ef3f76c8fa9fe813557c2e49cbfb7adb2b25b349d88b7542ffdfce83073b6872b5021c20f16fa819381e8b87eb09814dccdb360c37da91be59c434b786bc2a71f2c2633d10f7c2dc715b564288035df97ff542e8caa13330236bb7a15ff617832af86abe924950bf1e392f550f012a62bc15f8d74ac8235dc8140fcc2f67878231a2d85b530f6d49ce0d71dfb567e60dfc22fc71b139e90cb07bf27ba4fda9be3eb0e2fa8e3acfc3dd183e9619ccfc8fc98bb9c3b418389336de7bd19c3e665a67d916fec6cd59e9b5d44587782c6ece370fe7eacb31ee0a382ad2e842d378c683d883907ef452a5268730caf6a56ba678a74e5141cd4856e71f80896e764cf864ddfa5f8e19854463041031ef491679103d341b80eceb1af5da4437f7df8e03793b7a4c35b32c677e1b5f46ee383c5040214626ecdc4a46071dcde1ec9ec6e96a8726ed3e95dbd4a2655fe2ed877a69791179982d9dee8d713835248793e3d61951c6e3d9a32e30fa10e331117fa6387183da1c9e0c5f73a0b6e927bac2ed6897736f15110793a19466e918e7ca4348850e23332bbaa8e8d6c6c083386e2edb965e90210c0760474277ee88273d76d324337a58dd2914076e6ebd7d9bdaa2f9ae5acd0292521a7d4459989ea5217581219eb0bd10996f1cb6ecc2ec0759e753c976d725e55c7f5f5eb0c528ef78dca7dc759ddd4d748562095196fa19388ea5cc4e76553f11e3ea92fa123de75cbb922fea2eac445215a5339d8cd6e3c4162bfec84499d12a674710a4dd96c504a55932b6d206d05f1723a49e19cb767ecb45f2e2ac24a9cb2aec14c70bcaa4c1655951aae106dd9832e18d7535f46be5709a3931e569736cb2a6353c1e60d16acaa59538b11bb28ab8af58045af5f678ba62bfbf25c309ea64d9bc94deb1bdd77d91dc9ff9f4e7498c614725aec91ddb94b169d1c5f29e7f3256452ba063d4890db65c757fefdef939383274f5e1eddbbff78ffe4e8e5f3c7fb2727fffeb7b72d1d97f3184afe2b81a7e0adc8d8e9cbba3c176dc7abd7829f3de18b53d826584fd7433253b98567757351aba5e8cde9cc52b0d39fc01964d3e55c6bb18cfde09a5e3c7b76441606091deb52d43d2b44b5102d0852c0e7cb8d2eca2c13353383d054b90ed396891cb3c8d450dd5f7991db9bb0528e201ffe3148756d5fbb6c6bcbfed2450d557eac5dbceb51c940e755d302572c9f8cce91fcbbb0d93cd5ef0f1f1895677f73d9e766fa5bc8cb424ab51722774cad34f25e67c831780fa2d46d2abe5daa14b2b9be8390130fcf79f2a8ead4def55d5f58a4be777e3592a06f9d97eaa810ec74beec7a9516f4a828bba306d415a7362fa1ec9b5d14a256393adb56748ba6961719eec3a9fa4029f8b34628d347df8bf9a2076cd464652ef1495176a7639515782e78dd29bc8c8802126979d789f14e7d6713c1833ba14a162aa1bc8441542f6a3a138cfaf5a35be0a5323f18ef016bc8e415e6a51ab3f8b638924726bad402d94cf4243bf04393a84da90249c234487ca50e39afd578b2b331dbda1a1897d24498e5f115712eda4b9d6a4c3d4327f1e0619d451e1dd49978ef3fc75df29e96755a2d33d1058fc10cef3dfdad296bef51c5bbfe20da78ce17de1374308c3e7c51ce8ade7bd35565d0ba6be6fea3be79dca4bc1298db3578691f9b6bd1caededc429e4dc3ced9ab6d710de31de0ab6ec96403024a7d72e5349e0c66c2aa113b51b12125dba20afcfa5292302aa090fd481124b397f2a44ad3ae10b89b2db92f7926f51b3caae77c0e14c1c80502f8faf8cd1b4e2ee49dbdb17b263a83479fa663299c8fd022afcf6945d34ed19edd5d2adab57996727c252abfffeb7fe8ddb0a98e51e9bf305cb780fc98597696f2a5a164d95e9f49f524c9318809f5597637629a02826e355d74033b8ce922123adc76c59438654c8010ba97ed9a9a6d1139b52cfa7df54aaf0df69b9e8fa7576082951b9ed52c75bcaf9b0455bce9195c18ccc1237e1a42e04ab85c81857fd48b672b960a7d0854937d8377e3ff2eb09bbdff40522b9c9c9851a581fbf843e1dfadd36f50c7a940058f1dfcbea92846842ca5ee6f412a8b36c27c12b382cf3f0e31dbb1da733d1eb7b00ff6a71fb9bbaba347762d9896c0c47bc8dbcd1c1f6b9801334ccafc898641bd529f9a740124e7bca2a2de5594110957bb8a29900873a103080c4516970cefd0459cc931b8908ba62469e8ac308e394f687d381cb36f11a635a8b9af1b45ff24a8148d31290bb00b65a4d57d13eb971805f145ce05be0a525b6b2897581154f2d5728d941ac5f02a8467d1e08248eb4e5aa12566c8b5aad53b3926e40ca6bcc484d340f5bfe4333ac61b6e0b0ef7aa0bceb43302589daa1c27ceef7edf6f5e1834e03412e8ab86006218c2232a87f816c27cea5d21ae791bd4542b037a74bbd8dd7e498d72418fed69dbe4d22cf8b7e5e8d267079d4b77d59a9d6f25fe4fd8132f02c787ac667c0af01ba81d0f0f9b2eacb4525585fce45276fa72bb52de1ad7b4955ae4990f30dd490dabd655fb0acecfab24efb504084be14bd4372287b5142d5a2692aa810e1d1451d590e4df95c0a8a6dd375288656953fb7097b0d5aa9b25737652a5899095ea11c8ffde82a2a64426afd90559bb5a2c2722b17fc527e27514e5005464d0426f1e32174450b0e198614950730ac4e567eca5227c56d03c72278c62e70c3f544d5809a89a6ee3e10d9aff64e3289dd82a782d038559806be7c6384cdb71230a53807cfc7560a1d036c86c4cf419be6a0aba6395b2ebcccb3f810ed994ee9b38f916f7533cb3683421e4b7041191c7939ee8b94cbbdb8104057a6cbb2ca5015d3b7424870f942de8b2f24de4610c617a063a81b8d0f1792f9a97b035365cd00ca3a2ca33315b2cf196fa7f292a44d5589b487b43840e1b09483ec07fa2e7b282a04434ca5ccbcac4506f9dde1260d08431e8ad533998ab4990bb6ac5bc1d3029cacd841cd789695bdca96afaa4454e5ef1c536dc82b6d16a6544fa584863371c97876ceeb5eae435f524f8770aab18162e4e4b6eb1016298a2883ea70ce3e0857a1e656e28e035dd834dbea38e5ff80aa82ff8d844078d2a92743a0a7d0ac5ce70b6576969f012bd272795d51ab04a3a853e91b73d83d9f2f202917dc447d828508b93f79ac3e95b343494c6e7f19890e9355607a77c3d9224246084794acfefd0948fbb5841f95be03102aaf2f19eadee5999a9b858040032631a3be9274a9d4a0f4770adc43c59de4deca8ecd96bce5752f501b36455474bab7b7770a736860cb87a412f19ea77d7569f134dae7d9014e276de60bf0f1efd212746bbff17626a159f7a7f96014a0a4fca8c15e64c757240ff4db52e90cf54b918d8faf287d01afaae6028b3e0196e4757f0daea378b7e455d95f6226dcb29e8d61b9737e269088943d5b345d574a7c0ffc909c8f15cbe44600ff0aba86901f43165f8a755afb9749fcc2d9e9a1e8034503749e108c678ef31f3bd483e38e87111518617549b04db9d525359b03800a83f83c8e7d43b91739441f00b50720c8953e04b51ed116a2070b8028e8ebca1443c1243321b77821da39af452da1222fdf133c7aaab0cca941600419f17696463c66566024f9858b92fa37a5e310f38f1d8d94d4ba2509ecc7ecf80a762e855fd98ba1768874b02606deb38844aef5e5ca7a60384175016c1a3ac91af0b62a450ba119402726ae09039490e4f8a40463d18aa643c3d8dc326e431c1e027bcda410bd5854656ac809d82280f13118001746993cc27b207e6923884413c5655dbe83ca578d923e6846237de1714692f421b725710570416350bc8bae9720cdadae91e3a76376d92c19d62c953713d1946331501a597dfde0b4ddb98ed1968062589cc9d17dc9ad70399dad2d7888d64edebf81aedea2e1af25e9119d39410d8e237501294a40255e426f2dde83965fea68291bec827d3a7742d961cb6bd7cc05d084587fe081bfd633c9561ac81e348b4b606667a286cb5c37f535a2c04256d288f4d64a63cf1f09d891bc2e174d7b06ec0df06f89bcb6aa6acb48b1b35480aeca5480360501f8bc3913a8e0e1332e21070d4ec805630d1c55174ba1d788fad6e8f2a90675a5ded6892a00f5edd5abf07f633df7ece3baf19095d37e1b33b46bd689b7330c8a734274e251c5c42d4e1d7a256a72ec78f4b3ee4d256ad723503e18f2073425e094e7375299f85e49c95b036c517623257903faec106f3ecb25326a3b310e20449fb4babc46dde92256b311a0e1ebb53a94a8ee1dd385eb4d8b8b010d018c8d8bc1c0e531d36f776dd938c6ac33c760c5151f7958a0b26a225cfd63099d01846370f9e99889f7a95858c58b78dfb79c893c6fda5ed71093dc97e29960f701f8912898f30493861ca31b6b328468f014855ae43376466a605c4072733466b74688a7b001563f1ad96f95f028722d3b3abe6690d11e7a849267b9eafe8e4576fe9263901f87fa95101f85f63590ee296822d08053d435bb2958233c4f204194993e8a2fbe5a0a8904beb397037fef029384b3190505b1b52d8e69b64c3dfe43d339e4fac6546466e0e410717a54f556c09241ead11d5f995cafe4b3c96fddf1959114c34cf3974f7f7afaecf5d39357f71ebfdc8f4b36eacc219dc3a1e89f37e0900024c9f8dcd887c02636f576cf2aa531713e6ce807b3b6b960156f675a8c032eab2b7f176364a581e759d6c87770289ab1d01ff685e2772ac1d1a341cc9bf652fe3c43dbb576a47cfeecd9e393a37b2fbedf3f3a393cf8552e73e7c68d3b94ab220ab279392b7ac3f04fdbe6a2132d6af015cae2003b46a7035385c2e1a69a24ef3a796955012e87d4e3ab246d6a14efc7ca0d94574f44d7f199ab09d5ad884b997663574165eec76871c131c0a8c9cb6ad90a5a6fc8990d7adae535f8d929044e94d50bde02a651c987454ffd64d3a2acb25768e7a08eb44c0bb0b0ad30024887d0be15aad4a094f0b2b2ed2f950c6bd418a80ed1da0d2e479597b4e7e8b0801228f66af5884ddb36172243e19602dc44f5f35a6b643ad1eb21b0e1584a7f33d177ac15e9652a9966edf3e375642d2172de0ff472889da4159de895e3a2bba9f0facb2f61de93b459d6a65a297964126810815e760837c6ef118f093da67270e3435f757c821946cec42579a6f0adfc1f79aa9913071390f7b0581aaa848f69790fb37e7ce5d6fef05eb602d500588d145d0e806350800c6a0f3c0090ab9434a11842d4ac614f1a385d8081339b8089960209e836ca73212f20c001fa0840f542d18b76828a722d9d9a49688d0a8a08bd016b74f353dc6a2be6cdb9863ed0d9b67c5110039d722a330056d6caadc8e0c20971559db4e007ffac5d149c801781169e026677086b0c3aa84fa41d6ad12c92553eb5832077e738f0ba8d5059404e11bc123acfb4a212bc13ce04147e748e18dd4831fafb4ed088e0a1d50dbd6babbd6cfc9d803d5211e7dfb2212262f68becebb22b12e27dfbd173e8df5727b1af364e9ecefe423f204c96f631582ca75599b27bcf0f5893bb380f64f1b2eb8d2106df529b82328f344afb8975aed5ed9372b9e81f22fe9510aadd35956807e0b8bf30b7d50135f390fa0b6fb54a55f21cce4c490657afb239bf9c8a1704a2f195d93fb5d656a4e5020c926a4191ab606e6526d2324315a59ab8e94b073435f80942fff412be9538478382fc2a1969572375333b56da9a01e125053efb42b00cf89b5a294913b8e1c81ad44d3f92a42c155278551d05bbaf6daa2c5a85c1d4b456bb7c90c33999042c68334474a5709a3044963367c7f038f188c1a835576454dd2c0412285418d96ff915f11f63659e4b62497122605ae8c4f9d21ac21d290f7a017b4656a6bc17ce6988046510eddfa214e03879730ef6b58375ad721a421550af947442a03e72f25b67e42df04a4897addc00a390f095b421d4522485f211d6698c6c1cf53d547a02dd3ae2b83b84eae43bfc4c8fad954b861880d7ff4345a0a9f301420c75e7377c8b13d8661f530a0f4f87f9029c14054ae0b050033a6b182f24472e4f8d7202e8a0802cbd3cad7cd9c279c1e88a56420112a59504cfbf56a4a23c17860d6845b6ac335ef763af7f09d373aefbc95b21d872c1ba662e206d3064aa1a3331994d585e8255b74f0bd1768aeed2ec1cf69ea93db6c15bd61b56436c3cf6e08e5253cf44afe98d3a439363240030a41974228a94502328e13dcc3d382b53c919354b833ae10ab0a4ac0df08fc66a672ec4f6b96055d3a16cc6a7251846fa86e5658d9d94f9f50b8fcfd10c3332ecbaab4268035ccf0abe5808a8bcdd82db3d676e6d00ad056c72c6653792254bc1c71e6d728d662b0dec8ea5ac683eabe1d3b22762843329cde7dfb7e3c0fcaba60312992fc1c3acacf3a69d2badf78560053f078404cef9d4cc7bd148f630512a70b311281cc257ca6c8b97e75cb497ac6b9a7aa469c47cd9f5c697662e32e59f076ef7b6c3ed4e6362c997e24a1806e55797605490e853f5f3dbb2eb29ae26f79cda4235a5c38e692beb7928785aa806da0b836b6f894ac0a6d84597b5ee8bb05a84bb552f1df64a1356ecd2d8632570ca16c4e86eeceacbea12ee4cd3f7a276f8618d1bc3fc3cf8c6f012c192b513adbd8a895e3565d446be32c05eb1bab1278444d40020af2fe78d446a8a4011d901edb4c093fd1f8d3e646f9af065b8e15402ab1b267935a18f68cefb5e2b1e48608ae254a870ad241c49df2ade0b081c31a625ca61871c7827fa0750c097523757eed35ee19a92c015b82f7083f133979733f39af34bd6f51273c385c10e53032065ad60049cd77195db96fdaa44cf9a656b76ffac6e2e24fa6a0556d6c1eb7029fa158c94c4ae747d81230a2565e1166c0c77a49b5540161f7de8003e7174e8e653468f1ca463e1a260a0430e3d19ca702fce63e061b449e9b1e8195787a8e0024e12e03f86d625d44c85c1ea43c7852b55622a7c6c9d749f48c80098533e149e6ca29a4f450ebe90882f8fb5dfe4c051e2479395e267c13bd5b9237e3a3b6ddf1bd129b287ae7819689c1ccd14c8f3e052e328e9542a4f1bfee71e12992bb9be0739385a55507c4b9f54a98e87959dd5d9895a9339dc6af50d119f24a905c6a465cd456d2eb2b697130d20924c89e57ad1cecb9af756a05382d3b2ed20f51d6fabcbc11b1f5b27cf32b5ce8079b548e1b32015ede588b457c12bb9991178057bcab991230838dd5909cbd8e17a508ee00503ca0446d3f321e8dd1a005f3575335fb6c7d273f0f132dbad219c36daf3440a1b18750eee60d056cd918682127026dd41e43f69ea5e1b8f113074410a8e4358644352f799e466d5c8161eb2d4c08303cc646e596a6dcca98ec87556a0db51a5983512035aa05864738d17ecaf8380965d212714332ec7f117494ef0316a98f030b62f7c57cac4a5ad5d8905487581f7b0cd4409fad88fd6bce94df408a94b7725e2500ddcfa5c21330c57c7031016619a2744b5ea5e8258d0f62af0db8ce708f3396fc22b8441d7d8c80b0d2c3b08fe2b049b4b71b29ccb9e79dd6b9f08473179eff98115024b34546702b1bde8882ca9a4d7cce18d8d9e5dce466454a21a6b4f24ed246ef466195a019a73d14a9969215a90fd248f4fe464292975975d2fe66a4e0b51671d6b6ae549bcec0bdd3c6faaaab900231426b40135c52e4b76465491a29d9a54fc1746abb2e4e628663c2a3bd350de89ebca248512c552a9b16e8da84a063e812fcc7e80f8f96e59a61027a5bdce7d75a377c13cf522bd621ecfe0310844f490a2d2fb4555a6655f5d2a0e5f9f72d7cc85249b48b74c07a19c6fa6e2d075d60ab9c81746d9ec6ad6371447be173dcb5bd1153a224b4a49bcbe0ca411f07f956b93a2dab91171a193acecf80c7dca4193eb1a3fc744a8c75df1b76432c8ca45987b4a0bc0c36133665337f712ff05c74c5821369cd23a4a3e1929593a0af3c778b0128116545981da24801a9e4bc9554e96b73a58020e8ef4a68e50f161ee091a37b1f0787cf8da04c2dcbc36ce199c1bc62382c2e31957bc9b171bd5b17e6d05b6d2313bbea2b972f2581bf663b65550e77a7a0d0725c8db5b9567a202fd5f2bae69a28b7a53a542d31a23a5aeb237e64228bd0a70f8e61cc09574baec59d680e716d1f2053a4fb6acfbb252671f5848585ed66557888e7806376d392b6b5e115e22aa67bdf317710a6cf0a593ac077ca88b565cb8656ec865748dedda6cef78735b2bbd8641dd2589ccf733670e5bd5f1bd82a8e155ecedb9b47fc57a0d1b606f3ecef0c307b6e5ebad5d44f0c443918a54e6d681017b6a5a802b5e56ca07cef4d00a33c2c4701f96e95054672cfbd48a5d6eeb80928eac2b8e44f9bd1acc88b4dbad60b346252199971d19e4d8f14924960a3e6d5424dba2e945dd97bc82154ade06f01539fd89cb190738d6e7d88c50de2dd354745dbe44d2afb91c07b2d0940b76485897bb85492b466647a8378321e6569e1da061cc57193ad8928127d48516f1b7cfe541648cb3b4d0f1cd14cd483aec7a055d8856ab51cbfabca9ce319222400da15614cc6b600504cca275b14eef68fe34613e3e2e59679b19c6ed680f5c767c5a897dc9c1ddb38edb2a8ca039572961cc9494b788d1365b6b2b54b047dfef26372e66dadea93b98f8e92b422c48340c165f8613f53d2042978aef88ec48ba7af3d6493d473f0b191b9532c6e76fa86ede17c4b1855930c899cecb8f2440ec1e50114b95208511a14ce318ffada506e0bb8fad4d032222722d5628838f500e59128e25ca3690b4a19b8901a1d4caf31f874e31a61b404d87165095d04fee61780cbe626003ed873b231fad0719e20277b021577887331db0733e5786a2ac5942762da73c83af5470fdccbc79aca1ac51be37cab0122212900ea459bc562edd72bd04db82a4e1d8c06d5c490f36b1b25976548e437563db5c2883ad217d363f8fe33ea155a9126da29bbcdcb5be21534e742e55e8894c66a4a54cb35ae3ab21b1a487f5070582485e224b0b5ed82404e03fa2e6dd31515ad331061f5da0adcd3b4575236d8a65f54dd923391499ca71422e17f590301f86f0667123bc3310445a86e11eaae91088c7e092a8bae085d5457ebc32be72fd8b2f8e6bf60544deb4605c4ed211bb7963e7d6b585c435753f668f782aa64d73366607752a4f043f011e085d1b580af1af929d4f45dd890c0a01204bfde4e0483f6679b3ac3541853e1e1f3cd87f7ab88f3e119ad0364daf4cf44d7b692ce96a241528cbbeb87e5c6f5b0ff46de351fe42f0b47fde368ba3cb85e80e45da8a9e38a36f4fae57e5f47aacd5b6177c053859c7cb2723f6c7c7e1d7afcbbe78019e8bba5dfcf50410f86b0e50a933ec3a4d610eca735ba9425796feef8a729e2cda66d18dc189f9298485485ea5a945dde34fc95423df229b3c5a56153eef60e14e36ca4eedd8de5e742b3d74058ead686495ac10fac72a4b013018d08727f8fa5a3e705f6955625a66ea39a21b81195f8adf65c6fba6ed147854973a79ba4da938c5f0df53b9ce6bf2d67436da9c6db32fd9f6cb4ed84e2710926b7e262389bdc0c7a12fc45c7df142f00cf396f09e157dbfd8bd7e3d9f4ee6e2fab213d7a0876b763c93be5db4eda4e67379c2db0712364b2928bcc2cc8c4dbd6d85ace6c25458509b02ff96473b29bb173a26670f9ee82854927de650c2801f16a2dada2ee1c0b42cb1a550db4f422c94ab4ad9f5f20e7697758a9aa645db644b55d847a0fdabacd9e9e47acee16e4aa896dbf640ee8068bbc96fdd2991955df0b1097081b3dc85f9292a336d9aca792017e73cc0e073e711ba1d388f301ba6fb486502278f78ed8e0ef37996efea9dd4f90031a787d3543d930b729eebd0d2b097bac94464da61c3a68e7c0d0f7134f74557f0f021c4bffb0f5d00df1d405be363eb7c4db193d7feb8d615a3dcc39dd063765f51be337883e952ffbf4283b60ff71fbcd83f3a79f8ece4e9b3a393e7f70e0f4f8e7e38383c79f6e2e497672f4f5e1f3c7e7c727fffe4d1c18bfd87b2b7800cc43a8e046301d3c62fee757c212ff17999499ee75cb4973d181c743630150968b84736e7359f01889b24a1ba1f379eabe5173a1bdd0b7e71c4bb334c9a60420c40d48652bcdf3f6069b16c6b9218266f85c06f8c88fa5a3028d580c5e53af4c8eb302b9bb85429bddae60250104249d3caf34d1e1d3c7aa6f2568034798d77d7b0abb263b3a6c998a8c127907a802afb3ff8f06482573a4787dd0b9b267521207dca3e4e8c849ec90d111d160c38022cbea7b76b32e767e205be9794ec51dbcc8fcab9681358c5a3b255df793c87f796bad03ad3f04bb22211719b744599f7098d0530378d5715c4b2f3ee8cf10e3c07e5ff4d120ad4889a1c5ee02c55f61df851808434d614a26cda1224d72f30ff0c3a41431bd4ee325e97dae3b11579d55c8c95aa61c1cbba9fb07baaa0a03e5fe54f0d5da234a653e9601e9a76b9e8c7ac6e7014103524412b313d6ed55cb04c7603dab0b649450781724d8e7324d343cf43e3da8b2e8c8ba6eb25e70410cc59d55cc8876a99f8215c7df66f88dd617ffc21b9858f1f712fef01ef005290c9e974b92853989bad74aa040f7e069948a13b1b74aa104b940de41da41573e2f9f822916353d770bc91447c3017ce871bd5547298a6898ecff17581b6ad64d3d4b5f75c1bf0e1a4c7763dce82e95b91a8f7c6e7e5b560172d5f404395c70331080a92b2179db498b17bf4814dba8546ca53b9c7a763bcd1087766bb7ddba3993a09355433d6b14e3a2ca46b2ac116cb163c289b1c66bbd0f621f8a6ec906594d23c86536b648a500ef81003a20b6749ea92c96b2521b412c66ff2b85633a4a1cc92278dc80144ab61d68175d3f411dab260a48895040a093a93a6165e752b6d5c2f9ae68c89f710e4b358b602dd63212906b8f7e2a67413471ce8202cdd66a6126dd9640afe5b5e67cdbcfc5de5f669053f4315ac24dc183e6e7a227670b941300d51a7567b4d27afd6b642815d33ce2ec45487d38e099a073a80faea9e5713f64373212925240081485bd24fa7ecef06c1209d69728d791190c7183a8038196002f05b5963fa4dd599875a7a2491f8da45e418d845d7c842da9378aa70cf4e13017260b4f5ad7fe3a388b73496e0a362d5227cc64b95272ee71de44bc1acc98692483afe5ea4cb5e687a4348895cf358e5c68254626a2f424a82197ee50e1f3c1b0f93944cf22590064f7f6622a88143402e81e8cb34d1995eeae901e8d2bc4186e8c4488a048ae5b4938701f9bee4fe01e228ca999c7e25ce45c54e25b4922485c8d9e8ccf6b9ce9765675576c1c4c6361f0ecc13410f669b36755fd64bc1f26ad90183c71129fa741d295e9943f61a7992a70a319f1a891a33db202bd72d9a5a9f224e10d5668631e33de8ccdcbb44c9f865b36cd5ec25ea68248309de2636ee4b4f61a220fa915cc329ee4a6c472651c2a83af1e23b15d521e4111ca860eb024a4886b78efb7a43497412d086fd77cbf29c5770e80d931714f71630464749bd5ca45111c2c86fe8f86f2d9934a61c3c5ac31a3fc394bf30171a7e06f31599e4854c34530a9c5ddfb053773b798b34a816127a797ba94cdf90a558bcefd9698e0d752931cbfe923db0e1d25ef725988cdc3c98d7ba8548cbbc4cb54316c6dd63d27598e359999ea1fb549e336ea6804c1fefb4471185e0896905904f52b88bf705d7d9d900e7422fb895ca3df5b214952eef209b28d4b04df85a5635cdc2ca3e6491362a16ca4540bd3dbb7d702509ae5372a4bda9c666ac309d80d26d199b8afe42071be2c1a9f5e9cc5e656fddcfbae55c64ac44bca3f015eaeb9dcb62e60fe15798a40c6d0bea9b2e2d84bc409dc9f2c82bc5832957e773515d8e7d6403f1756d73a192664da5240d6e6e36e3a14a82a10e4327f70a3016e50bf0c4da650d2605e564724dc361a690aa5e52ca173c2d213264e7c6cdafcca9e0ed30b74ea16965f3c4a5a940316d4ad39b90590264d1e1b2ae44d7a9203f7951940336fa67e9fe623bef6c74a4c9d8c2b94305241bd8cb1d800d4223884ec1d301f7d3c374d46b881753355c7a5689bc875b44f5afe0918433324c8d1edb144190722a7061bc6d798db2bf4e3948fb594da63c5b30e250c4ac3a331880e2b72c8a7be160d1e3e340812cb4c754d4d939d7b9e7b017d7dbdc0098ba62ceb65ee07e1e6b57baa99895b54569cacd925c610dace4e4248b658c7f259d1ffb92ed284a81989d2ee2ad66c3a961b112fc0c6245f19e40cc5453cf585af012b31a9b0b485002b00f9363374802a9277216128225ca01b8b4803dbd540dc6845b75f6435e671581a7d85db9e467493d6217bc3a830982e24831474263b8b10944377d81be41cd41c2a21dd238585d92fba73acafe2ff6fe45bd6d1c4918866f05f13bdd941289f2310725ee4cda4966b29374b27132fdee6f796d888424c414a92529dbeac4cff3dfc6777bdf957c0faa702629c94ed2ddb3e3ec4e5bc419850250275459f352bef72e3cce015b16fbbdaef9d03608c275f9499f13be1910921fb245014169d45794146375481a4b629af4c4225fd7d94884de60dc61688b02f40f5944e03f6313bccbbe46fbf67d670790ae427428fbc414c4142fd82a2299c838560dc117b987cdd4ba5773fb533b4be59a2b6250313b746aaa226e850a712079e72a7d607bd957c1ac8a32a7251b2fc890162c16bb111cdc6af7c726da13e2203da71c450387741eb1d77458904396b094cfa7c0dfc53917acc345969fb11c96924f25dfcec5eae2693829cb59d1eff5e22c2ac271968d218cfdb457ccc4dd534c182b8b5edcdb9afeadbbf7f1bffe369fedfdcfe5dfe2176f7e3d9bbcbbfff3af07bf6deeedfcf271b8fd62eb3fb38f1f3e6edd9f3febb19897ff67cce3fd070f771e6cefee3dda414fbb7444734eeec3d17d3fdc92d18f8ab3329b75087f47a57f01fe6e226e18277281e25c8c6b35d83cbfb2e13f78f9465a22bd953160610f8b037d9e7667391bf14b1613bf104e1f9ef400f52f7d908323cd8225a353ed043c1b91d30b9ec6d9c5a9c07f015060a6b2724246399d32bc1b2fd8109a448017a169127c6582ecb990b4d2cf381d3e5a74c89b5cfc0f9cd6923792e0eadd95aec00b027e9495100c77523663260c99f4497e07f4e03ae6fc60833c55597d6843ca6965cf1590ed63bb6125e3cb1799530f6bf930ca4d44e6276605c7c86c43fd645e9d7a8225343c2e802fcbcfa46d15f81f5d209ee3b5aee5ded6ce51de2dab39205d481232cd6296d771bd5df22c8d7371c0ef7677c31d997630c9b32923dbf7bb3bbb32e925cfd928bb245bbbdded4732ed153a3b2ec98bcb5992e52c275b5b324be0b046f3ee83d0a40346cb9c07568e293c900181e5b236ae53bdbd837dc4907d522371f75b6ac17125c3cba0c7b283094d53962c5dbd31c7e7c3e8715fd0958a83f8fb8737afa522d590b89dbab5a981e0664781622fdcec6ee141f076c67215a4656babbbb52dcf8714ce37b9cfc4e754106d2c1df354cae0eca88353e98e2d52b303d60783502d709431c9591aa37772d1c3abb74a7825e63c506e08a447df212b4bf5c09f4f050b2409afdd694162964853413e459c83ca4692268028cdb1e124d1e85e0b982c9770510dd5c14ebdfdb14f4ae309bc60e52bf546471a836b9701102d47ecc7ca0eae80d16906405854794704a398a715f061a0bdfe8f589e2bb3a891a458155951b0f2039fb26c5e4ab5142f0d652ec638302ee3a73ce5d3f914003e63294d8cd3898fe928cbcb798a2e1ed09e89ce668ce68a92a764381f37a12179930d8146a7a972f5f01c6f28a903118c544e20f076d956a6ac62d2055e080e984c23ee0e13370ef054ca0f8e12200bc47976f8ec9d9a8dba9dc7bc9ccc8770319fe5bc38cb2e68d2fb9f1e2f8a392b7a3b8feecbf2a0562b2a7b4e872d49349c7e65b00286aac39a626f59fb2a2b4ab5aff4de13fcc63817fcae6c2acad2925dca380ecedb2cebe47577419a298b39d05b495f9362c4e88140aa570b92ced1097d99914c9c06284ed0919bf28cc6a498b1a8cce753013caf4759ce1ce43bddad1d9d584580fbdd473ad73ecce19290e9af17e925d90e1f860f047d67e4ebab8f60547aca73b79e38945f851170ba37a52bc94192137ce1d7ca382d07d0f0528d8de6891d93817aea4670940f8737482cc171b93adca006b42715ca234fc533a1692c19ad5fb298859f8afff7ffffff48859414418459da12444a44e7e349f9421b6a6eb481ee02f96e9c5986e175f250a97d776551994a23b40e62c046f11474f0944cd5a3964c138c0b5266e371a2c22402eb2b1861f09103bfc0f3bf92500d36b6061bb021061bddadc146e839ac5a7dfb2aff6996aa12462028bb2dfd8e2533e459ca2e9a8802d3981fa720ce22d0a44a27b21fd86529d6a635d850af95540fa1fc013eef3bc6be9ce6342a59fe9c96d48bf66fec4dcd6b2a3d676381a567d5c55f562c1215c2c3cab8b2158edecd4d4a164dc0933d58a8c6bc88b2739623cabda149c9c8c76182c4247a9694ef51f169015abb5065dbad0cbd8639cd178617eaf77a171717619aa5c32483001521cf7adb9b5b5bbdcdfb3d6403527659963c3a8330210e6b136e867ba44541b651946dd4974c7959cab00b94a3140397434f1025f7191c6c105b73cc8242bac54c320aaf67697a06cf4da48f566584968d54e7d2eeaf907c8d779fd7fbcb335700978a7871fc223496a2b3739db9c8dceb112dc7920b275dd2ba95040ec9b2b25c28c6bf1566a982cbbe763368caae443a59ce6f773b9c654529c7d0dab47abfc29f57f0df97594e72460b080d7d394bd0d3311d66e728e611572b043d9ca78a9201f6d1bef74fa5503856ef6a781ecda7329e0a02f785b8f6f079d40598e2e8b00f344565df1222454a564b63f1391af1884b050c2d0a3e4ebd11d5a84124598f07b45b58bdc49042cfbbc305a8b2ef3acf31982e06860092ed42316d9215f35ce2d12fe2ca97af295663d6a135905abcbacefa17b58d35acbcd9c3f2adc12ccf86099b4ac9b2249040e43c6625fa6d4381aeb82de6822c941a8d22ca33b838a5145635a4c9593e9dd1a8044a4f735756f7ce4eae5c56c6c5bca76492777cac04179eb81bb10d168325102b484660d3941f0ea12375bb4ceaf4043dd8a592e0ebf5a491078d6342e54c95ba0824f38af540892d3cf1463225d49826e97c4bf2aeac8c21ac308b8d77514965205725ce6b60382752fa0ef1562ff91489fd07359ca1a2fb1e6a6f785b0f91922db22983402c18984ceac9e1215ed501650329e75de26bdd87487bc7bc98812d0a05f867607c5582af3ed414b2d8b0929b287a463adcb20e01b5716a38481a45d9749ac5fa398a1c804443405de5e160c84891c2b6d56d0183b34ba63ce1058bb2548e0045e2195a0a06b9d1ac3b31faa0a8a55a403a094d0f42a3d99093fd3bd08a64dfe2fa5a483f02603b641305131a790bf36e1af015bd848f723436481624ce337506c935d78391e800c7374bc1b45b70eee2603da789a45b2d17d7652e9d30e6c6f311553ad1ed4d0cdf43662c27124ca81533ef60ccf328543c6247f69c5fc93477d27b9be629bf4622ab44cb15e0ff3ae1d184a94077b9ee5d1a4288db2641a6546e71c98ecaea4a3d8bde371091b5dc3e4a18cdd5ca388b66bd051465f44cdc695aa564d39e4dce63cf7789c070d0cf849f8a539064a85beeabcca82ce329195dcc35a0b2998ca66dbe849943a59c38c605c5a9284db06f1444e2071e9d81bdbbb4d941fcfc4fb51f6941f0f500ba0c9511a140a8c20b6c563fd778554279742a48633a2b71ceef0ffff94ec568a73153c60f783c4e591aa321a5a0a70b06ce9a05d95874c88ce6258fe609cdd1e7c094e63078fe1bf3a515549efc60db3793e1a1ab32a3ca7524b849490a74f05d9c4092b1e0e2b141497996999c2cc41d70f51296e4a3e449cc78d6cb8b738125bd61920d7b511c8f1e6cef6cefeddea78fa2d1c3bd877bdbbbc3077b51ccee8f1e3191797f7b933e80974ea2664f22d94667a362af5e1f6d465ad674487072c28a37606e137414df96cc99628ca4270eb1e94f20b24eaca2f42c7db4244abe9261b95b341757b5a30d3ea1f01e483ff085b4d436c39169b1e76f0012c589a3d502fa78711e806a25dd09c7a091475ef0f0e356bb434e8ac7e44e0b3a6e9d14649f9cf0502079abdd0ee32c65edc766548ea64e8c1fedf64e0ae345cce483aa92fcf82316542ab6fd7d0106d8d2158f27961da7d513ccdf8209c1c9abd74435868015172d60127502ce144ff85180177a70dc76be6c172cd516b19193b82dedd04f5865f89e472731ed1aa7e306633c9c10edbb4196689ebbeea8543831d70c5454f4c3c2f354c6996968a4163b1bac4b4d40940f8b19936fd75ea5f056cd364f5251cce6606d9a76613010c2503e1d0aaa7745cb7b1c7002f74d36930fc29e63e89e5636fce41263d9f09358cd6cf82934bb973c85f4be1a7a2023ff047d91aefbd49b99a7094fd961b948d83bd427e687e2908becc79458a85b88524aed98f70a28175827436363dbb0a76aa7d55cc96a782ea810e775a74881aed56387bf09fa5c908707878792362f801980f7d14814139841e13d2cf2e811e96c4cb056e47fe62ce74c5c29059bc7996e518a8c6356440c1c85436bd8bae211521ddd47dc16b3499ec5bcac0e413d30c0476d57ba8b3e7906fa72988f9e8992aaabae40ec3f96538fa141f14f10dceefb05dc09575851be117b868f01b3910a8bc3990ef460f995578f2ac43f58a6c309634aee26bd9d1fc969e510cc187f0f93393b7646817344322a2ffa10a0f6548dfee0f0f0fd3c61052b4fed3af382e9d78ccb6be08a6632a27db2d0708109011805034293ae8e5fd105a64b0293e69a492bf1b5465d4f66e55ec21983dbba23e801e0f4329d2ffe590dbc4a5396b7061be128cb061b78c9de55d29c2c112b3ed8c8593cd8e85839838dbf222a1651ce583ad8e83b150999303e9e947db2bdd971d2071bfd4976cef26a0d02c409ea390e54c7c3844667830da7e095f575e50eaa4f215263b5f1519696bfca210d368659e2cd4754fee9a721ad1dd7098417ef93cf64b031cab213590c5ef55f75bcc26ae25bdec49d51ebdf28d7c585017a1b2ce2f62cebab9ab5ee37ada52c60afa6b786e4aa43c2306cafaead41291aa903dfb59b22a1069e68d300aad2124aa30b46b635136249bc1ccc83f7eeeb41c2a0e435862e9155d46f464fbb3dcb6ec46ad5a647ade4963a413bd609d8f10ea48e73d838b13af3313eccd675437cf6d882ab29d4d67c6f4449a3ab885994d05cba6fda279faf1e9b26634eff13af173707af9a433c93748ea4dfcfd8a268e170da35ce6fced8c2a1a5ced8e26813c3c506fdc0761a6a757274c616c7109353340b5f55e2ca6ee9af764bf64456b6a46bd9805952abaa91a94120b3b476abab16f79e03521b1e6d2f18a3cc93bdf8efef970c88dc236edd8e0b7737f378c588a583f5f053c653d4727973b057c29f83ce5b38fc578e2306c775757be5c8595dd3c8f15a83d5303215c93d127c0ec83dddf33d125c05d5a979f12b8bd0dde2d6974502fe9d2533965b8e61ab6b839aa188271c8cb0a37951665324fca4a167c4f2126cb2c95da0190c6914928f82360081254478c9d2928ce89427dc26e8048952d3b1a83607d50f508e527b49d513032076400202de25ccf3505ca6f4d081b61327cbcf6c2ddb064e6821198cb7e688b19b5875d0285378249f73f598502b228d3806c3b4250c9e3b003b30cb9991f802e18c1ee65041a82cc0f1e19374392efd97b8f0f8f1476f9ee184166f2f522de91003765840317775f2b85521b55539a19a7d1ddb4d55aa351f653a2ef0551d1b4301fbd436d1c1bd1c9ec60a5889aa04d377138f8321682c230c0cede55c54a848958d83d05112ced09e76ccd62ae6d184d0a29e57ea5abc121ac34a564992db6d33c25fb4c90ce08bdcbf5a8312339ac8e0fff251eadcde87d0c4ac9833bb4f70d56c0f0bf4cca579ed86018940ed328253413b8ab009c153fb71f14a86cd5d9fa2c8220e41584c64365ccd5ac6cc5e813ea1644a6768aa12d1294b0ec072da3a8f506d29067e7078a8c92b9da97d40fa1d854f70dc1d3db39fae2a7c5963efd58ed428aca77032240f12d9330bc9706b4bcb3af8d0eda1ceaf20d9bc9ccdbda7f7c32c4bae3c3ef019389361e09a71015e1d946bef0c6ce2c07ce58e71a969189b32c3b04492cf1520adec1bf257e52151aff233092478bb412f443d83122f30bc5be1f00bf5a4ee30a1937a7e4113c9dd9f882cf85996c9594ccc641e5f99e95cb7930ef97cd54149eaf2febeae0f991491fd9f481496d9c7d98ce5028b96cdf2fd8be76bf56ab30a6b00118b57a756cf3fbcd714511d1bf17524a7be79a53dd973973bb8e6456e1806f90ec06baeb5d95926913bd292c1e376ab6640d5f661f2aa61607b46092d4b96b65b26099d1e7cc8de519e17ed56ddd87cdaf4246723572b90b311480c1d4d0394eb906d23613f478a429414358e366d3582f2818c595bc78e3f6157c68c827b8b3a9083a80d294f14e35c2314ed5278b4e739579561ee58ae437b1b47c1e8b07a9e947c96c8fba1a35eb311095e302146d71150c0d4b5574787c83e32cf8394e3c15565c45d51e349d5993102ee3c8487416f47ada01bb42be13e2473e97487fa91f3f663bb904f44e13f7fa4f555cdc7959de3552db2bc6cd9f995c62b25245de60ceabcef378ca1fc5b7e733e56fbd0d3cd1f01117c7eec4eaa6dcdca68555ab63ac97a4271a27cf705b8df82b6d6b8e4ac0ccf1b026c1cc9bec5808f8f25d765367a2e37b8b3e16b36eb4e65b7ee346cd79d25fb7567c986dd913b56e5e1d1a7e2ff98d306d3f9680159ed96995edbaa8d3bd9d43a63433ae4a3051c8bbfd0295614ec74d017bca9dddb3d123c0e5c6ed63ed46111d063ea53e8a76ff5a36f6c3e5ab45b39abe3e12def3d00fe8a7b3f234bb018679b6d769df7602dd1b4f1e8d1c047bfaf63fe65e2e38dce46d5fb82eb5c13f53f3dc496674912b41fdf40f33cd830ca2b2516afd13dabf1cb4b4b63e933f07122d5449824faf0866b65d8fa2a2b799986ca2a66558ee88c97605480b7b6d3232aa88a9e5f2858d2c0b221f8656d757c9697f26e8f01a36b075229152c6b62d9502a856d802aa7092ef493f998a7454fe506353596c25f9671609744f59d889cc02bb91cb289ad698ce67991e50d4d435e5029bdb4792861551925f0aeb6a6799113782597352df2ed45e4bff958a89bc6bca0527ae93a4309abca38a731c75016355da8dca0a6c6b26e5419ab5a99d374191e99fca0b6d6b2ee4c290fd2c3ecf2d58be685816c7f752071d51241a16ac5b749bcb4b7b7495cd3dddb245ea3bfb72a3cdbf7b1299067b06b5100ae01504c44e43094c1a78c5f61f82d395541889a03401ded1db967ed6fdc66568a445f2b45e39a9566a184956a56ae9a28e0eba5eaef634b4cf75e11f99a58b29f2d680dbdf201275fc227093967699c69aabd68d6d117a48bda76d5068848c036547769a9ed691c4bfdbf915da8f6bc86a44bc79a36d2d8c4a442fed8f2b4226fdb9614df2132d8326325d7ab89242b6f7d876e54f45e219521b28ccba8c9586452cb9e8d64870247efac60e2e0bdb5c01ca60da453f0a4e42c8de6a6fc61d81446cb21297ddec58681435228c4a9078928e7f008c8cde9d5d827b58d1d6122fa8ca271ac5149c02b0557f5be059a69d44ccfe34ef4ec455be41e12b11502454fc8aca880930a5252e1d0aeda35d2ef1ba2ccd1b1e2bcfc95aaab2ea38000b3eae3449125e74cba9a5027963c91b47a143febc605396d37f819daa4c1e31454edc9317664437a368a39b1ccecfc18238e8a0096a14a9d99759000ac0422700633a405b3a44ff0c237067348e58c5445e5dc275be4cb179371b4852a5f6d65499e92cf57a4ef94a8ac2a76b0f6412086a7583bf1bbe12870b7bbae646f79832338843570a4b2032155b927d2bd68b1478391a755eb27d2ddf276973babb0980946d9aad3215b6d77ff980faf2e4a44ece3c8c621ef6472eb927de283a5b23daf6addeec95f96c8f077e5f42a1bc0b2382c5486eacf25aaaaf98ebd622577a9a162a5f4ef4e64b931737cb0e069e0f655396ddb28f732db2061a3b283beb61ddb11941f5721640e1f51b30d57f1eab2d87ed508b7bb55b53559a339ddf5cd7bde6a10926d2a218db4f031902a20f604801a236ce846ad1cd85cc78aaec12f577e6415c6ae3ae4f3b5379fe7a2f5db6dbfba0dd87880abc0bd32359cd2329ab47affddfa950dcf78f9e54df6db97b75fa645bbd706373ecaef727df41335d3c186ec7ab0f1fb1e348a1771b7b54aaddce296d3767df8ecef9340cb3904829eeb78e44151f2e86c11f8223e639425ebf5c951d0bd000876659d8eae7d2cb1d6f2f7fee73bb10503678ed94f194fdfd9c2724f42a585549582f6615dc95c7656570ad79efa4b07e315abbf37560ec42bfac7de1862599660b1542e38180b42cbba331e676e8e59d998c278a327824e83b64b17d9f46d7561ab7c861c6c87f81c943b0bab691c45ce66098d580bc4828341ab37ee10cde4a8a17914f89f754f8110e4cfb8ab7e6774d654ba0e3614fc9665d32e4f030461c7a465f3d24e1ce774e87d0e21949084bc3b1d84f8dac7be140feb2d501ca1a2ed6b91fecf8d96a304dc4c56174564d8eb21f5e520e56e00b8c85b1bdc312f66095dac86b7313ac61af6f53acc2ec5ddda9d66bf99df453720f7e431788f042a5d56d1794a91faaf7021a3bcf4f6f0482b4236a830a5977f978f1634c24ee9e5af3c2e2756d285f73df1eb4459329fa67eb529af4bb23bc49d5073b04d79da052764a9738e05537a599b3ee249d2d5fe53bdacb2b68ab4f3ec8e928c9645d3d644045abd391d21e3bfd951a854107fc66df6ef49f93a3baa27ee1f9a77d5327d117f69627db319a3254fc7dd4a499de3d5e9b9b352c9bf17918dfc36ced070d8ffbb779951ea19b49c2c661396d29269931e1bb775ae34d64be9d441ea6aed65785d2dbdbe51c8ef6917f2c76ff6a53639dfdc28e78f62aa4f3c0ccf869f3ac43244335bff8c812b5c3310ad36696cc23249859d8184a74a64e97c8afe05ac0b9dc07be274c4c7f3baac8b9c9726d9e57c1df54136fca41eb518059febc7211b7e5a4e5799bd6a8dc224aa095b992838fc5057cfcf726b572816d34dc369dceba1bb3b089d8a2e03302a89518e9b368ab5ceefa59a566ddaec1844e28b07b545b167f86a55ec189101790b15c8be5d13544a65abd7693dbd73f4dfadf6f1ddd6d3fe60d0c2df8341bbfd54fca7376e87239e942c5fa20673e42752a00bfcd117c119f5d0e8d78a2da6cc19834e809eada46333cdadf1a202585bafa785c75a62840bed8b8c8c53116fb77cbeea10b3c23690da0d227e65602e6afaad415e87a8415c4717ee75ded8b619acb584a2b8440e73f77ae617365e9863652d9ac1a709ac2d2dd60cfc6b0312a135baa49a3ae8c26e3ee41119b2df38cba5158f7cc42c0dd7b55df9f9f59011d1a5c4076ff02a47dab9e3ee82276e7a739abde858ad0c52f37650f9fe1c32b38569412e5892e0a0dd01d7eb847dab01b7ce1146e020fbeb987d543448d9bc54f247efb9414c8bc9012de42b0db24f02103460d9b0cc5e6717f882a60576cadd406b7f578e43598c3429e42b2a703316ad52051caba193dc5d50ab17d7fbda6f16f7b738362b1dde01d3f63c6679e0a9d27b3d224e1bb0a5d2962f8028e8779682931ef5b84cffcbe0c414a3511261bfcf8ebf04f72ac302c877c4b264f372a9bd8bb92175c12bb87cea8c3c3ca43487e9f508f0de5dc28a84a76537e605f81c4ab3ee39cd3bd23d7db764d359226074b787f7f57c366379242648cb92e5a9e0918e9e75ff7fc7bdb194464c0b2bebbfc5f1ff58c5e78a264c3d1db62fddecef802480ae2db83d5ca20bd11a325cacaed055556c6b09c2dd3af86010fe435f28e39f7650f248641ddb640cbcc592dc82c8d4c8e143a6e34ecc593eab6db26f201696ac285bd07a9b3c95f3c6cefaf857cd189753519a35f3fedde5b9601df9f896caada572a9a09f525af27373efa1b0ae98d188497fb2411f24d465ce87f392051dab80f4202a4a7c9a17251f2d64b6007d172254893cfc61e5306c55fc31f2426b348ac782c1d0848fd30314f7f549302d5e26ecf2b5003f8dceb0552872c89291ce7f55b2e933916a151069852e61e5cab1fb7d98f6e1fcd6e96fe134ef28cdc0dff2ecc2d401c5f73933d987939ca767bac02f6c4cdd023fd382e3b0de61f00d161ff2df5850ab53007c5e2293f1815843bc2fa13d9b6b77aac82205a1e4cb977f05598bb18abe3d0dbef63470f7fa373b0a30f522a7b36ecece595e3091a3680acc16b976e29ac787dafac80afd9c2dddfdba903900c4507fc5ae75ae38828ac65dfa3689d7d6ff892acf215a9332b56964cd1b35827a586f730ed3f06d17409f233951718b9f0ba623a24940fa24986439ff2d4b4b9a049d4a8b7a689546d5329956558a6834cdf2294d8281ab54bc3da9ea3cd11e828ff6d75974e65a7d9a7429585ce5fd568d5976587bc68c59d9b79d0294ad0ac81b449566386d75b66a58feeeb2cbefbe2868635c180e59466df8f2c532de29693e66cade543be9e510218670f2a4629bfe98702b4a26bc09cee679c46c33f6236e2cc6759bf202c2d216332976931ce02ccfca4c1c1e1e2f81915db126dc4d6d8719c539681f4250cc76f9637bc5f56f11acab4d2151ee0f1cec41428b62a957656799382b243051ae641e103b50dd44a842895a882a7f754594f359092f20a130c2144b98dcd0ec10f07954972ed6dbf2d8ec54b7ef6adfb3b15898c10672f01b62e94cbdb6dd86bad4fdfaf5c8ac60643500c486d5784d68d48abfe203e539149cb909bc8183b443f031f43b6705e49d25cbb4ab0b67b56690d06e578d093d5e593d2c6bca1d8c6b7b6c153341895ad6eecd198d9c179e9010f825966966a0807320b0f4dc6e12122a4d8ae17e501195dceebb02156590a5c0730b5c54fd023beaa40b5e4e3e64f368f25ac6f0f02a54f397d75e36f36ae93f58351589c3e48026c9c18445672de3add6c2038bc0baa34bd84feeecb226f6558d43ecc1c6014d75cc134aa077020167aca89ef502ee1315d8cdea0d1f59b60a968c3ad0a63d54915a339af782196469a487042ec526b44883120352f394979c26bc6031e992623e83e81376098c0d640dd591f62409bc3b90c4267c63e4527c5038d810275f35d78e6bfa143374f4da2b1f49262ce765d12ae643b80e3a384cf85d352530793254aee90afce2b9d98e8140fd2a1e8a1a82a0cb59014f5a211a12e318bc89411304a3dfc89e504f30d820f74865500e14d58ccc7167e804bcff5ad6789dd1db27a41c7e6470a55f611b35f0ea3847b8991af8c3251ce5a0f29a114e666b71e45c0a26ce331ceedb11795a9fdeb0c066ece1c909ccfae4445018ba88cd80be7e7bf08f9383b71f7ff920a37563b2431a5bee5bdecd7376904d6759cab44b2a8370a6568778452565a59b32450d1dec9f3762ef75ac92463fa028e6e65d8f75ad1159b0f8f245c173ecc2d3eaaa1dd2d92c59c876348dd876d0d1a6b99cc91fc9199db1459f049182c2731ebfc9e669a9f83d896ac662d82f687b8d322b75ef9ee7d607efc830a2e9c7823d7ffbc6a53327bc08e5a9854683649f60b8be90a729cb31b19eead47bc59bc9af3c493ea6d3b5266395ad9f0fd9276f683909a7f4b265a576c916843bbac65c41233e1aa15b9aea1c49b7061af225f4277148c9a85d52058d0d40cc3338d8735640401d15728991446c900b5a10968ee9b8fa741ac7e2e9a0e4b8b0af0f596bb3a3926674ccfeeb2d8eff9e9c48bb5653249f223374c229e7230d4a05d10bb16231782c4e0946aac2a0d131b8a835a3bd1e8ed4a206c6fa6d4206cc6d79fc028d2281152fb31c37cf90027905a3415ea3ae042ed879c663929db31c0244473984d7e1e998cc681c83af57bba742d53e9cd1080217d5f6fde38f365a3e215be4a9bd76816cbb0b8f0203cb5953014709e6b651c73abb0ccc72f595975c35a08982b2dbc473e9d817e16d5af21583928c56f20079f9bdc020432d9f220e0f2100117e74ec19e103f0be66bb5b0ea606c3ecb22b9dbff4c5571eb31c0ddd07ae52554213b8467528dbce0dc9a9347ededadcfce1f129c95232cce285dd8a58cb510262fd098f6396ba9d98d76d41ce124b9caffe296b6afc6b6d9a8ebffada599ae760e0589d3512c8e644073607a11ad6dc6bd62d2317c49586d6a09a6d7554159c0352d4300f465f6edf8adf5d26f39a8fd8c1224a4443e73c669e83a34af69f426c56195593f40ca658cf3e863d93bee6a4ecadf69d6666c6f4ef2010fc0e2285b517db2bbdac0f6b51fe58a61df9c85f7939c9e6a525e2511a32db873b8ab58c218623f6f3f46e521d57684d046f939fc07fa774b0ce2c69d39db564a33024deaeb42045a3fc98ec834e8d1fd7b0d24606aa79999a634ac3a592693b8e850917cf30fc09fa900cd5b7be6466f24c6f84307a983d0a54cdc0bf5074174f575de016ce197f525240db77dfc15726e6df4156634e56edcd5369edfbdf2eb7826bcd2fdc0aaeff00c17575135429af3f58c2bd42527d2b20be1510df0a886f05c4df5a406c6272540ec4d6af18e8cd1706576e8e5a91b12d34867615b5d12437b6c800a7bc2f511224d86357f47352b2e9ac434e50927b92b3d22a502f7276bab00590261e70c2d21a177820291607b5f4619eb0b4dd2127e8b57cf331fe7a02b5f1c3a14408d43e3a912601c630e1c4370ba84a83406a0053c51fe254da5f43402e0046f6dd19af232a7741d4067a5e8acc25192c3ad00ef5c4c4daedb65c06f5374c243abd9da9b013163064446d7f331188b2c9cf5586064b07975a34de3c6d0b0d2acf7b1c71be8796477a602b64fad794eaabc8ca15a9362ead178ba1148342d1cf07c5ba59d2d24ab65f5dd551f1c3c261162f1efb023c6886c4ec9c47acf045dab20de53b0d2597bc00703d872aed56bbfaeae24d36e40923877444734ef838cd725690cf96d40f857ec409654432087d01b2c2d06e114711d2387e71ced2521d4bad00c63ecdce59a00737cb992803237c939db30ea9c33d7c4df42c49b20b25338787538000b1ecd0068604870ff24adc864a89a6514b334d6fd8af5241e9526ca069e837ecd1851315735f0925bbabab3ad584dc54969879b5eee8fadaa33fcbbec99900a2dc320a58df64d34814c70ebe1d967f1b146e1ed577c4e27541f19d11d9d574ada3eb5a536de393541d0b47db15fdec71451dee5c594815372a2dae363a1b702c03e767e203d229c3d08a231a31c15b89d428cb9915831c8d773b83b4d723ec326233e95d5c3a1ee7a92018584ce20cc8763a2fb32905bbe7644126f49c59d1c8a0110cb9868f2fcb099b862275905e57ec14185e36582574c2417ade5e530c8663978ad9e57f147eb1985d869f6c43afc8155d4545d1f28d531b294680da733125ae88a01b508f7e2b4ba948ebfd9a1b8d464aaec4c1f61ca238ca607866bd209a1438408f4d670e072b0387c14ae19f6769fc3756025985e172ec4eab006857a2b79ab0f128558145b1521fd7153d64f93988806b2a605e6db50fac283f4a714b4d4d9d6d55c6d58f8ae20ff4ac3ae29aedd6417c9e14e7632232f60783c10670cfe28bdc23830d91a2620e40f656b8056997d3242d20655296b37eaf777171115eec84593eee6d6f6e6ef68af3b129d8bf4c787ad6507cebd1a3473d288015a0d8e6ec12be16ce176887711c9b9b3f4012ea71ddb473ce2e7ece64436493ec6d6d8bffa9f1f4e1590ce4ce7256884516bf7f1a0cd2c1a01c0cca27335a4e480c25de6c6fed840f3adb7bf75fd7fdda79b8193eea3cdc0a1f45bbe1767737dce9ec865bddadad70b7bb196e77b7f6c2874977fb51f8a8bbb319de8f4489ee6eb82b4a881f7ba2c49e28fa7a6b672bdcea6cef3e081f91a8bb1d6e77b6c3edee4eb8ddd9137f3b0fc3ada8bb196e75763aa2cfbdf051071293edcd5d51786b3b7c2006d11183d8da821fdb1dd57c62c62087d091c3d8eba8811233b1dfc4dc7b12244fc46afe04687a758bbcff52c8fbe861b883285bf30b310e90b72bb1b7abb05723450de228dcb590cba0208924ea7624ea22964680b95d89b988ceafb71edc0f1f74761fdc0f1fc20804ea7615eaba3b63a7b3bb6b6d1f85bb5d0b77d5bc6e71f7cf88bb707f430e4be93061dd218dcec6f070b19fb20b62957f7c3364dfdddd09ef77761e3e08b75eef6c6d87bb9dedbdbd703711e8b3d7dddad98cf6c2ddee5eb8db117fb704be6d76b71e85f793eece837057fce7be3878efc3ffee875bddddeea3f0617737ea8a5371b3fb409ca7e19e48ecec92d7db7bf73b5b8f1e840f5f6f6def868f3af71f863bebd77f7dff61676b734fec3d3524f11787d58161c1c03b5b3b9bafef3f0c7771667035dcef881e76c3ad0ef4126e751e850fa3cd8ee846ecdd07b08320351153ebc0d4b6c5d11e3ee8dc37b9e26fb423ae80ce03b1f1c39d0e8c38dc82d9ed6ced845bc9d6cea668571c16e47a8d2406ae122c703bde0fb7e0efa3f0e1c1eeee83f04167e791382c767745ab3b0f1f8943c12ce6d2fd7cfbccec4ff9cc4c70a31f1633e63045f8c046a4baaed864d1e58ed864a1ef6bf29366369ba31bd64c6d2fcdba9ac971e2c24dd8d4f77e076995424be3c68902568598b1d91b968feba32deadca0aecab27e74a15b23a43fc00849cfff009de24a2323e99acb9eb2442a480fe1ebb1e1c9d73534d21220104108f61ae37e59b86e71ae4aff09fcb9412663522a7f1ccad85388b29e05d372015610f3f3a0533126e6719f0489202a86d9e5cf343a8bf36ca6e46791120b486b6a7bf05151b45b726261a4600ae6bb57caec477bfed1308792ecb254a7148c0266d3b7cf243d078472c80bb93962e3dfc001896a4a0f446f08c7dd41c4c45653d333b4d001469097678581a01eb629aaea669787607c5d6b7baddd91832b0395aaaca00341baa9c48ab705778c091b957db229bfa48dfbcf595966d365e31dcfcb92e5a1f269e0567f0d6daeac6c7c20b8d5dfe32c6e5cff4336bbc1d08d8939387f53f02945630a3cd28edd81ef6f10866b5987586260422a57590a8dbfb7c4cf2df1734bfcdc123fffaac4cfcb2c2b6f48f94414b473ca045b7e5a0653f3b43c98e7398691c632569a5bf090cd684ed1a6d714d5a96ee10f594913a720a4e842c524bb38000b095946275cdf3e5c4e2be890c01ebdfed643d429301688e2a57a35b6e5b0d80a703ffe48eee8324a19aeecc57f27521170774ac74cc1cbc06e95ddbb24203f5f93341c01c6e19c2571e8a085870f1d6bc9dba4bf6a4cc58c8ab502c3c6c75f4b0b5f734e2eaddbd11b642520477c6cd0ec86f0c4fa1aa2f2f37a00eb58a8a049753c2142fb3645ca1abb6820d353f67624d25a4775d9e8abab535b95e1c88edb32ca8a418dfaaed2f974c8725358634e7d71d9b52e0e88b5b265bd2bea4b0eb32c41da4342eb3b7335b8e6fa9a5bce7b44f5bccc488d34d1c72b46b5ea9380cecb6c39eb52e1525c2777b5cc4ac253a622e16c853bebb130729837e05fdc9ad7645ed6ab5ccbb9d48f1837a6593c894d9fd75ba3b9d8f5d64a8db2b43ce4bfb1155554b13a70055b6c1aa8c0e29414539a2404078d868513a6f6385e15cee8d5e657ef78200058b045b6c866b09473c20d72cb36ddb24db76cd3d7b34d50f1550454b865f5245202afc4b25645fe2d1ff647f2617f6734be291f362fca6c2a6ee23c434b28608b9c54cdf764e9419215faddacfc74392791f2f3bc2c0d6fe7251b6ecca47de065a29bf5d36fc07639c317dc941caa66ac4c17c079793d06ff2af2f6b5e9fc09604885c77017ffa99f704dfaffce1d1f037efc71550b43b508ea1d99807fbf821bd7562188fa6d594b2c3e8fcefa0a7f2514563ccc8663cf3cc956b40a4f923eb97307d610bb018fc2e6330403902f5faa32629daba4cd8b19eb4bec43baa76d941cb8a76b38276789ea39029ae77481aed571c6f5c5c4f961b10d865731c05fc5b1c8517e678e05b1d75c085fc15428ad89bf38d845685cca20c11a21f43efb2a1ef0bf9c6abf3443e5c2de4ed40cd12ce3b612269b978299f14a2ff17ae36825144b002eb6816513ac8faf9fd892dfbd1eba4ca20523135e129a33ea026257353ca5f998a792a3e96e794aa23ed9f2f422bb9b4b4975c48c5b52fd4f4baadf3a63d00b73eb8ce18ff222fcefc62f7e98cca7c394f2c465b974726dd96523d385ac8acff23cbb703b80a4c02fb3ac6128f03d39dd5b5716b7ae2c6e5d590c6e5d597c075fc76bb3ec009f191df394962cd687696169476e661cd5c46794aa8bb0a888d6fb24d8247b9bb3cb1a9e800e8b2cd101c20811ec9662015c1baf8b092f19b8bf040ee322a73357a312ec197b26889539caf2699f04f03ba125fbbfadeedee60f6d2d8a37073c159782cf9bad3351726f4901a937b84bb6310891e12f0cb9faaeba46aebfea665fd535553be4a4d961754df9964bebd6fb12a9a9671eeecaeb714d5f1d354dade3aaa36e04e8b043366c0c29e544e0d9b1a0df98ed9163428b031033bca363d7f986726d8b15c74038b273312727211cf234460f1ced4a8d5fd865e9d41009353594604ca435fae2ae5ddc06a7dcbff22479cf22a6a21aade5cfdaaed04ad965e912ddc0626b5c22c5249b27b1b80f2294d0242cee9051322f2604c17c31119729eaa45f4de998916842d331c6a755c4b7ee27744a8aabca726660e7551d8117ac3c2cf519a7fe352f2d71e3922a6652cc6f7fe93f2d6978f3e2c3dfdf3e3fd4dfabaa0d6a9c4b8f59f992e745a3af71955f7107a484c3063e8ecf60078efbb2b80341a7b8762d2e0be2b7e7a0dc6c9ed0016b9d3f00281b25743ac3e15b754722a1bdc4e98f5fd7994bd7f31e5eebb2bb58015595df02170e1d41fcc0b7076418a982b135780f2ed088030448511e2214816f3b66c0024599cd04dad331f88469d50245f420072228373d52cf1d48e31ef0768043dc109c625f37abfb5f0a5e75ec3522adccaf40460dd2013e9e8b06cfbbf69e5f63b1d591ba6c3422ff66a3b977cdd118bc6d3c6e0d66fb21e6cdcede6ededa607654e8bdba1d62c2b2fdbc6d36b4e9a8cc4a9a284bb66d725755ba47b6c04f4231c92ec85f6422bb2c734a4a438c64a90a4c1e33175931cce013b259772e6c1a14c70093a6c63d7b443fc9694a699ad354af473e641919d1bcd2bc534960926ed1efb73a3413d892dcec3e78ffe297e72fdebf78ff7537023a590171c4b23de6156b79b2571f8d9f8016d7b59a7466bf423b84f2938a7a88807a4207740c04c56d3baf2fc0ec26007b193b9d4748e58b565f7b75b4faca21b1ec460541deb789732b532ad402518767f382b444fb581884cc76575223259572eb1d7e16e0979d3a5eb1fafb7ba779977b3b7847eee06527c18e3c09d6dee5cb10c6dd8dfbfe76fcee98848128ae894aeffd4a555c128b715d5c020abe058d7f7344ba5e5c115ce8ddb52f87ddbacba19636dc5d421c22106d59aeaae3672d43e1dddfeb12422b108b6d3e3a76fa1cd282bd5563dbf48839f70679b26f8dd0e339ac0ebc7d57bd62c495952f489911145ea835c09a84a7e061cd947786e86dcdc74b071116098f58cb34d0b11bb377f53212fc3ac6ece43a860a35b22713b444525f95abad634d349cd259cbc841f874dc213cbebcbe4f324bdf600ea3fa6831b05f1d28f2f8d2e2223b0486e1d4e1a898f66bd56dac7e658739a52878d6af3605fc80bd696dbed65adc7615ac78232d8f11532369b083c578f2a4aa42bcbe7e9da4a7c6e6c34c6aa5b539a2fd4ac31000dccac6fc8558cb90e47771ebf0efa639fc97b634fda3747d1a6f1b6c23e150d26140c4873166cc236dc098471dc3235b97bec82c2b671475828b5037b4c889dc51b60d2587b053cbac35a507bf3c81db4f8de0a9f5bb2f06fce7345abcaeada281a802e58f3f924ae6c90966568cfcf4e2cb94962d5060cd4228562b7ef2d7ad0558a26f0ad9b9a49a7537c6504c9ed9c13c4f5a838d80dc8355bc4782c1463bb0af1b6df8a771b67a0fa89bafc9260fcf7ff9427dad83fd1a868179b4f24d54b9fc9ac092a8d531b3fcceb683d6982a567cef8c7eadc99703be9309a2ecdcca056bbff734e6f3a22f9556f88e6a4263086bc75341956cc2ff6dcd2ec9a448686bb3b3f943676b73f3874eb8dd5e6524686c1c799af094758749169dadb262acd52ea261dfb2c2a880531ba9293a9fd4cb2def73a04d272b3bd579715607a9edd92509966a0ab1a19f01fee06563b0cc0451e3d86d64a35b63ba5b63ba3f2b490cdf1f729ae261fcb73c9bcfaa91fd4b5da02b4ee659a5cbe7d9b45a2bcea64e803f5a140778df78f1004d4643f9a511014db15bdbb65bdbb65bdbb65bdbb6ef67dbf64ef04cc9dac64f507ab9bd131459159c1f4bddd8a0096aaf65c384fd58664b157b25e01a13c965927d5be9b29ecd9084c9f788dd0f5efdecf821352cb1e1399d282321bae03f98f0246ecddaae25833fe7999b6d8fe9e32c16db6ab956be527e9dd9aa961de3a767299fd29291118d1911678700496f8e815c1c02752e43fdec93edcd4d47035128962dd06e81f1ff43d16a1755049f4936a3112f177db2196e6e3d2657cd85ad9f5d2944b0aa6f3d26869ce8ab74e03df420ef91605a34f591305a69714949eb67cd687032d71f9009150ff214450449b976bbb52af0ac45dbd46a1f2563de5718065f966e622de18fd89b2b8bc2f2ebc2880ced950f34ebe8c6d0fbb603abdcacc183c34393e4c0a7e45396cdcbbeabe7009cebeb65733417ec929726cb56980caa9aa3a24f028137c1c0530749d335714ce42c6d43b0b5ea19b1def6af89d074ddf84c2ef2c97daf6f9b67e52f59ccdaade601faa720c6fec153f09ad3baae06b9aab46f50fdc008aea7ed5155e4cdf72da45cf5aeefe12276b0b49953511ccf6023ec3955061b6d8bed79cf66098dd8755bac54735badb2786bb4e9556a6af1ba8de9767e674e0d032a85125f14227cb0ce7e6b52fa5476cb0020fa15783aa52b4bd1af5955a786830e7d0fa354c9662c543bc0828996ed5477c779c66369690024ad25b8f0d6e1579ec411cd636b1d8d44c3c5061ac74a00b71217e26cda9db064c6f2a207276e4fd576db9487d1cd9bb51af05b4641caca36a1e037c77b146fd4088c4479d4fee95c648cff40a946034a98fe045356db993eeccd88902d702c5204305276f176f8c9760b639abde371d1d5f7deb6d318729de7deca438d1f135049740db7ec0a45c5540d036535fbdc88819fae2a617a17cb7165a9bbd41cc4104475c1afc1efa2266860bdd416010acda3a8b6ed06e2abd804897f58493d72cfe4cfb523f8a9096033d681a3d6dddcf950a24134a58c5e14377d7d1f0337f132b08e9f81353c0d7c0b5f03eb781b58027edfeb006e6aeb6050109571845148a027dc6e9690bdceb2822d13935d4bde640a216e562b8796c409243243258f21d791d95857939e934a6ba559cc3a4ac1ed1ea022cbd27edb8af06296f0b21590a01d8eb2fc058d26961558e49f7b40a4ab1e8d8e5f762d25766dc741847bf55954b44efefd466e75ba6af0bdbb770729b94b9e915373ed9d1a2e86cc0b9e8e05b963b1dc05a1694c284832c467084dbc2a8382f0b49809029c0c17e0d5905d462c49444347e9b88b55d871cb0acd948e652a44686a93840f739a4354631cdaa9435b9d12b109382b082533ca73928da4203d155ca06017c58045dfa7743663343fed905360334f3bd09e18fba9e02d4f495182b96b3682f2668221f93061f2fd0e36ce0bd96f0cf5cb094b0985e60a1665694c061b28aa186ca81a2901c52b2933b444a02543478f456160179267a392a107489d88e39cd2329a88b99cc659ca4e9d5952883b8ae329332228285e946e2bf882cec0f1573166800b4f4f41e529665566e37182ad9c0a02f4148a98277a173c490844782677b136bba4d35922c545a7801a52938180f14a48118e551057218e592c80246aa4ecb224258fce04e039429b44597ace5298c990162c5631af4f0dcf8fd38029f606a9da8a1e772790fcff9c9cbcfbf8fec5c98928674982df0b6af12f8df2603c3f3d9946a5922f2176cab71cb7384ad2ea5d7aaba2e6a7ece26691f3d7889b7fe5488b0585eccdcf0961efe5d587b3070d8f3d51144467e90b904cdab2783c9570a3f274ecdbab8b7a7f195b31520bf314d64e6de916c85312e04740fa24403b95b66bc0aeaaa9b6dc1e429d6f1b34491b587db032759e07e228096ce3a7baab0ae2bb7ab6e227f6d330848d4356d4e457e0557970540f730198af02fbf637803b1e0407cba1bf1d7ac56a1661946417cfd2f8990b67afde1ad076675e0b709e8e6f0a73167f1dc8771a405e0b5b7145ac80ec4ee8145a0bb9572c6f33d23b5dadb1142c5eb5122cbec9425cf2b2b20aab41bfdb087ad8ebd7394d76af7b9c4828b7d73c7c562dc4baa7cf252f97adc0252f1176ebc1bceebc590df6bd6b807dadc364ef773a4c70c62be0a78e92354158737cac86e0fd6b40708d23e3fe0d8e8c95f7e1758e0680c30ab8ca836125587d32c292450896d6856d542538a42249673cae2d4ff6b5718b69e2cefe3e09d09e37204fad9c2351f698f4edc2f748d00da4a588d34715e5afdb9368fb19b412389d429fd87ce074e9e3c84d3a7c9ea575dd89a603fff167fd9b30fdd3c25f0f187d3fc12aea4ca2ef7e6a9c79ec234d936d8432082c33b2ef92fa460e221bc162ee2e69100ee8ede3e062c32e7f60bdeab3363954add38dd66fee07e11a706daaba26b49baad71f2b66c03ffed82439518746dd586b6bd59ce4d561d6d6ac1c54063df4ca7ab787bbbaf5578b99865ae65e4fb3bd100d22137f224628c9d98c721d4aa9d72317131e4d44c19445ac2868be70040d4684a18c44c0810e3accd22687299d825c409eb9d50111d2bb4b5891f0b4ecc6bc00dbe334ebced379c1e2aeb17c2b80efc61a4a8425fe8645946749f221337637a6410c86bda4bd7528197dce5756248d5d16d3d7639fdb8144f57b4dc75ac05c4a314b58c948c3d1ef3ceb697c275a5520bafd4a6b0b0d7a49ef4a4312f9d5f17259ece6b3d82f011ed23c1ed02e03c61516bde1e539d5f1db2b610f013ee5aab4db75326ce7a4b46d0314d83c794ae564d5aab7599e09d40f597a1efef2f6f98b9317bffc535a76cef22c9e2bdbcea72e986b16c2342bc18fd25042ee82fccf48d2acfbce92ba81304f0bca68417889f62c45076c570a92e564420b32e2292f262cf6a58cb2af67a4e0e9586c0971144534254340b9731e4b71239772b82123c57c043138e1a4c0d7eb25bc9962e15836289bb5e464fb838d118dd960c3484f4f8dc9d769c7fe52f23a371144901dd532665cf2d294bae465a5a648c38a32450b6441066b25a9aa0a242fc4c4781af3731ecf69622f80800f4d8a0c803163111f711024c66c26767a5a260b92f033d67781717afaa990bf2db87cfe2cd32457d927c17421c71474dcbc67f2590e9480df9582d29a4994b01f48a99c9a16ea8a0982090b09e0558ac0c6852e04a1eda4d7755029e4376f17b8ba32f072e0f76a4416d99c5cd0b414a85f301036174c6b2c8c9e0055c94533fcf1c1aebaa04679362541d8c3cf302a0a4915560721463005371a6a1c7331023a65c9012dc00fc2229b8300988c7822a8a90915851724024773059fce9205296639a3b16cb49cb02998f3331a936c049e14a406614ab29491e142fc59139d48188672628db0fc2b50c69f9168265f8887834ffbc47a24e8e35f3517f0a32179691d8108355997bcac4f6d6c4c2255254741006804db52cf98525897eae184ce0421e91ec4cfc8e9137372ff740a4f0386343a2323d033f1e994c59c962c5910aa5529522e220e602db6528a1cd9b03cc8c39aa579296907203cfae4efe554d9d375082f9e29f9539f0cb32c695b73d457b7999fa043bee9a4149f46f0391fb9ab66a8337c8dd5f79822e47dc75956a717e8a386e68cdcbd8bf47a7cf7aed13bd97a32317d5031c98bfaf9db37489a7e0760084ae83bc1421ccedf0473bd61c325f2fdc6ac71f1a658581deef7c4380365a681dc846486aaf9a698569d7015ab06e995363d92ce2594c58e4f5e578d0855e1c7356695f2d7d16043592e6e1c3fdee86c28eb80836cb6008f5a6071b0bdb9b5d3152c1b6c90973462c32c3beb90576964b4cdc0d04aeb9c48b086bc20098f585ab098cc814913c07af3ea834a26a36c9e2a9530b4f1fad5c18b5f0e5fc05dae54c5799695d2d357962f50756f7a2a73c6943ab8f28459800cf4971aaa872cca99f7b631e1c35e5da9c0b3ea63d359b9d0ebd9269faf9ab37fe5e5e43d2b58a9cbd5678702a8e5af344f793a3ea0d18489c5b18b3eae358b6d7e415d4cf8b425394cf1078435866bc1cf248bd0ee008abc9c2709a6173071e7916f2121b6bf5f0b4af7adcbab52ac7a510ad6a5a023e5cd179e0f22dd076d84034708e8eba5c5b2b13c976a707c84171cd02411d493b1c93ca7098f6999e585448f64017292ac24c57c262065ac524e8d51ec2999d1e88c8e5908ef47828f05b3765d3461d199fe6cb5c105174d12a00e658df782709c663923b424d2b065340ca7ac372f58175ae87acf8ac5b4589e87298ac882570237b9a069ffc9b304d6428946f10922cb735b06890655133eb54cde219e349ffac60863561e0a1cf00d856459d3242c9872317207ced51ef9076333dc60822c0603ba451a910b5e4e8861b6c939cbe121244fc969d81b51d89b02ab05d8e0591ccb8bf05321f8bb8194a1bae863fc6983d3a53e8c4fbb8ac81227414cce49404f1d4e123e0970929038759316d3a1d7384dddde613c6f477d0549992c43273b4565da07f0e667a5abc7c2d556f01aa80cbb5a10823cd726626f6e462148e9ca882fa900889be82278bfe1d8ea28d4f14e27afbc12fb106f71437b99dd2c3b6e7825e7eadfea0e0a0e5f1cbc7ff1e1e4f9db935fde7e3879f7ecf0f0e4c3df5f1d9ebc7d7ff25f6f3f9efcfaeaf5eb939f5f9cbc7cf5fec5f3a0ee1aaf6b5880f08f7eb551dfed37791a31a185321fb52e5f95da628a8cf765dce0781b3391057dcd8d576c72e78ea38aa81454f12c0a4b76fe180cb49519e660039f7bbb9d8882e19016ec9f14621e5632dbe41e81aa6d1d4355b5646bcfb008083dbb5b8d606fa2eabef57b14c793c6caf7154def51bee685478d470b59ae1b6753f520e3db3fabfab345f095f6ded24e9d5d46c93cd6fa7320dfa4b9bc7aa1a1d4ae57c6a39a13efd736b2ff075b5836fd676c51c8e6daba203c5ee0769c60cb238f69a5d69e1f2d1a4d21e38e07f6aa9c8bde16f00ca336b8f0725bfcb52204ffeb1ad0abdbf283a0729f54deb0fd649b7683952d88d069c27f63718309b8b4fca5a55488b082c828a1a4bcc8887a596b196c9f9e7e2a2ee167750484a73f4116214f5ed298fdf424e6e73fbd92324eb4b97ed213694f7a905f5738c756d1de79989db36a8d27d5f7953fa9d179f6c235ef37bfda66b8d2e61a76c3953a5f673b7cf2b5c6c327bfb7f5f0c952f3e1094de384554d88ebde9989196daf6f51bd2da1b26dc0b22de1b22d3f1dc85886d5db55d86c1f2f738d6ccde5351fb1681125ac15484962d0219b38c676c520a50205dfc8ae09103beb0362470262c70062470262477e360162a70a889d9b0382a7e36bc1c2b3966b02c5eefaa0d895a0d835a0d895a0d8959f4da0d8ad8262f7e6a060f1da90f0ad5d9bc0b0b73e18f62418f60c18f62418f6e4671318f6aa60d8bb1918404549b6d685c1ba1be3fefa60b82fc170df80e1be04c37df9d90486fb5530dcbf3118705fac0d8935b7c583f501f14002e28101c403098807f2b309100faa8078706340c0ae6884c35ac67bd517fe0d067cde106c90faa3c3ef1c9cca774896f3314f69f24c0cd2b9cb816afa0b08661d1f518a9a22fb75de4baa45d1f7b16347a3e8b132c355d3ae4f8e787c79ecbcd6862cece3488efcb84d5af6e8c83eb14ab5753175a55b45bdf95ad4bb998ad54d4d62cbf58e32e269fcfced1be312a5dd6085b78ecd17da212e8d7b6601df2aada16f470d81a7c15e396e97d026664b5935ab7a871c0d365457838d0e196cf074b071ecf9109324942cf71758e4eb20811fbccb22d99c368f368fed3827f8c8b1a9ecd671bdc59cbcc11e3767f174bc2497c50d9997bc6cce696e13ce8d9b19efb94e4394d19ec483a79566922cd5ad009c2d033ff4be33b2837cf9567f1665d36cd7e792828d16820e95240fca36e92f1d32ae7765cc98bc62d09e2d61ed98ab068575435e6d555839c2d7b02cac3df66f605d884295d4f648e4b817f75d82ab2d683b8b9249be86ce51b9356ded085c4be101aa2a1ea35070bb6d396e20ca6fe56030d80051a22a0d9244918a1e2c870c7504c902187bcb9658cb028a50b9fdacba83ba1aa4570ddae9ba65fa361aea1bca32c7ac0438bea1b319528b5e8a5576caf231b3f3c478aa896eebafd08b6ab5939a0cb7e62fecb2666c7e6ab38b612320b59ef7ff8d9fb3949cd69014a71db5903495da2732953d9f318c3904f7bf16effc7546733a259fef5e990bb3b6652cad448cd8f61551d3ca464efb964cc6d65dda73d69758478cf0656a45a610237649004cc12abeee136a83975a4d6e84bcf8274d78acac3154c5a758587df671b0ce5184de1f0ac46157f4074256ed0755dfc1aa4fbd95a774664d6e897b87487a6fa87305e1ccb4d723f91cb555533ab3e85596336ded586428d713a5c03f4aa16d9ae7253cb8675af1374fca234404290f72006c9c4ae8a1621d572a092e0816d93cc8997a939049d719e2b746a7229b8a712fc49184b635aa187394738538c424f937a34511925f99b1519d6417e4ee302b277749c1d388910b2b934fe749495396cd8b6421fd42a0674ea994010f0e348d49362fa55b020dc5929ea1030a1525b060a544e842fb98a070f85a39900a074781d6a5a046e7654186ac28c978ce0aed8b22caf29c45287b85d71d3c1d87e415aee8685ece73988e8091383bc4192860266bcf4b9e704165129e421340b5bd992725079c131098d233867a4b468b45870ce7253085697681c5c5c858322271c6c08c021ad2a615137a2eab47591ab159a9fb4e219ac80880a3301ca69eaa334c10b8b07c9998039fcea49f565e027e568f1a75768826f13f1a556821114e9a94a08cf7bdeb9bd23e45fcb3bfd53e0d6b3b03a714f09fefd1997f2c52d88168574d4ba2148c842609220f4fc9a998fa2922974c86c6449618e829a02cc9192d327c6403a813d69dadd50bac255aefc08ce53132c360e5f0e7cb17a5114ad11d3cfc51a903cfe4e49f3499b39759fe0fb6404d8d7b8c49674cd0c453f883ea9a3ef465296bc439f6523d7410b5b2919c2a84d841ab14b5bdca4c9c6c2c1794cc28cb194212fb1aa03d8b3cde865cac20c6cc3387b868f71f6c51bc63698c176fd3690e6f88b094d48a1d1ddb5a2f7c63c4ceff81f3143fbd50093acf02b7ce352dd7c5aff58679241b1367b255d3723c5533522d722135bec5ecfe67f362a2865b1736025c766998442edd62504301458ebd327115c5dd9e97fc3ef68556964ab1a94a83c33067e17e9143d96f6cc50e08429cb91d2da9728c049bbd03dc1eab0f95f5fbc79a2e6a9a4bed76708bf09426c9a2232e4b759b17f2ad60cce33428957e4dee0c9a2ed426c4eda4f6810fe12a2eba4075866c155e0a0859a0367e804be35ef9f4a060b791e6406ec90d05231b313cd1b17246489e3aa97d5ba8856975bdd510eb8a55f31ea7cb9efde3de1320912672cdf5de2568439b1d6fab19db6f04a585b0fa150e791ab7d02534b6adb96bc1a33a8efbd55b270f9ecad05ec1d48a0c004cbe5f5c3e4caa9406dbf24a6194e16359c5d35bbec87cd0fb0c0f60fd3bc5264bca42e65556431d35cb793cd3a4710fed1e65280b6cb82add11f8dd614bb6b184eea38678b7ef485bb6abead8be043112c92acec58bf02f1a9dd0e21ddee867e65ef2984aabec2f78cf5b77754359dd8ca415ec62f6c0e1ae285e337a8ecbb1640eba99b660d3eee8cf50495ac15c95976c8a6fa12f488b298f3eb6805b4d43f07a77d4fcbf7c31c368bb16cb51961659c2c2241b4b3f3ba87011eba38a396be24e63f9a6bde6b6add9b82b3697c667bb91159bd7d4d1b792bee74d88fd3b16201518c5c218383a60540b9325316931e91da509cc09b6f0eda02cc006014c96cda87e426ba164cd5c65789c6842d3318bdd67f8b4948f4ad4dc670b881a87042c2d4abbb8d208d5836a9eca1efe5094aceec63f0a41ab52074b5376751bc6ee368cdd6d18bbef1ec6ee367adb6df4b6dbe86d83dbe86ddf307a9ba07cde0920091ae9351f4fca6176a9422cc1c2cec713f5e01663c604055c0de803a418a4bd1e392c6974f65606e825312fa2392eb97ca537ceb2709cf4b228c9ffe391b10776c35eae1737ce54591e3cce945b1941ce8f92695d0a6b449033b5d70a236775d66e7033df6e8e1067cfde0d13a7586e152db421d89057ac26ea90ad60c442df21b491af97cb5209073f8ad4f2f847061c4b8220d92b54095dae83895d23a6b7dd606401f37a41949aa243db93faee84f51f4ed3dc2c34af15a3df6e98ce267916f392f5d2accb55893f867a12e33c9cf13475b5e532a9653324daad25beebb2261742ccf8c30963e65e039f37b2beb71fd68a7ca72e3de3a7119858bbd7a828da2d13160146dc96bbffbbf491f3d92c61d845db847b90c0aadbb589b8ab5784fd2f20467e5d217cc66c22f463ffff608b512e3d914237c1e60f815ee9329bf549b0b7f9833aec12362add1419897ed38b86afbe4d54c6818e461f6c6d563ad9743ad8741bc70a5e0f4ea209e0383051e8719e3a9ea5715b80e87492b3918d8d02be68ec380ae143533302a82a47fcb66502721212632c5a2ae6c52ca10b88ab9ff094758749169d19f3b659a6e27b05394b2878343164154e5c74a6d3d4c455687f13ab1097d2eadb6a9b0e8b2c999756db43d0dbf649b03bbb244596f0185c0db85336ebe6d57b4f633e2f5c1c20c69b1d62be875bd562cf65dc45b18c454d331ff894a763f5f4bb4f82683ee45177c87ee32c17fb6a33dc16ff79d8215bed9afaaf4a861d1c64f3b484351809ee454570d4de1daf1a6206ca6dd86005f66deea36aaf439ec66ad285b2b01a943ff33426d37952f259627b059cb27292c5451fa8cbd2181908a2e28ae828a1761618ec5ee9bd5060558b1b40c265500eca300cf187332a130bb8438e02b4a53c48b8c06c223fdf0a6e2740c2a5bc1aa4681ea0b79fd39c5653d817837aee65bdd3d2c56af41b235fd305f58f46c7ca84fa68748c7247f8f21543df8de2107cc67b4960e673900c5ff034ce2ec83d1d67b31efbeedc511caaac008e90e7290e270ec41d8d39a16aa826c9bda7daff56fe0e6e7deedcfadcb9f5b973eb73e7d6e7ceadcf9dff7d3e772060834063b1a07fcf924ad45837d3f651c24b14e47ec0b75baff994975ee5ba227613a9a4af87097bcf0abfb6975b0d585b88a58965e32d9ae71dc25d29843b7a51049eedd78d4bd7fff2c51f57abddec33c81983ebc5a8ae73ad3780f2212ff4d8b5298c1874737f6ea39edba465d3323431851b531a58a244c8d675e2a318413a682d2b2489eb48138ef22e29f345452d7cc2e1fd6c7e7408276808a32ab3fcb8d5ee9093e231b9d3820e5b27e888274c4194da86680bedc76634ae8f871c8d3c4f8a10a8633f220b17642b14432d34d021bc4d8639a3678e1c9444b48c26a4c57213c70ce66b697b61b2fa662523345cd47206336ba9083b81771a27fc68b0818b38d838360186ddf49631f3f0da950fa9e2b6bcda4f58b3eaf8642996d461828b2b15145782d73a6594204204774fcb529cea82d48919f279f39c89edd2553dea1b0db76bc3f8bcde2b2751362f971e462a7fc979b4fc286a38850ec1e576f33984f9d593a8cc0eb2b4984f4519b3a3eb8f2235f6a6d348a757fa5d760e5546d07016b9bd2f3d8e6aed3d3a6222dbce7b7bb3e9da2a2272de600b22ea1ef1637940f08a7b1603ab6d4745bde41c54135a7a14b6b8895a28a6eb1d4de2f6463e5d16341a28e3f3a8cc0e814a44b9059643b5f2917c90f64c29a18e071bfa3447c80a9606ebacbd691bf7ab42866bee587427ff759b15bbae95732ce13c8bd2db0b2c1534d7c7f7afb4b209ca84d26152ab77742768b5ef1ef7c6b62df2a5cfa80c367e186c28af3c976134a1f94116b367656bb3ad97abb5755f7c7c9ccd587e400bd66a3bb185eba6020ec6b233b0aa0d7e38a2ddd166f7d1f1e7edab404abc3110c61b718f30c57dbe67e31797b316d4eb9060cc819d83577ff3a4e4b585831644d082aeee91a07d2f3035ade32566025c1a5645cb3c74ed1008bcac70c15c4cbd1ef9902ff0a4060217c21ca725cf99e476f061bd03502ceaac8bf5a6f653c6d3561028f8b9f768af479e6782a59ef0746c5d57f0a2d0b4615dce5b955783ba9863ad20e6273858f8fbe50bd9027ef4103ec1b3169cf63c25db6446f3b2307c64c246a2a6d53d506bad4d05354ddc20f75053d42ae7ec67c7155a44d17f54ebe8b8535d2c318a764d3af4d9ae5a9563c1164f67f39a756d5e29ac50b736465802a8263627140e217673cbc1e676d5759715eb1eeb371ceed02698ed7933c55a820ad538a4adead61b51dd250115ea0d99a2795166d3e74d30c2216b19464ea333c1a949e18d72db86af2b691a9359ce465c664ee90c651c202cfaf9ed9b538d4358ed0d9d198945f0c3cb173fbc7c19f4e105fbfce5cb97cfd59f8d8e2ef2f287972f6a8b18ae195f0f8b35dd77ce93905db2c82cbd287a3111fc680b4ab76b4956b157f150a00519f2318926f3f40cacc494c58691bba9491d4183479bf060a606fd54b6a16e6b70d07b862c51ddae6a53c2b2dc9dfd7da28bd846c10d83d34f7ab194ff7c690d30caf74acfe2989cfe70b07d4ae4eb6396c6eafda8c003f53cb51044302ff51354c7f11fbee3032a43be6a62e72c5fc0390976deea4d93359be08783ed404cc5a0c486460396963967be8f4b53bbedbf66b3ec7465ddda0d0c3a061cb7d809b836b175249a63043df3c9c62c0f98f200c0adac2e73ebbe03cbd8601cb43bf66ccfd8a2f69195dae0f56489a10b909a883fbe7f55b5cb33794e08c8a5c677c18bcb198b4a16935353fd54acf6109f2e2f668c9c624ba71d32ce4a721a18ab3babcb7b24380d9ca959fbd02ab76f7d18226830b82708a08004a80182fb7cc2c870ce93120d9845a55c5de4ab2e080b4ecdb744af475eaa68146546a8145fc7e7824c8c5597eebddd74da563a6c22b896d38ef070a960330ab4ba632aab0c1d91a0d9b7837cfef8a3368354559d02cbcd680d0e20892109fb062470d71895214e9f814feb1c61cd63dfeb97aef72a8dd9a5207b90e750fe640d181ed774262b81bfe5757a74b32ceac869b0dd214e01afbb7ba6b862038f1569ddbcb0bcf8793e1ab1bc45f3b1cf288fadc5135f0042e4b102372b84672a90af5af64bc0cdbdb48460693ebe4acb875e313509eb3871ac64bde286acd0ae02302c1fa8b3049f15d33cc6982b9f0a12cc4b9e040421242a2e8195b2df9456f860836ab6022160e80fc9c6465559e2cbdc55b6bede53017dcbd69bf76a15358cc8a4369bf7361af8369bf89aabdb3855b21f81f77af072ab8826599680a604ee3c9136ccb38b82e5c57783abb90b3fb0e9ec001fb6e886551ae874756995eaac450df49b960d4e28dd726d29cf31b3fb1ca3eee45de685e8fb5920fe1e8693e3b92dc70bc6f33870739735389ec756e10bd46bd9cd8d869f0ab007907941b5f8b2f66591db9729b72f536e5fa6dcbe4cf9f62f53d461f4e6d9ff3d397cf5b75f5e3c3fd9d93af9f9d5879357bf7c20fb646bf3c1ce83ddad87db3b68dd0186a5b11a072fc82c4b1682740ae189caa42c6745bfd78bd9394bb219cbc369f61b4f121a66f9b8c7d2eec7c35e9c4545ef5736ecfd073da787f0f8b1a7f75bef6f4936a4c9097650f4f06f8f170e6ee31e7955b42e3b6461a132d2b415ff3c9780b29b2014243d82a5c4af85e46f6c87314e9d4b813c0bf8b9681021a1c5db394bcb17535e962c6fa1ded12852a53b58cb5b8d6bc99bd93e14b35439ddb54418aa05546daa7c254051a61ca391ddce68b4a421083523db1cf1448cdab052134f7802639d001064252333f1073166a5fb0ea6e6590ac0c7ab5738f50a56b6527601be563aea19facfbc2cdadefe446ae79f568316b0aa769b558098f961162e9edb67cd6ceb2fca2c4d16f0d8c6f28df7b9221256ca3353e6a979f1bea99db9c857df35c806361aea6991bcbe15a86812cd135ab2830acc80e4788761b8f3bf582f6ae085575a8853ed2f91796363b90394a9d2477070225f4b7531248dcced06e41e3e40103493322d6db7dae49ea81258eda9512c7f8ee63c489335ea5ea3d9efd164b19627483c29d974d641d35c785c515a12c486f76ab2295bd6b83a4885f4317ea3f814966bf1e60015b58ec5d1f8a705b3c41f3278c5aa777527f5712d1a235a60408bb684a4fa1b323cf80423513d0d4fac0767783276703dc4dfe6015a6b5511ecabb5b1f819efc59d8d594b1ee349ae64f4b80ea62370f90543181d595be058f9db96d3eea82688e3b3bd66905a44fa2b4f92f72c62fc1c2cbd1d66b3b190f1efe33958f3018c049a7606645f4766da5912ff539ea07efdc76e4975c0924aa35e41ebcc74a36aa94262b0faea5603e8e80edace2089d7de261020bf6432d914f4fdbd55ab1a32ba7238fa129fa7b5a5ea064bfaf544933363ed83a1de0973600c60036ff204cf52c5239af3b465cfedc7fa31a0c18155b04382ba79f58923beb4ef6729c1a468a0bcb3d51df29208be73ccf290bc922e5773c4cfb84f7e2882865bd33bb4fce5f9b2ef6189f22e6b8a00f556818fbd0743a4181cec5c3e9ccacfab3536f06ad7fcb50f7ccd754eeac23aa88e90c06c785f6b8da7ee356cabf66a5727585d9e7fa4adf534b7a1adb675b92b5aa2e172dfaeb9dd5515fb42daaeb9de55b9daeb7d5bde46db78696cafbce1556b8d37fcd2884b7f4cb42531317dd56febbb7efb7a97fd76fd6dbfbdfcbadfd63f42f00265b4d7c4b0cbb2807294d8325e8e74e52cfd388bb1be419055d4bebcb48605cbcff5b9ae1ab453bfd4dc392da7c48f6e1775878b9a262b0fc54c5bdec9b36aaec4e615dc4346d23edb6b103f0a912be48f42dcef4b59d4c0db1cb0768631d110479e57c5fddcb72c8305375ec995be2deba511bd1e399c0f8b28e743b89e6892c8a52cc870a104996a347d52334873f62e03e2731ebfc9e669590b3c95d9aaa3c2e499ea9cad0e6e35960a33dca77a7bb4ebce819a45b12e9affddab22b0f6633a6d5c182bff9bafcd68b46471564e419d101e57224f8d9b0cd526326a470c921733c80a89acb5ff467a70ad295d83123252913ad7239808178a31d8277564921ac50a32490f36f229a43a2987a290eaf2d6a7901a1a68d708fb14f9d4d7bf3a2e90fbfa972364aa3ed9ad0a8396451a0964c5e0f85ffe45d475592afd60ea5551514f767921ad667e86d003098f78992cc8bce0e9d87de4b9c8e684e68c643388c8c7d332039d879475c393e8219bd0739e818f7a22e5e1fa2da769accbd3ae18e7c072d70e4a94b7e97380c0b348ccce7e6b525958ebbd71c36bc9a0dd92d30e79f142850eafe9a75d5598df181ad693ce6b0363fd598a39f0747c38e15331cdb6545bff4ba3f5ed63f3dbc7e6b78fcd6f1f9bdf3e3697a3bb7d6cfea7be83bedf63f38affa37f5d98427d1db0c80ae776c65e381772c5bcb526ccb1317c7d6cf1060a386e4c2f1a456c26dfa5c4bc88681e1768295f3c86c85454dc35a4e031236c34625159c8b0601ca330cd723ea53907ea8f8de609e131cfa6b4e4113c45060bca7396e73c861782869048e359c6d352066cc1f861c9055d1424652c967a05d188a8d791b1ccfee39024343a2b08056943172e2de891d08492832ccaa81df8092e591b8036555125751e576898b09cd012c56d1000d15f90c74bcabfa48254aea9d40283a0f6b2ba1ff2797d5578c9beace62ff324a9ada902392deb1515c2159cb2e408c635595323ead9aad3509d59b66eaaca8d3a20be79c04bc3055b6a46695aa04f6ecf4cf2579ec4621bb4cc9b6d43e60c36da9665268d63e506bfc1d6d2b41167d3ee84253396173dd033f4546db74d8cf7f715cd5a0df82da3e1edca3655244dabae89f3b64e0361cf9477db795763a92bcacf4b9e143d9d5b7d11ff3b9bb236a084e94feaa8ab9df9a77036fc54633d2615e66f879fec8061a6d93b9ee9a4a572929169cc508c50b0f2c67c428bb717a9f212878f4ab3e1270ca3e12933545c056322e9fa981353356e94ad669f9b600c4f579530bdab98b9034fa12b8620aa932f5f603861e1b05ff8afde091e02149ac780099e36b7c60080c85550214432f9736d35b09a0036631d386add891593f8adc2850abeb1cb92a571a1ce5bf56dd68216051fa710ac429fa9182ba2deb1c296729de0ea25eb8269485ac4d630f2e33a65a7c43c2c7f33e4c3bab5f887b3510b8105fdb56804bfbaa0a00d4df558078382688397ef66b3688c58bfc436fa5a46c6a610e266b5b2f7e44215704baf36d4b5ae2643ebc9b49660cf3acacbb17b808a2cb1d3950b64f33384b7ebad8004b57178fd730fcc52548fc62c4576edf84c506376af3e4b63a0937fbf915b9dae1abc22ac9f915373ed9d5ade50512c7a707868853c428a5bbb852d303eeaab3210d4773103c98794eab0cb88258968e8281d7765bcdee39614c95c5c5c84e958a682f9749b247c98d37c61388bd383c3437b6c6213708ce54b792eb8127c3d9182c3e5780ecf1f41a284c1f14e3be41422139d7674a0df5376c9cb53529474cc74005f3341c125307c4a2a1be785ec3786fae584a58462445c08b04f061b342af9391b6ca81a298672057da1c8a2a57c045d1406762179362a257fa613719cf0361b64d27196b253679634677a3c65460405c58bd26d05e3581938422467800b4f4f41aa08d1a3b3f138c1564e05017a0a45b4c6895cf024216386a184a136bba4d359c2ba0853400df97c0501e395e8225cac82b80a10235a329a1055b6e4d19966cf082551969eb314a5ecb480d8d6d8bc76065ee0347c9ec9c117b22f90fcff9c9cbcfbf8fec5c989286799ec0077fe97c62011787e3aed7548a5922fde73cab71c9f132796f3dd6bd8da1aff42d7b4b75dc3da565f43daa2d69b9f6348e3e5d55bd3c0b31e7ba22752b1fc222d3da3293c9570a3ba31e934b8fe3266e5815e726512133aa92ddd0279aa836292be0a4966c72eb39cc9abb6dc1e429d6f9b57419fd6c1cad4798e81d26c03abbaab4a34e7bb74b0ad86256c1cb2a226bf02af6685b603737cb1f71560dffe0670c783e06039f4b743af58cd228c92ece2591a3f73e1ecd55b03daeecc6b010e31476f067310ff7f05c8771a405e0b5b7145ac80ec4ee8145a0bb9572c6f33d23b5dadb1142c5eb5122cbec9425cf2b2b20aab41bfdb087ad8ebd7394d76af7b9c4828b7d73c7c562dc4baa7cf252f97adc0252f1176ebc1bceebc590df6bd6b807dadc364ef773a4c64b8d4e5f05347c99a20ac393e5643f0fe3520b8c69171ff0647c6cafbf03a47831d21ba09aef2605809569f8cb0641182a575611b55090e69d4a5331ed796b79e6298266c773be4a9957324cac2733853f81e09baca858ed34715e5afdb9368fb19b412389d429fd87ce074e9e3c84d3a7c9ea575dd89a64d67ae01197143fee89f16fe7ac0e8fb09565167127df753e34c93459ea2d81dcf3428c120fb2ea9ef78ad003e0212dc5dd2201cd0dbc7c1c5865dfe4099c4ba9b1caa766a2058bfb91f846bc0b5a9ea9ad06eaa5e7fac9801fff86393e4441d1a7563adad5573925787595bb3725019f4d02bebdd1eeeead65f2d661ab67f4ac9f60a96b0ccc49f88114a7236a33c55bafe5e0ff58d18403d624541f385236870a25843842630efa1712c6e646ac9104223b3af0e8890de5dc28a84a76537e605283fd3ac3b4fe7058bbbc6dd41017c37d650222cf0e953447996241fb2d9e36a832c5dd1de3a940cb15f283b2bb2ca6617c3dfe3b3012dbafe7cd5b18ccccda514b384958c341cfd6e08c2fa386696f64995e8b8fd4a4b300d7a49eff689cd4c74bc5c16bbf92cf64b80598dc703da6520e8b7456f78794e75fcf64ad843804fb92aed769d0cdb3929ed188b0a6c9e3ca572b26ad55ba3592ce83aa5f9d360833c75c15cb310a659097e9486123034b02569d67d6749dda447432928a305e12546462f3a1053bd20590e3608239ef262221f205a5246d9d733e94317f62589684a868072e73c96e2462ee57043468af968c42f590c2705a3d10485987dc2c2b16c50366bc9c9f6071b231ab3c186919e9e8a0429c3ebd85f4a5ee7268208b2a35ac68c4b5e9a5297bcacd414695851a668812cc860ad24555581e48598184f637ecee3394dec0510f0a149011616c58c457cc4419018b31906924d1624e167acef02e3f4f453217f5b70f9fc59a649aeb24f82e9428e29e8b8794838c912f0bb5250c6c51725642c7c27a7a685ba628260c24202789522b071a10b88d06fa7d7755029e4376f17b8ba32f072e0f76a04d6d0173445ffd90c84cd05d31a0ba327405572d10c7f8ca7a92e28b0390dc21e7e86515148aab03a083182299846a971ccc508e8942507b400b3a54536070130d83189339d8ac20b1265f32426059fce9285f4fe2d1b2d276c0ad6808c8243d38417a5d4204c499632325c883f6ba21309c3504eac11967f05caf8b374d4f8857838f8b44facd0933efe5573013f1a9297d61188509375c9cbfad4c6c624525572140480463060ea5ba614d6a57a38a1334148ba07f13372fac49cdc3f9d82551578e41c819e894fa72ce6b464c98250ad4a91721171006bb19552e4c886e5411ed62c8db13a0253d0bf97d3443f2de0c533257fea83156cdb9aa3bebacdfc041df24d27a5f83492e5b2b5c03943838ac6ea7b4c11f2bee32cabd30bf451437346eede457a3dbe7bd7e89d6c3d99983ea898e445fdfced1b244dbf03300425f49d60210ee76f82b9deb0e112f97e63d6b878532cac0ef77b629c8132d3406e423243d57c534cab4eb88a5583f44a9b1e6164226db1e393d75523425578d903bac1867acaba71fc3d2c171d67972b2df19a2c17bfc61610929e6753c7840f5fc9c5d9d48e8463f10b7fcbb3f9ecbab683504977fe871903e2e305191c46da3371a62c83a44513bb8c9279ac25adf0a8481a56295b3e25a0332ef8d15e499900dae658ff600bdf25bbb4bbd205c1cc8ddbded92dcfeca6955acb2fd47d9b4296d3f51169a9b96837d160b0f713384088b2b4e4a97e06bcdc6acbf566a9adb3feb7985a19937a464e9f486ff7eee1a9795bb0c700668b26fc371637180b491b115a4ad6991564c8ca0bc652525e64dae59b65da23c8e84bf8591d01e1e94f9045c8939734663f3d89f9f94faf24358cd6394f7a22ed490ff2eb0adbd107e8303b67d51a4f7ad5c9abd1799625d5317ebd7549a5cd352c4c2a75bececae4e46bcd4c4e7e6f3b9393a58626e8e7b06a6c526791bcd2098e0b94dfd3118e3597d77cc4a24594b0562069cea083f1c7c645d59940050abe3ab609103beb0362470262c70062470262477e360162a70a889d9b0382a7e36bc1c2d3ab368162777d50ec4a50ec1a50ec4a50eccacf2650ec5641b17b7350b0786d48f876114d60d85b1f0c7b120c7b060c7b120c7bf2b3090c7b5530ecdd0c0c20cc225bebc260dd8d717f7d30dc9760b86fc0705f82e1befc6c02c3fd2a18eedf180cb82fd686c49adbe2c1fa80782001f1ffb1f7377a6de4c8c2307e2b0abb27b627c606f2ed0c936508cc7296400e90dd730e6683ec96ed1edadddeee36e019f2fffd2fe2bdc2f74ade9faaf45152ab8d939d999d671fe63ccf06aba552492a954aa5fa786927e2a59a8897ea67dd44bcac4ec4cbaf9e08d815b5f3b0d2336fe5bcad7beaf550a053ea63a782f1b6591cddb65996c7e338e5c98e44d239cb416afa233c1239b916b434e586472271f8bcaaf2c4f55e5cb43c56665eb4def338babd70fc7ae013f671ae30bf68b126c58e6d3352ab65aae9239d54f5c64ba4773b14d24da0b0a90cddf136d719c569f4eef8fd5116098cb6d3aa79af5de575105facf5986ce7f469dd4e3ea96d669fd48c53155298d68b690df318b9f4aa469ab7d9797f4d77d55f6bb3fe5a9cf6d748ca30188512a154bd3fc2227f09111014d1127e3b0cf37ce3825455e6f07575372fc26fabea047b53ff294ec74bbe4216e6d0c7dbb8acff520f13f8c6d73df3c2c5dfbef5aa255374f0b60226c9520305e6993c055f89458f35a0b4e1bfefaac75722d9d4bf00bba260ed5bb223252946d962bda528e37a5770c6e27b90f65e9d8338579f9e4328dffffe5c61e12bbc4107d9fe57bc43a35225ed11fd97e9729065090d3e2aabea2d48a2c5eb223f6e8c1308a66e6b0f215e1c3250ddf002a3426eb5888b1fd3692dfafdfe1aa4a8d0b5d91386a598e06220307245b2808b3db13a214943755610ebe4344f12e34258a3c70c2dd3bf5497a9236bbfe7b3194a8b5e09a93b15f958d06fe0755f2974a11f6092956a27810f6ecb23711bc0cd2fad4f5e6415a4c411ec87f85aa4ec3220525cb68dfbbbce4ec1a6aae72b01e975f1fc37ea9d3fcd78cea7ece76f3edb033308196b6b1523c2feccf4b0b291039fe8642af1cf55137388b52586fb29099226317645002cc126be3b1db486243646dce8c4c55f7912475a6faf1bbec5cafaa7ca70e0b02227dfa7abfad3f10d88b4056913740440bd95a77c4606b7c41170a8fcfc424e83ce48bb5d96cf5393c7d3caab2217e65dbcc850af276b81276d61ac5fe625b86609ddbb1cde391282d20739136cdd0f0daa264729d14a82b3da229b3720e12258af65cac952fe6dc8a9c8a612ef05c4f18657185d4d38e14d0ac9c494f837e345d1617f13d69a6192ddb06f065939f94685eab8211fe3e93c29792ab279912c9407216837756c21f0f5e369c4b279d9f1429494fc0a5d1573711d67f3022c2790a00be38dc881f9922f500a8ca3403b0408ee1497051b88a264e3b9288cd7e230cb733144dd2bd801c6e9b8c30e704547f3729ec370e41c49de2179a09c33d57a5ec6492ca54c16a70002a4b6f7f3a48c81e64c5e5750da095e2cda6c302fe152986637585d62269291c9f90a804cc0af09bf56cd87593a14b3d2f49d621217981c4de130f454f33029e0c2f265720c269720047711b9a8b21acd3b2448fc1f432abc5004a7029da18e1706608f1bca457cdedf6c5d76829d81fb22fccfafd199cf1639ec40b4c0e125bc69f0382d20282d104f9cb24b39f44b242e550cc0e42789e825902ccb052f3234c704d2e984786bf5006b4ae86d18b1622330d3dbf8cfdd9d7e114a314b05fca34bfb5e203408cbba9fe57f110b7ca971d99872db07106fe11f7caee9415fe4b10692b56a9338d92a1ba9a1b681d820569ade5e6526399bc84b9d86186612fbea6394359bae5844d0b84fe2584ab87f118be28348233c78ebb839589b622df52a767ee1e7249623f90b8e53fee98874e41b996ef3d542d6e946a93ec543f35c01933c99b424210a02981a950b0b44a1a0fd43da26d5836ba16be72d36733274e5164b1a7a5214ee9581cb61fbe352bf2f7ca5157952ac6b52135ac259b82385ca762d14fb026994036a6ce74b9a5ca0c0467780db63d5a5c558ca07ba08804b291cdc2271ca9364d19687a53ecd55142b16c551da28f5fb9ada193c5de84d88db49ef037f86abb4e84eaa8332a9bc74225485607a4157c6fdeccb83f2ba8d3207de96d44ddc7d65b777a20b1db686bd754a7b54a98565a1de02c2babeaa796e4caa679fdd7b0a245627aeb9711ea46c48afe32d3d626a4dae6c49f45f9d419c46c0a2da3836abe991775427af9fb68af5e6539b64e939258903e192ef575726ac95da608554a98c3a7cacabeff4246a853ff5fe85c746fa6f5bc9427dabac866635cbef7824ed8a11cd5d5686bac09aa3d2c5c0ef0e21516309d3474078a76724d5ed9aec6ae4c9151395de777369b9315e319b5ff1014ff42b7b2e79974a52f708cf797256d7d4356094ac40ab51c4e1ac280e05bfc6e558320603a625af698fcccf8ed6b44210d5b81453f49ab9614da17dbfa9825b0f43def51ee9f1dfdd59345a6e1cdd61961659223a4936561ed9f8e022d7475773d6c41dc6f24dfb85db36b071efd95c36198693b07ae9e6b56dcca964ce79940b80dec844ea69940b63e7d19946bd305912b1a6507eb475d39c20845f6e96e5b44138c365230a0f6825920c8c5565cf55e9595c872d5e2af3433df6d902e24fa200cb8b9256d72f42e1a99aa7aa877f29495677e3bf8a40ab5a079a80f2211bf84336f0876ce00fd9c01fb2813f64037fc806fe900dfc211b7858807ac806fe900dfc211bf84336f0876ce00fd9c01fb2813f6403771848d80a993d64030f9cee0fd9c01fb2813f64037fc806fe7bc93bfd900dfcf7b82a0fd9c02b4a8b7a8c1fb2813f64037fc8066e355f0fd9c01fb281ffcec9fa211bf84336f0876ce00fd9c01fb2812bec1eb281ffaecfa05f2f1b78a5a2f370ea66cee479ee3eb256925796d9296c244c5b09f5a59c78ae9c3601e645432f5f65066aa5cdedb0b4b94c8419fe5874b5d8d9b14d3bd338edfc88ac96ca612b832222a88183a4c8fea429057dd3ae375f745e755e00a9d4636228d22562976c552cee82f1d1284e625e8ae2774dcae14cb36a72dbacbf666de4fa6b6d7d75004ddfa38d7e0a0a3db91d06ccb38e9284a09e984e813fb3c78fd55f9d51a6ef7743b6cd06ec2df9a05d8e3b8a0ff7d75aacc75e6c6c6e3c556da2fa3670f025b6c90bcd35eb9b8c723e76fb79a90fa8fa4638839fa659246cbb57dada63097e7926d72d378d369fa94693a58de04a6c7b7aad1a5dd53752176edbd1866a93d4b7e1522c7007b5b9a99a4d9776359ce7b948cb9ab6e992d9cff21b9e479f7231b2edb654bbd99205981733b93f6c234d1dffa86f3415d3cc3678aecfc3fa0609ff69611bbc70af0e659313232b62a248289f43b68b7992c02d9c3b5e1973b6cd78e78f7fc4aa46af53dcc4e570c29a7322850f7921d8b0671555ba12071868b7c7fd8762d928e9558aa6d522512d1a578b46d5a259cf7d03d0ceffded3a5b6a6752b3b8390136567a33a1ad3e5552f589c868b2795e25a24eb11258de66fdc4fce132ef9019de73de7e73fdc9f51afa2789c7b3e91ee65f4da109c5674ca02496d535f1fa64c23b75949c241ecc8edfd5e1e3bdb2c21e5bb66ffaa8f53f7a3e423e4fdf2aafa95982e4dc857a55d61db10694097eee3963f0153121abb635f7162795b26c587fca7853ce549d17b31cdd836fb0729fa009c9f6db388162a76cbb6198d8b710adc5b0d76443f28aec2b6d9cc31f077dd37948a94885beebaf4d7f092e2f382bbbbda23123e722811f6cfa9fd736cff1cd93f67087305d60376d5768341cd1c00b965ff08944d02655781b2d4a6bbb61347a9ae76c680b4efee2c45270148153abdae56f068b5b643d3d155b8238faaef873309c0b1f4bf8454565c3b6faa8781ee9c8d753fc6690884dd82f7031001006ab3dedf380f3456dbfafec6ff0834360ce0fee651a8b96515f703180700b84ce55e10a31008cb7eee0730fbbfea6eb6f570377bb89b3ddccd1eee660f77b387bb594da387bbd9c3ddece16ef670377bb89b3ddccd7e2777b34040d97f42a8472f6910ebc9864862240a458137711a653778d743fa75635564a933041b1e01d2c7a3197f35fedca7986db3cd37f2df6f2be6ffb29818f3a3217fccd6d9a667c91f87b22665831f3b3c8ac03dee302e4a918a5c59e167831f6d4c7e7745b2d1e877380e8c2abac250963d893ffb3fe0491cfcda018da92827196445cd06258f534c229e6bd7759df16e0c1eec3a26702a4454a0331540ba12b392c59148cb78c813dde6862f580cd647081ac3b5e6f3b48ca7022efd724921f8d3889870d11d2931bcbbb3e11c4432f2234a3c7e0cc5b02ead261c75c6204c5e360ca0fe1adad401c61f0bc12ec7a23cbe49f526860ca5976c20865ceefa342bc1ec7b90673785c80b6dc004a647520291602e27bc20202e5996d2e9ba94985dea5983789c37597e25f20e3b1582fd61f3d5d30ecec2844727383152a0eae4622c898f9759ae8b1f3feedb186201cc9be396c98726c7ed039097adefb45b5ab7cb4e3166ab80b84c81fee21465e9d8596e968ba2cc7211b18497104d54f95d5aecc9501e3f0e8e45a3b00f29f0732124832cb972f12714d2e9a7c1b920b6fd615b3c9aaf2f37e337ea358b62cb18879ee0c0704a54ea0a838aac5383891d7bd5e0f404f809a588995a3215c978b07047cb58992f6c101b48585033838c7d66435e0e274deb07bbc264e9cbcffff91cec91e51a38b96a1a0287369e2ac7331b508526773141ee8e6fe4e17a3cebb8bbda54b1f32817f7bda4966136c55030830442cca6ca45b8a3dbfc5169e87c8d9d1ff9c6684974d47c1522afc4c5345014bc8efe80b7943ffd49ff8611ab53545e0f0eea00385f3514a79080d2e646677c5c0144be6930a4c8598138b561b67036a6eab7c3d34db7b96589b0c2753b41eee9dcd9d058a6fbf32c6247417e5730ed2e849d250b5038df88064449675c21db26a054dc6ca13d120caba76761b533636c5b655c6454c669a5db65ef3208c194419c21e0975ca73007966cb60aee268cbeada7ef861706104f72c1a34565ac0a2562fdabc423d939d475409a296af2420e1efdad070ba6862a22e00b2d263f43742405cb1b71331e5567b88511945271d346db4635ad80e30a34c1b62da5bdf57bec058254dfe47cd68cd354e4fb699b65f312ffc0e85a65be38cc868514086944fd8391aec8941639d211e2652189e204a9357fd03842acea3454cd861533953b56a70915cd0779f0a8de1f3f5e11187b6bdaf46c2989c73926d0ddc0536ee77eea5227a08a3211d78129c8ec49ee704e521881082a58e7539c5e6757428ba2f3341ec51815df868307e1c004c4efa4e256dbc376bbac03f6d96d98fe8e4eeb00c00a35816664a6b36dd8bb07f0e33dd4b504a0a2aae1085abecbd6d899b9cf84263b928ed83690d31bb37bcef245170e6a3611c94c9e8c199bc6693c8d7f122c12d9ac947fe2003b0c9d6525c5c8a32511daa4b7db65b9186679c492f84a68e43a65bed84bcb3c16c5797cd1b14d54920288a937e2704acf21af06f8ac48d10fc2b93581c3f1c2242f48162d1689221ea72adbb564709c0d93ac98e7428bfc18eb12e62e023bf46c5eda0b16a60f90fb196df4418e2cd88dfc23871cadf392dd68309a2101523c65e2362e80b5297220791aa4e4ddc6441522178d82a519c8a60a92ac01e4aab22d7891b5201fc450f6702dc0249f71794301337a5e14f32908f52632bcea1eb33be85438592acc38db2a910404969ff0d94ca45a48d6f1d06096647ff90226a1adb21c44c0cd316b42c6ca6c3e9c60fa5a3d8506e5b3890694a509488d101a9427727295c7889676239ab303c940d14c1bc37f9be5875cbf10d60dadd461e714199b6433319a4bb65e4c24bdc8b10c2782cf940facec100f2ffb54932f76410a1d49cea96ec936889e9566adcf209cfd3dd65f4bb37cca93fe1ab4e9b1518ad6cc16ca6713aa15375053e479d517d302043e60e0893cb710fa6e98fa1f440a5ef0a8178a44745af2bc8487d6c22922d248a5cdffc402e21c9336501468b3772b8673958bb2bf26f4af40cd5d5c3c818087fa9791a3e05a21c78dc77f6c640ef0e501a6897c0cd659fe86c428623492955012e876d92017fc0a72aecc4db68e282e6630cfeaf9081c58e18dbf6fe3604076ed5329dea422a171fda5a0309f4e1734f4a0a19302b7c98d60523857883909ae79aaf7312d2647dacca4cb037d900759d18239a3f4aec1907b1d481c21491b725ce30e8931dee7229b43ea949bb898000f51a10d85fc62c496184ea51cd4029030251d272812a5f2f6ada6b010902dcbe0e6ee15839cf2400b7df29cd9965531d1128d439b3a5325e3878c342a8c21ccd77f68b1de34fb0f2817e9759c6729b21d39950a0cf2a89497f1b5900c41693f624b0c158036517ce5d3b97b91b908672225da9a4a56a5b10a0f696593b11330d26ca4234039849c01f1f8b1f9bb69fe002d6dd13cbf68b56cfcca3a60a88d91ffd5d578b42daf92a4225e2a91c5d5346a7bf7bd161538615dc96a293e8e2b145ade37b0d720c21104363290d47627512ee587d08cd5e0e96751fd414a3df5f449239a625f0151b22273567ac555a974e380f861e665cdafc72a0ced434df6fd4ac57b9a9f57aecc1795c19b1148c69b70d0e301d7afd4a0dcffcf2845cabd0b97387d0d44a1789930ac165ec131777f2b24c6292b453e858a5c8a3792c779f2b9cbd2f01aa941a1205d34edfd40d3ef797f2d059b99363da6b57eb6bf7651096cd9c4eec8716fa09ee327ca449a54eaf058891e808288b2850d0ca1250437a4b192e8e3a2b216b4d7b148f7e7a99bad01e945e937b04255db031c487ea264e6e6521caa534cfef75681dd0e1022bbbbb3c3562992f05c02c650ad4f7ac4c44990710cc4f3d4811465205166e8a008a677e82dabb5981d5bbd09a73525e4bb3b401a5ab4d40c04085b83508187ddc49e6a15a63cbf5a32ed9251078308138a0807194640ed25fbd8cb1660e0a9d5a34188ef6135cca4eba86ad3e2540174c30562599095d47209632f43fe51c8d6f3da1f665e224f6ce12c46b7cbfe169713a5a91d6411e86779ba40452309787dc96f785cb2db4b209f9ca7c528cba770a154802e17203a0734631c7431b7adcbb69391506b7de4fdad148516522ee9a1aa02e4f5d73e7d0204fa6bad4b49bd91904c2d4e8d5e0c3a17918a09186b91782ad43d732018001011d538216a753cc7dc4554e73dc9651473a9e89b76a89ab569e6c0003315ab8cabcd725164c9b5907fc825f4a25b2925c1b6bd9819f09a6db6ad0ac3e385a04705001d2413d8b48a5d7bec55f6ad2bbb0cb51297c7498a699b78913675ec63ac5909c62971c32a56a4c2ff14ab55edfdd741b7ee3df4e259c6d95886d3b8101d35f3d8b0a35ab53ae544a4f6d8aa462605ec7121ed29a83af717d38de868734479375f0fa83950459edf07d30be15639318383f507394fe55e9889c8c349f288894819377b4c81939c40418cda70928ce0810d176d2086d9d42646519040a8c10a4a6255c0befd19672fca52f1f93b4d5a233cf73c20caac4909d652d87217d8d21a3c94a961bdf12ac14c606567fedc05cafc25423531570b4166e386177a8654f01aa5c997f520cc0c1f5e7990201a0d688980dd5a65ad8d339249695fb2c88150b1bf23d4957502541da49e6c39fd7caecf57a7933fc5d9bc50c3ac06bb14e93fe662ee4a6276ca6cf8339e24a89a95270e4a953b69b4938f9b21212f15377a662d89d6b349b2759632d6da717bfa276fd45accb704a0460d1736924543e5df530f0244cf09a7a73c741207124f129b645675561065aede5f3aaf9f325450636d3bb0f4d98a345d40d4239edcf045c12291c4d72237c97575fa59953f941d8c1c4874706956d60f104d41621ddd44090376a3cae1a99b463c9d8a28e6a548166da35f96b3020a2bc95e646db947e4748de2bc66744b778b568f65a0d898a7710909a823172d29dfa462288a82e79092753ec3a7aa592ea278884ad41bbe500a77531a2771b97020c505bb992c281f73346512cd499ea5a084571351484ee9ce36680eb3dc4c005ef42460570a2b5c800120eae5dea4471572228b12459f0e3bd559926d4ade02fe74a7c7ebd4b941ba335fb4150988622686314f3cac2865807a1e949b6098d0469dbda483f14442511aef025e140873f3b7e25bbf04cfb1be636c5fc76bda1e03de81a77d79f7e1637c7d1df138994b34cacc6e48931478b04023990a1fbf568a7bf39ea5b53e9dd510b3b52009f91266e98771721f73f1a52dd2ef52fac543ee9cb860f3029f80ecfaaff0ecd62c84082b055a6a70f446ceb635fba077efb04ec19199fd17c89a8fe70113882f503d5ad1df81cfb6ddfeecfde8282bd57b106e95caf6906cd6cc27245567653663d9480170fb51caeb3772b116ecc77961d4dcdcb01025f5302d27f5ed0b164a584a3a42973b1b7dcb213973c30174c90de74bdec4b5b98a7a0076ef389a64577e69c70695c7d7257a99a682d6b24a1340c77dab07c538b9ff987517f83c50d98a3d2802d26ffa62b09208839706255a4a1995bd75054d076455caa85c17577da9a62ba1a359871fbafc695d72e1f442b92ab8dbdbd5a72d2feeac4e9fa55367593b04b906ead5379fa729bc830505ac7087e685cce950d6551cacfedaaaf1726f9fce35a8db65dfc3b61ac7d790cc55b2c6ade79da7f87f9a65cb33ace7b4d269a266229b25c2c911f5fffb31cb451a65f968d415c58bf528e7a3b23329a7c91f0a315c37e428a9642a2af2ada4a11320a066709ab431801ebee2e46ffcef3c1fa3213471cfba99c48960cd320fa4d3884422c648461a842ef22ee6bad89b6c0ae4442b00a67c3150e4fc4e7d33ed1dab0b0b87767112da73a12a4006fe83650b3a90259eb799891d4c412cc9afe08edf5f0120c0543989fa57c2535182f4a01b7d2ae4e12a19b9ec7b68dfdab211fb9e0f44d2f06fc67abb76a0a56b24e3ca10aa8b42f98a393d6e53c2703cf6486ad4e0c8c25b2bbc5b5dc65359379f4f99cdedad0fee5b1761676d42c3d60fda7bb74331038e4d00b4be68c8faa1c2f704d5f006f97c56366dbd36f3ba0aa2ea8fdef05207b7b05eafde5c892e48559da7ad2ec2ba8a94093d59684e92673729da16980e6f044b84bc769ad5f60055ad1ea48c9864d90c141b40eb3c4563462b0e3b94ab67c62c65960a9722de5669c6add0abb1d8082466b14ac91aaee1516d90897844e886c8b66b09be40b6c3b6fb5d8eb3573beacf7534bb9ad676d5ed26af09da1604ad5b3549c83b4d96410a7558499e8359376aa67cd5db4abb5065441d64d722c8bacca16686f426b801f3719d7239940d879ab7ee4a0434e33786d5e72e02172ed2929e51c3465e5451c86b9b74a00b4503e853f3b3d6f98248f8d9a82d95d98e8261ce5c8d479b65006a9a45f16841cf0d35331215825b5b012abc53c6002e3386f99c65c39c9812890add773c317495839b0aa166edee9d5db55c9e10670cee5d03ee1d75f59433a32f9e10d5188c98fc09549a29d58680d1f3876a2f7c23e2a5b23c05edec3740ec1d5f8e2272919cc937aec0baf28949451633316a3c41e65c3f3cce9c97fe361bc7d760fac1fd3d39e1caab6b98089eb2f9ecbe4da70fb425bbcef52fd1ffad2ce7f9ccf80b440e3d33a1be0c41ea44ec1e5cb9f12ab0ec78e51c11dd78020a295e42b6f63c8e5083625203b38148b29b4e50a6f477d54a52e54aeccf5d062f5731e9a4bf7646aefc2cca04ea6a95e13ae3ac01c01b8a7e6aae63cbc7e3bc0454c5154d99158aaf484a9615ac72aaad3051f79e11f51bfb8b071ea7a3ccefc40ee8117cff67b0f713529b4555c7898ab6ceb5d5335dca5f6898e85933ca403af1387351c4e3547ba5487cd4757914a771311111a3c790fc508ae92ccb79be2050200e3b1827cfc4105594907447110e42061b13a56ec40f20dcb57c6e7d1e6877011e22a3cc3c3293ce4fe00eae74e4f2d853ef089128c0c6da585dafd037a878e8f1277f1f6643b7c783914f0637bcb08400d6f40eeb274f7b048c11d234b312a8f4226f1f10564c440caf00c9823ee61081cdc1423f588fb27c2c4a871ad1fe3d2ecdc31681d55f1b62ac88488e60113ebb3ae1b13b60ec858a27897a2735fe991d9a7a1e6d778174ad9fa106e44d4567c989fda8fec217d8ae383fb54cb97a369a7de41b4a00f1ada3650cd941f43dc19945628fc7e8b3ee280ba8fdcf82b203388ce1ce047b1bb5c85270505225cce64d5c4e0ca40061291c96f39765dca5e26b163010edfc0ccf0ff8e880c03e3bef4d5688d60f1be69dc179e1006cc38f0c680725bfff30bbd7ec8a1a65ee10372be53ba1e44abd2c2538afab37c7d855f11be95541b3ee9c44335be85755f9a3ecb0d36c2a8c777aa3c6554a0134e0ac09d870c263492dea75375990871eccad38e4982247221cb6ab87bb04bcf95a2a55f719856e479b2d17f84e262528297ea0ffcb6c26529d48e75408a3421dc7e5643ee80cb36977a41c90bbc456ac1b17c55c14ddad97cf409500793f2251f238418bfb1f664beccdef3737ff61669c5a97b5ebafe970fb66762e1427a8a8f067f3627286be5a8b66920d0be79e246431db663fab27909e3c658af38d0b72e1978c6a53d2bbd39a61db0ef8c71c6643b68d4d372f42a7f6566d7b782b4a160402c9d98955f8a81439a9f0b4d2053ced598f344cec0f8d1ddb5a925dad10a59915ac48a7c508916a8cd6ade9ee4e7b1a30e6088944bfa53e2b2ffa8ad45781a985b620aa017746d7365ff9aee34a2ab268a2d30d3a50707086322e35d66d0e7d9b0c28707d55cbc1064936bc6ac16dae6073f0e94838dedf305a013a2d50359d01949857e69b89c017fe5ca07cc8443a4c32dcdc14a94e701dd9363bb794d95f9303edafb1cf7afdc99c182b6e4aef6d00d87a4380c3cae3a343c8eafa4a2c684625955fdba10d55e55c236142c45c8985a472af09830648915762d1721dace15b2eae455e88a6e3a07ac24195039efd4499931ac60dde839044d4dcbd6f04bb1262460ecc381d17e649d8685dd04a5bb6b44c1e4e09c717db7e4cbd44efeae90690c7083895171cccd28f43cf664d5f395c3757f23fd99b318cbb128b37958fa0c7da2666dbfa3f6396755bd6a8e188c87396310e8615608aac6697f839ea648437025fc0e5659e98061248608700481157b16c340accb376d3c7e986338a024a8acc3db2c02154bb80ddc449a22e5959ba00375e7c3e568f321a129d2493f22e3c3f3576c2ca2509ceb241e2c536f00bdd8011efb584aaebf927a263f4ebb60ad9d8b935d080d6a050f776ab2c73753d751df27c216a7b1b24a20ef0a3b838e24706014dfe15fa8fd9365bdf6c33750fabdd4a643b3d7912b36f990f39f4dc486d8975fd368b7d23e2ca66b22b72f12658b17663d56f2ee6aa922a8f110e02617d5d805c57d8d46f0226c429b9fa3af57d9b51e3cb2af7bc915181a7a699a27e9719fe0c007be449dcaaf3edf9a14ec56d05c2df56f43dbd62bfaf1e68cc1cb5d5938c9c12f7e940c9048e5bc5cfe626a40dfb7aba5edbda5c14a2ecd9d3adb88a6767623a832c5f847854665971cd306c132955936b4b5171f1f50fcbab3e2a63625b15b10e2cb9d48f2a4dc1e72029e3975a253a7caebf61c3e7eae5daf94c84502d9138c266cbd3d93faa5b03225880e7538cd785aa7afe08521c9af00668585ac6537982e591c8ad83f0304bf1702b9c58b8120dd9456738e1f94ed9dcd03e53213706d79101af6be86755ada978e513005e24f15034375b552625819ca74a3916e6109fc38739fc63a8bb28b3592f70697209c2633020ed6759b9a72e42de229e6f584ea9ab9ee8cb8169478479d7a3c5d4beef7d145f95487daa24ae2ac25194bde646436a26a1f2e44966c4e8e93ccb2a333d01944c9b10366ef015739b65d4a21e5586f2e609f7faf1a4f48e5df70e557d6aa02fe401742a2acfc4d1722a3d5bb563e7694b4d9a88c883f30d2f14c26cb0d09725bc17f9f6b960656ede694845f2524b201b252805b38a826f95e7af9067cda3476a24a145346c26ae92bf1242d83adb7cc3628ce2c7d6d7e38ab8236ab68f23682cbd5957d60c2be0154f9bc2c0fdafba8c86d8f575349b97451c09ed262871c3f5c005022d192e8d07292e411b59283536b9a43bee40222de35c905824598522b4678d59f690278cda1cfd35913a4f5f01432f673abeddb66774c0f26dc20b78fa829888965b0bbc13f7d7b4cec6edd2b4dd573a809ad65663a3231b5a084a3ac5de1f3f26d08282ac1534bef5d4490151d69d33b77a9bd92bbdfd8f98a9547bb2c358b12fd2a02aff3aa795ed56cfc5bf64f4cbb0fab255f9d5e7aa2212f836bc611516b2da2cd76a2b9fa057921bd0828e9c932af582eb21f69b71c9a59b7da95b69788756bd56575f5e89b4faa8052468e14c3204f4b947dd2207e50072916a12f108c0f5d79ce002cad756d5d0af43d5c1d12ec8f4c9d3d2ad284bbedd76ebd7cc821413c6a9f55442de884b19e323629e25faf9fbc7f9146cd4ca8c5ac010a5a8399be00dda446883e3891c11deac3bafe59e04668e54a7cd5b7770e424eb590db62f7f3921031cc1cb35d4f597d3131c97dea2dc8b64cd0abca9c830b5b62c35d2b18e5fa54c395a15495957201b5fc72cd30f0e9e9cbc9aa9a312e5978af1616861caafd6a3f4efcfbb9ad650f7cb6c36836fcee696a159d61253477fd103c65b143f25f1ac869c7e57819409d5a57121eb0a5f61466448035fa609610459c3bfe248a0af65db66f75419b7bb057c59bbed3dacb57caff3cae35848cbbec4baacfeb055c2677f8d9eb7f9ef6066c945a3820f5be1f2626b7e8955b40a728cb7969aadb5d29a7c0e2c10825de1216462c37ae269a436f2745e9418fe7120b40d807a77d2c71901a36348ea4b569e8b6296a518c09db3ab548e3174da55a5bd3849c49827aa362f4b319d118332a2eea0565084a4ac56dcda5ea132de5d595f21488d649556b857790c69d3c34943efd19e6c05d5654fff6156c03b4d1dfe59e7c403562a493c8038c7c9421bcd484922e145c940238a1755ed88ae637e3a40f8700871a2419299f1a26071891ea18e9d4fc7e3b0f7da15ad60c88723ffdc022b51295aa5ac48b2d90ccccc459bcdd301d8f55fca1e2f311d4411cc05d16623eb8aafa085224d311ae85941c018edd065879d29b7e38247f05a3ecaf2a982978d589c625478887d8dd14cd9759c2560af0d0af6b464a76238cfe372c13e64493c44c54e25b5c4d72697606c85f4127dc8d314caeaf9cbe48dc1740b9fb27427fa90f0859ba1334bd779b43e4bf8a211a8bbc5b6d92708f596cd4eb0d13b4cc9d634759c66df4360806037183320d0956db3bc3b5bcf69be3f4f92d3612e445ae972344f92f502be356ada2cefd2d6739abf9f97a2d2d9745e8a46a5da72f8b286d3243873d529bb7fb22ad3748631ce5dc8653cf57096d5964396359c267f8d23911d663caa80bf965fd6938c478d708be53d996a2d37d3634d0b9b0ec866e78140e7831f3b76a3b0b750deb3093330c5a02c353ccee90ec39d41829f3f83a2242f9a527ec85291966e8f0aa6de1a3db2933aaaa3ce204e23d2bead9b58f2ee79bbe2dea6964c7b1e75dfdb545260cf10ebbdd50d7aab212669a567c8eadeea66c17b2e95d43574d64b67895275d97668e17ed5045d8466f4b237c5b525127834c4c7d0529ed13cfa332f642de2aba4343cd9ace87830a82954214af0c46b1a0983c0ea9950e2363a80a3aaf3fa40e375dacbe7da29d538059350ff0ab3687701e2d76692198a9ce4fd52c1ba805ad8b6fa0e717e13be48e2a23c28c5d41868f96b30d1b3263945cde2c84feabc2753a793567cc8459e25c9c71cf3b33434f60db3a60a25f9cf4ed45c0aa24947d3ba7f35ecfcfc76946dd94b85bae177471ebb78ea86c97a4fb2ef0a94fb0875ef362e6b1a2d9920dbe2b79b20c94a6ba6460a09e149218dee9b898fe9d4afbc640624e0df6abb06591e8e5c52ff89e04586816d1b7c5e6645c9f3b2e1ce4795b54d9630369f99cdcb0c42060466d25cd5021b5fe19825918d45d018cc472391c7e9b82105f8508d199f17226ab4c22b1ae0abf56bba32a35f361bcbc8e0b7e511f2bc7708c1bc4fe690a4c05d08287da3abcdb22256c6d58a745481b99b47730ccb686ae88237a4ab5de5c1490d899c292738d2c341e3d32927b910a762087a90c78f2d5edfb1a7e1153f232d8cdd6c189e63dde9606bca3f0791126918a5cd8d1a9c4c83004616d857e33389f37251334b7528d136a179a220bf1ab11b91968bfdf85a7c10f950def429725d4b43dfb0cd8d0df61ddb7a5e83ad0f288071a5afafc57a148fcac58a083faf99de7d02a38aabd3c3d7a259c0b6f992d97d5933bba71548559403bd7d2de2699c8a2fc2fb750dde473ea02adad5bebe0c6b5b61851312baec99bf563e162413fced8e0573a573ce86e0a8ec9830a5891a8bb3083eb8faab20a9fb5b8d762ccadd799ec7223a4e114795a4ea7498c7b3b26da271921352079e3c4e13d4a7b86d3a1996dfddb9d10869ca9321ed939aaf3b1fac62d3edd250b146aee98697d3aeb31456fdacfb53f0ab8aa1a05b12b7a5c0534381e5e85ceecc58c9f3b131d8751eace05d2a94249ae688864879985c9466888e2f6ce862cfaf086b7b4fd27e52512f8128da8560cbb604e45adfe218ceafc4e2826dab0ee057c06edecf5a8d6d4d7a6d4ab1205ae6c7b3b26866b3b220a4c98b99189627923bcafd342b8b0e2932a2d927f9e58fc379516653399442572645a6b25b2dd0948673616fd9cf9f59af5acd80833496aa3bf9b7f910baaa63b5ea17d3289ef2b101073feca7425e3494ae16bf9b125249debc225b037e9acf2ac5ed5f8481614b4ca5995261e82afa37957377a26b919771818ea78f1e558764256bb3ba3407972446dbb7a7b590953be81166ebf82795462bd4960cc1c19edccae45a859aaaf594fff83d526a7cfcd821ce47f26616a71391c7a5af8339b6649b2b4a264d03073099dc202867ee6d800ec8cfdf638d71968de3296f9805e5d15414051f8b1e6bec44ecfffdffff3fecf6b660891895a4d2bccc64273c2ae445dfbde9f9486a77294b92300166db84a7405fbe81626cdb5ae048ca2b409ee2d388040a6d7c88b091420df576837fdf54999666ed4ddba64d19c892c3dfe16bbffe19341625e89c8ff854ece7889efb343216e53a482ceb299f8af5519e4dd7a54cd3b807cab2e79250fd7fedbb499cc665cc93f827d1fc948b1155d96a0dbe1c4f2e461d53e0703e080b0cdff197f751f1315201d6d7f3dbfa545522b7acc795eab623e823416789de9952a6d2eb427c7742962dc36fa16971961d9899b0d9ee14c95d8905794d42c9b655c96bc59af283ebfeaf179b6db3e646bb8660f42e68210027308081401dfb2b189f9b6a171059d1c1f45cfeef85632280a3afc2e970fdfa5c3febea6da106003e20ebe08355643a597a9c8a3fcfd3281791ba722d87a5107248a4ae85556a2f1d02d137d700521cb21e04286c6b1acfee9bc2654398910791a540ec5da906924a985d0fe14ce723a7645e0514a274778baa3d96a57a1fd651e885b6b7a83f072c43fa6df4e19fca6c27cff9a2c94d1e1ec561a1580a8df6f35bc6f39cf5d427792440b91e8dca66193a58a8fc5ef94e1987843110e3382dfe1697936349c8f2abf2efdb68b32d741f6c646983c886b4492d0b2280b62c9bc13b19a966a6c4321f627105b9240e458901e16dc3f38d0bd770ab743e1b07453f4279a3c19e50a09d323bcc6e44becb0bd16cb12700aaf36316a7cd46a315103a94ed364aca41c1a232e1bf0d6941aaf62441b1069503d543567bf7a923563b14e32c667023dfd57658aa965b6a2a17d0c3693ed4f54c81a9324fe37fcc05a27210e97a6ea939187fbca1989388bdeac91ebd889b0dec462d8ddba8134760d15681ef552b0069836fa84aa6b52deee8a1aa466c2278d481d843d1ee244ea2a60b6329d7a92cd56fa582cac534bb16fff937ecfb40a5f757a2ca41e4c75fb55744b2223fdea8a2c78f2b6506127d40711ee80d0347549af72924c318ffaaf3d5fd86892289d3723d8a0b88209866eb339ef3e97a2e94fae89baee6c1852835764a7ea64167429fbf705fea2975255bb277b06017124e17343efba7fffcdba70f873bffb377f269f7f868ffe08753c830b9fcbb0d8a041c5da91b11bab1a6509d9d6b5c2ec872bb4d8868ed928a5ee3822835b149e065b4a6d700551ab086ae6a587560617ef59b609a1d3be7b3fc6dd5b598e70050d11a30804614123dabc800fa18c589e8b106feb0b7761a7802bfbc47b5815b6cadd22422a6089fa9bdc2d3ab783693209cd25de377438a3d6b0ef79b63b3e17c42c3335280560d6e8ffa39df290d205c19d66e9215c26bc523b70e58ac7b23fcc0e75ebb6a09b15223a595ab87f395be0cbb1fcc13ac579fbc81ba5ffcb746e72b7dfb733e54dfd99ccf95e72cb7cfd89befefc1342250840f56e483be7318b29d17e2fd3c29e35922e89158a854beb883abfb97ee945f5f8523a5d9b3c50cc2c118bd8d2c5c2f65692354759972c654fa976864f065c98ea8ca66c8288cad65968ae351f3dc7220d6d8ec6dc23f2f7aaf1b1728b80f135e14e844110252404044ac697575351da26f806574f700ac2abac34de46c235f9c82e2f51eb094af86aa0eb22c71d9ecd25a566b7e6fcf84012d1d07312fbeaf9ae695f756340cffde9af610b8afaae5def7d4ac1c21f7d547ce7d5f2deff0b9a7bacb3aefa9accca697570a30d57b5a040e917b5aac462f2b518b3a21efadb5124585ce9b7b9ad0a3f0beaaeef1786f6d7af8de57b97abeded3420b2ef754a3c6edcb6bead375a56afac45d5a598bd0cb5850272ed431149136783a7f693b3cf16b4f1559d63c5fc20d834d799ef3853a76eaa5883a665c275898ea41a9421e9df3324e0af701078a8814308853cffb058347175df98554dcb98d330fd630cb4517ca493d725b2255756903efaddff453f60ddb05950904c353d765968db023f91deafc09eeb3ec6714923e6bf0ea9a8761be71428658a433446a9008457bb900f0cf6c071c3f83bdc27db9e2436334104effc1bb31648394d0bcbae6aa6abadd86d96f4265624d21a74d1425491a02697bb2d98271b72ae42b35e304ea92cbdbc107c7a6fed4665e1721d07a00ab827412709960ec4aebd14f3f03605ce092ac92197c99b1816048d522c249076b0d4567e1792f10e3bddb595608459320c881bb2f44ccc79f4af6d3c3c089d3340cff02a07d3e2cb31c9c5a6d44564a1b856d8d18398649506226c5210a6d6fe40e0327732af2b11d529b7900402547c7b92b3f26ecb1fae32cbb1229ce1862a6bebb9b13cabaf809b61dad0b20963480efa4555c2ce9437f6c388bc393a45bcc72c1238b284f123a7f3c499a339548d89d369dbfd8a961f4d9080c818799177e83014ce1cad151fc936d238501a63b4030927366234ba1909899158bb4e4b72c4e21ff083269d9b70b8eb06304bbd65eeb7ef30898ce3b814996c054c4c6508694ac78025a2ec7e7e524cb1963fb22cf8a82ed0cb2f9d58447f18f62c2bed581e247f0b193e5e3efb09912d1197b7f70a6989772adff1417d8071b4ec4f00a521f64393be5239ec7ecf9fa4b1d1db3cd066228453116978d824de3a288d331c0a9d8791107e70e3b018527fa1583c834c71cd795f9b60f64c1dbe1230c3403ce0c1a69ac7977c7e2e234c96ebcc2478fe03aa92bb7aaf6602e1cda23b6a59edad645cafbd23153e87a47e9fb6ca82a74a8d9df7e96b3a32c12ec7aa3b3b9a127bc6ee63adec1531d3a1d07415952fa7e92f1f2702f8029a9088f4d812a1479fba4b6817ca84eb6089ff31defa8af95433a5551e440dea586625666f97b9ef23128f34993ea772a76a8688a2778787ad287fb312884d44b044139c465d9ab0a22be70817242f0fc504122cc24bb95ac45716c67a5b0965c4a86e8c1a8aa13d7d46f97182d03d4843515893e464f994996c8753fb5d334b4d3a3fe54498e866a7ee242c3604d381655b00f67f82d327735d212e533aaa839a4f3d9fd06df4aaa6f24bd0d099bd90301f275c2ca34c42d9fce12d19de749e3bcadc670d1629c259c8d849c849d0f077dd7e84c8d14361a5e0b1af47501df27a824608c58e679d22386b91b177d157a84146e5e38efbd418056b450a031c8478f35c6a26c40ebb63bc57a6cad3716a80dade4fc76dfa2e120fd73965db1f98c39c4388da32811373c17c4c61bd2b06cb3736f4bb6adc6ffc2be17a9a4efdb461cc8459125d7a24971adec024d12550b8d795a4ce251a9fa24d42ef7a0f961d74a22db518d688dce689e8ce22411519b0eb9930b49f52222061d61fc70d355119ccd8bc989faba227a90e3e1eb70937fa830f008cb8bfe6ee75ffd85f9e0b12e4e4aabcd9c9f215304d5d808b51f741abe24e68540b9449d8d2232dc0069adc04d8fb4ada7ebbc81594e1a6da4e7366b4ca4b4d7668d0ca29e168d8bb66507aa1986f23fcadef192abf47c3e6b904dc0b0b1d03cc1e336e72a7fa723d5ccf3c4ec9e40d0154d8e8eecaf762dbc61b6ad119bdea62ab786c316e679a2b841cb7a36c03afab333cb0a9894d91cff91fbac7e46fe1697935f674e225ef2df6866ac83252f790ffeb766b22ae2e98e96db5754a1b8824bbdb48b01e4e29fc49f058f447ec4a7a239813f8bb6fd18113346771d4d5dcb1df26c288a02e135557add949a41eaa8ea60efecf621053d88895e661f67336349b45da9e8562016960aa173b7fa85ce3b60dc37540a22535d56aa185a7eae9d716548036946dddba6fde0487027782830c80a09572cae0f0c36e005a610d33c17e2b9ce21cd822bb1e8304790a918e0ed9050cb135eea724c69a639622d0c40a40a42162f819029b9c9a07b8699f1f0bc2062503ddd15a22c13d154d8b6559f6d038528adae791247bc14a7302730dbaa2775e0bb15dea8c8ffa2a76651c71f1570e387947dfffd2e9bf2383dd172a1168d1e19d0aaa9bcc779fddfdd791835bd462dc245501030830ad862e0c09b846c9a0d7d3d18f1d8c49553080de54dad81a675b4d3b63f2b6d9550da141b859dc1c61a0b05c85cd3edc759a4d49f48ec4aeea579407587022a0c21581966542214e1101080faac1a48e2c1bfca8ccda1bbce6a62ba5b0d85d8cfec5c627041c0c29c35e501ae04e5366beced1e1f1ded7c7f7c72b6f7aed10af777aea6ec42d137ca6b755571ac17d5bda0f5ba8519b741cdee95fa9d2252480f8da401adda66c671aeab2b8bc4855d18d17ba8ef649ada656b43abba728486c791e323821f73e7d62a94a391fea65881dd9e54e70a959632d4fb6fdf6446247ef26871b50d58fef1e46057db4d439d4e2e20415bb3fb1fcf36bae3b8cd1a7f6ad0d2a73b58da734ab79e75c76dd6f8a35bb88b55db6ee906547de2143eff1eab9ebba5efb0f4a2d172afabdfcfe324629c7d3c3984a40a600a19a763069466e2fc8934aaec264df8f33c01d292c7890ec72fcb9aa233eeb4219163afdbbdb9b9e98cb36c9c484e316d0519fb39768ac46c1118088517384053c2d628c8fa2379f296524a4661f0fec36020c7fef1e4100532ec4fff7b2a72b429cf57be220327c7d6be4037cf9ddca66871a83a883e40136a6a19c68055dac8cb87575735ae844841f1292e3e9e1c9e0a9e0f27084157bfbf0b9306b3193a4ee046ca717e4d1e3e5764d3f34bce62d595dc2ee80bebbad2429ce36da501bdbbd3da3a5d1c7259b3735e17e4594f04daabcb8dea343659f2d813d638bf68f8f19049550cc37c7ecd938b5067eee861885658e57921fe2a05c3a69b2d8262f88e97f2b31ff5568a949d323b383d76d6c3c19282c1b3220ce83f4f8f8fd4e36c3c5a34af5b6e685afb03d65627f1043608cbf58435b6a554a05963cb0230917ccc1f61d22a0b65a9ffd835d59743f05b981148f6f2641b6e529d388dc4edf1a8d978db40897d7d93bd658db70dd66312287b12da6bfe3d1c77e8d79e13a0e641919edd4cb242b0683e4be2218424e5b96031c4ab072130cd22012f08c3cea863d2dccad21fe1f5a2cb677157167726e534f983fceb93f22efda4ae0df64110e1bed39d1d8f244536f818aefff86e12ff04a12f64c11083a3aea32a8396c8ad257f8b928fe1dfdb599c8b42fe39cab3296811d4c5391ead4fb30844b075c8faad0ae769b538e145696a43810a522cff9ef2dbf55196dff03c828e667976bb58af200d0167458e7f96f9621d6264cb9ff342e4eb7c2cd2b2714144c70f7273e91b168bd3322329f0f52176797989ea5a2e25f6bf89a8cdb65eb29df9986d6d6c3e631baf7acf5ff59ebd663fbc3f434db89aa8b3c54cf4e47104131e6769f7c702622e4395540c31c3d39510b3759ec4d7f8c47e96f3b418897c7d4f6e94381df7d870324fafd481a69071cec45375b4e97168f24a8588543a83814046e29f8a5a3ad44db0526026ee1101a19d02a26fdcd4a700c16e534b739d1c545da0ecb3be138ac901655561008feecde09dbf53cc92b86c36fafdb4d1f2796ade4c6292352b06fff6545826d16b6876849c1ebb28f3780a2d3bc57c509479730392377aca5c7dd425f5ed62f6846db65c87cceac18623c5280f8f1f5737b141179a7eb7cd36bee080837181765d94ebc32cbb8a857b3ed2deb75d64de3a1f7becfca22505f9212f9b70ceb5961c872ed87aa84f98dcbbec094c648fd994695e6c0bc778c2d0c63f23c957285d1f91a7254f239e47df6306f5bdf4bad9626f2113b9faa293ab33915e176cc2af051b49a98464519462efce8703dca12202c9196ef9dd2ebb9908953bd85ce840e28e756e7656f0a960591e8fe394f14247bf3441dd3be41e5284b035bb725ac4f236d46dca3feeca1cc28ab7ba714722d34cf9753c865cfa9279ee8c4d603a98c13c91bc334ec747781f8bb221bcabf8fe5bbc611b21ce1f4f0edfa0942cb99861c278af283316c5c530bb1639bea31b0753c839a95af88c4f5f2b1404caec42dc0e8abbfd4a56f12cb9164ac677bc1c27b99087259efb76b3ca5923bba5db65077bb0a205e36599c78379293019d94d8c863a46e347520d130d2c99d14e21ca1d0da4d9901834da8088dd57162dda50965a2da1918156842d47e1aded0c9f1950d9f6314f3ec2e6812791111f0ab6aeaf6d52c22a6662d8b999f0f2660c02ca1fe679025bc7f3cbfc990ea2171a837587cab3321b6649a596fec0ded67db1b7dade1fbb6dd668b498f14280ceb3a2ac769e15d617ab800b50a50e16573bc672dbeddffbfdb7c18e7951052a0bab20652901f887ba71a460811f184b4a731a480e549dc82c27de67bc9c0461e90f5ea6d146b71158005557a2d9950cbce67bbf1ad1c43009d4d3e83d7913a75176d3314cce6e05c3475c3b216006c584e78a723dae0909023dceb984c3284e2c611246834cdbe531832c4b044f3fb3b37c0e98d4e3d1669964f5377121b4eb8b654c7e1a77bc8ff3a93886b64d8b51cbbb59a3a4650f2cb8f9d1ea6fe9c4d20f3d32ce370181cb6e39b9f266a56cf1e3c7baa6a43caf962cb26f484dd91de8c1ed31e51e9dcd1b316037597e05af37b9e0c3723de5657c2d5a2ce1c32b7d7a6a7b2072eea5591a3ca87f5e65662b4f6c26321fe25d112be4300665c6d92c4b16a33849e029f660efdbcd0d36cce679298a85b9bd8de372321f7486d9b41bf1eb381a4ef87420f2a2fb3d2fc48b679d1f0bf38033e1608ad2d8f97ef7dddefe0f7f3ef8cfbf1cbe3f3afef05f27a7671ffffab7fffe9fffe583612446e349fce355324db3d93ff2a29c5fdfdc2e7edad8dc7afaecf98b97af5e3fe96e375cede45e93dac6a80ba3ec0869054c52799c1668510c4f09800c1fcadb94f629da733258db04307257ee39c66e20203cf78a530c07d038c00e76357c7c9772119693db8cd3d99cfa291765ceb699226ffc68258d79399b9712bc0e630001d92049a88dc482395fe0216098cde581a6db63a25818f42e28b0e3e8966db38d369bf219dbc6a581758f512683fc55122310c7599409fda2131725246cee76d1d4201da321ef94cf30d71c381c9719ebaf6df7d7484db0361cb1481e162ccdd848ce4f9ca53c61513c8e51202aca5cf36389e29d14ffefee5813d16c6c3710f5ff609b78b6f7d75eb1755dc4be61affa6bc68b4af127c901d2a1605b6df6accd5eb4d92b60cb38a34fb625e2bacb174fd963959bf5bbef9807b9450d2c601ad9b6c157fe54383fd9664f59973d736f42a6cd776ce3767fdfc9fa63120e998b96917410996df5efb7dfb257eccef41fd0e5e0b0344957a47e4978bf875b84be3b58291b2e6b2b49faaec47593c7346b1efe86b7ee36532fe14aa1d30651a0cd2278886cb3420ce7391578d15c5fe24135b94c95a1061076b9abfaf35f3fe6825c825db5e6d15cb2c6a642c8d54ad25eb40e0a7a919401fa50ddac53663fbc3fd31ad0d67dda5e55510e7e498ff2337407f556848953b9042a5600b8aa6e1d645c0d95f16c2eea4162c5461090474ef0ac064d51cdfa8699669f8d9d232799bae06733750348c1cd522530f63ae8407953aed08918efddce9a8de6dfefdef4fbfd7ef14dab09aba708a6b5dd3cfffb9b8b6f5a0db2628a9411fa5b16890a3dc1a7f3a71752b82069372dfad3ec5a380380a014de10e05ca43ba3d168034d75d2eca6d962ebecd58b671bf2bf966390b18a5cf36b8b354bf7798bfdbc6c25c914b8e16f5699c3960ed35b23257dc5336ac88e96482e13156d4ab31ff256b91345c614d9c0d02f9445c987574b0c578ce51f3e16da3ce13a23fc653911e925dab7b24b652373b9d484650930ac1004e73a5d213bfccc765276f08ecd0bd41ce1f43be34c38ca32fa5db33a8f44109b178e2fcebc104d62fa68cc1d03f38e1c46918c69d3b37f1a8a41183df357556be702266922d127c1da28c1604130b5e31de5d974c9caea798b710d0edea9ec7abc50bde36bcbe55ccdfa2ab3867649d408029ecee288a4bd70c6741e47176e146ffa856609feec0ef90052190a063a319e244a33388e8b52e4a8ab37f6ad66e86793b8d089206350eb97f1709ef03c59c8151ecdf18e525cc5288522f074018d1deb6398aa295fa026732086d954b04b89ec25848896ad2f91829719838dd20afdcbd68085e0c309ed74d53550da7eba0ac612380dda023af35e35e454e1eb9a13c71070825680f324a1594ed3e6a415b0c60b8a7dd551fc13dc11728ec22351964fdff192bbb59d4fa449d0f32ce47ab6d43125e89612173b83224be6a5d06a1b8abb7625736a91d6c36c3a885359581db76e4bea38268b67f22e5048ae89e85f42526ff833c128fef2f23410c2383388a8137220814bc5c16897343dd10d5cff07344b02dbaea175f1f3fc12e8a78e826de1d11058f5be20e6b412b9dc9c7308315c1acbb2b9dcfb3ce2b352e4d58d97d5fa8d942a6126eac9e110d11e36c4098528b4d479849633da1e145b1b46bf920d8de7aae04eeb2a0b0037d85375151af002c80dbf5193315800fdf9f163f6c8a13c5d619e13730e5b86312d35b179d0daa4a2366de976d95e5a48595c3fbfc29d1f27c340d6dfb6fd028cbe05897cf5c6350480d6d7044a84bbddd9e24df2aded4137bf4d0b35a73895fb092f4b9132622a1040b86a54ae3f7686d9749aa5dac6dcfd78eef8ba5c842b61294ee5cabe0941b37c305090d83806fac344f0149fa5d1dfcb35ce3736d61eea0a67ea7d022ed5b8dbec22ea82bb3bc32d7519956d54912663f4fe701205c277b0bf9eab5cf68e99e4176c0f4a45caded19291f5530b9392f39518e62e21276a366c06ecd8577e26eb41c6faa3d069fb7991a5ce81fb489f46faa3affdf905264267fa8674648f1f33fcab5399787555a2dfeae6ae5aa95d69baf24cd2176e676ead0b17089c6a8648e4dbaf162dcca16a660e020ec8c1e2d544f325f50311ae7159bcd32f27d0fe4c03c273c38c5adba3a8a6606867ed58642bfdb77746a19382c5c0057147e5ce82ed3079762644facc728cb2cbb291292cbc73ef9bcfda507a9e40380382b5768cb9ffd073890489c27aa4a4c5ca26a32e7b1ca5547c359d58b9173d782426a9dbabe353a7684a56a8211d239fe8c7b5c2b150b026f6ca4681ab93f65e1360f7096de90bdad28e428f68f7592bb902817deeef76d98e863fccd2228ee086a5bb92b8c4a50aa08c6e06fdb56f8be1444cc577bd6eb7bf2609abbf067f35f5a3d87a2e1250ef48c860c72ffb39d9df654f5fbf7ac1d02eb5600806f55f5c8ab446119f8deceb4b81bda7921e75327f8c96cc5329c825497683d7eb6e178cb4d3859267501cce46aa7ed156af086d364be6f27f451e67515b8e60b2984d44da2104d2fd7bf39cafff7421ffa7df8ffafd27fdfe7abfdfb9f8a6d77adbef77fbfdae361b51a2d1325a4257f142296894393962a9655c67b9abdee39a98b494676cca3f9e1c062bea35d095e99a2c311457a260a4abdd43575472342223e9dad5d4519cdeeaa1d8a7fe7ebffb445b2d3c51cfe8a4896364d07d62cc02149ca52741280609b9ff19259abe56c13de612769d09bf01f788214fcd2d025451c89c9d1b5886413b6622d7e6497a3121c24c8dbe40dc8ae1bcd4be37fa879ee9e01d8ee0dad42da836064dc20dac47e154bdf679e96c31d3ee4ea6d1745e94e0646051716d91e5f4aad7f50fc65fd7262d537ec012bcfadca46e89b2604ff5a53dcf7c5fad0f068a2af0c5d452c5a4917da2ff8b86680915c52bf5f4eb085fd0bae34965c04e76fd7b354f72c1a38577bf7635c8fe031d05af2662d745e64d68b42e5a4e9cff5f4a1740c887e898fccbbb73b6572ef69eeecf9b45242df225a4ee3b517cc8df69e64d1ee6ccdd9892f773d745b22d8fe914746ca887fd46cd05bef23aedeb66c1a438b3af8c50426d08116885f6ecbae27eb46a524d8b437bf9d6dc6818104d7e2664d3c37fdab4594ffd6b5e1ec21a3882cb9283e97491967c58c64356ccc73c07a1334eafb32b792c910996f32d6e671cdd9f78ca20301d4ac926719ce173bb784b965d0ee5197593cd9308c4e00c0a2f35d72364c767b3644114aaecf2f2f247e495446bd9bc6db3459bfda49e5ebe51d7d41ca2829f6fb6d9569b3d856bac6c86409be874292bb5de18d8a6a3bf49a1e212c33e5daad03ae892a8997d2ed66ff2b82c451a460fdb9a15a738b69a06a950dfd55340e720f48e685361853359a1e3a55af46d806e723e23493a6cd831d5cc9bbb9c38c363a82abdd4b3451e8f272593f4bdcf87629065576d76900e3b40357159303e1ac5492c25a08eabaf57fb0d0c66e242c78d8d20a4078adbef0fce74311b657309506e77bc021d1eecee1d9dee61123c2c677996952c8a7381e1d954fe7add53990be2faaa2653c5ed422f935d08d97b9042a8e0d3c5749025f8dad2e8746b6b341c0dad609728e39e65ff797a7cd46c5d1295a0127e4bf509e70861355bccec0700a52259b4257f4d33c79dff3a0633ea8958e8170a1a14c3baa3594e879462620d79182954e5a9e76606584fc56db99ec4a960a324bb91b875d36cfd46f02b0c0cdd4f41aac14b30e193a394a68ad40f5cdfb14d485e4782d2805c42531e3a1f7b8c80a7c7941a22469da9a922c70437c225b5d4e4eb6afa38ab5d6bcbc543e0ce6bdb5d58443e6374ac7fa73d54475db114bf639e82f23bc294e6cc95c2badfb0b828793a9827cadb03dd2788e3a8691b105a51607564a97fc3f9553cca4ca7e6499dee8f05284abae6936446aabadedbb855cef8b8daac52a5e1dc877231cb4521d2d25c6d1496607f280ff41f723e9bfcd721bad55fcadb3c8a6797dac8f878342a447909ae7e186587271dc9261750441e67318724780902b4a294c4a03a30a635854d2f0bb35abc614e1c01a53fd1cd0051050e9c7079096e4fecd98604c4716524de11dbcfb2ce58b6fb47d26671c9a64035030749d0579488e040b0fe1a69d45f83a1eb912be5dfe5cfd0618f3ddb68b36196cca7698f6db0cf28ed20326892293f49a4dca98369da5c07434bf2f2a4b69ce4b5a715b9154b9a832c5a60a497b607949a37c85a6c9bc97fecdd4d99abc23f7777aca1e7535d251ab6a687edb68ffedd9ddeb5380d9b5a9e5553b1a9250bc61e3503103b3043dfb18d167b4b18ca469b35e04b75c2e2c2ce174cadbec562daf36b018a83eb2c8ed8c6927ed582047bae5dac2fecfbb30aa4ab181c4f120834902cd8e5391e1ce6a83be3e30bb8e35de2874b749f3511b0245154b6731329a1f5ef26b4d5085c76dc54ea02dbe202d3a2c94d5908a366cde769194f11353593eac2a82659850596d352ca0ba66a77595d9c4b50a1963c457613174ccb34a0de34007540c60e3b18b141564e9839df7045a7a26c9bf9aaf6a37da916952ec6a819551183f0eea0e1c8c125101a06c6436290360a8cef64af25ca8ea632a9958bcbae84f52d4f17df7da6f210e3aa97623e9c48d4b0b8ad8cd7db0c0d94d84071e672318b8740fa590aeadf4536cf5976a3a2206bd5c37c8c616e10f69558dc6479f4865de2ef1df6f3e74bbcf893f3a0738f8052259caa384b9469ea46500d855a5d2623ab84d3b404c5c776000e8965361665cfc97dd80cf8be2253a63166e5ea565ed9fe6d4525aa5952c28bdc1be65086431fb962a7ca4cf815e8e9d5898a7aa68f67fbebafec9304cb80d3eb804a669bb16196e3135d04819003673bb7b00fadf72a2550bababa8a49898f47881183e5d12f7b381163713b63dbacdbefe7fd7e7a77deefa7fd7e7ed11dbfa1f520dbbfd1632146db06287b42be8259b11be9b1a96d9c6d971d712b860a3b90225a2db917a022fa69b36f7da4510a604f342e2c8c095b674d0ae709423ddfb8d0c12603ce0d8e9821ffd79334f05fa3c8f837237c25f4ff4c49877db6227fc2d3f19c8f45d7049aa08121f218f78992f3f674f42fce74820a731788d3b19688c9aec21843b10af8c00799bc1fe8a85a8dc2aeae1a61e16d417f03cc244624c4168dae203f89480fd2d8436b668df1afe455bc707c053fc5605a9ae547e097acd2fac4a098374e6faa6a144707aab60e2908afad6f02e07405a3c530ee1d65be20269459ce9a4e43b6cd08ae5ae0d35f2f9aad36fb549462f6863d6a2e43be09b5201b97aad449c56dd96cb53a51968ad69b7b87de72a3f7e4a00e930025e08e8ed368ab681d899499bde039feeaa0d5f4241e4f12b9c390fded58eea6c174349ba3acaff2d116c8eb5cabe585e5710f3936049e25098220195a5bb2fcacbab022cff5bb0e1bc528a55b0b1dbac64a63513fdd8f1f9345d2b1e52bd6b60e16aa5a333cd42a42884365941e7854a1b8435d36977d376816d2ade2478f1f2b3ad6fcc0dd77e65d85360a6d247fb6b656d8985bf7eeccadafd99a5b065d33a6fafdb9b574836e991dba45b7e8d6ca7b74ab6e931af6ab36ea56c78da8fae59b516f330db955b5cf5a71536d2ddf555bbfe8b6da72f6d5d68a1b6beb17da595b2b6cadad7bf79617fbda5b37a54097378f0df65691a67665eeb173a7e04247a6f1c1b494a71b0888291a5ac83fdc97e51301820b671391cce4311f09cc26ad7480f2f836a4a77e635c4f75b62b21022fb0b8f98d679c39f0cd49ff05d448de1720c7799c8a5d10ea8cf24989156155ce3a117195d6eb661297a298f1a1680641428c342be13a02f50188a656e1859a2ada892cb807b5609ba3f9b402f70981e689f115d51bb690c4b2c9ded6cc554f29bf2c18af5735694f9c4e1c340ba5365471a7aaf70fe769bbbfd65fd384a9e6025593fd35d6ecaf99704a6a0264798f141b1ce58796ec624d2e0e90f8875c8ce25b11c94116cdf36e971da2919931ab4ae22bcc9cd263e7fdb519d4efaf495028dff6d730e1fe39c5522fc53adb046c64c76d1cf9b9258075b67971d10eb6ac6f052d1a8d362540bb0aeb6c13f6e6df1b3580e51d69094a4f244a172645bb2b54bb93054dc9c6d2a9aa0fd5fac2f7ce284e4a410c6a688a6f75e6aaf4dde71b176dcbead4bd133e6c5eb856d3f0cd79fdf32d7b663c3a04f30a4ba9b547c0537ade042585a78ea45095139e06e404720a556584a724b3374c57bd84f074a984f0d448084fa984f0746509e1695542004c73317aa68583a79e70803729490a6a819e9d6f58a77633f5ef7939e94cf96d134bdaaa8d730d37e2614034082e03110caa6ba0c582ca01ec8804cb0582a78e40f074994050a9d50cc83c15512028083c750087c480a7e1806eced9ef905467ca67deb67bea06c0a14bf8b476f73dad6ebf198fbc456da94346ed432b2c34aaac84f0adc4f88329d018403611a0cad160580008e09048048a327761b8f0d93a84d2d089469ec85fffce3a1cabfdb02a9cae2d248fbc5fa6eff1b52c54dd1332ff000a4ab3f55c446298404a1e2563e255bc68335f3b6902696024249eec618474c8045990cb213c7c4d67f352b0242e2050e020e15381803b8649c34fb68d5465c2132bf5ce5b555bc9c78f947c8c6d7ac4b0a4a7cade3230d2282ee8d7370e3246afe4a8aa8c4bc638be162942eb9a4177b4031ca06c6ebce6aeab75538f3ed93bf3a7aa8a4aab5d502164f8b10508151e3f367a10fa37bd5913f3dc4f0649a2642d1c9c6c8d2a5a4e73fcd6c945341f1253dea65c40a4082f9e675049246bab7829ae3a2714b4c3480b2a9a1678589d5f5422227b83b02b43af4ee151790208993a430b340639ed07a7dc824d8852d2a2e032f1595654234fd428fcbd50d14403e32f13edf9975ea62f52c97ded22c2845b2e01c295f97177e7f21348a6480b3ab6b25aabd0c35b2c0a78eb2709ce809bf5a8e094cc454f7f30a769b7cbbe5fb08188d33113e97c2a72c920db5e9c70761327098bd361328f04bb54402eed51a16159372b0cc9d4c16348806bad8a4200bc2796224d514a5a28e241422fd71a5621f2eb7828188f26021a67c6a7a4a3ab59947b207d9971dde471698bf5dae0bf86a47aae617c26f2a1441da4e905ce18746bd9ad1d88509392666007a1e62622f0e2d48fb6de426b6ed9445b3b76bcf521f47e77673bfee7d6cbc0fc9dadd8f7e822d6b4836eb92b254fdcdfe12249b47ec1e591e07ea72b0361b1dc35011e5c652c4a9ea1b3e2b643be1a68a88480fa96e6c00934b6a7567d7b87a15661389fdd9696f9fe0ea9f0937b8efcfb132319708b5e33d153fc408da09966e9ba6ddec26842accc39bccb6a71e79e63171add63ec82276e03aa36dacbe90a01d61c4fa658c704a99c5c153109810ef9ac9ce7e254c23e93033418d77c5738d3fb5128b9cb578d57c50dfd65460a576a8aa613a654e1a712ce7bdf1566c456a867ef228029850bbd015a182ed9add9a0551bb6aeb664f2eb93c048da59a1221213130039a3aeae09d232febb5eff1d2b0cab0070e6d8b1dec8a4a05fb1df704c36b84e4d6f3396951c3d90d19a034099a71e08b1668c3a88410785f215761dd81c57d5571db4e94b93ab0e4ac58dabace8af9d2222eab0b22a720a83e407b69a8a73dddf45ebdf5787441d7beaedfee55747994496872a934445eb148948a4e5f74936bcc20d0c399b08b10eec274aab3f80f6c498d865ca345465f456bea0ec50dc8a5c695c7849898aeda88f31040d287909964845990b3ed5b17df553242f99b816f9821923df184cb47974cdd321a43a764c6531ae313a75aa1550a6826ca728e653e5ae8f16b5388044dc8a02ec755149ccc0e99289690c09d7060b7c2e05944180188089eb558c69e3d8def17e9b41de1e7633898713bf7a2e66927747c9c21a78aaa8ea7bc7fb882b009262901cacf281addf817818c0249a1da8f21f3be1a6795e1e8ff6e3449c1127d7b3ecaa09bfff12a751e75422bf41fe1f68d7ed1b210cc32497d782adea54c99c3325b1aa3ff4d59317e5193ac1fa98a81ae5d2afaeaf81fc752a2bf6d8862a5224d0d37fc07c987b6f76c5271030d4fcd9375e0a5a97211b5434da149a13bcd30c4879aa7700ffa0137bc7f9613068ba012455734fa16e2bdba5acc226da2c743497e408ca53bbb67bc7360a759439523de67285bd12172c4b93059bce31b07734cf558ac402ac068b8cdd801f3058de73c8930f7868700639c00360dedd69b4e0e736046b45bf6a94ace0a351347dd626aa6428dbce50768fdfbfdf3b3a0bd98c9269a41e05faab94a2b211dd3255a3e19d94e11683bbcc7caa0eb1818eed11c5a39180c40b12354c6b237bb59701341686cd22f946411dd4899f8f199015ec46b9103f098c497a7abcdf638d6f4f8ff7bfc354197b58b0670abedf39faa1c71a8ff0d7bbe3c3c39d931e6bfc117fefbcff0069e1e0c7879d93bda34f873dd668d20259bd8505a71f4ef676def5e4f1d0c192dde3c3e3a31e6bf454f7fff571e7f0b40751d901fe598f35fea43039d9d9fdcbde197470ee16c92e2e6cd11ed4f9592171f061afc71a77f4b3acff190b8e76decbcf477c2ab0e0e048f6799096f873fff01890d84f32ae8a4ecf4e0e6052d44985800f8f77fff2c97c22879c1e28d0538f3576b3e954a465432509a72404a40004e48861922290e6911af0461ca02a86c1209d10a28ab204e30a0646cec13406f2b48cc4603e1e2bfbf320f71f0b6443ef4431c41de326769e0bb319ed7bb1da0ef8f9ad63c961371d1872f4fbf2a331da5021d6fb6baa9ca99806d0c0dd767ff6860b2e81fa6aa2670e39280a0d015322793a212a702cb499907f8329b8b26281a7ce6b15fb9df267641b4ce1a50a010a84f1e779698b055415b4a67a6a35afa7ca0b4399b6e31ff6839e673bc32a608ab866db8021f1c4431ea8c2e5420046b0d6960b1f4f6709dab740fc32d084f0d94c702008a52c819067dad159bd53396edf6752c4b58f04c1f8da725e7a76a6dace65ce8ec9397dcdc47876f8646efa34c5be6fa8b2abf218d0b4c80aaba63c85f851d76a9172e2ed311c8aa26003b1c8d06d4b2e95365493d2b53a7ce2e2881f29e06fdd930f639a9fe5f3a26428416739db39dd3d38e8e8b144827dcb366e37365e8ed85b5f2b85dca223656177142a5afab189e1052345248b219fa9a554bda87dd3eff7e776c7351b1b1b0d30cb8aac237c73f345cbcbc0df29e455a3b9feac4536a084eb0592f9419415e1d746984629173600dc224bf206aaef51fe3de82a9e151862d9bee2b3795ac68994b747c0f74c8789b8552941a4f4865e76205403c099a4883987d0ccf1742a2279f14a162c433917e1f0d92ccf66b9fc54e19a72e1a6598e67ec309baa4c82913a83839195acbc018732f20c2a1bebd758f84c9f5d896561c86a50fe3854cf916839878f93d6e229a30f873bf25af0376b0881febc12990e3236d97dcb77f241a40c2752f67d6c9b6db227d0c13aa972aa385bdf3e6eb2efb609a27e8490ea25006e30b681fbb7e1bd6a12fd073f952d07e682244a81974f087f0bb368b2e560c3e226063b23275d7ab7cb1ea9bdc90bc19e3eed79eaa42ae6521e02ed03fc0fdad4051106e87fd0cf9908ffb90f5f528d9207a8666319c83fba205fdc8f320a6dab23fdd8ede1d5fd3decbcffb03af8a603fed9c6fde09560b97a172db78bcd55bbf88249eab85dd865903b22409a60d604778c672fd8e3c721ea654fd896ae12f2d20cdca5419e76907e5a8bb4f3b83ec805bfb2a3e939a379bec29283e0befa746d3b1dbc586145f02ab07a0f7f727b78b602d59ead0efddc81fe7a05fccd7565f54e2edc4e56e146fa02b47a273f3b9d6c6eadd8cbde970ce4ceeb6385c590d7b4d53bf8ec755061ac7583f88289da59ff5ff689f1f59f5cc2d25de1af17ceaf97ceaf57ceafd7f4d7cb0de7d7a6f36bcbf9f5d4f9f5ccf9e5e0f2d2c1e5a583cb4b0797970e2eaf1c5c5e39b8bc727079e5e0f2cac1e59583cb2b0797570e2eaf1c5c5e39b8bc767079edc07ced4079ed4079ed40d9dcd8707f6eba3fb7dc9f4fdd9fcfdc9fcfdd9f2fdc9f2fdd9fafdc9f2e569b2e569b2e569b2e569b2e569b2e569b2e569b2e569b2e569b2e569b2e565b2e565b2e565b5b2191e5884fc5aaf2ca3adb587fed1e960ef2cf1cec9e39c83d77707beea0f6dc99afe7ce743d7766ebb9d3df7367ae9ebf0c8e0f93aa39231c4292c3fa71f6d75cb1e9d9ea12c1d367f74a044f9f852402892bd1342d5d1247f46741533b096e05488e408e16eb352f746d364fc5ed0cf2191979fc3d1ab8a9bbadef46069a27ae4de950ddc95302874455b8e10524cc83bc9435594bee4380662c31d7f3ad0db9205000d6c1b71b1b1bafab45bc5a14f9779ffeda2e4fd3cc442785cb67256328798a0ca831e45dbcd35fab98afe2454852c76b7aa56978087cb473a782bcff639e9582f4de6cb4da2c8a23b6c8e66c2a78aae36ef6d7d813d6e02ccae603d3aed95f6bbd6d0414e366ac90e016461a5cb75507eb10068f0a5431c05d992a17e0ef0ffa4dd9d319709666e9bad529e09d5ea3a27407f439cf3c4e83f2879704ef5106ef53713a0e92daf22bb883a5de8c563fb0ca353f568ebb0e2837e486a9f56de83ebefcf68c3137e00a5df201bb63a884b963c36c3ae5ec8e7d7ffcbe4ff38f6af27bcdeeee9825c62de7e7b367cecf8ddb91188d08337bf2646647027cc91ae298569b1b6e9c6529de49ae540b4416794a0df99fa7c4207a93659d3f753b1ff23c8f257342b2b987cd9bf824adea48180960b2cdacbfaf6b30543340c2bfffa9b19a5ee89d30e45f6c5b573626071a11699d2e506b50b1cd1fcefbfdb964a9f0cfd6c67abf3fdfdfdfdfbff8a64eb3e6eb4894aade3f98dced54a3501bea34b7a15da576937dbcacd92e763db48997da808fa886f8f1634ca8ec69a4d8605e82f5e1619c8a33c819c131a71b76f71d9c259b236fe3c819337960975ccce1a1c9cc913594a90804e8870b1a5f7cb5801b911958900573966224aefa856e331143f60bce4649c631605796ab8c842c12338151a1c1254ca8aa9118c6539eb059060f15f02241ac650ed2b2c7185b7fdbdcb83bdf5c7f7d71beb1fefae29b167c84c7b95ef563b3dfefc09f4f5a6f9bcdbd3bd16a3eb95b6fbdd56575e4e6c97f6a26c1277a372806ae4c786cdb82594684f8212e6064c409b572f43f7b4e8ffef52f23da10bc5714dec617c0f30e86ef242c23207dbbcd9ebfac64a85e6ed8d55f5389cf15c951691233732823988dde6a2285e7794ab91f59024900ef20ef47002780f766e9acac30c72fe81c9b9725bdd6c4d375c585fc8df17fe11ef89b1b9b743c7b4cfcb3230ac818cf9eba52c573f74c7ea249ff0be6cc1ca05f3e799f834c580f983e0c82fd00eb919283af63cecb18333546bba931af547b450e50f25ecc6c53fb94e5cd81cf01576378b57c2dc0091d225bc63b245762ebec35fea25646ab2fbc3eac6b3b7b43baf1928b3942d42a97e05a6ee6f13229148cb3f20b7859e07056761dab4861fdb5e6f9dff1a518c5b11dfce7ddc55d531635e7f298e4eba39df5fd8b9f9f7dbe3bc7caddc128cdcb8b56abf54d7fad8e7e3c35c23f23aff954e4441d1c4ee6e95550be257466434168238a4663e9b549fb7f62664c2dcf2de39520ebc98b49bd54b79adaa0db65bb4906894cffcbdcb603fcd05108e1b09e6c53a6616786708e379ec627f0a404164c15061554966b9318b3adc28faf1ef64b542c5f2d20109d505c4ee294690f822f950bf00fe7b615baf06eb9a74fbfffa52b01e15adedcc3b9aa4762cd3b360b681d1d6c1afdb5c61bfa45dff5bcf6cf5ed6b4efaed4fcf5565df7fd7e7f3508af6a210c560260b5fb5508a3d5206c6ed44248578450bb0cfd7c45082f6a21942b427097b2db65731762ce34a9813b7b6cf6c6522546bb964a4159bdf4f3d3e59f9fb55ace38d4a6d3487ecb36bca069ab7189469549a0d994491fd8630df684558ca6c81676d920f9f5bcc244f0bfcfee40ccfa058dbcd41f2e04aa197a76cf8aab18d5ce827f2d03adcc0dc80766526aadd4aaf3e028a82aeaabfa93dbd53eadb4c41fd3521db822523250a75123228193c997094af2ff9afdb5b7fdb5b74d9c0ef97f772025bd7db48d3f5b775a9cba40d168ad5e3c0a3dda8465a4b0a6787551e9e9d78a4a39bff9ebaf262d85c49db33c9e2562dd483dc6f6b022f9d4bc96799ad67beb859ed6cca87f11618a1a858744aaaab14ebbc649aaa9116bfd72d2d6173e68fd8b65b287f780dfe83d40e20d7a1c3c08bc6dd977362691887fe94d794fbda7ffe4e68530a630142b4e858fdca50795b730d5c7ac5fe324dbcdd26b9197051b65f39c4dc42dd7ca733957c6e73f4e4b31d6c93d8c0b229e7bd6f4bdc3f6692e242a0836361a6df3ff470dd4b52b0f43e0789bcf31a541b0d1081b99c7d5ade7cfed996a5278b2548c31cdb07a57c852ed6d1c8f188711c143bf7a33f7ecc6e5ff93884f45aa5c27d34c797ea8a7dbad89b86d5a2cd6376d0fca07321e4ee0d1bb50d9d38b790291c58e4fb40b098103c3e74901799a34ee3596077652789b0dda6cd86691eb936000f316fbf65bb6b9c5ee6cd900ca5ed1a221143da345511d71704919840b9719b8226baa009114dd631b1b0d9513b0601b6dd6786d7fbec60a3bb66453d6d827bf9f6315ee5519f9559c7527cb109c3c3a3174c2b855d771d4d5b1b78cb37559d6eda2a911633dacf7e2b9a9f77243d57bfe1c6dfbf649bdd72f4dbdcd8d2d55f1d54b5991af8fb0e2fa66509a4c194f66130e1131e2217b828edbc530cb559e724fb4b4e47bfe6967fd7f2161f8a78df5d7eaefda0750c7e2ea9fd1a67db19d81ab6eb35262481e945203e9e00bd56744bff29cddddc9e9ff64b467012dadaaa3d65cd7c245d7b55e6fa85a3bebff4b6be192eb5a9b5b5b2d5ced9f642573a478ec3cacf5b7e2ded1cefbbd5f42b5ff6f165dc0f5712c0430578e69f8c1494c87f84187a9331bcc9164b991d457efc70aae5de0ae5f75e8ec76d93b1549bc0f2eacbb1f9527a62ec67ac71ff64e76ce0e8e8f3ebddbdb3f383a907ff658e35867657f2746710aab84f5ffba7372b0f3fde19e5bfdaf3c8ff920117eedd3bdc3bd5d807eba27fb3e158980ed7d2ab4a7e9c1dee1bb1e6becc7228994fbebc90f1ad71d95e2d48c693fe763486e086d4f767e90153f190f5bfdf91472fb6ad7d6c383a3bd4fba32b8b94ae2d475151e1a96332e5dc71f57b7cb40e62ae8949079f09c6aa16ec0b396947beeb5e4cbf7c7c7877b3b121b15b5887c3bfa787828977d9e24a474efe8e3fb1e6beca5f329293d3c38951d1fc605edf7f8fbffdcdb95e5485f952f9ff402e177b24c92c26047c4d7380fef0e4ee462ff554e84f962ea9e61125c24d5779fcefee78326d8487eb238ea4f1251fbe5e8f8e8931cad6998a572d4b682ea829d2e8a524c995d31e8f474f7cf7bef77dcc53d1d4ec494fb4b6b3784eca96657c89e02340108547ade39dc3909003b1df284e721486ae603fdc31a849ac02a79b42b97caaf7770f4e1e3d9a7bfee1c7ef4401fa4b339ae7eb5c9d9dec9feceee5e00a10329b78ff8508470fa78149ec58f69cd0c4aba0dd497745c5b3d301443f7e1c1d7ce2e4c41fd14537af717d990be0bd1d4afa31545ac7b260a19a1d5bdff3edb3b3aa5a46aaab940fcd696de5c109adc3c30743e68033b135e038f20681b871ebc66841c6813430d5e754b0cb4b6a6850a4afecaba58390b6bdb7e593002137f8e9eded9c83fbcff6f926322b3214c9a13374c039163cc6638b4c978c242cd09a6cef537d97f7ddc3bf99f1e6bc0bfb8eeef3f9eeda8bda6ff54c7e9c7ef4f774f0e3e685e4b7e7a7287fc77a908502df5aa5be9c32da9153fdc92a57255b574f5d34e8e1bfe5053028c010ae51ffef10f7fd41f265e912ba9b97503a51ee38049507f13e620b9c191a9ada598a38fef7d7eaf8af14795030078fb9356080c2dfce10b79c33d1be1df8c27982ceb10292394631d3e0432ac7f61903515fbccc64a43acbe2e101b894dd4b696696d27d00be90a34c70e00b889d90a1096c6a9506571b676e47fa3b1de7675ec4a68a4027cb13203ff993c4bd0b724670331e1d73198d7b8bc59078bd3d9c78d8e55b62b20985b0a492adfd1f452ec6c926737851b0b1114903476218b6b1c8e2a99286567cb22a5c197e3c18f6c9ba93cc13a40c4f6366ba092b6f1ffb1f7366c6d1c59c2e85fa9f0eeb5a558483899cc64e4255e0c72cc1a030b729cacf115adee12ead0ead674b7c09ad8f7b7dfa7cea9efae6ab50013cf3bcc3e1ba3eafa3c75ead4a9f3499e83908167661761e3fb8e0c012dd5a1c8159d4d7843a56c430134c82dd8e5cf6322be5914320eae0c5d7742431a5fd148d7d6705c566389548a5a6c0611bead1a30ee68fcbb84042478ff6cc4260388892d694957b5cfd58de5126c2d16a5da6cd4b3b7e8c72e397fff97ef3e9cb73b9a3312634f268832281fd664a037de7f4316cd739c7285579965098fd895c17b8992c55c65d0e00f674e719225a3791870302571912532595a88396a64b85f99194da389bb595ac48cf2e14e0a6a8cd26ca9126044262e971251fb0882977936db391db6da2b301a55915f1cad6f8a4a685069446131e20eb62b76806a550790732711edc0debe41af03d1ab1eee6a7dbc050e86a3ed7e5a7eb30a711970ff3cbc0501c69f8bb60c004db1964df7ff06a4e5f199e59a4e28c408846c47d2b3772d6c653d7ab547a0be48e84719db146e4d2845cc84241ed5806af011f415b6e58a88db583bc7c39d370363924634312567c752114d4c059f537928faec3f62000c5b77266287415073a138e48e9f187f92e48b84ca3c3ee24622054a6bbb3aab213ff6b567c713a76ba8e376b3e2a6ca284c2ac8a717004286cdd71aa9374f9fcc8274e944244e50d44c6dccf0400e53b448c869cb973d913e1410b249061f6988713dd567f991612dbed36a3f4ab1841f94b2b9014c884645e9a507ab2423248c68358077f5e87e4458513efec782e6cbc77db370b628916fb5ca8bc5588691b6bf4d848c5d33d2d3591f17dcd4b9b6c60119586574106bd9a5ec88db65b1904dd91f16a963e6ecad57ed61be28ed42c9d7fbd6e8da7edf1a211d41b4ba27892b2d23bc819d7bda8d153cb04ddb76da6fb02395def75408715ecbd96b3d0c2c5b11e5efe6e4885d33d48ea2437325bf55d539deb3560387aff8d499507780c28778ab0e6a1572778e79b5b36d82224d6f373950e1bcdf1cf310e8b5497405a62833b442a0917d4eaa0ad1e2b9a62e7b5ee9c889847e90acba46eb31d4b70f1221b55bd7a5209639373231c1be405ff909735f5453c85c5521d327ef55324e494fcde24283571fa1a38390834556f75fe72238b9f67c97ab107ca6b1a32d2b78245bd84a089b3400d8c7ed0a8fe830afa8723d35f0d7a02fffeca811fbf05fc9323ac0ce1f82952f2634f51d413e4416980f479196699dad6acc7799a7ac4fb214028e03d6114125894e16571f2b6d7bd58192a01caec3b89f69d136cd1e2c6aefa4f57cf779f13323a692e30a10d5e517ab85fb7210ad8cafab696bc78288751d3bd087f449cb51fe84b4bd5be24742c310ce7dd878a4cc3679ee7907a8509aeeb1aa754fd82bf7fd87554b257d5948fa52fd1f2c1254a5eb24ff3d7bf4971f9cd1173cd3bafd93c9a13fb2e8814504ccc3c9d8e83e69d51e00088929e436ae077a5bbdd72460fafc501d01120689efe50ed130d9be7a455698ccbb7ad134205ad0745d32a46df77f08ebabfafd6cbc8bb560c670b62b440462bb8d4bc0be75d65db14ebb499ffca10a9e00dbe75ebd83e2df028f0d3b32fb9af13eff55044f6346d52a2737078af6f200839bca5b034dd164b1697bb61a7ccda9202a9de5611143880e3822c0249def2af842fa64278983e239e03611f67735cceb7329d58486a48f2dfbdea5e933588d1282e33acab17b0f17c5aa05ac828f4d6b446f9096c9ab3ae0236ae33f6bc0d019de11bca6ddc52aae0fd4d11d6d1a7dfcc7c7de0562a3f836cb8d737268b7e4e86adf1402ff5c04a04aa61b1f38b9207e8f028f210adf3fc7c23a0ea30291b880461a0ec6259d916df1412c047e88d6c482efb33b644ed8f00d3911b970090c3c74a85c13e058098bb54fa10fe71b7008f5045ed88cf89f2f3c4d6eade6aa2952d9f030b6f8f6b79573319e6b982f6c0d1e0b268b3a4993c15ab1eca6e2116962ed948eec66794e8b790699293232cecaa975d581118b79cdc9983c3c1f2bbf70cc667dd2ed766521e0b376e79ca9906846cfd88af19dbb591a01db7c03418b7d59de8e57e337b13c39d3a0302628df94e23a7a4d97d7592edf5b8fb3f4715b3774a874f0e89187da9872871ab18e65ab66896d0ca0549176fd1b640d898cf758597673da1b4502a65f85f57375f222fdbd7fa327c33dc839aa92568dc514625af39864a979006af11f35e04675bc3d003a2b4fc80d5ea788eb368e4b8933869d1a7c9cd33c660541428ac51c35da90a86b827603e2c55a0885fd4412aa701aa417e85dd0eb61da9d3c98cd829c64130740fbbca21fa24ef1ed1a6016271741c1f5df5daaad510c27462ad63ab40e516cc3837b0b3960e5acb5dc3bcba857c77dea6e4340be9404d8cf837ba1dd08d67706acaf8b2e714613fe11115dcfb3f47c25e5a81847a803a269c5d0fc8441c5b4df73697c2ab17aabac6963ae875ba5b9581ee4a905a72d69f1fbff8f178983a3bdf1913f53b200e9ec258b34372f59a6fb77c942e9dba58c0d847f8b2c913e5d3ae78fda50e5d5a57f83effa704aa07e5ee60b7a4ece01a5ce6565390dd227e7e92249d427399f0a5a40571dd117c972ada947665665edabef3461515355790909bc4a9d68cadd1d896a6cf138cc8301d41edf94b1571ebece7e10fc4d7bda3f1cca5e706d3c496eab1275450b8a617048c38efae0b512729d7b65292408a4738ae8be78ab4942175f789adc9bd2bd5f7ace52d7a6e1d134b0d0bb65e0772b3a5159823552c6cec063f2e913a97c8153f1d80884e203a80ba40650b9936847ff5c05ac3623a3663d94c57d49cc6829957ed9d1bea3e51cbe3d38b8e90c9569c38dd07370f8f6cd17c64e9e4f58479b6f4c2a57454a4b9be05aae8a64dfc49ca622717660fd2a92eb06b15f8a8f21a10cc14715b010a94ccf7e6be5a836c24bb99918cbecd16b235b11a59862f65a9d931b8a507dfd1ea5e1b5c670a94bbdca7a900fdadfc6edfe84f8c57eae5bad99ecaf46322a6e7e6bf9f59870b07f3ad4f1a0e813af0687a793b3a5a33209dcfa96041a4f5401ed1fa8d3e27f6b4eef0ac07ea597fbba6f62aba3015976c97eb7dca6526a5a0ede42511ebf510938c671c04d583f753b30f0c1ff269a331da437935ed7acfe2b9064eb61136e2acd16cbb95bc1ae7a36baedba6d5305d2576512fbfdc6c99547697553d44b966ca34ee34c8ba7e31468ee0c95385335efce17c5b4658e6b0feb7a21aa1e2ca36eb94eb9f4ffb234a002027e030eef4c6e294ede19ae4039197da089c261a5a6f0cb201f7acfb8f00eedb9d47b571745cad7ad51a0c5fed036c3eb05631ba4342312dc4be46c1dfdb1bcae34efc326ee2b2b10405d75cf8c4e5d22421941c510daa1ebd03ab2314389ad2fc29652d9f9329a016ae7f0e7466a0a23eccb2d97645082aa13905c18bf8feaddab2afa849bab0b55409c3bb0db59e73ceabe2cbe93695bed6b27d58e9f63f8b4388a1dd1500c858467906a941c4bbae5f9e8894d23bf3bc2d01822366fb79e28311e9fb01ad70722025ebc09d2a5eecf44c6f4224e41cf0139a2a4b926e85673fa8f459c53129024cb2e83290dc0b71190ef12c5cbc274d5eda2419e8bb0a8a27dab4dfa1e0b72bd47d7730c348eb6b383d1c8eded60bbf35832180bb76c318ccffdc7eea58a3cbe9e4c972117bfddac1f879b91d999072f7dfd59de49665f0e1cf6f5633a34594e3f1574f7afce7081b257e6391abede56fa4e394886796f5623cd56cd977564743cdbdd47a481bd1d4820dae4d3279f459426a868db4e84ea48f76d5d80c7f7cf3dc5351db13cb24d80a16ede681d3fd227785e1d06cdec99ec8e8b566b1fea3ee037d526736aa26c2e8ca7469d01b06c91e98b60ad9a18957a56ee7a28af908dd901ea1cca3ff5b7ed000253ee5bbf6fe56161ecbded7bb1da5cc0d3d75a1c7873b79ca68f76db9fdcc9cb36f0c4b162c7ad76c7a930accd0d8d1d5718785ecbe3fe9ce025482c93a9950e0735b763b30dd219936d1f99aa3db47079b71b0966d63fd43567cd159251ba29c815f4f51f3e594eed015d532ae6e182f5cde645a57035d4987dc958142ebf13b4ef2e54f77ec4a8b9c2ef073180176b8e1692e59268e102caed9089b54041a9a86dc3b3190d71069fbc21eaa975f7b5bf9be0a510f9e2bfeb22ab0bbada932d56cfcff347e7cf1d121d67078f1a5c2b35fbaae9aaf8fd2d058c55b1848d706aca8f8d2c2da23e497802c96036a77981b15fa4d86685b063e7cdb1627df5d48d30514d9459310092f916b888b4f1703cfcf701bd08c2a5614ec7defea77b07cff99653dd3e0da23a629bd3bd03f726d51b9e7a042d85c3d3a430eeb33f8815aeb68e77f49c3cf99c5eb1ecaa619eb9f0c16c5e2e710cff7aa5bbc3a347d5c7b4536dc9d940b1fd6ee5b4bb94831210ba62f4b4ca1ba3091b6b01dfc5be3abc10ac561a0930d813538eae5d40d265b239cf620df9856ea526974e905fc8ab402c6e8f4e8abbe04bbd82e23b6482ec809737bc8334750283888fdfbd1b2ec98144e007e40a5eddc41748db2ff59afea6de8fc77e563b0f6513376463d22ebf1febd275acb1f6c4ddd61fd918f04f3a685fe60069105957c3c33d92954a52eb4b0c5eb12ab1e34ddcd10976c772bfe139ae9e58c35d5bff75a747da230df561b664737dafdd359e39f582d8fb79e92869f1977a05dfd1c3c59b05e04b3c9b6ff73c7108c57de804c2752f2a41476fe86c4c414a52f851c92f87bf1f344225c1974421f1a852cbd500d308839ce920be04f694280c2d6f2203b557a621ce3639ffe47ccd56da7c6af092f58070ad576cc33bcaf58e9dc773bac613f678ff78709f6f5818afe16bb2aabcf29d7688dfee3becd28ba1d1dde1d598ddcf790765de973cee3cbbc5b65aad0d9b4667de95d1e54b1c7961448affae7be85dcb03998423934c9d5ca2064c0df4896b3ed91d736bf86c77b4b4350acaa5c7fd6070fafdac86cb57f170bf23eedb997de84fd52178d5ef7e667abe28bd0411ba5b879bae57fedf173f3d5f94f7c84b3b81d490a1f627a3fafa786ae73a8146ba652f7e225907b1bba7925e214b0d7d7484d9ad58bd19c19aa5d19b512afb72f752c9c6e5b06aab7e7327d8aadab4553f553267ad61d1e6b769b30311ab536e59a25564e45f8989992392b2dd49330bb3951d3533305bd9cd7af6652bbb6b665eb6b29b26d6650d96d6dcb8ac3602f6daf660a6dd53e5c06e120ccc7d0b23a8069dacb095f21fb5f54ca5788cf17ac38cbbb7a6ba1372be86b99520ec82c868ce2309cf04bdbd4db6c8a347d65c8dcf378842e0b5ed922909efdfb4cb41a6b4cb48e2658d1951032ba27b45d02f6839b40263ee08251c593aefcbc4c84fdfeec0ace8b63daed5be8109d33d62e5bfb8d992c07b35af0aa5ac21a238cadd9f146752d7afce22cac9735549ecfaeaab757b68a6edbac743f17569b81a70035f0a917d6993ff4c0d590daaaea71a5ba7f56a2dda3da2e757a3396b8099e597614f5d89b9ef5df15679245631726df5cd1a1dac54f4dc234a7e55ca9d0668c9131ddf395e3a32c0ff09ca219fdcc175b9af2d4e5fa78ba692f77bbddbbf2a69fb9f7ab9dbd2fc3ff37e77b84dfa74402a71b91df04237d4d5839d8afcd5fec797df6bf37e9440caadb48115a188ae71b736bf9e88ced88d48115f3d0512b68d544832eec79732e39513edab3f6f8c8b726d1a2a82454da5463562806afbc95dbd1e0f6db04a4f01af5dcc5a5631d55d959247652a233fbb62d788091a4633373499d150468e29b6c4bd23ee44a6de5dd1221ab8ea203be7ef47861ae51d9effcfdbc1c96fe7e2d79bb74370b29405a76f5f9cee9eec1f1b8560bdae7e5523f556bf61a073596e45133f3754769ee555a68e925d355590eac99f781d9873764d51e40b707d93af465902ecbafcc59824e307da2468edd5c564153ae7d3ec20ad45cefd54555cd895febbd3a038ba4e8ff36c4ef372d9625d70259f6d7fcff3bcacd4fa208112215276b35c0546b1136d177a10941318a680681b1c0b32e0b53a6451d088941989239a96f16489d1569220a424c6e302490f30ad362416c704d91109c805e447079844bcc3ae0bfe368945ad95e6ad8010179e4c692640588113bd260759d852bd7484523628cc029ee75b8b0ba04dc8ee83a611ff4ba407ff03b7212eba022b547d2c7a266b30a6775bf6c17e3e335b0bfdb1fa61349639faf89f5a6b9ecd5ce52a878d3fcee3b4240129e2d93c8927318dc824cb67e47a4a5312cce734807cf5714afefbf4e8b0c750a31ba7c51cf787fd1f260d1866ec7beb200b3b2a3250cbb460101a6b36f5beb6267e855276918b85c89b93815d858928693e8b535ab0bd66c894d28fa5484d5e906c223189b1058e08349ad24d8b862cae07755895da9dfd61bd803c43439c7d3978479a6842aa7ea8174c4a9a13f4668bd30b7924706072544e697e1d17b4c3eec9342b79207f19b5880261292984bdc1831da498dcdf79581c8c9eb6eafad0d12aa4ad018a15fe7a62cd12f70c2a542cd332f83860f36de9478b4728e5d840ce36069c5891b38d6e98a56150b610a6671b1d32c91629fbd2169f2e28ae9131c538e776dbf616fa3af68c772f336dd4ec9a93bdf99376cf9e7603d8ca73888cffd7731aac97886e29b336484d931c104966661068d310e79ececcd9d9863a37184a989c6db0e23b3c3cf7bdc137383aff3a5b5d7fc05ed1644e7375ad4eb21c3927f0c0e728cf6fec5463f56012118e061dc505a169982dd292e61e085619c5c0e0b174c0f12fe4d3275f70bfc6c8fb564d5aa16e03d454dce83c2b8a789c2c099dcdcb2549e2a264041ef088a459448b0e8904ff1091f152a223aac8d22e194ee3021b42bcb942049c4be847bee66c42b239e201340f408a1eb96b864956504019b283785068a88dc367ea64a9b6786ed807d605db6484966bbf3423213133e1c39e76d414f8ee391802d14a93fa30603902d27e537331a98154926fd68df6b87f69bde60dcc87cabead4db374f3df6b57675f725bcdddf8333679a3b321973a42b97a21de0ae237d9e6163adda028e20ba032ea615106f90555d90118456c810d09d9264f9f9198fca712e171e9f633123f79a2d9c4c2335d3c8a64e5f7f107cd0e53f67b4997ec0d643ce9f07fecaee0139de7599995cb39b59eebdd30489296a07c9774d96e9b991e7035ef2fe9f2837ca0c1af67aad667f127ff43263a10770af4f1ecac1aee5c40b41bcce7c9b2c55e581db5e0762502e0089fdfefe2729a2d4abe88981607595650b90cfa314c16118db4b7b780e636491749d296cfbecf4af70b9324db7a19b67a4d97da965fd265d1d29fdd7c0f3a24e66b839d61bbbd85bbad7a716e37dbbf6dad126eb3d83fb1966e9c46f4e3d1a4c5f688fc04ca90304bcb38e501fc576d95e59c27b6048ae319445ff9832c0aba33cf9224db4d629a96e43399e4d98c3ceef678719696f463f9f85935d4eea2a06f788efb964876df21a392cee6dafd3ccae9846c6331b226591c912df29cfcf199f4b15c060aceae689ec711e593d986d6dd107ec94ae3a0a04812d826d523086bdf21efcf36b08fb38d0f6d2da87f2886b1a0d032e76148fad5b1e7621d5b96839d760122b425298a3c6302547df9173f431d7d658c6862f76d798c1e48d503a9faf7265583c94408774fd8c15e14f4141e65826ce534088158dd84c0f1364158be0ac24b590f8ce4d220e9f10f46f7d9f8f761f69a2eb57e17659c141e8279ba182b5de93f16345fde9662a67a977b411908aa59fdb21e99cdd625b1d501d91bff2e482ff82c547a3f0130212ab4e0e468fd8f246a6c4b2c69496d1fe813fb60ce00e8a73253e6b458240012d1eafdd6072dcd657902155e0405352a3d15e4cf39cf6eb8c8735c6ff5bb3899024de420ad945ee35f7ab8801d3265d859668491843c8ec809437a721de4699c5e14245a8094bca4455974b119c7dc5645185e599436a6f0da31b86779085d7d319a20941dc5658cd80b36236a343ce3cf2c620c044d830bd916f7282f1deb57e967793b7654c7709afaf88f98795b6baee6cbde42165cf9ab44ac5dcfdf40481494419fa856dd483f4c04451ed594c506aa41122979153dabc0de84bbf80c00ad4328e342acadd9326e4e046e9f58671ea664f5d15760d16ed5f633fb5ed5552d0011178ae9b33061d3b1e19dd7c11afe9133b050d5c1ab359e8b2009d62275a07417a9c22a39341e920e79cfa9ba209f8f1ec93b42728c1f0c8e1217caf9bb9ec8e43e5fe6f1c5b424df6d3dfd911c07499096714e86349ca659925dc4b4e890fd34ec929d242150b5603dd1fc8a0bd3a09f8338a4694123404e7cf0efcc83704ac5970ef985e66032f75d778bb45885b30dfeed6c03e6f92d59660b320b9620165d1414f46264c29ee8f46348e790423ecc66f3240ed290a2a4a25463c074c86fbc936c5c06714a021266f3a5507bf09a245069b0d9ffa66539eff77ad7d7d7dd00a6ddcdf28b5e82958bdec1feeee0f074b0f95d774b367b9b26b428441e86888c9784f16f71188c134a92e09a6439092e72cad5c329b9cee3324e2f3aa4c826e5759063f098282eca3c1e2f4a0378629e71615400d91739dbd83925fba7671be4c5cee9fe6907fa79b73f7c75f47648deed9c9cec1c0ef707a7e4e884ec1e1dee815eff941cbd243b87bf91d7fb877b1d42e3724a73423fce73b68a2c8780ad31df52724aa9310d113db398d3309ec4214982f462115c5072c1ee5148cd3da7f92c2e0a40c6800b9592781697dc20a6b2382104e23cceb72428485924f178f414799cb30df879b6a118a130098ae23098d1425481929495e8f5a033bcaf783de0d8f42a7f90bdfdd39d170783bd0e79b97f70d021af866f0e46a78383c1eeb0430e764e7e1e74c89bfdc3fd373b0782ed3adbe8767bdd6e2fcc66b32cedc1e0e6c87f90fd304b8dfa7198a5f09fb38d67989b3c2e008fb394ddd571818a684a689a2d2ea65c9bc0ae55729d2d92888c29992f729a2c49192c4a38966190f0342d242eca201d2f12125fa459ce4570285d63970d5b15a67e26db206824ff05d3862a8a728d8ac55c5a73f06de88ee45da87ae9105ed5e62754954ac23a6c41bee14f0f46acb0c8f3e68154a9d3b8d03902d5bdf690cb2960d5b68b04037bc6d85450afcff36c5e68045e621263af82aefca9df0f71c10e738435c42ffd9240472d6410474157fdd62a4de224c1cfec2fed03c308c6e416f855fed4af75f642c1cff0a7f66916a7f12ce03df31fdae7d118bf08fe45bbbd15bf3d36d9fef71f18db3fd6ea4ecb5922a6a87022a745d91a055cdec1e1863cb80012fe52f0c0df0c00f8975c2cfe84c5e19f7c29f883cf55e3e905570fe70eb83741105ac6f16d8d4278c676c8287c2f0e3a7b12ca6d641fd8b96785b033ac004e3d2b4170b3224e0158a100331985ed8e1a5adccde8f2cc66bc3b8d9328077d91e05367c1bc65cb742cb6702e20bd9c5310cf2387babdcd20014fa3b30df25c94f775968c2713c44f55f68f1f4320885db43f1ae0deb4049019c0d516a34c0738603c38fa609774d9c7e24a32dc902f5c7c4f82314d203b8aaaaed81e1f3fe59e67145fb149aaf80e02fe7d810f924374778039f1dd0b159d0af4e893ca79cfe9a4af1d7939983c24dadc668ba48ce7093518f2cfed8e851f5ae3ae005ddb3d7d76abd44d9c9da83e3b81d9629cd0cd30c869b979c51ed0213b4d72b6f2e4b5dbe6991a852ee194a2ba8c716ce1cc8e1739dd15f717f6c265107fe8d7cde7671e46f36f0f8ce603a3f96fc36842955d7e6335e622f7f64f8f0f767e3bdc7933181d9f0c5eeeffeae141e7788d3e13fcdecb2c9ffd9c678bf96dd83dd98997db9335be08b3277bbf1b5e4f5dc78cd513c457ab90a5254dcb5d8b27b44a75c608ac53868cd386aaeab7c1bdb1cb8f736f639ad89f5e66b9f6f56596db15f6d349a6d5603fb52a45b94cf84ce1cf5bdea100b90baa96db52d24ae8bf8fffc89b0497f7e8916728f8ec1b8c1f87eec1ce8b814af2cf2ec39759de97e031c7621c2118437aaef77990ae1a6f38f875387af37638d833bb66a06d7b6eded59c07f29f628c9747276f46bb4787c3c1e1b05341adb61c38544c80c2262f386be6600cfc6a70703c3819b1852a0e45f6dfd6d47cbe73a6e3c09ff5b28ad3244e7907f8b7f1b1e4ea04f691fd6da2be6f4f7e3e397a7bdc91e08ad5c6b4f0ef367b378cc5bb61fc5ed4f4bc1f5405f423619ff964c9686cbf1034d08d3d7b10c5c53c09961c768e1be00923feb23e107db96a59dc905153f784974f7b10083ef069ff3e7c1abe5d464376d43bdadfa31747277b8393c19e51c800c970c02c3d1d9eec1fb33270d9dac184ece4f4cdcec16a11e29f231a1c027ade5232089dd40a06a1c617930b42ef77c22a8eb33ca2b9b899c4aff56eb7304b23247e828dc49feb4a0ec1202040c76c79d9f1029d0f9c0542c2087f1a2c621ecfc53cf88fb5c47b020042c36e08fbe4c2dcd23e6db65800b3e37fe25cd610ecf16369dccf8e33caee60b96b561d79645925b52b562d7e84c17c84438cd5d00e34def36a2bd86738e2d006b6a072ffc3e12e92382dfb9c83d864877193710bfd71b2a0f33c4ecb4db6239bf2fc17960d919b33040f5baff8ce259db224599d9512355b5434f6898ae020ae212942eaf320287a60401e1890fb1314c9b687c1d538c8f7e2ab98414235eba5fa07571bfe72b05ba8778955ff158fad5069c13ffc29fc0f4eed36cc0ff6e0e57cf0f317617bb0eb7b128fade67926f1471a0db3613617ba4ef17b3d75221fdcc96fa83e9bf10de2757eb8f3cb8b9d13cfdbfee5feaf83bdd1f0e818f58072d68e17fcca9b98cb68fc4a9a1a9595844d5b49866a6f5d8e00cd640658990b0c784b71ecb74d32a057e17264fdcceb9fc5a1de360fb92e95c00f0d39027e1e1fd8810776e0811d207f90178bb2ccd28ee3547730941c57d1bca6cba2438eb3395b2bfba3e011d1df967152a83bf7bfe443e3f7a2176639358713ac87937d30abfecf82e6cb83b8288dca6092b899c445897fb20a9a66eaf656482b2c906ceb23a09a7046b76f73e762672311bb036cbd95debd389ad3d4d4f33fd35b0c97731a29786d2bd875b30924496b1bf531fc1fced2f8f00fad8fcac79c4e5e056994d0bc3066c73aeb2b08c1ef564e278641af39704e279a5f0ba050b70826743fbdca2e29c62d6d8d1427810df91b933dfbe70b2104600329035ec909c8956833936595d909a6a902047da29f15e84db0b043ad435fe11ac353bc71d568bd1ea7ed8c60f07ca7c8b1848b7f32dab07c9c53320d72a09910971c88fc054d691e8705698541fa182f87ff1cfec4e821c398382433805bd1d60d7e80251b39793265c135899392e62060d33fab628725579943422ec3968b10308972eb5b4c954c68f606a8cdba0bcdee22219592dbaf7f56c5ac5ae4f230316730e2ece51ce958b547fd03ab4a5d7dd2673a84054e3b2d6a340aea67d90849e8a4dce7d635050df2707ab6a1cd0b623d4db324a239abf112f6a5dbed1a95802fe103f7f996cf82e5989e0082ee2634c891da2bb4445c6fabe343f483a6bbb8f113d7afd202dc1cddfa2fdd8578137da2c69942653824f851abcf0dcbac499d554cb810dcd8d36bbadccbae21ca843506ff62ecaafcf276ee6ef176dec48e4dde7e755bc99e882fb37051549d01683ac9f2907abe0a2aaf5d025d2c7368351db6630c79f152eecbebb9fbe268383c7a333a18bc1c6a9b6ca0bfbecd6eadb302987a96197da8f2b68107fb428299c97521c83924b5efc632e0e36ead061c8d3047c747c747bf0c4eace9d83d98b36220050709c78cf8b74a7d06714f75630bb27417831038abf36f0ab59b5a03b08e3962bb10843cb78e8539fa109c10ab0703fa7c3b5fd5e3db39d13c823434d22fe815a6852b96e43bba7286da64b409681794c832a8fb2e69273d2ee98cddce6dddc945bfc51d90326e727a65ba28f57a100a42e01d8f1293e7d935389ac293021f2bdce115e34040a8070943703c651d77afa771887182c17f75e7e4e4e8dde8ed31e3106b2aec1dbd3b34f818ac3bcfe15f9e91bfa57b61491e9396861fa1498274cf21a783941378fb259d09fe5b831c037d87d8f0f34fc3c1edf239881f36bf68708a59aae6d121fae0b53b5fa548e62260526bcd1fff6db40007c36b92e8b30d8398b283c467d464519ca8190b4ab3889ae85c045794700fbb644926ec96a291d0e190319d402c4b8eef454983a4c05aec354fae290903f0002b59bdb8c423c163b2744db8310c8db345f11207e154826c93280be171d445bd17ff60b911ea70ca6941cb23a0bad4f1e080cfc076b40c2cbed54e7078b25d003036dd03e07c6bb720ccb324215c1fcb7097c4699991ab985ef3383702fe651ea478c7a334889614440e24481212c5330ccd5e9020a7ec79304e68b70a42f5d2f94638ec572028eb7471763b303976c6f6d332fb25a6d76ec8e6f41f0b5a943b693c03e1c7cb3c9851b7d7aefba5e263fa6db63f70b1e80188fa192f06188a11baf0f1315e8a57974e16312191e8b72bb93878cde3eb843de7b557ac0b64c63bb70b436bd0d12338a8d21ba3202ac51b6320673e56a0a038bf08b63203b220a94057ab59c6339a2d4a8670d975a11033c37850321a1306999b6557a2d3a910222049613fbb37c21a9d1638e909db3bc90e3837cadd50dbb9a64dc8b61165eece375cb08e2b765cd13bb796c62bea90c8ad9d774139cf3640e5201326e8c3eadde9ba23ee4687e227f75c7853e9faa1ba5dcb078f7162b3b8e4ae4d523a0bc1c2744d5f8714f39c0611885f199a7735099e577165ca403ca2128b20b929972d5af04a21d8dcea55586a12c20c468c87bff58e0d3d56cde3d62148f4987bc8f969dcbcce75713b6f9b29349d9c2a520489775a3db6e93497950d391b4744cbd8b8823972fbf7e2e8ed3c42c9aa260c66a7992f86fd09dc9c1104a2fa347af4887c23eb6a852bafd475efd3cfb52b73cb768cd5a174c73a6f50283293fc0477a60b1f8462a0e2fd15e65951689227eeb188af062d98cb6e12879772ef043111dba63fd45c3bd84ce778cadded7475e05aae640f6e640feac00775e03d5b07ddbf15ce907e2c77721adc463128faf0aa064585fb510eba797d14ae9b922bed06b25fcf177976fd0b77e04d968ed79f5b4e34a58ce8f509eda2708b5f65afa0d82738f2cd41a80b6adea066c516ad1148f9f851b139f715d8c11f92816b52344eb16a926dba1e358bd65063a36d6e33d631cb6e1390410bb9a0e965d1383b2d2bd11734136d730e158bab3ccbcadd3aab2bc82f73136f2b2b2883fa5009cea03e3531bf0ea2885d20491cc6253f25dc8712c5bf73641320194c41f3cd6231872b062b89ec1b4b423f0287abe16248b635477ea8eef2d30c5dc2905042959d3d0b1904e38a2c2e9f73f5280a928d2361a80832a661c6ee1d08248de900c7b0569a921984438f482b2849428302381576d5d1f49fcb1995dcbdd2cdf47a5c8e380b2e290920934c9652c62a30b806f0c2a37929558362d5ce570a8248a725826a5597cb78c9f94711c1408fc2d5cc3a9e7e2c839c066b19c86baa360dcf75fe992b512bd4dd7c48552888c391b6deb65e92c6663cb7a86e72dda2b421df2d2fe407cefb81f37ee0bc9d5cf4bfa601dee2e28216b7b3c0c32efc2678f8fdcfb1c1f34969c595a904a9d53a4256f4e99365fc81518368b45fd29918e28296fb695cc64172aa7d6db515c34b1eecfffe15edff1a5be535327a1bbb183eb74d5e63a3372f13a92d20920b80a362ce10d17c9b8ca2aa059389ed58492fb957632f580a055f4ba9fad38ced4c28a9728765e0d9c629d8ed81555ed548505f210fe96280e17955f309b9d24f3897dcd26bb7499f9c6d70418a3ead629a5d17b2635420e3c3239b4346147d4ab86463514a965d99eff36a515f1f1be682499b7016708af029c006ef801e100b733a0b20618c301060739d30466b0a3911d512747d633c21bab25f53e976d8459e92691c517d58c6b8c1ba49aba094b84c22da0e90fc8299a7883484b20c1349bf0a8a4f9ffc5609801c8013b6d9e5d763735839a50fa6847f8e29a17a817a42f43534285676a23a5acad0996afffe047bdf2ce5d868188f41ca7db026d26b5a468f17b4344cf4f89c5ac66dd0f69b38eaeddfce2baddfcedb3eab6b9b5a56ed9715f1509b78afd6906b583b2201e31791d34ca0d723d7415c92455ac6093c9490778b0b2e86d14cc4ca8c5344a857b25ee3b460d4389b90b85454ee46b61d4dad6d0a5a22a71c67e909c889b73a4605d827aef8ac37caf1d8374a14adb50cb521dc42d1e0f068ef082ce4ae2949e815cdd983959ffd2ebba68e52444d1c011fb971f11c339829a07c6388c4a19dc0fba6e2fb26669ee2cfb579737eba19763730bb5ccb6614f31a7c2cd9ec6159cf6a40037cc5518a9ddf12b59c865c55586b3bae7f36a64c308b840235a149416f37bd71b2c8fdb3b387071e401b1f24bb9488d4303c35683105ad5b96264b913e1498aa451a666999674902dc995fad6372f95e43ac26786aacc0fb94e803bfebc6e70a907b3d928934a9e4f745519282962abb209876a388f816535df76cdd831db331bfaa55d85d90e8aa9da4cfacd742698988fc9e49339264e905cde545a3cc8ce174637e485c70f56cb837ca635f6e6d927584eec25edb84fcb38677ce5a16dcf0eae02f206eae9df186715a943488d885ac9b65b3ab9b7b0b9049121453566191a27d197f411686d1e7342e304bb192a60a7176ac165c90312daf294d3521a24a397c5cb1612e1cc6c98e9754d548b1de60d96fc0f860047e2f46e05fd0b6d9f3143080abbd42d8e4ab7c5225b90ebd2a2b86e9dcf586d02bee86f3cc361cb79c7306a7bb3bc703f2e913b13e0c775e5834afd965bfe2bab7a8d51d1140bc332bd61a3ac7c90e242ef11bb1c4173bbbaf4f8f7776078e6fe8b474307839f47e3cd9fff9d5d0c9eaac5a8dc9ccd65173b524ddacd31ab47237bb7189ddc9e56dee0d9b79e6fd22fbacf5fcb9c131902fda1587e0ed7c9d237057e07a3bff12c07a3b6f002aaf913a6a921a59a96355d3549537ff1aecd41b843bbe5f1b75334dcb8385ba1f69e4cebf8b93e4848634bea202b626e76eaa927a3db28f9c9729f167a8c1df6c45872cd0e89d5503a577b2647c9ffeb661075cf66ebedb0c071a46b46bea6924c2545698f6ef2e3a6e3ee3dc635419e68650fd9737fcaf2ccdad1af6521df560273f19ef77f293f2843356ed78c1fb5ca9449e5b7733b11ec54be8d2681cfbf466c3385a9ba3d96d357db613be0d3d0eb036377e926df5302e52376e88a00cff08838b32d532fa8347e3d13e1b2e0ef2326ae4e3c04d321e4cad1e4cad1e4cadc81fb6c594cf02ea1ebd2186477b477d4014ca9d1e5ae0c8c0e0cbf620cdae4596e4808c1771129139e377d20bf28f451c5e26cb763347889731d763dc2a738fe8c49fb947d4f8a2465a9a5a6685dfc32a49abeaa243a8df53d7f318919e095ae3d58f0f09a33fdd25e16ede0e061879664803b2aa6a8d174329f31d9566a6a35bb825d43f458c4956bc15d82cd6774c78b97f301871ef849ba57b59c34361ed18b2326dd22d8dd5c503c7a7e406487bc7715a1e38cdde5d48c48e4b1f77996acea8d5f858f215769b9c4eb09f6f8f0f8e76f6705b79af1dc0d77af37a75ce1be6de11f5398fa9b57772990a8e7d866558c8a6c5c0b33bcd32768fc70905cbb40a2b297b6f9ad2475e200fece4033bf9c04ede904b1c24f40a95676ee6908aef7794b17137c8a3dbb07cacbd97db631fbf48007ad6f17d714712e2325b0efe5c3f59ceda9c8ab6d995a436eb04a1dfdd39d9f3f01bf5a965daca8752ce05dd28e5cf3f29507dedcd0ae8d1ec526555f97d8aad9c57a95c6d5f1dd0eeff0e4e8e3ae2aa9560f3896658ef0daf5238930fb7e8c32dfa708bc2d5f6cbfedee064650abb7fadc0133201c6cdaf5ede85f7f6e5dfbfc805ccfbbeaf3b58783e95c185f56588250e8f277ed3d86e4f6b5fc27ccc66372e47d6f5ee44be869b3dbb1dc9d2d44528b6a9d95da8a75c92135699599a5c5d329d93eff6fae1e1f67ab8bdfe8d6eaf9d715132ced038349edb2870d5fd5392b4f5be45043cdfcd92249817f41c8c6bc794e1589682ff46117f446b81a24368ba98d13c60e833a5393f24efc09e741aa41760503aa5e41c55e3e7608900ce796492254976cd2a4c83f99ca605dabd50de751f7ac266db7f94f9827e26a44f760f8e4e077b64f32772743c381c9d0e774e86e2d7fee1cfe24fa331b0e59f491fbeb01aac93fdc39f556b5e20fe843ced786373fac6c8be348106653f6a1e344368eb33bf02119e847c4b86534ac659b464a72ea79bdc5024ea88a030e0e3580a20cc68502ce0e4b326bc0a223eebac149dfda6b5db42eb0d367162cff6bdfdfb6c4301f06c83bd00b7d87fcce267e612641f18cfb570cc9df1435d321436c149420268c4161aa48cc6f0be84756a47edb9b05061fdb059a8e5345fd0fee1cfb89aa76a3550f6acba1b214771f72a70be6e40935601dbc43b1301b1f94929284dd9794db37c1624ed9b2c03d7f09d5a43650118598b4c83828ca9386e34c2e3cde65fc124be4a7e57c1a2ca8cf736cfe93cc8152956917ac58ec7a93825ebaec7386db8b0ef7161d617f70a75b057772428c9262eac4b5e64e5942fafa0223450cc39a46fc1e419cca327593e13f8086ec26842cd3ad6d65bb8505420af4254a41737840942e32f06343ca80ac1ab0ab17b1275c129a2248a9a946ec4deea0828d48090a37550f21a6599cd0c7cc1dabf6d6fad8dd49cacc27a7f50eb65458cc16cdbe413fca7edb26df287085c04124cb1ccdb4831791f7e4926af70bfb1450263e5a6cbaef442b7c0d385ebad5f294638cb8790887975b6b1a5025c7d469b03462eb282a153c8e8599aa59b5b02895a19e38a03f153121e495f3601cf947b68dab674f3d8709b6c59ab17c87d222d2b4dad7d5271a594c7619bd0c472f9a3498dd7829c83d94f374c629a9648711ae7c6f8829ba46f9431733b2e597d2e0e9fa18140ea3b3039b52cf8f8bae14048a3cd8a7d38023fa1413ec490f1666475cbd6d28433f4ed061f9863d60c5b636f5add4dd710f2b2726e54f37db28c1f1b2f1390c7b0b9bddb356abc5f1d7e1912f72a2aad1208c5c52e9ebb5f628c0e68580a37deed67aa47744de591af555ee1ca409cfa725cbda4742e6abfc1d8845a9f5c72f22e2ea743c135b8fa34a325369cfdfee1cfcf7480ec2ccaec95a04d65251ae1f636bb301957c7b9032e88cad23288539a9ff2b0877fd844be32dbe78edef50449d2eae28ae69324bbfead6fceee3939dbb8c2be40c2566da93cd01c4dd32cb5da2992a5af8a11e5caa224f3d6776f0e1b00ea2441497f6b6db56124a36cf36c833c711cd4b6663072ab05ac7256e09ee8cab3c32bd9b314794707073bc7a7830e311cda2b214878a8471333a416ad59e40987b58b187ef4e268ef37875344f50a77cd48eeaafc78b611e471b0398da388a6671b7df28df77c79cfac5c9d930a3c3700264afbc8209832d3ba5b712f8e60383755832120aa0efa1568b799f37e6ce201d18456ebd26dc9d621999034bbedb181bff1c0524262f5bf06281dde174ef6da6095252425f7a7b997fbd939a0c15b36c4a706b1f5f18144f748abbfaeb7fd941e6f54c79e73e6c7e74d6f84a0bb15d3e264578c07807dd3ab3f6f32d92cdda349b0a4114c83c7e8d663f2e98752d1dbbd458e9605b707bde264eeeaac99606cc2f37d3540ac3d97ae61dc27b3b88ecb705ab313da5ac2a0a03e30f6ef8c57f5e0b549012dc7df714e834bedb1e19c293f377733539360ae980e3743e9576bf837b3a1c10baf2e8c5e646bb7a79220d77da14f15162fbaaf382f73dcca66852a7af6c9775b5b67155b193e29503a3a3528b6c58c900179f58e7f7dd03b3ee81dbf4abd234454a324a510c76646099dcdcb259a944d8210e5cbc534bb268b3903759485c559daeb91573bbbafd9fff7b9a85b9ed5420469ba80bd29e83cc8d90dc9b00d9bb2b1d3b2cf4de1c92cf8b8c955879b739a6f025aa6d926cc6453ce841db9afc54ef6064a4dd956f9ed78da2cca383115a1f89c0065c00c82aa80abac50f9141d3caf411401750b12eecc5f66245c1465368bff49d911a241ce4e3722e2b06270c46803d2341a81883e2e30d01604398a538d6830ac3ddf9dd2f0729c7d3cef90f393208ab37354679c9fc21d7d4ec634c9aebb528d89e2729cfab62edc86a2d628e05737ab1724f145ba9f46711894598ee6376699bc7643256b1905f275d5a93c247df63db1e871d7e8a852ac3548e2549adab2bfb54fb55954c0c34538188d69627e50291bc5775ea255f33828c9441b819583a3c40012a3a0cbfe328a774dc01845b2a2cff4a9cef089fbf198a64fab0d9fcced45eb27b19bfc97691a55d92151ccb6c495f9453a18f13f3978aba960405e81e657cbb9f6d7ee2adbacd5b6d04787c393a3838eb9031dd28268d8601d1d3abdb1549215cd2f2bd40ca90ff60fb90d3560a4feb1e29b156a96d500f6994c5063ee42d5bcba892199f433b7cdc43836d8a940bc42a17a4fadaa699a2bf3087a64c13ea6eb385c390550b079a3fdc3bdfddd9de1d1099f7c0511db1d3cd11de3607724a9d2d10522987f56890af07d739b3c05d0833f4d017cfe226699d8f59d5865c6694af303063cb865841368a5d8d9c4aeab5b7be265534f892aa30862228a2bd698f82a856f059c4139954f9f1c6b794ede3793825ed225e4b694d3a8158f5ad839da7db57fb0777bb9ebe9bbfde1eeabd1fee1e1e064341cfcaabc0c5d2bab96f5b5b2e6a187f9d217e9d7bff876fb0317e6ae16c0736ec743d274f4d4e625bc4a43ce71e98a02fd1eb1a7ede771fa06caf235d92181f038370c400295ad94a750d6341c08123e450981a5bc0d21840ebc7410be7e1132083d37a48237c6148d6a56f1246733588d24273b7bfb47eebdc73534dbfa131ccd600f5851c38dc77d56fb2e9e15b7b2a8e17df82d6a78857bced69346b4648ff9b46aaba17f62fd8daa4185f6ed3a5aa8c4e67937afecd8d5e6d018509227d0343e81ac80c7edc2a5c5b3198de2a0a4c9125f8af1c488e4e40fc36c8de9b595f1843536e168fc74ab12ccc8ca10429ebd61f19d8c96745d1224d7c1b220313ece1182b9114dda1baa4306dab85a15595cbd10d59e98797ffc3989ea427e308e57cf3ad4c000879f813b61d89c288a813b1c5f0cb6add222f6546dc4bcb98693ef45bda85974bf1bddd72a4d8563e7d7caa5b8fecdbffb6ab0fbfac5d1af6ebaeed8f3664657523ae3a619f6ae610ea085082b09918239cd98e891dfc64baca12bd9ccbe3d61eb5c84a10959f0a88a6bc0d240eb8e44d140b95673b8afd045df7c044723f71052b5e98bf6ab3eda945b37e53131a00ecc0d954512e90df50c2f6deace2cd88907a7b007e5ccbf9872e61e9dc2a440b0d358b961f57a3038198edeed9c1c8e76770e770707238c373e7a3df8ade3f87af47678babf3718ed1eecefbe7655383e393a3ef5c521c9f32cbfb95e45b679b1284b2bd8c9188af83fb6da270e92ecc2a81e4111ffc7acbd1f5a5dc76196c27fb408283b09cd6f15f50e3af0be73e0eb3d44bbdb659429a9796818562522a9cb2bde3649c6417859b4505bbf9a89decdd2499ccf6e3b1c443e758fe6e399019e77e3771ea483220ce6f4355d4ae88d826eb5dc6c74b4288b38a2bb491c5e5aedaa9ff4a6f56ab2468ef00c7739b3175642d008cd15fe6d4e3aa4091eb5a18ca367979a7c3edbde4a0bbbd84cf606a938787c3ff8a17fbea279122c5778de5720cfd54e2ec836d14f857ae81ca167b2d7cd4bedb5892080b092a68f15a44f9eb78a0e83c626bf409675259012c2ead0c2a8c035a86bc35036a8c1d94c441baed019598551da20d91586c67ddd1acdfa26de43b79005e31df5e268efb75ab932a3fbfa633004236efdc0b01fa7f13f699ffc654b93d19660e9c491e5aea6bb7b74381c1c0e4fe594a512eaf67dbf3c3a1a0e4e6a8181186dbc8df565aad72c4406f41f71860c7178692203d656a0aa509a478f9a4d8a8fee2349cec1910c8857b6f918b3af89ab2089d95bacfaae9e571c99a44809099aba9db9f978859af21aec22578df9cdc05f72ba516496165942bbd7419eb63c5c57c5f615931e17d8abf28fb34613a6d09f3e117311dfc8b4ddf6321db7e0a347e41b7bace6f3574ca7d380578eeab8466f37b0c1cf3a850c365278d812033df881a011f229cd580bb5fdfc36b4798155b765aa182cac803ff9a23429a49c1e79aeb5eacb1918dc95d64e8c49acf5390e91c732b48237a6ada77387ad2a36ade993b38da3d76e1bd3336924ca67d5488001754de9051435b62cc5d701482ee4b302491938a87c94b13c1ec33beff133d956a210563f3d3d7913a4c1850ac8c450689e67b3b8a0a71412ebd36b724acb9661e7c1c13d0d8a63ac5b6889ebb5d25695f7569d778bf89f94fc043eb7444b879fd38bb828d9b52dbb14452dde5aeb56eb2f882259c1ea939dd2c58ceea4d1ce7510978e597b6ab42cad08ef9fe1dc4e9e07cb2e83734b4d422917b489813b69ab92419b8fd10d9244f4505448c46723d0c7e9e989d8e26d73cb5b40d1194ac8258db2f1ef342cdfc5e534c3a0bb1874e020cb0ada2ab2451eb287cec7305944327f052387f849e95fc4ae23aab379a022086c936419b67a4d970c38473074f7922e0bde5d5b56bca4cb0e89c59b34cb492b06d76b1293ffd47ae1c96f9f91f8c913b90b977449b6b54aefe30fcf141d176b0199e3c7a349eb922edbe42770b209b3b48c5399cc1457f0fe922e3fc80ee197feae13893ca02e6e86f6929fe7b10a9bf3f8220fe6d37f243d210ceac1679a3fd61fffd9f8f761f69a2e65ab2eca1f5825b0120bc229660c8a69f162b90b3e3ffc14bea3c1e59b600e78641fe70b5aee42d3a37141f3ab60ccb359b5d06ba843b239c89db453fe0f1ce46596cb51642fff637de3dda82d8479be86bd108d5ed3654b8c22eb65e674c87665d8ee052d5ba23bf19c617b59696a899fab5de324bbd741194e71f5c67c4875ec421bbb63f7d876608255c5389f7233e25430765fdd9e542010d18496d4d800587115b37ce3d7cede89cfb8e572f662c3abcdad1d77f4cfce85381378c1bbc62be4789d4a27ae5db6eb7881c2e03b526a5a0104b605ac18b328a9f702ee04fb584b995953103d4073ed952fafd0382d015ccb367014fff55fe03b2c888bbee59f8d0b414807f97cc56f45af513000460492d944ea277701083628fbc836798a445b8a039d345bbf1ec8b6aa8cb45bd491fd32121fa7bc7e25b91f9fa8e297a74171749d72182ebb21bb4dc5ddc6c8bf95fbaf9eeee3ff548e75ebad60df078a2b1592410e518fb0b47285ecccb324c906799ee5f24a08a06c1311d6b83d1685b8ed3becefc16402e99617057d436719fc816e8715f64fef02c7e44748dd43bc18fb37da684c87aa2e9e293df5556b1484e5ab20bcacd6e61f8cfe7d9757671525d5a603a7012a195d87d96c1e3018d55dbc36fd5e149c50e3f125a392cee6da1167e713e2b4d0d9dcb472ffe333e963b93295cfe9e43f8a221724a12834ff73598c35f4aeca7c415967fca3d5df653c971d5ec66a34ed03afa4f7096f16d9a9de0e4b16c59ca691ec187faabe8dcfaab67f04ab0386609067fa2a48c4207a99399b342be3c9f2283da4e575965f9e8a16767919948bc2b28fa8a923a65feddebb0ebbaa118922c7c7249773b309f29b461310883431f0951f60f17946cb200aca407c17bf3b1aed8c19c617a2862c905582b05c040960ff7196c4a1bc7f26b40ca758242b8392ccaca615c96ad0f484168ba42c8cee7899e1dac0976f119796091fc5a91445ce9f9dd8483c61142931eaeea76f412ac1cec8a3475a6b302739bd8ce705e6093f67388da9ebce4966bc96e64151d0888c1725392f8a9cbfdfcfd522d03bed14cf0f1c9d4f9ff4896a0efddf14452ee7a78118a788b37df488b4206e557049532439d3b29c17fd5eef222ea78b7137cc663d24f5e2e500d47a13cb7ae3241bf7be8bfe46fff2e3f86fd156f8dd5fe9dffefe1d7d4aa3effe4afffee378fce35fa21f27e3e087f1f8c7a057e4610f6856b72c3efe9f83a77ffddbe6c1d3bffe9d4dd2811cdbdbe4718ac8bc99a5c9f2315baba71e70549b411a6df2168fdbe4b9289ec479513e26fd6a63091fc58d1f49f6875f582e57737e8f72baddfac33a457d629f1f0d77fbc48bc8a282eb40e858dd377e550e699f548e670da9e9d77d7452c53e71d243b887fac4e4262519e8ab3f85dc1959930e79cf6f30a3d7da594972f5e891e2277959bba3a895fe5914b63b1ab1d22bc8d276c7d80163bf0cc87fa87b42ae469f95cfe10a562a9079ab18ee5c23c96b6d4bb6abb5d5d6e2cf14f32c2de83edc97a2c6fbad0fea3aa5e589bbd2d30f3a715de4394d4b844bfde221d997a86781ad6bf4d36a03e994794a29c99248b485fd057a5a4e690e5637418a5ba50bfef9a5858dbaec9721c8e7e5d08c9117fd77a1f1e4e2ee134f139e1159f4d9a90802d8ebf12028e44a58e77f7c6e43ed8a70df9457e2687d621c609851df9c1fc35ea380bf6bc84fc01db057a7c6b9ebc68640cbffe700ca0bab57f9aa6813f38b3917bb99f2f3cc82284e2fe467fe5b7eeff54894a58f4b52e64b526662f1e7a97ececf716b91372b2889cbc705b8f26abd8c69182ce4b734a7091c5f74f60d4a884ba155775c6c659efd1ea4d97571191bd7dae634cb2e8bde7c9124bdbffe2869a83ec1be64349f6bd99ce5a28dba8a8806791933fac96bf1df1c1be4d956977c473ba115c90fa73ef289e53a6c202795dd55e4dc2e5599f69ab10eb54b74649e57d57faf4776c8943dae788ecd3c8eb871d77500c667058916908c131243742176a6913a193a813c12ec598a4165b30939e78fb373f2fba228b9c17b81615bb91a4ab7edef6a9deda73858077126a7f3240869844689acdf73e481101758d538bdd84ce2711ee446473b644ccb92e6a4c892054cec9a266136a35d8dd96593f4c5a931c8aa56e9a32507e087e32379429eea4f7f47a0a1cfa653df625c84790c778283cef2cf63daf2ec65c7b7c962b8a6e243cf1d2697e604903efbee2255b3d5175b3d2cee0342d36291d3d3c51ca303bc54577b4bbcfdf4fb5edde9539acc69ae29eea0d69b2ca7fd0a40e5a7ee384e23fb36684ba511d4ab36e71f6a1b17659097c759920075adeca8f6754537d9bca617f9b1b613b4cefe1fe4f8ec4eb48fee4e7491948742ddfa51f24338feebf7e3effffadd0f21fd81fe25f83efa9efe651c3cfdfe3b1ad0f0bbe0fb1fe9e487e8ef5bf6a3e4fbbffd75f3e0fb1f9f1a486adcfb1c2d3af67d5d8de4c82fedea077947ea3addca0d6347483484c00c6e06b7246e1393f623829b84b99ce6d9350984ee8f6c72c36d8a844fddba6586de46322231f24171a175165c0571c2b6569461ef5504e71cdd59d5ae413c477502209fb45da955f575692a239d824e73df429b9e9962f375e985a691e42cc1a347c683dbfaf98d7ab0e2cb54f39660a0637c1b726c671b30387b18b186203ed77b7ac28a78f09342cc176eb36c5192c77c3a1ccb1e73937d06a2cf0fde040fde04fff6de04f7163e09b5e6c3603c8ccbe456d1f6451f5e9b7951e13ecce69338bcf4a687378cd895455d1c5e9aee9fd15a09dec5f2eec6ed73658e7611b9432f9c07ecf2d8e79fc4af8ecedb27342c45b7e2d71af93d250c79705fee72589c6df4c9054d215bd030181f07294df6a3969c0289a3b61d1858e56957e9bbed3af4e33c4823ac23a66bd711e5ce3af566d8c39d17ab822e9f6d30c662b30cc69b310ca1413c8e8c55c3f67b572d8d5de5de9acf731b7d95242c4bc057b50cc6ba9b6a30de4f23fad1dbdf16475c3394289e5047d864d34650227333833c51ddb4c913a50d3d0a2511faecb4cfa9412e060bc1480a6f46b5c3a3e39dc3c1014c74047c8a3c26aa087a701ba3d46e70fdc830c026c07cf5c80f7ccf03dff36fcff77c05a9f5a00d1861ba1a5cd2e59dc5ac8491de9671e21ecae157390cc65ae73db8114c43109b4a761cf4aba3915aa33345c3358bd9015ec1061b23ca5a26e96bc23a389c5e5e1e0c7e1d0d7e3dde39dc43af1710277ce6169d8c829f0e0e06bbc3a313c82dd505baa991599d8d2d6ec9c21675ec6b61b99554f957b49e425e95d775f3a9b94ca65018693082711217a56656cd4b5a6530e620f54715e77555c04bd5c89f4748e79b5fd3e55e769d7a3967d0d767e1a2a0911a24ca42e0c9bb982a9d7fe8864956d0a26ce9fb27b466054f55879904e75949d3320e9264c9881f4d8bf88a42c8d3093b03941167320ee284c41392666c55ac199f88190cc79e9d23028ea15fe0316c660bc88c05f176c8ded11b1e5443e871ae29990657940d7e1dc0bd350be6734660cfcd01cf21c320f9efd35fbb220aa616e686818fa6c0ac0de5ce143263d5052db5e256bb3b899392e62d4fba2cb9f934614d774a7e23b52afc759b279941978b0d5340efd85b602cc9b663aed22edc5cb6dd4f14e734e4f27db9b6d774b99b45744f7c6b513b2f9431fc4fdb648bbd02555fec6d28395c0310ecd145af685aeea196a6a54761671342ede3e8a97b51c2e6b2d783ec8a9bd739dfdda0e48909cfb1cab99e3e8cf59bd28fe54b1368e62a9e68f37f22a7d126ff8ffc5b9b69756aefed013e74a1fb564d6230eb401f03335177a2d11a538dca80242255b94fb195cecb6eaf99fa801f425cbca6cb7116e411beb269f77a1a87d376f33db487e886d05143280c8371552290d2eb21e3bd3b0446d5e602577277654c2ad58116964c3eaa8dbe9ff9237619f5e19cba51bc2e6e97d1475f4eccad9473030a4515826f30005506630b61506e118c2b628b46deee84ccf91820a4480d173a8f6483b7b1622b9b651690f9205e8072e2293fea10b22445cd4422522001c169131a8d97965844bc1f6d29932e2670e44d8a23207d7e2c536d578a3bf031ac799e772cc8b60d219353aa533f7d08306a6c9e26c080b1b42c2a7c745f580a89955c3aa97b704ee344df50887055280ac12b185b0e36040cbde09b5cc1b30a52b8c3300bf9a63b6499eab2632acac5a3df0a4c68a2b7940eb9e856c775d8012fb6ebf0423fffed1af486a9bb55f526715277f97e1a3386ed54ffae25c6f2c469b4e89463b256aa359790b5b8918015e66286c7c3c8adefd85dafb2ece911eaf54f0e21aa044a60825d4b7727de54ecfe459c128162bbb360de7288e1b86cce44fcb6d9259c4391428b738da25fc5356a9d636f3bc09e8b737c94264bf2dc4be6a5a3c658e22b209b6ba59f49df6d2b213ac9a5d3e0e7b65ab879e5586bd47314682be109c7c9f39b875860445085337e77b2737c3c383123fef7dde82105aa7733b68048db0c72bc32d6fd70e7c56987b420850044b61fcb88f4bf0c4e86fbbb3b071f4ca85dd1bc8cc3206175db1e81b709fe83b82877574c6274b07f3af484d897a1f1b5b15494fcf64d340ed5b0f737df0f73859a889e3f800d693c2f336b01576d578342cd825504aad41efbe28dee92eeb37299b4b9639c828e2225ed8ea20166b4f4d1b88361ef0d397e71c3e08bb3ec8a227d8f3395b9a055d11338fb5f27e665037a7aa60c328ccabe1761af0769ab4468cc9414cb3444d1b4162493a125c81678b58284419aa5eca40867bb6cc2a8573995f2191f13befa6af3c5c8acd92247f84af646e2a186d89f666a362b955e1556b289f9cd8e4859bbf5468a634f878e5097bd1efa24805d250a81d32ca2054ad32793385c242529331265b85105d8579224bb8843b64b5a47c5344892ec3a59f22e29da5b96531a8bd8c3414102729de597419e2dd2a86b4a2722715d4a97a66ff0d117e479b02c06ff580428c5b36e5780bcda03414b5d95da1df18ec4c9eee24cd97bd87e0e56e6534df9bc6247dce99b2dccf2b06d6e12d0eb91c3a3e1a0cfc0791547200c618fa5cb34bb4ec9fe1eb98e93844ce308751285989b8bf7f2c434b667a1621a9f7a5e375f8052f02bc8cdd6483477ce784597ae3666cffad9c00910b0ba4201674a8271415324428b82e618fed814dc8cbd6ca01d2b83d51546f88c91dbb2d5cfc1b878bff5c17e14ad40285ba6e79133e1e36c704553d1a2453b281bda3939397a373a18bc1c1a056f8fdb55906e3ead6e4d6db727fb3fbf32fbdd3b7a77e8e8f9a9c7efc1940ef8e1601fff26b1a8348749331ccbbc304e8e676aae5dc79180c5f6bf94f5579f3982badb09e97dfb2d79092f8942c5382c338c477ffe9fc360fcd379c13390ad84c93d80c37a5e951944976959460ee271a44b0aec55f3e00724cfb292bc1abe391009e140e31a24099e3bb8a43050409010ec971fe32c5f05184df6af00532cc6a2bd65292bcbdd40322a90b30d29e2af26d9b55544957b9a83f3fd070f9cb5a03d8e0e3160c3299fcc4e92188263f2449f6adb023c0cf32dd90d92709130be875d2c29bde6c95f3be43a8eca29e6c29b67987154981020c5e4d76297f7745a6639f6b27b7a4aae8264410bc6ee410399b454a57865ec1f9ab2f31e7c7be8be8d57c40077439e7cfa44bea93e701bb9c380e9c8a9da780bd4671bef35d3a5edb33386182243be8b43644d58ad0f127f2cf65c532caedafa963139fd75e993bc2893753439eacb8cfcb664cabadd2dad8325ab36d2856f3b5663e405b764d9313c65227665fa5b42055398379914b43ca013cf88eabba3d9309bd7b51a667379b5af04a54a9cec59241c834996cfe009ca7eb093f76b0b10e54d504ebb9324cbf2969a719ba7c26e1359fd374ff5613697b535cb358207b9afc357b2b1369e7b1e5cce95d78b6d6c32bf9f16342f4940cee1740b93867332a6e535a58c2e2c49799d19b71fd85a6d42323fb809809cfd63c1d04f54ebda744333a0107f3e931f87c1989ddc60ac8adc91f9386140e77c0e4b90a8989e1a3e519f594b08842a51f870024d6dfe8a8abd5fd138041fd86ae09956ce7b162fa7850c09e1adb88df7d259aa45bb19f1303a23771c9d911e48077a793f8ac92679fac188a4338a5d71cba0bed4790bb525a8a62bbe190ee583611c83afc1b8e0558e26c3e59c624530c869d71801fef86004f86004f8a71901fe41c22498cd5786ffaf84c864ad7e616c570b98af0e99c56987cc02e14adaeb1183d85d83f3f575965fb23b9e4d08debd739443c729dcef20b103798fe692dbebb1ad7cd2db24713a89d3b85c1274bd4f8b92065107e541615086d3cd2049ba82ac0411eb89466f62f64699c5a9b45d780ebffa64739f77f8acd226f8c8da041ff536c147d2274613414a1830041cb4613b7a7f6d9f097209603cca07b379b9d440aa7978c16fd7fb807f50ef0293c6c1e76e999d96799c5eb4f814d80d7902150a728ef160f89614508fe4942128bc610202feb6245dcc681e87842f32892f1929794aff7ab6212ec54aa4bf021673882d8d35f57a04b233b1c1e20909c4c07121078a53c28828fae3429805328e2fc83c6060e5b65bbcab6bcab8fbc7258a1597a4cc8a42f5390ff26046d9038e1184e225db3ddac544dbacdf722afaa14581b66a8ca6e459104ed1a3ff778cadb1804c1f704d80fb7772c59e1c8b315c872044e3fdcc839c1165036478bc5c300ef4b70e6e18b916534a39210b039481f2ce4a7ce89c07e9f21cf355971901512452ef6c4ef34088ec206601b23d112315b338610f0c06dcae8d2bba790f166ce2725e2659508a3d7c429e6af7a473dfe388efbbb00e82dbbfa521c0228d4bf48b97b74f9c42845242bb9774d9e5f11ac690838e7b4280e3fe342b281adfe00220b86917829f5acf045b4909f68008a75916c59398461051af2873eecd1f94301bbebf24017f7b20ad980b4fec4b966ef2fded719774124e038609ac7a6b77c69e5c3b1d827fec8a3f7e117ffcda9649f270fa619927afe992bd196937484af9f78c96c16bbaac5fd3255df2d963dcd58014717a915035298c6c01170f8dd0e23120e79774794e52c60c6613be342e477cda6520ce97b86c80d214086d92a51734d79bb668f7a24bce365e04e165310f42ca1f04bd1ebb34f33cbb7e3bc7dc0ca7d378529e6db4bb6c7a216560443d0c6c292c82bdd3c51ae4e4d535c0d07e12d324dadc647b82dd9453ba846d8365e1cd16a4254903c62a93319d0657318f3102a76199a5118e02e7560db4b9794d39de5db31eca4cb8e0700d0485981785dc3c78f516a700ecdd699063885144604d22fb54733bffc6aa5fbfb36976cd099c206f403971b3819ed81b0d5fd8ec0b36fd31c585a23b77af87a474c28e739c5e6cce3306ea74311bd3bcd2077d9c533c2e4885a023b9743eddb878c93b3b667df163bf2bbac293a96e1ee05076484e2fe84771deca704a358a9d4d24129256dca55df814a45190307c91b36c435fecfe60a793e7d28ccb662b0c0a2204e4e32579f7fd6e1f7a132eff8c29bdfe1e18d2e149efbbada7dff5deed6d4ecb59b2390bf2cbc57c93956d7dffdddf7b515006484dd9e7ff83ac1344dce9c22424f3fab27e4a0509b8480bd6a295f3b832291923f7ca3714587160b639b7845a84f76c32db671bd8ffd9c6872e19b24b416a1f793837e80ace06d7f3b0b37c1d2c45782325b7621860ef6b014626db80ad8a7d05c64cf0ad9ed9e0bdc298da1b831cd3ea61970875a32428cbbcc07138b78b3e042f0f8e7686fb873f8f8e8ff60f87a3c3b76f5e0c4e46bbaf764e7676878393d1c9e0e7c1af649bf4fedff703bab5f9f7b3b32767679b6767dd0fffd173f0c0ab305f21aaf1586c348b2ebb19b51eccf373922dd2c8e407601b478b3929b391fe6aa011635ce3d962c6887f18b3a7827a41026244f164c2d00c5894f3327b197fa451eb87f6b98c6954e6410c77ef3f699e5144547661075104ef23e86b96e5948fc1e755886855c0dba50cef7290a4c3392fba72736cc896d99be0e3b198ae7c6168658a8fc83db0580103d2e20be53c20b9ceb3f48284d32c0e6947de1422d613b9664786ade0da84468140a224a2613c0b1288b644b245296e2b350739769b778f86087df1102eca20bc642fbb49925d63b491ded31fbfffe1c7ad1ffedafbe1e9dffffec3dffe22ee9c220c12fa32e0d26110cfcdb3ebd6d32d0b4cfa33056a01b8f883e25bbd9b36e9e93f6b24167f7b90583c482cfedddd166b933fa25aba438eb92a8bd1c15976450fb3f4d5f0cd0137f241f7c0957922618e1833af716247ccd0f2739e2de6fe4c8df0f956c91d79a6677b9c5ea8955b091ed93d5da91fcb52b3b69232759c8292ceaa3bb853f71aed58228a8e75efe833e48f3d98fe5b29156394783f0d7390fa4a4309e0f535257db506bfbdaa1fde3b8ace36f68ede1d9e6d7c20db641344dba2e4d93a9dbc3dc62e780fec27a3f16dc7f4d8c3d355bc4dfe406b735cf9e1d1e188a1334f3bba4dde9f6df879457c01221a8973217300f25d3e4a5f248bdc99197016fc9ee5a7259d9fc6ff1445716a176529623098d68b22e81aadafb00815703b49729482ff55a554ae9d7f91637c508bd710e2367ea97a3f5eff54bdd2170db15235ebc71869089a494973b45bb443883108e947a7afdc094ead4fba8b495b0bd89b2c68df2d0dd55d2b500225b4c62047621342b910655750125c14283763ec4199c71717342739dd44f5590132667ce20b795339a53364e3a4f6dc044b1447c7415152201bffbd28caa3305c80510083c233a32a4d2066eb96510a044ea9d83593702dddea559080e99be32b4747446ecdb9584219bfc0fcc467c709eebe3d6e5bb3bdab9ec1f8cac22691d3dfb09e80424d91ef0410fc94baf05aa73d3148071bd567c1d5a88369ced651be9c969181d8d09196547e8f95b5640b1e4b486f95d28f88c9b2a5dc44446ae8566f256ab10522c5e261455bb2af8e15d7485b8d6fd94599cd7731b953a645f977ba745411d8fc0299ba86f18c668bb268e973872f228676cb466965af28ddc9911d02a43a888b92a6346f9d6dccb2454117202bf4cf7e659ae3466b6db4471a40bec44e31eaa552186e226f74264c74b7edff296f737dc1d0086e31af1fb02092fca184349ed14978a27202c96b300e1ece9132fb25ad825252b55d6f9bf0705acefb6e8faa97ac761beb26f58d4840860d9d21bd2ab0621c461da882e43a58169ad897bd2d19b0b2948c59db2213717c8368090063db4eca588bc37b0390486b8dcada6db7629b5faaf8410aada0f4f4868267b6837b11a47119ff9346e6216077b6f185ab7d8cf6752ecbfc2e37bb57153e9b3d29fd26635ecc46565862ffc1339bd9a74f6300db9e4c460df18c81bb199aad0ab7616faa8cf4f5e993317b86658c7dae0d7361de3d97686323f410ecef67c68d663c54d47464bbed6dcb5c5b1f5b8fffe0e430b4e81bd292dbd335300d6b74ceeabb568d9e162a9644353048af27a3f673fa065a24d0694d907814d90c74508cd48de3948b23c0170294854ba337a9887a5c68a4326738d625d7f47192f0bc1fc952aa92b82340902466578c7c702922ce2a9880c68ef28135e966c6ab65ec9d15a7174647499cd2a24b78ac05ce134be5809aa5508891849605591424ca40ce6b828bc773857b7c42739a868abe79423a98f4657dcea9c2f05abcd2bac755b8f7353db1f5f134d0d4609e67d3781c97a0aee47ae338d53c0785610ac926449b8266b3c03b439d350fa45be68ba2bccef272ba94dd010189d11a719c67d705cd8bae8f80d468691e3d22dfd46be59b46eb580bf4e832d908f6f0baf2027ec5234cf3415e392de8a1d99c1c0ca41d5dc57bd1aa2a3a93695fc3eb6d611d141ce1441abd598d85b0210b31cd6e314fe2b275b621e237abcae6656bb4821fca11a3563657df2db17901ecfaf72c4e2b93d2616c367221ee4d79b38e3e5de070e4b84eb6ed06cf0407a3b23a38ad2e1c5adb5f974de5d870dae162a3061de901d1543f86dbb238204eb98e6cd3950c26516e9c6f62e5c1a96aa2199fe17b3e8b53ab65f0d1d5128cf9cc96c147b3e58b6c9146eae568cce2d327a36fdd8bc2465cc5ce1a7bf3cbcec1dbc168f0e678f81b794eea786d8e6abd6ff91dfa6d0f0bb63a26283ae6fadaa4ef1d519faf2591d3dc0c2bc23a6d5fc178644202f0db61fb10a4a05725d71414bfd9551cd148182b88d8fef4630cf94c94767622f99f5e8f6498715ee8dd58d763d8840efbcd4d2bab966fac1e5a5d21c7a5bb8fd8fbf8e891bd43120d50d677653d35fcf4a122e5b44baa34c2fd0ad28236357ed3aca41496e7e99d2ee3ca397bc383d443876e1e28dbd415a04fb059e68a8ee40f4e3561ac3c7c657f691fc0d702bfc09f7ab48e2c2d8338a5796dc48cc3b76f0627fbbba3fdc3e3b7434ffc0e193643c4ca18b7b5504d3af1e3aa36011604204a905470b89af81aba56ce1364c35a954af71727491ffecb37b853d985ed6da9d6ec1e0c5e0ed9f9e2333602dc7065457d07e0c4abf56007bd78d600c1564455f04650705ff6361dd005d3709ac42bea849dbdd656a74249b8dddf3a6744e4346a723f33c018ca30eb96d3be68283e038376e3b6d0bf8289bc79b5185f7da3e95f3a2685a954168586af9f6e96ffe8916171cf7ec629f949732a208e6c25a819378fe0e8cdfee1e8cdceafeebc2f7272153941a3be4f8783e3d1e9feff0e46876f0f0eea87f8cf6dc39977ddfe8f0e47c747a7fbc3fd5f06ce71cc9d418069053719fdcdfee1d1c95a73307011f6f0f7dbce61e7bfd79c433d1c7e9208795b68bc387a7bb8772330dc7c0a1630ec29084dc209deb3af30ddd059ea5022080d42ed4dfd42de3e9e0b3b4e4bcd515828e14a158818996999e4c223e474c838575f6d9a5d4b7d34ae97fbbf0ef6244582b885c2f860f3020d4d94ee597a4c96f9a23e12188eef0a13283a134b74e4bd8843c66b9d6d84537a9567e9a6310984609fff2b2751a7ff6db7ef619251769d369ca64799dc6eb79b5ce31ad750877bc250e855394bc4755935aed222e4752c3b950eec7203364a992ad581325894d96e369b27b484585fd964a2c5f972cc57c35b01ccca41d2c08dcaed3e3114ea2aa31b7a095722b1c9ef7452eec38eea5578a116f50cf46746c833a557d4aabd481679b5162845542591dfd92d4f5b11904dd79dac8aca66486db5ca20f6aad644d19fa80626aa7cab0de8e81f6cf3149bd5e3fb2c11dcd6e8725aea24c64d28b2dbfcc2381e55b305dd2cc830f1b1f3fda2df500442e6824cc03c35a7737606a284bb014c6912498d27d87e867109c1b9849eddb19f7276b2ac45afccd8f6ecca74c78fbe2a85d2aaed54ff550c395813dd7cc3a9e1d3d0e34db6286865a2b2b432d5e6c3da6d20de886d91e00e6cbd923c3afbaa7955eb0800692da7943fb21e1762b96fe7e8464770713989325aa48f215415d5dd74a5b826a7090dd833d892db8cf9955364e49a4aaf4548c28a5175a6e05a22fb91de906536ef2ac306956e208a6a8c436a6c4330df2e444223114d02d0af14093bd3c952f8ae812b13ae5c3a22b319c9e905611847342d417bc72d24843a4d613e91f7724f5e7d5d3bb805b7977167e475187f5dc769945db396963d8ddbbea563e2cbeed1e170fff0edd1dbd3d1eeab9dc39f07a3fdc3e1e0e4971df54e59d9626f70b0f35ba32bdb21b5323092fb6d88fcc872e1151d8da8d1214f781b4d228c6415257735dced0a526aaa144d120aea452d3ade3ca7254d23ee00275b320c00c4dd6267235ce439f6151784cee6e552931ac96f554123e37d1d42daff1d9c1c69fcb3aed2f0488ae5201d6228483d723faf72c36d8a23b5eff61d68293d3e1bc3aed076ac1261f21b4ab668828410fa50580a708db3e37aec90b800f753c130d08815ed245a4143b9a42d7d19057eb18b253a615557cb4c46815b58525941f59d59b57d10210ba579c4b7661357d83d032ad5f774b341f4261e11b5a35961b5688601a7b60aa64284e08854a254708d01a28d2bfc9a6dce6b8b1ddcad509ee6d4515942838f9e0e405ce75455191d7ce30cb250dd98155a2123f498417a4c473c5728000e585db26a6913acd3ad850ed14883dc18335c45a3cdafeab3564624ec36c468bcaac26cc1880b38f81d2741480b572f3e454cb3ae0abb97068bd76c6a7c548f9a919f053e8b3bc5249d46c36ec1894d474624b07652f5e8dfa96601a7f426dcafc5ab3ad5a29d78ee51a8b2e5aae389bfe5b5bb304272998a8cbea5c5e0956ce34cd378c011d5cb20c67df2744b94eba8d5275bdda72293be652f6b76e7bac2ad1a6a2c11320c6f761fc4cf6408b1269c23d926df6f6d35a92e5853b24d9ef2160e72d538ea98e191f3f999c779f5af0fceab0fceabffeeceabf79973f3365934ff20ea91b83244d9ad9d5f77d2709ae5427abea62bec7e68558ec32c85ffe8b9d8b3a0b895b72074e04f63c9bede430af61d18ae3e11bbc7023340436ededa32ffe5992e51deb21717eca8b5e0ea5ae1f4936485232fbc2f2dfc3a0380d88dcb70eafda6fcde51b69967c9bbfbc960f935c3c45a99d1aae5e8da0d2ef0710c5e9334ce9b9f8961d79d18f634b0d5610787a76c0a0d3b1fa97d846c4e86b28490192d8a4098f2f01fab153dabf3d158f9718e764e87d2ff9fcf027eb5f06fc3b0c7ad3ed1f1caa3873110ca965f0fd292e64d2a1ed0e08ad60daa92cdabacf24e7518db074d77055a25a06f5c0ee4cbd553cc837465f22406d2d19bc1e9e9cecf03390dbe83b56a4e5b173c8b53f6b4b274b9b0fc59b01cd31319445778e5b556a851ad259f6d847956149a4e54e677739224011e4b0b6a9fa675d2f7e8fb6827eda9e9b62ee58cf542e6a592545986b3828898ee4c0d489c6ffac4f16c260eec5e9515c5b7fa777192bc4d672be0ea1acad7b50799fce430107e4d95dbd090f1896a3e81849dd3d2236c7021b4c9df38331d06fcf1ff874d70fb6a608ddeba305f630ee456b5ddd9912c909a179925d088f8be0c3ecee39caede37830331e4cebcff0ea974ead870b7c040a360671b921270726594f183d0273f6c6d6da98734efbc59306e56d78ac6cd8a9a87e306aef3e145fcf0227e78116b55f68ede18b536a36cf6d5bd9d81311a9c8c764f063b43b438edc8c2773b2787a3fdc383fdc3816756aed85083d3dd9d635f834bbab4aa4bc36dcf9b5d86f2b9ab277f5c1c66111da4579d1bbdfe8fae689e044ba3418665e25f0bc4481e55aca752125cedd5ce5e3ab77cb7d3bcfee54ef3fb8ded03eb2cfae4fd07f1049459f20d9d379842c49398e6401116e9e6255d027d63edcd41a00c0c19b6ace12f68c96f5e6ec764262267edaadc8e5641bfa95de9d323f1fe85abf5922e3bc46aa358c7d5d2843a27e0c3a3e100dd9ccee93989c16286478d0888e1594bc68b126a3e2e54605788d70d217d734a8271a6f2be6124688c30bebdbdcd4faa63adc0f0d465c877bde18d444cc018725fae738e7de7e0b91c60446519719614d380dd74986c915dd6b9b8f24a1e4b94402451aa75045ef363ca5396d0887191191f4e64dc0ae673f635123e5d17f1154d956b4a254f13f6cd79daaa8eafa39a1a8f1959ead6b46a9f95f9d1388b962e752b662cd31c1490a75c14f438cbcb20d13f7d23e958eb6c639e67d10293286eb4cdd18b2ca1ddeb204f5b0eb25e3135377c9254bc243973a76443f4a2608bb0878c6a2dbb3b235db0207df2cae4629f96338dbaa072ceb7859d3f5d42cd887df2b9ddee5456d8369e4872522bfd371cb76705a24297899d569f00862f2cc47f75a0dea516c69bc10d73c749172e04137477845ff486c6e2308cbd967d52dacac7c521bd863e5ed325abd7f6fa2c9a0f7c33912c7158821ab7019ffb876e98a561506a7960b14a5b932d2a0ad4cc0bf13613b3e761a5422c2d19a9dad9ae8029fbf7b9dc9b3e299fe90d3eaf58988530bc1bd6f90aa4891c0f5ad7fd6438aa199fdca4cbae6378f67bb26c3933356b67bd40d929fefdccba8d75d10cdf14be15dce3dfbf1be8b50681de3144beb12b86edac308d11952bfbaa3fecf5f7bcefba27a6ffbfb6a06fd428bac4bc5d61141ca201d3479e5dc8f512bb26782b32d67a16686a2a56d8fb55b8bb556bb8a0e550a080631dbacd87be9c15bdd669097a3df21ff37253e56bdc8c1698b7847c4bbe274fbc5f7be43bed3aaccd650f82e5dda3c3e1cefee1e044257516cf1a5eb1b522777e8d588d3f38b49b8db1d0ba249f0bfb44a914a085413a28c2604e5fd325709d467df32b0d72bddd11da5f83988d373583545453eacb4f349d6479481dc623844c83e245105e467936b73fc5c5d19ca67d0742f36c0d3f912dcbb14ba6d7e37c91213257ebd5f86ea59690dbbec777bd4fbeff61cbf1dda149e838780c6d5ab2f4ccd00f540ea9e6cdcc15afacc4c214917e76c539306e6ffb2a5879c8ba908ba5b5f2bd241f3ff05abc94646de5e1d75659f32eab390502402eceafc46f7fa8dde724ad4fdc4f433eace4085751df0a7bb58a47d339adcabd0a1fc8d9064c6253e555e56fdb274f24abd3eb91107292c0e36efc3b0d4b32a6938c3deca248780cb0fed81c2049138c96d0e0527c9d2d4a9eaac9e6489b30d1e0d9784997cd69bc45f8fc0a0b21d93153347745b10c10b4c91e18e6bbb8c4046d054933b219d29471eb2835111915b447b18c4f86093d0d18c8395897e6bc8afa1e8a0f3274dcc479b7cc0eb26b9aef068572c3f1c06c0dd93ccdb9745eb6755b19aa5b4127ac15326fd81cceabd686c3a363fe51a76e5cdbf9b9a2268037cd1a8a029afb55050f991f1e54057f82aa8051a34541f39d0bee78be9cd36c42d2e02abe80ecdcecb23bdb904fe6b30df25c7dedaaa67d613a0c615630a29e38a07131882e689ff4d83f3dccbf235ba215475c804f564ad91b23c9729af7496f98837cf4537ed57ffad4d7ee1d1d5fc6659ff476e6f384bea3e3d77159a97b967e565986d80c5fb867a8e7d48d2e688545e70bebe267a46edef96b9dd91f6b3ab6ab1a8388c56a5d63514d875841882a1f74950f04e86b2240ffbed6bbd0e6355dba1b54b585b751fc81ebc4cd947e8252561bcc83321ec7495c2e25e17ff1f6e5cbc1c9e8ddfedef0d568b0f7f3806c931f5cdff607e0cc20158183282ed9d919d28fb7b2e2d5fbf1aa04f54aba86837e2c6bb4847a4c46bb915b2d98d3891658c0d08ba0eb884cf98c25ad621ea4422e5f554d812f89524c68959548d50c6fa15f1410336c64a788e026b418b7d915dd9910fcd88550ce5628620413ca28464f19a4b0ae1eaccb6ac06b54c37dd5c5ad27cfc916e9cb813af22f7b3ae0b857d75345e229e613e659921cd049a9568165efe20816a19a7cd6e499673e3521d726b2ab2a61f8c688644dc284918ae60cc2898e3e6012142a9b42d0953f3be64ec80a76305c7f5856c6c7c0dcbc8158e56086d4fe4c53abaa909cb2ae01656fc060e166af9ab962cafa9b036c1dcded4d28b38b8b84aed80465498ec22109196f0a8091ed7ede388a7f0dd4b5cdb6224356a2fbfb0193a593389f199efec4f443fec6151fdf6d315f3f7f650a4cccd89b9e0381f2c86a520d6b27fee4f9b18bc115a3faca24cc469c6af6cd8c550d7928c13284e765853001644c7946109e591782c12c529ed82da191dfbd4124abaf92e90649235cd8b4c669e387f5aaeea421f45ed3259a68ac821dcfc52d80873f8dc32052778b2afcb7518767f19675f86fa38ef0b79595a403ae5e8b9b87f02af0cba275ca800422ecf8ad4874ba6f5d9af51926a641f106f3a7f384d72a61b996c75cacf9d327b9b415333d1c0e4eecb40d2252cbfee02967ba278b24214598530a5c3dbcb182a4244f08481a8dd630b0f84282282ad00a258953ca1e445c5467721a6a3562ded68d8cb0f746c9b7d48d95fc2d48fa8e5270e26023c9e8eedcab7c9194319ba1352cd807694758373731b7a4c241c46941f372a7dc0d725a1a9d74c8d9c6d9598a2f5c8bed70521b7e4a4c6ea362bb4fdc375baba296b5baa81056090cb61fb5ab5c359c9f0fd269a4838891e7bc94630bb2397dbdea339dc2542ced80557b45e38b69d9275b26fb0bac9b51aa2e061e13ae906cc136663bf8ffd9bbf6a6369224ff55ca8a3b0f1a84043b7bbb7bf26016633c431c061f60dfc6590e5c4825d1eb56b7a6bb046676f8ee1795598fac47b7da3bdebdb8b8f98308d45d5d8facacacaacc5f663ae8918bb3b8bf1fecd3e11e1d0672a111cc7c2b67e4fa45ef225fc5038c8487bce6c3280821636ed6d197cbfc7c164f58d3d66362acd3d83be3a834a9f096d7610477bbbcdcf9d1061fe8607d3e7e797275f8e2f4f8faeaf82f0d1e63328cfdd76f881ffdf2e45255f5f20304a6d704a305bcc6aed5af93b31f3ef811882c2bb57cf9e6f4f0e8f8c7f3d397c717eaeb27862cde27afdf9e5e9d9c9e9c41446b3b3b3aaa759b21dd00d844212fe5431e44034e083e25c48564b7b07a749aff82f0c7b29c093c9e14a5640287473e2ee5ada8eeb35ae8704e4bc1ebb58ee695d5168d284b361352544b55275fa9de57995ac6a6e139e4e909aec73004bad2992e3f664f5264f779928805360656b312aa014d351ab1655680c8405280420f33d0d459b1c8057344d9228b689fddc3477bbbbbffdaef3e88746769e8f4ac103fb616b6aba871e8db6cd25b7d9ef4340dfcf0495a3cfab174e0614c2b451dfe4930514cf3529183cdb23b4cef042acf904b0618d91080aeb5d49055c96f6e50213a77d9e8462375581185fb12951199ac453e87f089b695ba84664d2c3d130cef46f49d8917f056daf1b2618562c2092d260f9084631b87e857b9b38aba35f4a70f5271fea1e63f4deed8ab1243bee3e1fbd77883faf2e8e8fceceaf8cc613a2a1b0e95a8ae869a974946da875c47ba372c6efb6d05fd014b6c0bab9c4fc56d99cf44d56f8d47dfb02b7e892727deb1806e2fb3a52840371d781e766826e1d9793d6031c4320881ef78ede953f6c4e12b536a85266f3a55328e811f8126bfda68bf309b0de63bd1c7b1476fb309d2cf24148bf4e44023d9d383c363ba4a47daa66ac9a98e25be6baf9e06d24e3c259e22ed2a8ab82b1d30a4f051a7590b65431c98ad73c8bdcfa70832d3e1f6f4cf0e274652043c2f10dffab0a22fc892c7f7e481c733c94dbd83932e95222b1f16d24102625a1153dc0e7ecc623a784106bcab507b846677bddb10a0d9e84d6c3142aa31fd114ae25f7bba78e226d8b0f5573d6bdce341c3b572c0263d755c82c26175fe09a4fbd58a569fde20d52993578243a0dbc6b0e3e94d307319840d56acdf67e38696b0f4dfdb8c3b203cac142f3dac44d872171191dc13362470f16c4cb17c6d1725b880b242d44e96a85f7e91aca045f4afb0089ec34d11f8e51769bfc49a4385e9291d9657cf8a57a23031c9d1847533f41e7ac515071d95364ecacd903cf09b9e6e6c1acd4bb878b0e5e9903e4b14b65499268d53608cb3eb1a73c39ddadff10423b690cf66ac2cf4ed469680b100bcc1f7ea40f9dcdcd232bca53151cce04ea4357de4fa640088fabb6999e77ca52ef0085cacb89aa105bbbfcda4a8577c0ab1add9f766553e67f56d795fb34cfa9acc46e1448f58a3c9a4f8170dfb2173e2c7390f28bebd4fa895d2c7aad6093dc3881b3a2dac21d0d468f7774d7cefac3ee367ec262fa79f50bdeacd07fb944d3f29523676701fedf65bfee3815b42df92010cdce2a38fa9f967346247b755b914dfd4fa9235e59553002cb39ae7d9a2a871a26bf41d5455ed9812eb5aaa1142acc54acd6bc1e6652177eaec6797c1568744b77c44bb8f55f0bc2e199f42c04e809770536556dc8a2a535fd1766d4c735c9924ac798266afb9bc55a22722db42c85765212fb39f45622db06d8665c88a09a4435f07413fdedb634fd9f16c81f1d86bc659bd844cb2ebf95c401a73a0a0baa7c2a51855e5ab2a2b21427a25eaec6750a5504e7be161cbb652ac8beb7f7b3fc659a48c7c2f1a31655f50f9c9716a65341b94a93a369880a094563f04d385a2de6e01ce5f08695f3f14d3dbaa2cb29f05429cc7638d0a5fd5623d2b77b4d2e99bda70f5fd2d40c8b4a850cc866b80fddb775f286712e176ba07140b58690847b7e1ad91d4a168d26729cf75aa353e8f7706e886b0a69fe8a6fc5ad2015a42138b6fc4a67a7c2f5c8b4b8ce387684599356627c53c2b32f9e062b4ea177bee8966993fd940ae66cafc4abd73f3a487e1eb6409a373e163e06c8587424c2be301bc29253aa3bc3d1413ce8ce50b2a7d8487f151dbf65cbfc24dfb488b4ed0add8d2435388f6d37da815e81a2b03f1a44f0ab9650a0ceb3c9b4256bd9ddff5076c6f57f5fd31ec22117e7e2747a3b8637db6ff9cedfd69b8bbbbbbb7fa8c3fcc80bc7388ed4cf3d85cf94447312b7c56b3e9ad987eb22ef060afc9e6de56912969fc493cdc9795da433e0936e91565b5e4b99a64d53b8cc37ec6cfc8dedea78e737fae8530a0d05af2e9a7f24e54f3bcbc1f4ecbe5888ff6fef4fbef76fff8873f8efef0ddef7ff7efdfedb9fba73e9036ba8ca386ce2c64557a981585a87ebc7a7d0a7e31dfdf54cfedaad7b4f13cca41834ff4fda8993ea5c4369f95f3792da477ba6968d16b15528c95eb9beeb59a57982b8af6d3cd1b2f0cc3eeaac3a3507be794d7c2c6b8f0f8256a7f271a28b5a1e99abdc39ccfd9818d361f3002f6033a1a30da713183d10ee91377e1360f2f25af6450109ef9f7552c41d14190c3d0afe539cde307f079d8d1e030a31386af95f0c98a855a15fed79419f85c8a2af999371896caa5a9817cead6a264bfc5eee1045b4d1d48986dd7c36d3ce96c9bb6dd1711a98207dbaab944719c80c6c28f93e2f137179adf10ecbf21d8ff3f21d8a125c8f2d015b6be2168b40b51c5175e31c917ea0f0a8dbefd165986e75a9cc35df5a6166af9967388e9782798e40b1d4d4749d1b3f3b363b6cf76f65c942bbed03afa5f11e64ad7d11ce74a17f8e706ba420a682ba61ab98fc0d1d7806b0f8a619eab36c805019da84c6a447b51f075bdadc0fa34e6bd12f304428f269f863c977372d78ab2684503b810f381fa6823a094cf66577c51a7f2e62c85bc2d6701f2151fa6bda719336fd9a467e075bd2624218194c78a5a320b3adeb3f9ed152b8bc3994612c1bfc14b8b9185f78191c31e826a824aaf9ff99d2cc4fd3b5bc678ace3932d6beea41f208816bc798ddd2b9a2decaaabdb91fa898172a905406940c302a15614a8cfd9aa94a29019a4ab139f57a2a8d58a47dd1646cc00655f56a31f7a56b372994919a278b18f59fd4a33c1962157a0898947670a22396a133ac80eae1f8c2aacc2d7ff01b2457cc66493f60e09df2266552bff20ea8a5651d17184b577c7641371a0167dab62235843c4d6a9c4b5174481036064263e870872c917a9f8474afafd5d2b061494c601a30af85cf28551935cf3a1f9e529e68d6d32e20453bacf0e6c3ddeb8c62caab02d5a84fab2d9ec6444f6186b07cea79e0c44a093114e7a332ef98ee48b1df86cd2d3df9332102f416d85db6cd2bbbe867b42584627e909095816177077f4778a18a24351b3f8c515b780346b1c1ba85e6c486b60a2a0b5a63670e8626fb748b949c5c588c3542b73071d7a91af7dd867144c6abaae2a51c82bc42963987ffa8830c94f6b51cbc3225b82a47a55f1a56852548e46ec5e475184e889da8471a3ba8328f1ac66b9e0773459278926682a9989391c93adb2660d68b1eaf015039dbfe22e4348d0e3dcf23beb1041aa8235ec8d6ba85bacb75c2e535a5d98d336c486f3d90cf346394c38b13abfb32854171eaeb11c09cb133b94d16d7f2bfdfd804d7a8ab24e1714c923b6419eb61dbdf4f89b4f53bab53482bb7de5b83a5bdd3bda5ccefc6e510f1dcfc369f321ec8d064a21aa8e79e0f996de77f0ec69ee7e1bd5e91ea7fd553c06be6bf4a36b1d6b59d024df2cf011e84ea664052d74d218958d6e3cb06d26c6eb1bb07dfdce354f2bd858da93d13546e8cf1a77aea62faecae365a664a65f96ca7be2fb1378cf58ac7ad3eaf757fe9d59e8f6a09ef4c4f3e9b2bfcf764397157dee6b687434521b42adeea592dd8845568036a39c6b0b2f24e0ab21d540a51320a0de892f6a5f72af6be1cf922cd99da8b2f98369c144cc61bc98b1421b39ed2781f04e12f2f0e2e2fcbfae4f8f5f5da9cb5f4b11c8fb9708745888cff230c1020b21cffc576d1d80dad901db6363b69374220edb511b03619a48ea6baf3259aed46ae30bd870038f1c9664c5a0a5064fa1a64d20104841657ed9c72e0e4249aabd383cfa8fcb378747c749b7209dbf9d4f3f01aae3aac4a359ecccf49838779b8393125d2631aecd6f3ce959a4dca4a705d720a6623759f676d541e4b777e4ed8a74a341f674e8cc1b5ecbcd9ea5b558f10a62f0789792a17dee4939df0f759a672b8895fd924b0e41e0b8e45bc6d8197a703f898e49d8c35f7ef1051e88a7c4a5cabf621a8dd994d782f19a71f6f62facc8a6423e8c69e67bb6528d6827d8b2305eb2209d8a92cd04685f450568a34c0ee0f4a9e3676351079d013b93d0226f9e897c86f0154ed2d0a30d4a9dec586663c94dcbe24e54188b1d3c55385c6196bc58ab2bff30baffba49b1976e4b260cdb668bf429ddf65ae9e61a69f47ff4f934da6580986e8f49739fbd33b5321fec05e0e2c125675c6af5bda24e0d6a76b52398a4f479b9c8a66c670766f056879f0735699e3313c19132aabe76b2edd409c9434928be3d34ad6fc557d0982a68818465f8aa2a975a8f94a59765633236ad48fd0a1079ad62ed50110d2ee2ea6900d5071796a472b531807508d679e772cf47b56b056d7c3598d0b07e31bdfea1f9eb363a38ced5b5125eaaffc2f339d1d3b8df5db3e0b528817231972736b59ef9d511091fc6dd0855a6ac8b4b2462d95db4c6c31f34bc3dedf578787475f2ee38f262a4b7b32ff3927c75727aaa5e02d5e98bd3c38b1fa021a4197a3276ccf147069fd5a79afc53fbed4c7c3e9f6f790df5d973b8983d33875a4a7850d2a2a7e39c65f29b9a99cbbe3ad36adae7590dea0eb15cc90756dab400357ea9a4fe832e4bbd0fb2fab25c0a58392f75a5da125f0febd253bddcf144feb1274fee781e86a0561557a22ef33b317be37190c74fdaacf3cb2fa95e1c10cea75cc73caf82afeefe46dc25124aaef61c7f9e7e4e93a453f2c4540644b310ae4f8ececf9cb509720e460b553dc61cde86df0ec09838bc3cf9efe36be03036264f2eaf0ecf5e1e5ebc34f3d6e49dd742bab8a39022fcd28e5b33910d9cec2bc4d351939bfad1c13541bb5a245557b64f4478d2f0c3b1cfa31328ed7e3254c9e10aa61c65a876c22ffa76952cf876458ac1d9362e068fd3ae3789f5b7c165d277e368cf798a33fec38fe7975794aac3449e5387a134ff19aeebfb4c00409728c347c2d132b179c757e9205f6085f7fd2805a32bdda89571a719ef83fd7d90d8fe19b428e5ad3a856a23fb53b62c41f9ac56ec58ab1d20128315e1780a276ee9ba90ae6918c85b3b12f63ddb357e4df3ac98a9e1a30ea1490d33603b7b7d860ac0667f72db9181eabbba9e9036d57e03f07ef0602ed7c5ac1efaa3d7779df56a252a2c61b4398b12743c856037e2a12c6648864c8a25a9a1d66ed670f181f6cb39debe1031258ad9009307a967a0cbc1b86701991264a1462237a4aea743af2e8fb7207d69542de5337b3a8a66861e1474c5ae3ab6edeab36c88c870bc1e40847db009ab1fdf335fe9f6f4297b824fde43810fd44884f5ef7b0db044561354d4a24707dac5d8eec06fc8b975d18c5297ea5a595373755910ed8022c240179555b6aca9870d005b049fde42ea1e12ace45b60c06c51949530271ddd177cefb243254584b5dabbd94b5c3e423d46528d61029c8f195ea0fb4c3eacb26261ce664cde97acbc135595cd440d974b8435c2102ec4e2f8f34a33adc19b5acf8b55ce1fd8bdc873d42b94eb8aad0bd55b8c1affb01210a9e05e7c93e7ecaf6b1026d31c0c60129517773ccf665072184c68521970c0de3b3a7c6063326d917ea01f845e4f9e0aef783e54d34aa2aac739611abf745ae38698ecf1e436a8f35a540668de167759b9ae0fbb6c0400b0c0b46e50b512e9f7bc423f3425c6d01b110d8428c4ac8453bb87d91a4c700831eba7fda9d338a5268df1ce9ecd8bf00c6d99b990c2b68aa1f7ef812bcc70357b582538dbc225c5e659554b7663a868835eb881f4e97688cac7fa9daa0d3b932028b5706e5238b7e843523587a21be40fd3330faa354504ad4ec3747228f86e1e18e84cd5747c3476fc8fb0323f9a63de47f0f5aa6659b1c81f86eda225d9e540cc50057cbb3a612344c9f4d814c05f5daee309d491fe98795b85817178a79f4e70a010f913adfaeb01cb5218970cd4429967096b4a141dcf405a051ea5fd302f403b9350cddb8e45847233f53eace843aa267b3e6407c4383f6609a57b4b5b44dbd3d86cb0ffb20ba0a7da5005e08d43e6afc4aa12b528a4db28505814ec637440f9b881f3e9ea6f617833c7d62c0594214797a6336b5aee774cc6a18b9b6c1cf6eb743a0e83b4f0ddb29c65c1cbc3e1e665ccfe66fcfded263966a3f783c9a4984caa0f23e3baa5e150aafc24cacca1fbd63d358741e77ee5dc1cbf3915fce654f07fcfa920960003b0010fd89b72a5c635b0e97206cc81d2119b6f81f47fbec9d762556585fc6b3d9a9695f01b317e0649f4bf5ff43fd7a27a38cd6adfb1e127f57427cf6a89ffaa0224adf4eb752e338c2ffe6b30f7a49a46d83d29f3cf45de9b9c71d476bbc22942711cc048e8bb217eac9a6ac4d85f3dacc4cc517fdfcdc4b09cab97f6b049b08f6c9f026cf1c54fa48ee8e5d742f26f84f0bf16cb1b5179e028a9b9572b31b56af442cc27bd10db6f0f847630a473f659d4416a62f4e840fbda800b451b1a9d00c7b78af17d4b63070033d880109d7c92327cc1be7ae299c86e881f023b607f7b6463767de3d73ad5c62cc25e7e8415ca93fb503eae73ead7e921c4c4ec448a659d4093e937aaf0ccaff5bdba795ffbb0b20d91a81c15f1026c401a96d643f2dcabd8466fd268b9f08b5053ed7d03a894c4176f57cfc2c0d0104c4a4f11ba65588e885eea3b43c2c924723371d8011fdc4386ab6b4b6379483f5b6c4776f76885a6a7f3b8b186849e95e7add2967b331497c6d8a99e51136d9c12eec5f9d5d5f96b80ac3969e031f580922dadea77f3eb0cda5e1d2965bfba009e38d89e8f7ed7e424efbd61c0cba356b3038499bd3c3e3d3ebaba7e73fee6fcddf145d0a7b01abf6b8a746296ec15be7237cfae2631cfde63717d080dd1cf4d164b6f65f91dd366a078a2d981b7ecc6ee324966b6c1a5421f73da98b7295a1ba93cd87136f24d62ae824ad28c6336b271bccb06a6291f04e2f814362b8fac87b3d938963301b75a0bde389269b09345fa17142c635fa0835a34d8a9d1da292a1210a6ffbfc3588487c8d4bae166522cd58edddf80049462698ea8f4b22fc572c0c49d6cf643d9e48092f23c31ff6e029adb4e0d98eb49eb38c8bc7a03410e0a46d2e61680f2193e0bd21e7bf8c472258a738b0ab5ccd01d4c4f1991915eb68e3296b711f44bf53f4cbb6f1c62302876096e30b2640b21c10021aafcc12603497bb5045beb17f9f434f08dbb1998c7fb0d8d0727020f65892968f3b25800e00fb4f0684a0183e354edd118b30b49e71df05a31cd86153638ac342435f0f8231e807a4dbb8591aba1ffc6b349f20523e11ebfa4cb7eba99d8c5e68bee27fe2163d2f38e034abef95cf7cc5b0c1b591937699f8bcb99488a1d777549899ed14887af32a67aad039525bbcbc43d8606b1f476d9c5516d25a400dd080046672e4e25af04ab219ad2309472b63b3a0aa2366448b13c2964f92e13f7dd845f279aebc38c22b7224f03691bb6138fbc445eaacec72c6adc719d992d4a3e6553d444e9695a12d428191abcb83a7c11af8d1736690bac0301e76dc8b10d86b8a2944c56d9422d788e9e8125aca5a01a940f262a103b717103676521acf731a0abc912eab0c9b160a3537d88d39efc23254d4860eb1991a0b1efecd2e2e692f4aaf87aa2264e6da66a081a8d36cd34b70e9868bc05b24ef06aa230d38aa4344e587f4f8a7b060c5a4d37e0b112fecb4c6a476cabb505fc4b56330bcd1eb07a55093e43a88ca80d206683a5916e3bda9a481fc5d73302446e509e44fa9866e58deaa729e62e29eae9d6351fb0f7939e7f6eea81cf0069169f78d54f7a1ffae174a6cedb097561eaa6f43870bdf42083eed0e9a3f2dc59d495258737af70ea769186e6d9cd8394c3ab852dec29de345f07219729fb7533a1912fb415cdab2369480b02195e0a5e4d6f87c361225ea1bf4e1eb770a2daec5e5449fef8acf761d0abcb7535151765297be35eeff17f020000ffff19131b46af693900", - "f11ac88ef2a298849145ed17b7efacd6": "1f8b08000000000000ffbcfd0b9824577d188a9fdf79d4a9eaaeeaeeeaeac7bca7ba7bba7b667677667a7a7a7af65dda5d21ed2eab15124818d0aa851e680512bb8858e191b8003b31f8059f9218ec58343110e384ffa744310412dbed24b60331fe63cb170297c738e67a837c491c736de22fa6e77ee79caaeaeac7cc2e7cf7dedde9ee53a7cefbf13bbff74180104a221f11b471f9def5cdcf677f6c1921f46f11429d879f7ce8da8dd6ab3f8b10cc21043ffe86879ebe8610ca2084bb0821fd0d6f7adb63bff0ae8ffd2b84f0af207860e3f1471f7a245bbe763f8207ff334268fbf1c71f7d88fc127913824e0621b4f4f8936ffddb1f46b50e82ce1642fcce37bdf9e187be417eeae308def04e84c8c79f7ce86f5f836fc2fb10bc710921e43ef5d0938ffeda6fbda585e08de710c2dfbff6e6a7df8a0842089e3a27de23027bf07ec4108297c36308a13b82dfbf44d3e8c751ec9f8fd0bb32a8f7523c0e79087d1bc187f67e013d061f42221fc4debaf29b049f3904c12f91a9e61085c71142f7210f315440805cb4840ea1d3e41fb865f79f978e963e54ce566865b5f2aeca4f573e54f9ff57fea20635ad96aa6dd41ead7da06ed45375a75e5cf9cd3fddbb91be71f1c6a337de74e36d373e7ce313373e73e37337fee8db68effb7b7b413b96d06aacdcf797b3155c59192a974d2817dd801bf91b976f3c7ee3cd37de77e39fdc78fe46efc617837261ef4ff676f7fef7bdfff8376ffde68d6f5ef9c61f7ee39ddfa05fcf7fed7f7ced17bff681affdc4d7eefedada57ddafce7fb5f095bffcca6f7de51f7d65f12bb35f297e25f7a527678ecc1c9ea9cf2ccd9467dc99cc4c6a469fc1d37f33f507c1a8fcbff10f10eceda174ac7c8c50fb28a0a1f9ba595c67af0b1f862efa270855d7a03ef65791dfadadedf629507fcdcd4271018acdadda205d6bab56296bf350d6780ad45f3e27938dfde573833495f2a08c56259e219f2b3437b74fc2e6a0ded656ad0ebf48386326e7b6412d43770cc3d6b901099b6b1a2154d758926ba6969d3793163ea7695a269998b2345373ac54564b32ab9848d89aa6618c396396a1e7cd7c39959a4a6a49c618263256d79d64d2318c0ce7094ae939ceb56c323993e2299e4d590e4f6ba9e96432cbb986f1356e71919713a018538229c698184c4b273493514e0805c03ae733766a269174b89ea480a162398e55c19824346e271253a26c6e699ac9984e984e09974dc92458823183520d13acda6c723d9bb0e72d33a7eb26c54151650234c1b99d4cce64784a17bb6eaf0bbbd0456711aab6ebedba1cbf4a59e3751e4e569daf41a5ac8989e2455e9453d6dcdc6e17dbe1e817db0bd0dcdc6e6dd5e00fe0831f04ae3b163308fcac6359cecf023198e5e87cdf37c7e0d14781a674cb21041efca868e8471f04421c4b4fd103de8975e9eded420f3a6811a16a256cb16aed7108db17b4adeb8b5a7d514614ea0d3faa9080547b5d8ca08b66d1227a1021288b95a8e57362d1159a9b62a96db7b6c492ac914aabd94e411ae45a9d874a6b63fb34446b510e5eb08eebe55a2bbe39a2950ea8b5bef6b25c2e977bd9da7a2b16ce7bde299ad0ca8401e01d42cb8c638c1965a6ce2d46390021db0413db4a2d15cc5cc2c8702d49282104ba638505e17ec7fb809ed68f104e88aef1a52c5bd39294198c9b8c514699a513ac539c5b4c9aa22c43d3d2ba9e4d18b6aea0423036589c1c0694c02901da4318f577bbfd1e74fb083afd9e821b5de44107c40989aa39ad52aeb5b6b69b9b05e8ec2c2fef884f57fdec208c5c39973e7a1bfabb0839f1416a476026821ce11ce7c44f3e7cdac835c2616d2a98b0b5d9a86fe42a237044ad8843b025dad30a9f140829e637b61a7f60cedb66ce30d29c6ab4413462ce65d2e5ecd4aae3b89695e329b1580000c46f8ae72ccb759cd5a95c25939933611378c648144cb501a98e7f4224fb8700bf267e3f4638e539ebbfc331ae114274460cdac08ce829ca98a1ebc554aae4887548754a752a42e09452a9a2aeeb9ac6ec041c026e124a358ddb496669c369358b256ded330068641daf1cbc8e79335f712aad66abd26ae69bfbaec857795ec777dd8ebbff02eb787bc8edba3d095f7661173a6809a16aa91d4217b157f2b9c2228470631d4af2b702bdfe17ae32e658dca45dca18ed52935b0e6357a129c6aef70435b55496d1ae04e1b41ba4bd2a20b784073db986447d6abd04753537b74f832d7f5b7631acb70e9fead224e7495150cee449fa443695ca3e41933c9565ec4b5dc618eb064f57fb5f4865b329685e652c9be2493ad2bf7a082717a1247f9b253ea83b3899bed40d3a70b5fffbaab427a8e8429289eeb24f7729cba63453b4c372ae069d177978928df44ff4cd96e399b76375cbbe05f555a01bef939953bd51fdcda6ba725ccd5cce94a32e0720d665850b60041e3a3ed2bf03a772acd70df82b3f18c4f3fdaf9e0f86cf173545f1501b8aff941fb4e7c285a0e1be6ab81fa492f12267103fc053bad045c7c2f1290eda35be1cf61d357f42050736a833de83837b1c3bbbe611aa420883c4f9151c5bd190c2a7fb7ff5ac58fdbb96840b60b0a458174530c46310ff6cff7b723324d170d9d17118f5bc1d9d8ce2541ccecc8232a1237efadf53355148840d50e31c96bf20608a360f10e1085175aafc0a742716e358801ceb594804abbfffbda82ba3ed57080984a7bb2a5b0e169c02e88d6617a51a8c81272a1c1fb8a0fdc8871eea214bc0a560b3065842bf275be709ec40152a3b3d38f7f26237b4f31bb979988386688e0098a2bbf56284e28e039f01d0f11cabe3772ca7f7bdb628fc2a13eb88ed0623f1b9cf0583d571b329776ad972ba5dc7eaf6ae6e3f2d1a23e005a3bb419acf7f2e983604c8471df001a12984aa3bd0088ecb86da8dc198c13baf614d208ad73036f82e37f03b7c4c08f60923dc3038616a7c7ce4818f7665596a598ab9dd814670b236daa7007c55021e14f945550609cb0c7000173c70455902f3df81a049c5a030b90c3762b9444bc08d972b2b1265f5900b1d70d1b46c573de864b065da3b20dad5824ebc43a2d86ebcc7b25c8491b7d7956b6c569c8c2c58aeb23081a80c9e0ac5e11582ce3e20006a7b65a52d7e1ff86ebf2b6a820e370cf781b33d01d67b2bedf68a0a9d7dc035b848207aa0d6510f23f05112ed20d45645cb92db9583c06a73b390cf698720af22fc995a6d66a656fb9defae044ba0231646275818abdf158895ef9fb972c593e966666abb2be1ca522bae13acb81581817957ce9cb98210a208edfd2646f063c840f3a884d6e50e5480a9244642edc056291f4c1dafb49abcd2aa042374122ae03b56cf720075fa6217592ef8aee538473cafd3f3c4c6b71c0f1e1483e3bad954cf723a1dc7eaa5b21d77b7a3b070394e1d84a00b1eca89d3ae5d9a00c559d01c55ef56cd174533eaabeef9943960ed21056c2cc7f1656f7d314cbe1c09d7b15cd9c0119cbf8e4edd04e70f11d97c4eab0f00537cbaf645a05a97af5fbf7cf9faf575b1f719f58239691f80b07b32c3e5cbd7bf204180cf93cc0be66e3ba0d9f77631828edcafab821a1750780e026a2d58b83e00245f7deccc15985f3ab30699d6c58bbbedf357ce1046acedf2da998badd64559961a07b1e1168117ebbc5d6f03bafb797ffe977e69de7f1ebabf3afd9ecfde77df67df333d04170d9443a8ba0e6928f2b6cc753ac88fd1bfb87cf95ff80bcf3db7f027cedd4f6d36de7cb7f3f0c35f9ffd955f997dcf675ffdeacf76de7a8f7df5aa7dcf5bdb6d553f7c1f7e099d08790d03022a44e0e38c064564d56b224d1cf5afc3f7f11b0966842498362328664c31d96ab56619d3929a24e501e0364c0bfcd834c0e1573ff553cc7e459e50eac069c0c018aba834a5b5f5e33a311833184d68cca09811fc26a0982ede99c97ee8958fcf2f6cf102957b47ed6d4b429536424e80d82a10024390a47ec0930bf218921b08bea0f6512c6a3c0c5e7858f5a363cb1f0ba8b5a2da7858c25031b8e172c937e6a03807794543a9013e01adedad56e304b430badc5eb92d93b96da57d19b0692e3cf99ad73cb9609a18bebf7d69b55c5ebdb48d090001c0905b29b4aedc79e7955661c5c118030620189100e6769185a605d47504ee1a20e55bb57a0c1616f3db72dfb55b9a9cdd8e001792d852bfcde972f9d2f24a756965f952a5025e36d5efcab1e8a4b29d30e54337a6292b729ebf31a569531a47017c537b45d0af19b1661dbb5d2d158b727dad032fd5db459ba3e7c0eb9ffb862da79dac3f07fff6b9f273cfc1a9fe7f78aef78d26a194ac3ff75cf93938f19ca0b3dcbd1e7c137c44918ef208b58bed3ae7ed3a0701ab8a62956ed72a8f5ffed2e52fddf98ecb87e127cd9cbe76794dd7a1547cb588fde091bbde013d838bc89c592821c91145b00b1e9a93e7661a46b1d57688adf678927dfb6a004702e007480008f0187d29243024e00324d3495c3980af621dc40e9e58357c02f6b20e70e46a70e25c0d2b7d623ca61b85c2fa27a4466804ee366f1dee92d86ab929b0bd1cb0196e05c8821b3227d048fb6aa87193f6c9c615610d5ac572ad0e92bb5311ad5bbf5d5477fbfa7aabb5b67e7b3e97cbdfbebef697d7ee5edc99eaffa5edf4dc9d22246de7fa65d1c291642d957d0fdd7dcdb1fb7f39b5b3d8736c481677dccbd763edcba222aa21c44a76a95d0a36960026367778b1dd82c2767b7b2b02a7d0ebfb30e5f57f328420de914f9ffb7b7d7fe7e155c7494e9bd694915b72c1f7222833e581fea9737fffe9fe7ba8b9ec1ccf19898451e88831626370eff631bc7a080e16879ed8504a36208504c4ecf6254a00e2bbfff410d89327bb3cdf872064bfa99008cb715008f706d0b11306dc30d08d80e3c47e38f1c655aa07c0f3f6d0138f77433549b5b8df8dc3f64fc6fae7c47af1c9b00f16b8634d1e80f8de782fd47cfc1646f02ed98f55b4835e76f07c0ccf40253fa0e1c60e26d88d4f4873e8988ae15a56340743875408bf05c05630da0da37a61a0130646fab1f283f6a33ed2abd17ec497cc0f7cdc8ef7c41feb40d42509473a7bbbd0850e72d10ada44a87a0a5a27c45f63ab56dfd86aac815c2bf660dc438cbf5869a920fc286380cde3b5f79bb96caadbba58f8bc272af03a1d713ef6123326d6090681f42cad6753fd9e99bbd89adf7c85a0537c4f7c0bda6e6f177cd90e04437bed3890a1893f040e1cab89aa7cf135b3150f832b8a139f3d148620587b0a1ebd16bd013d8d7e0cfd94e4c570255ba847b28250a6a00052247908a50b8a448c640f01e9ac72b72329446bab46e4d028d6321b3a1f06e1522c0ccf9b45e392380b2f250a66697dbd545ae7da259e318c0cbfa471f1bc5eba9534b9b9b95c6e6eaeffaf8240f881970701ef80728de20f50377861e19d30d0ef0ed599cbcdc571f1067a00a16aa3ceeb12ab11f872bd5d6f28cc599b7080b565ba9001760b78401dfeb1698255ce2def642c304d3343f0c6eaea293bab4ed5cdc387cf150a4c4febb94aee6870e01f3d1aa000c78ed19118595a6667395716a559959c9ed659a170eef0e14d754067ed53abab1b9864ba5121fb172bf1bc80779944d30ab318a6b5e32b9da8313a0e8aa28ba5eb0664f6c77b67ae5c39a3be5a172fb6e457f06e3724b03b8286169ffeaea0a5c4a717be43437b23898ae82c7a859ca5586d3cdec2b2c60722add83e683723c15638195c6d005badf1ca1066a44e85e8f342a1ac95057253d6ca05d1b491e75f081bec0519c6a989ee6cfefd02417a7f7e56241c7eda15b9c113dfd18934a029af4a5c36b6ef2bf1edbf0f70b82590108dc5a010e8cdd474adc02cad50d696b4722199d7e70966f43ccf18aa938370f86e25f64e8483ac614933b51ab861ead97c7e56451b197e9e3235748370f46e25f66e8532912f2c235c1b83317a3080976383d18ac1c8627e0c628e0d4c3e0625ebad38cc849e35a53ffdb43e65a9ae027e3a9ccba731a8a6de34c5b58471f6ac9150a9994ecf3e3658518f9da53a53396f2d550c76dd8bfea9a2fc2361749c0b10319ae3ea0311673b2efa8b1644c82618cdaeca1ca9482dc491ecaacc918a64187e9b702a66d7c8703d63e0a5e9e9256c6474b98a18a59c4c97cbd3b790e628108822a8bee8388b3a8db2610c997c3e730b69bef9c3543e21cd333f4ce513d28cafed68198bcd5f1f5ed429e011a82b0eafdf5320f6f8cd23e18b62a116cada393665876bd69e62e7e4ba535b2f8c1a4931785c08534719878a14c1e1d8f1744331081943b0bf82d6d1717407ba173d88de387c32d5f709b3382cd8278db34f7cfc5cf182536bf4038f8d447c353cfa469ec38f1b867a63013f3a44c65ef5fdfdb389b5a2ef3b4e43a314ef51353632d55b188de22d8e4c3422fd5f0899ed2329fedec873840974239e7b841b84813d34d6efce8491b8c57188f71d62f1649f71d86fa53913c661bcff33234b6274697c7c741cbcf15e43b400fae383d3197f8710d2623c8ec7d14fa2df452fa23f46a82a912085b9d605bcc815b8c275373695f6cf3168140b9bededad75d8da3c095bdbede63168ef40637bb3b1b5d168b6d7a05e696d6cb69a6bd0aa9c82b644905b029a04c8f176bb9e827a4bd6b4b1d5a84722c810076b6c6eb7aae28cd8da16d068071a92692a1ee3a7f331682b01d52911689e82f60093aec7a893e2409ad0dcdc8699bca669dce25a4a03d0ee38ff06420008a7808b9801c605a0248509068079a2e10c24001c6a5000583b9ac9ec54ab872e5c4b4db347df4935be96d3344dd30d8d198cc3c35730c380296091fb9ee3c7eeb9e7184b30c0c00cc6641154a757a8a125d294bcb87ae2c4eaa1132738c5841082a9c3b5750dc43f0c0d8ddff786f3663199625a01634c711180504a44b3344b4b11a2893f96d4082333578e1eaa567732992b77cc9deb5c31b866c3baae3535bea571ae2d6ada8507a92eeb972c77d922edd83df71c3f762f001010fd25945c21349d600972a76cd8a1d513efb53125c4c684047cdec1fe398d2eeebf6f8ac387ff60d262a7bdc8350956c0cb82c0dbd74b533523bd3a4dd92b4f9c78e52b4f309d019c59ab1f4f2466d3a5f58d90261c830cef2fad4f3bd92930a72c91efc42b0198ced6ce6c2c19c9f5d2fb07e45d4cbeb08d8ea153e82e84a0525f83fa8668742305e948faceb542a448500ad7ea096805aa4facd26a8a4fab54965a0fcdd2a6642bc3b7ca53ac6879b7dde699536caa9cb4eda4a903d8e9b40d9ef8d6cda46df7ff85e701f2bc7e8f122862420151828b40403f6716a965d1a2792e6b5ab66997ad6e2693c9b8aef8ee5a4b69d3b6ccecaf789ee7cdd12daaeb748bce0dc9918ea293083181c0d6dbd553701294a696e8999a80806e6b3bed624bce4c73339815b179a1d26a62c4183cf264bf0f10e8f4094ac4b13e4e287eddec2334c9e5ca85641aa0dfeb743c9ea4f0c8cceb30251f0fd34a8d40807effc9478031807452e501b713ca713f22db7b276494343ac427c577b9a6f055856a2a34355a490a4dcd6f142a9bdbf55cad11c9b14e418baf839cd0564dcb6f141ae2acaf55366a8d9a562c171a0bb0882553398dc56c17d7605deadeb64f4171a3d0286caf434dbe13205142c2edd6768d6f88c5c165b9a2a02d51d03c2881079630ef7420563b8da5e2dd62a8a528f507826c9b85c6c6662315d42423e5e2910b68b310b48c6354709277ac250b09ab9c2dd42ca291c5863e57160061a66095b36621615573e654d29c4d4f970d706648319161856980845967392d0904cf09f041e04c8a64e04c62464b03c64e8661924ed80563364359226b1cd6733497d65239ab946c240c27999ed53592b1ed4c861b8430d24867ed869134528635a5639cc952d10a3a9b4f002d17a94e92cc98cf24727a52d76d9acf6836e4310160789152cc350b304c2572c9ea8e86b5b4cde88b53aba9b5e394a652391bea8b89c6a29135f46c62e68865a5352d636bdc30f1dc0ea4cd3c5c64998475648699cc72ed122bf099a40b29b05d9ee140c00502496e639664d9051d6b8685c91de9aa4d416335ce41a3f39a46ccc4219df3b4b591c84012cc293d492d9d505c4a2e1a50d20abc4059d2c060cc67798aebba96d2f3654692c579009c48d99c2775ce81509752236bb8a2314651f66c9ad28daa4ef5858c91d10359c7f3724dafa03bd1e30839717d0fb1408f425cb364078e62b5b8997c8e5846c5d17c07bfae64770501c2c9ae9e481adf249c108e778d644287dfa79cfce11f124e2d27a10f5239d67ef140af618cf13592311219d2c100b843320923433e8af1e357013b969121511acbb986f1e38fe3b1e861d9cf217419bd16a16a25a6c51ed3428da9a20b8a446196c3e4e53819594c411c03835d9278e2bc803be7af26898041247935fefcfb9035cd2c6c9c4b98b66d26ce6d8c3c5f0e4ea25e943f2cef89c4d0f3af4fce1f3dbf18c7c701f97b1f071fba520e5959854665a31c72aa4fc3f6e62214a4f4b6028f51801e004da693fc757a9ebf4e4fa493d0cd24fbcb09a65fd1f52b3a4bc07f4e6614fc2c21047f0c1d544267432dafe8dc0dc381704d8c5ef5e0d76204fff8687d7967679919cc3a349bca6653a5f9f94396d4d3ed77f77b73149092f6011cde16c393b54faeacac318311fef03ef144c9063172f75e842f808f72a2378ee2202e42219706ad2c00f94968c6a6b8e256679f35a78c4f3aceb3d996f34923714d9cedcedc9c03de6c35617cd269659f759c4f1a53e6b32a3ea7cec64e2037cfa02535564db5ba9a622136db957ca555898bfcb66ad0712caecf67b3f33ab79caee7eeba4a982495fb2c470c8263b9aee739d640a2839029700c691340104705544577a297a3bbd12bd1abd1eb50073d227641be59afe49b4e5c67aad0ac0c3f562bf940916a10186e62050275e3e2c82fafe49b805cd777dd5d2559c899bb662e678a0f786e4429b832a22bd2f4773b9d4ec78fbe5cd7f55cd7053767ca54435f9e2b16b8abbe7366df97e5f866aeef77dcce6ef071dd21dd9a3584aaa55680b78f73cad321ee68c7654c9d4ea0ded70b38d39f089ecf2beea81426b9f776ae32c6682f6063ffaad4f1bb20957d943aa2824714b901fe97468be888c093aa81ee445c767412069aa4c3ba6bd5e6f05b40a1fe93f3c92874a9df912deb4a896b14ed068bc7ea4b6dca5ef015174e86323f3444b35968161d42ebe80cba1ba1f690c469e4a934bc3e48a92525d9f3d06c95f2957cd0d561a1d5358f1b06975fddf0eb7b311dce237b089054eaf400b922a6ff9e8e4828bebc50332f0a74c3111799fbbddd5dc7f2dc5d4ff5bddf1968f2d198de931de9c95564734b52f258daaa15477ac473da21103ba1996fb69ad0539581efed2129a3be3726617c520d6fcf05a544e707525e35fca239b29d9ee7c5cea925b489ee43a83abe48871553c5f133a2d6289247163d93b5a6c118d51c146d0ab50a7fb7df11d00cbab9b9b9fe89d1b7b19c9f18d6547c5174e3c5d5707f84f40ea0e8dd040d47097b95ed92868e48fdcd562557682bc5cd7a8cfacea740a9740ee970ced4fcda572de7421ba47a40fb42b01dc51296a0a5eb58feb1572703130fa539e70fe428b1faa704ec1fb23e8aeb249614693f0ff09ba72fb65a176fb3b259514d2ed7ffbf24cbe7f55b172e6cbd3e637ddd9a9eb6be6e655e3f53adcebc3ec633ad053ad623051f82b0e48132b7dfba2801a6ec86d5a9ceced4b229cbb908dd8bad4e362557ce6e2adb99ad5667d5c66e5d8c682f802e7a3bfaf240c3650e8ab9427e21d407dbe74fbc3d26bf370b4a08133038b6369b8ab00935f546fe5a01d9b3dd3a052da5c357b11be5805fdfdede6aad41bdb1b5d158839694002875b4c6d6763b54ff8b4c84442b95e29ab21bcc697c2327689e489b2d05911e0e0cfe61f9470030068a0180500cb878ba0a60641340b0e124128e0a1800d5d305c0328964420459c3bfe05f2ef7b2f5b5d6c63d73996a668e0124320c63ae03a6009c4aea22639a8be9f4a269661800c1940305cc39c62c9d00369759caccddb31e6a026926c794109d622de0a36026bfa9fc269870021816d72dc00ccbae00a604acf545c040b84ca2514ce5370bcbd008e51453a299bcb52686a5bfb55c32d2dccc2630c64631052295c9b1a9270c0c60ba49a2d1d49461248c843195a21a31174dd1e144829b443331d108a48a3a2638913579da282d0fc93caba8814ea34b028f66126153533ea24eb53d608c55637cb161796d7de8890f3dc15fdc6707b8dafacaf2c9ac6d674f2eafac974ecedca76513b939bdff5fcf3ef0c0d93357aea4d481a12512da8450eabe9993a578096b2b2b27edac63dfa7e973b94476ebca19554ecfe022a33c4454c00f03c1de52f8c31c3a8410089a690dc439c12531c523bde93a97bb5c1e6ded52b102bf4ed3897e2f91a167b22971249c3d99caf61ceb4c1b0adbb7c1253d99d47ff15f8a5dfc2f7ff193d994eba6b2be2fadac3b18a1dd806f8cda31bb3b160bf358d8afce0a90305b8528d40b035df533f6414aa6a170c5146aa096e4dcdc866e47e7d1ab11826174b0fdc3a383d5e192a0a370c26caa13c30425d8eb0a4c711413ecef86e9c1cb9932e1241450c1cd54760805ec0c3204f4a09acb249a456584e25cc431eca5ceebbc5552a03895cd3ed597ba3af26c3fd2753b1df023fda06e3615621da96c7fb7e3f9dddd21fa33874ea0c7106a0f9fe98a3fd9e69548c9a3d10ee4e93143dd46bb21b3b443cbde80fc6ce74f054605bc998690201769bb9a497b81655d8fb26cea1d4f815eb40485f2946eebb36b36b890cd5d6ccdac655d3b4ffee4622b8cc3f8cd462135534b1ae0dea5670c95c265ac17d8bdf5a44ddb6d4fe9c9da8c55349e2238970517ecb5d9d6c5bced66d7668cccefb62e86917a467f0a8c646d2655d4ddcb98a82443fcc22c6a48adc7663bb6a04e0277225ee8407d6560f854814e7ff783deff9473d2b11ccf9764c4bdbf1a18e0fdaa52eb72c18d748bffa707cb22f6130a73619fb857c47615be8b637aa2dec15aa20e0f548dd782237c313acadbd194ecab347a5b879a1a37692768e8aa68d24a6029b8bff668fff31dc618eb04d3b0f22f456f5f905897665214d9c3087cdd09acc6a2d54c4a7633df0437c28cbd3de4fbd08d54e2bcfe2ef8fe30de9f44d3a88a9ae836746944f76648672f2ea91ad6ede3c308ea04eefb63318ae4e99023fff70618721c5b76faf78ee9eb44fa9403c1dd98622544b2bcd81c57a40dd82d20d94cd20331a14e80bd7d7b60a36285d4e0f9d04aee19cbe9fb31fa706560b2c2e885ef8af8ef5e08b5aa050920b1bde06b682daa76de026abf5f3bfdd1c6c58d6b9e1c69e76ed4baf38c8d1adb74c71b3a68e782a065616414638a88d2acebe0fd8cd1c012389b9250b77995b17e4f42f6c8ccf66a88e84b23dccd286d2afb0435b53d14b7bbbdda1c10b4037ebf6c6bfb8086caa3ecc0b6f6263454acd2a8a9031b60c7f2190d1aa20e8bab720b832bc301281ab474a0f766a2063a891e1ade7b9562dca26ca8cd31abb32149fb400f7042a7146fd3133881d8243f4e34a22508ae7e5620409fad626270a2618f608cbdbf09527d186b841b18573f2370adcf5431496894110f638c775539b3d5e341d6aac0a3aa410e8f302a8a3b1ea63a87b14a2530aea5a0724f21ca08f1180f621e1d410d899dbc4ae9a00dec4e786c1225c936f2cc2bad667e425c75240e50609cf2a41fce2c34a3a0e5fbf170b02e652271fc0784bfb45e9161a5d91b843a5e37fee00e1e148fd69578988f66110a74d217635374325a96bdbe5cf73f2fd797c7d83f92ebce978f3fff62688ff6eccfcb253674a6dd8910ec632e2d6d5c94a943885016251e32f108acd539148253c8a366dc8affbd7f07f0f5cb775fbb76b753b537664f96c68f404d6b4331d81f9e32555745bdafcd92dae5eb223be71ba9ccf83998ab67db03fba70eba436a99456bbbde1c5dd6eb306ad17f5cf473c2fa874f05ad30aadddf36e2cdf3c217fd9f95e8c5975892378da0bf9e808ecf0480c9e80666dd720a62267ed220fbcb948dbc96b455c883280627edbdd1fc1f87e8f40ee40ba159aba4a88a073cb52b0177ad121e0af0c5bee49965040e6d39192d91e8bf34a6ee1e053c5f2e4d3f95859e03aed89b217a2b7673c04094d6b19342e24bd13381ffa28fc01e74d1eb1062ca7dc709c93bd8d86a84ac042903df6ac57c0d453683f994e40c889518ba13d9817c63411aba295f225aa151d2b6ebf057c9fb2b4b1a980ec718f404c60cc06092ce67f9747ad97196d3e93c034c8866006818120660cc7326e895cafdc924863e90e4eaf452265db030c5c9791ba84e21a39374c2343186743dc538cd2e2693a6994c2e662967a97a1a00b06926d244cfc8f4f642122858c57466697a7a0ee6959d2596b6100fa1d7a27f1d8dc41a34d6a0beb5dd3a2179248a6d120dc956adbe556b8db049a48f94817b25251a8ed82405ad51a917b44669a3d68e0c00d7a0de90160af59bf161a4583b979705857c98e10ae053408951af910cd3096002cc20c00d42298026065b3399396d1829c994211a11d10000d4d481160a6d8dc385aa81fb4f60c3b87d6e4e834486018688c14230066a274d379d764dd3a6627031e5004cb2580058c6003a3f77bbb1c82c2d3f9b018e09c68c00068cb16e1b20d224f46cd2b0b9399b0051a2ceb993240c1b5309c05cd70ccc0c209440c2d180809e4a240a998c6de68bc57c6ec13225cf489f0a9928c4d48d0406b0164dc2496ada301209c3984e138d988b16004e18ba49b8098413484de99840326b59f3b9189f7916b5d11de8fe9b59c8c99fd6968c6c6eca24f99cccd00eb9cf81a63b1f7906d45a5b576671826c888557abd51d3b93b1dbb5ea6a2c7c9f6dfe8e69cbaf8e6d6a22a899b6b4b11b294085fbcd8cbd531545d4dac3c57d3ec86b9b8f0505da669cfeb5d00a6a21541de602dda2a520742208f3e43e44554b1c3a97af5fef85c63cbbfbd2519e3aa12e5f8febb51284da8be0a03ff3feb7ffe4fd191ea2dd17d1ede81508550f764f5529fec03c3140a2a50a4f906057f2826e95fbb53b92d11385fdb75b657a0dcd4d139d0eb1cc606a7e88def8d12970eb5d0867ebd69b1dc36996d13d81f58538fcea133cb0886646588b888f21350a3b96b8cea8c793dd54f6fae5431766d663487be5e1636a2d89e6561e39aa16937873edeed50b336b1166d8cba62e5fafccc788839de50db50053d9dd6caabdbcae96a67875f7b5f242402488c372302787d19de895038aeaa636bd023fbce5ede44be4e5fc8500b5397f3e40782e9c0fe8a6f3e719f36fb2d304b2cce8850b93f20ecadf9f9d11db86b139eda037055a1a52e9b3564e83d2d850f39a025e17715a6e3150df50f8fb0214b9882b6c9e0e7439d46c9e827651c489b29462879c611e1f8d3f3d4e383bccf9929ee787f58c914e361319c33656f41caf70beca74723c914e278e139d1ee6bccaf3fa21ddd6338966326d64f5559ed3cbbabe4275723c994e27ff34b054fe23ddd60fe9795ee5fc30d5f10951c409c2d92ae7159ee7abba6da82232fa619ed797383fccb82a42d4b42292e5f415c3160d4aa6ff41dca619d0fcde6fc07f81f7484e8f266d6a7891b78bdbd27aa65d87232649fdd3ea09eb2d6ff9f0752b3bf3ee99c3e6afc17bacc3d3ef9ece5ad79fbb7edd3c51fda716353f25d79c9249cfa005544688354843e15f3bd0208db8078a7ac0d085ffb54b53869162bb182b8e28f9bae7795e067c8165f67dca9958d48ce73cb73beac7ac72737f7cb292fd18687951d5018cb28ee7ee2af9ee7fc108ce2003cda065b4ad30eb001f0e1924a50d815ce61aedd05653ae8ccad013ecf6bd541623a7efa8cef6d1f391a8e1475c1172b961c019c7725dcbe9abc36a61e1ce8505892e87c204f11b5feb05f44020191cf63c22c06fabacf109dc8988bbd80838c68a771d01e68dede6767c2c953f95c84589631d7bb8a2f8271232adcf5e58bd7cfdce9db46b5fbe2ee295e99f9ed101d657964fd8b68c006fc467c9d396d3d958de89cab19cf9caf5cba71fca317efdb28850167f00a0150ae70e1d6aa8e758dfab92e7fb839f98b72e1bbaf513253e2745741ca162c58ea9280c0c7ae31ed4f663a5ec76bb71ed0a07122372f2b82cdc8580fbd60f8cf5be3c5130af44ef81fe88a2172be808da96bcc1896ccb6102bfddaae49b3cdf6c559c62935448b3ddac378a95762f244e0794a9f45327e6f97ffca32b8f7de4ea4eeec4eb8f3f7c2cf7fa8dd2b98acb6842aab43c6d047d90f4af5a5d0be5a5779496207f14d01e3afa9357aea0a8bd3da9d7f00ef4cfd16feed7de50a1306cf0b8bfc8614fb38185d80427b3959864bb39e2567682435aa5723ce2f33674eb99af375b95308fc8966fe6278c5944ecff39688426b86627b8a9b104a51a91be5318a186c6928c2719d3153d8319213a639c120a2520824ea2066309cdc8685ce49419978080941253a249b135118414c14049204ba6586affc3e6d123413516e7697e879c2b01879e4e8c73338891e65a92514a30e18c26356e7196942de684604cb0ae01d5193328e384102adaaa89c613224d0e184d729e360c5b376cc3a60c4bf7b78234c3a25d5cb658c64ac17ad85aaa919fdbe31615e5500c50ff584cbeeca3ca40be7c2babda1952232a8eda03ef2b6dee1e3083f72a0d0bcb71be1385267d1db81506fe1e22a7157b6882279f90eff74df0513e768e6f688dd8497ed8a4d6c7aac7cd6b475e73cdcacebc6bfa90f902f8e6e1697f3a6b5dfb91c3d7ace34b1f4f11f385986fb20ecaa1c30889155d9243540f9d13b41b4c096e42bf72e218946abc674826091dc77a719b2579c772cec06f3856bf9bcc100fc0b1a0a3429f4f98aee5b40598eafff66faf5a8e99e8614682dfa13664d02242c5d193561a3c04eec85a5b35141ea9b0fbdd36350515819123453fbb95ca2b2b15f0b6c51077421f5faaec143a82ce4bfe5f2b565efb60ae7d1a0682d681bb33050e602a29ba251b0053ff712223df9b53f6f296f9d7aad57a46775ceb8fcd52b62d52763a1359fa37e6adf4ce72b6a496cf6384a492437e8c946f8c53a39e310ef22e551cf29b176c08f094a43c149c4d0c7f4281800824b82109d61d0b7c429ef7fe608b0cb5b98c36c6db5c1df57c27c6bd7d80cb15d88db5adff74c853f52431e1dc1b6b3eacc5524664bea7daa63a23a9a8c81f89120549bfb2031e8c8916d08ea01b87642ae14361ccb42e60bfa85889a9ecff2612a2488d83e51d51fd953322ac700ff15c2cdeb5d53a2ee2ce7bde83737322ae54ba7ef1e56e2811f145d4ceb268f9d907e483c25f44c489add65dc5828c9c9d7bf036efbc88bcefe52fbf5e726338761a2da12d849c4a0c79b1b76a6cd29aa98f24f2a56e4647202e574756cabf19bc1a92777c7b7499fcb7f8db40f7b91bb42b924b8715f2492b0606cdf8c2c89218aebb3b36fd91cf5b576af595355ea9f3e2b0fb055e1c781b80e7e70fb3557feaf127d8e1f9d2fa7a69fe307be2f1297f553dee5667fda9c767abeba5d27a75f6f1295f0547e4e48a7b7f1a5ddedf12f8c04d10b7121e7189d80964deabca91c8fa9be35e93e2ce11fb91fcfcb1586c64e3fb45e59aa4b47ef7b80fa28184bce7588a9714da4f287d6541ab6ca37b116a8ff3bd04e8bd99eb76a918551a41aac31e760dbe61706e6c080ac9e70678f2fc54ea8d61e892e5f47707983588a5f1456e5c1379ae49a5def70e6750a1ae6375c3e3b81f661fe874f968111d156bf2a6cde7c32b285a3dbb13dafa77e60fb31f1faca62008dea4064a2d2db5b8829535a0455c290d9a34e2f1e61607da58ca058a40680f10de493d4ac9371cb01e65e88b6be5f25aa6bcb656ce10733a35cefda5389133c11dc9964d7939f36e954f96c0530cd3710e72ca4d730dc565ba27248fab83de84fe3e7a5650832d8162f3d61ad4f3f596da2eade22968d7f36b21d828e60393c1763e341e9427783582e5656d4855a5515f8045c817474dc8479d6f0cc8ef21e6d0aeaf6774dfc87049e73e8a19790653cc0d4abb98624cf1077f9e88679e31fa91364aa0f1effc598d6a405cfa6f83e70712a6322dcdd7337751857c5e7afbda99336b6b67ce6c5dba0b93f3977e5db78d6f5efafb22fd3f3869a4f99d804171543074143afddad7cab8b75116b8457622ade6f962a260c29bdc7f4879358cfbc7997a5ed9a59a894b0179796949d6b9b6762676362ea3167a057a3342ca0b537b803945fea5e286d5ca759312144b0c7cb20f42355b01f53591a5d102a438a6113f616779437122c4c3cc466e7de1cebae5388f7483e6bf77650875ffff117c0297e6860b70af5f5ebd30bb1ee351541e3ea6f81012e6f929733d5f9044773728ed7da10ebb387066ad19f344fdf6e9b5e112e478fd3b8ce0dd288d1c548c24f671d39dc838b7551a7653f6a2ef03daddedfbe0c3bb1d2b545ab49cbedfebf5a461ea40477116eda04bc37edb47b90dd5fd9c0d8bb96897354e72e10a77944a3d7c2fe4475c381fe344f43f36ee825824f04d1b7be058c1cfa743fec4f9f343bc89bb26782596493ae964bf07045b4e3a099e0c0cd9769f4417d07de86184a0510f346b95a961f420777da3289e4315c7c1831cedba2d230a9b79bbbd913b0adcded83a0a6d479651dea8db451bfee2fd82bcd6c9cffd189577966823cffd5fe95c01e8fabe7f05a003c73b9810fcaa576122ce0d3dc562cfd0d153fd7fe381730aa0ff9d8bf072c8c3cbfbffec3480e3f5bf13c3c30a12c2a17d0e15e707677eb9fed009f2db112f2cc02f65b87472f655dc56bc30e5ccea8a3a0195da963cf9fff055b3274bf14cc3cc31bb15fac10aeca73e2ecfcadb430d9260bd852c9bedad80275f2c6cb61bededcda2b49fabd56b5b6299aaa7e0a52254be94df9e9b6be5ff2c2dfed572b97afaa56c36bb95fd779aa6d9dabfd76c4dd35ecab6ec6cf6a585fb171616be25e3bf95cfe7e1be7c3e9f7f4964aac9dc2f39cd6c36abb2fc7b99eccfb260675bf64b0bb0b070ffc2b7349b69ec5bf9d6dc5c6b887e294a7ef7d0de3d09bc644b43a57cb3de2a32b17d3b81e243cf72bcbedcbc7ea7d3ef82d7ef096a59bded750179aeeb763a1d77d807ca223a824ea00be831780d3c0e3f26f1c331ff1327d531b6038d7a256e51b50075250409641bede29022f5cde53dedcd8d46e06cac19f9d1d86eb4023f1a9b1b8dcdade60e34d41c6a69a8b4360af1eb5436361b31838fa6e29049331151676563ab51d62a5c4eee69d8d86e3473b579908cf3003b9983c6e0906d34db51339a324b73b3d0c86fd41ad1fd2f9b8d7c0a0ec9a1106b6a23d788cb7822b94ebbd9682acf02f5a67a97cf69ed98e44f6a4ea8634b2bc637decf6a9c6b0943d3129a4e396f16decde5954b40009f07c8480b0cf1fd7a20043021b5fd3dd352028433c0308d19c6780a284d632a6d489a94528b26b238472825f34ca7c0921ae194ea8ceaccc82672551b30d6924c33d90a60b00130c516e8446326d30921ba00c69860c830539aa7243861262516609c14c52631d5d8428a5ad43234c3d0e6f524e5da94a6cd0360a2d194a159185f3f8329c584d29f34345bd3312594908c667c4cd776b87e54d375ada269099d3bcdbf3b3086613883316690c1789e40428c5102e30f1ee47dd79a36d38cc3b4c887a70128a5540e854929d06406282184524e282358714609c63a174da53a03b08101400a2800d6349d3142b0c62865405249e9392429cac4ba288932a6a718b340d716349d26f46dd193ad39ace105ca89c60dc7b87cfdbd14670921248be91f88990780b41856aa87b8a8927d65500e4da13979dbdcf2f8891e993648c1543cbc1b5a05281b565ffe136042fc037f609860e6fabee77aaeb787e40f1af20712d63f5e3329b5a2ffc3b5b9028d083f13ab1abeaf6009bd1ca1f6414a72d14d2303a34d79075cbe9202dee0cd7c29ba2640b6ed0523b81825602eab7b558c6745339e8523fd8e99f3a0f3710733fcbef761869d8ff7bb5e68f0db490417ac78ea1e162f282b213d91ba39b3eb790ed1b18775e2785e2734f11d92d7ccddec56a48a1d3b412bfb6bc8847ea60f507e891c4cabfaa58ffb1c3a13dc543332ac95fa09683544131a555e0ce576a12b4fee2c40b3513c16b1b3e1eb0a73ca993cc13a62245c9718bcdf4d7c962698333f9b2fcc50fc99848f2dde156047a6f218eb0483d89183ef628cbbba49fcc467309d779cf9798719ecb3897e979bae4a34ec17c195763f28e692720289992b34272c4bbbd41d2722b329f0c6d6a83f4a30aa19cea60629fb1ef871da90208e92b1fd28cee44abed9aae49bcea4a6904abed9aee49bd0f5d4bfb146ec7a5e473abdf1bdae27fdcd0f55dedff53c6f5816b829b57eca9272a96835e9644539605ddd87bc3e0182846dddc46e65d72999b5c4a25d5eb38cd55496626ab1f1e5c6d309c5840e6fab7a229b3273d9d4f3d954cd4ce223657bdeac99258767f9f88a6516c5f4cf73a6990baf8dbada94fa2872fb20823424ceb913c8449ea4318634cc077a98b57224fc12a77c281b1b32046db46a1b2d3eb4cb2074f6bf47b0359776cf2f17d78bf91567a13dc574aa69e67c4ac64da9386a48abcabde59d9de5fad1a3f5df0a59b88b986838336fcd1d3634ca32497b6d862518cff0cc9c357738c180513b691f9961090d6b84003ca40a58de4131594105ed489bea4868beddae8c094056a151aed5aba7e0388ec914f276bb513d703ae123f35645ca04de36242a5902c896ccfe474826f9afc1b49a9154e5396530306ccef023a18860204d79c232af274c4b8a16a4ace547c3bb86a40bfec85e8044367c73e8a8bc1340b92869a8f93c11d8de06fb98c7dc690e546c55d20653974884f2d150341b737c247235602391e5e5159c335359767c032f49e6e1f3b6c95717b969a72967474e24ecac741637335bcdad4dcd6fe5998253f3170f2ddd3ec32ce936145cc672676ba69d4d618c8fbd6e66aa2c1d6ad97346b96de3b469e6004fbd722bb1688be4b5da0c6138957632724ba4d8cc5c2147a03633bba26ea95576130e7251132127ceb153fbb61158ce05ce6acb1a579ab451df5e34a753671f78e06c6ada5c5c5a5a3c325fa9cc8b4f2788085ec336630f9c3dfb00633377adaddd3553289cabd5ce150ab7adacdc5670199bbb7ce8d02b66549ab8ff4c1f9d0eee8208acfc469ccc851e72e32e32d55cb506e30fbde92a3e69551c6b3a7977e0eb554bb2bb09c9d9d9c2bc883078b6de86533c9b50ce7c2bd38b568af3b38411c5e7c5f8ac9e318a756b9b558a22ca2ce8dbb053271a59649ab4952291ef76018537032ee9a181257bb3259d20e49ba25187a0d5742a2de9c7243fb84868b72339ae1dcbe9783dafe3585ddf0f4282a2ea4029545df45dd715f4adbb87444002ab182c56374b6c68f54008b351e00a02f38deda202c2c58d5a5bc1e13830c2e891e39ab65cabdd76864c57ab2f9b99268fc988aa77864e57abb7cf4c7f3f74fb8dce92996af565d333e45195274a1246dc3d70e6c6235a529d551137a8d8b42b4ef0214dbb52b29b36099e91e7f5a45f93aee781ef8ab0e7b9032c6ef42371c4507e6220477ac246c5900caa38914613cf375bed5231f42820318dae8410bdddc039c5777a5ebf17c99f839b9d7a4a6969b7d7f3fd80f3ef58c334ace89f8316a50f90e36205579bad4aa9926feee7bbb214f78ad46c5586fc54365b157148f77b9e079d51ff94038f95bfd3eb856f5fd6eb79bddeeeb827cac823a5eb45728ebec07a71040b6c75fbebe846e7f19b8746fe8e4aff6d5b8d72adb236ecb75bfd29b3855073be750adad0b1a6cd85a5a50573da3a73e5ca55a5e12128364c096050ce10359327a64ccc086184a7f9992b57cef03427e219e797522a19260c8347e9fc5d478edc354fe9953367aefc1ea6d8c81a46d6c0147353c3047353909d9ac9749382f466201262e5c4804f65040167724cb066f211dbd6d24db4efda9536dffff6d0bfe5767a6ee7a05b58babbddd8da99456be8227a037a3bfa19d445bf8e50753fda83a7a03a2c5592ee6f0e64708e28c18ed9430e2bf69251469ce4d48e72a4db93f8d7d1c5929d51650f4657571893ee6942dbc89f999cc6e549b6b232ae7302476279d597d21be93f1be88f88b817f6c92d5e8e591c89841f0a8b1129dc7d127157b56db4c5bd7866759564d8c47ecc08d4723a93f307ba5f71fd86f363ba0243fa3bc3377fb46f7617b417977c7e77a06d1797883e3b4136e78e9907473a3afe24f95c68572de0af8081ea3619b96f1a1ba14c2dae5cfde7e7df303b7766764e7ebde17c20b585ee2377548e1d7b6a797979f9a963c72a773cb28742816c8c1feecb3bd896d0fd3118cfdbf94190476189a40df45dea81ca6e8b47aeb40712b238be8a2488f795a0d7f55df9ab6512ebb627a7d479db9b94333e3f70d2f796b7104e7992bd578e939cfb179a1bcf8bdfaeebbb5204f52d8c5d39a06f6b49c0e7014d1b9683311c3d0a1833fa3ec70a6d86d9088d37abeefece376de995cc1e23350579075df1afe7fb8062e29423e288ec76c1f3fd7e2f66ccde13ab541c9e34a201c4e95c460db506e3f2755e6935835334ba1071f811dcd89a3ad20b8e53e978ebc941b02b1d09c8af6e079063b92aa61385867c911184c0823a467d84910f9d5eaf37fafe0814b978effb5df176f8eeb53a42917c4e2d85d8595c1f7a23d916f38f9d3cf9d82f074c8eeb51cc9b7f4e9c9a3f979f99f99df0004d4751d2c75f20ff2f22172167e2c5239556db2ea9c36377b952d94aa5b3f6c9e595b543d5da7127c7beef02525ac47f477372c76ab555256c48a7b62a9595ef57f682a366d8cffcac3829646d9549065118ed770075f739b86267605a6acd4f5a65bba38b6bc2a21a94237121a8a8510fb0047b1f4271c46adb56e253c9d2eb452263c77a3a94c90d99ec5f785afab4bdd4ef81a7dc91289dc2580a490e3663b90129bf08bb014f03b918c97bdc8bd18d58b20d71f786d70251f45f04bf80422971242d8ee31233822a68c71dc184bd5697e93ad165a3e13db16a43f5666a0ad488a6def7ace5ccfea2b2287df67e2914571ebcba4ac945de027cbf635567c193ba97f78be34b0515dc9476d35368096da01383793d0eb1c648f5a718906eee13865e3f3c7f7992fde80be270f9e5803a78d3c82ff8ca39853c7f9f512e2a7647aff489f97e26319f0ed29bf504beeb985df22d9bf41443444369a50e395c7be62677eb41717fa573f6ed9bdfb737a16fd59bdc84fb8359ff3d3df986dca7953de0817debed7765aee8eaee0fd5b7f17bc8c736f90f366ffbf9e3bb95791b198ec1ccff90f3760b7ad7b73e6f07b810bce9bc451d0a753262737f4bf316a7794edfc49f4fb9b60ea11a150f9984a1576c255cdc97223a74402ff7a793f610a3ab2f48646a4207d1880f987b6f6d66da6337072bc14333f453244860e96d5d71c00e9c212776d9f0d23cddae0205427696977708010a4b5bdac2d2458fd1557941fbb313b668ec6ee2f2b6b5d4003d632cefec2c1b191d8e9433c79762be0b95efcbbb438f0e07eeae7598d0d1c0097a7ccab8eae4415bac7335d6cbea02e0b4d5b12ab95cc5ea58698085a58b9f1eda63237dbd1aeb61db62494d655485504eed63aa8f03bce68e40a32f26c81fd5d52b6e161a71c3d54a64e1da08e7511a3b48abac11cd26db3eb1bcb20ea067f481aad3f5cbb69bdeb933d4878a5def18e959350e1d3a572868caf961a07775f93a67b9874e2bd5ac781f9e19d649aab4f621c1d5ec1d7c12e4f7a3b4e5721ff3e801df0b29eac4d3fb79db98649271cbe93ffdff4c31fba657f7e923e8a87b81c79cc1c507e73b57c79d30c52fe6f5875d505d8d973d7bb0de18dcef8fdee52b2af9b43f7ad5af1f9a9ec9fb863de80212edaed6c7263a76b1e0cf8fb62c2ced99e19e84550f973df1aee48801e38fb74ed50328765571ac9e6179e7127a257a042138d0578c920e158bb118125eef2936afd398e84426e6dca0dd68d739bc7969f29a68ea263bb5f213e1e3d25f315397444643849a4399faaf69488c54663909ee7ecb8fb3bb9aef0c1f608b7189feff1ee32319a4e5136797b62e0de9e1cda3e3e847c4ce762698d10fa6961fe8358b8d9c4dfbb0df26cad19e6cc6f42cc3f92d0efc7d0ddc6c8133410c16261816ab416734b378f7cc50beb03037966250a7ba77785cea36e6a3ad3a5993626891440e0ded98419a74f53ee64d39769cfa92361c989576f73dcc5812d4b4c77cbac564ea03fd96c36823d47a8fc8a55633f4cfcd02dd1667e4574a7394c25bc717045bff854ea7d3e94a479dd2261b45f705fbbea288ba1dafb3873a5ea7ef7b5e67782f665159fa461ef710ce2713e7311fe03f33ea215c50ea0347dffeb0177018e181df4467c419ba4d747fcc6fc076dc9f1fbe1bb7f7a391dd811bd1aba1a8390d314d376964a03686988d620cad1ebe72e2de364d720113b7a52fcb7b662eacae5e98b947da83785e57dd611a5d740a5e5bc094b6a49ee72be2601714ac3be9b6538864288b014c8e2d17c53d2b0e0c767615d76130e88a33e180cbe8857b238b15eb5ec9a2e849ffdb21af2b8db21374a85bc561d5e91762fa967256777b723d25a2312d06de05ea5252d5446db12f2176b5427c91c795b8c245ee8cc4c16ed7574c3df9d37f36d02df17abeef8761f0e50d0c5dcb11bfd011db4f2a5fb9de1eea06ca5eae17bb3f50971ec75751139d452f47af438f22e4042075cc4d5d357c510f032150ae8c7aaf23e18bfaa8abbbf085e2e387063e0e3c2d9f25ffc95316aa1ef4a2d79764843ff21c7826770786424a6c289f7a6a92bb3133a2c0ea26965eb27abcd83dd653c1faaa0cb38b94de9d2051ee930be85ec51d12632c39427ec00b022f80c7dede2ef46479b5034a2c06a2c0800472c7cb7f4b3363db9966616a6a424d6bf5e2f6c2c276b1be786165e54200cffe0346f0e3f2f6fe2dc95d9b58737ba8e2faf0d36ebc19a696ca3affa939b7b838b759aed7ca1f0adb53804728bb5fba95b94f3afef35259b75ebfb2d5bc525fde78cba9d36f59ff5bc5ed85f976a1be786179e5c2e210edb12c47a5d2608d14e4ed9860f32454f3f1bb67c5f6d8c504fabd649adb7a70bb0a8a820e74c1c3b6d9ff1ac60a60fc55f39361103aa16db38f9048a8248e02a36a8d5e7311e896c80a7d2d417f5add5421be7e9a199a58a31e25d7ee1fc08ffbaf11aa58f1aa0e0f21d8050f1d89d511de6da45c97141b412d43d555a0a7ead312b4cb38675d595f50ab15564b89cf4c5d37992faa1daa1c4b5d1bd1bfb4940b8dd83536479e07fbea85c106f49cb8bc2a160ef0edb0fc71e8e8c7f20d1733187b1f3cb1b7aaf226361e195348459376fd1480af73e8013194af1683400fb8ded553147c2044154a08f84053f1b13eacca6c0432a779080261e18d76e4b85ade9708bb9c7569420caffc96831e0d7d777874459db1b11f5d47fbd617e152be3b5a8f1b8cd16805f1f10ac73a895035e60613baa1254437b0a588e11125548df39bf9d00d1587a0de1c972c7c30b33c98eee5cc0787e40cbd9830d28ba32e88a0870219a4856605eec6863c1a8cdc851ea86d051101dde4463e49b30a5d4e65b3779d79a0cd0dfecbdce0ed07ce46a2d1c88e0d3af71c3dba714ad375edd4c6d1a3f7883510c8a0a61172e415bf43551f82d6293809deebce79216a6479e75e075dff8e3726df1316fb9ee41beff011a007f77ad0051f3908391b0a1b0b080d8985fdcdd4f4f1a96978d0f31e9a993e353d037ec97d6d63c33ddbe99c2b6d6cbcd675e5d93fb8a3661d9d45f7a337a2b7a19f401f401f46a81db35c93ba1b31e3093ec2b39017aa4cd0e39de4b1bd38429c4a35ad11cf7631ffbb31e48d0f9928f82387a8e5386f0f70f98de0f70e9e641b01b22f7e5f1c795e1a49bf120197ef047ea896ade1fbe3bbc1efcf0c2aafc70a14bf5f1994a77ebba3119f18c9f18968dd866eaafcd86a8a4c8a073eca25e63ff03415f99992dbb919026a31aec50afc46976612890ced023856224337bb9b3493b01cf8eb63c7deda829e619a46df23526fd2f8a99f324cc722ec5f7fe42372bdf6a027ed7c11c43c6407a023ba5a53428e6edc4f87929f39e087a497ba634b85c10ff90a617f16d061290d1bb57b6cb62b83dbb2b933c129fb9763f4b991a6e081bccb2e4de1f0cab0bbf66706d68909dd0faece7b355c1877e24e62fe8c1494924446be347ac91891b7db94360b7952c9371577cddd439d10ed66c7052d295ad0f13cb8dfa3acd78baaf379b2ff946a22f263736b8853c7b14342b75ac9d779ab6207557a4ae10c3aaee775d4f9e58b0231729c5dcfdbeda3807045035fbfcfa03501fb0589568b3b030a775b74f9e656ad1e3a30842ffe516201d3652d73f7e2fa5deed2c26b4e4fa78b8c9969ae19492b997bb7bcec08a50e15aa76aaead985c3afdd3ce3a453d3593dcd68316d643596b3ac0253023c402b81efa535e557207e5b688c995baf6971ef434ae5fbd72614993a54a865862bfe2aa3c98c2e9a977064f34417487db80b81df982e7c39684bcc5352005cdaf1bb4a63de108b85ed3a7cf9667d550dfbe881e3f662625e346c688e8e48d958d0ff001ce2f80daaf25b8262857bbf67f1ee8c56277821f147a2cc77e79256d2d0f44c92b2627afaf46b1696dcbb006caf9acad40a8752a26dac605939a6d9897491b2b49e9d4ea59db38dd71e8edbb9bc42def4b806f572adb2bdd93c15fa926aec40a35c53bacd8183dd9a562c683cbf20ef743e06cd866c5b5d2ea620e346b921cf8e7ab5126a846084676daa538cc12e603c6bebd984666ae6ac6950307480a95c2647530f3597df79912518003053b35dc824354bb30b18666dcc65a8ef49c2e94da92c06c0d954ca0e74f8125a617d2a5fc6d849ad3fbcd89b9a563713599674ab6ba7525902e0a45eb93b747f452fd0217aadc047c3d6b26da9c8a84cf9b66b757941536b5b6a783756a1522b576a720cb85668ab2435a9dc780c9a3b701482db9c6af55ab9a21c6aa946c30bb8606b16c7f62cc89096cc806b6ba6ec70825d7ce772f3218be532b92910a3428de49ca9995a22abdbb318176c2040756acf62e8a86efc74ca01206a1480a42c4bddf43435dd5b7c642de5605cce4fad17b44478f7539012209b8aeb155992fadf4127466fabab46b79f964212a12248a1013cac378b957a335f6943a955ea457c45b8e8d18cbacae7344815ff9ee5c0379fa87fe0579ff8401d2e08142ec29a7eba6b249346976824bcbb8268cfc87b6cfcdd219eab80ccabd2fae2076ad7cd6426d0bf5963bbfb09c5bbffe7016dbf7782a092d1d57b51dc9f46036d2354add487cebe523dce3d2f0e08cd66746f489357ead0fb5cf25f0d8ec0feefa54826298fa2f317b7e2f7ebf7ffeb4beeafe53b6e780aae264c29ce8feb04773d6fd8fff02c3a859033e28525aeacde0e26200d81e9c4f877475de527995070640f0558bae7bb386bf67dd3c6a531dde4c11d25dd8e6226751e35d369f3d1912bf967142c0dee7e5a0e7cd728c03ec1f9c8c00749057a85b2764e2b17821f519808b28a8c6165a9e1bf3b9bcfcf8a8fa82d1e1e821d49b4336c0dd49ec0cf6f85fcd131b1921f74e68168797c57d04dbe2f90c2efc665c4d135ea03978782be92f8e398dfc3818fd20a3a2da05bdc16216e9530442387371a04f7f49c8ebc67a681c5a4fcf5c12d3e4ad2bfeb496c35f81e70205f9ab4fe2fc06a14bc104b10ba7b095549638ccbef4dde7de78bfb385710f313f2ca726825826ac3d2d6e22490d0ed8d54f485d188de6897bc09ca081879c8851eb8aafeea444f52131d397d5a951195f9bf86cb7694438958a39e1a1e975ea44bac70af25790bc80969471f717bf65788a8f066bb596cd679bb516c57223f983d6e52c3b152d9c4f03d161e63cee70e5f389c3e9f3e72616366fa8e677fee0fdef3b3bb2ea3c65b42678aa3f23caf77e850ef6fbdec65ffc7470faf7ff4f0fa90cfcbb7a37f867ee326de0c43a708ce2dfabc6cfc403e2f27b8bc54a650fbb8bce4416ae5ecb2d9aae4347e90cbcbff4e74a6658cc4543ae9e87a5ad30c4289742ba9a5743d631836e796860128219c31937393320d3681526a30cde23ca3a7a6124646e33a21041f05e9ee921a1ad329d50821910b494ea8419941290f1c4b429a704a138c25b4d66a9992037d5ec27a326f18298d694494aea5753d6be829ae9b9a665022fe253933b96631cda0945246939a9ee25a525688358da58d44ce4c16cd643149a5274cf94f23440facfac9209611caa968af4e5fa21ac61460e19d3dcd20b1f3df41757456da980e190eab7d549fc47768d7e33e767831ee0b7cd8a3981b8ac1c3dfeef0a3f333dde94cf09899ee4e3f1f849fffeb1863d10b65ecc1ef87869eb8e5f8dde94c10210b09c2cf7f2826f48afbf67ec3ff77bebde14fd788a195757d891778399137d389ad44da2c245d9ee7655d77b504594ba6d3c903925538773583ae25d2e9e49fb62e5e6cbd982c24cabcc09774bdac1961fe84e6ea7a99e7b99b2ca8fc1393195c24d3732a59b29948bf70b125d583623e7fcea11f45ef42a8ba03ad1d6884df0d65a8146c633e6e832b926c3436b61a61a6d6c656a31ee33cc87d3fc196973723be4b132a2c5230e218116ccea61e859d3a4ff1338982199af016994e318194a63b163328bcca2e670353deed29b1e499399f62063d0b610ae841ff050c3bf5f46cf2031f01a08ca467adf3b56d8cd7a94ea4196f429af132ac4917b7f013ccd22d87e293468a05efd7a623db5faad18d2001785d6ef2fa8ea13f1ebfabd3422e42c003cf61bcc1f3a57cc91ebfdffb979f10c020415f0e7ee8bf4b1ef670e997ef06422939f94e37704219bbc71bc77cff1d42a8da54b7dfd6d5fdb501f7b83551c20cef7c17739ce3b5daa1ff9bb73f8193e4a8ef44f1f8654464e45159575655f6545fd95dd3557d4c1fd5d5d5d573a827d5331acd25cd30a363748d4a271a6918cd682424812c9540809011c85c12028b3260ccb1e2831716f0aeffdeb2ff2c6631f05863783cd6667b797cf6037ec0f3621b7b6db6e67d2222b32aabbaaa6724bcdb335515191999191119c7effcfec68b96af76dda0356ecce4f33b6d5b7d935e5c938ad9da4605330aeb6827a44cbe1c34b8cc7cedc742aad8464c2baf828274b64ef88a45d6991e4ed77521f8573056a046a37af8506800c23cd66bd17de87e745ed88205a2df0dd0011b138133cfc644e0deb33111dc956d3047e820b07cb975b5edbfe35ee4fc7adb7ae1155eb9e17c353073088f8d25744c6aa5da6ebe43906e856373da9e3aa5b6b8330c385828af427917f8bebf15476079390c1aaa49ef139ebf77aa512d9b4f46a3c97c3639acbd5b1b4e66f3941c189cc8bfc88f49844593bc90b88292038014e506df0d1814d88349e842791f3dce6afcdeebc9288b107e46169417f2b321be2a8286d00e842ae53181975fe67cde4427c26f8e6e6af88314645b0d58293460fd6f97a9c96a42166835d7c3563b22dc9e65db0d6fddb2ab932b75e1155f752d7bbdd340c78fbad1964bd5d029c94bf9f2c1b623b57c0b2ccc62b142372ea0ef911d568fb66e12b0624ec85f1b1a542763ba61e86344a792c591699f3b93a725f773f1a2ae268b7a0a2ceb8e6539fa32f88a5699e65c9c3ce77b765f62b92efcd29cf0edbdb213bf9485d2e1289fb44f99b0d6c3eb666fbb3d7cbfdf75a2c5bdb76c50a0b621abba2127841f2efd0c057e78a76f61a714a813379c5d825d75a7b60d50db51d36d7d05ce5ff6f14da86528b510c45bfe872d45495bf7b029bab81ba2ad5e35767a275abadd71c43639b71976faf956679c6f75c655adae3a7f69d8e96e97fe25dc41edac40c7ed420d5ca18fee8d3dd93b560eccb6fca40e746321b673ea07bad9fa1ea57dddb17be9b6ab6fefe4ed693db05d7d262c3d20f5901f40c0fb5a685eecb6212d66251d0adb582987e03903eb71a96ab66cfb75c3b9936b6b2773c3dbaf0c63fe5d596f07abf8d4a1f49ec2dac9936b85b5cca1c1d37bc208817b4e77e0556d827d9928d9fea7d380eb3d028067bdd1109e53b5408fd6ac092c3df1e9a4ad62e86c0f3fbd5c7ea91dbb4144112c5f4214413e121652e928b0543b8a6031dd114530c57289b144a7132005d02fcf0e1200232a5cee9902044025c2bd1f278cc848343a629af156983a020a5341011ad3810e662fd701e84647428528f660c44c882873990800277c23aa1261baae0098c32656b1e568baaeeb9a6361159bc31100d00d35a23013b08ac1ca6880c188472283b64214a8356b1df63e572034910f034cfad381cfe6b675981f28325ff661f3a44840aa928215ef3f6ba9d48ead139393135b77a4525a2295cfe6b35e5bb1eb59b6655b46e235e5f26b1286655b6e369ffaceb68989e5782c165f9e98d8662d8fcfad65f3ade592ffab9b71bcfdc081ed386ed62d7b6d6e7c1975c8fa2cb453788d0b24d5c06bb723360b0b89954336b5959666d0f671a3024fdef5f580bdadf9e49b1e672cae8709ba764ec97385d944b5e689f9e14a6b604af84c0d00b48323703dbf58a09fe373f66010c38b1517524596abec0a783221f3676dd2b81038b4a48b4e2eb4846c0fa46995558075db32e2b8686eb1ad4852c9aafcc1784449442c7b120ed3a866d98a52cd5c3eb176721580cf7d4387d31f040c961d8bfcae5c833f6ec66c0b30fcf3039c41231afec2a07b72cdfe1dacb66d87aa92a7d8181bbba539777a382a9c0a16e8531b9c15ee0d1b81b6ca773c6fabafa3efbd808714f55ee8019d8fe62fe8f8bddd6e07f2d9beb10ff67d46eb6806797c7cc1457c1533218b8d60c025daf3671e38432261f36aa53e06ffb25756febb246fc53e484975aacee71054fbc78d95dbe7e4ca29810125c3aef22da2f993754f603f05e38cafc7bbfdf88a21ab339c2b972aafa07d805a36cdb3b55afd22cd590fdb9d5d408dc6c51b226397d5e1bb027b0e417eb95250f3852814d8087fdbfedadcd239c2bf2203b1b1e9bbb74edc3d3d161bc0daeaa03937923f1a8f1dcd8fcc9983bb55b006b7a5f3696368c848e7d3db062bb75f36b895e9c33333c33adb3ab4ebf64a58e7a6220ba5f8be65a74be5dcb82aad82739013304658dac9a275d90bebb0de581722f375a835d6ed6689a7dc7511afc4b61a21bdc95de83bbe8582f4b84b65646ca2164c6e0b6e26bc25e558a99d9e867261a9bb5cf8faca2aec8652c50984b6bdef3a078518b4e4ba9de2df9ef7ac74898e0b6179f12a54804c68e98816e39b8dc0b5c1048bd8400453aa2622f6782c3e14e5c7515dcf95545dc106c32a012909c5186b2a33092194d2989918e1cc89913286b7ea9f210655c4ad541d134230315535a2d2a8a6da111a8f5caf101dab266176c48810552758258ace88869941082584184c3555d5d23527aa1a426a6c695a5c33d2a6c64ca2a898974d187a9c81363a17d575e08da004abd88f6c440c55332925a6616edda29958c1435fde32ac6a5155eef00aa8222a122faa49d1b0a6ebd96472c7d4b9a10521885608c186ca9f8fb1822d5d1b48662693510380aadad2b6489ca89aa200c60a604a0c55dc0463c5d4b5c16422cbb4082698aa6c20490c4b5180506d76229ea192be97f22c53f036dbd1e140de22574816026817f4602775d86d21de43021690876deafd678181589bb9e9108d853997800068b459a16a3b4c52b3d1253ad3fc7812358165358cc6d00c2aa33de82ab14bca46941c390939dfd6ca2be4d2a5428f12ce06441999cff7015e97aaa8d055f2a05eadd6c3d93f93cefe206cfbcf8b2c90ebd4ba6d55ab81a5ba5b955059354921b43814575abd87ed946ac813da6f16481db12f56f037fb368522322a76a905695e6ad12c39589f5f0612d58c3859de064a2262c4f189195117238ecb73328b1c1ce68544ddeac7806911fd3930ccb8a97f9dd7ced4dfd8fca9198fe8ff611bdfe5035e022ed4e1572216f763d2462608c5dd4544170580728f50dc92886e85e24e2d70faa43314f7c232bfcebe1884cfd6210a468c2a008c29405ba19fe391c8682ce646cc845842a88cfcac099a3a6e803a347485ae29f01e45d7f70e7d49c42f0a2471d1a41b4d260d2b692818f4010bfce8cd8ac50c4351226e04ab38d611bcd9e5b4b761b008661111ad3a3aa08308de1c19498960d0c3165cd71b1a28c40f6d433bd07e749d8890d22b366b6fde74b3a0309d41cb501bb229c093eaca9926d415f353f219f08d301b53cfe6f359fe55ed7f753ba7e5b3d40e11d392ce84f6d2181a45b7a1731b6ddfbb1d50680f9f6e75062e0211d181a7d085dae3b99dd21761e27d6f17d5b132d98f7e593b19502a4ec88f0c3ad4f4b5f6addfde79f5e44a3f3ae7e45aeb89ffb17d791b7fc56d63cf74631075b29d8d06af4c408b353a6d3a3594463984262a4ea5c01ce630d1a505b9b377e268c156cfa97da1e6784fffa8c64cea9e11a8042f871eb5ea659efce293cee56fbf8c52f7cc6d22c8926bcbc059762746b525a2a8ee15faca96c1f7b85a690de0d1903588e0579c4d044bbc81819cc877ec12382ab23f1f26b45aef90ab89afc078f973be49c1eb3f17bc86f30f13f37f6cb060efb0b7a2681b5ae1f58785e502739c7195819a296e14ee86e5b9b9306ecc5818dea29e48fce6f87d86ad377f9e48bcfe063d6548cb674a0e1fa2b45228542a85e61ff91586b2954c4a97d4f9c447a61f2404f627e67fe7b58448836933addf7db79132bb8ca77bb6238212682b2a201462ce9c0af0c1e08c254a950e8909a39502fc77a68d64cca4367370a6f9ab3f3df8a707bfddacfd99d7fc8ed58a6c503f7f10ae64b69919d158abd41dc0395a7fb0cc789f9e3a20eb2136922a8aa23c5a44ab9d98e27350906ec051605d81b50b21c17a21d493ef7eda9f334f471d0daeb6ec639a133d162086d9cf0626e53ee49cfdef9ff6a7dfdb35273a6a5bf6b1a8a31db303b8baaa6ff8aeb53b2fecfb59b858fcfd707cf67e2825be5fe5267e9fb5c0a5927757c4a7e33c8179164549b4a5e589ebfb29564ae59c534ae7262427c29784b10e16851748f8857c02a85c2ae758a99c43f5ba5bad42a356e7744bd3ad4bc3c57aa356abd55ccfabd52cbb5eafd76bb56ad5751b9c9ef15caf6a37bf2da8a266bdeabaaea074aad5aeb884736857f77c2f741cd18d3465a7f0bd055351136b6a9004b783a86cbea725290e5ef371fff7e54e2232ec501be8cd9f4059f40cfa0442366791c2c6339596b58bd3cdd7fc2f66a36cdfc12fb83406e150b48f9b43093a386b6f99b00cd37589a19b863994f81b8d9918534c185639dba2720e4915815885610d213a534dca39a44484c422c74132436ad2d42cacea5870482abf5cb02382318950ce1565048ba6536a312dc68c94718c18baa6a971c348e9ba130dd50676c68722116330912e0e390b03d3d74c5bce746a642d97db39f00d6a443028946833b9788a12ce130216c63c8634fd89e86c209e2a24a2ba608016a72231a232c1008122182eca4b2a5831342d9b880f70560d139532270109fea4ecca8833934eb9a699d12d73309e290e0e2c0c4c1f9f0efb8fbf800ea36b45046d61c7cda479433131248c2396c5bb49658a23e0c8b7bcc2ff4bfb0869e55d5a85cae2526561b9bc0a4e66b9b2bc542e26600e586239e3242a79952556c1511058e6950f6edbf6e09526a72733d6ee5bc7a5f931288a10db72aa5186cd0065bcbadbca6068ae8f1f9d2b1d19599f3b3a3e72a4048f19311c1b989818882971a35953886259d8da92879e7ff92d168e46a448f7a9548cc21ee68c34bf31426329288d38ac8306b391832abdf0ecca63e5b1c418bd08b2ff46cc3bfeb9807a606776cbb0ab2ea07a4fca9884e2df484fec8b4618e885c7c75bd0e85591d95e75ee195f4ff88c8701fc905b4597d67f89313b9728bda2fe7bf9020254ab569b3d6bbd014b508425e8c35af4eac3898bd4a53b32020834cdc418f47a9b3feb70aeaf56c11595efd9896eaf9aa38dfd38b1d938ecd814fa8cbab6c57dafb1d65af92fe9b972fcc0aff75c3e5e3662380436e5c3d2bbaa53bfdc6f24d5da0f795d8f31d35673f6eeed4b6873f0be59ff36b7df74a37f9be5c0ecb0e1f37cffd821b4fd22a845a5cdd8ba67fb421abd22a4a3fe0848815f764360205536e0b27458ac57364348727b0015d5087dbe277052bd4fed46fa032a05fee332ce1fda0ccbbad21f6c69be2f20d2c7faf559bdabee7e339d9ed04c3511bf77bdfdee2b1b3c4e429db82976f64ffa55e8f97eaff4ed1d556a613b397d819e005591f4291edc1ca3aa2f44d53ff444a84222deaf2be26cd47c4b99e3e87a7487d44e0602d996a55bd8b62d6ccdc629bf501ca030af114e3b5d902f50735dc9d4f8eeb55d873ea1fcb79d3ca3fd1ecf0b68e95aef0b83c3c646814fc8fec26b74da5d04381b23dd7dbc135adc9edfcd5fac87ac1c2423e05936fd62bd6de3209721d9cb6dfbcd0c5a93eb5b7811f19739d676ece8edc651693b7ac07a735d3e5f3e4ff012d7914dc55f2207aaf28296898667d93fe92f7d6be574b761c2f72a0ad6697f36bca236fc03af48e090e5b7e64797d0862f8a9a4bc98a6ccbce4b6981b43991637d04ed166bd30604e3104458db08a590cbf460a90b9e65bfdd7fcc336de02d010fb9e384e9a9766ae744272c74c3b64a6ff72b2481c7f935ff3f4f40351ea84c0530d3535373d3f9899d295b153af77558872a9af1f5c89724635ccaf34d6f65f273bd31663fb77652d090d56eaf241a725b12882746cbff39b08d096311f5b063e9c41eda90e6b44b3d249dfc99841baa867e02dcabf0e61d0e317701d55d2f4cefd6500c0da3597499c4790b6b8e0a2dd5be8000db20a1ec94e8d65ad65c01970e9f93483f4283f28d96c04e20a1fb72d09a6db5352e218d513d2c2a0dd975095cf88b2811aac22223082223538dce439912f7e574540359be9ebc2d8aacb6b4deeda5ae8dc5be1da189b1726b1d0f2f701b5cd0ca1b4dcc9bd5aaf0aaaaf924b5171c7921f987ebd99664607ca9485596ad77e9cfea171a50157e7a6d9bcde3e8d64ebbcd30163cee63c3d91193a54f7eb87c10d3fa7cd76ff7a75f7e8bbcdd7cafb1371843f6c8421a729107eb3e9e79df7ee808f8dda77f9c3ee5fbdab5f6696ff7e6fb6c9fe3da8676b523f26c486c5218e1565ca0988ca1b0618509511015ce1984318382ea1c6f74074e68c3c0801fcb3658d7ba57351f55a2f3a9ac94169eca8286f13f227865ae5c822f72c2aab5a4d1ff1c2c6755f19f2f679e078ea0c902480b662e7a9ed710c5048e1ab474298ba1d8ca971e0003d62f25ce850c997c09e12c3aeb33d1b65f62e5a04ee9aeb0f59d52715897bb635005cb966ecd84e1d38fb684e00ddbb29f2194576125c007f16494a1e5475ba26fd411436296af5b15d113cb9542140a95025b5aae1464140787f57087693eb523edba57cdcc4c17769e1efefbd43f1df10ab3e3e3d3aa6aee0faf56db22994c7a74616641f9c3ec1f676f9a5f70b7e6f68e8ca42b605b5dbe322464bf3a88a6384f6677ec359d3b8fd38190d379d4e89a4b7fdb35073728f0dac37abd6d95e0b5f549ddfa2dbf7e9d8a58bc997574a7b62dcc69ffacb5455ed5da0ddf13d6366eb6d6854c9ddbf6bfc39c8ea8b47aa365f918625ded7664b6448e052473c3ee81827aaad6b06caf56fbc71d44a7bc46aeb51180f55eb8cab66ad5da05b44321bce2615dca28a723a800b1e1c3aa3207e5422e8c0f19855cdade3c7aa27701d5dcb805c311cb6df58d3596acf7827375a1564b8df3c263c99690e4ff8a587568d87d6223ba21ffff99ee9137d671c4bab4d8c14a0feff1132fb754149d4b6638ed05667a9cd168d9b2b69fbf89c21f3a49ae5c5f6d7ef37cf0004e6eb5b6d37a78f0545b2b42dbde51d27ea81b371236a5fcfca0f3351167a9d523ed36f2311b3cac5372e5856b8142d861e5007bb6154a3060973b23a3b7c67939182d7531416485ba05954292550d72abc1f33764481d82db92a5f5ec93ce71c2bafba4daea9360e979f615f748786c883a748e06da034fb0e3ad7548f5bedd1a9adfee18a4ad652554bd960a2ebc57947d5abb17a6422763dfcde2af6fdadb3ca3d17e4156cf17d8d2e9d45aefa38b3bd968e7c5fb24a03dc06b35fae58e79d2ca76dbadee80d8939ac5f5ceb8545bd0042aa23bd0fd41a49cb6a71e270625a25e3fd90d0de1616f62711bba61181fae3ab9b2756868ebca64f0db4545c2f195c9526f4eb564d9fe85bb82c2b595c9d1a271da288e4eae8492cd6a58d42c531f7f6b7f06d7b6dedabac559bb2d830ff6a559b41d5d216325ab2c379e0ffbd07575dd08ec6cf504f4937e7548be468b865a588d39c3ed3ee1bf5bd6265459a9e6f7bafa2858a5d6b70e4d8f456687fcb6bfa3dd0d2bcea0bc4f08eecddbc09f74d02e4bc84387d1092159905056c2ffa0dcb7a9abd006bacad190d0cf0e35cfee68eae4ca5896b9292fe946c3436072c5b1b54cc49bdba70fe757262fa03eede5af7b64c14c6474fd44bbad41b3b74c5b4cdf31a32fba932badb7deac6d1c09e17851aeb49798086068fcc5a0854fdd357a61fd4e73efecec5ef34e7eab50fa67be8f5f63aa529190e5fe6fb58d374d4271e1387f7148da44d0de51253a9c102672e9d2441bc85c485012638996ef075f2b6aae0b6eef304072dc5f40ae0b9e5c3eeab55a15386bc2d78e75b7b661b2b541dabfe1fa620d8f3fa0b9ee724e1eeac19e675cf83cfc14de29d6b44265395f5985e2c27225afc61435e5b0fcb80f6d50595e2a54328bbbc19169f8e92f739a413327a2dad5a7065ee7e87ac6c8ea8631ab670d5d77f4acb1e51bf68a9d4ad9dfc86989f89213d5c70ae9b38e3ea43bba6e0c1a7386610cf2f4e02f53a95425754918a77b6eb965cfdac993af187b5604526f63cffa5835b94e9c5896f3c1069c9c5309ec5e8bab0035ac5489f437af4a7ff32ac8e3aa82eb442375a6eb8c27a846eac0748d1f74e2b6e63af7af1029d1daacc4ae590ba1fab493ebade376847a4fc88082fb0f2034510cac7973b8d40a1dce17b20f3dc11944ce92d5047215ef0a650e906618da058419e1b7242c5cdf2dd22f486e6b4e2e30042ed9b95528831ffb4c51a006386618d2135f91db1561f882b835f05b4b7f2ff867f8a0f03f64f350c97306af8d0d5229563202d50efef9f69b9cdb278f8fe692892fe986f00cfe83995b726eca80e9db3337dd6ea4dcdc2d337fa039d16cded0ff2091cc8d1e9f0cfcfe031e69188da1794ef97761abf5d07a76ea7c9d8ea3b3127d80e93a3cbc4127fbd91a3f29beeac15743673cc9f44697f720aa0567bc20d1e947388c4e2254d9940f71c655b6d133bc73759f872edf701a5aef1b5dcc95bf320f68e7cf6b03becb3528e703f4ada1eb153f72b735a041c63fa8f5e462e286be674fcb635c237bee6e637cdd1d2f11ade53afe9156bac35e7418dd89ce5dac07268a8515d8ae0486ebed03ce4e3afc6807f0e4c2d276a8241652db81a52b22bf85a98dc545e30b858493e8d91f30f11cd129d5f0bb9e203ab56cef24805b73e7e591b67212a0dabb0ffe5d95af0bd75eab60db6a3cb51bf6ee85c3cdff07928786441654b568f32bbb016caff9333f76b51caf5b7c1dfd94c08d2a6f887a910e61eca5736527572e4df05da35c4a3b9c8bee11fac2e7df5faed56ab50ba85aadbab55ab55aadfa7ee17ce25683f5d1f5bc46b5ea553daf26e4571defe52ef41be8a7fcbd4863b41de0bc4aafa1854bf01a9a0824030919a1bde5217611ef9f7f612bb9ffff208debaa885e2de3562b5815004b981062e9d1ac19499b98616c32359ba7aaa26844a1b86570a53042355e18938866650c23c1584ccb64190caf5bb657afcbc890f6ff4d18c61a2686aa46542daea9aa8615a26015d388ae45086144a184304c18e6430b6b946a84982a8dea24a2af015131df70a23a3314cab042b0c228a6983f9dff31e10165309afcb38c6baaaaa821c60a55b0aa288a80c0a21ac15863da96a470004abf239126aa4114d916e2834509bc2b1563acaaccb6aca9a1d7a4bf635b9edbacb96da9ec9f5809d1044c084d4688a60b482dd5cd46624411ddc39f48285330bfa7ce6832121f8a9a0c80103631aa9b98a87e5872de5ae1d3c40f349585ed696650055d89ae7e655e9138b46a56ba3547055660e5125ccc97f07b72e5d6af0f71aab39eeb79eb97e21fd95c0f96fe5a5bd0f767336ef5da873a6d765aedeb1df6a9dda830baa173f1f67dd1ebf61190f474c9478cfb41dfe6fda4bb552b9301dbeab7fb77376d5bdb5f7a109d430f6d8e41c08a5160e99cb482cc95e740526785dcb828b1d39fcb9539282cf00617a3106bcbd8d5f64b1f0b768e5d506654ac90cca407ba029473327b4a4b1aae6b24358f45f05b090647c1e4516b229d1cb306558b79975fee4506e8c0b8994898110d20118b25c0e3df43cdbff43cf02839381dc6dd9354f8975904ab2a8e304f4b1a43648968b18415195475c5b28813d99b8c5889487c3c5a8fc7e371d7e5df756aa943435e9b9ea9a3ede83274397a1ffa004213e5a5e54aab23cad37049ede76434e3bb4671a507e6004b9742305d72990c1b05b74a95573b01bd82a5b6c0cfc151805f100c0380c97384d1be1df68811fdace74135adc674dd899ab6aec724bc1d6cf7d7278689ae328b10bef6508219211a26aa82319403ec3d42344254be32298aa6dee7dd7356218ae862af5fd79e8d1a9a77f043545a1d134365315db30da03a253a164b2221d4d2551df3b54ec502ba4fa5314d15a6ca4ce4891558e51b04532df52b9e87c23e90493482a6d1b2b0aad868755e08bb4586d2fdf261bdc3007dd80fd67bb82bcc6f70dc8502d68af45b0b12de869cf05ebf88ca683b423457a838026d5a7ada057394868875a7238e446ea2c29c8a9383f599fb8ecc29a6caf9a39c86b7ae654641196abe4f8bd81656f1d8a408da085261fcc99b56678e1c79c9fd9bd1d752be3f285778f693d92451c965efc0023a1fac77b5643f5b9fbdecf77fbf2517f5753529b40b217b395f2eb584178e349fb6db987d9da4a41fd425d826be38bfefe6f8d2e4f0d0e4d16f3d2f78ade7dbe2fcb60f3f787973be38ef4ce5b3d5e63fbc5f06c1797f87eb7ee0d2df193fec3a74077a3342136949772e89f56c3c5f480bea3421285569fe1f2267f988718a6dc2957778888a15d0978c16122233b3984ed81733006e9c0450b0a25a6a6d0d209d78c82767d54e6257b598669bcdf5ea49805ee6c15ff9da2abcc44914e5537018d250a0061d2858fb0481dbac6b511aa28121af603d4abee381bd0ad0fc19ccf734230ee3e11510eab485b5739c9f6d07356c7ba086e4dbcf9ef902e7c5c5713bd996165d40b0c0042250f35bf2b79b5f1c443368bb4096dacc19ac4bdadd89b8d4e90ad9e8e11706762bd9fc768ff31bf5e79d20343df4eb6d9a4141144d499ac8c1a502de208d0a34056d7f4511492458a2fae201b9001ec0411251d548cf907ef4afbb33aa24a2b2081185a10e4d50e02fc49ee803d94e35bf29dab438e543a07e81922958148bc23783bc6afb0ad4d1cebc6ce76ec855c6360b9029c516b45466639b5189fe0a8614c56b57a8bab1baf075f07ad6ae55f77f0f5eaf1e087aa70697779cee12f08936fe8e6863029d454fa2774bd962680bcea54bb8df16bc1149a8d4134037e0dec2ffd3a5b264ef2ad0a5c0c925ba334e4c8d00c18451be319a6ac5a63aa506ff4ff8aea908d25ea524c258d234124cb3f8f2a2e0bc227676819acbf7525e120013ac536aaa2c42233663acfe80b839810f4a1a329a4c46dba9c63af59f0100c3cddf5098c2b9304e1d105e8788aa9aaa6a4a960663acabaaa569719d9ad4bf50a2de2afc22ac9a2ae78e344c34ac250d63c07231e31b3fbc251995eb5334d95c6fa7110ac5a98c21172da0cbd131743b3a2fbd8b3b7473dde14737b81b8fabe94ec7c336655f6e819a750023f85b6edbd2a0adb2970b02afe8cba1e5c6b2835c0993208edbb86701c891af860bf2a5a0cbbf20945ff3cbfa5672ad8bc33eb2d20bc16ad9c9692179795764cf4a2e5d6ac7a54a579c7228e8a188ee399618a3be78bc9c4b97ea6dd177d5f3d67db42ef01a8d661daacd7557fcd504fe51b36ad9aef017e4b446b3cad3e0ba6ed5adba9df61ea3e86a7423babb4bdbdbc38a8f5daa36458a160a7db4293db7d5f36cb4bf46e50a5d8d31c3d6bfdfad66abf6da4e5f4ca4fbab56b6cf280a515edca859411df2280da5d030caa319b48456d0e57c1df2f7c5899033ef8474e20dacd39c4a6e82399582c38208cb95029bc8f947ee23de97789dff8ae9634e24a5cd1d69defa8f5ef3abf2f13173750556bf7be4bb479e5e5de187cd1b1f3b320b7579515da8bd6a5a2ae28ce96ceec8ace7abc02271bcfb9bfcaa23bbc541f3bf6e3bf24659ba03636c4b806f25f1a8736c142ae58a0f54ada0a1949160e7fea7fb47b7dfec563df7f6c7bd5bcfa91a9c4d0d69eab95bbdc76f77bdaa7bf3ed7fe4fecf732c618464b697a137764453ca954be911708ace861882827fca6d0c155e90e8277ce92d972e1685dc67854372b12f06acfcf16a24a3a7dbf330ad6722d5e31d40f03f6965f79671846ff10f019b5f5f500c3dfd06ab653ef286b4662a0bf52e61c74ffa9df07adc281c3749f6e3b92e74f10e7947b99496fb972f121df6d9ff4be92f3915d321539f712141e5ef016abd02a157595cd7e34cf250325ded1734bd5516bc8eb2d59e1d50c1846011d0ef7a9eaaf4efaa5e253bd652694f5a11b6a4f78978d87d6c42c336a4cccf14d6ee4519cacebe441f733ba4514887ee1f201dcc5a9d366e2521ea37060c437c79fd3cd48f9c3b77e4c8b973c56019b2ec905da31dc648686bbeb3f97c56cd66b7671c27b33d9b851bfb7ab77be2e6478e9c0337a85778bd6bc745bb1f7d07fd0f8154f0bf15b38ac9e0332d30aee22b17abcfc3c5c4ea15e7227a69b154bfe5158b9aa982558a55c517352bbc3ca70959c2dc4caacd22f40f3259f6ea05ec41712a1edc29613fb441f4dac68085c95e12689526adf890657449a085d3b4909f8bee5014455355dbda44bcbde735e98c6b305584815030510815a86242c08ec926027685102c44f161017b647ae84ce7ea2c240cc142d4c272aaa362cb26ab176279200c287526e05bcd6a6a6828f5d9b3fcfbec02ffaef3af0599f1d9d4d010d48752a9a16aebabf32858bf85ffcd168426f8c016eb4679899340ad256519d647de70d5d2dcec1576ead89a1949a5f6cecd2d0d2e2dad1d4bd957ccce2d5df5869181a5c1a5b9b9bda9540475601f3a6890f3e441ecf5402bd4f64e4994e052108cfc710f0d11bdb45af58298ecd56a731377a996af12a78eab5eb3e6b5420e0affd39f5c82779368cfa8b053194349740efd18213bc4cfa54b09cee139bf265b97ee25b16db3751312a6fd95ddb67d43753c97dee14314b44ec875ac9cdb18fca5f5a01bb026e4a711756592738def10715028350895b25b119a8450536309d34868ac37af8855cce72ec19c578cf0552562ab215e314e638616117075829b64aac5f418532354e8c4260080f0e7609df22750052b946011a685738642b0ab6095a931c34850956e95a161224c4b185a4c045fe10c2555214254ac100018fb3780549d7e128b0593f0958fb3b16a943f9b45247a1ef145ccba6da8169502643f1a0b11a6f31acf15b8191ad5d26664303ec1d951468abaa10036188b1b5a94f9ecb222385a1a655adca042682772292596465b1cf50860456184989a11575555635a326224991655a9ced7693fc28d1ad723292d840db90ddd202cf1bba1545bca04a75b6482bb605003ebc7de36d4ebcd9783197620d8850fb4fc188f7765345f1633ed78e725d5605a1d140a3921e52e0530d753012fda99b3e1920ebc42e997b32fa03f6593c3c278a74f3e1d83026c10efe7e4a2c93fcff922f9addd197067f3697832d93c1592eb5bdff24f0e75976e65d4c0ce367f0069abc373a1cd8b9c44b78958b581f50f2b88b89ec1c2df82500e585b613fe1cfdfa2d3e98fc2da716e4564aa509c5bf855cb8c28b7537386026f30d7b727684423994c24ea0d39dad57c23537572cbf1dd813388f382e37ba97c6ddbb645697bb46f9b9a581e7503f24f70b3f1413d1ed707e3a3cb09750710114405c3bedd4ff8ae277373d21fe6da1327f8fa4a11116378083d8e9e45686233ef6f6769a1b802320a4db92b684d2e7072f525f21b23d16c8c6823c3d9c8efa505fe9f2e8aeb594176221ce872e20e8480bbbf88152dae55ac5c0a3018457772654b4a658a9270e3239501a2514aada198bb7fca9977329336cfd38982e1028a888892e366ccb6be4629a53512518522426c406a8478539cd4511523a157ac180c4dac4c666722a66309e4523d319b557595c5587cd81ada665020346e26e6b2d4a058c6b6198b99fc2727509b7bfac7543abc5e3a6346573a2cd33b8f2ee61fd3e8e90453efeb34d3cb37c6dec4a6ab137b6ea2c3d7c16dcbc65a8e319d5e0da57070c58d2e708d0dfc4ab79e81d7ef0a898f9ae8c4aa6e2db75d76e41de7721dd741e0fef13afff7aa0e7b7b3f33f07e753b43f8076d0d6385b6834684adce11323a30511ddf5aa9842e4787d0b581253ca7cd700bff349d4b972a1d4713b97489b54a766100b64ada6d7cd4ba803b3deec3a1b67051abcd46b5ea4928d467c3f0a89f0b03a7ba121e557651d5adfa38a99e57ad494cd4761407710bef0292d8a92dbb3cf8157c08ada15b119a28f07d4f99831910d1bff8a2a24421502d0a48c151650476fabbe46ef1a50880c1e5a582bfbcf8211e3b3de719fc2aabb36d5912d3cadb58926d2be931b2659e69594e29647536cb4f956645fc36b26d498f91ec36a66555f2d49352c9e01155c49e990e0cd23e3b5bd2a374cb1cd3b284889bd3a85edee6dfa1acf13b68edfb6fa1316d718e25b4ac8095f004ba22a55381595c0b9355ec3337a3da2698acbb8205b51f266b8b5a5c48f5c564ed11cc7303f0c9b6610a465ce0b26ac0493226831dd04424e2c6636391880066c54403a280c64001356e803a3cbc4fd7157849d1f57dc35ff37c058e713c9a4c468fe9a1887c1bf059551cd1385906966b1295440380d628669b00b446ace17400d07a554fc6d46b63adfc6fece38b184e2dff8bf5f1e77da6958fd336434b75be28fd2fe8e3ebfa9b6105fe4c6ddcc0a9cd7ddd0a1d477d3dddc24e76619d7390aa87844e0aaa5e90d82f43024f67534aa53f324ca12f4ccd5c9f13ffb1374acdb19e783ae17a5e14f7876e06a7d30ff707fa2224357a03ff787de174f83b4508d6c1430e9a423b6534b3702ce291b606a7e54fe087cc1a6f87e5f7d5335e6632999cccac9d3cb9d64afd071663932b2b932cc6a2b1d86fc99fa8cc042f621891936b6b2783df7f56f0cae4e40a56ecf92d5be607fc5f5be60add5330cf8fa32aba173d18ccf5029febcb4539d71796cb9208dd1cda7a21d3778a87e4b439e6074c9c03dee4ca08a4332a6c1ba2c02738f089ab2930bdac00d171dcb5226d54eb60664b586b7f6a7f58d1f52b878f970f1f2e2f1f3ab4ec4d0cea71ed04a11effa104f272662bda403400b706fb48518b3250c47c269b815a87e7f3fb0384d25a364fc9f52c5e11df7a368f00352eac4315aa02ad785c65b8c5b5d87293f0cc04be15c0b6fc5fa85a46f38f158a2ddb3260b74870fa2cc064917e7d3bd151842a21ec989d20a0602f03d189c3905269976a96094d9f5f202d2164bbaad3c867dd6c5e7c1df5cd2c612ac8c96703eb4957304a0d9f616a28caba8851e6c9322e2fe432ddf373bc6cfeac9fa5b3bfb16c9d35ff986894276037d1a88c9f06bf84f7a3042aa012da8bae45772354f105fb9996d954a13b47c8f22a617486fcd26e585e1c854c2a06eaf83c14c207fca4d39d5195b1faf8de5a3e240e6ed9c30fe6a7262f4b26844a3f9a4c0e19c6737a568ffb3f771a597d8f610cf93feb9d87357e910c0278a8ccd37b6ee1e944f2b2c9a998b85d349abc51cfeacf1946dcfff94bc3d8a3678d21ff67bdf350f8fc36a021708402ac86000a2b510a18177f4facaff3e1c81fe2f12f37924a8240d1ad4793a908549bfe2f3f19d8bdc205a8a13de808ba5d222d152acb79a950c88556aa20889f2a46d56edf7fcd91f64ef3b00a12b07a395f087bb315d47c21bf5c595e74446492427e9cc14f53da68da524c96da6aa5e60776de314a7492dc123540710775256925cdb802cee2d0e0524651e2866d25153d966159ddc2967eda7f2d7f6aa4296586bbe61a8cd2b4919e4cff273ab890daae99a0c42da697a641d96247d3aa96d027af1c2a59e9a8193122a61931a3696b319ab3551c372b6642290edbf630ffdc4155c34891789ca47543a58621edb092177e077e0ecfa329b4075d8bcea237499f2c113a2b248951f9fa87d58c93e104b6e4c50bb8b0bcc45bad72263de364167966be905faa2cd3bc2a174a19b2a5b29cafe4c7793ae36452fe058b95654ea1e70b34ef5b3b8a02cb95e53c8c0a7d01dfb9054bec61cbb21c9c1c4962c7b22cec7d4237f4417d22994c2627f4415d077dc88a46a3e018839a464c43b14c45d3b346818ec9d383d168343a28aeda6af3ab9abf8c2aa641342d6b8ed3bc91d535e5ab4227a2608d70a2816858113a920bc87230b6acfdfb2d0b63c702f4117e4f636261fecef9850943d707f5a1ad5b0f6fdd9ae28f1ed4d84e53cf1aa6a2b98fbe3e7476287cd55f993b9936689844cb3eea6a8a696451c896d54318d9e8347a0cbd03213b3d569e1893ab5f6e4cae758e8cd32dc9d315282e2d5716972b4b7ce3e2fc127f7f611255bc3f11413995490bdcdbf40af8bb573190b3144b0b4b850a1fdbc5943a03e3f9727169d9e93af6c11ff90ad8e4dfff2719344d85a8bca730282015452a2596c015e6f900e204068511504c7390e03ade134406097d015a5ff7f2d9757ef3f56cfeffd54c4a34028075555180622098100012a18041d589f0f2d055c0402c9e4f30012ccf6100c22835354dd7b5776d5069cabe0ee42a361a45d36827da8d902d7527c585203c5e6e5c7582099f1bcf3bb974a92ccd62ba5f49c94997caf5586c6b2c26be048c5ef0c0b3475dd7f59aeb202c0a9bbe833b1c4a0e0f5752a954aa323c9ccc2d2ecef9e2826fd76bae5b0d19f7b8f5bae4058d0b1f167b8a838610a27e9c6c2662628f957d594b85152a0e03e5ef0ce34563c868fec030fe35081fc33fc6fbdef6b6a79f1efeb931a83f6f18cdff660c1a9f8164d4b2b1f2d49bdffc54a72fc46080e34303f592e895d2a2e8a3744a0c9bb064b6127843f5c5453f7af6ecd1a367cf9e15a03efdb4c79e2873f4e859cf73eba1fa2ca31d68159d440886c4901dcf8761f9f94c585e2c8d805fb15c57a5334e00a956595adee94b03867dda73c607a813f6fa700c52a31a3555590b48668988ecb7b1be99297b51000f6db005722d1bde030a906c12647354936aa329b0a7321b5bccd4e6b39e5b77bb8d932c376c675a44fbd1614e218511cc03d448b16df56dba339ee774418593097cc7e2a442147241c86498d2124c8b9083afe5751531f5e77563637bcd94718c9974d6e0eba8b3a20fea8671849aea4dbc13e0b789a16969939e39ccdb1b71220acc678ad98dcd55e0f7289d1557675674be421ea1f4bbfc65fb767eeb42de851143a688229293d6c969df244d7ebad18c711055d2abfa7ff5a670d685463499fc79a3d1a8d7c1f5ffc04b4639c1908c42359a6cd6c16dae077856c1f3bb71fafa62f4e14429510a790396fd781ded87f3fe69545daf51177f500b3f5da0f15d40bc0a018815ea8c49b0b2f91cb4378d2ada6f321eea176db4efc4846a9f30a41283e8f3229ee10d084d0873bc8c18657cbf17e67b12c992270a9c402de4c4b49b8372824fc7c5b62ad3577e729ed7a91442c6183390865bb0a94e535d51f0d11bb0827532af1ab8bc8c4d754ad8075cfff094a96fd14d53bf2336148964743d4a298d98ba131d0780f9f92fc6324cfc6562fbde47554288466f3e470c42884aafb8c2cf39fbfcfd9a01ba069769fc8cc958d23033963d1635e3ea0c28972ddea7aa346d9a3655d56a688e1e4027d023e8091971d6873f8b4161213f0f1b94c09d766a2547ea3a2409ea2784ab7fae1cd60a5f0cf2900d41b13c04b0e3a8020ad6d42966e0f90580f1a8a39b114a6954d7335664307607efa52dba39f5f0f598179c64265e2e6383cd111d2bb8f9b7fbf6f97da5a5e1500fd3c997676ea69ae8b7c5cb149851e3a6356e5b19d3483211cfcdd09a5fd60c433bf3fc59bf9cdfbf06817db7aa544d9a669af75f2f634a178000f8f320f05f5b1618227dc73aee1f69a6affbd9eb7a8696a1e4e014dde0522645f81bc2ca84eb9845fbc29efb1bea615f7a20e2827041d850b7ab3681660d72a4587d43459b7fba497ca8a90e9973309ea7841588efefde5dc996cd604bce83c7f38585f16230c20b2b500e04efe9940ad5b59351ebcfc3961a41074fefb46707d64e9e5c530d0ad4203187896d48e01043fde4dac0acfd9f42556dbdc3a99d56f4e4dadac90b481099cc89117107552217a3501cf328caa2657425ba013d8690bd987156a165411a86b2dc4434e8382c170501ce9be98c759e695fce0a95b9f625ada53ad8aae7a050dd521cc0496b742d67d9b6ed839ffc0d35991a214fc8f7404e4dfb9ac52f8d00d1a933c067c558f349fe66a5f7e8c9378207982a83db4779a6c4c7e527b203d12d0654194b0c994644981bb7e2a1ff19a5943ee10bdf4f4d119ae4efe2e80861387f6281df67d7194378dc0a6ca1b593c3e221d814ea6109a9cb4fcc1ecbe1a82179162140f7501ca5902b6228217b6c31934e48e2982ff025273d560e474a2af5498745bd960b35e90e1bd2a4b5f064bd707051afd1d810132944ec77c64175368906d068fbfcd8b341d8e95ea0ff97724f19d9e0d2ee597521d07dad0b3f94a2b0ec629d064b1b4064c3e0e189a53cfc09108c854b866aaa120ca8cb77a9aeea346c4b03c8b664e801a9e59569f0a4eeb96de3701abd013d8e1095152aa57321aba596dd51b9a78153aea73b4c4f4f575f8e9790f6fb76c751a194cec1ef1286318507ea8c313b422322dc8d8e0906c08aa2123f7ea67058052848f3484b6309c34c30ce51b66c9f7cd32183529d366fdaa046aed56a230266936e8d0f46ccb446354a744a0d955a9a3841b0bc97efaa6aa986adeb31a61a9233e5598c45544db2c23a676609c34425f052bbbb434a6dabe175f8c66164a371b48aae42a8922e950bbe049493509ce19c08b3e64bcb051f0dbc97bed3ee2cea796d073e986d29decf8708c140793375809a6f6b95e0646c1b292dac710f740381d5e4f4bd84363b70e1db7be424da2f2c459c4037cbd26392c10e560bde50395646a1b291412b871938b8ce18499c90b53e55f5fd5bbdb65113cf6ef420303e6a25f00d84527aaaeadb26cb57f19e83bc1df77e7b23bd63b99dfef415f480a0f4c476515a5e14aa9ae5c5ca25b6abd286788f025b508b51109bcbb85a1c6fa32fa553aafccfd2524ac349e330d35d829216d3884185a12f61a000bb5eaaa74fddea8fb435bf3bfcecd49f626cea8429fbb14a14cc30604640218c6cdbbd7bdbb6dd225611065088b2bf3e3c3d3dcc3f6f52c047d900763dedec37cec9f8fd96b630235a8428fb152c0039c445bb67b779bb6709e38b0e11cfc30044c5fb57a78747a6a64686a73bc6c7de57303e6c7fdcb707ff653e4efe4e8029361073371f1bff87a663e566ac0c2a8c30f326059becaf5e1f1d606effb101b6c908534e5c43549cc3d8d41e3e212eee68c3e157d086ddad511d42f81f0935a9bcb40cd79ac3c98b8cf37bf5f78857a1539a8a305368d3a9474c164dd28f5a49e504eddba6b71bc9683469c8b2e21a797d32cacc904ff536f4acc0421881d20e285de2406f2d5c7cec065a8a28b074b098cd4181059a0b81369197081bab502904ba8f55a89425a7380c23e054028d07efe390a520acc6c712989113fe58efd35323cf8f504da323407006e32436719ae894a95ba8467492262649109256b0324219a3230a51d2182788415254271adda232aa910c364992900cc6f096c058f0b4aa5edf7fe48c7e53a359ff1186780426302c6b827186902431488668a4550c9b3889715a218a5f8c28a16259df56b103a798d3238bc8438806afc3a7c6389533b198718afede5b6ca9652bc58a1c794e200f93636e6338a446b7338eb0bc6e43df7a3ea123849ce05d40eb1b0c027c9e23e401a7a0da853ad4848c6b49a0cfb1225b81ed8ab47516c19065fd2ac50acf977484c87746a0c04a5003a58ae38611c75505c2e9da656fa863a6ac736ef7bf089fd556fa1def921871be2fca2181f39a2fa40bcc61232084bb6235616debc4a29d63c5d651ae525a859d3e8a40108ec3efc21cd43dc2f058641698083539b51d7c68857b570602c07017484cbf4b57354e9b8f3af1b915b1d72a0a247689f8cda22fef1f7cbf0fe30029dffe127b9a31a0a54d4ed50fe4c8b4635b9d78d575740c5d876e44f7f2563943904e2d14536abac8828d742c48148a4bf9727117942bc12a24b5e0955de0cfb8f410e7798a2330eacb4b4558495a2ae782f0257c9d2a8d2de6e147110d46db5618a3a045cc44c21c1fa00311774c08fa616cac854ff294e75d409e079ea360720111ac38800978047f3dc2e21a28187e7b58ecbd62071efe6d10969b91841549ee8d3844e3fb8b18a2008a860724f8c869cff3aa4b44d3c812e193a32deb4fa20ccaa211348e10cd3963a2c589169559289573fc837d311ed45db7d970dd6cfecdb7dcf2e6fc8d9ee7d56a0dfee57a5e3e0b4213dc6c64f39ca26aae7bd59aa473be2be6e194c0a82cc8d1512efabce610a48bfc6d64d2920c16bdbfb4bc1b2602ef4ee6affcbe6782780be5dcf252f91f160163d8929819a81c01b022d91baf4c032573a01fa90c2fda99ed803125a581ab6ecb462cde314f1d04ac5305c3e356ecaa6505fb4109eda9ccfcf1ed278028cca4b38f2e5f95b1cf5ecb4b329396aa979d28a6a76cbe732b000450078f9740c3680aede2149c2db5a621cb0e1cd8eea65319f9ed08aea0d25275b72c3efc15481c7f7b74ebd6d1c896e89e5b6ed913dd524ad8766261efde0f0de772c3c3b9dc1e991df10b99493b9528eedd0bcbd9abe7e6aece527acb9e3db7d0e67f1bbc3c97bb7c901c585c3cf0cf99bdf9fcde4ce6f2a9a9cb97c5699a7dcdcccc91214ac742c5dab16a3d811d5314714fc2e62bb23dce2b684aab19a2beb3176b835f7b2adb9279e5f50edec7aff7365ed11b78953d2ffd4e037b8f67256a2c5f3de67ca2a79b452cb5a4485deca434b26b83cd6e64267d473f19a93e1794e8e1263307059f7280c6a7f504d37430122a5325384244552d3531626a26be122851e3a631604587e356d6b21cc348a8aa2a38c9dd7c01fa911aa19c1755b1a2301151d58e18294d8f73426abf42b19a34cd6c2cea26a2c3d1e816d34c3295291888b24df07e0a5114ace8548d19cca444131cbaa2311a35b4986ada4c338908f16aa82c6118035116656a44e58bac221f1937a849a8647e395f2abc4d408da891b4a645fc8b194b986636cea29c8009f36692bedb87ee90163de56e14851968d9cdfa834c322081b3596561b9b41cf662cd399bab2576dc91b3db7107e6070fcc1c39b77f25e6268e9ce3f952f1a0c53580f9a9c95d8984cca886ecf803c2a226d14e162657ac768882e1dcb923bb6f4b5176ee08cff03518006a26b37766a6288feb81e17e40d574d8b6f97d72253a848e20041d3a1726c0bfda8e772d0960a518c80d599b966a1930ad422b8253a0984924764d4ecd0368714d66f0da9f3b9270632bfbcf1d993930381f6a55ee8e1dae50b6f991a58b33337b33191500e4312f75e41ca3a9db761f39971b0e75f0cae442b3e6ebd800edf5699e09842015281796f385a8b0524b659cbcb4425ace3879f152a1904cecdc79e5be25b3bc4274dbd5c7a2b9dc78d130ace4d4400c94dcf838d4c7965273a776aedd3eb6e3e081e1853cd6ad5dc3c6c8c89ec121aaaad6cec5c5636e170f9d402ea754277c78db74a04f1f2b8cf9b4c728945219e7a252802b8ca23b5a345449eac315b3cd1fdb96c74cba7cdc32bfda83ff6f0c6ddd3a245d0d5ce1365e498ec9e04a1bb97eecafb72ea2c842498426c6ec9253720ab9021351f6739592829ad586ebb971d7f5aa475df7234feda88f2070bdb347bde7165cd76d3442b13a6c348a10f5e7cb38eff79c9c49f6083832000b4b005a999e5e894627ce1e3a7476221ae5470bc77324624d0d0fe7ab133333776ddfee552a958ab77dfb5d3333f0fcd83663767272bfeb0ec3a3288c599f4613a88cae101e03e95c39e77f441796d2a5c50ced922e8d751de7ba8eedae6358f76a5ecdb3adba27804cda561dcfb6929feb61f45117117eaa96ed79f6b3dd273bbfa0d64e87e564aa8ffc368750c5a93815366687104058283d164ac3587a4c688add662370a60fdc36e01b7ea2f92c78cdc6ba57ab790dd8e8111f7c9a0d0f19217ded385a401521b9bb16dd8cee40e7368f29eff03d7004584a6539b9159646a0b0987172ab6243e33f3cd347c79e83b2531a01670e0a7cb296a26243e33f39b9ab092388fed1e9cf5e4da346ae728da23cc2b7894714c58b8fe867f491692346ae4e54ee50e90dfcc40d541d944513bf1b1488d2ab139513c169b57f80fbfae04cdc9c7d3c391a8b8d26c5f76716e7e6168df8cce0c8eca7136e2ce626e47755941ca9b64fdfd73a977043581535842684f9d8f8bc9012a4393fe21f07eb0253c785c460152ae55c1462e01fb7e42bbe1104a72fca73d0328a08d691b671848066dc0dfe71b094c3bf1ad27523abef5514580405f68aa3413e08868441c35ec0b0244ef0a321e1fa58cc0a8389bd0050060c7bc5d110bf6650c0b5ef05054ae21a7e3428ae59aab5efb7e15cb80e7deeb7691d3aeaedd365725d8acaf58155f83fa7e0141c70bdc663bb6e1faf56c76fdff5d8c45bde32f1cee83346bd6e3c137d671b13f002d4918a76a39b11a28bcbe55c2a63b3ae9dbfd236711df3695401a45a590a893a47c061bda35c4aaa0e50365fcbbfcdb2c692932b31cbb3b6dac9311f1ca9e9ef91072b207c8b9c427cabe77be54d9f22d2fbe1091fff4b006eff1b2b125929a4729667c5ac48363ca96b3b4e986dd692a6629fdacd4983242553a77c5f952728a53484ddd3f6313b8e6e13d141c2b2949273c947f02aaf6b581b80ed7a7ec12517dc24c05c0752de450b85e3a02d0bac3f391f25b55f9a6b0b3e5bd47c5bf4b91ba400a6f096bbad64d2ba9b6ff58bc6ade92dd87fbb78618e136fb7c9774c8ab71a8ba36ed1104fe7db7c328d7d652a2ece12a166bd4d5e4aa7f8f94e4c9ceb043dc2092287afc5cb823c6282ee95e62b7cdbde090559a7ce96f0860505444318bf8fcaa9a9cb80c1b554a5e414a57a56a7140867319e542344078344d4e5538613718bc65b7897bdc528ba464abf7fa575fa49d5a48402a5faa04ec9bddf309c882c60521d0c7127935042a931a813721f55b70ec9f613720fa54656934f34d537a926d540a7a65ab937fc5e8e22547965ef23e7b47518211eaec526b0d2c78de2e8e8a2b13bbd4511be7266f0aea445854a1676cbb7b97b419e977645730b98c8f3ca96b4d7b8e83b9c98189aa2f2ec6d628293d9626b70a493c1fb95f3f4b48f99e1d73fac30e31b47c96f6d69e31b15bd21ec68c51bad9459f738e12451f73881abe47bbd6186504899a6816f0d8d563a7d835174cd947ef58a6a121d741a516b6a84500294f05749e1101f35072835b6e87cc991af501435d5cac143fc4d4f8b9b312ce10d79cf80e8eda9a1adf252fefa3b2e8da8cb070d27b2e1c19410553c971c0ac579115afd891097ed4b4057a13595bbc64c47989e651a7aa994e281f4bfe333f9df8587c5ecbdd26463e50bf2edf2e2f2fd2a6961d6d031025e2f23540bb79e10ffca500ca189188cc26e2840f05bcbdf78633e7fe38dcd7f5a387b7661e1ecd9fa0d059e55801bc4e1c282b4139172d33656de7e84264ac299bf123266d8098e6f85c8cab974c5ffd0722e0d9be9a2bcea764cdc6454da05fee6439ee7b935fe07b57588f5d04255af2426bd69b8f9b23014ac4552f7663cd78f855915312fa1de4711853aed5e86d034da8eae45b7b5463e935b72a12265420539900bbecb932386beef46eff86230fb12ad8061d6cc44221933131b4f26c7639943bb5455557711428e0459a2c08bad7cf2483f7be1c18989c1c18989495e48163fd4e71e9df7369bdfee479836c41d0707277cdae593b00ecf2386926818216005410efa333906e5ca9893168bf7d27205bef295af7c418b6b5f1800d059e39bcdbddf6c301d00e61f7bec1e42ee7130c5dfd763e4cccf9f7cf2e767484cff3ea638c03cfca41f13711e5dc6c7552fc3e310479bf6fb3e937244951c272dab23dfdb44a8528d5ee6731f8aa70ac300fb447dbfa5b3c63eab90498e59cd35bfcabd385dd32a386e49070cdb787bfecb5b445bb6c56dcbac76342868cff3c8421911ef054df83d27ab1dd4b614aae844a76ae9f06151b7543c3533f65e9d351ebaa955b7d59675c20fe779452256c1c92d31e565519f032bedbaec0feb90a4dd6e1d6d451e4236670e72ccb7f1f63dc29d967c41accc139b4cd76f2a14975fa8ac59f69fc7472378d030c6a468610f8e1b6760acc77c852a66b854b32d3712c15bcda1d8d455bfcf6bf7fb1fd44dafef44d55bf51e431eba1add8cee45af873be01cbc4d4a758346ac4071874f47b71b5172c47ab402c5d6600a0da8cba0320de505214729a6c68bb969c8710e680794f8c8ea70ac0ba3663a016e6abe9cf3f7b45c31d7a1af6de968c55be7d52aaf403118c42b502c2fe48b3916857910daa7692816722c971a0f8a2c2c05c35ddabf2e2c96732b5064d390932adfe262aae8cb8097c6cb72611a5725282fff5e11ae2bc1a04a8d17d37ca916dcdac27831b5505c182f8e0ba5f3303f1b708e3c97f78eb89cb32415df8f4336a8109e93e38bbe10eacfa87a888f85861ed326d6b6b447c27fc5d8cc0ac85b8a31a5185f09202c579529504013f6121a2c48d309484b87ca43e5c91500860993c068518c230274292a908b54ac2a2c863108f32295ffa88a822900533410f0680a11f865aa4240587c8078548a5742c58a9e34a84e15a2285411f84bbc7c94dfcc009d2aaa82f1165133a6281011290b30014559993c2000d814e5728235910282754ca01a73137c68679ddf0ac6f41598660d4c28c609def421828744eb35c0fc1303a0fc90021c0e5c49d75726a94e0856b012030cd12c26040f12aa101ce3dda13082c55385aa0a8b1ba84c464111be590463109da0016022e18831115629e23c889e014561947794aa6cf1fd8f2c5124823153236c72652f283a6f9caec0297e1f455134c084b4fdd4eb6811bd0ebd41cec121708269585e5a2e2f2e9756a1b2c847bf33b2614eee04fa2f64daf37905c34e31ee00ab04ab5421a090497334a1eab43d08af817dafc2a007aa66c6a406e56fd5558834d451a6cca802478357fcfbafd2980785d7e3098194e70bafdabd28ecdbbb56e40ea211f317f44ed17cdb5a4b8c44a1dde48ffeb64f2c42558b6b5a5cab4915b16990d69a5b6b9188428989fc5a55b683cf0f20f5f037125ffbdac15b63bbfe1e998a28f0bdc7cffd5efbf7c2871580baf00a51fc3b0042f0810b2fca2088172e2810babb2cf0e74af8483eb4aa084a1a798a1f3e5141a8eee7a1d0b97099aa9feefef07335ffc3efd1e8ba6f3594eef5f142cf742fa17cd57fd666655ec987df6bacc7b3ddae726e8fbc4b6957bf8fdb95060521e512ee3b7c917bba7deadfab1ffbb5f5d7fda8afe0d9a86bccf5ebcbb15fb34e75ff53bd8431d66b8c783d8eaba1f1e8f9bfc1bd6ff3f36e0db5213c6782dfa957d8ffb5d0dc7cb5efad165a037abd875a688eb93dc65c701dfc0b8f9bf0fbae767dbac787db9517ae733d349fbbc754f7fc70bb9edbaf4fc2f946d7bbafbeca71d5fdfc575aa6bb6da35dc7b4c73a13bcb7e0dd85eb0dfefaed76dd3f19bade78956d7925e3353c8ffabd8f20bdf722cf7f25cf75372b8f24fe590a8d8001f7c2fb95adca0ee5a8f24f78077e007f0aff9064c903e4abe497344fafa36fa575fa376a46dda5deae3ead7e99a5d809f61cfbb996d2b669d768ff5a27fa9afe94fe19fd7b86661c363e64fcd49c33df6dfe327263a461116bc9fa45f491e89fc45663df8a1f4dac261ac96b92dfb34fa61e49fd307d34fd0927e9bc383034b07fe053033fd892daf2a12d3fccae643f91fdf9e03d839f18fcde507478d7f01f0effddc8f4c84746be3f7acfe867ddb8bbe47ec4fde5d8c1b1fad8df8dbf61fce7b96ceea9dc5f6fbd79ebfac45fe66fcc7f2affa5c264e1a9c22f26cf4ca953dba64e4ebd30f5a3e9dba73f33a3ccdcb8edf4b6bf9e4dce5e33fba6d91fcfadcdbd341f9fbf79febdf35f5dd8b1f0f185bf2bdeb9b86df1cb8b7f57babbf4174bbb963eb2f4dde54f2dff7565a8f2d6ca5756f22b0fac7c7e7b7efb0b3b223b9edbf1839d2b3bdfb0f3ab3b7fb56b65d7fb2f1bb9ecbad513ab7fb8faf3dd77ee7e71f70f77ffc243de0eef01afee7df9f291cbf75efecce5eb6b57affde19ee93d2fecf9c7bda7f7fee00aef8a1fed4beef3f69dd9f7d295d3577e75ffd0fe3bf7d7f7fff0c0ca817b0ebce3c0fac17b0e3e77f0eb87860e9d38f4cca1af1efac7c399c3dee1c70e7fe6f0970f37af5abbea9eab9eb9faf6ab5fbcfa6b4732478e1e79c391c651f5e8e1a3cfbd26fe9ae75ef3a363571f7bf1d82f8ecf1d7ffc78f39ad56b1ebfe62faefdd175375ff7f3ebdf7dfd574e1827d64efcc50dfb6e78e1c6c91bdf719371d3d3377dfda65fddbc76f383b7a46e79f096ef9e5c3a79fae4c76e356ebdf3d6976efd5af59f6ebbfdb66fde3e7efbd7eed87bc70fee4477eebaf34377a1bbf6def5d25d3fb87be9ee675efbd43dea3dd7ddf3f17bfef1d4c1536f3df5e57bd1bdabf7bef7de1fdfb7ebbe77dfd738bdf7f403a7ffe275cbaf7bee75df3a3372e6c133f5335fba5fb9ffad67b5b3bbce3e75f6ebe752e76e3ef7afcefdea81bd0fbcf8c0f7cf0f9daf9efff8f91f3f38fde099073ffbd0fe87feedeb975f7ff6f5df7fd87d78f9e16b1e7ee6e17ffbf00f1f893cb2fac80b8f0e3cfafe477ff4c6b937bef458e4b18fffc663bff1fdc7171f7fea89ec13d73df1a5dab6da4b4f9e7d93f6a66bdef48337ef7bf3034f659efacc5bae7bebe7dffacbb78dbfed99a7bff7f6636fffd2333b9ef9e96feef8cd677ef3a7efb8f31d3f7df6a5771e7de773effcd1bb76bcebddcf2d3f77e3735ffdad1b7febe97767dffdc3f7bcf09e5fbc77eb7b4fbff7a7efbbf37d1f7bdf8fdfbffafe3f7afef4f37ff442fe85777c60d707def9812f7de0872f4ebff8a30f1efde0e73f54fdd09ffcf6dc4be8a5932f7de8c3e4c3effcf097eb73f517ebbffc9d631f19f9c8273e9af9e8751ffdcc47fffc63c6c71ef958e3774f7f7ce4e3bb3efe87bf77f4f7ea9f18fac4739f9cfee4e39fac7f4afbd48b9ffae6a7973f5dfbf45fbefcb1cfecffcc3b3ff3824f13ff393c8d22018dbde12f857ee9d3c980123e59cc4b3238e7a7314a80e9a7094ac05bfd344526fa6b3fada204acfa691da5d1a7fdb481b2f0077eda442954f2d3119442f7238c80e808d0384af8690545e1113f8dd1380cf96982c6e1793f4d5106fdbd9f56d1381cf1d33a9a460d3f6da025f8b69f36d124bad24f47d0247af3d907674fdd71ff99fbcfdff6d0030f9d9f2d2ea3b3e841348b4ea13bd0fde80cba1f9d47b7a187d003e821745e849f5dbee7c107cfee989f3f7bdbe9dbce3c78ea81b93bee7fdd3cba073d881e4467d10e348fe6d159741b3a8d6e4367d083e8147a00cd89bbbd0ecdff3ad71ef52f72afb9eb8e7bcedc7ffafed79ebaeb3c3ada55dc45d7a0bbd01de81e51f9d3e87ef45a740add85ce5f77d703e74fdd7fc65d9e2ba1ebd05de801741e9d126d74d1329a43a557d115afe2926377bdf6a1d3b73d808ea1bbd06bd143a2ee0fbc8afbecbbffcc83ee6bef3a73d703b73d78d79deeed8fba07eeb8ffaafbef3f3387f6896b1e442e7a2dba0b9d116dbd0d3d88ee42772217dd8e1e452e3a20ee7c15ba5f949d6be1a4f5fffbff020000ffff94e39d8f646e0100", - "f92d98a3088e303ebe71d7dda3f6a208": "1f8b08000000000000ffecfd0b7bdb36b2308e7f159c346de386b2a9fb25efee5389bec469dd3475dc363dd9e7941221893145ca2465d9d9b7ffcffe7f70230110204149cebbe7f9b5d94d6c703033180ce682ebbf9fddc338f1a3f0d9a86d3d4ba24d3c83c9b3d17f3f3bb949609c9c7c9a6ed2340a4f4ea3d96605c3343971220f9e5cf8e972333d495237593616d1c9c63fb96f9d24f1ec6416add651882193190c6172728dfef939701f61ccff7c3d8b37d3298c8f9359923cb30e41f0373708f05ffbe00c230ffecf2af236014c4ec2285eb981ff191ecf12e9b73d58f6430f3e1c8cc7e92658b927899b24279bd40ffcd487c9891bfa2b37f5a33039465f9e8cceca7ff09f86c622f6bd9359146c564f883ff503f824d803f731daa4274b18470743fffd34d8c075ec87e9a7e46416c5f024f0a727488d4eeeddd877a7b82d4fa9557ee8a7be1b3438724fa95cf34d387b321da63d94404ce20929cca3284566eef00438d317c07b18ec4303d9a5247d4414e651bc3af91f343ef6b5cd1461b27463e89dfc8f0753d70ff6d2510eebff64c3a111ddc338f6bdfdd49f479dcce22808a66e4c31fecb7a16ba2bec19ff653d5bb9ebb51f2e9267a367e3f1786cdd4ec6ce99e54fd0cfced8195b30fbe9c378ec5acef8626e410473331eff867e9dd23abf8dc71fd0ef1eaa4dbed38abf653f7178af5585772abab3eca71bbe0c22629f2694fa36afb970b21f57139efb02e5bc2c9aa8d881e3f16282c80413ab85c96c26e3f116173527968d8bee9455afb29fdef272a012eac9356f143ffda691d52da6bf662cdda9649ad77d57856585b1404555bef9beac172a3ef346fbb40fc663eb71321edb184d77423447a90fb793f17885c1e289359388716d9c09350a855431ce3e4d509f3a675cab11920451387b601f6f549ca864b7c83f3f4e0aad44cc38e3f1cac1ec3ba4951c46a65d635ee57c15fb39435ba55a717a4f5ac0296e2ba7b212fae937cb7186afa744aa2f55647f28d55b950a7114a2d38c6e27eff628ff31391b8fef906cceee1deb9a748a838575163ba875e767969d83df3ae34bfcf53c76ac773278d6ab37a8e00faabef4f7cb3f0aaa93b36ce7f2b915556b83f5ee33b32514d9c51f748429bb6f901726f4c78b71d500d9e6ad5ce43f6e735403673c7ec4dcb42748bdaac75c6e86173238acaa58e8dfd659ae42670a3c99e178bf9e5877cef8c3a5e5965a6cea332e3f4d909444f6546a5560f4826fa1ede81c0b1a9f3e965b3841bf3867bc86baaa714cdaf2ead5d85962634adb7b83468373c643f626e3f102e9dfed2470c857773c9e59cef8dd72625dd0dff3b663a3f95b403fddaa5abc60d6ee5d3cb12ea571e9521437c1c43a63cead87a14f26d6070929678f24f5c263e66d8cc6dcd9596e60df61037ba124f9369858575203dfa1daae42985c5f26bc5fbca40898a5baa4830af5e2cd94fc9a69d26feb899538e31f840e9ba93aec1dc1f06e6ab988a3accbdf85a83d670441845b914eacc5e9f8f22c773e6fbb136bfb1a1589b6010df4b77f589d0bf40975f400432fa9a1b259c9cdd2b1de4aee5625939942a991e4ef30dafb09419b89eb6d939610793be96439b17a93d345c1b17fb01ce77ee259b7e7f82389259c878967cd4e7de7ccea4c04db8c1c9df379f230b11e1dfc3d8b5cde352734fe7814a223d45b379f26c4e2d2ee7fbba4bfb3ee721e266b64264f5bce191ddc67ed5fe7c81a3a6744df25c3886dabf3990e06c9ea6153870bdef49985d81d893378d39ea0226ab3b1cc17c8ae7f18ff74c68dbe2b950abfe5bce18f88a0d3fcf9732e8e3257beca0b7f1bcb31cb58548f9fb1d6bf0bb0fde40ce2385347e70f6ba5f824da7b676af5f44039a6473d108d259c4f93327a39aaad112a7b4f5446ace7402d1320239ea2531a076343e804d884f09ae4dcb3d6f1402f9d02905fc0f4b2506d5180b92d948878ce9613c9c5cb5d800d9dd39d589b8c27ecb6de044e594d58a8796758f3ba50133e35c9bf990d1c2930d492dc16493e49cd9b42cd05ad797a3b593b56e4382767e748e5176757228a0b64cb4294ad6d26e3d5d915336fb8c877c677720569dca667d85f8eb73a386a993e9fc59844ab025f17e1eb4cc6830a7c2708df6032f6cfcbf105e7045f5401179f93766c2ae01e10dccbc9d8ae806b23b8c164dcab801b22b82df2925799a1595ea41394bedd5e5ce5762d4009c960328e38c035025c39e384074c11e09d33de72800f14d0e6ca9a944a872beba2b2c4190fb8b2212abb73c68bd71c87af539cffae5ebf2b3786ebd7818392b8e4f5bbdc1ca6af1f9cd2da5051fbceb8f6b5a236fc32a4ff665ccdf89d29e98e8af4d3d5be51d466a613039d864eea58b6e384e7e728d4b15fcbc3190de2e6eb25f612bdc25731661cbefe34b15aa763ffb2c2685d2e27d6ea747ca783a34630bd8c31ddc70a7c4d84cf3f1df72af00d11bebbd3b1ffa682bf3704df5d055cfa86b4e3b102ae89e036a7e35e05dc10c121fe7ea8e0ef87e5c47a3c1bdffd909bacf8877462f967e3ed0f9cad7cf8a18d11b638c036027c793a1ef0804304b83a1bfb3fe6809f7e24801157b6fe9150d97065f7a8ecee6c6c73654d54b63a1bf7b8b23eaeeb8cfdab0aa31a5c050e8a68efae38a31a5f3d38a5b5a1a2f69d71ed6b456df86548ffcdb89af195296934520ba49faef68da2b668549b17a963dd394efbfcdc1a38e3ed952a286d5f9139cbd6551694e2a28533eec915643b714582bec54fe5f6eed34f3126b1d2c1517ceb9f9678b127a9c0778ff0f526e3c70a7c4d8aaf5301d7ff89b4e36505dcf22d09366fdf96c3856f49907b570197be25fe6cfb960b21dfd210f22d67169b6fdb18618703ec22c05b673ce00187083072c68b9fb920f2670278cb95053f132a1157b6fe9904a0095796fe4c82d72d57f680eb4ec6ad9f2bec67f7e7c0b1ecc978f033673f873f23b52ea90d15b5ef8c6b5f2b6ac32f43fa6fc6d58c47a6a45b2ad24f57fb46515bb49f276f88fd3c393fb76e4fc7fe3b95fd5cbffb84e762a37799fdc445b7ce38912b48e3fffe1db1278f3a386aef9aef624ca25381afff8ed89d9715f896bfc438b9befda5c28efd42ed58055cfa0b69c7b602eef32f646aaf5501d7fd8524ff830ab81304f7e88cfd6b2e5abc26566c75cd99c5f0ba8d11de7180f135316d1b1ef01e0126cef89103fc4c015b5c599b52e971657d54b671c62fb9b2936b92e8fbef390edfa3ba9371f4bec27ec6ef49b6b479cfd9cffbf724d7d2d6868ada77c6b5af15b5e19721fd37e36ac61353d23d15e9a7ab7da3a82ddacfcf576b6c3f87176facede9d87eafb29ffdf79f7090d67b9fd94f5c74e78c5fca15e478ec668933b9db9b727b17dec498c49d0e8ed9b11b629fb615f83e237cb7ceb85581af4bf10d2ae04e683bfc5f2bf2ed5f97246aab808b11dcad33de54c03d20b88e33b67fe532e65f533c51daf995338bdd5fdb24d6e40087bf1273b7f88d035cfed6c616f9f6372ed6fc8d00465cd9fa374225e1ca5254663be32d57f680ca1e9db1cd953571ddc9b8f75b85fd1cfe8632bac978f13b673f97bf3f38a5b5a1a2f69d71ed6b456df86548ffcdb89af14753d20b4741fae96adf286a4b93a23f13fbd97ffdc65a9c8e57bfabec67fa3b59544a7ecfec272ef29df156ae20c763bf93f8aea583a3f6aefb3b59541a54e03bf99de4d1fe87727cc107b2a814e9e0981dfb40f06d2ae01e3e9076d81570ed0f24aeec55c00d3f907876f14739dca73fc8a2d2ea8fdc3a857f9068f1ee0fce2cc67f9045a50d0778ff0749c11f79c0cf7f9045a51607d8a6803daeac4fa9bce4ca4efea0b1a6cbc59a2e8d86b9b2d0258b4a895b613fef5d92183dba9cfdfcec92b44a5b1b2a6adf19d7be56d4865f86f4df8cab19bf3325dd51917ebada378ada82fd1c9f3dd0dd6dfc26defcc7dbc97839c5bb947aee1a0f891f2e11c560bac80aedc9f8ed25aed441687f5e9e22889b4be5c62d1425451371b368618ba8f789cc994eaeb88d5a2b66003e4d8801584df8f47542d3d70997be4ec82cdc667229edd54244ee276452f7717299edda1de7f1eb242453be934b79b3f06a82fc0eb2f7b6e36c7f3d47df5f525e4412d843b57fc391bad3b939c72b978e0e12ef8fbc93f7abde39d98f89331e3f2211bf6ee36ce2874bbc4b917e45d27e899afd53882799aeaf70577f402c7c089029746e3fe07dea1fdeb12f84c3e687356ecbe077fc194a9f3fa3cfad53c7fe1db3703b91be3f7cc01b809de477bcd5f44efe7e4fbfdffe8ef7736fe5ef31e2ae73eaf47e3b4731704bfe3efc1d6f907356bf9d23690ce4efdddf49fd01ea0a67ec3b327e5a3ffaf51c352f92be8fd70e51e2eb2b2c77b5c056e5025b55086c5521b05585c05615025b55086c5521b05585c0561a81dd6a05765b2eb0db0a81dd5608ecb64260b71502bbad10d86d85c06e2b0476fbb7861d46c3feb6617fdbb0bf6dd8df36ec7fb386fd6dc30c6c98733f4fe98123f5e9c5831dbce0f292962245f9891cfebbbed4e744e468d1ef0f784ac5bdca0f0e4efb781e0292181f9f309de3a3aefee432aff869f2804fa6ad2697d919b1901ca619df4df2a87ecc1d548d274d7c2e6033b9c20d4029dcf9e074ed58b673169f9f23c896320b69a354e6b7f1cbc93b440cb3793239c1d90dea43217174f2cfa406e46b90a2eb432081b5915c1f0249557336e5483e1491288ab626486e680dacfa7d545ea2fa4a8597b444ca17c7e3fc08db9ba563cdc657975966fcd31ae924f57df820e0fbcfa8045e0967da1cefda724ecfe7d6edf9783579c74e828528af4e26d8c2b84e38794b801e51a6fdceda4c9c98156dcfc6f6e4c6729d87c90f96f3e6f17c6add3917edf37394def72637d6ddc4f9f9076620d2c9dcda9e8e170e463264486edf8cef9c1bfe10b4ebac9d1fc8c7cd64fce8dc7083fb865894a643763fbe743e6453afb46875fac1729d4fa7170443ef6c7c773ab36e1d273c7528c5abf1e3e98ca7c80dff1b27761ccaed66325e9cbdc3879aa9cc07a7e3f1e385e5bc86271756e45c9c9c9d5b91335e9d7d50419182f02c7e4d84bfe5c95c5d532a7ae9df38ce5b0a44a5bf9d38a7ac884affc67983847f77260b7f3b71da934cfae799f0b713e75786a328fc1b67892ab1f623e9dfd494fe8dd39f5c50147af1ab2f53709dcf0c8e4aff3197ab7fa695be02aa44faeed91fdb89e59cbf194eca94ffecd324616099fa9f8579211b0067e90459fe1f37e7dd49a117ce42fc11133fff15d56283e0ac9ba3520c83b3c089d8e75d07c2d98973cb70d41d0aeed9a753644f30d307ec8d59a1377eda32328b626fdcb1def83d61505bd2198f93b3695696b0be5892bef0b9be68657df199eb0b249384f4c5e3e42c9d64a80697c5bee8e28a8452595fbc3c2df4c5cb53da179f495f201cad625f0c7e2ced8b7bd2176f0803a82f3ab99423455fac485f28a0b8bef027b261ba68393796f3ba7dba9c5849b137b6d4345d24ce3b06d662c6e922ca0b3bd43c5df8ce95e5fcb4703cd61b83ac37f028249df1691238568759a80b149e524476d1465ddc4daed8e7c7322375571c1977d4485dbcbb6428fcf34267d8a546eaac49462666fad1a8371293de904786d019faa12174c656d51989b633f2a1f16bde19216a57a2ea8ce2d0103a2329eb0cfdd0e03b433f32749df1403a83307db8a1f1ffb4337ecf3b23f85fd5199f49670407ee8cffb7766a9af7c6f27f959d6a93de581ed84e157a239a5c3c3ad0725e7f3e8dcbba2342a277191ced8f6872719b17d2fe8826172f27bf59ce4fb74e3829f68897f7c83cef10c4c624c354ec906872b14248c977da237cf06fd425d1e40205ef0489be4fb83b575a422441fa647ed82e59940e90a8d8231bc500b15503c4d60e905ed61dbfe4dd11235db3550324291f20dbb201b22af6c6aa38405e16cd55523e4052d21998e9ad516fdc99f4864dce81df89d34a28157f7d8eef96b80889b97f3c7fc7cf046437dda082d73fe7a0f6643c387f275f5e77cb40c727e7cd89f578810f6dab6fbf2ace1cc517e1c4b22fc79b8b7726d36b3376bc3b9a8ced8b4bee7837d93ad0b9b8ccf9bf8c27d687f1597ea7c57980e7bf2e2fb9357fd535525cefe4d7b4885786911bc6de7fc69b353e5c523d79dd773cd447be736e7d18c34b61edfdec1377d31c92daebf0144fd65edc9e9e233ff5836a6aedc7106fdb7cfb2e9feec3fd129f7671c70c9c736b36be96b71f14e72185fd111b67fce12abfc108c35c36b1bb3e3b133bc299d1db407c677c7e26f6c70fb8f6eb7482e0a47a67e8dbe5fd1bdc596f366fd0e7cbf69bd6c4727ef6c9a9fdb7fdf37354e90ab3f21e4f245dac1dd447efb02c7e1d64f357ce9adecec60ddded64fce6e5c4729cd34f8ef51671aeb9744d3161f57ae9581fc63f5c5afee44debf49de55c2ecffeb07e63fb4ca41133fee51e7b8599aa8bbc10ef985d4cae58c972124eac8183ed5dae60d9f692f5a43fb17ace3899c84affc172debf445a613bd7f1f9b9f516ef1d2992fc3c21d7e8745418a8baade9e55d264391166ef24291ed8a6159a26d3f7dc65b87afb3b1fade76b0d65f87a7e7746e5bd0ecf15917bbc5b3b39dd999e109497c28fadd9542c20b678925fce09c5bab73b6aa749773d02f15dd6dae4e080069f4fb68828ffc5da79373c43c3db299d9c6f7d1046fabbe6e4e906578a7ead3cc48b87ad28abba8decf3e63cccbc9391a913acc4e8a500fde8ccf2ed906d5f3b9757b3abebae46f3d63a6f272cd2e04fcc00fb7fc6acd199b4ac637c55d9ce0ad514e7e4f9a83b7373de232d5d57b4afde3ae0853b75fa7611bac61b9db565ec1b76563ff8fc0c1c73327ea2ab78a2a97e4581d7f99da69136ff4bcbce49493c6063f7a48b2efae9832feb2c6b33c1faed808fd03af638d216f1eb293a2f81ab5d37132b94423c03947f23da7d70cd21e3d9da3065cb2ae74e2d339ddd7f541e1cf60b9d4c5ad692592bef93cb16ecfc4fb5b17aad5b3fc4acbc144b87e0fb9e90e56ab4e8e9f0d7fe761925d95ca59f93b5eedfcd2af1f741f7fe8e29b0fceceb28b42e5aa2f9db2af77daaf3f7499966f84189efe945fc2fb52be040f7232211f951188cd855b8e30525ab8769fddf765b3dd79179f1c7adb1b0aff23c7729693b6933ad60fceeb33f52db3ab4bf2e3456edd447a1fb8d171b59e20c67fda4cd613723fe5e66cecd04b33afb457981a8de87171d691c6283fe228e3dd256743de8dc7d7686c4e51b821744051e3b901f66380974635a85cf1063ed585a31ca144110ca30ec53744de6442152e0c75b92b0f2f9613eb669cdf6f7d3ab53ea0714df50679b1dbc9f8ed15df0efaed8780dd206b7a63ac7c73e98c196c1ce29c92e3051766a1a4d2764024c27042a2e12c76724eb292abf0eccc727e8acebcaca479f683e5fcd442de8915bdbfb49c9f6e9679c1c3c53bcbf9c9be58d32b9d15b7d9ea8c3ee4bbb838ba54376173dac92d803e2ad7426f95395da60aefd6ec42358ea5dc3afe205ce677714fe3684e37fc8978853587e6e5647cb6c177407fc6476ede9cf103f6ce19bfc55fdf7c7648477fe0c7755ef383786d351d0817bf2343707699f7e2e57df11aeb8afd12aa4d066f1ef019b6b7998affbcc4a1f20d7196cfac67733f80cf46cf56ae1f1e0f87bdb637f306c7b3e526bca58f87d0b7569c284c61983e1bfdf7b3e3843e89d2d8c6ee7a0d63f0ef8f2100eb28f1533f0a472086819bfaf7f0152a8eee613c0fa2ed082c7dcf83212e5cb9f1c20f47a0bb7e00f6ab8fe15f1fc38fe15719dea93bbb2548e741e4a62310c0795a049b47f1d68d3d0132f617cb0c34e7945cb04f20b7be972e47a079dcfd1a33b384a8ce08346d9b14047e081b5969cb5e3fe0e2b5eb797eb818618e0148e143da70037f118ec00c86298c71f1348a3d188f4073fd009228f03df055b7dbc59fe6519836b614efc0b6f3c2c4ff0c4720a3348b82281e81afcecfcfc9ef9b384105ebc8a774a4e6cd48ef90f635b6707aeba78d4d02e3460203384b47208c42d21fec2beb9706794300372c8d36b3a54091412f62772a0a2b63968a73d8fb5ae85a1bd84cc09e9fac03f77104fc108b761a44b3db57f57446dde0632f76170b3f5c9096abb89efae1a2583f75170956b3451c6d42aa42f9ef0dd603aceb7246dd6912059b94308af492e9434c04630b62a252921497616bf8a1e7cfdc348ab50c388ec34b39d7514cb991fd2e1104e073033fdfc318523640626bb6896318a6197b5aa6985e52a65a9424e3a1cd78204c76298b1947cd0a8ef26ebaf7e1761dc5a96c6192d44dfd997af4562b4f12f85ed16a091d2b8bbb6823b89e4f63376458daedf62a01d04d6023da280c11523c42b9d0639ac1400654631aa569b4421ce41a25a02d6d8fa213eda2016a66637ae9a7b091acdd1944a603d979c904e6b04ae32470365aa23e21fc494aa0e0abd3e9a870b8f394e1a0837f043e3efbf8ac6c78329935ba4a85a492a54389c11003de48a3f5881a70e4a53271d1cfa452fe1debc0da45e38707a346410727f5a29fc25569376696741ec007be0d31534f6da7645e05f76deec192a5eba1c182fc15faff3470a971d638b8a2bea85a91ac5d6a3ff4d61fe3461e6a4e1ad480a1a7187d7f3db39e1d6fdd20c03e2b701f7576295e4cdd17b685fe1c0f8e24c598fb0f9060c73d6b97db6fa639b6da7261a136e03d0cd384f3adbc21c03fcfa378058ebbd420f8616e138eeffdc49f0690b4255abb333f7d6404783cf493060b31711292a2552a474259696c42f21c1bf4145ce5d4f4705928f7313cf6a20dc299cc5cd6488d4e67c26de56c23b98d00aefba275a4b1144c53ff2ad2f3570b1d6bc7f8b9bf06d627a4a9389470fd901997e210fbb449527ffed8c8cc0e37184e4ea816235489fca9e08a50a113ad5608ca03d12605891fce20f053902ca36d0216ee3a017e08d2250488c512bf50e9a2b4da68208a7bdf83d17e1e32ebd746534b109b18a90334f484e0b94f8db1e83338ffd41583d38c29715ce73a35c241bf1ba390d1f36198bec0c6a4d5ed5a20ffcb3e6e758f2ca0fed4eb1e1de9331ea531451fbee14ca59c7abc228542d33bb4e96ac7cdc7df6d5af6974efad360532e736c2925e799fd4aed25e73725677bf29dc6441744d7ef1ebdfaee24afe3c5d1ba31f78314e261be895f74d70f0c44a557a84dc78bd8f788f3c1da6b01b938b30a95ba1b4d3fc159da98fb68b4a3fed451fab71415fd97bf42f1aa4ba300a13b6d493ba8d9d5c77e7f7d0c9f59cf4ebefb2f20bce809ee07c7f67113fc5f7075f91efce8cf609840f07fc1023f17773c8b5627219c45812bbd040a90fc3e8627df01f6ce1cd6987f1cecbf8cc0771f43f01d681e03278a63384bb13943b2a0924616ce0d02308da36d02e3e418c3b78ec1cf31f6a9c0f590d1c54fe181688e351d204d07240a8c623444f1bba160b674c305c446d37f7b8d31612e96e92a20dd238ea9e366f71538f90e34015127962b9260c8ff0c1b8438d50604dac2a07f51e15d93971893a715de2f7015dd432c3832a29532c355a6914743a26cecbfcad865d84294f1206c7fae5c3ffc13c00022f1a2583af113e4d7824744e2f22c478c2025a7c88237013bdfcb5c57851e633d0ac19fcb664634015b3f5dfa21f893be6af92702c6a8fe74e3d49f05f04f12e43fa4b8639d651cada005cefd18cea3070be3be76e76eec731ddea41341dc840a5c897312c7bd3e5cf1e2011771b459fbe18225154f3e24c69e870535a3429b460f485e88053f642dcc06c4f532da6270663610d099b720e2e53b6bc9e610a28706c137626d6a4ca30741e7738bc497162d5341f99503db0f9730f653170532882b1482a1e608035737e2794491e7813fe1eacfac1a158a5aedd731e43a7ceeaefce07104565118e1bcd5ca7f145ac97b4db8528ceff7c810e0774a4102576e98fab32f37d617b1fbc8852568e4b833e40e9015bb4dc808054d3b1783abcb86149926d7811c4de2b869c69a0f37d0ed37582fc94a8b4626f0e02c8a8911e6c628524e0b5c9e59e0ed1ac6ae7aacbad369fcdfa99f06f05f4c6b71bacc62089c51f1bd86ad734e700436c8a021cbcef5601918f0a234859e4ea5e506620ddc66ce4a6c9caa4553eb6398a471c4a62285986d1a055e1e43fc670da359e441eb63783bf5500bdcd5fa2906558990b5cdc2dc252b542edbf5019917e071b3c8e1cf6433c5ee04fdb4e65cce3c8e56c09dcf91c709178a8804a3d170b1c1ddbb591738e977154b06f28cab90b6dd43e4e1dc802503533781588f698392cd940d091a4fa3ac033b32fa9d72418273fb98fb76f21d385b4da1e741efcbf833c18a60f3818cc1ca250159e27b7abb9505e374e8e3278db3b914d69cf3285e3db1f545c310c7905cfc829f57d60e36656c463db7da38e0d527eb63e887eb4d6a7d0ca3758a8cf51a69155ea0b13ee268c78da1ab187fd43468871c0b54d9b7f288378f1235e3541974d05803894b1b94e85a0cfe5d1e6714a2d54cbebc518ce6c4efe4731994ac1418729cd6c1c4875e621b4817898dc09e869bab12f5b61817fba13bf5033f7d046944f40bcc027f76eb4e0308d2c77596c1942bd07f23d07f7c7c460a3e3efb175716c304a66251b299ae7c5426ae0cbaeb357463248a1120984abb2084311bde88399aee96c86c346aaca2cf8d7934db240d5c5fc57a29146b4c2950d6bc2254896d915672a576276914335330db24cc166cc204a660fa88bfac6378ef479b04c49ba0a0f41c2bb11f2e942dd78264cdd642e46d1641e87ce72645839f4ce79390074c305914d696296859afce7d1878a8fdd274c771bb8bd2a9e33ef9a7d7127c9132cac1e30eef1ba0c4e464468e6670342b8c5eecc9ff643c712e9eb3526d61ecb3b62511f050601fad619c003786208c523073372802883629d82e219e7b7d049f611ca1228c0d001d3d75bc10c005cc1695b97c2c8b72c5748c06ecbc9567016d9678a72e4bc87233fed0e027b2f86f9c82a3e2362d9696f5e2951b70d54a633516b690e96e3c75a04bcc71dccfe769d12286095df5ac0a7f1406c883737713702c901d0b5337cec28a973939d18de6bec6dda4914237cbd3f13c6691fc3e375aa4b8868dd3d912ce6ea7d18364a35dcf8f327b6ca01b524f2abcb53058f0b21ff52fd11cf8e12c26f33ca8633cc87e2396889b5b29f21f6e56531813db4add0636ac8d64ed878d82435280479b540417d7bd351d226732b9afe25253c9471632206205a91cfcb0e04f33630add78b62cf58f489ff0d817e74a088546349f27301d81466bfda0eba0822fe594a7d01e1440afdc193f93596036173129e2325e7d3b54014a2103dd3146c1f22731348e9fd731b2b0a90f1384e94f6ad8fe54f544de96b91fc0c6661d44ae27e84b49d022c7c32a1bca3289cb308531994b79aa7c426938a905cf635562b088a92c785a0fa6ae1f24e5b3ae55747449ec6ae5c68f12eac04f52bc94c1255d577e327bda9cab84f9a23d5fad03378512df2a75aec2ca0d29b232f72f2dd283afbb3cf1aacb7fc29acbf764ed0b6ce2e0c5ffeffb69b081ebd80fd34fc9c92c8ae149e04f4f664972927d40b2397a5556cf9f456152acd8c0e5ac7ad9420f5952345deba1d0c86e802fb1da537bad47b5d203f65ee8d12ef380ffb8559e3a6b3ce04b2ef13cf9024fd5f28ea4e9e25464c5e44b41ebff73e6a76b2cf2480d95a6a45563fb4badf41c609dc76895a7d07dff2f17798c9678a43e2b59e5e1facf6ca147abd67b2ef5982cf4fce78da39d57796a8faa1d977af40b3de04badf37c91551e50bec803f46b3ce04b2ef1ecbdc053b6bc039e7c75e78baded1c6a65a764987191a97e7d4702e037026946e8de8b3cf2124f65a02147aaff018b3c85251e9543925779f461f13e8b3c4fbfc453227fe3159eff75eb3b72a3775edef9cf5fdcd1eba5be3f6badec948635ff1f58d83158d691ec87b4b22305b1d2e24ec1868beb3bd267e9346ac52a0f57b93c50db759dc77095476b83ea2cf2942ef11494f4c02b3c0758dfa9ecc9a2b73ee822cf975de229b51a4fb4c2b3d3fa8e1cc0a89678b41db4df22cf0197782a72cf2fbdc2b3d7fa8e222a561a53f08516790eb0c453b6c003f658dfa95add014fbdb8537b69a76c61a7dc47e9d675ca567504d93ad1fa111f5f022dbbd9073fbb811ba67e0cdec3d9328c8268e1c3c40297e1ec188c83809c744a000adfe27be865eb1db7f0711ebb2b98006401c7dc4d023892a147bab8f4218e5237852f6c0f2e8e304728c3d7c3b5bb430a49b83fc67395a3304a5f8c0237491bb3a51f7847fc8a407e4cfcb81b67dd7ebc8471d4e0cef489c7e0f853b09a9360c2e1587a8096e29e45c166a53b2702c8c1dea99bf809ab8e4b16313e749c1724cbd80f6fb323b67924dacf1a020025961cfb4963154dfd00827fb2425416ba711c6d9944115eaefbababcf376c0e4aa84c0a84bd3646e8d2650c61e36ee3c6290a4b2b10f7bbc678b751235dfab15789b3d73beef57a3d53c44b379857a1ec1a373f0a2161b30a65bb7ddc6eb7db75f052a156616e19cb14219dfbf3745989d2bcfbb7114159d94d9d9a2a6586b5678c751e6d6243a403f3eec77193661008572f986b3ec359180002be9a5a4f91f2ca2fa0aba1f1045341f1057475b53dc72929bd80b586a6e708058517d1d5eee682b20bf8cc355c509b128ce6da4d312a945c4068aed9cdca41827bb86e1737d56cd5c3d5aaf45f6470f46b32d75232571759fb80069bf0d5de7334740c9d53ddceec948d7d6364dd4acfd1dca937bbea415a1359ef80b102e1abb7a701ee5772b4dbd0ecabf9aa896c6018aed5edcd4199173446363c5c804af91aeee9ed9b76a5a1dd6d70e68845535b135bb3d2110c771b9e4db52ba88bad59ed0ccc9319c69ac611e488be5f41cf7741328b210cf114c80b6e2abbdf1bac1f8e188e42eac648d3ef8a1c0ec8095b591556546c2ed0276a3510e6ba0cd4095a0d5c52d40ae4c4ac06aaaeba99595c5a039514ad16f051a1d5c0d852cb2c8b47eba0d27467168bd6c0d529538ddad87a6a6c5c0c5a03d940d39daa04ab8056637b9598f46a5b965fa950291556e3d455f5f5aa5a964be930e994541333ead0a8d5539337e904ace97d4db6a4ef70133c1a2d2c2644e56834fad7aca3c2a26755b1534457960709185a757c801416a95829e22bcd7a0414ed0398429adaeca4af9dfac6bdb45b8af84a331a0145b78efd6d56f74b115f69fe22a0e81dc07fd2246527c3d6af43df60b814f195e626028a41fdb0a4b45f8af84a331101c570ff708ba51b3bf9bea65dc78c190c1805c2d22c43e4a68e5195f30125371566b51447b39661d504d759e250615449757d0ee187790e315c3f1c59001f06d2a6129622bbc01b6dd23ad9855548374a70ec946e5825998839adca4cc4d22428e624aa1214ab90b198e3aeca582c751e634ec0308f29d061a1a339a5aafca640828495350854653d85aea6419e3909836448a1b6b5c9546749962e7b322752277bb2aaf32b99f04ef995928e7e4cee927da9482807e52e59990ab97e54ee91b2e908e986e52e199d8e867a5cee94eee9fa5ba3cc3b26837aed35a1639c2caac8940d4da35cd21233cb1ac3db202253715ca4619e6e5a62f259232230493e55dc1689d4c8482d313fdddf95d1fc54c56811bd51d26a89296c6dbf5e9ec2aa182d12a991d75a62965bc3b19a64b92a768b446aa4be969808ef1f96d14458c56811bd51766c89b9720d164d726515a345223512684b4ca76b07d1e5e9b48add22911a39b62566dc7ba7152ce356315a446f96865b52565ec3051865e54a275024532757b7a4d4dd9c65b3d45dc97285e3aa48e82d29bfdf3f9bcdf27b25b7558eab2aebe70fc10cfaa54b87f8f5b25a2b87fa1a3b65f2e6f8aad70d8d51552e1b1a63aa5c3534c664ba68688cb072cdd01c53e592a1312a931543f36eac5e3034c6556bbd50c2badb72611912d3d5c2321ca68b8565386aae1596a1325d2a2cc561ba525886a4c64261691719af139661d12e139a2baec92a61290ba58b84e6e6de688db08c918a25c2bd0d5f966cd5d7d24e6d3b5eb13e6830e874cb83e6b6d66875b074a8942f0eeeed25b3eca7be19ebd7a06eb43258ca43f9c260ddb8a3625dd0c031e89605f70da6f274a4be87437981b1d1325b132c355b154b82c6bc18ae0896f152b520b877cccc65066506d47c39b0690fcaf7147a30b94da375add4a0acce6ec9410d8cd5e9410d649509420d5c9529420d5ca649420d949569421d5c9589420d6426a9429d2ead4e166a60ab952e14f0ee963094a3314d19cab198260de5586aa60de5c84c13870a2ca6a943399a1ac943457719a70fe578b409441d653649212ad8284d22ea3806a334a29c998a44e200c691a5123b696e67078b5f914e180d475d4251c7261ba5141543a83ca93880676569c54ea6ae5f8b03a3d4a2828ff2e4a27ed452915e18b9115d82b17f4096a5183b79c5a65dcbb099a51915a6ad22d1a8c18f61aa51ce4f55b27180283c4f372a0c6d8d84a335b04b138eadef415ab74ece51516db7b4a31ed2eacca31ebecae4a31ebacafca31e3ad314a41ed6ca2ca426baca44a41e3e935ca4662757a723f510d6ca4854a8774b4a2a3199e62595884c53934a4435b3934a7ca6094a3522d31ca512538d34a5ba038d33954a54da64a5a6aa9be42bd5cc94a62c35fd8a51d652c95245e2721893ca72975df5bab39bc3a8c8604c47ad2e89a969cf8df298ea61569eca1cc64fb36c665703d9afcb87514e53cd4d795ab353485491d998fa225d727390b02fcb6f76f5b14dbbae3934cb72aa0d6245a2538f2bc35ca792abaa74e73009409ef1541be91a494fa7df2a4d7a500ab3f46a253c2555764b76cc1156273ae6b82a931c735495098e392ad3e4c61c6365625303556552638ecb24a1a9d199d5c98c39b25a898c8c76b724a6148b6902538ac43479294552337129c5659ab49423314d584ab1d44856ca3bca38512945a34d526aa8b0498252ce44697252c307182526a5ac542425fb9b429690eca2af9dfac6bd2211311981ba24a486fd354a40ca874d79f2b1bfff6489c72e86ad5f87be51c251ce4579b2513b2ca948344cfc852ec9d83bdcca128c5d7c5fd3ae63c6cc128b72435691549873639850947253954cec1f5ce78944b951cd9388ec3a707ac5aa00d7607779735fe8bde2aa4feced33d5fddfdcf5e78c295a8b7b504d59517d797aa1facc0d662fc81deaa0c12e213f92902119cd6098c218666c7cda24a93f7f6cd0b7d9468000286a2edc75903d982289ca7e25140ab7af8b02b2e58e13706737f8c95d9723e3ef5a07ff459ee275e963921ab45a2116c4c8dd42afc355ecc902165b213df12e91ecde79a4e42ae84d90faf8c1105a01c135b6b1bb1ee1378b1455eee59ec54fd9e0c71412a95777bfad84881291a38b939c28e5361925e9caad900947a01c7f3e7eb108dcd8c72f83e03a8d06f9748184a618af4473f1c06934c177e0de8d5f70758e8e14e3be0c5ad1258c1f49a9a902530e644caf44204ab900a527877ece2e0c15a5902bf70eb75e1689146ec85151db5be78a64e5237afb91353cb9a7e5a31185c1e3aeccec4255dc86bc6be34bc69e48af3012f7a5586879ab3facc3c95e02afda16a120ab9a96dc976841069d7eb3263387128372a25441590eaaf40475389a6aab74dcea1ed63015ef10d3103cb86d2a1e76de9bf2ae86a269629e0cf8d985709985aa25024323a5d8b77500a23bdaa9a6919daac79199a9522fe91c80ee8ed6aa696aadea316566b08ae968294d1d9a96c6661dd864156f1b54d33bb8c52a5e78b02fe15ded46cbc8601dde5e150e76ed2e004373a5d8dbb93fcd1dad55cbcc5a1dde58a9977bf727bba3ad6a19dbaac39baae2845519491d96b6c652f50f6caa8af73c6b081edc56152febda9bf2ae46a36d64acaaf9d98570a9b5aa23024373a5386b7300a23bdaabb699bdaac59199c1526fdb3b00dd1d2d56dbd862d562cacc6415970c4b69ead0749436ab79588355bc125e45ede0d6aa7863df7e6477b5181d035355c9cc2e544bec548dc61b1a29c541bc7d29ee68a13a2616aa0e3b66e649bd8f775fa23bdaa68ea16daac39199612aee22d013d4e1e8aaadd2c1e7a98aef4368081edc3615afe7dc9bf2ae86a26b629e9e629eaa70ffce1e223034528af3b90720baa39dea1ad9a9a798a7526fef3f00dd1dad55d7d45a3dc53c5571ab51294d1d9a9ec6661dd864151f9351d33bb8c52aded3bb2fe15ded46cfc8601dde5e15eeeada5d0086e64a718c7f7f9a3b5aab9e99b53abcb1529ffed99fec8eb6aa676cab0e6faa8afb11cb48eab0f43596ead0f354c517a734040f6eab8a5775ef4d7957a3d13732564f304f55b8d56f0f11189a2bc56d1f0720baa3bdea9bd9ab2798a7521f103c00dd1d2d56dfd8623dc13c5571f372294d1d9a81d266b50e6bb08acfd2a9a81ddc5a156feadf8fecae16636060aa2a99d9856a899daad1784323a5b804685f8a3b5aa8818985aac38e9979529f15de97e88eb66960689bea706466988a271974043f86c7696615845dbd491ac374b6c43b46b3edb1d3209adde222bc6978ea267ec2b64fe392451c6d47a0991724cbd80f6f59116aca12925da7e867ba339c6d3845ac20fedd700693348a19fffaadf3a59be74bb7cf2bc899ecbf36c062bc235cda96cf1029b6f22bf7a36715d66e0c73539c6f6157a3bf8771eacfdc80c1e36ef2fc18ce523f0a4780284ab17d59bd7f4aacd6dd025f6cc92e0e07b190ed1897e9aaf6c0734d69e690750efbb1ea2d93ea8ae375ac7edba4be70308ed5ec98d4541c6663f5bb26f51507d058fd9e497de1e818abd937aaa997f9c0a4bee28816ab3f34a9df57c9bc691b698b5ee84d2375531c61ca1098299c70f46809e3c8d4aae3419259eca229409f0a677992b53b838d294cb710326b41a81e87eefdd4cd8cf7d49ddd2ee268137ac20d08143675a709d864c6681ac51e8c338321c323696c977e0a8bc891838be211f86a8effa3d261854dbbd96bbab96845642e3124d34d9a46e111f9c58ba3b5176d89e46859ea2e8e2c2586248da370917713a5eb874b18fba98eee71eaa77c486ec6ed71b299aa2bc68ba9fba2d9b340ab658156cf02f6f1f02843538248148055092f3757cb7aad30ba489068526305c30d4f4cdfeb2c8cd2a242bda9ee420611f8e1ad8964fb475a75e2898d96d13d7ebbb30406870fb3d4bf87d5ac517c957039cebc312ab9b5d09f573535108f5a57abb8ac385abb333f7d44a1c8b0440d0936d230be9bb3eacd7246029f6b2cc795617df4eb347a801e700bdd9401a4d16211c0923697378fa3a1518802a5a23c8adda750cba6562d254644a9e9f951411bb6c19484125c6ebf42792575a3ce43f3b560295442220de6e37f8eacbf72177004023f846edc58c4aee7c3307dd1ec343db8b0c057b087fe00fb6b8b5101fde6d71620ad45fe9937c67566754a18d5d9c827e05c72c4d3c09ddd96386241fe55d227c8f671c404435d474c6ae91c7139b7158eb8d5ed5a20ff4be78b655c55be5886d7fb6289fb5d7d312568ee8b338ba8935b892f1621f4beb8205c953ba64a55ea8e15307a775ce44eed8e8b7086eed8eed943dbdc6631edd5b8632114ae76c702b67aee98afba8b3be6eaabddb104a077c792a82a696814e229ddb19211adaf3480366c8329895dddb1a46e923b96be56459a98a77ddc3169147669840671695f35072dbb353d9c3b16193d843b36e45c72c781bf58a67a778c5d79b28a6ea1e491db3df4a7d80104df3e1e9960a8eb91492d9d472ee7b6c223773b1660ffd7b9631951953b96e1f5ee58627d57774c091abb63aee3151e59c4a6f2c82284de238bc255b963aa51a5ee5801a377c745d6d4eeb80867e88ee100fd29d8ac0a25d4b9635acdd41d0bd8eab963beea2eee98abaf76c71280de1d4ba2aaa4a15188a774c74a46b4bed200dab00da6247675c792ba49ee58faaa32162a39ed95207b736fe00db167cb093d498e2cf27a901cd99879c92f7b6e5c96250bfd60d00b18dd3e5e1923a8eb9471258d4faee4b62a4feea02c2efb4be7982554557e5902d7ba6505f7bb7a6642d23c4fce6ca3466c254e590028c99265d1aadc32d1a852af5c04d13be5026b6a9f5c003374c9ad21fa53c76e51dd553be542585ced97797cf5dc32577317af9c57573b65f1bbd6272b64554544ad104fe994556c681d6635b059030c09ece89015aa26fa64054055c48918dbcb2537e7cd61d325c926214293cd4eaf63b7e787f3c802a70771c8a6ac4bfe781dfb2b377e2c71c9b6ed35a7ade2c47551fc0cd73efe98e1a8eb9259bd92b9eb924a0799ba2e62abf2cac51aa5d3d77bbbe48c9eb957a6bdaff0ca323295639661f69cc1ce14acd43d2ba1f41e5ac5a3da49ab200dfdb46d4f07c3996a26bb4c95f513d9c6ee594256cf438b957771d20206b59f2e8094ce6657b6b1cc4f6b491dd0556b98d13a532378e3969893d9635abb644ebba0e199fd508b692f6f6ddb43d89b119747e8509767dbb00f0f38a92d337b10876dca7d61623b2c4da05bfdb63733f1d618d17e13da61fdd41957aae5a4498d8378680955f5647668bcb47c8089ecb05eba4c3a5a39891d96a7cb02c09e2e996851c524b60ca277c605d67453d8e16ee972bbd7f39a666e986aea017c308fa9eecc75b84f8a9c5757bb5ef17b6dbfab44afeefea79db12eb251329b5c056cd60043025fc8cb66c640219afd12e26ebf3fa35ba108119655b67b3dd83de4147578e884d89075c9bffae13c2af1af2d7b3883f2a2b1d27e6044fbf8578ca0ae7fc5956af95752e320fe554255e55f25f0a7f5af8498b97fa51dadf0af0226957f1500f6f4af448b4afd6b1144ef5f0baca9fd6b01ccd0bf369b8339ec98f957aaa907f0af3ca67afe95abb98b7fcdababfdabf8bdb67f55a25777ff53fa57151b5af7570d6cd60043025fc8bf66c640219afd52d88edbf3fac4491122d449b55b83fefc80fe55e0f430f9ab21eb927f4d36b319f7b8913248f79a3ddbc4c5325cfb785986a3aea365f56af9daacd241dc6d115b95c72dd6785aa79bd1abe17749ef2bfcae8c4ce57a65983dbd6fa660a50e5809a5f7c12a1ed56e5805699ae9dad359b7b0a1a5422b0fe18c2564f5fcb1587917972c60507be502486dc7ac23a2d58ca774cf1a66b40ed408deb825e664be94ab66f6432da6fdb2e1963b6fcda9cbc374a8cb6bcd606be01ece5bcbcc1e262136e45e3e61ecc6a19fbb08650f795eb72f3a6cacbcb605e8ffd4e74329e6bd0e1c531cb58f1cd37a1af75d87fd0a67ce61d11c3f2ee0a93c805ca8a175e3250dd9f93432a35ee73c32d610d579640999f244b204a377eaa60a577e245905a577e72aee34c792159086ee7c3ef7066d4f3676b5b454e3dc15384c5dbd84bae69165a1f24e8796790c6a575f00d1bafa12511a90d4ead0939e635633a33f666c026fdc1273323b3afe12c514c38012c082fd518b70afa0603e77e7ad0e3b2d8ce850b73a9fcfddbe7dc093ce12b307090a4cb92f6ce30e175071a90967b0da03b3249ea2da6f133746517f1b37ae562b8367750e92c01790556fe3962a3c6dfacec8d571f4b8db959bb8055cea6ddc02c89eb93bd3ab8aaddc4520bdab5730a8dbce5d003476f4cd79676a96b767fa7b80b45dc4557723375777b7addc3902b52397216aa7ec1a123a8578dacddc2a564a765b57839b36c398c8174ad63373a114d19e6ed9eef69accb121329963ebb6bafd436ee516783d905736635e9e5b5fb941407e6d4c232fdbd5cd5e38971edf173fe26b212b5f31a8ba8890b182aa6e560a5e8adc0c735e246e86fbdec39bed2e70e3053462a639d072433e1584be748339b9c59323c00d2d7cf9a8d1f7c6d64f970d7a5f5c9159e1eaba190c5318534635173c967208fe098e675198ba7e28580e25bbd5c03adef98ab9d40bb7a36685f90da97a315334fcf5a95dfb7e29d7e05aa2a8d1b459157a3f60e3def720ddfa81ecdc3c40ec2d7dcf136ff4a3701c3400e42ed6aefdf52b2521be98bf9f900ec028f1c90d83ee3489824dcab69760adcb91a6b11b26f3285e8dc88f819bc2b6f7a2d1456682fc6d1f1539c5e61cc18b17a3720141bb64bc6b6fd6964526e821bda990972e8969e9ba1f7f13edee0fa7087869d0ac604618149a6a25b7b6965c54bb9f61124552649995162e9ba463ff004da2f7040bcf49b00e5b42d7b3d82ff328a2cc7343d72e5e6c6c0b232ab75ee5d7211344d955bded18ae78b5f8181e27e4124e824c0b58f7e2708a95f357b25f203e48a4215624aea5580f7b8b8264911c992154854f2efaa39506e8712209e03da43785ea3c83d935a504d12cf2f27b4449e486c2924d32029df58308ebafb2943353593f44d14c23bf131b0076477203f33742f64cc083e52edcc3af7164323429c037605be520316ffe77c10f5e6a50f126ccae4485934ff3abb05f491fe8382ddcb65d450d7d0add388eb6471ae7bbbb09e3f4afd4dc12b87f9af156e08e57765cb75ce335b7f8d2abd9dd4d1ac9b7b32b8d9872f0086697e7884c20598562798ea8d0cb3bf8bc9dd44970589934e9f029aaf74e2213c482470ec72b0ec702f8e04f453911a21a40d69e43ea6b81b3821405835264b05aea85b15a107a4da34d049dba71d905f1150a636cca0ef0ac9cdc5095751064c2b1534f2830f4f656880a0f41199daedb0d147a233ddcac01fe7d1dad519ed0485104405188b78f675597e92a206faea8aa5a40064ae143eac6d0b5c031a69aa750eaea1210ab6eca939e9c88894f6b5a5d7b4d2c6c0c13ff331c65ee9e12419884373916ee3a804942524254cae70223d05d3fc881a00d9af6fa417e2141422d6414cce475f5d56898cc3592cf1c84c735107526320fa6ae1f2464eaa621e5b4d9bb1412ff1a9fc464387383d90b9c88820640f2242b57c68340f4483a0efdd5e2780d63d4fa3c07672c0c0759729a9b90bc309a7e82b3b431f71135a473af5884886cbfeb6177803a6efd40fa0adfd667c251926e3c3f92d9e152e89c9dbc506407a3336788eb44f2afdc8b79ecaed03aae3985da783c89f7fce72f9550256631dde7861f7af041980737428c7f9693dc9c4ca6ab3531cefd0036fc70bde18c20b318431ee7ae5825dcc22cc8264c60fa8a4f4bf355298e7805612294e3b97b1fc5f8266d54e8cf7239e5d3cdfd76bf5d340cc79eef06d1820d2c8536648c88805a3fa0b5ba0cb8841431289920daedfb6df65c107b0ec566809a80771bbbeb11407f575a0eca58020334b4287fa465f91c36c74fc7e6996403b79d95e6736759ecc819448ee26a13a4fe17a63bf783944a5ff0a771ca9e00ca67e36218b8a97f0f59dd991b7b0d96f91301424f540124f0353327e47112ace245953bf90e052b51104cdd3801f3385a8104aedc30f5678d8d0fbe3bc120d7489dd1cfa351630ba7b77e4ae595cd852826111ce7ac757e8e05a0d92131a0eba518ef2afa7c70a487c577f21d3847ae1b098205240a81581f436c6b6ac88aacd8d9b605f2bfece3ce91195f1c2f821039468c847b282e140c3c316dd2333308aefdd53a80e03a5769d45978fe8feb0ef69530c38ad1907163379c41ee299fcc7caec590890bc974d81b699c5dc5cf3fb72337a3491a294d7699e05f6e5653827fb6891324a275e467619a84b04b5b50c64aab4b7861b4f07cbd9f3d3b14c5082601d04d8874cabe9b303fdafaa1176d1b7ec86f49281556f7c80c33b7465cc0d76c0d2cd06c77d15f43ac4902d2b250ba8b6328f48738b9284c1b7377e5078f23803428808de43149e1ca0293c00f6fafdcd935fefd3c0a530b7c7b0d1711043797df5ae0db5fa2699446e8a7b70f8f0b18a29f6ea69b30dda09f1c3744e32908d02fe77eec826b374cd02fa771e47bd96faf61700f51c2037e821bf8ad0512374c1a098cfdb9d09798d5641545e912b704d97837f0dd0492fd9cd84644c943017011bb8fc9cc0da03400ecfb6541a1be6ad9ad69bb4da599cfe50a724aa24d3c4371b8071beb38b2c0150c03f44f14bab3c8024e142651e0264808d126f6610c7e82db6f2db08ac2084f1d3357b8887dba2aaf893f88238ea36d750cc2777a330bdbed622e48b3a56cd51e7371bc7583405ae7ce27507365e218e7a611a995c1985bddaf4103348fbb707524c75bcd41378b3d2846cc63c6af148188ab861951815981366a9586e5750cef7db875b31931c5fb9378ea9d6988ad66466e2f8a4cc14bd0c9d24e46b9d162630dfff4aa342a224b8c94c7e27c03e6a490438ac158de1d8a6ce663789cba0b054c370fca3300570af8497a912545399cbc9305f9d086076751ec92560a4fca15b0a90249cd6830d67a1cb42a224d556a4aec206dbd3a2c552ea890b2329684e18b872e650909265cb0271305d3737ede3a6f0f25c08e02d01db4dc962b01b65580bd5ebbd594005b0ac05ebbd36c4209b0a9006c0f3bd3aecce3d40db39ee316d7e3287553f8a2d1ee797071f44a33e4b21ee9ad1f408799076c6fb77420766c3214c9c46aa7309484e57efa9c6ba747c1e46d53014c91c221334c1481c261d54dfccfb0e17aa86739dd250e05cfcd1d0fbafd6687ee6c11ac45f3b8478b3126ba5427e4875f7ddaa2d617d5bda8c0dcf867cf477e0cbf62e9fb6ed59175a19665e9a7108b008ec03a860dd4120a95acddf018778fd24a32546c1eec18cf4911506113c947699e334f3bb9e09908151b333eb593a0f29e26e22c018de11abab8efe88f8a490a3263a662bc59c62316f997e3328c988e4a96cb16fd673616a18bd2ff6594468d851b04307e6cb01ff28566d5c41f552e64d5033f4965edca260fd9f449e65c3255337ef393985a15a9e3ac0c053bd2e49f3027575ddb7486ef99f5ecfb5bf8388fdd154c40b2f6c331ee1f1af2c551b68fa168d56c6cd3084f69a4876b7787149251243d0d3e3ef3431f45b0d91bdbc9c767af504f7cbff21ffc10cc02e8c673ff81e0fe663472e769ee6bf1d7119846e9323b1c40ddd0c767006312fc165ea0c8d6611809aca82f9ee32eb6c0f32cf23992e7700413fbbd3f67b0e0bffe016c71f7160e8aba360a025f7cf56f82fb2f70025a4747fc7e2c098ca0637074310a06093c0472014c92c1dc7df11c0d710b3cf7fc150c133f0a9323c9f6153665702e01d716520b0e51d14fc81f15de0215abf67c70a391c7223467e9aea69b78817ab5d01c5592adf0c83a4e15b1ab8623548cfc48b60fa6305d32dbc4310c5307fd26ab2abff525b3cc6b167515f460c0e2eeb21d806c5c36a2d8c7664088d5f2698086b761a1ebf3640da1578458c7d11ac62962546a96c536035a39c162fdd45fa1a069be09a96d7c0eddc40f17af8474a6d9cb5afccd284c976495fc45935b279735bd8704c1ac245fa95552a9a9abd4d6567a093aa412a9f68d980468a6c6f0f29105ec63bbcbe89d9c80abc8f3e7304e309ee2c90e5e87f47250efe8fcf0a2bb7e386266b8d3e5ec75997cf80d9d1af0b601ed064fbc9151277fb8e1cab2cb461a6d664b713e2ffb46a686b0f3c760e2885f07ee0c2ea3c0637df09c2b4946e05b3c7bfa2dfa9722c6739adf826f69796395d02262dda13b5b0a48801f8a4859fbbf197df56ffec35f8d0233e8bfefa96b7a9537ffe404fc0293751426fe3d0c6192f016398e562f9e7bf0de9f412aeaf26d0922ac448f43bc09533f30c09caf9550583a4eaaf0f37bf02af062779c1ae2a5c0269220a0f2168d72c48d280c1eeb60578929b94da3b5697b725daf147f1dbc0cda4c6530ac294e5e4628fad9fa1e24a81b304452c9660a4ce916da9aa3949aab1c40bc4a37b8aabbb2b82f2307608193525eb12671837e42c49ee3330dde1e5c15a44630d6ee3a5a2de7d89cb37d88ef41961308a9544ef0e404fcccb90e410064552d9f91cd966d908168ccdc208836fc440cfbbe49604c9703f9afabe8b3f653a2f9522c256c7f5de4ee7b3f9c051b0f0a8c8bbe186fc37df19c063edc69112a23b2a43502edf50348a2c0f7008155ad77b5d854042de627a56919dd348d63fb62f65712dadbc7bd56974e57f1bb161bf671a7dd675f689ed080f7304c134e689a385b3867a39808a46190f055159053f5624cd20ec1b2957a0297895dc04d5d7da3dd642aed72934e177ccde1c848f1d35f996f0860ca94033ea430f480a037b95a2ad7664b176e3571f4f32c906ef1cbae7c45518d9e931f1a1815cd675489a0dcd9c5c99d62126cb0fb9b4b946d41055baa5d282dc5be9dbc8cdf35c917ca80d126459c2a1556485d2b92ec0ce137a3d114cea398ecb996a7628a3df51c4fb016e7658ad3327cae2b1f7edbe73cdbeff838db919892a002311f2acf8ec57d919910e4bd86ad2c53e5f6196675045115b727325167137cdf7037017c339a47b34dc91d97d290681f6548c444b2b266874b4aaffdcf30cf48c95960897f2e3be7d5572a2ea6f2c27946b1b808cc97d066154f58659dd051722415336977941c49c54560be84e34838ba956d286b2919928ad9debc969221a9b808cc9764d65b30cbcc7c9342d17e07919be5a96ee8afe8c40f3711dcb5ed5502fc70ee877e0ae93973c1ecb6724fbe88e123792254bd8145658979e7de28860d92b3d741144d4c89ef6f66debd6c3aaf993b5e5e4c993c49e1abc26446e03ebe781ecde709e4e691999fa51fb8753abe4463ef68e0c3436203c80a289794b8c4262d65d3fdcfc93a4463e1aeb39325e0bf3c38773741fa8aac19735bea1552e4cff4d8b217541cc92445d9e20dc700fec0efeba7d307ff24832ae4e21db607328b4fcb2aa2a05c51eda372376d19a2741943d8b8dbb871cacdf9e850b275c6528cdba8912efdd8abc4d6eb1df77abd5e35caa51bccab90750d1a1b8590b05685acdd3e6eb7db6d338c547855385b06b243e8e6fe3c5d562233e9da6d4490557644c75851ccf0f50cf0cda34d6c886e60d2b5d84e68d45938a762a2c30c5b4195054cc6fa4bd1f16a2c2032d25d82a3a0c2022273bdcdb149ea2be033d2d91c95a0ba22a21a5d58505b019389ae0aca5082cb444f292e85ba0aa8721dfd7e1ec5e0b94f96969b205dc6d166b104cd16aba7a7f5d5bf9ffb7fe5132d85f1908d88358c51d8ee2ee08be73e3801cd167775525553242a4233d48869c398bf158fa1738e4c3aa0aef06820775f65c05273394f06546eab06aa7cf403d95dd5c0228d7c90bba91a48ba72a3b2b15d038934e241c12dd5c0d59265938de93a480a5d958de71a583aea0eaf8da727e3e1c6710d34834257a9dc4d01a1c6ef008d9329afafd639ceb594572f6a9be450caab6bf4ace046cab114354c721e15d575dda057318def5075a30986823e15dd4339025e932a3d05e0dc4201ad525f8d3c0428ba03057623bf2079067e1153f00c56d15788b0e5bec2927d4749e59abec3d27b157322255ec552fb1a73dc7a5f63c9bec71ca9def7584a87648eb9d221c90498e13027a1f753326e62536a60d63b2fb91fe96037c75dead28a5a581b7f99abb3341ed01cbb9907b42a5da44cb1a68b5411d00faa7afe53815b39aaeab9550556fdb0dac9e56a28e8c6553d87ac41ae1e58359db5a63335ba59db936b95d1848081a357e02f1b5b8709032c456420533a686460e9638622dd9d62867ca3901420f01f2a72493d6ccd70c01c535926698ca4249134c65192471ae3a84e238d51956491e6384a92486324e539a4791795a590c6580c3348095fdd04b2ac7a75fe5856bb3a7d2cab6d9c3d9621a94e1e4b6b57e78e65d58d52c752f11b648e65f5774f1c25ac87cd1b0bc8777101c29e4ed109489f2adc4019745d47500357992ba881a6c419d4c052e20e6a60a97608359095b8843a584a9c420d34e56ea14e779539861a780c5d4301635de7508ea0da3d94d7af7610e5f58d5d44399a6a275151bfda4d9423307214155d61e02aca31ecee2c0a780feb2e14e8777118f24674d16714bf56b88d8a0a753d473d7465cea31ea612ff510f51890ba987a8da8bd4c357e2486a222af125f53095bb939a1d58e651eaa132742a2aa475fd4a258e6ad75289a2dabb54a23076309598aa7d4c358a6a375389c3c8d354778e81b3a944b2bbbf51a13eaccb5153d8c5ebf0e769448f237ea9f03625c0753d8d39aa322f638ea5c4c3982329f12ee648aa3d8b39ae12af520349894731c752ee4d6a74549927314763e8456484753d4869fd6aef515abdda73945637f61aa558aa3d4679f56a6f515adfc85394778281972845b0bb8790d11ed63b14b11b7a06f017b7935cbc579d547dd1e0f681f397c6b1537e7a00bcf55df1f91bee981b63593ae526d5224d373e2347eeba23cfe734c057ffe670fd25dfe8e0f3573ac857a995dfbe8eabb01bee454e88ecc42b09c56391f26b325429e59bf20190afc704c2a587c52bcbcbe4a43f4dc86a167b46f986092780ead77c08d82648fdc00fc5273eb83bab39d87bb91f54b7e367dd285fcea0dfc893bd41239fa857bf01a19fda959587f25d9816286225e30d1f636677293584c1c7ef7b65100c6183825e7047425e29f40eeb7fa309be03f76efc82ab7574a4d4c86af8824eb257120941b99aaca88c50014e694bedcc960e54a694b7728244d057f01dbe5a3786abbf3883a9d9f32b99e8e2c74a020a12c5e5e4d235eedd4970f70768e814207622262f8d94adc9ec42403199563e93b707913299e9407621a7ced62a13c6fd489535ae046a17a2c578a334d43120c18ce333ebd9719a0d43c1f027690cd3d952776870b7e36efc194ef433bb15421b23b8e10c2669a43e69d2505a656afdd41fd96506fc27233fdc909f86abe1f7e5f72c49f4530cc894110606165f16cd03128127e2cde9c975c1f117ef5be40220d4ff194375831991df7da204999cfab9bb5a698069fc9f85e9e03b367dc20d10a497ae1f82ec52c9ecf94dd3515375f9e5c7ea972471b0223e80c35fbfcb9fffc48fc453980df77e203d2dccfa8f7b41167719be718f7415b9e72b7457d002cfd7ae4feef9c2478c33ccec2a93305dbec0301668b248847c6bf821524601a4c540582721225c3f296e4c987137016697f60a14b28f2e512672c1e711f9c58ba3b5176d4907d1b2d45d1c655bd492348ec205af2a94861f2e61eca75c60732c3c36a86587ab203f50c8d521f70cf0152d601f0f8f38f514db63e51f8a3c6b59e198d1bc9bae8f3d4afa43851849d8920b033fbc356e7d9fcfbbdd5a78f9db21383b20def6a06b94e7c6b730a4fc58a0fb35df0b26a2e5c71ce6dda06f7800eeade8a1f0e11bf9227509be29f00140e08ba0bc105c632cb8d6347a809e2ccf345a2ce4a8bd80b7b2b9da76195cc8d13c9298458d2e6be537d6cea4cb5a90195423d8e2e8e11b51cc70b33e0884d0eef922763d1f8629bef481444154791337ddc46e0a5f905bca1bcb0dcc14bad1c4b7125ba0697f4dff7ea5424a7c038ba0c88d15e59819e2eed747f2b8e1c4896fd41ed15b321a8cdc8b66a7e9c185a56815b0bfb6a8b040bff9b5a5e1117b6b9e6649eaa937805f96d942cf176325fae12569045742da4007a1504eae44958a2a555a82a723c3004b614cca98f20159c0a664b41eab580aa81b253cb81cb98b8f2116b3d48cc275296a2fd43afa5879df8ffcfc3ae0a65fa4e93ef9b3ea1558326927dcdfa39de250912e121ff2a425e243469a232e5cd5b3276dfc32bb8e38f928515fbac19ce485565686135b6d5963eba74be949481577baa73e81e6ed8e6c5658b8ea9efc57c870b9e23ccfd5362d4bf6b82418bf88c041e70d544193a789b80b149d68b58e4218a649969434f08331a47676f71cbbede6a3eedd1aae52f1be318905be587e8a66bfcbc9da1ebe8ccc02e46fbb74f980bbeb8831ce85516da3296bcd743a971b31a9d2476d85351b7e24d7a5752c3f43a051c69284bc749e419a52170772fd476b28bbc68f7373f68d53563aa638655d4217c598e4977914f10fa457bc859ef54c36decb67a0a4e7aeda315cf12b3228d3ffee6308be034eb47e241ebb6537fbe0673770c3d48fc17b385b8651102d7c9858e0329c1d837110906ba81210c304c6f7d03b46384e107bc43f8ec0574dbbd96bbaf816a9e7285a4341c563137d18b4ec56ef155fdcca9f1ae38bdba878d8ee775a42716704be6adb1dbbe309c5ddfc411e4c94d1ebcefaf600c9e13923d56f0f7ac30e2b415406ee70ea0e580922e0f6a7bd598b9520dcd3f96ce6f5086e1c25662d9a416f083185bc1cd1f106b009076239a2864af18d675c39a209a7f3e6bc2b9623caf3ee7c30a7a2c4772992077cc81b3e58e41b88f8b061d71d20385cd2c29dd09bba6d56826837dbfdd9d46325886a6b3aece276e11244af3370e7739b4911c21023777bbd0e15238421c26e7b03bb9b1721f4f67c38ece545087fb33b6df79b5911ee266f361b3609812876c305669fbecf9495b5b0d0fb6da22ca40cd1f08683566b9a972122f3d6d0eb0cf3322cb6f9b4dda31d1643af99bf15450a10fe59ab6db76d5a80914fdbfd769f1660ccdd6eafdba305ddecb95f82f61ec62b3ff0232ca1216c4d6d64f8f362dc8441bbd56c0ac59850b33d6cb68562a203dd76cb138a09d11eec501588a304d2c6b4ba585d5009694dabdf6bb112d29cd6ac376725a43d9de160ca4a28ee9e4b7be3de8f02989261d3ea7667afb2323c70baad79bf9b97e1a1336f0f07f3bc0c0f9e41b743861329eb62defa1d3ca03e86cffdd0f31711a6d2ebb45c2c5d52d622cf6f79d3795e86a8f49bddbe37cccb109561b33f9cb7f23244c5f58643362c66d1d40d705b9af3ce74886b93326c6f3addc1b49d971163d3ebce667919a2d2e90e6cd8cbcb10955e6f0819957413df6d229f74896d0f6c22a0ac180f147b381ccc84623c58ec69dbed08c578c07466748866c588680bc21eb33ff3288609699ad76fb7300e52869bd61ecc5ab3bc8c34cdedb53938dcb4f6744e8c2829c34d6b79c3de9459b9156e55bf3598b5daaf6809a230e8bbbdd6909520fcc3e974deb65909c23eed79c3ce8c9574b1cacf5b3d8fda95282023b2d71fdac4f246814786fc6066bbac840cf821b4a7ac840cf7e980b41a9510259e0d3bd4662570edbbcdfc2137568455d8eb365bddac08b3deebb5c890c3459877bb3fedf4b222acbfc361bfd72504d669c3c70143631dfb2b377e1c0162605f091f93cd6c06936404a87d14bf6edd3824b72052d3267ef650194a089161cac8baeb7543913472fe8262c16e51039d3bd80c2fbd24584e7537b08d92c3de5106881fe829206abe92bf36569b147ab8e9cacf9e9fe0bbd5192d45654419bf608b3ea29809a5538cb4004f61023fbccd00b00be4852170ae1198867f1d8ca2114a34424b3084a239524d1ebad0b02e2fd0ec3566f1f5e556d702cdc1c002ad6e57ea447f9603ab24ff4a066be039128dd839b05c209aee2e5621dcb32ae2b0e26520f3ac14b4ba02cf7d8994b5edd075bba672458b68251f659f718386cbf2dc92a82de5c01d252c0d14092cfe25474cc0f18bbdc2a8d0ab0246adac50d60fb8826e222de3a97f54206272b7f5c7f079988cc0749d5b31fc242eb95e9d3e9f4bca4bde7596e7ac01001f9f15df7afef84c0dc91e80d67d278f42ebbe9287a2755fc9e3d1baafd983d25ae46b18e267a57500e253d33aa8cb591426cddec76756e1a3f8367541d48dec81e711f7d6b30048df8ce3bb0e7c079ac79d57121099aa5381f60aa078ce5205daca880b6fd0bd28420e8ec00910b08297c03eb66d9bc6c93e914aa6549c9c5eb1cf2d5bfedcb2e9a386990d240ca76ee8b9b197dd772e7ea64d6ff11a2d5da63d0fa22896da7102daf958273319f9b37b528b59ec2180e904d9caba4701ceecac504109aee9d10e1762ad376925cb3c5419ce026c69eb083c5d3bd1b19047839f1b7ee891bd41f46907be349b5d9241c14bd09481e9aca5084c313078410792a5eb45db06370dc8c22d2f8ed68acf4254a441a2c5cf752771372a1a1ae2b42ea90d03788faf986740f688bc400d9aeb075070912ae344ff23b54407715417fe9586ab26cf9550472ba2dab44be1115d256d8580b5ad681dba15b5b82ac5d45a3fe0c7aef76a5ffbd0ed435c750ed2bec1fa013f11b15f033b876e20e26870900636119a4eaf66377226c4c0121482e0128e285bf5c699bed2ab324ecbad83dec0eec64a7525fdb0d4d8eaf2e6959b8dbd9a579fd36a9c7a53b253ebcb8dca5eadd79b97dd5b5f6268766a7eb9c9d9abf97ae3b37bf3abcc50890ce85c4afe2831c461dc6c33f5678d29fcecc3f8857ddcb14013a7abdd6ccfa2a25a631a6df0d36552ed2eaa7edc6ce1e475807f6e2a50e40f2e376d7b9548b1f0347aa0ec8f801f2630d5f5104ef4b5326355eb86166ce6c20da285c08bda65d1d6ada3358a69ab2bb0883e8da220f5d7850a4544a21fa92da376855a55cba952a9a8e7524a4c33ecf841a9939dc66009d3941a296af0be62dbbed996e87c2997feb74c8217b685f77d75be3ee2df0922808da99f8c24c0be12304549a208d8945092d5c247cc2d86e6605b4d096b0629636d0d1590598384160d54380392f7894d5252a70f5d8d78c841afd0263ce7a56aff5082a5900a910e654ee9445fb14d78eb9dc400596a1871c0cd8e0530a805ba6d09f5230cf09e991cba33c8a07b72e7e2450e819166a76991dd814501676b5b59039bfda64571776421cf1edd50ecb896ddc122b64091ef69b0811274b3cf382940af37f13a1064d2ca392974770cbd1c35866e23a150993465899f9c80f78feb6811bbebe52359bb239363f9dcd90814e71b2d699a529c6ae42716f969447ed2509a22041f9f9dfbb1cb2604c1c767a771e47bdcef85e940be8cfc3a8e7d1723cb9917645332ef27c930f4f00b081e1c81689dfa2bff33fc112efca91ff8e9a3a4b37812ac4937aff068f087d608b48ee597cbc8a7f608b4941f3af9491ef953177d6aa9bff546a0a9fcd0d73c9ff67c4ba7a5e8037eb62d8e5cf2358ce2951b8c4047fd99ec901c81aefa730257fe340abc11e8a901c8c7bef851f3e63cd2d625cc4ffd806514fb9fd16f0158b86b0b6c97fe6c09dc599a003701e9120272490098473198c6d0bdc52fa726c81cb8eb11e8a1508fa37b7202863ddb02cd66b765e127949bed4e072cdd7b08a6108660b68c121882299cb99b04220a8fc08d2140d95fe24f0308a68f601aa5f8f813aedf43c604eff41a817e6fa8a2b77ee09af4127462b8fa18b2c7c74714e22578d102df01c4f791840271abc6911f7a1c31281d1ec5ebdb2390c61b28136b773a6a62e4d4e38841680989af5717896032577e328341e08630da10770fdd04af47e33036daa4e29025af35d249d39628e5e76c1ebaa32c67d3b23df557fa02e408b48676672003256b88be0d7aaba4d086f3c05d10dee593eec5463fb39e7d3fdf8478a114ac60bc8038d2b972d7c98be7d34db072c952536281e7b34d92462bfa3bddee777202b610c430ddc42170531040374901ae08966eeccd220f7ae4c803de02f91cd3a0eb57c9080834700318cead1ba6c0052b778dc6148e623fd287c8d3c7356c44f3173247fff807f876e5aebfcdf62e0ba7d766d9065972868daf9bef5d3c3921dc02540b24cb681378600a810b9234f6c3051e5db4123e0fe782c04f52b0f5d3652e80288400067005c36cb7bac038424ef82558bf25efa6e70dcb78255088c4b7208a811602b3f42d79733e80e1225d8a30fffc07680ac747c8ba24999a0f374140859f490159b1b51bbb2b30734300fd7409632a083f5c04900841a81265d288e6a0c5f5ba42026afec5b318028f5c8d57fc999fef61904050869a084f8f391465854f2f925da51278768a91888b6bb99f003704e43bd377b08ea37b1fa9bf1f6269223e4469283b4aec27f5114a9edb96cc2d193ff8b4391d44841f3701787945ea38a95b985cf4dd82da3b971beb27208cd2bccd791123bf459457eb4d0a819ff2f8140c10e447e0bf342c14a432f7430f5bae4b5c203444120f1310b644205dfa091bcf74c462278eec0e1ed3c496518817a8112e79c536f63dec895704c7d67db44018017cdfca3a80c083f84560645851188034204136058f7da183259bb872d7ff838b5e885f2c400cc708f0cdb344511c1d89370c01f03db5ce22322a94dcf8afa32d8c7fdaaca6307ef13cc4ff5ae0397c6097b53cbf7771fe40b653e38b54e0c31afc13d899b9551fc8c66059ef3134e45fe4a809adfcea17369e71bdff5389be518affa4889f89030314c480a5f3e366e5876e386387db980888a0e3c574045e7c1b43efdb1188a1c780ac6f71aef7ed08e07ff36294787d3b02e81f56484eaa890e8a709c9daf4674b223d6e4bc1d72f9ec32a24243c9ae5736a068f1ff01f6b1dd1eb60625126ab68e87adfc583d967f01fa05057f098eed6ef70855433fbc92e10435c2659985e2862d16e1ca5d37a89e67a5b98e93ca47ac2aebb617a8d602a6421ddc1747e03b70dc6ab67a472806548291fec180fd66b7a507c43d86e1ec7e2b33b0b996a8cd0d551324fe171a3dfa27b08f91f8984ed356e139b4af6cdb168e3e0b5dc140bf9acfe7afb21b099e2774939bea308318318a805902353484a7d12a3eb3a580ff181ed31a84e1fc356b0991c1f198e2a54fd9f13be5f9b8126a1452bc7c4e38e056561903bee22e80783e8fa214c6aaeda3d9d4949874107865eff48a2224e08435050d0d75f1348b44939d68390ee03d0ca4c360f9252ebac371069751a0183fbb8942f99c3d15bfbf5a148e1df921de7594330200bbb7a481791a81345a971dfe2abb078d9491a6e303ba965012f3a7eb74f78c70b591f553d614af94936a22a1727792d43ac6f5aaf0895d6627dd41c3df9f426e953dd29e57cc0f85d5b99f4525597c4052df4a7366e8292e19954e2b35f7a9d04b88dc4d1ac9f71029cf8e29159c23436ef9c03a53b8bf4371395fb544a5a78f77bb3748901555eaa25aee2c10457f6aaedd4395fda9fc042ed7b3596dd5c176edc962a3115218064ac9946b51a1eb893452374e6b1fe2fcc6c8364867bd8d469ad42c0e7bbd76c1d03368553527c8974cd7edc63c8a57a8af376b807f67ab6729729a14837826983403c12ed3157d84d502c7189174cafa1b154e0b7c0352f890ba31ccaef6904f1dd3a4a708c89f5c6e75c9ae51541e43b2dd96791d86052342ac093743b25b47a5db42d9a55dddf5837cb8d4c69baef9cbb154b885c3c46cd0774bead143c89cdcf853c4c2dd6874d3f75fa8e33c98ba7e90909b2d64a18bf79de62dd0985c264d72ebab6ddf2f410320c91ebd424a867ec2992fd92f5a4b61b36fa42ffdd5e2780d63d4f2fc183e233f1c64a7d0dd07760a3d2f8ca69fe02c6dcc7d841629d32b16a9e42bc08853f47fdc53783556d425443f49379e1fc9c4b993f139f1bc50248e855d8b3c1931acd3c8bf72af65fd54d4336e2489d723e497cc51f5648106dd5a4bd27c66d93002f9907a8ea2990fa6bfa44a733f806407425e918dd821dbb94dad3e90e0845b05366102532118caa4cd10910f7f658c70fdc735e078eede47b19f4252e8cff236d1289b1e65e524297606d9b6c0f61e17bb4094bbca2a2aadd65fccaeb21aa5140409b4dbf7dbec4ec5ec3e7906a88995b81b80cb87606eb5c9111ec620695f7e830ec750c7e6b96463a59d95e6f74e649189606d72927836ed4b139efb414a3b808c33da2f71ca2e53cc6fb68861e0a6fe3dcc2acfdcd86bd044f238bb4f59e85924f4351bbee43642acdf92b1c7d71080641647413075e384cc7c2570e586a93f6b6c7c7ab9c0c977e01a2934f96d346a6ce1f4d6e74ec0e9f2c9af1ce7ac757e4e93b8fc40916d01fabfe3013e86f41745bc8a3e1f1eeb81119e7c07ce918724d2605180422ad6c7105b9c1a022347086d1b6f6ca07fd1936626ac71cc0892e4383192f0c1d85070f0d4c449f7cc20b8f657eb0082eb5cbd498fe13b3cb83e61df093fac180d203776f19ec2ec26cfccaaaec50085054065e81b69ecce6ee546179b426fb694e6398c082c372b3aa13bdbc4099213de15402312096397b6a18c97569730c368e53b264774cdc53e6e2578e51ac3957f37e07eb4f5432fda36fc90bf4cb1545cdd2343d4dc4d7c0584cdd6c002cd7617fd35c40a85b13efbd75fffff000000ffffb1c2c8a392560200", + "ec17219e696326ed4a4effba32e54bf9": "1f8b08000000000000ffd4bd5977f2bab228fa5f32ce5bbc0e5d8070de24d910873e8490e48e33321c30c6606c639bf6fef93b5425d9324dbecc39d7de77af9704cb2595542a95aa93fcffdeedec287603ffeeff54b4bb38d846533bbefb3fffcfdd3488ec8263fb766425f6ec5f4e64858b8df7bf93f870a7dd4d837518f8b69fc405238a8288065b7f6645c7f47564174689152f4676b473a7f6ff4ee23bed6e1dcc6c2f2e786e9cfc6bee7a891d15926368c7f85669b365799e1db9b6fc757c73edbd1d5d22bf00142057304d2337b123d7923f02ff66a752503ff06f773d850aed681e446b3b8aff0c1b27db991bfc0230b19c5f40cdad5dc07fff197261c5ff5a5bd1ea57bd74e37faddd38767de7cfb09195fc0ece8e036f9bfc8aeedbc4f52eb922b63d7b9a149a00dcdd7a893b82924bb6e08d16c86c86a037de77dc38f911606039ae6f891edfe0aab96ce04ebb5b04c12a86669f8260f50b66e5a07f067361819c01752dd7ef59bb6feb4ae7079663f782a4c9d7a4780b042dd87ca9fe81ae399262b5c4faf6ec4b34b25a64db7ddf8e0772158cb68e63c7f9267c6be73a5636f94a33a38515d9b3826e2796ebc5c6cc4d6e8d2b5b67851499a89615e47b6e1f920b84d79a615634fb1dc2eb73a640e6a4c139c9a6b66fc78585ed853fbd1ff17f03cf3ada91fa7b348db6dfdfd7d8f5e77a97f082e6af96d371fd2b9caab62729ac3c0c2cdff6f2840eac38b9c9596f96e7ce5266beb5686f22e53ca1a2fc4d9da6ebd9a63f0f6ed5c38e754120beba8967e7b9562ce5606a79cd20b21c5b5de16feecc0e9e829d5cf74abb13cbf3e08f99d8eb4bb4e9ebbf3a1cec68fc57aba55cfb572be626771a78c1e550d5bad7978f0a717dd9a81038c41fe1f0df1576b613be07653fc877b0bdc53282f79b813793d22ef7f08be659e0cf5d671b8140bb85e6bc92e9277634b7a6f66f2b7402e7d6845fc0be5af10a810b2da1b2d16d92a43bd72feb5e16fda2fe1590c44aae1683ee23fea7fc064f7f82bece617998ebbc9387b9d2ad57cb8951145eab2edfca8a312ab49380732b2e0ad79fd907f19a8421fcfabfda9d6fad51936652e1ec063377eedad19d76f7926a4386bf5ddf6977a3204a7437b2a74a594eb5bed3eebe5e6c6b9afc2f267b77a7dd855110f23e7c250b97ffef7f2fed297f31f5ac386696e7b1853d5ddd697702200ce2d8fdf66c16f871126da74910bdd8c936f2efb43bc74e065190045c29efcf792396e7f131275662df6977a03fc8ff5cbac2e01776e4a270886c2bb119477ca7ddad6cdee59de56d6d205b3212ad447c105f337b6e6d3dde532bad6a78f61a871527478fc3ee176e628f426bca1f92609444aeefa813344a2c18dd74e17ab3c8f681b41650402513ae585c1a9e6e255633b21c8e4b0fa67ce01b0f6868af43cf4aec948858ed12fe0cb2cce7cf73d79956f2a71a15510325ef9fa01f38742623ff085fbdd3ee848af947d81a6f1b17e49f40eb77daddabf567723cde6977bf2745430eee8f90a5a2a4daeffa5b2aa553b88d6c39f9c1742b98ec1cbcacf69b0147fe005d51a1c7e1ec67e8b329fc63ebd53cfc1fdbaf9db1881d275170fca1425d56f863d38f2987fcb1d78d14f44fad968bc84c7f6ab25cba5256c6ba7fc4c1a7a8e9fa99eaf903ec430ef607ca95ab57ca6a57caea57ca382d71865094fdd4234e4ce2797cefb90d55292254ca89713388d092fba152092b892df13735ca59677e03ce299fd7fa9b4184abfc762558235c75f801a62aa6291bef0fc0b573e01f60eb025655b77f007f54c17f026ca880b7e11e40b64d232bb4b9411dfcd8e843e902f837f478282bf21074d71f60f90ca23e12fcbc721ef8b475edc49a598965ae43aec7dc06ae2ac0c6e10fc035057834b57eea6e5d01951af00fe08f0a38f3ec1f9b4e671057cb6dc86a3107f903e015a1562d23f7a72e536e7e455c2d19bf74b826e4fab3607fa7dd79c114e6ee4ebb0b22d771f98fd8c30a53cf4584240c3c2f60f2711bb9a034f9538b3fa2d3ea4ebbfbb662bb1ff2d662d0d522d7faf66cf0ce592b9b0fa5294141abc2669fb815ccb10a431b01788d51ae04de7fcd738fb8b22e2b9d956355f457662da4ae955cfdc145690a97557567bcd5951b82023ab793e962b805c174a7dd6d24467396e2860aa1952c40c70db789da6ecf5a73726fb636e8e5ad612787d5c7d780651078ee149477de503cf02cd74ff5cbb515be71059977c2df7ade6b30f667f6dcf5ed19409328b28e0807cb310e3debd80d6636301ab841f121e726e7c8b6b12df56de5675a5c964c337b0d2492e9368a6c3f31d796233476962f496b57d407befc3dd75924dfc1c18cfb21e8e0b19d74cecbc24590047ca40e76161911c6cefff35ad1148c8e50f0b7a063b2d8aebf63580333988f85cddb4e4d0968f84bb4fa65c76be0756fbb06ae0e7ce6b96023d83b5c0dc1f7525a6d77da9deca76291b87cc0b26e10db592b83c8de654f3dfb00e07284a258d22bc0d2563adcd84eb20737ee04d60ccd99d84e4ce5f14b9503ff6b1bc34ac499545414e08b64ba003e8dac35ef30976720236453dbd836e673e4b679aeae549d7933761c6397d756841225c7505fe7ec1587aeefe32ff7c4eb8dd28291f9697c75c84bcbe09b8db47cf92c1e435b76d54ed235b4ce6c62f933934841fa4bbe4b2d40302cd32763b3b53c0ed70b92f4770b74cbe8756171fc1d3b8ec54f33ee6dc1b0ed0589f865fa536f3b8349370ee94fcff61d9400890df4f5ac6fdb13cf77dadd327085dddc112fc26dcce1adc801d9cfeb6c9525dd0b7c5b25ca57ee216f7ff335fae5010b5991c35b922bf50b6d6b2b0cbde379a37db978328d40c571a534ad21363815fcbc2885e58aa00a987bce5ae4a2f4faaba6885ca98d5c94a5d04f562c743215fe4a695ac38cbb18c1522b5c16a6f02f10c652811d3be9e638f2122a2b4fdd396a0b574ad31a7ce712a516f05f6247be95e9f14a7c8beb2ab9a760fe8a8b49d67ab59c3c847c81f3977f77113f53e0f3a5dbd8be6e5a70e6535fa4b0e71605028ad2142a674520082f4215250ebcd44b94f9bcd44d2c5f025b19f4d89e996299c676323a2b3aab55b92c7a00a16cfa6ee25a9e7b82f50a82395fe4e293398b950781c4cda48815c7aee30b51f162fb333b424524b1d703e1b493422d96a2dc8e07913d73a738d0b5ed6f4d1434d6347177bc6ce6c65c45e31d5958feccb3e5e69688bd089acfda48824eb0b72366c12e067b1e78f612cb513a95580efe35b9a623bb17f82ff63a00b4bebd3f27a80b106883c34ffe22659dc88eeda4efa7cf6110063b3b924d8741ec8a859086696137f11dcf06954865c2177b2ee742ecb4536595714545790c7cb6b07cc79ec9d525d68a6fef73db91153976a2c2cbc59e629e7a816febb61daa5023e862b614fdd7c0713ca12258fe1476017be69e4b93c44d00ea1bdcf2b897440e4ea9e5058e74d98a6d912fac56146c39ee45b2f6528473cf3e502b7663950aca8e29fac9db457de64d7860d7d6f1dbc6395723bd3057bc50714e5f4888af6b3283ab377dbf6d1ff560efcbbd11383382f9c26653f00bfc03640916f889d829c1750cab473749a7dffa6af6fbafc6cbf9f31761af66bf37ca7456de1b6f06dabb6327f03ff0c96c96dbf948cbf802eda43f90d5b31400e0232b9a2e98e579dfe8538eedc4b89c4849e181e5d823d47e769697f5e55532566845b16dfa2a8f0d85c110da51ecc6ea9b9cfb9fe33e7b56e1e851e1b6b351ceecef60eb4f5182f2c59bbd3567e9a4289644c63a9c7253442637a95604665007fb3ac168c0ec5ae559ce3691bdcd5b2c2eb61e293c20c57eb6112696f385e2888b325307a995d8512a01a554cacfc959d92bb420f4f1b352b0e6e4da0a3d6b6a2f20fc97b2c0ab1dada5ce37b0a301aac6d3c04fa2c09315236e36087a09e126a60da687cbeef43923532aecbe54b1873241b62c48c9d5cb6d9cb8f3a358219c87d38c14e02f34529220b1bc8178e86dd7dfd06697bc7f8d48d3f8327baf460b16516c27722cc8aae2298cec9d14ccd058ba67260b372ea753c6c1692abee06545f44344a22c0737035e14c9fdda41b4e9b3ba8004ac5847716245b253b63f13bfba68844f6dd7830eb2c08fb76bbe0b4a7d78651fe3dc6ae60ce7a58e0ec17ee8aa936364c11649aa2a3199a292fa2df37e75fe1859fb8115a19e1144c9f751fc98b991983d3e2ade633e8571e00fa4c90364e3bc682541d40ba235efc63af46c31a35f33976faff0da10b1b6143e2d8813d891d217bc87c7f57720ec1259e6a342300b7c5bf423b5966c7f1accec9cdc781ef57b526661840fa65d0406f3152cdc9f0c0b6c4fdeb2da520c58dcf911b500b4a8c15372861fe5e097601f4e41205f26f348cc29a8dbf08f8b08207e826d64e9647ce6c133364a2c7f664533e5e7137f686e3d0f7f04dba80d9a532c7c4ba0c8c45f22d90dc54f9cf3e5a0e308f8027f234f7dc9ccbbd411f6755e35f720d8f32908c4ce922e7e20cd401af02881505d4941a63286d58c82f53085972c25dc02297fcfd587a9e0731528e3e5f96551cec9e0a60daacfb2ad74b5cc734fe2756e65cdcf0b166e9c04c289b1b22f0715d9209a41b3453f696e857fe5b66efbe0c69c2f4ce1d3e1d8e4ef10fa6445e82e0cfbe0fc39df1b5319774dd67ee5c4ae92bb876315bfb896f6caa552eae14262a18f2a0ab6bcd7b3600d02e8ac1c8680f6ce54895a67497ec810287c07280f633be99d1549d7b0e2f9eb64dee2d04a16c2a3e6cb46e7eec19ebd06af419896ca6dc8f2d07ec1d2275b7a94f05977772eee99b831334577454aa69d435aa61989307e2bc651bfa6bf300380c366a6c16b7f20b320c6890b3e9d78014bdd95b364ca1f3ae9e12e776149a71ae885b5fb6a39372ce63363f9124a16a896e7a5e1a99a8b796b513069baf9bfa2b48e17c1d69be96ecc25d220552bfce00524296af888216d059432e0bc94482068a5e2cf8d11fef6557a2b8552cbd70357e83dd717f6515a23cdc3e05625896c2b1d69a6caa894f9ba45264caae3b44f7fddca1745ea490d991be537025ce78e7894c05761c5d2048d0f06a7d8bc810fb85273c9b7f71239b2b420702f4d5dcdc8cb59241fd1904f308a69e08377e022a715546a5c5e6edcb3f78a01c981d2b5c31fd2c583638bbaa85106be50aa251df5d47c4c4597b0bc72f5e6901089718cc0875fe9d0031f5cd6e9b3ab7a01ace9d40eb35601326b6864edb225cf1fd26e7baebf1a81433f17a4c18d690c912d88fee07a534a65ef79492641948d141c011913bbb1a088eb3b62cc294d00f4f6eb348851551f6a29d10767011fbebcafbe48ebd6d58747194b103d398fa334d407c86ee142fdac45c862c99eca289a2db493633b21e94306940bd040ee89545784f2913d6560391a4042c9b71b250be1df89ed842a8f19606ec4902c62270bdf9dba89087918ca6306981b3b648380a622e3242c7dc8807284802410fb68b3c00b045318d953069623056479c476f2240348d99bdce8219f636d5bf136b2a51b3fb6936ebe2403cfd100923ce6d6ca7e7565c566f69481e52800791c532bb2eda823830e9c0cf9920c3c470bc8ce48ac24090281f0357dc880729480648bd0b5a3a9eb3ba2d24079cc00738481948ad84e70a566c53902407244b27713e957495ed3870c28377c487f70fd38b19cc8121ba9a93c6680b9813f9445cf15e990bdcc87291fe4621c44f6ce05d92bd764569281e7860d9908e76a2d2f02ef67ae24b6cf92c284052c0ba5e8447de7565526b5a1330c5cea49edce3eda5f53c1ef9cddbe129186093cf395c6aee6679d06227c89d07678deafaf54a65bf1d19fbe06229b224083d0914f4ab8949b52bce6946bbd201c52bb6f1f41e4fa0bf6a643229c0d407a3f17514f69155e902029a6ce6ed87c4157e5dd4cf7fc3e9a3aa20365052148cbef681b6646684e53b8501d905e2e04f16e692a5f3fa83057ba75a1057c5dd30b22db9a49e7abfd221f02df0bac990d8aa2888acc48ac5b89855921f3c04f265298ad5ddf5d5b5e4e8b908a1fe8872fa03be3cb27d5a9cc21a476e3b96bd04478173979b6dfb1b4dbbf8f68ef86913d7563d4d1ddb867a59e83a6174082496ae9bb71932bbdc0c93e361b34b9cd210a803e3252618efa6945448b11ed2ccc3b8f82b57ead804fb323961a37f73f6c202a84f07c6074c74e7470167dbb49242c0df5f40fb6d0ccb597a51b2380edd93b694d19caef7ecf80649ae9ca89b88923377ad5e52d765c6a89383937178582dddfd9d1dc83b909b29fe854989ebba9844a9bebfbd7f94840797ac25346c268ca0c36aeefa71b60d669e183cb0a14432c2b7cb143db42478d6c6fb90fe19891c49b3fac9429a686a7047e4c1f42544104a5b1001e79bc4d285a07dbd84e230b71d2e5cfc64ea6875b51be64677b81d43194e01297bc419ca48122654cbebd575e81dd6520e7c31a0e3c8c65acdd5918b87ed29fcf633b4973ac262215e59b134578cfa9fc9d44961ff309c1901b0e54411d879c15d460e579816e7322ce9077a04b30da3118e6900b83dd78bfd3ee9e5ebb1ddddd29c9f3b6bd1aa546886327244922f77b8b7a1ca01ad8d1d4f61391a702437b4f7f75ec79829312789e1ce84ca40c0a796f47e62c5bac4ab6963451ed55d66d318d5cf4db7ea2a71b8778ddc518e3ccf62079651dece448e44fdeb72f48a71294c2b307911d87810f0e4bced4b10854e68829acdbc4158622e71c742f0b970864be25bccc3aa0ff0ac337b271113e8c132bd942836858c0a3b4da43cf45ebdd05ca1deeb43bce897c190b45eed55ddb016cb097c308d5c9b06633e069bece6d1415e8ac3a2f75b896e78cc4418959966ce8d889e085981e55bfcc5a5aaa1e4ef0cc4a2cce1a3271489c0ffe979b058a447cc6b11340d40c22ec79ca48396e96ed60c9bfdcc45e6363c2247e0d3819e2c45a87999d174a2faa223c385707c9ca3ec66934ed6b2ace95a4c2864b05de9e88ff583394ee30b1561cdb51f2ba388fe723678a9f696529ab52ae4d0b3239204594b28c1365303156454fad4cef900fe8ea5beebfb0ef8aea84053270f93c1964cfa114a32e282fd36d9c0469e6c01541fb755df82e908ee92f8ec90bbe316219acbf03187016c595a121cf3a72a9ff9269b0f992f8b224896cd4dda7916dfbf1224850164e215b748533335d58616247f117aeb93072d778b8c9da26815c9da1d232c3b85b7c561ce74996ca7a39392284165a5b900fe2a8abf04b8809e2ebe7dc1da19cb980c2f363aff96d7d245d4173d7b3f932e30a84f0c60a857686ca5e167b4d9f459fbeb2be813b542a62a33163c668749149af66465ccfb1c790f4f5175b5f4aa96bad7e5d3838f32770a530c35c06d8a8e468f843ca1a2f324c23b232cd592efdd1cc822af2cd287bca6c92597c66df61496239e9ab57f91b2da57498b1ad9c6ec93a22f27a95f08e6850fc8a7395e2ed746ac7d9dce51320b0066f4b74eba223aab98687bec58e7195f637a6f9f23c332c237bba8ab7c2032c03a869683d5fa0677bb78cffaf6d3f168edc7964aded489ecd8306788958d5df6ef2a2bea3e933d7ff82af6930b3a7e95b381acd44910541b33c00817344b9225c679747b1711673a765d24d2c7b163e7515ec6a6b5f973ee975bece16b235f08cae72f25b843891db9ef117d764c4cfaf68eb136e29a36b7db305c9eae5eac7b6f4d62bc0b19d1810944a5b40674694ed566053c9a416114ec8969a95457832547bccd1e06605179c96ebdb91e1cb94b1986ba8d96376905dc425614a41fd864cf5a334e200463c4812c9e3bfb29a4cb908d37a812fa5ef2ef0b66b5b8a63d80644e6b2c813033db0634b6732d77754a5951bc1220145d001506691b037e571773e2a2e27d332610ebdaa0452f26666a22f869fa88ab77c0c534f51e073b30d3799a9e74e574fe0a15080d0f92d363891d3b2b7bf43d540e8cb131c81ffcacb5c3cfd3b93d960c2da9b624f63e409b0a5a48a7c9271ce204fc4a9cc45e3fbea00fbe905e03b492f2010b4c806c2e570aec0b193b48b51b01752051228f08002176f51227e63c76d6e25ae2dd7175c808da98a682c83d37242bf94995577570917e743d4e7204a6e8634982e6e4d48235f41949d5130f325226d2f8be8a40960f9208f7a8653d96bce8ae3f3e39b17a0d93e737172f302362b0f7cde5dec7896e494f650ba103e94dfef2271f0cc564b53169047710587d64c447a1148980073e1da111be119c59b68ec0aa3818bdda66b7b982e617b33a9b65e11cb57e5fe5c540e7cea6d23910e29f3266c6f26039532c510ac0b89d1dfaeedc89d4a87a6e579c1be87656c6145d694ab9f7ddf435a425369e42b1bd120a5896c37b3886489d87bd2233c191d31d74e84bba781e759612cd33add9538a312f8a3ed37ba1c76674d7ca146926a136fcad1ac6401cc8a1e513c91257383b07949ed99edd9491690c3b31d2fd259084f18f887cccda6c81ada8ba3584871ce351374e2620d1a24092431a452e42b274fc0627a0d521b2577038970a5a5164c661b677654a2a87069c68a9aaac249803d552b8a5cea14445952828315fbe82b6f6b26e852111a0a047f5fad6fe8b1e093c4fa86a5816338b709beae18091702e8eb9a48ba42a3afeb74bbd402bfae2a86797dfdeb427df7edbd241104cb526b43dee3926d60d9f63ac815c0ced40ca254c957e43196a55ece3010e91d49b4f5454a7a9ace19f86db40995faaf9623d21e14be4ddf6654b90da390f9a796d45732269fde54a3d2e34ba5ccd94d359054727ee50c249a796aeab3b0a9e5715a19e2bc2c5543d9b762d84a396f9e4b05e59cae9a8372ed15e6a6dca870fee2e21c1a7f8d2b330f38cb3d416a6ca6a140cef5a84b3a1d91be90c28a947aa58163feacc1051625d73747cd35aabdb72fe841975dbc48079c3eccacc4fab6623be3763d5f92de819841b4ce8a2e08c53b8084ca752595e7e2328ad443a400ca774ade9fac3bc5569d1440e5b3af33a6bb7eef90886a5e183a5982732cad4b9818988c54d1bfb89ae84ebbcbdf3794fa03739eed38132a714ea264169d0cb1a70fa02373e3511afaeaf357e04bbc32b0777efa1b248df0fee6a02f2f39c2833f70749d787694a80ae26531841ee11c610eaf28b338e417fc4db570aaa678c1a446eb5c59e0332c3d6f14b10b9f24b49f27f7d705f573d5e168fb79211ebb5708219dc9dfa0b524e27f9c15edec2871a796d83ea048b830e5429590b717e0d78f6bf33ab37edde4e1cb39fcba3aad170cfb758d852f65f8d755b10e97535c5beefc4576d25ac419e0bf743bc9385ee679922522b7583e72c54ffe16eaad682af535a6deb2f354dcccf9a4bc56ef6391ae7c70b5e512112e6b9ca52060a1ead09aab78e33c9638df44768757fa20b6cf38cd1ace60be72e0e266aed4db1767861a1a2c999586cf17b3433cef3577f6301d1456d8c6767a9b4c1a58c9934705cc121332a8afc017097c89e5c8e8cb99975988367477e5cc3039df6923a2933408c4025e0471227277e1d0a2deef66b73ca4b9156e1aeb38bf3cecebfc2ab12cb5f82b97659c058f287a69c5cd9d22c74ab9fb4c6423609abfe3c649b6c5f958604777ff1772ae439032ffe7aed625dbfe07d10c32214c33c890306dd5628701e34fe45b1b114298d622cc809f3a2ffd30b416211f9a09ef0c4288d6879ffdacc00060460831b43621a4a7998425b4052f10b295413e29904d7869662f9fe1e533c7494600f2c4ff769fb53661fa50eb1232e42006e33ffbf08e696342265a973497f45533885ea24a1f4759e3afa271438c93778b838c3390370504fed830722da050a7cb7f8f48b74c3b401ca096cf7abc1fed09a7da4863847df6b4216184690e25af3d68b285ed8cb26626646a72f4e61bd4367969d7d0c6a4f5de155dc4bf53846646f3b278cd082357ca27848c0489905a133e89166115baa00a3ea0d1a8932be17f3f38c28475ae7684cdce7a4cc61f9a4b497f473d6cfc195e6da966913a4de889224119216b56a49c145da66defa7faa65fa70daa95bbc093c72760ca23235b877500ac46f944dd53c69f9e78e786550a93b7a74d286b696dd26fd067cd24ad511ba19fe14d5b812ed31e94f5b52ed9eb072cacd117281c695db2a1252c3cd23728e41c354d24ae4f28b3b42e994458b6a13328b3b52e197912cb0246f7e452ad4b8e54e0d972baf0e23527cf23abd377ce38c4b8f2978fc2e4951e68889536bcad8f93c49060e99637d55fb2037fb480bdba472056911e10e4c8416a6cc15e339031429410a2cc21eed982bd67101f88bc8a10350eb1a11e8b143c31459806c2dc73982df5d84e81d953a4f00267cee553e788a72e0c25a61ebe5b33de0b5aa54ba5fe8a22e54284d970987e9db3520a52142009826c05484501790090801e10e408202501f22866b0887d3bd0ac6f01ad608d0751a3a1347a4f9127ea08f2c841c60dece9184136628405047174de4a157b3aae090e73756cbbc0db1e3f4a26594171859600b82c7874ad6b26e91f68a460890573863ad28857747170621c2b9ae0bbada87e52aa1701c46507043902c88e45fcff87c0a07390475a42903280846ca7b4b2177c5945901aef842358a32b3034f0dd3d7fb712538aef1cba3090187c4758535fa977a41ebe5bf37f5681fa7a8636d0c5d81164c3fff51b345240b0f3659a20c896ff73e892151418c7c0b57c409823ffb7a215ea1b0a2a0359a28430656ca7444f3aacd9b773c823ad22648d8fa92696128e69cd1af8ee9ebfb31385147bba4089e636712c05a50f4e532c19045937b536b14e396285f86a03afaab95709beda5ebcdad203be3ac2ab92f2aa4c4bf8aa0cafd409ddd32abeaac12b95e162dac057f7fcdfb84afda6429e26127bd1c271f27ffd0a8d0064c550c6ae5a5adbd8150db59bdfda84ac7ba896105ebca5d5a79f5490e293d6227eef849a8080bdd8e71f9e328d66f9843bb4a5eed01f26f4c1e5702f53fedb64e26f9f903e831d9f6943320c69a3c537d9c97d0bf63ede6b2ec6fb750eda213d8ec9eac3769bb563716d2162f0bb051a0934dce66a0ce96853d27a367881fdc4fb65f3beb30325a2ad11f1b9d0e2233988deaf737a4a4c5d56e6946075aaf59b6e516f32cd309645fd9157637cc703dd8911f60abad810daeeb7b435e5e033de33d68970735af17f9d161411cd340e25bd09d8eb02bb93c3fe481f296247b632db9ad18c3da3f7ac19467565f091bda0f2370545a3dfd556b41978c68eab571ca40cdddcddeea64b099b9b9c38d3a66636cb2be35b87fe954035237c4f304ebef19ceb679ceba7ab07824ab83b9943cd686e5da337d00ca3be10fdec738c017d01c4236d4f9b1bd7a8f3670ee332deb9fa1f3ada073d72c31597e6c3c2085169e954196eca7c77321a9ed1a0b9debab9de06c6bda06a85cf69716bc09c96b6c60310ebf0e39c16b78698d39002815c9a9fd3c2d1c8cf695ef37d30568256280fcc896634dd7bbdf7a619c6aea123ad60a1ade83be0fdd062dabc6fe815fecc61eea19f953fd06a0ce35e01ade286bea403a0d54288fd1aa795bfe452e236adee9bf7f408cad494936aaf57d837a7d55edf18bc1a4bbb40d887d66f3eecf58af106b4f091e59d33963f95cf58de56f139ad9a82cf591a27c0b7581aee557caba5b113f80ec8afa03728f816e1d974e417b8db721920e40bdc6cd61a7a9323acc244341f1a7a93e023acf733fc5d42da5c75e1f6d2909081aeb5f83cbd60871ad8a132d07975b680f20b7dd37ac461c3426f1613037a714af8d2691e13037a714a7039dfeac52eebc54362885e78c8a5b6d636c2e25927b65415d5c5d69169fde676a1ef1897ebc66ea16f81ea86cd67c941dcdab4f9b0d0fde6277053d2c49d6ecdffbf820288745f0667f39c47564664c5a544565ade4076bf4c918502997b8e2cda9c21dbe7903db48a1cd971a51f10d969a51faf227b5ce99140e6355145bfe70cfc7a52904567c81ef342bbf5c01e80852dce412b63a72f280ae3c7a6b025e5ec19b6d66d3a9e91b4be7180a8723297ff7f2964384bd10f5c3c21f7ad0d1fa053d4abf4fe09b90f55abb29e5f0ef5da59e773bbb5c32d917ed329e9896ca78aed1ccfda69d4cfda89731d729ff6bc43eb07bd800db53a898e327acdfff776d9d8bcc259530fb9a656dc3ce837ddb21e31d154099a72d896ff7fa9674d151ecf9a3ae69a5a3f95a1a98aeec9a60e3a1a591be85549e9d5fd0fbd1a91e0a9c86ab06213de64ed416f2ef92cd71ff42d3b5fa32ee56ace58d7cca65bd577fa0c275b8cc23d1f85e79c4df6441dc4965b94fde6aaa687728e3c9ca3fb33d1b75bfcc834c727609ad83352a6f15064dd9f6d69f5f8aca1fc26517cbaa7f7c0f12e70cfda68309f1363b136f6c639cbafa8366aaed6c6a2b9c0212f1069ed0c69293943bac9efa34f6be63cf39a058e34aeb166c8712635e63005e79a6aad66b9c61206b671ab536aa246bf0521926464f75dfd2784f77984f70d81b0d0b88230b8cf101e04c2cd39c282a7ff44d6b5794f1121e829354f4784754f0745258770b5d63d8970218c841a482e4f91c9db3384ab1cc2ade988115601e15a225cebb54b84beee4b840d030d973220f41551b9fb1161318ff0d117081bfe1584eb20435815088fe7084ffb9fb48b47b326287a027c81c417e8c5337c5c8feaa87bc347731dea07fd137563d46db6fcdf8bb24e0e3f61779f73d8ef37027b61f31bec419462df21f6e00cfbb2f883481e91cd732088bd00d15c12fceb9798cbce17e91a24d628d787156dee4bcc37707bac3685ca0d5cad88f3d33dfba91bc7e780b9693708e92f5966d8f5cb94c3a17e7bd009f85f413c0c129a29bb5b8afde24669fd591870def3a5ba3d21eb36b888fbced30516603196e4b018da07dfb7d794446d1fdb4d9e2f558a1139b663414d0f87b1b81c069a34a51bc3104466dfed1467fd1ce726bf13766e8e05add1dd8db1849db376f39bf5f176bbd766226bb7f273bb4ef76fb6eb75cfdacd8b8db8eb3022a50621660c5006b8d7a73b9894775186bef5038423643f8e8c0b5a2362c09f86c995e66109aa75c080ea96a1b259612abc07c8de4ebcad568b687df234d0baa4de7d76841384ab7cd0af565f5b51d67b065ba4cb970e6326439f10783c58b58dbe45185eadad19842d19830d1aec49dda1e897a9b7c1b7f2d8ce3c2f8d36d0a6dc96589967989a41f495886ff0a2506ff1a240cffa068e02a34e3bb044c03bdc9c60a0c4ebdcc2e276647dc3330ccd20cd95a167453a16e929e2353d8177ae0bf1aad10eaa77f71d20324646d0c16f021d60b044e7e513a1359984b40143bb4e315ad522c4bc07db660478da2d6d48d8b209141a35fe1e0aa088aff371b75629be36212fb00dd740089b2b1102320869c13a1f6a6dc22a2dad4f98b1b81edcb98c32b17b44c74bc0c7367a83b6a0dd2130e00846c9b421f169097824460ec008d902142a2ef3707700f7190be9820a3eea92155dd0a47d817ad301d449472267c616667bc8f555c25e569cb21eed41d777020be0a466caa42e9d0554fb2073043b0830a09bad99c4aed0227fff8def4fe7efad0a0553630a0eb85919d6d270873dd8537805abbc5b05775d1f1cbfa48dfde9f7c02330c6899b70996ae2bc8c588336a1bbdcf0e7d35de85eacac48acac329f79bdf7171656559ff055f4a0bfa645beeef206f4b5be64674b6bc97069f1b96ceee95f585a55fd910fb4f9a0d7695ab81485aedea019a67bfedbf45804fbaf1537f9566887e01ded6e7a594cb20f4e7a72301cbe469fcb3a175c66453721e4dbe0bd7bdee845fedf8cf45217087a0fc58f10b6341bacad0dc930e293d5230cc636e6e47f198060e494662f60c58c885898532ec0963d10416c0b2498f4d3776c0e2b900b5e034478aea2cda9ccaaf4d045eee95f2c2f756515bbe0cce6a3697938fc754f1b710957bd12feed839744c673d9431b7f73367c446ee423f358fda22e7be8a2046104c20d43e8759b3c17e9e172bdd5bae944e3526722c46e8274ba379b07ea1b075d5b37616b28765be3f11e889850545ec03f4f96fd9fdcf3f7b02448a107f1911575fada98d4a9879cb2e86b6df24857d4ed73ce6fc8f2651fe2842bbaea6b535290c51e2f76d88aaefb5ce5583051eef37297ad68d0d72cb294c5212f5eb115e5cce0f1523e119fd723046e3f2b497a57ecd90d83108159e67368c1783f9f614212c84e68aff8d0d83bfcaef4d131ea0c0002f8c105b1cdf997253a403504943b0065eb4940711b9c43d5f350ab01281ecf028a4ba13517a8ec60e4e0d60368a123e05033eef2dd37071660d77a024c6456b04a1ee966007c3410509cfb39d422df568c285f0414a42074096be4dbda22d4eb25d4502e30d804cd2a084a334ae93a21c4aa64fd1e1232ae5c7d09dd6561134635e5bf5fa129cf00c93a0cdb506b0c4dbc89df5c146d44c0866fa0a8a28ad80ddff9168314927d2ab5b6d0cfd6b6cf11794c3f074e353490f860e612d8c9c7284d742e060e0cbce753e0c86e0b2a6b13629ce83797dff738d373c164d08741d607a3a38e8213a355413e5f43286c5c06de1b6fd0500ab1734e9f837bb0e449157cf265e6822a54c1c22524ccd4f415efd0d2581a682a898531cc2d0c03c6478a883004c1dd76f9ca257368ac0e181c265eadfad097654f9b92c8f0505cbc60cb5d5581de1bd61e66b2460f3df461bd292d4c6093fe6ce86773db276cae52a5dc976bb2458c05555e0db97cac1ba8b310fdcaaa37b869a097f507beb809813583e31f02b40ec520e348fa73c15515e324143890d9428833ccf468cb35ce5503c2125108da05145a3294d696cb84f0b9c51c901ce4348304b344563fd11fb05f85bc8a5d880528fcac8b104cff9a05eb5220d5a6f59748756285412a2a87c4a8a260590c72f233db0feba039f471c6d2f7829463c20a58bf34c849d6ac7e235f5fbc1fa5b48c9ab9fa42e666f50bf9fae2bde8a043093be51b10c2386b60d1cf3520def753c2fbf9fac1390196f9fae27d37e590330208f99dd5f7f2f5c57ba1657c707325573f3eefbf9faf2fde9b69fdb3fe6fcfeb87f9fae27d0b015c4a4ef4d4f4a41ec95e2dcc74ca5216456a9d58ab26281aa0270f34e34fe98afb0136304cf3143b0aab5a58c94c99ba293207d3b6645aa391a6f9a1a207829dbc405b434401890643edc7bc488ea388ddae0eaee7471607802602b14d1e065047e8e3fc7d094b02706090fd13df1d4655503462ae2dea05eaf3add11805208f2157abb9e4b36090d668837234a7ad3c25acc49fcd510c1c8d16f8738526bcb43dda7236eda0a1b1e345dd91a54d480f4bbeb5b3ccd18baccca29ca896cc3c15e98220874609755936e3381ddef0a7597590e40b3079472e50c4a1104f4cf73d6d48f42a83ddcf18c9bd7bc89e7dce8029b6978cbf86197f0d7ecd5fee30e3afde7f047fad719c8dbfc75fd635feb2fe397f0d098165dff158ca615dc0d822bd02fd338fad9132389fc3743847067988a32a5d5ff058f8238fad90ecde8f3c36bdc26353f6eed3a3c2636f198f8d331e7bfd358fad151e7bf98fe0b10df218accfbfce63e36b3c36fe1fc0639ba1b01e5b9939c9088919243d8e4e7473c163c98f3c1620d9c31f796c7285c7266c417d5a5698ec536b912126d17d703c1f11c32401e886df3f1fdc8d1ec1ccb1841dfec0043f24f86f9585c32b0cc94b1b7c007d179142677a4b168007a02b4a616e3b4b766d72db26ccedf392a9936bda30b74f4b2626978fb8f50273db5cb26c72cd0a4e6e7b0d66411f8d08a4491b390c1d82ec85ff7ee553c79a67efb529e9d8d0c99712fb894bb648ba4fa0c287b2db413ee88a26747bc126871fd924468a267f7dbb232d9fd606e7d84e3f6213f3b7fb119b75059bc52ad4a78f0aba7926f9ec4cf2cd7eafbd2992effb3f42f21551f2457f4ff24dae49be35fdb788be00261038afedf7b8e9078701ba44fb209d480f692611c16bdd3bfd422216916238cf763acc2d034b7854a2c50b56affcc87c479c8ed38fccf77185f93ef8ae8b7a21625bd28cf95c9a71df82fe9afd8a0afbcdff23d8ef01d96ff7f7d8efaa7237fd9fcb7d0f483031d32e55b4be8ad0fa1e2ef8affe23ff95713e2a7f4feb5b29fce72bfcb756f8cffb3dff3d28fcb7a4ff110cf838943bccdf61c08fff3aeb2210a922996b049c2ce02a0277c594742a86aa17fe9e0f1f916e62c6d7191fee191c231a55e8e3051f167ee4c31a4e4bfd6f6cc2ef3e0d143e8c143edc287c18fe9e0f1f153ef4ff33f8d079919bcddfe1c3d1353e1cfd0d3e84030e70e275ece8e0d55fd1c38b96793f5983bd5c7fed0eb4097ffd7afdf56aa059fcf5dbf5d7eb8136e6afdfafbf0e04eecfebaf37bcf69ba717f8783ece569021e644fdd3229f2534aaac74f118e4fb378bc7419356b0e9265b3c1b0607ec1c7aa090879af70fbdfce81f4237c0e2e5a7d533beb27ac6cca33edd2acbe7a02c9fbdb27c76bf5f3eee4bb67c92ff8ce5b3c6e5d3f837ea11ff5e310ec23bfb23a47aa7a0ff3d09be46261493bd5735094f17fea30b1e0c7fe4c115cebaf7230f5ed724d8095f1f41facfb43ed18f7a9dfe8518cb8b362446418d46f5f9966712624286e6418d49a5afc0584ee340101c4adfb5b27341224095be7a15096f576a196a2d08abe45fd5e9b52e820509a1dc845dab4af0bd4550cdbbc0faac62851d5ec1baa22ca127eaa667cfdb90c934e28d891395cdac2c6206ba519ed2326bc9e038df4687186f9dcf335b426a9919f065c54891f304c3548106b05637e8432859e9ae49d82b70e6e88409336e1b32f9130ad17df682895ee33ab20cc68f8f067a234e46ee11068ca96e31c5b829d5bac4682a343009eb2d0d15e1ba0da710125aba8db06c60b4dd509f8085206b87c4b47981ae8fbcc99ea21cba4d1bb230135abd8dae66409cbe6ea84f9048a8f710dd938a6e48e0049f4e20bc3facbe40f457db32c206355cd3906383cb53dbe8e440f786262fbca8d1132b0cf9906a9c5beaf443ec46c9e8566ad446c88e16a9d12aa41dd6e943967758a3751d0b6b59e6214ae1477a62fe0b676508c934a84b03c456ba89ed98627b14d81a2ab64781ada16273990ff4ee56a172f79e1bcc640b2be544314d2201de756951a4c131c2122539d2ae427917b20921604d58ad95e5322403d9f2046e11e1c2aa82998a8526e6a71c813bacbaae8953b1ec40b700e252c8ce5a02e3a069be6290c9c58c6cca18fcd4ab28639d57147b8c30a3010993e8c41b6c7448508187f958b388c78e986d57c7213ceac83dbc7e1b683b8664f231a6ceeea8f007004e576cf6693e226e34cf4a35c8afac529625dc88172617170d5a8513c0ed635f52a345d8db03da1d70d4988cbb103445c9d3c525d23ef10e0e365c0158314fbf7fd2a624a1b148c9c524e1181a5bc050cc350c6f3a94b437090bf1f0306f8bb7ec9890750ca8870d68a25b7bceb6d60d6de822b17904b9a7727a312fc7f44d3e93251a9898038479f823f21d514c020d218461ef3b78510ab04f0d86b8a625a0ea74d1ce18a80c452d07124e9f454e0cafd380133e0d3d68217b80939e2da98ff9319b318c910be5c9774bb348489fb103709a848554d06281b94720207c1a0866d3b1b1d3486d0c76ab15fd7e8464291bb887a158c63cdc91c8278ce869acb559c36815e1760d07857e698c3998d0ff32f433a0c05198a0a5175901b2b12b3a4b132f9f56faef133c5b8b26e4533e39cd2cf1b275301e79b34f7ba3f19c49171313253b9014f38809c68f7c393faff95e62fc32d7d35c34cbbcd567a7594a5b3723030b3746252db4764d20e383d802aae93155c2ba35d0266d3809a79b7e139721e6db875cdb3012e602c92cbeb7b6e6d01474734f0ba638c604cc842dd5db900def80d23c86dd8d6fc1bc814a0b14498f9d21e9f29dfb128989dd5d3e67bac72f90f8983814772e91782a120b91b461eb2bc1409a98efd9ddbe691362bc80b13659c2abf73520b60e5c9cedd8bca16759ac4f27cc1addbff12965ef68c58128013a5985b17c1f50c23c548a0f6f4aa5f513dc43d2c54cf453fa0a0e5ec3e54564ce35a803a46b1b87b1b0198c3f64b432a3729986ba1fe7e42619ee9e512587bce9f533e84e0dcc65ad025187f748465eafc45558462a175d60c5f37617a85341c9f049c151833cb38f96d81a403f395d8e097681f218e69857f46944212d1c685557a9c43e6f10863d9cf56a7212d7428c099b4717a9c1ac363edb55aa4a724c6d8cda99cd65d60187748036ba4724d1be07dd49c49e03fe43f6b6c6ccf40875a8524b1b928f1d75386bf94d87f141edc42d20bc9a4f9314b24d627d0683c3dcecdb836b93486f227d5a105f33098918ee98e35d0bb8c8a1dc14600ddcc0fdcbcce81b070f2ea8b2c3c1c72da575e6d3f2130c7b0ea37672a33eb4b40f72cf2af49ecbfc13ebf045065d357729c49544d2fbe6b5979817b568694c5818e641a490c62035c78b316ab64c5a3b660cf483c3ad2338b0f16216f90e45365c416f11b6a3988a0f795e867cb71366912fde8d957711e8c60d1a897743d202d67e0515a77b396357d7a9455abd2beb3478d35a92dc1e66db43b33db7853b1edfdb96cd541398149b72e42001912f2b4696e15a7ed6e411962166ebc1f66ec2f1066288a7c726a6f083f03276a02ad58d623bdb7c0f3aa892f754c1974ba5bdefa4bd5aa19e335cf6b43e692f0c60bc9df9670ec3531a70648175fc96ca6e091cdcf16911b9ed1bb86daa32db82536758a10f5cae16a9c11783f15479fb49c64c6c4ee321e3ab3ba1f5dfc01ada16167be302f886942db5bc4c84b52bf49c6587847cd45e05ff0bff374b7597e5044899071816207db2bb9e7019c916ec005ea7b73a886b1714d737227e73f1fb068a5c4c9db1ca2ee209480b06a1d110b74a9908f6ae6e4a6b7ac86d52a0075abc3e572959c9a8a0d1b17ac763254099c94a9c412a51ad4dd6ad98efea2330e740e86d52a1d78525fea40d5962968ca2b83a0c9d4990a39ffde9136381eaf00ab5bdf01ded6be0c60defb51e37e12848abc4181cbf7430d7fb695c357eafe2f94d78785a374f59e1d280b3294faeb1ebcac24909f5ad7d17755abf933971ba01ea25215eb3b3e980b65e99a07a3243f5e35d90b42554696e26686dd2dae12d47b006a63b6835c2d5d5dd734d88f580e8f6b2035d136ea90eaa5127d092ba7c760b346cab7bd66600476a1a38c3b57730fc63c891aed2fa79699f980b96698176a583367e88cad33dce7805c789039c8215d8af6035342c054fc41499a2ca04835de1989687151d50590770e62da015be8d442ca19e7aa2e8411cbff880953542e3b28387a5450fcbef78c0f35c431c8aa3c41bbcf0d00ca0431bce7c2b2a9c7c7063cf40fc34405ab4089b0b3da745c40594153855f3f1d093274a30f7b681773256f16d4d7ddb4fdfd6f1eda3fad6a529111630c011de19b1a0bfc1dcff079887809853e8f0a1f28c330402afe9a29f89fd879e14fbecc4a2f73fc94466d451c8efdf41c8d7e1c8def0f0aa227287e834ebe0093caf9bea914b7d0a8bcfd53fb8bdb4d0772cc23e963f802302302775dcfe6b945369a5ef28787cbb2fd9f4cd4a58e41b92b47dd246bb7934c409e73da9e708b041633e5286bf69a7c32fd0c6ebe516f77e367c0f6e736da355325e7371cee621458577c2f546d842879ea10078d401e3d7e204f92e18a80bac28f1f405f4f9917ea0360399519d3d53d60b0be9d644b60e75a5d1025d8ae5f729a24b709bdf237bc6fb9940d531f90454cc7402ea6c8ee2bb8c179800854900227a4703f4e5d04fcd10f73eb64899e931b417d084d3dcf0187a7992a636255b7d496122cdc36f8fec5d3370f2760337b9beeb9776c1fae36c324a3ada38066183b2ae7d10f2c1d7eca7af8362e14fd4d97f84537e151ac19e333ea29adf1053e750627c5ec179a1e33c67280f7f303390c6af28d5c71b4478c2931333b56bf743aebe86b4a2ffdc996d9e00645a151550fdb9ac70b17a1d38155f64b8a7943e2ff61452a4e881b6082be81538593d2a72696c40be1b29c8ede5bcd60721536d4a8c83de985c74e478d6f391d7944142b6a0a7cb8577a18bb1d49ceda34e283bb07e01cd92553f2e1a297fe46cad92f154cf8f18d211a7d1e0aa3c0cafc9c3cd28dfaf718873fd005b93c3d720974b4558fec3c3bb14962352333cfd4a83b58fcc6448c0193b3c995927d9ecd8c7f38660482c281e451b1f2102f27660e2a6372e385a21bd624d3f9e91def28d9469421a33ad4b5a1dffa26317c7661f3f508af485c24d1cec49d445ab6d4a585d773a9a4b59d43662e58c496865f76207108dfdf02d8c04697fe56aec7bb803c5679ea5fd187ffd2177d605bca4fa79fb7a6cf6fef089a36e1136c0cb9fe58d952b4a9ea70947afef7ecc5175b18ba1a5fd7053b600823fc9a776e5da8fb1b8df3ab040c50f2de582e8a3855b4a9bbc9de012173eaa2b9717590ff4e113f79144ad5f86fa366e290c96ef4e7dbfffe493ecd215aaf81e857371cdf0f3a71ed9642e2e60949dc95ddabda6e274fe23ac4372b0640096b4e138771bb6aaf1b396dd91fd00a78b470b2b5fc6ff2d3b18bee21cc5b5edfa15f7c825ff478614e1f2026e74f2b1df08d002ea5d5ce47440846dc06953a1d16b9e121f5cd34ffa8a0b4d842c9ed15aeb12a3410f9fbfc738f98718612db4ab56060e67138d448f90b4470be8d0abff854ef565a7c6e7bd010d305227adf6c9c7b0d0bdbfdcc59d7efaffb94fa125c1579454d812c5d2e1f3eaa94d1d4304c4c1f55d0226c77bf5fbe4928b2bcaf613436ac9f4041b1db75158892617778ddcd4cac172649d0d0ab6000cfbde0e0e110f63881cb51b568e1a5c15e39ba73afe328ebf07e3ef6b63b2d34394309e85031eab02e6415f5194ab45c199f0afcc3bfe5346455bcda8600738b26e41d55734b9b9c8363084855ef93a4edda38516ea9934e3821a77ceca991c9b12a3c4d517436429609cb28f712cfc0d08269fa0378e73251f7c892cb145fc4ac10af6b337c857b1aa2aaef537c864fe1019f53ccdf2d77eee8d3dad093dbb89dafd048226ba6612030ec93398f227033353ad15b237a8ea6dc86bb0b82e72a4705a22a2e61cb3364c622c28a487c1e108f6098c338624de560fee75b13164f7710ec3b7571d9a9e4222b1b89f4d34866e69b06120bd43b46a12e34d407c625583732df0fe386dac1f41b25ea7a375c9d38707c92664fb9db231d97d736a99f790c7d3df60e457c323fd2d42266de0c6e5cba56b144c4e60ee0fb887da5c34dd16e7e4b0d513417b4688c32a1f22603361013d519845b81c7b2aefc686c82a43e2687da21759e9fb278544f47ff7adb5c977c4f6bc3172a44bc84c9aacb8366791137ffb19b2f52767818f409cd1e1dbe87bc83642ca196412a3687a0b59007cc86769bca1b0e1be86ac083e108773d0c82cbd6b6df212b23de7cfa168f3c02107212b7e0a95bc45fae3122fec852ce6a6112973e33ff536749f3cbe6f7642b641e74bc007df26112f7d0e590d3d85709cc67caa735de42964c50f4e2e286c3d953868336445183bd8382d0f5356d0bb911163481828590b0a2421edfd276f28a0874ff9d8c78336acce44190ec551738b654ad510b3a42668f4110bedaf3161cb56092b8b416dc4d5ce05c5cfc23e55bf0afbccfc285d62ccc20fa85f938e5348dfc088441d86867e734c0b7aceb2ad9ed3ecaa1f4b9f550093181c29c333ded03c99042f7c3717d4aafc4d6a018d805a401e871216e97f8d349c18feef88313a1b8907e92c93cd8b364a4752fd2723e1fd6fd03ff59ff7d8fbb1c7f96e62ead4247ee17a80e866fd6fb3274b7eeee0af487ab5835b6eaaca0e367eece0e8e7f503cb04560df0c68612b6307eecf55f5b15ddec27cb7e7694610d0933f0f462d63f708c5ff402b225a31ff1b68909df8b2111c5e3b0edf883b779a4c9877ce412563c89b6e1c0082b18a26dec86b82e0d33a212f3c61675446f24af631382d64e4de4b6d8e4d42cc08ec4ed9fab46dff13b2b6908d5e03e7fbd6d33669b6f71bf2484cd411f1bd5f83f97ceb52159d0981ebafca52703998f70edc9eb62aaf242d295ef865c931a12e253bc3aa87f0f49437b86719c425a38262c624b6c456c39e2ae2bfe764a8cb712205e48c4905ccc5ebda94aed85b81ba72d41da18bf374ab402d5bf456d0893b1d7042dbef527389f965df96e488c37f8d2455ac11d40051fd189ed1334dcfea22721467c13aae610ade47d4b8cb4c42715f88be67324c60aeb81eb60e6accc8d62ddf007b22657ea7670cd54a7a234670cf0fe8f14ae4506788b8691710d537f42fa38869835938cf1f278b25282ce47fc3ad6897685e631859b0fb28c75dceb5bca85412f2906f8440f6950f0473c622e22297cf38e2f593c950a4e5b7a76bae26b0411e8cd1f3b54696be29eabc500eea5d28b18c29541ea29be4db869c67c26a29007cc147aece3db06dec2c3bcbe42dd5184d3bce1426e0e17a410bcf25f9ce65506883e443ebb442cc16eead081a02b7913bf4744dc302456565750bad15aa0065ef8d6ae5c51ba36f1fb2465180f7ceb88792c9aa9fd7d30d058872441138514548aa1237bcc0b461302e8d526a42fc8058920cc63ce40a1571ab40562329f496a3630637fdfca882992b3bb1b68c0a1a84fc14d4063c8898e581bdf2cd28bbbdaa4b5a399c50491e86ffc90cb50150decfb88db81bad2d96c8fde4b752db377bc38a8a52e51f6e280dfa8a52e43f682d9052dc8f2342021ae0f17487d344546a821b3180ce904899ec56555de4cbbb8087b42cacfa6f440b2ce8379a5237bbc024e987cd891f72dfaf8ab3899a04eb3f91107579f2964788fc103b40262ec6863a6c8bd225d8285b4a2311caeee26363e6e6d2e82db25bceb78273abeca757cd346eeba87f9055d7c85b1ca2523a73f33599a8585b175b6480f14e0ddb55d173c05fddd33c494ee8134fd116a008c10e33003c26d21d0d0dee1d3be0774b987196d17e00c53a8e3ae2c12e719c8d21132e28a414e0e53efddc211f5c798db0324b11f6c7cdf25f8012c01fa7e0959b33579175f4981fcbc847cb4d3ebecaa029233ecf725e4bdad890b9dd84940f2899e5d423a73aec92c7425979e8f788ebb14c4306cc82bc59177c12d9151e783b027317cbc6c6fba8015e80ae04405ee67c068ba0f976d943457b26fb6cfe7d9c1a736880fe36c7262744e60769a43bdb6d259fc70520bbf2692ab39ce6a0610f0b27ca8784fcf2a768959d1e3b166925df71dd87b31bb263ccb5d95bd1f397b0f43cedd837fc2dc13c29e8eb8996e2848824758c825868a84c32049c82ce9f753cd247e2fdfc5fc973fb63db58b0edf86a709efe2f73fe9623febe2bf69563fb2b98991a9a2bfdee2e1069f6cb1c524cf266a8b988f082dda38e0c69b3624e6a91973e0a8ffeec9cb6ed99b551687b494cb4ac3f98fa7b4c41515fd0cf242250ef0ec3fbc3cd9573c8c6c4f8bbdd4c1382de91b3c0654e0fbcdbca82f5ff8a327eefac56f649a78c2d7a13e6841c3a0a759440f691d0feffdea0e60f07b1a44dfea717ae12f2bb0fd186e916422d8a6b5f8fead036715d5c416643fc85a9842fe14f9c0f333a8820f0f706f5b7765628ecd3b378c7698c2fe91bca9e9d2952e2a1a2e48d431d36a704f35686f3bbc2473ccededd61be604f457ef290884cc60d35dbc5c473b226d9f2e5f24993e88f846a9eac7623307339d0b90e2683d62468eff8ed7fd6ef0a8022a00fd04ecd4313ab3fb8930cbe0308b8597e5e70b270c836f06618726ca66fed27f93a6af8517472bf85d992f92400f4abfe9c171242c489f5d29766933ed45d8bae845fcc2a5e8ec21d78bf587a87a78c7a9f8452fca2311876097a5d3e7b40b8d4b426cc08736abe5bab0f980e4abd23b6a84bfe8406d84c13e7659f8d14bf1972ef107e024993de6f06f3f44f649157a70f84d0fee47185a3cb1cb52fb25edc2a2250fa131e3d4cb1d40bba784cd82d97f034776abcd6874bea877e0579e2c4462d56b9a9b60960c758d6d1d30f086d107679e930e82862f398868e252bd87343d76a28bd1b5aab839ed3ef83ac6cb4259f94de970b761a04232d4a6a475a0cbce7967ddd19f254a15d2832dc831d8d1a39428dcd20694a0816d0dd837ba0f069cbe2ccdb55fa6a21fe7598e43f8cc97ccc1004db4486bba9269191b7feea90779dc36ac4376a25865bc6c4a373a3bd04723edfec6e8159eb429f110df9642b29db4e28a6f7fc6e76312fb6e80a4c12a37f1ddebbdfa139fcfaa0e08ef319c208ec2e02733ff30134f281e0886518e4f69db45bd5779d26cb2c3a6f7143e9b245c61ddc7e69fdb6e3453c581f9545c630c64d27b8516e71b0fdbaee1a92ef16d52e717dd5e3c01410852a4d64a9b76f4dec1d46c5267a2d7e749a43813e62d14ad035d8319e6882bcbc7554cb2bd7fc2d83d5762e01b9b862752ae61e5f78f3ddcff517d11497398b5d1dfc2d08d1dd8a51f256e5963a0d1a7907ecc9a795c99dfa2458c037d68ab2f1f9ff09c257c8dc24c58eeede4a1956b68989dd77bc0039d478c72311104ed8ba397c44c268ade3749b53457442c0bcfbcf3231fe2a6c313cc91f90067c7ad1a7c1bb36284f4476e3dd2de0122650985c929e3410f717d7117cf78fc815dff34ca4df75cbf5cc379ce0f074d27ba00f324e2d6c74f7d5dd3def25da8e526315e03148211dc4d303e5c9ec5f8c36dfc2b9902cfc588be42ff670866f2f0ca199b31dfa3a70a5077ddc3850a3b0c5bea7871cbb0881b79843797876f78dc0ea727d73fd7a19954acc0376aa705dc9f301f30a22e58a4166e0c7d876fd12ca47044fc036ec1619fef9a05878ee1bce633a6f9a05beb17b254d0ba8bc4de4b62f749997ea6895fc6926b8864e842ac6decf15dbaf05ca0e2521eadc53e2d30008938181cc29749b62ce2939e3097c620fe47f81d1748b15ab053134621544c54ae767409971290d582f2cdac89221b49b9319096f85de57690ee815ca25dd3b05c383005dfc723e6e93ddb24d16196c5bb229409c99514b815e546156f60fb74ad018c1e56f188dfee32b92f70e8d951361f3e1c2052ea8a5d19c864277af9f50902879a2eb65302e799ae146f2861e44a794049ebf94ab945584bf0745e0bdd60526c431140769a16b963979fbe00a72bc478481beda7e112f2eee797c7866e749fc50ecd2f58fc7a355cc0409610cf7028ba1d79e36dbeabba32a39f2fc8a2380a0f67abaf2ce13e17b6700a15bf168d5f006a8b2659e607c17b56120a3e8f47f6c839ae95342bd7c582f96f188abcba7358e12bbe8b5fa634517a9ff3dc63c673a47fb8c2b41b4accf67eae8dd9813dc131b9410bcf19d1e5f7455ff7b9beb609334aa2e436148364c83489ae811fe88028c9fd3b0418e15296a51efeaaa9baa88fa69468a13ed602839905fa080e8abdb87400bf7a84d7fce2277e428a27846af8d143fdf52f9c10623b1d44a1bed50b93b4f0c01c28dc8b032ef0499e03421287f291bb5cedea93022587b1aa6fc36188a6967ddfdcb138bbcbaf114c097b929f2459534833c93c9113c29e44240182dd4b9a993f0477fe70a4b5492b4433006fca98f2ed604517d45b5cd2da5dd08b34ea0fbc1a907934bcac714b835f9f376489f532e4fd4caea0dee46ab409b17757a06eac1488f89955dcb4b42285eba0c684cdafa468c639445d6290c32f1031a39525f23711e798b0278973cf087b7be88a13b8da943c7bbc072372fa9b8df30598b65ebbd6fae41fb46efda9ebd63f687caa347ebcd6f8f41f343e511abfff779365a8341e5f6b7c4446cd6b8ddfe4f711a91a279a1ed96e83e7b103fb7fe352d8fd9533fe97e381a56082907b5e7671142e234dbe8174c91f97429fac8d166420e9a5bf49bf8fdbf45b53b6789a031156701abe8e5a50e59a50715b4c378a4276c38627cf73c087ff233015c6318431477022e1855d389a0ba0d1ddf434d7e4e5327d05f6c2d77c2f6f310587b4bcb77694f3366f29deb8421f5e54a713ec0db335a2197671cf6284bd276f109942477397abc96cfe28cef9e1eece09d4893031fe209106b9ac8fd18a755039ff5b58d73d3889b67dcb61b5c87744c5ad225bca58178ebb153105a05f87dcac257b04253ca0ba525aa1f750bac5cbbab0d4da5107cebfc85b5a20a95484e7e4dd5cdb71763757057357ff5b2ee72a8b4f657544fee695dbb90a6fdabfef76aea3c0d7bcc0975ecfe54db47fdff55c5b81ef49c597decfe5e798465bddb8a0cbd1c981aed50bba127141177ceeb24ecdbf7441d7ced8bcc0655c5b237cc98a4fba283eea515a2c2fe90af397747dfca53bba76e28eaead7a47d741dcd1b557efe8c20f53cb3bba1e9778400d66c8a56867dbf8215a30975718a6c13b52ba0f635c67e95544f97bb9646b18006a179aa091eb7b8bcf3a5a5a0e35f0b42f5ab8b0e6cb54f81df136440bd26cd02962154007eee34d24606719c7563a7d6c83b7759d9628d66e5ed775af6b16a9d0ffd42bbada84bd6f3ee4b17593bc14399f97a9a727dc089addbeafabff97aee69a36f418ef26aebfdc1c3a198bd3417850081882ebe52536d12cf279764796608d60059179ab31c62d04a42171e88e9b2c93d9aa79f312ac16319ee351d61b388cabaaee650c0c009a12fafee3a1d665f5a64fdb9761d9d58fbbe56aa5ec9612f63232bb5276cbd3526c5cb5dcc6c5ca0c82b3dd1db8d6cc7b10b25394b5c3524feb12b3c4a7f1a98cdfdd5bd023b4c4e0ca15f419930f0fd654ab44af7c59f786bf634c481b6f8819ba4f90d474ed46a21bde86e5399f179021964d6c1052c97d5a59a2bfe6889fcc1d2c3be0926bb425da2e38ea061034e210ef877e76d5cbb19fca0e711a798817a08c8e7d6d4c421ae19c342469dd1c69cbf41e03df5df4c49b016fe383efad6f06811cc5709275d778392d2ff5bcf2c5485f241fb19effdbcec23e8687eaf1de8593f88077b127e77948cc57e392fe6d425af26437af1e3dc90a7dd24ad8951aff74ba5b4598b4a58ee9210549dc758eb85bdd158c5b57883be1c47dfd35712f8ea4fbfa5582aee99f29daf82d453fb8eceb29543cd1ff3a2a568d1fa9b86a0a2af6818a6da46207ef32ce090197821458d05f888176896e81dabf99835b175de12546f184dbaf4b5a5538bd9165d14cf0ec8c9c17b157e46e18f1c5bc60774d7d77d987ffe63969b4cee6247fe277f3b4169c5dc04bc30e97975afd57c8d4da528d684c608702f7ef108e58cf9c096e7e30058a5635536700afaf133a55836df15c4f828c14bff11dd8330b684a2d97574da9a2b912e36ffcb78effcaed5feaf06fdd01f699634018fed52bc0522dc700d7263be94eefe282af1de61f6ce166b5c3f3826d858263b1561768be42ad6bb87bd546a4ebd33d5c80ff80169de7c9afca73ba6e47908661a085b0e585fa91fd050b81f94d0800e8ebe6de4c0bab467904df56372a29a4e13571e795d6523c037bf0818690feede95b500f9b8fe0855dd3c6bb6236ddbf03f0232dbce79f2137eb24bed9ff9a2957c5513655f095ac25c52bc3d9e13ba57619ef9fa10b7d83f7abb9b0c30fbc9166f10a22dc0522c3de3ca33ff9bf59c95e41fe6f27b8ad5d579f35930c8a0c44b0a76fdbd9225ce0d922a1baeec19347a61ec49afb353496eb6f7879ec8acb5102d9bb7877977dc218795a0f4a27b076465d5e6967e0ed0970a8ac81370b5639b7b3d9be7da1076f290b9947f15af79c2acb11fd740ad3535459097b79eec65354d98660707000a89e1fb6b5c565bb434236b40447b397146ff31f37ded05182113c53e64563a631cc87b97ac5ac83857aecf1c00ab0ace100aa09219916c40f9ae488415771b6028f6931420c3c16613ebe2988e5357f0e58afe3c32b7f7ae38424106b25f7b43691f05dc2764d4c8196f71e29490c0caee5242481082417092215e948c9407c93b832bfccfc1d9171c01ec176600b20d28a2e214c3883c541fad1f48c46c9dfa1d14ea5d1f6671a6da60a6249a32df6a600716cf822b1a0d19162da1887ef125631fe168d16f48c4879ad684d5d06a36475087adb70151379dfc048cc53fb8c46fedfa11124bdc035fe2d48bd6e92cdcf843ab615ec92509827809751e3add182506bbaef48f82e6105fd6f11ea744ea8fc8a7ba05b41285c72ff9850784ef2c0c2a7ffa1840246414a157394f258c472943a53ead89adde3c22b80f7694bbd09a62cad80d73f1210ea451640f42c91c5d002dc48c11a06ced30ce76933cb00ba3b583e211e518344ed0726000ccd223b56d5e5f5d46c432d20cd3dee808b35247ce815f45b5d89f9ba67c14066f87f8856f61fc1adf5a2b5c9417f4eefdf3497f8f5a7ee0aae01676f80d1f3ae8499cfad82630f230e63c206073c905811d7d6ad20df411c00ec732e4b3e94fb307cf4b9acd760b8acf51093fa4828fac2eb7f10323dadd4be91e1b56ee5433413cedc75ae0445acae6751257115e766ce8b7ad15ced2657fd19de8a814990cfd1153c67575f31a37e793dd6d95d56cc30b5f4a619718519ecdf62fcf19ac2ea2dd3440c9c973c52627a78456c72a51f17177f3de06d80a0eb59d597f416b084fde6163079c7cb869223fdacf10154d82023dc41999231619030d6bf6634a64a439a99d31861d398cd7c0f99307649b4575e838e630b8506d516792cbdc8ea4dce114b5de949e3b73db91863c6a8648c8c8a97fc1f9e2e79f27ecd59cfd1ab3aef404207d94a59f86a07400b42b631f7801e54a02e6cb19dee52006fe6bcb36f98a83a4e28cad62dd5b614244e063621acca04673e4024952de575b0b2de9e8a247d5fd443c056a85757bfc905a888d0a34588f500a7b3cd3da8ac4b3e0f76aba575d9c18063e6322415f94a480a56a2218ff795a827e6640369ee5d0c4116e0c6c9588f29def28f87485634e086c0f39af99833f39b741273d17cf81417fc7fa68591b19de205ffbba9960643b839d48e680772575cbcddb6f3b9fbfdd704da8b66c0dbeb384d3f6db71de958b8d1430519a848dd25ab4c6170108de839f401410e3ebd856eeba7df46e82e9abc733da799865eba1588bcf4cae79f6219d5f5c254cdca79751866f192ea6d64e50cd90891bd2ac8462788fdbc1e8d3364e382eecf54646f2bb645648be026b2fb0cd978d10462bd39cd4d4ab471c9e0ccf956cc224ddce030c8e4a4273974ef0fb488e8fcdbe856418a6e82637b57c636c1b8d6fbf67c6c1f3bbd84c81e11d9e7913e22b2dd6d647186ec03917d2ac83e1240f6199f23b322bd911bd9f79eae908f2bb7911533641622fb5690591120fbde9c239b46ba67abc8667b1a23b2c26d648f19b229229b29c8a6886c7681cc3ee9490ed9fc811611991fde9eb330456623b2b982ccc6399b5fcc9943777a29876d418b54dc78b7bb8d2eced03914f12da882d0a138710b7a31732eade88d1cca257da42bbc7fac721b653143e9d245b3caf5bd25759ab559567c8075b0a4fbfc426891152db0e55c45ead115dde095878ddb486ba1d87ac1b7d2c48a7c9c69a16788d68ca62cc4a4cd35dde9510ea54f8bf48828bdcd4d94ee2645b916287d15e51a48cb0be37394012db0530e654857b4862893db283719ca40a00c55948118657839ca0d3de9f51cca883e5017af4128dd4679cc506e04ca4845b981f0392fdc9ea38c69a42f1daae24ce89e6e1067e336ce5a863316381315674c23030b37e738b7746944799c3b1ab023e2f4a2dbb319a538b774d10cc1edbca34e73b3545e54207f6a47cb869ee1e548f6f4a41ff2780ff4813e20dee836de20c3bb17633da863dd0bfa1e2ee97ba4915ecde33cd13d75c0e822a7db38f719cea3c07952711e057d4f97f47da091be58a0c559e37673950ea58955bf8df121c3f84017cd53576b912a759ac56e561c016dab74734edb1a2d306eda29e3acd315dde23817f1eded38c35a13e3acabe3ac89e552bf5c2e0e8bf4dd82a69f815ab007b617e30c6f635cc72946872d9ae11caa3acdcd3c2b8e0c51bc31827986d59fc3750e891ea1af9aabd898bcbc8baf6b98262125c301a9c6ee8d67a85e407babdbe842f1d1000aafd8c928e14deef7f8626574a0dc33e0dad1b93347177d0943f8567945c59d460cbe49a0e3a715685dbc7f4cdfc391ce0328ca23c8813fd2083e1ac062ba4657a78e97de046c051705b01d0315ddf271e395e586af03dcb0222d820ec73d2b82fe342988d2475f1806e0e7b77681b01b03c8a0f429cc8a5511c5c55cf1a4208af99e0f8d40f1871f8a46e0b43cf3e8024f2b26a27cdf81cf02d0958d464849941f43b8c136c15c898f8628deca66223423a8b711edc414efd5f6d0b19d88f2cd26ed0ea76e491473e10b9d071752bf2e8ab74fdcfafe2ea2649a2cf163275d27ca351289e2003c692b0a8b614e7c5bc92d878f765ae0587f01861a0133b68b73c86b59d303a4ccb0846d712d59275b01604bcc1a2fcdb536319e0da5e5b2a0540156f8b80647c04bd4c3d38211648bbfae66c830871e7e0a0f3e57c89ef0bbf39666126306ed2f4dce64ac064ea8f109c635c1ebc42060e141a253d6773808bc7044337cb92cfff2592e8bb002a67bc12733f092eafeef2ea47729691df0b6aa7b9bcf15ac832e30ecbdc13bee371348e664e438850f69999c6ac4e4544afff2f23d5c6c3a815bfad97b69c66798fc7fecfd6977ea4ab2270e7f15f759e745dd823accd3be5dd52b332530c618638c31eed36b978c65100801428cfddceffeac8c4849a989c17befbeb7ff5de7c5d9269543e414191919f10b4387d1275578bd19e44075f49a0782f42dc6a2702bd40823e654b435a5526a856fda369f90db168681abe35b4f91957069b5b677099c479da845d03b6c1b555598bab6dc97106468a6836c72eef85a116239a8b95d88441b791be11baf45b20d8c514758da8bd98c6a2b52c47fa0c6db40d10314f50c6ea129df3a11c9422933d745c5679f30350353c2252ee5f3e069175b58acd1cbf181b845dc6d749725681e45f8e222d96e204925cd3cdd3ca65be4ae00915186e0d773f75645aad5748bb4da6894a9a11b91eb1db519039bbfcfd0602b1b1a6da6413a799ae5cd3c163887ed0c01f4e1516ea61bdfcc0e9b61479a71041311bee0182efa03ba35059c9e195bbd84cba281f61ee0499e976042ea1972b9e41912c9cca5d81d7be0496e34ea1e1936739032188356e2f541646a92b7bb74978cc0f05d4cd0c7272af8dd6902a30b81d4c50fa15c6353b7c17f926440b545d6603a852be2a08717e67473fdc26c8a85a9f90b73dbf557e4e13179490ec24b1200a405bcfbf2297e49ce852afbd95f92d386bf24110e8c97f696a43079455d3bc2d628814c2a691e28a22e6887b9ab452b71967b9753d203d2ec83a5caddcb0e7bc6496b8da983de85217f482ef4e9e45e3c2fdc9e21c7a0a4dd3ca2432745ec2fb9a231250f4716ac045693a8e5d95f4d386c88aad8725753b7b9bc97575353646a92a73ba0a615aca6df5c825f4299565ed30df2326559c0722288cf981e92a1ba9d780bf04d2c407752c0aa82a0568d7fc93537f5a91e5980d9fb6d1d74d8b94bc3983834ce89231b7e75988099683faf61b4114d52e1a634af5f4dc24a0cdf990025f1e182d08ab12152768e6482b37c41672f08b6680d7dbfd3622b2d2205b1cfc39bffae2fd93e0c8aa002d8d0d247ba431ab682418cfe3303b1e1b859f74505b1d6c6c28a62129dcef9bda3185cd0215b9ad648ffa1e0c4d86cc9033a67b1031acc94bd24131f7213dc4c811bb7896a32cb3ed37c3ebe669695e7730befd803b0a1792d3724b3ef23155fb8e091454b0bce56bbf032474615386b878ba627c3b5083baa597e866cdb65150774857eb1d3307f1e925dbba21aafe911a9a82fe894bdd5241c0db4f8454369349dd38f77ae3f2d3bb2053e7bac5cd8cd01513314385e47f55edec0aa8499b424e4f0033e8e4ee0e57b4be7c0177a882cc1537b443529da2275d0dc7b0be6606bf5bda871a66aa92ff01a82475f99f3c085baa5e28928eabeecce854e585cf09d448b61a081bdba96c22970d87a3c3ce0e6eb10f6b6948c42972ffe1e5b09cc001b74e28d699c31ec79ca00d7b52d456a4939d485ce23398a52e526e6bde5c20eed2c347d9e3c628ffa277a74c01e0d8ed8a3655c8f623d4cbfda89c833ef0c835443800eab2ef7a7044f6a83720faf245c4cd232438c7f80d1070463de81b6420364da123d20a645ba459aef560c05677cfc5d5edb0340e518cf798db0c6425c0fabad749e1206164bac2030180e806956c0605363bc140f6c882c3ed8a2556bb9976e9249bda6826d1119a45c676a3e24535612350d097b14f52c1638a947152e30db4eec7ccee90adbd3ec05dc3a726c3cc397500951daffdf889455933d25f765c8affb4841116b1620146e4f0ecf30ea42b3125f099f4551c90e2be95502c3b1824a8ecaf4442510c4112b9981a8db3d0ce53a8a8290fd893a200892a8648e5aedd13ed09d719f735a4b2d9da8451a930d56d22f052a59f4d1bf68d248ae640cd32daac90b5a260db99a1d54b3549727aa9186368595f496814ac0338a1d95fd894aa40ecd513d3cd8072a19bf007c83523a5109ff9fa8c4b84565c148ae63fe82100399cb7a9345427a9900219b17ec8d757b516faaa237d6ad5c49fe25bd61cc7eca28871874c4ed69379cadec86b34d72c3d9ca6e381b61bb3890cd83d40386f243df3e4b3920a79a2b95cf9341581a72101682e655ad2a3ceb5769ed9ab29f80bf0ab1955a25f022062f0ad25e75408fb4c02b61f7b81126151beab95735607b607cce4e0e3228257e2fbd3de2554f8974790016594d424ca58835ce94c9985e41300243350ca42b45a757950698a8120275cc90e1b799808eeb10d2010b310d5c087b70e1e9bb466c0d8bd3ada02d06229df3ba6e85eaaa4dd827c13f5b843db779094494404f5f5874bd0757ed46dadb2d1ac554b748453ddd2213bac765666d635d04e674ce0cd3b526eb88b838cd0520e70204e7cbb28572d8aa25ac7b3d8cbb748b2c69458440dac63bd75083a59ac20092cb83fc033a7a1c40adba4714ab567180a04010a2a24d8e54dc524bc208ae1db4165cd0dd56c8920c010f61c1822c394a0bf77515f1dddb7bc906104322b51a28b56238212885ded84d37e29867fc0e296a46413b1bc8da13fec625b48e29dea647a40d6eeff74d9156be050f61f8d103fff90cad789f10aadefd4446e24b152ea9038c120b0ac5491d18121fee469d2f943d438f8f923bdc017cd43cdbd11470127509aa4cc28feb2e510cf7fc06aefdf48663dd20a440d3594a2a0ca3e22ddd5a35b9d6b192a7b37b8c4bca871683b683672cfa21f420bc28ba58c47e2b257d6b85bfb55db8dd1e02fb08d013518ebdf14bf163ba4d4acac37aeabd59130d9e69d4e6d0b5e3e4e47409039085c8ffda6cab802ea10d46693bb418aa218a3b044f25edc30eb9938507f11cd7c27127994791fe01a0d70635f14091da817c6a23742b1ad5edd186a16d609e0784fec1c41ddd37bd8200763603fd4eba45061934a5cb6ca382666a1b96d797efee9593bdace0ef0128f3006241b5e9727709ec83c026d23d6c22c3a54f74b7f682a6b76b814151e567644e0a7e3adba1d61170b849057bd90b56527ee03b03a0e8a7b4e2475437600757a8e904867875c725e6252e929c75f2fadc0384988ff4908c69e3f00e71e39d68d78337ee71820665b50b89f34d3e8a5e57573bff763df43d782becb80fd00fc6f92a80af3d15f1063a3c462715af3d2e4d3bca17c7fc9d272ea80d2a2c7654e380a7c2c526b0920c05552fde2802aaeb544deb6cca0062d05df5853dd8ecd2255f6f0ebd04a40de15fb734f31e0669632a62b46d0446db563d8bd18660afe077cc2c3c452be730da981a87d1264f6a97b0b77133da8e0e3832200c7a6e55887a81d19ab7515cacecced3bc103db3c3c7ab2ce453276073deacbe201be0b435b688138731a44fe0c4914e1427ee3cd09c07fad527cde1ac99eeb32dbd2d00b657130a4f69468b5e8e7f1eb6171701043257ea1130cc95420c774906f71266b558c5a19e1e37983261bba8e33a5f992724e6c35e9298ddbc118939bf9724e6c93ed64d506d8ec16099911a3825912a084478ecb42678f083e425995c1f3d6d12dcac7dced7f5395f7ffde197edac412400d98c7d5a13c14b3a105bb62320e708027fb676b08de029fd21650a0508c6e7c380bb102e39f38ab76d9db0e7b108dc46915dbae180d31a8802601cbf8f729d0458a2c61c7b37aac54cadb10f59ae8ff680a5c32a34caa0928f99a177cc8c02c3648f10e178d9147acd2e7128be599387742482e280146956a88b669494a808c9292e0a23396795824eb23b8727337d8e9e7e3d2e12d7e89289d7ca1d65ba068e8e0b154d890fe8e6049821edf5019978ee0363e2518cdf92873eac69414eae30d49ecf69494ece31b4ab1b563e603b880094d50f94436b9817225e54680a52673423a5d6e818de3e06131d123be038490d481c4efd4476c42ece40948763b98356123560de47014e07d61a43d77eba494809637716e9767afa32140cde69a1cd7b15c1950c7a84c0cfc31db0cb05ddc389e6c03a68ce40bb369a1e85b3c41116ab40806658fed5ab861f46ab910b09abeed1b80597e727a7557d7ff63ba63c19d025adc117660bf5e1c05035541fd72145f5fe569ff9d786439f022d965ee026b538c0206440e345326805775056c2cc1d9a24163f414598d2c3088c229e040d4dbe04a03104af9f025810d9c4f54fadd403a315a2c164320d45658c2f0a10222b43e7b7c83a41d89cb18c8a46ec653ea8269ba1607a9109fb8cd51aa8993359b591f3cd6d676cdac88b0f46a3e07f4053f6392ba8f79e0996c5662a3e8e5d62c93e6799fa0e0c492c96aa6fe5aa056c519318751b1da485c66f47f7967b7de54b6f835afd312de1d2c3306b62881b80025b27787cf773ef28b7a9843d60c4a3d65ab8660abba5ac056250dff22bed62e89b9e2baeb472ae8d53539c6d655d3069067ec04dc220c298a2d6607f1e68ad99f65e489a686eb4e68c4161e8f294d231a2f78612f6c96bc9499b624e6ba2c194206e8a616b667a7a481a1385df69ea3ab6d5997d028736a52c6434c2fb788e0656dffa835f5e8ed4ce8afe98a84610a1bd8b0be11cd5208d82226f5274fef0a8e65248c1ef143121b6b05ae7ec55d127a1dab31df43546931f0390930a74dfe1b335a506483d5ea143167514cf107c1126bc791cca1337156ae0f7b408e2469a6946d41c0316a72c28503e07f22c0cb88b99d50a2bbfbb3f05d856738bdc1379fb8c39b036d911a7a9bd59a07dc68340169796d392e6a132bd8095155a88522faf4e3f3d4777731a685b250d1bdb2e8bb6f76edbb0e656989f37d92584af9106321e3c43bac74570fda28d9ba0862fdf2e51330c8fe681d8dcedbcb0f41361315c62e0006a581482ac28731c413d052292c930afd44fbe3cc4a163c153019c1cad8fe4038165586097c25204b5088db24760614e330f0717290a81aee3b1885af66a4391f51db214d982e920e37497843f5b39e0d7b61497d155e852ea899bd3e68fdb3c75a61fde76e11265cd0c6d9f47a1706c124544ffaf259a3e0d243b93d7402695340ef430f48de986855c6243803b4858c3c50fb89dd6f97504065e31e14cbb7d72900a35dd264d7ddce4d3fcba9fe2a51201544813f71b9fd596c2a7764221a58b4a36ce57212c0bbafdb6b910bba72cdd252f6fd051a779a6a30b4a061816cea4084cdfe6f2f96b6cf1318d949f51326c4f3e9169439fc77321b6ab8434c458f03fc1c3b621524ffcc9cf2905a770c597c07b85a58764d4437cb60c4cf2c7271a7ceb01f20c4ac6d4a00ebfff298f02c4a053179dea91cf2dbdb0571b4a66b45b457815cb1032709bcbc528b69d4d648e82181d9d05aefdd61067a8256cc61a24e9375b2ac295b255c47f9b2508adddc110a52d5425e296699545964a7296aac8524bce92125932e12caa4de7d8013d67e262bb4510373c877fca948325ee3434868044b4c091c5e5ee0ee190a8167df1d311897ce08d5f85bae3270803635ff246bccc70eacd03a92d11d20532a8391403dbf5b8fa0b5efd06d6815af01728def4ea3702a95efd4d90336b4ae936bc78d74c3dc090e9709b523fe7a889490f087b467101ea64133e1139768fe65b13349a73cd073bc4b95bddc6180ece9e6c7ea9ab74c8548abc759b9af94708c06f870e9ad3f2fd78157300c1fd83d3d5230cc369bdf1a574979951d1f090e4581ea2c5786e9395198d909c67d66d19e30f633ddbbccf72bb447db18732a2383ff6e5ee740199ded347607cc7c104e528474b16e198c56668cbbf170d1ee0bd7f50e69caeb964a05e56b8e4a5dc3dc69dcb733cf3276aece834898a40aa8873cb9647af9501515f26b75eafd427802c1538e9bb8deb3c81808ccc5d6c6c0bb8c2f705f455e91c36ae21a4ab766b93668e59731a1eaf328e577fcb29543fa1b5cdbb9f44bad94fb7cd21215a46589f37007b734018c120353c778fb0cf60d9fca74bc610a347b54973ab4cad1f26a31221c3b9988c1a9ff175db564ac7338aef45bce23b08d487371a07b984b02816089ee9013936f78a10458568a73a342069eb0fe135a2935d33074a48b23c2490b8017d790b05f2c171e4135ca1e7cceeca34161e3e5071152a5ed1099a3634d2634698c9e26254f052ab26e6aa52c29e9232b9edaf9286556a3f05edcf6841f46c4e095bb2733d3328d9d75dcc7108388402fc700b0690cc42ddf44297e6838101e296a23fced099c1b31804c49cd039f2f69538e01a449df003aed1743827b8555318b5bb06824327bfc1c38b090c00783959c21d186c82c884d61075ab0422ffd8abb63111e726846a479c3d381c11990f717d79a91ebfc69781adb4b1f1d611810f26708f56f216a2aac25a98d20ac8666a86afc5db2c35eed32dd215584c3b64debd5a3ef6c2b944b8688bcdc42de82ace89aff5198c39b481b7e69a3054ec6ed5133c1355a5a4b9f8f4a21b39f5b417d9380f466b786fd8a2c97b6b83560da00cbe13675337dd244d509e76847e3ad4bd0c46ffc1178e150a42dd3d46d277436de1000de189c753181756eef331bcb3c480b0f2736c12851fb605d8ef3de0906dee3c4b45f7857087378aa10de69fec132d71d45b94246d88146f28b707b0e12eb0777f9d0b988a0a928f41a95a4ea8dfd2fda4e32e3c6116d01621230b20510d2d5418d9f48023d0c1653e118224dc9599e90625acdc25b6d39cbce02319d8c1e910c9d89b4aec35ba50083438619f225a7a8330f24b9cd080f6dfcdf7e9657b10cfc81022e86921448d159de3e0e16d0094db3d3c6b3a53ea8a666ca9d4d4986759ecfc33cff13973e88985d721cd27dc1c38801379711571710d332b11393d6671b5013b6c4327e090a61e7fd2e21a4befcf639c635c2520fd8bf57537c9c79c32437e79d9e0dbbed1f4dc22c1dd109acfc0ab4156d8da85f3d4f8629dd14cdd8053ff711fd746f2398a55f9e7e8f4aef08573747c9753d25db6ef755610f0e60d1ce014a15ae00273a9c07bd84467af6c41bc3e43a2888e2beb2bd8a9e7b615200fb325db17dcae7604e880c87d2be506894e04e987ffa17dc9069b2666015521608bd3be4bb7c81d2942c8a3060615250568a55ea3455426f1ab43734a4b0571312ca05eab12fc8df10ede2b05e1ec5b907440b5826f41c63ed1e8685cc4ca27452affee41a8838ff3d54c84f19251c42d3515f588df1de8dfdbd97ad40fac6656a4e806698a7a44820e46494b7a9e204710342fa2abef8a5aa22a37654ef92149f6e72b5373a2b28e0f8ec6c7d970c1d39f9b4ba8fc6ecfa4f5d3f327fdd99b74b80c8a861af12fb56e36f85f291f6bad36a6455a7c93aee8fd229eae7cc0f8398dce06eb22084936739377d8d70e40d1b6ac48668d98d444edd9b1100d0532201b8a31c4c51eea2d4515ab22de62ed4095a8ac6339b455a845218eae0807139440d794b087a804ca76626c8f481f3eb46671ebf46bc0c2b414c8ef6c4b99785d50087b8730501a672eec1de388e4706fb6b2b0a5d80782d556446a19ea649f087a5513a95548553fcd42f4b9b85c903c57a60055d971b52dfe70b5c1f31a50c0fa765fd8e0f18f62c5319b96d044c3ce62d95401ec07dfa7689b523b6032dfc2074ab622462ed9baf3197c34aeb203a60b38963d97f306c2862d8a90266f1234a0102c2368985588c2b976450ce327e629311fb888013fb27c3ad7a6ebaa0920bbf4a0a6fb644a35be84a7d2c3cf8e1e75e45200dbd79b7c48bf3a59ea1a8fa98495d49c9cb593775b8075075008069d28f6afedc3f257f761f1b3fab049ecc396f6c17f6a1f4f4bba47b68ab0b0cd15e38c2717f5151da3812dc6ec404c60578e1c83991f60b2ddd750086b2fb4680e931ec1ebb43365f2474345ac018141c7087b406fc34d5c551089d1a43338a3dbe911519f7057c6e65ea85c9c30311a503bad91c68beaba78b067e6073a606e9c0e7e99a14cf20a698a30150d5f6deafe9c527ea8d97507d9ae558adab30e48bed17c9119782f83381b8b667ac43959a514e6e4e285921de9e5bcbfd208f3fe8079f9ec16797f1eec0b06823bb9d5ae797f5985d604290354f0f2eeafbdc3b28400f753162abc61e91e59de4e84eabe1417856a736bd003f8cfbd2394dd6d32192f055d7e0c5d7eca590f05b8c3a21cf77914acfb20e4abe5542c7b913bb11f1d52badd0adbece7744cb08a71f3408549b94d0b66dc2cec7be916993645202cd38c39ec0764d50c4e7e67c70f2bbb39a10521a332420c36cdbbfc452364cb66799a6e30a665410c16d0dc3646c89e627caa35065cd2611c2a33f1229b6e9001dc7a5fda47b49d449f9d97350ae69d421fede08b7d17e305eb11f96a0cb5595dbf74d38389ed625b70e111a089536abc07ea4d00575c2a18e5c6ad57b62bc57a6d2a2aaee60598089a8f793597fb42f4db0b8a79c62e6113054d4bc52d750a78936d61aecbf374c4c5bc4d8840ebc33c555a9d87ee4edb020d14cb74516c6f91c6be9e8941792cbf8678b4a9e0556940d8cb424119a541d4f769f4384e8816d92c833d7787cf698b4de90b325e724053d723ac821db5d50478da24b18c8920395ad935f1c895034a25749a80d73d1623eec5d812e7de3dfdc8b330d575350c36bcfebad31d4a2dbfc1b0afeec51a2c0409694f47e90e51a7f590d6a28a56f7a5d239daf87edbee69b8f080100d216bd85411a0b4eee73d58d3f59c8f3355839f65b8ee3dc4bbd6c1709055c2550bed5b1b658588ba20d4c00246640a4ba18fa10a065b3dbe42b0a9cdf36d92a1fb460470d7cd9f829791391357a6d060a7fa08c60dcba9121ddb6ba23e46c68a916d9ce97a388a4e68f1a4f8a73c9d328481bdf77a366668d6570bf521d380114195ad2d3d2821784b27a3c7657724fbe98d1796824dd8248add5b2ef906d43db38cdabb39e47391b5311a738ba4db44ad503948c34f194d8d30b6efa59b44afcf87e9163315c501d6786108caf130629ccc87f184b6a458968c93ddbc912b6fb52cd818ff6a95e33c7ad88e56db78e11d833b6e28f2639f301288f5587e4d8fc89d4d5d8c46a6b6ed577c5d052d020670ec4ee90edf3e841b80896f4e33010fbec1e80d6ec0c2237809912cb52ac25408d02c1ca588b1386223183a789e1d68c5a1a114ced7a7f589c0488b0bb2d776adc7f009bb950125b95ec6376b63ed79271056437b6410d25a6d14567be40e434367f961d6ae89d8863b35dd260f397a45e4927606431b3ea4a4c886eda94834d4705cc34e490e6bf8b8a0578435ec6400d7f331e5236c76269834f6913e7b0ecccaff3d110ddfd29188864233c8b7ea18d7a1b2ac5c16d2308546d9819086f882fc5f39a4611d431a6ac9210d8bd8af404843075fc6895f07698f5d37ccff17421a969845d7c0be8a28c96f253e2502bfab132510f8bd3ea757447e572db5c87fd4e76ace4f2c29e8ff572f2ac2e5cfb7706e94d8bddcdead7e055877c352b3e0fd753b575d37309e9c5356d0ce6d56b1e5060187bab9540a0114edbb0d4da101df6590dd4d4bcdf1bbe0dd5ccd7f7a89350504a0bbaa5250824cac658660bbef57f42ad8ee96a5a6f87cdfcfd59ac7de5a15a5c84ff5fbb2527a0e36d8aeb12074f78341af82ee6e5b6a81ef8587b95abcf3120bcae11971c98f52837cb63a7b1604ef7e1c5c85ddddb1d41daff271ae6ebdaa3b7b051377ca3ed4c16e8ee502ed3d6957c177772d75cdab7c9aabb65775f7a860e2417142edf54c2620bc530278bd71158277cf5217bccae7b96a7955f76c051357ca32d45ebfc6048ab768ef45bf0ac4bb6fa9335ee5cb5c9d7a55f70b0a26e61533d49eb6678eeeb919bca7e806cd252f43f1d62c15a0f2dfe7eac2037ad7f60a26ee94b997a82f7121939193c53be0264bd33ac9d33d45a5dd01a58f6df0c2055154d884cedae023b93041f74278ee3661a47c40704708d5c2c858071df60bb878a151c8a00cc601af187e02226a7f82b941ef21dd244ba50c721ba975c206d05f8070dc29393501c2317d0e29ef2243e61122e53512c11ba502be3df2fc33dd04e0870e69f4e12277fb22a126369b15d755b88f1e2178740a87cf19207eb1024508bb4156888c0625f75b9ae904da1b476110d52418c44e220ce2e35dba4b7a008328bafa7c0a067146c95ec9aa31d68c0b1527a46738e2557b8b6ff1659a578559187887bb807dfecd2726f620884f0f91a883ec19ed64c420eec5bf67230eb65ca8882e6c74f690f6a2b9971da14c031bd136008108d31f9e1f1db47ae91669146865896e8d7cb9b5e0c16ca910a7eed9507e02c058954e1fc06605c5cb5555d89054c5d501368e56d2a55f01e7dea22fe2a238daaf81b36e7b019e61567d8e24f71c51e30634a81da137c05f09d75d1159945f62bd1ad59a52468facde44dc950c884df4394635e2602a925765a1acdbe3453b04149c47f3bdae29b22fcac0393e80aebe7b0fab7e20c6315a7f6ab6481edfc3eb386a4cc4afee1444c6d6a281c1b217c26e63eb36801e06bda519f8ddb14752b10a5bafc5140f91c1615c3a3edfcd17d00aaf68a6eaab18bae0bc04d734534e9d2b4f57bc8b36a095e1f580c0335009816296d94a9cff7c084c91cca80c68200124d65814b44b2c2f09f2ebd84041b647d8a71df586bd3c4c3006f0eb55f09f407c6047c4a1cdf3ab5cf3350a11994cd6209eac2f8586ae0269835a0c856ea4dc143c8a345f637463c934767e74e81068b5936b44095b0ac28c5ba00ba3e85d4a16e9e41d61b43e226cca26d568af2ea73285f18c3331c3670b2aab62f8e2d4b68974f6e3872f2938323ed43584b14e23fcbf06dfbf1892361a3279831798fe748666338e7886f082260b002f56121dda7d407f6254c5d7aed85445b22a708e70b6f70a7132984d45e8600818cb5ef7aff1c18737c8d83481dccfeff65dd2acc518055f3ff6d178c8fcc860f74981900f82371f7d5a5afc28153d190ff9307e0a55ee65a48d08fb58bbd204b4fa0a10544c1c5397d5d20dd482677a8b3432d48ca92531681b3ce6e18207c63b79f54017edbb1d1a011043686e2228a403b2ba33e9ea35dd65d35685cd41d698a1f6c4acf1919e376ad73ef1c4299183808e3c931353615a2356a31e1b413a16de724d09230901a743ce7dabd7f480742c6a45194d62f5b3cbab87b7a2d656189477e1590fb488391aff0eb366c2ad0314f497c7d2de9ca0c935c2ac3e000bc999c84a72af8904002f36eab6b202479592faec7560c6720e088ab5841e14111f4374c1897391f8c2b4450c49bdc7d068eb43b25327ca9873512b4079e15751bebb7c4588b640e8712069cc32f77159f8ce492935b601e57b4ef17b326725ec4926a127d53ddc85454ff657acedeb7b826d117c78582b0d8ccee8136bb01a125b4920768e32ac20b61207dcf4030b66d101c93c578b257e0ec02f6566337802da339fee159b20fae394c5d33d3bf0a5e6d25dba62900f570f326f6b4416a0f36e900c95c9344f93b9089059fba5642e80cc3c45321d97cc063f5f431390e1720ac95334bbcddc863f822134dec023126422c5e5cb29cef0336f463f8c3c4d2f18b36eef276fe970c8fe8e453718ba688d6f78d394f486570abde12df268ffebd002b844b37a7127cef1d24e7eb7e3c9886e88dffd847483d4bb25b8dd364ae2456dada4dbe4f6e58a07b54605dfce6ecbd2835a23a360624af11fd45a4b7ce8dae343d72245e1f56447f760a73602df027ce3825918a1fddac8d2424f5cccc1175ef71d23e5ba4f6c57543c9ca00abf3d4739a704c96a49990148a22ebd7b6de81667fe28bdae88a05528e0d50089c9a1882ec452434fae9b29f822861e181bbaacdb08de9e02ed0e7b9cd85c3473282af7d81c35092313aa6735f5ffd42bd752c55b12b23b6d0fa89deda3ce774c8e3ee11318ee192d9345bf0f7ae2152c8fba0de878973c812a634d4da5c257d6735689be7c011c9dfbf2e5cfcac997af5e4de9f9f2f4049196c59cef4c2c6c0edc1af9982c3a69ff058b15d4d9201d8a81309cb402e531b55b7ec3828049a0960540578bb0b71a0ad7a073fb583e469ec4f28cd94cc419aa2e61277ec0124644361d4ca077740b57c51d2a640d0824e4f02d070854779c9415ead99541995dbcf7d85631e04aa16c14f1fa4ed0304e241bcad44f6eec9519fe1a70b99a37bd784e0fb980830ac41cb340fddc36daaee91641917ab68f00731c5357eba5990031657e5df51fd444f7095b5330347cde4c446c9325bac2a83ba122c69585d85005085ca664d0b8a338702b4b8e2aa4f68be0c24e86b850f7b889daa907e04a78e32942a49cbac5d94253f59beaf2cb1fbc6addd9183c8f54b001df035e59d088ca784884d5aad8b264bf893a9c7796740510c1af4544475bc2308ef6cc7a7217964078f838d0aa70e1bfc06e61b455e00df563a314bc37d49129548c1f3365e92faa14adf14e4f28593ec5af9d5d74ed64bebe76a4e03fd5ae74f8a22bdc53f272ba2804d02812ef4695f3b84ba24cdd3501029f56839b4b1db4f86abf0873567fa9b8217c5aa4d15f43adbd1a966ba1d57a11962c7bc005fc82cbd7c1c1e9ccd17bbd01875517b55d8821996e13f68861fa38a37bf8a87503148ea3617bd4a4b03dbd661e0ab70b5df1b9c92981570ecc1488b433a37cbd4602ed78eb55a890482d66bd6aee7a6d20e0cc7e8f66ea86b02104c5740f4164262934c4ac8ed20d5263353a869807444f6b645803b35e92114ccc5d71634a587bc6d07579e685de6a13f62c304a0f131f05f55d58cd33c2ee622cdee12efd59e10731b32842055691c3040cc78e999386639b8c6438e6e68d188e1d3292e1582d15e3e1d223ac4ab30fa8bf43d68da3d6e73286815658005c68a090319cdaa87841bfe8129d61ba66cae96a850aa16441f7629ba125b081511967747f10d1420ed44f80a051e25f35ad91152df103dea2647a08c02500940596441cec2eca0c6c490df03a65f730103d86a6fe43c2bae8e18e66f119ccfd2e9e96fbb5057541b954ac82172ed5d33dd2782f22fe978a985b10f2e33e580ab156c1f30d7cdcd53beb8bf482c0d18317301d7d949b006cc1ebe62b436dc09f6096d303afac0158b40f9d3d97284a14e920058181a9cb739da265e12370143e7b9ca681180fb7ff62218841181c91ecd6ea808b5c107e04c21b84a1b0da8357af4145645e23528a1821663377482b68aa34f3de3f082b65841340f12900fb640b68a9f9031776c5fb10c9b4633a96673fbb634dc288db31f020953a3624ac401bee0ae912765f110a58036baaee61f2d9275ead3aae175087d70e0cb6d7e53f9e05a86568b80098d856a6ace8193eb08606309855346f3a8e418ac94ae64d10c755321c5156d79837b18a5a86e156caaa80f48264532d62f24c2df9c96a4de42606459db58e515e50847d14ea2d7023521f836c602320ff3e2f64038c1f62da5480aa42a61db5d6c89c3a7bb00856cb0fe91e7945fc17358b58ecfa0acdd0ee10911e2442bcaa7ff08dc45e7263f4912a9b30a52f55b8166a85403219e69f71df37f98d675ff26fe01dc2a6b41c2c1472ff3fdc7bde0d35369d609ed9049ca2788d6a91c10dbe861e27530dc70000399c5764584223329f0060111beef7024523a02a614fc2fd048ecb23b8f08f5c170dffa1a347587d016e568e5bbe0c5716f62938214a4931ce203c9f4eb42d92ba11d028c27dc716afbdf8d8bb0616b7469c7c2a4cc379798db0172ca92d27c1615e20c41fdd635571ae2622abb60421fd287b9a2c58a2a789db00b8c0edeb13947524a2f8c7da297b75d28fb1320744f5fb90913a5c786153352db8236794dd1679821d7d8591eb780f90b37b47aad0d1cc0dd51afabacf01bfaaa9155ff5dae56b721d1ce1d09aacdea3471000265570b463bc483a1893a19941a6093330c4574080ce49e15d5dff90d9ec001554fd65c3b71515e6c50e084e60efae5a8cdf4fdac27f690ee3ddc789692fc6ccd5b508fae79c03aba662dd4607f082188704d4302294202a451c415e8b4b3dcb8e643cbcc2d6270c9e190e7499a322a045135f2ce1d8977059992940e0366b2a542d7037e23d2f4188651010d7422d304601fd306638c00da22e59ee5cae36295293bda19200e40f0537d80483480350f45080aa92f6bc1df87a6455608525e501f823c6a7d667e8df3d15721cd408e6dbef4dbf38c0806200eb1aad8519588b64953773ccc2431ee37865a3d7381f1747e9ee9458ded64fe26dae5108cfc889b6a4a53d24ac6d0d222c4d23ecb392500c59d94ce92d41afdbdcd51192641a17eaaf47982a1c4f52802fcbeeb7193cb4847c2ded0181082ba02f678ae7089b53aa9617bf88bd30df6e626b0b5717b1a126102fdda1a5540c311d6430c067409c61cfe094cf6a9984dcdeee38158b528aa357dc092d15c044385cea50ebeb3bde87f6f231dd6676e3698dc68c63a14f3698385b7d6164aa20bc1e28dc941465974b2293fa0a38b732ae5b055f12b1d40526cfd5a59f2c824af7e679716bd1d183da00f1429f7ef23c538133fb89bb1725173de54a30ccf7f944eff3e1146beba650620448fd090389af6f86be2147e139f60c368e0e6c0a50191be8ab30e2195f983813db8804485e04e00cc6937728dcfbfa822a5844484d178ce007196caf2f006cbab85d878495d4894412ca0f6dd2c8510c7466e6a3e586699db30598366d1acaa0883a46bccff0288321ead7d4cac3b4f7dc9c302080f6c52a222789cfa978724de3a8a82810f2069654603671823e2186d073ba43de8917ee05f56b73c45b1fb9c13f9985868de624c27baec6cc7063c2c0b5d80669624667651057272c17d342605f69c466b6ff36bea266038742f0a2bcc1d0759f5f7b0a06931249c72ccaf05be8e7bb07e012a183b050e76708cf29b176116454205b89babafb231eff383256d4bc243b61feeb434660ad198245a211cceb66241d868b77294a2c70d091cb4191a3b2259d94d0be83c021f5988503de91def6f2d444242e8fdb570d288b23521323828944b38bc9806402a5eb823111b58d0a3826db2bc704576d670bb2307b5b0362a5664058d0f745ebba51d11e8bb098da75966e325b6962f804344499a21bea9c49bc73abcabc737505183fdb37568073a1ec1a02d0079273f5052667eb4b3f196db9545bbd47f07f7e08d477f4721c7e75df30a0bafaae31f1eb558f75917ca84ffde4e6b1312bba3a21015d79a8c08b3b9b32861f72e2433ef861454be243b902fa6ed5645b600903341707a407b52670d8eff8688e4564c31a7468ae2cad6bc2f541fc9ca97a388aeb105e6c0464dfb60d2e3ad85a0aea1f65da7815727104cb53d4f7417ac3c1bccd74936429c4826f6770dd6ec03fa040cb68fbcc97eb53b58090a57cd5be32fcb347d86b6d49fd482ecb361600f9887af6a78f064257b4d343a23f71663a9acc021781d15c1726acfb92b4d90ee07fab8abd624e13f81e5e5756f87960ee44c03374d015c158101079ea857b65256645eb8b042823ed1a8624ec60c8ea33f23eff9f6c84cb506e1910566091e0e331feebf95ea00b80c0b067b88636946fa4065953b039b0e918c5fc41ee311e37d1c74b5c83d24773e09f4ee6f59423f434d6113a8878405ae630c617da0daec66f826854c77bd0258d9af0338f091deccf9fcce29a847dc6582f06e3f7b40923564c64a0a4e8cc2d421ac6bd1424594062f1fdd0728d080034a24358861dd01b255fdfa246ac141bc4ac0570d97e18b9a9f8c1af8ffc28f55b3b606b5a0d5adb734155b5a8382a221d68442cb3302a17c4b756b72c069722b8140f94b0b70dbc4d70e6c4a91b8193870871c025f6317bf4512a85d4b947839663cce6d84da593c969c089b0a163616200c3372aa09d71b756475884fc1d46dcee12f6768477c4761159ee005eeadb35e00d6c4b53883cd7bd953e32d44fd6c4a8e6c516c78f1548657b9a75e339fb8fdf2294379ec783a650db813a90cf480ddef19b5b74554961b639751f1d9206a03a652103859c4dfd88e2a9967f852a8e69ba4821cc83caefb24b04d949eafcaa24754158c73652e88a0f6158fb2fd19e7026dc72359a570f5d9734c5e1b49e898bc0ab17ed34beffb1d6c09d9035f0b2eb7b9988509441b221c28c08cfc55907c4f147fb606dfd292fa60cf5744ec291a3499a264e5a3627f47b6f5e78cf78a2a36e4548b3ec55946df98ab5ac194333cf99c10fe75d6a3a8499f5dd1d84af41df58af47f68c5ee596d324595643b7a63c7478c057c3338425569a10bd850152e94701ad1ec1d0dfdd886d082580be77ab0f2400dc6eb674f78962220b0f3467012c7fc0bd88884d9753dd268d1afaccccdae9b61b6c5750b06fa1167d256cdb80a1f5aab7b82056f7b8847801fb2e2d90821b5623ce3e7b330b6e44d2af08eeb1ce0bb9c8346218d82cbc7fc11e05dcabd8672bdd23995bd0b2cda890f1502a74c5fc153cc98ff23a98c81c719b965588a357af628fe738e11d6b875e4fa2f355580e8314c693acf08b252b500b575629cefadfa1eb2ac5b1414c243e406c4b33f0fad35ba0cd51ee0e3491b02f5bc7d7b44a5a40cf3d123c11d76f0b4c9ed89ece6b623d6eab58a68ccf077aa584ba71262e31339847b55246b96f8eb7bf399a45a1855aad8b0e7db34e8c408ade5d13c57f54ab19d45f3259b4714a1954087e47c0a97ec9b09429b75f280363d416351a6ed8663fade13699df56d8015e501c059640961a8a380ff99ae7eb41e3cbf2ad5d0330babb2a6c3ed53463d659d863c5b9758967f72944bfe17f3f4e0c1a233bc07ac17705b0e065933275f17673ca8b813868f77889c0ed9611d3043fc06caf292676c427960fc5ae1a19c1925232c2716d5a84bd2eee1306cf447fbc12fa585547a890289a713712c0c47e4f0fc8a06e5fb017497b3b930429c3f42f195bba8c0e7250da99c7ab1293dd415660453916c2109a3beda8afb5cf2831b54568eeb8307e50c11cd1deba60a5aad6e83ee6343ae18043fa1e3900932693e35c490e2fe892930272262c730d39fcd4f3c8d109d17f687478052e390b8ceccc96b32bc8e13bc62387ff2f408e792539a09e15e4ac002869caec283917454788fa0a1d1e7cffa04cdf9b8f1afad12f23ce27d11a7c76417aee9515ee10e382bbd35a84d80aaf90a57886a2f29aee902993b494fcfac4ee9ca49d23edb56cdbbbe75bb412f5268ad0b7bd0bdd6bda101d9653030fcba0a839c09969b3ed2cf4e68730ff363e57db740ef7a2e1631ca5494eb57914ab9593bd7bc508b74b9637248585f467c110f7f31e616fe521f6a943d8f37a4d5dd990bd3057b46d3f3b8f7ce9de9a51c874b631a5bb51013000479e2251ee39cbd17cdb97966d903cb5ca4604884989352e5c18dda013fc8eda216d539db5d34db6ef36f318bd02557605880ae886792d62c0866e691e6c3ed738e163ceb6ccd623bd8a8d208de1bdfa3590abdd08d2a88ac83e61309a1d4d8760f87aa461d5d1a3e387d0e6a2c1b2539cddb216ea3077688c52c130891bf9fde7c830a2289c67caee9af79fa57a00a95a59a85bc7d7611e9514c8a6ca41c954c23acca9823a4cd806f5ee152acca59ad7d22aa92fd49ce62556943c34512f2b05b92d40d9691c5961e4418adc8e591151402e83d8692c55704bb85da807afc1c651c1c483b2d3fce6b6fcef668ed9e89a31cba041cb04ef11edd58377f7249d0cbc5f39ea5845fc1e2eb0362d15911d40057a5756b2fcdf6645c9a1f40c9acbbbb5c247a3e928fc5c5d50f021302991c2633d81de5e0305e7136c05bc84b4b225109cf43d6e0993ad7117f4a62242d28109d3a7b1e215d000f19cb3c25c096de5d4b0a55c0a5f7b72680b8bf20f3a03b767b0977a9b5774808667328c3621cc7eaa286a9a54c45b75d311d8f0a3d4110213230c212cda6548d28f228a271a34433137305b05f5891a5fbeddb7126a4da53118f05941fd419ea1775e068fd1dd3bfa1401e3e91440a35b43a08c98d7883328059a08bc43da33d8d6ecceb470f6110c0d0f9894f08c9dd31cb2ce56b5e402f36ed130b80014b46d535c4fa2aab6381e6150d258d2182e718dafecdce3dc44db8be0e66bbc38e9b58ee06e4dc26acc8901898f6a8c7338bb0d90181e63d498ab79f81aca0448218654ad604878086b745f884a1c9b5079d23253a24934eec5cb37ca9486b066cbcda3e2d641eafa8c56a4beb709aba9cb9822e1b6992ab7cd6efda6d9c3a9a6b352d3735a0b0dfb56498fc8969614547cbb0f19637c629ea08973a69b1e911d7d1597dcd16481f695536129a4123665314bfa4417767217b4335dc84b5d58d18cd48501bf15614003f54ee87d47a50a5c4d3ff7512c8e9f35a8c5b67f5a3b2837162b7eeb06c0e4cd393b561f6302de9f58573bf05e73e91812323c498734320bea5e72c5ba5ad6af5c577379083a6786a02c353da65323b8ae3207ea2bfdf247ff663b12d1970d9a1eb2653d83a1fe03e6ef19eb649499b2253ad091f246ccdf539628de8130bcc23d288842ce5274f7013cd17db105c789968743df469b4af6f9d3d3ba22746a27dd254f0ecd7bb8636c43352619d8988b78031bd9da777195b5efa4beae091b9b654db6b159d5848d8ded27abd3fa85d6bec5fa1e01159ca8355284773375f9ee3e61b19715da1ac081d76708575e7c4c6be4f38e8f56677ecb0bc3ed9a4c28da26a354a92f1721c93f687bdb246a8d392193e02619e6a8c17fbddc9d308adb812ca0a7dba4ffbeb4a21b2001605c0523dc29045ed3a246b8f04ad8f62ebad386adf83ec621a06640cdc690104c8d02a2044d580cdf84654e0f28830d9aa010b04383b4bfe545b660143b70f4f0b72ea9d697748c76178a13ed3a383f75e4a7d8f99aa63d70ce0d3a4e6ee3a7c65031aa1dbfd24ca611f3b71e61666303c336b2e29aeef38b3f5ac1edaa6ef4d916692c95d8ecf225669ca0588842af2f7792ba907f866be4001cf65cd4d2023b8680ca7f022afbb25e89891dd925a4ed4578848806a19552ed73865f51e2ae7c9ce0a6fbc8397b43a54e686e00a59c206e2d5f9635b6f59765338c691ec003efe1539e15f4dd1757605742e06c8785b204d4132845d82cc156e71a31f3a2b76b560d8230116dfee2e903dace9bf7b45b526ae859c0bbdc0c0dbb3f10aeed67865f2ed4ffa2e8e8ec10ea74af8a213a51994f7a93aca7166539768c5610d1b7cfd09c02c2144e117cb8f09c30463da21ee9c5734b1a8ba7748b188a9a075fa3127bf5e721b788d5b84cbbde44d8cc9f0803a5590c7572a196a614a7a5899d88042d4d9ba8475cce3115fdba89e8254e843f463da266ae9988034c0453373811549a884298c9fb9bda9d89bd341302b1508f55d8c55ad6344c3e1d7546f08078f2fd170442bb48c3b73ccf5d2284b11a87d0153b9941f33fd2dc38be319fea066b8b5a92fcc209d51227541aeb1e51cd981b58e28cce41bda2ab555ef1863d70c945552a3152ce859640f20955a5846968097b12258aace87af20564a716ded815ab016a0983e52f40452207842abf0c81498488badd36d243d26a38d9d89c9ceddd437cb0569526612075b9085a368505e3e9e0302db66de6d8782a5bd8d7e002b0c6d0763635e8fa13b47029dfed78c28e18e00ed1f607b327d033d30ab85591d9844bec8d3a5ef16dd098a594e50b285c4193dd5ae06bb983c7b5f06c1620b9eb1ed857a0ad166c8a254c4fc780a0b6633a81c7e16111cc26c511eebc9e16c5ba84bd8d9bd166065583c65a47bbf7c7615cec1c7125c4972c7e638a583793a667dddc218d0cca35f6475c3fca0fc2a59793b18de9c78c1256c73a6fe32aa8ca15ec2315c82f1864800ac1aee855cc600c49d366fc7add675b7abf5ec0da28a3f67db2e43519f488700997ac8dcd131a3798a3f0da602a2c0d46606520c33eb9300e78e958e0f312a8639bdbd8a551f597c6f911116f3a5393c63466d01df82636a74aed39dd679fb715404a27c2034c8b32d6c0358dcb8cb928425f281723a42302bef015547bf5df7a53af70becf2c8a01bd6a313cf3a2ca900f88ea16589da34c16975457117570f62f6ae0abbdc3d4125dc8da83292c105652ae813ad499dadba0c97516d79909d504222ab03df55e799a44e95cf1c83355d7e0dea418ea32e52b20326c85c92966a7c28f3c4b7aefdbc5d7d52b1e79a6ea0c6aab1bead4af56ad30915c66662af2ccf35118f99a8ddbfbeb5e79a66a15b460b7865a99f8c9392692b3ac36915a6ca455d23469466af14e19e36dffb2480acda95a841aef0cb5e057dd2c31915c6425b9c532fc686d59053d20b4ea8481a2e0192467a504aaccfbb1ba00b0b5d6445da2490b3e26dd6795d992cf772ba7f095e13d27ddcf953996b014abca79d04a01136a4b093c29195561fd9e5ba218585ef2d5c84a68625309a4aa2fbc71aff06d5d7a835a57411765d025aef3254be1fe39d09ce85af8150a4dbd580e36127340835066f5edc52f1b2d13ec0aba3126ca7d425a28a2cd1f90ffc1ca2a5187c52881b361896f82c67807181df654aaca46cd65b4225b63e07256390a85cb8212f5210aef7c91776c148938a7b88c8a3de61534b81d12f6b694108aab3e58d910d1d4167409ffaa35d07a85009e573025ec112c573d73b8e00cea761516fa5c414df33e6ec04ebe90552b7c5ed5491d2e056b2a104f507e78f3cc8d49274ebfe2dbc68ff1fab0966d418c9af05cd922382d5c061a8e9a549370370658f82edf58cca1a83838935705b71787d622994f5a8698ec48d72e8d93b208cd8c5686477cdfdb5005ef4cf7980bd00901ab8e40982ce65047ecbaf18a099badc7748b542978ce0c10a164412799f0b0ee2f1cd6860bd5863abf0d8d2b11f21cd8b2092cbc3cadd644777c4fcd031aea2fe864c25c433fc9a90bcd65f9d2a82370db230e84b83c9aab7077f9682cd881aaf848b71dc3f25a8aa7d728b5d139c967a97fce9b2979fbce6beef66d119253d273ca4a4a07c18345783567153964d5bdc2fc53a1be62979fb26a46cd8222be9e52f719ffdc7354745caeafd5632674ca366aa1a84506bd266c51465d438db729d5cec8c7a14836bca701ffa46d9658286c917e5dd4a28c3a8317a5bb943a9dfac9133779ac9a53a9d139fc68db4a061d97b5f11447d8615bd8420f5515f752bba63a35e9d47bd8a90b5833edbdba5c49a7de83215e4eda537839e912f57383db714d858f9f369be201b840e303e5194cd454ce1c88ca97c8eb02ee6764fb91fef1602d45ead4d3bf36584b72281409e6ee40abe0635407bc0eb56f824d4f5d8ed0d268eedf0386b153081af136ff48cb11596694dcfd50449676624496873b4426c3ace1e82b25baaec7445f5963dcb53d255359b20115942ca1646ba8069ad33d321c88652dc2671e30a9b39cc6cb2abcb070d656c1d4ae4fd833ec8e415fa4f0c17973dfba98857eea63da953ebf60f069f862a087a7f8f2c43ba86650ea5a82ddb9417fa928c42c865789d0f018f458fb410100bd6f55336af57959d8d4b0492c5325c4fe072faac38611f5352eaac36c25d9256ed1a81ca001de1ff90173a44f68ec7e8b872606c6784d77489e3e57626e7d89e4f00ef8f41495047a42b21d199a78af5ea32e6bb4cdd278992efb8e6b28f71e92e906443dd6d5cb09358284d6af24748784eac724428befb8a44b3184166208bdec61e8a495b1148560aa8e95b351080c35c7567059df7336c10a6a678d71a2170aa2593645f3acc2d03b724a274095525552e84b525332e2204ae1979d3206dfb7bd3201fde23baadc623043be1c0e7773f52e5907667b9cb44d56aba84916675f02985aa0f90600c058898af7d836385b3e941bde232c72dc020867f73e67c5bb3d19d96833a78eef61fa2ab7f81a203e0fa76dd10a62469b02e72dd8ba850899dd793bdd218db7e32aba57afeb94ca395589da6e9ff45fd0251599ae15ea11342d3ca47987fa2c471f81f6146a7a7236f38c042f5618ed28abf7c6d8d722f3d7750dd0815886ca9806da159a2247494115ca5aa908a4218c3055c5e432abf9c942535409688a0657688a1c250fb5d5d74aceaf562d31915c6405b935d41465a8300886f66eb5eb54458eb201c5efed5a71667e728589e432dbcec2aaa223cd482dde75ae531539ca0a6abc5b2b4bbfea668e89e42cb3dde421e762b308d0aeb966d7caa3ed8a92fec920cd174aa07d0b9e65b5cdccc363e5c2ce33d8cc80a90e46b9ed7151bc9e53f9166f9a4f01d9734dc96d44f6d42f173d5b89a2e7fd1de237c78b9e0f652546f2d42bb8377351f928c29b679660c7864ad8eb4a40370f087b361ad8b706519f1cfb3c47237dd4880057ea6dab8275cd192173e6322fb8e9e601358d0ce1849d364a17b24b5e391c6acf47b7f2992a3146548261dd1aaf5bcdd0da157577a1ee825b774a09d79d92e8566b7472c1a0b8758398f75c71eb2e46ea3610124987baa7cc8ca93b22765860628a6ff60b74e885bff7b77e2024d6171288e04bd36a142179c5eeca559aeeb212ad31f96d60bf8e2af54b0156ddbf82556fd52200e1281bd5854d028dac92c7e485527093395f294e5898af1cafe72b795a53ff93194b7506235607bff846b314641de3ff24d651a0d5d898a14c04bd8a328f0451b140e364c5bc1ddd08f83a87e12a9978dd026b3e6a653dd74d76bf69f94eb9db0128bccb1954789b052aed99397ae0ad84c2bb8dde64334ade3f1fc40708ba5342ef436d6e8251ece879ba8e3103dcdd92158d46e0faf2ddd0e3ac7345e2ac9d0b386be246e7c3e26e747827f5377a8d1938a4642776fa3e66a7575981eee01aad6698191d85c805488dbd000587249b3424c65adc77e12215d35af29875a421ebfec890f152ee908163f1ada472b541bdadad4dc66f0d6a4d59fea42131ae5f25292675b9f7235de635b85d064bce982e6f4c7073694c54fbaa79292abf8a4a37921fff5bba4393f606c1ac5734dd6335755a87ebfd1aef228e133da072c2b7704c0f06679e4a96ee8d2b8ea98a9237f0eaa01c0dff987294ac212e1a393fb9b74404949d0146e902ba4bc07e5ce2a0d621a4850e6ac602b2cf701b2fe9141197211d2245051394b992ee922658d4bf9149398227bf0556369834032e600d429a1805bdbd190be86140cc990aa0f6cd2bbc8b1490f63abe0e02743d5adeb552707c7621ed28d08b39811925f311a817f0fdbadb215aeb437ebed39aa457dfc72cba5fe0bc356bf890aafb82a4233a147c7793810bdf0f08def8d4b3a6f7e916511dba8d21f4846b0eea665dff18fc75d26dc9e590b0182ad735362464e83685bd3ee907243555506ad735c527d26d8aff7dd2eb47ee13cb5cd71080ffb77d9c81530d55a5862c36717e598f526e4303766413e67adb049573af3636a6ade7a0df7018ea2394052ba29263c94af86088af454a9566816656a339477a2d523614d5096c4b0b637e7fd879610e137cb057cdb4e7a176370616df854cfd68896b825d1f151303bec4e8ef678c90323df02f475662be8b4a407d5f05b06a6621fd767492821dc00730d7fba5c7072d0994d873d948422e3e013de7961d10f20ecf6c71e5e58c1097b829f588b40ba3b44e1a36cb458ff99f4ca0f6350241e06ed87048fe5a02475f2350e5e774c366db5f4ee0e06b0402436fd86cffcb09ec7e8dc0667a44060e43dbec5c1c95f3847091a93e9bb0ce01e5a7054a53850d425720d6f50cd1ce67a0c0c851137f4660051a4431185ca59b132179cde8e23ddd207723ebfd62b1ab59508a6f6995dce595dc9b973851362378a257b623371195b89d7dd010e17170851d42a7a08012f631af14bc7a3b4b91b8504a5263a0c3ede64236084fda553608dd82024f504f79a5fcee25da4a8fa7ad9467bfb9465a25bd12cb045a7bd6e743c8729906b757506a9f69953ce795d4a797e8281b2e683eaf95ad126c6fe830eb03662ecb0f81b7bb05ea8b278bc4d6527e6bc3820272ff5b5e597b72f1d052b2b060dee64a6e2ee9a7f9246939ea7cc8fd7bbfcd62fface416675eb01ba2159414efc27b5ea9795dd12a0c13cb2c13eadf984e58eec3c3e498d00dcd630fb7c9edadfdf6c6b4a06cf9b44d685ed9bdfbc9133779ac6cdefd361dfef78c4e5d648ed41c36dda8b261b15ba849c81691394c9a55eea0704e91b0394cba40708e195d06d0394c5a66f7905e61a03cf95ca30a4d9fa0bdbb6658aec500439373fc6c89cf0bef739d0bbc26e8fd7a6008b0a6821f54a8585bdd8208c9b1ba0738bd1d2cae4e055d33db9bdb748bcce867ba413e49b67e01404819032f8cdd962c36c721eadbd80d91837da0d527680483802080ff47c6740f3477d6b7e921d86e411ca99e0d9622cfbb8cb0b5d9624caa29055a6ed1525ee395620b7063531988757d74441af07b0502cfb5cc5709d9839336246464e16d5083d99c5e2d6e698495406e6a1f311c14d47339e4860802ba9a48175081833706f4c1a50a91fd18a9a122663ce625da7c806e5b15b85bd697c0f0c60c8c7e5c07a9e83255970a887bca011f6bd6d3e8d3cf174c9114534d30452a4a1649b73fa8b5ed13a666100e9c1f5a9f07efe95228581bbddc6d5a25b7cf40ebe1d62d9d1ca4b399a765581a77000fd01c4e413374f726592fb5da296ca82f90985c7785ea844fec7d89e68471805bef8646db6a904e9e8e0fbcad474060ed0c97d0d6a3dc5637a9ad14b4c51cea6c9105b977f41a7c87e830647acbc73945572fe1a21a215ac6e403f55c83982564310bd26c44edac1a491aeb61a2c6faed2edd2523b536a6ee347d7ca2e5953b59012df69c9292328bd3621feae6955aecf3f85609b086c14cd94b32f1fd6a0aff74808f5333d4b2cfdc22f209a88a5947c20116f6e10494e5edb41fabe148a5a80459df59bd8b61b14615d842c3ec4a62944dc21c750ef8e68d9d30645961a0f2881dcb90ac1b7bc5784d8fc891bea01bd95643a4186049306523201f232311fd7887d7ef066147b64013cc958bf039e0838258abaa1bd68330c491a225646ff400ff76264f88a33b8753bc576eb8a93da29ac207b4d38423783b058051fa998bc13f6f13d274875b27ec2d66b4d7d3304a0580809301b4c25e0b535423a44015f978784003f94ec8407ef9e2ab9f56e270b541b66b4e59d42c69310ea9c606d658421f28b6d202e79ced6926a6631a618d05523ea8b6d2790afa0b5eb4f08645f9ff0a08968f91b75b59886a31d8227cfafc25dd67b9db7d7d86b64902db6dbb45a78a245b90eb503d5a44b5c18e2732ea21f726a60a1c8da187a3e106b32b225640c71e013297a74ac853c25ee47000b31dda1542283c82b1d4492f54cbfa16543960b17ba4e6fadc4dffa7a247543cf408979c0c9f2d7542e3c0fb65f75a44081248046ee1ea3d1f2e5b49eb6c425bd50f691af75b74205d5eee40ba127b6e127112f41c480d151d489df30ea4e51e00c501bc017a09167e85032936335c09adf504b4d1c25361ee3b906aa51807d2ddc677401c72491e74e1c227d34607d2d548b0df0e69a0ecdfb4fe531c48497a4549b3b5fb4cf799436f73704306d51efb98bc47fbf6f31c2001581bfd0d8b0e782c66d87e13f32e94e8b1a813a28b1a526b9aeeb07e8522ff5b0935c536fae85310aa0770e95186573cf7949419dfb04a5199f4bd444729cfc4634f65e65d6a5d344976efdd25af0b885352c0dcb15e547cd848752a120da516767d6881e918dfcd73052ecaf74b7a95dea1555216708fbd2f2a967fa16d4ddce4b1b25c84acc7da05261c0dc16ff3214baf321f6b979409a7fda1a8189e1aa5ed28bcd00382498ac60c68b96bb2e94278402c40d47418bebb3de5951dfcd12d287b43d29c3fad9435c8b15d5be102ad771d7eaab20d96a8b1adc1e0427cc0ebd9d0128d2cb0110daec30e5e87878ef8b8111ff96578ccc58c9e701112172b902ccab05ed52368c6545b856095638c00ae033acc8165f031a025102f070e8470625b350509159a8d98bbe180dabbab4d5cc6ccfae9262efd18715eed1bb022dc000ad0a906a9db18523a7c2588bd3135866370d0bae58776b33d7d09d8c2e8e4ee18368589bb0da9a43d9c433d0fbc9e4e7b19aee711227bf59a0b78f61c59f086fc6cd2b19efeeab56590786d794d760f99533261f3b82b4a8acf5a83582ce81e92a82a0129582b3ca12def1cef715d81e68e9fd91baa49d49096447dc86a10a302b14e5913a76f0218ef2a67bb2adc79195fc42db2a1cc81e76ca9ed1e9739e1e6f4037a8ee357f51c2d421ae8b5d19e3f20360dc22761ef47424e8a2226b15212d091ec7a181f39890b73391a7797e3a25620789108e832aa55609fa13137468c623596146a292e54519f5f6fec1870f828945ce1de8d3048b4e23d903e83011ed3625fd85a6dc12b909860c66ad491aeec079f0cbb1ef370755d33d5154461231b7a4498b53d97c8d95034833ed9ea84e6b6310f13bca05eedf9146140fb76ee432e8dbea7ad9cb8cdc755147eff7c88311438edb121077ef0621df0d99d9669cc2cf3cc661dde946a31924d9cd33617e90d28ce5e960114f9d594791c0a2e2cd53aafbfb7280b747999d5a27ca5f12ded28d16e5ee6d19d88ebcf4f4b3b6a321cf100b7a48beca1e349cd73ba03bed9ddc33fbde3a3e4e96d0b4f6f08cbd47c4fda12ffc7fda2eb3b6135b71062de125fd602ac7a563799310176a67dc4ce0a78d769a4b5ac1b164b3759a6dee52bf2a10eb3f05a8aaedb9f297343146621313b343d62ed129d81ede3805752a1a505964279a6b8e04b5cd579810aadc47d9bc424f37f8f18e66b4bd379853d3f64a7784c64f86e628f9398d022eb4837f731ddac8a01f2ba39a60524a08b1adb39c23f586cba0bb5c11ae2120bf849acc292dc52029b6318bf37c6583b126a869be2ec61279b34c664f889d3ca8f3231ad28e8b13d3363ac5c92af52121a4d06de77a6ec2cfc8d5c9ef37c51bec0cbb3259b9ebb3d2680cf54ea7873cf5cd3beb4b0c75bbc4cd2f37b49ae41ba8e968002939dbdffcae587840c45f9ac0d1458cc8931698ad6a00aeed453a61414488d5b0355bf3b0deeb8e99e92bdb55d3076b09fb1291141e2f9c8e113fffedeb39164877bc4d1876634f65bfab74fc3d47ffbf6dbdad11c639499ae3373cdb0fe2897f5f27bad90fb6334d958b33fa6ebdfd2bfad171b7ba4afd9c27274cbf9eddbfffc2df3d71b676d1a96f3edc3586befa67ef3d7cc9f56e6af373aa4fe2d909ab969e8966e6b8efe71635837f96caef6b76ce96ff9ca732ef72d5ff896cbfe2d5bf996cdfe69e9fbe5c2766e9cc352bf696b8777fdbf3fffe3e6ef37cf37ffbf9b8df5a17f1a96fef1ef7f5a5e46c37274fb531be937bd916ee975c37474fb9997fedf7f5a373799bffef506d36ede0f37b6e618d61848ba113ffec737d14cd372986d38ba6d2caca6b5dc38fff8f7980af4f5c2dc38c6c2722bf112bc8a9ebc24d5dacc23b5388b9b85651e6e0c6b646e3ef49b35277b7db39b18a3c9cd44dbea3773cd9ee9f6fa8f9b7f3af646ffe7cdc2bef9e7a766aef57f8a4627dafabbc8e4b5ba766cc31a5fdadadc58aff9483813637db3b4174bdd760ea27663fd5d7cfe62e53bc39960cd6b67f3612c44bdf8e3bbf1f163d5ea6bfdc6d1c66b512bff3354e1fffc5fd753bad4edcf853dd76d51adf73b9edeff885d819125846b70ab991bfddb8db599bfeb36acdd9b9bf9e2c3f83474fbdb8d57a22d9212abaf1bd647787daf628803fab5b1ee7dc296bd4fbafdfdc4e7f5c276122afd306c7d1458ebbd85ed286eaabbdce3a987edd986557b6293c64e94bb23a4f972b4b1bf00bebaa6c2f5febca5e5d5ac398e369ae81f3c9b26bec5b706dfbeff8c36a5fabd65bc0eafebf856e2a7eed12d749abb7e6adb055fcca2a94ff8f0dd4df51b7c5f2c4c5db392db73cf8ab6ee681f9aa3497b69bd84babedd884adc356deb5b43df45d2c59084931d5bb3d6a3c547b0a213ebb6bffcd01c5da263641abae5b437fce45c58cdb8f507bcf4e3db0da6b82d1b8ea9276d2fddd10c338ea5f3af1bdb4c2aa739495586ceb8d04e3fc190f9f7b1669aba7d48ce2033c9f8f5e46fd06bd69bc42a98ad07071e063034a86b7db4b03ed621168b1b2a32034bdb986bf6e13b92159e9e1fa135b248e267ffbf10f1dec68e0cb3a5cd93d654f2427c376c67726235eacec43246867348f83e5a6c2cc74efaaa1ff4efa385b9b013be4f74633c493abae6bab6ded8fa5cb79ca40df6a9cdf4ef8e91f87da4d9ba6e7f37756bec4c12f2389ae32c1649352c0ddd1e195684c3bbdf35d3d0d67ad2576767388e9ed47bc35a3bdad8d6e689bd43361cc78591913f83c436596ccc8f9b77fde65d5bebe5e28d6e713ef9e1ca86736d2c2fe033cbeafc8ef8d73afbd73a4b5a6717cbdd3d38c862795868b9c5afa99fbdfe919e5fb0f87fd5003e6be373a39758f0b26e5e5293a2af1d7b7148aa2abe1c5b589fc6182546532aca078ad8b676b8597c725154bf596ace64cd45e7112a31bc6ba9b69e4436832c743f6a5c9e5e7091faa6d7bde7122e974af9b88b3adc9f3c67e2b4b9d58c3d4d0827cb15ccbdd4843ae4deebd6661ebd3762bfd5d54633d7377fbff9f337b5db27f7bd3f7f4bf3f48785237d7ae83c7f0f7c6ec0f4dbcf13cd820c8d27953cab4fdf9f6fc983c872afafd7def77bb5d7933f36d70f1bd3844fcddef787fefdbddfaef785b72a7d6ae2ed05296a3eb0fbbea2baf4a87be99bfaea7e8b1987a0ba0507e17eb1432a3b03515fcfd1ac0fcdfe80e4de337950c89312fa761bfcfafdd6cd50df98a6f858efdfdf4b1f161bbb85e99dfed3f7562c81913b32d248d62328497a4cd4a6e8224951799aa82a93b9f9fb17fe8382ca62b481a3e807aa09aae470bb6d6c5decb817cd36b47713260ab72cdf82df62b6255fc3ff7eae3af742e5d6f6fd3bcf26f8e49fbfb99ffffccd3bc983e5bf456a0cffbe888cf0ef9bbf073ba4688e56b7b5311fdb486521a13a3242095c3f99e79f12774e0b3ba7449dd382ce0931e7ac90735ac4392fe09c126f4e0b37a7449b5382cd69b1e69c5013110ace2d896b57f93258dc2522546be8e73f2ea124f4f3e6ef7e86cbd6389efe512e201fdcff5af2ffdf5cf27152cab995f2e5a58fc5234b1f93433f2fa224f4f3e2a51f514e45167f58cb13a7e389d5f09cd0ef9cd1ee9ca7f2da815f872bf054fee10f91840b298a24dcfc5dce74e9245cc681fe8bcdc9d736c33a5c41cc9ce08748c285144512be3627e226777a524e92236af8811112350414fcf12d5eb182625965b2de3ef9804b3cdb1235f6e71e504f6aeb2fd1d57f6939ffc0428e59c2d2223cbb6c2379dda57a7a914aaaa258c93c30e749b3775ee293dbb97a74a4b2def04869f2df090394909b0f11fcbc608c7e916477b9e42093f1b5210cad30294dfefb7cebf2df970da1a7503bb7c6a20d7b45afedb3e316743becd5e4fd11dfd568be9bbf833eee4c0fbfc8e5fd925fe8e1455cddd34a5eb27acfd1fab505e8b805a5c9c004ef8fc4c908e5bb6032ea86f5d100fe6fe8eb48a7f121dedb73413392782a02157637ba7d48e8387cf37afd2917fb16ac25f0e37ca3811f098d07f23ce9eb8de9f02e49daa18de5841e56c709e4797ffccfff759e389930fcfb70e1fc5cbd5ba4a25f9987833ceb2249faf3dceccb792fec2b9cc103cd8caa06e36c95120e775efef2eeaedd22dffcd2de1f09f319cd7891fc80b2e50f74cfafe0f2fecdbd32dfa4f2fe5f095d8ccb7a853ccfa7fe591b7f65c13e6be3eb16ebb3369617eab33616ff242f503fcf050c12bbdb03aaa30c326ee6120de192c659547eedac8a62df6efe820d052a0bfcf8c7bf9d9ce7b82249a7959c27866f465ef0e21869f8461da58b98e6b3161aeec45c978f9b8605beb925c53f098313cc74c15221a6e92982d6f585b0793bdf89984257f5c92fff2da1ba406a7277cf95e42cc034e69769bb8869a2b87bcd50844b5c350ea2f0b7b88afca4e4ee2797111dbf407c17abe58a2e07b27f7d2dcb549f5fd4e1dc094d3e6be3e4ad7d56047ed14c4312cb16369c1f111e1aa33abbb4aecb876b1b5bfe5b228d71a909437a4d1509b40ae92879ac979a3339a335d09c73fc12f25c211bf1ecdfb014fc2fb961f85f42a5f02de6a8c0694f16b40fb1df7c6554dc57a1e78a3d74b471243d5e3cf0f9ddf5f72199c050e61853e86411c5a7e13a69483e0a82f5047f5dd070f0d7897b949fe9c28bd43291c8b3875452f68bdf6002157c4540f50a7f7162e4b5232d09e9c705ab22f0e3aabe4b22fc979637ee5a1440c32b3cd64f23b9373229d70da65cf25ba4aef0ef8b0808ff3eb1dee56c17ae7879d4622896ff3eb1f0938a5c793383bc3f30f971b31e9f537e11c0f1487a11f0e9fac24a9047d49fc833f32e653c37d757cd728018fcffb9295d7b648090795693e0153ca7a41c4df4d16cbd897ba63f41ce1766405e34623d883ffe117d5e43b1d5cbd10b7e393758de1f17295d925a49925502b96495ac44f0b3363eb3adafd9cfa885f8f9c2772c3157bdc9dada52afdbbabe88e316be98739692604dd7e8e6e4723ebb915383bf92d482c92512d701cfe41fb11e4dd8d904b3eb9346f1676ce2cfb82b9cf15638e9ac70c657e194abc2794f85338e0a17f8299c745338e3a570d249e13295b1bc1a4e48feab2b96f85784f7757c0df7c6da715b4ee024aec529bc229db90106f25e4edc482ef62d584be0c77902033f3ce3d8939c082da017b10f54cb0493f753955cdeef0fbfd09949f0fc4de73cedcc2c04335fa1f60d943bb920dd26d4fd15f460e6ebe9c17217d1d31b69e7d6a89cf57a5a78a98b28713d8593ccd0633d892faaf17aa2dd921711ce4cfde23184bcd7d303c5ce4b17a81bfd598fc6a2ba2ba54f57e52bd520fd79ae31e9cf539700cc71e92d2086a4d3aae768c6cb4c45fc725f516460c9af0c7740da8714ffaf73f3ebff75591fdd951c639591bcec85edcde67d3db28de509e30b394b6417b8561827c631d1b523a1bd407e5c4fb2ba753d091d347f863cc442978080e7d705845e4c6188b471d04546f158d6299f1829d7554e303196025fd59abbf7dfd3ca74e949325696354c3e2b32593c25612f87b39d261db2041f50ad0f7d1fe228c9970eecc905626ed2ab5d0279d18b4fc20534f64e33d7c6faf74b49fbc964254cf9bfee6dff37dfdbfe94bc4ac2802ca756db9fe167a6b065f46943f2f30b52ca9dbc24af80ee706c5d8b702b04a80957806ab710b9f0d32be7391f44f23de2375f93e5804e2e94eb843a2eaedd5363143f3a67ebf5e9fc253ab298fefe9a76e2d4bad70fd709fe76e2fc123e065772bf64e6856e06d1bd9470b2f2e3f35b68040c53970aac439fb930b30eec5e4fc31ac817d1b2fee9bf1d7bda42b98064b9e80beab1397d5956da1c72066f6bfc197acf0cf6e4dc736664584e2d0afe3df8826e1c93e6dcd3d5c4cdd2d6f8d017df478b0f7d94c088c52b7a62869df1e1f3db60e5c10328f8edd3d6e6e2a21bf7f9dd70e23f9e19385830a7460e32848c0f6c5db7d69345c251e931ddd82345b0e9d891d1df97f15fb64e425ba389b674747bfd3d36c799be5ff066f9130fa933c4f8e6be3fc3c8e5045f3b3728ee0533de1e857fbc989b5f2fd14618c5af3f53ceda69fc9040ff15d12be1b0fd7ff7003c71f85d72f09d3cf48cf577e449dabb1999a5f08978d96978f2243c7f0a5e7e02feebf4fbc2e9f7ffeac99770ea5de5671c3ca82ef64b099c2b97b842864e8073c6e3f1bcfc42608158dbe4ffb4f3ef675172529713484ae4e23f593b109ac49f70b09f25227c189c26d680a7c19bf1cabcf9b417f39b3f7f1bdbda72b232ffe608a2448ebfde68eb9b275d1b3964b930cdc5ed62315bbb656c9efe370d3efc6dc2bf88fefc08a2943b683f05516ab4b0d64eb25259598c6efece47e19f82f1e27445f2df2cac9b189d3cceaaa792c71fb21e1e5302ea779ef41f7f5afffcf7042a2f262f48579020a188777fdedcfcf1c71f914ee1b7ff1004f17f7effdfa7462a9eea44957102f191fcbc0fbe8daaa0d8f8c07ff92e1029de0e4d1ec158fdc9093abcbc9c06d44d85da77590bfe02e151cc320a8bf863639bdedc8bef28fce1df4b6f25004aa037295c3271ff766511f7b7247db84992bce1268184e1fe4099c2fde549116e82901ba4591792a5449077e6bb29e294f732c0b9eeb5aebf2f3d7a1daf8c7c5a075a0bc8aa7eabee5807c6d7bb55066a10326a5c597f9003f5b84de3891c53ce5f61e135e6150608f59345dde1f48fe4332db957a5932d272cf2782126699907737b0b1d93c2cb5d1ab8c0f0cbf31e58126b79d3f8f5b8e3e1ab962f1abf0b073a7e5c6224b484319172f2f168041755fcd6f7a7461a2344d7f409b63ef47ddc6c5f36af117128694abd8c309b81951d4fbc4f8bc7a9c20b4e922d92490c893509f4895c9cb8677fe2a31c3dd4649cf8924cca3547cee5c7cdd961138f7da294fbb8873fbdc73cfce93dde89aaf1b14e7c731fe7f0a7ccb9e5c737b1cadcc7365191fcb8e6ee1b784c132bd57d3cc39fe2b1ccad4a663b5f5a03179fafff3a5bff0b9cad7ffcf147e80408940a2884128ed83ffef8436298274f55de9ac79c4e70f63ffef8433089b3c7e71f7ffc11d8be4136fa2708adc927e27f6086f8a3417c8ce5bbe25b94e1890f49ece7845c7a317b0f644e66f16745e31fb984b1c57cb9b07ec52dcc87bc75a183a54198bb1838e1bc7ff93d11f5f7bffd9b3b3261a8debf883258f6df7ec96d48f4f0736301f8f2cd66ad4768e795f11b6107ecc7d6ffe35be442fd878beec37f896cff1d294ac22f4ec77ff62cdff8e77ffc69895edbbab3b1ad68bb9bb5873bf433dafb4bd21ca7e501f837041b8f3fcf111eead4da0865fd0b12f63b2a4c1072422481ba27902219dc04d2254b9b40ba676213cceddbd604d25dad6e2031684d13f82499d1045b0ddacf04be7986338154c9622690ee99ca04eb704d9602a992ad52884af75987e283819b1f21ea30ef7fe389de165bc64e916733ed6d4457cdf5bb2c2d0b35ddefdec97f7313b094fa3d2468dddc042ca57e0f095e373792a5d4ef0131ece6266027f57b482cf30ffe6feedcfa1f82d3fa7b546cbbb909d849fd1e12e36ec2a2dcb7d0bcfbd9bc29ff3d20e8dddc042ca57e0f097e373792a5d4ef0131f0e646325bfb3d20d3dedc048cd67e0fc9b83737f233dfefe16bac875b888bc34d16e7fbbf5d77ac9f396363386f1c67f832e34d40d44ec77efd61b6fb03adfd258177feffd9fb17ffb66d64511cff5710dfdc5eaa9529a7a7dd3dab58ce4df3687c4e5e1bbbedee8dfc4b681196d850a44a5276bc8afef7df07ef193c284ab6dbddfd9e7efa89453c06036030180c0633dd79aeb060eec4734551c573b374488e9fdefb1f0efc4fc081fd0c18cd978f01b329bc6f542dffc391ff8723df0547067478738e8c1d66da3cd27a0272638ebc7d6b5180b36ee4c8e024bb590e760a2bae2c6d5c806046c87d6da4f53c2f9346a74e944f25c3c66d6fe426477a6f1e92f7c74fef9d9111797f86b88ee3d1bd85ef4824ef239d3fb025bb8f14d01a3ac748a30d969d85b4d50bb874651f546f5a97445879d24dfb105816fea9db796138e02c6275f26fbc386ed8621424f46d96c866b1c529ec175cfe1916ccf61bf5ffac2067e46e630579d9bd937f9b2b689716a3e03ad86605495fd71d97902c1da9d5e323635546526b6f6c3492edb3a82aded6345a0ec0dd51b57d8bdfc244eed666149e906e73d9910f76e680324ddbc36e38d1790e73caf4f5585dedddd7912558ab32cdc4930089288a84cd38bbb2d45b63a67a0ceea34b29e23f12c9d3103e08a9b1b80fafad0801c1368660784c361c1d30548061e391c223772376ddcaa8b763d1b7c69cc34cf23619f276ad449ee5b779c9826819ad6b16948b906ee55e1f2dc3bead8a356b0182508b001ef0fb868afbf8a048d6bdcdf77a863002776821ca8078dd8c343c4150fa6ed6cd8963977622df5477a48f0e3c1d94d35b721f6be1da09c5a213094ad389e491fd7f1a82b9155ee209f9d277b36e8960b66c27f2cdfd4682d13155daa84517b258899e341ddbc5cb28ecd975afeff5d47aefcc03f36ab0bad1a43a016dfa56fa0da6d385ed017b14590deac913e9a0675c58f1cf620769dc9472a57013bbc659c364bd411007706f3a137e21d813cc67a7b9b0a1fb0083d9b0e5e96da663330bd68542fc174d4e17fe7a77ebec3698a713aba86fa5df6c6e2dd81eb060662d26d9796251941dcfe4fec61d1da152d17de1aa4ab86a323eaaf454a1a044912a2c6b810905b68e204c103c97f88cadb4a48ee73f68d414a001dca50e74c0dd3a4122f0c780ea34cd1cd6a11bf3a91f082ca526da3b5bbb4cb68fabda53ede1a920cc91566974308dbb8549eac4885ba6e8fa661374ed4c8fcb5f3da3db7d6af8d1e99724f799818989d125a2fbbfb922abcefc6d48eeff76b78758dece2ed3a16bef3219bab29c0a0fb0081c50e158769f0613b729380fa6886f224ce4a8e04cdcbef617a0b4cbb478426c6d312f567cadbe2f62979a197778b7635e6c936f635ca7c9d4cfb458869761dd9244a11adf9549c1b05f5b322815faabefc40f838c098cdcb6ab4186addab0206429b026fae47ecd1d9c7a97882acf57499f8892bc42cff7e605c90af683a64d2b43b5b5fbe2b003996dbd3e60b0b27e203a1a5e25d6b0779f35199b28385f2a76911ce5047fdee6aa902ded34ee762cb32d461c0638eb3b41d1d4285bc3b4d5f87a227eb50db7a73818fdb77e3b7fe765a877b768796eda3a2f1e94769a263d966d21dc3a1f7fc4fcb5c11493dabdd5a87db6366a933cf1cdda66da2e0ba659f9a8b5e778836630f456a275766d34765d81c14874bbcca637485d3f98edce636822ba4c228adeb68935faa6ef74abc798616678e339f1c7c9db6542dc107a7d7f9e3b15dee1dc380ffee06ec1d9f0178fb0d1899616fca1ea228f918757c0f03f4af5cc6300abdd99e786787f3b31cf96b87ffdeead46ed13d6e1ee2669c27288887e677c4634e879a0f518d60a6fa7670dc7b5d3d541403b2d34aa48769d669923b7db21178514dce680abe30cf6adb884fa600bc773bb9393d9035b0f50a698328cf0ebfa64a61db56f483ce1fac6d01e0147dbb395837d270ee0d06d24a441f4bd970c19f2069488db8b529e41dbe5fce709a1b2f59af70440ecfb72ac35eea78e8d6b1b55eb4653fea3b9c9f61ed0efc00a1b2375e329dbf5e08e4322f6033116e121de19efed780074ffd53a63b060273ee0096f88dc22b730034f5b2a1686660b7857b09af1352e2a841845e07178584317e016bba8eabcc3bb0bf9412037e3191092cd35bcad18bee1a3a84e9c8357ec4084db901fa2bb4019692a5734f7cefc94d891062de2f315114666fa770792746811fa646aa7c480a7a70e7478430adcf9e24bd406accf06175954b8a3e0d37ec4d025e095b571a067692e359544fab2da94d5d5365fbe38711de129056d80c855103cae608f3aeb3b616d01071137e17a3723b61bd19a4d6a614adbe5f60e86a16bb9c283c5a2fb763448c7601197b78b5bf501d940da0026b9d6433ae7e99cf36ed179a968bd4e74de23e24788be3787ce2b43ef9b42eb1da1f37210bd16dc7494c3a3b8d399ce1fd573ebedd613d3b3efcb71ec6a7de4d5c11ade1f5eb1237d82638db9d40911270abd187170fcfa739ba9b9e139ca3790a153cfcd26ce7fcaead672b46956364e2b8a05199c4b1c31d27209831281039876cf2f5bbb7ce1cdec3497fee89c5b4c9b1bb2b31f08f9a9d8bf7758bb6f01205266704e4099e8bef0ae6b4918207466240af0721b961184bbcb68fb42856e31d67690d0be37f6a81a67cf406d71238d627986afa451317df18c52db871443d8ede6d81fdc746bdee3897bdaf7e5587cc63f541bb90b8e6aba718445317b84456ab71116656f34c256b8d69d47184472edfb7202238c87aaf3089f4c9230fb8685ecd16569ddc69695bcd1c8a2c0b3db183dd8d168fbfe58b6dae4c13326db7305151076e3a8aa82da8f9a376cad9175ec88b3962bb56e93a12bdf64429cf8bb3b133b8abbdbf7e70508de1ee7ce24cf23e46e9c1d5eca1efa27cad1cbe681e6456f34ca3858f00e746f2208f70311886dca4743b3a58a43dc8bb72b3944994eb6dbaa6c47cbedda366cf03e780a291ab6b36d805dd95995600560de569900022ef7bd119d914201cfcd2e13db615efd372b32cf7bad72abefd10022379b949bcd8933252d33b2fb26137c0753c3c0c9b8b4cdcc446a376ed6fda50a0ccbec1e8cc3519efbbe02db9f9721c8db6833f28fb86fb3d9ebefc9001d1c31149043c6e050739927754d9e555559fd502e8b34a9ae09fddcd02295713d62edebf53029aefb2429ae8f44d73919544b7676891655b9a8872cd3e843960b2a3318565c8b35cbeab86e18018cc88a50d6ea9014cb3cef8b8fe3e2a2140964fd10acc0c5f23ccf2664a250799aa54f9266328b24088e198000f1108dd2e684b51be935cf4bf7d117ab2b53d63d4ff3152d525a451a72764122d3a558c3009c653010638be20f489a89ccfe7098669747e69390c3d9b74727e59c36b3ac98922bb6b0aeaab298c68783d9b7b8a4f43c40eae63aa7a3d58a5ccdb2869e2c92091d92f1dea2a2fb5755b218ef91f51ad5246465634fbefa8ad86971538a4379d45be3ea87e715196c02c90624d61377d224934f08cce1407600003a1cc0f150d42327830feaebb29a27797edd27bf2eeb46ce0c99ccb23cada82c26879923c4c93056f96a6ed14a11abf7499eb1c1960b46c6ae392fcbba81616f3ea802799926f50c66adc8cbac6e8424f1aa4c694ed6aa701c0fe62ca51ee459ddec0b296220efcaeca03a3ffef5a5ae37d02162f6651c1edf223e69927a7642abcb6c2219aca45b361b6cf5f0ae0d5147d99ad621bb50e9acc89a2cc9b37fd0087a50ae1bb2c893e6a2ace63f55391991825e919fdebd8caeb2222dafe2bc9c7085515c56d9342bd4dcb1a5726f5195135ad7312d2ee3d76f9e3efbf0ecf5cfe4cb17e24d1f8d4664bc97d24b9a970bc6e7c67b605d011c623e04acf05ffef297bf8cf71e32fa387df3f4cd90bc48269f62f2d4c020f4f3824e9a9af03abcbc76fbce508498bc7bf6f8c9e987c76fdf7e78717afaf64422d4544b8a30b170a9caa69c9439c767d6348b7ac8a7ca95f8d4682ef928421866bdc5759e4d6874d027fb0f7a0f15aa709e6331a9721ee0cc1a4eb7acb221f9787fb5acf2f540d2cf47c8e7c44f39838cf618fb8c11398d50ab0fd102f3e0e3619e92ac9c97864aa8b6568d1e61d9c88f7f7d193b7575172fd54689bcb828d0e26f3c4f3e5123e5473dcdfcd76d4c1fe32daf8837219dd3465c3d4ab3d91159ad1f6ae6c517c33d0183715c89dfa4ca1a5a6589a8f366410bfc9c4dc302fd0177fb51cfb4b0466d29f8cbba29e74f642b1af660a087ca2a125f94d5b364328b14666474846ae1dbfff7aa58fc895e9f9111d1df9749bea40f41c535c63534d372b46f699a6d5b0530a83b9382b25ae94c10d0fee776c8c282681307ccfe772511350bb74c2896619533da3b518da54be8cef654cddf9fe979ec53dbe87c814d5e6f4ce52e3cd037cbbef6df90c2c1e8df1a7dbb56c5d620ef4226f0217cadaef182fbf775b482bdc8d2f5baf750cc5998dd6e842d4a6d07191bdcd6f802520869f5a76c4146244ba51458d0abf11e794498344886e422c96b4b28f24da083579f033643dbca33ee083b097c136a5ee45c3fb5eeacb86558890bda4c667f5d72316e48de8ff7f4e48df7ce4878be5cbf9ead2dca32b7d4a27281d3daa42ad4b9cd40ab014390dfc2f41facb342fc82fc46d62dfdc52f84dd56acfc1018f5d4d505a0733654350fc3823040911660bea79d5e90de822d809d57855ea86ea910c8c04b2abebd1cbb8b1fb714a88cd6b5b1aa9430d7adbc47bcf9f1109a480f532fb677710158f9a1f1786a197f3c0ad33e2c6a913bab49d66d8bcd8e0ba2ee40fffa32b6b28e51a4288c820d05a1c14192d6d1b67de1fbb010599db0d0acaf058b30c3737100c96dedc3da3bb4edf148c91b07e9adadc3fadb4ec089c7cda169bc43d761fdedfb7e6a7bd8636075625bc3a6a6db6adfb70d49f62937a1f0889cda5ec9244a9bc7c2d4bc094aadccc50ee3c65a76c3bf05f07380584c43ce981755c4bd3621cc6f264f0276cbaf4110771b518f562de6c00ec56a740c678fccf1409a9bba05ad5bbed041c236ac46086f7534e09820eb9bedfae9d8cdf87bd9622e43089fc0b7659e4dae875c3a6eaecaead37e59e4d7e3bd6dfb605bbcb0d6bdc632bbf51319a1b4f7d5313af1cda926e43b190c6158b25b4f8d45487b377d7620b7dc0d6971b75b3f808d5c7b472cabb83be989b4cedcad27c09eb2bd279605e56df5a458e6f969f95391d28baca069c41526e22e97ff0baf5d3fc459fd364fb2e2cdf9af74d288b23d702d237bfe219e278b9f59662dcaf4f160586d82ab46d8d2e3aa4aae836df074d64eb425685e919fd9595917f052d5c55561b36834abec326928ba97ef9195bee7949785b458cec9d3ac5ee4c9f5ab329557853f5659cae7e865568b29fd25c9f33eafabef197955a3f6133585929e57310728fe294f3efcb73e99f4751da9b5b5dac88a865617c98492e397c939cd697a9c8a868cfe83f73a67b920a51d08a70101c7ae4888a43408cadc0bb7dcf57203893e5991e7d24e45db4af4d5f9899aeb5f637d21abbfcca6b3e6bcfc8c0aec7377d9352ca722d0a3628b59d994fbd20944ebed713c88e3c1a4ac68f01a190cd7dbaa5c48d335095bee71aea74a6bcc5198fd9f337ac5adeaec8139142d1c911151462322a5a7f5aa02d0fbc9b2aa68d11cb3e1e8939a364f40c21919e9113e2c96f3735a1d4507628dc9fab91cdde3facd82161cc24b9484609c8bc8794711d796a95b516d7f542e68a16a47f492dfa373a393f2fc57cbec05231a95e7bfc63cf2bf62000e1e51532d2910c375a393bcaca96e35d8c24118b2ee8c0d7a5a36e5db8a5e66e5b20e43865340f6c98310a4d7f473d311ca37008a992c4ecc35191161a721292fbec8725a73ce1ab19f9c44a2555d4db88e9bc6fc68ffe50b19ef8df7fa6492701b2899c724d7750f5244335bcecfb76ae4e3fd956e67fd88d71fb1c9fa681ae561e087e4415f071e7ca05ac5663ec8c4e7502d69d1f1d14ae0b62693325fce8b7ab47af0fd9a94c5933c9b7c1aad20f5ad81c9cda14a34a2bbe01ea395000c2c6d18b0b2a6a315a22aab4036f9c4a862b482f4e19661f32dcab05f201f4ef56805bf40a18cd3e6688517a8db8a8412f11991e6256c2422d137c420cee2ba9af4c978efc3799e149fc67bd05689cfd168f597bffce52f3a550da23135e2a6730f21e717dbdb222b0a7e21a219f9ff3dcf9774516545f36bcd196b47d3a00ddbc5b38b0b3ae9b6736ccde3b57112b2ea587beac302b8eaf10f494dc5fe605514564db834da08408501ca086d40ca0411b4b90a6e3637da66241be0fb8384873686b749d564497e18d8048f8ea2d51aed3b59fdb24c52eeefb3a6cdb1fa8240f12623eaad0813ada515639fe4a216595ba637f6259ae065f3a499cce2455225f33ace520559135514f5c0b525442b920d21432d86096371fc470c9c5cf3c47b1c45a3837da81ff1eb118cec8a92e7f7c97b9673a610dcdc9a1e4da0f33d946b92d4d93fe86825bfe293e3fff7ecc3cbc7ef7e7cc678a4c44a5c375b1893c3a395b06d9cd3ba66dce9505770b9b6b6ac94bc7ebcf7e7ef2faf18f39f27d5342b58ca0149964d39de032696877805483a1bade40f6967b5eec689883c849885b46c326b69cb1bebb27855a6d94586561d5fa61d598491bbfb96f80ce135d70b29a5ea45c9920c16a7ec6bc4fa33de2bca828ef7c817f125235d996f5a97f95268d3549a0e54ab5366492d4f0c262dab5f65758d80355c8ba8bef83dc7294a326eb140317152c1dd49ceeba64a26cabc5277ec50d85a93919000c5d08c8061343ed64e69c3073162c333b4c7470f4e4f9d3ff42abdca9ac98cf06af0a94952535d69a8c875bcf79a273cb48aa9a10605dfc924a7289805581c24db55cc24810acf75a25d1cce20a8f022a9894eb7eb801906558e6ba293ed1a8200406131fd76314019a02c3f98127f0d4838a0ca5b90ec34a2e80a3601688d582f4d1cca514b59905c34979f43cf621fb969f1b3df96495ef786be63b0a13005d5a6b2103cdd99953c38870af6d5597bbc2712c67beb871b9a785d369d5bd1654143afcb86746eec477e6d529dce92a24373a0346850a61296dca1c997b4ae3bb6a78a82c65852d7968eebd7cb3cefd08e28085a39aec9eb9f5ebeec365b1d1b9125ad99ead8cc7131c99729ed4213aa28ec8e4cead0d0b3cf9d1b524521917fb61bf22c6ebdad78f68387be725caca30dbe2ef2966c610fade5e5e3218b4dbc3ff3562a5561512b504a0edbcf5249098ae8fdd0d9f1726a50120626a8b7604b9c6575bc3dd7c2b0f9de9b313e4cce2b9a7cda8231790191a26c3a03438cc70f6e2af94ac3577b47b886bbf881e68c7f6c05517191409f9779becd08b6c22a9bede019aee003a8177d476866e97ba0d1cf9365ee8596d28b649937de5a708f3724ce978697bef583b2b9ded447be6d5dcc093b1e75292d871dac1380818527a1794d391eead683b720ae3ef4eb3071e3213c549123720040b30e660d9dd76404caead162900148760832c78df767bdf707673167a7e8858d0b50e8eb583a3fd8b21faa9e3857d96f6eec4e7390f1af655644ec2437deebb943c0187479015a95f69562ced02b200cdce9b804bab13878fb63538edc8f3ede5fe9198ecdd18241e0078535b9bfc294c852407beb8f9e1bb8296d8e5397219b36c5233ab811adf765aa6a0dbe13fca81f6191244d4577eb471e4197366d326d1f6d23f845a7217abdf2c02af2502ff42268067cb1ac67f2662f305770fa099ad4b17e45e8bb78d2bd91c7c5f6bb275b0c58e3e3ff2d9ded59831a541f7db176798a8d38d47cc68389caf4bd406467505d5bebf0ccc1d97a402c89a0fd5c0ca50baf240439982c37df7c26f2159762100f1a0ef3b5c4a3f88a4c3717d4f655983b1a9208b2f92217feff02042241233a81dd306b5e2b0e3c28b50ce6dd1016bcacf56b89ee8e04c19a13c579a77d57c64532a78f500abf2ef9808c4bbd73690ef96df40ddaefa37dad1bc12f6c4dc246b20fd5b8ab05003af8fecc2926890f765c95e934a277b146e008755b29d698fecf7ad965bd4825d71d2e961aa9d136ae146ff17f8165620fe45dac113d36dd16081c4ab43afcb7921d17c4bfc1c24213779a4c5bc9ffc7bfbe8ced672cf27bcbe5b07101fc1e24dfd29ded96c0d8f22c233a6cee75b0eadef236831ccd3482601b354432190d11ce57873e75cef3b41300220b7f68e0cd81ef80e0218ebb58d2028f6eeb59e3ece13e6a04ee96ff8071eec6814c857fd5a392ba256b6311b50c1b2afe76db162ff0eddbc67d51bcfffda0aafd4e1ba440402cfaa6427a8fbe78af0a527c9cc33efab9a4eb0cf05d50ae19ed6e848b66e75f926e5fe83bdcdba65c783bdc8d766749ad423bfcdb90ad677cef8270e16077235d6b7afe2589f7581913dc36ed022b856ea49bd51fe6be1abf07e58ef744bc68aef65e56b9f8c11d30f25fdaa6bcaf857df11b9e8c77a36e7702ee82b8c16c74a36d3c7dff92a42dac7adae85a58c9f789b496272bada2b7b2de9f1d7520f90a9a116da4775fe99bd3ba10b3110d58063321c0ca19ca7675f515f06ed5c1a5ef6e00d4edee6eb5c5ade1ce3d3795fd2c46110f9b98077df26d9ffc479f7cd727dffb5885284c46e4c0cb272c6abe0b26a128b21b8700f4fbafc91eb415df565b9f611138ab238bb04d0737b389408ddf675bfcf6bb8385d8e9befb4ff5ebcfdfaa5f0f0e74e2779f76dd003df37027c40dc6b12381e391b7885cbba87e47eb65de582f13f6a59bd459597e72756c9be2d66f885aafca048273074373a3c5b18d02b1ed85c4e64712660d5b831c5ca9baaaab120075d0c95157f19dc640a55952efc303925192ba8230a896d5fb5038d5b5f0f52ea8a02f177551df7d19a860ddb1e86ab61403aa000e6c8a7bb81aac82691accb0753901ea40e5b6ae8075b9a0b4569db91ecbe7c9273558c926d36fb150bc06df7e73ef825ee1d9d09acf90dd37ab618dae53c76700ceebb9c36cd7f55882b39a0e49dbf5bc26e1aca687b2edba3ed37056d5256ebba66522ce2aa129b614a8ad36e3beca8e42b3dd869c81f02c181b6bd7989c55b48939d2cf2bddbb99a033784de9af68b13c6ee89c747becb622c7af9679939dd09c4e1afec0aa4f58fdb7154db349d250f1f98efbe766470c503cd046cd33fff0d76e2f4e5fbde48e3c36bd781b17e201d771d1d0aa48cc6606bb3a821d8fcb0bc601d4159067f743a9477c4a7123a7c9b42b78df958c0fa420a4ae506daf662649c01e17fc22857b2563f56af114a86397c5bb9c960ea002615cda1f17e229ee13f5d4cfa1e943d38d23a91052d752f835115ca5fc0bdc074987eac769fdc8089e3ca72c84afa421e1168df5100cdbfb336ee0785966a9f7bdbdf4c66010967130e25d9e446ae34d8cc14395a7480535c7989006e88c5c525c1ff106408e723a6fb63cf18ad1b7f16186692cbdc19b49ef1bc9a03b3f0541d994de13ef0fbffa4afe8a1344888f882771a8ce13ec3fcfa090512b37d055a125f13ac4ebb7eab3c7d960970ecb6aa0b72a658bae3a0ca4433fd54ebc55276dd78f5d7ac89986e91effdca26f98dfb6754cdb83a32e95b90c87118df77e2a664991e63415839015ee22367203314f563bd43b1c1c791e9e0cbe26b4ceb3a2d94fb39a1d8e8838b6f1f3daa05ae6b4de2f2fc427f97a30366f99c55e4c53b687d7fc3df3094c61e766c16df47369c8378ea2f767d6d3e8631d552295cfa3418a079ceb9603768716bc370ce5b17eeb2b7889e1b68c0e503f94e1fa683422079c4a105e96735d0548d296b01b17b7a6c000dd6ef45eacde1ff0327196f6e00b6b08d46f476f0f35aa6288c31e42e04b04d380e88c8893c2600c915c063738b63f309cfbbcafd60e210759e768336cf9069dd65af203cfad8b659e3fb4dc17e9e837874ae61c6b7bff64d2649774b4f23523f280770749d3a9bfb8ca05153ed16b5136ce52d7eb040423d61b4f06051beefd8203e04e46c6964b092980a3d7fdcacd36928ded51ff4dc4ebd24405461c1330a2ad1e1868e1ead91a698de9bdb8295f9657b47a92d434ea09b7346f2e44bb38af478e846ed674c4f8c2291816823a3906505a005e6020c6dccc9e63ab9e72d9f48dcaab52625929f9c85766ed45ee1d9d979734426ab93ee1fd55ba676b9917f40ae14346560fd492ffd02799787342ee8d46c476ed833b65430df4cb5f4c76cd7248e0d9a7d0fe2728d3386d41bd18add0e71ad654bc60b4325c0215d0743b5a89c1d0b94d3235b5a32699f2016a92295e204d3235e2f668b5226521266a88a68dac750d486aa315fc5a9bedb1a6cd9b429561fc4fe72dca4579492bd5dea2ac33e12168bc775e364d391fef99b656712cc244a9b8016d5e617e58368dd2d3e7495d4b3de5d32cc9cb29fff9bcace63f56e572c1bfd85143a0f8fb3a9279472f3a3994b91d07135bd9798615a4e0848d2265a9500a21056a483fb911deb6facb8d0043facd16cde346985b69263742d307530d0a2a2cb781c4e8a4ee1e01ad6b10b4952bdd223882910d3ca2b37de87f9cca1018c0b75d593c4e533d7043124dcc6f40a1659e1ea7c0edb839897379212926341f9208670462a4f03c9a664807fb0834e73ddf6be4bd4e8e70d7d0d11e67d96e8feaac98e6943fabd3671dc12e0e0dab3a8ab85f4a24c8bccf8c3b3dd78d1e14d3951b3f339a356d7467918f257303a95f881d451e1db742653020da8133138fae28492aaa06972405a19fb39aff36ac22ec0f4905a75bd4b13d3f7e2f478edf3e82fa160560895dbd4fdefbf3cf5caf83c59359524ca9a2d484314ae57e5046e7e4059eb1243073cfc455e2912be4d877101c58dc24d59436e64dae6b5fee034146f896c306ef1d1b582824c2c95eab6d468a9ab7d36f32221fe2495e16f429a50bb3ee15b2b02c7c64ea1f28f3d278d74e9ef095f8c77551bd6c75fbb76bc734e7c19152efa937b913dc764f286a1c8e144bff7e3d5b39a4300ed690d13ea526e667e701ba79cbad3dec922f5f087ce23ddee3afebc5037098210e0ffcce8e4c9c413429d2c4e0fdc1d9436fd847beb3705d959f199047c49f11cbb7da64e8f80756a70ab8b545136b3753445016a7e5749ad328348d2a1bcea160fe300ea76c526c8591e5e4d8b0ca7bb2a68fa6100fe979bc83ce93eb732a0e18724b1372fd93b268b8c1c48838fcdccc0478d0a1af5b214f177574c7c5e147b19e08f41583b56c4c9052c9b36b748bfa6b96394c26ca6065b40ab66f85e655ec851d9abcdcd42a0fd78aaf15547cd03d54af35ac92cde100c92fb294926646e53a13821d1b6d96a639705673c744afb983105256c28190f86c9fa18d4e343a57713d69a869d5fc658d03ca86781e0291d366bbfb2422bccf62df1dce0090aca81bb62ecb0bdf7906a1202eb4fc6f8a65c78c5f0c6f0bf6d12604beb6dc9f75818d4e3921c00d76da86a6c279da6585f035abf3f0a829d3f27070d473f1f356c0ebe8d03d8fa07c81ef68c5fe5ddb594a1f345a897b40ced3dc4d46a8a0850314e9ad384b87248bb354fba2ca84c26fddb3637613eecafa4df1dff4fa697955580a133d5a5a910d9901f0bc928b877bd2f5f5e888c884384bed167184f01e9ea0d0f8fa4637c81d2b7a315a39d280cd115d165a76659d5046ebc838f95805b9660ff20be2b8f637ba71ad45029557f616b576f2149fd53987031b52cfafdc75f65a9b65c34b960ea7a5708f04c98cc67bcfe5d91fee2afea9568e582f72faf987a4ce6ac631e759b13f11920054e7a13917e8e250a3caba12cfbf67f6e1e10b950dcdbdb5b881bfeed02c4069873fce60926150301cef3d4e53a2868db041108c43a771a896e2d860219497e6c243084f46e25b9b0b18e19a9be4ec582079c59168e47020c018b042f9a9dd7babbadaf1b8db0cefea68c5ffac8fb060240c665f27733a1aefa51cb49966c45256419a5db717b3c448541ecb350e4a2ba9f58d9f1e3f7ef9e6c70fcfdfbc397df66e8da5b92e553e3c7e727afce6f509aeea992470ae5a833baf1639777d2447d6992a6f07d1f7e140cca6f64ddca60c7f5c4c66650554e2ce4fa30867835d957940334e08bf2030b9af68b1d43f8e1b3a177146c4c4f1dfa7c9b4b34a7d45527a5e2e0b680cb69d76fde4ba6866b4c926fc58bebbb67d279d6d40ed7d3bda561811663304d79d82d1544203599de8aa650dda482f2b98eedb644a4fb27fd0218916faa7bab8b3b4b0bcc25f4598a248862b0a286c79d193b26a44bc48a1faadf1f7782fa92752c64e29fb1906f3c3b5acffc38636c1e80e4994c22f9065d7bd051db5b852db04a5ab027b6dcc1ddf3efef1d907ee72fdcd5bcec1e41b8a03f94442fefd93fcfb80659c3d74f4dba60daf82db2212a4e1b6f2b0195b4d936a327b92e4f97932f9a49c74995df6bdbdaf72f5f4335b25ebd552932f46f572142d6184a7719bd77d881119695e14818032b002d0ae18128f5c3d9d3e74f7c9f7073218cc3aa84b562b4b358a39da6645e365922b6de13da5703be5d8dc436a438cbb6e759154353d2e78c4ae3e7970d06b578f823e7b51e5db8583a918a305adeaac6e22a37482132080b6b78e3845f40107fa618230922b111f913b7122f8476046317ccd6ed47c5aa7a2f6ba09aabaa9573f5c635df3ab92512d1f5661b1b9f2cd22ac89e73e6ee8e70d8309f85c0b03f4b61ba8daa280f6e83f5b99a6d56c070daaa79b5c078aaac29848366fc18c430364ccabe24cdbc0e19a62adea014d5adcfd34991a6c1f21fe0e4f6f93f6dbad4d88123f7e135b436d31020b57fb5a626d8f26137b77ee19f9f2c587e53da3fce9d271174584a43c6bf34521cf924ee8458743e8a24291228ea8428da3856ffd0a0348ff7005aea50d9aa8bc16166dea439ba1b5210d569483b909ed459be34959481cfd0bd5d870ab9e002d0eb75305b5e21fab2c05a110a65596ee5f66f40ae9ed9c5a6ca307b5981cda5ee19704b8a41fefd5d7f3f332dfaf7f5b26150c4b81752fb0dbe21de59df59b7d6ed5e597db76997d067bea23cdd4218816fa14873a830da43f93aa9408a176f816e9d472b412ee1620718221c52665315a617aed39269bd6c4f65ccbcdb6252344cdd364ba6191abe39a18bf0912b1cd109e26536bfc1cfe09e3aa015d48934cf7b386cecdb58730cf3b7eda0e831fbdd49c585a5fc59dcda8b7ed2cbdd6e90af36d530f6a3311ce323200d05b9e26d32eb3e3cc8919ea36c5929833ae584ab2c2d242726b4ba58ec0ea19a810c3398b3c99d05999a7b41a8df74eb8cc19c7319c2de2e80ef12ec1eb9cd26abe5133cdc563ab94a77b36b9d84af9a0663ddccd6d55b14019eb9c1c3776539d1eac82979ec1e397236f69f516c71cdc7560a0ba2a0cc0d6dd4185d8d8ba5aa9b2e98cb3297bd643a707aef09d24156df6970ba9ee159f6979558cf73cd7481ea14183b68a1fd9b5b7c1ea713da1452ac26f31b49e529360b573388083620f9854e81165a13b3206ba0e824a338a74d22ed63f5cfbf59e440958472baffcb63e1cf05c1b7d89a2a54385f4713446937d68745f0894c011cfbeb302e02942ea7ef5b7bb5cf8c183cfb77304b10adb5a8fd1ca4e71eeac509f803ab7f372588545ce351e4d003da899b662f2497982511f6345e3bd3ef9755937d9c5b554ebf3e5420bae828411fb1e1c2c3ebb41fb00be70bf0f5e0c1c0e7c1739720b523b93279c9fd49043f578c727d7e137dce0996b32cd8a848d3150ad42cea874a9c250531ce49df4a66ce47b23940c99b254cffa54b3eb204e423b2e7c9a24530a5c079966dfc20cbfff700d4fbfe7956673e0c12b1e87be8305b48995fe66f5d3585cd77234cb4b216fb335efd508a86b4417de9fe900f9b067af79cfe2578ffff6e1e4f1f3671f8e5f9f3efbf1d93b15261f529374dd3251fdfa25cbf357e5b20097b20203cae750c4bc10dc054cad7450e88bbfaf213fcd52f9226551d1cbb71b464247ab91af7735b9f063b686003354c41af95c0e50a4550766d9be77dbfbe95381c97eda9222571980c9fbf28580cf984fa04619a4295bafc31179e07be5169043e15a879b577781d43978c993cd78ef7956b11322cc317784fe81e2bbf903fbf21b0af368b41ff4bc57da6d48a900d2778a5700c83e09222cda15c4c0ca0afc2d2e1fecd46bfa799781063464d8c04d3bf94db893e10ebc4c76a2945be8805ddb8fbb4f0cc05cabca2ed972f5cca0750674162e3f92c31dcb7914b859cfc12b38ba85053e6fe873767840ad1a6da3c78a6ed256a85181751e996e321c9229773221df549311e10f18d07d8642cea87c7dc6b232687f32a5d589dcf638be53d1b648f4ef0d7d5ead1fda06d4b51540e7503059811a79a015b6bac011c0045297a9e4cd07fd51832df036a5e1936d3d800c2ec01e8a4362a21ee2bd47ce8b35368e6cd5f7c96162b4f0ed37ba8d33dd2123f22a6966f1846639004f061a84195b7e41da24952bf3893c5aa49e1cbedf9bf6d8ee77802d79757441f2e040a026a4205297a49e955724c973555cb7cf2755a5ca9619419989921bba751d3618907959d1507b93249f2c73be22584b242952065d145030b8c52958978723f227a4c9f56309f17c7060b4acc08c1571e9efc811ec50b00530bafbe42fdee69c61f1594f42987853fcde0bd4c2d6a336163f060332e13e4c495290843f172d2fe4900b52a96d06c19d2fc6712ccca023d526dbb9c8be41b4177fa2d775d43b8376ada61bdf90cc50af8acc8a046d8f906dcbd2c81f16b7139111f8e4618a27edabe07e9617c3e759214ff3da1da7b6a9b6d28dbbb467c552182cf1380a56319e267c9cd93950e92261dceca5ade351d2f54618342f727cb8f583bef57d503b3b2eecb7f83ef701dec2b9613fec78da07b993ffc396fa9d9e13f75b2260f980767499d80ff8cef581ece852b1dfe2b5d40bb6a3dbc57e28b8910fa8f7f573283c491fbf18e87be3adf85ae9fc2abaedf9f3983b02d0ca2ee10d409b5161a7bdc68e0e294bb85effad72932b1538755935e7d7381e174b4bb30a27a659bdc029bfe14f2b77821d9271762f1dff0e89f0814226cbba29e76a242c5d8c6d8108fdd55ee8f421180532021f319f47e4c1d7dc813cf2453142b2b4dc986516522a8cc8770708ec26533fa215dc76b51faebd98a02b7dec501879080e59bc909173511ca8a6db00e53d0dd9d6ed4387f9872b2543c2f769ef836ca712df699f94cba2b1fc7923d592d1acf929c128d6e47dfa859b25efbb1d8a191a61463c4b10823c9f127e8c112a2f25b0ab0c1ded00bcce23b00874310f8325288689e3255c6439adb37fc8af74592582f7f13cb6842b5df43c6bcc4795146939579ea40112eea41b67f7e23f9b64faa14cb6328399bf24790e321d3c6c52b2b1705ee84bf7f1bdbe5dcabb27f9ca85361a4fd9a0b4e0291bdafe3d453d5b85a75470eff694f5ef72a8201c7a4fb07240f8a6e1dd89bf48e65d895f1465d43aa3d974d62832ae9a995900dcdd6dfd61c258c1ef4ace7748b1011177c7599324f03b4fd95dcecb9d0c7df701fd91c7a8c96eb2052c9266d6714845d11b0ee0ef41bb5b50a4397dde600ce5deb8ed3e5ad34959a435a0d20f598a374540bf4b7e25957e486e4ec4bfdf8ed76d1b091d6076de71c204a0fc926e9aa88e23fcbb922fd0f84ae2b4cd083185a2dc502fa06b0eff50c471ec6630c2144a3041913c889643a1f605ab7456f4bc2ae7d6d92eaa92abb74935aff1eb02a541ab12ee8b50152249ed9c0ea1929a978fc549915fa94245be5691a1558ceab8030eb2d3ac4226405fbe106fae7a35e536084c89acaac186d9c4b5f704cfb67e6002eaf38726c1167edb3050fa286a90fe2d086c03aef8e02a8c007455c77b06803bd90057a92840145d22b5f9bfd66561a885931958bea80de073811f0491a61ac331833169d1443b75deab4a673e97191765452241faaca6d4cf9617161c6c6ccd8bd36252a6c0d89f8cc87f9dbc791d7372880c30e87f40d49c802ac8158d0d52f82787f52bdb358353e512391f225e57236e2d9517e0b18970a7eaf875c276de9805b19ed99ca7a7c30821a683d1497c4a0d1b9f8bb27a964c66b6b9b3e5b8c9ee2727453222ab35b8fff18c397a5c02c2357b8abb8e98f00c04871ad571c6df90a443606270b28b6b875e7a8156e5f421687ae99b6b0ee5b199075c02764582510f2117efc3bc34ab861e8eabcb3086387438a7cefe6d68b33d9da5aa41ab223d4243bb97e8fa45dfda807b173074a2977db2123086623f5fa30b6ead913c9dd19a92b42cfe4f43eae582eb21e7cbbcc9163965bca29951522773aab55a7d5216f9354fcf93ba2165c1afc9495693654dd3d85928e6b287ad117cf5639918acba8c1bbf4b0d0edd82561f4011a8c04413eb9ff2d4a8337ddb2cb2d8752e96e2c7f5840c3de94f693d69b145638304eeb4d82859575c98a588f9750b81b5bf1d4351ca42cc17dc473820121214460de787eb9e87c8c19aaa87b096e8452c2032dc5538350641309abe76582553357f59235058360f846042fe86548f238caeab30eb29b77aa8ba6e4204b91beace6800dcf93ebcb98c5f96570f1d4c01281125af13a8932629d2a44a5be189587b5bc17bd10e51c6eceb04f2f932cf3780fbee535758e5b2fa6f1fa8751b11ac1d7a40e1b13ca40822609311c1a4e1d18ff61c7924488930b896a76113bfd869d7d5b56ed1ac8c07e26991e5386d61c760d0411574429ea5bd2e6da350331e0c74fe872c7530f1395813f8bc3f388bb3f4a1d9bf1ee77979a577ac0e889960301eac44a60f25c723db0df1590311851060e5cef0086c12968d04db283c6613fecdc257f077d83040283bcf708bdba90faa904b928ee2b81743ffa14db5a4e825e76d8cb2634aa23764dbbea4655b768afe0e63fd472e7718cccfb7aeb85af29f88ebb87884798e347455f922448dfada80592702b4e2c39e2cb2a2809e7f768d6cb085599676d3847d306df6bdb46b305b60e6803c24e9e713c245d2c014b38c80cc8b95b6eaa658c758861b02191eff90d4d40d620822186ef04a75cb2ea9b6f747d58786231b4041831a69a362f99c6233ff346912c18eda9cf53774bec8b9c9f47f9dfc2d965e66c41b286d5ba1204aedb0f554c9d3b4d22f83d66d93086164215fdfe8d9e3a9c2e65d3f6d8b1407b768da986df4433de43c01f40b3a35f23eb8521d40d63d759334d984ad3b961d05c7a537f40dbe76c62470e42e98048ac8f19285b9080d6025aaa663603e6274298301911e129b19952342ae66b4e0df9cc398a8e43599708b6e5135e0cd49a1fe9bd6a931fe0cb51b42f3a8d012c6e27939e12b5b6a097a9682a9a05792bf600fee0261535a978b5b6f16006e286298941134941e50186ba9f035a529dff7499da594503e06a429c9d20c2418b89a132cadf26badcbdd0dc3759fbc6f1db4336cc7be710500bb76d7624983c2de3c10196db442c28e6ba5bece8e5bf83c2b5251de994e0210e32ee1e5d66fa2188284f84203228f883f23e657fe64480e82d781ebd63ea98be1ed7a266bdd56ff24b8502f65f64dfa6aac083a775457b9855e6a589e2eeabc1bcda5343be93e8da2c26dcca08e281ac8b949bf801154e7ae993ab7d03b1420369cb94d1fddb8a16ee4d077cf5ebdf9f91979faecf9e39f5e9e92e3d7e4e5f1c92979f1e6cd7fc388a1ff725c68eddfa79d7d59efd81c27b14bd79db669b58790117973fe2b9d347152d7d9b48856eb3ec1dbcd2cab9bb2bad6db8e19216b232223b5c7792fd774353ff88a724f3191dd0cdbffc0782af90dded59c85041bf1044ad87b751995ede50d4422e6639374a13a666a803e845d54061fbfedde01cb3c5cb5e013ad3c36e69bba18ec92f0636939a7bd7167906902077ed7fdc05e273b78cebd791f2db311f47df3cefc70edf8efbd1594b9698df8713324b7729bb93bced888067ced8afdee4e38bb77021c5ad8c6d62d145cd267bcb2101775d7a499254d4cc89b4a3f6de4a66a6541638c8e82735ca4f43319c115a615a35991f2ec289a607ecb713ce6e8c91bc1d41fa64e2297b383f6455971b65ee629c9d218cb050dc944fc281149ea918c28350cfae124469737d141a446a311c952b31ff7905d90d5e5d188ec3f406a5ccf18044d531cdb20b7f27bd4e019bc9bf5590b0d0644468c4d978b9c87a6d5d7afb587111a1b29efdc71da8ecaf35ffb6451d67d9254953d8972fc92aa121ad679b27873feabf1dc2cbed5e89a08cb2548148fffcb1a0ffa9df16ddbedaaed15d5e74bf506fa884e638cef0d1c82e5a66e369e7afcee7a8bd30ff96f51eac00832e05be128dffa4b752419011715966b2ca07b060a7e5bb0dae0590f092d6dce06bd524117bf73780776dcdbfa8a82edce94078956a5ce0ed49c15c24a5b49a882f2dfe6786e1be0183d5c84cfcb2465fcfd1139547724359f00f915733f882f1fbffbf1d99a0c8e6050bfb50b8d9f0319acd983239416cf695d2753ba3e1ccc1e04a1a8830852226bdb2b49bdd0090eb88a0003004568350c61bf8b80f475619086ca1ab715a395392a78c941c0835f0167326681b81e0488d23baba5a5cf8201af012b1eaee43439cfe9cdefbac27146eeeafaaaf86497aeca6543ab7dfee402c75e062a28de621fa7fd9c54191b867a9718e0fa2ac1aacb911ea8dc4ed758e616e83ca9e93e3f63df717894e075d4e61b29e80f8f7745b9ae03bd5bb941a0c5a85f0ba7d09e28196e6c0c6fd0678615bf7c19e91988d5cd8df2fdedbd90328a526913c89be9abc504b8094f73834ff8388eabb2ef4e746dd75ad0b91b54617df942c21a588f43780620e0b4da7e17072404c95a18873e7df3f40de7c76a3b37ee613ac065fd72e1c2e8a18615296798c6bbe581dfb5e56133a3496afb366d2ad7436a333be2eedbe8d5e1a099f9f39366e6c93c1c34b69754b7d5c3e6bc4caf5d47a12125f854ffe272b7f8bcc6eeba407f84a72e592ace523bba9628660f844ce77cb22947ab8f03ddece03e84f6d1078ff74015e26fc2959fc02372c036ed6c3e25753519ad3edec7e5de1f9cc58ba499ad1f35b3e5fc7cd4544bfab1451c8043cb90f5756ee0ed1deb73b7fee94f8e986cc70bd5996f427ab663577bb60f079a78ddd8b15b2d935f12148fb56df98d1d07ad8a21c66aff773cb506bcad1a77296cffec9313717bd8717395ec1cba139149de728c1378caea98002a2293b94e52f190f9d23814c8a9486e1c63423f279346f99f64533c1aef196a18ef199fa0a31568cf449790709caa8361967aababaa87038d4f0f5a69c8fb0fd30b37cedcebe4f23c1151dfc4cfa7d9659652986222c789ef1794cbdf9d23c4b5c57edbd6ce882d993ec3a3bbe0c576637553818a2f6b3ac8b3f301281012293cf2c3ab242bc47874111f6cb1e17d41af842744c6f1b991c66b98826c35e483a270842cfb46463910043d8b3645d29277f55759919657c63e80116391cc9d1bfbf11ef29e84aed8ecce44a8f0a0a057f866aded8672bc67dc146d6c4496ecdc82ef7ed081eb44eab19e84f5c97b34ee7ac8ce02229b066f79cd4524d125ec2b64fe7249e093df688560e2332470907bbef88ffd73e1019efdccb848b9bfa8b279c2f8a7a986f6a4d7f40aee3e12030b29c351d009b2c5c3b78aad2a2a938bec334d4fcbd372a1fcd287f434805b9124cfa6c568bc97d30b3bb4e921e26266eb1eef0d18930d0fcb3c2bb279928ff78ef80db0debf313c4f537000ec6c7bd208da46708e4052bce0b7635f6cc65b4ceda42cf61936a50d4078577d628111a9b8ac2598888b692c9b185ab8adfe0eb45bbaddfb3d4f16d2bbddad755ebd24b9b3de03f9e1061da76996dc5a9fb5347177bd865bcbeedd5ed0aa667bfa2df5dbd8a0dc21b1abbdee06935d9e6739bded452ef1bab38e8b570bbbf7ba49a6b7d659fe8021d05394a6b69b4dbb5025dc3cf922620061607d0be4439b262b6e369293f2062339d83844507bac4a0402616fa7ccb5e4f3b7c994be2e9be7e5b2483d12ba3ecfad3ca2c7ecc111bf562aca865c3000313ff4fab15c9163a1a6236f65a49d3e392d93bae9fc7663451e7305f3337e15a1eb48adf379595a87d246421fa9766271cd2e148e2adecf50e3139fbe79cb4e6be86c280cd079933f35595efb4cd0859fca885f87b8ae548c151dff5747ee9038d5b3f22ad282b5bc4c191271b7d294c2a21bb8aac9a4fdbd18cdf8e9e3d72076872fc40642128ca0c21724dd1adef2734ba4d17dc7d7e28d7128e28c1dcd46c7adec4a4bc722e8988aced2d0f9db8aa6fc265f7c8a70fdb4ea13513200b916b1cb006c8ef98f7f7db9fde544f09dcde6a7363a2271cb3d055a1d6c2aaa22c9f5762d7b3992dd8dcb8bd3eb053dfcf1af2fe3c7b929563f2fe54b3d947ac44fce18f469326d07ca7610088e7dfb00896db51d96dc7a21389974240ff5dc9fc7cf499ea5ac5e4d468cec3a768f7c01857d68a302615cdaaf62ac49e4ab8b613db41eeb7133372d03f12fed3e982db6acc9921cd83789874385183746db431265fc8f190e278012da26443f040015b87997dba09c36e21217362d3dbbb03c3de3b2a5825e195860c5ca50d1a323490c87fab985d2d0c8e80ff0f5a7efd9a36d60b11206be6b8f01b39f4c809113ef18378c3286cbfc422141a4f488781287d0af191e05320a2d565dc1e3b1cc79c0bd5d4f6d12eed84d637b6fa774eb205ce91d7a271ff16ed735b47c3bf68b2f71d329fed9ad479a09b675c7d5b0d9f6f73f1562034f45d7b3022d49a8c653f71047ed550e07bedb89c1d784d6795634fb32320f114a60713d5e2d735aef9717e2937c3d181b4dadd80769cad80b57d49e808433eea782310dadad058cf80b8f5f7514b17fa19ef67d561f0b5e96fd83a61ce8314cf1409501668e221071ccf48916bc4b0c6fce28b9533f190946314d3eefb0333c01616279ca535559d991a0227e8518711e2b1e405b6d70dbc786cec17b68810c8005e33de3d18c602968cd854627e221763c73ac1ee033f1466c0650dc0113c31979c6e733e3f21162e512659da3fdcdd4f13c6926335a6b81ca17a98cf854b54a8a33a72315cdc8d78cc803273c134dca575ce5820a22aa9298085f402403462c259eec0460e2008a640e51a967e5324f9f66f53cab6b19c073b412bea554294bbdfb104e8fb2314082a93d37bf0943054d66d83f9446eb5edc942fcb2b5a3d496a1a19d3505e1de7f5c8d1483e9a59db6af9b260c80842f4880fb271159ac8081b62194842744859e721ea1427ef53fa99b152b41a1fa14fde3f1e00367a5dca9cac2c7a5214b20eac984923be2f66d14415cbc09218adcc624105f4c438267945290c4bead1ca84d407c1cef8e5a70aeb56ca574c753cde2383230d040ef86805bf749185a02c4ea3a3d5ca1c6a4d145b130c7915c7e225904c31ca0619d7f622cb7384dccacc03b87f1de0710c1ef89fa559c33accaaf78909f4dc2726b6759f1c8b77daf220c6ca3eae6872b390a4c0988c9be72cf326b34f71d8ff81209d8153de076e0b480088a552e0160841958220383880bcfcbbf2ca3c74570138b326a748d227ca3998be11953112f03b7b4ec5f533f15c41c7669319cabc7148a20841d3e704b96af5c21791bd58919fa5274465f4095d30f1485ed70b5a5ee0c2dc438d4013bdddc110c117d08d6059cad954908dc861931e696b543e746bcbb4c436ce3984b380157e6641df5320f580fa0386830eb4046fb710c405b9b7a43c2bfcc1d14d04f3a8a0573f0b776ca3233d172adfe43a519775c7e1b800539b162593205bb586db49b5ef27554da1fd1085f63b5368dfa5502a5c4eb87e3504693ad3084851568536f0841caacec251047c14266f3d37719354532afdfbe18992f4849698d70cd9b26df2f4e610c7d35e300e7b64413e1c2c8eee7699ad2442eb5b2040b3bdfc7f82044d7737509b792df447935cbd480a97c678eabf0e99bd68e65204da89ccdc4df9b6e88d484958c76112a195dc96a1ec75e421d53f7a3fbfc34563c451b468041c43e5682043dc9c5ed2a2f1af2b9eb57951f9e5827fef25a5fdfd64b57c331b5a685096eeb4d4b6529aab55a7b4332d3b015c8059ba91dbdfba288a0e1548ee633d0672e3f5c2150ccd897cb432aa298762955ecaaaaf87c7b4a2936e264276a703702ebb7b328021f536510228fb7b13033cab6e4b11c27f87a4863a4c0e350c8d9b31e2b0a9a35cd0e24df1dff4fa697955780f26665c3d0454ef4e41bb5c1a6f7f59dc7a3dbc9c4e69fdef7a3fac7a3752fd54f7ae82e0d5e5ea56779a65c19f58e91564392769bd88ac287d53d0dadc8409ac6e7229296f1ba436b5a60dc7ce73bba0ba3cde53172e1bef9b4e2655b2a00ceb12622dfdcf41209a49b17398f71eaaf6c3e28f34e4dd545b91a189cf82ae00d8e428812c4258a02941393e38ee55821c2f07eebff77d02eaeaeeb70a7e30fe3b83909e5bac0d5537d333ed68b6750ed26fd716165ba8c7b1eeda881b2b7d41005880bc05d04b4f7daf0138505c9c6879420b4c5d04c0056906b6987621173172d219f0a261b4fa0df920d842f13e0828c83dfb40974dc0e37ab9b3cfdc50246fdb5f7b6780ded8d8c8497567506e00ec5b70e57b23efbd4251ff3ab9cca6fcdd4a505b8fdccd0b43ff9faadcf0bc21799b544cd2e1c64abae4d3a4499e57c9941d9e8e9c88483c3a16709ccdcfd4300a975af5e3bdff05e220c2eb43e10ac5f157ebb81155a74b372a5520fc9f3ea3bb71a8deaf083b1941ccfb244fce690e13f9b5dd972fe4a3064eeeaf609df547b256d615179dfcfcc8d1f8285f423cbabf6a7391b7fe18d6ee70bff6c21045cfa520743c91a2cce6591475ffc829b4d7f7e6f9d338ebc993297ae6044c727fa58bfed173769a4ccd8435c914cfd66932dd3c55c27bfe1f364f887346ea64ba71b204d67aa6d8a79ea6d3644aeeaf44897f960992cf81fe79a74922f8af3d59ea2dd84d39a11910ce08cda7c50d4d460796680a3b13c94602e6f3df1de7da1e82fb2b07121bda47cdc8ca116181cd58ac9d27e0d2d29cfd7c9ee5948bccfc8b1d32f40f6efe36def4625c1a04757e1b7efbae7cba3f0cdf5d5d614b4e96d261c91207852e147c55cee952c9068fba0853c21298ef4b8f36eed9c268ba7e4dafb01144c036a22c4ecbe934a72c73285fc7487505d7b22697d4937c3c4fa6542b3cf8ad80565994d5fc194b38d4ba1279c17104a12055298f2a785156665cea98f0e54af8a46413d1acf457a1b4264fb3242fa78f2cfc5c2dcb53da2459cefbdffdf1beab58b15e743370be27ddd23a92cd4097f7dc0284392e8bc725fce6da79892d8fd2b201399fe41119ef3d498a09cdc77bdc788c658cf77c67f508d86fc29907efd0bcafb4adae33aaf0be66b7500bf75fd968e9ded6cbc984d6f5784fd991b136c67b21d4596ed45b1369f6eb47935329a7c09dd1d4bc51a1f5645696352519031dc731c79017508779852158226ba1ab50a7eb6432a18b864d54fceb62da8f7f5dd0293b5fb77746a8de2ac695bdbd01318abc1e983a745aac96da34841c24b204a8ca76b551440d925aa0f899a035952bb05a024bbb079421de0211577d041cd601842d99c2744a6e5daceb9c1057a0f76bfdaa6e64d4207004240d2b82e535c955d6cc3861405464335d9616dfe9dbf84a78fe72da903c2b3e9d54132da58ca4480108c143300a53599b8cecdd2e0e29052c50aeeb21d59cd8bf3ab7659f5811900d37c05c1af0bf7e65fca51cad64dbd0fb14f66880fc416d765861a65a7cc7f60be195bb67408792364bffea2b720fec23e491eb5522ece1d2e1166e36e48c9eca80bdafe13bef958f46d766cc3c9ddff0dad79645f97363e91d4f2c71fe13d9deb204edf58a7f491fa0772b806eebb7c82f69dec2ddd8ce91ca9cdb3163db6c5e04bb158464cb9fee38aa516df51baac6a7cdd262062ebd6c18caf43850dc722b69cb7836b4935952d174e094f3c8e9aaa16d3c4bbe35da519f6c894062211365d9d77862f98fe42ec86f8e6219f85f1e34c77bdcf19111a9150f61875e3a86cf8f648e7c7a24bf90d329fde04888aff8f592dc81b3622ab98b5ca0025c2017811fef5dc8bb3c6eabb0c9b3d57bb119bfc5976d356d4edc748fef2c73b3698d8cdeaedc31627c517488fddacd21d7fb42e11940ac0b8c24cf12c6081998c7e2f78e9054845511144e7ef866bd0bb0f3ac6a666922a1fda0be76448d36b3229b648db8a77ea6be7684c6c3b5c83bef27e2f7ae785dd327655e8a387acfe4c78eb066349bce1a0ee905ffb9239c394dea65c50fd2822a5e81849d49e3133dcd24bce7f263d7d14f2a4aab97dc51a7980290b023cc26699ab214e89d8adf3b425a64b49a64c554c07aabbe7684b6ac720ee7a72adfb5675759a302359e8adf3b42ca8aba49a655229ea91eabafeda04906f936c81835cb14e3a7be502b9b155947d16a8d91675c56bac7356c5726ecd485d7b4b92aab4f9eddefa5f0202fb72bf905db30af6cc7962d4c5f3802e913e585de671b8362a345de0d1bf65d447f3423ee02d479c2b02d9a8281575a0d2162c656519e0b1b13ae623a35f6447895e9d29828aa1b43a759ab7b6ceb1583cc27a683d6937c21420f0f4d80f0d7113a1f0bc80e9210662f569b218f8c0115f0636d25a1f7c8ed205a8752b9fb0b10fc4a04bc19951bbacc945b3dc8d7fbaa2ca1775d5046ef96b28cde4b4119b90bca12727f8430e4d6a6405cd30f13f60d8a883d4b16107b19c8857b902c03f7295052ed2eb214db793e34192a02370c85324ffa20dc3f83a2723390a5e43601f23583972534fb0765c43d38cb5d5639842dd8b1822dbe40be66b1b28466c0484d10f2b80a784f24b9097a33af3dacbb511079f23d2a5d1bd9ca1fc89623b7b244ae4fdeb3bcb34d8e61312786961b2cf9c32241d3c1cbba3e53833cc0d117095b39a932074b519f52a00704e0835503d21d3290a4a703fb05459751d69b05b899eb1476046b5cedb9228747c2a1541c1feab2b61ad0c77891838605ca0d7052c09a2523f56d11ec20aa879b9f5ad4873a7ea86f7d885009e620a0528c30af529440ae4b28fe32245ac25679524c569f48da354848a631245a72d56d414e3124481a55659438a9be8d50a8529860a74b4b114d7d1b414ba7cc8d57b0b58e89e2a5e508cf5aebbecd4ff6fe13bf57f18941432694d4d7c504ba3c10d7265e6604fd6b34d5b541dddb1f632c2be3a3265749e6083528641a62503040c1020f02f0b8ec443af3366a09375b362a560aac83c38b72e3848fd095f5fd550b206eeae03a8d269384fb71822eb58dd22d563ef75c21c24c10e08036cf40b74d5b5cc722be7291e5225609b79c862fbd18b526c5754f0759408624154d52aef6ca72fa8eff961625262182118358425c166cf3a345cadbc2d1e1eccd475691b39ed4ca8cfba15d6153c9f5438403fbf3b866d2dc4fef5e46ac6fa1d10ddc3da17514d07f4550e7d56b5f9c5ab8658decb44c3d0a338fa8105847e8482002f023713bf2417f88da6f0b13838df9bd6805058616380f775c61e4222b923cbfb6e48dd0343ac2cd964b54deff68a1dd7e486554e9b1f31c5763285f858df7341cfdd04b3fc875b761a3f85529e0b997fbf0169d2dc41bcfbe1922f410f7fd78ef6a963574bcd727e3bdf33c997c123f933a4b0af17396d58ba4c826e3bd33af5f4fff35b7bdc49c3b3e51c030edac7eb3a0c56875ef5e50516d194494355557d11d671e3e6a6033a12f7dcd3d37bc1e4eb34b740b997278fbf2aad976501fbce60085b05f8df19e115a99f0663bf055c18caeb2948944e3bd070707ff1b7ad05163811f23fca65f22f835edb240cb1b37cb453f1e8795bce28b9f1e3f7ef9e6c70fcfdfbc397df6ce8aaed4a5ca87c74f4e8fdfbc3eb14308a96b79cbdcc0e5afeb239172381035ac584b562fd0f7e1401047870b625d67e52570737b6a93cba4cc97f3a22659bdaf9da490a2dcaf1709135ab12982bf32ab3b4bf20b928a5baf7d2eb1720a4cb28256360d66f329769ea1e67dbc27022e417ddd7a9b590f6224fe865172efebf07a501882b73df6534d26ba8e56fc8f93253923cbf67bba815652c672051d4dc121f361a7332f71972013cc472bf1d7c904c21d779c052c8beca25e498555f26604d7307787ed9850cc44b40b6b8a5a7d0a21af42a131d67e032caf73728a11cb7bed6174c87bc1a57644a354701e3f054e6f95a76fd3fd3f75ef3edbe034b7bd288be6177e981d92ff383858af8fa4b66f48a4ff823b1a3c7964df307e1299ee43a87495dd46f14f0e1fdf72b094f275e81f2cdb5a52fc974db88dd68c2655e3f6acd32082dd46eb881f91f19efae0a695e11872d66603b5c8f7b486d8a925ddf07b5f98db432b8612a5b9710b9dadde8950e8891648c8ca913ebdbedaec6a84acb444aa55d624fafbdffffef7fd57aff69f3eed3111504a98e0e6185822184914aabdd7ee50ad1c01da2d72f35e3cbba684eba500e2e6323884b752a3fbd0be394e52890f30d217dd21846495bbc147dc0890e8c92b38bdea9a3b8492a8753718c15b088012be310f21062bdf0d7acf934f949c66083773f31ec24b5d98dc115171fd28110a52485ae8163f485fa0d4dde0272f780066da16208494ac7237f8e80b258011b02908e1a4abdd0d563fbd7b09f0e15609214c7eaaf23b9a29a1268733a56c1b8233250adc0d3efa7a0e60046c244238e96a0e566ed0557fd855f78c0863ded8f6afd87b2afddce8e7d863e7dd5a532d8b093b43f0eee838087d9267f3ac192a076823f2e0e0a04fd87909997f736b74efbbb57b52d203cfcfdcd767bc8c89c0cbdb248f6472bd3c1760a303894e8f7cc3512043623cab799fe35d64393dc9fe41a3f3eb8689c7ba1b077db2a8e824abb90b029dfcadb70f59fd3a791d2d92aaa6cff3326922e9778d03edf57a5c0f99d5cfb38209633215f6f891ecb20099d3862c8bac21ca71342157b32ca72422bc2e3962c3fced7704a81945c6406468852883f2cd37b6f737d92caf1237e5f3ec334da36f7477d9e88df7d8ffdf906696d5318352bf67ff9e854752bef73b2d4fb339ad9b64be8864921a3e67e894c3117a459e724303519e7ccd88e8a01737e5f1c91be5c24e4e73f4e0419ffc678b234136a34c867e5e95731e4673913071542a17bd14788f15e186ac42790a67e67529ae23c499cfa64b5631ae283fde4483ff5ffcf5fb31ff6f7036e813e3d3c68b6832a51113344507c18abaa8caf95337a3a7c9d0ba45960501da078098a4f76f2d1a8fcc7883bae8364521c03de6606cc823531de7f4c8d06499bb1646cbc9948152c5e3296d9e2ff3fcef34a9a21ed937b8e11c702d8f4abc2a8b6616f5c81182a852bf7c31bc30506fe4adf8d5571891a7c9b5d3084feb8155c77ab63f220f022b2c99b6b09ef3ac79c7c6ea3c6b2a6e8e245709be119bd369729e3535191159900cf8f2383838b01e29df5fa9c27a517fdb5b1b080b5ac955daf23eb9a275992f79e0de993c145b78b10911596c28bffdee800d9d4c3824dffde7811bc17bbcf7ed77070bfd0208bccc3180befb4f0ce8cfdf7a017df79f9b00fdf95b0ce8c1811fa53f7fbb0912ab89407dfbe04f5e50ace00658a1aadffdb75dcf2e633b1887161b8b2abb642421278f336a3222ef45c9f11e67f1fa7e66bcf7e907f0f10a7efc083f4ee1c75bf571f6d0f788fb4952090f7ecf727ac91f5089c731dfdd4298ee3ffcbdb5118abc2fad1bfab96979bbc186c6f7e07a18b6e5e3739c4cf9eec5b80e0c38d5f2e083b5d4fee843e3e27ff8a1b3edc71f8277eb7188d9ae653db88b815a4564810e400bd064aa769111e356c994aec9354daa9a94797a7fa55ee981da5cfd45b282cb21c285412c1f18c7e33dee5b600cefefe6c9f5b974c5a5745f3f2445412bdf3346d301ad6df3c800e157d3d605d1c72a6132fdfe396f90c8afef3f42fdd7f3c73fbf79777cfacc279fb75de0b0e95175a04a785a65e97ed6d0b9d13852b50c472bbd22e337af9f39112a7090cfa61cad2c0b137b94b274fd119c4bbc97344c68becce815d708f29b1aa80b552ac2f364f2695a95cb22e5f70843f27159e591a7456de8b7ee7d341716f04d63cb8c8347812886aa7b2d9454e97e2de29ce02bad17df699cd95a7f7349ab8bbcbc62f447f33c5bd4193f8c97207d96a5292d1cbda7d337eb9ee170f0e23bd82fb6eeee8d46e4803c92fa6afb2a8021b43f5f363425e77939f934de3b5ae915a6fc140714c69d219e346c7966858b3f5f8c1fb81a702d56661d5bfa727cfa64341c788179fbce38f875f28bb2fc2482c6d8fb848c70ca836ed9eecd801d66fd57e1c01227fe9c5419a36f6753e8b2a3bcccea86e165d715e1c0546ed7a794d2ebda7952d37d3e41ddddbd75f7f826afed18887ec8fddb260f70aeaf3d460e00c40065b46caaac4f3b3d8a6415dbf7480ddabf47ea6c7b8f645d669b3819e9e98d973565bf95ddcc851eb6211842230328f34fde685f6d388cab3d11a61ad2f5b1bde1a13291aa57f3c877d61a38dc86b48ffa3a5e964544d888b9cdd80a9934fb8cad1804e947293534c637614073f18f5596baa233f43c6f3374b62dba51af4398c5c0e30bf7cabce0131c1d625a159e48d92e886efcd76470849c37630d9cc71b41872eb33177bb7c387b7074fae6e91b7e53bc13dc5f923c77e07ace15b24145d87143e78b3c69a83f52760b1f7ec704f23e391121443b49eb804778f983b4c6300981cadc43af0f00cb408e9941d050159c9b53d7a1405bed60bc2f28123ad7ff8cc67bc80b28d191ab462bd42688f72540b9b5074346b85e08aaf6e14063d583ae3565c04bd019d7c9817198b5e5c9ec8f3a88598e43b9d38717345fb0a9f27a0dd5c2a0f0dd219904174f8644fb54f3bdf1cab3b9932719315684a87820b3f24a8e270e2a8219a438b368c7230177374cc654d6d24f4e4ed82e43ab26e34eab8d8ad72b35ff1fe9762d564e238dccfc7f7a1fb5d5a4752b6fbd7918b2f398f8b95e7c36b5f28c8db728f17ddf45e424fb07bff090a65300aee4422c332b18987d29527aa0bc05ae7e27b41037396eb177744113eeb3a828f72bfea1cbad43ce75a04c0da68c49d51bfd985847247548921e7a07f6c0e3e3913eedf03f01f7409be3e24c69f35fbfbccd936b5a1da711d05f1b15d23cc98afd5faf16bc90d65107c1302049716d5bb55e65455a5e69337b052f72e0fbe304249fb3b256eb9a7f78190922eebecfc1c93b7af1e6fc57e5e004f83a79472feedee74950e1e3ea7c641db6b570c62146f764522dcfcff9f9a8ae5d31d653126888daf8141f75e3145bf022e5218fd24f43e2dcb7d87ef4265599e734f5f9aab3513c59b093348fe820306b92aa41add22245df9fd1d735faba425f33f0e5caeb9e11f24aeda19144b27ba8902dc14b7be867b9788afd8e5e70c3a6a7d9a57aa8e284525653715c700ffa65b54de55a227392330eb44dcd79b9ace9d3f2aad055a0c5bf3c8f2475f38a95e38f6e0ceca4b8f6a0c266b673e94b9a9793acb936ad1fe0c7ea1fd4b85825acd78565cdaf18c09d95ae184f9655c5085ef0315dade6d57891a8a0571284de95657ce067fc365a79131911fe56c5da91f1d8abf6f8f9c533ab2a3f708031cd424f716aad71e770f82a6e9ea58b322b9a37171735e5c1780308c5933ca345f30bdbb9c9807cfbd0bad2637b221310a6b4f981ff8e7ae46bb2ff005c9c9971224756c3e018e00c3d195985ddc306807ca850d9dfae8940adc06d880f8241c2be800b8e29df8de3a64a8a9a89c964443ef20f76baf95b747fe534b35e7cee7db4863e53d4f1d610bb1639e0d0b823322091ee776491c2d7e4db1e9bc22e04010507e263469d7bec7446f5d80a20fdbed67b82f06062f608ecc3c4de41de9f1d45efcf90cf8d94329e9c0a519d037b0a53c21e31026fc55b17b6efa1faaee4d175ad8231ec731f52a8d6a6a7ef17b499cce400161765641ece4b17846c803701d9764cc4d4a4cb2a9114fd9a33d60834c91f5fc6aa08361a58d08ac9eee2be482a8bd5ea1868b0b88a6ff584a786b35431c25f83e67a6c25759d979ed6cb405609b71685549fc097747ae855f6a6d117e2749ca429df56d9f99f499e4c9c667bed72c1ef0d0abef1feb4408d19991cbf4995202b3a2f2f6917a8f8cde9ba0bbd6841a89d507099602fd3f2aa001831b1a5534f3ba3e243a6657c3cf8fce163c4900538bd2a2fe91f3a461e7c0263049e0d4b828b9a59560fc92f9c50fb443e0237c2a5258861c913c9615bf02d2d1103c1808f1fe23529cdb982fe55d2cce2e4bc968fcb057bf81bd9b7e5608b81fc0d9a23095887e401f9ea2b821ea97323cf6242cb0b820579200a097c4485a1558c8c103c6dc7c723c752fae9049ff0acf0f3b805b95da7faca5d864c9dd2e671d354d9f9b2a1d1782f4d9a645f94e537c9fb596a422e48111743ba37e231c23c9e1844c1b7702710dd29b980f33732504800b6fcd086522ac1589615df2fe94543be21910b80494c56c33d0728da9e640b831639c06c36c893839e02b6c919905f93f036c9e8f9007963c0f324624a749b2751d633451690f01489827a8b961a2c7e972b835bbc97fb3e06d93b0b8ec31c057cf075545859825ae8a844e9a708e63d341e2bf471432f5b7500350ce1887cfbbdb3bc840caea40b74e2fc863840b8c529f2e5609d343328ef10e2d43786ba5e7f3a60bf912c122ffb36562916d0a2e27f9f0a25bf368ef4f13e76e295d9581100ca70604af809b0615c2ad8e5405fd9beb1755f399d387db278be283a1890824e9326bba424ad92e994917d255e052d92bae9f5a578794949ce584774b16c9615edf936057b2ff08f9b2a601d06d9868978b74af85b78e854110b1438393a44cb71f5c8aba64eaffbac7b1c3e291582d7caf8e63a1369930ce4994e82fe7ea7c3b0bf4fe50fc9e453d44df9133c0fb53292ceb86de0292eeacfcbea2aa9d23bc47e8b91ed86bde54bc639c37ae2458838449c86c06eb4489a591d5f36fe85afddc62ccaa2a6da710cbf72607ba676bcec05d9e78600bceaa90c652d14fa6b28e0a92271dd24cdb2e68658df1e1c58bb4c99d3382fa776e953fab9e9d9fa281d66e67496d524abc9b448aafc1a7629cf0a7edfa7c1094f338b3c6ba2f1de785c983d9fe1c88bc7f52cbb68a21ec770bcf7cbb31f7e3e3d1def055495be2adec24cdccc44f059fb36604456f22ee0a02fee000efae433fff79aff7bc5ff9d0dc9c1faa1458a4061e4427e7f4646229c2e31ef5d04c6d2f5a2bdc773671423827a85842251c08e72c54e4359b1a40f6d0985158fb362922f535a473c64057f1660a78f02e9fdf15ecf271467ff5068ead964a0df3f38d3df23ebbb0fe53b111b36fe6c54320ce4fb8333a7c8b555e4815be4ca2af2ad5b646615f98fb3de43f8ea1bcfa4704e26c2cb6240bbd00a12faec0126fbfb47c43fc84d26223ca35156e511f6e0d683094bacdefb0333f243cfc8abc2d137fc171b79f235f9d381f8e71b9dfe40a59ba46fcf7cad0b9f63a2ed07ed6d4bf764dfd022f5b4cb5251ab2c014ee9dae243586d1be1a954d534b3fa9956d764964c3e5dc784bca634254d4938bbbd282bd2cc28117bb5b02e6099c2f588b83a65f9dc1a41b92c8e350ea7d99c964b4bb9421c3d30f234b6ee930707076d7e9b4e9329705906859bd3647ad25ce734cac063346c68e138310b093c668208012a71f53a71c48d7671317843c3f3815cb45a3f74cf844d3265d42c357e6939593269916d6f528aae7fb87ea20cdea2f19e4277bf49a6f6d190c142c8851b677c9f878f4c8a6b0d834d75c4778422a59fb9dc2f7f1e12005b267ef30d5a9d4d224eb4d33a66e41cf1323d6965e01cd2b9d3c92699763ffbcaf797220c451637a57a2e88b020e4bca2c927506bbde138de7a40cecc597867a5b9572f814fd2586d6eed7dec4833da555bce86d8568c6bbc146998c1628d710b21f603d90719fba16f0f74e23af01a2e38a0c2ea527cf4892411c817e428274dc2a802194511e292c750c070100ad98e4242e1569ebc3ab2e581d6a578b12176202c7e10c3e1bd41b056711cebbe801c6caf2a6981bf29df6c5ddaeace8e33a90067e4583e2f6521816e471eb9416657cc054ea1e097640419e77bdea6bda424818b72f115f95acca9bd7af8c35de2c544bfcb1def7d6866cbf9394f150e013f48b8bf2e38bb343bde8f402cf72d056946f7f1fe4a6116580fa6c4cc2a314faa69c66ddd0e169f49b26c4a60ede6378b93fad9f8337f99bdf82cde66abd46b991a00633db1118f69fa5d56776821c35d8f2f5d93b0f3f2b535d0bfd71ac68fa7f022f6ad8d1d96327f6c73b4326fe87c4fe5f5080a69b3b726fba473155aa4bdb5e3acaa0babb0de99d986f47a98aeaa64b1409ef10e137f491de32e4b5132f7cb69fba8523a9af5d15779f3f07090e0475a15bd18adf4edd5dadfa0cf9765b8234c14d9378b63bc873d08ea563d4aadb5d52555645f5b50f8a0e13a727bd6757d35bc785f66f46a51568ecb4e8db02d090446abe6d9aeffb8d601738a6b5f5842e476bc95b83ed756d65e84aa6c727489beb6a3bb0ba148f3919ed6b1ad8fbe9a42ea330dba4fd556e445d97ca2d77df9b7d63f4ec515e01696f54113569eabec75b161fdaf57fbdad0f796c2fc41a37a68f53a13699ed2d8a2123eb2f064b71ac16e63fcda28d687ed4703d6b5dc4a580296969faef12ce782ff174da0efc9819c08f5e04cdae97b6d517987fa2e2a723b540ff6c51c9a83964acf939a1f8ee5f5ca58994c55cb4953563ebb5669cfaafc742f17eaf4a13d74cfb23a2e8b773449afd9f10a7cc6e75991f25b1aabf009a59f686a4a8bef60718931f8c245316cc5a828fd045a00a961b45421695de9a92e7382ed8b703a23b272a9422aa1b019be7e8af3344b650ca445452fdf6e9a08f1cc5c168c35e972ad2b47648133c07955647398714de9a7c85bdee70d42a02c38ad1db263521617d9548dd83cf9449ff014089d2f41dbec44335eefcea6de0584bde72266863785857cd7305a4126145b6f1ed6be4a27932a5b34a3f1deac6916f5703090628078b8d05c94d53c9e94f3419e9d574995d17af0d7777ffbd3dffffce03cfed5f13c3a59d64d3997b1b1c540395e6df98219ade0f2713de8f265a20b894fd7996f36a7ba0cfb687381eb63a8081e9f33090ecca23d682a8af4caac82d85e02defe98de8015ea9694ebce2d2d333abaea6e7d12239dd20b6e6dd33713d526154df89d50e43b8048d98b0d261300df290f4760bd914768f54d292a1df5c850fbfab1d7292ee96beb1b72107f6fc78150c83fa5ffdcc8efb721ff8e0a831de59aba0df883de4310a8c6613272769113069e04e9679a97e75e97b593727e5e8ec67bc572fe2d5ee479724ef3d1784f13c9422245ea05a5292e8cad2d3ced94c57fd3eba7e555c17d614b90de375e3be3ffc08fbfa693dbc35f81bc5dfc0ffcf80b52b93de439bcc0eb3a4c4b98a348790bec836df2a7ef4da75034d54d4593b95feb65ab8f44741bb7360ee6649598549416f5ac3471a99a2a997ce2912f74af91aedb6de6b269fa4841921529bffa9e2de7e74592e535d21dadfb9d214f66c9a2a155fd21d4842a1068e0cc04c2aab27952f107a3b3669e7f0f2a24cba6941789dcb0d3d4018ce54959345599d7436e00e52dc2c6ec20fef3f77df2a04f1ec4dff7c9b77df21f7df2dd197a456a9188dceccd7e0359ee88842417e4c0ce27c1912372702b529fc653c81b4eac366300626f0fcaa40389d93595d1023c22b282b546352444f627f2ae3221e6f08880fcc8b33b865295985d5cd08a16130a2d7a35987d01469da590e9aea979441ed8c30f4e5f0a18de30b71a9bc0240131ca7db1e9929820865ad946b6c3d4afce7c8016c9b2a691fff92e2f7e7c9a4cdf6a0724a7c9b4b3a380db77e0d3dda90070f980deee8b95f98a5fa3e08cd3648a3c00ece0c6e77572994df9d55c8b7bb84217ba0daf72d8e78d9a2a31734d327d64a2305afd13ae42b4930950d01f21991717d74fa06c60348fbc8f784f93299b40bfbb1dd7c30e7e929b536edbf3093910fe5fd24d22bfa2167e9641aecc94de5c05cf4c4cbc4d068d8cec49e387e0d364ca7b56ff54e591a9a9d81b6b495f3035c994bbed225fbe983681bd8a6ada8459e9808089b564a1e10428c5c8604f629b5012d3d9051f30cf061759dd42e4a3f2d886ee2ac93eb9df7e73812aa9cb6e6e25bfd6ef0e9dab89d34447da82fadf26995a77387ccd249326bba44878c49eefb82f07360ceb23e1b77b8dbcc41d0e4e93694805cc925f3c306e2e0979f1a7ad59e61fe4f5f276f8dbee2c2ee84761a598865de3649654341dc8dc1d74d7ae8a58b810eaae7b0e782990609282e6611705a02dd73501c834fccfbabe97fe8ec206b4b18c63c596902f791436f46cd5f1bdf8d3916cfb70f00206d5395c60e78f8cb08f569ea6d78783c506d54eab0997f1d529c0b698325986cfd280caa9ccafabf9d6a09c3c29e6c2498fdf1c33369fa56b06837f18bf4dbd4ebad1177f3a62ddb0068d41aad7ed83e10fdb8695a3ae8f23d0c93ef9f3817a3d68da7ad12d8c9676c02ac78b73f947c44d1b027fb0aebb75cb1603bae17c61025c598da5c2d9ebe18bef2c424a1ac6995f7ce7f7d16341113e57399c3f1dbde31f43b2724bacf9dc7481c86db7a4176709563bc81ec20b7ae0373b50bfd7d6aab5d4ed0c74cdea0672309e2285af40f2563f623e2d93ba817774fe4d49b9426b64f191aa188bc8c6c28fa1713fa31a884fdfbc655b5ecf75d6c501e888124eb880e56442eb3a9ad3ba164a0fe5c45eca18b2f97a565e99e0a3b2741feef5453394fd8e4f7e7af2e4d9c98913e3131d75f8be18b87f055b8b88f2d527af68b1e496efddb6f5156185df56949b04d03eff14cb95567d22a2a9066089c8a6b7e3b91a06d2f51e7060015c5507696e71398a88868d7e552432542c19c95ec6e5c5e9f582f2a0f03f277996fe98e439ad325a3f2f85b4eb4f3d92e10382871f0b414e1d5991b163ca710a3d66cb8dfd3845696521f03be62f1c22f1d0615b241d0f4a483cc07544733a1af60e47220175c56da8c89a8d308c93bcac03484256749c420f1cacd335bf40e020bffa4afe8a2fbd80c823d2963b540f370603f2384d49428ab2a0a4e4317a495392494e1361303ee595aff5698d23c21d7246e21101eb33b77c9746bde3bd0361f22f708e978578eab1cab87ef160bcd72722c4c778ef755950fe94c7f65cc22780a6c242ada6cd09483823233933da83c9b6c440bef0e7b6aebba4f7597d2c0833fb074dfb22662748f1b42d5d171d61bf27f02ca7499d4f1bec1b4f404d5a9a365555bccef08ebddd0637ac16f3011569f7ee01583d64c20f073782a5e0035b340cd8ce7f6c7b9e117ba058ae909d6ecf59d812cb849922e7d26891018a14b7f6f332cd2e322174359319ad355b07fa7e36e561795aed1e46ca5227535f33220fdc6698b091bee22a175410a68f62baac58d3dcf6c98011c1c879328c294d3f371200b7143539c2cfd5d3ac9e6775fdb65c9497b41aad3891ea5296508b1c832977c2687bdc6d067f13ae8b35c9624f861af97b7153be2caf68f524a969d48bb9fde69b0b511de7f1a83007086bf0a099a12cc3a0efba594814cd9b77b501a19753cee2d179683d085337267b921141ebff11fae4a3c0832544af4b999395454faa89acd306dec5b584c57884a008737ac9c0221cadccf24405f4248f5662ee756e510a8fd4f568a517082075e15a9753228fbf243c37d731b795d440e0b4f05b58fda58b2c04954abb8ed502b8193d2f9ba69cc340e4ab3816b72d8eba48c6f2bec8f21c21b732f3005cfb0ef038b6e990a488c97e3e2fabf98f55b95c0875d2e9ab97a23affe4b28ec93d59644521fdd0b2c61f5734b95b4dbded8af34e5d70b649ae9b85d767555556ed9a27ca8a58668de0b0125458b1224eb400ee177d9937992dd98baa62d10d9c723e301d20f82afb64cd00105fd1d04d43379bccb210467143b2e1febc4d5ae6c59fa5591356a56d9490070322832a0aa4f9399302498cab2efae2f1619353e4b14ede24006f3a479179330ce539a9d8922eebf8ef1d21f148992228e6aeb8f0f32543246976ed8fd0877028425f82e0b85e864270a4587f2c64dc1fd5d78e58098fca12d889fcd81196be27394ec5b4bd05091e98efcfba406d92a98277ca7f6e0b49d2ec6bda5c95d527875ab3faa578332bcf0cf22bec1851d413cf6fc599c43d24f27469c43aa50dffe47b4bd4737c7a01486c5d89163996e64ad0bbd48feccb7d5a5d1ca7e2ac29cc0e8dbb7b26af5849320283b9416347121082a807f567c828a0c1ad700db082efea7e8592d786a6c530ce23225999fd06229ad2d2895cc91140fe4f552ef396550eebe921e46a4d9023969ecc134b12e4ead5240bc8b5a63b27bfd98119f406ca947205c9fa6275e9eada7d79a0365c2f919c4d902dc83f6a8e2deb8480073d2f5d39d6c721579783813ca3d5afe9953ced4ab6dfd3fb80898c296292b8213f58b25e61e02c7728452beeb361b4925ff1c9f1ff7bf6e1e5e3773f3e63729e3cec9986ee7181028239e229711c1fc2e21ea73b700982ad53ac519e6e1d6ecc0bcc748834f3596aecc3f84ea7bed48ea5bed9bea3f3d80ea23ee456a03e25557d600d19eeae4ff09c6878a666d65aec56c3fc214beb21410c58e3984c45ae64a463d7fecaf227531627c925357743902d22fd41535ddbc6b3e204a17dc5001a041e43d4d94c3248182fa6369362ca1b913156caecf19e28940a19c43c545f9349d24c6624a2405562445579188fb00ec4ea237447eabd3b03e265d448e7362830c917c2efcb79c832ade0a9956e146f573d3b3e803e0eb9b2acd11e5c2fe868c5fe45ba073128a3153fcfd6d8ba9980c7ffb5d64971569d095d20503c49da13c164781fad67fe844c929a5afd1e3a5c2ce35ee66c9f00a0ba18a521e06fa12aa0a36bf0db0cef68657e8714256db77f84ac34ab228fbab128ef1d93f3c48f8d8779b641c67b3ad69d0e16f2fdc1ffb622d91dea93aa36e9e57ba5fdeac39c59f100ab80e7a35554d0ab9f456c746e12383a321bafca927e30631123dc7a75c013472bfb85bcfdbc40237c041db178fa21f775bb27ea888d1b07da808d1d547d5382c336bd5337e9b7d03f1ea9ff7666898938dbf46259e5b732434c48de23c2b8e3542888fefef7bfff7dffd5abfda74f6fab735c4edb6a8e92e6560850888176378c32c8ea06bf5da947abf7e33dc6d11f6873e63ef9fe2c4c95f4521dc88de4c943d71f174d04bdcf8a3ef7c983835ea0e3f236fd16ba2e655cbbef5e8505c244de6d8d565818b2f0d52c78b4d2b28ce7b59352cacaad4a0d9211c0d545c86d745948e5768f919e0721c837d7f19e8c3e643f616b415f8bff5eecd1e02859ee36faf7166cc176283e5b5cc11b761fc98c38b65ee7e64fdd77ebde8695402404d170632a0dbd5693aa61a9ab66022a0f57dcd0a2e18651fc4983fbf65cc9b26ba3356eb5353c7df5f23439e742fd1d1a17fe5e81935c7bbce759ce9d4472fddf8dcdf210b4b0619edba86b9fe796099ae93d99d1c9a77a398fc2927353c195d4a447aacee1a049ad2cc4cf26b2dc1a153c1c68806dc7026e95b50552acfc2684f8dde02ec8b0013dc9fe41c3367edc624af84cb43d376e325e74bac25a23ac395f7fb00d1b474a6f835e84e44eb84bb79f4a3f5e1bba6dfc88ddb8ebaac5f69e078db37d9ecb76eb7936a745cd0495dfb1efbacd4d74cc5be6a79d35f94cdc2c191271274aaf9239950f6fdbfa7dc1ca5549732bf4ce6011d668a78eeba619cb4ee6b466fb2e1134b14b977fc89a0e1d3ecf9a5beaee0f5913ecaca1f17389550891dde8fae72ca5e59332a5930dddbd64053f4c58c95be8326f96f0763b4d31687da76e3e66f260976e265c1f785bdde4cd6ed14dd0fa4edd64e7d9b07dfdb2ca6ddb7a96b48d5dbdcba3caab222f9394a6e479556e9400d801ba53c7424aa4432d44a266cecbf4da27231b6966edc91522852fc7ecefbe5cb30d7a73c156e1856d38aa2f5b731f5f265caebe7c48e7be7c4e20e86c8087ee70608f6f50a4ef687f7ccb76c7cbe994d6ffb686c7b27723d54f687a2cdeb209bfb035fab889a13104f4c8322fe6a1f585be6528add58c7d7b9b218400ca55a0b223776a348c062382f7db7398e33313c605a475304ed446c1ff7ff6defdbb8d1bc917ff57609ed90cb54b9172e2ec7ebf7af9387e8c3dd7b1bc969cec3d66aedd2441b2e35637b7bb294543f37fbf0755785401e82645c999ccdec90fb1d878178042a150f5a93b18e136cf5d60723b8c5bc9d24281bd6cab752c1b8d6f25eb87e66f6cd33342b4e6b40ff05999a77288c6b8a16dbb856db3f5ac5ac6a0d1542b868e0defd7cd9486f1d202d8f3a3ad2d745b36a0df97ffb176b9a8955a31328e8b655e13c86adf8c9765be8b396f387977b4d8dd30a35bd8e74616ff2ded739bac57916f9af1a576d907f6aa368559ad569c5c95862abf2fd3576eb54af8897d7e268747d7916aefa8c13898bc3ab2b2272ba4634bed981e568c1c95548ccb1f35cb2ad126505e7ab2a2bf76b1c16d1298b2629c642f8a32994967bc3a4eb2297cba8d716b54e07287ff2bf3e7cf4996212a90865790bfd54fcd43e9f31c36b70d328d7e46c5329f4452d6f6848fb543dbb84eb2ec30da07232ad4370b89d69e4ab651c77250931f0f9034fada51f1f842ef490464b9c011c0c35762048e6769b550cc15e1fbfae71af8e4094821c717a7881201762e8768c9a04f644fb0710665a059c3de90be74f70e79dfdac6c4041b6bd4b1ac5885c38e1db531c0180cc4b9acc50421a52af5c90a1b4d613e89fd4770a175873fe4d1a4eb529c70984d669b105f440cac08f6145b495eb2034ef25066f6a8453f76cb4c049d014a277465d062a937096e9531927ff8b52a7290ddfe5a1579446623e54273476d0f58ca2b559a167e27a7cd4537cc956726542ef327ea4b778fa3d5abcd534c851a808e7c641b19764030fcd84fabe7ffbd4cb22e8ed274d406d962b62668494458935a05962ff7c45fcfcfdef491b8e9f406aadc0bc2b288a01171025de466406e4c47431a80554f8a2c3184f6f3b20ca784b8a4dd958cccb0ca22facb523b7159f32a4a941912e538c96f4e83204106c3bfaca034900c7e755dad7ea80f3a8f27d1793c1bfd2ac7753fad509d3fe961284ccf5208e945a84312d484e8c234cdc50cb1d65cdaf0cfe5d1d562823fdd1ba6d398f82157b65b0db9b2ee56cfb05c5996eb231fc4c973d37827a7ad58220d2c99e23993cffabc0c8f33d0adbc54a7fccba2f8acba8b1401dde3f3cc9c28efe414a70654513f61a274884369f5364b6ee04282057e5cd68a0bba72c63552678726b7ceafcd250efdfe9ee177efd86a1c9ece8e232c6525eb330c78f95a2657d23bfa3d8f785e53cc2b7e594997a9bba1cb7b4182a3bdd95c7a0ef094546c36a03ddb02fa1e6c66c2150bbd52697633136df9f9455b53f75cd6b5563134ca07ac2d7a3a825e22a80a4fecc7611b68caa90ee63eabe5d0444cc5761af82323e8054435d2b435acfb881e370f4cbe68406e93d82ff285a574d7378c84c84696b6ee8438c118af1e43b393160f052b5c683556cc7685a2c3f9fcee28d67195df763bd63a0dc2bdee890f9a5e2422daef4aebab225b02b41f9bfdc7e2a07ff0bd3874017c7be203cd41ba6b18b4ee4ccf8dba473641cfb09a189cb8dee73a48ee73b546352c62642bdb1986951b5b0a7ce90654439ffd28e936114ea5f3b581eee6ba2bde6c93b5e80a011c641f8ecaae392af90aa75134d1645e037c90a3b305e89c131318f09d886916ecd7a1e68308393935a354f4b6258058aa527a91f5833388f1055b0f46fca741d5aa72cc23a9d9bc59914c1827884fbab7c5b998e3a3aeecee77fa4e4eb7723abd3b36da36cf1b9b6526a86a5e149fab407a723e9b5c128816767976438fbc135625531dfc9c64d92ba3692496598fb56956965ec6bd432b8725f898987185289228a195e92ccdfdc794b32b5966c9cda1e856f3e2da0a58f421458871968e3fbf0415a86a89b8e9473b27beb475a6fd8dc610236a58c628c5de66588aff468347e3dba49e83c4ff93f9b59bcbe3155f5c27de6aeb732173151162c1ac9dc1c5dc5a60d3e2dabcb8bea07a8fdd65b698fa84cb6e7e087a3c5d2d3bf4a8c0327192ed055c5d4d86f8f245b81fe4f19fc922d470e0470ebaa9ef877676bb41568d076ec03cc92918227a560c58a2ad6e0dd5bd28e5552aaf2395b3dba9d114eb7d475cabd66e5e2772542cf3b19c9c112a5ae9bffbb16f327429997be2fb8383d0d5949ddf1ba60b33c5a78b8d9f0e31da5b17ed3cc9c732b3e79d3ffe16b72bfd0c13b38ca10c69a33d8c675003faa998ba31ac3af49c646b2558603b56fd23837fa59298c1ea3d2fc751b8de2d29723b3ae806c589f834809cd5e04fbefdffa7bb50c335b03542ee063a9135735126393e823ccf27e87061341824497d86cbfab3f4ca5cd5bde76af4d250870cf5dad00f560c7d1edd394009f13aadeabe76faaabac3cea4588e32b95f8d934cf2d0dabad4222921fa1e74a10f1e62fdbfbdd2a1801f1e7032dfaab07e2d882d29cdabfc55b50d06b48e615c1d8abf9eff575f374d83cb6f62d3ae6d0e20aa59b44e36cea63e1432c9fae09680c8ec20d078ef761d8780a63a6704d614024e322cd3d395c1ae366122ad321aca1b5035523236727067f868eb6ccfc25a43feb9e9146b22bd3ec1aee568c180ae7d4c6c0a52caf30d065b42c2de8276cccac23a56aa8536ec40fdfb4a70c190a6243a965b85fc188bdc49d559612bc640fbc18e3da2e732ec30c34d78ecde13b15a07eb1f456eb02a81bd592b06342dcacb3348b0e4c27c4751606edfad540d5accca74a271b959484f72f7b745566e88bf1669de1d76c4b043ad21b45b2afcc3ac20182b3d59791f585677f01b279c56a9805963e8d23f165772e7c220b8a82eba5f3613b5c8843b6ce02ea4e58cb5452d3f2fc76bee38068b897e11a22ac7272b2bb27a5e5f9aa81bd7a0782c566b71285693b45ac0456cd8c91167d1ab3159d6c5db2cb989bac56645b1882640f052af175ac9d2e88526c4717a39c3f1399eb1f6f2acc2dbc763de7624ea29dfb6ead2d118d9ced660dca6b334972f75fce787eb7590598888b3b2680898ea2346d39cd4bf9ba63303558266cf5b680b6fbabb9a66374cb0cd2a9761a73ff81994f6e3ca43df32776afa6065bec5b5185107b3aa4d8fa1850672c855edaa0c63f4f8fb6a249a7dddf8b0039d44ccb3cd186cce8b6b7d0b427b4df79b2926e26f3d44e23557294f81e3803c48cd90297edd9ac91a8f251ea5be27cae2fa3cfd9b741feaa24e3212c55e4b89dcd8b37a529fd749a90468a84ffc8ba908b1e58ffcdccff349435ef3f7be0db087a5643e79272f9334471915bae58a5a4df360205ea46555ab0422b5436e55fd4362d638ecd4c562d8617747ec9207888f3921ba7b6376d26f252fe9268fedf76fbe112e3326ee8b877b4123a5e279d1566c5d0d43b004f8018cc138050cd11bba416b1ce9e2b18ed8898ed613eb9fae2d423b36a3eafa78e06a3d7595d26c919adb2a3d69acb4b9a73e319f5fc9f2a69eabea94c41da105ab642c417d135b2a3803b1dc3ea9bd74138ac6dbc3347a01f0de46b7a26a5b37225a0685791d0a01e3f547de150b23dc7a1ca527beefb1ea1ee860134e57e61b120b716c4f1c7210c3fd218a45a0c3b586315a2d9b5442a2fe9365a0278ab99ed16fbc3618d6c90aff25494e44f2accd37cd943efc1ae74ba7ef306bba24ce1d1adfdec3e4e95aef36853a46516c0eb17e93e50f3d95f180d00576ec29b9b892135f3c16c3ce555aa52375cb0410e1793a99c8dc5ea937c6872637bc4f2052eb16c59f567edbeb4f5c786fbe54fa900e1186b26ecd60d731139637c720b6b69548cb8d88be4f931221d19e1659962c74d4ca67a9badb9431ccdfefe09f37cb4b59a663b04ebf754ca9957891ca6cd2c37f74287ad50cfe3ffd6cfe4533decafcf4fcada6f0312afb339d42ef5eaf02bf0b3cf02e71a9fe0820bfa16758431561c6f0ce0432bf5f5e250c6cea0e61b67684600ed140f40ebd251888f58ac1e287c6b1a8f5b2165cac485fd4d6807d64622c528db33699d7d13bc937ad0105d4389680f8320e6caf19bf848ebf19be24a052885e126409ae78889e5994670b996ba459f761c325cfd91f2300e78ffae4ae64fd9c7e61d5b4cc45d4a34fab355d89a7108ea809dc96e6e10fd1e4cd06d008db6bd018900d353c93555d1637ed55e84c5d3e925fafb70b1cecdfa01732c789d966556b4aea27168e98e9a6978166fa93d6a5111f1bde3d59ce0ddbcc8b7f10966f935c7850381ff5529fe76ee361575ea4f904ba43faa42adaf305ca4b23b892bd8b22e4c7cb50328d99b0993a2ef085e1b2f1618669302f92198f37170f6bc99e1f4c504a2df639d3c4b860ab05294f94f5148dc75a26f1b4a758365478260dda693e9bebd3150b0a7a3c4842fde603ca7ec46355b751a54eb322a995d0a9af99eb75d86cb029f6d6a7eab76a2b8a801913f65a86dafe6677e93dd46dd7089be471524ef62b0cca21f0da2c7d0157a00c6b96d7c666fc2f114b4abb52f4f2766fb0f47aa09f9282472453c75c2bba879def0e0e16bf9170ed4ab89f66c5f5ff5689c9b22e2269ff452f140e8fd83d31a47996e6727f9415e3cf24c76552ce52f01efc9eb569114bfdce4c33f91bc489120782f565cd3475fa7190991fe88774c60b3eba5dbd3dc3418ed172ffb49b947020c315cc8e58249309383b0c3b0fd508bdf7856375dfe02f651b975f01407514f7759ed6f27c918c25bef294974916b40475bdfceed4efac66512fbf0bd76f13a7debc6b8e076a5ca74d57b5c0635e1357cd521b3653515e460e94223f5f8e2ed3ba0bf0964a8c7232604f7c3ce497a763927a1a9c2a16971c2cde988874c4735e25659a8c32d59e7784a21cf393490fdf08504c71194ee8c9a4e5551c4b9f838213d915fc9c5e2876ab876d591acd0d5ba00573dc0abe1f11d9dbb64be56192dbe27f9bee511870ea71a0e1de39c83be91493f8568e9862bdd7afe732ef764b592d8abc9221eeb42f1031df169b85cb45bec3d89a5ab8431301acf793459165057c864c81595f204e2c837975e3c2ab73cb2a209df3ea81907a82adc507fd74721425a9168157747dfafdfa87a0b13dddbcbdfe4c66928295e9b5c6c813f528096f02dd152112042664b5283ebe9154d417c2e62187b74f02935f46c6bc81e8ad04f709a54570c53e80d775a756b77448f44c4ddc3072da45541464354430544e561e07158f3d029bb8c471996f912563392fb2892c1d5c39cd908392d20dac0f7fe28936648add1fb26519c989092caf86480eb25e31c809d18adb400b17e565bf92355018602bbac34e8d43e9092cd2ae1b8eceeb39f2fa7b9a59aabc6c9e00dd269f82063cf524cb8a6b5dedd3795226e35a96d5599ec5ac4cb69f4620a025f8c79ea8b6a277657aae0a7cf595b1ed1cbeb547ec3d4d631306b546a046c4643e7a063e6deebb9bc84965030dc11cc0531370ea4d4c80db273670836d89aa24f77b25673460462b4d6dd88cdadc2236f20390a23429e3018f1aa85b6dc163b789a1b403a51d1dbb53f71a71489f269a889d01a8873ac6f1e185d9fc7a60287ac018b0c73be35da7696dea3ec8ee22f8995f59f4fc6128481f94dd22814f14a729fde42665474f5f73df991bf6c303bcf1f1e28142c448342c9f771bc33cfc8a85e38a2b0ddad675515eda31608f2f8a05ed2fbfca85f7cf6c79995722adf62fd5e650177ef563962c3259f9e0ed710c7db8a8eb05ab0f764c7c51a8a3461f9091665543d36596c56cfa60a1e169e2aac0c56a209f9c3ce45b1dc671e39b47608e14da6d7bce34747c9e64d38d1d7795f0aed323ff8e9dd7278fb848667c009cb3df65145e4d7c28dec977c7d160c400b67c343fbdd3fa3175780bc89c2fdb773aa21df1b714b2a1aac564d5842c880429300126400732ec9ca23224c21e683d1efff39952fc26b23e7d0a4e570d75af28175eb7910049d574d0a8e3419f703f698d4e92df50e7bec69380158bea55221790987a8567d39f43b5897e2f6c1368b8f6e4555879e3011da8557cbd43305a3d460c2c63c7f26352cffb65b1cc275df38ed59fc9faadc674ebeeedf5bcf16005a6bb1f7e597bc046be0989b1951069a596cbc98abe100461a8d2cf1159060761a36ee14f4f56c7957db2327fb164be4f9de011156d8e07a6cb5ba04cfb1638b9bcc6a9839394481bccaadc5379f3685c7a17b6bd8da8dd06eab1c86e5b517de8da0dcaed32ea4746757ffc810c6dacac09aa2734b071c65f1b2cc33adff0ecc01e17820704f6bc508dcb423168f748e0a9b7afcb64117f7d9866d27f44f8b94c16d162383f68bfaa327c4b1f20d65b184bad187da8591259069c40eb1866373e93369a35693b3734ef20a5a9b51c0fa3c4e6b8c5808d3d8d8aeb349f14d77da4fe45d13de88983bda3e833a1f55564b1f30677b4c4fafd83dfd85047f008e319bdb8c8460396afc1fac5e6b99f6038bcba66739248b3a1414924936f52324eca89ef66d71eddd7f8917122e2731809fcbb7641a148c25a2433f9a22c2e9fc15599b60a51d90ca8e85e1c3596f9a631492ab0355cc1c8a23cb23d7a9335046471fb9391f9b7dadabc0fb47c1aca5ae7874ffb6853f43f2e96ffab1f924a46b1e0391cbc2da003b5fd94ca6b59fa656c18b901cb16b174433b1c569e7ca77f470a639047dfc46ee0a7454ada08f841399b1229c542540525596aa43435110b0ad3c418991837084af3e4266ec7f0f6c984af1af8590b076be05951c3b7dad871600877f32b12fdfeb47bc0acddb47341a58337b312ed81d14fbb2b06aa72bb20ef1ccf5fe340f644a623c3c6f0fdad458296dc002dbdbf48cae4b2d2517587cd91ba59f061dd0c434609036ca33a467df263621f9190c6d825d6d97ca94485f7465dd7e535eeb9a0e02ae1970d1d473a01677c0b63152794756a88512449568c01dda15fc9a41ccf39f03ea9a20fde431a7c947f472418c382219b594e81406ce5fe0b9745d8a863ac5e8836469fec9ce9112d1fc2000fefc7548fb5e8193b51696cd35270c18bbf7c111a9bf5b3bca9d04b672f7e75b8553cf621c7a6d138fcba072758a16e38a9aa749677578149cfa17081be9de9ceba273440017d75678297180cc4c5d9b333f132197f460e98e4b365969496385bc4876f154de899a4dd87d818d76ec19dacec9f54af84c641e9e464d8d1f1841b3444c74a1e092fc34f0000fe2219012b6f787dcb92722683efbedae822196147d0d5da74678167042a57682c66012927abe3e0708d9362701a51a85d24235f4947faa02f38a60f7e4ed3257d1a8619580fd9811aef22db93272bf61306c01bf047c3aba3c2b5de4aa7e2c077748fd38051c1d6d3440747091ad935ccc5c8e1c9088d73e6573368f471675eee408f070f38457484df1d68a04b6ea6800d57dc3c7c2e8bea9abda19baede9504feae9aa699dc4ff36911ec2b8888a904427f677131f2def6969ca4f5a68da5a4db0dbbca89c64d5bca3e96e6f21a850613fd18a40dfb75c3063b1e280e48d57bcefc30bce63174e7a74566dc5e22c8ce90e74551ea80db1839bbd145bdba4e01601cb3510122a9a4f8fed079db628efdefad5b9ecef328ccf3c8cff35d98e73b3fcfb7619e6ffd3c0fc33c0f491e1d768164b28951a850df930eff749e72f6424d9de99e67f20a243974a67b04ffbcc5e023b7f6a36bbb3d5b7871ff22fdc7c229bd0bc22859c951acd0b14abf2328e94532e3645097ec7952cac940276de582c63cd0c2eba55a2a0d2ab406d0d2866ba7aaa8f9ea699b09af9f3629b8826ae01a8bfaf9d6fdfe7be17ec26533bc4410175a645f3f244a0e6f899869f9d6c6c098bea3b0e61f236841fc69e5d662df63a191f6d69fa862fcdd938b576ffe72c8c3fa62ce96a78e163ff88b64a6390ab2a4e690a8f014a7c5b16306cb71e4bf7c6c074b66fb6bf60df31caa9319fc70c7f3de5ed3c3831e0162ad2630c6ff95e69393d5b0334756b016264ad3890398081f9de8219a8e21739dccf8418ef1c71a281355f9ab9b0f021f1dd37700ddeb6d67ca899ddbcd5728446f98355760175db73f8fdbe8b9ffbe33ab78ac6fdf144e6e40c6e6297659ef34d1e4ceb5e554471f2e37cc3607b810cdd5353a0a7a0f5edac3c862f2356641937dee74e1bb71f1b5e4fcfcb47f9785a830ba92d05de6f7594397c942dfb537ada3d81c352f253a3b77e31a740581bcb91d875717ee2f5f5c9fda394b5beee8e23c8dbda953433c6e131477e73c26a31297699e5e26c6de7a079fc455eba9e85fd0b760cc2d459ab7b8671a4446c86e7471f3a0d0a939061aae251b2b99611c70f7330203ce45b9ed81b8f5686e0b53be8e8de23eb0b4e9205c3fe3ca4a78cf365742ef1555fb319b64692e6a272b7b67eb9fbd796e27936375d25f7e96664c4dc7038031d6c5c9aa052a9aef80f432994933c909c0dfd067e04661981a5e005159adbabe618722612a565a3b0820ba48aa7129655ecd8bdaac93752b5426370879c0d6ec63715c15cb722c1962266082a29609aaa75b066a258c946349b6f931f3b3e0e5236bc6a4b8fc9936cf512dca2c4b17550ad6ea05f96e6c7ad69121f918bf8f23b8bf87ee2eda9fa699547d7c511697d1cdc8ad655e3ea27d072060665cb9f80e0141abcb24cb84fd79b9ac814586d6071a2f9854ba38255ee575b9ccc7492d59b7b446bc271e1e1cf4e05edc17dd7191d769be9493bd61676f7d3c5804c09ee6f76ac379b6765923274538e8cde7011bb6a278bf4affe681b78bc7deac9ca77f935dfbf015ad011ec0f6c2d5f94d3eaa16475ff09fb66e4c9625709796aeb46371f36aeed215704f5f8bdf2249e8474f2ea46cc9ac184a083d15ebe5242d686f7be2fb831e4606d3b511ede53d21bdb6aab5c08b4d31a5771899d5d37025e0a2b90faa271f1949bf1756ff8991a3dd07e26b7a7b1dd8ebb4aa9bb55f26755b9b133438198c924aee03d9c3c6b4a78fcad8503a4bab7a1f63420ff01f5ecb33b4415455f484ab6e8bdaea9b858ce0e386584f1b819e3c23b681fdd8a0645323bfb51d872ad4ac50b355860a359be42bd414312000e2899df8be120bd2aa369179a796a08784b8f8aa6b8cb2a1b19eb91ea9adf6147112e05ba81c637974d4e0437f2f1c6fb3c44f7b36e4bab798b8384a23137ff922e86ff7f45e35c419c116fa13b7ce408625ebaeff97329db45f38361acb814d6aac57214ea786dd772b8f636772c04c3138dd6bb6708d4440d962b88ad6e1708fe70f4f2fce9e9d1d0fe60f4f77aa576db148bd6e5322294eda29456feda1fc6dd67cbf96978b2ca9e53f049bd777757f27e8cfff64f9bf07cb676cfcd6dc1ba7aa918787acfb6b706cbd5eee856f9b721bb8f7962bf7b4477b1fb07348dd81a7eb6676e7ecdbb124eb0bd0d609cf39e08e5c0a58510bcf79572c6bd913e7f82cbed5d3a916661a6c702bfc1129a0e62a28a43e365acf464bb824bdddc8eea96cd85c5877c7382c6365006315f2b7645c5b354152cf4f861dadc11876c4d8ecb59395ed9f7b22d85cc5e0d218330555b98e07157a751ca693487953ea786087b54703876b6b004d89d05cfee543fa82fff2dfeff1f1fe2b44a7d8fee53bc27063dc55073e7c322a9675b3cbc64606db644c08f59adb619bd702453256929e968f9fa54956cce04f40f9705619cebb61bb69da3dd2c82d9c1776f44088cd951ae3242de5b82eca54722057218afc994b436091c9a1e8460bb447f37801302908147197c3f5838edf63fa85313c9e7a1f239606a744db6b0dd5f52992e633bd02d03cdcffbc2d642c8215abb392900d8dea6329915e7ef8e5b4fbe19748a57212af927ddfaac25b58da93aabb3edd379bd9473aa8153b64fd381bf8206993417cc4449b94de6caf1f9b922decf769e71b2cf829f41eb462a9d62586e8017530145a8cd02d148dd4434af81b8305108dae758eaa65906d4336d0dc70f804f50ea274bb4e1812de18ee117a1047862a4ea2444301b1ab2ac518662946c09c6c49c078635b10a0ad60dc535a53d8f707e812d5b5cae01401ce5fdc9f26168aed69565492611334cc2a2965cc543572bb9d1cf7a4d516b86002b5ee5bac4dfe28ebced0217bff8cdbd28b004a0bcc799558e6dbcf16b945b792807a60461cac73a9e38622fc94ff10abb1aafcade6c7704b677313e5f364b581d7185722f1b8d5bfe3fcc727af5faf3d2be8968870abe899a28d70927a1e4213ba0b90c35f8537b110c322a01a3e1e9d6201d442314cc375ab1fb667f4a605acfeb3574f5e9ffde5e38bb3b38be7ef5ac173e2453e3e797af1eaeccd7980fcda841210f0dcf5e993c9248aca11226ff09019b87b5adcb5035174a50f1db50ee60f4f57e8137329ab2a99c935e8dda253bfe22cc27d8ff1bcc6e98f4fbd9ed028cab5cf9bf512c0cfc783e4d45b066409980980874373238b21a504dc089f73d4ac38c6e3cdcfd6727c4bec91d89dab51bebf3f5beafbf044beab1bf2061fe4e6601641248b3b18431749d55a42a5fbda54724f885951d374f66387dbe8d3229fa633fd0e7a875be960200c2af218aa04ef084965783511466ec7bfb713fed549334a2a69cda99f910fbbd9537fb0abca56fa17fae576b5ee74af6084f7424920182ff628c38c2d35988c46b16a088dbf18f5f0131f3cd3a16e7fcd18d3feb75f342c0eccd41f45f472c16ab6fe9938da20328c71c45485fa38b08c5b6ce9b5d6a539fa9a46aadf66b5e9ec7471f1329492ac085b3abc0c233537526bbb3061ef8c90dda06a20b74c3dc4f04e895527d54d3e660d301bb2babcf1fd98513f2c4e44729da4d105d9dd6360e704df7899d52ecdf1bf7eb51c8f655575871df4e89a684e41ece40420218bae24531800427765ccdaefde65918d0b7e4b69d77a33479b397ef9e8f4753a2a1375f8132b250762e7041b0b2c88d34d2f06e82ba34ea79361c78a13c2f8c057a22ec44db12c85bdadc46e38ec2c2112225957272bbd753cdcadf06e08185c6c213700018590786d8337fb53bcf5ee468c04707b32a317d3a214f55c8af3ff7c9dd6d2b244d12de57f2fd352566abd43eccc385d9cbc6474dc3fe1e589b28475f3cd8cf114ff5676075a58c6d34e8c703d588a58fe24a669262b810ff7267c88f691371693eaf7a24c6b7588cb7a7c5b62315ed8422dce4e6f4bae88e55b332e62786d02c6b83e55ffde4a187f3a97e3cfa3e2b79808fee8eb6ace5b95e44b30c34371f075314eb2174599cc0251593fa2bb0c3b8892b69d6dc4485fa7bd42c1496f9635ca5fb19e7737e23dbd7c74fabe92a5b0a5b767acb0da070675f6e724cb1a371593df603f4120cbb49697557c6398254219e7587d9380800da7cd6304ab5055f56b1adffe799e8c323911872282cea03923de3051ab25927c2262d0d376d3c5b42656ce8b4647d05d76ea499c7771223ef6c75991cb67522e4086e3512004cddd32b6137dd236e6f06ad58ba54b6ae70dc7a1e776988aaa58e6932da600b308c8fec7243c1b0923384db91f4287fcb99d87fef37d5851f675316b0910b9f3f3b0aaf6965aa5c633ed5ed4435fe98177c758a55b286c623a9beda6d6483406cafe5627e3072b73a99b1efe1d7f8c75511fb91f7a459dd0b72deb4440596bc3a02d4bd6659257e362a2bb7c617fb6978f5e540de51a2eab783b652a0540dafa51d689e26cb6f8ca12d1d1c48ed07578bde1e20a01f6e5c488cd000bf6152eaf8188c2240f3328512d176a91a5f94c80679311cf7b8817d01357750d724051cf6589127edf1d4b040ddd303a978841fad83b15c19cd28cc19d999abc6b274ae107d135370dbc4954e372391ac9720f856f7624bae5dd7da0ebe3e27e786adbf6cdacae43a1ceac7b81fe70760188eb793a9e0b1099aee73217e005ab88096eb289c607a3c778a4c7a676eb4a48a2c76cd7f51084d7f4dcb82577bf3dd048dd38b1a6eb23394b7391d478934baf640e70616a256feab609d8f740b77edb4e932d13f6dbed78d1fdf1ed23c517ae6459811ea2988a65ae17aed4e351d2f36552579b3aedeaed3e701d8876dd5cf9266c71a33fb2db41b11ba0e338c448ce13641a8ece27992cebdef03e9f66eef139e60f8c06bbeb51bd43c4f7db1def0e7e969de0d42494a7ec20ef5d24d5e7bb087cd690eb157416162109faed7ddd60c635e48a682cdce571a6bd1ab9b14cf3596cea6ab10d2135b71888403ae149106f02c96feee6f089721350de96972c17b6467319ac9312742fe47b73b01f679de291851ba74087d87b709c8abc1476daf12643c2754cbdc0238a3c29a5b82996a25aea3fae93bc16752170493f16e2629e56e23acd321d19094e11ab1a55624329f7f50650ab9dd60eaa645ccd72222ef50cf7496f981f2b8c326640103e4c8c937c47590f8b6e27bf55e324ffcacf0e91154d1d746fa1f667c29f1a25689b72796d94f93059c964225298613a8f7dba5669182220005de181b8c757173d50b1b0394ccff157a84a85f9b895be9652c7e9b6b52307a793c79007db53f0e2ecd9590355c68a1bee4c165ddad0e5a9fee911a6790143813b50ccd473bb05f51ccf24b6f9cdba4af3ba107f3d3f7ba325b406b22123d8996ea6b821dc73f37b6bca618936d26d4d8e578ee13906a748d0d71c33ad442226b2aacb2540e70a84d269da686978c8dc8636a6b8a18d39b3c223296a74e41f3268737407159d0568fcc78972b0d90bd01365033f0de60114a4c64b877635b15ac25cf1daf8d34aac269e235e8bd52cc62ab089f1b24e4a8d1576a9914fb7764aac6f16522dac571371222098bd23d2b023be8861a756b5ebbfb36266fe4cc007a673d4286cdf49c4ae559750a7a5fe62a2347c39edce745a776f2b247bfb1e7be2c398af7bdaec7a9e567551de58387b238478f0f61e103e6ea8747ad35dd5c9e85040d7d73db192f9183c2e1d1ea4b016dea6a9528229729737b9ee690a84162b6ed4877adeee19af9fc1e72723f1e54b14b03f1981d5bb83ec27c8ec76cdf880957e0d498563d88089b41973dd435cdf1a6ffd4a96753a4ec298c9442592cbeb5713ab1701dac327db7b7a93d0cff0c6501fd24f566ed2a2a790c59df6b79f319a7fea7db7a8cecd1cd04799768d58e6401ab02c4d6c6aca638fcdcd18b6619ab8d0bffd0a09b76bae4cf31d53d76bfce957e5986e734d9a6dd9aa9ee8df7e5de448e295316ceb566c989578f9b0672c7ec5577c566bd1093579e6718e5d27758c5d478d07b637bb846abb0d2ee33ab1c5eab15239b601bfcd93ab460ec1bc4832792579a8d1c0d104b200d69a982715225335e0f71dfb714485385eb0cae6128833ec9ca29b2ebda9470be828b9a72b4700ed213e2e9679bdf62b687727f8fd86678342ed34420ddfff071fa30bd7b0d3202d82e51f7c988888b5e35285b27ff0015e24b3dd465727b39d86763cc8932838b627e9a8f16f14745696491ace7b178b586ab00b8069cc625783a8b5b90f692e4eb56df3ef4edf14b56205f3ef1c0d16a5a460779fdcdfe6a65fd569968924173229b31ba15fb17aa22a2ea5a8e760849394d2e413d745f959a4b992a767a5acaafe90a0e5feab8639a9407f4760a6937c22709956a2c8b31bf3b0ab7e49b028eb0909af7bf362399b8bb4fe7325120191d5b53b286be8e2ecd9d9216d17602c009854b58c180f6240ba4033ff2c475531fe2ce120ce353c605d9818aa42893d6a8cf55c8af7af5cc94f04e8ce51d62dbb9dd1089e4f52f0fdbb90bfe1ebdacb8b1f5fa3306b7f5ea80c7f5cb0827fa4488bbb3ec6a919d8f0b08690ab0c2109d98a9ae237c9d52809423b6a97a720df1d918e60b7dd451990566fe4b5c5eff6c2ef69ece05c5eeb6e32ff28df310a0361bb5881fa57fca50edadd8b55aa4614d6aded4264fd4afdb5a3b7549e5c6225ea24dab18e65994115efcbecf6de5583819eb2885799faac9dcad49fcd511b217943d84645246dd2e1a8a63fecd4ed37b28643219cf45b0488dce9a6031056144a341223923b9c6912c72e4d2a01bd76ba3343693055e8ba007a241324d106c610a67c430318cb7c430398c936c06e7174186a63201981f48762c35aa06fdc6a9963b1be5afa043ce17d99e984659931c1e91e436d2295366277e0dc7ac56e174fd35be15ddc4d7dd8061f17c465cd64f437b768a4b9eb8c1e28722ee69a67791db721b0fe71588b1d84ab467cf38d7860f966db859d13d4ee3a1ab271ab4894148e6d9bb08fa18943b0ac998e34551f638b94ac77f125bed14e69147de0d5e68762bae66f3c0a34858f8cbc189d9a2ef4a67963d3d0151e57e188f79a3c50dd2d1c12d9a671f6a59e4140b4ebad0e8c7acb50db75b79128245e4586ec726b90d04d6d515eb7755b38cd3437d7c9032ccea781be260cfeb46aaa0260ef499ff57cec62e2e04d04d9a321bc0d7007544f77d55da53e44f1b9ffa2282f9fab0fc74a4e87f5a3e1444ebd2d304d338482944afa824ab4ef970d9c0226ac1f0e7e39a2e54a994c648925dfc1dfe204cc23dc07abf0133a77bfc8153396f904dae22e193e57d445f434279501ec39f20b6ccab93e627d50ff3ca9d429f4feddebae1a1ba3ae0e3f7b289e9e9fa3222072416f81ee2fb2e565aeaeb1fb7053ccd25c8abcd8af16c918b50e2d7a0e2caccace936c2acced1f7848438059218ed3cb19ab05d7e5b083c109a870e569c237a95d1aba83ff36f727bc3530fd0a76ef6485ff7ade36c0584e56f04f90a40f1e95acfff4b214f945319b6510ddd2bafcf0238f9c5f471b4e51e65f83d59febf818e72e32864b249b51e5213f5b50768ee70f8398084e43e569a6e89d9c270931492b70223a593d68228f451f52a75590c681905477c218a2e42d0c1d43f55b18886e51bc236fb483f9c3d3218b65746c150936b20580fb1f8a61e7e1c1c1bf04812b8438ae47c5e4e6d4efdcca5d86fba893a2f482c477c57577051a3d55fdfb77af879d1e12e5104e6d416e8566ac875a025dfb433b1e84fd381ed8e1b46801ddaf2ded3e22c138bfea23d2570ca8d904055969e540fca2100f248907705324c9db3a6ddd5fcc1d37d51077d3ae031d36c74a133ad88416ff27eb4f6485851c9d86d041b9926e50b37946c9f8f3ac2c96f90418d0a1f8b42cb3aedf96bd6aacf73ead63a6fc7f979034ac8f1e93da3e9a0c848f11a3ac187f264164b052fa84a655b27d2f4208df9eff40013f705951286dfcf24ffcf73be0bf3b1ec32cb0ecd7fbd088fe1d61df71857cfd481d1bd7e6bdc5eac07aff70c13ab05b9a0d99701d2868ea781d6ea161c00e7b2af812f3ff80981db17a877f18987b3c6d83ed6e81eef5fd2a2c1300d7dbaf1cb35ebf3aee0a5a8fc53da878db5433cabc963b429879bbae86dbe0cc63359e7d937e50b4af89e62991bf23125f3cf28048ddefec4ba2b848665b5a4afd4ec8e73b9fcedb4bd378925b1b1ac22fedb73b9ce67f17bcc7ffd705885df02edf2457e90c2e152d05739b6967eccb9de51608907c37a1e5439dcc34544132e32005ea0af824cbd477fd4f049ff2d64f79e4d97620dec8ebe0715062ea4582553eb73f1b1f372f12068d787a1fafba2e5ac07097f7474db06ef8cea8f86998ff2299b917c68b64e6bdfed9e486b7c5c64addab62b4d2c87be2fd3ce52538fe8def7840245ae2764f78fa41ca2e11fec206ea30970857d9203ab1f7ac618a05118c55975c5d0d6e00b3e8f356adbff3172e4e7efdbcc5271adeb6e051cb6acf2323165dd3809a59af095a9b7eba22144927be11afa9aaf5c14aedc9064755bf7ff058f98035c91eace80bd54532634f46adf0997542e04762cf53f43d6aab9a7136c29ac9d270cc287c0bbe8b236dfb0ebaebc36dd3b36d00078a051c73a993997eae5252328486871b53add69ddb8581fdb7051faf61c2791cea3a99edc3615d16d75c8505baa4d0938f105d35bc3e856a412f150622564d1b3dd8342b92fa50c97ae96c5e077a2e8ca1edebae461aca00b4849e04d0bf4c3eabb584c6e3efcb4c77087f1f0ae818370f6711a6efa1558d5de2dae6ca709dccba822827ba475c4b1ef60ee87951d4497628565d6f3c6a311eec897f13dd78ed981e999546c5bb66f7f84f93f9ad5d315147a366804bb30e2e937296e617c542ad856f0f16bfa9a5d0bed056ebbdf5a9924e2e92591037a0314a076574adf139a27c2488cdb1dac048c56331eca8aa542f871d88e3acfb4cc239b73d2db647f1b0b7440b6e83cf51fe3b5053b40fdf69eb277ce12168a770d49a94d6801d6d8f66fee356e836fe078e558167e9fa74abc9c6c34f4f359e57c3cefa6e812dcca715e1f636d076b3fdf257d1f9e80b0d55dee84f4c730307e38e6a1b8405a57a17ddc2b68a17d538526230405bf962a178759289b1ba9ea695925627a22e4429676955239e96beb55f178a5df687f9606093bb7baa505ed4629c64999c88d18d690d4cdb4d3b99ac2bb03c4f160bb87d886902d517b9a896a34afef752e6b5b84aabb4aeb425fe6409425b0fecec67e995aca0beb416c5740a5611e364918cd22cad5359f5c5cbe25a5ec9b2a772245955884b99e4aad54451e04a66c50250b95475cb4a96d51ed407502a68be2fa598c84556dcc88996ebaa7807eb4224620126bac914a894656a7850a1fc2dade0925827234561a9b60e0c5e9510f3e44a8a9194b9182bd63ae9892acdc71aacb95856d98d1827e3b99c684257c5b21c4bf457586a09529bf1bb973a4bec426432297371599452807f22e694b99caa9e175351ab0901d5035036cd352602c07ce5625e5c8bba80da8a45bd9fe63db07b11f3ba5e1c0e06a3b4ee673783a7ef9eecbffdf9895bd84ad21b27d9bca86a71227e40bb6758e0d7693e29ae9d9fb0ca021703b4b6ce4cb161477cf982bb6030101f0e0f1ffea21697eafeabb757ff2e6c46914c26da4b4365de503f54c4eb7ef8ed7ff40ffa07fd8783ff4fb5a006904e642927a48d6951aa661f6d6804ede8acfc38f83f0fbffd8feee3c3e1b0df7d7cf8edf71f0ef6bfffe5cbb71f0ef61ffdf2e160ffffffe5cb878387bf3c863fe17f8ff7f656dfadff34d08f267b3db37553cf8b1625d6223f47a1fff1a1e8e22644efda43a16fcf3fc32e7d4792687043550372e21d2ba09a1cf28ca3b901fa1c3f3ed47dd6b70925c42fca4275bb2ff3abfe9bb367cf3f3e7ff3939e20b7d5871d757a0c3b15ed09806608adab826b809dc78bb914efdfbd46915fade1a2049c8fab24cdf08d3b879d392a8b6bb5e19117682f1d71fe739f5e7517cb51968edf9799b6427bffeeb59d56d37d754b5d09995f1d8a95f8f059da2070bf983fc45aacf760946fdffff0fad5d38fefdfbdb6a69cc1222ae5b447a5494d2bd3937e51a6b33407e778bf2c2691fbda6020ce96a5c7adc57591ffb9d6fe4d53e1faa4e854e4221193743a95a5e26d5823a90e0eb26b45b2625922f34a2b68404e4491f791b55faa1b8a98270bc5e8d2a948c4d3676fc851422a84a242891e757504ec563195ea703098a5f57c39ea8f8bcb815af3a3a2f83cc0fbefbed18d2f0669552d6535f8f6bbff78c49f83dcb5946dd66432010b467544ca5c965dc56c92c9b0d3131e9833ae80ea1a67ff13d83ad8e5ea88b61e68eaeeebb3f0d7ead3911343d4dc1136c89405e6204c2b512ef31ce02a73c76efae2b5acff5c21502352d19b48745583b3a51245a9ce5c82db05e57e4ab274c276711786d4d3013bf68ea8e1d460209e4c26e812974c94bc06824056cc66707815ae773db128d21cce347290226415ab90f779f0f6e72762528c974a30c355eb72db0ddd67bb1d8c2b6ffaf55ce6dd08e2360d59c2a5d4610781d1e408648cb41223090e36b85ce148dd9fa665552b19c59177d811ffe6cbebc38e9e5f7e9ef6f0f86f38093b3d5a0d55d9acdb743d838178851214590c7f5d827dac16c138555d519301e7fde770b2759b7a77582355d82701f366b51876666af3597ac3ec614b7d7b1e405d7bfa2bce69e91f2ce469d7a5f48b1c659da9926e387600ddb24a7849b22ccd67d80171c2ab71e9643e609f06054f44be644fcd017f1154a52682b6fbaa47492dc7706f8cf539de34b8041b694527ca0980a0f085a90a376d1b750f2e8b2c9365500cb77a8d721f6ce41e085546985c9412054e8b1f364f2a9450a7b25609bd4885232d591ab135387814bb42a6856c5f6506dbd04865a6e1655ea7191cd9e32c551f408456922fcaca7dbf6c333f10b08fdf10b43d261928c917ba389278500194b06a39c610b032e80ce2222b4aaaf390744d9cebf32c600d7d8f3708cd1f228478fe9b1cabfb9fba4d29e9decfa296808ed3f6cd377a6ff68d48179979e1e7e1fbefc8cfefa9274276657bea2d2875f3ba01cf6ab77aecc20aa64d313d75dcc10292e5548e6b8040a6feca49a410a0d798c9d48b564d88b9102e01395168b570fb6ad9aaaafb9d262dbbb7cf93ce74cb89a23fc98fb53b058c9064d831a8fcbb5dad5bf7a521452648ea0e3bf0122026cbd29ca7649bb32b8492acb0be2372e6f0e3a65552d974ec0c0618dc401118c0c97967c649aef6339c197df16a2ad25a7dfbb33a4b41e9602ee1b03280b9c58fa86a51e495e75da2a63d075856af5594c9504d01178c6ba96ecc597603ec6186204022117f3d075f993e973a357bbab8594838bdb0edfe1c7c4daafe4cd65d00735299f6eb9b85a42f3c6aa1518140175627cab28223e5d1c1237bf555ff75697b0ff0d0d38bd47ceea7f944fe7636ed0e3bbf265749352ed345adce2355dffec33d53992fe0be297cd2e899785b16a364a4e841ae1bc962d117ef22f382ff6d231f36cb12c2972796b95359354a97e10d0dd74dd78b9a721be1eebc8922632901f62b2fcacb24ebef2ed6f1fd1cdfcafc7c1c76de14f0ea50e61c2e42f7ee090ad0e6a292e6962b5e1613498fb370a3fbba014a78a70ed8f28e7fb745d0b8008e2212f1f6eae12760a6f5b62c10ce754b232ea8f5d9d98f3c77a046fe015515a0050eea6ed23dabf9227ae7278bc556c657ed86572a0330827e35aeaac00a8c4d88abd29b56383ecdd0b54f4d17d5de6ca446fbedd116a5c09315330f49f3b44e932cfd9becee3d708f15c78a0a0ef99fd7a4d5e37e9b7b3d7b3f558c56bf21fc70f36ad21d76caa2505c0f450025b14c1d20370069ab7b665da072c56c10750810fd760f8aa873096f055011db1244d7dedd13239915d77df1a6005c6fd04d5eca4a5ca7f51c6fea8bb49e265956a11afeb5afebe5fcb73a6cd2daf2ede4ed0d6f2b6c327e6c3579dce92d05048e1f142f4aca1bbe6075f3d580e5a1c5ad9d63b4984d757ff1b67f4cd23c8034a135b80cbce0db6426df14f50bb8b0c68bd22cb4b083038b1673783fe44f5a1e1ff1a365d14345ff1387886de8ac49b67f043ca56e2caad25807b5bd723c331a159f1ba364570c1ecb62655402fcef16711b9e2c16f7e2e4e53f448f16dfed4f92f2337dd8678b93be6492d5c51c69d91ba0fed6f212e85b5f2775b5f6df923dd36dbd005839f8e6175c0dfe355e3862f6adbe0320d8bf0ed62d8dcfdc56a3c5ed0edcd077bae86979b76d3654107d38dd48b16623f98d45ed8e6165f5d786c27460844ff81ed7de4a391ec4d65ae4f5fb975e075f12df1545dd39ec74d6ff370000ffff195d8dd2d0d60500", }) if err != nil { panic(err) @@ -64,24 +64,24 @@ var _ = func() error { b.SetResolver("favicon.ico", packr.Pointer{ForwardBox: gk, ForwardPath: "bd70bb467b69c06616b7ca579d225f44"}) b.SetResolver("index.html", packr.Pointer{ForwardBox: gk, ForwardPath: "0e008f6818d129d6ed41c25ec2d4e27d"}) b.SetResolver("manifest.json", packr.Pointer{ForwardBox: gk, ForwardPath: "3800ee68695ee950b7771512522338b5"}) - b.SetResolver("precache-manifest.79255a45b94a9e3755a7e4b9d197055b.js", packr.Pointer{ForwardBox: gk, ForwardPath: "3cf24ec5a4892602dbd1f8840adca115"}) + b.SetResolver("precache-manifest.0f5ff8975b557fd0f0b84366a29fb7fe.js", packr.Pointer{ForwardBox: gk, ForwardPath: "518081a1dc407a46eff65a2a5614944d"}) b.SetResolver("service-worker.js", packr.Pointer{ForwardBox: gk, ForwardPath: "e5d9372aa867fa2ec35931b4116336d7"}) - b.SetResolver("static/css/2.39431051.chunk.css", packr.Pointer{ForwardBox: gk, ForwardPath: "a592ed548fa997f137fe3e6d00d2fe30"}) - b.SetResolver("static/css/2.39431051.chunk.css.map", packr.Pointer{ForwardBox: gk, ForwardPath: "a2181d565e6f7442443a75a392b692b3"}) - b.SetResolver("static/css/main.9963dcd8.chunk.css", packr.Pointer{ForwardBox: gk, ForwardPath: "394ab46ed125d9f5fc0c3cc23d5931ca"}) - b.SetResolver("static/css/main.9963dcd8.chunk.css.map", packr.Pointer{ForwardBox: gk, ForwardPath: "f92d98a3088e303ebe71d7dda3f6a208"}) - b.SetResolver("static/js/2.910b2ca1.chunk.js", packr.Pointer{ForwardBox: gk, ForwardPath: "16853f11e67cbde49411b853091d5797"}) - b.SetResolver("static/js/2.910b2ca1.chunk.js.map", packr.Pointer{ForwardBox: gk, ForwardPath: "f0cfab5b672aa6ad7204e1e04d8a1c0d"}) - b.SetResolver("static/js/main.3ea04f33.chunk.js", packr.Pointer{ForwardBox: gk, ForwardPath: "6dc2d29d7ee4854fbdb02609de442a09"}) - b.SetResolver("static/js/main.3ea04f33.chunk.js.map", packr.Pointer{ForwardBox: gk, ForwardPath: "1b349942cb657442cb69c01667fba5db"}) + b.SetResolver("static/css/2.847eec52.chunk.css", packr.Pointer{ForwardBox: gk, ForwardPath: "6e0b59dafe2bb084ecc845ecbe0fafa1"}) + b.SetResolver("static/css/2.847eec52.chunk.css.map", packr.Pointer{ForwardBox: gk, ForwardPath: "c1e9332706872041d1263830d7495281"}) + b.SetResolver("static/css/main.91ec1be6.chunk.css", packr.Pointer{ForwardBox: gk, ForwardPath: "9f1c11c8e2dd8df8a11f499718eb186a"}) + b.SetResolver("static/css/main.91ec1be6.chunk.css.map", packr.Pointer{ForwardBox: gk, ForwardPath: "4010178888118ecba384c58d8443d70e"}) + b.SetResolver("static/js/2.0f1562fe.chunk.js", packr.Pointer{ForwardBox: gk, ForwardPath: "0327d3a95dd7f5fd93163c3f99c4c918"}) + b.SetResolver("static/js/2.0f1562fe.chunk.js.map", packr.Pointer{ForwardBox: gk, ForwardPath: "8caaffd6ab5fab10c68ef52c3e2cec26"}) + b.SetResolver("static/js/main.66e6b931.chunk.js", packr.Pointer{ForwardBox: gk, ForwardPath: "560d991b2ba79ffae00739df61dfacaa"}) + b.SetResolver("static/js/main.66e6b931.chunk.js.map", packr.Pointer{ForwardBox: gk, ForwardPath: "ec17219e696326ed4a4effba32e54bf9"}) b.SetResolver("static/js/runtime~main.c5541365.js", packr.Pointer{ForwardBox: gk, ForwardPath: "1c0c9f7743c21945afe55fc74727fc61"}) b.SetResolver("static/js/runtime~main.c5541365.js.map", packr.Pointer{ForwardBox: gk, ForwardPath: "e9d4691e17a14e58bb594f4374091250"}) - b.SetResolver("static/media/icons-16.422aba86.woff", packr.Pointer{ForwardBox: gk, ForwardPath: "0206cd3a197c6fc2ba8a16d657170af0"}) - b.SetResolver("static/media/icons-16.7f037192.eot", packr.Pointer{ForwardBox: gk, ForwardPath: "582112961d224a11bc1f1907ac3476a0"}) - b.SetResolver("static/media/icons-16.a82b4108.ttf", packr.Pointer{ForwardBox: gk, ForwardPath: "f11ac88ef2a298849145ed17b7efacd6"}) - b.SetResolver("static/media/icons-20.52f2f35b.woff", packr.Pointer{ForwardBox: gk, ForwardPath: "52c4ee63f22dced28e43d926a024850b"}) - b.SetResolver("static/media/icons-20.5502b03b.ttf", packr.Pointer{ForwardBox: gk, ForwardPath: "ccb5290efa004c36385508f0d69033ef"}) - b.SetResolver("static/media/icons-20.f1bd8797.eot", packr.Pointer{ForwardBox: gk, ForwardPath: "22131dc16e10b94e878726b7aedcd7df"}) + b.SetResolver("static/media/icons-16.3326c360.eot", packr.Pointer{ForwardBox: gk, ForwardPath: "06a21337db3d9c8f818606bc28d2fce0"}) + b.SetResolver("static/media/icons-16.895bc7de.woff", packr.Pointer{ForwardBox: gk, ForwardPath: "7529f80635eb2edfa4b5242b887b1dad"}) + b.SetResolver("static/media/icons-16.b6382c6d.ttf", packr.Pointer{ForwardBox: gk, ForwardPath: "68a2fbfef235f84d6a3d5f58e182412b"}) + b.SetResolver("static/media/icons-20.058e48cb.woff", packr.Pointer{ForwardBox: gk, ForwardPath: "9a358cd51efa5b4c8b5aa0ede6cd072e"}) + b.SetResolver("static/media/icons-20.aa8f3ca0.ttf", packr.Pointer{ForwardBox: gk, ForwardPath: "9ce18be893d381a975af2efd6c82549b"}) + b.SetResolver("static/media/icons-20.e666d692.eot", packr.Pointer{ForwardBox: gk, ForwardPath: "b4162e28bc8a57e9e4e1a8bc40aedc60"}) }() return nil diff --git a/pkg/api/resolver.go b/pkg/api/resolver.go index a671e0274..451df1eef 100644 --- a/pkg/api/resolver.go +++ b/pkg/api/resolver.go @@ -49,12 +49,12 @@ type sceneMarkerResolver struct{ *Resolver } type studioResolver struct{ *Resolver } type tagResolver struct{ *Resolver } -func (r *queryResolver) MarkerWall(ctx context.Context, q *string) ([]models.SceneMarker, error) { +func (r *queryResolver) MarkerWall(ctx context.Context, q *string) ([]*models.SceneMarker, error) { qb := models.NewSceneMarkerQueryBuilder() return qb.Wall(q) } -func (r *queryResolver) SceneWall(ctx context.Context, q *string) ([]models.Scene, error) { +func (r *queryResolver) SceneWall(ctx context.Context, q *string) ([]*models.Scene, error) { qb := models.NewSceneQueryBuilder() return qb.Wall(q) } @@ -64,7 +64,7 @@ func (r *queryResolver) MarkerStrings(ctx context.Context, q *string, sort *stri return qb.GetMarkerStrings(q, sort) } -func (r *queryResolver) ValidGalleriesForScene(ctx context.Context, scene_id *string) ([]models.Gallery, error) { +func (r *queryResolver) ValidGalleriesForScene(ctx context.Context, scene_id *string) ([]*models.Gallery, error) { if scene_id == nil { panic("nil scene id") // TODO make scene_id mandatory } @@ -79,7 +79,7 @@ func (r *queryResolver) ValidGalleriesForScene(ctx context.Context, scene_id *st validGalleries, err := qb.ValidGalleriesForScenePath(scene.Path) sceneGallery, _ := qb.FindBySceneID(sceneID, nil) if sceneGallery != nil { - validGalleries = append(validGalleries, *sceneGallery) + validGalleries = append(validGalleries, sceneGallery) } return validGalleries, nil } @@ -105,7 +105,7 @@ func (r *queryResolver) Stats(ctx context.Context) (*models.StatsResultType, err } // Get scene marker tags which show up under the video. -func (r *queryResolver) SceneMarkerTags(ctx context.Context, scene_id string) ([]models.SceneMarkerTag, error) { +func (r *queryResolver) SceneMarkerTags(ctx context.Context, scene_id string) ([]*models.SceneMarkerTag, error) { sceneID, _ := strconv.Atoi(scene_id) sqb := models.NewSceneMarkerQueryBuilder() sceneMarkers, err := sqb.FindBySceneID(sceneID, nil) @@ -124,7 +124,7 @@ func (r *queryResolver) SceneMarkerTags(ctx context.Context, scene_id string) ([ _, hasKey := tags[markerPrimaryTag.ID] var sceneMarkerTag *models.SceneMarkerTag if !hasKey { - sceneMarkerTag = &models.SceneMarkerTag{Tag: *markerPrimaryTag} + sceneMarkerTag = &models.SceneMarkerTag{Tag: markerPrimaryTag} tags[markerPrimaryTag.ID] = sceneMarkerTag keys = append(keys, markerPrimaryTag.ID) } else { @@ -140,9 +140,9 @@ func (r *queryResolver) SceneMarkerTags(ctx context.Context, scene_id string) ([ return a.SceneMarkers[0].Seconds < b.SceneMarkers[0].Seconds }) - var result []models.SceneMarkerTag + var result []*models.SceneMarkerTag for _, key := range keys { - result = append(result, *tags[key]) + result = append(result, tags[key]) } return result, nil diff --git a/pkg/api/resolver_model_gallery.go b/pkg/api/resolver_model_gallery.go index 788d2d0ed..1fcf260ee 100644 --- a/pkg/api/resolver_model_gallery.go +++ b/pkg/api/resolver_model_gallery.go @@ -9,7 +9,7 @@ func (r *galleryResolver) Title(ctx context.Context, obj *models.Gallery) (*stri return nil, nil // TODO remove this from schema } -func (r *galleryResolver) Files(ctx context.Context, obj *models.Gallery) ([]models.GalleryFilesType, error) { +func (r *galleryResolver) Files(ctx context.Context, obj *models.Gallery) ([]*models.GalleryFilesType, error) { baseURL, _ := ctx.Value(BaseURLCtxKey).(string) return obj.GetFiles(baseURL), nil } diff --git a/pkg/api/resolver_model_performer.go b/pkg/api/resolver_model_performer.go index 38e54e584..94be0aeea 100644 --- a/pkg/api/resolver_model_performer.go +++ b/pkg/api/resolver_model_performer.go @@ -130,7 +130,7 @@ func (r *performerResolver) SceneCount(ctx context.Context, obj *models.Performe return &res, err } -func (r *performerResolver) Scenes(ctx context.Context, obj *models.Performer) ([]models.Scene, error) { +func (r *performerResolver) Scenes(ctx context.Context, obj *models.Performer) ([]*models.Scene, error) { qb := models.NewSceneQueryBuilder() return qb.FindByPerformerID(obj.ID) } diff --git a/pkg/api/resolver_model_scene.go b/pkg/api/resolver_model_scene.go index e82551582..6831b9316 100644 --- a/pkg/api/resolver_model_scene.go +++ b/pkg/api/resolver_model_scene.go @@ -84,7 +84,7 @@ func (r *sceneResolver) IsStreamable(ctx context.Context, obj *models.Scene) (bo return manager.IsStreamable(obj) } -func (r *sceneResolver) SceneMarkers(ctx context.Context, obj *models.Scene) ([]models.SceneMarker, error) { +func (r *sceneResolver) SceneMarkers(ctx context.Context, obj *models.Scene) ([]*models.SceneMarker, error) { qb := models.NewSceneMarkerQueryBuilder() return qb.FindBySceneID(obj.ID, nil) } @@ -99,12 +99,12 @@ func (r *sceneResolver) Studio(ctx context.Context, obj *models.Scene) (*models. return qb.FindBySceneID(obj.ID) } -func (r *sceneResolver) Tags(ctx context.Context, obj *models.Scene) ([]models.Tag, error) { +func (r *sceneResolver) Tags(ctx context.Context, obj *models.Scene) ([]*models.Tag, error) { qb := models.NewTagQueryBuilder() return qb.FindBySceneID(obj.ID, nil) } -func (r *sceneResolver) Performers(ctx context.Context, obj *models.Scene) ([]models.Performer, error) { +func (r *sceneResolver) Performers(ctx context.Context, obj *models.Scene) ([]*models.Performer, error) { qb := models.NewPerformerQueryBuilder() return qb.FindBySceneID(obj.ID, nil) } diff --git a/pkg/api/resolver_model_scene_marker.go b/pkg/api/resolver_model_scene_marker.go index d7c8c2a4c..7324c84a0 100644 --- a/pkg/api/resolver_model_scene_marker.go +++ b/pkg/api/resolver_model_scene_marker.go @@ -22,7 +22,7 @@ func (r *sceneMarkerResolver) PrimaryTag(ctx context.Context, obj *models.SceneM return tag, err } -func (r *sceneMarkerResolver) Tags(ctx context.Context, obj *models.SceneMarker) ([]models.Tag, error) { +func (r *sceneMarkerResolver) Tags(ctx context.Context, obj *models.SceneMarker) ([]*models.Tag, error) { qb := models.NewTagQueryBuilder() return qb.FindBySceneMarkerID(obj.ID, nil) } diff --git a/pkg/api/resolver_query_configuration.go b/pkg/api/resolver_query_configuration.go index 5a2b6a9d9..e2ae353a0 100644 --- a/pkg/api/resolver_query_configuration.go +++ b/pkg/api/resolver_query_configuration.go @@ -21,7 +21,7 @@ func (r *queryResolver) Directories(ctx context.Context, path *string) ([]string func makeConfigResult() *models.ConfigResult { return &models.ConfigResult{ - General: *makeConfigGeneralResult(), + General: makeConfigGeneralResult(), } } diff --git a/pkg/api/resolver_query_find_performer.go b/pkg/api/resolver_query_find_performer.go index c603ace81..33c29d6c5 100644 --- a/pkg/api/resolver_query_find_performer.go +++ b/pkg/api/resolver_query_find_performer.go @@ -21,7 +21,7 @@ func (r *queryResolver) FindPerformers(ctx context.Context, performerFilter *mod }, nil } -func (r *queryResolver) AllPerformers(ctx context.Context) ([]models.Performer, error) { +func (r *queryResolver) AllPerformers(ctx context.Context) ([]*models.Performer, error) { qb := models.NewPerformerQueryBuilder() return qb.All() } diff --git a/pkg/api/resolver_query_find_studio.go b/pkg/api/resolver_query_find_studio.go index b7e6e6bed..3537254f8 100644 --- a/pkg/api/resolver_query_find_studio.go +++ b/pkg/api/resolver_query_find_studio.go @@ -21,7 +21,7 @@ func (r *queryResolver) FindStudios(ctx context.Context, filter *models.FindFilt }, nil } -func (r *queryResolver) AllStudios(ctx context.Context) ([]models.Studio, error) { +func (r *queryResolver) AllStudios(ctx context.Context) ([]*models.Studio, error) { qb := models.NewStudioQueryBuilder() return qb.All() } diff --git a/pkg/api/resolver_query_find_tag.go b/pkg/api/resolver_query_find_tag.go index 72bc06304..e5b6a5929 100644 --- a/pkg/api/resolver_query_find_tag.go +++ b/pkg/api/resolver_query_find_tag.go @@ -12,7 +12,7 @@ func (r *queryResolver) FindTag(ctx context.Context, id string) (*models.Tag, er return qb.Find(idInt, nil) } -func (r *queryResolver) AllTags(ctx context.Context) ([]models.Tag, error) { +func (r *queryResolver) AllTags(ctx context.Context) ([]*models.Tag, error) { qb := models.NewTagQueryBuilder() return qb.All() } diff --git a/pkg/manager/manager_tasks.go b/pkg/manager/manager_tasks.go index 512b88f61..99f28a6f9 100644 --- a/pkg/manager/manager_tasks.go +++ b/pkg/manager/manager_tasks.go @@ -93,6 +93,11 @@ func (s *singleton) Generate(sprites bool, previews bool, markers bool, transcod delta := utils.Btoi(sprites) + utils.Btoi(previews) + utils.Btoi(markers) + utils.Btoi(transcodes) var wg sync.WaitGroup for _, scene := range scenes { + if scene == nil { + logger.Errorf("nil scene, skipping generate") + continue + } + wg.Add(delta) // Clear the tmp directory for each scene @@ -101,22 +106,22 @@ func (s *singleton) Generate(sprites bool, previews bool, markers bool, transcod } if sprites { - task := GenerateSpriteTask{Scene: scene} + task := GenerateSpriteTask{Scene: *scene} go task.Start(&wg) } if previews { - task := GeneratePreviewTask{Scene: scene} + task := GeneratePreviewTask{Scene: *scene} go task.Start(&wg) } if markers { - task := GenerateMarkersTask{Scene: scene} + task := GenerateMarkersTask{Scene: *scene} go task.Start(&wg) } if transcodes { - task := GenerateTranscodeTask{Scene: scene} + task := GenerateTranscodeTask{Scene: *scene} go task.Start(&wg) } diff --git a/pkg/manager/task_export.go b/pkg/manager/task_export.go index fae5210ce..f0bfcf50f 100644 --- a/pkg/manager/task_export.go +++ b/pkg/manager/task_export.go @@ -407,7 +407,7 @@ func (t *ExportTask) ExportScrapedItems(ctx context.Context) { logger.Infof("[scraped sites] export complete") } -func (t *ExportTask) getPerformerNames(performers []models.Performer) []string { +func (t *ExportTask) getPerformerNames(performers []*models.Performer) []string { if len(performers) == 0 { return nil } @@ -422,7 +422,7 @@ func (t *ExportTask) getPerformerNames(performers []models.Performer) []string { return results } -func (t *ExportTask) getTagNames(tags []models.Tag) []string { +func (t *ExportTask) getTagNames(tags []*models.Tag) []string { if len(tags) == 0 { return nil } diff --git a/pkg/manager/task_import.go b/pkg/manager/task_import.go index 458edc281..398968ce2 100644 --- a/pkg/manager/task_import.go +++ b/pkg/manager/task_import.go @@ -561,7 +561,7 @@ func (t *ImportTask) ImportScenes(ctx context.Context) { logger.Info("[scenes] import complete") } -func (t *ImportTask) getPerformers(names []string, tx *sqlx.Tx) ([]models.Performer, error) { +func (t *ImportTask) getPerformers(names []string, tx *sqlx.Tx) ([]*models.Performer, error) { pqb := models.NewPerformerQueryBuilder() performers, err := pqb.FindByNames(names, tx) if err != nil { @@ -587,7 +587,7 @@ func (t *ImportTask) getPerformers(names []string, tx *sqlx.Tx) ([]models.Perfor return performers, nil } -func (t *ImportTask) getTags(sceneChecksum string, names []string, tx *sqlx.Tx) ([]models.Tag, error) { +func (t *ImportTask) getTags(sceneChecksum string, names []string, tx *sqlx.Tx) ([]*models.Tag, error) { tqb := models.NewTagQueryBuilder() tags, err := tqb.FindByNames(names, tx) if err != nil { diff --git a/pkg/models/generated_exec.go b/pkg/models/generated_exec.go index 06a9cd52b..3964dd1c9 100644 --- a/pkg/models/generated_exec.go +++ b/pkg/models/generated_exec.go @@ -9,6 +9,7 @@ import ( "io" "strconv" "sync" + "sync/atomic" "github.com/99designs/gqlgen/graphql" "github.com/99designs/gqlgen/graphql/introspection" @@ -278,7 +279,7 @@ type ComplexityRoot struct { type GalleryResolver interface { Title(ctx context.Context, obj *Gallery) (*string, error) - Files(ctx context.Context, obj *Gallery) ([]GalleryFilesType, error) + Files(ctx context.Context, obj *Gallery) ([]*GalleryFilesType, error) } type MutationResolver interface { SceneUpdate(ctx context.Context, input SceneUpdateInput) (*Scene, error) @@ -313,7 +314,7 @@ type PerformerResolver interface { Favorite(ctx context.Context, obj *Performer) (bool, error) ImagePath(ctx context.Context, obj *Performer) (*string, error) SceneCount(ctx context.Context, obj *Performer) (*int, error) - Scenes(ctx context.Context, obj *Performer) ([]Scene, error) + Scenes(ctx context.Context, obj *Performer) ([]*Scene, error) } type QueryResolver interface { FindScene(ctx context.Context, id *string, checksum *string) (*Scene, error) @@ -326,12 +327,12 @@ type QueryResolver interface { FindGallery(ctx context.Context, id string) (*Gallery, error) FindGalleries(ctx context.Context, filter *FindFilterType) (*FindGalleriesResultType, error) FindTag(ctx context.Context, id string) (*Tag, error) - MarkerWall(ctx context.Context, q *string) ([]SceneMarker, error) - SceneWall(ctx context.Context, q *string) ([]Scene, error) + MarkerWall(ctx context.Context, q *string) ([]*SceneMarker, error) + SceneWall(ctx context.Context, q *string) ([]*Scene, error) MarkerStrings(ctx context.Context, q *string, sort *string) ([]*MarkerStringsResultType, error) - ValidGalleriesForScene(ctx context.Context, sceneID *string) ([]Gallery, error) + ValidGalleriesForScene(ctx context.Context, sceneID *string) ([]*Gallery, error) Stats(ctx context.Context) (*StatsResultType, error) - SceneMarkerTags(ctx context.Context, sceneID string) ([]SceneMarkerTag, error) + SceneMarkerTags(ctx context.Context, sceneID string) ([]*SceneMarkerTag, error) ScrapeFreeones(ctx context.Context, performerName string) (*ScrapedPerformer, error) ScrapeFreeonesPerformerList(ctx context.Context, query string) ([]string, error) Configuration(ctx context.Context) (*ConfigResult, error) @@ -341,9 +342,9 @@ type QueryResolver interface { MetadataScan(ctx context.Context) (string, error) MetadataGenerate(ctx context.Context, input GenerateMetadataInput) (string, error) MetadataClean(ctx context.Context) (string, error) - AllPerformers(ctx context.Context) ([]Performer, error) - AllStudios(ctx context.Context) ([]Studio, error) - AllTags(ctx context.Context) ([]Tag, error) + AllPerformers(ctx context.Context) ([]*Performer, error) + AllStudios(ctx context.Context) ([]*Studio, error) + AllTags(ctx context.Context) ([]*Tag, error) } type SceneResolver interface { Title(ctx context.Context, obj *Scene) (*string, error) @@ -355,17 +356,17 @@ type SceneResolver interface { File(ctx context.Context, obj *Scene) (*SceneFileType, error) Paths(ctx context.Context, obj *Scene) (*ScenePathsType, error) IsStreamable(ctx context.Context, obj *Scene) (bool, error) - SceneMarkers(ctx context.Context, obj *Scene) ([]SceneMarker, error) + SceneMarkers(ctx context.Context, obj *Scene) ([]*SceneMarker, error) Gallery(ctx context.Context, obj *Scene) (*Gallery, error) Studio(ctx context.Context, obj *Scene) (*Studio, error) - Tags(ctx context.Context, obj *Scene) ([]Tag, error) - Performers(ctx context.Context, obj *Scene) ([]Performer, error) + Tags(ctx context.Context, obj *Scene) ([]*Tag, error) + Performers(ctx context.Context, obj *Scene) ([]*Performer, error) } type SceneMarkerResolver interface { Scene(ctx context.Context, obj *SceneMarker) (*Scene, error) PrimaryTag(ctx context.Context, obj *SceneMarker) (*Tag, error) - Tags(ctx context.Context, obj *SceneMarker) ([]Tag, error) + Tags(ctx context.Context, obj *SceneMarker) ([]*Tag, error) Stream(ctx context.Context, obj *SceneMarker) (string, error) Preview(ctx context.Context, obj *SceneMarker) (string, error) } @@ -398,182 +399,182 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in _ = ec switch typeName + "." + field { - case "ConfigGeneralResult.DatabasePath": + case "ConfigGeneralResult.databasePath": if e.complexity.ConfigGeneralResult.DatabasePath == nil { break } return e.complexity.ConfigGeneralResult.DatabasePath(childComplexity), true - case "ConfigGeneralResult.GeneratedPath": + case "ConfigGeneralResult.generatedPath": if e.complexity.ConfigGeneralResult.GeneratedPath == nil { break } return e.complexity.ConfigGeneralResult.GeneratedPath(childComplexity), true - case "ConfigGeneralResult.Stashes": + case "ConfigGeneralResult.stashes": if e.complexity.ConfigGeneralResult.Stashes == nil { break } return e.complexity.ConfigGeneralResult.Stashes(childComplexity), true - case "ConfigResult.General": + case "ConfigResult.general": if e.complexity.ConfigResult.General == nil { break } return e.complexity.ConfigResult.General(childComplexity), true - case "FindGalleriesResultType.Count": + case "FindGalleriesResultType.count": if e.complexity.FindGalleriesResultType.Count == nil { break } return e.complexity.FindGalleriesResultType.Count(childComplexity), true - case "FindGalleriesResultType.Galleries": + case "FindGalleriesResultType.galleries": if e.complexity.FindGalleriesResultType.Galleries == nil { break } return e.complexity.FindGalleriesResultType.Galleries(childComplexity), true - case "FindPerformersResultType.Count": + case "FindPerformersResultType.count": if e.complexity.FindPerformersResultType.Count == nil { break } return e.complexity.FindPerformersResultType.Count(childComplexity), true - case "FindPerformersResultType.Performers": + case "FindPerformersResultType.performers": if e.complexity.FindPerformersResultType.Performers == nil { break } return e.complexity.FindPerformersResultType.Performers(childComplexity), true - case "FindSceneMarkersResultType.Count": + case "FindSceneMarkersResultType.count": if e.complexity.FindSceneMarkersResultType.Count == nil { break } return e.complexity.FindSceneMarkersResultType.Count(childComplexity), true - case "FindSceneMarkersResultType.SceneMarkers": + case "FindSceneMarkersResultType.scene_markers": if e.complexity.FindSceneMarkersResultType.SceneMarkers == nil { break } return e.complexity.FindSceneMarkersResultType.SceneMarkers(childComplexity), true - case "FindScenesResultType.Count": + case "FindScenesResultType.count": if e.complexity.FindScenesResultType.Count == nil { break } return e.complexity.FindScenesResultType.Count(childComplexity), true - case "FindScenesResultType.Scenes": + case "FindScenesResultType.scenes": if e.complexity.FindScenesResultType.Scenes == nil { break } return e.complexity.FindScenesResultType.Scenes(childComplexity), true - case "FindStudiosResultType.Count": + case "FindStudiosResultType.count": if e.complexity.FindStudiosResultType.Count == nil { break } return e.complexity.FindStudiosResultType.Count(childComplexity), true - case "FindStudiosResultType.Studios": + case "FindStudiosResultType.studios": if e.complexity.FindStudiosResultType.Studios == nil { break } return e.complexity.FindStudiosResultType.Studios(childComplexity), true - case "Gallery.Checksum": + case "Gallery.checksum": if e.complexity.Gallery.Checksum == nil { break } return e.complexity.Gallery.Checksum(childComplexity), true - case "Gallery.Files": + case "Gallery.files": if e.complexity.Gallery.Files == nil { break } return e.complexity.Gallery.Files(childComplexity), true - case "Gallery.ID": + case "Gallery.id": if e.complexity.Gallery.ID == nil { break } return e.complexity.Gallery.ID(childComplexity), true - case "Gallery.Path": + case "Gallery.path": if e.complexity.Gallery.Path == nil { break } return e.complexity.Gallery.Path(childComplexity), true - case "Gallery.Title": + case "Gallery.title": if e.complexity.Gallery.Title == nil { break } return e.complexity.Gallery.Title(childComplexity), true - case "GalleryFilesType.Index": + case "GalleryFilesType.index": if e.complexity.GalleryFilesType.Index == nil { break } return e.complexity.GalleryFilesType.Index(childComplexity), true - case "GalleryFilesType.Name": + case "GalleryFilesType.name": if e.complexity.GalleryFilesType.Name == nil { break } return e.complexity.GalleryFilesType.Name(childComplexity), true - case "GalleryFilesType.Path": + case "GalleryFilesType.path": if e.complexity.GalleryFilesType.Path == nil { break } return e.complexity.GalleryFilesType.Path(childComplexity), true - case "MarkerStringsResultType.Count": + case "MarkerStringsResultType.count": if e.complexity.MarkerStringsResultType.Count == nil { break } return e.complexity.MarkerStringsResultType.Count(childComplexity), true - case "MarkerStringsResultType.ID": + case "MarkerStringsResultType.id": if e.complexity.MarkerStringsResultType.ID == nil { break } return e.complexity.MarkerStringsResultType.ID(childComplexity), true - case "MarkerStringsResultType.Title": + case "MarkerStringsResultType.title": if e.complexity.MarkerStringsResultType.Title == nil { break } return e.complexity.MarkerStringsResultType.Title(childComplexity), true - case "Mutation.ConfigureGeneral": + case "Mutation.configureGeneral": if e.complexity.Mutation.ConfigureGeneral == nil { break } @@ -585,7 +586,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.ConfigureGeneral(childComplexity, args["input"].(ConfigGeneralInput)), true - case "Mutation.PerformerCreate": + case "Mutation.performerCreate": if e.complexity.Mutation.PerformerCreate == nil { break } @@ -597,7 +598,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.PerformerCreate(childComplexity, args["input"].(PerformerCreateInput)), true - case "Mutation.PerformerUpdate": + case "Mutation.performerUpdate": if e.complexity.Mutation.PerformerUpdate == nil { break } @@ -609,7 +610,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.PerformerUpdate(childComplexity, args["input"].(PerformerUpdateInput)), true - case "Mutation.SceneMarkerCreate": + case "Mutation.sceneMarkerCreate": if e.complexity.Mutation.SceneMarkerCreate == nil { break } @@ -621,7 +622,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.SceneMarkerCreate(childComplexity, args["input"].(SceneMarkerCreateInput)), true - case "Mutation.SceneMarkerDestroy": + case "Mutation.sceneMarkerDestroy": if e.complexity.Mutation.SceneMarkerDestroy == nil { break } @@ -633,7 +634,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.SceneMarkerDestroy(childComplexity, args["id"].(string)), true - case "Mutation.SceneMarkerUpdate": + case "Mutation.sceneMarkerUpdate": if e.complexity.Mutation.SceneMarkerUpdate == nil { break } @@ -645,7 +646,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.SceneMarkerUpdate(childComplexity, args["input"].(SceneMarkerUpdateInput)), true - case "Mutation.SceneUpdate": + case "Mutation.sceneUpdate": if e.complexity.Mutation.SceneUpdate == nil { break } @@ -657,7 +658,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.SceneUpdate(childComplexity, args["input"].(SceneUpdateInput)), true - case "Mutation.StudioCreate": + case "Mutation.studioCreate": if e.complexity.Mutation.StudioCreate == nil { break } @@ -669,7 +670,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.StudioCreate(childComplexity, args["input"].(StudioCreateInput)), true - case "Mutation.StudioUpdate": + case "Mutation.studioUpdate": if e.complexity.Mutation.StudioUpdate == nil { break } @@ -681,7 +682,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.StudioUpdate(childComplexity, args["input"].(StudioUpdateInput)), true - case "Mutation.TagCreate": + case "Mutation.tagCreate": if e.complexity.Mutation.TagCreate == nil { break } @@ -693,7 +694,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.TagCreate(childComplexity, args["input"].(TagCreateInput)), true - case "Mutation.TagDestroy": + case "Mutation.tagDestroy": if e.complexity.Mutation.TagDestroy == nil { break } @@ -705,7 +706,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.TagDestroy(childComplexity, args["input"].(TagDestroyInput)), true - case "Mutation.TagUpdate": + case "Mutation.tagUpdate": if e.complexity.Mutation.TagUpdate == nil { break } @@ -717,182 +718,182 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.TagUpdate(childComplexity, args["input"].(TagUpdateInput)), true - case "Performer.Aliases": + case "Performer.aliases": if e.complexity.Performer.Aliases == nil { break } return e.complexity.Performer.Aliases(childComplexity), true - case "Performer.Birthdate": + case "Performer.birthdate": if e.complexity.Performer.Birthdate == nil { break } return e.complexity.Performer.Birthdate(childComplexity), true - case "Performer.CareerLength": + case "Performer.career_length": if e.complexity.Performer.CareerLength == nil { break } return e.complexity.Performer.CareerLength(childComplexity), true - case "Performer.Checksum": + case "Performer.checksum": if e.complexity.Performer.Checksum == nil { break } return e.complexity.Performer.Checksum(childComplexity), true - case "Performer.Country": + case "Performer.country": if e.complexity.Performer.Country == nil { break } return e.complexity.Performer.Country(childComplexity), true - case "Performer.Ethnicity": + case "Performer.ethnicity": if e.complexity.Performer.Ethnicity == nil { break } return e.complexity.Performer.Ethnicity(childComplexity), true - case "Performer.EyeColor": + case "Performer.eye_color": if e.complexity.Performer.EyeColor == nil { break } return e.complexity.Performer.EyeColor(childComplexity), true - case "Performer.FakeTits": + case "Performer.fake_tits": if e.complexity.Performer.FakeTits == nil { break } return e.complexity.Performer.FakeTits(childComplexity), true - case "Performer.Favorite": + case "Performer.favorite": if e.complexity.Performer.Favorite == nil { break } return e.complexity.Performer.Favorite(childComplexity), true - case "Performer.Height": + case "Performer.height": if e.complexity.Performer.Height == nil { break } return e.complexity.Performer.Height(childComplexity), true - case "Performer.ID": + case "Performer.id": if e.complexity.Performer.ID == nil { break } return e.complexity.Performer.ID(childComplexity), true - case "Performer.ImagePath": + case "Performer.image_path": if e.complexity.Performer.ImagePath == nil { break } return e.complexity.Performer.ImagePath(childComplexity), true - case "Performer.Instagram": + case "Performer.instagram": if e.complexity.Performer.Instagram == nil { break } return e.complexity.Performer.Instagram(childComplexity), true - case "Performer.Measurements": + case "Performer.measurements": if e.complexity.Performer.Measurements == nil { break } return e.complexity.Performer.Measurements(childComplexity), true - case "Performer.Name": + case "Performer.name": if e.complexity.Performer.Name == nil { break } return e.complexity.Performer.Name(childComplexity), true - case "Performer.Piercings": + case "Performer.piercings": if e.complexity.Performer.Piercings == nil { break } return e.complexity.Performer.Piercings(childComplexity), true - case "Performer.SceneCount": + case "Performer.scene_count": if e.complexity.Performer.SceneCount == nil { break } return e.complexity.Performer.SceneCount(childComplexity), true - case "Performer.Scenes": + case "Performer.scenes": if e.complexity.Performer.Scenes == nil { break } return e.complexity.Performer.Scenes(childComplexity), true - case "Performer.Tattoos": + case "Performer.tattoos": if e.complexity.Performer.Tattoos == nil { break } return e.complexity.Performer.Tattoos(childComplexity), true - case "Performer.Twitter": + case "Performer.twitter": if e.complexity.Performer.Twitter == nil { break } return e.complexity.Performer.Twitter(childComplexity), true - case "Performer.URL": + case "Performer.url": if e.complexity.Performer.URL == nil { break } return e.complexity.Performer.URL(childComplexity), true - case "Query.AllPerformers": + case "Query.allPerformers": if e.complexity.Query.AllPerformers == nil { break } return e.complexity.Query.AllPerformers(childComplexity), true - case "Query.AllStudios": + case "Query.allStudios": if e.complexity.Query.AllStudios == nil { break } return e.complexity.Query.AllStudios(childComplexity), true - case "Query.AllTags": + case "Query.allTags": if e.complexity.Query.AllTags == nil { break } return e.complexity.Query.AllTags(childComplexity), true - case "Query.Configuration": + case "Query.configuration": if e.complexity.Query.Configuration == nil { break } return e.complexity.Query.Configuration(childComplexity), true - case "Query.Directories": + case "Query.directories": if e.complexity.Query.Directories == nil { break } @@ -904,7 +905,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.Directories(childComplexity, args["path"].(*string)), true - case "Query.FindGalleries": + case "Query.findGalleries": if e.complexity.Query.FindGalleries == nil { break } @@ -916,7 +917,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.FindGalleries(childComplexity, args["filter"].(*FindFilterType)), true - case "Query.FindGallery": + case "Query.findGallery": if e.complexity.Query.FindGallery == nil { break } @@ -928,7 +929,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.FindGallery(childComplexity, args["id"].(string)), true - case "Query.FindPerformer": + case "Query.findPerformer": if e.complexity.Query.FindPerformer == nil { break } @@ -940,7 +941,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.FindPerformer(childComplexity, args["id"].(string)), true - case "Query.FindPerformers": + case "Query.findPerformers": if e.complexity.Query.FindPerformers == nil { break } @@ -952,7 +953,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.FindPerformers(childComplexity, args["performer_filter"].(*PerformerFilterType), args["filter"].(*FindFilterType)), true - case "Query.FindScene": + case "Query.findScene": if e.complexity.Query.FindScene == nil { break } @@ -964,7 +965,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.FindScene(childComplexity, args["id"].(*string), args["checksum"].(*string)), true - case "Query.FindSceneMarkers": + case "Query.findSceneMarkers": if e.complexity.Query.FindSceneMarkers == nil { break } @@ -976,7 +977,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.FindSceneMarkers(childComplexity, args["scene_marker_filter"].(*SceneMarkerFilterType), args["filter"].(*FindFilterType)), true - case "Query.FindScenes": + case "Query.findScenes": if e.complexity.Query.FindScenes == nil { break } @@ -988,7 +989,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.FindScenes(childComplexity, args["scene_filter"].(*SceneFilterType), args["scene_ids"].([]int), args["filter"].(*FindFilterType)), true - case "Query.FindStudio": + case "Query.findStudio": if e.complexity.Query.FindStudio == nil { break } @@ -1000,7 +1001,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.FindStudio(childComplexity, args["id"].(string)), true - case "Query.FindStudios": + case "Query.findStudios": if e.complexity.Query.FindStudios == nil { break } @@ -1012,7 +1013,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.FindStudios(childComplexity, args["filter"].(*FindFilterType)), true - case "Query.FindTag": + case "Query.findTag": if e.complexity.Query.FindTag == nil { break } @@ -1024,7 +1025,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.FindTag(childComplexity, args["id"].(string)), true - case "Query.MarkerStrings": + case "Query.markerStrings": if e.complexity.Query.MarkerStrings == nil { break } @@ -1036,7 +1037,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.MarkerStrings(childComplexity, args["q"].(*string), args["sort"].(*string)), true - case "Query.MarkerWall": + case "Query.markerWall": if e.complexity.Query.MarkerWall == nil { break } @@ -1048,21 +1049,21 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.MarkerWall(childComplexity, args["q"].(*string)), true - case "Query.MetadataClean": + case "Query.metadataClean": if e.complexity.Query.MetadataClean == nil { break } return e.complexity.Query.MetadataClean(childComplexity), true - case "Query.MetadataExport": + case "Query.metadataExport": if e.complexity.Query.MetadataExport == nil { break } return e.complexity.Query.MetadataExport(childComplexity), true - case "Query.MetadataGenerate": + case "Query.metadataGenerate": if e.complexity.Query.MetadataGenerate == nil { break } @@ -1074,21 +1075,21 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.MetadataGenerate(childComplexity, args["input"].(GenerateMetadataInput)), true - case "Query.MetadataImport": + case "Query.metadataImport": if e.complexity.Query.MetadataImport == nil { break } return e.complexity.Query.MetadataImport(childComplexity), true - case "Query.MetadataScan": + case "Query.metadataScan": if e.complexity.Query.MetadataScan == nil { break } return e.complexity.Query.MetadataScan(childComplexity), true - case "Query.SceneMarkerTags": + case "Query.sceneMarkerTags": if e.complexity.Query.SceneMarkerTags == nil { break } @@ -1100,7 +1101,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.SceneMarkerTags(childComplexity, args["scene_id"].(string)), true - case "Query.SceneWall": + case "Query.sceneWall": if e.complexity.Query.SceneWall == nil { break } @@ -1112,7 +1113,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.SceneWall(childComplexity, args["q"].(*string)), true - case "Query.ScrapeFreeones": + case "Query.scrapeFreeones": if e.complexity.Query.ScrapeFreeones == nil { break } @@ -1124,7 +1125,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.ScrapeFreeones(childComplexity, args["performer_name"].(string)), true - case "Query.ScrapeFreeonesPerformerList": + case "Query.scrapeFreeonesPerformerList": if e.complexity.Query.ScrapeFreeonesPerformerList == nil { break } @@ -1136,14 +1137,14 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.ScrapeFreeonesPerformerList(childComplexity, args["query"].(string)), true - case "Query.Stats": + case "Query.stats": if e.complexity.Query.Stats == nil { break } return e.complexity.Query.Stats(childComplexity), true - case "Query.ValidGalleriesForScene": + case "Query.validGalleriesForScene": if e.complexity.Query.ValidGalleriesForScene == nil { break } @@ -1155,497 +1156,497 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.ValidGalleriesForScene(childComplexity, args["scene_id"].(*string)), true - case "Scene.Checksum": + case "Scene.checksum": if e.complexity.Scene.Checksum == nil { break } return e.complexity.Scene.Checksum(childComplexity), true - case "Scene.Date": + case "Scene.date": if e.complexity.Scene.Date == nil { break } return e.complexity.Scene.Date(childComplexity), true - case "Scene.Details": + case "Scene.details": if e.complexity.Scene.Details == nil { break } return e.complexity.Scene.Details(childComplexity), true - case "Scene.File": + case "Scene.file": if e.complexity.Scene.File == nil { break } return e.complexity.Scene.File(childComplexity), true - case "Scene.Gallery": + case "Scene.gallery": if e.complexity.Scene.Gallery == nil { break } return e.complexity.Scene.Gallery(childComplexity), true - case "Scene.ID": + case "Scene.id": if e.complexity.Scene.ID == nil { break } return e.complexity.Scene.ID(childComplexity), true - case "Scene.IsStreamable": + case "Scene.is_streamable": if e.complexity.Scene.IsStreamable == nil { break } return e.complexity.Scene.IsStreamable(childComplexity), true - case "Scene.Path": + case "Scene.path": if e.complexity.Scene.Path == nil { break } return e.complexity.Scene.Path(childComplexity), true - case "Scene.Paths": + case "Scene.paths": if e.complexity.Scene.Paths == nil { break } return e.complexity.Scene.Paths(childComplexity), true - case "Scene.Performers": + case "Scene.performers": if e.complexity.Scene.Performers == nil { break } return e.complexity.Scene.Performers(childComplexity), true - case "Scene.Rating": + case "Scene.rating": if e.complexity.Scene.Rating == nil { break } return e.complexity.Scene.Rating(childComplexity), true - case "Scene.SceneMarkers": + case "Scene.scene_markers": if e.complexity.Scene.SceneMarkers == nil { break } return e.complexity.Scene.SceneMarkers(childComplexity), true - case "Scene.Studio": + case "Scene.studio": if e.complexity.Scene.Studio == nil { break } return e.complexity.Scene.Studio(childComplexity), true - case "Scene.Tags": + case "Scene.tags": if e.complexity.Scene.Tags == nil { break } return e.complexity.Scene.Tags(childComplexity), true - case "Scene.Title": + case "Scene.title": if e.complexity.Scene.Title == nil { break } return e.complexity.Scene.Title(childComplexity), true - case "Scene.URL": + case "Scene.url": if e.complexity.Scene.URL == nil { break } return e.complexity.Scene.URL(childComplexity), true - case "SceneFileType.AudioCodec": + case "SceneFileType.audio_codec": if e.complexity.SceneFileType.AudioCodec == nil { break } return e.complexity.SceneFileType.AudioCodec(childComplexity), true - case "SceneFileType.Bitrate": + case "SceneFileType.bitrate": if e.complexity.SceneFileType.Bitrate == nil { break } return e.complexity.SceneFileType.Bitrate(childComplexity), true - case "SceneFileType.Duration": + case "SceneFileType.duration": if e.complexity.SceneFileType.Duration == nil { break } return e.complexity.SceneFileType.Duration(childComplexity), true - case "SceneFileType.Framerate": + case "SceneFileType.framerate": if e.complexity.SceneFileType.Framerate == nil { break } return e.complexity.SceneFileType.Framerate(childComplexity), true - case "SceneFileType.Height": + case "SceneFileType.height": if e.complexity.SceneFileType.Height == nil { break } return e.complexity.SceneFileType.Height(childComplexity), true - case "SceneFileType.Size": + case "SceneFileType.size": if e.complexity.SceneFileType.Size == nil { break } return e.complexity.SceneFileType.Size(childComplexity), true - case "SceneFileType.VideoCodec": + case "SceneFileType.video_codec": if e.complexity.SceneFileType.VideoCodec == nil { break } return e.complexity.SceneFileType.VideoCodec(childComplexity), true - case "SceneFileType.Width": + case "SceneFileType.width": if e.complexity.SceneFileType.Width == nil { break } return e.complexity.SceneFileType.Width(childComplexity), true - case "SceneMarker.ID": + case "SceneMarker.id": if e.complexity.SceneMarker.ID == nil { break } return e.complexity.SceneMarker.ID(childComplexity), true - case "SceneMarker.Preview": + case "SceneMarker.preview": if e.complexity.SceneMarker.Preview == nil { break } return e.complexity.SceneMarker.Preview(childComplexity), true - case "SceneMarker.PrimaryTag": + case "SceneMarker.primary_tag": if e.complexity.SceneMarker.PrimaryTag == nil { break } return e.complexity.SceneMarker.PrimaryTag(childComplexity), true - case "SceneMarker.Scene": + case "SceneMarker.scene": if e.complexity.SceneMarker.Scene == nil { break } return e.complexity.SceneMarker.Scene(childComplexity), true - case "SceneMarker.Seconds": + case "SceneMarker.seconds": if e.complexity.SceneMarker.Seconds == nil { break } return e.complexity.SceneMarker.Seconds(childComplexity), true - case "SceneMarker.Stream": + case "SceneMarker.stream": if e.complexity.SceneMarker.Stream == nil { break } return e.complexity.SceneMarker.Stream(childComplexity), true - case "SceneMarker.Tags": + case "SceneMarker.tags": if e.complexity.SceneMarker.Tags == nil { break } return e.complexity.SceneMarker.Tags(childComplexity), true - case "SceneMarker.Title": + case "SceneMarker.title": if e.complexity.SceneMarker.Title == nil { break } return e.complexity.SceneMarker.Title(childComplexity), true - case "SceneMarkerTag.SceneMarkers": + case "SceneMarkerTag.scene_markers": if e.complexity.SceneMarkerTag.SceneMarkers == nil { break } return e.complexity.SceneMarkerTag.SceneMarkers(childComplexity), true - case "SceneMarkerTag.Tag": + case "SceneMarkerTag.tag": if e.complexity.SceneMarkerTag.Tag == nil { break } return e.complexity.SceneMarkerTag.Tag(childComplexity), true - case "ScenePathsType.ChaptersVtt": + case "ScenePathsType.chapters_vtt": if e.complexity.ScenePathsType.ChaptersVtt == nil { break } return e.complexity.ScenePathsType.ChaptersVtt(childComplexity), true - case "ScenePathsType.Preview": + case "ScenePathsType.preview": if e.complexity.ScenePathsType.Preview == nil { break } return e.complexity.ScenePathsType.Preview(childComplexity), true - case "ScenePathsType.Screenshot": + case "ScenePathsType.screenshot": if e.complexity.ScenePathsType.Screenshot == nil { break } return e.complexity.ScenePathsType.Screenshot(childComplexity), true - case "ScenePathsType.Stream": + case "ScenePathsType.stream": if e.complexity.ScenePathsType.Stream == nil { break } return e.complexity.ScenePathsType.Stream(childComplexity), true - case "ScenePathsType.Vtt": + case "ScenePathsType.vtt": if e.complexity.ScenePathsType.Vtt == nil { break } return e.complexity.ScenePathsType.Vtt(childComplexity), true - case "ScenePathsType.Webp": + case "ScenePathsType.webp": if e.complexity.ScenePathsType.Webp == nil { break } return e.complexity.ScenePathsType.Webp(childComplexity), true - case "ScrapedPerformer.Aliases": + case "ScrapedPerformer.aliases": if e.complexity.ScrapedPerformer.Aliases == nil { break } return e.complexity.ScrapedPerformer.Aliases(childComplexity), true - case "ScrapedPerformer.Birthdate": + case "ScrapedPerformer.birthdate": if e.complexity.ScrapedPerformer.Birthdate == nil { break } return e.complexity.ScrapedPerformer.Birthdate(childComplexity), true - case "ScrapedPerformer.CareerLength": + case "ScrapedPerformer.career_length": if e.complexity.ScrapedPerformer.CareerLength == nil { break } return e.complexity.ScrapedPerformer.CareerLength(childComplexity), true - case "ScrapedPerformer.Country": + case "ScrapedPerformer.country": if e.complexity.ScrapedPerformer.Country == nil { break } return e.complexity.ScrapedPerformer.Country(childComplexity), true - case "ScrapedPerformer.Ethnicity": + case "ScrapedPerformer.ethnicity": if e.complexity.ScrapedPerformer.Ethnicity == nil { break } return e.complexity.ScrapedPerformer.Ethnicity(childComplexity), true - case "ScrapedPerformer.EyeColor": + case "ScrapedPerformer.eye_color": if e.complexity.ScrapedPerformer.EyeColor == nil { break } return e.complexity.ScrapedPerformer.EyeColor(childComplexity), true - case "ScrapedPerformer.FakeTits": + case "ScrapedPerformer.fake_tits": if e.complexity.ScrapedPerformer.FakeTits == nil { break } return e.complexity.ScrapedPerformer.FakeTits(childComplexity), true - case "ScrapedPerformer.Height": + case "ScrapedPerformer.height": if e.complexity.ScrapedPerformer.Height == nil { break } return e.complexity.ScrapedPerformer.Height(childComplexity), true - case "ScrapedPerformer.Instagram": + case "ScrapedPerformer.instagram": if e.complexity.ScrapedPerformer.Instagram == nil { break } return e.complexity.ScrapedPerformer.Instagram(childComplexity), true - case "ScrapedPerformer.Measurements": + case "ScrapedPerformer.measurements": if e.complexity.ScrapedPerformer.Measurements == nil { break } return e.complexity.ScrapedPerformer.Measurements(childComplexity), true - case "ScrapedPerformer.Name": + case "ScrapedPerformer.name": if e.complexity.ScrapedPerformer.Name == nil { break } return e.complexity.ScrapedPerformer.Name(childComplexity), true - case "ScrapedPerformer.Piercings": + case "ScrapedPerformer.piercings": if e.complexity.ScrapedPerformer.Piercings == nil { break } return e.complexity.ScrapedPerformer.Piercings(childComplexity), true - case "ScrapedPerformer.Tattoos": + case "ScrapedPerformer.tattoos": if e.complexity.ScrapedPerformer.Tattoos == nil { break } return e.complexity.ScrapedPerformer.Tattoos(childComplexity), true - case "ScrapedPerformer.Twitter": + case "ScrapedPerformer.twitter": if e.complexity.ScrapedPerformer.Twitter == nil { break } return e.complexity.ScrapedPerformer.Twitter(childComplexity), true - case "ScrapedPerformer.URL": + case "ScrapedPerformer.url": if e.complexity.ScrapedPerformer.URL == nil { break } return e.complexity.ScrapedPerformer.URL(childComplexity), true - case "StatsResultType.GalleryCount": + case "StatsResultType.gallery_count": if e.complexity.StatsResultType.GalleryCount == nil { break } return e.complexity.StatsResultType.GalleryCount(childComplexity), true - case "StatsResultType.PerformerCount": + case "StatsResultType.performer_count": if e.complexity.StatsResultType.PerformerCount == nil { break } return e.complexity.StatsResultType.PerformerCount(childComplexity), true - case "StatsResultType.SceneCount": + case "StatsResultType.scene_count": if e.complexity.StatsResultType.SceneCount == nil { break } return e.complexity.StatsResultType.SceneCount(childComplexity), true - case "StatsResultType.StudioCount": + case "StatsResultType.studio_count": if e.complexity.StatsResultType.StudioCount == nil { break } return e.complexity.StatsResultType.StudioCount(childComplexity), true - case "StatsResultType.TagCount": + case "StatsResultType.tag_count": if e.complexity.StatsResultType.TagCount == nil { break } return e.complexity.StatsResultType.TagCount(childComplexity), true - case "Studio.Checksum": + case "Studio.checksum": if e.complexity.Studio.Checksum == nil { break } return e.complexity.Studio.Checksum(childComplexity), true - case "Studio.ID": + case "Studio.id": if e.complexity.Studio.ID == nil { break } return e.complexity.Studio.ID(childComplexity), true - case "Studio.ImagePath": + case "Studio.image_path": if e.complexity.Studio.ImagePath == nil { break } return e.complexity.Studio.ImagePath(childComplexity), true - case "Studio.Name": + case "Studio.name": if e.complexity.Studio.Name == nil { break } return e.complexity.Studio.Name(childComplexity), true - case "Studio.SceneCount": + case "Studio.scene_count": if e.complexity.Studio.SceneCount == nil { break } return e.complexity.Studio.SceneCount(childComplexity), true - case "Studio.URL": + case "Studio.url": if e.complexity.Studio.URL == nil { break } return e.complexity.Studio.URL(childComplexity), true - case "Subscription.MetadataUpdate": + case "Subscription.metadataUpdate": if e.complexity.Subscription.MetadataUpdate == nil { break } return e.complexity.Subscription.MetadataUpdate(childComplexity), true - case "Tag.ID": + case "Tag.id": if e.complexity.Tag.ID == nil { break } return e.complexity.Tag.ID(childComplexity), true - case "Tag.Name": + case "Tag.name": if e.complexity.Tag.Name == nil { break } return e.complexity.Tag.Name(childComplexity), true - case "Tag.SceneCount": + case "Tag.scene_count": if e.complexity.Tag.SceneCount == nil { break } return e.complexity.Tag.SceneCount(childComplexity), true - case "Tag.SceneMarkerCount": + case "Tag.scene_marker_count": if e.complexity.Tag.SceneMarkerCount == nil { break } @@ -2871,10 +2872,10 @@ func (ec *executionContext) _ConfigResult_general(ctx context.Context, field gra } return graphql.Null } - res := resTmp.(ConfigGeneralResult) + res := resTmp.(*ConfigGeneralResult) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNConfigGeneralResult2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐConfigGeneralResult(ctx, field.Selections, res) + return ec.marshalNConfigGeneralResult2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐConfigGeneralResult(ctx, field.Selections, res) } func (ec *executionContext) _FindGalleriesResultType_count(ctx context.Context, field graphql.CollectedField, obj *FindGalleriesResultType) graphql.Marshaler { @@ -2925,10 +2926,10 @@ func (ec *executionContext) _FindGalleriesResultType_galleries(ctx context.Conte } return graphql.Null } - res := resTmp.([]Gallery) + res := resTmp.([]*Gallery) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNGallery2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGallery(ctx, field.Selections, res) + return ec.marshalNGallery2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGallery(ctx, field.Selections, res) } func (ec *executionContext) _FindPerformersResultType_count(ctx context.Context, field graphql.CollectedField, obj *FindPerformersResultType) graphql.Marshaler { @@ -2979,10 +2980,10 @@ func (ec *executionContext) _FindPerformersResultType_performers(ctx context.Con } return graphql.Null } - res := resTmp.([]Performer) + res := resTmp.([]*Performer) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNPerformer2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐPerformer(ctx, field.Selections, res) + return ec.marshalNPerformer2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐPerformer(ctx, field.Selections, res) } func (ec *executionContext) _FindSceneMarkersResultType_count(ctx context.Context, field graphql.CollectedField, obj *FindSceneMarkersResultType) graphql.Marshaler { @@ -3033,10 +3034,10 @@ func (ec *executionContext) _FindSceneMarkersResultType_scene_markers(ctx contex } return graphql.Null } - res := resTmp.([]SceneMarker) + res := resTmp.([]*SceneMarker) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNSceneMarker2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarker(ctx, field.Selections, res) + return ec.marshalNSceneMarker2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarker(ctx, field.Selections, res) } func (ec *executionContext) _FindScenesResultType_count(ctx context.Context, field graphql.CollectedField, obj *FindScenesResultType) graphql.Marshaler { @@ -3087,10 +3088,10 @@ func (ec *executionContext) _FindScenesResultType_scenes(ctx context.Context, fi } return graphql.Null } - res := resTmp.([]Scene) + res := resTmp.([]*Scene) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNScene2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐScene(ctx, field.Selections, res) + return ec.marshalNScene2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐScene(ctx, field.Selections, res) } func (ec *executionContext) _FindStudiosResultType_count(ctx context.Context, field graphql.CollectedField, obj *FindStudiosResultType) graphql.Marshaler { @@ -3141,10 +3142,10 @@ func (ec *executionContext) _FindStudiosResultType_studios(ctx context.Context, } return graphql.Null } - res := resTmp.([]Studio) + res := resTmp.([]*Studio) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNStudio2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐStudio(ctx, field.Selections, res) + return ec.marshalNStudio2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐStudio(ctx, field.Selections, res) } func (ec *executionContext) _Gallery_id(ctx context.Context, field graphql.CollectedField, obj *Gallery) graphql.Marshaler { @@ -3273,10 +3274,10 @@ func (ec *executionContext) _Gallery_files(ctx context.Context, field graphql.Co } return graphql.Null } - res := resTmp.([]GalleryFilesType) + res := resTmp.([]*GalleryFilesType) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNGalleryFilesType2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGalleryFilesType(ctx, field.Selections, res) + return ec.marshalNGalleryFilesType2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGalleryFilesType(ctx, field.Selections, res) } func (ec *executionContext) _GalleryFilesType_index(ctx context.Context, field graphql.CollectedField, obj *GalleryFilesType) graphql.Marshaler { @@ -4326,10 +4327,10 @@ func (ec *executionContext) _Performer_scenes(ctx context.Context, field graphql } return graphql.Null } - res := resTmp.([]Scene) + res := resTmp.([]*Scene) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNScene2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐScene(ctx, field.Selections, res) + return ec.marshalNScene2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐScene(ctx, field.Selections, res) } func (ec *executionContext) _Query_findScene(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { @@ -4685,10 +4686,10 @@ func (ec *executionContext) _Query_markerWall(ctx context.Context, field graphql } return graphql.Null } - res := resTmp.([]SceneMarker) + res := resTmp.([]*SceneMarker) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNSceneMarker2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarker(ctx, field.Selections, res) + return ec.marshalNSceneMarker2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarker(ctx, field.Selections, res) } func (ec *executionContext) _Query_sceneWall(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { @@ -4719,10 +4720,10 @@ func (ec *executionContext) _Query_sceneWall(ctx context.Context, field graphql. } return graphql.Null } - res := resTmp.([]Scene) + res := resTmp.([]*Scene) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNScene2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐScene(ctx, field.Selections, res) + return ec.marshalNScene2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐScene(ctx, field.Selections, res) } func (ec *executionContext) _Query_markerStrings(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { @@ -4787,10 +4788,10 @@ func (ec *executionContext) _Query_validGalleriesForScene(ctx context.Context, f } return graphql.Null } - res := resTmp.([]Gallery) + res := resTmp.([]*Gallery) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNGallery2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGallery(ctx, field.Selections, res) + return ec.marshalNGallery2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGallery(ctx, field.Selections, res) } func (ec *executionContext) _Query_stats(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { @@ -4848,10 +4849,10 @@ func (ec *executionContext) _Query_sceneMarkerTags(ctx context.Context, field gr } return graphql.Null } - res := resTmp.([]SceneMarkerTag) + res := resTmp.([]*SceneMarkerTag) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNSceneMarkerTag2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarkerTag(ctx, field.Selections, res) + return ec.marshalNSceneMarkerTag2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarkerTag(ctx, field.Selections, res) } func (ec *executionContext) _Query_scrapeFreeones(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { @@ -5143,10 +5144,10 @@ func (ec *executionContext) _Query_allPerformers(ctx context.Context, field grap } return graphql.Null } - res := resTmp.([]Performer) + res := resTmp.([]*Performer) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNPerformer2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐPerformer(ctx, field.Selections, res) + return ec.marshalNPerformer2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐPerformer(ctx, field.Selections, res) } func (ec *executionContext) _Query_allStudios(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { @@ -5170,10 +5171,10 @@ func (ec *executionContext) _Query_allStudios(ctx context.Context, field graphql } return graphql.Null } - res := resTmp.([]Studio) + res := resTmp.([]*Studio) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNStudio2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐStudio(ctx, field.Selections, res) + return ec.marshalNStudio2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐStudio(ctx, field.Selections, res) } func (ec *executionContext) _Query_allTags(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { @@ -5197,10 +5198,10 @@ func (ec *executionContext) _Query_allTags(ctx context.Context, field graphql.Co } return graphql.Null } - res := resTmp.([]Tag) + res := resTmp.([]*Tag) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNTag2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐTag(ctx, field.Selections, res) + return ec.marshalNTag2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐTag(ctx, field.Selections, res) } func (ec *executionContext) _Query___type(ctx context.Context, field graphql.CollectedField) graphql.Marshaler { @@ -5561,10 +5562,10 @@ func (ec *executionContext) _Scene_scene_markers(ctx context.Context, field grap } return graphql.Null } - res := resTmp.([]SceneMarker) + res := resTmp.([]*SceneMarker) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNSceneMarker2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarker(ctx, field.Selections, res) + return ec.marshalNSceneMarker2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarker(ctx, field.Selections, res) } func (ec *executionContext) _Scene_gallery(ctx context.Context, field graphql.CollectedField, obj *Scene) graphql.Marshaler { @@ -5636,10 +5637,10 @@ func (ec *executionContext) _Scene_tags(ctx context.Context, field graphql.Colle } return graphql.Null } - res := resTmp.([]Tag) + res := resTmp.([]*Tag) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNTag2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐTag(ctx, field.Selections, res) + return ec.marshalNTag2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐTag(ctx, field.Selections, res) } func (ec *executionContext) _Scene_performers(ctx context.Context, field graphql.CollectedField, obj *Scene) graphql.Marshaler { @@ -5663,10 +5664,10 @@ func (ec *executionContext) _Scene_performers(ctx context.Context, field graphql } return graphql.Null } - res := resTmp.([]Performer) + res := resTmp.([]*Performer) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNPerformer2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐPerformer(ctx, field.Selections, res) + return ec.marshalNPerformer2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐPerformer(ctx, field.Selections, res) } func (ec *executionContext) _SceneFileType_size(ctx context.Context, field graphql.CollectedField, obj *SceneFileType) graphql.Marshaler { @@ -6017,10 +6018,10 @@ func (ec *executionContext) _SceneMarker_tags(ctx context.Context, field graphql } return graphql.Null } - res := resTmp.([]Tag) + res := resTmp.([]*Tag) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNTag2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐTag(ctx, field.Selections, res) + return ec.marshalNTag2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐTag(ctx, field.Selections, res) } func (ec *executionContext) _SceneMarker_stream(ctx context.Context, field graphql.CollectedField, obj *SceneMarker) graphql.Marshaler { @@ -6098,10 +6099,10 @@ func (ec *executionContext) _SceneMarkerTag_tag(ctx context.Context, field graph } return graphql.Null } - res := resTmp.(Tag) + res := resTmp.(*Tag) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNTag2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐTag(ctx, field.Selections, res) + return ec.marshalNTag2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐTag(ctx, field.Selections, res) } func (ec *executionContext) _SceneMarkerTag_scene_markers(ctx context.Context, field graphql.CollectedField, obj *SceneMarkerTag) graphql.Marshaler { @@ -6125,10 +6126,10 @@ func (ec *executionContext) _SceneMarkerTag_scene_markers(ctx context.Context, f } return graphql.Null } - res := resTmp.([]SceneMarker) + res := resTmp.([]*SceneMarker) rctx.Result = res ctx = ec.Tracer.StartFieldChildExecution(ctx) - return ec.marshalNSceneMarker2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarker(ctx, field.Selections, res) + return ec.marshalNSceneMarker2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarker(ctx, field.Selections, res) } func (ec *executionContext) _ScenePathsType_screenshot(ctx context.Context, field graphql.CollectedField, obj *ScenePathsType) graphql.Marshaler { @@ -8663,10 +8664,10 @@ func (ec *executionContext) unmarshalInputTagUpdateInput(ctx context.Context, v var configGeneralResultImplementors = []string{"ConfigGeneralResult"} func (ec *executionContext) _ConfigGeneralResult(ctx context.Context, sel ast.SelectionSet, obj *ConfigGeneralResult) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, configGeneralResultImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, configGeneralResultImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -8674,24 +8675,24 @@ func (ec *executionContext) _ConfigGeneralResult(ctx context.Context, sel ast.Se case "stashes": out.Values[i] = ec._ConfigGeneralResult_stashes(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "databasePath": out.Values[i] = ec._ConfigGeneralResult_databasePath(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "generatedPath": out.Values[i] = ec._ConfigGeneralResult_generatedPath(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } default: panic("unknown field " + strconv.Quote(field.Name)) } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -8700,10 +8701,10 @@ func (ec *executionContext) _ConfigGeneralResult(ctx context.Context, sel ast.Se var configResultImplementors = []string{"ConfigResult"} func (ec *executionContext) _ConfigResult(ctx context.Context, sel ast.SelectionSet, obj *ConfigResult) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, configResultImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, configResultImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -8711,14 +8712,14 @@ func (ec *executionContext) _ConfigResult(ctx context.Context, sel ast.Selection case "general": out.Values[i] = ec._ConfigResult_general(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } default: panic("unknown field " + strconv.Quote(field.Name)) } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -8727,10 +8728,10 @@ func (ec *executionContext) _ConfigResult(ctx context.Context, sel ast.Selection var findGalleriesResultTypeImplementors = []string{"FindGalleriesResultType"} func (ec *executionContext) _FindGalleriesResultType(ctx context.Context, sel ast.SelectionSet, obj *FindGalleriesResultType) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, findGalleriesResultTypeImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, findGalleriesResultTypeImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -8738,19 +8739,19 @@ func (ec *executionContext) _FindGalleriesResultType(ctx context.Context, sel as case "count": out.Values[i] = ec._FindGalleriesResultType_count(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "galleries": out.Values[i] = ec._FindGalleriesResultType_galleries(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } default: panic("unknown field " + strconv.Quote(field.Name)) } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -8759,10 +8760,10 @@ func (ec *executionContext) _FindGalleriesResultType(ctx context.Context, sel as var findPerformersResultTypeImplementors = []string{"FindPerformersResultType"} func (ec *executionContext) _FindPerformersResultType(ctx context.Context, sel ast.SelectionSet, obj *FindPerformersResultType) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, findPerformersResultTypeImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, findPerformersResultTypeImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -8770,19 +8771,19 @@ func (ec *executionContext) _FindPerformersResultType(ctx context.Context, sel a case "count": out.Values[i] = ec._FindPerformersResultType_count(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "performers": out.Values[i] = ec._FindPerformersResultType_performers(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } default: panic("unknown field " + strconv.Quote(field.Name)) } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -8791,10 +8792,10 @@ func (ec *executionContext) _FindPerformersResultType(ctx context.Context, sel a var findSceneMarkersResultTypeImplementors = []string{"FindSceneMarkersResultType"} func (ec *executionContext) _FindSceneMarkersResultType(ctx context.Context, sel ast.SelectionSet, obj *FindSceneMarkersResultType) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, findSceneMarkersResultTypeImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, findSceneMarkersResultTypeImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -8802,19 +8803,19 @@ func (ec *executionContext) _FindSceneMarkersResultType(ctx context.Context, sel case "count": out.Values[i] = ec._FindSceneMarkersResultType_count(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "scene_markers": out.Values[i] = ec._FindSceneMarkersResultType_scene_markers(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } default: panic("unknown field " + strconv.Quote(field.Name)) } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -8823,10 +8824,10 @@ func (ec *executionContext) _FindSceneMarkersResultType(ctx context.Context, sel var findScenesResultTypeImplementors = []string{"FindScenesResultType"} func (ec *executionContext) _FindScenesResultType(ctx context.Context, sel ast.SelectionSet, obj *FindScenesResultType) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, findScenesResultTypeImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, findScenesResultTypeImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -8834,19 +8835,19 @@ func (ec *executionContext) _FindScenesResultType(ctx context.Context, sel ast.S case "count": out.Values[i] = ec._FindScenesResultType_count(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "scenes": out.Values[i] = ec._FindScenesResultType_scenes(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } default: panic("unknown field " + strconv.Quote(field.Name)) } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -8855,10 +8856,10 @@ func (ec *executionContext) _FindScenesResultType(ctx context.Context, sel ast.S var findStudiosResultTypeImplementors = []string{"FindStudiosResultType"} func (ec *executionContext) _FindStudiosResultType(ctx context.Context, sel ast.SelectionSet, obj *FindStudiosResultType) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, findStudiosResultTypeImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, findStudiosResultTypeImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -8866,19 +8867,19 @@ func (ec *executionContext) _FindStudiosResultType(ctx context.Context, sel ast. case "count": out.Values[i] = ec._FindStudiosResultType_count(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "studios": out.Values[i] = ec._FindStudiosResultType_studios(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } default: panic("unknown field " + strconv.Quote(field.Name)) } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -8887,10 +8888,10 @@ func (ec *executionContext) _FindStudiosResultType(ctx context.Context, sel ast. var galleryImplementors = []string{"Gallery"} func (ec *executionContext) _Gallery(ctx context.Context, sel ast.SelectionSet, obj *Gallery) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, galleryImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, galleryImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -8898,17 +8899,17 @@ func (ec *executionContext) _Gallery(ctx context.Context, sel ast.SelectionSet, case "id": out.Values[i] = ec._Gallery_id(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "checksum": out.Values[i] = ec._Gallery_checksum(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "path": out.Values[i] = ec._Gallery_path(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "title": field := field @@ -8931,7 +8932,7 @@ func (ec *executionContext) _Gallery(ctx context.Context, sel ast.SelectionSet, }() res = ec._Gallery_files(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -8940,7 +8941,7 @@ func (ec *executionContext) _Gallery(ctx context.Context, sel ast.SelectionSet, } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -8949,10 +8950,10 @@ func (ec *executionContext) _Gallery(ctx context.Context, sel ast.SelectionSet, var galleryFilesTypeImplementors = []string{"GalleryFilesType"} func (ec *executionContext) _GalleryFilesType(ctx context.Context, sel ast.SelectionSet, obj *GalleryFilesType) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, galleryFilesTypeImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, galleryFilesTypeImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -8960,7 +8961,7 @@ func (ec *executionContext) _GalleryFilesType(ctx context.Context, sel ast.Selec case "index": out.Values[i] = ec._GalleryFilesType_index(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "name": out.Values[i] = ec._GalleryFilesType_name(ctx, field, obj) @@ -8971,7 +8972,7 @@ func (ec *executionContext) _GalleryFilesType(ctx context.Context, sel ast.Selec } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -8980,10 +8981,10 @@ func (ec *executionContext) _GalleryFilesType(ctx context.Context, sel ast.Selec var markerStringsResultTypeImplementors = []string{"MarkerStringsResultType"} func (ec *executionContext) _MarkerStringsResultType(ctx context.Context, sel ast.SelectionSet, obj *MarkerStringsResultType) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, markerStringsResultTypeImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, markerStringsResultTypeImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -8991,24 +8992,24 @@ func (ec *executionContext) _MarkerStringsResultType(ctx context.Context, sel as case "count": out.Values[i] = ec._MarkerStringsResultType_count(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "id": out.Values[i] = ec._MarkerStringsResultType_id(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "title": out.Values[i] = ec._MarkerStringsResultType_title(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } default: panic("unknown field " + strconv.Quote(field.Name)) } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -9017,14 +9018,14 @@ func (ec *executionContext) _MarkerStringsResultType(ctx context.Context, sel as var mutationImplementors = []string{"Mutation"} func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, mutationImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, mutationImplementors) ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ Object: "Mutation", }) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -9038,7 +9039,7 @@ func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet) case "sceneMarkerDestroy": out.Values[i] = ec._Mutation_sceneMarkerDestroy(ctx, field) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "performerCreate": out.Values[i] = ec._Mutation_performerCreate(ctx, field) @@ -9055,19 +9056,19 @@ func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet) case "tagDestroy": out.Values[i] = ec._Mutation_tagDestroy(ctx, field) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "configureGeneral": out.Values[i] = ec._Mutation_configureGeneral(ctx, field) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } default: panic("unknown field " + strconv.Quote(field.Name)) } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -9076,10 +9077,10 @@ func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet) var performerImplementors = []string{"Performer"} func (ec *executionContext) _Performer(ctx context.Context, sel ast.SelectionSet, obj *Performer) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, performerImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, performerImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -9087,12 +9088,12 @@ func (ec *executionContext) _Performer(ctx context.Context, sel ast.SelectionSet case "id": out.Values[i] = ec._Performer_id(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "checksum": out.Values[i] = ec._Performer_checksum(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "name": field := field @@ -9269,7 +9270,7 @@ func (ec *executionContext) _Performer(ctx context.Context, sel ast.SelectionSet }() res = ec._Performer_favorite(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9305,7 +9306,7 @@ func (ec *executionContext) _Performer(ctx context.Context, sel ast.SelectionSet }() res = ec._Performer_scenes(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9314,7 +9315,7 @@ func (ec *executionContext) _Performer(ctx context.Context, sel ast.SelectionSet } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -9323,14 +9324,14 @@ func (ec *executionContext) _Performer(ctx context.Context, sel ast.SelectionSet var queryImplementors = []string{"Query"} func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, queryImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, queryImplementors) ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ Object: "Query", }) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -9356,7 +9357,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_findScenes(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9370,7 +9371,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_findSceneMarkers(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9395,7 +9396,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_findPerformers(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9420,7 +9421,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_findStudios(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9445,7 +9446,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_findGalleries(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9470,7 +9471,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_markerWall(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9484,7 +9485,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_sceneWall(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9498,7 +9499,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_markerStrings(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9512,7 +9513,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_validGalleriesForScene(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9526,7 +9527,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_stats(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9540,7 +9541,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_sceneMarkerTags(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9565,7 +9566,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_scrapeFreeonesPerformerList(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9579,7 +9580,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_configuration(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9593,7 +9594,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_directories(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9607,7 +9608,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_metadataImport(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9621,7 +9622,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_metadataExport(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9635,7 +9636,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_metadataScan(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9649,7 +9650,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_metadataGenerate(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9663,7 +9664,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_metadataClean(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9677,7 +9678,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_allPerformers(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9691,7 +9692,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_allStudios(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9705,7 +9706,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr }() res = ec._Query_allTags(ctx, field) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9718,7 +9719,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -9727,10 +9728,10 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr var sceneImplementors = []string{"Scene"} func (ec *executionContext) _Scene(ctx context.Context, sel ast.SelectionSet, obj *Scene) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, sceneImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, sceneImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -9738,12 +9739,12 @@ func (ec *executionContext) _Scene(ctx context.Context, sel ast.SelectionSet, ob case "id": out.Values[i] = ec._Scene_id(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "checksum": out.Values[i] = ec._Scene_checksum(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "title": field := field @@ -9803,7 +9804,7 @@ func (ec *executionContext) _Scene(ctx context.Context, sel ast.SelectionSet, ob case "path": out.Values[i] = ec._Scene_path(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "file": field := field @@ -9815,7 +9816,7 @@ func (ec *executionContext) _Scene(ctx context.Context, sel ast.SelectionSet, ob }() res = ec._Scene_file(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9829,7 +9830,7 @@ func (ec *executionContext) _Scene(ctx context.Context, sel ast.SelectionSet, ob }() res = ec._Scene_paths(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9843,7 +9844,7 @@ func (ec *executionContext) _Scene(ctx context.Context, sel ast.SelectionSet, ob }() res = ec._Scene_is_streamable(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9857,7 +9858,7 @@ func (ec *executionContext) _Scene(ctx context.Context, sel ast.SelectionSet, ob }() res = ec._Scene_scene_markers(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9893,7 +9894,7 @@ func (ec *executionContext) _Scene(ctx context.Context, sel ast.SelectionSet, ob }() res = ec._Scene_tags(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9907,7 +9908,7 @@ func (ec *executionContext) _Scene(ctx context.Context, sel ast.SelectionSet, ob }() res = ec._Scene_performers(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -9916,7 +9917,7 @@ func (ec *executionContext) _Scene(ctx context.Context, sel ast.SelectionSet, ob } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -9925,10 +9926,10 @@ func (ec *executionContext) _Scene(ctx context.Context, sel ast.SelectionSet, ob var sceneFileTypeImplementors = []string{"SceneFileType"} func (ec *executionContext) _SceneFileType(ctx context.Context, sel ast.SelectionSet, obj *SceneFileType) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, sceneFileTypeImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, sceneFileTypeImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -9954,7 +9955,7 @@ func (ec *executionContext) _SceneFileType(ctx context.Context, sel ast.Selectio } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -9963,10 +9964,10 @@ func (ec *executionContext) _SceneFileType(ctx context.Context, sel ast.Selectio var sceneMarkerImplementors = []string{"SceneMarker"} func (ec *executionContext) _SceneMarker(ctx context.Context, sel ast.SelectionSet, obj *SceneMarker) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, sceneMarkerImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, sceneMarkerImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -9974,7 +9975,7 @@ func (ec *executionContext) _SceneMarker(ctx context.Context, sel ast.SelectionS case "id": out.Values[i] = ec._SceneMarker_id(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "scene": field := field @@ -9986,19 +9987,19 @@ func (ec *executionContext) _SceneMarker(ctx context.Context, sel ast.SelectionS }() res = ec._SceneMarker_scene(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) case "title": out.Values[i] = ec._SceneMarker_title(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "seconds": out.Values[i] = ec._SceneMarker_seconds(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "primary_tag": field := field @@ -10010,7 +10011,7 @@ func (ec *executionContext) _SceneMarker(ctx context.Context, sel ast.SelectionS }() res = ec._SceneMarker_primary_tag(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -10024,7 +10025,7 @@ func (ec *executionContext) _SceneMarker(ctx context.Context, sel ast.SelectionS }() res = ec._SceneMarker_tags(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -10038,7 +10039,7 @@ func (ec *executionContext) _SceneMarker(ctx context.Context, sel ast.SelectionS }() res = ec._SceneMarker_stream(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -10052,7 +10053,7 @@ func (ec *executionContext) _SceneMarker(ctx context.Context, sel ast.SelectionS }() res = ec._SceneMarker_preview(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -10061,7 +10062,7 @@ func (ec *executionContext) _SceneMarker(ctx context.Context, sel ast.SelectionS } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -10070,10 +10071,10 @@ func (ec *executionContext) _SceneMarker(ctx context.Context, sel ast.SelectionS var sceneMarkerTagImplementors = []string{"SceneMarkerTag"} func (ec *executionContext) _SceneMarkerTag(ctx context.Context, sel ast.SelectionSet, obj *SceneMarkerTag) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, sceneMarkerTagImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, sceneMarkerTagImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -10081,19 +10082,19 @@ func (ec *executionContext) _SceneMarkerTag(ctx context.Context, sel ast.Selecti case "tag": out.Values[i] = ec._SceneMarkerTag_tag(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "scene_markers": out.Values[i] = ec._SceneMarkerTag_scene_markers(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } default: panic("unknown field " + strconv.Quote(field.Name)) } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -10102,10 +10103,10 @@ func (ec *executionContext) _SceneMarkerTag(ctx context.Context, sel ast.Selecti var scenePathsTypeImplementors = []string{"ScenePathsType"} func (ec *executionContext) _ScenePathsType(ctx context.Context, sel ast.SelectionSet, obj *ScenePathsType) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, scenePathsTypeImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, scenePathsTypeImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -10127,7 +10128,7 @@ func (ec *executionContext) _ScenePathsType(ctx context.Context, sel ast.Selecti } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -10136,10 +10137,10 @@ func (ec *executionContext) _ScenePathsType(ctx context.Context, sel ast.Selecti var scrapedPerformerImplementors = []string{"ScrapedPerformer"} func (ec *executionContext) _ScrapedPerformer(ctx context.Context, sel ast.SelectionSet, obj *ScrapedPerformer) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, scrapedPerformerImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, scrapedPerformerImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -10179,7 +10180,7 @@ func (ec *executionContext) _ScrapedPerformer(ctx context.Context, sel ast.Selec } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -10188,10 +10189,10 @@ func (ec *executionContext) _ScrapedPerformer(ctx context.Context, sel ast.Selec var statsResultTypeImplementors = []string{"StatsResultType"} func (ec *executionContext) _StatsResultType(ctx context.Context, sel ast.SelectionSet, obj *StatsResultType) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, statsResultTypeImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, statsResultTypeImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -10199,34 +10200,34 @@ func (ec *executionContext) _StatsResultType(ctx context.Context, sel ast.Select case "scene_count": out.Values[i] = ec._StatsResultType_scene_count(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "gallery_count": out.Values[i] = ec._StatsResultType_gallery_count(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "performer_count": out.Values[i] = ec._StatsResultType_performer_count(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "studio_count": out.Values[i] = ec._StatsResultType_studio_count(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "tag_count": out.Values[i] = ec._StatsResultType_tag_count(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } default: panic("unknown field " + strconv.Quote(field.Name)) } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -10235,10 +10236,10 @@ func (ec *executionContext) _StatsResultType(ctx context.Context, sel ast.Select var studioImplementors = []string{"Studio"} func (ec *executionContext) _Studio(ctx context.Context, sel ast.SelectionSet, obj *Studio) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, studioImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, studioImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -10246,12 +10247,12 @@ func (ec *executionContext) _Studio(ctx context.Context, sel ast.SelectionSet, o case "id": out.Values[i] = ec._Studio_id(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "checksum": out.Values[i] = ec._Studio_checksum(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "name": field := field @@ -10263,7 +10264,7 @@ func (ec *executionContext) _Studio(ctx context.Context, sel ast.SelectionSet, o }() res = ec._Studio_name(ctx, field, obj) if res == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } return res }) @@ -10305,7 +10306,7 @@ func (ec *executionContext) _Studio(ctx context.Context, sel ast.SelectionSet, o } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -10314,7 +10315,7 @@ func (ec *executionContext) _Studio(ctx context.Context, sel ast.SelectionSet, o var subscriptionImplementors = []string{"Subscription"} func (ec *executionContext) _Subscription(ctx context.Context, sel ast.SelectionSet) func() graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, subscriptionImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, subscriptionImplementors) ctx = graphql.WithResolverContext(ctx, &graphql.ResolverContext{ Object: "Subscription", }) @@ -10334,10 +10335,10 @@ func (ec *executionContext) _Subscription(ctx context.Context, sel ast.Selection var tagImplementors = []string{"Tag"} func (ec *executionContext) _Tag(ctx context.Context, sel ast.SelectionSet, obj *Tag) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, tagImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, tagImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -10345,12 +10346,12 @@ func (ec *executionContext) _Tag(ctx context.Context, sel ast.SelectionSet, obj case "id": out.Values[i] = ec._Tag_id(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "name": out.Values[i] = ec._Tag_name(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + atomic.AddUint32(&invalids, 1) } case "scene_count": field := field @@ -10379,7 +10380,7 @@ func (ec *executionContext) _Tag(ctx context.Context, sel ast.SelectionSet, obj } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -10388,10 +10389,10 @@ func (ec *executionContext) _Tag(ctx context.Context, sel ast.SelectionSet, obj var __DirectiveImplementors = []string{"__Directive"} func (ec *executionContext) ___Directive(ctx context.Context, sel ast.SelectionSet, obj *introspection.Directive) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, __DirectiveImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, __DirectiveImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -10399,26 +10400,26 @@ func (ec *executionContext) ___Directive(ctx context.Context, sel ast.SelectionS case "name": out.Values[i] = ec.___Directive_name(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "description": out.Values[i] = ec.___Directive_description(ctx, field, obj) case "locations": out.Values[i] = ec.___Directive_locations(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "args": out.Values[i] = ec.___Directive_args(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } default: panic("unknown field " + strconv.Quote(field.Name)) } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -10427,10 +10428,10 @@ func (ec *executionContext) ___Directive(ctx context.Context, sel ast.SelectionS var __EnumValueImplementors = []string{"__EnumValue"} func (ec *executionContext) ___EnumValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.EnumValue) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, __EnumValueImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, __EnumValueImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -10438,14 +10439,14 @@ func (ec *executionContext) ___EnumValue(ctx context.Context, sel ast.SelectionS case "name": out.Values[i] = ec.___EnumValue_name(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "description": out.Values[i] = ec.___EnumValue_description(ctx, field, obj) case "isDeprecated": out.Values[i] = ec.___EnumValue_isDeprecated(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "deprecationReason": out.Values[i] = ec.___EnumValue_deprecationReason(ctx, field, obj) @@ -10454,7 +10455,7 @@ func (ec *executionContext) ___EnumValue(ctx context.Context, sel ast.SelectionS } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -10463,10 +10464,10 @@ func (ec *executionContext) ___EnumValue(ctx context.Context, sel ast.SelectionS var __FieldImplementors = []string{"__Field"} func (ec *executionContext) ___Field(ctx context.Context, sel ast.SelectionSet, obj *introspection.Field) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, __FieldImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, __FieldImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -10474,24 +10475,24 @@ func (ec *executionContext) ___Field(ctx context.Context, sel ast.SelectionSet, case "name": out.Values[i] = ec.___Field_name(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "description": out.Values[i] = ec.___Field_description(ctx, field, obj) case "args": out.Values[i] = ec.___Field_args(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "type": out.Values[i] = ec.___Field_type(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "isDeprecated": out.Values[i] = ec.___Field_isDeprecated(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "deprecationReason": out.Values[i] = ec.___Field_deprecationReason(ctx, field, obj) @@ -10500,7 +10501,7 @@ func (ec *executionContext) ___Field(ctx context.Context, sel ast.SelectionSet, } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -10509,10 +10510,10 @@ func (ec *executionContext) ___Field(ctx context.Context, sel ast.SelectionSet, var __InputValueImplementors = []string{"__InputValue"} func (ec *executionContext) ___InputValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.InputValue) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, __InputValueImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, __InputValueImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -10520,14 +10521,14 @@ func (ec *executionContext) ___InputValue(ctx context.Context, sel ast.Selection case "name": out.Values[i] = ec.___InputValue_name(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "description": out.Values[i] = ec.___InputValue_description(ctx, field, obj) case "type": out.Values[i] = ec.___InputValue_type(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "defaultValue": out.Values[i] = ec.___InputValue_defaultValue(ctx, field, obj) @@ -10536,7 +10537,7 @@ func (ec *executionContext) ___InputValue(ctx context.Context, sel ast.Selection } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -10545,10 +10546,10 @@ func (ec *executionContext) ___InputValue(ctx context.Context, sel ast.Selection var __SchemaImplementors = []string{"__Schema"} func (ec *executionContext) ___Schema(ctx context.Context, sel ast.SelectionSet, obj *introspection.Schema) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, __SchemaImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, __SchemaImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -10556,12 +10557,12 @@ func (ec *executionContext) ___Schema(ctx context.Context, sel ast.SelectionSet, case "types": out.Values[i] = ec.___Schema_types(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "queryType": out.Values[i] = ec.___Schema_queryType(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "mutationType": out.Values[i] = ec.___Schema_mutationType(ctx, field, obj) @@ -10570,14 +10571,14 @@ func (ec *executionContext) ___Schema(ctx context.Context, sel ast.SelectionSet, case "directives": out.Values[i] = ec.___Schema_directives(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } default: panic("unknown field " + strconv.Quote(field.Name)) } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -10586,10 +10587,10 @@ func (ec *executionContext) ___Schema(ctx context.Context, sel ast.SelectionSet, var __TypeImplementors = []string{"__Type"} func (ec *executionContext) ___Type(ctx context.Context, sel ast.SelectionSet, obj *introspection.Type) graphql.Marshaler { - fields := graphql.CollectFields(ctx, sel, __TypeImplementors) + fields := graphql.CollectFields(ec.RequestContext, sel, __TypeImplementors) out := graphql.NewFieldSet(fields) - invalid := false + var invalids uint32 for i, field := range fields { switch field.Name { case "__typename": @@ -10597,7 +10598,7 @@ func (ec *executionContext) ___Type(ctx context.Context, sel ast.SelectionSet, o case "kind": out.Values[i] = ec.___Type_kind(ctx, field, obj) if out.Values[i] == graphql.Null { - invalid = true + invalids++ } case "name": out.Values[i] = ec.___Type_name(ctx, field, obj) @@ -10620,7 +10621,7 @@ func (ec *executionContext) ___Type(ctx context.Context, sel ast.SelectionSet, o } } out.Dispatch() - if invalid { + if invalids > 0 { return graphql.Null } return out @@ -10635,7 +10636,13 @@ func (ec *executionContext) unmarshalNBoolean2bool(ctx context.Context, v interf } func (ec *executionContext) marshalNBoolean2bool(ctx context.Context, sel ast.SelectionSet, v bool) graphql.Marshaler { - return graphql.MarshalBoolean(v) + res := graphql.MarshalBoolean(v) + if res == graphql.Null { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res } func (ec *executionContext) unmarshalNConfigGeneralInput2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐConfigGeneralInput(ctx context.Context, v interface{}) (ConfigGeneralInput, error) { @@ -10754,14 +10761,20 @@ func (ec *executionContext) unmarshalNFloat2float64(ctx context.Context, v inter } func (ec *executionContext) marshalNFloat2float64(ctx context.Context, sel ast.SelectionSet, v float64) graphql.Marshaler { - return graphql.MarshalFloat(v) + res := graphql.MarshalFloat(v) + if res == graphql.Null { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res } func (ec *executionContext) marshalNGallery2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGallery(ctx context.Context, sel ast.SelectionSet, v Gallery) graphql.Marshaler { return ec._Gallery(ctx, sel, &v) } -func (ec *executionContext) marshalNGallery2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGallery(ctx context.Context, sel ast.SelectionSet, v []Gallery) graphql.Marshaler { +func (ec *executionContext) marshalNGallery2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGallery(ctx context.Context, sel ast.SelectionSet, v []*Gallery) graphql.Marshaler { ret := make(graphql.Array, len(v)) var wg sync.WaitGroup isLen1 := len(v) == 1 @@ -10785,7 +10798,7 @@ func (ec *executionContext) marshalNGallery2ᚕgithubᚗcomᚋstashappᚋstash if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNGallery2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGallery(ctx, sel, v[i]) + ret[i] = ec.marshalNGallery2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGallery(ctx, sel, v[i]) } if isLen1 { f(i) @@ -10798,11 +10811,21 @@ func (ec *executionContext) marshalNGallery2ᚕgithubᚗcomᚋstashappᚋstash return ret } +func (ec *executionContext) marshalNGallery2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGallery(ctx context.Context, sel ast.SelectionSet, v *Gallery) graphql.Marshaler { + if v == nil { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + return ec._Gallery(ctx, sel, v) +} + func (ec *executionContext) marshalNGalleryFilesType2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGalleryFilesType(ctx context.Context, sel ast.SelectionSet, v GalleryFilesType) graphql.Marshaler { return ec._GalleryFilesType(ctx, sel, &v) } -func (ec *executionContext) marshalNGalleryFilesType2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGalleryFilesType(ctx context.Context, sel ast.SelectionSet, v []GalleryFilesType) graphql.Marshaler { +func (ec *executionContext) marshalNGalleryFilesType2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGalleryFilesType(ctx context.Context, sel ast.SelectionSet, v []*GalleryFilesType) graphql.Marshaler { ret := make(graphql.Array, len(v)) var wg sync.WaitGroup isLen1 := len(v) == 1 @@ -10826,7 +10849,7 @@ func (ec *executionContext) marshalNGalleryFilesType2ᚕgithubᚗcomᚋstashapp if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNGalleryFilesType2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGalleryFilesType(ctx, sel, v[i]) + ret[i] = ec.marshalNGalleryFilesType2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGalleryFilesType(ctx, sel, v[i]) } if isLen1 { f(i) @@ -10839,6 +10862,16 @@ func (ec *executionContext) marshalNGalleryFilesType2ᚕgithubᚗcomᚋstashapp return ret } +func (ec *executionContext) marshalNGalleryFilesType2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGalleryFilesType(ctx context.Context, sel ast.SelectionSet, v *GalleryFilesType) graphql.Marshaler { + if v == nil { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + return ec._GalleryFilesType(ctx, sel, v) +} + func (ec *executionContext) unmarshalNGenerateMetadataInput2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐGenerateMetadataInput(ctx context.Context, v interface{}) (GenerateMetadataInput, error) { return ec.unmarshalInputGenerateMetadataInput(ctx, v) } @@ -10848,7 +10881,13 @@ func (ec *executionContext) unmarshalNID2int(ctx context.Context, v interface{}) } func (ec *executionContext) marshalNID2int(ctx context.Context, sel ast.SelectionSet, v int) graphql.Marshaler { - return graphql.MarshalIntID(v) + res := graphql.MarshalIntID(v) + if res == graphql.Null { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res } func (ec *executionContext) unmarshalNID2string(ctx context.Context, v interface{}) (string, error) { @@ -10856,7 +10895,13 @@ func (ec *executionContext) unmarshalNID2string(ctx context.Context, v interface } func (ec *executionContext) marshalNID2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler { - return graphql.MarshalID(v) + res := graphql.MarshalID(v) + if res == graphql.Null { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res } func (ec *executionContext) unmarshalNInt2int(ctx context.Context, v interface{}) (int, error) { @@ -10864,7 +10909,13 @@ func (ec *executionContext) unmarshalNInt2int(ctx context.Context, v interface{} } func (ec *executionContext) marshalNInt2int(ctx context.Context, sel ast.SelectionSet, v int) graphql.Marshaler { - return graphql.MarshalInt(v) + res := graphql.MarshalInt(v) + if res == graphql.Null { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res } func (ec *executionContext) marshalNMarkerStringsResultType2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐMarkerStringsResultType(ctx context.Context, sel ast.SelectionSet, v []*MarkerStringsResultType) graphql.Marshaler { @@ -10908,7 +10959,7 @@ func (ec *executionContext) marshalNPerformer2githubᚗcomᚋstashappᚋstashᚋ return ec._Performer(ctx, sel, &v) } -func (ec *executionContext) marshalNPerformer2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐPerformer(ctx context.Context, sel ast.SelectionSet, v []Performer) graphql.Marshaler { +func (ec *executionContext) marshalNPerformer2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐPerformer(ctx context.Context, sel ast.SelectionSet, v []*Performer) graphql.Marshaler { ret := make(graphql.Array, len(v)) var wg sync.WaitGroup isLen1 := len(v) == 1 @@ -10932,7 +10983,7 @@ func (ec *executionContext) marshalNPerformer2ᚕgithubᚗcomᚋstashappᚋstash if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNPerformer2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐPerformer(ctx, sel, v[i]) + ret[i] = ec.marshalNPerformer2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐPerformer(ctx, sel, v[i]) } if isLen1 { f(i) @@ -10945,6 +10996,16 @@ func (ec *executionContext) marshalNPerformer2ᚕgithubᚗcomᚋstashappᚋstash return ret } +func (ec *executionContext) marshalNPerformer2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐPerformer(ctx context.Context, sel ast.SelectionSet, v *Performer) graphql.Marshaler { + if v == nil { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + return ec._Performer(ctx, sel, v) +} + func (ec *executionContext) unmarshalNPerformerCreateInput2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐPerformerCreateInput(ctx context.Context, v interface{}) (PerformerCreateInput, error) { return ec.unmarshalInputPerformerCreateInput(ctx, v) } @@ -10957,7 +11018,7 @@ func (ec *executionContext) marshalNScene2githubᚗcomᚋstashappᚋstashᚋpkg return ec._Scene(ctx, sel, &v) } -func (ec *executionContext) marshalNScene2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐScene(ctx context.Context, sel ast.SelectionSet, v []Scene) graphql.Marshaler { +func (ec *executionContext) marshalNScene2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐScene(ctx context.Context, sel ast.SelectionSet, v []*Scene) graphql.Marshaler { ret := make(graphql.Array, len(v)) var wg sync.WaitGroup isLen1 := len(v) == 1 @@ -10981,7 +11042,7 @@ func (ec *executionContext) marshalNScene2ᚕgithubᚗcomᚋstashappᚋstashᚋp if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNScene2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐScene(ctx, sel, v[i]) + ret[i] = ec.marshalNScene2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐScene(ctx, sel, v[i]) } if isLen1 { f(i) @@ -11022,7 +11083,7 @@ func (ec *executionContext) marshalNSceneMarker2githubᚗcomᚋstashappᚋstash return ec._SceneMarker(ctx, sel, &v) } -func (ec *executionContext) marshalNSceneMarker2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarker(ctx context.Context, sel ast.SelectionSet, v []SceneMarker) graphql.Marshaler { +func (ec *executionContext) marshalNSceneMarker2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarker(ctx context.Context, sel ast.SelectionSet, v []*SceneMarker) graphql.Marshaler { ret := make(graphql.Array, len(v)) var wg sync.WaitGroup isLen1 := len(v) == 1 @@ -11046,7 +11107,7 @@ func (ec *executionContext) marshalNSceneMarker2ᚕgithubᚗcomᚋstashappᚋsta if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNSceneMarker2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarker(ctx, sel, v[i]) + ret[i] = ec.marshalNSceneMarker2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarker(ctx, sel, v[i]) } if isLen1 { f(i) @@ -11059,6 +11120,16 @@ func (ec *executionContext) marshalNSceneMarker2ᚕgithubᚗcomᚋstashappᚋsta return ret } +func (ec *executionContext) marshalNSceneMarker2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarker(ctx context.Context, sel ast.SelectionSet, v *SceneMarker) graphql.Marshaler { + if v == nil { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + return ec._SceneMarker(ctx, sel, v) +} + func (ec *executionContext) unmarshalNSceneMarkerCreateInput2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarkerCreateInput(ctx context.Context, v interface{}) (SceneMarkerCreateInput, error) { return ec.unmarshalInputSceneMarkerCreateInput(ctx, v) } @@ -11067,7 +11138,7 @@ func (ec *executionContext) marshalNSceneMarkerTag2githubᚗcomᚋstashappᚋsta return ec._SceneMarkerTag(ctx, sel, &v) } -func (ec *executionContext) marshalNSceneMarkerTag2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarkerTag(ctx context.Context, sel ast.SelectionSet, v []SceneMarkerTag) graphql.Marshaler { +func (ec *executionContext) marshalNSceneMarkerTag2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarkerTag(ctx context.Context, sel ast.SelectionSet, v []*SceneMarkerTag) graphql.Marshaler { ret := make(graphql.Array, len(v)) var wg sync.WaitGroup isLen1 := len(v) == 1 @@ -11091,7 +11162,7 @@ func (ec *executionContext) marshalNSceneMarkerTag2ᚕgithubᚗcomᚋstashappᚋ if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNSceneMarkerTag2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarkerTag(ctx, sel, v[i]) + ret[i] = ec.marshalNSceneMarkerTag2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarkerTag(ctx, sel, v[i]) } if isLen1 { f(i) @@ -11104,6 +11175,16 @@ func (ec *executionContext) marshalNSceneMarkerTag2ᚕgithubᚗcomᚋstashappᚋ return ret } +func (ec *executionContext) marshalNSceneMarkerTag2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarkerTag(ctx context.Context, sel ast.SelectionSet, v *SceneMarkerTag) graphql.Marshaler { + if v == nil { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + return ec._SceneMarkerTag(ctx, sel, v) +} + func (ec *executionContext) unmarshalNSceneMarkerUpdateInput2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐSceneMarkerUpdateInput(ctx context.Context, v interface{}) (SceneMarkerUpdateInput, error) { return ec.unmarshalInputSceneMarkerUpdateInput(ctx, v) } @@ -11145,7 +11226,13 @@ func (ec *executionContext) unmarshalNString2string(ctx context.Context, v inter } func (ec *executionContext) marshalNString2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler { - return graphql.MarshalString(v) + res := graphql.MarshalString(v) + if res == graphql.Null { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res } func (ec *executionContext) unmarshalNString2ᚕstring(ctx context.Context, v interface{}) ([]string, error) { @@ -11181,7 +11268,7 @@ func (ec *executionContext) marshalNStudio2githubᚗcomᚋstashappᚋstashᚋpkg return ec._Studio(ctx, sel, &v) } -func (ec *executionContext) marshalNStudio2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐStudio(ctx context.Context, sel ast.SelectionSet, v []Studio) graphql.Marshaler { +func (ec *executionContext) marshalNStudio2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐStudio(ctx context.Context, sel ast.SelectionSet, v []*Studio) graphql.Marshaler { ret := make(graphql.Array, len(v)) var wg sync.WaitGroup isLen1 := len(v) == 1 @@ -11205,7 +11292,7 @@ func (ec *executionContext) marshalNStudio2ᚕgithubᚗcomᚋstashappᚋstashᚋ if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNStudio2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐStudio(ctx, sel, v[i]) + ret[i] = ec.marshalNStudio2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐStudio(ctx, sel, v[i]) } if isLen1 { f(i) @@ -11218,6 +11305,16 @@ func (ec *executionContext) marshalNStudio2ᚕgithubᚗcomᚋstashappᚋstashᚋ return ret } +func (ec *executionContext) marshalNStudio2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐStudio(ctx context.Context, sel ast.SelectionSet, v *Studio) graphql.Marshaler { + if v == nil { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + return ec._Studio(ctx, sel, v) +} + func (ec *executionContext) unmarshalNStudioCreateInput2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐStudioCreateInput(ctx context.Context, v interface{}) (StudioCreateInput, error) { return ec.unmarshalInputStudioCreateInput(ctx, v) } @@ -11230,7 +11327,7 @@ func (ec *executionContext) marshalNTag2githubᚗcomᚋstashappᚋstashᚋpkgᚋ return ec._Tag(ctx, sel, &v) } -func (ec *executionContext) marshalNTag2ᚕgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐTag(ctx context.Context, sel ast.SelectionSet, v []Tag) graphql.Marshaler { +func (ec *executionContext) marshalNTag2ᚕᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐTag(ctx context.Context, sel ast.SelectionSet, v []*Tag) graphql.Marshaler { ret := make(graphql.Array, len(v)) var wg sync.WaitGroup isLen1 := len(v) == 1 @@ -11254,7 +11351,7 @@ func (ec *executionContext) marshalNTag2ᚕgithubᚗcomᚋstashappᚋstashᚋpkg if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNTag2githubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐTag(ctx, sel, v[i]) + ret[i] = ec.marshalNTag2ᚖgithubᚗcomᚋstashappᚋstashᚋpkgᚋmodelsᚐTag(ctx, sel, v[i]) } if isLen1 { f(i) @@ -11335,7 +11432,13 @@ func (ec *executionContext) unmarshalN__DirectiveLocation2string(ctx context.Con } func (ec *executionContext) marshalN__DirectiveLocation2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler { - return graphql.MarshalString(v) + res := graphql.MarshalString(v) + if res == graphql.Null { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res } func (ec *executionContext) unmarshalN__DirectiveLocation2ᚕstring(ctx context.Context, v interface{}) ([]string, error) { @@ -11500,7 +11603,13 @@ func (ec *executionContext) unmarshalN__TypeKind2string(ctx context.Context, v i } func (ec *executionContext) marshalN__TypeKind2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler { - return graphql.MarshalString(v) + res := graphql.MarshalString(v) + if res == graphql.Null { + if !ec.HasError(graphql.GetResolverContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res } func (ec *executionContext) unmarshalOBoolean2bool(ctx context.Context, v interface{}) (bool, error) { diff --git a/pkg/models/generated_models.go b/pkg/models/generated_models.go index 08a396dc8..4c1a780a8 100644 --- a/pkg/models/generated_models.go +++ b/pkg/models/generated_models.go @@ -28,7 +28,7 @@ type ConfigGeneralResult struct { // All configuration settings type ConfigResult struct { - General ConfigGeneralResult `json:"general"` + General *ConfigGeneralResult `json:"general"` } type FindFilterType struct { @@ -40,28 +40,28 @@ type FindFilterType struct { } type FindGalleriesResultType struct { - Count int `json:"count"` - Galleries []Gallery `json:"galleries"` + Count int `json:"count"` + Galleries []*Gallery `json:"galleries"` } type FindPerformersResultType struct { - Count int `json:"count"` - Performers []Performer `json:"performers"` + Count int `json:"count"` + Performers []*Performer `json:"performers"` } type FindSceneMarkersResultType struct { - Count int `json:"count"` - SceneMarkers []SceneMarker `json:"scene_markers"` + Count int `json:"count"` + SceneMarkers []*SceneMarker `json:"scene_markers"` } type FindScenesResultType struct { - Count int `json:"count"` - Scenes []Scene `json:"scenes"` + Count int `json:"count"` + Scenes []*Scene `json:"scenes"` } type FindStudiosResultType struct { - Count int `json:"count"` - Studios []Studio `json:"studios"` + Count int `json:"count"` + Studios []*Studio `json:"studios"` } type GalleryFilesType struct { @@ -184,8 +184,8 @@ type SceneMarkerFilterType struct { } type SceneMarkerTag struct { - Tag Tag `json:"tag"` - SceneMarkers []SceneMarker `json:"scene_markers"` + Tag *Tag `json:"tag"` + SceneMarkers []*SceneMarker `json:"scene_markers"` } type SceneMarkerUpdateInput struct { diff --git a/pkg/models/model_gallery.go b/pkg/models/model_gallery.go index f410c2079..5573c7917 100644 --- a/pkg/models/model_gallery.go +++ b/pkg/models/model_gallery.go @@ -25,8 +25,8 @@ type Gallery struct { UpdatedAt SQLiteTimestamp `db:"updated_at" json:"updated_at"` } -func (g *Gallery) GetFiles(baseURL string) []GalleryFilesType { - var galleryFiles []GalleryFilesType +func (g *Gallery) GetFiles(baseURL string) []*GalleryFilesType { + var galleryFiles []*GalleryFilesType filteredFiles, readCloser, err := g.listZipContents() if err != nil { return nil @@ -41,7 +41,7 @@ func (g *Gallery) GetFiles(baseURL string) []GalleryFilesType { Name: &file.Name, Path: &galleryURL, } - galleryFiles = append(galleryFiles, galleryFile) + galleryFiles = append(galleryFiles, &galleryFile) } return galleryFiles diff --git a/pkg/models/querybuilder_gallery.go b/pkg/models/querybuilder_gallery.go index 4af4c7967..95c1f54a5 100644 --- a/pkg/models/querybuilder_gallery.go +++ b/pkg/models/querybuilder_gallery.go @@ -74,7 +74,7 @@ func (qb *GalleryQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) (*Gallery return qb.queryGallery(query, args, tx) } -func (qb *GalleryQueryBuilder) ValidGalleriesForScenePath(scenePath string) ([]Gallery, error) { +func (qb *GalleryQueryBuilder) ValidGalleriesForScenePath(scenePath string) ([]*Gallery, error) { sceneDirPath := filepath.Dir(scenePath) query := "SELECT galleries.* FROM galleries WHERE galleries.scene_id IS NULL AND galleries.path LIKE '" + sceneDirPath + "%' ORDER BY path ASC" return qb.queryGalleries(query, nil, nil) @@ -84,18 +84,18 @@ func (qb *GalleryQueryBuilder) Count() (int, error) { return runCountQuery(buildCountQuery("SELECT galleries.id FROM galleries"), nil) } -func (qb *GalleryQueryBuilder) All() ([]Gallery, error) { +func (qb *GalleryQueryBuilder) All() ([]*Gallery, error) { return qb.queryGalleries(selectAll("galleries")+qb.getGallerySort(nil), nil, nil) } -func (qb *GalleryQueryBuilder) Query(findFilter *FindFilterType) ([]Gallery, int) { +func (qb *GalleryQueryBuilder) Query(findFilter *FindFilterType) ([]*Gallery, int) { if findFilter == nil { findFilter = &FindFilterType{} } - whereClauses := []string{} - havingClauses := []string{} - args := []interface{}{} + var whereClauses []string + var havingClauses []string + var args []interface{} body := selectDistinctIDs("galleries") if q := findFilter.Q; q != nil && *q != "" { @@ -106,10 +106,10 @@ func (qb *GalleryQueryBuilder) Query(findFilter *FindFilterType) ([]Gallery, int sortAndPagination := qb.getGallerySort(findFilter) + getPagination(findFilter) idsResult, countResult := executeFindQuery("galleries", body, args, sortAndPagination, whereClauses, havingClauses) - var galleries []Gallery + var galleries []*Gallery for _, id := range idsResult { gallery, _ := qb.Find(id) - galleries = append(galleries, *gallery) + galleries = append(galleries, gallery) } return galleries, countResult @@ -133,10 +133,10 @@ func (qb *GalleryQueryBuilder) queryGallery(query string, args []interface{}, tx if err != nil || len(results) < 1 { return nil, err } - return &results[0], nil + return results[0], nil } -func (qb *GalleryQueryBuilder) queryGalleries(query string, args []interface{}, tx *sqlx.Tx) ([]Gallery, error) { +func (qb *GalleryQueryBuilder) queryGalleries(query string, args []interface{}, tx *sqlx.Tx) ([]*Gallery, error) { var rows *sqlx.Rows var err error if tx != nil { @@ -150,13 +150,13 @@ func (qb *GalleryQueryBuilder) queryGalleries(query string, args []interface{}, } defer rows.Close() - galleries := make([]Gallery, 0) - gallery := Gallery{} + galleries := make([]*Gallery, 0) for rows.Next() { + gallery := Gallery{} if err := rows.StructScan(&gallery); err != nil { return nil, err } - galleries = append(galleries, gallery) + galleries = append(galleries, &gallery) } if err := rows.Err(); err != nil { diff --git a/pkg/models/querybuilder_performer.go b/pkg/models/querybuilder_performer.go index ef3efadcc..ebbe8604b 100644 --- a/pkg/models/querybuilder_performer.go +++ b/pkg/models/querybuilder_performer.go @@ -61,10 +61,10 @@ func (qb *PerformerQueryBuilder) Find(id int) (*Performer, error) { if err != nil || len(results) < 1 { return nil, err } - return &results[0], nil + return results[0], nil } -func (qb *PerformerQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]Performer, error) { +func (qb *PerformerQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]*Performer, error) { query := ` SELECT performers.* FROM performers LEFT JOIN performers_scenes as scenes_join on scenes_join.performer_id = performers.id @@ -76,7 +76,7 @@ func (qb *PerformerQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]Perf return qb.queryPerformers(query, args, tx) } -func (qb *PerformerQueryBuilder) FindByNames(names []string, tx *sqlx.Tx) ([]Performer, error) { +func (qb *PerformerQueryBuilder) FindByNames(names []string, tx *sqlx.Tx) ([]*Performer, error) { query := "SELECT * FROM performers WHERE name IN " + getInBinding(len(names)) var args []interface{} for _, name := range names { @@ -89,11 +89,11 @@ func (qb *PerformerQueryBuilder) Count() (int, error) { return runCountQuery(buildCountQuery("SELECT performers.id FROM performers"), nil) } -func (qb *PerformerQueryBuilder) All() ([]Performer, error) { +func (qb *PerformerQueryBuilder) All() ([]*Performer, error) { return qb.queryPerformers(selectAll("performers")+qb.getPerformerSort(nil), nil, nil) } -func (qb *PerformerQueryBuilder) Query(performerFilter *PerformerFilterType, findFilter *FindFilterType) ([]Performer, int) { +func (qb *PerformerQueryBuilder) Query(performerFilter *PerformerFilterType, findFilter *FindFilterType) ([]*Performer, int) { if performerFilter == nil { performerFilter = &PerformerFilterType{} } @@ -101,9 +101,9 @@ func (qb *PerformerQueryBuilder) Query(performerFilter *PerformerFilterType, fin findFilter = &FindFilterType{} } - whereClauses := []string{} - havingClauses := []string{} - args := []interface{}{} + var whereClauses []string + var havingClauses []string + var args []interface{} body := selectDistinctIDs("performers") body += ` left join performers_scenes as scenes_join on scenes_join.performer_id = performers.id @@ -126,10 +126,10 @@ func (qb *PerformerQueryBuilder) Query(performerFilter *PerformerFilterType, fin sortAndPagination := qb.getPerformerSort(findFilter) + getPagination(findFilter) idsResult, countResult := executeFindQuery("performers", body, args, sortAndPagination, whereClauses, havingClauses) - var performers []Performer + var performers []*Performer for _, id := range idsResult { performer, _ := qb.Find(id) - performers = append(performers, *performer) + performers = append(performers, performer) } return performers, countResult @@ -148,7 +148,7 @@ func (qb *PerformerQueryBuilder) getPerformerSort(findFilter *FindFilterType) st return getSort(sort, direction, "performers") } -func (qb *PerformerQueryBuilder) queryPerformers(query string, args []interface{}, tx *sqlx.Tx) ([]Performer, error) { +func (qb *PerformerQueryBuilder) queryPerformers(query string, args []interface{}, tx *sqlx.Tx) ([]*Performer, error) { var rows *sqlx.Rows var err error if tx != nil { @@ -162,13 +162,13 @@ func (qb *PerformerQueryBuilder) queryPerformers(query string, args []interface{ } defer rows.Close() - performers := make([]Performer, 0) - performer := Performer{} + performers := make([]*Performer, 0) for rows.Next() { + performer := Performer{} if err := rows.StructScan(&performer); err != nil { return nil, err } - performers = append(performers, performer) + performers = append(performers, &performer) } if err := rows.Err(); err != nil { diff --git a/pkg/models/querybuilder_scene.go b/pkg/models/querybuilder_scene.go index f58075f45..ee6090e95 100644 --- a/pkg/models/querybuilder_scene.go +++ b/pkg/models/querybuilder_scene.go @@ -94,7 +94,7 @@ func (qb *SceneQueryBuilder) FindByPath(path string) (*Scene, error) { return qb.queryScene(query, args, nil) } -func (qb *SceneQueryBuilder) FindByPerformerID(performerID int) ([]Scene, error) { +func (qb *SceneQueryBuilder) FindByPerformerID(performerID int) ([]*Scene, error) { args := []interface{}{performerID} return qb.queryScenes(scenesForPerformerQuery, args, nil) } @@ -104,7 +104,7 @@ func (qb *SceneQueryBuilder) CountByPerformerID(performerID int) (int, error) { return runCountQuery(buildCountQuery(scenesForPerformerQuery), args) } -func (qb *SceneQueryBuilder) FindByStudioID(studioID int) ([]Scene, error) { +func (qb *SceneQueryBuilder) FindByStudioID(studioID int) ([]*Scene, error) { args := []interface{}{studioID} return qb.queryScenes(scenesForStudioQuery, args, nil) } @@ -123,7 +123,7 @@ func (qb *SceneQueryBuilder) CountByTagID(tagID int) (int, error) { return runCountQuery(buildCountQuery(scenesForTagQuery), args) } -func (qb *SceneQueryBuilder) Wall(q *string) ([]Scene, error) { +func (qb *SceneQueryBuilder) Wall(q *string) ([]*Scene, error) { s := "" if q != nil { s = *q @@ -132,11 +132,11 @@ func (qb *SceneQueryBuilder) Wall(q *string) ([]Scene, error) { return qb.queryScenes(query, nil, nil) } -func (qb *SceneQueryBuilder) All() ([]Scene, error) { +func (qb *SceneQueryBuilder) All() ([]*Scene, error) { return qb.queryScenes(selectAll("scenes")+qb.getSceneSort(nil), nil, nil) } -func (qb *SceneQueryBuilder) Query(sceneFilter *SceneFilterType, findFilter *FindFilterType) ([]Scene, int) { +func (qb *SceneQueryBuilder) Query(sceneFilter *SceneFilterType, findFilter *FindFilterType) ([]*Scene, int) { if sceneFilter == nil { sceneFilter = &SceneFilterType{} } @@ -144,9 +144,9 @@ func (qb *SceneQueryBuilder) Query(sceneFilter *SceneFilterType, findFilter *Fin findFilter = &FindFilterType{} } - whereClauses := []string{} - havingClauses := []string{} - args := []interface{}{} + var whereClauses []string + var havingClauses []string + var args []interface{} body := selectDistinctIDs("scenes") body = body + ` left join scene_markers on scene_markers.scene_id = scenes.id @@ -233,10 +233,10 @@ func (qb *SceneQueryBuilder) Query(sceneFilter *SceneFilterType, findFilter *Fin sortAndPagination := qb.getSceneSort(findFilter) + getPagination(findFilter) idsResult, countResult := executeFindQuery("scenes", body, args, sortAndPagination, whereClauses, havingClauses) - var scenes []Scene + var scenes []*Scene for _, id := range idsResult { scene, _ := qb.Find(id) - scenes = append(scenes, *scene) + scenes = append(scenes, scene) } return scenes, countResult @@ -256,10 +256,10 @@ func (qb *SceneQueryBuilder) queryScene(query string, args []interface{}, tx *sq if err != nil || len(results) < 1 { return nil, err } - return &results[0], nil + return results[0], nil } -func (qb *SceneQueryBuilder) queryScenes(query string, args []interface{}, tx *sqlx.Tx) ([]Scene, error) { +func (qb *SceneQueryBuilder) queryScenes(query string, args []interface{}, tx *sqlx.Tx) ([]*Scene, error) { var rows *sqlx.Rows var err error if tx != nil { @@ -273,13 +273,13 @@ func (qb *SceneQueryBuilder) queryScenes(query string, args []interface{}, tx *s } defer rows.Close() - scenes := make([]Scene, 0) - scene := Scene{} + scenes := make([]*Scene, 0) for rows.Next() { + scene := Scene{} if err := rows.StructScan(&scene); err != nil { return nil, err } - scenes = append(scenes, scene) + scenes = append(scenes, &scene) } if err := rows.Err(); err != nil { diff --git a/pkg/models/querybuilder_scene_marker.go b/pkg/models/querybuilder_scene_marker.go index 796915f43..a3530a704 100644 --- a/pkg/models/querybuilder_scene_marker.go +++ b/pkg/models/querybuilder_scene_marker.go @@ -71,10 +71,10 @@ func (qb *SceneMarkerQueryBuilder) Find(id int) (*SceneMarker, error) { if err != nil || len(results) < 1 { return nil, err } - return &results[0], nil + return results[0], nil } -func (qb *SceneMarkerQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]SceneMarker, error) { +func (qb *SceneMarkerQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]*SceneMarker, error) { query := ` SELECT scene_markers.* FROM scene_markers JOIN scenes ON scenes.id = scene_markers.scene_id @@ -102,11 +102,11 @@ func (qb *SceneMarkerQueryBuilder) GetMarkerStrings(q *string, sort *string) ([] } else { query = query + " ORDER BY title ASC" } - args := []interface{}{} + var args []interface{} return qb.queryMarkerStringsResultType(query, args) } -func (qb *SceneMarkerQueryBuilder) Wall(q *string) ([]SceneMarker, error) { +func (qb *SceneMarkerQueryBuilder) Wall(q *string) ([]*SceneMarker, error) { s := "" if q != nil { s = *q @@ -115,7 +115,7 @@ func (qb *SceneMarkerQueryBuilder) Wall(q *string) ([]SceneMarker, error) { return qb.querySceneMarkers(query, nil, nil) } -func (qb *SceneMarkerQueryBuilder) Query(sceneMarkerFilter *SceneMarkerFilterType, findFilter *FindFilterType) ([]SceneMarker, int) { +func (qb *SceneMarkerQueryBuilder) Query(sceneMarkerFilter *SceneMarkerFilterType, findFilter *FindFilterType) ([]*SceneMarker, int) { if sceneMarkerFilter == nil { sceneMarkerFilter = &SceneMarkerFilterType{} } @@ -123,9 +123,9 @@ func (qb *SceneMarkerQueryBuilder) Query(sceneMarkerFilter *SceneMarkerFilterTyp findFilter = &FindFilterType{} } - whereClauses := []string{} - havingClauses := []string{} - args := []interface{}{} + var whereClauses []string + var havingClauses []string + var args []interface{} body := selectDistinctIDs("scene_markers") body = body + ` left join tags as primary_tag on primary_tag.id = scene_markers.primary_tag_id @@ -187,10 +187,10 @@ func (qb *SceneMarkerQueryBuilder) Query(sceneMarkerFilter *SceneMarkerFilterTyp sortAndPagination := qb.getSceneMarkerSort(findFilter) + getPagination(findFilter) idsResult, countResult := executeFindQuery("scene_markers", body, args, sortAndPagination, whereClauses, havingClauses) - var sceneMarkers []SceneMarker + var sceneMarkers []*SceneMarker for _, id := range idsResult { sceneMarker, _ := qb.Find(id) - sceneMarkers = append(sceneMarkers, *sceneMarker) + sceneMarkers = append(sceneMarkers, sceneMarker) } return sceneMarkers, countResult @@ -207,7 +207,7 @@ func (qb *SceneMarkerQueryBuilder) getSceneMarkerSort(findFilter *FindFilterType return getSort(sort, direction, tableName) } -func (qb *SceneMarkerQueryBuilder) querySceneMarkers(query string, args []interface{}, tx *sqlx.Tx) ([]SceneMarker, error) { +func (qb *SceneMarkerQueryBuilder) querySceneMarkers(query string, args []interface{}, tx *sqlx.Tx) ([]*SceneMarker, error) { var rows *sqlx.Rows var err error if tx != nil { @@ -221,13 +221,13 @@ func (qb *SceneMarkerQueryBuilder) querySceneMarkers(query string, args []interf } defer rows.Close() - sceneMarkers := make([]SceneMarker, 0) - sceneMarker := SceneMarker{} + sceneMarkers := make([]*SceneMarker, 0) for rows.Next() { + sceneMarker := SceneMarker{} if err := rows.StructScan(&sceneMarker); err != nil { return nil, err } - sceneMarkers = append(sceneMarkers, sceneMarker) + sceneMarkers = append(sceneMarkers, &sceneMarker) } if err := rows.Err(); err != nil { diff --git a/pkg/models/querybuilder_scraped_item.go b/pkg/models/querybuilder_scraped_item.go index 525f69f4b..d78dfd918 100644 --- a/pkg/models/querybuilder_scraped_item.go +++ b/pkg/models/querybuilder_scraped_item.go @@ -57,7 +57,7 @@ func (qb *ScrapedItemQueryBuilder) Find(id int) (*ScrapedItem, error) { return qb.queryScrapedItem(query, args, nil) } -func (qb *ScrapedItemQueryBuilder) All() ([]ScrapedItem, error) { +func (qb *ScrapedItemQueryBuilder) All() ([]*ScrapedItem, error) { return qb.queryScrapedItems(selectAll("scraped_items")+qb.getScrapedItemsSort(nil), nil, nil) } @@ -79,10 +79,10 @@ func (qb *ScrapedItemQueryBuilder) queryScrapedItem(query string, args []interfa if err != nil || len(results) < 1 { return nil, err } - return &results[0], nil + return results[0], nil } -func (qb *ScrapedItemQueryBuilder) queryScrapedItems(query string, args []interface{}, tx *sqlx.Tx) ([]ScrapedItem, error) { +func (qb *ScrapedItemQueryBuilder) queryScrapedItems(query string, args []interface{}, tx *sqlx.Tx) ([]*ScrapedItem, error) { var rows *sqlx.Rows var err error if tx != nil { @@ -96,13 +96,13 @@ func (qb *ScrapedItemQueryBuilder) queryScrapedItems(query string, args []interf } defer rows.Close() - scrapedItems := make([]ScrapedItem, 0) - scrapedItem := ScrapedItem{} + scrapedItems := make([]*ScrapedItem, 0) for rows.Next() { + scrapedItem := ScrapedItem{} if err := rows.StructScan(&scrapedItem); err != nil { return nil, err } - scrapedItems = append(scrapedItems, scrapedItem) + scrapedItems = append(scrapedItems, &scrapedItem) } if err := rows.Err(); err != nil { diff --git a/pkg/models/querybuilder_studio.go b/pkg/models/querybuilder_studio.go index 5345cfb1b..4c3a430dd 100644 --- a/pkg/models/querybuilder_studio.go +++ b/pkg/models/querybuilder_studio.go @@ -72,18 +72,18 @@ func (qb *StudioQueryBuilder) Count() (int, error) { return runCountQuery(buildCountQuery("SELECT studios.id FROM studios"), nil) } -func (qb *StudioQueryBuilder) All() ([]Studio, error) { +func (qb *StudioQueryBuilder) All() ([]*Studio, error) { return qb.queryStudios(selectAll("studios")+qb.getStudioSort(nil), nil, nil) } -func (qb *StudioQueryBuilder) Query(findFilter *FindFilterType) ([]Studio, int) { +func (qb *StudioQueryBuilder) Query(findFilter *FindFilterType) ([]*Studio, int) { if findFilter == nil { findFilter = &FindFilterType{} } - whereClauses := []string{} - havingClauses := []string{} - args := []interface{}{} + var whereClauses []string + var havingClauses []string + var args []interface{} body := selectDistinctIDs("studios") if q := findFilter.Q; q != nil && *q != "" { @@ -94,10 +94,10 @@ func (qb *StudioQueryBuilder) Query(findFilter *FindFilterType) ([]Studio, int) sortAndPagination := qb.getStudioSort(findFilter) + getPagination(findFilter) idsResult, countResult := executeFindQuery("studios", body, args, sortAndPagination, whereClauses, havingClauses) - var studios []Studio + var studios []*Studio for _, id := range idsResult { studio, _ := qb.Find(id, nil) - studios = append(studios, *studio) + studios = append(studios, studio) } return studios, countResult @@ -121,10 +121,10 @@ func (qb *StudioQueryBuilder) queryStudio(query string, args []interface{}, tx * if err != nil || len(results) < 1 { return nil, err } - return &results[0], nil + return results[0], nil } -func (qb *StudioQueryBuilder) queryStudios(query string, args []interface{}, tx *sqlx.Tx) ([]Studio, error) { +func (qb *StudioQueryBuilder) queryStudios(query string, args []interface{}, tx *sqlx.Tx) ([]*Studio, error) { var rows *sqlx.Rows var err error if tx != nil { @@ -138,13 +138,13 @@ func (qb *StudioQueryBuilder) queryStudios(query string, args []interface{}, tx } defer rows.Close() - studios := make([]Studio, 0) - studio := Studio{} + studios := make([]*Studio, 0) for rows.Next() { + studio := Studio{} if err := rows.StructScan(&studio); err != nil { return nil, err } - studios = append(studios, studio) + studios = append(studios, &studio) } if err := rows.Err(); err != nil { diff --git a/pkg/models/querybuilder_tag.go b/pkg/models/querybuilder_tag.go index ef3b0f3ff..e6036b751 100644 --- a/pkg/models/querybuilder_tag.go +++ b/pkg/models/querybuilder_tag.go @@ -61,7 +61,7 @@ func (qb *TagQueryBuilder) Find(id int, tx *sqlx.Tx) (*Tag, error) { return qb.queryTag(query, args, tx) } -func (qb *TagQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]Tag, error) { +func (qb *TagQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]*Tag, error) { query := ` SELECT tags.* FROM tags LEFT JOIN scenes_tags as scenes_join on scenes_join.tag_id = tags.id @@ -74,7 +74,7 @@ func (qb *TagQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]Tag, error return qb.queryTags(query, args, tx) } -func (qb *TagQueryBuilder) FindBySceneMarkerID(sceneMarkerID int, tx *sqlx.Tx) ([]Tag, error) { +func (qb *TagQueryBuilder) FindBySceneMarkerID(sceneMarkerID int, tx *sqlx.Tx) ([]*Tag, error) { query := ` SELECT tags.* FROM tags LEFT JOIN scene_markers_tags as scene_markers_join on scene_markers_join.tag_id = tags.id @@ -93,7 +93,7 @@ func (qb *TagQueryBuilder) FindByName(name string, tx *sqlx.Tx) (*Tag, error) { return qb.queryTag(query, args, tx) } -func (qb *TagQueryBuilder) FindByNames(names []string, tx *sqlx.Tx) ([]Tag, error) { +func (qb *TagQueryBuilder) FindByNames(names []string, tx *sqlx.Tx) ([]*Tag, error) { query := "SELECT * FROM tags WHERE name IN " + getInBinding(len(names)) var args []interface{} for _, name := range names { @@ -106,7 +106,7 @@ func (qb *TagQueryBuilder) Count() (int, error) { return runCountQuery(buildCountQuery("SELECT tags.id FROM tags"), nil) } -func (qb *TagQueryBuilder) All() ([]Tag, error) { +func (qb *TagQueryBuilder) All() ([]*Tag, error) { return qb.queryTags(selectAll("tags")+qb.getTagSort(nil), nil, nil) } @@ -128,10 +128,10 @@ func (qb *TagQueryBuilder) queryTag(query string, args []interface{}, tx *sqlx.T if err != nil || len(results) < 1 { return nil, err } - return &results[0], nil + return results[0], nil } -func (qb *TagQueryBuilder) queryTags(query string, args []interface{}, tx *sqlx.Tx) ([]Tag, error) { +func (qb *TagQueryBuilder) queryTags(query string, args []interface{}, tx *sqlx.Tx) ([]*Tag, error) { var rows *sqlx.Rows var err error if tx != nil { @@ -145,13 +145,13 @@ func (qb *TagQueryBuilder) queryTags(query string, args []interface{}, tx *sqlx. } defer rows.Close() - tags := make([]Tag, 0) - tag := Tag{} + tags := make([]*Tag, 0) for rows.Next() { + tag := Tag{} if err := rows.StructScan(&tag); err != nil { return nil, err } - tags = append(tags, tag) + tags = append(tags, &tag) } if err := rows.Err(); err != nil { diff --git a/ui/v2/codegen.yml b/ui/v2/codegen.yml index 489dbf214..aa2da743f 100644 --- a/ui/v2/codegen.yml +++ b/ui/v2/codegen.yml @@ -11,6 +11,7 @@ generates: withHooks: true plugins: - add: "/* tslint:disable */" + - add: "/* eslint-disable */" - time - "typescript-common" - "typescript-client" diff --git a/ui/v2/package.json b/ui/v2/package.json index 0f22cb433..b2309d2e1 100644 --- a/ui/v2/package.json +++ b/ui/v2/package.json @@ -3,34 +3,34 @@ "version": "0.1.0", "private": true, "dependencies": { - "@blueprintjs/core": "3.15.0", + "@blueprintjs/core": "3.15.1", "@blueprintjs/select": "3.8.0", - "@types/jest": "24.0.11", - "@types/lodash": "4.14.123", + "@types/jest": "24.0.13", + "@types/lodash": "4.14.132", "@types/node": "11.13.0", "@types/query-string": "6.3.0", - "@types/react": "16.8.10", - "@types/react-dom": "16.8.3", - "@types/react-router-dom": "4.3.1", - "apollo-boost": "0.3.1", + "@types/react": "16.8.18", + "@types/react-dom": "16.8.4", + "@types/react-router-dom": "4.3.3", + "apollo-boost": "0.4.0", "axios": "0.18.0", - "bulma": "0.7.4", - "formik": "1.5.1", - "graphql": "14.2.1", + "bulma": "0.7.5", + "formik": "1.5.7", + "graphql": "14.3.1", "localforage": "1.7.3", "lodash": "4.17.11", - "node-sass": "4.11.0", - "query-string": "6.4.2", + "node-sass": "4.12.0", + "query-string": "6.5.0", "react": "16.8.6", - "react-apollo": "2.5.3", - "react-apollo-hooks": "0.4.4", + "react-apollo": "2.5.6", + "react-apollo-hooks": "0.4.5", "react-dom": "16.8.6", "react-images": "0.5.19", "react-jw-player": "1.19.0", - "react-photo-gallery": "6.3.2", + "react-photo-gallery": "7.0.2", "react-router-dom": "5.0.0", - "react-scripts": "2.1.8", - "react-use": "7.3.1" + "react-scripts": "3.0.1", + "react-use": "9.1.2" }, "scripts": { "start": "react-scripts start", @@ -51,14 +51,14 @@ "not op_mini all" ], "devDependencies": { - "graphql-code-generator": "0.18.0", - "graphql-codegen-add": "0.18.0", - "graphql-codegen-typescript-client": "0.18.0", - "graphql-codegen-typescript-common": "0.18.0", - "graphql-codegen-typescript-react-apollo": "0.18.0", - "graphql-codegen-time": "0.18.0", - "tslint": "5.15.0", + "graphql-code-generator": "0.18.2", + "graphql-codegen-add": "0.18.2", + "graphql-codegen-typescript-client": "0.18.2", + "graphql-codegen-typescript-common": "0.18.2", + "graphql-codegen-typescript-react-apollo": "0.18.2", + "graphql-codegen-time": "0.18.2", + "tslint": "5.16.0", "tslint-react": "4.0.0", - "typescript": "3.4.1" + "typescript": "3.4.5" } } \ No newline at end of file diff --git a/ui/v2/src/components/select/FilterMultiSelect.tsx b/ui/v2/src/components/select/FilterMultiSelect.tsx index 42b23d12d..c876d3bef 100644 --- a/ui/v2/src/components/select/FilterMultiSelect.tsx +++ b/ui/v2/src/components/select/FilterMultiSelect.tsx @@ -49,8 +49,10 @@ export const FilterMultiSelect: React.FunctionComponent = (props: IProps } } + /* eslint-disable react-hooks/rules-of-hooks */ const [selectedItems, setSelectedItems] = React.useState([]); const [isInitialized, setIsInitialized] = React.useState(false); + /* eslint-enable */ if (!!props.initialIds && selectedItems.length === 0 && !isInitialized) { const initialItems = items.filter((item) => props.initialIds!.includes(item.id)); diff --git a/ui/v2/src/components/select/FilterSelect.tsx b/ui/v2/src/components/select/FilterSelect.tsx index 8fcea85eb..8e5ebd992 100644 --- a/ui/v2/src/components/select/FilterSelect.tsx +++ b/ui/v2/src/components/select/FilterSelect.tsx @@ -49,8 +49,10 @@ export const FilterSelect: React.FunctionComponent = (props: IProps) => } } + /* eslint-disable react-hooks/rules-of-hooks */ const [selectedItem, setSelectedItem] = React.useState(null); const [isInitialized, setIsInitialized] = React.useState(false); + /* eslint-enable */ if (!!props.initialId && !selectedItem && !isInitialized) { const initialItem = items.find((item) => props.initialId === item.id); diff --git a/ui/v2/src/core/generated-graphql.tsx b/ui/v2/src/core/generated-graphql.tsx index b18b26b06..e7623b1d2 100644 --- a/ui/v2/src/core/generated-graphql.tsx +++ b/ui/v2/src/core/generated-graphql.tsx @@ -1,5 +1,6 @@ /* tslint:disable */ -// Generated in 2019-03-24T13:29:34-07:00 +/* eslint-disable */ +// Generated in 2019-05-27T11:23:10-07:00 export type Maybe = T | undefined; export interface SceneFilterType { diff --git a/ui/v2/yarn.lock b/ui/v2/yarn.lock index cb70ad146..e78bac96c 100755 --- a/ui/v2/yarn.lock +++ b/ui/v2/yarn.lock @@ -2,14 +2,54 @@ # yarn lockfile v1 -"@babel/code-frame@7.0.0", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": +"@babel/code-frame@7.0.0", "@babel/code-frame@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@7.2.2", "@babel/core@^7.1.6": +"@babel/core@7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.3.tgz#198d6d3af4567be3989550d97e068de94503074f" + integrity sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.0" + "@babel/helpers" "^7.4.3" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.11" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" + integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.4" + "@babel/helpers" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.5" + "@babel/types" "^7.4.4" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.11" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.6": version "7.2.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== @@ -40,6 +80,17 @@ source-map "^0.5.0" trim-right "^1.0.1" +"@babel/generator@^7.4.0", "@babel/generator@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" + integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== + dependencies: + "@babel/types" "^7.4.4" + jsesc "^2.5.1" + lodash "^4.17.11" + source-map "^0.5.0" + trim-right "^1.0.1" + "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" @@ -72,16 +123,26 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helper-create-class-features-plugin@^7.3.0": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.2.tgz#ba1685603eb1c9f2f51c9106d5180135c163fe73" - integrity sha512-tdW8+V8ceh2US4GsYdNVNoohq5uVwOf9k6krjwW4E1lINcHgttnWcNqgdoessn12dAy8QkbezlbQh2nXISNY+A== +"@babel/helper-call-delegate@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" + integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helper-create-class-features-plugin@^7.4.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz#fc3d690af6554cc9efc607364a82d48f58736dba" + integrity sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA== dependencies: "@babel/helper-function-name" "^7.1.0" "@babel/helper-member-expression-to-functions" "^7.0.0" "@babel/helper-optimise-call-expression" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.2.3" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" "@babel/helper-define-map@^7.1.0": version "7.1.0" @@ -92,6 +153,15 @@ "@babel/types" "^7.0.0" lodash "^4.17.10" +"@babel/helper-define-map@^7.4.0", "@babel/helper-define-map@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" + integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.4.4" + lodash "^4.17.11" + "@babel/helper-explode-assignable-expression@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" @@ -123,6 +193,13 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-hoist-variables@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" + integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== + dependencies: + "@babel/types" "^7.4.4" + "@babel/helper-member-expression-to-functions@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" @@ -149,6 +226,18 @@ "@babel/types" "^7.2.2" lodash "^4.17.10" +"@babel/helper-module-transforms@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" + integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/template" "^7.4.4" + "@babel/types" "^7.4.4" + lodash "^4.17.11" + "@babel/helper-optimise-call-expression@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" @@ -168,6 +257,13 @@ dependencies: lodash "^4.17.10" +"@babel/helper-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" + integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q== + dependencies: + lodash "^4.17.11" + "@babel/helper-remap-async-to-generator@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" @@ -179,7 +275,7 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.2.3": +"@babel/helper-replace-supers@^7.1.0": version "7.2.3" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz#19970020cf22677d62b3a689561dbd9644d8c5e5" integrity sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA== @@ -189,6 +285,16 @@ "@babel/traverse" "^7.2.3" "@babel/types" "^7.0.0" +"@babel/helper-replace-supers@^7.4.0", "@babel/helper-replace-supers@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" + integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + "@babel/helper-simple-access@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" @@ -204,6 +310,13 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-split-export-declaration@^7.4.0", "@babel/helper-split-export-declaration@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" + integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== + dependencies: + "@babel/types" "^7.4.4" + "@babel/helper-wrap-function@^7.1.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" @@ -223,6 +336,15 @@ "@babel/traverse" "^7.1.5" "@babel/types" "^7.3.0" +"@babel/helpers@^7.4.3", "@babel/helpers@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" + integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A== + dependencies: + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + "@babel/highlight@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" @@ -237,6 +359,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.2.tgz#95cdeddfc3992a6ca2a1315191c1679ca32c55cd" integrity sha512-QzNUC2RO1gadg+fs21fi0Uu0OuGNzRKEmgCxoLNzbCdoprLwjfmZwzUrpUNfJPaVRwBpDY47A17yYEGWyRelnQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" + integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== + "@babel/parser@^7.2.0": version "7.3.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.3.tgz#092d450db02bdb6ccb1ca8ffd47d8774a91aef87" @@ -251,20 +378,20 @@ "@babel/helper-remap-async-to-generator" "^7.1.0" "@babel/plugin-syntax-async-generators" "^7.2.0" -"@babel/plugin-proposal-class-properties@7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz#272636bc0fa19a0bc46e601ec78136a173ea36cd" - integrity sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg== +"@babel/plugin-proposal-class-properties@7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.0.tgz#d70db61a2f1fd79de927eea91f6411c964e084b8" + integrity sha512-t2ECPNOXsIeK1JxJNKmgbzQtoG27KIlVE61vTqX0DKR9E9sZlVVxWUtEW9D5FlZ8b8j7SBNCHY47GgPKCKlpPg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.3.0" + "@babel/helper-create-class-features-plugin" "^7.4.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-proposal-decorators@7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.3.0.tgz#637ba075fa780b1f75d08186e8fb4357d03a72a7" - integrity sha512-3W/oCUmsO43FmZIqermmq6TKaRSYhmh/vybPfVFwQWdSb8xwki38uAIvknCRzuyHRuYfCYmJzL9or1v0AffPjg== +"@babel/plugin-proposal-decorators@7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.0.tgz#8e1bfd83efa54a5f662033afcc2b8e701f4bb3a9" + integrity sha512-d08TLmXeK/XbgCo7ZeZ+JaeZDtDai/2ctapTRsWWkkmy7G/cqz8DQN/HlWG7RR4YmfXxmExsbU3SuCjlM7AtUg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.3.0" + "@babel/helper-create-class-features-plugin" "^7.4.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-decorators" "^7.2.0" @@ -276,7 +403,15 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-json-strings" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@7.3.2", "@babel/plugin-proposal-object-rest-spread@^7.3.1": +"@babel/plugin-proposal-object-rest-spread@7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.3.tgz#be27cd416eceeba84141305b93c282f5de23bbb4" + integrity sha512-xC//6DNSSHVjq8O2ge0dyYlhshsH4T7XdCVoxbi5HzLYWfsC5ooFlJjrXk8RcAT+hjHAK9UjBXdylzSoDK3t4g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@^7.3.1": version "7.3.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz#6d1859882d4d778578e41f82cc5d7bf3d5daf6c1" integrity sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA== @@ -284,6 +419,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" +"@babel/plugin-proposal-object-rest-spread@^7.4.3": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" + integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-proposal-optional-catch-binding@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" @@ -301,6 +444,15 @@ "@babel/helper-regex" "^7.0.0" regexpu-core "^4.2.0" +"@babel/plugin-proposal-unicode-property-regex@^7.4.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" + integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + "@babel/plugin-syntax-async-generators@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" @@ -343,7 +495,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-object-rest-spread@^7.2.0": +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== @@ -380,6 +532,15 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-remap-async-to-generator" "^7.1.0" +"@babel/plugin-transform-async-to-generator@^7.4.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894" + integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-transform-block-scoped-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" @@ -395,7 +556,29 @@ "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.10" -"@babel/plugin-transform-classes@7.2.2", "@babel/plugin-transform-classes@^7.2.0": +"@babel/plugin-transform-block-scoping@^7.4.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" + integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.11" + +"@babel/plugin-transform-classes@7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.3.tgz#adc7a1137ab4287a555d429cc56ecde8f40c062c" + integrity sha512-PUaIKyFUDtG6jF5DUJOfkBdwAS/kFFV3XFk7Nn0a6vR7ZT8jYw5cGtIlat77wcnd0C6ViGqo/wyNf4ZHytF/nQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.4.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.0" + "@babel/helper-split-export-declaration" "^7.4.0" + globals "^11.1.0" + +"@babel/plugin-transform-classes@^7.2.0": version "7.2.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz#6c90542f210ee975aa2aa8c8b5af7fa73a126953" integrity sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ== @@ -409,6 +592,20 @@ "@babel/helper-split-export-declaration" "^7.0.0" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.4.3": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" + integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.4.4" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" @@ -416,13 +613,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-destructuring@7.3.2", "@babel/plugin-transform-destructuring@^7.2.0": +"@babel/plugin-transform-destructuring@7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.3.tgz#1a95f5ca2bf2f91ef0648d5de38a8d472da4350f" + integrity sha512-rVTLLZpydDFDyN4qnXdzwoVpk1oaXHIvPEOkOLyr88o7oHxVc/LyrnDx+amuBWGOwUb7D1s/uLsKBNTx08htZg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.2.0": version "7.3.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz#f2f5520be055ba1c38c41c0e094d8a461dd78f2d" integrity sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-destructuring@^7.4.3": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" + integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-dotall-regex@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49" @@ -432,6 +643,15 @@ "@babel/helper-regex" "^7.0.0" regexpu-core "^4.1.3" +"@babel/plugin-transform-dotall-regex@^7.4.3": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" + integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + "@babel/plugin-transform-duplicate-keys@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" @@ -447,10 +667,10 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-flow-strip-types@7.2.3": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.2.3.tgz#e3ac2a594948454e7431c7db33e1d02d51b5cd69" - integrity sha512-xnt7UIk9GYZRitqCnsVMjQK1O2eKZwFB3CvvHjf5SGx6K6vr/MScCKQDnf1DxRaj501e3pXjti+inbSXX2ZUoQ== +"@babel/plugin-transform-flow-strip-types@7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.0.tgz#f3c59eecff68c99b9c96eaafe4fe9d1fa8947138" + integrity sha512-C4ZVNejHnfB22vI2TYN4RUp2oCmq6cSEAg4RygSvYZUECRqUu9O4PMEMNJ4wsemaRGg27BbgYctG4BZh+AgIHw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-flow" "^7.2.0" @@ -462,6 +682,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-for-of@^7.4.3": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" + integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-function-name@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a" @@ -470,6 +697,14 @@ "@babel/helper-function-name" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-function-name@^7.4.3": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" + integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" @@ -477,6 +712,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-member-expression-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" + integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-modules-amd@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" @@ -494,6 +736,15 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-simple-access" "^7.1.0" +"@babel/plugin-transform-modules-commonjs@^7.4.3": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" + integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== + dependencies: + "@babel/helper-module-transforms" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/plugin-transform-modules-systemjs@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz#912bfe9e5ff982924c81d0937c92d24994bb9068" @@ -502,6 +753,14 @@ "@babel/helper-hoist-variables" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-modules-systemjs@^7.4.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" + integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-modules-umd@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" @@ -517,6 +776,13 @@ dependencies: regexp-tree "^0.1.0" +"@babel/plugin-transform-named-capturing-groups-regex@^7.4.2": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" + integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg== + dependencies: + regexp-tree "^0.1.6" + "@babel/plugin-transform-new-target@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" @@ -524,6 +790,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-new-target@^7.4.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" + integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-object-super@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" @@ -541,6 +814,22 @@ "@babel/helper-get-function-arity" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-parameters@^7.4.3": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" + integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== + dependencies: + "@babel/helper-call-delegate" "^7.4.4" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-property-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" + integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-constant-elements@7.2.0", "@babel/plugin-transform-react-constant-elements@^7.0.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.2.0.tgz#ed602dc2d8bff2f0cb1a5ce29263dbdec40779f7" @@ -588,10 +877,24 @@ dependencies: regenerator-transform "^0.13.3" -"@babel/plugin-transform-runtime@7.2.0": +"@babel/plugin-transform-regenerator@^7.4.3": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" + integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== + dependencies: + regenerator-transform "^0.14.0" + +"@babel/plugin-transform-reserved-words@^7.2.0": version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" - integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw== + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" + integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-runtime@7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.3.tgz#4d6691690ecdc9f5cb8c3ab170a1576c1f556371" + integrity sha512-7Q61bU+uEI7bCUFReT1NKn7/X6sDQsZ7wL1sJ9IYMAO7cI+eg6x9re1cEw2fCRMbbTVyoeUKWSV1M6azEfKCfg== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -635,10 +938,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-typescript@^7.1.0": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.3.2.tgz#59a7227163e55738842f043d9e5bd7c040447d96" - integrity sha512-Pvco0x0ZSCnexJnshMfaibQ5hnK8aUHSvjCQhC1JR8eeg+iBwt0AtCO7gWxJ358zZevuf9wPSO5rv+WJcbHPXQ== +"@babel/plugin-transform-typescript@^7.3.2": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.4.5.tgz#ab3351ba35307b79981993536c93ff8be050ba28" + integrity sha512-RPB/YeGr4ZrFKNwfuQRlMf2lxoCUaU01MTw39/OFE/RiL8HDjtn68BwEPft1P7JN4akyEmjGWAMNldOV7o9V2g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-typescript" "^7.2.0" @@ -652,7 +955,70 @@ "@babel/helper-regex" "^7.0.0" regexpu-core "^4.1.3" -"@babel/preset-env@7.3.1", "@babel/preset-env@^7.1.6": +"@babel/plugin-transform-unicode-regex@^7.4.3": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" + integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/preset-env@7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.3.tgz#e71e16e123dc0fbf65a52cbcbcefd072fbd02880" + integrity sha512-FYbZdV12yHdJU5Z70cEg0f6lvtpZ8jFSDakTm7WXeJbLXh4R0ztGEu/SW7G1nJ2ZvKwDhz8YrbA84eYyprmGqw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.4.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.4.0" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.4.0" + "@babel/plugin-transform-classes" "^7.4.3" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.4.3" + "@babel/plugin-transform-dotall-regex" "^7.4.3" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.4.3" + "@babel/plugin-transform-function-name" "^7.4.3" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-member-expression-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.4.3" + "@babel/plugin-transform-modules-systemjs" "^7.4.0" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.2" + "@babel/plugin-transform-new-target" "^7.4.0" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.4.3" + "@babel/plugin-transform-property-literals" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.4.3" + "@babel/plugin-transform-reserved-words" "^7.2.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.2.0" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.4.3" + "@babel/types" "^7.4.0" + browserslist "^4.5.2" + core-js-compat "^3.0.0" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.5.0" + +"@babel/preset-env@^7.1.6": version "7.3.1" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.3.1.tgz#389e8ca6b17ae67aaf9a2111665030be923515db" integrity sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ== @@ -712,15 +1078,29 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" -"@babel/preset-typescript@7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.1.0.tgz#49ad6e2084ff0bfb5f1f7fb3b5e76c434d442c7f" - integrity sha512-LYveByuF9AOM8WrsNne5+N79k1YxjNB6gmpCQsnuSBAcV8QUeB+ZUxQzL7Rz7HksPbahymKkq2qBR+o36ggFZA== +"@babel/preset-typescript@7.3.3": + version "7.3.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.3.3.tgz#88669911053fa16b2b276ea2ede2ca603b3f307a" + integrity sha512-mzMVuIP4lqtn4du2ynEfdO0+RYcslwrZiJHXu4MGaC1ctJiW2fyaeDrtjJGs7R/KebZ1sgowcIoWf4uRpEfKEg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.1.0" + "@babel/plugin-transform-typescript" "^7.3.2" -"@babel/runtime@7.3.1", "@babel/runtime@^7.1.2": +"@babel/runtime@7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.3.tgz#79888e452034223ad9609187a0ad1fe0d2ad4bdc" + integrity sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.2": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" + integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/runtime@^7.1.2": version "7.3.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a" integrity sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA== @@ -736,6 +1116,15 @@ "@babel/parser" "^7.2.2" "@babel/types" "^7.2.2" +"@babel/template@^7.4.0", "@babel/template@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" + integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.4.4" + "@babel/types" "^7.4.4" + "@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.1.6", "@babel/traverse@^7.2.2", "@babel/traverse@^7.2.3": version "7.2.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" @@ -751,6 +1140,21 @@ globals "^11.1.0" lodash "^4.17.10" +"@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216" + integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.4" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/types" "^7.4.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.11" + "@babel/types@^7.0.0", "@babel/types@^7.1.6", "@babel/types@^7.2.0", "@babel/types@^7.2.2", "@babel/types@^7.3.0", "@babel/types@^7.3.2": version "7.3.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.2.tgz#424f5be4be633fff33fb83ab8d67e4a8290f5a2f" @@ -760,7 +1164,32 @@ lodash "^4.17.10" to-fast-properties "^2.0.0" -"@blueprintjs/core@3.15.0", "@blueprintjs/core@^3.15.0": +"@babel/types@^7.4.0", "@babel/types@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" + integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + +"@blueprintjs/core@3.15.1": + version "3.15.1" + resolved "https://registry.yarnpkg.com/@blueprintjs/core/-/core-3.15.1.tgz#9792e9fb7e2e066dd5339fadeaf2f85b1485832a" + integrity sha512-M8ltbqqlMZuZ6SEuqo/3Fr59ZcUfd8Er7ocbm7EACVfRW7dRhOCd/TKkf2kfICNtCDwznwXk0iAePLXZhUGtQg== + dependencies: + "@blueprintjs/icons" "^3.8.0" + "@types/dom4" "^2.0.1" + classnames "^2.2" + dom4 "^2.0.1" + normalize.css "^8.0.0" + popper.js "^1.14.1" + react-popper "^1.0.0" + react-transition-group "^2.2.1" + resize-observer-polyfill "^1.5.0" + tslib "^1.9.0" + +"@blueprintjs/core@^3.15.0": version "3.15.0" resolved "https://registry.yarnpkg.com/@blueprintjs/core/-/core-3.15.0.tgz#49ba1dfee7dcefbb527d27c0f8d6bcf1086209d4" integrity sha512-znXO0UaWBJO7Nm2qEvZzURCDuogsJ9DJlIw3N2XnIi+k/c8mQ1xlvtg0TT2pS88lMG9HUEKky3b0UQaSXBw4LA== @@ -784,6 +1213,14 @@ classnames "^2.2" tslib "^1.9.0" +"@blueprintjs/icons@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@blueprintjs/icons/-/icons-3.8.0.tgz#7c77c67e4a241740f803f05e4f6e3ce43c6d6560" + integrity sha512-yHaRQ3vfV9Gf3foZ4ONtxddz+u5ufkHqHj8Ia5VhPbFgG4el+cPdmsGGIIM72rgKS1KQa5Ay+ggjpByUlXvrKg== + dependencies: + classnames "^2.2" + tslib "^1.9.0" + "@blueprintjs/select@3.8.0": version "3.8.0" resolved "https://registry.yarnpkg.com/@blueprintjs/select/-/select-3.8.0.tgz#903cc9ab50da4cec08f559be27b7fa7f9f1560e5" @@ -793,11 +1230,196 @@ classnames "^2.2" tslib "^1.9.0" +"@cnakazawa/watch@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" + integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + "@csstools/convert-colors@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== +"@csstools/normalize.css@^9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-9.0.1.tgz#c27b391d8457d1e893f1eddeaf5e5412d12ffbb5" + integrity sha512-6It2EVfGskxZCQhuykrfnALg7oVeiI6KclWSmGDqB0AiInVrTGB9Jp9i4/Ad21u9Jde/voVQz6eFX/eSg/UsPA== + +"@hapi/address@2.x.x": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.0.0.tgz#9f05469c88cb2fd3dcd624776b54ee95c312126a" + integrity sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw== + +"@hapi/hoek@6.x.x": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-6.2.4.tgz#4b95fbaccbfba90185690890bdf1a2fbbda10595" + integrity sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A== + +"@hapi/joi@^15.0.0": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.0.3.tgz#e94568fd859e5e945126d5675e7dd218484638a7" + integrity sha512-z6CesJ2YBwgVCi+ci8SI8zixoj8bGFn/vZb9MBPbSyoxsS2PnWYjHcyTM17VLK6tx64YVK38SDIh10hJypB+ig== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/hoek" "6.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.0.tgz#5c47cd9637c2953db185aa957a27bcb2a8b7a6f8" + integrity sha512-gZDI/eXOIk8kP2PkUKjWu9RW8GGVd2Hkgjxyr/S7Z+JF+0mr7bAlbw+DkTRxnD580o8Kqxlnba9wvqp5aOHBww== + dependencies: + "@hapi/hoek" "6.x.x" + +"@jest/console@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" + integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg== + dependencies: + "@jest/source-map" "^24.3.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz#fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b" + integrity sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.8.0" + "@jest/test-result" "^24.8.0" + "@jest/transform" "^24.8.0" + "@jest/types" "^24.8.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.8.0" + jest-config "^24.8.0" + jest-haste-map "^24.8.0" + jest-message-util "^24.8.0" + jest-regex-util "^24.3.0" + jest-resolve-dependencies "^24.8.0" + jest-runner "^24.8.0" + jest-runtime "^24.8.0" + jest-snapshot "^24.8.0" + jest-util "^24.8.0" + jest-validate "^24.8.0" + jest-watcher "^24.8.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + pirates "^4.0.1" + realpath-native "^1.1.0" + rimraf "^2.5.4" + strip-ansi "^5.0.0" + +"@jest/environment@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz#0342261383c776bdd652168f68065ef144af0eac" + integrity sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw== + dependencies: + "@jest/fake-timers" "^24.8.0" + "@jest/transform" "^24.8.0" + "@jest/types" "^24.8.0" + jest-mock "^24.8.0" + +"@jest/fake-timers@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz#2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1" + integrity sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw== + dependencies: + "@jest/types" "^24.8.0" + jest-message-util "^24.8.0" + jest-mock "^24.8.0" + +"@jest/reporters@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz#075169cd029bddec54b8f2c0fc489fd0b9e05729" + integrity sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw== + dependencies: + "@jest/environment" "^24.8.0" + "@jest/test-result" "^24.8.0" + "@jest/transform" "^24.8.0" + "@jest/types" "^24.8.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.1.1" + jest-haste-map "^24.8.0" + jest-resolve "^24.8.0" + jest-runtime "^24.8.0" + jest-util "^24.8.0" + jest-worker "^24.6.0" + node-notifier "^5.2.1" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0": + version "24.3.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz#563be3aa4d224caf65ff77edc95cd1ca4da67f28" + integrity sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz#7675d0aaf9d2484caa65e048d9b467d160f8e9d3" + integrity sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng== + dependencies: + "@jest/console" "^24.7.1" + "@jest/types" "^24.8.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz#2f993bcf6ef5eb4e65e8233a95a3320248cf994b" + integrity sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg== + dependencies: + "@jest/test-result" "^24.8.0" + jest-haste-map "^24.8.0" + jest-runner "^24.8.0" + jest-runtime "^24.8.0" + +"@jest/transform@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz#628fb99dce4f9d254c6fd9341e3eea262e06fef5" + integrity sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.8.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.8.0" + jest-regex-util "^24.3.0" + jest-util "^24.8.0" + micromatch "^3.1.10" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.7.0", "@jest/types@^24.8.0": + version "24.8.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz#f31e25948c58f0abd8c845ae26fcea1491dea7ad" + integrity sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^12.0.9" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -928,6 +1550,39 @@ resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.5.tgz#26f5bba8c58acd9b84d1a9135fb2789a1c191bc1" integrity sha512-0t0R7fKAXT/P++S98djRkXbL9Sxd9NNtfNg3BNw2EQOjVIkiMBdmO55N2Tp3wGK3mylmM7Vck9h5tEoSuSUabA== +"@types/babel__core@^7.1.0": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.2.tgz#608c74f55928033fce18b99b213c16be4b3d114f" + integrity sha512-cfCCrFmiGY/yq0NuKNxIQvZFy9kY/1immpSpTngOnyIbD4+eJOG5mxphhHDv3CHL9GltO4GcKr54kGBg3RNdbg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc" + integrity sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.6.tgz#328dd1a8fc4cfe3c8458be9477b219ea158fd7b2" + integrity sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw== + dependencies: + "@babel/types" "^7.3.0" + "@types/babylon@6.16.5": version "6.16.5" resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.5.tgz#1c5641db69eb8cdf378edd25b4be7754beeb48b4" @@ -950,22 +1605,42 @@ resolved "https://registry.yarnpkg.com/@types/is-glob/-/is-glob-4.0.0.tgz#fb8a2bff539025d4dcd6d5efe7689e03341b876d" integrity sha512-zC/2EmD8scdsGIeE+Xg7kP7oi9VP90zgMQtm9Cr25av4V+a+k8slQyiT60qSw8KORYrOKlPXfHwoa1bQbRzskQ== +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@types/istanbul-lib-report@*": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" + integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + "@types/jest-diff@*": version "20.0.1" resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-20.0.1.tgz#35cc15b9c4f30a18ef21852e255fdb02f6d59b89" integrity sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA== -"@types/jest@24.0.11": - version "24.0.11" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.11.tgz#1f099bea332c228ea6505a88159bfa86a5858340" - integrity sha512-2kLuPC5FDnWIDvaJBzsGTBQaBbnDweznicvK7UGYzlIJP4RJR2a4A/ByLUXEyEgag6jz8eHdlWExGDtH3EYUXQ== +"@types/jest@24.0.13": + version "24.0.13" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.13.tgz#10f50b64cb05fb02411fbba49e9042a3a11da3f9" + integrity sha512-3m6RPnO35r7Dg+uMLj1+xfZaOgIHHHut61djNjzwExXN4/Pm9has9C6I1KMYSfz7mahDhWUOVg4HW/nZdv5Pww== dependencies: "@types/jest-diff" "*" -"@types/lodash@4.14.123": - version "4.14.123" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.123.tgz#39be5d211478c8dd3bdae98ee75bb7efe4abfe4d" - integrity sha512-pQvPkc4Nltyx7G1Ww45OjVqUsJP4UsZm+GWJpigXgkikZqJgRm4c48g027o6tdgubWHwFRF15iFd+Y4Pmqv6+Q== +"@types/lodash@4.14.132": + version "4.14.132" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.132.tgz#8ce45ca8745ff2e004fac0de0ab46f61e390ffa0" + integrity sha512-RNUU1rrh85NgUJcjOOr96YXr+RHwInGbaQCZmlitqOaCKXffj8bh+Zxwuq5rjDy5OgzFldDVoqk4pyLEDiwxIw== "@types/node@*": version "10.12.24" @@ -977,6 +1652,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.0.tgz#b0df8d6ef9b5001b2be3a94d909ce3c29a80f9e1" integrity sha512-rx29MMkRdVmzunmiA4lzBYJNnXsW/PhG4kMBy2ATsYaDjGGR75dCFEVVROKpNwlVdcUX3xxlghKQOeDPBJobng== +"@types/node@^12.0.2": + version "12.0.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.2.tgz#3452a24edf9fea138b48fad4a0a028a683da1e40" + integrity sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA== + "@types/prettier@1.16.1": version "1.16.1" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.16.1.tgz#328d1c9b54402e44119398bcb6a31b7bbd606d59" @@ -999,17 +1679,17 @@ dependencies: query-string "*" -"@types/react-dom@16.8.3": - version "16.8.3" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.8.3.tgz#6131b7b6158bc7ed1925a3374b88b7c00481f0cb" - integrity sha512-HF5hD5YR3z9Mn6kXcW1VKe4AQ04ZlZj1EdLBae61hzQ3eEWWxMgNLUbIxeZp40BnSxqY1eAYLsH9QopQcxzScA== +"@types/react-dom@16.8.4": + version "16.8.4" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.8.4.tgz#7fb7ba368857c7aa0f4e4511c4710ca2c5a12a88" + integrity sha512-eIRpEW73DCzPIMaNBDP5pPIpK1KXyZwNgfxiVagb5iGiz6da+9A5hslSX6GAQKdO7SayVCS/Fr2kjqprgAvkfA== dependencies: "@types/react" "*" -"@types/react-router-dom@4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-4.3.1.tgz#71fe2918f8f60474a891520def40a63997dafe04" - integrity sha512-GbztJAScOmQ/7RsQfO4cd55RuH1W4g6V1gDW3j4riLlt+8yxYLqqsiMzmyuXBLzdFmDtX/uU2Bpcm0cmudv44A== +"@types/react-router-dom@4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-4.3.3.tgz#7837e3e9fefbc84a8f6c8a51dca004f4e83e94e3" + integrity sha512-xj0DmFjgvAqRfh/kJPO7apD5G30yPQe+8slu/dugioQOkdKpyzc4Fgk4hoTelm6CSHz7pI2PPsW5+Y6GRBF2zw== dependencies: "@types/history" "*" "@types/react" "*" @@ -1031,18 +1711,18 @@ "@types/prop-types" "*" csstype "^2.2.0" -"@types/react@16.8.10": - version "16.8.10" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.10.tgz#1ccb6fde17f71a62ef055382ec68bdc379d4d8d9" - integrity sha512-7bUQeZKP4XZH/aB4i7k1i5yuwymDu/hnLMhD9NjVZvQQH7ZUgRN3d6iu8YXzx4sN/tNr0bj8jgguk8hhObzGvA== +"@types/react@16.8.18": + version "16.8.18" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.18.tgz#fe66fb748b0b6ca9709d38b87b2d1356d960a511" + integrity sha512-lUXdKzRqWR4FebR5tGHkLCqnvQJS4fdXKCBrNGGbglqZg2gpU+J82pMONevQODUotATs9fc9k66bx3/St8vReg== dependencies: "@types/prop-types" "*" csstype "^2.2.0" -"@types/tapable@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.2.tgz#e13182e1b69871a422d7863e11a4a6f5b814a4bd" - integrity sha512-42zEJkBpNfMEAvWR5WlwtTH22oDzcMjFsL9gDGExwF8X8WvAiw7Vwop7hPw03QT8TKfec83LwbHj6SvpqM4ELQ== +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== "@types/unist@*", "@types/unist@^2.0.0": version "2.0.2" @@ -1071,163 +1751,206 @@ "@types/unist" "*" "@types/vfile-message" "*" +"@types/yargs@^12.0.2", "@types/yargs@^12.0.9": + version "12.0.12" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" + integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw== + "@types/zen-observable@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" integrity sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg== -"@webassemblyjs/ast@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace" - integrity sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA== +"@typescript-eslint/eslint-plugin@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.6.0.tgz#a5ff3128c692393fb16efa403ec7c8a5593dab0f" + integrity sha512-U224c29E2lo861TQZs6GSmyC0OYeRNg6bE9UVIiFBxN2MlA0nq2dCrgIVyyRbC05UOcrgf2Wk/CF2gGOPQKUSQ== dependencies: - "@webassemblyjs/helper-module-context" "1.7.11" - "@webassemblyjs/helper-wasm-bytecode" "1.7.11" - "@webassemblyjs/wast-parser" "1.7.11" + "@typescript-eslint/parser" "1.6.0" + "@typescript-eslint/typescript-estree" "1.6.0" + requireindex "^1.2.0" + tsutils "^3.7.0" -"@webassemblyjs/floating-point-hex-parser@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz#a69f0af6502eb9a3c045555b1a6129d3d3f2e313" - integrity sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg== - -"@webassemblyjs/helper-api-error@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz#c7b6bb8105f84039511a2b39ce494f193818a32a" - integrity sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg== - -"@webassemblyjs/helper-buffer@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz#3122d48dcc6c9456ed982debe16c8f37101df39b" - integrity sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w== - -"@webassemblyjs/helper-code-frame@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz#cf8f106e746662a0da29bdef635fcd3d1248364b" - integrity sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw== +"@typescript-eslint/parser@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.6.0.tgz#f01189c8b90848e3b8e45a6cdad27870529d1804" + integrity sha512-VB9xmSbfafI+/kI4gUK3PfrkGmrJQfh0N4EScT1gZXSZyUxpsBirPL99EWZg9MmPG0pzq/gMtgkk7/rAHj4aQw== dependencies: - "@webassemblyjs/wast-printer" "1.7.11" + "@typescript-eslint/typescript-estree" "1.6.0" + eslint-scope "^4.0.0" + eslint-visitor-keys "^1.0.0" -"@webassemblyjs/helper-fsm@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz#df38882a624080d03f7503f93e3f17ac5ac01181" - integrity sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A== - -"@webassemblyjs/helper-module-context@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz#d874d722e51e62ac202476935d649c802fa0e209" - integrity sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg== - -"@webassemblyjs/helper-wasm-bytecode@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz#dd9a1e817f1c2eb105b4cf1013093cb9f3c9cb06" - integrity sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ== - -"@webassemblyjs/helper-wasm-section@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz#9c9ac41ecf9fbcfffc96f6d2675e2de33811e68a" - integrity sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q== +"@typescript-eslint/typescript-estree@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.6.0.tgz#6cf43a07fee08b8eb52e4513b428c8cdc9751ef0" + integrity sha512-A4CanUwfaG4oXobD5y7EXbsOHjCwn8tj1RDd820etpPAjH+Icjc2K9e/DQM1Hac5zH2BSy+u6bjvvF2wwREvYA== dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/helper-buffer" "1.7.11" - "@webassemblyjs/helper-wasm-bytecode" "1.7.11" - "@webassemblyjs/wasm-gen" "1.7.11" + lodash.unescape "4.0.1" + semver "5.5.0" -"@webassemblyjs/ieee754@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz#c95839eb63757a31880aaec7b6512d4191ac640b" - integrity sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ== +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.11.tgz#d7267a1ee9c4594fd3f7e37298818ec65687db63" - integrity sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw== +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== dependencies: - "@xtuc/long" "4.2.1" + "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz#06d7218ea9fdc94a6793aa92208160db3d26ee82" - integrity sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA== +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== -"@webassemblyjs/wasm-edit@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz#8c74ca474d4f951d01dbae9bd70814ee22a82005" - integrity sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg== +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/helper-buffer" "1.7.11" - "@webassemblyjs/helper-wasm-bytecode" "1.7.11" - "@webassemblyjs/helper-wasm-section" "1.7.11" - "@webassemblyjs/wasm-gen" "1.7.11" - "@webassemblyjs/wasm-opt" "1.7.11" - "@webassemblyjs/wasm-parser" "1.7.11" - "@webassemblyjs/wast-printer" "1.7.11" + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" -"@webassemblyjs/wasm-gen@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz#9bbba942f22375686a6fb759afcd7ac9c45da1a8" - integrity sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA== +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/helper-wasm-bytecode" "1.7.11" - "@webassemblyjs/ieee754" "1.7.11" - "@webassemblyjs/leb128" "1.7.11" - "@webassemblyjs/utf8" "1.7.11" + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" -"@webassemblyjs/wasm-opt@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz#b331e8e7cef8f8e2f007d42c3a36a0580a7d6ca7" - integrity sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg== +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/helper-buffer" "1.7.11" - "@webassemblyjs/wasm-gen" "1.7.11" - "@webassemblyjs/wasm-parser" "1.7.11" + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" -"@webassemblyjs/wasm-parser@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz#6e3d20fa6a3519f6b084ef9391ad58211efb0a1a" - integrity sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg== +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/helper-api-error" "1.7.11" - "@webassemblyjs/helper-wasm-bytecode" "1.7.11" - "@webassemblyjs/ieee754" "1.7.11" - "@webassemblyjs/leb128" "1.7.11" - "@webassemblyjs/utf8" "1.7.11" + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" -"@webassemblyjs/wast-parser@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz#25bd117562ca8c002720ff8116ef9072d9ca869c" - integrity sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ== +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/floating-point-hex-parser" "1.7.11" - "@webassemblyjs/helper-api-error" "1.7.11" - "@webassemblyjs/helper-code-frame" "1.7.11" - "@webassemblyjs/helper-fsm" "1.7.11" - "@xtuc/long" "4.2.1" + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz#c4245b6de242cb50a2cc950174fdbf65c78d7813" - integrity sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg== +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/wast-parser" "1.7.11" - "@xtuc/long" "4.2.1" + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@wry/context@^0.4.0": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.4.1.tgz#b3e23ca036035cbad0bd9711269352dd03a6fe3c" + integrity sha512-ZpIrDGek+IU9wkID/TYSgcYeLXsSM2VkbfAxO4NjWBGeM/OrA9KyNmy8msYlAEKPmKxi3mIbXg3jcb3f6pqnaQ== + dependencies: + "@types/node" "^12.0.2" + tslib "^1.9.3" "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== -"@xtuc/long@4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" - integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== abab@^2.0.0: version "2.0.0" @@ -1247,12 +1970,10 @@ accepts@~1.3.4, accepts@~1.3.5: mime-types "~2.1.18" negotiator "0.6.1" -acorn-dynamic-import@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" - integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== - dependencies: - acorn "^5.0.0" +acorn-dynamic-import@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" + integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== acorn-globals@^4.1.0: version "4.3.0" @@ -1262,6 +1983,14 @@ acorn-globals@^4.1.0: acorn "^6.0.1" acorn-walk "^6.0.1" +acorn-globals@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006" + integrity sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + acorn-jsx@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" @@ -1272,16 +2001,21 @@ acorn-walk@^6.0.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== -acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2: +acorn@^5.5.3: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.1, acorn@^6.0.2: +acorn@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818" integrity sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw== +acorn@^6.0.4, acorn@^6.0.5, acorn@^6.0.7: + version "6.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" + integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== + address@1.0.3, address@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" @@ -1305,7 +2039,7 @@ ajv-keywords@^3.1.0: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== -ajv@^6.1.0, ajv@^6.5.3, ajv@^6.5.5, ajv@^6.9.1: +ajv@^6.1.0, ajv@^6.5.5, ajv@^6.9.1: version "6.9.1" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.9.1.tgz#a4d3683d74abc5670e75f0b16520f70a20ea8dc1" integrity sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA== @@ -1355,6 +2089,11 @@ ansi-regex@^4.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1388,62 +2127,54 @@ aphrodite@^0.5.0: asap "^2.0.3" inline-style-prefixer "^2.0.0" -apollo-boost@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/apollo-boost/-/apollo-boost-0.3.1.tgz#b6a896e020a0eab7e415032fe565734a955c65f8" - integrity sha512-VdXcTMxLBeNvANW/FtiarEkrRr/cepYKG6wTAURdy8CS33WYpEHtIg9S8tAjxwVzIECpE4lWyDKyPLoESJ072Q== +apollo-boost@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/apollo-boost/-/apollo-boost-0.4.0.tgz#3bf74926b6aba5b74794e127a858dd6d77b0b79b" + integrity sha512-C2Ba2G0Ae3BpXZX1t8zbKltHSW87tvRDwXZB/CJkTd9Qfqym+7yu285Re7X0u3zyDwhA6jftCKP21f36gha7cA== dependencies: - apollo-cache "^1.2.1" - apollo-cache-inmemory "^1.5.1" - apollo-client "^2.5.1" + apollo-cache "^1.3.0" + apollo-cache-inmemory "^1.6.0" + apollo-client "^2.6.0" apollo-link "^1.0.6" apollo-link-error "^1.0.3" apollo-link-http "^1.3.1" graphql-tag "^2.4.2" - ts-invariant "^0.2.1" + ts-invariant "^0.4.0" tslib "^1.9.3" -apollo-cache-inmemory@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.5.1.tgz#265d1ee67b0bf0aca9c37629d410bfae44e62953" - integrity sha512-D3bdpPmWfaKQkWy8lfwUg+K8OBITo3sx0BHLs1B/9vIdOIZ7JNCKq3EUcAgAfInomJUdN0QG1yOfi8M8hxkN1g== +apollo-cache-inmemory@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.0.tgz#a106cdc520f0a043be2575372d5dbb7e4790254c" + integrity sha512-Mr86ucMsXnRH9YRvcuuy6kc3dtyRBuVSo8gdxp2sJVuUAtvQ6r/8E+ok2qX84em9ZBAYxoyvPnKeShhvcKiiDw== dependencies: - apollo-cache "^1.2.1" - apollo-utilities "^1.2.1" - optimism "^0.6.9" - ts-invariant "^0.2.1" + apollo-cache "^1.3.0" + apollo-utilities "^1.3.0" + optimism "^0.9.0" + ts-invariant "^0.4.0" tslib "^1.9.3" -apollo-cache@1.2.1, apollo-cache@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.2.1.tgz#aae71eb4a11f1f7322adc343f84b1a39b0693644" - integrity sha512-nzFmep/oKlbzUuDyz6fS6aYhRmfpcHWqNkkA9Bbxwk18RD6LXC4eZkuE0gXRX0IibVBHNjYVK+Szi0Yied4SpQ== +apollo-cache@1.3.0, apollo-cache@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.3.0.tgz#de5c907cbd329440c9b0aafcbe8436391b9e6142" + integrity sha512-voPlvSIDA2pY3+7QwtXPs7o5uSNAVjUKwimyHWoiW0MIZtPxawtOV/Y+BL85R227JqcjPic1El+QToVR8l4ytQ== dependencies: - apollo-utilities "^1.2.1" + apollo-utilities "^1.3.0" tslib "^1.9.3" -apollo-client@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.5.1.tgz#36126ed1d32edd79c3713c6684546a3bea80e6d1" - integrity sha512-MNcQKiqLHdGmNJ0rZ0NXaHrToXapJgS/5kPk0FygXt+/FmDCdzqcujI7OPxEC6e9Yw5S/8dIvOXcRNuOMElHkA== +apollo-client@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.6.0.tgz#9b66c04cd96d622cd72f92e584e7403c17532831" + integrity sha512-Z6oSD45vyw6maktMABXTaJliWdFJy4ihZGxbRh7rY65RWNz0HSm3IX66shLavdNqd4lpOcVuAufJl+w8u6RhLQ== dependencies: "@types/zen-observable" "^0.8.0" - apollo-cache "1.2.1" + apollo-cache "1.3.0" apollo-link "^1.0.0" - apollo-link-dedup "^1.0.0" - apollo-utilities "1.2.1" + apollo-utilities "1.3.0" symbol-observable "^1.0.2" - ts-invariant "^0.2.1" + ts-invariant "^0.4.0" tslib "^1.9.3" zen-observable "^0.8.0" -apollo-link-dedup@^1.0.0: - version "1.0.15" - resolved "https://registry.yarnpkg.com/apollo-link-dedup/-/apollo-link-dedup-1.0.15.tgz#028148f1028e806a9ab2f4abf3bde9dc292565e9" - integrity sha512-14/+Tg7ogcYVrvZa8C7uBQIvX2B/dCKSnojI41yDYGp/t2eWD5ITCWdgjhciXpi0Ij6z+NRyMEebACz3EOwm4w== - dependencies: - apollo-link "^1.2.8" - apollo-link-error@^1.0.3: version "1.1.7" resolved "https://registry.yarnpkg.com/apollo-link-error/-/apollo-link-error-1.1.7.tgz#6233a339d732def831af2dd417065b2ffd9feb5c" @@ -1474,13 +2205,13 @@ apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.2.3, apollo-link@^1.2.8: dependencies: zen-observable-ts "^0.8.15" -apollo-utilities@1.2.1, apollo-utilities@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.2.1.tgz#1c3a1ebf5607d7c8efe7636daaf58e7463b41b3c" - integrity sha512-Zv8Udp9XTSFiN8oyXOjf6PMHepD4yxxReLsl6dPUy5Ths7jti3nmlBzZUOxuTWRwZn0MoclqL7RQ5UEJN8MAxg== +apollo-utilities@1.3.0, apollo-utilities@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.0.tgz#9803724c07ac94ca11dc26397edb58735d2b0211" + integrity sha512-wQjV+FdWcTWmWUFlChG5rS0vHKy5OsXC6XlV9STRstQq6VbXANwHy6DHnTEQAfLXWAbNcPgBu+nBUpR3dFhwrA== dependencies: fast-json-stable-stringify "^2.0.0" - ts-invariant "^0.2.1" + ts-invariant "^0.4.0" tslib "^1.9.3" apollo-utilities@^1.0.1: @@ -1491,13 +2222,6 @@ apollo-utilities@^1.0.1: fast-json-stable-stringify "^2.0.0" tslib "^1.9.3" -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" - integrity sha1-126/jKlNJ24keja61EpLdKthGZE= - dependencies: - default-require-extensions "^1.0.0" - aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -1526,19 +2250,12 @@ aria-query@^3.0.0: ast-types-flow "0.0.7" commander "^2.11.0" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== @@ -1603,11 +2320,6 @@ array-uniq@^1.0.1: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -1686,13 +2398,6 @@ async@^1.5.2: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.1.4, async@^2.5.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" - integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== - dependencies: - lodash "^4.17.10" - async@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" @@ -1710,13 +2415,13 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.4.2: - version "9.4.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.4.7.tgz#f997994f9a810eae47b38fa6d8a119772051c4ff" - integrity sha512-qS5wW6aXHkm53Y4z73tFGsUhmZu4aMPV9iHXYlF0c/wxjknXNHuj/1cIQb+6YH692DbJGGWcckAXX+VxKvahMA== +autoprefixer@^9.4.9: + version "9.5.1" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.5.1.tgz#243b1267b67e7e947f28919d786b50d3bb0fb357" + integrity sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ== dependencies: - browserslist "^4.4.1" - caniuse-lite "^1.0.30000932" + browserslist "^4.5.4" + caniuse-lite "^1.0.30000957" normalize-range "^0.1.2" num2fraction "^1.2.2" postcss "^7.0.14" @@ -1740,14 +2445,14 @@ axios@0.18.0: follow-redirects "^1.3.0" is-buffer "^1.1.5" -axobject-query@^2.0.1: +axobject-query@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== dependencies: ast-types-flow "0.0.7" -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: +babel-code-frame@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= @@ -1756,40 +2461,10 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== - -babel-core@^6.0.0, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-eslint@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" - integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== +babel-eslint@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" + integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.0.0" @@ -1805,35 +2480,18 @@ babel-extract-comments@^1.0.0: dependencies: babylon "^6.18.0" -babel-generator@^6.18.0, babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== +babel-jest@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589" + integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw== dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@23.6.0, babel-jest@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.6.0.tgz#a644232366557a2240a0c083da6b25786185a2f1" - integrity sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew== - dependencies: - babel-plugin-istanbul "^4.1.6" - babel-preset-jest "^23.2.0" + "@jest/transform" "^24.8.0" + "@jest/types" "^24.8.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.6.0" + chalk "^2.4.2" + slash "^2.0.0" babel-loader@8.0.5: version "8.0.5" @@ -1845,13 +2503,6 @@ babel-loader@8.0.5: mkdirp "^0.5.1" util.promisify "^1.0.0" -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - babel-plugin-dynamic-import-node@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz#c0adfb07d95f4a4495e9aaac6ec386c4d7c2524e" @@ -1859,35 +2510,37 @@ babel-plugin-dynamic-import-node@2.2.0: dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^4.1.6: - version "4.1.6" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" - integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ== +babel-plugin-istanbul@^5.1.0: + version "5.1.4" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz#841d16b9a58eeb407a0ddce622ba02fe87a752ba" + integrity sha512-dySz4VJMH+dpndj0wjJ8JPs/7i1TdSPb1nRrn56/92pKOF9VKC1FMFJmMXjzlGGusnCAqujP6PBCiKq0sVA+YQ== dependencies: - babel-plugin-syntax-object-rest-spread "^6.13.0" - find-up "^2.1.0" - istanbul-lib-instrument "^1.10.1" - test-exclude "^4.2.1" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" -babel-plugin-jest-hoist@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" - integrity sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc= - -babel-plugin-macros@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.5.0.tgz#01f4d3b50ed567a67b80a30b9da066e94f4097b6" - integrity sha512-BWw0lD0kVZAXRD3Od1kMrdmfudqzDzYv2qrN3l2ISR1HVp1EgLKfbOrYV9xmY5k3qx3RIu5uPAUZZZHpo0o5Iw== +babel-plugin-jest-hoist@^24.6.0: + version "24.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz#f7f7f7ad150ee96d7a5e8e2c5da8319579e78019" + integrity sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w== dependencies: - cosmiconfig "^5.0.5" - resolve "^1.8.1" + "@types/babel__traverse" "^7.0.6" -babel-plugin-named-asset-import@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.1.tgz#5ec13ec446d0a1e5bb6c57a1f94c9cdedb0c50d6" - integrity sha512-vzZlo+yEB5YHqI6CRRTDojeT43J3Wf3C/MVkZW5UlbSeIIVUYRKtxaFT2L/VTv9mbIyatCW39+9g/SZolvwRUQ== +babel-plugin-macros@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.5.1.tgz#4a119ac2c2e19b458c259b9accd7ee34fd57ec6f" + integrity sha512-xN3KhAxPzsJ6OQTktCanNpIFnnMsCV+t8OloKxIL72D6+SUZYFn9qfklPgef5HyyDtzYZqqb+fs1S12+gQY82Q== + dependencies: + "@babel/runtime" "^7.4.2" + cosmiconfig "^5.2.0" + resolve "^1.10.0" -babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0: +babel-plugin-named-asset-import@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.2.tgz#20978ed446b8e1bf4a2f42d0a94c0ece85f75f4f" + integrity sha512-CxwvxrZ9OirpXQ201Ec57OmGhmI8/ui/GwTDy0hSp6CmRvgRC0pSair6Z04Ck+JStA0sMPZzSJ3uE4n17EXpPQ== + +babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= @@ -1905,53 +2558,39 @@ babel-plugin-transform-react-remove-prop-types@0.4.24: resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== -babel-preset-jest@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" - integrity sha1-jsegOhOPABoaj7HoETZSvxpV2kY= +babel-preset-jest@^24.6.0: + version "24.6.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz#66f06136eefce87797539c0d63f1769cc3915984" + integrity sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw== dependencies: - babel-plugin-jest-hoist "^23.2.0" - babel-plugin-syntax-object-rest-spread "^6.13.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.6.0" -babel-preset-react-app@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-7.0.2.tgz#d01ae973edc93b9f1015cb0236dd55889a584308" - integrity sha512-mwCk/u2wuiO8qQqblN5PlDa44taY0acq7hw6W+a70W522P7a9mIcdggL1fe5/LgAT7tqCq46q9wwhqaMoYKslQ== +babel-preset-react-app@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.0.0.tgz#703108142bc9dd7173bde6a1a0138a762abc76f9" + integrity sha512-YVsDA8HpAKklhFLJtl9+AgaxrDaor8gGvDFlsg1ByOS0IPGUovumdv4/gJiAnLcDmZmKlH6+9sVOz4NVW7emAg== dependencies: - "@babel/core" "7.2.2" - "@babel/plugin-proposal-class-properties" "7.3.0" - "@babel/plugin-proposal-decorators" "7.3.0" - "@babel/plugin-proposal-object-rest-spread" "7.3.2" + "@babel/core" "7.4.3" + "@babel/plugin-proposal-class-properties" "7.4.0" + "@babel/plugin-proposal-decorators" "7.4.0" + "@babel/plugin-proposal-object-rest-spread" "7.4.3" "@babel/plugin-syntax-dynamic-import" "7.2.0" - "@babel/plugin-transform-classes" "7.2.2" - "@babel/plugin-transform-destructuring" "7.3.2" - "@babel/plugin-transform-flow-strip-types" "7.2.3" + "@babel/plugin-transform-classes" "7.4.3" + "@babel/plugin-transform-destructuring" "7.4.3" + "@babel/plugin-transform-flow-strip-types" "7.4.0" "@babel/plugin-transform-react-constant-elements" "7.2.0" "@babel/plugin-transform-react-display-name" "7.2.0" - "@babel/plugin-transform-runtime" "7.2.0" - "@babel/preset-env" "7.3.1" + "@babel/plugin-transform-runtime" "7.4.3" + "@babel/preset-env" "7.4.3" "@babel/preset-react" "7.0.0" - "@babel/preset-typescript" "7.1.0" - "@babel/runtime" "7.3.1" - babel-loader "8.0.5" + "@babel/preset-typescript" "7.3.3" + "@babel/runtime" "7.4.3" babel-plugin-dynamic-import-node "2.2.0" - babel-plugin-macros "2.5.0" + babel-plugin-macros "2.5.1" babel-plugin-transform-react-remove-prop-types "0.4.24" -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -1959,32 +2598,6 @@ babel-runtime@^6.22.0, babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - babel-types@7.0.0-beta.3: version "7.0.0-beta.3" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-7.0.0-beta.3.tgz#cd927ca70e0ae8ab05f4aab83778cfb3e6eb20b4" @@ -1994,16 +2607,6 @@ babel-types@7.0.0-beta.3: lodash "^4.2.0" to-fast-properties "^2.0.0" -babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - babylon@7.0.0-beta.47: version "7.0.0-beta.47" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80" @@ -2054,16 +2657,6 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bfj@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.1.tgz#05a3b7784fbd72cfa3c22e56002ef99336516c48" - integrity sha512-+GUNvzHR4nRyGybQc2WpNJL4MJazMuvf92ueIyA0bIkPRwhhQu3IfZQ2PSoVPpCBJfmoSdOxu5rnotfFLlvYRQ== - dependencies: - bluebird "^3.5.1" - check-types "^7.3.0" - hoopy "^0.1.2" - tryer "^1.0.0" - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2081,7 +2674,7 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@^3.5.1, bluebird@^3.5.3: +bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== @@ -2137,15 +2730,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -2238,7 +2822,16 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.4.1, browserslist@^4.0.0, browserslist@^4.3.4, browserslist@^4.3.5, browserslist@^4.4.1: +browserslist@4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.5.4.tgz#166c4ecef3b51737a42436ea8002aeea466ea2c7" + integrity sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag== + dependencies: + caniuse-lite "^1.0.30000955" + electron-to-chromium "^1.3.122" + node-releases "^1.1.13" + +browserslist@^4.0.0, browserslist@^4.3.4: version "4.4.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.4.1.tgz#42e828954b6b29a7a53e352277be429478a69062" integrity sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A== @@ -2247,6 +2840,15 @@ browserslist@4.4.1, browserslist@^4.0.0, browserslist@^4.3.4, browserslist@^4.3. electron-to-chromium "^1.3.103" node-releases "^1.1.3" +browserslist@^4.1.1, browserslist@^4.4.2, browserslist@^4.5.2, browserslist@^4.5.4, browserslist@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.0.tgz#5274028c26f4d933d5b1323307c1d1da5084c9ff" + integrity sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg== + dependencies: + caniuse-lite "^1.0.30000967" + electron-to-chromium "^1.3.133" + node-releases "^1.1.19" + bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" @@ -2288,10 +2890,10 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= -bulma@0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/bulma/-/bulma-0.7.4.tgz#7e74512e9118d9799021339e67e365ee0ac4f3f9" - integrity sha512-krG2rP6eAX1WE0sf6O0SC/FUVSOBX4m1PBC2+GKLpb2pX0qanaDqcv9U2nu75egFrsHkI0zdWYuk/oGwoszVWg== +bulma@0.7.5: + version "0.7.5" + resolved "https://registry.yarnpkg.com/bulma/-/bulma-0.7.5.tgz#35066c37f82c088b68f94450be758fc00a967208" + integrity sha512-cX98TIn0I6sKba/DhW0FBjtaDpxTelU166pf7ICXpCCuplHWyu6C9LYZmL5PEsnePIeJaiorsTEzzNk3Tsm1hw== bytes@3.0.0: version "3.0.0" @@ -2398,6 +3000,11 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== +camelcase@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -2408,17 +3015,22 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000918, caniuse-lite@^1.0.30000929, caniuse-lite@^1.0.30000932: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000929: version "1.0.30000936" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000936.tgz#5d33b118763988bf721b9b8ad436d0400e4a116b" integrity sha512-orX4IdpbFhdNO7bTBhSbahp1EBpqzBc+qrvTRVUFfZgA4zta7TdM6PN5ZxkEUgDnz36m+PfWGcdX7AVfFWItJw== -capture-exit@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" - integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28= +caniuse-lite@^1.0.30000939, caniuse-lite@^1.0.30000955, caniuse-lite@^1.0.30000957, caniuse-lite@^1.0.30000967: + version "1.0.30000971" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000971.tgz#d1000e4546486a6977756547352bc96a4cfd2b13" + integrity sha512-TQFYFhRS0O5rdsmSbF1Wn+16latXYsQJat66f7S7lizXW1PVpWJeZw9wqqVLIjuxDRz7s7xRUj13QCfd8hKn6g== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== dependencies: - rsvp "^3.3.3" + rsvp "^4.8.4" case-sensitive-paths-webpack-plugin@2.2.0: version "2.2.0" @@ -2484,11 +3096,6 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -check-types@^7.3.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" - integrity sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg== - chokidar@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.2.tgz#9c23ea40b01638439e0513864d362aeacc5ad058" @@ -2539,10 +3146,10 @@ chrome-trace-event@^1.0.0: dependencies: tslib "^1.9.0" -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2552,11 +3159,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -2768,7 +3370,7 @@ commander@2.19.0, commander@^2.11.0, commander@^2.12.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== -common-tags@1.8.0, common-tags@^1.4.0: +common-tags@1.8.0, common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== @@ -2818,10 +3420,10 @@ concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" -confusing-browser-globals@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.6.tgz#5918188e8244492cdd46d6be1cab60edef3063ce" - integrity sha512-GzyX86c2TvaagAOR+lHL2Yq4T4EnoBcnojZBcNbxVKSunxmGTnioXHR5Mo2ha/XnCoQw8eurvj6Ta+SwPEPkKg== +confusing-browser-globals@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.7.tgz#5ae852bd541a910e7ffb2dbb864a2d21a36ad29b" + integrity sha512-cgHI1azax5ATrZ8rJ+ODDML9Fvu67PimB6aNxBrc/QwSaDaM9eTfIEUHx3bBLJJ82ioSb+/5zfsMCCEJax3ByQ== connect-history-api-fallback@^1.3.0: version "1.6.0" @@ -2868,7 +3470,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1: +convert-source-map@^1.1.0, convert-source-map@^1.4.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== @@ -2902,16 +3504,42 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@2.6.4, core-js@^2.4.0, core-js@^2.5.0: - version "2.6.4" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.4.tgz#b8897c062c4d769dd30a0ac5c73976c47f92ea0d" - integrity sha512-05qQ5hXShcqGkPZpXEFLIpxayZscVD2kuMBZewxiIPPEagukO4mqgPA9CWhUvFBJfy3ODdK2p9xyHh7FTU9/7A== +copy-to-clipboard@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.2.0.tgz#d2724a3ccbfed89706fac8a894872c979ac74467" + integrity sha512-eOZERzvCmxS8HWzugj4Uxl8OJxa7T2k1Gi0X5qavwydHIfuSHq2dTD09LOg/XyGq4Zpb5IsR/2OJ5lbOegz78w== + dependencies: + toggle-selection "^1.0.6" + +core-js-compat@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.3.tgz#0cc3ba4c7f62928c2837e1cffbe8dc78b4f1ae14" + integrity sha512-EP018pVhgwsKHz3YoN1hTq49aRe+h017Kjz0NQz3nXV0cCRMvH3fLQl+vEPGr4r4J5sk4sU3tUC7U1aqTCeJeA== + dependencies: + browserslist "^4.6.0" + core-js-pure "3.1.3" + semver "^6.1.0" + +core-js-pure@3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.3.tgz#4c90752d5b9471f641514f3728f51c1e0783d0b5" + integrity sha512-k3JWTrcQBKqjkjI0bkfXS0lbpWPxYuHWfMMjC1VDmzU4Q58IwSbuXSo99YO/hUHlw/EB4AlfA2PVxOGkrIq6dA== + +core-js@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.1.tgz#1343182634298f7f38622f95e73f54e48ddf4738" + integrity sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew== core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= +core-js@^2.4.0: + version "2.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.4.tgz#b8897c062c4d769dd30a0ac5c73976c47f92ea0d" + integrity sha512-05qQ5hXShcqGkPZpXEFLIpxayZscVD2kuMBZewxiIPPEagukO4mqgPA9CWhUvFBJfy3ODdK2p9xyHh7FTU9/7A== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -2927,7 +3555,7 @@ cosmiconfig@^4.0.0: parse-json "^4.0.0" require-from-string "^2.0.1" -cosmiconfig@^5.0.0, cosmiconfig@^5.0.5, cosmiconfig@^5.0.7: +cosmiconfig@^5.0.0, cosmiconfig@^5.0.7: version "5.0.7" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04" integrity sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA== @@ -2937,6 +3565,16 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.0.5, cosmiconfig@^5.0.7: js-yaml "^3.9.0" parse-json "^4.0.0" +cosmiconfig@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -3011,15 +3649,6 @@ cross-spawn@^3.0.0: lru-cache "^4.0.1" which "^1.2.9" -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -3073,23 +3702,22 @@ css-in-js-utils@^2.0.0: hyphenate-style-name "^1.0.2" isobject "^3.0.1" -css-loader@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.0.tgz#9f46aaa5ca41dbe31860e3b62b8e23c42916bf56" - integrity sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA== +css-loader@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" + integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== dependencies: - babel-code-frame "^6.26.0" - css-selector-tokenizer "^0.7.0" - icss-utils "^2.1.0" - loader-utils "^1.0.2" - lodash.camelcase "^4.3.0" - postcss "^6.0.23" - postcss-modules-extract-imports "^1.2.0" - postcss-modules-local-by-default "^1.2.0" - postcss-modules-scope "^1.1.0" - postcss-modules-values "^1.3.0" + camelcase "^5.2.0" + icss-utils "^4.1.0" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.14" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^2.0.6" + postcss-modules-scope "^2.1.0" + postcss-modules-values "^2.0.0" postcss-value-parser "^3.3.0" - source-list-map "^2.0.0" + schema-utils "^1.0.0" css-prefers-color-scheme@^3.1.1: version "3.1.1" @@ -3123,15 +3751,6 @@ css-select@^2.0.0: domutils "^1.7.0" nth-check "^1.0.2" -css-selector-tokenizer@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" - integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA== - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - css-tree@1.0.0-alpha.28: version "1.0.0-alpha.28" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" @@ -3168,16 +3787,16 @@ cssdb@^4.3.0: resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.3.0.tgz#2e1229900616f80c66ff2d568ea2b4f92db1c78c" integrity sha512-VHPES/+c9s+I0ryNj+PXvp84nz+ms843z/efpaEINwP/QfGsINL3gpLp5qjapzDNzNzbXxur8uxKxSXImrg4ag== -cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= - cssesc@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + cssnano-preset-default@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.6.tgz#92379e2a6db4a91c0ea727f5f556eeac693eab6a" @@ -3253,7 +3872,7 @@ csso@^3.5.0: dependencies: css-tree "1.0.0-alpha.29" -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: version "0.3.6" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A== @@ -3265,6 +3884,13 @@ cssstyle@^1.0.0: dependencies: cssom "0.3.x" +cssstyle@^1.1.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.2.2.tgz#427ea4d585b18624f6fdbf9de7a2a1a3ba713077" + integrity sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow== + dependencies: + cssom "0.3.x" + csstype@^2.2.0: version "2.6.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.2.tgz#3043d5e065454579afc7478a18de41909c8a2f01" @@ -3299,7 +3925,7 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.0.0: +data-urls@^1.0.0, data-urls@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== @@ -3332,14 +3958,14 @@ debug@=3.1.0: dependencies: ms "2.0.0" -debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: +debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0: +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -3388,21 +4014,14 @@ deepmerge@^2.1.1: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== -default-gateway@^2.6.0: - version "2.7.2" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f" - integrity sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ== +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== dependencies: - execa "^0.10.0" + execa "^1.0.0" ip-regex "^2.1.0" -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" - integrity sha1-836hXT4T/9m0N9M+GnW1+5eHTLg= - dependencies: - strip-bom "^2.0.0" - define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -3482,13 +4101,6 @@ detect-indent@5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" - detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -3521,6 +4133,11 @@ diagnostics@^1.1.1: enabled "1.0.x" kuler "1.0.x" +diff-sequences@^24.3.0: + version "24.3.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" + integrity sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw== + diff@^3.2.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -3578,6 +4195,13 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + dom-converter@~0.2: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -3676,10 +4300,10 @@ dotenv-expand@4.2.0: resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275" integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU= -dotenv@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.0.0.tgz#24e37c041741c5f4b25324958ebbc34bca965935" - integrity sha512-FlWbnhgjtwD+uNLUGHbMykMOYQaTivdHEmYwAKFjn6GKe/CqY0fNae93ZHTd20snh9ZLr8mTzIL9m0APQ1pjQg== +dotenv@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" + integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== duplexer@^0.1.1: version "0.1.1" @@ -3714,6 +4338,11 @@ electron-to-chromium@^1.3.103: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz#b1ccf619df7295aea17bc6951dc689632629e4a9" integrity sha512-De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g== +electron-to-chromium@^1.3.122, electron-to-chromium@^1.3.133: + version "1.3.137" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.137.tgz#ba7c88024984c038a5c5c434529aabcea7b42944" + integrity sha512-kGi32g42a8vS/WnYE7ELJyejRT7hbr3UeOOu0WeuYuQ29gCpg9Lrf6RdcTQVXSt/v0bjCfnlb/EWOOsiKpTmkw== + elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" @@ -3732,12 +4361,7 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -emoji-regex@^6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" - integrity sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ== - -emoji-regex@^7.0.1: +emoji-regex@^7.0.1, emoji-regex@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== @@ -3844,6 +4468,18 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escodegen@^1.11.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" + integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + escodegen@^1.9.1: version "1.11.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" @@ -3856,14 +4492,14 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -eslint-config-react-app@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-3.0.8.tgz#6f606828ba30bafee7d744c41cd07a3fea8f3035" - integrity sha512-Ovi6Bva67OjXrom9Y/SLJRkrGqKhMAL0XCH8BizPhjEVEhYczl2ZKiNZI2CuqO5/CJwAfMwRXAVGY0KToWr1aA== +eslint-config-react-app@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-4.0.1.tgz#23fd0fd7ea89442ef1e733f66a7207674b23c8db" + integrity sha512-ZsaoXUIGsK8FCi/x4lT2bZR5mMkL/Kgj+Lnw690rbvvUr/uiwgFiD8FcfAhkCycm7Xte6O5lYz4EqMx2vX7jgw== dependencies: - confusing-browser-globals "^1.0.6" + confusing-browser-globals "^1.0.7" -eslint-import-resolver-node@^0.3.1: +eslint-import-resolver-node@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== @@ -3871,10 +4507,10 @@ eslint-import-resolver-node@^0.3.1: debug "^2.6.9" resolve "^1.5.0" -eslint-loader@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.1.tgz#2a9251523652430bfdd643efdb0afc1a2a89546a" - integrity sha512-1GrJFfSevQdYpoDzx8mEE2TDWsb/zmFuY09l6hURg1AeFIKQOvZ+vH0UPjzmd1CZIbfTV5HUkMeBmFiDBkgIsQ== +eslint-loader@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.2.tgz#453542a1230d6ffac90e4e7cb9cadba9d851be68" + integrity sha512-rA9XiXEOilLYPOIInvVH5S/hYfyTPyxag6DZhoQOduM+3TkghAEQ3VcFO8VnX4J4qg/UIBzp72aOf/xvYmpmsg== dependencies: loader-fs-cache "^1.0.0" loader-utils "^1.0.2" @@ -3882,10 +4518,10 @@ eslint-loader@2.1.1: object-hash "^1.1.4" rimraf "^2.6.1" -eslint-module-utils@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz#546178dab5e046c8b562bbb50705e2456d7bda49" - integrity sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w== +eslint-module-utils@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" + integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== dependencies: debug "^2.6.8" pkg-dir "^2.0.0" @@ -3897,36 +4533,41 @@ eslint-plugin-flowtype@2.50.1: dependencies: lodash "^4.17.10" -eslint-plugin-import@2.14.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" - integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== +eslint-plugin-import@2.16.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.16.0.tgz#97ac3e75d0791c4fac0e15ef388510217be7f66f" + integrity sha512-z6oqWlf1x5GkHIFgrSvtmudnqM6Q60KM4KvpWi5ubonMjycLjndvd5+8VAZIsTlHC03djdgJuyKG6XO577px6A== dependencies: contains-path "^0.1.0" - debug "^2.6.8" + debug "^2.6.9" doctrine "1.5.0" - eslint-import-resolver-node "^0.3.1" - eslint-module-utils "^2.2.0" - has "^1.0.1" - lodash "^4.17.4" - minimatch "^3.0.3" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.3.0" + has "^1.0.3" + lodash "^4.17.11" + minimatch "^3.0.4" read-pkg-up "^2.0.0" - resolve "^1.6.0" + resolve "^1.9.0" -eslint-plugin-jsx-a11y@6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz#69bca4890b36dcf0fe16dd2129d2d88b98f33f88" - integrity sha512-7gSSmwb3A+fQwtw0arguwMdOdzmKUgnUcbSNlo+GjKLAQFuC2EZxWqG9XHRI8VscBJD5a8raz3RuxQNFW+XJbw== +eslint-plugin-jsx-a11y@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz#4ebba9f339b600ff415ae4166e3e2e008831cf0c" + integrity sha512-cjN2ObWrRz0TTw7vEcGQrx+YltMvZoOEx4hWU8eEERDnBIU00OTq7Vr+jA7DFKxiwLNv4tTh5Pq2GUNEa8b6+w== dependencies: aria-query "^3.0.0" array-includes "^3.0.3" ast-types-flow "^0.0.7" - axobject-query "^2.0.1" + axobject-query "^2.0.2" damerau-levenshtein "^1.0.4" - emoji-regex "^6.5.1" + emoji-regex "^7.0.2" has "^1.0.3" jsx-ast-utils "^2.0.1" +eslint-plugin-react-hooks@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.6.0.tgz#348efcda8fb426399ac7b8609607c7b4025a6f5f" + integrity sha512-lHBVRIaz5ibnIgNG07JNiAuBUeKhEf8l4etNx5vfAEwqQ5tcuK3jV9yjmopPgQDagQb7HwIuQVsE3IVcGrRnag== + eslint-plugin-react@7.12.4: version "7.12.4" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz#b1ecf26479d61aee650da612e425c53a99f48c8c" @@ -3956,6 +4597,14 @@ eslint-scope@^4.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-utils@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" @@ -3966,55 +4615,54 @@ eslint-visitor-keys@^1.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== -eslint@5.12.0: - version "5.12.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.12.0.tgz#fab3b908f60c52671fb14e996a450b96c743c859" - integrity sha512-LntwyPxtOHrsJdcSwyQKVtHofPHdv+4+mFwEe91r2V13vqpM8yLr7b1sW+Oo/yheOPkWYsYlYJCkzlFAt8KV7g== +eslint@^5.16.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" + integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== dependencies: "@babel/code-frame" "^7.0.0" - ajv "^6.5.3" + ajv "^6.9.1" chalk "^2.1.0" cross-spawn "^6.0.5" debug "^4.0.1" - doctrine "^2.1.0" - eslint-scope "^4.0.0" + doctrine "^3.0.0" + eslint-scope "^4.0.3" eslint-utils "^1.3.1" eslint-visitor-keys "^1.0.0" - espree "^5.0.0" + espree "^5.0.1" esquery "^1.0.1" esutils "^2.0.2" - file-entry-cache "^2.0.0" + file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" glob "^7.1.2" globals "^11.7.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.1.0" - js-yaml "^3.12.0" + inquirer "^6.2.2" + js-yaml "^3.13.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.5" + lodash "^4.17.11" minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" path-is-inside "^1.0.2" - pluralize "^7.0.0" progress "^2.0.0" regexpp "^2.0.1" semver "^5.5.1" strip-ansi "^4.0.0" strip-json-comments "^2.0.1" - table "^5.0.2" + table "^5.2.3" text-table "^0.2.0" -espree@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c" - integrity sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA== +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== dependencies: - acorn "^6.0.2" + acorn "^6.0.7" acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" @@ -4082,38 +4730,10 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -exec-sh@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" - integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== - dependencies: - merge "^1.2.0" - -execa@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" - integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== - dependencies: - cross-spawn "^6.0.0" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" +exec-sh@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" + integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== execa@^1.0.0: version "1.0.0" @@ -4138,13 +4758,6 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -4158,24 +4771,17 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - -expect@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98" - integrity sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w== +expect@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz#471f8ec256b7b6129ca2524b2a62f030df38718d" + integrity sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA== dependencies: + "@jest/types" "^24.8.0" ansi-styles "^3.2.0" - jest-diff "^23.6.0" - jest-get-type "^22.1.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" + jest-get-type "^24.8.0" + jest-matcher-utils "^24.8.0" + jest-message-util "^24.8.0" + jest-regex-util "^24.3.0" express@^4.16.2: version "4.16.4" @@ -4233,7 +4839,7 @@ extend@^3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.0, external-editor@^3.0.3: +external-editor@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== @@ -4242,13 +4848,6 @@ external-editor@^3.0.0, external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -4310,11 +4909,6 @@ fastest-stable-stringify@^1.0.1: resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-1.0.1.tgz#9122d406d4c9d98bea644a6b6853d5874b87b028" integrity sha1-kSLUBtTJ2YvqZEpraFPVh0uHsCg= -fastparse@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== - faye-websocket@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -4374,51 +4968,26 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" + flat-cache "^2.0.1" -file-loader@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" - integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ== +file-loader@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" + integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== dependencies: loader-utils "^1.0.2" schema-utils "^1.0.0" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - -fileset@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" - filesize@3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -4482,15 +5051,19 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" -flat-cache@^1.2.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" - integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== dependencies: - circular-json "^0.3.1" - graceful-fs "^4.1.2" - rimraf "~2.6.2" - write "^0.2.1" + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" + integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== flatten@^1.0.2: version "1.0.2" @@ -4529,7 +5102,7 @@ for-in@^1.0.1, for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.3, for-own@^0.1.4: +for-own@^0.1.3: version "0.1.5" resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= @@ -4548,10 +5121,10 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@1.0.0-alpha.6: - version "1.0.0-alpha.6" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.0.0-alpha.6.tgz#826c57048addf8a3253853615c84f3ff7beeaf45" - integrity sha512-s/V+58nLrUjuXyzYk8AL11XG8bxIirTbafDLMn26sL59HQx8QvvsRTqOkhq4MV0coIkog1jZuH/E9Abm8zFZ2g== +fork-ts-checker-webpack-plugin@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.1.1.tgz#caf2a210778fb1e171b6993ca0a40f9b6589e3b7" + integrity sha512-gqWAEMLlae/oeVnN6RWCAhesOJMswAN1MaKNqhhjXHV5O0/rTUjWI4UbgQHdlrVbCnb+xLotXmJbBlC66QmpFw== dependencies: babel-code-frame "^6.22.0" chalk "^2.4.1" @@ -4560,6 +5133,7 @@ fork-ts-checker-webpack-plugin@1.0.0-alpha.6: minimatch "^3.0.4" semver "^5.6.0" tapable "^1.0.0" + worker-rpc "^0.1.0" form-data@~2.3.2: version "2.3.3" @@ -4570,14 +5144,14 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -formik@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/formik/-/formik-1.5.1.tgz#ef5687e1ade5b1fe5f1d51435b422238aad107e9" - integrity sha512-FBWGBKQkcCE4d5b5l2fKccD9d1QxNxw/0bQTRvp3EjzA8Bnjmsm9H/Oy0375UA8P3FPmfJkF4cXLLdEqK7fP5A== +formik@1.5.7: + version "1.5.7" + resolved "https://registry.yarnpkg.com/formik/-/formik-1.5.7.tgz#2fc5fc2f0c693cdc4e8c9dad3a10eb4c4e131ff5" + integrity sha512-kZo8lS4WzfC2uivnSkE9DOuX9x+jVjCtIZOlb1A4lHGeURyuLt6eDfwGJzNlcP0lXIwmpANKzegiB8j60B54TA== dependencies: create-react-context "^0.2.2" deepmerge "^2.1.1" - hoist-non-react-statics "^2.5.5" + hoist-non-react-statics "^3.3.0" lodash "^4.17.11" lodash-es "^4.17.11" prop-types "^15.6.1" @@ -4650,15 +5224,12 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" - integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== - dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" +fsevents@2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.6.tgz#87b19df0bfb4a1a51d7ddb51b01b5f3bedb40c33" + integrity sha512-vfmKZp3XPM36DNF0qhW+Cdxk7xm7gTEHY1clv1Xq1arwRQuKZgAhw+NZNWbJBtuaNxzNXwhfdPYRrvIbjfS33A== -fsevents@^1.2.3, fsevents@^1.2.7: +fsevents@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== @@ -4722,11 +5293,6 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -4746,21 +5312,6 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= - dependencies: - is-glob "^2.0.0" - glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -4807,11 +5358,6 @@ globals@^11.1.0, globals@^11.7.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.10.0.tgz#1e09776dffda5e01816b3bb4077c8b59c24eaa50" integrity sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ== -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - globby@8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" @@ -4850,10 +5396,10 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== -graphql-code-generator@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/graphql-code-generator/-/graphql-code-generator-0.18.0.tgz#7ba877a4ddc2bc029c11e24a8c73629c9f881193" - integrity sha512-Ykw/phVHAmJ58Sp9PT0UnVpS2MtTUllyU3jRZLRiRpRTbZ5B9rsR+EmCIg7lNip0eOPAPM0jltK90k8nwpGqLA== +graphql-code-generator@0.18.2: + version "0.18.2" + resolved "https://registry.yarnpkg.com/graphql-code-generator/-/graphql-code-generator-0.18.2.tgz#080d91f8b44d26d7c69069118ac9f775f3fd5971" + integrity sha512-9ifA5T6hM6qo3RVQz7oYld1R6XYyglT/TanYDoweVEX+6iLxgi0rvGFjFcQ45bPDgLyVkQ9LEsEJuL1YxFmrDw== dependencies: "@types/babylon" "6.16.5" "@types/is-glob" "4.0.0" @@ -4868,7 +5414,7 @@ graphql-code-generator@0.18.0: common-tags "1.8.0" detect-indent "5.0.0" glob "7.1.3" - graphql-codegen-core "0.18.0" + graphql-codegen-core "0.18.2" graphql-config "2.2.1" graphql-import "0.7.1" graphql-tag-pluck "0.6.0" @@ -4878,7 +5424,7 @@ graphql-code-generator@0.18.0: inquirer "6.2.2" is-glob "4.0.0" is-valid-path "0.1.1" - js-yaml "3.12.2" + js-yaml "3.13.1" json-to-pretty-yaml "1.2.2" listr "0.14.3" listr-update-renderer "0.5.0" @@ -4889,17 +5435,17 @@ graphql-code-generator@0.18.0: request "2.88.0" valid-url "1.0.9" -graphql-codegen-add@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/graphql-codegen-add/-/graphql-codegen-add-0.18.0.tgz#507d9af526c084fe6c709d61466ceb272060c1a4" - integrity sha512-2aAj0vrmLnHDKlWLss3ri+jEbOf1rhhy+BXLZjvLgkX+abOjDJV77SWelEk2khdMS9Y0FWtyWN3YhJ1/EnN3Kw== +graphql-codegen-add@0.18.2: + version "0.18.2" + resolved "https://registry.yarnpkg.com/graphql-codegen-add/-/graphql-codegen-add-0.18.2.tgz#27625f6b6bcfe29076b5f8b02496425eeb360b46" + integrity sha512-X8i3WEjfI2YYS6giE3BZ0LlOlTnae2btuyjU1TAN7Cec+dOI5XzRz25cPRi6D1Y0++j2h480e60tgXwMORW9pA== dependencies: - graphql-codegen-core "0.18.0" + graphql-codegen-core "0.18.2" -graphql-codegen-core@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/graphql-codegen-core/-/graphql-codegen-core-0.18.0.tgz#4ddeae8b0ee06041d255b5f6e55e6f48ca9ca316" - integrity sha512-XzFJoPtsIT8ww6FzFODUlD4h8ycyIKRGIhA86KY738vDcQogMr3Ejh0ntHZq6Y/zLtEiaieXSlXb7OymVN3vbA== +graphql-codegen-core@0.18.2: + version "0.18.2" + resolved "https://registry.yarnpkg.com/graphql-codegen-core/-/graphql-codegen-core-0.18.2.tgz#205b25d2bdb20a35b986495b60d219a8d02ef266" + integrity sha512-fjfIUrDx0KDdr/jYjUs51+07DvcEc5w9tdid/bNezNzT2iJLtmnnmYLR62an3/PKUnKSOAIKLYxFIBOzsFJH9A== dependencies: chalk "2.4.2" change-case "3.1.0" @@ -4910,48 +5456,48 @@ graphql-codegen-core@0.18.0: ts-log "2.1.4" winston "3.2.1" -graphql-codegen-plugin-helpers@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/graphql-codegen-plugin-helpers/-/graphql-codegen-plugin-helpers-0.18.0.tgz#2502c35e6ae790d761be2126e8743fc1a7310f6f" - integrity sha512-Ac9XobEIgBzjsxPBtoAeMG4d9xoFtVCIsUIQr8aY3HFU9h1F5UwlOC6a0yHcUq0n8VtB/6Yu7TNveAuv0oHPSg== +graphql-codegen-plugin-helpers@0.18.2: + version "0.18.2" + resolved "https://registry.yarnpkg.com/graphql-codegen-plugin-helpers/-/graphql-codegen-plugin-helpers-0.18.2.tgz#ce03d02ced0bc28ef2f61e0a5205d85ee7e9ccdb" + integrity sha512-WZahfp95RdePwwPWxnxAHgfkXXEQXNrgX9sGrB//uGfj8lygcf7m/rNZQ4iooUzoqBEkTtJpi7bezWCieNcq2A== dependencies: - graphql-codegen-core "0.18.0" + graphql-codegen-core "0.18.2" import-from "2.1.0" -graphql-codegen-time@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/graphql-codegen-time/-/graphql-codegen-time-0.18.0.tgz#ef4b10085376f3840e4a2588f1ea73bb237c351d" - integrity sha512-j0PJEO0oghdLhxmG6cFepaq28iyuuWAW477cS+k5eB5swUD4zHLOLWVmr1EEJiqbYFxNdDiXoBj/NmwIYLjDbA== +graphql-codegen-time@0.18.2: + version "0.18.2" + resolved "https://registry.yarnpkg.com/graphql-codegen-time/-/graphql-codegen-time-0.18.2.tgz#3af20e9aa09527b8d25b95b511dcbd4dd19d1b7d" + integrity sha512-Fvsg5+6fJFleg9gxnjeuei+mJRExqhDKhk2s1uMcjiEamdD3dTAkEz+NeAAGtxdCVKNXAE0LVNWQ6QIHQfNQ+Q== dependencies: moment "2.24.0" -graphql-codegen-typescript-client@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/graphql-codegen-typescript-client/-/graphql-codegen-typescript-client-0.18.0.tgz#efce9762455b186ac5e50e4dfec3250d0299da51" - integrity sha512-zPMwAGGpVRJgaMVZJy5qaI74AA7C/Mt8vmuQ47usxWt/astLGIvQimET3yQZlhy6yxJ8M6FiVff84aZct00ceA== +graphql-codegen-typescript-client@0.18.2: + version "0.18.2" + resolved "https://registry.yarnpkg.com/graphql-codegen-typescript-client/-/graphql-codegen-typescript-client-0.18.2.tgz#5478f8af83fac8063362fe2905dac20fe02d5548" + integrity sha512-HffKYPrT5jGIRTiWCTst/X3EBpuOHsheI5tKUEf9NfrR8ySWs6PfqZO5fKCFWZOqC9xn7Y75jFXaeH8tgV5y1g== dependencies: - graphql-codegen-core "0.18.0" - graphql-codegen-plugin-helpers "0.18.0" - graphql-codegen-typescript-common "0.18.0" + graphql-codegen-core "0.18.2" + graphql-codegen-plugin-helpers "0.18.2" + graphql-codegen-typescript-common "0.18.2" -graphql-codegen-typescript-common@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/graphql-codegen-typescript-common/-/graphql-codegen-typescript-common-0.18.0.tgz#f0b7121e6d7acdf4568630cefc4ddd413621405e" - integrity sha512-eyS3CSilqiK+JPQ7qPtTGFbOBaTuBaPJL1bd3VvzXx03j0nR/6bgNsGKlTyUTDyZ90el++IhFfGGja8cBUjt9g== +graphql-codegen-typescript-common@0.18.2: + version "0.18.2" + resolved "https://registry.yarnpkg.com/graphql-codegen-typescript-common/-/graphql-codegen-typescript-common-0.18.2.tgz#1ccbb3bfa1aeb8664127f881db27c658636465da" + integrity sha512-uGGHd/vgwMlnCNOMQkvMxW8Xz0fqPGjPHROsniRNP1ragsa6KfFBrGu9toHgxv8m3MzC6ZPeoUa3wtwtS9oVnA== dependencies: change-case "3.1.0" common-tags "1.8.0" - graphql-codegen-core "0.18.0" - graphql-codegen-plugin-helpers "0.18.0" + graphql-codegen-core "0.18.2" + graphql-codegen-plugin-helpers "0.18.2" -graphql-codegen-typescript-react-apollo@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/graphql-codegen-typescript-react-apollo/-/graphql-codegen-typescript-react-apollo-0.18.0.tgz#ab41fbc0e44bcca8a65477dc1b5d38fd53e3d6da" - integrity sha512-atB6RBF6qZfnUrfrYvJQcnkTD4bImbH4RmnMDPoShMzAH1A76/xd4n2NK4b/4E2d+RKq2IyYjfXYDfIfw+ZC7w== +graphql-codegen-typescript-react-apollo@0.18.2: + version "0.18.2" + resolved "https://registry.yarnpkg.com/graphql-codegen-typescript-react-apollo/-/graphql-codegen-typescript-react-apollo-0.18.2.tgz#b821ec272420b9eacc2a9255f6b1a7760e355f7e" + integrity sha512-tJ+OwZx9CK+71Vpcm9DBqn00z/MNJrJw7tV91e2eHxAJvsFvtkN8mia567TQrI3MVgebfFYMVPo/qYuumHW12w== dependencies: - graphql-codegen-core "0.18.0" - graphql-codegen-plugin-helpers "0.18.0" - graphql-codegen-typescript-common "0.18.0" + graphql-codegen-core "0.18.2" + graphql-codegen-plugin-helpers "0.18.2" + graphql-codegen-typescript-common "0.18.2" graphql-config@2.2.1: version "2.2.1" @@ -5023,10 +5569,10 @@ graphql-tools@4.0.4: iterall "^1.1.3" uuid "^3.1.0" -graphql@14.2.1: - version "14.2.1" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.2.1.tgz#779529bf9a01e7207b977a54c20670b48ca6e95c" - integrity sha512-2PL1UbvKeSjy/lUeJqHk+eR9CvuErXoCNwJI4jm3oNFEeY+9ELqHNKO1ZuSxAkasPkpWbmT/iMRMFxd3cEL3tQ== +graphql@14.3.1: + version "14.3.1" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.3.1.tgz#b3aa50e61a841ada3c1f9ccda101c483f8e8c807" + integrity sha512-FZm7kAa3FqKdXy8YSSpAoTtyDFMIYSpCDOr+3EqlI1bxmtHu+Vv/I2vrSeT1sBOEnEniX3uo4wFhFdS/8XN6gA== dependencies: iterall "^1.2.2" @@ -5053,12 +5599,12 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz#0d6a6f34ff1f63cecec8423aa4169827bf787c3a" - integrity sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w== +handlebars@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" + integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== dependencies: - async "^2.5.0" + neo-async "^2.6.0" optimist "^0.6.1" source-map "^0.6.1" optionalDependencies: @@ -5089,11 +5635,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -5228,16 +5769,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoek@4.x.x: - version "4.2.1" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" - integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== - -hoist-non-react-statics@^2.5.5: - version "2.5.5" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" - integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== - hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" @@ -5245,19 +5776,6 @@ hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: dependencies: react-is "^16.7.0" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -hoopy@^0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" - integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== - hosted-git-info@^2.1.4: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" @@ -5300,7 +5818,7 @@ html-entities@^1.2.0: resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= -html-minifier@^3.2.3: +html-minifier@^3.5.20: version "3.5.21" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== @@ -5313,17 +5831,16 @@ html-minifier@^3.2.3: relateurl "0.2.x" uglify-js "3.4.x" -html-webpack-plugin@4.0.0-alpha.2: - version "4.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-alpha.2.tgz#7745967e389a57a098e26963f328ebe4c19b598d" - integrity sha512-tyvhjVpuGqD7QYHi1l1drMQTg5i+qRxpQEGbdnYFREgOKy7aFDf/ocQ/V1fuEDlQx7jV2zMap3Hj2nE9i5eGXw== +html-webpack-plugin@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.5.tgz#2c53083c1151bfec20479b1f8aaf0039e77b5513" + integrity sha512-y5l4lGxOW3pz3xBTFdfB9rnnrWRPVxlAhX6nrBYIcW+2k2zC3mSp/3DxlWVCMBfnO6UAnoF8OcFn0IMy6kaKAQ== dependencies: - "@types/tapable" "1.0.2" - html-minifier "^3.2.3" + html-minifier "^3.5.20" loader-utils "^1.1.0" - lodash "^4.17.10" - pretty-error "^2.0.2" - tapable "^1.0.0" + lodash "^4.17.11" + pretty-error "^2.1.1" + tapable "^1.1.0" util.promisify "1.0.0" htmlparser2@~3.3.0: @@ -5356,17 +5873,17 @@ http-parser-js@>=0.4.0: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== -http-proxy-middleware@~0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" - integrity sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q== +http-proxy-middleware@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== dependencies: - http-proxy "^1.16.2" + http-proxy "^1.17.0" is-glob "^4.0.0" - lodash "^4.17.5" - micromatch "^3.1.9" + lodash "^4.17.11" + micromatch "^3.1.10" -http-proxy@^1.16.2: +http-proxy@^1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== @@ -5413,12 +5930,12 @@ icss-replace-symbols@^1.1.0: resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= -icss-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" - integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= +icss-utils@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.0.tgz#339dbbffb9f8729a243b701e1c29d4cc58c52f0e" + integrity sha512-3DEun4VOeMvSczifM3F2cKQrDQ5Pj6WKhkOq6HD4QTnDUAq8MQRxy5TX6Sy1iY6WPBe4gQ3p5vTECjbIkglkkQ== dependencies: - postcss "^6.0.1" + postcss "^7.0.14" identity-obj-proxy@3.0.0: version "3.0.0" @@ -5464,11 +5981,6 @@ immer@1.10.0: resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== -immutable-tuple@^0.4.9: - version "0.4.10" - resolved "https://registry.yarnpkg.com/immutable-tuple/-/immutable-tuple-0.4.10.tgz#e0b1625384f514084a7a84b749a3bb26e9179929" - integrity sha512-45jheDbc3Kr5Cw8EtDD+4woGRUV0utIrJBZT8XH0TPZRfm8tzT0/sLGGzyyCCFqFMG5Pv5Igf3WY/arn6+8V9Q== - import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -5499,14 +6011,6 @@ import-from@2.1.0, import-from@^2.1.0: dependencies: resolve-from "^3.0.0" -import-local@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" - integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ== - dependencies: - pkg-dir "^2.0.0" - resolve-cwd "^2.0.0" - import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -5586,26 +6090,7 @@ inline-style-prefixer@^4.0.0: bowser "^1.7.3" css-in-js-utils "^2.0.0" -inquirer@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.1.tgz#9943fc4882161bdb0b0c9276769c75b32dbfcd52" - integrity sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg== - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.0" - figures "^2.0.0" - lodash "^4.17.10" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.1.0" - string-width "^2.1.0" - strip-ansi "^5.0.0" - through "^2.3.6" - -inquirer@6.2.2, inquirer@^6.1.0: +inquirer@6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA== @@ -5624,13 +6109,32 @@ inquirer@6.2.2, inquirer@^6.1.0: strip-ansi "^5.0.0" through "^2.3.6" -internal-ip@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-3.0.1.tgz#df5c99876e1d2eb2ea2d74f520e3f669a00ece27" - integrity sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q== +inquirer@^6.2.2: + version "6.3.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" + integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== dependencies: - default-gateway "^2.6.0" - ipaddr.js "^1.5.2" + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.11" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +internal-ip@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" @@ -5664,7 +6168,7 @@ ipaddr.js@1.8.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= -ipaddr.js@^1.5.2: +ipaddr.js@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== @@ -5720,12 +6224,12 @@ is-callable@^1.1.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: - ci-info "^1.5.0" + ci-info "^2.0.0" is-color-stop@^1.0.0: version "1.1.0" @@ -5781,18 +6285,6 @@ is-directory@^0.3.1: resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -5834,10 +6326,10 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= -is-generator-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" - integrity sha1-lp1J4bszKfa7fwkIm+JleLLd1Go= +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-glob@4.0.0, is-glob@^4.0.0: version "4.0.0" @@ -5846,7 +6338,7 @@ is-glob@4.0.0, is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" -is-glob@^2.0.0, is-glob@^2.0.1: +is-glob@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= @@ -5874,13 +6366,6 @@ is-lower-case@^1.1.0: dependencies: lower-case "^1.1.0" -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -5888,11 +6373,6 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -5936,16 +6416,6 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -6036,13 +6506,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isemail@3.x.x: - version "3.2.0" - resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c" - integrity sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg== - dependencies: - punycode "2.x.x" - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -6073,423 +6536,439 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-api@^1.3.1: - version "1.3.7" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa" - integrity sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA== - dependencies: - async "^2.1.4" - fileset "^2.0.2" - istanbul-lib-coverage "^1.2.1" - istanbul-lib-hook "^1.2.2" - istanbul-lib-instrument "^1.10.2" - istanbul-lib-report "^1.1.5" - istanbul-lib-source-maps "^1.2.6" - istanbul-reports "^1.5.1" - js-yaml "^3.7.0" - mkdirp "^0.5.1" - once "^1.4.0" +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== -istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" - integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== - -istanbul-lib-hook@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" - integrity sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw== +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== dependencies: - append-transform "^0.4.0" + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" -istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" - integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.2.1" - semver "^5.3.0" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" -istanbul-lib-report@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" - integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== dependencies: - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" -istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f" - integrity sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg== +istanbul-reports@^2.1.1: + version "2.2.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" + integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== dependencies: - debug "^3.1.0" - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" - -istanbul-reports@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" - integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== - dependencies: - handlebars "^4.0.3" + handlebars "^4.1.2" iterall@^1.1.3, iterall@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" integrity sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA== -jest-changed-files@^23.4.2: - version "23.4.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" - integrity sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA== +jest-changed-files@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz#7e7eb21cf687587a85e50f3d249d1327e15b157b" + integrity sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug== dependencies: + "@jest/types" "^24.8.0" + execa "^1.0.0" throat "^4.0.0" -jest-cli@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.6.0.tgz#61ab917744338f443ef2baa282ddffdd658a5da4" - integrity sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ== +jest-cli@^24.7.1: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989" + integrity sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA== dependencies: - ansi-escapes "^3.0.0" + "@jest/core" "^24.8.0" + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" chalk "^2.0.1" exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.1.11" - import-local "^1.0.0" - is-ci "^1.0.10" - istanbul-api "^1.3.1" - istanbul-lib-coverage "^1.2.0" - istanbul-lib-instrument "^1.10.1" - istanbul-lib-source-maps "^1.2.4" - jest-changed-files "^23.4.2" - jest-config "^23.6.0" - jest-environment-jsdom "^23.4.0" - jest-get-type "^22.1.0" - jest-haste-map "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - jest-resolve-dependencies "^23.6.0" - jest-runner "^23.6.0" - jest-runtime "^23.6.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - jest-watcher "^23.4.0" - jest-worker "^23.2.0" - micromatch "^2.3.11" - node-notifier "^5.2.1" - prompts "^0.1.9" - realpath-native "^1.0.0" - rimraf "^2.5.4" - slash "^1.0.0" - string-length "^2.0.0" - strip-ansi "^4.0.0" - which "^1.2.12" - yargs "^11.0.0" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.8.0" + jest-util "^24.8.0" + jest-validate "^24.8.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^12.0.2" -jest-config@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.6.0.tgz#f82546a90ade2d8c7026fbf6ac5207fc22f8eb1d" - integrity sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ== +jest-config@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz#77db3d265a6f726294687cbbccc36f8a76ee0f4f" + integrity sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw== dependencies: - babel-core "^6.0.0" - babel-jest "^23.6.0" + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.8.0" + "@jest/types" "^24.8.0" + babel-jest "^24.8.0" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^23.4.0" - jest-environment-node "^23.4.0" - jest-get-type "^22.1.0" - jest-jasmine2 "^23.6.0" - jest-regex-util "^23.3.0" - jest-resolve "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - micromatch "^2.3.11" - pretty-format "^23.6.0" + jest-environment-jsdom "^24.8.0" + jest-environment-node "^24.8.0" + jest-get-type "^24.8.0" + jest-jasmine2 "^24.8.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.8.0" + jest-util "^24.8.0" + jest-validate "^24.8.0" + micromatch "^3.1.10" + pretty-format "^24.8.0" + realpath-native "^1.1.0" -jest-diff@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d" - integrity sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g== +jest-diff@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz#146435e7d1e3ffdf293d53ff97e193f1d1546172" + integrity sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g== dependencies: chalk "^2.0.1" - diff "^3.2.0" - jest-get-type "^22.1.0" - pretty-format "^23.6.0" + diff-sequences "^24.3.0" + jest-get-type "^24.8.0" + pretty-format "^24.8.0" -jest-docblock@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" - integrity sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c= +jest-docblock@^24.3.0: + version "24.3.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz#b9c32dac70f72e4464520d2ba4aec02ab14db5dd" + integrity sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg== dependencies: detect-newline "^2.1.0" -jest-each@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.6.0.tgz#ba0c3a82a8054387016139c733a05242d3d71575" - integrity sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg== +jest-each@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz#a05fd2bf94ddc0b1da66c6d13ec2457f35e52775" + integrity sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA== dependencies: + "@jest/types" "^24.8.0" chalk "^2.0.1" - pretty-format "^23.6.0" + jest-get-type "^24.8.0" + jest-util "^24.8.0" + pretty-format "^24.8.0" -jest-environment-jsdom@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz#056a7952b3fea513ac62a140a2c368c79d9e6023" - integrity sha1-BWp5UrP+pROsYqFAosNox52eYCM= +jest-environment-jsdom-fourteen@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-0.1.0.tgz#aad6393a9d4b565b69a609109bf469f62bf18ccc" + integrity sha512-4vtoRMg7jAstitRzL4nbw83VmGH8Rs13wrND3Ud2o1fczDhMUF32iIrNKwYGgeOPUdfvZU4oy8Bbv+ni1fgVCA== dependencies: - jest-mock "^23.2.0" - jest-util "^23.4.0" + jest-mock "^24.5.0" + jest-util "^24.5.0" + jsdom "^14.0.0" + +jest-environment-jsdom@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz#300f6949a146cabe1c9357ad9e9ecf9f43f38857" + integrity sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ== + dependencies: + "@jest/environment" "^24.8.0" + "@jest/fake-timers" "^24.8.0" + "@jest/types" "^24.8.0" + jest-mock "^24.8.0" + jest-util "^24.8.0" jsdom "^11.5.1" -jest-environment-node@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.4.0.tgz#57e80ed0841dea303167cce8cd79521debafde10" - integrity sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA= +jest-environment-node@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz#d3f726ba8bc53087a60e7a84ca08883a4c892231" + integrity sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q== dependencies: - jest-mock "^23.2.0" - jest-util "^23.4.0" + "@jest/environment" "^24.8.0" + "@jest/fake-timers" "^24.8.0" + "@jest/types" "^24.8.0" + jest-mock "^24.8.0" + jest-util "^24.8.0" -jest-get-type@^22.1.0: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" - integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w== +jest-get-type@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz#a7440de30b651f5a70ea3ed7ff073a32dfe646fc" + integrity sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ== -jest-haste-map@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.6.0.tgz#2e3eb997814ca696d62afdb3f2529f5bbc935e16" - integrity sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg== +jest-haste-map@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.0.tgz#51794182d877b3ddfd6e6d23920e3fe72f305800" + integrity sha512-ZBPRGHdPt1rHajWelXdqygIDpJx8u3xOoLyUBWRW28r3tagrgoepPrzAozW7kW9HrQfhvmiv1tncsxqHJO1onQ== dependencies: + "@jest/types" "^24.8.0" + anymatch "^2.0.0" fb-watchman "^2.0.0" - graceful-fs "^4.1.11" + graceful-fs "^4.1.15" invariant "^2.2.4" - jest-docblock "^23.2.0" - jest-serializer "^23.0.1" - jest-worker "^23.2.0" - micromatch "^2.3.11" - sane "^2.0.0" + jest-serializer "^24.4.0" + jest-util "^24.8.0" + jest-worker "^24.6.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" -jest-jasmine2@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz#840e937f848a6c8638df24360ab869cc718592e0" - integrity sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ== +jest-jasmine2@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz#a9c7e14c83dd77d8b15e820549ce8987cc8cd898" + integrity sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong== dependencies: - babel-traverse "^6.0.0" + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.8.0" + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" chalk "^2.0.1" co "^4.6.0" - expect "^23.6.0" - is-generator-fn "^1.0.0" - jest-diff "^23.6.0" - jest-each "^23.6.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - pretty-format "^23.6.0" + expect "^24.8.0" + is-generator-fn "^2.0.0" + jest-each "^24.8.0" + jest-matcher-utils "^24.8.0" + jest-message-util "^24.8.0" + jest-runtime "^24.8.0" + jest-snapshot "^24.8.0" + jest-util "^24.8.0" + pretty-format "^24.8.0" + throat "^4.0.0" -jest-leak-detector@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz#e4230fd42cf381a1a1971237ad56897de7e171de" - integrity sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg== +jest-leak-detector@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz#c0086384e1f650c2d8348095df769f29b48e6980" + integrity sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g== dependencies: - pretty-format "^23.6.0" + pretty-format "^24.8.0" -jest-matcher-utils@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz#726bcea0c5294261a7417afb6da3186b4b8cac80" - integrity sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog== +jest-matcher-utils@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz#2bce42204c9af12bde46f83dc839efe8be832495" + integrity sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw== dependencies: chalk "^2.0.1" - jest-get-type "^22.1.0" - pretty-format "^23.6.0" + jest-diff "^24.8.0" + jest-get-type "^24.8.0" + pretty-format "^24.8.0" -jest-message-util@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" - integrity sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8= +jest-message-util@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz#0d6891e72a4beacc0292b638685df42e28d6218b" + integrity sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g== dependencies: - "@babel/code-frame" "^7.0.0-beta.35" + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" + "@types/stack-utils" "^1.0.1" chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" + micromatch "^3.1.10" + slash "^2.0.0" stack-utils "^1.0.1" -jest-mock@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" - integrity sha1-rRxg8p6HGdR8JuETgJi20YsmETQ= - -jest-pnp-resolver@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.0.2.tgz#470384ae9ea31f72136db52618aa4010ff23b715" - integrity sha512-H2DvUlwdMedNGv4FOliPDnxani6ATWy70xe2eckGJgkLoMaWzRPqpSlc5ShqX0Ltk5OhRQvPQY2LLZPOpgcc7g== - -jest-regex-util@^23.3.0: - version "23.3.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" - integrity sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U= - -jest-resolve-dependencies@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz#b4526af24c8540d9a3fab102c15081cf509b723d" - integrity sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA== +jest-mock@^24.5.0, jest-mock@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz#2f9d14d37699e863f1febf4e4d5a33b7fdbbde56" + integrity sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A== dependencies: - jest-regex-util "^23.3.0" - jest-snapshot "^23.6.0" + "@jest/types" "^24.8.0" -jest-resolve@23.6.0, jest-resolve@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.6.0.tgz#cf1d1a24ce7ee7b23d661c33ba2150f3aebfa0ae" - integrity sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA== +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-regex-util@^24.3.0: + version "24.3.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" + integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== + +jest-resolve-dependencies@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz#19eec3241f2045d3f990dba331d0d7526acff8e0" + integrity sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw== dependencies: + "@jest/types" "^24.8.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.8.0" + +jest-resolve@24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.7.1.tgz#e4150198299298380a75a9fd55043fa3b9b17fde" + integrity sha512-Bgrc+/UUZpGJ4323sQyj85hV9d+ANyPNu6XfRDUcyFNX1QrZpSoM0kE4Mb2vZMAYTJZsBFzYe8X1UaOkOELSbw== + dependencies: + "@jest/types" "^24.7.0" browser-resolve "^1.11.3" chalk "^2.0.1" - realpath-native "^1.0.0" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" -jest-runner@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.6.0.tgz#3894bd219ffc3f3cb94dc48a4170a2e6f23a5a38" - integrity sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA== +jest-resolve@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f" + integrity sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw== dependencies: + "@jest/types" "^24.8.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz#4f9ae07b767db27b740d7deffad0cf67ccb4c5bb" + integrity sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.8.0" + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" + chalk "^2.4.2" exit "^0.1.2" - graceful-fs "^4.1.11" - jest-config "^23.6.0" - jest-docblock "^23.2.0" - jest-haste-map "^23.6.0" - jest-jasmine2 "^23.6.0" - jest-leak-detector "^23.6.0" - jest-message-util "^23.4.0" - jest-runtime "^23.6.0" - jest-util "^23.4.0" - jest-worker "^23.2.0" + graceful-fs "^4.1.15" + jest-config "^24.8.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.8.0" + jest-jasmine2 "^24.8.0" + jest-leak-detector "^24.8.0" + jest-message-util "^24.8.0" + jest-resolve "^24.8.0" + jest-runtime "^24.8.0" + jest-util "^24.8.0" + jest-worker "^24.6.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.6.0.tgz#059e58c8ab445917cd0e0d84ac2ba68de8f23082" - integrity sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw== +jest-runtime@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz#05f94d5b05c21f6dc54e427cd2e4980923350620" + integrity sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA== dependencies: - babel-core "^6.0.0" - babel-plugin-istanbul "^4.1.6" + "@jest/console" "^24.7.1" + "@jest/environment" "^24.8.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.8.0" + "@jest/types" "^24.8.0" + "@types/yargs" "^12.0.2" chalk "^2.0.1" - convert-source-map "^1.4.0" exit "^0.1.2" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.11" - jest-config "^23.6.0" - jest-haste-map "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - jest-resolve "^23.6.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - micromatch "^2.3.11" - realpath-native "^1.0.0" - slash "^1.0.0" - strip-bom "3.0.0" - write-file-atomic "^2.1.0" - yargs "^11.0.0" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.8.0" + jest-haste-map "^24.8.0" + jest-message-util "^24.8.0" + jest-mock "^24.8.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.8.0" + jest-snapshot "^24.8.0" + jest-util "^24.8.0" + jest-validate "^24.8.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^12.0.2" -jest-serializer@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" - integrity sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU= +jest-serializer@^24.4.0: + version "24.4.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" + integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q== -jest-snapshot@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a" - integrity sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg== +jest-snapshot@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz#3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6" + integrity sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg== dependencies: - babel-types "^6.0.0" + "@babel/types" "^7.0.0" + "@jest/types" "^24.8.0" chalk "^2.0.1" - jest-diff "^23.6.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-resolve "^23.6.0" + expect "^24.8.0" + jest-diff "^24.8.0" + jest-matcher-utils "^24.8.0" + jest-message-util "^24.8.0" + jest-resolve "^24.8.0" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^23.6.0" + pretty-format "^24.8.0" semver "^5.5.0" -jest-util@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" - integrity sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE= +jest-util@^24.5.0, jest-util@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz#41f0e945da11df44cc76d64ffb915d0716f46cd1" + integrity sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA== dependencies: - callsites "^2.0.0" + "@jest/console" "^24.7.1" + "@jest/fake-timers" "^24.8.0" + "@jest/source-map" "^24.3.0" + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" + callsites "^3.0.0" chalk "^2.0.1" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - jest-message-util "^23.4.0" + graceful-fs "^4.1.15" + is-ci "^2.0.0" mkdirp "^0.5.1" - slash "^1.0.0" + slash "^2.0.0" source-map "^0.6.0" -jest-validate@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474" - integrity sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A== +jest-validate@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz#624c41533e6dfe356ffadc6e2423a35c2d3b4849" + integrity sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA== dependencies: + "@jest/types" "^24.8.0" + camelcase "^5.0.0" chalk "^2.0.1" - jest-get-type "^22.1.0" + jest-get-type "^24.8.0" leven "^2.1.0" - pretty-format "^23.6.0" + pretty-format "^24.8.0" -jest-watch-typeahead@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.2.1.tgz#6c40f232996ca6c39977e929e9f79b189e7d87e4" - integrity sha512-xdhEtKSj0gmnkDQbPTIHvcMmXNUDzYpHLEJ5TFqlaI+schi2NI96xhWiZk9QoesAS7oBmKwWWsHazTrYl2ORgg== +jest-watch-typeahead@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.3.0.tgz#f56d9ee17ea71ecbf8253fed213df3185a1584c9" + integrity sha512-+uOtlppt9ysST6k6ZTqsPI0WNz2HLa8bowiZylZoQCQaAVn7XsVmHhZREkz73FhKelrFrpne4hQQjdq42nFEmA== dependencies: ansi-escapes "^3.0.0" chalk "^2.4.1" - jest-watcher "^23.1.0" + jest-watcher "^24.3.0" slash "^2.0.0" string-length "^2.0.0" strip-ansi "^5.0.0" -jest-watcher@^23.1.0, jest-watcher@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c" - integrity sha1-0uKM50+NrWxq/JIrksq+9u0FyRw= +jest-watcher@^24.3.0, jest-watcher@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz#58d49915ceddd2de85e238f6213cef1c93715de4" + integrity sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw== dependencies: + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" + "@types/yargs" "^12.0.9" ansi-escapes "^3.0.0" chalk "^2.0.1" + jest-util "^24.8.0" string-length "^2.0.0" -jest-worker@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" - integrity sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk= +jest-worker@^24.6.0: + version "24.6.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" + integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== dependencies: merge-stream "^1.0.1" + supports-color "^6.1.0" -jest@23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-23.6.0.tgz#ad5835e923ebf6e19e7a1d7529a432edfee7813d" - integrity sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw== +jest@24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.7.1.tgz#0d94331cf510c75893ee32f87d7321d5bf8f2501" + integrity sha512-AbvRar5r++izmqo5gdbAjTeA6uNRGoNRuj5vHB0OnDXo2DXWZJVuaObiGgtlvhKb+cWy2oYbQSfxv7Q7GjnAtA== dependencies: - import-local "^1.0.0" - jest-cli "^23.6.0" - -joi@^11.1.1: - version "11.4.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-11.4.0.tgz#f674897537b625e9ac3d0b7e1604c828ad913ccb" - integrity sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA== - dependencies: - hoek "4.x.x" - isemail "3.x.x" - topo "2.x.x" + import-local "^2.0.0" + jest-cli "^24.7.1" js-base64@^2.1.8: version "2.5.1" @@ -6511,15 +6990,15 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@3.12.2: - version "3.12.2" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.2.tgz#ef1d067c5a9d9cb65bd72f285b5d8105c77f14fc" - integrity sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q== +js-yaml@3.13.1, js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== dependencies: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.10.0, js-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0: +js-yaml@^3.10.0, js-yaml@^3.12.0, js-yaml@^3.9.0: version "3.12.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" integrity sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA== @@ -6572,10 +7051,37 @@ jsdom@^11.5.1: ws "^5.2.0" xml-name-validator "^3.0.0" -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= +jsdom@^14.0.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" + integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== + dependencies: + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.1.3" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + xml-name-validator "^3.0.0" jsesc@^2.5.1: version "2.5.2" @@ -6632,11 +7138,6 @@ json3@^3.3.2: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -6716,10 +7217,10 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== -kleur@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" - integrity sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ== +kleur@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== kuler@1.0.x: version "1.0.1" @@ -6850,6 +7351,16 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.0.0" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + loader-fs-cache@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc" @@ -6863,7 +7374,7 @@ loader-runner@^2.3.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: +loader-utils@1.2.3, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -6905,21 +7416,6 @@ lodash._reinterpolate@~3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= -lodash.assign@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.clonedeep@^4.3.2: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" @@ -6930,11 +7426,6 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.mergewith@^4.6.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" - integrity sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ== - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -6960,6 +7451,11 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "~3.0.0" +lodash.unescape@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -7058,6 +7554,14 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -7065,6 +7569,11 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -7089,11 +7598,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -7113,13 +7617,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - mem@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.1.0.tgz#aeb9be2d21f47e78af29e4ac5978e8afa2ca5b8a" @@ -7129,7 +7626,7 @@ mem@^4.0.0: mimic-fn "^1.0.0" p-is-promise "^2.0.0" -memory-fs@^0.4.0, memory-fs@~0.4.1: +memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -7179,36 +7676,17 @@ merge2@^1.2.3: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== -merge@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== - methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -7257,11 +7735,16 @@ mime@1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== -mime@^2.0.3, mime@^2.3.1: +mime@^2.0.3: version "2.4.0" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== +mime@^2.4.2: + version "2.4.3" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.3.tgz#229687331e86f68924e6cb59e1cdd937f18275fe" + integrity sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw== + mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" @@ -7286,7 +7769,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: +minimatch@3.0.4, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -7407,7 +7890,12 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -nan@^2.10.0, nan@^2.9.2: +nan@^2.13.2: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nan@^2.9.2: version "2.12.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== @@ -7467,6 +7955,11 @@ neo-async@^2.5.0: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== +neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -7549,6 +8042,11 @@ node-libs-browser@^2.0.0: util "^0.11.0" vm-browserify "0.0.4" +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + node-notifier@^5.2.1: version "5.4.0" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a" @@ -7576,6 +8074,13 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" +node-releases@^1.1.13, node-releases@^1.1.19: + version "1.1.21" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.21.tgz#46c86f9adaceae4d63c75d3c2f2e6eee618e55f3" + integrity sha512-TwnURTCjc8a+ElJUjmDqU6+12jhli1Q61xOQmdZ7ECZVBZuQpN/1UnembiIHDM1wCcfLvh5wrWXUF5H6ufX64Q== + dependencies: + semver "^5.3.0" + node-releases@^1.1.3: version "1.1.7" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.7.tgz#b09a10394d0ed8f7778f72bb861dde68b146303b" @@ -7583,10 +8088,10 @@ node-releases@^1.1.3: dependencies: semver "^5.3.0" -node-sass@4.11.0: - version "4.11.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.11.0.tgz#183faec398e9cbe93ba43362e2768ca988a6369a" - integrity sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA== +node-sass@4.12.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" + integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -7595,12 +8100,10 @@ node-sass@4.11.0: get-stdin "^4.0.1" glob "^7.0.3" in-publish "^2.0.0" - lodash.assign "^4.2.0" - lodash.clonedeep "^4.3.2" - lodash.mergewith "^4.6.0" + lodash "^4.17.11" meow "^3.7.0" mkdirp "^0.5.1" - nan "^2.10.0" + nan "^2.13.2" node-gyp "^3.8.0" npmlog "^4.0.0" request "^2.88.0" @@ -7633,7 +8136,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -7712,6 +8215,11 @@ nwsapi@^2.0.7: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.0.tgz#781065940aed90d9bb01ca5d0ce0fcf81c32712f" integrity sha512-ZG3bLAvdHmhIjaQ/Db1qvBxsGvFMLIRpQszyqbg31VJ53UP++uZX1/gf3Ut96pdwN9AuDwlMqIYLm0UPCdUeHg== +nwsapi@^2.1.3: + version "2.1.4" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" + integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -7776,14 +8284,6 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.2" es-abstract "^1.5.1" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -7844,12 +8344,12 @@ opn@5.4.0, opn@^5.1.0: dependencies: is-wsl "^1.1.0" -optimism@^0.6.9: - version "0.6.9" - resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.6.9.tgz#19258ff8b3be0cea29ac35f06bff818e026e30bb" - integrity sha512-xoQm2lvXbCA9Kd7SCx6y713Y7sZ6fUc5R6VYpoL5M6svKJbTuvtNopexK8sO8K4s0EOUYHuPN2+yAEsNyRggkQ== +optimism@^0.9.0: + version "0.9.5" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.9.5.tgz#b8b5dc9150e97b79ddbf2d2c6c0e44de4d255527" + integrity sha512-lNvmuBgONAGrUbj/xpH69FjMOz1d0jvMNoOCKyVynUPzq2jgVlGL4jFYJqrUHzUfBv+jAFSCP61x5UkfbduYJA== dependencies: - immutable-tuple "^0.4.9" + "@wry/context" "^0.4.0" optimist@^0.6.1: version "0.6.1" @@ -7903,15 +8403,6 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - os-locale@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -7921,7 +8412,7 @@ os-locale@^3.0.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -7939,6 +8430,13 @@ p-defer@^1.0.0: resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -7987,6 +8485,11 @@ p-map@^2.0.0: resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.0.0.tgz#be18c5a5adeb8e156460651421aceca56c213a50" integrity sha512-GO107XdrSUmtHxVoi60qc9tUl/KkNKm+X2CF4P9amalpGxv5YqVPJNfSb0wcA+syCopkZvYYIzW8OVTQW59x/w== +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -8037,16 +8540,6 @@ parse-asn1@^5.0.0: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -8067,7 +8560,7 @@ parse5@4.0.0: resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== -parse5@^5.0.0: +parse5@5.1.0, parse5@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== @@ -8119,7 +8612,7 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= @@ -8134,7 +8627,7 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-parse@^1.0.5, path-parse@^1.0.6: +path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== @@ -8200,6 +8693,11 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -8212,6 +8710,13 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + pkg-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" @@ -8240,11 +8745,6 @@ pkg-up@2.0.0: dependencies: find-up "^2.1.0" -pluralize@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== - pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -8276,7 +8776,7 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-attribute-case-insensitive@^4.0.0: +postcss-attribute-case-insensitive@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.1.tgz#b2a721a0d279c2f9103a36331c88981526428cc7" integrity sha512-L2YKB3vF4PetdTIthQVeT+7YiSzMoNMLLYxPXXppOOP7NoazEAy45sh2LvJ8leCQjfBcfkYQs8TtCcQjeZTp8A== @@ -8284,6 +8784,13 @@ postcss-attribute-case-insensitive@^4.0.0: postcss "^7.0.2" postcss-selector-parser "^5.0.0" +postcss-browser-comments@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-2.0.0.tgz#dc48d6a8ddbff188a80a000b7393436cb18aed88" + integrity sha512-xGG0UvoxwBc4Yx4JX3gc0RuDl1kc4bVihCzzk6UC72YPfq5fu3c717Nu8Un3nvnq1BJ31gBnFXIG/OaUTnpHgA== + dependencies: + postcss "^7.0.2" + postcss-calc@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" @@ -8584,36 +9091,37 @@ postcss-minify-selectors@^4.0.1: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -postcss-modules-extract-imports@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" - integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== dependencies: - postcss "^6.0.1" + postcss "^7.0.5" -postcss-modules-local-by-default@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= +postcss-modules-local-by-default@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" + integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA== dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + postcss-value-parser "^3.3.1" -postcss-modules-scope@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= +postcss-modules-scope@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb" + integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A== dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" -postcss-modules-values@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= +postcss-modules-values@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" + integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== dependencies: icss-replace-symbols "^1.1.0" - postcss "^6.0.1" + postcss "^7.0.6" postcss-nesting@^7.0.0: version "7.0.0" @@ -8703,6 +9211,16 @@ postcss-normalize-whitespace@^4.0.1: postcss "^7.0.0" postcss-value-parser "^3.0.0" +postcss-normalize@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-7.0.1.tgz#eb51568d962b8aa61a8318383c8bb7e54332282e" + integrity sha512-NOp1fwrG+6kVXWo7P9SizCHX6QvioxFD/hZcI2MLxPmVnFJFC0j0DDpIuNw2tUDeCFMni59gCVgeJ1/hYhj2OQ== + dependencies: + "@csstools/normalize.css" "^9.0.1" + browserslist "^4.1.1" + postcss "^7.0.2" + postcss-browser-comments "^2.0.0" + postcss-ordered-values@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz#2e3b432ef3e489b18333aeca1f1295eb89be9fc2" @@ -8734,20 +9252,20 @@ postcss-place@^4.0.1: postcss "^7.0.2" postcss-values-parser "^2.0.0" -postcss-preset-env@6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.5.0.tgz#a14b8f6e748b2a3a4a02a56f36c390f30073b9e1" - integrity sha512-RdsIrYJd9p9AouQoJ8dFP5ksBJEIegA4q4WzJDih8nevz3cZyIP/q1Eaw3pTVpUAu3n7Y32YmvAW3X07mSRGkw== +postcss-preset-env@6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.6.0.tgz#642e7d962e2bdc2e355db117c1eb63952690ed5b" + integrity sha512-I3zAiycfqXpPIFD6HXhLfWXIewAWO8emOKz+QSsxaUZb9Dp8HbF5kUf+4Wy/AxR33o+LRoO8blEWCHth0ZsCLA== dependencies: - autoprefixer "^9.4.2" - browserslist "^4.3.5" - caniuse-lite "^1.0.30000918" + autoprefixer "^9.4.9" + browserslist "^4.4.2" + caniuse-lite "^1.0.30000939" css-blank-pseudo "^0.1.4" css-has-pseudo "^0.10.0" css-prefers-color-scheme "^3.1.1" cssdb "^4.3.0" - postcss "^7.0.6" - postcss-attribute-case-insensitive "^4.0.0" + postcss "^7.0.14" + postcss-attribute-case-insensitive "^4.0.1" postcss-color-functional-notation "^2.0.1" postcss-color-gray "^5.0.0" postcss-color-hex-alpha "^5.0.2" @@ -8853,6 +9371,15 @@ postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.3, postcss-sel indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss-svgo@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.1.tgz#5628cdb38f015de6b588ce6d0bf0724b492b581d" @@ -8886,15 +9413,6 @@ postcss-values-parser@^2.0.0: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@^6.0.1, postcss@^6.0.23: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== - dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" - postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6: version "7.0.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5" @@ -8909,22 +9427,17 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - prettier@1.16.4: version "1.16.4" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717" integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g== -pretty-bytes@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" - integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk= +pretty-bytes@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.2.0.tgz#96c92c6e95a0b35059253fb33c03e260d40f5a1f" + integrity sha512-ujANBhiUsl9AhREUDUEY1GPOharMGm8x8juS7qOHybcLi7XsKfrYQ88hSly1l2i0klXHTDYrlL8ihMCG55Dc3w== -pretty-error@^2.0.2: +pretty-error@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= @@ -8932,15 +9445,17 @@ pretty-error@^2.0.2: renderkid "^2.0.1" utila "~0.4" -pretty-format@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" - integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== +pretty-format@^24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2" + integrity sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw== dependencies: - ansi-regex "^3.0.0" + "@jest/types" "^24.8.0" + ansi-regex "^4.0.0" ansi-styles "^3.2.0" + react-is "^16.8.4" -private@^0.1.6, private@^0.1.8: +private@^0.1.6: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -8979,13 +9494,13 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prompts@^0.1.9: - version "0.1.14" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" - integrity sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w== +prompts@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.1.0.tgz#bf90bc71f6065d255ea2bdc0fe6520485c1b45db" + integrity sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg== dependencies: - kleur "^2.0.1" - sisteransi "^0.1.1" + kleur "^3.0.2" + sisteransi "^1.0.0" prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.7.2, prop-types@~15.7.2: version "15.7.2" @@ -9076,16 +9591,16 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -9096,7 +9611,7 @@ qs@6.5.2, qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -query-string@*, query-string@6.4.2: +query-string@*: version "6.4.2" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.4.2.tgz#8be1dbd105306aebf86022144f575a29d516b713" integrity sha512-DfJqAen17LfLA3rQ+H5S4uXphrF+ANU1lT2ijds4V/Tj4gZxA3gx5/tg1bz7kYCmwna7LyJNCYqO7jNRzo3aLw== @@ -9105,6 +9620,15 @@ query-string@*, query-string@6.4.2: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" +query-string@6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.5.0.tgz#2e1a70125af01f6f04573692d02c09302a1d8bfc" + integrity sha512-TYC4hDjZSvVxLMEucDMySkuAS9UIzSbAiYGyA9GWCjLKB8fQpviFbjd20fD7uejCDxZS+ftSdBKE6DS+xucJFg== + dependencies: + decode-uri-component "^0.2.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -9127,15 +9651,6 @@ raf@3.4.1: dependencies: performance-now "^2.1.0" -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" @@ -9151,7 +9666,12 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.0.3, range-parser@~1.2.0: +range-parser@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= @@ -9176,65 +9696,66 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-apollo-hooks@0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/react-apollo-hooks/-/react-apollo-hooks-0.4.4.tgz#542a4ba975ceb16daa232fe7e3271680eff8e225" - integrity sha512-UavpOHbqGp4r0Nsqa8ShybGb6vyGcwAaxSjO/VRmj3wcjKx+Bw6Br+wu+1rkvYRSkeDYppq/HYNzMX5oIU+5/A== +react-apollo-hooks@0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/react-apollo-hooks/-/react-apollo-hooks-0.4.5.tgz#7fe6a8ddfdc92df2da664d399ea77a0da4a10bad" + integrity sha512-fq04h88hg4ONtlzxYInmv7Okqqstzk3UCp55jHWOlIO2lFKoZPhQrtCz7A+TrcRu8GGwtG1SsioRKN8kIQaAOQ== dependencies: lodash "^4.17.11" -react-apollo@2.5.3: - version "2.5.3" - resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-2.5.3.tgz#9844a522894a6e0392f6a982c6052348d9a4ae12" - integrity sha512-sBh7M3h4xdbck8NFnn1nlUG0mD0hCTeIcvov4A8hagxjOyTVSakoum+DP6rYNaHuAZFDS3oNurNNSbGZmgoU6g== +react-apollo@2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-2.5.6.tgz#98a59d0eea31432ed001e6a033e11a58139ffc31" + integrity sha512-WWX5UykTtmW6+awjqEsSWSdvVyZv/vsavUgpdI4ddn4CBdz47INC+iTdJBnYaUFMB24GmqjFFSoSd98gu1xqKA== dependencies: - apollo-utilities "^1.2.1" + apollo-utilities "^1.3.0" hoist-non-react-statics "^3.3.0" lodash.isequal "^4.5.0" prop-types "^15.7.2" - ts-invariant "^0.3.2" + ts-invariant "^0.4.2" tslib "^1.9.3" -react-app-polyfill@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-0.2.2.tgz#a903b61a8bfd9c5e5f16fc63bebe44d6922a44fb" - integrity sha512-mAYn96B/nB6kWG87Ry70F4D4rsycU43VYTj3ZCbKP+SLJXwC0x6YCbwcICh3uW8/C9s1VgP197yx+w7SCWeDdQ== +react-app-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.1.tgz#809a858e44f9564c7f4205e173076f90048274f1" + integrity sha512-LbVpT1NdzTdDDs7xEZdebjDrqsvKi5UyVKUQqtTYYNyC1JJYVAwNQWe4ybWvoT2V2WW9PGVO2u5Y6aVj4ER/Ow== dependencies: - core-js "2.6.4" + core-js "3.0.1" object-assign "4.1.1" promise "8.0.2" raf "3.4.1" + regenerator-runtime "0.13.2" whatwg-fetch "3.0.0" -react-dev-utils@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-8.0.0.tgz#7c5b227a45a32ea8ff7fbc318f336cf9e2c6e34c" - integrity sha512-TK8cj7eghvxfe7bfBluLGpI/upo4EXC+G74hYmPucAG8C2XcbT+vKnlWPwLnABb75Zk+mR6D556Da+yvDjljrw== +react-dev-utils@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-9.0.1.tgz#5c03d85a0b2537d0c46af7165c24a7dfb274bef2" + integrity sha512-pnaeMo/Pxel8aZpxk1WwxT3uXxM3tEwYvsjCYn5R7gNxjhN1auowdcLDzFB8kr7rafAj2rxmvfic/fbac5CzwQ== dependencies: "@babel/code-frame" "7.0.0" address "1.0.3" - browserslist "4.4.1" + browserslist "4.5.4" chalk "2.4.2" cross-spawn "6.0.5" detect-port-alt "1.1.6" escape-string-regexp "1.0.5" filesize "3.6.1" find-up "3.0.0" - fork-ts-checker-webpack-plugin "1.0.0-alpha.6" + fork-ts-checker-webpack-plugin "1.1.1" global-modules "2.0.0" globby "8.0.2" gzip-size "5.0.0" immer "1.10.0" - inquirer "6.2.1" + inquirer "6.2.2" is-root "2.0.0" loader-utils "1.2.3" opn "5.4.0" pkg-up "2.0.0" - react-error-overlay "^5.1.4" + react-error-overlay "^5.1.6" recursive-readdir "2.2.2" shell-quote "1.6.1" sockjs-client "1.3.0" - strip-ansi "5.0.0" + strip-ansi "5.2.0" text-table "0.2.0" react-dom@16.8.6: @@ -9247,12 +9768,12 @@ react-dom@16.8.6: prop-types "^15.6.2" scheduler "^0.13.6" -react-error-overlay@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-5.1.4.tgz#88dfb88857c18ceb3b9f95076f850d7121776991" - integrity sha512-fp+U98OMZcnduQ+NSEiQa4s/XMsbp+5KlydmkbESOw4P69iWZ68ZMFM5a2BuE0FgqPBKApJyRuYHR95jM8lAmg== +react-error-overlay@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-5.1.6.tgz#0cd73407c5d141f9638ae1e0c63e7b2bf7e9929d" + integrity sha512-X1Y+0jR47ImDVr54Ab6V9eGk0Hnu7fVWGeHQSOXHf/C2pF9c6uy3gef8QUeuUiWlNb0i08InPSE5a/KJzNzw1Q== -react-fast-compare@^2.0.1: +react-fast-compare@^2.0.1, react-fast-compare@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9" integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== @@ -9267,7 +9788,7 @@ react-images@0.5.19: react-scrolllock "^2.0.1" react-transition-group "2" -react-is@^16.6.0: +react-is@^16.6.0, react-is@^16.8.4: version "16.8.6" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== @@ -9294,10 +9815,10 @@ react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== -react-photo-gallery@6.3.2: - version "6.3.2" - resolved "https://registry.yarnpkg.com/react-photo-gallery/-/react-photo-gallery-6.3.2.tgz#b4cf7671693e63cdf85927b8419bdeb44ba5a0e3" - integrity sha512-MczIo//EIITMxuDv/ChI3iTb1YXyhuZrhAWVXB+vzhQm1gTlbgWjjpsk5hlR2mSzPHJRx1YLQEnJUpk2aZZ1EQ== +react-photo-gallery@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/react-photo-gallery/-/react-photo-gallery-7.0.2.tgz#5b2def1ede9767018f72651133f289ea8d835de4" + integrity sha512-s94SZ62RCRMiA+LN22iXG8xlzg/sEZQHXZmH24HxjOB0W1BLID8wSTSemq/6Q9B/MaowmanZRI3YdErooa8xZg== dependencies: prop-types "~15.7.2" resize-observer-polyfill "^1.5.0" @@ -9348,59 +9869,65 @@ react-router@5.0.0: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-scripts@2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-2.1.8.tgz#21195bb928b2c0462aa98b2d32edf7d034cff2a9" - integrity sha512-mDC8fYWCyuB9VROti8OCPdHE79UEchVVZmuS/yaIs47VkvZpgZqUvzghYBswZRchqnW0aARNY8xXrzoFRhhK7A== +react-scripts@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.0.1.tgz#e5565350d8069cc9966b5998d3fe3befe3d243ac" + integrity sha512-LKEjBhVpEB+c312NeJhzF+NATxF7JkHNr5GhtwMeRS1cMeLElMeIu8Ye7WGHtDP7iz7ra4ryy48Zpo6G/cwWUw== dependencies: - "@babel/core" "7.2.2" + "@babel/core" "7.4.3" "@svgr/webpack" "4.1.0" - babel-core "7.0.0-bridge.0" - babel-eslint "9.0.0" - babel-jest "23.6.0" + "@typescript-eslint/eslint-plugin" "1.6.0" + "@typescript-eslint/parser" "1.6.0" + babel-eslint "10.0.1" + babel-jest "^24.8.0" babel-loader "8.0.5" - babel-plugin-named-asset-import "^0.3.1" - babel-preset-react-app "^7.0.2" - bfj "6.1.1" + babel-plugin-named-asset-import "^0.3.2" + babel-preset-react-app "^9.0.0" + camelcase "^5.2.0" case-sensitive-paths-webpack-plugin "2.2.0" - css-loader "1.0.0" - dotenv "6.0.0" + css-loader "2.1.1" + dotenv "6.2.0" dotenv-expand "4.2.0" - eslint "5.12.0" - eslint-config-react-app "^3.0.8" - eslint-loader "2.1.1" + eslint "^5.16.0" + eslint-config-react-app "^4.0.1" + eslint-loader "2.1.2" eslint-plugin-flowtype "2.50.1" - eslint-plugin-import "2.14.0" - eslint-plugin-jsx-a11y "6.1.2" + eslint-plugin-import "2.16.0" + eslint-plugin-jsx-a11y "6.2.1" eslint-plugin-react "7.12.4" - file-loader "2.0.0" + eslint-plugin-react-hooks "^1.5.0" + file-loader "3.0.1" fs-extra "7.0.1" - html-webpack-plugin "4.0.0-alpha.2" + html-webpack-plugin "4.0.0-beta.5" identity-obj-proxy "3.0.0" - jest "23.6.0" - jest-pnp-resolver "1.0.2" - jest-resolve "23.6.0" - jest-watch-typeahead "^0.2.1" + is-wsl "^1.1.0" + jest "24.7.1" + jest-environment-jsdom-fourteen "0.1.0" + jest-resolve "24.7.1" + jest-watch-typeahead "0.3.0" mini-css-extract-plugin "0.5.0" optimize-css-assets-webpack-plugin "5.0.1" pnp-webpack-plugin "1.2.1" postcss-flexbugs-fixes "4.1.0" postcss-loader "3.0.0" - postcss-preset-env "6.5.0" + postcss-normalize "7.0.1" + postcss-preset-env "6.6.0" postcss-safe-parser "4.0.1" - react-app-polyfill "^0.2.2" - react-dev-utils "^8.0.0" + react-app-polyfill "^1.0.1" + react-dev-utils "^9.0.1" resolve "1.10.0" sass-loader "7.1.0" + semver "6.0.0" style-loader "0.23.1" - terser-webpack-plugin "1.2.2" + terser-webpack-plugin "1.2.3" + ts-pnp "1.1.2" url-loader "1.1.2" - webpack "4.28.3" - webpack-dev-server "3.1.14" + webpack "4.29.6" + webpack-dev-server "3.2.1" webpack-manifest-plugin "2.0.4" - workbox-webpack-plugin "3.6.3" + workbox-webpack-plugin "4.2.0" optionalDependencies: - fsevents "1.2.4" + fsevents "2.0.6" react-scrolllock@^2.0.1: version "2.0.7" @@ -9430,12 +9957,14 @@ react-transition-group@^2.2.1: prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" -react-use@7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/react-use/-/react-use-7.3.1.tgz#cdf5f3b9eab6c0e0de02bdf1c88900e3087870c7" - integrity sha512-uzbibSTURCtBD4Qrzxb9dvqNuTTfJ9pGnTFdHy34HmQWcU0/AiNWflriACnwU+IDTKKpXACSMTmT4MB6XBo0Iw== +react-use@9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/react-use/-/react-use-9.1.2.tgz#bab77fd22aa7465888d2753ce6cb9b9c0185be76" + integrity sha512-I1QTpSvQw0l5mJoSXWOLdDjnTjX7fUh5DfBaAMeTkTpxU86nQ32m9+IhWPe8V1VTQpQJNaeGl6i+e98PEkyZRA== dependencies: + copy-to-clipboard "^3.1.0" nano-css "^5.1.0" + react-fast-compare "^2.0.4" react-wait "^0.3.0" screenfull "^4.1.0" throttle-debounce "^2.0.1" @@ -9472,6 +10001,14 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -9490,6 +10027,15 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -9531,10 +10077,10 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -realpath-native@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.2.tgz#cd51ce089b513b45cf9b1516c82989b51ccc6560" - integrity sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g== +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== dependencies: util.promisify "^1.0.0" @@ -9560,11 +10106,23 @@ regenerate-unicode-properties@^7.0.0: dependencies: regenerate "^1.4.0" -regenerate@^1.2.1, regenerate@^1.4.0: +regenerate-unicode-properties@^8.0.2: + version "8.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +regenerator-runtime@0.13.2, regenerator-runtime@^0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" + integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== + regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -9582,12 +10140,12 @@ regenerator-transform@^0.13.3: dependencies: private "^0.1.6" -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== +regenerator-transform@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf" + integrity sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w== dependencies: - is-equal-shallow "^0.1.3" + private "^0.1.6" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -9606,20 +10164,16 @@ regexp-tree@^0.1.0: colors "^1.1.2" yargs "^12.0.5" +regexp-tree@^0.1.6: + version "0.1.10" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz#d837816a039c7af8a8d64d7a7c3cf6a1d93450bc" + integrity sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ== + regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== -regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - regexpu-core@^4.1.3, regexpu-core@^4.2.0: version "4.4.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32" @@ -9632,23 +10186,23 @@ regexpu-core@^4.1.3, regexpu-core@^4.2.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.0.2" -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= +regexpu-core@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" + integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.0.2" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.1.0" regjsgen@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= - dependencies: - jsesc "~0.5.0" - regjsparser@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" @@ -9701,7 +10255,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -9775,6 +10329,16 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requireindex@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" + integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -9817,7 +10381,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.10.0, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1, resolve@^1.9.0: +resolve@1.10.0, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== @@ -9847,7 +10411,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: +rimraf@2, rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -9862,10 +10426,10 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rsvp@^3.3.3: - version "3.6.2" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" - integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== +rsvp@^4.8.4: + version "4.8.4" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911" + integrity sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA== rtl-css-js@^1.9.0: version "1.11.0" @@ -9888,7 +10452,7 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.1.0, rxjs@^6.3.3, rxjs@^6.4.0: +rxjs@^6.3.3, rxjs@^6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw== @@ -9912,21 +10476,20 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sane@^2.0.0: - version "2.5.2" - resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" - integrity sha1-tNwYYcIbQn6SlQej51HiosuKs/o= +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== dependencies: + "@cnakazawa/watch" "^1.0.3" anymatch "^2.0.0" - capture-exit "^1.2.0" - exec-sh "^0.2.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" fb-watchman "^2.0.0" micromatch "^3.1.4" minimist "^1.1.1" walker "~1.0.5" - watch "~0.18.0" - optionalDependencies: - fsevents "^1.2.3" sass-graph@^2.2.4: version "2.2.4" @@ -9955,6 +10518,13 @@ sax@^1.2.4, sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +saxes@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.9.tgz#c1c197cd54956d88c09f960254b999e192d7058b" + integrity sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw== + dependencies: + xmlchars "^1.3.1" + scheduler@^0.13.6: version "0.13.6" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" @@ -9963,14 +10533,6 @@ scheduler@^0.13.6: loose-envify "^1.1.0" object-assign "^4.1.1" -schema-utils@^0.4.4: - version "0.4.7" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" - integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== - dependencies: - ajv "^6.1.0" - ajv-keywords "^3.1.0" - schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -10010,6 +10572,21 @@ selfsigned@^1.9.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== +semver@5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== + +semver@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" + integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== + +semver@^6.0.0, semver@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.0.tgz#e95dc415d45ecf03f2f9f83b264a6b11f49c0cca" + integrity sha512-kCqEOOHoBcFs/2Ccuk4Xarm/KiWRSLEX9CAZF8xkJ6ZPlIoTZ8V5f7J16vYLJqDbR7KrxTJpR2lqjIEm2Qx9cQ== + semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -10171,10 +10748,10 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -sisteransi@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" - integrity sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g== +sisteransi@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" + integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ== slash@^1.0.0: version "1.0.0" @@ -10273,13 +10850,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-support@~0.5.9: version "0.5.10" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" @@ -10305,7 +10875,7 @@ source-map@^0.4.2: dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -10579,7 +11149,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object@^3.2.2: +stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== @@ -10588,12 +11158,12 @@ stringify-object@^3.2.2: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@5.0.0, strip-ansi@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" - integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== +strip-ansi@5.2.0, strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: - ansi-regex "^4.0.0" + ansi-regex "^4.1.0" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" @@ -10609,10 +11179,12 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-bom@3.0.0, strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" + integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== + dependencies: + ansi-regex "^4.0.0" strip-bom@^2.0.0: version "2.0.0" @@ -10621,6 +11193,11 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + strip-comments@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" @@ -10673,14 +11250,7 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^3.1.2: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - -supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -10732,10 +11302,10 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= -table@^5.0.2: - version "5.2.3" - resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" - integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ== +table@^5.2.3: + version "5.4.0" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780" + integrity sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw== dependencies: ajv "^6.9.1" lodash "^4.17.11" @@ -10769,7 +11339,21 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" -terser-webpack-plugin@1.2.2, terser-webpack-plugin@^1.1.0: +terser-webpack-plugin@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz#3f98bc902fac3e5d0de730869f50668561262ec8" + integrity sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA== + dependencies: + cacache "^11.0.2" + find-cache-dir "^2.0.0" + schema-utils "^1.0.0" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + terser "^3.16.1" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +terser-webpack-plugin@^1.1.0: version "1.2.2" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.2.tgz#9bff3a891ad614855a7dde0d707f7db5a927e3d9" integrity sha512-1DMkTk286BzmfylAvLXwpJrI7dWa5BnFmscV/2dCr8+c56egFcbaeFAl7+sujAjdmpLam21XRdhA4oifLyiWWg== @@ -10792,16 +11376,15 @@ terser@^3.16.1: source-map "~0.6.1" source-map-support "~0.5.9" -test-exclude@^4.2.1: - version "4.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20" - integrity sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA== +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== dependencies: - arrify "^1.0.1" - micromatch "^2.3.11" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" text-hex@1.0.x: version "1.0.0" @@ -10888,11 +11471,6 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -10923,12 +11501,10 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -topo@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" - integrity sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI= - dependencies: - hoek "4.x.x" +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= tough-cookie@>=2.3.3: version "3.0.1" @@ -10939,7 +11515,7 @@ tough-cookie@>=2.3.3: psl "^1.1.28" punycode "^2.1.1" -tough-cookie@^2.3.4: +tough-cookie@^2.3.4, tough-cookie@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -10994,27 +11570,15 @@ trough@^1.0.0: dependencies: glob "^7.1.2" -tryer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" - integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== - ts-easing@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec" integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== -ts-invariant@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.2.1.tgz#3d587f9d6e3bded97bf9ec17951dd9814d5a9d3f" - integrity sha512-Z/JSxzVmhTo50I+LKagEISFJW3pvPCqsMWLamCTX8Kr3N5aMrnGOqcflbe5hLUzwjvgPfnLzQtHZv0yWQ+FIHg== - dependencies: - tslib "^1.9.3" - -ts-invariant@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.3.2.tgz#89a2ffeb70879b777258df1df1c59383c35209b0" - integrity sha512-QsY8BCaRnHiB5T6iE4DPlJMAKEG3gzMiUco9FEt1jUXQf0XP6zi0idT0i0rMTu8A326JqNSDsmlkA9dRSh1TRg== +ts-invariant@^0.4.0, ts-invariant@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.2.tgz#8685131b8083e67c66d602540e78763408be9113" + integrity sha512-PTAAn8lJPEdRBJJEs4ig6MVZWfO12yrFzV7YaPslmyhG7+4MA279y4BXT3f72gXeVl0mC1aAWq2rMX4eKTWU/Q== dependencies: tslib "^1.9.3" @@ -11023,6 +11587,11 @@ ts-log@2.1.4: resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.1.4.tgz#063c5ad1cbab5d49d258d18015963489fb6fb59a" integrity sha512-P1EJSoyV+N3bR/IWFeAqXzKPZwHpnLY6j7j58mAvewHRipo+BQM2Y1f9Y9BjEQznKwgqqZm7H8iuixmssU7tYQ== +ts-pnp@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.2.tgz#be8e4bfce5d00f0f58e0666a82260c34a57af552" + integrity sha512-f5Knjh7XCyRIzoC/z1Su1yLLRrPrFCgtUAh/9fCSP6NKbATwpOL1+idQVXQokK9GRFURn/jYPGPfegIctwunoA== + ts-pnp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.0.0.tgz#44a3a9e8c13fcb711bcda75d7b576c21af120c9d" @@ -11040,12 +11609,12 @@ tslint-react@4.0.0: dependencies: tsutils "^3.9.1" -tslint@5.15.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.15.0.tgz#6ffb180986d63afa1e531feb2a134dbf961e27d3" - integrity sha512-6bIEujKR21/3nyeoX2uBnE8s+tMXCQXhqMmaIPJpHmXJoBJPTLcI7/VHRtUwMhnLVdwLqqY3zmd8Dxqa5CVdJA== +tslint@5.16.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.16.0.tgz#ae61f9c5a98d295b9a4f4553b1b1e831c1984d67" + integrity sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA== dependencies: - babel-code-frame "^6.22.0" + "@babel/code-frame" "^7.0.0" builtin-modules "^1.1.1" chalk "^2.3.0" commander "^2.12.1" @@ -11066,7 +11635,7 @@ tsutils@^2.29.0: dependencies: tslib "^1.8.1" -tsutils@^3.9.1: +tsutils@^3.7.0, tsutils@^3.9.1: version "3.10.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.10.0.tgz#6f1c95c94606e098592b0dff06590cf9659227d6" integrity sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q== @@ -11115,10 +11684,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.1.tgz#b6691be11a881ffa9a05765a205cb7383f3b63c6" - integrity sha512-3NSMb2VzDQm8oBTLH6Nj55VVtUEpe/rgkIzMir0qVoLyjDZlnMBva0U6vDiV3IH+sl/Yu6oP5QwsAQtHPmDd2Q== +typescript@3.4.5: + version "3.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.5.tgz#2d2618d10bb566572b8d7aad5180d84257d70a99" + integrity sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw== typescript@^3.2.2: version "3.3.3" @@ -11156,6 +11725,11 @@ unicode-match-property-value-ecmascript@^1.0.2: resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== +unicode-match-property-value-ecmascript@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" + integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== + unicode-property-aliases-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" @@ -11406,7 +11980,16 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" -walker@~1.0.5: +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= @@ -11420,14 +12003,6 @@ warning@^4.0.2: dependencies: loose-envify "^1.0.0" -watch@~0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" - integrity sha1-KAlUdsbffJDJYxOJkMClQj60uYY= - dependencies: - exec-sh "^0.2.0" - minimist "^1.2.0" - watchpack@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" @@ -11454,33 +12029,33 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-dev-middleware@3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz#1132fecc9026fd90f0ecedac5cbff75d1fb45890" - integrity sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA== +webpack-dev-middleware@^3.5.1: + version "3.7.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" + integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== dependencies: - memory-fs "~0.4.1" - mime "^2.3.1" - range-parser "^1.0.3" + memory-fs "^0.4.1" + mime "^2.4.2" + range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@3.1.14: - version "3.1.14" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz#60fb229b997fc5a0a1fc6237421030180959d469" - integrity sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ== +webpack-dev-server@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.2.1.tgz#1b45ce3ecfc55b6ebe5e36dab2777c02bc508c4e" + integrity sha512-sjuE4mnmx6JOh9kvSbPYw3u/6uxCLHNWfhWaIPwcXWsvWOPN+nc5baq4i9jui3oOBRXGonK9+OI0jVkaz6/rCw== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" chokidar "^2.0.0" compression "^1.5.2" connect-history-api-fallback "^1.3.0" - debug "^3.1.0" + debug "^4.1.1" del "^3.0.0" express "^4.16.2" html-entities "^1.2.0" - http-proxy-middleware "~0.18.0" + http-proxy-middleware "^0.19.1" import-local "^2.0.0" - internal-ip "^3.0.1" + internal-ip "^4.2.0" ip "^1.1.5" killable "^1.0.0" loglevel "^1.4.1" @@ -11494,9 +12069,9 @@ webpack-dev-server@3.1.14: sockjs-client "1.3.0" spdy "^4.0.0" strip-ansi "^3.0.0" - supports-color "^5.1.0" + supports-color "^6.1.0" url "^0.11.0" - webpack-dev-middleware "3.4.0" + webpack-dev-middleware "^3.5.1" webpack-log "^2.0.0" yargs "12.0.2" @@ -11525,17 +12100,17 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.28.3: - version "4.28.3" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.28.3.tgz#8acef6e77fad8a01bfd0c2b25aa3636d46511874" - integrity sha512-vLZN9k5I7Nr/XB1IDG9GbZB4yQd1sPuvufMFgJkx0b31fi2LD97KQIjwjxE7xytdruAYfu5S0FLBLjdxmwGJCg== +webpack@4.29.6: + version "4.29.6" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.29.6.tgz#66bf0ec8beee4d469f8b598d3988ff9d8d90e955" + integrity sha512-MwBwpiE1BQpMDkbnUUaW6K8RFZjljJHArC6tWQJoFm0oQtfoSebtg4Y7/QHnJ/SddtjYLHaKGX64CFjG5rehJw== dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/helper-module-context" "1.7.11" - "@webassemblyjs/wasm-edit" "1.7.11" - "@webassemblyjs/wasm-parser" "1.7.11" - acorn "^5.6.2" - acorn-dynamic-import "^3.0.0" + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.0.5" + acorn-dynamic-import "^4.0.0" ajv "^6.1.0" ajv-keywords "^3.1.0" chrome-trace-event "^1.0.0" @@ -11549,7 +12124,7 @@ webpack@4.28.3: mkdirp "~0.5.0" neo-async "^2.5.0" node-libs-browser "^2.0.0" - schema-utils "^0.4.4" + schema-utils "^1.0.0" tapable "^1.1.0" terser-webpack-plugin "^1.1.0" watchpack "^1.5.0" @@ -11568,7 +12143,7 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== @@ -11585,7 +12160,7 @@ whatwg-fetch@3.0.0, whatwg-fetch@>=0.10.0: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== @@ -11618,7 +12193,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1, which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@1, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -11665,132 +12240,140 @@ wordwrap@~1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -workbox-background-sync@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-3.6.3.tgz#6609a0fac9eda336a7c52e6aa227ba2ae532ad94" - integrity sha512-ypLo0B6dces4gSpaslmDg5wuoUWrHHVJfFWwl1udvSylLdXvnrfhFfriCS42SNEe5lsZtcNZF27W/SMzBlva7Q== +workbox-background-sync@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" + integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-broadcast-cache-update@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.6.3.tgz#3f5dff22ada8c93e397fb38c1dc100606a7b92da" - integrity sha512-pJl4lbClQcvp0SyTiEw0zLSsVYE1RDlCPtpKnpMjxFtu8lCFTAEuVyzxp9w7GF4/b3P4h5nyQ+q7V9mIR7YzGg== +workbox-broadcast-update@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" + integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-build@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-3.6.3.tgz#77110f9f52dc5d82fa6c1c384c6f5e2225adcbd8" - integrity sha512-w0clZ/pVjL8VXy6GfthefxpEXs0T8uiRuopZSFVQ8ovfbH6c6kUpEh6DcYwm/Y6dyWPiCucdyAZotgjz+nRz8g== +workbox-build@^4.2.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" + integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== dependencies: - babel-runtime "^6.26.0" - common-tags "^1.4.0" + "@babel/runtime" "^7.3.4" + "@hapi/joi" "^15.0.0" + common-tags "^1.8.0" fs-extra "^4.0.2" - glob "^7.1.2" - joi "^11.1.1" + glob "^7.1.3" lodash.template "^4.4.0" - pretty-bytes "^4.0.2" - stringify-object "^3.2.2" + pretty-bytes "^5.1.0" + stringify-object "^3.3.0" strip-comments "^1.0.2" - workbox-background-sync "^3.6.3" - workbox-broadcast-cache-update "^3.6.3" - workbox-cache-expiration "^3.6.3" - workbox-cacheable-response "^3.6.3" - workbox-core "^3.6.3" - workbox-google-analytics "^3.6.3" - workbox-navigation-preload "^3.6.3" - workbox-precaching "^3.6.3" - workbox-range-requests "^3.6.3" - workbox-routing "^3.6.3" - workbox-strategies "^3.6.3" - workbox-streams "^3.6.3" - workbox-sw "^3.6.3" + workbox-background-sync "^4.3.1" + workbox-broadcast-update "^4.3.1" + workbox-cacheable-response "^4.3.1" + workbox-core "^4.3.1" + workbox-expiration "^4.3.1" + workbox-google-analytics "^4.3.1" + workbox-navigation-preload "^4.3.1" + workbox-precaching "^4.3.1" + workbox-range-requests "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + workbox-streams "^4.3.1" + workbox-sw "^4.3.1" + workbox-window "^4.3.1" -workbox-cache-expiration@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-cache-expiration/-/workbox-cache-expiration-3.6.3.tgz#4819697254a72098a13f94b594325a28a1e90372" - integrity sha512-+ECNph/6doYx89oopO/UolYdDmQtGUgo8KCgluwBF/RieyA1ZOFKfrSiNjztxOrGJoyBB7raTIOlEEwZ1LaHoA== +workbox-cacheable-response@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" + integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-cacheable-response@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-3.6.3.tgz#869f1a68fce9063f6869ddbf7fa0a2e0a868b3aa" - integrity sha512-QpmbGA9SLcA7fklBLm06C4zFg577Dt8u3QgLM0eMnnbaVv3rhm4vbmDpBkyTqvgK/Ly8MBDQzlXDtUCswQwqqg== +workbox-core@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" + integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== + +workbox-expiration@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" + integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-core@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-3.6.3.tgz#69abba70a4f3f2a5c059295a6f3b7c62bd00e15c" - integrity sha512-cx9cx0nscPkIWs8Pt98HGrS9/aORuUcSkWjG25GqNWdvD/pSe7/5Oh3BKs0fC+rUshCiyLbxW54q0hA+GqZeSQ== - -workbox-google-analytics@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-3.6.3.tgz#99df2a3d70d6e91961e18a6752bac12e91fbf727" - integrity sha512-RQBUo/6SXtIaQTRFj4RQZ9e1gAl7D8oS5S+Hi173Kk70/BgJjzPwXpC5A249Jv5YfkCOLMQCeF9A27BiD0b0ig== +workbox-google-analytics@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" + integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== dependencies: - workbox-background-sync "^3.6.3" - workbox-core "^3.6.3" - workbox-routing "^3.6.3" - workbox-strategies "^3.6.3" + workbox-background-sync "^4.3.1" + workbox-core "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" -workbox-navigation-preload@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-3.6.3.tgz#a2c34eb7c17e7485b795125091215f757b3c4964" - integrity sha512-dd26xTX16DUu0i+MhqZK/jQXgfIitu0yATM4jhRXEmpMqQ4MxEeNvl2CgjDMOHBnCVMax+CFZQWwxMx/X/PqCw== +workbox-navigation-preload@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" + integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-precaching@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-3.6.3.tgz#5341515e9d5872c58ede026a31e19bafafa4e1c1" - integrity sha512-aBqT66BuMFviPTW6IpccZZHzpA8xzvZU2OM1AdhmSlYDXOJyb1+Z6blVD7z2Q8VNtV1UVwQIdImIX+hH3C3PIw== +workbox-precaching@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" + integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-range-requests@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-3.6.3.tgz#3cc21cba31f2dd8c43c52a196bcc8f6cdbcde803" - integrity sha512-R+yLWQy7D9aRF9yJ3QzwYnGFnGDhMUij4jVBUVtkl67oaVoP1ymZ81AfCmfZro2kpPRI+vmNMfxxW531cqdx8A== +workbox-range-requests@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" + integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-routing@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-3.6.3.tgz#659cd8f9274986cfa98fda0d050de6422075acf7" - integrity sha512-bX20i95OKXXQovXhFOViOK63HYmXvsIwZXKWbSpVeKToxMrp0G/6LZXnhg82ijj/S5yhKNRf9LeGDzaqxzAwMQ== +workbox-routing@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" + integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-strategies@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-3.6.3.tgz#11a0dc249a7bc23d3465ec1322d28fa6643d64a0" - integrity sha512-Pg5eulqeKet2y8j73Yw6xTgLdElktcWExGkzDVCGqfV9JCvnGuEpz5eVsCIK70+k4oJcBCin9qEg3g3CwEIH3g== +workbox-strategies@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" + integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-streams@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-3.6.3.tgz#beaea5d5b230239836cc327b07d471aa6101955a" - integrity sha512-rqDuS4duj+3aZUYI1LsrD2t9hHOjwPqnUIfrXSOxSVjVn83W2MisDF2Bj+dFUZv4GalL9xqErcFW++9gH+Z27w== +workbox-streams@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" + integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== dependencies: - workbox-core "^3.6.3" + workbox-core "^4.3.1" -workbox-sw@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-3.6.3.tgz#278ea4c1831b92bbe2d420da8399176c4b2789ff" - integrity sha512-IQOUi+RLhvYCiv80RP23KBW/NTtIvzvjex28B8NW1jOm+iV4VIu3VXKXTA6er5/wjjuhmtB28qEAUqADLAyOSg== +workbox-sw@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" + integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== -workbox-webpack-plugin@3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-3.6.3.tgz#a807bb891b4e4e3c808df07e58f17de2d5ba6182" - integrity sha512-RwmKjc7HFHUFHoOlKoZUq9349u0QN3F8W5tZZU0vc1qsBZDINWXRiIBCAKvo/Njgay5sWz7z4I2adnyTo97qIQ== +workbox-webpack-plugin@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.2.0.tgz#c94c3f69ff39c8a5b0c7e6bebc382cb53410a63d" + integrity sha512-YZsiA+y/ns/GdWRaBsfYv8dln1ebWtGnJcTOg1ppO0pO1tScAHX0yGtHIjndxz3L/UUhE8b0NQE9KeLNwJwA5A== dependencies: - babel-runtime "^6.26.0" + "@babel/runtime" "^7.0.0" json-stable-stringify "^1.0.1" - workbox-build "^3.6.3" + workbox-build "^4.2.0" + +workbox-window@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" + integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== + dependencies: + workbox-core "^4.3.1" worker-farm@^1.5.2: version "1.6.0" @@ -11799,6 +12382,13 @@ worker-farm@^1.5.2: dependencies: errno "~0.1.7" +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -11820,19 +12410,19 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.1.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" - integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g== +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" signal-exit "^3.0.2" -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== dependencies: mkdirp "^0.5.1" @@ -11843,6 +12433,13 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" +ws@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + x-is-string@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" @@ -11853,6 +12450,11 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xmlchars@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-1.3.1.tgz#1dda035f833dbb4f86a0c28eaa6ca769214793cf" + integrity sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw== + xregexp@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" @@ -11905,13 +12507,6 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= - dependencies: - camelcase "^4.1.0" - yargs@12.0.2: version "12.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" @@ -11930,25 +12525,7 @@ yargs@12.0.2: y18n "^3.2.1 || ^4.0.0" yargs-parser "^10.1.0" -yargs@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" - integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - -yargs@^12.0.5: +yargs@^12.0.2, yargs@^12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== diff --git a/vendor/github.com/99designs/gqlgen/graphql/any.go b/vendor/github.com/99designs/gqlgen/graphql/any.go new file mode 100644 index 000000000..6ea8bf2ea --- /dev/null +++ b/vendor/github.com/99designs/gqlgen/graphql/any.go @@ -0,0 +1,19 @@ +package graphql + +import ( + "encoding/json" + "io" +) + +func MarshalAny(v interface{}) Marshaler { + return WriterFunc(func(w io.Writer) { + err := json.NewEncoder(w).Encode(v) + if err != nil { + panic(err) + } + }) +} + +func UnmarshalAny(v interface{}) (interface{}, error) { + return v, nil +} diff --git a/vendor/github.com/99designs/gqlgen/graphql/context.go b/vendor/github.com/99designs/gqlgen/graphql/context.go index 58d3c741e..356f5175b 100644 --- a/vendor/github.com/99designs/gqlgen/graphql/context.go +++ b/vendor/github.com/99designs/gqlgen/graphql/context.go @@ -132,14 +132,14 @@ func WithResolverContext(ctx context.Context, rc *ResolverContext) context.Conte // This is just a convenient wrapper method for CollectFields func CollectFieldsCtx(ctx context.Context, satisfies []string) []CollectedField { resctx := GetResolverContext(ctx) - return CollectFields(ctx, resctx.Field.Selections, satisfies) + return CollectFields(GetRequestContext(ctx), resctx.Field.Selections, satisfies) } // CollectAllFields returns a slice of all GraphQL field names that were selected for the current resolver context. // The slice will contain the unique set of all field names requested regardless of fragment type conditions. func CollectAllFields(ctx context.Context) []string { resctx := GetResolverContext(ctx) - collected := CollectFields(ctx, resctx.Field.Selections, nil) + collected := CollectFields(GetRequestContext(ctx), resctx.Field.Selections, nil) uniq := make([]string, 0, len(collected)) Next: for _, f := range collected { diff --git a/vendor/github.com/99designs/gqlgen/graphql/exec.go b/vendor/github.com/99designs/gqlgen/graphql/exec.go index 17c57bf67..3e00a4d57 100644 --- a/vendor/github.com/99designs/gqlgen/graphql/exec.go +++ b/vendor/github.com/99designs/gqlgen/graphql/exec.go @@ -19,12 +19,12 @@ type ExecutableSchema interface { // CollectFields returns the set of fields from an ast.SelectionSet where all collected fields satisfy at least one of the GraphQL types // passed through satisfies. Providing an empty or nil slice for satisfies will return collect all fields regardless of fragment // type conditions. -func CollectFields(ctx context.Context, selSet ast.SelectionSet, satisfies []string) []CollectedField { - return collectFields(GetRequestContext(ctx), selSet, satisfies, map[string]bool{}) +func CollectFields(reqCtx *RequestContext, selSet ast.SelectionSet, satisfies []string) []CollectedField { + return collectFields(reqCtx, selSet, satisfies, map[string]bool{}) } func collectFields(reqCtx *RequestContext, selSet ast.SelectionSet, satisfies []string, visited map[string]bool) []CollectedField { - var groupedFields []CollectedField + groupedFields := make([]CollectedField, 0, len(selSet)) for _, sel := range selSet { switch sel := sel.(type) { @@ -32,7 +32,7 @@ func collectFields(reqCtx *RequestContext, selSet ast.SelectionSet, satisfies [] if !shouldIncludeNode(sel.Directives, reqCtx.Variables) { continue } - f := getOrCreateField(&groupedFields, sel.Alias, func() CollectedField { + f := getOrCreateAndAppendField(&groupedFields, sel.Alias, func() CollectedField { return CollectedField{Field: sel} }) @@ -45,7 +45,7 @@ func collectFields(reqCtx *RequestContext, selSet ast.SelectionSet, satisfies [] continue } for _, childField := range collectFields(reqCtx, sel.SelectionSet, satisfies, visited) { - f := getOrCreateField(&groupedFields, childField.Name, func() CollectedField { return childField }) + f := getOrCreateAndAppendField(&groupedFields, childField.Name, func() CollectedField { return childField }) f.Selections = append(f.Selections, childField.Selections...) } @@ -70,10 +70,9 @@ func collectFields(reqCtx *RequestContext, selSet ast.SelectionSet, satisfies [] } for _, childField := range collectFields(reqCtx, fragment.SelectionSet, satisfies, visited) { - f := getOrCreateField(&groupedFields, childField.Name, func() CollectedField { return childField }) + f := getOrCreateAndAppendField(&groupedFields, childField.Name, func() CollectedField { return childField }) f.Selections = append(f.Selections, childField.Selections...) } - default: panic(fmt.Errorf("unsupported %T", sel)) } @@ -97,7 +96,7 @@ func instanceOf(val string, satisfies []string) bool { return false } -func getOrCreateField(c *[]CollectedField, name string, creator func() CollectedField) *CollectedField { +func getOrCreateAndAppendField(c *[]CollectedField, name string, creator func() CollectedField) *CollectedField { for i, cf := range *c { if cf.Alias == name { return &(*c)[i] @@ -111,6 +110,10 @@ func getOrCreateField(c *[]CollectedField, name string, creator func() Collected } func shouldIncludeNode(directives ast.DirectiveList, variables map[string]interface{}) bool { + if len(directives) == 0 { + return true + } + skip, include := false, true if d := directives.ForName("skip"); d != nil { diff --git a/vendor/github.com/99designs/gqlgen/graphql/introspection/type.go b/vendor/github.com/99designs/gqlgen/graphql/introspection/type.go index f1228edf6..9aceebdc9 100644 --- a/vendor/github.com/99designs/gqlgen/graphql/introspection/type.go +++ b/vendor/github.com/99designs/gqlgen/graphql/introspection/type.go @@ -70,6 +70,10 @@ func (t *Type) Fields(includeDeprecated bool) []Field { continue } + if !includeDeprecated && f.Directives.ForName("deprecated") != nil { + continue + } + var args []InputValue for _, arg := range f.Arguments { args = append(args, InputValue{ diff --git a/vendor/github.com/99designs/gqlgen/graphql/time.go b/vendor/github.com/99designs/gqlgen/graphql/time.go index 4f4485602..9945f3fbf 100644 --- a/vendor/github.com/99designs/gqlgen/graphql/time.go +++ b/vendor/github.com/99designs/gqlgen/graphql/time.go @@ -8,6 +8,10 @@ import ( ) func MarshalTime(t time.Time) Marshaler { + if t.IsZero() { + return Null + } + return WriterFunc(func(w io.Writer) { io.WriteString(w, strconv.Quote(t.Format(time.RFC3339))) }) diff --git a/vendor/github.com/99designs/gqlgen/graphql/upload.go b/vendor/github.com/99designs/gqlgen/graphql/upload.go new file mode 100644 index 000000000..22d610314 --- /dev/null +++ b/vendor/github.com/99designs/gqlgen/graphql/upload.go @@ -0,0 +1,26 @@ +package graphql + +import ( + "fmt" + "io" +) + +type Upload struct { + File io.Reader + Filename string + Size int64 +} + +func MarshalUpload(f Upload) Marshaler { + return WriterFunc(func(w io.Writer) { + io.Copy(w, f.File) + }) +} + +func UnmarshalUpload(v interface{}) (Upload, error) { + upload, ok := v.(Upload) + if !ok { + return Upload{}, fmt.Errorf("%T is not an Upload", v) + } + return upload, nil +} diff --git a/vendor/github.com/99designs/gqlgen/graphql/version.go b/vendor/github.com/99designs/gqlgen/graphql/version.go index 54a275cc1..11dc6b019 100644 --- a/vendor/github.com/99designs/gqlgen/graphql/version.go +++ b/vendor/github.com/99designs/gqlgen/graphql/version.go @@ -1,3 +1,3 @@ package graphql -const Version = "v0.8.2" +const Version = "v0.9.0" diff --git a/vendor/github.com/99designs/gqlgen/handler/graphql.go b/vendor/github.com/99designs/gqlgen/handler/graphql.go index 92a0471ce..a22542225 100644 --- a/vendor/github.com/99designs/gqlgen/handler/graphql.go +++ b/vendor/github.com/99designs/gqlgen/handler/graphql.go @@ -3,16 +3,21 @@ package handler import ( "context" "encoding/json" + "errors" "fmt" "io" + "io/ioutil" + "mime" "net/http" + "os" + "strconv" "strings" "time" "github.com/99designs/gqlgen/complexity" "github.com/99designs/gqlgen/graphql" "github.com/gorilla/websocket" - "github.com/hashicorp/golang-lru" + lru "github.com/hashicorp/golang-lru" "github.com/vektah/gqlparser/ast" "github.com/vektah/gqlparser/gqlerror" "github.com/vektah/gqlparser/parser" @@ -37,6 +42,8 @@ type Config struct { complexityLimitFunc graphql.ComplexityLimitFunc disableIntrospection bool connectionKeepAlivePingInterval time.Duration + uploadMaxMemory int64 + uploadMaxSize int64 } func (c *Config) newRequestContext(es graphql.ExecutableSchema, doc *ast.QueryDocument, op *ast.OperationDefinition, query string, variables map[string]interface{}) *graphql.RequestContext { @@ -251,6 +258,23 @@ func CacheSize(size int) Option { } } +// UploadMaxSize sets the maximum number of bytes used to parse a request body +// as multipart/form-data. +func UploadMaxSize(size int64) Option { + return func(cfg *Config) { + cfg.uploadMaxSize = size + } +} + +// UploadMaxMemory sets the maximum number of bytes used to parse a request body +// as multipart/form-data in memory, with the remainder stored on disk in +// temporary files. +func UploadMaxMemory(size int64) Option { + return func(cfg *Config) { + cfg.uploadMaxMemory = size + } +} + // WebsocketKeepAliveDuration allows you to reconfigure the keepalive behavior. // By default, keepalive is enabled with a DefaultConnectionKeepAlivePingInterval // duration. Set handler.connectionKeepAlivePingInterval = 0 to disable keepalive @@ -264,9 +288,20 @@ func WebsocketKeepAliveDuration(duration time.Duration) Option { const DefaultCacheSize = 1000 const DefaultConnectionKeepAlivePingInterval = 25 * time.Second +// DefaultUploadMaxMemory is the maximum number of bytes used to parse a request body +// as multipart/form-data in memory, with the remainder stored on disk in +// temporary files. +const DefaultUploadMaxMemory = 32 << 20 + +// DefaultUploadMaxSize is maximum number of bytes used to parse a request body +// as multipart/form-data. +const DefaultUploadMaxSize = 32 << 20 + func GraphQL(exec graphql.ExecutableSchema, options ...Option) http.HandlerFunc { cfg := &Config{ cacheSize: DefaultCacheSize, + uploadMaxMemory: DefaultUploadMaxMemory, + uploadMaxSize: DefaultUploadMaxSize, connectionKeepAlivePingInterval: DefaultConnectionKeepAlivePingInterval, upgrader: websocket.Upgrader{ ReadBufferSize: 1024, @@ -335,8 +370,36 @@ func (gh *graphqlHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { } } case http.MethodPost: - if err := jsonDecode(r.Body, &reqParams); err != nil { - sendErrorf(w, http.StatusBadRequest, "json body could not be decoded: "+err.Error()) + mediaType, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + sendErrorf(w, http.StatusBadRequest, "error parsing request Content-Type") + return + } + + switch mediaType { + case "application/json": + if err := jsonDecode(r.Body, &reqParams); err != nil { + sendErrorf(w, http.StatusBadRequest, "json body could not be decoded: "+err.Error()) + return + } + + case "multipart/form-data": + var closers []io.Closer + var tmpFiles []string + defer func() { + for i := len(closers) - 1; 0 <= i; i-- { + _ = closers[i].Close() + } + for _, tmpFile := range tmpFiles { + _ = os.Remove(tmpFile) + } + }() + if err := processMultipart(w, r, &reqParams, &closers, &tmpFiles, gh.cfg.uploadMaxSize, gh.cfg.uploadMaxMemory); err != nil { + sendErrorf(w, http.StatusBadRequest, "multipart body could not be decoded: "+err.Error()) + return + } + default: + sendErrorf(w, http.StatusBadRequest, "unsupported Content-Type: "+mediaType) return } default: @@ -493,3 +556,154 @@ func sendError(w http.ResponseWriter, code int, errors ...*gqlerror.Error) { func sendErrorf(w http.ResponseWriter, code int, format string, args ...interface{}) { sendError(w, code, &gqlerror.Error{Message: fmt.Sprintf(format, args...)}) } + +type bytesReader struct { + s *[]byte + i int64 // current reading index + prevRune int // index of previous rune; or < 0 +} + +func (r *bytesReader) Read(b []byte) (n int, err error) { + if r.s == nil { + return 0, errors.New("byte slice pointer is nil") + } + if r.i >= int64(len(*r.s)) { + return 0, io.EOF + } + r.prevRune = -1 + n = copy(b, (*r.s)[r.i:]) + r.i += int64(n) + return +} + +func processMultipart(w http.ResponseWriter, r *http.Request, request *params, closers *[]io.Closer, tmpFiles *[]string, uploadMaxSize, uploadMaxMemory int64) error { + var err error + if r.ContentLength > uploadMaxSize { + return errors.New("failed to parse multipart form, request body too large") + } + r.Body = http.MaxBytesReader(w, r.Body, uploadMaxSize) + if err = r.ParseMultipartForm(uploadMaxMemory); err != nil { + if strings.Contains(err.Error(), "request body too large") { + return errors.New("failed to parse multipart form, request body too large") + } + return errors.New("failed to parse multipart form") + } + *closers = append(*closers, r.Body) + + if err = jsonDecode(strings.NewReader(r.Form.Get("operations")), &request); err != nil { + return errors.New("operations form field could not be decoded") + } + + var uploadsMap = map[string][]string{} + if err = json.Unmarshal([]byte(r.Form.Get("map")), &uploadsMap); err != nil { + return errors.New("map form field could not be decoded") + } + + var upload graphql.Upload + for key, paths := range uploadsMap { + if len(paths) == 0 { + return fmt.Errorf("invalid empty operations paths list for key %s", key) + } + file, header, err := r.FormFile(key) + if err != nil { + return fmt.Errorf("failed to get key %s from form", key) + } + *closers = append(*closers, file) + + if len(paths) == 1 { + upload = graphql.Upload{ + File: file, + Size: header.Size, + Filename: header.Filename, + } + err = addUploadToOperations(request, upload, key, paths[0]) + if err != nil { + return err + } + } else { + if r.ContentLength < uploadMaxMemory { + fileBytes, err := ioutil.ReadAll(file) + if err != nil { + return fmt.Errorf("failed to read file for key %s", key) + } + for _, path := range paths { + upload = graphql.Upload{ + File: &bytesReader{s: &fileBytes, i: 0, prevRune: -1}, + Size: header.Size, + Filename: header.Filename, + } + err = addUploadToOperations(request, upload, key, path) + if err != nil { + return err + } + } + } else { + tmpFile, err := ioutil.TempFile(os.TempDir(), "gqlgen-") + if err != nil { + return fmt.Errorf("failed to create temp file for key %s", key) + } + tmpName := tmpFile.Name() + *tmpFiles = append(*tmpFiles, tmpName) + _, err = io.Copy(tmpFile, file) + if err != nil { + if err := tmpFile.Close(); err != nil { + return fmt.Errorf("failed to copy to temp file and close temp file for key %s", key) + } + return fmt.Errorf("failed to copy to temp file for key %s", key) + } + if err := tmpFile.Close(); err != nil { + return fmt.Errorf("failed to close temp file for key %s", key) + } + for _, path := range paths { + pathTmpFile, err := os.Open(tmpName) + if err != nil { + return fmt.Errorf("failed to open temp file for key %s", key) + } + *closers = append(*closers, pathTmpFile) + upload = graphql.Upload{ + File: pathTmpFile, + Size: header.Size, + Filename: header.Filename, + } + err = addUploadToOperations(request, upload, key, path) + if err != nil { + return err + } + } + } + } + } + return nil +} + +func addUploadToOperations(request *params, upload graphql.Upload, key, path string) error { + if !strings.HasPrefix(path, "variables.") { + return fmt.Errorf("invalid operations paths for key %s", key) + } + + var ptr interface{} = request.Variables + parts := strings.Split(path, ".") + + // skip the first part (variables) because we started there + for i, p := range parts[1:] { + last := i == len(parts)-2 + if ptr == nil { + return fmt.Errorf("path is missing \"variables.\" prefix, key: %s, path: %s", key, path) + } + if index, parseNbrErr := strconv.Atoi(p); parseNbrErr == nil { + if last { + ptr.([]interface{})[index] = upload + } else { + ptr = ptr.([]interface{})[index] + } + } else { + if last { + ptr.(map[string]interface{})[p] = upload + } else { + ptr = ptr.(map[string]interface{})[p] + } + } + } + + return nil +} diff --git a/vendor/github.com/99designs/gqlgen/handler/mock.go b/vendor/github.com/99designs/gqlgen/handler/mock.go new file mode 100644 index 000000000..3e70cf036 --- /dev/null +++ b/vendor/github.com/99designs/gqlgen/handler/mock.go @@ -0,0 +1,57 @@ +package handler + +import ( + "context" + + "github.com/99designs/gqlgen/graphql" + "github.com/vektah/gqlparser" + "github.com/vektah/gqlparser/ast" +) + +type executableSchemaMock struct { + MutationFunc func(ctx context.Context, op *ast.OperationDefinition) *graphql.Response +} + +var _ graphql.ExecutableSchema = &executableSchemaMock{} + +func (e *executableSchemaMock) Schema() *ast.Schema { + return gqlparser.MustLoadSchema(&ast.Source{Input: ` + schema { query: Query, mutation: Mutation } + type Query { + empty: String! + } + scalar Upload + type File { + id: Int! + } + input UploadFile { + id: Int! + file: Upload! + } + type Mutation { + singleUpload(file: Upload!): File! + singleUploadWithPayload(req: UploadFile!): File! + multipleUpload(files: [Upload!]!): [File!]! + multipleUploadWithPayload(req: [UploadFile!]!): [File!]! + } + `}) +} + +func (e *executableSchemaMock) Complexity(typeName, field string, childComplexity int, args map[string]interface{}) (int, bool) { + return 0, false +} + +func (e *executableSchemaMock) Query(ctx context.Context, op *ast.OperationDefinition) *graphql.Response { + return graphql.ErrorResponse(ctx, "queries are not supported") +} + +func (e *executableSchemaMock) Mutation(ctx context.Context, op *ast.OperationDefinition) *graphql.Response { + return e.MutationFunc(ctx, op) +} + +func (e *executableSchemaMock) Subscription(ctx context.Context, op *ast.OperationDefinition) func() *graphql.Response { + return func() *graphql.Response { + <-ctx.Done() + return nil + } +} diff --git a/vendor/github.com/go-chi/chi/.travis.yml b/vendor/github.com/go-chi/chi/.travis.yml index 44ecf0d78..de3287e1d 100644 --- a/vendor/github.com/go-chi/chi/.travis.yml +++ b/vendor/github.com/go-chi/chi/.travis.yml @@ -3,6 +3,7 @@ language: go go: - 1.10.x - 1.11.x + - 1.12.x script: - go get -d -t ./... @@ -10,7 +11,7 @@ script: - go test ./... - > go_version=$(go version); - if [ ${go_version:13:4} = "1.11" ]; then + if [ ${go_version:13:4} = "1.12" ]; then go get -u golang.org/x/tools/cmd/goimports; goimports -d -e ./ | grep '.*' && { echo; echo "Aborting due to non-empty goimports output."; exit 1; } || :; fi diff --git a/vendor/github.com/go-chi/chi/middleware/compress.go b/vendor/github.com/go-chi/chi/middleware/compress.go index 966e5e375..d2876d4e7 100644 --- a/vendor/github.com/go-chi/chi/middleware/compress.go +++ b/vendor/github.com/go-chi/chi/middleware/compress.go @@ -188,71 +188,71 @@ type compressResponseWriter struct { wroteHeader bool } -func (w *compressResponseWriter) WriteHeader(code int) { - if w.wroteHeader { +func (cw *compressResponseWriter) WriteHeader(code int) { + if cw.wroteHeader { return } - w.wroteHeader = true - defer w.ResponseWriter.WriteHeader(code) + cw.wroteHeader = true + defer cw.ResponseWriter.WriteHeader(code) // Already compressed data? - if w.Header().Get("Content-Encoding") != "" { + if cw.Header().Get("Content-Encoding") != "" { return } // Parse the first part of the Content-Type response header. contentType := "" - parts := strings.Split(w.Header().Get("Content-Type"), ";") + parts := strings.Split(cw.Header().Get("Content-Type"), ";") if len(parts) > 0 { contentType = parts[0] } // Is the content type compressable? - if _, ok := w.contentTypes[contentType]; !ok { + if _, ok := cw.contentTypes[contentType]; !ok { return } - if w.encoder != nil && w.encoding != "" { - if wr := w.encoder(w.ResponseWriter, w.level); wr != nil { - w.w = wr - w.Header().Set("Content-Encoding", w.encoding) + if cw.encoder != nil && cw.encoding != "" { + if wr := cw.encoder(cw.ResponseWriter, cw.level); wr != nil { + cw.w = wr + cw.Header().Set("Content-Encoding", cw.encoding) // The content-length after compression is unknown - w.Header().Del("Content-Length") + cw.Header().Del("Content-Length") } } } -func (w *compressResponseWriter) Write(p []byte) (int, error) { - if !w.wroteHeader { - w.ResponseWriter.WriteHeader(http.StatusOK) +func (cw *compressResponseWriter) Write(p []byte) (int, error) { + if !cw.wroteHeader { + cw.WriteHeader(http.StatusOK) } - return w.w.Write(p) + return cw.w.Write(p) } -func (w *compressResponseWriter) Flush() { - if f, ok := w.w.(http.Flusher); ok { +func (cw *compressResponseWriter) Flush() { + if f, ok := cw.w.(http.Flusher); ok { f.Flush() } } -func (w *compressResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { - if hj, ok := w.w.(http.Hijacker); ok { +func (cw *compressResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { + if hj, ok := cw.w.(http.Hijacker); ok { return hj.Hijack() } return nil, nil, errors.New("chi/middleware: http.Hijacker is unavailable on the writer") } -func (w *compressResponseWriter) Push(target string, opts *http.PushOptions) error { - if ps, ok := w.w.(http.Pusher); ok { +func (cw *compressResponseWriter) Push(target string, opts *http.PushOptions) error { + if ps, ok := cw.w.(http.Pusher); ok { return ps.Push(target, opts) } return errors.New("chi/middleware: http.Pusher is unavailable on the writer") } -func (w *compressResponseWriter) Close() error { - if c, ok := w.w.(io.WriteCloser); ok { +func (cw *compressResponseWriter) Close() error { + if c, ok := cw.w.(io.WriteCloser); ok { return c.Close() } return errors.New("chi/middleware: io.WriteCloser is unavailable on the writer") diff --git a/vendor/github.com/go-chi/chi/middleware/content_type.go b/vendor/github.com/go-chi/chi/middleware/content_type.go index 3a2dc20af..ee4957874 100644 --- a/vendor/github.com/go-chi/chi/middleware/content_type.go +++ b/vendor/github.com/go-chi/chi/middleware/content_type.go @@ -26,6 +26,12 @@ func AllowContentType(contentTypes ...string) func(next http.Handler) http.Handl return func(next http.Handler) http.Handler { fn := func(w http.ResponseWriter, r *http.Request) { + if r.ContentLength == 0 { + // skip check for empty content body + next.ServeHTTP(w, r) + return + } + s := strings.ToLower(strings.TrimSpace(r.Header.Get("Content-Type"))) if i := strings.Index(s, ";"); i > -1 { s = s[0:i] diff --git a/vendor/github.com/go-chi/chi/tree.go b/vendor/github.com/go-chi/chi/tree.go index 4dce0a3d8..8a044f3ec 100644 --- a/vendor/github.com/go-chi/chi/tree.go +++ b/vendor/github.com/go-chi/chi/tree.go @@ -651,9 +651,6 @@ func patNextSegment(pattern string) (nodeTyp, string, string, byte, int, int) { } // Sanity check - if ws >= 0 && ws != len(pattern)-1 { - panic("chi: wildcard '*' must be the last value in a route. trim trailing text or use a '{param}' instead") - } if ps >= 0 && ws >= 0 && ws < ps { panic("chi: wildcard '*' must be the last pattern in a route, otherwise use a '{param}'") } @@ -709,7 +706,9 @@ func patNextSegment(pattern string) (nodeTyp, string, string, byte, int, int) { } // Wildcard pattern as finale - // TODO: should we panic if there is stuff after the * ??? + if ws < len(pattern)-1 { + panic("chi: wildcard '*' must be the last value in a route. trim trailing text or use a '{param}' instead") + } return ntCatchAll, "*", "", 0, ws, len(pattern) } diff --git a/vendor/github.com/gobuffalo/buffalo-plugins/plugins/command.go b/vendor/github.com/gobuffalo/buffalo-plugins/plugins/command.go index b12f42f61..25060dfc4 100644 --- a/vendor/github.com/gobuffalo/buffalo-plugins/plugins/command.go +++ b/vendor/github.com/gobuffalo/buffalo-plugins/plugins/command.go @@ -13,6 +13,8 @@ type Command struct { Aliases []string `json:"aliases,omitempty"` Binary string `json:"-"` Flags []string `json:"flags,omitempty"` + // Filters events to listen to ("" or "*") is all events + ListenFor string `json:"listen_for,omitempty"` } // Commands is a slice of Command diff --git a/vendor/github.com/gobuffalo/buffalo-plugins/plugins/version.go b/vendor/github.com/gobuffalo/buffalo-plugins/plugins/version.go index a704410c0..6a163595b 100644 --- a/vendor/github.com/gobuffalo/buffalo-plugins/plugins/version.go +++ b/vendor/github.com/gobuffalo/buffalo-plugins/plugins/version.go @@ -1,3 +1,3 @@ package plugins -const Version = "v1.11.0" +const Version = "v1.12.0" diff --git a/vendor/github.com/gobuffalo/envy/Makefile b/vendor/github.com/gobuffalo/envy/Makefile index b0db1c4f8..46aece8ff 100644 --- a/vendor/github.com/gobuffalo/envy/Makefile +++ b/vendor/github.com/gobuffalo/envy/Makefile @@ -2,23 +2,23 @@ TAGS ?= "sqlite" GO_BIN ?= go install: - packr + packr2 $(GO_BIN) install -v . deps: $(GO_BIN) get github.com/gobuffalo/release - $(GO_BIN) get github.com/gobuffalo/packr/packr + $(GO_BIN) get github.com/gobuffalo/packr/v2/packr2 $(GO_BIN) get -tags ${TAGS} -t ./... ifeq ($(GO111MODULE),on) $(GO_BIN) mod tidy endif build: - packr + packr2 $(GO_BIN) build -v . test: - packr + packr2 $(GO_BIN) test -tags ${TAGS} ./... ci-test: @@ -32,7 +32,7 @@ update: ifeq ($(GO111MODULE),on) $(GO_BIN) mod tidy endif - packr + packr2 make test make install ifeq ($(GO111MODULE),on) diff --git a/vendor/github.com/gobuffalo/envy/envy.go b/vendor/github.com/gobuffalo/envy/envy.go index a5a7a3c6f..d3995f455 100644 --- a/vendor/github.com/gobuffalo/envy/envy.go +++ b/vendor/github.com/gobuffalo/envy/envy.go @@ -195,6 +195,16 @@ func GoBin() string { return Get("GO_BIN", "go") } +func InGoPath() bool { + pwd, _ := os.Getwd() + for _, p := range GoPaths() { + if strings.HasPrefix(pwd, p) { + return true + } + } + return false +} + // GoPaths returns all possible GOPATHS that are set. func GoPaths() []string { gp := Get("GOPATH", "") diff --git a/vendor/github.com/gobuffalo/envy/go.mod b/vendor/github.com/gobuffalo/envy/go.mod index f10a49379..d951b7ce1 100644 --- a/vendor/github.com/gobuffalo/envy/go.mod +++ b/vendor/github.com/gobuffalo/envy/go.mod @@ -1,8 +1,7 @@ module github.com/gobuffalo/envy require ( - github.com/gobuffalo/packr/v2 v2.0.0-rc.14 - github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/joho/godotenv v1.3.0 github.com/rogpeppe/go-internal v1.1.0 github.com/stretchr/testify v1.3.0 diff --git a/vendor/github.com/gobuffalo/envy/go.sum b/vendor/github.com/gobuffalo/envy/go.sum index 172ff9ae8..f11ef4ce5 100644 --- a/vendor/github.com/gobuffalo/envy/go.sum +++ b/vendor/github.com/gobuffalo/envy/go.sum @@ -1,383 +1,17 @@ -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/ajg/form v0.0.0-20160822230020-523a5da1a92f/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= -github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= -github.com/codegangsta/negroni v1.0.0/go.mod h1:v0y3T5G7Y1UlFfyxFn/QLRU4a2EuNau2iZY63YTKWo0= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dustin/go-humanize v0.0.0-20180713052910-9f541cc9db5d/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/gobuffalo/buffalo v0.12.8-0.20181004233540-fac9bb505aa8/go.mod h1:sLyT7/dceRXJUxSsE813JTQtA3Eb1vjxWfo/N//vXIY= -github.com/gobuffalo/buffalo v0.13.0/go.mod h1:Mjn1Ba9wpIbpbrD+lIDMy99pQ0H0LiddMIIDGse7qT4= -github.com/gobuffalo/buffalo-plugins v1.0.2/go.mod h1:pOp/uF7X3IShFHyobahTkTLZaeUXwb0GrUTb9ngJWTs= -github.com/gobuffalo/buffalo-plugins v1.0.4/go.mod h1:pWS1vjtQ6uD17MVFWf7i3zfThrEKWlI5+PYLw/NaDB4= -github.com/gobuffalo/buffalo-plugins v1.4.3/go.mod h1:uCzTY0woez4nDMdQjkcOYKanngeUVRO2HZi7ezmAjWY= -github.com/gobuffalo/buffalo-plugins v1.5.1/go.mod h1:jbmwSZK5+PiAP9cC09VQOrGMZFCa/P0UMlIS3O12r5w= -github.com/gobuffalo/buffalo-plugins v1.6.4/go.mod h1:/+N1aophkA2jZ1ifB2O3Y9yGwu6gKOVMtUmJnbg+OZI= -github.com/gobuffalo/buffalo-plugins v1.6.5/go.mod h1:0HVkbgrVs/MnPZ/FOseDMVanCTm2RNcdM0PuXcL1NNI= -github.com/gobuffalo/buffalo-plugins v1.6.7/go.mod h1:ZGZRkzz2PiKWHs0z7QsPBOTo2EpcGRArMEym6ghKYgk= -github.com/gobuffalo/buffalo-plugins v1.6.9/go.mod h1:yYlYTrPdMCz+6/+UaXg5Jm4gN3xhsvsQ2ygVatZV5vw= -github.com/gobuffalo/buffalo-plugins v1.6.11/go.mod h1:eAA6xJIL8OuynJZ8amXjRmHND6YiusVAaJdHDN1Lu8Q= -github.com/gobuffalo/buffalo-plugins v1.8.2/go.mod h1:9te6/VjEQ7pKp7lXlDIMqzxgGpjlKoAcAANdCgoR960= -github.com/gobuffalo/buffalo-plugins v1.8.3/go.mod h1:IAWq6vjZJVXebIq2qGTLOdlXzmpyTZ5iJG5b59fza5U= -github.com/gobuffalo/buffalo-plugins v1.9.4/go.mod h1:grCV6DGsQlVzQwk6XdgcL3ZPgLm9BVxlBmXPMF8oBHI= -github.com/gobuffalo/buffalo-plugins v1.10.0 h1:oF+BJ20zenp31xJnjkFcXAMUqlrMMTicsD/UwQWCW/s= -github.com/gobuffalo/buffalo-plugins v1.10.0/go.mod h1:4osg8d9s60txLuGwXnqH+RCjPHj9K466cDFRl3PErHI= -github.com/gobuffalo/buffalo-pop v1.0.5/go.mod h1:Fw/LfFDnSmB/vvQXPvcXEjzP98Tc+AudyNWUBWKCwQ8= -github.com/gobuffalo/envy v1.6.4/go.mod h1:Abh+Jfw475/NWtYMEt+hnJWRiC8INKWibIMyNt1w2Mc= -github.com/gobuffalo/envy v1.6.5/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= -github.com/gobuffalo/envy v1.6.6/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= -github.com/gobuffalo/envy v1.6.7/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= -github.com/gobuffalo/envy v1.6.8/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= -github.com/gobuffalo/envy v1.6.9/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= -github.com/gobuffalo/envy v1.6.10/go.mod h1:X0CFllQjTV5ogsnUrg+Oks2yTI+PU2dGYBJOEI2D1Uo= -github.com/gobuffalo/envy v1.6.11/go.mod h1:Fiq52W7nrHGDggFPhn2ZCcHw4u/rqXkqo+i7FB6EAcg= -github.com/gobuffalo/events v1.0.3/go.mod h1:Txo8WmqScapa7zimEQIwgiJBvMECMe9gJjsKNPN3uZw= -github.com/gobuffalo/events v1.0.7/go.mod h1:z8txf6H9jWhQ5Scr7YPLWg/cgXBRj8Q4uYI+rsVCCSQ= -github.com/gobuffalo/events v1.0.8/go.mod h1:A5KyqT1sA+3GJiBE4QKZibse9mtOcI9nw8gGrDdqYGs= -github.com/gobuffalo/events v1.1.3/go.mod h1:9yPGWYv11GENtzrIRApwQRMYSbUgCsZ1w6R503fCfrk= -github.com/gobuffalo/events v1.1.4/go.mod h1:09/YRRgZHEOts5Isov+g9X2xajxdvOAcUuAHIX/O//A= -github.com/gobuffalo/events v1.1.5/go.mod h1:3YUSzgHfYctSjEjLCWbkXP6djH2M+MLaVRzb4ymbAK0= -github.com/gobuffalo/events v1.1.7/go.mod h1:6fGqxH2ing5XMb3EYRq9LEkVlyPGs4oO/eLzh+S8CxY= -github.com/gobuffalo/events v1.1.8/go.mod h1:UFy+W6X6VbCWS8k2iT81HYX65dMtiuVycMy04cplt/8= -github.com/gobuffalo/events v1.1.9 h1:ukq5ys/h0TuiX7eLJyZBD1dJOy0r19JTEYmgXKG9j+Y= -github.com/gobuffalo/events v1.1.9/go.mod h1:/0nf8lMtP5TkgNbzYxR6Bl4GzBy5s5TebgNTdRfRbPM= -github.com/gobuffalo/fizz v1.0.12/go.mod h1:C0sltPxpYK8Ftvf64kbsQa2yiCZY4RZviurNxXdAKwc= -github.com/gobuffalo/flect v0.0.0-20180907193754-dc14d8acaf9f/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181002182613-4571df4b1daf/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181007231023-ae7ed6bfe683/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181018182602-fd24a256709f/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181019110701-3d6f0b585514/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181024204909-8f6be1a8c6c2/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181104133451-1f6e9779237a/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181114183036-47375f6d8328/go.mod h1:0HvNbHdfh+WOvDSIASqJOSxTOWSxCCUF++k/Y53v9rI= -github.com/gobuffalo/flect v0.0.0-20181210151238-24a2b68e0316/go.mod h1:en58vff74S9b99Eg42Dr+/9yPu437QjlNsO/hBYPuOk= -github.com/gobuffalo/flect v0.0.0-20190104192022-4af577e09bf2 h1:51NF9n6h4nGMooU5ALB+uJCM0UOmcWjAegIZb/ePtoE= -github.com/gobuffalo/flect v0.0.0-20190104192022-4af577e09bf2/go.mod h1:en58vff74S9b99Eg42Dr+/9yPu437QjlNsO/hBYPuOk= -github.com/gobuffalo/genny v0.0.0-20180924032338-7af3a40f2252/go.mod h1:tUTQOogrr7tAQnhajMSH6rv1BVev34H2sa1xNHMy94g= -github.com/gobuffalo/genny v0.0.0-20181003150629-3786a0744c5d/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= -github.com/gobuffalo/genny v0.0.0-20181005145118-318a41a134cc/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= -github.com/gobuffalo/genny v0.0.0-20181007153042-b8de7d566757/go.mod h1:+oG5Ljrw04czAHbPXREwaFojJbpUvcIy4DiOnbEJFTA= -github.com/gobuffalo/genny v0.0.0-20181012161047-33e5f43d83a6/go.mod h1:+oG5Ljrw04czAHbPXREwaFojJbpUvcIy4DiOnbEJFTA= -github.com/gobuffalo/genny v0.0.0-20181017160347-90a774534246/go.mod h1:+oG5Ljrw04czAHbPXREwaFojJbpUvcIy4DiOnbEJFTA= -github.com/gobuffalo/genny v0.0.0-20181024195656-51392254bf53/go.mod h1:o9GEH5gn5sCKLVB5rHFC4tq40rQ3VRUzmx6WwmaqISE= -github.com/gobuffalo/genny v0.0.0-20181025145300-af3f81d526b8/go.mod h1:uZ1fFYvdcP8mu0B/Ynarf6dsGvp7QFIpk/QACUuFUVI= -github.com/gobuffalo/genny v0.0.0-20181027191429-94d6cfb5c7fc/go.mod h1:x7SkrQQBx204Y+O9EwRXeszLJDTaWN0GnEasxgLrQTA= -github.com/gobuffalo/genny v0.0.0-20181027195209-3887b7171c4f/go.mod h1:JbKx8HSWICu5zyqWOa0dVV1pbbXOHusrSzQUprW6g+w= -github.com/gobuffalo/genny v0.0.0-20181106193839-7dcb0924caf1/go.mod h1:x61yHxvbDCgQ/7cOAbJCacZQuHgB0KMSzoYcw5debjU= -github.com/gobuffalo/genny v0.0.0-20181107223128-f18346459dbe/go.mod h1:utQD3aKKEsdb03oR+Vi/6ztQb1j7pO10N3OBoowRcSU= -github.com/gobuffalo/genny v0.0.0-20181114215459-0a4decd77f5d/go.mod h1:kN2KZ8VgXF9VIIOj/GM0Eo7YK+un4Q3tTreKOf0q1ng= -github.com/gobuffalo/genny v0.0.0-20181119162812-e8ff4adce8bb/go.mod h1:BA9htSe4bZwBDJLe8CUkoqkypq3hn3+CkoHqVOW718E= -github.com/gobuffalo/genny v0.0.0-20181127225641-2d959acc795b/go.mod h1:l54xLXNkteX/PdZ+HlgPk1qtcrgeOr3XUBBPDbH+7CQ= -github.com/gobuffalo/genny v0.0.0-20181128191930-77e34f71ba2a/go.mod h1:FW/D9p7cEEOqxYA71/hnrkOWm62JZ5ZNxcNIVJEaWBU= -github.com/gobuffalo/genny v0.0.0-20181203165245-fda8bcce96b1/go.mod h1:wpNSANu9UErftfiaAlz1pDZclrYzLtO5lALifODyjuM= -github.com/gobuffalo/genny v0.0.0-20181203201232-849d2c9534ea/go.mod h1:wpNSANu9UErftfiaAlz1pDZclrYzLtO5lALifODyjuM= -github.com/gobuffalo/genny v0.0.0-20181206121324-d6fb8a0dbe36/go.mod h1:wpNSANu9UErftfiaAlz1pDZclrYzLtO5lALifODyjuM= -github.com/gobuffalo/genny v0.0.0-20181207164119-84844398a37d/go.mod h1:y0ysCHGGQf2T3vOhCrGHheYN54Y/REj0ayd0Suf4C/8= -github.com/gobuffalo/genny v0.0.0-20181211165820-e26c8466f14d/go.mod h1:sHnK+ZSU4e2feXP3PA29ouij6PUEiN+RCwECjCTB3yM= -github.com/gobuffalo/genny v0.0.0-20190104222617-a71664fc38e7/go.mod h1:QPsQ1FnhEsiU8f+O0qKWXz2RE4TiDqLVChWkBuh1WaY= -github.com/gobuffalo/genny v0.0.0-20190112155932-f31a84fcacf5 h1:boQS3dA9PxhyufJEWIILrG6pJQbDnpwP2rFyvWacdoY= -github.com/gobuffalo/genny v0.0.0-20190112155932-f31a84fcacf5/go.mod h1:CIaHCrSIuJ4il6ka3Hub4DR4adDrGoXGEEt2FbBxoIo= -github.com/gobuffalo/github_flavored_markdown v1.0.4/go.mod h1:uRowCdK+q8d/RF0Kt3/DSalaIXbb0De/dmTqMQdkQ4I= -github.com/gobuffalo/github_flavored_markdown v1.0.5/go.mod h1:U0643QShPF+OF2tJvYNiYDLDGDuQmJZXsf/bHOJPsMY= -github.com/gobuffalo/github_flavored_markdown v1.0.7/go.mod h1:w93Pd9Lz6LvyQXEG6DktTPHkOtCbr+arAD5mkwMzXLI= -github.com/gobuffalo/httptest v1.0.2/go.mod h1:7T1IbSrg60ankme0aDLVnEY0h056g9M1/ZvpVThtB7E= -github.com/gobuffalo/licenser v0.0.0-20180924033006-eae28e638a42/go.mod h1:Ubo90Np8gpsSZqNScZZkVXXAo5DGhTb+WYFIjlnog8w= -github.com/gobuffalo/licenser v0.0.0-20181025145548-437d89de4f75/go.mod h1:x3lEpYxkRG/XtGCUNkio+6RZ/dlOvLzTI9M1auIwFcw= -github.com/gobuffalo/licenser v0.0.0-20181027200154-58051a75da95/go.mod h1:BzhaaxGd1tq1+OLKObzgdCV9kqVhbTulxOpYbvMQWS0= -github.com/gobuffalo/licenser v0.0.0-20181109171355-91a2a7aac9a7/go.mod h1:m+Ygox92pi9bdg+gVaycvqE8RVSjZp7mWw75+K5NPHk= -github.com/gobuffalo/licenser v0.0.0-20181128165715-cc7305f8abed/go.mod h1:oU9F9UCE+AzI/MueCKZamsezGOOHfSirltllOVeRTAE= -github.com/gobuffalo/licenser v0.0.0-20181203160806-fe900bbede07/go.mod h1:ph6VDNvOzt1CdfaWC+9XwcBnlSTBz2j49PBwum6RFaU= -github.com/gobuffalo/licenser v0.0.0-20181211173111-f8a311c51159/go.mod h1:ve/Ue99DRuvnTaLq2zKa6F4KtHiYf7W046tDjuGYPfM= -github.com/gobuffalo/logger v0.0.0-20181022175615-46cfb361fc27/go.mod h1:8sQkgyhWipz1mIctHF4jTxmJh1Vxhp7mP8IqbljgJZo= -github.com/gobuffalo/logger v0.0.0-20181027144941-73d08d2bb969/go.mod h1:7uGg2duHKpWnN4+YmyKBdLXfhopkAdVM6H3nKbyFbz8= -github.com/gobuffalo/logger v0.0.0-20181027193913-9cf4dd0efe46/go.mod h1:7uGg2duHKpWnN4+YmyKBdLXfhopkAdVM6H3nKbyFbz8= -github.com/gobuffalo/logger v0.0.0-20181109185836-3feeab578c17/go.mod h1:oNErH0xLe+utO+OW8ptXMSA5DkiSEDW1u3zGIt8F9Ew= -github.com/gobuffalo/logger v0.0.0-20181117211126-8e9b89b7c264/go.mod h1:5etB91IE0uBlw9k756fVKZJdS+7M7ejVhmpXXiSFj0I= -github.com/gobuffalo/logger v0.0.0-20181127160119-5b956e21995c/go.mod h1:+HxKANrR9VGw9yN3aOAppJKvhO05ctDi63w4mDnKv2U= -github.com/gobuffalo/makr v1.1.5/go.mod h1:Y+o0btAH1kYAMDJW/TX3+oAXEu0bmSLLoC9mIFxtzOw= -github.com/gobuffalo/mapi v1.0.0/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/meta v0.0.0-20181018155829-df62557efcd3/go.mod h1:XTTOhwMNryif3x9LkTTBO/Llrveezd71u3quLd0u7CM= -github.com/gobuffalo/meta v0.0.0-20181018192820-8c6cef77dab3/go.mod h1:E94EPzx9NERGCY69UWlcj6Hipf2uK/vnfrF4QD0plVE= -github.com/gobuffalo/meta v0.0.0-20181025145500-3a985a084b0a/go.mod h1:YDAKBud2FP7NZdruCSlmTmDOZbVSa6bpK7LJ/A/nlKg= -github.com/gobuffalo/meta v0.0.0-20181114191255-b130ebedd2f7/go.mod h1:K6cRZ29ozr4Btvsqkjvg5nDFTLOgTqf03KA70Ks0ypE= -github.com/gobuffalo/meta v0.0.0-20181127070345-0d7e59dd540b/go.mod h1:RLO7tMvE0IAKAM8wny1aN12pvEKn7EtkBLkUZR00Qf8= -github.com/gobuffalo/mw-basicauth v1.0.3/go.mod h1:dg7+ilMZOKnQFHDefUzUHufNyTswVUviCBgF244C1+0= -github.com/gobuffalo/mw-contenttype v0.0.0-20180802152300-74f5a47f4d56/go.mod h1:7EvcmzBbeCvFtQm5GqF9ys6QnCxz2UM1x0moiWLq1No= -github.com/gobuffalo/mw-csrf v0.0.0-20180802151833-446ff26e108b/go.mod h1:sbGtb8DmDZuDUQoxjr8hG1ZbLtZboD9xsn6p77ppcHo= -github.com/gobuffalo/mw-forcessl v0.0.0-20180802152810-73921ae7a130/go.mod h1:JvNHRj7bYNAMUr/5XMkZaDcw3jZhUZpsmzhd//FFWmQ= -github.com/gobuffalo/mw-i18n v0.0.0-20180802152014-e3060b7e13d6/go.mod h1:91AQfukc52A6hdfIfkxzyr+kpVYDodgAeT5cjX1UIj4= -github.com/gobuffalo/mw-paramlogger v0.0.0-20181005191442-d6ee392ec72e/go.mod h1:6OJr6VwSzgJMqWMj7TYmRUqzNe2LXu/W1rRW4MAz/ME= -github.com/gobuffalo/mw-tokenauth v0.0.0-20181001105134-8545f626c189/go.mod h1:UqBF00IfKvd39ni5+yI5MLMjAf4gX7cDKN/26zDOD6c= -github.com/gobuffalo/packd v0.0.0-20181027182251-01ad393492c8/go.mod h1:SmdBdhj6uhOsg1Ui4SFAyrhuc7U4VCildosO5IDJ3lc= -github.com/gobuffalo/packd v0.0.0-20181027190505-aafc0d02c411/go.mod h1:SmdBdhj6uhOsg1Ui4SFAyrhuc7U4VCildosO5IDJ3lc= -github.com/gobuffalo/packd v0.0.0-20181027194105-7ae579e6d213/go.mod h1:SmdBdhj6uhOsg1Ui4SFAyrhuc7U4VCildosO5IDJ3lc= -github.com/gobuffalo/packd v0.0.0-20181031195726-c82734870264/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= -github.com/gobuffalo/packd v0.0.0-20181104210303-d376b15f8e96/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= -github.com/gobuffalo/packd v0.0.0-20181111195323-b2e760a5f0ff/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= -github.com/gobuffalo/packd v0.0.0-20181114190715-f25c5d2471d7/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= -github.com/gobuffalo/packd v0.0.0-20181124090624-311c6248e5fb/go.mod h1:Foenia9ZvITEvG05ab6XpiD5EfBHPL8A6hush8SJ0o8= -github.com/gobuffalo/packd v0.0.0-20181207120301-c49825f8f6f4/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= -github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687 h1:uZ+G4JprR0UEq0aHZs+6eP7TEZuFfrIkmQWejIBV/QQ= -github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= -github.com/gobuffalo/packr v1.13.7/go.mod h1:KkinLIn/n6+3tVXMwg6KkNvWwVsrRAz4ph+jgpk3Z24= -github.com/gobuffalo/packr v1.15.0/go.mod h1:t5gXzEhIviQwVlNx/+3SfS07GS+cZ2hn76WLzPp6MGI= -github.com/gobuffalo/packr v1.15.1/go.mod h1:IeqicJ7jm8182yrVmNbM6PR4g79SjN9tZLH8KduZZwE= -github.com/gobuffalo/packr v1.19.0/go.mod h1:MstrNkfCQhd5o+Ct4IJ0skWlxN8emOq8DsoT1G98VIU= -github.com/gobuffalo/packr v1.20.0/go.mod h1:JDytk1t2gP+my1ig7iI4NcVaXr886+N0ecUga6884zw= -github.com/gobuffalo/packr v1.21.0/go.mod h1:H00jGfj1qFKxscFJSw8wcL4hpQtPe1PfU2wa6sg/SR0= -github.com/gobuffalo/packr/v2 v2.0.0-rc.8/go.mod h1:y60QCdzwuMwO2R49fdQhsjCPv7tLQFR0ayzxxla9zes= -github.com/gobuffalo/packr/v2 v2.0.0-rc.9/go.mod h1:fQqADRfZpEsgkc7c/K7aMew3n4aF1Kji7+lIZeR98Fc= -github.com/gobuffalo/packr/v2 v2.0.0-rc.10/go.mod h1:4CWWn4I5T3v4c1OsJ55HbHlUEKNWMITG5iIkdr4Px4w= -github.com/gobuffalo/packr/v2 v2.0.0-rc.11/go.mod h1:JoieH/3h3U4UmatmV93QmqyPUdf4wVM9HELaHEu+3fk= -github.com/gobuffalo/packr/v2 v2.0.0-rc.12/go.mod h1:FV1zZTsVFi1DSCboO36Xgs4pzCZBjB/tDV9Cz/lSaR8= -github.com/gobuffalo/packr/v2 v2.0.0-rc.13/go.mod h1:2Mp7GhBFMdJlOK8vGfl7SYtfMP3+5roE39ejlfjw0rA= -github.com/gobuffalo/packr/v2 v2.0.0-rc.14 h1:K41dNilNHDbDgCL3UE6K02JGuN89pjvD9oG99X7Om2s= -github.com/gobuffalo/packr/v2 v2.0.0-rc.14/go.mod h1:06otbrNvDKO1eNQ3b8hst+1010UooI2MFg+B2Ze4MV8= -github.com/gobuffalo/plush v3.7.16+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plush v3.7.20+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plush v3.7.21+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plush v3.7.22+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plush v3.7.23+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plush v3.7.30+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plush v3.7.31+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plush v3.7.32+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plushgen v0.0.0-20181128164830-d29dcb966cb2/go.mod h1:r9QwptTFnuvSaSRjpSp4S2/4e2D3tJhARYbvEBcKSb4= -github.com/gobuffalo/plushgen v0.0.0-20181203163832-9fc4964505c2/go.mod h1:opEdT33AA2HdrIwK1aibqnTJDVVKXC02Bar/GT1YRVs= -github.com/gobuffalo/plushgen v0.0.0-20181207152837-eedb135bd51b/go.mod h1:Lcw7HQbEVm09sAQrCLzIxuhFbB3nAgp4c55E+UlynR0= -github.com/gobuffalo/plushgen v0.0.0-20190104222512-177cd2b872b3/go.mod h1:tYxCozi8X62bpZyKXYHw1ncx2ZtT2nFvG42kuLwYjoc= -github.com/gobuffalo/pop v4.8.2+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= -github.com/gobuffalo/pop v4.8.3+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= -github.com/gobuffalo/pop v4.8.4+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= -github.com/gobuffalo/release v1.0.35/go.mod h1:VtHFAKs61vO3wboCec5xr9JPTjYyWYcvaM3lclkc4x4= -github.com/gobuffalo/release v1.0.38/go.mod h1:VtHFAKs61vO3wboCec5xr9JPTjYyWYcvaM3lclkc4x4= -github.com/gobuffalo/release v1.0.42/go.mod h1:RPs7EtafH4oylgetOJpGP0yCZZUiO4vqHfTHJjSdpug= -github.com/gobuffalo/release v1.0.52/go.mod h1:RPs7EtafH4oylgetOJpGP0yCZZUiO4vqHfTHJjSdpug= -github.com/gobuffalo/release v1.0.53/go.mod h1:FdF257nd8rqhNaqtDWFGhxdJ/Ig4J7VcS3KL7n/a+aA= -github.com/gobuffalo/release v1.0.54/go.mod h1:Pe5/RxRa/BE8whDpGfRqSI7D1a0evGK1T4JDm339tJc= -github.com/gobuffalo/release v1.0.61/go.mod h1:mfIO38ujUNVDlBziIYqXquYfBF+8FDHUjKZgYC1Hj24= -github.com/gobuffalo/release v1.0.72/go.mod h1:NP5NXgg/IX3M5XmHmWR99D687/3Dt9qZtTK/Lbwc1hU= -github.com/gobuffalo/release v1.1.1/go.mod h1:Sluak1Xd6kcp6snkluR1jeXAogdJZpFFRzTYRs/2uwg= -github.com/gobuffalo/release v1.1.3/go.mod h1:CuXc5/m+4zuq8idoDt1l4va0AXAn/OSs08uHOfMVr8E= -github.com/gobuffalo/release v1.1.6/go.mod h1:18naWa3kBsqO0cItXZNJuefCKOENpbbUIqRL1g+p6z0= -github.com/gobuffalo/shoulders v1.0.1/go.mod h1:V33CcVmaQ4gRUmHKwq1fiTXuf8Gp/qjQBUL5tHPmvbA= -github.com/gobuffalo/syncx v0.0.0-20181120191700-98333ab04150/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= -github.com/gobuffalo/syncx v0.0.0-20181120194010-558ac7de985f/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= -github.com/gobuffalo/tags v2.0.11+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= -github.com/gobuffalo/tags v2.0.14+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= -github.com/gobuffalo/tags v2.0.15+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= -github.com/gobuffalo/uuid v2.0.3+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= -github.com/gobuffalo/uuid v2.0.4+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= -github.com/gobuffalo/uuid v2.0.5+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= -github.com/gobuffalo/validate v2.0.3+incompatible/go.mod h1:N+EtDe0J8252BgfzQUChBgfd6L93m9weay53EWFVsMM= -github.com/gobuffalo/x v0.0.0-20181003152136-452098b06085/go.mod h1:WevpGD+5YOreDJznWevcn8NTmQEW5STSBgIkpkjzqXc= -github.com/gobuffalo/x v0.0.0-20181007152206-913e47c59ca7/go.mod h1:9rDPXaB3kXdKWzMc4odGQQdG2e2DIEmANy5aSJ9yesY= -github.com/gofrs/uuid v3.1.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/pat v0.0.0-20180118222023-199c85a7f6d1/go.mod h1:YeAe0gNeiNT5hoiZRI4yiOky6jVdNvfO2N6Kav/HmxY= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.1.2/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= -github.com/gorilla/sessions v1.1.3/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= -github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= -github.com/jmoiron/sqlx v0.0.0-20180614180643-0dae4fefe7c0/go.mod h1:IiEW3SEiiErVyFdH8NTuWjSifiEQKUoyK3LNqr2kCHU= -github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= -github.com/karrick/godirwalk v1.7.7/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= -github.com/karrick/godirwalk v1.7.8 h1:VfG72pyIxgtC7+3X9CMHI0AOl4LwyRAg98WAgsvffi8= -github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/markbates/deplist v1.0.4/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= -github.com/markbates/deplist v1.0.5/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= -github.com/markbates/going v1.0.2/go.mod h1:UWCk3zm0UKefHZ7l8BNqi26UyiEMniznk8naLdTcy6c= -github.com/markbates/grift v1.0.4/go.mod h1:wbmtW74veyx+cgfwFhlnnMWqhoz55rnHR47oMXzsyVs= -github.com/markbates/hmax v1.0.0/go.mod h1:cOkR9dktiESxIMu+65oc/r/bdY4bE8zZw3OLhLx0X2c= -github.com/markbates/inflect v1.0.0/go.mod h1:oTeZL2KHA7CUX6X+fovmK9OvIOFuqu0TwdQrZjLTh88= -github.com/markbates/inflect v1.0.1/go.mod h1:uv3UVNBe5qBIfCm8O8Q+DW+S1EopeyINj+Ikhc7rnCk= -github.com/markbates/inflect v1.0.3/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzferVeWqbgNs= -github.com/markbates/inflect v1.0.4/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzferVeWqbgNs= -github.com/markbates/oncer v0.0.0-20180924031910-e862a676800b/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/oncer v0.0.0-20180924034138-723ad0170a46/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/oncer v0.0.0-20181014194634-05fccaae8fc4/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/refresh v1.4.10/go.mod h1:NDPHvotuZmTmesXxr95C9bjlw1/0frJwtME2dzcVKhc= -github.com/markbates/safe v1.0.0/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/markbates/sigtx v1.0.0/go.mod h1:QF1Hv6Ic6Ca6W+T+DL0Y/ypborFKyvUY9HmuCD4VeTc= -github.com/markbates/willie v1.0.9/go.mod h1:fsrFVWl91+gXpx/6dv715j7i11fYPfZ9ZGfH0DQzY7w= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.0.0/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/monoculum/formam v0.0.0-20180901015400-4e68be1d79ba/go.mod h1:RKgILGEJq24YyJ2ban8EO0RUVSJlF1pGsEvoLEACr/Q= -github.com/nicksnyder/go-i18n v1.10.0/go.mod h1:HrK7VCrbOvQoUAQ7Vpy7i87N7JZZZ7R2xBGjv0j365Q= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.0.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.1.0 h1:g0fH8RicVgNl+zVZDCDfbdWxAWoAEJyI7I3TZYXFiig= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= -github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= -github.com/shurcooL/highlight_go v0.0.0-20170515013102-78fb10f4a5f8/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= -github.com/shurcooL/octicon v0.0.0-20180602230221-c42b0e3b24d9/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= -github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.1.0/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= -github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.3.0 h1:hI/7Q+DtNZ2kINb6qt/lS+IyXnHQe9e90POfeewL/ME= -github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= -github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.0/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.2.1/go.mod h1:P4AexN0a+C9tGAnUFNwDMYYZv3pjFuvmeiMyKRaNVlI= -github.com/spf13/viper v1.3.1/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/unrolled/secure v0.0.0-20180918153822-f340ee86eb8b/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= -github.com/unrolled/secure v0.0.0-20181005190816-ff9db2ff917f/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181001203147-e3636079e1a4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181024171144-74cb1d3d52f4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181025113841-85e1b3f9139a/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181106171534-e4dc69e5b2fd/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181127143415-eb0de9b17e85/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190102171810-8d7daa0c54b3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc h1:F5tKCVGp+MUAHhKp5MZtGqAlGX3+oCsiL1Q629FL90M= -golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180816102801-aaf60122140d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180921000356-2f5d2388922f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180926154720-4dfa2610cdf3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181017193950-04a2e542c03f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181207154023-610586996380/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180906133057-8cf3aee42992/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180921163948-d47a0f339242/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180927150500-dad3d9fb7b6e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181005133103-4497e2df6f9e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181011152604-fa43e7bc11ba/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181022134430-8a28ead16f52/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181024145615-5cd93ef61a7c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181025063200-d989b31c8746/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026064943-731415f00dce/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181106135930-3a76605856fd/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181206074257-70b957f3b65e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190102155601-82a175fd1598 h1:S8GOgffXV1X3fpVG442QRfWOt0iFl79eHJ7OPt725bo= -golang.org/x/sys v0.0.0-20190102155601-82a175fd1598/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181003024731-2f84ea8ef872/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181006002542-f60d9635b16a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181008205924-a2b3f7f249e9/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181013182035-5e66757b835f/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181017214349-06f26fdaaa28/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181024171208-a2dc47679d30/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181026183834-f60e5f99f081/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181105230042-78dc5bac0cac/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181107215632-34b416bd17b3/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181114190951-94339b83286c/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181119130350-139d099f6620/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181127195227-b4e97c0ed882/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181127232545-e782529d0ddd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181203210056-e5f3ab76ea4b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181205224935-3576414c54a4/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181206194817-bcd4e47d0288/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181207183836-8bc39b988060/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181212172921-837e80568c09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190102213336-ca9055ed7d04/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190104182027-498d95493402/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190111214448-fc1d57b08d7b h1:Z5QW7z0ycYrOVRYv3z4FeSZbRNvVwUfXHKQSZKb5A6w= -golang.org/x/tools v0.0.0-20190111214448-fc1d57b08d7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= -gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= -gopkg.in/mail.v2 v2.0.0-20180731213649-a0242b2233b4/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/github.com/gobuffalo/envy/shoulders.md b/vendor/github.com/gobuffalo/envy/shoulders.md index 120330be3..6c9cd7bdf 100644 --- a/vendor/github.com/gobuffalo/envy/shoulders.md +++ b/vendor/github.com/gobuffalo/envy/shoulders.md @@ -1,6 +1,6 @@ -# github.com/gobuffalo/envy Stands on the Shoulders of Giants +# `github.com/gobuffalo/envy` Stands on the Shoulders of Giants -github.com/gobuffalo/envy does not try to reinvent the wheel! Instead, it uses the already great wheels developed by the Go community and puts them all together in the best way possible. Without these giants this project would not be possible. Please make sure to check them out and thank them for all of their hard work. +`github.com/gobuffalo/envy` does not try to reinvent the wheel! Instead, it uses the already great wheels developed by the Go community and puts them all together in the best way possible. Without these giants this project would not be possible. Please make sure to check them out and thank them for all of their hard work. Thank you to the following **GIANTS**: diff --git a/vendor/github.com/gobuffalo/envy/version.go b/vendor/github.com/gobuffalo/envy/version.go index f0de31246..0bff116a5 100644 --- a/vendor/github.com/gobuffalo/envy/version.go +++ b/vendor/github.com/gobuffalo/envy/version.go @@ -1,3 +1,3 @@ package envy -const Version = "v1.6.12" +const Version = "v1.6.15" diff --git a/vendor/github.com/gobuffalo/events/filter.go b/vendor/github.com/gobuffalo/events/filter.go index 5c9bc28ed..1c6a01967 100644 --- a/vendor/github.com/gobuffalo/events/filter.go +++ b/vendor/github.com/gobuffalo/events/filter.go @@ -10,6 +10,9 @@ import ( // the original listener wrapped in a new listener // that filters incoming events by the Kind func Filter(s string, fn Listener) Listener { + if s == "" || s == "*" { + return fn + } rx := regexp.MustCompile(s) return func(e Event) { if rx.MatchString(e.Kind) { diff --git a/vendor/github.com/gobuffalo/events/go.mod b/vendor/github.com/gobuffalo/events/go.mod index 137bdecb7..2619e4c29 100644 --- a/vendor/github.com/gobuffalo/events/go.mod +++ b/vendor/github.com/gobuffalo/events/go.mod @@ -1,14 +1,12 @@ module github.com/gobuffalo/events require ( - github.com/gobuffalo/buffalo-plugins v1.10.0 - github.com/gobuffalo/envy v1.6.11 + github.com/gobuffalo/buffalo-plugins v1.12.0 + github.com/gobuffalo/envy v1.6.12 github.com/gobuffalo/mapi v1.0.1 - github.com/gobuffalo/packr/v2 v2.0.0-rc.13 + github.com/gobuffalo/packr/v2 v2.0.0-rc.15 github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2 github.com/markbates/safe v1.0.1 github.com/pkg/errors v0.8.1 github.com/stretchr/testify v1.3.0 - golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 // indirect - golang.org/x/sys v0.0.0-20190102155601-82a175fd1598 // indirect ) diff --git a/vendor/github.com/gobuffalo/events/go.sum b/vendor/github.com/gobuffalo/events/go.sum index ba266ebbc..feda9f952 100644 --- a/vendor/github.com/gobuffalo/events/go.sum +++ b/vendor/github.com/gobuffalo/events/go.sum @@ -32,8 +32,10 @@ github.com/gobuffalo/buffalo-plugins v1.6.11/go.mod h1:eAA6xJIL8OuynJZ8amXjRmHND github.com/gobuffalo/buffalo-plugins v1.8.2/go.mod h1:9te6/VjEQ7pKp7lXlDIMqzxgGpjlKoAcAANdCgoR960= github.com/gobuffalo/buffalo-plugins v1.8.3/go.mod h1:IAWq6vjZJVXebIq2qGTLOdlXzmpyTZ5iJG5b59fza5U= github.com/gobuffalo/buffalo-plugins v1.9.4/go.mod h1:grCV6DGsQlVzQwk6XdgcL3ZPgLm9BVxlBmXPMF8oBHI= -github.com/gobuffalo/buffalo-plugins v1.10.0 h1:oF+BJ20zenp31xJnjkFcXAMUqlrMMTicsD/UwQWCW/s= github.com/gobuffalo/buffalo-plugins v1.10.0/go.mod h1:4osg8d9s60txLuGwXnqH+RCjPHj9K466cDFRl3PErHI= +github.com/gobuffalo/buffalo-plugins v1.11.0/go.mod h1:rtIvAYRjYibgmWhnjKmo7OadtnxuMG5ZQLr25ozAzjg= +github.com/gobuffalo/buffalo-plugins v1.12.0 h1:5rvYQ7mwfPwUW9zqcMd9ahWtPVOOouMKZjv88q45Z7c= +github.com/gobuffalo/buffalo-plugins v1.12.0/go.mod h1:kw4Mj2vQXqe4X5TI36PEQgswbL30heGQwJEeDKd1v+4= github.com/gobuffalo/buffalo-pop v1.0.5/go.mod h1:Fw/LfFDnSmB/vvQXPvcXEjzP98Tc+AudyNWUBWKCwQ8= github.com/gobuffalo/envy v1.6.4/go.mod h1:Abh+Jfw475/NWtYMEt+hnJWRiC8INKWibIMyNt1w2Mc= github.com/gobuffalo/envy v1.6.5/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= @@ -43,6 +45,8 @@ github.com/gobuffalo/envy v1.6.8/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9k github.com/gobuffalo/envy v1.6.9/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= github.com/gobuffalo/envy v1.6.10/go.mod h1:X0CFllQjTV5ogsnUrg+Oks2yTI+PU2dGYBJOEI2D1Uo= github.com/gobuffalo/envy v1.6.11/go.mod h1:Fiq52W7nrHGDggFPhn2ZCcHw4u/rqXkqo+i7FB6EAcg= +github.com/gobuffalo/envy v1.6.12 h1:zkhss8DXz/pty2HAyA8BnvWMTYxo4gjd4+WCnYovoxY= +github.com/gobuffalo/envy v1.6.12/go.mod h1:qJNrJhKkZpEW0glh5xP2syQHH5kgdmgsKss2Kk8PTP0= github.com/gobuffalo/events v1.0.3/go.mod h1:Txo8WmqScapa7zimEQIwgiJBvMECMe9gJjsKNPN3uZw= github.com/gobuffalo/events v1.0.7/go.mod h1:z8txf6H9jWhQ5Scr7YPLWg/cgXBRj8Q4uYI+rsVCCSQ= github.com/gobuffalo/events v1.0.8/go.mod h1:A5KyqT1sA+3GJiBE4QKZibse9mtOcI9nw8gGrDdqYGs= @@ -51,6 +55,7 @@ github.com/gobuffalo/events v1.1.4/go.mod h1:09/YRRgZHEOts5Isov+g9X2xajxdvOAcUuA github.com/gobuffalo/events v1.1.5/go.mod h1:3YUSzgHfYctSjEjLCWbkXP6djH2M+MLaVRzb4ymbAK0= github.com/gobuffalo/events v1.1.7/go.mod h1:6fGqxH2ing5XMb3EYRq9LEkVlyPGs4oO/eLzh+S8CxY= github.com/gobuffalo/events v1.1.8/go.mod h1:UFy+W6X6VbCWS8k2iT81HYX65dMtiuVycMy04cplt/8= +github.com/gobuffalo/events v1.1.9/go.mod h1:/0nf8lMtP5TkgNbzYxR6Bl4GzBy5s5TebgNTdRfRbPM= github.com/gobuffalo/fizz v1.0.12/go.mod h1:C0sltPxpYK8Ftvf64kbsQa2yiCZY4RZviurNxXdAKwc= github.com/gobuffalo/flect v0.0.0-20180907193754-dc14d8acaf9f/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= github.com/gobuffalo/flect v0.0.0-20181002182613-4571df4b1daf/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= @@ -61,8 +66,9 @@ github.com/gobuffalo/flect v0.0.0-20181024204909-8f6be1a8c6c2/go.mod h1:rCiQgmAE github.com/gobuffalo/flect v0.0.0-20181104133451-1f6e9779237a/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= github.com/gobuffalo/flect v0.0.0-20181114183036-47375f6d8328/go.mod h1:0HvNbHdfh+WOvDSIASqJOSxTOWSxCCUF++k/Y53v9rI= github.com/gobuffalo/flect v0.0.0-20181210151238-24a2b68e0316/go.mod h1:en58vff74S9b99Eg42Dr+/9yPu437QjlNsO/hBYPuOk= -github.com/gobuffalo/flect v0.0.0-20190104192022-4af577e09bf2 h1:51NF9n6h4nGMooU5ALB+uJCM0UOmcWjAegIZb/ePtoE= github.com/gobuffalo/flect v0.0.0-20190104192022-4af577e09bf2/go.mod h1:en58vff74S9b99Eg42Dr+/9yPu437QjlNsO/hBYPuOk= +github.com/gobuffalo/flect v0.0.0-20190117212819-a62e61d96794 h1:HZOs07hF3AmoaUj4HJQHV5RqfOuGnPZI7aFcireIrww= +github.com/gobuffalo/flect v0.0.0-20190117212819-a62e61d96794/go.mod h1:397QT6v05LkZkn07oJXXT6y9FCfwC8Pug0WA2/2mE9k= github.com/gobuffalo/genny v0.0.0-20180924032338-7af3a40f2252/go.mod h1:tUTQOogrr7tAQnhajMSH6rv1BVev34H2sa1xNHMy94g= github.com/gobuffalo/genny v0.0.0-20181003150629-3786a0744c5d/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= github.com/gobuffalo/genny v0.0.0-20181005145118-318a41a134cc/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= @@ -84,8 +90,10 @@ github.com/gobuffalo/genny v0.0.0-20181203201232-849d2c9534ea/go.mod h1:wpNSANu9 github.com/gobuffalo/genny v0.0.0-20181206121324-d6fb8a0dbe36/go.mod h1:wpNSANu9UErftfiaAlz1pDZclrYzLtO5lALifODyjuM= github.com/gobuffalo/genny v0.0.0-20181207164119-84844398a37d/go.mod h1:y0ysCHGGQf2T3vOhCrGHheYN54Y/REj0ayd0Suf4C/8= github.com/gobuffalo/genny v0.0.0-20181211165820-e26c8466f14d/go.mod h1:sHnK+ZSU4e2feXP3PA29ouij6PUEiN+RCwECjCTB3yM= -github.com/gobuffalo/genny v0.0.0-20190104222617-a71664fc38e7 h1:RPiJ0Orw/4i4JWGuvcZFYiW16+Ql1C9TyrYRznbkKjg= github.com/gobuffalo/genny v0.0.0-20190104222617-a71664fc38e7/go.mod h1:QPsQ1FnhEsiU8f+O0qKWXz2RE4TiDqLVChWkBuh1WaY= +github.com/gobuffalo/genny v0.0.0-20190112155932-f31a84fcacf5/go.mod h1:CIaHCrSIuJ4il6ka3Hub4DR4adDrGoXGEEt2FbBxoIo= +github.com/gobuffalo/genny v0.0.0-20190124191459-3310289fa4b4 h1:0hgER6ADOc40ws1xYtrSjYq7OQqMz/LsgaGooEz9RqY= +github.com/gobuffalo/genny v0.0.0-20190124191459-3310289fa4b4/go.mod h1:yIRqxhZV2sAzb+B3iPUMLauTRrYP8tJUlZ1zV9teKik= github.com/gobuffalo/github_flavored_markdown v1.0.4/go.mod h1:uRowCdK+q8d/RF0Kt3/DSalaIXbb0De/dmTqMQdkQ4I= github.com/gobuffalo/github_flavored_markdown v1.0.5/go.mod h1:U0643QShPF+OF2tJvYNiYDLDGDuQmJZXsf/bHOJPsMY= github.com/gobuffalo/github_flavored_markdown v1.0.7/go.mod h1:w93Pd9Lz6LvyQXEG6DktTPHkOtCbr+arAD5mkwMzXLI= @@ -111,6 +119,9 @@ github.com/gobuffalo/meta v0.0.0-20181018192820-8c6cef77dab3/go.mod h1:E94EPzx9N github.com/gobuffalo/meta v0.0.0-20181025145500-3a985a084b0a/go.mod h1:YDAKBud2FP7NZdruCSlmTmDOZbVSa6bpK7LJ/A/nlKg= github.com/gobuffalo/meta v0.0.0-20181114191255-b130ebedd2f7/go.mod h1:K6cRZ29ozr4Btvsqkjvg5nDFTLOgTqf03KA70Ks0ypE= github.com/gobuffalo/meta v0.0.0-20181127070345-0d7e59dd540b/go.mod h1:RLO7tMvE0IAKAM8wny1aN12pvEKn7EtkBLkUZR00Qf8= +github.com/gobuffalo/meta v0.0.0-20190120163247-50bbb1fa260d/go.mod h1:KKsH44nIK2gA8p0PJmRT9GvWJUdphkDUA8AJEvFWiqM= +github.com/gobuffalo/meta v0.0.0-20190121163014-ecaa953cbfb3 h1:JzhweLavqD8ZNLOIBRvE5IPyp+sw/wYQmL9c5XwZuHI= +github.com/gobuffalo/meta v0.0.0-20190121163014-ecaa953cbfb3/go.mod h1:KLfkGnS+Tucc+iTkUcAUBtxpwOJGfhw2pHRLddPxMQY= github.com/gobuffalo/mw-basicauth v1.0.3/go.mod h1:dg7+ilMZOKnQFHDefUzUHufNyTswVUviCBgF244C1+0= github.com/gobuffalo/mw-contenttype v0.0.0-20180802152300-74f5a47f4d56/go.mod h1:7EvcmzBbeCvFtQm5GqF9ys6QnCxz2UM1x0moiWLq1No= github.com/gobuffalo/mw-csrf v0.0.0-20180802151833-446ff26e108b/go.mod h1:sbGtb8DmDZuDUQoxjr8hG1ZbLtZboD9xsn6p77ppcHo= @@ -127,6 +138,7 @@ github.com/gobuffalo/packd v0.0.0-20181111195323-b2e760a5f0ff/go.mod h1:Yf2toFaI github.com/gobuffalo/packd v0.0.0-20181114190715-f25c5d2471d7/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= github.com/gobuffalo/packd v0.0.0-20181124090624-311c6248e5fb/go.mod h1:Foenia9ZvITEvG05ab6XpiD5EfBHPL8A6hush8SJ0o8= github.com/gobuffalo/packd v0.0.0-20181207120301-c49825f8f6f4/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= +github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687 h1:uZ+G4JprR0UEq0aHZs+6eP7TEZuFfrIkmQWejIBV/QQ= github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= github.com/gobuffalo/packr v1.13.7/go.mod h1:KkinLIn/n6+3tVXMwg6KkNvWwVsrRAz4ph+jgpk3Z24= github.com/gobuffalo/packr v1.15.0/go.mod h1:t5gXzEhIviQwVlNx/+3SfS07GS+cZ2hn76WLzPp6MGI= @@ -140,6 +152,9 @@ github.com/gobuffalo/packr/v2 v2.0.0-rc.10/go.mod h1:4CWWn4I5T3v4c1OsJ55HbHlUEKN github.com/gobuffalo/packr/v2 v2.0.0-rc.11/go.mod h1:JoieH/3h3U4UmatmV93QmqyPUdf4wVM9HELaHEu+3fk= github.com/gobuffalo/packr/v2 v2.0.0-rc.12/go.mod h1:FV1zZTsVFi1DSCboO36Xgs4pzCZBjB/tDV9Cz/lSaR8= github.com/gobuffalo/packr/v2 v2.0.0-rc.13/go.mod h1:2Mp7GhBFMdJlOK8vGfl7SYtfMP3+5roE39ejlfjw0rA= +github.com/gobuffalo/packr/v2 v2.0.0-rc.14/go.mod h1:06otbrNvDKO1eNQ3b8hst+1010UooI2MFg+B2Ze4MV8= +github.com/gobuffalo/packr/v2 v2.0.0-rc.15 h1:vSmYcMO6CtuNQvMSbEJeIJlaeZzz2zoxGLTy8HrDh80= +github.com/gobuffalo/packr/v2 v2.0.0-rc.15/go.mod h1:IMe7H2nJvcKXSF90y4X1rjYIRlNMJYCxEhssBXNZwWs= github.com/gobuffalo/plush v3.7.16+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.20+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.21+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= @@ -148,6 +163,7 @@ github.com/gobuffalo/plush v3.7.23+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5s github.com/gobuffalo/plush v3.7.30+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.31+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.32+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.33+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plushgen v0.0.0-20181128164830-d29dcb966cb2/go.mod h1:r9QwptTFnuvSaSRjpSp4S2/4e2D3tJhARYbvEBcKSb4= github.com/gobuffalo/plushgen v0.0.0-20181203163832-9fc4964505c2/go.mod h1:opEdT33AA2HdrIwK1aibqnTJDVVKXC02Bar/GT1YRVs= github.com/gobuffalo/plushgen v0.0.0-20181207152837-eedb135bd51b/go.mod h1:Lcw7HQbEVm09sAQrCLzIxuhFbB3nAgp4c55E+UlynR0= @@ -179,6 +195,7 @@ github.com/gobuffalo/validate v2.0.3+incompatible/go.mod h1:N+EtDe0J8252BgfzQUCh github.com/gobuffalo/x v0.0.0-20181003152136-452098b06085/go.mod h1:WevpGD+5YOreDJznWevcn8NTmQEW5STSBgIkpkjzqXc= github.com/gobuffalo/x v0.0.0-20181007152206-913e47c59ca7/go.mod h1:9rDPXaB3kXdKWzMc4odGQQdG2e2DIEmANy5aSJ9yesY= github.com/gofrs/uuid v3.1.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= @@ -211,6 +228,7 @@ github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czP github.com/markbates/deplist v1.0.4/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= github.com/markbates/deplist v1.0.5/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= github.com/markbates/going v1.0.2/go.mod h1:UWCk3zm0UKefHZ7l8BNqi26UyiEMniznk8naLdTcy6c= +github.com/markbates/going v1.0.3/go.mod h1:fQiT6v6yQar9UD6bd/D4Z5Afbk9J6BBVBtLiyY4gp2o= github.com/markbates/grift v1.0.4/go.mod h1:wbmtW74veyx+cgfwFhlnnMWqhoz55rnHR47oMXzsyVs= github.com/markbates/hmax v1.0.0/go.mod h1:cOkR9dktiESxIMu+65oc/r/bdY4bE8zZw3OLhLx0X2c= github.com/markbates/inflect v1.0.0/go.mod h1:oTeZL2KHA7CUX6X+fovmK9OvIOFuqu0TwdQrZjLTh88= @@ -247,6 +265,8 @@ github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.0.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.1.0 h1:g0fH8RicVgNl+zVZDCDfbdWxAWoAEJyI7I3TZYXFiig= +github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= @@ -315,6 +335,7 @@ golang.org/x/net v0.0.0-20181207154023-610586996380/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -333,8 +354,9 @@ golang.org/x/sys v0.0.0-20181106135930-3a76605856fd/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181206074257-70b957f3b65e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190102155601-82a175fd1598 h1:S8GOgffXV1X3fpVG442QRfWOt0iFl79eHJ7OPt725bo= golang.org/x/sys v0.0.0-20190102155601-82a175fd1598/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190116161447-11f53e031339 h1:g/Jesu8+QLnA0CPzF3E1pURg0Byr7i6jLoX5sqjcAh0= +golang.org/x/sys v0.0.0-20190116161447-11f53e031339/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181003024731-2f84ea8ef872/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -356,8 +378,11 @@ golang.org/x/tools v0.0.0-20181206194817-bcd4e47d0288/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20181207183836-8bc39b988060/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181212172921-837e80568c09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190102213336-ca9055ed7d04/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190104182027-498d95493402 h1:OWOoOXVO7TiAe7djxWtdLAfVGJsPygFlLYlo+MyngLU= golang.org/x/tools v0.0.0-20190104182027-498d95493402/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190111214448-fc1d57b08d7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190118193359-16909d206f00/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190124004107-78ee07aa9465 h1:z1zWb2F6a0UkU9Kyl0B4+xIt/1oatpNlk9B9wWku/mY= +golang.org/x/tools v0.0.0-20190124004107-78ee07aa9465/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= diff --git a/vendor/github.com/gobuffalo/events/plugins.go b/vendor/github.com/gobuffalo/events/plugins.go index f13d28721..0ba1f97fe 100644 --- a/vendor/github.com/gobuffalo/events/plugins.go +++ b/vendor/github.com/gobuffalo/events/plugins.go @@ -35,7 +35,7 @@ func LoadPlugins() error { err := func(c plugins.Command) error { return safe.RunE(func() error { n := fmt.Sprintf("[PLUGIN] %s %s", c.Binary, c.Name) - _, err := NamedListen(n, func(e Event) { + fn := func(e Event) { b, err := json.Marshal(e) if err != nil { fmt.Println("error trying to marshal event", e, err) @@ -48,7 +48,8 @@ func LoadPlugins() error { if err := cmd.Run(); err != nil { fmt.Println("error trying to send event", strings.Join(cmd.Args, " "), err) } - }) + } + _, err := NamedListen(n, Filter(c.ListenFor, fn)) if err != nil { return errors.WithStack(err) } diff --git a/vendor/github.com/gobuffalo/events/version.go b/vendor/github.com/gobuffalo/events/version.go index 4d85ea9dd..c99cc4dfa 100644 --- a/vendor/github.com/gobuffalo/events/version.go +++ b/vendor/github.com/gobuffalo/events/version.go @@ -1,3 +1,3 @@ package events -const Version = "v1.1.9" +const Version = "v1.2.0" diff --git a/vendor/github.com/gobuffalo/flect/custom_data.go b/vendor/github.com/gobuffalo/flect/custom_data.go index 12d3f9b47..9a2dfc74a 100644 --- a/vendor/github.com/gobuffalo/flect/custom_data.go +++ b/vendor/github.com/gobuffalo/flect/custom_data.go @@ -8,8 +8,6 @@ import ( "io/ioutil" "os" "path/filepath" - - "github.com/gobuffalo/envy" ) func init() { @@ -23,7 +21,10 @@ type CustomDataParser func(io.Reader) error func loadCustomData(defaultFile, env, readErrorMessage string, parser CustomDataParser) { pwd, _ := os.Getwd() - path := envy.Get(env, filepath.Join(pwd, defaultFile)) + path, found := os.LookupEnv(env) + if !found { + path = filepath.Join(pwd, defaultFile) + } if _, err := os.Stat(path); err != nil { return diff --git a/vendor/github.com/gobuffalo/flect/go.mod b/vendor/github.com/gobuffalo/flect/go.mod index c71965eff..a9a9eab05 100644 --- a/vendor/github.com/gobuffalo/flect/go.mod +++ b/vendor/github.com/gobuffalo/flect/go.mod @@ -1,6 +1,6 @@ module github.com/gobuffalo/flect require ( - github.com/gobuffalo/envy v1.6.11 + github.com/davecgh/go-spew v1.1.1 // indirect github.com/stretchr/testify v1.3.0 ) diff --git a/vendor/github.com/gobuffalo/flect/go.sum b/vendor/github.com/gobuffalo/flect/go.sum index 27edad94a..4f8984150 100644 --- a/vendor/github.com/gobuffalo/flect/go.sum +++ b/vendor/github.com/gobuffalo/flect/go.sum @@ -1,324 +1,8 @@ -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/ajg/form v0.0.0-20160822230020-523a5da1a92f/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= -github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= -github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= -github.com/codegangsta/negroni v1.0.0/go.mod h1:v0y3T5G7Y1UlFfyxFn/QLRU4a2EuNau2iZY63YTKWo0= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dustin/go-humanize v0.0.0-20180713052910-9f541cc9db5d/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/gobuffalo/buffalo v0.12.8-0.20181004233540-fac9bb505aa8/go.mod h1:sLyT7/dceRXJUxSsE813JTQtA3Eb1vjxWfo/N//vXIY= -github.com/gobuffalo/buffalo v0.13.0/go.mod h1:Mjn1Ba9wpIbpbrD+lIDMy99pQ0H0LiddMIIDGse7qT4= -github.com/gobuffalo/buffalo-plugins v1.0.2/go.mod h1:pOp/uF7X3IShFHyobahTkTLZaeUXwb0GrUTb9ngJWTs= -github.com/gobuffalo/buffalo-plugins v1.0.4/go.mod h1:pWS1vjtQ6uD17MVFWf7i3zfThrEKWlI5+PYLw/NaDB4= -github.com/gobuffalo/buffalo-plugins v1.4.3/go.mod h1:uCzTY0woez4nDMdQjkcOYKanngeUVRO2HZi7ezmAjWY= -github.com/gobuffalo/buffalo-plugins v1.5.1/go.mod h1:jbmwSZK5+PiAP9cC09VQOrGMZFCa/P0UMlIS3O12r5w= -github.com/gobuffalo/buffalo-plugins v1.6.4/go.mod h1:/+N1aophkA2jZ1ifB2O3Y9yGwu6gKOVMtUmJnbg+OZI= -github.com/gobuffalo/buffalo-plugins v1.6.5/go.mod h1:0HVkbgrVs/MnPZ/FOseDMVanCTm2RNcdM0PuXcL1NNI= -github.com/gobuffalo/buffalo-plugins v1.6.7/go.mod h1:ZGZRkzz2PiKWHs0z7QsPBOTo2EpcGRArMEym6ghKYgk= -github.com/gobuffalo/buffalo-plugins v1.6.9/go.mod h1:yYlYTrPdMCz+6/+UaXg5Jm4gN3xhsvsQ2ygVatZV5vw= -github.com/gobuffalo/buffalo-plugins v1.6.11/go.mod h1:eAA6xJIL8OuynJZ8amXjRmHND6YiusVAaJdHDN1Lu8Q= -github.com/gobuffalo/buffalo-plugins v1.8.2/go.mod h1:9te6/VjEQ7pKp7lXlDIMqzxgGpjlKoAcAANdCgoR960= -github.com/gobuffalo/buffalo-pop v1.0.5/go.mod h1:Fw/LfFDnSmB/vvQXPvcXEjzP98Tc+AudyNWUBWKCwQ8= -github.com/gobuffalo/envy v1.6.4/go.mod h1:Abh+Jfw475/NWtYMEt+hnJWRiC8INKWibIMyNt1w2Mc= -github.com/gobuffalo/envy v1.6.5/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= -github.com/gobuffalo/envy v1.6.6/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= -github.com/gobuffalo/envy v1.6.7/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= -github.com/gobuffalo/envy v1.6.8/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= -github.com/gobuffalo/envy v1.6.9/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= -github.com/gobuffalo/envy v1.6.10/go.mod h1:X0CFllQjTV5ogsnUrg+Oks2yTI+PU2dGYBJOEI2D1Uo= -github.com/gobuffalo/envy v1.6.11/go.mod h1:Fiq52W7nrHGDggFPhn2ZCcHw4u/rqXkqo+i7FB6EAcg= -github.com/gobuffalo/events v1.0.3/go.mod h1:Txo8WmqScapa7zimEQIwgiJBvMECMe9gJjsKNPN3uZw= -github.com/gobuffalo/events v1.0.7/go.mod h1:z8txf6H9jWhQ5Scr7YPLWg/cgXBRj8Q4uYI+rsVCCSQ= -github.com/gobuffalo/events v1.0.8/go.mod h1:A5KyqT1sA+3GJiBE4QKZibse9mtOcI9nw8gGrDdqYGs= -github.com/gobuffalo/events v1.1.3/go.mod h1:9yPGWYv11GENtzrIRApwQRMYSbUgCsZ1w6R503fCfrk= -github.com/gobuffalo/events v1.1.4/go.mod h1:09/YRRgZHEOts5Isov+g9X2xajxdvOAcUuAHIX/O//A= -github.com/gobuffalo/events v1.1.5/go.mod h1:3YUSzgHfYctSjEjLCWbkXP6djH2M+MLaVRzb4ymbAK0= -github.com/gobuffalo/events v1.1.7/go.mod h1:6fGqxH2ing5XMb3EYRq9LEkVlyPGs4oO/eLzh+S8CxY= -github.com/gobuffalo/events v1.1.8/go.mod h1:UFy+W6X6VbCWS8k2iT81HYX65dMtiuVycMy04cplt/8= -github.com/gobuffalo/fizz v1.0.12/go.mod h1:C0sltPxpYK8Ftvf64kbsQa2yiCZY4RZviurNxXdAKwc= -github.com/gobuffalo/flect v0.0.0-20180907193754-dc14d8acaf9f/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181002182613-4571df4b1daf/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181007231023-ae7ed6bfe683/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181018182602-fd24a256709f/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181019110701-3d6f0b585514/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181024204909-8f6be1a8c6c2/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181104133451-1f6e9779237a/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= -github.com/gobuffalo/flect v0.0.0-20181114183036-47375f6d8328/go.mod h1:0HvNbHdfh+WOvDSIASqJOSxTOWSxCCUF++k/Y53v9rI= -github.com/gobuffalo/genny v0.0.0-20180924032338-7af3a40f2252/go.mod h1:tUTQOogrr7tAQnhajMSH6rv1BVev34H2sa1xNHMy94g= -github.com/gobuffalo/genny v0.0.0-20181003150629-3786a0744c5d/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= -github.com/gobuffalo/genny v0.0.0-20181005145118-318a41a134cc/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= -github.com/gobuffalo/genny v0.0.0-20181007153042-b8de7d566757/go.mod h1:+oG5Ljrw04czAHbPXREwaFojJbpUvcIy4DiOnbEJFTA= -github.com/gobuffalo/genny v0.0.0-20181012161047-33e5f43d83a6/go.mod h1:+oG5Ljrw04czAHbPXREwaFojJbpUvcIy4DiOnbEJFTA= -github.com/gobuffalo/genny v0.0.0-20181017160347-90a774534246/go.mod h1:+oG5Ljrw04czAHbPXREwaFojJbpUvcIy4DiOnbEJFTA= -github.com/gobuffalo/genny v0.0.0-20181024195656-51392254bf53/go.mod h1:o9GEH5gn5sCKLVB5rHFC4tq40rQ3VRUzmx6WwmaqISE= -github.com/gobuffalo/genny v0.0.0-20181025145300-af3f81d526b8/go.mod h1:uZ1fFYvdcP8mu0B/Ynarf6dsGvp7QFIpk/QACUuFUVI= -github.com/gobuffalo/genny v0.0.0-20181027191429-94d6cfb5c7fc/go.mod h1:x7SkrQQBx204Y+O9EwRXeszLJDTaWN0GnEasxgLrQTA= -github.com/gobuffalo/genny v0.0.0-20181027195209-3887b7171c4f/go.mod h1:JbKx8HSWICu5zyqWOa0dVV1pbbXOHusrSzQUprW6g+w= -github.com/gobuffalo/genny v0.0.0-20181106193839-7dcb0924caf1/go.mod h1:x61yHxvbDCgQ/7cOAbJCacZQuHgB0KMSzoYcw5debjU= -github.com/gobuffalo/genny v0.0.0-20181107223128-f18346459dbe/go.mod h1:utQD3aKKEsdb03oR+Vi/6ztQb1j7pO10N3OBoowRcSU= -github.com/gobuffalo/genny v0.0.0-20181114215459-0a4decd77f5d/go.mod h1:kN2KZ8VgXF9VIIOj/GM0Eo7YK+un4Q3tTreKOf0q1ng= -github.com/gobuffalo/genny v0.0.0-20181119162812-e8ff4adce8bb/go.mod h1:BA9htSe4bZwBDJLe8CUkoqkypq3hn3+CkoHqVOW718E= -github.com/gobuffalo/genny v0.0.0-20181127225641-2d959acc795b/go.mod h1:l54xLXNkteX/PdZ+HlgPk1qtcrgeOr3XUBBPDbH+7CQ= -github.com/gobuffalo/genny v0.0.0-20181128191930-77e34f71ba2a/go.mod h1:FW/D9p7cEEOqxYA71/hnrkOWm62JZ5ZNxcNIVJEaWBU= -github.com/gobuffalo/genny v0.0.0-20181203165245-fda8bcce96b1/go.mod h1:wpNSANu9UErftfiaAlz1pDZclrYzLtO5lALifODyjuM= -github.com/gobuffalo/genny v0.0.0-20181203201232-849d2c9534ea/go.mod h1:wpNSANu9UErftfiaAlz1pDZclrYzLtO5lALifODyjuM= -github.com/gobuffalo/genny v0.0.0-20181206121324-d6fb8a0dbe36/go.mod h1:wpNSANu9UErftfiaAlz1pDZclrYzLtO5lALifODyjuM= -github.com/gobuffalo/genny v0.0.0-20181207164119-84844398a37d/go.mod h1:y0ysCHGGQf2T3vOhCrGHheYN54Y/REj0ayd0Suf4C/8= -github.com/gobuffalo/github_flavored_markdown v1.0.4/go.mod h1:uRowCdK+q8d/RF0Kt3/DSalaIXbb0De/dmTqMQdkQ4I= -github.com/gobuffalo/github_flavored_markdown v1.0.5/go.mod h1:U0643QShPF+OF2tJvYNiYDLDGDuQmJZXsf/bHOJPsMY= -github.com/gobuffalo/github_flavored_markdown v1.0.7/go.mod h1:w93Pd9Lz6LvyQXEG6DktTPHkOtCbr+arAD5mkwMzXLI= -github.com/gobuffalo/httptest v1.0.2/go.mod h1:7T1IbSrg60ankme0aDLVnEY0h056g9M1/ZvpVThtB7E= -github.com/gobuffalo/licenser v0.0.0-20180924033006-eae28e638a42/go.mod h1:Ubo90Np8gpsSZqNScZZkVXXAo5DGhTb+WYFIjlnog8w= -github.com/gobuffalo/licenser v0.0.0-20181025145548-437d89de4f75/go.mod h1:x3lEpYxkRG/XtGCUNkio+6RZ/dlOvLzTI9M1auIwFcw= -github.com/gobuffalo/licenser v0.0.0-20181027200154-58051a75da95/go.mod h1:BzhaaxGd1tq1+OLKObzgdCV9kqVhbTulxOpYbvMQWS0= -github.com/gobuffalo/licenser v0.0.0-20181109171355-91a2a7aac9a7/go.mod h1:m+Ygox92pi9bdg+gVaycvqE8RVSjZp7mWw75+K5NPHk= -github.com/gobuffalo/licenser v0.0.0-20181128165715-cc7305f8abed/go.mod h1:oU9F9UCE+AzI/MueCKZamsezGOOHfSirltllOVeRTAE= -github.com/gobuffalo/licenser v0.0.0-20181203160806-fe900bbede07/go.mod h1:ph6VDNvOzt1CdfaWC+9XwcBnlSTBz2j49PBwum6RFaU= -github.com/gobuffalo/logger v0.0.0-20181022175615-46cfb361fc27/go.mod h1:8sQkgyhWipz1mIctHF4jTxmJh1Vxhp7mP8IqbljgJZo= -github.com/gobuffalo/logger v0.0.0-20181027144941-73d08d2bb969/go.mod h1:7uGg2duHKpWnN4+YmyKBdLXfhopkAdVM6H3nKbyFbz8= -github.com/gobuffalo/logger v0.0.0-20181027193913-9cf4dd0efe46/go.mod h1:7uGg2duHKpWnN4+YmyKBdLXfhopkAdVM6H3nKbyFbz8= -github.com/gobuffalo/logger v0.0.0-20181109185836-3feeab578c17/go.mod h1:oNErH0xLe+utO+OW8ptXMSA5DkiSEDW1u3zGIt8F9Ew= -github.com/gobuffalo/logger v0.0.0-20181117211126-8e9b89b7c264/go.mod h1:5etB91IE0uBlw9k756fVKZJdS+7M7ejVhmpXXiSFj0I= -github.com/gobuffalo/logger v0.0.0-20181127160119-5b956e21995c/go.mod h1:+HxKANrR9VGw9yN3aOAppJKvhO05ctDi63w4mDnKv2U= -github.com/gobuffalo/makr v1.1.5/go.mod h1:Y+o0btAH1kYAMDJW/TX3+oAXEu0bmSLLoC9mIFxtzOw= -github.com/gobuffalo/mapi v1.0.0/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/meta v0.0.0-20181018155829-df62557efcd3/go.mod h1:XTTOhwMNryif3x9LkTTBO/Llrveezd71u3quLd0u7CM= -github.com/gobuffalo/meta v0.0.0-20181018192820-8c6cef77dab3/go.mod h1:E94EPzx9NERGCY69UWlcj6Hipf2uK/vnfrF4QD0plVE= -github.com/gobuffalo/meta v0.0.0-20181025145500-3a985a084b0a/go.mod h1:YDAKBud2FP7NZdruCSlmTmDOZbVSa6bpK7LJ/A/nlKg= -github.com/gobuffalo/meta v0.0.0-20181114191255-b130ebedd2f7/go.mod h1:K6cRZ29ozr4Btvsqkjvg5nDFTLOgTqf03KA70Ks0ypE= -github.com/gobuffalo/meta v0.0.0-20181127070345-0d7e59dd540b/go.mod h1:RLO7tMvE0IAKAM8wny1aN12pvEKn7EtkBLkUZR00Qf8= -github.com/gobuffalo/mw-basicauth v1.0.3/go.mod h1:dg7+ilMZOKnQFHDefUzUHufNyTswVUviCBgF244C1+0= -github.com/gobuffalo/mw-contenttype v0.0.0-20180802152300-74f5a47f4d56/go.mod h1:7EvcmzBbeCvFtQm5GqF9ys6QnCxz2UM1x0moiWLq1No= -github.com/gobuffalo/mw-csrf v0.0.0-20180802151833-446ff26e108b/go.mod h1:sbGtb8DmDZuDUQoxjr8hG1ZbLtZboD9xsn6p77ppcHo= -github.com/gobuffalo/mw-forcessl v0.0.0-20180802152810-73921ae7a130/go.mod h1:JvNHRj7bYNAMUr/5XMkZaDcw3jZhUZpsmzhd//FFWmQ= -github.com/gobuffalo/mw-i18n v0.0.0-20180802152014-e3060b7e13d6/go.mod h1:91AQfukc52A6hdfIfkxzyr+kpVYDodgAeT5cjX1UIj4= -github.com/gobuffalo/mw-paramlogger v0.0.0-20181005191442-d6ee392ec72e/go.mod h1:6OJr6VwSzgJMqWMj7TYmRUqzNe2LXu/W1rRW4MAz/ME= -github.com/gobuffalo/mw-tokenauth v0.0.0-20181001105134-8545f626c189/go.mod h1:UqBF00IfKvd39ni5+yI5MLMjAf4gX7cDKN/26zDOD6c= -github.com/gobuffalo/packd v0.0.0-20181027182251-01ad393492c8/go.mod h1:SmdBdhj6uhOsg1Ui4SFAyrhuc7U4VCildosO5IDJ3lc= -github.com/gobuffalo/packd v0.0.0-20181027190505-aafc0d02c411/go.mod h1:SmdBdhj6uhOsg1Ui4SFAyrhuc7U4VCildosO5IDJ3lc= -github.com/gobuffalo/packd v0.0.0-20181027194105-7ae579e6d213/go.mod h1:SmdBdhj6uhOsg1Ui4SFAyrhuc7U4VCildosO5IDJ3lc= -github.com/gobuffalo/packd v0.0.0-20181031195726-c82734870264/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= -github.com/gobuffalo/packd v0.0.0-20181104210303-d376b15f8e96/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= -github.com/gobuffalo/packd v0.0.0-20181111195323-b2e760a5f0ff/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= -github.com/gobuffalo/packd v0.0.0-20181114190715-f25c5d2471d7/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= -github.com/gobuffalo/packd v0.0.0-20181124090624-311c6248e5fb/go.mod h1:Foenia9ZvITEvG05ab6XpiD5EfBHPL8A6hush8SJ0o8= -github.com/gobuffalo/packd v0.0.0-20181207120301-c49825f8f6f4/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= -github.com/gobuffalo/packr v1.13.7/go.mod h1:KkinLIn/n6+3tVXMwg6KkNvWwVsrRAz4ph+jgpk3Z24= -github.com/gobuffalo/packr v1.15.0/go.mod h1:t5gXzEhIviQwVlNx/+3SfS07GS+cZ2hn76WLzPp6MGI= -github.com/gobuffalo/packr v1.15.1/go.mod h1:IeqicJ7jm8182yrVmNbM6PR4g79SjN9tZLH8KduZZwE= -github.com/gobuffalo/packr v1.19.0/go.mod h1:MstrNkfCQhd5o+Ct4IJ0skWlxN8emOq8DsoT1G98VIU= -github.com/gobuffalo/packr v1.20.0/go.mod h1:JDytk1t2gP+my1ig7iI4NcVaXr886+N0ecUga6884zw= -github.com/gobuffalo/packr v1.21.0/go.mod h1:H00jGfj1qFKxscFJSw8wcL4hpQtPe1PfU2wa6sg/SR0= -github.com/gobuffalo/packr/v2 v2.0.0-rc.8/go.mod h1:y60QCdzwuMwO2R49fdQhsjCPv7tLQFR0ayzxxla9zes= -github.com/gobuffalo/packr/v2 v2.0.0-rc.10/go.mod h1:4CWWn4I5T3v4c1OsJ55HbHlUEKNWMITG5iIkdr4Px4w= -github.com/gobuffalo/packr/v2 v2.0.0-rc.11/go.mod h1:JoieH/3h3U4UmatmV93QmqyPUdf4wVM9HELaHEu+3fk= -github.com/gobuffalo/plush v3.7.16+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plush v3.7.20+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plush v3.7.21+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plush v3.7.22+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plush v3.7.23+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plush v3.7.30+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plush v3.7.32+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= -github.com/gobuffalo/plushgen v0.0.0-20181128164830-d29dcb966cb2/go.mod h1:r9QwptTFnuvSaSRjpSp4S2/4e2D3tJhARYbvEBcKSb4= -github.com/gobuffalo/plushgen v0.0.0-20181203163832-9fc4964505c2/go.mod h1:opEdT33AA2HdrIwK1aibqnTJDVVKXC02Bar/GT1YRVs= -github.com/gobuffalo/plushgen v0.0.0-20181207152837-eedb135bd51b/go.mod h1:Lcw7HQbEVm09sAQrCLzIxuhFbB3nAgp4c55E+UlynR0= -github.com/gobuffalo/pop v4.8.2+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= -github.com/gobuffalo/pop v4.8.3+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= -github.com/gobuffalo/pop v4.8.4+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= -github.com/gobuffalo/release v1.0.35/go.mod h1:VtHFAKs61vO3wboCec5xr9JPTjYyWYcvaM3lclkc4x4= -github.com/gobuffalo/release v1.0.38/go.mod h1:VtHFAKs61vO3wboCec5xr9JPTjYyWYcvaM3lclkc4x4= -github.com/gobuffalo/release v1.0.42/go.mod h1:RPs7EtafH4oylgetOJpGP0yCZZUiO4vqHfTHJjSdpug= -github.com/gobuffalo/release v1.0.52/go.mod h1:RPs7EtafH4oylgetOJpGP0yCZZUiO4vqHfTHJjSdpug= -github.com/gobuffalo/release v1.0.53/go.mod h1:FdF257nd8rqhNaqtDWFGhxdJ/Ig4J7VcS3KL7n/a+aA= -github.com/gobuffalo/release v1.0.54/go.mod h1:Pe5/RxRa/BE8whDpGfRqSI7D1a0evGK1T4JDm339tJc= -github.com/gobuffalo/release v1.0.61/go.mod h1:mfIO38ujUNVDlBziIYqXquYfBF+8FDHUjKZgYC1Hj24= -github.com/gobuffalo/release v1.0.72/go.mod h1:NP5NXgg/IX3M5XmHmWR99D687/3Dt9qZtTK/Lbwc1hU= -github.com/gobuffalo/release v1.1.1/go.mod h1:Sluak1Xd6kcp6snkluR1jeXAogdJZpFFRzTYRs/2uwg= -github.com/gobuffalo/shoulders v1.0.1/go.mod h1:V33CcVmaQ4gRUmHKwq1fiTXuf8Gp/qjQBUL5tHPmvbA= -github.com/gobuffalo/syncx v0.0.0-20181120191700-98333ab04150/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= -github.com/gobuffalo/syncx v0.0.0-20181120194010-558ac7de985f/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= -github.com/gobuffalo/tags v2.0.11+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= -github.com/gobuffalo/tags v2.0.14+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= -github.com/gobuffalo/uuid v2.0.3+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= -github.com/gobuffalo/uuid v2.0.4+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= -github.com/gobuffalo/uuid v2.0.5+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= -github.com/gobuffalo/validate v2.0.3+incompatible/go.mod h1:N+EtDe0J8252BgfzQUChBgfd6L93m9weay53EWFVsMM= -github.com/gobuffalo/x v0.0.0-20181003152136-452098b06085/go.mod h1:WevpGD+5YOreDJznWevcn8NTmQEW5STSBgIkpkjzqXc= -github.com/gobuffalo/x v0.0.0-20181007152206-913e47c59ca7/go.mod h1:9rDPXaB3kXdKWzMc4odGQQdG2e2DIEmANy5aSJ9yesY= -github.com/gofrs/uuid v3.1.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/pat v0.0.0-20180118222023-199c85a7f6d1/go.mod h1:YeAe0gNeiNT5hoiZRI4yiOky6jVdNvfO2N6Kav/HmxY= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.1.2/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= -github.com/gorilla/sessions v1.1.3/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= -github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= -github.com/jmoiron/sqlx v0.0.0-20180614180643-0dae4fefe7c0/go.mod h1:IiEW3SEiiErVyFdH8NTuWjSifiEQKUoyK3LNqr2kCHU= -github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= -github.com/karrick/godirwalk v1.7.7/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/markbates/deplist v1.0.4/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= -github.com/markbates/deplist v1.0.5/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= -github.com/markbates/going v1.0.2/go.mod h1:UWCk3zm0UKefHZ7l8BNqi26UyiEMniznk8naLdTcy6c= -github.com/markbates/grift v1.0.4/go.mod h1:wbmtW74veyx+cgfwFhlnnMWqhoz55rnHR47oMXzsyVs= -github.com/markbates/hmax v1.0.0/go.mod h1:cOkR9dktiESxIMu+65oc/r/bdY4bE8zZw3OLhLx0X2c= -github.com/markbates/inflect v1.0.0/go.mod h1:oTeZL2KHA7CUX6X+fovmK9OvIOFuqu0TwdQrZjLTh88= -github.com/markbates/inflect v1.0.1/go.mod h1:uv3UVNBe5qBIfCm8O8Q+DW+S1EopeyINj+Ikhc7rnCk= -github.com/markbates/inflect v1.0.3/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzferVeWqbgNs= -github.com/markbates/inflect v1.0.4/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzferVeWqbgNs= -github.com/markbates/oncer v0.0.0-20180924031910-e862a676800b/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/oncer v0.0.0-20180924034138-723ad0170a46/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/oncer v0.0.0-20181014194634-05fccaae8fc4/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/refresh v1.4.10/go.mod h1:NDPHvotuZmTmesXxr95C9bjlw1/0frJwtME2dzcVKhc= -github.com/markbates/safe v1.0.0/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/markbates/sigtx v1.0.0/go.mod h1:QF1Hv6Ic6Ca6W+T+DL0Y/ypborFKyvUY9HmuCD4VeTc= -github.com/markbates/willie v1.0.9/go.mod h1:fsrFVWl91+gXpx/6dv715j7i11fYPfZ9ZGfH0DQzY7w= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.0.0/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/monoculum/formam v0.0.0-20180901015400-4e68be1d79ba/go.mod h1:RKgILGEJq24YyJ2ban8EO0RUVSJlF1pGsEvoLEACr/Q= -github.com/nicksnyder/go-i18n v1.10.0/go.mod h1:HrK7VCrbOvQoUAQ7Vpy7i87N7JZZZ7R2xBGjv0j365Q= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.0.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= -github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= -github.com/shurcooL/highlight_go v0.0.0-20170515013102-78fb10f4a5f8/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= -github.com/shurcooL/octicon v0.0.0-20180602230221-c42b0e3b24d9/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= -github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.1.0/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= -github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= -github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.2.1/go.mod h1:P4AexN0a+C9tGAnUFNwDMYYZv3pjFuvmeiMyKRaNVlI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/unrolled/secure v0.0.0-20180918153822-f340ee86eb8b/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= -github.com/unrolled/secure v0.0.0-20181005190816-ff9db2ff917f/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181001203147-e3636079e1a4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181024171144-74cb1d3d52f4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181025113841-85e1b3f9139a/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181106171534-e4dc69e5b2fd/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181127143415-eb0de9b17e85/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180816102801-aaf60122140d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180921000356-2f5d2388922f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180926154720-4dfa2610cdf3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181017193950-04a2e542c03f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181207154023-610586996380/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180906133057-8cf3aee42992/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180921163948-d47a0f339242/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180927150500-dad3d9fb7b6e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181005133103-4497e2df6f9e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181011152604-fa43e7bc11ba/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181022134430-8a28ead16f52/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181024145615-5cd93ef61a7c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181025063200-d989b31c8746/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026064943-731415f00dce/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181106135930-3a76605856fd/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181206074257-70b957f3b65e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181003024731-2f84ea8ef872/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181006002542-f60d9635b16a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181008205924-a2b3f7f249e9/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181013182035-5e66757b835f/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181017214349-06f26fdaaa28/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181024171208-a2dc47679d30/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181026183834-f60e5f99f081/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181105230042-78dc5bac0cac/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181107215632-34b416bd17b3/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181114190951-94339b83286c/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181119130350-139d099f6620/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181127195227-b4e97c0ed882/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181127232545-e782529d0ddd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181205224935-3576414c54a4/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181206194817-bcd4e47d0288/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= -gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= -gopkg.in/mail.v2 v2.0.0-20180731213649-a0242b2233b4/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/github.com/gobuffalo/flect/ident.go b/vendor/github.com/gobuffalo/flect/ident.go index 8c5845573..78b51d457 100644 --- a/vendor/github.com/gobuffalo/flect/ident.go +++ b/vendor/github.com/gobuffalo/flect/ident.go @@ -2,7 +2,6 @@ package flect import ( "encoding" - "regexp" "strings" "unicode" "unicode/utf8" @@ -29,8 +28,6 @@ func New(s string) Ident { return i } -var splitRx = regexp.MustCompile("[^\\p{L}]") - func toParts(s string) []string { parts := []string{} s = strings.TrimSpace(s) diff --git a/vendor/github.com/gobuffalo/flect/name/folder.go b/vendor/github.com/gobuffalo/flect/name/folder.go index 16b1839d4..0f1e5eed1 100644 --- a/vendor/github.com/gobuffalo/flect/name/folder.go +++ b/vendor/github.com/gobuffalo/flect/name/folder.go @@ -5,7 +5,7 @@ import ( "strings" ) -var alphanum = regexp.MustCompile("[^a-zA-Z0-9_\\-\\/]+") +var alphanum = regexp.MustCompile(`[^a-zA-Z0-9_\-\/]+`) // Folder creates a suitable folder name // admin/widget = admin/widget diff --git a/vendor/github.com/gobuffalo/flect/name/var_case.go b/vendor/github.com/gobuffalo/flect/name/var_case.go index 804ce103a..734f4087b 100644 --- a/vendor/github.com/gobuffalo/flect/name/var_case.go +++ b/vendor/github.com/gobuffalo/flect/name/var_case.go @@ -31,3 +31,19 @@ func VarCasePlural(s string) string { func (i Ident) VarCasePlural() Ident { return Ident{i.Group().Pluralize().Camelize()} } + +// VarCase version of a name. +// foo_bar = fooBar +// admin/widget = adminWidget +// Users = users +func (i Ident) VarCase() Ident { + return Ident{i.Camelize()} +} + +// VarCase version of a name. +// foo_bar = fooBar +// admin/widget = adminWidget +// Users = users +func VarCase(s string) string { + return New(s).VarCase().String() +} diff --git a/vendor/github.com/gobuffalo/flect/titleize.go b/vendor/github.com/gobuffalo/flect/titleize.go index e7a20d37f..cbbf08a5a 100644 --- a/vendor/github.com/gobuffalo/flect/titleize.go +++ b/vendor/github.com/gobuffalo/flect/titleize.go @@ -20,8 +20,7 @@ func Titleize(s string) string { func (i Ident) Titleize() Ident { var parts []string for _, part := range i.Parts { - var x string - x = string(unicode.ToTitle(rune(part[0]))) + x := string(unicode.ToTitle(rune(part[0]))) if len(part) > 1 { x += part[1:] } diff --git a/vendor/github.com/gobuffalo/genny/README.md b/vendor/github.com/gobuffalo/genny/README.md index e4ec55b8b..f1e4f2aae 100644 --- a/vendor/github.com/gobuffalo/genny/README.md +++ b/vendor/github.com/gobuffalo/genny/README.md @@ -42,7 +42,8 @@ g.RunFn(func(r *genny.Runner) error { // look for the `genny` executable if _, err := r.LookPath("genny"); err != nil { // it wasn't found, so install it - if err := gotools.Get("github.com/gobuffalo/genny/genny")(r); err != nil { + c := gogen.Get("github.com/gobuffalo/genny/genny") + if err := r.Exec(c); err != nil { return err } } @@ -76,7 +77,8 @@ g.RunFn(func(r *genny.Runner) error { // look for the `genny` executable if _, err := r.LookPath("genny"); err != nil { // it wasn't found, so install it - if err := gotools.Get("github.com/gobuffalo/genny/genny")(r); err != nil { + c := gogen.Get("github.com/gobuffalo/genny/genny") + if err := r.Exec(c); err != nil { return err } } diff --git a/vendor/github.com/gobuffalo/genny/go.mod b/vendor/github.com/gobuffalo/genny/go.mod index 99b0af920..52287cae0 100644 --- a/vendor/github.com/gobuffalo/genny/go.mod +++ b/vendor/github.com/gobuffalo/genny/go.mod @@ -1,21 +1,20 @@ module github.com/gobuffalo/genny require ( - github.com/gobuffalo/envy v1.6.11 - github.com/gobuffalo/events v1.1.9 - github.com/gobuffalo/flect v0.0.0-20190104192022-4af577e09bf2 + github.com/gobuffalo/attrs v0.0.0-20190219185331-f338c9388485 + github.com/gobuffalo/depgen v0.0.0-20190219190223-ba8c93fa0c2c + github.com/gobuffalo/envy v1.6.15 + github.com/gobuffalo/events v1.2.0 + github.com/gobuffalo/flect v0.1.0 + github.com/gobuffalo/gitgen v0.0.0-20190219185555-91c2c5f0aad5 + github.com/gobuffalo/gogen v0.0.0-20190219194924-d32a17ad9761 github.com/gobuffalo/logger v0.0.0-20181127160119-5b956e21995c github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687 - github.com/gobuffalo/packr/v2 v2.0.0-rc.13 - github.com/gobuffalo/plush v3.7.32+incompatible - github.com/gobuffalo/plushgen v0.0.0-20190104222512-177cd2b872b3 - github.com/gobuffalo/tags v2.0.15+incompatible // indirect + github.com/gobuffalo/packr/v2 v2.0.1 github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2 github.com/markbates/safe v1.0.1 - github.com/microcosm-cc/bluemonday v1.0.2 // indirect github.com/pkg/errors v0.8.1 github.com/sirupsen/logrus v1.3.0 github.com/spf13/cobra v0.0.3 github.com/stretchr/testify v1.3.0 - golang.org/x/tools v0.0.0-20190104182027-498d95493402 ) diff --git a/vendor/github.com/gobuffalo/genny/go.sum b/vendor/github.com/gobuffalo/genny/go.sum index f522fc452..5f97a9bb2 100644 --- a/vendor/github.com/gobuffalo/genny/go.sum +++ b/vendor/github.com/gobuffalo/genny/go.sum @@ -1,14 +1,29 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.36.0/go.mod h1:RUoy9p/M4ge0HzT8L+SDZ8jg+Q6fth0CiBuhFJpSV40= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/ajg/form v0.0.0-20160822230020-523a5da1a92f/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= github.com/codegangsta/negroni v1.0.0/go.mod h1:v0y3T5G7Y1UlFfyxFn/QLRU4a2EuNau2iZY63YTKWo0= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dustin/go-humanize v0.0.0-20180713052910-9f541cc9db5d/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -16,8 +31,13 @@ github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25Kn github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/gobuffalo/attrs v0.0.0-20190219185331-f338c9388485 h1:ACL96KMyz/8vuQ9cFCrJWEinPAlrI+1YgW3FfeURk2A= +github.com/gobuffalo/attrs v0.0.0-20190219185331-f338c9388485/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= github.com/gobuffalo/buffalo v0.12.8-0.20181004233540-fac9bb505aa8/go.mod h1:sLyT7/dceRXJUxSsE813JTQtA3Eb1vjxWfo/N//vXIY= github.com/gobuffalo/buffalo v0.13.0/go.mod h1:Mjn1Ba9wpIbpbrD+lIDMy99pQ0H0LiddMIIDGse7qT4= github.com/gobuffalo/buffalo-plugins v1.0.2/go.mod h1:pOp/uF7X3IShFHyobahTkTLZaeUXwb0GrUTb9ngJWTs= @@ -32,9 +52,13 @@ github.com/gobuffalo/buffalo-plugins v1.6.11/go.mod h1:eAA6xJIL8OuynJZ8amXjRmHND github.com/gobuffalo/buffalo-plugins v1.8.2/go.mod h1:9te6/VjEQ7pKp7lXlDIMqzxgGpjlKoAcAANdCgoR960= github.com/gobuffalo/buffalo-plugins v1.8.3/go.mod h1:IAWq6vjZJVXebIq2qGTLOdlXzmpyTZ5iJG5b59fza5U= github.com/gobuffalo/buffalo-plugins v1.9.4/go.mod h1:grCV6DGsQlVzQwk6XdgcL3ZPgLm9BVxlBmXPMF8oBHI= -github.com/gobuffalo/buffalo-plugins v1.10.0 h1:oF+BJ20zenp31xJnjkFcXAMUqlrMMTicsD/UwQWCW/s= github.com/gobuffalo/buffalo-plugins v1.10.0/go.mod h1:4osg8d9s60txLuGwXnqH+RCjPHj9K466cDFRl3PErHI= +github.com/gobuffalo/buffalo-plugins v1.11.0/go.mod h1:rtIvAYRjYibgmWhnjKmo7OadtnxuMG5ZQLr25ozAzjg= +github.com/gobuffalo/buffalo-plugins v1.12.0 h1:5rvYQ7mwfPwUW9zqcMd9ahWtPVOOouMKZjv88q45Z7c= +github.com/gobuffalo/buffalo-plugins v1.12.0/go.mod h1:kw4Mj2vQXqe4X5TI36PEQgswbL30heGQwJEeDKd1v+4= github.com/gobuffalo/buffalo-pop v1.0.5/go.mod h1:Fw/LfFDnSmB/vvQXPvcXEjzP98Tc+AudyNWUBWKCwQ8= +github.com/gobuffalo/depgen v0.0.0-20190219190223-ba8c93fa0c2c h1:YtzXXqLq7rG/Q0yo/IN2AYbwuLDk65l7PX11TjG+EzU= +github.com/gobuffalo/depgen v0.0.0-20190219190223-ba8c93fa0c2c/go.mod h1:CE/HUV4vDCXtJayRf6WoMWgezb1yH4QHg8GNK8FL0JI= github.com/gobuffalo/envy v1.6.4/go.mod h1:Abh+Jfw475/NWtYMEt+hnJWRiC8INKWibIMyNt1w2Mc= github.com/gobuffalo/envy v1.6.5/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= github.com/gobuffalo/envy v1.6.6/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= @@ -43,6 +67,10 @@ github.com/gobuffalo/envy v1.6.8/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9k github.com/gobuffalo/envy v1.6.9/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= github.com/gobuffalo/envy v1.6.10/go.mod h1:X0CFllQjTV5ogsnUrg+Oks2yTI+PU2dGYBJOEI2D1Uo= github.com/gobuffalo/envy v1.6.11/go.mod h1:Fiq52W7nrHGDggFPhn2ZCcHw4u/rqXkqo+i7FB6EAcg= +github.com/gobuffalo/envy v1.6.12/go.mod h1:qJNrJhKkZpEW0glh5xP2syQHH5kgdmgsKss2Kk8PTP0= +github.com/gobuffalo/envy v1.6.13/go.mod h1:w9DJppgl51JwUFWWd/M/6/otrPtWV3WYMa+NNLunqKA= +github.com/gobuffalo/envy v1.6.15 h1:OsV5vOpHYUpP7ZLS6sem1y40/lNX1BZj+ynMiRi21lQ= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= github.com/gobuffalo/events v1.0.3/go.mod h1:Txo8WmqScapa7zimEQIwgiJBvMECMe9gJjsKNPN3uZw= github.com/gobuffalo/events v1.0.7/go.mod h1:z8txf6H9jWhQ5Scr7YPLWg/cgXBRj8Q4uYI+rsVCCSQ= github.com/gobuffalo/events v1.0.8/go.mod h1:A5KyqT1sA+3GJiBE4QKZibse9mtOcI9nw8gGrDdqYGs= @@ -51,8 +79,9 @@ github.com/gobuffalo/events v1.1.4/go.mod h1:09/YRRgZHEOts5Isov+g9X2xajxdvOAcUuA github.com/gobuffalo/events v1.1.5/go.mod h1:3YUSzgHfYctSjEjLCWbkXP6djH2M+MLaVRzb4ymbAK0= github.com/gobuffalo/events v1.1.7/go.mod h1:6fGqxH2ing5XMb3EYRq9LEkVlyPGs4oO/eLzh+S8CxY= github.com/gobuffalo/events v1.1.8/go.mod h1:UFy+W6X6VbCWS8k2iT81HYX65dMtiuVycMy04cplt/8= -github.com/gobuffalo/events v1.1.9 h1:ukq5ys/h0TuiX7eLJyZBD1dJOy0r19JTEYmgXKG9j+Y= github.com/gobuffalo/events v1.1.9/go.mod h1:/0nf8lMtP5TkgNbzYxR6Bl4GzBy5s5TebgNTdRfRbPM= +github.com/gobuffalo/events v1.2.0 h1:YovlMNcwNTfIm/3OdB+KemDOm8yUz4XIH+4kbMhGXWw= +github.com/gobuffalo/events v1.2.0/go.mod h1:pxvpvsKXKZNPtHuIxUV3K+g+KP5o4forzaeFj++bh68= github.com/gobuffalo/fizz v1.0.12/go.mod h1:C0sltPxpYK8Ftvf64kbsQa2yiCZY4RZviurNxXdAKwc= github.com/gobuffalo/flect v0.0.0-20180907193754-dc14d8acaf9f/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= github.com/gobuffalo/flect v0.0.0-20181002182613-4571df4b1daf/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= @@ -63,8 +92,10 @@ github.com/gobuffalo/flect v0.0.0-20181024204909-8f6be1a8c6c2/go.mod h1:rCiQgmAE github.com/gobuffalo/flect v0.0.0-20181104133451-1f6e9779237a/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= github.com/gobuffalo/flect v0.0.0-20181114183036-47375f6d8328/go.mod h1:0HvNbHdfh+WOvDSIASqJOSxTOWSxCCUF++k/Y53v9rI= github.com/gobuffalo/flect v0.0.0-20181210151238-24a2b68e0316/go.mod h1:en58vff74S9b99Eg42Dr+/9yPu437QjlNsO/hBYPuOk= -github.com/gobuffalo/flect v0.0.0-20190104192022-4af577e09bf2 h1:51NF9n6h4nGMooU5ALB+uJCM0UOmcWjAegIZb/ePtoE= github.com/gobuffalo/flect v0.0.0-20190104192022-4af577e09bf2/go.mod h1:en58vff74S9b99Eg42Dr+/9yPu437QjlNsO/hBYPuOk= +github.com/gobuffalo/flect v0.0.0-20190117212819-a62e61d96794/go.mod h1:397QT6v05LkZkn07oJXXT6y9FCfwC8Pug0WA2/2mE9k= +github.com/gobuffalo/flect v0.1.0 h1:EJvbvZlo9exJk5UK02lz5pTs3XEpIM5/4o691KfvtkM= +github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= github.com/gobuffalo/genny v0.0.0-20180924032338-7af3a40f2252/go.mod h1:tUTQOogrr7tAQnhajMSH6rv1BVev34H2sa1xNHMy94g= github.com/gobuffalo/genny v0.0.0-20181003150629-3786a0744c5d/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= github.com/gobuffalo/genny v0.0.0-20181005145118-318a41a134cc/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= @@ -87,9 +118,17 @@ github.com/gobuffalo/genny v0.0.0-20181206121324-d6fb8a0dbe36/go.mod h1:wpNSANu9 github.com/gobuffalo/genny v0.0.0-20181207164119-84844398a37d/go.mod h1:y0ysCHGGQf2T3vOhCrGHheYN54Y/REj0ayd0Suf4C/8= github.com/gobuffalo/genny v0.0.0-20181211165820-e26c8466f14d/go.mod h1:sHnK+ZSU4e2feXP3PA29ouij6PUEiN+RCwECjCTB3yM= github.com/gobuffalo/genny v0.0.0-20190104222617-a71664fc38e7/go.mod h1:QPsQ1FnhEsiU8f+O0qKWXz2RE4TiDqLVChWkBuh1WaY= +github.com/gobuffalo/genny v0.0.0-20190112155932-f31a84fcacf5/go.mod h1:CIaHCrSIuJ4il6ka3Hub4DR4adDrGoXGEEt2FbBxoIo= +github.com/gobuffalo/genny v0.0.0-20190124191459-3310289fa4b4/go.mod h1:yIRqxhZV2sAzb+B3iPUMLauTRrYP8tJUlZ1zV9teKik= +github.com/gobuffalo/genny v0.0.0-20190131150032-1045e97d19fb/go.mod h1:yIRqxhZV2sAzb+B3iPUMLauTRrYP8tJUlZ1zV9teKik= +github.com/gobuffalo/genny v0.0.0-20190131190646-008a76242145/go.mod h1:NJvPZJxb9M4z790P6N2SMZKSUYpASpEvLuUWnHGKzb4= +github.com/gobuffalo/gitgen v0.0.0-20190219185555-91c2c5f0aad5 h1:TKLkvMd0sYNEsoVsoIGUzjFNtM7eMlQqLf/4JwlKVaE= +github.com/gobuffalo/gitgen v0.0.0-20190219185555-91c2c5f0aad5/go.mod h1:ZzGIrxBvCJEluaU4i3CN0GFlu1Qmb3yK8ziV02evJ1E= github.com/gobuffalo/github_flavored_markdown v1.0.4/go.mod h1:uRowCdK+q8d/RF0Kt3/DSalaIXbb0De/dmTqMQdkQ4I= github.com/gobuffalo/github_flavored_markdown v1.0.5/go.mod h1:U0643QShPF+OF2tJvYNiYDLDGDuQmJZXsf/bHOJPsMY= github.com/gobuffalo/github_flavored_markdown v1.0.7/go.mod h1:w93Pd9Lz6LvyQXEG6DktTPHkOtCbr+arAD5mkwMzXLI= +github.com/gobuffalo/gogen v0.0.0-20190219194924-d32a17ad9761 h1:KJFgsBn2pl82SyCJrVO1ksoJq7u5a+f1MeBvmjHtGTk= +github.com/gobuffalo/gogen v0.0.0-20190219194924-d32a17ad9761/go.mod h1:v47C8sid+ZM2qK+YpQ2MGJKssKAqyTsH1wl/pTCPdz8= github.com/gobuffalo/httptest v1.0.2/go.mod h1:7T1IbSrg60ankme0aDLVnEY0h056g9M1/ZvpVThtB7E= github.com/gobuffalo/licenser v0.0.0-20180924033006-eae28e638a42/go.mod h1:Ubo90Np8gpsSZqNScZZkVXXAo5DGhTb+WYFIjlnog8w= github.com/gobuffalo/licenser v0.0.0-20181025145548-437d89de4f75/go.mod h1:x3lEpYxkRG/XtGCUNkio+6RZ/dlOvLzTI9M1auIwFcw= @@ -103,15 +142,20 @@ github.com/gobuffalo/logger v0.0.0-20181027144941-73d08d2bb969/go.mod h1:7uGg2du github.com/gobuffalo/logger v0.0.0-20181027193913-9cf4dd0efe46/go.mod h1:7uGg2duHKpWnN4+YmyKBdLXfhopkAdVM6H3nKbyFbz8= github.com/gobuffalo/logger v0.0.0-20181109185836-3feeab578c17/go.mod h1:oNErH0xLe+utO+OW8ptXMSA5DkiSEDW1u3zGIt8F9Ew= github.com/gobuffalo/logger v0.0.0-20181117211126-8e9b89b7c264/go.mod h1:5etB91IE0uBlw9k756fVKZJdS+7M7ejVhmpXXiSFj0I= +github.com/gobuffalo/logger v0.0.0-20181127160119-5b956e21995c h1:Z/ppYX6EtPEysbW4VEGz2dO+4F4VTthWp2sWRUCANdU= github.com/gobuffalo/logger v0.0.0-20181127160119-5b956e21995c/go.mod h1:+HxKANrR9VGw9yN3aOAppJKvhO05ctDi63w4mDnKv2U= github.com/gobuffalo/makr v1.1.5/go.mod h1:Y+o0btAH1kYAMDJW/TX3+oAXEu0bmSLLoC9mIFxtzOw= github.com/gobuffalo/mapi v1.0.0/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/mapi v1.0.1 h1:JRuTiZzDEZhBHkFiHTxJkYRT6CbYuL0K/rn+1byJoEA= github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= github.com/gobuffalo/meta v0.0.0-20181018155829-df62557efcd3/go.mod h1:XTTOhwMNryif3x9LkTTBO/Llrveezd71u3quLd0u7CM= github.com/gobuffalo/meta v0.0.0-20181018192820-8c6cef77dab3/go.mod h1:E94EPzx9NERGCY69UWlcj6Hipf2uK/vnfrF4QD0plVE= github.com/gobuffalo/meta v0.0.0-20181025145500-3a985a084b0a/go.mod h1:YDAKBud2FP7NZdruCSlmTmDOZbVSa6bpK7LJ/A/nlKg= github.com/gobuffalo/meta v0.0.0-20181114191255-b130ebedd2f7/go.mod h1:K6cRZ29ozr4Btvsqkjvg5nDFTLOgTqf03KA70Ks0ypE= github.com/gobuffalo/meta v0.0.0-20181127070345-0d7e59dd540b/go.mod h1:RLO7tMvE0IAKAM8wny1aN12pvEKn7EtkBLkUZR00Qf8= +github.com/gobuffalo/meta v0.0.0-20190120163247-50bbb1fa260d/go.mod h1:KKsH44nIK2gA8p0PJmRT9GvWJUdphkDUA8AJEvFWiqM= +github.com/gobuffalo/meta v0.0.0-20190121163014-ecaa953cbfb3 h1:JzhweLavqD8ZNLOIBRvE5IPyp+sw/wYQmL9c5XwZuHI= +github.com/gobuffalo/meta v0.0.0-20190121163014-ecaa953cbfb3/go.mod h1:KLfkGnS+Tucc+iTkUcAUBtxpwOJGfhw2pHRLddPxMQY= github.com/gobuffalo/mw-basicauth v1.0.3/go.mod h1:dg7+ilMZOKnQFHDefUzUHufNyTswVUviCBgF244C1+0= github.com/gobuffalo/mw-contenttype v0.0.0-20180802152300-74f5a47f4d56/go.mod h1:7EvcmzBbeCvFtQm5GqF9ys6QnCxz2UM1x0moiWLq1No= github.com/gobuffalo/mw-csrf v0.0.0-20180802151833-446ff26e108b/go.mod h1:sbGtb8DmDZuDUQoxjr8hG1ZbLtZboD9xsn6p77ppcHo= @@ -128,6 +172,7 @@ github.com/gobuffalo/packd v0.0.0-20181111195323-b2e760a5f0ff/go.mod h1:Yf2toFaI github.com/gobuffalo/packd v0.0.0-20181114190715-f25c5d2471d7/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= github.com/gobuffalo/packd v0.0.0-20181124090624-311c6248e5fb/go.mod h1:Foenia9ZvITEvG05ab6XpiD5EfBHPL8A6hush8SJ0o8= github.com/gobuffalo/packd v0.0.0-20181207120301-c49825f8f6f4/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= +github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687 h1:uZ+G4JprR0UEq0aHZs+6eP7TEZuFfrIkmQWejIBV/QQ= github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= github.com/gobuffalo/packr v1.13.7/go.mod h1:KkinLIn/n6+3tVXMwg6KkNvWwVsrRAz4ph+jgpk3Z24= github.com/gobuffalo/packr v1.15.0/go.mod h1:t5gXzEhIviQwVlNx/+3SfS07GS+cZ2hn76WLzPp6MGI= @@ -141,6 +186,11 @@ github.com/gobuffalo/packr/v2 v2.0.0-rc.10/go.mod h1:4CWWn4I5T3v4c1OsJ55HbHlUEKN github.com/gobuffalo/packr/v2 v2.0.0-rc.11/go.mod h1:JoieH/3h3U4UmatmV93QmqyPUdf4wVM9HELaHEu+3fk= github.com/gobuffalo/packr/v2 v2.0.0-rc.12/go.mod h1:FV1zZTsVFi1DSCboO36Xgs4pzCZBjB/tDV9Cz/lSaR8= github.com/gobuffalo/packr/v2 v2.0.0-rc.13/go.mod h1:2Mp7GhBFMdJlOK8vGfl7SYtfMP3+5roE39ejlfjw0rA= +github.com/gobuffalo/packr/v2 v2.0.0-rc.14/go.mod h1:06otbrNvDKO1eNQ3b8hst+1010UooI2MFg+B2Ze4MV8= +github.com/gobuffalo/packr/v2 v2.0.0-rc.15/go.mod h1:IMe7H2nJvcKXSF90y4X1rjYIRlNMJYCxEhssBXNZwWs= +github.com/gobuffalo/packr/v2 v2.0.0/go.mod h1:7McfLpSxaPUoSQm7gYpTZRQSK63mX8EKzzYSEFKvfkM= +github.com/gobuffalo/packr/v2 v2.0.1 h1:2jz0jiCa634BwBZkF7NJNWHD7nGsztQDV7gmM2jJhLs= +github.com/gobuffalo/packr/v2 v2.0.1/go.mod h1:tp5/5A2e67F1lUGTiNadtA2ToP045+mvkWzaqMCsZr4= github.com/gobuffalo/plush v3.7.16+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.20+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.21+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= @@ -149,10 +199,10 @@ github.com/gobuffalo/plush v3.7.23+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5s github.com/gobuffalo/plush v3.7.30+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.31+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.32+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.33+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plushgen v0.0.0-20181128164830-d29dcb966cb2/go.mod h1:r9QwptTFnuvSaSRjpSp4S2/4e2D3tJhARYbvEBcKSb4= github.com/gobuffalo/plushgen v0.0.0-20181203163832-9fc4964505c2/go.mod h1:opEdT33AA2HdrIwK1aibqnTJDVVKXC02Bar/GT1YRVs= github.com/gobuffalo/plushgen v0.0.0-20181207152837-eedb135bd51b/go.mod h1:Lcw7HQbEVm09sAQrCLzIxuhFbB3nAgp4c55E+UlynR0= -github.com/gobuffalo/plushgen v0.0.0-20190104222512-177cd2b872b3 h1:y+xgpBg0jHuTTDOE65FahfUgugBDpOp4C0RXXtGiSB0= github.com/gobuffalo/plushgen v0.0.0-20190104222512-177cd2b872b3/go.mod h1:tYxCozi8X62bpZyKXYHw1ncx2ZtT2nFvG42kuLwYjoc= github.com/gobuffalo/pop v4.8.2+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= github.com/gobuffalo/pop v4.8.3+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= @@ -170,6 +220,7 @@ github.com/gobuffalo/release v1.1.3/go.mod h1:CuXc5/m+4zuq8idoDt1l4va0AXAn/OSs08 github.com/gobuffalo/release v1.1.6/go.mod h1:18naWa3kBsqO0cItXZNJuefCKOENpbbUIqRL1g+p6z0= github.com/gobuffalo/shoulders v1.0.1/go.mod h1:V33CcVmaQ4gRUmHKwq1fiTXuf8Gp/qjQBUL5tHPmvbA= github.com/gobuffalo/syncx v0.0.0-20181120191700-98333ab04150/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/gobuffalo/syncx v0.0.0-20181120194010-558ac7de985f h1:S5EeH1reN93KR0L6TQvkRpu9YggCYXrUqFh1iEgvdC0= github.com/gobuffalo/syncx v0.0.0-20181120194010-558ac7de985f/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobuffalo/tags v2.0.11+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= github.com/gobuffalo/tags v2.0.14+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= @@ -181,28 +232,51 @@ github.com/gobuffalo/validate v2.0.3+incompatible/go.mod h1:N+EtDe0J8252BgfzQUCh github.com/gobuffalo/x v0.0.0-20181003152136-452098b06085/go.mod h1:WevpGD+5YOreDJznWevcn8NTmQEW5STSBgIkpkjzqXc= github.com/gobuffalo/x v0.0.0-20181007152206-913e47c59ca7/go.mod h1:9rDPXaB3kXdKWzMc4odGQQdG2e2DIEmANy5aSJ9yesY= github.com/gofrs/uuid v3.1.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/pat v0.0.0-20180118222023-199c85a7f6d1/go.mod h1:YeAe0gNeiNT5hoiZRI4yiOky6jVdNvfO2N6Kav/HmxY= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.1.2/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= github.com/gorilla/sessions v1.1.3/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= github.com/jmoiron/sqlx v0.0.0-20180614180643-0dae4fefe7c0/go.mod h1:IiEW3SEiiErVyFdH8NTuWjSifiEQKUoyK3LNqr2kCHU= github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/karrick/godirwalk v1.7.7/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/karrick/godirwalk v1.7.8 h1:VfG72pyIxgtC7+3X9CMHI0AOl4LwyRAg98WAgsvffi8= github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -213,6 +287,7 @@ github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czP github.com/markbates/deplist v1.0.4/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= github.com/markbates/deplist v1.0.5/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= github.com/markbates/going v1.0.2/go.mod h1:UWCk3zm0UKefHZ7l8BNqi26UyiEMniznk8naLdTcy6c= +github.com/markbates/going v1.0.3/go.mod h1:fQiT6v6yQar9UD6bd/D4Z5Afbk9J6BBVBtLiyY4gp2o= github.com/markbates/grift v1.0.4/go.mod h1:wbmtW74veyx+cgfwFhlnnMWqhoz55rnHR47oMXzsyVs= github.com/markbates/hmax v1.0.0/go.mod h1:cOkR9dktiESxIMu+65oc/r/bdY4bE8zZw3OLhLx0X2c= github.com/markbates/inflect v1.0.0/go.mod h1:oTeZL2KHA7CUX6X+fovmK9OvIOFuqu0TwdQrZjLTh88= @@ -222,44 +297,75 @@ github.com/markbates/inflect v1.0.4/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzfe github.com/markbates/oncer v0.0.0-20180924031910-e862a676800b/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/oncer v0.0.0-20180924034138-723ad0170a46/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/oncer v0.0.0-20181014194634-05fccaae8fc4/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2 h1:JgVTCPf0uBVcUSWpyXmGpgOc62nK5HWUBKAGc3Qqa5k= github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/refresh v1.4.10/go.mod h1:NDPHvotuZmTmesXxr95C9bjlw1/0frJwtME2dzcVKhc= github.com/markbates/safe v1.0.0/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/markbates/sigtx v1.0.0/go.mod h1:QF1Hv6Ic6Ca6W+T+DL0Y/ypborFKyvUY9HmuCD4VeTc= github.com/markbates/willie v1.0.9/go.mod h1:fsrFVWl91+gXpx/6dv715j7i11fYPfZ9ZGfH0DQzY7w= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= -github.com/microcosm-cc/bluemonday v1.0.2 h1:5lPfLTTAvAbtS0VqT+94yOtFnGfUWYyx0+iToC3Os3s= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.0.0/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/monoculum/formam v0.0.0-20180901015400-4e68be1d79ba/go.mod h1:RKgILGEJq24YyJ2ban8EO0RUVSJlF1pGsEvoLEACr/Q= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/nicksnyder/go-i18n v1.10.0/go.mod h1:HrK7VCrbOvQoUAQ7Vpy7i87N7JZZZ7R2xBGjv0j365Q= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/rogpeppe/go-internal v1.0.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.1.0 h1:g0fH8RicVgNl+zVZDCDfbdWxAWoAEJyI7I3TZYXFiig= +github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= github.com/shurcooL/highlight_go v0.0.0-20170515013102-78fb10f4a5f8/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= github.com/shurcooL/octicon v0.0.0-20180602230221-c42b0e3b24d9/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.1.0/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= @@ -272,9 +378,11 @@ github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B github.com/spf13/afero v1.2.0/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/viper v1.2.1/go.mod h1:P4AexN0a+C9tGAnUFNwDMYYZv3pjFuvmeiMyKRaNVlI= github.com/spf13/viper v1.3.1/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= @@ -283,10 +391,14 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/unrolled/secure v0.0.0-20180918153822-f340ee86eb8b/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= github.com/unrolled/secure v0.0.0-20181005190816-ff9db2ff917f/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181001203147-e3636079e1a4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -295,15 +407,21 @@ golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20181024171144-74cb1d3d52f4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181025113841-85e1b3f9139a/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181106171534-e4dc69e5b2fd/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181127143415-eb0de9b17e85/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190102171810-8d7daa0c54b3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc h1:F5tKCVGp+MUAHhKp5MZtGqAlGX3+oCsiL1Q629FL90M= golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67 h1:ng3VDlRp5/DHpSWl02R4rM9I+8M2rhmsuLwAMmkLQWE= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180816102801-aaf60122140d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180921000356-2f5d2388922f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180926154720-4dfa2610cdf3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -311,16 +429,23 @@ golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181017193950-04a2e542c03f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181207154023-610586996380/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3 h1:eH6Eip3UpmR+yM/qI9Ijluzb1bNv/cAU/n+6l8tRSis= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180906133057-8cf3aee42992/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -333,13 +458,19 @@ golang.org/x/sys v0.0.0-20181024145615-5cd93ef61a7c/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181025063200-d989b31c8746/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026064943-731415f00dce/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181106135930-3a76605856fd/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181206074257-70b957f3b65e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190102155601-82a175fd1598 h1:S8GOgffXV1X3fpVG442QRfWOt0iFl79eHJ7OPt725bo= golang.org/x/sys v0.0.0-20190102155601-82a175fd1598/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190116161447-11f53e031339 h1:g/Jesu8+QLnA0CPzF3E1pURg0Byr7i6jLoX5sqjcAh0= +golang.org/x/sys v0.0.0-20190116161447-11f53e031339/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181003024731-2f84ea8ef872/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181006002542-f60d9635b16a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -348,6 +479,7 @@ golang.org/x/tools v0.0.0-20181013182035-5e66757b835f/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20181017214349-06f26fdaaa28/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181024171208-a2dc47679d30/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181026183834-f60e5f99f081/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181105230042-78dc5bac0cac/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181107215632-34b416bd17b3/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181114190951-94339b83286c/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -360,9 +492,29 @@ golang.org/x/tools v0.0.0-20181206194817-bcd4e47d0288/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20181207183836-8bc39b988060/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181212172921-837e80568c09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190102213336-ca9055ed7d04/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190104182027-498d95493402 h1:OWOoOXVO7TiAe7djxWtdLAfVGJsPygFlLYlo+MyngLU= golang.org/x/tools v0.0.0-20190104182027-498d95493402/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190111214448-fc1d57b08d7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190118193359-16909d206f00/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190124004107-78ee07aa9465/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190131142011-8dbcc66f33bb/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206221403-44bcb96178d3/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190219185102-9394956cfdc5 h1:b4GZ2lQCm9+A7Et8ySqSq+t8f3wN+q56prDeN1DPAhQ= +golang.org/x/tools v0.0.0-20190219185102-9394956cfdc5/go.mod h1:E6PF97AdD6v0s+fPshSmumCW1S1Ne85RbPQxELkKa44= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922/go.mod h1:L3J43x8/uS+qIUoksaLKe6OS3nUKxOKuIFz1sl2/jx4= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -371,7 +523,13 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/mail.v2 v2.0.0-20180731213649-a0242b2233b4/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/get.go b/vendor/github.com/gobuffalo/genny/movinglater/gotools/get.go deleted file mode 100644 index a497df621..000000000 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/get.go +++ /dev/null @@ -1,25 +0,0 @@ -package gotools - -import ( - "os/exec" - - "github.com/gobuffalo/genny" - "github.com/gobuffalo/genny/movinglater/gotools/gomods" -) - -func Get(pkg string, args ...string) genny.RunFn { - return func(r *genny.Runner) error { - args = append([]string{"get"}, args...) - args = append(args, pkg) - cmd := exec.Command(genny.GoBin(), args...) - return r.Exec(cmd) - } -} - -func Install(pkg string, args ...string) genny.RunFn { - return func(r *genny.Runner) error { - return gomods.Disable(func() error { - return Get(pkg, args...)(r) - }) - } -} diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/gotools.go b/vendor/github.com/gobuffalo/genny/movinglater/gotools/gotools.go deleted file mode 100644 index 7174107ec..000000000 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/gotools.go +++ /dev/null @@ -1 +0,0 @@ -package gotools diff --git a/vendor/github.com/gobuffalo/genny/runner.go b/vendor/github.com/gobuffalo/genny/runner.go index 8da9a4690..7a0d232e8 100644 --- a/vendor/github.com/gobuffalo/genny/runner.go +++ b/vendor/github.com/gobuffalo/genny/runner.go @@ -142,6 +142,15 @@ func (r *Runner) FindStep(name string) (*Step, error) { return s, nil } +func (r *Runner) ReplaceStep(name string, s *Step) error { + os, err := r.FindStep(name) + if err != nil { + return errors.WithStack(err) + } + s.index = os.index + return r.WithStep(name, s) +} + func (r *Runner) Run() error { if f, ok := r.Logger.(io.Closer); ok { defer f.Close() diff --git a/vendor/github.com/gobuffalo/gogen/.gitignore b/vendor/github.com/gobuffalo/gogen/.gitignore new file mode 100644 index 000000000..368971859 --- /dev/null +++ b/vendor/github.com/gobuffalo/gogen/.gitignore @@ -0,0 +1,29 @@ +*.log +.DS_Store +doc +tmp +pkg +*.gem +*.pid +coverage +coverage.data +build/* +*.pbxuser +*.mode1v3 +.svn +profile +.console_history +.sass-cache/* +.rake_tasks~ +*.log.lck +solr/ +.jhw-cache/ +jhw.* +*.sublime* +node_modules/ +dist/ +generated/ +.vendor/ +bin/* +gin-bin +.idea/ diff --git a/vendor/github.com/gobuffalo/gogen/.gometalinter.json b/vendor/github.com/gobuffalo/gogen/.gometalinter.json new file mode 100644 index 000000000..e4f65a36e --- /dev/null +++ b/vendor/github.com/gobuffalo/gogen/.gometalinter.json @@ -0,0 +1,3 @@ +{ + "Enable": ["vet", "golint", "goimports", "deadcode", "gotype", "ineffassign", "misspell", "nakedret", "unconvert", "megacheck", "varcheck"] +} diff --git a/vendor/github.com/gobuffalo/gogen/LICENSE b/vendor/github.com/gobuffalo/gogen/LICENSE new file mode 100644 index 000000000..649efd437 --- /dev/null +++ b/vendor/github.com/gobuffalo/gogen/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2019 Mark Bates + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/gobuffalo/gogen/Makefile b/vendor/github.com/gobuffalo/gogen/Makefile new file mode 100644 index 000000000..2b893c0a2 --- /dev/null +++ b/vendor/github.com/gobuffalo/gogen/Makefile @@ -0,0 +1,52 @@ +TAGS ?= "sqlite" +GO_BIN ?= go + +install: + $(GO_BIN) install -tags ${TAGS} -v . + make tidy + +tidy: +ifeq ($(GO111MODULE),on) + $(GO_BIN) mod tidy +else + echo skipping go mod tidy +endif + +deps: + $(GO_BIN) get github.com/gobuffalo/release + $(GO_BIN) get -tags ${TAGS} -t ./... + make tidy + +build: + $(GO_BIN) build -v . + make tidy + +test: + $(GO_BIN) test -tags ${TAGS} ./... + make tidy + +ci-deps: + $(GO_BIN) get -tags ${TAGS} -t ./... + +ci-test: + $(GO_BIN) test -tags ${TAGS} -race ./... + +lint: + gometalinter --vendor ./... --deadline=1m --skip=internal + make tidy + +update: + $(GO_BIN) get -u -tags ${TAGS} + make tidy + make test + make install + make tidy + +release-test: + $(GO_BIN) test -tags ${TAGS} -race ./... + make tidy + +release: + make tidy + release -y -f version.go + make tidy diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/add_import.go b/vendor/github.com/gobuffalo/gogen/add_import.go similarity index 98% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/add_import.go rename to vendor/github.com/gobuffalo/gogen/add_import.go index 8714c626e..338fb1b99 100644 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/add_import.go +++ b/vendor/github.com/gobuffalo/gogen/add_import.go @@ -1,4 +1,4 @@ -package gotools +package gogen import ( "fmt" diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/add_inside_block.go b/vendor/github.com/gobuffalo/gogen/add_inside_block.go similarity index 99% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/add_inside_block.go rename to vendor/github.com/gobuffalo/gogen/add_inside_block.go index 9c72b611d..72a807bd4 100644 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/add_inside_block.go +++ b/vendor/github.com/gobuffalo/gogen/add_inside_block.go @@ -1,4 +1,4 @@ -package gotools +package gogen import ( "fmt" diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/append.go b/vendor/github.com/gobuffalo/gogen/append.go similarity index 86% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/append.go rename to vendor/github.com/gobuffalo/gogen/append.go index 438f32459..494d08640 100644 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/append.go +++ b/vendor/github.com/gobuffalo/gogen/append.go @@ -1,4 +1,4 @@ -package gotools +package gogen import ( "strings" @@ -7,7 +7,7 @@ import ( "github.com/pkg/errors" ) -//Append allows to append source into a go file +// Append allows to append source into a go file func Append(gf genny.File, expressions ...string) (genny.File, error) { pf, err := ParseFile(gf) if err != nil { diff --git a/vendor/github.com/gobuffalo/gogen/azure-pipelines.yml b/vendor/github.com/gobuffalo/gogen/azure-pipelines.yml new file mode 100644 index 000000000..144c4a209 --- /dev/null +++ b/vendor/github.com/gobuffalo/gogen/azure-pipelines.yml @@ -0,0 +1,59 @@ +variables: + GOBIN: "$(GOPATH)/bin" # Go binaries path + GOPATH: "$(system.defaultWorkingDirectory)/gopath" # Go workspace path + modulePath: "$(GOPATH)/src/github.com/$(build.repository.name)" # Path to the module"s code + +jobs: +- job: Windows + pool: + vmImage: "vs2017-win2016" + strategy: + matrix: + go 1.9: + go_version: "1.9" + go 1.10: + go_version: "1.10" + go 1.11 (on): + go_version: "1.11" + GO111MODULE: "on" + go 1.11 (off): + go_version: "1.11" + GO111MODULE: "off" + steps: + - template: azure-tests.yml + +- job: macOS + pool: + vmImage: "macOS-10.13" + strategy: + matrix: + go 1.9: + go_version: "1.9" + go 1.10: + go_version: "1.10" + go 1.11 (on): + go_version: "1.11" + GO111MODULE: "on" + go 1.11 (off): + go_version: "1.11" + GO111MODULE: "off" + steps: + - template: azure-tests.yml + +- job: Linux + pool: + vmImage: "ubuntu-16.04" + strategy: + matrix: + go 1.9: + go_version: "1.9" + go 1.10: + go_version: "1.10" + go 1.11 (on): + go_version: "1.11" + GO111MODULE: "on" + go 1.11 (off): + go_version: "1.11" + GO111MODULE: "off" + steps: + - template: azure-tests.yml diff --git a/vendor/github.com/gobuffalo/gogen/azure-tests.yml b/vendor/github.com/gobuffalo/gogen/azure-tests.yml new file mode 100644 index 000000000..eea5822fa --- /dev/null +++ b/vendor/github.com/gobuffalo/gogen/azure-tests.yml @@ -0,0 +1,19 @@ +steps: + - task: GoTool@0 + inputs: + version: $(go_version) + - task: Bash@3 + inputs: + targetType: inline + script: | + mkdir -p "$(GOBIN)" + mkdir -p "$(GOPATH)/pkg" + mkdir -p "$(modulePath)" + shopt -s extglob + mv !(gopath) "$(modulePath)" + displayName: "Setup Go Workspace" + - script: | + go get -t -v ./... + go test -race ./... + workingDirectory: "$(modulePath)" + displayName: "Tests" diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/files.go b/vendor/github.com/gobuffalo/gogen/files.go similarity index 97% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/files.go rename to vendor/github.com/gobuffalo/gogen/files.go index 466cda7d7..33a464f43 100644 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/files.go +++ b/vendor/github.com/gobuffalo/gogen/files.go @@ -1,4 +1,4 @@ -package gotools +package gogen import ( "os" diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/fmt.go b/vendor/github.com/gobuffalo/gogen/fmt.go similarity index 83% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/fmt.go rename to vendor/github.com/gobuffalo/gogen/fmt.go index f2669884b..8d934791e 100644 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/fmt.go +++ b/vendor/github.com/gobuffalo/gogen/fmt.go @@ -1,14 +1,14 @@ -package gotools +package gogen import ( "bytes" "github.com/gobuffalo/genny" - "github.com/gobuffalo/genny/movinglater/gotools/goimports" + "github.com/gobuffalo/gogen/goimports" "github.com/pkg/errors" ) -func GoFmt(root string) (*genny.Generator, error) { +func Fmt(root string) (*genny.Generator, error) { g := genny.New() g.RunFn(func(r *genny.Runner) error { i, err := goimports.New(root) diff --git a/vendor/github.com/gobuffalo/gogen/get.go b/vendor/github.com/gobuffalo/gogen/get.go new file mode 100644 index 000000000..d18a6ea47 --- /dev/null +++ b/vendor/github.com/gobuffalo/gogen/get.go @@ -0,0 +1,24 @@ +package gogen + +import ( + "os/exec" + + "github.com/gobuffalo/genny" + "github.com/gobuffalo/gogen/gomods" +) + +func Get(pkg string, args ...string) *exec.Cmd { + args = append([]string{"get"}, args...) + args = append(args, pkg) + cmd := exec.Command(genny.GoBin(), args...) + return cmd +} + +func Install(pkg string, args ...string) genny.RunFn { + return func(r *genny.Runner) error { + return gomods.Disable(func() error { + cmd := Get(pkg, args...) + return r.Exec(cmd) + }) + } +} diff --git a/vendor/github.com/gobuffalo/gogen/go.mod b/vendor/github.com/gobuffalo/gogen/go.mod new file mode 100644 index 000000000..dba473493 --- /dev/null +++ b/vendor/github.com/gobuffalo/gogen/go.mod @@ -0,0 +1,10 @@ +module github.com/gobuffalo/gogen + +require ( + github.com/gobuffalo/envy v1.6.15 + github.com/gobuffalo/genny v0.0.0-20190219203444-c95082806342 + github.com/markbates/safe v1.0.1 + github.com/pkg/errors v0.8.1 + github.com/stretchr/testify v1.3.0 + golang.org/x/tools v0.0.0-20190221204921-83362c3779f5 +) diff --git a/vendor/github.com/gobuffalo/gogen/go.sum b/vendor/github.com/gobuffalo/gogen/go.sum new file mode 100644 index 000000000..8225a08de --- /dev/null +++ b/vendor/github.com/gobuffalo/gogen/go.sum @@ -0,0 +1,534 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.36.0/go.mod h1:RUoy9p/M4ge0HzT8L+SDZ8jg+Q6fth0CiBuhFJpSV40= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/ajg/form v0.0.0-20160822230020-523a5da1a92f/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= +github.com/codegangsta/negroni v1.0.0/go.mod h1:v0y3T5G7Y1UlFfyxFn/QLRU4a2EuNau2iZY63YTKWo0= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dustin/go-humanize v0.0.0-20180713052910-9f541cc9db5d/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/gobuffalo/attrs v0.0.0-20190219185331-f338c9388485/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= +github.com/gobuffalo/buffalo v0.12.8-0.20181004233540-fac9bb505aa8/go.mod h1:sLyT7/dceRXJUxSsE813JTQtA3Eb1vjxWfo/N//vXIY= +github.com/gobuffalo/buffalo v0.13.0/go.mod h1:Mjn1Ba9wpIbpbrD+lIDMy99pQ0H0LiddMIIDGse7qT4= +github.com/gobuffalo/buffalo-plugins v1.0.2/go.mod h1:pOp/uF7X3IShFHyobahTkTLZaeUXwb0GrUTb9ngJWTs= +github.com/gobuffalo/buffalo-plugins v1.0.4/go.mod h1:pWS1vjtQ6uD17MVFWf7i3zfThrEKWlI5+PYLw/NaDB4= +github.com/gobuffalo/buffalo-plugins v1.4.3/go.mod h1:uCzTY0woez4nDMdQjkcOYKanngeUVRO2HZi7ezmAjWY= +github.com/gobuffalo/buffalo-plugins v1.5.1/go.mod h1:jbmwSZK5+PiAP9cC09VQOrGMZFCa/P0UMlIS3O12r5w= +github.com/gobuffalo/buffalo-plugins v1.6.4/go.mod h1:/+N1aophkA2jZ1ifB2O3Y9yGwu6gKOVMtUmJnbg+OZI= +github.com/gobuffalo/buffalo-plugins v1.6.5/go.mod h1:0HVkbgrVs/MnPZ/FOseDMVanCTm2RNcdM0PuXcL1NNI= +github.com/gobuffalo/buffalo-plugins v1.6.7/go.mod h1:ZGZRkzz2PiKWHs0z7QsPBOTo2EpcGRArMEym6ghKYgk= +github.com/gobuffalo/buffalo-plugins v1.6.9/go.mod h1:yYlYTrPdMCz+6/+UaXg5Jm4gN3xhsvsQ2ygVatZV5vw= +github.com/gobuffalo/buffalo-plugins v1.6.11/go.mod h1:eAA6xJIL8OuynJZ8amXjRmHND6YiusVAaJdHDN1Lu8Q= +github.com/gobuffalo/buffalo-plugins v1.8.2/go.mod h1:9te6/VjEQ7pKp7lXlDIMqzxgGpjlKoAcAANdCgoR960= +github.com/gobuffalo/buffalo-plugins v1.8.3/go.mod h1:IAWq6vjZJVXebIq2qGTLOdlXzmpyTZ5iJG5b59fza5U= +github.com/gobuffalo/buffalo-plugins v1.9.4/go.mod h1:grCV6DGsQlVzQwk6XdgcL3ZPgLm9BVxlBmXPMF8oBHI= +github.com/gobuffalo/buffalo-plugins v1.10.0/go.mod h1:4osg8d9s60txLuGwXnqH+RCjPHj9K466cDFRl3PErHI= +github.com/gobuffalo/buffalo-plugins v1.11.0/go.mod h1:rtIvAYRjYibgmWhnjKmo7OadtnxuMG5ZQLr25ozAzjg= +github.com/gobuffalo/buffalo-plugins v1.12.0 h1:5rvYQ7mwfPwUW9zqcMd9ahWtPVOOouMKZjv88q45Z7c= +github.com/gobuffalo/buffalo-plugins v1.12.0/go.mod h1:kw4Mj2vQXqe4X5TI36PEQgswbL30heGQwJEeDKd1v+4= +github.com/gobuffalo/buffalo-pop v1.0.5/go.mod h1:Fw/LfFDnSmB/vvQXPvcXEjzP98Tc+AudyNWUBWKCwQ8= +github.com/gobuffalo/depgen v0.0.0-20190219190223-ba8c93fa0c2c/go.mod h1:CE/HUV4vDCXtJayRf6WoMWgezb1yH4QHg8GNK8FL0JI= +github.com/gobuffalo/envy v1.6.4/go.mod h1:Abh+Jfw475/NWtYMEt+hnJWRiC8INKWibIMyNt1w2Mc= +github.com/gobuffalo/envy v1.6.5/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= +github.com/gobuffalo/envy v1.6.6/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= +github.com/gobuffalo/envy v1.6.7/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= +github.com/gobuffalo/envy v1.6.8/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= +github.com/gobuffalo/envy v1.6.9/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= +github.com/gobuffalo/envy v1.6.10/go.mod h1:X0CFllQjTV5ogsnUrg+Oks2yTI+PU2dGYBJOEI2D1Uo= +github.com/gobuffalo/envy v1.6.11/go.mod h1:Fiq52W7nrHGDggFPhn2ZCcHw4u/rqXkqo+i7FB6EAcg= +github.com/gobuffalo/envy v1.6.12/go.mod h1:qJNrJhKkZpEW0glh5xP2syQHH5kgdmgsKss2Kk8PTP0= +github.com/gobuffalo/envy v1.6.13/go.mod h1:w9DJppgl51JwUFWWd/M/6/otrPtWV3WYMa+NNLunqKA= +github.com/gobuffalo/envy v1.6.15 h1:OsV5vOpHYUpP7ZLS6sem1y40/lNX1BZj+ynMiRi21lQ= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/events v1.0.3/go.mod h1:Txo8WmqScapa7zimEQIwgiJBvMECMe9gJjsKNPN3uZw= +github.com/gobuffalo/events v1.0.7/go.mod h1:z8txf6H9jWhQ5Scr7YPLWg/cgXBRj8Q4uYI+rsVCCSQ= +github.com/gobuffalo/events v1.0.8/go.mod h1:A5KyqT1sA+3GJiBE4QKZibse9mtOcI9nw8gGrDdqYGs= +github.com/gobuffalo/events v1.1.3/go.mod h1:9yPGWYv11GENtzrIRApwQRMYSbUgCsZ1w6R503fCfrk= +github.com/gobuffalo/events v1.1.4/go.mod h1:09/YRRgZHEOts5Isov+g9X2xajxdvOAcUuAHIX/O//A= +github.com/gobuffalo/events v1.1.5/go.mod h1:3YUSzgHfYctSjEjLCWbkXP6djH2M+MLaVRzb4ymbAK0= +github.com/gobuffalo/events v1.1.7/go.mod h1:6fGqxH2ing5XMb3EYRq9LEkVlyPGs4oO/eLzh+S8CxY= +github.com/gobuffalo/events v1.1.8/go.mod h1:UFy+W6X6VbCWS8k2iT81HYX65dMtiuVycMy04cplt/8= +github.com/gobuffalo/events v1.1.9/go.mod h1:/0nf8lMtP5TkgNbzYxR6Bl4GzBy5s5TebgNTdRfRbPM= +github.com/gobuffalo/events v1.2.0 h1:YovlMNcwNTfIm/3OdB+KemDOm8yUz4XIH+4kbMhGXWw= +github.com/gobuffalo/events v1.2.0/go.mod h1:pxvpvsKXKZNPtHuIxUV3K+g+KP5o4forzaeFj++bh68= +github.com/gobuffalo/fizz v1.0.12/go.mod h1:C0sltPxpYK8Ftvf64kbsQa2yiCZY4RZviurNxXdAKwc= +github.com/gobuffalo/flect v0.0.0-20180907193754-dc14d8acaf9f/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181002182613-4571df4b1daf/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181007231023-ae7ed6bfe683/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181018182602-fd24a256709f/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181019110701-3d6f0b585514/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181024204909-8f6be1a8c6c2/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181104133451-1f6e9779237a/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181114183036-47375f6d8328/go.mod h1:0HvNbHdfh+WOvDSIASqJOSxTOWSxCCUF++k/Y53v9rI= +github.com/gobuffalo/flect v0.0.0-20181210151238-24a2b68e0316/go.mod h1:en58vff74S9b99Eg42Dr+/9yPu437QjlNsO/hBYPuOk= +github.com/gobuffalo/flect v0.0.0-20190104192022-4af577e09bf2/go.mod h1:en58vff74S9b99Eg42Dr+/9yPu437QjlNsO/hBYPuOk= +github.com/gobuffalo/flect v0.0.0-20190117212819-a62e61d96794/go.mod h1:397QT6v05LkZkn07oJXXT6y9FCfwC8Pug0WA2/2mE9k= +github.com/gobuffalo/flect v0.1.0 h1:EJvbvZlo9exJk5UK02lz5pTs3XEpIM5/4o691KfvtkM= +github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= +github.com/gobuffalo/genny v0.0.0-20180924032338-7af3a40f2252/go.mod h1:tUTQOogrr7tAQnhajMSH6rv1BVev34H2sa1xNHMy94g= +github.com/gobuffalo/genny v0.0.0-20181003150629-3786a0744c5d/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= +github.com/gobuffalo/genny v0.0.0-20181005145118-318a41a134cc/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= +github.com/gobuffalo/genny v0.0.0-20181007153042-b8de7d566757/go.mod h1:+oG5Ljrw04czAHbPXREwaFojJbpUvcIy4DiOnbEJFTA= +github.com/gobuffalo/genny v0.0.0-20181012161047-33e5f43d83a6/go.mod h1:+oG5Ljrw04czAHbPXREwaFojJbpUvcIy4DiOnbEJFTA= +github.com/gobuffalo/genny v0.0.0-20181017160347-90a774534246/go.mod h1:+oG5Ljrw04czAHbPXREwaFojJbpUvcIy4DiOnbEJFTA= +github.com/gobuffalo/genny v0.0.0-20181024195656-51392254bf53/go.mod h1:o9GEH5gn5sCKLVB5rHFC4tq40rQ3VRUzmx6WwmaqISE= +github.com/gobuffalo/genny v0.0.0-20181025145300-af3f81d526b8/go.mod h1:uZ1fFYvdcP8mu0B/Ynarf6dsGvp7QFIpk/QACUuFUVI= +github.com/gobuffalo/genny v0.0.0-20181027191429-94d6cfb5c7fc/go.mod h1:x7SkrQQBx204Y+O9EwRXeszLJDTaWN0GnEasxgLrQTA= +github.com/gobuffalo/genny v0.0.0-20181027195209-3887b7171c4f/go.mod h1:JbKx8HSWICu5zyqWOa0dVV1pbbXOHusrSzQUprW6g+w= +github.com/gobuffalo/genny v0.0.0-20181106193839-7dcb0924caf1/go.mod h1:x61yHxvbDCgQ/7cOAbJCacZQuHgB0KMSzoYcw5debjU= +github.com/gobuffalo/genny v0.0.0-20181107223128-f18346459dbe/go.mod h1:utQD3aKKEsdb03oR+Vi/6ztQb1j7pO10N3OBoowRcSU= +github.com/gobuffalo/genny v0.0.0-20181114215459-0a4decd77f5d/go.mod h1:kN2KZ8VgXF9VIIOj/GM0Eo7YK+un4Q3tTreKOf0q1ng= +github.com/gobuffalo/genny v0.0.0-20181119162812-e8ff4adce8bb/go.mod h1:BA9htSe4bZwBDJLe8CUkoqkypq3hn3+CkoHqVOW718E= +github.com/gobuffalo/genny v0.0.0-20181127225641-2d959acc795b/go.mod h1:l54xLXNkteX/PdZ+HlgPk1qtcrgeOr3XUBBPDbH+7CQ= +github.com/gobuffalo/genny v0.0.0-20181128191930-77e34f71ba2a/go.mod h1:FW/D9p7cEEOqxYA71/hnrkOWm62JZ5ZNxcNIVJEaWBU= +github.com/gobuffalo/genny v0.0.0-20181203165245-fda8bcce96b1/go.mod h1:wpNSANu9UErftfiaAlz1pDZclrYzLtO5lALifODyjuM= +github.com/gobuffalo/genny v0.0.0-20181203201232-849d2c9534ea/go.mod h1:wpNSANu9UErftfiaAlz1pDZclrYzLtO5lALifODyjuM= +github.com/gobuffalo/genny v0.0.0-20181206121324-d6fb8a0dbe36/go.mod h1:wpNSANu9UErftfiaAlz1pDZclrYzLtO5lALifODyjuM= +github.com/gobuffalo/genny v0.0.0-20181207164119-84844398a37d/go.mod h1:y0ysCHGGQf2T3vOhCrGHheYN54Y/REj0ayd0Suf4C/8= +github.com/gobuffalo/genny v0.0.0-20181211165820-e26c8466f14d/go.mod h1:sHnK+ZSU4e2feXP3PA29ouij6PUEiN+RCwECjCTB3yM= +github.com/gobuffalo/genny v0.0.0-20190104222617-a71664fc38e7/go.mod h1:QPsQ1FnhEsiU8f+O0qKWXz2RE4TiDqLVChWkBuh1WaY= +github.com/gobuffalo/genny v0.0.0-20190112155932-f31a84fcacf5/go.mod h1:CIaHCrSIuJ4il6ka3Hub4DR4adDrGoXGEEt2FbBxoIo= +github.com/gobuffalo/genny v0.0.0-20190124191459-3310289fa4b4/go.mod h1:yIRqxhZV2sAzb+B3iPUMLauTRrYP8tJUlZ1zV9teKik= +github.com/gobuffalo/genny v0.0.0-20190131150032-1045e97d19fb/go.mod h1:yIRqxhZV2sAzb+B3iPUMLauTRrYP8tJUlZ1zV9teKik= +github.com/gobuffalo/genny v0.0.0-20190131190646-008a76242145/go.mod h1:NJvPZJxb9M4z790P6N2SMZKSUYpASpEvLuUWnHGKzb4= +github.com/gobuffalo/genny v0.0.0-20190219203444-c95082806342 h1:ewzWZ+TT9/3wYSnUPQRU7YFzqWAx4dgUXdgvJVTVLCA= +github.com/gobuffalo/genny v0.0.0-20190219203444-c95082806342/go.mod h1:3BLT+Vs94EEz3fKR8WWOkYpL6c1tdJcZUNCe3LZAnvQ= +github.com/gobuffalo/gitgen v0.0.0-20190219185555-91c2c5f0aad5/go.mod h1:ZzGIrxBvCJEluaU4i3CN0GFlu1Qmb3yK8ziV02evJ1E= +github.com/gobuffalo/github_flavored_markdown v1.0.4/go.mod h1:uRowCdK+q8d/RF0Kt3/DSalaIXbb0De/dmTqMQdkQ4I= +github.com/gobuffalo/github_flavored_markdown v1.0.5/go.mod h1:U0643QShPF+OF2tJvYNiYDLDGDuQmJZXsf/bHOJPsMY= +github.com/gobuffalo/github_flavored_markdown v1.0.7/go.mod h1:w93Pd9Lz6LvyQXEG6DktTPHkOtCbr+arAD5mkwMzXLI= +github.com/gobuffalo/gogen v0.0.0-20190219194924-d32a17ad9761/go.mod h1:v47C8sid+ZM2qK+YpQ2MGJKssKAqyTsH1wl/pTCPdz8= +github.com/gobuffalo/httptest v1.0.2/go.mod h1:7T1IbSrg60ankme0aDLVnEY0h056g9M1/ZvpVThtB7E= +github.com/gobuffalo/licenser v0.0.0-20180924033006-eae28e638a42/go.mod h1:Ubo90Np8gpsSZqNScZZkVXXAo5DGhTb+WYFIjlnog8w= +github.com/gobuffalo/licenser v0.0.0-20181025145548-437d89de4f75/go.mod h1:x3lEpYxkRG/XtGCUNkio+6RZ/dlOvLzTI9M1auIwFcw= +github.com/gobuffalo/licenser v0.0.0-20181027200154-58051a75da95/go.mod h1:BzhaaxGd1tq1+OLKObzgdCV9kqVhbTulxOpYbvMQWS0= +github.com/gobuffalo/licenser v0.0.0-20181109171355-91a2a7aac9a7/go.mod h1:m+Ygox92pi9bdg+gVaycvqE8RVSjZp7mWw75+K5NPHk= +github.com/gobuffalo/licenser v0.0.0-20181128165715-cc7305f8abed/go.mod h1:oU9F9UCE+AzI/MueCKZamsezGOOHfSirltllOVeRTAE= +github.com/gobuffalo/licenser v0.0.0-20181203160806-fe900bbede07/go.mod h1:ph6VDNvOzt1CdfaWC+9XwcBnlSTBz2j49PBwum6RFaU= +github.com/gobuffalo/licenser v0.0.0-20181211173111-f8a311c51159/go.mod h1:ve/Ue99DRuvnTaLq2zKa6F4KtHiYf7W046tDjuGYPfM= +github.com/gobuffalo/logger v0.0.0-20181022175615-46cfb361fc27/go.mod h1:8sQkgyhWipz1mIctHF4jTxmJh1Vxhp7mP8IqbljgJZo= +github.com/gobuffalo/logger v0.0.0-20181027144941-73d08d2bb969/go.mod h1:7uGg2duHKpWnN4+YmyKBdLXfhopkAdVM6H3nKbyFbz8= +github.com/gobuffalo/logger v0.0.0-20181027193913-9cf4dd0efe46/go.mod h1:7uGg2duHKpWnN4+YmyKBdLXfhopkAdVM6H3nKbyFbz8= +github.com/gobuffalo/logger v0.0.0-20181109185836-3feeab578c17/go.mod h1:oNErH0xLe+utO+OW8ptXMSA5DkiSEDW1u3zGIt8F9Ew= +github.com/gobuffalo/logger v0.0.0-20181117211126-8e9b89b7c264/go.mod h1:5etB91IE0uBlw9k756fVKZJdS+7M7ejVhmpXXiSFj0I= +github.com/gobuffalo/logger v0.0.0-20181127160119-5b956e21995c h1:Z/ppYX6EtPEysbW4VEGz2dO+4F4VTthWp2sWRUCANdU= +github.com/gobuffalo/logger v0.0.0-20181127160119-5b956e21995c/go.mod h1:+HxKANrR9VGw9yN3aOAppJKvhO05ctDi63w4mDnKv2U= +github.com/gobuffalo/makr v1.1.5/go.mod h1:Y+o0btAH1kYAMDJW/TX3+oAXEu0bmSLLoC9mIFxtzOw= +github.com/gobuffalo/mapi v1.0.0/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/mapi v1.0.1 h1:JRuTiZzDEZhBHkFiHTxJkYRT6CbYuL0K/rn+1byJoEA= +github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/meta v0.0.0-20181018155829-df62557efcd3/go.mod h1:XTTOhwMNryif3x9LkTTBO/Llrveezd71u3quLd0u7CM= +github.com/gobuffalo/meta v0.0.0-20181018192820-8c6cef77dab3/go.mod h1:E94EPzx9NERGCY69UWlcj6Hipf2uK/vnfrF4QD0plVE= +github.com/gobuffalo/meta v0.0.0-20181025145500-3a985a084b0a/go.mod h1:YDAKBud2FP7NZdruCSlmTmDOZbVSa6bpK7LJ/A/nlKg= +github.com/gobuffalo/meta v0.0.0-20181114191255-b130ebedd2f7/go.mod h1:K6cRZ29ozr4Btvsqkjvg5nDFTLOgTqf03KA70Ks0ypE= +github.com/gobuffalo/meta v0.0.0-20181127070345-0d7e59dd540b/go.mod h1:RLO7tMvE0IAKAM8wny1aN12pvEKn7EtkBLkUZR00Qf8= +github.com/gobuffalo/meta v0.0.0-20190120163247-50bbb1fa260d/go.mod h1:KKsH44nIK2gA8p0PJmRT9GvWJUdphkDUA8AJEvFWiqM= +github.com/gobuffalo/meta v0.0.0-20190121163014-ecaa953cbfb3 h1:JzhweLavqD8ZNLOIBRvE5IPyp+sw/wYQmL9c5XwZuHI= +github.com/gobuffalo/meta v0.0.0-20190121163014-ecaa953cbfb3/go.mod h1:KLfkGnS+Tucc+iTkUcAUBtxpwOJGfhw2pHRLddPxMQY= +github.com/gobuffalo/mw-basicauth v1.0.3/go.mod h1:dg7+ilMZOKnQFHDefUzUHufNyTswVUviCBgF244C1+0= +github.com/gobuffalo/mw-contenttype v0.0.0-20180802152300-74f5a47f4d56/go.mod h1:7EvcmzBbeCvFtQm5GqF9ys6QnCxz2UM1x0moiWLq1No= +github.com/gobuffalo/mw-csrf v0.0.0-20180802151833-446ff26e108b/go.mod h1:sbGtb8DmDZuDUQoxjr8hG1ZbLtZboD9xsn6p77ppcHo= +github.com/gobuffalo/mw-forcessl v0.0.0-20180802152810-73921ae7a130/go.mod h1:JvNHRj7bYNAMUr/5XMkZaDcw3jZhUZpsmzhd//FFWmQ= +github.com/gobuffalo/mw-i18n v0.0.0-20180802152014-e3060b7e13d6/go.mod h1:91AQfukc52A6hdfIfkxzyr+kpVYDodgAeT5cjX1UIj4= +github.com/gobuffalo/mw-paramlogger v0.0.0-20181005191442-d6ee392ec72e/go.mod h1:6OJr6VwSzgJMqWMj7TYmRUqzNe2LXu/W1rRW4MAz/ME= +github.com/gobuffalo/mw-tokenauth v0.0.0-20181001105134-8545f626c189/go.mod h1:UqBF00IfKvd39ni5+yI5MLMjAf4gX7cDKN/26zDOD6c= +github.com/gobuffalo/packd v0.0.0-20181027182251-01ad393492c8/go.mod h1:SmdBdhj6uhOsg1Ui4SFAyrhuc7U4VCildosO5IDJ3lc= +github.com/gobuffalo/packd v0.0.0-20181027190505-aafc0d02c411/go.mod h1:SmdBdhj6uhOsg1Ui4SFAyrhuc7U4VCildosO5IDJ3lc= +github.com/gobuffalo/packd v0.0.0-20181027194105-7ae579e6d213/go.mod h1:SmdBdhj6uhOsg1Ui4SFAyrhuc7U4VCildosO5IDJ3lc= +github.com/gobuffalo/packd v0.0.0-20181031195726-c82734870264/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= +github.com/gobuffalo/packd v0.0.0-20181104210303-d376b15f8e96/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= +github.com/gobuffalo/packd v0.0.0-20181111195323-b2e760a5f0ff/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= +github.com/gobuffalo/packd v0.0.0-20181114190715-f25c5d2471d7/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= +github.com/gobuffalo/packd v0.0.0-20181124090624-311c6248e5fb/go.mod h1:Foenia9ZvITEvG05ab6XpiD5EfBHPL8A6hush8SJ0o8= +github.com/gobuffalo/packd v0.0.0-20181207120301-c49825f8f6f4/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= +github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687 h1:uZ+G4JprR0UEq0aHZs+6eP7TEZuFfrIkmQWejIBV/QQ= +github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= +github.com/gobuffalo/packr v1.13.7/go.mod h1:KkinLIn/n6+3tVXMwg6KkNvWwVsrRAz4ph+jgpk3Z24= +github.com/gobuffalo/packr v1.15.0/go.mod h1:t5gXzEhIviQwVlNx/+3SfS07GS+cZ2hn76WLzPp6MGI= +github.com/gobuffalo/packr v1.15.1/go.mod h1:IeqicJ7jm8182yrVmNbM6PR4g79SjN9tZLH8KduZZwE= +github.com/gobuffalo/packr v1.19.0/go.mod h1:MstrNkfCQhd5o+Ct4IJ0skWlxN8emOq8DsoT1G98VIU= +github.com/gobuffalo/packr v1.20.0/go.mod h1:JDytk1t2gP+my1ig7iI4NcVaXr886+N0ecUga6884zw= +github.com/gobuffalo/packr v1.21.0/go.mod h1:H00jGfj1qFKxscFJSw8wcL4hpQtPe1PfU2wa6sg/SR0= +github.com/gobuffalo/packr/v2 v2.0.0-rc.8/go.mod h1:y60QCdzwuMwO2R49fdQhsjCPv7tLQFR0ayzxxla9zes= +github.com/gobuffalo/packr/v2 v2.0.0-rc.9/go.mod h1:fQqADRfZpEsgkc7c/K7aMew3n4aF1Kji7+lIZeR98Fc= +github.com/gobuffalo/packr/v2 v2.0.0-rc.10/go.mod h1:4CWWn4I5T3v4c1OsJ55HbHlUEKNWMITG5iIkdr4Px4w= +github.com/gobuffalo/packr/v2 v2.0.0-rc.11/go.mod h1:JoieH/3h3U4UmatmV93QmqyPUdf4wVM9HELaHEu+3fk= +github.com/gobuffalo/packr/v2 v2.0.0-rc.12/go.mod h1:FV1zZTsVFi1DSCboO36Xgs4pzCZBjB/tDV9Cz/lSaR8= +github.com/gobuffalo/packr/v2 v2.0.0-rc.13/go.mod h1:2Mp7GhBFMdJlOK8vGfl7SYtfMP3+5roE39ejlfjw0rA= +github.com/gobuffalo/packr/v2 v2.0.0-rc.14/go.mod h1:06otbrNvDKO1eNQ3b8hst+1010UooI2MFg+B2Ze4MV8= +github.com/gobuffalo/packr/v2 v2.0.0-rc.15/go.mod h1:IMe7H2nJvcKXSF90y4X1rjYIRlNMJYCxEhssBXNZwWs= +github.com/gobuffalo/packr/v2 v2.0.0/go.mod h1:7McfLpSxaPUoSQm7gYpTZRQSK63mX8EKzzYSEFKvfkM= +github.com/gobuffalo/packr/v2 v2.0.1 h1:2jz0jiCa634BwBZkF7NJNWHD7nGsztQDV7gmM2jJhLs= +github.com/gobuffalo/packr/v2 v2.0.1/go.mod h1:tp5/5A2e67F1lUGTiNadtA2ToP045+mvkWzaqMCsZr4= +github.com/gobuffalo/plush v3.7.16+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.20+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.21+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.22+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.23+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.30+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.31+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.32+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.33+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plushgen v0.0.0-20181128164830-d29dcb966cb2/go.mod h1:r9QwptTFnuvSaSRjpSp4S2/4e2D3tJhARYbvEBcKSb4= +github.com/gobuffalo/plushgen v0.0.0-20181203163832-9fc4964505c2/go.mod h1:opEdT33AA2HdrIwK1aibqnTJDVVKXC02Bar/GT1YRVs= +github.com/gobuffalo/plushgen v0.0.0-20181207152837-eedb135bd51b/go.mod h1:Lcw7HQbEVm09sAQrCLzIxuhFbB3nAgp4c55E+UlynR0= +github.com/gobuffalo/plushgen v0.0.0-20190104222512-177cd2b872b3/go.mod h1:tYxCozi8X62bpZyKXYHw1ncx2ZtT2nFvG42kuLwYjoc= +github.com/gobuffalo/pop v4.8.2+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= +github.com/gobuffalo/pop v4.8.3+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= +github.com/gobuffalo/pop v4.8.4+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= +github.com/gobuffalo/release v1.0.35/go.mod h1:VtHFAKs61vO3wboCec5xr9JPTjYyWYcvaM3lclkc4x4= +github.com/gobuffalo/release v1.0.38/go.mod h1:VtHFAKs61vO3wboCec5xr9JPTjYyWYcvaM3lclkc4x4= +github.com/gobuffalo/release v1.0.42/go.mod h1:RPs7EtafH4oylgetOJpGP0yCZZUiO4vqHfTHJjSdpug= +github.com/gobuffalo/release v1.0.52/go.mod h1:RPs7EtafH4oylgetOJpGP0yCZZUiO4vqHfTHJjSdpug= +github.com/gobuffalo/release v1.0.53/go.mod h1:FdF257nd8rqhNaqtDWFGhxdJ/Ig4J7VcS3KL7n/a+aA= +github.com/gobuffalo/release v1.0.54/go.mod h1:Pe5/RxRa/BE8whDpGfRqSI7D1a0evGK1T4JDm339tJc= +github.com/gobuffalo/release v1.0.61/go.mod h1:mfIO38ujUNVDlBziIYqXquYfBF+8FDHUjKZgYC1Hj24= +github.com/gobuffalo/release v1.0.72/go.mod h1:NP5NXgg/IX3M5XmHmWR99D687/3Dt9qZtTK/Lbwc1hU= +github.com/gobuffalo/release v1.1.1/go.mod h1:Sluak1Xd6kcp6snkluR1jeXAogdJZpFFRzTYRs/2uwg= +github.com/gobuffalo/release v1.1.3/go.mod h1:CuXc5/m+4zuq8idoDt1l4va0AXAn/OSs08uHOfMVr8E= +github.com/gobuffalo/release v1.1.6/go.mod h1:18naWa3kBsqO0cItXZNJuefCKOENpbbUIqRL1g+p6z0= +github.com/gobuffalo/shoulders v1.0.1/go.mod h1:V33CcVmaQ4gRUmHKwq1fiTXuf8Gp/qjQBUL5tHPmvbA= +github.com/gobuffalo/syncx v0.0.0-20181120191700-98333ab04150/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/gobuffalo/syncx v0.0.0-20181120194010-558ac7de985f h1:S5EeH1reN93KR0L6TQvkRpu9YggCYXrUqFh1iEgvdC0= +github.com/gobuffalo/syncx v0.0.0-20181120194010-558ac7de985f/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/gobuffalo/tags v2.0.11+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= +github.com/gobuffalo/tags v2.0.14+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= +github.com/gobuffalo/tags v2.0.15+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= +github.com/gobuffalo/uuid v2.0.3+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= +github.com/gobuffalo/uuid v2.0.4+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= +github.com/gobuffalo/uuid v2.0.5+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= +github.com/gobuffalo/validate v2.0.3+incompatible/go.mod h1:N+EtDe0J8252BgfzQUChBgfd6L93m9weay53EWFVsMM= +github.com/gobuffalo/x v0.0.0-20181003152136-452098b06085/go.mod h1:WevpGD+5YOreDJznWevcn8NTmQEW5STSBgIkpkjzqXc= +github.com/gobuffalo/x v0.0.0-20181007152206-913e47c59ca7/go.mod h1:9rDPXaB3kXdKWzMc4odGQQdG2e2DIEmANy5aSJ9yesY= +github.com/gofrs/uuid v3.1.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/pat v0.0.0-20180118222023-199c85a7f6d1/go.mod h1:YeAe0gNeiNT5hoiZRI4yiOky6jVdNvfO2N6Kav/HmxY= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.1.2/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= +github.com/gorilla/sessions v1.1.3/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= +github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/jmoiron/sqlx v0.0.0-20180614180643-0dae4fefe7c0/go.mod h1:IiEW3SEiiErVyFdH8NTuWjSifiEQKUoyK3LNqr2kCHU= +github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= +github.com/karrick/godirwalk v1.7.7/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= +github.com/karrick/godirwalk v1.7.8 h1:VfG72pyIxgtC7+3X9CMHI0AOl4LwyRAg98WAgsvffi8= +github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/markbates/deplist v1.0.4/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= +github.com/markbates/deplist v1.0.5/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= +github.com/markbates/going v1.0.2/go.mod h1:UWCk3zm0UKefHZ7l8BNqi26UyiEMniznk8naLdTcy6c= +github.com/markbates/going v1.0.3/go.mod h1:fQiT6v6yQar9UD6bd/D4Z5Afbk9J6BBVBtLiyY4gp2o= +github.com/markbates/grift v1.0.4/go.mod h1:wbmtW74veyx+cgfwFhlnnMWqhoz55rnHR47oMXzsyVs= +github.com/markbates/hmax v1.0.0/go.mod h1:cOkR9dktiESxIMu+65oc/r/bdY4bE8zZw3OLhLx0X2c= +github.com/markbates/inflect v1.0.0/go.mod h1:oTeZL2KHA7CUX6X+fovmK9OvIOFuqu0TwdQrZjLTh88= +github.com/markbates/inflect v1.0.1/go.mod h1:uv3UVNBe5qBIfCm8O8Q+DW+S1EopeyINj+Ikhc7rnCk= +github.com/markbates/inflect v1.0.3/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzferVeWqbgNs= +github.com/markbates/inflect v1.0.4/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzferVeWqbgNs= +github.com/markbates/oncer v0.0.0-20180924031910-e862a676800b/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/oncer v0.0.0-20180924034138-723ad0170a46/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/oncer v0.0.0-20181014194634-05fccaae8fc4/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2 h1:JgVTCPf0uBVcUSWpyXmGpgOc62nK5HWUBKAGc3Qqa5k= +github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/refresh v1.4.10/go.mod h1:NDPHvotuZmTmesXxr95C9bjlw1/0frJwtME2dzcVKhc= +github.com/markbates/safe v1.0.0/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI= +github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/markbates/sigtx v1.0.0/go.mod h1:QF1Hv6Ic6Ca6W+T+DL0Y/ypborFKyvUY9HmuCD4VeTc= +github.com/markbates/willie v1.0.9/go.mod h1:fsrFVWl91+gXpx/6dv715j7i11fYPfZ9ZGfH0DQzY7w= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.0.0/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/monoculum/formam v0.0.0-20180901015400-4e68be1d79ba/go.mod h1:RKgILGEJq24YyJ2ban8EO0RUVSJlF1pGsEvoLEACr/Q= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= +github.com/nicksnyder/go-i18n v1.10.0/go.mod h1:HrK7VCrbOvQoUAQ7Vpy7i87N7JZZZ7R2xBGjv0j365Q= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/rogpeppe/go-internal v1.0.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.1.0 h1:g0fH8RicVgNl+zVZDCDfbdWxAWoAEJyI7I3TZYXFiig= +github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20170515013102-78fb10f4a5f8/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= +github.com/shurcooL/octicon v0.0.0-20180602230221-c42b0e3b24d9/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= +github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.1.0/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= +github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.3.0 h1:hI/7Q+DtNZ2kINb6qt/lS+IyXnHQe9e90POfeewL/ME= +github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.0/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.2.1/go.mod h1:P4AexN0a+C9tGAnUFNwDMYYZv3pjFuvmeiMyKRaNVlI= +github.com/spf13/viper v1.3.1/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/unrolled/secure v0.0.0-20180918153822-f340ee86eb8b/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= +github.com/unrolled/secure v0.0.0-20181005190816-ff9db2ff917f/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181001203147-e3636079e1a4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181024171144-74cb1d3d52f4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181025113841-85e1b3f9139a/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181106171534-e4dc69e5b2fd/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181127143415-eb0de9b17e85/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190102171810-8d7daa0c54b3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67 h1:ng3VDlRp5/DHpSWl02R4rM9I+8M2rhmsuLwAMmkLQWE= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180816102801-aaf60122140d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180921000356-2f5d2388922f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180926154720-4dfa2610cdf3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181017193950-04a2e542c03f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181207154023-610586996380/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180906133057-8cf3aee42992/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180921163948-d47a0f339242/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180927150500-dad3d9fb7b6e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181005133103-4497e2df6f9e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181011152604-fa43e7bc11ba/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181022134430-8a28ead16f52/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181024145615-5cd93ef61a7c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181025063200-d989b31c8746/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026064943-731415f00dce/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181106135930-3a76605856fd/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181206074257-70b957f3b65e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190102155601-82a175fd1598/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190116161447-11f53e031339 h1:g/Jesu8+QLnA0CPzF3E1pURg0Byr7i6jLoX5sqjcAh0= +golang.org/x/sys v0.0.0-20190116161447-11f53e031339/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181003024731-2f84ea8ef872/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181006002542-f60d9635b16a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181008205924-a2b3f7f249e9/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181013182035-5e66757b835f/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181017214349-06f26fdaaa28/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181024171208-a2dc47679d30/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181026183834-f60e5f99f081/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181105230042-78dc5bac0cac/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181107215632-34b416bd17b3/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181114190951-94339b83286c/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181119130350-139d099f6620/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181127195227-b4e97c0ed882/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181127232545-e782529d0ddd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181203210056-e5f3ab76ea4b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181205224935-3576414c54a4/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181206194817-bcd4e47d0288/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181207183836-8bc39b988060/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181212172921-837e80568c09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190102213336-ca9055ed7d04/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190104182027-498d95493402/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190111214448-fc1d57b08d7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190118193359-16909d206f00/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190124004107-78ee07aa9465/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190131142011-8dbcc66f33bb/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206221403-44bcb96178d3/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190219185102-9394956cfdc5/go.mod h1:E6PF97AdD6v0s+fPshSmumCW1S1Ne85RbPQxELkKa44= +golang.org/x/tools v0.0.0-20190221204921-83362c3779f5 h1:ev5exjGDsOo0NPTB0qdCcE53BfWl1IICJlhgXgfT9fM= +golang.org/x/tools v0.0.0-20190221204921-83362c3779f5/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922/go.mod h1:L3J43x8/uS+qIUoksaLKe6OS3nUKxOKuIFz1sl2/jx4= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= +gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/mail.v2 v2.0.0-20180731213649-a0242b2233b4/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/goimports/LICENSE b/vendor/github.com/gobuffalo/gogen/goimports/LICENSE similarity index 100% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/goimports/LICENSE rename to vendor/github.com/gobuffalo/gogen/goimports/LICENSE diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/goimports/README.md b/vendor/github.com/gobuffalo/gogen/goimports/README.md similarity index 100% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/goimports/README.md rename to vendor/github.com/gobuffalo/gogen/goimports/README.md diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/goimports/goimports.go b/vendor/github.com/gobuffalo/gogen/goimports/goimports.go similarity index 100% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/goimports/goimports.go rename to vendor/github.com/gobuffalo/gogen/goimports/goimports.go diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/gomods/gomods.go b/vendor/github.com/gobuffalo/gogen/gomods/gomods.go similarity index 100% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/gomods/gomods.go rename to vendor/github.com/gobuffalo/gogen/gomods/gomods.go diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/gomods/init.go b/vendor/github.com/gobuffalo/gogen/gomods/init.go similarity index 97% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/gomods/init.go rename to vendor/github.com/gobuffalo/gogen/gomods/init.go index 70b7a4111..3d239c755 100644 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/gomods/init.go +++ b/vendor/github.com/gobuffalo/gogen/gomods/init.go @@ -48,6 +48,7 @@ func Init(name string, path string) (*genny.Generator, error) { name = strings.TrimPrefix(name, "/") g := genny.New() + g.StepName = "go:mod:init:" + name g.RunFn(func(r *genny.Runner) error { if !On() { return nil diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/gomods/tidy.go b/vendor/github.com/gobuffalo/gogen/gomods/tidy.go similarity index 92% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/gomods/tidy.go rename to vendor/github.com/gobuffalo/gogen/gomods/tidy.go index 3c6b240fe..b6c901fab 100644 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/gomods/tidy.go +++ b/vendor/github.com/gobuffalo/gogen/gomods/tidy.go @@ -8,6 +8,7 @@ import ( func Tidy(path string, verbose bool) (*genny.Generator, error) { g := genny.New() + g.StepName = "go:mod:tidy:" + path g.RunFn(func(r *genny.Runner) error { if !On() { return nil diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/package.go b/vendor/github.com/gobuffalo/gogen/package.go similarity index 95% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/package.go rename to vendor/github.com/gobuffalo/gogen/package.go index 26dd7e0a5..56c05646b 100644 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/package.go +++ b/vendor/github.com/gobuffalo/gogen/package.go @@ -1,4 +1,4 @@ -package gotools +package gogen import ( "path/filepath" diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/parsed_file.go b/vendor/github.com/gobuffalo/gogen/parsed_file.go similarity index 97% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/parsed_file.go rename to vendor/github.com/gobuffalo/gogen/parsed_file.go index 773237f17..3fc330c16 100644 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/parsed_file.go +++ b/vendor/github.com/gobuffalo/gogen/parsed_file.go @@ -1,4 +1,4 @@ -package gotools +package gogen import ( "go/ast" diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/replace_block_body.go b/vendor/github.com/gobuffalo/gogen/replace_block_body.go similarity index 97% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/replace_block_body.go rename to vendor/github.com/gobuffalo/gogen/replace_block_body.go index 22c21f648..e56194e15 100644 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/replace_block_body.go +++ b/vendor/github.com/gobuffalo/gogen/replace_block_body.go @@ -1,4 +1,4 @@ -package gotools +package gogen import ( "strings" diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/change_import.go b/vendor/github.com/gobuffalo/gogen/rewrite_import.go similarity index 97% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/change_import.go rename to vendor/github.com/gobuffalo/gogen/rewrite_import.go index 1927a9b91..86e705b25 100644 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/change_import.go +++ b/vendor/github.com/gobuffalo/gogen/rewrite_import.go @@ -1,4 +1,4 @@ -package gotools +package gogen import ( "bytes" diff --git a/vendor/github.com/gobuffalo/genny/movinglater/gotools/templates.go b/vendor/github.com/gobuffalo/gogen/templates.go similarity index 98% rename from vendor/github.com/gobuffalo/genny/movinglater/gotools/templates.go rename to vendor/github.com/gobuffalo/gogen/templates.go index 017f283bd..aa4e4b039 100644 --- a/vendor/github.com/gobuffalo/genny/movinglater/gotools/templates.go +++ b/vendor/github.com/gobuffalo/gogen/templates.go @@ -1,4 +1,4 @@ -package gotools +package gogen import ( "bytes" diff --git a/vendor/github.com/gobuffalo/gogen/version.go b/vendor/github.com/gobuffalo/gogen/version.go new file mode 100644 index 000000000..8a51a5c47 --- /dev/null +++ b/vendor/github.com/gobuffalo/gogen/version.go @@ -0,0 +1,4 @@ +package gogen + +// Version of gogen +const Version = "v0.0.1" diff --git a/vendor/github.com/gobuffalo/logger/.travis.yml b/vendor/github.com/gobuffalo/logger/.travis.yml deleted file mode 100644 index 1fb041a25..000000000 --- a/vendor/github.com/gobuffalo/logger/.travis.yml +++ /dev/null @@ -1,36 +0,0 @@ -language: go - -sudo: false - -matrix: - include: - - os: linux - go: "1.9.x" - - os: windows - go: "1.9.x" - - os: linux - go: "1.10.x" - - os: windows - go: "1.10.x" - - os: linux - go: "1.11.x" - env: - - GO111MODULE=off - - os: windows - go: "1.11.x" - env: - - GO111MODULE=off - - os: linux - go: "1.11.x" - env: - - GO111MODULE=on - - os: windows - go: "1.11.x" - env: - - GO111MODULE=on - -install: false - -script: - - go get -v -t ./... - - go test -v -timeout=5s -race ./... diff --git a/vendor/github.com/gobuffalo/logger/azure-pipelines.yml b/vendor/github.com/gobuffalo/logger/azure-pipelines.yml new file mode 100644 index 000000000..144c4a209 --- /dev/null +++ b/vendor/github.com/gobuffalo/logger/azure-pipelines.yml @@ -0,0 +1,59 @@ +variables: + GOBIN: "$(GOPATH)/bin" # Go binaries path + GOPATH: "$(system.defaultWorkingDirectory)/gopath" # Go workspace path + modulePath: "$(GOPATH)/src/github.com/$(build.repository.name)" # Path to the module"s code + +jobs: +- job: Windows + pool: + vmImage: "vs2017-win2016" + strategy: + matrix: + go 1.9: + go_version: "1.9" + go 1.10: + go_version: "1.10" + go 1.11 (on): + go_version: "1.11" + GO111MODULE: "on" + go 1.11 (off): + go_version: "1.11" + GO111MODULE: "off" + steps: + - template: azure-tests.yml + +- job: macOS + pool: + vmImage: "macOS-10.13" + strategy: + matrix: + go 1.9: + go_version: "1.9" + go 1.10: + go_version: "1.10" + go 1.11 (on): + go_version: "1.11" + GO111MODULE: "on" + go 1.11 (off): + go_version: "1.11" + GO111MODULE: "off" + steps: + - template: azure-tests.yml + +- job: Linux + pool: + vmImage: "ubuntu-16.04" + strategy: + matrix: + go 1.9: + go_version: "1.9" + go 1.10: + go_version: "1.10" + go 1.11 (on): + go_version: "1.11" + GO111MODULE: "on" + go 1.11 (off): + go_version: "1.11" + GO111MODULE: "off" + steps: + - template: azure-tests.yml diff --git a/vendor/github.com/gobuffalo/logger/azure-tests.yml b/vendor/github.com/gobuffalo/logger/azure-tests.yml new file mode 100644 index 000000000..eea5822fa --- /dev/null +++ b/vendor/github.com/gobuffalo/logger/azure-tests.yml @@ -0,0 +1,19 @@ +steps: + - task: GoTool@0 + inputs: + version: $(go_version) + - task: Bash@3 + inputs: + targetType: inline + script: | + mkdir -p "$(GOBIN)" + mkdir -p "$(GOPATH)/pkg" + mkdir -p "$(modulePath)" + shopt -s extglob + mv !(gopath) "$(modulePath)" + displayName: "Setup Go Workspace" + - script: | + go get -t -v ./... + go test -race ./... + workingDirectory: "$(modulePath)" + displayName: "Tests" diff --git a/vendor/github.com/gobuffalo/meta/app.go b/vendor/github.com/gobuffalo/meta/app.go index 718e0d0a4..e960a6d31 100644 --- a/vendor/github.com/gobuffalo/meta/app.go +++ b/vendor/github.com/gobuffalo/meta/app.go @@ -8,13 +8,13 @@ import ( "os" "path" "path/filepath" - "regexp" "github.com/BurntSushi/toml" "github.com/gobuffalo/envy" "github.com/gobuffalo/flect/name" "github.com/markbates/oncer" "github.com/pkg/errors" + "github.com/rogpeppe/go-internal/modfile" ) // App represents meta data for a Buffalo application on disk @@ -48,25 +48,21 @@ func (a App) IsZero() bool { } func resolvePackageName(name string, pwd string) string { - result := envy.CurrentPackage() + result, _ := envy.CurrentModule() if filepath.Base(result) != name { result = path.Join(result, name) } if envy.Mods() { - //Extract package from go.mod - p := filepath.Join(pwd, "go.mod") - if f, err := os.Open(p); err == nil { - if s, err := ioutil.ReadAll(f); err == nil { - re := regexp.MustCompile("module (.*)") - res := re.FindAllStringSubmatch(string(s), 1) - - if len(res) == 1 && len(res[0]) == 2 { - return res[0][1] - } - result = filepath.Base(pwd) - } + moddata, err := ioutil.ReadFile(filepath.Join(pwd, name, "go.mod")) + if err != nil { + return result } + packagePath := modfile.ModulePath(moddata) + if packagePath == "" { + return name + } + return packagePath } return result diff --git a/vendor/github.com/gobuffalo/meta/go.mod b/vendor/github.com/gobuffalo/meta/go.mod index 1ea2355ed..03dfa6e15 100644 --- a/vendor/github.com/gobuffalo/meta/go.mod +++ b/vendor/github.com/gobuffalo/meta/go.mod @@ -4,7 +4,10 @@ require ( github.com/BurntSushi/toml v0.3.1 github.com/gobuffalo/envy v1.6.12 github.com/gobuffalo/flect v0.0.0-20190117212819-a62e61d96794 + github.com/kr/pty v1.1.3 // indirect + github.com/markbates/deplist v1.0.5 // indirect github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2 github.com/pkg/errors v0.8.1 + github.com/rogpeppe/go-internal v1.1.0 github.com/stretchr/testify v1.3.0 ) diff --git a/vendor/github.com/gobuffalo/meta/meta.go b/vendor/github.com/gobuffalo/meta/meta.go index 7705f1334..850c0b608 100644 --- a/vendor/github.com/gobuffalo/meta/meta.go +++ b/vendor/github.com/gobuffalo/meta/meta.go @@ -16,7 +16,7 @@ import ( func Named(name string, root string) App { pwd, _ := os.Getwd() - pwd = strings.TrimPrefix(root, "/private") + root = strings.TrimPrefix(root, "/private") if root == "." { root = pwd } @@ -39,7 +39,7 @@ func Named(name string, root string) App { }() // Gather meta data - if len(name) == 0 { + if len(name) == 0 || name == "." { name = filepath.Base(root) } pp := resolvePackageName(name, pwd) @@ -76,7 +76,7 @@ func Named(name string, root string) App { // New App based on the details found at the provided root path func New(root string) App { - return Named("", root) + return Named(filepath.Base(root), root) } func oldSchool(app App) App { diff --git a/vendor/github.com/gobuffalo/packd/.travis.yml b/vendor/github.com/gobuffalo/packd/.travis.yml deleted file mode 100644 index a85edd37a..000000000 --- a/vendor/github.com/gobuffalo/packd/.travis.yml +++ /dev/null @@ -1,36 +0,0 @@ -language: go - -sudo: false - -matrix: - include: - - os: linux - go: "1.9.x" - - os: windows - go: "1.9.x" - - os: linux - go: "1.10.x" - - os: windows - go: "1.10.x" - - os: linux - go: "1.11.x" - env: - - GO111MODULE=off - - os: windows - go: "1.11.x" - env: - - GO111MODULE=off - - os: linux - go: "1.11.x" - env: - - GO111MODULE=on - - os: windows - go: "1.11.x" - env: - - GO111MODULE=on - -install: false - -script: - - go get -v -t ./... - - go test -v -timeout=5s -race ./... diff --git a/vendor/github.com/gobuffalo/packd/azure-pipelines.yml b/vendor/github.com/gobuffalo/packd/azure-pipelines.yml new file mode 100644 index 000000000..144c4a209 --- /dev/null +++ b/vendor/github.com/gobuffalo/packd/azure-pipelines.yml @@ -0,0 +1,59 @@ +variables: + GOBIN: "$(GOPATH)/bin" # Go binaries path + GOPATH: "$(system.defaultWorkingDirectory)/gopath" # Go workspace path + modulePath: "$(GOPATH)/src/github.com/$(build.repository.name)" # Path to the module"s code + +jobs: +- job: Windows + pool: + vmImage: "vs2017-win2016" + strategy: + matrix: + go 1.9: + go_version: "1.9" + go 1.10: + go_version: "1.10" + go 1.11 (on): + go_version: "1.11" + GO111MODULE: "on" + go 1.11 (off): + go_version: "1.11" + GO111MODULE: "off" + steps: + - template: azure-tests.yml + +- job: macOS + pool: + vmImage: "macOS-10.13" + strategy: + matrix: + go 1.9: + go_version: "1.9" + go 1.10: + go_version: "1.10" + go 1.11 (on): + go_version: "1.11" + GO111MODULE: "on" + go 1.11 (off): + go_version: "1.11" + GO111MODULE: "off" + steps: + - template: azure-tests.yml + +- job: Linux + pool: + vmImage: "ubuntu-16.04" + strategy: + matrix: + go 1.9: + go_version: "1.9" + go 1.10: + go_version: "1.10" + go 1.11 (on): + go_version: "1.11" + GO111MODULE: "on" + go 1.11 (off): + go_version: "1.11" + GO111MODULE: "off" + steps: + - template: azure-tests.yml diff --git a/vendor/github.com/gobuffalo/packd/azure-tests.yml b/vendor/github.com/gobuffalo/packd/azure-tests.yml new file mode 100644 index 000000000..eea5822fa --- /dev/null +++ b/vendor/github.com/gobuffalo/packd/azure-tests.yml @@ -0,0 +1,19 @@ +steps: + - task: GoTool@0 + inputs: + version: $(go_version) + - task: Bash@3 + inputs: + targetType: inline + script: | + mkdir -p "$(GOBIN)" + mkdir -p "$(GOPATH)/pkg" + mkdir -p "$(modulePath)" + shopt -s extglob + mv !(gopath) "$(modulePath)" + displayName: "Setup Go Workspace" + - script: | + go get -t -v ./... + go test -race ./... + workingDirectory: "$(modulePath)" + displayName: "Tests" diff --git a/vendor/github.com/gobuffalo/packr/v2/.goreleaser.yml b/vendor/github.com/gobuffalo/packr/v2/.goreleaser.yml index f7a8cd52a..a0c56e8e8 100644 --- a/vendor/github.com/gobuffalo/packr/v2/.goreleaser.yml +++ b/vendor/github.com/gobuffalo/packr/v2/.goreleaser.yml @@ -34,3 +34,8 @@ changelog: - '^docs:' - '^test:' +brew: + github: + owner: gobuffalo + name: homebrew-tap + diff --git a/vendor/github.com/gobuffalo/packr/v2/SHOULDERS.md b/vendor/github.com/gobuffalo/packr/v2/SHOULDERS.md index 84f3e2775..b1c980f6a 100644 --- a/vendor/github.com/gobuffalo/packr/v2/SHOULDERS.md +++ b/vendor/github.com/gobuffalo/packr/v2/SHOULDERS.md @@ -1,56 +1,20 @@ # github.com/gobuffalo/packr/v2 Stands on the Shoulders of Giants -github.com/gobuffalo/packr/v2 does not try to reinvent the wheel! Instead, it uses the already great wheels developed by the Go community and puts them all together in the best way possible. Without these giants this project would not be possible. Please make sure to check them out and thank them for all of their hard work. +github.com/gobuffalo/packr/v2 does not try to reinvent the wheel! Instead, it uses the already great wheels developed by the Go community and puts them all together in the best way possible. Without these giants, this project would not be possible. Please make sure to check them out and thank them for all of their hard work. Thank you to the following **GIANTS**: -* [github.com/BurntSushi/toml](https://godoc.org/github.com/BurntSushi/toml) - -* [github.com/gobuffalo/buffalo-plugins/plugins](https://godoc.org/github.com/gobuffalo/buffalo-plugins/plugins) - -* [github.com/gobuffalo/buffalo-plugins/plugins/plugdeps](https://godoc.org/github.com/gobuffalo/buffalo-plugins/plugins/plugdeps) - * [github.com/gobuffalo/envy](https://godoc.org/github.com/gobuffalo/envy) -* [github.com/gobuffalo/events](https://godoc.org/github.com/gobuffalo/events) - -* [github.com/gobuffalo/flect](https://godoc.org/github.com/gobuffalo/flect) - -* [github.com/gobuffalo/flect/name](https://godoc.org/github.com/gobuffalo/flect/name) - * [github.com/gobuffalo/genny](https://godoc.org/github.com/gobuffalo/genny) -* [github.com/gobuffalo/genny/movinglater/gotools](https://godoc.org/github.com/gobuffalo/genny/movinglater/gotools) - -* [github.com/gobuffalo/genny/movinglater/gotools/goimports](https://godoc.org/github.com/gobuffalo/genny/movinglater/gotools/goimports) - -* [github.com/gobuffalo/genny/movinglater/gotools/gomods](https://godoc.org/github.com/gobuffalo/genny/movinglater/gotools/gomods) +* [github.com/gobuffalo/gogen](https://godoc.org/github.com/gobuffalo/gogen) * [github.com/gobuffalo/logger](https://godoc.org/github.com/gobuffalo/logger) -* [github.com/gobuffalo/mapi](https://godoc.org/github.com/gobuffalo/mapi) - -* [github.com/gobuffalo/meta](https://godoc.org/github.com/gobuffalo/meta) - * [github.com/gobuffalo/packd](https://godoc.org/github.com/gobuffalo/packd) -* [github.com/gobuffalo/packr/v2](https://godoc.org/github.com/gobuffalo/packr/v2) - -* [github.com/gobuffalo/packr/v2/file](https://godoc.org/github.com/gobuffalo/packr/v2/file) - -* [github.com/gobuffalo/packr/v2/file/resolver](https://godoc.org/github.com/gobuffalo/packr/v2/file/resolver) - -* [github.com/gobuffalo/packr/v2/file/resolver/encoding/hex](https://godoc.org/github.com/gobuffalo/packr/v2/file/resolver/encoding/hex) - -* [github.com/gobuffalo/packr/v2/jam/parser](https://godoc.org/github.com/gobuffalo/packr/v2/jam/parser) - -* [github.com/gobuffalo/packr/v2/plog](https://godoc.org/github.com/gobuffalo/packr/v2/plog) - -* [github.com/gobuffalo/syncx](https://godoc.org/github.com/gobuffalo/syncx) - -* [github.com/joho/godotenv](https://godoc.org/github.com/joho/godotenv) - * [github.com/karrick/godirwalk](https://godoc.org/github.com/karrick/godirwalk) * [github.com/markbates/oncer](https://godoc.org/github.com/markbates/oncer) @@ -59,38 +23,14 @@ Thank you to the following **GIANTS**: * [github.com/pkg/errors](https://godoc.org/github.com/pkg/errors) -* [github.com/rogpeppe/go-internal/modfile](https://godoc.org/github.com/rogpeppe/go-internal/modfile) - -* [github.com/rogpeppe/go-internal/module](https://godoc.org/github.com/rogpeppe/go-internal/module) - -* [github.com/rogpeppe/go-internal/semver](https://godoc.org/github.com/rogpeppe/go-internal/semver) +* [github.com/rogpeppe/go-internal](https://godoc.org/github.com/rogpeppe/go-internal) * [github.com/sirupsen/logrus](https://godoc.org/github.com/sirupsen/logrus) * [github.com/spf13/cobra](https://godoc.org/github.com/spf13/cobra) -* [github.com/spf13/pflag](https://godoc.org/github.com/spf13/pflag) +* [github.com/stretchr/testify](https://godoc.org/github.com/stretchr/testify) -* [golang.org/x/crypto/ssh/terminal](https://godoc.org/golang.org/x/crypto/ssh/terminal) +* [golang.org/x/sync](https://godoc.org/golang.org/x/sync) -* [golang.org/x/sys/unix](https://godoc.org/golang.org/x/sys/unix) - -* [golang.org/x/tools/go/ast/astutil](https://godoc.org/golang.org/x/tools/go/ast/astutil) - -* [golang.org/x/tools/go/gcexportdata](https://godoc.org/golang.org/x/tools/go/gcexportdata) - -* [golang.org/x/tools/go/internal/cgo](https://godoc.org/golang.org/x/tools/go/internal/cgo) - -* [golang.org/x/tools/go/internal/gcimporter](https://godoc.org/golang.org/x/tools/go/internal/gcimporter) - -* [golang.org/x/tools/go/internal/packagesdriver](https://godoc.org/golang.org/x/tools/go/internal/packagesdriver) - -* [golang.org/x/tools/go/packages](https://godoc.org/golang.org/x/tools/go/packages) - -* [golang.org/x/tools/imports](https://godoc.org/golang.org/x/tools/imports) - -* [golang.org/x/tools/internal/fastwalk](https://godoc.org/golang.org/x/tools/internal/fastwalk) - -* [golang.org/x/tools/internal/gopathwalk](https://godoc.org/golang.org/x/tools/internal/gopathwalk) - -* [golang.org/x/tools/internal/semver](https://godoc.org/golang.org/x/tools/internal/semver) +* [golang.org/x/tools](https://godoc.org/golang.org/x/tools) diff --git a/vendor/github.com/gobuffalo/packr/v2/box.go b/vendor/github.com/gobuffalo/packr/v2/box.go index 93a1db7e8..3e4c74d22 100644 --- a/vendor/github.com/gobuffalo/packr/v2/box.go +++ b/vendor/github.com/gobuffalo/packr/v2/box.go @@ -8,12 +8,9 @@ import ( "net/http" "os" "path/filepath" - "runtime" "sort" "strings" - "sync" - "github.com/gobuffalo/envy" "github.com/gobuffalo/packd" "github.com/gobuffalo/packr/v2/file" "github.com/gobuffalo/packr/v2/file/resolver" @@ -23,81 +20,33 @@ import ( ) var _ packd.Box = &Box{} -var _ packd.HTTPBox = Box{} +var _ packd.HTTPBox = &Box{} var _ packd.Addable = &Box{} var _ packd.Walkable = &Box{} -var _ packd.Finder = Box{} +var _ packd.Finder = &Box{} + +// Box represent a folder on a disk you want to +// have access to in the built Go binary. +type Box struct { + Path string `json:"path"` + Name string `json:"name"` + ResolutionDir string `json:"resolution_dir"` + DefaultResolver resolver.Resolver `json:"default_resolver"` + resolvers resolversMap + dirs dirsMap +} // NewBox returns a Box that can be used to // retrieve files from either disk or the embedded // binary. +// Deprecated: Use New instead. func NewBox(path string) *Box { oncer.Deprecate(0, "packr.NewBox", "Use packr.New instead.") return New(path, path) } -func resolutionDir(og string) string { - ng, _ := filepath.Abs(og) - - if resolutionDirExists(ng, og) { - return ng - } - - // packr.New - _, filename, _, _ := runtime.Caller(3) - ng, ok := resolutionDirTestFilename(filename, og) - if ok { - return ng - } - - // packr.NewBox (deprecated) - _, filename, _, _ = runtime.Caller(4) - ng, ok = resolutionDirTestFilename(filename, og) - if ok { - return ng - } - - return og -} - -func resolutionDirExists(s, og string) bool { - _, err := os.Stat(s) - if err != nil { - return false - } - plog.Debug("packr", "resolutionDir", "original", og, "resolved", s) - return true -} - -func resolutionDirTestFilename(filename, og string) (string, bool) { - ng := filepath.Join(filepath.Dir(filename), og) - - // // this little hack courtesy of the `-cover` flag!! - cov := filepath.Join("_test", "_obj_test") - ng = strings.Replace(ng, string(filepath.Separator)+cov, "", 1) - - if resolutionDirExists(ng, og) { - return ng, true - } - - ng = filepath.Join(envy.GoPath(), "src", ng) - if resolutionDirExists(ng, og) { - return ng, true - } - - return og, false -} - -func construct(name string, path string) *Box { - return &Box{ - Path: path, - Name: name, - ResolutionDir: resolutionDir(path), - resolvers: map[string]resolver.Resolver{}, - moot: &sync.RWMutex{}, - } -} - +// New returns a new Box with the name of the box +// and the path of the box. func New(name string, path string) *Box { plog.Debug("packr", "New", "name", name, "path", path) b, _ := findBox(name) @@ -115,22 +64,13 @@ func New(name string, path string) *Box { return b } -// Box represent a folder on a disk you want to -// have access to in the built Go binary. -type Box struct { - Path string `json:"path"` - Name string `json:"name"` - ResolutionDir string `json:"resolution_dir"` - DefaultResolver resolver.Resolver `json:"default_resolver"` - resolvers map[string]resolver.Resolver - moot *sync.RWMutex -} - +// SetResolver allows for the use of a custom resolver for +// the specified file func (b *Box) SetResolver(file string, res resolver.Resolver) { - b.moot.Lock() + d := filepath.Dir(file) + b.dirs.Store(d, true) plog.Debug(b, "SetResolver", "file", file, "resolver", fmt.Sprintf("%T", res)) - b.resolvers[resolver.Key(file)] = res - b.moot.Unlock() + b.resolvers.Store(resolver.Key(file), res) } // AddString converts t to a byteslice and delegates to AddBytes to add to b.data @@ -153,14 +93,14 @@ func (b *Box) AddBytes(path string, t []byte) error { // FindString returns either the string of the requested // file or an error if it can not be found. -func (b Box) FindString(name string) (string, error) { +func (b *Box) FindString(name string) (string, error) { bb, err := b.Find(name) return string(bb), err } // Find returns either the byte slice of the requested // file or an error if it can not be found. -func (b Box) Find(name string) ([]byte, error) { +func (b *Box) Find(name string) ([]byte, error) { f, err := b.Resolve(name) if err != nil { return []byte(""), err @@ -171,18 +111,33 @@ func (b Box) Find(name string) ([]byte, error) { } // Has returns true if the resource exists in the box -func (b Box) Has(name string) bool { +func (b *Box) Has(name string) bool { _, err := b.Find(name) - if err != nil { - return false + return err == nil +} + +// HasDir returns true if the directory exists in the box +func (b *Box) HasDir(name string) bool { + oncer.Do("packr2/box/HasDir", func() { + for _, f := range b.List() { + d := filepath.Dir(f) + b.dirs.Store(d, true) + } + }) + if name == "/" { + return b.Has("index.html") } - return true + _, ok := b.dirs.Load(name) + return ok } // Open returns a File using the http.File interface -func (b Box) Open(name string) (http.File, error) { +func (b *Box) Open(name string) (http.File, error) { plog.Debug(b, "Open", "name", name) if len(filepath.Ext(name)) == 0 { + if !b.HasDir(name) { + return nil, os.ErrNotExist + } d, err := file.NewDir(name) plog.Debug(b, "Open", "name", name, "dir", d) return d, err @@ -197,7 +152,7 @@ func (b Box) Open(name string) (http.File, error) { } // List shows "What's in the box?" -func (b Box) List() []string { +func (b *Box) List() []string { var keys []string b.Walk(func(path string, info File) error { @@ -214,21 +169,22 @@ func (b Box) List() []string { return keys } +// Resolve will attempt to find the file in the box, +// returning an error if the find can not be found. func (b *Box) Resolve(key string) (file.File, error) { key = strings.TrimPrefix(key, "/") - b.moot.RLock() var r resolver.Resolver - for k, vr := range b.resolvers { + b.resolvers.Range(func(k string, vr resolver.Resolver) bool { lk := strings.ToLower(resolver.Key(k)) lkey := strings.ToLower(resolver.Key(key)) if lk == lkey { r = vr - break + return false } - } - b.moot.RUnlock() + return true + }) if r == nil { r = b.DefaultResolver diff --git a/vendor/github.com/gobuffalo/packr/v2/deprecated.go b/vendor/github.com/gobuffalo/packr/v2/deprecated.go index 7a19df386..409341068 100644 --- a/vendor/github.com/gobuffalo/packr/v2/deprecated.go +++ b/vendor/github.com/gobuffalo/packr/v2/deprecated.go @@ -54,26 +54,26 @@ func PackJSONBytes(box string, name string, jbb string) error { } // Bytes is deprecated. Use Find instead -func (b Box) Bytes(name string) []byte { +func (b *Box) Bytes(name string) []byte { bb, _ := b.Find(name) oncer.Deprecate(0, "github.com/gobuffalo/packr/v2#Box.Bytes", "Use github.com/gobuffalo/packr/v2#Box.Find instead.") return bb } // MustBytes is deprecated. Use Find instead. -func (b Box) MustBytes(name string) ([]byte, error) { +func (b *Box) MustBytes(name string) ([]byte, error) { oncer.Deprecate(0, "github.com/gobuffalo/packr/v2#Box.MustBytes", "Use github.com/gobuffalo/packr/v2#Box.Find instead.") return b.Find(name) } // String is deprecated. Use FindString instead -func (b Box) String(name string) string { +func (b *Box) String(name string) string { oncer.Deprecate(0, "github.com/gobuffalo/packr/v2#Box.String", "Use github.com/gobuffalo/packr/v2#Box.FindString instead.") return string(b.Bytes(name)) } // MustString is deprecated. Use FindString instead -func (b Box) MustString(name string) (string, error) { +func (b *Box) MustString(name string) (string, error) { oncer.Deprecate(0, "github.com/gobuffalo/packr/v2#Box.MustString", "Use github.com/gobuffalo/packr/v2#Box.FindString instead.") return b.FindString(name) } diff --git a/vendor/github.com/gobuffalo/packr/v2/dirs_map.go b/vendor/github.com/gobuffalo/packr/v2/dirs_map.go new file mode 100644 index 000000000..9e6491399 --- /dev/null +++ b/vendor/github.com/gobuffalo/packr/v2/dirs_map.go @@ -0,0 +1,82 @@ +//go:generate mapgen -name "dirs" -zero "false" -go-type "bool" -pkg "" -a "nil" -b "nil" -c "nil" -bb "nil" -destination "packr" +// Code generated by github.com/gobuffalo/mapgen. DO NOT EDIT. + +package packr + +import ( + "sort" + "strings" + "sync" +) + +// dirsMap wraps sync.Map and uses the following types: +// key: string +// value: bool +type dirsMap struct { + data sync.Map +} + +// Delete the key from the map +func (m *dirsMap) Delete(key string) { + m.data.Delete(m.normalizeKey(key)) +} + +// Load the key from the map. +// Returns bool or bool. +// A false return indicates either the key was not found +// or the value is not of type bool +func (m *dirsMap) Load(key string) (bool, bool) { + i, ok := m.data.Load(m.normalizeKey(key)) + if !ok { + return false, false + } + s, ok := i.(bool) + return s, ok +} + +// LoadOrStore will return an existing key or +// store the value if not already in the map +func (m *dirsMap) LoadOrStore(key string, value bool) (bool, bool) { + i, _ := m.data.LoadOrStore(m.normalizeKey(key), value) + s, ok := i.(bool) + return s, ok +} + +// Range over the bool values in the map +func (m *dirsMap) Range(f func(key string, value bool) bool) { + m.data.Range(func(k, v interface{}) bool { + key, ok := k.(string) + if !ok { + return false + } + value, ok := v.(bool) + if !ok { + return false + } + return f(key, value) + }) +} + +// Store a bool in the map +func (m *dirsMap) Store(key string, value bool) { + d := m.normalizeKey(key) + m.data.Store(d, value) + m.data.Store(strings.TrimPrefix(d, "/"), value) +} + +// Keys returns a list of keys in the map +func (m *dirsMap) Keys() []string { + var keys []string + m.Range(func(key string, value bool) bool { + keys = append(keys, key) + return true + }) + sort.Strings(keys) + return keys +} + +func (m *dirsMap) normalizeKey(key string) string { + key = strings.Replace(key, "\\", "/", -1) + + return key +} diff --git a/vendor/github.com/gobuffalo/packr/v2/go.mod b/vendor/github.com/gobuffalo/packr/v2/go.mod index f64499617..aeef9591e 100644 --- a/vendor/github.com/gobuffalo/packr/v2/go.mod +++ b/vendor/github.com/gobuffalo/packr/v2/go.mod @@ -1,23 +1,19 @@ module github.com/gobuffalo/packr/v2 require ( - github.com/gobuffalo/buffalo-plugins v1.11.0 // indirect - github.com/gobuffalo/envy v1.6.12 - github.com/gobuffalo/genny v0.0.0-20190112155932-f31a84fcacf5 - github.com/gobuffalo/logger v0.0.0-20181127160119-5b956e21995c - github.com/gobuffalo/meta v0.0.0-20190120163247-50bbb1fa260d // indirect - github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687 + github.com/gobuffalo/envy v1.6.15 + github.com/gobuffalo/genny v0.0.0-20190219203444-c95082806342 + github.com/gobuffalo/gogen v0.0.0-20190224213239-1c6076128bbc + github.com/gobuffalo/logger v0.0.0-20190224201004-be78ebfea0fa + github.com/gobuffalo/packd v0.0.0-20190224160250-d04dd98aca5b github.com/karrick/godirwalk v1.7.8 - github.com/kr/pty v1.1.3 // indirect - github.com/markbates/deplist v1.0.5 // indirect github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2 github.com/markbates/safe v1.0.1 github.com/pkg/errors v0.8.1 - github.com/rogpeppe/go-internal v1.1.0 + github.com/rogpeppe/go-internal v1.2.2 github.com/sirupsen/logrus v1.3.0 github.com/spf13/cobra v0.0.3 github.com/stretchr/testify v1.3.0 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 - golang.org/x/sys v0.0.0-20190116161447-11f53e031339 // indirect - golang.org/x/tools v0.0.0-20190118193359-16909d206f00 + golang.org/x/tools v0.0.0-20190221204921-83362c3779f5 ) diff --git a/vendor/github.com/gobuffalo/packr/v2/go.sum b/vendor/github.com/gobuffalo/packr/v2/go.sum index 992771978..7c49ea0f0 100644 --- a/vendor/github.com/gobuffalo/packr/v2/go.sum +++ b/vendor/github.com/gobuffalo/packr/v2/go.sum @@ -1,23 +1,44 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.36.0/go.mod h1:RUoy9p/M4ge0HzT8L+SDZ8jg+Q6fth0CiBuhFJpSV40= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITgsTc= github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/ajg/form v0.0.0-20160822230020-523a5da1a92f/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= github.com/codegangsta/negroni v1.0.0/go.mod h1:v0y3T5G7Y1UlFfyxFn/QLRU4a2EuNau2iZY63YTKWo0= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dustin/go-humanize v0.0.0-20180713052910-9f541cc9db5d/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/gobuffalo/attrs v0.0.0-20190219185331-f338c9388485/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= github.com/gobuffalo/buffalo v0.12.8-0.20181004233540-fac9bb505aa8/go.mod h1:sLyT7/dceRXJUxSsE813JTQtA3Eb1vjxWfo/N//vXIY= github.com/gobuffalo/buffalo v0.13.0/go.mod h1:Mjn1Ba9wpIbpbrD+lIDMy99pQ0H0LiddMIIDGse7qT4= github.com/gobuffalo/buffalo-plugins v1.0.2/go.mod h1:pOp/uF7X3IShFHyobahTkTLZaeUXwb0GrUTb9ngJWTs= @@ -32,11 +53,12 @@ github.com/gobuffalo/buffalo-plugins v1.6.11/go.mod h1:eAA6xJIL8OuynJZ8amXjRmHND github.com/gobuffalo/buffalo-plugins v1.8.2/go.mod h1:9te6/VjEQ7pKp7lXlDIMqzxgGpjlKoAcAANdCgoR960= github.com/gobuffalo/buffalo-plugins v1.8.3/go.mod h1:IAWq6vjZJVXebIq2qGTLOdlXzmpyTZ5iJG5b59fza5U= github.com/gobuffalo/buffalo-plugins v1.9.4/go.mod h1:grCV6DGsQlVzQwk6XdgcL3ZPgLm9BVxlBmXPMF8oBHI= -github.com/gobuffalo/buffalo-plugins v1.10.0 h1:oF+BJ20zenp31xJnjkFcXAMUqlrMMTicsD/UwQWCW/s= github.com/gobuffalo/buffalo-plugins v1.10.0/go.mod h1:4osg8d9s60txLuGwXnqH+RCjPHj9K466cDFRl3PErHI= -github.com/gobuffalo/buffalo-plugins v1.11.0 h1:yZ6USaSdAKpogRS8DZJgeG7/CTPGmyhplwifphmmegw= github.com/gobuffalo/buffalo-plugins v1.11.0/go.mod h1:rtIvAYRjYibgmWhnjKmo7OadtnxuMG5ZQLr25ozAzjg= +github.com/gobuffalo/buffalo-plugins v1.12.0 h1:5rvYQ7mwfPwUW9zqcMd9ahWtPVOOouMKZjv88q45Z7c= +github.com/gobuffalo/buffalo-plugins v1.12.0/go.mod h1:kw4Mj2vQXqe4X5TI36PEQgswbL30heGQwJEeDKd1v+4= github.com/gobuffalo/buffalo-pop v1.0.5/go.mod h1:Fw/LfFDnSmB/vvQXPvcXEjzP98Tc+AudyNWUBWKCwQ8= +github.com/gobuffalo/depgen v0.0.0-20190219190223-ba8c93fa0c2c/go.mod h1:CE/HUV4vDCXtJayRf6WoMWgezb1yH4QHg8GNK8FL0JI= github.com/gobuffalo/envy v1.6.4/go.mod h1:Abh+Jfw475/NWtYMEt+hnJWRiC8INKWibIMyNt1w2Mc= github.com/gobuffalo/envy v1.6.5/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= github.com/gobuffalo/envy v1.6.6/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= @@ -45,8 +67,10 @@ github.com/gobuffalo/envy v1.6.8/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9k github.com/gobuffalo/envy v1.6.9/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= github.com/gobuffalo/envy v1.6.10/go.mod h1:X0CFllQjTV5ogsnUrg+Oks2yTI+PU2dGYBJOEI2D1Uo= github.com/gobuffalo/envy v1.6.11/go.mod h1:Fiq52W7nrHGDggFPhn2ZCcHw4u/rqXkqo+i7FB6EAcg= -github.com/gobuffalo/envy v1.6.12 h1:zkhss8DXz/pty2HAyA8BnvWMTYxo4gjd4+WCnYovoxY= github.com/gobuffalo/envy v1.6.12/go.mod h1:qJNrJhKkZpEW0glh5xP2syQHH5kgdmgsKss2Kk8PTP0= +github.com/gobuffalo/envy v1.6.13/go.mod h1:w9DJppgl51JwUFWWd/M/6/otrPtWV3WYMa+NNLunqKA= +github.com/gobuffalo/envy v1.6.15 h1:OsV5vOpHYUpP7ZLS6sem1y40/lNX1BZj+ynMiRi21lQ= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= github.com/gobuffalo/events v1.0.3/go.mod h1:Txo8WmqScapa7zimEQIwgiJBvMECMe9gJjsKNPN3uZw= github.com/gobuffalo/events v1.0.7/go.mod h1:z8txf6H9jWhQ5Scr7YPLWg/cgXBRj8Q4uYI+rsVCCSQ= github.com/gobuffalo/events v1.0.8/go.mod h1:A5KyqT1sA+3GJiBE4QKZibse9mtOcI9nw8gGrDdqYGs= @@ -55,8 +79,9 @@ github.com/gobuffalo/events v1.1.4/go.mod h1:09/YRRgZHEOts5Isov+g9X2xajxdvOAcUuA github.com/gobuffalo/events v1.1.5/go.mod h1:3YUSzgHfYctSjEjLCWbkXP6djH2M+MLaVRzb4ymbAK0= github.com/gobuffalo/events v1.1.7/go.mod h1:6fGqxH2ing5XMb3EYRq9LEkVlyPGs4oO/eLzh+S8CxY= github.com/gobuffalo/events v1.1.8/go.mod h1:UFy+W6X6VbCWS8k2iT81HYX65dMtiuVycMy04cplt/8= -github.com/gobuffalo/events v1.1.9 h1:ukq5ys/h0TuiX7eLJyZBD1dJOy0r19JTEYmgXKG9j+Y= github.com/gobuffalo/events v1.1.9/go.mod h1:/0nf8lMtP5TkgNbzYxR6Bl4GzBy5s5TebgNTdRfRbPM= +github.com/gobuffalo/events v1.2.0 h1:YovlMNcwNTfIm/3OdB+KemDOm8yUz4XIH+4kbMhGXWw= +github.com/gobuffalo/events v1.2.0/go.mod h1:pxvpvsKXKZNPtHuIxUV3K+g+KP5o4forzaeFj++bh68= github.com/gobuffalo/fizz v1.0.12/go.mod h1:C0sltPxpYK8Ftvf64kbsQa2yiCZY4RZviurNxXdAKwc= github.com/gobuffalo/flect v0.0.0-20180907193754-dc14d8acaf9f/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= github.com/gobuffalo/flect v0.0.0-20181002182613-4571df4b1daf/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= @@ -67,10 +92,10 @@ github.com/gobuffalo/flect v0.0.0-20181024204909-8f6be1a8c6c2/go.mod h1:rCiQgmAE github.com/gobuffalo/flect v0.0.0-20181104133451-1f6e9779237a/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= github.com/gobuffalo/flect v0.0.0-20181114183036-47375f6d8328/go.mod h1:0HvNbHdfh+WOvDSIASqJOSxTOWSxCCUF++k/Y53v9rI= github.com/gobuffalo/flect v0.0.0-20181210151238-24a2b68e0316/go.mod h1:en58vff74S9b99Eg42Dr+/9yPu437QjlNsO/hBYPuOk= -github.com/gobuffalo/flect v0.0.0-20190104192022-4af577e09bf2 h1:51NF9n6h4nGMooU5ALB+uJCM0UOmcWjAegIZb/ePtoE= github.com/gobuffalo/flect v0.0.0-20190104192022-4af577e09bf2/go.mod h1:en58vff74S9b99Eg42Dr+/9yPu437QjlNsO/hBYPuOk= -github.com/gobuffalo/flect v0.0.0-20190117212819-a62e61d96794 h1:HZOs07hF3AmoaUj4HJQHV5RqfOuGnPZI7aFcireIrww= github.com/gobuffalo/flect v0.0.0-20190117212819-a62e61d96794/go.mod h1:397QT6v05LkZkn07oJXXT6y9FCfwC8Pug0WA2/2mE9k= +github.com/gobuffalo/flect v0.1.0 h1:EJvbvZlo9exJk5UK02lz5pTs3XEpIM5/4o691KfvtkM= +github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= github.com/gobuffalo/genny v0.0.0-20180924032338-7af3a40f2252/go.mod h1:tUTQOogrr7tAQnhajMSH6rv1BVev34H2sa1xNHMy94g= github.com/gobuffalo/genny v0.0.0-20181003150629-3786a0744c5d/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= github.com/gobuffalo/genny v0.0.0-20181005145118-318a41a134cc/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= @@ -93,11 +118,21 @@ github.com/gobuffalo/genny v0.0.0-20181206121324-d6fb8a0dbe36/go.mod h1:wpNSANu9 github.com/gobuffalo/genny v0.0.0-20181207164119-84844398a37d/go.mod h1:y0ysCHGGQf2T3vOhCrGHheYN54Y/REj0ayd0Suf4C/8= github.com/gobuffalo/genny v0.0.0-20181211165820-e26c8466f14d/go.mod h1:sHnK+ZSU4e2feXP3PA29ouij6PUEiN+RCwECjCTB3yM= github.com/gobuffalo/genny v0.0.0-20190104222617-a71664fc38e7/go.mod h1:QPsQ1FnhEsiU8f+O0qKWXz2RE4TiDqLVChWkBuh1WaY= -github.com/gobuffalo/genny v0.0.0-20190112155932-f31a84fcacf5 h1:boQS3dA9PxhyufJEWIILrG6pJQbDnpwP2rFyvWacdoY= github.com/gobuffalo/genny v0.0.0-20190112155932-f31a84fcacf5/go.mod h1:CIaHCrSIuJ4il6ka3Hub4DR4adDrGoXGEEt2FbBxoIo= +github.com/gobuffalo/genny v0.0.0-20190124191459-3310289fa4b4/go.mod h1:yIRqxhZV2sAzb+B3iPUMLauTRrYP8tJUlZ1zV9teKik= +github.com/gobuffalo/genny v0.0.0-20190131150032-1045e97d19fb/go.mod h1:yIRqxhZV2sAzb+B3iPUMLauTRrYP8tJUlZ1zV9teKik= +github.com/gobuffalo/genny v0.0.0-20190131190646-008a76242145/go.mod h1:NJvPZJxb9M4z790P6N2SMZKSUYpASpEvLuUWnHGKzb4= +github.com/gobuffalo/genny v0.0.0-20190219203444-c95082806342 h1:ewzWZ+TT9/3wYSnUPQRU7YFzqWAx4dgUXdgvJVTVLCA= +github.com/gobuffalo/genny v0.0.0-20190219203444-c95082806342/go.mod h1:3BLT+Vs94EEz3fKR8WWOkYpL6c1tdJcZUNCe3LZAnvQ= +github.com/gobuffalo/gitgen v0.0.0-20190219185555-91c2c5f0aad5 h1:TKLkvMd0sYNEsoVsoIGUzjFNtM7eMlQqLf/4JwlKVaE= +github.com/gobuffalo/gitgen v0.0.0-20190219185555-91c2c5f0aad5/go.mod h1:ZzGIrxBvCJEluaU4i3CN0GFlu1Qmb3yK8ziV02evJ1E= github.com/gobuffalo/github_flavored_markdown v1.0.4/go.mod h1:uRowCdK+q8d/RF0Kt3/DSalaIXbb0De/dmTqMQdkQ4I= github.com/gobuffalo/github_flavored_markdown v1.0.5/go.mod h1:U0643QShPF+OF2tJvYNiYDLDGDuQmJZXsf/bHOJPsMY= +github.com/gobuffalo/github_flavored_markdown v1.0.7 h1:Vjvz4wqOnviiLEfTh5bh270b3lhpJiwwQEWOWmHMwY8= github.com/gobuffalo/github_flavored_markdown v1.0.7/go.mod h1:w93Pd9Lz6LvyQXEG6DktTPHkOtCbr+arAD5mkwMzXLI= +github.com/gobuffalo/gogen v0.0.0-20190219194924-d32a17ad9761/go.mod h1:v47C8sid+ZM2qK+YpQ2MGJKssKAqyTsH1wl/pTCPdz8= +github.com/gobuffalo/gogen v0.0.0-20190224213239-1c6076128bbc h1:GjmMs2PLx+rH9In421AR1RkHV5AG9lLnRpIPhWauvoI= +github.com/gobuffalo/gogen v0.0.0-20190224213239-1c6076128bbc/go.mod h1:tQqPADZKflmJCR4FHRHYNPP79cXPICyxUiUHyhuXtqg= github.com/gobuffalo/httptest v1.0.2/go.mod h1:7T1IbSrg60ankme0aDLVnEY0h056g9M1/ZvpVThtB7E= github.com/gobuffalo/licenser v0.0.0-20180924033006-eae28e638a42/go.mod h1:Ubo90Np8gpsSZqNScZZkVXXAo5DGhTb+WYFIjlnog8w= github.com/gobuffalo/licenser v0.0.0-20181025145548-437d89de4f75/go.mod h1:x3lEpYxkRG/XtGCUNkio+6RZ/dlOvLzTI9M1auIwFcw= @@ -105,6 +140,7 @@ github.com/gobuffalo/licenser v0.0.0-20181027200154-58051a75da95/go.mod h1:Bzhaa github.com/gobuffalo/licenser v0.0.0-20181109171355-91a2a7aac9a7/go.mod h1:m+Ygox92pi9bdg+gVaycvqE8RVSjZp7mWw75+K5NPHk= github.com/gobuffalo/licenser v0.0.0-20181128165715-cc7305f8abed/go.mod h1:oU9F9UCE+AzI/MueCKZamsezGOOHfSirltllOVeRTAE= github.com/gobuffalo/licenser v0.0.0-20181203160806-fe900bbede07/go.mod h1:ph6VDNvOzt1CdfaWC+9XwcBnlSTBz2j49PBwum6RFaU= +github.com/gobuffalo/licenser v0.0.0-20181211173111-f8a311c51159 h1:bbR/354ALkf/k/CoHxgPPAToVU38WZVwXcxF/UgT7V4= github.com/gobuffalo/licenser v0.0.0-20181211173111-f8a311c51159/go.mod h1:ve/Ue99DRuvnTaLq2zKa6F4KtHiYf7W046tDjuGYPfM= github.com/gobuffalo/logger v0.0.0-20181022175615-46cfb361fc27/go.mod h1:8sQkgyhWipz1mIctHF4jTxmJh1Vxhp7mP8IqbljgJZo= github.com/gobuffalo/logger v0.0.0-20181027144941-73d08d2bb969/go.mod h1:7uGg2duHKpWnN4+YmyKBdLXfhopkAdVM6H3nKbyFbz8= @@ -112,16 +148,20 @@ github.com/gobuffalo/logger v0.0.0-20181027193913-9cf4dd0efe46/go.mod h1:7uGg2du github.com/gobuffalo/logger v0.0.0-20181109185836-3feeab578c17/go.mod h1:oNErH0xLe+utO+OW8ptXMSA5DkiSEDW1u3zGIt8F9Ew= github.com/gobuffalo/logger v0.0.0-20181117211126-8e9b89b7c264/go.mod h1:5etB91IE0uBlw9k756fVKZJdS+7M7ejVhmpXXiSFj0I= github.com/gobuffalo/logger v0.0.0-20181127160119-5b956e21995c/go.mod h1:+HxKANrR9VGw9yN3aOAppJKvhO05ctDi63w4mDnKv2U= +github.com/gobuffalo/logger v0.0.0-20190224201004-be78ebfea0fa h1:26mAf6lQ2m1PSrYlsC16sFAaocXAM+jnCkpj3qKmDmU= +github.com/gobuffalo/logger v0.0.0-20190224201004-be78ebfea0fa/go.mod h1:+HxKANrR9VGw9yN3aOAppJKvhO05ctDi63w4mDnKv2U= github.com/gobuffalo/makr v1.1.5/go.mod h1:Y+o0btAH1kYAMDJW/TX3+oAXEu0bmSLLoC9mIFxtzOw= github.com/gobuffalo/mapi v1.0.0/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/mapi v1.0.1 h1:JRuTiZzDEZhBHkFiHTxJkYRT6CbYuL0K/rn+1byJoEA= github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= github.com/gobuffalo/meta v0.0.0-20181018155829-df62557efcd3/go.mod h1:XTTOhwMNryif3x9LkTTBO/Llrveezd71u3quLd0u7CM= github.com/gobuffalo/meta v0.0.0-20181018192820-8c6cef77dab3/go.mod h1:E94EPzx9NERGCY69UWlcj6Hipf2uK/vnfrF4QD0plVE= github.com/gobuffalo/meta v0.0.0-20181025145500-3a985a084b0a/go.mod h1:YDAKBud2FP7NZdruCSlmTmDOZbVSa6bpK7LJ/A/nlKg= github.com/gobuffalo/meta v0.0.0-20181114191255-b130ebedd2f7/go.mod h1:K6cRZ29ozr4Btvsqkjvg5nDFTLOgTqf03KA70Ks0ypE= github.com/gobuffalo/meta v0.0.0-20181127070345-0d7e59dd540b/go.mod h1:RLO7tMvE0IAKAM8wny1aN12pvEKn7EtkBLkUZR00Qf8= -github.com/gobuffalo/meta v0.0.0-20190120163247-50bbb1fa260d h1:cP3lJDiGboBok8q6axF0rqWjlg/MOCfgjuwuNp5TlhE= github.com/gobuffalo/meta v0.0.0-20190120163247-50bbb1fa260d/go.mod h1:KKsH44nIK2gA8p0PJmRT9GvWJUdphkDUA8AJEvFWiqM= +github.com/gobuffalo/meta v0.0.0-20190121163014-ecaa953cbfb3 h1:JzhweLavqD8ZNLOIBRvE5IPyp+sw/wYQmL9c5XwZuHI= +github.com/gobuffalo/meta v0.0.0-20190121163014-ecaa953cbfb3/go.mod h1:KLfkGnS+Tucc+iTkUcAUBtxpwOJGfhw2pHRLddPxMQY= github.com/gobuffalo/mw-basicauth v1.0.3/go.mod h1:dg7+ilMZOKnQFHDefUzUHufNyTswVUviCBgF244C1+0= github.com/gobuffalo/mw-contenttype v0.0.0-20180802152300-74f5a47f4d56/go.mod h1:7EvcmzBbeCvFtQm5GqF9ys6QnCxz2UM1x0moiWLq1No= github.com/gobuffalo/mw-csrf v0.0.0-20180802151833-446ff26e108b/go.mod h1:sbGtb8DmDZuDUQoxjr8hG1ZbLtZboD9xsn6p77ppcHo= @@ -138,8 +178,9 @@ github.com/gobuffalo/packd v0.0.0-20181111195323-b2e760a5f0ff/go.mod h1:Yf2toFaI github.com/gobuffalo/packd v0.0.0-20181114190715-f25c5d2471d7/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= github.com/gobuffalo/packd v0.0.0-20181124090624-311c6248e5fb/go.mod h1:Foenia9ZvITEvG05ab6XpiD5EfBHPL8A6hush8SJ0o8= github.com/gobuffalo/packd v0.0.0-20181207120301-c49825f8f6f4/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= -github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687 h1:uZ+G4JprR0UEq0aHZs+6eP7TEZuFfrIkmQWejIBV/QQ= github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= +github.com/gobuffalo/packd v0.0.0-20190224160250-d04dd98aca5b h1:QlU2UkP7c/XJ994sM1Z8YN9tHsKeIOp7dyMqiLvyNt0= +github.com/gobuffalo/packd v0.0.0-20190224160250-d04dd98aca5b/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= github.com/gobuffalo/packr v1.13.7/go.mod h1:KkinLIn/n6+3tVXMwg6KkNvWwVsrRAz4ph+jgpk3Z24= github.com/gobuffalo/packr v1.15.0/go.mod h1:t5gXzEhIviQwVlNx/+3SfS07GS+cZ2hn76WLzPp6MGI= github.com/gobuffalo/packr v1.15.1/go.mod h1:IeqicJ7jm8182yrVmNbM6PR4g79SjN9tZLH8KduZZwE= @@ -153,6 +194,9 @@ github.com/gobuffalo/packr/v2 v2.0.0-rc.11/go.mod h1:JoieH/3h3U4UmatmV93QmqyPUdf github.com/gobuffalo/packr/v2 v2.0.0-rc.12/go.mod h1:FV1zZTsVFi1DSCboO36Xgs4pzCZBjB/tDV9Cz/lSaR8= github.com/gobuffalo/packr/v2 v2.0.0-rc.13/go.mod h1:2Mp7GhBFMdJlOK8vGfl7SYtfMP3+5roE39ejlfjw0rA= github.com/gobuffalo/packr/v2 v2.0.0-rc.14/go.mod h1:06otbrNvDKO1eNQ3b8hst+1010UooI2MFg+B2Ze4MV8= +github.com/gobuffalo/packr/v2 v2.0.0-rc.15/go.mod h1:IMe7H2nJvcKXSF90y4X1rjYIRlNMJYCxEhssBXNZwWs= +github.com/gobuffalo/packr/v2 v2.0.0/go.mod h1:7McfLpSxaPUoSQm7gYpTZRQSK63mX8EKzzYSEFKvfkM= +github.com/gobuffalo/packr/v2 v2.0.1/go.mod h1:tp5/5A2e67F1lUGTiNadtA2ToP045+mvkWzaqMCsZr4= github.com/gobuffalo/plush v3.7.16+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.20+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.21+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= @@ -161,6 +205,8 @@ github.com/gobuffalo/plush v3.7.23+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5s github.com/gobuffalo/plush v3.7.30+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.31+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plush v3.7.32+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.33+incompatible h1:wpCuypoZo1UlvYsLx+ERYpo0YhF+DSo2SSanVgRpMOg= +github.com/gobuffalo/plush v3.7.33+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= github.com/gobuffalo/plushgen v0.0.0-20181128164830-d29dcb966cb2/go.mod h1:r9QwptTFnuvSaSRjpSp4S2/4e2D3tJhARYbvEBcKSb4= github.com/gobuffalo/plushgen v0.0.0-20181203163832-9fc4964505c2/go.mod h1:opEdT33AA2HdrIwK1aibqnTJDVVKXC02Bar/GT1YRVs= github.com/gobuffalo/plushgen v0.0.0-20181207152837-eedb135bd51b/go.mod h1:Lcw7HQbEVm09sAQrCLzIxuhFbB3nAgp4c55E+UlynR0= @@ -179,10 +225,10 @@ github.com/gobuffalo/release v1.0.61/go.mod h1:mfIO38ujUNVDlBziIYqXquYfBF+8FDHUj github.com/gobuffalo/release v1.0.72/go.mod h1:NP5NXgg/IX3M5XmHmWR99D687/3Dt9qZtTK/Lbwc1hU= github.com/gobuffalo/release v1.1.1/go.mod h1:Sluak1Xd6kcp6snkluR1jeXAogdJZpFFRzTYRs/2uwg= github.com/gobuffalo/release v1.1.3/go.mod h1:CuXc5/m+4zuq8idoDt1l4va0AXAn/OSs08uHOfMVr8E= -github.com/gobuffalo/release v1.1.6 h1:haad/N5NdoEKK4bmaHLuMeuZdNYIJyXmv+TA8ZwFYwo= github.com/gobuffalo/release v1.1.6/go.mod h1:18naWa3kBsqO0cItXZNJuefCKOENpbbUIqRL1g+p6z0= github.com/gobuffalo/shoulders v1.0.1/go.mod h1:V33CcVmaQ4gRUmHKwq1fiTXuf8Gp/qjQBUL5tHPmvbA= github.com/gobuffalo/syncx v0.0.0-20181120191700-98333ab04150/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/gobuffalo/syncx v0.0.0-20181120194010-558ac7de985f h1:S5EeH1reN93KR0L6TQvkRpu9YggCYXrUqFh1iEgvdC0= github.com/gobuffalo/syncx v0.0.0-20181120194010-558ac7de985f/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobuffalo/tags v2.0.11+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= github.com/gobuffalo/tags v2.0.14+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= @@ -190,35 +236,59 @@ github.com/gobuffalo/tags v2.0.15+incompatible h1:qc5hMXPsXD+zYPSlNgqzlpVW7z/+GJ github.com/gobuffalo/tags v2.0.15+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= github.com/gobuffalo/uuid v2.0.3+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= github.com/gobuffalo/uuid v2.0.4+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= +github.com/gobuffalo/uuid v2.0.5+incompatible h1:c5uWRuEnYggYCrT9AJm0U2v1QTG7OVDAvxhj8tIV5Gc= github.com/gobuffalo/uuid v2.0.5+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= +github.com/gobuffalo/validate v2.0.3+incompatible h1:6f4JCEz11Zi6iIlexMv7Jz10RBPvgI795AOaubtCwTE= github.com/gobuffalo/validate v2.0.3+incompatible/go.mod h1:N+EtDe0J8252BgfzQUChBgfd6L93m9weay53EWFVsMM= github.com/gobuffalo/x v0.0.0-20181003152136-452098b06085/go.mod h1:WevpGD+5YOreDJznWevcn8NTmQEW5STSBgIkpkjzqXc= github.com/gobuffalo/x v0.0.0-20181007152206-913e47c59ca7/go.mod h1:9rDPXaB3kXdKWzMc4odGQQdG2e2DIEmANy5aSJ9yesY= github.com/gofrs/uuid v3.1.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/pat v0.0.0-20180118222023-199c85a7f6d1/go.mod h1:YeAe0gNeiNT5hoiZRI4yiOky6jVdNvfO2N6Kav/HmxY= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.1.2/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= github.com/gorilla/sessions v1.1.3/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= github.com/jmoiron/sqlx v0.0.0-20180614180643-0dae4fefe7c0/go.mod h1:IiEW3SEiiErVyFdH8NTuWjSifiEQKUoyK3LNqr2kCHU= github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/karrick/godirwalk v1.7.7/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/karrick/godirwalk v1.7.8 h1:VfG72pyIxgtC7+3X9CMHI0AOl4LwyRAg98WAgsvffi8= github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -229,24 +299,29 @@ github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czP github.com/markbates/deplist v1.0.4/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= github.com/markbates/deplist v1.0.5/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= github.com/markbates/going v1.0.2/go.mod h1:UWCk3zm0UKefHZ7l8BNqi26UyiEMniznk8naLdTcy6c= +github.com/markbates/going v1.0.3/go.mod h1:fQiT6v6yQar9UD6bd/D4Z5Afbk9J6BBVBtLiyY4gp2o= github.com/markbates/grift v1.0.4/go.mod h1:wbmtW74veyx+cgfwFhlnnMWqhoz55rnHR47oMXzsyVs= github.com/markbates/hmax v1.0.0/go.mod h1:cOkR9dktiESxIMu+65oc/r/bdY4bE8zZw3OLhLx0X2c= github.com/markbates/inflect v1.0.0/go.mod h1:oTeZL2KHA7CUX6X+fovmK9OvIOFuqu0TwdQrZjLTh88= github.com/markbates/inflect v1.0.1/go.mod h1:uv3UVNBe5qBIfCm8O8Q+DW+S1EopeyINj+Ikhc7rnCk= github.com/markbates/inflect v1.0.3/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzferVeWqbgNs= +github.com/markbates/inflect v1.0.4 h1:5fh1gzTFhfae06u3hzHYO9xe3l3v3nW5Pwt3naLTP5g= github.com/markbates/inflect v1.0.4/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzferVeWqbgNs= github.com/markbates/oncer v0.0.0-20180924031910-e862a676800b/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/oncer v0.0.0-20180924034138-723ad0170a46/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/oncer v0.0.0-20181014194634-05fccaae8fc4/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2 h1:JgVTCPf0uBVcUSWpyXmGpgOc62nK5HWUBKAGc3Qqa5k= github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/refresh v1.4.10/go.mod h1:NDPHvotuZmTmesXxr95C9bjlw1/0frJwtME2dzcVKhc= github.com/markbates/safe v1.0.0/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/markbates/sigtx v1.0.0/go.mod h1:QF1Hv6Ic6Ca6W+T+DL0Y/ypborFKyvUY9HmuCD4VeTc= github.com/markbates/willie v1.0.9/go.mod h1:fsrFVWl91+gXpx/6dv715j7i11fYPfZ9ZGfH0DQzY7w= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/microcosm-cc/bluemonday v1.0.2 h1:5lPfLTTAvAbtS0VqT+94yOtFnGfUWYyx0+iToC3Os3s= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= @@ -254,45 +329,79 @@ github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk github.com/mitchellh/mapstructure v1.0.0/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/monoculum/formam v0.0.0-20180901015400-4e68be1d79ba/go.mod h1:RKgILGEJq24YyJ2ban8EO0RUVSJlF1pGsEvoLEACr/Q= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/nicksnyder/go-i18n v1.10.0/go.mod h1:HrK7VCrbOvQoUAQ7Vpy7i87N7JZZZ7R2xBGjv0j365Q= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/rogpeppe/go-internal v1.0.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.1.0 h1:g0fH8RicVgNl+zVZDCDfbdWxAWoAEJyI7I3TZYXFiig= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.2.2 h1:J7U/N7eRtzjhs26d6GqMh2HBuXP8/Z64Densiiieafo= +github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516 h1:ofR1ZdrNSkiWcMsRrubK9tb2/SlZVWttAfqUjJi6QYc= github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= +github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= github.com/shurcooL/highlight_go v0.0.0-20170515013102-78fb10f4a5f8/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= github.com/shurcooL/octicon v0.0.0-20180602230221-c42b0e3b24d9/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.1.0/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.3.0 h1:hI/7Q+DtNZ2kINb6qt/lS+IyXnHQe9e90POfeewL/ME= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d h1:yKm7XZV6j9Ev6lojP2XaIshpT4ymkqhMeSghO5Ps00E= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e h1:qpG93cPwA5f7s/ZPBJnGOYQNK/vKsaDaseuKT5Asee8= github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.0/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/viper v1.2.1/go.mod h1:P4AexN0a+C9tGAnUFNwDMYYZv3pjFuvmeiMyKRaNVlI= github.com/spf13/viper v1.3.1/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= @@ -301,10 +410,14 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/unrolled/secure v0.0.0-20180918153822-f340ee86eb8b/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= github.com/unrolled/secure v0.0.0-20181005190816-ff9db2ff917f/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181001203147-e3636079e1a4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -313,15 +426,21 @@ golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20181024171144-74cb1d3d52f4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181025113841-85e1b3f9139a/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181106171534-e4dc69e5b2fd/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181127143415-eb0de9b17e85/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190102171810-8d7daa0c54b3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc h1:F5tKCVGp+MUAHhKp5MZtGqAlGX3+oCsiL1Q629FL90M= golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67 h1:ng3VDlRp5/DHpSWl02R4rM9I+8M2rhmsuLwAMmkLQWE= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180816102801-aaf60122140d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180921000356-2f5d2388922f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180926154720-4dfa2610cdf3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -329,17 +448,24 @@ golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181017193950-04a2e542c03f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181207154023-610586996380/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3 h1:eH6Eip3UpmR+yM/qI9Ijluzb1bNv/cAU/n+6l8tRSis= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd h1:HuTn7WObtcDo9uEEU7rEqL0jYthdXAmZ6PP+meazmaU= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180906133057-8cf3aee42992/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -352,15 +478,19 @@ golang.org/x/sys v0.0.0-20181024145615-5cd93ef61a7c/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181025063200-d989b31c8746/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026064943-731415f00dce/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181106135930-3a76605856fd/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181206074257-70b957f3b65e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190102155601-82a175fd1598 h1:S8GOgffXV1X3fpVG442QRfWOt0iFl79eHJ7OPt725bo= golang.org/x/sys v0.0.0-20190102155601-82a175fd1598/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190116161447-11f53e031339 h1:g/Jesu8+QLnA0CPzF3E1pURg0Byr7i6jLoX5sqjcAh0= golang.org/x/sys v0.0.0-20190116161447-11f53e031339/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181003024731-2f84ea8ef872/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181006002542-f60d9635b16a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -369,6 +499,7 @@ golang.org/x/tools v0.0.0-20181013182035-5e66757b835f/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20181017214349-06f26fdaaa28/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181024171208-a2dc47679d30/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181026183834-f60e5f99f081/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181105230042-78dc5bac0cac/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181107215632-34b416bd17b3/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181114190951-94339b83286c/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -383,9 +514,28 @@ golang.org/x/tools v0.0.0-20181212172921-837e80568c09/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190102213336-ca9055ed7d04/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190104182027-498d95493402/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190111214448-fc1d57b08d7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190118193359-16909d206f00 h1:6OmoTtlNJlHuWNIjTEyUtMBHrryp8NRuf/XtnC7MmXM= golang.org/x/tools v0.0.0-20190118193359-16909d206f00/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190124004107-78ee07aa9465/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190131142011-8dbcc66f33bb/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206221403-44bcb96178d3/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190219185102-9394956cfdc5/go.mod h1:E6PF97AdD6v0s+fPshSmumCW1S1Ne85RbPQxELkKa44= +golang.org/x/tools v0.0.0-20190221204921-83362c3779f5 h1:ev5exjGDsOo0NPTB0qdCcE53BfWl1IICJlhgXgfT9fM= +golang.org/x/tools v0.0.0-20190221204921-83362c3779f5/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922/go.mod h1:L3J43x8/uS+qIUoksaLKe6OS3nUKxOKuIFz1sl2/jx4= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -394,7 +544,13 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/mail.v2 v2.0.0-20180731213649-a0242b2233b4/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/vendor/github.com/gobuffalo/packr/v2/helpers.go b/vendor/github.com/gobuffalo/packr/v2/helpers.go new file mode 100644 index 000000000..3654dffa8 --- /dev/null +++ b/vendor/github.com/gobuffalo/packr/v2/helpers.go @@ -0,0 +1,73 @@ +package packr + +import ( + "os" + "path/filepath" + "runtime" + "strings" + + "github.com/gobuffalo/envy" + "github.com/gobuffalo/packr/v2/plog" +) + +func construct(name string, path string) *Box { + return &Box{ + Path: path, + Name: name, + ResolutionDir: resolutionDir(path), + resolvers: resolversMap{}, + dirs: dirsMap{}, + } +} + +func resolutionDirTestFilename(filename, og string) (string, bool) { + ng := filepath.Join(filepath.Dir(filename), og) + + // // this little hack courtesy of the `-cover` flag!! + cov := filepath.Join("_test", "_obj_test") + ng = strings.Replace(ng, string(filepath.Separator)+cov, "", 1) + + if resolutionDirExists(ng, og) { + return ng, true + } + + ng = filepath.Join(envy.GoPath(), "src", ng) + if resolutionDirExists(ng, og) { + return ng, true + } + + return og, false +} + +func resolutionDirExists(s, og string) bool { + _, err := os.Stat(s) + if err != nil { + return false + } + plog.Debug("packr", "resolutionDir", "original", og, "resolved", s) + return true +} + +func resolutionDir(og string) string { + ng, _ := filepath.Abs(og) + + if resolutionDirExists(ng, og) { + return ng + } + + // packr.New + _, filename, _, _ := runtime.Caller(3) + ng, ok := resolutionDirTestFilename(filename, og) + if ok { + return ng + } + + // packr.NewBox (deprecated) + _, filename, _, _ = runtime.Caller(4) + ng, ok = resolutionDirTestFilename(filename, og) + if ok { + return ng + } + + return og +} diff --git a/vendor/github.com/gobuffalo/packr/v2/jam/parser/visitor.go b/vendor/github.com/gobuffalo/packr/v2/jam/parser/visitor.go index 8c6ce6d2c..47b0c9ecf 100644 --- a/vendor/github.com/gobuffalo/packr/v2/jam/parser/visitor.go +++ b/vendor/github.com/gobuffalo/packr/v2/jam/parser/visitor.go @@ -9,7 +9,7 @@ import ( "strings" "github.com/gobuffalo/genny" - "github.com/gobuffalo/genny/movinglater/gotools" + "github.com/gobuffalo/gogen" "github.com/pkg/errors" ) @@ -30,7 +30,7 @@ func NewVisitor(f *File) *Visitor { func (v *Visitor) Run() (Boxes, error) { var boxes Boxes - pf, err := gotools.ParseFile(v.File) + pf, err := gogen.ParseFile(v.File) if err != nil { return boxes, errors.Wrap(err, v.File.Name()) } diff --git a/vendor/github.com/gobuffalo/packr/v2/pointer.go b/vendor/github.com/gobuffalo/packr/v2/pointer.go index 70e91c99e..10ef1cd05 100644 --- a/vendor/github.com/gobuffalo/packr/v2/pointer.go +++ b/vendor/github.com/gobuffalo/packr/v2/pointer.go @@ -7,6 +7,8 @@ import ( "github.com/pkg/errors" ) +// Pointer is a resolvr which resolves +// a file from a different box. type Pointer struct { ForwardBox string ForwardPath string @@ -14,6 +16,8 @@ type Pointer struct { var _ resolver.Resolver = Pointer{} +// Resolve attempts to find the file in the specific box +// with the specified key func (p Pointer) Resolve(box string, path string) (file.File, error) { plog.Debug(p, "Resolve", "box", box, "path", path, "forward-box", p.ForwardBox, "forward-path", p.ForwardPath) b, err := findBox(p.ForwardBox) @@ -25,5 +29,5 @@ func (p Pointer) Resolve(box string, path string) (file.File, error) { return f, errors.WithStack(errors.Wrap(err, path)) } plog.Debug(p, "Resolve", "box", box, "path", path, "file", f) - return f, nil + return file.NewFileR(path, f) } diff --git a/vendor/github.com/gobuffalo/packr/v2/resolvers_map.go b/vendor/github.com/gobuffalo/packr/v2/resolvers_map.go new file mode 100644 index 000000000..24a042671 --- /dev/null +++ b/vendor/github.com/gobuffalo/packr/v2/resolvers_map.go @@ -0,0 +1,75 @@ +//go:generate mapgen -name "resolvers" -zero "nil" -go-type "resolver.Resolver" -pkg "" -a "nil" -b "nil" -c "nil" -bb "nil" -destination "packr" +// Code generated by github.com/gobuffalo/mapgen. DO NOT EDIT. + +package packr + +import ( + "sort" + "sync" + + "github.com/gobuffalo/packr/v2/file/resolver" +) + +// resolversMap wraps sync.Map and uses the following types: +// key: string +// value: resolver.Resolver +type resolversMap struct { + data sync.Map +} + +// Delete the key from the map +func (m *resolversMap) Delete(key string) { + m.data.Delete(key) +} + +// Load the key from the map. +// Returns resolver.Resolver or bool. +// A false return indicates either the key was not found +// or the value is not of type resolver.Resolver +func (m *resolversMap) Load(key string) (resolver.Resolver, bool) { + i, ok := m.data.Load(key) + if !ok { + return nil, false + } + s, ok := i.(resolver.Resolver) + return s, ok +} + +// LoadOrStore will return an existing key or +// store the value if not already in the map +func (m *resolversMap) LoadOrStore(key string, value resolver.Resolver) (resolver.Resolver, bool) { + i, _ := m.data.LoadOrStore(key, value) + s, ok := i.(resolver.Resolver) + return s, ok +} + +// Range over the resolver.Resolver values in the map +func (m *resolversMap) Range(f func(key string, value resolver.Resolver) bool) { + m.data.Range(func(k, v interface{}) bool { + key, ok := k.(string) + if !ok { + return false + } + value, ok := v.(resolver.Resolver) + if !ok { + return false + } + return f(key, value) + }) +} + +// Store a resolver.Resolver in the map +func (m *resolversMap) Store(key string, value resolver.Resolver) { + m.data.Store(key, value) +} + +// Keys returns a list of keys in the map +func (m *resolversMap) Keys() []string { + var keys []string + m.Range(func(key string, value resolver.Resolver) bool { + keys = append(keys, key) + return true + }) + sort.Strings(keys) + return keys +} diff --git a/vendor/github.com/gobuffalo/packr/v2/travis.sh b/vendor/github.com/gobuffalo/packr/v2/travis.sh deleted file mode 100644 index 99612f2b4..000000000 --- a/vendor/github.com/gobuffalo/packr/v2/travis.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -go get -t ./... -go install -v ./packr2 -packr2 -v clean -packr2 -v -go test -v -timeout=5s -race ./... -packr2 -v clean -go test -v -timeout=5s -race ./... diff --git a/vendor/github.com/gobuffalo/packr/v2/version.go b/vendor/github.com/gobuffalo/packr/v2/version.go index 807883046..f42e20d08 100644 --- a/vendor/github.com/gobuffalo/packr/v2/version.go +++ b/vendor/github.com/gobuffalo/packr/v2/version.go @@ -1,3 +1,4 @@ package packr -const Version = "v2.0.0-rc.15" +// Version of Packr +const Version = "v2.0.2" diff --git a/vendor/github.com/gobuffalo/packr/v2/walk.go b/vendor/github.com/gobuffalo/packr/v2/walk.go index 88dcf0f62..40cd1f375 100644 --- a/vendor/github.com/gobuffalo/packr/v2/walk.go +++ b/vendor/github.com/gobuffalo/packr/v2/walk.go @@ -11,6 +11,7 @@ import ( "github.com/pkg/errors" ) +// WalkFunc is used to walk a box type WalkFunc = packd.WalkFunc // Walk will traverse the box and call the WalkFunc for each file in the box/folder. @@ -20,31 +21,34 @@ func (b *Box) Walk(wf WalkFunc) error { dr := b.DefaultResolver if dr == nil { cd := resolver.OsPath(b.ResolutionDir) - dr = &resolver.Disk{Root: string(cd)} + dr = &resolver.Disk{Root: cd} } if fm, ok := dr.(file.FileMappable); ok { for n, f := range fm.FileMap() { m[n] = f } } - - b.moot.RLock() - for n, r := range b.resolvers { - f, err := r.Resolve("", n) + var err error + b.resolvers.Range(func(n string, r resolver.Resolver) bool { + var f file.File + f, err = r.Resolve("", n) if err != nil { - return errors.WithStack(err) + return false } keep := true for k := range m { - if strings.ToLower(k) == strings.ToLower(n) { + if strings.EqualFold(k, n) { keep = false } } if keep { m[n] = f } + return true + }) + if err != nil { + return errors.WithStack(err) } - b.moot.RUnlock() var keys = make([]string, 0, len(m)) for k := range m { @@ -63,7 +67,7 @@ func (b *Box) Walk(wf WalkFunc) error { } // WalkPrefix will call box.Walk and call the WalkFunc when it finds paths that have a matching prefix -func (b Box) WalkPrefix(prefix string, wf WalkFunc) error { +func (b *Box) WalkPrefix(prefix string, wf WalkFunc) error { ipref := resolver.OsPath(prefix) return b.Walk(func(path string, f File) error { ipath := resolver.OsPath(path) diff --git a/vendor/github.com/golang-migrate/migrate/v4/.golangci.yml b/vendor/github.com/golang-migrate/migrate/v4/.golangci.yml new file mode 100644 index 000000000..2d4d89158 --- /dev/null +++ b/vendor/github.com/golang-migrate/migrate/v4/.golangci.yml @@ -0,0 +1,27 @@ +run: + # timeout for analysis, e.g. 30s, 5m, default is 1m + deadline: 2m +linters: + enable: + #- golint + - interfacer + - unconvert + #- dupl + - goconst + - gofmt + - misspell + - maligned + - unparam + - nakedret + - prealloc + #- gosec +linters-settings: + misspell: + locale: US +issues: + max-same: 0 + max-per-linter: 0 + exclude-use-default: false + exclude: + # gosec: Duplicated errcheck checks + - G104 diff --git a/vendor/github.com/golang-migrate/migrate/v4/.travis.yml b/vendor/github.com/golang-migrate/migrate/v4/.travis.yml index f822efaef..3a3ee8179 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/.travis.yml +++ b/vendor/github.com/golang-migrate/migrate/v4/.travis.yml @@ -6,8 +6,8 @@ matrix: - go: master include: # Supported versions of Go: https://golang.org/dl/ - - go: "1.10.x" - go: "1.11.x" + - go: "1.12.x" - go: master go_import_path: github.com/golang-migrate/migrate @@ -27,17 +27,14 @@ cache: - $GOPATH/pkg before_install: + - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.16.0 - echo "TRAVIS_GO_VERSION=${TRAVIS_GO_VERSION}" - # Download the binary to bin folder in $GOPATH - - if [[ "${TRAVIS_GO_VERSION}" == 1.10* ]]; then curl -L -s https://github.com/golang/dep/releases/download/v0.5.0/dep-linux-amd64 -o $GOPATH/bin/dep; fi - # Make the binary executable - - if [[ "${TRAVIS_GO_VERSION}" == 1.10* ]]; then chmod +x $GOPATH/bin/dep; fi install: - - if [[ "${TRAVIS_GO_VERSION}" == 1.10* ]]; then dep ensure -vendor-only; fi - go get github.com/mattn/goveralls script: + - golangci-lint run - make test COVERAGE_DIR=/tmp/coverage after_success: @@ -53,7 +50,7 @@ deploy: secure: hWH1HLPpzpfA8pXQ93T1qKQVFSpQp0as/JLQ7D91jHuJ8p+RxVeqblDrR6HQY/95R/nyiE9GJmvUolSuw5h449LSrGxPtVWhdh6EnkxlQHlen5XeMhVjRjFV0sE9qGe8v7uAkiTfRO61ktTWHrEAvw5qpyqnNISodmZS78XIasPODQbNlzwINhWhDTHIjXGb4FpizYaL3OGCanrxfR9fQyCaqKGGBjRq3Mfq8U6Yd4mApmsE+uJxgaZV8K5zBqpkSzQRWhcVGNL5DuLsU3gfSJOo7kZeA2G71SHffH577dBoqtCZ4VFv169CoUZehLWCb+7XKJZmHXVujCURATSySLGUOPc6EoLFAn3YtsCA04mS4bZVo5FZPWVwfhjmkhtDR4f6wscKp7r1HsFHSOgm59QfETQdrn4MnZ44H2Jd39axqndn5DvK9EcZVjPHynOPnueXP2u6mTuUgh2VyyWBCDO3CNo0fGlo7VJI69IkIWNSD87K9cHZWYMClyKZkUzS+PmRAhHRYbVd+9ZjKOmnU36kUHNDG/ft1D4ogsY+rhVtXB4lgWDM5adri+EIScYdYnB1/pQexLBigcJY9uE7nQTR0U6QgVNYvun7uRNs40E0c4voSfmPdFO0FlOD2y1oQhnaXfWLbu9nMcTcs4RFGrcC7NzkUN4/WjG8s285V6w= skip_cleanup: true on: - go: "1.11.x" + go: "1.12.x" repo: golang-migrate/migrate tags: true file: @@ -71,7 +68,7 @@ deploy: package_glob: '*.deb' skip_cleanup: true on: - go: "1.11.x" + go: "1.12.x" repo: golang-migrate/migrate tags: true - provider: packagecloud @@ -83,7 +80,7 @@ deploy: package_glob: '*.deb' skip_cleanup: true on: - go: "1.11.x" + go: "1.12.x" repo: golang-migrate/migrate tags: true - provider: packagecloud @@ -95,7 +92,7 @@ deploy: package_glob: '*.deb' skip_cleanup: true on: - go: "1.11.x" + go: "1.12.x" repo: golang-migrate/migrate tags: true - provider: packagecloud @@ -107,7 +104,7 @@ deploy: package_glob: '*.deb' skip_cleanup: true on: - go: "1.11.x" + go: "1.12.x" repo: golang-migrate/migrate tags: true - provider: packagecloud @@ -119,13 +116,13 @@ deploy: package_glob: '*.deb' skip_cleanup: true on: - go: "1.11.x" + go: "1.12.x" repo: golang-migrate/migrate tags: true - provider: script script: ./docker-deploy.sh skip_cleanup: true on: - go: "1.11.x" + go: "1.12.x" repo: golang-migrate/migrate tags: true diff --git a/vendor/github.com/golang-migrate/migrate/v4/CONTRIBUTING.md b/vendor/github.com/golang-migrate/migrate/v4/CONTRIBUTING.md index 8214484f6..84fb8238a 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/CONTRIBUTING.md +++ b/vendor/github.com/golang-migrate/migrate/v4/CONTRIBUTING.md @@ -5,6 +5,8 @@ 1. Use a version of Go that supports [modules](https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more) (e.g. Go 1.11+) 1. Fork this repo and `git clone` somewhere to `$GOPATH/src/github.com/golang-migrate/migrate` * Ensure that [Go modules are enabled](https://golang.org/cmd/go/#hdr-Preliminary_module_support) (e.g. your repo path or the `GO111MODULE` environment variable are set correctly) + 1. Install [golangci-lint](https://github.com/golangci/golangci-lint#install) + 1. Run the linter: `golangci-lint run` 1. Confirm tests are working: `make test-short` 1. Write awesome code ... 1. `make test` to run all tests against all database versions diff --git a/vendor/github.com/golang-migrate/migrate/v4/Dockerfile b/vendor/github.com/golang-migrate/migrate/v4/Dockerfile index 8e2c27248..13ca3f7ff 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/Dockerfile +++ b/vendor/github.com/golang-migrate/migrate/v4/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.11-alpine3.8 AS downloader +FROM golang:1.12-alpine3.9 AS downloader ARG VERSION RUN apk add --no-cache git gcc musl-dev @@ -8,12 +8,12 @@ WORKDIR /go/src/github.com/golang-migrate/migrate COPY . ./ ENV GO111MODULE=on -ENV DATABASES="postgres mysql redshift cassandra spanner cockroachdb clickhouse" -ENV SOURCES="file go_bindata github aws_s3 google_cloud_storage" +ENV DATABASES="postgres mysql redshift cassandra spanner cockroachdb clickhouse mongodb" +ENV SOURCES="file go_bindata github aws_s3 google_cloud_storage godoc_vfs gitlab" RUN go build -a -o build/migrate.linux-386 -ldflags="-X main.Version=${VERSION}" -tags "$DATABASES $SOURCES" ./cmd/migrate -FROM alpine:3.8 +FROM alpine:3.9 RUN apk add --no-cache ca-certificates diff --git a/vendor/github.com/golang-migrate/migrate/v4/Gopkg.lock b/vendor/github.com/golang-migrate/migrate/v4/Gopkg.lock deleted file mode 100644 index fca0aa741..000000000 --- a/vendor/github.com/golang-migrate/migrate/v4/Gopkg.lock +++ /dev/null @@ -1,811 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - digest = "1:4a799555f4a58b849ca3a3bed67c10ca484a2d3cedf4199773211d04b0109793" - name = "cloud.google.com/go" - packages = [ - "civil", - "compute/metadata", - "iam", - "internal", - "internal/atomiccache", - "internal/fields", - "internal/optional", - "internal/protostruct", - "internal/trace", - "internal/version", - "longrunning", - "longrunning/autogen", - "spanner", - "spanner/admin/database/apiv1", - "storage", - ] - pruneopts = "UT" - revision = "c728a003b238b26cef9ab6753a5dc424b331c3ad" - version = "v0.27.0" - -[[projects]] - branch = "master" - digest = "1:6da51e5ec493ad2b44cb04129e2d0a068c8fb9bd6cb5739d199573558696bb94" - name = "github.com/Azure/go-ansiterm" - packages = [ - ".", - "winterm", - ] - pruneopts = "UT" - revision = "d6e3b3328b783f23731bc4d058875b0371ff8109" - -[[projects]] - digest = "1:f9ae348e1f793dcf9ed930ed47136a67343dbd6809c5c91391322267f4476892" - name = "github.com/Microsoft/go-winio" - packages = ["."] - pruneopts = "UT" - revision = "97e4973ce50b2ff5f09635a57e2b88a037aae829" - version = "v0.4.11" - -[[projects]] - branch = "master" - digest = "1:3721a10686511b80c052323423f0de17a8c06d417dbdd3b392b1578432a33aae" - name = "github.com/Nvveen/Gotty" - packages = ["."] - pruneopts = "UT" - revision = "cd527374f1e5bff4938207604a14f2e38a9cf512" - -[[projects]] - digest = "1:1d58a675bc7df5691f81b4a28a39d2d218f020b23644a6c7771f7ebaab272ac8" - name = "github.com/aws/aws-sdk-go" - packages = [ - "aws", - "aws/awserr", - "aws/awsutil", - "aws/client", - "aws/client/metadata", - "aws/corehandlers", - "aws/credentials", - "aws/credentials/ec2rolecreds", - "aws/credentials/endpointcreds", - "aws/credentials/stscreds", - "aws/csm", - "aws/defaults", - "aws/ec2metadata", - "aws/endpoints", - "aws/request", - "aws/session", - "aws/signer/v4", - "internal/s3err", - "internal/sdkio", - "internal/sdkrand", - "internal/sdkuri", - "internal/shareddefaults", - "private/protocol", - "private/protocol/eventstream", - "private/protocol/eventstream/eventstreamapi", - "private/protocol/query", - "private/protocol/query/queryutil", - "private/protocol/rest", - "private/protocol/restxml", - "private/protocol/xml/xmlutil", - "service/s3", - "service/s3/s3iface", - "service/sts", - ] - pruneopts = "UT" - revision = "bf8067ceb6e7f51e150c218972dccfeeed892b85" - version = "v1.15.54" - -[[projects]] - branch = "master" - digest = "1:5a75ff130630f57609ffca00d6a76dc31bb50ad6a03809848e0f9e13add31987" - name = "github.com/cockroachdb/cockroach-go" - packages = ["crdb"] - pruneopts = "UT" - revision = "e0a95dfd547cc9c3ebaaba1a12c2afe4bf621ac5" - -[[projects]] - branch = "master" - digest = "1:3ba3d94d45f2d5c4b3411452474d96996b7e0dce730b689920f7c307511e5655" - name = "github.com/cznic/b" - packages = ["."] - pruneopts = "UT" - revision = "35e9bbe41f07452a183c517a5fc5f3c9f45eaa0f" - -[[projects]] - branch = "master" - digest = "1:4688e1d4b22367c5bd24fe65f44b3e53a443a93fd19cf34169f1c8337d93dcf7" - name = "github.com/cznic/fileutil" - packages = ["."] - pruneopts = "UT" - revision = "6a051e75936f623600b67c2b1116b6b6c0ffb936" - -[[projects]] - branch = "master" - digest = "1:2a4afef2ef0e4e4ab66b4f4f6a70bf6551ae8b727184771b5547e2b90245fe58" - name = "github.com/cznic/golex" - packages = ["lex"] - pruneopts = "UT" - revision = "4ab7c5e190e49208c823ce8ec803aa39e6a4b31a" - -[[projects]] - digest = "1:a9e2943ed681d4758a43d1bd9e80d7e993b66ce5adc7aa5dcc083ba48a47a4eb" - name = "github.com/cznic/internal" - packages = [ - "buffer", - "file", - "slice", - ] - pruneopts = "UT" - revision = "cef02a853c3a93623c42eacd574e7ea05f55531b" - version = "1.0.0" - -[[projects]] - digest = "1:ec7b58207ac8eee1c554b7947b3f5124f711238a80edb7224a53bae7263c95ae" - name = "github.com/cznic/lldb" - packages = ["."] - pruneopts = "UT" - revision = "bea8611dd5c407f3c5eab9f9c68e887a27dc6f0e" - version = "v1.1.0" - -[[projects]] - branch = "master" - digest = "1:42951d361293c2f7068ab0411afeb57856afba843fe681cea1e2731b47021222" - name = "github.com/cznic/mathutil" - packages = ["."] - pruneopts = "UT" - revision = "ca4c9f2c136954238c3158b92de72078c7672ecc" - -[[projects]] - digest = "1:336a34e066968a8e30ee73a0d4419f37d3e8286b94f996cddf46a5e82d13b2fa" - name = "github.com/cznic/ql" - packages = [ - ".", - "driver", - "vendored/github.com/camlistore/go4/lock", - ] - pruneopts = "UT" - revision = "47bf73cf8ed137969f12b223b7016784cdd9d42e" - version = "v1.2.0" - -[[projects]] - branch = "master" - digest = "1:06877d57543857a87186f43b6195bbdf5e8f4a0f51412fdf4baef504cead7973" - name = "github.com/cznic/sortutil" - packages = ["."] - pruneopts = "UT" - revision = "4c7342852e65c2088c981288f2c5610d10b9f7f4" - -[[projects]] - branch = "master" - digest = "1:8a26e11e94f1c9f03ab9fc1e816b003629d41b26ab41eefcb7444fad5b24fc4b" - name = "github.com/cznic/strutil" - packages = ["."] - pruneopts = "UT" - revision = "529a34b1c186b483642a7a230c67521d9aa4b0fb" - -[[projects]] - branch = "master" - digest = "1:bb8236408f88f411f565dffcf1e648fe34c7456820b707f96ccbfb89e1cd8eeb" - name = "github.com/cznic/zappy" - packages = ["."] - pruneopts = "UT" - revision = "2533cb5b45cc6c07421468ce262899ddc9d53fb7" - -[[projects]] - digest = "1:8779ca6bbfd7b38a775f89f564834d2f1031fbf337f2eb5f18f115e40ca9a290" - name = "github.com/dhui/dktest" - packages = ["."] - pruneopts = "UT" - revision = "d72c967df8c2fb5403bfc0c37425986977343f6a" - version = "v0.3.0" - -[[projects]] - branch = "master" - digest = "1:4ddc17aeaa82cb18c5f0a25d7c253a10682f518f4b2558a82869506eec223d76" - name = "github.com/docker/distribution" - packages = [ - "digestset", - "reference", - ] - pruneopts = "UT" - revision = "1cb4180b1a5b9c029b2f2beaeb38f0b5cf64e12e" - -[[projects]] - digest = "1:8a2c57c577e78f40e2b3cd34ba1d050d9afd1060f91552ea03704324d1f50024" - name = "github.com/docker/docker" - packages = [ - "api", - "api/types", - "api/types/blkiodev", - "api/types/container", - "api/types/events", - "api/types/filters", - "api/types/image", - "api/types/mount", - "api/types/network", - "api/types/registry", - "api/types/strslice", - "api/types/swarm", - "api/types/swarm/runtime", - "api/types/time", - "api/types/versions", - "api/types/volume", - "client", - "pkg/jsonmessage", - "pkg/term", - "pkg/term/windows", - ] - pruneopts = "UT" - revision = "453f2b8b40b923862ce1c08c11531ff5042770f1" - -[[projects]] - digest = "1:811c86996b1ca46729bad2724d4499014c4b9effd05ef8c71b852aad90deb0ce" - name = "github.com/docker/go-connections" - packages = [ - "nat", - "sockets", - "tlsconfig", - ] - pruneopts = "UT" - revision = "7395e3f8aa162843a74ed6d48e79627d9792ac55" - version = "v0.4.0" - -[[projects]] - digest = "1:6f82cacd0af5921e99bf3f46748705239b36489464f4529a1589bc895764fb18" - name = "github.com/docker/go-units" - packages = ["."] - pruneopts = "UT" - revision = "47565b4f722fb6ceae66b95f853feed578a4a51c" - version = "v0.3.3" - -[[projects]] - branch = "master" - digest = "1:67d0b50be0549e610017cb91e0b0b745ec0cad7c613bc8e18ff2d1c1fc8825a7" - name = "github.com/edsrzf/mmap-go" - packages = ["."] - pruneopts = "UT" - revision = "0bce6a6887123b67a60366d2c9fe2dfb74289d2e" - -[[projects]] - digest = "1:812c304ad1cbb214459f7a198cc246a9c8a114a6a92063cef7b31c4ec42a5d6c" - name = "github.com/fsouza/fake-gcs-server" - packages = [ - "fakestorage", - "internal/backend", - ] - pruneopts = "UT" - revision = "9f9efdc50d6ad4314a4ff85646341f2a9b75ae5f" - version = "v1.3.0" - -[[projects]] - digest = "1:15e27372d379b45b18ac917b9dafc45c45485239490ece18cca97a12f9591146" - name = "github.com/go-ini/ini" - packages = ["."] - pruneopts = "UT" - revision = "9c8236e659b76e87bf02044d06fde8683008ff3e" - version = "v1.39.0" - -[[projects]] - digest = "1:ec6f9bf5e274c833c911923c9193867f3f18788c461f76f05f62bb1510e0ae65" - name = "github.com/go-sql-driver/mysql" - packages = ["."] - pruneopts = "UT" - revision = "72cd26f257d44c1114970e19afddcd812016007e" - version = "v1.4.1" - -[[projects]] - digest = "1:586ea76dbd0374d6fb649a91d70d652b7fe0ccffb8910a77468e7702e7901f3d" - name = "github.com/go-stack/stack" - packages = ["."] - pruneopts = "UT" - revision = "2fee6af1a9795aafbe0253a0cfbdf668e1fb8a9a" - version = "v1.8.0" - -[[projects]] - branch = "master" - digest = "1:1a5f28249f1a5b118994359a1c7b8c53ee1ff47aa7fe65884fbd20cd237001f4" - name = "github.com/gocql/gocql" - packages = [ - ".", - "internal/lru", - "internal/murmur", - "internal/streams", - ] - pruneopts = "UT" - revision = "70385f88b28b43805bd83d212169ab2d38810b15" - -[[projects]] - digest = "1:bbadccf3d3317ea03c0dac0b45b673b4b397c8f91a1d2eff550a3c51c4ad770e" - name = "github.com/gogo/protobuf" - packages = ["proto"] - pruneopts = "UT" - revision = "636bf0302bc95575d69441b25a2603156ffdddf1" - version = "v1.1.1" - -[[projects]] - digest = "1:ec0bde6dc8cf3cb9254f79603bd8489c366a0a8584949cac5a73fa10b9f47c21" - name = "github.com/golang/protobuf" - packages = [ - "proto", - "protoc-gen-go/descriptor", - "ptypes", - "ptypes/any", - "ptypes/duration", - "ptypes/empty", - "ptypes/struct", - "ptypes/timestamp", - ] - pruneopts = "UT" - revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" - version = "v1.2.0" - -[[projects]] - branch = "master" - digest = "1:4a0c6bb4805508a6287675fac876be2ac1182539ca8a32468d8128882e9d5009" - name = "github.com/golang/snappy" - packages = ["."] - pruneopts = "UT" - revision = "2e65f85255dbc3072edf28d6b5b8efc472979f5a" - -[[projects]] - digest = "1:f3fb942d9a52aff79191a8318317147ab76ca609bced931b8be9ab1825569993" - name = "github.com/google/go-github" - packages = ["github"] - pruneopts = "UT" - revision = "747f93dd9b489bd56f7442b3c42bfea12800a75b" - version = "v17.0.0" - -[[projects]] - digest = "1:a63cff6b5d8b95638bfe300385d93b2a6d9d687734b863da8e09dc834510a690" - name = "github.com/google/go-querystring" - packages = ["query"] - pruneopts = "UT" - revision = "44c6ddd0a2342c386950e880b658017258da92fc" - version = "v1.0.0" - -[[projects]] - digest = "1:e145e9710a10bc114a6d3e2738aadf8de146adaa031854ffdf7bbfe15da85e63" - name = "github.com/googleapis/gax-go" - packages = ["."] - pruneopts = "UT" - revision = "317e0006254c44a0ac427cc52a0e083ff0b9622f" - version = "v2.0.0" - -[[projects]] - digest = "1:c79fb010be38a59d657c48c6ba1d003a8aa651fa56b579d959d74573b7dff8e1" - name = "github.com/gorilla/context" - packages = ["."] - pruneopts = "UT" - revision = "08b5f424b9271eedf6f9f0ce86cb9396ed337a42" - version = "v1.1.1" - -[[projects]] - digest = "1:e73f5b0152105f18bc131fba127d9949305c8693f8a762588a82a48f61756f5f" - name = "github.com/gorilla/mux" - packages = ["."] - pruneopts = "UT" - revision = "e3702bed27f0d39777b0b37b664b6280e8ef8fbf" - version = "v1.6.2" - -[[projects]] - branch = "master" - digest = "1:364b908b9b27b97ab838f2f6f1b1f46281fa29b978a037d72a9b1d4f6d940190" - name = "github.com/hailocab/go-hostpool" - packages = ["."] - pruneopts = "UT" - revision = "e80d13ce29ede4452c43dea11e79b9bc8a15b478" - -[[projects]] - digest = "1:8dfbec76b4834d96c37ba4c4969fc47c9a15e67c5a7eecfa031fbe67dab50429" - name = "github.com/jackc/pgx" - packages = [ - ".", - "chunkreader", - "internal/sanitize", - "pgio", - "pgproto3", - "pgtype", - ] - pruneopts = "UT" - revision = "89f1e6ac7276b61d885db5e5aed6fcbedd1c7e31" - version = "v3.2.0" - -[[projects]] - digest = "1:e22af8c7518e1eab6f2eab2b7d7558927f816262586cd6ed9f349c97a6c285c4" - name = "github.com/jmespath/go-jmespath" - packages = ["."] - pruneopts = "UT" - revision = "0b12d6b5" - -[[projects]] - digest = "1:0a69a1c0db3591fcefb47f115b224592c8dfa4368b7ba9fae509d5e16cdc95c8" - name = "github.com/konsorten/go-windows-terminal-sequences" - packages = ["."] - pruneopts = "UT" - revision = "5c8c8bd35d3832f5d134ae1e1e375b69a4d25242" - version = "v1.0.1" - -[[projects]] - digest = "1:f02dbf2124e5dfb5305a6c3c8957a41d54a89d2a3ef60f030769f86e7851d5f5" - name = "github.com/kshvakov/clickhouse" - packages = [ - ".", - "lib/binary", - "lib/column", - "lib/data", - "lib/protocol", - "lib/types", - "lib/writebuffer", - ] - pruneopts = "UT" - revision = "aeedb7b9d0584f393905447021238b5c6e9c5154" - version = "v1.3.4" - -[[projects]] - digest = "1:8ef506fc2bb9ced9b151dafa592d4046063d744c646c1bbe801982ce87e4bc24" - name = "github.com/lib/pq" - packages = [ - ".", - "oid", - ] - pruneopts = "UT" - revision = "4ded0e9383f75c197b3a2aaa6d590ac52df6fd79" - version = "v1.0.0" - -[[projects]] - digest = "1:3cafc6a5a1b8269605d9df4c6956d43d8011fc57f266ca6b9d04da6c09dee548" - name = "github.com/mattn/go-sqlite3" - packages = ["."] - pruneopts = "UT" - revision = "25ecb14adfc7543176f7d85291ec7dba82c6f7e4" - version = "v1.9.0" - -[[projects]] - digest = "1:820eeb72f78947f9b2e87bd99a57b5cc791c8fb47676a5c3824d408441ab1546" - name = "github.com/mongodb/mongo-go-driver" - packages = [ - "bson", - "bson/bsoncodec", - "bson/bsonrw", - "bson/bsontype", - "bson/primitive", - "event", - "internal", - "mongo", - "mongo/options", - "mongo/readconcern", - "mongo/readpref", - "mongo/writeconcern", - "tag", - "version", - "x/bsonx", - "x/bsonx/bsoncore", - "x/mongo/driver", - "x/mongo/driver/auth", - "x/mongo/driver/auth/internal/gssapi", - "x/mongo/driver/session", - "x/mongo/driver/topology", - "x/mongo/driver/uuid", - "x/network/address", - "x/network/command", - "x/network/compressor", - "x/network/connection", - "x/network/connstring", - "x/network/description", - "x/network/result", - "x/network/wiremessage", - ] - pruneopts = "UT" - revision = "29905d4bda472574c8b499e2f93b5b2747d8fbd7" - version = "v0.1.0" - -[[projects]] - digest = "1:ee4d4af67d93cc7644157882329023ce9a7bcfce956a079069a9405521c7cc8d" - name = "github.com/opencontainers/go-digest" - packages = ["."] - pruneopts = "UT" - revision = "279bed98673dd5bef374d3b6e4b09e2af76183bf" - version = "v1.0.0-rc1" - -[[projects]] - digest = "1:11db38d694c130c800d0aefb502fb02519e514dc53d9804ce51d1ad25ec27db6" - name = "github.com/opencontainers/image-spec" - packages = [ - "specs-go", - "specs-go/v1", - ] - pruneopts = "UT" - revision = "d60099175f88c47cd379c4738d158884749ed235" - version = "v1.0.1" - -[[projects]] - digest = "1:40e195917a951a8bf867cd05de2a46aaf1806c50cf92eebf4c16f78cd196f747" - name = "github.com/pkg/errors" - packages = ["."] - pruneopts = "UT" - revision = "645ef00459ed84a119197bfb8d8205042c6df63d" - version = "v0.8.0" - -[[projects]] - digest = "1:87c2e02fb01c27060ccc5ba7c5a407cc91147726f8f40b70cceeedbc52b1f3a8" - name = "github.com/sirupsen/logrus" - packages = ["."] - pruneopts = "UT" - revision = "e1e72e9de974bd926e5c56f83753fba2df402ce5" - version = "v1.3.0" - -[[projects]] - branch = "master" - digest = "1:40fdfd6ab85ca32b6935853bbba35935dcb1d796c8135efd85947566c76e662e" - name = "github.com/xdg/scram" - packages = ["."] - pruneopts = "UT" - revision = "7eeb5667e42c09cb51bf7b7c28aea8c56767da90" - -[[projects]] - branch = "master" - digest = "1:f5c1d04bc09c644c592b45b9f0bad4030521b1a7d11c7dadbb272d9439fa6e8e" - name = "github.com/xdg/stringprep" - packages = ["."] - pruneopts = "UT" - revision = "73f8eece6fdcd902c185bf651de50f3828bed5ed" - -[[projects]] - digest = "1:8e7fcf54cc7c0c3aba7801812ae70343585b3cb663f6cb11ad50c0c28552f359" - name = "go.opencensus.io" - packages = [ - ".", - "internal", - "internal/tagencoding", - "plugin/ocgrpc", - "plugin/ochttp", - "plugin/ochttp/propagation/b3", - "stats", - "stats/internal", - "stats/view", - "tag", - "trace", - "trace/internal", - "trace/propagation", - "trace/tracestate", - ] - pruneopts = "UT" - revision = "79993219becaa7e29e3b60cb67f5b8e82dee11d6" - version = "v0.17.0" - -[[projects]] - branch = "master" - digest = "1:9ff2b9f8d4e47013a213b9ea0d850ed787c51f5eab2038842d82397ad85a19c1" - name = "golang.org/x/crypto" - packages = [ - "pbkdf2", - "ssh/terminal", - ] - pruneopts = "UT" - revision = "8d7daa0c54b357f3071e11eaef7efc4e19a417e2" - -[[projects]] - branch = "master" - digest = "1:56975096c005d57a2c9c2faefbec772c44c29c084af35facbfca85961469ff6d" - name = "golang.org/x/net" - packages = [ - "context", - "context/ctxhttp", - "http/httpguts", - "http2", - "http2/hpack", - "idna", - "internal/socks", - "internal/timeseries", - "proxy", - "trace", - ] - pruneopts = "UT" - revision = "49bb7cea24b1df9410e1712aa6433dae904ff66a" - -[[projects]] - branch = "master" - digest = "1:39273b3e6c96fed52bd8f7793fc463c40b1a27a7caa51302b81d45306b9646b4" - name = "golang.org/x/oauth2" - packages = [ - ".", - "google", - "internal", - "jws", - "jwt", - ] - pruneopts = "UT" - revision = "c57b0facaced709681d9f90397429b9430a74754" - -[[projects]] - branch = "master" - digest = "1:75515eedc0dc2cb0b40372008b616fa2841d831c63eedd403285ff286c593295" - name = "golang.org/x/sync" - packages = ["semaphore"] - pruneopts = "UT" - revision = "37e7f081c4d4c64e13b10787722085407fe5d15f" - -[[projects]] - branch = "master" - digest = "1:f5aa274a0377f85735edc7fedfb0811d3cbc20af91633797cb359e29c3272271" - name = "golang.org/x/sys" - packages = [ - "unix", - "windows", - ] - pruneopts = "UT" - revision = "fa43e7bc11baaae89f3f902b2b4d832b68234844" - -[[projects]] - digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18" - name = "golang.org/x/text" - packages = [ - "collate", - "collate/build", - "internal/colltab", - "internal/gen", - "internal/tag", - "internal/triegen", - "internal/ucd", - "language", - "secure/bidirule", - "transform", - "unicode/bidi", - "unicode/cldr", - "unicode/norm", - "unicode/rangetable", - ] - pruneopts = "UT" - revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0" - version = "v0.3.0" - -[[projects]] - branch = "master" - digest = "1:fc393bc931c39e70d322b5158a90ef38e1a1617afdffb4efaaa4567f5c4f0410" - name = "golang.org/x/tools" - packages = [ - "godoc/vfs", - "godoc/vfs/mapfs", - ] - pruneopts = "UT" - revision = "8919434dde1e35f7b9ef589ecb80ec0833f021bc" - -[[projects]] - branch = "master" - digest = "1:c8a31b4403741a053bf08594b91189ec63c96b041bdfddef06a272f42549f2cf" - name = "google.golang.org/api" - packages = [ - "gensupport", - "googleapi", - "googleapi/internal/uritemplates", - "googleapi/transport", - "internal", - "iterator", - "option", - "storage/v1", - "transport", - "transport/grpc", - "transport/http", - "transport/http/internal/propagation", - ] - pruneopts = "UT" - revision = "625cd1887957946515db468ce519bb71fa31fc7f" - -[[projects]] - digest = "1:d2cfb607095cee410f25a3c04eed77f76c4721d1bb0cbc894f5d8624b33394c8" - name = "google.golang.org/appengine" - packages = [ - ".", - "cloudsql", - "internal", - "internal/app_identity", - "internal/base", - "internal/datastore", - "internal/log", - "internal/modules", - "internal/remote_api", - "internal/socket", - "internal/urlfetch", - "socket", - "urlfetch", - ] - pruneopts = "UT" - revision = "ae0ab99deb4dc413a2b4bd6c8bdd0eb67f1e4d06" - version = "v1.2.0" - -[[projects]] - branch = "master" - digest = "1:315f8fe35ad73727d15b20fc3a533e7ab9ea8f0c3ff6441753d04086e5ca5003" - name = "google.golang.org/genproto" - packages = [ - "googleapis/api/annotations", - "googleapis/iam/v1", - "googleapis/longrunning", - "googleapis/rpc/code", - "googleapis/rpc/errdetails", - "googleapis/rpc/status", - "googleapis/spanner/admin/database/v1", - "googleapis/spanner/v1", - ] - pruneopts = "UT" - revision = "af9cb2a35e7f169ec875002c1829c9b315cddc04" - -[[projects]] - digest = "1:4ad047d772a7d4841687df9534a767a9e243885ed6d7d2ced6af5995a5dc44b3" - name = "google.golang.org/grpc" - packages = [ - ".", - "balancer", - "balancer/base", - "balancer/roundrobin", - "codes", - "connectivity", - "credentials", - "credentials/oauth", - "encoding", - "encoding/proto", - "grpclog", - "internal", - "internal/backoff", - "internal/channelz", - "internal/envconfig", - "internal/grpcrand", - "internal/transport", - "keepalive", - "metadata", - "naming", - "peer", - "resolver", - "resolver/dns", - "resolver/passthrough", - "stats", - "status", - "tap", - ] - pruneopts = "UT" - revision = "8dea3dc473e90c8179e519d91302d0597c0ca1d1" - version = "v1.15.0" - -[[projects]] - digest = "1:2d1fbdc6777e5408cabeb02bf336305e724b925ff4546ded0fa8715a7267922a" - name = "gopkg.in/inf.v0" - packages = ["."] - pruneopts = "UT" - revision = "d2d2541c53f18d2a059457998ce2876cc8e67cbf" - version = "v0.9.1" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "cloud.google.com/go/spanner", - "cloud.google.com/go/spanner/admin/database/apiv1", - "cloud.google.com/go/storage", - "github.com/aws/aws-sdk-go/aws", - "github.com/aws/aws-sdk-go/aws/session", - "github.com/aws/aws-sdk-go/service/s3", - "github.com/aws/aws-sdk-go/service/s3/s3iface", - "github.com/cockroachdb/cockroach-go/crdb", - "github.com/cznic/ql/driver", - "github.com/dhui/dktest", - "github.com/docker/docker/api/types", - "github.com/docker/docker/api/types/container", - "github.com/docker/docker/api/types/network", - "github.com/docker/docker/client", - "github.com/fsouza/fake-gcs-server/fakestorage", - "github.com/go-sql-driver/mysql", - "github.com/gocql/gocql", - "github.com/google/go-github/github", - "github.com/kshvakov/clickhouse", - "github.com/lib/pq", - "github.com/mattn/go-sqlite3", - "github.com/mongodb/mongo-go-driver/bson", - "github.com/mongodb/mongo-go-driver/mongo", - "github.com/mongodb/mongo-go-driver/x/network/connstring", - "golang.org/x/net/context", - "golang.org/x/tools/godoc/vfs", - "golang.org/x/tools/godoc/vfs/mapfs", - "google.golang.org/api/iterator", - "google.golang.org/genproto/googleapis/spanner/admin/database/v1", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/vendor/github.com/golang-migrate/migrate/v4/Gopkg.toml b/vendor/github.com/golang-migrate/migrate/v4/Gopkg.toml deleted file mode 100644 index 197b58f7d..000000000 --- a/vendor/github.com/golang-migrate/migrate/v4/Gopkg.toml +++ /dev/null @@ -1,106 +0,0 @@ -# Gopkg.toml example -# -# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html -# for detailed Gopkg.toml documentation. -# -# required = ["github.com/user/thing/cmd/thing"] -# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] -# -# [[constraint]] -# name = "github.com/user/project" -# version = "1.0.0" -# -# [[constraint]] -# name = "github.com/user/project2" -# branch = "dev" -# source = "github.com/myfork/project2" -# -# [[override]] -# name = "github.com/x/y" -# version = "2.4.0" -# -# [prune] -# non-go = false -# go-tests = true -# unused-packages = true - - -[[constraint]] - name = "github.com/aws/aws-sdk-go" - version = "1.15.34" - -[[constraint]] - branch = "master" - name = "github.com/cockroachdb/cockroach-go" - -[[constraint]] - name = "github.com/cznic/ql" - version = "1.2.0" - -[[constraint]] - name = "github.com/docker/docker" - revision = "453f2b8b40b923862ce1c08c11531ff5042770f1" - -[[constraint]] - name = "github.com/fsouza/fake-gcs-server" - version = "1.2.0" - -[[constraint]] - name = "github.com/go-sql-driver/mysql" - version = "v1.4.0" - -[[constraint]] - branch = "master" - name = "github.com/gocql/gocql" - -[[constraint]] - name = "github.com/google/go-github" - version = "17.0.0" - -[[constraint]] - name = "github.com/kshvakov/clickhouse" - version = "1.3.4" - -[[constraint]] - name = "github.com/lib/pq" - version = "1.0.0" - -[[constraint]] - name = "github.com/mattn/go-sqlite3" - version = "1.9.0" - -[[constraint]] - branch = "master" - name = "golang.org/x/net" - -[[constraint]] - branch = "master" - name = "google.golang.org/api" - -[[constraint]] - branch = "master" - name = "google.golang.org/genproto" - -[[constraint]] - name = "github.com/mongodb/mongo-go-driver" - version = "0.1.0" - -[[override]] - name = "cloud.google.com/go" - version = "0.27.0" - -[[override]] - branch = "master" - name = "golang.org/x/tools" - -[[override]] - branch = "master" - name = "github.com/docker/distribution" - -[prune] - go-tests = true - unused-packages = true - -[[constraint]] - name = "github.com/dhui/dktest" - version = "0.3.0" diff --git a/vendor/github.com/golang-migrate/migrate/v4/Makefile b/vendor/github.com/golang-migrate/migrate/v4/Makefile index 0cb226e8e..b1afc221b 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/Makefile +++ b/vendor/github.com/golang-migrate/migrate/v4/Makefile @@ -1,4 +1,4 @@ -SOURCE ?= file go_bindata github aws_s3 google_cloud_storage godoc_vfs +SOURCE ?= file go_bindata github aws_s3 google_cloud_storage godoc_vfs gitlab DATABASE ?= postgres mysql redshift cassandra spanner cockroachdb clickhouse mongodb VERSION ?= $(shell git describe --tags 2>/dev/null | cut -c 2-) TEST_FLAGS ?= diff --git a/vendor/github.com/golang-migrate/migrate/v4/README.md b/vendor/github.com/golang-migrate/migrate/v4/README.md index e7c46fc44..a55726674 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/README.md +++ b/vendor/github.com/golang-migrate/migrate/v4/README.md @@ -3,7 +3,7 @@ [![Coverage Status](https://img.shields.io/coveralls/github/golang-migrate/migrate/master.svg)](https://coveralls.io/github/golang-migrate/migrate?branch=master) [![packagecloud.io](https://img.shields.io/badge/deb-packagecloud.io-844fec.svg)](https://packagecloud.io/golang-migrate/migrate?filter=debs) [![Docker Pulls](https://img.shields.io/docker/pulls/migrate/migrate.svg)](https://hub.docker.com/r/migrate/migrate/) -![Supported Go Versions](https://img.shields.io/badge/Go-1.10%2C%201.11-lightgrey.svg) +![Supported Go Versions](https://img.shields.io/badge/Go-1.11%2C%201.12-lightgrey.svg) [![GitHub Release](https://img.shields.io/github/release/golang-migrate/migrate.svg)](https://github.com/golang-migrate/migrate/releases) @@ -36,6 +36,7 @@ Database drivers run migrations. [Add a new database?](database/driver.go) * [Google Cloud Spanner](database/spanner) * [CockroachDB](database/cockroachdb) * [ClickHouse](database/clickhouse) + * [Firebird](database/firebird) ### Database URLs @@ -64,6 +65,7 @@ Source drivers read migrations from local or remote sources. [Add a new source?] * [Filesystem](source/file) - read from fileystem * [Go-Bindata](source/go_bindata) - read from embedded binary data ([jteeuwen/go-bindata](https://github.com/jteeuwen/go-bindata)) * [Github](source/github) - read from remote Github repositories + * [Gitlab](source/gitlab) - read from remote Gitlab repositories * [AWS S3](source/aws_s3) - read from Amazon Web Services S3 * [Google Cloud Storage](source/google_cloud_storage) - read from Google Cloud Platform Storage @@ -86,7 +88,7 @@ $ migrate -source file://path/to/migrations -database postgres://localhost:5432/ ### Docker usage ``` -$ docker run -v {{ migration dir }}:/migrations --network host migrate/migrate +$ docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2 ``` @@ -148,13 +150,13 @@ Each migration has an up and down migration. [Why?](FAQ.md#why-two-separate-file [Best practices: How to write migrations.](MIGRATIONS.md) -## Supported Major Versions +## Versions -Version | Go Modules | Min Go Version | Import | Notes ---------|------------|----------------|--------|------ -**master** | :white_check_mark: | 1.10.3 | `import "github.com/golang-migrate/migrate/v4"` | New features and bug fixes arrive here first | -**v4** | :white_check_mark: | 1.10.3 | `import "github.com/golang-migrate/migrate/v4"` | | -**v3** | :x: | 1.10 | `import "github.com/golang-migrate/migrate"` (with package manager) or `import "gopkg.in/golang-migrate/migrate.v3"` (not recommended) | Only security fixes are backported. Only use if your project is not using Go modules. | +Version | Supported? | Import | Notes +--------|------------|--------|------ +**master** | :white_check_mark: | `import "github.com/golang-migrate/migrate/v4"` | New features and bug fixes arrive here first | +**v4** | :white_check_mark: | `import "github.com/golang-migrate/migrate/v4"` | Used for stable releases | +**v3** | :x: | `import "github.com/golang-migrate/migrate"` (with package manager) or `import "gopkg.in/golang-migrate/migrate.v3"` (not recommended) | **DO NOT USE** - No longer supported | ## Development and Contributing diff --git a/vendor/github.com/golang-migrate/migrate/v4/database/driver.go b/vendor/github.com/golang-migrate/migrate/v4/database/driver.go index fa914c5d0..901e5dd66 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/database/driver.go +++ b/vendor/github.com/golang-migrate/migrate/v4/database/driver.go @@ -74,6 +74,8 @@ type Driver interface { Version() (version int, dirty bool, err error) // Drop deletes everything in the database. + // Note that this is a breaking action, a new call to Open() is necessary to + // ensure subsequent calls work as expected. Drop() error } diff --git a/vendor/github.com/golang-migrate/migrate/v4/database/sqlite3/sqlite3.go b/vendor/github.com/golang-migrate/migrate/v4/database/sqlite3/sqlite3.go index 176ee0d43..9cedc6bf2 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/database/sqlite3/sqlite3.go +++ b/vendor/github.com/golang-migrate/migrate/v4/database/sqlite3/sqlite3.go @@ -3,13 +3,15 @@ package sqlite3 import ( "database/sql" "fmt" - "github.com/golang-migrate/migrate/v4" - "github.com/golang-migrate/migrate/v4/database" - _ "github.com/mattn/go-sqlite3" "io" "io/ioutil" nurl "net/url" "strings" + + "github.com/golang-migrate/migrate/v4" + "github.com/golang-migrate/migrate/v4/database" + "github.com/hashicorp/go-multierror" + _ "github.com/mattn/go-sqlite3" ) func init() { @@ -43,6 +45,7 @@ func WithInstance(instance *sql.DB, config *Config) (database.Driver, error) { if err := instance.Ping(); err != nil { return nil, err } + if len(config.MigrationsTable) == 0 { config.MigrationsTable = DefaultMigrationsTable } @@ -57,12 +60,28 @@ func WithInstance(instance *sql.DB, config *Config) (database.Driver, error) { return mx, nil } -func (m *Sqlite) ensureVersionTable() error { +// ensureVersionTable checks if versions table exists and, if not, creates it. +// Note that this function locks the database, which deviates from the usual +// convention of "caller locks" in the Sqlite type. +func (m *Sqlite) ensureVersionTable() (err error) { + if err = m.Lock(); err != nil { + return err + } + + defer func() { + if e := m.Unlock(); e != nil { + if err == nil { + err = e + } else { + err = multierror.Append(err, e) + } + } + }() query := fmt.Sprintf(` CREATE TABLE IF NOT EXISTS %s (version uint64,dirty bool); CREATE UNIQUE INDEX IF NOT EXISTS version_unique ON %s (version); - `, DefaultMigrationsTable, DefaultMigrationsTable) + `, m.config.MigrationsTable, m.config.MigrationsTable) if _, err := m.db.Exec(query); err != nil { return err @@ -99,13 +118,17 @@ func (m *Sqlite) Close() error { return m.db.Close() } -func (m *Sqlite) Drop() error { +func (m *Sqlite) Drop() (err error) { query := `SELECT name FROM sqlite_master WHERE type = 'table';` tables, err := m.db.Query(query) if err != nil { return &database.Error{OrigErr: err, Query: []byte(query)} } - defer tables.Close() + defer func() { + if errClose := tables.Close(); errClose != nil { + err = multierror.Append(err, errClose) + } + }() tableNames := make([]string, 0) for tables.Next() { var tableName string @@ -124,9 +147,6 @@ func (m *Sqlite) Drop() error { return &database.Error{OrigErr: err, Query: []byte(query)} } } - if err := m.ensureVersionTable(); err != nil { - return err - } query := "VACUUM" _, err = m.db.Query(query) if err != nil { @@ -169,7 +189,9 @@ func (m *Sqlite) executeQuery(query string) error { return &database.Error{OrigErr: err, Err: "transaction start failed"} } if _, err := tx.Exec(query); err != nil { - tx.Rollback() + if errRollback := tx.Rollback(); errRollback != nil { + err = multierror.Append(err, errRollback) + } return &database.Error{OrigErr: err, Query: []byte(query)} } if err := tx.Commit(); err != nil { @@ -192,7 +214,9 @@ func (m *Sqlite) SetVersion(version int, dirty bool) error { if version >= 0 { query := fmt.Sprintf(`INSERT INTO %s (version, dirty) VALUES (%d, '%t')`, m.config.MigrationsTable, version, dirty) if _, err := tx.Exec(query); err != nil { - tx.Rollback() + if errRollback := tx.Rollback(); errRollback != nil { + err = multierror.Append(err, errRollback) + } return &database.Error{OrigErr: err, Query: []byte(query)} } } diff --git a/vendor/github.com/golang-migrate/migrate/v4/database/util.go b/vendor/github.com/golang-migrate/migrate/v4/database/util.go index f0ffd615f..976ad3534 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/database/util.go +++ b/vendor/github.com/golang-migrate/migrate/v4/database/util.go @@ -6,14 +6,14 @@ import ( "strings" ) -const advisoryLockIdSalt uint = 1486364155 +const advisoryLockIDSalt uint = 1486364155 // GenerateAdvisoryLockId inspired by rails migrations, see https://goo.gl/8o9bCT -func GenerateAdvisoryLockId(databaseName string, additionalNames ...string) (string, error) { +func GenerateAdvisoryLockId(databaseName string, additionalNames ...string) (string, error) { // nolint: golint if len(additionalNames) > 0 { databaseName = strings.Join(append(additionalNames, databaseName), "\x00") } sum := crc32.ChecksumIEEE([]byte(databaseName)) - sum = sum * uint32(advisoryLockIdSalt) - return fmt.Sprintf("%v", sum), nil + sum = sum * uint32(advisoryLockIDSalt) + return fmt.Sprint(sum), nil } diff --git a/vendor/github.com/golang-migrate/migrate/v4/go.mod b/vendor/github.com/golang-migrate/migrate/v4/go.mod index bb6ae94a1..58df5095c 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/go.mod +++ b/vendor/github.com/golang-migrate/migrate/v4/go.mod @@ -1,8 +1,8 @@ module github.com/golang-migrate/migrate/v4 require ( - cloud.google.com/go v0.34.0 - github.com/aws/aws-sdk-go v1.15.54 + cloud.google.com/go v0.37.4 + github.com/aws/aws-sdk-go v1.17.7 github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932 // indirect github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect github.com/cockroachdb/apd v1.1.0 // indirect @@ -10,43 +10,45 @@ require ( github.com/cznic/ql v1.2.0 github.com/dhui/dktest v0.3.0 github.com/docker/docker v0.7.3-0.20190108045446-77df18c24acf - github.com/fsouza/fake-gcs-server v1.3.0 - github.com/go-ini/ini v1.39.0 // indirect + github.com/fsouza/fake-gcs-server v1.7.0 github.com/go-sql-driver/mysql v1.4.1 - github.com/go-stack/stack v1.8.0 // indirect - github.com/gocql/gocql v0.0.0-20181124151448-70385f88b28b + github.com/gocql/gocql v0.0.0-20190301043612-f6df8288f9b4 + github.com/gogo/protobuf v1.2.1 // indirect + github.com/golang/protobuf v1.3.1 // indirect + github.com/golang/snappy v0.0.1 // indirect github.com/google/go-github v17.0.0+incompatible - github.com/google/go-querystring v1.0.0 // indirect - github.com/google/martian v2.1.0+incompatible // indirect - github.com/gopherjs/gopherjs v0.0.0-20181004151105-1babbf986f6f // indirect + github.com/hashicorp/go-multierror v1.0.0 + github.com/hashicorp/golang-lru v0.5.1 // indirect github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 // indirect github.com/jackc/pgx v3.2.0+incompatible // indirect - github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af // indirect - github.com/jtolds/gls v4.2.1+incompatible // indirect + github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect + github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect github.com/kr/pretty v0.1.0 // indirect - github.com/kshvakov/clickhouse v1.3.4 + github.com/kshvakov/clickhouse v1.3.5 github.com/lib/pq v1.0.0 - github.com/mattn/go-sqlite3 v1.9.0 - github.com/mongodb/mongo-go-driver v0.1.0 + github.com/mattn/go-sqlite3 v1.10.0 + github.com/mongodb/mongo-go-driver v0.3.0 + github.com/nakagami/firebirdsql v0.0.0-20190310045651-3c02a58cfed8 github.com/pkg/errors v0.8.1 // indirect github.com/satori/go.uuid v1.2.0 // indirect github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 // indirect - github.com/sirupsen/logrus v1.3.0 // indirect - github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d // indirect - github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a // indirect + github.com/sirupsen/logrus v1.4.1 // indirect github.com/stretchr/testify v1.3.0 // indirect github.com/tidwall/pretty v0.0.0-20180105212114-65a9db5fad51 // indirect + github.com/xanzy/go-gitlab v0.15.0 github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c // indirect github.com/xdg/stringprep v1.0.0 // indirect - golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc // indirect - golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e - golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890 // indirect - golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 // indirect - golang.org/x/sys v0.0.0-20190108104531-7fbe1cd0fcc2 // indirect - golang.org/x/tools v0.0.0-20190108222858-421f03a57a64 - google.golang.org/api v0.0.0-20181015145326-625cd1887957 - google.golang.org/appengine v1.4.0 // indirect - google.golang.org/genproto v0.0.0-20190108161440-ae2f86662275 + gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b // indirect + golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734 // indirect + golang.org/x/net v0.0.0-20190424112056-4829fb13d2c6 + golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a // indirect + golang.org/x/sys v0.0.0-20190426135247-a129542de9ae // indirect + golang.org/x/text v0.3.2 // indirect + golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 // indirect + golang.org/x/tools v0.0.0-20190425222832-ad9eeb80039a + google.golang.org/api v0.4.0 + google.golang.org/appengine v1.5.0 // indirect + google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb + google.golang.org/grpc v1.20.1 // indirect gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect - gopkg.in/ini.v1 v1.39.0 // indirect ) diff --git a/vendor/github.com/golang-migrate/migrate/v4/go.sum b/vendor/github.com/golang-migrate/migrate/v4/go.sum index 3acac6aa2..52d422433 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/go.sum +++ b/vendor/github.com/golang-migrate/migrate/v4/go.sum @@ -1,18 +1,21 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.28.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -contrib.go.opencensus.io/exporter/stackdriver v0.6.0/go.mod h1:QeFzMJDAw8TXt5+aRaSuE8l5BwaMIOIlaVkBOPRuMuw= -git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= -git.apache.org/thrift.git v0.0.0-20180924222215-a9235805469b/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +cloud.google.com/go v0.37.4 h1:glPeL3BQJsbF6aIIYfZizMwc5LTYz250bDMjttbBGAU= +cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/Microsoft/go-winio v0.4.11 h1:zoIOcVf0xPN1tnMVbTtEdI+P8OofVk3NObnwOQ6nK2Q= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/aws/aws-sdk-go v1.15.54 h1:yNFryYgHYlEuNnMM74EZgAaOM2BsJvu77/ev9I9GHlU= -github.com/aws/aws-sdk-go v1.15.54/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/aws/aws-sdk-go v1.17.7 h1:/4+rDPe0W95KBmNGYCG+NUvdL8ssPYBMxL+aSCg6nIA= +github.com/aws/aws-sdk-go v1.17.7/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932 h1:mXoPYz/Ul5HYEDvkta6I8/rnYM5gSdSV2tJ6XbZuEtY= github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k= @@ -50,7 +53,6 @@ github.com/dhui/dktest v0.3.0 h1:kwX5a7EkLcjo7VpsPQSYJcKGbXBXdjI9FGjuUj1jn6I= github.com/dhui/dktest v0.3.0/go.mod h1:cyzIUfGsBEbZ6BT7tnXqAShHSXCZhSNmFl70sZ7c1yc= github.com/docker/distribution v2.7.0+incompatible h1:neUDAlf3wX6Ml4HdqTrbcOHXtfRN0TFIwt6YFL7N9RU= github.com/docker/distribution v2.7.0+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v0.7.3-0.20190103212154-2b7e084dc98b h1:Y0C03XhDDcak1Ow6em58mBJmUJjxaMfB5sFttITXE0Q= github.com/docker/docker v0.7.3-0.20190103212154-2b7e084dc98b/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v0.7.3-0.20190108045446-77df18c24acf h1:2v/98rHzs3v6X0AHtoCH9u+e56SdnpogB1Z2fFe1KqQ= github.com/docker/docker v0.7.3-0.20190108045446-77df18c24acf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= @@ -58,30 +60,38 @@ github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKoh github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.3.3 h1:Xk8S3Xj5sLGlG5g67hJmYMmUgXv5N4PhkjJHHqrwnTk= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712 h1:aaQcKT9WumO6JEJcRyTqFVq4XUZiUcKR2/GI31TOcz8= github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/fsouza/fake-gcs-server v1.3.0 h1:f2mbomatUsbw8NRY7rzqiiWNn4BRM+Jredz0Pt70Usg= -github.com/fsouza/fake-gcs-server v1.3.0/go.mod h1:Lq+43m2znsXfDKHnQMfdA0HpYYAEJsfizsbpk5k3TLo= -github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= -github.com/go-ini/ini v1.39.0 h1:/CyW/jTlZLjuzy52jc1XnhJm6IUKEuunpJFpecywNeI= -github.com/go-ini/ini v1.39.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsouza/fake-gcs-server v1.7.0 h1:Un0BXUXrRWYSmYyC1Rqm2e2WJfTPyDy/HGMz31emTi8= +github.com/fsouza/fake-gcs-server v1.7.0/go.mod h1:5XIRs4YvwNbNoz+1JF8j6KLAyDh7RHGAyAK3EP2EsNk= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gocql/gocql v0.0.0-20181124151448-70385f88b28b h1:dnUw9Ih14dCKzbtZxm+pwQRYIb+9ypiwtZgsCQN4zmg= -github.com/gocql/gocql v0.0.0-20181124151448-70385f88b28b/go.mod h1:4Fw1eo5iaEhDUs8XyuhSVCVy52Jq3L+/3GJgYkwc+/0= -github.com/gogo/protobuf v1.2.0 h1:xU6/SpYbvkNYiptHJYEDRseDLvYE7wSqhYYNy0QSUzI= +github.com/gocql/gocql v0.0.0-20190301043612-f6df8288f9b4 h1:vF83LI8tAakwEwvWZtrIEx7pOySacl2TOxx6eXk4ePo= +github.com/gocql/gocql v0.0.0-20190301043612-f6df8288f9b4/go.mod h1:4Fw1eo5iaEhDUs8XyuhSVCVy52Jq3L+/3GJgYkwc+/0= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= @@ -90,149 +100,201 @@ github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASu github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/googleapis/gax-go v2.0.0+incompatible h1:j0GKcs05QVmm7yesiZq2+9cxHkNK9YM6zKx4D2qucQU= -github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/gopherjs/gopherjs v0.0.0-20181004151105-1babbf986f6f h1:JJ2EP5vV3LAD2U1CxQtD7PTOO15Y96kXmKDz7TjxGHs= -github.com/gopherjs/gopherjs v0.0.0-20181004151105-1babbf986f6f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/googleapis/gax-go/v2 v2.0.4 h1:hU4mGcQI4DaAYW+IbTun+2qEZVFxK0ySjQLTbS0VQKc= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2 h1:Pgr17XVTNXAk3q/r4CpKzC5xBM/qW1uVLV+IhRZpIIk= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.1 h1:Dw4jY2nghMMRsh1ol8dv1axHkDwMQK2DHerMNJsIpJU= +github.com/gorilla/mux v1.7.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 h1:vr3AYkKovP8uR8AvSGGUK1IDqRa5lAAvEkZG1LKaCRc= github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= github.com/jackc/pgx v3.2.0+incompatible h1:0Vihzu20St42/UDsvZGdNE6jak7oi/UOeMzwMPHkgFY= github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE= -github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kshvakov/clickhouse v1.3.4 h1:p/yqvOmeDRH+KyCH6NtwExelr4rimLBBfKW2a/wBN94= -github.com/kshvakov/clickhouse v1.3.4/go.mod h1:DMzX7FxRymoNkVgizH0DWAL8Cur7wHLgx3MUnGwJqpE= +github.com/kshvakov/clickhouse v1.3.5 h1:PDTYk9VYgbjPAWry3AoDREeMgOVUFij6bh6IjlloHL0= +github.com/kshvakov/clickhouse v1.3.5/go.mod h1:DMzX7FxRymoNkVgizH0DWAL8Cur7wHLgx3MUnGwJqpE= github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/mattn/go-sqlite3 v1.9.0 h1:pDRiWfl+++eC2FEFRy6jXmQlvp4Yh3z1MJKg4UeYM/4= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-sqlite3 v1.10.0 h1:jbhqpg7tQe4SupckyijYiy0mJJ/pRyHvXf7JdWK860o= +github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mongodb/mongo-go-driver v0.1.0 h1:LcpPFw0tNumIAakvNrkI9S9wdX0iOxvMLw/+hcAdHaU= -github.com/mongodb/mongo-go-driver v0.1.0/go.mod h1:NK/HWDIIZkaYsnYa0hmtP443T5ELr0KDecmIioVuuyU= +github.com/mongodb/mongo-go-driver v0.3.0 h1:00tKWMrabkVU1e57/TTP4ZBIfhn/wmjlSiRnIM9d0T8= +github.com/mongodb/mongo-go-driver v0.3.0/go.mod h1:NK/HWDIIZkaYsnYa0hmtP443T5ELr0KDecmIioVuuyU= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nakagami/firebirdsql v0.0.0-20190310045651-3c02a58cfed8 h1:P48LjvUQpTReR3TQRbxSeSBsMXzfK0uol7eRcr7VBYQ= +github.com/nakagami/firebirdsql v0.0.0-20190310045651-3c02a58cfed8/go.mod h1:86wM1zFnC6/uDBfZGNwB65O+pR2OFi5q/YQaEUid1qA= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= -github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20180920065004-418d78d0b9a7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 h1:pntxY8Ary0t43dCZ5dqY4YTJCObLY1kIXl0uzMv+7DE= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= -github.com/sirupsen/logrus v1.2.0 h1:juTguoYk5qI21pwyTXY3B3Y5cOTH3ZUyZCg1v/mihuo= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.3.0 h1:hI/7Q+DtNZ2kINb6qt/lS+IyXnHQe9e90POfeewL/ME= -github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a h1:JSvGDIbmil4Ui/dDdFBExb7/cmkNjyX5F97oglmvCDo= -github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= +github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/tidwall/pretty v0.0.0-20180105212114-65a9db5fad51 h1:BP2bjP495BBPaBcS5rmqviTfrOkN5rO5ceKAMRZCRFc= github.com/tidwall/pretty v0.0.0-20180105212114-65a9db5fad51/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/xanzy/go-gitlab v0.15.0 h1:rWtwKTgEnXyNUGrOArN7yyc3THRkpYcKXIXia9abywQ= +github.com/xanzy/go-gitlab v0.15.0/go.mod h1:8zdQa/ri1dfn8eS3Ir1SyfvOKlw7WBJ8DVThkpGiXrs= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c h1:u40Z8hqBAAQyv+vATcGgV0YCnDjqSL7/q/JyPhhJSPk= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v1.0.0 h1:d9X0esnoa3dFsV0FG35rAT0RIhYFlPq7MiP+DW89La0= github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= -go.opencensus.io v0.17.0 h1:2Cu88MYg+1LU+WVD+NWwYhyP0kKgRlN9QjWGaX0jKTE= -go.opencensus.io v0.17.0/go.mod h1:mp1VrMQxhlqqDpKvH4UcQUa4YwlzNmymAjPrDdfxNpI= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793 h1:u+LnwYTOOW7Ukr/fppxEb1Nwz0AtPflrblfvUudpo+I= +gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b h1:7gd+rd8P3bqcn/96gOZa3F5dpJr/vEiDQYlNb/y2uNs= +gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b/go.mod h1:T3BPAOm2cqquPa0MKWeNkmOM5RQsRhkrwMWonFMN7fE= +go.opencensus.io v0.20.1 h1:pMEjRZ1M4ebWGikflH7nQpV6+Zr88KBMA2XJD3sbijw= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0 h1:mU6zScU4U1YAFPHEHYk+3JC4SY7JxgkqS10ZOSyksNg= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc h1:F5tKCVGp+MUAHhKp5MZtGqAlGX3+oCsiL1Q629FL90M= -golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734 h1:p/H982KKEjUnLJkM3tt/LemDnOc1GiZL5FCVlORJ5zo= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180925072008-f04abc6bdfa7/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3 h1:eH6Eip3UpmR+yM/qI9Ijluzb1bNv/cAU/n+6l8tRSis= +golang.org/x/net v0.0.0-20181108082009-03003ca0c849/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190424112056-4829fb13d2c6 h1:FP8hkuE6yUEaJnK7O2eTuejKWwW+Rhfj80dQ2JcKxCU= +golang.org/x/net v0.0.0-20190424112056-4829fb13d2c6/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890 h1:uESlIz09WIHT2I+pasSXcpLYqYK8wHcdCetU3VuMBJE= -golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= +golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421 h1:Wo7BWFiOk0QRFMLYMqJGFMd9CgUAcGx7V+qEg/h5IBI= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6 h1:bjcUS9ztw9kFmmIxJInhon/0Is3p+EHBKNgquIzo1OI= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180925112736-b09afc3d579e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190102155601-82a175fd1598 h1:S8GOgffXV1X3fpVG442QRfWOt0iFl79eHJ7OPt725bo= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190102155601-82a175fd1598/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190108104531-7fbe1cd0fcc2 h1:ku9Kvp2ZBWAz3GyvuUH3UV1bZCd7RxH0Qf1epWfIDKc= -golang.org/x/sys v0.0.0-20190108104531-7fbe1cd0fcc2/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190426135247-a129542de9ae h1:mQLHiymj/JXKnnjc62tb7nD5pZLs940/sXJu+Xp3DBA= +golang.org/x/sys v0.0.0-20190426135247-a129542de9ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2 h1:z99zHgr7hKfrUcX/KsoJk5FJfjTceCKIp96+biqP4To= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180924175601-e93be7f42f9f/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190108222858-421f03a57a64 h1:9Y3iftuqayHi0EqSzJ3MrPoNIHHcIvicTPdfepyP5tE= -golang.org/x/tools v0.0.0-20190108222858-421f03a57a64/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.0.0-20180921000521-920bb1beccf7/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.0.0-20181015145326-625cd1887957 h1:jwCmWUTrTFfjsobRuGurnCQeW4NZKijaIf6yAXwLR0E= -google.golang.org/api v0.0.0-20181015145326-625cd1887957/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425222832-ad9eeb80039a h1:jd4PGQGmrzmDZANUzIol3eClsCB/Jp5GmpGWMhi6hnY= +golang.org/x/tools v0.0.0-20190425222832-ad9eeb80039a/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.3.2 h1:iTp+3yyl/KOtxa/d1/JUE0GGSoR6FuW5udver22iwpw= +google.golang.org/api v0.3.2/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0 h1:KKgc1aqhV8wDPbDzlDtpvyjZFY3vjz85FP7p4wcQUyI= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0 h1:S0iUepdCWODXRvtE+gcRDd15L+k+k1AiHlMiMjefH24= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180924164928-221a8d4f7494/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190108161440-ae2f86662275 h1:9oFlwfEGIvmxXTcY53ygNyxIQtWciRHjrnUvZJCYXYU= -google.golang.org/genproto v0.0.0-20190108161440-ae2f86662275/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= -google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.15.0 h1:Az/KuahOM4NAidTEuJCv/RonAA7rYsTPkqXVjr+8OOw= -google.golang.org/grpc v1.15.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= -google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= -google.golang.org/grpc v1.17.0 h1:TRJYBgMclJvGYn2rIMjj+h9KtMt5r1Ij7ODVRIZkwhk= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107 h1:xtNn7qFlagY2mQNFHMSRPjT2RkOV4OXM7P5TVy9xATo= +google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb h1:i1Ppqkc3WQXikh8bXiwHqAN5Rv3/qDCcRk0/Otx73BY= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.39.0 h1:Jf2sFGT+sAd7i+4ftUN1Jz90uw8XNH8NXbbOY16taA8= -gopkg.in/ini.v1 v1.39.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20180920025451-e3ad64cb4ed3/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/vendor/github.com/golang-migrate/migrate/v4/migrate.go b/vendor/github.com/golang-migrate/migrate/v4/migrate.go index 8c8adfb5e..a4a694b40 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/migrate.go +++ b/vendor/github.com/golang-migrate/migrate/v4/migrate.go @@ -5,7 +5,9 @@ package migrate import ( + "errors" "fmt" + "github.com/hashicorp/go-multierror" "os" "sync" "time" @@ -25,10 +27,11 @@ var DefaultPrefetchMigrations = uint(10) var DefaultLockTimeout = 15 * time.Second var ( - ErrNoChange = fmt.Errorf("no change") - ErrNilVersion = fmt.Errorf("no migration") - ErrLocked = fmt.Errorf("database locked") - ErrLockTimeout = fmt.Errorf("timeout: can't acquire database lock") + ErrNoChange = errors.New("no change") + ErrNilVersion = errors.New("no migration") + ErrInvalidVersion = errors.New("version must be >= -1") + ErrLocked = errors.New("database locked") + ErrLockTimeout = errors.New("timeout: can't acquire database lock") ) // ErrShortLimit is an error returned when not enough migrations @@ -62,11 +65,11 @@ type Migrate struct { // GracefulStop accepts `true` and will stop executing migrations // as soon as possible at a safe break point, so that the database // is not corrupted. - GracefulStop chan bool - isGracefulStop bool + GracefulStop chan bool + isLockedMu *sync.Mutex - isLockedMu *sync.Mutex - isLocked bool + isGracefulStop bool + isLocked bool // PrefetchMigrations defaults to DefaultPrefetchMigrations, // but can be set per Migrate instance. @@ -79,28 +82,28 @@ type Migrate struct { // New returns a new Migrate instance from a source URL and a database URL. // The URL scheme is defined by each driver. -func New(sourceUrl, databaseUrl string) (*Migrate, error) { +func New(sourceURL, databaseURL string) (*Migrate, error) { m := newCommon() - sourceName, err := sourceSchemeFromUrl(sourceUrl) + sourceName, err := sourceSchemeFromURL(sourceURL) if err != nil { return nil, err } m.sourceName = sourceName - databaseName, err := databaseSchemeFromUrl(databaseUrl) + databaseName, err := databaseSchemeFromURL(databaseURL) if err != nil { return nil, err } m.databaseName = databaseName - sourceDrv, err := source.Open(sourceUrl) + sourceDrv, err := source.Open(sourceURL) if err != nil { return nil, err } m.sourceDrv = sourceDrv - databaseDrv, err := database.Open(databaseUrl) + databaseDrv, err := database.Open(databaseURL) if err != nil { return nil, err } @@ -113,10 +116,10 @@ func New(sourceUrl, databaseUrl string) (*Migrate, error) { // and an existing database instance. The source URL scheme is defined by each driver. // Use any string that can serve as an identifier during logging as databaseName. // You are responsible for closing the underlying database client if necessary. -func NewWithDatabaseInstance(sourceUrl string, databaseName string, databaseInstance database.Driver) (*Migrate, error) { +func NewWithDatabaseInstance(sourceURL string, databaseName string, databaseInstance database.Driver) (*Migrate, error) { m := newCommon() - sourceName, err := schemeFromUrl(sourceUrl) + sourceName, err := schemeFromURL(sourceURL) if err != nil { return nil, err } @@ -124,7 +127,7 @@ func NewWithDatabaseInstance(sourceUrl string, databaseName string, databaseInst m.databaseName = databaseName - sourceDrv, err := source.Open(sourceUrl) + sourceDrv, err := source.Open(sourceURL) if err != nil { return nil, err } @@ -139,10 +142,10 @@ func NewWithDatabaseInstance(sourceUrl string, databaseName string, databaseInst // and a database URL. The database URL scheme is defined by each driver. // Use any string that can serve as an identifier during logging as sourceName. // You are responsible for closing the underlying source client if necessary. -func NewWithSourceInstance(sourceName string, sourceInstance source.Driver, databaseUrl string) (*Migrate, error) { +func NewWithSourceInstance(sourceName string, sourceInstance source.Driver, databaseURL string) (*Migrate, error) { m := newCommon() - databaseName, err := schemeFromUrl(databaseUrl) + databaseName, err := schemeFromURL(databaseURL) if err != nil { return nil, err } @@ -150,7 +153,7 @@ func NewWithSourceInstance(sourceName string, sourceInstance source.Driver, data m.sourceName = sourceName - databaseDrv, err := database.Open(databaseUrl) + databaseDrv, err := database.Open(databaseURL) if err != nil { return nil, err } @@ -345,7 +348,11 @@ func (m *Migrate) Run(migration ...*Migration) error { } ret <- migr - go migr.Buffer() + go func(migr *Migration) { + if err := migr.Buffer(); err != nil { + m.logErr(err) + } + }(migr) } }() @@ -357,7 +364,7 @@ func (m *Migrate) Run(migration ...*Migration) error { // It resets the dirty state to false. func (m *Migrate) Force(version int) error { if version < -1 { - panic("version must be >= -1") + return ErrInvalidVersion } if err := m.lock(); err != nil { @@ -432,7 +439,12 @@ func (m *Migrate) read(from int, to int, ret chan<- interface{}) { } ret <- migr - go migr.Buffer() + go func() { + if err := migr.Buffer(); err != nil { + m.logErr(err) + } + }() + from = int(firstVersion) } @@ -455,7 +467,12 @@ func (m *Migrate) read(from int, to int, ret chan<- interface{}) { } ret <- migr - go migr.Buffer() + go func() { + if err := migr.Buffer(); err != nil { + m.logErr(err) + } + }() + from = int(next) } @@ -476,7 +493,12 @@ func (m *Migrate) read(from int, to int, ret chan<- interface{}) { return } ret <- migr - go migr.Buffer() + go func() { + if err := migr.Buffer(); err != nil { + m.logErr(err) + } + }() + return } else if err != nil { @@ -491,7 +513,12 @@ func (m *Migrate) read(from int, to int, ret chan<- interface{}) { } ret <- migr - go migr.Buffer() + go func() { + if err := migr.Buffer(); err != nil { + m.logErr(err) + } + }() + from = int(prev) } } @@ -539,7 +566,11 @@ func (m *Migrate) readUp(from int, limit int, ret chan<- interface{}) { } ret <- migr - go migr.Buffer() + go func() { + if err := migr.Buffer(); err != nil { + m.logErr(err) + } + }() from = int(firstVersion) count++ continue @@ -583,7 +614,11 @@ func (m *Migrate) readUp(from int, limit int, ret chan<- interface{}) { } ret <- migr - go migr.Buffer() + go func() { + if err := migr.Buffer(); err != nil { + m.logErr(err) + } + }() from = int(next) count++ } @@ -644,7 +679,11 @@ func (m *Migrate) readDown(from int, limit int, ret chan<- interface{}) { return } ret <- migr - go migr.Buffer() + go func() { + if err := migr.Buffer(); err != nil { + m.logErr(err) + } + }() count++ } @@ -665,7 +704,11 @@ func (m *Migrate) readDown(from int, limit int, ret chan<- interface{}) { } ret <- migr - go migr.Buffer() + go func() { + if err := migr.Buffer(); err != nil { + m.logErr(err) + } + }() from = int(prev) count++ } @@ -684,12 +727,12 @@ func (m *Migrate) runMigrations(ret <-chan interface{}) error { return nil } - switch r.(type) { + switch r := r.(type) { case error: - return r.(error) + return r case *Migration: - migr := r.(*Migration) + migr := r // set version with dirty state if err := m.databaseDrv.SetVersion(migr.TargetVersion, true); err != nil { @@ -722,7 +765,7 @@ func (m *Migrate) runMigrations(ret <-chan interface{}) error { } default: - panic("unknown type") + return fmt.Errorf("unknown type: %T with value: %+v", r, r) } } return nil @@ -730,11 +773,15 @@ func (m *Migrate) runMigrations(ret <-chan interface{}) error { // versionExists checks the source if either the up or down migration for // the specified migration version exists. -func (m *Migrate) versionExists(version uint) error { +func (m *Migrate) versionExists(version uint) (result error) { // try up migration first up, _, err := m.sourceDrv.ReadUp(version) if err == nil { - defer up.Close() + defer func() { + if errClose := up.Close(); errClose != nil { + result = multierror.Append(result, errClose) + } + }() } if os.IsExist(err) { return nil @@ -745,7 +792,11 @@ func (m *Migrate) versionExists(version uint) error { // then try down migration down, _, err := m.sourceDrv.ReadDown(version) if err == nil { - defer down.Close() + defer func() { + if errClose := down.Close(); errClose != nil { + result = multierror.Append(result, errClose) + } + }() } if os.IsExist(err) { return nil @@ -869,10 +920,9 @@ func (m *Migrate) lock() error { } else { errchan <- nil } - return }() - // wait until we either recieve ErrLockTimeout or error from Lock operation + // wait until we either receive ErrLockTimeout or error from Lock operation err := <-errchan if err == nil { m.isLocked = true @@ -918,3 +968,10 @@ func (m *Migrate) logVerbosePrintf(format string, v ...interface{}) { m.Log.Printf(format, v...) } } + +// logErr writes error to m.Log if not nil +func (m *Migrate) logErr(err error) { + if m.Log != nil { + m.Log.Printf("error: %v", err) + } +} diff --git a/vendor/github.com/golang-migrate/migrate/v4/migration.go b/vendor/github.com/golang-migrate/migrate/v4/migration.go index 069e7f038..704fef49e 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/migration.go +++ b/vendor/github.com/golang-migrate/migrate/v4/migration.go @@ -129,7 +129,9 @@ func (m *Migration) Buffer() error { // start reading from body, peek won't move the read pointer though // poor man's solution? - b.Peek(int(m.BufferSize)) + if _, err := b.Peek(int(m.BufferSize)); err != nil && err != io.EOF { + return err + } m.FinishedBuffering = time.Now() @@ -145,10 +147,14 @@ func (m *Migration) Buffer() error { // close bufferWriter so Buffer knows that there is no // more data coming - m.bufferWriter.Close() + if err := m.bufferWriter.Close(); err != nil { + return err + } // it's safe to close the Body too - m.Body.Close() + if err := m.Body.Close(); err != nil { + return err + } return nil } diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/file/file.go b/vendor/github.com/golang-migrate/migrate/v4/source/file/file.go index 1f5b88282..a0c641931 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/source/file/file.go +++ b/vendor/github.com/golang-migrate/migrate/v4/source/file/file.go @@ -84,27 +84,24 @@ func (f *File) Close() error { } func (f *File) First() (version uint, err error) { - if v, ok := f.migrations.First(); !ok { - return 0, &os.PathError{Op: "first", Path: f.path, Err: os.ErrNotExist} - } else { + if v, ok := f.migrations.First(); ok { return v, nil } + return 0, &os.PathError{Op: "first", Path: f.path, Err: os.ErrNotExist} } func (f *File) Prev(version uint) (prevVersion uint, err error) { - if v, ok := f.migrations.Prev(version); !ok { - return 0, &os.PathError{Op: fmt.Sprintf("prev for version %v", version), Path: f.path, Err: os.ErrNotExist} - } else { + if v, ok := f.migrations.Prev(version); ok { return v, nil } + return 0, &os.PathError{Op: fmt.Sprintf("prev for version %v", version), Path: f.path, Err: os.ErrNotExist} } func (f *File) Next(version uint) (nextVersion uint, err error) { - if v, ok := f.migrations.Next(version); !ok { - return 0, &os.PathError{Op: fmt.Sprintf("next for version %v", version), Path: f.path, Err: os.ErrNotExist} - } else { + if v, ok := f.migrations.Next(version); ok { return v, nil } + return 0, &os.PathError{Op: fmt.Sprintf("next for version %v", version), Path: f.path, Err: os.ErrNotExist} } func (f *File) ReadUp(version uint) (r io.ReadCloser, identifier string, err error) { diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/migration.go b/vendor/github.com/golang-migrate/migrate/v4/source/migration.go index fb94a331c..b8bb79020 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/source/migration.go +++ b/vendor/github.com/golang-migrate/migrate/v4/source/migration.go @@ -67,7 +67,7 @@ func (i *Migrations) Append(m *Migration) (ok bool) { func (i *Migrations) buildIndex() { i.index = make(uintSlice, 0) - for version, _ := range i.migrations { + for version := range i.migrations { i.index = append(i.index, version) } sort.Sort(i.index) diff --git a/vendor/github.com/golang-migrate/migrate/v4/util.go b/vendor/github.com/golang-migrate/migrate/v4/util.go index 96b674669..4aeb0f221 100644 --- a/vendor/github.com/golang-migrate/migrate/v4/util.go +++ b/vendor/github.com/golang-migrate/migrate/v4/util.go @@ -23,7 +23,7 @@ func NewMultiError(errs ...error) MultiError { return MultiError{compactErrs} } -// Error implements error. Mulitple errors are concatenated with 'and's. +// Error implements error. Multiple errors are concatenated with 'and's. func (m MultiError) Error() string { var strs = make([]string, 0) for _, e := range m.Errs { @@ -47,24 +47,24 @@ func suint(n int) uint { var errNoScheme = errors.New("no scheme") var errEmptyURL = errors.New("URL cannot be empty") -func sourceSchemeFromUrl(url string) (string, error) { - u, err := schemeFromUrl(url) +func sourceSchemeFromURL(url string) (string, error) { + u, err := schemeFromURL(url) if err != nil { return "", fmt.Errorf("source: %v", err) } return u, nil } -func databaseSchemeFromUrl(url string) (string, error) { - u, err := schemeFromUrl(url) +func databaseSchemeFromURL(url string) (string, error) { + u, err := schemeFromURL(url) if err != nil { return "", fmt.Errorf("database: %v", err) } return u, nil } -// schemeFromUrl returns the scheme from a URL string -func schemeFromUrl(url string) (string, error) { +// schemeFromURL returns the scheme from a URL string +func schemeFromURL(url string) (string, error) { if url == "" { return "", errEmptyURL } diff --git a/vendor/github.com/gorilla/websocket/.gitignore b/vendor/github.com/gorilla/websocket/.gitignore index ac710204f..cd3fcd1ef 100644 --- a/vendor/github.com/gorilla/websocket/.gitignore +++ b/vendor/github.com/gorilla/websocket/.gitignore @@ -22,4 +22,4 @@ _testmain.go *.exe .idea/ -*.iml \ No newline at end of file +*.iml diff --git a/vendor/github.com/gorilla/websocket/.travis.yml b/vendor/github.com/gorilla/websocket/.travis.yml index 3d8d29cf3..a49db51c4 100644 --- a/vendor/github.com/gorilla/websocket/.travis.yml +++ b/vendor/github.com/gorilla/websocket/.travis.yml @@ -3,11 +3,11 @@ sudo: false matrix: include: - - go: 1.4 - - go: 1.5 - - go: 1.6 - - go: 1.7 - - go: 1.8 + - go: 1.7.x + - go: 1.8.x + - go: 1.9.x + - go: 1.10.x + - go: 1.11.x - go: tip allow_failures: - go: tip diff --git a/vendor/github.com/gorilla/websocket/AUTHORS b/vendor/github.com/gorilla/websocket/AUTHORS index b003eca0c..1931f4006 100644 --- a/vendor/github.com/gorilla/websocket/AUTHORS +++ b/vendor/github.com/gorilla/websocket/AUTHORS @@ -4,5 +4,6 @@ # Please keep the list sorted. Gary Burd +Google LLC (https://opensource.google.com/) Joachim Bauch diff --git a/vendor/github.com/gorilla/websocket/README.md b/vendor/github.com/gorilla/websocket/README.md index 33c3d2be3..20e391f86 100644 --- a/vendor/github.com/gorilla/websocket/README.md +++ b/vendor/github.com/gorilla/websocket/README.md @@ -51,7 +51,7 @@ subdirectory](https://github.com/gorilla/websocket/tree/master/examples/autobahn Write message using io.WriteCloserYesNo, see note 3 -Notes: +Notes: 1. Large messages are fragmented in [Chrome's new WebSocket implementation](http://www.ietf.org/mail-archive/web/hybi/current/msg10503.html). 2. The application can get the type of a received data message by implementing diff --git a/vendor/github.com/gorilla/websocket/client.go b/vendor/github.com/gorilla/websocket/client.go index 43a87c753..2e32fd506 100644 --- a/vendor/github.com/gorilla/websocket/client.go +++ b/vendor/github.com/gorilla/websocket/client.go @@ -5,15 +5,15 @@ package websocket import ( - "bufio" "bytes" + "context" "crypto/tls" - "encoding/base64" "errors" "io" "io/ioutil" "net" "net/http" + "net/http/httptrace" "net/url" "strings" "time" @@ -53,6 +53,10 @@ type Dialer struct { // NetDial is nil, net.Dial is used. NetDial func(network, addr string) (net.Conn, error) + // NetDialContext specifies the dial function for creating TCP connections. If + // NetDialContext is nil, net.DialContext is used. + NetDialContext func(ctx context.Context, network, addr string) (net.Conn, error) + // Proxy specifies a function to return a proxy for a given // Request. If the function returns a non-nil error, the // request is aborted with the provided error. @@ -71,6 +75,17 @@ type Dialer struct { // do not limit the size of the messages that can be sent or received. ReadBufferSize, WriteBufferSize int + // WriteBufferPool is a pool of buffers for write operations. If the value + // is not set, then write buffers are allocated to the connection for the + // lifetime of the connection. + // + // A pool is most useful when the application has a modest volume of writes + // across a large number of connections. + // + // Applications should use a single pool for each unique value of + // WriteBufferSize. + WriteBufferPool BufferPool + // Subprotocols specifies the client's requested subprotocols. Subprotocols []string @@ -86,52 +101,13 @@ type Dialer struct { Jar http.CookieJar } -var errMalformedURL = errors.New("malformed ws or wss URL") - -// parseURL parses the URL. -// -// This function is a replacement for the standard library url.Parse function. -// In Go 1.4 and earlier, url.Parse loses information from the path. -func parseURL(s string) (*url.URL, error) { - // From the RFC: - // - // ws-URI = "ws:" "//" host [ ":" port ] path [ "?" query ] - // wss-URI = "wss:" "//" host [ ":" port ] path [ "?" query ] - var u url.URL - switch { - case strings.HasPrefix(s, "ws://"): - u.Scheme = "ws" - s = s[len("ws://"):] - case strings.HasPrefix(s, "wss://"): - u.Scheme = "wss" - s = s[len("wss://"):] - default: - return nil, errMalformedURL - } - - if i := strings.Index(s, "?"); i >= 0 { - u.RawQuery = s[i+1:] - s = s[:i] - } - - if i := strings.Index(s, "/"); i >= 0 { - u.Opaque = s[i:] - s = s[:i] - } else { - u.Opaque = "/" - } - - u.Host = s - - if strings.Contains(u.Host, "@") { - // Don't bother parsing user information because user information is - // not allowed in websocket URIs. - return nil, errMalformedURL - } - - return &u, nil +// Dial creates a new client connection by calling DialContext with a background context. +func (d *Dialer) Dial(urlStr string, requestHeader http.Header) (*Conn, *http.Response, error) { + return d.DialContext(context.Background(), urlStr, requestHeader) } +var errMalformedURL = errors.New("malformed ws or wss URL") + func hostPortNoPort(u *url.URL) (hostPort, hostNoPort string) { hostPort = u.Host hostNoPort = u.Host @@ -150,26 +126,29 @@ func hostPortNoPort(u *url.URL) (hostPort, hostNoPort string) { return hostPort, hostNoPort } -// DefaultDialer is a dialer with all fields set to the default zero values. +// DefaultDialer is a dialer with all fields set to the default values. var DefaultDialer = &Dialer{ - Proxy: http.ProxyFromEnvironment, + Proxy: http.ProxyFromEnvironment, + HandshakeTimeout: 45 * time.Second, } -// Dial creates a new client connection. Use requestHeader to specify the +// nilDialer is dialer to use when receiver is nil. +var nilDialer = *DefaultDialer + +// DialContext creates a new client connection. Use requestHeader to specify the // origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies (Cookie). // Use the response.Header to get the selected subprotocol // (Sec-WebSocket-Protocol) and cookies (Set-Cookie). // +// The context will be used in the request and in the Dialer +// // If the WebSocket handshake fails, ErrBadHandshake is returned along with a // non-nil *http.Response so that callers can handle redirects, authentication, // etcetera. The response body may not contain the entire response and does not // need to be closed by the application. -func (d *Dialer) Dial(urlStr string, requestHeader http.Header) (*Conn, *http.Response, error) { - +func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader http.Header) (*Conn, *http.Response, error) { if d == nil { - d = &Dialer{ - Proxy: http.ProxyFromEnvironment, - } + d = &nilDialer } challengeKey, err := generateChallengeKey() @@ -177,7 +156,7 @@ func (d *Dialer) Dial(urlStr string, requestHeader http.Header) (*Conn, *http.Re return nil, nil, err } - u, err := parseURL(urlStr) + u, err := url.Parse(urlStr) if err != nil { return nil, nil, err } @@ -205,6 +184,7 @@ func (d *Dialer) Dial(urlStr string, requestHeader http.Header) (*Conn, *http.Re Header: make(http.Header), Host: u.Host, } + req = req.WithContext(ctx) // Set the cookies present in the cookie jar of the dialer if d.Jar != nil { @@ -237,45 +217,83 @@ func (d *Dialer) Dial(urlStr string, requestHeader http.Header) (*Conn, *http.Re k == "Sec-Websocket-Extensions" || (k == "Sec-Websocket-Protocol" && len(d.Subprotocols) > 0): return nil, nil, errors.New("websocket: duplicate header not allowed: " + k) + case k == "Sec-Websocket-Protocol": + req.Header["Sec-WebSocket-Protocol"] = vs default: req.Header[k] = vs } } if d.EnableCompression { - req.Header.Set("Sec-Websocket-Extensions", "permessage-deflate; server_no_context_takeover; client_no_context_takeover") + req.Header["Sec-WebSocket-Extensions"] = []string{"permessage-deflate; server_no_context_takeover; client_no_context_takeover"} + } + + if d.HandshakeTimeout != 0 { + var cancel func() + ctx, cancel = context.WithTimeout(ctx, d.HandshakeTimeout) + defer cancel() + } + + // Get network dial function. + var netDial func(network, add string) (net.Conn, error) + + if d.NetDialContext != nil { + netDial = func(network, addr string) (net.Conn, error) { + return d.NetDialContext(ctx, network, addr) + } + } else if d.NetDial != nil { + netDial = d.NetDial + } else { + netDialer := &net.Dialer{} + netDial = func(network, addr string) (net.Conn, error) { + return netDialer.DialContext(ctx, network, addr) + } + } + + // If needed, wrap the dial function to set the connection deadline. + if deadline, ok := ctx.Deadline(); ok { + forwardDial := netDial + netDial = func(network, addr string) (net.Conn, error) { + c, err := forwardDial(network, addr) + if err != nil { + return nil, err + } + err = c.SetDeadline(deadline) + if err != nil { + c.Close() + return nil, err + } + return c, nil + } + } + + // If needed, wrap the dial function to connect through a proxy. + if d.Proxy != nil { + proxyURL, err := d.Proxy(req) + if err != nil { + return nil, nil, err + } + if proxyURL != nil { + dialer, err := proxy_FromURL(proxyURL, netDialerFunc(netDial)) + if err != nil { + return nil, nil, err + } + netDial = dialer.Dial + } } hostPort, hostNoPort := hostPortNoPort(u) - - var proxyURL *url.URL - // Check wether the proxy method has been configured - if d.Proxy != nil { - proxyURL, err = d.Proxy(req) - } - if err != nil { - return nil, nil, err + trace := httptrace.ContextClientTrace(ctx) + if trace != nil && trace.GetConn != nil { + trace.GetConn(hostPort) } - var targetHostPort string - if proxyURL != nil { - targetHostPort, _ = hostPortNoPort(proxyURL) - } else { - targetHostPort = hostPort + netConn, err := netDial("tcp", hostPort) + if trace != nil && trace.GotConn != nil { + trace.GotConn(httptrace.GotConnInfo{ + Conn: netConn, + }) } - - var deadline time.Time - if d.HandshakeTimeout != 0 { - deadline = time.Now().Add(d.HandshakeTimeout) - } - - netDial := d.NetDial - if netDial == nil { - netDialer := &net.Dialer{Deadline: deadline} - netDial = netDialer.Dial - } - - netConn, err := netDial("tcp", targetHostPort) if err != nil { return nil, nil, err } @@ -286,42 +304,6 @@ func (d *Dialer) Dial(urlStr string, requestHeader http.Header) (*Conn, *http.Re } }() - if err := netConn.SetDeadline(deadline); err != nil { - return nil, nil, err - } - - if proxyURL != nil { - connectHeader := make(http.Header) - if user := proxyURL.User; user != nil { - proxyUser := user.Username() - if proxyPassword, passwordSet := user.Password(); passwordSet { - credential := base64.StdEncoding.EncodeToString([]byte(proxyUser + ":" + proxyPassword)) - connectHeader.Set("Proxy-Authorization", "Basic "+credential) - } - } - connectReq := &http.Request{ - Method: "CONNECT", - URL: &url.URL{Opaque: hostPort}, - Host: hostPort, - Header: connectHeader, - } - - connectReq.Write(netConn) - - // Read response. - // Okay to use and discard buffered reader here, because - // TLS server will not speak until spoken to. - br := bufio.NewReader(netConn) - resp, err := http.ReadResponse(br, connectReq) - if err != nil { - return nil, nil, err - } - if resp.StatusCode != 200 { - f := strings.SplitN(resp.Status, " ", 2) - return nil, nil, errors.New(f[1]) - } - } - if u.Scheme == "https" { cfg := cloneTLSConfig(d.TLSClientConfig) if cfg.ServerName == "" { @@ -329,22 +311,31 @@ func (d *Dialer) Dial(urlStr string, requestHeader http.Header) (*Conn, *http.Re } tlsConn := tls.Client(netConn, cfg) netConn = tlsConn - if err := tlsConn.Handshake(); err != nil { - return nil, nil, err + + var err error + if trace != nil { + err = doHandshakeWithTrace(trace, tlsConn, cfg) + } else { + err = doHandshake(tlsConn, cfg) } - if !cfg.InsecureSkipVerify { - if err := tlsConn.VerifyHostname(cfg.ServerName); err != nil { - return nil, nil, err - } + + if err != nil { + return nil, nil, err } } - conn := newConn(netConn, false, d.ReadBufferSize, d.WriteBufferSize) + conn := newConn(netConn, false, d.ReadBufferSize, d.WriteBufferSize, d.WriteBufferPool, nil, nil) if err := req.Write(netConn); err != nil { return nil, nil, err } + if trace != nil && trace.GotFirstResponseByte != nil { + if peek, err := conn.br.Peek(1); err == nil && len(peek) == 1 { + trace.GotFirstResponseByte() + } + } + resp, err := http.ReadResponse(conn.br, req) if err != nil { return nil, nil, err @@ -390,3 +381,15 @@ func (d *Dialer) Dial(urlStr string, requestHeader http.Header) (*Conn, *http.Re netConn = nil // to avoid close in defer. return conn, resp, nil } + +func doHandshake(tlsConn *tls.Conn, cfg *tls.Config) error { + if err := tlsConn.Handshake(); err != nil { + return err + } + if !cfg.InsecureSkipVerify { + if err := tlsConn.VerifyHostname(cfg.ServerName); err != nil { + return err + } + } + return nil +} diff --git a/vendor/github.com/gorilla/websocket/conn.go b/vendor/github.com/gorilla/websocket/conn.go index 97e1dbacb..d2a21c148 100644 --- a/vendor/github.com/gorilla/websocket/conn.go +++ b/vendor/github.com/gorilla/websocket/conn.go @@ -76,7 +76,7 @@ const ( // is UTF-8 encoded text. PingMessage = 9 - // PongMessage denotes a ping control message. The optional message payload + // PongMessage denotes a pong control message. The optional message payload // is UTF-8 encoded text. PongMessage = 10 ) @@ -100,9 +100,8 @@ func (e *netError) Error() string { return e.msg } func (e *netError) Temporary() bool { return e.temporary } func (e *netError) Timeout() bool { return e.timeout } -// CloseError represents close frame. +// CloseError represents a close message. type CloseError struct { - // Code is defined in RFC 6455, section 11.7. Code int @@ -224,6 +223,20 @@ func isValidReceivedCloseCode(code int) bool { return validReceivedCloseCodes[code] || (code >= 3000 && code <= 4999) } +// BufferPool represents a pool of buffers. The *sync.Pool type satisfies this +// interface. The type of the value stored in a pool is not specified. +type BufferPool interface { + // Get gets a value from the pool or returns nil if the pool is empty. + Get() interface{} + // Put adds a value to the pool. + Put(interface{}) +} + +// writePoolData is the type added to the write buffer pool. This wrapper is +// used to prevent applications from peeking at and depending on the values +// added to the pool. +type writePoolData struct{ buf []byte } + // The Conn type represents a WebSocket connection. type Conn struct { conn net.Conn @@ -233,6 +246,8 @@ type Conn struct { // Write fields mu chan bool // used as mutex to protect write to conn writeBuf []byte // frame is constructed in this buffer. + writePool BufferPool + writeBufSize int writeDeadline time.Time writer io.WriteCloser // the current writer returned to the application isWriting bool // for best-effort concurrent write detection @@ -264,64 +279,29 @@ type Conn struct { newDecompressionReader func(io.Reader) io.ReadCloser } -func newConn(conn net.Conn, isServer bool, readBufferSize, writeBufferSize int) *Conn { - return newConnBRW(conn, isServer, readBufferSize, writeBufferSize, nil) -} +func newConn(conn net.Conn, isServer bool, readBufferSize, writeBufferSize int, writeBufferPool BufferPool, br *bufio.Reader, writeBuf []byte) *Conn { -type writeHook struct { - p []byte -} - -func (wh *writeHook) Write(p []byte) (int, error) { - wh.p = p - return len(p), nil -} - -func newConnBRW(conn net.Conn, isServer bool, readBufferSize, writeBufferSize int, brw *bufio.ReadWriter) *Conn { - mu := make(chan bool, 1) - mu <- true - - var br *bufio.Reader - if readBufferSize == 0 && brw != nil && brw.Reader != nil { - // Reuse the supplied bufio.Reader if the buffer has a useful size. - // This code assumes that peek on a reader returns - // bufio.Reader.buf[:0]. - brw.Reader.Reset(conn) - if p, err := brw.Reader.Peek(0); err == nil && cap(p) >= 256 { - br = brw.Reader - } - } if br == nil { if readBufferSize == 0 { readBufferSize = defaultReadBufferSize - } - if readBufferSize < maxControlFramePayloadSize { + } else if readBufferSize < maxControlFramePayloadSize { + // must be large enough for control frame readBufferSize = maxControlFramePayloadSize } br = bufio.NewReaderSize(conn, readBufferSize) } - var writeBuf []byte - if writeBufferSize == 0 && brw != nil && brw.Writer != nil { - // Use the bufio.Writer's buffer if the buffer has a useful size. This - // code assumes that bufio.Writer.buf[:1] is passed to the - // bufio.Writer's underlying writer. - var wh writeHook - brw.Writer.Reset(&wh) - brw.Writer.WriteByte(0) - brw.Flush() - if cap(wh.p) >= maxFrameHeaderSize+256 { - writeBuf = wh.p[:cap(wh.p)] - } - } - - if writeBuf == nil { - if writeBufferSize == 0 { - writeBufferSize = defaultWriteBufferSize - } - writeBuf = make([]byte, writeBufferSize+maxFrameHeaderSize) + if writeBufferSize <= 0 { + writeBufferSize = defaultWriteBufferSize + } + writeBufferSize += maxFrameHeaderSize + + if writeBuf == nil && writeBufferPool == nil { + writeBuf = make([]byte, writeBufferSize) } + mu := make(chan bool, 1) + mu <- true c := &Conn{ isServer: isServer, br: br, @@ -329,6 +309,8 @@ func newConnBRW(conn net.Conn, isServer bool, readBufferSize, writeBufferSize in mu: mu, readFinal: true, writeBuf: writeBuf, + writePool: writeBufferPool, + writeBufSize: writeBufferSize, enableWriteCompression: true, compressionLevel: defaultCompressionLevel, } @@ -343,7 +325,8 @@ func (c *Conn) Subprotocol() string { return c.subprotocol } -// Close closes the underlying network connection without sending or waiting for a close frame. +// Close closes the underlying network connection without sending or waiting +// for a close message. func (c *Conn) Close() error { return c.conn.Close() } @@ -370,7 +353,16 @@ func (c *Conn) writeFatal(err error) error { return err } -func (c *Conn) write(frameType int, deadline time.Time, bufs ...[]byte) error { +func (c *Conn) read(n int) ([]byte, error) { + p, err := c.br.Peek(n) + if err == io.EOF { + err = errUnexpectedEOF + } + c.br.Discard(len(p)) + return p, err +} + +func (c *Conn) write(frameType int, deadline time.Time, buf0, buf1 []byte) error { <-c.mu defer func() { c.mu <- true }() @@ -382,15 +374,14 @@ func (c *Conn) write(frameType int, deadline time.Time, bufs ...[]byte) error { } c.conn.SetWriteDeadline(deadline) - for _, buf := range bufs { - if len(buf) > 0 { - _, err := c.conn.Write(buf) - if err != nil { - return c.writeFatal(err) - } - } + if len(buf1) == 0 { + _, err = c.conn.Write(buf0) + } else { + err = c.writeBufs(buf0, buf1) + } + if err != nil { + return c.writeFatal(err) } - if frameType == CloseMessage { c.writeFatal(ErrCloseSent) } @@ -476,7 +467,19 @@ func (c *Conn) prepWrite(messageType int) error { c.writeErrMu.Lock() err := c.writeErr c.writeErrMu.Unlock() - return err + if err != nil { + return err + } + + if c.writeBuf == nil { + wpd, ok := c.writePool.Get().(writePoolData) + if ok { + c.writeBuf = wpd.buf + } else { + c.writeBuf = make([]byte, c.writeBufSize) + } + } + return nil } // NextWriter returns a writer for the next message to send. The writer's Close @@ -484,6 +487,9 @@ func (c *Conn) prepWrite(messageType int) error { // // There can be at most one open writer on a connection. NextWriter closes the // previous writer if the application has not already done so. +// +// All message types (TextMessage, BinaryMessage, CloseMessage, PingMessage and +// PongMessage) are supported. func (c *Conn) NextWriter(messageType int) (io.WriteCloser, error) { if err := c.prepWrite(messageType); err != nil { return nil, err @@ -599,6 +605,10 @@ func (w *messageWriter) flushFrame(final bool, extra []byte) error { if final { c.writer = nil + if c.writePool != nil { + c.writePool.Put(writePoolData{buf: c.writeBuf}) + c.writeBuf = nil + } return nil } @@ -764,7 +774,6 @@ func (c *Conn) SetWriteDeadline(t time.Time) error { // Read methods func (c *Conn) advanceFrame() (int, error) { - // 1. Skip remainder of previous frame. if c.readRemaining > 0 { @@ -1033,7 +1042,7 @@ func (c *Conn) SetReadDeadline(t time.Time) error { } // SetReadLimit sets the maximum size for a message read from the peer. If a -// message exceeds the limit, the connection sends a close frame to the peer +// message exceeds the limit, the connection sends a close message to the peer // and returns ErrReadLimit to the application. func (c *Conn) SetReadLimit(limit int64) { c.readLimit = limit @@ -1046,24 +1055,22 @@ func (c *Conn) CloseHandler() func(code int, text string) error { // SetCloseHandler sets the handler for close messages received from the peer. // The code argument to h is the received close code or CloseNoStatusReceived -// if the close message is empty. The default close handler sends a close frame -// back to the peer. +// if the close message is empty. The default close handler sends a close +// message back to the peer. // -// The application must read the connection to process close messages as -// described in the section on Control Frames above. +// The handler function is called from the NextReader, ReadMessage and message +// reader Read methods. The application must read the connection to process +// close messages as described in the section on Control Messages above. // -// The connection read methods return a CloseError when a close frame is +// The connection read methods return a CloseError when a close message is // received. Most applications should handle close messages as part of their // normal error handling. Applications should only set a close handler when the -// application must perform some action before sending a close frame back to +// application must perform some action before sending a close message back to // the peer. func (c *Conn) SetCloseHandler(h func(code int, text string) error) { if h == nil { h = func(code int, text string) error { - message := []byte{} - if code != CloseNoStatusReceived { - message = FormatCloseMessage(code, "") - } + message := FormatCloseMessage(code, "") c.WriteControl(CloseMessage, message, time.Now().Add(writeWait)) return nil } @@ -1077,11 +1084,12 @@ func (c *Conn) PingHandler() func(appData string) error { } // SetPingHandler sets the handler for ping messages received from the peer. -// The appData argument to h is the PING frame application data. The default +// The appData argument to h is the PING message application data. The default // ping handler sends a pong to the peer. // -// The application must read the connection to process ping messages as -// described in the section on Control Frames above. +// The handler function is called from the NextReader, ReadMessage and message +// reader Read methods. The application must read the connection to process +// ping messages as described in the section on Control Messages above. func (c *Conn) SetPingHandler(h func(appData string) error) { if h == nil { h = func(message string) error { @@ -1103,11 +1111,12 @@ func (c *Conn) PongHandler() func(appData string) error { } // SetPongHandler sets the handler for pong messages received from the peer. -// The appData argument to h is the PONG frame application data. The default +// The appData argument to h is the PONG message application data. The default // pong handler does nothing. // -// The application must read the connection to process ping messages as -// described in the section on Control Frames above. +// The handler function is called from the NextReader, ReadMessage and message +// reader Read methods. The application must read the connection to process +// pong messages as described in the section on Control Messages above. func (c *Conn) SetPongHandler(h func(appData string) error) { if h == nil { h = func(string) error { return nil } @@ -1141,7 +1150,14 @@ func (c *Conn) SetCompressionLevel(level int) error { } // FormatCloseMessage formats closeCode and text as a WebSocket close message. +// An empty message is returned for code CloseNoStatusReceived. func FormatCloseMessage(closeCode int, text string) []byte { + if closeCode == CloseNoStatusReceived { + // Return empty message because it's illegal to send + // CloseNoStatusReceived. Return non-nil value in case application + // checks for nil. + return []byte{} + } buf := make([]byte, 2+len(text)) binary.BigEndian.PutUint16(buf, uint16(closeCode)) copy(buf[2:], text) diff --git a/vendor/github.com/gorilla/websocket/conn_read_legacy.go b/vendor/github.com/gorilla/websocket/conn_read_legacy.go deleted file mode 100644 index 018541cf6..000000000 --- a/vendor/github.com/gorilla/websocket/conn_read_legacy.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2016 The Gorilla WebSocket Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !go1.5 - -package websocket - -import "io" - -func (c *Conn) read(n int) ([]byte, error) { - p, err := c.br.Peek(n) - if err == io.EOF { - err = errUnexpectedEOF - } - if len(p) > 0 { - // advance over the bytes just read - io.ReadFull(c.br, p) - } - return p, err -} diff --git a/vendor/github.com/gorilla/websocket/conn_read.go b/vendor/github.com/gorilla/websocket/conn_write.go similarity index 52% rename from vendor/github.com/gorilla/websocket/conn_read.go rename to vendor/github.com/gorilla/websocket/conn_write.go index 1ea15059e..a509a21f8 100644 --- a/vendor/github.com/gorilla/websocket/conn_read.go +++ b/vendor/github.com/gorilla/websocket/conn_write.go @@ -2,17 +2,14 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build go1.5 +// +build go1.8 package websocket -import "io" +import "net" -func (c *Conn) read(n int) ([]byte, error) { - p, err := c.br.Peek(n) - if err == io.EOF { - err = errUnexpectedEOF - } - c.br.Discard(len(p)) - return p, err +func (c *Conn) writeBufs(bufs ...[]byte) error { + b := net.Buffers(bufs) + _, err := b.WriteTo(c.conn) + return err } diff --git a/vendor/github.com/gorilla/websocket/conn_write_legacy.go b/vendor/github.com/gorilla/websocket/conn_write_legacy.go new file mode 100644 index 000000000..37edaff5a --- /dev/null +++ b/vendor/github.com/gorilla/websocket/conn_write_legacy.go @@ -0,0 +1,18 @@ +// Copyright 2016 The Gorilla WebSocket Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.8 + +package websocket + +func (c *Conn) writeBufs(bufs ...[]byte) error { + for _, buf := range bufs { + if len(buf) > 0 { + if _, err := c.conn.Write(buf); err != nil { + return err + } + } + } + return nil +} diff --git a/vendor/github.com/gorilla/websocket/doc.go b/vendor/github.com/gorilla/websocket/doc.go index e291a952c..dcce1a63c 100644 --- a/vendor/github.com/gorilla/websocket/doc.go +++ b/vendor/github.com/gorilla/websocket/doc.go @@ -6,9 +6,8 @@ // // Overview // -// The Conn type represents a WebSocket connection. A server application uses -// the Upgrade function from an Upgrader object with a HTTP request handler -// to get a pointer to a Conn: +// The Conn type represents a WebSocket connection. A server application calls +// the Upgrader.Upgrade method from an HTTP request handler to get a *Conn: // // var upgrader = websocket.Upgrader{ // ReadBufferSize: 1024, @@ -31,10 +30,12 @@ // for { // messageType, p, err := conn.ReadMessage() // if err != nil { +// log.Println(err) // return // } -// if err = conn.WriteMessage(messageType, p); err != nil { -// return err +// if err := conn.WriteMessage(messageType, p); err != nil { +// log.Println(err) +// return // } // } // @@ -85,20 +86,26 @@ // and pong. Call the connection WriteControl, WriteMessage or NextWriter // methods to send a control message to the peer. // -// Connections handle received close messages by sending a close message to the -// peer and returning a *CloseError from the the NextReader, ReadMessage or the -// message Read method. +// Connections handle received close messages by calling the handler function +// set with the SetCloseHandler method and by returning a *CloseError from the +// NextReader, ReadMessage or the message Read method. The default close +// handler sends a close message to the peer. // -// Connections handle received ping and pong messages by invoking callback -// functions set with SetPingHandler and SetPongHandler methods. The callback -// functions are called from the NextReader, ReadMessage and the message Read -// methods. +// Connections handle received ping messages by calling the handler function +// set with the SetPingHandler method. The default ping handler sends a pong +// message to the peer. // -// The default ping handler sends a pong to the peer. The application's reading -// goroutine can block for a short time while the handler writes the pong data -// to the connection. +// Connections handle received pong messages by calling the handler function +// set with the SetPongHandler method. The default pong handler does nothing. +// If an application sends ping messages, then the application should set a +// pong handler to receive the corresponding pong. // -// The application must read the connection to process ping, pong and close +// The control message handler functions are called from the NextReader, +// ReadMessage and message reader Read methods. The default close and ping +// handlers can block these methods for a short time when the handler writes to +// the connection. +// +// The application must read the connection to process close, ping and pong // messages sent from the peer. If the application is not otherwise interested // in messages from the peer, then the application should start a goroutine to // read and discard messages from the peer. A simple example is: @@ -137,19 +144,12 @@ // method fails the WebSocket handshake with HTTP status 403. // // If the CheckOrigin field is nil, then the Upgrader uses a safe default: fail -// the handshake if the Origin request header is present and not equal to the -// Host request header. +// the handshake if the Origin request header is present and the Origin host is +// not equal to the Host request header. // -// An application can allow connections from any origin by specifying a -// function that always returns true: -// -// var upgrader = websocket.Upgrader{ -// CheckOrigin: func(r *http.Request) bool { return true }, -// } -// -// The deprecated Upgrade function does not enforce an origin policy. It's the -// application's responsibility to check the Origin header before calling -// Upgrade. +// The deprecated package-level Upgrade function does not perform origin +// checking. The application is responsible for checking the Origin header +// before calling the Upgrade function. // // Compression EXPERIMENTAL // diff --git a/vendor/github.com/gorilla/websocket/json.go b/vendor/github.com/gorilla/websocket/json.go index 4f0e36875..dc2c1f641 100644 --- a/vendor/github.com/gorilla/websocket/json.go +++ b/vendor/github.com/gorilla/websocket/json.go @@ -9,12 +9,14 @@ import ( "io" ) -// WriteJSON is deprecated, use c.WriteJSON instead. +// WriteJSON writes the JSON encoding of v as a message. +// +// Deprecated: Use c.WriteJSON instead. func WriteJSON(c *Conn, v interface{}) error { return c.WriteJSON(v) } -// WriteJSON writes the JSON encoding of v to the connection. +// WriteJSON writes the JSON encoding of v as a message. // // See the documentation for encoding/json Marshal for details about the // conversion of Go values to JSON. @@ -31,7 +33,10 @@ func (c *Conn) WriteJSON(v interface{}) error { return err2 } -// ReadJSON is deprecated, use c.ReadJSON instead. +// ReadJSON reads the next JSON-encoded message from the connection and stores +// it in the value pointed to by v. +// +// Deprecated: Use c.ReadJSON instead. func ReadJSON(c *Conn, v interface{}) error { return c.ReadJSON(v) } diff --git a/vendor/github.com/gorilla/websocket/mask.go b/vendor/github.com/gorilla/websocket/mask.go index 6a88bbc74..577fce9ef 100644 --- a/vendor/github.com/gorilla/websocket/mask.go +++ b/vendor/github.com/gorilla/websocket/mask.go @@ -11,7 +11,6 @@ import "unsafe" const wordSize = int(unsafe.Sizeof(uintptr(0))) func maskBytes(key [4]byte, pos int, b []byte) int { - // Mask one byte at a time for small buffers. if len(b) < 2*wordSize { for i := range b { diff --git a/vendor/github.com/gorilla/websocket/prepared.go b/vendor/github.com/gorilla/websocket/prepared.go index 1efffbd1e..74ec565d2 100644 --- a/vendor/github.com/gorilla/websocket/prepared.go +++ b/vendor/github.com/gorilla/websocket/prepared.go @@ -19,7 +19,6 @@ import ( type PreparedMessage struct { messageType int data []byte - err error mu sync.Mutex frames map[prepareKey]*preparedFrame } diff --git a/vendor/github.com/gorilla/websocket/proxy.go b/vendor/github.com/gorilla/websocket/proxy.go new file mode 100644 index 000000000..bf2478e43 --- /dev/null +++ b/vendor/github.com/gorilla/websocket/proxy.go @@ -0,0 +1,77 @@ +// Copyright 2017 The Gorilla WebSocket Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package websocket + +import ( + "bufio" + "encoding/base64" + "errors" + "net" + "net/http" + "net/url" + "strings" +) + +type netDialerFunc func(network, addr string) (net.Conn, error) + +func (fn netDialerFunc) Dial(network, addr string) (net.Conn, error) { + return fn(network, addr) +} + +func init() { + proxy_RegisterDialerType("http", func(proxyURL *url.URL, forwardDialer proxy_Dialer) (proxy_Dialer, error) { + return &httpProxyDialer{proxyURL: proxyURL, fowardDial: forwardDialer.Dial}, nil + }) +} + +type httpProxyDialer struct { + proxyURL *url.URL + fowardDial func(network, addr string) (net.Conn, error) +} + +func (hpd *httpProxyDialer) Dial(network string, addr string) (net.Conn, error) { + hostPort, _ := hostPortNoPort(hpd.proxyURL) + conn, err := hpd.fowardDial(network, hostPort) + if err != nil { + return nil, err + } + + connectHeader := make(http.Header) + if user := hpd.proxyURL.User; user != nil { + proxyUser := user.Username() + if proxyPassword, passwordSet := user.Password(); passwordSet { + credential := base64.StdEncoding.EncodeToString([]byte(proxyUser + ":" + proxyPassword)) + connectHeader.Set("Proxy-Authorization", "Basic "+credential) + } + } + + connectReq := &http.Request{ + Method: "CONNECT", + URL: &url.URL{Opaque: addr}, + Host: addr, + Header: connectHeader, + } + + if err := connectReq.Write(conn); err != nil { + conn.Close() + return nil, err + } + + // Read response. It's OK to use and discard buffered reader here becaue + // the remote server does not speak until spoken to. + br := bufio.NewReader(conn) + resp, err := http.ReadResponse(br, connectReq) + if err != nil { + conn.Close() + return nil, err + } + + if resp.StatusCode != 200 { + conn.Close() + f := strings.SplitN(resp.Status, " ", 2) + return nil, errors.New(f[1]) + } + return conn, nil +} diff --git a/vendor/github.com/gorilla/websocket/server.go b/vendor/github.com/gorilla/websocket/server.go index 3495e0f1a..a761824b3 100644 --- a/vendor/github.com/gorilla/websocket/server.go +++ b/vendor/github.com/gorilla/websocket/server.go @@ -7,7 +7,7 @@ package websocket import ( "bufio" "errors" - "net" + "io" "net/http" "net/url" "strings" @@ -33,10 +33,23 @@ type Upgrader struct { // or received. ReadBufferSize, WriteBufferSize int + // WriteBufferPool is a pool of buffers for write operations. If the value + // is not set, then write buffers are allocated to the connection for the + // lifetime of the connection. + // + // A pool is most useful when the application has a modest volume of writes + // across a large number of connections. + // + // Applications should use a single pool for each unique value of + // WriteBufferSize. + WriteBufferPool BufferPool + // Subprotocols specifies the server's supported protocols in order of - // preference. If this field is set, then the Upgrade method negotiates a + // preference. If this field is not nil, then the Upgrade method negotiates a // subprotocol by selecting the first match in this list with a protocol - // requested by the client. + // requested by the client. If there's no match, then no protocol is + // negotiated (the Sec-Websocket-Protocol header is not included in the + // handshake response). Subprotocols []string // Error specifies the function for generating HTTP error responses. If Error @@ -44,8 +57,12 @@ type Upgrader struct { Error func(w http.ResponseWriter, r *http.Request, status int, reason error) // CheckOrigin returns true if the request Origin header is acceptable. If - // CheckOrigin is nil, the host in the Origin header must not be set or - // must match the host of the request. + // CheckOrigin is nil, then a safe default is used: return false if the + // Origin request header is present and the origin host is not equal to + // request Host header. + // + // A CheckOrigin function should carefully validate the request origin to + // prevent cross-site request forgery. CheckOrigin func(r *http.Request) bool // EnableCompression specify if the server should attempt to negotiate per @@ -76,7 +93,7 @@ func checkSameOrigin(r *http.Request) bool { if err != nil { return false } - return u.Host == r.Host + return equalASCIIFold(u.Host, r.Host) } func (u *Upgrader) selectSubprotocol(r *http.Request, responseHeader http.Header) string { @@ -99,42 +116,44 @@ func (u *Upgrader) selectSubprotocol(r *http.Request, responseHeader http.Header // // The responseHeader is included in the response to the client's upgrade // request. Use the responseHeader to specify cookies (Set-Cookie) and the -// application negotiated subprotocol (Sec-Websocket-Protocol). +// application negotiated subprotocol (Sec-WebSocket-Protocol). // // If the upgrade fails, then Upgrade replies to the client with an HTTP error // response. func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header) (*Conn, error) { - if r.Method != "GET" { - return u.returnError(w, r, http.StatusMethodNotAllowed, "websocket: not a websocket handshake: request method is not GET") - } - - if _, ok := responseHeader["Sec-Websocket-Extensions"]; ok { - return u.returnError(w, r, http.StatusInternalServerError, "websocket: application specific 'Sec-Websocket-Extensions' headers are unsupported") - } + const badHandshake = "websocket: the client is not using the websocket protocol: " if !tokenListContainsValue(r.Header, "Connection", "upgrade") { - return u.returnError(w, r, http.StatusBadRequest, "websocket: not a websocket handshake: 'upgrade' token not found in 'Connection' header") + return u.returnError(w, r, http.StatusBadRequest, badHandshake+"'upgrade' token not found in 'Connection' header") } if !tokenListContainsValue(r.Header, "Upgrade", "websocket") { - return u.returnError(w, r, http.StatusBadRequest, "websocket: not a websocket handshake: 'websocket' token not found in 'Upgrade' header") + return u.returnError(w, r, http.StatusBadRequest, badHandshake+"'websocket' token not found in 'Upgrade' header") + } + + if r.Method != "GET" { + return u.returnError(w, r, http.StatusMethodNotAllowed, badHandshake+"request method is not GET") } if !tokenListContainsValue(r.Header, "Sec-Websocket-Version", "13") { return u.returnError(w, r, http.StatusBadRequest, "websocket: unsupported version: 13 not found in 'Sec-Websocket-Version' header") } + if _, ok := responseHeader["Sec-Websocket-Extensions"]; ok { + return u.returnError(w, r, http.StatusInternalServerError, "websocket: application specific 'Sec-WebSocket-Extensions' headers are unsupported") + } + checkOrigin := u.CheckOrigin if checkOrigin == nil { checkOrigin = checkSameOrigin } if !checkOrigin(r) { - return u.returnError(w, r, http.StatusForbidden, "websocket: 'Origin' header value not allowed") + return u.returnError(w, r, http.StatusForbidden, "websocket: request origin not allowed by Upgrader.CheckOrigin") } challengeKey := r.Header.Get("Sec-Websocket-Key") if challengeKey == "" { - return u.returnError(w, r, http.StatusBadRequest, "websocket: not a websocket handshake: `Sec-Websocket-Key' header is missing or blank") + return u.returnError(w, r, http.StatusBadRequest, "websocket: not a websocket handshake: `Sec-WebSocket-Key' header is missing or blank") } subprotocol := u.selectSubprotocol(r, responseHeader) @@ -151,17 +170,12 @@ func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeade } } - var ( - netConn net.Conn - err error - ) - h, ok := w.(http.Hijacker) if !ok { return u.returnError(w, r, http.StatusInternalServerError, "websocket: response does not implement http.Hijacker") } var brw *bufio.ReadWriter - netConn, brw, err = h.Hijack() + netConn, brw, err := h.Hijack() if err != nil { return u.returnError(w, r, http.StatusInternalServerError, err.Error()) } @@ -171,7 +185,21 @@ func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeade return nil, errors.New("websocket: client sent data before handshake is complete") } - c := newConnBRW(netConn, true, u.ReadBufferSize, u.WriteBufferSize, brw) + var br *bufio.Reader + if u.ReadBufferSize == 0 && bufioReaderSize(netConn, brw.Reader) > 256 { + // Reuse hijacked buffered reader as connection reader. + br = brw.Reader + } + + buf := bufioWriterBuffer(netConn, brw.Writer) + + var writeBuf []byte + if u.WriteBufferPool == nil && u.WriteBufferSize == 0 && len(buf) >= maxFrameHeaderSize+256 { + // Reuse hijacked write buffer as connection buffer. + writeBuf = buf + } + + c := newConn(netConn, true, u.ReadBufferSize, u.WriteBufferSize, u.WriteBufferPool, br, writeBuf) c.subprotocol = subprotocol if compress { @@ -179,17 +207,23 @@ func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeade c.newDecompressionReader = decompressNoContextTakeover } - p := c.writeBuf[:0] + // Use larger of hijacked buffer and connection write buffer for header. + p := buf + if len(c.writeBuf) > len(p) { + p = c.writeBuf + } + p = p[:0] + p = append(p, "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: "...) p = append(p, computeAcceptKey(challengeKey)...) p = append(p, "\r\n"...) if c.subprotocol != "" { - p = append(p, "Sec-Websocket-Protocol: "...) + p = append(p, "Sec-WebSocket-Protocol: "...) p = append(p, c.subprotocol...) p = append(p, "\r\n"...) } if compress { - p = append(p, "Sec-Websocket-Extensions: permessage-deflate; server_no_context_takeover; client_no_context_takeover\r\n"...) + p = append(p, "Sec-WebSocket-Extensions: permessage-deflate; server_no_context_takeover; client_no_context_takeover\r\n"...) } for k, vs := range responseHeader { if k == "Sec-Websocket-Protocol" { @@ -230,13 +264,14 @@ func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeade // Upgrade upgrades the HTTP server connection to the WebSocket protocol. // -// This function is deprecated, use websocket.Upgrader instead. +// Deprecated: Use websocket.Upgrader instead. // -// The application is responsible for checking the request origin before -// calling Upgrade. An example implementation of the same origin policy is: +// Upgrade does not perform origin checking. The application is responsible for +// checking the Origin header before calling Upgrade. An example implementation +// of the same origin policy check is: // // if req.Header.Get("Origin") != "http://"+req.Host { -// http.Error(w, "Origin not allowed", 403) +// http.Error(w, "Origin not allowed", http.StatusForbidden) // return // } // @@ -289,3 +324,40 @@ func IsWebSocketUpgrade(r *http.Request) bool { return tokenListContainsValue(r.Header, "Connection", "upgrade") && tokenListContainsValue(r.Header, "Upgrade", "websocket") } + +// bufioReaderSize size returns the size of a bufio.Reader. +func bufioReaderSize(originalReader io.Reader, br *bufio.Reader) int { + // This code assumes that peek on a reset reader returns + // bufio.Reader.buf[:0]. + // TODO: Use bufio.Reader.Size() after Go 1.10 + br.Reset(originalReader) + if p, err := br.Peek(0); err == nil { + return cap(p) + } + return 0 +} + +// writeHook is an io.Writer that records the last slice passed to it vio +// io.Writer.Write. +type writeHook struct { + p []byte +} + +func (wh *writeHook) Write(p []byte) (int, error) { + wh.p = p + return len(p), nil +} + +// bufioWriterBuffer grabs the buffer from a bufio.Writer. +func bufioWriterBuffer(originalWriter io.Writer, bw *bufio.Writer) []byte { + // This code assumes that bufio.Writer.buf[:1] is passed to the + // bufio.Writer's underlying writer. + var wh writeHook + bw.Reset(&wh) + bw.WriteByte(0) + bw.Flush() + + bw.Reset(originalWriter) + + return wh.p[:cap(wh.p)] +} diff --git a/vendor/github.com/gorilla/websocket/trace.go b/vendor/github.com/gorilla/websocket/trace.go new file mode 100644 index 000000000..834f122a0 --- /dev/null +++ b/vendor/github.com/gorilla/websocket/trace.go @@ -0,0 +1,19 @@ +// +build go1.8 + +package websocket + +import ( + "crypto/tls" + "net/http/httptrace" +) + +func doHandshakeWithTrace(trace *httptrace.ClientTrace, tlsConn *tls.Conn, cfg *tls.Config) error { + if trace.TLSHandshakeStart != nil { + trace.TLSHandshakeStart() + } + err := doHandshake(tlsConn, cfg) + if trace.TLSHandshakeDone != nil { + trace.TLSHandshakeDone(tlsConn.ConnectionState(), err) + } + return err +} diff --git a/vendor/github.com/gorilla/websocket/trace_17.go b/vendor/github.com/gorilla/websocket/trace_17.go new file mode 100644 index 000000000..77d05a0b5 --- /dev/null +++ b/vendor/github.com/gorilla/websocket/trace_17.go @@ -0,0 +1,12 @@ +// +build !go1.8 + +package websocket + +import ( + "crypto/tls" + "net/http/httptrace" +) + +func doHandshakeWithTrace(trace *httptrace.ClientTrace, tlsConn *tls.Conn, cfg *tls.Config) error { + return doHandshake(tlsConn, cfg) +} diff --git a/vendor/github.com/gorilla/websocket/util.go b/vendor/github.com/gorilla/websocket/util.go index 9a4908df2..354001e1e 100644 --- a/vendor/github.com/gorilla/websocket/util.go +++ b/vendor/github.com/gorilla/websocket/util.go @@ -11,6 +11,7 @@ import ( "io" "net/http" "strings" + "unicode/utf8" ) var keyGUID = []byte("258EAFA5-E914-47DA-95CA-C5AB0DC85B11") @@ -111,14 +112,14 @@ func nextTokenOrQuoted(s string) (value string, rest string) { case escape: escape = false p[j] = b - j += 1 + j++ case b == '\\': escape = true case b == '"': return string(p[:j]), s[i+1:] default: p[j] = b - j += 1 + j++ } } return "", "" @@ -127,8 +128,31 @@ func nextTokenOrQuoted(s string) (value string, rest string) { return "", "" } +// equalASCIIFold returns true if s is equal to t with ASCII case folding. +func equalASCIIFold(s, t string) bool { + for s != "" && t != "" { + sr, size := utf8.DecodeRuneInString(s) + s = s[size:] + tr, size := utf8.DecodeRuneInString(t) + t = t[size:] + if sr == tr { + continue + } + if 'A' <= sr && sr <= 'Z' { + sr = sr + 'a' - 'A' + } + if 'A' <= tr && tr <= 'Z' { + tr = tr + 'a' - 'A' + } + if sr != tr { + return false + } + } + return s == t +} + // tokenListContainsValue returns true if the 1#token header with the given -// name contains token. +// name contains a token equal to value with ASCII case folding. func tokenListContainsValue(header http.Header, name string, value string) bool { headers: for _, s := range header[name] { @@ -142,7 +166,7 @@ headers: if s != "" && s[0] != ',' { continue headers } - if strings.EqualFold(t, value) { + if equalASCIIFold(t, value) { return true } if s == "" { @@ -154,9 +178,8 @@ headers: return false } -// parseExtensiosn parses WebSocket extensions from a header. +// parseExtensions parses WebSocket extensions from a header. func parseExtensions(header http.Header) []map[string]string { - // From RFC 6455: // // Sec-WebSocket-Extensions = extension-list diff --git a/vendor/github.com/gorilla/websocket/x_net_proxy.go b/vendor/github.com/gorilla/websocket/x_net_proxy.go new file mode 100644 index 000000000..2e668f6b8 --- /dev/null +++ b/vendor/github.com/gorilla/websocket/x_net_proxy.go @@ -0,0 +1,473 @@ +// Code generated by golang.org/x/tools/cmd/bundle. DO NOT EDIT. +//go:generate bundle -o x_net_proxy.go golang.org/x/net/proxy + +// Package proxy provides support for a variety of protocols to proxy network +// data. +// + +package websocket + +import ( + "errors" + "io" + "net" + "net/url" + "os" + "strconv" + "strings" + "sync" +) + +type proxy_direct struct{} + +// Direct is a direct proxy: one that makes network connections directly. +var proxy_Direct = proxy_direct{} + +func (proxy_direct) Dial(network, addr string) (net.Conn, error) { + return net.Dial(network, addr) +} + +// A PerHost directs connections to a default Dialer unless the host name +// requested matches one of a number of exceptions. +type proxy_PerHost struct { + def, bypass proxy_Dialer + + bypassNetworks []*net.IPNet + bypassIPs []net.IP + bypassZones []string + bypassHosts []string +} + +// NewPerHost returns a PerHost Dialer that directs connections to either +// defaultDialer or bypass, depending on whether the connection matches one of +// the configured rules. +func proxy_NewPerHost(defaultDialer, bypass proxy_Dialer) *proxy_PerHost { + return &proxy_PerHost{ + def: defaultDialer, + bypass: bypass, + } +} + +// Dial connects to the address addr on the given network through either +// defaultDialer or bypass. +func (p *proxy_PerHost) Dial(network, addr string) (c net.Conn, err error) { + host, _, err := net.SplitHostPort(addr) + if err != nil { + return nil, err + } + + return p.dialerForRequest(host).Dial(network, addr) +} + +func (p *proxy_PerHost) dialerForRequest(host string) proxy_Dialer { + if ip := net.ParseIP(host); ip != nil { + for _, net := range p.bypassNetworks { + if net.Contains(ip) { + return p.bypass + } + } + for _, bypassIP := range p.bypassIPs { + if bypassIP.Equal(ip) { + return p.bypass + } + } + return p.def + } + + for _, zone := range p.bypassZones { + if strings.HasSuffix(host, zone) { + return p.bypass + } + if host == zone[1:] { + // For a zone ".example.com", we match "example.com" + // too. + return p.bypass + } + } + for _, bypassHost := range p.bypassHosts { + if bypassHost == host { + return p.bypass + } + } + return p.def +} + +// AddFromString parses a string that contains comma-separated values +// specifying hosts that should use the bypass proxy. Each value is either an +// IP address, a CIDR range, a zone (*.example.com) or a host name +// (localhost). A best effort is made to parse the string and errors are +// ignored. +func (p *proxy_PerHost) AddFromString(s string) { + hosts := strings.Split(s, ",") + for _, host := range hosts { + host = strings.TrimSpace(host) + if len(host) == 0 { + continue + } + if strings.Contains(host, "/") { + // We assume that it's a CIDR address like 127.0.0.0/8 + if _, net, err := net.ParseCIDR(host); err == nil { + p.AddNetwork(net) + } + continue + } + if ip := net.ParseIP(host); ip != nil { + p.AddIP(ip) + continue + } + if strings.HasPrefix(host, "*.") { + p.AddZone(host[1:]) + continue + } + p.AddHost(host) + } +} + +// AddIP specifies an IP address that will use the bypass proxy. Note that +// this will only take effect if a literal IP address is dialed. A connection +// to a named host will never match an IP. +func (p *proxy_PerHost) AddIP(ip net.IP) { + p.bypassIPs = append(p.bypassIPs, ip) +} + +// AddNetwork specifies an IP range that will use the bypass proxy. Note that +// this will only take effect if a literal IP address is dialed. A connection +// to a named host will never match. +func (p *proxy_PerHost) AddNetwork(net *net.IPNet) { + p.bypassNetworks = append(p.bypassNetworks, net) +} + +// AddZone specifies a DNS suffix that will use the bypass proxy. A zone of +// "example.com" matches "example.com" and all of its subdomains. +func (p *proxy_PerHost) AddZone(zone string) { + if strings.HasSuffix(zone, ".") { + zone = zone[:len(zone)-1] + } + if !strings.HasPrefix(zone, ".") { + zone = "." + zone + } + p.bypassZones = append(p.bypassZones, zone) +} + +// AddHost specifies a host name that will use the bypass proxy. +func (p *proxy_PerHost) AddHost(host string) { + if strings.HasSuffix(host, ".") { + host = host[:len(host)-1] + } + p.bypassHosts = append(p.bypassHosts, host) +} + +// A Dialer is a means to establish a connection. +type proxy_Dialer interface { + // Dial connects to the given address via the proxy. + Dial(network, addr string) (c net.Conn, err error) +} + +// Auth contains authentication parameters that specific Dialers may require. +type proxy_Auth struct { + User, Password string +} + +// FromEnvironment returns the dialer specified by the proxy related variables in +// the environment. +func proxy_FromEnvironment() proxy_Dialer { + allProxy := proxy_allProxyEnv.Get() + if len(allProxy) == 0 { + return proxy_Direct + } + + proxyURL, err := url.Parse(allProxy) + if err != nil { + return proxy_Direct + } + proxy, err := proxy_FromURL(proxyURL, proxy_Direct) + if err != nil { + return proxy_Direct + } + + noProxy := proxy_noProxyEnv.Get() + if len(noProxy) == 0 { + return proxy + } + + perHost := proxy_NewPerHost(proxy, proxy_Direct) + perHost.AddFromString(noProxy) + return perHost +} + +// proxySchemes is a map from URL schemes to a function that creates a Dialer +// from a URL with such a scheme. +var proxy_proxySchemes map[string]func(*url.URL, proxy_Dialer) (proxy_Dialer, error) + +// RegisterDialerType takes a URL scheme and a function to generate Dialers from +// a URL with that scheme and a forwarding Dialer. Registered schemes are used +// by FromURL. +func proxy_RegisterDialerType(scheme string, f func(*url.URL, proxy_Dialer) (proxy_Dialer, error)) { + if proxy_proxySchemes == nil { + proxy_proxySchemes = make(map[string]func(*url.URL, proxy_Dialer) (proxy_Dialer, error)) + } + proxy_proxySchemes[scheme] = f +} + +// FromURL returns a Dialer given a URL specification and an underlying +// Dialer for it to make network requests. +func proxy_FromURL(u *url.URL, forward proxy_Dialer) (proxy_Dialer, error) { + var auth *proxy_Auth + if u.User != nil { + auth = new(proxy_Auth) + auth.User = u.User.Username() + if p, ok := u.User.Password(); ok { + auth.Password = p + } + } + + switch u.Scheme { + case "socks5": + return proxy_SOCKS5("tcp", u.Host, auth, forward) + } + + // If the scheme doesn't match any of the built-in schemes, see if it + // was registered by another package. + if proxy_proxySchemes != nil { + if f, ok := proxy_proxySchemes[u.Scheme]; ok { + return f(u, forward) + } + } + + return nil, errors.New("proxy: unknown scheme: " + u.Scheme) +} + +var ( + proxy_allProxyEnv = &proxy_envOnce{ + names: []string{"ALL_PROXY", "all_proxy"}, + } + proxy_noProxyEnv = &proxy_envOnce{ + names: []string{"NO_PROXY", "no_proxy"}, + } +) + +// envOnce looks up an environment variable (optionally by multiple +// names) once. It mitigates expensive lookups on some platforms +// (e.g. Windows). +// (Borrowed from net/http/transport.go) +type proxy_envOnce struct { + names []string + once sync.Once + val string +} + +func (e *proxy_envOnce) Get() string { + e.once.Do(e.init) + return e.val +} + +func (e *proxy_envOnce) init() { + for _, n := range e.names { + e.val = os.Getenv(n) + if e.val != "" { + return + } + } +} + +// SOCKS5 returns a Dialer that makes SOCKSv5 connections to the given address +// with an optional username and password. See RFC 1928 and RFC 1929. +func proxy_SOCKS5(network, addr string, auth *proxy_Auth, forward proxy_Dialer) (proxy_Dialer, error) { + s := &proxy_socks5{ + network: network, + addr: addr, + forward: forward, + } + if auth != nil { + s.user = auth.User + s.password = auth.Password + } + + return s, nil +} + +type proxy_socks5 struct { + user, password string + network, addr string + forward proxy_Dialer +} + +const proxy_socks5Version = 5 + +const ( + proxy_socks5AuthNone = 0 + proxy_socks5AuthPassword = 2 +) + +const proxy_socks5Connect = 1 + +const ( + proxy_socks5IP4 = 1 + proxy_socks5Domain = 3 + proxy_socks5IP6 = 4 +) + +var proxy_socks5Errors = []string{ + "", + "general failure", + "connection forbidden", + "network unreachable", + "host unreachable", + "connection refused", + "TTL expired", + "command not supported", + "address type not supported", +} + +// Dial connects to the address addr on the given network via the SOCKS5 proxy. +func (s *proxy_socks5) Dial(network, addr string) (net.Conn, error) { + switch network { + case "tcp", "tcp6", "tcp4": + default: + return nil, errors.New("proxy: no support for SOCKS5 proxy connections of type " + network) + } + + conn, err := s.forward.Dial(s.network, s.addr) + if err != nil { + return nil, err + } + if err := s.connect(conn, addr); err != nil { + conn.Close() + return nil, err + } + return conn, nil +} + +// connect takes an existing connection to a socks5 proxy server, +// and commands the server to extend that connection to target, +// which must be a canonical address with a host and port. +func (s *proxy_socks5) connect(conn net.Conn, target string) error { + host, portStr, err := net.SplitHostPort(target) + if err != nil { + return err + } + + port, err := strconv.Atoi(portStr) + if err != nil { + return errors.New("proxy: failed to parse port number: " + portStr) + } + if port < 1 || port > 0xffff { + return errors.New("proxy: port number out of range: " + portStr) + } + + // the size here is just an estimate + buf := make([]byte, 0, 6+len(host)) + + buf = append(buf, proxy_socks5Version) + if len(s.user) > 0 && len(s.user) < 256 && len(s.password) < 256 { + buf = append(buf, 2 /* num auth methods */, proxy_socks5AuthNone, proxy_socks5AuthPassword) + } else { + buf = append(buf, 1 /* num auth methods */, proxy_socks5AuthNone) + } + + if _, err := conn.Write(buf); err != nil { + return errors.New("proxy: failed to write greeting to SOCKS5 proxy at " + s.addr + ": " + err.Error()) + } + + if _, err := io.ReadFull(conn, buf[:2]); err != nil { + return errors.New("proxy: failed to read greeting from SOCKS5 proxy at " + s.addr + ": " + err.Error()) + } + if buf[0] != 5 { + return errors.New("proxy: SOCKS5 proxy at " + s.addr + " has unexpected version " + strconv.Itoa(int(buf[0]))) + } + if buf[1] == 0xff { + return errors.New("proxy: SOCKS5 proxy at " + s.addr + " requires authentication") + } + + // See RFC 1929 + if buf[1] == proxy_socks5AuthPassword { + buf = buf[:0] + buf = append(buf, 1 /* password protocol version */) + buf = append(buf, uint8(len(s.user))) + buf = append(buf, s.user...) + buf = append(buf, uint8(len(s.password))) + buf = append(buf, s.password...) + + if _, err := conn.Write(buf); err != nil { + return errors.New("proxy: failed to write authentication request to SOCKS5 proxy at " + s.addr + ": " + err.Error()) + } + + if _, err := io.ReadFull(conn, buf[:2]); err != nil { + return errors.New("proxy: failed to read authentication reply from SOCKS5 proxy at " + s.addr + ": " + err.Error()) + } + + if buf[1] != 0 { + return errors.New("proxy: SOCKS5 proxy at " + s.addr + " rejected username/password") + } + } + + buf = buf[:0] + buf = append(buf, proxy_socks5Version, proxy_socks5Connect, 0 /* reserved */) + + if ip := net.ParseIP(host); ip != nil { + if ip4 := ip.To4(); ip4 != nil { + buf = append(buf, proxy_socks5IP4) + ip = ip4 + } else { + buf = append(buf, proxy_socks5IP6) + } + buf = append(buf, ip...) + } else { + if len(host) > 255 { + return errors.New("proxy: destination host name too long: " + host) + } + buf = append(buf, proxy_socks5Domain) + buf = append(buf, byte(len(host))) + buf = append(buf, host...) + } + buf = append(buf, byte(port>>8), byte(port)) + + if _, err := conn.Write(buf); err != nil { + return errors.New("proxy: failed to write connect request to SOCKS5 proxy at " + s.addr + ": " + err.Error()) + } + + if _, err := io.ReadFull(conn, buf[:4]); err != nil { + return errors.New("proxy: failed to read connect reply from SOCKS5 proxy at " + s.addr + ": " + err.Error()) + } + + failure := "unknown error" + if int(buf[1]) < len(proxy_socks5Errors) { + failure = proxy_socks5Errors[buf[1]] + } + + if len(failure) > 0 { + return errors.New("proxy: SOCKS5 proxy at " + s.addr + " failed to connect: " + failure) + } + + bytesToDiscard := 0 + switch buf[3] { + case proxy_socks5IP4: + bytesToDiscard = net.IPv4len + case proxy_socks5IP6: + bytesToDiscard = net.IPv6len + case proxy_socks5Domain: + _, err := io.ReadFull(conn, buf[:1]) + if err != nil { + return errors.New("proxy: failed to read domain length from SOCKS5 proxy at " + s.addr + ": " + err.Error()) + } + bytesToDiscard = int(buf[0]) + default: + return errors.New("proxy: got unknown address type " + strconv.Itoa(int(buf[3])) + " from SOCKS5 proxy at " + s.addr) + } + + if cap(buf) < bytesToDiscard { + buf = make([]byte, bytesToDiscard) + } else { + buf = buf[:bytesToDiscard] + } + if _, err := io.ReadFull(conn, buf); err != nil { + return errors.New("proxy: failed to read address from SOCKS5 proxy at " + s.addr + ": " + err.Error()) + } + + // Also need to discard the port number + if _, err := io.ReadFull(conn, buf[:2]); err != nil { + return errors.New("proxy: failed to read port from SOCKS5 proxy at " + s.addr + ": " + err.Error()) + } + + return nil +} diff --git a/vendor/github.com/h2non/filetype/History.md b/vendor/github.com/h2non/filetype/History.md index 58ca1555f..3c02be1fc 100644 --- a/vendor/github.com/h2non/filetype/History.md +++ b/vendor/github.com/h2non/filetype/History.md @@ -1,4 +1,26 @@ +v1.0.8 / 2019-02-10 +=================== + + * refactor(images): heic -> heif + * feat(docs): add heif format + * Merge pull request #60 from rikonor/master + * add heif/heic support + * fix(docs): dicom -> dcm + * feat: add dicom type + * Merge pull request #58 from Fentonz/master + * Merge pull request #59 from kmanley/master + * fix example; related to h2non/filetype#43 + * Added DICOM type to archive + + +v1.0.7 / 2019-02-09 +=================== + + * Merge pull request #56 from akupila/wasm + * add wasm to readme + * detect wasm file type + v1.0.6 / 2019-01-22 =================== diff --git a/vendor/github.com/h2non/filetype/README.md b/vendor/github.com/h2non/filetype/README.md index d816dc8ea..2968ae244 100644 --- a/vendor/github.com/h2non/filetype/README.md +++ b/vendor/github.com/h2non/filetype/README.md @@ -50,9 +50,9 @@ import ( func main() { buf, _ := ioutil.ReadFile("sample.jpg") - kind, unknown := filetype.Match(buf) - if unknown != nil { - fmt.Printf("Unknown: %s", unknown) + kind, _ := filetype.Match(buf) + if kind == filetype.Unknown { + fmt.Println("Unknown file type") return } @@ -192,6 +192,7 @@ func main() { - **cr2** - `image/x-canon-cr2` - **tif** - `image/tiff` - **bmp** - `image/bmp` +- **heif** - `image/heif` - **jxr** - `image/vnd.ms-photo` - **psd** - `image/vnd.adobe.photoshop` - **ico** - `image/x-icon` @@ -245,6 +246,7 @@ func main() { - **lz** - `application/x-lzip` - **rpm** - `application/x-rpm` - **elf** - `application/x-executable` +- **dcm** - `application/dicom` #### Documents @@ -262,6 +264,10 @@ func main() { - **ttf** - `application/font-sfnt` - **otf** - `application/font-sfnt` +#### Application + +- **wasm** - `application/wasm` + ## Benchmarks Measured using [real files](https://github.com/h2non/filetype/tree/master/fixtures). diff --git a/vendor/github.com/h2non/filetype/matchers/application.go b/vendor/github.com/h2non/filetype/matchers/application.go new file mode 100644 index 000000000..f482062d6 --- /dev/null +++ b/vendor/github.com/h2non/filetype/matchers/application.go @@ -0,0 +1,20 @@ +package matchers + +var ( + TypeWasm = newType("wasm", "application/wasm") +) + +var Application = Map{ + TypeWasm: Wasm, +} + +// Wasm detects a Web Assembly 1.0 filetype. +func Wasm(buf []byte) bool { + // WASM has starts with `\0asm`, followed by the version. + // http://webassembly.github.io/spec/core/binary/modules.html#binary-magic + return len(buf) >= 8 && + buf[0] == 0x00 && buf[1] == 0x61 && + buf[2] == 0x73 && buf[3] == 0x6D && + buf[4] == 0x01 && buf[5] == 0x00 && + buf[6] == 0x00 && buf[7] == 0x00 +} diff --git a/vendor/github.com/h2non/filetype/matchers/archive.go b/vendor/github.com/h2non/filetype/matchers/archive.go index 9c1270ffb..0e88af144 100644 --- a/vendor/github.com/h2non/filetype/matchers/archive.go +++ b/vendor/github.com/h2non/filetype/matchers/archive.go @@ -25,6 +25,7 @@ var ( TypeLz = newType("lz", "application/x-lzip") TypeRpm = newType("rpm", "application/x-rpm") TypeElf = newType("elf", "application/x-executable") + TypeDcm = newType("dcm", "application/dicom") ) var Archive = Map{ @@ -52,6 +53,7 @@ var Archive = Map{ TypeLz: Lz, TypeRpm: Rpm, TypeElf: Elf, + TypeDcm: Dcm, } func Epub(buf []byte) bool { @@ -215,3 +217,9 @@ func Elf(buf []byte) bool { buf[0] == 0x7F && buf[1] == 0x45 && buf[2] == 0x4C && buf[3] == 0x46 } + +func Dcm(buf []byte) bool { + return len(buf) > 131 && + buf[128] == 0x44 && buf[129] == 0x49 && + buf[130] == 0x43 && buf[131] == 0x4D +} diff --git a/vendor/github.com/h2non/filetype/matchers/image.go b/vendor/github.com/h2non/filetype/matchers/image.go index edb7fbc70..5405477a6 100644 --- a/vendor/github.com/h2non/filetype/matchers/image.go +++ b/vendor/github.com/h2non/filetype/matchers/image.go @@ -1,5 +1,7 @@ package matchers +import "github.com/h2non/filetype/matchers/isobmff" + var ( TypeJpeg = newType("jpg", "image/jpeg") TypeJpeg2000 = newType("jp2", "image/jp2") @@ -12,6 +14,7 @@ var ( TypeJxr = newType("jxr", "image/vnd.ms-photo") TypePsd = newType("psd", "image/vnd.adobe.photoshop") TypeIco = newType("ico", "image/x-icon") + TypeHeif = newType("heif", "image/heif") ) var Image = Map{ @@ -26,6 +29,7 @@ var Image = Map{ TypeJxr: Jxr, TypePsd: Psd, TypeIco: Ico, + TypeHeif: Heif, } func Jpeg(buf []byte) bool { @@ -106,3 +110,24 @@ func Ico(buf []byte) bool { buf[0] == 0x00 && buf[1] == 0x00 && buf[2] == 0x01 && buf[3] == 0x00 } + +func Heif(buf []byte) bool { + if !isobmff.IsISOBMFF(buf) { + return false + } + + majorBrand, _, compatibleBrands := isobmff.GetFtyp(buf) + if majorBrand == "heic" { + return true + } + + if majorBrand == "mif1" || majorBrand == "msf1" { + for _, compatibleBrand := range compatibleBrands { + if compatibleBrand == "heic" { + return true + } + } + } + + return false +} diff --git a/vendor/github.com/h2non/filetype/matchers/isobmff/isobmff.go b/vendor/github.com/h2non/filetype/matchers/isobmff/isobmff.go new file mode 100644 index 000000000..963e80568 --- /dev/null +++ b/vendor/github.com/h2non/filetype/matchers/isobmff/isobmff.go @@ -0,0 +1,31 @@ +package isobmff + +import "encoding/binary" + +// IsISOBMFF checks whether the given buffer represents ISO Base Media File Format data +func IsISOBMFF(buf []byte) bool { + if len(buf) < 16 || string(buf[4:8]) != "ftyp" { + return false + } + + if ftypLength := binary.BigEndian.Uint32(buf[0:4]); len(buf) < int(ftypLength) { + return false + } + + return true +} + +// GetFtyp returns the major brand, minor version and compatible brands of the ISO-BMFF data +func GetFtyp(buf []byte) (string, string, []string) { + ftypLength := binary.BigEndian.Uint32(buf[0:4]) + + majorBrand := string(buf[8:12]) + minorVersion := string(buf[12:16]) + + compatibleBrands := []string{} + for i := 16; i < int(ftypLength); i += 4 { + compatibleBrands = append(compatibleBrands, string(buf[i:i+4])) + } + + return majorBrand, minorVersion, compatibleBrands +} diff --git a/vendor/github.com/h2non/filetype/matchers/matchers.go b/vendor/github.com/h2non/filetype/matchers/matchers.go index e9462df8e..20d74d080 100644 --- a/vendor/github.com/h2non/filetype/matchers/matchers.go +++ b/vendor/github.com/h2non/filetype/matchers/matchers.go @@ -47,5 +47,5 @@ func register(matchers ...Map) { func init() { // Arguments order is intentional // Archive files will be checked last due to prepend above in func NewMatcher - register(Archive, Document, Font, Audio, Video, Image) + register(Archive, Document, Font, Audio, Video, Image, Application) } diff --git a/vendor/github.com/h2non/filetype/version.go b/vendor/github.com/h2non/filetype/version.go index 20a4b26e3..be84ec228 100644 --- a/vendor/github.com/h2non/filetype/version.go +++ b/vendor/github.com/h2non/filetype/version.go @@ -1,4 +1,4 @@ package filetype // Version exposes the current package version. -const Version = "1.0.6" +const Version = "1.0.8" diff --git a/vendor/github.com/hashicorp/errwrap/LICENSE b/vendor/github.com/hashicorp/errwrap/LICENSE new file mode 100644 index 000000000..c33dcc7c9 --- /dev/null +++ b/vendor/github.com/hashicorp/errwrap/LICENSE @@ -0,0 +1,354 @@ +Mozilla Public License, version 2.0 + +1. Definitions + +1.1. “Contributor” + + means each individual or legal entity that creates, contributes to the + creation of, or owns Covered Software. + +1.2. “Contributor Version” + + means the combination of the Contributions of others (if any) used by a + Contributor and that particular Contributor’s Contribution. + +1.3. “Contribution” + + means Covered Software of a particular Contributor. + +1.4. “Covered Software” + + means Source Code Form to which the initial Contributor has attached the + notice in Exhibit A, the Executable Form of such Source Code Form, and + Modifications of such Source Code Form, in each case including portions + thereof. + +1.5. “Incompatible With Secondary Licenses” + means + + a. that the initial Contributor has attached the notice described in + Exhibit B to the Covered Software; or + + b. that the Covered Software was made available under the terms of version + 1.1 or earlier of the License, but not also under the terms of a + Secondary License. + +1.6. “Executable Form” + + means any form of the work other than Source Code Form. + +1.7. “Larger Work” + + means a work that combines Covered Software with other material, in a separate + file or files, that is not Covered Software. + +1.8. “License” + + means this document. + +1.9. “Licensable” + + means having the right to grant, to the maximum extent possible, whether at the + time of the initial grant or subsequently, any and all of the rights conveyed by + this License. + +1.10. “Modifications” + + means any of the following: + + a. any file in Source Code Form that results from an addition to, deletion + from, or modification of the contents of Covered Software; or + + b. any new file in Source Code Form that contains any Covered Software. + +1.11. “Patent Claims” of a Contributor + + means any patent claim(s), including without limitation, method, process, + and apparatus claims, in any patent Licensable by such Contributor that + would be infringed, but for the grant of the License, by the making, + using, selling, offering for sale, having made, import, or transfer of + either its Contributions or its Contributor Version. + +1.12. “Secondary License” + + means either the GNU General Public License, Version 2.0, the GNU Lesser + General Public License, Version 2.1, the GNU Affero General Public + License, Version 3.0, or any later versions of those licenses. + +1.13. “Source Code Form” + + means the form of the work preferred for making modifications. + +1.14. “You” (or “Your”) + + means an individual or a legal entity exercising rights under this + License. For legal entities, “You” includes any entity that controls, is + controlled by, or is under common control with You. For purposes of this + definition, “control” means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + +2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + a. under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or as + part of a Larger Work; and + + b. under Patent Claims of such Contributor to make, use, sell, offer for + sale, have made, import, and otherwise transfer either its Contributions + or its Contributor Version. + +2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution become + effective for each Contribution on the date the Contributor first distributes + such Contribution. + +2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under this + License. No additional rights or licenses will be implied from the distribution + or licensing of Covered Software under this License. Notwithstanding Section + 2.1(b) above, no patent license is granted by a Contributor: + + a. for any code that a Contributor has removed from Covered Software; or + + b. for infringements caused by: (i) Your and any other third party’s + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + + c. under Patent Claims infringed by Covered Software in the absence of its + Contributions. + + This License does not grant any rights in the trademarks, service marks, or + logos of any Contributor (except as may be necessary to comply with the + notice requirements in Section 3.4). + +2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to + distribute the Covered Software under a subsequent version of this License + (see Section 10.2) or under the terms of a Secondary License (if permitted + under the terms of Section 3.3). + +2.5. Representation + + Each Contributor represents that the Contributor believes its Contributions + are its original creation(s) or it has sufficient rights to grant the + rights to its Contributions conveyed by this License. + +2.6. Fair Use + + This License is not intended to limit any rights You have under applicable + copyright doctrines of fair use, fair dealing, or other equivalents. + +2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in + Section 2.1. + + +3. Responsibilities + +3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under the + terms of this License. You must inform recipients that the Source Code Form + of the Covered Software is governed by the terms of this License, and how + they can obtain a copy of this License. You may not attempt to alter or + restrict the recipients’ rights in the Source Code Form. + +3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + + a. such Covered Software must also be made available in Source Code Form, + as described in Section 3.1, and You must inform recipients of the + Executable Form how they can obtain a copy of such Source Code Form by + reasonable means in a timely manner, at a charge no more than the cost + of distribution to the recipient; and + + b. You may distribute such Executable Form under the terms of this License, + or sublicense it under different terms, provided that the license for + the Executable Form does not attempt to limit or alter the recipients’ + rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for the + Covered Software. If the Larger Work is a combination of Covered Software + with a work governed by one or more Secondary Licenses, and the Covered + Software is not Incompatible With Secondary Licenses, this License permits + You to additionally distribute such Covered Software under the terms of + such Secondary License(s), so that the recipient of the Larger Work may, at + their option, further distribute the Covered Software under the terms of + either this License or such Secondary License(s). + +3.4. Notices + + You may not remove or alter the substance of any license notices (including + copyright notices, patent notices, disclaimers of warranty, or limitations + of liability) contained within the Source Code Form of the Covered + Software, except that You may alter any license notices to the extent + required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of Covered + Software. However, You may do so only on Your own behalf, and not on behalf + of any Contributor. You must make it absolutely clear that any such + warranty, support, indemnity, or liability obligation is offered by You + alone, and You hereby agree to indemnify every Contributor for any + liability incurred by such Contributor as a result of warranty, support, + indemnity or liability terms You offer. You may include additional + disclaimers of warranty and limitations of liability specific to any + jurisdiction. + +4. Inability to Comply Due to Statute or Regulation + + If it is impossible for You to comply with any of the terms of this License + with respect to some or all of the Covered Software due to statute, judicial + order, or regulation then You must: (a) comply with the terms of this License + to the maximum extent possible; and (b) describe the limitations and the code + they affect. Such description must be placed in a text file included with all + distributions of the Covered Software under this License. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Termination + +5.1. The rights granted under this License will terminate automatically if You + fail to comply with any of its terms. However, if You become compliant, + then the rights granted under this License from a particular Contributor + are reinstated (a) provisionally, unless and until such Contributor + explicitly and finally terminates Your grants, and (b) on an ongoing basis, + if such Contributor fails to notify You of the non-compliance by some + reasonable means prior to 60 days after You have come back into compliance. + Moreover, Your grants from a particular Contributor are reinstated on an + ongoing basis if such Contributor notifies You of the non-compliance by + some reasonable means, this is the first time You have received notice of + non-compliance with this License from such Contributor, and You become + compliant prior to 30 days after Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, counter-claims, + and cross-claims) alleging that a Contributor Version directly or + indirectly infringes any patent, then the rights granted to You by any and + all Contributors for the Covered Software under Section 2.1 of this License + shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user + license agreements (excluding distributors and resellers) which have been + validly granted by You or Your distributors under this License prior to + termination shall survive termination. + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an “as is” basis, without + warranty of any kind, either expressed, implied, or statutory, including, + without limitation, warranties that the Covered Software is free of defects, + merchantable, fit for a particular purpose or non-infringing. The entire + risk as to the quality and performance of the Covered Software is with You. + Should any Covered Software prove defective in any respect, You (not any + Contributor) assume the cost of any necessary servicing, repair, or + correction. This disclaimer of warranty constitutes an essential part of this + License. No use of any Covered Software is authorized under this License + except under this disclaimer. + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including + negligence), contract, or otherwise, shall any Contributor, or anyone who + distributes Covered Software as permitted above, be liable to You for any + direct, indirect, special, incidental, or consequential damages of any + character including, without limitation, damages for lost profits, loss of + goodwill, work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses, even if such party shall have been + informed of the possibility of such damages. This limitation of liability + shall not apply to liability for death or personal injury resulting from such + party’s negligence to the extent applicable law prohibits such limitation. + Some jurisdictions do not allow the exclusion or limitation of incidental or + consequential damages, so this exclusion and limitation may not apply to You. + +8. Litigation + + Any litigation relating to this License may be brought only in the courts of + a jurisdiction where the defendant maintains its principal place of business + and such litigation shall be governed by laws of that jurisdiction, without + reference to its conflict-of-law provisions. Nothing in this Section shall + prevent a party’s ability to bring cross-claims or counter-claims. + +9. Miscellaneous + + This License represents the complete agreement concerning the subject matter + hereof. If any provision of this License is held to be unenforceable, such + provision shall be reformed only to the extent necessary to make it + enforceable. Any law or regulation which provides that the language of a + contract shall be construed against the drafter shall not be used to construe + this License against a Contributor. + + +10. Versions of the License + +10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section + 10.3, no one other than the license steward has the right to modify or + publish new versions of this License. Each version will be given a + distinguishing version number. + +10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version of + the License under which You originally received the Covered Software, or + under the terms of any subsequent version published by the license + steward. + +10.3. Modified Versions + + If you create software not governed by this License, and you want to + create a new license for such software, you may create and use a modified + version of this License if you rename the license and remove any + references to the name of the license steward (except to note that such + modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses + If You choose to distribute Source Code Form that is Incompatible With + Secondary Licenses under the terms of this version of the License, the + notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the + terms of the Mozilla Public License, v. + 2.0. If a copy of the MPL was not + distributed with this file, You can + obtain one at + http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular file, then +You may include the notice in a location (such as a LICENSE file in a relevant +directory) where a recipient would be likely to look for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - “Incompatible With Secondary Licenses” Notice + + This Source Code Form is “Incompatible + With Secondary Licenses”, as defined by + the Mozilla Public License, v. 2.0. + diff --git a/vendor/github.com/hashicorp/errwrap/README.md b/vendor/github.com/hashicorp/errwrap/README.md new file mode 100644 index 000000000..444df08f8 --- /dev/null +++ b/vendor/github.com/hashicorp/errwrap/README.md @@ -0,0 +1,89 @@ +# errwrap + +`errwrap` is a package for Go that formalizes the pattern of wrapping errors +and checking if an error contains another error. + +There is a common pattern in Go of taking a returned `error` value and +then wrapping it (such as with `fmt.Errorf`) before returning it. The problem +with this pattern is that you completely lose the original `error` structure. + +Arguably the _correct_ approach is that you should make a custom structure +implementing the `error` interface, and have the original error as a field +on that structure, such [as this example](http://golang.org/pkg/os/#PathError). +This is a good approach, but you have to know the entire chain of possible +rewrapping that happens, when you might just care about one. + +`errwrap` formalizes this pattern (it doesn't matter what approach you use +above) by giving a single interface for wrapping errors, checking if a specific +error is wrapped, and extracting that error. + +## Installation and Docs + +Install using `go get github.com/hashicorp/errwrap`. + +Full documentation is available at +http://godoc.org/github.com/hashicorp/errwrap + +## Usage + +#### Basic Usage + +Below is a very basic example of its usage: + +```go +// A function that always returns an error, but wraps it, like a real +// function might. +func tryOpen() error { + _, err := os.Open("/i/dont/exist") + if err != nil { + return errwrap.Wrapf("Doesn't exist: {{err}}", err) + } + + return nil +} + +func main() { + err := tryOpen() + + // We can use the Contains helpers to check if an error contains + // another error. It is safe to do this with a nil error, or with + // an error that doesn't even use the errwrap package. + if errwrap.Contains(err, "does not exist") { + // Do something + } + if errwrap.ContainsType(err, new(os.PathError)) { + // Do something + } + + // Or we can use the associated `Get` functions to just extract + // a specific error. This would return nil if that specific error doesn't + // exist. + perr := errwrap.GetType(err, new(os.PathError)) +} +``` + +#### Custom Types + +If you're already making custom types that properly wrap errors, then +you can get all the functionality of `errwraps.Contains` and such by +implementing the `Wrapper` interface with just one function. Example: + +```go +type AppError { + Code ErrorCode + Err error +} + +func (e *AppError) WrappedErrors() []error { + return []error{e.Err} +} +``` + +Now this works: + +```go +err := &AppError{Err: fmt.Errorf("an error")} +if errwrap.ContainsType(err, fmt.Errorf("")) { + // This will work! +} +``` diff --git a/vendor/github.com/hashicorp/errwrap/errwrap.go b/vendor/github.com/hashicorp/errwrap/errwrap.go new file mode 100644 index 000000000..a733bef18 --- /dev/null +++ b/vendor/github.com/hashicorp/errwrap/errwrap.go @@ -0,0 +1,169 @@ +// Package errwrap implements methods to formalize error wrapping in Go. +// +// All of the top-level functions that take an `error` are built to be able +// to take any error, not just wrapped errors. This allows you to use errwrap +// without having to type-check and type-cast everywhere. +package errwrap + +import ( + "errors" + "reflect" + "strings" +) + +// WalkFunc is the callback called for Walk. +type WalkFunc func(error) + +// Wrapper is an interface that can be implemented by custom types to +// have all the Contains, Get, etc. functions in errwrap work. +// +// When Walk reaches a Wrapper, it will call the callback for every +// wrapped error in addition to the wrapper itself. Since all the top-level +// functions in errwrap use Walk, this means that all those functions work +// with your custom type. +type Wrapper interface { + WrappedErrors() []error +} + +// Wrap defines that outer wraps inner, returning an error type that +// can be cleanly used with the other methods in this package, such as +// Contains, GetAll, etc. +// +// This function won't modify the error message at all (the outer message +// will be used). +func Wrap(outer, inner error) error { + return &wrappedError{ + Outer: outer, + Inner: inner, + } +} + +// Wrapf wraps an error with a formatting message. This is similar to using +// `fmt.Errorf` to wrap an error. If you're using `fmt.Errorf` to wrap +// errors, you should replace it with this. +// +// format is the format of the error message. The string '{{err}}' will +// be replaced with the original error message. +func Wrapf(format string, err error) error { + outerMsg := "" + if err != nil { + outerMsg = err.Error() + } + + outer := errors.New(strings.Replace( + format, "{{err}}", outerMsg, -1)) + + return Wrap(outer, err) +} + +// Contains checks if the given error contains an error with the +// message msg. If err is not a wrapped error, this will always return +// false unless the error itself happens to match this msg. +func Contains(err error, msg string) bool { + return len(GetAll(err, msg)) > 0 +} + +// ContainsType checks if the given error contains an error with +// the same concrete type as v. If err is not a wrapped error, this will +// check the err itself. +func ContainsType(err error, v interface{}) bool { + return len(GetAllType(err, v)) > 0 +} + +// Get is the same as GetAll but returns the deepest matching error. +func Get(err error, msg string) error { + es := GetAll(err, msg) + if len(es) > 0 { + return es[len(es)-1] + } + + return nil +} + +// GetType is the same as GetAllType but returns the deepest matching error. +func GetType(err error, v interface{}) error { + es := GetAllType(err, v) + if len(es) > 0 { + return es[len(es)-1] + } + + return nil +} + +// GetAll gets all the errors that might be wrapped in err with the +// given message. The order of the errors is such that the outermost +// matching error (the most recent wrap) is index zero, and so on. +func GetAll(err error, msg string) []error { + var result []error + + Walk(err, func(err error) { + if err.Error() == msg { + result = append(result, err) + } + }) + + return result +} + +// GetAllType gets all the errors that are the same type as v. +// +// The order of the return value is the same as described in GetAll. +func GetAllType(err error, v interface{}) []error { + var result []error + + var search string + if v != nil { + search = reflect.TypeOf(v).String() + } + Walk(err, func(err error) { + var needle string + if err != nil { + needle = reflect.TypeOf(err).String() + } + + if needle == search { + result = append(result, err) + } + }) + + return result +} + +// Walk walks all the wrapped errors in err and calls the callback. If +// err isn't a wrapped error, this will be called once for err. If err +// is a wrapped error, the callback will be called for both the wrapper +// that implements error as well as the wrapped error itself. +func Walk(err error, cb WalkFunc) { + if err == nil { + return + } + + switch e := err.(type) { + case *wrappedError: + cb(e.Outer) + Walk(e.Inner, cb) + case Wrapper: + cb(err) + + for _, err := range e.WrappedErrors() { + Walk(err, cb) + } + default: + cb(err) + } +} + +// wrappedError is an implementation of error that has both the +// outer and inner errors. +type wrappedError struct { + Outer error + Inner error +} + +func (w *wrappedError) Error() string { + return w.Outer.Error() +} + +func (w *wrappedError) WrappedErrors() []error { + return []error{w.Outer, w.Inner} +} diff --git a/vendor/github.com/hashicorp/errwrap/go.mod b/vendor/github.com/hashicorp/errwrap/go.mod new file mode 100644 index 000000000..c9b84022c --- /dev/null +++ b/vendor/github.com/hashicorp/errwrap/go.mod @@ -0,0 +1 @@ +module github.com/hashicorp/errwrap diff --git a/vendor/github.com/hashicorp/go-multierror/.travis.yml b/vendor/github.com/hashicorp/go-multierror/.travis.yml new file mode 100644 index 000000000..304a83595 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/.travis.yml @@ -0,0 +1,12 @@ +sudo: false + +language: go + +go: + - 1.x + +branches: + only: + - master + +script: make test testrace diff --git a/vendor/github.com/hashicorp/go-multierror/LICENSE b/vendor/github.com/hashicorp/go-multierror/LICENSE new file mode 100644 index 000000000..82b4de97c --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/LICENSE @@ -0,0 +1,353 @@ +Mozilla Public License, version 2.0 + +1. Definitions + +1.1. “Contributor” + + means each individual or legal entity that creates, contributes to the + creation of, or owns Covered Software. + +1.2. “Contributor Version” + + means the combination of the Contributions of others (if any) used by a + Contributor and that particular Contributor’s Contribution. + +1.3. “Contribution” + + means Covered Software of a particular Contributor. + +1.4. “Covered Software” + + means Source Code Form to which the initial Contributor has attached the + notice in Exhibit A, the Executable Form of such Source Code Form, and + Modifications of such Source Code Form, in each case including portions + thereof. + +1.5. “Incompatible With Secondary Licenses” + means + + a. that the initial Contributor has attached the notice described in + Exhibit B to the Covered Software; or + + b. that the Covered Software was made available under the terms of version + 1.1 or earlier of the License, but not also under the terms of a + Secondary License. + +1.6. “Executable Form” + + means any form of the work other than Source Code Form. + +1.7. “Larger Work” + + means a work that combines Covered Software with other material, in a separate + file or files, that is not Covered Software. + +1.8. “License” + + means this document. + +1.9. “Licensable” + + means having the right to grant, to the maximum extent possible, whether at the + time of the initial grant or subsequently, any and all of the rights conveyed by + this License. + +1.10. “Modifications” + + means any of the following: + + a. any file in Source Code Form that results from an addition to, deletion + from, or modification of the contents of Covered Software; or + + b. any new file in Source Code Form that contains any Covered Software. + +1.11. “Patent Claims” of a Contributor + + means any patent claim(s), including without limitation, method, process, + and apparatus claims, in any patent Licensable by such Contributor that + would be infringed, but for the grant of the License, by the making, + using, selling, offering for sale, having made, import, or transfer of + either its Contributions or its Contributor Version. + +1.12. “Secondary License” + + means either the GNU General Public License, Version 2.0, the GNU Lesser + General Public License, Version 2.1, the GNU Affero General Public + License, Version 3.0, or any later versions of those licenses. + +1.13. “Source Code Form” + + means the form of the work preferred for making modifications. + +1.14. “You” (or “Your”) + + means an individual or a legal entity exercising rights under this + License. For legal entities, “You” includes any entity that controls, is + controlled by, or is under common control with You. For purposes of this + definition, “control” means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + +2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + a. under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or as + part of a Larger Work; and + + b. under Patent Claims of such Contributor to make, use, sell, offer for + sale, have made, import, and otherwise transfer either its Contributions + or its Contributor Version. + +2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution become + effective for each Contribution on the date the Contributor first distributes + such Contribution. + +2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under this + License. No additional rights or licenses will be implied from the distribution + or licensing of Covered Software under this License. Notwithstanding Section + 2.1(b) above, no patent license is granted by a Contributor: + + a. for any code that a Contributor has removed from Covered Software; or + + b. for infringements caused by: (i) Your and any other third party’s + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + + c. under Patent Claims infringed by Covered Software in the absence of its + Contributions. + + This License does not grant any rights in the trademarks, service marks, or + logos of any Contributor (except as may be necessary to comply with the + notice requirements in Section 3.4). + +2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to + distribute the Covered Software under a subsequent version of this License + (see Section 10.2) or under the terms of a Secondary License (if permitted + under the terms of Section 3.3). + +2.5. Representation + + Each Contributor represents that the Contributor believes its Contributions + are its original creation(s) or it has sufficient rights to grant the + rights to its Contributions conveyed by this License. + +2.6. Fair Use + + This License is not intended to limit any rights You have under applicable + copyright doctrines of fair use, fair dealing, or other equivalents. + +2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in + Section 2.1. + + +3. Responsibilities + +3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under the + terms of this License. You must inform recipients that the Source Code Form + of the Covered Software is governed by the terms of this License, and how + they can obtain a copy of this License. You may not attempt to alter or + restrict the recipients’ rights in the Source Code Form. + +3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + + a. such Covered Software must also be made available in Source Code Form, + as described in Section 3.1, and You must inform recipients of the + Executable Form how they can obtain a copy of such Source Code Form by + reasonable means in a timely manner, at a charge no more than the cost + of distribution to the recipient; and + + b. You may distribute such Executable Form under the terms of this License, + or sublicense it under different terms, provided that the license for + the Executable Form does not attempt to limit or alter the recipients’ + rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for the + Covered Software. If the Larger Work is a combination of Covered Software + with a work governed by one or more Secondary Licenses, and the Covered + Software is not Incompatible With Secondary Licenses, this License permits + You to additionally distribute such Covered Software under the terms of + such Secondary License(s), so that the recipient of the Larger Work may, at + their option, further distribute the Covered Software under the terms of + either this License or such Secondary License(s). + +3.4. Notices + + You may not remove or alter the substance of any license notices (including + copyright notices, patent notices, disclaimers of warranty, or limitations + of liability) contained within the Source Code Form of the Covered + Software, except that You may alter any license notices to the extent + required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of Covered + Software. However, You may do so only on Your own behalf, and not on behalf + of any Contributor. You must make it absolutely clear that any such + warranty, support, indemnity, or liability obligation is offered by You + alone, and You hereby agree to indemnify every Contributor for any + liability incurred by such Contributor as a result of warranty, support, + indemnity or liability terms You offer. You may include additional + disclaimers of warranty and limitations of liability specific to any + jurisdiction. + +4. Inability to Comply Due to Statute or Regulation + + If it is impossible for You to comply with any of the terms of this License + with respect to some or all of the Covered Software due to statute, judicial + order, or regulation then You must: (a) comply with the terms of this License + to the maximum extent possible; and (b) describe the limitations and the code + they affect. Such description must be placed in a text file included with all + distributions of the Covered Software under this License. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Termination + +5.1. The rights granted under this License will terminate automatically if You + fail to comply with any of its terms. However, if You become compliant, + then the rights granted under this License from a particular Contributor + are reinstated (a) provisionally, unless and until such Contributor + explicitly and finally terminates Your grants, and (b) on an ongoing basis, + if such Contributor fails to notify You of the non-compliance by some + reasonable means prior to 60 days after You have come back into compliance. + Moreover, Your grants from a particular Contributor are reinstated on an + ongoing basis if such Contributor notifies You of the non-compliance by + some reasonable means, this is the first time You have received notice of + non-compliance with this License from such Contributor, and You become + compliant prior to 30 days after Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, counter-claims, + and cross-claims) alleging that a Contributor Version directly or + indirectly infringes any patent, then the rights granted to You by any and + all Contributors for the Covered Software under Section 2.1 of this License + shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user + license agreements (excluding distributors and resellers) which have been + validly granted by You or Your distributors under this License prior to + termination shall survive termination. + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an “as is” basis, without + warranty of any kind, either expressed, implied, or statutory, including, + without limitation, warranties that the Covered Software is free of defects, + merchantable, fit for a particular purpose or non-infringing. The entire + risk as to the quality and performance of the Covered Software is with You. + Should any Covered Software prove defective in any respect, You (not any + Contributor) assume the cost of any necessary servicing, repair, or + correction. This disclaimer of warranty constitutes an essential part of this + License. No use of any Covered Software is authorized under this License + except under this disclaimer. + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including + negligence), contract, or otherwise, shall any Contributor, or anyone who + distributes Covered Software as permitted above, be liable to You for any + direct, indirect, special, incidental, or consequential damages of any + character including, without limitation, damages for lost profits, loss of + goodwill, work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses, even if such party shall have been + informed of the possibility of such damages. This limitation of liability + shall not apply to liability for death or personal injury resulting from such + party’s negligence to the extent applicable law prohibits such limitation. + Some jurisdictions do not allow the exclusion or limitation of incidental or + consequential damages, so this exclusion and limitation may not apply to You. + +8. Litigation + + Any litigation relating to this License may be brought only in the courts of + a jurisdiction where the defendant maintains its principal place of business + and such litigation shall be governed by laws of that jurisdiction, without + reference to its conflict-of-law provisions. Nothing in this Section shall + prevent a party’s ability to bring cross-claims or counter-claims. + +9. Miscellaneous + + This License represents the complete agreement concerning the subject matter + hereof. If any provision of this License is held to be unenforceable, such + provision shall be reformed only to the extent necessary to make it + enforceable. Any law or regulation which provides that the language of a + contract shall be construed against the drafter shall not be used to construe + this License against a Contributor. + + +10. Versions of the License + +10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section + 10.3, no one other than the license steward has the right to modify or + publish new versions of this License. Each version will be given a + distinguishing version number. + +10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version of + the License under which You originally received the Covered Software, or + under the terms of any subsequent version published by the license + steward. + +10.3. Modified Versions + + If you create software not governed by this License, and you want to + create a new license for such software, you may create and use a modified + version of this License if you rename the license and remove any + references to the name of the license steward (except to note that such + modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses + If You choose to distribute Source Code Form that is Incompatible With + Secondary Licenses under the terms of this version of the License, the + notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the + terms of the Mozilla Public License, v. + 2.0. If a copy of the MPL was not + distributed with this file, You can + obtain one at + http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular file, then +You may include the notice in a location (such as a LICENSE file in a relevant +directory) where a recipient would be likely to look for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - “Incompatible With Secondary Licenses” Notice + + This Source Code Form is “Incompatible + With Secondary Licenses”, as defined by + the Mozilla Public License, v. 2.0. diff --git a/vendor/github.com/hashicorp/go-multierror/Makefile b/vendor/github.com/hashicorp/go-multierror/Makefile new file mode 100644 index 000000000..b97cd6ed0 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/Makefile @@ -0,0 +1,31 @@ +TEST?=./... + +default: test + +# test runs the test suite and vets the code. +test: generate + @echo "==> Running tests..." + @go list $(TEST) \ + | grep -v "/vendor/" \ + | xargs -n1 go test -timeout=60s -parallel=10 ${TESTARGS} + +# testrace runs the race checker +testrace: generate + @echo "==> Running tests (race)..." + @go list $(TEST) \ + | grep -v "/vendor/" \ + | xargs -n1 go test -timeout=60s -race ${TESTARGS} + +# updatedeps installs all the dependencies needed to run and build. +updatedeps: + @sh -c "'${CURDIR}/scripts/deps.sh' '${NAME}'" + +# generate runs `go generate` to build the dynamically generated source files. +generate: + @echo "==> Generating..." + @find . -type f -name '.DS_Store' -delete + @go list ./... \ + | grep -v "/vendor/" \ + | xargs -n1 go generate + +.PHONY: default test testrace updatedeps generate diff --git a/vendor/github.com/hashicorp/go-multierror/README.md b/vendor/github.com/hashicorp/go-multierror/README.md new file mode 100644 index 000000000..ead5830f7 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/README.md @@ -0,0 +1,97 @@ +# go-multierror + +[![Build Status](http://img.shields.io/travis/hashicorp/go-multierror.svg?style=flat-square)][travis] +[![Go Documentation](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)][godocs] + +[travis]: https://travis-ci.org/hashicorp/go-multierror +[godocs]: https://godoc.org/github.com/hashicorp/go-multierror + +`go-multierror` is a package for Go that provides a mechanism for +representing a list of `error` values as a single `error`. + +This allows a function in Go to return an `error` that might actually +be a list of errors. If the caller knows this, they can unwrap the +list and access the errors. If the caller doesn't know, the error +formats to a nice human-readable format. + +`go-multierror` implements the +[errwrap](https://github.com/hashicorp/errwrap) interface so that it can +be used with that library, as well. + +## Installation and Docs + +Install using `go get github.com/hashicorp/go-multierror`. + +Full documentation is available at +http://godoc.org/github.com/hashicorp/go-multierror + +## Usage + +go-multierror is easy to use and purposely built to be unobtrusive in +existing Go applications/libraries that may not be aware of it. + +**Building a list of errors** + +The `Append` function is used to create a list of errors. This function +behaves a lot like the Go built-in `append` function: it doesn't matter +if the first argument is nil, a `multierror.Error`, or any other `error`, +the function behaves as you would expect. + +```go +var result error + +if err := step1(); err != nil { + result = multierror.Append(result, err) +} +if err := step2(); err != nil { + result = multierror.Append(result, err) +} + +return result +``` + +**Customizing the formatting of the errors** + +By specifying a custom `ErrorFormat`, you can customize the format +of the `Error() string` function: + +```go +var result *multierror.Error + +// ... accumulate errors here, maybe using Append + +if result != nil { + result.ErrorFormat = func([]error) string { + return "errors!" + } +} +``` + +**Accessing the list of errors** + +`multierror.Error` implements `error` so if the caller doesn't know about +multierror, it will work just fine. But if you're aware a multierror might +be returned, you can use type switches to access the list of errors: + +```go +if err := something(); err != nil { + if merr, ok := err.(*multierror.Error); ok { + // Use merr.Errors + } +} +``` + +**Returning a multierror only if there are errors** + +If you build a `multierror.Error`, you can use the `ErrorOrNil` function +to return an `error` implementation only if there are errors to return: + +```go +var result *multierror.Error + +// ... accumulate errors here + +// Return the `error` only if errors were added to the multierror, otherwise +// return nil since there are no errors. +return result.ErrorOrNil() +``` diff --git a/vendor/github.com/hashicorp/go-multierror/append.go b/vendor/github.com/hashicorp/go-multierror/append.go new file mode 100644 index 000000000..775b6e753 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/append.go @@ -0,0 +1,41 @@ +package multierror + +// Append is a helper function that will append more errors +// onto an Error in order to create a larger multi-error. +// +// If err is not a multierror.Error, then it will be turned into +// one. If any of the errs are multierr.Error, they will be flattened +// one level into err. +func Append(err error, errs ...error) *Error { + switch err := err.(type) { + case *Error: + // Typed nils can reach here, so initialize if we are nil + if err == nil { + err = new(Error) + } + + // Go through each error and flatten + for _, e := range errs { + switch e := e.(type) { + case *Error: + if e != nil { + err.Errors = append(err.Errors, e.Errors...) + } + default: + if e != nil { + err.Errors = append(err.Errors, e) + } + } + } + + return err + default: + newErrs := make([]error, 0, len(errs)+1) + if err != nil { + newErrs = append(newErrs, err) + } + newErrs = append(newErrs, errs...) + + return Append(&Error{}, newErrs...) + } +} diff --git a/vendor/github.com/hashicorp/go-multierror/flatten.go b/vendor/github.com/hashicorp/go-multierror/flatten.go new file mode 100644 index 000000000..aab8e9abe --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/flatten.go @@ -0,0 +1,26 @@ +package multierror + +// Flatten flattens the given error, merging any *Errors together into +// a single *Error. +func Flatten(err error) error { + // If it isn't an *Error, just return the error as-is + if _, ok := err.(*Error); !ok { + return err + } + + // Otherwise, make the result and flatten away! + flatErr := new(Error) + flatten(err, flatErr) + return flatErr +} + +func flatten(err error, flatErr *Error) { + switch err := err.(type) { + case *Error: + for _, e := range err.Errors { + flatten(e, flatErr) + } + default: + flatErr.Errors = append(flatErr.Errors, err) + } +} diff --git a/vendor/github.com/hashicorp/go-multierror/format.go b/vendor/github.com/hashicorp/go-multierror/format.go new file mode 100644 index 000000000..47f13c49a --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/format.go @@ -0,0 +1,27 @@ +package multierror + +import ( + "fmt" + "strings" +) + +// ErrorFormatFunc is a function callback that is called by Error to +// turn the list of errors into a string. +type ErrorFormatFunc func([]error) string + +// ListFormatFunc is a basic formatter that outputs the number of errors +// that occurred along with a bullet point list of the errors. +func ListFormatFunc(es []error) string { + if len(es) == 1 { + return fmt.Sprintf("1 error occurred:\n\t* %s\n\n", es[0]) + } + + points := make([]string, len(es)) + for i, err := range es { + points[i] = fmt.Sprintf("* %s", err) + } + + return fmt.Sprintf( + "%d errors occurred:\n\t%s\n\n", + len(es), strings.Join(points, "\n\t")) +} diff --git a/vendor/github.com/hashicorp/go-multierror/go.mod b/vendor/github.com/hashicorp/go-multierror/go.mod new file mode 100644 index 000000000..2534331d5 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/go.mod @@ -0,0 +1,3 @@ +module github.com/hashicorp/go-multierror + +require github.com/hashicorp/errwrap v1.0.0 diff --git a/vendor/github.com/hashicorp/go-multierror/go.sum b/vendor/github.com/hashicorp/go-multierror/go.sum new file mode 100644 index 000000000..85b1f8ff3 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/go.sum @@ -0,0 +1,4 @@ +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce h1:prjrVgOk2Yg6w+PflHoszQNLTUh4kaByUcEWM/9uin4= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= diff --git a/vendor/github.com/hashicorp/go-multierror/multierror.go b/vendor/github.com/hashicorp/go-multierror/multierror.go new file mode 100644 index 000000000..89b1422d1 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/multierror.go @@ -0,0 +1,51 @@ +package multierror + +import ( + "fmt" +) + +// Error is an error type to track multiple errors. This is used to +// accumulate errors in cases and return them as a single "error". +type Error struct { + Errors []error + ErrorFormat ErrorFormatFunc +} + +func (e *Error) Error() string { + fn := e.ErrorFormat + if fn == nil { + fn = ListFormatFunc + } + + return fn(e.Errors) +} + +// ErrorOrNil returns an error interface if this Error represents +// a list of errors, or returns nil if the list of errors is empty. This +// function is useful at the end of accumulation to make sure that the value +// returned represents the existence of errors. +func (e *Error) ErrorOrNil() error { + if e == nil { + return nil + } + if len(e.Errors) == 0 { + return nil + } + + return e +} + +func (e *Error) GoString() string { + return fmt.Sprintf("*%#v", *e) +} + +// WrappedErrors returns the list of errors that this Error is wrapping. +// It is an implementation of the errwrap.Wrapper interface so that +// multierror.Error can be used with that library. +// +// This method is not safe to be called concurrently and is no different +// than accessing the Errors field directly. It is implemented only to +// satisfy the errwrap.Wrapper interface. +func (e *Error) WrappedErrors() []error { + return e.Errors +} diff --git a/vendor/github.com/hashicorp/go-multierror/prefix.go b/vendor/github.com/hashicorp/go-multierror/prefix.go new file mode 100644 index 000000000..5c477abe4 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/prefix.go @@ -0,0 +1,37 @@ +package multierror + +import ( + "fmt" + + "github.com/hashicorp/errwrap" +) + +// Prefix is a helper function that will prefix some text +// to the given error. If the error is a multierror.Error, then +// it will be prefixed to each wrapped error. +// +// This is useful to use when appending multiple multierrors +// together in order to give better scoping. +func Prefix(err error, prefix string) error { + if err == nil { + return nil + } + + format := fmt.Sprintf("%s {{err}}", prefix) + switch err := err.(type) { + case *Error: + // Typed nils can reach here, so initialize if we are nil + if err == nil { + err = new(Error) + } + + // Wrap each of the errors + for i, e := range err.Errors { + err.Errors[i] = errwrap.Wrapf(format, e) + } + + return err + default: + return errwrap.Wrapf(format, err) + } +} diff --git a/vendor/github.com/hashicorp/go-multierror/sort.go b/vendor/github.com/hashicorp/go-multierror/sort.go new file mode 100644 index 000000000..fecb14e81 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/sort.go @@ -0,0 +1,16 @@ +package multierror + +// Len implements sort.Interface function for length +func (err Error) Len() int { + return len(err.Errors) +} + +// Swap implements sort.Interface function for swapping elements +func (err Error) Swap(i, j int) { + err.Errors[i], err.Errors[j] = err.Errors[j], err.Errors[i] +} + +// Less implements sort.Interface function for determining order +func (err Error) Less(i, j int) bool { + return err.Errors[i].Error() < err.Errors[j].Error() +} diff --git a/vendor/github.com/hashicorp/golang-lru/lru.go b/vendor/github.com/hashicorp/golang-lru/lru.go index c8d9b0a23..1cbe04b7d 100644 --- a/vendor/github.com/hashicorp/golang-lru/lru.go +++ b/vendor/github.com/hashicorp/golang-lru/lru.go @@ -40,31 +40,35 @@ func (c *Cache) Purge() { // Add adds a value to the cache. Returns true if an eviction occurred. func (c *Cache) Add(key, value interface{}) (evicted bool) { c.lock.Lock() - defer c.lock.Unlock() - return c.lru.Add(key, value) + evicted = c.lru.Add(key, value) + c.lock.Unlock() + return evicted } // Get looks up a key's value from the cache. func (c *Cache) Get(key interface{}) (value interface{}, ok bool) { c.lock.Lock() - defer c.lock.Unlock() - return c.lru.Get(key) + value, ok = c.lru.Get(key) + c.lock.Unlock() + return value, ok } // Contains checks if a key is in the cache, without updating the // recent-ness or deleting it for being stale. func (c *Cache) Contains(key interface{}) bool { c.lock.RLock() - defer c.lock.RUnlock() - return c.lru.Contains(key) + containKey := c.lru.Contains(key) + c.lock.RUnlock() + return containKey } // Peek returns the key value (or undefined if not found) without updating // the "recently used"-ness of the key. func (c *Cache) Peek(key interface{}) (value interface{}, ok bool) { c.lock.RLock() - defer c.lock.RUnlock() - return c.lru.Peek(key) + value, ok = c.lru.Peek(key) + c.lock.RUnlock() + return value, ok } // ContainsOrAdd checks if a key is in the cache without updating the @@ -98,13 +102,15 @@ func (c *Cache) RemoveOldest() { // Keys returns a slice of the keys in the cache, from oldest to newest. func (c *Cache) Keys() []interface{} { c.lock.RLock() - defer c.lock.RUnlock() - return c.lru.Keys() + keys := c.lru.Keys() + c.lock.RUnlock() + return keys } // Len returns the number of items in the cache. func (c *Cache) Len() int { c.lock.RLock() - defer c.lock.RUnlock() - return c.lru.Len() + length := c.lru.Len() + c.lock.RUnlock() + return length } diff --git a/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md b/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md index 949b77e30..195333e51 100644 --- a/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md +++ b/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md @@ -26,6 +26,7 @@ The tool is sponsored by the [marvin + konsorten GmbH](http://www.konsorten.de). We thank all the authors who provided code to this library: * Felix Kollmann +* Nicolas Perraut ## License diff --git a/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go b/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go new file mode 100644 index 000000000..df61a6f2f --- /dev/null +++ b/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go @@ -0,0 +1,11 @@ +// +build linux darwin + +package sequences + +import ( + "fmt" +) + +func EnableVirtualTerminalProcessing(stream uintptr, enable bool) error { + return fmt.Errorf("windows only package") +} diff --git a/vendor/github.com/mattn/go-sqlite3/.travis.yml b/vendor/github.com/mattn/go-sqlite3/.travis.yml index a21c8170e..2ae08beb4 100644 --- a/vendor/github.com/mattn/go-sqlite3/.travis.yml +++ b/vendor/github.com/mattn/go-sqlite3/.travis.yml @@ -12,18 +12,18 @@ env: matrix: - GOTAGS= - GOTAGS=libsqlite3 - - GOTAGS="sqlite_allow_uri_authority sqlite_app_armor sqlite_foreign_keys sqlite_fts5 sqlite_icu sqlite_introspect sqlite_json sqlite_secure_delete sqlite_see sqlite_stat4 sqlite_trace sqlite_userauth sqlite_vacuum_incr sqlite_vtable" + - GOTAGS="sqlite_allow_uri_authority sqlite_app_armor sqlite_foreign_keys sqlite_fts5 sqlite_icu sqlite_introspect sqlite_json sqlite_secure_delete sqlite_see sqlite_stat4 sqlite_trace sqlite_userauth sqlite_vacuum_incr sqlite_vtable sqlite_unlock_notify" - GOTAGS=sqlite_vacuum_full go: - 1.9.x - 1.10.x + - 1.11.x before_install: - | if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update - brew upgrade icu4c fi - | go get github.com/smartystreets/goconvey diff --git a/vendor/github.com/mattn/go-sqlite3/README.md b/vendor/github.com/mattn/go-sqlite3/README.md index 37d017a1d..207f1cd1e 100644 --- a/vendor/github.com/mattn/go-sqlite3/README.md +++ b/vendor/github.com/mattn/go-sqlite3/README.md @@ -67,6 +67,7 @@ This is also known as a DSN string. (Data Source Name). Options are append after the filename of the SQLite database. The database filename and options are seperated by an `?` (Question Mark). +Options should be URL-encoded (see [url.QueryEscape](https://golang.org/pkg/net/url/#QueryEscape)). This also applies when using an in-memory database instead of a file. @@ -198,7 +199,7 @@ Additional information: # Google Cloud Platform -Building on GCP is not possible because `Google Cloud Platform does not allow `gcc` to be executed. +Building on GCP is not possible because Google Cloud Platform does not allow `gcc` to be executed. Please work only with compiled final binaries. @@ -290,7 +291,7 @@ For example the TDM-GCC Toolchain can be found [here](ttps://sourceforge.net/pro When receiving a compile time error referencing recompile with `-FPIC` then you are probably using a hardend system. - You can copile the library on a hardend system with the following command. + You can compile the library on a hardend system with the following command. ```bash go build -ldflags '-extldflags=-fno-PIC' @@ -473,7 +474,7 @@ For an example see [shaxbee/go-spatialite](https://github.com/shaxbee/go-spatial For more information see [#289](https://github.com/mattn/go-sqlite3/issues/289) -- Trying to execure a `.` (dot) command throws an error. +- Trying to execute a `.` (dot) command throws an error. Error: `Error: near ".": syntax error` Dot command are part of SQLite3 CLI not of this library. diff --git a/vendor/github.com/mattn/go-sqlite3/callback.go b/vendor/github.com/mattn/go-sqlite3/callback.go index 5a735c034..2c68973b8 100644 --- a/vendor/github.com/mattn/go-sqlite3/callback.go +++ b/vendor/github.com/mattn/go-sqlite3/callback.go @@ -77,6 +77,12 @@ func updateHookTrampoline(handle uintptr, op int, db *C.char, table *C.char, row callback(op, C.GoString(db), C.GoString(table), rowid) } +//export authorizerTrampoline +func authorizerTrampoline(handle uintptr, op int, arg1 *C.char, arg2 *C.char, arg3 *C.char) int { + callback := lookupHandle(handle).(func(int, string, string, string) int) + return callback(op, C.GoString(arg1), C.GoString(arg2), C.GoString(arg3)) +} + // Use handles to avoid passing Go pointers to C. type handleVal struct { diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c b/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c index f077152a9..776319750 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c @@ -1,7 +1,7 @@ #ifndef USE_LIBSQLITE3 /****************************************************************************** ** This file is an amalgamation of many separate C source files from SQLite -** version 3.24.0. By combining all the individual C code files into this +** version 3.25.2. By combining all the individual C code files into this ** single large file, the entire code can be compiled as a single translation ** unit. This allows many compilers to do optimizations that would not be ** possible if the files were compiled separately. Performance improvements @@ -56,6 +56,12 @@ #define CTIMEOPT_VAL_(opt) #opt #define CTIMEOPT_VAL(opt) CTIMEOPT_VAL_(opt) +/* Like CTIMEOPT_VAL, but especially for SQLITE_DEFAULT_LOOKASIDE. This +** option requires a separate macro because legal values contain a single +** comma. e.g. (-DSQLITE_DEFAULT_LOOKASIDE="100,100") */ +#define CTIMEOPT_VAL2_(opt1,opt2) #opt1 "," #opt2 +#define CTIMEOPT_VAL2(opt) CTIMEOPT_VAL2_(opt) + /* ** An array of names of all compile-time options. This array should ** be sorted A-Z. @@ -139,7 +145,7 @@ static const char * const sqlite3azCompileOpt[] = { "DEFAULT_LOCKING_MODE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOCKING_MODE), #endif #ifdef SQLITE_DEFAULT_LOOKASIDE - "DEFAULT_LOOKASIDE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOOKASIDE), + "DEFAULT_LOOKASIDE=" CTIMEOPT_VAL2(SQLITE_DEFAULT_LOOKASIDE), #endif #if SQLITE_DEFAULT_MEMSTATUS "DEFAULT_MEMSTATUS", @@ -1151,9 +1157,9 @@ extern "C" { ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ -#define SQLITE_VERSION "3.24.0" -#define SQLITE_VERSION_NUMBER 3024000 -#define SQLITE_SOURCE_ID "2018-06-04 19:24:41 c7ee0833225bfd8c5ec2f9bf62b97c4e04d03bd9566366d5221ac8fb199a87ca" +#define SQLITE_VERSION "3.25.2" +#define SQLITE_VERSION_NUMBER 3025002 +#define SQLITE_SOURCE_ID "2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7" /* ** CAPI3REF: Run-Time Library Version Numbers @@ -1500,6 +1506,7 @@ SQLITE_API int sqlite3_exec( */ #define SQLITE_ERROR_MISSING_COLLSEQ (SQLITE_ERROR | (1<<8)) #define SQLITE_ERROR_RETRY (SQLITE_ERROR | (2<<8)) +#define SQLITE_ERROR_SNAPSHOT (SQLITE_ERROR | (3<<8)) #define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8)) #define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8)) #define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8)) @@ -1539,6 +1546,7 @@ SQLITE_API int sqlite3_exec( #define SQLITE_CANTOPEN_ISDIR (SQLITE_CANTOPEN | (2<<8)) #define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8)) #define SQLITE_CANTOPEN_CONVPATH (SQLITE_CANTOPEN | (4<<8)) +#define SQLITE_CANTOPEN_DIRTYWAL (SQLITE_CANTOPEN | (5<<8)) /* Not Used */ #define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8)) #define SQLITE_CORRUPT_SEQUENCE (SQLITE_CORRUPT | (2<<8)) #define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8)) @@ -1914,7 +1922,8 @@ struct sqlite3_io_methods { **
  • [[SQLITE_FCNTL_PERSIST_WAL]] ** ^The [SQLITE_FCNTL_PERSIST_WAL] opcode is used to set or query the ** persistent [WAL | Write Ahead Log] setting. By default, the auxiliary -** write ahead log and shared memory files used for transaction control +** write ahead log ([WAL file]) and shared memory +** files used for transaction control ** are automatically deleted when the latest connection to the database ** closes. Setting persistent WAL mode causes those files to persist after ** close. Persisting the files is useful when other processes that do not @@ -2100,6 +2109,26 @@ struct sqlite3_io_methods { ** a file lock using the xLock or xShmLock methods of the VFS to wait ** for up to M milliseconds before failing, where M is the single ** unsigned integer parameter. +** +**
  • [[SQLITE_FCNTL_DATA_VERSION]] +** The [SQLITE_FCNTL_DATA_VERSION] opcode is used to detect changes to +** a database file. The argument is a pointer to a 32-bit unsigned integer. +** The "data version" for the pager is written into the pointer. The +** "data version" changes whenever any change occurs to the corresponding +** database file, either through SQL statements on the same database +** connection or through transactions committed by separate database +** connections possibly in other processes. The [sqlite3_total_changes()] +** interface can be used to find if any database on the connection has changed, +** but that interface responds to changes on TEMP as well as MAIN and does +** not provide a mechanism to detect changes to MAIN only. Also, the +** [sqlite3_total_changes()] interface responds to internal changes only and +** omits changes made by other database connections. The +** [PRAGMA data_version] command provide a mechanism to detect changes to +** a single attached database that occur due to other database connections, +** but omits changes implemented by the database connection on which it is +** called. This file control is the only mechanism to detect changes that +** happen either internally or externally and that are associated with +** a particular attached database. ** */ #define SQLITE_FCNTL_LOCKSTATE 1 @@ -2135,6 +2164,7 @@ struct sqlite3_io_methods { #define SQLITE_FCNTL_COMMIT_ATOMIC_WRITE 32 #define SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE 33 #define SQLITE_FCNTL_LOCK_TIMEOUT 34 +#define SQLITE_FCNTL_DATA_VERSION 35 /* deprecated names */ #define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE @@ -3149,6 +3179,12 @@ struct sqlite3_mem_methods { ** with no schema and no content. The following process works even for ** a badly corrupted database file: **
      +**
    1. If the database connection is newly opened, make sure it has read the +** database schema by preparing then discarding some query against the +** database, or calling sqlite3_table_column_metadata(), ignoring any +** errors. This step is only necessary if the application desires to keep +** the database in WAL mode after the reset if it was in WAL mode before +** the reset. **
    2. sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 1, 0); **
    3. [sqlite3_exec](db, "[VACUUM]", 0, 0, 0); **
    4. sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 0, 0); @@ -3297,12 +3333,17 @@ SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3*,sqlite3_int64); ** program, the value returned reflects the number of rows modified by the ** previous INSERT, UPDATE or DELETE statement within the same trigger. ** -** See also the [sqlite3_total_changes()] interface, the -** [count_changes pragma], and the [changes() SQL function]. -** ** If a separate thread makes changes on the same database connection ** while [sqlite3_changes()] is running then the value returned ** is unpredictable and not meaningful. +** +** See also: +**
        +**
      • the [sqlite3_total_changes()] interface +**
      • the [count_changes pragma] +**
      • the [changes() SQL function] +**
      • the [data_version pragma] +**
      */ SQLITE_API int sqlite3_changes(sqlite3*); @@ -3320,13 +3361,26 @@ SQLITE_API int sqlite3_changes(sqlite3*); ** count, but those made as part of REPLACE constraint resolution are ** not. ^Changes to a view that are intercepted by INSTEAD OF triggers ** are not counted. -** -** See also the [sqlite3_changes()] interface, the -** [count_changes pragma], and the [total_changes() SQL function]. ** +** This the [sqlite3_total_changes(D)] interface only reports the number +** of rows that changed due to SQL statement run against database +** connection D. Any changes by other database connections are ignored. +** To detect changes against a database file from other database +** connections use the [PRAGMA data_version] command or the +** [SQLITE_FCNTL_DATA_VERSION] [file control]. +** ** If a separate thread makes changes on the same database connection ** while [sqlite3_total_changes()] is running then the value ** returned is unpredictable and not meaningful. +** +** See also: +**
        +**
      • the [sqlite3_changes()] interface +**
      • the [count_changes pragma] +**
      • the [changes() SQL function] +**
      • the [data_version pragma] +**
      • the [SQLITE_FCNTL_DATA_VERSION] [file control] +**
      */ SQLITE_API int sqlite3_total_changes(sqlite3*); @@ -4382,13 +4436,24 @@ SQLITE_API sqlite3_int64 sqlite3_uri_int64(const char*, const char*, sqlite3_int ** [database connection] D failed, then the sqlite3_errcode(D) interface ** returns the numeric [result code] or [extended result code] for that ** API call. -** If the most recent API call was successful, -** then the return value from sqlite3_errcode() is undefined. ** ^The sqlite3_extended_errcode() ** interface is the same except that it always returns the ** [extended result code] even when extended result codes are ** disabled. ** +** The values returned by sqlite3_errcode() and/or +** sqlite3_extended_errcode() might change with each API call. +** Except, there are some interfaces that are guaranteed to never +** change the value of the error code. The error-code preserving +** interfaces are: +** +**
        +**
      • sqlite3_errcode() +**
      • sqlite3_extended_errcode() +**
      • sqlite3_errmsg() +**
      • sqlite3_errmsg16() +**
      +** ** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language ** text that describes the error, as either UTF-8 or UTF-16 respectively. ** ^(Memory to hold the error message string is managed internally. @@ -5542,11 +5607,25 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt); ** from [sqlite3_column_blob()], [sqlite3_column_text()], etc. into ** [sqlite3_free()]. ** -** ^(If a memory allocation error occurs during the evaluation of any -** of these routines, a default value is returned. The default value -** is either the integer 0, the floating point number 0.0, or a NULL -** pointer. Subsequent calls to [sqlite3_errcode()] will return -** [SQLITE_NOMEM].)^ +** As long as the input parameters are correct, these routines will only +** fail if an out-of-memory error occurs during a format conversion. +** Only the following subset of interfaces are subject to out-of-memory +** errors: +** +**
        +**
      • sqlite3_column_blob() +**
      • sqlite3_column_text() +**
      • sqlite3_column_text16() +**
      • sqlite3_column_bytes() +**
      • sqlite3_column_bytes16() +**
      +** +** If an out-of-memory error occurs, then the return value from these +** routines is the same as if the column had contained an SQL NULL value. +** Valid SQL NULL returns can be distinguished from out-of-memory errors +** by invoking the [sqlite3_errcode()] immediately after the suspect +** return value is obtained and before any +** other SQLite interface is called on the same [database connection]. */ SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol); SQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol); @@ -5623,11 +5702,13 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); ** ** ^These functions (collectively known as "function creation routines") ** are used to add SQL functions or aggregates or to redefine the behavior -** of existing SQL functions or aggregates. The only differences between -** these routines are the text encoding expected for -** the second parameter (the name of the function being created) -** and the presence or absence of a destructor callback for -** the application data pointer. +** of existing SQL functions or aggregates. The only differences between +** the three "sqlite3_create_function*" routines are the text encoding +** expected for the second parameter (the name of the function being +** created) and the presence or absence of a destructor callback for +** the application data pointer. Function sqlite3_create_window_function() +** is similar, but allows the user to supply the extra callback functions +** needed by [aggregate window functions]. ** ** ^The first parameter is the [database connection] to which the SQL ** function is to be added. ^If an application uses more than one database @@ -5673,7 +5754,8 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); ** ^(The fifth parameter is an arbitrary pointer. The implementation of the ** function can gain access to this pointer using [sqlite3_user_data()].)^ ** -** ^The sixth, seventh and eighth parameters, xFunc, xStep and xFinal, are +** ^The sixth, seventh and eighth parameters passed to the three +** "sqlite3_create_function*" functions, xFunc, xStep and xFinal, are ** pointers to C-language functions that implement the SQL function or ** aggregate. ^A scalar SQL function requires an implementation of the xFunc ** callback only; NULL pointers must be passed as the xStep and xFinal @@ -5682,15 +5764,24 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); ** SQL function or aggregate, pass NULL pointers for all three function ** callbacks. ** -** ^(If the ninth parameter to sqlite3_create_function_v2() is not NULL, -** then it is destructor for the application data pointer. -** The destructor is invoked when the function is deleted, either by being -** overloaded or when the database connection closes.)^ -** ^The destructor is also invoked if the call to -** sqlite3_create_function_v2() fails. -** ^When the destructor callback of the tenth parameter is invoked, it -** is passed a single argument which is a copy of the application data -** pointer which was the fifth parameter to sqlite3_create_function_v2(). +** ^The sixth, seventh, eighth and ninth parameters (xStep, xFinal, xValue +** and xInverse) passed to sqlite3_create_window_function are pointers to +** C-language callbacks that implement the new function. xStep and xFinal +** must both be non-NULL. xValue and xInverse may either both be NULL, in +** which case a regular aggregate function is created, or must both be +** non-NULL, in which case the new function may be used as either an aggregate +** or aggregate window function. More details regarding the implementation +** of aggregate window functions are +** [user-defined window functions|available here]. +** +** ^(If the final parameter to sqlite3_create_function_v2() or +** sqlite3_create_window_function() is not NULL, then it is destructor for +** the application data pointer. The destructor is invoked when the function +** is deleted, either by being overloaded or when the database connection +** closes.)^ ^The destructor is also invoked if the call to +** sqlite3_create_function_v2() fails. ^When the destructor callback is +** invoked, it is passed a single argument which is a copy of the application +** data pointer which was the fifth parameter to sqlite3_create_function_v2(). ** ** ^It is permitted to register multiple implementations of the same ** functions with the same name but with either differing numbers of @@ -5743,6 +5834,18 @@ SQLITE_API int sqlite3_create_function_v2( void (*xFinal)(sqlite3_context*), void(*xDestroy)(void*) ); +SQLITE_API int sqlite3_create_window_function( + sqlite3 *db, + const char *zFunctionName, + int nArg, + int eTextRep, + void *pApp, + void (*xStep)(sqlite3_context*,int,sqlite3_value**), + void (*xFinal)(sqlite3_context*), + void (*xValue)(sqlite3_context*), + void (*xInverse)(sqlite3_context*,int,sqlite3_value**), + void(*xDestroy)(void*) +); /* ** CAPI3REF: Text Encodings @@ -5885,6 +5988,28 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6 ** ** These routines must be called from the same thread as ** the SQL function that supplied the [sqlite3_value*] parameters. +** +** As long as the input parameter is correct, these routines can only +** fail if an out-of-memory error occurs during a format conversion. +** Only the following subset of interfaces are subject to out-of-memory +** errors: +** +**
        +**
      • sqlite3_value_blob() +**
      • sqlite3_value_text() +**
      • sqlite3_value_text16() +**
      • sqlite3_value_text16le() +**
      • sqlite3_value_text16be() +**
      • sqlite3_value_bytes() +**
      • sqlite3_value_bytes16() +**
      +** +** If an out-of-memory error occurs, then the return value from these +** routines is the same as if the column had contained an SQL NULL value. +** Valid SQL NULL returns can be distinguished from out-of-memory errors +** by invoking the [sqlite3_errcode()] immediately after the suspect +** return value is obtained and before any +** other SQLite interface is called on the same [database connection]. */ SQLITE_API const void *sqlite3_value_blob(sqlite3_value*); SQLITE_API double sqlite3_value_double(sqlite3_value*); @@ -7351,6 +7476,7 @@ struct sqlite3_index_info { #define SQLITE_INDEX_CONSTRAINT_ISNOTNULL 70 #define SQLITE_INDEX_CONSTRAINT_ISNULL 71 #define SQLITE_INDEX_CONSTRAINT_IS 72 +#define SQLITE_INDEX_CONSTRAINT_FUNCTION 150 /* ** CAPI3REF: Register A Virtual Table Implementation @@ -8027,6 +8153,7 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*); /* ** CAPI3REF: Low-Level Control Of Database Files ** METHOD: sqlite3 +** KEYWORDS: {file control} ** ** ^The [sqlite3_file_control()] interface makes a direct call to the ** xFileControl method for the [sqlite3_io_methods] object associated @@ -8041,11 +8168,18 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*); ** the xFileControl method. ^The return value of the xFileControl ** method becomes the return value of this routine. ** +** A few opcodes for [sqlite3_file_control()] are handled directly +** by the SQLite core and never invoke the +** sqlite3_io_methods.xFileControl method. ** ^The [SQLITE_FCNTL_FILE_POINTER] value for the op parameter causes ** a pointer to the underlying [sqlite3_file] object to be written into -** the space pointed to by the 4th parameter. ^The [SQLITE_FCNTL_FILE_POINTER] -** case is a short-circuit path which does not actually invoke the -** underlying sqlite3_io_methods.xFileControl method. +** the space pointed to by the 4th parameter. The +** [SQLITE_FCNTL_JOURNAL_POINTER] works similarly except that it returns +** the [sqlite3_file] object associated with the journal file instead of +** the main database. The [SQLITE_FCNTL_VFS_POINTER] opcode returns +** a pointer to the underlying [sqlite3_vfs] object for the file. +** The [SQLITE_FCNTL_DATA_VERSION] returns the data version counter +** from the pager. ** ** ^If the second parameter (zDbName) does not match the name of any ** open database file, then SQLITE_ERROR is returned. ^This error @@ -9864,7 +9998,6 @@ SQLITE_API int sqlite3_system_errno(sqlite3*); /* ** CAPI3REF: Database Snapshot ** KEYWORDS: {snapshot} {sqlite3_snapshot} -** EXPERIMENTAL ** ** An instance of the snapshot object records the state of a [WAL mode] ** database for some specific point in history. @@ -9881,11 +10014,6 @@ SQLITE_API int sqlite3_system_errno(sqlite3*); ** version of the database file so that it is possible to later open a new read ** transaction that sees that historical version of the database rather than ** the most recent version. -** -** The constructor for this object is [sqlite3_snapshot_get()]. The -** [sqlite3_snapshot_open()] method causes a fresh read transaction to refer -** to an historical snapshot (if possible). The destructor for -** sqlite3_snapshot objects is [sqlite3_snapshot_free()]. */ typedef struct sqlite3_snapshot { unsigned char hidden[48]; @@ -9893,7 +10021,7 @@ typedef struct sqlite3_snapshot { /* ** CAPI3REF: Record A Database Snapshot -** EXPERIMENTAL +** CONSTRUCTOR: sqlite3_snapshot ** ** ^The [sqlite3_snapshot_get(D,S,P)] interface attempts to make a ** new [sqlite3_snapshot] object that records the current state of @@ -9909,7 +10037,7 @@ typedef struct sqlite3_snapshot { ** in this case. ** **
        -**
      • The database handle must be in [autocommit mode]. +**
      • The database handle must not be in [autocommit mode]. ** **
      • Schema S of [database connection] D must be a [WAL mode] database. ** @@ -9932,7 +10060,7 @@ typedef struct sqlite3_snapshot { ** to avoid a memory leak. ** ** The [sqlite3_snapshot_get()] interface is only available when the -** SQLITE_ENABLE_SNAPSHOT compile-time option is used. +** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used. */ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get( sqlite3 *db, @@ -9942,24 +10070,35 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get( /* ** CAPI3REF: Start a read transaction on an historical snapshot -** EXPERIMENTAL +** METHOD: sqlite3_snapshot ** -** ^The [sqlite3_snapshot_open(D,S,P)] interface starts a -** read transaction for schema S of -** [database connection] D such that the read transaction -** refers to historical [snapshot] P, rather than the most -** recent change to the database. -** ^The [sqlite3_snapshot_open()] interface returns SQLITE_OK on success -** or an appropriate [error code] if it fails. +** ^The [sqlite3_snapshot_open(D,S,P)] interface either starts a new read +** transaction or upgrades an existing one for schema S of +** [database connection] D such that the read transaction refers to +** historical [snapshot] P, rather than the most recent change to the +** database. ^The [sqlite3_snapshot_open()] interface returns SQLITE_OK +** on success or an appropriate [error code] if it fails. +** +** ^In order to succeed, the database connection must not be in +** [autocommit mode] when [sqlite3_snapshot_open(D,S,P)] is called. If there +** is already a read transaction open on schema S, then the database handle +** must have no active statements (SELECT statements that have been passed +** to sqlite3_step() but not sqlite3_reset() or sqlite3_finalize()). +** SQLITE_ERROR is returned if either of these conditions is violated, or +** if schema S does not exist, or if the snapshot object is invalid. +** +** ^A call to sqlite3_snapshot_open() will fail to open if the specified +** snapshot has been overwritten by a [checkpoint]. In this case +** SQLITE_ERROR_SNAPSHOT is returned. +** +** If there is already a read transaction open when this function is +** invoked, then the same read transaction remains open (on the same +** database snapshot) if SQLITE_ERROR, SQLITE_BUSY or SQLITE_ERROR_SNAPSHOT +** is returned. If another error code - for example SQLITE_PROTOCOL or an +** SQLITE_IOERR error code - is returned, then the final state of the +** read transaction is undefined. If SQLITE_OK is returned, then the +** read transaction is now open on database snapshot P. ** -** ^In order to succeed, a call to [sqlite3_snapshot_open(D,S,P)] must be -** the first operation following the [BEGIN] that takes the schema S -** out of [autocommit mode]. -** ^In other words, schema S must not currently be in -** a transaction for [sqlite3_snapshot_open(D,S,P)] to work, but the -** database connection D must be out of [autocommit mode]. -** ^A [snapshot] will fail to open if it has been overwritten by a -** [checkpoint]. ** ^(A call to [sqlite3_snapshot_open(D,S,P)] will fail if the ** database connection D does not know that the database file for ** schema S is in [WAL mode]. A database connection might not know @@ -9970,7 +10109,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get( ** database connection in order to make it ready to use snapshots.) ** ** The [sqlite3_snapshot_open()] interface is only available when the -** SQLITE_ENABLE_SNAPSHOT compile-time option is used. +** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used. */ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open( sqlite3 *db, @@ -9980,20 +10119,20 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open( /* ** CAPI3REF: Destroy a snapshot -** EXPERIMENTAL +** DESTRUCTOR: sqlite3_snapshot ** ** ^The [sqlite3_snapshot_free(P)] interface destroys [sqlite3_snapshot] P. ** The application must eventually free every [sqlite3_snapshot] object ** using this routine to avoid a memory leak. ** ** The [sqlite3_snapshot_free()] interface is only available when the -** SQLITE_ENABLE_SNAPSHOT compile-time option is used. +** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used. */ SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*); /* ** CAPI3REF: Compare the ages of two snapshot handles. -** EXPERIMENTAL +** METHOD: sqlite3_snapshot ** ** The sqlite3_snapshot_cmp(P1, P2) interface is used to compare the ages ** of two valid snapshot handles. @@ -10012,6 +10151,9 @@ SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*); ** Otherwise, this API returns a negative value if P1 refers to an older ** snapshot than P2, zero if the two handles refer to the same database ** snapshot, and a positive value if P1 is a newer snapshot than P2. +** +** This interface is only available if SQLite is compiled with the +** [SQLITE_ENABLE_SNAPSHOT] option. */ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp( sqlite3_snapshot *p1, @@ -10020,23 +10162,26 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp( /* ** CAPI3REF: Recover snapshots from a wal file -** EXPERIMENTAL +** METHOD: sqlite3_snapshot ** -** If all connections disconnect from a database file but do not perform -** a checkpoint, the existing wal file is opened along with the database -** file the next time the database is opened. At this point it is only -** possible to successfully call sqlite3_snapshot_open() to open the most -** recent snapshot of the database (the one at the head of the wal file), -** even though the wal file may contain other valid snapshots for which -** clients have sqlite3_snapshot handles. +** If a [WAL file] remains on disk after all database connections close +** (either through the use of the [SQLITE_FCNTL_PERSIST_WAL] [file control] +** or because the last process to have the database opened exited without +** calling [sqlite3_close()]) and a new connection is subsequently opened +** on that database and [WAL file], the [sqlite3_snapshot_open()] interface +** will only be able to open the last transaction added to the WAL file +** even though the WAL file contains other valid transactions. ** -** This function attempts to scan the wal file associated with database zDb +** This function attempts to scan the WAL file associated with database zDb ** of database handle db and make all valid snapshots available to ** sqlite3_snapshot_open(). It is an error if there is already a read -** transaction open on the database, or if the database is not a wal mode +** transaction open on the database, or if the database is not a WAL mode ** database. ** ** SQLITE_OK is returned if successful, or an SQLite error code otherwise. +** +** This interface is only available if SQLite is compiled with the +** [SQLITE_ENABLE_SNAPSHOT] option. */ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const char *zDb); @@ -10147,7 +10292,7 @@ SQLITE_API int sqlite3_deserialize( ** in the P argument is held in memory obtained from [sqlite3_malloc64()] ** and that SQLite should take ownership of this memory and automatically ** free it when it has finished using it. Without this flag, the caller -** is resposible for freeing any dynamically allocated memory. +** is responsible for freeing any dynamically allocated memory. ** ** The SQLITE_DESERIALIZE_RESIZEABLE flag means that SQLite is allowed to ** grow the size of the database using calls to [sqlite3_realloc64()]. This @@ -12325,7 +12470,7 @@ struct Fts5ExtensionApi { ** This way, even if the tokenizer does not provide synonyms ** when tokenizing query text (it should not - to do would be ** inefficient), it doesn't matter if the user queries for -** 'first + place' or '1st + place', as there are entires in the +** 'first + place' or '1st + place', as there are entries in the ** FTS index corresponding to both forms of the first token. **
    ** @@ -12353,7 +12498,7 @@ struct Fts5ExtensionApi { ** extra data to the FTS index or require FTS5 to query for multiple terms, ** so it is efficient in terms of disk space and query speed. However, it ** does not support prefix queries very well. If, as suggested above, the -** token "first" is subsituted for "1st" by the tokenizer, then the query: +** token "first" is substituted for "1st" by the tokenizer, then the query: ** ** ** ... MATCH '1s*' @@ -13217,94 +13362,104 @@ SQLITE_PRIVATE void sqlite3HashClear(Hash*); #define TK_REPLACE 73 #define TK_RESTRICT 74 #define TK_ROW 75 -#define TK_TRIGGER 76 -#define TK_VACUUM 77 -#define TK_VIEW 78 -#define TK_VIRTUAL 79 -#define TK_WITH 80 -#define TK_REINDEX 81 -#define TK_RENAME 82 -#define TK_CTIME_KW 83 -#define TK_ANY 84 -#define TK_BITAND 85 -#define TK_BITOR 86 -#define TK_LSHIFT 87 -#define TK_RSHIFT 88 -#define TK_PLUS 89 -#define TK_MINUS 90 -#define TK_STAR 91 -#define TK_SLASH 92 -#define TK_REM 93 -#define TK_CONCAT 94 -#define TK_COLLATE 95 -#define TK_BITNOT 96 -#define TK_ON 97 -#define TK_INDEXED 98 -#define TK_STRING 99 -#define TK_JOIN_KW 100 -#define TK_CONSTRAINT 101 -#define TK_DEFAULT 102 -#define TK_NULL 103 -#define TK_PRIMARY 104 -#define TK_UNIQUE 105 -#define TK_CHECK 106 -#define TK_REFERENCES 107 -#define TK_AUTOINCR 108 -#define TK_INSERT 109 -#define TK_DELETE 110 -#define TK_UPDATE 111 -#define TK_SET 112 -#define TK_DEFERRABLE 113 -#define TK_FOREIGN 114 -#define TK_DROP 115 -#define TK_UNION 116 -#define TK_ALL 117 -#define TK_EXCEPT 118 -#define TK_INTERSECT 119 -#define TK_SELECT 120 -#define TK_VALUES 121 -#define TK_DISTINCT 122 -#define TK_DOT 123 -#define TK_FROM 124 -#define TK_JOIN 125 -#define TK_USING 126 -#define TK_ORDER 127 -#define TK_GROUP 128 -#define TK_HAVING 129 -#define TK_LIMIT 130 -#define TK_WHERE 131 -#define TK_INTO 132 -#define TK_NOTHING 133 -#define TK_FLOAT 134 -#define TK_BLOB 135 -#define TK_INTEGER 136 -#define TK_VARIABLE 137 -#define TK_CASE 138 -#define TK_WHEN 139 -#define TK_THEN 140 -#define TK_ELSE 141 -#define TK_INDEX 142 -#define TK_ALTER 143 -#define TK_ADD 144 -#define TK_TRUEFALSE 145 -#define TK_ISNOT 146 -#define TK_FUNCTION 147 -#define TK_COLUMN 148 -#define TK_AGG_FUNCTION 149 -#define TK_AGG_COLUMN 150 -#define TK_UMINUS 151 -#define TK_UPLUS 152 -#define TK_TRUTH 153 -#define TK_REGISTER 154 -#define TK_VECTOR 155 -#define TK_SELECT_COLUMN 156 -#define TK_IF_NULL_ROW 157 -#define TK_ASTERISK 158 -#define TK_SPAN 159 -#define TK_END_OF_FILE 160 -#define TK_UNCLOSED_STRING 161 -#define TK_SPACE 162 -#define TK_ILLEGAL 163 +#define TK_ROWS 76 +#define TK_TRIGGER 77 +#define TK_VACUUM 78 +#define TK_VIEW 79 +#define TK_VIRTUAL 80 +#define TK_WITH 81 +#define TK_CURRENT 82 +#define TK_FOLLOWING 83 +#define TK_PARTITION 84 +#define TK_PRECEDING 85 +#define TK_RANGE 86 +#define TK_UNBOUNDED 87 +#define TK_REINDEX 88 +#define TK_RENAME 89 +#define TK_CTIME_KW 90 +#define TK_ANY 91 +#define TK_BITAND 92 +#define TK_BITOR 93 +#define TK_LSHIFT 94 +#define TK_RSHIFT 95 +#define TK_PLUS 96 +#define TK_MINUS 97 +#define TK_STAR 98 +#define TK_SLASH 99 +#define TK_REM 100 +#define TK_CONCAT 101 +#define TK_COLLATE 102 +#define TK_BITNOT 103 +#define TK_ON 104 +#define TK_INDEXED 105 +#define TK_STRING 106 +#define TK_JOIN_KW 107 +#define TK_CONSTRAINT 108 +#define TK_DEFAULT 109 +#define TK_NULL 110 +#define TK_PRIMARY 111 +#define TK_UNIQUE 112 +#define TK_CHECK 113 +#define TK_REFERENCES 114 +#define TK_AUTOINCR 115 +#define TK_INSERT 116 +#define TK_DELETE 117 +#define TK_UPDATE 118 +#define TK_SET 119 +#define TK_DEFERRABLE 120 +#define TK_FOREIGN 121 +#define TK_DROP 122 +#define TK_UNION 123 +#define TK_ALL 124 +#define TK_EXCEPT 125 +#define TK_INTERSECT 126 +#define TK_SELECT 127 +#define TK_VALUES 128 +#define TK_DISTINCT 129 +#define TK_DOT 130 +#define TK_FROM 131 +#define TK_JOIN 132 +#define TK_USING 133 +#define TK_ORDER 134 +#define TK_GROUP 135 +#define TK_HAVING 136 +#define TK_LIMIT 137 +#define TK_WHERE 138 +#define TK_INTO 139 +#define TK_NOTHING 140 +#define TK_FLOAT 141 +#define TK_BLOB 142 +#define TK_INTEGER 143 +#define TK_VARIABLE 144 +#define TK_CASE 145 +#define TK_WHEN 146 +#define TK_THEN 147 +#define TK_ELSE 148 +#define TK_INDEX 149 +#define TK_ALTER 150 +#define TK_ADD 151 +#define TK_WINDOW 152 +#define TK_OVER 153 +#define TK_FILTER 154 +#define TK_TRUEFALSE 155 +#define TK_ISNOT 156 +#define TK_FUNCTION 157 +#define TK_COLUMN 158 +#define TK_AGG_FUNCTION 159 +#define TK_AGG_COLUMN 160 +#define TK_UMINUS 161 +#define TK_UPLUS 162 +#define TK_TRUTH 163 +#define TK_REGISTER 164 +#define TK_VECTOR 165 +#define TK_SELECT_COLUMN 166 +#define TK_IF_NULL_ROW 167 +#define TK_ASTERISK 168 +#define TK_SPAN 169 +#define TK_END_OF_FILE 170 +#define TK_UNCLOSED_STRING 171 +#define TK_SPACE 172 +#define TK_ILLEGAL 173 /* The token codes above must all fit in 8 bits */ #define TKFLG_MASK 0xff @@ -13578,7 +13733,8 @@ typedef INT16_TYPE LogEst; # if defined(__SIZEOF_POINTER__) # define SQLITE_PTRSIZE __SIZEOF_POINTER__ # elif defined(i386) || defined(__i386__) || defined(_M_IX86) || \ - defined(_M_ARM) || defined(__arm__) || defined(__x86) + defined(_M_ARM) || defined(__arm__) || defined(__x86) || \ + (defined(__TOS_AIX__) && !defined(__64BIT__)) # define SQLITE_PTRSIZE 4 # else # define SQLITE_PTRSIZE 8 @@ -13619,7 +13775,7 @@ typedef INT16_TYPE LogEst; # if defined(i386) || defined(__i386__) || defined(_M_IX86) || \ defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \ defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \ - defined(__arm__) + defined(__arm__) || defined(_M_ARM64) # define SQLITE_BYTEORDER 1234 # elif defined(sparc) || defined(__ppc__) # define SQLITE_BYTEORDER 4321 @@ -13874,6 +14030,7 @@ typedef struct NameContext NameContext; typedef struct Parse Parse; typedef struct PreUpdate PreUpdate; typedef struct PrintfArguments PrintfArguments; +typedef struct RenameToken RenameToken; typedef struct RowSet RowSet; typedef struct Savepoint Savepoint; typedef struct Select Select; @@ -13894,8 +14051,35 @@ typedef struct VTable VTable; typedef struct VtabCtx VtabCtx; typedef struct Walker Walker; typedef struct WhereInfo WhereInfo; +typedef struct Window Window; typedef struct With With; + +/* +** The bitmask datatype defined below is used for various optimizations. +** +** Changing this from a 64-bit to a 32-bit type limits the number of +** tables in a join to 32 instead of 64. But it also reduces the size +** of the library by 738 bytes on ix86. +*/ +#ifdef SQLITE_BITMASK_TYPE + typedef SQLITE_BITMASK_TYPE Bitmask; +#else + typedef u64 Bitmask; +#endif + +/* +** The number of bits in a Bitmask. "BMS" means "BitMask Size". +*/ +#define BMS ((int)(sizeof(Bitmask)*8)) + +/* +** A bit in a Bitmask +*/ +#define MASKBIT(n) (((Bitmask)1)<<(n)) +#define MASKBIT32(n) (((unsigned int)1)<<(n)) +#define ALLBITS ((Bitmask)-1) + /* A VList object records a mapping between parameters/variables/wildcards ** in the SQL statement (such as $abc, @pqr, or :xyz) and the integer ** variable number associated with that parameter. See the format description @@ -13991,7 +14175,7 @@ SQLITE_PRIVATE int sqlite3BtreeGetOptimalReserve(Btree*); SQLITE_PRIVATE int sqlite3BtreeGetReserveNoMutex(Btree *p); SQLITE_PRIVATE int sqlite3BtreeSetAutoVacuum(Btree *, int); SQLITE_PRIVATE int sqlite3BtreeGetAutoVacuum(Btree *); -SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree*,int); +SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree*,int,int*); SQLITE_PRIVATE int sqlite3BtreeCommitPhaseOne(Btree*, const char *zMaster); SQLITE_PRIVATE int sqlite3BtreeCommitPhaseTwo(Btree*, int); SQLITE_PRIVATE int sqlite3BtreeCommit(Btree*); @@ -14214,6 +14398,9 @@ struct BtreePayload { SQLITE_PRIVATE int sqlite3BtreeInsert(BtCursor*, const BtreePayload *pPayload, int flags, int seekResult); SQLITE_PRIVATE int sqlite3BtreeFirst(BtCursor*, int *pRes); +#ifndef SQLITE_OMIT_WINDOWFUNC +SQLITE_PRIVATE void sqlite3BtreeSkipNext(BtCursor*); +#endif SQLITE_PRIVATE int sqlite3BtreeLast(BtCursor*, int *pRes); SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor*, int flags); SQLITE_PRIVATE int sqlite3BtreeEof(BtCursor*); @@ -14381,7 +14568,8 @@ struct VdbeOp { u64 cycles; /* Total time spent executing this instruction */ #endif #ifdef SQLITE_VDBE_COVERAGE - int iSrcLine; /* Source-code line that generated this opcode */ + u32 iSrcLine; /* Source-code line that generated this opcode + ** with flags in the upper 8 bits */ #endif }; typedef struct VdbeOp VdbeOp; @@ -14482,52 +14670,52 @@ typedef struct VdbeOpList VdbeOpList; #define OP_AutoCommit 1 #define OP_Transaction 2 #define OP_SorterNext 3 /* jump */ -#define OP_PrevIfOpen 4 /* jump */ -#define OP_NextIfOpen 5 /* jump */ -#define OP_Prev 6 /* jump */ -#define OP_Next 7 /* jump */ -#define OP_Checkpoint 8 -#define OP_JournalMode 9 -#define OP_Vacuum 10 -#define OP_VFilter 11 /* jump, synopsis: iplan=r[P3] zplan='P4' */ -#define OP_VUpdate 12 /* synopsis: data=r[P3@P2] */ -#define OP_Goto 13 /* jump */ -#define OP_Gosub 14 /* jump */ -#define OP_InitCoroutine 15 /* jump */ -#define OP_Yield 16 /* jump */ -#define OP_MustBeInt 17 /* jump */ -#define OP_Jump 18 /* jump */ +#define OP_Prev 4 /* jump */ +#define OP_Next 5 /* jump */ +#define OP_Checkpoint 6 +#define OP_JournalMode 7 +#define OP_Vacuum 8 +#define OP_VFilter 9 /* jump, synopsis: iplan=r[P3] zplan='P4' */ +#define OP_VUpdate 10 /* synopsis: data=r[P3@P2] */ +#define OP_Goto 11 /* jump */ +#define OP_Gosub 12 /* jump */ +#define OP_InitCoroutine 13 /* jump */ +#define OP_Yield 14 /* jump */ +#define OP_MustBeInt 15 /* jump */ +#define OP_Jump 16 /* jump */ +#define OP_Once 17 /* jump */ +#define OP_If 18 /* jump */ #define OP_Not 19 /* same as TK_NOT, synopsis: r[P2]= !r[P1] */ -#define OP_Once 20 /* jump */ -#define OP_If 21 /* jump */ -#define OP_IfNot 22 /* jump */ -#define OP_IfNullRow 23 /* jump, synopsis: if P1.nullRow then r[P3]=NULL, goto P2 */ -#define OP_SeekLT 24 /* jump, synopsis: key=r[P3@P4] */ -#define OP_SeekLE 25 /* jump, synopsis: key=r[P3@P4] */ -#define OP_SeekGE 26 /* jump, synopsis: key=r[P3@P4] */ -#define OP_SeekGT 27 /* jump, synopsis: key=r[P3@P4] */ -#define OP_NoConflict 28 /* jump, synopsis: key=r[P3@P4] */ -#define OP_NotFound 29 /* jump, synopsis: key=r[P3@P4] */ -#define OP_Found 30 /* jump, synopsis: key=r[P3@P4] */ -#define OP_SeekRowid 31 /* jump, synopsis: intkey=r[P3] */ -#define OP_NotExists 32 /* jump, synopsis: intkey=r[P3] */ -#define OP_Last 33 /* jump */ -#define OP_IfSmaller 34 /* jump */ -#define OP_SorterSort 35 /* jump */ -#define OP_Sort 36 /* jump */ -#define OP_Rewind 37 /* jump */ -#define OP_IdxLE 38 /* jump, synopsis: key=r[P3@P4] */ -#define OP_IdxGT 39 /* jump, synopsis: key=r[P3@P4] */ -#define OP_IdxLT 40 /* jump, synopsis: key=r[P3@P4] */ -#define OP_IdxGE 41 /* jump, synopsis: key=r[P3@P4] */ -#define OP_RowSetRead 42 /* jump, synopsis: r[P3]=rowset(P1) */ +#define OP_IfNot 20 /* jump */ +#define OP_IfNullRow 21 /* jump, synopsis: if P1.nullRow then r[P3]=NULL, goto P2 */ +#define OP_SeekLT 22 /* jump, synopsis: key=r[P3@P4] */ +#define OP_SeekLE 23 /* jump, synopsis: key=r[P3@P4] */ +#define OP_SeekGE 24 /* jump, synopsis: key=r[P3@P4] */ +#define OP_SeekGT 25 /* jump, synopsis: key=r[P3@P4] */ +#define OP_IfNoHope 26 /* jump, synopsis: key=r[P3@P4] */ +#define OP_NoConflict 27 /* jump, synopsis: key=r[P3@P4] */ +#define OP_NotFound 28 /* jump, synopsis: key=r[P3@P4] */ +#define OP_Found 29 /* jump, synopsis: key=r[P3@P4] */ +#define OP_SeekRowid 30 /* jump, synopsis: intkey=r[P3] */ +#define OP_NotExists 31 /* jump, synopsis: intkey=r[P3] */ +#define OP_Last 32 /* jump */ +#define OP_IfSmaller 33 /* jump */ +#define OP_SorterSort 34 /* jump */ +#define OP_Sort 35 /* jump */ +#define OP_Rewind 36 /* jump */ +#define OP_IdxLE 37 /* jump, synopsis: key=r[P3@P4] */ +#define OP_IdxGT 38 /* jump, synopsis: key=r[P3@P4] */ +#define OP_IdxLT 39 /* jump, synopsis: key=r[P3@P4] */ +#define OP_IdxGE 40 /* jump, synopsis: key=r[P3@P4] */ +#define OP_RowSetRead 41 /* jump, synopsis: r[P3]=rowset(P1) */ +#define OP_RowSetTest 42 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */ #define OP_Or 43 /* same as TK_OR, synopsis: r[P3]=(r[P1] || r[P2]) */ #define OP_And 44 /* same as TK_AND, synopsis: r[P3]=(r[P1] && r[P2]) */ -#define OP_RowSetTest 45 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */ -#define OP_Program 46 /* jump */ -#define OP_FkIfZero 47 /* jump, synopsis: if fkctr[P1]==0 goto P2 */ -#define OP_IfPos 48 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */ -#define OP_IfNotZero 49 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */ +#define OP_Program 45 /* jump */ +#define OP_FkIfZero 46 /* jump, synopsis: if fkctr[P1]==0 goto P2 */ +#define OP_IfPos 47 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */ +#define OP_IfNotZero 48 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */ +#define OP_DecrJumpZero 49 /* jump, synopsis: if (--r[P1])==0 goto P2 */ #define OP_IsNull 50 /* jump, same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */ #define OP_NotNull 51 /* jump, same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */ #define OP_Ne 52 /* jump, same as TK_NE, synopsis: IF r[P3]!=r[P1] */ @@ -14537,119 +14725,121 @@ typedef struct VdbeOpList VdbeOpList; #define OP_Lt 56 /* jump, same as TK_LT, synopsis: IF r[P3]=r[P1] */ #define OP_ElseNotEq 58 /* jump, same as TK_ESCAPE */ -#define OP_DecrJumpZero 59 /* jump, synopsis: if (--r[P1])==0 goto P2 */ -#define OP_IncrVacuum 60 /* jump */ -#define OP_VNext 61 /* jump */ -#define OP_Init 62 /* jump, synopsis: Start at P2 */ -#define OP_Return 63 -#define OP_EndCoroutine 64 -#define OP_HaltIfNull 65 /* synopsis: if r[P3]=null halt */ -#define OP_Halt 66 -#define OP_Integer 67 /* synopsis: r[P2]=P1 */ -#define OP_Int64 68 /* synopsis: r[P2]=P4 */ -#define OP_String 69 /* synopsis: r[P2]='P4' (len=P1) */ -#define OP_Null 70 /* synopsis: r[P2..P3]=NULL */ -#define OP_SoftNull 71 /* synopsis: r[P1]=NULL */ -#define OP_Blob 72 /* synopsis: r[P2]=P4 (len=P1) */ -#define OP_Variable 73 /* synopsis: r[P2]=parameter(P1,P4) */ -#define OP_Move 74 /* synopsis: r[P2@P3]=r[P1@P3] */ -#define OP_Copy 75 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */ -#define OP_SCopy 76 /* synopsis: r[P2]=r[P1] */ -#define OP_IntCopy 77 /* synopsis: r[P2]=r[P1] */ -#define OP_ResultRow 78 /* synopsis: output=r[P1@P2] */ -#define OP_CollSeq 79 -#define OP_AddImm 80 /* synopsis: r[P1]=r[P1]+P2 */ -#define OP_RealAffinity 81 -#define OP_Cast 82 /* synopsis: affinity(r[P1]) */ -#define OP_Permutation 83 -#define OP_Compare 84 /* synopsis: r[P1@P3] <-> r[P2@P3] */ -#define OP_BitAnd 85 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */ -#define OP_BitOr 86 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */ -#define OP_ShiftLeft 87 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<>r[P1] */ -#define OP_Add 89 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */ -#define OP_Subtract 90 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */ -#define OP_Multiply 91 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */ -#define OP_Divide 92 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */ -#define OP_Remainder 93 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */ -#define OP_Concat 94 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */ -#define OP_IsTrue 95 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */ -#define OP_BitNot 96 /* same as TK_BITNOT, synopsis: r[P1]= ~r[P1] */ -#define OP_Offset 97 /* synopsis: r[P3] = sqlite_offset(P1) */ -#define OP_Column 98 /* synopsis: r[P3]=PX */ -#define OP_String8 99 /* same as TK_STRING, synopsis: r[P2]='P4' */ -#define OP_Affinity 100 /* synopsis: affinity(r[P1@P2]) */ -#define OP_MakeRecord 101 /* synopsis: r[P3]=mkrec(r[P1@P2]) */ -#define OP_Count 102 /* synopsis: r[P2]=count() */ -#define OP_ReadCookie 103 -#define OP_SetCookie 104 -#define OP_ReopenIdx 105 /* synopsis: root=P2 iDb=P3 */ -#define OP_OpenRead 106 /* synopsis: root=P2 iDb=P3 */ -#define OP_OpenWrite 107 /* synopsis: root=P2 iDb=P3 */ -#define OP_OpenDup 108 -#define OP_OpenAutoindex 109 /* synopsis: nColumn=P2 */ -#define OP_OpenEphemeral 110 /* synopsis: nColumn=P2 */ -#define OP_SorterOpen 111 -#define OP_SequenceTest 112 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */ -#define OP_OpenPseudo 113 /* synopsis: P3 columns in r[P2] */ -#define OP_Close 114 -#define OP_ColumnsUsed 115 -#define OP_Sequence 116 /* synopsis: r[P2]=cursor[P1].ctr++ */ -#define OP_NewRowid 117 /* synopsis: r[P2]=rowid */ -#define OP_Insert 118 /* synopsis: intkey=r[P3] data=r[P2] */ -#define OP_InsertInt 119 /* synopsis: intkey=P3 data=r[P2] */ -#define OP_Delete 120 -#define OP_ResetCount 121 -#define OP_SorterCompare 122 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */ -#define OP_SorterData 123 /* synopsis: r[P2]=data */ -#define OP_RowData 124 /* synopsis: r[P2]=data */ -#define OP_Rowid 125 /* synopsis: r[P2]=rowid */ -#define OP_NullRow 126 -#define OP_SeekEnd 127 -#define OP_SorterInsert 128 /* synopsis: key=r[P2] */ -#define OP_IdxInsert 129 /* synopsis: key=r[P2] */ -#define OP_IdxDelete 130 /* synopsis: key=r[P2@P3] */ -#define OP_DeferredSeek 131 /* synopsis: Move P3 to P1.rowid if needed */ -#define OP_IdxRowid 132 /* synopsis: r[P2]=rowid */ -#define OP_Destroy 133 -#define OP_Real 134 /* same as TK_FLOAT, synopsis: r[P2]=P4 */ -#define OP_Clear 135 -#define OP_ResetSorter 136 -#define OP_CreateBtree 137 /* synopsis: r[P2]=root iDb=P1 flags=P3 */ -#define OP_SqlExec 138 -#define OP_ParseSchema 139 -#define OP_LoadAnalysis 140 -#define OP_DropTable 141 -#define OP_DropIndex 142 -#define OP_DropTrigger 143 -#define OP_IntegrityCk 144 -#define OP_RowSetAdd 145 /* synopsis: rowset(P1)=r[P2] */ -#define OP_Param 146 -#define OP_FkCounter 147 /* synopsis: fkctr[P1]+=P2 */ -#define OP_MemMax 148 /* synopsis: r[P1]=max(r[P1],r[P2]) */ -#define OP_OffsetLimit 149 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */ -#define OP_AggStep0 150 /* synopsis: accum=r[P3] step(r[P2@P5]) */ -#define OP_AggStep 151 /* synopsis: accum=r[P3] step(r[P2@P5]) */ -#define OP_AggFinal 152 /* synopsis: accum=r[P1] N=P2 */ -#define OP_Expire 153 -#define OP_TableLock 154 /* synopsis: iDb=P1 root=P2 write=P3 */ -#define OP_VBegin 155 -#define OP_VCreate 156 -#define OP_VDestroy 157 -#define OP_VOpen 158 -#define OP_VColumn 159 /* synopsis: r[P3]=vcolumn(P2) */ -#define OP_VRename 160 -#define OP_Pagecount 161 -#define OP_MaxPgcnt 162 -#define OP_PureFunc0 163 -#define OP_Function0 164 /* synopsis: r[P3]=func(r[P2@P5]) */ -#define OP_PureFunc 165 -#define OP_Function 166 /* synopsis: r[P3]=func(r[P2@P5]) */ -#define OP_Trace 167 -#define OP_CursorHint 168 -#define OP_Noop 169 -#define OP_Explain 170 -#define OP_Abortable 171 +#define OP_IncrVacuum 59 /* jump */ +#define OP_VNext 60 /* jump */ +#define OP_Init 61 /* jump, synopsis: Start at P2 */ +#define OP_PureFunc0 62 +#define OP_Function0 63 /* synopsis: r[P3]=func(r[P2@P5]) */ +#define OP_PureFunc 64 +#define OP_Function 65 /* synopsis: r[P3]=func(r[P2@P5]) */ +#define OP_Return 66 +#define OP_EndCoroutine 67 +#define OP_HaltIfNull 68 /* synopsis: if r[P3]=null halt */ +#define OP_Halt 69 +#define OP_Integer 70 /* synopsis: r[P2]=P1 */ +#define OP_Int64 71 /* synopsis: r[P2]=P4 */ +#define OP_String 72 /* synopsis: r[P2]='P4' (len=P1) */ +#define OP_Null 73 /* synopsis: r[P2..P3]=NULL */ +#define OP_SoftNull 74 /* synopsis: r[P1]=NULL */ +#define OP_Blob 75 /* synopsis: r[P2]=P4 (len=P1) */ +#define OP_Variable 76 /* synopsis: r[P2]=parameter(P1,P4) */ +#define OP_Move 77 /* synopsis: r[P2@P3]=r[P1@P3] */ +#define OP_Copy 78 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */ +#define OP_SCopy 79 /* synopsis: r[P2]=r[P1] */ +#define OP_IntCopy 80 /* synopsis: r[P2]=r[P1] */ +#define OP_ResultRow 81 /* synopsis: output=r[P1@P2] */ +#define OP_CollSeq 82 +#define OP_AddImm 83 /* synopsis: r[P1]=r[P1]+P2 */ +#define OP_RealAffinity 84 +#define OP_Cast 85 /* synopsis: affinity(r[P1]) */ +#define OP_Permutation 86 +#define OP_Compare 87 /* synopsis: r[P1@P3] <-> r[P2@P3] */ +#define OP_IsTrue 88 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */ +#define OP_Offset 89 /* synopsis: r[P3] = sqlite_offset(P1) */ +#define OP_Column 90 /* synopsis: r[P3]=PX */ +#define OP_Affinity 91 /* synopsis: affinity(r[P1@P2]) */ +#define OP_BitAnd 92 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */ +#define OP_BitOr 93 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */ +#define OP_ShiftLeft 94 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<>r[P1] */ +#define OP_Add 96 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */ +#define OP_Subtract 97 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */ +#define OP_Multiply 98 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */ +#define OP_Divide 99 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */ +#define OP_Remainder 100 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */ +#define OP_Concat 101 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */ +#define OP_MakeRecord 102 /* synopsis: r[P3]=mkrec(r[P1@P2]) */ +#define OP_BitNot 103 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */ +#define OP_Count 104 /* synopsis: r[P2]=count() */ +#define OP_ReadCookie 105 +#define OP_String8 106 /* same as TK_STRING, synopsis: r[P2]='P4' */ +#define OP_SetCookie 107 +#define OP_ReopenIdx 108 /* synopsis: root=P2 iDb=P3 */ +#define OP_OpenRead 109 /* synopsis: root=P2 iDb=P3 */ +#define OP_OpenWrite 110 /* synopsis: root=P2 iDb=P3 */ +#define OP_OpenDup 111 +#define OP_OpenAutoindex 112 /* synopsis: nColumn=P2 */ +#define OP_OpenEphemeral 113 /* synopsis: nColumn=P2 */ +#define OP_SorterOpen 114 +#define OP_SequenceTest 115 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */ +#define OP_OpenPseudo 116 /* synopsis: P3 columns in r[P2] */ +#define OP_Close 117 +#define OP_ColumnsUsed 118 +#define OP_SeekHit 119 /* synopsis: seekHit=P2 */ +#define OP_Sequence 120 /* synopsis: r[P2]=cursor[P1].ctr++ */ +#define OP_NewRowid 121 /* synopsis: r[P2]=rowid */ +#define OP_Insert 122 /* synopsis: intkey=r[P3] data=r[P2] */ +#define OP_InsertInt 123 /* synopsis: intkey=P3 data=r[P2] */ +#define OP_Delete 124 +#define OP_ResetCount 125 +#define OP_SorterCompare 126 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */ +#define OP_SorterData 127 /* synopsis: r[P2]=data */ +#define OP_RowData 128 /* synopsis: r[P2]=data */ +#define OP_Rowid 129 /* synopsis: r[P2]=rowid */ +#define OP_NullRow 130 +#define OP_SeekEnd 131 +#define OP_SorterInsert 132 /* synopsis: key=r[P2] */ +#define OP_IdxInsert 133 /* synopsis: key=r[P2] */ +#define OP_IdxDelete 134 /* synopsis: key=r[P2@P3] */ +#define OP_DeferredSeek 135 /* synopsis: Move P3 to P1.rowid if needed */ +#define OP_IdxRowid 136 /* synopsis: r[P2]=rowid */ +#define OP_Destroy 137 +#define OP_Clear 138 +#define OP_ResetSorter 139 +#define OP_CreateBtree 140 /* synopsis: r[P2]=root iDb=P1 flags=P3 */ +#define OP_Real 141 /* same as TK_FLOAT, synopsis: r[P2]=P4 */ +#define OP_SqlExec 142 +#define OP_ParseSchema 143 +#define OP_LoadAnalysis 144 +#define OP_DropTable 145 +#define OP_DropIndex 146 +#define OP_DropTrigger 147 +#define OP_IntegrityCk 148 +#define OP_RowSetAdd 149 /* synopsis: rowset(P1)=r[P2] */ +#define OP_Param 150 +#define OP_FkCounter 151 /* synopsis: fkctr[P1]+=P2 */ +#define OP_MemMax 152 /* synopsis: r[P1]=max(r[P1],r[P2]) */ +#define OP_OffsetLimit 153 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */ +#define OP_AggInverse 154 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */ +#define OP_AggStep 155 /* synopsis: accum=r[P3] step(r[P2@P5]) */ +#define OP_AggStep1 156 /* synopsis: accum=r[P3] step(r[P2@P5]) */ +#define OP_AggValue 157 /* synopsis: r[P3]=value N=P2 */ +#define OP_AggFinal 158 /* synopsis: accum=r[P1] N=P2 */ +#define OP_Expire 159 +#define OP_TableLock 160 /* synopsis: iDb=P1 root=P2 write=P3 */ +#define OP_VBegin 161 +#define OP_VCreate 162 +#define OP_VDestroy 163 +#define OP_VOpen 164 +#define OP_VColumn 165 /* synopsis: r[P3]=vcolumn(P2) */ +#define OP_VRename 166 +#define OP_Pagecount 167 +#define OP_MaxPgcnt 168 +#define OP_Trace 169 +#define OP_CursorHint 170 +#define OP_Noop 171 +#define OP_Explain 172 +#define OP_Abortable 173 /* Properties such as "out2" or "jump" that are specified in ** comments following the "case" for each opcode in the vdbe.c @@ -14662,28 +14852,28 @@ typedef struct VdbeOpList VdbeOpList; #define OPFLG_OUT2 0x10 /* out2: P2 is an output */ #define OPFLG_OUT3 0x20 /* out3: P3 is an output */ #define OPFLG_INITIALIZER {\ -/* 0 */ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,\ -/* 8 */ 0x00, 0x10, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01,\ -/* 16 */ 0x03, 0x03, 0x01, 0x12, 0x01, 0x03, 0x03, 0x01,\ +/* 0 */ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x10,\ +/* 8 */ 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03,\ +/* 16 */ 0x01, 0x01, 0x03, 0x12, 0x03, 0x01, 0x09, 0x09,\ /* 24 */ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,\ -/* 32 */ 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\ -/* 40 */ 0x01, 0x01, 0x23, 0x26, 0x26, 0x0b, 0x01, 0x01,\ +/* 32 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\ +/* 40 */ 0x01, 0x23, 0x0b, 0x26, 0x26, 0x01, 0x01, 0x03,\ /* 48 */ 0x03, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\ -/* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x01, 0x01, 0x01, 0x02,\ -/* 64 */ 0x02, 0x08, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00,\ -/* 72 */ 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\ -/* 80 */ 0x02, 0x02, 0x02, 0x00, 0x00, 0x26, 0x26, 0x26,\ -/* 88 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x12,\ -/* 96 */ 0x12, 0x20, 0x00, 0x10, 0x00, 0x00, 0x10, 0x10,\ -/* 104 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ -/* 112 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\ -/* 120 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,\ -/* 128 */ 0x04, 0x04, 0x00, 0x00, 0x10, 0x10, 0x10, 0x00,\ -/* 136 */ 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ -/* 144 */ 0x00, 0x06, 0x10, 0x00, 0x04, 0x1a, 0x00, 0x00,\ -/* 152 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ -/* 160 */ 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,\ -/* 168 */ 0x00, 0x00, 0x00, 0x00,} +/* 56 */ 0x0b, 0x0b, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,\ +/* 64 */ 0x00, 0x00, 0x02, 0x02, 0x08, 0x00, 0x10, 0x10,\ +/* 72 */ 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10,\ +/* 80 */ 0x10, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00,\ +/* 88 */ 0x12, 0x20, 0x00, 0x00, 0x26, 0x26, 0x26, 0x26,\ +/* 96 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x00, 0x12,\ +/* 104 */ 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,\ +/* 112 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ +/* 120 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ +/* 128 */ 0x00, 0x10, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00,\ +/* 136 */ 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\ +/* 144 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x00,\ +/* 152 */ 0x04, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ +/* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,\ +/* 168 */ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,} /* The sqlite3P2Values() routine is able to run faster if it knows ** the value of the largest JUMP opcode. The smaller the maximum @@ -14691,7 +14881,7 @@ typedef struct VdbeOpList VdbeOpList; ** generated this include file strives to group all JUMP opcodes ** together near the beginning of the list. */ -#define SQLITE_MX_JUMP_OPCODE 62 /* Maximum JUMP opcode */ +#define SQLITE_MX_JUMP_OPCODE 61 /* Maximum JUMP opcode */ /************** End of opcodes.h *********************************************/ /************** Continuing where we left off in vdbe.h ***********************/ @@ -14765,9 +14955,6 @@ SQLITE_PRIVATE void sqlite3VdbeClearObject(sqlite3*,Vdbe*); SQLITE_PRIVATE void sqlite3VdbeMakeReady(Vdbe*,Parse*); SQLITE_PRIVATE int sqlite3VdbeFinalize(Vdbe*); SQLITE_PRIVATE void sqlite3VdbeResolveLabel(Vdbe*, int); -#ifdef SQLITE_COVERAGE_TEST -SQLITE_PRIVATE int sqlite3VdbeLabelHasBeenResolved(Vdbe*,int); -#endif SQLITE_PRIVATE int sqlite3VdbeCurrentAddr(Vdbe*); #ifdef SQLITE_DEBUG SQLITE_PRIVATE int sqlite3VdbeAssertMayAbort(Vdbe *, int); @@ -14789,6 +14976,7 @@ SQLITE_PRIVATE void sqlite3VdbeSetVarmask(Vdbe*, int); SQLITE_PRIVATE char *sqlite3VdbeExpandSql(Vdbe*, const char*); #endif SQLITE_PRIVATE int sqlite3MemCompare(const Mem*, const Mem*, const CollSeq*); +SQLITE_PRIVATE int sqlite3BlobCompare(const Mem*, const Mem*); SQLITE_PRIVATE void sqlite3VdbeRecordUnpack(KeyInfo*,int,const void*,UnpackedRecord*); SQLITE_PRIVATE int sqlite3VdbeRecordCompare(int,const void*,UnpackedRecord*); @@ -14844,23 +15032,52 @@ SQLITE_PRIVATE void sqlite3VdbeNoopComment(Vdbe*, const char*, ...); ** ** VdbeCoverageNeverTaken(v) // Previous branch is never taken ** +** VdbeCoverageNeverNull(v) // Previous three-way branch is only +** // taken on the first two ways. The +** // NULL option is not possible +** +** VdbeCoverageEqNe(v) // Previous OP_Jump is only interested +** // in distingishing equal and not-equal. +** ** Every VDBE branch operation must be tagged with one of the macros above. ** If not, then when "make test" is run with -DSQLITE_VDBE_COVERAGE and ** -DSQLITE_DEBUG then an ALWAYS() will fail in the vdbeTakeBranch() ** routine in vdbe.c, alerting the developer to the missed tag. +** +** During testing, the test application will invoke +** sqlite3_test_control(SQLITE_TESTCTRL_VDBE_COVERAGE,...) to set a callback +** routine that is invoked as each bytecode branch is taken. The callback +** contains the sqlite3.c source line number ov the VdbeCoverage macro and +** flags to indicate whether or not the branch was taken. The test application +** is responsible for keeping track of this and reporting byte-code branches +** that are never taken. +** +** See the VdbeBranchTaken() macro and vdbeTakeBranch() function in the +** vdbe.c source file for additional information. */ #ifdef SQLITE_VDBE_COVERAGE SQLITE_PRIVATE void sqlite3VdbeSetLineNumber(Vdbe*,int); # define VdbeCoverage(v) sqlite3VdbeSetLineNumber(v,__LINE__) # define VdbeCoverageIf(v,x) if(x)sqlite3VdbeSetLineNumber(v,__LINE__) -# define VdbeCoverageAlwaysTaken(v) sqlite3VdbeSetLineNumber(v,2); -# define VdbeCoverageNeverTaken(v) sqlite3VdbeSetLineNumber(v,1); +# define VdbeCoverageAlwaysTaken(v) \ + sqlite3VdbeSetLineNumber(v,__LINE__|0x5000000); +# define VdbeCoverageNeverTaken(v) \ + sqlite3VdbeSetLineNumber(v,__LINE__|0x6000000); +# define VdbeCoverageNeverNull(v) \ + sqlite3VdbeSetLineNumber(v,__LINE__|0x4000000); +# define VdbeCoverageNeverNullIf(v,x) \ + if(x)sqlite3VdbeSetLineNumber(v,__LINE__|0x4000000); +# define VdbeCoverageEqNe(v) \ + sqlite3VdbeSetLineNumber(v,__LINE__|0x8000000); # define VDBE_OFFSET_LINENO(x) (__LINE__+x) #else # define VdbeCoverage(v) # define VdbeCoverageIf(v,x) # define VdbeCoverageAlwaysTaken(v) # define VdbeCoverageNeverTaken(v) +# define VdbeCoverageNeverNull(v) +# define VdbeCoverageNeverNullIf(v,x) +# define VdbeCoverageEqNe(v) # define VDBE_OFFSET_LINENO(x) 0 #endif @@ -14870,6 +15087,10 @@ SQLITE_PRIVATE void sqlite3VdbeScanStatus(Vdbe*, int, int, int, LogEst, const ch # define sqlite3VdbeScanStatus(a,b,c,d,e) #endif +#if defined(SQLITE_DEBUG) || defined(VDBE_PROFILE) +SQLITE_PRIVATE void sqlite3VdbePrintOp(FILE*, int, VdbeOp*); +#endif + #endif /* SQLITE_VDBE_H */ /************** End of vdbe.h ************************************************/ @@ -15064,6 +15285,8 @@ SQLITE_PRIVATE int sqlite3PagerUseWal(Pager *pPager, Pgno); SQLITE_PRIVATE int sqlite3PagerSnapshotGet(Pager *pPager, sqlite3_snapshot **ppSnapshot); SQLITE_PRIVATE int sqlite3PagerSnapshotOpen(Pager *pPager, sqlite3_snapshot *pSnapshot); SQLITE_PRIVATE int sqlite3PagerSnapshotRecover(Pager *pPager); +SQLITE_PRIVATE int sqlite3PagerSnapshotCheck(Pager *pPager, sqlite3_snapshot *pSnapshot); +SQLITE_PRIVATE void sqlite3PagerSnapshotUnlock(Pager *pPager); # endif #else # define sqlite3PagerUseWal(x,y) 0 @@ -16047,6 +16270,7 @@ struct sqlite3 { #define SQLITE_EnableQPSG 0x00800000 /* Query Planner Stability Guarantee*/ #define SQLITE_TriggerEQP 0x01000000 /* Show trigger EXPLAIN QUERY PLAN */ #define SQLITE_ResetDatabase 0x02000000 /* Reset the database */ +#define SQLITE_LegacyAlter 0x04000000 /* Legacy ALTER TABLE behaviour */ /* Flags used only if debugging */ #ifdef SQLITE_DEBUG @@ -16071,7 +16295,7 @@ struct sqlite3 { ** selectively disable various optimizations. */ #define SQLITE_QueryFlattener 0x0001 /* Query flattening */ -#define SQLITE_ColumnCache 0x0002 /* Column cache */ + /* 0x0002 available for reuse */ #define SQLITE_GroupByOrder 0x0004 /* GROUPBY cover of ORDERBY */ #define SQLITE_FactorOutConst 0x0008 /* Constant factoring */ #define SQLITE_DistinctOpt 0x0010 /* DISTINCT using indexes */ @@ -16085,6 +16309,8 @@ struct sqlite3 { /* TH3 expects the Stat34 ^^^^^^ value to be 0x0800. Don't change it */ #define SQLITE_PushDown 0x1000 /* The push-down optimization */ #define SQLITE_SimplifyJoin 0x2000 /* Convert LEFT JOIN to JOIN */ +#define SQLITE_SkipScan 0x4000 /* Skip-scans */ +#define SQLITE_PropagateConst 0x8000 /* The constant propagation opt */ #define SQLITE_AllOpts 0xffff /* All optimizations */ /* @@ -16123,11 +16349,13 @@ struct sqlite3 { */ struct FuncDef { i8 nArg; /* Number of arguments. -1 means unlimited */ - u16 funcFlags; /* Some combination of SQLITE_FUNC_* */ + u32 funcFlags; /* Some combination of SQLITE_FUNC_* */ void *pUserData; /* User data parameter */ FuncDef *pNext; /* Next function with same name */ void (*xSFunc)(sqlite3_context*,int,sqlite3_value**); /* func or agg-step */ void (*xFinalize)(sqlite3_context*); /* Agg finalizer */ + void (*xValue)(sqlite3_context*); /* Current agg value */ + void (*xInverse)(sqlite3_context*,int,sqlite3_value**); /* inverse agg-step */ const char *zName; /* SQL name of the function. */ union { FuncDef *pHash; /* Next with a different name but the same hash */ @@ -16184,6 +16412,8 @@ struct FuncDestructor { ** single query - might change over time */ #define SQLITE_FUNC_AFFINITY 0x4000 /* Built-in affinity() function */ #define SQLITE_FUNC_OFFSET 0x8000 /* Built-in sqlite_offset() function */ +#define SQLITE_FUNC_WINDOW 0x10000 /* Built-in window-only function */ +#define SQLITE_FUNC_WINDOW_SIZE 0x20000 /* Requires partition size as arg. */ /* ** The following three macros, FUNCTION(), LIKEFUNC() and AGGREGATE() are @@ -16218,6 +16448,12 @@ struct FuncDestructor { ** are interpreted in the same way as the first 4 parameters to ** FUNCTION(). ** +** WFUNCTION(zName, nArg, iArg, xStep, xFinal, xValue, xInverse) +** Used to create an aggregate function definition implemented by +** the C functions xStep and xFinal. The first four parameters +** are interpreted in the same way as the first 4 parameters to +** FUNCTION(). +** ** LIKEFUNC(zName, nArg, pArg, flags) ** Used to create a scalar function definition of a function zName ** that accepts nArg arguments and is implemented by a call to C @@ -16228,31 +16464,35 @@ struct FuncDestructor { */ #define FUNCTION(zName, nArg, iArg, bNC, xFunc) \ {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \ - SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, #zName, {0} } + SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} } #define VFUNCTION(zName, nArg, iArg, bNC, xFunc) \ {nArg, SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \ - SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, #zName, {0} } + SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} } #define DFUNCTION(zName, nArg, iArg, bNC, xFunc) \ {nArg, SQLITE_FUNC_SLOCHNG|SQLITE_UTF8, \ - 0, 0, xFunc, 0, #zName, {0} } + 0, 0, xFunc, 0, 0, 0, #zName, {0} } #define PURE_DATE(zName, nArg, iArg, bNC, xFunc) \ {nArg, SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|SQLITE_FUNC_CONSTANT, \ - (void*)&sqlite3Config, 0, xFunc, 0, #zName, {0} } + (void*)&sqlite3Config, 0, xFunc, 0, 0, 0, #zName, {0} } #define FUNCTION2(zName, nArg, iArg, bNC, xFunc, extraFlags) \ {nArg,SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL)|extraFlags,\ - SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, #zName, {0} } + SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} } #define STR_FUNCTION(zName, nArg, pArg, bNC, xFunc) \ {nArg, SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \ - pArg, 0, xFunc, 0, #zName, } + pArg, 0, xFunc, 0, 0, 0, #zName, } #define LIKEFUNC(zName, nArg, arg, flags) \ {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|flags, \ - (void *)arg, 0, likeFunc, 0, #zName, {0} } -#define AGGREGATE(zName, nArg, arg, nc, xStep, xFinal) \ + (void *)arg, 0, likeFunc, 0, 0, 0, #zName, {0} } +#define AGGREGATE(zName, nArg, arg, nc, xStep, xFinal, xValue) \ {nArg, SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL), \ - SQLITE_INT_TO_PTR(arg), 0, xStep,xFinal,#zName, {0}} + SQLITE_INT_TO_PTR(arg), 0, xStep,xFinal,xValue,0,#zName, {0}} #define AGGREGATE2(zName, nArg, arg, nc, xStep, xFinal, extraFlags) \ {nArg, SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL)|extraFlags, \ - SQLITE_INT_TO_PTR(arg), 0, xStep,xFinal,#zName, {0}} + SQLITE_INT_TO_PTR(arg), 0, xStep,xFinal,xFinal,0,#zName, {0}} + +#define WAGGREGATE(zName, nArg, arg, nc, xStep, xFinal, xValue, xInverse, f) \ + {nArg, SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL)|f, \ + SQLITE_INT_TO_PTR(arg), 0, xStep,xFinal,xValue,xInverse,#zName, {0}} /* ** All current savepoints are stored in a linked list starting at @@ -16738,6 +16978,7 @@ struct Index { tRowcnt *aiRowEst; /* Non-logarithmic stat1 data for this index */ tRowcnt nRowEst0; /* Non-logarithmic number of rows in the index */ #endif + Bitmask colNotIdxed; /* 0 for unindexed columns in pTab */ }; /* @@ -16776,9 +17017,11 @@ struct IndexSample { ** Each token coming out of the lexer is an instance of ** this structure. Tokens are also used as part of an expression. ** -** Note if Token.z==0 then Token.dyn and Token.n are undefined and -** may contain random values. Do not make any assumptions about Token.dyn -** and Token.n when Token.z==0. +** The memory that "z" points to is owned by other objects. Take care +** that the owner of the "z" string does not deallocate the string before +** the Token goes out of scope! Very often, the "z" points to some place +** in the middle of the Parse.zSql text. But it might also point to a +** static string. */ struct Token { const char *z; /* Text of the token. Not NULL-terminated! */ @@ -16953,6 +17196,9 @@ struct Expr { AggInfo *pAggInfo; /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */ Table *pTab; /* Table for TK_COLUMN expressions. Can be NULL ** for a column of an index on an expression */ +#ifndef SQLITE_OMIT_WINDOWFUNC + Window *pWin; /* Window definition for window functions */ +#endif }; /* @@ -16961,7 +17207,7 @@ struct Expr { #define EP_FromJoin 0x000001 /* Originates in ON/USING clause of outer join */ #define EP_Agg 0x000002 /* Contains one or more aggregate functions */ #define EP_HasFunc 0x000004 /* Contains one or more functions of any kind */ - /* 0x000008 // available for use */ +#define EP_FixedCol 0x000008 /* TK_Column with a known fixed value */ #define EP_Distinct 0x000010 /* Aggregate function with DISTINCT keyword */ #define EP_VarSelect 0x000020 /* pSelect is correlated, not constant */ #define EP_DblQuoted 0x000040 /* token.z was originally in "..." */ @@ -17083,31 +17329,6 @@ struct IdList { int nId; /* Number of identifiers on the list */ }; -/* -** The bitmask datatype defined below is used for various optimizations. -** -** Changing this from a 64-bit to a 32-bit type limits the number of -** tables in a join to 32 instead of 64. But it also reduces the size -** of the library by 738 bytes on ix86. -*/ -#ifdef SQLITE_BITMASK_TYPE - typedef SQLITE_BITMASK_TYPE Bitmask; -#else - typedef u64 Bitmask; -#endif - -/* -** The number of bits in a Bitmask. "BMS" means "BitMask Size". -*/ -#define BMS ((int)(sizeof(Bitmask)*8)) - -/* -** A bit in a Bitmask -*/ -#define MASKBIT(n) (((Bitmask)1)<<(n)) -#define MASKBIT32(n) (((unsigned int)1)<<(n)) -#define ALLBITS ((Bitmask)-1) - /* ** The following structure describes the FROM clause of a SELECT statement. ** Each table or subquery in the FROM clause is a separate element of @@ -17239,6 +17460,7 @@ struct NameContext { int nRef; /* Number of names resolved by this context */ int nErr; /* Number of errors encountered while resolving names */ u16 ncFlags; /* Zero or more NC_* flags defined below */ + Select *pWinSelect; /* SELECT statement for any window functions */ }; /* @@ -17261,6 +17483,7 @@ struct NameContext { #define NC_UUpsert 0x0200 /* True if uNC.pUpsert is used */ #define NC_MinMaxAgg 0x1000 /* min/max aggregates seen. See note above */ #define NC_Complex 0x2000 /* True if a function or subquery seen */ +#define NC_AllowWin 0x4000 /* Window functions are allowed here */ /* ** An instance of the following object describes a single ON CONFLICT @@ -17315,9 +17538,7 @@ struct Select { LogEst nSelectRow; /* Estimated number of result rows */ u32 selFlags; /* Various SF_* values */ int iLimit, iOffset; /* Memory registers holding LIMIT & OFFSET counters */ -#if SELECTTRACE_ENABLED - char zSelName[12]; /* Symbolic name of this SELECT use for debugging */ -#endif + u32 selId; /* Unique identifier number for this SELECT */ int addrOpenEphm[2]; /* OP_OpenEphem opcodes related to this select */ SrcList *pSrc; /* The FROM clause */ Expr *pWhere; /* The WHERE clause */ @@ -17328,6 +17549,10 @@ struct Select { Select *pNext; /* Next select to the left in a compound */ Expr *pLimit; /* LIMIT expression. NULL means not used. */ With *pWith; /* WITH clause attached to this select. Or NULL. */ +#ifndef SQLITE_OMIT_WINDOWFUNC + Window *pWin; /* List of window functions */ + Window *pWinDefn; /* List of named window definitions */ +#endif }; /* @@ -17471,13 +17696,6 @@ struct AutoincInfo { int regCtr; /* Memory register holding the rowid counter */ }; -/* -** Size of the column cache -*/ -#ifndef SQLITE_N_COLCACHE -# define SQLITE_N_COLCACHE 10 -#endif - /* ** At least one instance of the following structure is created for each ** trigger that may be fired while parsing an INSERT, UPDATE or DELETE @@ -17553,7 +17771,6 @@ struct Parse { u8 hasCompound; /* Need to invoke convertCompoundSelectToSubquery() */ u8 okConstFactor; /* OK to factor out constants */ u8 disableLookaside; /* Number of times lookaside has been disabled */ - u8 nColCache; /* Number of entries in aColCache[] */ int nRangeReg; /* Size of the temporary register block */ int iRangeReg; /* First register in temporary register block */ int nErr; /* Number of errors seen */ @@ -17563,8 +17780,6 @@ struct Parse { int szOpAlloc; /* Bytes of memory space allocated for Vdbe.aOp[] */ int iSelfTab; /* Table associated with an index on expr, or negative ** of the base register during check-constraint eval */ - int iCacheLevel; /* ColCache valid when aColCache[].iLevel<=iCacheLevel */ - int iCacheCnt; /* Counter used to generate aColCache[].lru values */ int nLabel; /* Number of labels used */ int *aLabel; /* Space to hold the labels */ ExprList *pConstExpr;/* Constant expressions */ @@ -17574,9 +17789,7 @@ struct Parse { int regRowid; /* Register holding rowid of CREATE TABLE entry */ int regRoot; /* Register holding root page number for new objects */ int nMaxArg; /* Max args passed to user function by sub-program */ -#if SELECTTRACE_ENABLED - int nSelect; /* Number of SELECT statements seen */ -#endif + int nSelect; /* Number of SELECT stmts. Counter for Select.selId */ #ifndef SQLITE_OMIT_SHARED_CACHE int nTableLock; /* Number of locks in aTableLock */ TableLock *aTableLock; /* Required table locks for shared-cache mode */ @@ -17596,17 +17809,9 @@ struct Parse { ** Fields above must be initialized to zero. The fields that follow, ** down to the beginning of the recursive section, do not need to be ** initialized as they will be set before being used. The boundary is - ** determined by offsetof(Parse,aColCache). + ** determined by offsetof(Parse,aTempReg). **************************************************************************/ - struct yColCache { - int iTable; /* Table cursor number */ - i16 iColumn; /* Table column number */ - u8 tempReg; /* iReg is a temp register that needs to be freed */ - int iLevel; /* Nesting level */ - int iReg; /* Reg with value of this column. 0 means none. */ - int lru; /* Least recently used entry has the smallest value */ - } aColCache[SQLITE_N_COLCACHE]; /* One for each column cache entry */ int aTempReg[8]; /* Holding area for temporary registers */ Token sNameToken; /* Token with unqualified schema object name */ @@ -17621,8 +17826,10 @@ struct Parse { ynVar nVar; /* Number of '?' variables seen in the SQL so far */ u8 iPkSortOrder; /* ASC or DESC for INTEGER PRIMARY KEY */ u8 explain; /* True if the EXPLAIN flag is found on the query */ +#if !(defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_OMIT_ALTERTABLE)) + u8 eParseMode; /* PARSE_MODE_XXX constant */ +#endif #ifndef SQLITE_OMIT_VIRTUALTABLE - u8 declareVtab; /* True if inside sqlite3_declare_vtab() */ int nVtabLock; /* Number of virtual tables to lock */ #endif int nHeight; /* Expression tree height of current sub-select */ @@ -17633,6 +17840,7 @@ struct Parse { Vdbe *pReprepare; /* VM being reprepared (sqlite3Reprepare()) */ const char *zTail; /* All SQL text past the last semicolon parsed */ Table *pNewTable; /* A table being constructed by CREATE TABLE */ + Index *pNewIndex; /* An index being constructed by CREATE INDEX */ Trigger *pNewTrigger; /* Trigger under construct by a CREATE TRIGGER */ const char *zAuthContext; /* The 6th parameter to db->xAuth callbacks */ #ifndef SQLITE_OMIT_VIRTUALTABLE @@ -17643,12 +17851,20 @@ struct Parse { TriggerPrg *pTriggerPrg; /* Linked list of coded triggers */ With *pWith; /* Current WITH clause, or NULL */ With *pWithToFree; /* Free this WITH object at the end of the parse */ +#ifndef SQLITE_OMIT_ALTERTABLE + RenameToken *pRename; /* Tokens subject to renaming by ALTER TABLE */ +#endif }; +#define PARSE_MODE_NORMAL 0 +#define PARSE_MODE_DECLARE_VTAB 1 +#define PARSE_MODE_RENAME_COLUMN 2 +#define PARSE_MODE_RENAME_TABLE 3 + /* ** Sizes and pointers of various parts of the Parse object. */ -#define PARSE_HDR_SZ offsetof(Parse,aColCache) /* Recursive part w/o aColCache*/ +#define PARSE_HDR_SZ offsetof(Parse,aTempReg) /* Recursive part w/o aColCache*/ #define PARSE_RECURSE_SZ offsetof(Parse,sLastToken) /* Recursive part */ #define PARSE_TAIL_SZ (sizeof(Parse)-PARSE_RECURSE_SZ) /* Non-recursive part */ #define PARSE_TAIL(X) (((char*)(X))+PARSE_RECURSE_SZ) /* Pointer to tail */ @@ -17659,7 +17875,19 @@ struct Parse { #ifdef SQLITE_OMIT_VIRTUALTABLE #define IN_DECLARE_VTAB 0 #else - #define IN_DECLARE_VTAB (pParse->declareVtab) + #define IN_DECLARE_VTAB (pParse->eParseMode==PARSE_MODE_DECLARE_VTAB) +#endif + +#if defined(SQLITE_OMIT_ALTERTABLE) + #define IN_RENAME_OBJECT 0 +#else + #define IN_RENAME_OBJECT (pParse->eParseMode>=PARSE_MODE_RENAME_COLUMN) +#endif + +#if defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_OMIT_ALTERTABLE) + #define IN_SPECIAL_PARSE 0 +#else + #define IN_SPECIAL_PARSE (pParse->eParseMode!=PARSE_MODE_NORMAL) #endif /* @@ -17838,8 +18066,14 @@ typedef struct { char **pzErrMsg; /* Error message stored here */ int iDb; /* 0 for main database. 1 for TEMP, 2.. for ATTACHed */ int rc; /* Result code stored here */ + u32 mInitFlags; /* Flags controlling error messages */ } InitData; +/* +** Allowed values for mInitFlags +*/ +#define INITFLAG_AlterTable 0x0001 /* This is a reparse after ALTER TABLE */ + /* ** Structure containing global configuration data for the SQLite library. ** @@ -17890,7 +18124,7 @@ struct Sqlite3Config { /* The following callback (if not NULL) is invoked on every VDBE branch ** operation. Set the callback using SQLITE_TESTCTRL_VDBE_COVERAGE. */ - void (*xVdbeBranch)(void*,int iSrcLine,u8 eThis,u8 eMx); /* Callback */ + void (*xVdbeBranch)(void*,unsigned iSrcLine,u8 eThis,u8 eMx); /* Callback */ void *pVdbeBranchArg; /* 1st argument */ #endif #ifndef SQLITE_UNTESTABLE @@ -17941,6 +18175,9 @@ struct Walker { struct IdxExprTrans *pIdxTrans; /* Convert idxed expr to column */ ExprList *pGroupBy; /* GROUP BY clause */ Select *pSelect; /* HAVING to WHERE clause ctx */ + struct WindowRewrite *pRewrite; /* Window rewrite context */ + struct WhereConst *pConst; /* WHERE clause constants */ + struct RenameCtx *pRename; /* RENAME COLUMN context */ } u; }; @@ -17991,6 +18228,68 @@ struct TreeView { }; #endif /* SQLITE_DEBUG */ +/* +** This object is used in varioius ways, all related to window functions +** +** (1) A single instance of this structure is attached to the +** the Expr.pWin field for each window function in an expression tree. +** This object holds the information contained in the OVER clause, +** plus additional fields used during code generation. +** +** (2) All window functions in a single SELECT form a linked-list +** attached to Select.pWin. The Window.pFunc and Window.pExpr +** fields point back to the expression that is the window function. +** +** (3) The terms of the WINDOW clause of a SELECT are instances of this +** object on a linked list attached to Select.pWinDefn. +** +** The uses (1) and (2) are really the same Window object that just happens +** to be accessible in two different ways. Use (3) is are separate objects. +*/ +struct Window { + char *zName; /* Name of window (may be NULL) */ + ExprList *pPartition; /* PARTITION BY clause */ + ExprList *pOrderBy; /* ORDER BY clause */ + u8 eType; /* TK_RANGE or TK_ROWS */ + u8 eStart; /* UNBOUNDED, CURRENT, PRECEDING or FOLLOWING */ + u8 eEnd; /* UNBOUNDED, CURRENT, PRECEDING or FOLLOWING */ + Expr *pStart; /* Expression for " PRECEDING" */ + Expr *pEnd; /* Expression for " FOLLOWING" */ + Window *pNextWin; /* Next window function belonging to this SELECT */ + Expr *pFilter; /* The FILTER expression */ + FuncDef *pFunc; /* The function */ + int iEphCsr; /* Partition buffer or Peer buffer */ + int regAccum; + int regResult; + int csrApp; /* Function cursor (used by min/max) */ + int regApp; /* Function register (also used by min/max) */ + int regPart; /* First in a set of registers holding PARTITION BY + ** and ORDER BY values for the window */ + Expr *pOwner; /* Expression object this window is attached to */ + int nBufferCol; /* Number of columns in buffer table */ + int iArgCol; /* Offset of first argument for this function */ +}; + +#ifndef SQLITE_OMIT_WINDOWFUNC +SQLITE_PRIVATE void sqlite3WindowDelete(sqlite3*, Window*); +SQLITE_PRIVATE void sqlite3WindowListDelete(sqlite3 *db, Window *p); +SQLITE_PRIVATE Window *sqlite3WindowAlloc(Parse*, int, int, Expr*, int , Expr*); +SQLITE_PRIVATE void sqlite3WindowAttach(Parse*, Expr*, Window*); +SQLITE_PRIVATE int sqlite3WindowCompare(Parse*, Window*, Window*); +SQLITE_PRIVATE void sqlite3WindowCodeInit(Parse*, Window*); +SQLITE_PRIVATE void sqlite3WindowCodeStep(Parse*, Select*, WhereInfo*, int, int); +SQLITE_PRIVATE int sqlite3WindowRewrite(Parse*, Select*); +SQLITE_PRIVATE int sqlite3ExpandSubquery(Parse*, struct SrcList_item*); +SQLITE_PRIVATE void sqlite3WindowUpdate(Parse*, Window*, Window*, FuncDef*); +SQLITE_PRIVATE Window *sqlite3WindowDup(sqlite3 *db, Expr *pOwner, Window *p); +SQLITE_PRIVATE Window *sqlite3WindowListDup(sqlite3 *db, Window *p); +SQLITE_PRIVATE void sqlite3WindowFunctions(void); +#else +# define sqlite3WindowDelete(a,b) +# define sqlite3WindowFunctions() +# define sqlite3WindowAttach(a,b,c) +#endif + /* ** Assuming zIn points to the first byte of a UTF-8 character, ** advance zIn to point to the first byte of the next UTF-8 character. @@ -18078,9 +18377,7 @@ SQLITE_PRIVATE int sqlite3CorruptPgnoError(int,Pgno); # define sqlite3Tolower(x) tolower((unsigned char)(x)) # define sqlite3Isquote(x) ((x)=='"'||(x)=='\''||(x)=='['||(x)=='`') #endif -#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS SQLITE_PRIVATE int sqlite3IsIdChar(u8); -#endif /* ** Internal function prototypes @@ -18205,6 +18502,10 @@ SQLITE_PRIVATE void sqlite3TreeViewBareExprList(TreeView*, const ExprList*, co SQLITE_PRIVATE void sqlite3TreeViewExprList(TreeView*, const ExprList*, u8, const char*); SQLITE_PRIVATE void sqlite3TreeViewSelect(TreeView*, const Select*, u8); SQLITE_PRIVATE void sqlite3TreeViewWith(TreeView*, const With*, u8); +#ifndef SQLITE_OMIT_WINDOWFUNC +SQLITE_PRIVATE void sqlite3TreeViewWindow(TreeView*, const Window*, u8); +SQLITE_PRIVATE void sqlite3TreeViewWinFunc(TreeView*, const Window*, u8); +#endif #endif @@ -18229,7 +18530,7 @@ SQLITE_PRIVATE void sqlite3ExprAttachSubtrees(sqlite3*,Expr*,Expr*,Expr*); SQLITE_PRIVATE Expr *sqlite3PExpr(Parse*, int, Expr*, Expr*); SQLITE_PRIVATE void sqlite3PExprAddSelect(Parse*, Expr*, Select*); SQLITE_PRIVATE Expr *sqlite3ExprAnd(sqlite3*,Expr*, Expr*); -SQLITE_PRIVATE Expr *sqlite3ExprFunction(Parse*,ExprList*, Token*); +SQLITE_PRIVATE Expr *sqlite3ExprFunction(Parse*,ExprList*, Token*, int); SQLITE_PRIVATE void sqlite3ExprAssignVarNumber(Parse*, Expr*, u32); SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3*, Expr*); SQLITE_PRIVATE ExprList *sqlite3ExprListAppend(Parse*,ExprList*,Expr*); @@ -18241,6 +18542,7 @@ SQLITE_PRIVATE void sqlite3ExprListDelete(sqlite3*, ExprList*); SQLITE_PRIVATE u32 sqlite3ExprListFlags(const ExprList*); SQLITE_PRIVATE int sqlite3Init(sqlite3*, char**); SQLITE_PRIVATE int sqlite3InitCallback(void*, int, char**, char**); +SQLITE_PRIVATE int sqlite3InitOne(sqlite3*, int, char**, u32); SQLITE_PRIVATE void sqlite3Pragma(Parse*,Token*,Token*,Token*,int); #ifndef SQLITE_OMIT_VIRTUALTABLE SQLITE_PRIVATE Module *sqlite3PragmaVtabRegister(sqlite3*,const char *zName); @@ -18290,8 +18592,9 @@ SQLITE_PRIVATE u32 sqlite3BitvecSize(Bitvec*); SQLITE_PRIVATE int sqlite3BitvecBuiltinTest(int,int*); #endif -SQLITE_PRIVATE RowSet *sqlite3RowSetInit(sqlite3*, void*, unsigned int); -SQLITE_PRIVATE void sqlite3RowSetClear(RowSet*); +SQLITE_PRIVATE RowSet *sqlite3RowSetInit(sqlite3*); +SQLITE_PRIVATE void sqlite3RowSetDelete(void*); +SQLITE_PRIVATE void sqlite3RowSetClear(void*); SQLITE_PRIVATE void sqlite3RowSetInsert(RowSet*, i64); SQLITE_PRIVATE int sqlite3RowSetTest(RowSet*, int iBatch, i64); SQLITE_PRIVATE int sqlite3RowSetNext(RowSet*, i64*); @@ -18310,6 +18613,7 @@ SQLITE_PRIVATE int sqlite3DbMaskAllZero(yDbMask); SQLITE_PRIVATE void sqlite3DropTable(Parse*, SrcList*, int, int); SQLITE_PRIVATE void sqlite3CodeDropTable(Parse*, Table*, int, int); SQLITE_PRIVATE void sqlite3DeleteTable(sqlite3*, Table*); +SQLITE_PRIVATE void sqlite3FreeIndex(sqlite3*, Index*); #ifndef SQLITE_OMIT_AUTOINCREMENT SQLITE_PRIVATE void sqlite3AutoincrementBegin(Parse *pParse); SQLITE_PRIVATE void sqlite3AutoincrementEnd(Parse *pParse); @@ -18319,7 +18623,7 @@ SQLITE_PRIVATE void sqlite3AutoincrementEnd(Parse *pParse); #endif SQLITE_PRIVATE void sqlite3Insert(Parse*, SrcList*, Select*, IdList*, int, Upsert*); SQLITE_PRIVATE void *sqlite3ArrayAllocate(sqlite3*,void*,int,int*,int*); -SQLITE_PRIVATE IdList *sqlite3IdListAppend(sqlite3*, IdList*, Token*); +SQLITE_PRIVATE IdList *sqlite3IdListAppend(Parse*, IdList*, Token*); SQLITE_PRIVATE int sqlite3IdListIndex(IdList*,const char*); SQLITE_PRIVATE SrcList *sqlite3SrcListEnlarge(sqlite3*, SrcList*, int, int); SQLITE_PRIVATE SrcList *sqlite3SrcListAppend(sqlite3*, SrcList*, Token*, Token*); @@ -18354,7 +18658,7 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo*); SQLITE_PRIVATE LogEst sqlite3WhereOutputRowCount(WhereInfo*); SQLITE_PRIVATE int sqlite3WhereIsDistinct(WhereInfo*); SQLITE_PRIVATE int sqlite3WhereIsOrdered(WhereInfo*); -SQLITE_PRIVATE int sqlite3WhereOrderedInnerLoop(WhereInfo*); +SQLITE_PRIVATE int sqlite3WhereOrderByLimitOptLabel(WhereInfo*); SQLITE_PRIVATE int sqlite3WhereIsSorted(WhereInfo*); SQLITE_PRIVATE int sqlite3WhereContinueLabel(WhereInfo*); SQLITE_PRIVATE int sqlite3WhereBreakLabel(WhereInfo*); @@ -18364,15 +18668,8 @@ SQLITE_PRIVATE int sqlite3WhereOkOnePass(WhereInfo*, int*); #define ONEPASS_MULTI 2 /* ONEPASS is valid for multiple rows */ SQLITE_PRIVATE void sqlite3ExprCodeLoadIndexColumn(Parse*, Index*, int, int, int); SQLITE_PRIVATE int sqlite3ExprCodeGetColumn(Parse*, Table*, int, int, int, u8); -SQLITE_PRIVATE void sqlite3ExprCodeGetColumnToReg(Parse*, Table*, int, int, int); SQLITE_PRIVATE void sqlite3ExprCodeGetColumnOfTable(Vdbe*, Table*, int, int, int); SQLITE_PRIVATE void sqlite3ExprCodeMove(Parse*, int, int, int); -SQLITE_PRIVATE void sqlite3ExprCacheStore(Parse*, int, int, int); -SQLITE_PRIVATE void sqlite3ExprCachePush(Parse*); -SQLITE_PRIVATE void sqlite3ExprCachePop(Parse*); -SQLITE_PRIVATE void sqlite3ExprCacheRemove(Parse*, int, int); -SQLITE_PRIVATE void sqlite3ExprCacheClear(Parse*); -SQLITE_PRIVATE void sqlite3ExprCacheAffinityChange(Parse*, int, int); SQLITE_PRIVATE void sqlite3ExprCode(Parse*, Expr*, int); SQLITE_PRIVATE void sqlite3ExprCodeCopy(Parse*, Expr*, int); SQLITE_PRIVATE void sqlite3ExprCodeFactorable(Parse*, Expr*, int); @@ -18460,11 +18757,6 @@ SQLITE_PRIVATE ExprList *sqlite3ExprListDup(sqlite3*,ExprList*,int); SQLITE_PRIVATE SrcList *sqlite3SrcListDup(sqlite3*,SrcList*,int); SQLITE_PRIVATE IdList *sqlite3IdListDup(sqlite3*,IdList*); SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3*,Select*,int); -#if SELECTTRACE_ENABLED -SQLITE_PRIVATE void sqlite3SelectSetName(Select*,const char*); -#else -# define sqlite3SelectSetName(A,B) -#endif SQLITE_PRIVATE void sqlite3InsertBuiltinFuncs(FuncDef*,int); SQLITE_PRIVATE FuncDef *sqlite3FindFunction(sqlite3*,const char*,int,u8,u8); SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void); @@ -18493,12 +18785,12 @@ SQLITE_PRIVATE void sqlite3CodeRowTriggerDirect(Parse *, Trigger *, Table *, i SQLITE_PRIVATE void sqlite3DeleteTriggerStep(sqlite3*, TriggerStep*); SQLITE_PRIVATE TriggerStep *sqlite3TriggerSelectStep(sqlite3*,Select*, const char*,const char*); -SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep(sqlite3*,Token*, IdList*, +SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep(Parse*,Token*, IdList*, Select*,u8,Upsert*, const char*,const char*); -SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep(sqlite3*,Token*,ExprList*, Expr*, u8, +SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep(Parse*,Token*,ExprList*, Expr*, u8, const char*,const char*); -SQLITE_PRIVATE TriggerStep *sqlite3TriggerDeleteStep(sqlite3*,Token*, Expr*, +SQLITE_PRIVATE TriggerStep *sqlite3TriggerDeleteStep(Parse*,Token*, Expr*, const char*,const char*); SQLITE_PRIVATE void sqlite3DeleteTrigger(sqlite3*, Trigger*); SQLITE_PRIVATE void sqlite3UnlinkAndDeleteTrigger(sqlite3*,int,const char*); @@ -18613,6 +18905,7 @@ SQLITE_PRIVATE int sqlite3MemdbInit(void); SQLITE_PRIVATE const char *sqlite3ErrStr(int); SQLITE_PRIVATE int sqlite3ReadSchema(Parse *pParse); SQLITE_PRIVATE CollSeq *sqlite3FindCollSeq(sqlite3*,u8 enc, const char*,int); +SQLITE_PRIVATE int sqlite3IsBinary(const CollSeq*); SQLITE_PRIVATE CollSeq *sqlite3LocateCollSeq(Parse *pParse, const char*zName); SQLITE_PRIVATE CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr); SQLITE_PRIVATE CollSeq *sqlite3ExprNNCollSeq(Parse *pParse, Expr *pExpr); @@ -18665,9 +18958,10 @@ SQLITE_PRIVATE void sqlite3RootPageMoved(sqlite3*, int, int, int); SQLITE_PRIVATE void sqlite3Reindex(Parse*, Token*, Token*); SQLITE_PRIVATE void sqlite3AlterFunctions(void); SQLITE_PRIVATE void sqlite3AlterRenameTable(Parse*, SrcList*, Token*); +SQLITE_PRIVATE void sqlite3AlterRenameColumn(Parse*, SrcList*, Token*, Token*); SQLITE_PRIVATE int sqlite3GetToken(const unsigned char *, int *); SQLITE_PRIVATE void sqlite3NestedParse(Parse*, const char*, ...); -SQLITE_PRIVATE void sqlite3ExpirePreparedStatements(sqlite3*); +SQLITE_PRIVATE void sqlite3ExpirePreparedStatements(sqlite3*, int); SQLITE_PRIVATE int sqlite3CodeSubselect(Parse*, Expr *, int, int); SQLITE_PRIVATE void sqlite3SelectPrep(Parse*, Select*, NameContext*); SQLITE_PRIVATE void sqlite3SelectWrongNumTermsError(Parse *pParse, Select *p); @@ -18680,6 +18974,10 @@ SQLITE_PRIVATE int sqlite3ResolveOrderGroupBy(Parse*, Select*, ExprList*, const SQLITE_PRIVATE void sqlite3ColumnDefault(Vdbe *, Table *, int, int); SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *, Token *); SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *, SrcList *); +SQLITE_PRIVATE void *sqlite3RenameTokenMap(Parse*, void*, Token*); +SQLITE_PRIVATE void sqlite3RenameTokenRemap(Parse*, void *pTo, void *pFrom); +SQLITE_PRIVATE void sqlite3RenameExprUnmap(Parse*, Expr*); +SQLITE_PRIVATE void sqlite3RenameExprlistUnmap(Parse*, ExprList*); SQLITE_PRIVATE CollSeq *sqlite3GetCollSeq(Parse*, u8, CollSeq *, const char*); SQLITE_PRIVATE char sqlite3AffinityType(const char*, Column*); SQLITE_PRIVATE void sqlite3Analyze(Parse*, Token*, Token*); @@ -18698,12 +18996,17 @@ SQLITE_PRIVATE KeyInfo *sqlite3KeyInfoAlloc(sqlite3*,int,int); SQLITE_PRIVATE void sqlite3KeyInfoUnref(KeyInfo*); SQLITE_PRIVATE KeyInfo *sqlite3KeyInfoRef(KeyInfo*); SQLITE_PRIVATE KeyInfo *sqlite3KeyInfoOfIndex(Parse*, Index*); +SQLITE_PRIVATE KeyInfo *sqlite3KeyInfoFromExprList(Parse*, ExprList*, int, int); + #ifdef SQLITE_DEBUG SQLITE_PRIVATE int sqlite3KeyInfoIsWriteable(KeyInfo*); #endif SQLITE_PRIVATE int sqlite3CreateFunc(sqlite3 *, const char *, int, int, void *, void (*)(sqlite3_context*,int,sqlite3_value **), - void (*)(sqlite3_context*,int,sqlite3_value **), void (*)(sqlite3_context*), + void (*)(sqlite3_context*,int,sqlite3_value **), + void (*)(sqlite3_context*), + void (*)(sqlite3_context*), + void (*)(sqlite3_context*,int,sqlite3_value **), FuncDestructor *pDestructor ); SQLITE_PRIVATE void sqlite3NoopDestructor(void*); @@ -18744,6 +19047,7 @@ SQLITE_PRIVATE void *sqlite3ParserAlloc(void*(*)(u64), Parse*); SQLITE_PRIVATE void sqlite3ParserFree(void*, void(*)(void*)); #endif SQLITE_PRIVATE void sqlite3Parser(void*, int, Token); +SQLITE_PRIVATE int sqlite3ParserFallback(int); #ifdef YYTRACKMAXSTACKDEPTH SQLITE_PRIVATE int sqlite3ParserStackPeak(void*); #endif @@ -19444,6 +19748,7 @@ struct VdbeCursor { Bool isEphemeral:1; /* True for an ephemeral table */ Bool useRandomRowid:1; /* Generate new record numbers semi-randomly */ Bool isOrdered:1; /* True if the table is not BTREE_UNORDERED */ + Bool seekHit:1; /* See the OP_SeekHit and OP_IfNoHope opcodes */ Btree *pBtx; /* Separate file holding temporary table */ i64 seqCount; /* Sequence counter */ int *aAltMap; /* Mapping from table to index column numbers */ @@ -19527,6 +19832,9 @@ struct VdbeFrame { void *token; /* Copy of SubProgram.token */ i64 lastRowid; /* Last insert rowid (sqlite3.lastRowid) */ AuxData *pAuxData; /* Linked list of auxdata allocations */ +#if SQLITE_DEBUG + u32 iFrameMagic; /* magic number for sanity checking */ +#endif int nCursor; /* Number of entries in apCsr */ int pc; /* Program Counter in parent (calling) frame */ int nOp; /* Size of aOp array */ @@ -19537,6 +19845,13 @@ struct VdbeFrame { int nDbChange; /* Value of db->nChange */ }; +/* Magic number for sanity checking on VdbeFrame objects */ +#define SQLITE_FRAME_MAGIC 0x879fb71e + +/* +** Return a pointer to the array of registers allocated for use +** by a VdbeFrame. +*/ #define VdbeFrameMem(p) ((Mem *)&((u8 *)p)[ROUND8(sizeof(VdbeFrame))]) /* @@ -19551,8 +19866,6 @@ struct sqlite3_value { int nZero; /* Extra zero bytes when MEM_Zero and MEM_Blob set */ const char *zPType; /* Pointer type when MEM_Term|MEM_Subtype|MEM_Null */ FuncDef *pDef; /* Used only when flags==MEM_Agg */ - RowSet *pRowSet; /* Used only when flags==MEM_RowSet */ - VdbeFrame *pFrame; /* Used when flags==MEM_Frame */ } u; u16 flags; /* Some combination of MEM_Null, MEM_Str, MEM_Dyn, etc. */ u8 enc; /* SQLITE_UTF8, SQLITE_UTF16BE, SQLITE_UTF16LE */ @@ -19567,7 +19880,7 @@ struct sqlite3_value { void (*xDel)(void*);/* Destructor for Mem.z - only valid if MEM_Dyn */ #ifdef SQLITE_DEBUG Mem *pScopyFrom; /* This Mem is a shallow copy of pScopyFrom */ - void *pFiller; /* So that sizeof(Mem) is a multiple of 8 */ + u16 mScopyFlags; /* flags value immediately after the shallow copy */ #endif }; @@ -19596,8 +19909,8 @@ struct sqlite3_value { #define MEM_Real 0x0008 /* Value is a real number */ #define MEM_Blob 0x0010 /* Value is a BLOB */ #define MEM_AffMask 0x001f /* Mask of affinity bits */ -#define MEM_RowSet 0x0020 /* Value is a RowSet object */ -#define MEM_Frame 0x0040 /* Value is a VdbeFrame object */ +/* Available 0x0020 */ +/* Available 0x0040 */ #define MEM_Undefined 0x0080 /* Value is undefined */ #define MEM_Cleared 0x0100 /* NULL set by OP_Null, not from data */ #define MEM_TypeMask 0xc1ff /* Mask of type bits */ @@ -19624,7 +19937,7 @@ struct sqlite3_value { ** that needs to be deallocated to avoid a leak. */ #define VdbeMemDynamic(X) \ - (((X)->flags&(MEM_Agg|MEM_Dyn|MEM_RowSet|MEM_Frame))!=0) + (((X)->flags&(MEM_Agg|MEM_Dyn))!=0) /* ** Clear any existing type flags from a Mem and replace them with f @@ -19744,9 +20057,9 @@ struct Vdbe { u8 errorAction; /* Recovery action to do in case of an error */ u8 minWriteFileFormat; /* Minimum file format for writable database files */ u8 prepFlags; /* SQLITE_PREPARE_* flags */ - bft expired:1; /* True if the VM needs to be recompiled */ - bft doingRerun:1; /* True if rerunning after an auto-reprepare */ + bft expired:2; /* 1: recompile VM immediately 2: when convenient */ bft explain:2; /* True if EXPLAIN present on SQL command */ + bft doingRerun:1; /* True if rerunning after an auto-reprepare */ bft changeCntOn:1; /* True to update the change-counter */ bft runOnlyOnce:1; /* Automatically expire on reset */ bft usesStmtJournal:1; /* True if uses a statement journal */ @@ -19807,9 +20120,6 @@ SQLITE_PRIVATE void sqlite3VdbeFreeCursor(Vdbe *, VdbeCursor*); void sqliteVdbePopStack(Vdbe*,int); SQLITE_PRIVATE int sqlite3VdbeCursorMoveto(VdbeCursor**, int*); SQLITE_PRIVATE int sqlite3VdbeCursorRestore(VdbeCursor*); -#if defined(SQLITE_DEBUG) || defined(VDBE_PROFILE) -SQLITE_PRIVATE void sqlite3VdbePrintOp(FILE*, int, Op*); -#endif SQLITE_PRIVATE u32 sqlite3VdbeSerialTypeLen(u32); SQLITE_PRIVATE u8 sqlite3VdbeOneByteSerialTypeLen(u8); SQLITE_PRIVATE u32 sqlite3VdbeSerialType(Mem*, int, u32*); @@ -19840,7 +20150,10 @@ SQLITE_PRIVATE void sqlite3VdbeMemSetPointer(Mem*, void*, const char*, void(*)(v SQLITE_PRIVATE void sqlite3VdbeMemInit(Mem*,sqlite3*,u16); SQLITE_PRIVATE void sqlite3VdbeMemSetNull(Mem*); SQLITE_PRIVATE void sqlite3VdbeMemSetZeroBlob(Mem*,int); -SQLITE_PRIVATE void sqlite3VdbeMemSetRowSet(Mem*); +#ifdef SQLITE_DEBUG +SQLITE_PRIVATE int sqlite3VdbeMemIsRowSet(const Mem*); +#endif +SQLITE_PRIVATE int sqlite3VdbeMemSetRowSet(Mem*); SQLITE_PRIVATE int sqlite3VdbeMemMakeWriteable(Mem*); SQLITE_PRIVATE int sqlite3VdbeMemStringify(Mem*, u8, u8); SQLITE_PRIVATE i64 sqlite3VdbeIntValue(Mem*); @@ -19854,11 +20167,18 @@ SQLITE_PRIVATE void sqlite3VdbeMemCast(Mem*,u8,u8); SQLITE_PRIVATE int sqlite3VdbeMemFromBtree(BtCursor*,u32,u32,Mem*); SQLITE_PRIVATE void sqlite3VdbeMemRelease(Mem *p); SQLITE_PRIVATE int sqlite3VdbeMemFinalize(Mem*, FuncDef*); +#ifndef SQLITE_OMIT_WINDOWFUNC +SQLITE_PRIVATE int sqlite3VdbeMemAggValue(Mem*, Mem*, FuncDef*); +#endif SQLITE_PRIVATE const char *sqlite3OpcodeName(int); SQLITE_PRIVATE int sqlite3VdbeMemGrow(Mem *pMem, int n, int preserve); SQLITE_PRIVATE int sqlite3VdbeMemClearAndResize(Mem *pMem, int n); SQLITE_PRIVATE int sqlite3VdbeCloseStatement(Vdbe *, int); -SQLITE_PRIVATE void sqlite3VdbeFrameDelete(VdbeFrame*); +#ifdef SQLITE_DEBUG +SQLITE_PRIVATE int sqlite3VdbeFrameIsValid(VdbeFrame*); +#endif +SQLITE_PRIVATE void sqlite3VdbeFrameMemDel(void*); /* Destructor on Mem */ +SQLITE_PRIVATE void sqlite3VdbeFrameDelete(VdbeFrame*); /* Actually deletes the Frame */ SQLITE_PRIVATE int sqlite3VdbeFrameRestore(VdbeFrame *); #ifdef SQLITE_ENABLE_PREUPDATE_HOOK SQLITE_PRIVATE void sqlite3VdbePreUpdateHook(Vdbe*,VdbeCursor*,int,const char*,Table*,i64,int); @@ -21956,9 +22276,12 @@ SQLITE_API int sqlite3_vfs_register(sqlite3_vfs *pVfs, int makeDflt){ ** Unregister a VFS so that it is no longer accessible. */ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs *pVfs){ -#if SQLITE_THREADSAFE - sqlite3_mutex *mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER); + MUTEX_LOGIC(sqlite3_mutex *mutex;) +#ifndef SQLITE_OMIT_AUTOINIT + int rc = sqlite3_initialize(); + if( rc ) return rc; #endif + MUTEX_LOGIC( mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER); ) sqlite3_mutex_enter(mutex); vfsUnlink(pVfs); sqlite3_mutex_leave(mutex); @@ -27289,7 +27612,12 @@ SQLITE_API void sqlite3_str_vappendf( if( bufpt==0 ){ bufpt = ""; }else if( xtype==etDYNSTRING ){ - if( pAccum->nChar==0 && pAccum->mxAlloc && width==0 && precision<0 ){ + if( pAccum->nChar==0 + && pAccum->mxAlloc + && width==0 + && precision<0 + && pAccum->accError==0 + ){ /* Special optimization for sqlite3_mprintf("%z..."): ** Extend an existing memory allocation rather than creating ** a new one. */ @@ -27987,21 +28315,13 @@ SQLITE_PRIVATE void sqlite3TreeViewSelect(TreeView *pView, const Select *p, u8 m sqlite3TreeViewPush(pView, 1); } do{ -#if SELECTTRACE_ENABLED sqlite3TreeViewLine(pView, - "SELECT%s%s (%s/%p) selFlags=0x%x nSelectRow=%d", + "SELECT%s%s (%u/%p) selFlags=0x%x nSelectRow=%d", ((p->selFlags & SF_Distinct) ? " DISTINCT" : ""), ((p->selFlags & SF_Aggregate) ? " agg_flag" : ""), - p->zSelName, p, p->selFlags, + p->selId, p, p->selFlags, (int)p->nSelectRow ); -#else - sqlite3TreeViewLine(pView, "SELECT%s%s (0x%p) selFlags=0x%x nSelectRow=%d", - ((p->selFlags & SF_Distinct) ? " DISTINCT" : ""), - ((p->selFlags & SF_Aggregate) ? " agg_flag" : ""), p, p->selFlags, - (int)p->nSelectRow - ); -#endif if( cnt++ ) sqlite3TreeViewPop(pView); if( p->pPrior ){ n = 1000; @@ -28013,8 +28333,23 @@ SQLITE_PRIVATE void sqlite3TreeViewSelect(TreeView *pView, const Select *p, u8 m if( p->pHaving ) n++; if( p->pOrderBy ) n++; if( p->pLimit ) n++; +#ifndef SQLITE_OMIT_WINDOWFUNC + if( p->pWin ) n++; + if( p->pWinDefn ) n++; +#endif } sqlite3TreeViewExprList(pView, p->pEList, (n--)>0, "result-set"); +#ifndef SQLITE_OMIT_WINDOWFUNC + if( p->pWin ){ + Window *pX; + pView = sqlite3TreeViewPush(pView, (n--)>0); + sqlite3TreeViewLine(pView, "window-functions"); + for(pX=p->pWin; pX; pX=pX->pNextWin){ + sqlite3TreeViewWinFunc(pView, pX, pX->pNextWin!=0); + } + sqlite3TreeViewPop(pView); + } +#endif if( p->pSrc && p->pSrc->nSrc ){ int i; pView = sqlite3TreeViewPush(pView, (n--)>0); @@ -28064,6 +28399,16 @@ SQLITE_PRIVATE void sqlite3TreeViewSelect(TreeView *pView, const Select *p, u8 m sqlite3TreeViewExpr(pView, p->pHaving, 0); sqlite3TreeViewPop(pView); } +#ifndef SQLITE_OMIT_WINDOWFUNC + if( p->pWinDefn ){ + Window *pX; + sqlite3TreeViewItem(pView, "WINDOW", (n--)>0); + for(pX=p->pWinDefn; pX; pX=pX->pNextWin){ + sqlite3TreeViewWindow(pView, pX, pX->pNextWin!=0); + } + sqlite3TreeViewPop(pView); + } +#endif if( p->pOrderBy ){ sqlite3TreeViewExprList(pView, p->pOrderBy, (n--)>0, "ORDERBY"); } @@ -28091,6 +28436,83 @@ SQLITE_PRIVATE void sqlite3TreeViewSelect(TreeView *pView, const Select *p, u8 m sqlite3TreeViewPop(pView); } +#ifndef SQLITE_OMIT_WINDOWFUNC +/* +** Generate a description of starting or stopping bounds +*/ +SQLITE_PRIVATE void sqlite3TreeViewBound( + TreeView *pView, /* View context */ + u8 eBound, /* UNBOUNDED, CURRENT, PRECEDING, FOLLOWING */ + Expr *pExpr, /* Value for PRECEDING or FOLLOWING */ + u8 moreToFollow /* True if more to follow */ +){ + switch( eBound ){ + case TK_UNBOUNDED: { + sqlite3TreeViewItem(pView, "UNBOUNDED", moreToFollow); + sqlite3TreeViewPop(pView); + break; + } + case TK_CURRENT: { + sqlite3TreeViewItem(pView, "CURRENT", moreToFollow); + sqlite3TreeViewPop(pView); + break; + } + case TK_PRECEDING: { + sqlite3TreeViewItem(pView, "PRECEDING", moreToFollow); + sqlite3TreeViewExpr(pView, pExpr, 0); + sqlite3TreeViewPop(pView); + break; + } + case TK_FOLLOWING: { + sqlite3TreeViewItem(pView, "FOLLOWING", moreToFollow); + sqlite3TreeViewExpr(pView, pExpr, 0); + sqlite3TreeViewPop(pView); + break; + } + } +} +#endif /* SQLITE_OMIT_WINDOWFUNC */ + +#ifndef SQLITE_OMIT_WINDOWFUNC +/* +** Generate a human-readable explanation for a Window object +*/ +SQLITE_PRIVATE void sqlite3TreeViewWindow(TreeView *pView, const Window *pWin, u8 more){ + pView = sqlite3TreeViewPush(pView, more); + if( pWin->zName ){ + sqlite3TreeViewLine(pView, "OVER %s", pWin->zName); + }else{ + sqlite3TreeViewLine(pView, "OVER"); + } + if( pWin->pPartition ){ + sqlite3TreeViewExprList(pView, pWin->pPartition, 1, "PARTITION-BY"); + } + if( pWin->pOrderBy ){ + sqlite3TreeViewExprList(pView, pWin->pOrderBy, 1, "ORDER-BY"); + } + if( pWin->eType ){ + sqlite3TreeViewItem(pView, pWin->eType==TK_RANGE ? "RANGE" : "ROWS", 0); + sqlite3TreeViewBound(pView, pWin->eStart, pWin->pStart, 1); + sqlite3TreeViewBound(pView, pWin->eEnd, pWin->pEnd, 0); + sqlite3TreeViewPop(pView); + } + sqlite3TreeViewPop(pView); +} +#endif /* SQLITE_OMIT_WINDOWFUNC */ + +#ifndef SQLITE_OMIT_WINDOWFUNC +/* +** Generate a human-readable explanation for a Window Function object +*/ +SQLITE_PRIVATE void sqlite3TreeViewWinFunc(TreeView *pView, const Window *pWin, u8 more){ + pView = sqlite3TreeViewPush(pView, more); + sqlite3TreeViewLine(pView, "WINFUNC %s(%d)", + pWin->pFunc->zName, pWin->pFunc->nArg); + sqlite3TreeViewWindow(pView, pWin, 0); + sqlite3TreeViewPop(pView); +} +#endif /* SQLITE_OMIT_WINDOWFUNC */ + /* ** Generate a human-readable explanation of an expression tree. */ @@ -28128,6 +28550,9 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m sqlite3TreeViewLine(pView, "{%d:%d}%s", pExpr->iTable, pExpr->iColumn, zFlgs); } + if( ExprHasProperty(pExpr, EP_FixedCol) ){ + sqlite3TreeViewExpr(pView, pExpr->pLeft, 0); + } break; } case TK_INTEGER: { @@ -28241,10 +28666,17 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m case TK_AGG_FUNCTION: case TK_FUNCTION: { ExprList *pFarg; /* List of function arguments */ + Window *pWin; if( ExprHasProperty(pExpr, EP_TokenOnly) ){ pFarg = 0; + pWin = 0; }else{ pFarg = pExpr->x.pList; +#ifndef SQLITE_OMIT_WINDOWFUNC + pWin = pExpr->pWin; +#else + pWin = 0; +#endif } if( pExpr->op==TK_AGG_FUNCTION ){ sqlite3TreeViewLine(pView, "AGG_FUNCTION%d %Q", @@ -28253,8 +28685,13 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m sqlite3TreeViewLine(pView, "FUNCTION %Q", pExpr->u.zToken); } if( pFarg ){ - sqlite3TreeViewExprList(pView, pFarg, 0, 0); + sqlite3TreeViewExprList(pView, pFarg, pWin!=0, 0); } +#ifndef SQLITE_OMIT_WINDOWFUNC + if( pWin ){ + sqlite3TreeViewWindow(pView, pWin, 0); + } +#endif break; } #ifndef SQLITE_OMIT_SUBQUERY @@ -31286,52 +31723,52 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){ /* 1 */ "AutoCommit" OpHelp(""), /* 2 */ "Transaction" OpHelp(""), /* 3 */ "SorterNext" OpHelp(""), - /* 4 */ "PrevIfOpen" OpHelp(""), - /* 5 */ "NextIfOpen" OpHelp(""), - /* 6 */ "Prev" OpHelp(""), - /* 7 */ "Next" OpHelp(""), - /* 8 */ "Checkpoint" OpHelp(""), - /* 9 */ "JournalMode" OpHelp(""), - /* 10 */ "Vacuum" OpHelp(""), - /* 11 */ "VFilter" OpHelp("iplan=r[P3] zplan='P4'"), - /* 12 */ "VUpdate" OpHelp("data=r[P3@P2]"), - /* 13 */ "Goto" OpHelp(""), - /* 14 */ "Gosub" OpHelp(""), - /* 15 */ "InitCoroutine" OpHelp(""), - /* 16 */ "Yield" OpHelp(""), - /* 17 */ "MustBeInt" OpHelp(""), - /* 18 */ "Jump" OpHelp(""), + /* 4 */ "Prev" OpHelp(""), + /* 5 */ "Next" OpHelp(""), + /* 6 */ "Checkpoint" OpHelp(""), + /* 7 */ "JournalMode" OpHelp(""), + /* 8 */ "Vacuum" OpHelp(""), + /* 9 */ "VFilter" OpHelp("iplan=r[P3] zplan='P4'"), + /* 10 */ "VUpdate" OpHelp("data=r[P3@P2]"), + /* 11 */ "Goto" OpHelp(""), + /* 12 */ "Gosub" OpHelp(""), + /* 13 */ "InitCoroutine" OpHelp(""), + /* 14 */ "Yield" OpHelp(""), + /* 15 */ "MustBeInt" OpHelp(""), + /* 16 */ "Jump" OpHelp(""), + /* 17 */ "Once" OpHelp(""), + /* 18 */ "If" OpHelp(""), /* 19 */ "Not" OpHelp("r[P2]= !r[P1]"), - /* 20 */ "Once" OpHelp(""), - /* 21 */ "If" OpHelp(""), - /* 22 */ "IfNot" OpHelp(""), - /* 23 */ "IfNullRow" OpHelp("if P1.nullRow then r[P3]=NULL, goto P2"), - /* 24 */ "SeekLT" OpHelp("key=r[P3@P4]"), - /* 25 */ "SeekLE" OpHelp("key=r[P3@P4]"), - /* 26 */ "SeekGE" OpHelp("key=r[P3@P4]"), - /* 27 */ "SeekGT" OpHelp("key=r[P3@P4]"), - /* 28 */ "NoConflict" OpHelp("key=r[P3@P4]"), - /* 29 */ "NotFound" OpHelp("key=r[P3@P4]"), - /* 30 */ "Found" OpHelp("key=r[P3@P4]"), - /* 31 */ "SeekRowid" OpHelp("intkey=r[P3]"), - /* 32 */ "NotExists" OpHelp("intkey=r[P3]"), - /* 33 */ "Last" OpHelp(""), - /* 34 */ "IfSmaller" OpHelp(""), - /* 35 */ "SorterSort" OpHelp(""), - /* 36 */ "Sort" OpHelp(""), - /* 37 */ "Rewind" OpHelp(""), - /* 38 */ "IdxLE" OpHelp("key=r[P3@P4]"), - /* 39 */ "IdxGT" OpHelp("key=r[P3@P4]"), - /* 40 */ "IdxLT" OpHelp("key=r[P3@P4]"), - /* 41 */ "IdxGE" OpHelp("key=r[P3@P4]"), - /* 42 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"), + /* 20 */ "IfNot" OpHelp(""), + /* 21 */ "IfNullRow" OpHelp("if P1.nullRow then r[P3]=NULL, goto P2"), + /* 22 */ "SeekLT" OpHelp("key=r[P3@P4]"), + /* 23 */ "SeekLE" OpHelp("key=r[P3@P4]"), + /* 24 */ "SeekGE" OpHelp("key=r[P3@P4]"), + /* 25 */ "SeekGT" OpHelp("key=r[P3@P4]"), + /* 26 */ "IfNoHope" OpHelp("key=r[P3@P4]"), + /* 27 */ "NoConflict" OpHelp("key=r[P3@P4]"), + /* 28 */ "NotFound" OpHelp("key=r[P3@P4]"), + /* 29 */ "Found" OpHelp("key=r[P3@P4]"), + /* 30 */ "SeekRowid" OpHelp("intkey=r[P3]"), + /* 31 */ "NotExists" OpHelp("intkey=r[P3]"), + /* 32 */ "Last" OpHelp(""), + /* 33 */ "IfSmaller" OpHelp(""), + /* 34 */ "SorterSort" OpHelp(""), + /* 35 */ "Sort" OpHelp(""), + /* 36 */ "Rewind" OpHelp(""), + /* 37 */ "IdxLE" OpHelp("key=r[P3@P4]"), + /* 38 */ "IdxGT" OpHelp("key=r[P3@P4]"), + /* 39 */ "IdxLT" OpHelp("key=r[P3@P4]"), + /* 40 */ "IdxGE" OpHelp("key=r[P3@P4]"), + /* 41 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"), + /* 42 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"), /* 43 */ "Or" OpHelp("r[P3]=(r[P1] || r[P2])"), /* 44 */ "And" OpHelp("r[P3]=(r[P1] && r[P2])"), - /* 45 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"), - /* 46 */ "Program" OpHelp(""), - /* 47 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"), - /* 48 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"), - /* 49 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"), + /* 45 */ "Program" OpHelp(""), + /* 46 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"), + /* 47 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"), + /* 48 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"), + /* 49 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"), /* 50 */ "IsNull" OpHelp("if r[P1]==NULL goto P2"), /* 51 */ "NotNull" OpHelp("if r[P1]!=NULL goto P2"), /* 52 */ "Ne" OpHelp("IF r[P3]!=r[P1]"), @@ -31341,119 +31778,121 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){ /* 56 */ "Lt" OpHelp("IF r[P3]=r[P1]"), /* 58 */ "ElseNotEq" OpHelp(""), - /* 59 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"), - /* 60 */ "IncrVacuum" OpHelp(""), - /* 61 */ "VNext" OpHelp(""), - /* 62 */ "Init" OpHelp("Start at P2"), - /* 63 */ "Return" OpHelp(""), - /* 64 */ "EndCoroutine" OpHelp(""), - /* 65 */ "HaltIfNull" OpHelp("if r[P3]=null halt"), - /* 66 */ "Halt" OpHelp(""), - /* 67 */ "Integer" OpHelp("r[P2]=P1"), - /* 68 */ "Int64" OpHelp("r[P2]=P4"), - /* 69 */ "String" OpHelp("r[P2]='P4' (len=P1)"), - /* 70 */ "Null" OpHelp("r[P2..P3]=NULL"), - /* 71 */ "SoftNull" OpHelp("r[P1]=NULL"), - /* 72 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"), - /* 73 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"), - /* 74 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"), - /* 75 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"), - /* 76 */ "SCopy" OpHelp("r[P2]=r[P1]"), - /* 77 */ "IntCopy" OpHelp("r[P2]=r[P1]"), - /* 78 */ "ResultRow" OpHelp("output=r[P1@P2]"), - /* 79 */ "CollSeq" OpHelp(""), - /* 80 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"), - /* 81 */ "RealAffinity" OpHelp(""), - /* 82 */ "Cast" OpHelp("affinity(r[P1])"), - /* 83 */ "Permutation" OpHelp(""), - /* 84 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"), - /* 85 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"), - /* 86 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"), - /* 87 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<>r[P1]"), - /* 89 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"), - /* 90 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"), - /* 91 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"), - /* 92 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"), - /* 93 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"), - /* 94 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"), - /* 95 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"), - /* 96 */ "BitNot" OpHelp("r[P1]= ~r[P1]"), - /* 97 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"), - /* 98 */ "Column" OpHelp("r[P3]=PX"), - /* 99 */ "String8" OpHelp("r[P2]='P4'"), - /* 100 */ "Affinity" OpHelp("affinity(r[P1@P2])"), - /* 101 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"), - /* 102 */ "Count" OpHelp("r[P2]=count()"), - /* 103 */ "ReadCookie" OpHelp(""), - /* 104 */ "SetCookie" OpHelp(""), - /* 105 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"), - /* 106 */ "OpenRead" OpHelp("root=P2 iDb=P3"), - /* 107 */ "OpenWrite" OpHelp("root=P2 iDb=P3"), - /* 108 */ "OpenDup" OpHelp(""), - /* 109 */ "OpenAutoindex" OpHelp("nColumn=P2"), - /* 110 */ "OpenEphemeral" OpHelp("nColumn=P2"), - /* 111 */ "SorterOpen" OpHelp(""), - /* 112 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"), - /* 113 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"), - /* 114 */ "Close" OpHelp(""), - /* 115 */ "ColumnsUsed" OpHelp(""), - /* 116 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"), - /* 117 */ "NewRowid" OpHelp("r[P2]=rowid"), - /* 118 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"), - /* 119 */ "InsertInt" OpHelp("intkey=P3 data=r[P2]"), - /* 120 */ "Delete" OpHelp(""), - /* 121 */ "ResetCount" OpHelp(""), - /* 122 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"), - /* 123 */ "SorterData" OpHelp("r[P2]=data"), - /* 124 */ "RowData" OpHelp("r[P2]=data"), - /* 125 */ "Rowid" OpHelp("r[P2]=rowid"), - /* 126 */ "NullRow" OpHelp(""), - /* 127 */ "SeekEnd" OpHelp(""), - /* 128 */ "SorterInsert" OpHelp("key=r[P2]"), - /* 129 */ "IdxInsert" OpHelp("key=r[P2]"), - /* 130 */ "IdxDelete" OpHelp("key=r[P2@P3]"), - /* 131 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"), - /* 132 */ "IdxRowid" OpHelp("r[P2]=rowid"), - /* 133 */ "Destroy" OpHelp(""), - /* 134 */ "Real" OpHelp("r[P2]=P4"), - /* 135 */ "Clear" OpHelp(""), - /* 136 */ "ResetSorter" OpHelp(""), - /* 137 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"), - /* 138 */ "SqlExec" OpHelp(""), - /* 139 */ "ParseSchema" OpHelp(""), - /* 140 */ "LoadAnalysis" OpHelp(""), - /* 141 */ "DropTable" OpHelp(""), - /* 142 */ "DropIndex" OpHelp(""), - /* 143 */ "DropTrigger" OpHelp(""), - /* 144 */ "IntegrityCk" OpHelp(""), - /* 145 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"), - /* 146 */ "Param" OpHelp(""), - /* 147 */ "FkCounter" OpHelp("fkctr[P1]+=P2"), - /* 148 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"), - /* 149 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"), - /* 150 */ "AggStep0" OpHelp("accum=r[P3] step(r[P2@P5])"), - /* 151 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"), - /* 152 */ "AggFinal" OpHelp("accum=r[P1] N=P2"), - /* 153 */ "Expire" OpHelp(""), - /* 154 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"), - /* 155 */ "VBegin" OpHelp(""), - /* 156 */ "VCreate" OpHelp(""), - /* 157 */ "VDestroy" OpHelp(""), - /* 158 */ "VOpen" OpHelp(""), - /* 159 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"), - /* 160 */ "VRename" OpHelp(""), - /* 161 */ "Pagecount" OpHelp(""), - /* 162 */ "MaxPgcnt" OpHelp(""), - /* 163 */ "PureFunc0" OpHelp(""), - /* 164 */ "Function0" OpHelp("r[P3]=func(r[P2@P5])"), - /* 165 */ "PureFunc" OpHelp(""), - /* 166 */ "Function" OpHelp("r[P3]=func(r[P2@P5])"), - /* 167 */ "Trace" OpHelp(""), - /* 168 */ "CursorHint" OpHelp(""), - /* 169 */ "Noop" OpHelp(""), - /* 170 */ "Explain" OpHelp(""), - /* 171 */ "Abortable" OpHelp(""), + /* 59 */ "IncrVacuum" OpHelp(""), + /* 60 */ "VNext" OpHelp(""), + /* 61 */ "Init" OpHelp("Start at P2"), + /* 62 */ "PureFunc0" OpHelp(""), + /* 63 */ "Function0" OpHelp("r[P3]=func(r[P2@P5])"), + /* 64 */ "PureFunc" OpHelp(""), + /* 65 */ "Function" OpHelp("r[P3]=func(r[P2@P5])"), + /* 66 */ "Return" OpHelp(""), + /* 67 */ "EndCoroutine" OpHelp(""), + /* 68 */ "HaltIfNull" OpHelp("if r[P3]=null halt"), + /* 69 */ "Halt" OpHelp(""), + /* 70 */ "Integer" OpHelp("r[P2]=P1"), + /* 71 */ "Int64" OpHelp("r[P2]=P4"), + /* 72 */ "String" OpHelp("r[P2]='P4' (len=P1)"), + /* 73 */ "Null" OpHelp("r[P2..P3]=NULL"), + /* 74 */ "SoftNull" OpHelp("r[P1]=NULL"), + /* 75 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"), + /* 76 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"), + /* 77 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"), + /* 78 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"), + /* 79 */ "SCopy" OpHelp("r[P2]=r[P1]"), + /* 80 */ "IntCopy" OpHelp("r[P2]=r[P1]"), + /* 81 */ "ResultRow" OpHelp("output=r[P1@P2]"), + /* 82 */ "CollSeq" OpHelp(""), + /* 83 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"), + /* 84 */ "RealAffinity" OpHelp(""), + /* 85 */ "Cast" OpHelp("affinity(r[P1])"), + /* 86 */ "Permutation" OpHelp(""), + /* 87 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"), + /* 88 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"), + /* 89 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"), + /* 90 */ "Column" OpHelp("r[P3]=PX"), + /* 91 */ "Affinity" OpHelp("affinity(r[P1@P2])"), + /* 92 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"), + /* 93 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"), + /* 94 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<>r[P1]"), + /* 96 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"), + /* 97 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"), + /* 98 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"), + /* 99 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"), + /* 100 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"), + /* 101 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"), + /* 102 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"), + /* 103 */ "BitNot" OpHelp("r[P2]= ~r[P1]"), + /* 104 */ "Count" OpHelp("r[P2]=count()"), + /* 105 */ "ReadCookie" OpHelp(""), + /* 106 */ "String8" OpHelp("r[P2]='P4'"), + /* 107 */ "SetCookie" OpHelp(""), + /* 108 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"), + /* 109 */ "OpenRead" OpHelp("root=P2 iDb=P3"), + /* 110 */ "OpenWrite" OpHelp("root=P2 iDb=P3"), + /* 111 */ "OpenDup" OpHelp(""), + /* 112 */ "OpenAutoindex" OpHelp("nColumn=P2"), + /* 113 */ "OpenEphemeral" OpHelp("nColumn=P2"), + /* 114 */ "SorterOpen" OpHelp(""), + /* 115 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"), + /* 116 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"), + /* 117 */ "Close" OpHelp(""), + /* 118 */ "ColumnsUsed" OpHelp(""), + /* 119 */ "SeekHit" OpHelp("seekHit=P2"), + /* 120 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"), + /* 121 */ "NewRowid" OpHelp("r[P2]=rowid"), + /* 122 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"), + /* 123 */ "InsertInt" OpHelp("intkey=P3 data=r[P2]"), + /* 124 */ "Delete" OpHelp(""), + /* 125 */ "ResetCount" OpHelp(""), + /* 126 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"), + /* 127 */ "SorterData" OpHelp("r[P2]=data"), + /* 128 */ "RowData" OpHelp("r[P2]=data"), + /* 129 */ "Rowid" OpHelp("r[P2]=rowid"), + /* 130 */ "NullRow" OpHelp(""), + /* 131 */ "SeekEnd" OpHelp(""), + /* 132 */ "SorterInsert" OpHelp("key=r[P2]"), + /* 133 */ "IdxInsert" OpHelp("key=r[P2]"), + /* 134 */ "IdxDelete" OpHelp("key=r[P2@P3]"), + /* 135 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"), + /* 136 */ "IdxRowid" OpHelp("r[P2]=rowid"), + /* 137 */ "Destroy" OpHelp(""), + /* 138 */ "Clear" OpHelp(""), + /* 139 */ "ResetSorter" OpHelp(""), + /* 140 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"), + /* 141 */ "Real" OpHelp("r[P2]=P4"), + /* 142 */ "SqlExec" OpHelp(""), + /* 143 */ "ParseSchema" OpHelp(""), + /* 144 */ "LoadAnalysis" OpHelp(""), + /* 145 */ "DropTable" OpHelp(""), + /* 146 */ "DropIndex" OpHelp(""), + /* 147 */ "DropTrigger" OpHelp(""), + /* 148 */ "IntegrityCk" OpHelp(""), + /* 149 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"), + /* 150 */ "Param" OpHelp(""), + /* 151 */ "FkCounter" OpHelp("fkctr[P1]+=P2"), + /* 152 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"), + /* 153 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"), + /* 154 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"), + /* 155 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"), + /* 156 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"), + /* 157 */ "AggValue" OpHelp("r[P3]=value N=P2"), + /* 158 */ "AggFinal" OpHelp("accum=r[P1] N=P2"), + /* 159 */ "Expire" OpHelp(""), + /* 160 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"), + /* 161 */ "VBegin" OpHelp(""), + /* 162 */ "VCreate" OpHelp(""), + /* 163 */ "VDestroy" OpHelp(""), + /* 164 */ "VOpen" OpHelp(""), + /* 165 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"), + /* 166 */ "VRename" OpHelp(""), + /* 167 */ "Pagecount" OpHelp(""), + /* 168 */ "MaxPgcnt" OpHelp(""), + /* 169 */ "Trace" OpHelp(""), + /* 170 */ "CursorHint" OpHelp(""), + /* 171 */ "Noop" OpHelp(""), + /* 172 */ "Explain" OpHelp(""), + /* 173 */ "Abortable" OpHelp(""), }; return azName[i]; } @@ -32182,7 +32621,11 @@ static struct unix_syscall { #define osLstat ((int(*)(const char*,struct stat*))aSyscall[27].pCurrent) #if defined(__linux__) && defined(SQLITE_ENABLE_BATCH_ATOMIC_WRITE) +# ifdef __ANDROID__ + { "ioctl", (sqlite3_syscall_ptr)(int(*)(int, int, ...))ioctl, 0 }, +# else { "ioctl", (sqlite3_syscall_ptr)ioctl, 0 }, +# endif #else { "ioctl", (sqlite3_syscall_ptr)0, 0 }, #endif @@ -32363,12 +32806,25 @@ static int robust_open(const char *z, int f, mode_t m){ ** unixEnterMutex() ** assert( unixMutexHeld() ); ** unixEnterLeave() +** +** To prevent deadlock, the global unixBigLock must must be acquired +** before the unixInodeInfo.pLockMutex mutex, if both are held. It is +** OK to get the pLockMutex without holding unixBigLock first, but if +** that happens, the unixBigLock mutex must not be acquired until after +** pLockMutex is released. +** +** OK: enter(unixBigLock), enter(pLockInfo) +** OK: enter(unixBigLock) +** OK: enter(pLockInfo) +** ERROR: enter(pLockInfo), enter(unixBigLock) */ static sqlite3_mutex *unixBigLock = 0; static void unixEnterMutex(void){ + assert( sqlite3_mutex_notheld(unixBigLock) ); /* Not a recursive mutex */ sqlite3_mutex_enter(unixBigLock); } static void unixLeaveMutex(void){ + assert( sqlite3_mutex_held(unixBigLock) ); sqlite3_mutex_leave(unixBigLock); } #ifdef SQLITE_DEBUG @@ -32769,16 +33225,34 @@ struct unixFileId { ** A single inode can have multiple file descriptors, so each unixFile ** structure contains a pointer to an instance of this object and this ** object keeps a count of the number of unixFile pointing to it. +** +** Mutex rules: +** +** (1) Only the pLockMutex mutex must be held in order to read or write +** any of the locking fields: +** nShared, nLock, eFileLock, bProcessLock, pUnused +** +** (2) When nRef>0, then the following fields are unchanging and can +** be read (but not written) without holding any mutex: +** fileId, pLockMutex +** +** (3) With the exceptions above, all the fields may only be read +** or written while holding the global unixBigLock mutex. +** +** Deadlock prevention: The global unixBigLock mutex may not +** be acquired while holding the pLockMutex mutex. If both unixBigLock +** and pLockMutex are needed, then unixBigLock must be acquired first. */ struct unixInodeInfo { struct unixFileId fileId; /* The lookup key */ - int nShared; /* Number of SHARED locks held */ - unsigned char eFileLock; /* One of SHARED_LOCK, RESERVED_LOCK etc. */ - unsigned char bProcessLock; /* An exclusive process lock is held */ + sqlite3_mutex *pLockMutex; /* Hold this mutex for... */ + int nShared; /* Number of SHARED locks held */ + int nLock; /* Number of outstanding file locks */ + unsigned char eFileLock; /* One of SHARED_LOCK, RESERVED_LOCK etc. */ + unsigned char bProcessLock; /* An exclusive process lock is held */ + UnixUnusedFd *pUnused; /* Unused file descriptors to close */ int nRef; /* Number of pointers to this structure */ unixShmNode *pShmNode; /* Shared memory associated with this inode */ - int nLock; /* Number of outstanding file locks */ - UnixUnusedFd *pUnused; /* Unused file descriptors to close */ unixInodeInfo *pNext; /* List of all unixInodeInfo objects */ unixInodeInfo *pPrev; /* .... doubly linked */ #if SQLITE_ENABLE_LOCKING_STYLE @@ -32794,7 +33268,21 @@ struct unixInodeInfo { ** A lists of all unixInodeInfo objects. */ static unixInodeInfo *inodeList = 0; /* All unixInodeInfo objects */ -static unsigned int nUnusedFd = 0; /* Total unused file descriptors */ + +#ifdef SQLITE_DEBUG +/* +** True if the inode mutex is held, or not. Used only within assert() +** to help verify correct mutex usage. +*/ +int unixFileMutexHeld(unixFile *pFile){ + assert( pFile->pInode ); + return sqlite3_mutex_held(pFile->pInode->pLockMutex); +} +int unixFileMutexNotheld(unixFile *pFile){ + assert( pFile->pInode ); + return sqlite3_mutex_notheld(pFile->pInode->pLockMutex); +} +#endif /* ** @@ -32900,11 +33388,11 @@ static void closePendingFds(unixFile *pFile){ unixInodeInfo *pInode = pFile->pInode; UnixUnusedFd *p; UnixUnusedFd *pNext; + assert( unixFileMutexHeld(pFile) ); for(p=pInode->pUnused; p; p=pNext){ pNext = p->pNext; robust_close(pFile, p->fd, __LINE__); sqlite3_free(p); - nUnusedFd--; } pInode->pUnused = 0; } @@ -32918,11 +33406,14 @@ static void closePendingFds(unixFile *pFile){ static void releaseInodeInfo(unixFile *pFile){ unixInodeInfo *pInode = pFile->pInode; assert( unixMutexHeld() ); + assert( unixFileMutexNotheld(pFile) ); if( ALWAYS(pInode) ){ pInode->nRef--; if( pInode->nRef==0 ){ assert( pInode->pShmNode==0 ); + sqlite3_mutex_enter(pInode->pLockMutex); closePendingFds(pFile); + sqlite3_mutex_leave(pInode->pLockMutex); if( pInode->pPrev ){ assert( pInode->pPrev->pNext==pInode ); pInode->pPrev->pNext = pInode->pNext; @@ -32934,10 +33425,10 @@ static void releaseInodeInfo(unixFile *pFile){ assert( pInode->pNext->pPrev==pInode ); pInode->pNext->pPrev = pInode->pPrev; } + sqlite3_mutex_free(pInode->pLockMutex); sqlite3_free(pInode); } } - assert( inodeList!=0 || nUnusedFd==0 ); } /* @@ -33007,7 +33498,6 @@ static int findInodeInfo( #else fileId.ino = (u64)statbuf.st_ino; #endif - assert( inodeList!=0 || nUnusedFd==0 ); pInode = inodeList; while( pInode && memcmp(&fileId, &pInode->fileId, sizeof(fileId)) ){ pInode = pInode->pNext; @@ -33019,6 +33509,13 @@ static int findInodeInfo( } memset(pInode, 0, sizeof(*pInode)); memcpy(&pInode->fileId, &fileId, sizeof(fileId)); + if( sqlite3GlobalConfig.bCoreMutex ){ + pInode->pLockMutex = sqlite3_mutex_alloc(SQLITE_MUTEX_FAST); + if( pInode->pLockMutex==0 ){ + sqlite3_free(pInode); + return SQLITE_NOMEM_BKPT; + } + } pInode->nRef = 1; pInode->pNext = inodeList; pInode->pPrev = 0; @@ -33097,7 +33594,7 @@ static int unixCheckReservedLock(sqlite3_file *id, int *pResOut){ assert( pFile ); assert( pFile->eFileLock<=SHARED_LOCK ); - unixEnterMutex(); /* Because pFile->pInode is shared across threads */ + sqlite3_mutex_enter(pFile->pInode->pLockMutex); /* Check if a thread in this process holds such a lock */ if( pFile->pInode->eFileLock>SHARED_LOCK ){ @@ -33122,7 +33619,7 @@ static int unixCheckReservedLock(sqlite3_file *id, int *pResOut){ } #endif - unixLeaveMutex(); + sqlite3_mutex_leave(pFile->pInode->pLockMutex); OSTRACE(("TEST WR-LOCK %d %d %d (unix)\n", pFile->h, rc, reserved)); *pResOut = reserved; @@ -33188,8 +33685,8 @@ static int osSetPosixAdvisoryLock( static int unixFileLock(unixFile *pFile, struct flock *pLock){ int rc; unixInodeInfo *pInode = pFile->pInode; - assert( unixMutexHeld() ); assert( pInode!=0 ); + assert( sqlite3_mutex_held(pInode->pLockMutex) ); if( (pFile->ctrlFlags & (UNIXFILE_EXCL|UNIXFILE_RDONLY))==UNIXFILE_EXCL ){ if( pInode->bProcessLock==0 ){ struct flock lock; @@ -33308,8 +33805,8 @@ static int unixLock(sqlite3_file *id, int eFileLock){ /* This mutex is needed because pFile->pInode is shared across threads */ - unixEnterMutex(); pInode = pFile->pInode; + sqlite3_mutex_enter(pInode->pLockMutex); /* If some thread using this PID has a lock via a different unixFile* ** handle that precludes the requested lock, return BUSY. @@ -33452,7 +33949,7 @@ static int unixLock(sqlite3_file *id, int eFileLock){ } end_lock: - unixLeaveMutex(); + sqlite3_mutex_leave(pInode->pLockMutex); OSTRACE(("LOCK %d %s %s (unix)\n", pFile->h, azFileLock(eFileLock), rc==SQLITE_OK ? "ok" : "failed")); return rc; @@ -33465,11 +33962,11 @@ end_lock: static void setPendingFd(unixFile *pFile){ unixInodeInfo *pInode = pFile->pInode; UnixUnusedFd *p = pFile->pPreallocatedUnused; + assert( unixFileMutexHeld(pFile) ); p->pNext = pInode->pUnused; pInode->pUnused = p; pFile->h = -1; pFile->pPreallocatedUnused = 0; - nUnusedFd++; } /* @@ -33500,8 +33997,8 @@ static int posixUnlock(sqlite3_file *id, int eFileLock, int handleNFSUnlock){ if( pFile->eFileLock<=eFileLock ){ return SQLITE_OK; } - unixEnterMutex(); pInode = pFile->pInode; + sqlite3_mutex_enter(pInode->pLockMutex); assert( pInode->nShared!=0 ); if( pFile->eFileLock>SHARED_LOCK ){ assert( pInode->eFileLock==pFile->eFileLock ); @@ -33627,14 +34124,14 @@ static int posixUnlock(sqlite3_file *id, int eFileLock, int handleNFSUnlock){ */ pInode->nLock--; assert( pInode->nLock>=0 ); - if( pInode->nLock==0 ){ - closePendingFds(pFile); - } + if( pInode->nLock==0 ) closePendingFds(pFile); } end_unlock: - unixLeaveMutex(); - if( rc==SQLITE_OK ) pFile->eFileLock = eFileLock; + sqlite3_mutex_leave(pInode->pLockMutex); + if( rc==SQLITE_OK ){ + pFile->eFileLock = eFileLock; + } return rc; } @@ -33705,15 +34202,20 @@ static int closeUnixFile(sqlite3_file *id){ static int unixClose(sqlite3_file *id){ int rc = SQLITE_OK; unixFile *pFile = (unixFile *)id; + unixInodeInfo *pInode = pFile->pInode; + + assert( pInode!=0 ); verifyDbFile(pFile); unixUnlock(id, NO_LOCK); + assert( unixFileMutexNotheld(pFile) ); unixEnterMutex(); /* unixFile.pInode is always valid here. Otherwise, a different close ** routine (e.g. nolockClose()) would be called instead. */ assert( pFile->pInode->nLock>0 || pFile->pInode->bProcessLock==0 ); - if( ALWAYS(pFile->pInode) && pFile->pInode->nLock ){ + sqlite3_mutex_enter(pInode->pLockMutex); + if( pInode->nLock ){ /* If there are outstanding locks, do not actually close the file just ** yet because that would clear those locks. Instead, add the file ** descriptor to pInode->pUnused list. It will be automatically closed @@ -33721,6 +34223,7 @@ static int unixClose(sqlite3_file *id){ */ setPendingFd(pFile); } + sqlite3_mutex_leave(pInode->pLockMutex); releaseInodeInfo(pFile); rc = closeUnixFile(id); unixLeaveMutex(); @@ -34318,6 +34821,7 @@ static int semXClose(sqlite3_file *id) { unixFile *pFile = (unixFile*)id; semXUnlock(id, NO_LOCK); assert( pFile ); + assert( unixFileMutexNotheld(pFile) ); unixEnterMutex(); releaseInodeInfo(pFile); unixLeaveMutex(); @@ -34432,8 +34936,7 @@ static int afpCheckReservedLock(sqlite3_file *id, int *pResOut){ *pResOut = 1; return SQLITE_OK; } - unixEnterMutex(); /* Because pFile->pInode is shared across threads */ - + sqlite3_mutex_enter(pFile->pInode->pLockMutex); /* Check if a thread in this process holds such a lock */ if( pFile->pInode->eFileLock>SHARED_LOCK ){ reserved = 1; @@ -34457,7 +34960,7 @@ static int afpCheckReservedLock(sqlite3_file *id, int *pResOut){ } } - unixLeaveMutex(); + sqlite3_mutex_leave(pFile->pInode->pLockMutex); OSTRACE(("TEST WR-LOCK %d %d %d (afp)\n", pFile->h, rc, reserved)); *pResOut = reserved; @@ -34520,8 +35023,8 @@ static int afpLock(sqlite3_file *id, int eFileLock){ /* This mutex is needed because pFile->pInode is shared across threads */ - unixEnterMutex(); pInode = pFile->pInode; + sqlite3_mutex_enter(pInode->pLockMutex); /* If some thread using this PID has a lock via a different unixFile* ** handle that precludes the requested lock, return BUSY. @@ -34657,7 +35160,7 @@ static int afpLock(sqlite3_file *id, int eFileLock){ } afp_end_lock: - unixLeaveMutex(); + sqlite3_mutex_leave(pInode->pLockMutex); OSTRACE(("LOCK %d %s %s (afp)\n", pFile->h, azFileLock(eFileLock), rc==SQLITE_OK ? "ok" : "failed")); return rc; @@ -34689,8 +35192,8 @@ static int afpUnlock(sqlite3_file *id, int eFileLock) { if( pFile->eFileLock<=eFileLock ){ return SQLITE_OK; } - unixEnterMutex(); pInode = pFile->pInode; + sqlite3_mutex_enter(pInode->pLockMutex); assert( pInode->nShared!=0 ); if( pFile->eFileLock>SHARED_LOCK ){ assert( pInode->eFileLock==pFile->eFileLock ); @@ -34759,14 +35262,14 @@ static int afpUnlock(sqlite3_file *id, int eFileLock) { if( rc==SQLITE_OK ){ pInode->nLock--; assert( pInode->nLock>=0 ); - if( pInode->nLock==0 ){ - closePendingFds(pFile); - } + if( pInode->nLock==0 ) closePendingFds(pFile); } } - unixLeaveMutex(); - if( rc==SQLITE_OK ) pFile->eFileLock = eFileLock; + sqlite3_mutex_leave(pInode->pLockMutex); + if( rc==SQLITE_OK ){ + pFile->eFileLock = eFileLock; + } return rc; } @@ -34778,14 +35281,20 @@ static int afpClose(sqlite3_file *id) { unixFile *pFile = (unixFile*)id; assert( id!=0 ); afpUnlock(id, NO_LOCK); + assert( unixFileMutexNotheld(pFile) ); unixEnterMutex(); - if( pFile->pInode && pFile->pInode->nLock ){ - /* If there are outstanding locks, do not actually close the file just - ** yet because that would clear those locks. Instead, add the file - ** descriptor to pInode->aPending. It will be automatically closed when - ** the last lock is cleared. - */ - setPendingFd(pFile); + if( pFile->pInode ){ + unixInodeInfo *pInode = pFile->pInode; + sqlite3_mutex_enter(pInode->pLockMutex); + if( pInode->nLock ){ + /* If there are outstanding locks, do not actually close the file just + ** yet because that would clear those locks. Instead, add the file + ** descriptor to pInode->aPending. It will be automatically closed when + ** the last lock is cleared. + */ + setPendingFd(pFile); + } + sqlite3_mutex_leave(pInode->pLockMutex); } releaseInodeInfo(pFile); sqlite3_free(pFile->lockingContext); @@ -36091,6 +36600,7 @@ static int unixOpenSharedMemory(unixFile *pDbFd){ /* Check to see if a unixShmNode object already exists. Reuse an existing ** one if present. Create a new one if necessary. */ + assert( unixFileMutexNotheld(pDbFd) ); unixEnterMutex(); pInode = pDbFd->pInode; pShmNode = pInode->pShmNode; @@ -36473,6 +36983,9 @@ static void unixShmBarrier( ){ UNUSED_PARAMETER(fd); sqlite3MemoryBarrier(); /* compiler-defined memory barrier */ + assert( fd->pMethods->xLock==nolockLock + || unixFileMutexNotheld((unixFile*)fd) + ); unixEnterMutex(); /* Also mutex, for redundancy */ unixLeaveMutex(); } @@ -36514,6 +37027,7 @@ static int unixShmUnmap( /* If pShmNode->nRef has reached 0, then close the underlying ** shared-memory file, too */ + assert( unixFileMutexNotheld(pDbFd) ); unixEnterMutex(); assert( pShmNode->nRef>0 ); pShmNode->nRef--; @@ -36840,7 +37354,7 @@ IOMETHODS( IOMETHODS( nolockIoFinder, /* Finder function name */ nolockIoMethods, /* sqlite3_io_methods object name */ - 3, /* shared memory is disabled */ + 3, /* shared memory and mmap are enabled */ nolockClose, /* xClose method */ nolockLock, /* xLock method */ nolockUnlock, /* xUnlock method */ @@ -37336,7 +37850,7 @@ static UnixUnusedFd *findReusableFd(const char *zPath, int flags){ ** ** Even if a subsequent open() call does succeed, the consequences of ** not searching for a reusable file descriptor are not dire. */ - if( nUnusedFd>0 && 0==osStat(zPath, &sStat) ){ + if( inodeList!=0 && 0==osStat(zPath, &sStat) ){ unixInodeInfo *pInode; pInode = inodeList; @@ -37346,12 +37860,14 @@ static UnixUnusedFd *findReusableFd(const char *zPath, int flags){ } if( pInode ){ UnixUnusedFd **pp; + assert( sqlite3_mutex_notheld(pInode->pLockMutex) ); + sqlite3_mutex_enter(pInode->pLockMutex); for(pp=&pInode->pUnused; *pp && (*pp)->flags!=flags; pp=&((*pp)->pNext)); pUnused = *pp; if( pUnused ){ - nUnusedFd--; *pp = pUnused->pNext; } + sqlite3_mutex_leave(pInode->pLockMutex); } } unixLeaveMutex(); @@ -42554,6 +43070,9 @@ static int winTruncate(sqlite3_file *id, sqlite3_int64 nByte){ winFile *pFile = (winFile*)id; /* File handle object */ int rc = SQLITE_OK; /* Return code for this function */ DWORD lastErrno; +#if SQLITE_MAX_MMAP_SIZE>0 + sqlite3_int64 oldMmapSize; +#endif assert( pFile ); SimulateIOError(return SQLITE_IOERR_TRUNCATE); @@ -42569,6 +43088,15 @@ static int winTruncate(sqlite3_file *id, sqlite3_int64 nByte){ nByte = ((nByte + pFile->szChunk - 1)/pFile->szChunk) * pFile->szChunk; } +#if SQLITE_MAX_MMAP_SIZE>0 + if( pFile->pMapRegion ){ + oldMmapSize = pFile->mmapSize; + }else{ + oldMmapSize = 0; + } + winUnmapfile(pFile); +#endif + /* SetEndOfFile() returns non-zero when successful, or zero when it fails. */ if( winSeekFile(pFile, nByte) ){ rc = winLogError(SQLITE_IOERR_TRUNCATE, pFile->lastErrno, @@ -42581,12 +43109,12 @@ static int winTruncate(sqlite3_file *id, sqlite3_int64 nByte){ } #if SQLITE_MAX_MMAP_SIZE>0 - /* If the file was truncated to a size smaller than the currently - ** mapped region, reduce the effective mapping size as well. SQLite will - ** use read() and write() to access data beyond this point from now on. - */ - if( pFile->pMapRegion && nBytemmapSize ){ - pFile->mmapSize = nByte; + if( rc==SQLITE_OK && oldMmapSize>0 ){ + if( oldMmapSize>nByte ){ + winMapfile(pFile, -1); + }else{ + winMapfile(pFile, oldMmapSize); + } } #endif @@ -45774,8 +46302,8 @@ SQLITE_API int sqlite3_os_end(void){ ** This file also implements interface sqlite3_serialize() and ** sqlite3_deserialize(). */ -#ifdef SQLITE_ENABLE_DESERIALIZE /* #include "sqliteInt.h" */ +#ifdef SQLITE_ENABLE_DESERIALIZE /* ** Forward declaration of objects used by this utility @@ -49023,30 +49551,23 @@ struct RowSet { #define ROWSET_NEXT 0x02 /* True if sqlite3RowSetNext() has been called */ /* -** Turn bulk memory into a RowSet object. N bytes of memory -** are available at pSpace. The db pointer is used as a memory context -** for any subsequent allocations that need to occur. -** Return a pointer to the new RowSet object. -** -** It must be the case that N is sufficient to make a Rowset. If not -** an assertion fault occurs. -** -** If N is larger than the minimum, use the surplus as an initial -** allocation of entries available to be filled. +** Allocate a RowSet object. Return NULL if a memory allocation +** error occurs. */ -SQLITE_PRIVATE RowSet *sqlite3RowSetInit(sqlite3 *db, void *pSpace, unsigned int N){ - RowSet *p; - assert( N >= ROUND8(sizeof(*p)) ); - p = pSpace; - p->pChunk = 0; - p->db = db; - p->pEntry = 0; - p->pLast = 0; - p->pForest = 0; - p->pFresh = (struct RowSetEntry*)(ROUND8(sizeof(*p)) + (char*)p); - p->nFresh = (u16)((N - ROUND8(sizeof(*p)))/sizeof(struct RowSetEntry)); - p->rsFlags = ROWSET_SORTED; - p->iBatch = 0; +SQLITE_PRIVATE RowSet *sqlite3RowSetInit(sqlite3 *db){ + RowSet *p = sqlite3DbMallocRawNN(db, sizeof(*p)); + if( p ){ + int N = sqlite3DbMallocSize(db, p); + p->pChunk = 0; + p->db = db; + p->pEntry = 0; + p->pLast = 0; + p->pForest = 0; + p->pFresh = (struct RowSetEntry*)(ROUND8(sizeof(*p)) + (char*)p); + p->nFresh = (u16)((N - ROUND8(sizeof(*p)))/sizeof(struct RowSetEntry)); + p->rsFlags = ROWSET_SORTED; + p->iBatch = 0; + } return p; } @@ -49055,7 +49576,8 @@ SQLITE_PRIVATE RowSet *sqlite3RowSetInit(sqlite3 *db, void *pSpace, unsigned int ** the RowSet has allocated over its lifetime. This routine is ** the destructor for the RowSet. */ -SQLITE_PRIVATE void sqlite3RowSetClear(RowSet *p){ +SQLITE_PRIVATE void sqlite3RowSetClear(void *pArg){ + RowSet *p = (RowSet*)pArg; struct RowSetChunk *pChunk, *pNextChunk; for(pChunk=p->pChunk; pChunk; pChunk = pNextChunk){ pNextChunk = pChunk->pNextChunk; @@ -49069,6 +49591,16 @@ SQLITE_PRIVATE void sqlite3RowSetClear(RowSet *p){ p->rsFlags = ROWSET_SORTED; } +/* +** Deallocate all chunks from a RowSet. This frees all memory that +** the RowSet has allocated over its lifetime. This routine is +** the destructor for the RowSet. +*/ +SQLITE_PRIVATE void sqlite3RowSetDelete(void *pArg){ + sqlite3RowSetClear(pArg); + sqlite3DbFree(((RowSet*)pArg)->db, pArg); +} + /* ** Allocate a new RowSetEntry object that is associated with the ** given RowSet. Return a pointer to the new and completely uninitialized @@ -49556,6 +50088,8 @@ SQLITE_PRIVATE int sqlite3WalHeapMemory(Wal *pWal); SQLITE_PRIVATE int sqlite3WalSnapshotGet(Wal *pWal, sqlite3_snapshot **ppSnapshot); SQLITE_PRIVATE void sqlite3WalSnapshotOpen(Wal *pWal, sqlite3_snapshot *pSnapshot); SQLITE_PRIVATE int sqlite3WalSnapshotRecover(Wal *pWal); +SQLITE_PRIVATE int sqlite3WalSnapshotCheck(Wal *pWal, sqlite3_snapshot *pSnapshot); +SQLITE_PRIVATE void sqlite3WalSnapshotUnlock(Wal *pWal); #endif #ifdef SQLITE_ENABLE_ZIPVFS @@ -50549,8 +51083,12 @@ static int assert_pager_state(Pager *p){ ** to "print *pPager" in gdb: ** ** (gdb) printf "%s", print_pager_state(pPager) +** +** This routine has external linkage in order to suppress compiler warnings +** about an unused function. It is enclosed within SQLITE_DEBUG and so does +** not appear in normal builds. */ -static char *print_pager_state(Pager *p){ +char *print_pager_state(Pager *p){ static char zRet[1024]; sqlite3_snprintf(1024, zRet, @@ -51316,7 +51854,6 @@ static void pager_reset(Pager *pPager){ ** Return the pPager->iDataVersion value */ SQLITE_PRIVATE u32 sqlite3PagerDataVersion(Pager *pPager){ - assert( pPager->eState>PAGER_OPEN ); return pPager->iDataVersion; } @@ -55934,9 +56471,10 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseOne( ** backup in progress needs to be restarted. */ sqlite3BackupRestart(pPager->pBackup); }else{ + PgHdr *pList; if( pagerUseWal(pPager) ){ - PgHdr *pList = sqlite3PcacheDirtyList(pPager->pPCache); PgHdr *pPageOne = 0; + pList = sqlite3PcacheDirtyList(pPager->pPCache); if( pList==0 ){ /* Must have at least one page for the WAL commit flag. ** Ticket [2d1a5c67dfc2363e44f29d9bbd57f] 2011-05-18 */ @@ -55957,14 +56495,14 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseOne( ** should be used. No rollback journal is created if batch-atomic-write ** is enabled. */ - sqlite3_file *fd = pPager->fd; #ifdef SQLITE_ENABLE_BATCH_ATOMIC_WRITE - const int bBatch = zMaster==0 /* An SQLITE_IOCAP_BATCH_ATOMIC commit */ + sqlite3_file *fd = pPager->fd; + int bBatch = zMaster==0 /* An SQLITE_IOCAP_BATCH_ATOMIC commit */ && (sqlite3OsDeviceCharacteristics(fd) & SQLITE_IOCAP_BATCH_ATOMIC) && !pPager->noSync && sqlite3JournalIsInMemory(pPager->jfd); #else -# define bBatch 0 +# define bBatch 0 #endif #ifdef SQLITE_ENABLE_ATOMIC_WRITE @@ -56016,15 +56554,16 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseOne( } } } -#else +#else /* SQLITE_ENABLE_ATOMIC_WRITE */ #ifdef SQLITE_ENABLE_BATCH_ATOMIC_WRITE if( zMaster ){ rc = sqlite3JournalCreate(pPager->jfd); if( rc!=SQLITE_OK ) goto commit_phase_one_exit; + assert( bBatch==0 ); } #endif rc = pager_incr_changecounter(pPager, 0); -#endif +#endif /* !SQLITE_ENABLE_ATOMIC_WRITE */ if( rc!=SQLITE_OK ) goto commit_phase_one_exit; /* Write the master journal name into the journal file. If a master @@ -56048,24 +56587,36 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseOne( rc = syncJournal(pPager, 0); if( rc!=SQLITE_OK ) goto commit_phase_one_exit; + pList = sqlite3PcacheDirtyList(pPager->pPCache); +#ifdef SQLITE_ENABLE_BATCH_ATOMIC_WRITE if( bBatch ){ - /* The pager is now in DBMOD state. But regardless of what happens - ** next, attempting to play the journal back into the database would - ** be unsafe. Close it now to make sure that does not happen. */ - sqlite3OsClose(pPager->jfd); rc = sqlite3OsFileControl(fd, SQLITE_FCNTL_BEGIN_ATOMIC_WRITE, 0); - if( rc!=SQLITE_OK ) goto commit_phase_one_exit; - } - rc = pager_write_pagelist(pPager,sqlite3PcacheDirtyList(pPager->pPCache)); - if( bBatch ){ if( rc==SQLITE_OK ){ - rc = sqlite3OsFileControl(fd, SQLITE_FCNTL_COMMIT_ATOMIC_WRITE, 0); + rc = pager_write_pagelist(pPager, pList); + if( rc==SQLITE_OK ){ + rc = sqlite3OsFileControl(fd, SQLITE_FCNTL_COMMIT_ATOMIC_WRITE, 0); + } + if( rc!=SQLITE_OK ){ + sqlite3OsFileControlHint(fd, SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE, 0); + } } - if( rc!=SQLITE_OK ){ - sqlite3OsFileControlHint(fd, SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE, 0); + + if( (rc&0xFF)==SQLITE_IOERR && rc!=SQLITE_IOERR_NOMEM ){ + rc = sqlite3JournalCreate(pPager->jfd); + if( rc!=SQLITE_OK ){ + sqlite3OsClose(pPager->jfd); + goto commit_phase_one_exit; + } + bBatch = 0; + }else{ + sqlite3OsClose(pPager->jfd); } } +#endif /* SQLITE_ENABLE_BATCH_ATOMIC_WRITE */ + if( bBatch==0 ){ + rc = pager_write_pagelist(pPager, pList); + } if( rc!=SQLITE_OK ){ assert( rc!=SQLITE_IOERR_BLOCKED ); goto commit_phase_one_exit; @@ -56817,13 +57368,6 @@ SQLITE_PRIVATE int sqlite3PagerLockingMode(Pager *pPager, int eMode){ SQLITE_PRIVATE int sqlite3PagerSetJournalMode(Pager *pPager, int eMode){ u8 eOld = pPager->journalMode; /* Prior journalmode */ -#ifdef SQLITE_DEBUG - /* The print_pager_state() routine is intended to be used by the debugger - ** only. We invoke it once here to suppress a compiler warning. */ - print_pager_state(pPager); -#endif - - /* The eMode parameter is always valid */ assert( eMode==PAGER_JOURNALMODE_DELETE || eMode==PAGER_JOURNALMODE_TRUNCATE @@ -57192,6 +57736,38 @@ SQLITE_PRIVATE int sqlite3PagerSnapshotRecover(Pager *pPager){ } return rc; } + +/* +** The caller currently has a read transaction open on the database. +** If this is not a WAL database, SQLITE_ERROR is returned. Otherwise, +** this function takes a SHARED lock on the CHECKPOINTER slot and then +** checks if the snapshot passed as the second argument is still +** available. If so, SQLITE_OK is returned. +** +** If the snapshot is not available, SQLITE_ERROR is returned. Or, if +** the CHECKPOINTER lock cannot be obtained, SQLITE_BUSY. If any error +** occurs (any value other than SQLITE_OK is returned), the CHECKPOINTER +** lock is released before returning. +*/ +SQLITE_PRIVATE int sqlite3PagerSnapshotCheck(Pager *pPager, sqlite3_snapshot *pSnapshot){ + int rc; + if( pPager->pWal ){ + rc = sqlite3WalSnapshotCheck(pPager->pWal, pSnapshot); + }else{ + rc = SQLITE_ERROR; + } + return rc; +} + +/* +** Release a lock obtained by an earlier successful call to +** sqlite3PagerSnapshotCheck(). +*/ +SQLITE_PRIVATE void sqlite3PagerSnapshotUnlock(Pager *pPager){ + assert( pPager->pWal ); + return sqlite3WalSnapshotUnlock(pPager->pWal); +} + #endif /* SQLITE_ENABLE_SNAPSHOT */ #endif /* !SQLITE_OMIT_WAL */ @@ -57473,6 +58049,18 @@ SQLITE_PRIVATE int sqlite3WalTrace = 0; # define WALTRACE(X) #endif +/* +** WAL mode depends on atomic aligned 32-bit loads and stores in a few +** places. The following macros try to make this explicit. +*/ +#if GCC_VESRION>=5004000 +# define AtomicLoad(PTR) __atomic_load_n((PTR),__ATOMIC_RELAXED) +# define AtomicStore(PTR,VAL) __atomic_store_n((PTR),(VAL),__ATOMIC_RELAXED) +#else +# define AtomicLoad(PTR) (*(PTR)) +# define AtomicStore(PTR,VAL) (*(PTR) = (VAL)) +#endif + /* ** The maximum (and only) versions of the wal and wal-index formats ** that may be interpreted by this version of SQLite. @@ -58095,48 +58683,51 @@ static int walNextHash(int iPriorHash){ return (iPriorHash+1)&(HASHTABLE_NSLOT-1); } +/* +** An instance of the WalHashLoc object is used to describe the location +** of a page hash table in the wal-index. This becomes the return value +** from walHashGet(). +*/ +typedef struct WalHashLoc WalHashLoc; +struct WalHashLoc { + volatile ht_slot *aHash; /* Start of the wal-index hash table */ + volatile u32 *aPgno; /* aPgno[1] is the page of first frame indexed */ + u32 iZero; /* One less than the frame number of first indexed*/ +}; + /* ** Return pointers to the hash table and page number array stored on ** page iHash of the wal-index. The wal-index is broken into 32KB pages ** numbered starting from 0. ** -** Set output variable *paHash to point to the start of the hash table -** in the wal-index file. Set *piZero to one less than the frame +** Set output variable pLoc->aHash to point to the start of the hash table +** in the wal-index file. Set pLoc->iZero to one less than the frame ** number of the first frame indexed by this hash table. If a ** slot in the hash table is set to N, it refers to frame number -** (*piZero+N) in the log. +** (pLoc->iZero+N) in the log. ** -** Finally, set *paPgno so that *paPgno[1] is the page number of the -** first frame indexed by the hash table, frame (*piZero+1). +** Finally, set pLoc->aPgno so that pLoc->aPgno[1] is the page number of the +** first frame indexed by the hash table, frame (pLoc->iZero+1). */ static int walHashGet( Wal *pWal, /* WAL handle */ int iHash, /* Find the iHash'th table */ - volatile ht_slot **paHash, /* OUT: Pointer to hash index */ - volatile u32 **paPgno, /* OUT: Pointer to page number array */ - u32 *piZero /* OUT: Frame associated with *paPgno[0] */ + WalHashLoc *pLoc /* OUT: Hash table location */ ){ int rc; /* Return code */ - volatile u32 *aPgno; - rc = walIndexPage(pWal, iHash, &aPgno); + rc = walIndexPage(pWal, iHash, &pLoc->aPgno); assert( rc==SQLITE_OK || iHash>0 ); if( rc==SQLITE_OK ){ - u32 iZero; - volatile ht_slot *aHash; - - aHash = (volatile ht_slot *)&aPgno[HASHTABLE_NPAGE]; + pLoc->aHash = (volatile ht_slot *)&pLoc->aPgno[HASHTABLE_NPAGE]; if( iHash==0 ){ - aPgno = &aPgno[WALINDEX_HDR_SIZE/sizeof(u32)]; - iZero = 0; + pLoc->aPgno = &pLoc->aPgno[WALINDEX_HDR_SIZE/sizeof(u32)]; + pLoc->iZero = 0; }else{ - iZero = HASHTABLE_NPAGE_ONE + (iHash-1)*HASHTABLE_NPAGE; + pLoc->iZero = HASHTABLE_NPAGE_ONE + (iHash-1)*HASHTABLE_NPAGE; } - - *paPgno = &aPgno[-1]; - *paHash = aHash; - *piZero = iZero; + pLoc->aPgno = &pLoc->aPgno[-1]; } return rc; } @@ -58182,9 +58773,7 @@ static u32 walFramePgno(Wal *pWal, u32 iFrame){ ** actually needed. */ static void walCleanupHash(Wal *pWal){ - volatile ht_slot *aHash = 0; /* Pointer to hash table to clear */ - volatile u32 *aPgno = 0; /* Page number array for hash table */ - u32 iZero = 0; /* frame == (aHash[x]+iZero) */ + WalHashLoc sLoc; /* Hash table location */ int iLimit = 0; /* Zero values greater than this */ int nByte; /* Number of bytes to zero in aPgno[] */ int i; /* Used to iterate through aHash[] */ @@ -58202,24 +58791,24 @@ static void walCleanupHash(Wal *pWal){ */ assert( pWal->nWiData>walFramePage(pWal->hdr.mxFrame) ); assert( pWal->apWiData[walFramePage(pWal->hdr.mxFrame)] ); - walHashGet(pWal, walFramePage(pWal->hdr.mxFrame), &aHash, &aPgno, &iZero); + walHashGet(pWal, walFramePage(pWal->hdr.mxFrame), &sLoc); /* Zero all hash-table entries that correspond to frame numbers greater ** than pWal->hdr.mxFrame. */ - iLimit = pWal->hdr.mxFrame - iZero; + iLimit = pWal->hdr.mxFrame - sLoc.iZero; assert( iLimit>0 ); for(i=0; iiLimit ){ - aHash[i] = 0; + if( sLoc.aHash[i]>iLimit ){ + sLoc.aHash[i] = 0; } } /* Zero the entries in the aPgno array that correspond to frames with ** frame numbers greater than pWal->hdr.mxFrame. */ - nByte = (int)((char *)aHash - (char *)&aPgno[iLimit+1]); - memset((void *)&aPgno[iLimit+1], 0, nByte); + nByte = (int)((char *)sLoc.aHash - (char *)&sLoc.aPgno[iLimit+1]); + memset((void *)&sLoc.aPgno[iLimit+1], 0, nByte); #ifdef SQLITE_ENABLE_EXPENSIVE_ASSERT /* Verify that the every entry in the mapping region is still reachable @@ -58229,10 +58818,10 @@ static void walCleanupHash(Wal *pWal){ int j; /* Loop counter */ int iKey; /* Hash key */ for(j=1; j<=iLimit; j++){ - for(iKey=walHash(aPgno[j]); aHash[iKey]; iKey=walNextHash(iKey)){ - if( aHash[iKey]==j ) break; + for(iKey=walHash(sLoc.aPgno[j]);sLoc.aHash[iKey];iKey=walNextHash(iKey)){ + if( sLoc.aHash[iKey]==j ) break; } - assert( aHash[iKey]==j ); + assert( sLoc.aHash[iKey]==j ); } } #endif /* SQLITE_ENABLE_EXPENSIVE_ASSERT */ @@ -58245,11 +58834,9 @@ static void walCleanupHash(Wal *pWal){ */ static int walIndexAppend(Wal *pWal, u32 iFrame, u32 iPage){ int rc; /* Return code */ - u32 iZero = 0; /* One less than frame number of aPgno[1] */ - volatile u32 *aPgno = 0; /* Page number array */ - volatile ht_slot *aHash = 0; /* Hash table */ + WalHashLoc sLoc; /* Wal-index hash table location */ - rc = walHashGet(pWal, walFramePage(iFrame), &aHash, &aPgno, &iZero); + rc = walHashGet(pWal, walFramePage(iFrame), &sLoc); /* Assuming the wal-index file was successfully mapped, populate the ** page number array and hash table entry. @@ -58259,15 +58846,16 @@ static int walIndexAppend(Wal *pWal, u32 iFrame, u32 iPage){ int idx; /* Value to write to hash-table slot */ int nCollide; /* Number of hash collisions */ - idx = iFrame - iZero; + idx = iFrame - sLoc.iZero; assert( idx <= HASHTABLE_NSLOT/2 + 1 ); /* If this is the first entry to be added to this hash-table, zero the ** entire hash table and aPgno[] array before proceeding. */ if( idx==1 ){ - int nByte = (int)((u8 *)&aHash[HASHTABLE_NSLOT] - (u8 *)&aPgno[1]); - memset((void*)&aPgno[1], 0, nByte); + int nByte = (int)((u8 *)&sLoc.aHash[HASHTABLE_NSLOT] + - (u8 *)&sLoc.aPgno[1]); + memset((void*)&sLoc.aPgno[1], 0, nByte); } /* If the entry in aPgno[] is already set, then the previous writer @@ -58276,18 +58864,18 @@ static int walIndexAppend(Wal *pWal, u32 iFrame, u32 iPage){ ** Remove the remnants of that writers uncommitted transaction from ** the hash-table before writing any new entries. */ - if( aPgno[idx] ){ + if( sLoc.aPgno[idx] ){ walCleanupHash(pWal); - assert( !aPgno[idx] ); + assert( !sLoc.aPgno[idx] ); } /* Write the aPgno[] array entry and the hash-table slot. */ nCollide = idx; - for(iKey=walHash(iPage); aHash[iKey]; iKey=walNextHash(iKey)){ + for(iKey=walHash(iPage); sLoc.aHash[iKey]; iKey=walNextHash(iKey)){ if( (nCollide--)==0 ) return SQLITE_CORRUPT_BKPT; } - aPgno[idx] = iPage; - aHash[iKey] = (ht_slot)idx; + sLoc.aPgno[idx] = iPage; + sLoc.aHash[iKey] = (ht_slot)idx; #ifdef SQLITE_ENABLE_EXPENSIVE_ASSERT /* Verify that the number of entries in the hash table exactly equals @@ -58296,7 +58884,7 @@ static int walIndexAppend(Wal *pWal, u32 iFrame, u32 iPage){ { int i; /* Loop counter */ int nEntry = 0; /* Number of entries in the hash table */ - for(i=0; iaSegment[p->nSegment])[iZero]; - iZero++; + aIndex = &((ht_slot *)&p->aSegment[p->nSegment])[sLoc.iZero]; + sLoc.iZero++; for(j=0; jaSegment[i].iZero = iZero; + walMergesort((u32 *)sLoc.aPgno, aTmp, aIndex, &nEntry); + p->aSegment[i].iZero = sLoc.iZero; p->aSegment[i].nEntry = nEntry; p->aSegment[i].aIndex = aIndex; - p->aSegment[i].aPgno = (u32 *)aPgno; + p->aSegment[i].aPgno = (u32 *)sLoc.aPgno; } } sqlite3_free(aTmp); @@ -59050,7 +59638,6 @@ static int walCheckpoint( if( pIter && (rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(0),1))==SQLITE_OK ){ - i64 nSize; /* Current size of database file */ u32 nBackfill = pInfo->nBackfill; pInfo->nBackfillAttempted = mxSafeFrame; @@ -59063,6 +59650,7 @@ static int walCheckpoint( */ if( rc==SQLITE_OK ){ i64 nReq = ((i64)mxPage * szPage); + i64 nSize; /* Current size of database file */ rc = sqlite3OsFileSize(pWal->pDbFd, &nSize); if( rc==SQLITE_OK && nSizepDbFd, SQLITE_FCNTL_SIZE_HINT, &nReq); @@ -59770,7 +60358,7 @@ static int walTryBeginRead(Wal *pWal, int *pChanged, int useWal, int cnt){ } #endif for(i=1; iaReadMark[i]; + u32 thisMark = AtomicLoad(pInfo->aReadMark+i); if( mxReadMark<=thisMark && thisMark<=mxFrame ){ assert( thisMark!=READMARK_NOT_USED ); mxReadMark = thisMark; @@ -59783,7 +60371,7 @@ static int walTryBeginRead(Wal *pWal, int *pChanged, int useWal, int cnt){ for(i=1; iaReadMark[i] = mxFrame; + mxReadMark = AtomicStore(pInfo->aReadMark+i,mxFrame); mxI = i; walUnlockExclusive(pWal, WAL_READ_LOCK(i), 1); break; @@ -59835,9 +60423,9 @@ static int walTryBeginRead(Wal *pWal, int *pChanged, int useWal, int cnt){ ** we can guarantee that the checkpointer that set nBackfill could not ** see any pages past pWal->hdr.mxFrame, this problem does not come up. */ - pWal->minFrame = pInfo->nBackfill+1; + pWal->minFrame = AtomicLoad(&pInfo->nBackfill)+1; walShmBarrier(pWal); - if( pInfo->aReadMark[mxI]!=mxReadMark + if( AtomicLoad(pInfo->aReadMark+mxI)!=mxReadMark || memcmp((void *)walIndexHdr(pWal), &pWal->hdr, sizeof(WalIndexHdr)) ){ walUnlockShared(pWal, WAL_READ_LOCK(mxI)); @@ -59888,16 +60476,14 @@ SQLITE_PRIVATE int sqlite3WalSnapshotRecover(Wal *pWal){ }else{ u32 i = pInfo->nBackfillAttempted; for(i=pInfo->nBackfillAttempted; i>pInfo->nBackfill; i--){ - volatile ht_slot *dummy; - volatile u32 *aPgno; /* Array of page numbers */ - u32 iZero; /* Frame corresponding to aPgno[0] */ + WalHashLoc sLoc; /* Hash table location */ u32 pgno; /* Page number in db file */ i64 iDbOff; /* Offset of db file entry */ i64 iWalOff; /* Offset of wal file entry */ - rc = walHashGet(pWal, walFramePage(i), &dummy, &aPgno, &iZero); + rc = walHashGet(pWal, walFramePage(i), &sLoc); if( rc!=SQLITE_OK ) break; - pgno = aPgno[i-iZero]; + pgno = sLoc.aPgno[i-sLoc.iZero]; iDbOff = (i64)(pgno-1) * szPage; if( iDbOff+szPage<=szDb ){ @@ -59938,7 +60524,7 @@ SQLITE_PRIVATE int sqlite3WalSnapshotRecover(Wal *pWal){ ** ** If the database contents have changes since the previous read ** transaction, then *pChanged is set to 1 before returning. The -** Pager layer will use this to know that is cache is stale and +** Pager layer will use this to know that its cache is stale and ** needs to be flushed. */ SQLITE_PRIVATE int sqlite3WalBeginReadTransaction(Wal *pWal, int *pChanged){ @@ -60000,7 +60586,7 @@ SQLITE_PRIVATE int sqlite3WalBeginReadTransaction(Wal *pWal, int *pChanged){ /* Check that the wal file has not been wrapped. Assuming that it has ** not, also check that no checkpointer has attempted to checkpoint any ** frames beyond pSnapshot->mxFrame. If either of these conditions are - ** true, return SQLITE_BUSY_SNAPSHOT. Otherwise, overwrite pWal->hdr + ** true, return SQLITE_ERROR_SNAPSHOT. Otherwise, overwrite pWal->hdr ** with *pSnapshot and set *pChanged as appropriate for opening the ** snapshot. */ if( !memcmp(pSnapshot->aSalt, pWal->hdr.aSalt, sizeof(pWal->hdr.aSalt)) @@ -60010,11 +60596,12 @@ SQLITE_PRIVATE int sqlite3WalBeginReadTransaction(Wal *pWal, int *pChanged){ memcpy(&pWal->hdr, pSnapshot, sizeof(WalIndexHdr)); *pChanged = bChanged; }else{ - rc = SQLITE_BUSY_SNAPSHOT; + rc = SQLITE_ERROR_SNAPSHOT; } /* Release the shared CKPT lock obtained above. */ walUnlockShared(pWal, WAL_CKPT_LOCK); + pWal->minFrame = 1; } @@ -60098,21 +60685,20 @@ SQLITE_PRIVATE int sqlite3WalFindFrame( */ iMinHash = walFramePage(pWal->minFrame); for(iHash=walFramePage(iLast); iHash>=iMinHash; iHash--){ - volatile ht_slot *aHash; /* Pointer to hash table */ - volatile u32 *aPgno; /* Pointer to array of page numbers */ - u32 iZero; /* Frame number corresponding to aPgno[0] */ + WalHashLoc sLoc; /* Hash table location */ int iKey; /* Hash slot index */ int nCollide; /* Number of hash collisions remaining */ int rc; /* Error code */ - rc = walHashGet(pWal, iHash, &aHash, &aPgno, &iZero); + rc = walHashGet(pWal, iHash, &sLoc); if( rc!=SQLITE_OK ){ return rc; } nCollide = HASHTABLE_NSLOT; - for(iKey=walHash(pgno); aHash[iKey]; iKey=walNextHash(iKey)){ - u32 iFrame = aHash[iKey] + iZero; - if( iFrame<=iLast && iFrame>=pWal->minFrame && aPgno[aHash[iKey]]==pgno ){ + for(iKey=walHash(pgno); sLoc.aHash[iKey]; iKey=walNextHash(iKey)){ + u32 iFrame = sLoc.aHash[iKey] + sLoc.iZero; + if( iFrame<=iLast && iFrame>=pWal->minFrame + && sLoc.aPgno[sLoc.aHash[iKey]]==pgno ){ assert( iFrame>iRead || CORRUPT_DB ); iRead = iFrame; } @@ -60987,6 +61573,43 @@ SQLITE_API int sqlite3_snapshot_cmp(sqlite3_snapshot *p1, sqlite3_snapshot *p2){ if( pHdr1->mxFrame>pHdr2->mxFrame ) return +1; return 0; } + +/* +** The caller currently has a read transaction open on the database. +** This function takes a SHARED lock on the CHECKPOINTER slot and then +** checks if the snapshot passed as the second argument is still +** available. If so, SQLITE_OK is returned. +** +** If the snapshot is not available, SQLITE_ERROR is returned. Or, if +** the CHECKPOINTER lock cannot be obtained, SQLITE_BUSY. If any error +** occurs (any value other than SQLITE_OK is returned), the CHECKPOINTER +** lock is released before returning. +*/ +SQLITE_PRIVATE int sqlite3WalSnapshotCheck(Wal *pWal, sqlite3_snapshot *pSnapshot){ + int rc; + rc = walLockShared(pWal, WAL_CKPT_LOCK); + if( rc==SQLITE_OK ){ + WalIndexHdr *pNew = (WalIndexHdr*)pSnapshot; + if( memcmp(pNew->aSalt, pWal->hdr.aSalt, sizeof(pWal->hdr.aSalt)) + || pNew->mxFramenBackfillAttempted + ){ + rc = SQLITE_ERROR_SNAPSHOT; + walUnlockShared(pWal, WAL_CKPT_LOCK); + } + } + return rc; +} + +/* +** Release a lock obtained by an earlier successful call to +** sqlite3WalSnapshotCheck(). +*/ +SQLITE_PRIVATE void sqlite3WalSnapshotUnlock(Wal *pWal){ + assert( pWal ); + walUnlockShared(pWal, WAL_CKPT_LOCK); +} + + #endif /* SQLITE_ENABLE_SNAPSHOT */ #ifdef SQLITE_ENABLE_ZIPVFS @@ -65332,7 +65955,7 @@ SQLITE_PRIVATE int sqlite3BtreeNewDb(Btree *p){ ** when A already has a read lock, we encourage A to give up and let B ** proceed. */ -SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree *p, int wrflag){ +SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree *p, int wrflag, int *pSchemaVersion){ BtShared *pBt = p->pBt; int rc = SQLITE_OK; @@ -65348,6 +65971,12 @@ SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree *p, int wrflag){ } assert( pBt->inTransaction==TRANS_WRITE || IfNotOmitAV(pBt->bDoTruncate)==0 ); + if( (p->db->flags & SQLITE_ResetDatabase) + && sqlite3PagerIsreadonly(pBt->pPager)==0 + ){ + pBt->btsFlags &= ~BTS_READ_ONLY; + } + /* Write transactions are not possible on a read-only database */ if( (pBt->btsFlags & BTS_READ_ONLY)!=0 && wrflag ){ rc = SQLITE_READONLY; @@ -65407,6 +66036,11 @@ SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree *p, int wrflag){ rc = sqlite3PagerBegin(pBt->pPager,wrflag>1,sqlite3TempInMemory(p->db)); if( rc==SQLITE_OK ){ rc = newDatabase(pBt); + }else if( rc==SQLITE_BUSY_SNAPSHOT && pBt->inTransaction==TRANS_NONE ){ + /* if there was no transaction opened when this function was + ** called and SQLITE_BUSY_SNAPSHOT is returned, change the error + ** code to SQLITE_BUSY. */ + rc = SQLITE_BUSY; } } } @@ -65458,14 +66092,18 @@ SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree *p, int wrflag){ } } - trans_begun: - if( rc==SQLITE_OK && wrflag ){ - /* This call makes sure that the pager has the correct number of - ** open savepoints. If the second parameter is greater than 0 and - ** the sub-journal is not already open, then it will be opened here. - */ - rc = sqlite3PagerOpenSavepoint(pBt->pPager, p->db->nSavepoint); + if( rc==SQLITE_OK ){ + if( pSchemaVersion ){ + *pSchemaVersion = get4byte(&pBt->pPage1->aData[40]); + } + if( wrflag ){ + /* This call makes sure that the pager has the correct number of + ** open savepoints. If the second parameter is greater than 0 and + ** the sub-journal is not already open, then it will be opened here. + */ + rc = sqlite3PagerOpenSavepoint(pBt->pPager, p->db->nSavepoint); + } } btreeIntegrity(p); @@ -67212,6 +67850,23 @@ SQLITE_PRIVATE int sqlite3BtreeFirst(BtCursor *pCur, int *pRes){ return rc; } +/* +** This function is a no-op if cursor pCur does not point to a valid row. +** Otherwise, if pCur is valid, configure it so that the next call to +** sqlite3BtreeNext() is a no-op. +*/ +#ifndef SQLITE_OMIT_WINDOWFUNC +SQLITE_PRIVATE void sqlite3BtreeSkipNext(BtCursor *pCur){ + /* We believe that the cursor must always be in the valid state when + ** this routine is called, but the proof is difficult, so we add an + ** ALWaYS() test just in case we are wrong. */ + if( ALWAYS(pCur->eState==CURSOR_VALID) ){ + pCur->eState = CURSOR_SKIPNEXT; + pCur->skipNext = 1; + } +} +#endif /* SQLITE_OMIT_WINDOWFUNC */ + /* Move the cursor to the last entry in the table. Return SQLITE_OK ** on success. Set *pRes to 0 if the cursor actually points to something ** or set *pRes to 1 if the table is empty. @@ -67616,7 +68271,16 @@ static SQLITE_NOINLINE int btreeNext(BtCursor *pCur){ pPage = pCur->pPage; idx = ++pCur->ix; - assert( pPage->isInit ); + if( !pPage->isInit ){ + /* The only known way for this to happen is for there to be a + ** recursive SQL function that does a DELETE operation as part of a + ** SELECT which deletes content out from under an active cursor + ** in a corrupt database file where the table being DELETE-ed from + ** has pages in common with the table being queried. See TH3 + ** module cov1/btree78.test testcase 220 (2018-06-08) for an + ** example. */ + return SQLITE_CORRUPT_BKPT; + } /* If the database file is corrupt, it is possible for the value of idx ** to be invalid here. This can only occur if a second cursor modifies @@ -71328,8 +71992,7 @@ static void setPageReferenced(IntegrityCk *pCheck, Pgno iPg){ ** Also check that the page number is in bounds. */ static int checkRef(IntegrityCk *pCheck, Pgno iPage){ - if( iPage==0 ) return 1; - if( iPage>pCheck->nPage ){ + if( iPage>pCheck->nPage || iPage==0 ){ checkAppendMsg(pCheck, "invalid page number %d", iPage); return 1; } @@ -71384,17 +72047,12 @@ static void checkList( ){ int i; int expected = N; - int iFirst = iPage; - while( N-- > 0 && pCheck->mxErr ){ + int nErrAtStart = pCheck->nErr; + while( iPage!=0 && pCheck->mxErr ){ DbPage *pOvflPage; unsigned char *pOvflData; - if( iPage<1 ){ - checkAppendMsg(pCheck, - "%d of %d pages missing from overflow list starting at %d", - N+1, expected, iFirst); - break; - } if( checkRef(pCheck, iPage) ) break; + N--; if( sqlite3PagerGet(pCheck->pPager, (Pgno)iPage, &pOvflPage, 0) ){ checkAppendMsg(pCheck, "failed to get page %d", iPage); break; @@ -71438,10 +72096,12 @@ static void checkList( #endif iPage = get4byte(pOvflData); sqlite3PagerUnref(pOvflPage); - - if( isFreeList && N<(iPage!=0) ){ - checkAppendMsg(pCheck, "free-page count in header is too small"); - } + } + if( N && nErrAtStart==pCheck->nErr ){ + checkAppendMsg(pCheck, + "%s is %d but should be %d", + isFreeList ? "size" : "overflow list length", + expected-N, expected); } } #endif /* SQLITE_OMIT_INTEGRITY_CHECK */ @@ -71835,6 +72495,24 @@ SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck( /* Check all the tables. */ +#ifndef SQLITE_OMIT_AUTOVACUUM + if( pBt->autoVacuum ){ + int mx = 0; + int mxInHdr; + for(i=0; (int)ipPage1->aData[52]); + if( mx!=mxInHdr ){ + checkAppendMsg(&sCheck, + "max rootpage (%d) disagrees with header (%d)", + mx, mxInHdr + ); + } + }else if( get4byte(&pBt->pPage1->aData[64])!=0 ){ + checkAppendMsg(&sCheck, + "incremental_vacuum enabled with a max rootpage of zero" + ); + } +#endif testcase( pBt->db->flags & SQLITE_CellSizeCk ); pBt->db->flags &= ~SQLITE_CellSizeCk; for(i=0; (int)ibtsFlags &= ~BTS_NO_WAL; if( iVersion==1 ) pBt->btsFlags |= BTS_NO_WAL; - rc = sqlite3BtreeBeginTrans(pBtree, 0); + rc = sqlite3BtreeBeginTrans(pBtree, 0, 0); if( rc==SQLITE_OK ){ u8 *aData = pBt->pPage1->aData; if( aData[18]!=(u8)iVersion || aData[19]!=(u8)iVersion ){ - rc = sqlite3BtreeBeginTrans(pBtree, 2); + rc = sqlite3BtreeBeginTrans(pBtree, 2, 0); if( rc==SQLITE_OK ){ rc = sqlite3PagerWrite(pBt->pPage1->pDbPage); if( rc==SQLITE_OK ){ @@ -72560,7 +73238,7 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){ ** before this function exits. */ if( rc==SQLITE_OK && 0==sqlite3BtreeIsInReadTrans(p->pSrc) ){ - rc = sqlite3BtreeBeginTrans(p->pSrc, 0); + rc = sqlite3BtreeBeginTrans(p->pSrc, 0, 0); bCloseTrans = 1; } @@ -72576,10 +73254,10 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){ /* Lock the destination database, if it is not locked already. */ if( SQLITE_OK==rc && p->bDestLocked==0 - && SQLITE_OK==(rc = sqlite3BtreeBeginTrans(p->pDest, 2)) + && SQLITE_OK==(rc = sqlite3BtreeBeginTrans(p->pDest, 2, + (int*)&p->iDestSchema)) ){ p->bDestLocked = 1; - sqlite3BtreeGetMeta(p->pDest, BTREE_SCHEMA_VERSION, &p->iDestSchema); } /* Do not allow backup if the destination database is in WAL mode @@ -73023,8 +73701,7 @@ SQLITE_PRIVATE int sqlite3VdbeCheckMemInvariants(Mem *p){ if( p->flags & MEM_Null ){ /* Cannot be both MEM_Null and some other type */ - assert( (p->flags & (MEM_Int|MEM_Real|MEM_Str|MEM_Blob - |MEM_RowSet|MEM_Frame|MEM_Agg))==0 ); + assert( (p->flags & (MEM_Int|MEM_Real|MEM_Str|MEM_Blob|MEM_Agg))==0 ); /* If MEM_Null is set, then either the value is a pure NULL (the usual ** case) or it is a pointer set using sqlite3_bind_pointer() or @@ -73137,7 +73814,7 @@ SQLITE_PRIVATE int sqlite3VdbeChangeEncoding(Mem *pMem, int desiredEnc){ #ifndef SQLITE_OMIT_UTF16 int rc; #endif - assert( (pMem->flags&MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pMem) ); assert( desiredEnc==SQLITE_UTF8 || desiredEnc==SQLITE_UTF16LE || desiredEnc==SQLITE_UTF16BE ); if( !(pMem->flags&MEM_Str) || pMem->enc==desiredEnc ){ @@ -73170,7 +73847,7 @@ SQLITE_PRIVATE int sqlite3VdbeChangeEncoding(Mem *pMem, int desiredEnc){ */ SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3VdbeMemGrow(Mem *pMem, int n, int bPreserve){ assert( sqlite3VdbeCheckMemInvariants(pMem) ); - assert( (pMem->flags&MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pMem) ); testcase( pMem->db==0 ); /* If the bPreserve flag is set to true, then the memory cell must already @@ -73258,7 +73935,7 @@ static SQLITE_NOINLINE int vdbeMemAddTerminator(Mem *pMem){ */ SQLITE_PRIVATE int sqlite3VdbeMemMakeWriteable(Mem *pMem){ assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) ); - assert( (pMem->flags&MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pMem) ); if( (pMem->flags & (MEM_Str|MEM_Blob))!=0 ){ if( ExpandBlob(pMem) ) return SQLITE_NOMEM; if( pMem->szMalloc==0 || pMem->z!=pMem->zMalloc ){ @@ -73283,7 +73960,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemExpandBlob(Mem *pMem){ int nByte; assert( pMem->flags & MEM_Zero ); assert( pMem->flags&MEM_Blob ); - assert( (pMem->flags&MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pMem) ); assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) ); /* Set nByte to the number of bytes required to store the expanded blob. */ @@ -73338,7 +74015,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemStringify(Mem *pMem, u8 enc, u8 bForce){ assert( !(fg&MEM_Zero) ); assert( !(fg&(MEM_Str|MEM_Blob)) ); assert( fg&(MEM_Int|MEM_Real) ); - assert( (pMem->flags&MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pMem) ); assert( EIGHT_BYTE_ALIGNMENT(pMem) ); @@ -73396,6 +74073,35 @@ SQLITE_PRIVATE int sqlite3VdbeMemFinalize(Mem *pMem, FuncDef *pFunc){ return ctx.isError; } +/* +** Memory cell pAccum contains the context of an aggregate function. +** This routine calls the xValue method for that function and stores +** the results in memory cell pMem. +** +** SQLITE_ERROR is returned if xValue() reports an error. SQLITE_OK +** otherwise. +*/ +#ifndef SQLITE_OMIT_WINDOWFUNC +SQLITE_PRIVATE int sqlite3VdbeMemAggValue(Mem *pAccum, Mem *pOut, FuncDef *pFunc){ + sqlite3_context ctx; + Mem t; + assert( pFunc!=0 ); + assert( pFunc->xValue!=0 ); + assert( (pAccum->flags & MEM_Null)!=0 || pFunc==pAccum->u.pDef ); + assert( pAccum->db==0 || sqlite3_mutex_held(pAccum->db->mutex) ); + memset(&ctx, 0, sizeof(ctx)); + memset(&t, 0, sizeof(t)); + t.flags = MEM_Null; + t.db = pAccum->db; + sqlite3VdbeMemSetNull(pOut); + ctx.pOut = pOut; + ctx.pMem = pAccum; + ctx.pFunc = pFunc; + pFunc->xValue(&ctx); + return ctx.isError; +} +#endif /* SQLITE_OMIT_WINDOWFUNC */ + /* ** If the memory cell contains a value that must be freed by ** invoking the external callback in Mem.xDel, then this routine @@ -73414,15 +74120,8 @@ static SQLITE_NOINLINE void vdbeMemClearExternAndSetNull(Mem *p){ testcase( p->flags & MEM_Dyn ); } if( p->flags&MEM_Dyn ){ - assert( (p->flags&MEM_RowSet)==0 ); assert( p->xDel!=SQLITE_DYNAMIC && p->xDel!=0 ); p->xDel((void *)p->z); - }else if( p->flags&MEM_RowSet ){ - sqlite3RowSetClear(p->u.pRowSet); - }else if( p->flags&MEM_Frame ){ - VdbeFrame *pFrame = p->u.pFrame; - pFrame->pParent = pFrame->v->pDelFrame; - pFrame->v->pDelFrame = pFrame; } p->flags = MEM_Null; } @@ -73570,7 +74269,7 @@ SQLITE_PRIVATE int sqlite3VdbeBooleanValue(Mem *pMem, int ifNull){ SQLITE_PRIVATE void sqlite3VdbeIntegerAffinity(Mem *pMem){ i64 ix; assert( pMem->flags & MEM_Real ); - assert( (pMem->flags & MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pMem) ); assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) ); assert( EIGHT_BYTE_ALIGNMENT(pMem) ); @@ -73597,7 +74296,7 @@ SQLITE_PRIVATE void sqlite3VdbeIntegerAffinity(Mem *pMem){ */ SQLITE_PRIVATE int sqlite3VdbeMemIntegerify(Mem *pMem){ assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) ); - assert( (pMem->flags & MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pMem) ); assert( EIGHT_BYTE_ALIGNMENT(pMem) ); pMem->u.i = sqlite3VdbeIntValue(pMem); @@ -73815,26 +74514,36 @@ SQLITE_PRIVATE void sqlite3VdbeMemSetDouble(Mem *pMem, double val){ } #endif +#ifdef SQLITE_DEBUG +/* +** Return true if the Mem holds a RowSet object. This routine is intended +** for use inside of assert() statements. +*/ +SQLITE_PRIVATE int sqlite3VdbeMemIsRowSet(const Mem *pMem){ + return (pMem->flags&(MEM_Blob|MEM_Dyn))==(MEM_Blob|MEM_Dyn) + && pMem->xDel==sqlite3RowSetDelete; +} +#endif + /* ** Delete any previous value and set the value of pMem to be an ** empty boolean index. +** +** Return SQLITE_OK on success and SQLITE_NOMEM if a memory allocation +** error occurs. */ -SQLITE_PRIVATE void sqlite3VdbeMemSetRowSet(Mem *pMem){ +SQLITE_PRIVATE int sqlite3VdbeMemSetRowSet(Mem *pMem){ sqlite3 *db = pMem->db; + RowSet *p; assert( db!=0 ); - assert( (pMem->flags & MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pMem) ); sqlite3VdbeMemRelease(pMem); - pMem->zMalloc = sqlite3DbMallocRawNN(db, 64); - if( db->mallocFailed ){ - pMem->flags = MEM_Null; - pMem->szMalloc = 0; - }else{ - assert( pMem->zMalloc ); - pMem->szMalloc = sqlite3DbMallocSize(db, pMem->zMalloc); - pMem->u.pRowSet = sqlite3RowSetInit(db, pMem->zMalloc, pMem->szMalloc); - assert( pMem->u.pRowSet!=0 ); - pMem->flags = MEM_RowSet; - } + p = sqlite3RowSetInit(db); + if( p==0 ) return SQLITE_NOMEM; + pMem->z = (char*)p; + pMem->flags = MEM_Blob|MEM_Dyn; + pMem->xDel = sqlite3RowSetDelete; + return SQLITE_OK; } /* @@ -73867,7 +74576,21 @@ SQLITE_PRIVATE void sqlite3VdbeMemAboutToChange(Vdbe *pVdbe, Mem *pMem){ Mem *pX; for(i=0, pX=pVdbe->aMem; inMem; i++, pX++){ if( pX->pScopyFrom==pMem ){ - pX->flags |= MEM_Undefined; + /* If pX is marked as a shallow copy of pMem, then verify that + ** no significant changes have been made to pX since the OP_SCopy. + ** A significant change would indicated a missed call to this + ** function for pX. Minor changes, such as adding or removing a + ** dual type, are allowed, as long as the underlying value is the + ** same. */ + u16 mFlags = pMem->flags & pX->flags & pX->mScopyFlags; + assert( (mFlags&MEM_Int)==0 || pMem->u.i==pX->u.i ); + assert( (mFlags&MEM_Real)==0 || pMem->u.r==pX->u.r ); + assert( (mFlags&MEM_Str)==0 || (pMem->n==pX->n && pMem->z==pX->z) ); + assert( (mFlags&MEM_Blob)==0 || sqlite3BlobCompare(pMem,pX)==0 ); + + /* pMem is the register that is changing. But also mark pX as + ** undefined so that we can quickly detect the shallow-copy error */ + pX->flags = MEM_Undefined; pX->pScopyFrom = 0; } } @@ -73888,7 +74611,7 @@ static SQLITE_NOINLINE void vdbeClrCopy(Mem *pTo, const Mem *pFrom, int eType){ sqlite3VdbeMemShallowCopy(pTo, pFrom, eType); } SQLITE_PRIVATE void sqlite3VdbeMemShallowCopy(Mem *pTo, const Mem *pFrom, int srcType){ - assert( (pFrom->flags & MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pFrom) ); assert( pTo->db==pFrom->db ); if( VdbeMemDynamic(pTo) ){ vdbeClrCopy(pTo,pFrom,srcType); return; } memcpy(pTo, pFrom, MEMCELLSIZE); @@ -73906,7 +74629,7 @@ SQLITE_PRIVATE void sqlite3VdbeMemShallowCopy(Mem *pTo, const Mem *pFrom, int sr SQLITE_PRIVATE int sqlite3VdbeMemCopy(Mem *pTo, const Mem *pFrom){ int rc = SQLITE_OK; - assert( (pFrom->flags & MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pFrom) ); if( VdbeMemDynamic(pTo) ) vdbeMemClearExternAndSetNull(pTo); memcpy(pTo, pFrom, MEMCELLSIZE); pTo->flags &= ~MEM_Dyn; @@ -73964,7 +74687,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemSetStr( u16 flags = 0; /* New value for pMem->flags */ assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) ); - assert( (pMem->flags & MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pMem) ); /* If z is a NULL pointer, set pMem to contain an SQL NULL. */ if( !z ){ @@ -74086,7 +74809,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemFromBtree( /* Note: the calls to BtreeKeyFetch() and DataFetch() below assert() ** that both the BtShared and database handle mutexes are held. */ - assert( (pMem->flags & MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pMem) ); zData = (char *)sqlite3BtreePayloadFetch(pCur, &available); assert( zData!=0 ); @@ -74110,7 +74833,7 @@ static SQLITE_NOINLINE const void *valueToText(sqlite3_value* pVal, u8 enc){ assert( pVal!=0 ); assert( pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex) ); assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) ); - assert( (pVal->flags & MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pVal) ); assert( (pVal->flags & (MEM_Null))==0 ); if( pVal->flags & (MEM_Blob|MEM_Str) ){ if( ExpandBlob(pVal) ) return 0; @@ -74153,7 +74876,7 @@ SQLITE_PRIVATE const void *sqlite3ValueText(sqlite3_value* pVal, u8 enc){ if( !pVal ) return 0; assert( pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex) ); assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) ); - assert( (pVal->flags & MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pVal) ); if( (pVal->flags&(MEM_Str|MEM_Term))==(MEM_Str|MEM_Term) && pVal->enc==enc ){ assert( sqlite3VdbeMemConsistentDualRep(pVal) ); return pVal->z; @@ -74720,11 +75443,11 @@ SQLITE_PRIVATE int sqlite3Stat4Column( int iCol, /* Column to extract */ sqlite3_value **ppVal /* OUT: Extracted value */ ){ - u32 t; /* a column type code */ + u32 t = 0; /* a column type code */ int nHdr; /* Size of the header in the record */ int iHdr; /* Next unread header byte */ int iField; /* Next unread data byte */ - int szField; /* Size of the current data field */ + int szField = 0; /* Size of the current data field */ int i; /* Column index */ u8 *a = (u8*)pRec; /* Typecast byte array */ Mem *pMem = *ppVal; /* Write result into this Mem object */ @@ -75017,14 +75740,6 @@ SQLITE_PRIVATE int sqlite3VdbeAddOp3(Vdbe *p, int op, int p1, int p2, int p3){ #endif #ifdef SQLITE_DEBUG if( p->db->flags & SQLITE_VdbeAddopTrace ){ - int jj, kk; - Parse *pParse = p->pParse; - for(jj=kk=0; jjnColCache; jj++){ - struct yColCache *x = pParse->aColCache + jj; - printf(" r[%d]={%d:%d}", x->iReg, x->iTable, x->iColumn); - kk++; - } - if( kk ) printf("\n"); sqlite3VdbePrintOp(0, i, &p->aOp[i]); test_addop_breakpoint(); } @@ -75148,7 +75863,7 @@ SQLITE_PRIVATE int sqlite3VdbeExplainParent(Parse *pParse){ SQLITE_PRIVATE void sqlite3VdbeExplain(Parse *pParse, u8 bPush, const char *zFmt, ...){ if( pParse->explain==2 ){ char *zMsg; - Vdbe *v = pParse->pVdbe; + Vdbe *v; va_list ap; int iThis; va_start(ap, zFmt); @@ -75269,19 +75984,6 @@ SQLITE_PRIVATE void sqlite3VdbeResolveLabel(Vdbe *v, int x){ } } -#ifdef SQLITE_COVERAGE_TEST -/* -** Return TRUE if and only if the label x has already been resolved. -** Return FALSE (zero) if label x is still unresolved. -** -** This routine is only used inside of testcase() macros, and so it -** only exists when measuring test coverage. -*/ -SQLITE_PRIVATE int sqlite3VdbeLabelHasBeenResolved(Vdbe *v, int x){ - return v->pParse->aLabel && v->pParse->aLabel[ADDR(x)]>=0; -} -#endif /* SQLITE_COVERAGE_TEST */ - /* ** Mark the VDBE as one that can only be run one time. */ @@ -75513,7 +76215,6 @@ static void resolveP2Values(Vdbe *p, int *pMaxFuncArgs){ break; } case OP_Next: - case OP_NextIfOpen: case OP_SorterNext: { pOp->p4.xAdvance = sqlite3BtreeNext; pOp->p4type = P4_ADVANCE; @@ -75523,8 +76224,7 @@ static void resolveP2Values(Vdbe *p, int *pMaxFuncArgs){ assert( pOp->p2>=0 ); break; } - case OP_Prev: - case OP_PrevIfOpen: { + case OP_Prev: { pOp->p4.xAdvance = sqlite3BtreePrevious; pOp->p4type = P4_ADVANCE; /* The code generator never codes any of these opcodes as a jump @@ -76439,7 +77139,7 @@ SQLITE_PRIVATE void sqlite3VdbeLeave(Vdbe *p){ /* ** Print a single opcode. This routine is used for debugging only. */ -SQLITE_PRIVATE void sqlite3VdbePrintOp(FILE *pOut, int pc, Op *pOp){ +SQLITE_PRIVATE void sqlite3VdbePrintOp(FILE *pOut, int pc, VdbeOp *pOp){ char *zP4; char zPtr[50]; char zCom[100]; @@ -76508,9 +77208,8 @@ static void releaseMemArray(Mem *p, int N){ */ testcase( p->flags & MEM_Agg ); testcase( p->flags & MEM_Dyn ); - testcase( p->flags & MEM_Frame ); - testcase( p->flags & MEM_RowSet ); - if( p->flags&(MEM_Agg|MEM_Dyn|MEM_Frame|MEM_RowSet) ){ + testcase( p->xDel==sqlite3VdbeFrameMemDel ); + if( p->flags&(MEM_Agg|MEM_Dyn) ){ sqlite3VdbeMemRelease(p); }else if( p->szMalloc ){ sqlite3DbFreeNN(db, p->zMalloc); @@ -76522,6 +77221,35 @@ static void releaseMemArray(Mem *p, int N){ } } +#ifdef SQLITE_DEBUG +/* +** Verify that pFrame is a valid VdbeFrame pointer. Return true if it is +** and false if something is wrong. +** +** This routine is intended for use inside of assert() statements only. +*/ +SQLITE_PRIVATE int sqlite3VdbeFrameIsValid(VdbeFrame *pFrame){ + if( pFrame->iFrameMagic!=SQLITE_FRAME_MAGIC ) return 0; + return 1; +} +#endif + + +/* +** This is a destructor on a Mem object (which is really an sqlite3_value) +** that deletes the Frame object that is attached to it as a blob. +** +** This routine does not delete the Frame right away. It merely adds the +** frame to a list of frames to be deleted when the Vdbe halts. +*/ +SQLITE_PRIVATE void sqlite3VdbeFrameMemDel(void *pArg){ + VdbeFrame *pFrame = (VdbeFrame*)pArg; + assert( sqlite3VdbeFrameIsValid(pFrame) ); + pFrame->pParent = pFrame->v->pDelFrame; + pFrame->v->pDelFrame = pFrame; +} + + /* ** Delete a VdbeFrame object and its contents. VdbeFrame objects are ** allocated by the OP_Program opcode in sqlite3VdbeExec(). @@ -76530,6 +77258,7 @@ SQLITE_PRIVATE void sqlite3VdbeFrameDelete(VdbeFrame *p){ int i; Mem *aMem = VdbeFrameMem(p); VdbeCursor **apCsr = (VdbeCursor **)&aMem[p->nChildMem]; + assert( sqlite3VdbeFrameIsValid(p) ); for(i=0; inChildCsr; i++){ sqlite3VdbeFreeCursor(p->v, apCsr[i]); } @@ -77826,7 +78555,7 @@ SQLITE_PRIVATE int sqlite3VdbeReset(Vdbe *p){ */ sqlite3VdbeHalt(p); - /* If the VDBE has be run even partially, then transfer the error code + /* If the VDBE has been run even partially, then transfer the error code ** and error message from the VDBE into the main database structure. But ** if the VDBE has just been set to run but has not actually executed any ** instructions yet, leave the main database error information unchanged. @@ -78738,7 +79467,7 @@ static int isAllZero(const char *z, int n){ ** is less than, equal to, or greater than the second, respectively. ** If one blob is a prefix of the other, then the shorter is the lessor. */ -static SQLITE_NOINLINE int sqlite3BlobCompare(const Mem *pB1, const Mem *pB2){ +SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3BlobCompare(const Mem *pB1, const Mem *pB2){ int c; int n1 = pB1->n; int n2 = pB2->n; @@ -78808,7 +79537,7 @@ SQLITE_PRIVATE int sqlite3MemCompare(const Mem *pMem1, const Mem *pMem2, const C f1 = pMem1->flags; f2 = pMem2->flags; combined_flags = f1|f2; - assert( (combined_flags & MEM_RowSet)==0 ); + assert( !sqlite3VdbeMemIsRowSet(pMem1) && !sqlite3VdbeMemIsRowSet(pMem2) ); /* If one value is NULL, it is less than the other. If both values ** are NULL, return 0. @@ -78953,7 +79682,7 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompareWithSkip( u32 idx1; /* Offset of first type in header */ int rc = 0; /* Return value */ Mem *pRhs = pPKey2->aMem; /* Next field of pPKey2 to compare */ - KeyInfo *pKeyInfo = pPKey2->pKeyInfo; + KeyInfo *pKeyInfo; const unsigned char *aKey1 = (const unsigned char *)pKey1; Mem mem1; @@ -79048,7 +79777,7 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompareWithSkip( if( (d1+mem1.n) > (unsigned)nKey1 ){ pPKey2->errCode = (u8)SQLITE_CORRUPT_BKPT; return 0; /* Corruption */ - }else if( pKeyInfo->aColl[i] ){ + }else if( (pKeyInfo = pPKey2->pKeyInfo)->aColl[i] ){ mem1.enc = pKeyInfo->enc; mem1.db = pKeyInfo->db; mem1.flags = MEM_Str; @@ -79099,7 +79828,7 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompareWithSkip( } if( rc!=0 ){ - if( pKeyInfo->aSortOrder[i] ){ + if( pPKey2->pKeyInfo->aSortOrder[i] ){ rc = -rc; } assert( vdbeRecordCompareDebug(nKey1, pKey1, pPKey2, rc) ); @@ -79108,10 +79837,11 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompareWithSkip( } i++; + if( i==pPKey2->nField ) break; pRhs++; d1 += sqlite3VdbeSerialTypeLen(serial_type); idx1 += sqlite3VarintLen(serial_type); - }while( idx1<(unsigned)szHdr1 && inField && d1<=(unsigned)nKey1 ); + }while( idx1<(unsigned)szHdr1 && d1<=(unsigned)nKey1 ); /* No memory allocation is ever used on mem1. Prove this using ** the following assert(). If the assert() fails, it indicates a @@ -79123,7 +79853,7 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompareWithSkip( ** value. */ assert( CORRUPT_DB || vdbeRecordCompareDebug(nKey1, pKey1, pPKey2, pPKey2->default_rc) - || pKeyInfo->db->mallocFailed + || pPKey2->pKeyInfo->db->mallocFailed ); pPKey2->eqSeen = 1; return pPKey2->default_rc; @@ -79449,7 +80179,7 @@ SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare( if( rc ){ return rc; } - *res = sqlite3VdbeRecordCompare(m.n, m.z, pUnpacked); + *res = sqlite3VdbeRecordCompareWithSkip(m.n, m.z, pUnpacked, 0); sqlite3VdbeMemRelease(&m); return SQLITE_OK; } @@ -79481,11 +80211,19 @@ SQLITE_PRIVATE void sqlite3VdbeCountChanges(Vdbe *v){ ** programs obsolete. Removing user-defined functions or collating ** sequences, or changing an authorization function are the types of ** things that make prepared statements obsolete. +** +** If iCode is 1, then expiration is advisory. The statement should +** be reprepared before being restarted, but if it is already running +** it is allowed to run to completion. +** +** Internally, this function just sets the Vdbe.expired flag on all +** prepared statements. The flag is set to 1 for an immediate expiration +** and set to 2 for an advisory expiration. */ -SQLITE_PRIVATE void sqlite3ExpirePreparedStatements(sqlite3 *db){ +SQLITE_PRIVATE void sqlite3ExpirePreparedStatements(sqlite3 *db, int iCode){ Vdbe *p; for(p = db->pVdbe; p; p=p->pNext){ - p->expired = 1; + p->expired = iCode+1; } } @@ -80645,7 +81383,7 @@ static const Mem *columnNullValue(void){ /* .xDel = */ (void(*)(void*))0, #ifdef SQLITE_DEBUG /* .pScopyFrom = */ (Mem*)0, - /* .pFiller = */ (void*)0, + /* .mScopyFlags= */ 0, #endif }; return &nullMem; @@ -81955,32 +82693,56 @@ SQLITE_API int sqlite3_found_count = 0; ** feature is used for test suite validation only and does not appear an ** production builds. ** -** M is an integer, 2 or 3, that indices how many different ways the -** branch can go. It is usually 2. "I" is the direction the branch -** goes. 0 means falls through. 1 means branch is taken. 2 means the -** second alternative branch is taken. +** M is an integer between 2 and 4. 2 indicates a ordinary two-way +** branch (I=0 means fall through and I=1 means taken). 3 indicates +** a 3-way branch where the third way is when one of the operands is +** NULL. 4 indicates the OP_Jump instruction which has three destinations +** depending on whether the first operand is less than, equal to, or greater +** than the second. ** ** iSrcLine is the source code line (from the __LINE__ macro) that -** generated the VDBE instruction. This instrumentation assumes that all -** source code is in a single file (the amalgamation). Special values 1 -** and 2 for the iSrcLine parameter mean that this particular branch is -** always taken or never taken, respectively. +** generated the VDBE instruction combined with flag bits. The source +** code line number is in the lower 24 bits of iSrcLine and the upper +** 8 bytes are flags. The lower three bits of the flags indicate +** values for I that should never occur. For example, if the branch is +** always taken, the flags should be 0x05 since the fall-through and +** alternate branch are never taken. If a branch is never taken then +** flags should be 0x06 since only the fall-through approach is allowed. +** +** Bit 0x04 of the flags indicates an OP_Jump opcode that is only +** interested in equal or not-equal. In other words, I==0 and I==2 +** should be treated the same. +** +** Since only a line number is retained, not the filename, this macro +** only works for amalgamation builds. But that is ok, since these macros +** should be no-ops except for special builds used to measure test coverage. */ #if !defined(SQLITE_VDBE_COVERAGE) # define VdbeBranchTaken(I,M) #else # define VdbeBranchTaken(I,M) vdbeTakeBranch(pOp->iSrcLine,I,M) - static void vdbeTakeBranch(int iSrcLine, u8 I, u8 M){ - if( iSrcLine<=2 && ALWAYS(iSrcLine>0) ){ - M = iSrcLine; - /* Assert the truth of VdbeCoverageAlwaysTaken() and - ** VdbeCoverageNeverTaken() */ - assert( (M & I)==I ); - }else{ - if( sqlite3GlobalConfig.xVdbeBranch==0 ) return; /*NO_TEST*/ - sqlite3GlobalConfig.xVdbeBranch(sqlite3GlobalConfig.pVdbeBranchArg, - iSrcLine,I,M); + static void vdbeTakeBranch(u32 iSrcLine, u8 I, u8 M){ + u8 mNever; + assert( I<=2 ); /* 0: fall through, 1: taken, 2: alternate taken */ + assert( M<=4 ); /* 2: two-way branch, 3: three-way branch, 4: OP_Jump */ + assert( I> 24; + assert( (I & mNever)==0 ); + if( sqlite3GlobalConfig.xVdbeBranch==0 ) return; /*NO_TEST*/ + I |= mNever; + if( M==2 ) I |= 0x04; + if( M==4 ){ + I |= 0x08; + if( (mNever&0x08)!=0 && (I&0x05)!=0) I |= 0x05; /*NO_TEST*/ } + sqlite3GlobalConfig.xVdbeBranch(sqlite3GlobalConfig.pVdbeBranchArg, + iSrcLine&0xffffff, I, M); } #endif @@ -82311,7 +83073,7 @@ static void memTracePrint(Mem *p){ }else if( p->flags & MEM_Real ){ printf(" r:%g", p->u.r); #endif - }else if( p->flags & MEM_RowSet ){ + }else if( sqlite3VdbeMemIsRowSet(p) ){ printf(" (rowset)"); }else{ char zBuf[200]; @@ -83065,6 +83827,9 @@ case OP_Null: { /* out2 */ assert( pOp->p3<=(p->nMem+1 - p->nCursor) ); pOut->flags = nullFlag = pOp->p1 ? (MEM_Null|MEM_Cleared) : MEM_Null; pOut->n = 0; +#ifdef SQLITE_DEBUG + pOut->uTemp = 0; +#endif while( cnt>0 ){ pOut++; memAboutToChange(p, pOut); @@ -83186,6 +83951,7 @@ case OP_Copy: { pOut = &aMem[pOp->p2]; assert( pOut!=pIn1 ); while( 1 ){ + memAboutToChange(p, pOut); sqlite3VdbeMemShallowCopy(pOut, pIn1, MEM_Ephem); Deephemeralize(pOut); #ifdef SQLITE_DEBUG @@ -83218,7 +83984,8 @@ case OP_SCopy: { /* out2 */ assert( pOut!=pIn1 ); sqlite3VdbeMemShallowCopy(pOut, pIn1, MEM_Ephem); #ifdef SQLITE_DEBUG - if( pOut->pScopyFrom==0 ) pOut->pScopyFrom = pIn1; + pOut->pScopyFrom = pIn1; + pOut->mScopyFlags = pIn1->flags; #endif break; } @@ -83852,7 +84619,12 @@ case OP_Ge: { /* same as TK_GE, jump, in1, in3 */ if( (flags1 | flags3)&MEM_Str ){ if( (flags1 & (MEM_Int|MEM_Real|MEM_Str))==MEM_Str ){ applyNumericAffinity(pIn1,0); - testcase( flags3!=pIn3->flags ); /* Possible if pIn1==pIn3 */ + assert( flags3==pIn3->flags ); + /* testcase( flags3!=pIn3->flags ); + ** this used to be possible with pIn1==pIn3, but not since + ** the column cache was removed. The following assignment + ** is essentially a no-op. But, it provides defense-in-depth + ** in case our analysis is incorrect, so it is left in. */ flags3 = pIn3->flags; } if( (flags3 & (MEM_Int|MEM_Real|MEM_Str))==MEM_Str ){ @@ -84066,11 +84838,11 @@ case OP_Compare: { */ case OP_Jump: { /* jump */ if( iCompare<0 ){ - VdbeBranchTaken(0,3); pOp = &aOp[pOp->p1 - 1]; + VdbeBranchTaken(0,4); pOp = &aOp[pOp->p1 - 1]; }else if( iCompare==0 ){ - VdbeBranchTaken(1,3); pOp = &aOp[pOp->p2 - 1]; + VdbeBranchTaken(1,4); pOp = &aOp[pOp->p2 - 1]; }else{ - VdbeBranchTaken(2,3); pOp = &aOp[pOp->p3 - 1]; + VdbeBranchTaken(2,4); pOp = &aOp[pOp->p3 - 1]; } break; } @@ -84167,7 +84939,7 @@ case OP_Not: { /* same as TK_NOT, in1, out2 */ } /* Opcode: BitNot P1 P2 * * * -** Synopsis: r[P1]= ~r[P1] +** Synopsis: r[P2]= ~r[P1] ** ** Interpret the content of register P1 as an integer. Store the ** ones-complement of the P1 value into register P2. If P1 holds @@ -84982,7 +85754,7 @@ case OP_Savepoint: { } } if( isSchemaChange ){ - sqlite3ExpirePreparedStatements(db); + sqlite3ExpirePreparedStatements(db, 0); sqlite3ResetAllSchemasOfConnection(db); db->mDbFlags |= DBFLAG_SchemaChange; } @@ -85124,8 +85896,7 @@ case OP_AutoCommit: { */ case OP_Transaction: { Btree *pBt; - int iMeta; - int iGen; + int iMeta = 0; assert( p->bIsReader ); assert( p->readOnly==0 || pOp->p2==0 ); @@ -85138,7 +85909,7 @@ case OP_Transaction: { pBt = db->aDb[pOp->p1].pBt; if( pBt ){ - rc = sqlite3BtreeBeginTrans(pBt, pOp->p2); + rc = sqlite3BtreeBeginTrans(pBt, pOp->p2, &iMeta); testcase( rc==SQLITE_BUSY_SNAPSHOT ); testcase( rc==SQLITE_BUSY_RECOVERY ); if( rc!=SQLITE_OK ){ @@ -85171,19 +85942,17 @@ case OP_Transaction: { p->nStmtDefCons = db->nDeferredCons; p->nStmtDefImmCons = db->nDeferredImmCons; } - - /* Gather the schema version number for checking: + } + assert( pOp->p5==0 || pOp->p4type==P4_INT32 ); + if( pOp->p5 + && (iMeta!=pOp->p3 + || db->aDb[pOp->p1].pSchema->iGeneration!=pOp->p4.i) + ){ + /* ** IMPLEMENTATION-OF: R-03189-51135 As each SQL statement runs, the schema ** version is checked to ensure that the schema has not changed since the ** SQL statement was prepared. */ - sqlite3BtreeGetMeta(pBt, BTREE_SCHEMA_VERSION, (u32 *)&iMeta); - iGen = db->aDb[pOp->p1].pSchema->iGeneration; - }else{ - iGen = iMeta = 0; - } - assert( pOp->p5==0 || pOp->p4type==P4_INT32 ); - if( pOp->p5 && (iMeta!=pOp->p3 || iGen!=pOp->p4.i) ){ sqlite3DbFree(db, p->zErrMsg); p->zErrMsg = sqlite3DbStrDup(db, "database schema has changed"); /* If the schema-cookie from the database file matches the cookie @@ -85274,7 +86043,7 @@ case OP_SetCookie: { if( pOp->p1==1 ){ /* Invalidate all prepared statements whenever the TEMP database ** schema is changed. Ticket #1644 */ - sqlite3ExpirePreparedStatements(db); + sqlite3ExpirePreparedStatements(db, 0); p->expired = 0; } if( rc ) goto abort_due_to_error; @@ -85292,59 +86061,78 @@ case OP_SetCookie: { ** values need not be contiguous but all P1 values should be small integers. ** It is an error for P1 to be negative. ** -** If P5!=0 then use the content of register P2 as the root page, not -** the value of P2 itself. -** -** There will be a read lock on the database whenever there is an -** open cursor. If the database was unlocked prior to this instruction -** then a read lock is acquired as part of this instruction. A read -** lock allows other processes to read the database but prohibits -** any other process from modifying the database. The read lock is -** released when all cursors are closed. If this instruction attempts -** to get a read lock but fails, the script terminates with an -** SQLITE_BUSY error code. +** Allowed P5 bits: +**
      +**
    • 0x02 OPFLAG_SEEKEQ: This cursor will only be used for +** equality lookups (implemented as a pair of opcodes OP_SeekGE/OP_IdxGT +** of OP_SeekLE/OP_IdxGT) +**
    ** ** The P4 value may be either an integer (P4_INT32) or a pointer to ** a KeyInfo structure (P4_KEYINFO). If it is a pointer to a KeyInfo -** structure, then said structure defines the content and collating -** sequence of the index being opened. Otherwise, if P4 is an integer -** value, it is set to the number of columns in the table. +** object, then table being opened must be an [index b-tree] where the +** KeyInfo object defines the content and collating +** sequence of that index b-tree. Otherwise, if P4 is an integer +** value, then the table being opened must be a [table b-tree] with a +** number of columns no less than the value of P4. ** ** See also: OpenWrite, ReopenIdx */ /* Opcode: ReopenIdx P1 P2 P3 P4 P5 ** Synopsis: root=P2 iDb=P3 ** -** The ReopenIdx opcode works exactly like ReadOpen except that it first -** checks to see if the cursor on P1 is already open with a root page -** number of P2 and if it is this opcode becomes a no-op. In other words, +** The ReopenIdx opcode works like OP_OpenRead except that it first +** checks to see if the cursor on P1 is already open on the same +** b-tree and if it is this opcode becomes a no-op. In other words, ** if the cursor is already open, do not reopen it. ** -** The ReopenIdx opcode may only be used with P5==0 and with P4 being -** a P4_KEYINFO object. Furthermore, the P3 value must be the same as -** every other ReopenIdx or OpenRead for the same cursor number. +** The ReopenIdx opcode may only be used with P5==0 or P5==OPFLAG_SEEKEQ +** and with P4 being a P4_KEYINFO object. Furthermore, the P3 value must +** be the same as every other ReopenIdx or OpenRead for the same cursor +** number. ** -** See the OpenRead opcode documentation for additional information. +** Allowed P5 bits: +**
      +**
    • 0x02 OPFLAG_SEEKEQ: This cursor will only be used for +** equality lookups (implemented as a pair of opcodes OP_SeekGE/OP_IdxGT +** of OP_SeekLE/OP_IdxGT) +**
    +** +** See also: OP_OpenRead, OP_OpenWrite */ /* Opcode: OpenWrite P1 P2 P3 P4 P5 ** Synopsis: root=P2 iDb=P3 ** ** Open a read/write cursor named P1 on the table or index whose root -** page is P2. Or if P5!=0 use the content of register P2 to find the -** root page. +** page is P2 (or whose root page is held in register P2 if the +** OPFLAG_P2ISREG bit is set in P5 - see below). ** ** The P4 value may be either an integer (P4_INT32) or a pointer to ** a KeyInfo structure (P4_KEYINFO). If it is a pointer to a KeyInfo -** structure, then said structure defines the content and collating -** sequence of the index being opened. Otherwise, if P4 is an integer -** value, it is set to the number of columns in the table, or to the -** largest index of any column of the table that is actually used. +** object, then table being opened must be an [index b-tree] where the +** KeyInfo object defines the content and collating +** sequence of that index b-tree. Otherwise, if P4 is an integer +** value, then the table being opened must be a [table b-tree] with a +** number of columns no less than the value of P4. ** -** This instruction works just like OpenRead except that it opens the cursor -** in read/write mode. For a given table, there can be one or more read-only -** cursors or a single read/write cursor but not both. +** Allowed P5 bits: +**
      +**
    • 0x02 OPFLAG_SEEKEQ: This cursor will only be used for +** equality lookups (implemented as a pair of opcodes OP_SeekGE/OP_IdxGT +** of OP_SeekLE/OP_IdxGT) +**
    • 0x08 OPFLAG_FORDELETE: This cursor is used only to seek +** and subsequently delete entries in an index btree. This is a +** hint to the storage engine that the storage engine is allowed to +** ignore. The hint is not used by the official SQLite b*tree storage +** engine, but is used by COMDB2. +**
    • 0x10 OPFLAG_P2ISREG: Use the content of register P2 +** as the root page, not the value of P2 itself. +**
    ** -** See also OpenRead. +** This instruction works like OpenRead except that it opens the cursor +** in read/write mode. +** +** See also: OP_OpenRead, OP_ReopenIdx */ case OP_ReopenIdx: { int nField; @@ -85373,7 +86161,7 @@ case OP_OpenWrite: assert( pOp->opcode==OP_OpenRead || pOp->opcode==OP_ReopenIdx || p->readOnly==0 ); - if( p->expired ){ + if( p->expired==1 ){ rc = SQLITE_ABORT_ROLLBACK; goto abort_due_to_error; } @@ -85400,6 +86188,7 @@ case OP_OpenWrite: if( pOp->p5 & OPFLAG_P2ISREG ){ assert( p2>0 ); assert( p2<=(p->nMem+1 - p->nCursor) ); + assert( pOp->opcode==OP_OpenWrite ); pIn2 = &aMem[p2]; assert( memIsValid(pIn2) ); assert( (pIn2->flags & MEM_Int)!=0 ); @@ -85528,7 +86317,7 @@ case OP_OpenEphemeral: { rc = sqlite3BtreeOpen(db->pVfs, 0, db, &pCx->pBtx, BTREE_OMIT_JOURNAL | BTREE_SINGLE | pOp->p5, vfsFlags); if( rc==SQLITE_OK ){ - rc = sqlite3BtreeBeginTrans(pCx->pBtx, 1); + rc = sqlite3BtreeBeginTrans(pCx->pBtx, 1, 0); } if( rc==SQLITE_OK ){ /* If a transient index is required, create it by calling @@ -85755,10 +86544,10 @@ case OP_ColumnsUsed: { ** ** See also: Found, NotFound, SeekGt, SeekGe, SeekLt */ -case OP_SeekLT: /* jump, in3 */ -case OP_SeekLE: /* jump, in3 */ -case OP_SeekGE: /* jump, in3 */ -case OP_SeekGT: { /* jump, in3 */ +case OP_SeekLT: /* jump, in3, group */ +case OP_SeekLE: /* jump, in3, group */ +case OP_SeekGE: /* jump, in3, group */ +case OP_SeekGT: { /* jump, in3, group */ int res; /* Comparison result */ int oc; /* Opcode */ VdbeCursor *pC; /* The cursor to seek */ @@ -85936,6 +86725,25 @@ seek_not_found: break; } +/* Opcode: SeekHit P1 P2 * * * +** Synopsis: seekHit=P2 +** +** Set the seekHit flag on cursor P1 to the value in P2. +** The seekHit flag is used by the IfNoHope opcode. +** +** P1 must be a valid b-tree cursor. P2 must be a boolean value, +** either 0 or 1. +*/ +case OP_SeekHit: { + VdbeCursor *pC; + assert( pOp->p1>=0 && pOp->p1nCursor ); + pC = p->apCsr[pOp->p1]; + assert( pC!=0 ); + assert( pOp->p2==0 || pOp->p2==1 ); + pC->seekHit = pOp->p2 & 1; + break; +} + /* Opcode: Found P1 P2 P3 P4 * ** Synopsis: key=r[P3@P4] ** @@ -85970,7 +86778,34 @@ seek_not_found: ** advanced in either direction. In other words, the Next and Prev ** opcodes do not work after this operation. ** -** See also: Found, NotExists, NoConflict +** See also: Found, NotExists, NoConflict, IfNoHope +*/ +/* Opcode: IfNoHope P1 P2 P3 P4 * +** Synopsis: key=r[P3@P4] +** +** Register P3 is the first of P4 registers that form an unpacked +** record. +** +** Cursor P1 is on an index btree. If the seekHit flag is set on P1, then +** this opcode is a no-op. But if the seekHit flag of P1 is clear, then +** check to see if there is any entry in P1 that matches the +** prefix identified by P3 and P4. If no entry matches the prefix, +** jump to P2. Otherwise fall through. +** +** This opcode behaves like OP_NotFound if the seekHit +** flag is clear and it behaves like OP_Noop if the seekHit flag is set. +** +** This opcode is used in IN clause processing for a multi-column key. +** If an IN clause is attached to an element of the key other than the +** left-most element, and if there are no matches on the most recent +** seek over the whole key, then it might be that one of the key element +** to the left is prohibiting a match, and hence there is "no hope" of +** any match regardless of how many IN clause elements are checked. +** In such a case, we abandon the IN clause search early, using this +** opcode. The opcode name comes from the fact that the +** jump is taken if there is "no hope" of achieving a match. +** +** See also: NotFound, SeekHit */ /* Opcode: NoConflict P1 P2 P3 P4 * ** Synopsis: key=r[P3@P4] @@ -85995,6 +86830,14 @@ seek_not_found: ** ** See also: NotFound, Found, NotExists */ +case OP_IfNoHope: { /* jump, in3 */ + VdbeCursor *pC; + assert( pOp->p1>=0 && pOp->p1nCursor ); + pC = p->apCsr[pOp->p1]; + assert( pC!=0 ); + if( pC->seekHit ) break; + /* Fall through into OP_NotFound */ +} case OP_NoConflict: /* jump, in3 */ case OP_NotFound: /* jump, in3 */ case OP_Found: { /* jump, in3 */ @@ -86132,18 +86975,26 @@ case OP_SeekRowid: { /* jump, in3 */ pIn3 = &aMem[pOp->p3]; if( (pIn3->flags & MEM_Int)==0 ){ + /* Make sure pIn3->u.i contains a valid integer representation of + ** the key value, but do not change the datatype of the register, as + ** other parts of the perpared statement might be depending on the + ** current datatype. */ + u16 origFlags = pIn3->flags; + int isNotInt; applyAffinity(pIn3, SQLITE_AFF_NUMERIC, encoding); - if( (pIn3->flags & MEM_Int)==0 ) goto jump_to_p2; + isNotInt = (pIn3->flags & MEM_Int)==0; + pIn3->flags = origFlags; + if( isNotInt ) goto jump_to_p2; } /* Fall through into OP_NotExists */ case OP_NotExists: /* jump, in3 */ pIn3 = &aMem[pOp->p3]; - assert( pIn3->flags & MEM_Int ); + assert( (pIn3->flags & MEM_Int)!=0 || pOp->opcode==OP_SeekRowid ); assert( pOp->p1>=0 && pOp->p1nCursor ); pC = p->apCsr[pOp->p1]; assert( pC!=0 ); #ifdef SQLITE_DEBUG - pC->seekOp = 0; + pC->seekOp = OP_SeekRowid; #endif assert( pC->isTable ); assert( pC->eCurType==CURTYPE_BTREE ); @@ -86797,6 +87648,9 @@ case OP_NullRow: { assert( pC->uc.pCursor!=0 ); sqlite3BtreeClearCursor(pC->uc.pCursor); } +#ifdef SQLITE_DEBUG + if( pC->seekOp==0 ) pC->seekOp = OP_NullRow; +#endif break; } @@ -86915,7 +87769,7 @@ case OP_Sort: { /* jump */ p->aCounter[SQLITE_STMTSTATUS_SORT]++; /* Fall through into OP_Rewind */ } -/* Opcode: Rewind P1 P2 * * * +/* Opcode: Rewind P1 P2 * * P5 ** ** The next use of the Rowid or Column or Next instruction for P1 ** will refer to the first entry in the database table or index. @@ -86923,6 +87777,10 @@ case OP_Sort: { /* jump */ ** If the table or index is not empty, fall through to the following ** instruction. ** +** If P5 is non-zero and the table is not empty, then the "skip-next" +** flag is set on the cursor so that the next OP_Next instruction +** executed on it is a no-op. +** ** This opcode leaves the cursor configured to move in forward order, ** from the beginning toward the end. In other words, the cursor is ** configured to use Next, not Prev. @@ -86947,6 +87805,9 @@ case OP_Rewind: { /* jump */ pCrsr = pC->uc.pCursor; assert( pCrsr ); rc = sqlite3BtreeFirst(pCrsr, &res); +#ifndef SQLITE_OMIT_WINDOWFUNC + if( pOp->p5 ) sqlite3BtreeSkipNext(pCrsr); +#endif pC->deferredMoveto = 0; pC->cacheStatus = CACHE_STALE; } @@ -86983,12 +87844,7 @@ case OP_Rewind: { /* jump */ ** If P5 is positive and the jump is taken, then event counter ** number P5-1 in the prepared statement is incremented. ** -** See also: Prev, NextIfOpen -*/ -/* Opcode: NextIfOpen P1 P2 P3 P4 P5 -** -** This opcode works just like Next except that if cursor P1 is not -** open it behaves a no-op. +** See also: Prev */ /* Opcode: Prev P1 P2 P3 P4 P5 ** @@ -87016,11 +87872,6 @@ case OP_Rewind: { /* jump */ ** If P5 is positive and the jump is taken, then event counter ** number P5-1 in the prepared statement is incremented. */ -/* Opcode: PrevIfOpen P1 P2 P3 P4 P5 -** -** This opcode works just like Prev except that if cursor P1 is not -** open it behaves a no-op. -*/ /* Opcode: SorterNext P1 P2 * * P5 ** ** This opcode works just like OP_Next except that P1 must be a @@ -87035,10 +87886,6 @@ case OP_SorterNext: { /* jump */ assert( isSorter(pC) ); rc = sqlite3VdbeSorterNext(db, pC); goto next_tail; -case OP_PrevIfOpen: /* jump */ -case OP_NextIfOpen: /* jump */ - if( p->apCsr[pOp->p1]==0 ) break; - /* Fall through */ case OP_Prev: /* jump */ case OP_Next: /* jump */ assert( pOp->p1>=0 && pOp->p1nCursor ); @@ -87049,17 +87896,17 @@ case OP_Next: /* jump */ assert( pC->eCurType==CURTYPE_BTREE ); assert( pOp->opcode!=OP_Next || pOp->p4.xAdvance==sqlite3BtreeNext ); assert( pOp->opcode!=OP_Prev || pOp->p4.xAdvance==sqlite3BtreePrevious ); - assert( pOp->opcode!=OP_NextIfOpen || pOp->p4.xAdvance==sqlite3BtreeNext ); - assert( pOp->opcode!=OP_PrevIfOpen || pOp->p4.xAdvance==sqlite3BtreePrevious); - /* The Next opcode is only used after SeekGT, SeekGE, and Rewind. + /* The Next opcode is only used after SeekGT, SeekGE, Rewind, and Found. ** The Prev opcode is only used after SeekLT, SeekLE, and Last. */ - assert( pOp->opcode!=OP_Next || pOp->opcode!=OP_NextIfOpen + assert( pOp->opcode!=OP_Next || pC->seekOp==OP_SeekGT || pC->seekOp==OP_SeekGE - || pC->seekOp==OP_Rewind || pC->seekOp==OP_Found); - assert( pOp->opcode!=OP_Prev || pOp->opcode!=OP_PrevIfOpen + || pC->seekOp==OP_Rewind || pC->seekOp==OP_Found + || pC->seekOp==OP_NullRow); + assert( pOp->opcode!=OP_Prev || pC->seekOp==OP_SeekLT || pC->seekOp==OP_SeekLE - || pC->seekOp==OP_Last ); + || pC->seekOp==OP_Last + || pC->seekOp==OP_NullRow); rc = pOp->p4.xAdvance(pC->uc.pCursor, pOp->p3); next_tail: @@ -87342,7 +88189,13 @@ case OP_IdxGE: { /* jump */ } r.aMem = &aMem[pOp->p3]; #ifdef SQLITE_DEBUG - { int i; for(i=0; ip3+i, &aMem[pOp->p3+i]); + } + } #endif res = 0; /* Not needed. Only used to silence a warning. */ rc = sqlite3VdbeIdxKeyCompare(db, pC, &r, &res); @@ -87529,7 +88382,8 @@ case OP_SqlExec: { /* Opcode: ParseSchema P1 * * P4 * ** ** Read and parse all entries from the SQLITE_MASTER table of database P1 -** that match the WHERE clause P4. +** that match the WHERE clause P4. If P4 is a NULL pointer, then the +** entire schema for P1 is reparsed. ** ** This opcode invokes the parser to create a new virtual machine, ** then runs the new virtual machine. It is thus a re-entrant opcode. @@ -87553,11 +88407,22 @@ case OP_ParseSchema: { iDb = pOp->p1; assert( iDb>=0 && iDbnDb ); assert( DbHasProperty(db, iDb, DB_SchemaLoaded) ); - /* Used to be a conditional */ { + +#ifndef SQLITE_OMIT_ALTERTABLE + if( pOp->p4.z==0 ){ + sqlite3SchemaClear(db->aDb[iDb].pSchema); + db->mDbFlags &= ~DBFLAG_SchemaKnownOk; + rc = sqlite3InitOne(db, iDb, &p->zErrMsg, INITFLAG_AlterTable); + db->mDbFlags |= DBFLAG_SchemaChange; + p->expired = 0; + }else +#endif + { zMaster = MASTER_NAME; initData.db = db; initData.iDb = pOp->p1; initData.pzErrMsg = &p->zErrMsg; + initData.mInitFlags = 0; zSql = sqlite3MPrintf(db, "SELECT name, rootpage, sql FROM '%q'.%s WHERE %s ORDER BY rowid", db->aDb[iDb].zDbSName, zMaster, pOp->p4.z); @@ -87710,11 +88575,11 @@ case OP_RowSetAdd: { /* in1, in2 */ pIn1 = &aMem[pOp->p1]; pIn2 = &aMem[pOp->p2]; assert( (pIn2->flags & MEM_Int)!=0 ); - if( (pIn1->flags & MEM_RowSet)==0 ){ - sqlite3VdbeMemSetRowSet(pIn1); - if( (pIn1->flags & MEM_RowSet)==0 ) goto no_mem; + if( (pIn1->flags & MEM_Blob)==0 ){ + if( sqlite3VdbeMemSetRowSet(pIn1) ) goto no_mem; } - sqlite3RowSetInsert(pIn1->u.pRowSet, pIn2->u.i); + assert( sqlite3VdbeMemIsRowSet(pIn1) ); + sqlite3RowSetInsert((RowSet*)pIn1->z, pIn2->u.i); break; } @@ -87730,8 +88595,9 @@ case OP_RowSetRead: { /* jump, in1, out3 */ i64 val; pIn1 = &aMem[pOp->p1]; - if( (pIn1->flags & MEM_RowSet)==0 - || sqlite3RowSetNext(pIn1->u.pRowSet, &val)==0 + assert( (pIn1->flags & MEM_Blob)==0 || sqlite3VdbeMemIsRowSet(pIn1) ); + if( (pIn1->flags & MEM_Blob)==0 + || sqlite3RowSetNext((RowSet*)pIn1->z, &val)==0 ){ /* The boolean index is empty */ sqlite3VdbeMemSetNull(pIn1); @@ -87780,20 +88646,19 @@ case OP_RowSetTest: { /* jump, in1, in3 */ /* If there is anything other than a rowset object in memory cell P1, ** delete it now and initialize P1 with an empty rowset */ - if( (pIn1->flags & MEM_RowSet)==0 ){ - sqlite3VdbeMemSetRowSet(pIn1); - if( (pIn1->flags & MEM_RowSet)==0 ) goto no_mem; + if( (pIn1->flags & MEM_Blob)==0 ){ + if( sqlite3VdbeMemSetRowSet(pIn1) ) goto no_mem; } - + assert( sqlite3VdbeMemIsRowSet(pIn1) ); assert( pOp->p4type==P4_INT32 ); assert( iSet==-1 || iSet>=0 ); if( iSet ){ - exists = sqlite3RowSetTest(pIn1->u.pRowSet, iSet, pIn3->u.i); + exists = sqlite3RowSetTest((RowSet*)pIn1->z, iSet, pIn3->u.i); VdbeBranchTaken(exists!=0,2); if( exists ) goto jump_to_p2; } if( iSet>=0 ){ - sqlite3RowSetInsert(pIn1->u.pRowSet, pIn3->u.i); + sqlite3RowSetInsert((RowSet*)pIn1->z, pIn3->u.i); } break; } @@ -87857,7 +88722,7 @@ case OP_Program: { /* jump */ ** of the current program, and the memory required at runtime to execute ** the trigger program. If this trigger has been fired before, then pRt ** is already allocated. Otherwise, it must be initialized. */ - if( (pRt->flags&MEM_Frame)==0 ){ + if( (pRt->flags&MEM_Blob)==0 ){ /* SubProgram.nMem is set to the number of memory cells used by the ** program stored in SubProgram.aOp. As well as these, one memory ** cell is required for each cursor used by the program. Set local @@ -87875,8 +88740,10 @@ case OP_Program: { /* jump */ goto no_mem; } sqlite3VdbeMemRelease(pRt); - pRt->flags = MEM_Frame; - pRt->u.pFrame = pFrame; + pRt->flags = MEM_Blob|MEM_Dyn; + pRt->z = (char*)pFrame; + pRt->n = nByte; + pRt->xDel = sqlite3VdbeFrameMemDel; pFrame->v = p; pFrame->nChildMem = nMem; @@ -87892,6 +88759,9 @@ case OP_Program: { /* jump */ #ifdef SQLITE_ENABLE_STMT_SCANSTATUS pFrame->anExec = p->anExec; #endif +#ifdef SQLITE_DEBUG + pFrame->iFrameMagic = SQLITE_FRAME_MAGIC; +#endif pEnd = &VdbeFrameMem(pFrame)[pFrame->nChildMem]; for(pMem=VdbeFrameMem(pFrame); pMem!=pEnd; pMem++){ @@ -87899,7 +88769,8 @@ case OP_Program: { /* jump */ pMem->db = db; } }else{ - pFrame = pRt->u.pFrame; + pFrame = (VdbeFrame*)pRt->z; + assert( pRt->xDel==sqlite3VdbeFrameMemDel ); assert( pProgram->nMem+pProgram->nCsr==pFrame->nChildMem || (pProgram->nCsr==0 && pProgram->nMem+1==pFrame->nChildMem) ); assert( pProgram->nCsr==pFrame->nChildCsr ); @@ -88128,24 +88999,35 @@ case OP_DecrJumpZero: { /* jump, in1 */ } -/* Opcode: AggStep0 * P2 P3 P4 P5 +/* Opcode: AggStep * P2 P3 P4 P5 ** Synopsis: accum=r[P3] step(r[P2@P5]) ** -** Execute the step function for an aggregate. The -** function has P5 arguments. P4 is a pointer to the FuncDef -** structure that specifies the function. Register P3 is the +** Execute the xStep function for an aggregate. +** The function has P5 arguments. P4 is a pointer to the +** FuncDef structure that specifies the function. Register P3 is the ** accumulator. ** ** The P5 arguments are taken from register P2 and its ** successors. */ -/* Opcode: AggStep * P2 P3 P4 P5 +/* Opcode: AggInverse * P2 P3 P4 P5 +** Synopsis: accum=r[P3] inverse(r[P2@P5]) +** +** Execute the xInverse function for an aggregate. +** The function has P5 arguments. P4 is a pointer to the +** FuncDef structure that specifies the function. Register P3 is the +** accumulator. +** +** The P5 arguments are taken from register P2 and its +** successors. +*/ +/* Opcode: AggStep1 P1 P2 P3 P4 P5 ** Synopsis: accum=r[P3] step(r[P2@P5]) ** -** Execute the step function for an aggregate. The -** function has P5 arguments. P4 is a pointer to an sqlite3_context -** object that is used to run the function. Register P3 is -** as the accumulator. +** Execute the xStep (if P1==0) or xInverse (if P1!=0) function for an +** aggregate. The function has P5 arguments. P4 is a pointer to the +** FuncDef structure that specifies the function. Register P3 is the +** accumulator. ** ** The P5 arguments are taken from register P2 and its ** successors. @@ -88156,7 +89038,8 @@ case OP_DecrJumpZero: { /* jump, in1 */ ** sqlite3_context only happens once, instead of on each call to the ** step function. */ -case OP_AggStep0: { +case OP_AggInverse: +case OP_AggStep: { int n; sqlite3_context *pCtx; @@ -88179,10 +89062,14 @@ case OP_AggStep0: { pCtx->argc = n; pOp->p4type = P4_FUNCCTX; pOp->p4.pCtx = pCtx; - pOp->opcode = OP_AggStep; + + /* OP_AggInverse must have P1==1 and OP_AggStep must have P1==0 */ + assert( pOp->p1==(pOp->opcode==OP_AggInverse) ); + + pOp->opcode = OP_AggStep1; /* Fall through into OP_AggStep */ } -case OP_AggStep: { +case OP_AggStep1: { int i; sqlite3_context *pCtx; Mem *pMem; @@ -88191,6 +89078,17 @@ case OP_AggStep: { pCtx = pOp->p4.pCtx; pMem = &aMem[pOp->p3]; +#ifdef SQLITE_DEBUG + if( pOp->p1 ){ + /* This is an OP_AggInverse call. Verify that xStep has always + ** been called at least once prior to any xInverse call. */ + assert( pMem->uTemp==0x1122e0e3 ); + }else{ + /* This is an OP_AggStep call. Mark it as such. */ + pMem->uTemp = 0x1122e0e3; + } +#endif + /* If this function is inside of a trigger, the register array in aMem[] ** might change from one evaluation to the next. The next block of code ** checks to see if the register array has changed, and if so it @@ -88211,7 +89109,13 @@ case OP_AggStep: { assert( pCtx->pOut->flags==MEM_Null ); assert( pCtx->isError==0 ); assert( pCtx->skipFlag==0 ); +#ifndef SQLITE_OMIT_WINDOWFUNC + if( pOp->p1 ){ + (pCtx->pFunc->xInverse)(pCtx,pCtx->argc,pCtx->argv); + }else +#endif (pCtx->pFunc->xSFunc)(pCtx,pCtx->argc,pCtx->argv); /* IMP: R-24505-23230 */ + if( pCtx->isError ){ if( pCtx->isError>0 ){ sqlite3VdbeError(p, "%s", sqlite3_value_text(pCtx->pOut)); @@ -88236,22 +89140,46 @@ case OP_AggStep: { /* Opcode: AggFinal P1 P2 * P4 * ** Synopsis: accum=r[P1] N=P2 ** -** Execute the finalizer function for an aggregate. P1 is -** the memory location that is the accumulator for the aggregate. +** P1 is the memory location that is the accumulator for an aggregate +** or window function. Execute the finalizer function +** for an aggregate and store the result in P1. ** ** P2 is the number of arguments that the step function takes and ** P4 is a pointer to the FuncDef for this function. The P2 ** argument is not used by this opcode. It is only there to disambiguate ** functions that can take varying numbers of arguments. The -** P4 argument is only needed for the degenerate case where +** P4 argument is only needed for the case where ** the step function was not previously called. */ +/* Opcode: AggValue * P2 P3 P4 * +** Synopsis: r[P3]=value N=P2 +** +** Invoke the xValue() function and store the result in register P3. +** +** P2 is the number of arguments that the step function takes and +** P4 is a pointer to the FuncDef for this function. The P2 +** argument is not used by this opcode. It is only there to disambiguate +** functions that can take varying numbers of arguments. The +** P4 argument is only needed for the case where +** the step function was not previously called. +*/ +case OP_AggValue: case OP_AggFinal: { Mem *pMem; assert( pOp->p1>0 && pOp->p1<=(p->nMem+1 - p->nCursor) ); + assert( pOp->p3==0 || pOp->opcode==OP_AggValue ); pMem = &aMem[pOp->p1]; assert( (pMem->flags & ~(MEM_Null|MEM_Agg))==0 ); - rc = sqlite3VdbeMemFinalize(pMem, pOp->p4.pFunc); +#ifndef SQLITE_OMIT_WINDOWFUNC + if( pOp->p3 ){ + rc = sqlite3VdbeMemAggValue(pMem, &aMem[pOp->p3], pOp->p4.pFunc); + pMem = &aMem[pOp->p3]; + }else +#endif + { + rc = sqlite3VdbeMemFinalize(pMem, pOp->p4.pFunc); + } + if( rc ){ sqlite3VdbeError(p, "%s", sqlite3_value_text(pMem)); goto abort_due_to_error; @@ -88446,7 +89374,7 @@ case OP_IncrVacuum: { /* jump */ } #endif -/* Opcode: Expire P1 * * * * +/* Opcode: Expire P1 P2 * * * ** ** Cause precompiled statements to expire. When an expired statement ** is executed using sqlite3_step() it will either automatically @@ -88455,12 +89383,19 @@ case OP_IncrVacuum: { /* jump */ ** ** If P1 is 0, then all SQL statements become expired. If P1 is non-zero, ** then only the currently executing statement is expired. +** +** If P2 is 0, then SQL statements are expired immediately. If P2 is 1, +** then running SQL statements are allowed to continue to run to completion. +** The P2==1 case occurs when a CREATE INDEX or similar schema change happens +** that might help the statement run faster but which does not affect the +** correctness of operation. */ case OP_Expire: { + assert( pOp->p2==0 || pOp->p2==1 ); if( !pOp->p1 ){ - sqlite3ExpirePreparedStatements(db); + sqlite3ExpirePreparedStatements(db, pOp->p2); }else{ - p->expired = 1; + p->expired = pOp->p2+1; } break; } @@ -88784,7 +89719,10 @@ case OP_VNext: { /* jump */ case OP_VRename: { sqlite3_vtab *pVtab; Mem *pName; - + int isLegacy; + + isLegacy = (db->flags & SQLITE_LegacyAlter); + db->flags |= SQLITE_LegacyAlter; pVtab = pOp->p4.pVtab->pVtab; pName = &aMem[pOp->p1]; assert( pVtab->pModule->xRename ); @@ -88798,6 +89736,7 @@ case OP_VRename: { rc = sqlite3VdbeChangeEncoding(pName, SQLITE_UTF8); if( rc ) goto abort_due_to_error; rc = pVtab->pModule->xRename(pVtab, pName->z); + if( isLegacy==0 ) db->flags &= ~SQLITE_LegacyAlter; sqlite3VtabImportErrmsg(p, pVtab); p->expired = 0; if( rc ) goto abort_due_to_error; @@ -88846,6 +89785,7 @@ case OP_VUpdate: { || pOp->p5==OE_Abort || pOp->p5==OE_Ignore || pOp->p5==OE_Replace ); assert( p->readOnly==0 ); + if( db->mallocFailed ) goto no_mem; sqlite3VdbeIncrWriteCounter(p, 0); pVtab = pOp->p4.pVtab->pVtab; if( pVtab==0 || NEVER(pVtab->pModule==0) ){ @@ -88967,8 +89907,8 @@ case OP_MaxPgcnt: { /* out2 */ ** ** See also: Function0, AggStep, AggFinal */ -case OP_PureFunc0: -case OP_Function0: { +case OP_PureFunc0: /* group */ +case OP_Function0: { /* group */ int n; sqlite3_context *pCtx; @@ -88992,8 +89932,8 @@ case OP_Function0: { pOp->opcode += 2; /* Fall through into OP_Function */ } -case OP_PureFunc: -case OP_Function: { +case OP_PureFunc: /* group */ +case OP_Function: { /* group */ int i; sqlite3_context *pCtx; @@ -91918,7 +92858,11 @@ static int vdbeMergeEngineInit( ){ int rc = SQLITE_OK; /* Return code */ int i; /* For looping over PmaReader objects */ - int nTree = pMerger->nTree; + int nTree; /* Number of subtrees to merge */ + + /* Failure to allocate the merge would have been detected prior to + ** invoking this routine */ + assert( pMerger!=0 ); /* eMode is always INCRINIT_NORMAL in single-threaded mode */ assert( SQLITE_MAX_WORKER_THREADS>0 || eMode==INCRINIT_NORMAL ); @@ -91927,6 +92871,7 @@ static int vdbeMergeEngineInit( assert( pMerger->pTask==0 ); pMerger->pTask = pTask; + nTree = pMerger->nTree; for(i=0; i0 && eMode==INCRINIT_ROOT ){ /* PmaReaders should be normally initialized in order, as if they are @@ -93055,6 +94000,14 @@ static SQLITE_NOINLINE int walkExpr(Walker *pWalker, Expr *pExpr){ }else if( pExpr->x.pList ){ if( sqlite3WalkExprList(pWalker, pExpr->x.pList) ) return WRC_Abort; } +#ifndef SQLITE_OMIT_WINDOWFUNC + if( !ExprHasProperty(pExpr, EP_Reduced) && pExpr->pWin ){ + Window *pWin = pExpr->pWin; + if( sqlite3WalkExprList(pWalker, pWin->pPartition) ) return WRC_Abort; + if( sqlite3WalkExprList(pWalker, pWin->pOrderBy) ) return WRC_Abort; + if( sqlite3WalkExpr(pWalker, pWin->pFilter) ) return WRC_Abort; + } +#endif } break; } @@ -93427,6 +94380,9 @@ static int lookupName( if( sqlite3StrICmp(zTabName, zTab)!=0 ){ continue; } + if( IN_RENAME_OBJECT && pItem->zAlias ){ + sqlite3RenameTokenRemap(pParse, 0, (void*)&pExpr->pTab); + } } if( 0==(cntTab++) ){ pMatch = pItem; @@ -93512,9 +94468,15 @@ static int lookupName( #ifndef SQLITE_OMIT_UPSERT if( pExpr->iTable==2 ){ testcase( iCol==(-1) ); - pExpr->iTable = pNC->uNC.pUpsert->regData + iCol; - eNewExprOp = TK_REGISTER; - ExprSetProperty(pExpr, EP_Alias); + if( IN_RENAME_OBJECT ){ + pExpr->iColumn = iCol; + pExpr->pTab = pTab; + eNewExprOp = TK_COLUMN; + }else{ + pExpr->iTable = pNC->uNC.pUpsert->regData + iCol; + eNewExprOp = TK_REGISTER; + ExprSetProperty(pExpr, EP_Alias); + } }else #endif /* SQLITE_OMIT_UPSERT */ { @@ -93599,6 +94561,9 @@ static int lookupName( cnt = 1; pMatch = 0; assert( zTab==0 && zDb==0 ); + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenRemap(pParse, 0, (void*)pExpr); + } goto lookupname_end; } } @@ -93826,17 +94791,24 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ zTable = 0; zColumn = pExpr->u.zToken; }else{ + Expr *pLeft = pExpr->pLeft; notValid(pParse, pNC, "the \".\" operator", NC_IdxExpr); pRight = pExpr->pRight; if( pRight->op==TK_ID ){ zDb = 0; - zTable = pExpr->pLeft->u.zToken; - zColumn = pRight->u.zToken; }else{ assert( pRight->op==TK_DOT ); - zDb = pExpr->pLeft->u.zToken; - zTable = pRight->pLeft->u.zToken; - zColumn = pRight->pRight->u.zToken; + zDb = pLeft->u.zToken; + pLeft = pRight->pLeft; + pRight = pRight->pRight; + } + zTable = pLeft->u.zToken; + zColumn = pRight->u.zToken; + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenRemap(pParse, (void*)pExpr, (void*)pRight); + } + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenRemap(pParse, (void*)&pExpr->pTab, (void*)pLeft); } } return lookupName(pParse, zDb, zTable, zColumn, pNC, pExpr); @@ -93919,40 +94891,95 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ NC_IdxExpr|NC_PartIdx); } } - if( is_agg && (pNC->ncFlags & NC_AllowAgg)==0 ){ - sqlite3ErrorMsg(pParse, "misuse of aggregate function %.*s()", nId,zId); - pNC->nErr++; - is_agg = 0; - }else if( no_such_func && pParse->db->init.busy==0 -#ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION - && pParse->explain==0 + + if( 0==IN_RENAME_OBJECT ){ +#ifndef SQLITE_OMIT_WINDOWFUNC + assert( is_agg==0 || (pDef->funcFlags & SQLITE_FUNC_MINMAX) + || (pDef->xValue==0 && pDef->xInverse==0) + || (pDef->xValue && pDef->xInverse && pDef->xSFunc && pDef->xFinalize) + ); + if( pDef && pDef->xValue==0 && pExpr->pWin ){ + sqlite3ErrorMsg(pParse, + "%.*s() may not be used as a window function", nId, zId + ); + pNC->nErr++; + }else if( + (is_agg && (pNC->ncFlags & NC_AllowAgg)==0) + || (is_agg && (pDef->funcFlags & SQLITE_FUNC_WINDOW) && !pExpr->pWin) + || (is_agg && pExpr->pWin && (pNC->ncFlags & NC_AllowWin)==0) + ){ + const char *zType; + if( (pDef->funcFlags & SQLITE_FUNC_WINDOW) || pExpr->pWin ){ + zType = "window"; + }else{ + zType = "aggregate"; + } + sqlite3ErrorMsg(pParse, "misuse of %s function %.*s()",zType,nId,zId); + pNC->nErr++; + is_agg = 0; + } +#else + if( (is_agg && (pNC->ncFlags & NC_AllowAgg)==0) ){ + sqlite3ErrorMsg(pParse,"misuse of aggregate function %.*s()",nId,zId); + pNC->nErr++; + is_agg = 0; + } #endif - ){ - sqlite3ErrorMsg(pParse, "no such function: %.*s", nId, zId); - pNC->nErr++; - }else if( wrong_num_args ){ - sqlite3ErrorMsg(pParse,"wrong number of arguments to function %.*s()", - nId, zId); - pNC->nErr++; + else if( no_such_func && pParse->db->init.busy==0 +#ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION + && pParse->explain==0 +#endif + ){ + sqlite3ErrorMsg(pParse, "no such function: %.*s", nId, zId); + pNC->nErr++; + }else if( wrong_num_args ){ + sqlite3ErrorMsg(pParse,"wrong number of arguments to function %.*s()", + nId, zId); + pNC->nErr++; + } + if( is_agg ){ +#ifndef SQLITE_OMIT_WINDOWFUNC + pNC->ncFlags &= ~(pExpr->pWin ? NC_AllowWin : NC_AllowAgg); +#else + pNC->ncFlags &= ~NC_AllowAgg; +#endif + } } - if( is_agg ) pNC->ncFlags &= ~NC_AllowAgg; sqlite3WalkExprList(pWalker, pList); if( is_agg ){ - NameContext *pNC2 = pNC; - pExpr->op = TK_AGG_FUNCTION; - pExpr->op2 = 0; - while( pNC2 && !sqlite3FunctionUsesThisSrc(pExpr, pNC2->pSrcList) ){ - pExpr->op2++; - pNC2 = pNC2->pNext; - } - assert( pDef!=0 ); - if( pNC2 ){ - assert( SQLITE_FUNC_MINMAX==NC_MinMaxAgg ); - testcase( (pDef->funcFlags & SQLITE_FUNC_MINMAX)!=0 ); - pNC2->ncFlags |= NC_HasAgg | (pDef->funcFlags & SQLITE_FUNC_MINMAX); +#ifndef SQLITE_OMIT_WINDOWFUNC + if( pExpr->pWin ){ + Select *pSel = pNC->pWinSelect; + sqlite3WalkExprList(pWalker, pExpr->pWin->pPartition); + sqlite3WalkExprList(pWalker, pExpr->pWin->pOrderBy); + sqlite3WalkExpr(pWalker, pExpr->pWin->pFilter); + sqlite3WindowUpdate(pParse, pSel->pWinDefn, pExpr->pWin, pDef); + if( 0==pSel->pWin + || 0==sqlite3WindowCompare(pParse, pSel->pWin, pExpr->pWin) + ){ + pExpr->pWin->pNextWin = pSel->pWin; + pSel->pWin = pExpr->pWin; + } + pNC->ncFlags |= NC_AllowWin; + }else +#endif /* SQLITE_OMIT_WINDOWFUNC */ + { + NameContext *pNC2 = pNC; + pExpr->op = TK_AGG_FUNCTION; + pExpr->op2 = 0; + while( pNC2 && !sqlite3FunctionUsesThisSrc(pExpr, pNC2->pSrcList) ){ + pExpr->op2++; + pNC2 = pNC2->pNext; + } + assert( pDef!=0 ); + if( pNC2 ){ + assert( SQLITE_FUNC_MINMAX==NC_MinMaxAgg ); + testcase( (pDef->funcFlags & SQLITE_FUNC_MINMAX)!=0 ); + pNC2->ncFlags |= NC_HasAgg | (pDef->funcFlags & SQLITE_FUNC_MINMAX); + } + pNC->ncFlags |= NC_AllowAgg; } - pNC->ncFlags |= NC_AllowAgg; } /* FIX ME: Compute pExpr->affinity based on the expected return ** type of the function @@ -94353,6 +95380,19 @@ static int resolveOrderGroupBy( } for(j=0; jpEList->nExpr; j++){ if( sqlite3ExprCompare(0, pE, pSelect->pEList->a[j].pExpr, -1)==0 ){ +#ifndef SQLITE_OMIT_WINDOWFUNC + if( pE->pWin ){ + /* Since this window function is being changed into a reference + ** to the same window function the result set, remove the instance + ** of this window function from the Select.pWin list. */ + Window **pp; + for(pp=&pSelect->pWin; *pp; pp=&(*pp)->pNextWin){ + if( *pp==pE->pWin ){ + *pp = (*pp)->pNextWin; + } + } + } +#endif pItem->u.x.iOrderByCol = j+1; } } @@ -94409,6 +95449,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ */ memset(&sNC, 0, sizeof(sNC)); sNC.pParse = pParse; + sNC.pWinSelect = p; if( sqlite3ResolveExprNames(&sNC, p->pLimit) ){ return WRC_Abort; } @@ -94457,12 +95498,13 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ /* Set up the local name-context to pass to sqlite3ResolveExprNames() to ** resolve the result-set expression list. */ - sNC.ncFlags = NC_AllowAgg; + sNC.ncFlags = NC_AllowAgg|NC_AllowWin; sNC.pSrcList = p->pSrc; sNC.pNext = pOuterNC; /* Resolve names in the result set. */ if( sqlite3ResolveExprListNames(&sNC, p->pEList) ) return WRC_Abort; + sNC.ncFlags &= ~NC_AllowWin; /* If there are no aggregate functions in the result-set, and no GROUP BY ** expression, do not allow aggregates in any of the other expressions. @@ -94511,7 +95553,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ ** outer queries */ sNC.pNext = 0; - sNC.ncFlags |= NC_AllowAgg; + sNC.ncFlags |= NC_AllowAgg|NC_AllowWin; /* If this is a converted compound query, move the ORDER BY clause from ** the sub-query back to the parent query. At this point each term @@ -94542,6 +95584,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ if( db->mallocFailed ){ return WRC_Abort; } + sNC.ncFlags &= ~NC_AllowWin; /* Resolve the GROUP BY clause. At the same time, make sure ** the GROUP BY clause does not contain aggregate functions. @@ -94890,14 +95933,6 @@ SQLITE_PRIVATE CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){ while( p ){ int op = p->op; if( p->flags & EP_Generic ) break; - if( op==TK_CAST || op==TK_UPLUS ){ - p = p->pLeft; - continue; - } - if( op==TK_COLLATE || (op==TK_REGISTER && p->op2==TK_COLLATE) ){ - pColl = sqlite3GetCollSeq(pParse, ENC(db), 0, p->u.zToken); - break; - } if( (op==TK_AGG_COLUMN || op==TK_COLUMN || op==TK_REGISTER || op==TK_TRIGGER) && p->pTab!=0 @@ -94911,6 +95946,14 @@ SQLITE_PRIVATE CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){ } break; } + if( op==TK_CAST || op==TK_UPLUS ){ + p = p->pLeft; + continue; + } + if( op==TK_COLLATE || (op==TK_REGISTER && p->op2==TK_COLLATE) ){ + pColl = sqlite3GetCollSeq(pParse, ENC(db), 0, p->u.zToken); + break; + } if( p->flags & EP_Collate ){ if( p->pLeft && (p->pLeft->flags & EP_Collate)!=0 ){ p = p->pLeft; @@ -95330,7 +96373,6 @@ static void codeVectorCompare( Expr *pL, *pR; int r1, r2; assert( i>=0 && i0 ) sqlite3ExprCachePush(pParse); r1 = exprVectorRegister(pParse, pLeft, i, regLeft, &pL, ®Free1); r2 = exprVectorRegister(pParse, pRight, i, regRight, &pR, ®Free2); codeCompare(pParse, pL, pR, opx, r1, r2, dest, p5); @@ -95342,7 +96384,6 @@ static void codeVectorCompare( testcase(op==OP_Ne); VdbeCoverageIf(v,op==OP_Ne); sqlite3ReleaseTempReg(pParse, regFree1); sqlite3ReleaseTempReg(pParse, regFree2); - if( i>0 ) sqlite3ExprCachePop(pParse); if( i==nLeft-1 ){ break; } @@ -95690,7 +96731,12 @@ SQLITE_PRIVATE Expr *sqlite3ExprAnd(sqlite3 *db, Expr *pLeft, Expr *pRight){ ** Construct a new expression node for a function with multiple ** arguments. */ -SQLITE_PRIVATE Expr *sqlite3ExprFunction(Parse *pParse, ExprList *pList, Token *pToken){ +SQLITE_PRIVATE Expr *sqlite3ExprFunction( + Parse *pParse, /* Parsing context */ + ExprList *pList, /* Argument list */ + Token *pToken, /* Name of the function */ + int eDistinct /* SF_Distinct or SF_ALL or 0 */ +){ Expr *pNew; sqlite3 *db = pParse->db; assert( pToken ); @@ -95699,10 +96745,14 @@ SQLITE_PRIVATE Expr *sqlite3ExprFunction(Parse *pParse, ExprList *pList, Token * sqlite3ExprListDelete(db, pList); /* Avoid memory leak when malloc fails */ return 0; } + if( pList && pList->nExpr > pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG] ){ + sqlite3ErrorMsg(pParse, "too many arguments on function %T", pToken); + } pNew->x.pList = pList; ExprSetProperty(pNew, EP_HasFunc); assert( !ExprHasProperty(pNew, EP_xIsSelect) ); sqlite3ExprSetHeightAndFlags(pParse, pNew); + if( eDistinct==SF_Distinct ) ExprSetProperty(pNew, EP_Distinct); return pNew; } @@ -95812,6 +96862,9 @@ static SQLITE_NOINLINE void sqlite3ExprDeleteNN(sqlite3 *db, Expr *p){ }else{ sqlite3ExprListDelete(db, p->x.pList); } + if( !ExprHasProperty(p, EP_Reduced) ){ + sqlite3WindowDelete(db, p->pWin); + } } if( ExprHasProperty(p, EP_MemToken) ) sqlite3DbFree(db, p->u.zToken); if( !ExprHasProperty(p, EP_Static) ){ @@ -95860,7 +96913,7 @@ static int exprStructSize(Expr *p){ ** Note that with flags==EXPRDUP_REDUCE, this routines works on full-size ** (unreduced) Expr objects as they or originally constructed by the parser. ** During expression analysis, extra information is computed and moved into -** later parts of teh Expr object and that extra information might get chopped +** later parts of the Expr object and that extra information might get chopped ** off if the expression is reduced. Note also that it does not work to ** make an EXPRDUP_REDUCE copy of a reduced expression. It is only legal ** to reduce a pristine expression tree from the parser. The implementation @@ -95872,7 +96925,11 @@ static int dupedExprStructSize(Expr *p, int flags){ assert( flags==EXPRDUP_REDUCE || flags==0 ); /* Only one flag value allowed */ assert( EXPR_FULLSIZE<=0xfff ); assert( (0xfff & (EP_Reduced|EP_TokenOnly))==0 ); - if( 0==flags || p->op==TK_SELECT_COLUMN ){ + if( 0==flags || p->op==TK_SELECT_COLUMN +#ifndef SQLITE_OMIT_WINDOWFUNC + || p->pWin +#endif + ){ nSize = EXPR_FULLSIZE; }else{ assert( !ExprHasProperty(p, EP_TokenOnly|EP_Reduced) ); @@ -96000,18 +97057,22 @@ static Expr *exprDup(sqlite3 *db, Expr *p, int dupFlags, u8 **pzBuffer){ } /* Fill in pNew->pLeft and pNew->pRight. */ + zAlloc += dupedExprNodeSize(p, dupFlags); if( ExprHasProperty(pNew, EP_Reduced|EP_TokenOnly) ){ - zAlloc += dupedExprNodeSize(p, dupFlags); if( !ExprHasProperty(pNew, EP_TokenOnly|EP_Leaf) ){ pNew->pLeft = p->pLeft ? exprDup(db, p->pLeft, EXPRDUP_REDUCE, &zAlloc) : 0; pNew->pRight = p->pRight ? exprDup(db, p->pRight, EXPRDUP_REDUCE, &zAlloc) : 0; } - if( pzBuffer ){ - *pzBuffer = zAlloc; - } }else{ +#ifndef SQLITE_OMIT_WINDOWFUNC + if( ExprHasProperty(p, EP_Reduced|EP_TokenOnly) ){ + pNew->pWin = 0; + }else{ + pNew->pWin = sqlite3WindowDup(db, pNew, p->pWin); + } +#endif /* SQLITE_OMIT_WINDOWFUNC */ if( !ExprHasProperty(p, EP_TokenOnly|EP_Leaf) ){ if( pNew->op==TK_SELECT_COLUMN ){ pNew->pLeft = p->pLeft; @@ -96023,6 +97084,9 @@ static Expr *exprDup(sqlite3 *db, Expr *p, int dupFlags, u8 **pzBuffer){ pNew->pRight = sqlite3ExprDup(db, p->pRight, 0); } } + if( pzBuffer ){ + *pzBuffer = zAlloc; + } } return pNew; } @@ -96218,7 +97282,11 @@ SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3 *db, Select *pDup, int flags){ pNew->addrOpenEphm[1] = -1; pNew->nSelectRow = p->nSelectRow; pNew->pWith = withDup(db, p->pWith); - sqlite3SelectSetName(pNew, p->zSelName); +#ifndef SQLITE_OMIT_WINDOWFUNC + pNew->pWin = 0; + pNew->pWinDefn = sqlite3WindowListDup(db, p->pWinDefn); +#endif + pNew->selId = p->selId; *pp = pNew; pp = &pNew->pPrior; pNext = pNew; @@ -96390,6 +97458,9 @@ SQLITE_PRIVATE void sqlite3ExprListSetName( assert( pItem->zName==0 ); pItem->zName = sqlite3DbStrNDup(pParse->db, pName->z, pName->n); if( dequote ) sqlite3Dequote(pItem->zName); + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenMap(pParse, (void*)pItem->zName, pName); + } } } @@ -96570,6 +97641,9 @@ static int exprNodeIsConstant(Walker *pWalker, Expr *pExpr){ testcase( pExpr->op==TK_COLUMN ); testcase( pExpr->op==TK_AGG_FUNCTION ); testcase( pExpr->op==TK_AGG_COLUMN ); + if( ExprHasProperty(pExpr, EP_FixedCol) && pWalker->eCode!=2 ){ + return WRC_Continue; + } if( pWalker->eCode==3 && pExpr->iTable==pWalker->u.iCur ){ return WRC_Continue; } @@ -96625,10 +97699,17 @@ SQLITE_PRIVATE int sqlite3ExprIsConstant(Expr *p){ } /* -** Walk an expression tree. Return non-zero if the expression is constant -** that does no originate from the ON or USING clauses of a join. -** Return 0 if it involves variables or function calls or terms from -** an ON or USING clause. +** Walk an expression tree. Return non-zero if +** +** (1) the expression is constant, and +** (2) the expression does originate in the ON or USING clause +** of a LEFT JOIN, and +** (3) the expression does not contain any EP_FixedCol TK_COLUMN +** operands created by the constant propagation optimization. +** +** When this routine returns true, it indicates that the expression +** can be added to the pParse->pConstExpr list and evaluated once when +** the prepared statement starts up. See sqlite3ExprCodeAtInit(). */ SQLITE_PRIVATE int sqlite3ExprIsConstantNotJoin(Expr *p){ return exprIsConst(p, 2, 0); @@ -96658,7 +97739,7 @@ static int exprNodeIsConstantOrGroupBy(Walker *pWalker, Expr *pExpr){ Expr *p = pGroupBy->a[i].pExpr; if( sqlite3ExprCompare(0, pExpr, p, -1)<2 ){ CollSeq *pColl = sqlite3ExprNNCollSeq(pWalker->pParse, p); - if( sqlite3_stricmp("BINARY", pColl->zName)==0 ){ + if( sqlite3IsBinary(pColl) ){ return WRC_Prune; } } @@ -97080,7 +98161,8 @@ SQLITE_PRIVATE int sqlite3FindInIndex( sqlite3OpenTable(pParse, iTab, iDb, pTab, OP_OpenRead); eType = IN_INDEX_ROWID; - + ExplainQueryPlan((pParse, 0, + "USING ROWID SEARCH ON TABLE %s FOR IN-OPERATOR",pTab->zName)); sqlite3VdbeJumpHere(v, iAddr); }else{ Index *pIdx; /* Iterator variable */ @@ -97339,7 +98421,6 @@ SQLITE_PRIVATE int sqlite3CodeSubselect( int rReg = 0; /* Register storing resulting */ Vdbe *v = sqlite3GetVdbe(pParse); if( NEVER(v==0) ) return 0; - sqlite3ExprCachePush(pParse); /* The evaluation of the IN/EXISTS/SELECT must be repeated every time it ** is encountered if any of the following is true: @@ -97475,7 +98556,6 @@ SQLITE_PRIVATE int sqlite3CodeSubselect( sqlite3VdbeAddOp3(v, OP_Insert, pExpr->iTable, r2, r3); }else{ sqlite3VdbeAddOp4(v, OP_MakeRecord, r3, 1, r2, &affinity, 1); - sqlite3ExprCacheAffinityChange(pParse, r3, 1); sqlite3VdbeAddOp4Int(v, OP_IdxInsert, pExpr->iTable, r2, r3, 1); } } @@ -97556,7 +98636,6 @@ SQLITE_PRIVATE int sqlite3CodeSubselect( if( jmpIfDynamic>=0 ){ sqlite3VdbeJumpHere(v, jmpIfDynamic); } - sqlite3ExprCachePop(pParse); return rReg; } @@ -97675,7 +98754,6 @@ static void sqlite3ExprCodeIN( ** aiMap[] array contains a mapping from the original LHS field order to ** the field order that matches the RHS index. */ - sqlite3ExprCachePush(pParse); rLhsOrig = exprCodeVector(pParse, pLeft, &iDummy); for(i=0; idb, aiMap); @@ -97902,145 +98979,6 @@ static void codeInteger(Parse *pParse, Expr *pExpr, int negFlag, int iMem){ } } -/* -** Erase column-cache entry number i -*/ -static void cacheEntryClear(Parse *pParse, int i){ - if( pParse->aColCache[i].tempReg ){ - if( pParse->nTempRegaTempReg) ){ - pParse->aTempReg[pParse->nTempReg++] = pParse->aColCache[i].iReg; - } - } - pParse->nColCache--; - if( inColCache ){ - pParse->aColCache[i] = pParse->aColCache[pParse->nColCache]; - } -} - - -/* -** Record in the column cache that a particular column from a -** particular table is stored in a particular register. -*/ -SQLITE_PRIVATE void sqlite3ExprCacheStore(Parse *pParse, int iTab, int iCol, int iReg){ - int i; - int minLru; - int idxLru; - struct yColCache *p; - - /* Unless an error has occurred, register numbers are always positive. */ - assert( iReg>0 || pParse->nErr || pParse->db->mallocFailed ); - assert( iCol>=-1 && iCol<32768 ); /* Finite column numbers */ - - /* The SQLITE_ColumnCache flag disables the column cache. This is used - ** for testing only - to verify that SQLite always gets the same answer - ** with and without the column cache. - */ - if( OptimizationDisabled(pParse->db, SQLITE_ColumnCache) ) return; - - /* First replace any existing entry. - ** - ** Actually, the way the column cache is currently used, we are guaranteed - ** that the object will never already be in cache. Verify this guarantee. - */ -#ifndef NDEBUG - for(i=0, p=pParse->aColCache; inColCache; i++, p++){ - assert( p->iTable!=iTab || p->iColumn!=iCol ); - } -#endif - - /* If the cache is already full, delete the least recently used entry */ - if( pParse->nColCache>=SQLITE_N_COLCACHE ){ - minLru = 0x7fffffff; - idxLru = -1; - for(i=0, p=pParse->aColCache; ilrulru; - } - } - p = &pParse->aColCache[idxLru]; - }else{ - p = &pParse->aColCache[pParse->nColCache++]; - } - - /* Add the new entry to the end of the cache */ - p->iLevel = pParse->iCacheLevel; - p->iTable = iTab; - p->iColumn = iCol; - p->iReg = iReg; - p->tempReg = 0; - p->lru = pParse->iCacheCnt++; -} - -/* -** Indicate that registers between iReg..iReg+nReg-1 are being overwritten. -** Purge the range of registers from the column cache. -*/ -SQLITE_PRIVATE void sqlite3ExprCacheRemove(Parse *pParse, int iReg, int nReg){ - int i = 0; - while( inColCache ){ - struct yColCache *p = &pParse->aColCache[i]; - if( p->iReg >= iReg && p->iReg < iReg+nReg ){ - cacheEntryClear(pParse, i); - }else{ - i++; - } - } -} - -/* -** Remember the current column cache context. Any new entries added -** added to the column cache after this call are removed when the -** corresponding pop occurs. -*/ -SQLITE_PRIVATE void sqlite3ExprCachePush(Parse *pParse){ - pParse->iCacheLevel++; -#ifdef SQLITE_DEBUG - if( pParse->db->flags & SQLITE_VdbeAddopTrace ){ - printf("PUSH to %d\n", pParse->iCacheLevel); - } -#endif -} - -/* -** Remove from the column cache any entries that were added since the -** the previous sqlite3ExprCachePush operation. In other words, restore -** the cache to the state it was in prior the most recent Push. -*/ -SQLITE_PRIVATE void sqlite3ExprCachePop(Parse *pParse){ - int i = 0; - assert( pParse->iCacheLevel>=1 ); - pParse->iCacheLevel--; -#ifdef SQLITE_DEBUG - if( pParse->db->flags & SQLITE_VdbeAddopTrace ){ - printf("POP to %d\n", pParse->iCacheLevel); - } -#endif - while( inColCache ){ - if( pParse->aColCache[i].iLevel>pParse->iCacheLevel ){ - cacheEntryClear(pParse, i); - }else{ - i++; - } - } -} - -/* -** When a cached column is reused, make sure that its register is -** no longer available as a temp register. ticket #3879: that same -** register might be in the cache in multiple places, so be sure to -** get them all. -*/ -static void sqlite3ExprCachePinRegister(Parse *pParse, int iReg){ - int i; - struct yColCache *p; - for(i=0, p=pParse->aColCache; inColCache; i++, p++){ - if( p->iReg==iReg ){ - p->tempReg = 0; - } - } -} /* Generate code that will load into register regOut a value that is ** appropriate for the iIdxCol-th column of index pIdx. @@ -98096,12 +99034,7 @@ SQLITE_PRIVATE void sqlite3ExprCodeGetColumnOfTable( /* ** Generate code that will extract the iColumn-th column from -** table pTab and store the column value in a register. -** -** An effort is made to store the column value in register iReg. This -** is not garanteeed for GetColumn() - the result can be stored in -** any register. But the result is guaranteed to land in register iReg -** for GetColumnToReg(). +** table pTab and store the column value in register iReg. ** ** There must be an open cursor to pTab in iTable when this routine ** is called. If iColumn<0 then code is generated that extracts the rowid. @@ -98115,96 +99048,23 @@ SQLITE_PRIVATE int sqlite3ExprCodeGetColumn( u8 p5 /* P5 value for OP_Column + FLAGS */ ){ Vdbe *v = pParse->pVdbe; - int i; - struct yColCache *p; - - for(i=0, p=pParse->aColCache; inColCache; i++, p++){ - if( p->iTable==iTable && p->iColumn==iColumn ){ - p->lru = pParse->iCacheCnt++; - sqlite3ExprCachePinRegister(pParse, p->iReg); - return p->iReg; - } - } assert( v!=0 ); sqlite3ExprCodeGetColumnOfTable(v, pTab, iTable, iColumn, iReg); if( p5 ){ sqlite3VdbeChangeP5(v, p5); - }else{ - sqlite3ExprCacheStore(pParse, iTable, iColumn, iReg); } return iReg; } -SQLITE_PRIVATE void sqlite3ExprCodeGetColumnToReg( - Parse *pParse, /* Parsing and code generating context */ - Table *pTab, /* Description of the table we are reading from */ - int iColumn, /* Index of the table column */ - int iTable, /* The cursor pointing to the table */ - int iReg /* Store results here */ -){ - int r1 = sqlite3ExprCodeGetColumn(pParse, pTab, iColumn, iTable, iReg, 0); - if( r1!=iReg ) sqlite3VdbeAddOp2(pParse->pVdbe, OP_SCopy, r1, iReg); -} - - -/* -** Clear all column cache entries. -*/ -SQLITE_PRIVATE void sqlite3ExprCacheClear(Parse *pParse){ - int i; - -#ifdef SQLITE_DEBUG - if( pParse->db->flags & SQLITE_VdbeAddopTrace ){ - printf("CLEAR\n"); - } -#endif - for(i=0; inColCache; i++){ - if( pParse->aColCache[i].tempReg - && pParse->nTempRegaTempReg) - ){ - pParse->aTempReg[pParse->nTempReg++] = pParse->aColCache[i].iReg; - } - } - pParse->nColCache = 0; -} - -/* -** Record the fact that an affinity change has occurred on iCount -** registers starting with iStart. -*/ -SQLITE_PRIVATE void sqlite3ExprCacheAffinityChange(Parse *pParse, int iStart, int iCount){ - sqlite3ExprCacheRemove(pParse, iStart, iCount); -} /* ** Generate code to move content from registers iFrom...iFrom+nReg-1 -** over to iTo..iTo+nReg-1. Keep the column cache up-to-date. +** over to iTo..iTo+nReg-1. */ SQLITE_PRIVATE void sqlite3ExprCodeMove(Parse *pParse, int iFrom, int iTo, int nReg){ assert( iFrom>=iTo+nReg || iFrom+nReg<=iTo ); sqlite3VdbeAddOp3(pParse->pVdbe, OP_Move, iFrom, iTo, nReg); - sqlite3ExprCacheRemove(pParse, iFrom, nReg); } -#if defined(SQLITE_DEBUG) || defined(SQLITE_COVERAGE_TEST) -/* -** Return true if any register in the range iFrom..iTo (inclusive) -** is used as part of the column cache. -** -** This routine is used within assert() and testcase() macros only -** and does not appear in a normal build. -*/ -static int usedAsColumnCache(Parse *pParse, int iFrom, int iTo){ - int i; - struct yColCache *p; - for(i=0, p=pParse->aColCache; inColCache; i++, p++){ - int r = p->iReg; - if( r>=iFrom && r<=iTo ) return 1; /*NO_TEST*/ - } - return 0; -} -#endif /* SQLITE_DEBUG || SQLITE_COVERAGE_TEST */ - - /* ** Convert a scalar expression node to a TK_REGISTER referencing ** register iReg. The caller must ensure that iReg already contains @@ -98302,6 +99162,28 @@ expr_code_doover: } case TK_COLUMN: { int iTab = pExpr->iTable; + if( ExprHasProperty(pExpr, EP_FixedCol) ){ + /* This COLUMN expression is really a constant due to WHERE clause + ** constraints, and that constant is coded by the pExpr->pLeft + ** expresssion. However, make sure the constant has the correct + ** datatype by applying the Affinity of the table column to the + ** constant. + */ + int iReg = sqlite3ExprCodeTarget(pParse, pExpr->pLeft,target); + int aff = sqlite3TableColumnAffinity(pExpr->pTab, pExpr->iColumn); + if( aff!=SQLITE_AFF_BLOB ){ + static const char zAff[] = "B\000C\000D\000E"; + assert( SQLITE_AFF_BLOB=='A' ); + assert( SQLITE_AFF_TEXT=='B' ); + if( iReg!=target ){ + sqlite3VdbeAddOp2(v, OP_SCopy, iReg, target); + iReg = target; + } + sqlite3VdbeAddOp4(v, OP_Affinity, iReg, 1, 0, + &zAff[(aff-'B')*2], P4_STATIC); + } + return iReg; + } if( iTab<0 ){ if( pParse->iSelfTab<0 ){ /* Generating CHECK constraints or inserting into partial index */ @@ -98382,8 +99264,6 @@ expr_code_doover: } sqlite3VdbeAddOp2(v, OP_Cast, target, sqlite3AffinityType(pExpr->u.zToken, 0)); - testcase( usedAsColumnCache(pParse, inReg, inReg) ); - sqlite3ExprCacheAffinityChange(pParse, inReg, 1); return inReg; } #endif /* SQLITE_OMIT_CAST */ @@ -98527,6 +99407,12 @@ expr_code_doover: u8 enc = ENC(db); /* The text encoding used by this database */ CollSeq *pColl = 0; /* A collating sequence */ +#ifndef SQLITE_OMIT_WINDOWFUNC + if( !ExprHasProperty(pExpr, EP_TokenOnly|EP_Reduced) && pExpr->pWin ){ + return pExpr->pWin->regResult; + } +#endif + if( ConstFactorOk(pParse) && sqlite3ExprIsConstantNotJoin(pExpr) ){ /* SQL functions can be expensive. So try to move constant functions ** out of the inner loop, even if that means an extra OP_Copy. */ @@ -98563,10 +99449,7 @@ expr_code_doover: for(i=1; ia[i].pExpr, target); - sqlite3ExprCachePop(pParse); } sqlite3VdbeResolveLabel(v, endCoalesce); break; @@ -98632,10 +99515,8 @@ expr_code_doover: } } - sqlite3ExprCachePush(pParse); /* Ticket 2ea2425d34be */ sqlite3ExprCodeExprList(pParse, pFarg, r1, 0, SQLITE_ECEL_DUP|SQLITE_ECEL_FACTOR); - sqlite3ExprCachePop(pParse); /* Ticket 2ea2425d34be */ }else{ r1 = 0; } @@ -98652,7 +99533,7 @@ expr_code_doover: ** "glob(B,A). We want to use the A in "A glob B" to test ** for function overloading. But we use the B term in "glob(B,A)". */ - if( nFarg>=2 && (pExpr->flags & EP_InfixFunc) ){ + if( nFarg>=2 && ExprHasProperty(pExpr, EP_InfixFunc) ){ pDef = sqlite3VtabOverloadFunction(db, pDef, nFarg, pFarg->a[1].pExpr); }else if( nFarg>0 ){ pDef = sqlite3VtabOverloadFunction(db, pDef, nFarg, pFarg->a[0].pExpr); @@ -98808,9 +99689,7 @@ expr_code_doover: case TK_IF_NULL_ROW: { int addrINR; addrINR = sqlite3VdbeAddOp1(v, OP_IfNullRow, pExpr->iTable); - sqlite3ExprCachePush(pParse); inReg = sqlite3ExprCodeTarget(pParse, pExpr->pLeft, target); - sqlite3ExprCachePop(pParse); sqlite3VdbeJumpHere(v, addrINR); sqlite3VdbeChangeP3(v, addrINR, inReg); break; @@ -98847,7 +99726,6 @@ expr_code_doover: Expr opCompare; /* The X==Ei expression */ Expr *pX; /* The X expression */ Expr *pTest = 0; /* X==Ei (form A) or just Ei (form B) */ - VVA_ONLY( int iCacheLevel = pParse->iCacheLevel; ) assert( !ExprHasProperty(pExpr, EP_xIsSelect) && pExpr->x.pList ); assert(pExpr->x.pList->nExpr > 0); @@ -98871,7 +99749,6 @@ expr_code_doover: regFree1 = 0; } for(i=0; iop==TK_COLUMN ); sqlite3ExprCode(pParse, aListelem[i+1].pExpr, target); sqlite3VdbeGoto(v, endLabel); - sqlite3ExprCachePop(pParse); sqlite3VdbeResolveLabel(v, nextCase); } if( (nExpr&1)!=0 ){ - sqlite3ExprCachePush(pParse); sqlite3ExprCode(pParse, pEList->a[nExpr-1].pExpr, target); - sqlite3ExprCachePop(pParse); }else{ sqlite3VdbeAddOp2(v, OP_Null, 0, target); } - assert( pParse->db->mallocFailed || pParse->nErr>0 - || pParse->iCacheLevel==iCacheLevel ); sqlite3VdbeResolveLabel(v, endLabel); break; } @@ -99045,7 +99917,7 @@ SQLITE_PRIVATE void sqlite3ExprCodeCopy(Parse *pParse, Expr *pExpr, int target){ ** might choose to code the expression at initialization time. */ SQLITE_PRIVATE void sqlite3ExprCodeFactorable(Parse *pParse, Expr *pExpr, int target){ - if( pParse->okConstFactor && sqlite3ExprIsConstant(pExpr) ){ + if( pParse->okConstFactor && sqlite3ExprIsConstantNotJoin(pExpr) ){ sqlite3ExprCodeAtInit(pParse, pExpr, target); }else{ sqlite3ExprCode(pParse, pExpr, target); @@ -99127,7 +99999,9 @@ SQLITE_PRIVATE int sqlite3ExprCodeExprList( }else{ sqlite3VdbeAddOp2(v, copyOp, j+srcReg-1, target+i); } - }else if( (flags & SQLITE_ECEL_FACTOR)!=0 && sqlite3ExprIsConstant(pExpr) ){ + }else if( (flags & SQLITE_ECEL_FACTOR)!=0 + && sqlite3ExprIsConstantNotJoin(pExpr) + ){ sqlite3ExprCodeAtInit(pParse, pExpr, target+i); }else{ int inReg = sqlite3ExprCodeTarget(pParse, pExpr, target+i); @@ -99253,18 +100127,14 @@ SQLITE_PRIVATE void sqlite3ExprIfTrue(Parse *pParse, Expr *pExpr, int dest, int int d2 = sqlite3VdbeMakeLabel(v); testcase( jumpIfNull==0 ); sqlite3ExprIfFalse(pParse, pExpr->pLeft, d2,jumpIfNull^SQLITE_JUMPIFNULL); - sqlite3ExprCachePush(pParse); sqlite3ExprIfTrue(pParse, pExpr->pRight, dest, jumpIfNull); sqlite3VdbeResolveLabel(v, d2); - sqlite3ExprCachePop(pParse); break; } case TK_OR: { testcase( jumpIfNull==0 ); sqlite3ExprIfTrue(pParse, pExpr->pLeft, dest, jumpIfNull); - sqlite3ExprCachePush(pParse); sqlite3ExprIfTrue(pParse, pExpr->pRight, dest, jumpIfNull); - sqlite3ExprCachePop(pParse); break; } case TK_NOT: { @@ -99423,19 +100293,15 @@ SQLITE_PRIVATE void sqlite3ExprIfFalse(Parse *pParse, Expr *pExpr, int dest, int case TK_AND: { testcase( jumpIfNull==0 ); sqlite3ExprIfFalse(pParse, pExpr->pLeft, dest, jumpIfNull); - sqlite3ExprCachePush(pParse); sqlite3ExprIfFalse(pParse, pExpr->pRight, dest, jumpIfNull); - sqlite3ExprCachePop(pParse); break; } case TK_OR: { int d2 = sqlite3VdbeMakeLabel(v); testcase( jumpIfNull==0 ); sqlite3ExprIfTrue(pParse, pExpr->pLeft, d2, jumpIfNull^SQLITE_JUMPIFNULL); - sqlite3ExprCachePush(pParse); sqlite3ExprIfFalse(pParse, pExpr->pRight, dest, jumpIfNull); sqlite3VdbeResolveLabel(v, d2); - sqlite3ExprCachePop(pParse); break; } case TK_NOT: { @@ -99657,7 +100523,8 @@ SQLITE_PRIVATE int sqlite3ExprCompare(Parse *pParse, Expr *pA, Expr *pB, int iTa if( (pA->flags & EP_Distinct)!=(pB->flags & EP_Distinct) ) return 2; if( ALWAYS((combinedFlags & EP_TokenOnly)==0) ){ if( combinedFlags & EP_xIsSelect ) return 2; - if( sqlite3ExprCompare(pParse, pA->pLeft, pB->pLeft, iTab) ) return 2; + if( (combinedFlags & EP_FixedCol)==0 + && sqlite3ExprCompare(pParse, pA->pLeft, pB->pLeft, iTab) ) return 2; if( sqlite3ExprCompare(pParse, pA->pRight, pB->pRight, iTab) ) return 2; if( sqlite3ExprListCompare(pA->x.pList, pB->x.pList, iTab) ) return 2; assert( (combinedFlags & EP_Reduced)==0 ); @@ -99666,6 +100533,21 @@ SQLITE_PRIVATE int sqlite3ExprCompare(Parse *pParse, Expr *pA, Expr *pB, int iTa if( pA->iTable!=pB->iTable && (pA->iTable!=iTab || NEVER(pB->iTable>=0)) ) return 2; } +#ifndef SQLITE_OMIT_WINDOWFUNC + /* Justification for the assert(): + ** window functions have p->op==TK_FUNCTION but aggregate functions + ** have p->op==TK_AGG_FUNCTION. So any comparison between an aggregate + ** function and a window function should have failed before reaching + ** this point. And, it is not possible to have a window function and + ** a scalar function with the same name and number of arguments. So + ** if we reach this point, either A and B both window functions or + ** neither are a window functions. */ + assert( (pA->pWin==0)==(pB->pWin==0) ); + + if( pA->pWin!=0 ){ + if( sqlite3WindowCompare(pParse,pA->pWin,pB->pWin)!=0 ) return 2; + } +#endif } return 0; } @@ -99756,18 +100638,15 @@ SQLITE_PRIVATE int sqlite3ExprImpliesExpr(Parse *pParse, Expr *pE1, Expr *pE2, i /* ** This is the Expr node callback for sqlite3ExprImpliesNotNullRow(). ** If the expression node requires that the table at pWalker->iCur -** have a non-NULL column, then set pWalker->eCode to 1 and abort. +** have one or more non-NULL column, then set pWalker->eCode to 1 and abort. +** +** This routine controls an optimization. False positives (setting +** pWalker->eCode to 1 when it should not be) are deadly, but false-negatives +** (never setting pWalker->eCode) is a harmless missed optimization. */ static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){ - /* This routine is only called for WHERE clause expressions and so it - ** cannot have any TK_AGG_COLUMN entries because those are only found - ** in HAVING clauses. We can get a TK_AGG_FUNCTION in a WHERE clause, - ** but that is an illegal construct and the query will be rejected at - ** a later stage of processing, so the TK_AGG_FUNCTION case does not - ** need to be considered here. */ - assert( pExpr->op!=TK_AGG_COLUMN ); + testcase( pExpr->op==TK_AGG_COLUMN ); testcase( pExpr->op==TK_AGG_FUNCTION ); - if( ExprHasProperty(pExpr, EP_FromJoin) ) return WRC_Prune; switch( pExpr->op ){ case TK_ISNOT: @@ -100187,21 +101066,9 @@ SQLITE_PRIVATE int sqlite3GetTempReg(Parse *pParse){ /* ** Deallocate a register, making available for reuse for some other ** purpose. -** -** If a register is currently being used by the column cache, then -** the deallocation is deferred until the column cache line that uses -** the register becomes stale. */ SQLITE_PRIVATE void sqlite3ReleaseTempReg(Parse *pParse, int iReg){ if( iReg && pParse->nTempRegaTempReg) ){ - int i; - struct yColCache *p; - for(i=0, p=pParse->aColCache; inColCache; i++, p++){ - if( p->iReg==iReg ){ - p->tempReg = 1; - return; - } - } pParse->aTempReg[pParse->nTempReg++] = iReg; } } @@ -100215,7 +101082,6 @@ SQLITE_PRIVATE int sqlite3GetTempRange(Parse *pParse, int nReg){ i = pParse->iRangeReg; n = pParse->nRangeReg; if( nReg<=n ){ - assert( !usedAsColumnCache(pParse, i, i+n-1) ); pParse->iRangeReg += nReg; pParse->nRangeReg -= nReg; }else{ @@ -100229,7 +101095,6 @@ SQLITE_PRIVATE void sqlite3ReleaseTempRange(Parse *pParse, int iReg, int nReg){ sqlite3ReleaseTempReg(pParse, iReg); return; } - sqlite3ExprCacheRemove(pParse, iReg, nReg); if( nReg>pParse->nRangeReg ){ pParse->nRangeReg = nReg; pParse->iRangeReg = iReg; @@ -100291,352 +101156,6 @@ SQLITE_PRIVATE int sqlite3NoTempsInRange(Parse *pParse, int iFirst, int iLast){ */ #ifndef SQLITE_OMIT_ALTERTABLE - -/* -** This function is used by SQL generated to implement the -** ALTER TABLE command. The first argument is the text of a CREATE TABLE or -** CREATE INDEX command. The second is a table name. The table name in -** the CREATE TABLE or CREATE INDEX statement is replaced with the third -** argument and the result returned. Examples: -** -** sqlite_rename_table('CREATE TABLE abc(a, b, c)', 'def') -** -> 'CREATE TABLE def(a, b, c)' -** -** sqlite_rename_table('CREATE INDEX i ON abc(a)', 'def') -** -> 'CREATE INDEX i ON def(a, b, c)' -*/ -static void renameTableFunc( - sqlite3_context *context, - int NotUsed, - sqlite3_value **argv -){ - unsigned char const *zSql = sqlite3_value_text(argv[0]); - unsigned char const *zTableName = sqlite3_value_text(argv[1]); - - int token; - Token tname; - unsigned char const *zCsr = zSql; - int len = 0; - char *zRet; - - sqlite3 *db = sqlite3_context_db_handle(context); - - UNUSED_PARAMETER(NotUsed); - - /* The principle used to locate the table name in the CREATE TABLE - ** statement is that the table name is the first non-space token that - ** is immediately followed by a TK_LP or TK_USING token. - */ - if( zSql ){ - do { - if( !*zCsr ){ - /* Ran out of input before finding an opening bracket. Return NULL. */ - return; - } - - /* Store the token that zCsr points to in tname. */ - tname.z = (char*)zCsr; - tname.n = len; - - /* Advance zCsr to the next token. Store that token type in 'token', - ** and its length in 'len' (to be used next iteration of this loop). - */ - do { - zCsr += len; - len = sqlite3GetToken(zCsr, &token); - } while( token==TK_SPACE ); - assert( len>0 ); - } while( token!=TK_LP && token!=TK_USING ); - - zRet = sqlite3MPrintf(db, "%.*s\"%w\"%s", (int)(((u8*)tname.z) - zSql), - zSql, zTableName, tname.z+tname.n); - sqlite3_result_text(context, zRet, -1, SQLITE_DYNAMIC); - } -} - -/* -** This C function implements an SQL user function that is used by SQL code -** generated by the ALTER TABLE ... RENAME command to modify the definition -** of any foreign key constraints that use the table being renamed as the -** parent table. It is passed three arguments: -** -** 1) The complete text of the CREATE TABLE statement being modified, -** 2) The old name of the table being renamed, and -** 3) The new name of the table being renamed. -** -** It returns the new CREATE TABLE statement. For example: -** -** sqlite_rename_parent('CREATE TABLE t1(a REFERENCES t2)', 't2', 't3') -** -> 'CREATE TABLE t1(a REFERENCES t3)' -*/ -#ifndef SQLITE_OMIT_FOREIGN_KEY -static void renameParentFunc( - sqlite3_context *context, - int NotUsed, - sqlite3_value **argv -){ - sqlite3 *db = sqlite3_context_db_handle(context); - char *zOutput = 0; - char *zResult; - unsigned char const *zInput = sqlite3_value_text(argv[0]); - unsigned char const *zOld = sqlite3_value_text(argv[1]); - unsigned char const *zNew = sqlite3_value_text(argv[2]); - - unsigned const char *z; /* Pointer to token */ - int n; /* Length of token z */ - int token; /* Type of token */ - - UNUSED_PARAMETER(NotUsed); - if( zInput==0 || zOld==0 ) return; - for(z=zInput; *z; z=z+n){ - n = sqlite3GetToken(z, &token); - if( token==TK_REFERENCES ){ - char *zParent; - do { - z += n; - n = sqlite3GetToken(z, &token); - }while( token==TK_SPACE ); - - if( token==TK_ILLEGAL ) break; - zParent = sqlite3DbStrNDup(db, (const char *)z, n); - if( zParent==0 ) break; - sqlite3Dequote(zParent); - if( 0==sqlite3StrICmp((const char *)zOld, zParent) ){ - char *zOut = sqlite3MPrintf(db, "%s%.*s\"%w\"", - (zOutput?zOutput:""), (int)(z-zInput), zInput, (const char *)zNew - ); - sqlite3DbFree(db, zOutput); - zOutput = zOut; - zInput = &z[n]; - } - sqlite3DbFree(db, zParent); - } - } - - zResult = sqlite3MPrintf(db, "%s%s", (zOutput?zOutput:""), zInput), - sqlite3_result_text(context, zResult, -1, SQLITE_DYNAMIC); - sqlite3DbFree(db, zOutput); -} -#endif - -#ifndef SQLITE_OMIT_TRIGGER -/* This function is used by SQL generated to implement the -** ALTER TABLE command. The first argument is the text of a CREATE TRIGGER -** statement. The second is a table name. The table name in the CREATE -** TRIGGER statement is replaced with the third argument and the result -** returned. This is analagous to renameTableFunc() above, except for CREATE -** TRIGGER, not CREATE INDEX and CREATE TABLE. -*/ -static void renameTriggerFunc( - sqlite3_context *context, - int NotUsed, - sqlite3_value **argv -){ - unsigned char const *zSql = sqlite3_value_text(argv[0]); - unsigned char const *zTableName = sqlite3_value_text(argv[1]); - - int token; - Token tname; - int dist = 3; - unsigned char const *zCsr = zSql; - int len = 0; - char *zRet; - sqlite3 *db = sqlite3_context_db_handle(context); - - UNUSED_PARAMETER(NotUsed); - - /* The principle used to locate the table name in the CREATE TRIGGER - ** statement is that the table name is the first token that is immediately - ** preceded by either TK_ON or TK_DOT and immediately followed by one - ** of TK_WHEN, TK_BEGIN or TK_FOR. - */ - if( zSql ){ - do { - - if( !*zCsr ){ - /* Ran out of input before finding the table name. Return NULL. */ - return; - } - - /* Store the token that zCsr points to in tname. */ - tname.z = (char*)zCsr; - tname.n = len; - - /* Advance zCsr to the next token. Store that token type in 'token', - ** and its length in 'len' (to be used next iteration of this loop). - */ - do { - zCsr += len; - len = sqlite3GetToken(zCsr, &token); - }while( token==TK_SPACE ); - assert( len>0 ); - - /* Variable 'dist' stores the number of tokens read since the most - ** recent TK_DOT or TK_ON. This means that when a WHEN, FOR or BEGIN - ** token is read and 'dist' equals 2, the condition stated above - ** to be met. - ** - ** Note that ON cannot be a database, table or column name, so - ** there is no need to worry about syntax like - ** "CREATE TRIGGER ... ON ON.ON BEGIN ..." etc. - */ - dist++; - if( token==TK_DOT || token==TK_ON ){ - dist = 0; - } - } while( dist!=2 || (token!=TK_WHEN && token!=TK_FOR && token!=TK_BEGIN) ); - - /* Variable tname now contains the token that is the old table-name - ** in the CREATE TRIGGER statement. - */ - zRet = sqlite3MPrintf(db, "%.*s\"%w\"%s", (int)(((u8*)tname.z) - zSql), - zSql, zTableName, tname.z+tname.n); - sqlite3_result_text(context, zRet, -1, SQLITE_DYNAMIC); - } -} -#endif /* !SQLITE_OMIT_TRIGGER */ - -/* -** Register built-in functions used to help implement ALTER TABLE -*/ -SQLITE_PRIVATE void sqlite3AlterFunctions(void){ - static FuncDef aAlterTableFuncs[] = { - FUNCTION(sqlite_rename_table, 2, 0, 0, renameTableFunc), -#ifndef SQLITE_OMIT_TRIGGER - FUNCTION(sqlite_rename_trigger, 2, 0, 0, renameTriggerFunc), -#endif -#ifndef SQLITE_OMIT_FOREIGN_KEY - FUNCTION(sqlite_rename_parent, 3, 0, 0, renameParentFunc), -#endif - }; - sqlite3InsertBuiltinFuncs(aAlterTableFuncs, ArraySize(aAlterTableFuncs)); -} - -/* -** This function is used to create the text of expressions of the form: -** -** name= OR name= OR ... -** -** If argument zWhere is NULL, then a pointer string containing the text -** "name=" is returned, where is the quoted version -** of the string passed as argument zConstant. The returned buffer is -** allocated using sqlite3DbMalloc(). It is the responsibility of the -** caller to ensure that it is eventually freed. -** -** If argument zWhere is not NULL, then the string returned is -** " OR name=", where is the contents of zWhere. -** In this case zWhere is passed to sqlite3DbFree() before returning. -** -*/ -static char *whereOrName(sqlite3 *db, char *zWhere, char *zConstant){ - char *zNew; - if( !zWhere ){ - zNew = sqlite3MPrintf(db, "name=%Q", zConstant); - }else{ - zNew = sqlite3MPrintf(db, "%s OR name=%Q", zWhere, zConstant); - sqlite3DbFree(db, zWhere); - } - return zNew; -} - -#if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER) -/* -** Generate the text of a WHERE expression which can be used to select all -** tables that have foreign key constraints that refer to table pTab (i.e. -** constraints for which pTab is the parent table) from the sqlite_master -** table. -*/ -static char *whereForeignKeys(Parse *pParse, Table *pTab){ - FKey *p; - char *zWhere = 0; - for(p=sqlite3FkReferences(pTab); p; p=p->pNextTo){ - zWhere = whereOrName(pParse->db, zWhere, p->pFrom->zName); - } - return zWhere; -} -#endif - -/* -** Generate the text of a WHERE expression which can be used to select all -** temporary triggers on table pTab from the sqlite_temp_master table. If -** table pTab has no temporary triggers, or is itself stored in the -** temporary database, NULL is returned. -*/ -static char *whereTempTriggers(Parse *pParse, Table *pTab){ - Trigger *pTrig; - char *zWhere = 0; - const Schema *pTempSchema = pParse->db->aDb[1].pSchema; /* Temp db schema */ - - /* If the table is not located in the temp-db (in which case NULL is - ** returned, loop through the tables list of triggers. For each trigger - ** that is not part of the temp-db schema, add a clause to the WHERE - ** expression being built up in zWhere. - */ - if( pTab->pSchema!=pTempSchema ){ - sqlite3 *db = pParse->db; - for(pTrig=sqlite3TriggerList(pParse, pTab); pTrig; pTrig=pTrig->pNext){ - if( pTrig->pSchema==pTempSchema ){ - zWhere = whereOrName(db, zWhere, pTrig->zName); - } - } - } - if( zWhere ){ - char *zNew = sqlite3MPrintf(pParse->db, "type='trigger' AND (%s)", zWhere); - sqlite3DbFree(pParse->db, zWhere); - zWhere = zNew; - } - return zWhere; -} - -/* -** Generate code to drop and reload the internal representation of table -** pTab from the database, including triggers and temporary triggers. -** Argument zName is the name of the table in the database schema at -** the time the generated code is executed. This can be different from -** pTab->zName if this function is being called to code part of an -** "ALTER TABLE RENAME TO" statement. -*/ -static void reloadTableSchema(Parse *pParse, Table *pTab, const char *zName){ - Vdbe *v; - char *zWhere; - int iDb; /* Index of database containing pTab */ -#ifndef SQLITE_OMIT_TRIGGER - Trigger *pTrig; -#endif - - v = sqlite3GetVdbe(pParse); - if( NEVER(v==0) ) return; - assert( sqlite3BtreeHoldsAllMutexes(pParse->db) ); - iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema); - assert( iDb>=0 ); - -#ifndef SQLITE_OMIT_TRIGGER - /* Drop any table triggers from the internal schema. */ - for(pTrig=sqlite3TriggerList(pParse, pTab); pTrig; pTrig=pTrig->pNext){ - int iTrigDb = sqlite3SchemaToIndex(pParse->db, pTrig->pSchema); - assert( iTrigDb==iDb || iTrigDb==1 ); - sqlite3VdbeAddOp4(v, OP_DropTrigger, iTrigDb, 0, 0, pTrig->zName, 0); - } -#endif - - /* Drop the table and index from the internal schema. */ - sqlite3VdbeAddOp4(v, OP_DropTable, iDb, 0, 0, pTab->zName, 0); - - /* Reload the table, index and permanent trigger schemas. */ - zWhere = sqlite3MPrintf(pParse->db, "tbl_name=%Q", zName); - if( !zWhere ) return; - sqlite3VdbeAddParseSchemaOp(v, iDb, zWhere); - -#ifndef SQLITE_OMIT_TRIGGER - /* Now, if the table is not stored in the temp database, reload any temp - ** triggers. Don't use IN(...) in case SQLITE_OMIT_SUBQUERY is defined. - */ - if( (zWhere=whereTempTriggers(pParse, pTab))!=0 ){ - sqlite3VdbeAddParseSchemaOp(v, 1, zWhere); - } -#endif -} - /* ** Parameter zName is the name of a table that is about to be altered ** (either with ALTER TABLE ... RENAME TO or ALTER TABLE ... ADD COLUMN). @@ -100653,6 +101172,49 @@ static int isSystemTable(Parse *pParse, const char *zName){ return 0; } +/* +** Generate code to verify that the schemas of database zDb and, if +** bTemp is not true, database "temp", can still be parsed. This is +** called at the end of the generation of an ALTER TABLE ... RENAME ... +** statement to ensure that the operation has not rendered any schema +** objects unusable. +*/ +static void renameTestSchema(Parse *pParse, const char *zDb, int bTemp){ + sqlite3NestedParse(pParse, + "SELECT 1 " + "FROM \"%w\".%s " + "WHERE name NOT LIKE 'sqlite_%%'" + " AND sql NOT LIKE 'create virtual%%'" + " AND sqlite_rename_test(%Q, sql, type, name, %d)=NULL ", + zDb, MASTER_NAME, + zDb, bTemp + ); + + if( bTemp==0 ){ + sqlite3NestedParse(pParse, + "SELECT 1 " + "FROM temp.%s " + "WHERE name NOT LIKE 'sqlite_%%'" + " AND sql NOT LIKE 'create virtual%%'" + " AND sqlite_rename_test(%Q, sql, type, name, 1)=NULL ", + MASTER_NAME, zDb + ); + } +} + +/* +** Generate code to reload the schema for database iDb. And, if iDb!=1, for +** the temp database as well. +*/ +static void renameReloadSchema(Parse *pParse, int iDb){ + Vdbe *v = pParse->pVdbe; + if( v ){ + sqlite3ChangeCookie(pParse, iDb); + sqlite3VdbeAddParseSchemaOp(pParse->pVdbe, iDb, 0); + if( iDb!=1 ) sqlite3VdbeAddParseSchemaOp(pParse->pVdbe, 1, 0); + } +} + /* ** Generate code to implement the "ALTER TABLE xxx RENAME TO yyy" ** command. @@ -100670,9 +101232,6 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable( int nTabName; /* Number of UTF-8 characters in zTabName */ const char *zTabName; /* Original name of the table */ Vdbe *v; -#ifndef SQLITE_OMIT_TRIGGER - char *zWhere = 0; /* Where clause to locate temp triggers */ -#endif VTable *pVTab = 0; /* Non-zero if this is a v-tab with an xRename() */ u32 savedDbFlags; /* Saved value of db->mDbFlags */ @@ -100745,8 +101304,63 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable( if( v==0 ){ goto exit_rename_table; } - sqlite3BeginWriteOperation(pParse, pVTab!=0, iDb); - sqlite3ChangeCookie(pParse, iDb); + + /* figure out how many UTF-8 characters are in zName */ + zTabName = pTab->zName; + nTabName = sqlite3Utf8CharLen(zTabName, -1); + + /* Rewrite all CREATE TABLE, INDEX, TRIGGER or VIEW statements in + ** the schema to use the new table name. */ + sqlite3NestedParse(pParse, + "UPDATE \"%w\".%s SET " + "sql = sqlite_rename_table(%Q, type, name, sql, %Q, %Q, %d) " + "WHERE (type!='index' OR tbl_name=%Q COLLATE nocase)" + "AND name NOT LIKE 'sqlite_%%'" + , zDb, MASTER_NAME, zDb, zTabName, zName, (iDb==1), zTabName + ); + + /* Update the tbl_name and name columns of the sqlite_master table + ** as required. */ + sqlite3NestedParse(pParse, + "UPDATE %Q.%s SET " + "tbl_name = %Q, " + "name = CASE " + "WHEN type='table' THEN %Q " + "WHEN name LIKE 'sqlite_autoindex%%' AND type='index' THEN " + "'sqlite_autoindex_' || %Q || substr(name,%d+18) " + "ELSE name END " + "WHERE tbl_name=%Q COLLATE nocase AND " + "(type='table' OR type='index' OR type='trigger');", + zDb, MASTER_NAME, + zName, zName, zName, + nTabName, zTabName + ); + +#ifndef SQLITE_OMIT_AUTOINCREMENT + /* If the sqlite_sequence table exists in this database, then update + ** it with the new table name. + */ + if( sqlite3FindTable(db, "sqlite_sequence", zDb) ){ + sqlite3NestedParse(pParse, + "UPDATE \"%w\".sqlite_sequence set name = %Q WHERE name = %Q", + zDb, zName, pTab->zName); + } +#endif + + /* If the table being renamed is not itself part of the temp database, + ** edit view and trigger definitions within the temp database + ** as required. */ + if( iDb!=1 ){ + sqlite3NestedParse(pParse, + "UPDATE sqlite_temp_master SET " + "sql = sqlite_rename_table(%Q, type, name, sql, %Q, %Q, 1), " + "tbl_name = " + "CASE WHEN tbl_name=%Q COLLATE nocase AND " + " sqlite_rename_test(%Q, sql, type, name, 1) " + "THEN %Q ELSE tbl_name END " + "WHERE type IN ('view', 'trigger')" + , zDb, zTabName, zName, zTabName, zDb, zName); + } /* If this is a virtual table, invoke the xRename() function if ** one is defined. The xRename() callback will modify the names @@ -100762,90 +101376,8 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable( } #endif - /* figure out how many UTF-8 characters are in zName */ - zTabName = pTab->zName; - nTabName = sqlite3Utf8CharLen(zTabName, -1); - -#if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER) - if( db->flags&SQLITE_ForeignKeys ){ - /* If foreign-key support is enabled, rewrite the CREATE TABLE - ** statements corresponding to all child tables of foreign key constraints - ** for which the renamed table is the parent table. */ - if( (zWhere=whereForeignKeys(pParse, pTab))!=0 ){ - sqlite3NestedParse(pParse, - "UPDATE \"%w\".%s SET " - "sql = sqlite_rename_parent(sql, %Q, %Q) " - "WHERE %s;", zDb, MASTER_NAME, zTabName, zName, zWhere); - sqlite3DbFree(db, zWhere); - } - } -#endif - - /* Modify the sqlite_master table to use the new table name. */ - sqlite3NestedParse(pParse, - "UPDATE %Q.%s SET " -#ifdef SQLITE_OMIT_TRIGGER - "sql = sqlite_rename_table(sql, %Q), " -#else - "sql = CASE " - "WHEN type = 'trigger' THEN sqlite_rename_trigger(sql, %Q)" - "ELSE sqlite_rename_table(sql, %Q) END, " -#endif - "tbl_name = %Q, " - "name = CASE " - "WHEN type='table' THEN %Q " - "WHEN name LIKE 'sqlite_autoindex%%' AND type='index' THEN " - "'sqlite_autoindex_' || %Q || substr(name,%d+18) " - "ELSE name END " - "WHERE tbl_name=%Q COLLATE nocase AND " - "(type='table' OR type='index' OR type='trigger');", - zDb, MASTER_NAME, zName, zName, zName, -#ifndef SQLITE_OMIT_TRIGGER - zName, -#endif - zName, nTabName, zTabName - ); - -#ifndef SQLITE_OMIT_AUTOINCREMENT - /* If the sqlite_sequence table exists in this database, then update - ** it with the new table name. - */ - if( sqlite3FindTable(db, "sqlite_sequence", zDb) ){ - sqlite3NestedParse(pParse, - "UPDATE \"%w\".sqlite_sequence set name = %Q WHERE name = %Q", - zDb, zName, pTab->zName); - } -#endif - -#ifndef SQLITE_OMIT_TRIGGER - /* If there are TEMP triggers on this table, modify the sqlite_temp_master - ** table. Don't do this if the table being ALTERed is itself located in - ** the temp database. - */ - if( (zWhere=whereTempTriggers(pParse, pTab))!=0 ){ - sqlite3NestedParse(pParse, - "UPDATE sqlite_temp_master SET " - "sql = sqlite_rename_trigger(sql, %Q), " - "tbl_name = %Q " - "WHERE %s;", zName, zName, zWhere); - sqlite3DbFree(db, zWhere); - } -#endif - -#if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER) - if( db->flags&SQLITE_ForeignKeys ){ - FKey *p; - for(p=sqlite3FkReferences(pTab); p; p=p->pNextTo){ - Table *pFrom = p->pFrom; - if( pFrom!=pTab ){ - reloadTableSchema(pParse, p->pFrom, pFrom->zName); - } - } - } -#endif - - /* Drop and reload the internal table schema. */ - reloadTableSchema(pParse, pTab, zName); + renameReloadSchema(pParse, iDb); + renameTestSchema(pParse, zDb, iDb==1); exit_rename_table: sqlite3SrcListDelete(db, pSrc); @@ -100871,12 +101403,11 @@ SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){ Column *pCol; /* The new column */ Expr *pDflt; /* Default value for the new column */ sqlite3 *db; /* The database connection; */ - Vdbe *v = pParse->pVdbe; /* The prepared statement under construction */ + Vdbe *v; /* The prepared statement under construction */ int r1; /* Temporary registers */ db = pParse->db; if( pParse->nErr || db->mallocFailed ) return; - assert( v!=0 ); pNew = pParse->pNewTable; assert( pNew ); @@ -100971,17 +101502,20 @@ SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){ ** from less than 3 to 4, as that will corrupt any preexisting DESC ** index. */ - r1 = sqlite3GetTempReg(pParse); - sqlite3VdbeAddOp3(v, OP_ReadCookie, iDb, r1, BTREE_FILE_FORMAT); - sqlite3VdbeUsesBtree(v, iDb); - sqlite3VdbeAddOp2(v, OP_AddImm, r1, -2); - sqlite3VdbeAddOp2(v, OP_IfPos, r1, sqlite3VdbeCurrentAddr(v)+2); - VdbeCoverage(v); - sqlite3VdbeAddOp3(v, OP_SetCookie, iDb, BTREE_FILE_FORMAT, 3); - sqlite3ReleaseTempReg(pParse, r1); + v = sqlite3GetVdbe(pParse); + if( v ){ + r1 = sqlite3GetTempReg(pParse); + sqlite3VdbeAddOp3(v, OP_ReadCookie, iDb, r1, BTREE_FILE_FORMAT); + sqlite3VdbeUsesBtree(v, iDb); + sqlite3VdbeAddOp2(v, OP_AddImm, r1, -2); + sqlite3VdbeAddOp2(v, OP_IfPos, r1, sqlite3VdbeCurrentAddr(v)+2); + VdbeCoverage(v); + sqlite3VdbeAddOp3(v, OP_SetCookie, iDb, BTREE_FILE_FORMAT, 3); + sqlite3ReleaseTempReg(pParse, r1); + } - /* Reload the schema of the modified table. */ - reloadTableSchema(pParse, pTab, pTab->zName); + /* Reload the table definition */ + renameReloadSchema(pParse, iDb); } /* @@ -101002,7 +101536,6 @@ SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){ SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){ Table *pNew; Table *pTab; - Vdbe *v; int iDb; int i; int nAlloc; @@ -101066,16 +101599,1142 @@ SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){ pNew->addColOffset = pTab->addColOffset; pNew->nTabRef = 1; - /* Begin a transaction and increment the schema cookie. */ - sqlite3BeginWriteOperation(pParse, 0, iDb); - v = sqlite3GetVdbe(pParse); - if( !v ) goto exit_begin_add_column; - sqlite3ChangeCookie(pParse, iDb); - exit_begin_add_column: sqlite3SrcListDelete(db, pSrc); return; } + +/* +** Parameter pTab is the subject of an ALTER TABLE ... RENAME COLUMN +** command. This function checks if the table is a view or virtual +** table (columns of views or virtual tables may not be renamed). If so, +** it loads an error message into pParse and returns non-zero. +** +** Or, if pTab is not a view or virtual table, zero is returned. +*/ +#if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE) +static int isRealTable(Parse *pParse, Table *pTab){ + const char *zType = 0; +#ifndef SQLITE_OMIT_VIEW + if( pTab->pSelect ){ + zType = "view"; + } +#endif +#ifndef SQLITE_OMIT_VIRTUALTABLE + if( IsVirtual(pTab) ){ + zType = "virtual table"; + } +#endif + if( zType ){ + sqlite3ErrorMsg( + pParse, "cannot rename columns of %s \"%s\"", zType, pTab->zName + ); + return 1; + } + return 0; +} +#else /* !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE) */ +# define isRealTable(x,y) (0) +#endif + +/* +** Handles the following parser reduction: +** +** cmd ::= ALTER TABLE pSrc RENAME COLUMN pOld TO pNew +*/ +SQLITE_PRIVATE void sqlite3AlterRenameColumn( + Parse *pParse, /* Parsing context */ + SrcList *pSrc, /* Table being altered. pSrc->nSrc==1 */ + Token *pOld, /* Name of column being changed */ + Token *pNew /* New column name */ +){ + sqlite3 *db = pParse->db; /* Database connection */ + Table *pTab; /* Table being updated */ + int iCol; /* Index of column being renamed */ + char *zOld = 0; /* Old column name */ + char *zNew = 0; /* New column name */ + const char *zDb; /* Name of schema containing the table */ + int iSchema; /* Index of the schema */ + int bQuote; /* True to quote the new name */ + + /* Locate the table to be altered */ + pTab = sqlite3LocateTableItem(pParse, 0, &pSrc->a[0]); + if( !pTab ) goto exit_rename_column; + + /* Cannot alter a system table */ + if( SQLITE_OK!=isSystemTable(pParse, pTab->zName) ) goto exit_rename_column; + if( SQLITE_OK!=isRealTable(pParse, pTab) ) goto exit_rename_column; + + /* Which schema holds the table to be altered */ + iSchema = sqlite3SchemaToIndex(db, pTab->pSchema); + assert( iSchema>=0 ); + zDb = db->aDb[iSchema].zDbSName; + +#ifndef SQLITE_OMIT_AUTHORIZATION + /* Invoke the authorization callback. */ + if( sqlite3AuthCheck(pParse, SQLITE_ALTER_TABLE, zDb, pTab->zName, 0) ){ + goto exit_rename_column; + } +#endif + + /* Make sure the old name really is a column name in the table to be + ** altered. Set iCol to be the index of the column being renamed */ + zOld = sqlite3NameFromToken(db, pOld); + if( !zOld ) goto exit_rename_column; + for(iCol=0; iColnCol; iCol++){ + if( 0==sqlite3StrICmp(pTab->aCol[iCol].zName, zOld) ) break; + } + if( iCol==pTab->nCol ){ + sqlite3ErrorMsg(pParse, "no such column: \"%s\"", zOld); + goto exit_rename_column; + } + + /* Do the rename operation using a recursive UPDATE statement that + ** uses the sqlite_rename_column() SQL function to compute the new + ** CREATE statement text for the sqlite_master table. + */ + zNew = sqlite3NameFromToken(db, pNew); + if( !zNew ) goto exit_rename_column; + assert( pNew->n>0 ); + bQuote = sqlite3Isquote(pNew->z[0]); + sqlite3NestedParse(pParse, + "UPDATE \"%w\".%s SET " + "sql = sqlite_rename_column(sql, type, name, %Q, %Q, %d, %Q, %d, %d) " + "WHERE name NOT LIKE 'sqlite_%%' AND (type != 'index' OR tbl_name = %Q)" + " AND sql NOT LIKE 'create virtual%%'", + zDb, MASTER_NAME, + zDb, pTab->zName, iCol, zNew, bQuote, iSchema==1, + pTab->zName + ); + + sqlite3NestedParse(pParse, + "UPDATE temp.%s SET " + "sql = sqlite_rename_column(sql, type, name, %Q, %Q, %d, %Q, %d, 1) " + "WHERE type IN ('trigger', 'view')", + MASTER_NAME, + zDb, pTab->zName, iCol, zNew, bQuote + ); + + /* Drop and reload the database schema. */ + renameReloadSchema(pParse, iSchema); + renameTestSchema(pParse, zDb, iSchema==1); + + exit_rename_column: + sqlite3SrcListDelete(db, pSrc); + sqlite3DbFree(db, zOld); + sqlite3DbFree(db, zNew); + return; +} + +/* +** Each RenameToken object maps an element of the parse tree into +** the token that generated that element. The parse tree element +** might be one of: +** +** * A pointer to an Expr that represents an ID +** * The name of a table column in Column.zName +** +** A list of RenameToken objects can be constructed during parsing. +** Each new object is created by sqlite3RenameTokenMap(). +** As the parse tree is transformed, the sqlite3RenameTokenRemap() +** routine is used to keep the mapping current. +** +** After the parse finishes, renameTokenFind() routine can be used +** to look up the actual token value that created some element in +** the parse tree. +*/ +struct RenameToken { + void *p; /* Parse tree element created by token t */ + Token t; /* The token that created parse tree element p */ + RenameToken *pNext; /* Next is a list of all RenameToken objects */ +}; + +/* +** The context of an ALTER TABLE RENAME COLUMN operation that gets passed +** down into the Walker. +*/ +typedef struct RenameCtx RenameCtx; +struct RenameCtx { + RenameToken *pList; /* List of tokens to overwrite */ + int nList; /* Number of tokens in pList */ + int iCol; /* Index of column being renamed */ + Table *pTab; /* Table being ALTERed */ + const char *zOld; /* Old column name */ +}; + +#ifdef SQLITE_DEBUG +/* +** This function is only for debugging. It performs two tasks: +** +** 1. Checks that pointer pPtr does not already appear in the +** rename-token list. +** +** 2. Dereferences each pointer in the rename-token list. +** +** The second is most effective when debugging under valgrind or +** address-sanitizer or similar. If any of these pointers no longer +** point to valid objects, an exception is raised by the memory-checking +** tool. +** +** The point of this is to prevent comparisons of invalid pointer values. +** Even though this always seems to work, it is undefined according to the +** C standard. Example of undefined comparison: +** +** sqlite3_free(x); +** if( x==y ) ... +** +** Technically, as x no longer points into a valid object or to the byte +** following a valid object, it may not be used in comparison operations. +*/ +static void renameTokenCheckAll(Parse *pParse, void *pPtr){ + if( pParse->nErr==0 && pParse->db->mallocFailed==0 ){ + RenameToken *p; + u8 i = 0; + for(p=pParse->pRename; p; p=p->pNext){ + if( p->p ){ + assert( p->p!=pPtr ); + i += *(u8*)(p->p); + } + } + } +} +#else +# define renameTokenCheckAll(x,y) +#endif + +/* +** Add a new RenameToken object mapping parse tree element pPtr into +** token *pToken to the Parse object currently under construction. +** +** Return a copy of pPtr. +*/ +SQLITE_PRIVATE void *sqlite3RenameTokenMap(Parse *pParse, void *pPtr, Token *pToken){ + RenameToken *pNew; + assert( pPtr || pParse->db->mallocFailed ); + renameTokenCheckAll(pParse, pPtr); + pNew = sqlite3DbMallocZero(pParse->db, sizeof(RenameToken)); + if( pNew ){ + pNew->p = pPtr; + pNew->t = *pToken; + pNew->pNext = pParse->pRename; + pParse->pRename = pNew; + } + + return pPtr; +} + +/* +** It is assumed that there is already a RenameToken object associated +** with parse tree element pFrom. This function remaps the associated token +** to parse tree element pTo. +*/ +SQLITE_PRIVATE void sqlite3RenameTokenRemap(Parse *pParse, void *pTo, void *pFrom){ + RenameToken *p; + renameTokenCheckAll(pParse, pTo); + for(p=pParse->pRename; p; p=p->pNext){ + if( p->p==pFrom ){ + p->p = pTo; + break; + } + } +} + +/* +** Walker callback used by sqlite3RenameExprUnmap(). +*/ +static int renameUnmapExprCb(Walker *pWalker, Expr *pExpr){ + Parse *pParse = pWalker->pParse; + sqlite3RenameTokenRemap(pParse, 0, (void*)pExpr); + return WRC_Continue; +} + +/* +** Remove all nodes that are part of expression pExpr from the rename list. +*/ +SQLITE_PRIVATE void sqlite3RenameExprUnmap(Parse *pParse, Expr *pExpr){ + Walker sWalker; + memset(&sWalker, 0, sizeof(Walker)); + sWalker.pParse = pParse; + sWalker.xExprCallback = renameUnmapExprCb; + sqlite3WalkExpr(&sWalker, pExpr); +} + +/* +** Remove all nodes that are part of expression-list pEList from the +** rename list. +*/ +SQLITE_PRIVATE void sqlite3RenameExprlistUnmap(Parse *pParse, ExprList *pEList){ + if( pEList ){ + int i; + Walker sWalker; + memset(&sWalker, 0, sizeof(Walker)); + sWalker.pParse = pParse; + sWalker.xExprCallback = renameUnmapExprCb; + sqlite3WalkExprList(&sWalker, pEList); + for(i=0; inExpr; i++){ + sqlite3RenameTokenRemap(pParse, 0, (void*)pEList->a[i].zName); + } + } +} + +/* +** Free the list of RenameToken objects given in the second argument +*/ +static void renameTokenFree(sqlite3 *db, RenameToken *pToken){ + RenameToken *pNext; + RenameToken *p; + for(p=pToken; p; p=pNext){ + pNext = p->pNext; + sqlite3DbFree(db, p); + } +} + +/* +** Search the Parse object passed as the first argument for a RenameToken +** object associated with parse tree element pPtr. If found, remove it +** from the Parse object and add it to the list maintained by the +** RenameCtx object passed as the second argument. +*/ +static void renameTokenFind(Parse *pParse, struct RenameCtx *pCtx, void *pPtr){ + RenameToken **pp; + assert( pPtr!=0 ); + for(pp=&pParse->pRename; (*pp); pp=&(*pp)->pNext){ + if( (*pp)->p==pPtr ){ + RenameToken *pToken = *pp; + *pp = pToken->pNext; + pToken->pNext = pCtx->pList; + pCtx->pList = pToken; + pCtx->nList++; + break; + } + } +} + +/* +** This is a Walker select callback. It does nothing. It is only required +** because without a dummy callback, sqlite3WalkExpr() and similar do not +** descend into sub-select statements. +*/ +static int renameColumnSelectCb(Walker *pWalker, Select *p){ + UNUSED_PARAMETER(pWalker); + UNUSED_PARAMETER(p); + return WRC_Continue; +} + +/* +** This is a Walker expression callback. +** +** For every TK_COLUMN node in the expression tree, search to see +** if the column being references is the column being renamed by an +** ALTER TABLE statement. If it is, then attach its associated +** RenameToken object to the list of RenameToken objects being +** constructed in RenameCtx object at pWalker->u.pRename. +*/ +static int renameColumnExprCb(Walker *pWalker, Expr *pExpr){ + RenameCtx *p = pWalker->u.pRename; + if( pExpr->op==TK_TRIGGER + && pExpr->iColumn==p->iCol + && pWalker->pParse->pTriggerTab==p->pTab + ){ + renameTokenFind(pWalker->pParse, p, (void*)pExpr); + }else if( pExpr->op==TK_COLUMN + && pExpr->iColumn==p->iCol + && p->pTab==pExpr->pTab + ){ + renameTokenFind(pWalker->pParse, p, (void*)pExpr); + } + return WRC_Continue; +} + +/* +** The RenameCtx contains a list of tokens that reference a column that +** is being renamed by an ALTER TABLE statement. Return the "last" +** RenameToken in the RenameCtx and remove that RenameToken from the +** RenameContext. "Last" means the last RenameToken encountered when +** the input SQL is parsed from left to right. Repeated calls to this routine +** return all column name tokens in the order that they are encountered +** in the SQL statement. +*/ +static RenameToken *renameColumnTokenNext(RenameCtx *pCtx){ + RenameToken *pBest = pCtx->pList; + RenameToken *pToken; + RenameToken **pp; + + for(pToken=pBest->pNext; pToken; pToken=pToken->pNext){ + if( pToken->t.z>pBest->t.z ) pBest = pToken; + } + for(pp=&pCtx->pList; *pp!=pBest; pp=&(*pp)->pNext); + *pp = pBest->pNext; + + return pBest; +} + +/* +** An error occured while parsing or otherwise processing a database +** object (either pParse->pNewTable, pNewIndex or pNewTrigger) as part of an +** ALTER TABLE RENAME COLUMN program. The error message emitted by the +** sub-routine is currently stored in pParse->zErrMsg. This function +** adds context to the error message and then stores it in pCtx. +*/ +static void renameColumnParseError( + sqlite3_context *pCtx, + int bPost, + sqlite3_value *pType, + sqlite3_value *pObject, + Parse *pParse +){ + const char *zT = (const char*)sqlite3_value_text(pType); + const char *zN = (const char*)sqlite3_value_text(pObject); + char *zErr; + + zErr = sqlite3_mprintf("error in %s %s%s: %s", + zT, zN, (bPost ? " after rename" : ""), + pParse->zErrMsg + ); + sqlite3_result_error(pCtx, zErr, -1); + sqlite3_free(zErr); +} + +/* +** For each name in the the expression-list pEList (i.e. each +** pEList->a[i].zName) that matches the string in zOld, extract the +** corresponding rename-token from Parse object pParse and add it +** to the RenameCtx pCtx. +*/ +static void renameColumnElistNames( + Parse *pParse, + RenameCtx *pCtx, + ExprList *pEList, + const char *zOld +){ + if( pEList ){ + int i; + for(i=0; inExpr; i++){ + char *zName = pEList->a[i].zName; + if( 0==sqlite3_stricmp(zName, zOld) ){ + renameTokenFind(pParse, pCtx, (void*)zName); + } + } + } +} + +/* +** For each name in the the id-list pIdList (i.e. each pIdList->a[i].zName) +** that matches the string in zOld, extract the corresponding rename-token +** from Parse object pParse and add it to the RenameCtx pCtx. +*/ +static void renameColumnIdlistNames( + Parse *pParse, + RenameCtx *pCtx, + IdList *pIdList, + const char *zOld +){ + if( pIdList ){ + int i; + for(i=0; inId; i++){ + char *zName = pIdList->a[i].zName; + if( 0==sqlite3_stricmp(zName, zOld) ){ + renameTokenFind(pParse, pCtx, (void*)zName); + } + } + } +} + +/* +** Parse the SQL statement zSql using Parse object (*p). The Parse object +** is initialized by this function before it is used. +*/ +static int renameParseSql( + Parse *p, /* Memory to use for Parse object */ + const char *zDb, /* Name of schema SQL belongs to */ + int bTable, /* 1 -> RENAME TABLE, 0 -> RENAME COLUMN */ + sqlite3 *db, /* Database handle */ + const char *zSql, /* SQL to parse */ + int bTemp /* True if SQL is from temp schema */ +){ + int rc; + char *zErr = 0; + + db->init.iDb = bTemp ? 1 : sqlite3FindDbName(db, zDb); + + /* Parse the SQL statement passed as the first argument. If no error + ** occurs and the parse does not result in a new table, index or + ** trigger object, the database must be corrupt. */ + memset(p, 0, sizeof(Parse)); + p->eParseMode = (bTable ? PARSE_MODE_RENAME_TABLE : PARSE_MODE_RENAME_COLUMN); + p->db = db; + p->nQueryLoop = 1; + rc = sqlite3RunParser(p, zSql, &zErr); + assert( p->zErrMsg==0 ); + assert( rc!=SQLITE_OK || zErr==0 ); + assert( (0!=p->pNewTable) + (0!=p->pNewIndex) + (0!=p->pNewTrigger)<2 ); + p->zErrMsg = zErr; + if( db->mallocFailed ) rc = SQLITE_NOMEM; + if( rc==SQLITE_OK + && p->pNewTable==0 && p->pNewIndex==0 && p->pNewTrigger==0 + ){ + rc = SQLITE_CORRUPT_BKPT; + } + +#ifdef SQLITE_DEBUG + /* Ensure that all mappings in the Parse.pRename list really do map to + ** a part of the input string. */ + if( rc==SQLITE_OK ){ + int nSql = sqlite3Strlen30(zSql); + RenameToken *pToken; + for(pToken=p->pRename; pToken; pToken=pToken->pNext){ + assert( pToken->t.z>=zSql && &pToken->t.z[pToken->t.n]<=&zSql[nSql] ); + } + } +#endif + + db->init.iDb = 0; + return rc; +} + +/* +** This function edits SQL statement zSql, replacing each token identified +** by the linked list pRename with the text of zNew. If argument bQuote is +** true, then zNew is always quoted first. If no error occurs, the result +** is loaded into context object pCtx as the result. +** +** Or, if an error occurs (i.e. an OOM condition), an error is left in +** pCtx and an SQLite error code returned. +*/ +static int renameEditSql( + sqlite3_context *pCtx, /* Return result here */ + RenameCtx *pRename, /* Rename context */ + const char *zSql, /* SQL statement to edit */ + const char *zNew, /* New token text */ + int bQuote /* True to always quote token */ +){ + int nNew = sqlite3Strlen30(zNew); + int nSql = sqlite3Strlen30(zSql); + sqlite3 *db = sqlite3_context_db_handle(pCtx); + int rc = SQLITE_OK; + char *zQuot; + char *zOut; + int nQuot; + + /* Set zQuot to point to a buffer containing a quoted copy of the + ** identifier zNew. If the corresponding identifier in the original + ** ALTER TABLE statement was quoted (bQuote==1), then set zNew to + ** point to zQuot so that all substitutions are made using the + ** quoted version of the new column name. */ + zQuot = sqlite3MPrintf(db, "\"%w\"", zNew); + if( zQuot==0 ){ + return SQLITE_NOMEM; + }else{ + nQuot = sqlite3Strlen30(zQuot); + } + if( bQuote ){ + zNew = zQuot; + nNew = nQuot; + } + + /* At this point pRename->pList contains a list of RenameToken objects + ** corresponding to all tokens in the input SQL that must be replaced + ** with the new column name. All that remains is to construct and + ** return the edited SQL string. */ + assert( nQuot>=nNew ); + zOut = sqlite3DbMallocZero(db, nSql + pRename->nList*nQuot + 1); + if( zOut ){ + int nOut = nSql; + memcpy(zOut, zSql, nSql); + while( pRename->pList ){ + int iOff; /* Offset of token to replace in zOut */ + RenameToken *pBest = renameColumnTokenNext(pRename); + + u32 nReplace; + const char *zReplace; + if( sqlite3IsIdChar(*pBest->t.z) ){ + nReplace = nNew; + zReplace = zNew; + }else{ + nReplace = nQuot; + zReplace = zQuot; + } + + iOff = pBest->t.z - zSql; + if( pBest->t.n!=nReplace ){ + memmove(&zOut[iOff + nReplace], &zOut[iOff + pBest->t.n], + nOut - (iOff + pBest->t.n) + ); + nOut += nReplace - pBest->t.n; + zOut[nOut] = '\0'; + } + memcpy(&zOut[iOff], zReplace, nReplace); + sqlite3DbFree(db, pBest); + } + + sqlite3_result_text(pCtx, zOut, -1, SQLITE_TRANSIENT); + sqlite3DbFree(db, zOut); + }else{ + rc = SQLITE_NOMEM; + } + + sqlite3_free(zQuot); + return rc; +} + +/* +** Resolve all symbols in the trigger at pParse->pNewTrigger, assuming +** it was read from the schema of database zDb. Return SQLITE_OK if +** successful. Otherwise, return an SQLite error code and leave an error +** message in the Parse object. +*/ +static int renameResolveTrigger(Parse *pParse, const char *zDb){ + sqlite3 *db = pParse->db; + Trigger *pNew = pParse->pNewTrigger; + TriggerStep *pStep; + NameContext sNC; + int rc = SQLITE_OK; + + memset(&sNC, 0, sizeof(sNC)); + sNC.pParse = pParse; + assert( pNew->pTabSchema ); + pParse->pTriggerTab = sqlite3FindTable(db, pNew->table, + db->aDb[sqlite3SchemaToIndex(db, pNew->pTabSchema)].zDbSName + ); + pParse->eTriggerOp = pNew->op; + + /* Resolve symbols in WHEN clause */ + if( pNew->pWhen ){ + rc = sqlite3ResolveExprNames(&sNC, pNew->pWhen); + } + + for(pStep=pNew->step_list; rc==SQLITE_OK && pStep; pStep=pStep->pNext){ + if( pStep->pSelect ){ + sqlite3SelectPrep(pParse, pStep->pSelect, &sNC); + if( pParse->nErr ) rc = pParse->rc; + } + if( rc==SQLITE_OK && pStep->zTarget ){ + Table *pTarget = sqlite3LocateTable(pParse, 0, pStep->zTarget, zDb); + if( pTarget==0 ){ + rc = SQLITE_ERROR; + }else if( SQLITE_OK==(rc = sqlite3ViewGetColumnNames(pParse, pTarget)) ){ + SrcList sSrc; + memset(&sSrc, 0, sizeof(sSrc)); + sSrc.nSrc = 1; + sSrc.a[0].zName = pStep->zTarget; + sSrc.a[0].pTab = pTarget; + sNC.pSrcList = &sSrc; + if( pStep->pWhere ){ + rc = sqlite3ResolveExprNames(&sNC, pStep->pWhere); + } + if( rc==SQLITE_OK ){ + rc = sqlite3ResolveExprListNames(&sNC, pStep->pExprList); + } + assert( !pStep->pUpsert || (!pStep->pWhere && !pStep->pExprList) ); + if( pStep->pUpsert ){ + Upsert *pUpsert = pStep->pUpsert; + assert( rc==SQLITE_OK ); + pUpsert->pUpsertSrc = &sSrc; + sNC.uNC.pUpsert = pUpsert; + sNC.ncFlags = NC_UUpsert; + rc = sqlite3ResolveExprListNames(&sNC, pUpsert->pUpsertTarget); + if( rc==SQLITE_OK ){ + ExprList *pUpsertSet = pUpsert->pUpsertSet; + rc = sqlite3ResolveExprListNames(&sNC, pUpsertSet); + } + if( rc==SQLITE_OK ){ + rc = sqlite3ResolveExprNames(&sNC, pUpsert->pUpsertWhere); + } + if( rc==SQLITE_OK ){ + rc = sqlite3ResolveExprNames(&sNC, pUpsert->pUpsertTargetWhere); + } + sNC.ncFlags = 0; + } + } + } + } + return rc; +} + +/* +** Invoke sqlite3WalkExpr() or sqlite3WalkSelect() on all Select or Expr +** objects that are part of the trigger passed as the second argument. +*/ +static void renameWalkTrigger(Walker *pWalker, Trigger *pTrigger){ + TriggerStep *pStep; + + /* Find tokens to edit in WHEN clause */ + sqlite3WalkExpr(pWalker, pTrigger->pWhen); + + /* Find tokens to edit in trigger steps */ + for(pStep=pTrigger->step_list; pStep; pStep=pStep->pNext){ + sqlite3WalkSelect(pWalker, pStep->pSelect); + sqlite3WalkExpr(pWalker, pStep->pWhere); + sqlite3WalkExprList(pWalker, pStep->pExprList); + if( pStep->pUpsert ){ + Upsert *pUpsert = pStep->pUpsert; + sqlite3WalkExprList(pWalker, pUpsert->pUpsertTarget); + sqlite3WalkExprList(pWalker, pUpsert->pUpsertSet); + sqlite3WalkExpr(pWalker, pUpsert->pUpsertWhere); + sqlite3WalkExpr(pWalker, pUpsert->pUpsertTargetWhere); + } + } +} + +/* +** Free the contents of Parse object (*pParse). Do not free the memory +** occupied by the Parse object itself. +*/ +static void renameParseCleanup(Parse *pParse){ + sqlite3 *db = pParse->db; + if( pParse->pVdbe ){ + sqlite3VdbeFinalize(pParse->pVdbe); + } + sqlite3DeleteTable(db, pParse->pNewTable); + if( pParse->pNewIndex ) sqlite3FreeIndex(db, pParse->pNewIndex); + sqlite3DeleteTrigger(db, pParse->pNewTrigger); + sqlite3DbFree(db, pParse->zErrMsg); + renameTokenFree(db, pParse->pRename); + sqlite3ParserReset(pParse); +} + +/* +** SQL function: +** +** sqlite_rename_column(zSql, iCol, bQuote, zNew, zTable, zOld) +** +** 0. zSql: SQL statement to rewrite +** 1. type: Type of object ("table", "view" etc.) +** 2. object: Name of object +** 3. Database: Database name (e.g. "main") +** 4. Table: Table name +** 5. iCol: Index of column to rename +** 6. zNew: New column name +** 7. bQuote: Non-zero if the new column name should be quoted. +** 8. bTemp: True if zSql comes from temp schema +** +** Do a column rename operation on the CREATE statement given in zSql. +** The iCol-th column (left-most is 0) of table zTable is renamed from zCol +** into zNew. The name should be quoted if bQuote is true. +** +** This function is used internally by the ALTER TABLE RENAME COLUMN command. +** Though accessible to application code, it is not intended for use by +** applications. The existance of this function, and the way it works, +** is subject to change without notice. +** +** If any of the parameters are out-of-bounds, then simply return NULL. +** An out-of-bounds parameter can only occur when the application calls +** this function directly. The parameters will always be well-formed when +** this routine is invoked by the bytecode for a legitimate ALTER TABLE +** statement. +*/ +static void renameColumnFunc( + sqlite3_context *context, + int NotUsed, + sqlite3_value **argv +){ + sqlite3 *db = sqlite3_context_db_handle(context); + RenameCtx sCtx; + const char *zSql = (const char*)sqlite3_value_text(argv[0]); + const char *zDb = (const char*)sqlite3_value_text(argv[3]); + const char *zTable = (const char*)sqlite3_value_text(argv[4]); + int iCol = sqlite3_value_int(argv[5]); + const char *zNew = (const char*)sqlite3_value_text(argv[6]); + int bQuote = sqlite3_value_int(argv[7]); + int bTemp = sqlite3_value_int(argv[8]); + const char *zOld; + int rc; + Parse sParse; + Walker sWalker; + Index *pIdx; + int i; + Table *pTab; +#ifndef SQLITE_OMIT_AUTHORIZATION + sqlite3_xauth xAuth = db->xAuth; +#endif + + UNUSED_PARAMETER(NotUsed); + if( zSql==0 ) return; + if( zTable==0 ) return; + if( zNew==0 ) return; + if( iCol<0 ) return; + sqlite3BtreeEnterAll(db); + pTab = sqlite3FindTable(db, zTable, zDb); + if( pTab==0 || iCol>=pTab->nCol ){ + sqlite3BtreeLeaveAll(db); + return; + } + zOld = pTab->aCol[iCol].zName; + memset(&sCtx, 0, sizeof(sCtx)); + sCtx.iCol = ((iCol==pTab->iPKey) ? -1 : iCol); + +#ifndef SQLITE_OMIT_AUTHORIZATION + db->xAuth = 0; +#endif + rc = renameParseSql(&sParse, zDb, 0, db, zSql, bTemp); + + /* Find tokens that need to be replaced. */ + memset(&sWalker, 0, sizeof(Walker)); + sWalker.pParse = &sParse; + sWalker.xExprCallback = renameColumnExprCb; + sWalker.xSelectCallback = renameColumnSelectCb; + sWalker.u.pRename = &sCtx; + + sCtx.pTab = pTab; + if( rc!=SQLITE_OK ) goto renameColumnFunc_done; + if( sParse.pNewTable ){ + Select *pSelect = sParse.pNewTable->pSelect; + if( pSelect ){ + sParse.rc = SQLITE_OK; + sqlite3SelectPrep(&sParse, sParse.pNewTable->pSelect, 0); + rc = (db->mallocFailed ? SQLITE_NOMEM : sParse.rc); + if( rc==SQLITE_OK ){ + sqlite3WalkSelect(&sWalker, pSelect); + } + if( rc!=SQLITE_OK ) goto renameColumnFunc_done; + }else{ + /* A regular table */ + int bFKOnly = sqlite3_stricmp(zTable, sParse.pNewTable->zName); + FKey *pFKey; + assert( sParse.pNewTable->pSelect==0 ); + sCtx.pTab = sParse.pNewTable; + if( bFKOnly==0 ){ + renameTokenFind( + &sParse, &sCtx, (void*)sParse.pNewTable->aCol[iCol].zName + ); + if( sCtx.iCol<0 ){ + renameTokenFind(&sParse, &sCtx, (void*)&sParse.pNewTable->iPKey); + } + sqlite3WalkExprList(&sWalker, sParse.pNewTable->pCheck); + for(pIdx=sParse.pNewTable->pIndex; pIdx; pIdx=pIdx->pNext){ + sqlite3WalkExprList(&sWalker, pIdx->aColExpr); + } + } + + for(pFKey=sParse.pNewTable->pFKey; pFKey; pFKey=pFKey->pNextFrom){ + for(i=0; inCol; i++){ + if( bFKOnly==0 && pFKey->aCol[i].iFrom==iCol ){ + renameTokenFind(&sParse, &sCtx, (void*)&pFKey->aCol[i]); + } + if( 0==sqlite3_stricmp(pFKey->zTo, zTable) + && 0==sqlite3_stricmp(pFKey->aCol[i].zCol, zOld) + ){ + renameTokenFind(&sParse, &sCtx, (void*)pFKey->aCol[i].zCol); + } + } + } + } + }else if( sParse.pNewIndex ){ + sqlite3WalkExprList(&sWalker, sParse.pNewIndex->aColExpr); + sqlite3WalkExpr(&sWalker, sParse.pNewIndex->pPartIdxWhere); + }else{ + /* A trigger */ + TriggerStep *pStep; + rc = renameResolveTrigger(&sParse, (bTemp ? 0 : zDb)); + if( rc!=SQLITE_OK ) goto renameColumnFunc_done; + + for(pStep=sParse.pNewTrigger->step_list; pStep; pStep=pStep->pNext){ + if( pStep->zTarget ){ + Table *pTarget = sqlite3LocateTable(&sParse, 0, pStep->zTarget, zDb); + if( pTarget==pTab ){ + if( pStep->pUpsert ){ + ExprList *pUpsertSet = pStep->pUpsert->pUpsertSet; + renameColumnElistNames(&sParse, &sCtx, pUpsertSet, zOld); + } + renameColumnIdlistNames(&sParse, &sCtx, pStep->pIdList, zOld); + renameColumnElistNames(&sParse, &sCtx, pStep->pExprList, zOld); + } + } + } + + + /* Find tokens to edit in UPDATE OF clause */ + if( sParse.pTriggerTab==pTab ){ + renameColumnIdlistNames(&sParse, &sCtx,sParse.pNewTrigger->pColumns,zOld); + } + + /* Find tokens to edit in various expressions and selects */ + renameWalkTrigger(&sWalker, sParse.pNewTrigger); + } + + assert( rc==SQLITE_OK ); + rc = renameEditSql(context, &sCtx, zSql, zNew, bQuote); + +renameColumnFunc_done: + if( rc!=SQLITE_OK ){ + if( sParse.zErrMsg ){ + renameColumnParseError(context, 0, argv[1], argv[2], &sParse); + }else{ + sqlite3_result_error_code(context, rc); + } + } + + renameParseCleanup(&sParse); + renameTokenFree(db, sCtx.pList); +#ifndef SQLITE_OMIT_AUTHORIZATION + db->xAuth = xAuth; +#endif + sqlite3BtreeLeaveAll(db); +} + +/* +** Walker expression callback used by "RENAME TABLE". +*/ +static int renameTableExprCb(Walker *pWalker, Expr *pExpr){ + RenameCtx *p = pWalker->u.pRename; + if( pExpr->op==TK_COLUMN && p->pTab==pExpr->pTab ){ + renameTokenFind(pWalker->pParse, p, (void*)&pExpr->pTab); + } + return WRC_Continue; +} + +/* +** Walker select callback used by "RENAME TABLE". +*/ +static int renameTableSelectCb(Walker *pWalker, Select *pSelect){ + int i; + RenameCtx *p = pWalker->u.pRename; + SrcList *pSrc = pSelect->pSrc; + for(i=0; inSrc; i++){ + struct SrcList_item *pItem = &pSrc->a[i]; + if( pItem->pTab==p->pTab ){ + renameTokenFind(pWalker->pParse, p, pItem->zName); + } + } + + return WRC_Continue; +} + + +/* +** This C function implements an SQL user function that is used by SQL code +** generated by the ALTER TABLE ... RENAME command to modify the definition +** of any foreign key constraints that use the table being renamed as the +** parent table. It is passed three arguments: +** +** 0: The database containing the table being renamed. +** 1. type: Type of object ("table", "view" etc.) +** 2. object: Name of object +** 3: The complete text of the schema statement being modified, +** 4: The old name of the table being renamed, and +** 5: The new name of the table being renamed. +** 6: True if the schema statement comes from the temp db. +** +** It returns the new schema statement. For example: +** +** sqlite_rename_table('main', 'CREATE TABLE t1(a REFERENCES t2)','t2','t3',0) +** -> 'CREATE TABLE t1(a REFERENCES t3)' +*/ +static void renameTableFunc( + sqlite3_context *context, + int NotUsed, + sqlite3_value **argv +){ + sqlite3 *db = sqlite3_context_db_handle(context); + const char *zDb = (const char*)sqlite3_value_text(argv[0]); + const char *zInput = (const char*)sqlite3_value_text(argv[3]); + const char *zOld = (const char*)sqlite3_value_text(argv[4]); + const char *zNew = (const char*)sqlite3_value_text(argv[5]); + int bTemp = sqlite3_value_int(argv[6]); + UNUSED_PARAMETER(NotUsed); + + if( zInput && zOld && zNew ){ + Parse sParse; + int rc; + int bQuote = 1; + RenameCtx sCtx; + Walker sWalker; + +#ifndef SQLITE_OMIT_AUTHORIZATION + sqlite3_xauth xAuth = db->xAuth; + db->xAuth = 0; +#endif + + sqlite3BtreeEnterAll(db); + + memset(&sCtx, 0, sizeof(RenameCtx)); + sCtx.pTab = sqlite3FindTable(db, zOld, zDb); + memset(&sWalker, 0, sizeof(Walker)); + sWalker.pParse = &sParse; + sWalker.xExprCallback = renameTableExprCb; + sWalker.xSelectCallback = renameTableSelectCb; + sWalker.u.pRename = &sCtx; + + rc = renameParseSql(&sParse, zDb, 1, db, zInput, bTemp); + + if( rc==SQLITE_OK ){ + int isLegacy = (db->flags & SQLITE_LegacyAlter); + if( sParse.pNewTable ){ + Table *pTab = sParse.pNewTable; + + if( pTab->pSelect ){ + if( isLegacy==0 ){ + NameContext sNC; + memset(&sNC, 0, sizeof(sNC)); + sNC.pParse = &sParse; + + sqlite3SelectPrep(&sParse, pTab->pSelect, &sNC); + if( sParse.nErr ) rc = sParse.rc; + sqlite3WalkSelect(&sWalker, pTab->pSelect); + } + }else{ + /* Modify any FK definitions to point to the new table. */ +#ifndef SQLITE_OMIT_FOREIGN_KEY + if( db->flags & SQLITE_ForeignKeys ){ + FKey *pFKey; + for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){ + if( sqlite3_stricmp(pFKey->zTo, zOld)==0 ){ + renameTokenFind(&sParse, &sCtx, (void*)pFKey->zTo); + } + } + } +#endif + + /* If this is the table being altered, fix any table refs in CHECK + ** expressions. Also update the name that appears right after the + ** "CREATE [VIRTUAL] TABLE" bit. */ + if( sqlite3_stricmp(zOld, pTab->zName)==0 ){ + sCtx.pTab = pTab; + if( isLegacy==0 ){ + sqlite3WalkExprList(&sWalker, pTab->pCheck); + } + renameTokenFind(&sParse, &sCtx, pTab->zName); + } + } + } + + else if( sParse.pNewIndex ){ + renameTokenFind(&sParse, &sCtx, sParse.pNewIndex->zName); + if( isLegacy==0 ){ + sqlite3WalkExpr(&sWalker, sParse.pNewIndex->pPartIdxWhere); + } + } + +#ifndef SQLITE_OMIT_TRIGGER + else{ + Trigger *pTrigger = sParse.pNewTrigger; + TriggerStep *pStep; + if( 0==sqlite3_stricmp(sParse.pNewTrigger->table, zOld) + && sCtx.pTab->pSchema==pTrigger->pTabSchema + ){ + renameTokenFind(&sParse, &sCtx, sParse.pNewTrigger->table); + } + + if( isLegacy==0 ){ + rc = renameResolveTrigger(&sParse, bTemp ? 0 : zDb); + if( rc==SQLITE_OK ){ + renameWalkTrigger(&sWalker, pTrigger); + for(pStep=pTrigger->step_list; pStep; pStep=pStep->pNext){ + if( pStep->zTarget && 0==sqlite3_stricmp(pStep->zTarget, zOld) ){ + renameTokenFind(&sParse, &sCtx, pStep->zTarget); + } + } + } + } + } +#endif + } + + if( rc==SQLITE_OK ){ + rc = renameEditSql(context, &sCtx, zInput, zNew, bQuote); + } + if( rc!=SQLITE_OK ){ + if( sParse.zErrMsg ){ + renameColumnParseError(context, 0, argv[1], argv[2], &sParse); + }else{ + sqlite3_result_error_code(context, rc); + } + } + + renameParseCleanup(&sParse); + renameTokenFree(db, sCtx.pList); + sqlite3BtreeLeaveAll(db); +#ifndef SQLITE_OMIT_AUTHORIZATION + db->xAuth = xAuth; +#endif + } + + return; +} + +/* +** An SQL user function that checks that there are no parse or symbol +** resolution problems in a CREATE TRIGGER|TABLE|VIEW|INDEX statement. +** After an ALTER TABLE .. RENAME operation is performed and the schema +** reloaded, this function is called on each SQL statement in the schema +** to ensure that it is still usable. +** +** 0: Database name ("main", "temp" etc.). +** 1: SQL statement. +** 2: Object type ("view", "table", "trigger" or "index"). +** 3: Object name. +** 4: True if object is from temp schema. +** +** Unless it finds an error, this function normally returns NULL. However, it +** returns integer value 1 if: +** +** * the SQL argument creates a trigger, and +** * the table that the trigger is attached to is in database zDb. +*/ +static void renameTableTest( + sqlite3_context *context, + int NotUsed, + sqlite3_value **argv +){ + sqlite3 *db = sqlite3_context_db_handle(context); + char const *zDb = (const char*)sqlite3_value_text(argv[0]); + char const *zInput = (const char*)sqlite3_value_text(argv[1]); + int bTemp = sqlite3_value_int(argv[4]); + int isLegacy = (db->flags & SQLITE_LegacyAlter); + +#ifndef SQLITE_OMIT_AUTHORIZATION + sqlite3_xauth xAuth = db->xAuth; + db->xAuth = 0; +#endif + + UNUSED_PARAMETER(NotUsed); + if( zDb && zInput ){ + int rc; + Parse sParse; + rc = renameParseSql(&sParse, zDb, 1, db, zInput, bTemp); + if( rc==SQLITE_OK ){ + if( isLegacy==0 && sParse.pNewTable && sParse.pNewTable->pSelect ){ + NameContext sNC; + memset(&sNC, 0, sizeof(sNC)); + sNC.pParse = &sParse; + sqlite3SelectPrep(&sParse, sParse.pNewTable->pSelect, &sNC); + if( sParse.nErr ) rc = sParse.rc; + } + + else if( sParse.pNewTrigger ){ + if( isLegacy==0 ){ + rc = renameResolveTrigger(&sParse, bTemp ? 0 : zDb); + } + if( rc==SQLITE_OK ){ + int i1 = sqlite3SchemaToIndex(db, sParse.pNewTrigger->pTabSchema); + int i2 = sqlite3FindDbName(db, zDb); + if( i1==i2 ) sqlite3_result_int(context, 1); + } + } + } + + if( rc!=SQLITE_OK ){ + renameColumnParseError(context, 1, argv[2], argv[3], &sParse); + } + renameParseCleanup(&sParse); + } + +#ifndef SQLITE_OMIT_AUTHORIZATION + db->xAuth = xAuth; +#endif +} + +/* +** Register built-in functions used to help implement ALTER TABLE +*/ +SQLITE_PRIVATE void sqlite3AlterFunctions(void){ + static FuncDef aAlterTableFuncs[] = { + FUNCTION(sqlite_rename_column, 9, 0, 0, renameColumnFunc), + FUNCTION(sqlite_rename_table, 7, 0, 0, renameTableFunc), + FUNCTION(sqlite_rename_test, 5, 0, 0, renameTableTest), + }; + sqlite3InsertBuiltinFuncs(aAlterTableFuncs, ArraySize(aAlterTableFuncs)); +} #endif /* SQLITE_ALTER_TABLE */ /************** End of alter.c ***********************************************/ @@ -101567,6 +103226,7 @@ static const FuncDef statInitFuncdef = { 0, /* pNext */ statInit, /* xSFunc */ 0, /* xFinalize */ + 0, 0, /* xValue, xInverse */ "stat_init", /* zName */ {0} }; @@ -101883,6 +103543,7 @@ static const FuncDef statPushFuncdef = { 0, /* pNext */ statPush, /* xSFunc */ 0, /* xFinalize */ + 0, 0, /* xValue, xInverse */ "stat_push", /* zName */ {0} }; @@ -102034,6 +103695,7 @@ static const FuncDef statGetFuncdef = { 0, /* pNext */ statGet, /* xSFunc */ 0, /* xFinalize */ + 0, 0, /* xValue, xInverse */ "stat_get", /* zName */ {0} }; @@ -102353,10 +104015,7 @@ static void analyzeOneTable( callStatGet(v, regStat4, STAT_GET_NLT, regLt); callStatGet(v, regStat4, STAT_GET_NDLT, regDLt); sqlite3VdbeAddOp4Int(v, seekOp, iTabCur, addrNext, regSampleRowid, 0); - /* We know that the regSampleRowid row exists because it was read by - ** the previous loop. Thus the not-found jump of seekOp will never - ** be taken */ - VdbeCoverageNeverTaken(v); + VdbeCoverage(v); #ifdef SQLITE_ENABLE_STAT3 sqlite3ExprCodeLoadIndexColumn(pParse, pIdx, iTabCur, 0, regSample); #else @@ -102996,7 +104655,7 @@ SQLITE_PRIVATE int sqlite3AnalysisLoad(sqlite3 *db, int iDb){ /* Load the statistics from the sqlite_stat4 table. */ #ifdef SQLITE_ENABLE_STAT3_OR_STAT4 - if( rc==SQLITE_OK && OptimizationEnabled(db, SQLITE_Stat34) ){ + if( rc==SQLITE_OK ){ db->lookaside.bDisable++; rc = loadStat4(db, sInfo.zDatabase); db->lookaside.bDisable--; @@ -103435,6 +105094,7 @@ SQLITE_PRIVATE void sqlite3Detach(Parse *pParse, Expr *pDbname){ 0, /* pNext */ detachFunc, /* xSFunc */ 0, /* xFinalize */ + 0, 0, /* xValue, xInverse */ "sqlite_detach", /* zName */ {0} }; @@ -103454,6 +105114,7 @@ SQLITE_PRIVATE void sqlite3Attach(Parse *pParse, Expr *p, Expr *pDbname, Expr *p 0, /* pNext */ attachFunc, /* xSFunc */ 0, /* xFinalize */ + 0, 0, /* xValue, xInverse */ "sqlite_attach", /* zName */ {0} }; @@ -103726,7 +105387,7 @@ SQLITE_API int sqlite3_set_authorizer( sqlite3_mutex_enter(db->mutex); db->xAuth = (sqlite3_xauth)xAuth; db->pAuthArg = pArg; - sqlite3ExpirePreparedStatements(db); + sqlite3ExpirePreparedStatements(db, 0); sqlite3_mutex_leave(db->mutex); return SQLITE_OK; } @@ -103855,7 +105516,7 @@ SQLITE_PRIVATE int sqlite3AuthCheck( /* Don't do any authorization checks if the database is initialising ** or if the parser is being invoked from within sqlite3_declare_vtab. */ - if( db->init.busy || IN_DECLARE_VTAB ){ + if( db->init.busy || IN_SPECIAL_PARSE ){ return SQLITE_OK; } @@ -104147,7 +105808,6 @@ SQLITE_PRIVATE void sqlite3FinishCoding(Parse *pParse){ /* Get the VDBE program ready for execution */ if( v && pParse->nErr==0 && !db->mallocFailed ){ - assert( pParse->iCacheLevel==0 ); /* Disables and re-enables match */ /* A minimum of one cursor is required if autoincrement is used * See ticket [a696379c1f08866] */ if( pParse->pAinc!=0 && pParse->nTab==0 ) pParse->nTab = 1; @@ -104362,7 +106022,7 @@ SQLITE_PRIVATE Index *sqlite3FindIndex(sqlite3 *db, const char *zName, const cha /* ** Reclaim the memory used by an index */ -static void freeIndex(sqlite3 *db, Index *p){ +SQLITE_PRIVATE void sqlite3FreeIndex(sqlite3 *db, Index *p){ #ifndef SQLITE_OMIT_ANALYZE sqlite3DeleteIndexSamples(db, p); #endif @@ -104402,7 +106062,7 @@ SQLITE_PRIVATE void sqlite3UnlinkAndDeleteIndex(sqlite3 *db, int iDb, const char p->pNext = pIndex->pNext; } } - freeIndex(db, pIndex); + sqlite3FreeIndex(db, pIndex); } db->mDbFlags |= DBFLAG_SchemaChange; } @@ -104548,7 +106208,7 @@ static void SQLITE_NOINLINE deleteTable(sqlite3 *db, Table *pTable){ assert( db==0 || sqlite3SchemaMutexHeld(db, 0, pIndex->pSchema) ); assert( pOld==pIndex || pOld==0 ); } - freeIndex(db, pIndex); + sqlite3FreeIndex(db, pIndex); } /* Delete any foreign keys attached to this table. */ @@ -104706,7 +106366,7 @@ SQLITE_PRIVATE int sqlite3TwoPartName( return -1; } }else{ - assert( db->init.iDb==0 || db->init.busy + assert( db->init.iDb==0 || db->init.busy || IN_RENAME_OBJECT || (db->mDbFlags & DBFLAG_Vacuum)!=0); iDb = db->init.iDb; *pUnqual = pName1; @@ -104801,6 +106461,9 @@ SQLITE_PRIVATE void sqlite3StartTable( } if( !OMIT_TEMPDB && isTemp ) iDb = 1; zName = sqlite3NameFromToken(db, pName); + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenMap(pParse, (void*)zName, pName); + } } pParse->sNameToken = *pName; if( zName==0 ) return; @@ -104836,7 +106499,7 @@ SQLITE_PRIVATE void sqlite3StartTable( ** and types will be used, so there is no need to test for namespace ** collisions. */ - if( !IN_DECLARE_VTAB ){ + if( !IN_SPECIAL_PARSE ){ char *zDb = db->aDb[iDb].zDbSName; if( SQLITE_OK!=sqlite3ReadSchema(pParse) ){ goto begin_table_error; @@ -104995,6 +106658,7 @@ SQLITE_PRIVATE void sqlite3AddColumn(Parse *pParse, Token *pName, Token *pType){ } z = sqlite3DbMallocRaw(db, pName->n + pType->n + 2); if( z==0 ) return; + if( IN_RENAME_OBJECT ) sqlite3RenameTokenMap(pParse, (void*)z, pName); memcpy(z, pName->z, pName->n); z[pName->n] = 0; sqlite3Dequote(z); @@ -105201,6 +106865,9 @@ SQLITE_PRIVATE void sqlite3AddDefaultValue( sqlite3DbFree(db, x.u.zToken); } } + if( IN_RENAME_OBJECT ){ + sqlite3RenameExprUnmap(pParse, pExpr); + } sqlite3ExprDelete(db, pExpr); } @@ -105292,6 +106959,9 @@ SQLITE_PRIVATE void sqlite3AddPrimaryKey( && sqlite3StrICmp(sqlite3ColumnType(pCol,""), "INTEGER")==0 && sortOrder!=SQLITE_SO_DESC ){ + if( IN_RENAME_OBJECT && pList ){ + sqlite3RenameTokenRemap(pParse, &pTab->iPKey, pList->a[0].pExpr); + } pTab->iPKey = iCol; pTab->keyConf = (u8)onError; assert( autoInc==0 || autoInc==1 ); @@ -105617,6 +107287,31 @@ static int hasColumn(const i16 *aiCol, int nCol, int x){ return 0; } +/* Recompute the colNotIdxed field of the Index. +** +** colNotIdxed is a bitmask that has a 0 bit representing each indexed +** columns that are within the first 63 columns of the table. The +** high-order bit of colNotIdxed is always 1. All unindexed columns +** of the table have a 1. +** +** The colNotIdxed mask is AND-ed with the SrcList.a[].colUsed mask +** to determine if the index is covering index. +*/ +static void recomputeColumnsNotIndexed(Index *pIdx){ + Bitmask m = 0; + int j; + for(j=pIdx->nColumn-1; j>=0; j--){ + int x = pIdx->aiColumn[j]; + if( x>=0 ){ + testcase( x==BMS-1 ); + testcase( x==BMS-2 ); + if( xcolNotIdxed = ~m; + assert( (pIdx->colNotIdxed>>63)==1 ); +} + /* ** This routine runs at the end of parsing a CREATE TABLE statement that ** has a WITHOUT ROWID clause. The job of this routine is to convert both @@ -105659,10 +107354,6 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){ } } - /* The remaining transformations only apply to b-tree tables, not to - ** virtual tables */ - if( IN_DECLARE_VTAB ) return; - /* Convert the P3 operand of the OP_CreateBtree opcode from BTREE_INTKEY ** into BTREE_BLOBKEY. */ @@ -105685,7 +107376,7 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){ assert( pParse->pNewTable==pTab ); sqlite3CreateIndex(pParse, 0, 0, 0, pList, pTab->keyConf, 0, 0, 0, 0, SQLITE_IDXTYPE_PRIMARYKEY); - if( db->mallocFailed ) return; + if( db->mallocFailed || pParse->nErr ) return; pPk = sqlite3PrimaryKeyIndex(pTab); pTab->iPKey = -1; }else{ @@ -105765,6 +107456,7 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){ }else{ pPk->nColumn = pTab->nCol; } + recomputeColumnsNotIndexed(pPk); } /* @@ -106068,7 +107760,12 @@ SQLITE_PRIVATE void sqlite3CreateView( ** allocated rather than point to the input string - which means that ** they will persist after the current sqlite3_exec() call returns. */ - p->pSelect = sqlite3SelectDup(db, pSelect, EXPRDUP_REDUCE); + if( IN_RENAME_OBJECT ){ + p->pSelect = pSelect; + pSelect = 0; + }else{ + p->pSelect = sqlite3SelectDup(db, pSelect, EXPRDUP_REDUCE); + } p->pCheck = sqlite3ExprListDup(db, pCNames, EXPRDUP_REDUCE); if( db->mallocFailed ) goto create_view_fail; @@ -106093,6 +107790,9 @@ SQLITE_PRIVATE void sqlite3CreateView( create_view_fail: sqlite3SelectDelete(db, pSelect); + if( IN_RENAME_OBJECT ){ + sqlite3RenameExprlistUnmap(pParse, pCNames); + } sqlite3ExprListDelete(db, pCNames); return; } @@ -106166,6 +107866,10 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){ assert( pTable->pSelect ); pSel = sqlite3SelectDup(db, pTable->pSelect, 0); if( pSel ){ +#ifndef SQLITE_OMIT_ALTERTABLE + u8 eParseMode = pParse->eParseMode; + pParse->eParseMode = PARSE_MODE_NORMAL; +#endif n = pParse->nTab; sqlite3SrcListAssignCursors(pParse, pSel->pSrc); pTable->nCol = -1; @@ -106211,10 +107915,18 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){ sqlite3DeleteTable(db, pSelTab); sqlite3SelectDelete(db, pSel); db->lookaside.bDisable--; +#ifndef SQLITE_OMIT_ALTERTABLE + pParse->eParseMode = eParseMode; +#endif } else { nErr++; } pTable->pSchema->schemaFlags |= DB_UnresetViews; + if( db->mallocFailed ){ + sqlite3DeleteColumnNames(db, pTable); + pTable->aCol = 0; + pTable->nCol = 0; + } #endif /* SQLITE_OMIT_VIEW */ return nErr; } @@ -106553,8 +108265,10 @@ SQLITE_PRIVATE void sqlite3DropTable(Parse *pParse, SrcList *pName, int isView, v = sqlite3GetVdbe(pParse); if( v ){ sqlite3BeginWriteOperation(pParse, 1, iDb); - sqlite3ClearStatTables(pParse, iDb, "tbl", pTab->zName); - sqlite3FkDropTable(pParse, pName, pTab); + if( !isView ){ + sqlite3ClearStatTables(pParse, iDb, "tbl", pTab->zName); + sqlite3FkDropTable(pParse, pName, pTab); + } sqlite3CodeDropTable(pParse, pTab, iDb, isView); } @@ -106629,6 +108343,9 @@ SQLITE_PRIVATE void sqlite3CreateForeignKey( pFKey->pNextFrom = p->pFKey; z = (char*)&pFKey->aCol[nCol]; pFKey->zTo = z; + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenMap(pParse, (void*)z, pTo); + } memcpy(z, pTo->z, pTo->n); z[pTo->n] = 0; sqlite3Dequote(z); @@ -106651,12 +108368,18 @@ SQLITE_PRIVATE void sqlite3CreateForeignKey( pFromCol->a[i].zName); goto fk_end; } + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenRemap(pParse, &pFKey->aCol[i], pFromCol->a[i].zName); + } } } if( pToCol ){ for(i=0; ia[i].zName); pFKey->aCol[i].zCol = z; + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenRemap(pParse, z, pToCol->a[i].zName); + } memcpy(z, pToCol->a[i].zName, n); z[n] = 0; z += n+1; @@ -106989,21 +108712,23 @@ SQLITE_PRIVATE void sqlite3CreateIndex( if( SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){ goto exit_create_index; } - if( !db->init.busy ){ - if( sqlite3FindTable(db, zName, 0)!=0 ){ - sqlite3ErrorMsg(pParse, "there is already a table named %s", zName); + if( !IN_RENAME_OBJECT ){ + if( !db->init.busy ){ + if( sqlite3FindTable(db, zName, 0)!=0 ){ + sqlite3ErrorMsg(pParse, "there is already a table named %s", zName); + goto exit_create_index; + } + } + if( sqlite3FindIndex(db, zName, pDb->zDbSName)!=0 ){ + if( !ifNotExist ){ + sqlite3ErrorMsg(pParse, "index %s already exists", zName); + }else{ + assert( !db->init.busy ); + sqlite3CodeVerifySchema(pParse, iDb); + } goto exit_create_index; } } - if( sqlite3FindIndex(db, zName, pDb->zDbSName)!=0 ){ - if( !ifNotExist ){ - sqlite3ErrorMsg(pParse, "index %s already exists", zName); - }else{ - assert( !db->init.busy ); - sqlite3CodeVerifySchema(pParse, iDb); - } - goto exit_create_index; - } }else{ int n; Index *pLoop; @@ -107018,13 +108743,13 @@ SQLITE_PRIVATE void sqlite3CreateIndex( ** The following statement converts "sqlite3_autoindex..." into ** "sqlite3_butoindex..." in order to make the names distinct. ** The "vtab_err.test" test demonstrates the need of this statement. */ - if( IN_DECLARE_VTAB ) zName[7]++; + if( IN_SPECIAL_PARSE ) zName[7]++; } /* Check for authorization to create an index. */ #ifndef SQLITE_OMIT_AUTHORIZATION - { + if( !IN_RENAME_OBJECT ){ const char *zDb = pDb->zDbSName; if( sqlite3AuthCheck(pParse, SQLITE_INSERT, SCHEMA_TABLE(iDb), 0, zDb) ){ goto exit_create_index; @@ -107111,7 +108836,12 @@ SQLITE_PRIVATE void sqlite3CreateIndex( ** TODO: Issue a warning if the table primary key is used as part of the ** index key. */ - for(i=0, pListItem=pList->a; inExpr; i++, pListItem++){ + pListItem = pList->a; + if( IN_RENAME_OBJECT ){ + pIndex->aColExpr = pList; + pList = 0; + } + for(i=0; inKeyCol; i++, pListItem++){ Expr *pCExpr; /* The i-th index expression */ int requestedSortOrder; /* ASC or DESC on the i-th expression */ const char *zColl; /* Collation sequence name */ @@ -107127,12 +108857,8 @@ SQLITE_PRIVATE void sqlite3CreateIndex( goto exit_create_index; } if( pIndex->aColExpr==0 ){ - ExprList *pCopy = sqlite3ExprListDup(db, pList, 0); - pIndex->aColExpr = pCopy; - if( !db->mallocFailed ){ - assert( pCopy!=0 ); - pListItem = &pCopy->a[i]; - } + pIndex->aColExpr = pList; + pList = 0; } j = XN_EXPR; pIndex->aiColumn[i] = XN_EXPR; @@ -107198,6 +108924,7 @@ SQLITE_PRIVATE void sqlite3CreateIndex( ** it as a covering index */ assert( HasRowid(pTab) || pTab->iPKey<0 || sqlite3ColumnOfIndex(pIndex, pTab->iPKey)>=0 ); + recomputeColumnsNotIndexed(pIndex); if( pTblName!=0 && pIndex->nColumn>=pTab->nCol ){ pIndex->isCovering = 1; for(j=0; jnCol; j++){ @@ -107270,98 +108997,101 @@ SQLITE_PRIVATE void sqlite3CreateIndex( } } - /* Link the new Index structure to its table and to the other - ** in-memory database structures. - */ - assert( pParse->nErr==0 ); - if( db->init.busy ){ - Index *p; - assert( !IN_DECLARE_VTAB ); - assert( sqlite3SchemaMutexHeld(db, 0, pIndex->pSchema) ); - p = sqlite3HashInsert(&pIndex->pSchema->idxHash, - pIndex->zName, pIndex); - if( p ){ - assert( p==pIndex ); /* Malloc must have failed */ - sqlite3OomFault(db); - goto exit_create_index; - } - db->mDbFlags |= DBFLAG_SchemaChange; - if( pTblName!=0 ){ - pIndex->tnum = db->init.newTnum; - } - } + if( !IN_RENAME_OBJECT ){ - /* If this is the initial CREATE INDEX statement (or CREATE TABLE if the - ** index is an implied index for a UNIQUE or PRIMARY KEY constraint) then - ** emit code to allocate the index rootpage on disk and make an entry for - ** the index in the sqlite_master table and populate the index with - ** content. But, do not do this if we are simply reading the sqlite_master - ** table to parse the schema, or if this index is the PRIMARY KEY index - ** of a WITHOUT ROWID table. - ** - ** If pTblName==0 it means this index is generated as an implied PRIMARY KEY - ** or UNIQUE index in a CREATE TABLE statement. Since the table - ** has just been created, it contains no data and the index initialization - ** step can be skipped. - */ - else if( HasRowid(pTab) || pTblName!=0 ){ - Vdbe *v; - char *zStmt; - int iMem = ++pParse->nMem; - - v = sqlite3GetVdbe(pParse); - if( v==0 ) goto exit_create_index; - - sqlite3BeginWriteOperation(pParse, 1, iDb); - - /* Create the rootpage for the index using CreateIndex. But before - ** doing so, code a Noop instruction and store its address in - ** Index.tnum. This is required in case this index is actually a - ** PRIMARY KEY and the table is actually a WITHOUT ROWID table. In - ** that case the convertToWithoutRowidTable() routine will replace - ** the Noop with a Goto to jump over the VDBE code generated below. */ - pIndex->tnum = sqlite3VdbeAddOp0(v, OP_Noop); - sqlite3VdbeAddOp3(v, OP_CreateBtree, iDb, iMem, BTREE_BLOBKEY); - - /* Gather the complete text of the CREATE INDEX statement into - ** the zStmt variable + /* Link the new Index structure to its table and to the other + ** in-memory database structures. */ - if( pStart ){ - int n = (int)(pParse->sLastToken.z - pName->z) + pParse->sLastToken.n; - if( pName->z[n-1]==';' ) n--; - /* A named index with an explicit CREATE INDEX statement */ - zStmt = sqlite3MPrintf(db, "CREATE%s INDEX %.*s", - onError==OE_None ? "" : " UNIQUE", n, pName->z); - }else{ - /* An automatic index created by a PRIMARY KEY or UNIQUE constraint */ - /* zStmt = sqlite3MPrintf(""); */ - zStmt = 0; + assert( pParse->nErr==0 ); + if( db->init.busy ){ + Index *p; + assert( !IN_SPECIAL_PARSE ); + assert( sqlite3SchemaMutexHeld(db, 0, pIndex->pSchema) ); + p = sqlite3HashInsert(&pIndex->pSchema->idxHash, + pIndex->zName, pIndex); + if( p ){ + assert( p==pIndex ); /* Malloc must have failed */ + sqlite3OomFault(db); + goto exit_create_index; + } + db->mDbFlags |= DBFLAG_SchemaChange; + if( pTblName!=0 ){ + pIndex->tnum = db->init.newTnum; + } } - /* Add an entry in sqlite_master for this index + /* If this is the initial CREATE INDEX statement (or CREATE TABLE if the + ** index is an implied index for a UNIQUE or PRIMARY KEY constraint) then + ** emit code to allocate the index rootpage on disk and make an entry for + ** the index in the sqlite_master table and populate the index with + ** content. But, do not do this if we are simply reading the sqlite_master + ** table to parse the schema, or if this index is the PRIMARY KEY index + ** of a WITHOUT ROWID table. + ** + ** If pTblName==0 it means this index is generated as an implied PRIMARY KEY + ** or UNIQUE index in a CREATE TABLE statement. Since the table + ** has just been created, it contains no data and the index initialization + ** step can be skipped. */ - sqlite3NestedParse(pParse, - "INSERT INTO %Q.%s VALUES('index',%Q,%Q,#%d,%Q);", - db->aDb[iDb].zDbSName, MASTER_NAME, - pIndex->zName, - pTab->zName, - iMem, - zStmt - ); - sqlite3DbFree(db, zStmt); + else if( HasRowid(pTab) || pTblName!=0 ){ + Vdbe *v; + char *zStmt; + int iMem = ++pParse->nMem; - /* Fill the index with data and reparse the schema. Code an OP_Expire - ** to invalidate all pre-compiled statements. - */ - if( pTblName ){ - sqlite3RefillIndex(pParse, pIndex, iMem); - sqlite3ChangeCookie(pParse, iDb); - sqlite3VdbeAddParseSchemaOp(v, iDb, - sqlite3MPrintf(db, "name='%q' AND type='index'", pIndex->zName)); - sqlite3VdbeAddOp0(v, OP_Expire); + v = sqlite3GetVdbe(pParse); + if( v==0 ) goto exit_create_index; + + sqlite3BeginWriteOperation(pParse, 1, iDb); + + /* Create the rootpage for the index using CreateIndex. But before + ** doing so, code a Noop instruction and store its address in + ** Index.tnum. This is required in case this index is actually a + ** PRIMARY KEY and the table is actually a WITHOUT ROWID table. In + ** that case the convertToWithoutRowidTable() routine will replace + ** the Noop with a Goto to jump over the VDBE code generated below. */ + pIndex->tnum = sqlite3VdbeAddOp0(v, OP_Noop); + sqlite3VdbeAddOp3(v, OP_CreateBtree, iDb, iMem, BTREE_BLOBKEY); + + /* Gather the complete text of the CREATE INDEX statement into + ** the zStmt variable + */ + if( pStart ){ + int n = (int)(pParse->sLastToken.z - pName->z) + pParse->sLastToken.n; + if( pName->z[n-1]==';' ) n--; + /* A named index with an explicit CREATE INDEX statement */ + zStmt = sqlite3MPrintf(db, "CREATE%s INDEX %.*s", + onError==OE_None ? "" : " UNIQUE", n, pName->z); + }else{ + /* An automatic index created by a PRIMARY KEY or UNIQUE constraint */ + /* zStmt = sqlite3MPrintf(""); */ + zStmt = 0; + } + + /* Add an entry in sqlite_master for this index + */ + sqlite3NestedParse(pParse, + "INSERT INTO %Q.%s VALUES('index',%Q,%Q,#%d,%Q);", + db->aDb[iDb].zDbSName, MASTER_NAME, + pIndex->zName, + pTab->zName, + iMem, + zStmt + ); + sqlite3DbFree(db, zStmt); + + /* Fill the index with data and reparse the schema. Code an OP_Expire + ** to invalidate all pre-compiled statements. + */ + if( pTblName ){ + sqlite3RefillIndex(pParse, pIndex, iMem); + sqlite3ChangeCookie(pParse, iDb); + sqlite3VdbeAddParseSchemaOp(v, iDb, + sqlite3MPrintf(db, "name='%q' AND type='index'", pIndex->zName)); + sqlite3VdbeAddOp2(v, OP_Expire, 0, 1); + } + + sqlite3VdbeJumpHere(v, pIndex->tnum); } - - sqlite3VdbeJumpHere(v, pIndex->tnum); } /* When adding an index to the list of indices for a table, make @@ -107385,10 +109115,15 @@ SQLITE_PRIVATE void sqlite3CreateIndex( } pIndex = 0; } + else if( IN_RENAME_OBJECT ){ + assert( pParse->pNewIndex==0 ); + pParse->pNewIndex = pIndex; + pIndex = 0; + } /* Clean up before exiting */ exit_create_index: - if( pIndex ) freeIndex(db, pIndex); + if( pIndex ) sqlite3FreeIndex(db, pIndex); sqlite3ExprDelete(db, pPIWhere); sqlite3ExprListDelete(db, pList); sqlite3SrcListDelete(db, pTblName); @@ -107557,7 +109292,8 @@ SQLITE_PRIVATE void *sqlite3ArrayAllocate( ** ** A new IdList is returned, or NULL if malloc() fails. */ -SQLITE_PRIVATE IdList *sqlite3IdListAppend(sqlite3 *db, IdList *pList, Token *pToken){ +SQLITE_PRIVATE IdList *sqlite3IdListAppend(Parse *pParse, IdList *pList, Token *pToken){ + sqlite3 *db = pParse->db; int i; if( pList==0 ){ pList = sqlite3DbMallocZero(db, sizeof(IdList) ); @@ -107575,6 +109311,9 @@ SQLITE_PRIVATE IdList *sqlite3IdListAppend(sqlite3 *db, IdList *pList, Token *pT return 0; } pList->a[i].zName = sqlite3NameFromToken(db, pToken); + if( IN_RENAME_OBJECT && pList->a[i].zName ){ + sqlite3RenameTokenMap(pParse, (void*)pList->a[i].zName, pToken); + } return pList; } @@ -107821,6 +109560,12 @@ SQLITE_PRIVATE SrcList *sqlite3SrcListAppendFromTerm( } assert( p->nSrc>0 ); pItem = &p->a[p->nSrc-1]; + assert( (pTable==0)==(pDatabase==0) ); + assert( pItem->zName==0 || pDatabase!=0 ); + if( IN_RENAME_OBJECT && pItem->zName ){ + Token *pToken = (ALWAYS(pDatabase) && pDatabase->z) ? pDatabase : pTable; + sqlite3RenameTokenMap(pParse, pItem->zName, pToken); + } assert( pAlias!=0 ); if( pAlias->n ){ pItem->zAlias = sqlite3NameFromToken(db, pAlias); @@ -109374,9 +111119,8 @@ SQLITE_PRIVATE void sqlite3DeleteFrom( } iKey = iPk; }else{ - iKey = pParse->nMem + 1; - iKey = sqlite3ExprCodeGetColumn(pParse, pTab, -1, iTabCur, iKey, 0); - if( iKey>pParse->nMem ) pParse->nMem = iKey; + iKey = ++pParse->nMem; + sqlite3ExprCodeGetColumnOfTable(v, pTab, iTabCur, -1, iKey); } if( eOnePass!=ONEPASS_OFF ){ @@ -109809,7 +111553,6 @@ SQLITE_PRIVATE int sqlite3GenerateIndexKey( if( pIdx->pPartIdxWhere ){ *piPartIdxLabel = sqlite3VdbeMakeLabel(v); pParse->iSelfTab = iDataCur + 1; - sqlite3ExprCachePush(pParse); sqlite3ExprIfFalseDup(pParse, pIdx->pPartIdxWhere, *piPartIdxLabel, SQLITE_JUMPIFNULL); pParse->iSelfTab = 0; @@ -109856,7 +111599,6 @@ SQLITE_PRIVATE int sqlite3GenerateIndexKey( SQLITE_PRIVATE void sqlite3ResolvePartIdxLabel(Parse *pParse, int iLabel){ if( iLabel ){ sqlite3VdbeResolveLabel(pParse->pVdbe, iLabel); - sqlite3ExprCachePop(pParse); } } @@ -111369,7 +113111,7 @@ static void sumStep(sqlite3_context *context, int argc, sqlite3_value **argv){ i64 v = sqlite3_value_int64(argv[0]); p->rSum += v; if( (p->approx|p->overflow)==0 && sqlite3AddInt64(&p->iSum, v) ){ - p->overflow = 1; + p->approx = p->overflow = 1; } }else{ p->rSum += sqlite3_value_double(argv[0]); @@ -111377,6 +113119,32 @@ static void sumStep(sqlite3_context *context, int argc, sqlite3_value **argv){ } } } +#ifndef SQLITE_OMIT_WINDOWFUNC +static void sumInverse(sqlite3_context *context, int argc, sqlite3_value**argv){ + SumCtx *p; + int type; + assert( argc==1 ); + UNUSED_PARAMETER(argc); + p = sqlite3_aggregate_context(context, sizeof(*p)); + type = sqlite3_value_numeric_type(argv[0]); + /* p is always non-NULL because sumStep() will have been called first + ** to initialize it */ + if( ALWAYS(p) && type!=SQLITE_NULL ){ + assert( p->cnt>0 ); + p->cnt--; + assert( type==SQLITE_INTEGER || p->approx ); + if( type==SQLITE_INTEGER && p->approx==0 ){ + i64 v = sqlite3_value_int64(argv[0]); + p->rSum -= v; + p->iSum -= v; + }else{ + p->rSum -= sqlite3_value_double(argv[0]); + } + } +} +#else +# define sumInverse 0 +#endif /* SQLITE_OMIT_WINDOWFUNC */ static void sumFinalize(sqlite3_context *context){ SumCtx *p; p = sqlite3_aggregate_context(context, 0); @@ -111411,6 +113179,9 @@ static void totalFinalize(sqlite3_context *context){ typedef struct CountCtx CountCtx; struct CountCtx { i64 n; +#ifdef SQLITE_DEBUG + int bInverse; /* True if xInverse() ever called */ +#endif }; /* @@ -111428,7 +113199,7 @@ static void countStep(sqlite3_context *context, int argc, sqlite3_value **argv){ ** sure it still operates correctly, verify that its count agrees with our ** internal count when using count(*) and when the total count can be ** expressed as a 32-bit integer. */ - assert( argc==1 || p==0 || p->n>0x7fffffff + assert( argc==1 || p==0 || p->n>0x7fffffff || p->bInverse || p->n==sqlite3_aggregate_count(context) ); #endif } @@ -111437,6 +113208,21 @@ static void countFinalize(sqlite3_context *context){ p = sqlite3_aggregate_context(context, 0); sqlite3_result_int64(context, p ? p->n : 0); } +#ifndef SQLITE_OMIT_WINDOWFUNC +static void countInverse(sqlite3_context *ctx, int argc, sqlite3_value **argv){ + CountCtx *p; + p = sqlite3_aggregate_context(ctx, sizeof(*p)); + /* p is always non-NULL since countStep() will have been called first */ + if( (argc==0 || SQLITE_NULL!=sqlite3_value_type(argv[0])) && ALWAYS(p) ){ + p->n--; +#ifdef SQLITE_DEBUG + p->bInverse = 1; +#endif + } +} +#else +# define countInverse 0 +#endif /* SQLITE_OMIT_WINDOWFUNC */ /* ** Routines to implement min() and max() aggregate functions. @@ -111453,7 +113239,7 @@ static void minmaxStep( pBest = (Mem *)sqlite3_aggregate_context(context, sizeof(*pBest)); if( !pBest ) return; - if( sqlite3_value_type(argv[0])==SQLITE_NULL ){ + if( sqlite3_value_type(pArg)==SQLITE_NULL ){ if( pBest->flags ) sqlite3SkipAccumulatorLoad(context); }else if( pBest->flags ){ int max; @@ -111479,16 +113265,26 @@ static void minmaxStep( sqlite3VdbeMemCopy(pBest, pArg); } } -static void minMaxFinalize(sqlite3_context *context){ +static void minMaxValueFinalize(sqlite3_context *context, int bValue){ sqlite3_value *pRes; pRes = (sqlite3_value *)sqlite3_aggregate_context(context, 0); if( pRes ){ if( pRes->flags ){ sqlite3_result_value(context, pRes); } - sqlite3VdbeMemRelease(pRes); + if( bValue==0 ) sqlite3VdbeMemRelease(pRes); } } +#ifndef SQLITE_OMIT_WINDOWFUNC +static void minMaxValue(sqlite3_context *context){ + minMaxValueFinalize(context, 1); +} +#else +# define minMaxValue 0 +#endif /* SQLITE_OMIT_WINDOWFUNC */ +static void minMaxFinalize(sqlite3_context *context){ + minMaxValueFinalize(context, 0); +} /* ** group_concat(EXPR, ?SEPARATOR?) @@ -111525,6 +113321,38 @@ static void groupConcatStep( if( zVal ) sqlite3_str_append(pAccum, zVal, nVal); } } +#ifndef SQLITE_OMIT_WINDOWFUNC +static void groupConcatInverse( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + int n; + StrAccum *pAccum; + assert( argc==1 || argc==2 ); + if( sqlite3_value_type(argv[0])==SQLITE_NULL ) return; + pAccum = (StrAccum*)sqlite3_aggregate_context(context, sizeof(*pAccum)); + /* pAccum is always non-NULL since groupConcatStep() will have always + ** run frist to initialize it */ + if( ALWAYS(pAccum) ){ + n = sqlite3_value_bytes(argv[0]); + if( argc==2 ){ + n += sqlite3_value_bytes(argv[1]); + }else{ + n++; + } + if( n>=(int)pAccum->nChar ){ + pAccum->nChar = 0; + }else{ + pAccum->nChar -= n; + memmove(pAccum->zText, &pAccum->zText[n], pAccum->nChar); + } + if( pAccum->nChar==0 ) pAccum->mxAlloc = 0; + } +} +#else +# define groupConcatInverse 0 +#endif /* SQLITE_OMIT_WINDOWFUNC */ static void groupConcatFinalize(sqlite3_context *context){ StrAccum *pAccum; pAccum = sqlite3_aggregate_context(context, 0); @@ -111539,6 +113367,24 @@ static void groupConcatFinalize(sqlite3_context *context){ } } } +#ifndef SQLITE_OMIT_WINDOWFUNC +static void groupConcatValue(sqlite3_context *context){ + sqlite3_str *pAccum; + pAccum = (sqlite3_str*)sqlite3_aggregate_context(context, 0); + if( pAccum ){ + if( pAccum->accError==SQLITE_TOOBIG ){ + sqlite3_result_error_toobig(context); + }else if( pAccum->accError==SQLITE_NOMEM ){ + sqlite3_result_error_nomem(context); + }else{ + const char *zText = sqlite3_str_value(pAccum); + sqlite3_result_text(context, zText, -1, SQLITE_TRANSIENT); + } + } +} +#else +# define groupConcatValue 0 +#endif /* SQLITE_OMIT_WINDOWFUNC */ /* ** This routine does per-connection function registration. Most @@ -111576,10 +113422,10 @@ SQLITE_PRIVATE void sqlite3RegisterLikeFunctions(sqlite3 *db, int caseSensitive) }else{ pInfo = (struct compareInfo*)&likeInfoNorm; } - sqlite3CreateFunc(db, "like", 2, SQLITE_UTF8, pInfo, likeFunc, 0, 0, 0); - sqlite3CreateFunc(db, "like", 3, SQLITE_UTF8, pInfo, likeFunc, 0, 0, 0); + sqlite3CreateFunc(db, "like", 2, SQLITE_UTF8, pInfo, likeFunc, 0, 0, 0, 0, 0); + sqlite3CreateFunc(db, "like", 3, SQLITE_UTF8, pInfo, likeFunc, 0, 0, 0, 0, 0); sqlite3CreateFunc(db, "glob", 2, SQLITE_UTF8, - (struct compareInfo*)&globInfo, likeFunc, 0, 0, 0); + (struct compareInfo*)&globInfo, likeFunc, 0, 0, 0, 0, 0); setLikeOptFlag(db, "glob", SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE); setLikeOptFlag(db, "like", caseSensitive ? (SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE) : SQLITE_FUNC_LIKE); @@ -111688,11 +113534,11 @@ SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void){ FUNCTION(trim, 2, 3, 0, trimFunc ), FUNCTION(min, -1, 0, 1, minmaxFunc ), FUNCTION(min, 0, 0, 1, 0 ), - AGGREGATE2(min, 1, 0, 1, minmaxStep, minMaxFinalize, + WAGGREGATE(min, 1, 0, 1, minmaxStep, minMaxFinalize, minMaxValue, 0, SQLITE_FUNC_MINMAX ), FUNCTION(max, -1, 1, 1, minmaxFunc ), FUNCTION(max, 0, 1, 1, 0 ), - AGGREGATE2(max, 1, 1, 1, minmaxStep, minMaxFinalize, + WAGGREGATE(max, 1, 1, 1, minmaxStep, minMaxFinalize, minMaxValue, 0, SQLITE_FUNC_MINMAX ), FUNCTION2(typeof, 1, 0, 0, typeofFunc, SQLITE_FUNC_TYPEOF), FUNCTION2(length, 1, 0, 0, lengthFunc, SQLITE_FUNC_LENGTH), @@ -111723,14 +113569,17 @@ SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void){ FUNCTION(zeroblob, 1, 0, 0, zeroblobFunc ), FUNCTION(substr, 2, 0, 0, substrFunc ), FUNCTION(substr, 3, 0, 0, substrFunc ), - AGGREGATE(sum, 1, 0, 0, sumStep, sumFinalize ), - AGGREGATE(total, 1, 0, 0, sumStep, totalFinalize ), - AGGREGATE(avg, 1, 0, 0, sumStep, avgFinalize ), - AGGREGATE2(count, 0, 0, 0, countStep, countFinalize, - SQLITE_FUNC_COUNT ), - AGGREGATE(count, 1, 0, 0, countStep, countFinalize ), - AGGREGATE(group_concat, 1, 0, 0, groupConcatStep, groupConcatFinalize), - AGGREGATE(group_concat, 2, 0, 0, groupConcatStep, groupConcatFinalize), + WAGGREGATE(sum, 1,0,0, sumStep, sumFinalize, sumFinalize, sumInverse, 0), + WAGGREGATE(total, 1,0,0, sumStep,totalFinalize,totalFinalize,sumInverse, 0), + WAGGREGATE(avg, 1,0,0, sumStep, avgFinalize, avgFinalize, sumInverse, 0), + WAGGREGATE(count, 0,0,0, countStep, + countFinalize, countFinalize, countInverse, SQLITE_FUNC_COUNT ), + WAGGREGATE(count, 1,0,0, countStep, + countFinalize, countFinalize, countInverse, 0 ), + WAGGREGATE(group_concat, 1, 0, 0, groupConcatStep, + groupConcatFinalize, groupConcatValue, groupConcatInverse, 0), + WAGGREGATE(group_concat, 2, 0, 0, groupConcatStep, + groupConcatFinalize, groupConcatValue, groupConcatInverse, 0), LIKEFUNC(glob, 2, &globInfo, SQLITE_FUNC_LIKE|SQLITE_FUNC_CASE), #ifdef SQLITE_CASE_SENSITIVE_LIKE @@ -111750,6 +113599,7 @@ SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void){ #ifndef SQLITE_OMIT_ALTERTABLE sqlite3AlterFunctions(); #endif + sqlite3WindowFunctions(); #if defined(SQLITE_ENABLE_STAT3) || defined(SQLITE_ENABLE_STAT4) sqlite3AnalyzeFunctions(); #endif @@ -112487,11 +114337,12 @@ static void fkTriggerDelete(sqlite3 *dbMem, Trigger *p){ */ SQLITE_PRIVATE void sqlite3FkDropTable(Parse *pParse, SrcList *pName, Table *pTab){ sqlite3 *db = pParse->db; - if( (db->flags&SQLITE_ForeignKeys) && !IsVirtual(pTab) && !pTab->pSelect ){ + if( (db->flags&SQLITE_ForeignKeys) && !IsVirtual(pTab) ){ int iSkip = 0; Vdbe *v = sqlite3GetVdbe(pParse); assert( v ); /* VDBE has already been allocated */ + assert( pTab->pSelect==0 ); /* Not a view */ if( sqlite3FkReferences(pTab)==0 ){ /* Search for a deferred foreign key constraint for which this table ** is the child table. If one cannot be found, return without @@ -114386,44 +116237,6 @@ static int checkConstraintUnchanged(Expr *pExpr, int *aiChng, int chngRowid){ return !w.eCode; } -/* -** An instance of the ConstraintAddr object remembers the byte-code addresses -** for sections of the constraint checks that deal with uniqueness constraints -** on the rowid and on the upsert constraint. -** -** This information is passed into checkReorderConstraintChecks() to insert -** some OP_Goto operations so that the rowid and upsert constraints occur -** in the correct order relative to other constraints. -*/ -typedef struct ConstraintAddr ConstraintAddr; -struct ConstraintAddr { - int ipkTop; /* Subroutine for rowid constraint check */ - int upsertTop; /* Label for upsert constraint check subroutine */ - int upsertTop2; /* Copy of upsertTop not cleared by the call */ - int upsertBtm; /* upsert constraint returns to this label */ - int ipkBtm; /* Return opcode rowid constraint check */ -}; - -/* -** Generate any OP_Goto operations needed to cause constraints to be -** run that haven't already been run. -*/ -static void reorderConstraintChecks(Vdbe *v, ConstraintAddr *p){ - if( p->upsertTop ){ - testcase( sqlite3VdbeLabelHasBeenResolved(v, p->upsertTop) ); - sqlite3VdbeGoto(v, p->upsertTop); - VdbeComment((v, "call upsert subroutine")); - sqlite3VdbeResolveLabel(v, p->upsertBtm); - p->upsertTop = 0; - } - if( p->ipkTop ){ - sqlite3VdbeGoto(v, p->ipkTop); - VdbeComment((v, "call rowid unique-check subroutine")); - sqlite3VdbeJumpHere(v, p->ipkBtm); - p->ipkTop = 0; - } -} - /* ** Generate code to do constraint checks prior to an INSERT or an UPDATE ** on table pTab. @@ -114533,11 +116346,13 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks( int addr1; /* Address of jump instruction */ int seenReplace = 0; /* True if REPLACE is used to resolve INT PK conflict */ int nPkField; /* Number of fields in PRIMARY KEY. 1 for ROWID tables */ - ConstraintAddr sAddr;/* Address information for constraint reordering */ Index *pUpIdx = 0; /* Index to which to apply the upsert */ u8 isUpdate; /* True if this is an UPDATE operation */ u8 bAffinityDone = 0; /* True if the OP_Affinity operation has been run */ int upsertBypass = 0; /* Address of Goto to bypass upsert subroutine */ + int upsertJump = 0; /* Address of Goto that jumps into upsert subroutine */ + int ipkTop = 0; /* Top of the IPK uniqueness check */ + int ipkBottom = 0; /* OP_Goto at the end of the IPK uniqueness check */ isUpdate = regOldData!=0; db = pParse->db; @@ -114545,7 +116360,6 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks( assert( v!=0 ); assert( pTab->pSelect==0 ); /* This table is not a VIEW */ nCol = pTab->nCol; - memset(&sAddr, 0, sizeof(sAddr)); /* pPk is the PRIMARY KEY index for WITHOUT ROWID tables and NULL for ** normal rowid tables. nPkField is the number of key fields in the @@ -114649,8 +116463,8 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks( /* UNIQUE and PRIMARY KEY constraints should be handled in the following ** order: ** - ** (1) OE_Abort, OE_Fail, OE_Rollback, OE_Ignore - ** (2) OE_Update + ** (1) OE_Update + ** (2) OE_Abort, OE_Fail, OE_Rollback, OE_Ignore ** (3) OE_Replace ** ** OE_Fail and OE_Ignore must happen before any changes are made. @@ -114659,6 +116473,11 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks( ** could happen in any order, but they are grouped up front for ** convenience. ** + ** 2018-08-14: Ticket https://www.sqlite.org/src/info/908f001483982c43 + ** The order of constraints used to have OE_Update as (2) and OE_Abort + ** and so forth as (1). But apparently PostgreSQL checks the OE_Update + ** constraint before any others, so it had to be moved. + ** ** Constraint checking code is generated in this order: ** (A) The rowid constraint ** (B) Unique index constraints that do not have OE_Replace as their @@ -114678,11 +116497,10 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks( overrideError = OE_Ignore; pUpsert = 0; }else if( (pUpIdx = pUpsert->pUpsertIdx)!=0 ){ - /* If the constraint-target is on some column other than - ** then ROWID, then we might need to move the UPSERT around - ** so that it occurs in the correct order. */ - sAddr.upsertTop = sAddr.upsertTop2 = sqlite3VdbeMakeLabel(v); - sAddr.upsertBtm = sqlite3VdbeMakeLabel(v); + /* If the constraint-target uniqueness check must be run first. + ** Jump to that uniqueness check now */ + upsertJump = sqlite3VdbeAddOp0(v, OP_Goto); + VdbeComment((v, "UPSERT constraint goes first")); } } @@ -114714,16 +116532,12 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks( ** to defer the running of the rowid conflict checking until after ** the UNIQUE constraints have run. */ - assert( OE_Update>OE_Replace ); - assert( OE_Ignore=OE_Replace - && (pUpsert || onError!=overrideError) - && pTab->pIndex + if( onError==OE_Replace /* IPK rule is REPLACE */ + && onError!=overrideError /* Rules for other contraints are different */ + && pTab->pIndex /* There exist other constraints */ ){ - sAddr.ipkTop = sqlite3VdbeAddOp0(v, OP_Goto)+1; + ipkTop = sqlite3VdbeAddOp0(v, OP_Goto)+1; + VdbeComment((v, "defer IPK REPLACE until last")); } if( isUpdate ){ @@ -114818,9 +116632,9 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks( } } sqlite3VdbeResolveLabel(v, addrRowidOk); - if( sAddr.ipkTop ){ - sAddr.ipkBtm = sqlite3VdbeAddOp0(v, OP_Goto); - sqlite3VdbeJumpHere(v, sAddr.ipkTop-1); + if( ipkTop ){ + ipkBottom = sqlite3VdbeAddOp0(v, OP_Goto); + sqlite3VdbeJumpHere(v, ipkTop-1); } } @@ -114839,18 +116653,18 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks( if( aRegIdx[ix]==0 ) continue; /* Skip indices that do not change */ if( pUpIdx==pIdx ){ - addrUniqueOk = sAddr.upsertBtm; + addrUniqueOk = upsertJump+1; upsertBypass = sqlite3VdbeGoto(v, 0); VdbeComment((v, "Skip upsert subroutine")); - sqlite3VdbeResolveLabel(v, sAddr.upsertTop2); + sqlite3VdbeJumpHere(v, upsertJump); }else{ addrUniqueOk = sqlite3VdbeMakeLabel(v); } - VdbeNoopComment((v, "uniqueness check for %s", pIdx->zName)); - if( bAffinityDone==0 ){ + if( bAffinityDone==0 && (pUpIdx==0 || pUpIdx==pIdx) ){ sqlite3TableAffinity(v, pTab, regNewData+1); bAffinityDone = 1; } + VdbeNoopComment((v, "uniqueness check for %s", pIdx->zName)); iThisCur = iIdxCur+ix; @@ -114921,15 +116735,6 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks( } } - /* Invoke subroutines to handle IPK replace and upsert prior to running - ** the first REPLACE constraint check. */ - if( onError==OE_Replace ){ - testcase( sAddr.ipkTop ); - testcase( sAddr.upsertTop - && sqlite3VdbeLabelHasBeenResolved(v,sAddr.upsertTop) ); - reorderConstraintChecks(v, &sAddr); - } - /* Collision detection may be omitted if all of the following are true: ** (1) The conflict resolution algorithm is REPLACE ** (2) The table is a WITHOUT ROWID table @@ -114950,7 +116755,6 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks( } /* Check to see if the new index entry will be unique */ - sqlite3ExprCachePush(pParse); sqlite3VdbeVerifyAbortable(v, onError); sqlite3VdbeAddOp4Int(v, OP_NoConflict, iThisCur, addrUniqueOk, regIdx, pIdx->nKeyCol); VdbeCoverage(v); @@ -115052,19 +116856,21 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks( } } if( pUpIdx==pIdx ){ + sqlite3VdbeGoto(v, upsertJump+1); sqlite3VdbeJumpHere(v, upsertBypass); }else{ sqlite3VdbeResolveLabel(v, addrUniqueOk); } - sqlite3ExprCachePop(pParse); if( regR!=regIdx ) sqlite3ReleaseTempRange(pParse, regR, nPkField); - } - testcase( sAddr.ipkTop!=0 ); - testcase( sAddr.upsertTop - && sqlite3VdbeLabelHasBeenResolved(v,sAddr.upsertTop) ); - reorderConstraintChecks(v, &sAddr); - + + /* If the IPK constraint is a REPLACE, run it last */ + if( ipkTop ){ + sqlite3VdbeGoto(v, ipkTop+1); + VdbeComment((v, "Do IPK REPLACE")); + sqlite3VdbeJumpHere(v, ipkBottom); + } + *pbMayReplace = seenReplace; VdbeModuleComment((v, "END: GenCnstCks(%d)", seenReplace)); } @@ -115160,7 +116966,6 @@ SQLITE_PRIVATE void sqlite3CompleteInsertion( sqlite3SetMakeRecordP5(v, pTab); if( !bAffinityDone ){ sqlite3TableAffinity(v, pTab, 0); - sqlite3ExprCacheAffinityChange(pParse, regData, pTab->nCol); } if( pParse->nested ){ pik_flags = 0; @@ -116136,6 +117941,12 @@ struct sqlite3_api_routines { int (*str_errcode)(sqlite3_str*); int (*str_length)(sqlite3_str*); char *(*str_value)(sqlite3_str*); + int (*create_window_function)(sqlite3*,const char*,int,int,void*, + void (*xStep)(sqlite3_context*,int,sqlite3_value**), + void (*xFinal)(sqlite3_context*), + void (*xValue)(sqlite3_context*), + void (*xInv)(sqlite3_context*,int,sqlite3_value**), + void(*xDestroy)(void*)); }; /* @@ -116421,6 +118232,8 @@ typedef int (*sqlite3_loadext_entry)( #define sqlite3_str_errcode sqlite3_api->str_errcode #define sqlite3_str_length sqlite3_api->str_length #define sqlite3_str_value sqlite3_api->str_value +/* Version 3.25.0 and later */ +#define sqlite3_create_window_function sqlite3_api->create_window_function #endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */ #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) @@ -116874,7 +118687,9 @@ static const sqlite3_api_routines sqlite3Apis = { sqlite3_str_reset, sqlite3_str_errcode, sqlite3_str_length, - sqlite3_str_value + sqlite3_str_value, + /* Version 3.25.0 and later */ + sqlite3_create_window_function }; /* @@ -117669,6 +119484,11 @@ static const PragmaName aPragmaName[] = { /* iArg: */ 0 }, #endif #if !defined(SQLITE_OMIT_FLAG_PRAGMAS) + {/* zName: */ "legacy_alter_table", + /* ePragTyp: */ PragTyp_FLAG, + /* ePragFlg: */ PragFlg_Result0|PragFlg_NoColumns1, + /* ColNames: */ 0, 0, + /* iArg: */ SQLITE_LegacyAlter }, {/* zName: */ "legacy_file_format", /* ePragTyp: */ PragTyp_FLAG, /* ePragFlg: */ PragFlg_Result0|PragFlg_NoColumns1, @@ -117922,7 +119742,7 @@ static const PragmaName aPragmaName[] = { /* iArg: */ SQLITE_WriteSchema }, #endif }; -/* Number of pragmas: 60 on by default, 77 total. */ +/* Number of pragmas: 61 on by default, 78 total. */ /************** End of pragma.h **********************************************/ /************** Continuing where we left off in pragma.c *********************/ @@ -119447,7 +121267,6 @@ SQLITE_PRIVATE void sqlite3Pragma( if( pTab->tnum<1 ) continue; /* Skip VIEWs or VIRTUAL TABLEs */ pPk = HasRowid(pTab) ? 0 : sqlite3PrimaryKeyIndex(pTab); - sqlite3ExprCacheClear(pParse); sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenRead, 0, 1, 0, &iDataCur, &iIdxCur); /* reg[7] counts the number of entries in the table. @@ -119461,6 +121280,11 @@ SQLITE_PRIVATE void sqlite3Pragma( assert( sqlite3NoTempsInRange(pParse,1,7+j) ); sqlite3VdbeAddOp2(v, OP_Rewind, iDataCur, 0); VdbeCoverage(v); loopTop = sqlite3VdbeAddOp2(v, OP_AddImm, 7, 1); + if( !isQuick ){ + /* Sanity check on record header decoding */ + sqlite3VdbeAddOp3(v, OP_Column, iDataCur, pTab->nCol-1, 3); + sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG); + } /* Verify that all NOT NULL columns really are NOT NULL */ for(j=0; jnCol; j++){ char *zErr; @@ -119485,7 +121309,6 @@ SQLITE_PRIVATE void sqlite3Pragma( char *zErr; int k; pParse->iSelfTab = iDataCur + 1; - sqlite3ExprCachePush(pParse); for(k=pCheck->nExpr-1; k>0; k--){ sqlite3ExprIfFalse(pParse, pCheck->a[k].pExpr, addrCkFault, 0); } @@ -119498,14 +121321,10 @@ SQLITE_PRIVATE void sqlite3Pragma( sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, zErr, P4_DYNAMIC); integrityCheckResultRow(v); sqlite3VdbeResolveLabel(v, addrCkOk); - sqlite3ExprCachePop(pParse); } sqlite3ExprListDelete(db, pCheck); } if( !isQuick ){ /* Omit the remaining tests for quick_check */ - /* Sanity check on record header decoding */ - sqlite3VdbeAddOp3(v, OP_Column, iDataCur, pTab->nCol-1, 3); - sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG); /* Validate index entries for the current row */ for(j=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, j++){ int jmp2, jmp3, jmp4, jmp5; @@ -120120,7 +121939,6 @@ static int pragmaVtabConnect( } if( i==0 ){ sqlite3_str_appendf(&acc, "(\"%s\"", pPragma->zName); - cSep = ','; i++; } j = 0; @@ -120413,15 +122231,23 @@ static void corruptSchema( const char *zExtra /* Error information */ ){ sqlite3 *db = pData->db; - if( !db->mallocFailed && (db->flags & SQLITE_WriteSchema)==0 ){ + if( db->mallocFailed ){ + pData->rc = SQLITE_NOMEM_BKPT; + }else if( pData->pzErrMsg[0]!=0 ){ + /* A error message has already been generated. Do not overwrite it */ + }else if( pData->mInitFlags & INITFLAG_AlterTable ){ + *pData->pzErrMsg = sqlite3DbStrDup(db, zExtra); + pData->rc = SQLITE_ERROR; + }else if( db->flags & SQLITE_WriteSchema ){ + pData->rc = SQLITE_CORRUPT_BKPT; + }else{ char *z; if( zObj==0 ) zObj = "?"; z = sqlite3MPrintf(db, "malformed database schema (%s)", zObj); if( zExtra && zExtra[0] ) z = sqlite3MPrintf(db, "%z - %s", z, zExtra); - sqlite3DbFree(db, *pData->pzErrMsg); *pData->pzErrMsg = z; + pData->rc = SQLITE_CORRUPT_BKPT; } - pData->rc = db->mallocFailed ? SQLITE_NOMEM_BKPT : SQLITE_CORRUPT_BKPT; } /* @@ -120473,7 +122299,7 @@ SQLITE_PRIVATE int sqlite3InitCallback(void *pInit, int argc, char **argv, char rc = db->errCode; assert( (rc&0xFF)==(rcp&0xFF) ); db->init.iDb = saved_iDb; - assert( saved_iDb==0 || (db->mDbFlags & DBFLAG_Vacuum)!=0 ); + /* assert( saved_iDb==0 || (db->mDbFlags & DBFLAG_Vacuum)!=0 ); */ if( SQLITE_OK!=rc ){ if( db->init.orphanTrigger ){ assert( iDb==1 ); @@ -120520,7 +122346,7 @@ SQLITE_PRIVATE int sqlite3InitCallback(void *pInit, int argc, char **argv, char ** auxiliary databases. Return one of the SQLITE_ error codes to ** indicate success or failure. */ -static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){ +SQLITE_PRIVATE int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg, u32 mFlags){ int rc; int i; #ifndef SQLITE_OMIT_DEPRECATED @@ -120555,6 +122381,7 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){ initData.iDb = iDb; initData.rc = SQLITE_OK; initData.pzErrMsg = pzErrMsg; + initData.mInitFlags = mFlags; sqlite3InitCallback(&initData, 3, (char **)azArg, 0); if( initData.rc ){ rc = initData.rc; @@ -120576,7 +122403,7 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){ ** will be closed before this function returns. */ sqlite3BtreeEnter(pDb->pBt); if( !sqlite3BtreeIsInReadTrans(pDb->pBt) ){ - rc = sqlite3BtreeBeginTrans(pDb->pBt, 0); + rc = sqlite3BtreeBeginTrans(pDb->pBt, 0, 0); if( rc!=SQLITE_OK ){ sqlite3SetString(pzErrMsg, db, sqlite3ErrStr(rc)); goto initone_error_out; @@ -120761,14 +122588,14 @@ SQLITE_PRIVATE int sqlite3Init(sqlite3 *db, char **pzErrMsg){ assert( db->nDb>0 ); /* Do the main schema first */ if( !DbHasProperty(db, 0, DB_SchemaLoaded) ){ - rc = sqlite3InitOne(db, 0, pzErrMsg); + rc = sqlite3InitOne(db, 0, pzErrMsg, 0); if( rc ) return rc; } /* All other schemas after the main schema. The "temp" schema must be last */ for(i=db->nDb-1; i>0; i--){ assert( i==1 || sqlite3BtreeHoldsMutex(db->aDb[i].pBt) ); if( !DbHasProperty(db, i, DB_SchemaLoaded) ){ - rc = sqlite3InitOne(db, i, pzErrMsg); + rc = sqlite3InitOne(db, i, pzErrMsg, 0); if( rc ) return rc; } } @@ -120821,7 +122648,7 @@ static void schemaIsValid(Parse *pParse){ ** on the b-tree database, open one now. If a transaction is opened, it ** will be closed immediately after reading the meta-value. */ if( !sqlite3BtreeIsInReadTrans(pBt) ){ - rc = sqlite3BtreeBeginTrans(pBt, 0); + rc = sqlite3BtreeBeginTrans(pBt, 0, 0); if( rc==SQLITE_NOMEM || rc==SQLITE_IOERR_NOMEM ){ sqlite3OomFault(db); } @@ -121318,7 +123145,7 @@ SQLITE_API int sqlite3_prepare16_v3( /***/ int sqlite3SelectTrace = 0; # define SELECTTRACE(K,P,S,X) \ if(sqlite3SelectTrace&(K)) \ - sqlite3DebugPrintf("%s/%d/%p: ",(S)->zSelName,(P)->addrExplain,(S)),\ + sqlite3DebugPrintf("%u/%d/%p: ",(S)->selId,(P)->addrExplain,(S)),\ sqlite3DebugPrintf X #else # define SELECTTRACE(K,P,S,X) @@ -121365,8 +123192,8 @@ struct SortCtx { int labelBkOut; /* Start label for the block-output subroutine */ int addrSortIndex; /* Address of the OP_SorterOpen or OP_OpenEphemeral */ int labelDone; /* Jump here when done, ex: LIMIT reached */ + int labelOBLopt; /* Jump here when sorter is full */ u8 sortFlags; /* Zero or more SORTFLAG_* bits */ - u8 bOrderedInnerLoop; /* ORDER BY correctly sorts the inner loop */ #ifdef SQLITE_ENABLE_SORTER_REFERENCES u8 nDefer; /* Number of valid entries in aDefer[] */ struct DeferredCsr { @@ -121393,6 +123220,11 @@ static void clearSelect(sqlite3 *db, Select *p, int bFree){ sqlite3ExprDelete(db, p->pHaving); sqlite3ExprListDelete(db, p->pOrderBy); sqlite3ExprDelete(db, p->pLimit); +#ifndef SQLITE_OMIT_WINDOWFUNC + if( OK_IF_ALWAYS_TRUE(p->pWinDefn) ){ + sqlite3WindowListDelete(db, p->pWinDefn); + } +#endif if( OK_IF_ALWAYS_TRUE(p->pWith) ) sqlite3WithDelete(db, p->pWith); if( bFree ) sqlite3DbFreeNN(db, p); p = pPrior; @@ -121443,9 +123275,7 @@ SQLITE_PRIVATE Select *sqlite3SelectNew( pNew->selFlags = selFlags; pNew->iLimit = 0; pNew->iOffset = 0; -#if SELECTTRACE_ENABLED - pNew->zSelName[0] = 0; -#endif + pNew->selId = ++pParse->nSelect; pNew->addrOpenEphm[0] = -1; pNew->addrOpenEphm[1] = -1; pNew->nSelectRow = 0; @@ -121459,6 +123289,10 @@ SQLITE_PRIVATE Select *sqlite3SelectNew( pNew->pNext = 0; pNew->pLimit = pLimit; pNew->pWith = 0; +#ifndef SQLITE_OMIT_WINDOWFUNC + pNew->pWin = 0; + pNew->pWinDefn = 0; +#endif if( pParse->db->mallocFailed ) { clearSelect(pParse->db, pNew, pNew!=&standin); pNew = 0; @@ -121469,17 +123303,6 @@ SQLITE_PRIVATE Select *sqlite3SelectNew( return pNew; } -#if SELECTTRACE_ENABLED -/* -** Set the name of a Select object -*/ -SQLITE_PRIVATE void sqlite3SelectSetName(Select *p, const char *zName){ - if( p && zName ){ - sqlite3_snprintf(sizeof(p->zSelName), p->zSelName, "%s", zName); - } -} -#endif - /* ** Delete the given Select structure and all of its substructures. @@ -121826,14 +123649,6 @@ static int sqliteProcessJoin(Parse *pParse, Select *p){ return 0; } -/* Forward reference */ -static KeyInfo *keyInfoFromExprList( - Parse *pParse, /* Parsing context */ - ExprList *pList, /* Form the KeyInfo object from this ExprList */ - int iStart, /* Begin with this column of pList */ - int nExtra /* Add this many extra columns to the end */ -); - /* ** An instance of this object holds information (beyond pParse and pSelect) ** needed to load the next result row that is to be added to the sorter. @@ -121975,7 +123790,7 @@ static void pushOntoSorter( memset(pKI->aSortOrder, 0, pKI->nKeyField); /* Makes OP_Jump testable */ sqlite3VdbeChangeP4(v, -1, (char*)pKI, P4_KEYINFO); testcase( pKI->nAllField > pKI->nKeyField+2 ); - pOp->p4.pKeyInfo = keyInfoFromExprList(pParse, pSort->pOrderBy, nOBSat, + pOp->p4.pKeyInfo = sqlite3KeyInfoFromExprList(pParse,pSort->pOrderBy,nOBSat, pKI->nAllField-pKI->nKeyField-1); addrJmp = sqlite3VdbeCurrentAddr(v); sqlite3VdbeAddOp3(v, OP_Jump, addrJmp+1, 0, addrJmp+1); VdbeCoverage(v); @@ -122002,10 +123817,10 @@ static void pushOntoSorter( ** than LIMIT+OFFSET items in the sorter. ** ** If the new record does not need to be inserted into the sorter, - ** jump to the next iteration of the loop. Or, if the - ** pSort->bOrderedInnerLoop flag is set to indicate that the inner - ** loop delivers items in sorted order, jump to the next iteration - ** of the outer loop. + ** jump to the next iteration of the loop. If the pSort->labelOBLopt + ** value is not zero, then it is a label of where to jump. Otherwise, + ** just bypass the row insert logic. See the header comment on the + ** sqlite3WhereOrderByLimitOptLabel() function for additional info. */ int iCsr = pSort->iECursor; sqlite3VdbeAddOp2(v, OP_IfNotZero, iLimit, sqlite3VdbeCurrentAddr(v)+4); @@ -122027,9 +123842,8 @@ static void pushOntoSorter( sqlite3VdbeAddOp4Int(v, op, pSort->iECursor, regRecord, regBase+nOBSat, nBase-nOBSat); if( iSkip ){ - assert( pSort->bOrderedInnerLoop==0 || pSort->bOrderedInnerLoop==1 ); sqlite3VdbeChangeP2(v, iSkip, - sqlite3VdbeCurrentAddr(v) + pSort->bOrderedInnerLoop); + pSort->labelOBLopt ? pSort->labelOBLopt : sqlite3VdbeCurrentAddr(v)); } } @@ -122458,7 +124272,6 @@ static void selectInnerLoop( assert( sqlite3Strlen30(pDest->zAffSdst)==nResultCol ); sqlite3VdbeAddOp4(v, OP_MakeRecord, regResult, nResultCol, r1, pDest->zAffSdst, nResultCol); - sqlite3ExprCacheAffinityChange(pParse, regResult, nResultCol); sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, r1, regResult, nResultCol); sqlite3ReleaseTempReg(pParse, r1); } @@ -122502,7 +124315,6 @@ static void selectInnerLoop( sqlite3VdbeAddOp1(v, OP_Yield, pDest->iSDParm); }else{ sqlite3VdbeAddOp2(v, OP_ResultRow, regResult, nResultCol); - sqlite3ExprCacheAffinityChange(pParse, regResult, nResultCol); } break; } @@ -122645,7 +124457,7 @@ SQLITE_PRIVATE int sqlite3KeyInfoIsWriteable(KeyInfo *p){ return p->nRef==1; } ** function is responsible for seeing that this structure is eventually ** freed. */ -static KeyInfo *keyInfoFromExprList( +SQLITE_PRIVATE KeyInfo *sqlite3KeyInfoFromExprList( Parse *pParse, /* Parsing context */ ExprList *pList, /* Form the KeyInfo object from this ExprList */ int iStart, /* Begin with this column of pList */ @@ -122859,7 +124671,6 @@ static void generateSortTail( assert( nColumn==sqlite3Strlen30(pDest->zAffSdst) ); sqlite3VdbeAddOp4(v, OP_MakeRecord, regRow, nColumn, regRowid, pDest->zAffSdst, nColumn); - sqlite3ExprCacheAffinityChange(pParse, regRow, nColumn); sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, regRowid, regRow, nColumn); break; } @@ -122874,7 +124685,6 @@ static void generateSortTail( testcase( eDest==SRT_Coroutine ); if( eDest==SRT_Output ){ sqlite3VdbeAddOp2(v, OP_ResultRow, pDest->iSdst, nColumn); - sqlite3ExprCacheAffinityChange(pParse, pDest->iSdst, nColumn); }else{ sqlite3VdbeAddOp1(v, OP_Yield, pDest->iSDParm); } @@ -123475,7 +125285,6 @@ static void computeLimitRegisters(Parse *pParse, Select *p, int iBreak){ ** The current implementation interprets "LIMIT 0" to mean ** no rows. */ - sqlite3ExprCacheClear(pParse); if( pLimit ){ assert( pLimit->op==TK_LIMIT ); assert( pLimit->pLeft!=0 ); @@ -124261,7 +126070,6 @@ static int generateOutputSubroutine( r1 = sqlite3GetTempReg(pParse); sqlite3VdbeAddOp4(v, OP_MakeRecord, pIn->iSdst, pIn->nSdst, r1, pDest->zAffSdst, pIn->nSdst); - sqlite3ExprCacheAffinityChange(pParse, pIn->iSdst, pIn->nSdst); sqlite3VdbeAddOp4Int(v, OP_IdxInsert, pDest->iSDParm, r1, pIn->iSdst, pIn->nSdst); sqlite3ReleaseTempReg(pParse, r1); @@ -124304,7 +126112,6 @@ static int generateOutputSubroutine( default: { assert( pDest->eDest==SRT_Output ); sqlite3VdbeAddOp2(v, OP_ResultRow, pIn->iSdst, pIn->nSdst); - sqlite3ExprCacheAffinityChange(pParse, pIn->iSdst, pIn->nSdst); break; } } @@ -124759,7 +126566,7 @@ static Expr *substExpr( Expr *pCopy = pSubst->pEList->a[pExpr->iColumn].pExpr; Expr ifNullRow; assert( pSubst->pEList!=0 && pExpr->iColumnpEList->nExpr ); - assert( pExpr->pLeft==0 && pExpr->pRight==0 ); + assert( pExpr->pRight==0 ); if( sqlite3ExprIsVector(pCopy) ){ sqlite3VectorErrorMsg(pSubst->pParse, pCopy); }else{ @@ -124973,6 +126780,10 @@ static void substSelect( ** "SELECT x FROM (SELECT max(y), x FROM t1)" would not necessarily ** return the value X for which Y was maximal.) ** +** (25) If either the subquery or the parent query contains a window +** function in the select list or ORDER BY clause, flattening +** is not attempted. +** ** ** In this routine, the "p" parameter is a pointer to the outer query. ** The subquery is p->pSrc->a[iFrom]. isAgg is true if the outer query @@ -125016,6 +126827,10 @@ static int flattenSubquery( pSub = pSubitem->pSelect; assert( pSub!=0 ); +#ifndef SQLITE_OMIT_WINDOWFUNC + if( p->pWin || pSub->pWin ) return 0; /* Restriction (25) */ +#endif + pSubSrc = pSub->pSrc; assert( pSubSrc ); /* Prior to version 3.1.2, when LIMIT and OFFSET had to be simple constants, @@ -125126,8 +126941,8 @@ static int flattenSubquery( assert( (p->selFlags & SF_Recursive)==0 || pSub->pPrior==0 ); /***** If we reach this point, flattening is permitted. *****/ - SELECTTRACE(1,pParse,p,("flatten %s.%p from term %d\n", - pSub->zSelName, pSub, iFrom)); + SELECTTRACE(1,pParse,p,("flatten %u.%p from term %d\n", + pSub->selId, pSub, iFrom)); /* Authorize the subquery */ pParse->zAuthContext = pSubitem->zName; @@ -125178,7 +126993,6 @@ static int flattenSubquery( p->pPrior = 0; p->pLimit = 0; pNew = sqlite3SelectDup(db, p, 0); - sqlite3SelectSetName(pNew, pSub->zSelName); p->pLimit = pLimit; p->pOrderBy = pOrderBy; p->pSrc = pSrc; @@ -125191,7 +127005,7 @@ static int flattenSubquery( pNew->pNext = p; p->pPrior = pNew; SELECTTRACE(2,pParse,p,("compound-subquery flattener" - " creates %s.%p as peer\n",pNew->zSelName, pNew)); + " creates %u as peer\n",pNew->selId)); } if( db->mallocFailed ) return 1; } @@ -125376,7 +127190,168 @@ static int flattenSubquery( } #endif /* !defined(SQLITE_OMIT_SUBQUERY) || !defined(SQLITE_OMIT_VIEW) */ +/* +** A structure to keep track of all of the column values that fixed to +** a known value due to WHERE clause constraints of the form COLUMN=VALUE. +*/ +typedef struct WhereConst WhereConst; +struct WhereConst { + Parse *pParse; /* Parsing context */ + int nConst; /* Number for COLUMN=CONSTANT terms */ + int nChng; /* Number of times a constant is propagated */ + Expr **apExpr; /* [i*2] is COLUMN and [i*2+1] is VALUE */ +}; +/* +** Add a new entry to the pConst object +*/ +static void constInsert( + WhereConst *pConst, + Expr *pColumn, + Expr *pValue +){ + + pConst->nConst++; + pConst->apExpr = sqlite3DbReallocOrFree(pConst->pParse->db, pConst->apExpr, + pConst->nConst*2*sizeof(Expr*)); + if( pConst->apExpr==0 ){ + pConst->nConst = 0; + }else{ + if( ExprHasProperty(pValue, EP_FixedCol) ) pValue = pValue->pLeft; + pConst->apExpr[pConst->nConst*2-2] = pColumn; + pConst->apExpr[pConst->nConst*2-1] = pValue; + } +} + +/* +** Find all terms of COLUMN=VALUE or VALUE=COLUMN in pExpr where VALUE +** is a constant expression and where the term must be true because it +** is part of the AND-connected terms of the expression. For each term +** found, add it to the pConst structure. +*/ +static void findConstInWhere(WhereConst *pConst, Expr *pExpr){ + Expr *pRight, *pLeft; + if( pExpr==0 ) return; + if( ExprHasProperty(pExpr, EP_FromJoin) ) return; + if( pExpr->op==TK_AND ){ + findConstInWhere(pConst, pExpr->pRight); + findConstInWhere(pConst, pExpr->pLeft); + return; + } + if( pExpr->op!=TK_EQ ) return; + pRight = pExpr->pRight; + pLeft = pExpr->pLeft; + assert( pRight!=0 ); + assert( pLeft!=0 ); + if( pRight->op==TK_COLUMN + && !ExprHasProperty(pRight, EP_FixedCol) + && sqlite3ExprIsConstant(pLeft) + && sqlite3IsBinary(sqlite3BinaryCompareCollSeq(pConst->pParse,pLeft,pRight)) + ){ + constInsert(pConst, pRight, pLeft); + }else + if( pLeft->op==TK_COLUMN + && !ExprHasProperty(pLeft, EP_FixedCol) + && sqlite3ExprIsConstant(pRight) + && sqlite3IsBinary(sqlite3BinaryCompareCollSeq(pConst->pParse,pLeft,pRight)) + ){ + constInsert(pConst, pLeft, pRight); + } +} + +/* +** This is a Walker expression callback. pExpr is a candidate expression +** to be replaced by a value. If pExpr is equivalent to one of the +** columns named in pWalker->u.pConst, then overwrite it with its +** corresponding value. +*/ +static int propagateConstantExprRewrite(Walker *pWalker, Expr *pExpr){ + int i; + WhereConst *pConst; + if( pExpr->op!=TK_COLUMN ) return WRC_Continue; + if( ExprHasProperty(pExpr, EP_FixedCol) ) return WRC_Continue; + pConst = pWalker->u.pConst; + for(i=0; inConst; i++){ + Expr *pColumn = pConst->apExpr[i*2]; + if( pColumn==pExpr ) continue; + if( pColumn->iTable!=pExpr->iTable ) continue; + if( pColumn->iColumn!=pExpr->iColumn ) continue; + /* A match is found. Add the EP_FixedCol property */ + pConst->nChng++; + ExprClearProperty(pExpr, EP_Leaf); + ExprSetProperty(pExpr, EP_FixedCol); + assert( pExpr->pLeft==0 ); + pExpr->pLeft = sqlite3ExprDup(pConst->pParse->db, pConst->apExpr[i*2+1], 0); + break; + } + return WRC_Prune; +} + +/* +** The WHERE-clause constant propagation optimization. +** +** If the WHERE clause contains terms of the form COLUMN=CONSTANT or +** CONSTANT=COLUMN that must be tree (in other words, if the terms top-level +** AND-connected terms that are not part of a ON clause from a LEFT JOIN) +** then throughout the query replace all other occurrences of COLUMN +** with CONSTANT within the WHERE clause. +** +** For example, the query: +** +** SELECT * FROM t1, t2, t3 WHERE t1.a=39 AND t2.b=t1.a AND t3.c=t2.b +** +** Is transformed into +** +** SELECT * FROM t1, t2, t3 WHERE t1.a=39 AND t2.b=39 AND t3.c=39 +** +** Return true if any transformations where made and false if not. +** +** Implementation note: Constant propagation is tricky due to affinity +** and collating sequence interactions. Consider this example: +** +** CREATE TABLE t1(a INT,b TEXT); +** INSERT INTO t1 VALUES(123,'0123'); +** SELECT * FROM t1 WHERE a=123 AND b=a; +** SELECT * FROM t1 WHERE a=123 AND b=123; +** +** The two SELECT statements above should return different answers. b=a +** is alway true because the comparison uses numeric affinity, but b=123 +** is false because it uses text affinity and '0123' is not the same as '123'. +** To work around this, the expression tree is not actually changed from +** "b=a" to "b=123" but rather the "a" in "b=a" is tagged with EP_FixedCol +** and the "123" value is hung off of the pLeft pointer. Code generator +** routines know to generate the constant "123" instead of looking up the +** column value. Also, to avoid collation problems, this optimization is +** only attempted if the "a=123" term uses the default BINARY collation. +*/ +static int propagateConstants( + Parse *pParse, /* The parsing context */ + Select *p /* The query in which to propagate constants */ +){ + WhereConst x; + Walker w; + int nChng = 0; + x.pParse = pParse; + do{ + x.nConst = 0; + x.nChng = 0; + x.apExpr = 0; + findConstInWhere(&x, p->pWhere); + if( x.nConst ){ + memset(&w, 0, sizeof(w)); + w.pParse = pParse; + w.xExprCallback = propagateConstantExprRewrite; + w.xSelectCallback = sqlite3SelectWalkNoop; + w.xSelectCallback2 = 0; + w.walkerDepth = 0; + w.u.pConst = &x; + sqlite3WalkExpr(&w, p->pWhere); + sqlite3DbFree(x.pParse->db, x.apExpr); + nChng += x.nChng; + } + }while( x.nChng ); + return nChng; +} #if !defined(SQLITE_OMIT_SUBQUERY) || !defined(SQLITE_OMIT_VIEW) /* @@ -125406,7 +127381,7 @@ static int flattenSubquery( ** (2) The inner query is the recursive part of a common table expression. ** ** (3) The inner query has a LIMIT clause (since the changes to the WHERE -** close would change the meaning of the LIMIT). +** clause would change the meaning of the LIMIT). ** ** (4) The inner query is the right operand of a LEFT JOIN and the ** expression to be pushed down does not come from the ON clause @@ -125425,6 +127400,10 @@ static int flattenSubquery( ** But if the (b2=2) term were to be pushed down into the bb subquery, ** then the (1,1,NULL) row would be suppressed. ** +** (6) The inner query features one or more window-functions (since +** changes to the WHERE clause of the inner query could change the +** window over which window functions are calculated). +** ** Return 0 if no changes are made and non-zero if one or more WHERE clause ** terms are duplicated into the subquery. */ @@ -125440,6 +127419,10 @@ static int pushDownWhereTerms( if( pWhere==0 ) return 0; if( pSubq->selFlags & SF_Recursive ) return 0; /* restriction (2) */ +#ifndef SQLITE_OMIT_WINDOWFUNC + if( pSubq->pWin ) return 0; /* restriction (6) */ +#endif + #ifdef SQLITE_DEBUG /* Only the first term of a compound can have a WITH clause. But make ** sure no other terms are marked SF_Recursive in case something changes @@ -125885,6 +127868,35 @@ static void selectPopWith(Walker *pWalker, Select *p){ #define selectPopWith 0 #endif +/* +** The SrcList_item structure passed as the second argument represents a +** sub-query in the FROM clause of a SELECT statement. This function +** allocates and populates the SrcList_item.pTab object. If successful, +** SQLITE_OK is returned. Otherwise, if an OOM error is encountered, +** SQLITE_NOMEM. +*/ +SQLITE_PRIVATE int sqlite3ExpandSubquery(Parse *pParse, struct SrcList_item *pFrom){ + Select *pSel = pFrom->pSelect; + Table *pTab; + + assert( pSel ); + pFrom->pTab = pTab = sqlite3DbMallocZero(pParse->db, sizeof(Table)); + if( pTab==0 ) return SQLITE_NOMEM; + pTab->nTabRef = 1; + if( pFrom->zAlias ){ + pTab->zName = sqlite3DbStrDup(pParse->db, pFrom->zAlias); + }else{ + pTab->zName = sqlite3MPrintf(pParse->db, "subquery_%u", pSel->selId); + } + while( pSel->pPrior ){ pSel = pSel->pPrior; } + sqlite3ColumnsFromExprList(pParse, pSel->pEList,&pTab->nCol,&pTab->aCol); + pTab->iPKey = -1; + pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) ); + pTab->tabFlags |= TF_Ephemeral; + + return SQLITE_OK; +} + /* ** This routine is a Walker callback for "expanding" a SELECT statement. ** "Expanding" means to do the following: @@ -125957,19 +127969,7 @@ static int selectExpander(Walker *pWalker, Select *p){ assert( pSel!=0 ); assert( pFrom->pTab==0 ); if( sqlite3WalkSelect(pWalker, pSel) ) return WRC_Abort; - pFrom->pTab = pTab = sqlite3DbMallocZero(db, sizeof(Table)); - if( pTab==0 ) return WRC_Abort; - pTab->nTabRef = 1; - if( pFrom->zAlias ){ - pTab->zName = sqlite3DbStrDup(db, pFrom->zAlias); - }else{ - pTab->zName = sqlite3MPrintf(db, "subquery_%p", (void*)pTab); - } - while( pSel->pPrior ){ pSel = pSel->pPrior; } - sqlite3ColumnsFromExprList(pParse, pSel->pEList,&pTab->nCol,&pTab->aCol); - pTab->iPKey = -1; - pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) ); - pTab->tabFlags |= TF_Ephemeral; + if( sqlite3ExpandSubquery(pParse, pFrom) ) return WRC_Abort; #endif }else{ /* An ordinary table or view name in the FROM clause */ @@ -125992,7 +127992,6 @@ static int selectExpander(Walker *pWalker, Select *p){ if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort; assert( pFrom->pSelect==0 ); pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0); - sqlite3SelectSetName(pFrom->pSelect, pTab->zName); nCol = pTab->nCol; pTab->nCol = -1; sqlite3WalkSelect(pWalker, pFrom->pSelect); @@ -126270,7 +128269,7 @@ static void selectAddSubqueryTypeInfo(Walker *pWalker, Select *p){ struct SrcList_item *pFrom; assert( p->selFlags & SF_Resolved ); - assert( (p->selFlags & SF_HasTypeInfo)==0 ); + if( p->selFlags & SF_HasTypeInfo ) return; p->selFlags |= SF_HasTypeInfo; pParse = pWalker->pParse; pTabList = p->pSrc; @@ -126373,7 +128372,7 @@ static void resetAccumulator(Parse *pParse, AggInfo *pAggInfo){ "argument"); pFunc->iDistinct = -1; }else{ - KeyInfo *pKeyInfo = keyInfoFromExprList(pParse, pE->x.pList, 0, 0); + KeyInfo *pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pE->x.pList,0,0); sqlite3VdbeAddOp4(v, OP_OpenEphemeral, pFunc->iDistinct, 0, 0, (char*)pKeyInfo, P4_KEYINFO); } @@ -126397,11 +128396,17 @@ static void finalizeAggFunctions(Parse *pParse, AggInfo *pAggInfo){ } } + /* ** Update the accumulator memory cells for an aggregate based on ** the current cursor position. +** +** If regAcc is non-zero and there are no min() or max() aggregates +** in pAggInfo, then only populate the pAggInfo->nAccumulator accumulator +** registers i register regAcc contains 0. The caller will take care +** of setting and clearing regAcc. */ -static void updateAccumulator(Parse *pParse, AggInfo *pAggInfo){ +static void updateAccumulator(Parse *pParse, int regAcc, AggInfo *pAggInfo){ Vdbe *v = pParse->pVdbe; int i; int regHit = 0; @@ -126444,36 +128449,24 @@ static void updateAccumulator(Parse *pParse, AggInfo *pAggInfo){ if( regHit==0 && pAggInfo->nAccumulator ) regHit = ++pParse->nMem; sqlite3VdbeAddOp4(v, OP_CollSeq, regHit, 0, 0, (char *)pColl, P4_COLLSEQ); } - sqlite3VdbeAddOp3(v, OP_AggStep0, 0, regAgg, pF->iMem); + sqlite3VdbeAddOp3(v, OP_AggStep, 0, regAgg, pF->iMem); sqlite3VdbeAppendP4(v, pF->pFunc, P4_FUNCDEF); sqlite3VdbeChangeP5(v, (u8)nArg); - sqlite3ExprCacheAffinityChange(pParse, regAgg, nArg); sqlite3ReleaseTempRange(pParse, regAgg, nArg); if( addrNext ){ sqlite3VdbeResolveLabel(v, addrNext); - sqlite3ExprCacheClear(pParse); } } - - /* Before populating the accumulator registers, clear the column cache. - ** Otherwise, if any of the required column values are already present - ** in registers, sqlite3ExprCode() may use OP_SCopy to copy the value - ** to pC->iMem. But by the time the value is used, the original register - ** may have been used, invalidating the underlying buffer holding the - ** text or blob value. See ticket [883034dcb5]. - ** - ** Another solution would be to change the OP_SCopy used to copy cached - ** values to an OP_Copy. - */ + if( regHit==0 && pAggInfo->nAccumulator ){ + regHit = regAcc; + } if( regHit ){ addrHitTest = sqlite3VdbeAddOp1(v, OP_If, regHit); VdbeCoverage(v); } - sqlite3ExprCacheClear(pParse); for(i=0, pC=pAggInfo->aCol; inAccumulator; i++, pC++){ sqlite3ExprCode(pParse, pC->pExpr, pC->iMem); } pAggInfo->directMode = 0; - sqlite3ExprCacheClear(pParse); if( addrHitTest ){ sqlite3VdbeJumpHere(v, addrHitTest); } @@ -126603,6 +128596,7 @@ static struct SrcList_item *isSelfJoinView( ** The transformation only works if all of the following are true: ** ** * The subquery is a UNION ALL of two or more terms +** * The subquery does not have a LIMIT clause ** * There is no WHERE or GROUP BY or HAVING clauses on the subqueries ** * The outer query is a simple count(*) ** @@ -126626,6 +128620,7 @@ static int countOfViewOptimization(Parse *pParse, Select *p){ do{ if( pSub->op!=TK_ALL && pSub->pPrior ) return 0; /* Must be UNION ALL */ if( pSub->pWhere ) return 0; /* No WHERE clause */ + if( pSub->pLimit ) return 0; /* No LIMIT clause */ if( pSub->selFlags & SF_Aggregate ) return 0; /* Not an aggregate */ pSub = pSub->pPrior; /* Repeat over compound */ }while( pSub ); @@ -126738,14 +128733,10 @@ SQLITE_PRIVATE int sqlite3Select( p->selFlags &= ~SF_Distinct; } sqlite3SelectPrep(pParse, p, 0); - memset(&sSort, 0, sizeof(sSort)); - sSort.pOrderBy = p->pOrderBy; - pTabList = p->pSrc; if( pParse->nErr || db->mallocFailed ){ goto select_end; } assert( p->pEList!=0 ); - isAgg = (p->selFlags & SF_Aggregate)!=0; #if SELECTTRACE_ENABLED if( sqlite3SelectTrace & 0x104 ){ SELECTTRACE(0x104,pParse,p, ("after name resolution:\n")); @@ -126757,6 +128748,22 @@ SQLITE_PRIVATE int sqlite3Select( generateColumnNames(pParse, p); } +#ifndef SQLITE_OMIT_WINDOWFUNC + if( sqlite3WindowRewrite(pParse, p) ){ + goto select_end; + } +#if SELECTTRACE_ENABLED + if( sqlite3SelectTrace & 0x108 ){ + SELECTTRACE(0x104,pParse,p, ("after window rewrite:\n")); + sqlite3TreeViewSelect(0, p, 0); + } +#endif +#endif /* SQLITE_OMIT_WINDOWFUNC */ + pTabList = p->pSrc; + isAgg = (p->selFlags & SF_Aggregate)!=0; + memset(&sSort, 0, sizeof(sSort)); + sSort.pOrderBy = p->pOrderBy; + /* Try to various optimizations (flattening subqueries, and strength ** reduction of join operators) in the FROM clause up into the main query */ @@ -126856,6 +128863,35 @@ SQLITE_PRIVATE int sqlite3Select( } #endif + /* Do the WHERE-clause constant propagation optimization if this is + ** a join. No need to speed time on this operation for non-join queries + ** as the equivalent optimization will be handled by query planner in + ** sqlite3WhereBegin(). + */ + if( pTabList->nSrc>1 + && OptimizationEnabled(db, SQLITE_PropagateConst) + && propagateConstants(pParse, p) + ){ +#if SELECTTRACE_ENABLED + if( sqlite3SelectTrace & 0x100 ){ + SELECTTRACE(0x100,pParse,p,("After constant propagation:\n")); + sqlite3TreeViewSelect(0, p, 0); + } +#endif + }else{ + SELECTTRACE(0x100,pParse,p,("Constant propagation not helpful\n")); + } + +#ifdef SQLITE_COUNTOFVIEW_OPTIMIZATION + if( OptimizationEnabled(db, SQLITE_QueryFlattener|SQLITE_CountOfView) + && countOfViewOptimization(pParse, p) + ){ + if( db->mallocFailed ) goto select_end; + pEList = p->pEList; + pTabList = p->pSrc; + } +#endif + /* For each term in the FROM clause, do two things: ** (1) Authorized unreferenced tables ** (2) Generate code for all sub-queries @@ -126929,7 +128965,8 @@ SQLITE_PRIVATE int sqlite3Select( ){ #if SELECTTRACE_ENABLED if( sqlite3SelectTrace & 0x100 ){ - SELECTTRACE(0x100,pParse,p,("After WHERE-clause push-down:\n")); + SELECTTRACE(0x100,pParse,p, + ("After WHERE-clause push-down into subquery %d:\n", pSub->selId)); sqlite3TreeViewSelect(0, p, 0); } #endif @@ -126963,7 +129000,7 @@ SQLITE_PRIVATE int sqlite3Select( VdbeComment((v, "%s", pItem->pTab->zName)); pItem->addrFillSub = addrTop; sqlite3SelectDestInit(&dest, SRT_Coroutine, pItem->regReturn); - ExplainQueryPlan((pParse, 1, "CO-ROUTINE 0x%p", pSub)); + ExplainQueryPlan((pParse, 1, "CO-ROUTINE %u", pSub->selId)); sqlite3Select(pParse, pSub, &dest); pItem->pTab->nRowLogEst = pSub->nSelectRow; pItem->fg.viaCoroutine = 1; @@ -127002,7 +129039,7 @@ SQLITE_PRIVATE int sqlite3Select( pSub->nSelectRow = pPrior->pSelect->nSelectRow; }else{ sqlite3SelectDestInit(&dest, SRT_EphemTab, pItem->iCursor); - ExplainQueryPlan((pParse, 1, "MATERIALIZE 0x%p", pSub)); + ExplainQueryPlan((pParse, 1, "MATERIALIZE %u", pSub->selId)); sqlite3Select(pParse, pSub, &dest); } pItem->pTab->nRowLogEst = pSub->nSelectRow; @@ -127033,16 +129070,6 @@ SQLITE_PRIVATE int sqlite3Select( } #endif -#ifdef SQLITE_COUNTOFVIEW_OPTIMIZATION - if( OptimizationEnabled(db, SQLITE_QueryFlattener|SQLITE_CountOfView) - && countOfViewOptimization(pParse, p) - ){ - if( db->mallocFailed ) goto select_end; - pEList = p->pEList; - pTabList = p->pSrc; - } -#endif - /* If the query is DISTINCT with an ORDER BY but is not an aggregate, and ** if the select-list is the same as the ORDER BY list, then this query ** can be rewritten as a GROUP BY. In other words, this: @@ -127086,7 +129113,8 @@ SQLITE_PRIVATE int sqlite3Select( */ if( sSort.pOrderBy ){ KeyInfo *pKeyInfo; - pKeyInfo = keyInfoFromExprList(pParse, sSort.pOrderBy, 0, pEList->nExpr); + pKeyInfo = sqlite3KeyInfoFromExprList( + pParse, sSort.pOrderBy, 0, pEList->nExpr); sSort.iECursor = pParse->nTab++; sSort.addrSortIndex = sqlite3VdbeAddOp4(v, OP_OpenEphemeral, @@ -127120,9 +129148,9 @@ SQLITE_PRIVATE int sqlite3Select( if( p->selFlags & SF_Distinct ){ sDistinct.tabTnct = pParse->nTab++; sDistinct.addrTnct = sqlite3VdbeAddOp4(v, OP_OpenEphemeral, - sDistinct.tabTnct, 0, 0, - (char*)keyInfoFromExprList(pParse, p->pEList,0,0), - P4_KEYINFO); + sDistinct.tabTnct, 0, 0, + (char*)sqlite3KeyInfoFromExprList(pParse, p->pEList,0,0), + P4_KEYINFO); sqlite3VdbeChangeP5(v, BTREE_UNORDERED); sDistinct.eTnctType = WHERE_DISTINCT_UNORDERED; }else{ @@ -127131,9 +129159,16 @@ SQLITE_PRIVATE int sqlite3Select( if( !isAgg && pGroupBy==0 ){ /* No aggregate functions and no GROUP BY clause */ - u16 wctrlFlags = (sDistinct.isTnct ? WHERE_WANT_DISTINCT : 0); + u16 wctrlFlags = (sDistinct.isTnct ? WHERE_WANT_DISTINCT : 0) + | (p->selFlags & SF_FixedLimit); +#ifndef SQLITE_OMIT_WINDOWFUNC + Window *pWin = p->pWin; /* Master window object (or NULL) */ + if( pWin ){ + sqlite3WindowCodeInit(pParse, pWin); + } +#endif assert( WHERE_USE_LIMIT==SF_FixedLimit ); - wctrlFlags |= p->selFlags & SF_FixedLimit; + /* Begin the database scan. */ SELECTTRACE(1,pParse,p,("WhereBegin\n")); @@ -127148,7 +129183,7 @@ SQLITE_PRIVATE int sqlite3Select( } if( sSort.pOrderBy ){ sSort.nOBSat = sqlite3WhereIsOrdered(pWInfo); - sSort.bOrderedInnerLoop = sqlite3WhereOrderedInnerLoop(pWInfo); + sSort.labelOBLopt = sqlite3WhereOrderByLimitOptLabel(pWInfo); if( sSort.nOBSat==sSort.pOrderBy->nExpr ){ sSort.pOrderBy = 0; } @@ -127162,15 +129197,37 @@ SQLITE_PRIVATE int sqlite3Select( sqlite3VdbeChangeToNoop(v, sSort.addrSortIndex); } - /* Use the standard inner loop. */ assert( p->pEList==pEList ); - selectInnerLoop(pParse, p, -1, &sSort, &sDistinct, pDest, - sqlite3WhereContinueLabel(pWInfo), - sqlite3WhereBreakLabel(pWInfo)); +#ifndef SQLITE_OMIT_WINDOWFUNC + if( pWin ){ + int addrGosub = sqlite3VdbeMakeLabel(v); + int iCont = sqlite3VdbeMakeLabel(v); + int iBreak = sqlite3VdbeMakeLabel(v); + int regGosub = ++pParse->nMem; - /* End the database scan loop. - */ - sqlite3WhereEnd(pWInfo); + sqlite3WindowCodeStep(pParse, p, pWInfo, regGosub, addrGosub); + + sqlite3VdbeAddOp2(v, OP_Goto, 0, iBreak); + sqlite3VdbeResolveLabel(v, addrGosub); + VdbeNoopComment((v, "inner-loop subroutine")); + sSort.labelOBLopt = 0; + selectInnerLoop(pParse, p, -1, &sSort, &sDistinct, pDest, iCont, iBreak); + sqlite3VdbeResolveLabel(v, iCont); + sqlite3VdbeAddOp1(v, OP_Return, regGosub); + VdbeComment((v, "end inner-loop subroutine")); + sqlite3VdbeResolveLabel(v, iBreak); + }else +#endif /* SQLITE_OMIT_WINDOWFUNC */ + { + /* Use the standard inner loop. */ + selectInnerLoop(pParse, p, -1, &sSort, &sDistinct, pDest, + sqlite3WhereContinueLabel(pWInfo), + sqlite3WhereBreakLabel(pWInfo)); + + /* End the database scan loop. + */ + sqlite3WhereEnd(pWInfo); + } }else{ /* This case when there exist aggregate functions or a GROUP BY clause ** or both */ @@ -127299,7 +129356,7 @@ SQLITE_PRIVATE int sqlite3Select( ** will be converted into a Noop. */ sAggInfo.sortingIdx = pParse->nTab++; - pKeyInfo = keyInfoFromExprList(pParse, pGroupBy, 0, sAggInfo.nColumn); + pKeyInfo = sqlite3KeyInfoFromExprList(pParse,pGroupBy,0,sAggInfo.nColumn); addrSortingIdx = sqlite3VdbeAddOp4(v, OP_SorterOpen, sAggInfo.sortingIdx, sAggInfo.nSortingColumn, 0, (char*)pKeyInfo, P4_KEYINFO); @@ -127318,8 +129375,6 @@ SQLITE_PRIVATE int sqlite3Select( pParse->nMem += pGroupBy->nExpr; sqlite3VdbeAddOp2(v, OP_Integer, 0, iAbortFlag); VdbeComment((v, "clear abort flag")); - sqlite3VdbeAddOp2(v, OP_Integer, 0, iUseFlag); - VdbeComment((v, "indicate accumulator empty")); sqlite3VdbeAddOp3(v, OP_Null, 0, iAMem, iAMem+pGroupBy->nExpr-1); /* Begin a loop that will extract all source rows in GROUP BY order. @@ -127365,15 +129420,14 @@ SQLITE_PRIVATE int sqlite3Select( } } regBase = sqlite3GetTempRange(pParse, nCol); - sqlite3ExprCacheClear(pParse); sqlite3ExprCodeExprList(pParse, pGroupBy, regBase, 0, 0); j = nGroupBy; for(i=0; iiSorterColumn>=j ){ int r1 = j + regBase; - sqlite3ExprCodeGetColumnToReg(pParse, - pCol->pTab, pCol->iColumn, pCol->iTable, r1); + sqlite3ExprCodeGetColumnOfTable(v, + pCol->pTab, pCol->iTable, pCol->iColumn, r1); j++; } } @@ -127389,8 +129443,6 @@ SQLITE_PRIVATE int sqlite3Select( sqlite3VdbeAddOp2(v, OP_SorterSort, sAggInfo.sortingIdx, addrEnd); VdbeComment((v, "GROUP BY sort")); VdbeCoverage(v); sAggInfo.useSortingIdx = 1; - sqlite3ExprCacheClear(pParse); - } /* If the index or temporary table used by the GROUP BY sort @@ -127413,7 +129465,6 @@ SQLITE_PRIVATE int sqlite3Select( ** from the previous row currently stored in a0, a1, a2... */ addrTopOfLoop = sqlite3VdbeCurrentAddr(v); - sqlite3ExprCacheClear(pParse); if( groupBySort ){ sqlite3VdbeAddOp3(v, OP_SorterData, sAggInfo.sortingIdx, sortOut, sortPTab); @@ -127452,7 +129503,7 @@ SQLITE_PRIVATE int sqlite3Select( ** the current row */ sqlite3VdbeJumpHere(v, addr1); - updateAccumulator(pParse, &sAggInfo); + updateAccumulator(pParse, iUseFlag, &sAggInfo); sqlite3VdbeAddOp2(v, OP_Integer, 1, iUseFlag); VdbeComment((v, "indicate data in accumulator")); @@ -127504,6 +129555,8 @@ SQLITE_PRIVATE int sqlite3Select( */ sqlite3VdbeResolveLabel(v, addrReset); resetAccumulator(pParse, &sAggInfo); + sqlite3VdbeAddOp2(v, OP_Integer, 0, iUseFlag); + VdbeComment((v, "indicate accumulator empty")); sqlite3VdbeAddOp1(v, OP_Return, regReset); } /* endif pGroupBy. Begin aggregate queries without GROUP BY: */ @@ -127569,6 +129622,23 @@ SQLITE_PRIVATE int sqlite3Select( }else #endif /* SQLITE_OMIT_BTREECOUNT */ { + int regAcc = 0; /* "populate accumulators" flag */ + + /* If there are accumulator registers but no min() or max() functions, + ** allocate register regAcc. Register regAcc will contain 0 the first + ** time the inner loop runs, and 1 thereafter. The code generated + ** by updateAccumulator() only updates the accumulator registers if + ** regAcc contains 0. */ + if( sAggInfo.nAccumulator ){ + for(i=0; ifuncFlags&SQLITE_FUNC_NEEDCOLL ) break; + } + if( i==sAggInfo.nFunc ){ + regAcc = ++pParse->nMem; + sqlite3VdbeAddOp2(v, OP_Integer, 0, regAcc); + } + } + /* This case runs if the aggregate has no GROUP BY clause. The ** processing is much simpler since there is only a single row ** of output. @@ -127590,7 +129660,8 @@ SQLITE_PRIVATE int sqlite3Select( if( pWInfo==0 ){ goto select_end; } - updateAccumulator(pParse, &sAggInfo); + updateAccumulator(pParse, regAcc, &sAggInfo); + if( regAcc ) sqlite3VdbeAddOp2(v, OP_Integer, 1, regAcc); if( sqlite3WhereIsOrdered(pWInfo)>0 ){ sqlite3VdbeGoto(v, sqlite3WhereBreakLabel(pWInfo)); VdbeComment((v, "%s() by index", @@ -128034,14 +130105,16 @@ SQLITE_PRIVATE void sqlite3BeginTrigger( goto trigger_cleanup; } assert( sqlite3SchemaMutexHeld(db, iDb, 0) ); - if( sqlite3HashFind(&(db->aDb[iDb].pSchema->trigHash),zName) ){ - if( !noErr ){ - sqlite3ErrorMsg(pParse, "trigger %T already exists", pName); - }else{ - assert( !db->init.busy ); - sqlite3CodeVerifySchema(pParse, iDb); + if( !IN_RENAME_OBJECT ){ + if( sqlite3HashFind(&(db->aDb[iDb].pSchema->trigHash),zName) ){ + if( !noErr ){ + sqlite3ErrorMsg(pParse, "trigger %T already exists", pName); + }else{ + assert( !db->init.busy ); + sqlite3CodeVerifySchema(pParse, iDb); + } + goto trigger_cleanup; } - goto trigger_cleanup; } /* Do not create a trigger on a system table */ @@ -128065,7 +130138,7 @@ SQLITE_PRIVATE void sqlite3BeginTrigger( } #ifndef SQLITE_OMIT_AUTHORIZATION - { + if( !IN_RENAME_OBJECT ){ int iTabDb = sqlite3SchemaToIndex(db, pTab->pSchema); int code = SQLITE_CREATE_TRIGGER; const char *zDb = db->aDb[iTabDb].zDbSName; @@ -128099,8 +130172,15 @@ SQLITE_PRIVATE void sqlite3BeginTrigger( pTrigger->pTabSchema = pTab->pSchema; pTrigger->op = (u8)op; pTrigger->tr_tm = tr_tm==TK_BEFORE ? TRIGGER_BEFORE : TRIGGER_AFTER; - pTrigger->pWhen = sqlite3ExprDup(db, pWhen, EXPRDUP_REDUCE); - pTrigger->pColumns = sqlite3IdListDup(db, pColumns); + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenRemap(pParse, pTrigger->table, pTableName->a[0].zName); + pTrigger->pWhen = pWhen; + pWhen = 0; + }else{ + pTrigger->pWhen = sqlite3ExprDup(db, pWhen, EXPRDUP_REDUCE); + } + pTrigger->pColumns = pColumns; + pColumns = 0; assert( pParse->pNewTrigger==0 ); pParse->pNewTrigger = pTrigger; @@ -128149,6 +130229,14 @@ SQLITE_PRIVATE void sqlite3FinishTrigger( goto triggerfinish_cleanup; } +#ifndef SQLITE_OMIT_ALTERTABLE + if( IN_RENAME_OBJECT ){ + assert( !db->init.busy ); + pParse->pNewTrigger = pTrig; + pTrig = 0; + }else +#endif + /* if we are not initializing, ** build the sqlite_master entry */ @@ -128190,7 +130278,7 @@ SQLITE_PRIVATE void sqlite3FinishTrigger( triggerfinish_cleanup: sqlite3DeleteTrigger(db, pTrig); - assert( !pParse->pNewTrigger ); + assert( IN_RENAME_OBJECT || !pParse->pNewTrigger ); sqlite3DeleteTriggerStep(db, pStepList); } @@ -128237,12 +130325,13 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerSelectStep( ** If an OOM error occurs, NULL is returned and db->mallocFailed is set. */ static TriggerStep *triggerStepAllocate( - sqlite3 *db, /* Database connection */ + Parse *pParse, /* Parser context */ u8 op, /* Trigger opcode */ Token *pName, /* The target name */ const char *zStart, /* Start of SQL text */ const char *zEnd /* End of SQL text */ ){ + sqlite3 *db = pParse->db; TriggerStep *pTriggerStep; pTriggerStep = sqlite3DbMallocZero(db, sizeof(TriggerStep) + pName->n + 1); @@ -128253,6 +130342,9 @@ static TriggerStep *triggerStepAllocate( pTriggerStep->zTarget = z; pTriggerStep->op = op; pTriggerStep->zSpan = triggerSpanDup(db, zStart, zEnd); + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenMap(pParse, pTriggerStep->zTarget, pName); + } } return pTriggerStep; } @@ -128265,7 +130357,7 @@ static TriggerStep *triggerStepAllocate( ** body of a trigger. */ SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep( - sqlite3 *db, /* The database connection */ + Parse *pParse, /* Parser */ Token *pTableName, /* Name of the table into which we insert */ IdList *pColumn, /* List of columns in pTableName to insert into */ Select *pSelect, /* A SELECT statement that supplies values */ @@ -128274,13 +130366,19 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep( const char *zStart, /* Start of SQL text */ const char *zEnd /* End of SQL text */ ){ + sqlite3 *db = pParse->db; TriggerStep *pTriggerStep; assert(pSelect != 0 || db->mallocFailed); - pTriggerStep = triggerStepAllocate(db, TK_INSERT, pTableName, zStart, zEnd); + pTriggerStep = triggerStepAllocate(pParse, TK_INSERT, pTableName,zStart,zEnd); if( pTriggerStep ){ - pTriggerStep->pSelect = sqlite3SelectDup(db, pSelect, EXPRDUP_REDUCE); + if( IN_RENAME_OBJECT ){ + pTriggerStep->pSelect = pSelect; + pSelect = 0; + }else{ + pTriggerStep->pSelect = sqlite3SelectDup(db, pSelect, EXPRDUP_REDUCE); + } pTriggerStep->pIdList = pColumn; pTriggerStep->pUpsert = pUpsert; pTriggerStep->orconf = orconf; @@ -128301,7 +130399,7 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep( ** sees an UPDATE statement inside the body of a CREATE TRIGGER. */ SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep( - sqlite3 *db, /* The database connection */ + Parse *pParse, /* Parser */ Token *pTableName, /* Name of the table to be updated */ ExprList *pEList, /* The SET clause: list of column and new values */ Expr *pWhere, /* The WHERE clause */ @@ -128309,12 +130407,20 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep( const char *zStart, /* Start of SQL text */ const char *zEnd /* End of SQL text */ ){ + sqlite3 *db = pParse->db; TriggerStep *pTriggerStep; - pTriggerStep = triggerStepAllocate(db, TK_UPDATE, pTableName, zStart, zEnd); + pTriggerStep = triggerStepAllocate(pParse, TK_UPDATE, pTableName,zStart,zEnd); if( pTriggerStep ){ - pTriggerStep->pExprList = sqlite3ExprListDup(db, pEList, EXPRDUP_REDUCE); - pTriggerStep->pWhere = sqlite3ExprDup(db, pWhere, EXPRDUP_REDUCE); + if( IN_RENAME_OBJECT ){ + pTriggerStep->pExprList = pEList; + pTriggerStep->pWhere = pWhere; + pEList = 0; + pWhere = 0; + }else{ + pTriggerStep->pExprList = sqlite3ExprListDup(db, pEList, EXPRDUP_REDUCE); + pTriggerStep->pWhere = sqlite3ExprDup(db, pWhere, EXPRDUP_REDUCE); + } pTriggerStep->orconf = orconf; } sqlite3ExprListDelete(db, pEList); @@ -128328,17 +130434,23 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerUpdateStep( ** sees a DELETE statement inside the body of a CREATE TRIGGER. */ SQLITE_PRIVATE TriggerStep *sqlite3TriggerDeleteStep( - sqlite3 *db, /* Database connection */ + Parse *pParse, /* Parser */ Token *pTableName, /* The table from which rows are deleted */ Expr *pWhere, /* The WHERE clause */ const char *zStart, /* Start of SQL text */ const char *zEnd /* End of SQL text */ ){ + sqlite3 *db = pParse->db; TriggerStep *pTriggerStep; - pTriggerStep = triggerStepAllocate(db, TK_DELETE, pTableName, zStart, zEnd); + pTriggerStep = triggerStepAllocate(pParse, TK_DELETE, pTableName,zStart,zEnd); if( pTriggerStep ){ - pTriggerStep->pWhere = sqlite3ExprDup(db, pWhere, EXPRDUP_REDUCE); + if( IN_RENAME_OBJECT ){ + pTriggerStep->pWhere = pWhere; + pWhere = 0; + }else{ + pTriggerStep->pWhere = sqlite3ExprDup(db, pWhere, EXPRDUP_REDUCE); + } pTriggerStep->orconf = OE_Default; } sqlite3ExprDelete(db, pWhere); @@ -129523,7 +131635,7 @@ SQLITE_PRIVATE void sqlite3Update( if( !isView && aiCurOnePass[0]!=iDataCur && aiCurOnePass[1]!=iDataCur ){ assert( pPk ); sqlite3VdbeAddOp4Int(v, OP_NotFound, iDataCur, labelBreak, regKey,nKey); - VdbeCoverageNeverTaken(v); + VdbeCoverage(v); } if( eOnePass!=ONEPASS_SINGLE ){ labelContinue = sqlite3VdbeMakeLabel(v); @@ -129610,13 +131722,7 @@ SQLITE_PRIVATE void sqlite3Update( */ testcase( i==31 ); testcase( i==32 ); - sqlite3ExprCodeGetColumnToReg(pParse, pTab, i, iDataCur, regNew+i); - if( tmask & TRIGGER_BEFORE ){ - /* This value will be recomputed in After-BEFORE-trigger-reload-loop - ** below, so make sure that it is not cached and reused. - ** Ticket d85fffd6ffe856092ed8daefa811b1e399706b28. */ - sqlite3ExprCacheRemove(pParse, regNew+i, 1); - } + sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, i, regNew+i); }else{ sqlite3VdbeAddOp2(v, OP_Null, 0, regNew+i); } @@ -130153,10 +132259,12 @@ SQLITE_PRIVATE void sqlite3UpsertDoUpdate( Vdbe *v = pParse->pVdbe; sqlite3 *db = pParse->db; SrcList *pSrc; /* FROM clause for the UPDATE */ - int iDataCur = pUpsert->iDataCur; + int iDataCur; assert( v!=0 ); + assert( pUpsert!=0 ); VdbeNoopComment((v, "Begin DO UPDATE of UPSERT")); + iDataCur = pUpsert->iDataCur; if( pIdx && iCur!=iDataCur ){ if( HasRowid(pTab) ){ int regRowid = sqlite3GetTempReg(pParse); @@ -130426,7 +132534,7 @@ SQLITE_PRIVATE int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db, int iDb){ */ rc = execSql(db, pzErrMsg, "BEGIN"); if( rc!=SQLITE_OK ) goto end_of_vacuum; - rc = sqlite3BtreeBeginTrans(pMain, 2); + rc = sqlite3BtreeBeginTrans(pMain, 2, 0); if( rc!=SQLITE_OK ) goto end_of_vacuum; /* Do not attempt to change the page size for a WAL database */ @@ -130844,7 +132952,7 @@ SQLITE_PRIVATE void sqlite3VtabUnlockList(sqlite3 *db){ assert( sqlite3_mutex_held(db->mutex) ); if( p ){ - sqlite3ExpirePreparedStatements(db); + sqlite3ExpirePreparedStatements(db, 0); do { VTable *pNext = p->pNext; sqlite3VtabUnlock(p); @@ -131340,7 +133448,7 @@ SQLITE_API int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){ assert( IsVirtual(pTab) ); memset(&sParse, 0, sizeof(sParse)); - sParse.declareVtab = 1; + sParse.eParseMode = PARSE_MODE_DECLARE_VTAB; sParse.db = db; sParse.nQueryLoop = 1; if( SQLITE_OK==sqlite3RunParser(&sParse, zCreateTable, &zErr) @@ -131381,7 +133489,7 @@ SQLITE_API int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){ sqlite3DbFree(db, zErr); rc = SQLITE_ERROR; } - sParse.declareVtab = 0; + sParse.eParseMode = PARSE_MODE_NORMAL; if( sParse.pVdbe ){ sqlite3VdbeFinalize(sParse.pVdbe); @@ -131935,6 +134043,8 @@ struct WhereLevel { struct InLoop { int iCur; /* The VDBE cursor used by this IN operator */ int addrInTop; /* Top of the IN loop */ + int iBase; /* Base register of multi-key index record */ + int nPrefix; /* Number of prior entires in the key */ u8 eEndLoopOp; /* IN Loop terminator. OP_Next or OP_Prev */ } *aInLoop; /* Information about each nested IN operator */ } in; /* Used when pWLoop->wsFlags&WHERE_IN_ABLE */ @@ -132173,6 +134283,7 @@ struct WhereClause { WhereInfo *pWInfo; /* WHERE clause processing context */ WhereClause *pOuter; /* Outer conjunction */ u8 op; /* Split operator. TK_AND or TK_OR */ + u8 hasOr; /* True if any a[].eOperator is WO_OR */ int nTerm; /* Number of terms */ int nSlot; /* Number of entries in a[] */ WhereTerm *a; /* Each a[] describes a term of the WHERE cluase */ @@ -132346,6 +134457,7 @@ SQLITE_PRIVATE void sqlite3WhereClauseInit(WhereClause*,WhereInfo*); SQLITE_PRIVATE void sqlite3WhereClauseClear(WhereClause*); SQLITE_PRIVATE void sqlite3WhereSplit(WhereClause*,Expr*,u8); SQLITE_PRIVATE Bitmask sqlite3WhereExprUsage(WhereMaskSet*, Expr*); +SQLITE_PRIVATE Bitmask sqlite3WhereExprUsageNN(WhereMaskSet*, Expr*); SQLITE_PRIVATE Bitmask sqlite3WhereExprListUsage(WhereMaskSet*, ExprList*); SQLITE_PRIVATE void sqlite3WhereExprAnalyze(SrcList*, WhereClause*); SQLITE_PRIVATE void sqlite3WhereTabFuncArgs(Parse*, struct SrcList_item*, WhereClause*); @@ -132408,6 +134520,7 @@ SQLITE_PRIVATE void sqlite3WhereTabFuncArgs(Parse*, struct SrcList_item*, WhereC #define WHERE_SKIPSCAN 0x00008000 /* Uses the skip-scan algorithm */ #define WHERE_UNQ_WANTED 0x00010000 /* WHERE_ONEROW would have been helpful*/ #define WHERE_PARTIALIDX 0x00020000 /* The automatic index is partial */ +#define WHERE_IN_EARLYOUT 0x00040000 /* Perhaps quit IN loops early */ /************** End of whereInt.h ********************************************/ /************** Continuing where we left off in wherecode.c ******************/ @@ -132542,7 +134655,7 @@ SQLITE_PRIVATE int sqlite3WhereExplainOneScan( sqlite3StrAccumInit(&str, db, zBuf, sizeof(zBuf), SQLITE_MAX_LENGTH); sqlite3_str_appendall(&str, isSearch ? "SEARCH" : "SCAN"); if( pItem->pSelect ){ - sqlite3_str_appendf(&str, " SUBQUERY 0x%p", pItem->pSelect); + sqlite3_str_appendf(&str, " SUBQUERY %u", pItem->pSelect->selId); }else{ sqlite3_str_appendf(&str, " TABLE %s", pItem->zName); } @@ -132739,7 +134852,6 @@ static void codeApplyAffinity(Parse *pParse, int base, int n, char *zAff){ /* Code the OP_Affinity opcode if there is anything left to do. */ if( n>0 ){ sqlite3VdbeAddOp4(v, OP_Affinity, base, n, 0, zAff, n); - sqlite3ExprCacheAffinityChange(pParse, base, n); } } @@ -132983,7 +135095,14 @@ static int codeEqualityTerm( sqlite3VdbeAddOp1(v, OP_IsNull, iOut); VdbeCoverage(v); if( i==iEq ){ pIn->iCur = iTab; - pIn->eEndLoopOp = bRev ? OP_PrevIfOpen : OP_NextIfOpen; + pIn->eEndLoopOp = bRev ? OP_Prev : OP_Next; + if( iEq>0 && (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 ){ + pIn->iBase = iReg - i; + pIn->nPrefix = i; + pLoop->wsFlags |= WHERE_IN_EARLYOUT; + }else{ + pIn->nPrefix = 0; + } }else{ pIn->eEndLoopOp = OP_Noop; } @@ -133270,11 +135389,8 @@ static int codeCursorHintFixExpr(Walker *pWalker, Expr *pExpr){ struct CCurHint *pHint = pWalker->u.pCCurHint; if( pExpr->op==TK_COLUMN ){ if( pExpr->iTable!=pHint->iTabCur ){ - Vdbe *v = pWalker->pParse->pVdbe; int reg = ++pWalker->pParse->nMem; /* Register for column value */ - sqlite3ExprCodeGetColumnOfTable( - v, pExpr->pTab, pExpr->iTable, pExpr->iColumn, reg - ); + sqlite3ExprCode(pWalker->pParse, pExpr, reg); pExpr->op = TK_REGISTER; pExpr->iTable = reg; }else if( pHint->pIdx!=0 ){ @@ -133627,7 +135743,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart( sqlite3VdbeAddOp3(v, OP_InitCoroutine, regYield, 0, pTabItem->addrFillSub); pLevel->p2 = sqlite3VdbeAddOp2(v, OP_Yield, regYield, addrBrk); VdbeCoverage(v); - VdbeComment((v, "next row of \"%s\"", pTabItem->pTab->zName)); + VdbeComment((v, "next row of %s", pTabItem->pTab->zName)); pLevel->op = OP_Goto; }else @@ -133641,7 +135757,6 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart( int nConstraint = pLoop->nLTerm; int iIn; /* Counter for IN constraints */ - sqlite3ExprCachePush(pParse); iReg = sqlite3GetTempRange(pParse, nConstraint+2); addrNotFound = pLevel->addrBrk; for(j=0; jaddrNxt; sqlite3VdbeAddOp3(v, OP_SeekRowid, iCur, addrNxt, iRowidReg); VdbeCoverage(v); - sqlite3ExprCacheAffinityChange(pParse, iRowidReg, 1); - sqlite3ExprCacheStore(pParse, iCur, -1, iRowidReg); - VdbeComment((v, "pk")); pLevel->op = OP_Noop; }else if( (pLoop->wsFlags & WHERE_IPK)!=0 && (pLoop->wsFlags & WHERE_COLUMN_RANGE)!=0 @@ -133810,7 +135921,6 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart( VdbeCoverageIf(v, pX->op==TK_LE); VdbeCoverageIf(v, pX->op==TK_LT); VdbeCoverageIf(v, pX->op==TK_GE); - sqlite3ExprCacheAffinityChange(pParse, r1, 1); sqlite3ReleaseTempReg(pParse, rTemp); }else{ sqlite3VdbeAddOp2(v, bRev ? OP_Last : OP_Rewind, iCur, addrHalt); @@ -133845,7 +135955,6 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart( if( testOp!=OP_Noop ){ iRowidReg = ++pParse->nMem; sqlite3VdbeAddOp2(v, OP_Rowid, iCur, iRowidReg); - sqlite3ExprCacheStore(pParse, iCur, -1, iRowidReg); sqlite3VdbeAddOp3(v, testOp, memEndValue, addrBrk, iRowidReg); VdbeCoverageIf(v, testOp==OP_Le); VdbeCoverageIf(v, testOp==OP_Lt); @@ -134050,6 +136159,9 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart( ** above has already left the cursor sitting on the correct row, ** so no further seeking is needed */ }else{ + if( pLoop->wsFlags & WHERE_IN_EARLYOUT ){ + sqlite3VdbeAddOp1(v, OP_SeekHit, iIdxCur); + } op = aStartOp[(start_constraints<<2) + (startEq<<1) + bRev]; assert( op!=0 ); sqlite3VdbeAddOp4Int(v, op, iIdxCur, addrNxt, regBase, nConstraint); @@ -134068,7 +136180,6 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart( nConstraint = nEq; if( pRangeEnd ){ Expr *pRight = pRangeEnd->pExpr->pRight; - sqlite3ExprCacheRemove(pParse, regBase+nEq, 1); codeExprOrVector(pParse, pRight, regBase+nEq, nTop); whereLikeOptimizationStringFixup(v, pLevel, pRangeEnd); if( (pRangeEnd->wtFlags & TERM_VNULL)==0 @@ -134093,7 +136204,6 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart( } }else if( bStopAtNull ){ sqlite3VdbeAddOp2(v, OP_Null, 0, regBase+nEq); - sqlite3ExprCacheRemove(pParse, regBase+nEq, 1); endEq = 0; nConstraint++; } @@ -134113,6 +136223,10 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart( testcase( op==OP_IdxLE ); VdbeCoverageIf(v, op==OP_IdxLE ); } + if( pLoop->wsFlags & WHERE_IN_EARLYOUT ){ + sqlite3VdbeAddOp2(v, OP_SeekHit, iIdxCur, 1); + } + /* Seek the table cursor, if required */ if( omitTable ){ /* pIdx is a covering index. No need to access the main table. */ @@ -134123,7 +136237,6 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart( )){ iRowidReg = ++pParse->nMem; sqlite3VdbeAddOp2(v, OP_IdxRowid, iIdxCur, iRowidReg); - sqlite3ExprCacheStore(pParse, iCur, -1, iRowidReg); sqlite3VdbeAddOp3(v, OP_NotExists, iCur, 0, iRowidReg); VdbeCoverage(v); }else{ @@ -134358,23 +136471,23 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart( ** row will be skipped in subsequent sub-WHERE clauses. */ if( (pWInfo->wctrlFlags & WHERE_DUPLICATES_OK)==0 ){ - int r; int iSet = ((ii==pOrWc->nTerm-1)?-1:ii); if( HasRowid(pTab) ){ - r = sqlite3ExprCodeGetColumn(pParse, pTab, -1, iCur, regRowid, 0); + sqlite3ExprCodeGetColumnOfTable(v, pTab, iCur, -1, regRowid); jmp1 = sqlite3VdbeAddOp4Int(v, OP_RowSetTest, regRowset, 0, - r,iSet); + regRowid, iSet); VdbeCoverage(v); }else{ Index *pPk = sqlite3PrimaryKeyIndex(pTab); int nPk = pPk->nKeyCol; int iPk; + int r; /* Read the PK into an array of temp registers. */ r = sqlite3GetTempRange(pParse, nPk); for(iPk=0; iPkaiColumn[iPk]; - sqlite3ExprCodeGetColumnToReg(pParse, pTab, iCol, iCur, r+iPk); + sqlite3ExprCodeGetColumnOfTable(v, pTab, iCur, iCol, r+iPk); } /* Check if the temp table already contains this key. If so, @@ -134607,7 +136720,6 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart( pLevel->addrFirst = sqlite3VdbeCurrentAddr(v); sqlite3VdbeAddOp2(v, OP_Integer, 1, pLevel->iLeftJoin); VdbeComment((v, "record LEFT JOIN hit")); - sqlite3ExprCacheClear(pParse); for(pTerm=pWC->a, j=0; jnTerm; j++, pTerm++){ testcase( pTerm->wtFlags & TERM_VIRTUAL ); testcase( pTerm->wtFlags & TERM_CODED ); @@ -134823,18 +136935,18 @@ static int isLikeOrGlob( int *pisComplete, /* True if the only wildcard is % in the last character */ int *pnoCase /* True if uppercase is equivalent to lowercase */ ){ - const u8 *z = 0; /* String on RHS of LIKE operator */ + const u8 *z = 0; /* String on RHS of LIKE operator */ Expr *pRight, *pLeft; /* Right and left size of LIKE operator */ ExprList *pList; /* List of operands to the LIKE operator */ - int c; /* One character in z[] */ + u8 c; /* One character in z[] */ int cnt; /* Number of non-wildcard prefix characters */ - char wc[4]; /* Wildcard characters */ + u8 wc[4]; /* Wildcard characters */ sqlite3 *db = pParse->db; /* Database connection */ sqlite3_value *pVal = 0; int op; /* Opcode of pRight */ int rc; /* Result code to return */ - if( !sqlite3IsLikeFunction(db, pExpr, pnoCase, wc) ){ + if( !sqlite3IsLikeFunction(db, pExpr, pnoCase, (char*)wc) ){ return 0; } #ifdef SQLITE_EBCDIC @@ -134859,23 +136971,6 @@ static int isLikeOrGlob( } if( z ){ - /* If the RHS begins with a digit or a minus sign, then the LHS must - ** be an ordinary column (not a virtual table column) with TEXT affinity. - ** Otherwise the LHS might be numeric and "lhs >= rhs" would be false - ** even though "lhs LIKE rhs" is true. But if the RHS does not start - ** with a digit or '-', then "lhs LIKE rhs" will always be false if - ** the LHS is numeric and so the optimization still works. - */ - if( sqlite3Isdigit(z[0]) || z[0]=='-' ){ - if( pLeft->op!=TK_COLUMN - || sqlite3ExprAffinity(pLeft)!=SQLITE_AFF_TEXT - || IsVirtual(pLeft->pTab) /* Value might be numeric */ - ){ - sqlite3ValueFree(pVal); - return 0; - } - } - /* Count the number of prefix characters prior to the first wildcard */ cnt = 0; while( (c=z[cnt])!=0 && c!=wc[0] && c!=wc[1] && c!=wc[2] ){ @@ -134885,11 +136980,13 @@ static int isLikeOrGlob( /* The optimization is possible only if (1) the pattern does not begin ** with a wildcard and if (2) the non-wildcard prefix does not end with - ** an (illegal 0xff) character. The second condition is necessary so + ** an (illegal 0xff) character, or (3) the pattern does not consist of + ** a single escape character. The second condition is necessary so ** that we can increment the prefix key to find an upper bound for the - ** range search. - */ - if( cnt!=0 && 255!=(u8)z[cnt-1] ){ + ** range search. The third is because the caller assumes that the pattern + ** consists of at least one character after all escapes have been + ** removed. */ + if( cnt!=0 && 255!=(u8)z[cnt-1] && (cnt>1 || z[0]!=wc[3]) ){ Expr *pPrefix; /* A "complete" match if the pattern ends with "*" or "%" */ @@ -134906,6 +137003,32 @@ static int isLikeOrGlob( zNew[iTo++] = zNew[iFrom]; } zNew[iTo] = 0; + + /* If the RHS begins with a digit or a minus sign, then the LHS must be + ** an ordinary column (not a virtual table column) with TEXT affinity. + ** Otherwise the LHS might be numeric and "lhs >= rhs" would be false + ** even though "lhs LIKE rhs" is true. But if the RHS does not start + ** with a digit or '-', then "lhs LIKE rhs" will always be false if + ** the LHS is numeric and so the optimization still works. + ** + ** 2018-09-10 ticket c94369cae9b561b1f996d0054bfab11389f9d033 + ** The RHS pattern must not be '/%' because the termination condition + ** will then become "x<'0'" and if the affinity is numeric, will then + ** be converted into "x<0", which is incorrect. + */ + if( sqlite3Isdigit(zNew[0]) + || zNew[0]=='-' + || (zNew[0]+1=='0' && iTo==1) + ){ + if( pLeft->op!=TK_COLUMN + || sqlite3ExprAffinity(pLeft)!=SQLITE_AFF_TEXT + || IsVirtual(pLeft->pTab) /* Value might be numeric */ + ){ + sqlite3ExprDelete(db, pPrefix); + sqlite3ValueFree(pVal); + return 0; + } + } } *ppPrefix = pPrefix; @@ -134967,6 +137090,7 @@ static int isLikeOrGlob( ** If the expression matches none of the patterns above, return 0. */ static int isAuxiliaryVtabOperator( + sqlite3 *db, /* Parsing context */ Expr *pExpr, /* Test this expression */ unsigned char *peOp2, /* OUT: 0 for MATCH, or else an op2 value */ Expr **ppLeft, /* Column expression to left of MATCH/op2 */ @@ -134990,16 +137114,54 @@ static int isAuxiliaryVtabOperator( if( pList==0 || pList->nExpr!=2 ){ return 0; } + + /* Built-in operators MATCH, GLOB, LIKE, and REGEXP attach to a + ** virtual table on their second argument, which is the same as + ** the left-hand side operand in their in-fix form. + ** + ** vtab_column MATCH expression + ** MATCH(expression,vtab_column) + */ pCol = pList->a[1].pExpr; - if( pCol->op!=TK_COLUMN || !IsVirtual(pCol->pTab) ){ - return 0; + if( pCol->op==TK_COLUMN && IsVirtual(pCol->pTab) ){ + for(i=0; iu.zToken, aOp[i].zOp)==0 ){ + *peOp2 = aOp[i].eOp2; + *ppRight = pList->a[0].pExpr; + *ppLeft = pCol; + return 1; + } + } } - for(i=0; iu.zToken, aOp[i].zOp)==0 ){ - *peOp2 = aOp[i].eOp2; - *ppRight = pList->a[0].pExpr; - *ppLeft = pCol; - return 1; + + /* We can also match against the first column of overloaded + ** functions where xFindFunction returns a value of at least + ** SQLITE_INDEX_CONSTRAINT_FUNCTION. + ** + ** OVERLOADED(vtab_column,expression) + ** + ** Historically, xFindFunction expected to see lower-case function + ** names. But for this use case, xFindFunction is expected to deal + ** with function names in an arbitrary case. + */ + pCol = pList->a[0].pExpr; + if( pCol->op==TK_COLUMN && IsVirtual(pCol->pTab) ){ + sqlite3_vtab *pVtab; + sqlite3_module *pMod; + void (*xNotUsed)(sqlite3_context*,int,sqlite3_value**); + void *pNotUsed; + pVtab = sqlite3GetVTable(db, pCol->pTab)->pVtab; + assert( pVtab!=0 ); + assert( pVtab->pModule!=0 ); + pMod = (sqlite3_module *)pVtab->pModule; + if( pMod->xFindFunction!=0 ){ + i = pMod->xFindFunction(pVtab,2, pExpr->u.zToken, &xNotUsed, &pNotUsed); + if( i>=SQLITE_INDEX_CONSTRAINT_FUNCTION ){ + *peOp2 = i; + *ppRight = pList->a[1].pExpr; + *ppLeft = pCol; + return 1; + } } } }else if( pExpr->op==TK_NE || pExpr->op==TK_ISNOT || pExpr->op==TK_NOTNULL ){ @@ -135301,7 +137463,12 @@ static void exprAnalyzeOrTerm( ** empty. */ pOrInfo->indexable = indexable; - pTerm->eOperator = indexable==0 ? 0 : WO_OR; + if( indexable ){ + pTerm->eOperator = WO_OR; + pWC->hasOr = 1; + }else{ + pTerm->eOperator = WO_OR; + } /* For a two-way OR, attempt to implementation case 2. */ @@ -135442,7 +137609,7 @@ static void exprAnalyzeOrTerm( idxNew = whereClauseInsert(pWC, pNew, TERM_VIRTUAL|TERM_DYNAMIC); testcase( idxNew==0 ); exprAnalyze(pSrc, pWC, idxNew); - pTerm = &pWC->a[idxTerm]; + /* pTerm = &pWC->a[idxTerm]; // would be needed if pTerm where used again */ markTermAsChild(pWC, idxNew, idxTerm); }else{ sqlite3ExprListDelete(db, pList); @@ -135481,7 +137648,7 @@ static int termIsEquivalence(Parse *pParse, Expr *pExpr){ return 0; } pColl = sqlite3BinaryCompareCollSeq(pParse, pExpr->pLeft, pExpr->pRight); - if( pColl==0 || sqlite3StrICmp(pColl->zName, "BINARY")==0 ) return 1; + if( sqlite3IsBinary(pColl) ) return 1; return sqlite3ExprCollSeqMatch(pParse, pExpr->pLeft, pExpr->pRight); } @@ -135640,7 +137807,7 @@ static void exprAnalyze( pTerm->prereqRight = sqlite3WhereExprUsage(pMaskSet, pExpr->pRight); } pMaskSet->bVarSelect = 0; - prereqAll = sqlite3WhereExprUsage(pMaskSet, pExpr); + prereqAll = sqlite3WhereExprUsageNN(pMaskSet, pExpr); if( pMaskSet->bVarSelect ) pTerm->wtFlags |= TERM_VARSELECT; if( ExprHasProperty(pExpr, EP_FromJoin) ){ Bitmask x = sqlite3WhereGetMask(pMaskSet, pExpr->iRightJoinTable); @@ -135822,7 +137989,7 @@ static void exprAnalyze( } *pC = c + 1; } - zCollSeqName = noCase ? "NOCASE" : "BINARY"; + zCollSeqName = noCase ? "NOCASE" : sqlite3StrBINARY; pNewExpr1 = sqlite3ExprDup(db, pLeft, 0); pNewExpr1 = sqlite3PExpr(pParse, TK_GE, sqlite3ExprAddCollateString(pParse,pNewExpr1,zCollSeqName), @@ -135859,7 +138026,7 @@ static void exprAnalyze( */ if( pWC->op==TK_AND ){ Expr *pRight = 0, *pLeft = 0; - int res = isAuxiliaryVtabOperator(pExpr, &eOp2, &pLeft, &pRight); + int res = isAuxiliaryVtabOperator(db, pExpr, &eOp2, &pLeft, &pRight); while( res-- > 0 ){ int idxNew; WhereTerm *pNewTerm; @@ -136033,6 +138200,7 @@ SQLITE_PRIVATE void sqlite3WhereClauseInit( WhereInfo *pWInfo /* The WHERE processing context */ ){ pWC->pWInfo = pWInfo; + pWC->hasOr = 0; pWC->pOuter = 0; pWC->nTerm = 0; pWC->nSlot = ArraySize(pWC->aStatic); @@ -136069,17 +138237,18 @@ SQLITE_PRIVATE void sqlite3WhereClauseClear(WhereClause *pWC){ ** a bitmask indicating which tables are used in that expression ** tree. */ -SQLITE_PRIVATE Bitmask sqlite3WhereExprUsage(WhereMaskSet *pMaskSet, Expr *p){ +SQLITE_PRIVATE Bitmask sqlite3WhereExprUsageNN(WhereMaskSet *pMaskSet, Expr *p){ Bitmask mask; - if( p==0 ) return 0; - if( p->op==TK_COLUMN ){ + if( p->op==TK_COLUMN && !ExprHasProperty(p, EP_FixedCol) ){ return sqlite3WhereGetMask(pMaskSet, p->iTable); + }else if( ExprHasProperty(p, EP_TokenOnly|EP_Leaf) ){ + assert( p->op!=TK_IF_NULL_ROW ); + return 0; } mask = (p->op==TK_IF_NULL_ROW) ? sqlite3WhereGetMask(pMaskSet, p->iTable) : 0; - assert( !ExprHasProperty(p, EP_TokenOnly) ); - if( p->pLeft ) mask |= sqlite3WhereExprUsage(pMaskSet, p->pLeft); + if( p->pLeft ) mask |= sqlite3WhereExprUsageNN(pMaskSet, p->pLeft); if( p->pRight ){ - mask |= sqlite3WhereExprUsage(pMaskSet, p->pRight); + mask |= sqlite3WhereExprUsageNN(pMaskSet, p->pRight); assert( p->x.pList==0 ); }else if( ExprHasProperty(p, EP_xIsSelect) ){ if( ExprHasProperty(p, EP_VarSelect) ) pMaskSet->bVarSelect = 1; @@ -136089,6 +138258,9 @@ SQLITE_PRIVATE Bitmask sqlite3WhereExprUsage(WhereMaskSet *pMaskSet, Expr *p){ } return mask; } +SQLITE_PRIVATE Bitmask sqlite3WhereExprUsage(WhereMaskSet *pMaskSet, Expr *p){ + return p ? sqlite3WhereExprUsageNN(pMaskSet,p) : 0; +} SQLITE_PRIVATE Bitmask sqlite3WhereExprListUsage(WhereMaskSet *pMaskSet, ExprList *pList){ int i; Bitmask mask = 0; @@ -136230,15 +138402,38 @@ SQLITE_PRIVATE int sqlite3WhereIsOrdered(WhereInfo *pWInfo){ } /* -** Return TRUE if the innermost loop of the WHERE clause implementation -** returns rows in ORDER BY order for complete run of the inner loop. +** In the ORDER BY LIMIT optimization, if the inner-most loop is known +** to emit rows in increasing order, and if the last row emitted by the +** inner-most loop did not fit within the sorter, then we can skip all +** subsequent rows for the current iteration of the inner loop (because they +** will not fit in the sorter either) and continue with the second inner +** loop - the loop immediately outside the inner-most. ** -** Across multiple iterations of outer loops, the output rows need not be -** sorted. As long as rows are sorted for just the innermost loop, this -** routine can return TRUE. +** When a row does not fit in the sorter (because the sorter already +** holds LIMIT+OFFSET rows that are smaller), then a jump is made to the +** label returned by this function. +** +** If the ORDER BY LIMIT optimization applies, the jump destination should +** be the continuation for the second-inner-most loop. If the ORDER BY +** LIMIT optimization does not apply, then the jump destination should +** be the continuation for the inner-most loop. +** +** It is always safe for this routine to return the continuation of the +** inner-most loop, in the sense that a correct answer will result. +** Returning the continuation the second inner loop is an optimization +** that might make the code run a little faster, but should not change +** the final answer. */ -SQLITE_PRIVATE int sqlite3WhereOrderedInnerLoop(WhereInfo *pWInfo){ - return pWInfo->bOrderedInnerLoop; +SQLITE_PRIVATE int sqlite3WhereOrderByLimitOptLabel(WhereInfo *pWInfo){ + WhereLevel *pInner; + if( !pWInfo->bOrderedInnerLoop ){ + /* The ORDER BY LIMIT optimization does not apply. Jump to the + ** continuation of the inner-most loop. */ + return pWInfo->iContinue; + } + pInner = &pWInfo->a[pWInfo->nLevel-1]; + assert( pInner->addrNxt!=0 ); + return pInner->addrNxt; } /* @@ -136965,7 +139160,6 @@ static void constructAutomaticIndex( VdbeComment((v, "for %s", pTable->zName)); /* Fill the automatic index with content */ - sqlite3ExprCachePush(pParse); pTabItem = &pWC->pWInfo->pTabList->a[pLevel->iFrom]; if( pTabItem->fg.viaCoroutine ){ int regYield = pTabItem->regReturn; @@ -136973,7 +139167,7 @@ static void constructAutomaticIndex( sqlite3VdbeAddOp3(v, OP_InitCoroutine, regYield, 0, pTabItem->addrFillSub); addrTop = sqlite3VdbeAddOp1(v, OP_Yield, regYield); VdbeCoverage(v); - VdbeComment((v, "next row of \"%s\"", pTabItem->pTab->zName)); + VdbeComment((v, "next row of %s", pTabItem->pTab->zName)); }else{ addrTop = sqlite3VdbeAddOp1(v, OP_Rewind, pLevel->iTabCur); VdbeCoverage(v); } @@ -137002,7 +139196,6 @@ static void constructAutomaticIndex( sqlite3VdbeChangeP5(v, SQLITE_STMTSTATUS_AUTOINDEX); sqlite3VdbeJumpHere(v, addrTop); sqlite3ReleaseTempReg(pParse, regRecord); - sqlite3ExprCachePop(pParse); /* Jump here when skipping the initialization */ sqlite3VdbeJumpHere(v, addrInit); @@ -137108,6 +139301,20 @@ static sqlite3_index_info *allocateIndexInfo( testcase( pTerm->eOperator & WO_ALL ); if( (pTerm->eOperator & ~(WO_EQUIV))==0 ) continue; if( pTerm->wtFlags & TERM_VNULL ) continue; + if( (pSrc->fg.jointype & JT_LEFT)!=0 + && !ExprHasProperty(pTerm->pExpr, EP_FromJoin) + && (pTerm->eOperator & (WO_IS|WO_ISNULL)) + ){ + /* An "IS" term in the WHERE clause where the virtual table is the rhs + ** of a LEFT JOIN. Do not pass this term to the virtual table + ** implementation, as this can lead to incorrect results from SQL such + ** as: + ** + ** "LEFT JOIN vtab WHERE vtab.col IS NULL" */ + testcase( pTerm->eOperator & WO_ISNULL ); + testcase( pTerm->eOperator & WO_IS ); + continue; + } assert( pTerm->u.leftColumn>=(-1) ); pIdxCons[j].iColumn = pTerm->u.leftColumn; pIdxCons[j].iTermOffset = i; @@ -137599,7 +139806,9 @@ static int whereRangeScanEst( Index *p = pLoop->u.btree.pIndex; int nEq = pLoop->u.btree.nEq; - if( p->nSample>0 && nEqnSampleCol ){ + if( p->nSample>0 && nEqnSampleCol + && OptimizationEnabled(pParse->db, SQLITE_Stat34) + ){ if( nEq==pBuilder->nRecValid ){ UnpackedRecord *pRec = pBuilder->pRec; tRowcnt a[2]; @@ -138614,7 +140823,6 @@ static int whereLoopAddBtreeIndex( if( eOp & WO_IN ){ Expr *pExpr = pTerm->pExpr; - pNew->wsFlags |= WHERE_COLUMN_IN; if( ExprHasProperty(pExpr, EP_xIsSelect) ){ /* "x IN (SELECT ...)": TUNING: the SELECT returns 25 rows */ int i; @@ -138634,6 +140842,42 @@ static int whereLoopAddBtreeIndex( assert( nIn>0 ); /* RHS always has 2 or more terms... The parser ** changes "x IN (?)" into "x=?". */ } + if( pProbe->hasStat1 ){ + LogEst M, logK, safetyMargin; + /* Let: + ** N = the total number of rows in the table + ** K = the number of entries on the RHS of the IN operator + ** M = the number of rows in the table that match terms to the + ** to the left in the same index. If the IN operator is on + ** the left-most index column, M==N. + ** + ** Given the definitions above, it is better to omit the IN operator + ** from the index lookup and instead do a scan of the M elements, + ** testing each scanned row against the IN operator separately, if: + ** + ** M*log(K) < K*log(N) + ** + ** Our estimates for M, K, and N might be inaccurate, so we build in + ** a safety margin of 2 (LogEst: 10) that favors using the IN operator + ** with the index, as using an index has better worst-case behavior. + ** If we do not have real sqlite_stat1 data, always prefer to use + ** the index. + */ + M = pProbe->aiRowLogEst[saved_nEq]; + logK = estLog(nIn); + safetyMargin = 10; /* TUNING: extra weight for indexed IN */ + if( M + logK + safetyMargin < nIn + rLogSize ){ + WHERETRACE(0x40, + ("Scan preferred over IN operator on column %d of \"%s\" (%d<%d)\n", + saved_nEq, pProbe->zName, M+logK+10, nIn+rLogSize)); + continue; + }else{ + WHERETRACE(0x40, + ("IN operator preferred on column %d of \"%s\" (%d>=%d)\n", + saved_nEq, pProbe->zName, M+logK+10, nIn+rLogSize)); + } + } + pNew->wsFlags |= WHERE_COLUMN_IN; }else if( eOp & (WO_EQ|WO_IS) ){ int iCol = pProbe->aiColumn[saved_nEq]; pNew->wsFlags |= WHERE_COLUMN_EQ; @@ -138712,6 +140956,7 @@ static int whereLoopAddBtreeIndex( && pProbe->nSample && pNew->u.btree.nEq<=pProbe->nSampleCol && ((eOp & WO_IN)==0 || !ExprHasProperty(pTerm->pExpr, EP_xIsSelect)) + && OptimizationEnabled(db, SQLITE_Stat34) ){ Expr *pExpr = pTerm->pExpr; if( (eOp & (WO_EQ|WO_ISNULL|WO_IS))!=0 ){ @@ -138800,6 +141045,7 @@ static int whereLoopAddBtreeIndex( if( saved_nEq==saved_nSkip && saved_nEq+1nKeyCol && pProbe->noSkipScan==0 + && OptimizationEnabled(db, SQLITE_SkipScan) && pProbe->aiRowLogEst[saved_nEq+1]>=42 /* TUNING: Minimum for skip-scan */ && (rc = whereLoopResize(db, pNew, pNew->nLTerm+1))==SQLITE_OK ){ @@ -138863,24 +141109,6 @@ static int indexMightHelpWithOrderBy( return 0; } -/* -** Return a bitmask where 1s indicate that the corresponding column of -** the table is used by an index. Only the first 63 columns are considered. -*/ -static Bitmask columnsInIndex(Index *pIdx){ - Bitmask m = 0; - int j; - for(j=pIdx->nColumn-1; j>=0; j--){ - int x = pIdx->aiColumn[j]; - if( x>=0 ){ - testcase( x==BMS-1 ); - testcase( x==BMS-2 ); - if( xwsFlags = WHERE_IDX_ONLY | WHERE_INDEXED; m = 0; }else{ - m = pSrc->colUsed & ~columnsInIndex(pProbe); + m = pSrc->colUsed & pProbe->colNotIdxed; pNew->wsFlags = (m==0) ? (WHERE_IDX_ONLY|WHERE_INDEXED) : WHERE_INDEXED; } @@ -139347,7 +141575,7 @@ SQLITE_API const char *sqlite3_vtab_collation(sqlite3_index_info *pIdxInfo, int if( pX->pLeft ){ pC = sqlite3BinaryCompareCollSeq(pHidden->pParse, pX->pLeft, pX->pRight); } - zRet = (pC ? pC->zName : "BINARY"); + zRet = (pC ? pC->zName : sqlite3StrBINARY); } return zRet; } @@ -139663,7 +141891,7 @@ static int whereLoopAddAll(WhereLoopBuilder *pBuilder){ { rc = whereLoopAddBtree(pBuilder, mPrereq); } - if( rc==SQLITE_OK ){ + if( rc==SQLITE_OK && pBuilder->pWC->hasOr ){ rc = whereLoopAddOr(pBuilder, mPrereq, mUnusable); } mPrior |= pNew->maskSelf; @@ -140198,7 +142426,11 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ pWInfo, nRowEst, nOrderBy, isOrdered ); } - rCost = sqlite3LogEstAdd(rUnsorted, aSortCost[isOrdered]); + /* TUNING: Add a small extra penalty (5) to sorting as an + ** extra encouragment to the query planner to select a plan + ** where the rows emerge in the correct order without any sorting + ** required. */ + rCost = sqlite3LogEstAdd(rUnsorted, aSortCost[isOrdered]) + 5; WHERETRACE(0x002, ("---- sort cost=%-3d (%d/%d) increases cost %3d to %-3d\n", @@ -140388,6 +142620,7 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ pWInfo->eDistinct = WHERE_DISTINCT_ORDERED; } } + pWInfo->bOrderedInnerLoop = 0; if( pWInfo->pOrderBy ){ if( pWInfo->wctrlFlags & WHERE_DISTINCTBY ){ if( pFrom->isOrdered==pWInfo->pOrderBy->nExpr ){ @@ -140499,7 +142732,7 @@ static int whereShortCut(WhereLoopBuilder *pBuilder){ } if( j!=pIdx->nKeyCol ) continue; pLoop->wsFlags = WHERE_COLUMN_EQ|WHERE_ONEROW|WHERE_INDEXED; - if( pIdx->isCovering || (pItem->colUsed & ~columnsInIndex(pIdx))==0 ){ + if( pIdx->isCovering || (pItem->colUsed & pIdx->colNotIdxed)==0 ){ pLoop->wsFlags |= WHERE_IDX_ONLY; } pLoop->nLTerm = j; @@ -141179,6 +143412,26 @@ whereBeginError: return 0; } +/* +** Part of sqlite3WhereEnd() will rewrite opcodes to reference the +** index rather than the main table. In SQLITE_DEBUG mode, we want +** to trace those changes if PRAGMA vdbe_addoptrace=on. This routine +** does that. +*/ +#ifndef SQLITE_DEBUG +# define OpcodeRewriteTrace(D,K,P) /* no-op */ +#else +# define OpcodeRewriteTrace(D,K,P) sqlite3WhereOpcodeRewriteTrace(D,K,P) + static void sqlite3WhereOpcodeRewriteTrace( + sqlite3 *db, + int pc, + VdbeOp *pOp + ){ + if( (db->flags & SQLITE_VdbeAddopTrace)==0 ) return; + sqlite3VdbePrintOp(0, pc, pOp); + } +#endif + /* ** Generate the end of the WHERE loop. See comments on ** sqlite3WhereBegin() for additional information. @@ -141195,7 +143448,6 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){ /* Generate loop termination code. */ VdbeModuleComment((v, "End WHERE-core")); - sqlite3ExprCacheClear(pParse); for(i=pWInfo->nLevel-1; i>=0; i--){ int addr; pLevel = &pWInfo->a[i]; @@ -141246,10 +143498,17 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){ for(j=pLevel->u.in.nIn, pIn=&pLevel->u.in.aInLoop[j-1]; j>0; j--, pIn--){ sqlite3VdbeJumpHere(v, pIn->addrInTop+1); if( pIn->eEndLoopOp!=OP_Noop ){ + if( pIn->nPrefix ){ + assert( pLoop->wsFlags & WHERE_IN_EARLYOUT ); + sqlite3VdbeAddOp4Int(v, OP_IfNoHope, pLevel->iIdxCur, + sqlite3VdbeCurrentAddr(v)+2, + pIn->iBase, pIn->nPrefix); + VdbeCoverage(v); + } sqlite3VdbeAddOp2(v, pIn->eEndLoopOp, pIn->iCur, pIn->addrInTop); VdbeCoverage(v); - VdbeCoverageIf(v, pIn->eEndLoopOp==OP_PrevIfOpen); - VdbeCoverageIf(v, pIn->eEndLoopOp==OP_NextIfOpen); + VdbeCoverageIf(v, pIn->eEndLoopOp==OP_Prev); + VdbeCoverageIf(v, pIn->eEndLoopOp==OP_Next); } sqlite3VdbeJumpHere(v, pIn->addrInTop-1); } @@ -141340,6 +143599,11 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){ ){ last = sqlite3VdbeCurrentAddr(v); k = pLevel->addrBody; +#ifdef SQLITE_DEBUG + if( db->flags & SQLITE_VdbeAddopTrace ){ + printf("TRANSLATE opcodes in range %d..%d\n", k, last-1); + } +#endif pOp = sqlite3VdbeGetOp(v, k); for(; kp1!=pLevel->iTabCur ) continue; @@ -141359,16 +143623,22 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){ if( x>=0 ){ pOp->p2 = x; pOp->p1 = pLevel->iIdxCur; + OpcodeRewriteTrace(db, k, pOp); } assert( (pLoop->wsFlags & WHERE_IDX_ONLY)==0 || x>=0 || pWInfo->eOnePass ); }else if( pOp->opcode==OP_Rowid ){ pOp->p1 = pLevel->iIdxCur; pOp->opcode = OP_IdxRowid; + OpcodeRewriteTrace(db, k, pOp); }else if( pOp->opcode==OP_IfNullRow ){ pOp->p1 = pLevel->iIdxCur; + OpcodeRewriteTrace(db, k, pOp); } } +#ifdef SQLITE_DEBUG + if( db->flags & SQLITE_VdbeAddopTrace ) printf("TRANSLATE complete\n"); +#endif } } @@ -141380,6 +143650,2261 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){ } /************** End of where.c ***********************************************/ +/************** Begin file window.c ******************************************/ +/* +** 2018 May 08 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +************************************************************************* +*/ +/* #include "sqliteInt.h" */ + +#ifndef SQLITE_OMIT_WINDOWFUNC + +/* +** SELECT REWRITING +** +** Any SELECT statement that contains one or more window functions in +** either the select list or ORDER BY clause (the only two places window +** functions may be used) is transformed by function sqlite3WindowRewrite() +** in order to support window function processing. For example, with the +** schema: +** +** CREATE TABLE t1(a, b, c, d, e, f, g); +** +** the statement: +** +** SELECT a+1, max(b) OVER (PARTITION BY c ORDER BY d) FROM t1 ORDER BY e; +** +** is transformed to: +** +** SELECT a+1, max(b) OVER (PARTITION BY c ORDER BY d) FROM ( +** SELECT a, e, c, d, b FROM t1 ORDER BY c, d +** ) ORDER BY e; +** +** The flattening optimization is disabled when processing this transformed +** SELECT statement. This allows the implementation of the window function +** (in this case max()) to process rows sorted in order of (c, d), which +** makes things easier for obvious reasons. More generally: +** +** * FROM, WHERE, GROUP BY and HAVING clauses are all moved to +** the sub-query. +** +** * ORDER BY, LIMIT and OFFSET remain part of the parent query. +** +** * Terminals from each of the expression trees that make up the +** select-list and ORDER BY expressions in the parent query are +** selected by the sub-query. For the purposes of the transformation, +** terminals are column references and aggregate functions. +** +** If there is more than one window function in the SELECT that uses +** the same window declaration (the OVER bit), then a single scan may +** be used to process more than one window function. For example: +** +** SELECT max(b) OVER (PARTITION BY c ORDER BY d), +** min(e) OVER (PARTITION BY c ORDER BY d) +** FROM t1; +** +** is transformed in the same way as the example above. However: +** +** SELECT max(b) OVER (PARTITION BY c ORDER BY d), +** min(e) OVER (PARTITION BY a ORDER BY b) +** FROM t1; +** +** Must be transformed to: +** +** SELECT max(b) OVER (PARTITION BY c ORDER BY d) FROM ( +** SELECT e, min(e) OVER (PARTITION BY a ORDER BY b), c, d, b FROM +** SELECT a, e, c, d, b FROM t1 ORDER BY a, b +** ) ORDER BY c, d +** ) ORDER BY e; +** +** so that both min() and max() may process rows in the order defined by +** their respective window declarations. +** +** INTERFACE WITH SELECT.C +** +** When processing the rewritten SELECT statement, code in select.c calls +** sqlite3WhereBegin() to begin iterating through the results of the +** sub-query, which is always implemented as a co-routine. It then calls +** sqlite3WindowCodeStep() to process rows and finish the scan by calling +** sqlite3WhereEnd(). +** +** sqlite3WindowCodeStep() generates VM code so that, for each row returned +** by the sub-query a sub-routine (OP_Gosub) coded by select.c is invoked. +** When the sub-routine is invoked: +** +** * The results of all window-functions for the row are stored +** in the associated Window.regResult registers. +** +** * The required terminal values are stored in the current row of +** temp table Window.iEphCsr. +** +** In some cases, depending on the window frame and the specific window +** functions invoked, sqlite3WindowCodeStep() caches each entire partition +** in a temp table before returning any rows. In other cases it does not. +** This detail is encapsulated within this file, the code generated by +** select.c is the same in either case. +** +** BUILT-IN WINDOW FUNCTIONS +** +** This implementation features the following built-in window functions: +** +** row_number() +** rank() +** dense_rank() +** percent_rank() +** cume_dist() +** ntile(N) +** lead(expr [, offset [, default]]) +** lag(expr [, offset [, default]]) +** first_value(expr) +** last_value(expr) +** nth_value(expr, N) +** +** These are the same built-in window functions supported by Postgres. +** Although the behaviour of aggregate window functions (functions that +** can be used as either aggregates or window funtions) allows them to +** be implemented using an API, built-in window functions are much more +** esoteric. Additionally, some window functions (e.g. nth_value()) +** may only be implemented by caching the entire partition in memory. +** As such, some built-in window functions use the same API as aggregate +** window functions and some are implemented directly using VDBE +** instructions. Additionally, for those functions that use the API, the +** window frame is sometimes modified before the SELECT statement is +** rewritten. For example, regardless of the specified window frame, the +** row_number() function always uses: +** +** ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +** +** See sqlite3WindowUpdate() for details. +** +** As well as some of the built-in window functions, aggregate window +** functions min() and max() are implemented using VDBE instructions if +** the start of the window frame is declared as anything other than +** UNBOUNDED PRECEDING. +*/ + +/* +** Implementation of built-in window function row_number(). Assumes that the +** window frame has been coerced to: +** +** ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +*/ +static void row_numberStepFunc( + sqlite3_context *pCtx, + int nArg, + sqlite3_value **apArg +){ + i64 *p = (i64*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( p ) (*p)++; + UNUSED_PARAMETER(nArg); + UNUSED_PARAMETER(apArg); +} +static void row_numberValueFunc(sqlite3_context *pCtx){ + i64 *p = (i64*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + sqlite3_result_int64(pCtx, (p ? *p : 0)); +} + +/* +** Context object type used by rank(), dense_rank(), percent_rank() and +** cume_dist(). +*/ +struct CallCount { + i64 nValue; + i64 nStep; + i64 nTotal; +}; + +/* +** Implementation of built-in window function dense_rank(). Assumes that +** the window frame has been set to: +** +** RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +*/ +static void dense_rankStepFunc( + sqlite3_context *pCtx, + int nArg, + sqlite3_value **apArg +){ + struct CallCount *p; + p = (struct CallCount*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( p ) p->nStep = 1; + UNUSED_PARAMETER(nArg); + UNUSED_PARAMETER(apArg); +} +static void dense_rankValueFunc(sqlite3_context *pCtx){ + struct CallCount *p; + p = (struct CallCount*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( p ){ + if( p->nStep ){ + p->nValue++; + p->nStep = 0; + } + sqlite3_result_int64(pCtx, p->nValue); + } +} + +/* +** Implementation of built-in window function rank(). Assumes that +** the window frame has been set to: +** +** RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +*/ +static void rankStepFunc( + sqlite3_context *pCtx, + int nArg, + sqlite3_value **apArg +){ + struct CallCount *p; + p = (struct CallCount*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( p ){ + p->nStep++; + if( p->nValue==0 ){ + p->nValue = p->nStep; + } + } + UNUSED_PARAMETER(nArg); + UNUSED_PARAMETER(apArg); +} +static void rankValueFunc(sqlite3_context *pCtx){ + struct CallCount *p; + p = (struct CallCount*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( p ){ + sqlite3_result_int64(pCtx, p->nValue); + p->nValue = 0; + } +} + +/* +** Implementation of built-in window function percent_rank(). Assumes that +** the window frame has been set to: +** +** RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +*/ +static void percent_rankStepFunc( + sqlite3_context *pCtx, + int nArg, + sqlite3_value **apArg +){ + struct CallCount *p; + UNUSED_PARAMETER(nArg); assert( nArg==1 ); + + p = (struct CallCount*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( p ){ + if( p->nTotal==0 ){ + p->nTotal = sqlite3_value_int64(apArg[0]); + } + p->nStep++; + if( p->nValue==0 ){ + p->nValue = p->nStep; + } + } +} +static void percent_rankValueFunc(sqlite3_context *pCtx){ + struct CallCount *p; + p = (struct CallCount*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( p ){ + if( p->nTotal>1 ){ + double r = (double)(p->nValue-1) / (double)(p->nTotal-1); + sqlite3_result_double(pCtx, r); + }else{ + sqlite3_result_double(pCtx, 0.0); + } + p->nValue = 0; + } +} + +/* +** Implementation of built-in window function cume_dist(). Assumes that +** the window frame has been set to: +** +** RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +*/ +static void cume_distStepFunc( + sqlite3_context *pCtx, + int nArg, + sqlite3_value **apArg +){ + struct CallCount *p; + assert( nArg==1 ); UNUSED_PARAMETER(nArg); + + p = (struct CallCount*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( p ){ + if( p->nTotal==0 ){ + p->nTotal = sqlite3_value_int64(apArg[0]); + } + p->nStep++; + } +} +static void cume_distValueFunc(sqlite3_context *pCtx){ + struct CallCount *p; + p = (struct CallCount*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( p && p->nTotal ){ + double r = (double)(p->nStep) / (double)(p->nTotal); + sqlite3_result_double(pCtx, r); + } +} + +/* +** Context object for ntile() window function. +*/ +struct NtileCtx { + i64 nTotal; /* Total rows in partition */ + i64 nParam; /* Parameter passed to ntile(N) */ + i64 iRow; /* Current row */ +}; + +/* +** Implementation of ntile(). This assumes that the window frame has +** been coerced to: +** +** ROWS UNBOUNDED PRECEDING AND CURRENT ROW +*/ +static void ntileStepFunc( + sqlite3_context *pCtx, + int nArg, + sqlite3_value **apArg +){ + struct NtileCtx *p; + assert( nArg==2 ); UNUSED_PARAMETER(nArg); + p = (struct NtileCtx*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( p ){ + if( p->nTotal==0 ){ + p->nParam = sqlite3_value_int64(apArg[0]); + p->nTotal = sqlite3_value_int64(apArg[1]); + if( p->nParam<=0 ){ + sqlite3_result_error( + pCtx, "argument of ntile must be a positive integer", -1 + ); + } + } + p->iRow++; + } +} +static void ntileValueFunc(sqlite3_context *pCtx){ + struct NtileCtx *p; + p = (struct NtileCtx*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( p && p->nParam>0 ){ + int nSize = (p->nTotal / p->nParam); + if( nSize==0 ){ + sqlite3_result_int64(pCtx, p->iRow); + }else{ + i64 nLarge = p->nTotal - p->nParam*nSize; + i64 iSmall = nLarge*(nSize+1); + i64 iRow = p->iRow-1; + + assert( (nLarge*(nSize+1) + (p->nParam-nLarge)*nSize)==p->nTotal ); + + if( iRowpVal); + p->pVal = sqlite3_value_dup(apArg[0]); + if( p->pVal==0 ){ + sqlite3_result_error_nomem(pCtx); + }else{ + p->nVal++; + } + } +} +static void last_valueInvFunc( + sqlite3_context *pCtx, + int nArg, + sqlite3_value **apArg +){ + struct LastValueCtx *p; + UNUSED_PARAMETER(nArg); + UNUSED_PARAMETER(apArg); + p = (struct LastValueCtx*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( ALWAYS(p) ){ + p->nVal--; + if( p->nVal==0 ){ + sqlite3_value_free(p->pVal); + p->pVal = 0; + } + } +} +static void last_valueValueFunc(sqlite3_context *pCtx){ + struct LastValueCtx *p; + p = (struct LastValueCtx*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( p && p->pVal ){ + sqlite3_result_value(pCtx, p->pVal); + } +} +static void last_valueFinalizeFunc(sqlite3_context *pCtx){ + struct LastValueCtx *p; + p = (struct LastValueCtx*)sqlite3_aggregate_context(pCtx, sizeof(*p)); + if( p && p->pVal ){ + sqlite3_result_value(pCtx, p->pVal); + sqlite3_value_free(p->pVal); + p->pVal = 0; + } +} + +/* +** Static names for the built-in window function names. These static +** names are used, rather than string literals, so that FuncDef objects +** can be associated with a particular window function by direct +** comparison of the zName pointer. Example: +** +** if( pFuncDef->zName==row_valueName ){ ... } +*/ +static const char row_numberName[] = "row_number"; +static const char dense_rankName[] = "dense_rank"; +static const char rankName[] = "rank"; +static const char percent_rankName[] = "percent_rank"; +static const char cume_distName[] = "cume_dist"; +static const char ntileName[] = "ntile"; +static const char last_valueName[] = "last_value"; +static const char nth_valueName[] = "nth_value"; +static const char first_valueName[] = "first_value"; +static const char leadName[] = "lead"; +static const char lagName[] = "lag"; + +/* +** No-op implementations of xStep() and xFinalize(). Used as place-holders +** for built-in window functions that never call those interfaces. +** +** The noopValueFunc() is called but is expected to do nothing. The +** noopStepFunc() is never called, and so it is marked with NO_TEST to +** let the test coverage routine know not to expect this function to be +** invoked. +*/ +static void noopStepFunc( /*NO_TEST*/ + sqlite3_context *p, /*NO_TEST*/ + int n, /*NO_TEST*/ + sqlite3_value **a /*NO_TEST*/ +){ /*NO_TEST*/ + UNUSED_PARAMETER(p); /*NO_TEST*/ + UNUSED_PARAMETER(n); /*NO_TEST*/ + UNUSED_PARAMETER(a); /*NO_TEST*/ + assert(0); /*NO_TEST*/ +} /*NO_TEST*/ +static void noopValueFunc(sqlite3_context *p){ UNUSED_PARAMETER(p); /*no-op*/ } + +/* Window functions that use all window interfaces: xStep, xFinal, +** xValue, and xInverse */ +#define WINDOWFUNCALL(name,nArg,extra) { \ + nArg, (SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \ + name ## StepFunc, name ## FinalizeFunc, name ## ValueFunc, \ + name ## InvFunc, name ## Name, {0} \ +} + +/* Window functions that are implemented using bytecode and thus have +** no-op routines for their methods */ +#define WINDOWFUNCNOOP(name,nArg,extra) { \ + nArg, (SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \ + noopStepFunc, noopValueFunc, noopValueFunc, \ + noopStepFunc, name ## Name, {0} \ +} + +/* Window functions that use all window interfaces: xStep, the +** same routine for xFinalize and xValue and which never call +** xInverse. */ +#define WINDOWFUNCX(name,nArg,extra) { \ + nArg, (SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \ + name ## StepFunc, name ## ValueFunc, name ## ValueFunc, \ + noopStepFunc, name ## Name, {0} \ +} + + +/* +** Register those built-in window functions that are not also aggregates. +*/ +SQLITE_PRIVATE void sqlite3WindowFunctions(void){ + static FuncDef aWindowFuncs[] = { + WINDOWFUNCX(row_number, 0, 0), + WINDOWFUNCX(dense_rank, 0, 0), + WINDOWFUNCX(rank, 0, 0), + WINDOWFUNCX(percent_rank, 0, SQLITE_FUNC_WINDOW_SIZE), + WINDOWFUNCX(cume_dist, 0, SQLITE_FUNC_WINDOW_SIZE), + WINDOWFUNCX(ntile, 1, SQLITE_FUNC_WINDOW_SIZE), + WINDOWFUNCALL(last_value, 1, 0), + WINDOWFUNCNOOP(nth_value, 2, 0), + WINDOWFUNCNOOP(first_value, 1, 0), + WINDOWFUNCNOOP(lead, 1, 0), + WINDOWFUNCNOOP(lead, 2, 0), + WINDOWFUNCNOOP(lead, 3, 0), + WINDOWFUNCNOOP(lag, 1, 0), + WINDOWFUNCNOOP(lag, 2, 0), + WINDOWFUNCNOOP(lag, 3, 0), + }; + sqlite3InsertBuiltinFuncs(aWindowFuncs, ArraySize(aWindowFuncs)); +} + +/* +** This function is called immediately after resolving the function name +** for a window function within a SELECT statement. Argument pList is a +** linked list of WINDOW definitions for the current SELECT statement. +** Argument pFunc is the function definition just resolved and pWin +** is the Window object representing the associated OVER clause. This +** function updates the contents of pWin as follows: +** +** * If the OVER clause refered to a named window (as in "max(x) OVER win"), +** search list pList for a matching WINDOW definition, and update pWin +** accordingly. If no such WINDOW clause can be found, leave an error +** in pParse. +** +** * If the function is a built-in window function that requires the +** window to be coerced (see "BUILT-IN WINDOW FUNCTIONS" at the top +** of this file), pWin is updated here. +*/ +SQLITE_PRIVATE void sqlite3WindowUpdate( + Parse *pParse, + Window *pList, /* List of named windows for this SELECT */ + Window *pWin, /* Window frame to update */ + FuncDef *pFunc /* Window function definition */ +){ + if( pWin->zName && pWin->eType==0 ){ + Window *p; + for(p=pList; p; p=p->pNextWin){ + if( sqlite3StrICmp(p->zName, pWin->zName)==0 ) break; + } + if( p==0 ){ + sqlite3ErrorMsg(pParse, "no such window: %s", pWin->zName); + return; + } + pWin->pPartition = sqlite3ExprListDup(pParse->db, p->pPartition, 0); + pWin->pOrderBy = sqlite3ExprListDup(pParse->db, p->pOrderBy, 0); + pWin->pStart = sqlite3ExprDup(pParse->db, p->pStart, 0); + pWin->pEnd = sqlite3ExprDup(pParse->db, p->pEnd, 0); + pWin->eStart = p->eStart; + pWin->eEnd = p->eEnd; + pWin->eType = p->eType; + } + if( pFunc->funcFlags & SQLITE_FUNC_WINDOW ){ + sqlite3 *db = pParse->db; + if( pWin->pFilter ){ + sqlite3ErrorMsg(pParse, + "FILTER clause may only be used with aggregate window functions" + ); + }else + if( pFunc->zName==row_numberName || pFunc->zName==ntileName ){ + sqlite3ExprDelete(db, pWin->pStart); + sqlite3ExprDelete(db, pWin->pEnd); + pWin->pStart = pWin->pEnd = 0; + pWin->eType = TK_ROWS; + pWin->eStart = TK_UNBOUNDED; + pWin->eEnd = TK_CURRENT; + }else + + if( pFunc->zName==dense_rankName || pFunc->zName==rankName + || pFunc->zName==percent_rankName || pFunc->zName==cume_distName + ){ + sqlite3ExprDelete(db, pWin->pStart); + sqlite3ExprDelete(db, pWin->pEnd); + pWin->pStart = pWin->pEnd = 0; + pWin->eType = TK_RANGE; + pWin->eStart = TK_UNBOUNDED; + pWin->eEnd = TK_CURRENT; + } + } + pWin->pFunc = pFunc; +} + +/* +** Context object passed through sqlite3WalkExprList() to +** selectWindowRewriteExprCb() by selectWindowRewriteEList(). +*/ +typedef struct WindowRewrite WindowRewrite; +struct WindowRewrite { + Window *pWin; + SrcList *pSrc; + ExprList *pSub; + Select *pSubSelect; /* Current sub-select, if any */ +}; + +/* +** Callback function used by selectWindowRewriteEList(). If necessary, +** this function appends to the output expression-list and updates +** expression (*ppExpr) in place. +*/ +static int selectWindowRewriteExprCb(Walker *pWalker, Expr *pExpr){ + struct WindowRewrite *p = pWalker->u.pRewrite; + Parse *pParse = pWalker->pParse; + + /* If this function is being called from within a scalar sub-select + ** that used by the SELECT statement being processed, only process + ** TK_COLUMN expressions that refer to it (the outer SELECT). Do + ** not process aggregates or window functions at all, as they belong + ** to the scalar sub-select. */ + if( p->pSubSelect ){ + if( pExpr->op!=TK_COLUMN ){ + return WRC_Continue; + }else{ + int nSrc = p->pSrc->nSrc; + int i; + for(i=0; iiTable==p->pSrc->a[i].iCursor ) break; + } + if( i==nSrc ) return WRC_Continue; + } + } + + switch( pExpr->op ){ + + case TK_FUNCTION: + if( pExpr->pWin==0 ){ + break; + }else{ + Window *pWin; + for(pWin=p->pWin; pWin; pWin=pWin->pNextWin){ + if( pExpr->pWin==pWin ){ + assert( pWin->pOwner==pExpr ); + return WRC_Prune; + } + } + } + /* Fall through. */ + + case TK_AGG_FUNCTION: + case TK_COLUMN: { + Expr *pDup = sqlite3ExprDup(pParse->db, pExpr, 0); + p->pSub = sqlite3ExprListAppend(pParse, p->pSub, pDup); + if( p->pSub ){ + assert( ExprHasProperty(pExpr, EP_Static)==0 ); + ExprSetProperty(pExpr, EP_Static); + sqlite3ExprDelete(pParse->db, pExpr); + ExprClearProperty(pExpr, EP_Static); + memset(pExpr, 0, sizeof(Expr)); + + pExpr->op = TK_COLUMN; + pExpr->iColumn = p->pSub->nExpr-1; + pExpr->iTable = p->pWin->iEphCsr; + } + + break; + } + + default: /* no-op */ + break; + } + + return WRC_Continue; +} +static int selectWindowRewriteSelectCb(Walker *pWalker, Select *pSelect){ + struct WindowRewrite *p = pWalker->u.pRewrite; + Select *pSave = p->pSubSelect; + if( pSave==pSelect ){ + return WRC_Continue; + }else{ + p->pSubSelect = pSelect; + sqlite3WalkSelect(pWalker, pSelect); + p->pSubSelect = pSave; + } + return WRC_Prune; +} + + +/* +** Iterate through each expression in expression-list pEList. For each: +** +** * TK_COLUMN, +** * aggregate function, or +** * window function with a Window object that is not a member of the +** Window list passed as the second argument (pWin). +** +** Append the node to output expression-list (*ppSub). And replace it +** with a TK_COLUMN that reads the (N-1)th element of table +** pWin->iEphCsr, where N is the number of elements in (*ppSub) after +** appending the new one. +*/ +static void selectWindowRewriteEList( + Parse *pParse, + Window *pWin, + SrcList *pSrc, + ExprList *pEList, /* Rewrite expressions in this list */ + ExprList **ppSub /* IN/OUT: Sub-select expression-list */ +){ + Walker sWalker; + WindowRewrite sRewrite; + + memset(&sWalker, 0, sizeof(Walker)); + memset(&sRewrite, 0, sizeof(WindowRewrite)); + + sRewrite.pSub = *ppSub; + sRewrite.pWin = pWin; + sRewrite.pSrc = pSrc; + + sWalker.pParse = pParse; + sWalker.xExprCallback = selectWindowRewriteExprCb; + sWalker.xSelectCallback = selectWindowRewriteSelectCb; + sWalker.u.pRewrite = &sRewrite; + + (void)sqlite3WalkExprList(&sWalker, pEList); + + *ppSub = sRewrite.pSub; +} + +/* +** Append a copy of each expression in expression-list pAppend to +** expression list pList. Return a pointer to the result list. +*/ +static ExprList *exprListAppendList( + Parse *pParse, /* Parsing context */ + ExprList *pList, /* List to which to append. Might be NULL */ + ExprList *pAppend /* List of values to append. Might be NULL */ +){ + if( pAppend ){ + int i; + int nInit = pList ? pList->nExpr : 0; + for(i=0; inExpr; i++){ + Expr *pDup = sqlite3ExprDup(pParse->db, pAppend->a[i].pExpr, 0); + pList = sqlite3ExprListAppend(pParse, pList, pDup); + if( pList ) pList->a[nInit+i].sortOrder = pAppend->a[i].sortOrder; + } + } + return pList; +} + +/* +** If the SELECT statement passed as the second argument does not invoke +** any SQL window functions, this function is a no-op. Otherwise, it +** rewrites the SELECT statement so that window function xStep functions +** are invoked in the correct order as described under "SELECT REWRITING" +** at the top of this file. +*/ +SQLITE_PRIVATE int sqlite3WindowRewrite(Parse *pParse, Select *p){ + int rc = SQLITE_OK; + if( p->pWin ){ + Vdbe *v = sqlite3GetVdbe(pParse); + sqlite3 *db = pParse->db; + Select *pSub = 0; /* The subquery */ + SrcList *pSrc = p->pSrc; + Expr *pWhere = p->pWhere; + ExprList *pGroupBy = p->pGroupBy; + Expr *pHaving = p->pHaving; + ExprList *pSort = 0; + + ExprList *pSublist = 0; /* Expression list for sub-query */ + Window *pMWin = p->pWin; /* Master window object */ + Window *pWin; /* Window object iterator */ + + p->pSrc = 0; + p->pWhere = 0; + p->pGroupBy = 0; + p->pHaving = 0; + + /* Create the ORDER BY clause for the sub-select. This is the concatenation + ** of the window PARTITION and ORDER BY clauses. Then, if this makes it + ** redundant, remove the ORDER BY from the parent SELECT. */ + pSort = sqlite3ExprListDup(db, pMWin->pPartition, 0); + pSort = exprListAppendList(pParse, pSort, pMWin->pOrderBy); + if( pSort && p->pOrderBy ){ + if( sqlite3ExprListCompare(pSort, p->pOrderBy, -1)==0 ){ + sqlite3ExprListDelete(db, p->pOrderBy); + p->pOrderBy = 0; + } + } + + /* Assign a cursor number for the ephemeral table used to buffer rows. + ** The OpenEphemeral instruction is coded later, after it is known how + ** many columns the table will have. */ + pMWin->iEphCsr = pParse->nTab++; + + selectWindowRewriteEList(pParse, pMWin, pSrc, p->pEList, &pSublist); + selectWindowRewriteEList(pParse, pMWin, pSrc, p->pOrderBy, &pSublist); + pMWin->nBufferCol = (pSublist ? pSublist->nExpr : 0); + + /* Append the PARTITION BY and ORDER BY expressions to the to the + ** sub-select expression list. They are required to figure out where + ** boundaries for partitions and sets of peer rows lie. */ + pSublist = exprListAppendList(pParse, pSublist, pMWin->pPartition); + pSublist = exprListAppendList(pParse, pSublist, pMWin->pOrderBy); + + /* Append the arguments passed to each window function to the + ** sub-select expression list. Also allocate two registers for each + ** window function - one for the accumulator, another for interim + ** results. */ + for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ + pWin->iArgCol = (pSublist ? pSublist->nExpr : 0); + pSublist = exprListAppendList(pParse, pSublist, pWin->pOwner->x.pList); + if( pWin->pFilter ){ + Expr *pFilter = sqlite3ExprDup(db, pWin->pFilter, 0); + pSublist = sqlite3ExprListAppend(pParse, pSublist, pFilter); + } + pWin->regAccum = ++pParse->nMem; + pWin->regResult = ++pParse->nMem; + sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum); + } + + /* If there is no ORDER BY or PARTITION BY clause, and the window + ** function accepts zero arguments, and there are no other columns + ** selected (e.g. "SELECT row_number() OVER () FROM t1"), it is possible + ** that pSublist is still NULL here. Add a constant expression here to + ** keep everything legal in this case. + */ + if( pSublist==0 ){ + pSublist = sqlite3ExprListAppend(pParse, 0, + sqlite3ExprAlloc(db, TK_INTEGER, &sqlite3IntTokens[0], 0) + ); + } + + pSub = sqlite3SelectNew( + pParse, pSublist, pSrc, pWhere, pGroupBy, pHaving, pSort, 0, 0 + ); + p->pSrc = sqlite3SrcListAppend(db, 0, 0, 0); + assert( p->pSrc || db->mallocFailed ); + if( p->pSrc ){ + p->pSrc->a[0].pSelect = pSub; + sqlite3SrcListAssignCursors(pParse, p->pSrc); + if( sqlite3ExpandSubquery(pParse, &p->pSrc->a[0]) ){ + rc = SQLITE_NOMEM; + }else{ + pSub->selFlags |= SF_Expanded; + p->selFlags &= ~SF_Aggregate; + sqlite3SelectPrep(pParse, pSub, 0); + } + + sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pMWin->iEphCsr, pSublist->nExpr); + }else{ + sqlite3SelectDelete(db, pSub); + } + if( db->mallocFailed ) rc = SQLITE_NOMEM; + } + + return rc; +} + +/* +** Free the Window object passed as the second argument. +*/ +SQLITE_PRIVATE void sqlite3WindowDelete(sqlite3 *db, Window *p){ + if( p ){ + sqlite3ExprDelete(db, p->pFilter); + sqlite3ExprListDelete(db, p->pPartition); + sqlite3ExprListDelete(db, p->pOrderBy); + sqlite3ExprDelete(db, p->pEnd); + sqlite3ExprDelete(db, p->pStart); + sqlite3DbFree(db, p->zName); + sqlite3DbFree(db, p); + } +} + +/* +** Free the linked list of Window objects starting at the second argument. +*/ +SQLITE_PRIVATE void sqlite3WindowListDelete(sqlite3 *db, Window *p){ + while( p ){ + Window *pNext = p->pNextWin; + sqlite3WindowDelete(db, p); + p = pNext; + } +} + +/* +** The argument expression is an PRECEDING or FOLLOWING offset. The +** value should be a non-negative integer. If the value is not a +** constant, change it to NULL. The fact that it is then a non-negative +** integer will be caught later. But it is important not to leave +** variable values in the expression tree. +*/ +static Expr *sqlite3WindowOffsetExpr(Parse *pParse, Expr *pExpr){ + if( 0==sqlite3ExprIsConstant(pExpr) ){ + sqlite3ExprDelete(pParse->db, pExpr); + pExpr = sqlite3ExprAlloc(pParse->db, TK_NULL, 0, 0); + } + return pExpr; +} + +/* +** Allocate and return a new Window object describing a Window Definition. +*/ +SQLITE_PRIVATE Window *sqlite3WindowAlloc( + Parse *pParse, /* Parsing context */ + int eType, /* Frame type. TK_RANGE or TK_ROWS */ + int eStart, /* Start type: CURRENT, PRECEDING, FOLLOWING, UNBOUNDED */ + Expr *pStart, /* Start window size if TK_PRECEDING or FOLLOWING */ + int eEnd, /* End type: CURRENT, FOLLOWING, TK_UNBOUNDED, PRECEDING */ + Expr *pEnd /* End window size if TK_FOLLOWING or PRECEDING */ +){ + Window *pWin = 0; + + /* Parser assures the following: */ + assert( eType==TK_RANGE || eType==TK_ROWS ); + assert( eStart==TK_CURRENT || eStart==TK_PRECEDING + || eStart==TK_UNBOUNDED || eStart==TK_FOLLOWING ); + assert( eEnd==TK_CURRENT || eEnd==TK_FOLLOWING + || eEnd==TK_UNBOUNDED || eEnd==TK_PRECEDING ); + assert( (eStart==TK_PRECEDING || eStart==TK_FOLLOWING)==(pStart!=0) ); + assert( (eEnd==TK_FOLLOWING || eEnd==TK_PRECEDING)==(pEnd!=0) ); + + + /* If a frame is declared "RANGE" (not "ROWS"), then it may not use + ** either " PRECEDING" or " FOLLOWING". + */ + if( eType==TK_RANGE && (pStart!=0 || pEnd!=0) ){ + sqlite3ErrorMsg(pParse, "RANGE must use only UNBOUNDED or CURRENT ROW"); + goto windowAllocErr; + } + + /* Additionally, the + ** starting boundary type may not occur earlier in the following list than + ** the ending boundary type: + ** + ** UNBOUNDED PRECEDING + ** PRECEDING + ** CURRENT ROW + ** FOLLOWING + ** UNBOUNDED FOLLOWING + ** + ** The parser ensures that "UNBOUNDED PRECEDING" cannot be used as an ending + ** boundary, and than "UNBOUNDED FOLLOWING" cannot be used as a starting + ** frame boundary. + */ + if( (eStart==TK_CURRENT && eEnd==TK_PRECEDING) + || (eStart==TK_FOLLOWING && (eEnd==TK_PRECEDING || eEnd==TK_CURRENT)) + ){ + sqlite3ErrorMsg(pParse, "unsupported frame delimiter for ROWS"); + goto windowAllocErr; + } + + pWin = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window)); + if( pWin==0 ) goto windowAllocErr; + pWin->eType = eType; + pWin->eStart = eStart; + pWin->eEnd = eEnd; + pWin->pEnd = sqlite3WindowOffsetExpr(pParse, pEnd); + pWin->pStart = sqlite3WindowOffsetExpr(pParse, pStart); + return pWin; + +windowAllocErr: + sqlite3ExprDelete(pParse->db, pEnd); + sqlite3ExprDelete(pParse->db, pStart); + return 0; +} + +/* +** Attach window object pWin to expression p. +*/ +SQLITE_PRIVATE void sqlite3WindowAttach(Parse *pParse, Expr *p, Window *pWin){ + if( p ){ + /* This routine is only called for the parser. If pWin was not + ** allocated due to an OOM, then the parser would fail before ever + ** invoking this routine */ + if( ALWAYS(pWin) ){ + p->pWin = pWin; + pWin->pOwner = p; + if( p->flags & EP_Distinct ){ + sqlite3ErrorMsg(pParse, + "DISTINCT is not supported for window functions"); + } + } + }else{ + sqlite3WindowDelete(pParse->db, pWin); + } +} + +/* +** Return 0 if the two window objects are identical, or non-zero otherwise. +** Identical window objects can be processed in a single scan. +*/ +SQLITE_PRIVATE int sqlite3WindowCompare(Parse *pParse, Window *p1, Window *p2){ + if( p1->eType!=p2->eType ) return 1; + if( p1->eStart!=p2->eStart ) return 1; + if( p1->eEnd!=p2->eEnd ) return 1; + if( sqlite3ExprCompare(pParse, p1->pStart, p2->pStart, -1) ) return 1; + if( sqlite3ExprCompare(pParse, p1->pEnd, p2->pEnd, -1) ) return 1; + if( sqlite3ExprListCompare(p1->pPartition, p2->pPartition, -1) ) return 1; + if( sqlite3ExprListCompare(p1->pOrderBy, p2->pOrderBy, -1) ) return 1; + return 0; +} + + +/* +** This is called by code in select.c before it calls sqlite3WhereBegin() +** to begin iterating through the sub-query results. It is used to allocate +** and initialize registers and cursors used by sqlite3WindowCodeStep(). +*/ +SQLITE_PRIVATE void sqlite3WindowCodeInit(Parse *pParse, Window *pMWin){ + Window *pWin; + Vdbe *v = sqlite3GetVdbe(pParse); + int nPart = (pMWin->pPartition ? pMWin->pPartition->nExpr : 0); + nPart += (pMWin->pOrderBy ? pMWin->pOrderBy->nExpr : 0); + if( nPart ){ + pMWin->regPart = pParse->nMem+1; + pParse->nMem += nPart; + sqlite3VdbeAddOp3(v, OP_Null, 0, pMWin->regPart, pMWin->regPart+nPart-1); + } + + for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ + FuncDef *p = pWin->pFunc; + if( (p->funcFlags & SQLITE_FUNC_MINMAX) && pWin->eStart!=TK_UNBOUNDED ){ + /* The inline versions of min() and max() require a single ephemeral + ** table and 3 registers. The registers are used as follows: + ** + ** regApp+0: slot to copy min()/max() argument to for MakeRecord + ** regApp+1: integer value used to ensure keys are unique + ** regApp+2: output of MakeRecord + */ + ExprList *pList = pWin->pOwner->x.pList; + KeyInfo *pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pList, 0, 0); + pWin->csrApp = pParse->nTab++; + pWin->regApp = pParse->nMem+1; + pParse->nMem += 3; + if( pKeyInfo && pWin->pFunc->zName[1]=='i' ){ + assert( pKeyInfo->aSortOrder[0]==0 ); + pKeyInfo->aSortOrder[0] = 1; + } + sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pWin->csrApp, 2); + sqlite3VdbeAppendP4(v, pKeyInfo, P4_KEYINFO); + sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1); + } + else if( p->zName==nth_valueName || p->zName==first_valueName ){ + /* Allocate two registers at pWin->regApp. These will be used to + ** store the start and end index of the current frame. */ + assert( pMWin->iEphCsr ); + pWin->regApp = pParse->nMem+1; + pWin->csrApp = pParse->nTab++; + pParse->nMem += 2; + sqlite3VdbeAddOp2(v, OP_OpenDup, pWin->csrApp, pMWin->iEphCsr); + } + else if( p->zName==leadName || p->zName==lagName ){ + assert( pMWin->iEphCsr ); + pWin->csrApp = pParse->nTab++; + sqlite3VdbeAddOp2(v, OP_OpenDup, pWin->csrApp, pMWin->iEphCsr); + } + } +} + +/* +** A "PRECEDING " (eCond==0) or "FOLLOWING " (eCond==1) or the +** value of the second argument to nth_value() (eCond==2) has just been +** evaluated and the result left in register reg. This function generates VM +** code to check that the value is a non-negative integer and throws an +** exception if it is not. +*/ +static void windowCheckIntValue(Parse *pParse, int reg, int eCond){ + static const char *azErr[] = { + "frame starting offset must be a non-negative integer", + "frame ending offset must be a non-negative integer", + "second argument to nth_value must be a positive integer" + }; + static int aOp[] = { OP_Ge, OP_Ge, OP_Gt }; + Vdbe *v = sqlite3GetVdbe(pParse); + int regZero = sqlite3GetTempReg(pParse); + assert( eCond==0 || eCond==1 || eCond==2 ); + sqlite3VdbeAddOp2(v, OP_Integer, 0, regZero); + sqlite3VdbeAddOp2(v, OP_MustBeInt, reg, sqlite3VdbeCurrentAddr(v)+2); + VdbeCoverageIf(v, eCond==0); + VdbeCoverageIf(v, eCond==1); + VdbeCoverageIf(v, eCond==2); + sqlite3VdbeAddOp3(v, aOp[eCond], regZero, sqlite3VdbeCurrentAddr(v)+2, reg); + VdbeCoverageNeverNullIf(v, eCond==0); + VdbeCoverageNeverNullIf(v, eCond==1); + VdbeCoverageNeverNullIf(v, eCond==2); + sqlite3VdbeAddOp2(v, OP_Halt, SQLITE_ERROR, OE_Abort); + sqlite3VdbeAppendP4(v, (void*)azErr[eCond], P4_STATIC); + sqlite3ReleaseTempReg(pParse, regZero); +} + +/* +** Return the number of arguments passed to the window-function associated +** with the object passed as the only argument to this function. +*/ +static int windowArgCount(Window *pWin){ + ExprList *pList = pWin->pOwner->x.pList; + return (pList ? pList->nExpr : 0); +} + +/* +** Generate VM code to invoke either xStep() (if bInverse is 0) or +** xInverse (if bInverse is non-zero) for each window function in the +** linked list starting at pMWin. Or, for built-in window functions +** that do not use the standard function API, generate the required +** inline VM code. +** +** If argument csr is greater than or equal to 0, then argument reg is +** the first register in an array of registers guaranteed to be large +** enough to hold the array of arguments for each function. In this case +** the arguments are extracted from the current row of csr into the +** array of registers before invoking OP_AggStep or OP_AggInverse +** +** Or, if csr is less than zero, then the array of registers at reg is +** already populated with all columns from the current row of the sub-query. +** +** If argument regPartSize is non-zero, then it is a register containing the +** number of rows in the current partition. +*/ +static void windowAggStep( + Parse *pParse, + Window *pMWin, /* Linked list of window functions */ + int csr, /* Read arguments from this cursor */ + int bInverse, /* True to invoke xInverse instead of xStep */ + int reg, /* Array of registers */ + int regPartSize /* Register containing size of partition */ +){ + Vdbe *v = sqlite3GetVdbe(pParse); + Window *pWin; + for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ + int flags = pWin->pFunc->funcFlags; + int regArg; + int nArg = windowArgCount(pWin); + + if( csr>=0 ){ + int i; + for(i=0; iiArgCol+i, reg+i); + } + regArg = reg; + if( flags & SQLITE_FUNC_WINDOW_SIZE ){ + if( nArg==0 ){ + regArg = regPartSize; + }else{ + sqlite3VdbeAddOp2(v, OP_SCopy, regPartSize, reg+nArg); + } + nArg++; + } + }else{ + assert( !(flags & SQLITE_FUNC_WINDOW_SIZE) ); + regArg = reg + pWin->iArgCol; + } + + if( (pWin->pFunc->funcFlags & SQLITE_FUNC_MINMAX) + && pWin->eStart!=TK_UNBOUNDED + ){ + int addrIsNull = sqlite3VdbeAddOp1(v, OP_IsNull, regArg); + VdbeCoverage(v); + if( bInverse==0 ){ + sqlite3VdbeAddOp2(v, OP_AddImm, pWin->regApp+1, 1); + sqlite3VdbeAddOp2(v, OP_SCopy, regArg, pWin->regApp); + sqlite3VdbeAddOp3(v, OP_MakeRecord, pWin->regApp, 2, pWin->regApp+2); + sqlite3VdbeAddOp2(v, OP_IdxInsert, pWin->csrApp, pWin->regApp+2); + }else{ + sqlite3VdbeAddOp4Int(v, OP_SeekGE, pWin->csrApp, 0, regArg, 1); + VdbeCoverageNeverTaken(v); + sqlite3VdbeAddOp1(v, OP_Delete, pWin->csrApp); + sqlite3VdbeJumpHere(v, sqlite3VdbeCurrentAddr(v)-2); + } + sqlite3VdbeJumpHere(v, addrIsNull); + }else if( pWin->regApp ){ + assert( pWin->pFunc->zName==nth_valueName + || pWin->pFunc->zName==first_valueName + ); + assert( bInverse==0 || bInverse==1 ); + sqlite3VdbeAddOp2(v, OP_AddImm, pWin->regApp+1-bInverse, 1); + }else if( pWin->pFunc->zName==leadName + || pWin->pFunc->zName==lagName + ){ + /* no-op */ + }else{ + int addrIf = 0; + if( pWin->pFilter ){ + int regTmp; + assert( nArg==0 || nArg==pWin->pOwner->x.pList->nExpr ); + assert( nArg || pWin->pOwner->x.pList==0 ); + if( csr>0 ){ + regTmp = sqlite3GetTempReg(pParse); + sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol+nArg,regTmp); + }else{ + regTmp = regArg + nArg; + } + addrIf = sqlite3VdbeAddOp3(v, OP_IfNot, regTmp, 0, 1); + VdbeCoverage(v); + if( csr>0 ){ + sqlite3ReleaseTempReg(pParse, regTmp); + } + } + if( pWin->pFunc->funcFlags & SQLITE_FUNC_NEEDCOLL ){ + CollSeq *pColl; + assert( nArg>0 ); + pColl = sqlite3ExprNNCollSeq(pParse, pWin->pOwner->x.pList->a[0].pExpr); + sqlite3VdbeAddOp4(v, OP_CollSeq, 0,0,0, (const char*)pColl, P4_COLLSEQ); + } + sqlite3VdbeAddOp3(v, bInverse? OP_AggInverse : OP_AggStep, + bInverse, regArg, pWin->regAccum); + sqlite3VdbeAppendP4(v, pWin->pFunc, P4_FUNCDEF); + sqlite3VdbeChangeP5(v, (u8)nArg); + if( addrIf ) sqlite3VdbeJumpHere(v, addrIf); + } + } +} + +/* +** Generate VM code to invoke either xValue() (bFinal==0) or xFinalize() +** (bFinal==1) for each window function in the linked list starting at +** pMWin. Or, for built-in window-functions that do not use the standard +** API, generate the equivalent VM code. +*/ +static void windowAggFinal(Parse *pParse, Window *pMWin, int bFinal){ + Vdbe *v = sqlite3GetVdbe(pParse); + Window *pWin; + + for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ + if( (pWin->pFunc->funcFlags & SQLITE_FUNC_MINMAX) + && pWin->eStart!=TK_UNBOUNDED + ){ + sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regResult); + sqlite3VdbeAddOp1(v, OP_Last, pWin->csrApp); + VdbeCoverage(v); + sqlite3VdbeAddOp3(v, OP_Column, pWin->csrApp, 0, pWin->regResult); + sqlite3VdbeJumpHere(v, sqlite3VdbeCurrentAddr(v)-2); + if( bFinal ){ + sqlite3VdbeAddOp1(v, OP_ResetSorter, pWin->csrApp); + } + }else if( pWin->regApp ){ + }else{ + if( bFinal ){ + sqlite3VdbeAddOp2(v, OP_AggFinal, pWin->regAccum, windowArgCount(pWin)); + sqlite3VdbeAppendP4(v, pWin->pFunc, P4_FUNCDEF); + sqlite3VdbeAddOp2(v, OP_Copy, pWin->regAccum, pWin->regResult); + sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum); + }else{ + sqlite3VdbeAddOp3(v, OP_AggValue, pWin->regAccum, windowArgCount(pWin), + pWin->regResult); + sqlite3VdbeAppendP4(v, pWin->pFunc, P4_FUNCDEF); + } + } + } +} + +/* +** This function generates VM code to invoke the sub-routine at address +** lblFlushPart once for each partition with the entire partition cached in +** the Window.iEphCsr temp table. +*/ +static void windowPartitionCache( + Parse *pParse, + Select *p, /* The rewritten SELECT statement */ + WhereInfo *pWInfo, /* WhereInfo to call WhereEnd() on */ + int regFlushPart, /* Register to use with Gosub lblFlushPart */ + int lblFlushPart, /* Subroutine to Gosub to */ + int *pRegSize /* OUT: Register containing partition size */ +){ + Window *pMWin = p->pWin; + Vdbe *v = sqlite3GetVdbe(pParse); + int iSubCsr = p->pSrc->a[0].iCursor; + int nSub = p->pSrc->a[0].pTab->nCol; + int k; + + int reg = pParse->nMem+1; + int regRecord = reg+nSub; + int regRowid = regRecord+1; + + *pRegSize = regRowid; + pParse->nMem += nSub + 2; + + /* Load the column values for the row returned by the sub-select + ** into an array of registers starting at reg. */ + for(k=0; kpPartition ){ + int addr; + ExprList *pPart = pMWin->pPartition; + int nPart = pPart->nExpr; + int regNewPart = reg + pMWin->nBufferCol; + KeyInfo *pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pPart, 0, 0); + + addr = sqlite3VdbeAddOp3(v, OP_Compare, regNewPart, pMWin->regPart,nPart); + sqlite3VdbeAppendP4(v, (void*)pKeyInfo, P4_KEYINFO); + sqlite3VdbeAddOp3(v, OP_Jump, addr+2, addr+4, addr+2); + VdbeCoverageEqNe(v); + sqlite3VdbeAddOp3(v, OP_Copy, regNewPart, pMWin->regPart, nPart-1); + sqlite3VdbeAddOp2(v, OP_Gosub, regFlushPart, lblFlushPart); + VdbeComment((v, "call flush_partition")); + } + + /* Buffer the current row in the ephemeral table. */ + sqlite3VdbeAddOp2(v, OP_NewRowid, pMWin->iEphCsr, regRowid); + sqlite3VdbeAddOp3(v, OP_Insert, pMWin->iEphCsr, regRecord, regRowid); + + /* End of the input loop */ + sqlite3WhereEnd(pWInfo); + + /* Invoke "flush_partition" to deal with the final (or only) partition */ + sqlite3VdbeAddOp2(v, OP_Gosub, regFlushPart, lblFlushPart); + VdbeComment((v, "call flush_partition")); +} + +/* +** Invoke the sub-routine at regGosub (generated by code in select.c) to +** return the current row of Window.iEphCsr. If all window functions are +** aggregate window functions that use the standard API, a single +** OP_Gosub instruction is all that this routine generates. Extra VM code +** for per-row processing is only generated for the following built-in window +** functions: +** +** nth_value() +** first_value() +** lag() +** lead() +*/ +static void windowReturnOneRow( + Parse *pParse, + Window *pMWin, + int regGosub, + int addrGosub +){ + Vdbe *v = sqlite3GetVdbe(pParse); + Window *pWin; + for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ + FuncDef *pFunc = pWin->pFunc; + if( pFunc->zName==nth_valueName + || pFunc->zName==first_valueName + ){ + int csr = pWin->csrApp; + int lbl = sqlite3VdbeMakeLabel(v); + int tmpReg = sqlite3GetTempReg(pParse); + sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regResult); + + if( pFunc->zName==nth_valueName ){ + sqlite3VdbeAddOp3(v, OP_Column, pMWin->iEphCsr, pWin->iArgCol+1,tmpReg); + windowCheckIntValue(pParse, tmpReg, 2); + }else{ + sqlite3VdbeAddOp2(v, OP_Integer, 1, tmpReg); + } + sqlite3VdbeAddOp3(v, OP_Add, tmpReg, pWin->regApp, tmpReg); + sqlite3VdbeAddOp3(v, OP_Gt, pWin->regApp+1, lbl, tmpReg); + VdbeCoverageNeverNull(v); + sqlite3VdbeAddOp3(v, OP_SeekRowid, csr, 0, tmpReg); + VdbeCoverageNeverTaken(v); + sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol, pWin->regResult); + sqlite3VdbeResolveLabel(v, lbl); + sqlite3ReleaseTempReg(pParse, tmpReg); + } + else if( pFunc->zName==leadName || pFunc->zName==lagName ){ + int nArg = pWin->pOwner->x.pList->nExpr; + int iEph = pMWin->iEphCsr; + int csr = pWin->csrApp; + int lbl = sqlite3VdbeMakeLabel(v); + int tmpReg = sqlite3GetTempReg(pParse); + + if( nArg<3 ){ + sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regResult); + }else{ + sqlite3VdbeAddOp3(v, OP_Column, iEph, pWin->iArgCol+2, pWin->regResult); + } + sqlite3VdbeAddOp2(v, OP_Rowid, iEph, tmpReg); + if( nArg<2 ){ + int val = (pFunc->zName==leadName ? 1 : -1); + sqlite3VdbeAddOp2(v, OP_AddImm, tmpReg, val); + }else{ + int op = (pFunc->zName==leadName ? OP_Add : OP_Subtract); + int tmpReg2 = sqlite3GetTempReg(pParse); + sqlite3VdbeAddOp3(v, OP_Column, iEph, pWin->iArgCol+1, tmpReg2); + sqlite3VdbeAddOp3(v, op, tmpReg2, tmpReg, tmpReg); + sqlite3ReleaseTempReg(pParse, tmpReg2); + } + + sqlite3VdbeAddOp3(v, OP_SeekRowid, csr, lbl, tmpReg); + VdbeCoverage(v); + sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol, pWin->regResult); + sqlite3VdbeResolveLabel(v, lbl); + sqlite3ReleaseTempReg(pParse, tmpReg); + } + } + sqlite3VdbeAddOp2(v, OP_Gosub, regGosub, addrGosub); +} + +/* +** Invoke the code generated by windowReturnOneRow() and, optionally, the +** xInverse() function for each window function, for one or more rows +** from the Window.iEphCsr temp table. This routine generates VM code +** similar to: +** +** while( regCtr>0 ){ +** regCtr--; +** windowReturnOneRow() +** if( bInverse ){ +** AggInverse +** } +** Next (Window.iEphCsr) +** } +*/ +static void windowReturnRows( + Parse *pParse, + Window *pMWin, /* List of window functions */ + int regCtr, /* Register containing number of rows */ + int regGosub, /* Register for Gosub addrGosub */ + int addrGosub, /* Address of sub-routine for ReturnOneRow */ + int regInvArg, /* Array of registers for xInverse args */ + int regInvSize /* Register containing size of partition */ +){ + int addr; + Vdbe *v = sqlite3GetVdbe(pParse); + windowAggFinal(pParse, pMWin, 0); + addr = sqlite3VdbeAddOp3(v, OP_IfPos, regCtr, sqlite3VdbeCurrentAddr(v)+2 ,1); + VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_Goto, 0, 0); + windowReturnOneRow(pParse, pMWin, regGosub, addrGosub); + if( regInvArg ){ + windowAggStep(pParse, pMWin, pMWin->iEphCsr, 1, regInvArg, regInvSize); + } + sqlite3VdbeAddOp2(v, OP_Next, pMWin->iEphCsr, addr); + VdbeCoverage(v); + sqlite3VdbeJumpHere(v, addr+1); /* The OP_Goto */ +} + +/* +** Generate code to set the accumulator register for each window function +** in the linked list passed as the second argument to NULL. And perform +** any equivalent initialization required by any built-in window functions +** in the list. +*/ +static int windowInitAccum(Parse *pParse, Window *pMWin){ + Vdbe *v = sqlite3GetVdbe(pParse); + int regArg; + int nArg = 0; + Window *pWin; + for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ + FuncDef *pFunc = pWin->pFunc; + sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum); + nArg = MAX(nArg, windowArgCount(pWin)); + if( pFunc->zName==nth_valueName + || pFunc->zName==first_valueName + ){ + sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp); + sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1); + } + + if( (pFunc->funcFlags & SQLITE_FUNC_MINMAX) && pWin->csrApp ){ + assert( pWin->eStart!=TK_UNBOUNDED ); + sqlite3VdbeAddOp1(v, OP_ResetSorter, pWin->csrApp); + sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1); + } + } + regArg = pParse->nMem+1; + pParse->nMem += nArg; + return regArg; +} + + +/* +** This function does the work of sqlite3WindowCodeStep() for all "ROWS" +** window frame types except for "BETWEEN UNBOUNDED PRECEDING AND CURRENT +** ROW". Pseudo-code for each follows. +** +** ROWS BETWEEN PRECEDING AND FOLLOWING +** +** ... +** if( new partition ){ +** Gosub flush_partition +** } +** Insert (record in eph-table) +** sqlite3WhereEnd() +** Gosub flush_partition +** +** flush_partition: +** Once { +** OpenDup (iEphCsr -> csrStart) +** OpenDup (iEphCsr -> csrEnd) +** } +** regStart = // PRECEDING expression +** regEnd = // FOLLOWING expression +** if( regStart<0 || regEnd<0 ){ error! } +** Rewind (csr,csrStart,csrEnd) // if EOF goto flush_partition_done +** Next(csrEnd) // if EOF skip Aggstep +** Aggstep (csrEnd) +** if( (regEnd--)<=0 ){ +** AggFinal (xValue) +** Gosub addrGosub +** Next(csr) // if EOF goto flush_partition_done +** if( (regStart--)<=0 ){ +** AggInverse (csrStart) +** Next(csrStart) +** } +** } +** flush_partition_done: +** ResetSorter (csr) +** Return +** +** ROWS BETWEEN PRECEDING AND CURRENT ROW +** ROWS BETWEEN CURRENT ROW AND FOLLOWING +** ROWS BETWEEN UNBOUNDED PRECEDING AND FOLLOWING +** +** These are similar to the above. For "CURRENT ROW", intialize the +** register to 0. For "UNBOUNDED PRECEDING" to infinity. +** +** ROWS BETWEEN PRECEDING AND UNBOUNDED FOLLOWING +** ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING +** +** Rewind (csr,csrStart,csrEnd) // if EOF goto flush_partition_done +** while( 1 ){ +** Next(csrEnd) // Exit while(1) at EOF +** Aggstep (csrEnd) +** } +** while( 1 ){ +** AggFinal (xValue) +** Gosub addrGosub +** Next(csr) // if EOF goto flush_partition_done +** if( (regStart--)<=0 ){ +** AggInverse (csrStart) +** Next(csrStart) +** } +** } +** +** For the "CURRENT ROW AND UNBOUNDED FOLLOWING" case, the final if() +** condition is always true (as if regStart were initialized to 0). +** +** RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING +** +** This is the only RANGE case handled by this routine. It modifies the +** second while( 1 ) loop in "ROWS BETWEEN CURRENT ... UNBOUNDED..." to +** be: +** +** while( 1 ){ +** AggFinal (xValue) +** while( 1 ){ +** regPeer++ +** Gosub addrGosub +** Next(csr) // if EOF goto flush_partition_done +** if( new peer ) break; +** } +** while( (regPeer--)>0 ){ +** AggInverse (csrStart) +** Next(csrStart) +** } +** } +** +** ROWS BETWEEN FOLLOWING AND FOLLOWING +** +** regEnd = regEnd - regStart +** Rewind (csr,csrStart,csrEnd) // if EOF goto flush_partition_done +** Aggstep (csrEnd) +** Next(csrEnd) // if EOF fall-through +** if( (regEnd--)<=0 ){ +** if( (regStart--)<=0 ){ +** AggFinal (xValue) +** Gosub addrGosub +** Next(csr) // if EOF goto flush_partition_done +** } +** AggInverse (csrStart) +** Next (csrStart) +** } +** +** ROWS BETWEEN PRECEDING AND PRECEDING +** +** Replace the bit after "Rewind" in the above with: +** +** if( (regEnd--)<=0 ){ +** AggStep (csrEnd) +** Next (csrEnd) +** } +** AggFinal (xValue) +** Gosub addrGosub +** Next(csr) // if EOF goto flush_partition_done +** if( (regStart--)<=0 ){ +** AggInverse (csr2) +** Next (csr2) +** } +** +*/ +static void windowCodeRowExprStep( + Parse *pParse, + Select *p, + WhereInfo *pWInfo, + int regGosub, + int addrGosub +){ + Window *pMWin = p->pWin; + Vdbe *v = sqlite3GetVdbe(pParse); + int regFlushPart; /* Register for "Gosub flush_partition" */ + int lblFlushPart; /* Label for "Gosub flush_partition" */ + int lblFlushDone; /* Label for "Gosub flush_partition_done" */ + + int regArg; + int addr; + int csrStart = pParse->nTab++; + int csrEnd = pParse->nTab++; + int regStart; /* Value of PRECEDING */ + int regEnd; /* Value of FOLLOWING */ + int addrGoto; + int addrTop; + int addrIfPos1 = 0; + int addrIfPos2 = 0; + int regSize = 0; + + assert( pMWin->eStart==TK_PRECEDING + || pMWin->eStart==TK_CURRENT + || pMWin->eStart==TK_FOLLOWING + || pMWin->eStart==TK_UNBOUNDED + ); + assert( pMWin->eEnd==TK_FOLLOWING + || pMWin->eEnd==TK_CURRENT + || pMWin->eEnd==TK_UNBOUNDED + || pMWin->eEnd==TK_PRECEDING + ); + + /* Allocate register and label for the "flush_partition" sub-routine. */ + regFlushPart = ++pParse->nMem; + lblFlushPart = sqlite3VdbeMakeLabel(v); + lblFlushDone = sqlite3VdbeMakeLabel(v); + + regStart = ++pParse->nMem; + regEnd = ++pParse->nMem; + + windowPartitionCache(pParse, p, pWInfo, regFlushPart, lblFlushPart, ®Size); + + addrGoto = sqlite3VdbeAddOp0(v, OP_Goto); + + /* Start of "flush_partition" */ + sqlite3VdbeResolveLabel(v, lblFlushPart); + sqlite3VdbeAddOp2(v, OP_Once, 0, sqlite3VdbeCurrentAddr(v)+3); + VdbeCoverage(v); + VdbeComment((v, "Flush_partition subroutine")); + sqlite3VdbeAddOp2(v, OP_OpenDup, csrStart, pMWin->iEphCsr); + sqlite3VdbeAddOp2(v, OP_OpenDup, csrEnd, pMWin->iEphCsr); + + /* If either regStart or regEnd are not non-negative integers, throw + ** an exception. */ + if( pMWin->pStart ){ + sqlite3ExprCode(pParse, pMWin->pStart, regStart); + windowCheckIntValue(pParse, regStart, 0); + } + if( pMWin->pEnd ){ + sqlite3ExprCode(pParse, pMWin->pEnd, regEnd); + windowCheckIntValue(pParse, regEnd, 1); + } + + /* If this is "ROWS FOLLOWING AND ROWS FOLLOWING", do: + ** + ** if( regEndpEnd && pMWin->eStart==TK_FOLLOWING ){ + assert( pMWin->pStart!=0 ); + assert( pMWin->eEnd==TK_FOLLOWING ); + sqlite3VdbeAddOp3(v, OP_Ge, regStart, sqlite3VdbeCurrentAddr(v)+2, regEnd); + VdbeCoverageNeverNull(v); + sqlite3VdbeAddOp2(v, OP_Copy, regSize, regStart); + sqlite3VdbeAddOp3(v, OP_Subtract, regStart, regEnd, regEnd); + } + + if( pMWin->pStart && pMWin->eEnd==TK_PRECEDING ){ + assert( pMWin->pEnd!=0 ); + assert( pMWin->eStart==TK_PRECEDING ); + sqlite3VdbeAddOp3(v, OP_Le, regStart, sqlite3VdbeCurrentAddr(v)+3, regEnd); + VdbeCoverageNeverNull(v); + sqlite3VdbeAddOp2(v, OP_Copy, regSize, regStart); + sqlite3VdbeAddOp2(v, OP_Copy, regSize, regEnd); + } + + /* Initialize the accumulator register for each window function to NULL */ + regArg = windowInitAccum(pParse, pMWin); + + sqlite3VdbeAddOp2(v, OP_Rewind, pMWin->iEphCsr, lblFlushDone); + VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_Rewind, csrStart, lblFlushDone); + VdbeCoverageNeverTaken(v); + sqlite3VdbeChangeP5(v, 1); + sqlite3VdbeAddOp2(v, OP_Rewind, csrEnd, lblFlushDone); + VdbeCoverageNeverTaken(v); + sqlite3VdbeChangeP5(v, 1); + + /* Invoke AggStep function for each window function using the row that + ** csrEnd currently points to. Or, if csrEnd is already at EOF, + ** do nothing. */ + addrTop = sqlite3VdbeCurrentAddr(v); + if( pMWin->eEnd==TK_PRECEDING ){ + addrIfPos1 = sqlite3VdbeAddOp3(v, OP_IfPos, regEnd, 0 , 1); + VdbeCoverage(v); + } + sqlite3VdbeAddOp2(v, OP_Next, csrEnd, sqlite3VdbeCurrentAddr(v)+2); + VdbeCoverage(v); + addr = sqlite3VdbeAddOp0(v, OP_Goto); + windowAggStep(pParse, pMWin, csrEnd, 0, regArg, regSize); + if( pMWin->eEnd==TK_UNBOUNDED ){ + sqlite3VdbeAddOp2(v, OP_Goto, 0, addrTop); + sqlite3VdbeJumpHere(v, addr); + addrTop = sqlite3VdbeCurrentAddr(v); + }else{ + sqlite3VdbeJumpHere(v, addr); + if( pMWin->eEnd==TK_PRECEDING ){ + sqlite3VdbeJumpHere(v, addrIfPos1); + } + } + + if( pMWin->eEnd==TK_FOLLOWING ){ + addrIfPos1 = sqlite3VdbeAddOp3(v, OP_IfPos, regEnd, 0 , 1); + VdbeCoverage(v); + } + if( pMWin->eStart==TK_FOLLOWING ){ + addrIfPos2 = sqlite3VdbeAddOp3(v, OP_IfPos, regStart, 0 , 1); + VdbeCoverage(v); + } + windowAggFinal(pParse, pMWin, 0); + windowReturnOneRow(pParse, pMWin, regGosub, addrGosub); + sqlite3VdbeAddOp2(v, OP_Next, pMWin->iEphCsr, sqlite3VdbeCurrentAddr(v)+2); + VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_Goto, 0, lblFlushDone); + if( pMWin->eStart==TK_FOLLOWING ){ + sqlite3VdbeJumpHere(v, addrIfPos2); + } + + if( pMWin->eStart==TK_CURRENT + || pMWin->eStart==TK_PRECEDING + || pMWin->eStart==TK_FOLLOWING + ){ + int lblSkipInverse = sqlite3VdbeMakeLabel(v);; + if( pMWin->eStart==TK_PRECEDING ){ + sqlite3VdbeAddOp3(v, OP_IfPos, regStart, lblSkipInverse, 1); + VdbeCoverage(v); + } + if( pMWin->eStart==TK_FOLLOWING ){ + sqlite3VdbeAddOp2(v, OP_Next, csrStart, sqlite3VdbeCurrentAddr(v)+2); + VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_Goto, 0, lblSkipInverse); + }else{ + sqlite3VdbeAddOp2(v, OP_Next, csrStart, sqlite3VdbeCurrentAddr(v)+1); + VdbeCoverageAlwaysTaken(v); + } + windowAggStep(pParse, pMWin, csrStart, 1, regArg, regSize); + sqlite3VdbeResolveLabel(v, lblSkipInverse); + } + if( pMWin->eEnd==TK_FOLLOWING ){ + sqlite3VdbeJumpHere(v, addrIfPos1); + } + sqlite3VdbeAddOp2(v, OP_Goto, 0, addrTop); + + /* flush_partition_done: */ + sqlite3VdbeResolveLabel(v, lblFlushDone); + sqlite3VdbeAddOp1(v, OP_ResetSorter, pMWin->iEphCsr); + sqlite3VdbeAddOp1(v, OP_Return, regFlushPart); + VdbeComment((v, "end flush_partition subroutine")); + + /* Jump to here to skip over flush_partition */ + sqlite3VdbeJumpHere(v, addrGoto); +} + +/* +** This function does the work of sqlite3WindowCodeStep() for cases that +** would normally be handled by windowCodeDefaultStep() when there are +** one or more built-in window-functions that require the entire partition +** to be cached in a temp table before any rows can be returned. Additionally. +** "RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING" is always handled by +** this function. +** +** Pseudo-code corresponding to the VM code generated by this function +** for each type of window follows. +** +** RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +** +** flush_partition: +** Once { +** OpenDup (iEphCsr -> csrLead) +** } +** Integer ctr 0 +** foreach row (csrLead){ +** if( new peer ){ +** AggFinal (xValue) +** for(i=0; i csrLead) +** } +** foreach row (csrLead) { +** AggStep (csrLead) +** } +** foreach row (iEphCsr) { +** Gosub addrGosub +** } +** +** RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING +** +** flush_partition: +** Once { +** OpenDup (iEphCsr -> csrLead) +** } +** foreach row (csrLead){ +** AggStep (csrLead) +** } +** Rewind (csrLead) +** Integer ctr 0 +** foreach row (csrLead){ +** if( new peer ){ +** AggFinal (xValue) +** for(i=0; ipWin; + Vdbe *v = sqlite3GetVdbe(pParse); + int k; + int addr; + ExprList *pPart = pMWin->pPartition; + ExprList *pOrderBy = pMWin->pOrderBy; + int nPeer = pOrderBy ? pOrderBy->nExpr : 0; + int regNewPeer; + + int addrGoto; /* Address of Goto used to jump flush_par.. */ + int addrNext; /* Jump here for next iteration of loop */ + int regFlushPart; + int lblFlushPart; + int csrLead; + int regCtr; + int regArg; /* Register array to martial function args */ + int regSize; + int lblEmpty; + int bReverse = pMWin->pOrderBy && pMWin->eStart==TK_CURRENT + && pMWin->eEnd==TK_UNBOUNDED; + + assert( (pMWin->eStart==TK_UNBOUNDED && pMWin->eEnd==TK_CURRENT) + || (pMWin->eStart==TK_UNBOUNDED && pMWin->eEnd==TK_UNBOUNDED) + || (pMWin->eStart==TK_CURRENT && pMWin->eEnd==TK_CURRENT) + || (pMWin->eStart==TK_CURRENT && pMWin->eEnd==TK_UNBOUNDED) + ); + + lblEmpty = sqlite3VdbeMakeLabel(v); + regNewPeer = pParse->nMem+1; + pParse->nMem += nPeer; + + /* Allocate register and label for the "flush_partition" sub-routine. */ + regFlushPart = ++pParse->nMem; + lblFlushPart = sqlite3VdbeMakeLabel(v); + + csrLead = pParse->nTab++; + regCtr = ++pParse->nMem; + + windowPartitionCache(pParse, p, pWInfo, regFlushPart, lblFlushPart, ®Size); + addrGoto = sqlite3VdbeAddOp0(v, OP_Goto); + + /* Start of "flush_partition" */ + sqlite3VdbeResolveLabel(v, lblFlushPart); + sqlite3VdbeAddOp2(v, OP_Once, 0, sqlite3VdbeCurrentAddr(v)+2); + VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_OpenDup, csrLead, pMWin->iEphCsr); + + /* Initialize the accumulator register for each window function to NULL */ + regArg = windowInitAccum(pParse, pMWin); + + sqlite3VdbeAddOp2(v, OP_Integer, 0, regCtr); + sqlite3VdbeAddOp2(v, OP_Rewind, csrLead, lblEmpty); + VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_Rewind, pMWin->iEphCsr, lblEmpty); + VdbeCoverageNeverTaken(v); + + if( bReverse ){ + int addr2 = sqlite3VdbeCurrentAddr(v); + windowAggStep(pParse, pMWin, csrLead, 0, regArg, regSize); + sqlite3VdbeAddOp2(v, OP_Next, csrLead, addr2); + VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_Rewind, csrLead, lblEmpty); + VdbeCoverageNeverTaken(v); + } + addrNext = sqlite3VdbeCurrentAddr(v); + + if( pOrderBy && (pMWin->eEnd==TK_CURRENT || pMWin->eStart==TK_CURRENT) ){ + int bCurrent = (pMWin->eStart==TK_CURRENT); + int addrJump = 0; /* Address of OP_Jump below */ + if( pMWin->eType==TK_RANGE ){ + int iOff = pMWin->nBufferCol + (pPart ? pPart->nExpr : 0); + int regPeer = pMWin->regPart + (pPart ? pPart->nExpr : 0); + KeyInfo *pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pOrderBy, 0, 0); + for(k=0; kiEphCsr); + sqlite3VdbeAddOp1(v, OP_Return, regFlushPart); + + /* Jump to here to skip over flush_partition */ + sqlite3VdbeJumpHere(v, addrGoto); +} + + +/* +** RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +** +** ... +** if( new partition ){ +** AggFinal (xFinalize) +** Gosub addrGosub +** ResetSorter eph-table +** } +** else if( new peer ){ +** AggFinal (xValue) +** Gosub addrGosub +** ResetSorter eph-table +** } +** AggStep +** Insert (record into eph-table) +** sqlite3WhereEnd() +** AggFinal (xFinalize) +** Gosub addrGosub +** +** RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING +** +** As above, except take no action for a "new peer". Invoke +** the sub-routine once only for each partition. +** +** RANGE BETWEEN CURRENT ROW AND CURRENT ROW +** +** As above, except that the "new peer" condition is handled in the +** same way as "new partition" (so there is no "else if" block). +** +** ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +** +** As above, except assume every row is a "new peer". +*/ +static void windowCodeDefaultStep( + Parse *pParse, + Select *p, + WhereInfo *pWInfo, + int regGosub, + int addrGosub +){ + Window *pMWin = p->pWin; + Vdbe *v = sqlite3GetVdbe(pParse); + int k; + int iSubCsr = p->pSrc->a[0].iCursor; + int nSub = p->pSrc->a[0].pTab->nCol; + int reg = pParse->nMem+1; + int regRecord = reg+nSub; + int regRowid = regRecord+1; + int addr; + ExprList *pPart = pMWin->pPartition; + ExprList *pOrderBy = pMWin->pOrderBy; + + assert( pMWin->eType==TK_RANGE + || (pMWin->eStart==TK_UNBOUNDED && pMWin->eEnd==TK_CURRENT) + ); + + assert( (pMWin->eStart==TK_UNBOUNDED && pMWin->eEnd==TK_CURRENT) + || (pMWin->eStart==TK_UNBOUNDED && pMWin->eEnd==TK_UNBOUNDED) + || (pMWin->eStart==TK_CURRENT && pMWin->eEnd==TK_CURRENT) + || (pMWin->eStart==TK_CURRENT && pMWin->eEnd==TK_UNBOUNDED && !pOrderBy) + ); + + if( pMWin->eEnd==TK_UNBOUNDED ){ + pOrderBy = 0; + } + + pParse->nMem += nSub + 2; + + /* Load the individual column values of the row returned by + ** the sub-select into an array of registers. */ + for(k=0; knExpr : 0); + int addrGoto = 0; + int addrJump = 0; + int nPeer = (pOrderBy ? pOrderBy->nExpr : 0); + + if( pPart ){ + int regNewPart = reg + pMWin->nBufferCol; + KeyInfo *pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pPart, 0, 0); + addr = sqlite3VdbeAddOp3(v, OP_Compare, regNewPart, pMWin->regPart,nPart); + sqlite3VdbeAppendP4(v, (void*)pKeyInfo, P4_KEYINFO); + addrJump = sqlite3VdbeAddOp3(v, OP_Jump, addr+2, 0, addr+2); + VdbeCoverageEqNe(v); + windowAggFinal(pParse, pMWin, 1); + if( pOrderBy ){ + addrGoto = sqlite3VdbeAddOp0(v, OP_Goto); + } + } + + if( pOrderBy ){ + int regNewPeer = reg + pMWin->nBufferCol + nPart; + int regPeer = pMWin->regPart + nPart; + + if( addrJump ) sqlite3VdbeJumpHere(v, addrJump); + if( pMWin->eType==TK_RANGE ){ + KeyInfo *pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pOrderBy, 0, 0); + addr = sqlite3VdbeAddOp3(v, OP_Compare, regNewPeer, regPeer, nPeer); + sqlite3VdbeAppendP4(v, (void*)pKeyInfo, P4_KEYINFO); + addrJump = sqlite3VdbeAddOp3(v, OP_Jump, addr+2, 0, addr+2); + VdbeCoverage(v); + }else{ + addrJump = 0; + } + windowAggFinal(pParse, pMWin, pMWin->eStart==TK_CURRENT); + if( addrGoto ) sqlite3VdbeJumpHere(v, addrGoto); + } + + sqlite3VdbeAddOp2(v, OP_Rewind, pMWin->iEphCsr,sqlite3VdbeCurrentAddr(v)+3); + VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_Gosub, regGosub, addrGosub); + sqlite3VdbeAddOp2(v, OP_Next, pMWin->iEphCsr, sqlite3VdbeCurrentAddr(v)-1); + VdbeCoverage(v); + + sqlite3VdbeAddOp1(v, OP_ResetSorter, pMWin->iEphCsr); + sqlite3VdbeAddOp3( + v, OP_Copy, reg+pMWin->nBufferCol, pMWin->regPart, nPart+nPeer-1 + ); + + if( addrJump ) sqlite3VdbeJumpHere(v, addrJump); + } + + /* Invoke step function for window functions */ + windowAggStep(pParse, pMWin, -1, 0, reg, 0); + + /* Buffer the current row in the ephemeral table. */ + if( pMWin->nBufferCol>0 ){ + sqlite3VdbeAddOp3(v, OP_MakeRecord, reg, pMWin->nBufferCol, regRecord); + }else{ + sqlite3VdbeAddOp2(v, OP_Blob, 0, regRecord); + sqlite3VdbeAppendP4(v, (void*)"", 0); + } + sqlite3VdbeAddOp2(v, OP_NewRowid, pMWin->iEphCsr, regRowid); + sqlite3VdbeAddOp3(v, OP_Insert, pMWin->iEphCsr, regRecord, regRowid); + + /* End the database scan loop. */ + sqlite3WhereEnd(pWInfo); + + windowAggFinal(pParse, pMWin, 1); + sqlite3VdbeAddOp2(v, OP_Rewind, pMWin->iEphCsr,sqlite3VdbeCurrentAddr(v)+3); + VdbeCoverage(v); + sqlite3VdbeAddOp2(v, OP_Gosub, regGosub, addrGosub); + sqlite3VdbeAddOp2(v, OP_Next, pMWin->iEphCsr, sqlite3VdbeCurrentAddr(v)-1); + VdbeCoverage(v); +} + +/* +** Allocate and return a duplicate of the Window object indicated by the +** third argument. Set the Window.pOwner field of the new object to +** pOwner. +*/ +SQLITE_PRIVATE Window *sqlite3WindowDup(sqlite3 *db, Expr *pOwner, Window *p){ + Window *pNew = 0; + if( p ){ + pNew = sqlite3DbMallocZero(db, sizeof(Window)); + if( pNew ){ + pNew->zName = sqlite3DbStrDup(db, p->zName); + pNew->pFilter = sqlite3ExprDup(db, p->pFilter, 0); + pNew->pPartition = sqlite3ExprListDup(db, p->pPartition, 0); + pNew->pOrderBy = sqlite3ExprListDup(db, p->pOrderBy, 0); + pNew->eType = p->eType; + pNew->eEnd = p->eEnd; + pNew->eStart = p->eStart; + pNew->pStart = sqlite3ExprDup(db, p->pStart, 0); + pNew->pEnd = sqlite3ExprDup(db, p->pEnd, 0); + pNew->pOwner = pOwner; + } + } + return pNew; +} + +/* +** Return a copy of the linked list of Window objects passed as the +** second argument. +*/ +SQLITE_PRIVATE Window *sqlite3WindowListDup(sqlite3 *db, Window *p){ + Window *pWin; + Window *pRet = 0; + Window **pp = &pRet; + + for(pWin=p; pWin; pWin=pWin->pNextWin){ + *pp = sqlite3WindowDup(db, 0, pWin); + if( *pp==0 ) break; + pp = &((*pp)->pNextWin); + } + + return pRet; +} + +/* +** sqlite3WhereBegin() has already been called for the SELECT statement +** passed as the second argument when this function is invoked. It generates +** code to populate the Window.regResult register for each window function and +** invoke the sub-routine at instruction addrGosub once for each row. +** This function calls sqlite3WhereEnd() before returning. +*/ +SQLITE_PRIVATE void sqlite3WindowCodeStep( + Parse *pParse, /* Parse context */ + Select *p, /* Rewritten SELECT statement */ + WhereInfo *pWInfo, /* Context returned by sqlite3WhereBegin() */ + int regGosub, /* Register for OP_Gosub */ + int addrGosub /* OP_Gosub here to return each row */ +){ + Window *pMWin = p->pWin; + + /* There are three different functions that may be used to do the work + ** of this one, depending on the window frame and the specific built-in + ** window functions used (if any). + ** + ** windowCodeRowExprStep() handles all "ROWS" window frames, except for: + ** + ** ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ** + ** The exception is because windowCodeRowExprStep() implements all window + ** frame types by caching the entire partition in a temp table, and + ** "ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW" is easy enough to + ** implement without such a cache. + ** + ** windowCodeCacheStep() is used for: + ** + ** RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + ** + ** It is also used for anything not handled by windowCodeRowExprStep() + ** that invokes a built-in window function that requires the entire + ** partition to be cached in a temp table before any rows are returned + ** (e.g. nth_value() or percent_rank()). + ** + ** Finally, assuming there is no built-in window function that requires + ** the partition to be cached, windowCodeDefaultStep() is used for: + ** + ** RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ** RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING + ** RANGE BETWEEN CURRENT ROW AND CURRENT ROW + ** ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ** + ** windowCodeDefaultStep() is the only one of the three functions that + ** does not cache each partition in a temp table before beginning to + ** return rows. + */ + if( pMWin->eType==TK_ROWS + && (pMWin->eStart!=TK_UNBOUNDED||pMWin->eEnd!=TK_CURRENT||!pMWin->pOrderBy) + ){ + VdbeModuleComment((pParse->pVdbe, "Begin RowExprStep()")); + windowCodeRowExprStep(pParse, p, pWInfo, regGosub, addrGosub); + }else{ + Window *pWin; + int bCache = 0; /* True to use CacheStep() */ + + if( pMWin->eStart==TK_CURRENT && pMWin->eEnd==TK_UNBOUNDED ){ + bCache = 1; + }else{ + for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ + FuncDef *pFunc = pWin->pFunc; + if( (pFunc->funcFlags & SQLITE_FUNC_WINDOW_SIZE) + || (pFunc->zName==nth_valueName) + || (pFunc->zName==first_valueName) + || (pFunc->zName==leadName) + || (pFunc->zName==lagName) + ){ + bCache = 1; + break; + } + } + } + + /* Otherwise, call windowCodeDefaultStep(). */ + if( bCache ){ + VdbeModuleComment((pParse->pVdbe, "Begin CacheStep()")); + windowCodeCacheStep(pParse, p, pWInfo, regGosub, addrGosub); + }else{ + VdbeModuleComment((pParse->pVdbe, "Begin DefaultStep()")); + windowCodeDefaultStep(pParse, p, pWInfo, regGosub, addrGosub); + } + } +} + +#endif /* SQLITE_OMIT_WINDOWFUNC */ + +/************** End of window.c **********************************************/ /************** Begin file parse.c *******************************************/ /* ** 2000-05-29 @@ -141457,6 +145982,8 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){ */ struct TrigEvent { int a; IdList * b; }; +struct FrameBound { int eType; Expr *pExpr; }; + /* ** Disable lookaside memory allocation for objects that might be ** shared across database connections. @@ -141497,10 +146024,21 @@ static void disableLookaside(Parse *pParse){ static Expr *tokenExpr(Parse *pParse, int op, Token t){ Expr *p = sqlite3DbMallocRawNN(pParse->db, sizeof(Expr)+t.n+1); if( p ){ - memset(p, 0, sizeof(Expr)); + /* memset(p, 0, sizeof(Expr)); */ p->op = (u8)op; + p->affinity = 0; p->flags = EP_Leaf; p->iAgg = -1; + p->pLeft = p->pRight = 0; + p->x.pList = 0; + p->pAggInfo = 0; + p->pTab = 0; + p->op2 = 0; + p->iTable = 0; + p->iColumn = 0; +#ifndef SQLITE_OMIT_WINDOWFUNC + p->pWin = 0; +#endif p->u.zToken = (char*)&p[1]; memcpy(p->u.zToken, t.z, t.n); p->u.zToken[t.n] = 0; @@ -141511,15 +146049,19 @@ static void disableLookaside(Parse *pParse){ #if SQLITE_MAX_EXPR_DEPTH>0 p->nHeight = 1; #endif + if( IN_RENAME_OBJECT ){ + return (Expr*)sqlite3RenameTokenMap(pParse, (void*)p, &t); + } } return p; } + /* A routine to convert a binary TK_IS or TK_ISNOT expression into a ** unary TK_ISNULL or TK_NOTNULL expression. */ static void binaryToUnaryIfNull(Parse *pParse, Expr *pY, Expr *pA, int op){ sqlite3 *db = pParse->db; - if( pA && pY && pY->op==TK_NULL ){ + if( pA && pY && pY->op==TK_NULL && !IN_RENAME_OBJECT ){ pA->op = (u8)op; sqlite3ExprDelete(db, pA->pRight); pA->pRight = 0; @@ -141610,26 +146152,28 @@ static void disableLookaside(Parse *pParse){ # define INTERFACE 1 #endif /************* Begin control #defines *****************************************/ -#define YYCODETYPE unsigned char -#define YYNOCODE 255 +#define YYCODETYPE unsigned short int +#define YYNOCODE 277 #define YYACTIONTYPE unsigned short int -#define YYWILDCARD 84 +#define YYWILDCARD 91 #define sqlite3ParserTOKENTYPE Token typedef union { int yyinit; sqlite3ParserTOKENTYPE yy0; - const char* yy36; - TriggerStep* yy47; - With* yy91; - struct {int value; int mask;} yy107; - Expr* yy182; - Upsert* yy198; - ExprList* yy232; - struct TrigEvent yy300; - Select* yy399; - SrcList* yy427; - int yy502; - IdList* yy510; + Expr* yy18; + struct TrigEvent yy34; + IdList* yy48; + int yy70; + struct {int value; int mask;} yy111; + struct FrameBound yy119; + SrcList* yy135; + TriggerStep* yy207; + Window* yy327; + Upsert* yy340; + const char* yy392; + ExprList* yy420; + With* yy449; + Select* yy489; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 100 @@ -141645,18 +146189,19 @@ typedef union { #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse; #define sqlite3ParserCTX_STORE yypParser->pParse=pParse; #define YYFALLBACK 1 -#define YYNSTATE 490 -#define YYNRULE 341 -#define YYNTOKEN 145 -#define YY_MAX_SHIFT 489 -#define YY_MIN_SHIFTREDUCE 705 -#define YY_MAX_SHIFTREDUCE 1045 -#define YY_ERROR_ACTION 1046 -#define YY_ACCEPT_ACTION 1047 -#define YY_NO_ACTION 1048 -#define YY_MIN_REDUCE 1049 -#define YY_MAX_REDUCE 1389 +#define YYNSTATE 521 +#define YYNRULE 367 +#define YYNTOKEN 155 +#define YY_MAX_SHIFT 520 +#define YY_MIN_SHIFTREDUCE 756 +#define YY_MAX_SHIFTREDUCE 1122 +#define YY_ERROR_ACTION 1123 +#define YY_ACCEPT_ACTION 1124 +#define YY_NO_ACTION 1125 +#define YY_MIN_REDUCE 1126 +#define YY_MAX_REDUCE 1492 /************* End control #defines *******************************************/ +#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0]))) /* Define the yytestcase() macro to be a no-op if is not already defined ** otherwise. @@ -141721,503 +146266,568 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (1657) +#define YY_ACTTAB_COUNT (2009) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 349, 99, 96, 185, 99, 96, 185, 233, 1047, 1, - /* 10 */ 1, 489, 2, 1051, 484, 477, 477, 477, 260, 351, - /* 20 */ 121, 1310, 1120, 1120, 1178, 1115, 1094, 1128, 380, 380, - /* 30 */ 380, 835, 454, 410, 1115, 59, 59, 1357, 425, 836, - /* 40 */ 710, 711, 712, 106, 107, 97, 1023, 1023, 900, 903, - /* 50 */ 892, 892, 104, 104, 105, 105, 105, 105, 346, 238, - /* 60 */ 238, 99, 96, 185, 238, 238, 889, 889, 901, 904, - /* 70 */ 460, 481, 351, 99, 96, 185, 481, 347, 1177, 82, - /* 80 */ 388, 214, 182, 23, 194, 103, 103, 103, 103, 102, - /* 90 */ 102, 101, 101, 101, 100, 381, 106, 107, 97, 1023, - /* 100 */ 1023, 900, 903, 892, 892, 104, 104, 105, 105, 105, - /* 110 */ 105, 10, 385, 484, 24, 484, 1333, 489, 2, 1051, - /* 120 */ 335, 1043, 108, 893, 260, 351, 121, 99, 96, 185, - /* 130 */ 100, 381, 386, 1128, 59, 59, 59, 59, 103, 103, - /* 140 */ 103, 103, 102, 102, 101, 101, 101, 100, 381, 106, - /* 150 */ 107, 97, 1023, 1023, 900, 903, 892, 892, 104, 104, - /* 160 */ 105, 105, 105, 105, 360, 238, 238, 170, 170, 467, - /* 170 */ 455, 467, 464, 67, 381, 329, 169, 481, 351, 343, - /* 180 */ 338, 400, 1044, 68, 101, 101, 101, 100, 381, 393, - /* 190 */ 194, 103, 103, 103, 103, 102, 102, 101, 101, 101, - /* 200 */ 100, 381, 106, 107, 97, 1023, 1023, 900, 903, 892, - /* 210 */ 892, 104, 104, 105, 105, 105, 105, 483, 385, 103, - /* 220 */ 103, 103, 103, 102, 102, 101, 101, 101, 100, 381, - /* 230 */ 268, 351, 946, 946, 422, 296, 102, 102, 101, 101, - /* 240 */ 101, 100, 381, 861, 103, 103, 103, 103, 102, 102, - /* 250 */ 101, 101, 101, 100, 381, 106, 107, 97, 1023, 1023, - /* 260 */ 900, 903, 892, 892, 104, 104, 105, 105, 105, 105, - /* 270 */ 484, 983, 1383, 206, 1353, 1383, 438, 435, 434, 281, - /* 280 */ 396, 269, 1089, 941, 351, 1002, 433, 861, 743, 401, - /* 290 */ 282, 57, 57, 482, 145, 791, 791, 103, 103, 103, - /* 300 */ 103, 102, 102, 101, 101, 101, 100, 381, 106, 107, - /* 310 */ 97, 1023, 1023, 900, 903, 892, 892, 104, 104, 105, - /* 320 */ 105, 105, 105, 281, 1002, 1003, 1004, 206, 879, 319, - /* 330 */ 438, 435, 434, 981, 259, 474, 360, 351, 1118, 1118, - /* 340 */ 433, 736, 379, 378, 872, 1002, 1356, 322, 871, 766, - /* 350 */ 103, 103, 103, 103, 102, 102, 101, 101, 101, 100, - /* 360 */ 381, 106, 107, 97, 1023, 1023, 900, 903, 892, 892, - /* 370 */ 104, 104, 105, 105, 105, 105, 484, 801, 484, 871, - /* 380 */ 871, 873, 401, 282, 1002, 1003, 1004, 1030, 360, 1030, - /* 390 */ 351, 983, 1384, 213, 880, 1384, 145, 59, 59, 59, - /* 400 */ 59, 1002, 244, 103, 103, 103, 103, 102, 102, 101, - /* 410 */ 101, 101, 100, 381, 106, 107, 97, 1023, 1023, 900, - /* 420 */ 903, 892, 892, 104, 104, 105, 105, 105, 105, 274, - /* 430 */ 484, 110, 467, 479, 467, 444, 259, 474, 232, 232, - /* 440 */ 1002, 1003, 1004, 351, 210, 335, 982, 866, 1385, 336, - /* 450 */ 481, 59, 59, 981, 245, 307, 103, 103, 103, 103, - /* 460 */ 102, 102, 101, 101, 101, 100, 381, 106, 107, 97, - /* 470 */ 1023, 1023, 900, 903, 892, 892, 104, 104, 105, 105, - /* 480 */ 105, 105, 453, 459, 484, 408, 377, 259, 474, 271, - /* 490 */ 183, 273, 209, 208, 207, 356, 351, 307, 178, 177, - /* 500 */ 127, 1006, 1098, 14, 14, 43, 43, 1044, 425, 103, - /* 510 */ 103, 103, 103, 102, 102, 101, 101, 101, 100, 381, - /* 520 */ 106, 107, 97, 1023, 1023, 900, 903, 892, 892, 104, - /* 530 */ 104, 105, 105, 105, 105, 294, 1132, 408, 160, 484, - /* 540 */ 408, 1006, 129, 962, 1209, 239, 239, 481, 307, 425, - /* 550 */ 1309, 1097, 351, 235, 243, 272, 820, 481, 963, 425, - /* 560 */ 11, 11, 103, 103, 103, 103, 102, 102, 101, 101, - /* 570 */ 101, 100, 381, 964, 362, 1002, 106, 107, 97, 1023, - /* 580 */ 1023, 900, 903, 892, 892, 104, 104, 105, 105, 105, - /* 590 */ 105, 1275, 161, 126, 777, 289, 1209, 292, 1072, 357, - /* 600 */ 1209, 1127, 476, 357, 778, 425, 247, 425, 351, 248, - /* 610 */ 414, 364, 414, 171, 1002, 1003, 1004, 84, 103, 103, - /* 620 */ 103, 103, 102, 102, 101, 101, 101, 100, 381, 1002, - /* 630 */ 184, 484, 106, 107, 97, 1023, 1023, 900, 903, 892, - /* 640 */ 892, 104, 104, 105, 105, 105, 105, 1123, 1209, 287, - /* 650 */ 484, 1209, 11, 11, 179, 820, 259, 474, 307, 237, - /* 660 */ 182, 351, 321, 365, 414, 308, 367, 366, 1002, 1003, - /* 670 */ 1004, 44, 44, 87, 103, 103, 103, 103, 102, 102, - /* 680 */ 101, 101, 101, 100, 381, 106, 107, 97, 1023, 1023, - /* 690 */ 900, 903, 892, 892, 104, 104, 105, 105, 105, 105, - /* 700 */ 246, 368, 280, 128, 10, 358, 146, 796, 835, 258, - /* 710 */ 1020, 88, 795, 86, 351, 421, 836, 943, 376, 348, - /* 720 */ 191, 943, 1318, 267, 308, 279, 456, 103, 103, 103, - /* 730 */ 103, 102, 102, 101, 101, 101, 100, 381, 106, 95, - /* 740 */ 97, 1023, 1023, 900, 903, 892, 892, 104, 104, 105, - /* 750 */ 105, 105, 105, 420, 249, 238, 238, 238, 238, 79, - /* 760 */ 375, 125, 305, 29, 262, 978, 351, 481, 337, 481, - /* 770 */ 756, 755, 304, 278, 415, 15, 81, 940, 1126, 940, - /* 780 */ 103, 103, 103, 103, 102, 102, 101, 101, 101, 100, - /* 790 */ 381, 107, 97, 1023, 1023, 900, 903, 892, 892, 104, - /* 800 */ 104, 105, 105, 105, 105, 457, 263, 484, 174, 484, - /* 810 */ 238, 238, 863, 407, 402, 216, 216, 351, 409, 193, - /* 820 */ 283, 216, 481, 81, 763, 764, 266, 5, 13, 13, - /* 830 */ 34, 34, 103, 103, 103, 103, 102, 102, 101, 101, - /* 840 */ 101, 100, 381, 97, 1023, 1023, 900, 903, 892, 892, - /* 850 */ 104, 104, 105, 105, 105, 105, 93, 475, 1002, 4, - /* 860 */ 403, 1002, 340, 431, 1002, 297, 212, 1277, 81, 746, - /* 870 */ 1163, 152, 926, 478, 166, 212, 757, 829, 930, 939, - /* 880 */ 216, 939, 858, 103, 103, 103, 103, 102, 102, 101, - /* 890 */ 101, 101, 100, 381, 238, 238, 382, 1002, 1003, 1004, - /* 900 */ 1002, 1003, 1004, 1002, 1003, 1004, 481, 439, 472, 746, - /* 910 */ 105, 105, 105, 105, 98, 758, 1162, 145, 930, 412, - /* 920 */ 879, 406, 793, 81, 395, 89, 90, 91, 105, 105, - /* 930 */ 105, 105, 1323, 92, 484, 382, 486, 485, 240, 275, - /* 940 */ 871, 103, 103, 103, 103, 102, 102, 101, 101, 101, - /* 950 */ 100, 381, 1096, 371, 355, 45, 45, 259, 474, 103, - /* 960 */ 103, 103, 103, 102, 102, 101, 101, 101, 100, 381, - /* 970 */ 1150, 871, 871, 873, 874, 21, 1332, 991, 384, 730, - /* 980 */ 722, 242, 123, 1298, 124, 875, 333, 333, 332, 227, - /* 990 */ 330, 991, 384, 719, 256, 242, 484, 391, 413, 1297, - /* 1000 */ 333, 333, 332, 227, 330, 748, 187, 719, 265, 470, - /* 1010 */ 1279, 1002, 484, 417, 391, 390, 264, 11, 11, 284, - /* 1020 */ 187, 732, 265, 93, 475, 875, 4, 1279, 1281, 419, - /* 1030 */ 264, 369, 416, 11, 11, 1159, 288, 484, 399, 1346, - /* 1040 */ 478, 379, 378, 291, 484, 293, 189, 250, 295, 1027, - /* 1050 */ 1002, 1003, 1004, 190, 1029, 1111, 140, 188, 11, 11, - /* 1060 */ 189, 732, 1028, 382, 923, 46, 46, 190, 1095, 230, - /* 1070 */ 140, 188, 462, 93, 475, 472, 4, 300, 309, 391, - /* 1080 */ 373, 6, 1069, 217, 739, 310, 1030, 879, 1030, 1171, - /* 1090 */ 478, 352, 1279, 90, 91, 800, 259, 474, 1208, 484, - /* 1100 */ 92, 1268, 382, 486, 485, 352, 1002, 871, 879, 426, - /* 1110 */ 259, 474, 172, 382, 238, 238, 1146, 170, 1021, 389, - /* 1120 */ 47, 47, 1157, 739, 872, 472, 481, 469, 871, 350, - /* 1130 */ 1214, 83, 475, 389, 4, 1078, 1071, 879, 871, 871, - /* 1140 */ 873, 874, 21, 90, 91, 1002, 1003, 1004, 478, 251, - /* 1150 */ 92, 251, 382, 486, 485, 443, 370, 871, 1021, 871, - /* 1160 */ 871, 873, 224, 241, 306, 441, 301, 440, 211, 1060, - /* 1170 */ 820, 382, 822, 447, 299, 1059, 484, 1061, 1143, 962, - /* 1180 */ 430, 796, 484, 472, 1340, 312, 795, 465, 871, 871, - /* 1190 */ 873, 874, 21, 314, 963, 879, 316, 59, 59, 1002, - /* 1200 */ 9, 90, 91, 48, 48, 238, 238, 210, 92, 964, - /* 1210 */ 382, 486, 485, 176, 334, 871, 242, 481, 1193, 238, - /* 1220 */ 238, 333, 333, 332, 227, 330, 394, 270, 719, 277, - /* 1230 */ 471, 481, 467, 466, 484, 145, 217, 1201, 1002, 1003, - /* 1240 */ 1004, 187, 3, 265, 184, 445, 871, 871, 873, 874, - /* 1250 */ 21, 264, 1337, 450, 1051, 39, 39, 392, 356, 260, - /* 1260 */ 342, 121, 468, 411, 436, 821, 180, 1094, 1128, 820, - /* 1270 */ 303, 1021, 1272, 1271, 299, 259, 474, 238, 238, 1002, - /* 1280 */ 473, 189, 484, 318, 327, 238, 238, 484, 190, 481, - /* 1290 */ 446, 140, 188, 1343, 238, 238, 1038, 481, 148, 175, - /* 1300 */ 238, 238, 484, 49, 49, 219, 481, 484, 35, 35, - /* 1310 */ 1317, 1021, 481, 484, 1035, 484, 1315, 484, 1002, 1003, - /* 1320 */ 1004, 484, 66, 36, 36, 194, 352, 484, 38, 38, - /* 1330 */ 484, 259, 474, 69, 50, 50, 51, 51, 52, 52, - /* 1340 */ 359, 484, 12, 12, 484, 1198, 484, 158, 53, 53, - /* 1350 */ 405, 112, 112, 385, 389, 484, 26, 484, 143, 484, - /* 1360 */ 150, 484, 54, 54, 397, 40, 40, 55, 55, 484, - /* 1370 */ 79, 484, 153, 1190, 484, 154, 56, 56, 41, 41, - /* 1380 */ 58, 58, 133, 133, 484, 398, 484, 429, 484, 155, - /* 1390 */ 134, 134, 135, 135, 484, 63, 63, 484, 341, 484, - /* 1400 */ 339, 484, 196, 484, 156, 42, 42, 113, 113, 60, - /* 1410 */ 60, 484, 404, 484, 27, 114, 114, 1204, 115, 115, - /* 1420 */ 111, 111, 132, 132, 131, 131, 1266, 418, 484, 162, - /* 1430 */ 484, 200, 119, 119, 118, 118, 484, 74, 424, 484, - /* 1440 */ 1286, 484, 231, 484, 202, 484, 167, 286, 427, 116, - /* 1450 */ 116, 117, 117, 290, 203, 442, 1062, 62, 62, 204, - /* 1460 */ 64, 64, 61, 61, 33, 33, 37, 37, 344, 372, - /* 1470 */ 1114, 1105, 748, 1113, 374, 1112, 254, 458, 1086, 255, - /* 1480 */ 345, 1085, 302, 1084, 1355, 78, 1154, 311, 1104, 449, - /* 1490 */ 452, 1155, 1153, 218, 7, 313, 315, 320, 1152, 85, - /* 1500 */ 1252, 317, 109, 80, 463, 225, 461, 1068, 25, 487, - /* 1510 */ 997, 323, 257, 226, 229, 228, 1136, 324, 325, 326, - /* 1520 */ 488, 136, 1057, 1052, 1302, 1303, 1301, 706, 1300, 137, - /* 1530 */ 122, 138, 383, 173, 1082, 261, 186, 252, 1081, 65, - /* 1540 */ 387, 120, 938, 936, 855, 353, 149, 1079, 139, 151, - /* 1550 */ 192, 780, 195, 276, 952, 157, 141, 361, 70, 363, - /* 1560 */ 859, 159, 71, 72, 142, 73, 955, 354, 147, 197, - /* 1570 */ 198, 951, 130, 16, 199, 285, 216, 1032, 201, 423, - /* 1580 */ 164, 944, 163, 28, 721, 428, 304, 165, 205, 759, - /* 1590 */ 75, 432, 298, 17, 18, 437, 76, 253, 878, 144, - /* 1600 */ 877, 906, 77, 986, 30, 448, 987, 31, 451, 181, - /* 1610 */ 234, 236, 168, 828, 823, 89, 910, 921, 81, 907, - /* 1620 */ 215, 905, 909, 961, 960, 19, 221, 20, 220, 22, - /* 1630 */ 32, 331, 876, 731, 94, 790, 794, 8, 992, 222, - /* 1640 */ 480, 328, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, - /* 1650 */ 223, 1048, 1048, 1048, 1048, 1348, 1347, + /* 0 */ 368, 105, 102, 197, 105, 102, 197, 515, 1124, 1, + /* 10 */ 1, 520, 2, 1128, 515, 1192, 1171, 1456, 275, 370, + /* 20 */ 127, 1389, 1197, 1197, 1192, 1166, 178, 1205, 64, 64, + /* 30 */ 477, 887, 322, 428, 348, 37, 37, 808, 362, 888, + /* 40 */ 509, 509, 509, 112, 113, 103, 1100, 1100, 953, 956, + /* 50 */ 946, 946, 110, 110, 111, 111, 111, 111, 365, 252, + /* 60 */ 252, 515, 252, 252, 497, 515, 309, 515, 459, 515, + /* 70 */ 1079, 491, 512, 478, 6, 512, 809, 134, 498, 228, + /* 80 */ 194, 428, 37, 37, 515, 208, 64, 64, 64, 64, + /* 90 */ 13, 13, 109, 109, 109, 109, 108, 108, 107, 107, + /* 100 */ 107, 106, 401, 258, 381, 13, 13, 398, 397, 428, + /* 110 */ 252, 252, 370, 476, 405, 1104, 1079, 1080, 1081, 386, + /* 120 */ 1106, 390, 497, 512, 497, 1423, 1419, 304, 1105, 307, + /* 130 */ 1256, 496, 370, 499, 16, 16, 112, 113, 103, 1100, + /* 140 */ 1100, 953, 956, 946, 946, 110, 110, 111, 111, 111, + /* 150 */ 111, 262, 1107, 495, 1107, 401, 112, 113, 103, 1100, + /* 160 */ 1100, 953, 956, 946, 946, 110, 110, 111, 111, 111, + /* 170 */ 111, 129, 1425, 343, 1420, 339, 1059, 492, 1057, 263, + /* 180 */ 73, 105, 102, 197, 994, 109, 109, 109, 109, 108, + /* 190 */ 108, 107, 107, 107, 106, 401, 370, 111, 111, 111, + /* 200 */ 111, 104, 492, 89, 1432, 109, 109, 109, 109, 108, + /* 210 */ 108, 107, 107, 107, 106, 401, 111, 111, 111, 111, + /* 220 */ 112, 113, 103, 1100, 1100, 953, 956, 946, 946, 110, + /* 230 */ 110, 111, 111, 111, 111, 109, 109, 109, 109, 108, + /* 240 */ 108, 107, 107, 107, 106, 401, 114, 108, 108, 107, + /* 250 */ 107, 107, 106, 401, 109, 109, 109, 109, 108, 108, + /* 260 */ 107, 107, 107, 106, 401, 152, 399, 399, 399, 109, + /* 270 */ 109, 109, 109, 108, 108, 107, 107, 107, 106, 401, + /* 280 */ 178, 493, 1412, 434, 1037, 1486, 1079, 515, 1486, 370, + /* 290 */ 421, 297, 357, 412, 74, 1079, 109, 109, 109, 109, + /* 300 */ 108, 108, 107, 107, 107, 106, 401, 1413, 37, 37, + /* 310 */ 1431, 274, 506, 112, 113, 103, 1100, 1100, 953, 956, + /* 320 */ 946, 946, 110, 110, 111, 111, 111, 111, 1436, 520, + /* 330 */ 2, 1128, 1079, 1080, 1081, 430, 275, 1079, 127, 366, + /* 340 */ 933, 1079, 1080, 1081, 220, 1205, 913, 458, 455, 454, + /* 350 */ 392, 167, 515, 1035, 152, 445, 924, 453, 152, 874, + /* 360 */ 923, 289, 109, 109, 109, 109, 108, 108, 107, 107, + /* 370 */ 107, 106, 401, 13, 13, 261, 853, 252, 252, 227, + /* 380 */ 106, 401, 370, 1079, 1080, 1081, 311, 388, 1079, 296, + /* 390 */ 512, 923, 923, 925, 231, 323, 1255, 1388, 1423, 490, + /* 400 */ 274, 506, 12, 208, 274, 506, 112, 113, 103, 1100, + /* 410 */ 1100, 953, 956, 946, 946, 110, 110, 111, 111, 111, + /* 420 */ 111, 1440, 286, 1128, 288, 1079, 1097, 247, 275, 1098, + /* 430 */ 127, 387, 405, 389, 1079, 1080, 1081, 1205, 159, 238, + /* 440 */ 255, 321, 461, 316, 460, 225, 790, 105, 102, 197, + /* 450 */ 513, 314, 842, 842, 445, 109, 109, 109, 109, 108, + /* 460 */ 108, 107, 107, 107, 106, 401, 515, 514, 515, 252, + /* 470 */ 252, 1079, 1080, 1081, 435, 370, 1098, 933, 1460, 794, + /* 480 */ 274, 506, 512, 105, 102, 197, 336, 63, 63, 64, + /* 490 */ 64, 27, 790, 924, 287, 208, 1354, 923, 515, 112, + /* 500 */ 113, 103, 1100, 1100, 953, 956, 946, 946, 110, 110, + /* 510 */ 111, 111, 111, 111, 107, 107, 107, 106, 401, 49, + /* 520 */ 49, 515, 28, 1079, 405, 497, 421, 297, 923, 923, + /* 530 */ 925, 186, 468, 1079, 467, 999, 999, 442, 515, 1079, + /* 540 */ 334, 515, 45, 45, 1083, 342, 173, 168, 109, 109, + /* 550 */ 109, 109, 108, 108, 107, 107, 107, 106, 401, 13, + /* 560 */ 13, 205, 13, 13, 252, 252, 1195, 1195, 370, 1079, + /* 570 */ 1080, 1081, 787, 265, 5, 359, 494, 512, 469, 1079, + /* 580 */ 1080, 1081, 398, 397, 1079, 1079, 1080, 1081, 3, 282, + /* 590 */ 1079, 1083, 112, 113, 103, 1100, 1100, 953, 956, 946, + /* 600 */ 946, 110, 110, 111, 111, 111, 111, 252, 252, 1015, + /* 610 */ 220, 1079, 873, 458, 455, 454, 943, 943, 954, 957, + /* 620 */ 512, 252, 252, 453, 1016, 1079, 445, 1107, 1209, 1107, + /* 630 */ 1079, 1080, 1081, 515, 512, 426, 1079, 1080, 1081, 1017, + /* 640 */ 512, 109, 109, 109, 109, 108, 108, 107, 107, 107, + /* 650 */ 106, 401, 1052, 515, 50, 50, 515, 1079, 1080, 1081, + /* 660 */ 828, 370, 1051, 379, 411, 1064, 1358, 207, 408, 773, + /* 670 */ 829, 1079, 1080, 1081, 64, 64, 322, 64, 64, 1302, + /* 680 */ 947, 411, 410, 1358, 1360, 112, 113, 103, 1100, 1100, + /* 690 */ 953, 956, 946, 946, 110, 110, 111, 111, 111, 111, + /* 700 */ 294, 482, 515, 1037, 1487, 515, 434, 1487, 354, 1120, + /* 710 */ 483, 996, 913, 485, 466, 996, 132, 178, 33, 450, + /* 720 */ 1203, 136, 406, 64, 64, 479, 64, 64, 419, 369, + /* 730 */ 283, 1146, 252, 252, 109, 109, 109, 109, 108, 108, + /* 740 */ 107, 107, 107, 106, 401, 512, 224, 440, 411, 266, + /* 750 */ 1358, 266, 252, 252, 370, 296, 416, 284, 934, 396, + /* 760 */ 976, 470, 400, 252, 252, 512, 9, 473, 231, 500, + /* 770 */ 354, 1036, 1035, 1488, 355, 374, 512, 1121, 112, 113, + /* 780 */ 103, 1100, 1100, 953, 956, 946, 946, 110, 110, 111, + /* 790 */ 111, 111, 111, 252, 252, 1015, 515, 1347, 295, 252, + /* 800 */ 252, 252, 252, 1098, 375, 249, 512, 445, 872, 322, + /* 810 */ 1016, 480, 512, 195, 512, 434, 273, 15, 15, 515, + /* 820 */ 314, 515, 95, 515, 93, 1017, 367, 109, 109, 109, + /* 830 */ 109, 108, 108, 107, 107, 107, 106, 401, 515, 1121, + /* 840 */ 39, 39, 51, 51, 52, 52, 503, 370, 515, 1204, + /* 850 */ 1098, 918, 439, 341, 133, 436, 223, 222, 221, 53, + /* 860 */ 53, 322, 1400, 761, 762, 763, 515, 370, 88, 54, + /* 870 */ 54, 112, 113, 103, 1100, 1100, 953, 956, 946, 946, + /* 880 */ 110, 110, 111, 111, 111, 111, 407, 55, 55, 196, + /* 890 */ 515, 112, 113, 103, 1100, 1100, 953, 956, 946, 946, + /* 900 */ 110, 110, 111, 111, 111, 111, 135, 264, 1149, 376, + /* 910 */ 515, 40, 40, 515, 872, 515, 993, 515, 993, 116, + /* 920 */ 109, 109, 109, 109, 108, 108, 107, 107, 107, 106, + /* 930 */ 401, 41, 41, 515, 43, 43, 44, 44, 56, 56, + /* 940 */ 109, 109, 109, 109, 108, 108, 107, 107, 107, 106, + /* 950 */ 401, 515, 379, 515, 57, 57, 515, 799, 515, 379, + /* 960 */ 515, 445, 200, 515, 323, 515, 1397, 515, 1459, 515, + /* 970 */ 1287, 817, 58, 58, 14, 14, 515, 59, 59, 118, + /* 980 */ 118, 60, 60, 515, 46, 46, 61, 61, 62, 62, + /* 990 */ 47, 47, 515, 190, 189, 91, 515, 140, 140, 515, + /* 1000 */ 394, 515, 277, 1200, 141, 141, 515, 1115, 515, 992, + /* 1010 */ 515, 992, 515, 69, 69, 370, 278, 48, 48, 259, + /* 1020 */ 65, 65, 119, 119, 246, 246, 260, 66, 66, 120, + /* 1030 */ 120, 121, 121, 117, 117, 370, 515, 512, 383, 112, + /* 1040 */ 113, 103, 1100, 1100, 953, 956, 946, 946, 110, 110, + /* 1050 */ 111, 111, 111, 111, 515, 872, 515, 139, 139, 112, + /* 1060 */ 113, 103, 1100, 1100, 953, 956, 946, 946, 110, 110, + /* 1070 */ 111, 111, 111, 111, 1287, 138, 138, 125, 125, 515, + /* 1080 */ 12, 515, 281, 1287, 515, 445, 131, 1287, 109, 109, + /* 1090 */ 109, 109, 108, 108, 107, 107, 107, 106, 401, 515, + /* 1100 */ 124, 124, 122, 122, 515, 123, 123, 515, 109, 109, + /* 1110 */ 109, 109, 108, 108, 107, 107, 107, 106, 401, 515, + /* 1120 */ 68, 68, 463, 783, 515, 70, 70, 302, 67, 67, + /* 1130 */ 1032, 253, 253, 356, 1287, 191, 196, 1433, 465, 1301, + /* 1140 */ 38, 38, 384, 94, 512, 42, 42, 177, 848, 274, + /* 1150 */ 506, 385, 420, 847, 1356, 441, 508, 376, 377, 153, + /* 1160 */ 423, 872, 432, 370, 224, 251, 194, 887, 182, 293, + /* 1170 */ 783, 848, 88, 254, 466, 888, 847, 915, 807, 806, + /* 1180 */ 230, 1241, 910, 370, 17, 413, 797, 112, 113, 103, + /* 1190 */ 1100, 1100, 953, 956, 946, 946, 110, 110, 111, 111, + /* 1200 */ 111, 111, 395, 814, 815, 1175, 983, 112, 101, 103, + /* 1210 */ 1100, 1100, 953, 956, 946, 946, 110, 110, 111, 111, + /* 1220 */ 111, 111, 375, 422, 427, 429, 298, 230, 230, 88, + /* 1230 */ 1240, 451, 312, 797, 226, 88, 109, 109, 109, 109, + /* 1240 */ 108, 108, 107, 107, 107, 106, 401, 86, 433, 979, + /* 1250 */ 927, 881, 226, 983, 230, 415, 109, 109, 109, 109, + /* 1260 */ 108, 108, 107, 107, 107, 106, 401, 320, 845, 781, + /* 1270 */ 846, 100, 130, 100, 1403, 290, 370, 319, 1377, 1376, + /* 1280 */ 437, 1449, 299, 1237, 303, 306, 308, 310, 1188, 1174, + /* 1290 */ 1173, 1172, 315, 324, 325, 1228, 370, 927, 1249, 271, + /* 1300 */ 1286, 113, 103, 1100, 1100, 953, 956, 946, 946, 110, + /* 1310 */ 110, 111, 111, 111, 111, 1224, 1235, 502, 501, 1292, + /* 1320 */ 1221, 1155, 103, 1100, 1100, 953, 956, 946, 946, 110, + /* 1330 */ 110, 111, 111, 111, 111, 1148, 1137, 1136, 1138, 1443, + /* 1340 */ 446, 244, 184, 98, 507, 188, 4, 353, 327, 109, + /* 1350 */ 109, 109, 109, 108, 108, 107, 107, 107, 106, 401, + /* 1360 */ 510, 329, 331, 199, 414, 456, 292, 285, 318, 109, + /* 1370 */ 109, 109, 109, 108, 108, 107, 107, 107, 106, 401, + /* 1380 */ 11, 1271, 1279, 402, 361, 192, 1171, 1351, 431, 505, + /* 1390 */ 346, 1350, 333, 98, 507, 504, 4, 187, 1446, 1115, + /* 1400 */ 233, 1396, 155, 1394, 1112, 152, 72, 75, 378, 425, + /* 1410 */ 510, 165, 149, 157, 933, 1276, 86, 30, 1268, 417, + /* 1420 */ 96, 96, 8, 160, 161, 162, 163, 97, 418, 402, + /* 1430 */ 517, 516, 449, 402, 923, 210, 358, 424, 1282, 438, + /* 1440 */ 169, 214, 360, 1345, 80, 504, 31, 444, 1365, 301, + /* 1450 */ 245, 274, 506, 216, 174, 305, 488, 447, 217, 462, + /* 1460 */ 1139, 487, 218, 363, 933, 923, 923, 925, 926, 24, + /* 1470 */ 96, 96, 1191, 1190, 1189, 391, 1182, 97, 1163, 402, + /* 1480 */ 517, 516, 799, 364, 923, 1162, 317, 1161, 98, 507, + /* 1490 */ 1181, 4, 1458, 472, 393, 269, 270, 475, 481, 1232, + /* 1500 */ 85, 1233, 326, 328, 232, 510, 495, 1231, 330, 98, + /* 1510 */ 507, 1230, 4, 486, 335, 923, 923, 925, 926, 24, + /* 1520 */ 1435, 1068, 404, 181, 336, 256, 510, 115, 402, 332, + /* 1530 */ 352, 352, 351, 241, 349, 1214, 1414, 770, 338, 10, + /* 1540 */ 504, 340, 272, 92, 1331, 1213, 87, 183, 484, 402, + /* 1550 */ 201, 488, 280, 239, 344, 345, 489, 1145, 29, 933, + /* 1560 */ 279, 504, 1074, 518, 240, 96, 96, 242, 243, 519, + /* 1570 */ 1134, 1129, 97, 154, 402, 517, 516, 372, 373, 923, + /* 1580 */ 933, 142, 143, 128, 1381, 267, 96, 96, 852, 757, + /* 1590 */ 203, 144, 403, 97, 1382, 402, 517, 516, 204, 1380, + /* 1600 */ 923, 146, 1379, 1159, 1158, 71, 1156, 276, 202, 185, + /* 1610 */ 923, 923, 925, 926, 24, 198, 257, 126, 991, 989, + /* 1620 */ 907, 98, 507, 156, 4, 145, 158, 206, 831, 209, + /* 1630 */ 291, 923, 923, 925, 926, 24, 1005, 911, 510, 164, + /* 1640 */ 147, 380, 371, 382, 166, 76, 77, 274, 506, 148, + /* 1650 */ 78, 79, 1008, 211, 212, 1004, 137, 213, 18, 300, + /* 1660 */ 230, 402, 997, 1109, 443, 215, 32, 170, 171, 772, + /* 1670 */ 409, 448, 319, 504, 219, 172, 452, 81, 19, 457, + /* 1680 */ 313, 20, 82, 268, 488, 150, 810, 179, 83, 487, + /* 1690 */ 464, 151, 933, 180, 959, 84, 1040, 34, 96, 96, + /* 1700 */ 471, 1041, 35, 474, 193, 97, 248, 402, 517, 516, + /* 1710 */ 1068, 404, 923, 250, 256, 880, 229, 175, 875, 352, + /* 1720 */ 352, 351, 241, 349, 100, 21, 770, 22, 1054, 1056, + /* 1730 */ 7, 98, 507, 1045, 4, 337, 1058, 23, 974, 201, + /* 1740 */ 176, 280, 88, 923, 923, 925, 926, 24, 510, 279, + /* 1750 */ 960, 958, 962, 1014, 963, 1013, 235, 234, 25, 36, + /* 1760 */ 99, 90, 507, 928, 4, 511, 350, 782, 26, 841, + /* 1770 */ 236, 402, 347, 1069, 237, 1125, 1125, 1451, 510, 203, + /* 1780 */ 1450, 1125, 1125, 504, 1125, 1125, 1125, 204, 1125, 1125, + /* 1790 */ 146, 1125, 1125, 1125, 1125, 1125, 1125, 202, 1125, 1125, + /* 1800 */ 1125, 402, 933, 1125, 1125, 1125, 1125, 1125, 96, 96, + /* 1810 */ 1125, 1125, 1125, 504, 1125, 97, 1125, 402, 517, 516, + /* 1820 */ 1125, 1125, 923, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + /* 1830 */ 1125, 371, 933, 1125, 1125, 1125, 274, 506, 96, 96, + /* 1840 */ 1125, 1125, 1125, 1125, 1125, 97, 1125, 402, 517, 516, + /* 1850 */ 1125, 1125, 923, 923, 923, 925, 926, 24, 1125, 409, + /* 1860 */ 1125, 1125, 1125, 256, 1125, 1125, 1125, 1125, 352, 352, + /* 1870 */ 351, 241, 349, 1125, 1125, 770, 1125, 1125, 1125, 1125, + /* 1880 */ 1125, 1125, 1125, 923, 923, 925, 926, 24, 201, 1125, + /* 1890 */ 280, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 279, 1125, + /* 1900 */ 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + /* 1910 */ 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + /* 1920 */ 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 203, 1125, + /* 1930 */ 1125, 1125, 1125, 1125, 1125, 1125, 204, 1125, 1125, 146, + /* 1940 */ 1125, 1125, 1125, 1125, 1125, 1125, 202, 1125, 1125, 1125, + /* 1950 */ 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + /* 1960 */ 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + /* 1970 */ 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + /* 1980 */ 371, 1125, 1125, 1125, 1125, 274, 506, 1125, 1125, 1125, + /* 1990 */ 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + /* 2000 */ 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 409, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 174, 226, 227, 228, 226, 227, 228, 172, 145, 146, - /* 10 */ 147, 148, 149, 150, 153, 169, 170, 171, 155, 19, - /* 20 */ 157, 246, 192, 193, 177, 181, 182, 164, 169, 170, - /* 30 */ 171, 31, 164, 153, 190, 174, 175, 187, 153, 39, - /* 40 */ 7, 8, 9, 43, 44, 45, 46, 47, 48, 49, - /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 174, 196, - /* 60 */ 197, 226, 227, 228, 196, 197, 46, 47, 48, 49, - /* 70 */ 209, 208, 19, 226, 227, 228, 208, 174, 177, 26, - /* 80 */ 195, 213, 214, 22, 221, 85, 86, 87, 88, 89, - /* 90 */ 90, 91, 92, 93, 94, 95, 43, 44, 45, 46, - /* 100 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - /* 110 */ 57, 172, 249, 153, 53, 153, 147, 148, 149, 150, - /* 120 */ 22, 23, 69, 103, 155, 19, 157, 226, 227, 228, - /* 130 */ 94, 95, 247, 164, 174, 175, 174, 175, 85, 86, - /* 140 */ 87, 88, 89, 90, 91, 92, 93, 94, 95, 43, - /* 150 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - /* 160 */ 54, 55, 56, 57, 153, 196, 197, 153, 153, 209, - /* 170 */ 210, 209, 210, 67, 95, 161, 237, 208, 19, 165, - /* 180 */ 165, 242, 84, 24, 91, 92, 93, 94, 95, 223, - /* 190 */ 221, 85, 86, 87, 88, 89, 90, 91, 92, 93, - /* 200 */ 94, 95, 43, 44, 45, 46, 47, 48, 49, 50, - /* 210 */ 51, 52, 53, 54, 55, 56, 57, 153, 249, 85, - /* 220 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - /* 230 */ 219, 19, 109, 110, 111, 23, 89, 90, 91, 92, - /* 240 */ 93, 94, 95, 73, 85, 86, 87, 88, 89, 90, - /* 250 */ 91, 92, 93, 94, 95, 43, 44, 45, 46, 47, - /* 260 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - /* 270 */ 153, 22, 23, 101, 173, 26, 104, 105, 106, 109, - /* 280 */ 110, 111, 181, 11, 19, 59, 114, 73, 23, 110, - /* 290 */ 111, 174, 175, 116, 80, 118, 119, 85, 86, 87, - /* 300 */ 88, 89, 90, 91, 92, 93, 94, 95, 43, 44, - /* 310 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 320 */ 55, 56, 57, 109, 98, 99, 100, 101, 83, 153, - /* 330 */ 104, 105, 106, 84, 120, 121, 153, 19, 192, 193, - /* 340 */ 114, 23, 89, 90, 99, 59, 23, 230, 103, 26, - /* 350 */ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - /* 360 */ 95, 43, 44, 45, 46, 47, 48, 49, 50, 51, - /* 370 */ 52, 53, 54, 55, 56, 57, 153, 91, 153, 134, - /* 380 */ 135, 136, 110, 111, 98, 99, 100, 134, 153, 136, - /* 390 */ 19, 22, 23, 26, 23, 26, 80, 174, 175, 174, - /* 400 */ 175, 59, 219, 85, 86, 87, 88, 89, 90, 91, - /* 410 */ 92, 93, 94, 95, 43, 44, 45, 46, 47, 48, - /* 420 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 16, - /* 430 */ 153, 22, 209, 210, 209, 210, 120, 121, 196, 197, - /* 440 */ 98, 99, 100, 19, 46, 22, 23, 23, 252, 253, - /* 450 */ 208, 174, 175, 84, 219, 153, 85, 86, 87, 88, - /* 460 */ 89, 90, 91, 92, 93, 94, 95, 43, 44, 45, - /* 470 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - /* 480 */ 56, 57, 153, 153, 153, 153, 209, 120, 121, 76, - /* 490 */ 153, 78, 109, 110, 111, 97, 19, 153, 89, 90, - /* 500 */ 198, 59, 183, 174, 175, 174, 175, 84, 153, 85, - /* 510 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - /* 520 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - /* 530 */ 53, 54, 55, 56, 57, 16, 197, 153, 22, 153, - /* 540 */ 153, 99, 198, 12, 153, 196, 197, 208, 153, 153, - /* 550 */ 195, 183, 19, 23, 222, 142, 26, 208, 27, 153, - /* 560 */ 174, 175, 85, 86, 87, 88, 89, 90, 91, 92, - /* 570 */ 93, 94, 95, 42, 188, 59, 43, 44, 45, 46, - /* 580 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - /* 590 */ 57, 195, 22, 198, 63, 76, 153, 78, 167, 168, - /* 600 */ 153, 195, 167, 168, 73, 153, 222, 153, 19, 222, - /* 610 */ 153, 220, 153, 24, 98, 99, 100, 140, 85, 86, - /* 620 */ 87, 88, 89, 90, 91, 92, 93, 94, 95, 59, - /* 630 */ 100, 153, 43, 44, 45, 46, 47, 48, 49, 50, - /* 640 */ 51, 52, 53, 54, 55, 56, 57, 195, 153, 195, - /* 650 */ 153, 153, 174, 175, 26, 125, 120, 121, 153, 213, - /* 660 */ 214, 19, 153, 220, 153, 153, 188, 220, 98, 99, - /* 670 */ 100, 174, 175, 140, 85, 86, 87, 88, 89, 90, - /* 680 */ 91, 92, 93, 94, 95, 43, 44, 45, 46, 47, + /* 0 */ 184, 238, 239, 240, 238, 239, 240, 163, 155, 156, + /* 10 */ 157, 158, 159, 160, 163, 191, 192, 183, 165, 19, + /* 20 */ 167, 258, 202, 203, 200, 191, 163, 174, 184, 185, + /* 30 */ 174, 31, 163, 163, 171, 184, 185, 35, 175, 39, + /* 40 */ 179, 180, 181, 43, 44, 45, 46, 47, 48, 49, + /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 184, 206, + /* 60 */ 207, 163, 206, 207, 220, 163, 16, 163, 66, 163, + /* 70 */ 59, 270, 219, 229, 273, 219, 74, 208, 174, 223, + /* 80 */ 224, 163, 184, 185, 163, 232, 184, 185, 184, 185, + /* 90 */ 184, 185, 92, 93, 94, 95, 96, 97, 98, 99, + /* 100 */ 100, 101, 102, 233, 198, 184, 185, 96, 97, 163, + /* 110 */ 206, 207, 19, 163, 261, 104, 105, 106, 107, 198, + /* 120 */ 109, 119, 220, 219, 220, 274, 275, 77, 117, 79, + /* 130 */ 187, 229, 19, 229, 184, 185, 43, 44, 45, 46, + /* 140 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + /* 150 */ 57, 233, 141, 134, 143, 102, 43, 44, 45, 46, + /* 160 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + /* 170 */ 57, 152, 274, 216, 276, 218, 83, 163, 85, 233, + /* 180 */ 67, 238, 239, 240, 11, 92, 93, 94, 95, 96, + /* 190 */ 97, 98, 99, 100, 101, 102, 19, 54, 55, 56, + /* 200 */ 57, 58, 163, 26, 163, 92, 93, 94, 95, 96, + /* 210 */ 97, 98, 99, 100, 101, 102, 54, 55, 56, 57, + /* 220 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + /* 230 */ 53, 54, 55, 56, 57, 92, 93, 94, 95, 96, + /* 240 */ 97, 98, 99, 100, 101, 102, 69, 96, 97, 98, + /* 250 */ 99, 100, 101, 102, 92, 93, 94, 95, 96, 97, + /* 260 */ 98, 99, 100, 101, 102, 81, 179, 180, 181, 92, + /* 270 */ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + /* 280 */ 163, 267, 268, 163, 22, 23, 59, 163, 26, 19, + /* 290 */ 117, 118, 175, 109, 24, 59, 92, 93, 94, 95, + /* 300 */ 96, 97, 98, 99, 100, 101, 102, 268, 184, 185, + /* 310 */ 269, 127, 128, 43, 44, 45, 46, 47, 48, 49, + /* 320 */ 50, 51, 52, 53, 54, 55, 56, 57, 157, 158, + /* 330 */ 159, 160, 105, 106, 107, 163, 165, 59, 167, 184, + /* 340 */ 90, 105, 106, 107, 108, 174, 73, 111, 112, 113, + /* 350 */ 19, 22, 163, 91, 81, 163, 106, 121, 81, 132, + /* 360 */ 110, 16, 92, 93, 94, 95, 96, 97, 98, 99, + /* 370 */ 100, 101, 102, 184, 185, 255, 98, 206, 207, 26, + /* 380 */ 101, 102, 19, 105, 106, 107, 23, 198, 59, 116, + /* 390 */ 219, 141, 142, 143, 24, 163, 187, 205, 274, 275, + /* 400 */ 127, 128, 182, 232, 127, 128, 43, 44, 45, 46, + /* 410 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + /* 420 */ 57, 158, 77, 160, 79, 59, 26, 182, 165, 59, + /* 430 */ 167, 199, 261, 102, 105, 106, 107, 174, 72, 108, + /* 440 */ 109, 110, 111, 112, 113, 114, 59, 238, 239, 240, + /* 450 */ 123, 120, 125, 126, 163, 92, 93, 94, 95, 96, + /* 460 */ 97, 98, 99, 100, 101, 102, 163, 163, 163, 206, + /* 470 */ 207, 105, 106, 107, 254, 19, 106, 90, 197, 23, + /* 480 */ 127, 128, 219, 238, 239, 240, 22, 184, 185, 184, + /* 490 */ 185, 22, 105, 106, 149, 232, 205, 110, 163, 43, + /* 500 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + /* 510 */ 54, 55, 56, 57, 98, 99, 100, 101, 102, 184, + /* 520 */ 185, 163, 53, 59, 261, 220, 117, 118, 141, 142, + /* 530 */ 143, 131, 174, 59, 229, 116, 117, 118, 163, 59, + /* 540 */ 163, 163, 184, 185, 59, 242, 72, 22, 92, 93, + /* 550 */ 94, 95, 96, 97, 98, 99, 100, 101, 102, 184, + /* 560 */ 185, 24, 184, 185, 206, 207, 202, 203, 19, 105, + /* 570 */ 106, 107, 23, 198, 22, 174, 198, 219, 220, 105, + /* 580 */ 106, 107, 96, 97, 59, 105, 106, 107, 22, 174, + /* 590 */ 59, 106, 43, 44, 45, 46, 47, 48, 49, 50, + /* 600 */ 51, 52, 53, 54, 55, 56, 57, 206, 207, 12, + /* 610 */ 108, 59, 132, 111, 112, 113, 46, 47, 48, 49, + /* 620 */ 219, 206, 207, 121, 27, 59, 163, 141, 207, 143, + /* 630 */ 105, 106, 107, 163, 219, 234, 105, 106, 107, 42, + /* 640 */ 219, 92, 93, 94, 95, 96, 97, 98, 99, 100, + /* 650 */ 101, 102, 76, 163, 184, 185, 163, 105, 106, 107, + /* 660 */ 63, 19, 86, 163, 163, 23, 163, 130, 205, 21, + /* 670 */ 73, 105, 106, 107, 184, 185, 163, 184, 185, 237, + /* 680 */ 110, 180, 181, 180, 181, 43, 44, 45, 46, 47, /* 690 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - /* 700 */ 243, 189, 243, 198, 172, 250, 251, 117, 31, 201, - /* 710 */ 26, 139, 122, 141, 19, 220, 39, 29, 220, 211, - /* 720 */ 24, 33, 153, 164, 153, 164, 19, 85, 86, 87, - /* 730 */ 88, 89, 90, 91, 92, 93, 94, 95, 43, 44, - /* 740 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - /* 750 */ 55, 56, 57, 65, 243, 196, 197, 196, 197, 131, - /* 760 */ 189, 22, 103, 24, 153, 23, 19, 208, 26, 208, - /* 770 */ 102, 103, 113, 23, 242, 22, 26, 134, 164, 136, - /* 780 */ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - /* 790 */ 95, 44, 45, 46, 47, 48, 49, 50, 51, 52, - /* 800 */ 53, 54, 55, 56, 57, 98, 153, 153, 124, 153, - /* 810 */ 196, 197, 23, 23, 61, 26, 26, 19, 23, 123, - /* 820 */ 23, 26, 208, 26, 7, 8, 153, 22, 174, 175, - /* 830 */ 174, 175, 85, 86, 87, 88, 89, 90, 91, 92, - /* 840 */ 93, 94, 95, 45, 46, 47, 48, 49, 50, 51, - /* 850 */ 52, 53, 54, 55, 56, 57, 19, 20, 59, 22, - /* 860 */ 111, 59, 164, 23, 59, 23, 26, 153, 26, 59, - /* 870 */ 153, 72, 23, 36, 72, 26, 35, 23, 59, 134, - /* 880 */ 26, 136, 133, 85, 86, 87, 88, 89, 90, 91, - /* 890 */ 92, 93, 94, 95, 196, 197, 59, 98, 99, 100, - /* 900 */ 98, 99, 100, 98, 99, 100, 208, 66, 71, 99, - /* 910 */ 54, 55, 56, 57, 58, 74, 153, 80, 99, 19, - /* 920 */ 83, 223, 23, 26, 153, 26, 89, 90, 54, 55, - /* 930 */ 56, 57, 153, 96, 153, 98, 99, 100, 22, 153, - /* 940 */ 103, 85, 86, 87, 88, 89, 90, 91, 92, 93, - /* 950 */ 94, 95, 183, 112, 158, 174, 175, 120, 121, 85, - /* 960 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - /* 970 */ 215, 134, 135, 136, 137, 138, 0, 1, 2, 23, - /* 980 */ 21, 5, 26, 153, 22, 59, 10, 11, 12, 13, - /* 990 */ 14, 1, 2, 17, 212, 5, 153, 153, 98, 153, - /* 1000 */ 10, 11, 12, 13, 14, 108, 30, 17, 32, 193, - /* 1010 */ 153, 59, 153, 153, 170, 171, 40, 174, 175, 153, - /* 1020 */ 30, 59, 32, 19, 20, 99, 22, 170, 171, 233, - /* 1030 */ 40, 188, 236, 174, 175, 153, 153, 153, 79, 123, - /* 1040 */ 36, 89, 90, 153, 153, 153, 70, 188, 153, 97, - /* 1050 */ 98, 99, 100, 77, 102, 153, 80, 81, 174, 175, - /* 1060 */ 70, 99, 110, 59, 105, 174, 175, 77, 153, 238, - /* 1070 */ 80, 81, 188, 19, 20, 71, 22, 153, 153, 235, - /* 1080 */ 19, 22, 164, 24, 59, 153, 134, 83, 136, 153, - /* 1090 */ 36, 115, 235, 89, 90, 91, 120, 121, 153, 153, - /* 1100 */ 96, 142, 98, 99, 100, 115, 59, 103, 83, 239, - /* 1110 */ 120, 121, 199, 59, 196, 197, 153, 153, 59, 143, - /* 1120 */ 174, 175, 153, 98, 99, 71, 208, 153, 103, 165, - /* 1130 */ 153, 19, 20, 143, 22, 153, 153, 83, 134, 135, - /* 1140 */ 136, 137, 138, 89, 90, 98, 99, 100, 36, 185, - /* 1150 */ 96, 187, 98, 99, 100, 91, 95, 103, 99, 134, - /* 1160 */ 135, 136, 101, 102, 103, 104, 105, 106, 107, 153, - /* 1170 */ 26, 59, 125, 164, 113, 153, 153, 153, 212, 12, - /* 1180 */ 19, 117, 153, 71, 153, 212, 122, 164, 134, 135, - /* 1190 */ 136, 137, 138, 212, 27, 83, 212, 174, 175, 59, - /* 1200 */ 200, 89, 90, 174, 175, 196, 197, 46, 96, 42, - /* 1210 */ 98, 99, 100, 172, 151, 103, 5, 208, 203, 196, - /* 1220 */ 197, 10, 11, 12, 13, 14, 216, 216, 17, 244, - /* 1230 */ 63, 208, 209, 210, 153, 80, 24, 203, 98, 99, - /* 1240 */ 100, 30, 22, 32, 100, 164, 134, 135, 136, 137, - /* 1250 */ 138, 40, 148, 164, 150, 174, 175, 102, 97, 155, - /* 1260 */ 203, 157, 164, 244, 178, 125, 186, 182, 164, 125, - /* 1270 */ 177, 59, 177, 177, 113, 120, 121, 196, 197, 59, - /* 1280 */ 232, 70, 153, 216, 202, 196, 197, 153, 77, 208, - /* 1290 */ 209, 80, 81, 156, 196, 197, 60, 208, 248, 200, - /* 1300 */ 196, 197, 153, 174, 175, 123, 208, 153, 174, 175, - /* 1310 */ 160, 99, 208, 153, 38, 153, 160, 153, 98, 99, - /* 1320 */ 100, 153, 245, 174, 175, 221, 115, 153, 174, 175, - /* 1330 */ 153, 120, 121, 245, 174, 175, 174, 175, 174, 175, - /* 1340 */ 160, 153, 174, 175, 153, 225, 153, 22, 174, 175, - /* 1350 */ 97, 174, 175, 249, 143, 153, 224, 153, 43, 153, - /* 1360 */ 191, 153, 174, 175, 18, 174, 175, 174, 175, 153, - /* 1370 */ 131, 153, 194, 203, 153, 194, 174, 175, 174, 175, - /* 1380 */ 174, 175, 174, 175, 153, 160, 153, 18, 153, 194, - /* 1390 */ 174, 175, 174, 175, 153, 174, 175, 153, 225, 153, - /* 1400 */ 203, 153, 159, 153, 194, 174, 175, 174, 175, 174, - /* 1410 */ 175, 153, 203, 153, 224, 174, 175, 191, 174, 175, - /* 1420 */ 174, 175, 174, 175, 174, 175, 203, 160, 153, 191, - /* 1430 */ 153, 159, 174, 175, 174, 175, 153, 139, 62, 153, - /* 1440 */ 241, 153, 160, 153, 159, 153, 22, 240, 179, 174, - /* 1450 */ 175, 174, 175, 160, 159, 97, 160, 174, 175, 159, - /* 1460 */ 174, 175, 174, 175, 174, 175, 174, 175, 179, 64, - /* 1470 */ 176, 184, 108, 176, 95, 176, 234, 126, 176, 234, - /* 1480 */ 179, 178, 176, 176, 176, 97, 218, 217, 184, 179, - /* 1490 */ 179, 218, 218, 160, 22, 217, 217, 160, 218, 139, - /* 1500 */ 229, 217, 130, 129, 127, 25, 128, 163, 26, 162, - /* 1510 */ 13, 206, 231, 154, 6, 154, 207, 205, 204, 203, - /* 1520 */ 152, 166, 152, 152, 172, 172, 172, 4, 172, 166, - /* 1530 */ 180, 166, 3, 22, 172, 144, 15, 180, 172, 172, - /* 1540 */ 82, 16, 23, 23, 121, 254, 132, 172, 112, 124, - /* 1550 */ 24, 20, 126, 16, 1, 124, 112, 61, 53, 37, - /* 1560 */ 133, 132, 53, 53, 112, 53, 98, 254, 251, 34, - /* 1570 */ 123, 1, 5, 22, 97, 142, 26, 75, 123, 41, - /* 1580 */ 97, 68, 68, 24, 20, 19, 113, 22, 107, 28, - /* 1590 */ 22, 67, 23, 22, 22, 67, 22, 67, 23, 37, - /* 1600 */ 23, 23, 26, 23, 22, 24, 23, 22, 24, 123, - /* 1610 */ 23, 23, 22, 98, 125, 26, 11, 23, 26, 23, - /* 1620 */ 34, 23, 23, 23, 23, 34, 22, 34, 26, 22, - /* 1630 */ 22, 15, 23, 23, 22, 117, 23, 22, 1, 123, - /* 1640 */ 26, 23, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1650 */ 123, 255, 255, 255, 255, 123, 123, 255, 255, 255, - /* 1660 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1670 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1680 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1690 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1700 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1710 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1720 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1730 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1740 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1750 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1760 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1770 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1780 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1790 */ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - /* 1800 */ 255, 255, + /* 700 */ 174, 163, 163, 22, 23, 163, 163, 26, 22, 23, + /* 710 */ 220, 29, 73, 220, 272, 33, 22, 163, 24, 19, + /* 720 */ 174, 208, 259, 184, 185, 19, 184, 185, 80, 175, + /* 730 */ 230, 174, 206, 207, 92, 93, 94, 95, 96, 97, + /* 740 */ 98, 99, 100, 101, 102, 219, 46, 65, 247, 195, + /* 750 */ 247, 197, 206, 207, 19, 116, 117, 118, 23, 220, + /* 760 */ 112, 174, 220, 206, 207, 219, 22, 174, 24, 174, + /* 770 */ 22, 23, 91, 264, 265, 168, 219, 91, 43, 44, + /* 780 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + /* 790 */ 55, 56, 57, 206, 207, 12, 163, 149, 255, 206, + /* 800 */ 207, 206, 207, 59, 104, 23, 219, 163, 26, 163, + /* 810 */ 27, 105, 219, 163, 219, 163, 211, 184, 185, 163, + /* 820 */ 120, 163, 146, 163, 148, 42, 221, 92, 93, 94, + /* 830 */ 95, 96, 97, 98, 99, 100, 101, 102, 163, 91, + /* 840 */ 184, 185, 184, 185, 184, 185, 63, 19, 163, 205, + /* 850 */ 106, 23, 245, 163, 208, 248, 116, 117, 118, 184, + /* 860 */ 185, 163, 163, 7, 8, 9, 163, 19, 26, 184, + /* 870 */ 185, 43, 44, 45, 46, 47, 48, 49, 50, 51, + /* 880 */ 52, 53, 54, 55, 56, 57, 163, 184, 185, 107, + /* 890 */ 163, 43, 44, 45, 46, 47, 48, 49, 50, 51, + /* 900 */ 52, 53, 54, 55, 56, 57, 208, 255, 177, 178, + /* 910 */ 163, 184, 185, 163, 132, 163, 141, 163, 143, 22, + /* 920 */ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + /* 930 */ 102, 184, 185, 163, 184, 185, 184, 185, 184, 185, + /* 940 */ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + /* 950 */ 102, 163, 163, 163, 184, 185, 163, 115, 163, 163, + /* 960 */ 163, 163, 15, 163, 163, 163, 163, 163, 23, 163, + /* 970 */ 163, 26, 184, 185, 184, 185, 163, 184, 185, 184, + /* 980 */ 185, 184, 185, 163, 184, 185, 184, 185, 184, 185, + /* 990 */ 184, 185, 163, 96, 97, 147, 163, 184, 185, 163, + /* 1000 */ 199, 163, 163, 205, 184, 185, 163, 60, 163, 141, + /* 1010 */ 163, 143, 163, 184, 185, 19, 163, 184, 185, 230, + /* 1020 */ 184, 185, 184, 185, 206, 207, 230, 184, 185, 184, + /* 1030 */ 185, 184, 185, 184, 185, 19, 163, 219, 231, 43, + /* 1040 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + /* 1050 */ 54, 55, 56, 57, 163, 26, 163, 184, 185, 43, + /* 1060 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + /* 1070 */ 54, 55, 56, 57, 163, 184, 185, 184, 185, 163, + /* 1080 */ 182, 163, 163, 163, 163, 163, 22, 163, 92, 93, + /* 1090 */ 94, 95, 96, 97, 98, 99, 100, 101, 102, 163, + /* 1100 */ 184, 185, 184, 185, 163, 184, 185, 163, 92, 93, + /* 1110 */ 94, 95, 96, 97, 98, 99, 100, 101, 102, 163, + /* 1120 */ 184, 185, 98, 59, 163, 184, 185, 205, 184, 185, + /* 1130 */ 23, 206, 207, 26, 163, 26, 107, 153, 154, 237, + /* 1140 */ 184, 185, 231, 147, 219, 184, 185, 249, 124, 127, + /* 1150 */ 128, 231, 254, 129, 163, 231, 177, 178, 262, 263, + /* 1160 */ 118, 132, 19, 19, 46, 223, 224, 31, 24, 23, + /* 1170 */ 106, 124, 26, 22, 272, 39, 129, 23, 109, 110, + /* 1180 */ 26, 163, 140, 19, 22, 234, 59, 43, 44, 45, + /* 1190 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + /* 1200 */ 56, 57, 231, 7, 8, 193, 59, 43, 44, 45, + /* 1210 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + /* 1220 */ 56, 57, 104, 61, 23, 23, 23, 26, 26, 26, + /* 1230 */ 163, 23, 23, 106, 26, 26, 92, 93, 94, 95, + /* 1240 */ 96, 97, 98, 99, 100, 101, 102, 138, 105, 23, + /* 1250 */ 59, 23, 26, 106, 26, 163, 92, 93, 94, 95, + /* 1260 */ 96, 97, 98, 99, 100, 101, 102, 110, 23, 23, + /* 1270 */ 23, 26, 26, 26, 163, 163, 19, 120, 163, 163, + /* 1280 */ 163, 130, 163, 163, 163, 163, 163, 163, 163, 193, + /* 1290 */ 193, 163, 163, 163, 163, 225, 19, 106, 163, 222, + /* 1300 */ 163, 44, 45, 46, 47, 48, 49, 50, 51, 52, + /* 1310 */ 53, 54, 55, 56, 57, 163, 163, 203, 163, 163, + /* 1320 */ 222, 163, 45, 46, 47, 48, 49, 50, 51, 52, + /* 1330 */ 53, 54, 55, 56, 57, 163, 163, 163, 163, 163, + /* 1340 */ 251, 250, 209, 19, 20, 182, 22, 161, 222, 92, + /* 1350 */ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + /* 1360 */ 36, 222, 222, 260, 226, 188, 256, 226, 187, 92, + /* 1370 */ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + /* 1380 */ 210, 213, 213, 59, 213, 196, 192, 187, 256, 244, + /* 1390 */ 212, 187, 226, 19, 20, 71, 22, 210, 166, 60, + /* 1400 */ 130, 170, 260, 170, 38, 81, 257, 257, 170, 104, + /* 1410 */ 36, 22, 43, 201, 90, 236, 138, 235, 213, 18, + /* 1420 */ 96, 97, 48, 204, 204, 204, 204, 103, 170, 105, + /* 1430 */ 106, 107, 18, 59, 110, 169, 213, 213, 201, 170, + /* 1440 */ 201, 169, 236, 213, 146, 71, 235, 62, 253, 252, + /* 1450 */ 170, 127, 128, 169, 22, 170, 82, 189, 169, 104, + /* 1460 */ 170, 87, 169, 189, 90, 141, 142, 143, 144, 145, + /* 1470 */ 96, 97, 186, 186, 186, 64, 194, 103, 186, 105, + /* 1480 */ 106, 107, 115, 189, 110, 188, 186, 186, 19, 20, + /* 1490 */ 194, 22, 186, 189, 102, 246, 246, 189, 133, 228, + /* 1500 */ 104, 228, 227, 227, 170, 36, 134, 228, 227, 19, + /* 1510 */ 20, 228, 22, 84, 271, 141, 142, 143, 144, 145, + /* 1520 */ 0, 1, 2, 216, 22, 5, 36, 137, 59, 227, + /* 1530 */ 10, 11, 12, 13, 14, 217, 269, 17, 216, 22, + /* 1540 */ 71, 170, 243, 146, 241, 217, 136, 215, 135, 59, + /* 1550 */ 30, 82, 32, 25, 214, 213, 87, 173, 26, 90, + /* 1560 */ 40, 71, 13, 172, 164, 96, 97, 164, 6, 162, + /* 1570 */ 162, 162, 103, 263, 105, 106, 107, 266, 266, 110, + /* 1580 */ 90, 176, 176, 190, 182, 190, 96, 97, 98, 4, + /* 1590 */ 70, 176, 3, 103, 182, 105, 106, 107, 78, 182, + /* 1600 */ 110, 81, 182, 182, 182, 182, 182, 151, 88, 22, + /* 1610 */ 141, 142, 143, 144, 145, 15, 89, 16, 23, 23, + /* 1620 */ 128, 19, 20, 139, 22, 119, 131, 24, 20, 133, + /* 1630 */ 16, 141, 142, 143, 144, 145, 1, 140, 36, 131, + /* 1640 */ 119, 61, 122, 37, 139, 53, 53, 127, 128, 119, + /* 1650 */ 53, 53, 105, 34, 130, 1, 5, 104, 22, 149, + /* 1660 */ 26, 59, 68, 75, 41, 130, 24, 68, 104, 20, + /* 1670 */ 150, 19, 120, 71, 114, 22, 67, 22, 22, 67, + /* 1680 */ 23, 22, 22, 67, 82, 37, 28, 23, 138, 87, + /* 1690 */ 22, 153, 90, 23, 23, 26, 23, 22, 96, 97, + /* 1700 */ 24, 23, 22, 24, 130, 103, 23, 105, 106, 107, + /* 1710 */ 1, 2, 110, 23, 5, 105, 34, 22, 132, 10, + /* 1720 */ 11, 12, 13, 14, 26, 34, 17, 34, 85, 83, + /* 1730 */ 44, 19, 20, 23, 22, 24, 75, 34, 23, 30, + /* 1740 */ 26, 32, 26, 141, 142, 143, 144, 145, 36, 40, + /* 1750 */ 23, 23, 23, 23, 11, 23, 22, 26, 22, 22, + /* 1760 */ 22, 19, 20, 23, 22, 26, 15, 23, 22, 124, + /* 1770 */ 130, 59, 23, 1, 130, 277, 277, 130, 36, 70, + /* 1780 */ 130, 277, 277, 71, 277, 277, 277, 78, 277, 277, + /* 1790 */ 81, 277, 277, 277, 277, 277, 277, 88, 277, 277, + /* 1800 */ 277, 59, 90, 277, 277, 277, 277, 277, 96, 97, + /* 1810 */ 277, 277, 277, 71, 277, 103, 277, 105, 106, 107, + /* 1820 */ 277, 277, 110, 277, 277, 277, 277, 277, 277, 277, + /* 1830 */ 277, 122, 90, 277, 277, 277, 127, 128, 96, 97, + /* 1840 */ 277, 277, 277, 277, 277, 103, 277, 105, 106, 107, + /* 1850 */ 277, 277, 110, 141, 142, 143, 144, 145, 277, 150, + /* 1860 */ 277, 277, 277, 5, 277, 277, 277, 277, 10, 11, + /* 1870 */ 12, 13, 14, 277, 277, 17, 277, 277, 277, 277, + /* 1880 */ 277, 277, 277, 141, 142, 143, 144, 145, 30, 277, + /* 1890 */ 32, 277, 277, 277, 277, 277, 277, 277, 40, 277, + /* 1900 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 1910 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 1920 */ 277, 277, 277, 277, 277, 277, 277, 277, 70, 277, + /* 1930 */ 277, 277, 277, 277, 277, 277, 78, 277, 277, 81, + /* 1940 */ 277, 277, 277, 277, 277, 277, 88, 277, 277, 277, + /* 1950 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 1960 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 1970 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 1980 */ 122, 277, 277, 277, 277, 127, 128, 277, 277, 277, + /* 1990 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + /* 2000 */ 277, 277, 277, 277, 277, 277, 277, 277, 150, 277, + /* 2010 */ 277, 277, 277, 277, 277, 277, 277, 277, 277, }; -#define YY_SHIFT_COUNT (489) +#define YY_SHIFT_COUNT (520) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (1637) +#define YY_SHIFT_MAX (1858) static const unsigned short int yy_shift_ofst[] = { - /* 0 */ 990, 976, 1211, 837, 837, 316, 1054, 1054, 1054, 1054, - /* 10 */ 214, 0, 0, 106, 642, 1054, 1054, 1054, 1054, 1054, - /* 20 */ 1054, 1054, 1054, 952, 952, 226, 1155, 316, 316, 316, - /* 30 */ 316, 316, 316, 53, 159, 212, 265, 318, 371, 424, - /* 40 */ 477, 533, 589, 642, 642, 642, 642, 642, 642, 642, - /* 50 */ 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, - /* 60 */ 695, 642, 747, 798, 798, 1004, 1054, 1054, 1054, 1054, - /* 70 */ 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - /* 80 */ 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - /* 90 */ 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1112, 1054, 1054, - /* 100 */ 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - /* 110 */ 1054, 856, 874, 874, 874, 874, 874, 134, 147, 93, - /* 120 */ 342, 959, 1161, 253, 253, 342, 367, 367, 367, 367, - /* 130 */ 179, 36, 79, 1657, 1657, 1657, 1061, 1061, 1061, 516, - /* 140 */ 799, 516, 516, 531, 531, 802, 249, 369, 342, 342, - /* 150 */ 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - /* 160 */ 342, 342, 342, 342, 342, 342, 342, 342, 342, 272, - /* 170 */ 442, 442, 536, 1657, 1657, 1657, 1025, 245, 245, 570, - /* 180 */ 172, 286, 805, 1047, 1140, 1220, 342, 342, 342, 342, - /* 190 */ 342, 342, 342, 342, 170, 342, 342, 342, 342, 342, - /* 200 */ 342, 342, 342, 342, 342, 342, 342, 841, 841, 841, - /* 210 */ 342, 342, 342, 342, 530, 342, 342, 342, 1059, 342, - /* 220 */ 342, 1167, 342, 342, 342, 342, 342, 342, 342, 342, - /* 230 */ 123, 688, 177, 1212, 1212, 1212, 1212, 1144, 177, 177, - /* 240 */ 1064, 409, 33, 628, 707, 707, 900, 628, 628, 900, - /* 250 */ 897, 323, 398, 677, 677, 677, 707, 572, 684, 590, - /* 260 */ 739, 1236, 1182, 1182, 1276, 1276, 1182, 1253, 1325, 1315, - /* 270 */ 1239, 1346, 1346, 1346, 1346, 1182, 1369, 1239, 1239, 1253, - /* 280 */ 1325, 1315, 1315, 1239, 1182, 1369, 1298, 1376, 1182, 1369, - /* 290 */ 1424, 1182, 1369, 1182, 1369, 1424, 1358, 1358, 1358, 1405, - /* 300 */ 1424, 1358, 1364, 1358, 1405, 1358, 1358, 1424, 1379, 1379, - /* 310 */ 1424, 1351, 1388, 1351, 1388, 1351, 1388, 1351, 1388, 1182, - /* 320 */ 1472, 1182, 1360, 1372, 1377, 1374, 1378, 1239, 1480, 1482, - /* 330 */ 1497, 1497, 1508, 1508, 1508, 1657, 1657, 1657, 1657, 1657, - /* 340 */ 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, - /* 350 */ 1657, 20, 413, 98, 423, 519, 383, 962, 742, 61, - /* 360 */ 696, 749, 750, 753, 789, 790, 795, 797, 840, 842, - /* 370 */ 810, 668, 817, 659, 819, 849, 854, 899, 643, 745, - /* 380 */ 956, 926, 916, 1523, 1529, 1511, 1391, 1521, 1458, 1525, - /* 390 */ 1519, 1520, 1423, 1414, 1436, 1526, 1425, 1531, 1426, 1537, - /* 400 */ 1553, 1431, 1427, 1444, 1496, 1522, 1429, 1505, 1509, 1510, - /* 410 */ 1512, 1452, 1468, 1535, 1447, 1570, 1567, 1551, 1477, 1433, - /* 420 */ 1513, 1550, 1514, 1502, 1538, 1455, 1483, 1559, 1564, 1566, - /* 430 */ 1473, 1481, 1565, 1524, 1568, 1571, 1569, 1572, 1528, 1561, - /* 440 */ 1574, 1530, 1562, 1575, 1577, 1578, 1576, 1580, 1582, 1581, - /* 450 */ 1583, 1585, 1584, 1486, 1587, 1588, 1515, 1586, 1590, 1489, - /* 460 */ 1589, 1591, 1592, 1593, 1594, 1596, 1598, 1589, 1599, 1600, - /* 470 */ 1602, 1601, 1604, 1605, 1607, 1608, 1609, 1610, 1612, 1613, - /* 480 */ 1615, 1614, 1518, 1516, 1527, 1532, 1533, 1618, 1616, 1637, + /* 0 */ 1709, 1520, 1858, 1324, 1324, 277, 1374, 1469, 1602, 1712, + /* 10 */ 1712, 1712, 273, 0, 0, 113, 1016, 1712, 1712, 1712, + /* 20 */ 1712, 1712, 1712, 1712, 1712, 1712, 1712, 11, 11, 236, + /* 30 */ 184, 277, 277, 277, 277, 277, 277, 93, 177, 270, + /* 40 */ 363, 456, 549, 642, 735, 828, 848, 996, 1144, 1016, + /* 50 */ 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + /* 60 */ 1016, 1016, 1016, 1016, 1016, 1016, 1164, 1016, 1257, 1277, + /* 70 */ 1277, 1490, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, + /* 80 */ 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, + /* 90 */ 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, + /* 100 */ 1712, 1712, 1712, 1742, 1712, 1712, 1712, 1712, 1712, 1712, + /* 110 */ 1712, 1712, 1712, 1712, 1712, 1712, 1712, 143, 162, 162, + /* 120 */ 162, 162, 162, 204, 151, 416, 531, 648, 700, 531, + /* 130 */ 486, 486, 531, 353, 353, 353, 353, 409, 279, 53, + /* 140 */ 2009, 2009, 331, 331, 331, 329, 366, 329, 329, 597, + /* 150 */ 597, 464, 474, 262, 681, 531, 531, 531, 531, 531, + /* 160 */ 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + /* 170 */ 531, 531, 531, 531, 531, 531, 531, 173, 485, 984, + /* 180 */ 984, 576, 485, 19, 1022, 2009, 2009, 2009, 387, 250, + /* 190 */ 250, 525, 502, 278, 552, 227, 480, 566, 531, 531, + /* 200 */ 531, 531, 531, 531, 531, 531, 531, 531, 639, 531, + /* 210 */ 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + /* 220 */ 531, 2, 2, 2, 531, 531, 531, 531, 782, 531, + /* 230 */ 531, 531, 744, 531, 531, 783, 531, 531, 531, 531, + /* 240 */ 531, 531, 531, 531, 419, 682, 327, 370, 370, 370, + /* 250 */ 370, 1029, 327, 327, 1024, 897, 856, 947, 1109, 706, + /* 260 */ 706, 1143, 1109, 1109, 1143, 842, 945, 1118, 1136, 1136, + /* 270 */ 1136, 706, 676, 400, 1047, 694, 1339, 1270, 1270, 1366, + /* 280 */ 1366, 1270, 1305, 1389, 1369, 1278, 1401, 1401, 1401, 1401, + /* 290 */ 1270, 1414, 1278, 1278, 1305, 1389, 1369, 1369, 1278, 1270, + /* 300 */ 1414, 1298, 1385, 1270, 1414, 1432, 1270, 1414, 1270, 1414, + /* 310 */ 1432, 1355, 1355, 1355, 1411, 1432, 1355, 1367, 1355, 1411, + /* 320 */ 1355, 1355, 1432, 1392, 1392, 1432, 1365, 1396, 1365, 1396, + /* 330 */ 1365, 1396, 1365, 1396, 1270, 1372, 1429, 1502, 1390, 1372, + /* 340 */ 1517, 1270, 1397, 1390, 1410, 1413, 1278, 1528, 1532, 1549, + /* 350 */ 1549, 1562, 1562, 1562, 2009, 2009, 2009, 2009, 2009, 2009, + /* 360 */ 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, + /* 370 */ 570, 345, 686, 748, 50, 740, 1064, 1107, 469, 537, + /* 380 */ 1042, 1146, 1162, 1154, 1201, 1202, 1203, 1208, 1209, 1127, + /* 390 */ 1069, 1196, 1157, 1147, 1226, 1228, 1245, 775, 868, 1246, + /* 400 */ 1247, 1191, 1151, 1585, 1589, 1587, 1456, 1600, 1527, 1601, + /* 410 */ 1595, 1596, 1492, 1484, 1506, 1603, 1495, 1608, 1496, 1614, + /* 420 */ 1635, 1508, 1497, 1521, 1580, 1606, 1505, 1592, 1593, 1597, + /* 430 */ 1598, 1530, 1547, 1619, 1524, 1654, 1651, 1636, 1553, 1510, + /* 440 */ 1594, 1634, 1599, 1588, 1623, 1535, 1564, 1642, 1649, 1652, + /* 450 */ 1552, 1560, 1653, 1609, 1655, 1656, 1657, 1659, 1612, 1658, + /* 460 */ 1660, 1616, 1648, 1664, 1550, 1668, 1538, 1670, 1671, 1669, + /* 470 */ 1673, 1675, 1676, 1678, 1680, 1679, 1574, 1683, 1690, 1610, + /* 480 */ 1682, 1695, 1586, 1698, 1691, 1698, 1693, 1643, 1661, 1646, + /* 490 */ 1686, 1710, 1711, 1714, 1716, 1703, 1715, 1698, 1727, 1728, + /* 500 */ 1729, 1730, 1731, 1732, 1734, 1743, 1736, 1737, 1740, 1744, + /* 510 */ 1738, 1746, 1739, 1645, 1640, 1644, 1647, 1650, 1749, 1751, + /* 520 */ 1772, }; -#define YY_REDUCE_COUNT (350) -#define YY_REDUCE_MIN (-225) -#define YY_REDUCE_MAX (1375) +#define YY_REDUCE_COUNT (369) +#define YY_REDUCE_MIN (-237) +#define YY_REDUCE_MAX (1424) static const short yy_reduce_ofst[] = { - /* 0 */ -137, -31, 1104, 1023, 1081, -132, -40, -38, 223, 225, - /* 10 */ 698, -153, -99, -225, -165, 386, 478, 843, 859, -139, - /* 20 */ 884, 117, 277, 844, 857, 964, 559, 561, 614, 918, - /* 30 */ 1009, 1089, 1098, -222, -222, -222, -222, -222, -222, -222, - /* 40 */ -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, - /* 50 */ -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, - /* 60 */ -222, -222, -222, -222, -222, 329, 331, 497, 654, 656, - /* 70 */ 781, 891, 946, 1029, 1129, 1134, 1149, 1154, 1160, 1162, - /* 80 */ 1164, 1168, 1174, 1177, 1188, 1191, 1193, 1202, 1204, 1206, - /* 90 */ 1208, 1216, 1218, 1221, 1231, 1233, 1235, 1241, 1244, 1246, - /* 100 */ 1248, 1250, 1258, 1260, 1275, 1277, 1283, 1286, 1288, 1290, - /* 110 */ 1292, -222, -222, -222, -222, -222, -222, -222, -222, -222, - /* 120 */ -115, 796, -156, -154, -141, 14, 242, 349, 242, 349, - /* 130 */ -61, -222, -222, -222, -222, -222, 101, 101, 101, 332, - /* 140 */ 302, 384, 387, -170, 146, 344, 196, 196, 15, 11, - /* 150 */ 183, 235, 395, 355, 396, 406, 452, 457, 391, 459, - /* 160 */ 443, 447, 511, 495, 454, 512, 505, 571, 498, 532, - /* 170 */ 431, 435, 339, 455, 446, 508, -174, -116, -97, -120, - /* 180 */ -150, 64, 176, 330, 337, 509, 569, 611, 653, 673, - /* 190 */ 714, 717, 763, 771, -34, 779, 786, 830, 846, 860, - /* 200 */ 866, 882, 883, 890, 892, 895, 902, 319, 368, 769, - /* 210 */ 915, 924, 925, 932, 755, 936, 945, 963, 782, 969, - /* 220 */ 974, 816, 977, 64, 982, 983, 1016, 1022, 1024, 1031, - /* 230 */ 870, 831, 913, 966, 973, 981, 984, 755, 913, 913, - /* 240 */ 1000, 1041, 1063, 1015, 1010, 1011, 985, 1034, 1057, 1019, - /* 250 */ 1086, 1080, 1085, 1093, 1095, 1096, 1067, 1048, 1082, 1099, - /* 260 */ 1137, 1050, 1150, 1156, 1077, 1088, 1180, 1120, 1132, 1169, - /* 270 */ 1170, 1178, 1181, 1195, 1210, 1225, 1243, 1197, 1209, 1173, - /* 280 */ 1190, 1226, 1238, 1223, 1267, 1272, 1199, 1207, 1282, 1285, - /* 290 */ 1269, 1293, 1295, 1296, 1300, 1289, 1294, 1297, 1299, 1287, - /* 300 */ 1301, 1302, 1303, 1306, 1304, 1307, 1308, 1310, 1242, 1245, - /* 310 */ 1311, 1268, 1270, 1273, 1278, 1274, 1279, 1280, 1284, 1333, - /* 320 */ 1271, 1337, 1281, 1309, 1305, 1312, 1314, 1316, 1344, 1347, - /* 330 */ 1359, 1361, 1368, 1370, 1371, 1291, 1313, 1317, 1355, 1352, - /* 340 */ 1353, 1354, 1356, 1363, 1350, 1357, 1362, 1366, 1367, 1375, - /* 350 */ 1365, + /* 0 */ -147, 171, 263, -96, 358, -144, -149, -102, 124, -156, + /* 10 */ -98, 305, 401, -57, 209, -237, 245, -94, -79, 189, + /* 20 */ 375, 490, 493, 378, 303, 539, 542, 501, 503, 554, + /* 30 */ 415, 526, 546, 557, 587, 593, 595, -234, -234, -234, + /* 40 */ -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + /* 50 */ -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + /* 60 */ -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + /* 70 */ -234, -50, 335, 470, 633, 656, 658, 660, 675, 685, + /* 80 */ 703, 727, 747, 750, 752, 754, 770, 788, 790, 793, + /* 90 */ 795, 797, 800, 802, 804, 806, 813, 820, 829, 833, + /* 100 */ 836, 838, 843, 845, 847, 849, 873, 891, 893, 916, + /* 110 */ 918, 921, 936, 941, 944, 956, 961, -234, -234, -234, + /* 120 */ -234, -234, -234, -234, -234, -234, 463, 607, -176, 14, + /* 130 */ -139, 87, -137, 818, 925, 818, 925, 898, -234, -234, + /* 140 */ -234, -234, -166, -166, -166, -130, -131, -82, -54, -180, + /* 150 */ 364, 41, 513, 509, 509, 117, 500, 789, 796, 646, + /* 160 */ 192, 291, 644, 798, 120, 807, 543, 911, 920, 652, + /* 170 */ 924, 922, 232, 698, 801, 971, 39, 220, 731, 442, + /* 180 */ 902, -199, 979, -43, 421, 896, 942, 605, -184, -126, + /* 190 */ 155, 172, 281, 304, 377, 538, 650, 690, 699, 723, + /* 200 */ 803, 839, 853, 919, 991, 1018, 1067, 1092, 951, 1111, + /* 210 */ 1112, 1115, 1116, 1117, 1119, 1120, 1121, 1122, 1123, 1124, + /* 220 */ 1125, 1012, 1096, 1097, 1128, 1129, 1130, 1131, 1070, 1135, + /* 230 */ 1137, 1152, 1077, 1153, 1155, 1114, 1156, 304, 1158, 1172, + /* 240 */ 1173, 1174, 1175, 1176, 1089, 1091, 1133, 1098, 1126, 1139, + /* 250 */ 1140, 1070, 1133, 1133, 1170, 1163, 1186, 1103, 1168, 1138, + /* 260 */ 1141, 1110, 1169, 1171, 1132, 1177, 1189, 1194, 1181, 1200, + /* 270 */ 1204, 1166, 1145, 1178, 1187, 1232, 1142, 1231, 1233, 1149, + /* 280 */ 1150, 1238, 1179, 1182, 1212, 1205, 1219, 1220, 1221, 1222, + /* 290 */ 1258, 1266, 1223, 1224, 1206, 1211, 1237, 1239, 1230, 1269, + /* 300 */ 1272, 1195, 1197, 1280, 1284, 1268, 1285, 1289, 1290, 1293, + /* 310 */ 1274, 1286, 1287, 1288, 1282, 1294, 1292, 1297, 1300, 1296, + /* 320 */ 1301, 1306, 1304, 1249, 1250, 1308, 1271, 1275, 1273, 1276, + /* 330 */ 1279, 1281, 1283, 1302, 1334, 1307, 1243, 1267, 1318, 1322, + /* 340 */ 1303, 1371, 1299, 1328, 1332, 1340, 1342, 1384, 1391, 1400, + /* 350 */ 1403, 1407, 1408, 1409, 1311, 1312, 1310, 1405, 1402, 1412, + /* 360 */ 1417, 1420, 1406, 1393, 1395, 1421, 1422, 1423, 1424, 1415, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 1389, 1389, 1389, 1261, 1046, 1151, 1261, 1261, 1261, 1261, - /* 10 */ 1046, 1181, 1181, 1312, 1077, 1046, 1046, 1046, 1046, 1046, - /* 20 */ 1046, 1260, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 30 */ 1046, 1046, 1046, 1187, 1046, 1046, 1046, 1046, 1262, 1263, - /* 40 */ 1046, 1046, 1046, 1311, 1313, 1197, 1196, 1195, 1194, 1294, - /* 50 */ 1168, 1192, 1185, 1189, 1256, 1257, 1255, 1259, 1262, 1263, - /* 60 */ 1046, 1188, 1226, 1240, 1225, 1046, 1046, 1046, 1046, 1046, - /* 70 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 80 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 90 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 100 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 110 */ 1046, 1234, 1239, 1246, 1238, 1235, 1228, 1227, 1229, 1230, - /* 120 */ 1046, 1067, 1116, 1046, 1046, 1046, 1329, 1328, 1046, 1046, - /* 130 */ 1077, 1231, 1232, 1243, 1242, 1241, 1319, 1345, 1344, 1046, - /* 140 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 150 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 160 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1077, - /* 170 */ 1073, 1073, 1046, 1324, 1151, 1142, 1046, 1046, 1046, 1046, - /* 180 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1316, 1314, 1046, - /* 190 */ 1276, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 200 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 210 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1147, 1046, - /* 220 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1339, - /* 230 */ 1046, 1289, 1130, 1147, 1147, 1147, 1147, 1149, 1131, 1129, - /* 240 */ 1141, 1077, 1053, 1191, 1170, 1170, 1378, 1191, 1191, 1378, - /* 250 */ 1091, 1359, 1088, 1181, 1181, 1181, 1170, 1258, 1148, 1141, - /* 260 */ 1046, 1381, 1156, 1156, 1380, 1380, 1156, 1200, 1206, 1119, - /* 270 */ 1191, 1125, 1125, 1125, 1125, 1156, 1064, 1191, 1191, 1200, - /* 280 */ 1206, 1119, 1119, 1191, 1156, 1064, 1293, 1375, 1156, 1064, - /* 290 */ 1269, 1156, 1064, 1156, 1064, 1269, 1117, 1117, 1117, 1106, - /* 300 */ 1269, 1117, 1091, 1117, 1106, 1117, 1117, 1269, 1273, 1273, - /* 310 */ 1269, 1174, 1169, 1174, 1169, 1174, 1169, 1174, 1169, 1156, - /* 320 */ 1264, 1156, 1046, 1186, 1175, 1184, 1182, 1191, 1070, 1109, - /* 330 */ 1342, 1342, 1338, 1338, 1338, 1386, 1386, 1324, 1354, 1077, - /* 340 */ 1077, 1077, 1077, 1354, 1093, 1093, 1077, 1077, 1077, 1077, - /* 350 */ 1354, 1046, 1046, 1046, 1046, 1046, 1046, 1349, 1046, 1278, - /* 360 */ 1160, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 370 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 380 */ 1046, 1046, 1211, 1046, 1049, 1321, 1046, 1046, 1320, 1046, - /* 390 */ 1046, 1046, 1046, 1046, 1046, 1161, 1046, 1046, 1046, 1046, - /* 400 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 410 */ 1046, 1046, 1046, 1046, 1377, 1046, 1046, 1046, 1046, 1046, - /* 420 */ 1046, 1292, 1291, 1046, 1046, 1158, 1046, 1046, 1046, 1046, - /* 430 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 440 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 450 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 460 */ 1183, 1046, 1176, 1046, 1046, 1046, 1046, 1368, 1046, 1046, - /* 470 */ 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - /* 480 */ 1046, 1363, 1133, 1213, 1046, 1212, 1216, 1046, 1058, 1046, + /* 0 */ 1492, 1492, 1492, 1340, 1123, 1229, 1123, 1123, 1123, 1340, + /* 10 */ 1340, 1340, 1123, 1259, 1259, 1391, 1154, 1123, 1123, 1123, + /* 20 */ 1123, 1123, 1123, 1123, 1339, 1123, 1123, 1123, 1123, 1123, + /* 30 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1265, 1123, + /* 40 */ 1123, 1123, 1123, 1123, 1341, 1342, 1123, 1123, 1123, 1390, + /* 50 */ 1392, 1275, 1274, 1273, 1272, 1373, 1246, 1270, 1263, 1267, + /* 60 */ 1335, 1336, 1334, 1338, 1342, 1341, 1123, 1266, 1306, 1320, + /* 70 */ 1305, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 80 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 90 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 100 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 110 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1314, 1319, 1325, + /* 120 */ 1318, 1315, 1308, 1307, 1309, 1310, 1123, 1144, 1193, 1123, + /* 130 */ 1123, 1123, 1123, 1409, 1408, 1123, 1123, 1154, 1311, 1312, + /* 140 */ 1322, 1321, 1398, 1448, 1447, 1123, 1123, 1123, 1123, 1123, + /* 150 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 160 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 170 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1154, 1150, 1300, + /* 180 */ 1299, 1418, 1150, 1253, 1123, 1404, 1229, 1220, 1123, 1123, + /* 190 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 200 */ 1123, 1395, 1393, 1123, 1355, 1123, 1123, 1123, 1123, 1123, + /* 210 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 220 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 230 */ 1123, 1123, 1225, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 240 */ 1123, 1123, 1123, 1442, 1123, 1368, 1207, 1225, 1225, 1225, + /* 250 */ 1225, 1227, 1208, 1206, 1219, 1154, 1130, 1484, 1269, 1248, + /* 260 */ 1248, 1481, 1269, 1269, 1481, 1168, 1462, 1165, 1259, 1259, + /* 270 */ 1259, 1248, 1337, 1226, 1219, 1123, 1484, 1234, 1234, 1483, + /* 280 */ 1483, 1234, 1278, 1284, 1196, 1269, 1202, 1202, 1202, 1202, + /* 290 */ 1234, 1141, 1269, 1269, 1278, 1284, 1196, 1196, 1269, 1234, + /* 300 */ 1141, 1372, 1478, 1234, 1141, 1348, 1234, 1141, 1234, 1141, + /* 310 */ 1348, 1194, 1194, 1194, 1183, 1348, 1194, 1168, 1194, 1183, + /* 320 */ 1194, 1194, 1348, 1352, 1352, 1348, 1252, 1247, 1252, 1247, + /* 330 */ 1252, 1247, 1252, 1247, 1234, 1253, 1417, 1123, 1264, 1253, + /* 340 */ 1343, 1234, 1123, 1264, 1262, 1260, 1269, 1147, 1186, 1445, + /* 350 */ 1445, 1441, 1441, 1441, 1489, 1489, 1404, 1457, 1154, 1154, + /* 360 */ 1154, 1154, 1457, 1170, 1170, 1154, 1154, 1154, 1154, 1457, + /* 370 */ 1123, 1123, 1123, 1123, 1123, 1123, 1452, 1123, 1357, 1238, + /* 380 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 390 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 400 */ 1123, 1123, 1289, 1123, 1126, 1401, 1123, 1123, 1399, 1123, + /* 410 */ 1123, 1123, 1123, 1123, 1123, 1239, 1123, 1123, 1123, 1123, + /* 420 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 430 */ 1123, 1123, 1123, 1123, 1480, 1123, 1123, 1123, 1123, 1123, + /* 440 */ 1123, 1371, 1370, 1123, 1123, 1236, 1123, 1123, 1123, 1123, + /* 450 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 460 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 470 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 480 */ 1123, 1123, 1123, 1261, 1123, 1416, 1123, 1123, 1123, 1123, + /* 490 */ 1123, 1123, 1123, 1430, 1254, 1123, 1123, 1471, 1123, 1123, + /* 500 */ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + /* 510 */ 1123, 1123, 1466, 1210, 1291, 1123, 1290, 1294, 1123, 1135, + /* 520 */ 1123, }; /********** End of lemon-generated parsing tables *****************************/ @@ -142313,11 +146923,18 @@ static const YYCODETYPE yyFallback[] = { 59, /* REPLACE => ID */ 59, /* RESTRICT => ID */ 59, /* ROW => ID */ + 59, /* ROWS => ID */ 59, /* TRIGGER => ID */ 59, /* VACUUM => ID */ 59, /* VIEW => ID */ 59, /* VIRTUAL => ID */ 59, /* WITH => ID */ + 59, /* CURRENT => ID */ + 59, /* FOLLOWING => ID */ + 59, /* PARTITION => ID */ + 59, /* PRECEDING => ID */ + 59, /* RANGE => ID */ + 59, /* UNBOUNDED => ID */ 59, /* REINDEX => ID */ 59, /* RENAME => ID */ 59, /* CTIME_KW => ID */ @@ -142484,185 +147101,207 @@ static const char *const yyTokenName[] = { /* 73 */ "REPLACE", /* 74 */ "RESTRICT", /* 75 */ "ROW", - /* 76 */ "TRIGGER", - /* 77 */ "VACUUM", - /* 78 */ "VIEW", - /* 79 */ "VIRTUAL", - /* 80 */ "WITH", - /* 81 */ "REINDEX", - /* 82 */ "RENAME", - /* 83 */ "CTIME_KW", - /* 84 */ "ANY", - /* 85 */ "BITAND", - /* 86 */ "BITOR", - /* 87 */ "LSHIFT", - /* 88 */ "RSHIFT", - /* 89 */ "PLUS", - /* 90 */ "MINUS", - /* 91 */ "STAR", - /* 92 */ "SLASH", - /* 93 */ "REM", - /* 94 */ "CONCAT", - /* 95 */ "COLLATE", - /* 96 */ "BITNOT", - /* 97 */ "ON", - /* 98 */ "INDEXED", - /* 99 */ "STRING", - /* 100 */ "JOIN_KW", - /* 101 */ "CONSTRAINT", - /* 102 */ "DEFAULT", - /* 103 */ "NULL", - /* 104 */ "PRIMARY", - /* 105 */ "UNIQUE", - /* 106 */ "CHECK", - /* 107 */ "REFERENCES", - /* 108 */ "AUTOINCR", - /* 109 */ "INSERT", - /* 110 */ "DELETE", - /* 111 */ "UPDATE", - /* 112 */ "SET", - /* 113 */ "DEFERRABLE", - /* 114 */ "FOREIGN", - /* 115 */ "DROP", - /* 116 */ "UNION", - /* 117 */ "ALL", - /* 118 */ "EXCEPT", - /* 119 */ "INTERSECT", - /* 120 */ "SELECT", - /* 121 */ "VALUES", - /* 122 */ "DISTINCT", - /* 123 */ "DOT", - /* 124 */ "FROM", - /* 125 */ "JOIN", - /* 126 */ "USING", - /* 127 */ "ORDER", - /* 128 */ "GROUP", - /* 129 */ "HAVING", - /* 130 */ "LIMIT", - /* 131 */ "WHERE", - /* 132 */ "INTO", - /* 133 */ "NOTHING", - /* 134 */ "FLOAT", - /* 135 */ "BLOB", - /* 136 */ "INTEGER", - /* 137 */ "VARIABLE", - /* 138 */ "CASE", - /* 139 */ "WHEN", - /* 140 */ "THEN", - /* 141 */ "ELSE", - /* 142 */ "INDEX", - /* 143 */ "ALTER", - /* 144 */ "ADD", - /* 145 */ "input", - /* 146 */ "cmdlist", - /* 147 */ "ecmd", - /* 148 */ "cmdx", - /* 149 */ "explain", - /* 150 */ "cmd", - /* 151 */ "transtype", - /* 152 */ "trans_opt", - /* 153 */ "nm", - /* 154 */ "savepoint_opt", - /* 155 */ "create_table", - /* 156 */ "create_table_args", - /* 157 */ "createkw", - /* 158 */ "temp", - /* 159 */ "ifnotexists", - /* 160 */ "dbnm", - /* 161 */ "columnlist", - /* 162 */ "conslist_opt", - /* 163 */ "table_options", - /* 164 */ "select", - /* 165 */ "columnname", - /* 166 */ "carglist", - /* 167 */ "typetoken", - /* 168 */ "typename", - /* 169 */ "signed", - /* 170 */ "plus_num", - /* 171 */ "minus_num", - /* 172 */ "scanpt", - /* 173 */ "ccons", - /* 174 */ "term", - /* 175 */ "expr", - /* 176 */ "onconf", - /* 177 */ "sortorder", - /* 178 */ "autoinc", - /* 179 */ "eidlist_opt", - /* 180 */ "refargs", - /* 181 */ "defer_subclause", - /* 182 */ "refarg", - /* 183 */ "refact", - /* 184 */ "init_deferred_pred_opt", - /* 185 */ "conslist", - /* 186 */ "tconscomma", - /* 187 */ "tcons", - /* 188 */ "sortlist", - /* 189 */ "eidlist", - /* 190 */ "defer_subclause_opt", - /* 191 */ "orconf", - /* 192 */ "resolvetype", - /* 193 */ "raisetype", - /* 194 */ "ifexists", - /* 195 */ "fullname", - /* 196 */ "selectnowith", - /* 197 */ "oneselect", - /* 198 */ "wqlist", - /* 199 */ "multiselect_op", - /* 200 */ "distinct", - /* 201 */ "selcollist", - /* 202 */ "from", - /* 203 */ "where_opt", - /* 204 */ "groupby_opt", - /* 205 */ "having_opt", - /* 206 */ "orderby_opt", - /* 207 */ "limit_opt", - /* 208 */ "values", - /* 209 */ "nexprlist", - /* 210 */ "exprlist", - /* 211 */ "sclp", - /* 212 */ "as", - /* 213 */ "seltablist", - /* 214 */ "stl_prefix", - /* 215 */ "joinop", - /* 216 */ "indexed_opt", - /* 217 */ "on_opt", - /* 218 */ "using_opt", - /* 219 */ "xfullname", - /* 220 */ "idlist", - /* 221 */ "with", - /* 222 */ "setlist", - /* 223 */ "insert_cmd", - /* 224 */ "idlist_opt", - /* 225 */ "upsert", - /* 226 */ "likeop", - /* 227 */ "between_op", - /* 228 */ "in_op", - /* 229 */ "paren_exprlist", - /* 230 */ "case_operand", - /* 231 */ "case_exprlist", - /* 232 */ "case_else", - /* 233 */ "uniqueflag", - /* 234 */ "collate", - /* 235 */ "nmnum", - /* 236 */ "trigger_decl", - /* 237 */ "trigger_cmd_list", - /* 238 */ "trigger_time", - /* 239 */ "trigger_event", - /* 240 */ "foreach_clause", - /* 241 */ "when_clause", - /* 242 */ "trigger_cmd", - /* 243 */ "trnm", - /* 244 */ "tridxby", - /* 245 */ "database_kw_opt", - /* 246 */ "key_opt", - /* 247 */ "add_column_fullname", - /* 248 */ "kwcolumn_opt", - /* 249 */ "create_vtab", - /* 250 */ "vtabarglist", - /* 251 */ "vtabarg", - /* 252 */ "vtabargtoken", - /* 253 */ "lp", - /* 254 */ "anylist", + /* 76 */ "ROWS", + /* 77 */ "TRIGGER", + /* 78 */ "VACUUM", + /* 79 */ "VIEW", + /* 80 */ "VIRTUAL", + /* 81 */ "WITH", + /* 82 */ "CURRENT", + /* 83 */ "FOLLOWING", + /* 84 */ "PARTITION", + /* 85 */ "PRECEDING", + /* 86 */ "RANGE", + /* 87 */ "UNBOUNDED", + /* 88 */ "REINDEX", + /* 89 */ "RENAME", + /* 90 */ "CTIME_KW", + /* 91 */ "ANY", + /* 92 */ "BITAND", + /* 93 */ "BITOR", + /* 94 */ "LSHIFT", + /* 95 */ "RSHIFT", + /* 96 */ "PLUS", + /* 97 */ "MINUS", + /* 98 */ "STAR", + /* 99 */ "SLASH", + /* 100 */ "REM", + /* 101 */ "CONCAT", + /* 102 */ "COLLATE", + /* 103 */ "BITNOT", + /* 104 */ "ON", + /* 105 */ "INDEXED", + /* 106 */ "STRING", + /* 107 */ "JOIN_KW", + /* 108 */ "CONSTRAINT", + /* 109 */ "DEFAULT", + /* 110 */ "NULL", + /* 111 */ "PRIMARY", + /* 112 */ "UNIQUE", + /* 113 */ "CHECK", + /* 114 */ "REFERENCES", + /* 115 */ "AUTOINCR", + /* 116 */ "INSERT", + /* 117 */ "DELETE", + /* 118 */ "UPDATE", + /* 119 */ "SET", + /* 120 */ "DEFERRABLE", + /* 121 */ "FOREIGN", + /* 122 */ "DROP", + /* 123 */ "UNION", + /* 124 */ "ALL", + /* 125 */ "EXCEPT", + /* 126 */ "INTERSECT", + /* 127 */ "SELECT", + /* 128 */ "VALUES", + /* 129 */ "DISTINCT", + /* 130 */ "DOT", + /* 131 */ "FROM", + /* 132 */ "JOIN", + /* 133 */ "USING", + /* 134 */ "ORDER", + /* 135 */ "GROUP", + /* 136 */ "HAVING", + /* 137 */ "LIMIT", + /* 138 */ "WHERE", + /* 139 */ "INTO", + /* 140 */ "NOTHING", + /* 141 */ "FLOAT", + /* 142 */ "BLOB", + /* 143 */ "INTEGER", + /* 144 */ "VARIABLE", + /* 145 */ "CASE", + /* 146 */ "WHEN", + /* 147 */ "THEN", + /* 148 */ "ELSE", + /* 149 */ "INDEX", + /* 150 */ "ALTER", + /* 151 */ "ADD", + /* 152 */ "WINDOW", + /* 153 */ "OVER", + /* 154 */ "FILTER", + /* 155 */ "input", + /* 156 */ "cmdlist", + /* 157 */ "ecmd", + /* 158 */ "cmdx", + /* 159 */ "explain", + /* 160 */ "cmd", + /* 161 */ "transtype", + /* 162 */ "trans_opt", + /* 163 */ "nm", + /* 164 */ "savepoint_opt", + /* 165 */ "create_table", + /* 166 */ "create_table_args", + /* 167 */ "createkw", + /* 168 */ "temp", + /* 169 */ "ifnotexists", + /* 170 */ "dbnm", + /* 171 */ "columnlist", + /* 172 */ "conslist_opt", + /* 173 */ "table_options", + /* 174 */ "select", + /* 175 */ "columnname", + /* 176 */ "carglist", + /* 177 */ "typetoken", + /* 178 */ "typename", + /* 179 */ "signed", + /* 180 */ "plus_num", + /* 181 */ "minus_num", + /* 182 */ "scanpt", + /* 183 */ "ccons", + /* 184 */ "term", + /* 185 */ "expr", + /* 186 */ "onconf", + /* 187 */ "sortorder", + /* 188 */ "autoinc", + /* 189 */ "eidlist_opt", + /* 190 */ "refargs", + /* 191 */ "defer_subclause", + /* 192 */ "refarg", + /* 193 */ "refact", + /* 194 */ "init_deferred_pred_opt", + /* 195 */ "conslist", + /* 196 */ "tconscomma", + /* 197 */ "tcons", + /* 198 */ "sortlist", + /* 199 */ "eidlist", + /* 200 */ "defer_subclause_opt", + /* 201 */ "orconf", + /* 202 */ "resolvetype", + /* 203 */ "raisetype", + /* 204 */ "ifexists", + /* 205 */ "fullname", + /* 206 */ "selectnowith", + /* 207 */ "oneselect", + /* 208 */ "wqlist", + /* 209 */ "multiselect_op", + /* 210 */ "distinct", + /* 211 */ "selcollist", + /* 212 */ "from", + /* 213 */ "where_opt", + /* 214 */ "groupby_opt", + /* 215 */ "having_opt", + /* 216 */ "orderby_opt", + /* 217 */ "limit_opt", + /* 218 */ "window_clause", + /* 219 */ "values", + /* 220 */ "nexprlist", + /* 221 */ "sclp", + /* 222 */ "as", + /* 223 */ "seltablist", + /* 224 */ "stl_prefix", + /* 225 */ "joinop", + /* 226 */ "indexed_opt", + /* 227 */ "on_opt", + /* 228 */ "using_opt", + /* 229 */ "exprlist", + /* 230 */ "xfullname", + /* 231 */ "idlist", + /* 232 */ "with", + /* 233 */ "setlist", + /* 234 */ "insert_cmd", + /* 235 */ "idlist_opt", + /* 236 */ "upsert", + /* 237 */ "over_clause", + /* 238 */ "likeop", + /* 239 */ "between_op", + /* 240 */ "in_op", + /* 241 */ "paren_exprlist", + /* 242 */ "case_operand", + /* 243 */ "case_exprlist", + /* 244 */ "case_else", + /* 245 */ "uniqueflag", + /* 246 */ "collate", + /* 247 */ "nmnum", + /* 248 */ "trigger_decl", + /* 249 */ "trigger_cmd_list", + /* 250 */ "trigger_time", + /* 251 */ "trigger_event", + /* 252 */ "foreach_clause", + /* 253 */ "when_clause", + /* 254 */ "trigger_cmd", + /* 255 */ "trnm", + /* 256 */ "tridxby", + /* 257 */ "database_kw_opt", + /* 258 */ "key_opt", + /* 259 */ "add_column_fullname", + /* 260 */ "kwcolumn_opt", + /* 261 */ "create_vtab", + /* 262 */ "vtabarglist", + /* 263 */ "vtabarg", + /* 264 */ "vtabargtoken", + /* 265 */ "lp", + /* 266 */ "anylist", + /* 267 */ "windowdefn_list", + /* 268 */ "windowdefn", + /* 269 */ "window", + /* 270 */ "frame_opt", + /* 271 */ "part_opt", + /* 272 */ "filter_opt", + /* 273 */ "range_or_rows", + /* 274 */ "frame_bound", + /* 275 */ "frame_bound_s", + /* 276 */ "frame_bound_e", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ @@ -142758,259 +147397,285 @@ static const char *const yyRuleName[] = { /* 85 */ "multiselect_op ::= UNION ALL", /* 86 */ "multiselect_op ::= EXCEPT|INTERSECT", /* 87 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt", - /* 88 */ "values ::= VALUES LP nexprlist RP", - /* 89 */ "values ::= values COMMA LP exprlist RP", - /* 90 */ "distinct ::= DISTINCT", - /* 91 */ "distinct ::= ALL", - /* 92 */ "distinct ::=", - /* 93 */ "sclp ::=", - /* 94 */ "selcollist ::= sclp scanpt expr scanpt as", - /* 95 */ "selcollist ::= sclp scanpt STAR", - /* 96 */ "selcollist ::= sclp scanpt nm DOT STAR", - /* 97 */ "as ::= AS nm", - /* 98 */ "as ::=", - /* 99 */ "from ::=", - /* 100 */ "from ::= FROM seltablist", - /* 101 */ "stl_prefix ::= seltablist joinop", - /* 102 */ "stl_prefix ::=", - /* 103 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt", - /* 104 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt", - /* 105 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt", - /* 106 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt", - /* 107 */ "dbnm ::=", - /* 108 */ "dbnm ::= DOT nm", - /* 109 */ "fullname ::= nm", - /* 110 */ "fullname ::= nm DOT nm", - /* 111 */ "xfullname ::= nm", - /* 112 */ "xfullname ::= nm DOT nm", - /* 113 */ "xfullname ::= nm DOT nm AS nm", - /* 114 */ "xfullname ::= nm AS nm", - /* 115 */ "joinop ::= COMMA|JOIN", - /* 116 */ "joinop ::= JOIN_KW JOIN", - /* 117 */ "joinop ::= JOIN_KW nm JOIN", - /* 118 */ "joinop ::= JOIN_KW nm nm JOIN", - /* 119 */ "on_opt ::= ON expr", - /* 120 */ "on_opt ::=", - /* 121 */ "indexed_opt ::=", - /* 122 */ "indexed_opt ::= INDEXED BY nm", - /* 123 */ "indexed_opt ::= NOT INDEXED", - /* 124 */ "using_opt ::= USING LP idlist RP", - /* 125 */ "using_opt ::=", - /* 126 */ "orderby_opt ::=", - /* 127 */ "orderby_opt ::= ORDER BY sortlist", - /* 128 */ "sortlist ::= sortlist COMMA expr sortorder", - /* 129 */ "sortlist ::= expr sortorder", - /* 130 */ "sortorder ::= ASC", - /* 131 */ "sortorder ::= DESC", - /* 132 */ "sortorder ::=", - /* 133 */ "groupby_opt ::=", - /* 134 */ "groupby_opt ::= GROUP BY nexprlist", - /* 135 */ "having_opt ::=", - /* 136 */ "having_opt ::= HAVING expr", - /* 137 */ "limit_opt ::=", - /* 138 */ "limit_opt ::= LIMIT expr", - /* 139 */ "limit_opt ::= LIMIT expr OFFSET expr", - /* 140 */ "limit_opt ::= LIMIT expr COMMA expr", - /* 141 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt", - /* 142 */ "where_opt ::=", - /* 143 */ "where_opt ::= WHERE expr", - /* 144 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt", - /* 145 */ "setlist ::= setlist COMMA nm EQ expr", - /* 146 */ "setlist ::= setlist COMMA LP idlist RP EQ expr", - /* 147 */ "setlist ::= nm EQ expr", - /* 148 */ "setlist ::= LP idlist RP EQ expr", - /* 149 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert", - /* 150 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES", - /* 151 */ "upsert ::=", - /* 152 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt", - /* 153 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING", - /* 154 */ "upsert ::= ON CONFLICT DO NOTHING", - /* 155 */ "insert_cmd ::= INSERT orconf", - /* 156 */ "insert_cmd ::= REPLACE", - /* 157 */ "idlist_opt ::=", - /* 158 */ "idlist_opt ::= LP idlist RP", - /* 159 */ "idlist ::= idlist COMMA nm", - /* 160 */ "idlist ::= nm", - /* 161 */ "expr ::= LP expr RP", - /* 162 */ "expr ::= ID|INDEXED", - /* 163 */ "expr ::= JOIN_KW", - /* 164 */ "expr ::= nm DOT nm", - /* 165 */ "expr ::= nm DOT nm DOT nm", - /* 166 */ "term ::= NULL|FLOAT|BLOB", - /* 167 */ "term ::= STRING", - /* 168 */ "term ::= INTEGER", - /* 169 */ "expr ::= VARIABLE", - /* 170 */ "expr ::= expr COLLATE ID|STRING", - /* 171 */ "expr ::= CAST LP expr AS typetoken RP", - /* 172 */ "expr ::= ID|INDEXED LP distinct exprlist RP", - /* 173 */ "expr ::= ID|INDEXED LP STAR RP", - /* 174 */ "term ::= CTIME_KW", - /* 175 */ "expr ::= LP nexprlist COMMA expr RP", - /* 176 */ "expr ::= expr AND expr", - /* 177 */ "expr ::= expr OR expr", - /* 178 */ "expr ::= expr LT|GT|GE|LE expr", - /* 179 */ "expr ::= expr EQ|NE expr", - /* 180 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr", - /* 181 */ "expr ::= expr PLUS|MINUS expr", - /* 182 */ "expr ::= expr STAR|SLASH|REM expr", - /* 183 */ "expr ::= expr CONCAT expr", - /* 184 */ "likeop ::= NOT LIKE_KW|MATCH", - /* 185 */ "expr ::= expr likeop expr", - /* 186 */ "expr ::= expr likeop expr ESCAPE expr", - /* 187 */ "expr ::= expr ISNULL|NOTNULL", - /* 188 */ "expr ::= expr NOT NULL", - /* 189 */ "expr ::= expr IS expr", - /* 190 */ "expr ::= expr IS NOT expr", - /* 191 */ "expr ::= NOT expr", - /* 192 */ "expr ::= BITNOT expr", - /* 193 */ "expr ::= MINUS expr", - /* 194 */ "expr ::= PLUS expr", - /* 195 */ "between_op ::= BETWEEN", - /* 196 */ "between_op ::= NOT BETWEEN", - /* 197 */ "expr ::= expr between_op expr AND expr", - /* 198 */ "in_op ::= IN", - /* 199 */ "in_op ::= NOT IN", - /* 200 */ "expr ::= expr in_op LP exprlist RP", - /* 201 */ "expr ::= LP select RP", - /* 202 */ "expr ::= expr in_op LP select RP", - /* 203 */ "expr ::= expr in_op nm dbnm paren_exprlist", - /* 204 */ "expr ::= EXISTS LP select RP", - /* 205 */ "expr ::= CASE case_operand case_exprlist case_else END", - /* 206 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", - /* 207 */ "case_exprlist ::= WHEN expr THEN expr", - /* 208 */ "case_else ::= ELSE expr", - /* 209 */ "case_else ::=", - /* 210 */ "case_operand ::= expr", - /* 211 */ "case_operand ::=", - /* 212 */ "exprlist ::=", - /* 213 */ "nexprlist ::= nexprlist COMMA expr", - /* 214 */ "nexprlist ::= expr", - /* 215 */ "paren_exprlist ::=", - /* 216 */ "paren_exprlist ::= LP exprlist RP", - /* 217 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt", - /* 218 */ "uniqueflag ::= UNIQUE", - /* 219 */ "uniqueflag ::=", - /* 220 */ "eidlist_opt ::=", - /* 221 */ "eidlist_opt ::= LP eidlist RP", - /* 222 */ "eidlist ::= eidlist COMMA nm collate sortorder", - /* 223 */ "eidlist ::= nm collate sortorder", - /* 224 */ "collate ::=", - /* 225 */ "collate ::= COLLATE ID|STRING", - /* 226 */ "cmd ::= DROP INDEX ifexists fullname", - /* 227 */ "cmd ::= VACUUM", - /* 228 */ "cmd ::= VACUUM nm", - /* 229 */ "cmd ::= PRAGMA nm dbnm", - /* 230 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", - /* 231 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", - /* 232 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", - /* 233 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP", - /* 234 */ "plus_num ::= PLUS INTEGER|FLOAT", - /* 235 */ "minus_num ::= MINUS INTEGER|FLOAT", - /* 236 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END", - /* 237 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause", - /* 238 */ "trigger_time ::= BEFORE|AFTER", - /* 239 */ "trigger_time ::= INSTEAD OF", - /* 240 */ "trigger_time ::=", - /* 241 */ "trigger_event ::= DELETE|INSERT", - /* 242 */ "trigger_event ::= UPDATE", - /* 243 */ "trigger_event ::= UPDATE OF idlist", - /* 244 */ "when_clause ::=", - /* 245 */ "when_clause ::= WHEN expr", - /* 246 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", - /* 247 */ "trigger_cmd_list ::= trigger_cmd SEMI", - /* 248 */ "trnm ::= nm DOT nm", - /* 249 */ "tridxby ::= INDEXED BY nm", - /* 250 */ "tridxby ::= NOT INDEXED", - /* 251 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt", - /* 252 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt", - /* 253 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt", - /* 254 */ "trigger_cmd ::= scanpt select scanpt", - /* 255 */ "expr ::= RAISE LP IGNORE RP", - /* 256 */ "expr ::= RAISE LP raisetype COMMA nm RP", - /* 257 */ "raisetype ::= ROLLBACK", - /* 258 */ "raisetype ::= ABORT", - /* 259 */ "raisetype ::= FAIL", - /* 260 */ "cmd ::= DROP TRIGGER ifexists fullname", - /* 261 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", - /* 262 */ "cmd ::= DETACH database_kw_opt expr", - /* 263 */ "key_opt ::=", - /* 264 */ "key_opt ::= KEY expr", - /* 265 */ "cmd ::= REINDEX", - /* 266 */ "cmd ::= REINDEX nm dbnm", - /* 267 */ "cmd ::= ANALYZE", - /* 268 */ "cmd ::= ANALYZE nm dbnm", - /* 269 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", - /* 270 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist", - /* 271 */ "add_column_fullname ::= fullname", - /* 272 */ "cmd ::= create_vtab", - /* 273 */ "cmd ::= create_vtab LP vtabarglist RP", - /* 274 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm", - /* 275 */ "vtabarg ::=", - /* 276 */ "vtabargtoken ::= ANY", - /* 277 */ "vtabargtoken ::= lp anylist RP", - /* 278 */ "lp ::= LP", - /* 279 */ "with ::= WITH wqlist", - /* 280 */ "with ::= WITH RECURSIVE wqlist", - /* 281 */ "wqlist ::= nm eidlist_opt AS LP select RP", - /* 282 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP", - /* 283 */ "input ::= cmdlist", - /* 284 */ "cmdlist ::= cmdlist ecmd", - /* 285 */ "cmdlist ::= ecmd", - /* 286 */ "ecmd ::= SEMI", - /* 287 */ "ecmd ::= cmdx SEMI", - /* 288 */ "ecmd ::= explain cmdx", - /* 289 */ "trans_opt ::=", - /* 290 */ "trans_opt ::= TRANSACTION", - /* 291 */ "trans_opt ::= TRANSACTION nm", - /* 292 */ "savepoint_opt ::= SAVEPOINT", - /* 293 */ "savepoint_opt ::=", - /* 294 */ "cmd ::= create_table create_table_args", - /* 295 */ "columnlist ::= columnlist COMMA columnname carglist", - /* 296 */ "columnlist ::= columnname carglist", - /* 297 */ "nm ::= ID|INDEXED", - /* 298 */ "nm ::= STRING", - /* 299 */ "nm ::= JOIN_KW", - /* 300 */ "typetoken ::= typename", - /* 301 */ "typename ::= ID|STRING", - /* 302 */ "signed ::= plus_num", - /* 303 */ "signed ::= minus_num", - /* 304 */ "carglist ::= carglist ccons", - /* 305 */ "carglist ::=", - /* 306 */ "ccons ::= NULL onconf", - /* 307 */ "conslist_opt ::= COMMA conslist", - /* 308 */ "conslist ::= conslist tconscomma tcons", - /* 309 */ "conslist ::= tcons", - /* 310 */ "tconscomma ::=", - /* 311 */ "defer_subclause_opt ::= defer_subclause", - /* 312 */ "resolvetype ::= raisetype", - /* 313 */ "selectnowith ::= oneselect", - /* 314 */ "oneselect ::= values", - /* 315 */ "sclp ::= selcollist COMMA", - /* 316 */ "as ::= ID|STRING", - /* 317 */ "expr ::= term", - /* 318 */ "likeop ::= LIKE_KW|MATCH", - /* 319 */ "exprlist ::= nexprlist", - /* 320 */ "nmnum ::= plus_num", - /* 321 */ "nmnum ::= nm", - /* 322 */ "nmnum ::= ON", - /* 323 */ "nmnum ::= DELETE", - /* 324 */ "nmnum ::= DEFAULT", - /* 325 */ "plus_num ::= INTEGER|FLOAT", - /* 326 */ "foreach_clause ::=", - /* 327 */ "foreach_clause ::= FOR EACH ROW", - /* 328 */ "trnm ::= nm", - /* 329 */ "tridxby ::=", - /* 330 */ "database_kw_opt ::= DATABASE", - /* 331 */ "database_kw_opt ::=", - /* 332 */ "kwcolumn_opt ::=", - /* 333 */ "kwcolumn_opt ::= COLUMNKW", - /* 334 */ "vtabarglist ::= vtabarg", - /* 335 */ "vtabarglist ::= vtabarglist COMMA vtabarg", - /* 336 */ "vtabarg ::= vtabarg vtabargtoken", - /* 337 */ "anylist ::=", - /* 338 */ "anylist ::= anylist LP anylist RP", - /* 339 */ "anylist ::= anylist ANY", - /* 340 */ "with ::=", + /* 88 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt", + /* 89 */ "values ::= VALUES LP nexprlist RP", + /* 90 */ "values ::= values COMMA LP nexprlist RP", + /* 91 */ "distinct ::= DISTINCT", + /* 92 */ "distinct ::= ALL", + /* 93 */ "distinct ::=", + /* 94 */ "sclp ::=", + /* 95 */ "selcollist ::= sclp scanpt expr scanpt as", + /* 96 */ "selcollist ::= sclp scanpt STAR", + /* 97 */ "selcollist ::= sclp scanpt nm DOT STAR", + /* 98 */ "as ::= AS nm", + /* 99 */ "as ::=", + /* 100 */ "from ::=", + /* 101 */ "from ::= FROM seltablist", + /* 102 */ "stl_prefix ::= seltablist joinop", + /* 103 */ "stl_prefix ::=", + /* 104 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt", + /* 105 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt", + /* 106 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt", + /* 107 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt", + /* 108 */ "dbnm ::=", + /* 109 */ "dbnm ::= DOT nm", + /* 110 */ "fullname ::= nm", + /* 111 */ "fullname ::= nm DOT nm", + /* 112 */ "xfullname ::= nm", + /* 113 */ "xfullname ::= nm DOT nm", + /* 114 */ "xfullname ::= nm DOT nm AS nm", + /* 115 */ "xfullname ::= nm AS nm", + /* 116 */ "joinop ::= COMMA|JOIN", + /* 117 */ "joinop ::= JOIN_KW JOIN", + /* 118 */ "joinop ::= JOIN_KW nm JOIN", + /* 119 */ "joinop ::= JOIN_KW nm nm JOIN", + /* 120 */ "on_opt ::= ON expr", + /* 121 */ "on_opt ::=", + /* 122 */ "indexed_opt ::=", + /* 123 */ "indexed_opt ::= INDEXED BY nm", + /* 124 */ "indexed_opt ::= NOT INDEXED", + /* 125 */ "using_opt ::= USING LP idlist RP", + /* 126 */ "using_opt ::=", + /* 127 */ "orderby_opt ::=", + /* 128 */ "orderby_opt ::= ORDER BY sortlist", + /* 129 */ "sortlist ::= sortlist COMMA expr sortorder", + /* 130 */ "sortlist ::= expr sortorder", + /* 131 */ "sortorder ::= ASC", + /* 132 */ "sortorder ::= DESC", + /* 133 */ "sortorder ::=", + /* 134 */ "groupby_opt ::=", + /* 135 */ "groupby_opt ::= GROUP BY nexprlist", + /* 136 */ "having_opt ::=", + /* 137 */ "having_opt ::= HAVING expr", + /* 138 */ "limit_opt ::=", + /* 139 */ "limit_opt ::= LIMIT expr", + /* 140 */ "limit_opt ::= LIMIT expr OFFSET expr", + /* 141 */ "limit_opt ::= LIMIT expr COMMA expr", + /* 142 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt", + /* 143 */ "where_opt ::=", + /* 144 */ "where_opt ::= WHERE expr", + /* 145 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt", + /* 146 */ "setlist ::= setlist COMMA nm EQ expr", + /* 147 */ "setlist ::= setlist COMMA LP idlist RP EQ expr", + /* 148 */ "setlist ::= nm EQ expr", + /* 149 */ "setlist ::= LP idlist RP EQ expr", + /* 150 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert", + /* 151 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES", + /* 152 */ "upsert ::=", + /* 153 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt", + /* 154 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING", + /* 155 */ "upsert ::= ON CONFLICT DO NOTHING", + /* 156 */ "insert_cmd ::= INSERT orconf", + /* 157 */ "insert_cmd ::= REPLACE", + /* 158 */ "idlist_opt ::=", + /* 159 */ "idlist_opt ::= LP idlist RP", + /* 160 */ "idlist ::= idlist COMMA nm", + /* 161 */ "idlist ::= nm", + /* 162 */ "expr ::= LP expr RP", + /* 163 */ "expr ::= ID|INDEXED", + /* 164 */ "expr ::= JOIN_KW", + /* 165 */ "expr ::= nm DOT nm", + /* 166 */ "expr ::= nm DOT nm DOT nm", + /* 167 */ "term ::= NULL|FLOAT|BLOB", + /* 168 */ "term ::= STRING", + /* 169 */ "term ::= INTEGER", + /* 170 */ "expr ::= VARIABLE", + /* 171 */ "expr ::= expr COLLATE ID|STRING", + /* 172 */ "expr ::= CAST LP expr AS typetoken RP", + /* 173 */ "expr ::= ID|INDEXED LP distinct exprlist RP", + /* 174 */ "expr ::= ID|INDEXED LP STAR RP", + /* 175 */ "expr ::= ID|INDEXED LP distinct exprlist RP over_clause", + /* 176 */ "expr ::= ID|INDEXED LP STAR RP over_clause", + /* 177 */ "term ::= CTIME_KW", + /* 178 */ "expr ::= LP nexprlist COMMA expr RP", + /* 179 */ "expr ::= expr AND expr", + /* 180 */ "expr ::= expr OR expr", + /* 181 */ "expr ::= expr LT|GT|GE|LE expr", + /* 182 */ "expr ::= expr EQ|NE expr", + /* 183 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr", + /* 184 */ "expr ::= expr PLUS|MINUS expr", + /* 185 */ "expr ::= expr STAR|SLASH|REM expr", + /* 186 */ "expr ::= expr CONCAT expr", + /* 187 */ "likeop ::= NOT LIKE_KW|MATCH", + /* 188 */ "expr ::= expr likeop expr", + /* 189 */ "expr ::= expr likeop expr ESCAPE expr", + /* 190 */ "expr ::= expr ISNULL|NOTNULL", + /* 191 */ "expr ::= expr NOT NULL", + /* 192 */ "expr ::= expr IS expr", + /* 193 */ "expr ::= expr IS NOT expr", + /* 194 */ "expr ::= NOT expr", + /* 195 */ "expr ::= BITNOT expr", + /* 196 */ "expr ::= PLUS|MINUS expr", + /* 197 */ "between_op ::= BETWEEN", + /* 198 */ "between_op ::= NOT BETWEEN", + /* 199 */ "expr ::= expr between_op expr AND expr", + /* 200 */ "in_op ::= IN", + /* 201 */ "in_op ::= NOT IN", + /* 202 */ "expr ::= expr in_op LP exprlist RP", + /* 203 */ "expr ::= LP select RP", + /* 204 */ "expr ::= expr in_op LP select RP", + /* 205 */ "expr ::= expr in_op nm dbnm paren_exprlist", + /* 206 */ "expr ::= EXISTS LP select RP", + /* 207 */ "expr ::= CASE case_operand case_exprlist case_else END", + /* 208 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", + /* 209 */ "case_exprlist ::= WHEN expr THEN expr", + /* 210 */ "case_else ::= ELSE expr", + /* 211 */ "case_else ::=", + /* 212 */ "case_operand ::= expr", + /* 213 */ "case_operand ::=", + /* 214 */ "exprlist ::=", + /* 215 */ "nexprlist ::= nexprlist COMMA expr", + /* 216 */ "nexprlist ::= expr", + /* 217 */ "paren_exprlist ::=", + /* 218 */ "paren_exprlist ::= LP exprlist RP", + /* 219 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt", + /* 220 */ "uniqueflag ::= UNIQUE", + /* 221 */ "uniqueflag ::=", + /* 222 */ "eidlist_opt ::=", + /* 223 */ "eidlist_opt ::= LP eidlist RP", + /* 224 */ "eidlist ::= eidlist COMMA nm collate sortorder", + /* 225 */ "eidlist ::= nm collate sortorder", + /* 226 */ "collate ::=", + /* 227 */ "collate ::= COLLATE ID|STRING", + /* 228 */ "cmd ::= DROP INDEX ifexists fullname", + /* 229 */ "cmd ::= VACUUM", + /* 230 */ "cmd ::= VACUUM nm", + /* 231 */ "cmd ::= PRAGMA nm dbnm", + /* 232 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", + /* 233 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", + /* 234 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", + /* 235 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP", + /* 236 */ "plus_num ::= PLUS INTEGER|FLOAT", + /* 237 */ "minus_num ::= MINUS INTEGER|FLOAT", + /* 238 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END", + /* 239 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause", + /* 240 */ "trigger_time ::= BEFORE|AFTER", + /* 241 */ "trigger_time ::= INSTEAD OF", + /* 242 */ "trigger_time ::=", + /* 243 */ "trigger_event ::= DELETE|INSERT", + /* 244 */ "trigger_event ::= UPDATE", + /* 245 */ "trigger_event ::= UPDATE OF idlist", + /* 246 */ "when_clause ::=", + /* 247 */ "when_clause ::= WHEN expr", + /* 248 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", + /* 249 */ "trigger_cmd_list ::= trigger_cmd SEMI", + /* 250 */ "trnm ::= nm DOT nm", + /* 251 */ "tridxby ::= INDEXED BY nm", + /* 252 */ "tridxby ::= NOT INDEXED", + /* 253 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt", + /* 254 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt", + /* 255 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt", + /* 256 */ "trigger_cmd ::= scanpt select scanpt", + /* 257 */ "expr ::= RAISE LP IGNORE RP", + /* 258 */ "expr ::= RAISE LP raisetype COMMA nm RP", + /* 259 */ "raisetype ::= ROLLBACK", + /* 260 */ "raisetype ::= ABORT", + /* 261 */ "raisetype ::= FAIL", + /* 262 */ "cmd ::= DROP TRIGGER ifexists fullname", + /* 263 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", + /* 264 */ "cmd ::= DETACH database_kw_opt expr", + /* 265 */ "key_opt ::=", + /* 266 */ "key_opt ::= KEY expr", + /* 267 */ "cmd ::= REINDEX", + /* 268 */ "cmd ::= REINDEX nm dbnm", + /* 269 */ "cmd ::= ANALYZE", + /* 270 */ "cmd ::= ANALYZE nm dbnm", + /* 271 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", + /* 272 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist", + /* 273 */ "add_column_fullname ::= fullname", + /* 274 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm", + /* 275 */ "cmd ::= create_vtab", + /* 276 */ "cmd ::= create_vtab LP vtabarglist RP", + /* 277 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm", + /* 278 */ "vtabarg ::=", + /* 279 */ "vtabargtoken ::= ANY", + /* 280 */ "vtabargtoken ::= lp anylist RP", + /* 281 */ "lp ::= LP", + /* 282 */ "with ::= WITH wqlist", + /* 283 */ "with ::= WITH RECURSIVE wqlist", + /* 284 */ "wqlist ::= nm eidlist_opt AS LP select RP", + /* 285 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP", + /* 286 */ "windowdefn_list ::= windowdefn", + /* 287 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn", + /* 288 */ "windowdefn ::= nm AS window", + /* 289 */ "window ::= LP part_opt orderby_opt frame_opt RP", + /* 290 */ "part_opt ::= PARTITION BY nexprlist", + /* 291 */ "part_opt ::=", + /* 292 */ "frame_opt ::=", + /* 293 */ "frame_opt ::= range_or_rows frame_bound_s", + /* 294 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e", + /* 295 */ "range_or_rows ::= RANGE", + /* 296 */ "range_or_rows ::= ROWS", + /* 297 */ "frame_bound_s ::= frame_bound", + /* 298 */ "frame_bound_s ::= UNBOUNDED PRECEDING", + /* 299 */ "frame_bound_e ::= frame_bound", + /* 300 */ "frame_bound_e ::= UNBOUNDED FOLLOWING", + /* 301 */ "frame_bound ::= expr PRECEDING", + /* 302 */ "frame_bound ::= CURRENT ROW", + /* 303 */ "frame_bound ::= expr FOLLOWING", + /* 304 */ "window_clause ::= WINDOW windowdefn_list", + /* 305 */ "over_clause ::= filter_opt OVER window", + /* 306 */ "over_clause ::= filter_opt OVER nm", + /* 307 */ "filter_opt ::=", + /* 308 */ "filter_opt ::= FILTER LP WHERE expr RP", + /* 309 */ "input ::= cmdlist", + /* 310 */ "cmdlist ::= cmdlist ecmd", + /* 311 */ "cmdlist ::= ecmd", + /* 312 */ "ecmd ::= SEMI", + /* 313 */ "ecmd ::= cmdx SEMI", + /* 314 */ "ecmd ::= explain cmdx", + /* 315 */ "trans_opt ::=", + /* 316 */ "trans_opt ::= TRANSACTION", + /* 317 */ "trans_opt ::= TRANSACTION nm", + /* 318 */ "savepoint_opt ::= SAVEPOINT", + /* 319 */ "savepoint_opt ::=", + /* 320 */ "cmd ::= create_table create_table_args", + /* 321 */ "columnlist ::= columnlist COMMA columnname carglist", + /* 322 */ "columnlist ::= columnname carglist", + /* 323 */ "nm ::= ID|INDEXED", + /* 324 */ "nm ::= STRING", + /* 325 */ "nm ::= JOIN_KW", + /* 326 */ "typetoken ::= typename", + /* 327 */ "typename ::= ID|STRING", + /* 328 */ "signed ::= plus_num", + /* 329 */ "signed ::= minus_num", + /* 330 */ "carglist ::= carglist ccons", + /* 331 */ "carglist ::=", + /* 332 */ "ccons ::= NULL onconf", + /* 333 */ "conslist_opt ::= COMMA conslist", + /* 334 */ "conslist ::= conslist tconscomma tcons", + /* 335 */ "conslist ::= tcons", + /* 336 */ "tconscomma ::=", + /* 337 */ "defer_subclause_opt ::= defer_subclause", + /* 338 */ "resolvetype ::= raisetype", + /* 339 */ "selectnowith ::= oneselect", + /* 340 */ "oneselect ::= values", + /* 341 */ "sclp ::= selcollist COMMA", + /* 342 */ "as ::= ID|STRING", + /* 343 */ "expr ::= term", + /* 344 */ "likeop ::= LIKE_KW|MATCH", + /* 345 */ "exprlist ::= nexprlist", + /* 346 */ "nmnum ::= plus_num", + /* 347 */ "nmnum ::= nm", + /* 348 */ "nmnum ::= ON", + /* 349 */ "nmnum ::= DELETE", + /* 350 */ "nmnum ::= DEFAULT", + /* 351 */ "plus_num ::= INTEGER|FLOAT", + /* 352 */ "foreach_clause ::=", + /* 353 */ "foreach_clause ::= FOR EACH ROW", + /* 354 */ "trnm ::= nm", + /* 355 */ "tridxby ::=", + /* 356 */ "database_kw_opt ::= DATABASE", + /* 357 */ "database_kw_opt ::=", + /* 358 */ "kwcolumn_opt ::=", + /* 359 */ "kwcolumn_opt ::= COLUMNKW", + /* 360 */ "vtabarglist ::= vtabarg", + /* 361 */ "vtabarglist ::= vtabarglist COMMA vtabarg", + /* 362 */ "vtabarg ::= vtabarg vtabargtoken", + /* 363 */ "anylist ::=", + /* 364 */ "anylist ::= anylist LP anylist RP", + /* 365 */ "anylist ::= anylist ANY", + /* 366 */ "with ::=", }; #endif /* NDEBUG */ @@ -143136,73 +147801,96 @@ static void yy_destructor( ** inside the C code. */ /********* Begin destructor definitions ***************************************/ - case 164: /* select */ - case 196: /* selectnowith */ - case 197: /* oneselect */ - case 208: /* values */ + case 174: /* select */ + case 206: /* selectnowith */ + case 207: /* oneselect */ + case 219: /* values */ { -sqlite3SelectDelete(pParse->db, (yypminor->yy399)); +sqlite3SelectDelete(pParse->db, (yypminor->yy489)); } break; - case 174: /* term */ - case 175: /* expr */ - case 203: /* where_opt */ - case 205: /* having_opt */ - case 217: /* on_opt */ - case 230: /* case_operand */ - case 232: /* case_else */ - case 241: /* when_clause */ - case 246: /* key_opt */ + case 184: /* term */ + case 185: /* expr */ + case 213: /* where_opt */ + case 215: /* having_opt */ + case 227: /* on_opt */ + case 242: /* case_operand */ + case 244: /* case_else */ + case 253: /* when_clause */ + case 258: /* key_opt */ + case 272: /* filter_opt */ { -sqlite3ExprDelete(pParse->db, (yypminor->yy182)); +sqlite3ExprDelete(pParse->db, (yypminor->yy18)); } break; - case 179: /* eidlist_opt */ - case 188: /* sortlist */ - case 189: /* eidlist */ - case 201: /* selcollist */ - case 204: /* groupby_opt */ - case 206: /* orderby_opt */ - case 209: /* nexprlist */ - case 210: /* exprlist */ - case 211: /* sclp */ - case 222: /* setlist */ - case 229: /* paren_exprlist */ - case 231: /* case_exprlist */ + case 189: /* eidlist_opt */ + case 198: /* sortlist */ + case 199: /* eidlist */ + case 211: /* selcollist */ + case 214: /* groupby_opt */ + case 216: /* orderby_opt */ + case 220: /* nexprlist */ + case 221: /* sclp */ + case 229: /* exprlist */ + case 233: /* setlist */ + case 241: /* paren_exprlist */ + case 243: /* case_exprlist */ + case 271: /* part_opt */ { -sqlite3ExprListDelete(pParse->db, (yypminor->yy232)); +sqlite3ExprListDelete(pParse->db, (yypminor->yy420)); } break; - case 195: /* fullname */ - case 202: /* from */ - case 213: /* seltablist */ - case 214: /* stl_prefix */ - case 219: /* xfullname */ + case 205: /* fullname */ + case 212: /* from */ + case 223: /* seltablist */ + case 224: /* stl_prefix */ + case 230: /* xfullname */ { -sqlite3SrcListDelete(pParse->db, (yypminor->yy427)); +sqlite3SrcListDelete(pParse->db, (yypminor->yy135)); } break; - case 198: /* wqlist */ + case 208: /* wqlist */ { -sqlite3WithDelete(pParse->db, (yypminor->yy91)); +sqlite3WithDelete(pParse->db, (yypminor->yy449)); } break; - case 218: /* using_opt */ - case 220: /* idlist */ - case 224: /* idlist_opt */ + case 218: /* window_clause */ + case 267: /* windowdefn_list */ { -sqlite3IdListDelete(pParse->db, (yypminor->yy510)); +sqlite3WindowListDelete(pParse->db, (yypminor->yy327)); } break; - case 237: /* trigger_cmd_list */ - case 242: /* trigger_cmd */ + case 228: /* using_opt */ + case 231: /* idlist */ + case 235: /* idlist_opt */ { -sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy47)); +sqlite3IdListDelete(pParse->db, (yypminor->yy48)); } break; - case 239: /* trigger_event */ + case 237: /* over_clause */ + case 268: /* windowdefn */ + case 269: /* window */ + case 270: /* frame_opt */ { -sqlite3IdListDelete(pParse->db, (yypminor->yy300).b); +sqlite3WindowDelete(pParse->db, (yypminor->yy327)); +} + break; + case 249: /* trigger_cmd_list */ + case 254: /* trigger_cmd */ +{ +sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy207)); +} + break; + case 251: /* trigger_event */ +{ +sqlite3IdListDelete(pParse->db, (yypminor->yy34).b); +} + break; + case 274: /* frame_bound */ + case 275: /* frame_bound_s */ + case 276: /* frame_bound_e */ +{ +sqlite3ExprDelete(pParse->db, (yypminor->yy119).pExpr); } break; /********* End destructor definitions *****************************************/ @@ -143328,11 +148016,11 @@ static YYACTIONTYPE yy_find_shift_action( do{ i = yy_shift_ofst[stateno]; assert( i>=0 ); - assert( i+YYNTOKEN<=(int)sizeof(yy_lookahead)/sizeof(yy_lookahead[0]) ); + /* assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD ); */ assert( iLookAhead!=YYNOCODE ); assert( iLookAhead < YYNTOKEN ); i += iLookAhead; - if( yy_lookahead[i]!=iLookAhead ){ + if( i>=YY_NLOOKAHEAD || yy_lookahead[i]!=iLookAhead ){ #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ if( iLookAhead=YY_ACTTAB_COUNT j0 ){ #ifndef NDEBUG @@ -143382,7 +148071,7 @@ static YYACTIONTYPE yy_find_shift_action( ** Find the appropriate action for a parser given the non-terminal ** look-ahead token iLookAhead. */ -static int yy_find_reduce_action( +static YYACTIONTYPE yy_find_reduce_action( YYACTIONTYPE stateno, /* Current state number */ YYCODETYPE iLookAhead /* The look-ahead token */ ){ @@ -143500,347 +148189,373 @@ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ signed char nrhs; /* Negative of the number of RHS symbols in the rule */ } yyRuleInfo[] = { - { 149, -1 }, /* (0) explain ::= EXPLAIN */ - { 149, -3 }, /* (1) explain ::= EXPLAIN QUERY PLAN */ - { 148, -1 }, /* (2) cmdx ::= cmd */ - { 150, -3 }, /* (3) cmd ::= BEGIN transtype trans_opt */ - { 151, 0 }, /* (4) transtype ::= */ - { 151, -1 }, /* (5) transtype ::= DEFERRED */ - { 151, -1 }, /* (6) transtype ::= IMMEDIATE */ - { 151, -1 }, /* (7) transtype ::= EXCLUSIVE */ - { 150, -2 }, /* (8) cmd ::= COMMIT|END trans_opt */ - { 150, -2 }, /* (9) cmd ::= ROLLBACK trans_opt */ - { 150, -2 }, /* (10) cmd ::= SAVEPOINT nm */ - { 150, -3 }, /* (11) cmd ::= RELEASE savepoint_opt nm */ - { 150, -5 }, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */ - { 155, -6 }, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */ - { 157, -1 }, /* (14) createkw ::= CREATE */ - { 159, 0 }, /* (15) ifnotexists ::= */ - { 159, -3 }, /* (16) ifnotexists ::= IF NOT EXISTS */ - { 158, -1 }, /* (17) temp ::= TEMP */ - { 158, 0 }, /* (18) temp ::= */ - { 156, -5 }, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */ - { 156, -2 }, /* (20) create_table_args ::= AS select */ - { 163, 0 }, /* (21) table_options ::= */ - { 163, -2 }, /* (22) table_options ::= WITHOUT nm */ - { 165, -2 }, /* (23) columnname ::= nm typetoken */ - { 167, 0 }, /* (24) typetoken ::= */ - { 167, -4 }, /* (25) typetoken ::= typename LP signed RP */ - { 167, -6 }, /* (26) typetoken ::= typename LP signed COMMA signed RP */ - { 168, -2 }, /* (27) typename ::= typename ID|STRING */ - { 172, 0 }, /* (28) scanpt ::= */ - { 173, -2 }, /* (29) ccons ::= CONSTRAINT nm */ - { 173, -4 }, /* (30) ccons ::= DEFAULT scanpt term scanpt */ - { 173, -4 }, /* (31) ccons ::= DEFAULT LP expr RP */ - { 173, -4 }, /* (32) ccons ::= DEFAULT PLUS term scanpt */ - { 173, -4 }, /* (33) ccons ::= DEFAULT MINUS term scanpt */ - { 173, -3 }, /* (34) ccons ::= DEFAULT scanpt ID|INDEXED */ - { 173, -3 }, /* (35) ccons ::= NOT NULL onconf */ - { 173, -5 }, /* (36) ccons ::= PRIMARY KEY sortorder onconf autoinc */ - { 173, -2 }, /* (37) ccons ::= UNIQUE onconf */ - { 173, -4 }, /* (38) ccons ::= CHECK LP expr RP */ - { 173, -4 }, /* (39) ccons ::= REFERENCES nm eidlist_opt refargs */ - { 173, -1 }, /* (40) ccons ::= defer_subclause */ - { 173, -2 }, /* (41) ccons ::= COLLATE ID|STRING */ - { 178, 0 }, /* (42) autoinc ::= */ - { 178, -1 }, /* (43) autoinc ::= AUTOINCR */ - { 180, 0 }, /* (44) refargs ::= */ - { 180, -2 }, /* (45) refargs ::= refargs refarg */ - { 182, -2 }, /* (46) refarg ::= MATCH nm */ - { 182, -3 }, /* (47) refarg ::= ON INSERT refact */ - { 182, -3 }, /* (48) refarg ::= ON DELETE refact */ - { 182, -3 }, /* (49) refarg ::= ON UPDATE refact */ - { 183, -2 }, /* (50) refact ::= SET NULL */ - { 183, -2 }, /* (51) refact ::= SET DEFAULT */ - { 183, -1 }, /* (52) refact ::= CASCADE */ - { 183, -1 }, /* (53) refact ::= RESTRICT */ - { 183, -2 }, /* (54) refact ::= NO ACTION */ - { 181, -3 }, /* (55) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ - { 181, -2 }, /* (56) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ - { 184, 0 }, /* (57) init_deferred_pred_opt ::= */ - { 184, -2 }, /* (58) init_deferred_pred_opt ::= INITIALLY DEFERRED */ - { 184, -2 }, /* (59) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ - { 162, 0 }, /* (60) conslist_opt ::= */ - { 186, -1 }, /* (61) tconscomma ::= COMMA */ - { 187, -2 }, /* (62) tcons ::= CONSTRAINT nm */ - { 187, -7 }, /* (63) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */ - { 187, -5 }, /* (64) tcons ::= UNIQUE LP sortlist RP onconf */ - { 187, -5 }, /* (65) tcons ::= CHECK LP expr RP onconf */ - { 187, -10 }, /* (66) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */ - { 190, 0 }, /* (67) defer_subclause_opt ::= */ - { 176, 0 }, /* (68) onconf ::= */ - { 176, -3 }, /* (69) onconf ::= ON CONFLICT resolvetype */ - { 191, 0 }, /* (70) orconf ::= */ - { 191, -2 }, /* (71) orconf ::= OR resolvetype */ - { 192, -1 }, /* (72) resolvetype ::= IGNORE */ - { 192, -1 }, /* (73) resolvetype ::= REPLACE */ - { 150, -4 }, /* (74) cmd ::= DROP TABLE ifexists fullname */ - { 194, -2 }, /* (75) ifexists ::= IF EXISTS */ - { 194, 0 }, /* (76) ifexists ::= */ - { 150, -9 }, /* (77) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ - { 150, -4 }, /* (78) cmd ::= DROP VIEW ifexists fullname */ - { 150, -1 }, /* (79) cmd ::= select */ - { 164, -3 }, /* (80) select ::= WITH wqlist selectnowith */ - { 164, -4 }, /* (81) select ::= WITH RECURSIVE wqlist selectnowith */ - { 164, -1 }, /* (82) select ::= selectnowith */ - { 196, -3 }, /* (83) selectnowith ::= selectnowith multiselect_op oneselect */ - { 199, -1 }, /* (84) multiselect_op ::= UNION */ - { 199, -2 }, /* (85) multiselect_op ::= UNION ALL */ - { 199, -1 }, /* (86) multiselect_op ::= EXCEPT|INTERSECT */ - { 197, -9 }, /* (87) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ - { 208, -4 }, /* (88) values ::= VALUES LP nexprlist RP */ - { 208, -5 }, /* (89) values ::= values COMMA LP exprlist RP */ - { 200, -1 }, /* (90) distinct ::= DISTINCT */ - { 200, -1 }, /* (91) distinct ::= ALL */ - { 200, 0 }, /* (92) distinct ::= */ - { 211, 0 }, /* (93) sclp ::= */ - { 201, -5 }, /* (94) selcollist ::= sclp scanpt expr scanpt as */ - { 201, -3 }, /* (95) selcollist ::= sclp scanpt STAR */ - { 201, -5 }, /* (96) selcollist ::= sclp scanpt nm DOT STAR */ - { 212, -2 }, /* (97) as ::= AS nm */ - { 212, 0 }, /* (98) as ::= */ - { 202, 0 }, /* (99) from ::= */ - { 202, -2 }, /* (100) from ::= FROM seltablist */ - { 214, -2 }, /* (101) stl_prefix ::= seltablist joinop */ - { 214, 0 }, /* (102) stl_prefix ::= */ - { 213, -7 }, /* (103) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */ - { 213, -9 }, /* (104) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */ - { 213, -7 }, /* (105) seltablist ::= stl_prefix LP select RP as on_opt using_opt */ - { 213, -7 }, /* (106) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */ - { 160, 0 }, /* (107) dbnm ::= */ - { 160, -2 }, /* (108) dbnm ::= DOT nm */ - { 195, -1 }, /* (109) fullname ::= nm */ - { 195, -3 }, /* (110) fullname ::= nm DOT nm */ - { 219, -1 }, /* (111) xfullname ::= nm */ - { 219, -3 }, /* (112) xfullname ::= nm DOT nm */ - { 219, -5 }, /* (113) xfullname ::= nm DOT nm AS nm */ - { 219, -3 }, /* (114) xfullname ::= nm AS nm */ - { 215, -1 }, /* (115) joinop ::= COMMA|JOIN */ - { 215, -2 }, /* (116) joinop ::= JOIN_KW JOIN */ - { 215, -3 }, /* (117) joinop ::= JOIN_KW nm JOIN */ - { 215, -4 }, /* (118) joinop ::= JOIN_KW nm nm JOIN */ - { 217, -2 }, /* (119) on_opt ::= ON expr */ - { 217, 0 }, /* (120) on_opt ::= */ - { 216, 0 }, /* (121) indexed_opt ::= */ - { 216, -3 }, /* (122) indexed_opt ::= INDEXED BY nm */ - { 216, -2 }, /* (123) indexed_opt ::= NOT INDEXED */ - { 218, -4 }, /* (124) using_opt ::= USING LP idlist RP */ - { 218, 0 }, /* (125) using_opt ::= */ - { 206, 0 }, /* (126) orderby_opt ::= */ - { 206, -3 }, /* (127) orderby_opt ::= ORDER BY sortlist */ - { 188, -4 }, /* (128) sortlist ::= sortlist COMMA expr sortorder */ - { 188, -2 }, /* (129) sortlist ::= expr sortorder */ - { 177, -1 }, /* (130) sortorder ::= ASC */ - { 177, -1 }, /* (131) sortorder ::= DESC */ - { 177, 0 }, /* (132) sortorder ::= */ - { 204, 0 }, /* (133) groupby_opt ::= */ - { 204, -3 }, /* (134) groupby_opt ::= GROUP BY nexprlist */ - { 205, 0 }, /* (135) having_opt ::= */ - { 205, -2 }, /* (136) having_opt ::= HAVING expr */ - { 207, 0 }, /* (137) limit_opt ::= */ - { 207, -2 }, /* (138) limit_opt ::= LIMIT expr */ - { 207, -4 }, /* (139) limit_opt ::= LIMIT expr OFFSET expr */ - { 207, -4 }, /* (140) limit_opt ::= LIMIT expr COMMA expr */ - { 150, -6 }, /* (141) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */ - { 203, 0 }, /* (142) where_opt ::= */ - { 203, -2 }, /* (143) where_opt ::= WHERE expr */ - { 150, -8 }, /* (144) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */ - { 222, -5 }, /* (145) setlist ::= setlist COMMA nm EQ expr */ - { 222, -7 }, /* (146) setlist ::= setlist COMMA LP idlist RP EQ expr */ - { 222, -3 }, /* (147) setlist ::= nm EQ expr */ - { 222, -5 }, /* (148) setlist ::= LP idlist RP EQ expr */ - { 150, -7 }, /* (149) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */ - { 150, -7 }, /* (150) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */ - { 225, 0 }, /* (151) upsert ::= */ - { 225, -11 }, /* (152) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */ - { 225, -8 }, /* (153) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */ - { 225, -4 }, /* (154) upsert ::= ON CONFLICT DO NOTHING */ - { 223, -2 }, /* (155) insert_cmd ::= INSERT orconf */ - { 223, -1 }, /* (156) insert_cmd ::= REPLACE */ - { 224, 0 }, /* (157) idlist_opt ::= */ - { 224, -3 }, /* (158) idlist_opt ::= LP idlist RP */ - { 220, -3 }, /* (159) idlist ::= idlist COMMA nm */ - { 220, -1 }, /* (160) idlist ::= nm */ - { 175, -3 }, /* (161) expr ::= LP expr RP */ - { 175, -1 }, /* (162) expr ::= ID|INDEXED */ - { 175, -1 }, /* (163) expr ::= JOIN_KW */ - { 175, -3 }, /* (164) expr ::= nm DOT nm */ - { 175, -5 }, /* (165) expr ::= nm DOT nm DOT nm */ - { 174, -1 }, /* (166) term ::= NULL|FLOAT|BLOB */ - { 174, -1 }, /* (167) term ::= STRING */ - { 174, -1 }, /* (168) term ::= INTEGER */ - { 175, -1 }, /* (169) expr ::= VARIABLE */ - { 175, -3 }, /* (170) expr ::= expr COLLATE ID|STRING */ - { 175, -6 }, /* (171) expr ::= CAST LP expr AS typetoken RP */ - { 175, -5 }, /* (172) expr ::= ID|INDEXED LP distinct exprlist RP */ - { 175, -4 }, /* (173) expr ::= ID|INDEXED LP STAR RP */ - { 174, -1 }, /* (174) term ::= CTIME_KW */ - { 175, -5 }, /* (175) expr ::= LP nexprlist COMMA expr RP */ - { 175, -3 }, /* (176) expr ::= expr AND expr */ - { 175, -3 }, /* (177) expr ::= expr OR expr */ - { 175, -3 }, /* (178) expr ::= expr LT|GT|GE|LE expr */ - { 175, -3 }, /* (179) expr ::= expr EQ|NE expr */ - { 175, -3 }, /* (180) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ - { 175, -3 }, /* (181) expr ::= expr PLUS|MINUS expr */ - { 175, -3 }, /* (182) expr ::= expr STAR|SLASH|REM expr */ - { 175, -3 }, /* (183) expr ::= expr CONCAT expr */ - { 226, -2 }, /* (184) likeop ::= NOT LIKE_KW|MATCH */ - { 175, -3 }, /* (185) expr ::= expr likeop expr */ - { 175, -5 }, /* (186) expr ::= expr likeop expr ESCAPE expr */ - { 175, -2 }, /* (187) expr ::= expr ISNULL|NOTNULL */ - { 175, -3 }, /* (188) expr ::= expr NOT NULL */ - { 175, -3 }, /* (189) expr ::= expr IS expr */ - { 175, -4 }, /* (190) expr ::= expr IS NOT expr */ - { 175, -2 }, /* (191) expr ::= NOT expr */ - { 175, -2 }, /* (192) expr ::= BITNOT expr */ - { 175, -2 }, /* (193) expr ::= MINUS expr */ - { 175, -2 }, /* (194) expr ::= PLUS expr */ - { 227, -1 }, /* (195) between_op ::= BETWEEN */ - { 227, -2 }, /* (196) between_op ::= NOT BETWEEN */ - { 175, -5 }, /* (197) expr ::= expr between_op expr AND expr */ - { 228, -1 }, /* (198) in_op ::= IN */ - { 228, -2 }, /* (199) in_op ::= NOT IN */ - { 175, -5 }, /* (200) expr ::= expr in_op LP exprlist RP */ - { 175, -3 }, /* (201) expr ::= LP select RP */ - { 175, -5 }, /* (202) expr ::= expr in_op LP select RP */ - { 175, -5 }, /* (203) expr ::= expr in_op nm dbnm paren_exprlist */ - { 175, -4 }, /* (204) expr ::= EXISTS LP select RP */ - { 175, -5 }, /* (205) expr ::= CASE case_operand case_exprlist case_else END */ - { 231, -5 }, /* (206) case_exprlist ::= case_exprlist WHEN expr THEN expr */ - { 231, -4 }, /* (207) case_exprlist ::= WHEN expr THEN expr */ - { 232, -2 }, /* (208) case_else ::= ELSE expr */ - { 232, 0 }, /* (209) case_else ::= */ - { 230, -1 }, /* (210) case_operand ::= expr */ - { 230, 0 }, /* (211) case_operand ::= */ - { 210, 0 }, /* (212) exprlist ::= */ - { 209, -3 }, /* (213) nexprlist ::= nexprlist COMMA expr */ - { 209, -1 }, /* (214) nexprlist ::= expr */ - { 229, 0 }, /* (215) paren_exprlist ::= */ - { 229, -3 }, /* (216) paren_exprlist ::= LP exprlist RP */ - { 150, -12 }, /* (217) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ - { 233, -1 }, /* (218) uniqueflag ::= UNIQUE */ - { 233, 0 }, /* (219) uniqueflag ::= */ - { 179, 0 }, /* (220) eidlist_opt ::= */ - { 179, -3 }, /* (221) eidlist_opt ::= LP eidlist RP */ - { 189, -5 }, /* (222) eidlist ::= eidlist COMMA nm collate sortorder */ - { 189, -3 }, /* (223) eidlist ::= nm collate sortorder */ - { 234, 0 }, /* (224) collate ::= */ - { 234, -2 }, /* (225) collate ::= COLLATE ID|STRING */ - { 150, -4 }, /* (226) cmd ::= DROP INDEX ifexists fullname */ - { 150, -1 }, /* (227) cmd ::= VACUUM */ - { 150, -2 }, /* (228) cmd ::= VACUUM nm */ - { 150, -3 }, /* (229) cmd ::= PRAGMA nm dbnm */ - { 150, -5 }, /* (230) cmd ::= PRAGMA nm dbnm EQ nmnum */ - { 150, -6 }, /* (231) cmd ::= PRAGMA nm dbnm LP nmnum RP */ - { 150, -5 }, /* (232) cmd ::= PRAGMA nm dbnm EQ minus_num */ - { 150, -6 }, /* (233) cmd ::= PRAGMA nm dbnm LP minus_num RP */ - { 170, -2 }, /* (234) plus_num ::= PLUS INTEGER|FLOAT */ - { 171, -2 }, /* (235) minus_num ::= MINUS INTEGER|FLOAT */ - { 150, -5 }, /* (236) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ - { 236, -11 }, /* (237) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ - { 238, -1 }, /* (238) trigger_time ::= BEFORE|AFTER */ - { 238, -2 }, /* (239) trigger_time ::= INSTEAD OF */ - { 238, 0 }, /* (240) trigger_time ::= */ - { 239, -1 }, /* (241) trigger_event ::= DELETE|INSERT */ - { 239, -1 }, /* (242) trigger_event ::= UPDATE */ - { 239, -3 }, /* (243) trigger_event ::= UPDATE OF idlist */ - { 241, 0 }, /* (244) when_clause ::= */ - { 241, -2 }, /* (245) when_clause ::= WHEN expr */ - { 237, -3 }, /* (246) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ - { 237, -2 }, /* (247) trigger_cmd_list ::= trigger_cmd SEMI */ - { 243, -3 }, /* (248) trnm ::= nm DOT nm */ - { 244, -3 }, /* (249) tridxby ::= INDEXED BY nm */ - { 244, -2 }, /* (250) tridxby ::= NOT INDEXED */ - { 242, -8 }, /* (251) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */ - { 242, -8 }, /* (252) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ - { 242, -6 }, /* (253) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ - { 242, -3 }, /* (254) trigger_cmd ::= scanpt select scanpt */ - { 175, -4 }, /* (255) expr ::= RAISE LP IGNORE RP */ - { 175, -6 }, /* (256) expr ::= RAISE LP raisetype COMMA nm RP */ - { 193, -1 }, /* (257) raisetype ::= ROLLBACK */ - { 193, -1 }, /* (258) raisetype ::= ABORT */ - { 193, -1 }, /* (259) raisetype ::= FAIL */ - { 150, -4 }, /* (260) cmd ::= DROP TRIGGER ifexists fullname */ - { 150, -6 }, /* (261) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ - { 150, -3 }, /* (262) cmd ::= DETACH database_kw_opt expr */ - { 246, 0 }, /* (263) key_opt ::= */ - { 246, -2 }, /* (264) key_opt ::= KEY expr */ - { 150, -1 }, /* (265) cmd ::= REINDEX */ - { 150, -3 }, /* (266) cmd ::= REINDEX nm dbnm */ - { 150, -1 }, /* (267) cmd ::= ANALYZE */ - { 150, -3 }, /* (268) cmd ::= ANALYZE nm dbnm */ - { 150, -6 }, /* (269) cmd ::= ALTER TABLE fullname RENAME TO nm */ - { 150, -7 }, /* (270) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ - { 247, -1 }, /* (271) add_column_fullname ::= fullname */ - { 150, -1 }, /* (272) cmd ::= create_vtab */ - { 150, -4 }, /* (273) cmd ::= create_vtab LP vtabarglist RP */ - { 249, -8 }, /* (274) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ - { 251, 0 }, /* (275) vtabarg ::= */ - { 252, -1 }, /* (276) vtabargtoken ::= ANY */ - { 252, -3 }, /* (277) vtabargtoken ::= lp anylist RP */ - { 253, -1 }, /* (278) lp ::= LP */ - { 221, -2 }, /* (279) with ::= WITH wqlist */ - { 221, -3 }, /* (280) with ::= WITH RECURSIVE wqlist */ - { 198, -6 }, /* (281) wqlist ::= nm eidlist_opt AS LP select RP */ - { 198, -8 }, /* (282) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */ - { 145, -1 }, /* (283) input ::= cmdlist */ - { 146, -2 }, /* (284) cmdlist ::= cmdlist ecmd */ - { 146, -1 }, /* (285) cmdlist ::= ecmd */ - { 147, -1 }, /* (286) ecmd ::= SEMI */ - { 147, -2 }, /* (287) ecmd ::= cmdx SEMI */ - { 147, -2 }, /* (288) ecmd ::= explain cmdx */ - { 152, 0 }, /* (289) trans_opt ::= */ - { 152, -1 }, /* (290) trans_opt ::= TRANSACTION */ - { 152, -2 }, /* (291) trans_opt ::= TRANSACTION nm */ - { 154, -1 }, /* (292) savepoint_opt ::= SAVEPOINT */ - { 154, 0 }, /* (293) savepoint_opt ::= */ - { 150, -2 }, /* (294) cmd ::= create_table create_table_args */ - { 161, -4 }, /* (295) columnlist ::= columnlist COMMA columnname carglist */ - { 161, -2 }, /* (296) columnlist ::= columnname carglist */ - { 153, -1 }, /* (297) nm ::= ID|INDEXED */ - { 153, -1 }, /* (298) nm ::= STRING */ - { 153, -1 }, /* (299) nm ::= JOIN_KW */ - { 167, -1 }, /* (300) typetoken ::= typename */ - { 168, -1 }, /* (301) typename ::= ID|STRING */ - { 169, -1 }, /* (302) signed ::= plus_num */ - { 169, -1 }, /* (303) signed ::= minus_num */ - { 166, -2 }, /* (304) carglist ::= carglist ccons */ - { 166, 0 }, /* (305) carglist ::= */ - { 173, -2 }, /* (306) ccons ::= NULL onconf */ - { 162, -2 }, /* (307) conslist_opt ::= COMMA conslist */ - { 185, -3 }, /* (308) conslist ::= conslist tconscomma tcons */ - { 185, -1 }, /* (309) conslist ::= tcons */ - { 186, 0 }, /* (310) tconscomma ::= */ - { 190, -1 }, /* (311) defer_subclause_opt ::= defer_subclause */ - { 192, -1 }, /* (312) resolvetype ::= raisetype */ - { 196, -1 }, /* (313) selectnowith ::= oneselect */ - { 197, -1 }, /* (314) oneselect ::= values */ - { 211, -2 }, /* (315) sclp ::= selcollist COMMA */ - { 212, -1 }, /* (316) as ::= ID|STRING */ - { 175, -1 }, /* (317) expr ::= term */ - { 226, -1 }, /* (318) likeop ::= LIKE_KW|MATCH */ - { 210, -1 }, /* (319) exprlist ::= nexprlist */ - { 235, -1 }, /* (320) nmnum ::= plus_num */ - { 235, -1 }, /* (321) nmnum ::= nm */ - { 235, -1 }, /* (322) nmnum ::= ON */ - { 235, -1 }, /* (323) nmnum ::= DELETE */ - { 235, -1 }, /* (324) nmnum ::= DEFAULT */ - { 170, -1 }, /* (325) plus_num ::= INTEGER|FLOAT */ - { 240, 0 }, /* (326) foreach_clause ::= */ - { 240, -3 }, /* (327) foreach_clause ::= FOR EACH ROW */ - { 243, -1 }, /* (328) trnm ::= nm */ - { 244, 0 }, /* (329) tridxby ::= */ - { 245, -1 }, /* (330) database_kw_opt ::= DATABASE */ - { 245, 0 }, /* (331) database_kw_opt ::= */ - { 248, 0 }, /* (332) kwcolumn_opt ::= */ - { 248, -1 }, /* (333) kwcolumn_opt ::= COLUMNKW */ - { 250, -1 }, /* (334) vtabarglist ::= vtabarg */ - { 250, -3 }, /* (335) vtabarglist ::= vtabarglist COMMA vtabarg */ - { 251, -2 }, /* (336) vtabarg ::= vtabarg vtabargtoken */ - { 254, 0 }, /* (337) anylist ::= */ - { 254, -4 }, /* (338) anylist ::= anylist LP anylist RP */ - { 254, -2 }, /* (339) anylist ::= anylist ANY */ - { 221, 0 }, /* (340) with ::= */ + { 159, -1 }, /* (0) explain ::= EXPLAIN */ + { 159, -3 }, /* (1) explain ::= EXPLAIN QUERY PLAN */ + { 158, -1 }, /* (2) cmdx ::= cmd */ + { 160, -3 }, /* (3) cmd ::= BEGIN transtype trans_opt */ + { 161, 0 }, /* (4) transtype ::= */ + { 161, -1 }, /* (5) transtype ::= DEFERRED */ + { 161, -1 }, /* (6) transtype ::= IMMEDIATE */ + { 161, -1 }, /* (7) transtype ::= EXCLUSIVE */ + { 160, -2 }, /* (8) cmd ::= COMMIT|END trans_opt */ + { 160, -2 }, /* (9) cmd ::= ROLLBACK trans_opt */ + { 160, -2 }, /* (10) cmd ::= SAVEPOINT nm */ + { 160, -3 }, /* (11) cmd ::= RELEASE savepoint_opt nm */ + { 160, -5 }, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */ + { 165, -6 }, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */ + { 167, -1 }, /* (14) createkw ::= CREATE */ + { 169, 0 }, /* (15) ifnotexists ::= */ + { 169, -3 }, /* (16) ifnotexists ::= IF NOT EXISTS */ + { 168, -1 }, /* (17) temp ::= TEMP */ + { 168, 0 }, /* (18) temp ::= */ + { 166, -5 }, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */ + { 166, -2 }, /* (20) create_table_args ::= AS select */ + { 173, 0 }, /* (21) table_options ::= */ + { 173, -2 }, /* (22) table_options ::= WITHOUT nm */ + { 175, -2 }, /* (23) columnname ::= nm typetoken */ + { 177, 0 }, /* (24) typetoken ::= */ + { 177, -4 }, /* (25) typetoken ::= typename LP signed RP */ + { 177, -6 }, /* (26) typetoken ::= typename LP signed COMMA signed RP */ + { 178, -2 }, /* (27) typename ::= typename ID|STRING */ + { 182, 0 }, /* (28) scanpt ::= */ + { 183, -2 }, /* (29) ccons ::= CONSTRAINT nm */ + { 183, -4 }, /* (30) ccons ::= DEFAULT scanpt term scanpt */ + { 183, -4 }, /* (31) ccons ::= DEFAULT LP expr RP */ + { 183, -4 }, /* (32) ccons ::= DEFAULT PLUS term scanpt */ + { 183, -4 }, /* (33) ccons ::= DEFAULT MINUS term scanpt */ + { 183, -3 }, /* (34) ccons ::= DEFAULT scanpt ID|INDEXED */ + { 183, -3 }, /* (35) ccons ::= NOT NULL onconf */ + { 183, -5 }, /* (36) ccons ::= PRIMARY KEY sortorder onconf autoinc */ + { 183, -2 }, /* (37) ccons ::= UNIQUE onconf */ + { 183, -4 }, /* (38) ccons ::= CHECK LP expr RP */ + { 183, -4 }, /* (39) ccons ::= REFERENCES nm eidlist_opt refargs */ + { 183, -1 }, /* (40) ccons ::= defer_subclause */ + { 183, -2 }, /* (41) ccons ::= COLLATE ID|STRING */ + { 188, 0 }, /* (42) autoinc ::= */ + { 188, -1 }, /* (43) autoinc ::= AUTOINCR */ + { 190, 0 }, /* (44) refargs ::= */ + { 190, -2 }, /* (45) refargs ::= refargs refarg */ + { 192, -2 }, /* (46) refarg ::= MATCH nm */ + { 192, -3 }, /* (47) refarg ::= ON INSERT refact */ + { 192, -3 }, /* (48) refarg ::= ON DELETE refact */ + { 192, -3 }, /* (49) refarg ::= ON UPDATE refact */ + { 193, -2 }, /* (50) refact ::= SET NULL */ + { 193, -2 }, /* (51) refact ::= SET DEFAULT */ + { 193, -1 }, /* (52) refact ::= CASCADE */ + { 193, -1 }, /* (53) refact ::= RESTRICT */ + { 193, -2 }, /* (54) refact ::= NO ACTION */ + { 191, -3 }, /* (55) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ + { 191, -2 }, /* (56) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ + { 194, 0 }, /* (57) init_deferred_pred_opt ::= */ + { 194, -2 }, /* (58) init_deferred_pred_opt ::= INITIALLY DEFERRED */ + { 194, -2 }, /* (59) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ + { 172, 0 }, /* (60) conslist_opt ::= */ + { 196, -1 }, /* (61) tconscomma ::= COMMA */ + { 197, -2 }, /* (62) tcons ::= CONSTRAINT nm */ + { 197, -7 }, /* (63) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */ + { 197, -5 }, /* (64) tcons ::= UNIQUE LP sortlist RP onconf */ + { 197, -5 }, /* (65) tcons ::= CHECK LP expr RP onconf */ + { 197, -10 }, /* (66) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */ + { 200, 0 }, /* (67) defer_subclause_opt ::= */ + { 186, 0 }, /* (68) onconf ::= */ + { 186, -3 }, /* (69) onconf ::= ON CONFLICT resolvetype */ + { 201, 0 }, /* (70) orconf ::= */ + { 201, -2 }, /* (71) orconf ::= OR resolvetype */ + { 202, -1 }, /* (72) resolvetype ::= IGNORE */ + { 202, -1 }, /* (73) resolvetype ::= REPLACE */ + { 160, -4 }, /* (74) cmd ::= DROP TABLE ifexists fullname */ + { 204, -2 }, /* (75) ifexists ::= IF EXISTS */ + { 204, 0 }, /* (76) ifexists ::= */ + { 160, -9 }, /* (77) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ + { 160, -4 }, /* (78) cmd ::= DROP VIEW ifexists fullname */ + { 160, -1 }, /* (79) cmd ::= select */ + { 174, -3 }, /* (80) select ::= WITH wqlist selectnowith */ + { 174, -4 }, /* (81) select ::= WITH RECURSIVE wqlist selectnowith */ + { 174, -1 }, /* (82) select ::= selectnowith */ + { 206, -3 }, /* (83) selectnowith ::= selectnowith multiselect_op oneselect */ + { 209, -1 }, /* (84) multiselect_op ::= UNION */ + { 209, -2 }, /* (85) multiselect_op ::= UNION ALL */ + { 209, -1 }, /* (86) multiselect_op ::= EXCEPT|INTERSECT */ + { 207, -9 }, /* (87) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ + { 207, -10 }, /* (88) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */ + { 219, -4 }, /* (89) values ::= VALUES LP nexprlist RP */ + { 219, -5 }, /* (90) values ::= values COMMA LP nexprlist RP */ + { 210, -1 }, /* (91) distinct ::= DISTINCT */ + { 210, -1 }, /* (92) distinct ::= ALL */ + { 210, 0 }, /* (93) distinct ::= */ + { 221, 0 }, /* (94) sclp ::= */ + { 211, -5 }, /* (95) selcollist ::= sclp scanpt expr scanpt as */ + { 211, -3 }, /* (96) selcollist ::= sclp scanpt STAR */ + { 211, -5 }, /* (97) selcollist ::= sclp scanpt nm DOT STAR */ + { 222, -2 }, /* (98) as ::= AS nm */ + { 222, 0 }, /* (99) as ::= */ + { 212, 0 }, /* (100) from ::= */ + { 212, -2 }, /* (101) from ::= FROM seltablist */ + { 224, -2 }, /* (102) stl_prefix ::= seltablist joinop */ + { 224, 0 }, /* (103) stl_prefix ::= */ + { 223, -7 }, /* (104) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */ + { 223, -9 }, /* (105) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */ + { 223, -7 }, /* (106) seltablist ::= stl_prefix LP select RP as on_opt using_opt */ + { 223, -7 }, /* (107) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */ + { 170, 0 }, /* (108) dbnm ::= */ + { 170, -2 }, /* (109) dbnm ::= DOT nm */ + { 205, -1 }, /* (110) fullname ::= nm */ + { 205, -3 }, /* (111) fullname ::= nm DOT nm */ + { 230, -1 }, /* (112) xfullname ::= nm */ + { 230, -3 }, /* (113) xfullname ::= nm DOT nm */ + { 230, -5 }, /* (114) xfullname ::= nm DOT nm AS nm */ + { 230, -3 }, /* (115) xfullname ::= nm AS nm */ + { 225, -1 }, /* (116) joinop ::= COMMA|JOIN */ + { 225, -2 }, /* (117) joinop ::= JOIN_KW JOIN */ + { 225, -3 }, /* (118) joinop ::= JOIN_KW nm JOIN */ + { 225, -4 }, /* (119) joinop ::= JOIN_KW nm nm JOIN */ + { 227, -2 }, /* (120) on_opt ::= ON expr */ + { 227, 0 }, /* (121) on_opt ::= */ + { 226, 0 }, /* (122) indexed_opt ::= */ + { 226, -3 }, /* (123) indexed_opt ::= INDEXED BY nm */ + { 226, -2 }, /* (124) indexed_opt ::= NOT INDEXED */ + { 228, -4 }, /* (125) using_opt ::= USING LP idlist RP */ + { 228, 0 }, /* (126) using_opt ::= */ + { 216, 0 }, /* (127) orderby_opt ::= */ + { 216, -3 }, /* (128) orderby_opt ::= ORDER BY sortlist */ + { 198, -4 }, /* (129) sortlist ::= sortlist COMMA expr sortorder */ + { 198, -2 }, /* (130) sortlist ::= expr sortorder */ + { 187, -1 }, /* (131) sortorder ::= ASC */ + { 187, -1 }, /* (132) sortorder ::= DESC */ + { 187, 0 }, /* (133) sortorder ::= */ + { 214, 0 }, /* (134) groupby_opt ::= */ + { 214, -3 }, /* (135) groupby_opt ::= GROUP BY nexprlist */ + { 215, 0 }, /* (136) having_opt ::= */ + { 215, -2 }, /* (137) having_opt ::= HAVING expr */ + { 217, 0 }, /* (138) limit_opt ::= */ + { 217, -2 }, /* (139) limit_opt ::= LIMIT expr */ + { 217, -4 }, /* (140) limit_opt ::= LIMIT expr OFFSET expr */ + { 217, -4 }, /* (141) limit_opt ::= LIMIT expr COMMA expr */ + { 160, -6 }, /* (142) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */ + { 213, 0 }, /* (143) where_opt ::= */ + { 213, -2 }, /* (144) where_opt ::= WHERE expr */ + { 160, -8 }, /* (145) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */ + { 233, -5 }, /* (146) setlist ::= setlist COMMA nm EQ expr */ + { 233, -7 }, /* (147) setlist ::= setlist COMMA LP idlist RP EQ expr */ + { 233, -3 }, /* (148) setlist ::= nm EQ expr */ + { 233, -5 }, /* (149) setlist ::= LP idlist RP EQ expr */ + { 160, -7 }, /* (150) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */ + { 160, -7 }, /* (151) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */ + { 236, 0 }, /* (152) upsert ::= */ + { 236, -11 }, /* (153) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */ + { 236, -8 }, /* (154) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */ + { 236, -4 }, /* (155) upsert ::= ON CONFLICT DO NOTHING */ + { 234, -2 }, /* (156) insert_cmd ::= INSERT orconf */ + { 234, -1 }, /* (157) insert_cmd ::= REPLACE */ + { 235, 0 }, /* (158) idlist_opt ::= */ + { 235, -3 }, /* (159) idlist_opt ::= LP idlist RP */ + { 231, -3 }, /* (160) idlist ::= idlist COMMA nm */ + { 231, -1 }, /* (161) idlist ::= nm */ + { 185, -3 }, /* (162) expr ::= LP expr RP */ + { 185, -1 }, /* (163) expr ::= ID|INDEXED */ + { 185, -1 }, /* (164) expr ::= JOIN_KW */ + { 185, -3 }, /* (165) expr ::= nm DOT nm */ + { 185, -5 }, /* (166) expr ::= nm DOT nm DOT nm */ + { 184, -1 }, /* (167) term ::= NULL|FLOAT|BLOB */ + { 184, -1 }, /* (168) term ::= STRING */ + { 184, -1 }, /* (169) term ::= INTEGER */ + { 185, -1 }, /* (170) expr ::= VARIABLE */ + { 185, -3 }, /* (171) expr ::= expr COLLATE ID|STRING */ + { 185, -6 }, /* (172) expr ::= CAST LP expr AS typetoken RP */ + { 185, -5 }, /* (173) expr ::= ID|INDEXED LP distinct exprlist RP */ + { 185, -4 }, /* (174) expr ::= ID|INDEXED LP STAR RP */ + { 185, -6 }, /* (175) expr ::= ID|INDEXED LP distinct exprlist RP over_clause */ + { 185, -5 }, /* (176) expr ::= ID|INDEXED LP STAR RP over_clause */ + { 184, -1 }, /* (177) term ::= CTIME_KW */ + { 185, -5 }, /* (178) expr ::= LP nexprlist COMMA expr RP */ + { 185, -3 }, /* (179) expr ::= expr AND expr */ + { 185, -3 }, /* (180) expr ::= expr OR expr */ + { 185, -3 }, /* (181) expr ::= expr LT|GT|GE|LE expr */ + { 185, -3 }, /* (182) expr ::= expr EQ|NE expr */ + { 185, -3 }, /* (183) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ + { 185, -3 }, /* (184) expr ::= expr PLUS|MINUS expr */ + { 185, -3 }, /* (185) expr ::= expr STAR|SLASH|REM expr */ + { 185, -3 }, /* (186) expr ::= expr CONCAT expr */ + { 238, -2 }, /* (187) likeop ::= NOT LIKE_KW|MATCH */ + { 185, -3 }, /* (188) expr ::= expr likeop expr */ + { 185, -5 }, /* (189) expr ::= expr likeop expr ESCAPE expr */ + { 185, -2 }, /* (190) expr ::= expr ISNULL|NOTNULL */ + { 185, -3 }, /* (191) expr ::= expr NOT NULL */ + { 185, -3 }, /* (192) expr ::= expr IS expr */ + { 185, -4 }, /* (193) expr ::= expr IS NOT expr */ + { 185, -2 }, /* (194) expr ::= NOT expr */ + { 185, -2 }, /* (195) expr ::= BITNOT expr */ + { 185, -2 }, /* (196) expr ::= PLUS|MINUS expr */ + { 239, -1 }, /* (197) between_op ::= BETWEEN */ + { 239, -2 }, /* (198) between_op ::= NOT BETWEEN */ + { 185, -5 }, /* (199) expr ::= expr between_op expr AND expr */ + { 240, -1 }, /* (200) in_op ::= IN */ + { 240, -2 }, /* (201) in_op ::= NOT IN */ + { 185, -5 }, /* (202) expr ::= expr in_op LP exprlist RP */ + { 185, -3 }, /* (203) expr ::= LP select RP */ + { 185, -5 }, /* (204) expr ::= expr in_op LP select RP */ + { 185, -5 }, /* (205) expr ::= expr in_op nm dbnm paren_exprlist */ + { 185, -4 }, /* (206) expr ::= EXISTS LP select RP */ + { 185, -5 }, /* (207) expr ::= CASE case_operand case_exprlist case_else END */ + { 243, -5 }, /* (208) case_exprlist ::= case_exprlist WHEN expr THEN expr */ + { 243, -4 }, /* (209) case_exprlist ::= WHEN expr THEN expr */ + { 244, -2 }, /* (210) case_else ::= ELSE expr */ + { 244, 0 }, /* (211) case_else ::= */ + { 242, -1 }, /* (212) case_operand ::= expr */ + { 242, 0 }, /* (213) case_operand ::= */ + { 229, 0 }, /* (214) exprlist ::= */ + { 220, -3 }, /* (215) nexprlist ::= nexprlist COMMA expr */ + { 220, -1 }, /* (216) nexprlist ::= expr */ + { 241, 0 }, /* (217) paren_exprlist ::= */ + { 241, -3 }, /* (218) paren_exprlist ::= LP exprlist RP */ + { 160, -12 }, /* (219) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ + { 245, -1 }, /* (220) uniqueflag ::= UNIQUE */ + { 245, 0 }, /* (221) uniqueflag ::= */ + { 189, 0 }, /* (222) eidlist_opt ::= */ + { 189, -3 }, /* (223) eidlist_opt ::= LP eidlist RP */ + { 199, -5 }, /* (224) eidlist ::= eidlist COMMA nm collate sortorder */ + { 199, -3 }, /* (225) eidlist ::= nm collate sortorder */ + { 246, 0 }, /* (226) collate ::= */ + { 246, -2 }, /* (227) collate ::= COLLATE ID|STRING */ + { 160, -4 }, /* (228) cmd ::= DROP INDEX ifexists fullname */ + { 160, -1 }, /* (229) cmd ::= VACUUM */ + { 160, -2 }, /* (230) cmd ::= VACUUM nm */ + { 160, -3 }, /* (231) cmd ::= PRAGMA nm dbnm */ + { 160, -5 }, /* (232) cmd ::= PRAGMA nm dbnm EQ nmnum */ + { 160, -6 }, /* (233) cmd ::= PRAGMA nm dbnm LP nmnum RP */ + { 160, -5 }, /* (234) cmd ::= PRAGMA nm dbnm EQ minus_num */ + { 160, -6 }, /* (235) cmd ::= PRAGMA nm dbnm LP minus_num RP */ + { 180, -2 }, /* (236) plus_num ::= PLUS INTEGER|FLOAT */ + { 181, -2 }, /* (237) minus_num ::= MINUS INTEGER|FLOAT */ + { 160, -5 }, /* (238) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ + { 248, -11 }, /* (239) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ + { 250, -1 }, /* (240) trigger_time ::= BEFORE|AFTER */ + { 250, -2 }, /* (241) trigger_time ::= INSTEAD OF */ + { 250, 0 }, /* (242) trigger_time ::= */ + { 251, -1 }, /* (243) trigger_event ::= DELETE|INSERT */ + { 251, -1 }, /* (244) trigger_event ::= UPDATE */ + { 251, -3 }, /* (245) trigger_event ::= UPDATE OF idlist */ + { 253, 0 }, /* (246) when_clause ::= */ + { 253, -2 }, /* (247) when_clause ::= WHEN expr */ + { 249, -3 }, /* (248) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ + { 249, -2 }, /* (249) trigger_cmd_list ::= trigger_cmd SEMI */ + { 255, -3 }, /* (250) trnm ::= nm DOT nm */ + { 256, -3 }, /* (251) tridxby ::= INDEXED BY nm */ + { 256, -2 }, /* (252) tridxby ::= NOT INDEXED */ + { 254, -8 }, /* (253) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */ + { 254, -8 }, /* (254) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ + { 254, -6 }, /* (255) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ + { 254, -3 }, /* (256) trigger_cmd ::= scanpt select scanpt */ + { 185, -4 }, /* (257) expr ::= RAISE LP IGNORE RP */ + { 185, -6 }, /* (258) expr ::= RAISE LP raisetype COMMA nm RP */ + { 203, -1 }, /* (259) raisetype ::= ROLLBACK */ + { 203, -1 }, /* (260) raisetype ::= ABORT */ + { 203, -1 }, /* (261) raisetype ::= FAIL */ + { 160, -4 }, /* (262) cmd ::= DROP TRIGGER ifexists fullname */ + { 160, -6 }, /* (263) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ + { 160, -3 }, /* (264) cmd ::= DETACH database_kw_opt expr */ + { 258, 0 }, /* (265) key_opt ::= */ + { 258, -2 }, /* (266) key_opt ::= KEY expr */ + { 160, -1 }, /* (267) cmd ::= REINDEX */ + { 160, -3 }, /* (268) cmd ::= REINDEX nm dbnm */ + { 160, -1 }, /* (269) cmd ::= ANALYZE */ + { 160, -3 }, /* (270) cmd ::= ANALYZE nm dbnm */ + { 160, -6 }, /* (271) cmd ::= ALTER TABLE fullname RENAME TO nm */ + { 160, -7 }, /* (272) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ + { 259, -1 }, /* (273) add_column_fullname ::= fullname */ + { 160, -8 }, /* (274) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */ + { 160, -1 }, /* (275) cmd ::= create_vtab */ + { 160, -4 }, /* (276) cmd ::= create_vtab LP vtabarglist RP */ + { 261, -8 }, /* (277) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ + { 263, 0 }, /* (278) vtabarg ::= */ + { 264, -1 }, /* (279) vtabargtoken ::= ANY */ + { 264, -3 }, /* (280) vtabargtoken ::= lp anylist RP */ + { 265, -1 }, /* (281) lp ::= LP */ + { 232, -2 }, /* (282) with ::= WITH wqlist */ + { 232, -3 }, /* (283) with ::= WITH RECURSIVE wqlist */ + { 208, -6 }, /* (284) wqlist ::= nm eidlist_opt AS LP select RP */ + { 208, -8 }, /* (285) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */ + { 267, -1 }, /* (286) windowdefn_list ::= windowdefn */ + { 267, -3 }, /* (287) windowdefn_list ::= windowdefn_list COMMA windowdefn */ + { 268, -3 }, /* (288) windowdefn ::= nm AS window */ + { 269, -5 }, /* (289) window ::= LP part_opt orderby_opt frame_opt RP */ + { 271, -3 }, /* (290) part_opt ::= PARTITION BY nexprlist */ + { 271, 0 }, /* (291) part_opt ::= */ + { 270, 0 }, /* (292) frame_opt ::= */ + { 270, -2 }, /* (293) frame_opt ::= range_or_rows frame_bound_s */ + { 270, -5 }, /* (294) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e */ + { 273, -1 }, /* (295) range_or_rows ::= RANGE */ + { 273, -1 }, /* (296) range_or_rows ::= ROWS */ + { 275, -1 }, /* (297) frame_bound_s ::= frame_bound */ + { 275, -2 }, /* (298) frame_bound_s ::= UNBOUNDED PRECEDING */ + { 276, -1 }, /* (299) frame_bound_e ::= frame_bound */ + { 276, -2 }, /* (300) frame_bound_e ::= UNBOUNDED FOLLOWING */ + { 274, -2 }, /* (301) frame_bound ::= expr PRECEDING */ + { 274, -2 }, /* (302) frame_bound ::= CURRENT ROW */ + { 274, -2 }, /* (303) frame_bound ::= expr FOLLOWING */ + { 218, -2 }, /* (304) window_clause ::= WINDOW windowdefn_list */ + { 237, -3 }, /* (305) over_clause ::= filter_opt OVER window */ + { 237, -3 }, /* (306) over_clause ::= filter_opt OVER nm */ + { 272, 0 }, /* (307) filter_opt ::= */ + { 272, -5 }, /* (308) filter_opt ::= FILTER LP WHERE expr RP */ + { 155, -1 }, /* (309) input ::= cmdlist */ + { 156, -2 }, /* (310) cmdlist ::= cmdlist ecmd */ + { 156, -1 }, /* (311) cmdlist ::= ecmd */ + { 157, -1 }, /* (312) ecmd ::= SEMI */ + { 157, -2 }, /* (313) ecmd ::= cmdx SEMI */ + { 157, -2 }, /* (314) ecmd ::= explain cmdx */ + { 162, 0 }, /* (315) trans_opt ::= */ + { 162, -1 }, /* (316) trans_opt ::= TRANSACTION */ + { 162, -2 }, /* (317) trans_opt ::= TRANSACTION nm */ + { 164, -1 }, /* (318) savepoint_opt ::= SAVEPOINT */ + { 164, 0 }, /* (319) savepoint_opt ::= */ + { 160, -2 }, /* (320) cmd ::= create_table create_table_args */ + { 171, -4 }, /* (321) columnlist ::= columnlist COMMA columnname carglist */ + { 171, -2 }, /* (322) columnlist ::= columnname carglist */ + { 163, -1 }, /* (323) nm ::= ID|INDEXED */ + { 163, -1 }, /* (324) nm ::= STRING */ + { 163, -1 }, /* (325) nm ::= JOIN_KW */ + { 177, -1 }, /* (326) typetoken ::= typename */ + { 178, -1 }, /* (327) typename ::= ID|STRING */ + { 179, -1 }, /* (328) signed ::= plus_num */ + { 179, -1 }, /* (329) signed ::= minus_num */ + { 176, -2 }, /* (330) carglist ::= carglist ccons */ + { 176, 0 }, /* (331) carglist ::= */ + { 183, -2 }, /* (332) ccons ::= NULL onconf */ + { 172, -2 }, /* (333) conslist_opt ::= COMMA conslist */ + { 195, -3 }, /* (334) conslist ::= conslist tconscomma tcons */ + { 195, -1 }, /* (335) conslist ::= tcons */ + { 196, 0 }, /* (336) tconscomma ::= */ + { 200, -1 }, /* (337) defer_subclause_opt ::= defer_subclause */ + { 202, -1 }, /* (338) resolvetype ::= raisetype */ + { 206, -1 }, /* (339) selectnowith ::= oneselect */ + { 207, -1 }, /* (340) oneselect ::= values */ + { 221, -2 }, /* (341) sclp ::= selcollist COMMA */ + { 222, -1 }, /* (342) as ::= ID|STRING */ + { 185, -1 }, /* (343) expr ::= term */ + { 238, -1 }, /* (344) likeop ::= LIKE_KW|MATCH */ + { 229, -1 }, /* (345) exprlist ::= nexprlist */ + { 247, -1 }, /* (346) nmnum ::= plus_num */ + { 247, -1 }, /* (347) nmnum ::= nm */ + { 247, -1 }, /* (348) nmnum ::= ON */ + { 247, -1 }, /* (349) nmnum ::= DELETE */ + { 247, -1 }, /* (350) nmnum ::= DEFAULT */ + { 180, -1 }, /* (351) plus_num ::= INTEGER|FLOAT */ + { 252, 0 }, /* (352) foreach_clause ::= */ + { 252, -3 }, /* (353) foreach_clause ::= FOR EACH ROW */ + { 255, -1 }, /* (354) trnm ::= nm */ + { 256, 0 }, /* (355) tridxby ::= */ + { 257, -1 }, /* (356) database_kw_opt ::= DATABASE */ + { 257, 0 }, /* (357) database_kw_opt ::= */ + { 260, 0 }, /* (358) kwcolumn_opt ::= */ + { 260, -1 }, /* (359) kwcolumn_opt ::= COLUMNKW */ + { 262, -1 }, /* (360) vtabarglist ::= vtabarg */ + { 262, -3 }, /* (361) vtabarglist ::= vtabarglist COMMA vtabarg */ + { 263, -2 }, /* (362) vtabarg ::= vtabarg vtabargtoken */ + { 266, 0 }, /* (363) anylist ::= */ + { 266, -4 }, /* (364) anylist ::= anylist LP anylist RP */ + { 266, -2 }, /* (365) anylist ::= anylist ANY */ + { 232, 0 }, /* (366) with ::= */ }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -143863,7 +148578,7 @@ static YYACTIONTYPE yy_reduce( sqlite3ParserCTX_PDECL /* %extra_context */ ){ int yygoto; /* The next state */ - int yyact; /* The next action */ + YYACTIONTYPE yyact; /* The next action */ yyStackEntry *yymsp; /* The top of the parser's stack */ int yysize; /* Amount to pop the stack */ sqlite3ParserARG_FETCH @@ -143937,15 +148652,15 @@ static YYACTIONTYPE yy_reduce( { sqlite3FinishCoding(pParse); } break; case 3: /* cmd ::= BEGIN transtype trans_opt */ -{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy502);} +{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy70);} break; case 4: /* transtype ::= */ -{yymsp[1].minor.yy502 = TK_DEFERRED;} +{yymsp[1].minor.yy70 = TK_DEFERRED;} break; case 5: /* transtype ::= DEFERRED */ case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6); case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7); -{yymsp[0].minor.yy502 = yymsp[0].major; /*A-overwrites-X*/} +{yymsp[0].minor.yy70 = yymsp[0].major; /*A-overwrites-X*/} break; case 8: /* cmd ::= COMMIT|END trans_opt */ case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9); @@ -143968,7 +148683,7 @@ static YYACTIONTYPE yy_reduce( break; case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */ { - sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy502,0,0,yymsp[-2].minor.yy502); + sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy70,0,0,yymsp[-2].minor.yy70); } break; case 14: /* createkw ::= CREATE */ @@ -143981,34 +148696,34 @@ static YYACTIONTYPE yy_reduce( case 57: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==57); case 67: /* defer_subclause_opt ::= */ yytestcase(yyruleno==67); case 76: /* ifexists ::= */ yytestcase(yyruleno==76); - case 92: /* distinct ::= */ yytestcase(yyruleno==92); - case 224: /* collate ::= */ yytestcase(yyruleno==224); -{yymsp[1].minor.yy502 = 0;} + case 93: /* distinct ::= */ yytestcase(yyruleno==93); + case 226: /* collate ::= */ yytestcase(yyruleno==226); +{yymsp[1].minor.yy70 = 0;} break; case 16: /* ifnotexists ::= IF NOT EXISTS */ -{yymsp[-2].minor.yy502 = 1;} +{yymsp[-2].minor.yy70 = 1;} break; case 17: /* temp ::= TEMP */ case 43: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==43); -{yymsp[0].minor.yy502 = 1;} +{yymsp[0].minor.yy70 = 1;} break; case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_options */ { - sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy502,0); + sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy70,0); } break; case 20: /* create_table_args ::= AS select */ { - sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy399); - sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy399); + sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy489); + sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy489); } break; case 22: /* table_options ::= WITHOUT nm */ { if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){ - yymsp[-1].minor.yy502 = TF_WithoutRowid | TF_NoVisibleRowid; + yymsp[-1].minor.yy70 = TF_WithoutRowid | TF_NoVisibleRowid; }else{ - yymsp[-1].minor.yy502 = 0; + yymsp[-1].minor.yy70 = 0; sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z); } } @@ -144018,7 +148733,7 @@ static YYACTIONTYPE yy_reduce( break; case 24: /* typetoken ::= */ case 60: /* conslist_opt ::= */ yytestcase(yyruleno==60); - case 98: /* as ::= */ yytestcase(yyruleno==98); + case 99: /* as ::= */ yytestcase(yyruleno==99); {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = 0;} break; case 25: /* typetoken ::= typename LP signed RP */ @@ -144037,7 +148752,7 @@ static YYACTIONTYPE yy_reduce( case 28: /* scanpt ::= */ { assert( yyLookahead!=YYNOCODE ); - yymsp[1].minor.yy36 = yyLookaheadToken.z; + yymsp[1].minor.yy392 = yyLookaheadToken.z; } break; case 29: /* ccons ::= CONSTRAINT nm */ @@ -144045,18 +148760,18 @@ static YYACTIONTYPE yy_reduce( {pParse->constraintName = yymsp[0].minor.yy0;} break; case 30: /* ccons ::= DEFAULT scanpt term scanpt */ -{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy182,yymsp[-2].minor.yy36,yymsp[0].minor.yy36);} +{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy18,yymsp[-2].minor.yy392,yymsp[0].minor.yy392);} break; case 31: /* ccons ::= DEFAULT LP expr RP */ -{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy182,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);} +{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy18,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);} break; case 32: /* ccons ::= DEFAULT PLUS term scanpt */ -{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy182,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy36);} +{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy18,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy392);} break; case 33: /* ccons ::= DEFAULT MINUS term scanpt */ { - Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[-1].minor.yy182, 0); - sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy36); + Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[-1].minor.yy18, 0); + sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy392); } break; case 34: /* ccons ::= DEFAULT scanpt ID|INDEXED */ @@ -144066,174 +148781,174 @@ static YYACTIONTYPE yy_reduce( sqlite3ExprIdToTrueFalse(p); testcase( p->op==TK_TRUEFALSE && sqlite3ExprTruthValue(p) ); } - sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n); + sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n); } break; case 35: /* ccons ::= NOT NULL onconf */ -{sqlite3AddNotNull(pParse, yymsp[0].minor.yy502);} +{sqlite3AddNotNull(pParse, yymsp[0].minor.yy70);} break; case 36: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */ -{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy502,yymsp[0].minor.yy502,yymsp[-2].minor.yy502);} +{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy70,yymsp[0].minor.yy70,yymsp[-2].minor.yy70);} break; case 37: /* ccons ::= UNIQUE onconf */ -{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy502,0,0,0,0, +{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy70,0,0,0,0, SQLITE_IDXTYPE_UNIQUE);} break; case 38: /* ccons ::= CHECK LP expr RP */ -{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy182);} +{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy18);} break; case 39: /* ccons ::= REFERENCES nm eidlist_opt refargs */ -{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy232,yymsp[0].minor.yy502);} +{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy420,yymsp[0].minor.yy70);} break; case 40: /* ccons ::= defer_subclause */ -{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy502);} +{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy70);} break; case 41: /* ccons ::= COLLATE ID|STRING */ {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);} break; case 44: /* refargs ::= */ -{ yymsp[1].minor.yy502 = OE_None*0x0101; /* EV: R-19803-45884 */} +{ yymsp[1].minor.yy70 = OE_None*0x0101; /* EV: R-19803-45884 */} break; case 45: /* refargs ::= refargs refarg */ -{ yymsp[-1].minor.yy502 = (yymsp[-1].minor.yy502 & ~yymsp[0].minor.yy107.mask) | yymsp[0].minor.yy107.value; } +{ yymsp[-1].minor.yy70 = (yymsp[-1].minor.yy70 & ~yymsp[0].minor.yy111.mask) | yymsp[0].minor.yy111.value; } break; case 46: /* refarg ::= MATCH nm */ -{ yymsp[-1].minor.yy107.value = 0; yymsp[-1].minor.yy107.mask = 0x000000; } +{ yymsp[-1].minor.yy111.value = 0; yymsp[-1].minor.yy111.mask = 0x000000; } break; case 47: /* refarg ::= ON INSERT refact */ -{ yymsp[-2].minor.yy107.value = 0; yymsp[-2].minor.yy107.mask = 0x000000; } +{ yymsp[-2].minor.yy111.value = 0; yymsp[-2].minor.yy111.mask = 0x000000; } break; case 48: /* refarg ::= ON DELETE refact */ -{ yymsp[-2].minor.yy107.value = yymsp[0].minor.yy502; yymsp[-2].minor.yy107.mask = 0x0000ff; } +{ yymsp[-2].minor.yy111.value = yymsp[0].minor.yy70; yymsp[-2].minor.yy111.mask = 0x0000ff; } break; case 49: /* refarg ::= ON UPDATE refact */ -{ yymsp[-2].minor.yy107.value = yymsp[0].minor.yy502<<8; yymsp[-2].minor.yy107.mask = 0x00ff00; } +{ yymsp[-2].minor.yy111.value = yymsp[0].minor.yy70<<8; yymsp[-2].minor.yy111.mask = 0x00ff00; } break; case 50: /* refact ::= SET NULL */ -{ yymsp[-1].minor.yy502 = OE_SetNull; /* EV: R-33326-45252 */} +{ yymsp[-1].minor.yy70 = OE_SetNull; /* EV: R-33326-45252 */} break; case 51: /* refact ::= SET DEFAULT */ -{ yymsp[-1].minor.yy502 = OE_SetDflt; /* EV: R-33326-45252 */} +{ yymsp[-1].minor.yy70 = OE_SetDflt; /* EV: R-33326-45252 */} break; case 52: /* refact ::= CASCADE */ -{ yymsp[0].minor.yy502 = OE_Cascade; /* EV: R-33326-45252 */} +{ yymsp[0].minor.yy70 = OE_Cascade; /* EV: R-33326-45252 */} break; case 53: /* refact ::= RESTRICT */ -{ yymsp[0].minor.yy502 = OE_Restrict; /* EV: R-33326-45252 */} +{ yymsp[0].minor.yy70 = OE_Restrict; /* EV: R-33326-45252 */} break; case 54: /* refact ::= NO ACTION */ -{ yymsp[-1].minor.yy502 = OE_None; /* EV: R-33326-45252 */} +{ yymsp[-1].minor.yy70 = OE_None; /* EV: R-33326-45252 */} break; case 55: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ -{yymsp[-2].minor.yy502 = 0;} +{yymsp[-2].minor.yy70 = 0;} break; case 56: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ case 71: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==71); - case 155: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==155); -{yymsp[-1].minor.yy502 = yymsp[0].minor.yy502;} + case 156: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==156); +{yymsp[-1].minor.yy70 = yymsp[0].minor.yy70;} break; case 58: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */ case 75: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==75); - case 196: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==196); - case 199: /* in_op ::= NOT IN */ yytestcase(yyruleno==199); - case 225: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==225); -{yymsp[-1].minor.yy502 = 1;} + case 198: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==198); + case 201: /* in_op ::= NOT IN */ yytestcase(yyruleno==201); + case 227: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==227); +{yymsp[-1].minor.yy70 = 1;} break; case 59: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ -{yymsp[-1].minor.yy502 = 0;} +{yymsp[-1].minor.yy70 = 0;} break; case 61: /* tconscomma ::= COMMA */ {pParse->constraintName.n = 0;} break; case 63: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */ -{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy232,yymsp[0].minor.yy502,yymsp[-2].minor.yy502,0);} +{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy420,yymsp[0].minor.yy70,yymsp[-2].minor.yy70,0);} break; case 64: /* tcons ::= UNIQUE LP sortlist RP onconf */ -{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy232,yymsp[0].minor.yy502,0,0,0,0, +{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy420,yymsp[0].minor.yy70,0,0,0,0, SQLITE_IDXTYPE_UNIQUE);} break; case 65: /* tcons ::= CHECK LP expr RP onconf */ -{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy182);} +{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy18);} break; case 66: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */ { - sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy232, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy232, yymsp[-1].minor.yy502); - sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy502); + sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy420, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy420, yymsp[-1].minor.yy70); + sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy70); } break; case 68: /* onconf ::= */ case 70: /* orconf ::= */ yytestcase(yyruleno==70); -{yymsp[1].minor.yy502 = OE_Default;} +{yymsp[1].minor.yy70 = OE_Default;} break; case 69: /* onconf ::= ON CONFLICT resolvetype */ -{yymsp[-2].minor.yy502 = yymsp[0].minor.yy502;} +{yymsp[-2].minor.yy70 = yymsp[0].minor.yy70;} break; case 72: /* resolvetype ::= IGNORE */ -{yymsp[0].minor.yy502 = OE_Ignore;} +{yymsp[0].minor.yy70 = OE_Ignore;} break; case 73: /* resolvetype ::= REPLACE */ - case 156: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==156); -{yymsp[0].minor.yy502 = OE_Replace;} + case 157: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==157); +{yymsp[0].minor.yy70 = OE_Replace;} break; case 74: /* cmd ::= DROP TABLE ifexists fullname */ { - sqlite3DropTable(pParse, yymsp[0].minor.yy427, 0, yymsp[-1].minor.yy502); + sqlite3DropTable(pParse, yymsp[0].minor.yy135, 0, yymsp[-1].minor.yy70); } break; case 77: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ { - sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy232, yymsp[0].minor.yy399, yymsp[-7].minor.yy502, yymsp[-5].minor.yy502); + sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy420, yymsp[0].minor.yy489, yymsp[-7].minor.yy70, yymsp[-5].minor.yy70); } break; case 78: /* cmd ::= DROP VIEW ifexists fullname */ { - sqlite3DropTable(pParse, yymsp[0].minor.yy427, 1, yymsp[-1].minor.yy502); + sqlite3DropTable(pParse, yymsp[0].minor.yy135, 1, yymsp[-1].minor.yy70); } break; case 79: /* cmd ::= select */ { SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0}; - sqlite3Select(pParse, yymsp[0].minor.yy399, &dest); - sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy399); + sqlite3Select(pParse, yymsp[0].minor.yy489, &dest); + sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy489); } break; case 80: /* select ::= WITH wqlist selectnowith */ { - Select *p = yymsp[0].minor.yy399; + Select *p = yymsp[0].minor.yy489; if( p ){ - p->pWith = yymsp[-1].minor.yy91; + p->pWith = yymsp[-1].minor.yy449; parserDoubleLinkSelect(pParse, p); }else{ - sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy91); + sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy449); } - yymsp[-2].minor.yy399 = p; + yymsp[-2].minor.yy489 = p; } break; case 81: /* select ::= WITH RECURSIVE wqlist selectnowith */ { - Select *p = yymsp[0].minor.yy399; + Select *p = yymsp[0].minor.yy489; if( p ){ - p->pWith = yymsp[-1].minor.yy91; + p->pWith = yymsp[-1].minor.yy449; parserDoubleLinkSelect(pParse, p); }else{ - sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy91); + sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy449); } - yymsp[-3].minor.yy399 = p; + yymsp[-3].minor.yy489 = p; } break; case 82: /* select ::= selectnowith */ { - Select *p = yymsp[0].minor.yy399; + Select *p = yymsp[0].minor.yy489; if( p ){ parserDoubleLinkSelect(pParse, p); } - yymsp[0].minor.yy399 = p; /*A-overwrites-X*/ + yymsp[0].minor.yy489 = p; /*A-overwrites-X*/ } break; case 83: /* selectnowith ::= selectnowith multiselect_op oneselect */ { - Select *pRhs = yymsp[0].minor.yy399; - Select *pLhs = yymsp[-2].minor.yy399; + Select *pRhs = yymsp[0].minor.yy489; + Select *pLhs = yymsp[-2].minor.yy489; if( pRhs && pRhs->pPrior ){ SrcList *pFrom; Token x; @@ -144243,378 +148958,382 @@ static YYACTIONTYPE yy_reduce( pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0); } if( pRhs ){ - pRhs->op = (u8)yymsp[-1].minor.yy502; + pRhs->op = (u8)yymsp[-1].minor.yy70; pRhs->pPrior = pLhs; if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue; pRhs->selFlags &= ~SF_MultiValue; - if( yymsp[-1].minor.yy502!=TK_ALL ) pParse->hasCompound = 1; + if( yymsp[-1].minor.yy70!=TK_ALL ) pParse->hasCompound = 1; }else{ sqlite3SelectDelete(pParse->db, pLhs); } - yymsp[-2].minor.yy399 = pRhs; + yymsp[-2].minor.yy489 = pRhs; } break; case 84: /* multiselect_op ::= UNION */ case 86: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==86); -{yymsp[0].minor.yy502 = yymsp[0].major; /*A-overwrites-OP*/} +{yymsp[0].minor.yy70 = yymsp[0].major; /*A-overwrites-OP*/} break; case 85: /* multiselect_op ::= UNION ALL */ -{yymsp[-1].minor.yy502 = TK_ALL;} +{yymsp[-1].minor.yy70 = TK_ALL;} break; case 87: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ { -#if SELECTTRACE_ENABLED - Token s = yymsp[-8].minor.yy0; /*A-overwrites-S*/ -#endif - yymsp[-8].minor.yy399 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy232,yymsp[-5].minor.yy427,yymsp[-4].minor.yy182,yymsp[-3].minor.yy232,yymsp[-2].minor.yy182,yymsp[-1].minor.yy232,yymsp[-7].minor.yy502,yymsp[0].minor.yy182); -#if SELECTTRACE_ENABLED - /* Populate the Select.zSelName[] string that is used to help with - ** query planner debugging, to differentiate between multiple Select - ** objects in a complex query. - ** - ** If the SELECT keyword is immediately followed by a C-style comment - ** then extract the first few alphanumeric characters from within that - ** comment to be the zSelName value. Otherwise, the label is #N where - ** is an integer that is incremented with each SELECT statement seen. - */ - if( yymsp[-8].minor.yy399!=0 ){ - const char *z = s.z+6; - int i; - sqlite3_snprintf(sizeof(yymsp[-8].minor.yy399->zSelName), yymsp[-8].minor.yy399->zSelName,"#%d",++pParse->nSelect); - while( z[0]==' ' ) z++; - if( z[0]=='/' && z[1]=='*' ){ - z += 2; - while( z[0]==' ' ) z++; - for(i=0; sqlite3Isalnum(z[i]); i++){} - sqlite3_snprintf(sizeof(yymsp[-8].minor.yy399->zSelName), yymsp[-8].minor.yy399->zSelName, "%.*s", i, z); - } + yymsp[-8].minor.yy489 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy420,yymsp[-5].minor.yy135,yymsp[-4].minor.yy18,yymsp[-3].minor.yy420,yymsp[-2].minor.yy18,yymsp[-1].minor.yy420,yymsp[-7].minor.yy70,yymsp[0].minor.yy18); +} + break; + case 88: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */ +{ + yymsp[-9].minor.yy489 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy420,yymsp[-6].minor.yy135,yymsp[-5].minor.yy18,yymsp[-4].minor.yy420,yymsp[-3].minor.yy18,yymsp[-1].minor.yy420,yymsp[-8].minor.yy70,yymsp[0].minor.yy18); + if( yymsp[-9].minor.yy489 ){ + yymsp[-9].minor.yy489->pWinDefn = yymsp[-2].minor.yy327; + }else{ + sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy327); } -#endif /* SELECTRACE_ENABLED */ } break; - case 88: /* values ::= VALUES LP nexprlist RP */ + case 89: /* values ::= VALUES LP nexprlist RP */ { - yymsp[-3].minor.yy399 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy232,0,0,0,0,0,SF_Values,0); + yymsp[-3].minor.yy489 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy420,0,0,0,0,0,SF_Values,0); } break; - case 89: /* values ::= values COMMA LP exprlist RP */ + case 90: /* values ::= values COMMA LP nexprlist RP */ { - Select *pRight, *pLeft = yymsp[-4].minor.yy399; - pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy232,0,0,0,0,0,SF_Values|SF_MultiValue,0); + Select *pRight, *pLeft = yymsp[-4].minor.yy489; + pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy420,0,0,0,0,0,SF_Values|SF_MultiValue,0); if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue; if( pRight ){ pRight->op = TK_ALL; pRight->pPrior = pLeft; - yymsp[-4].minor.yy399 = pRight; + yymsp[-4].minor.yy489 = pRight; }else{ - yymsp[-4].minor.yy399 = pLeft; + yymsp[-4].minor.yy489 = pLeft; } } break; - case 90: /* distinct ::= DISTINCT */ -{yymsp[0].minor.yy502 = SF_Distinct;} + case 91: /* distinct ::= DISTINCT */ +{yymsp[0].minor.yy70 = SF_Distinct;} break; - case 91: /* distinct ::= ALL */ -{yymsp[0].minor.yy502 = SF_All;} + case 92: /* distinct ::= ALL */ +{yymsp[0].minor.yy70 = SF_All;} break; - case 93: /* sclp ::= */ - case 126: /* orderby_opt ::= */ yytestcase(yyruleno==126); - case 133: /* groupby_opt ::= */ yytestcase(yyruleno==133); - case 212: /* exprlist ::= */ yytestcase(yyruleno==212); - case 215: /* paren_exprlist ::= */ yytestcase(yyruleno==215); - case 220: /* eidlist_opt ::= */ yytestcase(yyruleno==220); -{yymsp[1].minor.yy232 = 0;} + case 94: /* sclp ::= */ + case 127: /* orderby_opt ::= */ yytestcase(yyruleno==127); + case 134: /* groupby_opt ::= */ yytestcase(yyruleno==134); + case 214: /* exprlist ::= */ yytestcase(yyruleno==214); + case 217: /* paren_exprlist ::= */ yytestcase(yyruleno==217); + case 222: /* eidlist_opt ::= */ yytestcase(yyruleno==222); +{yymsp[1].minor.yy420 = 0;} break; - case 94: /* selcollist ::= sclp scanpt expr scanpt as */ + case 95: /* selcollist ::= sclp scanpt expr scanpt as */ { - yymsp[-4].minor.yy232 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy232, yymsp[-2].minor.yy182); - if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy232, &yymsp[0].minor.yy0, 1); - sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy232,yymsp[-3].minor.yy36,yymsp[-1].minor.yy36); + yymsp[-4].minor.yy420 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy420, yymsp[-2].minor.yy18); + if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy420, &yymsp[0].minor.yy0, 1); + sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy420,yymsp[-3].minor.yy392,yymsp[-1].minor.yy392); } break; - case 95: /* selcollist ::= sclp scanpt STAR */ + case 96: /* selcollist ::= sclp scanpt STAR */ { Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0); - yymsp[-2].minor.yy232 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy232, p); + yymsp[-2].minor.yy420 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy420, p); } break; - case 96: /* selcollist ::= sclp scanpt nm DOT STAR */ + case 97: /* selcollist ::= sclp scanpt nm DOT STAR */ { Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0); Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1); Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight); - yymsp[-4].minor.yy232 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy232, pDot); + yymsp[-4].minor.yy420 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy420, pDot); } break; - case 97: /* as ::= AS nm */ - case 108: /* dbnm ::= DOT nm */ yytestcase(yyruleno==108); - case 234: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==234); - case 235: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==235); + case 98: /* as ::= AS nm */ + case 109: /* dbnm ::= DOT nm */ yytestcase(yyruleno==109); + case 236: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==236); + case 237: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==237); {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;} break; - case 99: /* from ::= */ -{yymsp[1].minor.yy427 = sqlite3DbMallocZero(pParse->db, sizeof(*yymsp[1].minor.yy427));} + case 100: /* from ::= */ +{yymsp[1].minor.yy135 = sqlite3DbMallocZero(pParse->db, sizeof(*yymsp[1].minor.yy135));} break; - case 100: /* from ::= FROM seltablist */ + case 101: /* from ::= FROM seltablist */ { - yymsp[-1].minor.yy427 = yymsp[0].minor.yy427; - sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy427); + yymsp[-1].minor.yy135 = yymsp[0].minor.yy135; + sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy135); } break; - case 101: /* stl_prefix ::= seltablist joinop */ + case 102: /* stl_prefix ::= seltablist joinop */ { - if( ALWAYS(yymsp[-1].minor.yy427 && yymsp[-1].minor.yy427->nSrc>0) ) yymsp[-1].minor.yy427->a[yymsp[-1].minor.yy427->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy502; + if( ALWAYS(yymsp[-1].minor.yy135 && yymsp[-1].minor.yy135->nSrc>0) ) yymsp[-1].minor.yy135->a[yymsp[-1].minor.yy135->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy70; } break; - case 102: /* stl_prefix ::= */ -{yymsp[1].minor.yy427 = 0;} + case 103: /* stl_prefix ::= */ +{yymsp[1].minor.yy135 = 0;} break; - case 103: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */ + case 104: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */ { - yymsp[-6].minor.yy427 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy427,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy182,yymsp[0].minor.yy510); - sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy427, &yymsp[-2].minor.yy0); + yymsp[-6].minor.yy135 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy135,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy18,yymsp[0].minor.yy48); + sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy135, &yymsp[-2].minor.yy0); } break; - case 104: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */ + case 105: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */ { - yymsp[-8].minor.yy427 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy427,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy182,yymsp[0].minor.yy510); - sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy427, yymsp[-4].minor.yy232); + yymsp[-8].minor.yy135 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy135,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy18,yymsp[0].minor.yy48); + sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy135, yymsp[-4].minor.yy420); } break; - case 105: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */ + case 106: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */ { - yymsp[-6].minor.yy427 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy427,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy399,yymsp[-1].minor.yy182,yymsp[0].minor.yy510); + yymsp[-6].minor.yy135 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy135,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy489,yymsp[-1].minor.yy18,yymsp[0].minor.yy48); } break; - case 106: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */ + case 107: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */ { - if( yymsp[-6].minor.yy427==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy182==0 && yymsp[0].minor.yy510==0 ){ - yymsp[-6].minor.yy427 = yymsp[-4].minor.yy427; - }else if( yymsp[-4].minor.yy427->nSrc==1 ){ - yymsp[-6].minor.yy427 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy427,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy182,yymsp[0].minor.yy510); - if( yymsp[-6].minor.yy427 ){ - struct SrcList_item *pNew = &yymsp[-6].minor.yy427->a[yymsp[-6].minor.yy427->nSrc-1]; - struct SrcList_item *pOld = yymsp[-4].minor.yy427->a; + if( yymsp[-6].minor.yy135==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy18==0 && yymsp[0].minor.yy48==0 ){ + yymsp[-6].minor.yy135 = yymsp[-4].minor.yy135; + }else if( yymsp[-4].minor.yy135->nSrc==1 ){ + yymsp[-6].minor.yy135 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy135,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy18,yymsp[0].minor.yy48); + if( yymsp[-6].minor.yy135 ){ + struct SrcList_item *pNew = &yymsp[-6].minor.yy135->a[yymsp[-6].minor.yy135->nSrc-1]; + struct SrcList_item *pOld = yymsp[-4].minor.yy135->a; pNew->zName = pOld->zName; pNew->zDatabase = pOld->zDatabase; pNew->pSelect = pOld->pSelect; pOld->zName = pOld->zDatabase = 0; pOld->pSelect = 0; } - sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy427); + sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy135); }else{ Select *pSubquery; - sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy427); - pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy427,0,0,0,0,SF_NestedFrom,0); - yymsp[-6].minor.yy427 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy427,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy182,yymsp[0].minor.yy510); + sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy135); + pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy135,0,0,0,0,SF_NestedFrom,0); + yymsp[-6].minor.yy135 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy135,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy18,yymsp[0].minor.yy48); } } break; - case 107: /* dbnm ::= */ - case 121: /* indexed_opt ::= */ yytestcase(yyruleno==121); + case 108: /* dbnm ::= */ + case 122: /* indexed_opt ::= */ yytestcase(yyruleno==122); {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;} break; - case 109: /* fullname ::= nm */ - case 111: /* xfullname ::= nm */ yytestcase(yyruleno==111); -{yymsp[0].minor.yy427 = sqlite3SrcListAppend(pParse->db,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/} - break; - case 110: /* fullname ::= nm DOT nm */ - case 112: /* xfullname ::= nm DOT nm */ yytestcase(yyruleno==112); -{yymsp[-2].minor.yy427 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/} - break; - case 113: /* xfullname ::= nm DOT nm AS nm */ + case 110: /* fullname ::= nm */ { - yymsp[-4].minor.yy427 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/ - if( yymsp[-4].minor.yy427 ) yymsp[-4].minor.yy427->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0); + yylhsminor.yy135 = sqlite3SrcListAppend(pParse->db,0,&yymsp[0].minor.yy0,0); + if( IN_RENAME_OBJECT && yylhsminor.yy135 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy135->a[0].zName, &yymsp[0].minor.yy0); +} + yymsp[0].minor.yy135 = yylhsminor.yy135; + break; + case 111: /* fullname ::= nm DOT nm */ +{ + yylhsminor.yy135 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); + if( IN_RENAME_OBJECT && yylhsminor.yy135 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy135->a[0].zName, &yymsp[0].minor.yy0); +} + yymsp[-2].minor.yy135 = yylhsminor.yy135; + break; + case 112: /* xfullname ::= nm */ +{yymsp[0].minor.yy135 = sqlite3SrcListAppend(pParse->db,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/} + break; + case 113: /* xfullname ::= nm DOT nm */ +{yymsp[-2].minor.yy135 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/} + break; + case 114: /* xfullname ::= nm DOT nm AS nm */ +{ + yymsp[-4].minor.yy135 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/ + if( yymsp[-4].minor.yy135 ) yymsp[-4].minor.yy135->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0); } break; - case 114: /* xfullname ::= nm AS nm */ + case 115: /* xfullname ::= nm AS nm */ { - yymsp[-2].minor.yy427 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/ - if( yymsp[-2].minor.yy427 ) yymsp[-2].minor.yy427->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0); + yymsp[-2].minor.yy135 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/ + if( yymsp[-2].minor.yy135 ) yymsp[-2].minor.yy135->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0); } break; - case 115: /* joinop ::= COMMA|JOIN */ -{ yymsp[0].minor.yy502 = JT_INNER; } + case 116: /* joinop ::= COMMA|JOIN */ +{ yymsp[0].minor.yy70 = JT_INNER; } break; - case 116: /* joinop ::= JOIN_KW JOIN */ -{yymsp[-1].minor.yy502 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/} + case 117: /* joinop ::= JOIN_KW JOIN */ +{yymsp[-1].minor.yy70 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/} break; - case 117: /* joinop ::= JOIN_KW nm JOIN */ -{yymsp[-2].minor.yy502 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/} + case 118: /* joinop ::= JOIN_KW nm JOIN */ +{yymsp[-2].minor.yy70 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/} break; - case 118: /* joinop ::= JOIN_KW nm nm JOIN */ -{yymsp[-3].minor.yy502 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/} + case 119: /* joinop ::= JOIN_KW nm nm JOIN */ +{yymsp[-3].minor.yy70 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/} break; - case 119: /* on_opt ::= ON expr */ - case 136: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==136); - case 143: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==143); - case 208: /* case_else ::= ELSE expr */ yytestcase(yyruleno==208); -{yymsp[-1].minor.yy182 = yymsp[0].minor.yy182;} + case 120: /* on_opt ::= ON expr */ + case 137: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==137); + case 144: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==144); + case 210: /* case_else ::= ELSE expr */ yytestcase(yyruleno==210); +{yymsp[-1].minor.yy18 = yymsp[0].minor.yy18;} break; - case 120: /* on_opt ::= */ - case 135: /* having_opt ::= */ yytestcase(yyruleno==135); - case 137: /* limit_opt ::= */ yytestcase(yyruleno==137); - case 142: /* where_opt ::= */ yytestcase(yyruleno==142); - case 209: /* case_else ::= */ yytestcase(yyruleno==209); - case 211: /* case_operand ::= */ yytestcase(yyruleno==211); -{yymsp[1].minor.yy182 = 0;} + case 121: /* on_opt ::= */ + case 136: /* having_opt ::= */ yytestcase(yyruleno==136); + case 138: /* limit_opt ::= */ yytestcase(yyruleno==138); + case 143: /* where_opt ::= */ yytestcase(yyruleno==143); + case 211: /* case_else ::= */ yytestcase(yyruleno==211); + case 213: /* case_operand ::= */ yytestcase(yyruleno==213); +{yymsp[1].minor.yy18 = 0;} break; - case 122: /* indexed_opt ::= INDEXED BY nm */ + case 123: /* indexed_opt ::= INDEXED BY nm */ {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;} break; - case 123: /* indexed_opt ::= NOT INDEXED */ + case 124: /* indexed_opt ::= NOT INDEXED */ {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;} break; - case 124: /* using_opt ::= USING LP idlist RP */ -{yymsp[-3].minor.yy510 = yymsp[-1].minor.yy510;} + case 125: /* using_opt ::= USING LP idlist RP */ +{yymsp[-3].minor.yy48 = yymsp[-1].minor.yy48;} break; - case 125: /* using_opt ::= */ - case 157: /* idlist_opt ::= */ yytestcase(yyruleno==157); -{yymsp[1].minor.yy510 = 0;} + case 126: /* using_opt ::= */ + case 158: /* idlist_opt ::= */ yytestcase(yyruleno==158); +{yymsp[1].minor.yy48 = 0;} break; - case 127: /* orderby_opt ::= ORDER BY sortlist */ - case 134: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==134); -{yymsp[-2].minor.yy232 = yymsp[0].minor.yy232;} + case 128: /* orderby_opt ::= ORDER BY sortlist */ + case 135: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==135); +{yymsp[-2].minor.yy420 = yymsp[0].minor.yy420;} break; - case 128: /* sortlist ::= sortlist COMMA expr sortorder */ + case 129: /* sortlist ::= sortlist COMMA expr sortorder */ { - yymsp[-3].minor.yy232 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy232,yymsp[-1].minor.yy182); - sqlite3ExprListSetSortOrder(yymsp[-3].minor.yy232,yymsp[0].minor.yy502); + yymsp[-3].minor.yy420 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy420,yymsp[-1].minor.yy18); + sqlite3ExprListSetSortOrder(yymsp[-3].minor.yy420,yymsp[0].minor.yy70); } break; - case 129: /* sortlist ::= expr sortorder */ + case 130: /* sortlist ::= expr sortorder */ { - yymsp[-1].minor.yy232 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy182); /*A-overwrites-Y*/ - sqlite3ExprListSetSortOrder(yymsp[-1].minor.yy232,yymsp[0].minor.yy502); + yymsp[-1].minor.yy420 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy18); /*A-overwrites-Y*/ + sqlite3ExprListSetSortOrder(yymsp[-1].minor.yy420,yymsp[0].minor.yy70); } break; - case 130: /* sortorder ::= ASC */ -{yymsp[0].minor.yy502 = SQLITE_SO_ASC;} + case 131: /* sortorder ::= ASC */ +{yymsp[0].minor.yy70 = SQLITE_SO_ASC;} break; - case 131: /* sortorder ::= DESC */ -{yymsp[0].minor.yy502 = SQLITE_SO_DESC;} + case 132: /* sortorder ::= DESC */ +{yymsp[0].minor.yy70 = SQLITE_SO_DESC;} break; - case 132: /* sortorder ::= */ -{yymsp[1].minor.yy502 = SQLITE_SO_UNDEFINED;} + case 133: /* sortorder ::= */ +{yymsp[1].minor.yy70 = SQLITE_SO_UNDEFINED;} break; - case 138: /* limit_opt ::= LIMIT expr */ -{yymsp[-1].minor.yy182 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy182,0);} + case 139: /* limit_opt ::= LIMIT expr */ +{yymsp[-1].minor.yy18 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy18,0);} break; - case 139: /* limit_opt ::= LIMIT expr OFFSET expr */ -{yymsp[-3].minor.yy182 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy182,yymsp[0].minor.yy182);} + case 140: /* limit_opt ::= LIMIT expr OFFSET expr */ +{yymsp[-3].minor.yy18 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy18,yymsp[0].minor.yy18);} break; - case 140: /* limit_opt ::= LIMIT expr COMMA expr */ -{yymsp[-3].minor.yy182 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy182,yymsp[-2].minor.yy182);} + case 141: /* limit_opt ::= LIMIT expr COMMA expr */ +{yymsp[-3].minor.yy18 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy18,yymsp[-2].minor.yy18);} break; - case 141: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt */ + case 142: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt */ { - sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy427, &yymsp[-1].minor.yy0); - sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy427,yymsp[0].minor.yy182,0,0); + sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy135, &yymsp[-1].minor.yy0); + sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy135,yymsp[0].minor.yy18,0,0); } break; - case 144: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */ + case 145: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */ { - sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy427, &yymsp[-3].minor.yy0); - sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy232,"set list"); - sqlite3Update(pParse,yymsp[-4].minor.yy427,yymsp[-1].minor.yy232,yymsp[0].minor.yy182,yymsp[-5].minor.yy502,0,0,0); + sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy135, &yymsp[-3].minor.yy0); + sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy420,"set list"); + sqlite3Update(pParse,yymsp[-4].minor.yy135,yymsp[-1].minor.yy420,yymsp[0].minor.yy18,yymsp[-5].minor.yy70,0,0,0); } break; - case 145: /* setlist ::= setlist COMMA nm EQ expr */ + case 146: /* setlist ::= setlist COMMA nm EQ expr */ { - yymsp[-4].minor.yy232 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy232, yymsp[0].minor.yy182); - sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy232, &yymsp[-2].minor.yy0, 1); + yymsp[-4].minor.yy420 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy420, yymsp[0].minor.yy18); + sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy420, &yymsp[-2].minor.yy0, 1); } break; - case 146: /* setlist ::= setlist COMMA LP idlist RP EQ expr */ + case 147: /* setlist ::= setlist COMMA LP idlist RP EQ expr */ { - yymsp[-6].minor.yy232 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy232, yymsp[-3].minor.yy510, yymsp[0].minor.yy182); + yymsp[-6].minor.yy420 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy420, yymsp[-3].minor.yy48, yymsp[0].minor.yy18); } break; - case 147: /* setlist ::= nm EQ expr */ + case 148: /* setlist ::= nm EQ expr */ { - yylhsminor.yy232 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy182); - sqlite3ExprListSetName(pParse, yylhsminor.yy232, &yymsp[-2].minor.yy0, 1); + yylhsminor.yy420 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy18); + sqlite3ExprListSetName(pParse, yylhsminor.yy420, &yymsp[-2].minor.yy0, 1); } - yymsp[-2].minor.yy232 = yylhsminor.yy232; + yymsp[-2].minor.yy420 = yylhsminor.yy420; break; - case 148: /* setlist ::= LP idlist RP EQ expr */ + case 149: /* setlist ::= LP idlist RP EQ expr */ { - yymsp[-4].minor.yy232 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy510, yymsp[0].minor.yy182); + yymsp[-4].minor.yy420 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy48, yymsp[0].minor.yy18); } break; - case 149: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */ + case 150: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */ { - sqlite3Insert(pParse, yymsp[-3].minor.yy427, yymsp[-1].minor.yy399, yymsp[-2].minor.yy510, yymsp[-5].minor.yy502, yymsp[0].minor.yy198); + sqlite3Insert(pParse, yymsp[-3].minor.yy135, yymsp[-1].minor.yy489, yymsp[-2].minor.yy48, yymsp[-5].minor.yy70, yymsp[0].minor.yy340); } break; - case 150: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */ + case 151: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */ { - sqlite3Insert(pParse, yymsp[-3].minor.yy427, 0, yymsp[-2].minor.yy510, yymsp[-5].minor.yy502, 0); + sqlite3Insert(pParse, yymsp[-3].minor.yy135, 0, yymsp[-2].minor.yy48, yymsp[-5].minor.yy70, 0); } break; - case 151: /* upsert ::= */ -{ yymsp[1].minor.yy198 = 0; } + case 152: /* upsert ::= */ +{ yymsp[1].minor.yy340 = 0; } break; - case 152: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */ -{ yymsp[-10].minor.yy198 = sqlite3UpsertNew(pParse->db,yymsp[-7].minor.yy232,yymsp[-5].minor.yy182,yymsp[-1].minor.yy232,yymsp[0].minor.yy182);} + case 153: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */ +{ yymsp[-10].minor.yy340 = sqlite3UpsertNew(pParse->db,yymsp[-7].minor.yy420,yymsp[-5].minor.yy18,yymsp[-1].minor.yy420,yymsp[0].minor.yy18);} break; - case 153: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */ -{ yymsp[-7].minor.yy198 = sqlite3UpsertNew(pParse->db,yymsp[-4].minor.yy232,yymsp[-2].minor.yy182,0,0); } + case 154: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */ +{ yymsp[-7].minor.yy340 = sqlite3UpsertNew(pParse->db,yymsp[-4].minor.yy420,yymsp[-2].minor.yy18,0,0); } break; - case 154: /* upsert ::= ON CONFLICT DO NOTHING */ -{ yymsp[-3].minor.yy198 = sqlite3UpsertNew(pParse->db,0,0,0,0); } + case 155: /* upsert ::= ON CONFLICT DO NOTHING */ +{ yymsp[-3].minor.yy340 = sqlite3UpsertNew(pParse->db,0,0,0,0); } break; - case 158: /* idlist_opt ::= LP idlist RP */ -{yymsp[-2].minor.yy510 = yymsp[-1].minor.yy510;} + case 159: /* idlist_opt ::= LP idlist RP */ +{yymsp[-2].minor.yy48 = yymsp[-1].minor.yy48;} break; - case 159: /* idlist ::= idlist COMMA nm */ -{yymsp[-2].minor.yy510 = sqlite3IdListAppend(pParse->db,yymsp[-2].minor.yy510,&yymsp[0].minor.yy0);} + case 160: /* idlist ::= idlist COMMA nm */ +{yymsp[-2].minor.yy48 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy48,&yymsp[0].minor.yy0);} break; - case 160: /* idlist ::= nm */ -{yymsp[0].minor.yy510 = sqlite3IdListAppend(pParse->db,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/} + case 161: /* idlist ::= nm */ +{yymsp[0].minor.yy48 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/} break; - case 161: /* expr ::= LP expr RP */ -{yymsp[-2].minor.yy182 = yymsp[-1].minor.yy182;} + case 162: /* expr ::= LP expr RP */ +{yymsp[-2].minor.yy18 = yymsp[-1].minor.yy18;} break; - case 162: /* expr ::= ID|INDEXED */ - case 163: /* expr ::= JOIN_KW */ yytestcase(yyruleno==163); -{yymsp[0].minor.yy182=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/} + case 163: /* expr ::= ID|INDEXED */ + case 164: /* expr ::= JOIN_KW */ yytestcase(yyruleno==164); +{yymsp[0].minor.yy18=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/} break; - case 164: /* expr ::= nm DOT nm */ + case 165: /* expr ::= nm DOT nm */ { Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1); Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1); - yylhsminor.yy182 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2); + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0); + sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0); + } + yylhsminor.yy18 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2); } - yymsp[-2].minor.yy182 = yylhsminor.yy182; + yymsp[-2].minor.yy18 = yylhsminor.yy18; break; - case 165: /* expr ::= nm DOT nm DOT nm */ + case 166: /* expr ::= nm DOT nm DOT nm */ { Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1); Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1); Expr *temp3 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1); Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3); - yylhsminor.yy182 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4); + if( IN_RENAME_OBJECT ){ + sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0); + sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0); + } + yylhsminor.yy18 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4); } - yymsp[-4].minor.yy182 = yylhsminor.yy182; + yymsp[-4].minor.yy18 = yylhsminor.yy18; break; - case 166: /* term ::= NULL|FLOAT|BLOB */ - case 167: /* term ::= STRING */ yytestcase(yyruleno==167); -{yymsp[0].minor.yy182=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/} + case 167: /* term ::= NULL|FLOAT|BLOB */ + case 168: /* term ::= STRING */ yytestcase(yyruleno==168); +{yymsp[0].minor.yy18=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/} break; - case 168: /* term ::= INTEGER */ + case 169: /* term ::= INTEGER */ { - yylhsminor.yy182 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1); + yylhsminor.yy18 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1); } - yymsp[0].minor.yy182 = yylhsminor.yy182; + yymsp[0].minor.yy18 = yylhsminor.yy18; break; - case 169: /* expr ::= VARIABLE */ + case 170: /* expr ::= VARIABLE */ { if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){ u32 n = yymsp[0].minor.yy0.n; - yymsp[0].minor.yy182 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0); - sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy182, n); + yymsp[0].minor.yy18 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0); + sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy18, n); }else{ /* When doing a nested parse, one can include terms in an expression ** that look like this: #1 #2 ... These terms refer to registers @@ -144623,146 +149342,154 @@ static YYACTIONTYPE yy_reduce( assert( t.n>=2 ); if( pParse->nested==0 ){ sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t); - yymsp[0].minor.yy182 = 0; + yymsp[0].minor.yy18 = 0; }else{ - yymsp[0].minor.yy182 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0); - if( yymsp[0].minor.yy182 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy182->iTable); + yymsp[0].minor.yy18 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0); + if( yymsp[0].minor.yy18 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy18->iTable); } } } break; - case 170: /* expr ::= expr COLLATE ID|STRING */ + case 171: /* expr ::= expr COLLATE ID|STRING */ { - yymsp[-2].minor.yy182 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy182, &yymsp[0].minor.yy0, 1); + yymsp[-2].minor.yy18 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy18, &yymsp[0].minor.yy0, 1); } break; - case 171: /* expr ::= CAST LP expr AS typetoken RP */ + case 172: /* expr ::= CAST LP expr AS typetoken RP */ { - yymsp[-5].minor.yy182 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1); - sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy182, yymsp[-3].minor.yy182, 0); + yymsp[-5].minor.yy18 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1); + sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy18, yymsp[-3].minor.yy18, 0); } break; - case 172: /* expr ::= ID|INDEXED LP distinct exprlist RP */ + case 173: /* expr ::= ID|INDEXED LP distinct exprlist RP */ { - if( yymsp[-1].minor.yy232 && yymsp[-1].minor.yy232->nExpr>pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG] ){ - sqlite3ErrorMsg(pParse, "too many arguments on function %T", &yymsp[-4].minor.yy0); - } - yylhsminor.yy182 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy232, &yymsp[-4].minor.yy0); - if( yymsp[-2].minor.yy502==SF_Distinct && yylhsminor.yy182 ){ - yylhsminor.yy182->flags |= EP_Distinct; - } + yylhsminor.yy18 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy420, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy70); } - yymsp[-4].minor.yy182 = yylhsminor.yy182; + yymsp[-4].minor.yy18 = yylhsminor.yy18; break; - case 173: /* expr ::= ID|INDEXED LP STAR RP */ + case 174: /* expr ::= ID|INDEXED LP STAR RP */ { - yylhsminor.yy182 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0); + yylhsminor.yy18 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0); } - yymsp[-3].minor.yy182 = yylhsminor.yy182; + yymsp[-3].minor.yy18 = yylhsminor.yy18; break; - case 174: /* term ::= CTIME_KW */ + case 175: /* expr ::= ID|INDEXED LP distinct exprlist RP over_clause */ { - yylhsminor.yy182 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0); + yylhsminor.yy18 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy420, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy70); + sqlite3WindowAttach(pParse, yylhsminor.yy18, yymsp[0].minor.yy327); } - yymsp[0].minor.yy182 = yylhsminor.yy182; + yymsp[-5].minor.yy18 = yylhsminor.yy18; break; - case 175: /* expr ::= LP nexprlist COMMA expr RP */ + case 176: /* expr ::= ID|INDEXED LP STAR RP over_clause */ { - ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy232, yymsp[-1].minor.yy182); - yymsp[-4].minor.yy182 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0); - if( yymsp[-4].minor.yy182 ){ - yymsp[-4].minor.yy182->x.pList = pList; + yylhsminor.yy18 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0); + sqlite3WindowAttach(pParse, yylhsminor.yy18, yymsp[0].minor.yy327); +} + yymsp[-4].minor.yy18 = yylhsminor.yy18; + break; + case 177: /* term ::= CTIME_KW */ +{ + yylhsminor.yy18 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0); +} + yymsp[0].minor.yy18 = yylhsminor.yy18; + break; + case 178: /* expr ::= LP nexprlist COMMA expr RP */ +{ + ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy420, yymsp[-1].minor.yy18); + yymsp[-4].minor.yy18 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0); + if( yymsp[-4].minor.yy18 ){ + yymsp[-4].minor.yy18->x.pList = pList; }else{ sqlite3ExprListDelete(pParse->db, pList); } } break; - case 176: /* expr ::= expr AND expr */ - case 177: /* expr ::= expr OR expr */ yytestcase(yyruleno==177); - case 178: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==178); - case 179: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==179); - case 180: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==180); - case 181: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==181); - case 182: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==182); - case 183: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==183); -{yymsp[-2].minor.yy182=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy182,yymsp[0].minor.yy182);} + case 179: /* expr ::= expr AND expr */ + case 180: /* expr ::= expr OR expr */ yytestcase(yyruleno==180); + case 181: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==181); + case 182: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==182); + case 183: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==183); + case 184: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==184); + case 185: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==185); + case 186: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==186); +{yymsp[-2].minor.yy18=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy18,yymsp[0].minor.yy18);} break; - case 184: /* likeop ::= NOT LIKE_KW|MATCH */ + case 187: /* likeop ::= NOT LIKE_KW|MATCH */ {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/} break; - case 185: /* expr ::= expr likeop expr */ + case 188: /* expr ::= expr likeop expr */ { ExprList *pList; int bNot = yymsp[-1].minor.yy0.n & 0x80000000; yymsp[-1].minor.yy0.n &= 0x7fffffff; - pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy182); - pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy182); - yymsp[-2].minor.yy182 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0); - if( bNot ) yymsp[-2].minor.yy182 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy182, 0); - if( yymsp[-2].minor.yy182 ) yymsp[-2].minor.yy182->flags |= EP_InfixFunc; + pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy18); + pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy18); + yymsp[-2].minor.yy18 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0); + if( bNot ) yymsp[-2].minor.yy18 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy18, 0); + if( yymsp[-2].minor.yy18 ) yymsp[-2].minor.yy18->flags |= EP_InfixFunc; } break; - case 186: /* expr ::= expr likeop expr ESCAPE expr */ + case 189: /* expr ::= expr likeop expr ESCAPE expr */ { ExprList *pList; int bNot = yymsp[-3].minor.yy0.n & 0x80000000; yymsp[-3].minor.yy0.n &= 0x7fffffff; - pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy182); - pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy182); - pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy182); - yymsp[-4].minor.yy182 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0); - if( bNot ) yymsp[-4].minor.yy182 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy182, 0); - if( yymsp[-4].minor.yy182 ) yymsp[-4].minor.yy182->flags |= EP_InfixFunc; + pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy18); + pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy18); + pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy18); + yymsp[-4].minor.yy18 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0); + if( bNot ) yymsp[-4].minor.yy18 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy18, 0); + if( yymsp[-4].minor.yy18 ) yymsp[-4].minor.yy18->flags |= EP_InfixFunc; } break; - case 187: /* expr ::= expr ISNULL|NOTNULL */ -{yymsp[-1].minor.yy182 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy182,0);} + case 190: /* expr ::= expr ISNULL|NOTNULL */ +{yymsp[-1].minor.yy18 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy18,0);} break; - case 188: /* expr ::= expr NOT NULL */ -{yymsp[-2].minor.yy182 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy182,0);} + case 191: /* expr ::= expr NOT NULL */ +{yymsp[-2].minor.yy18 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy18,0);} break; - case 189: /* expr ::= expr IS expr */ + case 192: /* expr ::= expr IS expr */ { - yymsp[-2].minor.yy182 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy182,yymsp[0].minor.yy182); - binaryToUnaryIfNull(pParse, yymsp[0].minor.yy182, yymsp[-2].minor.yy182, TK_ISNULL); + yymsp[-2].minor.yy18 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy18,yymsp[0].minor.yy18); + binaryToUnaryIfNull(pParse, yymsp[0].minor.yy18, yymsp[-2].minor.yy18, TK_ISNULL); } break; - case 190: /* expr ::= expr IS NOT expr */ + case 193: /* expr ::= expr IS NOT expr */ { - yymsp[-3].minor.yy182 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy182,yymsp[0].minor.yy182); - binaryToUnaryIfNull(pParse, yymsp[0].minor.yy182, yymsp[-3].minor.yy182, TK_NOTNULL); + yymsp[-3].minor.yy18 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy18,yymsp[0].minor.yy18); + binaryToUnaryIfNull(pParse, yymsp[0].minor.yy18, yymsp[-3].minor.yy18, TK_NOTNULL); } break; - case 191: /* expr ::= NOT expr */ - case 192: /* expr ::= BITNOT expr */ yytestcase(yyruleno==192); -{yymsp[-1].minor.yy182 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy182, 0);/*A-overwrites-B*/} + case 194: /* expr ::= NOT expr */ + case 195: /* expr ::= BITNOT expr */ yytestcase(yyruleno==195); +{yymsp[-1].minor.yy18 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy18, 0);/*A-overwrites-B*/} break; - case 193: /* expr ::= MINUS expr */ -{yymsp[-1].minor.yy182 = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy182, 0);} - break; - case 194: /* expr ::= PLUS expr */ -{yymsp[-1].minor.yy182 = sqlite3PExpr(pParse, TK_UPLUS, yymsp[0].minor.yy182, 0);} - break; - case 195: /* between_op ::= BETWEEN */ - case 198: /* in_op ::= IN */ yytestcase(yyruleno==198); -{yymsp[0].minor.yy502 = 0;} - break; - case 197: /* expr ::= expr between_op expr AND expr */ + case 196: /* expr ::= PLUS|MINUS expr */ { - ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy182); - pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy182); - yymsp[-4].minor.yy182 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy182, 0); - if( yymsp[-4].minor.yy182 ){ - yymsp[-4].minor.yy182->x.pList = pList; + yymsp[-1].minor.yy18 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy18, 0); + /*A-overwrites-B*/ +} + break; + case 197: /* between_op ::= BETWEEN */ + case 200: /* in_op ::= IN */ yytestcase(yyruleno==200); +{yymsp[0].minor.yy70 = 0;} + break; + case 199: /* expr ::= expr between_op expr AND expr */ +{ + ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy18); + pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy18); + yymsp[-4].minor.yy18 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy18, 0); + if( yymsp[-4].minor.yy18 ){ + yymsp[-4].minor.yy18->x.pList = pList; }else{ sqlite3ExprListDelete(pParse->db, pList); } - if( yymsp[-3].minor.yy502 ) yymsp[-4].minor.yy182 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy182, 0); + if( yymsp[-3].minor.yy70 ) yymsp[-4].minor.yy18 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy18, 0); } break; - case 200: /* expr ::= expr in_op LP exprlist RP */ + case 202: /* expr ::= expr in_op LP exprlist RP */ { - if( yymsp[-1].minor.yy232==0 ){ + if( yymsp[-1].minor.yy420==0 ){ /* Expressions of the form ** ** expr1 IN () @@ -144771,9 +149498,9 @@ static YYACTIONTYPE yy_reduce( ** simplify to constants 0 (false) and 1 (true), respectively, ** regardless of the value of expr1. */ - sqlite3ExprDelete(pParse->db, yymsp[-4].minor.yy182); - yymsp[-4].minor.yy182 = sqlite3ExprAlloc(pParse->db, TK_INTEGER,&sqlite3IntTokens[yymsp[-3].minor.yy502],1); - }else if( yymsp[-1].minor.yy232->nExpr==1 ){ + sqlite3ExprDelete(pParse->db, yymsp[-4].minor.yy18); + yymsp[-4].minor.yy18 = sqlite3ExprAlloc(pParse->db, TK_INTEGER,&sqlite3IntTokens[yymsp[-3].minor.yy70],1); + }else if( yymsp[-1].minor.yy420->nExpr==1 ){ /* Expressions of the form: ** ** expr1 IN (?1) @@ -144790,195 +149517,199 @@ static YYACTIONTYPE yy_reduce( ** affinity or the collating sequence to use for comparison. Otherwise, ** the semantics would be subtly different from IN or NOT IN. */ - Expr *pRHS = yymsp[-1].minor.yy232->a[0].pExpr; - yymsp[-1].minor.yy232->a[0].pExpr = 0; - sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy232); + Expr *pRHS = yymsp[-1].minor.yy420->a[0].pExpr; + yymsp[-1].minor.yy420->a[0].pExpr = 0; + sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy420); /* pRHS cannot be NULL because a malloc error would have been detected ** before now and control would have never reached this point */ if( ALWAYS(pRHS) ){ pRHS->flags &= ~EP_Collate; pRHS->flags |= EP_Generic; } - yymsp[-4].minor.yy182 = sqlite3PExpr(pParse, yymsp[-3].minor.yy502 ? TK_NE : TK_EQ, yymsp[-4].minor.yy182, pRHS); + yymsp[-4].minor.yy18 = sqlite3PExpr(pParse, yymsp[-3].minor.yy70 ? TK_NE : TK_EQ, yymsp[-4].minor.yy18, pRHS); }else{ - yymsp[-4].minor.yy182 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy182, 0); - if( yymsp[-4].minor.yy182 ){ - yymsp[-4].minor.yy182->x.pList = yymsp[-1].minor.yy232; - sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy182); + yymsp[-4].minor.yy18 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy18, 0); + if( yymsp[-4].minor.yy18 ){ + yymsp[-4].minor.yy18->x.pList = yymsp[-1].minor.yy420; + sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy18); }else{ - sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy232); + sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy420); } - if( yymsp[-3].minor.yy502 ) yymsp[-4].minor.yy182 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy182, 0); + if( yymsp[-3].minor.yy70 ) yymsp[-4].minor.yy18 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy18, 0); } } break; - case 201: /* expr ::= LP select RP */ + case 203: /* expr ::= LP select RP */ { - yymsp[-2].minor.yy182 = sqlite3PExpr(pParse, TK_SELECT, 0, 0); - sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy182, yymsp[-1].minor.yy399); + yymsp[-2].minor.yy18 = sqlite3PExpr(pParse, TK_SELECT, 0, 0); + sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy18, yymsp[-1].minor.yy489); } break; - case 202: /* expr ::= expr in_op LP select RP */ + case 204: /* expr ::= expr in_op LP select RP */ { - yymsp[-4].minor.yy182 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy182, 0); - sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy182, yymsp[-1].minor.yy399); - if( yymsp[-3].minor.yy502 ) yymsp[-4].minor.yy182 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy182, 0); + yymsp[-4].minor.yy18 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy18, 0); + sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy18, yymsp[-1].minor.yy489); + if( yymsp[-3].minor.yy70 ) yymsp[-4].minor.yy18 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy18, 0); } break; - case 203: /* expr ::= expr in_op nm dbnm paren_exprlist */ + case 205: /* expr ::= expr in_op nm dbnm paren_exprlist */ { SrcList *pSrc = sqlite3SrcListAppend(pParse->db, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0); Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0); - if( yymsp[0].minor.yy232 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy232); - yymsp[-4].minor.yy182 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy182, 0); - sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy182, pSelect); - if( yymsp[-3].minor.yy502 ) yymsp[-4].minor.yy182 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy182, 0); + if( yymsp[0].minor.yy420 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy420); + yymsp[-4].minor.yy18 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy18, 0); + sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy18, pSelect); + if( yymsp[-3].minor.yy70 ) yymsp[-4].minor.yy18 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy18, 0); } break; - case 204: /* expr ::= EXISTS LP select RP */ + case 206: /* expr ::= EXISTS LP select RP */ { Expr *p; - p = yymsp[-3].minor.yy182 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0); - sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy399); + p = yymsp[-3].minor.yy18 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0); + sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy489); } break; - case 205: /* expr ::= CASE case_operand case_exprlist case_else END */ + case 207: /* expr ::= CASE case_operand case_exprlist case_else END */ { - yymsp[-4].minor.yy182 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy182, 0); - if( yymsp[-4].minor.yy182 ){ - yymsp[-4].minor.yy182->x.pList = yymsp[-1].minor.yy182 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy232,yymsp[-1].minor.yy182) : yymsp[-2].minor.yy232; - sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy182); + yymsp[-4].minor.yy18 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy18, 0); + if( yymsp[-4].minor.yy18 ){ + yymsp[-4].minor.yy18->x.pList = yymsp[-1].minor.yy18 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy420,yymsp[-1].minor.yy18) : yymsp[-2].minor.yy420; + sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy18); }else{ - sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy232); - sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy182); + sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy420); + sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy18); } } break; - case 206: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ + case 208: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ { - yymsp[-4].minor.yy232 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy232, yymsp[-2].minor.yy182); - yymsp[-4].minor.yy232 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy232, yymsp[0].minor.yy182); + yymsp[-4].minor.yy420 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy420, yymsp[-2].minor.yy18); + yymsp[-4].minor.yy420 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy420, yymsp[0].minor.yy18); } break; - case 207: /* case_exprlist ::= WHEN expr THEN expr */ + case 209: /* case_exprlist ::= WHEN expr THEN expr */ { - yymsp[-3].minor.yy232 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy182); - yymsp[-3].minor.yy232 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy232, yymsp[0].minor.yy182); + yymsp[-3].minor.yy420 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy18); + yymsp[-3].minor.yy420 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy420, yymsp[0].minor.yy18); } break; - case 210: /* case_operand ::= expr */ -{yymsp[0].minor.yy182 = yymsp[0].minor.yy182; /*A-overwrites-X*/} + case 212: /* case_operand ::= expr */ +{yymsp[0].minor.yy18 = yymsp[0].minor.yy18; /*A-overwrites-X*/} break; - case 213: /* nexprlist ::= nexprlist COMMA expr */ -{yymsp[-2].minor.yy232 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy232,yymsp[0].minor.yy182);} + case 215: /* nexprlist ::= nexprlist COMMA expr */ +{yymsp[-2].minor.yy420 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy420,yymsp[0].minor.yy18);} break; - case 214: /* nexprlist ::= expr */ -{yymsp[0].minor.yy232 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy182); /*A-overwrites-Y*/} + case 216: /* nexprlist ::= expr */ +{yymsp[0].minor.yy420 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy18); /*A-overwrites-Y*/} break; - case 216: /* paren_exprlist ::= LP exprlist RP */ - case 221: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==221); -{yymsp[-2].minor.yy232 = yymsp[-1].minor.yy232;} + case 218: /* paren_exprlist ::= LP exprlist RP */ + case 223: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==223); +{yymsp[-2].minor.yy420 = yymsp[-1].minor.yy420;} break; - case 217: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ + case 219: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ { sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, - sqlite3SrcListAppend(pParse->db,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy232, yymsp[-10].minor.yy502, - &yymsp[-11].minor.yy0, yymsp[0].minor.yy182, SQLITE_SO_ASC, yymsp[-8].minor.yy502, SQLITE_IDXTYPE_APPDEF); + sqlite3SrcListAppend(pParse->db,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy420, yymsp[-10].minor.yy70, + &yymsp[-11].minor.yy0, yymsp[0].minor.yy18, SQLITE_SO_ASC, yymsp[-8].minor.yy70, SQLITE_IDXTYPE_APPDEF); + if( IN_RENAME_OBJECT && pParse->pNewIndex ){ + sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0); + } } break; - case 218: /* uniqueflag ::= UNIQUE */ - case 258: /* raisetype ::= ABORT */ yytestcase(yyruleno==258); -{yymsp[0].minor.yy502 = OE_Abort;} + case 220: /* uniqueflag ::= UNIQUE */ + case 260: /* raisetype ::= ABORT */ yytestcase(yyruleno==260); +{yymsp[0].minor.yy70 = OE_Abort;} break; - case 219: /* uniqueflag ::= */ -{yymsp[1].minor.yy502 = OE_None;} + case 221: /* uniqueflag ::= */ +{yymsp[1].minor.yy70 = OE_None;} break; - case 222: /* eidlist ::= eidlist COMMA nm collate sortorder */ + case 224: /* eidlist ::= eidlist COMMA nm collate sortorder */ { - yymsp[-4].minor.yy232 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy232, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy502, yymsp[0].minor.yy502); + yymsp[-4].minor.yy420 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy420, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy70, yymsp[0].minor.yy70); } break; - case 223: /* eidlist ::= nm collate sortorder */ + case 225: /* eidlist ::= nm collate sortorder */ { - yymsp[-2].minor.yy232 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy502, yymsp[0].minor.yy502); /*A-overwrites-Y*/ + yymsp[-2].minor.yy420 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy70, yymsp[0].minor.yy70); /*A-overwrites-Y*/ } break; - case 226: /* cmd ::= DROP INDEX ifexists fullname */ -{sqlite3DropIndex(pParse, yymsp[0].minor.yy427, yymsp[-1].minor.yy502);} + case 228: /* cmd ::= DROP INDEX ifexists fullname */ +{sqlite3DropIndex(pParse, yymsp[0].minor.yy135, yymsp[-1].minor.yy70);} break; - case 227: /* cmd ::= VACUUM */ + case 229: /* cmd ::= VACUUM */ {sqlite3Vacuum(pParse,0);} break; - case 228: /* cmd ::= VACUUM nm */ + case 230: /* cmd ::= VACUUM nm */ {sqlite3Vacuum(pParse,&yymsp[0].minor.yy0);} break; - case 229: /* cmd ::= PRAGMA nm dbnm */ + case 231: /* cmd ::= PRAGMA nm dbnm */ {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);} break; - case 230: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ + case 232: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);} break; - case 231: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ + case 233: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);} break; - case 232: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ + case 234: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);} break; - case 233: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ + case 235: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);} break; - case 236: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ + case 238: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ { Token all; all.z = yymsp[-3].minor.yy0.z; all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n; - sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy47, &all); + sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy207, &all); } break; - case 237: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ + case 239: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ { - sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy502, yymsp[-4].minor.yy300.a, yymsp[-4].minor.yy300.b, yymsp[-2].minor.yy427, yymsp[0].minor.yy182, yymsp[-10].minor.yy502, yymsp[-8].minor.yy502); + sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy70, yymsp[-4].minor.yy34.a, yymsp[-4].minor.yy34.b, yymsp[-2].minor.yy135, yymsp[0].minor.yy18, yymsp[-10].minor.yy70, yymsp[-8].minor.yy70); yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/ } break; - case 238: /* trigger_time ::= BEFORE|AFTER */ -{ yymsp[0].minor.yy502 = yymsp[0].major; /*A-overwrites-X*/ } + case 240: /* trigger_time ::= BEFORE|AFTER */ +{ yymsp[0].minor.yy70 = yymsp[0].major; /*A-overwrites-X*/ } break; - case 239: /* trigger_time ::= INSTEAD OF */ -{ yymsp[-1].minor.yy502 = TK_INSTEAD;} + case 241: /* trigger_time ::= INSTEAD OF */ +{ yymsp[-1].minor.yy70 = TK_INSTEAD;} break; - case 240: /* trigger_time ::= */ -{ yymsp[1].minor.yy502 = TK_BEFORE; } + case 242: /* trigger_time ::= */ +{ yymsp[1].minor.yy70 = TK_BEFORE; } break; - case 241: /* trigger_event ::= DELETE|INSERT */ - case 242: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==242); -{yymsp[0].minor.yy300.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy300.b = 0;} + case 243: /* trigger_event ::= DELETE|INSERT */ + case 244: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==244); +{yymsp[0].minor.yy34.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy34.b = 0;} break; - case 243: /* trigger_event ::= UPDATE OF idlist */ -{yymsp[-2].minor.yy300.a = TK_UPDATE; yymsp[-2].minor.yy300.b = yymsp[0].minor.yy510;} + case 245: /* trigger_event ::= UPDATE OF idlist */ +{yymsp[-2].minor.yy34.a = TK_UPDATE; yymsp[-2].minor.yy34.b = yymsp[0].minor.yy48;} break; - case 244: /* when_clause ::= */ - case 263: /* key_opt ::= */ yytestcase(yyruleno==263); -{ yymsp[1].minor.yy182 = 0; } + case 246: /* when_clause ::= */ + case 265: /* key_opt ::= */ yytestcase(yyruleno==265); + case 307: /* filter_opt ::= */ yytestcase(yyruleno==307); +{ yymsp[1].minor.yy18 = 0; } break; - case 245: /* when_clause ::= WHEN expr */ - case 264: /* key_opt ::= KEY expr */ yytestcase(yyruleno==264); -{ yymsp[-1].minor.yy182 = yymsp[0].minor.yy182; } + case 247: /* when_clause ::= WHEN expr */ + case 266: /* key_opt ::= KEY expr */ yytestcase(yyruleno==266); +{ yymsp[-1].minor.yy18 = yymsp[0].minor.yy18; } break; - case 246: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ + case 248: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ { - assert( yymsp[-2].minor.yy47!=0 ); - yymsp[-2].minor.yy47->pLast->pNext = yymsp[-1].minor.yy47; - yymsp[-2].minor.yy47->pLast = yymsp[-1].minor.yy47; + assert( yymsp[-2].minor.yy207!=0 ); + yymsp[-2].minor.yy207->pLast->pNext = yymsp[-1].minor.yy207; + yymsp[-2].minor.yy207->pLast = yymsp[-1].minor.yy207; } break; - case 247: /* trigger_cmd_list ::= trigger_cmd SEMI */ + case 249: /* trigger_cmd_list ::= trigger_cmd SEMI */ { - assert( yymsp[-1].minor.yy47!=0 ); - yymsp[-1].minor.yy47->pLast = yymsp[-1].minor.yy47; + assert( yymsp[-1].minor.yy207!=0 ); + yymsp[-1].minor.yy207->pLast = yymsp[-1].minor.yy207; } break; - case 248: /* trnm ::= nm DOT nm */ + case 250: /* trnm ::= nm DOT nm */ { yymsp[-2].minor.yy0 = yymsp[0].minor.yy0; sqlite3ErrorMsg(pParse, @@ -144986,196 +149717,306 @@ static YYACTIONTYPE yy_reduce( "statements within triggers"); } break; - case 249: /* tridxby ::= INDEXED BY nm */ + case 251: /* tridxby ::= INDEXED BY nm */ { sqlite3ErrorMsg(pParse, "the INDEXED BY clause is not allowed on UPDATE or DELETE statements " "within triggers"); } break; - case 250: /* tridxby ::= NOT INDEXED */ + case 252: /* tridxby ::= NOT INDEXED */ { sqlite3ErrorMsg(pParse, "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements " "within triggers"); } break; - case 251: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */ -{yylhsminor.yy47 = sqlite3TriggerUpdateStep(pParse->db, &yymsp[-5].minor.yy0, yymsp[-2].minor.yy232, yymsp[-1].minor.yy182, yymsp[-6].minor.yy502, yymsp[-7].minor.yy0.z, yymsp[0].minor.yy36);} - yymsp[-7].minor.yy47 = yylhsminor.yy47; + case 253: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */ +{yylhsminor.yy207 = sqlite3TriggerUpdateStep(pParse, &yymsp[-5].minor.yy0, yymsp[-2].minor.yy420, yymsp[-1].minor.yy18, yymsp[-6].minor.yy70, yymsp[-7].minor.yy0.z, yymsp[0].minor.yy392);} + yymsp[-7].minor.yy207 = yylhsminor.yy207; break; - case 252: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ + case 254: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ { - yylhsminor.yy47 = sqlite3TriggerInsertStep(pParse->db,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy510,yymsp[-2].minor.yy399,yymsp[-6].minor.yy502,yymsp[-1].minor.yy198,yymsp[-7].minor.yy36,yymsp[0].minor.yy36);/*yylhsminor.yy47-overwrites-yymsp[-6].minor.yy502*/ + yylhsminor.yy207 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy48,yymsp[-2].minor.yy489,yymsp[-6].minor.yy70,yymsp[-1].minor.yy340,yymsp[-7].minor.yy392,yymsp[0].minor.yy392);/*yylhsminor.yy207-overwrites-yymsp[-6].minor.yy70*/ } - yymsp[-7].minor.yy47 = yylhsminor.yy47; + yymsp[-7].minor.yy207 = yylhsminor.yy207; break; - case 253: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ -{yylhsminor.yy47 = sqlite3TriggerDeleteStep(pParse->db, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy182, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy36);} - yymsp[-5].minor.yy47 = yylhsminor.yy47; + case 255: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ +{yylhsminor.yy207 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy18, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy392);} + yymsp[-5].minor.yy207 = yylhsminor.yy207; break; - case 254: /* trigger_cmd ::= scanpt select scanpt */ -{yylhsminor.yy47 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy399, yymsp[-2].minor.yy36, yymsp[0].minor.yy36); /*yylhsminor.yy47-overwrites-yymsp[-1].minor.yy399*/} - yymsp[-2].minor.yy47 = yylhsminor.yy47; + case 256: /* trigger_cmd ::= scanpt select scanpt */ +{yylhsminor.yy207 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy489, yymsp[-2].minor.yy392, yymsp[0].minor.yy392); /*yylhsminor.yy207-overwrites-yymsp[-1].minor.yy489*/} + yymsp[-2].minor.yy207 = yylhsminor.yy207; break; - case 255: /* expr ::= RAISE LP IGNORE RP */ + case 257: /* expr ::= RAISE LP IGNORE RP */ { - yymsp[-3].minor.yy182 = sqlite3PExpr(pParse, TK_RAISE, 0, 0); - if( yymsp[-3].minor.yy182 ){ - yymsp[-3].minor.yy182->affinity = OE_Ignore; + yymsp[-3].minor.yy18 = sqlite3PExpr(pParse, TK_RAISE, 0, 0); + if( yymsp[-3].minor.yy18 ){ + yymsp[-3].minor.yy18->affinity = OE_Ignore; } } break; - case 256: /* expr ::= RAISE LP raisetype COMMA nm RP */ + case 258: /* expr ::= RAISE LP raisetype COMMA nm RP */ { - yymsp[-5].minor.yy182 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1); - if( yymsp[-5].minor.yy182 ) { - yymsp[-5].minor.yy182->affinity = (char)yymsp[-3].minor.yy502; + yymsp[-5].minor.yy18 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1); + if( yymsp[-5].minor.yy18 ) { + yymsp[-5].minor.yy18->affinity = (char)yymsp[-3].minor.yy70; } } break; - case 257: /* raisetype ::= ROLLBACK */ -{yymsp[0].minor.yy502 = OE_Rollback;} + case 259: /* raisetype ::= ROLLBACK */ +{yymsp[0].minor.yy70 = OE_Rollback;} break; - case 259: /* raisetype ::= FAIL */ -{yymsp[0].minor.yy502 = OE_Fail;} + case 261: /* raisetype ::= FAIL */ +{yymsp[0].minor.yy70 = OE_Fail;} break; - case 260: /* cmd ::= DROP TRIGGER ifexists fullname */ + case 262: /* cmd ::= DROP TRIGGER ifexists fullname */ { - sqlite3DropTrigger(pParse,yymsp[0].minor.yy427,yymsp[-1].minor.yy502); + sqlite3DropTrigger(pParse,yymsp[0].minor.yy135,yymsp[-1].minor.yy70); } break; - case 261: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ + case 263: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ { - sqlite3Attach(pParse, yymsp[-3].minor.yy182, yymsp[-1].minor.yy182, yymsp[0].minor.yy182); + sqlite3Attach(pParse, yymsp[-3].minor.yy18, yymsp[-1].minor.yy18, yymsp[0].minor.yy18); } break; - case 262: /* cmd ::= DETACH database_kw_opt expr */ + case 264: /* cmd ::= DETACH database_kw_opt expr */ { - sqlite3Detach(pParse, yymsp[0].minor.yy182); + sqlite3Detach(pParse, yymsp[0].minor.yy18); } break; - case 265: /* cmd ::= REINDEX */ + case 267: /* cmd ::= REINDEX */ {sqlite3Reindex(pParse, 0, 0);} break; - case 266: /* cmd ::= REINDEX nm dbnm */ + case 268: /* cmd ::= REINDEX nm dbnm */ {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} break; - case 267: /* cmd ::= ANALYZE */ + case 269: /* cmd ::= ANALYZE */ {sqlite3Analyze(pParse, 0, 0);} break; - case 268: /* cmd ::= ANALYZE nm dbnm */ + case 270: /* cmd ::= ANALYZE nm dbnm */ {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} break; - case 269: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ + case 271: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ { - sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy427,&yymsp[0].minor.yy0); + sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy135,&yymsp[0].minor.yy0); } break; - case 270: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ + case 272: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ { yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n; sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0); } break; - case 271: /* add_column_fullname ::= fullname */ + case 273: /* add_column_fullname ::= fullname */ { disableLookaside(pParse); - sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy427); + sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy135); } break; - case 272: /* cmd ::= create_vtab */ + case 274: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */ +{ + sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy135, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); +} + break; + case 275: /* cmd ::= create_vtab */ {sqlite3VtabFinishParse(pParse,0);} break; - case 273: /* cmd ::= create_vtab LP vtabarglist RP */ + case 276: /* cmd ::= create_vtab LP vtabarglist RP */ {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);} break; - case 274: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ + case 277: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ { - sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy502); + sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy70); } break; - case 275: /* vtabarg ::= */ + case 278: /* vtabarg ::= */ {sqlite3VtabArgInit(pParse);} break; - case 276: /* vtabargtoken ::= ANY */ - case 277: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==277); - case 278: /* lp ::= LP */ yytestcase(yyruleno==278); + case 279: /* vtabargtoken ::= ANY */ + case 280: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==280); + case 281: /* lp ::= LP */ yytestcase(yyruleno==281); {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);} break; - case 279: /* with ::= WITH wqlist */ - case 280: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==280); -{ sqlite3WithPush(pParse, yymsp[0].minor.yy91, 1); } + case 282: /* with ::= WITH wqlist */ + case 283: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==283); +{ sqlite3WithPush(pParse, yymsp[0].minor.yy449, 1); } break; - case 281: /* wqlist ::= nm eidlist_opt AS LP select RP */ + case 284: /* wqlist ::= nm eidlist_opt AS LP select RP */ { - yymsp[-5].minor.yy91 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy232, yymsp[-1].minor.yy399); /*A-overwrites-X*/ + yymsp[-5].minor.yy449 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy420, yymsp[-1].minor.yy489); /*A-overwrites-X*/ } break; - case 282: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */ + case 285: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */ { - yymsp[-7].minor.yy91 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy91, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy232, yymsp[-1].minor.yy399); + yymsp[-7].minor.yy449 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy449, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy420, yymsp[-1].minor.yy489); } break; + case 286: /* windowdefn_list ::= windowdefn */ +{ yylhsminor.yy327 = yymsp[0].minor.yy327; } + yymsp[0].minor.yy327 = yylhsminor.yy327; + break; + case 287: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */ +{ + assert( yymsp[0].minor.yy327!=0 ); + yymsp[0].minor.yy327->pNextWin = yymsp[-2].minor.yy327; + yylhsminor.yy327 = yymsp[0].minor.yy327; +} + yymsp[-2].minor.yy327 = yylhsminor.yy327; + break; + case 288: /* windowdefn ::= nm AS window */ +{ + if( ALWAYS(yymsp[0].minor.yy327) ){ + yymsp[0].minor.yy327->zName = sqlite3DbStrNDup(pParse->db, yymsp[-2].minor.yy0.z, yymsp[-2].minor.yy0.n); + } + yylhsminor.yy327 = yymsp[0].minor.yy327; +} + yymsp[-2].minor.yy327 = yylhsminor.yy327; + break; + case 289: /* window ::= LP part_opt orderby_opt frame_opt RP */ +{ + yymsp[-4].minor.yy327 = yymsp[-1].minor.yy327; + if( ALWAYS(yymsp[-4].minor.yy327) ){ + yymsp[-4].minor.yy327->pPartition = yymsp[-3].minor.yy420; + yymsp[-4].minor.yy327->pOrderBy = yymsp[-2].minor.yy420; + } +} + break; + case 290: /* part_opt ::= PARTITION BY nexprlist */ +{ yymsp[-2].minor.yy420 = yymsp[0].minor.yy420; } + break; + case 291: /* part_opt ::= */ +{ yymsp[1].minor.yy420 = 0; } + break; + case 292: /* frame_opt ::= */ +{ + yymsp[1].minor.yy327 = sqlite3WindowAlloc(pParse, TK_RANGE, TK_UNBOUNDED, 0, TK_CURRENT, 0); +} + break; + case 293: /* frame_opt ::= range_or_rows frame_bound_s */ +{ + yylhsminor.yy327 = sqlite3WindowAlloc(pParse, yymsp[-1].minor.yy70, yymsp[0].minor.yy119.eType, yymsp[0].minor.yy119.pExpr, TK_CURRENT, 0); +} + yymsp[-1].minor.yy327 = yylhsminor.yy327; + break; + case 294: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e */ +{ + yylhsminor.yy327 = sqlite3WindowAlloc(pParse, yymsp[-4].minor.yy70, yymsp[-2].minor.yy119.eType, yymsp[-2].minor.yy119.pExpr, yymsp[0].minor.yy119.eType, yymsp[0].minor.yy119.pExpr); +} + yymsp[-4].minor.yy327 = yylhsminor.yy327; + break; + case 295: /* range_or_rows ::= RANGE */ +{ yymsp[0].minor.yy70 = TK_RANGE; } + break; + case 296: /* range_or_rows ::= ROWS */ +{ yymsp[0].minor.yy70 = TK_ROWS; } + break; + case 297: /* frame_bound_s ::= frame_bound */ + case 299: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==299); +{ yylhsminor.yy119 = yymsp[0].minor.yy119; } + yymsp[0].minor.yy119 = yylhsminor.yy119; + break; + case 298: /* frame_bound_s ::= UNBOUNDED PRECEDING */ + case 300: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==300); +{yymsp[-1].minor.yy119.eType = TK_UNBOUNDED; yymsp[-1].minor.yy119.pExpr = 0;} + break; + case 301: /* frame_bound ::= expr PRECEDING */ +{ yylhsminor.yy119.eType = TK_PRECEDING; yylhsminor.yy119.pExpr = yymsp[-1].minor.yy18; } + yymsp[-1].minor.yy119 = yylhsminor.yy119; + break; + case 302: /* frame_bound ::= CURRENT ROW */ +{ yymsp[-1].minor.yy119.eType = TK_CURRENT ; yymsp[-1].minor.yy119.pExpr = 0; } + break; + case 303: /* frame_bound ::= expr FOLLOWING */ +{ yylhsminor.yy119.eType = TK_FOLLOWING; yylhsminor.yy119.pExpr = yymsp[-1].minor.yy18; } + yymsp[-1].minor.yy119 = yylhsminor.yy119; + break; + case 304: /* window_clause ::= WINDOW windowdefn_list */ +{ yymsp[-1].minor.yy327 = yymsp[0].minor.yy327; } + break; + case 305: /* over_clause ::= filter_opt OVER window */ +{ + yylhsminor.yy327 = yymsp[0].minor.yy327; + assert( yylhsminor.yy327!=0 ); + yylhsminor.yy327->pFilter = yymsp[-2].minor.yy18; +} + yymsp[-2].minor.yy327 = yylhsminor.yy327; + break; + case 306: /* over_clause ::= filter_opt OVER nm */ +{ + yylhsminor.yy327 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window)); + if( yylhsminor.yy327 ){ + yylhsminor.yy327->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n); + yylhsminor.yy327->pFilter = yymsp[-2].minor.yy18; + }else{ + sqlite3ExprDelete(pParse->db, yymsp[-2].minor.yy18); + } +} + yymsp[-2].minor.yy327 = yylhsminor.yy327; + break; + case 308: /* filter_opt ::= FILTER LP WHERE expr RP */ +{ yymsp[-4].minor.yy18 = yymsp[-1].minor.yy18; } + break; default: - /* (283) input ::= cmdlist */ yytestcase(yyruleno==283); - /* (284) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==284); - /* (285) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=285); - /* (286) ecmd ::= SEMI */ yytestcase(yyruleno==286); - /* (287) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==287); - /* (288) ecmd ::= explain cmdx */ yytestcase(yyruleno==288); - /* (289) trans_opt ::= */ yytestcase(yyruleno==289); - /* (290) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==290); - /* (291) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==291); - /* (292) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==292); - /* (293) savepoint_opt ::= */ yytestcase(yyruleno==293); - /* (294) cmd ::= create_table create_table_args */ yytestcase(yyruleno==294); - /* (295) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==295); - /* (296) columnlist ::= columnname carglist */ yytestcase(yyruleno==296); - /* (297) nm ::= ID|INDEXED */ yytestcase(yyruleno==297); - /* (298) nm ::= STRING */ yytestcase(yyruleno==298); - /* (299) nm ::= JOIN_KW */ yytestcase(yyruleno==299); - /* (300) typetoken ::= typename */ yytestcase(yyruleno==300); - /* (301) typename ::= ID|STRING */ yytestcase(yyruleno==301); - /* (302) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=302); - /* (303) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=303); - /* (304) carglist ::= carglist ccons */ yytestcase(yyruleno==304); - /* (305) carglist ::= */ yytestcase(yyruleno==305); - /* (306) ccons ::= NULL onconf */ yytestcase(yyruleno==306); - /* (307) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==307); - /* (308) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==308); - /* (309) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=309); - /* (310) tconscomma ::= */ yytestcase(yyruleno==310); - /* (311) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=311); - /* (312) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=312); - /* (313) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=313); - /* (314) oneselect ::= values */ yytestcase(yyruleno==314); - /* (315) sclp ::= selcollist COMMA */ yytestcase(yyruleno==315); - /* (316) as ::= ID|STRING */ yytestcase(yyruleno==316); - /* (317) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=317); - /* (318) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==318); - /* (319) exprlist ::= nexprlist */ yytestcase(yyruleno==319); - /* (320) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=320); - /* (321) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=321); - /* (322) nmnum ::= ON */ yytestcase(yyruleno==322); - /* (323) nmnum ::= DELETE */ yytestcase(yyruleno==323); - /* (324) nmnum ::= DEFAULT */ yytestcase(yyruleno==324); - /* (325) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==325); - /* (326) foreach_clause ::= */ yytestcase(yyruleno==326); - /* (327) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==327); - /* (328) trnm ::= nm */ yytestcase(yyruleno==328); - /* (329) tridxby ::= */ yytestcase(yyruleno==329); - /* (330) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==330); - /* (331) database_kw_opt ::= */ yytestcase(yyruleno==331); - /* (332) kwcolumn_opt ::= */ yytestcase(yyruleno==332); - /* (333) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==333); - /* (334) vtabarglist ::= vtabarg */ yytestcase(yyruleno==334); - /* (335) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==335); - /* (336) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==336); - /* (337) anylist ::= */ yytestcase(yyruleno==337); - /* (338) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==338); - /* (339) anylist ::= anylist ANY */ yytestcase(yyruleno==339); - /* (340) with ::= */ yytestcase(yyruleno==340); + /* (309) input ::= cmdlist */ yytestcase(yyruleno==309); + /* (310) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==310); + /* (311) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=311); + /* (312) ecmd ::= SEMI */ yytestcase(yyruleno==312); + /* (313) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==313); + /* (314) ecmd ::= explain cmdx */ yytestcase(yyruleno==314); + /* (315) trans_opt ::= */ yytestcase(yyruleno==315); + /* (316) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==316); + /* (317) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==317); + /* (318) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==318); + /* (319) savepoint_opt ::= */ yytestcase(yyruleno==319); + /* (320) cmd ::= create_table create_table_args */ yytestcase(yyruleno==320); + /* (321) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==321); + /* (322) columnlist ::= columnname carglist */ yytestcase(yyruleno==322); + /* (323) nm ::= ID|INDEXED */ yytestcase(yyruleno==323); + /* (324) nm ::= STRING */ yytestcase(yyruleno==324); + /* (325) nm ::= JOIN_KW */ yytestcase(yyruleno==325); + /* (326) typetoken ::= typename */ yytestcase(yyruleno==326); + /* (327) typename ::= ID|STRING */ yytestcase(yyruleno==327); + /* (328) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=328); + /* (329) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=329); + /* (330) carglist ::= carglist ccons */ yytestcase(yyruleno==330); + /* (331) carglist ::= */ yytestcase(yyruleno==331); + /* (332) ccons ::= NULL onconf */ yytestcase(yyruleno==332); + /* (333) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==333); + /* (334) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==334); + /* (335) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=335); + /* (336) tconscomma ::= */ yytestcase(yyruleno==336); + /* (337) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=337); + /* (338) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=338); + /* (339) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=339); + /* (340) oneselect ::= values */ yytestcase(yyruleno==340); + /* (341) sclp ::= selcollist COMMA */ yytestcase(yyruleno==341); + /* (342) as ::= ID|STRING */ yytestcase(yyruleno==342); + /* (343) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=343); + /* (344) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==344); + /* (345) exprlist ::= nexprlist */ yytestcase(yyruleno==345); + /* (346) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=346); + /* (347) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=347); + /* (348) nmnum ::= ON */ yytestcase(yyruleno==348); + /* (349) nmnum ::= DELETE */ yytestcase(yyruleno==349); + /* (350) nmnum ::= DEFAULT */ yytestcase(yyruleno==350); + /* (351) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==351); + /* (352) foreach_clause ::= */ yytestcase(yyruleno==352); + /* (353) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==353); + /* (354) trnm ::= nm */ yytestcase(yyruleno==354); + /* (355) tridxby ::= */ yytestcase(yyruleno==355); + /* (356) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==356); + /* (357) database_kw_opt ::= */ yytestcase(yyruleno==357); + /* (358) kwcolumn_opt ::= */ yytestcase(yyruleno==358); + /* (359) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==359); + /* (360) vtabarglist ::= vtabarg */ yytestcase(yyruleno==360); + /* (361) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==361); + /* (362) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==362); + /* (363) anylist ::= */ yytestcase(yyruleno==363); + /* (364) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==364); + /* (365) anylist ::= anylist ANY */ yytestcase(yyruleno==365); + /* (366) with ::= */ yytestcase(yyruleno==366); break; /********** End reduce actions ************************************************/ }; @@ -145329,12 +150170,12 @@ SQLITE_PRIVATE void sqlite3Parser( do{ assert( yyact==yypParser->yytos->stateno ); - yyact = yy_find_shift_action(yymajor,yyact); + yyact = yy_find_shift_action((YYCODETYPE)yymajor,yyact); if( yyact >= YY_MIN_REDUCE ){ yyact = yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor, yyminor sqlite3ParserCTX_PARAM); }else if( yyact <= YY_MAX_SHIFTREDUCE ){ - yy_shift(yypParser,yyact,yymajor,yyminor); + yy_shift(yypParser,yyact,(YYCODETYPE)yymajor,yyminor); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt--; #endif @@ -145462,6 +150303,21 @@ SQLITE_PRIVATE void sqlite3Parser( return; } +/* +** Return the fallback token corresponding to canonical token iToken, or +** 0 if iToken has no fallback. +*/ +SQLITE_PRIVATE int sqlite3ParserFallback(int iToken){ +#ifdef YYFALLBACK + if( iToken<(int)(sizeof(yyFallback)/sizeof(yyFallback[0])) ){ + return yyFallback[iToken]; + } +#else + (void)iToken; +#endif + return 0; +} + /************** End of parse.c ***********************************************/ /************** Begin file tokenize.c ****************************************/ /* @@ -145520,11 +150376,12 @@ SQLITE_PRIVATE void sqlite3Parser( #define CC_TILDA 25 /* '~' */ #define CC_DOT 26 /* '.' */ #define CC_ILLEGAL 27 /* Illegal character */ +#define CC_NUL 28 /* 0x00 */ static const unsigned char aiClass[] = { #ifdef SQLITE_ASCII /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xa xb xc xd xe xf */ -/* 0x */ 27, 27, 27, 27, 27, 27, 27, 27, 27, 7, 7, 27, 7, 7, 27, 27, +/* 0x */ 28, 27, 27, 27, 27, 27, 27, 27, 27, 7, 7, 27, 7, 7, 27, 27, /* 1x */ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, /* 2x */ 7, 15, 8, 5, 4, 22, 24, 8, 17, 18, 21, 20, 23, 11, 26, 16, /* 3x */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 19, 12, 14, 13, 6, @@ -145623,19 +150480,20 @@ const unsigned char ebcdicToAscii[] = { ** is substantially reduced. This is important for embedded applications ** on platforms with limited memory. */ -/* Hash score: 185 */ -/* zKWText[] encodes 845 bytes of keyword text in 561 bytes */ +/* Hash score: 208 */ +/* zKWText[] encodes 923 bytes of keyword text in 614 bytes */ /* REINDEXEDESCAPEACHECKEYBEFOREIGNOREGEXPLAINSTEADDATABASELECT */ /* ABLEFTHENDEFERRABLELSEXCEPTRANSACTIONATURALTERAISEXCLUSIVE */ /* XISTSAVEPOINTERSECTRIGGEREFERENCESCONSTRAINTOFFSETEMPORARY */ -/* UNIQUERYWITHOUTERELEASEATTACHAVINGROUPDATEBEGINNERECURSIVE */ -/* BETWEENOTHINGLOBYCASCADELETECASECOLLATECREATECURRENT_DATE */ -/* DETACHIMMEDIATEJOINSERTLIKEMATCHPLANALYZEPRAGMABORTVALUES */ -/* VIRTUALIMITWHENOTNULLWHERENAMEAFTEREPLACEANDEFAULT */ -/* AUTOINCREMENTCASTCOLUMNCOMMITCONFLICTCROSSCURRENT_TIMESTAMP */ -/* RIMARYDEFERREDISTINCTDORDERESTRICTDROPFAILFROMFULLIFISNULL */ -/* RIGHTROLLBACKROWUNIONUSINGVACUUMVIEWINITIALLY */ -static const char zKWText[560] = { +/* UNIQUERYWITHOUTERELEASEATTACHAVINGROUPDATEBEGINNERANGEBETWEEN */ +/* OTHINGLOBYCASCADELETECASECOLLATECREATECURRENT_DATEDETACH */ +/* IMMEDIATEJOINSERTLIKEMATCHPLANALYZEPRAGMABORTVALUESVIRTUALIMIT */ +/* WHENOTNULLWHERECURSIVEAFTERENAMEANDEFAULTAUTOINCREMENTCAST */ +/* COLUMNCOMMITCONFLICTCROSSCURRENT_TIMESTAMPARTITIONDEFERRED */ +/* ISTINCTDROPRECEDINGFAILFILTEREPLACEFOLLOWINGFROMFULLIFISNULL */ +/* ORDERESTRICTOVERIGHTROLLBACKROWSUNBOUNDEDUNIONUSINGVACUUMVIEW */ +/* INDOWINITIALLYPRIMARY */ +static const char zKWText[613] = { 'R','E','I','N','D','E','X','E','D','E','S','C','A','P','E','A','C','H', 'E','C','K','E','Y','B','E','F','O','R','E','I','G','N','O','R','E','G', 'E','X','P','L','A','I','N','S','T','E','A','D','D','A','T','A','B','A', @@ -145648,84 +150506,90 @@ static const char zKWText[560] = { 'O','F','F','S','E','T','E','M','P','O','R','A','R','Y','U','N','I','Q', 'U','E','R','Y','W','I','T','H','O','U','T','E','R','E','L','E','A','S', 'E','A','T','T','A','C','H','A','V','I','N','G','R','O','U','P','D','A', - 'T','E','B','E','G','I','N','N','E','R','E','C','U','R','S','I','V','E', - 'B','E','T','W','E','E','N','O','T','H','I','N','G','L','O','B','Y','C', - 'A','S','C','A','D','E','L','E','T','E','C','A','S','E','C','O','L','L', - 'A','T','E','C','R','E','A','T','E','C','U','R','R','E','N','T','_','D', - 'A','T','E','D','E','T','A','C','H','I','M','M','E','D','I','A','T','E', - 'J','O','I','N','S','E','R','T','L','I','K','E','M','A','T','C','H','P', - 'L','A','N','A','L','Y','Z','E','P','R','A','G','M','A','B','O','R','T', - 'V','A','L','U','E','S','V','I','R','T','U','A','L','I','M','I','T','W', - 'H','E','N','O','T','N','U','L','L','W','H','E','R','E','N','A','M','E', - 'A','F','T','E','R','E','P','L','A','C','E','A','N','D','E','F','A','U', - 'L','T','A','U','T','O','I','N','C','R','E','M','E','N','T','C','A','S', - 'T','C','O','L','U','M','N','C','O','M','M','I','T','C','O','N','F','L', - 'I','C','T','C','R','O','S','S','C','U','R','R','E','N','T','_','T','I', - 'M','E','S','T','A','M','P','R','I','M','A','R','Y','D','E','F','E','R', - 'R','E','D','I','S','T','I','N','C','T','D','O','R','D','E','R','E','S', - 'T','R','I','C','T','D','R','O','P','F','A','I','L','F','R','O','M','F', - 'U','L','L','I','F','I','S','N','U','L','L','R','I','G','H','T','R','O', - 'L','L','B','A','C','K','R','O','W','U','N','I','O','N','U','S','I','N', - 'G','V','A','C','U','U','M','V','I','E','W','I','N','I','T','I','A','L', - 'L','Y', + 'T','E','B','E','G','I','N','N','E','R','A','N','G','E','B','E','T','W', + 'E','E','N','O','T','H','I','N','G','L','O','B','Y','C','A','S','C','A', + 'D','E','L','E','T','E','C','A','S','E','C','O','L','L','A','T','E','C', + 'R','E','A','T','E','C','U','R','R','E','N','T','_','D','A','T','E','D', + 'E','T','A','C','H','I','M','M','E','D','I','A','T','E','J','O','I','N', + 'S','E','R','T','L','I','K','E','M','A','T','C','H','P','L','A','N','A', + 'L','Y','Z','E','P','R','A','G','M','A','B','O','R','T','V','A','L','U', + 'E','S','V','I','R','T','U','A','L','I','M','I','T','W','H','E','N','O', + 'T','N','U','L','L','W','H','E','R','E','C','U','R','S','I','V','E','A', + 'F','T','E','R','E','N','A','M','E','A','N','D','E','F','A','U','L','T', + 'A','U','T','O','I','N','C','R','E','M','E','N','T','C','A','S','T','C', + 'O','L','U','M','N','C','O','M','M','I','T','C','O','N','F','L','I','C', + 'T','C','R','O','S','S','C','U','R','R','E','N','T','_','T','I','M','E', + 'S','T','A','M','P','A','R','T','I','T','I','O','N','D','E','F','E','R', + 'R','E','D','I','S','T','I','N','C','T','D','R','O','P','R','E','C','E', + 'D','I','N','G','F','A','I','L','F','I','L','T','E','R','E','P','L','A', + 'C','E','F','O','L','L','O','W','I','N','G','F','R','O','M','F','U','L', + 'L','I','F','I','S','N','U','L','L','O','R','D','E','R','E','S','T','R', + 'I','C','T','O','V','E','R','I','G','H','T','R','O','L','L','B','A','C', + 'K','R','O','W','S','U','N','B','O','U','N','D','E','D','U','N','I','O', + 'N','U','S','I','N','G','V','A','C','U','U','M','V','I','E','W','I','N', + 'D','O','W','I','N','I','T','I','A','L','L','Y','P','R','I','M','A','R', + 'Y', }; /* aKWHash[i] is the hash value for the i-th keyword */ static const unsigned char aKWHash[127] = { - 74, 108, 119, 72, 0, 45, 0, 0, 81, 0, 76, 61, 0, - 42, 12, 77, 15, 0, 118, 84, 54, 116, 0, 19, 0, 0, - 123, 0, 121, 111, 0, 22, 96, 0, 9, 0, 0, 68, 69, - 0, 67, 6, 0, 48, 93, 105, 0, 120, 104, 0, 0, 44, - 0, 106, 24, 0, 17, 0, 124, 53, 23, 0, 5, 62, 25, - 99, 0, 0, 126, 112, 60, 125, 57, 28, 55, 0, 94, 0, - 103, 26, 0, 102, 0, 0, 0, 98, 95, 100, 91, 115, 14, - 39, 114, 0, 80, 0, 109, 92, 90, 32, 0, 122, 79, 117, - 86, 46, 83, 0, 0, 97, 40, 59, 110, 0, 36, 0, 0, - 29, 0, 89, 87, 88, 0, 20, 85, 0, 56, + 74, 109, 124, 72, 106, 45, 0, 0, 81, 0, 76, 61, 0, + 42, 12, 77, 15, 0, 123, 84, 54, 118, 125, 19, 0, 0, + 130, 0, 128, 121, 0, 22, 96, 0, 9, 0, 0, 115, 69, + 0, 67, 6, 0, 48, 93, 136, 0, 126, 104, 0, 0, 44, + 0, 107, 24, 0, 17, 0, 131, 53, 23, 0, 5, 62, 132, + 99, 0, 0, 135, 110, 60, 134, 57, 113, 55, 0, 94, 0, + 103, 26, 0, 102, 0, 0, 0, 98, 95, 100, 105, 117, 14, + 39, 116, 0, 80, 0, 133, 114, 92, 59, 0, 129, 79, 119, + 86, 46, 83, 0, 0, 97, 40, 122, 120, 0, 127, 0, 0, + 29, 0, 89, 87, 88, 0, 20, 85, 111, 56, }; /* aKWNext[] forms the hash collision chain. If aKWHash[i]==0 ** then the i-th keyword has no more hash collisions. Otherwise, ** the next keyword with the same hash is aKWHash[i]-1. */ -static const unsigned char aKWNext[126] = { +static const unsigned char aKWNext[136] = { 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 21, 0, 0, 0, 0, 0, 50, - 0, 43, 3, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 43, 3, 47, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 65, 0, 41, 0, 38, 0, 0, 0, - 0, 0, 49, 75, 0, 0, 30, 0, 58, 0, 0, 63, 31, - 52, 16, 34, 10, 0, 0, 0, 0, 0, 0, 0, 11, 70, - 78, 0, 8, 0, 18, 51, 0, 107, 101, 0, 113, 0, 73, - 27, 37, 71, 82, 0, 35, 66, 0, 0, + 0, 0, 49, 75, 0, 0, 30, 0, 58, 0, 0, 0, 31, + 63, 16, 34, 10, 0, 0, 0, 0, 0, 0, 0, 11, 70, + 91, 0, 0, 8, 0, 108, 0, 101, 28, 52, 68, 0, 112, + 0, 73, 51, 0, 90, 27, 37, 0, 71, 36, 82, 0, 35, + 66, 25, 18, 0, 0, 78, }; /* aKWLen[i] is the length (in bytes) of the i-th keyword */ -static const unsigned char aKWLen[126] = { +static const unsigned char aKWLen[136] = { 7, 7, 5, 4, 6, 4, 5, 3, 6, 7, 3, 6, 6, 7, 7, 3, 8, 2, 6, 5, 4, 4, 3, 10, 4, 6, 11, 6, 2, 7, 5, 5, 9, 6, 9, 9, 7, 10, 10, 4, 6, 2, 3, 9, 4, 2, 6, 5, 7, 4, 5, 7, - 6, 6, 5, 6, 5, 5, 9, 7, 7, 4, 2, 7, 3, + 6, 6, 5, 6, 5, 5, 5, 7, 7, 4, 2, 7, 3, 6, 4, 7, 6, 12, 6, 9, 4, 6, 4, 5, 4, 7, - 6, 5, 6, 7, 5, 4, 7, 3, 2, 4, 5, 6, 5, - 7, 3, 7, 13, 2, 2, 4, 6, 6, 8, 5, 17, 12, - 7, 8, 8, 2, 2, 5, 8, 4, 4, 4, 4, 2, 6, - 5, 8, 3, 5, 5, 6, 4, 9, 3, + 6, 5, 6, 7, 5, 4, 7, 3, 2, 4, 5, 9, 5, + 6, 3, 7, 13, 2, 2, 4, 6, 6, 8, 5, 17, 12, + 7, 9, 8, 8, 2, 4, 9, 4, 6, 7, 9, 4, 4, + 2, 6, 5, 8, 4, 5, 8, 4, 3, 9, 5, 5, 6, + 4, 6, 2, 9, 3, 7, }; /* aKWOffset[i] is the index into zKWText[] of the start of ** the text for the i-th keyword. */ -static const unsigned short int aKWOffset[126] = { +static const unsigned short int aKWOffset[136] = { 0, 2, 2, 8, 9, 14, 16, 20, 23, 25, 25, 29, 33, 36, 41, 46, 48, 53, 54, 59, 62, 65, 67, 69, 78, 81, 86, 91, 95, 96, 101, 105, 109, 117, 122, 128, 136, 142, 152, 159, 162, 162, 165, 167, 167, 171, 176, 179, 184, 184, 188, 192, - 199, 204, 209, 212, 218, 221, 225, 234, 240, 246, 249, 251, 252, - 256, 262, 266, 273, 279, 291, 297, 306, 308, 314, 318, 323, 325, - 332, 337, 342, 348, 354, 359, 362, 362, 362, 365, 369, 372, 378, - 382, 389, 391, 398, 400, 402, 411, 415, 421, 427, 435, 440, 440, - 456, 463, 470, 471, 478, 479, 483, 491, 495, 499, 503, 507, 509, - 515, 520, 528, 531, 536, 541, 547, 551, 556, + 199, 204, 209, 212, 218, 221, 225, 230, 236, 242, 245, 247, 248, + 252, 258, 262, 269, 275, 287, 293, 302, 304, 310, 314, 319, 321, + 328, 333, 338, 344, 350, 355, 358, 358, 358, 361, 365, 368, 377, + 381, 387, 389, 396, 398, 400, 409, 413, 419, 425, 433, 438, 438, + 438, 454, 463, 470, 471, 478, 481, 490, 494, 499, 506, 515, 519, + 523, 525, 531, 535, 543, 546, 551, 559, 559, 563, 572, 577, 582, + 588, 591, 594, 597, 602, 606, }; /* aKWCode[i] is the parser symbol code for the i-th keyword */ -static const unsigned char aKWCode[126] = { +static const unsigned char aKWCode[136] = { TK_REINDEX, TK_INDEXED, TK_INDEX, TK_DESC, TK_ESCAPE, TK_EACH, TK_CHECK, TK_KEY, TK_BEFORE, TK_FOREIGN, TK_FOR, TK_IGNORE, TK_LIKE_KW, TK_EXPLAIN, TK_INSTEAD, @@ -145737,21 +150601,23 @@ static const unsigned char aKWCode[126] = { TK_OFFSET, TK_OF, TK_SET, TK_TEMP, TK_TEMP, TK_OR, TK_UNIQUE, TK_QUERY, TK_WITHOUT, TK_WITH, TK_JOIN_KW, TK_RELEASE, TK_ATTACH, TK_HAVING, TK_GROUP, - TK_UPDATE, TK_BEGIN, TK_JOIN_KW, TK_RECURSIVE, TK_BETWEEN, + TK_UPDATE, TK_BEGIN, TK_JOIN_KW, TK_RANGE, TK_BETWEEN, TK_NOTHING, TK_LIKE_KW, TK_BY, TK_CASCADE, TK_ASC, TK_DELETE, TK_CASE, TK_COLLATE, TK_CREATE, TK_CTIME_KW, TK_DETACH, TK_IMMEDIATE, TK_JOIN, TK_INSERT, TK_LIKE_KW, TK_MATCH, TK_PLAN, TK_ANALYZE, TK_PRAGMA, TK_ABORT, TK_VALUES, TK_VIRTUAL, TK_LIMIT, TK_WHEN, TK_NOTNULL, - TK_NOT, TK_NO, TK_NULL, TK_WHERE, TK_RENAME, - TK_AFTER, TK_REPLACE, TK_AND, TK_DEFAULT, TK_AUTOINCR, + TK_NOT, TK_NO, TK_NULL, TK_WHERE, TK_RECURSIVE, + TK_AFTER, TK_RENAME, TK_AND, TK_DEFAULT, TK_AUTOINCR, TK_TO, TK_IN, TK_CAST, TK_COLUMNKW, TK_COMMIT, - TK_CONFLICT, TK_JOIN_KW, TK_CTIME_KW, TK_CTIME_KW, TK_PRIMARY, - TK_DEFERRED, TK_DISTINCT, TK_IS, TK_DO, TK_ORDER, - TK_RESTRICT, TK_DROP, TK_FAIL, TK_FROM, TK_JOIN_KW, - TK_IF, TK_ISNULL, TK_JOIN_KW, TK_ROLLBACK, TK_ROW, - TK_UNION, TK_USING, TK_VACUUM, TK_VIEW, TK_INITIALLY, - TK_ALL, + TK_CONFLICT, TK_JOIN_KW, TK_CTIME_KW, TK_CTIME_KW, TK_CURRENT, + TK_PARTITION, TK_DEFERRED, TK_DISTINCT, TK_IS, TK_DROP, + TK_PRECEDING, TK_FAIL, TK_FILTER, TK_REPLACE, TK_FOLLOWING, + TK_FROM, TK_JOIN_KW, TK_IF, TK_ISNULL, TK_ORDER, + TK_RESTRICT, TK_OVER, TK_JOIN_KW, TK_ROLLBACK, TK_ROWS, + TK_ROW, TK_UNBOUNDED, TK_UNION, TK_USING, TK_VACUUM, + TK_VIEW, TK_WINDOW, TK_DO, TK_INITIALLY, TK_ALL, + TK_PRIMARY, }; /* Check to see if z[0..n-1] is a keyword. If it is, write the ** parser symbol code for that keyword into *pType. Always @@ -145830,7 +150696,7 @@ static int keywordCode(const char *z, int n, int *pType){ testcase( i==55 ); /* UPDATE */ testcase( i==56 ); /* BEGIN */ testcase( i==57 ); /* INNER */ - testcase( i==58 ); /* RECURSIVE */ + testcase( i==58 ); /* RANGE */ testcase( i==59 ); /* BETWEEN */ testcase( i==60 ); /* NOTHING */ testcase( i==61 ); /* GLOB */ @@ -145861,9 +150727,9 @@ static int keywordCode(const char *z, int n, int *pType){ testcase( i==86 ); /* NO */ testcase( i==87 ); /* NULL */ testcase( i==88 ); /* WHERE */ - testcase( i==89 ); /* RENAME */ + testcase( i==89 ); /* RECURSIVE */ testcase( i==90 ); /* AFTER */ - testcase( i==91 ); /* REPLACE */ + testcase( i==91 ); /* RENAME */ testcase( i==92 ); /* AND */ testcase( i==93 ); /* DEFAULT */ testcase( i==94 ); /* AUTOINCREMENT */ @@ -145876,28 +150742,38 @@ static int keywordCode(const char *z, int n, int *pType){ testcase( i==101 ); /* CROSS */ testcase( i==102 ); /* CURRENT_TIMESTAMP */ testcase( i==103 ); /* CURRENT_TIME */ - testcase( i==104 ); /* PRIMARY */ - testcase( i==105 ); /* DEFERRED */ - testcase( i==106 ); /* DISTINCT */ - testcase( i==107 ); /* IS */ - testcase( i==108 ); /* DO */ - testcase( i==109 ); /* ORDER */ - testcase( i==110 ); /* RESTRICT */ - testcase( i==111 ); /* DROP */ - testcase( i==112 ); /* FAIL */ - testcase( i==113 ); /* FROM */ - testcase( i==114 ); /* FULL */ - testcase( i==115 ); /* IF */ - testcase( i==116 ); /* ISNULL */ - testcase( i==117 ); /* RIGHT */ - testcase( i==118 ); /* ROLLBACK */ - testcase( i==119 ); /* ROW */ - testcase( i==120 ); /* UNION */ - testcase( i==121 ); /* USING */ - testcase( i==122 ); /* VACUUM */ - testcase( i==123 ); /* VIEW */ - testcase( i==124 ); /* INITIALLY */ - testcase( i==125 ); /* ALL */ + testcase( i==104 ); /* CURRENT */ + testcase( i==105 ); /* PARTITION */ + testcase( i==106 ); /* DEFERRED */ + testcase( i==107 ); /* DISTINCT */ + testcase( i==108 ); /* IS */ + testcase( i==109 ); /* DROP */ + testcase( i==110 ); /* PRECEDING */ + testcase( i==111 ); /* FAIL */ + testcase( i==112 ); /* FILTER */ + testcase( i==113 ); /* REPLACE */ + testcase( i==114 ); /* FOLLOWING */ + testcase( i==115 ); /* FROM */ + testcase( i==116 ); /* FULL */ + testcase( i==117 ); /* IF */ + testcase( i==118 ); /* ISNULL */ + testcase( i==119 ); /* ORDER */ + testcase( i==120 ); /* RESTRICT */ + testcase( i==121 ); /* OVER */ + testcase( i==122 ); /* RIGHT */ + testcase( i==123 ); /* ROLLBACK */ + testcase( i==124 ); /* ROWS */ + testcase( i==125 ); /* ROW */ + testcase( i==126 ); /* UNBOUNDED */ + testcase( i==127 ); /* UNION */ + testcase( i==128 ); /* USING */ + testcase( i==129 ); /* VACUUM */ + testcase( i==130 ); /* VIEW */ + testcase( i==131 ); /* WINDOW */ + testcase( i==132 ); /* DO */ + testcase( i==133 ); /* INITIALLY */ + testcase( i==134 ); /* ALL */ + testcase( i==135 ); /* PRIMARY */ *pType = aKWCode[i]; break; } @@ -145909,7 +150785,7 @@ SQLITE_PRIVATE int sqlite3KeywordCode(const unsigned char *z, int n){ keywordCode((char*)z, n, &id); return id; } -#define SQLITE_N_KEYWORD 126 +#define SQLITE_N_KEYWORD 136 SQLITE_API int sqlite3_keyword_name(int i,const char **pzName,int *pnName){ if( i<0 || i>=SQLITE_N_KEYWORD ) return SQLITE_ERROR; *pzName = zKWText + aKWOffset[i]; @@ -145963,11 +150839,85 @@ SQLITE_PRIVATE const char sqlite3IsEbcdicIdChar[] = { #define IdChar(C) (((c=C)>=0x42 && sqlite3IsEbcdicIdChar[c-0x40])) #endif -/* Make the IdChar function accessible from ctime.c */ -#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS +/* Make the IdChar function accessible from ctime.c and alter.c */ SQLITE_PRIVATE int sqlite3IsIdChar(u8 c){ return IdChar(c); } -#endif +#ifndef SQLITE_OMIT_WINDOWFUNC +/* +** Return the id of the next token in string (*pz). Before returning, set +** (*pz) to point to the byte following the parsed token. +*/ +static int getToken(const unsigned char **pz){ + const unsigned char *z = *pz; + int t; /* Token type to return */ + do { + z += sqlite3GetToken(z, &t); + }while( t==TK_SPACE ); + if( t==TK_ID + || t==TK_STRING + || t==TK_JOIN_KW + || t==TK_WINDOW + || t==TK_OVER + || sqlite3ParserFallback(t)==TK_ID + ){ + t = TK_ID; + } + *pz = z; + return t; +} + +/* +** The following three functions are called immediately after the tokenizer +** reads the keywords WINDOW, OVER and FILTER, respectively, to determine +** whether the token should be treated as a keyword or an SQL identifier. +** This cannot be handled by the usual lemon %fallback method, due to +** the ambiguity in some constructions. e.g. +** +** SELECT sum(x) OVER ... +** +** In the above, "OVER" might be a keyword, or it might be an alias for the +** sum(x) expression. If a "%fallback ID OVER" directive were added to +** grammar, then SQLite would always treat "OVER" as an alias, making it +** impossible to call a window-function without a FILTER clause. +** +** WINDOW is treated as a keyword if: +** +** * the following token is an identifier, or a keyword that can fallback +** to being an identifier, and +** * the token after than one is TK_AS. +** +** OVER is a keyword if: +** +** * the previous token was TK_RP, and +** * the next token is either TK_LP or an identifier. +** +** FILTER is a keyword if: +** +** * the previous token was TK_RP, and +** * the next token is TK_LP. +*/ +static int analyzeWindowKeyword(const unsigned char *z){ + int t; + t = getToken(&z); + if( t!=TK_ID ) return TK_ID; + t = getToken(&z); + if( t!=TK_AS ) return TK_ID; + return TK_WINDOW; +} +static int analyzeOverKeyword(const unsigned char *z, int lastToken){ + if( lastToken==TK_RP ){ + int t = getToken(&z); + if( t==TK_LP || t==TK_ID ) return TK_OVER; + } + return TK_ID; +} +static int analyzeFilterKeyword(const unsigned char *z, int lastToken){ + if( lastToken==TK_RP && getToken(&z)==TK_LP ){ + return TK_FILTER; + } + return TK_ID; +} +#endif /* SQLITE_OMIT_WINDOWFUNC */ /* ** Return the length (in bytes) of the token that begins at z[0]. @@ -146236,6 +151186,10 @@ SQLITE_PRIVATE int sqlite3GetToken(const unsigned char *z, int *tokenType){ i = 1; break; } + case CC_NUL: { + *tokenType = TK_ILLEGAL; + return 0; + } default: { *tokenType = TK_ILLEGAL; return 1; @@ -146289,47 +151243,64 @@ SQLITE_PRIVATE int sqlite3RunParser(Parse *pParse, const char *zSql, char **pzEr assert( pParse->nVar==0 ); assert( pParse->pVList==0 ); while( 1 ){ - if( zSql[0]!=0 ){ - n = sqlite3GetToken((u8*)zSql, &tokenType); - mxSqlLen -= n; - if( mxSqlLen<0 ){ - pParse->rc = SQLITE_TOOBIG; - break; - } - }else{ - /* Upon reaching the end of input, call the parser two more times - ** with tokens TK_SEMI and 0, in that order. */ - if( lastTokenParsed==TK_SEMI ){ - tokenType = 0; - }else if( lastTokenParsed==0 ){ - break; - }else{ - tokenType = TK_SEMI; - } - n = 0; + n = sqlite3GetToken((u8*)zSql, &tokenType); + mxSqlLen -= n; + if( mxSqlLen<0 ){ + pParse->rc = SQLITE_TOOBIG; + break; } +#ifndef SQLITE_OMIT_WINDOWFUNC + if( tokenType>=TK_WINDOW ){ + assert( tokenType==TK_SPACE || tokenType==TK_OVER || tokenType==TK_FILTER + || tokenType==TK_ILLEGAL || tokenType==TK_WINDOW + ); +#else if( tokenType>=TK_SPACE ){ assert( tokenType==TK_SPACE || tokenType==TK_ILLEGAL ); +#endif /* SQLITE_OMIT_WINDOWFUNC */ if( db->u1.isInterrupted ){ pParse->rc = SQLITE_INTERRUPT; break; } - if( tokenType==TK_ILLEGAL ){ + if( tokenType==TK_SPACE ){ + zSql += n; + continue; + } + if( zSql[0]==0 ){ + /* Upon reaching the end of input, call the parser two more times + ** with tokens TK_SEMI and 0, in that order. */ + if( lastTokenParsed==TK_SEMI ){ + tokenType = 0; + }else if( lastTokenParsed==0 ){ + break; + }else{ + tokenType = TK_SEMI; + } + n = 0; +#ifndef SQLITE_OMIT_WINDOWFUNC + }else if( tokenType==TK_WINDOW ){ + assert( n==6 ); + tokenType = analyzeWindowKeyword((const u8*)&zSql[6]); + }else if( tokenType==TK_OVER ){ + assert( n==4 ); + tokenType = analyzeOverKeyword((const u8*)&zSql[4], lastTokenParsed); + }else if( tokenType==TK_FILTER ){ + assert( n==6 ); + tokenType = analyzeFilterKeyword((const u8*)&zSql[6], lastTokenParsed); +#endif /* SQLITE_OMIT_WINDOWFUNC */ + }else{ sqlite3ErrorMsg(pParse, "unrecognized token: \"%.*s\"", n, zSql); break; } - zSql += n; - }else{ - pParse->sLastToken.z = zSql; - pParse->sLastToken.n = n; - sqlite3Parser(pEngine, tokenType, pParse->sLastToken); - lastTokenParsed = tokenType; - zSql += n; - if( pParse->rc!=SQLITE_OK || db->mallocFailed ) break; } + pParse->sLastToken.z = zSql; + pParse->sLastToken.n = n; + sqlite3Parser(pEngine, tokenType, pParse->sLastToken); + lastTokenParsed = tokenType; + zSql += n; + if( pParse->rc!=SQLITE_OK || db->mallocFailed ) break; } assert( nErr==0 ); - pParse->zTail = zSql; #ifdef YYTRACKMAXSTACKDEPTH sqlite3_mutex_enter(sqlite3MallocMutex()); sqlite3StatusHighwater(SQLITE_STATUS_PARSER_STACK, @@ -146351,10 +151322,12 @@ SQLITE_PRIVATE int sqlite3RunParser(Parse *pParse, const char *zSql, char **pzEr assert( pzErrMsg!=0 ); if( pParse->zErrMsg ){ *pzErrMsg = pParse->zErrMsg; - sqlite3_log(pParse->rc, "%s", *pzErrMsg); + sqlite3_log(pParse->rc, "%s in \"%s\"", + *pzErrMsg, pParse->zTail); pParse->zErrMsg = 0; nErr++; } + pParse->zTail = zSql; if( pParse->pVdbe && pParse->nErr>0 && pParse->nested==0 ){ sqlite3VdbeDelete(pParse->pVdbe); pParse->pVdbe = 0; @@ -146370,16 +151343,18 @@ SQLITE_PRIVATE int sqlite3RunParser(Parse *pParse, const char *zSql, char **pzEr sqlite3_free(pParse->apVtabLock); #endif - if( !IN_DECLARE_VTAB ){ + if( !IN_SPECIAL_PARSE ){ /* If the pParse->declareVtab flag is set, do not delete any table ** structure built up in pParse->pNewTable. The calling code (see vtab.c) ** will take responsibility for freeing the Table structure. */ sqlite3DeleteTable(db, pParse->pNewTable); } + if( !IN_RENAME_OBJECT ){ + sqlite3DeleteTrigger(db, pParse->pNewTrigger); + } if( pParse->pWithToFree ) sqlite3WithDelete(db, pParse->pWithToFree); - sqlite3DeleteTrigger(db, pParse->pNewTrigger); sqlite3DbFree(db, pParse->pVList); while( pParse->pAinc ){ AutoincInfo *p = pParse->pAinc; @@ -147636,7 +152611,7 @@ SQLITE_API int sqlite3_db_config(sqlite3 *db, int op, ...){ db->flags &= ~aFlagOp[i].mask; } if( oldFlags!=db->flags ){ - sqlite3ExpirePreparedStatements(db); + sqlite3ExpirePreparedStatements(db, 0); } if( pRes ){ *pRes = (db->flags & aFlagOp[i].mask)!=0; @@ -147697,6 +152672,15 @@ static int binCollFunc( return rc; } +/* +** Return true if CollSeq is the default built-in BINARY. +*/ +SQLITE_PRIVATE int sqlite3IsBinary(const CollSeq *p){ + assert( p==0 || p->xCmp!=binCollFunc || p->pUser!=0 + || strcmp(p->zName,"BINARY")==0 ); + return p==0 || (p->xCmp==binCollFunc && p->pUser==0); +} + /* ** Another built-in collating sequence: NOCASE. ** @@ -147818,7 +152802,7 @@ static void disconnectAllVtab(sqlite3 *db){ sqlite3BtreeEnterAll(db); for(i=0; inDb; i++){ Schema *pSchema = db->aDb[i].pSchema; - if( db->aDb[i].pSchema ){ + if( pSchema ){ for(p=sqliteHashFirst(&pSchema->tblHash); p; p=sqliteHashNext(p)){ Table *pTab = (Table *)sqliteHashData(p); if( IsVirtual(pTab) ) sqlite3VtabDisconnect(db, pTab); @@ -148078,8 +153062,8 @@ SQLITE_PRIVATE void sqlite3RollbackAll(sqlite3 *db, int tripCode){ sqlite3VtabRollback(db); sqlite3EndBenignMalloc(); - if( (db->mDbFlags&DBFLAG_SchemaChange)!=0 && db->init.busy==0 ){ - sqlite3ExpirePreparedStatements(db); + if( schemaChange ){ + sqlite3ExpirePreparedStatements(db, 0); sqlite3ResetAllSchemasOfConnection(db); } sqlite3BtreeLeaveAll(db); @@ -148107,6 +153091,7 @@ SQLITE_PRIVATE const char *sqlite3ErrName(int rc){ switch( rc ){ case SQLITE_OK: zName = "SQLITE_OK"; break; case SQLITE_ERROR: zName = "SQLITE_ERROR"; break; + case SQLITE_ERROR_SNAPSHOT: zName = "SQLITE_ERROR_SNAPSHOT"; break; case SQLITE_INTERNAL: zName = "SQLITE_INTERNAL"; break; case SQLITE_PERM: zName = "SQLITE_PERM"; break; case SQLITE_ABORT: zName = "SQLITE_ABORT"; break; @@ -148470,6 +153455,8 @@ SQLITE_PRIVATE int sqlite3CreateFunc( void (*xSFunc)(sqlite3_context*,int,sqlite3_value **), void (*xStep)(sqlite3_context*,int,sqlite3_value **), void (*xFinal)(sqlite3_context*), + void (*xValue)(sqlite3_context*), + void (*xInverse)(sqlite3_context*,int,sqlite3_value **), FuncDestructor *pDestructor ){ FuncDef *p; @@ -148477,12 +153464,14 @@ SQLITE_PRIVATE int sqlite3CreateFunc( int extraFlags; assert( sqlite3_mutex_held(db->mutex) ); - if( zFunctionName==0 || - (xSFunc && (xFinal || xStep)) || - (!xSFunc && (xFinal && !xStep)) || - (!xSFunc && (!xFinal && xStep)) || - (nArg<-1 || nArg>SQLITE_MAX_FUNCTION_ARG) || - (255<(nName = sqlite3Strlen30( zFunctionName))) ){ + assert( xValue==0 || xSFunc==0 ); + if( zFunctionName==0 /* Must have a valid name */ + || (xSFunc!=0 && xFinal!=0) /* Not both xSFunc and xFinal */ + || ((xFinal==0)!=(xStep==0)) /* Both or neither of xFinal and xStep */ + || ((xValue==0)!=(xInverse==0)) /* Both or neither of xValue, xInverse */ + || (nArg<-1 || nArg>SQLITE_MAX_FUNCTION_ARG) + || (255<(nName = sqlite3Strlen30( zFunctionName))) + ){ return SQLITE_MISUSE_BKPT; } @@ -148503,10 +153492,10 @@ SQLITE_PRIVATE int sqlite3CreateFunc( }else if( enc==SQLITE_ANY ){ int rc; rc = sqlite3CreateFunc(db, zFunctionName, nArg, SQLITE_UTF8|extraFlags, - pUserData, xSFunc, xStep, xFinal, pDestructor); + pUserData, xSFunc, xStep, xFinal, xValue, xInverse, pDestructor); if( rc==SQLITE_OK ){ rc = sqlite3CreateFunc(db, zFunctionName, nArg, SQLITE_UTF16LE|extraFlags, - pUserData, xSFunc, xStep, xFinal, pDestructor); + pUserData, xSFunc, xStep, xFinal, xValue, xInverse, pDestructor); } if( rc!=SQLITE_OK ){ return rc; @@ -148523,14 +153512,14 @@ SQLITE_PRIVATE int sqlite3CreateFunc( ** operation to continue but invalidate all precompiled statements. */ p = sqlite3FindFunction(db, zFunctionName, nArg, (u8)enc, 0); - if( p && (p->funcFlags & SQLITE_FUNC_ENCMASK)==enc && p->nArg==nArg ){ + if( p && (p->funcFlags & SQLITE_FUNC_ENCMASK)==(u32)enc && p->nArg==nArg ){ if( db->nVdbeActive ){ sqlite3ErrorWithMsg(db, SQLITE_BUSY, "unable to delete/modify user-function due to active statements"); assert( !db->mallocFailed ); return SQLITE_BUSY; }else{ - sqlite3ExpirePreparedStatements(db); + sqlite3ExpirePreparedStatements(db, 0); } } @@ -148552,38 +153541,32 @@ SQLITE_PRIVATE int sqlite3CreateFunc( testcase( p->funcFlags & SQLITE_DETERMINISTIC ); p->xSFunc = xSFunc ? xSFunc : xStep; p->xFinalize = xFinal; + p->xValue = xValue; + p->xInverse = xInverse; p->pUserData = pUserData; p->nArg = (u16)nArg; return SQLITE_OK; } /* -** Create new user functions. +** Worker function used by utf-8 APIs that create new functions: +** +** sqlite3_create_function() +** sqlite3_create_function_v2() +** sqlite3_create_window_function() */ -SQLITE_API int sqlite3_create_function( +static int createFunctionApi( sqlite3 *db, const char *zFunc, int nArg, int enc, void *p, - void (*xSFunc)(sqlite3_context*,int,sqlite3_value **), - void (*xStep)(sqlite3_context*,int,sqlite3_value **), - void (*xFinal)(sqlite3_context*) -){ - return sqlite3_create_function_v2(db, zFunc, nArg, enc, p, xSFunc, xStep, - xFinal, 0); -} - -SQLITE_API int sqlite3_create_function_v2( - sqlite3 *db, - const char *zFunc, - int nArg, - int enc, - void *p, - void (*xSFunc)(sqlite3_context*,int,sqlite3_value **), - void (*xStep)(sqlite3_context*,int,sqlite3_value **), + void (*xSFunc)(sqlite3_context*,int,sqlite3_value**), + void (*xStep)(sqlite3_context*,int,sqlite3_value**), void (*xFinal)(sqlite3_context*), - void (*xDestroy)(void *) + void (*xValue)(sqlite3_context*), + void (*xInverse)(sqlite3_context*,int,sqlite3_value**), + void(*xDestroy)(void*) ){ int rc = SQLITE_ERROR; FuncDestructor *pArg = 0; @@ -148605,7 +153588,9 @@ SQLITE_API int sqlite3_create_function_v2( pArg->xDestroy = xDestroy; pArg->pUserData = p; } - rc = sqlite3CreateFunc(db, zFunc, nArg, enc, p, xSFunc, xStep, xFinal, pArg); + rc = sqlite3CreateFunc(db, zFunc, nArg, enc, p, + xSFunc, xStep, xFinal, xValue, xInverse, pArg + ); if( pArg && pArg->nRef==0 ){ assert( rc!=SQLITE_OK ); xDestroy(p); @@ -148618,6 +153603,52 @@ SQLITE_API int sqlite3_create_function_v2( return rc; } +/* +** Create new user functions. +*/ +SQLITE_API int sqlite3_create_function( + sqlite3 *db, + const char *zFunc, + int nArg, + int enc, + void *p, + void (*xSFunc)(sqlite3_context*,int,sqlite3_value **), + void (*xStep)(sqlite3_context*,int,sqlite3_value **), + void (*xFinal)(sqlite3_context*) +){ + return createFunctionApi(db, zFunc, nArg, enc, p, xSFunc, xStep, + xFinal, 0, 0, 0); +} +SQLITE_API int sqlite3_create_function_v2( + sqlite3 *db, + const char *zFunc, + int nArg, + int enc, + void *p, + void (*xSFunc)(sqlite3_context*,int,sqlite3_value **), + void (*xStep)(sqlite3_context*,int,sqlite3_value **), + void (*xFinal)(sqlite3_context*), + void (*xDestroy)(void *) +){ + return createFunctionApi(db, zFunc, nArg, enc, p, xSFunc, xStep, + xFinal, 0, 0, xDestroy); +} +SQLITE_API int sqlite3_create_window_function( + sqlite3 *db, + const char *zFunc, + int nArg, + int enc, + void *p, + void (*xStep)(sqlite3_context*,int,sqlite3_value **), + void (*xFinal)(sqlite3_context*), + void (*xValue)(sqlite3_context*), + void (*xInverse)(sqlite3_context*,int,sqlite3_value **), + void (*xDestroy)(void *) +){ + return createFunctionApi(db, zFunc, nArg, enc, p, 0, xStep, + xFinal, xValue, xInverse, xDestroy); +} + #ifndef SQLITE_OMIT_UTF16 SQLITE_API int sqlite3_create_function16( sqlite3 *db, @@ -148638,7 +153669,7 @@ SQLITE_API int sqlite3_create_function16( sqlite3_mutex_enter(db->mutex); assert( !db->mallocFailed ); zFunc8 = sqlite3Utf16to8(db, zFunctionName, -1, SQLITE_UTF16NATIVE); - rc = sqlite3CreateFunc(db, zFunc8, nArg, eTextRep, p, xSFunc,xStep,xFinal,0); + rc = sqlite3CreateFunc(db, zFunc8, nArg, eTextRep, p, xSFunc,xStep,xFinal,0,0,0); sqlite3DbFree(db, zFunc8); rc = sqlite3ApiExit(db, rc); sqlite3_mutex_leave(db->mutex); @@ -149263,7 +154294,7 @@ static int createCollation( "unable to delete/modify collation sequence due to active statements"); return SQLITE_BUSY; } - sqlite3ExpirePreparedStatements(db); + sqlite3ExpirePreparedStatements(db, 0); /* If collation sequence pColl was created directly by a call to ** sqlite3_create_collation, and not generated by synthCollSeq(), @@ -149752,6 +154783,7 @@ static int openDatabase( db->nDb = 2; db->magic = SQLITE_MAGIC_BUSY; db->aDb = db->aDbStatic; + db->lookaside.bDisable = 1; assert( sizeof(db->aLimit)==sizeof(aHardLimit) ); memcpy(db->aLimit, aHardLimit, sizeof(db->aLimit)); @@ -150452,6 +155484,9 @@ SQLITE_API int sqlite3_file_control(sqlite3 *db, const char *zDbName, int op, vo }else if( op==SQLITE_FCNTL_JOURNAL_POINTER ){ *(sqlite3_file**)pArg = sqlite3PagerJrnlFile(pPager); rc = SQLITE_OK; + }else if( op==SQLITE_FCNTL_DATA_VERSION ){ + *(unsigned int*)pArg = sqlite3PagerDataVersion(pPager); + rc = SQLITE_OK; }else{ rc = sqlite3OsFileControl(fd, op, pArg); } @@ -150715,7 +155750,8 @@ SQLITE_API int sqlite3_test_control(int op, ...){ */ case SQLITE_TESTCTRL_VDBE_COVERAGE: { #ifdef SQLITE_VDBE_COVERAGE - typedef void (*branch_callback)(void*,int,u8,u8); + typedef void (*branch_callback)(void*,unsigned int, + unsigned char,unsigned char); sqlite3GlobalConfig.xVdbeBranch = va_arg(ap,branch_callback); sqlite3GlobalConfig.pVdbeBranchArg = va_arg(ap,void*); #endif @@ -150902,7 +155938,7 @@ SQLITE_API int sqlite3_snapshot_get( if( iDb==0 || iDb>1 ){ Btree *pBt = db->aDb[iDb].pBt; if( 0==sqlite3BtreeIsInTrans(pBt) ){ - rc = sqlite3BtreeBeginTrans(pBt, 0); + rc = sqlite3BtreeBeginTrans(pBt, 0, 0); if( rc==SQLITE_OK ){ rc = sqlite3PagerSnapshotGet(sqlite3BtreePager(pBt), ppSnapshot); } @@ -150937,11 +155973,29 @@ SQLITE_API int sqlite3_snapshot_open( iDb = sqlite3FindDbName(db, zDb); if( iDb==0 || iDb>1 ){ Btree *pBt = db->aDb[iDb].pBt; - if( 0==sqlite3BtreeIsInReadTrans(pBt) ){ - rc = sqlite3PagerSnapshotOpen(sqlite3BtreePager(pBt), pSnapshot); + if( sqlite3BtreeIsInTrans(pBt)==0 ){ + Pager *pPager = sqlite3BtreePager(pBt); + int bUnlock = 0; + if( sqlite3BtreeIsInReadTrans(pBt) ){ + if( db->nVdbeActive==0 ){ + rc = sqlite3PagerSnapshotCheck(pPager, pSnapshot); + if( rc==SQLITE_OK ){ + bUnlock = 1; + rc = sqlite3BtreeCommit(pBt); + } + } + }else{ + rc = SQLITE_OK; + } if( rc==SQLITE_OK ){ - rc = sqlite3BtreeBeginTrans(pBt, 0); - sqlite3PagerSnapshotOpen(sqlite3BtreePager(pBt), 0); + rc = sqlite3PagerSnapshotOpen(pPager, pSnapshot); + } + if( rc==SQLITE_OK ){ + rc = sqlite3BtreeBeginTrans(pBt, 0, 0); + sqlite3PagerSnapshotOpen(pPager, 0); + } + if( bUnlock ){ + sqlite3PagerSnapshotUnlock(pPager); } } } @@ -150972,7 +156026,7 @@ SQLITE_API int sqlite3_snapshot_recover(sqlite3 *db, const char *zDb){ if( iDb==0 || iDb>1 ){ Btree *pBt = db->aDb[iDb].pBt; if( 0==sqlite3BtreeIsInReadTrans(pBt) ){ - rc = sqlite3BtreeBeginTrans(pBt, 0); + rc = sqlite3BtreeBeginTrans(pBt, 0, 0); if( rc==SQLITE_OK ){ rc = sqlite3PagerSnapshotRecover(sqlite3BtreePager(pBt)); sqlite3BtreeCommit(pBt); @@ -156095,7 +161149,7 @@ static int fts3SavepointMethod(sqlite3_vtab *pVtab, int iSavepoint){ int rc = SQLITE_OK; UNUSED_PARAMETER(iSavepoint); assert( ((Fts3Table *)pVtab)->inTransaction ); - assert( ((Fts3Table *)pVtab)->mxSavepoint < iSavepoint ); + assert( ((Fts3Table *)pVtab)->mxSavepoint <= iSavepoint ); TESTONLY( ((Fts3Table *)pVtab)->mxSavepoint = iSavepoint ); if( ((Fts3Table *)pVtab)->bIgnoreSavepoint==0 ){ rc = fts3SyncMethod(pVtab); @@ -170518,6 +175572,2526 @@ SQLITE_PRIVATE int sqlite3FtsUnicodeFold(int c, int bRemoveDiacritic){ #endif /* !defined(SQLITE_DISABLE_FTS3_UNICODE) */ /************** End of fts3_unicode2.c ***************************************/ +/************** Begin file json1.c *******************************************/ +/* +** 2015-08-12 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** This SQLite extension implements JSON functions. The interface is +** modeled after MySQL JSON functions: +** +** https://dev.mysql.com/doc/refman/5.7/en/json.html +** +** For the time being, all JSON is stored as pure text. (We might add +** a JSONB type in the future which stores a binary encoding of JSON in +** a BLOB, but there is no support for JSONB in the current implementation. +** This implementation parses JSON text at 250 MB/s, so it is hard to see +** how JSONB might improve on that.) +*/ +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_JSON1) +#if !defined(SQLITEINT_H) +/* #include "sqlite3ext.h" */ +#endif +SQLITE_EXTENSION_INIT1 +/* #include */ +/* #include */ +/* #include */ +/* #include */ + +/* Mark a function parameter as unused, to suppress nuisance compiler +** warnings. */ +#ifndef UNUSED_PARAM +# define UNUSED_PARAM(X) (void)(X) +#endif + +#ifndef LARGEST_INT64 +# define LARGEST_INT64 (0xffffffff|(((sqlite3_int64)0x7fffffff)<<32)) +# define SMALLEST_INT64 (((sqlite3_int64)-1) - LARGEST_INT64) +#endif + +/* +** Versions of isspace(), isalnum() and isdigit() to which it is safe +** to pass signed char values. +*/ +#ifdef sqlite3Isdigit + /* Use the SQLite core versions if this routine is part of the + ** SQLite amalgamation */ +# define safe_isdigit(x) sqlite3Isdigit(x) +# define safe_isalnum(x) sqlite3Isalnum(x) +# define safe_isxdigit(x) sqlite3Isxdigit(x) +#else + /* Use the standard library for separate compilation */ +#include /* amalgamator: keep */ +# define safe_isdigit(x) isdigit((unsigned char)(x)) +# define safe_isalnum(x) isalnum((unsigned char)(x)) +# define safe_isxdigit(x) isxdigit((unsigned char)(x)) +#endif + +/* +** Growing our own isspace() routine this way is twice as fast as +** the library isspace() function, resulting in a 7% overall performance +** increase for the parser. (Ubuntu14.10 gcc 4.8.4 x64 with -Os). +*/ +static const char jsonIsSpace[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; +#define safe_isspace(x) (jsonIsSpace[(unsigned char)x]) + +#ifndef SQLITE_AMALGAMATION + /* Unsigned integer types. These are already defined in the sqliteInt.h, + ** but the definitions need to be repeated for separate compilation. */ + typedef sqlite3_uint64 u64; + typedef unsigned int u32; + typedef unsigned short int u16; + typedef unsigned char u8; +#endif + +/* Objects */ +typedef struct JsonString JsonString; +typedef struct JsonNode JsonNode; +typedef struct JsonParse JsonParse; + +/* An instance of this object represents a JSON string +** under construction. Really, this is a generic string accumulator +** that can be and is used to create strings other than JSON. +*/ +struct JsonString { + sqlite3_context *pCtx; /* Function context - put error messages here */ + char *zBuf; /* Append JSON content here */ + u64 nAlloc; /* Bytes of storage available in zBuf[] */ + u64 nUsed; /* Bytes of zBuf[] currently used */ + u8 bStatic; /* True if zBuf is static space */ + u8 bErr; /* True if an error has been encountered */ + char zSpace[100]; /* Initial static space */ +}; + +/* JSON type values +*/ +#define JSON_NULL 0 +#define JSON_TRUE 1 +#define JSON_FALSE 2 +#define JSON_INT 3 +#define JSON_REAL 4 +#define JSON_STRING 5 +#define JSON_ARRAY 6 +#define JSON_OBJECT 7 + +/* The "subtype" set for JSON values */ +#define JSON_SUBTYPE 74 /* Ascii for "J" */ + +/* +** Names of the various JSON types: +*/ +static const char * const jsonType[] = { + "null", "true", "false", "integer", "real", "text", "array", "object" +}; + +/* Bit values for the JsonNode.jnFlag field +*/ +#define JNODE_RAW 0x01 /* Content is raw, not JSON encoded */ +#define JNODE_ESCAPE 0x02 /* Content is text with \ escapes */ +#define JNODE_REMOVE 0x04 /* Do not output */ +#define JNODE_REPLACE 0x08 /* Replace with JsonNode.u.iReplace */ +#define JNODE_PATCH 0x10 /* Patch with JsonNode.u.pPatch */ +#define JNODE_APPEND 0x20 /* More ARRAY/OBJECT entries at u.iAppend */ +#define JNODE_LABEL 0x40 /* Is a label of an object */ + + +/* A single node of parsed JSON +*/ +struct JsonNode { + u8 eType; /* One of the JSON_ type values */ + u8 jnFlags; /* JNODE flags */ + u32 n; /* Bytes of content, or number of sub-nodes */ + union { + const char *zJContent; /* Content for INT, REAL, and STRING */ + u32 iAppend; /* More terms for ARRAY and OBJECT */ + u32 iKey; /* Key for ARRAY objects in json_tree() */ + u32 iReplace; /* Replacement content for JNODE_REPLACE */ + JsonNode *pPatch; /* Node chain of patch for JNODE_PATCH */ + } u; +}; + +/* A completely parsed JSON string +*/ +struct JsonParse { + u32 nNode; /* Number of slots of aNode[] used */ + u32 nAlloc; /* Number of slots of aNode[] allocated */ + JsonNode *aNode; /* Array of nodes containing the parse */ + const char *zJson; /* Original JSON string */ + u32 *aUp; /* Index of parent of each node */ + u8 oom; /* Set to true if out of memory */ + u8 nErr; /* Number of errors seen */ + u16 iDepth; /* Nesting depth */ + int nJson; /* Length of the zJson string in bytes */ + u32 iHold; /* Replace cache line with the lowest iHold value */ +}; + +/* +** Maximum nesting depth of JSON for this implementation. +** +** This limit is needed to avoid a stack overflow in the recursive +** descent parser. A depth of 2000 is far deeper than any sane JSON +** should go. +*/ +#define JSON_MAX_DEPTH 2000 + +/************************************************************************** +** Utility routines for dealing with JsonString objects +**************************************************************************/ + +/* Set the JsonString object to an empty string +*/ +static void jsonZero(JsonString *p){ + p->zBuf = p->zSpace; + p->nAlloc = sizeof(p->zSpace); + p->nUsed = 0; + p->bStatic = 1; +} + +/* Initialize the JsonString object +*/ +static void jsonInit(JsonString *p, sqlite3_context *pCtx){ + p->pCtx = pCtx; + p->bErr = 0; + jsonZero(p); +} + + +/* Free all allocated memory and reset the JsonString object back to its +** initial state. +*/ +static void jsonReset(JsonString *p){ + if( !p->bStatic ) sqlite3_free(p->zBuf); + jsonZero(p); +} + + +/* Report an out-of-memory (OOM) condition +*/ +static void jsonOom(JsonString *p){ + p->bErr = 1; + sqlite3_result_error_nomem(p->pCtx); + jsonReset(p); +} + +/* Enlarge pJson->zBuf so that it can hold at least N more bytes. +** Return zero on success. Return non-zero on an OOM error +*/ +static int jsonGrow(JsonString *p, u32 N){ + u64 nTotal = NnAlloc ? p->nAlloc*2 : p->nAlloc+N+10; + char *zNew; + if( p->bStatic ){ + if( p->bErr ) return 1; + zNew = sqlite3_malloc64(nTotal); + if( zNew==0 ){ + jsonOom(p); + return SQLITE_NOMEM; + } + memcpy(zNew, p->zBuf, (size_t)p->nUsed); + p->zBuf = zNew; + p->bStatic = 0; + }else{ + zNew = sqlite3_realloc64(p->zBuf, nTotal); + if( zNew==0 ){ + jsonOom(p); + return SQLITE_NOMEM; + } + p->zBuf = zNew; + } + p->nAlloc = nTotal; + return SQLITE_OK; +} + +/* Append N bytes from zIn onto the end of the JsonString string. +*/ +static void jsonAppendRaw(JsonString *p, const char *zIn, u32 N){ + if( (N+p->nUsed >= p->nAlloc) && jsonGrow(p,N)!=0 ) return; + memcpy(p->zBuf+p->nUsed, zIn, N); + p->nUsed += N; +} + +/* Append formatted text (not to exceed N bytes) to the JsonString. +*/ +static void jsonPrintf(int N, JsonString *p, const char *zFormat, ...){ + va_list ap; + if( (p->nUsed + N >= p->nAlloc) && jsonGrow(p, N) ) return; + va_start(ap, zFormat); + sqlite3_vsnprintf(N, p->zBuf+p->nUsed, zFormat, ap); + va_end(ap); + p->nUsed += (int)strlen(p->zBuf+p->nUsed); +} + +/* Append a single character +*/ +static void jsonAppendChar(JsonString *p, char c){ + if( p->nUsed>=p->nAlloc && jsonGrow(p,1)!=0 ) return; + p->zBuf[p->nUsed++] = c; +} + +/* Append a comma separator to the output buffer, if the previous +** character is not '[' or '{'. +*/ +static void jsonAppendSeparator(JsonString *p){ + char c; + if( p->nUsed==0 ) return; + c = p->zBuf[p->nUsed-1]; + if( c!='[' && c!='{' ) jsonAppendChar(p, ','); +} + +/* Append the N-byte string in zIn to the end of the JsonString string +** under construction. Enclose the string in "..." and escape +** any double-quotes or backslash characters contained within the +** string. +*/ +static void jsonAppendString(JsonString *p, const char *zIn, u32 N){ + u32 i; + if( (N+p->nUsed+2 >= p->nAlloc) && jsonGrow(p,N+2)!=0 ) return; + p->zBuf[p->nUsed++] = '"'; + for(i=0; inUsed+N+3-i > p->nAlloc) && jsonGrow(p,N+3-i)!=0 ) return; + p->zBuf[p->nUsed++] = '\\'; + }else if( c<=0x1f ){ + static const char aSpecial[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 'b', 't', 'n', 0, 'f', 'r', 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + assert( sizeof(aSpecial)==32 ); + assert( aSpecial['\b']=='b' ); + assert( aSpecial['\f']=='f' ); + assert( aSpecial['\n']=='n' ); + assert( aSpecial['\r']=='r' ); + assert( aSpecial['\t']=='t' ); + if( aSpecial[c] ){ + c = aSpecial[c]; + goto json_simple_escape; + } + if( (p->nUsed+N+7+i > p->nAlloc) && jsonGrow(p,N+7-i)!=0 ) return; + p->zBuf[p->nUsed++] = '\\'; + p->zBuf[p->nUsed++] = 'u'; + p->zBuf[p->nUsed++] = '0'; + p->zBuf[p->nUsed++] = '0'; + p->zBuf[p->nUsed++] = '0' + (c>>4); + c = "0123456789abcdef"[c&0xf]; + } + p->zBuf[p->nUsed++] = c; + } + p->zBuf[p->nUsed++] = '"'; + assert( p->nUsednAlloc ); +} + +/* +** Append a function parameter value to the JSON string under +** construction. +*/ +static void jsonAppendValue( + JsonString *p, /* Append to this JSON string */ + sqlite3_value *pValue /* Value to append */ +){ + switch( sqlite3_value_type(pValue) ){ + case SQLITE_NULL: { + jsonAppendRaw(p, "null", 4); + break; + } + case SQLITE_INTEGER: + case SQLITE_FLOAT: { + const char *z = (const char*)sqlite3_value_text(pValue); + u32 n = (u32)sqlite3_value_bytes(pValue); + jsonAppendRaw(p, z, n); + break; + } + case SQLITE_TEXT: { + const char *z = (const char*)sqlite3_value_text(pValue); + u32 n = (u32)sqlite3_value_bytes(pValue); + if( sqlite3_value_subtype(pValue)==JSON_SUBTYPE ){ + jsonAppendRaw(p, z, n); + }else{ + jsonAppendString(p, z, n); + } + break; + } + default: { + if( p->bErr==0 ){ + sqlite3_result_error(p->pCtx, "JSON cannot hold BLOB values", -1); + p->bErr = 2; + jsonReset(p); + } + break; + } + } +} + + +/* Make the JSON in p the result of the SQL function. +*/ +static void jsonResult(JsonString *p){ + if( p->bErr==0 ){ + sqlite3_result_text64(p->pCtx, p->zBuf, p->nUsed, + p->bStatic ? SQLITE_TRANSIENT : sqlite3_free, + SQLITE_UTF8); + jsonZero(p); + } + assert( p->bStatic ); +} + +/************************************************************************** +** Utility routines for dealing with JsonNode and JsonParse objects +**************************************************************************/ + +/* +** Return the number of consecutive JsonNode slots need to represent +** the parsed JSON at pNode. The minimum answer is 1. For ARRAY and +** OBJECT types, the number might be larger. +** +** Appended elements are not counted. The value returned is the number +** by which the JsonNode counter should increment in order to go to the +** next peer value. +*/ +static u32 jsonNodeSize(JsonNode *pNode){ + return pNode->eType>=JSON_ARRAY ? pNode->n+1 : 1; +} + +/* +** Reclaim all memory allocated by a JsonParse object. But do not +** delete the JsonParse object itself. +*/ +static void jsonParseReset(JsonParse *pParse){ + sqlite3_free(pParse->aNode); + pParse->aNode = 0; + pParse->nNode = 0; + pParse->nAlloc = 0; + sqlite3_free(pParse->aUp); + pParse->aUp = 0; +} + +/* +** Free a JsonParse object that was obtained from sqlite3_malloc(). +*/ +static void jsonParseFree(JsonParse *pParse){ + jsonParseReset(pParse); + sqlite3_free(pParse); +} + +/* +** Convert the JsonNode pNode into a pure JSON string and +** append to pOut. Subsubstructure is also included. Return +** the number of JsonNode objects that are encoded. +*/ +static void jsonRenderNode( + JsonNode *pNode, /* The node to render */ + JsonString *pOut, /* Write JSON here */ + sqlite3_value **aReplace /* Replacement values */ +){ + if( pNode->jnFlags & (JNODE_REPLACE|JNODE_PATCH) ){ + if( pNode->jnFlags & JNODE_REPLACE ){ + jsonAppendValue(pOut, aReplace[pNode->u.iReplace]); + return; + } + pNode = pNode->u.pPatch; + } + switch( pNode->eType ){ + default: { + assert( pNode->eType==JSON_NULL ); + jsonAppendRaw(pOut, "null", 4); + break; + } + case JSON_TRUE: { + jsonAppendRaw(pOut, "true", 4); + break; + } + case JSON_FALSE: { + jsonAppendRaw(pOut, "false", 5); + break; + } + case JSON_STRING: { + if( pNode->jnFlags & JNODE_RAW ){ + jsonAppendString(pOut, pNode->u.zJContent, pNode->n); + break; + } + /* Fall through into the next case */ + } + case JSON_REAL: + case JSON_INT: { + jsonAppendRaw(pOut, pNode->u.zJContent, pNode->n); + break; + } + case JSON_ARRAY: { + u32 j = 1; + jsonAppendChar(pOut, '['); + for(;;){ + while( j<=pNode->n ){ + if( (pNode[j].jnFlags & JNODE_REMOVE)==0 ){ + jsonAppendSeparator(pOut); + jsonRenderNode(&pNode[j], pOut, aReplace); + } + j += jsonNodeSize(&pNode[j]); + } + if( (pNode->jnFlags & JNODE_APPEND)==0 ) break; + pNode = &pNode[pNode->u.iAppend]; + j = 1; + } + jsonAppendChar(pOut, ']'); + break; + } + case JSON_OBJECT: { + u32 j = 1; + jsonAppendChar(pOut, '{'); + for(;;){ + while( j<=pNode->n ){ + if( (pNode[j+1].jnFlags & JNODE_REMOVE)==0 ){ + jsonAppendSeparator(pOut); + jsonRenderNode(&pNode[j], pOut, aReplace); + jsonAppendChar(pOut, ':'); + jsonRenderNode(&pNode[j+1], pOut, aReplace); + } + j += 1 + jsonNodeSize(&pNode[j+1]); + } + if( (pNode->jnFlags & JNODE_APPEND)==0 ) break; + pNode = &pNode[pNode->u.iAppend]; + j = 1; + } + jsonAppendChar(pOut, '}'); + break; + } + } +} + +/* +** Return a JsonNode and all its descendents as a JSON string. +*/ +static void jsonReturnJson( + JsonNode *pNode, /* Node to return */ + sqlite3_context *pCtx, /* Return value for this function */ + sqlite3_value **aReplace /* Array of replacement values */ +){ + JsonString s; + jsonInit(&s, pCtx); + jsonRenderNode(pNode, &s, aReplace); + jsonResult(&s); + sqlite3_result_subtype(pCtx, JSON_SUBTYPE); +} + +/* +** Make the JsonNode the return value of the function. +*/ +static void jsonReturn( + JsonNode *pNode, /* Node to return */ + sqlite3_context *pCtx, /* Return value for this function */ + sqlite3_value **aReplace /* Array of replacement values */ +){ + switch( pNode->eType ){ + default: { + assert( pNode->eType==JSON_NULL ); + sqlite3_result_null(pCtx); + break; + } + case JSON_TRUE: { + sqlite3_result_int(pCtx, 1); + break; + } + case JSON_FALSE: { + sqlite3_result_int(pCtx, 0); + break; + } + case JSON_INT: { + sqlite3_int64 i = 0; + const char *z = pNode->u.zJContent; + if( z[0]=='-' ){ z++; } + while( z[0]>='0' && z[0]<='9' ){ + unsigned v = *(z++) - '0'; + if( i>=LARGEST_INT64/10 ){ + if( i>LARGEST_INT64/10 ) goto int_as_real; + if( z[0]>='0' && z[0]<='9' ) goto int_as_real; + if( v==9 ) goto int_as_real; + if( v==8 ){ + if( pNode->u.zJContent[0]=='-' ){ + sqlite3_result_int64(pCtx, SMALLEST_INT64); + goto int_done; + }else{ + goto int_as_real; + } + } + } + i = i*10 + v; + } + if( pNode->u.zJContent[0]=='-' ){ i = -i; } + sqlite3_result_int64(pCtx, i); + int_done: + break; + int_as_real: /* fall through to real */; + } + case JSON_REAL: { + double r; +#ifdef SQLITE_AMALGAMATION + const char *z = pNode->u.zJContent; + sqlite3AtoF(z, &r, sqlite3Strlen30(z), SQLITE_UTF8); +#else + r = strtod(pNode->u.zJContent, 0); +#endif + sqlite3_result_double(pCtx, r); + break; + } + case JSON_STRING: { +#if 0 /* Never happens because JNODE_RAW is only set by json_set(), + ** json_insert() and json_replace() and those routines do not + ** call jsonReturn() */ + if( pNode->jnFlags & JNODE_RAW ){ + sqlite3_result_text(pCtx, pNode->u.zJContent, pNode->n, + SQLITE_TRANSIENT); + }else +#endif + assert( (pNode->jnFlags & JNODE_RAW)==0 ); + if( (pNode->jnFlags & JNODE_ESCAPE)==0 ){ + /* JSON formatted without any backslash-escapes */ + sqlite3_result_text(pCtx, pNode->u.zJContent+1, pNode->n-2, + SQLITE_TRANSIENT); + }else{ + /* Translate JSON formatted string into raw text */ + u32 i; + u32 n = pNode->n; + const char *z = pNode->u.zJContent; + char *zOut; + u32 j; + zOut = sqlite3_malloc( n+1 ); + if( zOut==0 ){ + sqlite3_result_error_nomem(pCtx); + break; + } + for(i=1, j=0; i>6)); + zOut[j++] = 0x80 | (v&0x3f); + }else{ + zOut[j++] = (char)(0xe0 | (v>>12)); + zOut[j++] = 0x80 | ((v>>6)&0x3f); + zOut[j++] = 0x80 | (v&0x3f); + } + }else{ + if( c=='b' ){ + c = '\b'; + }else if( c=='f' ){ + c = '\f'; + }else if( c=='n' ){ + c = '\n'; + }else if( c=='r' ){ + c = '\r'; + }else if( c=='t' ){ + c = '\t'; + } + zOut[j++] = c; + } + } + } + zOut[j] = 0; + sqlite3_result_text(pCtx, zOut, j, sqlite3_free); + } + break; + } + case JSON_ARRAY: + case JSON_OBJECT: { + jsonReturnJson(pNode, pCtx, aReplace); + break; + } + } +} + +/* Forward reference */ +static int jsonParseAddNode(JsonParse*,u32,u32,const char*); + +/* +** A macro to hint to the compiler that a function should not be +** inlined. +*/ +#if defined(__GNUC__) +# define JSON_NOINLINE __attribute__((noinline)) +#elif defined(_MSC_VER) && _MSC_VER>=1310 +# define JSON_NOINLINE __declspec(noinline) +#else +# define JSON_NOINLINE +#endif + + +static JSON_NOINLINE int jsonParseAddNodeExpand( + JsonParse *pParse, /* Append the node to this object */ + u32 eType, /* Node type */ + u32 n, /* Content size or sub-node count */ + const char *zContent /* Content */ +){ + u32 nNew; + JsonNode *pNew; + assert( pParse->nNode>=pParse->nAlloc ); + if( pParse->oom ) return -1; + nNew = pParse->nAlloc*2 + 10; + pNew = sqlite3_realloc(pParse->aNode, sizeof(JsonNode)*nNew); + if( pNew==0 ){ + pParse->oom = 1; + return -1; + } + pParse->nAlloc = nNew; + pParse->aNode = pNew; + assert( pParse->nNodenAlloc ); + return jsonParseAddNode(pParse, eType, n, zContent); +} + +/* +** Create a new JsonNode instance based on the arguments and append that +** instance to the JsonParse. Return the index in pParse->aNode[] of the +** new node, or -1 if a memory allocation fails. +*/ +static int jsonParseAddNode( + JsonParse *pParse, /* Append the node to this object */ + u32 eType, /* Node type */ + u32 n, /* Content size or sub-node count */ + const char *zContent /* Content */ +){ + JsonNode *p; + if( pParse->nNode>=pParse->nAlloc ){ + return jsonParseAddNodeExpand(pParse, eType, n, zContent); + } + p = &pParse->aNode[pParse->nNode]; + p->eType = (u8)eType; + p->jnFlags = 0; + p->n = n; + p->u.zJContent = zContent; + return pParse->nNode++; +} + +/* +** Return true if z[] begins with 4 (or more) hexadecimal digits +*/ +static int jsonIs4Hex(const char *z){ + int i; + for(i=0; i<4; i++) if( !safe_isxdigit(z[i]) ) return 0; + return 1; +} + +/* +** Parse a single JSON value which begins at pParse->zJson[i]. Return the +** index of the first character past the end of the value parsed. +** +** Return negative for a syntax error. Special cases: return -2 if the +** first non-whitespace character is '}' and return -3 if the first +** non-whitespace character is ']'. +*/ +static int jsonParseValue(JsonParse *pParse, u32 i){ + char c; + u32 j; + int iThis; + int x; + JsonNode *pNode; + const char *z = pParse->zJson; + while( safe_isspace(z[i]) ){ i++; } + if( (c = z[i])=='{' ){ + /* Parse object */ + iThis = jsonParseAddNode(pParse, JSON_OBJECT, 0, 0); + if( iThis<0 ) return -1; + for(j=i+1;;j++){ + while( safe_isspace(z[j]) ){ j++; } + if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1; + x = jsonParseValue(pParse, j); + if( x<0 ){ + pParse->iDepth--; + if( x==(-2) && pParse->nNode==(u32)iThis+1 ) return j+1; + return -1; + } + if( pParse->oom ) return -1; + pNode = &pParse->aNode[pParse->nNode-1]; + if( pNode->eType!=JSON_STRING ) return -1; + pNode->jnFlags |= JNODE_LABEL; + j = x; + while( safe_isspace(z[j]) ){ j++; } + if( z[j]!=':' ) return -1; + j++; + x = jsonParseValue(pParse, j); + pParse->iDepth--; + if( x<0 ) return -1; + j = x; + while( safe_isspace(z[j]) ){ j++; } + c = z[j]; + if( c==',' ) continue; + if( c!='}' ) return -1; + break; + } + pParse->aNode[iThis].n = pParse->nNode - (u32)iThis - 1; + return j+1; + }else if( c=='[' ){ + /* Parse array */ + iThis = jsonParseAddNode(pParse, JSON_ARRAY, 0, 0); + if( iThis<0 ) return -1; + for(j=i+1;;j++){ + while( safe_isspace(z[j]) ){ j++; } + if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1; + x = jsonParseValue(pParse, j); + pParse->iDepth--; + if( x<0 ){ + if( x==(-3) && pParse->nNode==(u32)iThis+1 ) return j+1; + return -1; + } + j = x; + while( safe_isspace(z[j]) ){ j++; } + c = z[j]; + if( c==',' ) continue; + if( c!=']' ) return -1; + break; + } + pParse->aNode[iThis].n = pParse->nNode - (u32)iThis - 1; + return j+1; + }else if( c=='"' ){ + /* Parse string */ + u8 jnFlags = 0; + j = i+1; + for(;;){ + c = z[j]; + if( (c & ~0x1f)==0 ){ + /* Control characters are not allowed in strings */ + return -1; + } + if( c=='\\' ){ + c = z[++j]; + if( c=='"' || c=='\\' || c=='/' || c=='b' || c=='f' + || c=='n' || c=='r' || c=='t' + || (c=='u' && jsonIs4Hex(z+j+1)) ){ + jnFlags = JNODE_ESCAPE; + }else{ + return -1; + } + }else if( c=='"' ){ + break; + } + j++; + } + jsonParseAddNode(pParse, JSON_STRING, j+1-i, &z[i]); + if( !pParse->oom ) pParse->aNode[pParse->nNode-1].jnFlags = jnFlags; + return j+1; + }else if( c=='n' + && strncmp(z+i,"null",4)==0 + && !safe_isalnum(z[i+4]) ){ + jsonParseAddNode(pParse, JSON_NULL, 0, 0); + return i+4; + }else if( c=='t' + && strncmp(z+i,"true",4)==0 + && !safe_isalnum(z[i+4]) ){ + jsonParseAddNode(pParse, JSON_TRUE, 0, 0); + return i+4; + }else if( c=='f' + && strncmp(z+i,"false",5)==0 + && !safe_isalnum(z[i+5]) ){ + jsonParseAddNode(pParse, JSON_FALSE, 0, 0); + return i+5; + }else if( c=='-' || (c>='0' && c<='9') ){ + /* Parse number */ + u8 seenDP = 0; + u8 seenE = 0; + assert( '-' < '0' ); + if( c<='0' ){ + j = c=='-' ? i+1 : i; + if( z[j]=='0' && z[j+1]>='0' && z[j+1]<='9' ) return -1; + } + j = i+1; + for(;; j++){ + c = z[j]; + if( c>='0' && c<='9' ) continue; + if( c=='.' ){ + if( z[j-1]=='-' ) return -1; + if( seenDP ) return -1; + seenDP = 1; + continue; + } + if( c=='e' || c=='E' ){ + if( z[j-1]<'0' ) return -1; + if( seenE ) return -1; + seenDP = seenE = 1; + c = z[j+1]; + if( c=='+' || c=='-' ){ + j++; + c = z[j+1]; + } + if( c<'0' || c>'9' ) return -1; + continue; + } + break; + } + if( z[j-1]<'0' ) return -1; + jsonParseAddNode(pParse, seenDP ? JSON_REAL : JSON_INT, + j - i, &z[i]); + return j; + }else if( c=='}' ){ + return -2; /* End of {...} */ + }else if( c==']' ){ + return -3; /* End of [...] */ + }else if( c==0 ){ + return 0; /* End of file */ + }else{ + return -1; /* Syntax error */ + } +} + +/* +** Parse a complete JSON string. Return 0 on success or non-zero if there +** are any errors. If an error occurs, free all memory associated with +** pParse. +** +** pParse is uninitialized when this routine is called. +*/ +static int jsonParse( + JsonParse *pParse, /* Initialize and fill this JsonParse object */ + sqlite3_context *pCtx, /* Report errors here */ + const char *zJson /* Input JSON text to be parsed */ +){ + int i; + memset(pParse, 0, sizeof(*pParse)); + if( zJson==0 ) return 1; + pParse->zJson = zJson; + i = jsonParseValue(pParse, 0); + if( pParse->oom ) i = -1; + if( i>0 ){ + assert( pParse->iDepth==0 ); + while( safe_isspace(zJson[i]) ) i++; + if( zJson[i] ) i = -1; + } + if( i<=0 ){ + if( pCtx!=0 ){ + if( pParse->oom ){ + sqlite3_result_error_nomem(pCtx); + }else{ + sqlite3_result_error(pCtx, "malformed JSON", -1); + } + } + jsonParseReset(pParse); + return 1; + } + return 0; +} + +/* Mark node i of pParse as being a child of iParent. Call recursively +** to fill in all the descendants of node i. +*/ +static void jsonParseFillInParentage(JsonParse *pParse, u32 i, u32 iParent){ + JsonNode *pNode = &pParse->aNode[i]; + u32 j; + pParse->aUp[i] = iParent; + switch( pNode->eType ){ + case JSON_ARRAY: { + for(j=1; j<=pNode->n; j += jsonNodeSize(pNode+j)){ + jsonParseFillInParentage(pParse, i+j, i); + } + break; + } + case JSON_OBJECT: { + for(j=1; j<=pNode->n; j += jsonNodeSize(pNode+j+1)+1){ + pParse->aUp[i+j] = i; + jsonParseFillInParentage(pParse, i+j+1, i); + } + break; + } + default: { + break; + } + } +} + +/* +** Compute the parentage of all nodes in a completed parse. +*/ +static int jsonParseFindParents(JsonParse *pParse){ + u32 *aUp; + assert( pParse->aUp==0 ); + aUp = pParse->aUp = sqlite3_malloc( sizeof(u32)*pParse->nNode ); + if( aUp==0 ){ + pParse->oom = 1; + return SQLITE_NOMEM; + } + jsonParseFillInParentage(pParse, 0, 0); + return SQLITE_OK; +} + +/* +** Magic number used for the JSON parse cache in sqlite3_get_auxdata() +*/ +#define JSON_CACHE_ID (-429938) /* First cache entry */ +#define JSON_CACHE_SZ 4 /* Max number of cache entries */ + +/* +** Obtain a complete parse of the JSON found in the first argument +** of the argv array. Use the sqlite3_get_auxdata() cache for this +** parse if it is available. If the cache is not available or if it +** is no longer valid, parse the JSON again and return the new parse, +** and also register the new parse so that it will be available for +** future sqlite3_get_auxdata() calls. +*/ +static JsonParse *jsonParseCached( + sqlite3_context *pCtx, + sqlite3_value **argv, + sqlite3_context *pErrCtx +){ + const char *zJson = (const char*)sqlite3_value_text(argv[0]); + int nJson = sqlite3_value_bytes(argv[0]); + JsonParse *p; + JsonParse *pMatch = 0; + int iKey; + int iMinKey = 0; + u32 iMinHold = 0xffffffff; + u32 iMaxHold = 0; + if( zJson==0 ) return 0; + for(iKey=0; iKeynJson==nJson + && memcmp(p->zJson,zJson,nJson)==0 + ){ + p->nErr = 0; + pMatch = p; + }else if( p->iHoldiHold; + iMinKey = iKey; + } + if( p->iHold>iMaxHold ){ + iMaxHold = p->iHold; + } + } + if( pMatch ){ + pMatch->nErr = 0; + pMatch->iHold = iMaxHold+1; + return pMatch; + } + p = sqlite3_malloc( sizeof(*p) + nJson + 1 ); + if( p==0 ){ + sqlite3_result_error_nomem(pCtx); + return 0; + } + memset(p, 0, sizeof(*p)); + p->zJson = (char*)&p[1]; + memcpy((char*)p->zJson, zJson, nJson+1); + if( jsonParse(p, pErrCtx, p->zJson) ){ + sqlite3_free(p); + return 0; + } + p->nJson = nJson; + p->iHold = iMaxHold+1; + sqlite3_set_auxdata(pCtx, JSON_CACHE_ID+iMinKey, p, + (void(*)(void*))jsonParseFree); + return (JsonParse*)sqlite3_get_auxdata(pCtx, JSON_CACHE_ID+iMinKey); +} + +/* +** Compare the OBJECT label at pNode against zKey,nKey. Return true on +** a match. +*/ +static int jsonLabelCompare(JsonNode *pNode, const char *zKey, u32 nKey){ + if( pNode->jnFlags & JNODE_RAW ){ + if( pNode->n!=nKey ) return 0; + return strncmp(pNode->u.zJContent, zKey, nKey)==0; + }else{ + if( pNode->n!=nKey+2 ) return 0; + return strncmp(pNode->u.zJContent+1, zKey, nKey)==0; + } +} + +/* forward declaration */ +static JsonNode *jsonLookupAppend(JsonParse*,const char*,int*,const char**); + +/* +** Search along zPath to find the node specified. Return a pointer +** to that node, or NULL if zPath is malformed or if there is no such +** node. +** +** If pApnd!=0, then try to append new nodes to complete zPath if it is +** possible to do so and if no existing node corresponds to zPath. If +** new nodes are appended *pApnd is set to 1. +*/ +static JsonNode *jsonLookupStep( + JsonParse *pParse, /* The JSON to search */ + u32 iRoot, /* Begin the search at this node */ + const char *zPath, /* The path to search */ + int *pApnd, /* Append nodes to complete path if not NULL */ + const char **pzErr /* Make *pzErr point to any syntax error in zPath */ +){ + u32 i, j, nKey; + const char *zKey; + JsonNode *pRoot = &pParse->aNode[iRoot]; + if( zPath[0]==0 ) return pRoot; + if( zPath[0]=='.' ){ + if( pRoot->eType!=JSON_OBJECT ) return 0; + zPath++; + if( zPath[0]=='"' ){ + zKey = zPath + 1; + for(i=1; zPath[i] && zPath[i]!='"'; i++){} + nKey = i-1; + if( zPath[i] ){ + i++; + }else{ + *pzErr = zPath; + return 0; + } + }else{ + zKey = zPath; + for(i=0; zPath[i] && zPath[i]!='.' && zPath[i]!='['; i++){} + nKey = i; + } + if( nKey==0 ){ + *pzErr = zPath; + return 0; + } + j = 1; + for(;;){ + while( j<=pRoot->n ){ + if( jsonLabelCompare(pRoot+j, zKey, nKey) ){ + return jsonLookupStep(pParse, iRoot+j+1, &zPath[i], pApnd, pzErr); + } + j++; + j += jsonNodeSize(&pRoot[j]); + } + if( (pRoot->jnFlags & JNODE_APPEND)==0 ) break; + iRoot += pRoot->u.iAppend; + pRoot = &pParse->aNode[iRoot]; + j = 1; + } + if( pApnd ){ + u32 iStart, iLabel; + JsonNode *pNode; + iStart = jsonParseAddNode(pParse, JSON_OBJECT, 2, 0); + iLabel = jsonParseAddNode(pParse, JSON_STRING, i, zPath); + zPath += i; + pNode = jsonLookupAppend(pParse, zPath, pApnd, pzErr); + if( pParse->oom ) return 0; + if( pNode ){ + pRoot = &pParse->aNode[iRoot]; + pRoot->u.iAppend = iStart - iRoot; + pRoot->jnFlags |= JNODE_APPEND; + pParse->aNode[iLabel].jnFlags |= JNODE_RAW; + } + return pNode; + } + }else if( zPath[0]=='[' && safe_isdigit(zPath[1]) ){ + if( pRoot->eType!=JSON_ARRAY ) return 0; + i = 0; + j = 1; + while( safe_isdigit(zPath[j]) ){ + i = i*10 + zPath[j] - '0'; + j++; + } + if( zPath[j]!=']' ){ + *pzErr = zPath; + return 0; + } + zPath += j + 1; + j = 1; + for(;;){ + while( j<=pRoot->n && (i>0 || (pRoot[j].jnFlags & JNODE_REMOVE)!=0) ){ + if( (pRoot[j].jnFlags & JNODE_REMOVE)==0 ) i--; + j += jsonNodeSize(&pRoot[j]); + } + if( (pRoot->jnFlags & JNODE_APPEND)==0 ) break; + iRoot += pRoot->u.iAppend; + pRoot = &pParse->aNode[iRoot]; + j = 1; + } + if( j<=pRoot->n ){ + return jsonLookupStep(pParse, iRoot+j, zPath, pApnd, pzErr); + } + if( i==0 && pApnd ){ + u32 iStart; + JsonNode *pNode; + iStart = jsonParseAddNode(pParse, JSON_ARRAY, 1, 0); + pNode = jsonLookupAppend(pParse, zPath, pApnd, pzErr); + if( pParse->oom ) return 0; + if( pNode ){ + pRoot = &pParse->aNode[iRoot]; + pRoot->u.iAppend = iStart - iRoot; + pRoot->jnFlags |= JNODE_APPEND; + } + return pNode; + } + }else{ + *pzErr = zPath; + } + return 0; +} + +/* +** Append content to pParse that will complete zPath. Return a pointer +** to the inserted node, or return NULL if the append fails. +*/ +static JsonNode *jsonLookupAppend( + JsonParse *pParse, /* Append content to the JSON parse */ + const char *zPath, /* Description of content to append */ + int *pApnd, /* Set this flag to 1 */ + const char **pzErr /* Make this point to any syntax error */ +){ + *pApnd = 1; + if( zPath[0]==0 ){ + jsonParseAddNode(pParse, JSON_NULL, 0, 0); + return pParse->oom ? 0 : &pParse->aNode[pParse->nNode-1]; + } + if( zPath[0]=='.' ){ + jsonParseAddNode(pParse, JSON_OBJECT, 0, 0); + }else if( strncmp(zPath,"[0]",3)==0 ){ + jsonParseAddNode(pParse, JSON_ARRAY, 0, 0); + }else{ + return 0; + } + if( pParse->oom ) return 0; + return jsonLookupStep(pParse, pParse->nNode-1, zPath, pApnd, pzErr); +} + +/* +** Return the text of a syntax error message on a JSON path. Space is +** obtained from sqlite3_malloc(). +*/ +static char *jsonPathSyntaxError(const char *zErr){ + return sqlite3_mprintf("JSON path error near '%q'", zErr); +} + +/* +** Do a node lookup using zPath. Return a pointer to the node on success. +** Return NULL if not found or if there is an error. +** +** On an error, write an error message into pCtx and increment the +** pParse->nErr counter. +** +** If pApnd!=NULL then try to append missing nodes and set *pApnd = 1 if +** nodes are appended. +*/ +static JsonNode *jsonLookup( + JsonParse *pParse, /* The JSON to search */ + const char *zPath, /* The path to search */ + int *pApnd, /* Append nodes to complete path if not NULL */ + sqlite3_context *pCtx /* Report errors here, if not NULL */ +){ + const char *zErr = 0; + JsonNode *pNode = 0; + char *zMsg; + + if( zPath==0 ) return 0; + if( zPath[0]!='$' ){ + zErr = zPath; + goto lookup_err; + } + zPath++; + pNode = jsonLookupStep(pParse, 0, zPath, pApnd, &zErr); + if( zErr==0 ) return pNode; + +lookup_err: + pParse->nErr++; + assert( zErr!=0 && pCtx!=0 ); + zMsg = jsonPathSyntaxError(zErr); + if( zMsg ){ + sqlite3_result_error(pCtx, zMsg, -1); + sqlite3_free(zMsg); + }else{ + sqlite3_result_error_nomem(pCtx); + } + return 0; +} + + +/* +** Report the wrong number of arguments for json_insert(), json_replace() +** or json_set(). +*/ +static void jsonWrongNumArgs( + sqlite3_context *pCtx, + const char *zFuncName +){ + char *zMsg = sqlite3_mprintf("json_%s() needs an odd number of arguments", + zFuncName); + sqlite3_result_error(pCtx, zMsg, -1); + sqlite3_free(zMsg); +} + +/* +** Mark all NULL entries in the Object passed in as JNODE_REMOVE. +*/ +static void jsonRemoveAllNulls(JsonNode *pNode){ + int i, n; + assert( pNode->eType==JSON_OBJECT ); + n = pNode->n; + for(i=2; i<=n; i += jsonNodeSize(&pNode[i])+1){ + switch( pNode[i].eType ){ + case JSON_NULL: + pNode[i].jnFlags |= JNODE_REMOVE; + break; + case JSON_OBJECT: + jsonRemoveAllNulls(&pNode[i]); + break; + } + } +} + + +/**************************************************************************** +** SQL functions used for testing and debugging +****************************************************************************/ + +#ifdef SQLITE_DEBUG +/* +** The json_parse(JSON) function returns a string which describes +** a parse of the JSON provided. Or it returns NULL if JSON is not +** well-formed. +*/ +static void jsonParseFunc( + sqlite3_context *ctx, + int argc, + sqlite3_value **argv +){ + JsonString s; /* Output string - not real JSON */ + JsonParse x; /* The parse */ + u32 i; + + assert( argc==1 ); + if( jsonParse(&x, ctx, (const char*)sqlite3_value_text(argv[0])) ) return; + jsonParseFindParents(&x); + jsonInit(&s, ctx); + for(i=0; inNode ); + if( argc==2 ){ + const char *zPath = (const char*)sqlite3_value_text(argv[1]); + pNode = jsonLookup(p, zPath, 0, ctx); + }else{ + pNode = p->aNode; + } + if( pNode==0 ){ + return; + } + if( pNode->eType==JSON_ARRAY ){ + assert( (pNode->jnFlags & JNODE_APPEND)==0 ); + for(i=1; i<=pNode->n; n++){ + i += jsonNodeSize(&pNode[i]); + } + } + sqlite3_result_int64(ctx, n); +} + +/* +** json_extract(JSON, PATH, ...) +** +** Return the element described by PATH. Return NULL if there is no +** PATH element. If there are multiple PATHs, then return a JSON array +** with the result from each path. Throw an error if the JSON or any PATH +** is malformed. +*/ +static void jsonExtractFunc( + sqlite3_context *ctx, + int argc, + sqlite3_value **argv +){ + JsonParse *p; /* The parse */ + JsonNode *pNode; + const char *zPath; + JsonString jx; + int i; + + if( argc<2 ) return; + p = jsonParseCached(ctx, argv, ctx); + if( p==0 ) return; + jsonInit(&jx, ctx); + jsonAppendChar(&jx, '['); + for(i=1; inErr ) break; + if( argc>2 ){ + jsonAppendSeparator(&jx); + if( pNode ){ + jsonRenderNode(pNode, &jx, 0); + }else{ + jsonAppendRaw(&jx, "null", 4); + } + }else if( pNode ){ + jsonReturn(pNode, ctx, 0); + } + } + if( argc>2 && i==argc ){ + jsonAppendChar(&jx, ']'); + jsonResult(&jx); + sqlite3_result_subtype(ctx, JSON_SUBTYPE); + } + jsonReset(&jx); +} + +/* This is the RFC 7396 MergePatch algorithm. +*/ +static JsonNode *jsonMergePatch( + JsonParse *pParse, /* The JSON parser that contains the TARGET */ + u32 iTarget, /* Node of the TARGET in pParse */ + JsonNode *pPatch /* The PATCH */ +){ + u32 i, j; + u32 iRoot; + JsonNode *pTarget; + if( pPatch->eType!=JSON_OBJECT ){ + return pPatch; + } + assert( iTarget>=0 && iTargetnNode ); + pTarget = &pParse->aNode[iTarget]; + assert( (pPatch->jnFlags & JNODE_APPEND)==0 ); + if( pTarget->eType!=JSON_OBJECT ){ + jsonRemoveAllNulls(pPatch); + return pPatch; + } + iRoot = iTarget; + for(i=1; in; i += jsonNodeSize(&pPatch[i+1])+1){ + u32 nKey; + const char *zKey; + assert( pPatch[i].eType==JSON_STRING ); + assert( pPatch[i].jnFlags & JNODE_LABEL ); + nKey = pPatch[i].n; + zKey = pPatch[i].u.zJContent; + assert( (pPatch[i].jnFlags & JNODE_RAW)==0 ); + for(j=1; jn; j += jsonNodeSize(&pTarget[j+1])+1 ){ + assert( pTarget[j].eType==JSON_STRING ); + assert( pTarget[j].jnFlags & JNODE_LABEL ); + assert( (pPatch[i].jnFlags & JNODE_RAW)==0 ); + if( pTarget[j].n==nKey && strncmp(pTarget[j].u.zJContent,zKey,nKey)==0 ){ + if( pTarget[j+1].jnFlags & (JNODE_REMOVE|JNODE_PATCH) ) break; + if( pPatch[i+1].eType==JSON_NULL ){ + pTarget[j+1].jnFlags |= JNODE_REMOVE; + }else{ + JsonNode *pNew = jsonMergePatch(pParse, iTarget+j+1, &pPatch[i+1]); + if( pNew==0 ) return 0; + pTarget = &pParse->aNode[iTarget]; + if( pNew!=&pTarget[j+1] ){ + pTarget[j+1].u.pPatch = pNew; + pTarget[j+1].jnFlags |= JNODE_PATCH; + } + } + break; + } + } + if( j>=pTarget->n && pPatch[i+1].eType!=JSON_NULL ){ + int iStart, iPatch; + iStart = jsonParseAddNode(pParse, JSON_OBJECT, 2, 0); + jsonParseAddNode(pParse, JSON_STRING, nKey, zKey); + iPatch = jsonParseAddNode(pParse, JSON_TRUE, 0, 0); + if( pParse->oom ) return 0; + jsonRemoveAllNulls(pPatch); + pTarget = &pParse->aNode[iTarget]; + pParse->aNode[iRoot].jnFlags |= JNODE_APPEND; + pParse->aNode[iRoot].u.iAppend = iStart - iRoot; + iRoot = iStart; + pParse->aNode[iPatch].jnFlags |= JNODE_PATCH; + pParse->aNode[iPatch].u.pPatch = &pPatch[i+1]; + } + } + return pTarget; +} + +/* +** Implementation of the json_mergepatch(JSON1,JSON2) function. Return a JSON +** object that is the result of running the RFC 7396 MergePatch() algorithm +** on the two arguments. +*/ +static void jsonPatchFunc( + sqlite3_context *ctx, + int argc, + sqlite3_value **argv +){ + JsonParse x; /* The JSON that is being patched */ + JsonParse y; /* The patch */ + JsonNode *pResult; /* The result of the merge */ + + UNUSED_PARAM(argc); + if( jsonParse(&x, ctx, (const char*)sqlite3_value_text(argv[0])) ) return; + if( jsonParse(&y, ctx, (const char*)sqlite3_value_text(argv[1])) ){ + jsonParseReset(&x); + return; + } + pResult = jsonMergePatch(&x, 0, y.aNode); + assert( pResult!=0 || x.oom ); + if( pResult ){ + jsonReturnJson(pResult, ctx, 0); + }else{ + sqlite3_result_error_nomem(ctx); + } + jsonParseReset(&x); + jsonParseReset(&y); +} + + +/* +** Implementation of the json_object(NAME,VALUE,...) function. Return a JSON +** object that contains all name/value given in arguments. Or if any name +** is not a string or if any value is a BLOB, throw an error. +*/ +static void jsonObjectFunc( + sqlite3_context *ctx, + int argc, + sqlite3_value **argv +){ + int i; + JsonString jx; + const char *z; + u32 n; + + if( argc&1 ){ + sqlite3_result_error(ctx, "json_object() requires an even number " + "of arguments", -1); + return; + } + jsonInit(&jx, ctx); + jsonAppendChar(&jx, '{'); + for(i=0; ijnFlags |= JNODE_REMOVE; + } + if( (x.aNode[0].jnFlags & JNODE_REMOVE)==0 ){ + jsonReturnJson(x.aNode, ctx, 0); + } +remove_done: + jsonParseReset(&x); +} + +/* +** json_replace(JSON, PATH, VALUE, ...) +** +** Replace the value at PATH with VALUE. If PATH does not already exist, +** this routine is a no-op. If JSON or PATH is malformed, throw an error. +*/ +static void jsonReplaceFunc( + sqlite3_context *ctx, + int argc, + sqlite3_value **argv +){ + JsonParse x; /* The parse */ + JsonNode *pNode; + const char *zPath; + u32 i; + + if( argc<1 ) return; + if( (argc&1)==0 ) { + jsonWrongNumArgs(ctx, "replace"); + return; + } + if( jsonParse(&x, ctx, (const char*)sqlite3_value_text(argv[0])) ) return; + assert( x.nNode ); + for(i=1; i<(u32)argc; i+=2){ + zPath = (const char*)sqlite3_value_text(argv[i]); + pNode = jsonLookup(&x, zPath, 0, ctx); + if( x.nErr ) goto replace_err; + if( pNode ){ + pNode->jnFlags |= (u8)JNODE_REPLACE; + pNode->u.iReplace = i + 1; + } + } + if( x.aNode[0].jnFlags & JNODE_REPLACE ){ + sqlite3_result_value(ctx, argv[x.aNode[0].u.iReplace]); + }else{ + jsonReturnJson(x.aNode, ctx, argv); + } +replace_err: + jsonParseReset(&x); +} + +/* +** json_set(JSON, PATH, VALUE, ...) +** +** Set the value at PATH to VALUE. Create the PATH if it does not already +** exist. Overwrite existing values that do exist. +** If JSON or PATH is malformed, throw an error. +** +** json_insert(JSON, PATH, VALUE, ...) +** +** Create PATH and initialize it to VALUE. If PATH already exists, this +** routine is a no-op. If JSON or PATH is malformed, throw an error. +*/ +static void jsonSetFunc( + sqlite3_context *ctx, + int argc, + sqlite3_value **argv +){ + JsonParse x; /* The parse */ + JsonNode *pNode; + const char *zPath; + u32 i; + int bApnd; + int bIsSet = *(int*)sqlite3_user_data(ctx); + + if( argc<1 ) return; + if( (argc&1)==0 ) { + jsonWrongNumArgs(ctx, bIsSet ? "set" : "insert"); + return; + } + if( jsonParse(&x, ctx, (const char*)sqlite3_value_text(argv[0])) ) return; + assert( x.nNode ); + for(i=1; i<(u32)argc; i+=2){ + zPath = (const char*)sqlite3_value_text(argv[i]); + bApnd = 0; + pNode = jsonLookup(&x, zPath, &bApnd, ctx); + if( x.oom ){ + sqlite3_result_error_nomem(ctx); + goto jsonSetDone; + }else if( x.nErr ){ + goto jsonSetDone; + }else if( pNode && (bApnd || bIsSet) ){ + pNode->jnFlags |= (u8)JNODE_REPLACE; + pNode->u.iReplace = i + 1; + } + } + if( x.aNode[0].jnFlags & JNODE_REPLACE ){ + sqlite3_result_value(ctx, argv[x.aNode[0].u.iReplace]); + }else{ + jsonReturnJson(x.aNode, ctx, argv); + } +jsonSetDone: + jsonParseReset(&x); +} + +/* +** json_type(JSON) +** json_type(JSON, PATH) +** +** Return the top-level "type" of a JSON string. Throw an error if +** either the JSON or PATH inputs are not well-formed. +*/ +static void jsonTypeFunc( + sqlite3_context *ctx, + int argc, + sqlite3_value **argv +){ + JsonParse *p; /* The parse */ + const char *zPath; + JsonNode *pNode; + + p = jsonParseCached(ctx, argv, ctx); + if( p==0 ) return; + if( argc==2 ){ + zPath = (const char*)sqlite3_value_text(argv[1]); + pNode = jsonLookup(p, zPath, 0, ctx); + }else{ + pNode = p->aNode; + } + if( pNode ){ + sqlite3_result_text(ctx, jsonType[pNode->eType], -1, SQLITE_STATIC); + } +} + +/* +** json_valid(JSON) +** +** Return 1 if JSON is a well-formed JSON string according to RFC-7159. +** Return 0 otherwise. +*/ +static void jsonValidFunc( + sqlite3_context *ctx, + int argc, + sqlite3_value **argv +){ + JsonParse *p; /* The parse */ + UNUSED_PARAM(argc); + p = jsonParseCached(ctx, argv, 0); + sqlite3_result_int(ctx, p!=0); +} + + +/**************************************************************************** +** Aggregate SQL function implementations +****************************************************************************/ +/* +** json_group_array(VALUE) +** +** Return a JSON array composed of all values in the aggregate. +*/ +static void jsonArrayStep( + sqlite3_context *ctx, + int argc, + sqlite3_value **argv +){ + JsonString *pStr; + UNUSED_PARAM(argc); + pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr)); + if( pStr ){ + if( pStr->zBuf==0 ){ + jsonInit(pStr, ctx); + jsonAppendChar(pStr, '['); + }else{ + jsonAppendChar(pStr, ','); + pStr->pCtx = ctx; + } + jsonAppendValue(pStr, argv[0]); + } +} +static void jsonArrayCompute(sqlite3_context *ctx, int isFinal){ + JsonString *pStr; + pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0); + if( pStr ){ + pStr->pCtx = ctx; + jsonAppendChar(pStr, ']'); + if( pStr->bErr ){ + if( pStr->bErr==1 ) sqlite3_result_error_nomem(ctx); + assert( pStr->bStatic ); + }else if( isFinal ){ + sqlite3_result_text(ctx, pStr->zBuf, (int)pStr->nUsed, + pStr->bStatic ? SQLITE_TRANSIENT : sqlite3_free); + pStr->bStatic = 1; + }else{ + sqlite3_result_text(ctx, pStr->zBuf, (int)pStr->nUsed, SQLITE_TRANSIENT); + pStr->nUsed--; + } + }else{ + sqlite3_result_text(ctx, "[]", 2, SQLITE_STATIC); + } + sqlite3_result_subtype(ctx, JSON_SUBTYPE); +} +static void jsonArrayValue(sqlite3_context *ctx){ + jsonArrayCompute(ctx, 0); +} +static void jsonArrayFinal(sqlite3_context *ctx){ + jsonArrayCompute(ctx, 1); +} + +#ifndef SQLITE_OMIT_WINDOWFUNC +/* +** This method works for both json_group_array() and json_group_object(). +** It works by removing the first element of the group by searching forward +** to the first comma (",") that is not within a string and deleting all +** text through that comma. +*/ +static void jsonGroupInverse( + sqlite3_context *ctx, + int argc, + sqlite3_value **argv +){ + int i; + int inStr = 0; + char *z; + JsonString *pStr; + UNUSED_PARAM(argc); + UNUSED_PARAM(argv); + pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0); +#ifdef NEVER + /* pStr is always non-NULL since jsonArrayStep() or jsonObjectStep() will + ** always have been called to initalize it */ + if( NEVER(!pStr) ) return; +#endif + z = pStr->zBuf; + for(i=1; z[i]!=',' || inStr; i++){ + assert( inUsed ); + if( z[i]=='"' ){ + inStr = !inStr; + }else if( z[i]=='\\' ){ + i++; + } + } + pStr->nUsed -= i; + memmove(&z[1], &z[i+1], (size_t)pStr->nUsed-1); +} +#else +# define jsonGroupInverse 0 +#endif + + +/* +** json_group_obj(NAME,VALUE) +** +** Return a JSON object composed of all names and values in the aggregate. +*/ +static void jsonObjectStep( + sqlite3_context *ctx, + int argc, + sqlite3_value **argv +){ + JsonString *pStr; + const char *z; + u32 n; + UNUSED_PARAM(argc); + pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr)); + if( pStr ){ + if( pStr->zBuf==0 ){ + jsonInit(pStr, ctx); + jsonAppendChar(pStr, '{'); + }else{ + jsonAppendChar(pStr, ','); + pStr->pCtx = ctx; + } + z = (const char*)sqlite3_value_text(argv[0]); + n = (u32)sqlite3_value_bytes(argv[0]); + jsonAppendString(pStr, z, n); + jsonAppendChar(pStr, ':'); + jsonAppendValue(pStr, argv[1]); + } +} +static void jsonObjectCompute(sqlite3_context *ctx, int isFinal){ + JsonString *pStr; + pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0); + if( pStr ){ + jsonAppendChar(pStr, '}'); + if( pStr->bErr ){ + if( pStr->bErr==1 ) sqlite3_result_error_nomem(ctx); + assert( pStr->bStatic ); + }else if( isFinal ){ + sqlite3_result_text(ctx, pStr->zBuf, (int)pStr->nUsed, + pStr->bStatic ? SQLITE_TRANSIENT : sqlite3_free); + pStr->bStatic = 1; + }else{ + sqlite3_result_text(ctx, pStr->zBuf, (int)pStr->nUsed, SQLITE_TRANSIENT); + pStr->nUsed--; + } + }else{ + sqlite3_result_text(ctx, "{}", 2, SQLITE_STATIC); + } + sqlite3_result_subtype(ctx, JSON_SUBTYPE); +} +static void jsonObjectValue(sqlite3_context *ctx){ + jsonObjectCompute(ctx, 0); +} +static void jsonObjectFinal(sqlite3_context *ctx){ + jsonObjectCompute(ctx, 1); +} + + + +#ifndef SQLITE_OMIT_VIRTUALTABLE +/**************************************************************************** +** The json_each virtual table +****************************************************************************/ +typedef struct JsonEachCursor JsonEachCursor; +struct JsonEachCursor { + sqlite3_vtab_cursor base; /* Base class - must be first */ + u32 iRowid; /* The rowid */ + u32 iBegin; /* The first node of the scan */ + u32 i; /* Index in sParse.aNode[] of current row */ + u32 iEnd; /* EOF when i equals or exceeds this value */ + u8 eType; /* Type of top-level element */ + u8 bRecursive; /* True for json_tree(). False for json_each() */ + char *zJson; /* Input JSON */ + char *zRoot; /* Path by which to filter zJson */ + JsonParse sParse; /* Parse of the input JSON */ +}; + +/* Constructor for the json_each virtual table */ +static int jsonEachConnect( + sqlite3 *db, + void *pAux, + int argc, const char *const*argv, + sqlite3_vtab **ppVtab, + char **pzErr +){ + sqlite3_vtab *pNew; + int rc; + +/* Column numbers */ +#define JEACH_KEY 0 +#define JEACH_VALUE 1 +#define JEACH_TYPE 2 +#define JEACH_ATOM 3 +#define JEACH_ID 4 +#define JEACH_PARENT 5 +#define JEACH_FULLKEY 6 +#define JEACH_PATH 7 +#define JEACH_JSON 8 +#define JEACH_ROOT 9 + + UNUSED_PARAM(pzErr); + UNUSED_PARAM(argv); + UNUSED_PARAM(argc); + UNUSED_PARAM(pAux); + rc = sqlite3_declare_vtab(db, + "CREATE TABLE x(key,value,type,atom,id,parent,fullkey,path," + "json HIDDEN,root HIDDEN)"); + if( rc==SQLITE_OK ){ + pNew = *ppVtab = sqlite3_malloc( sizeof(*pNew) ); + if( pNew==0 ) return SQLITE_NOMEM; + memset(pNew, 0, sizeof(*pNew)); + } + return rc; +} + +/* destructor for json_each virtual table */ +static int jsonEachDisconnect(sqlite3_vtab *pVtab){ + sqlite3_free(pVtab); + return SQLITE_OK; +} + +/* constructor for a JsonEachCursor object for json_each(). */ +static int jsonEachOpenEach(sqlite3_vtab *p, sqlite3_vtab_cursor **ppCursor){ + JsonEachCursor *pCur; + + UNUSED_PARAM(p); + pCur = sqlite3_malloc( sizeof(*pCur) ); + if( pCur==0 ) return SQLITE_NOMEM; + memset(pCur, 0, sizeof(*pCur)); + *ppCursor = &pCur->base; + return SQLITE_OK; +} + +/* constructor for a JsonEachCursor object for json_tree(). */ +static int jsonEachOpenTree(sqlite3_vtab *p, sqlite3_vtab_cursor **ppCursor){ + int rc = jsonEachOpenEach(p, ppCursor); + if( rc==SQLITE_OK ){ + JsonEachCursor *pCur = (JsonEachCursor*)*ppCursor; + pCur->bRecursive = 1; + } + return rc; +} + +/* Reset a JsonEachCursor back to its original state. Free any memory +** held. */ +static void jsonEachCursorReset(JsonEachCursor *p){ + sqlite3_free(p->zJson); + sqlite3_free(p->zRoot); + jsonParseReset(&p->sParse); + p->iRowid = 0; + p->i = 0; + p->iEnd = 0; + p->eType = 0; + p->zJson = 0; + p->zRoot = 0; +} + +/* Destructor for a jsonEachCursor object */ +static int jsonEachClose(sqlite3_vtab_cursor *cur){ + JsonEachCursor *p = (JsonEachCursor*)cur; + jsonEachCursorReset(p); + sqlite3_free(cur); + return SQLITE_OK; +} + +/* Return TRUE if the jsonEachCursor object has been advanced off the end +** of the JSON object */ +static int jsonEachEof(sqlite3_vtab_cursor *cur){ + JsonEachCursor *p = (JsonEachCursor*)cur; + return p->i >= p->iEnd; +} + +/* Advance the cursor to the next element for json_tree() */ +static int jsonEachNext(sqlite3_vtab_cursor *cur){ + JsonEachCursor *p = (JsonEachCursor*)cur; + if( p->bRecursive ){ + if( p->sParse.aNode[p->i].jnFlags & JNODE_LABEL ) p->i++; + p->i++; + p->iRowid++; + if( p->iiEnd ){ + u32 iUp = p->sParse.aUp[p->i]; + JsonNode *pUp = &p->sParse.aNode[iUp]; + p->eType = pUp->eType; + if( pUp->eType==JSON_ARRAY ){ + if( iUp==p->i-1 ){ + pUp->u.iKey = 0; + }else{ + pUp->u.iKey++; + } + } + } + }else{ + switch( p->eType ){ + case JSON_ARRAY: { + p->i += jsonNodeSize(&p->sParse.aNode[p->i]); + p->iRowid++; + break; + } + case JSON_OBJECT: { + p->i += 1 + jsonNodeSize(&p->sParse.aNode[p->i+1]); + p->iRowid++; + break; + } + default: { + p->i = p->iEnd; + break; + } + } + } + return SQLITE_OK; +} + +/* Append the name of the path for element i to pStr +*/ +static void jsonEachComputePath( + JsonEachCursor *p, /* The cursor */ + JsonString *pStr, /* Write the path here */ + u32 i /* Path to this element */ +){ + JsonNode *pNode, *pUp; + u32 iUp; + if( i==0 ){ + jsonAppendChar(pStr, '$'); + return; + } + iUp = p->sParse.aUp[i]; + jsonEachComputePath(p, pStr, iUp); + pNode = &p->sParse.aNode[i]; + pUp = &p->sParse.aNode[iUp]; + if( pUp->eType==JSON_ARRAY ){ + jsonPrintf(30, pStr, "[%d]", pUp->u.iKey); + }else{ + assert( pUp->eType==JSON_OBJECT ); + if( (pNode->jnFlags & JNODE_LABEL)==0 ) pNode--; + assert( pNode->eType==JSON_STRING ); + assert( pNode->jnFlags & JNODE_LABEL ); + jsonPrintf(pNode->n+1, pStr, ".%.*s", pNode->n-2, pNode->u.zJContent+1); + } +} + +/* Return the value of a column */ +static int jsonEachColumn( + sqlite3_vtab_cursor *cur, /* The cursor */ + sqlite3_context *ctx, /* First argument to sqlite3_result_...() */ + int i /* Which column to return */ +){ + JsonEachCursor *p = (JsonEachCursor*)cur; + JsonNode *pThis = &p->sParse.aNode[p->i]; + switch( i ){ + case JEACH_KEY: { + if( p->i==0 ) break; + if( p->eType==JSON_OBJECT ){ + jsonReturn(pThis, ctx, 0); + }else if( p->eType==JSON_ARRAY ){ + u32 iKey; + if( p->bRecursive ){ + if( p->iRowid==0 ) break; + iKey = p->sParse.aNode[p->sParse.aUp[p->i]].u.iKey; + }else{ + iKey = p->iRowid; + } + sqlite3_result_int64(ctx, (sqlite3_int64)iKey); + } + break; + } + case JEACH_VALUE: { + if( pThis->jnFlags & JNODE_LABEL ) pThis++; + jsonReturn(pThis, ctx, 0); + break; + } + case JEACH_TYPE: { + if( pThis->jnFlags & JNODE_LABEL ) pThis++; + sqlite3_result_text(ctx, jsonType[pThis->eType], -1, SQLITE_STATIC); + break; + } + case JEACH_ATOM: { + if( pThis->jnFlags & JNODE_LABEL ) pThis++; + if( pThis->eType>=JSON_ARRAY ) break; + jsonReturn(pThis, ctx, 0); + break; + } + case JEACH_ID: { + sqlite3_result_int64(ctx, + (sqlite3_int64)p->i + ((pThis->jnFlags & JNODE_LABEL)!=0)); + break; + } + case JEACH_PARENT: { + if( p->i>p->iBegin && p->bRecursive ){ + sqlite3_result_int64(ctx, (sqlite3_int64)p->sParse.aUp[p->i]); + } + break; + } + case JEACH_FULLKEY: { + JsonString x; + jsonInit(&x, ctx); + if( p->bRecursive ){ + jsonEachComputePath(p, &x, p->i); + }else{ + if( p->zRoot ){ + jsonAppendRaw(&x, p->zRoot, (int)strlen(p->zRoot)); + }else{ + jsonAppendChar(&x, '$'); + } + if( p->eType==JSON_ARRAY ){ + jsonPrintf(30, &x, "[%d]", p->iRowid); + }else if( p->eType==JSON_OBJECT ){ + jsonPrintf(pThis->n, &x, ".%.*s", pThis->n-2, pThis->u.zJContent+1); + } + } + jsonResult(&x); + break; + } + case JEACH_PATH: { + if( p->bRecursive ){ + JsonString x; + jsonInit(&x, ctx); + jsonEachComputePath(p, &x, p->sParse.aUp[p->i]); + jsonResult(&x); + break; + } + /* For json_each() path and root are the same so fall through + ** into the root case */ + } + default: { + const char *zRoot = p->zRoot; + if( zRoot==0 ) zRoot = "$"; + sqlite3_result_text(ctx, zRoot, -1, SQLITE_STATIC); + break; + } + case JEACH_JSON: { + assert( i==JEACH_JSON ); + sqlite3_result_text(ctx, p->sParse.zJson, -1, SQLITE_STATIC); + break; + } + } + return SQLITE_OK; +} + +/* Return the current rowid value */ +static int jsonEachRowid(sqlite3_vtab_cursor *cur, sqlite_int64 *pRowid){ + JsonEachCursor *p = (JsonEachCursor*)cur; + *pRowid = p->iRowid; + return SQLITE_OK; +} + +/* The query strategy is to look for an equality constraint on the json +** column. Without such a constraint, the table cannot operate. idxNum is +** 1 if the constraint is found, 3 if the constraint and zRoot are found, +** and 0 otherwise. +*/ +static int jsonEachBestIndex( + sqlite3_vtab *tab, + sqlite3_index_info *pIdxInfo +){ + int i; + int jsonIdx = -1; + int rootIdx = -1; + const struct sqlite3_index_constraint *pConstraint; + + UNUSED_PARAM(tab); + pConstraint = pIdxInfo->aConstraint; + for(i=0; inConstraint; i++, pConstraint++){ + if( pConstraint->usable==0 ) continue; + if( pConstraint->op!=SQLITE_INDEX_CONSTRAINT_EQ ) continue; + switch( pConstraint->iColumn ){ + case JEACH_JSON: jsonIdx = i; break; + case JEACH_ROOT: rootIdx = i; break; + default: /* no-op */ break; + } + } + if( jsonIdx<0 ){ + pIdxInfo->idxNum = 0; + pIdxInfo->estimatedCost = 1e99; + }else{ + pIdxInfo->estimatedCost = 1.0; + pIdxInfo->aConstraintUsage[jsonIdx].argvIndex = 1; + pIdxInfo->aConstraintUsage[jsonIdx].omit = 1; + if( rootIdx<0 ){ + pIdxInfo->idxNum = 1; + }else{ + pIdxInfo->aConstraintUsage[rootIdx].argvIndex = 2; + pIdxInfo->aConstraintUsage[rootIdx].omit = 1; + pIdxInfo->idxNum = 3; + } + } + return SQLITE_OK; +} + +/* Start a search on a new JSON string */ +static int jsonEachFilter( + sqlite3_vtab_cursor *cur, + int idxNum, const char *idxStr, + int argc, sqlite3_value **argv +){ + JsonEachCursor *p = (JsonEachCursor*)cur; + const char *z; + const char *zRoot = 0; + sqlite3_int64 n; + + UNUSED_PARAM(idxStr); + UNUSED_PARAM(argc); + jsonEachCursorReset(p); + if( idxNum==0 ) return SQLITE_OK; + z = (const char*)sqlite3_value_text(argv[0]); + if( z==0 ) return SQLITE_OK; + n = sqlite3_value_bytes(argv[0]); + p->zJson = sqlite3_malloc64( n+1 ); + if( p->zJson==0 ) return SQLITE_NOMEM; + memcpy(p->zJson, z, (size_t)n+1); + if( jsonParse(&p->sParse, 0, p->zJson) ){ + int rc = SQLITE_NOMEM; + if( p->sParse.oom==0 ){ + sqlite3_free(cur->pVtab->zErrMsg); + cur->pVtab->zErrMsg = sqlite3_mprintf("malformed JSON"); + if( cur->pVtab->zErrMsg ) rc = SQLITE_ERROR; + } + jsonEachCursorReset(p); + return rc; + }else if( p->bRecursive && jsonParseFindParents(&p->sParse) ){ + jsonEachCursorReset(p); + return SQLITE_NOMEM; + }else{ + JsonNode *pNode = 0; + if( idxNum==3 ){ + const char *zErr = 0; + zRoot = (const char*)sqlite3_value_text(argv[1]); + if( zRoot==0 ) return SQLITE_OK; + n = sqlite3_value_bytes(argv[1]); + p->zRoot = sqlite3_malloc64( n+1 ); + if( p->zRoot==0 ) return SQLITE_NOMEM; + memcpy(p->zRoot, zRoot, (size_t)n+1); + if( zRoot[0]!='$' ){ + zErr = zRoot; + }else{ + pNode = jsonLookupStep(&p->sParse, 0, p->zRoot+1, 0, &zErr); + } + if( zErr ){ + sqlite3_free(cur->pVtab->zErrMsg); + cur->pVtab->zErrMsg = jsonPathSyntaxError(zErr); + jsonEachCursorReset(p); + return cur->pVtab->zErrMsg ? SQLITE_ERROR : SQLITE_NOMEM; + }else if( pNode==0 ){ + return SQLITE_OK; + } + }else{ + pNode = p->sParse.aNode; + } + p->iBegin = p->i = (int)(pNode - p->sParse.aNode); + p->eType = pNode->eType; + if( p->eType>=JSON_ARRAY ){ + pNode->u.iKey = 0; + p->iEnd = p->i + pNode->n + 1; + if( p->bRecursive ){ + p->eType = p->sParse.aNode[p->sParse.aUp[p->i]].eType; + if( p->i>0 && (p->sParse.aNode[p->i-1].jnFlags & JNODE_LABEL)!=0 ){ + p->i--; + } + }else{ + p->i++; + } + }else{ + p->iEnd = p->i+1; + } + } + return SQLITE_OK; +} + +/* The methods of the json_each virtual table */ +static sqlite3_module jsonEachModule = { + 0, /* iVersion */ + 0, /* xCreate */ + jsonEachConnect, /* xConnect */ + jsonEachBestIndex, /* xBestIndex */ + jsonEachDisconnect, /* xDisconnect */ + 0, /* xDestroy */ + jsonEachOpenEach, /* xOpen - open a cursor */ + jsonEachClose, /* xClose - close a cursor */ + jsonEachFilter, /* xFilter - configure scan constraints */ + jsonEachNext, /* xNext - advance a cursor */ + jsonEachEof, /* xEof - check for end of scan */ + jsonEachColumn, /* xColumn - read data */ + jsonEachRowid, /* xRowid - read data */ + 0, /* xUpdate */ + 0, /* xBegin */ + 0, /* xSync */ + 0, /* xCommit */ + 0, /* xRollback */ + 0, /* xFindMethod */ + 0, /* xRename */ + 0, /* xSavepoint */ + 0, /* xRelease */ + 0 /* xRollbackTo */ +}; + +/* The methods of the json_tree virtual table. */ +static sqlite3_module jsonTreeModule = { + 0, /* iVersion */ + 0, /* xCreate */ + jsonEachConnect, /* xConnect */ + jsonEachBestIndex, /* xBestIndex */ + jsonEachDisconnect, /* xDisconnect */ + 0, /* xDestroy */ + jsonEachOpenTree, /* xOpen - open a cursor */ + jsonEachClose, /* xClose - close a cursor */ + jsonEachFilter, /* xFilter - configure scan constraints */ + jsonEachNext, /* xNext - advance a cursor */ + jsonEachEof, /* xEof - check for end of scan */ + jsonEachColumn, /* xColumn - read data */ + jsonEachRowid, /* xRowid - read data */ + 0, /* xUpdate */ + 0, /* xBegin */ + 0, /* xSync */ + 0, /* xCommit */ + 0, /* xRollback */ + 0, /* xFindMethod */ + 0, /* xRename */ + 0, /* xSavepoint */ + 0, /* xRelease */ + 0 /* xRollbackTo */ +}; +#endif /* SQLITE_OMIT_VIRTUALTABLE */ + +/**************************************************************************** +** The following routines are the only publically visible identifiers in this +** file. Call the following routines in order to register the various SQL +** functions and the virtual table implemented by this file. +****************************************************************************/ + +SQLITE_PRIVATE int sqlite3Json1Init(sqlite3 *db){ + int rc = SQLITE_OK; + unsigned int i; + static const struct { + const char *zName; + int nArg; + int flag; + void (*xFunc)(sqlite3_context*,int,sqlite3_value**); + } aFunc[] = { + { "json", 1, 0, jsonRemoveFunc }, + { "json_array", -1, 0, jsonArrayFunc }, + { "json_array_length", 1, 0, jsonArrayLengthFunc }, + { "json_array_length", 2, 0, jsonArrayLengthFunc }, + { "json_extract", -1, 0, jsonExtractFunc }, + { "json_insert", -1, 0, jsonSetFunc }, + { "json_object", -1, 0, jsonObjectFunc }, + { "json_patch", 2, 0, jsonPatchFunc }, + { "json_quote", 1, 0, jsonQuoteFunc }, + { "json_remove", -1, 0, jsonRemoveFunc }, + { "json_replace", -1, 0, jsonReplaceFunc }, + { "json_set", -1, 1, jsonSetFunc }, + { "json_type", 1, 0, jsonTypeFunc }, + { "json_type", 2, 0, jsonTypeFunc }, + { "json_valid", 1, 0, jsonValidFunc }, + +#if SQLITE_DEBUG + /* DEBUG and TESTING functions */ + { "json_parse", 1, 0, jsonParseFunc }, + { "json_test1", 1, 0, jsonTest1Func }, +#endif + }; + static const struct { + const char *zName; + int nArg; + void (*xStep)(sqlite3_context*,int,sqlite3_value**); + void (*xFinal)(sqlite3_context*); + void (*xValue)(sqlite3_context*); + } aAgg[] = { + { "json_group_array", 1, + jsonArrayStep, jsonArrayFinal, jsonArrayValue }, + { "json_group_object", 2, + jsonObjectStep, jsonObjectFinal, jsonObjectValue }, + }; +#ifndef SQLITE_OMIT_VIRTUALTABLE + static const struct { + const char *zName; + sqlite3_module *pModule; + } aMod[] = { + { "json_each", &jsonEachModule }, + { "json_tree", &jsonTreeModule }, + }; +#endif + for(i=0; ipWriteRowid, 1); sqlite3_bind_null(pRtree->pWriteRowid, 2); @@ -173701,7 +181276,7 @@ static int rtreeUpdate( /* Figure out the rowid of the new row. */ if( bHaveRowid==0 ){ - rc = newRowid(pRtree, &cell.iRowid); + rc = rtreeNewRowid(pRtree, &cell.iRowid); } *pRowid = cell.iRowid; @@ -173793,7 +181368,7 @@ static int rtreeRename(sqlite3_vtab *pVtab, const char *zNewName){ */ static int rtreeSavepoint(sqlite3_vtab *pVtab, int iSavepoint){ Rtree *pRtree = (Rtree *)pVtab; - int iwt = pRtree->inWrTrans; + u8 iwt = pRtree->inWrTrans; UNUSED_PARAMETER(iSavepoint); pRtree->inWrTrans = 0; nodeBlobReset(pRtree); @@ -173974,7 +181549,11 @@ static int rtreeSqlInit( sqlite3_str_appendf(p, "UPDATE \"%w\".\"%w_rowid\"SET ", zDb, zPrefix); for(ii=0; iinAux; ii++){ if( ii ) sqlite3_str_append(p, ",", 1); - sqlite3_str_appendf(p,"a%d=?%d",ii,ii+2); + if( iinAuxNotNull ){ + sqlite3_str_appendf(p,"a%d=coalesce(?%d,a%d)",ii,ii+2,ii); + }else{ + sqlite3_str_appendf(p,"a%d=?%d",ii,ii+2); + } } sqlite3_str_appendf(p, " WHERE rowid=?1"); zSql = sqlite3_str_finish(p); @@ -174743,6 +182322,1673 @@ static void rtreecheck( } } +/* Conditionally include the geopoly code */ +#ifdef SQLITE_ENABLE_GEOPOLY +/************** Include geopoly.c in the middle of rtree.c *******************/ +/************** Begin file geopoly.c *****************************************/ +/* +** 2018-05-25 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** This file implements an alternative R-Tree virtual table that +** uses polygons to express the boundaries of 2-dimensional objects. +** +** This file is #include-ed onto the end of "rtree.c" so that it has +** access to all of the R-Tree internals. +*/ +/* #include */ + +/* Enable -DGEOPOLY_ENABLE_DEBUG for debugging facilities */ +#ifdef GEOPOLY_ENABLE_DEBUG + static int geo_debug = 0; +# define GEODEBUG(X) if(geo_debug)printf X +#else +# define GEODEBUG(X) +#endif + +#ifndef JSON_NULL /* The following stuff repeats things found in json1 */ +/* +** Versions of isspace(), isalnum() and isdigit() to which it is safe +** to pass signed char values. +*/ +#ifdef sqlite3Isdigit + /* Use the SQLite core versions if this routine is part of the + ** SQLite amalgamation */ +# define safe_isdigit(x) sqlite3Isdigit(x) +# define safe_isalnum(x) sqlite3Isalnum(x) +# define safe_isxdigit(x) sqlite3Isxdigit(x) +#else + /* Use the standard library for separate compilation */ +#include /* amalgamator: keep */ +# define safe_isdigit(x) isdigit((unsigned char)(x)) +# define safe_isalnum(x) isalnum((unsigned char)(x)) +# define safe_isxdigit(x) isxdigit((unsigned char)(x)) +#endif + +/* +** Growing our own isspace() routine this way is twice as fast as +** the library isspace() function. +*/ +static const char geopolyIsSpace[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; +#define safe_isspace(x) (geopolyIsSpace[(unsigned char)x]) +#endif /* JSON NULL - back to original code */ + +/* Compiler and version */ +#ifndef GCC_VERSION +#if defined(__GNUC__) && !defined(SQLITE_DISABLE_INTRINSIC) +# define GCC_VERSION (__GNUC__*1000000+__GNUC_MINOR__*1000+__GNUC_PATCHLEVEL__) +#else +# define GCC_VERSION 0 +#endif +#endif +#ifndef MSVC_VERSION +#if defined(_MSC_VER) && !defined(SQLITE_DISABLE_INTRINSIC) +# define MSVC_VERSION _MSC_VER +#else +# define MSVC_VERSION 0 +#endif +#endif + +/* Datatype for coordinates +*/ +typedef float GeoCoord; + +/* +** Internal representation of a polygon. +** +** The polygon consists of a sequence of vertexes. There is a line +** segment between each pair of vertexes, and one final segment from +** the last vertex back to the first. (This differs from the GeoJSON +** standard in which the final vertex is a repeat of the first.) +** +** The polygon follows the right-hand rule. The area to the right of +** each segment is "outside" and the area to the left is "inside". +** +** The on-disk representation consists of a 4-byte header followed by +** the values. The 4-byte header is: +** +** encoding (1 byte) 0=big-endian, 1=little-endian +** nvertex (3 bytes) Number of vertexes as a big-endian integer +*/ +typedef struct GeoPoly GeoPoly; +struct GeoPoly { + int nVertex; /* Number of vertexes */ + unsigned char hdr[4]; /* Header for on-disk representation */ + GeoCoord a[2]; /* 2*nVertex values. X (longitude) first, then Y */ +}; + +/* +** State of a parse of a GeoJSON input. +*/ +typedef struct GeoParse GeoParse; +struct GeoParse { + const unsigned char *z; /* Unparsed input */ + int nVertex; /* Number of vertexes in a[] */ + int nAlloc; /* Space allocated to a[] */ + int nErr; /* Number of errors encountered */ + GeoCoord *a; /* Array of vertexes. From sqlite3_malloc64() */ +}; + +/* Do a 4-byte byte swap */ +static void geopolySwab32(unsigned char *a){ + unsigned char t = a[0]; + a[0] = a[3]; + a[3] = t; + t = a[1]; + a[1] = a[2]; + a[2] = t; +} + +/* Skip whitespace. Return the next non-whitespace character. */ +static char geopolySkipSpace(GeoParse *p){ + while( p->z[0] && safe_isspace(p->z[0]) ) p->z++; + return p->z[0]; +} + +/* Parse out a number. Write the value into *pVal if pVal!=0. +** return non-zero on success and zero if the next token is not a number. +*/ +static int geopolyParseNumber(GeoParse *p, GeoCoord *pVal){ + char c = geopolySkipSpace(p); + const unsigned char *z = p->z; + int j = 0; + int seenDP = 0; + int seenE = 0; + if( c=='-' ){ + j = 1; + c = z[j]; + } + if( c=='0' && z[j+1]>='0' && z[j+1]<='9' ) return 0; + for(;; j++){ + c = z[j]; + if( c>='0' && c<='9' ) continue; + if( c=='.' ){ + if( z[j-1]=='-' ) return 0; + if( seenDP ) return 0; + seenDP = 1; + continue; + } + if( c=='e' || c=='E' ){ + if( z[j-1]<'0' ) return 0; + if( seenE ) return -1; + seenDP = seenE = 1; + c = z[j+1]; + if( c=='+' || c=='-' ){ + j++; + c = z[j+1]; + } + if( c<'0' || c>'9' ) return 0; + continue; + } + break; + } + if( z[j-1]<'0' ) return 0; + if( pVal ) *pVal = (GeoCoord)atof((const char*)p->z); + p->z += j; + return 1; +} + +/* +** If the input is a well-formed JSON array of coordinates with at least +** four coordinates and where each coordinate is itself a two-value array, +** then convert the JSON into a GeoPoly object and return a pointer to +** that object. +** +** If any error occurs, return NULL. +*/ +static GeoPoly *geopolyParseJson(const unsigned char *z, int *pRc){ + GeoParse s; + int rc = SQLITE_OK; + memset(&s, 0, sizeof(s)); + s.z = z; + if( geopolySkipSpace(&s)=='[' ){ + s.z++; + while( geopolySkipSpace(&s)=='[' ){ + int ii = 0; + char c; + s.z++; + if( s.nVertex>=s.nAlloc ){ + GeoCoord *aNew; + s.nAlloc = s.nAlloc*2 + 16; + aNew = sqlite3_realloc64(s.a, s.nAlloc*sizeof(GeoCoord)*2 ); + if( aNew==0 ){ + rc = SQLITE_NOMEM; + s.nErr++; + break; + } + s.a = aNew; + } + while( geopolyParseNumber(&s, ii<=1 ? &s.a[s.nVertex*2+ii] : 0) ){ + ii++; + if( ii==2 ) s.nVertex++; + c = geopolySkipSpace(&s); + s.z++; + if( c==',' ) continue; + if( c==']' && ii>=2 ) break; + s.nErr++; + rc = SQLITE_ERROR; + goto parse_json_err; + } + if( geopolySkipSpace(&s)==',' ){ + s.z++; + continue; + } + break; + } + if( geopolySkipSpace(&s)==']' + && s.nVertex>=4 + && s.a[0]==s.a[s.nVertex*2-2] + && s.a[1]==s.a[s.nVertex*2-1] + && (s.z++, geopolySkipSpace(&s)==0) + ){ + int nByte; + GeoPoly *pOut; + int x = 1; + s.nVertex--; /* Remove the redundant vertex at the end */ + nByte = sizeof(GeoPoly) * s.nVertex*2*sizeof(GeoCoord); + pOut = sqlite3_malloc64( nByte ); + x = 1; + if( pOut==0 ) goto parse_json_err; + pOut->nVertex = s.nVertex; + memcpy(pOut->a, s.a, s.nVertex*2*sizeof(GeoCoord)); + pOut->hdr[0] = *(unsigned char*)&x; + pOut->hdr[1] = (s.nVertex>>16)&0xff; + pOut->hdr[2] = (s.nVertex>>8)&0xff; + pOut->hdr[3] = s.nVertex&0xff; + sqlite3_free(s.a); + if( pRc ) *pRc = SQLITE_OK; + return pOut; + }else{ + s.nErr++; + rc = SQLITE_ERROR; + } + } +parse_json_err: + if( pRc ) *pRc = rc; + sqlite3_free(s.a); + return 0; +} + +/* +** Given a function parameter, try to interpret it as a polygon, either +** in the binary format or JSON text. Compute a GeoPoly object and +** return a pointer to that object. Or if the input is not a well-formed +** polygon, put an error message in sqlite3_context and return NULL. +*/ +static GeoPoly *geopolyFuncParam( + sqlite3_context *pCtx, /* Context for error messages */ + sqlite3_value *pVal, /* The value to decode */ + int *pRc /* Write error here */ +){ + GeoPoly *p = 0; + int nByte; + if( sqlite3_value_type(pVal)==SQLITE_BLOB + && (nByte = sqlite3_value_bytes(pVal))>=(4+6*sizeof(GeoCoord)) + ){ + const unsigned char *a = sqlite3_value_blob(pVal); + int nVertex; + nVertex = (a[1]<<16) + (a[2]<<8) + a[3]; + if( (a[0]==0 || a[0]==1) + && (nVertex*2*sizeof(GeoCoord) + 4)==(unsigned int)nByte + ){ + p = sqlite3_malloc64( sizeof(*p) + (nVertex-1)*2*sizeof(GeoCoord) ); + if( p==0 ){ + if( pRc ) *pRc = SQLITE_NOMEM; + if( pCtx ) sqlite3_result_error_nomem(pCtx); + }else{ + int x = 1; + p->nVertex = nVertex; + memcpy(p->hdr, a, nByte); + if( a[0] != *(unsigned char*)&x ){ + int ii; + for(ii=0; iia[ii]); + } + p->hdr[0] ^= 1; + } + } + } + if( pRc ) *pRc = SQLITE_OK; + return p; + }else if( sqlite3_value_type(pVal)==SQLITE_TEXT ){ + const unsigned char *zJson = sqlite3_value_text(pVal); + if( zJson==0 ){ + if( pRc ) *pRc = SQLITE_NOMEM; + return 0; + } + return geopolyParseJson(zJson, pRc); + }else{ + if( pRc ) *pRc = SQLITE_ERROR; + return 0; + } +} + +/* +** Implementation of the geopoly_blob(X) function. +** +** If the input is a well-formed Geopoly BLOB or JSON string +** then return the BLOB representation of the polygon. Otherwise +** return NULL. +*/ +static void geopolyBlobFunc( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + GeoPoly *p = geopolyFuncParam(context, argv[0], 0); + if( p ){ + sqlite3_result_blob(context, p->hdr, + 4+8*p->nVertex, SQLITE_TRANSIENT); + sqlite3_free(p); + } +} + +/* +** SQL function: geopoly_json(X) +** +** Interpret X as a polygon and render it as a JSON array +** of coordinates. Or, if X is not a valid polygon, return NULL. +*/ +static void geopolyJsonFunc( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + GeoPoly *p = geopolyFuncParam(context, argv[0], 0); + if( p ){ + sqlite3 *db = sqlite3_context_db_handle(context); + sqlite3_str *x = sqlite3_str_new(db); + int i; + sqlite3_str_append(x, "[", 1); + for(i=0; inVertex; i++){ + sqlite3_str_appendf(x, "[%!g,%!g],", p->a[i*2], p->a[i*2+1]); + } + sqlite3_str_appendf(x, "[%!g,%!g]]", p->a[0], p->a[1]); + sqlite3_result_text(context, sqlite3_str_finish(x), -1, sqlite3_free); + sqlite3_free(p); + } +} + +/* +** SQL function: geopoly_svg(X, ....) +** +** Interpret X as a polygon and render it as a SVG . +** Additional arguments are added as attributes to the . +*/ +static void geopolySvgFunc( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + GeoPoly *p = geopolyFuncParam(context, argv[0], 0); + if( p ){ + sqlite3 *db = sqlite3_context_db_handle(context); + sqlite3_str *x = sqlite3_str_new(db); + int i; + char cSep = '\''; + sqlite3_str_appendf(x, "a[i*2], p->a[i*2+1]); + cSep = ' '; + } + sqlite3_str_appendf(x, " %g,%g'", p->a[0], p->a[1]); + for(i=1; i"); + sqlite3_result_text(context, sqlite3_str_finish(x), -1, sqlite3_free); + sqlite3_free(p); + } +} + +/* +** SQL Function: geopoly_xform(poly, A, B, C, D, E, F) +** +** Transform and/or translate a polygon as follows: +** +** x1 = A*x0 + B*y0 + E +** y1 = C*x0 + D*y0 + F +** +** For a translation: +** +** geopoly_xform(poly, 1, 0, 0, 1, x-offset, y-offset) +** +** Rotate by R around the point (0,0): +** +** geopoly_xform(poly, cos(R), sin(R), -sin(R), cos(R), 0, 0) +*/ +static void geopolyXformFunc( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + GeoPoly *p = geopolyFuncParam(context, argv[0], 0); + double A = sqlite3_value_double(argv[1]); + double B = sqlite3_value_double(argv[2]); + double C = sqlite3_value_double(argv[3]); + double D = sqlite3_value_double(argv[4]); + double E = sqlite3_value_double(argv[5]); + double F = sqlite3_value_double(argv[6]); + GeoCoord x1, y1, x0, y0; + int ii; + if( p ){ + for(ii=0; iinVertex; ii++){ + x0 = p->a[ii*2]; + y0 = p->a[ii*2+1]; + x1 = (GeoCoord)(A*x0 + B*y0 + E); + y1 = (GeoCoord)(C*x0 + D*y0 + F); + p->a[ii*2] = x1; + p->a[ii*2+1] = y1; + } + sqlite3_result_blob(context, p->hdr, + 4+8*p->nVertex, SQLITE_TRANSIENT); + sqlite3_free(p); + } +} + +/* +** Implementation of the geopoly_area(X) function. +** +** If the input is a well-formed Geopoly BLOB then return the area +** enclosed by the polygon. If the polygon circulates clockwise instead +** of counterclockwise (as it should) then return the negative of the +** enclosed area. Otherwise return NULL. +*/ +static void geopolyAreaFunc( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + GeoPoly *p = geopolyFuncParam(context, argv[0], 0); + if( p ){ + double rArea = 0.0; + int ii; + for(ii=0; iinVertex-1; ii++){ + rArea += (p->a[ii*2] - p->a[ii*2+2]) /* (x0 - x1) */ + * (p->a[ii*2+1] + p->a[ii*2+3]) /* (y0 + y1) */ + * 0.5; + } + rArea += (p->a[ii*2] - p->a[0]) /* (xN - x0) */ + * (p->a[ii*2+1] + p->a[1]) /* (yN + y0) */ + * 0.5; + sqlite3_result_double(context, rArea); + sqlite3_free(p); + } +} + +/* +** If pPoly is a polygon, compute its bounding box. Then: +** +** (1) if aCoord!=0 store the bounding box in aCoord, returning NULL +** (2) otherwise, compute a GeoPoly for the bounding box and return the +** new GeoPoly +** +** If pPoly is NULL but aCoord is not NULL, then compute a new GeoPoly from +** the bounding box in aCoord and return a pointer to that GeoPoly. +*/ +static GeoPoly *geopolyBBox( + sqlite3_context *context, /* For recording the error */ + sqlite3_value *pPoly, /* The polygon */ + RtreeCoord *aCoord, /* Results here */ + int *pRc /* Error code here */ +){ + GeoPoly *pOut = 0; + GeoPoly *p; + float mnX, mxX, mnY, mxY; + if( pPoly==0 && aCoord!=0 ){ + p = 0; + mnX = aCoord[0].f; + mxX = aCoord[1].f; + mnY = aCoord[2].f; + mxY = aCoord[3].f; + goto geopolyBboxFill; + }else{ + p = geopolyFuncParam(context, pPoly, pRc); + } + if( p ){ + int ii; + mnX = mxX = p->a[0]; + mnY = mxY = p->a[1]; + for(ii=1; iinVertex; ii++){ + double r = p->a[ii*2]; + if( rmxX ) mxX = (float)r; + r = p->a[ii*2+1]; + if( rmxY ) mxY = (float)r; + } + if( pRc ) *pRc = SQLITE_OK; + if( aCoord==0 ){ + geopolyBboxFill: + pOut = sqlite3_realloc(p, sizeof(GeoPoly)+sizeof(GeoCoord)*6); + if( pOut==0 ){ + sqlite3_free(p); + if( context ) sqlite3_result_error_nomem(context); + if( pRc ) *pRc = SQLITE_NOMEM; + return 0; + } + pOut->nVertex = 4; + ii = 1; + pOut->hdr[0] = *(unsigned char*)ⅈ + pOut->hdr[1] = 0; + pOut->hdr[2] = 0; + pOut->hdr[3] = 4; + pOut->a[0] = mnX; + pOut->a[1] = mnY; + pOut->a[2] = mxX; + pOut->a[3] = mnY; + pOut->a[4] = mxX; + pOut->a[5] = mxY; + pOut->a[6] = mnX; + pOut->a[7] = mxY; + }else{ + sqlite3_free(p); + aCoord[0].f = mnX; + aCoord[1].f = mxX; + aCoord[2].f = mnY; + aCoord[3].f = mxY; + } + } + return pOut; +} + +/* +** Implementation of the geopoly_bbox(X) SQL function. +*/ +static void geopolyBBoxFunc( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + GeoPoly *p = geopolyBBox(context, argv[0], 0, 0); + if( p ){ + sqlite3_result_blob(context, p->hdr, + 4+8*p->nVertex, SQLITE_TRANSIENT); + sqlite3_free(p); + } +} + +/* +** State vector for the geopoly_group_bbox() aggregate function. +*/ +typedef struct GeoBBox GeoBBox; +struct GeoBBox { + int isInit; + RtreeCoord a[4]; +}; + + +/* +** Implementation of the geopoly_group_bbox(X) aggregate SQL function. +*/ +static void geopolyBBoxStep( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + RtreeCoord a[4]; + int rc = SQLITE_OK; + (void)geopolyBBox(context, argv[0], a, &rc); + if( rc==SQLITE_OK ){ + GeoBBox *pBBox; + pBBox = (GeoBBox*)sqlite3_aggregate_context(context, sizeof(*pBBox)); + if( pBBox==0 ) return; + if( pBBox->isInit==0 ){ + pBBox->isInit = 1; + memcpy(pBBox->a, a, sizeof(RtreeCoord)*4); + }else{ + if( a[0].f < pBBox->a[0].f ) pBBox->a[0] = a[0]; + if( a[1].f > pBBox->a[1].f ) pBBox->a[1] = a[1]; + if( a[2].f < pBBox->a[2].f ) pBBox->a[2] = a[2]; + if( a[3].f > pBBox->a[3].f ) pBBox->a[3] = a[3]; + } + } +} +static void geopolyBBoxFinal( + sqlite3_context *context +){ + GeoPoly *p; + GeoBBox *pBBox; + pBBox = (GeoBBox*)sqlite3_aggregate_context(context, 0); + if( pBBox==0 ) return; + p = geopolyBBox(context, 0, pBBox->a, 0); + if( p ){ + sqlite3_result_blob(context, p->hdr, + 4+8*p->nVertex, SQLITE_TRANSIENT); + sqlite3_free(p); + } +} + + +/* +** Determine if point (x0,y0) is beneath line segment (x1,y1)->(x2,y2). +** Returns: +** +** +2 x0,y0 is on the line segement +** +** +1 x0,y0 is beneath line segment +** +** 0 x0,y0 is not on or beneath the line segment or the line segment +** is vertical and x0,y0 is not on the line segment +** +** The left-most coordinate min(x1,x2) is not considered to be part of +** the line segment for the purposes of this analysis. +*/ +static int pointBeneathLine( + double x0, double y0, + double x1, double y1, + double x2, double y2 +){ + double y; + if( x0==x1 && y0==y1 ) return 2; + if( x1x2 ) return 0; + }else if( x1>x2 ){ + if( x0<=x2 || x0>x1 ) return 0; + }else{ + /* Vertical line segment */ + if( x0!=x1 ) return 0; + if( y0y1 && y0>y2 ) return 0; + return 2; + } + y = y1 + (y2-y1)*(x0-x1)/(x2-x1); + if( y0==y ) return 2; + if( y0nVertex-1; ii++){ + v = pointBeneathLine(x0,y0,p1->a[ii*2],p1->a[ii*2+1], + p1->a[ii*2+2],p1->a[ii*2+3]); + if( v==2 ) break; + cnt += v; + } + if( v!=2 ){ + v = pointBeneathLine(x0,y0,p1->a[ii*2],p1->a[ii*2+1], + p1->a[0],p1->a[1]); + } + if( v==2 ){ + sqlite3_result_int(context, 1); + }else if( ((v+cnt)&1)==0 ){ + sqlite3_result_int(context, 0); + }else{ + sqlite3_result_int(context, 2); + } + sqlite3_free(p1); +} + +/* Forward declaration */ +static int geopolyOverlap(GeoPoly *p1, GeoPoly *p2); + +/* +** SQL function: geopoly_within(P1,P2) +** +** Return +2 if P1 and P2 are the same polygon +** Return +1 if P2 is contained within P1 +** Return 0 if any part of P2 is on the outside of P1 +** +*/ +static void geopolyWithinFunc( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + GeoPoly *p1 = geopolyFuncParam(context, argv[0], 0); + GeoPoly *p2 = geopolyFuncParam(context, argv[1], 0); + if( p1 && p2 ){ + int x = geopolyOverlap(p1, p2); + if( x<0 ){ + sqlite3_result_error_nomem(context); + }else{ + sqlite3_result_int(context, x==2 ? 1 : x==4 ? 2 : 0); + } + } + sqlite3_free(p1); + sqlite3_free(p2); +} + +/* Objects used by the overlap algorihm. */ +typedef struct GeoEvent GeoEvent; +typedef struct GeoSegment GeoSegment; +typedef struct GeoOverlap GeoOverlap; +struct GeoEvent { + double x; /* X coordinate at which event occurs */ + int eType; /* 0 for ADD, 1 for REMOVE */ + GeoSegment *pSeg; /* The segment to be added or removed */ + GeoEvent *pNext; /* Next event in the sorted list */ +}; +struct GeoSegment { + double C, B; /* y = C*x + B */ + double y; /* Current y value */ + float y0; /* Initial y value */ + unsigned char side; /* 1 for p1, 2 for p2 */ + unsigned int idx; /* Which segment within the side */ + GeoSegment *pNext; /* Next segment in a list sorted by y */ +}; +struct GeoOverlap { + GeoEvent *aEvent; /* Array of all events */ + GeoSegment *aSegment; /* Array of all segments */ + int nEvent; /* Number of events */ + int nSegment; /* Number of segments */ +}; + +/* +** Add a single segment and its associated events. +*/ +static void geopolyAddOneSegment( + GeoOverlap *p, + GeoCoord x0, + GeoCoord y0, + GeoCoord x1, + GeoCoord y1, + unsigned char side, + unsigned int idx +){ + GeoSegment *pSeg; + GeoEvent *pEvent; + if( x0==x1 ) return; /* Ignore vertical segments */ + if( x0>x1 ){ + GeoCoord t = x0; + x0 = x1; + x1 = t; + t = y0; + y0 = y1; + y1 = t; + } + pSeg = p->aSegment + p->nSegment; + p->nSegment++; + pSeg->C = (y1-y0)/(x1-x0); + pSeg->B = y1 - x1*pSeg->C; + pSeg->y0 = y0; + pSeg->side = side; + pSeg->idx = idx; + pEvent = p->aEvent + p->nEvent; + p->nEvent++; + pEvent->x = x0; + pEvent->eType = 0; + pEvent->pSeg = pSeg; + pEvent = p->aEvent + p->nEvent; + p->nEvent++; + pEvent->x = x1; + pEvent->eType = 1; + pEvent->pSeg = pSeg; +} + + + +/* +** Insert all segments and events for polygon pPoly. +*/ +static void geopolyAddSegments( + GeoOverlap *p, /* Add segments to this Overlap object */ + GeoPoly *pPoly, /* Take all segments from this polygon */ + unsigned char side /* The side of pPoly */ +){ + unsigned int i; + GeoCoord *x; + for(i=0; i<(unsigned)pPoly->nVertex-1; i++){ + x = pPoly->a + (i*2); + geopolyAddOneSegment(p, x[0], x[1], x[2], x[3], side, i); + } + x = pPoly->a + (i*2); + geopolyAddOneSegment(p, x[0], x[1], pPoly->a[0], pPoly->a[1], side, i); +} + +/* +** Merge two lists of sorted events by X coordinate +*/ +static GeoEvent *geopolyEventMerge(GeoEvent *pLeft, GeoEvent *pRight){ + GeoEvent head, *pLast; + head.pNext = 0; + pLast = &head; + while( pRight && pLeft ){ + if( pRight->x <= pLeft->x ){ + pLast->pNext = pRight; + pLast = pRight; + pRight = pRight->pNext; + }else{ + pLast->pNext = pLeft; + pLast = pLeft; + pLeft = pLeft->pNext; + } + } + pLast->pNext = pRight ? pRight : pLeft; + return head.pNext; +} + +/* +** Sort an array of nEvent event objects into a list. +*/ +static GeoEvent *geopolySortEventsByX(GeoEvent *aEvent, int nEvent){ + int mx = 0; + int i, j; + GeoEvent *p; + GeoEvent *a[50]; + for(i=0; ipNext = 0; + for(j=0; j=mx ) mx = j+1; + } + p = 0; + for(i=0; iy - pLeft->y; + if( r==0.0 ) r = pRight->C - pLeft->C; + if( r<0.0 ){ + pLast->pNext = pRight; + pLast = pRight; + pRight = pRight->pNext; + }else{ + pLast->pNext = pLeft; + pLast = pLeft; + pLeft = pLeft->pNext; + } + } + pLast->pNext = pRight ? pRight : pLeft; + return head.pNext; +} + +/* +** Sort a list of GeoSegments in order of increasing Y and in the event of +** a tie, increasing C (slope). +*/ +static GeoSegment *geopolySortSegmentsByYAndC(GeoSegment *pList){ + int mx = 0; + int i; + GeoSegment *p; + GeoSegment *a[50]; + while( pList ){ + p = pList; + pList = pList->pNext; + p->pNext = 0; + for(i=0; i=mx ) mx = i+1; + } + p = 0; + for(i=0; inVertex + p2->nVertex + 2; + GeoOverlap *p; + int nByte; + GeoEvent *pThisEvent; + double rX; + int rc = 0; + int needSort = 0; + GeoSegment *pActive = 0; + GeoSegment *pSeg; + unsigned char aOverlap[4]; + + nByte = sizeof(GeoEvent)*nVertex*2 + + sizeof(GeoSegment)*nVertex + + sizeof(GeoOverlap); + p = sqlite3_malloc( nByte ); + if( p==0 ) return -1; + p->aEvent = (GeoEvent*)&p[1]; + p->aSegment = (GeoSegment*)&p->aEvent[nVertex*2]; + p->nEvent = p->nSegment = 0; + geopolyAddSegments(p, p1, 1); + geopolyAddSegments(p, p2, 2); + pThisEvent = geopolySortEventsByX(p->aEvent, p->nEvent); + rX = pThisEvent->x==0.0 ? -1.0 : 0.0; + memset(aOverlap, 0, sizeof(aOverlap)); + while( pThisEvent ){ + if( pThisEvent->x!=rX ){ + GeoSegment *pPrev = 0; + int iMask = 0; + GEODEBUG(("Distinct X: %g\n", pThisEvent->x)); + rX = pThisEvent->x; + if( needSort ){ + GEODEBUG(("SORT\n")); + pActive = geopolySortSegmentsByYAndC(pActive); + needSort = 0; + } + for(pSeg=pActive; pSeg; pSeg=pSeg->pNext){ + if( pPrev ){ + if( pPrev->y!=pSeg->y ){ + GEODEBUG(("MASK: %d\n", iMask)); + aOverlap[iMask] = 1; + } + } + iMask ^= pSeg->side; + pPrev = pSeg; + } + pPrev = 0; + for(pSeg=pActive; pSeg; pSeg=pSeg->pNext){ + double y = pSeg->C*rX + pSeg->B; + GEODEBUG(("Segment %d.%d %g->%g\n", pSeg->side, pSeg->idx, pSeg->y, y)); + pSeg->y = y; + if( pPrev ){ + if( pPrev->y>pSeg->y && pPrev->side!=pSeg->side ){ + rc = 1; + GEODEBUG(("Crossing: %d.%d and %d.%d\n", + pPrev->side, pPrev->idx, + pSeg->side, pSeg->idx)); + goto geopolyOverlapDone; + }else if( pPrev->y!=pSeg->y ){ + GEODEBUG(("MASK: %d\n", iMask)); + aOverlap[iMask] = 1; + } + } + iMask ^= pSeg->side; + pPrev = pSeg; + } + } + GEODEBUG(("%s %d.%d C=%g B=%g\n", + pThisEvent->eType ? "RM " : "ADD", + pThisEvent->pSeg->side, pThisEvent->pSeg->idx, + pThisEvent->pSeg->C, + pThisEvent->pSeg->B)); + if( pThisEvent->eType==0 ){ + /* Add a segment */ + pSeg = pThisEvent->pSeg; + pSeg->y = pSeg->y0; + pSeg->pNext = pActive; + pActive = pSeg; + needSort = 1; + }else{ + /* Remove a segment */ + if( pActive==pThisEvent->pSeg ){ + pActive = pActive->pNext; + }else{ + for(pSeg=pActive; pSeg; pSeg=pSeg->pNext){ + if( pSeg->pNext==pThisEvent->pSeg ){ + pSeg->pNext = pSeg->pNext->pNext; + break; + } + } + } + } + pThisEvent = pThisEvent->pNext; + } + if( aOverlap[3]==0 ){ + rc = 0; + }else if( aOverlap[1]!=0 && aOverlap[2]==0 ){ + rc = 3; + }else if( aOverlap[1]==0 && aOverlap[2]!=0 ){ + rc = 2; + }else if( aOverlap[1]==0 && aOverlap[2]==0 ){ + rc = 4; + }else{ + rc = 1; + } + +geopolyOverlapDone: + sqlite3_free(p); + return rc; +} + +/* +** SQL function: geopoly_overlap(P1,P2) +** +** Determine whether or not P1 and P2 overlap. Return value: +** +** 0 The two polygons are disjoint +** 1 They overlap +** 2 P1 is completely contained within P2 +** 3 P2 is completely contained within P1 +** 4 P1 and P2 are the same polygon +** NULL Either P1 or P2 or both are not valid polygons +*/ +static void geopolyOverlapFunc( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + GeoPoly *p1 = geopolyFuncParam(context, argv[0], 0); + GeoPoly *p2 = geopolyFuncParam(context, argv[1], 0); + if( p1 && p2 ){ + int x = geopolyOverlap(p1, p2); + if( x<0 ){ + sqlite3_result_error_nomem(context); + }else{ + sqlite3_result_int(context, x); + } + } + sqlite3_free(p1); + sqlite3_free(p2); +} + +/* +** Enable or disable debugging output +*/ +static void geopolyDebugFunc( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ +#ifdef GEOPOLY_ENABLE_DEBUG + geo_debug = sqlite3_value_int(argv[0]); +#endif +} + +/* +** This function is the implementation of both the xConnect and xCreate +** methods of the geopoly virtual table. +** +** argv[0] -> module name +** argv[1] -> database name +** argv[2] -> table name +** argv[...] -> column names... +*/ +static int geopolyInit( + sqlite3 *db, /* Database connection */ + void *pAux, /* One of the RTREE_COORD_* constants */ + int argc, const char *const*argv, /* Parameters to CREATE TABLE statement */ + sqlite3_vtab **ppVtab, /* OUT: New virtual table */ + char **pzErr, /* OUT: Error message, if any */ + int isCreate /* True for xCreate, false for xConnect */ +){ + int rc = SQLITE_OK; + Rtree *pRtree; + int nDb; /* Length of string argv[1] */ + int nName; /* Length of string argv[2] */ + sqlite3_str *pSql; + char *zSql; + int ii; + + sqlite3_vtab_config(db, SQLITE_VTAB_CONSTRAINT_SUPPORT, 1); + + /* Allocate the sqlite3_vtab structure */ + nDb = (int)strlen(argv[1]); + nName = (int)strlen(argv[2]); + pRtree = (Rtree *)sqlite3_malloc(sizeof(Rtree)+nDb+nName+2); + if( !pRtree ){ + return SQLITE_NOMEM; + } + memset(pRtree, 0, sizeof(Rtree)+nDb+nName+2); + pRtree->nBusy = 1; + pRtree->base.pModule = &rtreeModule; + pRtree->zDb = (char *)&pRtree[1]; + pRtree->zName = &pRtree->zDb[nDb+1]; + pRtree->eCoordType = RTREE_COORD_REAL32; + pRtree->nDim = 2; + pRtree->nDim2 = 4; + memcpy(pRtree->zDb, argv[1], nDb); + memcpy(pRtree->zName, argv[2], nName); + + + /* Create/Connect to the underlying relational database schema. If + ** that is successful, call sqlite3_declare_vtab() to configure + ** the r-tree table schema. + */ + pSql = sqlite3_str_new(db); + sqlite3_str_appendf(pSql, "CREATE TABLE x(_shape"); + pRtree->nAux = 1; /* Add one for _shape */ + pRtree->nAuxNotNull = 1; /* The _shape column is always not-null */ + for(ii=3; iinAux++; + sqlite3_str_appendf(pSql, ",%s", argv[ii]); + } + sqlite3_str_appendf(pSql, ");"); + zSql = sqlite3_str_finish(pSql); + if( !zSql ){ + rc = SQLITE_NOMEM; + }else if( SQLITE_OK!=(rc = sqlite3_declare_vtab(db, zSql)) ){ + *pzErr = sqlite3_mprintf("%s", sqlite3_errmsg(db)); + } + sqlite3_free(zSql); + if( rc ) goto geopolyInit_fail; + pRtree->nBytesPerCell = 8 + pRtree->nDim2*4; + + /* Figure out the node size to use. */ + rc = getNodeSize(db, pRtree, isCreate, pzErr); + if( rc ) goto geopolyInit_fail; + rc = rtreeSqlInit(pRtree, db, argv[1], argv[2], isCreate); + if( rc ){ + *pzErr = sqlite3_mprintf("%s", sqlite3_errmsg(db)); + goto geopolyInit_fail; + } + + *ppVtab = (sqlite3_vtab *)pRtree; + return SQLITE_OK; + +geopolyInit_fail: + if( rc==SQLITE_OK ) rc = SQLITE_ERROR; + assert( *ppVtab==0 ); + assert( pRtree->nBusy==1 ); + rtreeRelease(pRtree); + return rc; +} + + +/* +** GEOPOLY virtual table module xCreate method. +*/ +static int geopolyCreate( + sqlite3 *db, + void *pAux, + int argc, const char *const*argv, + sqlite3_vtab **ppVtab, + char **pzErr +){ + return geopolyInit(db, pAux, argc, argv, ppVtab, pzErr, 1); +} + +/* +** GEOPOLY virtual table module xConnect method. +*/ +static int geopolyConnect( + sqlite3 *db, + void *pAux, + int argc, const char *const*argv, + sqlite3_vtab **ppVtab, + char **pzErr +){ + return geopolyInit(db, pAux, argc, argv, ppVtab, pzErr, 0); +} + + +/* +** GEOPOLY virtual table module xFilter method. +** +** Query plans: +** +** 1 rowid lookup +** 2 search for objects overlapping the same bounding box +** that contains polygon argv[0] +** 3 search for objects overlapping the same bounding box +** that contains polygon argv[0] +** 4 full table scan +*/ +static int geopolyFilter( + sqlite3_vtab_cursor *pVtabCursor, /* The cursor to initialize */ + int idxNum, /* Query plan */ + const char *idxStr, /* Not Used */ + int argc, sqlite3_value **argv /* Parameters to the query plan */ +){ + Rtree *pRtree = (Rtree *)pVtabCursor->pVtab; + RtreeCursor *pCsr = (RtreeCursor *)pVtabCursor; + RtreeNode *pRoot = 0; + int rc = SQLITE_OK; + int iCell = 0; + sqlite3_stmt *pStmt; + + rtreeReference(pRtree); + + /* Reset the cursor to the same state as rtreeOpen() leaves it in. */ + freeCursorConstraints(pCsr); + sqlite3_free(pCsr->aPoint); + pStmt = pCsr->pReadAux; + memset(pCsr, 0, sizeof(RtreeCursor)); + pCsr->base.pVtab = (sqlite3_vtab*)pRtree; + pCsr->pReadAux = pStmt; + + pCsr->iStrategy = idxNum; + if( idxNum==1 ){ + /* Special case - lookup by rowid. */ + RtreeNode *pLeaf; /* Leaf on which the required cell resides */ + RtreeSearchPoint *p; /* Search point for the leaf */ + i64 iRowid = sqlite3_value_int64(argv[0]); + i64 iNode = 0; + rc = findLeafNode(pRtree, iRowid, &pLeaf, &iNode); + if( rc==SQLITE_OK && pLeaf!=0 ){ + p = rtreeSearchPointNew(pCsr, RTREE_ZERO, 0); + assert( p!=0 ); /* Always returns pCsr->sPoint */ + pCsr->aNode[0] = pLeaf; + p->id = iNode; + p->eWithin = PARTLY_WITHIN; + rc = nodeRowidIndex(pRtree, pLeaf, iRowid, &iCell); + p->iCell = (u8)iCell; + RTREE_QUEUE_TRACE(pCsr, "PUSH-F1:"); + }else{ + pCsr->atEOF = 1; + } + }else{ + /* Normal case - r-tree scan. Set up the RtreeCursor.aConstraint array + ** with the configured constraints. + */ + rc = nodeAcquire(pRtree, 1, 0, &pRoot); + if( rc==SQLITE_OK && idxNum<=3 ){ + RtreeCoord bbox[4]; + RtreeConstraint *p; + assert( argc==1 ); + geopolyBBox(0, argv[0], bbox, &rc); + if( rc ){ + goto geopoly_filter_end; + } + pCsr->aConstraint = p = sqlite3_malloc(sizeof(RtreeConstraint)*4); + pCsr->nConstraint = 4; + if( p==0 ){ + rc = SQLITE_NOMEM; + }else{ + memset(pCsr->aConstraint, 0, sizeof(RtreeConstraint)*4); + memset(pCsr->anQueue, 0, sizeof(u32)*(pRtree->iDepth + 1)); + if( idxNum==2 ){ + /* Overlap query */ + p->op = 'B'; + p->iCoord = 0; + p->u.rValue = bbox[1].f; + p++; + p->op = 'D'; + p->iCoord = 1; + p->u.rValue = bbox[0].f; + p++; + p->op = 'B'; + p->iCoord = 2; + p->u.rValue = bbox[3].f; + p++; + p->op = 'D'; + p->iCoord = 3; + p->u.rValue = bbox[2].f; + }else{ + /* Within query */ + p->op = 'D'; + p->iCoord = 0; + p->u.rValue = bbox[0].f; + p++; + p->op = 'B'; + p->iCoord = 1; + p->u.rValue = bbox[1].f; + p++; + p->op = 'D'; + p->iCoord = 2; + p->u.rValue = bbox[2].f; + p++; + p->op = 'B'; + p->iCoord = 3; + p->u.rValue = bbox[3].f; + } + } + } + if( rc==SQLITE_OK ){ + RtreeSearchPoint *pNew; + pNew = rtreeSearchPointNew(pCsr, RTREE_ZERO, (u8)(pRtree->iDepth+1)); + if( pNew==0 ){ + rc = SQLITE_NOMEM; + goto geopoly_filter_end; + } + pNew->id = 1; + pNew->iCell = 0; + pNew->eWithin = PARTLY_WITHIN; + assert( pCsr->bPoint==1 ); + pCsr->aNode[0] = pRoot; + pRoot = 0; + RTREE_QUEUE_TRACE(pCsr, "PUSH-Fm:"); + rc = rtreeStepToLeaf(pCsr); + } + } + +geopoly_filter_end: + nodeRelease(pRtree, pRoot); + rtreeRelease(pRtree); + return rc; +} + +/* +** Rtree virtual table module xBestIndex method. There are three +** table scan strategies to choose from (in order from most to +** least desirable): +** +** idxNum idxStr Strategy +** ------------------------------------------------ +** 1 "rowid" Direct lookup by rowid. +** 2 "rtree" R-tree overlap query using geopoly_overlap() +** 3 "rtree" R-tree within query using geopoly_within() +** 4 "fullscan" full-table scan. +** ------------------------------------------------ +*/ +static int geopolyBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo){ + int ii; + int iRowidTerm = -1; + int iFuncTerm = -1; + int idxNum = 0; + + for(ii=0; iinConstraint; ii++){ + struct sqlite3_index_constraint *p = &pIdxInfo->aConstraint[ii]; + if( !p->usable ) continue; + if( p->iColumn<0 && p->op==SQLITE_INDEX_CONSTRAINT_EQ ){ + iRowidTerm = ii; + break; + } + if( p->iColumn==0 && p->op>=SQLITE_INDEX_CONSTRAINT_FUNCTION ){ + /* p->op==SQLITE_INDEX_CONSTRAINT_FUNCTION for geopoly_overlap() + ** p->op==(SQLITE_INDEX_CONTRAINT_FUNCTION+1) for geopoly_within(). + ** See geopolyFindFunction() */ + iFuncTerm = ii; + idxNum = p->op - SQLITE_INDEX_CONSTRAINT_FUNCTION + 2; + } + } + + if( iRowidTerm>=0 ){ + pIdxInfo->idxNum = 1; + pIdxInfo->idxStr = "rowid"; + pIdxInfo->aConstraintUsage[iRowidTerm].argvIndex = 1; + pIdxInfo->aConstraintUsage[iRowidTerm].omit = 1; + pIdxInfo->estimatedCost = 30.0; + pIdxInfo->estimatedRows = 1; + pIdxInfo->idxFlags = SQLITE_INDEX_SCAN_UNIQUE; + return SQLITE_OK; + } + if( iFuncTerm>=0 ){ + pIdxInfo->idxNum = idxNum; + pIdxInfo->idxStr = "rtree"; + pIdxInfo->aConstraintUsage[iFuncTerm].argvIndex = 1; + pIdxInfo->aConstraintUsage[iFuncTerm].omit = 0; + pIdxInfo->estimatedCost = 300.0; + pIdxInfo->estimatedRows = 10; + return SQLITE_OK; + } + pIdxInfo->idxNum = 4; + pIdxInfo->idxStr = "fullscan"; + pIdxInfo->estimatedCost = 3000000.0; + pIdxInfo->estimatedRows = 100000; + return SQLITE_OK; +} + + +/* +** GEOPOLY virtual table module xColumn method. +*/ +static int geopolyColumn(sqlite3_vtab_cursor *cur, sqlite3_context *ctx, int i){ + Rtree *pRtree = (Rtree *)cur->pVtab; + RtreeCursor *pCsr = (RtreeCursor *)cur; + RtreeSearchPoint *p = rtreeSearchPointFirst(pCsr); + int rc = SQLITE_OK; + RtreeNode *pNode = rtreeNodeOfFirstSearchPoint(pCsr, &rc); + + if( rc ) return rc; + if( p==0 ) return SQLITE_OK; + if( i==0 && sqlite3_vtab_nochange(ctx) ) return SQLITE_OK; + if( i<=pRtree->nAux ){ + if( !pCsr->bAuxValid ){ + if( pCsr->pReadAux==0 ){ + rc = sqlite3_prepare_v3(pRtree->db, pRtree->zReadAuxSql, -1, 0, + &pCsr->pReadAux, 0); + if( rc ) return rc; + } + sqlite3_bind_int64(pCsr->pReadAux, 1, + nodeGetRowid(pRtree, pNode, p->iCell)); + rc = sqlite3_step(pCsr->pReadAux); + if( rc==SQLITE_ROW ){ + pCsr->bAuxValid = 1; + }else{ + sqlite3_reset(pCsr->pReadAux); + if( rc==SQLITE_DONE ) rc = SQLITE_OK; + return rc; + } + } + sqlite3_result_value(ctx, sqlite3_column_value(pCsr->pReadAux, i+2)); + } + return SQLITE_OK; +} + + +/* +** The xUpdate method for GEOPOLY module virtual tables. +** +** For DELETE: +** +** argv[0] = the rowid to be deleted +** +** For INSERT: +** +** argv[0] = SQL NULL +** argv[1] = rowid to insert, or an SQL NULL to select automatically +** argv[2] = _shape column +** argv[3] = first application-defined column.... +** +** For UPDATE: +** +** argv[0] = rowid to modify. Never NULL +** argv[1] = rowid after the change. Never NULL +** argv[2] = new value for _shape +** argv[3] = new value for first application-defined column.... +*/ +static int geopolyUpdate( + sqlite3_vtab *pVtab, + int nData, + sqlite3_value **aData, + sqlite_int64 *pRowid +){ + Rtree *pRtree = (Rtree *)pVtab; + int rc = SQLITE_OK; + RtreeCell cell; /* New cell to insert if nData>1 */ + i64 oldRowid; /* The old rowid */ + int oldRowidValid; /* True if oldRowid is valid */ + i64 newRowid; /* The new rowid */ + int newRowidValid; /* True if newRowid is valid */ + int coordChange = 0; /* Change in coordinates */ + + if( pRtree->nNodeRef ){ + /* Unable to write to the btree while another cursor is reading from it, + ** since the write might do a rebalance which would disrupt the read + ** cursor. */ + return SQLITE_LOCKED_VTAB; + } + rtreeReference(pRtree); + assert(nData>=1); + + oldRowidValid = sqlite3_value_type(aData[0])!=SQLITE_NULL;; + oldRowid = oldRowidValid ? sqlite3_value_int64(aData[0]) : 0; + newRowidValid = nData>1 && sqlite3_value_type(aData[1])!=SQLITE_NULL; + newRowid = newRowidValid ? sqlite3_value_int64(aData[1]) : 0; + cell.iRowid = newRowid; + + if( nData>1 /* not a DELETE */ + && (!oldRowidValid /* INSERT */ + || !sqlite3_value_nochange(aData[2]) /* UPDATE _shape */ + || oldRowid!=newRowid) /* Rowid change */ + ){ + geopolyBBox(0, aData[2], cell.aCoord, &rc); + if( rc ){ + if( rc==SQLITE_ERROR ){ + pVtab->zErrMsg = + sqlite3_mprintf("_shape does not contain a valid polygon"); + } + goto geopoly_update_end; + } + coordChange = 1; + + /* If a rowid value was supplied, check if it is already present in + ** the table. If so, the constraint has failed. */ + if( newRowidValid && (!oldRowidValid || oldRowid!=newRowid) ){ + int steprc; + sqlite3_bind_int64(pRtree->pReadRowid, 1, cell.iRowid); + steprc = sqlite3_step(pRtree->pReadRowid); + rc = sqlite3_reset(pRtree->pReadRowid); + if( SQLITE_ROW==steprc ){ + if( sqlite3_vtab_on_conflict(pRtree->db)==SQLITE_REPLACE ){ + rc = rtreeDeleteRowid(pRtree, cell.iRowid); + }else{ + rc = rtreeConstraintError(pRtree, 0); + } + } + } + } + + /* If aData[0] is not an SQL NULL value, it is the rowid of a + ** record to delete from the r-tree table. The following block does + ** just that. + */ + if( rc==SQLITE_OK && (nData==1 || (coordChange && oldRowidValid)) ){ + rc = rtreeDeleteRowid(pRtree, oldRowid); + } + + /* If the aData[] array contains more than one element, elements + ** (aData[2]..aData[argc-1]) contain a new record to insert into + ** the r-tree structure. + */ + if( rc==SQLITE_OK && nData>1 && coordChange ){ + /* Insert the new record into the r-tree */ + RtreeNode *pLeaf = 0; + if( !newRowidValid ){ + rc = rtreeNewRowid(pRtree, &cell.iRowid); + } + *pRowid = cell.iRowid; + if( rc==SQLITE_OK ){ + rc = ChooseLeaf(pRtree, &cell, 0, &pLeaf); + } + if( rc==SQLITE_OK ){ + int rc2; + pRtree->iReinsertHeight = -1; + rc = rtreeInsertCell(pRtree, pLeaf, &cell, 0); + rc2 = nodeRelease(pRtree, pLeaf); + if( rc==SQLITE_OK ){ + rc = rc2; + } + } + } + + /* Change the data */ + if( rc==SQLITE_OK && nData>1 ){ + sqlite3_stmt *pUp = pRtree->pWriteAux; + int jj; + int nChange = 0; + sqlite3_bind_int64(pUp, 1, cell.iRowid); + assert( pRtree->nAux>=1 ); + if( sqlite3_value_nochange(aData[2]) ){ + sqlite3_bind_null(pUp, 2); + }else{ + sqlite3_bind_value(pUp, 2, aData[2]); + nChange = 1; + } + for(jj=1; jjnAux; jj++){ + nChange++; + sqlite3_bind_value(pUp, jj+2, aData[jj+2]); + } + if( nChange ){ + sqlite3_step(pUp); + rc = sqlite3_reset(pUp); + } + } + +geopoly_update_end: + rtreeRelease(pRtree); + return rc; +} + +/* +** Report that geopoly_overlap() is an overloaded function suitable +** for use in xBestIndex. +*/ +static int geopolyFindFunction( + sqlite3_vtab *pVtab, + int nArg, + const char *zName, + void (**pxFunc)(sqlite3_context*,int,sqlite3_value**), + void **ppArg +){ + if( sqlite3_stricmp(zName, "geopoly_overlap")==0 ){ + *pxFunc = geopolyOverlapFunc; + *ppArg = 0; + return SQLITE_INDEX_CONSTRAINT_FUNCTION; + } + if( sqlite3_stricmp(zName, "geopoly_within")==0 ){ + *pxFunc = geopolyWithinFunc; + *ppArg = 0; + return SQLITE_INDEX_CONSTRAINT_FUNCTION+1; + } + return 0; +} + + +static sqlite3_module geopolyModule = { + 2, /* iVersion */ + geopolyCreate, /* xCreate - create a table */ + geopolyConnect, /* xConnect - connect to an existing table */ + geopolyBestIndex, /* xBestIndex - Determine search strategy */ + rtreeDisconnect, /* xDisconnect - Disconnect from a table */ + rtreeDestroy, /* xDestroy - Drop a table */ + rtreeOpen, /* xOpen - open a cursor */ + rtreeClose, /* xClose - close a cursor */ + geopolyFilter, /* xFilter - configure scan constraints */ + rtreeNext, /* xNext - advance a cursor */ + rtreeEof, /* xEof */ + geopolyColumn, /* xColumn - read data */ + rtreeRowid, /* xRowid - read data */ + geopolyUpdate, /* xUpdate - write data */ + rtreeBeginTransaction, /* xBegin - begin transaction */ + rtreeEndTransaction, /* xSync - sync transaction */ + rtreeEndTransaction, /* xCommit - commit transaction */ + rtreeEndTransaction, /* xRollback - rollback transaction */ + geopolyFindFunction, /* xFindFunction - function overloading */ + rtreeRename, /* xRename - rename the table */ + rtreeSavepoint, /* xSavepoint */ + 0, /* xRelease */ + 0, /* xRollbackTo */ +}; + +static int sqlite3_geopoly_init(sqlite3 *db){ + int rc = SQLITE_OK; + static const struct { + void (*xFunc)(sqlite3_context*,int,sqlite3_value**); + int nArg; + const char *zName; + } aFunc[] = { + { geopolyAreaFunc, 1, "geopoly_area" }, + { geopolyBlobFunc, 1, "geopoly_blob" }, + { geopolyJsonFunc, 1, "geopoly_json" }, + { geopolySvgFunc, -1, "geopoly_svg" }, + { geopolyWithinFunc, 2, "geopoly_within" }, + { geopolyContainsPointFunc, 3, "geopoly_contains_point" }, + { geopolyOverlapFunc, 2, "geopoly_overlap" }, + { geopolyDebugFunc, 1, "geopoly_debug" }, + { geopolyBBoxFunc, 1, "geopoly_bbox" }, + { geopolyXformFunc, 7, "geopoly_xform" }, + }; + static const struct { + void (*xStep)(sqlite3_context*,int,sqlite3_value**); + void (*xFinal)(sqlite3_context*); + const char *zName; + } aAgg[] = { + { geopolyBBoxStep, geopolyBBoxFinal, "geopoly_group_bbox" }, + }; + int i; + for(i=0; inDb; i++){ Btree *pBt = db->aDb[i].pBt; - if( pBt ) sqlite3BtreeBeginTrans(pBt, 1); + if( pBt ) sqlite3BtreeBeginTrans(pBt, 1, 0); } return SQLITE_OK; } @@ -187734,2436 +196985,6 @@ SQLITE_API void sqlite3rebaser_delete(sqlite3_rebaser *p){ #endif /* SQLITE_ENABLE_SESSION && SQLITE_ENABLE_PREUPDATE_HOOK */ /************** End of sqlite3session.c **************************************/ -/************** Begin file json1.c *******************************************/ -/* -** 2015-08-12 -** -** The author disclaims copyright to this source code. In place of -** a legal notice, here is a blessing: -** -** May you do good and not evil. -** May you find forgiveness for yourself and forgive others. -** May you share freely, never taking more than you give. -** -****************************************************************************** -** -** This SQLite extension implements JSON functions. The interface is -** modeled after MySQL JSON functions: -** -** https://dev.mysql.com/doc/refman/5.7/en/json.html -** -** For the time being, all JSON is stored as pure text. (We might add -** a JSONB type in the future which stores a binary encoding of JSON in -** a BLOB, but there is no support for JSONB in the current implementation. -** This implementation parses JSON text at 250 MB/s, so it is hard to see -** how JSONB might improve on that.) -*/ -#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_JSON1) -#if !defined(SQLITEINT_H) -/* #include "sqlite3ext.h" */ -#endif -SQLITE_EXTENSION_INIT1 -/* #include */ -/* #include */ -/* #include */ -/* #include */ - -/* Mark a function parameter as unused, to suppress nuisance compiler -** warnings. */ -#ifndef UNUSED_PARAM -# define UNUSED_PARAM(X) (void)(X) -#endif - -#ifndef LARGEST_INT64 -# define LARGEST_INT64 (0xffffffff|(((sqlite3_int64)0x7fffffff)<<32)) -# define SMALLEST_INT64 (((sqlite3_int64)-1) - LARGEST_INT64) -#endif - -/* -** Versions of isspace(), isalnum() and isdigit() to which it is safe -** to pass signed char values. -*/ -#ifdef sqlite3Isdigit - /* Use the SQLite core versions if this routine is part of the - ** SQLite amalgamation */ -# define safe_isdigit(x) sqlite3Isdigit(x) -# define safe_isalnum(x) sqlite3Isalnum(x) -# define safe_isxdigit(x) sqlite3Isxdigit(x) -#else - /* Use the standard library for separate compilation */ -#include /* amalgamator: keep */ -# define safe_isdigit(x) isdigit((unsigned char)(x)) -# define safe_isalnum(x) isalnum((unsigned char)(x)) -# define safe_isxdigit(x) isxdigit((unsigned char)(x)) -#endif - -/* -** Growing our own isspace() routine this way is twice as fast as -** the library isspace() function, resulting in a 7% overall performance -** increase for the parser. (Ubuntu14.10 gcc 4.8.4 x64 with -Os). -*/ -static const char jsonIsSpace[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -}; -#define safe_isspace(x) (jsonIsSpace[(unsigned char)x]) - -#ifndef SQLITE_AMALGAMATION - /* Unsigned integer types. These are already defined in the sqliteInt.h, - ** but the definitions need to be repeated for separate compilation. */ - typedef sqlite3_uint64 u64; - typedef unsigned int u32; - typedef unsigned short int u16; - typedef unsigned char u8; -#endif - -/* Objects */ -typedef struct JsonString JsonString; -typedef struct JsonNode JsonNode; -typedef struct JsonParse JsonParse; - -/* An instance of this object represents a JSON string -** under construction. Really, this is a generic string accumulator -** that can be and is used to create strings other than JSON. -*/ -struct JsonString { - sqlite3_context *pCtx; /* Function context - put error messages here */ - char *zBuf; /* Append JSON content here */ - u64 nAlloc; /* Bytes of storage available in zBuf[] */ - u64 nUsed; /* Bytes of zBuf[] currently used */ - u8 bStatic; /* True if zBuf is static space */ - u8 bErr; /* True if an error has been encountered */ - char zSpace[100]; /* Initial static space */ -}; - -/* JSON type values -*/ -#define JSON_NULL 0 -#define JSON_TRUE 1 -#define JSON_FALSE 2 -#define JSON_INT 3 -#define JSON_REAL 4 -#define JSON_STRING 5 -#define JSON_ARRAY 6 -#define JSON_OBJECT 7 - -/* The "subtype" set for JSON values */ -#define JSON_SUBTYPE 74 /* Ascii for "J" */ - -/* -** Names of the various JSON types: -*/ -static const char * const jsonType[] = { - "null", "true", "false", "integer", "real", "text", "array", "object" -}; - -/* Bit values for the JsonNode.jnFlag field -*/ -#define JNODE_RAW 0x01 /* Content is raw, not JSON encoded */ -#define JNODE_ESCAPE 0x02 /* Content is text with \ escapes */ -#define JNODE_REMOVE 0x04 /* Do not output */ -#define JNODE_REPLACE 0x08 /* Replace with JsonNode.u.iReplace */ -#define JNODE_PATCH 0x10 /* Patch with JsonNode.u.pPatch */ -#define JNODE_APPEND 0x20 /* More ARRAY/OBJECT entries at u.iAppend */ -#define JNODE_LABEL 0x40 /* Is a label of an object */ - - -/* A single node of parsed JSON -*/ -struct JsonNode { - u8 eType; /* One of the JSON_ type values */ - u8 jnFlags; /* JNODE flags */ - u32 n; /* Bytes of content, or number of sub-nodes */ - union { - const char *zJContent; /* Content for INT, REAL, and STRING */ - u32 iAppend; /* More terms for ARRAY and OBJECT */ - u32 iKey; /* Key for ARRAY objects in json_tree() */ - u32 iReplace; /* Replacement content for JNODE_REPLACE */ - JsonNode *pPatch; /* Node chain of patch for JNODE_PATCH */ - } u; -}; - -/* A completely parsed JSON string -*/ -struct JsonParse { - u32 nNode; /* Number of slots of aNode[] used */ - u32 nAlloc; /* Number of slots of aNode[] allocated */ - JsonNode *aNode; /* Array of nodes containing the parse */ - const char *zJson; /* Original JSON string */ - u32 *aUp; /* Index of parent of each node */ - u8 oom; /* Set to true if out of memory */ - u8 nErr; /* Number of errors seen */ - u16 iDepth; /* Nesting depth */ - int nJson; /* Length of the zJson string in bytes */ -}; - -/* -** Maximum nesting depth of JSON for this implementation. -** -** This limit is needed to avoid a stack overflow in the recursive -** descent parser. A depth of 2000 is far deeper than any sane JSON -** should go. -*/ -#define JSON_MAX_DEPTH 2000 - -/************************************************************************** -** Utility routines for dealing with JsonString objects -**************************************************************************/ - -/* Set the JsonString object to an empty string -*/ -static void jsonZero(JsonString *p){ - p->zBuf = p->zSpace; - p->nAlloc = sizeof(p->zSpace); - p->nUsed = 0; - p->bStatic = 1; -} - -/* Initialize the JsonString object -*/ -static void jsonInit(JsonString *p, sqlite3_context *pCtx){ - p->pCtx = pCtx; - p->bErr = 0; - jsonZero(p); -} - - -/* Free all allocated memory and reset the JsonString object back to its -** initial state. -*/ -static void jsonReset(JsonString *p){ - if( !p->bStatic ) sqlite3_free(p->zBuf); - jsonZero(p); -} - - -/* Report an out-of-memory (OOM) condition -*/ -static void jsonOom(JsonString *p){ - p->bErr = 1; - sqlite3_result_error_nomem(p->pCtx); - jsonReset(p); -} - -/* Enlarge pJson->zBuf so that it can hold at least N more bytes. -** Return zero on success. Return non-zero on an OOM error -*/ -static int jsonGrow(JsonString *p, u32 N){ - u64 nTotal = NnAlloc ? p->nAlloc*2 : p->nAlloc+N+10; - char *zNew; - if( p->bStatic ){ - if( p->bErr ) return 1; - zNew = sqlite3_malloc64(nTotal); - if( zNew==0 ){ - jsonOom(p); - return SQLITE_NOMEM; - } - memcpy(zNew, p->zBuf, (size_t)p->nUsed); - p->zBuf = zNew; - p->bStatic = 0; - }else{ - zNew = sqlite3_realloc64(p->zBuf, nTotal); - if( zNew==0 ){ - jsonOom(p); - return SQLITE_NOMEM; - } - p->zBuf = zNew; - } - p->nAlloc = nTotal; - return SQLITE_OK; -} - -/* Append N bytes from zIn onto the end of the JsonString string. -*/ -static void jsonAppendRaw(JsonString *p, const char *zIn, u32 N){ - if( (N+p->nUsed >= p->nAlloc) && jsonGrow(p,N)!=0 ) return; - memcpy(p->zBuf+p->nUsed, zIn, N); - p->nUsed += N; -} - -/* Append formatted text (not to exceed N bytes) to the JsonString. -*/ -static void jsonPrintf(int N, JsonString *p, const char *zFormat, ...){ - va_list ap; - if( (p->nUsed + N >= p->nAlloc) && jsonGrow(p, N) ) return; - va_start(ap, zFormat); - sqlite3_vsnprintf(N, p->zBuf+p->nUsed, zFormat, ap); - va_end(ap); - p->nUsed += (int)strlen(p->zBuf+p->nUsed); -} - -/* Append a single character -*/ -static void jsonAppendChar(JsonString *p, char c){ - if( p->nUsed>=p->nAlloc && jsonGrow(p,1)!=0 ) return; - p->zBuf[p->nUsed++] = c; -} - -/* Append a comma separator to the output buffer, if the previous -** character is not '[' or '{'. -*/ -static void jsonAppendSeparator(JsonString *p){ - char c; - if( p->nUsed==0 ) return; - c = p->zBuf[p->nUsed-1]; - if( c!='[' && c!='{' ) jsonAppendChar(p, ','); -} - -/* Append the N-byte string in zIn to the end of the JsonString string -** under construction. Enclose the string in "..." and escape -** any double-quotes or backslash characters contained within the -** string. -*/ -static void jsonAppendString(JsonString *p, const char *zIn, u32 N){ - u32 i; - if( (N+p->nUsed+2 >= p->nAlloc) && jsonGrow(p,N+2)!=0 ) return; - p->zBuf[p->nUsed++] = '"'; - for(i=0; inUsed+N+3-i > p->nAlloc) && jsonGrow(p,N+3-i)!=0 ) return; - p->zBuf[p->nUsed++] = '\\'; - }else if( c<=0x1f ){ - static const char aSpecial[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 'b', 't', 'n', 0, 'f', 'r', 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - assert( sizeof(aSpecial)==32 ); - assert( aSpecial['\b']=='b' ); - assert( aSpecial['\f']=='f' ); - assert( aSpecial['\n']=='n' ); - assert( aSpecial['\r']=='r' ); - assert( aSpecial['\t']=='t' ); - if( aSpecial[c] ){ - c = aSpecial[c]; - goto json_simple_escape; - } - if( (p->nUsed+N+7+i > p->nAlloc) && jsonGrow(p,N+7-i)!=0 ) return; - p->zBuf[p->nUsed++] = '\\'; - p->zBuf[p->nUsed++] = 'u'; - p->zBuf[p->nUsed++] = '0'; - p->zBuf[p->nUsed++] = '0'; - p->zBuf[p->nUsed++] = '0' + (c>>4); - c = "0123456789abcdef"[c&0xf]; - } - p->zBuf[p->nUsed++] = c; - } - p->zBuf[p->nUsed++] = '"'; - assert( p->nUsednAlloc ); -} - -/* -** Append a function parameter value to the JSON string under -** construction. -*/ -static void jsonAppendValue( - JsonString *p, /* Append to this JSON string */ - sqlite3_value *pValue /* Value to append */ -){ - switch( sqlite3_value_type(pValue) ){ - case SQLITE_NULL: { - jsonAppendRaw(p, "null", 4); - break; - } - case SQLITE_INTEGER: - case SQLITE_FLOAT: { - const char *z = (const char*)sqlite3_value_text(pValue); - u32 n = (u32)sqlite3_value_bytes(pValue); - jsonAppendRaw(p, z, n); - break; - } - case SQLITE_TEXT: { - const char *z = (const char*)sqlite3_value_text(pValue); - u32 n = (u32)sqlite3_value_bytes(pValue); - if( sqlite3_value_subtype(pValue)==JSON_SUBTYPE ){ - jsonAppendRaw(p, z, n); - }else{ - jsonAppendString(p, z, n); - } - break; - } - default: { - if( p->bErr==0 ){ - sqlite3_result_error(p->pCtx, "JSON cannot hold BLOB values", -1); - p->bErr = 2; - jsonReset(p); - } - break; - } - } -} - - -/* Make the JSON in p the result of the SQL function. -*/ -static void jsonResult(JsonString *p){ - if( p->bErr==0 ){ - sqlite3_result_text64(p->pCtx, p->zBuf, p->nUsed, - p->bStatic ? SQLITE_TRANSIENT : sqlite3_free, - SQLITE_UTF8); - jsonZero(p); - } - assert( p->bStatic ); -} - -/************************************************************************** -** Utility routines for dealing with JsonNode and JsonParse objects -**************************************************************************/ - -/* -** Return the number of consecutive JsonNode slots need to represent -** the parsed JSON at pNode. The minimum answer is 1. For ARRAY and -** OBJECT types, the number might be larger. -** -** Appended elements are not counted. The value returned is the number -** by which the JsonNode counter should increment in order to go to the -** next peer value. -*/ -static u32 jsonNodeSize(JsonNode *pNode){ - return pNode->eType>=JSON_ARRAY ? pNode->n+1 : 1; -} - -/* -** Reclaim all memory allocated by a JsonParse object. But do not -** delete the JsonParse object itself. -*/ -static void jsonParseReset(JsonParse *pParse){ - sqlite3_free(pParse->aNode); - pParse->aNode = 0; - pParse->nNode = 0; - pParse->nAlloc = 0; - sqlite3_free(pParse->aUp); - pParse->aUp = 0; -} - -/* -** Free a JsonParse object that was obtained from sqlite3_malloc(). -*/ -static void jsonParseFree(JsonParse *pParse){ - jsonParseReset(pParse); - sqlite3_free(pParse); -} - -/* -** Convert the JsonNode pNode into a pure JSON string and -** append to pOut. Subsubstructure is also included. Return -** the number of JsonNode objects that are encoded. -*/ -static void jsonRenderNode( - JsonNode *pNode, /* The node to render */ - JsonString *pOut, /* Write JSON here */ - sqlite3_value **aReplace /* Replacement values */ -){ - if( pNode->jnFlags & (JNODE_REPLACE|JNODE_PATCH) ){ - if( pNode->jnFlags & JNODE_REPLACE ){ - jsonAppendValue(pOut, aReplace[pNode->u.iReplace]); - return; - } - pNode = pNode->u.pPatch; - } - switch( pNode->eType ){ - default: { - assert( pNode->eType==JSON_NULL ); - jsonAppendRaw(pOut, "null", 4); - break; - } - case JSON_TRUE: { - jsonAppendRaw(pOut, "true", 4); - break; - } - case JSON_FALSE: { - jsonAppendRaw(pOut, "false", 5); - break; - } - case JSON_STRING: { - if( pNode->jnFlags & JNODE_RAW ){ - jsonAppendString(pOut, pNode->u.zJContent, pNode->n); - break; - } - /* Fall through into the next case */ - } - case JSON_REAL: - case JSON_INT: { - jsonAppendRaw(pOut, pNode->u.zJContent, pNode->n); - break; - } - case JSON_ARRAY: { - u32 j = 1; - jsonAppendChar(pOut, '['); - for(;;){ - while( j<=pNode->n ){ - if( (pNode[j].jnFlags & JNODE_REMOVE)==0 ){ - jsonAppendSeparator(pOut); - jsonRenderNode(&pNode[j], pOut, aReplace); - } - j += jsonNodeSize(&pNode[j]); - } - if( (pNode->jnFlags & JNODE_APPEND)==0 ) break; - pNode = &pNode[pNode->u.iAppend]; - j = 1; - } - jsonAppendChar(pOut, ']'); - break; - } - case JSON_OBJECT: { - u32 j = 1; - jsonAppendChar(pOut, '{'); - for(;;){ - while( j<=pNode->n ){ - if( (pNode[j+1].jnFlags & JNODE_REMOVE)==0 ){ - jsonAppendSeparator(pOut); - jsonRenderNode(&pNode[j], pOut, aReplace); - jsonAppendChar(pOut, ':'); - jsonRenderNode(&pNode[j+1], pOut, aReplace); - } - j += 1 + jsonNodeSize(&pNode[j+1]); - } - if( (pNode->jnFlags & JNODE_APPEND)==0 ) break; - pNode = &pNode[pNode->u.iAppend]; - j = 1; - } - jsonAppendChar(pOut, '}'); - break; - } - } -} - -/* -** Return a JsonNode and all its descendents as a JSON string. -*/ -static void jsonReturnJson( - JsonNode *pNode, /* Node to return */ - sqlite3_context *pCtx, /* Return value for this function */ - sqlite3_value **aReplace /* Array of replacement values */ -){ - JsonString s; - jsonInit(&s, pCtx); - jsonRenderNode(pNode, &s, aReplace); - jsonResult(&s); - sqlite3_result_subtype(pCtx, JSON_SUBTYPE); -} - -/* -** Make the JsonNode the return value of the function. -*/ -static void jsonReturn( - JsonNode *pNode, /* Node to return */ - sqlite3_context *pCtx, /* Return value for this function */ - sqlite3_value **aReplace /* Array of replacement values */ -){ - switch( pNode->eType ){ - default: { - assert( pNode->eType==JSON_NULL ); - sqlite3_result_null(pCtx); - break; - } - case JSON_TRUE: { - sqlite3_result_int(pCtx, 1); - break; - } - case JSON_FALSE: { - sqlite3_result_int(pCtx, 0); - break; - } - case JSON_INT: { - sqlite3_int64 i = 0; - const char *z = pNode->u.zJContent; - if( z[0]=='-' ){ z++; } - while( z[0]>='0' && z[0]<='9' ){ - unsigned v = *(z++) - '0'; - if( i>=LARGEST_INT64/10 ){ - if( i>LARGEST_INT64/10 ) goto int_as_real; - if( z[0]>='0' && z[0]<='9' ) goto int_as_real; - if( v==9 ) goto int_as_real; - if( v==8 ){ - if( pNode->u.zJContent[0]=='-' ){ - sqlite3_result_int64(pCtx, SMALLEST_INT64); - goto int_done; - }else{ - goto int_as_real; - } - } - } - i = i*10 + v; - } - if( pNode->u.zJContent[0]=='-' ){ i = -i; } - sqlite3_result_int64(pCtx, i); - int_done: - break; - int_as_real: /* fall through to real */; - } - case JSON_REAL: { - double r; -#ifdef SQLITE_AMALGAMATION - const char *z = pNode->u.zJContent; - sqlite3AtoF(z, &r, sqlite3Strlen30(z), SQLITE_UTF8); -#else - r = strtod(pNode->u.zJContent, 0); -#endif - sqlite3_result_double(pCtx, r); - break; - } - case JSON_STRING: { -#if 0 /* Never happens because JNODE_RAW is only set by json_set(), - ** json_insert() and json_replace() and those routines do not - ** call jsonReturn() */ - if( pNode->jnFlags & JNODE_RAW ){ - sqlite3_result_text(pCtx, pNode->u.zJContent, pNode->n, - SQLITE_TRANSIENT); - }else -#endif - assert( (pNode->jnFlags & JNODE_RAW)==0 ); - if( (pNode->jnFlags & JNODE_ESCAPE)==0 ){ - /* JSON formatted without any backslash-escapes */ - sqlite3_result_text(pCtx, pNode->u.zJContent+1, pNode->n-2, - SQLITE_TRANSIENT); - }else{ - /* Translate JSON formatted string into raw text */ - u32 i; - u32 n = pNode->n; - const char *z = pNode->u.zJContent; - char *zOut; - u32 j; - zOut = sqlite3_malloc( n+1 ); - if( zOut==0 ){ - sqlite3_result_error_nomem(pCtx); - break; - } - for(i=1, j=0; i>6)); - zOut[j++] = 0x80 | (v&0x3f); - }else{ - zOut[j++] = (char)(0xe0 | (v>>12)); - zOut[j++] = 0x80 | ((v>>6)&0x3f); - zOut[j++] = 0x80 | (v&0x3f); - } - }else{ - if( c=='b' ){ - c = '\b'; - }else if( c=='f' ){ - c = '\f'; - }else if( c=='n' ){ - c = '\n'; - }else if( c=='r' ){ - c = '\r'; - }else if( c=='t' ){ - c = '\t'; - } - zOut[j++] = c; - } - } - } - zOut[j] = 0; - sqlite3_result_text(pCtx, zOut, j, sqlite3_free); - } - break; - } - case JSON_ARRAY: - case JSON_OBJECT: { - jsonReturnJson(pNode, pCtx, aReplace); - break; - } - } -} - -/* Forward reference */ -static int jsonParseAddNode(JsonParse*,u32,u32,const char*); - -/* -** A macro to hint to the compiler that a function should not be -** inlined. -*/ -#if defined(__GNUC__) -# define JSON_NOINLINE __attribute__((noinline)) -#elif defined(_MSC_VER) && _MSC_VER>=1310 -# define JSON_NOINLINE __declspec(noinline) -#else -# define JSON_NOINLINE -#endif - - -static JSON_NOINLINE int jsonParseAddNodeExpand( - JsonParse *pParse, /* Append the node to this object */ - u32 eType, /* Node type */ - u32 n, /* Content size or sub-node count */ - const char *zContent /* Content */ -){ - u32 nNew; - JsonNode *pNew; - assert( pParse->nNode>=pParse->nAlloc ); - if( pParse->oom ) return -1; - nNew = pParse->nAlloc*2 + 10; - pNew = sqlite3_realloc(pParse->aNode, sizeof(JsonNode)*nNew); - if( pNew==0 ){ - pParse->oom = 1; - return -1; - } - pParse->nAlloc = nNew; - pParse->aNode = pNew; - assert( pParse->nNodenAlloc ); - return jsonParseAddNode(pParse, eType, n, zContent); -} - -/* -** Create a new JsonNode instance based on the arguments and append that -** instance to the JsonParse. Return the index in pParse->aNode[] of the -** new node, or -1 if a memory allocation fails. -*/ -static int jsonParseAddNode( - JsonParse *pParse, /* Append the node to this object */ - u32 eType, /* Node type */ - u32 n, /* Content size or sub-node count */ - const char *zContent /* Content */ -){ - JsonNode *p; - if( pParse->nNode>=pParse->nAlloc ){ - return jsonParseAddNodeExpand(pParse, eType, n, zContent); - } - p = &pParse->aNode[pParse->nNode]; - p->eType = (u8)eType; - p->jnFlags = 0; - p->n = n; - p->u.zJContent = zContent; - return pParse->nNode++; -} - -/* -** Return true if z[] begins with 4 (or more) hexadecimal digits -*/ -static int jsonIs4Hex(const char *z){ - int i; - for(i=0; i<4; i++) if( !safe_isxdigit(z[i]) ) return 0; - return 1; -} - -/* -** Parse a single JSON value which begins at pParse->zJson[i]. Return the -** index of the first character past the end of the value parsed. -** -** Return negative for a syntax error. Special cases: return -2 if the -** first non-whitespace character is '}' and return -3 if the first -** non-whitespace character is ']'. -*/ -static int jsonParseValue(JsonParse *pParse, u32 i){ - char c; - u32 j; - int iThis; - int x; - JsonNode *pNode; - const char *z = pParse->zJson; - while( safe_isspace(z[i]) ){ i++; } - if( (c = z[i])=='{' ){ - /* Parse object */ - iThis = jsonParseAddNode(pParse, JSON_OBJECT, 0, 0); - if( iThis<0 ) return -1; - for(j=i+1;;j++){ - while( safe_isspace(z[j]) ){ j++; } - if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1; - x = jsonParseValue(pParse, j); - if( x<0 ){ - pParse->iDepth--; - if( x==(-2) && pParse->nNode==(u32)iThis+1 ) return j+1; - return -1; - } - if( pParse->oom ) return -1; - pNode = &pParse->aNode[pParse->nNode-1]; - if( pNode->eType!=JSON_STRING ) return -1; - pNode->jnFlags |= JNODE_LABEL; - j = x; - while( safe_isspace(z[j]) ){ j++; } - if( z[j]!=':' ) return -1; - j++; - x = jsonParseValue(pParse, j); - pParse->iDepth--; - if( x<0 ) return -1; - j = x; - while( safe_isspace(z[j]) ){ j++; } - c = z[j]; - if( c==',' ) continue; - if( c!='}' ) return -1; - break; - } - pParse->aNode[iThis].n = pParse->nNode - (u32)iThis - 1; - return j+1; - }else if( c=='[' ){ - /* Parse array */ - iThis = jsonParseAddNode(pParse, JSON_ARRAY, 0, 0); - if( iThis<0 ) return -1; - for(j=i+1;;j++){ - while( safe_isspace(z[j]) ){ j++; } - if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1; - x = jsonParseValue(pParse, j); - pParse->iDepth--; - if( x<0 ){ - if( x==(-3) && pParse->nNode==(u32)iThis+1 ) return j+1; - return -1; - } - j = x; - while( safe_isspace(z[j]) ){ j++; } - c = z[j]; - if( c==',' ) continue; - if( c!=']' ) return -1; - break; - } - pParse->aNode[iThis].n = pParse->nNode - (u32)iThis - 1; - return j+1; - }else if( c=='"' ){ - /* Parse string */ - u8 jnFlags = 0; - j = i+1; - for(;;){ - c = z[j]; - if( (c & ~0x1f)==0 ){ - /* Control characters are not allowed in strings */ - return -1; - } - if( c=='\\' ){ - c = z[++j]; - if( c=='"' || c=='\\' || c=='/' || c=='b' || c=='f' - || c=='n' || c=='r' || c=='t' - || (c=='u' && jsonIs4Hex(z+j+1)) ){ - jnFlags = JNODE_ESCAPE; - }else{ - return -1; - } - }else if( c=='"' ){ - break; - } - j++; - } - jsonParseAddNode(pParse, JSON_STRING, j+1-i, &z[i]); - if( !pParse->oom ) pParse->aNode[pParse->nNode-1].jnFlags = jnFlags; - return j+1; - }else if( c=='n' - && strncmp(z+i,"null",4)==0 - && !safe_isalnum(z[i+4]) ){ - jsonParseAddNode(pParse, JSON_NULL, 0, 0); - return i+4; - }else if( c=='t' - && strncmp(z+i,"true",4)==0 - && !safe_isalnum(z[i+4]) ){ - jsonParseAddNode(pParse, JSON_TRUE, 0, 0); - return i+4; - }else if( c=='f' - && strncmp(z+i,"false",5)==0 - && !safe_isalnum(z[i+5]) ){ - jsonParseAddNode(pParse, JSON_FALSE, 0, 0); - return i+5; - }else if( c=='-' || (c>='0' && c<='9') ){ - /* Parse number */ - u8 seenDP = 0; - u8 seenE = 0; - assert( '-' < '0' ); - if( c<='0' ){ - j = c=='-' ? i+1 : i; - if( z[j]=='0' && z[j+1]>='0' && z[j+1]<='9' ) return -1; - } - j = i+1; - for(;; j++){ - c = z[j]; - if( c>='0' && c<='9' ) continue; - if( c=='.' ){ - if( z[j-1]=='-' ) return -1; - if( seenDP ) return -1; - seenDP = 1; - continue; - } - if( c=='e' || c=='E' ){ - if( z[j-1]<'0' ) return -1; - if( seenE ) return -1; - seenDP = seenE = 1; - c = z[j+1]; - if( c=='+' || c=='-' ){ - j++; - c = z[j+1]; - } - if( c<'0' || c>'9' ) return -1; - continue; - } - break; - } - if( z[j-1]<'0' ) return -1; - jsonParseAddNode(pParse, seenDP ? JSON_REAL : JSON_INT, - j - i, &z[i]); - return j; - }else if( c=='}' ){ - return -2; /* End of {...} */ - }else if( c==']' ){ - return -3; /* End of [...] */ - }else if( c==0 ){ - return 0; /* End of file */ - }else{ - return -1; /* Syntax error */ - } -} - -/* -** Parse a complete JSON string. Return 0 on success or non-zero if there -** are any errors. If an error occurs, free all memory associated with -** pParse. -** -** pParse is uninitialized when this routine is called. -*/ -static int jsonParse( - JsonParse *pParse, /* Initialize and fill this JsonParse object */ - sqlite3_context *pCtx, /* Report errors here */ - const char *zJson /* Input JSON text to be parsed */ -){ - int i; - memset(pParse, 0, sizeof(*pParse)); - if( zJson==0 ) return 1; - pParse->zJson = zJson; - i = jsonParseValue(pParse, 0); - if( pParse->oom ) i = -1; - if( i>0 ){ - assert( pParse->iDepth==0 ); - while( safe_isspace(zJson[i]) ) i++; - if( zJson[i] ) i = -1; - } - if( i<=0 ){ - if( pCtx!=0 ){ - if( pParse->oom ){ - sqlite3_result_error_nomem(pCtx); - }else{ - sqlite3_result_error(pCtx, "malformed JSON", -1); - } - } - jsonParseReset(pParse); - return 1; - } - return 0; -} - -/* Mark node i of pParse as being a child of iParent. Call recursively -** to fill in all the descendants of node i. -*/ -static void jsonParseFillInParentage(JsonParse *pParse, u32 i, u32 iParent){ - JsonNode *pNode = &pParse->aNode[i]; - u32 j; - pParse->aUp[i] = iParent; - switch( pNode->eType ){ - case JSON_ARRAY: { - for(j=1; j<=pNode->n; j += jsonNodeSize(pNode+j)){ - jsonParseFillInParentage(pParse, i+j, i); - } - break; - } - case JSON_OBJECT: { - for(j=1; j<=pNode->n; j += jsonNodeSize(pNode+j+1)+1){ - pParse->aUp[i+j] = i; - jsonParseFillInParentage(pParse, i+j+1, i); - } - break; - } - default: { - break; - } - } -} - -/* -** Compute the parentage of all nodes in a completed parse. -*/ -static int jsonParseFindParents(JsonParse *pParse){ - u32 *aUp; - assert( pParse->aUp==0 ); - aUp = pParse->aUp = sqlite3_malloc( sizeof(u32)*pParse->nNode ); - if( aUp==0 ){ - pParse->oom = 1; - return SQLITE_NOMEM; - } - jsonParseFillInParentage(pParse, 0, 0); - return SQLITE_OK; -} - -/* -** Magic number used for the JSON parse cache in sqlite3_get_auxdata() -*/ -#define JSON_CACHE_ID (-429938) - -/* -** Obtain a complete parse of the JSON found in the first argument -** of the argv array. Use the sqlite3_get_auxdata() cache for this -** parse if it is available. If the cache is not available or if it -** is no longer valid, parse the JSON again and return the new parse, -** and also register the new parse so that it will be available for -** future sqlite3_get_auxdata() calls. -*/ -static JsonParse *jsonParseCached( - sqlite3_context *pCtx, - sqlite3_value **argv -){ - const char *zJson = (const char*)sqlite3_value_text(argv[0]); - int nJson = sqlite3_value_bytes(argv[0]); - JsonParse *p; - if( zJson==0 ) return 0; - p = (JsonParse*)sqlite3_get_auxdata(pCtx, JSON_CACHE_ID); - if( p && p->nJson==nJson && memcmp(p->zJson,zJson,nJson)==0 ){ - p->nErr = 0; - return p; /* The cached entry matches, so return it */ - } - p = sqlite3_malloc( sizeof(*p) + nJson + 1 ); - if( p==0 ){ - sqlite3_result_error_nomem(pCtx); - return 0; - } - memset(p, 0, sizeof(*p)); - p->zJson = (char*)&p[1]; - memcpy((char*)p->zJson, zJson, nJson+1); - if( jsonParse(p, pCtx, p->zJson) ){ - sqlite3_free(p); - return 0; - } - p->nJson = nJson; - sqlite3_set_auxdata(pCtx, JSON_CACHE_ID, p, (void(*)(void*))jsonParseFree); - return (JsonParse*)sqlite3_get_auxdata(pCtx, JSON_CACHE_ID); -} - -/* -** Compare the OBJECT label at pNode against zKey,nKey. Return true on -** a match. -*/ -static int jsonLabelCompare(JsonNode *pNode, const char *zKey, u32 nKey){ - if( pNode->jnFlags & JNODE_RAW ){ - if( pNode->n!=nKey ) return 0; - return strncmp(pNode->u.zJContent, zKey, nKey)==0; - }else{ - if( pNode->n!=nKey+2 ) return 0; - return strncmp(pNode->u.zJContent+1, zKey, nKey)==0; - } -} - -/* forward declaration */ -static JsonNode *jsonLookupAppend(JsonParse*,const char*,int*,const char**); - -/* -** Search along zPath to find the node specified. Return a pointer -** to that node, or NULL if zPath is malformed or if there is no such -** node. -** -** If pApnd!=0, then try to append new nodes to complete zPath if it is -** possible to do so and if no existing node corresponds to zPath. If -** new nodes are appended *pApnd is set to 1. -*/ -static JsonNode *jsonLookupStep( - JsonParse *pParse, /* The JSON to search */ - u32 iRoot, /* Begin the search at this node */ - const char *zPath, /* The path to search */ - int *pApnd, /* Append nodes to complete path if not NULL */ - const char **pzErr /* Make *pzErr point to any syntax error in zPath */ -){ - u32 i, j, nKey; - const char *zKey; - JsonNode *pRoot = &pParse->aNode[iRoot]; - if( zPath[0]==0 ) return pRoot; - if( zPath[0]=='.' ){ - if( pRoot->eType!=JSON_OBJECT ) return 0; - zPath++; - if( zPath[0]=='"' ){ - zKey = zPath + 1; - for(i=1; zPath[i] && zPath[i]!='"'; i++){} - nKey = i-1; - if( zPath[i] ){ - i++; - }else{ - *pzErr = zPath; - return 0; - } - }else{ - zKey = zPath; - for(i=0; zPath[i] && zPath[i]!='.' && zPath[i]!='['; i++){} - nKey = i; - } - if( nKey==0 ){ - *pzErr = zPath; - return 0; - } - j = 1; - for(;;){ - while( j<=pRoot->n ){ - if( jsonLabelCompare(pRoot+j, zKey, nKey) ){ - return jsonLookupStep(pParse, iRoot+j+1, &zPath[i], pApnd, pzErr); - } - j++; - j += jsonNodeSize(&pRoot[j]); - } - if( (pRoot->jnFlags & JNODE_APPEND)==0 ) break; - iRoot += pRoot->u.iAppend; - pRoot = &pParse->aNode[iRoot]; - j = 1; - } - if( pApnd ){ - u32 iStart, iLabel; - JsonNode *pNode; - iStart = jsonParseAddNode(pParse, JSON_OBJECT, 2, 0); - iLabel = jsonParseAddNode(pParse, JSON_STRING, i, zPath); - zPath += i; - pNode = jsonLookupAppend(pParse, zPath, pApnd, pzErr); - if( pParse->oom ) return 0; - if( pNode ){ - pRoot = &pParse->aNode[iRoot]; - pRoot->u.iAppend = iStart - iRoot; - pRoot->jnFlags |= JNODE_APPEND; - pParse->aNode[iLabel].jnFlags |= JNODE_RAW; - } - return pNode; - } - }else if( zPath[0]=='[' && safe_isdigit(zPath[1]) ){ - if( pRoot->eType!=JSON_ARRAY ) return 0; - i = 0; - j = 1; - while( safe_isdigit(zPath[j]) ){ - i = i*10 + zPath[j] - '0'; - j++; - } - if( zPath[j]!=']' ){ - *pzErr = zPath; - return 0; - } - zPath += j + 1; - j = 1; - for(;;){ - while( j<=pRoot->n && (i>0 || (pRoot[j].jnFlags & JNODE_REMOVE)!=0) ){ - if( (pRoot[j].jnFlags & JNODE_REMOVE)==0 ) i--; - j += jsonNodeSize(&pRoot[j]); - } - if( (pRoot->jnFlags & JNODE_APPEND)==0 ) break; - iRoot += pRoot->u.iAppend; - pRoot = &pParse->aNode[iRoot]; - j = 1; - } - if( j<=pRoot->n ){ - return jsonLookupStep(pParse, iRoot+j, zPath, pApnd, pzErr); - } - if( i==0 && pApnd ){ - u32 iStart; - JsonNode *pNode; - iStart = jsonParseAddNode(pParse, JSON_ARRAY, 1, 0); - pNode = jsonLookupAppend(pParse, zPath, pApnd, pzErr); - if( pParse->oom ) return 0; - if( pNode ){ - pRoot = &pParse->aNode[iRoot]; - pRoot->u.iAppend = iStart - iRoot; - pRoot->jnFlags |= JNODE_APPEND; - } - return pNode; - } - }else{ - *pzErr = zPath; - } - return 0; -} - -/* -** Append content to pParse that will complete zPath. Return a pointer -** to the inserted node, or return NULL if the append fails. -*/ -static JsonNode *jsonLookupAppend( - JsonParse *pParse, /* Append content to the JSON parse */ - const char *zPath, /* Description of content to append */ - int *pApnd, /* Set this flag to 1 */ - const char **pzErr /* Make this point to any syntax error */ -){ - *pApnd = 1; - if( zPath[0]==0 ){ - jsonParseAddNode(pParse, JSON_NULL, 0, 0); - return pParse->oom ? 0 : &pParse->aNode[pParse->nNode-1]; - } - if( zPath[0]=='.' ){ - jsonParseAddNode(pParse, JSON_OBJECT, 0, 0); - }else if( strncmp(zPath,"[0]",3)==0 ){ - jsonParseAddNode(pParse, JSON_ARRAY, 0, 0); - }else{ - return 0; - } - if( pParse->oom ) return 0; - return jsonLookupStep(pParse, pParse->nNode-1, zPath, pApnd, pzErr); -} - -/* -** Return the text of a syntax error message on a JSON path. Space is -** obtained from sqlite3_malloc(). -*/ -static char *jsonPathSyntaxError(const char *zErr){ - return sqlite3_mprintf("JSON path error near '%q'", zErr); -} - -/* -** Do a node lookup using zPath. Return a pointer to the node on success. -** Return NULL if not found or if there is an error. -** -** On an error, write an error message into pCtx and increment the -** pParse->nErr counter. -** -** If pApnd!=NULL then try to append missing nodes and set *pApnd = 1 if -** nodes are appended. -*/ -static JsonNode *jsonLookup( - JsonParse *pParse, /* The JSON to search */ - const char *zPath, /* The path to search */ - int *pApnd, /* Append nodes to complete path if not NULL */ - sqlite3_context *pCtx /* Report errors here, if not NULL */ -){ - const char *zErr = 0; - JsonNode *pNode = 0; - char *zMsg; - - if( zPath==0 ) return 0; - if( zPath[0]!='$' ){ - zErr = zPath; - goto lookup_err; - } - zPath++; - pNode = jsonLookupStep(pParse, 0, zPath, pApnd, &zErr); - if( zErr==0 ) return pNode; - -lookup_err: - pParse->nErr++; - assert( zErr!=0 && pCtx!=0 ); - zMsg = jsonPathSyntaxError(zErr); - if( zMsg ){ - sqlite3_result_error(pCtx, zMsg, -1); - sqlite3_free(zMsg); - }else{ - sqlite3_result_error_nomem(pCtx); - } - return 0; -} - - -/* -** Report the wrong number of arguments for json_insert(), json_replace() -** or json_set(). -*/ -static void jsonWrongNumArgs( - sqlite3_context *pCtx, - const char *zFuncName -){ - char *zMsg = sqlite3_mprintf("json_%s() needs an odd number of arguments", - zFuncName); - sqlite3_result_error(pCtx, zMsg, -1); - sqlite3_free(zMsg); -} - -/* -** Mark all NULL entries in the Object passed in as JNODE_REMOVE. -*/ -static void jsonRemoveAllNulls(JsonNode *pNode){ - int i, n; - assert( pNode->eType==JSON_OBJECT ); - n = pNode->n; - for(i=2; i<=n; i += jsonNodeSize(&pNode[i])+1){ - switch( pNode[i].eType ){ - case JSON_NULL: - pNode[i].jnFlags |= JNODE_REMOVE; - break; - case JSON_OBJECT: - jsonRemoveAllNulls(&pNode[i]); - break; - } - } -} - - -/**************************************************************************** -** SQL functions used for testing and debugging -****************************************************************************/ - -#ifdef SQLITE_DEBUG -/* -** The json_parse(JSON) function returns a string which describes -** a parse of the JSON provided. Or it returns NULL if JSON is not -** well-formed. -*/ -static void jsonParseFunc( - sqlite3_context *ctx, - int argc, - sqlite3_value **argv -){ - JsonString s; /* Output string - not real JSON */ - JsonParse x; /* The parse */ - u32 i; - - assert( argc==1 ); - if( jsonParse(&x, ctx, (const char*)sqlite3_value_text(argv[0])) ) return; - jsonParseFindParents(&x); - jsonInit(&s, ctx); - for(i=0; inNode ); - if( argc==2 ){ - const char *zPath = (const char*)sqlite3_value_text(argv[1]); - pNode = jsonLookup(p, zPath, 0, ctx); - }else{ - pNode = p->aNode; - } - if( pNode==0 ){ - return; - } - if( pNode->eType==JSON_ARRAY ){ - assert( (pNode->jnFlags & JNODE_APPEND)==0 ); - for(i=1; i<=pNode->n; n++){ - i += jsonNodeSize(&pNode[i]); - } - } - sqlite3_result_int64(ctx, n); -} - -/* -** json_extract(JSON, PATH, ...) -** -** Return the element described by PATH. Return NULL if there is no -** PATH element. If there are multiple PATHs, then return a JSON array -** with the result from each path. Throw an error if the JSON or any PATH -** is malformed. -*/ -static void jsonExtractFunc( - sqlite3_context *ctx, - int argc, - sqlite3_value **argv -){ - JsonParse *p; /* The parse */ - JsonNode *pNode; - const char *zPath; - JsonString jx; - int i; - - if( argc<2 ) return; - p = jsonParseCached(ctx, argv); - if( p==0 ) return; - jsonInit(&jx, ctx); - jsonAppendChar(&jx, '['); - for(i=1; inErr ) break; - if( argc>2 ){ - jsonAppendSeparator(&jx); - if( pNode ){ - jsonRenderNode(pNode, &jx, 0); - }else{ - jsonAppendRaw(&jx, "null", 4); - } - }else if( pNode ){ - jsonReturn(pNode, ctx, 0); - } - } - if( argc>2 && i==argc ){ - jsonAppendChar(&jx, ']'); - jsonResult(&jx); - sqlite3_result_subtype(ctx, JSON_SUBTYPE); - } - jsonReset(&jx); -} - -/* This is the RFC 7396 MergePatch algorithm. -*/ -static JsonNode *jsonMergePatch( - JsonParse *pParse, /* The JSON parser that contains the TARGET */ - u32 iTarget, /* Node of the TARGET in pParse */ - JsonNode *pPatch /* The PATCH */ -){ - u32 i, j; - u32 iRoot; - JsonNode *pTarget; - if( pPatch->eType!=JSON_OBJECT ){ - return pPatch; - } - assert( iTarget>=0 && iTargetnNode ); - pTarget = &pParse->aNode[iTarget]; - assert( (pPatch->jnFlags & JNODE_APPEND)==0 ); - if( pTarget->eType!=JSON_OBJECT ){ - jsonRemoveAllNulls(pPatch); - return pPatch; - } - iRoot = iTarget; - for(i=1; in; i += jsonNodeSize(&pPatch[i+1])+1){ - u32 nKey; - const char *zKey; - assert( pPatch[i].eType==JSON_STRING ); - assert( pPatch[i].jnFlags & JNODE_LABEL ); - nKey = pPatch[i].n; - zKey = pPatch[i].u.zJContent; - assert( (pPatch[i].jnFlags & JNODE_RAW)==0 ); - for(j=1; jn; j += jsonNodeSize(&pTarget[j+1])+1 ){ - assert( pTarget[j].eType==JSON_STRING ); - assert( pTarget[j].jnFlags & JNODE_LABEL ); - assert( (pPatch[i].jnFlags & JNODE_RAW)==0 ); - if( pTarget[j].n==nKey && strncmp(pTarget[j].u.zJContent,zKey,nKey)==0 ){ - if( pTarget[j+1].jnFlags & (JNODE_REMOVE|JNODE_PATCH) ) break; - if( pPatch[i+1].eType==JSON_NULL ){ - pTarget[j+1].jnFlags |= JNODE_REMOVE; - }else{ - JsonNode *pNew = jsonMergePatch(pParse, iTarget+j+1, &pPatch[i+1]); - if( pNew==0 ) return 0; - pTarget = &pParse->aNode[iTarget]; - if( pNew!=&pTarget[j+1] ){ - pTarget[j+1].u.pPatch = pNew; - pTarget[j+1].jnFlags |= JNODE_PATCH; - } - } - break; - } - } - if( j>=pTarget->n && pPatch[i+1].eType!=JSON_NULL ){ - int iStart, iPatch; - iStart = jsonParseAddNode(pParse, JSON_OBJECT, 2, 0); - jsonParseAddNode(pParse, JSON_STRING, nKey, zKey); - iPatch = jsonParseAddNode(pParse, JSON_TRUE, 0, 0); - if( pParse->oom ) return 0; - jsonRemoveAllNulls(pPatch); - pTarget = &pParse->aNode[iTarget]; - pParse->aNode[iRoot].jnFlags |= JNODE_APPEND; - pParse->aNode[iRoot].u.iAppend = iStart - iRoot; - iRoot = iStart; - pParse->aNode[iPatch].jnFlags |= JNODE_PATCH; - pParse->aNode[iPatch].u.pPatch = &pPatch[i+1]; - } - } - return pTarget; -} - -/* -** Implementation of the json_mergepatch(JSON1,JSON2) function. Return a JSON -** object that is the result of running the RFC 7396 MergePatch() algorithm -** on the two arguments. -*/ -static void jsonPatchFunc( - sqlite3_context *ctx, - int argc, - sqlite3_value **argv -){ - JsonParse x; /* The JSON that is being patched */ - JsonParse y; /* The patch */ - JsonNode *pResult; /* The result of the merge */ - - UNUSED_PARAM(argc); - if( jsonParse(&x, ctx, (const char*)sqlite3_value_text(argv[0])) ) return; - if( jsonParse(&y, ctx, (const char*)sqlite3_value_text(argv[1])) ){ - jsonParseReset(&x); - return; - } - pResult = jsonMergePatch(&x, 0, y.aNode); - assert( pResult!=0 || x.oom ); - if( pResult ){ - jsonReturnJson(pResult, ctx, 0); - }else{ - sqlite3_result_error_nomem(ctx); - } - jsonParseReset(&x); - jsonParseReset(&y); -} - - -/* -** Implementation of the json_object(NAME,VALUE,...) function. Return a JSON -** object that contains all name/value given in arguments. Or if any name -** is not a string or if any value is a BLOB, throw an error. -*/ -static void jsonObjectFunc( - sqlite3_context *ctx, - int argc, - sqlite3_value **argv -){ - int i; - JsonString jx; - const char *z; - u32 n; - - if( argc&1 ){ - sqlite3_result_error(ctx, "json_object() requires an even number " - "of arguments", -1); - return; - } - jsonInit(&jx, ctx); - jsonAppendChar(&jx, '{'); - for(i=0; ijnFlags |= JNODE_REMOVE; - } - if( (x.aNode[0].jnFlags & JNODE_REMOVE)==0 ){ - jsonReturnJson(x.aNode, ctx, 0); - } -remove_done: - jsonParseReset(&x); -} - -/* -** json_replace(JSON, PATH, VALUE, ...) -** -** Replace the value at PATH with VALUE. If PATH does not already exist, -** this routine is a no-op. If JSON or PATH is malformed, throw an error. -*/ -static void jsonReplaceFunc( - sqlite3_context *ctx, - int argc, - sqlite3_value **argv -){ - JsonParse x; /* The parse */ - JsonNode *pNode; - const char *zPath; - u32 i; - - if( argc<1 ) return; - if( (argc&1)==0 ) { - jsonWrongNumArgs(ctx, "replace"); - return; - } - if( jsonParse(&x, ctx, (const char*)sqlite3_value_text(argv[0])) ) return; - assert( x.nNode ); - for(i=1; i<(u32)argc; i+=2){ - zPath = (const char*)sqlite3_value_text(argv[i]); - pNode = jsonLookup(&x, zPath, 0, ctx); - if( x.nErr ) goto replace_err; - if( pNode ){ - pNode->jnFlags |= (u8)JNODE_REPLACE; - pNode->u.iReplace = i + 1; - } - } - if( x.aNode[0].jnFlags & JNODE_REPLACE ){ - sqlite3_result_value(ctx, argv[x.aNode[0].u.iReplace]); - }else{ - jsonReturnJson(x.aNode, ctx, argv); - } -replace_err: - jsonParseReset(&x); -} - -/* -** json_set(JSON, PATH, VALUE, ...) -** -** Set the value at PATH to VALUE. Create the PATH if it does not already -** exist. Overwrite existing values that do exist. -** If JSON or PATH is malformed, throw an error. -** -** json_insert(JSON, PATH, VALUE, ...) -** -** Create PATH and initialize it to VALUE. If PATH already exists, this -** routine is a no-op. If JSON or PATH is malformed, throw an error. -*/ -static void jsonSetFunc( - sqlite3_context *ctx, - int argc, - sqlite3_value **argv -){ - JsonParse x; /* The parse */ - JsonNode *pNode; - const char *zPath; - u32 i; - int bApnd; - int bIsSet = *(int*)sqlite3_user_data(ctx); - - if( argc<1 ) return; - if( (argc&1)==0 ) { - jsonWrongNumArgs(ctx, bIsSet ? "set" : "insert"); - return; - } - if( jsonParse(&x, ctx, (const char*)sqlite3_value_text(argv[0])) ) return; - assert( x.nNode ); - for(i=1; i<(u32)argc; i+=2){ - zPath = (const char*)sqlite3_value_text(argv[i]); - bApnd = 0; - pNode = jsonLookup(&x, zPath, &bApnd, ctx); - if( x.oom ){ - sqlite3_result_error_nomem(ctx); - goto jsonSetDone; - }else if( x.nErr ){ - goto jsonSetDone; - }else if( pNode && (bApnd || bIsSet) ){ - pNode->jnFlags |= (u8)JNODE_REPLACE; - pNode->u.iReplace = i + 1; - } - } - if( x.aNode[0].jnFlags & JNODE_REPLACE ){ - sqlite3_result_value(ctx, argv[x.aNode[0].u.iReplace]); - }else{ - jsonReturnJson(x.aNode, ctx, argv); - } -jsonSetDone: - jsonParseReset(&x); -} - -/* -** json_type(JSON) -** json_type(JSON, PATH) -** -** Return the top-level "type" of a JSON string. Throw an error if -** either the JSON or PATH inputs are not well-formed. -*/ -static void jsonTypeFunc( - sqlite3_context *ctx, - int argc, - sqlite3_value **argv -){ - JsonParse x; /* The parse */ - const char *zPath; - JsonNode *pNode; - - if( jsonParse(&x, ctx, (const char*)sqlite3_value_text(argv[0])) ) return; - assert( x.nNode ); - if( argc==2 ){ - zPath = (const char*)sqlite3_value_text(argv[1]); - pNode = jsonLookup(&x, zPath, 0, ctx); - }else{ - pNode = x.aNode; - } - if( pNode ){ - sqlite3_result_text(ctx, jsonType[pNode->eType], -1, SQLITE_STATIC); - } - jsonParseReset(&x); -} - -/* -** json_valid(JSON) -** -** Return 1 if JSON is a well-formed JSON string according to RFC-7159. -** Return 0 otherwise. -*/ -static void jsonValidFunc( - sqlite3_context *ctx, - int argc, - sqlite3_value **argv -){ - JsonParse x; /* The parse */ - int rc = 0; - - UNUSED_PARAM(argc); - if( jsonParse(&x, 0, (const char*)sqlite3_value_text(argv[0]))==0 ){ - rc = 1; - } - jsonParseReset(&x); - sqlite3_result_int(ctx, rc); -} - - -/**************************************************************************** -** Aggregate SQL function implementations -****************************************************************************/ -/* -** json_group_array(VALUE) -** -** Return a JSON array composed of all values in the aggregate. -*/ -static void jsonArrayStep( - sqlite3_context *ctx, - int argc, - sqlite3_value **argv -){ - JsonString *pStr; - UNUSED_PARAM(argc); - pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr)); - if( pStr ){ - if( pStr->zBuf==0 ){ - jsonInit(pStr, ctx); - jsonAppendChar(pStr, '['); - }else{ - jsonAppendChar(pStr, ','); - pStr->pCtx = ctx; - } - jsonAppendValue(pStr, argv[0]); - } -} -static void jsonArrayFinal(sqlite3_context *ctx){ - JsonString *pStr; - pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0); - if( pStr ){ - pStr->pCtx = ctx; - jsonAppendChar(pStr, ']'); - if( pStr->bErr ){ - if( pStr->bErr==1 ) sqlite3_result_error_nomem(ctx); - assert( pStr->bStatic ); - }else{ - sqlite3_result_text(ctx, pStr->zBuf, pStr->nUsed, - pStr->bStatic ? SQLITE_TRANSIENT : sqlite3_free); - pStr->bStatic = 1; - } - }else{ - sqlite3_result_text(ctx, "[]", 2, SQLITE_STATIC); - } - sqlite3_result_subtype(ctx, JSON_SUBTYPE); -} - -/* -** json_group_obj(NAME,VALUE) -** -** Return a JSON object composed of all names and values in the aggregate. -*/ -static void jsonObjectStep( - sqlite3_context *ctx, - int argc, - sqlite3_value **argv -){ - JsonString *pStr; - const char *z; - u32 n; - UNUSED_PARAM(argc); - pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr)); - if( pStr ){ - if( pStr->zBuf==0 ){ - jsonInit(pStr, ctx); - jsonAppendChar(pStr, '{'); - }else{ - jsonAppendChar(pStr, ','); - pStr->pCtx = ctx; - } - z = (const char*)sqlite3_value_text(argv[0]); - n = (u32)sqlite3_value_bytes(argv[0]); - jsonAppendString(pStr, z, n); - jsonAppendChar(pStr, ':'); - jsonAppendValue(pStr, argv[1]); - } -} -static void jsonObjectFinal(sqlite3_context *ctx){ - JsonString *pStr; - pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0); - if( pStr ){ - jsonAppendChar(pStr, '}'); - if( pStr->bErr ){ - if( pStr->bErr==1 ) sqlite3_result_error_nomem(ctx); - assert( pStr->bStatic ); - }else{ - sqlite3_result_text(ctx, pStr->zBuf, pStr->nUsed, - pStr->bStatic ? SQLITE_TRANSIENT : sqlite3_free); - pStr->bStatic = 1; - } - }else{ - sqlite3_result_text(ctx, "{}", 2, SQLITE_STATIC); - } - sqlite3_result_subtype(ctx, JSON_SUBTYPE); -} - - -#ifndef SQLITE_OMIT_VIRTUALTABLE -/**************************************************************************** -** The json_each virtual table -****************************************************************************/ -typedef struct JsonEachCursor JsonEachCursor; -struct JsonEachCursor { - sqlite3_vtab_cursor base; /* Base class - must be first */ - u32 iRowid; /* The rowid */ - u32 iBegin; /* The first node of the scan */ - u32 i; /* Index in sParse.aNode[] of current row */ - u32 iEnd; /* EOF when i equals or exceeds this value */ - u8 eType; /* Type of top-level element */ - u8 bRecursive; /* True for json_tree(). False for json_each() */ - char *zJson; /* Input JSON */ - char *zRoot; /* Path by which to filter zJson */ - JsonParse sParse; /* Parse of the input JSON */ -}; - -/* Constructor for the json_each virtual table */ -static int jsonEachConnect( - sqlite3 *db, - void *pAux, - int argc, const char *const*argv, - sqlite3_vtab **ppVtab, - char **pzErr -){ - sqlite3_vtab *pNew; - int rc; - -/* Column numbers */ -#define JEACH_KEY 0 -#define JEACH_VALUE 1 -#define JEACH_TYPE 2 -#define JEACH_ATOM 3 -#define JEACH_ID 4 -#define JEACH_PARENT 5 -#define JEACH_FULLKEY 6 -#define JEACH_PATH 7 -#define JEACH_JSON 8 -#define JEACH_ROOT 9 - - UNUSED_PARAM(pzErr); - UNUSED_PARAM(argv); - UNUSED_PARAM(argc); - UNUSED_PARAM(pAux); - rc = sqlite3_declare_vtab(db, - "CREATE TABLE x(key,value,type,atom,id,parent,fullkey,path," - "json HIDDEN,root HIDDEN)"); - if( rc==SQLITE_OK ){ - pNew = *ppVtab = sqlite3_malloc( sizeof(*pNew) ); - if( pNew==0 ) return SQLITE_NOMEM; - memset(pNew, 0, sizeof(*pNew)); - } - return rc; -} - -/* destructor for json_each virtual table */ -static int jsonEachDisconnect(sqlite3_vtab *pVtab){ - sqlite3_free(pVtab); - return SQLITE_OK; -} - -/* constructor for a JsonEachCursor object for json_each(). */ -static int jsonEachOpenEach(sqlite3_vtab *p, sqlite3_vtab_cursor **ppCursor){ - JsonEachCursor *pCur; - - UNUSED_PARAM(p); - pCur = sqlite3_malloc( sizeof(*pCur) ); - if( pCur==0 ) return SQLITE_NOMEM; - memset(pCur, 0, sizeof(*pCur)); - *ppCursor = &pCur->base; - return SQLITE_OK; -} - -/* constructor for a JsonEachCursor object for json_tree(). */ -static int jsonEachOpenTree(sqlite3_vtab *p, sqlite3_vtab_cursor **ppCursor){ - int rc = jsonEachOpenEach(p, ppCursor); - if( rc==SQLITE_OK ){ - JsonEachCursor *pCur = (JsonEachCursor*)*ppCursor; - pCur->bRecursive = 1; - } - return rc; -} - -/* Reset a JsonEachCursor back to its original state. Free any memory -** held. */ -static void jsonEachCursorReset(JsonEachCursor *p){ - sqlite3_free(p->zJson); - sqlite3_free(p->zRoot); - jsonParseReset(&p->sParse); - p->iRowid = 0; - p->i = 0; - p->iEnd = 0; - p->eType = 0; - p->zJson = 0; - p->zRoot = 0; -} - -/* Destructor for a jsonEachCursor object */ -static int jsonEachClose(sqlite3_vtab_cursor *cur){ - JsonEachCursor *p = (JsonEachCursor*)cur; - jsonEachCursorReset(p); - sqlite3_free(cur); - return SQLITE_OK; -} - -/* Return TRUE if the jsonEachCursor object has been advanced off the end -** of the JSON object */ -static int jsonEachEof(sqlite3_vtab_cursor *cur){ - JsonEachCursor *p = (JsonEachCursor*)cur; - return p->i >= p->iEnd; -} - -/* Advance the cursor to the next element for json_tree() */ -static int jsonEachNext(sqlite3_vtab_cursor *cur){ - JsonEachCursor *p = (JsonEachCursor*)cur; - if( p->bRecursive ){ - if( p->sParse.aNode[p->i].jnFlags & JNODE_LABEL ) p->i++; - p->i++; - p->iRowid++; - if( p->iiEnd ){ - u32 iUp = p->sParse.aUp[p->i]; - JsonNode *pUp = &p->sParse.aNode[iUp]; - p->eType = pUp->eType; - if( pUp->eType==JSON_ARRAY ){ - if( iUp==p->i-1 ){ - pUp->u.iKey = 0; - }else{ - pUp->u.iKey++; - } - } - } - }else{ - switch( p->eType ){ - case JSON_ARRAY: { - p->i += jsonNodeSize(&p->sParse.aNode[p->i]); - p->iRowid++; - break; - } - case JSON_OBJECT: { - p->i += 1 + jsonNodeSize(&p->sParse.aNode[p->i+1]); - p->iRowid++; - break; - } - default: { - p->i = p->iEnd; - break; - } - } - } - return SQLITE_OK; -} - -/* Append the name of the path for element i to pStr -*/ -static void jsonEachComputePath( - JsonEachCursor *p, /* The cursor */ - JsonString *pStr, /* Write the path here */ - u32 i /* Path to this element */ -){ - JsonNode *pNode, *pUp; - u32 iUp; - if( i==0 ){ - jsonAppendChar(pStr, '$'); - return; - } - iUp = p->sParse.aUp[i]; - jsonEachComputePath(p, pStr, iUp); - pNode = &p->sParse.aNode[i]; - pUp = &p->sParse.aNode[iUp]; - if( pUp->eType==JSON_ARRAY ){ - jsonPrintf(30, pStr, "[%d]", pUp->u.iKey); - }else{ - assert( pUp->eType==JSON_OBJECT ); - if( (pNode->jnFlags & JNODE_LABEL)==0 ) pNode--; - assert( pNode->eType==JSON_STRING ); - assert( pNode->jnFlags & JNODE_LABEL ); - jsonPrintf(pNode->n+1, pStr, ".%.*s", pNode->n-2, pNode->u.zJContent+1); - } -} - -/* Return the value of a column */ -static int jsonEachColumn( - sqlite3_vtab_cursor *cur, /* The cursor */ - sqlite3_context *ctx, /* First argument to sqlite3_result_...() */ - int i /* Which column to return */ -){ - JsonEachCursor *p = (JsonEachCursor*)cur; - JsonNode *pThis = &p->sParse.aNode[p->i]; - switch( i ){ - case JEACH_KEY: { - if( p->i==0 ) break; - if( p->eType==JSON_OBJECT ){ - jsonReturn(pThis, ctx, 0); - }else if( p->eType==JSON_ARRAY ){ - u32 iKey; - if( p->bRecursive ){ - if( p->iRowid==0 ) break; - iKey = p->sParse.aNode[p->sParse.aUp[p->i]].u.iKey; - }else{ - iKey = p->iRowid; - } - sqlite3_result_int64(ctx, (sqlite3_int64)iKey); - } - break; - } - case JEACH_VALUE: { - if( pThis->jnFlags & JNODE_LABEL ) pThis++; - jsonReturn(pThis, ctx, 0); - break; - } - case JEACH_TYPE: { - if( pThis->jnFlags & JNODE_LABEL ) pThis++; - sqlite3_result_text(ctx, jsonType[pThis->eType], -1, SQLITE_STATIC); - break; - } - case JEACH_ATOM: { - if( pThis->jnFlags & JNODE_LABEL ) pThis++; - if( pThis->eType>=JSON_ARRAY ) break; - jsonReturn(pThis, ctx, 0); - break; - } - case JEACH_ID: { - sqlite3_result_int64(ctx, - (sqlite3_int64)p->i + ((pThis->jnFlags & JNODE_LABEL)!=0)); - break; - } - case JEACH_PARENT: { - if( p->i>p->iBegin && p->bRecursive ){ - sqlite3_result_int64(ctx, (sqlite3_int64)p->sParse.aUp[p->i]); - } - break; - } - case JEACH_FULLKEY: { - JsonString x; - jsonInit(&x, ctx); - if( p->bRecursive ){ - jsonEachComputePath(p, &x, p->i); - }else{ - if( p->zRoot ){ - jsonAppendRaw(&x, p->zRoot, (int)strlen(p->zRoot)); - }else{ - jsonAppendChar(&x, '$'); - } - if( p->eType==JSON_ARRAY ){ - jsonPrintf(30, &x, "[%d]", p->iRowid); - }else if( p->eType==JSON_OBJECT ){ - jsonPrintf(pThis->n, &x, ".%.*s", pThis->n-2, pThis->u.zJContent+1); - } - } - jsonResult(&x); - break; - } - case JEACH_PATH: { - if( p->bRecursive ){ - JsonString x; - jsonInit(&x, ctx); - jsonEachComputePath(p, &x, p->sParse.aUp[p->i]); - jsonResult(&x); - break; - } - /* For json_each() path and root are the same so fall through - ** into the root case */ - } - default: { - const char *zRoot = p->zRoot; - if( zRoot==0 ) zRoot = "$"; - sqlite3_result_text(ctx, zRoot, -1, SQLITE_STATIC); - break; - } - case JEACH_JSON: { - assert( i==JEACH_JSON ); - sqlite3_result_text(ctx, p->sParse.zJson, -1, SQLITE_STATIC); - break; - } - } - return SQLITE_OK; -} - -/* Return the current rowid value */ -static int jsonEachRowid(sqlite3_vtab_cursor *cur, sqlite_int64 *pRowid){ - JsonEachCursor *p = (JsonEachCursor*)cur; - *pRowid = p->iRowid; - return SQLITE_OK; -} - -/* The query strategy is to look for an equality constraint on the json -** column. Without such a constraint, the table cannot operate. idxNum is -** 1 if the constraint is found, 3 if the constraint and zRoot are found, -** and 0 otherwise. -*/ -static int jsonEachBestIndex( - sqlite3_vtab *tab, - sqlite3_index_info *pIdxInfo -){ - int i; - int jsonIdx = -1; - int rootIdx = -1; - const struct sqlite3_index_constraint *pConstraint; - - UNUSED_PARAM(tab); - pConstraint = pIdxInfo->aConstraint; - for(i=0; inConstraint; i++, pConstraint++){ - if( pConstraint->usable==0 ) continue; - if( pConstraint->op!=SQLITE_INDEX_CONSTRAINT_EQ ) continue; - switch( pConstraint->iColumn ){ - case JEACH_JSON: jsonIdx = i; break; - case JEACH_ROOT: rootIdx = i; break; - default: /* no-op */ break; - } - } - if( jsonIdx<0 ){ - pIdxInfo->idxNum = 0; - pIdxInfo->estimatedCost = 1e99; - }else{ - pIdxInfo->estimatedCost = 1.0; - pIdxInfo->aConstraintUsage[jsonIdx].argvIndex = 1; - pIdxInfo->aConstraintUsage[jsonIdx].omit = 1; - if( rootIdx<0 ){ - pIdxInfo->idxNum = 1; - }else{ - pIdxInfo->aConstraintUsage[rootIdx].argvIndex = 2; - pIdxInfo->aConstraintUsage[rootIdx].omit = 1; - pIdxInfo->idxNum = 3; - } - } - return SQLITE_OK; -} - -/* Start a search on a new JSON string */ -static int jsonEachFilter( - sqlite3_vtab_cursor *cur, - int idxNum, const char *idxStr, - int argc, sqlite3_value **argv -){ - JsonEachCursor *p = (JsonEachCursor*)cur; - const char *z; - const char *zRoot = 0; - sqlite3_int64 n; - - UNUSED_PARAM(idxStr); - UNUSED_PARAM(argc); - jsonEachCursorReset(p); - if( idxNum==0 ) return SQLITE_OK; - z = (const char*)sqlite3_value_text(argv[0]); - if( z==0 ) return SQLITE_OK; - n = sqlite3_value_bytes(argv[0]); - p->zJson = sqlite3_malloc64( n+1 ); - if( p->zJson==0 ) return SQLITE_NOMEM; - memcpy(p->zJson, z, (size_t)n+1); - if( jsonParse(&p->sParse, 0, p->zJson) ){ - int rc = SQLITE_NOMEM; - if( p->sParse.oom==0 ){ - sqlite3_free(cur->pVtab->zErrMsg); - cur->pVtab->zErrMsg = sqlite3_mprintf("malformed JSON"); - if( cur->pVtab->zErrMsg ) rc = SQLITE_ERROR; - } - jsonEachCursorReset(p); - return rc; - }else if( p->bRecursive && jsonParseFindParents(&p->sParse) ){ - jsonEachCursorReset(p); - return SQLITE_NOMEM; - }else{ - JsonNode *pNode = 0; - if( idxNum==3 ){ - const char *zErr = 0; - zRoot = (const char*)sqlite3_value_text(argv[1]); - if( zRoot==0 ) return SQLITE_OK; - n = sqlite3_value_bytes(argv[1]); - p->zRoot = sqlite3_malloc64( n+1 ); - if( p->zRoot==0 ) return SQLITE_NOMEM; - memcpy(p->zRoot, zRoot, (size_t)n+1); - if( zRoot[0]!='$' ){ - zErr = zRoot; - }else{ - pNode = jsonLookupStep(&p->sParse, 0, p->zRoot+1, 0, &zErr); - } - if( zErr ){ - sqlite3_free(cur->pVtab->zErrMsg); - cur->pVtab->zErrMsg = jsonPathSyntaxError(zErr); - jsonEachCursorReset(p); - return cur->pVtab->zErrMsg ? SQLITE_ERROR : SQLITE_NOMEM; - }else if( pNode==0 ){ - return SQLITE_OK; - } - }else{ - pNode = p->sParse.aNode; - } - p->iBegin = p->i = (int)(pNode - p->sParse.aNode); - p->eType = pNode->eType; - if( p->eType>=JSON_ARRAY ){ - pNode->u.iKey = 0; - p->iEnd = p->i + pNode->n + 1; - if( p->bRecursive ){ - p->eType = p->sParse.aNode[p->sParse.aUp[p->i]].eType; - if( p->i>0 && (p->sParse.aNode[p->i-1].jnFlags & JNODE_LABEL)!=0 ){ - p->i--; - } - }else{ - p->i++; - } - }else{ - p->iEnd = p->i+1; - } - } - return SQLITE_OK; -} - -/* The methods of the json_each virtual table */ -static sqlite3_module jsonEachModule = { - 0, /* iVersion */ - 0, /* xCreate */ - jsonEachConnect, /* xConnect */ - jsonEachBestIndex, /* xBestIndex */ - jsonEachDisconnect, /* xDisconnect */ - 0, /* xDestroy */ - jsonEachOpenEach, /* xOpen - open a cursor */ - jsonEachClose, /* xClose - close a cursor */ - jsonEachFilter, /* xFilter - configure scan constraints */ - jsonEachNext, /* xNext - advance a cursor */ - jsonEachEof, /* xEof - check for end of scan */ - jsonEachColumn, /* xColumn - read data */ - jsonEachRowid, /* xRowid - read data */ - 0, /* xUpdate */ - 0, /* xBegin */ - 0, /* xSync */ - 0, /* xCommit */ - 0, /* xRollback */ - 0, /* xFindMethod */ - 0, /* xRename */ - 0, /* xSavepoint */ - 0, /* xRelease */ - 0 /* xRollbackTo */ -}; - -/* The methods of the json_tree virtual table. */ -static sqlite3_module jsonTreeModule = { - 0, /* iVersion */ - 0, /* xCreate */ - jsonEachConnect, /* xConnect */ - jsonEachBestIndex, /* xBestIndex */ - jsonEachDisconnect, /* xDisconnect */ - 0, /* xDestroy */ - jsonEachOpenTree, /* xOpen - open a cursor */ - jsonEachClose, /* xClose - close a cursor */ - jsonEachFilter, /* xFilter - configure scan constraints */ - jsonEachNext, /* xNext - advance a cursor */ - jsonEachEof, /* xEof - check for end of scan */ - jsonEachColumn, /* xColumn - read data */ - jsonEachRowid, /* xRowid - read data */ - 0, /* xUpdate */ - 0, /* xBegin */ - 0, /* xSync */ - 0, /* xCommit */ - 0, /* xRollback */ - 0, /* xFindMethod */ - 0, /* xRename */ - 0, /* xSavepoint */ - 0, /* xRelease */ - 0 /* xRollbackTo */ -}; -#endif /* SQLITE_OMIT_VIRTUALTABLE */ - -/**************************************************************************** -** The following routines are the only publically visible identifiers in this -** file. Call the following routines in order to register the various SQL -** functions and the virtual table implemented by this file. -****************************************************************************/ - -SQLITE_PRIVATE int sqlite3Json1Init(sqlite3 *db){ - int rc = SQLITE_OK; - unsigned int i; - static const struct { - const char *zName; - int nArg; - int flag; - void (*xFunc)(sqlite3_context*,int,sqlite3_value**); - } aFunc[] = { - { "json", 1, 0, jsonRemoveFunc }, - { "json_array", -1, 0, jsonArrayFunc }, - { "json_array_length", 1, 0, jsonArrayLengthFunc }, - { "json_array_length", 2, 0, jsonArrayLengthFunc }, - { "json_extract", -1, 0, jsonExtractFunc }, - { "json_insert", -1, 0, jsonSetFunc }, - { "json_object", -1, 0, jsonObjectFunc }, - { "json_patch", 2, 0, jsonPatchFunc }, - { "json_quote", 1, 0, jsonQuoteFunc }, - { "json_remove", -1, 0, jsonRemoveFunc }, - { "json_replace", -1, 0, jsonReplaceFunc }, - { "json_set", -1, 1, jsonSetFunc }, - { "json_type", 1, 0, jsonTypeFunc }, - { "json_type", 2, 0, jsonTypeFunc }, - { "json_valid", 1, 0, jsonValidFunc }, - -#if SQLITE_DEBUG - /* DEBUG and TESTING functions */ - { "json_parse", 1, 0, jsonParseFunc }, - { "json_test1", 1, 0, jsonTest1Func }, -#endif - }; - static const struct { - const char *zName; - int nArg; - void (*xStep)(sqlite3_context*,int,sqlite3_value**); - void (*xFinal)(sqlite3_context*); - } aAgg[] = { - { "json_group_array", 1, jsonArrayStep, jsonArrayFinal }, - { "json_group_object", 2, jsonObjectStep, jsonObjectFinal }, - }; -#ifndef SQLITE_OMIT_VIRTUALTABLE - static const struct { - const char *zName; - sqlite3_module *pModule; - } aMod[] = { - { "json_each", &jsonEachModule }, - { "json_tree", &jsonTreeModule }, - }; -#endif - for(i=0; i ** @@ -190650,7 +197471,7 @@ struct Fts5ExtensionApi { ** extra data to the FTS index or require FTS5 to query for multiple terms, ** so it is efficient in terms of disk space and query speed. However, it ** does not support prefix queries very well. If, as suggested above, the -** token "first" is subsituted for "1st" by the tokenizer, then the query: +** token "first" is substituted for "1st" by the tokenizer, then the query: ** ** ** ... MATCH '1s*' @@ -191542,9 +198363,12 @@ static int sqlite3Fts5VocabInit(Fts5Global*, sqlite3*); /************************************************************************** ** Interface to automatically generated code in fts5_unicode2.c. */ -static int sqlite3Fts5UnicodeIsalnum(int c); static int sqlite3Fts5UnicodeIsdiacritic(int c); static int sqlite3Fts5UnicodeFold(int c, int bRemoveDiacritic); + +static int sqlite3Fts5UnicodeCatParse(const char*, u8*); +static int sqlite3Fts5UnicodeCategory(int iCode); +static void sqlite3Fts5UnicodeAscii(u8*, u8*); /* ** End of interface to code in fts5_unicode2.c. **************************************************************************/ @@ -191720,6 +198544,7 @@ typedef union { #define fts5YY_MIN_REDUCE 83 #define fts5YY_MAX_REDUCE 110 /************* End control #defines *******************************************/ +#define fts5YY_NLOOKAHEAD ((int)(sizeof(fts5yy_lookahead)/sizeof(fts5yy_lookahead[0]))) /* Define the fts5yytestcase() macro to be a no-op if is not already defined ** otherwise. @@ -192279,11 +199104,11 @@ static fts5YYACTIONTYPE fts5yy_find_shift_action( do{ i = fts5yy_shift_ofst[stateno]; assert( i>=0 ); - assert( i+fts5YYNFTS5TOKEN<=(int)sizeof(fts5yy_lookahead)/sizeof(fts5yy_lookahead[0]) ); + /* assert( i+fts5YYNFTS5TOKEN<=(int)fts5YY_NLOOKAHEAD ); */ assert( iLookAhead!=fts5YYNOCODE ); assert( iLookAhead < fts5YYNFTS5TOKEN ); i += iLookAhead; - if( fts5yy_lookahead[i]!=iLookAhead ){ + if( i>=fts5YY_NLOOKAHEAD || fts5yy_lookahead[i]!=iLookAhead ){ #ifdef fts5YYFALLBACK fts5YYCODETYPE iFallback; /* Fallback token */ if( iLookAhead=fts5YY_ACTTAB_COUNT j0 ){ #ifndef NDEBUG @@ -192333,7 +199159,7 @@ static fts5YYACTIONTYPE fts5yy_find_shift_action( ** Find the appropriate action for a parser given the non-terminal ** look-ahead token iLookAhead. */ -static int fts5yy_find_reduce_action( +static fts5YYACTIONTYPE fts5yy_find_reduce_action( fts5YYACTIONTYPE stateno, /* Current state number */ fts5YYCODETYPE iLookAhead /* The look-ahead token */ ){ @@ -192501,7 +199327,7 @@ static fts5YYACTIONTYPE fts5yy_reduce( sqlite3Fts5ParserCTX_PDECL /* %extra_context */ ){ int fts5yygoto; /* The next state */ - int fts5yyact; /* The next action */ + fts5YYACTIONTYPE fts5yyact; /* The next action */ fts5yyStackEntry *fts5yymsp; /* The top of the parser's stack */ int fts5yysize; /* Amount to pop the stack */ sqlite3Fts5ParserARG_FETCH @@ -192857,12 +199683,12 @@ static void sqlite3Fts5Parser( do{ assert( fts5yyact==fts5yypParser->fts5yytos->stateno ); - fts5yyact = fts5yy_find_shift_action(fts5yymajor,fts5yyact); + fts5yyact = fts5yy_find_shift_action((fts5YYCODETYPE)fts5yymajor,fts5yyact); if( fts5yyact >= fts5YY_MIN_REDUCE ){ fts5yyact = fts5yy_reduce(fts5yypParser,fts5yyact-fts5YY_MIN_REDUCE,fts5yymajor, fts5yyminor sqlite3Fts5ParserCTX_PARAM); }else if( fts5yyact <= fts5YY_MAX_SHIFTREDUCE ){ - fts5yy_shift(fts5yypParser,fts5yyact,fts5yymajor,fts5yyminor); + fts5yy_shift(fts5yypParser,fts5yyact,(fts5YYCODETYPE)fts5yymajor,fts5yyminor); #ifndef fts5YYNOERRORRECOVERY fts5yypParser->fts5yyerrcnt--; #endif @@ -192990,6 +199816,21 @@ static void sqlite3Fts5Parser( return; } +/* +** Return the fallback token corresponding to canonical token iToken, or +** 0 if iToken has no fallback. +*/ +static int sqlite3Fts5ParserFallback(int iToken){ +#ifdef fts5YYFALLBACK + if( iToken<(int)(sizeof(fts5yyFallback)/sizeof(fts5yyFallback[0])) ){ + return fts5yyFallback[iToken]; + } +#else + (void)iToken; +#endif + return 0; +} + /* ** 2014 May 31 ** @@ -195100,6 +201941,7 @@ static void sqlite3Fts5Parser(void*, int, Fts5Token, Fts5Parse*); /* #include */ static void sqlite3Fts5ParserTrace(FILE*, char*); #endif +static int sqlite3Fts5ParserFallback(int); struct Fts5Expr { @@ -197604,14 +204446,19 @@ static void fts5ExprIsAlnum( sqlite3_value **apVal /* Function arguments */ ){ int iCode; + u8 aArr[32]; if( nArg!=1 ){ sqlite3_result_error(pCtx, "wrong number of arguments to function fts5_isalnum", -1 ); return; } + memset(aArr, 0, sizeof(aArr)); + sqlite3Fts5UnicodeCatParse("L*", aArr); + sqlite3Fts5UnicodeCatParse("N*", aArr); + sqlite3Fts5UnicodeCatParse("Co", aArr); iCode = sqlite3_value_int(apVal[0]); - sqlite3_result_int(pCtx, sqlite3Fts5UnicodeIsalnum(iCode)); + sqlite3_result_int(pCtx, aArr[sqlite3Fts5UnicodeCategory(iCode)]); } static void fts5ExprFold( @@ -197655,10 +204502,12 @@ static int sqlite3Fts5ExprInit(Fts5Global *pGlobal, sqlite3 *db){ rc = sqlite3_create_function(db, p->z, -1, SQLITE_UTF8, pCtx, p->x, 0, 0); } - /* Avoid a warning indicating that sqlite3Fts5ParserTrace() is unused */ + /* Avoid warnings indicating that sqlite3Fts5ParserTrace() and + ** sqlite3Fts5ParserFallback() are unused */ #ifndef NDEBUG (void)sqlite3Fts5ParserTrace; #endif + (void)sqlite3Fts5ParserFallback; return rc; } @@ -203706,7 +210555,10 @@ static int sqlite3Fts5IndexCharlenToBytelen( for(i=0; i=nByte ) return 0; /* Input contains fewer than nChar chars */ if( (unsigned char)p[n++]>=0xc0 ){ - while( (p[n] & 0xc0)==0x80 ) n++; + while( (p[n] & 0xc0)==0x80 ){ + n++; + if( n>=nByte ) break; + } } } return n; @@ -205231,7 +212083,7 @@ static void fts5CheckTransactionState(Fts5Table *p, int op, int iSavepoint){ case FTS5_SAVEPOINT: assert( p->ts.eState==1 ); assert( iSavepoint>=0 ); - assert( iSavepoint>p->ts.iSavepoint ); + assert( iSavepoint>=p->ts.iSavepoint ); p->ts.iSavepoint = iSavepoint; break; @@ -206156,6 +213008,13 @@ static int fts5FilterMethod( assert( nVal==0 && pMatch==0 && bOrderByRank==0 && bDesc==0 ); assert( pCsr->iLastRowid==LARGEST_INT64 ); assert( pCsr->iFirstRowid==SMALLEST_INT64 ); + if( pTab->pSortCsr->bDesc ){ + pCsr->iLastRowid = pTab->pSortCsr->iFirstRowid; + pCsr->iFirstRowid = pTab->pSortCsr->iLastRowid; + }else{ + pCsr->iLastRowid = pTab->pSortCsr->iLastRowid; + pCsr->iFirstRowid = pTab->pSortCsr->iFirstRowid; + } pCsr->ePlan = FTS5_PLAN_SOURCE; pCsr->pExpr = pTab->pSortCsr->pExpr; rc = fts5CursorFirst(pTab, pCsr, bDesc); @@ -207586,7 +214445,7 @@ static void fts5SourceIdFunc( ){ assert( nArg==0 ); UNUSED_PARAM2(nArg, apUnused); - sqlite3_result_text(pCtx, "fts5: 2018-06-04 19:24:41 c7ee0833225bfd8c5ec2f9bf62b97c4e04d03bd9566366d5221ac8fb199a87ca", -1, SQLITE_TRANSIENT); + sqlite3_result_text(pCtx, "fts5: 2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7", -1, SQLITE_TRANSIENT); } static int fts5Init(sqlite3 *db){ @@ -209074,6 +215933,8 @@ struct Unicode61Tokenizer { int bRemoveDiacritic; /* True if remove_diacritics=1 is set */ int nException; int *aiException; + + unsigned char aCategory[32]; /* True for token char categories */ }; static int fts5UnicodeAddExceptions( @@ -209098,7 +215959,7 @@ static int fts5UnicodeAddExceptions( if( iCode<128 ){ p->aTokenChar[iCode] = (unsigned char)bTokenChars; }else{ - bToken = sqlite3Fts5UnicodeIsalnum(iCode); + bToken = p->aCategory[sqlite3Fts5UnicodeCategory(iCode)]; assert( (bToken==0 || bToken==1) ); assert( (bTokenChars==0 || bTokenChars==1) ); if( bToken!=bTokenChars && sqlite3Fts5UnicodeIsdiacritic(iCode)==0 ){ @@ -209159,6 +216020,21 @@ static void fts5UnicodeDelete(Fts5Tokenizer *pTok){ return; } +static int unicodeSetCategories(Unicode61Tokenizer *p, const char *zCat){ + const char *z = zCat; + + while( *z ){ + while( *z==' ' || *z=='\t' ) z++; + if( *z && sqlite3Fts5UnicodeCatParse(z, p->aCategory) ){ + return SQLITE_ERROR; + } + while( *z!=' ' && *z!='\t' && *z!='\0' ) z++; + } + + sqlite3Fts5UnicodeAscii(p->aCategory, p->aTokenChar); + return SQLITE_OK; +} + /* ** Create a "unicode61" tokenizer. */ @@ -209177,15 +216053,28 @@ static int fts5UnicodeCreate( }else{ p = (Unicode61Tokenizer*)sqlite3_malloc(sizeof(Unicode61Tokenizer)); if( p ){ + const char *zCat = "L* N* Co"; int i; memset(p, 0, sizeof(Unicode61Tokenizer)); - memcpy(p->aTokenChar, aAsciiTokenChar, sizeof(aAsciiTokenChar)); + p->bRemoveDiacritic = 1; p->nFold = 64; p->aFold = sqlite3_malloc(p->nFold * sizeof(char)); if( p->aFold==0 ){ rc = SQLITE_NOMEM; } + + /* Search for a "categories" argument */ + for(i=0; rc==SQLITE_OK && iaCategory[sqlite3Fts5UnicodeCategory(iCode)] + ^ fts5UnicodeIsException(p, iCode) + ); } static int fts5UnicodeTokenize( @@ -210098,135 +216993,6 @@ static int sqlite3Fts5TokenizerInit(fts5_api *pApi){ /* #include */ -/* -** Return true if the argument corresponds to a unicode codepoint -** classified as either a letter or a number. Otherwise false. -** -** The results are undefined if the value passed to this function -** is less than zero. -*/ -static int sqlite3Fts5UnicodeIsalnum(int c){ - /* Each unsigned integer in the following array corresponds to a contiguous - ** range of unicode codepoints that are not either letters or numbers (i.e. - ** codepoints for which this function should return 0). - ** - ** The most significant 22 bits in each 32-bit value contain the first - ** codepoint in the range. The least significant 10 bits are used to store - ** the size of the range (always at least 1). In other words, the value - ** ((C<<22) + N) represents a range of N codepoints starting with codepoint - ** C. It is not possible to represent a range larger than 1023 codepoints - ** using this format. - */ - static const unsigned int aEntry[] = { - 0x00000030, 0x0000E807, 0x00016C06, 0x0001EC2F, 0x0002AC07, - 0x0002D001, 0x0002D803, 0x0002EC01, 0x0002FC01, 0x00035C01, - 0x0003DC01, 0x000B0804, 0x000B480E, 0x000B9407, 0x000BB401, - 0x000BBC81, 0x000DD401, 0x000DF801, 0x000E1002, 0x000E1C01, - 0x000FD801, 0x00120808, 0x00156806, 0x00162402, 0x00163C01, - 0x00164437, 0x0017CC02, 0x00180005, 0x00181816, 0x00187802, - 0x00192C15, 0x0019A804, 0x0019C001, 0x001B5001, 0x001B580F, - 0x001B9C07, 0x001BF402, 0x001C000E, 0x001C3C01, 0x001C4401, - 0x001CC01B, 0x001E980B, 0x001FAC09, 0x001FD804, 0x00205804, - 0x00206C09, 0x00209403, 0x0020A405, 0x0020C00F, 0x00216403, - 0x00217801, 0x0023901B, 0x00240004, 0x0024E803, 0x0024F812, - 0x00254407, 0x00258804, 0x0025C001, 0x00260403, 0x0026F001, - 0x0026F807, 0x00271C02, 0x00272C03, 0x00275C01, 0x00278802, - 0x0027C802, 0x0027E802, 0x00280403, 0x0028F001, 0x0028F805, - 0x00291C02, 0x00292C03, 0x00294401, 0x0029C002, 0x0029D401, - 0x002A0403, 0x002AF001, 0x002AF808, 0x002B1C03, 0x002B2C03, - 0x002B8802, 0x002BC002, 0x002C0403, 0x002CF001, 0x002CF807, - 0x002D1C02, 0x002D2C03, 0x002D5802, 0x002D8802, 0x002DC001, - 0x002E0801, 0x002EF805, 0x002F1803, 0x002F2804, 0x002F5C01, - 0x002FCC08, 0x00300403, 0x0030F807, 0x00311803, 0x00312804, - 0x00315402, 0x00318802, 0x0031FC01, 0x00320802, 0x0032F001, - 0x0032F807, 0x00331803, 0x00332804, 0x00335402, 0x00338802, - 0x00340802, 0x0034F807, 0x00351803, 0x00352804, 0x00355C01, - 0x00358802, 0x0035E401, 0x00360802, 0x00372801, 0x00373C06, - 0x00375801, 0x00376008, 0x0037C803, 0x0038C401, 0x0038D007, - 0x0038FC01, 0x00391C09, 0x00396802, 0x003AC401, 0x003AD006, - 0x003AEC02, 0x003B2006, 0x003C041F, 0x003CD00C, 0x003DC417, - 0x003E340B, 0x003E6424, 0x003EF80F, 0x003F380D, 0x0040AC14, - 0x00412806, 0x00415804, 0x00417803, 0x00418803, 0x00419C07, - 0x0041C404, 0x0042080C, 0x00423C01, 0x00426806, 0x0043EC01, - 0x004D740C, 0x004E400A, 0x00500001, 0x0059B402, 0x005A0001, - 0x005A6C02, 0x005BAC03, 0x005C4803, 0x005CC805, 0x005D4802, - 0x005DC802, 0x005ED023, 0x005F6004, 0x005F7401, 0x0060000F, - 0x0062A401, 0x0064800C, 0x0064C00C, 0x00650001, 0x00651002, - 0x0066C011, 0x00672002, 0x00677822, 0x00685C05, 0x00687802, - 0x0069540A, 0x0069801D, 0x0069FC01, 0x006A8007, 0x006AA006, - 0x006C0005, 0x006CD011, 0x006D6823, 0x006E0003, 0x006E840D, - 0x006F980E, 0x006FF004, 0x00709014, 0x0070EC05, 0x0071F802, - 0x00730008, 0x00734019, 0x0073B401, 0x0073C803, 0x00770027, - 0x0077F004, 0x007EF401, 0x007EFC03, 0x007F3403, 0x007F7403, - 0x007FB403, 0x007FF402, 0x00800065, 0x0081A806, 0x0081E805, - 0x00822805, 0x0082801A, 0x00834021, 0x00840002, 0x00840C04, - 0x00842002, 0x00845001, 0x00845803, 0x00847806, 0x00849401, - 0x00849C01, 0x0084A401, 0x0084B801, 0x0084E802, 0x00850005, - 0x00852804, 0x00853C01, 0x00864264, 0x00900027, 0x0091000B, - 0x0092704E, 0x00940200, 0x009C0475, 0x009E53B9, 0x00AD400A, - 0x00B39406, 0x00B3BC03, 0x00B3E404, 0x00B3F802, 0x00B5C001, - 0x00B5FC01, 0x00B7804F, 0x00B8C00C, 0x00BA001A, 0x00BA6C59, - 0x00BC00D6, 0x00BFC00C, 0x00C00005, 0x00C02019, 0x00C0A807, - 0x00C0D802, 0x00C0F403, 0x00C26404, 0x00C28001, 0x00C3EC01, - 0x00C64002, 0x00C6580A, 0x00C70024, 0x00C8001F, 0x00C8A81E, - 0x00C94001, 0x00C98020, 0x00CA2827, 0x00CB003F, 0x00CC0100, - 0x01370040, 0x02924037, 0x0293F802, 0x02983403, 0x0299BC10, - 0x029A7C01, 0x029BC008, 0x029C0017, 0x029C8002, 0x029E2402, - 0x02A00801, 0x02A01801, 0x02A02C01, 0x02A08C09, 0x02A0D804, - 0x02A1D004, 0x02A20002, 0x02A2D011, 0x02A33802, 0x02A38012, - 0x02A3E003, 0x02A4980A, 0x02A51C0D, 0x02A57C01, 0x02A60004, - 0x02A6CC1B, 0x02A77802, 0x02A8A40E, 0x02A90C01, 0x02A93002, - 0x02A97004, 0x02A9DC03, 0x02A9EC01, 0x02AAC001, 0x02AAC803, - 0x02AADC02, 0x02AAF802, 0x02AB0401, 0x02AB7802, 0x02ABAC07, - 0x02ABD402, 0x02AF8C0B, 0x03600001, 0x036DFC02, 0x036FFC02, - 0x037FFC01, 0x03EC7801, 0x03ECA401, 0x03EEC810, 0x03F4F802, - 0x03F7F002, 0x03F8001A, 0x03F88007, 0x03F8C023, 0x03F95013, - 0x03F9A004, 0x03FBFC01, 0x03FC040F, 0x03FC6807, 0x03FCEC06, - 0x03FD6C0B, 0x03FF8007, 0x03FFA007, 0x03FFE405, 0x04040003, - 0x0404DC09, 0x0405E411, 0x0406400C, 0x0407402E, 0x040E7C01, - 0x040F4001, 0x04215C01, 0x04247C01, 0x0424FC01, 0x04280403, - 0x04281402, 0x04283004, 0x0428E003, 0x0428FC01, 0x04294009, - 0x0429FC01, 0x042CE407, 0x04400003, 0x0440E016, 0x04420003, - 0x0442C012, 0x04440003, 0x04449C0E, 0x04450004, 0x04460003, - 0x0446CC0E, 0x04471404, 0x045AAC0D, 0x0491C004, 0x05BD442E, - 0x05BE3C04, 0x074000F6, 0x07440027, 0x0744A4B5, 0x07480046, - 0x074C0057, 0x075B0401, 0x075B6C01, 0x075BEC01, 0x075C5401, - 0x075CD401, 0x075D3C01, 0x075DBC01, 0x075E2401, 0x075EA401, - 0x075F0C01, 0x07BBC002, 0x07C0002C, 0x07C0C064, 0x07C2800F, - 0x07C2C40E, 0x07C3040F, 0x07C3440F, 0x07C4401F, 0x07C4C03C, - 0x07C5C02B, 0x07C7981D, 0x07C8402B, 0x07C90009, 0x07C94002, - 0x07CC0021, 0x07CCC006, 0x07CCDC46, 0x07CE0014, 0x07CE8025, - 0x07CF1805, 0x07CF8011, 0x07D0003F, 0x07D10001, 0x07D108B6, - 0x07D3E404, 0x07D4003E, 0x07D50004, 0x07D54018, 0x07D7EC46, - 0x07D9140B, 0x07DA0046, 0x07DC0074, 0x38000401, 0x38008060, - 0x380400F0, - }; - static const unsigned int aAscii[4] = { - 0xFFFFFFFF, 0xFC00FFFF, 0xF8000001, 0xF8000001, - }; - - if( (unsigned int)c<128 ){ - return ( (aAscii[c >> 5] & (1 << (c & 0x001F)))==0 ); - }else if( (unsigned int)c<(1<<22) ){ - unsigned int key = (((unsigned int)c)<<10) | 0x000003FF; - int iRes = 0; - int iHi = sizeof(aEntry)/sizeof(aEntry[0]) - 1; - int iLo = 0; - while( iHi>=iLo ){ - int iTest = (iHi + iLo) / 2; - if( key >= aEntry[iTest] ){ - iRes = iTest; - iLo = iTest+1; - }else{ - iHi = iTest-1; - } - } - assert( aEntry[0]=aEntry[iRes] ); - return (((unsigned int)c) >= ((aEntry[iRes]>>10) + (aEntry[iRes]&0x3FF))); - } - return 1; -} /* @@ -210439,6 +217205,539 @@ static int sqlite3Fts5UnicodeFold(int c, int bRemoveDiacritic){ return ret; } + +#if 0 +static int sqlite3Fts5UnicodeNCat(void) { + return 32; +} +#endif + +static int sqlite3Fts5UnicodeCatParse(const char *zCat, u8 *aArray){ + aArray[0] = 1; + switch( zCat[0] ){ + case 'C': + switch( zCat[1] ){ + case 'c': aArray[1] = 1; break; + case 'f': aArray[2] = 1; break; + case 'n': aArray[3] = 1; break; + case 's': aArray[4] = 1; break; + case 'o': aArray[31] = 1; break; + case '*': + aArray[1] = 1; + aArray[2] = 1; + aArray[3] = 1; + aArray[4] = 1; + aArray[31] = 1; + break; + default: return 1; } + break; + + case 'L': + switch( zCat[1] ){ + case 'l': aArray[5] = 1; break; + case 'm': aArray[6] = 1; break; + case 'o': aArray[7] = 1; break; + case 't': aArray[8] = 1; break; + case 'u': aArray[9] = 1; break; + case 'C': aArray[30] = 1; break; + case '*': + aArray[5] = 1; + aArray[6] = 1; + aArray[7] = 1; + aArray[8] = 1; + aArray[9] = 1; + aArray[30] = 1; + break; + default: return 1; } + break; + + case 'M': + switch( zCat[1] ){ + case 'c': aArray[10] = 1; break; + case 'e': aArray[11] = 1; break; + case 'n': aArray[12] = 1; break; + case '*': + aArray[10] = 1; + aArray[11] = 1; + aArray[12] = 1; + break; + default: return 1; } + break; + + case 'N': + switch( zCat[1] ){ + case 'd': aArray[13] = 1; break; + case 'l': aArray[14] = 1; break; + case 'o': aArray[15] = 1; break; + case '*': + aArray[13] = 1; + aArray[14] = 1; + aArray[15] = 1; + break; + default: return 1; } + break; + + case 'P': + switch( zCat[1] ){ + case 'c': aArray[16] = 1; break; + case 'd': aArray[17] = 1; break; + case 'e': aArray[18] = 1; break; + case 'f': aArray[19] = 1; break; + case 'i': aArray[20] = 1; break; + case 'o': aArray[21] = 1; break; + case 's': aArray[22] = 1; break; + case '*': + aArray[16] = 1; + aArray[17] = 1; + aArray[18] = 1; + aArray[19] = 1; + aArray[20] = 1; + aArray[21] = 1; + aArray[22] = 1; + break; + default: return 1; } + break; + + case 'S': + switch( zCat[1] ){ + case 'c': aArray[23] = 1; break; + case 'k': aArray[24] = 1; break; + case 'm': aArray[25] = 1; break; + case 'o': aArray[26] = 1; break; + case '*': + aArray[23] = 1; + aArray[24] = 1; + aArray[25] = 1; + aArray[26] = 1; + break; + default: return 1; } + break; + + case 'Z': + switch( zCat[1] ){ + case 'l': aArray[27] = 1; break; + case 'p': aArray[28] = 1; break; + case 's': aArray[29] = 1; break; + case '*': + aArray[27] = 1; + aArray[28] = 1; + aArray[29] = 1; + break; + default: return 1; } + break; + + } + return 0; +} + +static u16 aFts5UnicodeBlock[] = { + 0, 1471, 1753, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1763, 1765, + }; +static u16 aFts5UnicodeMap[] = { + 0, 32, 33, 36, 37, 40, 41, 42, 43, 44, + 45, 46, 48, 58, 60, 63, 65, 91, 92, 93, + 94, 95, 96, 97, 123, 124, 125, 126, 127, 160, + 161, 162, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 180, 181, 182, 184, 185, + 186, 187, 188, 191, 192, 215, 216, 223, 247, 248, + 256, 312, 313, 329, 330, 377, 383, 385, 387, 388, + 391, 394, 396, 398, 402, 403, 405, 406, 409, 412, + 414, 415, 417, 418, 423, 427, 428, 431, 434, 436, + 437, 440, 442, 443, 444, 446, 448, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 477, 478, 496, + 497, 498, 499, 500, 503, 505, 506, 564, 570, 572, + 573, 575, 577, 580, 583, 584, 592, 660, 661, 688, + 706, 710, 722, 736, 741, 748, 749, 750, 751, 768, + 880, 884, 885, 886, 890, 891, 894, 900, 902, 903, + 904, 908, 910, 912, 913, 931, 940, 975, 977, 978, + 981, 984, 1008, 1012, 1014, 1015, 1018, 1020, 1021, 1072, + 1120, 1154, 1155, 1160, 1162, 1217, 1231, 1232, 1329, 1369, + 1370, 1377, 1417, 1418, 1423, 1425, 1470, 1471, 1472, 1473, + 1475, 1476, 1478, 1479, 1488, 1520, 1523, 1536, 1542, 1545, + 1547, 1548, 1550, 1552, 1563, 1566, 1568, 1600, 1601, 1611, + 1632, 1642, 1646, 1648, 1649, 1748, 1749, 1750, 1757, 1758, + 1759, 1765, 1767, 1769, 1770, 1774, 1776, 1786, 1789, 1791, + 1792, 1807, 1808, 1809, 1810, 1840, 1869, 1958, 1969, 1984, + 1994, 2027, 2036, 2038, 2039, 2042, 2048, 2070, 2074, 2075, + 2084, 2085, 2088, 2089, 2096, 2112, 2137, 2142, 2208, 2210, + 2276, 2304, 2307, 2308, 2362, 2363, 2364, 2365, 2366, 2369, + 2377, 2381, 2382, 2384, 2385, 2392, 2402, 2404, 2406, 2416, + 2417, 2418, 2425, 2433, 2434, 2437, 2447, 2451, 2474, 2482, + 2486, 2492, 2493, 2494, 2497, 2503, 2507, 2509, 2510, 2519, + 2524, 2527, 2530, 2534, 2544, 2546, 2548, 2554, 2555, 2561, + 2563, 2565, 2575, 2579, 2602, 2610, 2613, 2616, 2620, 2622, + 2625, 2631, 2635, 2641, 2649, 2654, 2662, 2672, 2674, 2677, + 2689, 2691, 2693, 2703, 2707, 2730, 2738, 2741, 2748, 2749, + 2750, 2753, 2759, 2761, 2763, 2765, 2768, 2784, 2786, 2790, + 2800, 2801, 2817, 2818, 2821, 2831, 2835, 2858, 2866, 2869, + 2876, 2877, 2878, 2879, 2880, 2881, 2887, 2891, 2893, 2902, + 2903, 2908, 2911, 2914, 2918, 2928, 2929, 2930, 2946, 2947, + 2949, 2958, 2962, 2969, 2972, 2974, 2979, 2984, 2990, 3006, + 3008, 3009, 3014, 3018, 3021, 3024, 3031, 3046, 3056, 3059, + 3065, 3066, 3073, 3077, 3086, 3090, 3114, 3125, 3133, 3134, + 3137, 3142, 3146, 3157, 3160, 3168, 3170, 3174, 3192, 3199, + 3202, 3205, 3214, 3218, 3242, 3253, 3260, 3261, 3262, 3263, + 3264, 3270, 3271, 3274, 3276, 3285, 3294, 3296, 3298, 3302, + 3313, 3330, 3333, 3342, 3346, 3389, 3390, 3393, 3398, 3402, + 3405, 3406, 3415, 3424, 3426, 3430, 3440, 3449, 3450, 3458, + 3461, 3482, 3507, 3517, 3520, 3530, 3535, 3538, 3542, 3544, + 3570, 3572, 3585, 3633, 3634, 3636, 3647, 3648, 3654, 3655, + 3663, 3664, 3674, 3713, 3716, 3719, 3722, 3725, 3732, 3737, + 3745, 3749, 3751, 3754, 3757, 3761, 3762, 3764, 3771, 3773, + 3776, 3782, 3784, 3792, 3804, 3840, 3841, 3844, 3859, 3860, + 3861, 3864, 3866, 3872, 3882, 3892, 3893, 3894, 3895, 3896, + 3897, 3898, 3899, 3900, 3901, 3902, 3904, 3913, 3953, 3967, + 3968, 3973, 3974, 3976, 3981, 3993, 4030, 4038, 4039, 4046, + 4048, 4053, 4057, 4096, 4139, 4141, 4145, 4146, 4152, 4153, + 4155, 4157, 4159, 4160, 4170, 4176, 4182, 4184, 4186, 4190, + 4193, 4194, 4197, 4199, 4206, 4209, 4213, 4226, 4227, 4229, + 4231, 4237, 4238, 4239, 4240, 4250, 4253, 4254, 4256, 4295, + 4301, 4304, 4347, 4348, 4349, 4682, 4688, 4696, 4698, 4704, + 4746, 4752, 4786, 4792, 4800, 4802, 4808, 4824, 4882, 4888, + 4957, 4960, 4969, 4992, 5008, 5024, 5120, 5121, 5741, 5743, + 5760, 5761, 5787, 5788, 5792, 5867, 5870, 5888, 5902, 5906, + 5920, 5938, 5941, 5952, 5970, 5984, 5998, 6002, 6016, 6068, + 6070, 6071, 6078, 6086, 6087, 6089, 6100, 6103, 6104, 6107, + 6108, 6109, 6112, 6128, 6144, 6150, 6151, 6155, 6158, 6160, + 6176, 6211, 6212, 6272, 6313, 6314, 6320, 6400, 6432, 6435, + 6439, 6441, 6448, 6450, 6451, 6457, 6464, 6468, 6470, 6480, + 6512, 6528, 6576, 6593, 6600, 6608, 6618, 6622, 6656, 6679, + 6681, 6686, 6688, 6741, 6742, 6743, 6744, 6752, 6753, 6754, + 6755, 6757, 6765, 6771, 6783, 6784, 6800, 6816, 6823, 6824, + 6912, 6916, 6917, 6964, 6965, 6966, 6971, 6972, 6973, 6978, + 6979, 6981, 6992, 7002, 7009, 7019, 7028, 7040, 7042, 7043, + 7073, 7074, 7078, 7080, 7082, 7083, 7084, 7086, 7088, 7098, + 7142, 7143, 7144, 7146, 7149, 7150, 7151, 7154, 7164, 7168, + 7204, 7212, 7220, 7222, 7227, 7232, 7245, 7248, 7258, 7288, + 7294, 7360, 7376, 7379, 7380, 7393, 7394, 7401, 7405, 7406, + 7410, 7412, 7413, 7424, 7468, 7531, 7544, 7545, 7579, 7616, + 7676, 7680, 7830, 7838, 7936, 7944, 7952, 7960, 7968, 7976, + 7984, 7992, 8000, 8008, 8016, 8025, 8027, 8029, 8031, 8033, + 8040, 8048, 8064, 8072, 8080, 8088, 8096, 8104, 8112, 8118, + 8120, 8124, 8125, 8126, 8127, 8130, 8134, 8136, 8140, 8141, + 8144, 8150, 8152, 8157, 8160, 8168, 8173, 8178, 8182, 8184, + 8188, 8189, 8192, 8203, 8208, 8214, 8216, 8217, 8218, 8219, + 8221, 8222, 8223, 8224, 8232, 8233, 8234, 8239, 8240, 8249, + 8250, 8251, 8255, 8257, 8260, 8261, 8262, 8263, 8274, 8275, + 8276, 8277, 8287, 8288, 8298, 8304, 8305, 8308, 8314, 8317, + 8318, 8319, 8320, 8330, 8333, 8334, 8336, 8352, 8400, 8413, + 8417, 8418, 8421, 8448, 8450, 8451, 8455, 8456, 8458, 8459, + 8462, 8464, 8467, 8468, 8469, 8470, 8472, 8473, 8478, 8484, + 8485, 8486, 8487, 8488, 8489, 8490, 8494, 8495, 8496, 8500, + 8501, 8505, 8506, 8508, 8510, 8512, 8517, 8519, 8522, 8523, + 8524, 8526, 8527, 8528, 8544, 8579, 8581, 8585, 8592, 8597, + 8602, 8604, 8608, 8609, 8611, 8612, 8614, 8615, 8622, 8623, + 8654, 8656, 8658, 8659, 8660, 8661, 8692, 8960, 8968, 8972, + 8992, 8994, 9001, 9002, 9003, 9084, 9085, 9115, 9140, 9180, + 9186, 9216, 9280, 9312, 9372, 9450, 9472, 9655, 9656, 9665, + 9666, 9720, 9728, 9839, 9840, 9985, 10088, 10089, 10090, 10091, + 10092, 10093, 10094, 10095, 10096, 10097, 10098, 10099, 10100, 10101, + 10102, 10132, 10176, 10181, 10182, 10183, 10214, 10215, 10216, 10217, + 10218, 10219, 10220, 10221, 10222, 10223, 10224, 10240, 10496, 10627, + 10628, 10629, 10630, 10631, 10632, 10633, 10634, 10635, 10636, 10637, + 10638, 10639, 10640, 10641, 10642, 10643, 10644, 10645, 10646, 10647, + 10648, 10649, 10712, 10713, 10714, 10715, 10716, 10748, 10749, 10750, + 11008, 11056, 11077, 11079, 11088, 11264, 11312, 11360, 11363, 11365, + 11367, 11374, 11377, 11378, 11380, 11381, 11383, 11388, 11390, 11393, + 11394, 11492, 11493, 11499, 11503, 11506, 11513, 11517, 11518, 11520, + 11559, 11565, 11568, 11631, 11632, 11647, 11648, 11680, 11688, 11696, + 11704, 11712, 11720, 11728, 11736, 11744, 11776, 11778, 11779, 11780, + 11781, 11782, 11785, 11786, 11787, 11788, 11789, 11790, 11799, 11800, + 11802, 11803, 11804, 11805, 11806, 11808, 11809, 11810, 11811, 11812, + 11813, 11814, 11815, 11816, 11817, 11818, 11823, 11824, 11834, 11904, + 11931, 12032, 12272, 12288, 12289, 12292, 12293, 12294, 12295, 12296, + 12297, 12298, 12299, 12300, 12301, 12302, 12303, 12304, 12305, 12306, + 12308, 12309, 12310, 12311, 12312, 12313, 12314, 12315, 12316, 12317, + 12318, 12320, 12321, 12330, 12334, 12336, 12337, 12342, 12344, 12347, + 12348, 12349, 12350, 12353, 12441, 12443, 12445, 12447, 12448, 12449, + 12539, 12540, 12543, 12549, 12593, 12688, 12690, 12694, 12704, 12736, + 12784, 12800, 12832, 12842, 12872, 12880, 12881, 12896, 12928, 12938, + 12977, 12992, 13056, 13312, 19893, 19904, 19968, 40908, 40960, 40981, + 40982, 42128, 42192, 42232, 42238, 42240, 42508, 42509, 42512, 42528, + 42538, 42560, 42606, 42607, 42608, 42611, 42612, 42622, 42623, 42624, + 42655, 42656, 42726, 42736, 42738, 42752, 42775, 42784, 42786, 42800, + 42802, 42864, 42865, 42873, 42878, 42888, 42889, 42891, 42896, 42912, + 43000, 43002, 43003, 43010, 43011, 43014, 43015, 43019, 43020, 43043, + 43045, 43047, 43048, 43056, 43062, 43064, 43065, 43072, 43124, 43136, + 43138, 43188, 43204, 43214, 43216, 43232, 43250, 43256, 43259, 43264, + 43274, 43302, 43310, 43312, 43335, 43346, 43359, 43360, 43392, 43395, + 43396, 43443, 43444, 43446, 43450, 43452, 43453, 43457, 43471, 43472, + 43486, 43520, 43561, 43567, 43569, 43571, 43573, 43584, 43587, 43588, + 43596, 43597, 43600, 43612, 43616, 43632, 43633, 43639, 43642, 43643, + 43648, 43696, 43697, 43698, 43701, 43703, 43705, 43710, 43712, 43713, + 43714, 43739, 43741, 43742, 43744, 43755, 43756, 43758, 43760, 43762, + 43763, 43765, 43766, 43777, 43785, 43793, 43808, 43816, 43968, 44003, + 44005, 44006, 44008, 44009, 44011, 44012, 44013, 44016, 44032, 55203, + 55216, 55243, 55296, 56191, 56319, 57343, 57344, 63743, 63744, 64112, + 64256, 64275, 64285, 64286, 64287, 64297, 64298, 64312, 64318, 64320, + 64323, 64326, 64434, 64467, 64830, 64831, 64848, 64914, 65008, 65020, + 65021, 65024, 65040, 65047, 65048, 65049, 65056, 65072, 65073, 65075, + 65077, 65078, 65079, 65080, 65081, 65082, 65083, 65084, 65085, 65086, + 65087, 65088, 65089, 65090, 65091, 65092, 65093, 65095, 65096, 65097, + 65101, 65104, 65108, 65112, 65113, 65114, 65115, 65116, 65117, 65118, + 65119, 65122, 65123, 65124, 65128, 65129, 65130, 65136, 65142, 65279, + 65281, 65284, 65285, 65288, 65289, 65290, 65291, 65292, 65293, 65294, + 65296, 65306, 65308, 65311, 65313, 65339, 65340, 65341, 65342, 65343, + 65344, 65345, 65371, 65372, 65373, 65374, 65375, 65376, 65377, 65378, + 65379, 65380, 65382, 65392, 65393, 65438, 65440, 65474, 65482, 65490, + 65498, 65504, 65506, 65507, 65508, 65509, 65512, 65513, 65517, 65529, + 65532, 0, 13, 40, 60, 63, 80, 128, 256, 263, + 311, 320, 373, 377, 394, 400, 464, 509, 640, 672, + 768, 800, 816, 833, 834, 842, 896, 927, 928, 968, + 976, 977, 1024, 1064, 1104, 1184, 2048, 2056, 2058, 2103, + 2108, 2111, 2135, 2136, 2304, 2326, 2335, 2336, 2367, 2432, + 2494, 2560, 2561, 2565, 2572, 2576, 2581, 2585, 2616, 2623, + 2624, 2640, 2656, 2685, 2687, 2816, 2873, 2880, 2904, 2912, + 2936, 3072, 3680, 4096, 4097, 4098, 4099, 4152, 4167, 4178, + 4198, 4224, 4226, 4227, 4272, 4275, 4279, 4281, 4283, 4285, + 4286, 4304, 4336, 4352, 4355, 4391, 4396, 4397, 4406, 4416, + 4480, 4482, 4483, 4531, 4534, 4543, 4545, 4549, 4560, 5760, + 5803, 5804, 5805, 5806, 5808, 5814, 5815, 5824, 8192, 9216, + 9328, 12288, 26624, 28416, 28496, 28497, 28559, 28563, 45056, 53248, + 53504, 53545, 53605, 53607, 53610, 53613, 53619, 53627, 53635, 53637, + 53644, 53674, 53678, 53760, 53826, 53829, 54016, 54112, 54272, 54298, + 54324, 54350, 54358, 54376, 54402, 54428, 54430, 54434, 54437, 54441, + 54446, 54454, 54459, 54461, 54469, 54480, 54506, 54532, 54535, 54541, + 54550, 54558, 54584, 54587, 54592, 54598, 54602, 54610, 54636, 54662, + 54688, 54714, 54740, 54766, 54792, 54818, 54844, 54870, 54896, 54922, + 54952, 54977, 54978, 55003, 55004, 55010, 55035, 55036, 55061, 55062, + 55068, 55093, 55094, 55119, 55120, 55126, 55151, 55152, 55177, 55178, + 55184, 55209, 55210, 55235, 55236, 55242, 55246, 60928, 60933, 60961, + 60964, 60967, 60969, 60980, 60985, 60987, 60994, 60999, 61001, 61003, + 61005, 61009, 61012, 61015, 61017, 61019, 61021, 61023, 61025, 61028, + 61031, 61036, 61044, 61049, 61054, 61056, 61067, 61089, 61093, 61099, + 61168, 61440, 61488, 61600, 61617, 61633, 61649, 61696, 61712, 61744, + 61808, 61926, 61968, 62016, 62032, 62208, 62256, 62263, 62336, 62368, + 62406, 62432, 62464, 62528, 62530, 62713, 62720, 62784, 62800, 62971, + 63045, 63104, 63232, 0, 42710, 42752, 46900, 46912, 47133, 63488, + 1, 32, 256, 0, 65533, + }; +static u16 aFts5UnicodeData[] = { + 1025, 61, 117, 55, 117, 54, 50, 53, 57, 53, + 49, 85, 333, 85, 121, 85, 841, 54, 53, 50, + 56, 48, 56, 837, 54, 57, 50, 57, 1057, 61, + 53, 151, 58, 53, 56, 58, 39, 52, 57, 34, + 58, 56, 58, 57, 79, 56, 37, 85, 56, 47, + 39, 51, 111, 53, 745, 57, 233, 773, 57, 261, + 1822, 37, 542, 37, 1534, 222, 69, 73, 37, 126, + 126, 73, 69, 137, 37, 73, 37, 105, 101, 73, + 37, 73, 37, 190, 158, 37, 126, 126, 73, 37, + 126, 94, 37, 39, 94, 69, 135, 41, 40, 37, + 41, 40, 37, 41, 40, 37, 542, 37, 606, 37, + 41, 40, 37, 126, 73, 37, 1886, 197, 73, 37, + 73, 69, 126, 105, 37, 286, 2181, 39, 869, 582, + 152, 390, 472, 166, 248, 38, 56, 38, 568, 3596, + 158, 38, 56, 94, 38, 101, 53, 88, 41, 53, + 105, 41, 73, 37, 553, 297, 1125, 94, 37, 105, + 101, 798, 133, 94, 57, 126, 94, 37, 1641, 1541, + 1118, 58, 172, 75, 1790, 478, 37, 2846, 1225, 38, + 213, 1253, 53, 49, 55, 1452, 49, 44, 53, 76, + 53, 76, 53, 44, 871, 103, 85, 162, 121, 85, + 55, 85, 90, 364, 53, 85, 1031, 38, 327, 684, + 333, 149, 71, 44, 3175, 53, 39, 236, 34, 58, + 204, 70, 76, 58, 140, 71, 333, 103, 90, 39, + 469, 34, 39, 44, 967, 876, 2855, 364, 39, 333, + 1063, 300, 70, 58, 117, 38, 711, 140, 38, 300, + 38, 108, 38, 172, 501, 807, 108, 53, 39, 359, + 876, 108, 42, 1735, 44, 42, 44, 39, 106, 268, + 138, 44, 74, 39, 236, 327, 76, 85, 333, 53, + 38, 199, 231, 44, 74, 263, 71, 711, 231, 39, + 135, 44, 39, 106, 140, 74, 74, 44, 39, 42, + 71, 103, 76, 333, 71, 87, 207, 58, 55, 76, + 42, 199, 71, 711, 231, 71, 71, 71, 44, 106, + 76, 76, 108, 44, 135, 39, 333, 76, 103, 44, + 76, 42, 295, 103, 711, 231, 71, 167, 44, 39, + 106, 172, 76, 42, 74, 44, 39, 71, 76, 333, + 53, 55, 44, 74, 263, 71, 711, 231, 71, 167, + 44, 39, 42, 44, 42, 140, 74, 74, 44, 44, + 42, 71, 103, 76, 333, 58, 39, 207, 44, 39, + 199, 103, 135, 71, 39, 71, 71, 103, 391, 74, + 44, 74, 106, 106, 44, 39, 42, 333, 111, 218, + 55, 58, 106, 263, 103, 743, 327, 167, 39, 108, + 138, 108, 140, 76, 71, 71, 76, 333, 239, 58, + 74, 263, 103, 743, 327, 167, 44, 39, 42, 44, + 170, 44, 74, 74, 76, 74, 39, 71, 76, 333, + 71, 74, 263, 103, 1319, 39, 106, 140, 106, 106, + 44, 39, 42, 71, 76, 333, 207, 58, 199, 74, + 583, 775, 295, 39, 231, 44, 106, 108, 44, 266, + 74, 53, 1543, 44, 71, 236, 55, 199, 38, 268, + 53, 333, 85, 71, 39, 71, 39, 39, 135, 231, + 103, 39, 39, 71, 135, 44, 71, 204, 76, 39, + 167, 38, 204, 333, 135, 39, 122, 501, 58, 53, + 122, 76, 218, 333, 335, 58, 44, 58, 44, 58, + 44, 54, 50, 54, 50, 74, 263, 1159, 460, 42, + 172, 53, 76, 167, 364, 1164, 282, 44, 218, 90, + 181, 154, 85, 1383, 74, 140, 42, 204, 42, 76, + 74, 76, 39, 333, 213, 199, 74, 76, 135, 108, + 39, 106, 71, 234, 103, 140, 423, 44, 74, 76, + 202, 44, 39, 42, 333, 106, 44, 90, 1225, 41, + 41, 1383, 53, 38, 10631, 135, 231, 39, 135, 1319, + 135, 1063, 135, 231, 39, 135, 487, 1831, 135, 2151, + 108, 309, 655, 519, 346, 2727, 49, 19847, 85, 551, + 61, 839, 54, 50, 2407, 117, 110, 423, 135, 108, + 583, 108, 85, 583, 76, 423, 103, 76, 1671, 76, + 42, 236, 266, 44, 74, 364, 117, 38, 117, 55, + 39, 44, 333, 335, 213, 49, 149, 108, 61, 333, + 1127, 38, 1671, 1319, 44, 39, 2247, 935, 108, 138, + 76, 106, 74, 44, 202, 108, 58, 85, 333, 967, + 167, 1415, 554, 231, 74, 333, 47, 1114, 743, 76, + 106, 85, 1703, 42, 44, 42, 236, 44, 42, 44, + 74, 268, 202, 332, 44, 333, 333, 245, 38, 213, + 140, 42, 1511, 44, 42, 172, 42, 44, 170, 44, + 74, 231, 333, 245, 346, 300, 314, 76, 42, 967, + 42, 140, 74, 76, 42, 44, 74, 71, 333, 1415, + 44, 42, 76, 106, 44, 42, 108, 74, 149, 1159, + 266, 268, 74, 76, 181, 333, 103, 333, 967, 198, + 85, 277, 108, 53, 428, 42, 236, 135, 44, 135, + 74, 44, 71, 1413, 2022, 421, 38, 1093, 1190, 1260, + 140, 4830, 261, 3166, 261, 265, 197, 201, 261, 265, + 261, 265, 197, 201, 261, 41, 41, 41, 94, 229, + 265, 453, 261, 264, 261, 264, 261, 264, 165, 69, + 137, 40, 56, 37, 120, 101, 69, 137, 40, 120, + 133, 69, 137, 120, 261, 169, 120, 101, 69, 137, + 40, 88, 381, 162, 209, 85, 52, 51, 54, 84, + 51, 54, 52, 277, 59, 60, 162, 61, 309, 52, + 51, 149, 80, 117, 57, 54, 50, 373, 57, 53, + 48, 341, 61, 162, 194, 47, 38, 207, 121, 54, + 50, 38, 335, 121, 54, 50, 422, 855, 428, 139, + 44, 107, 396, 90, 41, 154, 41, 90, 37, 105, + 69, 105, 37, 58, 41, 90, 57, 169, 218, 41, + 58, 41, 58, 41, 58, 137, 58, 37, 137, 37, + 135, 37, 90, 69, 73, 185, 94, 101, 58, 57, + 90, 37, 58, 527, 1134, 94, 142, 47, 185, 186, + 89, 154, 57, 90, 57, 90, 57, 250, 57, 1018, + 89, 90, 57, 58, 57, 1018, 8601, 282, 153, 666, + 89, 250, 54, 50, 2618, 57, 986, 825, 1306, 217, + 602, 1274, 378, 1935, 2522, 719, 5882, 57, 314, 57, + 1754, 281, 3578, 57, 4634, 3322, 54, 50, 54, 50, + 54, 50, 54, 50, 54, 50, 54, 50, 54, 50, + 975, 1434, 185, 54, 50, 1017, 54, 50, 54, 50, + 54, 50, 54, 50, 54, 50, 537, 8218, 4217, 54, + 50, 54, 50, 54, 50, 54, 50, 54, 50, 54, + 50, 54, 50, 54, 50, 54, 50, 54, 50, 54, + 50, 2041, 54, 50, 54, 50, 1049, 54, 50, 8281, + 1562, 697, 90, 217, 346, 1513, 1509, 126, 73, 69, + 254, 105, 37, 94, 37, 94, 165, 70, 105, 37, + 3166, 37, 218, 158, 108, 94, 149, 47, 85, 1221, + 37, 37, 1799, 38, 53, 44, 743, 231, 231, 231, + 231, 231, 231, 231, 231, 1036, 85, 52, 51, 52, + 51, 117, 52, 51, 53, 52, 51, 309, 49, 85, + 49, 53, 52, 51, 85, 52, 51, 54, 50, 54, + 50, 54, 50, 54, 50, 181, 38, 341, 81, 858, + 2874, 6874, 410, 61, 117, 58, 38, 39, 46, 54, + 50, 54, 50, 54, 50, 54, 50, 54, 50, 90, + 54, 50, 54, 50, 54, 50, 54, 50, 49, 54, + 82, 58, 302, 140, 74, 49, 166, 90, 110, 38, + 39, 53, 90, 2759, 76, 88, 70, 39, 49, 2887, + 53, 102, 39, 1319, 3015, 90, 143, 346, 871, 1178, + 519, 1018, 335, 986, 271, 58, 495, 1050, 335, 1274, + 495, 2042, 8218, 39, 39, 2074, 39, 39, 679, 38, + 36583, 1786, 1287, 198, 85, 8583, 38, 117, 519, 333, + 71, 1502, 39, 44, 107, 53, 332, 53, 38, 798, + 44, 2247, 334, 76, 213, 760, 294, 88, 478, 69, + 2014, 38, 261, 190, 350, 38, 88, 158, 158, 382, + 70, 37, 231, 44, 103, 44, 135, 44, 743, 74, + 76, 42, 154, 207, 90, 55, 58, 1671, 149, 74, + 1607, 522, 44, 85, 333, 588, 199, 117, 39, 333, + 903, 268, 85, 743, 364, 74, 53, 935, 108, 42, + 1511, 44, 74, 140, 74, 44, 138, 437, 38, 333, + 85, 1319, 204, 74, 76, 74, 76, 103, 44, 263, + 44, 42, 333, 149, 519, 38, 199, 122, 39, 42, + 1543, 44, 39, 108, 71, 76, 167, 76, 39, 44, + 39, 71, 38, 85, 359, 42, 76, 74, 85, 39, + 70, 42, 44, 199, 199, 199, 231, 231, 1127, 74, + 44, 74, 44, 74, 53, 42, 44, 333, 39, 39, + 743, 1575, 36, 68, 68, 36, 63, 63, 11719, 3399, + 229, 165, 39, 44, 327, 57, 423, 167, 39, 71, + 71, 3463, 536, 11623, 54, 50, 2055, 1735, 391, 55, + 58, 524, 245, 54, 50, 53, 236, 53, 81, 80, + 54, 50, 54, 50, 54, 50, 54, 50, 54, 50, + 54, 50, 54, 50, 54, 50, 85, 54, 50, 149, + 112, 117, 149, 49, 54, 50, 54, 50, 54, 50, + 117, 57, 49, 121, 53, 55, 85, 167, 4327, 34, + 117, 55, 117, 54, 50, 53, 57, 53, 49, 85, + 333, 85, 121, 85, 841, 54, 53, 50, 56, 48, + 56, 837, 54, 57, 50, 57, 54, 50, 53, 54, + 50, 85, 327, 38, 1447, 70, 999, 199, 199, 199, + 103, 87, 57, 56, 58, 87, 58, 153, 90, 98, + 90, 391, 839, 615, 71, 487, 455, 3943, 117, 1455, + 314, 1710, 143, 570, 47, 410, 1466, 44, 935, 1575, + 999, 143, 551, 46, 263, 46, 967, 53, 1159, 263, + 53, 174, 1289, 1285, 2503, 333, 199, 39, 1415, 71, + 39, 743, 53, 271, 711, 207, 53, 839, 53, 1799, + 71, 39, 108, 76, 140, 135, 103, 871, 108, 44, + 271, 309, 935, 79, 53, 1735, 245, 711, 271, 615, + 271, 2343, 1007, 42, 44, 42, 1703, 492, 245, 655, + 333, 76, 42, 1447, 106, 140, 74, 76, 85, 34, + 149, 807, 333, 108, 1159, 172, 42, 268, 333, 149, + 76, 42, 1543, 106, 300, 74, 135, 149, 333, 1383, + 44, 42, 44, 74, 204, 42, 44, 333, 28135, 3182, + 149, 34279, 18215, 2215, 39, 1482, 140, 422, 71, 7898, + 1274, 1946, 74, 108, 122, 202, 258, 268, 90, 236, + 986, 140, 1562, 2138, 108, 58, 2810, 591, 841, 837, + 841, 229, 581, 841, 837, 41, 73, 41, 73, 137, + 265, 133, 37, 229, 357, 841, 837, 73, 137, 265, + 233, 837, 73, 137, 169, 41, 233, 837, 841, 837, + 841, 837, 841, 837, 841, 837, 841, 837, 841, 901, + 809, 57, 805, 57, 197, 809, 57, 805, 57, 197, + 809, 57, 805, 57, 197, 809, 57, 805, 57, 197, + 809, 57, 805, 57, 197, 94, 1613, 135, 871, 71, + 39, 39, 327, 135, 39, 39, 39, 39, 39, 39, + 103, 71, 39, 39, 39, 39, 39, 39, 71, 39, + 135, 231, 135, 135, 39, 327, 551, 103, 167, 551, + 89, 1434, 3226, 506, 474, 506, 506, 367, 1018, 1946, + 1402, 954, 1402, 314, 90, 1082, 218, 2266, 666, 1210, + 186, 570, 2042, 58, 5850, 154, 2010, 154, 794, 2266, + 378, 2266, 3738, 39, 39, 39, 39, 39, 39, 17351, + 34, 3074, 7692, 63, 63, + }; + +static int sqlite3Fts5UnicodeCategory(int iCode) { + int iRes = -1; + int iHi; + int iLo; + int ret; + u16 iKey; + + if( iCode>=(1<<20) ){ + return 0; + } + iLo = aFts5UnicodeBlock[(iCode>>16)]; + iHi = aFts5UnicodeBlock[1+(iCode>>16)]; + iKey = (iCode & 0xFFFF); + while( iHi>iLo ){ + int iTest = (iHi + iLo) / 2; + assert( iTest>=iLo && iTest=aFts5UnicodeMap[iTest] ){ + iRes = iTest; + iLo = iTest+1; + }else{ + iHi = iTest; + } + } + + if( iRes<0 ) return 0; + if( iKey>=(aFts5UnicodeMap[iRes]+(aFts5UnicodeData[iRes]>>5)) ) return 0; + ret = aFts5UnicodeData[iRes] & 0x1F; + if( ret!=30 ) return ret; + return ((iKey - aFts5UnicodeMap[iRes]) & 0x01) ? 5 : 9; +} + +static void sqlite3Fts5UnicodeAscii(u8 *aArray, u8 *aAscii){ + int i = 0; + int iTbl = 0; + while( i<128 ){ + int bToken = aArray[ aFts5UnicodeData[iTbl] & 0x1F ]; + int n = (aFts5UnicodeData[iTbl] >> 5) + i; + for(; i<128 && iauth.nAuthPW = nPW; rc = sqlite3UserAuthCheckLogin(db, "main", &authLevel); db->auth.authLevel = authLevel; - sqlite3ExpirePreparedStatements(db); + sqlite3ExpirePreparedStatements(db, 0); if( rc ){ return rc; /* OOM error, I/O error, etc. */ } diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h b/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h index 4bf489af1..05d11a8a6 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h @@ -124,9 +124,9 @@ extern "C" { ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ -#define SQLITE_VERSION "3.24.0" -#define SQLITE_VERSION_NUMBER 3024000 -#define SQLITE_SOURCE_ID "2018-06-04 19:24:41 c7ee0833225bfd8c5ec2f9bf62b97c4e04d03bd9566366d5221ac8fb199a87ca" +#define SQLITE_VERSION "3.25.2" +#define SQLITE_VERSION_NUMBER 3025002 +#define SQLITE_SOURCE_ID "2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7" /* ** CAPI3REF: Run-Time Library Version Numbers @@ -473,6 +473,7 @@ SQLITE_API int sqlite3_exec( */ #define SQLITE_ERROR_MISSING_COLLSEQ (SQLITE_ERROR | (1<<8)) #define SQLITE_ERROR_RETRY (SQLITE_ERROR | (2<<8)) +#define SQLITE_ERROR_SNAPSHOT (SQLITE_ERROR | (3<<8)) #define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8)) #define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8)) #define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8)) @@ -512,6 +513,7 @@ SQLITE_API int sqlite3_exec( #define SQLITE_CANTOPEN_ISDIR (SQLITE_CANTOPEN | (2<<8)) #define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8)) #define SQLITE_CANTOPEN_CONVPATH (SQLITE_CANTOPEN | (4<<8)) +#define SQLITE_CANTOPEN_DIRTYWAL (SQLITE_CANTOPEN | (5<<8)) /* Not Used */ #define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8)) #define SQLITE_CORRUPT_SEQUENCE (SQLITE_CORRUPT | (2<<8)) #define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8)) @@ -887,7 +889,8 @@ struct sqlite3_io_methods { **
  • [[SQLITE_FCNTL_PERSIST_WAL]] ** ^The [SQLITE_FCNTL_PERSIST_WAL] opcode is used to set or query the ** persistent [WAL | Write Ahead Log] setting. By default, the auxiliary -** write ahead log and shared memory files used for transaction control +** write ahead log ([WAL file]) and shared memory +** files used for transaction control ** are automatically deleted when the latest connection to the database ** closes. Setting persistent WAL mode causes those files to persist after ** close. Persisting the files is useful when other processes that do not @@ -1073,6 +1076,26 @@ struct sqlite3_io_methods { ** a file lock using the xLock or xShmLock methods of the VFS to wait ** for up to M milliseconds before failing, where M is the single ** unsigned integer parameter. +** +**
  • [[SQLITE_FCNTL_DATA_VERSION]] +** The [SQLITE_FCNTL_DATA_VERSION] opcode is used to detect changes to +** a database file. The argument is a pointer to a 32-bit unsigned integer. +** The "data version" for the pager is written into the pointer. The +** "data version" changes whenever any change occurs to the corresponding +** database file, either through SQL statements on the same database +** connection or through transactions committed by separate database +** connections possibly in other processes. The [sqlite3_total_changes()] +** interface can be used to find if any database on the connection has changed, +** but that interface responds to changes on TEMP as well as MAIN and does +** not provide a mechanism to detect changes to MAIN only. Also, the +** [sqlite3_total_changes()] interface responds to internal changes only and +** omits changes made by other database connections. The +** [PRAGMA data_version] command provide a mechanism to detect changes to +** a single attached database that occur due to other database connections, +** but omits changes implemented by the database connection on which it is +** called. This file control is the only mechanism to detect changes that +** happen either internally or externally and that are associated with +** a particular attached database. ** */ #define SQLITE_FCNTL_LOCKSTATE 1 @@ -1108,6 +1131,7 @@ struct sqlite3_io_methods { #define SQLITE_FCNTL_COMMIT_ATOMIC_WRITE 32 #define SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE 33 #define SQLITE_FCNTL_LOCK_TIMEOUT 34 +#define SQLITE_FCNTL_DATA_VERSION 35 /* deprecated names */ #define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE @@ -2122,6 +2146,12 @@ struct sqlite3_mem_methods { ** with no schema and no content. The following process works even for ** a badly corrupted database file: **
      +**
    1. If the database connection is newly opened, make sure it has read the +** database schema by preparing then discarding some query against the +** database, or calling sqlite3_table_column_metadata(), ignoring any +** errors. This step is only necessary if the application desires to keep +** the database in WAL mode after the reset if it was in WAL mode before +** the reset. **
    2. sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 1, 0); **
    3. [sqlite3_exec](db, "[VACUUM]", 0, 0, 0); **
    4. sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 0, 0); @@ -2270,12 +2300,17 @@ SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3*,sqlite3_int64); ** program, the value returned reflects the number of rows modified by the ** previous INSERT, UPDATE or DELETE statement within the same trigger. ** -** See also the [sqlite3_total_changes()] interface, the -** [count_changes pragma], and the [changes() SQL function]. -** ** If a separate thread makes changes on the same database connection ** while [sqlite3_changes()] is running then the value returned ** is unpredictable and not meaningful. +** +** See also: +**
        +**
      • the [sqlite3_total_changes()] interface +**
      • the [count_changes pragma] +**
      • the [changes() SQL function] +**
      • the [data_version pragma] +**
      */ SQLITE_API int sqlite3_changes(sqlite3*); @@ -2293,13 +2328,26 @@ SQLITE_API int sqlite3_changes(sqlite3*); ** count, but those made as part of REPLACE constraint resolution are ** not. ^Changes to a view that are intercepted by INSTEAD OF triggers ** are not counted. -** -** See also the [sqlite3_changes()] interface, the -** [count_changes pragma], and the [total_changes() SQL function]. ** +** This the [sqlite3_total_changes(D)] interface only reports the number +** of rows that changed due to SQL statement run against database +** connection D. Any changes by other database connections are ignored. +** To detect changes against a database file from other database +** connections use the [PRAGMA data_version] command or the +** [SQLITE_FCNTL_DATA_VERSION] [file control]. +** ** If a separate thread makes changes on the same database connection ** while [sqlite3_total_changes()] is running then the value ** returned is unpredictable and not meaningful. +** +** See also: +**
        +**
      • the [sqlite3_changes()] interface +**
      • the [count_changes pragma] +**
      • the [changes() SQL function] +**
      • the [data_version pragma] +**
      • the [SQLITE_FCNTL_DATA_VERSION] [file control] +**
      */ SQLITE_API int sqlite3_total_changes(sqlite3*); @@ -3355,13 +3403,24 @@ SQLITE_API sqlite3_int64 sqlite3_uri_int64(const char*, const char*, sqlite3_int ** [database connection] D failed, then the sqlite3_errcode(D) interface ** returns the numeric [result code] or [extended result code] for that ** API call. -** If the most recent API call was successful, -** then the return value from sqlite3_errcode() is undefined. ** ^The sqlite3_extended_errcode() ** interface is the same except that it always returns the ** [extended result code] even when extended result codes are ** disabled. ** +** The values returned by sqlite3_errcode() and/or +** sqlite3_extended_errcode() might change with each API call. +** Except, there are some interfaces that are guaranteed to never +** change the value of the error code. The error-code preserving +** interfaces are: +** +**
        +**
      • sqlite3_errcode() +**
      • sqlite3_extended_errcode() +**
      • sqlite3_errmsg() +**
      • sqlite3_errmsg16() +**
      +** ** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language ** text that describes the error, as either UTF-8 or UTF-16 respectively. ** ^(Memory to hold the error message string is managed internally. @@ -4515,11 +4574,25 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt); ** from [sqlite3_column_blob()], [sqlite3_column_text()], etc. into ** [sqlite3_free()]. ** -** ^(If a memory allocation error occurs during the evaluation of any -** of these routines, a default value is returned. The default value -** is either the integer 0, the floating point number 0.0, or a NULL -** pointer. Subsequent calls to [sqlite3_errcode()] will return -** [SQLITE_NOMEM].)^ +** As long as the input parameters are correct, these routines will only +** fail if an out-of-memory error occurs during a format conversion. +** Only the following subset of interfaces are subject to out-of-memory +** errors: +** +**
        +**
      • sqlite3_column_blob() +**
      • sqlite3_column_text() +**
      • sqlite3_column_text16() +**
      • sqlite3_column_bytes() +**
      • sqlite3_column_bytes16() +**
      +** +** If an out-of-memory error occurs, then the return value from these +** routines is the same as if the column had contained an SQL NULL value. +** Valid SQL NULL returns can be distinguished from out-of-memory errors +** by invoking the [sqlite3_errcode()] immediately after the suspect +** return value is obtained and before any +** other SQLite interface is called on the same [database connection]. */ SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol); SQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol); @@ -4596,11 +4669,13 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); ** ** ^These functions (collectively known as "function creation routines") ** are used to add SQL functions or aggregates or to redefine the behavior -** of existing SQL functions or aggregates. The only differences between -** these routines are the text encoding expected for -** the second parameter (the name of the function being created) -** and the presence or absence of a destructor callback for -** the application data pointer. +** of existing SQL functions or aggregates. The only differences between +** the three "sqlite3_create_function*" routines are the text encoding +** expected for the second parameter (the name of the function being +** created) and the presence or absence of a destructor callback for +** the application data pointer. Function sqlite3_create_window_function() +** is similar, but allows the user to supply the extra callback functions +** needed by [aggregate window functions]. ** ** ^The first parameter is the [database connection] to which the SQL ** function is to be added. ^If an application uses more than one database @@ -4646,7 +4721,8 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); ** ^(The fifth parameter is an arbitrary pointer. The implementation of the ** function can gain access to this pointer using [sqlite3_user_data()].)^ ** -** ^The sixth, seventh and eighth parameters, xFunc, xStep and xFinal, are +** ^The sixth, seventh and eighth parameters passed to the three +** "sqlite3_create_function*" functions, xFunc, xStep and xFinal, are ** pointers to C-language functions that implement the SQL function or ** aggregate. ^A scalar SQL function requires an implementation of the xFunc ** callback only; NULL pointers must be passed as the xStep and xFinal @@ -4655,15 +4731,24 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); ** SQL function or aggregate, pass NULL pointers for all three function ** callbacks. ** -** ^(If the ninth parameter to sqlite3_create_function_v2() is not NULL, -** then it is destructor for the application data pointer. -** The destructor is invoked when the function is deleted, either by being -** overloaded or when the database connection closes.)^ -** ^The destructor is also invoked if the call to -** sqlite3_create_function_v2() fails. -** ^When the destructor callback of the tenth parameter is invoked, it -** is passed a single argument which is a copy of the application data -** pointer which was the fifth parameter to sqlite3_create_function_v2(). +** ^The sixth, seventh, eighth and ninth parameters (xStep, xFinal, xValue +** and xInverse) passed to sqlite3_create_window_function are pointers to +** C-language callbacks that implement the new function. xStep and xFinal +** must both be non-NULL. xValue and xInverse may either both be NULL, in +** which case a regular aggregate function is created, or must both be +** non-NULL, in which case the new function may be used as either an aggregate +** or aggregate window function. More details regarding the implementation +** of aggregate window functions are +** [user-defined window functions|available here]. +** +** ^(If the final parameter to sqlite3_create_function_v2() or +** sqlite3_create_window_function() is not NULL, then it is destructor for +** the application data pointer. The destructor is invoked when the function +** is deleted, either by being overloaded or when the database connection +** closes.)^ ^The destructor is also invoked if the call to +** sqlite3_create_function_v2() fails. ^When the destructor callback is +** invoked, it is passed a single argument which is a copy of the application +** data pointer which was the fifth parameter to sqlite3_create_function_v2(). ** ** ^It is permitted to register multiple implementations of the same ** functions with the same name but with either differing numbers of @@ -4716,6 +4801,18 @@ SQLITE_API int sqlite3_create_function_v2( void (*xFinal)(sqlite3_context*), void(*xDestroy)(void*) ); +SQLITE_API int sqlite3_create_window_function( + sqlite3 *db, + const char *zFunctionName, + int nArg, + int eTextRep, + void *pApp, + void (*xStep)(sqlite3_context*,int,sqlite3_value**), + void (*xFinal)(sqlite3_context*), + void (*xValue)(sqlite3_context*), + void (*xInverse)(sqlite3_context*,int,sqlite3_value**), + void(*xDestroy)(void*) +); /* ** CAPI3REF: Text Encodings @@ -4858,6 +4955,28 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6 ** ** These routines must be called from the same thread as ** the SQL function that supplied the [sqlite3_value*] parameters. +** +** As long as the input parameter is correct, these routines can only +** fail if an out-of-memory error occurs during a format conversion. +** Only the following subset of interfaces are subject to out-of-memory +** errors: +** +**
        +**
      • sqlite3_value_blob() +**
      • sqlite3_value_text() +**
      • sqlite3_value_text16() +**
      • sqlite3_value_text16le() +**
      • sqlite3_value_text16be() +**
      • sqlite3_value_bytes() +**
      • sqlite3_value_bytes16() +**
      +** +** If an out-of-memory error occurs, then the return value from these +** routines is the same as if the column had contained an SQL NULL value. +** Valid SQL NULL returns can be distinguished from out-of-memory errors +** by invoking the [sqlite3_errcode()] immediately after the suspect +** return value is obtained and before any +** other SQLite interface is called on the same [database connection]. */ SQLITE_API const void *sqlite3_value_blob(sqlite3_value*); SQLITE_API double sqlite3_value_double(sqlite3_value*); @@ -6324,6 +6443,7 @@ struct sqlite3_index_info { #define SQLITE_INDEX_CONSTRAINT_ISNOTNULL 70 #define SQLITE_INDEX_CONSTRAINT_ISNULL 71 #define SQLITE_INDEX_CONSTRAINT_IS 72 +#define SQLITE_INDEX_CONSTRAINT_FUNCTION 150 /* ** CAPI3REF: Register A Virtual Table Implementation @@ -7000,6 +7120,7 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*); /* ** CAPI3REF: Low-Level Control Of Database Files ** METHOD: sqlite3 +** KEYWORDS: {file control} ** ** ^The [sqlite3_file_control()] interface makes a direct call to the ** xFileControl method for the [sqlite3_io_methods] object associated @@ -7014,11 +7135,18 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*); ** the xFileControl method. ^The return value of the xFileControl ** method becomes the return value of this routine. ** +** A few opcodes for [sqlite3_file_control()] are handled directly +** by the SQLite core and never invoke the +** sqlite3_io_methods.xFileControl method. ** ^The [SQLITE_FCNTL_FILE_POINTER] value for the op parameter causes ** a pointer to the underlying [sqlite3_file] object to be written into -** the space pointed to by the 4th parameter. ^The [SQLITE_FCNTL_FILE_POINTER] -** case is a short-circuit path which does not actually invoke the -** underlying sqlite3_io_methods.xFileControl method. +** the space pointed to by the 4th parameter. The +** [SQLITE_FCNTL_JOURNAL_POINTER] works similarly except that it returns +** the [sqlite3_file] object associated with the journal file instead of +** the main database. The [SQLITE_FCNTL_VFS_POINTER] opcode returns +** a pointer to the underlying [sqlite3_vfs] object for the file. +** The [SQLITE_FCNTL_DATA_VERSION] returns the data version counter +** from the pager. ** ** ^If the second parameter (zDbName) does not match the name of any ** open database file, then SQLITE_ERROR is returned. ^This error @@ -8837,7 +8965,6 @@ SQLITE_API int sqlite3_system_errno(sqlite3*); /* ** CAPI3REF: Database Snapshot ** KEYWORDS: {snapshot} {sqlite3_snapshot} -** EXPERIMENTAL ** ** An instance of the snapshot object records the state of a [WAL mode] ** database for some specific point in history. @@ -8854,11 +8981,6 @@ SQLITE_API int sqlite3_system_errno(sqlite3*); ** version of the database file so that it is possible to later open a new read ** transaction that sees that historical version of the database rather than ** the most recent version. -** -** The constructor for this object is [sqlite3_snapshot_get()]. The -** [sqlite3_snapshot_open()] method causes a fresh read transaction to refer -** to an historical snapshot (if possible). The destructor for -** sqlite3_snapshot objects is [sqlite3_snapshot_free()]. */ typedef struct sqlite3_snapshot { unsigned char hidden[48]; @@ -8866,7 +8988,7 @@ typedef struct sqlite3_snapshot { /* ** CAPI3REF: Record A Database Snapshot -** EXPERIMENTAL +** CONSTRUCTOR: sqlite3_snapshot ** ** ^The [sqlite3_snapshot_get(D,S,P)] interface attempts to make a ** new [sqlite3_snapshot] object that records the current state of @@ -8882,7 +9004,7 @@ typedef struct sqlite3_snapshot { ** in this case. ** **
        -**
      • The database handle must be in [autocommit mode]. +**
      • The database handle must not be in [autocommit mode]. ** **
      • Schema S of [database connection] D must be a [WAL mode] database. ** @@ -8905,7 +9027,7 @@ typedef struct sqlite3_snapshot { ** to avoid a memory leak. ** ** The [sqlite3_snapshot_get()] interface is only available when the -** SQLITE_ENABLE_SNAPSHOT compile-time option is used. +** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used. */ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get( sqlite3 *db, @@ -8915,24 +9037,35 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get( /* ** CAPI3REF: Start a read transaction on an historical snapshot -** EXPERIMENTAL +** METHOD: sqlite3_snapshot ** -** ^The [sqlite3_snapshot_open(D,S,P)] interface starts a -** read transaction for schema S of -** [database connection] D such that the read transaction -** refers to historical [snapshot] P, rather than the most -** recent change to the database. -** ^The [sqlite3_snapshot_open()] interface returns SQLITE_OK on success -** or an appropriate [error code] if it fails. +** ^The [sqlite3_snapshot_open(D,S,P)] interface either starts a new read +** transaction or upgrades an existing one for schema S of +** [database connection] D such that the read transaction refers to +** historical [snapshot] P, rather than the most recent change to the +** database. ^The [sqlite3_snapshot_open()] interface returns SQLITE_OK +** on success or an appropriate [error code] if it fails. +** +** ^In order to succeed, the database connection must not be in +** [autocommit mode] when [sqlite3_snapshot_open(D,S,P)] is called. If there +** is already a read transaction open on schema S, then the database handle +** must have no active statements (SELECT statements that have been passed +** to sqlite3_step() but not sqlite3_reset() or sqlite3_finalize()). +** SQLITE_ERROR is returned if either of these conditions is violated, or +** if schema S does not exist, or if the snapshot object is invalid. +** +** ^A call to sqlite3_snapshot_open() will fail to open if the specified +** snapshot has been overwritten by a [checkpoint]. In this case +** SQLITE_ERROR_SNAPSHOT is returned. +** +** If there is already a read transaction open when this function is +** invoked, then the same read transaction remains open (on the same +** database snapshot) if SQLITE_ERROR, SQLITE_BUSY or SQLITE_ERROR_SNAPSHOT +** is returned. If another error code - for example SQLITE_PROTOCOL or an +** SQLITE_IOERR error code - is returned, then the final state of the +** read transaction is undefined. If SQLITE_OK is returned, then the +** read transaction is now open on database snapshot P. ** -** ^In order to succeed, a call to [sqlite3_snapshot_open(D,S,P)] must be -** the first operation following the [BEGIN] that takes the schema S -** out of [autocommit mode]. -** ^In other words, schema S must not currently be in -** a transaction for [sqlite3_snapshot_open(D,S,P)] to work, but the -** database connection D must be out of [autocommit mode]. -** ^A [snapshot] will fail to open if it has been overwritten by a -** [checkpoint]. ** ^(A call to [sqlite3_snapshot_open(D,S,P)] will fail if the ** database connection D does not know that the database file for ** schema S is in [WAL mode]. A database connection might not know @@ -8943,7 +9076,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get( ** database connection in order to make it ready to use snapshots.) ** ** The [sqlite3_snapshot_open()] interface is only available when the -** SQLITE_ENABLE_SNAPSHOT compile-time option is used. +** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used. */ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open( sqlite3 *db, @@ -8953,20 +9086,20 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open( /* ** CAPI3REF: Destroy a snapshot -** EXPERIMENTAL +** DESTRUCTOR: sqlite3_snapshot ** ** ^The [sqlite3_snapshot_free(P)] interface destroys [sqlite3_snapshot] P. ** The application must eventually free every [sqlite3_snapshot] object ** using this routine to avoid a memory leak. ** ** The [sqlite3_snapshot_free()] interface is only available when the -** SQLITE_ENABLE_SNAPSHOT compile-time option is used. +** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used. */ SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*); /* ** CAPI3REF: Compare the ages of two snapshot handles. -** EXPERIMENTAL +** METHOD: sqlite3_snapshot ** ** The sqlite3_snapshot_cmp(P1, P2) interface is used to compare the ages ** of two valid snapshot handles. @@ -8985,6 +9118,9 @@ SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*); ** Otherwise, this API returns a negative value if P1 refers to an older ** snapshot than P2, zero if the two handles refer to the same database ** snapshot, and a positive value if P1 is a newer snapshot than P2. +** +** This interface is only available if SQLite is compiled with the +** [SQLITE_ENABLE_SNAPSHOT] option. */ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp( sqlite3_snapshot *p1, @@ -8993,23 +9129,26 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp( /* ** CAPI3REF: Recover snapshots from a wal file -** EXPERIMENTAL +** METHOD: sqlite3_snapshot ** -** If all connections disconnect from a database file but do not perform -** a checkpoint, the existing wal file is opened along with the database -** file the next time the database is opened. At this point it is only -** possible to successfully call sqlite3_snapshot_open() to open the most -** recent snapshot of the database (the one at the head of the wal file), -** even though the wal file may contain other valid snapshots for which -** clients have sqlite3_snapshot handles. +** If a [WAL file] remains on disk after all database connections close +** (either through the use of the [SQLITE_FCNTL_PERSIST_WAL] [file control] +** or because the last process to have the database opened exited without +** calling [sqlite3_close()]) and a new connection is subsequently opened +** on that database and [WAL file], the [sqlite3_snapshot_open()] interface +** will only be able to open the last transaction added to the WAL file +** even though the WAL file contains other valid transactions. ** -** This function attempts to scan the wal file associated with database zDb +** This function attempts to scan the WAL file associated with database zDb ** of database handle db and make all valid snapshots available to ** sqlite3_snapshot_open(). It is an error if there is already a read -** transaction open on the database, or if the database is not a wal mode +** transaction open on the database, or if the database is not a WAL mode ** database. ** ** SQLITE_OK is returned if successful, or an SQLite error code otherwise. +** +** This interface is only available if SQLite is compiled with the +** [SQLITE_ENABLE_SNAPSHOT] option. */ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const char *zDb); @@ -9120,7 +9259,7 @@ SQLITE_API int sqlite3_deserialize( ** in the P argument is held in memory obtained from [sqlite3_malloc64()] ** and that SQLite should take ownership of this memory and automatically ** free it when it has finished using it. Without this flag, the caller -** is resposible for freeing any dynamically allocated memory. +** is responsible for freeing any dynamically allocated memory. ** ** The SQLITE_DESERIALIZE_RESIZEABLE flag means that SQLite is allowed to ** grow the size of the database using calls to [sqlite3_realloc64()]. This @@ -11298,7 +11437,7 @@ struct Fts5ExtensionApi { ** This way, even if the tokenizer does not provide synonyms ** when tokenizing query text (it should not - to do would be ** inefficient), it doesn't matter if the user queries for -** 'first + place' or '1st + place', as there are entires in the +** 'first + place' or '1st + place', as there are entries in the ** FTS index corresponding to both forms of the first token. **
    ** @@ -11326,7 +11465,7 @@ struct Fts5ExtensionApi { ** extra data to the FTS index or require FTS5 to query for multiple terms, ** so it is efficient in terms of disk space and query speed. However, it ** does not support prefix queries very well. If, as suggested above, the -** token "first" is subsituted for "1st" by the tokenizer, then the query: +** token "first" is substituted for "1st" by the tokenizer, then the query: ** ** ** ... MATCH '1s*' diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3.go b/vendor/github.com/mattn/go-sqlite3/sqlite3.go index d8fe4b07d..942b0b5bc 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3.go @@ -78,8 +78,38 @@ _sqlite3_exec(sqlite3* db, const char* pcmd, long long* rowid, long long* change return rv; } +#ifdef SQLITE_ENABLE_UNLOCK_NOTIFY +extern int _sqlite3_step_blocking(sqlite3_stmt *stmt); +extern int _sqlite3_step_row_blocking(sqlite3_stmt* stmt, long long* rowid, long long* changes); +extern int _sqlite3_prepare_v2_blocking(sqlite3 *db, const char *zSql, int nBytes, sqlite3_stmt **ppStmt, const char **pzTail); + static int -_sqlite3_step(sqlite3_stmt* stmt, long long* rowid, long long* changes) +_sqlite3_step_internal(sqlite3_stmt *stmt) +{ + return _sqlite3_step_blocking(stmt); +} + +static int +_sqlite3_step_row_internal(sqlite3_stmt* stmt, long long* rowid, long long* changes) +{ + return _sqlite3_step_row_blocking(stmt, rowid, changes); +} + +static int +_sqlite3_prepare_v2_internal(sqlite3 *db, const char *zSql, int nBytes, sqlite3_stmt **ppStmt, const char **pzTail) +{ + return _sqlite3_prepare_v2_blocking(db, zSql, nBytes, ppStmt, pzTail); +} + +#else +static int +_sqlite3_step_internal(sqlite3_stmt *stmt) +{ + return sqlite3_step(stmt); +} + +static int +_sqlite3_step_row_internal(sqlite3_stmt* stmt, long long* rowid, long long* changes) { int rv = sqlite3_step(stmt); sqlite3* db = sqlite3_db_handle(stmt); @@ -88,6 +118,13 @@ _sqlite3_step(sqlite3_stmt* stmt, long long* rowid, long long* changes) return rv; } +static int +_sqlite3_prepare_v2_internal(sqlite3 *db, const char *zSql, int nBytes, sqlite3_stmt **ppStmt, const char **pzTail) +{ + return sqlite3_prepare_v2(db, zSql, nBytes, ppStmt, pzTail); +} +#endif + void _sqlite3_result_text(sqlite3_context* ctx, const char* s) { sqlite3_result_text(ctx, s, -1, &free); } @@ -119,6 +156,8 @@ int commitHookTrampoline(void*); void rollbackHookTrampoline(void*); void updateHookTrampoline(void*, int, char*, char*, sqlite3_int64); +int authorizerTrampoline(void*, int, char*, char*, char*, char*); + #ifdef SQLITE_LIMIT_WORKER_THREADS # define _SQLITE_HAS_LIMIT # define SQLITE_LIMIT_LENGTH 0 @@ -200,18 +239,57 @@ func Version() (libVersion string, libVersionNumber int, sourceID string) { } const ( + // used by authorizer and pre_update_hook SQLITE_DELETE = C.SQLITE_DELETE SQLITE_INSERT = C.SQLITE_INSERT SQLITE_UPDATE = C.SQLITE_UPDATE + + // used by authorzier - as return value + SQLITE_OK = C.SQLITE_OK + SQLITE_IGNORE = C.SQLITE_IGNORE + SQLITE_DENY = C.SQLITE_DENY + + // different actions query tries to do - passed as argument to authorizer + SQLITE_CREATE_INDEX = C.SQLITE_CREATE_INDEX + SQLITE_CREATE_TABLE = C.SQLITE_CREATE_TABLE + SQLITE_CREATE_TEMP_INDEX = C.SQLITE_CREATE_TEMP_INDEX + SQLITE_CREATE_TEMP_TABLE = C.SQLITE_CREATE_TEMP_TABLE + SQLITE_CREATE_TEMP_TRIGGER = C.SQLITE_CREATE_TEMP_TRIGGER + SQLITE_CREATE_TEMP_VIEW = C.SQLITE_CREATE_TEMP_VIEW + SQLITE_CREATE_TRIGGER = C.SQLITE_CREATE_TRIGGER + SQLITE_CREATE_VIEW = C.SQLITE_CREATE_VIEW + SQLITE_CREATE_VTABLE = C.SQLITE_CREATE_VTABLE + SQLITE_DROP_INDEX = C.SQLITE_DROP_INDEX + SQLITE_DROP_TABLE = C.SQLITE_DROP_TABLE + SQLITE_DROP_TEMP_INDEX = C.SQLITE_DROP_TEMP_INDEX + SQLITE_DROP_TEMP_TABLE = C.SQLITE_DROP_TEMP_TABLE + SQLITE_DROP_TEMP_TRIGGER = C.SQLITE_DROP_TEMP_TRIGGER + SQLITE_DROP_TEMP_VIEW = C.SQLITE_DROP_TEMP_VIEW + SQLITE_DROP_TRIGGER = C.SQLITE_DROP_TRIGGER + SQLITE_DROP_VIEW = C.SQLITE_DROP_VIEW + SQLITE_DROP_VTABLE = C.SQLITE_DROP_VTABLE + SQLITE_PRAGMA = C.SQLITE_PRAGMA + SQLITE_READ = C.SQLITE_READ + SQLITE_SELECT = C.SQLITE_SELECT + SQLITE_TRANSACTION = C.SQLITE_TRANSACTION + SQLITE_ATTACH = C.SQLITE_ATTACH + SQLITE_DETACH = C.SQLITE_DETACH + SQLITE_ALTER_TABLE = C.SQLITE_ALTER_TABLE + SQLITE_REINDEX = C.SQLITE_REINDEX + SQLITE_ANALYZE = C.SQLITE_ANALYZE + SQLITE_FUNCTION = C.SQLITE_FUNCTION + SQLITE_SAVEPOINT = C.SQLITE_SAVEPOINT + SQLITE_COPY = C.SQLITE_COPY + /*SQLITE_RECURSIVE = C.SQLITE_RECURSIVE*/ ) -// SQLiteDriver implement sql.Driver. +// SQLiteDriver implements driver.Driver. type SQLiteDriver struct { Extensions []string ConnectHook func(*SQLiteConn) error } -// SQLiteConn implement sql.Conn. +// SQLiteConn implements driver.Conn. type SQLiteConn struct { mu sync.Mutex db *C.sqlite3 @@ -221,12 +299,12 @@ type SQLiteConn struct { aggregators []*aggInfo } -// SQLiteTx implemen sql.Tx. +// SQLiteTx implements driver.Tx. type SQLiteTx struct { c *SQLiteConn } -// SQLiteStmt implement sql.Stmt. +// SQLiteStmt implements driver.Stmt. type SQLiteStmt struct { mu sync.Mutex c *SQLiteConn @@ -236,13 +314,13 @@ type SQLiteStmt struct { cls bool } -// SQLiteResult implement sql.Result. +// SQLiteResult implements sql.Result. type SQLiteResult struct { id int64 changes int64 } -// SQLiteRows implement sql.Rows. +// SQLiteRows implements driver.Rows. type SQLiteRows struct { s *SQLiteStmt nc int @@ -440,6 +518,20 @@ func (c *SQLiteConn) RegisterUpdateHook(callback func(int, string, string, int64 } } +// RegisterAuthorizer sets the authorizer for connection. +// +// The parameters to the callback are the operation (one of the constants +// SQLITE_INSERT, SQLITE_DELETE, or SQLITE_UPDATE), and 1 to 3 arguments, +// depending on operation. More details see: +// https://www.sqlite.org/c3ref/c_alter_table.html +func (c *SQLiteConn) RegisterAuthorizer(callback func(int, string, string, string) int) { + if callback == nil { + C.sqlite3_set_authorizer(c.db, nil, nil) + } else { + C.sqlite3_set_authorizer(c.db, (*[0]byte)(C.authorizerTrampoline), unsafe.Pointer(newHandle(c, callback))) + } +} + // RegisterFunc makes a Go function available as a SQLite function. // // The Go function can have arguments of the following types: any @@ -1582,7 +1674,7 @@ func (c *SQLiteConn) prepare(ctx context.Context, query string) (driver.Stmt, er defer C.free(unsafe.Pointer(pquery)) var s *C.sqlite3_stmt var tail *C.char - rv := C.sqlite3_prepare_v2(c.db, pquery, -1, &s, &tail) + rv := C._sqlite3_prepare_v2_internal(c.db, pquery, -1, &s, &tail) if rv != C.SQLITE_OK { return nil, c.lastError() } @@ -1816,7 +1908,7 @@ func (s *SQLiteStmt) exec(ctx context.Context, args []namedValue) (driver.Result } var rowid, changes C.longlong - rv := C._sqlite3_step(s.s, &rowid, &changes) + rv := C._sqlite3_step_row_internal(s.s, &rowid, &changes) if rv != C.SQLITE_ROW && rv != C.SQLITE_OK && rv != C.SQLITE_DONE { err := s.c.lastError() C.sqlite3_reset(s.s) @@ -1883,12 +1975,12 @@ func (rc *SQLiteRows) DeclTypes() []string { // Next move cursor to next. func (rc *SQLiteRows) Next(dest []driver.Value) error { + rc.s.mu.Lock() + defer rc.s.mu.Unlock() if rc.s.closed { return io.EOF } - rc.s.mu.Lock() - defer rc.s.mu.Unlock() - rv := C.sqlite3_step(rc.s.s) + rv := C._sqlite3_step_internal(rc.s.s) if rv == C.SQLITE_DONE { return io.EOF } diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go index 3774a97cf..d397c8cfe 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go @@ -83,13 +83,13 @@ func CryptEncoderSSHA256(salt string) func(pass []byte, hash interface{}) []byte } } -// CryptEncoderSHA384 encodes a password with SHA256 +// CryptEncoderSHA384 encodes a password with SHA384 func CryptEncoderSHA384(pass []byte, hash interface{}) []byte { h := sha512.Sum384(pass) return h[:] } -// CryptEncoderSSHA384 encodes a password with SHA256 +// CryptEncoderSSHA384 encodes a password with SHA384 // with the configured salt func CryptEncoderSSHA384(salt string) func(pass []byte, hash interface{}) []byte { return func(pass []byte, hash interface{}) []byte { @@ -100,13 +100,13 @@ func CryptEncoderSSHA384(salt string) func(pass []byte, hash interface{}) []byte } } -// CryptEncoderSHA512 encodes a password with SHA256 +// CryptEncoderSHA512 encodes a password with SHA512 func CryptEncoderSHA512(pass []byte, hash interface{}) []byte { h := sha512.Sum512(pass) return h[:] } -// CryptEncoderSSHA512 encodes a password with SHA256 +// CryptEncoderSSHA512 encodes a password with SHA512 // with the configured salt func CryptEncoderSSHA512(salt string) func(pass []byte, hash interface{}) []byte { return func(pass []byte, hash interface{}) []byte { diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c new file mode 100644 index 000000000..1af1726b4 --- /dev/null +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c @@ -0,0 +1,85 @@ +// Copyright (C) 2018 Yasuhiro Matsumoto . +// +// Use of this source code is governed by an MIT-style +// license that can be found in the LICENSE file. + +#ifdef SQLITE_ENABLE_UNLOCK_NOTIFY +#include +#include + +extern int unlock_notify_wait(sqlite3 *db); + +int +_sqlite3_step_blocking(sqlite3_stmt *stmt) +{ + int rv; + sqlite3* db; + + db = sqlite3_db_handle(stmt); + for (;;) { + rv = sqlite3_step(stmt); + if (rv != SQLITE_LOCKED) { + break; + } + if (sqlite3_extended_errcode(db) != SQLITE_LOCKED_SHAREDCACHE) { + break; + } + rv = unlock_notify_wait(db); + if (rv != SQLITE_OK) { + break; + } + sqlite3_reset(stmt); + } + + return rv; +} + +int +_sqlite3_step_row_blocking(sqlite3_stmt* stmt, long long* rowid, long long* changes) +{ + int rv; + sqlite3* db; + + db = sqlite3_db_handle(stmt); + for (;;) { + rv = sqlite3_step(stmt); + if (rv!=SQLITE_LOCKED) { + break; + } + if (sqlite3_extended_errcode(db) != SQLITE_LOCKED_SHAREDCACHE) { + break; + } + rv = unlock_notify_wait(db); + if (rv != SQLITE_OK) { + break; + } + sqlite3_reset(stmt); + } + + *rowid = (long long) sqlite3_last_insert_rowid(db); + *changes = (long long) sqlite3_changes(db); + return rv; +} + +int +_sqlite3_prepare_v2_blocking(sqlite3 *db, const char *zSql, int nBytes, sqlite3_stmt **ppStmt, const char **pzTail) +{ + int rv; + + for (;;) { + rv = sqlite3_prepare_v2(db, zSql, nBytes, ppStmt, pzTail); + if (rv!=SQLITE_LOCKED) { + break; + } + if (sqlite3_extended_errcode(db) != SQLITE_LOCKED_SHAREDCACHE) { + break; + } + rv = unlock_notify_wait(db); + if (rv != SQLITE_OK) { + break; + } + } + + return rv; +} +#endif diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go new file mode 100644 index 000000000..5dde027d0 --- /dev/null +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go @@ -0,0 +1,93 @@ +// Copyright (C) 2018 Yasuhiro Matsumoto . +// +// Use of this source code is governed by an MIT-style +// license that can be found in the LICENSE file. + +// +build cgo +// +build sqlite_unlock_notify + +package sqlite3 + +/* +#cgo CFLAGS: -DSQLITE_ENABLE_UNLOCK_NOTIFY + +#include +#include + +extern void unlock_notify_callback(void *arg, int argc); +*/ +import "C" +import ( + "fmt" + "math" + "sync" + "unsafe" +) + +type unlock_notify_table struct { + sync.Mutex + seqnum uint + table map[uint]chan struct{} +} + +var unt unlock_notify_table = unlock_notify_table{table: make(map[uint]chan struct{})} + +func (t *unlock_notify_table) add(c chan struct{}) uint { + t.Lock() + defer t.Unlock() + h := t.seqnum + t.table[h] = c + t.seqnum++ + return h +} + +func (t *unlock_notify_table) remove(h uint) { + t.Lock() + defer t.Unlock() + delete(t.table, h) +} + +func (t *unlock_notify_table) get(h uint) chan struct{} { + t.Lock() + defer t.Unlock() + c, ok := t.table[h] + if !ok { + panic(fmt.Sprintf("Non-existent key for unlcok-notify channel: %d", h)) + } + return c +} + +//export unlock_notify_callback +func unlock_notify_callback(argv unsafe.Pointer, argc C.int) { + for i := 0; i < int(argc); i++ { + parg := ((*(*[(math.MaxInt32 - 1) / unsafe.Sizeof((*C.uint)(nil))]*[1]uint)(argv))[i]) + arg := *parg + h := arg[0] + c := unt.get(h) + c <- struct{}{} + } +} + +//export unlock_notify_wait +func unlock_notify_wait(db *C.sqlite3) C.int { + // It has to be a bufferred channel to not block in sqlite_unlock_notify + // as sqlite_unlock_notify could invoke the callback before it returns. + c := make(chan struct{}, 1) + defer close(c) + + h := unt.add(c) + defer unt.remove(h) + + pargv := C.malloc(C.sizeof_uint) + defer C.free(pargv) + + argv := (*[1]uint)(pargv) + argv[0] = h + if rv := C.sqlite3_unlock_notify(db, (*[0]byte)(C.unlock_notify_callback), unsafe.Pointer(pargv)); rv != C.SQLITE_OK { + return rv + } + + <-c + + return C.SQLITE_OK +} diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_other.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_other.go index 086ed4393..71778fc49 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_other.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_other.go @@ -10,5 +10,8 @@ package sqlite3 /* #cgo CFLAGS: -I. #cgo linux LDFLAGS: -ldl +#cgo linux,ppc LDFLAGS: -lpthread +#cgo linux,ppc64 LDFLAGS: -lpthread +#cgo linux,ppc64le LDFLAGS: -lpthread */ import "C" diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3ext.h b/vendor/github.com/mattn/go-sqlite3/sqlite3ext.h index 913e72deb..50e6866ac 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3ext.h +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3ext.h @@ -311,6 +311,12 @@ struct sqlite3_api_routines { int (*str_errcode)(sqlite3_str*); int (*str_length)(sqlite3_str*); char *(*str_value)(sqlite3_str*); + int (*create_window_function)(sqlite3*,const char*,int,int,void*, + void (*xStep)(sqlite3_context*,int,sqlite3_value**), + void (*xFinal)(sqlite3_context*), + void (*xValue)(sqlite3_context*), + void (*xInv)(sqlite3_context*,int,sqlite3_value**), + void(*xDestroy)(void*)); }; /* @@ -596,6 +602,8 @@ typedef int (*sqlite3_loadext_entry)( #define sqlite3_str_errcode sqlite3_api->str_errcode #define sqlite3_str_length sqlite3_api->str_length #define sqlite3_str_value sqlite3_api->str_value +/* Version 3.25.0 and later */ +#define sqlite3_create_window_function sqlite3_api->create_window_function #endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */ #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) diff --git a/vendor/github.com/sirupsen/logrus/.travis.yml b/vendor/github.com/sirupsen/logrus/.travis.yml index a8f154515..848938a6d 100644 --- a/vendor/github.com/sirupsen/logrus/.travis.yml +++ b/vendor/github.com/sirupsen/logrus/.travis.yml @@ -1,52 +1,25 @@ language: go go_import_path: github.com/sirupsen/logrus +git: + depth: 1 env: - - GOMAXPROCS=4 GORACE=halt_on_error=1 + - GO111MODULE=on + - GO111MODULE=off +go: [ 1.11.x, 1.12.x ] +os: [ linux, osx ] matrix: - include: - - go: 1.10.x - install: - - go get github.com/stretchr/testify/assert - - go get golang.org/x/crypto/ssh/terminal - - go get golang.org/x/sys/unix - - go get golang.org/x/sys/windows - script: - - go test -race -v ./... - - go: 1.11.x - env: GO111MODULE=on - install: - - go mod download - script: - - go test -race -v ./... - - go: 1.11.x + exclude: + - go: 1.12.x env: GO111MODULE=off - install: - - go get github.com/stretchr/testify/assert - - go get golang.org/x/crypto/ssh/terminal - - go get golang.org/x/sys/unix - - go get golang.org/x/sys/windows - script: - - go test -race -v ./... - - go: 1.10.x - install: - - go get github.com/stretchr/testify/assert - - go get golang.org/x/crypto/ssh/terminal - - go get golang.org/x/sys/unix - - go get golang.org/x/sys/windows - script: - - go test -race -v -tags appengine ./... - go: 1.11.x - env: GO111MODULE=on - install: - - go mod download - script: - - go test -race -v -tags appengine ./... - - go: 1.11.x - env: GO111MODULE=off - install: - - go get github.com/stretchr/testify/assert - - go get golang.org/x/crypto/ssh/terminal - - go get golang.org/x/sys/unix - - go get golang.org/x/sys/windows - script: - - go test -race -v -tags appengine ./... + os: osx +install: + - ./travis/install.sh + - if [[ "$GO111MODULE" == "on" ]]; then go mod download; fi + - if [[ "$GO111MODULE" == "off" ]]; then go get github.com/stretchr/testify/assert golang.org/x/sys/unix github.com/konsorten/go-windows-terminal-sequences; fi +script: + - ./travis/cross_build.sh + - export GOMAXPROCS=4 + - export GORACE=halt_on_error=1 + - go test -race -v ./... + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then go test -race -v -tags appengine ./... ; fi diff --git a/vendor/github.com/sirupsen/logrus/CHANGELOG.md b/vendor/github.com/sirupsen/logrus/CHANGELOG.md index cb85d9f9f..51a7ab0ca 100644 --- a/vendor/github.com/sirupsen/logrus/CHANGELOG.md +++ b/vendor/github.com/sirupsen/logrus/CHANGELOG.md @@ -1,3 +1,38 @@ +# 1.4.2 + * Fixes build break for plan9, nacl, solaris +# 1.4.1 +This new release introduces: + * Enhance TextFormatter to not print caller information when they are empty (#944) + * Remove dependency on golang.org/x/crypto (#932, #943) + +Fixes: + * Fix Entry.WithContext method to return a copy of the initial entry (#941) + +# 1.4.0 +This new release introduces: + * Add `DeferExitHandler`, similar to `RegisterExitHandler` but prepending the handler to the list of handlers (semantically like `defer`) (#848). + * Add `CallerPrettyfier` to `JSONFormatter` and `TextFormatter (#909, #911) + * Add `Entry.WithContext()` and `Entry.Context`, to set a context on entries to be used e.g. in hooks (#919). + +Fixes: + * Fix wrong method calls `Logger.Print` and `Logger.Warningln` (#893). + * Update `Entry.Logf` to not do string formatting unless the log level is enabled (#903) + * Fix infinite recursion on unknown `Level.String()` (#907) + * Fix race condition in `getCaller` (#916). + + +# 1.3.0 +This new release introduces: + * Log, Logf, Logln functions for Logger and Entry that take a Level + +Fixes: + * Building prometheus node_exporter on AIX (#840) + * Race condition in TextFormatter (#468) + * Travis CI import path (#868) + * Remove coloured output on Windows (#862) + * Pointer to func as field in JSONFormatter (#870) + * Properly marshal Levels (#873) + # 1.2.0 This new release introduces: * A new method `SetReportCaller` in the `Logger` to enable the file, line and calling function from which the trace has been issued diff --git a/vendor/github.com/sirupsen/logrus/README.md b/vendor/github.com/sirupsen/logrus/README.md index 398731055..a4796eb07 100644 --- a/vendor/github.com/sirupsen/logrus/README.md +++ b/vendor/github.com/sirupsen/logrus/README.md @@ -365,6 +365,7 @@ Third party logging formatters: * [`logstash`](https://github.com/bshuster-repo/logrus-logstash-hook). Logs fields as [Logstash](http://logstash.net) Events. * [`prefixed`](https://github.com/x-cray/logrus-prefixed-formatter). Displays log entry source along with alternative layout. * [`zalgo`](https://github.com/aybabtme/logzalgo). Invoking the P͉̫o̳̼̊w̖͈̰͎e̬͔̭͂r͚̼̹̲ ̫͓͉̳͈ō̠͕͖̚f̝͍̠ ͕̲̞͖͑Z̖̫̤̫ͪa͉̬͈̗l͖͎g̳̥o̰̥̅!̣͔̲̻͊̄ ̙̘̦̹̦. +* [`nested-logrus-formatter`](https://github.com/antonfisher/nested-logrus-formatter). Converts logrus fields to a nested structure. You can define your formatter by implementing the `Formatter` interface, requiring a `Format` method. `Format` takes an `*Entry`. `entry.Data` is a diff --git a/vendor/github.com/sirupsen/logrus/alt_exit.go b/vendor/github.com/sirupsen/logrus/alt_exit.go index 8af90637a..8fd189e1c 100644 --- a/vendor/github.com/sirupsen/logrus/alt_exit.go +++ b/vendor/github.com/sirupsen/logrus/alt_exit.go @@ -51,9 +51,9 @@ func Exit(code int) { os.Exit(code) } -// RegisterExitHandler adds a Logrus Exit handler, call logrus.Exit to invoke -// all handlers. The handlers will also be invoked when any Fatal log entry is -// made. +// RegisterExitHandler appends a Logrus Exit handler to the list of handlers, +// call logrus.Exit to invoke all handlers. The handlers will also be invoked when +// any Fatal log entry is made. // // This method is useful when a caller wishes to use logrus to log a fatal // message but also needs to gracefully shutdown. An example usecase could be @@ -62,3 +62,15 @@ func Exit(code int) { func RegisterExitHandler(handler func()) { handlers = append(handlers, handler) } + +// DeferExitHandler prepends a Logrus Exit handler to the list of handlers, +// call logrus.Exit to invoke all handlers. The handlers will also be invoked when +// any Fatal log entry is made. +// +// This method is useful when a caller wishes to use logrus to log a fatal +// message but also needs to gracefully shutdown. An example usecase could be +// closing database connections, or sending a alert that the application is +// closing. +func DeferExitHandler(handler func()) { + handlers = append([]func(){handler}, handlers...) +} diff --git a/vendor/github.com/sirupsen/logrus/entry.go b/vendor/github.com/sirupsen/logrus/entry.go index df6d188de..63e25583c 100644 --- a/vendor/github.com/sirupsen/logrus/entry.go +++ b/vendor/github.com/sirupsen/logrus/entry.go @@ -2,6 +2,7 @@ package logrus import ( "bytes" + "context" "fmt" "os" "reflect" @@ -69,6 +70,9 @@ type Entry struct { // When formatter is called in entry.log(), a Buffer may be set to entry Buffer *bytes.Buffer + // Contains the context set by the user. Useful for hook processing etc. + Context context.Context + // err may contain a field formatting error err string } @@ -97,6 +101,11 @@ func (entry *Entry) WithError(err error) *Entry { return entry.WithField(ErrorKey, err) } +// Add a context to the Entry. +func (entry *Entry) WithContext(ctx context.Context) *Entry { + return &Entry{Logger: entry.Logger, Data: entry.Data, Time: entry.Time, err: entry.err, Context: ctx} +} + // Add a single field to the Entry. func (entry *Entry) WithField(key string, value interface{}) *Entry { return entry.WithFields(Fields{key: value}) @@ -130,12 +139,12 @@ func (entry *Entry) WithFields(fields Fields) *Entry { data[k] = v } } - return &Entry{Logger: entry.Logger, Data: data, Time: entry.Time, err: fieldErr} + return &Entry{Logger: entry.Logger, Data: data, Time: entry.Time, err: fieldErr, Context: entry.Context} } // Overrides the time of the Entry. func (entry *Entry) WithTime(t time.Time) *Entry { - return &Entry{Logger: entry.Logger, Data: entry.Data, Time: t, err: entry.err} + return &Entry{Logger: entry.Logger, Data: entry.Data, Time: t, err: entry.err, Context: entry.Context} } // getPackageName reduces a fully qualified function name to the package name @@ -156,20 +165,23 @@ func getPackageName(f string) string { // getCaller retrieves the name of the first non-logrus calling function func getCaller() *runtime.Frame { + + // cache this package's fully-qualified name + callerInitOnce.Do(func() { + pcs := make([]uintptr, 2) + _ = runtime.Callers(0, pcs) + logrusPackage = getPackageName(runtime.FuncForPC(pcs[1]).Name()) + + // now that we have the cache, we can skip a minimum count of known-logrus functions + // XXX this is dubious, the number of frames may vary + minimumCallerDepth = knownLogrusFrames + }) + // Restrict the lookback frames to avoid runaway lookups pcs := make([]uintptr, maximumCallerDepth) depth := runtime.Callers(minimumCallerDepth, pcs) frames := runtime.CallersFrames(pcs[:depth]) - // cache this package's fully-qualified name - callerInitOnce.Do(func() { - logrusPackage = getPackageName(runtime.FuncForPC(pcs[0]).Name()) - - // now that we have the cache, we can skip a minimum count of known-logrus functions - // XXX this is dubious, the number of frames may vary store an entry in a logger interface - minimumCallerDepth = knownLogrusFrames - }) - for f, again := frames.Next(); again; f, again = frames.Next() { pkg := getPackageName(f.Function) @@ -298,7 +310,9 @@ func (entry *Entry) Panic(args ...interface{}) { // Entry Printf family functions func (entry *Entry) Logf(level Level, format string, args ...interface{}) { - entry.Log(level, fmt.Sprintf(format, args...)) + if entry.Logger.IsLevelEnabled(level) { + entry.Log(level, fmt.Sprintf(format, args...)) + } } func (entry *Entry) Tracef(format string, args ...interface{}) { diff --git a/vendor/github.com/sirupsen/logrus/exported.go b/vendor/github.com/sirupsen/logrus/exported.go index 7342613c3..62fc2f219 100644 --- a/vendor/github.com/sirupsen/logrus/exported.go +++ b/vendor/github.com/sirupsen/logrus/exported.go @@ -1,6 +1,7 @@ package logrus import ( + "context" "io" "time" ) @@ -55,6 +56,11 @@ func WithError(err error) *Entry { return std.WithField(ErrorKey, err) } +// WithContext creates an entry from the standard logger and adds a context to it. +func WithContext(ctx context.Context) *Entry { + return std.WithContext(ctx) +} + // WithField creates an entry from the standard logger and adds a field to // it. If you want multiple fields, use `WithFields`. // diff --git a/vendor/github.com/sirupsen/logrus/go.mod b/vendor/github.com/sirupsen/logrus/go.mod index 94574cc63..12fdf9898 100644 --- a/vendor/github.com/sirupsen/logrus/go.mod +++ b/vendor/github.com/sirupsen/logrus/go.mod @@ -6,6 +6,5 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/stretchr/objx v0.1.1 // indirect github.com/stretchr/testify v1.2.2 - golang.org/x/crypto v0.0.0-20180904163835-0709b304e793 - golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33 + golang.org/x/sys v0.0.0-20190422165155-953cdadca894 ) diff --git a/vendor/github.com/sirupsen/logrus/go.sum b/vendor/github.com/sirupsen/logrus/go.sum index 133d34ae1..596c318b9 100644 --- a/vendor/github.com/sirupsen/logrus/go.sum +++ b/vendor/github.com/sirupsen/logrus/go.sum @@ -2,6 +2,7 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe h1:CHRGQ8V7OlCYtwaKPJi3iA7J+YdNKdo8j7nG5IgDhjs= github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -9,7 +10,7 @@ github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793 h1:u+LnwYTOOW7Ukr/fppxEb1Nwz0AtPflrblfvUudpo+I= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33 h1:I6FyU15t786LL7oL/hn43zqTuEGr4PN7F4XJ1p4E3Y8= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894 h1:Cz4ceDQGXuKRnVBDTS23GTn/pU5OE2C0WrNTOYK1Uuc= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/vendor/github.com/sirupsen/logrus/json_formatter.go b/vendor/github.com/sirupsen/logrus/json_formatter.go index 260575359..098a21a06 100644 --- a/vendor/github.com/sirupsen/logrus/json_formatter.go +++ b/vendor/github.com/sirupsen/logrus/json_formatter.go @@ -4,6 +4,7 @@ import ( "bytes" "encoding/json" "fmt" + "runtime" ) type fieldKey string @@ -42,6 +43,12 @@ type JSONFormatter struct { // } FieldMap FieldMap + // CallerPrettyfier can be set by the user to modify the content + // of the function and file keys in the json data when ReportCaller is + // activated. If any of the returned value is the empty string the + // corresponding key will be removed from json fields. + CallerPrettyfier func(*runtime.Frame) (function string, file string) + // PrettyPrint will indent all json logs PrettyPrint bool } @@ -82,8 +89,17 @@ func (f *JSONFormatter) Format(entry *Entry) ([]byte, error) { data[f.FieldMap.resolve(FieldKeyMsg)] = entry.Message data[f.FieldMap.resolve(FieldKeyLevel)] = entry.Level.String() if entry.HasCaller() { - data[f.FieldMap.resolve(FieldKeyFunc)] = entry.Caller.Function - data[f.FieldMap.resolve(FieldKeyFile)] = fmt.Sprintf("%s:%d", entry.Caller.File, entry.Caller.Line) + funcVal := entry.Caller.Function + fileVal := fmt.Sprintf("%s:%d", entry.Caller.File, entry.Caller.Line) + if f.CallerPrettyfier != nil { + funcVal, fileVal = f.CallerPrettyfier(entry.Caller) + } + if funcVal != "" { + data[f.FieldMap.resolve(FieldKeyFunc)] = funcVal + } + if fileVal != "" { + data[f.FieldMap.resolve(FieldKeyFile)] = fileVal + } } var b *bytes.Buffer @@ -98,7 +114,7 @@ func (f *JSONFormatter) Format(entry *Entry) ([]byte, error) { encoder.SetIndent("", " ") } if err := encoder.Encode(data); err != nil { - return nil, fmt.Errorf("Failed to marshal fields to JSON, %v", err) + return nil, fmt.Errorf("failed to marshal fields to JSON, %v", err) } return b.Bytes(), nil diff --git a/vendor/github.com/sirupsen/logrus/logger.go b/vendor/github.com/sirupsen/logrus/logger.go index 9bf64e22a..c0c0b1e55 100644 --- a/vendor/github.com/sirupsen/logrus/logger.go +++ b/vendor/github.com/sirupsen/logrus/logger.go @@ -1,6 +1,7 @@ package logrus import ( + "context" "io" "os" "sync" @@ -124,6 +125,13 @@ func (logger *Logger) WithError(err error) *Entry { return entry.WithError(err) } +// Add a context to the log entry. +func (logger *Logger) WithContext(ctx context.Context) *Entry { + entry := logger.newEntry() + defer logger.releaseEntry(entry) + return entry.WithContext(ctx) +} + // Overrides the time of the log entry. func (logger *Logger) WithTime(t time.Time) *Entry { entry := logger.newEntry() @@ -200,7 +208,7 @@ func (logger *Logger) Info(args ...interface{}) { func (logger *Logger) Print(args ...interface{}) { entry := logger.newEntry() - entry.Info(args...) + entry.Print(args...) logger.releaseEntry(entry) } @@ -256,7 +264,7 @@ func (logger *Logger) Warnln(args ...interface{}) { } func (logger *Logger) Warningln(args ...interface{}) { - logger.Warn(args...) + logger.Warnln(args...) } func (logger *Logger) Errorln(args ...interface{}) { diff --git a/vendor/github.com/sirupsen/logrus/logrus.go b/vendor/github.com/sirupsen/logrus/logrus.go index c1ca88990..8644761f7 100644 --- a/vendor/github.com/sirupsen/logrus/logrus.go +++ b/vendor/github.com/sirupsen/logrus/logrus.go @@ -74,7 +74,7 @@ func (level Level) MarshalText() ([]byte, error) { return []byte("panic"), nil } - return nil, fmt.Errorf("not a valid lorus level %q", level) + return nil, fmt.Errorf("not a valid logrus level %d", level) } // A constant exposing all logging levels diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_aix.go b/vendor/github.com/sirupsen/logrus/terminal_check_aix.go deleted file mode 100644 index 04fdb7ba3..000000000 --- a/vendor/github.com/sirupsen/logrus/terminal_check_aix.go +++ /dev/null @@ -1,9 +0,0 @@ -// +build !appengine,!js,!windows,aix - -package logrus - -import "io" - -func checkIfTerminal(w io.Writer) bool { - return false -} diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_bsd.go b/vendor/github.com/sirupsen/logrus/terminal_check_bsd.go new file mode 100644 index 000000000..3c4f43f91 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/terminal_check_bsd.go @@ -0,0 +1,13 @@ +// +build darwin dragonfly freebsd netbsd openbsd + +package logrus + +import "golang.org/x/sys/unix" + +const ioctlReadTermios = unix.TIOCGETA + +func isTerminal(fd int) bool { + _, err := unix.IoctlGetTermios(fd, ioctlReadTermios) + return err == nil +} + diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_js.go b/vendor/github.com/sirupsen/logrus/terminal_check_no_terminal.go similarity index 79% rename from vendor/github.com/sirupsen/logrus/terminal_check_js.go rename to vendor/github.com/sirupsen/logrus/terminal_check_no_terminal.go index 0c209750a..97af92c68 100644 --- a/vendor/github.com/sirupsen/logrus/terminal_check_js.go +++ b/vendor/github.com/sirupsen/logrus/terminal_check_no_terminal.go @@ -1,4 +1,4 @@ -// +build js +// +build js nacl plan9 package logrus diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go b/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go index d46556509..3293fb3ca 100644 --- a/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go +++ b/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go @@ -1,18 +1,16 @@ -// +build !appengine,!js,!windows,!aix +// +build !appengine,!js,!windows,!nacl,!plan9 package logrus import ( "io" "os" - - "golang.org/x/crypto/ssh/terminal" ) func checkIfTerminal(w io.Writer) bool { switch v := w.(type) { case *os.File: - return terminal.IsTerminal(int(v.Fd())) + return isTerminal(int(v.Fd())) default: return false } diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_solaris.go b/vendor/github.com/sirupsen/logrus/terminal_check_solaris.go new file mode 100644 index 000000000..f6710b3bd --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/terminal_check_solaris.go @@ -0,0 +1,11 @@ +package logrus + +import ( + "golang.org/x/sys/unix" +) + +// IsTerminal returns true if the given file descriptor is a terminal. +func isTerminal(fd int) bool { + _, err := unix.IoctlGetTermio(fd, unix.TCGETA) + return err == nil +} diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_unix.go b/vendor/github.com/sirupsen/logrus/terminal_check_unix.go new file mode 100644 index 000000000..355dc966f --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/terminal_check_unix.go @@ -0,0 +1,13 @@ +// +build linux aix + +package logrus + +import "golang.org/x/sys/unix" + +const ioctlReadTermios = unix.TCGETS + +func isTerminal(fd int) bool { + _, err := unix.IoctlGetTermios(fd, ioctlReadTermios) + return err == nil +} + diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_windows.go b/vendor/github.com/sirupsen/logrus/terminal_check_windows.go index 3b9d2864c..572889db2 100644 --- a/vendor/github.com/sirupsen/logrus/terminal_check_windows.go +++ b/vendor/github.com/sirupsen/logrus/terminal_check_windows.go @@ -6,15 +6,29 @@ import ( "io" "os" "syscall" + + sequences "github.com/konsorten/go-windows-terminal-sequences" ) +func initTerminal(w io.Writer) { + switch v := w.(type) { + case *os.File: + sequences.EnableVirtualTerminalProcessing(syscall.Handle(v.Fd()), true) + } +} + func checkIfTerminal(w io.Writer) bool { + var ret bool switch v := w.(type) { case *os.File: var mode uint32 err := syscall.GetConsoleMode(syscall.Handle(v.Fd()), &mode) - return err == nil + ret = (err == nil) default: - return false + ret = false } + if ret { + initTerminal(w) + } + return ret } diff --git a/vendor/github.com/sirupsen/logrus/terminal_notwindows.go b/vendor/github.com/sirupsen/logrus/terminal_notwindows.go deleted file mode 100644 index 3dbd23720..000000000 --- a/vendor/github.com/sirupsen/logrus/terminal_notwindows.go +++ /dev/null @@ -1,8 +0,0 @@ -// +build !windows - -package logrus - -import "io" - -func initTerminal(w io.Writer) { -} diff --git a/vendor/github.com/sirupsen/logrus/terminal_windows.go b/vendor/github.com/sirupsen/logrus/terminal_windows.go deleted file mode 100644 index b4ef5286c..000000000 --- a/vendor/github.com/sirupsen/logrus/terminal_windows.go +++ /dev/null @@ -1,18 +0,0 @@ -// +build !appengine,!js,windows - -package logrus - -import ( - "io" - "os" - "syscall" - - sequences "github.com/konsorten/go-windows-terminal-sequences" -) - -func initTerminal(w io.Writer) { - switch v := w.(type) { - case *os.File: - sequences.EnableVirtualTerminalProcessing(syscall.Handle(v.Fd()), true) - } -} diff --git a/vendor/github.com/sirupsen/logrus/text_formatter.go b/vendor/github.com/sirupsen/logrus/text_formatter.go index fb21649c9..e01587c43 100644 --- a/vendor/github.com/sirupsen/logrus/text_formatter.go +++ b/vendor/github.com/sirupsen/logrus/text_formatter.go @@ -12,18 +12,13 @@ import ( ) const ( - nocolor = 0 - red = 31 - green = 32 - yellow = 33 - blue = 36 - gray = 37 + red = 31 + yellow = 33 + blue = 36 + gray = 37 ) -var ( - baseTimestamp time.Time - emptyFieldMap FieldMap -) +var baseTimestamp time.Time func init() { baseTimestamp = time.Now() @@ -77,16 +72,18 @@ type TextFormatter struct { // FieldKeyMsg: "@message"}} FieldMap FieldMap + // CallerPrettyfier can be set by the user to modify the content + // of the function and file keys in the data when ReportCaller is + // activated. If any of the returned value is the empty string the + // corresponding key will be removed from fields. + CallerPrettyfier func(*runtime.Frame) (function string, file string) + terminalInitOnce sync.Once } func (f *TextFormatter) init(entry *Entry) { if entry.Logger != nil { f.isTerminal = checkIfTerminal(entry.Logger.Out) - - if f.isTerminal { - initTerminal(entry.Logger.Out) - } } } @@ -118,6 +115,8 @@ func (f *TextFormatter) Format(entry *Entry) ([]byte, error) { keys = append(keys, k) } + var funcVal, fileVal string + fixedKeys := make([]string, 0, 4+len(data)) if !f.DisableTimestamp { fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyTime)) @@ -130,8 +129,19 @@ func (f *TextFormatter) Format(entry *Entry) ([]byte, error) { fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyLogrusError)) } if entry.HasCaller() { - fixedKeys = append(fixedKeys, - f.FieldMap.resolve(FieldKeyFunc), f.FieldMap.resolve(FieldKeyFile)) + if f.CallerPrettyfier != nil { + funcVal, fileVal = f.CallerPrettyfier(entry.Caller) + } else { + funcVal = entry.Caller.Function + fileVal = fmt.Sprintf("%s:%d", entry.Caller.File, entry.Caller.Line) + } + + if funcVal != "" { + fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyFunc)) + } + if fileVal != "" { + fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyFile)) + } } if !f.DisableSorting { @@ -166,6 +176,7 @@ func (f *TextFormatter) Format(entry *Entry) ([]byte, error) { if f.isColored() { f.printColored(b, entry, keys, data, timestampFormat) } else { + for _, key := range fixedKeys { var value interface{} switch { @@ -178,9 +189,9 @@ func (f *TextFormatter) Format(entry *Entry) ([]byte, error) { case key == f.FieldMap.resolve(FieldKeyLogrusError): value = entry.err case key == f.FieldMap.resolve(FieldKeyFunc) && entry.HasCaller(): - value = entry.Caller.Function + value = funcVal case key == f.FieldMap.resolve(FieldKeyFile) && entry.HasCaller(): - value = fmt.Sprintf("%s:%d", entry.Caller.File, entry.Caller.Line) + value = fileVal default: value = data[key] } @@ -215,10 +226,21 @@ func (f *TextFormatter) printColored(b *bytes.Buffer, entry *Entry, keys []strin entry.Message = strings.TrimSuffix(entry.Message, "\n") caller := "" - if entry.HasCaller() { - caller = fmt.Sprintf("%s:%d %s()", - entry.Caller.File, entry.Caller.Line, entry.Caller.Function) + funcVal := fmt.Sprintf("%s()", entry.Caller.Function) + fileVal := fmt.Sprintf("%s:%d", entry.Caller.File, entry.Caller.Line) + + if f.CallerPrettyfier != nil { + funcVal, fileVal = f.CallerPrettyfier(entry.Caller) + } + + if fileVal == "" { + caller = funcVal + } else if funcVal == "" { + caller = fileVal + } else { + caller = fileVal + " " + funcVal + } } if f.DisableTimestamp { diff --git a/vendor/github.com/spf13/viper/go.mod b/vendor/github.com/spf13/viper/go.mod index 86e801c15..279430055 100644 --- a/vendor/github.com/spf13/viper/go.mod +++ b/vendor/github.com/spf13/viper/go.mod @@ -2,23 +2,42 @@ module github.com/spf13/viper require ( github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 // indirect + github.com/coreos/bbolt v1.3.2 // indirect github.com/coreos/etcd v3.3.10+incompatible // indirect - github.com/coreos/go-etcd v2.0.0+incompatible // indirect github.com/coreos/go-semver v0.2.0 // indirect + github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e // indirect + github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect + github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect github.com/fsnotify/fsnotify v1.4.7 + github.com/gogo/protobuf v1.2.1 // indirect + github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef // indirect + github.com/google/btree v1.0.0 // indirect + github.com/gorilla/websocket v1.4.0 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 // indirect + github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect + github.com/grpc-ecosystem/grpc-gateway v1.9.0 // indirect github.com/hashicorp/hcl v1.0.0 + github.com/jonboulle/clockwork v0.1.0 // indirect github.com/magiconair/properties v1.8.0 github.com/mitchellh/mapstructure v1.1.2 github.com/pelletier/go-toml v1.2.0 + github.com/prometheus/client_golang v0.9.3 // indirect + github.com/soheilhy/cmux v0.1.4 // indirect github.com/spf13/afero v1.1.2 github.com/spf13/cast v1.3.0 github.com/spf13/jwalterweatherman v1.0.0 github.com/spf13/pflag v1.0.3 github.com/stretchr/testify v1.2.2 - github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8 // indirect + github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 // indirect + github.com/ugorji/go v1.1.4 // indirect + github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 - golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9 // indirect - golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a // indirect - golang.org/x/text v0.3.0 // indirect + go.etcd.io/bbolt v1.3.2 // indirect + go.uber.org/atomic v1.4.0 // indirect + go.uber.org/multierr v1.1.0 // indirect + go.uber.org/zap v1.10.0 // indirect + golang.org/x/net v0.0.0-20190522155817-f3200d17e092 // indirect + golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 // indirect + google.golang.org/grpc v1.21.0 // indirect gopkg.in/yaml.v2 v2.2.2 ) diff --git a/vendor/github.com/spf13/viper/go.sum b/vendor/github.com/spf13/viper/go.sum index 5c9fb7d54..97afaffe2 100644 --- a/vendor/github.com/spf13/viper/go.sum +++ b/vendor/github.com/spf13/viper/go.sum @@ -1,19 +1,109 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible h1:jFneRYjIvLMLhDLCzuTuU4rSJUjRplcJQ7pD7MnhC04= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef h1:veQD95Isof8w9/WXiA+pa3tz3fJXkt5B7QaRBrM62gk= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 h1:Iju5GlWwrvL6UBg4zJJt3btmonfrMlCDdsejg4CZE7c= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0 h1:bM6ZAFZmc/wPFaRDi0d5L7hGEZEx/2u+Tmr2evNHDiI= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3 h1:9iH4JKXLzFbOAdtqv/a+j8aewx2Y8lAjAydhbaScPF8= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0 h1:7etb9YClo3a6HjLzfl6rIQaU+FDfi0VSX39io3aQ+DM= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084 h1:sofwID9zm4tzrgykg80hfFph1mryUeLRsUfoocVVmRY= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/sirupsen/logrus v1.2.0 h1:juTguoYk5qI21pwyTXY3B3Y5cOTH3ZUyZCg1v/mihuo= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= @@ -22,14 +112,67 @@ github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9 github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4 h1:j4s+tAvLfL3bZyefP2SEWmhBzmuIlH/eqNuPdFPgngw= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a h1:1n5lsVfiQW3yfsRGu98756EH1YthsFqr/5mxHduZW2A= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +go.etcd.io/bbolt v1.3.2 h1:Z/90sZLPOeCy2PwprqkFa25PdkusRzaj9P8zm/KNyvk= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092 h1:4QSRKanuywn15aTZvI/mIDEgPQpswuFndXpOj3rKEco= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0 h1:G+97AoqBnmZIT91cLG/EkCoK9NSelj64P8bOHHNmGn0= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/vendor/github.com/spf13/viper/viper.go b/vendor/github.com/spf13/viper/viper.go index 7173c6e9a..a3d37f8c2 100644 --- a/vendor/github.com/spf13/viper/viper.go +++ b/vendor/github.com/spf13/viper/viper.go @@ -180,10 +180,11 @@ type Viper struct { remoteProviders []*defaultRemoteProvider // Name of file to look for inside the path - configName string - configFile string - configType string - envPrefix string + configName string + configFile string + configType string + configPermissions os.FileMode + envPrefix string automaticEnvApplied bool envKeyReplacer *strings.Replacer @@ -210,6 +211,7 @@ func New() *Viper { v := new(Viper) v.keyDelim = "." v.configName = "config" + v.configPermissions = os.FileMode(0644) v.fs = afero.NewOsFs() v.config = make(map[string]interface{}) v.override = make(map[string]interface{}) @@ -687,6 +689,12 @@ func (v *Viper) Get(key string) interface{} { return cast.ToString(val) case int32, int16, int8, int: return cast.ToInt(val) + case uint: + return cast.ToUint(val) + case uint32: + return cast.ToUint32(val) + case uint64: + return cast.ToUint64(val) case int64: return cast.ToInt64(val) case float64, float32: @@ -750,6 +758,24 @@ func (v *Viper) GetInt64(key string) int64 { return cast.ToInt64(v.Get(key)) } +// GetUint returns the value associated with the key as an unsigned integer. +func GetUint(key string) uint { return v.GetUint(key) } +func (v *Viper) GetUint(key string) uint { + return cast.ToUint(v.Get(key)) +} + +// GetUint32 returns the value associated with the key as an unsigned integer. +func GetUint32(key string) uint32 { return v.GetUint32(key) } +func (v *Viper) GetUint32(key string) uint32 { + return cast.ToUint32(v.Get(key)) +} + +// GetUint64 returns the value associated with the key as an unsigned integer. +func GetUint64(key string) uint64 { return v.GetUint64(key) } +func (v *Viper) GetUint64(key string) uint64 { + return cast.ToUint64(v.Get(key)) +} + // GetFloat64 returns the value associated with the key as a float64. func GetFloat64(key string) float64 { return v.GetFloat64(key) } func (v *Viper) GetFloat64(key string) float64 { @@ -1328,7 +1354,7 @@ func (v *Viper) writeConfig(filename string, force bool) error { return fmt.Errorf("File: %s exists. Use WriteConfig to overwrite.", filename) } } - f, err := v.fs.OpenFile(filename, flags, os.FileMode(0644)) + f, err := v.fs.OpenFile(filename, flags, v.configPermissions) if err != nil { return err } @@ -1765,6 +1791,12 @@ func (v *Viper) SetConfigType(in string) { } } +// SetConfigPermissions sets the permissions for the config file. +func SetConfigPermissions(perm os.FileMode) { v.SetConfigPermissions(perm) } +func (v *Viper) SetConfigPermissions(perm os.FileMode) { + v.configPermissions = perm.Perm() +} + func (v *Viper) getConfigType() string { if v.configType != "" { return v.configType diff --git a/vendor/golang.org/x/crypto/ssh/terminal/terminal.go b/vendor/golang.org/x/crypto/ssh/terminal/terminal.go index 9a887598f..2f04ee5b5 100644 --- a/vendor/golang.org/x/crypto/ssh/terminal/terminal.go +++ b/vendor/golang.org/x/crypto/ssh/terminal/terminal.go @@ -7,6 +7,7 @@ package terminal import ( "bytes" "io" + "strconv" "sync" "unicode/utf8" ) @@ -159,6 +160,10 @@ func bytesToKey(b []byte, pasteActive bool) (rune, []byte) { return keyClearScreen, b[1:] case 23: // ^W return keyDeleteWord, b[1:] + case 14: // ^N + return keyDown, b[1:] + case 16: // ^P + return keyUp, b[1:] } } @@ -267,34 +272,44 @@ func (t *Terminal) moveCursorToPos(pos int) { } func (t *Terminal) move(up, down, left, right int) { - movement := make([]rune, 3*(up+down+left+right)) - m := movement - for i := 0; i < up; i++ { - m[0] = keyEscape - m[1] = '[' - m[2] = 'A' - m = m[3:] - } - for i := 0; i < down; i++ { - m[0] = keyEscape - m[1] = '[' - m[2] = 'B' - m = m[3:] - } - for i := 0; i < left; i++ { - m[0] = keyEscape - m[1] = '[' - m[2] = 'D' - m = m[3:] - } - for i := 0; i < right; i++ { - m[0] = keyEscape - m[1] = '[' - m[2] = 'C' - m = m[3:] + m := []rune{} + + // 1 unit up can be expressed as ^[[A or ^[A + // 5 units up can be expressed as ^[[5A + + if up == 1 { + m = append(m, keyEscape, '[', 'A') + } else if up > 1 { + m = append(m, keyEscape, '[') + m = append(m, []rune(strconv.Itoa(up))...) + m = append(m, 'A') } - t.queue(movement) + if down == 1 { + m = append(m, keyEscape, '[', 'B') + } else if down > 1 { + m = append(m, keyEscape, '[') + m = append(m, []rune(strconv.Itoa(down))...) + m = append(m, 'B') + } + + if right == 1 { + m = append(m, keyEscape, '[', 'C') + } else if right > 1 { + m = append(m, keyEscape, '[') + m = append(m, []rune(strconv.Itoa(right))...) + m = append(m, 'C') + } + + if left == 1 { + m = append(m, keyEscape, '[', 'D') + } else if left > 1 { + m = append(m, keyEscape, '[') + m = append(m, []rune(strconv.Itoa(left))...) + m = append(m, 'D') + } + + t.queue(m) } func (t *Terminal) clearLineToRight() { diff --git a/vendor/golang.org/x/crypto/ssh/terminal/util_windows.go b/vendor/golang.org/x/crypto/ssh/terminal/util_windows.go index 6cb8a9503..5cfdf8f3f 100644 --- a/vendor/golang.org/x/crypto/ssh/terminal/util_windows.go +++ b/vendor/golang.org/x/crypto/ssh/terminal/util_windows.go @@ -64,13 +64,15 @@ func Restore(fd int, state *State) error { return windows.SetConsoleMode(windows.Handle(fd), state.mode) } -// GetSize returns the dimensions of the given terminal. +// GetSize returns the visible dimensions of the given terminal. +// +// These dimensions don't include any scrollback buffer height. func GetSize(fd int) (width, height int, err error) { var info windows.ConsoleScreenBufferInfo if err := windows.GetConsoleScreenBufferInfo(windows.Handle(fd), &info); err != nil { return 0, 0, err } - return int(info.Size.X), int(info.Size.Y), nil + return int(info.Window.Right - info.Window.Left + 1), int(info.Window.Bottom - info.Window.Top + 1), nil } // ReadPassword reads a line of input from a terminal without local echo. This diff --git a/vendor/golang.org/x/net/html/node.go b/vendor/golang.org/x/net/html/node.go index 2c1cade60..633ee15dc 100644 --- a/vendor/golang.org/x/net/html/node.go +++ b/vendor/golang.org/x/net/html/node.go @@ -177,7 +177,7 @@ func (s *nodeStack) index(n *Node) int { // contains returns whether a is within s. func (s *nodeStack) contains(a atom.Atom) bool { for _, n := range *s { - if n.DataAtom == a { + if n.DataAtom == a && n.Namespace == "" { return true } } diff --git a/vendor/golang.org/x/net/html/parse.go b/vendor/golang.org/x/net/html/parse.go index 64a579372..992cff2a3 100644 --- a/vendor/golang.org/x/net/html/parse.go +++ b/vendor/golang.org/x/net/html/parse.go @@ -439,9 +439,6 @@ func (p *parser) resetInsertionMode() { case a.Select: if !last { for ancestor, first := n, p.oe[0]; ancestor != first; { - if ancestor == first { - break - } ancestor = p.oe[p.oe.index(ancestor)-1] switch ancestor.DataAtom { case a.Template: @@ -633,7 +630,16 @@ func inHeadIM(p *parser) bool { p.oe.pop() p.acknowledgeSelfClosingTag() return true - case a.Script, a.Title, a.Noscript, a.Noframes, a.Style: + case a.Noscript: + p.addElement() + if p.scripting { + p.setOriginalIM() + p.im = textIM + } else { + p.im = inHeadNoscriptIM + } + return true + case a.Script, a.Title, a.Noframes, a.Style: p.addElement() p.setOriginalIM() p.im = textIM @@ -695,6 +701,49 @@ func inHeadIM(p *parser) bool { return false } +// 12.2.6.4.5. +func inHeadNoscriptIM(p *parser) bool { + switch p.tok.Type { + case DoctypeToken: + // Ignore the token. + return true + case StartTagToken: + switch p.tok.DataAtom { + case a.Html: + return inBodyIM(p) + case a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Style: + return inHeadIM(p) + case a.Head, a.Noscript: + // Ignore the token. + return true + } + case EndTagToken: + switch p.tok.DataAtom { + case a.Noscript, a.Br: + default: + // Ignore the token. + return true + } + case TextToken: + s := strings.TrimLeft(p.tok.Data, whitespace) + if len(s) == 0 { + // It was all whitespace. + return inHeadIM(p) + } + case CommentToken: + return inHeadIM(p) + } + p.oe.pop() + if p.top().DataAtom != a.Head { + panic("html: the new current node will be a head element.") + } + p.im = inHeadIM + if p.tok.DataAtom == a.Noscript { + return true + } + return false +} + // Section 12.2.6.4.6. func afterHeadIM(p *parser) bool { switch p.tok.Type { @@ -904,7 +953,7 @@ func inBodyIM(p *parser) bool { case a.A: for i := len(p.afe) - 1; i >= 0 && p.afe[i].Type != scopeMarkerNode; i-- { if n := p.afe[i]; n.Type == ElementNode && n.DataAtom == a.A { - p.inBodyEndTagFormatting(a.A) + p.inBodyEndTagFormatting(a.A, "a") p.oe.remove(n) p.afe.remove(n) break @@ -918,7 +967,7 @@ func inBodyIM(p *parser) bool { case a.Nobr: p.reconstructActiveFormattingElements() if p.elementInScope(defaultScope, a.Nobr) { - p.inBodyEndTagFormatting(a.Nobr) + p.inBodyEndTagFormatting(a.Nobr, "nobr") p.reconstructActiveFormattingElements() } p.addFormattingElement() @@ -1126,7 +1175,7 @@ func inBodyIM(p *parser) bool { case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6: p.popUntil(defaultScope, a.H1, a.H2, a.H3, a.H4, a.H5, a.H6) case a.A, a.B, a.Big, a.Code, a.Em, a.Font, a.I, a.Nobr, a.S, a.Small, a.Strike, a.Strong, a.Tt, a.U: - p.inBodyEndTagFormatting(p.tok.DataAtom) + p.inBodyEndTagFormatting(p.tok.DataAtom, p.tok.Data) case a.Applet, a.Marquee, a.Object: if p.popUntil(defaultScope, p.tok.DataAtom) { p.clearActiveFormattingElements() @@ -1137,7 +1186,7 @@ func inBodyIM(p *parser) bool { case a.Template: return inHeadIM(p) default: - p.inBodyEndTagOther(p.tok.DataAtom) + p.inBodyEndTagOther(p.tok.DataAtom, p.tok.Data) } case CommentToken: p.addChild(&Node{ @@ -1164,7 +1213,7 @@ func inBodyIM(p *parser) bool { return true } -func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom) { +func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) { // This is the "adoption agency" algorithm, described at // https://html.spec.whatwg.org/multipage/syntax.html#adoptionAgency @@ -1186,7 +1235,7 @@ func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom) { } } if formattingElement == nil { - p.inBodyEndTagOther(tagAtom) + p.inBodyEndTagOther(tagAtom, tagName) return } feIndex := p.oe.index(formattingElement) @@ -1291,9 +1340,17 @@ func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom) { // inBodyEndTagOther performs the "any other end tag" algorithm for inBodyIM. // "Any other end tag" handling from 12.2.6.5 The rules for parsing tokens in foreign content // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inforeign -func (p *parser) inBodyEndTagOther(tagAtom a.Atom) { +func (p *parser) inBodyEndTagOther(tagAtom a.Atom, tagName string) { for i := len(p.oe) - 1; i >= 0; i-- { - if p.oe[i].DataAtom == tagAtom { + // Two element nodes have the same tag if they have the same Data (a + // string-typed field). As an optimization, for common HTML tags, each + // Data string is assigned a unique, non-zero DataAtom (a uint32-typed + // field), since integer comparison is faster than string comparison. + // Uncommon (custom) tags get a zero DataAtom. + // + // The if condition here is equivalent to (p.oe[i].Data == tagName). + if (p.oe[i].DataAtom == tagAtom) && + ((tagAtom != 0) || (p.oe[i].Data == tagName)) { p.oe = p.oe[:i] break } @@ -1687,8 +1744,9 @@ func inCellIM(p *parser) bool { return true } // Close the cell and reprocess. - p.popUntil(tableScope, a.Td, a.Th) - p.clearActiveFormattingElements() + if p.popUntil(tableScope, a.Td, a.Th) { + p.clearActiveFormattingElements() + } p.im = inRowIM return false } @@ -1719,8 +1777,12 @@ func inSelectIM(p *parser) bool { } p.addElement() case a.Select: - p.tok.Type = EndTagToken - return false + if p.popUntil(selectScope, a.Select) { + p.resetInsertionMode() + } else { + // Ignore the token. + return true + } case a.Input, a.Keygen, a.Textarea: if p.elementInScope(selectScope, a.Select) { p.parseImpliedToken(EndTagToken, a.Select, a.Select.String()) @@ -1750,6 +1812,9 @@ func inSelectIM(p *parser) bool { case a.Select: if p.popUntil(selectScope, a.Select) { p.resetInsertionMode() + } else { + // Ignore the token. + return true } case a.Template: return inHeadIM(p) @@ -1775,13 +1840,22 @@ func inSelectInTableIM(p *parser) bool { case StartTagToken, EndTagToken: switch p.tok.DataAtom { case a.Caption, a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr, a.Td, a.Th: - if p.tok.Type == StartTagToken || p.elementInScope(tableScope, p.tok.DataAtom) { - p.parseImpliedToken(EndTagToken, a.Select, a.Select.String()) - return false - } else { + if p.tok.Type == EndTagToken && !p.elementInScope(tableScope, p.tok.DataAtom) { // Ignore the token. return true } + // This is like p.popUntil(selectScope, a.Select), but it also + // matches , not just